From 33e3786cd515c22c29faee5df2b9536a6115acb6 Mon Sep 17 00:00:00 2001 From: Stephen Tridgell Date: Tue, 13 Dec 2022 15:10:18 +1100 Subject: [PATCH] Add vitis rules for HLS. --- vitis/BUILD | 21 + vitis/defs.bzl | 113 + vitis/tests/BUILD | 90 + vitis/tests/hls_adder.cc | 10 + vitis/tests/hls_adder.h | 19 + vitis/tests/hls_adder_test.cc | 27 + vitis/tests/xilinx_env.sh | 5 + vitis/tests/xilinx_env_vivado.sh | 5 + vitis/v2020_1/Makefile.sysc.rules | 502 + vitis/v2020_1/ap_axi_sdata.h | 677 + vitis/v2020_1/ap_cint.h | 94 + vitis/v2020_1/ap_common.h | 764 + vitis/v2020_1/ap_decl.h | 247 + vitis/v2020_1/ap_fixed.h | 402 + vitis/v2020_1/ap_fixed_base.h | 2385 + vitis/v2020_1/ap_fixed_ref.h | 755 + vitis/v2020_1/ap_fixed_special.h | 260 + vitis/v2020_1/ap_int.h | 370 + vitis/v2020_1/ap_int_base.h | 1970 + vitis/v2020_1/ap_int_ref.h | 1379 + vitis/v2020_1/ap_int_special.h | 253 + vitis/v2020_1/ap_shift_reg.h | 144 + vitis/v2020_1/ap_stream.h | 284 + vitis/v2020_1/ap_sysc/AXI4_if.h | 18 + vitis/v2020_1/ap_sysc/ap_mem_if.h | 418 + vitis/v2020_1/ap_sysc/ap_sc_ext.h | 64 + vitis/v2020_1/ap_sysc/hls_bus_if.h | 214 + vitis/v2020_1/ap_utils.h | 81 + vitis/v2020_1/autoesl_tech.h | 64 + vitis/v2020_1/autopilot_tech.h | 64 + vitis/v2020_1/clc.h | 7208 ++ vitis/v2020_1/clc.h.inc | 3909 + .../dds/dds_compiler_v6_0_bitacc_cmodel.h | 383 + vitis/v2020_1/dds/xip_common_bitacc_cmodel.h | 261 + vitis/v2020_1/dsp_builtins.h | 86 + vitis/v2020_1/etc/ap_headers.h | 58 + vitis/v2020_1/etc/ap_private.h | 7222 ++ vitis/v2020_1/etc/autopilot_apint.h | 114 + vitis/v2020_1/etc/autopilot_dt.def | 2080 + vitis/v2020_1/etc/autopilot_dt.h | 147 + vitis/v2020_1/etc/autopilot_dt_ext.def | 63674 ++++++++++++++++ vitis/v2020_1/etc/autopilot_enum.h | 134 + vitis/v2020_1/etc/autopilot_ssdm_bits.h | 358 + vitis/v2020_1/etc/autopilot_ssdm_op.h | 447 + vitis/v2020_1/etc/c_ap_int_sim.h | 2115 + vitis/v2020_1/etc/dsp48_builtins.h | 63 + vitis/v2020_1/etc/dsp48e1_builtins.h | 298 + vitis/v2020_1/etc/dsp48e2_builtins.h | 340 + vitis/v2020_1/etc/dsp_dp_builtins.h | 104 + vitis/v2020_1/etc/hlslib_headers.h | 6 + vitis/v2020_1/fft/xfft_v9_0_bitacc_cmodel.h | 239 + vitis/v2020_1/fft/xfft_v9_1_bitacc_cmodel.h | 238 + vitis/v2020_1/file_agent/file_agent_pkg.sv | 12 + vitis/v2020_1/file_agent/file_read_agent.sv | 480 + vitis/v2020_1/file_agent/file_write_agent.sv | 350 + .../fir/fir_compiler_v7_2_bitacc_cmodel.h | 448 + vitis/v2020_1/fir/gmp.h | 2470 + vitis/v2020_1/fir/xip_common_bitacc_cmodel.h | 261 + vitis/v2020_1/fir/xip_mpz_bitacc_cmodel.h | 96 + .../floating_point_v7_0_bitacc_cmodel.h | 371 + vitis/v2020_1/gmp.h | 2391 + vitis/v2020_1/hls/dsp/hls_atan2_cordic.h | 88 + vitis/v2020_1/hls/dsp/hls_awgn.h | 388 + vitis/v2020_1/hls/dsp/hls_cmpy.h | 157 + .../v2020_1/hls/dsp/hls_convolution_encoder.h | 364 + vitis/v2020_1/hls/dsp/hls_nco.h | 730 + vitis/v2020_1/hls/dsp/hls_qam_demod.h | 129 + vitis/v2020_1/hls/dsp/hls_qam_mod.h | 113 + vitis/v2020_1/hls/dsp/hls_sqrt_cordic.h | 88 + vitis/v2020_1/hls/dsp/hls_viterbi_decoder.h | 754 + vitis/v2020_1/hls/dsp/utils/hls_cordic.h | 688 + .../hls/dsp/utils/hls_cordic_functions.h | 1297 + .../hls/dsp/utils/hls_dsp_common_utils.h | 212 + vitis/v2020_1/hls/hls_axi_io.h | 107 + .../deprecated/x_complex_back_substitute.h | 112 + .../deprecated/x_complex_cholesky.h | 145 + .../deprecated/x_complex_cholesky_inverse.h | 94 + .../deprecated/x_complex_matrix_multiply.h | 105 + .../deprecated/x_complex_matrix_tb_utils.h | 48 + .../deprecated/x_complex_matrix_utils.h | 80 + .../deprecated/x_complex_qr_inverse.h | 78 + .../linear_algebra/deprecated/x_complex_qrf.h | 220 + .../linear_algebra/deprecated/x_complex_svd.h | 474 + .../hls/linear_algebra/hls_back_substitute.h | 366 + .../v2020_1/hls/linear_algebra/hls_cholesky.h | 660 + .../hls/linear_algebra/hls_cholesky_inverse.h | 182 + .../hls/linear_algebra/hls_matrix_multiply.h | 567 + .../hls/linear_algebra/hls_qr_inverse.h | 138 + vitis/v2020_1/hls/linear_algebra/hls_qrf.h | 753 + vitis/v2020_1/hls/linear_algebra/hls_svd.h | 1300 + .../linear_algebra/utils/std_complex_utils.h | 194 + .../hls/linear_algebra/utils/x_hls_complex.h | 359 + .../utils/x_hls_matrix_tb_utils.h | 141 + .../linear_algebra/utils/x_hls_matrix_utils.h | 292 + vitis/v2020_1/hls_alg.h | 54 + vitis/v2020_1/hls_alg/bitonicsort.h | 336 + vitis/v2020_1/hls_alg/hash.h | 53 + vitis/v2020_1/hls_alg/hash_sha224_sha256.h | 547 + vitis/v2020_1/hls_alg/sort.h | 62 + vitis/v2020_1/hls_alg/types.h | 81 + vitis/v2020_1/hls_alg/utils.h | 63 + vitis/v2020_1/hls_all_any_apfixed.h | 128 + vitis/v2020_1/hls_cbrt_apfixed.h | 167 + vitis/v2020_1/hls_comparison_apfixed.h | 233 + vitis/v2020_1/hls_cordic_apfixed.h | 1626 + vitis/v2020_1/hls_dds.h | 1158 + vitis/v2020_1/hls_diff_apfixed.h | 308 + vitis/v2020_1/hls_dsp.h | 58 + vitis/v2020_1/hls_erf_apfixed.h | 686 + vitis/v2020_1/hls_exp_apfixed.h | 3433 + vitis/v2020_1/hls_fft.h | 915 + vitis/v2020_1/hls_fft_x_complex.h | 770 + vitis/v2020_1/hls_fir.h | 683 + ...ls_fmod_rem_quo_remainder_divide_apfixed.h | 230 + vitis/v2020_1/hls_fpo.h | 665 + vitis/v2020_1/hls_fract_apfixed.h | 39 + vitis/v2020_1/hls_frexp_apfixed.h | 130 + vitis/v2020_1/hls_half.h | 3348 + vitis/v2020_1/hls_hotbm_apfixed.h | 497 + vitis/v2020_1/hls_hypot_apfixed.h | 232 + .../v2020_1/hls_isequal_isnotequal_apfixed.h | 171 + vitis/v2020_1/hls_ldexp_apfixed.h | 127 + vitis/v2020_1/hls_lgamma_apfixed.h | 385 + vitis/v2020_1/hls_linear_algebra.h | 62 + vitis/v2020_1/hls_log_apfixed.h | 1473 + vitis/v2020_1/hls_mac_pack.h | 82 + vitis/v2020_1/hls_mad_apfixed.h | 61 + vitis/v2020_1/hls_math.h | 3205 + vitis/v2020_1/hls_modf_apfixed.h | 85 + vitis/v2020_1/hls_pow_apfixed.h | 565 + vitis/v2020_1/hls_round_copysign_apfixed.h | 562 + vitis/v2020_1/hls_select_bitselect_apfixed.h | 105 + vitis/v2020_1/hls_signal_handler.h | 77 + vitis/v2020_1/hls_sqrt_apfixed.h | 461 + vitis/v2020_1/hls_stream.h | 273 + vitis/v2020_1/hls_tgamma_apfixed.h | 290 + vitis/v2020_1/hls_x_complex.h | 359 + vitis/v2020_1/hlsgraph.h | 54 + vitis/v2020_1/hlsgraph/ConnectedComponents.h | 60 + vitis/v2020_1/hlsgraph/PageRank.h | 65 + vitis/v2020_1/hlsgraph/utils.h | 62 + vitis/v2020_1/mpfr.h | 945 + vitis/v2020_1/multimediaIps/xf_axi_io.hpp | 104 + vitis/v2020_1/multimediaIps/xf_axi_sdata.hpp | 57 + vitis/v2020_1/multimediaIps/xf_common.hpp | 26 + vitis/v2020_1/multimediaIps/xf_infra.hpp | 230 + vitis/v2020_1/multimediaIps/xf_params.hpp | 317 + vitis/v2020_1/multimediaIps/xf_structs.hpp | 957 + vitis/v2020_1/multimediaIps/xf_types.hpp | 1652 + vitis/v2020_1/multimediaIps/xf_utility.hpp | 527 + vitis/v2020_1/multimediaIps/xf_video_core.hpp | 432 + vitis/v2020_1/multimediaIps/xf_video_mem.hpp | 1071 + vitis/v2020_1/multimediaIps/xf_video_top.hpp | 29 + .../v2020_1/multimediaIps/xf_video_types.hpp | 557 + vitis/v2020_1/svr/svr_base_sequence.sv | 133 + vitis/v2020_1/svr/svr_config.sv | 22 + vitis/v2020_1/svr/svr_env.sv | 36 + vitis/v2020_1/svr/svr_info.sv | 18 + vitis/v2020_1/svr/svr_master_agent.sv | 49 + vitis/v2020_1/svr/svr_master_driver.sv | 120 + vitis/v2020_1/svr/svr_master_monitor.sv | 192 + vitis/v2020_1/svr/svr_master_sequence.sv | 74 + vitis/v2020_1/svr/svr_master_sequencer.sv | 15 + vitis/v2020_1/svr/svr_monitor.sv | 210 + vitis/v2020_1/svr/svr_object_global.svh | 44 + vitis/v2020_1/svr/svr_pkg.sv | 30 + vitis/v2020_1/svr/svr_random_sequence.sv | 42 + vitis/v2020_1/svr/svr_slave_agent.sv | 49 + vitis/v2020_1/svr/svr_slave_driver.sv | 109 + vitis/v2020_1/svr/svr_slave_monitor.sv | 193 + vitis/v2020_1/svr/svr_slave_sequence.sv | 65 + vitis/v2020_1/svr/svr_slave_sequencer.sv | 15 + vitis/v2020_1/svr/svr_transfer.sv | 28 + vitis/v2020_1/svtb/misc_interface.sv | 77 + vitis/v2020_1/svtb/svr_if.sv | 36 + vitis/v2020_1/utils/std_complex_utils.h | 194 + vitis/v2020_1/utils/x_hls_defines.h | 127 + vitis/v2020_1/utils/x_hls_float_utils.h | 474 + vitis/v2020_1/utils/x_hls_traits.h | 1121 + vitis/v2020_1/utils/x_hls_utils.h | 1020 + vitis/v2021_2/ap_axi_sdata.h | 441 + vitis/v2021_2/ap_cint.h | 95 + vitis/v2021_2/ap_common.h | 781 + vitis/v2021_2/ap_decl.h | 247 + vitis/v2021_2/ap_fixed.h | 415 + vitis/v2021_2/ap_fixed_base.h | 2440 + vitis/v2021_2/ap_fixed_ref.h | 784 + vitis/v2021_2/ap_fixed_special.h | 437 + vitis/v2021_2/ap_int.h | 397 + vitis/v2021_2/ap_int_base.h | 2187 + vitis/v2021_2/ap_int_ref.h | 1407 + vitis/v2021_2/ap_int_special.h | 253 + vitis/v2021_2/ap_shift_reg.h | 134 + vitis/v2021_2/ap_stream.h | 285 + vitis/v2021_2/ap_utils.h | 81 + vitis/v2021_2/autoesl_tech.h | 65 + vitis/v2021_2/autopilot_tech.h | 19 + vitis/v2021_2/clc.h | 7209 ++ vitis/v2021_2/clc.h.inc | 3909 + .../dds/dds_compiler_v6_0_bitacc_cmodel.h | 384 + vitis/v2021_2/dds/xip_common_bitacc_cmodel.h | 262 + vitis/v2021_2/dsp_builtins.h | 86 + vitis/v2021_2/etc/ap_private.h | 7534 ++ vitis/v2021_2/etc/autopilot_apint.h | 115 + vitis/v2021_2/etc/autopilot_dt.h | 148 + vitis/v2021_2/etc/autopilot_dt_def.h | 2080 + vitis/v2021_2/etc/autopilot_dt_ext.def | 63674 ++++++++++++++++ vitis/v2021_2/etc/autopilot_ssdm_bits.h | 359 + vitis/v2021_2/etc/autopilot_ssdm_op.h | 464 + vitis/v2021_2/etc/c_ap_int_sim.h | 2105 + vitis/v2021_2/etc/dsp48_builtins.h | 64 + vitis/v2021_2/etc/dsp48e1_builtins.h | 298 + vitis/v2021_2/etc/dsp48e2_builtins.h | 340 + vitis/v2021_2/etc/dsp_dp_builtins.h | 105 + vitis/v2021_2/fft/xfft_v9_0_bitacc_cmodel.h | 240 + vitis/v2021_2/fft/xfft_v9_1_bitacc_cmodel.h | 239 + .../fir/fir_compiler_v7_2_bitacc_cmodel.h | 449 + vitis/v2021_2/fir/gmp.h | 2471 + vitis/v2021_2/fir/xip_common_bitacc_cmodel.h | 262 + vitis/v2021_2/fir/xip_mpz_bitacc_cmodel.h | 97 + vitis/v2021_2/fix_include.sh | 5 + .../floating_point_v7_0_bitacc_cmodel.h | 372 + vitis/v2021_2/gmp.h | 2392 + vitis/v2021_2/hls/dsp/hls_awgn.h | 389 + .../v2021_2/hls/dsp/hls_convolution_encoder.h | 365 + vitis/v2021_2/hls/dsp/hls_nco.h | 738 + vitis/v2021_2/hls/dsp/hls_qam_demod.h | 130 + vitis/v2021_2/hls/dsp/hls_qam_mod.h | 114 + vitis/v2021_2/hls/dsp/hls_viterbi_decoder.h | 755 + .../hls/dsp/utils/hls_dsp_common_utils.h | 213 + vitis/v2021_2/hls_alg.h | 59 + vitis/v2021_2/hls_alg/bitonicsort.h | 341 + vitis/v2021_2/hls_alg/hash.h | 59 + vitis/v2021_2/hls_alg/hash_sha224_sha256.h | 563 + vitis/v2021_2/hls_alg/sort.h | 76 + vitis/v2021_2/hls_alg/types.h | 86 + vitis/v2021_2/hls_alg/utils.h | 68 + vitis/v2021_2/hls_all_any_apfixed.h | 128 + vitis/v2021_2/hls_burst_maxi.h | 125 + vitis/v2021_2/hls_cbrt_apfixed.h | 167 + vitis/v2021_2/hls_comparison_apfixed.h | 233 + vitis/v2021_2/hls_cordic_apfixed.h | 1630 + vitis/v2021_2/hls_dds.h | 1151 + vitis/v2021_2/hls_diff_apfixed.h | 308 + vitis/v2021_2/hls_dsp.h | 54 + vitis/v2021_2/hls_erf_apfixed.h | 686 + vitis/v2021_2/hls_exp_apfixed.h | 3473 + vitis/v2021_2/hls_fft.h | 916 + vitis/v2021_2/hls_fft_x_complex.h | 983 + vitis/v2021_2/hls_fir.h | 724 + ...ls_fmod_rem_quo_remainder_divide_apfixed.h | 230 + vitis/v2021_2/hls_fpo.h | 668 + vitis/v2021_2/hls_fract_apfixed.h | 39 + vitis/v2021_2/hls_frexp_apfixed.h | 130 + vitis/v2021_2/hls_half.h | 200 + vitis/v2021_2/hls_half_fpo.h | 654 + vitis/v2021_2/hls_half_sim.h | 452 + vitis/v2021_2/hls_half_x_utils.h | 670 + vitis/v2021_2/hls_hotbm_apfixed.h | 508 + vitis/v2021_2/hls_hypot_apfixed.h | 232 + .../v2021_2/hls_isequal_isnotequal_apfixed.h | 171 + vitis/v2021_2/hls_ldexp_apfixed.h | 127 + vitis/v2021_2/hls_lgamma_apfixed.h | 92 + vitis/v2021_2/hls_log_apfixed.h | 1474 + vitis/v2021_2/hls_mac_pack.h | 83 + vitis/v2021_2/hls_mad_apfixed.h | 61 + vitis/v2021_2/hls_math.h | 3221 + vitis/v2021_2/hls_modf_apfixed.h | 85 + vitis/v2021_2/hls_np_channel.h | 171 + vitis/v2021_2/hls_pow_apfixed.h | 569 + vitis/v2021_2/hls_print.h | 50 + vitis/v2021_2/hls_round_copysign_apfixed.h | 566 + vitis/v2021_2/hls_select_bitselect_apfixed.h | 105 + vitis/v2021_2/hls_signal_handler.h | 78 + vitis/v2021_2/hls_sqrt_apfixed.h | 461 + vitis/v2021_2/hls_stream.h | 65 + vitis/v2021_2/hls_stream_thread_safe.h | 278 + vitis/v2021_2/hls_stream_thread_unsafe.h | 430 + vitis/v2021_2/hls_streamofblocks.h | 357 + vitis/v2021_2/hls_task.h | 189 + vitis/v2021_2/hls_tgamma_apfixed.h | 72 + vitis/v2021_2/hls_vector.h | 280 + vitis/v2021_2/hls_x_complex.h | 368 + vitis/v2021_2/hlsgraph.h | 59 + vitis/v2021_2/hlsgraph/ConnectedComponents.h | 74 + vitis/v2021_2/hlsgraph/PageRank.h | 79 + vitis/v2021_2/hlsgraph/utils.h | 67 + vitis/v2021_2/mpfr.h | 946 + vitis/v2021_2/utils/hls_version.h | 11 + vitis/v2021_2/utils/std_complex_utils.h | 164 + vitis/v2021_2/utils/x_hls_defines.h | 123 + vitis/v2021_2/utils/x_hls_float_utils.h | 483 + vitis/v2021_2/utils/x_hls_traits.h | 1203 + vitis/v2021_2/utils/x_hls_utils.h | 971 + vitis/vitis_generate.tcl.template | 19 + 295 files changed, 293968 insertions(+) create mode 100644 vitis/BUILD create mode 100644 vitis/defs.bzl create mode 100644 vitis/tests/BUILD create mode 100644 vitis/tests/hls_adder.cc create mode 100644 vitis/tests/hls_adder.h create mode 100644 vitis/tests/hls_adder_test.cc create mode 100644 vitis/tests/xilinx_env.sh create mode 100644 vitis/tests/xilinx_env_vivado.sh create mode 100644 vitis/v2020_1/Makefile.sysc.rules create mode 100644 vitis/v2020_1/ap_axi_sdata.h create mode 100644 vitis/v2020_1/ap_cint.h create mode 100644 vitis/v2020_1/ap_common.h create mode 100644 vitis/v2020_1/ap_decl.h create mode 100644 vitis/v2020_1/ap_fixed.h create mode 100644 vitis/v2020_1/ap_fixed_base.h create mode 100644 vitis/v2020_1/ap_fixed_ref.h create mode 100644 vitis/v2020_1/ap_fixed_special.h create mode 100644 vitis/v2020_1/ap_int.h create mode 100644 vitis/v2020_1/ap_int_base.h create mode 100644 vitis/v2020_1/ap_int_ref.h create mode 100644 vitis/v2020_1/ap_int_special.h create mode 100644 vitis/v2020_1/ap_shift_reg.h create mode 100644 vitis/v2020_1/ap_stream.h create mode 100644 vitis/v2020_1/ap_sysc/AXI4_if.h create mode 100644 vitis/v2020_1/ap_sysc/ap_mem_if.h create mode 100644 vitis/v2020_1/ap_sysc/ap_sc_ext.h create mode 100644 vitis/v2020_1/ap_sysc/hls_bus_if.h create mode 100644 vitis/v2020_1/ap_utils.h create mode 100644 vitis/v2020_1/autoesl_tech.h create mode 100644 vitis/v2020_1/autopilot_tech.h create mode 100644 vitis/v2020_1/clc.h create mode 100644 vitis/v2020_1/clc.h.inc create mode 100644 vitis/v2020_1/dds/dds_compiler_v6_0_bitacc_cmodel.h create mode 100644 vitis/v2020_1/dds/xip_common_bitacc_cmodel.h create mode 100644 vitis/v2020_1/dsp_builtins.h create mode 100644 vitis/v2020_1/etc/ap_headers.h create mode 100644 vitis/v2020_1/etc/ap_private.h create mode 100644 vitis/v2020_1/etc/autopilot_apint.h create mode 100644 vitis/v2020_1/etc/autopilot_dt.def create mode 100644 vitis/v2020_1/etc/autopilot_dt.h create mode 100644 vitis/v2020_1/etc/autopilot_dt_ext.def create mode 100644 vitis/v2020_1/etc/autopilot_enum.h create mode 100644 vitis/v2020_1/etc/autopilot_ssdm_bits.h create mode 100644 vitis/v2020_1/etc/autopilot_ssdm_op.h create mode 100644 vitis/v2020_1/etc/c_ap_int_sim.h create mode 100644 vitis/v2020_1/etc/dsp48_builtins.h create mode 100644 vitis/v2020_1/etc/dsp48e1_builtins.h create mode 100644 vitis/v2020_1/etc/dsp48e2_builtins.h create mode 100644 vitis/v2020_1/etc/dsp_dp_builtins.h create mode 100644 vitis/v2020_1/etc/hlslib_headers.h create mode 100644 vitis/v2020_1/fft/xfft_v9_0_bitacc_cmodel.h create mode 100644 vitis/v2020_1/fft/xfft_v9_1_bitacc_cmodel.h create mode 100755 vitis/v2020_1/file_agent/file_agent_pkg.sv create mode 100755 vitis/v2020_1/file_agent/file_read_agent.sv create mode 100755 vitis/v2020_1/file_agent/file_write_agent.sv create mode 100644 vitis/v2020_1/fir/fir_compiler_v7_2_bitacc_cmodel.h create mode 100644 vitis/v2020_1/fir/gmp.h create mode 100644 vitis/v2020_1/fir/xip_common_bitacc_cmodel.h create mode 100644 vitis/v2020_1/fir/xip_mpz_bitacc_cmodel.h create mode 100644 vitis/v2020_1/floating_point_v7_0_bitacc_cmodel.h create mode 100644 vitis/v2020_1/gmp.h create mode 100755 vitis/v2020_1/hls/dsp/hls_atan2_cordic.h create mode 100755 vitis/v2020_1/hls/dsp/hls_awgn.h create mode 100755 vitis/v2020_1/hls/dsp/hls_cmpy.h create mode 100755 vitis/v2020_1/hls/dsp/hls_convolution_encoder.h create mode 100755 vitis/v2020_1/hls/dsp/hls_nco.h create mode 100755 vitis/v2020_1/hls/dsp/hls_qam_demod.h create mode 100755 vitis/v2020_1/hls/dsp/hls_qam_mod.h create mode 100755 vitis/v2020_1/hls/dsp/hls_sqrt_cordic.h create mode 100755 vitis/v2020_1/hls/dsp/hls_viterbi_decoder.h create mode 100755 vitis/v2020_1/hls/dsp/utils/hls_cordic.h create mode 100755 vitis/v2020_1/hls/dsp/utils/hls_cordic_functions.h create mode 100755 vitis/v2020_1/hls/dsp/utils/hls_dsp_common_utils.h create mode 100644 vitis/v2020_1/hls/hls_axi_io.h create mode 100644 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_back_substitute.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky_inverse.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_multiply.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_tb_utils.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_utils.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qr_inverse.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qrf.h create mode 100755 vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_svd.h create mode 100644 vitis/v2020_1/hls/linear_algebra/hls_back_substitute.h create mode 100755 vitis/v2020_1/hls/linear_algebra/hls_cholesky.h create mode 100755 vitis/v2020_1/hls/linear_algebra/hls_cholesky_inverse.h create mode 100755 vitis/v2020_1/hls/linear_algebra/hls_matrix_multiply.h create mode 100755 vitis/v2020_1/hls/linear_algebra/hls_qr_inverse.h create mode 100755 vitis/v2020_1/hls/linear_algebra/hls_qrf.h create mode 100755 vitis/v2020_1/hls/linear_algebra/hls_svd.h create mode 100755 vitis/v2020_1/hls/linear_algebra/utils/std_complex_utils.h create mode 100755 vitis/v2020_1/hls/linear_algebra/utils/x_hls_complex.h create mode 100755 vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_tb_utils.h create mode 100755 vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_utils.h create mode 100644 vitis/v2020_1/hls_alg.h create mode 100644 vitis/v2020_1/hls_alg/bitonicsort.h create mode 100644 vitis/v2020_1/hls_alg/hash.h create mode 100644 vitis/v2020_1/hls_alg/hash_sha224_sha256.h create mode 100644 vitis/v2020_1/hls_alg/sort.h create mode 100644 vitis/v2020_1/hls_alg/types.h create mode 100644 vitis/v2020_1/hls_alg/utils.h create mode 100644 vitis/v2020_1/hls_all_any_apfixed.h create mode 100644 vitis/v2020_1/hls_cbrt_apfixed.h create mode 100644 vitis/v2020_1/hls_comparison_apfixed.h create mode 100644 vitis/v2020_1/hls_cordic_apfixed.h create mode 100644 vitis/v2020_1/hls_dds.h create mode 100644 vitis/v2020_1/hls_diff_apfixed.h create mode 100755 vitis/v2020_1/hls_dsp.h create mode 100644 vitis/v2020_1/hls_erf_apfixed.h create mode 100644 vitis/v2020_1/hls_exp_apfixed.h create mode 100644 vitis/v2020_1/hls_fft.h create mode 100644 vitis/v2020_1/hls_fft_x_complex.h create mode 100644 vitis/v2020_1/hls_fir.h create mode 100644 vitis/v2020_1/hls_fmod_rem_quo_remainder_divide_apfixed.h create mode 100644 vitis/v2020_1/hls_fpo.h create mode 100644 vitis/v2020_1/hls_fract_apfixed.h create mode 100644 vitis/v2020_1/hls_frexp_apfixed.h create mode 100644 vitis/v2020_1/hls_half.h create mode 100644 vitis/v2020_1/hls_hotbm_apfixed.h create mode 100644 vitis/v2020_1/hls_hypot_apfixed.h create mode 100644 vitis/v2020_1/hls_isequal_isnotequal_apfixed.h create mode 100644 vitis/v2020_1/hls_ldexp_apfixed.h create mode 100644 vitis/v2020_1/hls_lgamma_apfixed.h create mode 100644 vitis/v2020_1/hls_linear_algebra.h create mode 100644 vitis/v2020_1/hls_log_apfixed.h create mode 100644 vitis/v2020_1/hls_mac_pack.h create mode 100644 vitis/v2020_1/hls_mad_apfixed.h create mode 100644 vitis/v2020_1/hls_math.h create mode 100644 vitis/v2020_1/hls_modf_apfixed.h create mode 100644 vitis/v2020_1/hls_pow_apfixed.h create mode 100644 vitis/v2020_1/hls_round_copysign_apfixed.h create mode 100644 vitis/v2020_1/hls_select_bitselect_apfixed.h create mode 100644 vitis/v2020_1/hls_signal_handler.h create mode 100644 vitis/v2020_1/hls_sqrt_apfixed.h create mode 100644 vitis/v2020_1/hls_stream.h create mode 100644 vitis/v2020_1/hls_tgamma_apfixed.h create mode 100755 vitis/v2020_1/hls_x_complex.h create mode 100644 vitis/v2020_1/hlsgraph.h create mode 100644 vitis/v2020_1/hlsgraph/ConnectedComponents.h create mode 100644 vitis/v2020_1/hlsgraph/PageRank.h create mode 100644 vitis/v2020_1/hlsgraph/utils.h create mode 100644 vitis/v2020_1/mpfr.h create mode 100644 vitis/v2020_1/multimediaIps/xf_axi_io.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_axi_sdata.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_common.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_infra.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_params.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_structs.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_types.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_utility.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_video_core.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_video_mem.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_video_top.hpp create mode 100644 vitis/v2020_1/multimediaIps/xf_video_types.hpp create mode 100755 vitis/v2020_1/svr/svr_base_sequence.sv create mode 100755 vitis/v2020_1/svr/svr_config.sv create mode 100755 vitis/v2020_1/svr/svr_env.sv create mode 100755 vitis/v2020_1/svr/svr_info.sv create mode 100755 vitis/v2020_1/svr/svr_master_agent.sv create mode 100755 vitis/v2020_1/svr/svr_master_driver.sv create mode 100755 vitis/v2020_1/svr/svr_master_monitor.sv create mode 100755 vitis/v2020_1/svr/svr_master_sequence.sv create mode 100755 vitis/v2020_1/svr/svr_master_sequencer.sv create mode 100755 vitis/v2020_1/svr/svr_monitor.sv create mode 100755 vitis/v2020_1/svr/svr_object_global.svh create mode 100755 vitis/v2020_1/svr/svr_pkg.sv create mode 100755 vitis/v2020_1/svr/svr_random_sequence.sv create mode 100755 vitis/v2020_1/svr/svr_slave_agent.sv create mode 100755 vitis/v2020_1/svr/svr_slave_driver.sv create mode 100755 vitis/v2020_1/svr/svr_slave_monitor.sv create mode 100755 vitis/v2020_1/svr/svr_slave_sequence.sv create mode 100755 vitis/v2020_1/svr/svr_slave_sequencer.sv create mode 100755 vitis/v2020_1/svr/svr_transfer.sv create mode 100755 vitis/v2020_1/svtb/misc_interface.sv create mode 100755 vitis/v2020_1/svtb/svr_if.sv create mode 100755 vitis/v2020_1/utils/std_complex_utils.h create mode 100644 vitis/v2020_1/utils/x_hls_defines.h create mode 100644 vitis/v2020_1/utils/x_hls_float_utils.h create mode 100644 vitis/v2020_1/utils/x_hls_traits.h create mode 100644 vitis/v2020_1/utils/x_hls_utils.h create mode 100755 vitis/v2021_2/ap_axi_sdata.h create mode 100755 vitis/v2021_2/ap_cint.h create mode 100755 vitis/v2021_2/ap_common.h create mode 100755 vitis/v2021_2/ap_decl.h create mode 100755 vitis/v2021_2/ap_fixed.h create mode 100755 vitis/v2021_2/ap_fixed_base.h create mode 100755 vitis/v2021_2/ap_fixed_ref.h create mode 100755 vitis/v2021_2/ap_fixed_special.h create mode 100755 vitis/v2021_2/ap_int.h create mode 100755 vitis/v2021_2/ap_int_base.h create mode 100755 vitis/v2021_2/ap_int_ref.h create mode 100755 vitis/v2021_2/ap_int_special.h create mode 100755 vitis/v2021_2/ap_shift_reg.h create mode 100755 vitis/v2021_2/ap_stream.h create mode 100755 vitis/v2021_2/ap_utils.h create mode 100755 vitis/v2021_2/autoesl_tech.h create mode 100755 vitis/v2021_2/autopilot_tech.h create mode 100755 vitis/v2021_2/clc.h create mode 100755 vitis/v2021_2/clc.h.inc create mode 100755 vitis/v2021_2/dds/dds_compiler_v6_0_bitacc_cmodel.h create mode 100755 vitis/v2021_2/dds/xip_common_bitacc_cmodel.h create mode 100755 vitis/v2021_2/dsp_builtins.h create mode 100755 vitis/v2021_2/etc/ap_private.h create mode 100755 vitis/v2021_2/etc/autopilot_apint.h create mode 100755 vitis/v2021_2/etc/autopilot_dt.h create mode 100755 vitis/v2021_2/etc/autopilot_dt_def.h create mode 100755 vitis/v2021_2/etc/autopilot_dt_ext.def create mode 100755 vitis/v2021_2/etc/autopilot_ssdm_bits.h create mode 100755 vitis/v2021_2/etc/autopilot_ssdm_op.h create mode 100755 vitis/v2021_2/etc/c_ap_int_sim.h create mode 100755 vitis/v2021_2/etc/dsp48_builtins.h create mode 100755 vitis/v2021_2/etc/dsp48e1_builtins.h create mode 100755 vitis/v2021_2/etc/dsp48e2_builtins.h create mode 100755 vitis/v2021_2/etc/dsp_dp_builtins.h create mode 100755 vitis/v2021_2/fft/xfft_v9_0_bitacc_cmodel.h create mode 100755 vitis/v2021_2/fft/xfft_v9_1_bitacc_cmodel.h create mode 100755 vitis/v2021_2/fir/fir_compiler_v7_2_bitacc_cmodel.h create mode 100755 vitis/v2021_2/fir/gmp.h create mode 100755 vitis/v2021_2/fir/xip_common_bitacc_cmodel.h create mode 100755 vitis/v2021_2/fir/xip_mpz_bitacc_cmodel.h create mode 100755 vitis/v2021_2/fix_include.sh create mode 100755 vitis/v2021_2/floating_point_v7_0_bitacc_cmodel.h create mode 100755 vitis/v2021_2/gmp.h create mode 100755 vitis/v2021_2/hls/dsp/hls_awgn.h create mode 100755 vitis/v2021_2/hls/dsp/hls_convolution_encoder.h create mode 100755 vitis/v2021_2/hls/dsp/hls_nco.h create mode 100755 vitis/v2021_2/hls/dsp/hls_qam_demod.h create mode 100755 vitis/v2021_2/hls/dsp/hls_qam_mod.h create mode 100755 vitis/v2021_2/hls/dsp/hls_viterbi_decoder.h create mode 100755 vitis/v2021_2/hls/dsp/utils/hls_dsp_common_utils.h create mode 100755 vitis/v2021_2/hls_alg.h create mode 100755 vitis/v2021_2/hls_alg/bitonicsort.h create mode 100755 vitis/v2021_2/hls_alg/hash.h create mode 100755 vitis/v2021_2/hls_alg/hash_sha224_sha256.h create mode 100755 vitis/v2021_2/hls_alg/sort.h create mode 100755 vitis/v2021_2/hls_alg/types.h create mode 100755 vitis/v2021_2/hls_alg/utils.h create mode 100755 vitis/v2021_2/hls_all_any_apfixed.h create mode 100755 vitis/v2021_2/hls_burst_maxi.h create mode 100755 vitis/v2021_2/hls_cbrt_apfixed.h create mode 100755 vitis/v2021_2/hls_comparison_apfixed.h create mode 100755 vitis/v2021_2/hls_cordic_apfixed.h create mode 100755 vitis/v2021_2/hls_dds.h create mode 100755 vitis/v2021_2/hls_diff_apfixed.h create mode 100755 vitis/v2021_2/hls_dsp.h create mode 100755 vitis/v2021_2/hls_erf_apfixed.h create mode 100755 vitis/v2021_2/hls_exp_apfixed.h create mode 100755 vitis/v2021_2/hls_fft.h create mode 100755 vitis/v2021_2/hls_fft_x_complex.h create mode 100755 vitis/v2021_2/hls_fir.h create mode 100755 vitis/v2021_2/hls_fmod_rem_quo_remainder_divide_apfixed.h create mode 100755 vitis/v2021_2/hls_fpo.h create mode 100755 vitis/v2021_2/hls_fract_apfixed.h create mode 100755 vitis/v2021_2/hls_frexp_apfixed.h create mode 100755 vitis/v2021_2/hls_half.h create mode 100755 vitis/v2021_2/hls_half_fpo.h create mode 100755 vitis/v2021_2/hls_half_sim.h create mode 100755 vitis/v2021_2/hls_half_x_utils.h create mode 100755 vitis/v2021_2/hls_hotbm_apfixed.h create mode 100755 vitis/v2021_2/hls_hypot_apfixed.h create mode 100755 vitis/v2021_2/hls_isequal_isnotequal_apfixed.h create mode 100755 vitis/v2021_2/hls_ldexp_apfixed.h create mode 100755 vitis/v2021_2/hls_lgamma_apfixed.h create mode 100755 vitis/v2021_2/hls_log_apfixed.h create mode 100755 vitis/v2021_2/hls_mac_pack.h create mode 100755 vitis/v2021_2/hls_mad_apfixed.h create mode 100755 vitis/v2021_2/hls_math.h create mode 100755 vitis/v2021_2/hls_modf_apfixed.h create mode 100755 vitis/v2021_2/hls_np_channel.h create mode 100755 vitis/v2021_2/hls_pow_apfixed.h create mode 100755 vitis/v2021_2/hls_print.h create mode 100755 vitis/v2021_2/hls_round_copysign_apfixed.h create mode 100755 vitis/v2021_2/hls_select_bitselect_apfixed.h create mode 100755 vitis/v2021_2/hls_signal_handler.h create mode 100755 vitis/v2021_2/hls_sqrt_apfixed.h create mode 100755 vitis/v2021_2/hls_stream.h create mode 100755 vitis/v2021_2/hls_stream_thread_safe.h create mode 100755 vitis/v2021_2/hls_stream_thread_unsafe.h create mode 100755 vitis/v2021_2/hls_streamofblocks.h create mode 100755 vitis/v2021_2/hls_task.h create mode 100755 vitis/v2021_2/hls_tgamma_apfixed.h create mode 100755 vitis/v2021_2/hls_vector.h create mode 100755 vitis/v2021_2/hls_x_complex.h create mode 100755 vitis/v2021_2/hlsgraph.h create mode 100755 vitis/v2021_2/hlsgraph/ConnectedComponents.h create mode 100755 vitis/v2021_2/hlsgraph/PageRank.h create mode 100755 vitis/v2021_2/hlsgraph/utils.h create mode 100755 vitis/v2021_2/mpfr.h create mode 100755 vitis/v2021_2/utils/hls_version.h create mode 100755 vitis/v2021_2/utils/std_complex_utils.h create mode 100755 vitis/v2021_2/utils/x_hls_defines.h create mode 100755 vitis/v2021_2/utils/x_hls_float_utils.h create mode 100755 vitis/v2021_2/utils/x_hls_traits.h create mode 100755 vitis/v2021_2/utils/x_hls_utils.h create mode 100644 vitis/vitis_generate.tcl.template diff --git a/vitis/BUILD b/vitis/BUILD new file mode 100644 index 00000000..19778b1f --- /dev/null +++ b/vitis/BUILD @@ -0,0 +1,21 @@ +exports_files(["vitis_generate.tcl.template"]) + +# Define versions of vitis_hls/vivado_hls as needed. +# These are copied from the installation. +cc_library( + name = "v2021_2_cc", + srcs = glob([ + "v2021_2/**/*.h", + ]), + strip_include_prefix = "external/rules_hdl/", + visibility = ["//visibility:public"], +) + +cc_library( + name = "v2020_1_cc", + srcs = glob([ + "v2020_1/**/*.h", + ]), + strip_include_prefix = "external/rules_hdl/", + visibility = ["//visibility:public"], +) diff --git a/vitis/defs.bzl b/vitis/defs.bzl new file mode 100644 index 00000000..4d5b749c --- /dev/null +++ b/vitis/defs.bzl @@ -0,0 +1,113 @@ +"""Defs for generating verilog using HLS""" + +HlsFileInfo = provider( + "HLS files required by vitis", + fields = { + "files": "a list of files", + }, +) + +def _vitis_hls_files_aspect_impl(target, ctx): + """Filter out the vitis header deps.""" + files = [] + + for f in target[CcInfo].compilation_context.headers.to_list(): + if "vitis/v" not in f.dirname: + files.append(f) + + if hasattr(ctx.rule.attr, "srcs"): + for src in ctx.rule.attr.srcs: + for f in src.files.to_list(): + if f not in files and "vitis/v" not in f.dirname: + files.append(f) + + if hasattr(ctx.rule.attr, "deps"): + for dep in ctx.rule.attr.deps: + files = files + dep[HlsFileInfo].files + + return [HlsFileInfo(files = files)] + +vitis_hls_files_aspect = aspect( + implementation = _vitis_hls_files_aspect_impl, + attr_aspects = ["deps"], +) + +def _vitis_generate_impl(ctx): + all_files = [] + cflags = "-D__SYNTHESIS__=1 --std=c++17" + for dep in ctx.attr.deps: + for file in dep[HlsFileInfo].files: + external_path = "/".join([file.root.path, file.owner.workspace_root]) if file.root.path else file.owner.workspace_root + cflags += " -I" + external_path + + source_file_str = "" + for dep in ctx.attr.deps: + for file in dep[HlsFileInfo].files: + all_files.append(file) + source_file_str += "add_file " + file.path + " -cflags \"" + cflags + "\"\n" + + vitis_tcl = ctx.actions.declare_file("{}_run_hls.tcl".format(ctx.label.name)) + vitis_log = ctx.actions.declare_file("{}_hls.log".format(ctx.label.name)) + + substitutions = { + "{{PROJECT_NAME}}": ctx.label.name, + "{{SOURCE_FILES}}": source_file_str, + "{{TOP_LEVEL_FUNCTION}}": ctx.attr.top_func, + "{{PART_NUMBER}}": ctx.attr.part_number, + "{{CLOCK_PERIOD}}": ctx.attr.clock_period, + } + + ctx.actions.expand_template( + template = ctx.file._vitis_generate_template, + output = vitis_tcl, + substitutions = substitutions, + ) + + vitis_command = "source " + ctx.file.xilinx_env.path + " && " + if ctx.attr.use_vivado_hls: + vitis_command += "vivado_hls " + vitis_tcl.path + else: + vitis_command += "vitis_hls " + vitis_tcl.path + vitis_command += " -l " + vitis_log.path + vitis_command += " && tar -czvf " + ctx.outputs.out.path + " -C " + vitis_command += ctx.label.name + "/sol1/impl/verilog ." + + outputs = [vitis_log, ctx.outputs.out] + + if ctx.attr.use_vivado_hls: + progress_message = "Running with vivado_hls: {}".format(ctx.label.name) + else: + progress_message = "Running with vitis_hls: {}".format(ctx.label.name) + + ctx.actions.run_shell( + outputs = outputs, + inputs = all_files + [vitis_tcl, ctx.file.xilinx_env], + progress_message = progress_message, + command = vitis_command, + ) + + return [ + DefaultInfo(files = depset(outputs)), + ] + +vitis_generate = rule( + implementation = _vitis_generate_impl, + attrs = { + "top_func": attr.string(doc = "The name of the top level function.", mandatory = True), + "clock_period": attr.string(doc = "The clock period for the module.", mandatory = True), + "part_number": attr.string(doc = "The part number to use. Default is ZCU111", default = "xczu28dr-ffvg1517-2-e"), + "deps": attr.label_list(doc = "The file to generate from", aspects = [vitis_hls_files_aspect], mandatory = True), + "out": attr.output(doc = "The generated verilog files", mandatory = True), + "use_vivado_hls": attr.bool(doc = "Use vivado HLS instead of vitis hls.", default = False), + "_vitis_generate_template": attr.label( + doc = "The tcl template to run with vitis.", + default = "@rules_hdl//vitis:vitis_generate.tcl.template", + allow_single_file = [".template"], + ), + "xilinx_env": attr.label( + doc = "Environment variables for xilinx tools.", + allow_single_file = [".sh"], + mandatory = True, + ), + }, +) diff --git a/vitis/tests/BUILD b/vitis/tests/BUILD new file mode 100644 index 00000000..51750cb2 --- /dev/null +++ b/vitis/tests/BUILD @@ -0,0 +1,90 @@ +load("//vitis:defs.bzl", "vitis_generate") + +# This is to test the path of generated headers. +genrule( + name = "consts", + outs = [ + "consts.h", + ], + cmd_bash = "touch $(OUTS)", +) + +cc_library( + name = "consts_cc", + hdrs = [ + "consts.h", + ], +) + +cc_library( + name = "hls_adder", + srcs = [ + "hls_adder.cc", + ], + hdrs = [ + "hls_adder.h", + ], + deps = [ + "consts_cc", + "@rules_hdl//vitis:v2021_2_cc", + ], +) + +cc_test( + name = "hls_adder_test", + srcs = [ + "hls_adder_test.cc", + ], + deps = [ + ":hls_adder", + "@com_google_googletest//:gtest_main", + ], +) + +cc_library( + name = "hls_adder_vivado", + srcs = [ + "hls_adder.cc", + ], + hdrs = [ + "hls_adder.h", + ], + defines = ["WITH_VIVADO_HLS=1"], + deps = [ + "consts_cc", + "@rules_hdl//vitis:v2020_1_cc", + ], +) + +cc_test( + name = "hls_adder_vivado_test", + srcs = [ + "hls_adder_test.cc", + ], + deps = [ + ":hls_adder_vivado", + "@com_google_googletest//:gtest_main", + ], +) + +vitis_generate( + name = "adder", + out = "adder.tar.gz", + clock_period = "10.0", + tags = ["manual"], + top_func = "adder", + xilinx_env = ":xilinx_env.sh", + deps = [":hls_adder"], +) + +vitis_generate( + name = "adder_vivado", + out = "adder_vivado.tar.gz", + clock_period = "10.0", + tags = ["manual"], + # Note need namespace with vivado_hls. + top_func = "vitis::adder", + use_vivado_hls = True, + xilinx_env = ":xilinx_env_vivado.sh", + deps = [":hls_adder_vivado"], +) diff --git a/vitis/tests/hls_adder.cc b/vitis/tests/hls_adder.cc new file mode 100644 index 00000000..7e33ef86 --- /dev/null +++ b/vitis/tests/hls_adder.cc @@ -0,0 +1,10 @@ +#include "hls_adder.h" + +namespace vitis { + +void adder(fixed &a, fixed &b, fixed &c) { +#pragma HLS pipeline II = 1 + c = a + b; +} + +} // namespace vitis \ No newline at end of file diff --git a/vitis/tests/hls_adder.h b/vitis/tests/hls_adder.h new file mode 100644 index 00000000..31fb7666 --- /dev/null +++ b/vitis/tests/hls_adder.h @@ -0,0 +1,19 @@ + +#ifdef __SYNTHESIS__ +#include +#else +#ifdef WITH_VIVADO_HLS +#include "vitis/v2020_1/ap_fixed.h" +#else +#include "vitis/v2021_2/ap_fixed.h" +#endif +#endif + +#include "vitis/tests/consts.h" +namespace vitis { + +typedef ap_fixed<16, 9> fixed; + +void adder(fixed &a, fixed &b, fixed &c); + +} // namespace vitis \ No newline at end of file diff --git a/vitis/tests/hls_adder_test.cc b/vitis/tests/hls_adder_test.cc new file mode 100644 index 00000000..f5427ad8 --- /dev/null +++ b/vitis/tests/hls_adder_test.cc @@ -0,0 +1,27 @@ +#include "hls_adder.h" + +#include "gtest/gtest.h" + +namespace vitis { +namespace { + +class HlsAdderTest : public testing::Test {}; + +TEST_F(HlsAdderTest, one_plus_one) { + fixed a = 1; + fixed b = 1; + fixed c; + adder(a, b, c); + EXPECT_EQ(c, 2); +} + +TEST_F(HlsAdderTest, quarter_plus_quarter) { + fixed a = 0.25; + fixed b = 0.25; + fixed c; + adder(a, b, c); + EXPECT_EQ(c, 0.5); +} + +} // namespace +} // namespace vitis \ No newline at end of file diff --git a/vitis/tests/xilinx_env.sh b/vitis/tests/xilinx_env.sh new file mode 100644 index 00000000..e863db81 --- /dev/null +++ b/vitis/tests/xilinx_env.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +export HOME=/tmp +source /opt/xilinx/Vitis_HLS/2021.2/settings64.sh +export XILINXD_LICENSE_FILE=2100@localhost diff --git a/vitis/tests/xilinx_env_vivado.sh b/vitis/tests/xilinx_env_vivado.sh new file mode 100644 index 00000000..53cb1c5f --- /dev/null +++ b/vitis/tests/xilinx_env_vivado.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +export HOME=/tmp +source /opt/xilinx/Vivado/2020.1/settings64.sh +export XILINXD_LICENSE_FILE=2100@localhost diff --git a/vitis/v2020_1/Makefile.sysc.rules b/vitis/v2020_1/Makefile.sysc.rules new file mode 100644 index 00000000..057c39d5 --- /dev/null +++ b/vitis/v2020_1/Makefile.sysc.rules @@ -0,0 +1,502 @@ +#===- Makefile.sysc.rules ----------------------------------*- Makefile -*--===# +# +# Makefile rules for autopilot SystemC simulation flow +# +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +# +#===------------------------------------------------------------------------===# + + +# Required user variables: +#TARGET + +# Optional variables: +#ExtraCFlags +#ExtraCXXFlags +#ExtraLDFlags + +# Users may have their own SystemC enviornments, by defineing the +# following variables +#HLS_SYSTEMC_HOME +#HLS_SYSTEMC_LIB_PATH + +### Common shell commands. +Echo = @echo +MKDIR = mkdir -p +Make = make +MV = mv +RM = rm +CP = cp +CD = cd + +### Directory for object files. +ifndef ObjDir + ObjDir := obj +endif + +### Switch for displaying detailed information. +#VERBOSE = 1 + + +ifdef VERBOSE + Verb := +else + Verb := @ +endif + +ifndef AUTOPILOT_TOOL + AUTOPILOT_TOOL = "$(shell vitis_hls -proot)/tools" +endif + +ifndef AUTOPILOT_TECH + AUTOPILOT_TECH = "$(AUTOPILOT_ROOT)/common/technology" +endif + +ifndef HLS_SYSTEMC_HOME + HLS_SYSTEMC_HOME = $(AUTOPILOT_TOOL)/systemc +endif + +ifndef HLS_SYSTEMC_LIB_PATH + ifeq ($(AUTOPILOT_MACH),win64) + ifdef __USE_CLANG__ + HLS_SYSTEMC_LIB_PATH = $(AUTOPILOT_TOOL)/systemc/clang + else + HLS_SYSTEMC_LIB_PATH = $(AUTOPILOT_TOOL)/systemc/gcc + endif + else + HLS_SYSTEMC_LIB_PATH = $(AUTOPILOT_TOOL)/systemc/lib + endif +endif + +ifndef HLS_FPO_LIB_PATH + HLS_FPO_LIB_PATH = $(AUTOPILOT_TOOL)/fpo_v7_0 +endif + +ifndef HLS_FFT_LIB_PATH + HLS_FFT_LIB_PATH = $(AUTOPILOT_TOOL)/fft_v9_1 +endif + +ifndef HLS_FIR_LIB_PATH + HLS_FIR_LIB_PATH = $(AUTOPILOT_TOOL)/fir_v7_0 +endif + +ifndef HLS_DDS_LIB_PATH + HLS_DDS_LIB_PATH = $(AUTOPILOT_TOOL)/dds_v6_0 +endif + +ifndef HLS_MATHHLS_LIB_PATH + HLS_MATHHLS_LIB_PATH = $(AUTOPILOT_ROOT)/$(AUTOPILOT_MACH)/lib/csim +endif + + +ifdef __USE_CLANG__ +ifdef AP_CLANG_PATH +CC = $(AP_CLANG_PATH)/clang +CXX = $(AP_CLANG_PATH)/clang++ +else +CC = clang +CXX = clang++ +endif +else +ifdef AP_GCC_PATH +CC = $(AP_GCC_PATH)/gcc +CXX = $(AP_GCC_PATH)/g++ +else +CC = gcc +CXX = g++ +endif +endif + +ifdef __USE_CLANG_M32__ +CC += -m32 +CXX += -m32 +endif + +LINUX = +INCPATH = . +SRCPATH = . +BINPATH = . +SYSC = $(HLS_SYSTEMC_HOME) +SYSCINC = $(SYSC)/include +SYSCLIB = $(HLS_SYSTEMC_LIB_PATH) +FPOLIB = $(HLS_FPO_LIB_PATH) +FFTLIB = $(HLS_FFT_LIB_PATH) +FIRLIB = $(HLS_FIR_LIB_PATH) +DDSLIB = $(HLS_DDS_LIB_PATH) +MATHHLSLIB = $(HLS_MATHHLS_LIB_PATH) +DEFINE = +ATBG_CFLAG = -DSST_SIM_ENABLE -DSST_ATBG_ENABLE +IFLAG += -I $(INCPATH) -I "$(SYSCINC)" +IFLAG += -I "$(AUTOPILOT_ROOT)/include" +#IFLAG += -I "$(AUTOPILOT_TECH)/autopilot/sim" +#IFLAG += -I "$(AUTOPILOT_TECH)/autopilot/etc" +IFLAG += -I "$(AUTOPILOT_TECH)/generic/SystemC/AESL_comp" +LFLAG += -Wl,--as-needed +LFLAG += -Wl,-rpath,"$(SYSCLIB)" -L "$(SYSCLIB)" -lsystemc -lpthread + +ifdef __SIM_MATHHLS__ + + ifdef __USE_CLANG__ + ifeq ($(AUTOPILOT_MACH),win64) + LFLAG += -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsmc++-CLANG39-x64 + else + LFLAG += -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsmc++-CLANG39 + endif + else + ifeq ($(AUTOPILOT_MACH),win64) + LFLAG += -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsmc++-GCC62-x64 + else + LFLAG += -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsmc++-GCC46 + endif + endif + + ifndef __SIM_MATHSTD__ + ifdef __USE_CLANG__ + ifeq ($(AUTOPILOT_MACH),win64) + LFLAG += -fno-builtin -fno-inline -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsm-CLANG39-x64 + else + LFLAG += -fno-builtin -fno-inline -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsm-CLANG39 + endif + else + ifeq ($(AUTOPILOT_MACH),win64) + LFLAG += -fno-builtin -fno-inline -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsm-GCC62-x64 + else + LFLAG += -fno-builtin -fno-inline -Wl,-rpath,"$(MATHHLSLIB)" -L "$(MATHHLSLIB)" -lhlsm-GCC46 + endif + endif + endif + + export LD_LIBRARY_PATH := ${LD_LIBRARY_PATH}:$(MATHHLSLIB) +endif + +ifdef __SIM_FPO__ + LFLAG += -Wl,-rpath,"$(FPOLIB)" -L "$(FPOLIB)" -lgmp -lmpfr -lIp_floating_point_v7_0_bitacc_cmodel +endif + +ifdef __SIM_FFT__ + LFLAG += -Wl,-rpath,"$(FFTLIB)" -L "$(FFTLIB)" -lIp_xfft_v9_1_bitacc_cmodel + export LD_LIBRARY_PATH := ${LD_LIBRARY_PATH}:$(FFTLIB) +endif + +ifdef __SIM_FIR__ + LFLAG += -Wl,-rpath,"$(FIRLIB)" -L "$(FIRLIB)" -lgmp -lIp_fir_compiler_v7_2_bitacc_cmodel + export LD_LIBRARY_PATH := ${LD_LIBRARY_PATH}:$(FIRLIB) +endif + +ifdef __SIM_DDS__ + LFLAG += -Wl,-rpath,"$(DDSLIB)" -L "$(DDSLIB)" -lIp_dds_compiler_v6_0_bitacc_cmodel + export LD_LIBRARY_PATH := ${LD_LIBRARY_PATH}:$(DDSLIB) +endif + +CFLAG += $(DEBUG) $(DEFINE) -DC_TEST +CFLAG += $(ATBG_CFLAG) + +# Only for glibc2.12 bug, define __USE_XOPEN2K8, CR694034. +RUNNING_LINUX := "$(shell uname | grep -i Linux)" +ifeq ($(RUNNING_LINUX),"Linux") +LDD_VERSION = "$(shell ldd --version | grep 2.12)" + ifneq ($(LDD_VERSION), "") + CFLAG += -D__USE_XOPEN2K8 + DFLAG += -D__USE_XOPEN2K8 + endif +else +CFLAG += -D__USE_XOPEN2K8 +DFLAG += -D__USE_XOPEN2K8 +endif + + +ifndef HLS_SOURCES + # Find all .cpp, .cp, .cxx, .cc, .c++, .c, .C in current directory and in $(HLS_RtlSCDir). + SUFFIX_CPP = cpp + SUFFIX_CP = cp + SUFFIX_CXX = cxx + SUFFIX_CC = cc + SUFFIX_C++ = c++ + SUFFIX_c = c + SUFFIX_C = C + SOURCES_CPP = $(wildcard *.$(SUFFIX_CPP)) + SOURCES_CP = $(wildcard *.$(SUFFIX_CP)) + SOURCES_CXX = $(wildcard *.$(SUFFIX_CXX)) + SOURCES_CC = $(wildcard *.$(SUFFIX_CC)) + SOURCES_C++ = $(wildcard *.$(SUFFIX_C++)) + SOURCES_c = $(wildcard *.$(SUFFIX_c)) + SOURCES_C = $(wildcard *.$(SUFFIX_C)) + +ifdef HLS_RtlSCDir + SOURCES_CPP += $(wildcard $(HLS_RtlSCDir)/*.cpp) + SOURCES_CC += $(wildcard $(HLS_RtlSCDir)/*.cc) + SOURCES_C += $(wildcard $(HLS_RtlSCDir)/*.c) +endif + + FILE_SOURCES_CPP = $(notdir $(SOURCES_CPP)) + FILE_SOURCES_CC = $(notdir $(SOURCES_CC)) + FILE_SOURCES_C = $(notdir $(SOURCES_C)) + + override HLS_SOURCES = $(SOURCES_CPP) $(SOURCES_CP) $(SOURCES_CXX) $(SOURCES_CC) $(SOURCES_C++) $(SOURCES_c) $(SOURCES_C) +endif + +OBJECTS := $(basename $(notdir $(HLS_SOURCES))) +OBJECTS := $(OBJECTS:%=$(ObjDir)/%.o) + + +ERR_FILE = err.log + +ERRNO=`wc -l $(ERR_FILE) | sed "s/ $(ERR_FILE)//"` + +.debug1:: + $(Echo) "2 src: $(HLS_SOURCES)" + $(Echo) "2 obj: $(OBJECTS)" +#-------------------------------------------------------------------- +# Set the VPATH so that we can find source files. +#-------------------------------------------------------------------- +VPATH=$(HLS_RtlSCDir) + +#-------------------------------------------------------------------- +# Reset the list of suffixes we know how to build +#-------------------------------------------------------------------- +.SUFFIXES: +.SUFFIXES: .c .cc .cpp .h + + +#ENABLE_PROFILING := +#ENABLE_OPTIMIZED := 1 + +ifdef ENABLE_PROFILING + BuildMode := profile + CXX.Flags := -O3 -DNDEBUG -felide-constructors -finline-functions -pg + C.Flags := -O3 -DNDEBUG -pg + LD.Flags := -O3 -DNDEBUG -pg +else + ifdef AP_ENABLE_OPTIMIZED + BuildMode := release + #CXX.Flags := -O3 -DNDEBUG -finline-functions \ + # -felide-constructors -fomit-frame-pointer + CXX.Flags := -O1 -DNDEBUG + C.Flags := -O1 -DNDEBUG -fomit-frame-pointer + LD.Flags := -O1 -DNDEBUG + else + BuildMode := debug + CXX.Flags := -D_DEBUG + C.Flags := -D_DEBUG +ifdef __USE_CLANG__ + LD.Flags := -D_DEBUG -g -O1 +else + LD.Flags := -D_DEBUG +endif + KEEP_SYMBOLS := 1 + endif +endif + + +CPPFLAGS += $(IFLAG) $(CFLAG) +CFLAGS += $(IFLAG) $(CFLAG) +LDFLAGS += $(LFLAG) + +ifdef AP_GCC_M32 +CFLAGS += -m32 +CPPFLAGS += -m32 +LDFLAGS += -m32 +endif + +ifdef __USE_CLANG__ +CXX.Flags += $(CXXFLAGS) -fpermissive $(ExtraCXXFlags) $(TOOLCHAIN) +else +CXX.Flags += $(CXXFLAGS) -fpermissive $(ExtraCXXFlags) +endif +C.Flags += $(CFLAGS) $(ExtraCFlags) +CPP.Flags += $(CPPFLAGS) +LD.Flags += $(LDFLAGS) $(ExtraLDFlags) +AR.Flags := cru +LibTool.Flags := --tag=CXX +#CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused +CompileCommonOpts := + +ifdef __USE_CLANG__ +ifdef __COSIM_FLOW__ +#CompileCommonOpts += -D_GLIBCXX_USE_CXX11_ABI=0 +endif +endif + +#-------------- C/C++ to binary ---------------------------------------- +Compile.C = $(CC) $(CPP.Flags) $(CompileCommonOpts) -c $(C.Flags) +Compile.CXX = $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -c + +CXXPATH = $(shell which ${CXX}) + +ifndef CSIM_DESIGN +$(TARGET):: + $(Echo) " Build using \"${CXXPATH}\"" +endif + +$(TARGET):: $(ObjDir)/.dir $(OBJECTS) + $(Echo) " Generating $(TARGET)" $(AVE_DIR_DLOG) + $(Verb)$(CXX) $(OBJECTS) $(LD.Flags) -o $@ + +# $(Echo) "[$(MSGH)] Done!" $(AVE_DIR_DLOG) + + +#---------- Auto CPP/C Dependencies ---------- +$(ObjDir)/%.o: %.cpp $(ObjDir)/.dir + $(Echo) " Compiling $*.cpp" $(AVE_DIR_DLOG) + $(Verb) if $(Compile.CXX) $(DFLAG) -MD -MT $@ -MP -MF $(ObjDir)/$*.CXXd $< -o $@ ; \ + then $(MV) -f "$(ObjDir)/$*.CXXd" "$(ObjDir)/$*.d"; \ + else $(RM) -f "$(ObjDir)/$*.CXXd"; exit 1; fi + +$(ObjDir)/%.o: %.cc $(ObjDir)/.dir + $(Echo) " Compiling $*.cc" $(AVE_DIR_DLOG) + $(Verb) if $(Compile.CXX) $(DFLAG) -MD -MT $@ -MP -MF $(ObjDir)/$*.CXXd $< -o $@ ; \ + then $(MV) -f "$(ObjDir)/$*.CXXd" "$(ObjDir)/$*.d"; \ + else $(RM) -f "$(ObjDir)/$*.CXXd"; exit 1; fi + +$(ObjDir)/%.o: %.c $(ObjDir)/.dir + $(Echo) " Compiling $*.c" $(AVE_DIR_DLOG) + $(Verb) if $(Compile.C) $(DFLAG) -MD -MT $@ -MP -MF $(ObjDir)/$*.Cd $< -o $@ ; \ + then $(MV) -f "$(ObjDir)/$*.Cd" "$(ObjDir)/$*.d"; \ + else $(RM) -f "$(ObjDir)/$*.Cd"; exit 1; fi + + +# This rules ensures that header files that are removed still have a rule for +# which they can be "generated." This allows make to ignore them and +# reproduce the dependency lists. +%.h:: ; + + +#-------------- C/C++ to virtual binary -------------------------------- +# You can use ExtraUserBCs to add additional BC object files to be linked. +# +# set CFLAGS "-DAESL_SYN -I${AUTOPILOT_INC} -I${MATH_INC} \ +# -O0 -c -emit-llvm $ExtCFlags" + +Extra.BCCPP.Flags += -emit-llvm -DAUTOPILOT_BC_SIM +BCC.Flags = $(CPP.Flags) $(CompileCommonOpts) $(C.Flags) $(Extra.BCCPP.Flags) +BCCXX.Flags = $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) $(Extra.BCCPP.Flags) +Compile.BCC = $(AUTOPILOT_TOOL)/clang/bin/clang -hls $(BCC.Flags) -c -emit-llvm +Compile.BCCXX = $(AUTOPILOT_TOOL)/clang/bin/clang++ -hls $(BCCXX.Flags) -c -emit-llvm +Compile.BCLD = $(AUTOPILOT_TOOL)/clang/bin/llvm-ld -disable-inlining + +#ifndef BCLibDir +#BCLibDir = $(HLS_RtlSCDir)/../tmp +#endif + +#ExtraUserBCs := $(wildcard $(BCLibDir)/*.o.3.sim.bc) +#ExtraUsers := $(notdir $(ExtraUsers)) + +#VPATH=$(BCLibDir):$(VPATH) + +SOURCES_C.BC += $(wildcard *.c) +OBJECTS_C.BC = $(SOURCES_C.BC:%.c=$(ObjDir)/%.bc) + +OBJECTS.BC = $(ExtraUserBCs) $(OBJECTS_C.BC) + +.debug2: + $(Echo) "$(ExtraUsers)" + $(Echo) "$(OBJECTS.BC)" + + +$(TARGET.BC): $(OBJECTS.BC) + $(Echo) " Generating BC $(TARGET.BC) from $(OBJECTS.BC)" $(AVE_DIR_DLOG) + $(Verb)$(Compile.BCLD) $(OBJECTS.BC) $(BCLD.Flags) -o $@ + +# $(Echo) "[$(MSGH)] Done!" $(AVE_DIR_DLOG) + +#---------- Auto CPP/C to BC Dependencies ---------- +$(ObjDir)/%.bc: %.cpp $(ObjDir)/.dir + $(Echo) " Compiling $*.cpp in bc." $(AVE_DIR_DLOG) + $(Verb) if $(Compile.BCCXX) -MD -MT $@ -MP -MF $(ObjDir)/$*.CXXd $< -o $@ ; \ + then $(MV) -f "$(ObjDir)/$*.CXXd" "$(ObjDir)/$*.d"; \ + else $(RM) -f "$(ObjDir)/$*.CXXd"; exit 1; fi + +$(ObjDir)/%.bc: %.cc $(ObjDir)/.dir + $(Echo) " Compiling $*.cpp in bc." $(AVE_DIR_DLOG) + $(Verb) if $(Compile.BCCXX) -MD -MT $@ -MP -MF $(ObjDir)/$*.CXXd $< -o $@ ; \ + then $(MV) -f "$(ObjDir)/$*.CXXd" "$(ObjDir)/$*.d"; \ + else $(RM) -f "$(ObjDir)/$*.CXXd"; exit 1; fi + +$(ObjDir)/%.bc: %.c $(ObjDir)/.dir + $(Echo) " Compiling $*.c in bc" $(AVE_DIR_DLOG) + $(Verb) if $(Compile.BCC) -MD -MT $@ -MP -MF $(ObjDir)/$*.Cd $< -o $@ ; \ + then $(MV) -f "$(ObjDir)/$*.Cd" "$(ObjDir)/$*.d"; \ + else $(RM) -f "$(ObjDir)/$*.Cd"; exit 1; fi + + +#---------- Include CPP Dependencies +Sources := $(HLS_SOURCES) +DependFiles := $(basename $(filter %.cpp %.c %.cc, $(Sources))) +DependFiles := $(patsubst %,$(ObjDir)/%.d,$(DependFiles)) +-include /dev/null $(DependFiles) + +.debug: + $(Echo) $(DependFiles) + +#--- To create other directories, as needed, and timestamp their creation +%/.dir: + $(Verb) $(MKDIR) $* >/dev/null + $(Verb) $(DATE) > $@ + +.PRECIOUS: $(ObjDir)/.dir + + +debug: + make DEBUG="-g -D_DEBUG" -f Makefile + +clean: + $(Echo) "[$(MSGH)] Removing $(OBJECTS) $(DependFiles) $(TARGET) .." $(AVE_DIR_DLOG) + $(Verb)-rm -rf $(OBJECTS) + $(Verb)-rm -rf $(OBJECTS_C.BC) + $(Verb)-rm -rf $(DependFiles) + $(Verb)-rm -rf $(TARGET) + $(Echo) "[$(MSGH)] Done!" $(AVE_DIR_DLOG) + +explain: + $(Echo) "The following information represents your program:" + $(Echo) "Final executable name: $(TARGET)" + $(Echo) "Source files: $(HLS_SOURCES)" + $(Echo) "Object files: $(OBJECTS)" + $(Echo) "Dep files: $(DEPS)" + diff --git a/vitis/v2020_1/ap_axi_sdata.h b/vitis/v2020_1/ap_axi_sdata.h new file mode 100644 index 00000000..a73baec4 --- /dev/null +++ b/vitis/v2020_1/ap_axi_sdata.h @@ -0,0 +1,677 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + *****************************************************************************/ + +/* + * This file contains the definition of the data types for AXI streaming. + * ap_axi_s is a signed interpretation of the AXI stream + * ap_axi_u is an unsigned interpretation of the AXI stream + */ + +#ifndef __AP__AXI_SDATA__ +#define __AP__AXI_SDATA__ + +#include "ap_int.h" + +template + struct ap_axis{ + ap_int data; + ap_uint<(D+7)/8> keep; + ap_uint<(D+7)/8> strb; + ap_uint user; + ap_uint<1> last; + ap_uint id; + ap_uint dest; + }; + +template + struct ap_axis { + ap_int data; + ap_uint<(D+7)/8> keep; + ap_uint<(D+7)/8> strb; + ap_uint<1> last; + }; + +template + struct ap_axiu{ + ap_uint data; + ap_uint<(D+7)/8> keep; + ap_uint<(D+7)/8> strb; + ap_uint user; + ap_uint<1> last; + ap_uint id; + ap_uint dest; + }; + +template + struct ap_axiu { + ap_uint data; + ap_uint<(D+7)/8> keep; + ap_uint<(D+7)/8> strb; + ap_uint<1> last; + }; + + +template struct qdma_axis; + +template + struct qdma_axis { +// private: + ap_uint data; + ap_uint<(D+7)/8> keep; + ap_uint<1> last; +// public: + ap_uint get_data() const { return data; } + ap_uint<(D+7)/8> get_keep() const { return keep; } + ap_uint<1> get_last() const { return last; } + + void set_data(const ap_uint &d) { data = d; } + void set_keep(const ap_uint<(D+7)/8> &k) { keep = k; } + void set_last(const ap_uint<1> &l) { last = l; } + void keep_all() { + ap_uint<(D+7)/8> k = 0; + keep = ~k; + } + + qdma_axis(ap_uint d = ap_uint(), ap_uint<(D+7)/8> k = ap_uint<(D+7)/8>(), ap_uint<1> l = ap_uint<1>()) : data(d), keep(k), last(l) {} + qdma_axis(const qdma_axis &d) : data(d.data), keep(d.keep), last(d.last) {} + }; +#ifdef AESL_SYN +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) +#include "hls_stream.h" +namespace hls { + +template +class stream > { + using __STREAM_T__ = ap_axis; +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char* name) {} + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream< __STREAM_T__ >& chn):V(chn.V) {} + + INLINE stream& operator= (const stream< __STREAM_T__ >& chn) { + V = chn.V; + return *this; + } + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + INLINE void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + /// empty & full + bool empty() const { + #pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, &V.strb, &V.user, &V.last, + &V.id, &V.dest); + return !tmp; + } + + bool full() const { + #pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, &V.strb, &V.user, &V.last, + &V.id, &V.dest); + return !tmp; + } + + + /// Blocking read + void read(__STREAM_T__ &dout) { + #pragma HLS inline + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &dout.data, &dout.keep, &dout.strb, + &dout.user, &dout.last, &dout.id, &dout.dest); + } + + __STREAM_T__ read() { + #pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &tmp.data, &tmp.keep, &tmp.strb, + &tmp.user, &tmp.last, &tmp.id, &tmp.dest); + return tmp; + } + + /// Blocking write + void write(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &tmp.data, &tmp.keep, &tmp.strb, + &tmp.user, &tmp.last, &tmp.id, &tmp.dest); + } + + /// Non-Blocking read + bool read_nb(__STREAM_T__& dout) { + #pragma HLS inline + bool valid = + __fpga_axis_nb_pop(&V.data, &V.keep, &V.strb, + &V.user,&V.last, &V.id, &V.dest, + &dout.data, &dout.keep, &dout.strb, + &dout.user, &dout.last, &dout.id, &dout.dest); + return empty_n; + } + + /// Non-Blocking write + bool write_nb(const __STREAM_T__& in) { + #pragma HLS inline + __STREAM_T__ tmp = in; + bool valid = + __fpga_axis_nb_push(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &tmp.data, &tmp.keep, &tmp.strb, + &tmp.user, &tmp.last, &tmp.id, &tmp.dest); + return full_n; + } + + + __STREAM_T__ V; + +}; + +// Specialization +template +class stream > { + using __STREAM_T__ = ap_axis; +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char* name) {} + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream< __STREAM_T__ >& chn):V(chn.V) {} + + INLINE stream& operator= (const stream< __STREAM_T__ >& chn) { + V = chn.V; + return *this; + } + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + INLINE void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + /// Empty & Full + bool empty() const { + #pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0)); + return !tmp; + } + + bool full() const { + #pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0)); + return !tmp; + } + + /// Blocking read + void read(__STREAM_T__ &dout) { + #pragma HLS inline + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &dout.data, &dout.keep, &dout.strb, + ((int*)0), &dout.last, ((int*)0), ((int*)0)); + } + + __STREAM_T__ read() { + #pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, &tmp.strb, + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + return tmp; + } + + /// Nonblocking read + bool read_nb(__STREAM_T__ &dout) { + #pragma HLS inline + bool valid = + __fpga_axis_nb_pop(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &dout.data, &dout.keep, &dout.strb, + ((int*)0), &dout.last, ((int*)0), ((int*)0)); + return empty_n; + } + + // Blocking write + void write(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, &tmp.strb, + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + } + + /// Nonblocking write + bool write_nb(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + bool valid = + __fpga_axis_nb_push(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, &tmp.strb, + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + return full_n; + } + + /// Fifo size + //inline unsigned size() { + // unsigned size = __fpga_axis_size(&V); + // return size; + //} + + __STREAM_T__ V; +}; + +// ap_axiu +template +class stream > { + using __STREAM_T__ = ap_axiu ; +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char* name) {} + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream< __STREAM_T__ >& chn):V(chn.V) {} + + INLINE stream& operator= (const stream< __STREAM_T__ >& chn) { + V = chn.V; + return *this; + } + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + INLINE void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + /// empty & full + bool empty() const { + #pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, &V.strb, &V.user, &V.last, + &V.id, &V.dest); + return !tmp; + } + + bool full() const { + #pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, &V.strb, &V.user, &V.last, + &V.id, &V.dest); + return !tmp; + } + + + /// Blocking read + void read(__STREAM_T__ &dout) { + #pragma HLS inline + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &dout.data, &dout.keep, &dout.strb, + &dout.user, &dout.last, &dout.id, &dout.dest); + } + + __STREAM_T__ read() { + #pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &tmp.data, &tmp.keep, &tmp.strb, + &tmp.user, &tmp.last, &tmp.id, &tmp.dest); + return tmp; + } + + /// Blocking write + void write(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &tmp.data, &tmp.keep, &tmp.strb, + &tmp.user, &tmp.last, &tmp.id, &tmp.dest); + } + + /// Non-Blocking read + bool read_nb(__STREAM_T__& dout) { + #pragma HLS inline + bool valid = + __fpga_axis_nb_pop(&V.data, &V.keep, &V.strb, + &V.user,&V.last, &V.id, &V.dest, + &dout.data, &dout.keep, &dout.strb, + &dout.user, &dout.last, &dout.id, &dout.dest); + return empty_n; + } + + /// Non-Blocking write + bool write_nb(const __STREAM_T__& in) { + #pragma HLS inline + __STREAM_T__ tmp = in; + bool valid = + __fpga_axis_nb_push(&V.data, &V.keep, &V.strb, + &V.user, &V.last, &V.id, &V.dest, + &tmp.data, &tmp.keep, &tmp.strb, + &tmp.user, &tmp.last, &tmp.id, &tmp.dest); + return full_n; + } + + + __STREAM_T__ V; + +}; + +// Specialization +template +class stream > { + using __STREAM_T__ = ap_axiu; +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char* name) {} + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream< __STREAM_T__ >& chn):V(chn.V) {} + + INLINE stream& operator= (const stream< __STREAM_T__ >& chn) { + V = chn.V; + return *this; + } + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + INLINE void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + /// Empty & Full + bool empty() const { + #pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0)); + return !tmp; + } + + bool full() const { + #pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0)); + return !tmp; + } + + /// Blocking read + void read(__STREAM_T__ &dout) { + #pragma HLS inline + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &dout.data, &dout.keep, &dout.strb, + ((int*)0), &dout.last, ((int*)0), ((int*)0)); + } + + __STREAM_T__ read() { + #pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, &tmp.strb, + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + return tmp; + } + + /// Nonblocking read + bool read_nb(__STREAM_T__ &dout) { + #pragma HLS inline + bool valid = + __fpga_axis_nb_pop(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &dout.data, &dout.keep, &dout.strb, + ((int*)0), &dout.last, ((int*)0), ((int*)0)); + return empty_n; + } + + // Blocking write + void write(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, &tmp.strb, + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + } + + /// Nonblocking write + bool write_nb(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + bool valid = + __fpga_axis_nb_push(&V.data, &V.keep, &V.strb, + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, &tmp.strb, + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + return full_n; + } + + /// Fifo size + //inline unsigned size() { + // unsigned size = __fpga_axis_size(&V); + // return size; + //} + + __STREAM_T__ V; +}; + +// Specialization for qdma +template +class stream > { + using __STREAM_T__ = qdma_axis; +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char* name) {} + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream< __STREAM_T__ >& chn):V(chn.V) {} + + INLINE stream& operator= (const stream< __STREAM_T__ >& chn) { + V = chn.V; + return *this; + } + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + INLINE void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + /// Empty & Full + bool empty() const { + #pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0)); + return !tmp; + } + + bool full() const { + #pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0)); + return !tmp; + } + + /// Blocking read + void read(__STREAM_T__ &dout) { + #pragma HLS inline + __fpga_axis_pop(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0), + &dout.data, &dout.keep, ((int*)0), + ((int*)0), &dout.last, ((int*)0), ((int*)0)); + } + + __STREAM_T__ read() { + #pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, ((int*)0), + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + return tmp; + } + + /// Nonblocking read + bool read_nb(__STREAM_T__ &dout) { + #pragma HLS inline + bool valid = + __fpga_axis_nb_pop(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0), + &dout.data, &dout.keep, ((int*)0), + ((int*)0), &dout.last, ((int*)0), ((int*)0)); + return empty_n; + } + + // Blocking write + void write(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, ((int*)0), + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + } + + /// Nonblocking write + bool write_nb(const __STREAM_T__ &din) { + #pragma HLS inline + __STREAM_T__ tmp = din; + bool valid = + __fpga_axis_nb_push(&V.data, &V.keep, ((int*)0), + ((int*)0), &V.last, ((int*)0), ((int*)0), + &tmp.data, &tmp.keep, ((int*)0), + ((int*)0), &tmp.last, ((int*)0), ((int*)0)); + return full_n; + } + + /// Fifo size + //inline unsigned size() { + // unsigned size = __fpga_axis_size(&V); + // return size; + //} + + __STREAM_T__ V; +}; + +} // end of hls namespace +#endif +#endif +#endif diff --git a/vitis/v2020_1/ap_cint.h b/vitis/v2020_1/ap_cint.h new file mode 100644 index 00000000..cb425708 --- /dev/null +++ b/vitis/v2020_1/ap_cint.h @@ -0,0 +1,94 @@ +/* ap_cint.h */ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_CINT_H_ +#define _AUTOPILOT_CINT_H_ + +#ifdef __cplusplus +#warning This header file cannot be used in a C++ design. C-synthesis will fail. +#endif + +#if (defined __llvm__) || \ + (defined AESL_TB) || (defined AUTOPILOT_BC_SIM) || (__RTL_SIMULATION__) + +#ifndef __openclc +#ifndef __SYNTHESIS__ +#include +#include +#endif +#endif + +#ifdef __CYGWIN__ +# ifdef feof +# undef feof +# endif + +# ifdef ferror +# undef ferror +# endif +#endif + + +#include "etc/autopilot_apint.h" + +#else +# ifdef __cplusplus +# error This header file cannot be used in a C++ design. +# else +# error This header file does not support debugging. Do not select "Debug" in GUI. +# endif +#endif /* SYN or AUTOCC */ +#endif /* #ifndef _AUTOPILOT_CINT_H_ */ + + diff --git a/vitis/v2020_1/ap_common.h b/vitis/v2020_1/ap_common.h new file mode 100644 index 00000000..31273119 --- /dev/null +++ b/vitis/v2020_1/ap_common.h @@ -0,0 +1,764 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + */ + +#ifndef __AP_COMMON_H__ +#define __AP_COMMON_H__ + +// ---------------------------------------------------------------------- + +#include "ap_decl.h" + +// Macro functions +#define AP_MAX(a, b) ((a) > (b) ? (a) : (b)) +#define AP_MIN(a, b) ((a) < (b) ? (a) : (b)) +#define AP_ABS(a) ((a) >= 0 ? (a) : -(a)) + +#ifndef AP_ASSERT +#ifndef __SYNTHESIS__ +#include +#define AP_ASSERT(cond, msg) assert((cond) && (msg)) +#else +#define AP_ASSERT(cond, msg) +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_ASSERT + +#ifndef __SYNTHESIS__ +// for fprintf messages. +#include +// for exit on error. +#include +#endif + +// same disable condition as assert. +#if !defined(__SYNTHESIS__) && !defined(NDEBUG) + +#define _AP_DEBUG(cond, ...) \ + do { \ + if ((cond)) { \ + fprintf(stderr, "DEBUG: " __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + } \ + } while (0) +#define _AP_WARNING(cond, ...) \ + do { \ + if ((cond)) { \ + fprintf(stderr, "WARNING: " __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + } \ + } while (0) +#define _AP_ERROR(cond, ...) \ + do { \ + if ((cond)) { \ + fprintf(stderr, "ERROR: " __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + abort(); \ + } \ + } while (0) + +#else // if !defined(__SYNTHESIS__) && !defined(NDEBUG) + +#define __AP_VOID_CAST static_cast +#define _AP_DEBUG(cond, ...) (__AP_VOID_CAST(0)) +#define _AP_WARNING(cond, ...) (__AP_VOID_CAST(0)) +#define _AP_ERROR(cond, ...) (__AP_VOID_CAST(0)) + +#endif // if !defined(__SYNTHESIS__) && !defined(NDEBUG) else + +// ---------------------------------------------------------------------- + +// Attribute only for synthesis +#ifdef __SYNTHESIS__ +#define INLINE inline __attribute__((always_inline)) +//#define INLINE inline __attribute__((noinline)) +#else +#define INLINE inline +#endif + +#define AP_WEAK +// __attribute__((weak)) + +#ifndef AP_INT_MAX_W +#define AP_INT_MAX_W 1024 +#endif + +#define BIT_WIDTH_UPPER_LIMIT (1 << 15) +#if AP_INT_MAX_W > BIT_WIDTH_UPPER_LIMIT +#error "Bitwidth exceeds 32768 (1 << 15), the maximum allowed value" +#endif + +#define MAX_MODE(BITS) ((BITS + 1023) / 1024) + +// ---------------------------------------------------------------------- + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +// for overload operator<< +#include +#endif +#endif // ifndef AP_AUTOCC + +#ifndef __SYNTHESIS__ +// for string format. +#include +// for string. +#include +#endif + +// for detecting if char is signed. +enum { CHAR_IS_SIGNED = (char)-1 < 0 }; + +// TODO we have similar traits in x_hls_utils.h, should consider unify. +namespace _ap_type { +template +struct is_signed { + static const bool value = _Tp(-1) < _Tp(1); +}; + +template +struct is_integral { + static const bool value = false; +}; +#define DEF_IS_INTEGRAL(CTYPE) \ + template <> \ + struct is_integral { \ + static const bool value = true; \ + }; +DEF_IS_INTEGRAL(bool) +DEF_IS_INTEGRAL(char) +DEF_IS_INTEGRAL(signed char) +DEF_IS_INTEGRAL(unsigned char) +DEF_IS_INTEGRAL(short) +DEF_IS_INTEGRAL(unsigned short) +DEF_IS_INTEGRAL(int) +DEF_IS_INTEGRAL(unsigned int) +DEF_IS_INTEGRAL(long) +DEF_IS_INTEGRAL(unsigned long) +DEF_IS_INTEGRAL(ap_slong) +DEF_IS_INTEGRAL(ap_ulong) +#undef DEF_IS_INTEGRAL + +template +struct enable_if {}; +// partial specialization for true +template +struct enable_if { + typedef _Tp type; +}; + +template +struct remove_const { + typedef _Tp type; +}; + +template +struct remove_const<_Tp const> { + typedef _Tp type; +}; +} // namespace _ap_type + +// ---------------------------------------------------------------------- + +// Define ssdm_int and _ssdm_op. +#ifdef __SYNTHESIS__ + +#if ((__clang_major__ == 3) && (__clang_minor__ == 1)) + +/* HECTOR is a tool for formal system-level to RTL equivalence checking. + * https://www.research.ibm.com/haifa/conferences/hvc2008/present/CarlPixleyHVC08.pdf + * we used to used Hector.h here instead of following ssdm_int definition, + * but now it is deleted. + */ +template +struct ssdm_int; + +#define AP_INT_BASE(_AP_N, mode) \ + template <> \ + struct ssdm_int<_AP_N + 1024 * mode, true> { \ + int V __attribute__((bitwidth(_AP_N + 1024 * mode))); \ + INLINE ssdm_int<_AP_N + 1024 * mode, true>(){}; \ + }; \ + template <> \ + struct ssdm_int<_AP_N + 1024 * mode, false> { \ + unsigned int V __attribute__((bitwidth(_AP_N + 1024 * mode))); \ + INLINE ssdm_int<_AP_N + 1024 * mode, false>(){}; \ + }; + +#if MAX_MODE(AP_INT_MAX_W) >= 1 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 0) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 2 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 1) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 3 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 2) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 4 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 3) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 5 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 4) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 6 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 5) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 7 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 6) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 8 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 7) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 9 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 8) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 10 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 9) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 11 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 10) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 12 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 11) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 13 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 12) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 14 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 13) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 15 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 14) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 16 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 15) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 17 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 16) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 18 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 17) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 19 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 18) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 20 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 19) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 21 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 20) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 22 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 21) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 23 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 22) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 24 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 23) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 25 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 24) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 26 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 25) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 27 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 26) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 28 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 27) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 29 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 28) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 30 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 29) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 31 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 30) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 32 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 31) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#undef MAX_MODE +#undef AP_INT_BASE + +#else // HLS clang of higher version than 3.1 + +template +struct ssdm_int; + +template +struct ssdm_int<_AP_N, true> { + int V __attribute__((bitwidth(_AP_N))); + INLINE ssdm_int<_AP_N, true>(){}; +}; + +template +struct ssdm_int<_AP_N, false> { + unsigned V __attribute__((bitwidth(_AP_N))); + INLINE ssdm_int<_AP_N, false>(){}; +}; + +#endif // clang 3.1 test + +// FIXME typeof is an compiler extension. +// FIXME use ({}) to return value is GCC extension. + +#define _ssdm_op_concat(Ret, X, Y) \ + ({ \ + typeof(Ret) __Result__ = 0; \ + typeof(X) __X2__ = X; \ + typeof(Y) __Y2__ = Y; \ + __builtin_bit_concat((void*)(&__Result__), (void*)(&__X2__), \ + (void*)(&__Y2__)); \ + __Result__; \ + }) + +#define _ssdm_op_get_bit(Val, Bit) \ + ({ \ + typeof(Val) __Val2__ = Val; \ + bool __Result__ = __builtin_bit_select((void*)(&__Val2__), Bit); \ + __Result__; \ + }) + +#define _ssdm_op_set_bit(Val, Bit, Repl) \ + ({ \ + typename _ap_type::remove_const::type __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = !!Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), \ + (void*)(&__Repl2__), Bit, Bit); \ + __Result__; \ + }) + +#define _ssdm_op_get_range(Val, Lo, Hi) \ + ({ \ + typename _ap_type::remove_const::type __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + __builtin_bit_part_select((void*)(&__Result__), (void*)(&__Val2__), Lo, \ + Hi); \ + __Result__; \ + }) + +#define _ssdm_op_set_range(Val, Lo, Hi, Repl) \ + ({ \ + typename _ap_type::remove_const::type __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), \ + (void*)(&__Repl2__), Lo, Hi); \ + __Result__; \ + }) + +#include "etc/autopilot_ssdm_bits.h" + +extern "C" void _ssdm_string2bits(...); + +#endif // ifdef __SYNTHESIS__ + +#ifndef NON_C99STRING +#define _AP_C99 true +#else +#define _AP_C99 false +#endif + +static inline unsigned char guess_radix(const char* s) { + unsigned char rd = 10; ///< default radix + const char* p = s; + // skip neg sign if it exists + if (p[0] == '-' || p[0] == '+') ++p; + // guess based on following two bits. + if (p[0] == '0') { + if (p[1] == 'b' || p[1] == 'B') { + rd = 2; + } else if (p[1] == 'o' || p[1] == 'O') { + rd = 8; + } else if (p[1] == 'x' || p[1] == 'X') { + rd = 16; + } else if (p[1] == 'd' || p[1] == 'D') { + rd = 10; + } + } + return rd; +} + +// ---------------------------------------------------------------------- + +// Forward declaration of all AP types. +// Before ap_private definition. +#ifdef __SYNTHESIS__ +#define _HLS_HALF_DEFINED_ +typedef __fp16 half; +#else +class half; +#endif + +// FIXME previously, ap_int_syn.h includes hls_half.h, which includes cmath.h +// even during synthesis. Some test cases are spoiled... +#ifdef __cplusplus +#ifndef __SYNTHESIS__ +#include +#endif +#endif + +// ---------------------------------------------------------------------- + +// Basic integral struct upon which ap_int and ap_fixed are defined. +#ifdef __SYNTHESIS__ +// Use ssdm_int, a compiler dependent, attribute constrained integeral type as +// basic data type. +#define _AP_ROOT_TYPE ssdm_int +// Basic ops. +#define _AP_ROOT_op_concat(Ret, X, Y) _ssdm_op_concat(Ret, X, Y) +#define _AP_ROOT_op_get_bit(Val, Bit) _ssdm_op_get_bit(Val, Bit) +#define _AP_ROOT_op_set_bit(Val, Bit, Repl) _ssdm_op_set_bit(Val, Bit, Repl) +#define _AP_ROOT_op_get_range(Val, Lo, Hi) _ssdm_op_get_range(Val, Lo, Hi) +#define _AP_ROOT_op_set_range(Val, Lo, Hi, Repl) \ + _ssdm_op_set_range(Val, Lo, Hi, Repl) +#define _AP_ROOT_op_reduce(Op, Val) _ssdm_op_reduce(Op, Val) +#else // ifdef __SYNTHESIS__ +// Use ap_private for compiler-independent basic data type +template +class ap_private; +/// model ssdm_int in standard C++ for simulation. +template +struct ssdm_int_sim { + /// integral type with template-specified width and signedness. + ap_private<_AP_W, _AP_S> V; + ssdm_int_sim() {} +}; +#define _AP_ROOT_TYPE ssdm_int_sim +// private's ref uses _AP_ROOT_TYPE. +#include "etc/ap_private.h" +// XXX The C-sim model cannot use GCC-extension +// Basic ops. Ret and Val are ap_private. +template +inline _Tp1 _AP_ROOT_op_concat(const _Tp1& Ret, const _Tp2& X, const _Tp3& Y) { + _Tp1 r = (X).operator,(Y); + return r; +} +#define _AP_ROOT_op_get_bit(Val, Bit) (Val).get_bit((Bit)) +template +inline _Tp1& _AP_ROOT_op_set_bit(_Tp1& Val, const _Tp2& Bit, const _Tp3& Repl) { + (Val).set_bit((Bit), (Repl)); + return Val; +} +// notice the order of high and low index is different in ssdm call and +// ap_private.range()... +#define _AP_ROOT_op_get_range(Val, Lo, Hi) (Val).range((Hi), (Lo)) +template +inline _Tp1& _AP_ROOT_op_set_range(_Tp1& Val, const _Tp2& Lo, const _Tp3& Hi, + const _Tp4& Repl) { + (Val).range((Hi), (Lo)) = Repl; + return (Val); +} +#define _AP_ROOT_op_and_reduce(Val) (Val).and_reduce() +#define _AP_ROOT_op_nand_reduce(Val) (Val).nand_reduce() +#define _AP_ROOT_op_or_reduce(Val) (Val).or_reduce() +#define _AP_ROOT_op_xor_reduce(Val) (Val).xor_reduce() +// ## is the concatenation in preprocessor: +#define _AP_ROOT_op_reduce(Op, Val) _AP_ROOT_op_##Op##_reduce(Val) +#endif // ifdef __SYNTHESIS__ else + +// ---------------------------------------------------------------------- + +// Constants for half, single, double pricision floating points +#define HALF_MAN 10 +#define FLOAT_MAN 23 +#define DOUBLE_MAN 52 + +#define HALF_EXP 5 +#define FLOAT_EXP 8 +#define DOUBLE_EXP 11 + +#define BIAS(e) ((1L << (e - 1L)) - 1L) +#define HALF_BIAS BIAS(HALF_EXP) +#define FLOAT_BIAS BIAS(FLOAT_EXP) +#define DOUBLE_BIAS BIAS(DOUBLE_EXP) + +#define APFX_IEEE_DOUBLE_E_MAX DOUBLE_BIAS +#define APFX_IEEE_DOUBLE_E_MIN (-DOUBLE_BIAS + 1) + +INLINE ap_ulong doubleToRawBits(double pf) { + union { + ap_ulong __L; + double __D; + } LD; + LD.__D = pf; + return LD.__L; +} + +INLINE unsigned int floatToRawBits(float pf) { + union { + unsigned int __L; + float __D; + } LD; + LD.__D = pf; + return LD.__L; +} + +INLINE unsigned short halfToRawBits(half pf) { +#ifdef __SYNTHESIS__ + union { + unsigned short __L; + half __D; + } LD; + LD.__D = pf; + return LD.__L; +#else + return pf.get_bits(); +#endif +} + +// usigned long long is at least 64-bit +INLINE double rawBitsToDouble(ap_ulong pi) { + union { + ap_ulong __L; + double __D; + } LD; + LD.__L = pi; + return LD.__D; +} + +// long is at least 32-bit +INLINE float rawBitsToFloat(unsigned long pi) { + union { + unsigned int __L; + float __D; + } LD; + LD.__L = pi; + return LD.__D; +} + +// short is at least 16-bit +INLINE half rawBitsToHalf(unsigned short pi) { +#ifdef __SYNTHESIS__ + union { + unsigned short __L; + half __D; + } LD; + LD.__L = pi; + return LD.__D; +#else + // sim model of half has a non-trivial constructor + half __D; + __D.set_bits(pi); + return __D; +#endif +} + +#endif // ifndef __AP_COMMON_H__ else + +// -*- cpp -*- +// vim: fdm=marker:foldmarker=#if,#endif:nofoldenable + + diff --git a/vitis/v2020_1/ap_decl.h b/vitis/v2020_1/ap_decl.h new file mode 100644 index 00000000..b86213ab --- /dev/null +++ b/vitis/v2020_1/ap_decl.h @@ -0,0 +1,247 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + */ + +#ifndef __AP_DECL_H__ +#define __AP_DECL_H__ + +// ---------------------------------------------------------------------- + +#if !defined(__AP_FIXED_H__) && !defined(__AP_INT_H__) && !defined(__AUTOPILOT_CBE_H__) && !defined(__HLS_HALF_H__) +#error "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +// Test __SYNTHESIS__ only for mode +#if !defined(__SYNTHESIS__) && (defined(AESL_SYN) || defined(__HLS_SYN__)) +//#pragma message "AESL_SYN and __HLS_SYN__ should be replaced by __SYNTHESIS__" +#define __SYNTHESIS__ +#endif + +/* for safety*/ +#if (defined(_AP_N) || defined(_AP_C)) +#error One or more of the following is defined: _AP_N, _AP_C. Definition conflicts with their usage as template parameters. +#endif + +/* for safety*/ +#if (defined(_AP_W) || defined(_AP_I) || defined(_AP_S) || defined(_AP_Q) || \ + defined(_AP_O) || defined(_AP_W2) || defined(_AP_I2) || \ + defined(_AP_S2) || defined(_AP_Q2) || defined(_AP_O2) || \ + defined(_AP_N) || defined(_AP_N2)) +#error \ + "One or more of the following is defined: _AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N, _AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2. Definition conflicts with their usage as template parameters." +#endif + +/*for safety*/ +#if (defined(_AP_W3) || defined(_AP_S3) || defined(_AP_W4) || defined(_AP_S4)) +#error \ + "One or more of the following is defined: _AP_W3, _AP_S3, _AP_W4,_AP_S4. Definition conflicts with their usage as template parameters." +#endif + +#if (defined(_AP_W1) || defined(_AP_S1) || defined(_AP_T) || \ + defined(_AP_T1) || defined(_AP_T2) || defined(_AP_T3) || defined(_AP_T4)) +#error \ + "One or more of the following is defined: _AP_W1, _AP_S1, _AP_T, _AP_T1, _AP_T2, _AP_T3, _AP_T4. Definition conflicts with their usage as template parameters." +#endif + +#ifndef __cplusplus +#error "AP data type can only be used in C++" +#endif + +// ---------------------------------------------------------------------- + +#ifndef __SC_COMPATIBLE__ +/// ap_fixed quantification mode +enum ap_q_mode { + AP_RND, //< rounding to plus infinity + AP_RND_ZERO, //< rounding to zero + AP_RND_MIN_INF, //< rounding to minus infinity + AP_RND_INF, //< rounding to infinity + AP_RND_CONV, //< convergent rounding + AP_TRN, //< truncation + AP_TRN_ZERO, //< truncation to zero +}; + +// FIXME for legacy code +#ifndef SYSTEMC_INCLUDED +#define SC_RND AP_RND +#define SC_RND_ZERO AP_RND_ZERO +#define SC_RND_MIN_INF AP_RND_MIN_INF +#define SC_RND_INF AP_RND_INF +#define SC_RND_CONV AP_RND_CONV +#define SC_TRN AP_TRN +#define SC_TRN_ZERO AP_TRN_ZERO +#endif // !defined(SYSTEMC_INCLUDED) + +/// ap_fixed saturation mode +enum ap_o_mode { + AP_SAT, //< saturation + AP_SAT_ZERO, //< saturation to zero + AP_SAT_SYM, //< symmetrical saturation + AP_WRAP, //< wrap-around (*) + AP_WRAP_SM, //< sign magnitude wrap-around (*) +}; + +// FIXME for legacy code +#ifndef SYSTEMC_INCLUDED +#define SC_SAT AP_SAT +#define SC_SAT_ZERO AP_SAT_ZERO +#define SC_SAT_SYM AP_SAT_SYM +#define SC_WRAP AP_WRAP +#define SC_WRAP_SM AP_WRAP_SM +#endif // !defined(SYSTEMC_INCLUDED) + +#else // defined(__SC_COMPATIBLE__) + +// There will not be sc_fxdefs.h, and the emu should be defined by ap_fixed. + +/// ap_fixed quantification mode +enum ap_q_mode { + SC_RND, //< rounding to plus infinity + SC_RND_ZERO, //< rounding to zero + SC_RND_MIN_INF, //< rounding to minus infinity + SC_RND_INF, //< rounding to infinity + SC_RND_CONV, //< convergent rounding + SC_TRN, //< truncation + SC_TRN_ZERO, //< truncation to zero +}; + +#define AP_RND SC_RND +#define AP_RND_ZERO SC_RND_ZERO +#define AP_RND_MIN_INF SC_RND_MIN_INF +#define AP_RND_INF SC_RND_INF +#define AP_RND_CONV SC_RND_CONV +#define AP_TRN SC_TRN +#define AP_TRN_ZERO SC_TRN_ZERO + +/// ap_fixed saturation mode +enum ap_o_mode { + SC_SAT, //< saturation + SC_SAT_ZERO, //< saturation to zero + SC_SAT_SYM, //< symmetrical saturation + SC_WRAP, //< wrap-around (*) + SC_WRAP_SM, //< sign magnitude wrap-around (*) +}; + +#define AP_SAT SC_SAT +#define AP_SAT_ZERO SC_SAT_ZERO +#define AP_SAT_SYM SC_SAT_SYM +#define AP_WRAP SC_WRAP +#define AP_WRAP_SM SC_WRAP_SM + +#endif // defined(__SC_COMPATIBLE__) + +template +struct ap_int_base; + +template +struct ap_int; + +template +struct ap_uint; + +template +struct ap_range_ref; + +template +struct ap_bit_ref; + +template +struct ap_concat_ref; + +template +struct ap_fixed_base; + +template +struct ap_fixed; + +template +struct ap_ufixed; + +template +struct af_range_ref; + +template +struct af_bit_ref; + +/// string base mode +enum BaseMode { AP_BIN = 2, AP_OCT = 8, AP_DEC = 10, AP_HEX = 16 }; + +#ifndef SYSTEMC_INCLUDED +#define SC_BIN 2 +#define SC_OCT 8 +#define SC_DEC 10 +#define SC_HEX 16 +#endif // !defined(SYSTEMC_INCLUDED) + +// Alias C data types +#if defined(_MSC_VER) && _MSC_VER < 1900 +// Legacy tool before Visual Studio 2015 +typedef signed __int64 ap_slong; +typedef unsigned __int64 ap_ulong; +#else +typedef signed long long ap_slong; +typedef unsigned long long ap_ulong; +#endif // _MSC_VER + +enum { + _AP_SIZE_char = 8, + _AP_SIZE_short = sizeof(short) * 8, + _AP_SIZE_int = sizeof(int) * 8, + _AP_SIZE_long = sizeof(long) * 8, + _AP_SIZE_ap_slong = sizeof(ap_slong) * 8 +}; + +#endif // !defined(__AP_DECL_H__) + +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 diff --git a/vitis/v2020_1/ap_fixed.h b/vitis/v2020_1/ap_fixed.h new file mode 100644 index 00000000..b6fe1d50 --- /dev/null +++ b/vitis/v2020_1/ap_fixed.h @@ -0,0 +1,402 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_FIXED_H__ +#define __AP_FIXED_H__ + +#include "ap_common.h" +#include "ap_fixed_base.h" +#include "ap_fixed_ref.h" + +//--------------------------------------------------------------- + +/// Signed Arbitrary Precision Fixed-Point Type. +// default for _AP_Q, _AP_O and _AP_N set in ap_decl.h +template +struct ap_fixed : ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> { + typedef ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> Base; + // Constructor + /// default ctor + INLINE ap_fixed() : Base() {} + + /// copy ctor from ap_fixed_base. + template + INLINE ap_fixed(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_fixed(const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + //// from ap_fixed + //template + //INLINE ap_fixed( + // const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //template + //INLINE ap_fixed( + // const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //// from ap_ufixed. + //template + //INLINE ap_fixed( + // const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + //template + //INLINE ap_fixed( + // const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + /// copy ctor from ap_int_base. + template + INLINE ap_fixed(const ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_fixed(const volatile ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_fixed(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + } +#endif +#endif + + //// from ap_int. + //template + //INLINE ap_fixed(const ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //template + //INLINE ap_fixed(const volatile ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //// from ap_uint. + //template + //INLINE ap_fixed(const ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + //template + //INLINE ap_fixed(const volatile ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + // from ap_bit_ref. + template + INLINE ap_fixed(const ap_bit_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + // from ap_range_ref. + template + INLINE ap_fixed(const ap_range_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + // from ap_concat_ref. + template + INLINE ap_fixed(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op) + : Base(op) {} + + // from af_bit_ref. + template + INLINE ap_fixed( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + // from af_range_ref. + template + INLINE ap_fixed( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +// from c types. +#define CTOR(TYPE) \ + INLINE ap_fixed(TYPE v) : Base(v) {} + + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) + CTOR(half) + CTOR(float) + CTOR(double) +#undef CTOR + + INLINE ap_fixed(const char* s) : Base(s) {} + + INLINE ap_fixed(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + // The assignment operator is technically inherited; however, it is always + // hidden by an explicitly or implicitly defined assignment operator for the + // derived class. + /* XXX ctor will be used when right is not of proper type. */ + INLINE ap_fixed& operator=( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + + INLINE void operator=( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) volatile { + Base::V = op.V; + } + + INLINE ap_fixed& operator=( + const volatile ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + + INLINE void operator=( + const volatile ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) volatile { + Base::V = op.V; + } +}; // struct ap_fixed. + +//------------------------------------------------------------------- + +// Unsigned Arbitrary Precision Fixed-Point Type. +// default for _AP_Q, _AP_O and _AP_N set in ap_decl.h +template +struct ap_ufixed : ap_fixed_base<_AP_W, _AP_I, false, _AP_Q, _AP_O, _AP_N> { + typedef ap_fixed_base<_AP_W, _AP_I, false, _AP_Q, _AP_O, _AP_N> Base; + // Constructor + /// default ctor + INLINE ap_ufixed() : Base() {} + + /// copy ctor from ap_fixed_base + template + INLINE ap_ufixed(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + /// copy ctor from ap_fixed_base + template + INLINE ap_ufixed(const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + //template + //INLINE ap_ufixed( + // const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //template + //INLINE ap_ufixed( + // const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //template + //INLINE ap_ufixed( + // const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + //template + //INLINE ap_ufixed( + // const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + /// copy ctor from ap_int_base. + template + INLINE ap_ufixed(const ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_ufixed(const volatile ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_ufixed(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + } +#endif +#endif + + //template + //INLINE ap_ufixed(const ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //template + //INLINE ap_ufixed(const volatile ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //template + //INLINE ap_ufixed(const ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + //template + //INLINE ap_ufixed(const volatile ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + template + INLINE ap_ufixed(const ap_bit_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_ufixed(const ap_range_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_ufixed(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op) + : Base(op) {} + + template + INLINE ap_ufixed( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_ufixed( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +#define CTOR(TYPE) \ + INLINE ap_ufixed(TYPE v) : Base(v) {} + + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) + CTOR(half) + CTOR(float) + CTOR(double) +#undef CTOR + + INLINE ap_ufixed(const char* s) : Base(s) {} + + INLINE ap_ufixed(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + INLINE ap_ufixed& operator=( + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + + INLINE void operator=( + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) volatile { + Base::V = op.V; + } + + INLINE ap_ufixed& operator=( + const volatile ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + + INLINE void operator=(const volatile ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, + _AP_N>& op) volatile { + Base::V = op.V; + } +}; // struct ap_ufixed + + +#if !defined(__SYNTHESIS__) && (defined(SYSTEMC_H) || defined(SYSTEMC_INCLUDED)) +// XXX sc_trace overload for ap_fixed is already included in +// "ap_sysc/ap_sc_extras.h", so do not define in synthesis. +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op, + const std::string& name) { + tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} + +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op, + const std::string& name) { + tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} +#endif // System C sim + +// Specialization of std containers, so that std::complex can have its +// image part automatically zero-initialized when only real part is provided. +#include "ap_fixed_special.h" + +#endif // ifndef __AP_FIXED_H__ else + +// -*- cpp -*- diff --git a/vitis/v2020_1/ap_fixed_base.h b/vitis/v2020_1/ap_fixed_base.h new file mode 100644 index 00000000..68b96bda --- /dev/null +++ b/vitis/v2020_1/ap_fixed_base.h @@ -0,0 +1,2385 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_FIXED_BASE_H__ +#define __AP_FIXED_BASE_H__ + +#ifndef __AP_FIXED_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +// for ap_int_base and its reference types. +#include "ap_int.h" +#ifndef __SYNTHESIS__ +// for half type +#include "hls_half.h" +// for std io +#include +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" +#else // __cplusplus + +// for warning on unsupported rounding mode in conversion to float/double. +#if !defined(__SYNTHESIS__) && __cplusplus >= 201103L && \ + (defined(__gnu_linux__) || defined(_WIN32)) +#define AP_FIXED_ENABLE_CPP_FENV 1 +#include +#endif + +// ---------------------------------------------------------------------- + +/* Major TODO + long double support: constructor, assign and other operators. + binary operators with ap_fixed_base and const char*. + return ap_fixed/ap_ufixed when result signedness is known. +*/ + +// Helper function in conversion to floating point types. + +#ifdef __SYNTHESIS__ +#define _AP_ctype_op_get_bit(var, index) _AP_ROOT_op_get_bit(var, index) +#define _AP_ctype_op_set_bit(var, index, x) _AP_ROOT_op_set_bit(var, index, x) +#define _AP_ctype_op_get_range(var, low, high) \ + _AP_ROOT_op_get_range(var, low, high) +#define _AP_ctype_op_set_range(var, low, high, x) \ + _AP_ROOT_op_set_range(var, low, high, x) +#else // ifdef __SYNTHESIS__ +template +inline bool _AP_ctype_op_get_bit(_Tp1& var, const _Tp2& index) { + return !!(var & (1ull << (index))); +} +template +inline _Tp1 _AP_ctype_op_set_bit(_Tp1& var, const _Tp2& index, const _Tp3& x) { + var |= (((x) ? 1ull : 0ull) << (index)); + return var; +} +template +inline _Tp1 _AP_ctype_op_get_range(_Tp1& var, const _Tp2& low, + const _Tp3& high) { + _Tp1 r = var; + ap_ulong mask = -1ll; + mask >>= (sizeof(_Tp1) * 8 - ((high) - (low) + 1)); + r >>= (low); + r &= mask; + return r; +} +template +inline _Tp1 _AP_ctype_op_set_range(_Tp1& var, const _Tp2& low, const _Tp3& high, + const _Tp4& x) { + ap_ulong mask = -1ll; + mask >>= (_AP_SIZE_ap_slong - ((high) - (low) + 1)); + var &= ~(mask << (low)); + var |= ((mask & x) << (low)); + return var; +} +#endif // ifdef __SYNTHESIS__ + + +// trait for letting base class to return derived class. +// Notice that derived class template is incomplete, and we cannot use +// the member of the derived class. +template +struct _ap_fixed_factory; +template +struct _ap_fixed_factory<_AP_W2, _AP_I2, true> { + typedef ap_fixed<_AP_W2, _AP_I2> type; +}; +template +struct _ap_fixed_factory<_AP_W2, _AP_I2, false> { + typedef ap_ufixed<_AP_W2, _AP_I2> type; +}; + +/// ap_fixed_base: AutoPilot fixed point. +/** partial specialization of signed. + @tparam _AP_W width. + @tparam _AP_I integral part width. + @tparam _AP_S signed. + @tparam _AP_Q quantization mode. Default is AP_TRN. + @tparam _AP_O saturation mode. Default is AP_WRAP. + @tparam _AP_N saturation wrap value. Default is 0. + */ +// default for _AP_Q, _AP_O and _AP_N set in ap_decl.h +template +struct ap_fixed_base : _AP_ROOT_TYPE<_AP_W, _AP_S> { + public: + typedef _AP_ROOT_TYPE<_AP_W, _AP_S> Base; + static const int width = _AP_W; + static const int iwidth = _AP_I; + static const ap_q_mode qmode = _AP_Q; + static const ap_o_mode omode = _AP_O; + + /// Return type trait. + template + struct RType { + enum { + _AP_F = _AP_W - _AP_I, + F2 = _AP_W2 - _AP_I2, + mult_w = _AP_W + _AP_W2, + mult_i = _AP_I + _AP_I2, + mult_s = _AP_S || _AP_S2, + plus_w = AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + + 1 + AP_MAX(_AP_F, F2), + plus_i = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + 1 + + AP_MAX(_AP_F, F2), + minus_i = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, +#ifndef __SC_COMPATIBLE__ + div_w = _AP_S2 + _AP_W + AP_MAX(F2, 0), +#else + div_w = _AP_S2 + _AP_W + AP_MAX(F2, 0) + AP_MAX(_AP_I2, 0), +#endif + div_i = _AP_S2 + _AP_I + F2, + div_s = _AP_S || _AP_S2, + logic_w = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + + AP_MAX(_AP_F, F2), + logic_i = AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S> lhs; + typedef ap_fixed_base<_AP_W2, _AP_I2, _AP_S2> rhs; + + typedef ap_fixed_base mult_base; + typedef ap_fixed_base plus_base; + typedef ap_fixed_base minus_base; + typedef ap_fixed_base logic_base; + typedef ap_fixed_base div_base; + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S> arg1_base; + + typedef typename _ap_fixed_factory::type mult; + typedef typename _ap_fixed_factory::type plus; + typedef typename _ap_fixed_factory::type minus; + typedef typename _ap_fixed_factory::type logic; + typedef typename _ap_fixed_factory::type div; + typedef typename _ap_fixed_factory<_AP_W, _AP_I, _AP_S>::type arg1; + }; + + private: +#ifndef __SYNTHESIS__ + // This cannot handle hex float format string. + void fromString(const std::string& val, unsigned char radix) { + _AP_ERROR(!(radix == 2 || radix == 8 || radix == 10 || radix == 16), + "ap_fixed_base::fromString(%s, %d)", val.c_str(), radix); + + Base::V = 0; + int startPos = 0; + int endPos = val.length(); + int decPos = val.find("."); + if (decPos == -1) decPos = endPos; + + // handle sign + bool isNegative = false; + if (val[0] == '-') { + isNegative = true; + ++startPos; + } else if (val[0] == '+') + ++startPos; + + // If there are no integer bits, e.g.: + // .0000XXXX, then keep at least one bit. + // If the width is greater than the number of integer bits, e.g.: + // XXXX.XXXX, then we keep the integer bits + // if the number of integer bits is greater than the width, e.g.: + // XXX000 then we keep the integer bits. + // Always keep one bit. + ap_fixed_base + integer_bits = 0; + + // Figure out if we can shift instead of multiply + unsigned shift = (radix == 16 ? 4 : radix == 8 ? 3 : radix == 2 ? 1 : 0); + + //std::cout << "\n\n" << val << "\n"; + //std::cout << startPos << " " << decPos << " " << endPos << "\n"; + + bool sticky_int = false; + + // Traverse the integer digits from the MSD, multiplying by radix as we go. + for (int i = startPos; i < decPos; i++) { + // Get a digit + char cdigit = val[i]; + if (cdigit == '\0') continue; + unsigned digit = ap_private_ops::decode_digit(cdigit, radix); + + sticky_int |= integer_bits[AP_MAX(_AP_I, 4) + 4 - 1] | + integer_bits[AP_MAX(_AP_I, 4) + 4 - 2] | + integer_bits[AP_MAX(_AP_I, 4) + 4 - 3] | + integer_bits[AP_MAX(_AP_I, 4) + 4 - 4]; + // Shift or multiply the value by the radix + if (shift) + integer_bits <<= shift; + else + integer_bits *= radix; + + // Add in the digit we just interpreted + integer_bits += digit; + //std::cout << "idigit = " << digit << " " << integer_bits.to_string() + // << " " << sticky_int << "\n"; + } + integer_bits[AP_MAX(_AP_I, 4) + 4 - 3] = + integer_bits[AP_MAX(_AP_I, 4) + 4 - 3] | sticky_int; + + ap_fixed_base fractional_bits = 0; + bool sticky = false; + + // Traverse the fractional digits from the LSD, dividing by radix as we go. + for (int i = endPos - 1; i >= decPos + 1; i--) { + // Get a digit + char cdigit = val[i]; + if (cdigit == '\0') continue; + unsigned digit = ap_private_ops::decode_digit(cdigit, radix); + // Add in the digit we just interpreted + fractional_bits += digit; + + sticky |= fractional_bits[0] | fractional_bits[1] | fractional_bits[2] | + fractional_bits[3]; + // Shift or divide the value by the radix + if (shift) + fractional_bits >>= shift; + else + fractional_bits /= radix; + + //std::cout << "fdigit = " << digit << " " << fractional_bits.to_string() + // << " " << sticky << "\n"; + } + + //std::cout << "Int =" << integer_bits.to_string() << " " << + // fractional_bits.to_string() << "\n"; + + fractional_bits[0] = fractional_bits[0] | sticky; + + if (isNegative) + *this = -(integer_bits + fractional_bits); + else + *this = integer_bits + fractional_bits; + + //std::cout << "end = " << this->to_string(16) << "\n"; + } + + /// report invalid constrction of ap_fixed_base + INLINE void report() { + if (!_AP_S && _AP_O == AP_WRAP_SM) { + fprintf(stderr, "ap_ufxied<...> cannot support AP_WRAP_SM.\n"); + exit(1); + } + if (_AP_W > MAX_MODE(AP_INT_MAX_W) * 1024) { + fprintf(stderr, + "[E] ap_%sfixed<%d, ...>: Bitwidth exceeds the " + "default max value %d. Please use macro " + "AP_INT_MAX_W to set a larger max value.\n", + _AP_S ? "" : "u", _AP_W, MAX_MODE(AP_INT_MAX_W) * 1024); + exit(1); + } + } +#else + INLINE void report() {} +#endif // ifdef __SYNTHESIS__ + + /// @name helper functions. + // @{ + INLINE void overflow_adjust(bool underflow, bool overflow, bool lD, + bool sign) { + if (!underflow && !overflow) return; + if (_AP_O == AP_WRAP) { + if (_AP_N == 0) return; + if (_AP_S) { + // signed AP_WRAP + // n_bits == 1 + Base::V = _AP_ROOT_op_set_bit(Base::V, _AP_W - 1, sign); + if (_AP_N > 1) { + // n_bits > 1 + ap_int_base<_AP_W, false> mask(-1); + if (sign) mask.V = 0; + Base::V = + _AP_ROOT_op_set_range(Base::V, _AP_W - _AP_N, _AP_W - 2, mask.V); + } + } else { + // unsigned AP_WRAP + ap_int_base<_AP_W, false> mask(-1); + Base::V = + _AP_ROOT_op_set_range(Base::V, _AP_W - _AP_N, _AP_W - 1, mask.V); + } + } else if (_AP_O == AP_SAT_ZERO) { + Base::V = 0; + } else if (_AP_O == AP_WRAP_SM && _AP_S) { + bool Ro = _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + if (_AP_N == 0) { + if (lD != Ro) { + Base::V = ~Base::V; + Base::V = _AP_ROOT_op_set_bit(Base::V, _AP_W - 1, lD); + } + } else { + if (_AP_N == 1 && sign != Ro) { + Base::V = ~Base::V; + } else if (_AP_N > 1) { + bool lNo = _AP_ROOT_op_get_bit(Base::V, _AP_W - _AP_N); + if (lNo == sign) Base::V = ~Base::V; + ap_int_base<_AP_W, false> mask(-1); + if (sign) mask.V = 0; + Base::V = + _AP_ROOT_op_set_range(Base::V, _AP_W - _AP_N, _AP_W - 2, mask.V); + } + Base::V = _AP_ROOT_op_set_bit(Base::V, _AP_W - 1, sign); + } + } else { + if (_AP_S) { + if (overflow) { + Base::V = 1; + Base::V <<= _AP_W - 1; + Base::V = ~Base::V; + } else if (underflow) { + Base::V = 1; + Base::V <<= _AP_W - 1; + if (_AP_O == AP_SAT_SYM) Base::V |= 1; + } + } else { + if (overflow) + Base::V = ~(ap_int_base<_AP_W, false>(0).V); + else if (underflow) + Base::V = 0; + } + } + } + + INLINE bool quantization_adjust(bool qb, bool r, bool s) { + bool carry = (bool)_AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + if (_AP_Q == AP_TRN) return false; + if (_AP_Q == AP_RND_ZERO) + qb &= s || r; + else if (_AP_Q == AP_RND_MIN_INF) + qb &= r; + else if (_AP_Q == AP_RND_INF) + qb &= !s || r; + else if (_AP_Q == AP_RND_CONV) + qb &= _AP_ROOT_op_get_bit(Base::V, 0) || r; + else if (_AP_Q == AP_TRN_ZERO) + qb = s && (qb || r); + Base::V += qb; + return carry && (!(bool)_AP_ROOT_op_get_bit(Base::V, _AP_W - 1)); + } + // @} + + public: + /// @name constructors. + // @{ + /// default ctor. + INLINE ap_fixed_base() {} + + /// copy ctor. + template + INLINE ap_fixed_base( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + operator=(op); + report(); + } + + template + INLINE ap_fixed_base( + const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + operator=(op); + report(); + } + + template + INLINE ap_fixed_base(const ap_int_base<_AP_W2, _AP_S2>& op) { + ap_fixed_base<_AP_W2, _AP_W2, _AP_S2> tmp; + tmp.V = op.V; + operator=(tmp); + report(); + } + + template + INLINE ap_fixed_base(const volatile ap_int_base<_AP_W2, _AP_S2>& op) { + ap_fixed_base<_AP_W2, _AP_W2, _AP_S2> tmp; + tmp.V = op.V; + operator=(tmp); + report(); + } + +#ifndef __SYNTHESIS__ +#ifndef NON_C99STRING + INLINE ap_fixed_base(const char* s, signed char rd = 0) { + unsigned char radix = rd; + std::string str = ap_private_ops::parseString(s, radix); // will guess rd, default 10 + _AP_ERROR(radix == 0, "ap_fixed_base(const char* \"%s\", %d), str=%s, radix = %d", + s, rd, str.c_str(), radix); // TODO remove this check + fromString(str, radix); + } +#else + INLINE ap_fixed_base(const char* s, signed char rd = 10) { + ap_int_base<_AP_W, _AP_S> t(s, rd); + Base::V = t.V; + } +#endif // ifndef NON_C99STRING +#else // ifndef __SYNTHESIS__ + // XXX _ssdm_string2bits only takes const string and const radix. + // It seems XFORM will do compile time processing of the string. + INLINE ap_fixed_base(const char* s) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), 10, _AP_I, _AP_S, _AP_Q, + _AP_O, _AP_N, _AP_C99); + Base::V = t; + } + INLINE ap_fixed_base(const char* s, signed char rd) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), rd, _AP_I, _AP_S, _AP_Q, + _AP_O, _AP_N, _AP_C99); + Base::V = t; + } +#endif // ifndef __SYNTHESIS__ else + + template + INLINE ap_fixed_base(const ap_bit_ref<_AP_W2, _AP_S2>& op) { + *this = ((bool)op); + report(); + } + + template + INLINE ap_fixed_base(const ap_range_ref<_AP_W2, _AP_S2>& op) { + *this = (ap_int_base<_AP_W2, false>(op)); + report(); + } + + template + INLINE ap_fixed_base( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op) { + *this = (ap_int_base<_AP_W2 + _AP_W3, false>(op)); + report(); + } + + template + INLINE ap_fixed_base( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + *this = (bool(op)); + report(); + } + + template + INLINE ap_fixed_base( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + *this = (ap_int_base<_AP_W2, false>(op)); + report(); + } + + // ctors from c types. + // make a temp ap_fixed_base first, and use ap_fixed_base.operator= +#define CTOR_FROM_INT(C_TYPE, _AP_W2, _AP_S2) \ + INLINE ap_fixed_base(const C_TYPE x) { \ + ap_fixed_base<(_AP_W2), (_AP_W2), (_AP_S2)> tmp; \ + tmp.V = x; \ + *this = tmp; \ + } + + CTOR_FROM_INT(bool, 1, false) + CTOR_FROM_INT(char, 8, CHAR_IS_SIGNED) + CTOR_FROM_INT(signed char, 8, true) + CTOR_FROM_INT(unsigned char, 8, false) + CTOR_FROM_INT(short, _AP_SIZE_short, true) + CTOR_FROM_INT(unsigned short, _AP_SIZE_short, false) + CTOR_FROM_INT(int, _AP_SIZE_int, true) + CTOR_FROM_INT(unsigned int, _AP_SIZE_int, false) + CTOR_FROM_INT(long, _AP_SIZE_long, true) + CTOR_FROM_INT(unsigned long, _AP_SIZE_long, false) + CTOR_FROM_INT(ap_slong, _AP_SIZE_ap_slong, true) + CTOR_FROM_INT(ap_ulong, _AP_SIZE_ap_slong, false) +#undef CTOR_FROM_INT +/* + * TODO: + *Theere used to be several funtions which were AP_WEAK. + *Now they're all INLINE expect ap_fixed_base(double d) + *Maybe we can use '#pragma HLS inline' instead of INLINE. + */ + AP_WEAK ap_fixed_base(double d) { + ap_int_base<64, false> ireg; + ireg.V = doubleToRawBits(d); + bool isneg = _AP_ROOT_op_get_bit(ireg.V, 63); + + ap_int_base exp; + ap_int_base exp_tmp; + exp_tmp.V = + _AP_ROOT_op_get_range(ireg.V, DOUBLE_MAN, DOUBLE_MAN + DOUBLE_EXP - 1); + exp = exp_tmp - DOUBLE_BIAS; + ap_int_base man; + man.V = _AP_ROOT_op_get_range(ireg.V, 0, DOUBLE_MAN - 1); + // do not support NaN + _AP_WARNING(exp == APFX_IEEE_DOUBLE_E_MAX + 1 && man.V != 0, + "assign NaN to fixed point value"); + man.V = _AP_ROOT_op_set_bit(man.V, DOUBLE_MAN, 1); + if (isneg) man = -man; + if ((ireg.V & 0x7fffffffffffffffLL) == 0) { + Base::V = 0; + } else { + int _AP_W2 = DOUBLE_MAN + 2, _AP_I2 = exp.V + 2, _AP_F = _AP_W - _AP_I, + F2 = _AP_W2 - _AP_I2; + bool _AP_S2 = true, + QUAN_INC = F2 > _AP_F && + !(_AP_Q == AP_TRN || (_AP_Q == AP_TRN_ZERO && !_AP_S2)); + bool carry = false; + // handle quantization + unsigned sh_amt = (F2 > _AP_F) ? F2 - _AP_F : _AP_F - F2; + if (F2 == _AP_F) + Base::V = man.V; + else if (F2 > _AP_F) { + if (sh_amt < DOUBLE_MAN + 2) + Base::V = man.V >> sh_amt; + else { + Base::V = isneg ? -1 : 0; + } + if ((_AP_Q != AP_TRN) && !((_AP_Q == AP_TRN_ZERO) && !_AP_S2)) { + bool qb = (F2 - _AP_F > _AP_W2) ? isneg : (bool)_AP_ROOT_op_get_bit( + man.V, F2 - _AP_F - 1); + bool r = + (F2 > _AP_F + 1) + ? _AP_ROOT_op_get_range(man.V, 0, (F2 - _AP_F - 2 < _AP_W2) + ? (F2 - _AP_F - 2) + : (_AP_W2 - 1)) != 0 + : false; + carry = quantization_adjust(qb, r, isneg); + } + } else { // no quantization + Base::V = man.V; + if (sh_amt < _AP_W) + Base::V = Base::V << sh_amt; + else + Base::V = 0; + } + // handle overflow/underflow + if ((_AP_O != AP_WRAP || _AP_N != 0) && + ((!_AP_S && _AP_S2) || + _AP_I - _AP_S < + _AP_I2 - _AP_S2 + + (QUAN_INC || + (_AP_S2 && (_AP_O == AP_SAT_SYM))))) { // saturation + bool deleted_zeros = _AP_S2 ? true : !carry, deleted_ones = true; + bool neg_src = isneg; + bool lD = false; + int pos1 = F2 - _AP_F + _AP_W; + int pos2 = F2 - _AP_F + _AP_W + 1; + bool newsignbit = _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + if (pos1 < _AP_W2 && pos1 >= 0) + // lD = _AP_ROOT_op_get_bit(man.V, pos1); + lD = (man.V >> pos1) & 1; + if (pos1 < _AP_W2) { + bool Range1_all_ones = true; + bool Range1_all_zeros = true; + bool Range2_all_ones = true; + ap_int_base Range2; + ap_int_base all_ones(-1); + + if (pos2 >= 0 && pos2 < _AP_W2) { + // Range2.V = _AP_ROOT_op_get_range(man.V, + // pos2, _AP_W2 - 1); + Range2.V = man.V; + Range2.V >>= pos2; + Range2_all_ones = Range2 == (all_ones >> pos2); + } else if (pos2 < 0) + Range2_all_ones = false; + if (pos1 >= 0 && pos2 < _AP_W2) { + Range1_all_ones = Range2_all_ones && lD; + Range1_all_zeros = !Range2.V && !lD; + } else if (pos2 == _AP_W2) { + Range1_all_ones = lD; + Range1_all_zeros = !lD; + } else if (pos1 < 0) { + Range1_all_zeros = !man.V; + Range1_all_ones = false; + } + + deleted_zeros = + deleted_zeros && (carry ? Range1_all_ones : Range1_all_zeros); + deleted_ones = + carry ? Range2_all_ones && (pos1 < 0 || !lD) : Range1_all_ones; + neg_src = isneg && !(carry && Range1_all_ones); + } else + neg_src = isneg && newsignbit; + bool neg_trg = _AP_S && newsignbit; + bool overflow = (neg_trg || !deleted_zeros) && !isneg; + bool underflow = (!neg_trg || !deleted_ones) && neg_src; + if ((_AP_O == AP_SAT_SYM) && _AP_S2 && _AP_S) + underflow |= + neg_src && + (_AP_W > 1 ? _AP_ROOT_op_get_range(Base::V, 0, _AP_W - 2) == 0 + : true); + overflow_adjust(underflow, overflow, lD, neg_src); + } + } + report(); + } + + // TODO more optimized implementation. + INLINE ap_fixed_base(float d) { *this = ap_fixed_base(double(d)); } + + // TODO more optimized implementation. + INLINE ap_fixed_base(half d) { *this = ap_fixed_base(double(d)); } + // @} + + /// @name assign operator + /// assign, using another ap_fixed_base of same template parameters. + /* + INLINE ap_fixed_base& operator=( + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + */ + + template + INLINE ap_fixed_base& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + + const int _AP_F = _AP_W - _AP_I; + const int F2 = _AP_W2 - _AP_I2; + const int QUAN_INC = + F2 > _AP_F && !(_AP_Q == AP_TRN || (_AP_Q == AP_TRN_ZERO && !_AP_S2)); + + if (!op) Base::V = 0; + bool carry = false; + bool signbit = _AP_ROOT_op_get_bit(op.V, _AP_W2 - 1); + bool isneg = signbit && _AP_S2; + if (F2 == _AP_F) + Base::V = op.V; + else if (F2 > _AP_F) { + unsigned int sh_amt = F2 - _AP_F; + // moves bits right, handle quantization. + if (sh_amt < _AP_W2) { + Base::V = op.V >> sh_amt; + } else { + Base::V = isneg ? -1 : 0; + } + if (_AP_Q != AP_TRN && !(_AP_Q == AP_TRN_ZERO && !_AP_S2)) { + bool qbit = _AP_ROOT_op_get_bit(op.V, F2 - _AP_F - 1); + // bit after LSB. + bool qb = (F2 - _AP_F > _AP_W2) ? _AP_S2 && signbit : qbit; + enum { hi = ((F2 - _AP_F - 2) < _AP_W2) ? (F2 - _AP_F - 2) : (_AP_W2 - 1) }; + // bits after qb. + bool r = (F2 > _AP_F + 1) ? (_AP_ROOT_op_get_range(op.V, 0, hi) != 0) : false; + carry = quantization_adjust(qb, r, isneg); + } + } else { + unsigned sh_amt = _AP_F - F2; + // moves bits left, no quantization + if (sh_amt < _AP_W) { + if (_AP_W > _AP_W2) { + // extend and then shift, avoid losing bits. + Base::V = op.V; + Base::V <<= sh_amt; + } else { + // shift and truncate. + Base::V = op.V << sh_amt; + } + } else { + Base::V = 0; + } + } + // handle overflow/underflow + if ((_AP_O != AP_WRAP || _AP_N != 0) && + ((!_AP_S && _AP_S2) || + _AP_I - _AP_S < + _AP_I2 - _AP_S2 + + (QUAN_INC || (_AP_S2 && _AP_O == AP_SAT_SYM)))) { // saturation + bool deleted_zeros = _AP_S2 ? true : !carry; + bool deleted_ones = true; + bool neg_src = isneg; + bool newsignbit = _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + enum { pos1 = F2 - _AP_F + _AP_W, pos2 = F2 - _AP_F + _AP_W + 1 }; + bool lD = (pos1 < _AP_W2 && pos1 >= 0) ? _AP_ROOT_op_get_bit(op.V, pos1) + : false; + if (pos1 < _AP_W2) { + bool Range1_all_ones = true; + bool Range1_all_zeros = true; + bool Range2_all_ones = true; + ap_int_base<_AP_W2, false> all_ones(-1); + + if (pos2 < _AP_W2 && pos2 >= 0) { + ap_int_base<_AP_W2, false> Range2; + Range2.V = _AP_ROOT_op_get_range(op.V, pos2, _AP_W2 - 1); + Range2_all_ones = Range2 == (all_ones >> pos2); + } else if (pos2 < 0) { + Range2_all_ones = false; + } + + if (pos1 >= 0 && pos2 < _AP_W2) { + ap_int_base<_AP_W2, false> Range1; + Range1.V = _AP_ROOT_op_get_range(op.V, pos1, _AP_W2 - 1); + Range1_all_ones = Range1 == (all_ones >> pos1); + Range1_all_zeros = !Range1.V; + } else if (pos2 == _AP_W2) { + Range1_all_ones = lD; + Range1_all_zeros = !lD; + } else if (pos1 < 0) { + Range1_all_zeros = !op.V; + Range1_all_ones = false; + } + + deleted_zeros = + deleted_zeros && (carry ? Range1_all_ones : Range1_all_zeros); + deleted_ones = + carry ? Range2_all_ones && (pos1 < 0 || !lD) : Range1_all_ones; + neg_src = isneg && !(carry && Range1_all_ones); + } else + neg_src = isneg && newsignbit; + bool neg_trg = _AP_S && newsignbit; + bool overflow = (neg_trg || !deleted_zeros) && !isneg; + bool underflow = (!neg_trg || !deleted_ones) && neg_src; + if ((_AP_O == AP_SAT_SYM) && _AP_S2 && _AP_S) + underflow |= + neg_src && + (_AP_W > 1 ? _AP_ROOT_op_get_range(Base::V, 0, _AP_W - 2) == 0 + : true); + + overflow_adjust(underflow, overflow, lD, neg_src); + } + return *this; + } // operator= + + template + INLINE ap_fixed_base& operator=( + const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + operator=(const_cast&>(op)); + return *this; + } + + /// Set this ap_fixed_base with ULL. + INLINE ap_fixed_base& setBits(ap_ulong bv) { + // TODO when ull is not be long enough... + Base::V = bv; + return *this; + } + + /// Return a ap_fixed_base object whose this->V is assigned by bv. + static INLINE ap_fixed_base bitsToFixed(ap_ulong bv) { + // TODO fix when ull is not be long enough... + ap_fixed_base t; +#ifdef __SYNTHESIS__ + t.V = bv; +#else + t.V.set_bits(bv); +#endif + return t; + } + + // Explicit conversion functions to ap_int_base. + /** Captures all integer bits, in truncate mode. + * @param[in] Cnative follow conversion from double to int. + */ + INLINE ap_int_base to_ap_int_base( + bool Cnative = true) const { + ap_int_base ret; + if (_AP_I == 0) { + ret.V = 0; + } else if (_AP_I > 0 && _AP_I <= _AP_W) { + ret.V = _AP_ROOT_op_get_range(Base::V, _AP_W - _AP_I, _AP_W - 1); + } else if (_AP_I > _AP_W) { + ret.V = _AP_ROOT_op_get_range(Base::V, 0, _AP_W - 1); + ret.V <<= (_AP_I - _AP_W); + } + /* Consider the following case + * float f = -7.5f; + * ap_fixed<8,4> t = f; // -8 0 0 0 . 0.5 + * int i = t.to_int(); + * the result should be -7 instead of -8. + * Therefore, after truncation, the value should be increated by 1. + * For (-1, 0), carry to MSB will happen, but result 0 is still correct. + */ + if (Cnative && _AP_I < _AP_W) { + // Follow C native data type, conversion from double to int + if (_AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1) && (_AP_I < _AP_W) && + (_AP_ROOT_op_get_range( + Base::V, 0, _AP_I < 0 ? _AP_W - 1 : _AP_W - _AP_I - 1) != 0)) + ++ret; + } else { + // Follow OSCI library, conversion from sc_fixed to sc_int + } + return ret; + }; + + public: + template + INLINE operator ap_int_base<_AP_W2, _AP_S2>() const { + return ap_int_base<_AP_W2, _AP_S2>(to_ap_int_base()); + } + + // Explicit conversion function to C built-in integral type. + INLINE char to_char() const { return to_ap_int_base().to_char(); } + + INLINE int to_int() const { return to_ap_int_base().to_int(); } + + INLINE unsigned to_uint() const { return to_ap_int_base().to_uint(); } + + INLINE ap_slong to_int64() const { return to_ap_int_base().to_int64(); } + + INLINE ap_ulong to_uint64() const { return to_ap_int_base().to_uint64(); } + + /// covert function to double. + /** only round-half-to-even mode supported, does not obey FE env. */ + INLINE double to_double() const { +#if defined(AP_FIXED_ENABLE_CPP_FENV) + _AP_WARNING(std::fegetround() != FE_TONEAREST, + "Only FE_TONEAREST is supported"); +#endif + enum { BITS = DOUBLE_MAN + DOUBLE_EXP + 1 }; + if (!Base::V) return 0.0f; + bool s = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); ///< sign. + ap_int_base<_AP_W, false> tmp; + if (s) + tmp.V = -Base::V; // may truncate one bit extra from neg in sim. + else + tmp.V = Base::V; + int l = tmp.countLeadingZeros(); ///< number of leading zeros. + int e = _AP_I - l - 1 + DOUBLE_BIAS; ///< exponent + int lsb_index = _AP_W - l - 1 - DOUBLE_MAN; + // more than 0.5? + bool a = (lsb_index >=2) ? + (_AP_ROOT_op_get_range(tmp.V, 0, lsb_index - 2) != 0) : 0; + // round to even + a |= (lsb_index >=0) ? _AP_ROOT_op_get_bit(tmp.V, lsb_index) : 0; + // ull is at least 64-bit + ap_ulong m; + // may actually left shift, ensure buffer is wide enough. + if (_AP_W > BITS) { + m = (lsb_index >= 1) ? (ap_ulong)(tmp.V >> (lsb_index - 1)) + : (ap_ulong)(tmp.V << (1 - lsb_index)); + } else { + m = (ap_ulong)tmp.V; + m = (lsb_index >= 1) ? (m >> (lsb_index - 1)) + : (m << (1 - lsb_index)); + } + m += a; + m >>= 1; + //std::cout << '\n' << std::hex << m << '\n'; // TODO delete this + // carry to MSB, increase exponent + if (_AP_ctype_op_get_bit(m, DOUBLE_MAN + 1)) { + e += 1; + } + // set sign and exponent + m = _AP_ctype_op_set_bit(m, BITS - 1, s); + //std::cout << m << '\n'; // TODO delete this + m = _AP_ctype_op_set_range(m, DOUBLE_MAN, DOUBLE_MAN + DOUBLE_EXP - 1, e); + //std::cout << std::hex << m << std::dec << std::endl; // TODO delete this + // cast to fp + return rawBitsToDouble(m); + } + + /// convert function to float. + /** only round-half-to-even mode supported, does not obey FE env. */ + INLINE float to_float() const { +#if defined(AP_FIXED_ENABLE_CPP_FENV) + _AP_WARNING(std::fegetround() != FE_TONEAREST, + "Only FE_TONEAREST is supported"); +#endif + enum { BITS = FLOAT_MAN + FLOAT_EXP + 1 }; + if (!Base::V) return 0.0f; + bool s = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); ///< sign. + ap_int_base<_AP_W, false> tmp; + if (s) + tmp.V = -Base::V; // may truncate one bit extra from neg in sim. + else + tmp.V = Base::V; + int l = tmp.countLeadingZeros(); ///< number of leading zeros. + int e = _AP_I - l - 1 + FLOAT_BIAS; ///< exponent + int lsb_index = _AP_W - l - 1 - FLOAT_MAN; + // more than 0.5? + bool a = (lsb_index >=2) ? + (_AP_ROOT_op_get_range(tmp.V, 0, lsb_index - 2) != 0) : 0; + // round to even + a |= (lsb_index >=0) ? _AP_ROOT_op_get_bit(tmp.V, lsb_index) : 0; + // ul is at least 32-bit + unsigned long m; + // may actually left shift, ensure buffer is wide enough. + if (_AP_W > BITS) { + m = (lsb_index >= 1) ? (unsigned long)(tmp.V >> (lsb_index - 1)) + : (unsigned long)(tmp.V << (1 - lsb_index)); + } else { + m = (unsigned long)tmp.V; + m = (lsb_index >= 1) ? (m >> (lsb_index - 1)) + : (m << (1 - lsb_index)); + } + m += a; + m >>= 1; + // carry to MSB, increase exponent + if (_AP_ctype_op_get_bit(m, FLOAT_MAN + 1)) { + e += 1; + } + // set sign and exponent + m = _AP_ctype_op_set_bit(m, BITS - 1, s); + m = _AP_ctype_op_set_range(m, FLOAT_MAN, FLOAT_MAN + FLOAT_EXP - 1, e); + // cast to fp + return rawBitsToFloat(m); + } + + /// convert function to half. + /** only round-half-to-even mode supported, does not obey FE env. */ + INLINE half to_half() const { +#if defined(AP_FIXED_ENABLE_CPP_FENV) + _AP_WARNING(std::fegetround() != FE_TONEAREST, + "Only FE_TONEAREST is supported"); +#endif + enum { BITS = HALF_MAN + HALF_EXP + 1 }; + if (!Base::V) return 0.0f; + bool s = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); ///< sign. + ap_int_base<_AP_W, false> tmp; + if (s) + tmp.V = -Base::V; // may truncate one bit extra from neg in sim. + else + tmp.V = Base::V; + int l = tmp.countLeadingZeros(); ///< number of leading zeros. + int e = _AP_I - l - 1 + HALF_BIAS; ///< exponent + int lsb_index = _AP_W - l - 1 - HALF_MAN; + // more than 0.5? + bool a = (lsb_index >=2) ? + (_AP_ROOT_op_get_range(tmp.V, 0, lsb_index - 2) != 0) : 0; + // round to even + a |= (lsb_index >=0) ? _AP_ROOT_op_get_bit(tmp.V, lsb_index) : 0; + // short is at least 16-bit + unsigned short m; + // may actually left shift, ensure buffer is wide enough. + if (_AP_W > BITS) { + m = (lsb_index >= 1) ? (unsigned short)(tmp.V >> (lsb_index - 1)) + : (unsigned short)(tmp.V << (1 - lsb_index)); + } else { + m = (unsigned short)tmp.V; + m = (lsb_index >= 1) ? (m >> (lsb_index - 1)) + : (m << (1 - lsb_index)); + } + m += a; + m >>= 1; + // carry to MSB, increase exponent + if (_AP_ctype_op_get_bit(m, HALF_MAN + 1)) { + e += 1; + } + // set sign and exponent + m = _AP_ctype_op_set_bit(m, BITS - 1, s); + m = _AP_ctype_op_set_range(m, HALF_MAN, HALF_MAN + HALF_EXP - 1, e); + // cast to fp + return rawBitsToHalf(m); + } + + // FIXME inherited from old code, this may loose precision! + INLINE operator long double() const { return (long double)to_double(); } + + INLINE operator double() const { return to_double(); } + + INLINE operator float() const { return to_float(); } + + INLINE operator half() const { return to_half(); } + + INLINE operator bool() const { return (bool)Base::V != 0; } + + INLINE operator char() const { return (char)to_int(); } + + INLINE operator signed char() const { return (signed char)to_int(); } + + INLINE operator unsigned char() const { return (unsigned char)to_uint(); } + + INLINE operator short() const { return (short)to_int(); } + + INLINE operator unsigned short() const { return (unsigned short)to_uint(); } + + INLINE operator int() const { return to_int(); } + + INLINE operator unsigned int() const { return to_uint(); } + +// FIXME don't assume data width... +#ifdef __x86_64__ + INLINE operator long() const { return (long)to_int64(); } + + INLINE operator unsigned long() const { return (unsigned long)to_uint64(); } +#else + INLINE operator long() const { return (long)to_int(); } + + INLINE operator unsigned long() const { return (unsigned long)to_uint(); } +#endif // ifdef __x86_64__ else + + INLINE operator ap_ulong() const { return to_uint64(); } + + INLINE operator ap_slong() const { return to_int64(); } + + INLINE int length() const { return _AP_W; }; + + // bits_to_int64 deleted. +#ifndef __SYNTHESIS__ + // Used in autowrap, when _AP_W < 64. + INLINE ap_ulong bits_to_uint64() const { + return (Base::V).to_uint64(); + } +#endif + + // Count the number of zeros from the most significant bit + // to the first one bit. Note this is only for ap_fixed_base whose + // _AP_W <= 64, otherwise will incur assertion. + INLINE int countLeadingZeros() { +#ifdef __SYNTHESIS__ + // TODO: used llvm.ctlz intrinsic ? + if (_AP_W <= 32) { + ap_int_base<32, false> t(-1ULL); + t.range(_AP_W - 1, 0) = this->range(0, _AP_W - 1); + return __builtin_ctz(t.V); + } else if (_AP_W <= 64) { + ap_int_base<64, false> t(-1ULL); + t.range(_AP_W - 1, 0) = this->range(0, _AP_W - 1); + return __builtin_ctzll(t.V); + } else { + enum {__N = (_AP_W + 63) / 64}; + int NZeros = 0; + int i = 0; + bool hitNonZero = false; + for (i = 0; i < __N - 1; ++i) { + ap_int_base<64, false> t; + t.range(0, 63) = this->range(_AP_W - i * 64 - 64, _AP_W - i * 64 - 1); + NZeros += hitNonZero ? 0 : __builtin_clzll(t.V); + hitNonZero |= (t != 0); + } + if (!hitNonZero) { + ap_int_base<64, false> t(-1ULL); + t.range(63 - (_AP_W - 1) % 64, 63) = this->range(0, (_AP_W - 1) % 64); + NZeros += __builtin_clzll(t.V); + } + return NZeros; + } +#else + return Base::V.countLeadingZeros(); +#endif + } + + // Arithmetic : Binary + // ------------------------------------------------------------------------- + template + INLINE typename RType<_AP_W2, _AP_I2, _AP_S2>::mult operator*( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) + const { + typename RType<_AP_W2, _AP_I2, _AP_S2>::mult_base r, t; + r.V = Base::V; + t.V = op2.V; + r.V *= op2.V; + return r; + } + + // multiply function deleted. + + template + INLINE typename RType<_AP_W2, _AP_I2, _AP_S2>::div operator/( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) + const { + typename RType<_AP_W2, _AP_I2, _AP_S2>::div_base r; +#ifndef __SYNTHESIS__ + enum {F2 = _AP_W2-_AP_I2, + _W1=AP_MAX(_AP_W + AP_MAX(F2, 0) + ((_AP_S2 && !_AP_S) ? 1 : 0), _AP_W2 + ((_AP_S && !_AP_S2) ? 1 : 0))}; + ap_int_base<_W1,_AP_S||_AP_S2> dividend,divisior; + ap_int_base<_W1,_AP_S> tmp1; + ap_int_base<_W1,_AP_S2> tmp2; + tmp1.V = Base::V; + tmp1.V <<= AP_MAX(F2,0); + tmp2.V = op2.V; + dividend = tmp1; + divisior = tmp2; + r.V = ((_AP_S||_AP_S2) ? dividend.V.sdiv(divisior.V): dividend.V.udiv(divisior.V)); +#else + #ifndef __SC_COMPATIBLE__ + ap_fixed_base<_AP_W + AP_MAX(_AP_W2 - _AP_I2, 0),_AP_I, _AP_S> t(*this); + #else + ap_fixed_base<_AP_W + AP_MAX(_AP_W2 - _AP_I2, 0) + AP_MAX(_AP_I2, 0),_AP_I, _AP_S> t(*this); + #endif + r.V = t.V / op2.V; +#endif +/* + enum { + F2 = _AP_W2 - _AP_I2, + shl = AP_MAX(F2, 0) + AP_MAX(_AP_I2, 0), +#ifndef __SC_COMPATIBLE__ + shr = AP_MAX(_AP_I2, 0), +#else + shr = 0, +#endif + W3 = _AP_S2 + _AP_W + shl, + S3 = _AP_S || _AP_S2, + }; + ap_int_base dividend, t; + dividend.V = Base::V; + // multiply both by (1 << F2), and than do integer division. + dividend.V <<= (int) shl; +#ifdef __SYNTHESIS__ + // .V's have right signedness, and will have right extending. + t.V = dividend.V / op2.V; +#else + // XXX op2 may be wider than dividend, and sdiv and udiv takes the same with + // as left hand operand, so data might be truncated by mistake if not + // handled here. + t.V = S3 ? dividend.V.sdiv(op2.V) : dividend.V.udiv(op2.V); +#endif + r.V = t.V >> (int) shr; +*/ + return r; + } + +#define OP_BIN_AF(Sym, Rty) \ + template \ + INLINE typename RType<_AP_W2, _AP_I2, _AP_S2>::Rty operator Sym( \ + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& \ + op2) const { \ + typename RType<_AP_W2, _AP_I2, _AP_S2>::Rty##_base ret, lhs(*this), \ + rhs(op2); \ + ret.V = lhs.V Sym rhs.V; \ + return ret; \ + } + + OP_BIN_AF(+, plus) + OP_BIN_AF(-, minus) + OP_BIN_AF(&, logic) + OP_BIN_AF(|, logic) + OP_BIN_AF(^, logic) + +// Arithmetic : assign +// ------------------------------------------------------------------------- +#define OP_ASSIGN_AF(Sym) \ + template \ + INLINE ap_fixed_base& operator Sym##=( \ + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& \ + op2) { \ + *this = operator Sym(op2); \ + return *this; \ + } + + OP_ASSIGN_AF(*) + OP_ASSIGN_AF(/) + OP_ASSIGN_AF(+) + OP_ASSIGN_AF(-) + OP_ASSIGN_AF(&) + OP_ASSIGN_AF(|) + OP_ASSIGN_AF(^) + + // Prefix and postfix increment and decrement. + // ------------------------------------------------------------------------- + + /// Prefix increment + INLINE ap_fixed_base& operator++() { + operator+=(ap_fixed_base<_AP_W - _AP_I + 1, 1, false>(1)); + return *this; + } + + /// Prefix decrement. + INLINE ap_fixed_base& operator--() { + operator-=(ap_fixed_base<_AP_W - _AP_I + 1, 1, false>(1)); + return *this; + } + + /// Postfix increment + INLINE const ap_fixed_base operator++(int) { + ap_fixed_base r(*this); + operator++(); + return r; + } + + /// Postfix decrement + INLINE const ap_fixed_base operator--(int) { + ap_fixed_base r(*this); + operator--(); + return r; + } + + // Unary arithmetic. + // ------------------------------------------------------------------------- + INLINE ap_fixed_base operator+() { return *this; } + + INLINE ap_fixed_base<_AP_W + 1, _AP_I + 1, true> operator-() const { + ap_fixed_base<_AP_W + 1, _AP_I + 1, true> r(*this); + r.V = -r.V; + return r; + } + + INLINE ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> getNeg() { + ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> r(*this); + r.V = -r.V; + return r; + } + + // Not (!) + // ------------------------------------------------------------------------- + INLINE bool operator!() const { return Base::V == 0; } + + // Bitwise complement + // ------------------------------------------------------------------------- + // XXX different from Mentor's ac_fixed. + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S> operator~() const { + ap_fixed_base<_AP_W, _AP_I, _AP_S> r; + r.V = ~Base::V; + return r; + } + + // Shift + // ------------------------------------------------------------------------- + // left shift is the same as moving point right, i.e. increate I. + template + INLINE ap_fixed_base<_AP_W, _AP_I + _AP_SHIFT, _AP_S> lshift() const { + ap_fixed_base<_AP_W, _AP_I + _AP_SHIFT, _AP_S> r; + r.V = Base::V; + return r; + } + + template + INLINE ap_fixed_base<_AP_W, _AP_I - _AP_SHIFT, _AP_S> rshift() const { + ap_fixed_base<_AP_W, _AP_I - _AP_SHIFT, _AP_S> r; + r.V = Base::V; + return r; + } + + // Because the return type is the type of the the first operand, shift assign + // operators do not carry out any quantization or overflow + // While systemc, shift assigns for sc_fixed/sc_ufixed will result in + // quantization or overflow (depending on the mode of the first operand) + INLINE ap_fixed_base operator<<(unsigned int sh) const { + ap_fixed_base r; + r.V = Base::V << sh; +// TODO check shift overflow? +#ifdef __SC_COMPATIBLE__ + if (sh == 0) return r; + if (_AP_O != AP_WRAP || _AP_N != 0) { + bool neg_src = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + bool allones, allzeros; + ap_int_base<_AP_W, false> ones(-1); + if (sh <= _AP_W) { + ap_int_base<_AP_W, false> range1; + range1.V = _AP_ROOT_op_get_range( + const_cast(this)->Base::V, _AP_W - sh, _AP_W - 1); + allones = range1 == (ones >> (_AP_W - sh)); + allzeros = range1 == 0; + } else { + allones = false; + allzeros = Base::V == 0; + } + bool overflow = !allzeros && !neg_src; + bool underflow = !allones && neg_src; + if ((_AP_O == AP_SAT_SYM) && _AP_S) + underflow |= + neg_src && + (_AP_W > 1 ? _AP_ROOT_op_get_range(r.V, 0, _AP_W - 2) == 0 : true); + bool lD = false; + if (sh < _AP_W) lD = _AP_ROOT_op_get_bit(Base::V, _AP_W - sh - 1); + r.overflow_adjust(underflow, overflow, lD, neg_src); + } +#endif + return r; + } + + INLINE ap_fixed_base operator>>(unsigned int sh) const { + ap_fixed_base r; + r.V = Base::V >> sh; +// TODO check shift overflow? +#ifdef __SC_COMPATIBLE__ + if (sh == 0) return r; + if (_AP_Q != AP_TRN) { + bool qb = false; + if (sh <= _AP_W) qb = _AP_ROOT_op_get_bit(Base::V, sh - 1); + bool rb = false; + if (sh > 1 && sh <= _AP_W) + rb = _AP_ROOT_op_get_range(const_cast(this)->Base::V, 0, + sh - 2) != 0; + else if (sh > _AP_W) + rb = Base::V != 0; + r.quantization_adjust(qb, rb, + _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1)); + } +#endif + return r; + } + + // left and right shift for int + INLINE ap_fixed_base operator<<(int sh) const { + ap_fixed_base r; + bool isNeg = sh < 0; + unsigned int ush = isNeg ? -sh : sh; + if (isNeg) { + return operator>>(ush); + } else { + return operator<<(ush); + } + } + + INLINE ap_fixed_base operator>>(int sh) const { + bool isNeg = sh < 0; + unsigned int ush = isNeg ? -sh : sh; + if (isNeg) { + return operator<<(ush); + } else { + return operator>>(ush); + } + } + + // left and right shift for ap_int. + template + INLINE ap_fixed_base operator<<(const ap_int_base<_AP_W2, true>& op2) const { + // TODO the code seems not optimal. ap_fixed<8,8> << ap_int<2> needs only a + // small mux, but integer need a big one! + int sh = op2.to_int(); + return operator<<(sh); + } + + template + INLINE ap_fixed_base operator>>(const ap_int_base<_AP_W2, true>& op2) const { + int sh = op2.to_int(); + return operator>>(sh); + } + + // left and right shift for ap_uint. + template + INLINE ap_fixed_base operator<<(const ap_int_base<_AP_W2, false>& op2) const { + unsigned int sh = op2.to_uint(); + return operator<<(sh); + } + + template + INLINE ap_fixed_base operator>>(const ap_int_base<_AP_W2, false>& op2) const { + unsigned int sh = op2.to_uint(); + return operator>>(sh); + } + + // left and right shift for ap_fixed + template + INLINE ap_fixed_base operator<<( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + op2) { + return operator<<(op2.to_ap_int_base()); + } + + template + INLINE ap_fixed_base operator>>( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + op2) { + return operator>>(op2.to_ap_int_base()); + } + + // Shift assign. + // ------------------------------------------------------------------------- + + // left shift assign. + INLINE ap_fixed_base& operator<<=(const int sh) { + *this = operator<<(sh); + return *this; + } + + INLINE ap_fixed_base& operator<<=(const unsigned int sh) { + *this = operator<<(sh); + return *this; + } + + template + INLINE ap_fixed_base& operator<<=(const ap_int_base<_AP_W2, _AP_S2>& sh) { + *this = operator<<(sh.to_int()); + return *this; + } + + template + INLINE ap_fixed_base& operator<<=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + sh) { + *this = operator<<(sh.to_int()); + return *this; + } + + // right shift assign. + INLINE ap_fixed_base& operator>>=(const int sh) { + *this = operator>>(sh); + return *this; + } + + INLINE ap_fixed_base& operator>>=(const unsigned int sh) { + *this = operator>>(sh); + return *this; + } + + template + INLINE ap_fixed_base& operator>>=(const ap_int_base<_AP_W2, _AP_S2>& sh) { + *this = operator>>(sh.to_int()); + return *this; + } + + template + INLINE ap_fixed_base& operator>>=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + sh) { + *this = operator>>(sh.to_int()); + return *this; + } + +// Comparisons. +// ------------------------------------------------------------------------- +#define OP_CMP_AF(Sym) \ + template \ + INLINE bool operator Sym(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, \ + _AP_O2, _AP_N2>& op2) const { \ + enum { _AP_F = _AP_W - _AP_I, F2 = _AP_W2 - _AP_I2 }; \ + if (_AP_F == F2) \ + return Base::V Sym op2.V; \ + else if (_AP_F > F2) \ + return Base::V Sym ap_fixed_base(op2).V; \ + else \ + return ap_fixed_base(*this).V Sym op2.V; \ + return false; \ + } + + OP_CMP_AF(>) + OP_CMP_AF(<) + OP_CMP_AF(>=) + OP_CMP_AF(<=) + OP_CMP_AF(==) + OP_CMP_AF(!=) +// FIXME: Move compare with double out of struct ap_fixed_base defination +// and combine it with compare operator(double, ap_fixed_base) +#define DOUBLE_CMP_AF(Sym) \ + INLINE bool operator Sym(double d) const { return to_double() Sym d; } + + DOUBLE_CMP_AF(>) + DOUBLE_CMP_AF(<) + DOUBLE_CMP_AF(>=) + DOUBLE_CMP_AF(<=) + DOUBLE_CMP_AF(==) + DOUBLE_CMP_AF(!=) + + // Bit and Slice Select + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator[]( + unsigned index) { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, index); + } + + template + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator[]( + const ap_int_base<_AP_W2, _AP_S2>& index) { + _AP_WARNING(index < 0, "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, + index.to_int()); + } + + INLINE bool operator[](unsigned index) const { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, index); + } + + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> bit( + unsigned index) { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, index); + } + + template + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> bit( + const ap_int_base<_AP_W2, _AP_S2>& index) { + _AP_WARNING(index < 0, "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, + index.to_int()); + } + + INLINE bool bit(unsigned index) const { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, index); + } + + template + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> get_bit( + const ap_int_base<_AP_W2, true>& index) { + _AP_WARNING(index < _AP_I - _AP_W, + "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>( + this, index.to_int() + _AP_W - _AP_I); + } + + INLINE bool get_bit(int index) const { + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + _AP_WARNING(index < _AP_I - _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, + index + _AP_W - _AP_I); + } +#if 0 + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> get_bit( + int index) { + _AP_WARNING(index < _AP_I - _AP_W, + "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>( + this, index + _AP_W - _AP_I); + } +#endif + + template + INLINE bool get_bit(const ap_int_base<_AP_W2, true>& index) const { + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + _AP_WARNING(index < _AP_I - _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, + index.to_int() + _AP_W - _AP_I); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range(int Hi, + int Lo) { + _AP_WARNING((Hi >= _AP_W) || (Lo >= _AP_W), "Out of bounds in range()"); + return af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, Hi, Lo); + } + + // This is a must to strip constness to produce reference type. + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range( + int Hi, int Lo) const { + _AP_WARNING((Hi >= _AP_W) || (Lo >= _AP_W), "Out of bounds in range()"); + return af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>( + const_cast(this), Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range() { + return this->range(_AP_W - 1, 0); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range() const { + return this->range(_AP_W - 1, 0); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + int Hi, int Lo) { + return this->range(Hi, Lo); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + int Hi, int Lo) const { + return this->range(Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE bool is_zero() const { return Base::V == 0; } + + INLINE bool is_neg() const { + if (_AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1)) return true; + return false; + } + + INLINE int wl() const { return _AP_W; } + + INLINE int iwl() const { return _AP_I; } + + INLINE ap_q_mode q_mode() const { return _AP_Q; } + + INLINE ap_o_mode o_mode() const { return _AP_O; } + + INLINE int n_bits() const { return _AP_N; } + + // print a string representation of this number in the given radix. + // Radix support is 2, 8, 10, or 16. + // The result will include a prefix indicating the radix, except for decimal, + // where no prefix is needed. The default is to output a signed representation + // of signed numbers, or an unsigned representation of unsigned numbers. For + // non-decimal formats, this can be changed by the 'sign' argument. +#ifndef __SYNTHESIS__ + std::string to_string(unsigned char radix = 2, bool sign = _AP_S) const { + // XXX in autosim/autowrap.tcl "(${name}).to_string(2).c_str()" is used to + // initialize sc_lv, which seems incapable of handling format "-0b". + if (radix == 2) sign = false; + + std::string str; + str.clear(); + char step = 0; + bool isNeg = sign && (Base::V < 0); + + // Extend to take care of the -MAX case. + ap_fixed_base<_AP_W + 1, _AP_I + 1> tmp(*this); + if (isNeg) { + tmp = -tmp; + str += '-'; + } + std::string prefix; + switch (radix) { + case 2: + prefix = "0b"; + step = 1; + break; + case 8: + prefix = "0o"; + step = 3; + break; + case 16: + prefix = "0x"; + step = 4; + break; + default: + break; + } + + if (_AP_I > 0) { + // Note we drop the quantization and rounding flags here. The + // integer part is always in range, and the fractional part we + // want to drop. Also, the number is always positive, because + // of the absolute value above. + ap_int_base int_part; + // [1] [ I ] d [ W - I ] + // | | | + // | W-I 0 + // W + int_part.V = _AP_ROOT_op_get_range( + tmp.V, _AP_W - _AP_I, _AP_W); + str += int_part.to_string(radix, false); + } else { + str += prefix; + str += '0'; + } + + ap_fixed_base frac_part = tmp; + + if (radix == 10) { + if (frac_part != 0) { + str += "."; + while (frac_part != 0) { + char digit = (frac_part * radix).to_char(); + str += static_cast(digit + '0'); + frac_part *= radix; + } + } + } else { + if (frac_part != 0) { + str += "."; + for (signed i = _AP_W - _AP_I - 1; i >= 0; i -= step) { + char digit = frac_part.range(i, AP_MAX(0, i - step + 1)).to_char(); + // If we have a partial bit pattern at the end, then we need + // to put it in the high-order bits of 'digit'. + int offset = AP_MIN(0, i - step + 1); + digit <<= -offset; + str += digit < 10 ? static_cast(digit + '0') + : static_cast(digit - 10 + 'a'); + } + if (radix == 16) + str += "p0"; // C99 Hex constants are required to have an exponent. + } + } + return str; + } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string(unsigned char radix = 2, bool sign = _AP_S) const { + return 0; + } +#endif +}; // struct ap_fixed_base. + +template +INLINE void b_not( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { + ret.V = ~op.V; +} + +template +INLINE void b_and( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + ret.V = op1.V & op2.V; +} + +template +INLINE void b_or( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + ret.V = op1.V | op2.V; +} + +template +INLINE void b_xor( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + ret.V = op1.V ^ op2.V; +} + +template +INLINE void neg( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + ap_fixed_base<_AP_W2 + !_AP_S2, _AP_I2 + !_AP_S2, true, _AP_Q2, _AP_O2, + _AP_N2> + t; + t.V = -op.V; + ret = t; +} + +template +INLINE void lshift( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op, + int i) { + enum { + F2 = _AP_W2 - _AP_I2, + _AP_I3 = AP_MAX(_AP_I, _AP_I2), + _AP_W3 = _AP_I3 + F2, + }; + // wide buffer + ap_fixed_base<_AP_W3, _AP_I3, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> t; + t.V = op.V; + t.V <<= i; // FIXME overflow? + // handle quantization and overflow + ret = t; +} + +template +INLINE void rshift( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op, + int i) { + enum { + F = _AP_W - _AP_I, + F2 = _AP_W2 - _AP_I2, + F3 = AP_MAX(F, F2), + _AP_W3 = _AP_I2 + F3, + sh = F - F2, + }; + // wide buffer + ap_fixed_base<_AP_W3, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> t; + t.V = op.V; + if (sh >= 0) + t.V <<= (int) sh; + t.V >>= i; + // handle quantization and overflow + ret = t; +} + +//// FIXME +//// These partial specialization ctors allow code like +//// char c = 'a'; +//// ap_fixed_base<8, 8, true> x(c); +//// but what bout ap_fixed_base<9, 9, true> y(c) ? +// + +#ifndef __SYNTHESIS__ +INLINE std::string scientificFormat(std::string& input) { + if (input.length() == 0) return input; + + size_t decPosition = input.find('.'); + if (decPosition == std::string::npos) decPosition = input.length(); + + size_t firstNonZeroPos = 0; + for (; input[firstNonZeroPos] > '9' || input[firstNonZeroPos] < '1'; + firstNonZeroPos++) + ; + + int exp; + if (firstNonZeroPos > decPosition) + exp = decPosition - firstNonZeroPos; + else + exp = decPosition - firstNonZeroPos - 1; + std::string expString = ""; + if (exp == 0) + ; + else if (exp < 0) { + expString += "e-"; + exp = -exp; + } else + expString += "e+"; + + if (exp < 10 && exp > 0) { + expString += '0'; + expString += (char)('0' + exp); + } else if (exp != 0) { + std::string tmp; + + std::ostringstream oss; + oss << exp; + + tmp = oss.str(); + expString += tmp; + } + + int lastNonZeroPos = (int)(input.length() - 1); + for (; lastNonZeroPos >= 0; --lastNonZeroPos) + if (input[lastNonZeroPos] <= '9' && input[lastNonZeroPos] > '0') break; + + std::string ans = ""; + ans += input[firstNonZeroPos]; + if (firstNonZeroPos != (size_t)lastNonZeroPos) { + ans += '.'; + for (int i = firstNonZeroPos + 1; i <= lastNonZeroPos; i++) + if (input[i] != '.') ans += input[i]; + } + + ans += expString; + return ans; +} + +INLINE std::string reduceToPrecision(std::string& input, int precision) { + bool isZero = true; + size_t inputLen = input.length(); + for (size_t i = 0; i < inputLen && isZero; i++) + if (input[i] != '.' && input[i] != '0') isZero = false; + if (isZero) return "0"; + + // Find the first valid number, skip '-' + int FirstNonZeroPos = 0; + int LastNonZeroPos = (int)inputLen - 1; + int truncBitPosition = 0; + size_t decPosition = input.find('.'); + for (; input[FirstNonZeroPos] < '1' || input[FirstNonZeroPos] > '9'; + FirstNonZeroPos++) + ; + + for (; input[LastNonZeroPos] < '1' || input[LastNonZeroPos] > '9'; + LastNonZeroPos--) + ; + + if (decPosition == std::string::npos) decPosition = inputLen; + // Count the valid number, to decide whether we need to truncate + if ((int)decPosition > LastNonZeroPos) { + if (LastNonZeroPos - FirstNonZeroPos + 1 <= precision) return input; + truncBitPosition = FirstNonZeroPos + precision; + } else if ((int)decPosition < FirstNonZeroPos) { // This is pure decimal + if (LastNonZeroPos - FirstNonZeroPos + 1 <= precision) { + if (FirstNonZeroPos - decPosition - 1 < 4) { + return input; + } else { + if (input[0] == '-') { + std::string tmp = input.substr(1, inputLen - 1); + return std::string("-") + scientificFormat(tmp); + } else + return scientificFormat(input); + } + } + truncBitPosition = FirstNonZeroPos + precision; + } else { + if (LastNonZeroPos - FirstNonZeroPos <= precision) return input; + truncBitPosition = FirstNonZeroPos + precision + 1; + } + + // duplicate the input string, we want to add "0" before the valid numbers + // This is easy for quantization, since we may change 9999 to 10000 + std::string ans = ""; + std::string dupInput = "0"; + if (input[0] == '-') { + ans += '-'; + dupInput += input.substr(1, inputLen - 1); + } else { + dupInput += input.substr(0, inputLen); + ++truncBitPosition; + } + + // Add 'carry' after truncation, if necessary + bool carry = dupInput[truncBitPosition] > '4'; + for (int i = truncBitPosition - 1; i >= 0 && carry; i--) { + if (dupInput[i] == '.') continue; + if (dupInput[i] == '9') + dupInput[i] = '0'; + else { + ++dupInput[i]; + carry = false; + } + } + + // bits outside precision range should be set to 0 + if (dupInput[0] == '1') + FirstNonZeroPos = 0; + else { + FirstNonZeroPos = 0; + while (dupInput[FirstNonZeroPos] < '1' || dupInput[FirstNonZeroPos] > '9') + ++FirstNonZeroPos; + } + + unsigned it = FirstNonZeroPos; + int NValidNumber = 0; + while (it < dupInput.length()) { + if (dupInput[it] == '.') { + ++it; + continue; + } + ++NValidNumber; + if (NValidNumber > precision) dupInput[it] = '0'; + ++it; + } + + // Here we wanted to adjust the truncate position and the value + decPosition = dupInput.find('.'); + if (decPosition == std::string::npos) // When this is integer + truncBitPosition = (int)dupInput.length(); + else + for (truncBitPosition = (int)(dupInput.length() - 1); truncBitPosition >= 0; + --truncBitPosition) { + if (dupInput[truncBitPosition] == '.') break; + if (dupInput[truncBitPosition] != '0') { + truncBitPosition++; + break; + } + } + + if (dupInput[0] == '1') + dupInput = dupInput.substr(0, truncBitPosition); + else + dupInput = dupInput.substr(1, truncBitPosition - 1); + + decPosition = dupInput.find('.'); + if (decPosition != std::string::npos) { + size_t it = 0; + for (it = decPosition + 1; dupInput[it] == '0'; it++) + ; + if (it - decPosition - 1 < 4) { + ans += dupInput; + return ans; + } else { + ans += scientificFormat(dupInput); + return ans; + } + } else if ((int)(dupInput.length()) <= precision) { + ans += dupInput; + return ans; + } + + ans += scientificFormat(dupInput); + return ans; +} + +template +INLINE void print( + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + if (_AP_I > 0) { + ap_int_base<_AP_I, _AP_S> p1; + p1.V = x.V >> (_AP_W - _AP_I); + print(p1.V); // print overlaod for .V should exit + } else { + printf("0"); + } + printf("."); + if (_AP_I < _AP_W) { + ap_int_base<_AP_W - _AP_I, false> p2; + p2.V = _AP_ROOT_op_get_range(x.V, 0, _AP_W - _AP_I); + print(p2.V, false); // print overlaod for .V should exit + } +} +#endif // ifndef __SYNTHESIS__ + +// XXX the following two functions have to exist in synthesis, +// as some old HLS Video Library code uses the ostream overload, +// although HLS will later delete I/O function call. + +/// Output streaming +//----------------------------------------------------------------------------- +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<( + std::ostream& out, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + // TODO support std::ios_base::fmtflags + unsigned width = out.width(); + unsigned precision = out.precision(); + char fill = out.fill(); + std::string str = x.to_string(10, _AP_S); + str = reduceToPrecision(str, precision); + if (width > str.length()) { + for (unsigned i = 0; i < width - str.length(); ++i) + out << fill; + } + out << str; + return out; +} +#endif // ifndef __SYNTHESIS__ + +/// Input streaming +// ----------------------------------------------------------------------------- +#ifndef __SYNTHESIS__ +template +INLINE std::istream& operator>>( + std::istream& in, + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + double d; + in >> d; + x = ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(d); + return in; +} +#endif +#endif // ifndef AP_AUTOCC + +/// Operators mixing Integers with ap_fixed_base +// ----------------------------------------------------------------------------- +#define AF_BIN_OP_WITH_INT_SF(BIN_OP, C_TYPE, _AP_W2, _AP_S2, RTYPE) \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator BIN_OP(ap_int_base<_AP_W2, _AP_S2>(i_op)); \ + } + +#define AF_BIN_OP_WITH_INT(BIN_OP, C_TYPE, _AP_W2, _AP_S2, RTYPE) \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator BIN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + C_TYPE i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator BIN_OP(op); \ + } + +#define AF_REL_OP_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator REL_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + template \ + INLINE bool operator REL_OP( \ + C_TYPE i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator REL_OP(op); \ + } + +#define AF_ASSIGN_OP_WITH_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& \ + operator ASSIGN_OP( \ + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator ASSIGN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } + +#define AF_ASSIGN_OP_WITH_INT_SF(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& \ + operator ASSIGN_OP( \ + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator ASSIGN_OP(ap_int_base<_AP_W2, _AP_S2>(i_op)); \ + } + +#define ALL_AF_OP_WITH_INT(C_TYPE, BITS, SIGN) \ + AF_BIN_OP_WITH_INT(+, C_TYPE, (BITS), (SIGN), plus) \ + AF_BIN_OP_WITH_INT(-, C_TYPE, (BITS), (SIGN), minus) \ + AF_BIN_OP_WITH_INT(*, C_TYPE, (BITS), (SIGN), mult) \ + AF_BIN_OP_WITH_INT(/, C_TYPE, (BITS), (SIGN), div) \ + AF_BIN_OP_WITH_INT(&, C_TYPE, (BITS), (SIGN), logic) \ + AF_BIN_OP_WITH_INT(|, C_TYPE, (BITS), (SIGN), logic) \ + AF_BIN_OP_WITH_INT(^, C_TYPE, (BITS), (SIGN), logic) \ + AF_BIN_OP_WITH_INT_SF(>>, C_TYPE, (BITS), (SIGN), lhs) \ + AF_BIN_OP_WITH_INT_SF(<<, C_TYPE, (BITS), (SIGN), lhs) \ + \ + AF_ASSIGN_OP_WITH_INT(+=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(-=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(*=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(/=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(&=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(|=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(^=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT_SF(>>=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT_SF(<<=, C_TYPE, (BITS), (SIGN)) \ + \ + AF_REL_OP_WITH_INT(>, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(<, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(>=, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(<=, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(==, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(!=, C_TYPE, (BITS), (SIGN)) + +ALL_AF_OP_WITH_INT(bool, 1, false) +ALL_AF_OP_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_AF_OP_WITH_INT(signed char, 8, true) +ALL_AF_OP_WITH_INT(unsigned char, 8, false) +ALL_AF_OP_WITH_INT(short, _AP_SIZE_short, true) +ALL_AF_OP_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_AF_OP_WITH_INT(int, _AP_SIZE_int, true) +ALL_AF_OP_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_AF_OP_WITH_INT(long, _AP_SIZE_long, true) +ALL_AF_OP_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_AF_OP_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_AF_OP_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef ALL_AF_OP_WITH_INT +#undef AF_BIN_OP_WITH_INT +#undef AF_BIN_OP_WITH_INT_SF +#undef AF_ASSIGN_OP_WITH_INT +#undef AF_ASSIGN_OP_WITH_INT_SF +#undef AF_REL_OP_WITH_INT + +/* + * ********************************************************************** + * TODO + * There is no operator defined with float/double/long double, so that + * code like + * ap_fixed<8,4> a = 1.5f; + * a += 0.5f; + * will fail in compilation. + * Operator with warning about conversion might be wanted. + * ********************************************************************** + */ + +#define AF_BIN_OP_WITH_AP_INT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>::template RType< \ + _AP_W, _AP_I, _AP_S>::RTYPE \ + operator BIN_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator BIN_OP(op); \ + } \ + \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& i_op) { \ + return op.operator BIN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } + +#define AF_REL_OP_WITH_AP_INT(REL_OP) \ + template \ + INLINE bool operator REL_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& i_op) { \ + return op.operator REL_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator REL_OP(op); \ + } + +#define AF_ASSIGN_OP_WITH_AP_INT(ASSIGN_OP) \ + template \ + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& \ + operator ASSIGN_OP( \ + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& i_op) { \ + return op.operator ASSIGN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + \ + template \ + INLINE ap_int_base<_AP_W2, _AP_S2>& operator ASSIGN_OP( \ + ap_int_base<_AP_W2, _AP_S2>& i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return i_op.operator ASSIGN_OP(op.to_ap_int_base()); \ + } + +AF_BIN_OP_WITH_AP_INT(+, plus) +AF_BIN_OP_WITH_AP_INT(-, minus) +AF_BIN_OP_WITH_AP_INT(*, mult) +AF_BIN_OP_WITH_AP_INT(/, div) +AF_BIN_OP_WITH_AP_INT(&, logic) +AF_BIN_OP_WITH_AP_INT(|, logic) +AF_BIN_OP_WITH_AP_INT(^, logic) + +#undef AF_BIN_OP_WITH_AP_INT + +AF_ASSIGN_OP_WITH_AP_INT(+=) +AF_ASSIGN_OP_WITH_AP_INT(-=) +AF_ASSIGN_OP_WITH_AP_INT(*=) +AF_ASSIGN_OP_WITH_AP_INT(/=) +AF_ASSIGN_OP_WITH_AP_INT(&=) +AF_ASSIGN_OP_WITH_AP_INT(|=) +AF_ASSIGN_OP_WITH_AP_INT(^=) + +#undef AF_ASSIGN_OP_WITH_AP_INT + +AF_REL_OP_WITH_AP_INT(==) +AF_REL_OP_WITH_AP_INT(!=) +AF_REL_OP_WITH_AP_INT(>) +AF_REL_OP_WITH_AP_INT(>=) +AF_REL_OP_WITH_AP_INT(<) +AF_REL_OP_WITH_AP_INT(<=) + +#undef AF_REL_OP_WITH_AP_INT + +// Relational Operators with double +template +INLINE bool operator==( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator==(op1); +} + +template +INLINE bool operator!=( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator!=(op1); +} + +template +INLINE bool operator>( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator<(op1); +} + +template +INLINE bool operator>=( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator<=(op1); +} + +template +INLINE bool operator<( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator>(op1); +} + +template +INLINE bool operator<=( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator>=(op1); +} + +#endif // ifndef __cplusplus else + +#endif // ifndef __AP_FIXED_BASE_H__ else + +// -*- cpp -*- + + diff --git a/vitis/v2020_1/ap_fixed_ref.h b/vitis/v2020_1/ap_fixed_ref.h new file mode 100644 index 00000000..218a5d69 --- /dev/null +++ b/vitis/v2020_1/ap_fixed_ref.h @@ -0,0 +1,755 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_FIXED_REF_H__ +#define __AP_FIXED_REF_H__ + +#ifndef __AP_FIXED_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" + +#else +#ifndef __SYNTHESIS__ +#include +#endif +/// Proxy class, which allows bit selection to be used as both rvalue (for +/// reading) and lvalue (for writing) +template +struct af_bit_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> ref_type; + ref_type& d_bv; + int d_index; + + public: + INLINE af_bit_ref( + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ref) + : d_bv(ref.d_bv), d_index(ref.d_index) { +#ifndef __SYNTHESIS__ + _AP_WARNING(d_index < 0, "Index of bit vector (%d) cannot be negative.", + d_index); + _AP_WARNING(d_index >= _AP_W, "Index of bit vector (%d) out of range (%d).", + d_index, _AP_W); +#endif + } + + INLINE af_bit_ref(ref_type* bv, int index = 0) : d_bv(*bv), d_index(index) {} + + INLINE af_bit_ref(const ref_type* bv, int index = 0) + : d_bv(*const_cast(bv)), d_index(index) {} + + /// convert operators. + INLINE operator bool() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + /// @name assign operators + // @{ + INLINE af_bit_ref& operator=(bool val) { + d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index, val); + return *this; + } + + // Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE af_bit_ref& operator=(const af_bit_ref& val) { + return operator=(bool(val)); + } + + template + INLINE af_bit_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=(bool(val)); + } + + template + INLINE af_bit_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=(bool(val)); + } + + template + INLINE af_bit_ref& operator=(const ap_int_base<_AP_W2, _AP_S2>& val) { + return operator=(val != 0); + } + + template + INLINE af_bit_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + return operator=(ap_int_base<_AP_W2, false>(val)); + } + + template + INLINE af_bit_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=(ap_int_base<_AP_W2, false>(val)); + } + + template + INLINE af_bit_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + return operator=(ap_int_base<_AP_W2 + _AP_W3, false>(val)); + } + // @} + + /// @name concatenate operators + // @{ + template + INLINE ap_concat_ref<1, af_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<1, af_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > operator,( + const ap_bit_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<1, af_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >(*this, + op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<1, af_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> >( + *this, op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &op) { + return ap_concat_ref<1, af_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >(*this, + op); + } + + template + INLINE ap_concat_ref< + 1, af_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &op) { + return ap_concat_ref< + 1, af_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, + op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &op) { + return ap_concat_ref<1, af_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + op)); + } + // @} + + /// @name comparison + // @{ + template + INLINE bool operator==( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + return get() == op.get(); + } + + template + INLINE bool operator!=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + return get() != op.get(); + } + // @} + + INLINE bool operator~() const { + bool bit = _AP_ROOT_op_get_bit(d_bv.V, d_index); + return bit ? false : true; + } + + INLINE bool get() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + INLINE int length() const { return 1; } + +#ifndef __SYNTHESIS__ + std::string to_string() const { return get() ? "1" : "0"; } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string() const { return 0; } +#endif +}; // struct af_bit_ref + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<( + std::ostream& os, + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + os << x.to_string(); + return os; +} +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_AUTOCC + +/// Range (slice) reference. +template +struct af_range_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> ref_type; + ref_type& d_bv; + int l_index; + int h_index; + + public: + /// copy ctor + INLINE af_range_ref( + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ref) + : d_bv(ref.d_bv), l_index(ref.l_index), h_index(ref.h_index) {} + + /// ctor from ap_fixed_base, higher and lower bound. + /** if h is less than l, the bits selected will be returned in reverse order. + */ + INLINE af_range_ref(ref_type* bv, int h, int l) + : d_bv(*bv), l_index(l), h_index(h) { +#ifndef __SYNTHESIS__ + _AP_WARNING(h < 0 || l < 0, + "Higher bound(%d) and lower(%d) bound cannot be negative.", h, + l); + _AP_WARNING(h >= _AP_W || l >= _AP_W, + "Higher bound(%d) or lower(%d) bound out of range.", h, l); + _AP_WARNING(h < l, "The bits selected will be returned in reverse order."); +#endif + } + + INLINE af_range_ref(const ref_type* bv, int h, int l) + : d_bv(*const_cast(bv)), l_index(l), h_index(h) { +#ifndef __SYNTHESIS__ + _AP_WARNING(h < 0 || l < 0, + "Higher bound(%d) and lower(%d) bound cannot be negative.", h, + l); + _AP_WARNING(h >= _AP_W || l >= _AP_W, + "Higher bound(%d) or lower(%d) bound out of range.", h, l); + _AP_WARNING(h < l, "The bits selected will be returned in reverse order."); +#endif + } + + /// @name assign operators + // @{ + +#define ASSIGN_CTYPE_TO_AF_RANGE(DATA_TYPE) \ + INLINE af_range_ref& operator=(const DATA_TYPE val) { \ + ap_int_base<_AP_W, false> loc(val); \ + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, loc.V); \ + return *this; \ + } + + ASSIGN_CTYPE_TO_AF_RANGE(bool) + ASSIGN_CTYPE_TO_AF_RANGE(char) + ASSIGN_CTYPE_TO_AF_RANGE(signed char) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned char) + ASSIGN_CTYPE_TO_AF_RANGE(short) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned short) + ASSIGN_CTYPE_TO_AF_RANGE(int) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned int) + ASSIGN_CTYPE_TO_AF_RANGE(long) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned long) + ASSIGN_CTYPE_TO_AF_RANGE(ap_slong) + ASSIGN_CTYPE_TO_AF_RANGE(ap_ulong) + ASSIGN_CTYPE_TO_AF_RANGE(half) + ASSIGN_CTYPE_TO_AF_RANGE(float) + ASSIGN_CTYPE_TO_AF_RANGE(double) +#undef ASSIGN_CTYPE_TO_AF_RANGE + + /// assgin using a string. XXX crucial for cosim. + INLINE af_range_ref& operator=(const char* val) { + const ap_int_base<_AP_W, false> tmp(val); // XXX figure out radix + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + return *this; + } + + /// assign from ap_int_base. + // NOTE Base of other assgin operators. + template + INLINE af_range_ref& operator=(const ap_int_base<_AP_W3, _AP_S3>& val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + return *this; + } + + /// assign from range reference to ap_int_base. + template + INLINE af_range_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + const ap_int_base<_AP_W2, false> tmp(val); + return operator=(tmp); + } + + /// assign from bit reference to ap_int_base.. + template + INLINE af_range_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + const ap_int_base<1, false> tmp((bool)val); + return operator=(tmp); + } + + /// assgin from ap_fixed_base. + template + INLINE af_range_ref& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + return *this; + } + + /// copy assgin. + // XXX This has to be explicit, otherwise it will be deleted, as d_bv is + // of reference type. + INLINE af_range_ref& operator=(const af_range_ref& val) { + ap_int_base<_AP_W, false> tmp(val); + return operator=(tmp); + } + + /// assign from range reference to ap_fixed_base. + template + INLINE af_range_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + ap_int_base<_AP_W2, false> tmp(val); + return operator=(tmp); + } + + /// assign from bit reference to ap_fixed_base. + template + INLINE af_range_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + ap_int_base<1, false> tmp((bool)val); + return operator=(tmp); + } + + /// assign from compound reference. + template + INLINE af_range_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + const ap_int_base<_AP_W2 + _AP_W3, false> tmp(val); + return operator=(tmp); + } + // @} + + /// @name comparison operators with ap_range_ref. + // @{ + template + INLINE bool operator==(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop == rop; + } + + template + INLINE bool operator!=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator==(op2)); + } + + template + INLINE bool operator<(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop < rop; + } + + template + INLINE bool operator>(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop > rop; + } + + template + INLINE bool operator<=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator>(op2)); + } + + template + INLINE bool operator>=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator<(op2)); + } + // @} + + /// @name comparison operators with af_range_ref. + // @{ + template + INLINE bool operator==( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop == rop; + } + + template + INLINE bool operator!=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + return !(operator==(op2)); + } + + template + INLINE bool operator<( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop < rop; + } + + template + INLINE bool operator>( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop > rop; + } + + template + INLINE bool operator<=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + return !(operator>(op2)); + } + + template + INLINE bool operator>=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + return !(operator<(op2)); + } + // @} + + /// @name concatenate operators. + /// @{ + /// concatenate with ap_int_base. + template + INLINE + ap_concat_ref<_AP_W, af_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<_AP_W, af_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, op); + } + + /// concatenate with ap_bit_ref. + template + INLINE ap_concat_ref<_AP_W, af_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(const ap_bit_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<_AP_W, af_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + /// concatenate with ap_bit_ref. + template + INLINE ap_concat_ref<_AP_W, af_range_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<_AP_W, af_range_ref, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + /// concatenate with ap_concat_ref. + template + INLINE ap_concat_ref<_AP_W, af_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &op) { + return ap_concat_ref<_AP_W, af_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + *this, const_cast&>(op)); + } + + /// concatenate with another af_range_ref. + template + INLINE + ap_concat_ref<_AP_W, af_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &op) { + return ap_concat_ref< + _AP_W, af_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + op)); + } + + /// concatenate with another af_bit_ref. + template + INLINE + ap_concat_ref<_AP_W, af_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &op) { + return ap_concat_ref< + _AP_W, af_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + op)); + } + // @} + + INLINE operator ap_ulong() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret.to_uint64(); + } + + INLINE operator ap_int_base<_AP_W, false>() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + INLINE ap_int_base<_AP_W, false> to_ap_int_base() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + // used in ap_fixed_base::to_string() + INLINE char to_char() const { + return (char)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE int to_int() const { + return (int)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned to_uint() const { + return (unsigned)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE long to_long() const { + return (long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned long to_ulong() const { + return (unsigned long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_slong to_int64() const { + return (ap_slong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_ulong to_uint64() const { + return (ap_ulong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_int_base<_AP_W, false> get() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + template + INLINE void set(const ap_int_base<_AP_W2, false>& val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + } + + INLINE int length() const { + return h_index >= l_index ? h_index - l_index + 1 : l_index - h_index + 1; + } + +#ifndef __SYNTHESIS__ + std::string to_string(signed char rd = 2) const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret.to_string(rd); + } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string(signed char rd = 2) const { + return 0; + } +#endif +}; // struct af_range_ref + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<( + std::ostream& os, + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + os << x.to_string(); + return os; +} +#endif +#endif // ifndef AP_AUTOCC + +#define AF_REF_REL_OP_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP( \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE op2) { \ + return ap_int_base<_AP_W, false>(op) \ + REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + C_TYPE op2, \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(op2) \ + REL_OP ap_int_base<_AP_W, false>(op); \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE op2) { \ + return bool(op) REL_OP op2; \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + C_TYPE op2, \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return op2 REL_OP bool(op); \ + } + +#define AF_REF_REL_OPS_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + AF_REF_REL_OP_WITH_INT(>, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(<, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(==, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(!=, C_TYPE, (_AP_W2), (_AP_S2)) + +AF_REF_REL_OPS_WITH_INT(bool, 1, false) +AF_REF_REL_OPS_WITH_INT(char, 8, CHAR_IS_SIGNED) +AF_REF_REL_OPS_WITH_INT(signed char, 8, true) +AF_REF_REL_OPS_WITH_INT(unsigned char, 8, false) +AF_REF_REL_OPS_WITH_INT(short, _AP_SIZE_short, true) +AF_REF_REL_OPS_WITH_INT(unsigned short, _AP_SIZE_short, false) +AF_REF_REL_OPS_WITH_INT(int, _AP_SIZE_int, true) +AF_REF_REL_OPS_WITH_INT(unsigned int, _AP_SIZE_int, false) +AF_REF_REL_OPS_WITH_INT(long, _AP_SIZE_long, true) +AF_REF_REL_OPS_WITH_INT(unsigned long, _AP_SIZE_long, false) +AF_REF_REL_OPS_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +AF_REF_REL_OPS_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef AF_REF_REL_OP_INT +#undef AF_REF_REL_OPS_WITH_INT + +#define AF_REF_REL_OP_WITH_AP_INT(REL_OP) \ + template \ + INLINE bool operator REL_OP( \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S>& op2) { \ + return ap_int_base<_AP_W, false>(op) REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& op2, \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return op2 REL_OP ap_int_base<_AP_W, false>(op); \ + } \ + template \ + INLINE bool operator REL_OP( \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<1, false>(op) REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& op2, \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return op2 REL_OP ap_int_base<1, false>(op); \ + } + +AF_REF_REL_OP_WITH_AP_INT(>) +AF_REF_REL_OP_WITH_AP_INT(<) +AF_REF_REL_OP_WITH_AP_INT(>=) +AF_REF_REL_OP_WITH_AP_INT(<=) +AF_REF_REL_OP_WITH_AP_INT(==) +AF_REF_REL_OP_WITH_AP_INT(!=) + +#endif // ifndef __cplusplus + +#endif // ifndef __AP_FIXED_REF_H__ + +// -*- cpp -*- + + diff --git a/vitis/v2020_1/ap_fixed_special.h b/vitis/v2020_1/ap_fixed_special.h new file mode 100644 index 00000000..d9db941c --- /dev/null +++ b/vitis/v2020_1/ap_fixed_special.h @@ -0,0 +1,260 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef AP_FIXED_SPECIAL_H +#define AP_FIXED_SPECIAL_H +#ifndef __SYNTHESIS__ +#include +#include +#endif +// FIXME AP_AUTOCC cannot handle many standard headers, so declare instead of +// include. +// #include +namespace std { +template class complex; +} + +/* + TODO: Modernize the code using C++11/C++14 + 1. constexpr http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0415r0.html + 2. move constructor +*/ + +namespace std { +/* + Specialize std::complex to zero initialization ap_fixed. + + To reduce the area cost, ap_fixed is not zero initialized, just like basic + types float or double. However, libstdc++ provides specialization for float, + double and long double, initializing image part to 0 when not specified. + + This has become a difficulty in switching legacy code from these C types to + ap_fixed. To ease the tranform of legacy code, we have to implement + specialization of std::complex<> for our type. + + As ap_fixed is a template, it is impossible to specialize only the methods + that causes default initialization of value type in std::complex<>. An + explicit full specialization of the template class has to be done, covering + all the member functions and operators of std::complex<> as specified + in standard 26.2.4 and 26.2.5. +*/ +template +class complex > { + public: + typedef ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> _Tp; + typedef _Tp value_type; + + // 26.2.4/1 + // Constructor without argument + // Default initialize, so that in dataflow, the variable is only written once. + complex() : _M_real(_Tp()), _M_imag(_Tp()) {} + // Constructor with ap_fixed. + // Zero initialize image part when not specified, so that `C(1) == C(1,0)` + complex(const _Tp &__r, const _Tp &__i = _Tp(0)) + : _M_real(__r), _M_imag(__i) {} + + // Constructor with another complex number + template + complex(const complex<_Up> &__z) : _M_real(__z.real()), _M_imag(__z.imag()) {} + +#if __cplusplus >= 201103L + const _Tp& real() const { return _M_real; } + const _Tp& imag() const { return _M_imag; } +#else + _Tp& real() { return _M_real; } + const _Tp& real() const { return _M_real; } + _Tp& imag() { return _M_imag; } + const _Tp& imag() const { return _M_imag; } +#endif + + void real(_Tp __val) { _M_real = __val; } + + void imag(_Tp __val) { _M_imag = __val; } + + // Assign this complex number with ap_fixed. + // Zero initialize image poarrt, so that `C c; c = 1; c == C(1,0);` + complex<_Tp> &operator=(const _Tp __t) { + _M_real = __t; + _M_imag = _Tp(0); + return *this; + } + + // 26.2.5/1 + // Add ap_fixed to this complex number. + complex<_Tp> &operator+=(const _Tp &__t) { + _M_real += __t; + return *this; + } + + // 26.2.5/3 + // Subtract ap_fixed from this complex number. + complex<_Tp> &operator-=(const _Tp &__t) { + _M_real -= __t; + return *this; + } + + // 26.2.5/5 + // Multiply this complex number by ap_fixed. + complex<_Tp> &operator*=(const _Tp &__t) { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + // Divide this complex number by ap_fixed. + complex<_Tp> &operator/=(const _Tp &__t) { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + // Assign complex number to this complex number. + template + complex<_Tp> &operator=(const complex<_Up> &__z) { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + // Add complex number to this. + template + complex<_Tp> &operator+=(const complex<_Up> &__z) { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + // Subtract complex number from this. + template + complex<_Tp> &operator-=(const complex<_Up> &__z) { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // Multiply this by complex number. + template + complex<_Tp> &operator*=(const complex<_Up> &__z) { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // Divide this by complex number. + template + complex<_Tp> &operator/=(const complex<_Up> &__z) { + complex<_Tp> cj (__z.real(), -__z.imag()); + complex<_Tp> a = (*this) * cj; + complex<_Tp> b = cj * __z; + _M_real = a.real() / b.real(); + _M_imag = a.imag() / b.real(); + return *this; + } + + private: + _Tp _M_real; + _Tp _M_imag; + +}; // class complex > + +/* + Non-member operations + These operations are not required by standard in 26.2.6, but libstdc++ + defines them for + float, double or long double's specialization. +*/ +// Compare complex number with ap_fixed. +template +inline bool operator==( + const complex > &__x, + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__y) { + return __x.real() == __y && + __x.imag() == 0; +} + +// Compare ap_fixed with complex number. +template +inline bool operator==( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__x, + const complex > &__y) { + return __x == __y.real() && + 0 == __y.imag(); +} + +// Compare complex number with ap_fixed. +template +inline bool operator!=( + const complex > &__x, + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__y) { + return __x.real() != __y || + __x.imag() != 0; +} + +// Compare ap_fixed with complex number. +template +inline bool operator!=( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__x, + const complex > &__y) { + return __x != __y.real() || + 0 != __y.imag(); +} + +} // namespace std + +#endif // ifndef AP_FIXED_SPECIAL_H + + diff --git a/vitis/v2020_1/ap_int.h b/vitis/v2020_1/ap_int.h new file mode 100644 index 00000000..e2dfdd95 --- /dev/null +++ b/vitis/v2020_1/ap_int.h @@ -0,0 +1,370 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_INT_H__ +#define __AP_INT_H__ + +#include "ap_common.h" +#include "ap_int_base.h" +#include "ap_int_ref.h" + +//--------------------------------------------------------------- + +/// Sign Arbitrary Precision Type. +template +struct ap_int : ap_int_base<_AP_W, true> { + typedef ap_int_base<_AP_W, true> Base; + // Constructor + INLINE ap_int() : Base() {} + template + INLINE ap_int(const ap_int<_AP_W2>& op) { + Base::V = op.V; + } + + template + INLINE ap_int(const volatile ap_int<_AP_W2>& op) { + Base::V = op.V; + } + + template + INLINE ap_int(const ap_uint<_AP_W2>& op) { + Base::V = op.V; + } + + template + INLINE ap_int(const volatile ap_uint<_AP_W2>& op) { + Base::V = op.V; + } + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_int(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + } +#endif +#endif + + template + INLINE ap_int(const ap_range_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_int(const ap_bit_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_int(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) + : Base(ref) {} + + template + INLINE ap_int(const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_int(const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_int( + const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_int( + const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_int(const ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + + template + INLINE ap_int( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_int( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_int( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +#define CTOR(TYPE) \ + INLINE ap_int(TYPE val) { Base::V = val; } + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) +#undef CTOR + ap_int(double val) : Base(val) {} + ap_int(float val) : Base(val) {} + ap_int(half val) : Base(val) {} + + // ap_int_base will guess radix if radix is not provided. + INLINE ap_int(const char* s) : Base(s) {} + + INLINE ap_int(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + /* ctor will be used when right is not of proper type. */ + + INLINE ap_int& operator=(const ap_int<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } + + /* cannot bind volatile reference to non-volatile type. */ + INLINE ap_int& operator=(const volatile ap_int<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } + + /* cannot return volatile *this. */ + INLINE void operator=(const ap_int<_AP_W>& op2) volatile { Base::V = op2.V; } + + INLINE void operator=(const volatile ap_int<_AP_W>& op2) volatile { + Base::V = op2.V; + } + +}; // struct ap_int. + +//--------------------------------------------------------------- + +/// Unsigned Arbitrary Precision Type. +template +struct ap_uint : ap_int_base<_AP_W, false> { + typedef ap_int_base<_AP_W, false> Base; + // Constructor + INLINE ap_uint() : Base() {} + template + INLINE ap_uint(const ap_uint<_AP_W2>& op) { + Base::V = op.V; + } + + template + INLINE ap_uint(const ap_int<_AP_W2>& op) { + Base::V = op.V; + } + + template + INLINE ap_uint(const volatile ap_uint<_AP_W2>& op) { + Base::V = op.V; + } + + template + INLINE ap_uint(const volatile ap_int<_AP_W2>& op) { + Base::V = op.V; + } + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_uint(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + } +#endif +#endif + + template + INLINE ap_uint(const ap_range_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_uint(const ap_bit_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_uint(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) + : Base(ref) {} + + template + INLINE ap_uint(const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_uint(const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_uint( + const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_uint( + const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_uint(const ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + + template + INLINE ap_uint( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_uint( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_uint( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +#define CTOR(TYPE) \ + INLINE ap_uint(TYPE val) { Base::V = val; } + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) +#undef CTOR + ap_uint(double val) : Base(val) {} + ap_uint(float val) : Base(val) {} + ap_uint(half val) : Base(val) {} + + // ap_int_base will guess radix if radix is not provided. + INLINE ap_uint(const char* s) : Base(s) {} + + INLINE ap_uint(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + /* XXX ctor will be used when right is not of proper type. */ + + INLINE ap_uint& operator=(const ap_uint<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } + + /* cannot bind volatile reference to non-volatile type. */ + INLINE ap_uint& operator=(const volatile ap_uint<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } + + /* cannot return volatile *this. */ + INLINE void operator=(const ap_uint<_AP_W>& op2) volatile { Base::V = op2.V; } + + INLINE void operator=(const volatile ap_uint<_AP_W>& op2) volatile { + Base::V = op2.V; + } + +}; // struct ap_uint. + +#define ap_bigint ap_int +#define ap_biguint ap_uint + +#if !defined(__SYNTHESIS__) && (defined(SYSTEMC_H) || defined(SYSTEMC_INCLUDED)) +// XXX sc_trace overload for ap_fixed is already included in +// "ap_sysc/ap_sc_extras.h", so do not define in synthesis. +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, const ap_int<_AP_W>& op, + const std::string& name) { + if (tf) tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} + +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, const ap_uint<_AP_W>& op, + const std::string& name) { + if (tf) tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} +#endif // System C sim + +#include "ap_int_special.h" + +#endif // ifndef __AP_INT_H__ else + +// FIXME user should include ap_fixed.h when using ap_fixed. +// to avoid circular inclusion, must check whether this is required by +// ap_fixed.h +#ifndef __AP_FIXED_H__ +#include "ap_fixed.h" +#endif + +// -*- cpp -*- diff --git a/vitis/v2020_1/ap_int_base.h b/vitis/v2020_1/ap_int_base.h new file mode 100644 index 00000000..d6f08591 --- /dev/null +++ b/vitis/v2020_1/ap_int_base.h @@ -0,0 +1,1970 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_INT_BASE_H__ +#define __AP_INT_BASE_H__ + +#ifndef __AP_INT_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" +#else + +#include "ap_common.h" +#ifndef __SYNTHESIS__ +#include "hls_half.h" +#include +#include +#endif + +/* ---------------------------------------------------------------- + * ap_int_base: AutoPilot integer/Arbitrary precision integer. + * ---------------------------------------------------------------- + */ + +/* helper trait. Selecting the smallest C type that can hold the value, + * return 64 bit C type if not possible. + */ +template +struct retval; + +// at least 64 bit +template +struct retval<_AP_N, true> { + typedef ap_slong Type; +}; + +template +struct retval<_AP_N, false> { + typedef ap_ulong Type; +}; + +// at least 8 bit +template <> +struct retval<1, true> { + typedef signed char Type; +}; + +template <> +struct retval<1, false> { + typedef unsigned char Type; +}; + +// at least 16 bit +template <> +struct retval<2, true> { + typedef short Type; +}; + +template <> +struct retval<2, false> { + typedef unsigned short Type; +}; + +// at least 32 bit +template <> +struct retval<3, true> { + typedef long Type; +}; + +template <> +struct retval<3, false> { + typedef unsigned long Type; +}; + +template <> +struct retval<4, true> { + typedef long Type; +}; + +template <> +struct retval<4, false> { + typedef unsigned long Type; +}; + +// trait for letting base class to return derived class. +// Notice that derived class template is incomplete, and we cannot use +// the member of the derived class. +template +struct _ap_int_factory; +template +struct _ap_int_factory<_AP_W2,true> { typedef ap_int<_AP_W2> type; }; +template +struct _ap_int_factory<_AP_W2,false> { typedef ap_uint<_AP_W2> type; }; + +template +struct ap_int_base : public _AP_ROOT_TYPE<_AP_W, _AP_S> { + public: + typedef _AP_ROOT_TYPE<_AP_W, _AP_S> Base; + + /* ap_int_base<_AP_W, _AP_S, true> + * typedef typename retval<(_AP_W + 7) / 8, _AP_S>::Type RetType; + * + * ap_int_base<_AP_W, _AP_S, false> + * typedef typename retval<8, _AP_S>::Type RetType; + */ + typedef typename retval::Type RetType; + + static const int width = _AP_W; + + template + struct RType { + enum { + mult_w = _AP_W + _AP_W2, + mult_s = _AP_S || _AP_S2, + plus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, + div_w = _AP_W + _AP_S2, + div_s = _AP_S || _AP_S2, + mod_w = AP_MIN(_AP_W, _AP_W2 + (!_AP_S2 && _AP_S)), + mod_s = _AP_S, + logic_w = AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + + + typedef ap_int_base mult_base; + typedef ap_int_base plus_base; + typedef ap_int_base minus_base; + typedef ap_int_base logic_base; + typedef ap_int_base div_base; + typedef ap_int_base mod_base; + typedef ap_int_base<_AP_W, _AP_S> arg1_base; + + typedef typename _ap_int_factory::type mult; + typedef typename _ap_int_factory::type plus; + typedef typename _ap_int_factory::type minus; + typedef typename _ap_int_factory::type logic; + typedef typename _ap_int_factory::type div; + typedef typename _ap_int_factory::type mod; + typedef typename _ap_int_factory<_AP_W, _AP_S>::type arg1; + typedef bool reduce; + }; + + /* Constructors. + * ---------------------------------------------------------------- + */ + /// default ctor + INLINE ap_int_base() { + /* + #ifdef __SC_COMPATIBLE__ + Base::V = 0; + #endif + */ + } + + /// copy ctor + template + INLINE ap_int_base(const ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + + /// volatile copy ctor + template + INLINE ap_int_base(const volatile ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + +// XXX C++11 feature. +// The explicit specifier specifies that a constructor or conversion function +// (since C++11) doesn't allow implicit conversions or copy-initialization. +// ap_int_base x = 1; +// ap_int_base foo() { return 1; } +// but allows +// ap_int_base x(1); +// ap_int_base y {1}; + +/// from all c types. +#define CTOR_FROM_INT(Type, Size, Signed) \ + INLINE ap_int_base(const Type op) { Base::V = op; } + + CTOR_FROM_INT(bool, 1, false) + CTOR_FROM_INT(char, 8, CHAR_IS_SIGNED) + CTOR_FROM_INT(signed char, 8, true) + CTOR_FROM_INT(unsigned char, 8, false) + CTOR_FROM_INT(short, _AP_SIZE_short, true) + CTOR_FROM_INT(unsigned short, _AP_SIZE_short, false) + CTOR_FROM_INT(int, _AP_SIZE_int, true) + CTOR_FROM_INT(unsigned int, _AP_SIZE_int, false) + CTOR_FROM_INT(long, _AP_SIZE_long, true) + CTOR_FROM_INT(unsigned long, _AP_SIZE_long, false) + CTOR_FROM_INT(ap_slong, _AP_SIZE_ap_slong, true) + CTOR_FROM_INT(ap_ulong, _AP_SIZE_ap_slong, false) +#undef CTOR_FROM_INT + + /// ctor from half. + // TODO optimize + INLINE ap_int_base(half op) { + ap_int_base<_AP_W, _AP_S> t((float)op); + Base::V = t.V; + } + + /// ctor from float. + INLINE ap_int_base(float op) { + const int BITS = FLOAT_MAN + FLOAT_EXP + 1; + ap_int_base reg; + reg.V = floatToRawBits(op); + bool is_neg = _AP_ROOT_op_get_bit(reg.V, BITS - 1); + + ap_int_base exp = 0; + exp.V = _AP_ROOT_op_get_range(reg.V, FLOAT_MAN, BITS - 2); + exp = exp - FLOAT_BIAS; + + ap_int_base man; + man.V = _AP_ROOT_op_get_range(reg.V, 0, FLOAT_MAN - 1); + // check for NaN + _AP_WARNING(exp == ((unsigned char)(FLOAT_BIAS + 1)) && man.V != 0, + "assign NaN to ap integer value"); + // set leading 1. + man.V = _AP_ROOT_op_set_bit(man.V, FLOAT_MAN, 1); + //if (is_neg) man = -man; + + if ((reg.V & 0x7ffffffful) == 0) { + Base::V = 0; + } else { + int sh_amt = FLOAT_MAN - exp.V; + if (sh_amt == 0) { + Base::V = man.V; + } else if (sh_amt > 0) { + if (sh_amt < FLOAT_MAN + 2) { + Base::V = man.V >> sh_amt; + } else { + if (is_neg) + Base::V = -1; + else + Base::V = 0; + } + } else { + sh_amt = -sh_amt; + if (sh_amt < _AP_W) { + Base::V = man.V; + Base::V <<= sh_amt; + } else { + Base::V = 0; + } + } + } + if (is_neg) *this = -(*this); + } + + /// ctor from double. + INLINE ap_int_base(double op) { + const int BITS = DOUBLE_MAN + DOUBLE_EXP + 1; + ap_int_base reg; + reg.V = doubleToRawBits(op); + bool is_neg = _AP_ROOT_op_get_bit(reg.V, BITS - 1); + + ap_int_base exp = 0; + exp.V = _AP_ROOT_op_get_range(reg.V, DOUBLE_MAN, BITS - 2); + exp = exp - DOUBLE_BIAS; + + ap_int_base man; + man.V = _AP_ROOT_op_get_range(reg.V, 0, DOUBLE_MAN - 1); + // check for NaN + _AP_WARNING(exp == ((unsigned char)(DOUBLE_BIAS + 1)) && man.V != 0, + "assign NaN to ap integer value"); + // set leading 1. + man.V = _AP_ROOT_op_set_bit(man.V, DOUBLE_MAN, 1); + //if (is_neg) man = -man; + + if ((reg.V & 0x7fffffffffffffffull) == 0) { + Base::V = 0; + } else { + int sh_amt = DOUBLE_MAN - exp.V; + if (sh_amt == 0) { + Base::V = man.V; + } else if (sh_amt > 0) { + if (sh_amt < DOUBLE_MAN + 2) { + Base::V = man.V >> sh_amt; + } else { + if (is_neg) + Base::V = -1; + else + Base::V = 0; + } + } else { + sh_amt = -sh_amt; + if (sh_amt < _AP_W) { + Base::V = man.V; + Base::V <<= sh_amt; + } else { + Base::V = 0; + } + } + } + if (is_neg) *this = -(*this); + } + + /// from higer rank type. + template + INLINE ap_int_base( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = op.to_ap_int_base().V; + } + + template + INLINE ap_int_base(const ap_range_ref<_AP_W2, _AP_S2>& ref) { + Base::V = (ref.get()).V; + } + + template + INLINE ap_int_base(const ap_bit_ref<_AP_W2, _AP_S2>& ref) { + Base::V = ref.operator bool(); + } + + template + INLINE ap_int_base(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) { + const ap_int_base::_AP_WR, + false> + tmp = ref.get(); + Base::V = tmp.V; + } + + /* radix has default value in set */ + +#ifndef __SYNTHESIS__ + INLINE ap_int_base(const char* s, signed char rd = 0) { + if (rd == 0) + rd = guess_radix(s); + unsigned int length = strlen(s); + Base::V.fromString(s, length, rd); + } +#else + // XXX __builtin_bit_from_string(...) requires const C string and radix. + INLINE ap_int_base(const char* s) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), 10, _AP_W, _AP_S, + AP_TRN, AP_WRAP, 0, _AP_C99); + Base::V = t; + } + INLINE ap_int_base(const char* s, signed char rd) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), rd, _AP_W, _AP_S, + AP_TRN, AP_WRAP, 0, _AP_C99); + Base::V = t; + } +#endif + + template + INLINE ap_int_base( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + Base::V = (val.get()).V; + } + + template + INLINE ap_int_base( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + Base::V = val.operator bool(); + } + + INLINE ap_int_base read() volatile { + /*AP_DEBUG(printf("call read %d\n", Base::V););*/ + ap_int_base ret; + ret.V = Base::V; + return ret; + } + + INLINE void write(const ap_int_base<_AP_W, _AP_S>& op2) volatile { + /*AP_DEBUG(printf("call write %d\n", op2.V););*/ + Base::V = op2.V; + } + + /* Another form of "write".*/ + template + INLINE void operator=( + const volatile ap_int_base<_AP_W2, _AP_S2>& op2) volatile { + Base::V = op2.V; + } + + INLINE void operator=( + const volatile ap_int_base<_AP_W, _AP_S>& op2) volatile { + Base::V = op2.V; + } + + template + INLINE void operator=(const ap_int_base<_AP_W2, _AP_S2>& op2) volatile { + Base::V = op2.V; + } + + INLINE void operator=(const ap_int_base<_AP_W, _AP_S>& op2) volatile { + Base::V = op2.V; + } + + template + INLINE ap_int_base& operator=( + const volatile ap_int_base<_AP_W2, _AP_S2>& op2) { + Base::V = op2.V; + return *this; + } + + template + INLINE ap_int_base& operator=(const ap_int_base<_AP_W2, _AP_S2>& op2) { + Base::V = op2.V; + return *this; + } + + INLINE ap_int_base& operator=(const volatile ap_int_base<_AP_W, _AP_S>& op2) { + Base::V = op2.V; + return *this; + } + + INLINE ap_int_base& operator=(const ap_int_base<_AP_W, _AP_S>& op2) { + Base::V = op2.V; + return *this; + } + + +#define ASSIGN_OP_FROM_INT(Type, Size, Signed) \ + INLINE ap_int_base& operator=(Type op) { \ + Base::V = op; \ + return *this; \ + } + + ASSIGN_OP_FROM_INT(bool, 1, false) + ASSIGN_OP_FROM_INT(char, 8, CHAR_IS_SIGNED) + ASSIGN_OP_FROM_INT(signed char, 8, true) + ASSIGN_OP_FROM_INT(unsigned char, 8, false) + ASSIGN_OP_FROM_INT(short, _AP_SIZE_short, true) + ASSIGN_OP_FROM_INT(unsigned short, _AP_SIZE_short, false) + ASSIGN_OP_FROM_INT(int, _AP_SIZE_int, true) + ASSIGN_OP_FROM_INT(unsigned int, _AP_SIZE_int, false) + ASSIGN_OP_FROM_INT(long, _AP_SIZE_long, true) + ASSIGN_OP_FROM_INT(unsigned long, _AP_SIZE_long, false) + ASSIGN_OP_FROM_INT(ap_slong, _AP_SIZE_ap_slong, true) + ASSIGN_OP_FROM_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef ASSIGN_OP_FROM_INT + + template + INLINE ap_int_base& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& op2) { + Base::V = (bool)op2; + return *this; + } + + template + INLINE ap_int_base& operator=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + Base::V = (ap_int_base<_AP_W2, false>(op2)).V; + return *this; + } + + template + INLINE ap_int_base& operator=( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op2) { + Base::V = op2.get().V; + return *this; + } + + template + INLINE ap_int_base& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = op.to_ap_int_base().V; + return *this; + } + + template + INLINE ap_int_base& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = (bool)op; + return *this; + } + + template + INLINE ap_int_base& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = ((const ap_int_base<_AP_W2, false>)(op)).V; + return *this; + } + + // FIXME: UG902 has clearly required user to use to_int() to convert to built-in + // types, but this implicit conversion is relied on in hls_cordic.h and hls_rsr.h. + // For example: + // int d_exp = fps_x.exp - fps_y.exp; + INLINE operator RetType() const { return (RetType)(Base::V); } + + /* Explicit conversions to C types. + * ---------------------------------------------------------------- + */ + INLINE bool to_bool() const { return (bool)(Base::V); } + INLINE char to_char() const { return (char)(Base::V); } + INLINE signed char to_schar() const { return (signed char)(Base::V); } + INLINE unsigned char to_uchar() const { return (unsigned char)(Base::V); } + INLINE short to_short() const { return (short)(Base::V); } + INLINE unsigned short to_ushort() const { return (unsigned short)(Base::V); } + INLINE int to_int() const { return (int)(Base::V); } + INLINE unsigned to_uint() const { return (unsigned)(Base::V); } + INLINE long to_long() const { return (long)(Base::V); } + INLINE unsigned long to_ulong() const { return (unsigned long)(Base::V); } + INLINE ap_slong to_int64() const { return (ap_slong)(Base::V); } + INLINE ap_ulong to_uint64() const { return (ap_ulong)(Base::V); } + INLINE float to_float() const { return (float)(Base::V); } + INLINE double to_double() const { return (double)(Base::V); } + + // TODO decide if user-defined conversion should be provided. +#if 0 + INLINE operator char() const { return (char)(Base::V); } + INLINE operator signed char() const { return (signed char)(Base::V); } + INLINE operator unsigned char() const { return (unsigned char)(Base::V); } + INLINE operator short() const { return (short)(Base::V); } + INLINE operator unsigned short() const { return (unsigned short)(Base::V); } + INLINE operator int() const { return (int)(Base::V); } + INLINE operator unsigned int () const { return (unsigned)(Base::V); } + INLINE operator long () const { return (long)(Base::V); } + INLINE operator unsigned long () const { return (unsigned long)(Base::V); } + INLINE operator ap_slong () { return (ap_slong)(Base::V); } + INLINE operator ap_ulong () { return (ap_ulong)(Base::V); } +#endif + + /* Helper methods. + ---------------------------------------------------------------- + */ + /* we cannot call a non-volatile function on a volatile instance. + * but calling a volatile function is ok. + * XXX deleted non-volatile version. + */ + INLINE int length() const volatile { return _AP_W; } + + /*Return true if the value of ap_int_base instance is zero*/ + INLINE bool iszero() const { return Base::V == 0; } + + /*Return true if the value of ap_int_base instance is zero*/ + INLINE bool is_zero() const { return Base::V == 0; } + + /* x < 0 */ + INLINE bool sign() const { + if (_AP_S && + _AP_ROOT_op_get_bit(Base::V, _AP_W - 1)) + return true; + else + return false; + } + + /* x[i] = 0 */ + INLINE void clear(int i) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 0); + } + + /* x[i] = !x[i]*/ + INLINE void invert(int i) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + bool val = _AP_ROOT_op_get_bit(Base::V, i); + if (val) + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 0); + else + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 1); + } + + INLINE bool test(int i) const { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + return _AP_ROOT_op_get_bit(Base::V, i); + } + + // Get self. For ap_concat_ref expansion. + INLINE ap_int_base& get() { return *this; } + + // Set the ith bit into 1 + INLINE void set(int i) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 1); + } + + // Set the ith bit into v + INLINE void set(int i, bool v) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + Base::V = _AP_ROOT_op_set_bit(Base::V, i, v); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_int_base object n places to the left + INLINE ap_int_base& lrotate(int n) { + AP_ASSERT(n >= 0 && n < _AP_W, "shift value out of range"); + // TODO unify this. +#ifdef __SYNTHESIS__ + typeof(Base::V) l_p = Base::V << n; + typeof(Base::V) r_p = Base::V >> (_AP_W - n); + Base::V = l_p | r_p; +#else + Base::V.lrotate(n); +#endif + return *this; + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_int_base object n places to the right + INLINE ap_int_base& rrotate(int n) { + AP_ASSERT(n >= 0 && n < _AP_W, "shift value out of range"); + // TODO unify this. +#ifdef __SYNTHESIS__ + typeof(Base::V) l_p = Base::V << (_AP_W - n); + typeof(Base::V) r_p = Base::V >> n; + Base::V = l_p | r_p; +#else + Base::V.rrotate(n); +#endif + return *this; + } + + // Reverse the contents of ap_int_base instance. + // I.e. LSB becomes MSB and vise versa. + INLINE ap_int_base& reverse() { + Base::V = _AP_ROOT_op_get_range(Base::V, _AP_W - 1, 0); + return *this; + } + + // Set the ith bit into v + INLINE void set_bit(int i, bool v) { + Base::V = _AP_ROOT_op_set_bit(Base::V, i, v); + } + + // Get the value of ith bit + INLINE bool get_bit(int i) const { + return (bool)_AP_ROOT_op_get_bit(Base::V, i); + } + + // complements every bit + INLINE void b_not() { Base::V = ~Base::V; } + +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_int_base& operator Sym(const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + Base::V Sym op2.V; \ + return *this; \ + } + + /* Arithmetic assign. + * ---------------------------------------------------------------- + */ + OP_ASSIGN_AP(*=) + OP_ASSIGN_AP(+=) + OP_ASSIGN_AP(-=) + OP_ASSIGN_AP(/=) + OP_ASSIGN_AP(%=) +#undef OP_ASSIGN_AP + + /* Bitwise assign: and, or, xor. + * ---------------------------------------------------------------- + */ +#define OP_ASSIGN_AP_CHK(Sym) \ + template \ + INLINE ap_int_base& operator Sym(const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + _AP_WARNING((_AP_W != _AP_W2), \ + "Bitsize mismatch for ap_[u]int" #Sym "ap_[u]int."); \ + Base::V Sym op2.V; \ + return *this; \ + } + OP_ASSIGN_AP_CHK(&=) + OP_ASSIGN_AP_CHK(|=) + OP_ASSIGN_AP_CHK(^=) +#undef OP_ASSIGN_AP_CHK + + /* Prefix increment, decrement. + * ---------------------------------------------------------------- + */ + INLINE ap_int_base& operator++() { + operator+=((ap_int_base<1, false>)1); + return *this; + } + INLINE ap_int_base& operator--() { + operator-=((ap_int_base<1, false>)1); + return *this; + } + + /* Postfix increment, decrement + * ---------------------------------------------------------------- + */ + INLINE const typename RType<_AP_W,_AP_S>::arg1 operator++(int) { + ap_int_base t = *this; + operator+=((ap_int_base<1, false>)1); + return t; + } + INLINE const typename RType<_AP_W,_AP_S>::arg1 operator--(int) { + ap_int_base t = *this; + operator-=((ap_int_base<1, false>)1); + return t; + } + + /* Unary arithmetic. + * ---------------------------------------------------------------- + */ + INLINE typename RType<_AP_W,_AP_S>::arg1 operator+() const { return *this; } + + // TODO used to be W>64 only... need check. + INLINE typename RType<1, false>::minus operator-() const { + return ap_int_base<1, false>(0) - *this; + } + + /* Not (!) + * ---------------------------------------------------------------- + */ + INLINE bool operator!() const { return Base::V == 0; } + + /* Bitwise (arithmetic) unary: complement + ---------------------------------------------------------------- + */ + // XXX different from Mentor's ac_int! + INLINE typename RType<_AP_W,_AP_S>::arg1 operator~() const { + ap_int_base<_AP_W, _AP_S> r; + r.V = ~Base::V; + return r; + } + + /* Shift (result constrained by left operand). + * ---------------------------------------------------------------- + */ + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator<<(const ap_int_base<_AP_W2, true>& op2) const { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator>>(sh); + } else + return operator<<(sh); + } + + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator<<(const ap_int_base<_AP_W2, false>& op2) const { + ap_int_base r; + r.V = Base::V << op2.to_uint(); + return r; + } + + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator>>(const ap_int_base<_AP_W2, true>& op2) const { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator<<(sh); + } + return operator>>(sh); + } + + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator>>(const ap_int_base<_AP_W2, false>& op2) const { + ap_int_base r; + r.V = Base::V >> op2.to_uint(); + return r; + } + + // FIXME we standalone operator>> for ap_int_base and ap_range_ref. +#if 0 + template + INLINE ap_int_base operator<<(const ap_range_ref<_AP_W2, _AP_S2>& op2) const { + return *this << (op2.operator ap_int_base<_AP_W2, false>()); + } + + template + INLINE ap_int_base operator>>(const ap_range_ref<_AP_W2, _AP_S2>& op2) const { + return *this >> (op2.operator ap_int_base<_AP_W2, false>()); + } +#endif + + /* Shift assign + * ---------------------------------------------------------------- + */ + template + INLINE ap_int_base& operator<<=(const ap_int_base<_AP_W2, true>& op2) { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator>>=(sh); + } else + return operator<<=(sh); + } + + template + INLINE ap_int_base& operator<<=(const ap_int_base<_AP_W2, false>& op2) { + Base::V <<= op2.to_uint(); + return *this; + } + + template + INLINE ap_int_base& operator>>=(const ap_int_base<_AP_W2, true>& op2) { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator<<=(sh); + } + return operator>>=(sh); + } + + template + INLINE ap_int_base& operator>>=(const ap_int_base<_AP_W2, false>& op2) { + Base::V >>= op2.to_uint(); + return *this; + } + + // FIXME we standalone operator>> for ap_int_base and ap_range_ref. +#if 0 + template + INLINE ap_int_base& operator<<=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return *this <<= (op2.operator ap_int_base<_AP_W2, false>()); + } + template + INLINE ap_int_base& operator>>=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return *this >>= (op2.operator ap_int_base<_AP_W2, false>()); + } +#endif + + /* Equality and Relational. + * ---------------------------------------------------------------- + */ + template + INLINE bool operator==(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V == op2.V; + } + template + INLINE bool operator!=(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return !(Base::V == op2.V); + } + template + INLINE bool operator<(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V < op2.V; + } + template + INLINE bool operator>=(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V >= op2.V; + } + template + INLINE bool operator>(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V > op2.V; + } + template + INLINE bool operator<=(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V <= op2.V; + } + + /* Bit and Part Select + * ---------------------------------------------------------------- + */ + INLINE ap_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) { + _AP_ERROR(Hi >= _AP_W, "Hi(%d)out of bound(%d) in range()", Hi, _AP_W); + _AP_ERROR(Lo >= _AP_W, "Lo(%d)out of bound(%d) in range()", Lo, _AP_W); + return ap_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + // This is a must to strip constness to produce reference type. + INLINE ap_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) const { + _AP_ERROR(Hi >= _AP_W, "Hi(%d)out of bound(%d) in range()", Hi, _AP_W); + _AP_ERROR(Lo >= _AP_W, "Lo(%d)out of bound(%d) in range()", Lo, _AP_W); + return ap_range_ref<_AP_W, _AP_S>(const_cast(this), Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE ap_range_ref<_AP_W, _AP_S> range() { + return this->range(_AP_W - 1, 0); + } + + INLINE ap_range_ref<_AP_W, _AP_S> range() const { + return this->range(_AP_W - 1, 0); + } + + INLINE ap_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) { + return this->range(Hi, Lo); + } + + INLINE ap_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) const { + return this->range(Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + +#if 0 + template + INLINE ap_int_base slice() const { + AP_ASSERT(Hi >= Lo && Hi < _AP_W && Lo < _AP_W, "Out of bounds in slice()"); + ap_int_base tmp ; + tmp.V = _AP_ROOT_op_get_range(Base::V, Lo, Hi); + return tmp; + } + + INLINE ap_bit_ref<_AP_W,_AP_S> operator [] ( unsigned int uindex) { + AP_ASSERT(uindex < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W,_AP_S> bvh( this, uindex ); + return bvh; + } +#endif + + INLINE ap_bit_ref<_AP_W, _AP_S> operator[](int index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index); + return bvh; + } + + template + INLINE ap_bit_ref<_AP_W, _AP_S> operator[]( + const ap_int_base<_AP_W2, _AP_S2>& index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index.to_int()); + return bvh; + } + + INLINE bool operator[](int index) const { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> br(this, index); + return br.to_bool(); + } + template + INLINE bool operator[](const ap_int_base<_AP_W2, _AP_S2>& index) const { + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> br(this, index.to_int()); + return br.to_bool(); + } + + INLINE ap_bit_ref<_AP_W, _AP_S> bit(int index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index); + return bvh; + } + template + INLINE ap_bit_ref<_AP_W, _AP_S> bit( + const ap_int_base<_AP_W2, _AP_S2>& index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index.to_int()); + return bvh; + } + + INLINE bool bit(int index) const { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> br(this, index); + return br.to_bool(); + } + + template + INLINE bool bit(const ap_int_base<_AP_W2, _AP_S2>& index) const { + return bit(index.to_int()); + } + +#if 0 + template + INLINE bool operator[](_AP_T index) const { + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W,_AP_S> br = operator[](index); + return br.to_bool(); + } +#endif + + // Count the number of zeros from the most significant bit + // to the first one bit. + INLINE int countLeadingZeros() { +#ifdef __SYNTHESIS__ + if (_AP_W <= 32) { + ap_int_base<32, false> t(-1UL), x; + x.V = _AP_ROOT_op_get_range(this->V, _AP_W - 1, 0); // reverse + t.V = _AP_ROOT_op_set_range(t.V, 0, _AP_W - 1, x.V); + return __builtin_ctz(t.V); // count trailing zeros. + } else if (_AP_W <= 64) { + ap_int_base<64, false> t(-1ULL); + ap_int_base<64, false> x; + x.V = _AP_ROOT_op_get_range(this->V, _AP_W - 1, 0); // reverse + t.V = _AP_ROOT_op_set_range(t.V, 0, _AP_W - 1, x.V); + return __builtin_ctzll(t.V); // count trailing zeros. + } else { + enum { __N = (_AP_W + 63) / 64 }; + int NZeros = 0; + int i = 0; + bool hitNonZero = false; + for (i = 0; i < __N - 1; ++i) { + ap_int_base<64, false> t; + t.V = _AP_ROOT_op_get_range(this->V, _AP_W - i * 64 - 64, _AP_W - i * 64 - 1); + NZeros += hitNonZero ? 0 : __builtin_clzll(t.V); // count leading zeros. + hitNonZero |= (t.V != 0); + } + if (!hitNonZero) { + ap_int_base<64, false> t(-1ULL); + enum { REST = (_AP_W - 1) % 64 }; + ap_int_base<64, false> x; + x.V = _AP_ROOT_op_get_range(this->V, 0, REST); + t.V = _AP_ROOT_op_set_range(t.V, 63 - REST, 63, x.V); + NZeros += __builtin_clzll(t.V); + } + return NZeros; + } +#else + return (Base::V).countLeadingZeros(); +#endif + } // countLeadingZeros + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + concat(const ap_int_base<_AP_W2, _AP_S2>& a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + concat(ap_int_base<_AP_W2, _AP_S2>& a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, a2); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(ap_range_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >(*this, a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + const_cast&>(*this), a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(const ap_bit_ref<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(ap_bit_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >(*this, + a2); + } + + template + INLINE ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &a2) const { + return ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + const_cast&>(*this), + const_cast< + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); + } + + template + INLINE ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, + a2); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &a2) const { + return ap_concat_ref< + _AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + const_cast&>(*this), + const_cast&>( + a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref< + _AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, a2); + } + + template + INLINE ap_int_base operator&( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + return *this & a2.get(); + } + + template + INLINE ap_int_base operator|( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + return *this | a2.get(); + } + + template + INLINE ap_int_base operator^( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + return *this ^ a2.get(); + } + + template + INLINE void set(const ap_int_base<_AP_W3, false>& val) { + Base::V = val.V; + } + + /* Reduce operations. + * ---------------------------------------------------------------- + */ + // XXX non-const version deleted. + INLINE bool and_reduce() const { return _AP_ROOT_op_reduce(and, Base::V); } + INLINE bool nand_reduce() const { return _AP_ROOT_op_reduce(nand, Base::V); } + INLINE bool or_reduce() const { return _AP_ROOT_op_reduce(or, Base::V); } + INLINE bool nor_reduce() const { return !(_AP_ROOT_op_reduce(or, Base::V)); } + INLINE bool xor_reduce() const { return _AP_ROOT_op_reduce (xor, Base::V); } + INLINE bool xnor_reduce() const { + return !(_AP_ROOT_op_reduce (xor, Base::V)); + } + + /* Output as a string. + * ---------------------------------------------------------------- + */ +#ifndef __SYNTHESIS__ + std::string to_string(signed char rd = 2, bool sign = _AP_S) const { + // XXX in autosim/autowrap.tcl "(${name}).to_string(2).c_str()" is used to + // initialize sc_lv, which seems incapable of handling format "-0b". + if (rd == 2) sign = false; + return (Base::V).to_string(rd, sign); + } +#else + INLINE char* to_string(signed char rd = 2, bool sign = _AP_S) const { + return 0; + } +#endif +}; // struct ap_int_base + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<(std::ostream& os, + const ap_int_base<_AP_W, _AP_S>& x) { + std::ios_base::fmtflags ff = std::cout.flags(); + if (ff & std::cout.hex) { + os << x.to_string(16); // don't print sign + } else if (ff & std::cout.oct) { + os << x.to_string(8); // don't print sign + } else { + os << x.to_string(10); + } + return os; +} +#endif // ifndef __SYNTHESIS__ + +#ifndef __SYNTHESIS__ +template +INLINE std::istream& operator>>(std::istream& in, + ap_int_base<_AP_W, _AP_S>& op) { + std::string str; + in >> str; + const std::ios_base::fmtflags basefield = in.flags() & std::ios_base::basefield; + unsigned radix = (basefield == std::ios_base::dec) ? 0 : ( + (basefield == std::ios_base::oct) ? 8 : ( + (basefield == std::ios_base::hex) ? 16 : 0)); + op = ap_int_base<_AP_W, _AP_S>(str.c_str(), radix); + return in; +} +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_AUTOCC + +/* Operators with another ap_int_base. + * ---------------------------------------------------------------- + */ +#define OP_BIN_AP(Sym, Rty) \ + template \ + INLINE \ + typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, _AP_S2>::Rty \ + operator Sym(const ap_int_base<_AP_W, _AP_S>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base lhs(op); \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base rhs(op2); \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base ret; \ + ret.V = lhs.V Sym rhs.V; \ + return ret; \ + } + +OP_BIN_AP(*, mult) +OP_BIN_AP(+, plus) +OP_BIN_AP(-, minus) +OP_BIN_AP(&, logic) +OP_BIN_AP(|, logic) +OP_BIN_AP(^, logic) + +#define OP_BIN_AP2(Sym, Rty) \ + template \ + INLINE \ + typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, _AP_S2>::Rty \ + operator Sym(const ap_int_base<_AP_W, _AP_S>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base ret; \ + ret.V = op.V Sym op2.V; \ + return ret; \ + } + +OP_BIN_AP2(/, div) +OP_BIN_AP2(%, mod) + +// shift operators are defined inside class. +// compound assignment operators are defined inside class. + +/* Operators with a pointer type. + * ---------------------------------------------------------------- + * char a[100]; + * char* ptr = a; + * ap_int<2> n = 3; + * char* ptr2 = ptr + n*2; + * avoid ambiguous errors. + */ +#define OP_BIN_WITH_PTR(BIN_OP) \ + template \ + INLINE PTR_TYPE* operator BIN_OP(PTR_TYPE* i_op, \ + const ap_int_base<_AP_W, _AP_S>& op) { \ + ap_slong op2 = op.to_int64(); /* Not all implementation */ \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE PTR_TYPE* operator BIN_OP(const ap_int_base<_AP_W, _AP_S>& op, \ + PTR_TYPE* i_op) { \ + ap_slong op2 = op.to_int64(); /* Not all implementation */ \ + return op2 BIN_OP i_op; \ + } + +OP_BIN_WITH_PTR(+) +OP_BIN_WITH_PTR(-) + +/* Operators with a native floating point types. + * ---------------------------------------------------------------- + */ +// float OP ap_int +// when ap_int's width > 64, then trunc ap_int to ap_int<64> +#define OP_BIN_WITH_FLOAT(BIN_OP, C_TYPE) \ + template \ + INLINE C_TYPE operator BIN_OP(C_TYPE i_op, \ + const ap_int_base<_AP_W, _AP_S>& op) { \ + typename ap_int_base<_AP_W, _AP_S>::RetType op2 = op; \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE C_TYPE operator BIN_OP(const ap_int_base<_AP_W, _AP_S>& op, \ + C_TYPE i_op) { \ + typename ap_int_base<_AP_W, _AP_S>::RetType op2 = op; \ + return op2 BIN_OP i_op; \ + } + +#define ALL_OP_WITH_FLOAT(C_TYPE) \ + OP_BIN_WITH_FLOAT(*, C_TYPE) \ + OP_BIN_WITH_FLOAT(/, C_TYPE) \ + OP_BIN_WITH_FLOAT(+, C_TYPE) \ + OP_BIN_WITH_FLOAT(-, C_TYPE) + +ALL_OP_WITH_FLOAT(half) +ALL_OP_WITH_FLOAT(float) +ALL_OP_WITH_FLOAT(double) + +// TODO no shift? + +/* Operators with a native integral types. + * ---------------------------------------------------------------- + */ +// arithmetic and bitwise operators. +#define OP_BIN_WITH_INT(BIN_OP, C_TYPE, _AP_W2, _AP_S2, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(C_TYPE i_op, const ap_int_base<_AP_W, _AP_S>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(i_op) BIN_OP(op); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W, _AP_S>& op, C_TYPE i_op) { \ + return op BIN_OP ap_int_base<_AP_W2, _AP_S2>(i_op); \ + } + +#define ALL_OP_BIN_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_BIN_WITH_INT(*, C_TYPE, _AP_W2, _AP_S2, mult) \ + OP_BIN_WITH_INT(+, C_TYPE, _AP_W2, _AP_S2, plus) \ + OP_BIN_WITH_INT(-, C_TYPE, _AP_W2, _AP_S2, minus) \ + OP_BIN_WITH_INT(/, C_TYPE, _AP_W2, _AP_S2, div) \ + OP_BIN_WITH_INT(%, C_TYPE, _AP_W2, _AP_S2, mod) \ + OP_BIN_WITH_INT(&, C_TYPE, _AP_W2, _AP_S2, logic) \ + OP_BIN_WITH_INT(|, C_TYPE, _AP_W2, _AP_S2, logic) \ + OP_BIN_WITH_INT(^, C_TYPE, _AP_W2, _AP_S2, logic) + +ALL_OP_BIN_WITH_INT(bool, 1, false) +ALL_OP_BIN_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_BIN_WITH_INT(signed char, 8, true) +ALL_OP_BIN_WITH_INT(unsigned char, 8, false) +ALL_OP_BIN_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_BIN_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_BIN_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_BIN_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_BIN_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_BIN_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_BIN_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_OP_BIN_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef OP_BIN_WITH_INT +#undef ALL_OP_BIN_WITH_INT + +// shift operators. +#define ALL_OP_SHIFT_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator<<( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + if (_AP_S2) \ + r.V = op2 >= 0 ? (op.V << op2) : (op.V >> (-op2)); \ + else \ + r.V = op.V << op2; \ + return r; \ + } \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator>>( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + if (_AP_S2) \ + r.V = op2 >= 0 ? (op.V >> op2) : (op.V << (-op2)); \ + else \ + r.V = op.V >> op2; \ + return r; \ + } + +ALL_OP_SHIFT_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_SHIFT_WITH_INT(signed char, 8, true) +ALL_OP_SHIFT_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_SHIFT_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_SHIFT_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_SHIFT_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) + +#undef ALL_OP_SHIFT_WITH_INT + +#define ALL_OP_SHIFT_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator<<( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + r.V = op.V << op2; \ + return r; \ + } \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator>>( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + r.V = op.V >> op2; \ + return r; \ + } +ALL_OP_SHIFT_WITH_INT(bool, 1, false) +ALL_OP_SHIFT_WITH_INT(unsigned char, 8, false) +ALL_OP_SHIFT_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_SHIFT_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_SHIFT_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_SHIFT_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef ALL_OP_SHIFT_WITH_INT + +// compound assign operators. +#define OP_ASSIGN_WITH_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_int_base<_AP_W, _AP_S>& operator ASSIGN_OP( \ + ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + return op ASSIGN_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } + +// TODO int a; ap_int<16> b; a += b; + +#define ALL_OP_ASSIGN_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(+=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(-=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(*=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(/=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(%=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(&=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(|=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(^=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(>>=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(<<=, C_TYPE, _AP_W2, _AP_S2) + +ALL_OP_ASSIGN_WITH_INT(bool, 1, false) +ALL_OP_ASSIGN_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_ASSIGN_WITH_INT(signed char, 8, true) +ALL_OP_ASSIGN_WITH_INT(unsigned char, 8, false) +ALL_OP_ASSIGN_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_ASSIGN_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_ASSIGN_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_ASSIGN_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_ASSIGN_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_ASSIGN_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_ASSIGN_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_OP_ASSIGN_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef OP_ASSIGN_WITH_INT +#undef ALL_OP_ASSIGN_WITH_INT + +// equality and relational operators. +#define OP_REL_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(C_TYPE i_op, \ + const ap_int_base<_AP_W, _AP_S>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(i_op) REL_OP op; \ + } \ + template \ + INLINE bool operator REL_OP(const ap_int_base<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return op REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } + +#define ALL_OP_REL_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(>, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(<, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(>=, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(<=, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(==, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(!=, C_TYPE, _AP_W2, _AP_S2) + +ALL_OP_REL_WITH_INT(bool, 1, false) +ALL_OP_REL_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_REL_WITH_INT(signed char, 8, true) +ALL_OP_REL_WITH_INT(unsigned char, 8, false) +ALL_OP_REL_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_REL_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_REL_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_REL_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_REL_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_REL_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_REL_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_OP_REL_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef OP_REL_WITH_INT +#undef ALL_OP_BIN_WITH_INT + +#define OP_REL_WITH_DOUBLE_OR_FLOAT(Sym) \ + template \ + INLINE bool operator Sym(const ap_int_base<_AP_W, _AP_S>& op1, \ + double op2) { \ + return op1.to_double() Sym op2 ; \ + } \ + template \ + INLINE bool operator Sym(double op1, \ + const ap_int_base<_AP_W, _AP_S>& op2) { \ + return op1 Sym op2.to_double() ; \ + } \ + template \ + INLINE bool operator Sym(const ap_int_base<_AP_W, _AP_S>& op1, \ + float op2) { \ + return op1.to_double() Sym op2 ; \ + } \ + template \ + INLINE bool operator Sym(float op1, \ + const ap_int_base<_AP_W, _AP_S>& op2) { \ + return op1 Sym op2.to_double() ; \ + } + OP_REL_WITH_DOUBLE_OR_FLOAT(>) + OP_REL_WITH_DOUBLE_OR_FLOAT(<) + OP_REL_WITH_DOUBLE_OR_FLOAT(>=) + OP_REL_WITH_DOUBLE_OR_FLOAT(<=) + OP_REL_WITH_DOUBLE_OR_FLOAT(==) + OP_REL_WITH_DOUBLE_OR_FLOAT(!=) + +#undef OP_REL_WITH_DOUBLE_OR_FLOAT + + +/* Operators with ap_bit_ref. + * ------------------------------------------------------------ + */ +// arithmetic, bitwise and shift operators. +#define OP_BIN_WITH_RANGE(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<_AP_W1, false>(op1) BIN_OP op2; \ + } \ + template \ + INLINE typename ap_int_base<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 BIN_OP ap_int_base<_AP_W2, false>(op2); \ + } + +OP_BIN_WITH_RANGE(+, plus) +OP_BIN_WITH_RANGE(-, minus) +OP_BIN_WITH_RANGE(*, mult) +OP_BIN_WITH_RANGE(/, div) +OP_BIN_WITH_RANGE(%, mod) +OP_BIN_WITH_RANGE(&, logic) +OP_BIN_WITH_RANGE(|, logic) +OP_BIN_WITH_RANGE(^, logic) +OP_BIN_WITH_RANGE(>>, arg1) +OP_BIN_WITH_RANGE(<<, arg1) + +#undef OP_BIN_WITH_RANGE + +// compound assignment operators. +#define OP_ASSIGN_WITH_RANGE(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 ASSIGN_OP ap_int_base<_AP_W2, false>(op2); \ + } \ + template \ + INLINE ap_range_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<_AP_W1, false> tmp(op1); \ + tmp ASSIGN_OP op2; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_RANGE(+=) +OP_ASSIGN_WITH_RANGE(-=) +OP_ASSIGN_WITH_RANGE(*=) +OP_ASSIGN_WITH_RANGE(/=) +OP_ASSIGN_WITH_RANGE(%=) +OP_ASSIGN_WITH_RANGE(>>=) +OP_ASSIGN_WITH_RANGE(<<=) + +#undef OP_ASSIGN_WITH_RANGE + +// compound assignment operators +// as range could be dynamic, do not check whether two integers are of same +// width. +#define OP_ASSIGN_WITH_RANGE(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<_AP_W2, false> tmp(op2); \ + op1.V ASSIGN_OP tmp.V; \ + return op1; \ + } \ + template \ + INLINE ap_range_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<_AP_W1, false> tmp(op1); \ + tmp.V ASSIGN_OP op2.V; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_RANGE(&=) +OP_ASSIGN_WITH_RANGE(|=) +OP_ASSIGN_WITH_RANGE(^=) + +#undef OP_ASSIGN_WITH_RANGE + +// equality and relational operators +#define OP_REL_WITH_RANGE(REL_OP) \ + template \ + INLINE bool operator REL_OP(const ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<_AP_W1, false>(op1).operator REL_OP(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator REL_OP(op2.operator ap_int_base<_AP_W2, false>()); \ + } + +OP_REL_WITH_RANGE(==) +OP_REL_WITH_RANGE(!=) +OP_REL_WITH_RANGE(>) +OP_REL_WITH_RANGE(>=) +OP_REL_WITH_RANGE(<) +OP_REL_WITH_RANGE(<=) + +#undef OP_REL_WITH_RANGE + +/* Operators with ap_bit_ref. + * ------------------------------------------------------------ + */ +// arithmetic, bitwise and shift operators. +#define OP_BIN_WITH_BIT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W1, _AP_S1>::template RType<1, false>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 BIN_OP ap_int_base<1, false>(op2); \ + } \ + template \ + INLINE typename ap_int_base<1, false>::template RType<_AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP(const ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<1, false>(op1) BIN_OP op2; \ + } + +OP_BIN_WITH_BIT(+, plus) +OP_BIN_WITH_BIT(-, minus) +OP_BIN_WITH_BIT(*, mult) +OP_BIN_WITH_BIT(/, div) +OP_BIN_WITH_BIT(%, mod) +OP_BIN_WITH_BIT(&, logic) +OP_BIN_WITH_BIT(|, logic) +OP_BIN_WITH_BIT(^, logic) +OP_BIN_WITH_BIT(>>, arg1) +OP_BIN_WITH_BIT(<<, arg1) + +#undef OP_BIN_WITH_BIT + +// compound assignment operators. +#define OP_ASSIGN_WITH_BIT(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 ASSIGN_OP ap_int_base<1, false>(op2); \ + } \ + template \ + INLINE ap_bit_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<1, false> tmp(op1); \ + tmp ASSIGN_OP op2; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_BIT(+=) +OP_ASSIGN_WITH_BIT(-=) +OP_ASSIGN_WITH_BIT(*=) +OP_ASSIGN_WITH_BIT(/=) +OP_ASSIGN_WITH_BIT(%=) +OP_ASSIGN_WITH_BIT(>>=) +OP_ASSIGN_WITH_BIT(<<=) + +#undef OP_ASSIGN_WITH_BIT + +// compound assignment operators. +// as range could be dynamic, do not check whether two integers are of same +// width. +#define OP_ASSIGN_WITH_BIT(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<1, false> tmp(op2); \ + op1.V ASSIGN_OP tmp.V; \ + return op1; \ + } \ + template \ + INLINE ap_bit_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<1, false> tmp(op1); \ + tmp.V ASSIGN_OP op2.V; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_BIT(&=) +OP_ASSIGN_WITH_BIT(|=) +OP_ASSIGN_WITH_BIT(^=) + +#undef OP_ASSIGN_WITH_BIT + +// equality and relational operators. +#define OP_REL_WITH_BIT(REL_OP) \ + template \ + INLINE bool operator REL_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 REL_OP ap_int_base<1, false>(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<1, false>(op1) REL_OP op2; \ + } + +OP_REL_WITH_BIT(==) +OP_REL_WITH_BIT(!=) +OP_REL_WITH_BIT(>) +OP_REL_WITH_BIT(>=) +OP_REL_WITH_BIT(<) +OP_REL_WITH_BIT(<=) + +#undef OP_REL_WITH_BIT + + +/* Operators with ap_concat_ref. + * ------------------------------------------------------------ + */ +// arithmetic, bitwise and shift operators. +// bitwise operators are defined in struct. +// TODO specify whether to define arithmetic and bitwise operators. +#if 0 +#define OP_BIN_WITH_CONCAT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W3, _AP_S3>::template RType<_AP_W1 + _AP_W2, \ + false>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W3, _AP_S3>& op1, \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1 BIN_OP op2.get(); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W1 + _AP_W2, \ + false>::template RType<_AP_W3, _AP_S3>::RTYPE \ + operator BIN_OP(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op1, \ + const ap_int_base<_AP_W3, _AP_S3>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1.get() BIN_OP op2; \ + } + +OP_BIN_WITH_CONCAT(+, plus) +OP_BIN_WITH_CONCAT(-, minus) +OP_BIN_WITH_CONCAT(*, mult) +OP_BIN_WITH_CONCAT(/, div) +OP_BIN_WITH_CONCAT(%, mod) +OP_BIN_WITH_CONCAT(&, logic) +OP_BIN_WITH_CONCAT(|, logic) +OP_BIN_WITH_CONCAT(^, logic) +OP_BIN_WITH_CONCAT(>>, arg1) +OP_BIN_WITH_CONCAT(<<, arg1) + +#undef OP_BIN_WITH_CONCAT + +// compound assignment operators. +#define OP_ASSIGN_WITH_CONCAT(ASSIGN_OP) \ + template \ + INLINE typename ap_int_base<_AP_W3, _AP_S3>::template RType<_AP_W1 + _AP_W2, \ + false>::RTYPE \ + operator ASSIGN_OP( \ + const ap_int_base<_AP_W3, _AP_S3>& op1, \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1 ASSIGN_OP op2.get(); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W1 + _AP_W2, \ + false>::template RType<_AP_W3, _AP_S3>::RTYPE \ + operator ASSIGN_OP(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op1, \ + const ap_int_base<_AP_W3, _AP_S3>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + ap_int_base<_AP_W1 + _AP_W2, false> tmp = op1.get(); \ + tmp ASSIGN_OP op2; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_CONCAT(+=) +OP_ASSIGN_WITH_CONCAT(-=) +OP_ASSIGN_WITH_CONCAT(*=) +OP_ASSIGN_WITH_CONCAT(/=) +OP_ASSIGN_WITH_CONCAT(%=) +OP_ASSIGN_WITH_CONCAT(&=) +OP_ASSIGN_WITH_CONCAT(|=) +OP_ASSIGN_WITH_CONCAT(^=) +OP_ASSIGN_WITH_CONCAT(>>=) +OP_ASSIGN_WITH_CONCAT(<<=) + +#undef OP_ASSIGN_WITH_CONCAT +#endif + +// equality and relational operators. +#define OP_REL_WITH_CONCAT(REL_OP) \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W3, _AP_S3>& op1, \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1 REL_OP op2.get(); \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op1, \ + const ap_int_base<_AP_W3, _AP_S3>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1.get() REL_OP op2; \ + } + +OP_REL_WITH_CONCAT(==) +OP_REL_WITH_CONCAT(!=) +OP_REL_WITH_CONCAT(>) +OP_REL_WITH_CONCAT(>=) +OP_REL_WITH_CONCAT(<) +OP_REL_WITH_CONCAT(<=) + +#undef OP_REL_WITH_CONCAT + +#endif // ifndef __cplusplus else +#endif // ifndef __AP_INT_BASE_H__ else + + diff --git a/vitis/v2020_1/ap_int_ref.h b/vitis/v2020_1/ap_int_ref.h new file mode 100644 index 00000000..ed06f585 --- /dev/null +++ b/vitis/v2020_1/ap_int_ref.h @@ -0,0 +1,1379 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_INT_REF_H__ +#define __AP_INT_REF_H__ + +#ifndef __AP_INT_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" + +#else + +#ifndef __SYNTHESIS__ +#include +#endif + +/* Concatination reference. + ---------------------------------------------------------------- +*/ +template +struct ap_concat_ref { + enum { + _AP_WR = _AP_W1 + _AP_W2, + }; + + _AP_T1& mbv1; + _AP_T2& mbv2; + + INLINE ap_concat_ref(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& ref) + : mbv1(ref.mbv1), mbv2(ref.mbv2) {} + + INLINE ap_concat_ref(_AP_T1& bv1, _AP_T2& bv2) : mbv1(bv1), mbv2(bv2) {} + + template + INLINE ap_concat_ref& operator=(const ap_int_base<_AP_W3, _AP_S3>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> vval(val); + int W_ref1 = mbv1.length(); + int W_ref2 = mbv2.length(); + ap_int_base<_AP_W1, false> Part1; + Part1.V = _AP_ROOT_op_get_range(vval.V, W_ref2, W_ref1 + W_ref2 - 1); + mbv1.set(Part1); + ap_int_base<_AP_W2, false> Part2; + Part2.V = _AP_ROOT_op_get_range(vval.V, 0, W_ref2 - 1); + mbv2.set(Part2); + return *this; + } + + // assign op from hls supported C integral types. + // FIXME disabled to support legacy code directly assign from sc_signal + //template + //INLINE typename _ap_type::enable_if<_ap_type::is_integral::value, + // ap_concat_ref&>::type + //operator=(T val) { + // ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + // return operator=(tmpVal); + //} +#define ASSIGN_WITH_CTYPE(_Tp) \ + INLINE ap_concat_ref& operator=(_Tp val) { \ + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); \ + return operator=(tmpVal); \ + } + + ASSIGN_WITH_CTYPE(bool) + ASSIGN_WITH_CTYPE(char) + ASSIGN_WITH_CTYPE(signed char) + ASSIGN_WITH_CTYPE(unsigned char) + ASSIGN_WITH_CTYPE(short) + ASSIGN_WITH_CTYPE(unsigned short) + ASSIGN_WITH_CTYPE(int) + ASSIGN_WITH_CTYPE(unsigned int) + ASSIGN_WITH_CTYPE(long) + ASSIGN_WITH_CTYPE(unsigned long) + ASSIGN_WITH_CTYPE(ap_slong) + ASSIGN_WITH_CTYPE(ap_ulong) + ASSIGN_WITH_CTYPE(half) + ASSIGN_WITH_CTYPE(float) + ASSIGN_WITH_CTYPE(double) + +#undef ASSIGN_WITH_CTYPE + + // Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE ap_concat_ref& operator=( + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + + template + INLINE ap_concat_ref& operator=( + const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + + template + INLINE ap_concat_ref& operator=(const ap_bit_ref<_AP_W3, _AP_S3>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + template + INLINE ap_concat_ref& operator=(const ap_range_ref<_AP_W3, _AP_S3>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + + template + INLINE ap_concat_ref& operator=( + const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) { + return operator=((const ap_int_base<_AP_W3, false>)(val)); + } + + template + INLINE ap_concat_ref& operator=( + const ap_fixed_base<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& + val) { + return operator=(val.to_ap_int_base()); + } + + template + INLINE ap_concat_ref& operator=( + const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) { + return operator=((ap_ulong)(bool)(val)); + } + + INLINE operator ap_int_base<_AP_WR, false>() const { return get(); } + + INLINE operator ap_ulong() const { return get().to_uint64(); } + + template + INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_range_ref<_AP_W3, _AP_S3> > + operator,(const ap_range_ref<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_range_ref<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(ap_int_base<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >(*this, a2); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(volatile ap_int_base<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(const ap_int_base<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(const volatile ap_int_base<_AP_W3, _AP_S3> &a2) { + // FIXME op's life does not seem long enough + ap_int_base<_AP_W3, _AP_S3> op(a2); + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >( + *this, const_cast&>(op)); + } + + template + INLINE ap_concat_ref<_AP_WR, ap_concat_ref, 1, ap_bit_ref<_AP_W3, _AP_S3> > + operator,(const ap_bit_ref<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, 1, ap_bit_ref<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, + ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> > + operator,(const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, + ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref< + _AP_WR, ap_concat_ref, _AP_W3, + af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> > + operator,( + const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> &a2) { + return ap_concat_ref< + _AP_WR, ap_concat_ref, _AP_W3, + af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( + *this, + const_cast< + af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, 1, + af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> > + operator,(const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> + &a2) { + return ap_concat_ref< + _AP_WR, ap_concat_ref, 1, + af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( + *this, + const_cast&>( + a2)); + } + + template + INLINE ap_int_base operator&( + const ap_int_base<_AP_W3, _AP_S3>& a2) { + return get() & a2; + } + + template + INLINE ap_int_base operator|( + const ap_int_base<_AP_W3, _AP_S3>& a2) { + return get() | a2; + } + + template + INLINE ap_int_base operator^( + const ap_int_base<_AP_W3, _AP_S3>& a2) { + return get() ^ a2; + } + +#if 0 + template + INLINE ap_int_base slice() { + ap_int_base<_AP_WR, false> bv = get(); + return bv.slice(); + } +#endif + + INLINE ap_int_base<_AP_WR, false> get() const { + ap_int_base<_AP_WR, false> tmpVal(0); + int W_ref1 = mbv1.length(); + int W_ref2 = mbv2.length(); + ap_int_base<_AP_W2, false> v2(mbv2); + ap_int_base<_AP_W1, false> v1(mbv1); + tmpVal.V = _AP_ROOT_op_set_range(tmpVal.V, 0, W_ref2 - 1, v2.V); + tmpVal.V = + _AP_ROOT_op_set_range(tmpVal.V, W_ref2, W_ref1 + W_ref2 - 1, v1.V); + return tmpVal; + } + + template + INLINE void set(const ap_int_base<_AP_W3, false>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> vval(val); + int W_ref1 = mbv1.length(); + int W_ref2 = mbv2.length(); + ap_int_base<_AP_W1, false> tmpVal1; + tmpVal1.V = _AP_ROOT_op_get_range(vval.V, W_ref2, W_ref1 + W_ref2 - 1); + mbv1.set(tmpVal1); + ap_int_base<_AP_W2, false> tmpVal2; + tmpVal2.V = _AP_ROOT_op_get_range(vval.V, 0, W_ref2 - 1); + mbv2.set(tmpVal2); + } + + INLINE int length() const { return mbv1.length() + mbv2.length(); } +}; // struct ap_concat_ref + +/* Range (slice) reference. + ---------------------------------------------------------------- +*/ +template +struct ap_range_ref { + // struct ssdm_int or its sim model. + // TODO make it possible to reference to ap_fixed_base/ap_fixed/ap_ufixed + // and then we can retire af_range_ref. + typedef ap_int_base<_AP_W, _AP_S> ref_type; + ref_type& d_bv; + int l_index; + int h_index; + + public: + INLINE ap_range_ref(const ap_range_ref<_AP_W, _AP_S>& ref) + : d_bv(ref.d_bv), l_index(ref.l_index), h_index(ref.h_index) {} + + INLINE ap_range_ref(ref_type* bv, int h, int l) + : d_bv(*bv), l_index(l), h_index(h) {} + + INLINE ap_range_ref(const ref_type* bv, int h, int l) + : d_bv(*const_cast(bv)), l_index(l), h_index(h) {} + + INLINE operator ap_int_base<_AP_W, false>() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + INLINE operator ap_ulong() const { return to_uint64(); } + + /// @name assign operators + // @{ + + // FIXME disabled to work-around lagacy code assigning from sc_signal, + // which dependes on implicit type conversion. + // + // /// assign from hls supported C integral types. + // template + // INLINE typename _ap_type::enable_if<_ap_type::is_integral::value, + // ap_range_ref&>::type + // operator=(T val) { + // ap_int_base<_AP_W, false> tmp(val); + // d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + // return *this; + // } +#define ASSIGN_WITH_CTYPE(_Tp) \ + INLINE ap_range_ref& operator=(_Tp val) { \ + ap_int_base<_AP_W, false> tmp(val); \ + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); \ + return *this; \ + } + + ASSIGN_WITH_CTYPE(bool) + ASSIGN_WITH_CTYPE(char) + ASSIGN_WITH_CTYPE(signed char) + ASSIGN_WITH_CTYPE(unsigned char) + ASSIGN_WITH_CTYPE(short) + ASSIGN_WITH_CTYPE(unsigned short) + ASSIGN_WITH_CTYPE(int) + ASSIGN_WITH_CTYPE(unsigned int) + ASSIGN_WITH_CTYPE(long) + ASSIGN_WITH_CTYPE(unsigned long) + ASSIGN_WITH_CTYPE(ap_slong) + ASSIGN_WITH_CTYPE(ap_ulong) + ASSIGN_WITH_CTYPE(half) + ASSIGN_WITH_CTYPE(float) + ASSIGN_WITH_CTYPE(double) + +#undef ASSIGN_WITH_CTYPE + + /// assign using string. XXX crucial for cosim. + INLINE ap_range_ref& operator=(const char* val) { + const ap_int_base<_AP_W, false> tmp(val); // XXX figure out radix + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + return *this; + } + + /// assign from ap_int_base. + template + INLINE ap_range_ref& operator=(const ap_int_base<_AP_W2, _AP_S2>& val) { + ap_int_base<_AP_W, false> tmp(val); + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + return *this; + } + + /// copy assign operator + // XXX Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE ap_range_ref& operator=(const ap_range_ref& val) { + return operator=((const ap_int_base<_AP_W, false>)val); + } + + /// assign from range reference to ap_int_base. + template + INLINE ap_range_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + return operator=((const ap_int_base<_AP_W2, false>)val); + } + + /// assign from bit reference to ap_int_base. + template + INLINE ap_range_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=((ap_ulong)(bool)(val)); + } + + /// assign from ap_fixed_base. + template + INLINE ap_range_ref& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + val) { + return operator=(val.to_ap_int_base()); + } + + /// assign from range reference to ap_fixed_base. + template + INLINE ap_range_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((const ap_int_base<_AP_W2, false>)val); + } + + /// assign from bit reference to ap_fixed_base. + template + INLINE ap_range_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((ap_ulong)(bool)(val)); + } + + /// assign from compound reference. + template + INLINE ap_range_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + return operator=((const ap_int_base<_AP_W2 + _AP_W3, false>)(val)); + } + // @} + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, a2); + } + + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W, ap_int_base<_AP_W, _AP_S> > + operator,(ap_int_base<_AP_W, _AP_S>& a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W, + ap_int_base<_AP_W, _AP_S> >(*this, a2); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(const ap_bit_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref< + _AP_W, ap_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> a2) { + return ap_concat_ref< + _AP_W, ap_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast< + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &a2) { + return ap_concat_ref< + _AP_W, ap_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + a2)); + } + + template + INLINE bool operator==(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> hop(op2); + return lop == hop; + } + + template + INLINE bool operator!=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator==(op2)); + } + + template + INLINE bool operator<(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> hop(op2); + return lop < hop; + } + + template + INLINE bool operator<=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> hop(op2); + return lop <= hop; + } + + template + INLINE bool operator>(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator<=(op2)); + } + + template + INLINE bool operator>=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator<(op2)); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator|=( + const ap_range_ref<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V |= (op2.d_bv).V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator|=( + const ap_int_base<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V |= op2.V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator&=( + const ap_range_ref<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V &= (op2.d_bv).V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator&=( + const ap_int_base<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V &= op2.V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator^=( + const ap_range_ref<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V ^= (op2.d_bv).V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator^=( + const ap_int_base<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V ^= op2.V; + return *this; + }; + + INLINE ap_int_base<_AP_W, false> get() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + template + INLINE void set(const ap_int_base<_AP_W2, false>& val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + } + + INLINE int length() const { + return h_index >= l_index ? h_index - l_index + 1 : l_index - h_index + 1; + } + + INLINE int to_int() const { + return (int)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned to_uint() const { + return (unsigned)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE long to_long() const { + return (long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned long to_ulong() const { + return (unsigned long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_slong to_int64() const { + return (ap_slong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_ulong to_uint64() const { + return (ap_ulong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE bool and_reduce() const { + bool ret = true; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif + ret &= _AP_ROOT_op_get_bit(d_bv.V, i); + } + return ret; + } + + INLINE bool or_reduce() const { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif + ret |= _AP_ROOT_op_get_bit(d_bv.V, i); + } + return ret; + } + + INLINE bool xor_reduce() const { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif + ret ^= _AP_ROOT_op_get_bit(d_bv.V, i); + } + return ret; + } +#ifndef __SYNTHESIS__ + std::string to_string(signed char radix = 2) const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret.to_string(radix); + } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string(signed char radix = 2) const { + return 0; + } +#endif +}; // struct ap_range_ref + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<(std::ostream& os, + const ap_range_ref<_AP_W, _AP_S>& x) { + std::ios_base::fmtflags ff = std::cout.flags(); + if (ff & std::cout.hex) { + os << x.to_string(16); // don't print sign + } else if (ff & std::cout.oct) { + os << x.to_string(8); // don't print sign + } else { + os << x.to_string(10); + } + return os; +} +#endif // ifndef __SYNTHESIS__ + +#ifndef __SYNTHESIS__ +template +INLINE std::istream& operator>>(std::istream& in, + ap_range_ref<_AP_W, _AP_S>& op) { + std::string str; + in >> str; + op = ap_int_base<_AP_W, _AP_S>(str.c_str()); + return in; +} +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_AUTOCC + +/* Bit reference. + ---------------------------------------------------------------- +*/ +template +struct ap_bit_ref { + // struct ssdm_int or its sim model. + // TODO make it possible to reference to ap_fixed_base/ap_fixed/ap_ufixed + // and then we can retire af_bit_ref. + typedef ap_int_base<_AP_W, _AP_S> ref_type; + ref_type& d_bv; + int d_index; + + public: + // copy ctor + INLINE ap_bit_ref(const ap_bit_ref<_AP_W, _AP_S>& ref) + : d_bv(ref.d_bv), d_index(ref.d_index) {} + + INLINE ap_bit_ref(ref_type* bv, int index = 0) : d_bv(*bv), d_index(index) {} + + INLINE ap_bit_ref(const ref_type* bv, int index = 0) + : d_bv(*const_cast(bv)), d_index(index) {} + + INLINE operator bool() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + INLINE bool to_bool() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + // assign op from hls supported C integral types. + // FIXME disabled to support sc_signal. + // NOTE this used to be unsigned long long. + //template + //INLINE typename _ap_type::enable_if<_ap_type::is_integral::value, + // ap_bit_ref&>::type + //operator=(T val) { + // d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index, val); + // return *this; + //} +#define ASSIGN_WITH_CTYPE(_Tp) \ + INLINE ap_bit_ref& operator=(_Tp val) { \ + d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index, val); \ + return *this; \ + } + + ASSIGN_WITH_CTYPE(bool) + ASSIGN_WITH_CTYPE(char) + ASSIGN_WITH_CTYPE(signed char) + ASSIGN_WITH_CTYPE(unsigned char) + ASSIGN_WITH_CTYPE(short) + ASSIGN_WITH_CTYPE(unsigned short) + ASSIGN_WITH_CTYPE(int) + ASSIGN_WITH_CTYPE(unsigned int) + ASSIGN_WITH_CTYPE(long) + ASSIGN_WITH_CTYPE(unsigned long) + ASSIGN_WITH_CTYPE(ap_slong) + ASSIGN_WITH_CTYPE(ap_ulong) + +#undef ASSIGN_WITH_CTYPE + +#define ASSIGN_WITH_CTYPE_FP(_Tp) \ + INLINE ap_bit_ref& operator=(_Tp val) { \ + bool tmp_val = val; \ + d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index,tmp_val); \ + return *this; \ + } + + ASSIGN_WITH_CTYPE_FP(half) + ASSIGN_WITH_CTYPE_FP(float) + ASSIGN_WITH_CTYPE_FP(double) + +#undef ASSIGN_WITH_CTYPE_FP + + + template + INLINE ap_bit_ref& operator=(const ap_int_base<_AP_W2, _AP_S2>& val) { + return operator=((ap_ulong)(val.V != 0)); + } + + template + INLINE ap_bit_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + return operator=((ap_int_base<_AP_W2, false>)val); + } + + // Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE ap_bit_ref& operator=(const ap_bit_ref& val) { + return operator=((ap_ulong)(bool)val); + } + + template + INLINE ap_bit_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=((ap_ulong)(bool)val); + } + + template + INLINE ap_bit_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((const ap_int_base<_AP_W2, false>)val); + } + + template + INLINE ap_bit_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((ap_ulong)(bool)val); + } + + template + INLINE ap_bit_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + return operator=((const ap_int_base<_AP_W2 + _AP_W3, false>)val); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, a2); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) { + ap_int_base<_AP_W2, _AP_S2> op(a2); + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + ap_int_base<_AP_W2, _AP_S2> op(a2); + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > operator,( + const ap_bit_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref< + 1, ap_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref< + 1, ap_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast< + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref<1, ap_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + a2)); + } + + template + INLINE bool operator==(const ap_bit_ref<_AP_W2, _AP_S2>& op) { + return get() == op.get(); + } + + template + INLINE bool operator!=(const ap_bit_ref<_AP_W2, _AP_S2>& op) { + return get() != op.get(); + } + + INLINE bool get() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + INLINE bool get() { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + template + INLINE void set(const ap_int_base<_AP_W3, false>& val) { + operator=(val); + } + + INLINE bool operator~() const { + bool bit = _AP_ROOT_op_get_bit(d_bv.V, d_index); + return bit ? false : true; + } + + INLINE int length() const { return 1; } + +#ifndef __SYNTHESIS__ + std::string to_string() const { return get() ? "1" : "0"; } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string() const { return 0; } +#endif +}; // struct ap_bit_ref + +/* ap_range_ref with int. + * ------------------------------------------------------------ + */ +// equality and relational operators. +#define REF_REL_OP_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(const ap_range_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return ap_int_base<_AP_W, false>(op) \ + REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_bit_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return bool(op) REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const ap_bit_ref<_AP_W, _AP_S>& op) { \ + return op2 REL_OP bool(op); \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_concat_ref<_AP_W, _AP_T, _AP_W1, _AP_T1>& op, C_TYPE op2) { \ + return ap_int_base<_AP_W + _AP_W1, false>(op) \ + REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } + +// Make the line shorter than 5000 chars +#define REF_REL_WITH_INT_1(C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(>, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(<, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(>=, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(<=, C_TYPE, _AP_WI, _AP_SI) + +REF_REL_WITH_INT_1(bool, 1, false) +REF_REL_WITH_INT_1(char, 8, CHAR_IS_SIGNED) +REF_REL_WITH_INT_1(signed char, 8, true) +REF_REL_WITH_INT_1(unsigned char, 8, false) +REF_REL_WITH_INT_1(short, _AP_SIZE_short, true) +REF_REL_WITH_INT_1(unsigned short, _AP_SIZE_short, false) +REF_REL_WITH_INT_1(int, _AP_SIZE_int, true) +REF_REL_WITH_INT_1(unsigned int, _AP_SIZE_int, false) +REF_REL_WITH_INT_1(long, _AP_SIZE_long, true) +REF_REL_WITH_INT_1(unsigned long, _AP_SIZE_long, false) +REF_REL_WITH_INT_1(ap_slong, _AP_SIZE_ap_slong, true) +REF_REL_WITH_INT_1(ap_ulong, _AP_SIZE_ap_slong, false) + +// Make the line shorter than 5000 chars +#define REF_REL_WITH_INT_2(C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(==, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(!=, C_TYPE, _AP_WI, _AP_SI) + +REF_REL_WITH_INT_2(bool, 1, false) +REF_REL_WITH_INT_2(char, 8, CHAR_IS_SIGNED) +REF_REL_WITH_INT_2(signed char, 8, true) +REF_REL_WITH_INT_2(unsigned char, 8, false) +REF_REL_WITH_INT_2(short, _AP_SIZE_short, true) +REF_REL_WITH_INT_2(unsigned short, _AP_SIZE_short, false) +REF_REL_WITH_INT_2(int, _AP_SIZE_int, true) +REF_REL_WITH_INT_2(unsigned int, _AP_SIZE_int, false) +REF_REL_WITH_INT_2(long, _AP_SIZE_long, true) +REF_REL_WITH_INT_2(unsigned long, _AP_SIZE_long, false) +REF_REL_WITH_INT_2(ap_slong, _AP_SIZE_ap_slong, true) +REF_REL_WITH_INT_2(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef REF_REL_OP_WITH_INT +#undef REF_REL_WITH_INT_1 +#undef REF_REL_WITH_INT_2 + +#define REF_BIN_OP_WITH_INT(BIN_OP, RTYPE, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE typename ap_int_base<_AP_W, false>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_range_ref<_AP_W, _AP_S>& op, C_TYPE op2) { \ + return ap_int_base<_AP_W, false>(op) \ + BIN_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W2, _AP_S2>::template RType<_AP_W, \ + false>::RTYPE \ + operator BIN_OP(C_TYPE op2, const ap_range_ref<_AP_W, _AP_S>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(op2) \ + BIN_OP ap_int_base<_AP_W, false>(op); \ + } + +// arithmetic operators. +#define REF_BIN_OP_WITH_INT_ARITH(C_TYPE, _AP_W2, _AP_S2) \ + REF_BIN_OP_WITH_INT(+, plus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(-, minus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(*, mult, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(/, div, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(%, mod, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_BIN_OP_WITH_INT_ARITH(bool, 1, false) +REF_BIN_OP_WITH_INT_ARITH(char, 8, CHAR_IS_SIGNED) +REF_BIN_OP_WITH_INT_ARITH(signed char, 8, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned char, 8, false) +REF_BIN_OP_WITH_INT_ARITH(short, _AP_SIZE_short, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned short, _AP_SIZE_short, false) +REF_BIN_OP_WITH_INT_ARITH(int, _AP_SIZE_int, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned int, _AP_SIZE_int, false) +REF_BIN_OP_WITH_INT_ARITH(long, _AP_SIZE_long, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned long, _AP_SIZE_long, false) +REF_BIN_OP_WITH_INT_ARITH(ap_slong, _AP_SIZE_ap_slong, true) +REF_BIN_OP_WITH_INT_ARITH(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef REF_BIN_OP_WITH_INT_ARITH + +// bitwise and shift operators +#define REF_BIN_OP_WITH_INT_BITS(C_TYPE, _AP_W2, _AP_S2) \ + REF_BIN_OP_WITH_INT(&, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(|, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(^, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(>>, arg1, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(<<, arg1, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_BIN_OP_WITH_INT_BITS(bool, 1, false) +REF_BIN_OP_WITH_INT_BITS(char, 8, CHAR_IS_SIGNED) +REF_BIN_OP_WITH_INT_BITS(signed char, 8, true) +REF_BIN_OP_WITH_INT_BITS(unsigned char, 8, false) +REF_BIN_OP_WITH_INT_BITS(short, _AP_SIZE_short, true) +REF_BIN_OP_WITH_INT_BITS(unsigned short, _AP_SIZE_short, false) +REF_BIN_OP_WITH_INT_BITS(int, _AP_SIZE_int, true) +REF_BIN_OP_WITH_INT_BITS(unsigned int, _AP_SIZE_int, false) +REF_BIN_OP_WITH_INT_BITS(long, _AP_SIZE_long, true) +REF_BIN_OP_WITH_INT_BITS(unsigned long, _AP_SIZE_long, false) +REF_BIN_OP_WITH_INT_BITS(ap_slong, _AP_SIZE_ap_slong, true) +REF_BIN_OP_WITH_INT_BITS(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef REF_BIN_OP_WITH_INT_BITS + +/* ap_range_ref with ap_range_ref + * ------------------------------------------------------------ + */ +#define REF_BIN_OP(BIN_OP, RTYPE) \ + template \ + INLINE \ + typename ap_int_base<_AP_W, false>::template RType<_AP_W2, false>::RTYPE \ + operator BIN_OP(const ap_range_ref<_AP_W, _AP_S>& lhs, \ + const ap_range_ref<_AP_W2, _AP_S2>& rhs) { \ + return (lhs.operator ap_int_base<_AP_W, false>())BIN_OP( \ + rhs.operator ap_int_base<_AP_W2, false>()); \ + } + +REF_BIN_OP(+, plus) +REF_BIN_OP(-, minus) +REF_BIN_OP(*, mult) +REF_BIN_OP(/, div) +REF_BIN_OP(%, mod) +REF_BIN_OP(&, logic) +REF_BIN_OP(|, logic) +REF_BIN_OP(^, logic) +REF_BIN_OP(>>, arg1) +REF_BIN_OP(<<, arg1) + +/* ap_concat_ref with ap_concat_ref. + * ------------------------------------------------------------ + */ + +//************************************************************************ +// Implement +// ap_int_base = ap_concat_ref OP ap_concat_ref +// for operators +, -, *, /, %, >>, <<, &, |, ^ +// Without these operators the operands are converted to int64 and +// larger results lose informations (higher order bits). +// +// operand OP +// / | +// left-concat right-concat +// / | / | +// +// +// _AP_LW1, _AP_LT1 (width and type of left-concat's left side) +// _AP_LW2, _AP_LT2 (width and type of left-concat's right side) +// Similarly for RHS of operand OP: _AP_RW1, AP_RW2, _AP_RT1, _AP_RT2 +// +// In Verilog 2001 result of concatenation is always unsigned even +// when both sides are signed. +//************************************************************************ + +#undef SYN_CONCAT_REF_BIN_OP + +#define SYN_CONCAT_REF_BIN_OP(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_LW1 + _AP_LW2, false>::template RType< \ + _AP_RW1 + _AP_RW2, false>::RTYPE \ + operator BIN_OP( \ + const ap_concat_ref<_AP_LW1, _AP_LT1, _AP_LW2, _AP_LT2>& lhs, \ + const ap_concat_ref<_AP_RW1, _AP_RT1, _AP_RW2, _AP_RT2>& rhs) { \ + return lhs.get() BIN_OP rhs.get(); \ + } + +SYN_CONCAT_REF_BIN_OP(+, plus) +SYN_CONCAT_REF_BIN_OP(-, minus) +SYN_CONCAT_REF_BIN_OP(*, mult) +SYN_CONCAT_REF_BIN_OP(/, div) +SYN_CONCAT_REF_BIN_OP(%, mod) +SYN_CONCAT_REF_BIN_OP(&, logic) +SYN_CONCAT_REF_BIN_OP(|, logic) +SYN_CONCAT_REF_BIN_OP(^, logic) +SYN_CONCAT_REF_BIN_OP(>>, arg1) +SYN_CONCAT_REF_BIN_OP(<<, arg1) + +#undef SYN_CONCAT_REF_BIN_OP + +#define CONCAT_OP_WITH_INT(C_TYPE, _AP_WI, _AP_SI) \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + const ap_int_base<_AP_W, _AP_S> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op2); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op1); \ + ret <<= _AP_WI; \ + if (_AP_SI) { \ + val <<= _AP_W; \ + val >>= _AP_W; \ + } \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + C_TYPE op1, const ap_int_base<_AP_W, _AP_S> &op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op1); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op2); \ + if (_AP_S) { \ + ret <<= _AP_WI; \ + ret >>= _AP_WI; \ + } \ + ret |= val << _AP_W; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + const ap_range_ref<_AP_W, _AP_S> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op2); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op1); \ + ret <<= _AP_WI; \ + if (_AP_SI) { \ + val <<= _AP_W; \ + val >>= _AP_W; \ + } \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + C_TYPE op1, const ap_range_ref<_AP_W, _AP_S> &op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op1); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op2); \ + int len = op2.length(); \ + val <<= len; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_WI + 1, false> operator,( \ + const ap_bit_ref<_AP_W, _AP_S> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + 1, false> val(op2); \ + val[_AP_WI] = op1; \ + return val; \ + } \ + template \ + INLINE ap_int_base<_AP_WI + 1, false> operator,( \ + C_TYPE op1, const ap_bit_ref<_AP_W, _AP_S> &op2) { \ + ap_int_base<_AP_WI + 1, false> val(op1); \ + val <<= 1; \ + val[0] = op2; \ + return val; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_W2 + _AP_WI, false> operator,( \ + const ap_concat_ref<_AP_W, _AP_T, _AP_W2, _AP_T2> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> val(op2); \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> ret(op1); \ + if (_AP_SI) { \ + val <<= _AP_W + _AP_W2; \ + val >>= _AP_W + _AP_W2; \ + } \ + ret <<= _AP_WI; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_W2 + _AP_WI, false> operator,( \ + C_TYPE op1, const ap_concat_ref<_AP_W, _AP_T, _AP_W2, _AP_T2> &op2) { \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> val(op1); \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> ret(op2); \ + int len = op2.length(); \ + val <<= len; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op1, \ + C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op2); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op1); \ + if (_AP_SI) { \ + val <<= _AP_W; \ + val >>= _AP_W; \ + } \ + ret <<= _AP_WI; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + C_TYPE op1, \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op1); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op2); \ + int len = op2.length(); \ + val <<= len; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<1 + _AP_WI, false> operator,( \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op1, \ + C_TYPE op2) { \ + ap_int_base<_AP_WI + 1, _AP_SI> val(op2); \ + val[_AP_WI] = op1; \ + return val; \ + } \ + template \ + INLINE ap_int_base<1 + _AP_WI, false> operator,( \ + C_TYPE op1, \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op2) { \ + ap_int_base<_AP_WI + 1, _AP_SI> val(op1); \ + val <<= 1; \ + val[0] = op2; \ + return val; \ + } + +CONCAT_OP_WITH_INT(bool, 1, false) +CONCAT_OP_WITH_INT(char, 8, CHAR_IS_SIGNED) +CONCAT_OP_WITH_INT(signed char, 8, true) +CONCAT_OP_WITH_INT(unsigned char, 8, false) +CONCAT_OP_WITH_INT(short, _AP_SIZE_short, true) +CONCAT_OP_WITH_INT(unsigned short, _AP_SIZE_short, false) +CONCAT_OP_WITH_INT(int, _AP_SIZE_int, true) +CONCAT_OP_WITH_INT(unsigned int, _AP_SIZE_int, false) +CONCAT_OP_WITH_INT(long, _AP_SIZE_long, true) +CONCAT_OP_WITH_INT(unsigned long, _AP_SIZE_long, false) +CONCAT_OP_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +CONCAT_OP_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef CONCAT_OP_WITH_INT + +#define CONCAT_SHIFT_WITH_INT(C_TYPE, OP) \ + template \ + INLINE ap_uint<_AP_W + _AP_W1> operator OP( \ + const ap_concat_ref<_AP_W, _AP_T, _AP_W1, _AP_T1> lhs, C_TYPE rhs) { \ + return ap_uint<_AP_W + _AP_W1>(lhs).get() OP int(rhs); \ + } + +// FIXME int(rhs) may loose precision. + +CONCAT_SHIFT_WITH_INT(int, <<) +CONCAT_SHIFT_WITH_INT(unsigned int, <<) +CONCAT_SHIFT_WITH_INT(long, <<) +CONCAT_SHIFT_WITH_INT(unsigned long, <<) +CONCAT_SHIFT_WITH_INT(ap_slong, <<) +CONCAT_SHIFT_WITH_INT(ap_ulong, <<) + +CONCAT_SHIFT_WITH_INT(int, >>) +CONCAT_SHIFT_WITH_INT(unsigned int, >>) +CONCAT_SHIFT_WITH_INT(long, >>) +CONCAT_SHIFT_WITH_INT(unsigned long, >>) +CONCAT_SHIFT_WITH_INT(ap_slong, >>) +CONCAT_SHIFT_WITH_INT(ap_ulong, >>) + +#endif // ifndef __cplusplus else +#endif // ifndef __AP_INT_REF_H__ else + +// -*- cpp -*- + + diff --git a/vitis/v2020_1/ap_int_special.h b/vitis/v2020_1/ap_int_special.h new file mode 100644 index 00000000..2cd8f962 --- /dev/null +++ b/vitis/v2020_1/ap_int_special.h @@ -0,0 +1,253 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef AP_INT_SPECIAL_H +#define AP_INT_SPECIAL_H +#ifndef __SYNTHESIS__ +#include +#include +#endif +// FIXME AP_AUTOCC cannot handle many standard headers, so declare instead of +// include. +// #include +namespace std { +template class complex; +} + +/* + TODO: Modernize the code using C++11/C++14 + 1. constexpr http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0415r0.html + 2. move constructor +*/ + +namespace std { +/* + Specialize std::complex to zero initialization ap_int. + + To reduce the area cost, ap_int is not zero initialized, just like basic + types float or double. However, libstdc++ provides specialization for float, + double and long double, initializing image part to 0 when not specified. + + This has become a difficulty in switching legacy code from these C types to + ap_int. To ease the tranform of legacy code, we have to implement + specialization of std::complex<> for our type. + + As ap_int is a template, it is impossible to specialize only the methods + that causes default initialization of value type in std::complex<>. An + explicit full specialization of the template class has to be done, covering + all the member functions and operators of std::complex<> as specified + in standard 26.2.4 and 26.2.5. +*/ +template +class complex > { + public: + typedef ap_int<_AP_W> _Tp; + typedef _Tp value_type; + + // 26.2.4/1 + // Constructor without argument + // Default initialize, so that in dataflow, the variable is only written once. + complex() : _M_real(_Tp()), _M_imag(_Tp()) {} + // Constructor with ap_int. + // Zero initialize image part when not specified, so that `C(1) == C(1,0)` + complex(const _Tp &__r, const _Tp &__i = _Tp(0)) + : _M_real(__r), _M_imag(__i) {} + + // Constructor with another complex number + template + complex(const complex<_Up> &__z) : _M_real(__z.real()), _M_imag(__z.imag()) {} + +#if __cplusplus >= 201103L + const _Tp& real() const { return _M_real; } + const _Tp& imag() const { return _M_imag; } +#else + _Tp& real() { return _M_real; } + const _Tp& real() const { return _M_real; } + _Tp& imag() { return _M_imag; } + const _Tp& imag() const { return _M_imag; } +#endif + + void real(_Tp __val) { _M_real = __val; } + + void imag(_Tp __val) { _M_imag = __val; } + + // Assign this complex number with ap_int. + // Zero initialize image poarrt, so that `C c; c = 1; c == C(1,0);` + complex<_Tp> &operator=(const _Tp __t) { + _M_real = __t; + _M_imag = _Tp(0); + return *this; + } + + // 26.2.5/1 + // Add ap_int to this complex number. + complex<_Tp> &operator+=(const _Tp &__t) { + _M_real += __t; + return *this; + } + + // 26.2.5/3 + // Subtract ap_int from this complex number. + complex<_Tp> &operator-=(const _Tp &__t) { + _M_real -= __t; + return *this; + } + + // 26.2.5/5 + // Multiply this complex number by ap_int. + complex<_Tp> &operator*=(const _Tp &__t) { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + // Divide this complex number by ap_int. + complex<_Tp> &operator/=(const _Tp &__t) { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + // Assign complex number to this complex number. + template + complex<_Tp> &operator=(const complex<_Up> &__z) { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + // Add complex number to this. + template + complex<_Tp> &operator+=(const complex<_Up> &__z) { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + // Subtract complex number from this. + template + complex<_Tp> &operator-=(const complex<_Up> &__z) { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // Multiply this by complex number. + template + complex<_Tp> &operator*=(const complex<_Up> &__z) { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // Divide this by complex number. + template + complex<_Tp> &operator/=(const complex<_Up> &__z) { + complex<_Tp> cj (__z.real(), -__z.imag()); + complex<_Tp> a = (*this) * cj; + complex<_Tp> b = cj * __z; + _M_real = a.real() / b.real(); + _M_imag = a.imag() / b.real(); + return *this; + } + + private: + _Tp _M_real; + _Tp _M_imag; + +}; // class complex > + + +/* + Non-member operations + These operations are not required by standard in 26.2.6, but libstdc++ + defines them for + float, double or long double's specialization. +*/ +// Compare complex number with ap_int. +template +inline bool operator==(const complex > &__x, const ap_int<_AP_W> &__y) { + return __x.real() == __y && + __x.imag() == 0; +} + +// Compare ap_int with complex number. +template +inline bool operator==(const ap_int<_AP_W> &__x, const complex > &__y) { + return __x == __y.real() && + 0 == __y.imag(); +} + +// Compare complex number with ap_int. +template +inline bool operator!=(const complex > &__x, const ap_int<_AP_W> &__y) { + return __x.real() != __y || + __x.imag() != 0; +} + +// Compare ap_int with complex number. +template +inline bool operator!=(const ap_int<_AP_W> &__x, const complex > &__y) { + return __x != __y.real() || + 0 != __y.imag(); +} + +} // namespace std + +#endif // ifndef AP_INT_SPECIAL_H + + diff --git a/vitis/v2020_1/ap_shift_reg.h b/vitis/v2020_1/ap_shift_reg.h new file mode 100644 index 00000000..b09fbfa6 --- /dev/null +++ b/vitis/v2020_1/ap_shift_reg.h @@ -0,0 +1,144 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef __SIM_AP_SHIFT_REG_H__ +#define __SIM_AP_SHIFT_REG_H__ + + +/* + * This file contains a C++ model of shift register. + * It defines C level simulation model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#ifdef __HLS_SYN__ +#error ap_shift_reg simulation header file is not applicable for synthesis +#else + +#include + +////////////////////////////////////////////// +// C level simulation model for ap_shift_reg +////////////////////////////////////////////// +template +class ap_shift_reg +{ + public: + /// Constructors + ap_shift_reg() { } + ap_shift_reg(const char* name) { } + /// Destructor + virtual ~ap_shift_reg() { } + + private: + /// Make copy constructor and assignment operator private + ap_shift_reg(const ap_shift_reg< __SHIFT_T__, __SHIFT_DEPTH__ >& shreg) + { + for (unsigned i = 0; i < __SHIFT_DEPTH__; ++i) + Array[i] = shreg.Array[i]; + } + + ap_shift_reg& operator = (const ap_shift_reg< __SHIFT_T__, + __SHIFT_DEPTH__ >& shreg) + { + for (unsigned i = 0; i < __SHIFT_DEPTH__; ++i) + Array[i] = shreg.Array[i]; + return *this; + } + + public: + // Shift the queue, push to back and read from a given address. + __SHIFT_T__ shift(__SHIFT_T__ DataIn, + unsigned int Addr = __SHIFT_DEPTH__ - 1, bool Enable = true) + { + assert(Addr < __SHIFT_DEPTH__ && + "Out-of-bound shift is found in ap_shift_reg."); + __SHIFT_T__ ret = Array[Addr]; + if (Enable) { + for (unsigned int i = __SHIFT_DEPTH__ - 1; i > 0; --i) + Array[i] = Array[i-1]; + Array[0] = DataIn; + } + return ret; + } + + // Read from a given address. + __SHIFT_T__ read(unsigned int Addr = __SHIFT_DEPTH__ - 1) const + { + assert(Addr < __SHIFT_DEPTH__ && + "Out-of-bound read is found in ap_shift_reg."); + return Array[Addr]; + } + + protected: + __SHIFT_T__ Array[__SHIFT_DEPTH__]; +}; + +#endif //__SYNTHESIS__ + +#endif //__cplusplus + +#endif //__SIM_AP_SHIFT_REG_H__ + + diff --git a/vitis/v2020_1/ap_stream.h b/vitis/v2020_1/ap_stream.h new file mode 100644 index 00000000..307ef8c8 --- /dev/null +++ b/vitis/v2020_1/ap_stream.h @@ -0,0 +1,284 @@ +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + */ + +#ifndef __SIM_AP_STREAM__ +#define __SIM_AP_STREAM__ + +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#ifdef __HLS_SYN__ +#error ap_stream simulation header file is not applicable for synthesis +#else + +#ifdef _MSC_VER +#define STRINGIZE_HELPER(x) #x +#define STRINGIZE(x) STRINGIZE_HELPER(x) +#define WARNING(desc) message(__FILE__ "(" STRINGIZE(__LINE__) ") : warning: " #desc) +#error WARNING(AP_STREAM macros are deprecated. Please use hls::stream<> from "hls_stream.h" instead.) +#else +#error AP_STREAM macros are deprecated. Please use hls::stream<> from "hls_stream.h" instead. +#endif + +#include +#include +#ifndef AP_STREAM_MAX_QUEUE_SIZE +//#define AP_STREAM_MAX_QUEUE_SIZE (1920*1080) +#define AP_STREAM_MAX_QUEUE_SIZE 0 // MAX_SIZE=0 leads to an elastic stream +#endif + +#define C_EXTERN extern "C" // avoid C++ style name mangling + +#define _paste(F,A) __AP_##F(A) + +// Blocking Read & Write +#define AP_STREAM_READ(N,V) AP_STREAM_READ_FN(N)(V) +#define __AP_STREAM_READ_FN(N) ap_generic_stream_read_##N +#define AP_STREAM_READ_FN(name) _paste(STREAM_READ_FN,name) +#define AP_STREAM_WRITE(N,D) AP_STREAM_WRITE_FN(N)(D) +#define __AP_STREAM_WRITE_FN(N) ap_generic_stream_write_##N +#define AP_STREAM_WRITE_FN(name) _paste(STREAM_WRITE_FN,name) + +// Nonblocking Read & Write +#define AP_STREAM_READ_NB(N,V) AP_STREAM_READ_NB_FN(N)(V) +#define __AP_STREAM_READ_NB_FN(N) ap_generic_stream_read_nb_##N +#define AP_STREAM_READ_NB_FN(name) _paste(STREAM_READ_NB_FN,name) +#define AP_STREAM_WRITE_NB(N,D) AP_STREAM_WRITE_NB_FN(N)(D) +#define __AP_STREAM_WRITE_NB_FN(N) ap_generic_stream_write_nb_##N +#define AP_STREAM_WRITE_NB_FN(name) _paste(STREAM_WRITE_NB_FN,name) + +// Empty & Full +#define AP_STREAM_EMPTY(N) AP_STREAM_EMPTY_FN(N)() +#define __AP_STREAM_EMPTY_FN(N) ap_generic_stream_empty_##N +#define AP_STREAM_EMPTY_FN(name) _paste(STREAM_EMPTY_FN,name) +#define AP_STREAM_FULL(N) AP_STREAM_FULL_FN(N)() +#define __AP_STREAM_FULL_FN(N) ap_generic_stream_full_##N +#define AP_STREAM_FULL_FN(name) _paste(STREAM_FULL_FN,name) + +/* Return signed char to be consistent with syn model, which returns + * signed char for C compatibility. + */ + +#define AP_STREAM_INTERFACE(type, name) \ + C_EXTERN void ap_generic_stream_read_##name(type& value); \ + C_EXTERN void ap_generic_stream_write_##name(type data); \ + C_EXTERN signed char ap_generic_stream_read_nb_##name(type& value); \ + C_EXTERN signed char ap_generic_stream_write_nb_##name(type data); \ + C_EXTERN signed char ap_generic_stream_empty_##name(); \ + C_EXTERN signed char ap_generic_stream_full_##name(); + +#define AP_STREAM_SIZE(type, name, size) \ + ap_stream ap_stream_##name(size, #name); \ + AP_STREAM_INTERFACE_DEF(type, name) + +#define AP_STREAM_INTERFACE_DEF(type, name) \ + C_EXTERN void ap_generic_stream_read_##name(type& value) { \ + value = ap_stream_##name.pop(); \ + } \ + C_EXTERN void ap_generic_stream_write_##name(type data) { \ + ap_stream_##name.push(data); \ + } \ + C_EXTERN signed char ap_generic_stream_read_nb_##name(type& value) { \ + signed char empty_n = ap_stream_##name.read(value); \ + return empty_n; \ + } \ + C_EXTERN signed char ap_generic_stream_write_nb_##name(type data) { \ + signed char full_n = ap_stream_##name.write(data); \ + return full_n; \ + } \ + C_EXTERN signed char ap_generic_stream_empty_##name() { \ + return ap_stream_##name.empty(); \ + } \ + C_EXTERN signed char ap_generic_stream_full_##name() { \ + return ap_stream_##name.full(); \ + } + +// Extern stream +#define EXTERN_AP_STREAM(type, name) \ + extern ap_stream ap_stream_##name; \ + AP_STREAM_INTERFACE(type, name) +#define EXTERN_AP_STREAM_SIZE(type, name, size) EXTERN_AP_STREAM(type, name) + +#ifdef AESL_TB +#define AP_STREAM(type, name) EXTERN_AP_STREAM(type, name) +#else +#define AP_STREAM(type, name) AP_STREAM_SIZE(type, name, 0) +#endif // AESL_TB + +// FIFO stream +#define AP_STREAM_FIFO(type, name) AP_STREAM(type, name) +#define AP_STREAM_FIFO_SIZE(type, name, size) AP_STREAM_SIZE(type, name, size) +#define EXTERN_AP_STREAM_FIFO(type, name) EXTERN_AP_STREAM(type, name) +#define EXTERN_AP_STREAM_FIFO_SIZE(type, name, size) EXTERN_AP_STREAM_SIZE(type, name, size) +// HS stream +#define AP_STREAM_HS(type, name) AP_STREAM(type, name) +#define AP_STREAM_HS_SIZE(type, name, size) AP_STREAM_SIZE(type, name, size) +#define EXTERN_AP_STREAM_HS(type, name) EXTERN_AP_STREAM(type, name) +#define EXTERN_AP_STREAM_HS_SIZE(type, name, size) EXTERN_AP_STREAM_SIZE(type, name, size) + +/////////////// ap_stream class ////////////// +template +class ap_stream { + + protected: + const char* _name; + std::deque _data; // container for the elements + unsigned _capacity; + + public: + // default constructor + ap_stream(const char* name) { + // capacity set to predefined maximum + _capacity = AP_STREAM_MAX_QUEUE_SIZE; + _name = name; + } + + ap_stream(unsigned int max, const char* name) { + _capacity = (max > 0) ? max : AP_STREAM_MAX_QUEUE_SIZE; + _name = name; + } + + /// Destructor + /// Check status of the queue + virtual ~ap_stream() { + if (!empty()) + printf("WARNING: Stream \'%s\' remains non-empty when the program exits.\n", _name); + } + + typename std::deque::size_type size() const { + return _data.size(); + } + + typedef typename std::deque::const_iterator iterator; + + iterator begin() const { return _data.begin(); } + iterator end() const { return _data.end(); } + + bool empty() const { return _data.empty(); } + bool full() const { + if (_capacity > 0) + return (_data.size() >= _capacity); + return false; + } + + bool read(T& head) { + if (empty()) { + head = T(); + return false; + } + head = pop(); + return true; + } + + T read() { return pop(); } + + bool write(const T& tail) { + if (full()) + return false; + push(tail); + return true; + } + + void push(const T& elem) { + if (!full()) + _data.push_back(elem); + else { + //printf("WARNING: Pushing a full FIFO \'%s\'; increasing FIFO capacity from %d to %d.\n", _name, _capacity, _capacity + 1); + //assert(0); + ++_capacity; + _data.push_back(elem); + } + } + + T pop() { + if (_data.empty()) { + printf("WARNING: Popping an empty FIFO \'%s\'.\n", _name); + return T(); + //assert(0); + } + T elem(_data.front()); + _data.pop_front(); + return elem; + } + + T front() { + if (_data.empty()) { + printf("WARNING: Peeking the front of an empty FIFO \'%s\'.\n", _name); + return T(); + //assert(0); + } + return _data.front(); + } + + T back() { + if (_data.empty()) { + printf("WARNING: Peeking the back of an empty FIFO \'%s\'.\n", _name); + return T(); + //assert(0); + } + return _data.back(); + } + + /// Fifo size + size_t size() { + return _data.size(); + } +}; + +#endif //__SYNTHESIS__ + +#endif //__cplusplus + +#endif //__SIM_AP_STREAM__ + + diff --git a/vitis/v2020_1/ap_sysc/AXI4_if.h b/vitis/v2020_1/ap_sysc/AXI4_if.h new file mode 100644 index 00000000..16453ea8 --- /dev/null +++ b/vitis/v2020_1/ap_sysc/AXI4_if.h @@ -0,0 +1,18 @@ +#include "hls_bus_if.h" + +template +class AXI4M_bus_port: public hls_bus_port<_VHLS_DT> +{ + typedef hls_bus_port<_VHLS_DT> Base; +public: + + AXI4M_bus_port() { + } + + explicit AXI4M_bus_port( const char* name_ ):Base(name_) + { + } + +}; + + diff --git a/vitis/v2020_1/ap_sysc/ap_mem_if.h b/vitis/v2020_1/ap_sysc/ap_mem_if.h new file mode 100644 index 00000000..b62b65d9 --- /dev/null +++ b/vitis/v2020_1/ap_sysc/ap_mem_if.h @@ -0,0 +1,418 @@ +/* -*- sysc -*-*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef _AP_MEM_IF_H +#define _AP_MEM_IF_H + +#include + +//#define USER_DEBUG_MEMORY + +/* ap_mem_port Types */ +enum ap_mem_port_type { + RAM_1P = 0, + RAM1P = RAM_1P, + RAM_2P = 1, + RAM2P = RAM_2P, + RAM_T2P = 2, + RAMT2P = RAM_T2P, + ROM_1P = 3, + ROM1P = ROM_1P, + ROM_2P = 4, + ROM2P = ROM_2P, +}; + +//================================================================= +//======================== ap_mem ports ========================= +//================================================================= +//---------------------------------------------------------- +// ap_mem_if +//---------------------------------------------------------- +template +class ap_mem_if : public sc_interface +{ +public: + + // read the current value + virtual _hls_mem_dt& read(const _hls_mem_addrt addr) = 0; + virtual void write(const _hls_mem_addrt addr, const _hls_mem_dt data) = 0; + +protected: + + // constructor + ap_mem_if() + {} + +private: + // disabled + ap_mem_if( const ap_mem_if<_hls_mem_dt, _hls_mem_addrt, t_size, portType>& ); + ap_mem_if<_hls_mem_dt, _hls_mem_addrt, t_size, portType>& operator = ( const ap_mem_if<_hls_mem_dt, _hls_mem_addrt, t_size, portType>& ); +}; + +//---------------------------------------------------------- +// ap_mem_port +//---------------------------------------------------------- +template +class ap_mem_port : public sc_port > +{ + // typedefs + //typedef T _hls_mem_dt; + typedef ap_mem_if<_hls_mem_dt, _hls_mem_addrt, t_size, portType> if_type; + typedef sc_port base_type; + typedef ap_mem_port<_hls_mem_dt, _hls_mem_addrt, t_size, portType> this_type; + + typedef if_type in_if_type; + typedef base_type in_port_type; + _hls_mem_addrt ADDR_tmp; + +public: + + ap_mem_port() { + #ifndef __RTL_SIMULATION__ + cout<<"@W [SIM] Please add name for your ap_mem_port, or RTL simulation will fail."<read(addr); + } + + void write(const _hls_mem_addrt addr, const _hls_mem_dt data) { + (*this)->write(addr, data); + } + + ap_mem_port& operator [] (const _hls_mem_addrt addr) { + //return (*this)->read(addr); + ADDR_tmp = addr; + return *this; + } + + void operator = (_hls_mem_dt data) + { + (*this)->write(ADDR_tmp, data); + } + + operator _hls_mem_dt () + { + return (*this)->read(ADDR_tmp); + } +}; + +//---------------------------------------------------------- +// ap_mem_chn +//---------------------------------------------------------- +template +class ap_mem_chn : + public ap_mem_if<_hls_mem_dt, _hls_mem_addrt, t_size, portType>, + public sc_prim_channel +{ +private: + _hls_mem_dt mArray[2][t_size]; + int mInitiatorBank; + int mTargetCurBank; + int mCurBank; + std::string mem_name; + +public: + explicit ap_mem_chn( const char* name="ap_mem_chn" ) : mCurBank(0), mem_name(name) { } + + virtual ~ap_mem_chn() { }; + + _hls_mem_dt& read(const _hls_mem_addrt addr) { +#ifdef USER_DEBUG_MEMORY + cout<<"mem read : "<< mem_name <<"["< +class hls_bus_if : public sc_interface +{ +public: + hls_bus_if(const char* name_ = ""){ + } + + virtual _VHLS_DT& read(_hls_bus_addrt addr)=0; + virtual void read(_hls_bus_addrt addr, _VHLS_DT *data)=0; + virtual void burst_read(_hls_bus_addrt addr, int size, _VHLS_DT *data)=0; + virtual void write(_hls_bus_addrt addr, _VHLS_DT *data)=0; + virtual void burst_write(_hls_bus_addrt addr, int size, _VHLS_DT *data)=0; +}; + + +//---------------------------------------------------------- +// hls_bus_port +//---------------------------------------------------------- +template +class hls_bus_port : public sc_port > +{ + // typedefs + //typedef _VHLS_DT _VHLS_DT; + typedef hls_bus_if<_VHLS_DT> if_type; + typedef sc_port base_type; + typedef hls_bus_port<_VHLS_DT> this_type; + + typedef if_type in_if_type; + typedef base_type in_port_type; + +public: + + hls_bus_port() { + #ifndef __RTL_SIMULATION__ + cout<<"@W [SIM] Please add name for your hls_bus_port, or RTL simulation will fail."<read(addr); + } + + void burst_read(_hls_bus_addrt addr, int size, _VHLS_DT *data) { + (*this)->burst_read(addr, size, data); + } + + void write(_hls_bus_addrt addr, _VHLS_DT *data) { + (*this)->write(addr, data); + } + + void burst_write(_hls_bus_addrt addr, int size, _VHLS_DT *data) { + (*this)->burst_write(addr, size, data); + } +}; + + +//----------------------------- +// bus channel +//----------------------------- +template +class hls_bus_chn + :public hls_bus_if + ,public sc_module +{ + private: + //data_type mem[END_ADDR - START_ADDR]; + data_type *mem; + unsigned int m_start_addr; + unsigned int m_end_addr; + std::string name; + + public: + SC_HAS_PROCESS(hls_bus_chn); + hls_bus_chn(sc_module_name _name + ,unsigned int start_addr = 0 + ,unsigned int end_addr = 1024) + : sc_module(_name) + , name(_name) + , m_start_addr(start_addr) + , m_end_addr(end_addr) + { + sc_assert(m_start_addr <= m_end_addr); + + unsigned int size = (m_end_addr-m_start_addr+1); + + mem = new data_type [size]; + for (unsigned int i = 0; i < size; ++i) + mem[i] = i; + } + + /// + /// bus read + /// + data_type& read(_hls_bus_addrt addr) + { + #ifdef DUMP_BUS_OP + cout <<"[bus wraper] "< +#include +#endif + +#ifdef __CYGWIN__ +# ifdef feof +# undef feof +# endif + +# ifdef ferror +# undef ferror +# endif +#endif + + +#include "etc/autopilot_enum.h" +#include "etc/autopilot_ssdm_op.h" + + +#endif /* #ifndef _AUTOPILOT_UTILS_H_ */ + + diff --git a/vitis/v2020_1/autoesl_tech.h b/vitis/v2020_1/autoesl_tech.h new file mode 100644 index 00000000..bc1b7fb7 --- /dev/null +++ b/vitis/v2020_1/autoesl_tech.h @@ -0,0 +1,64 @@ +/* autopilot_tech.h */ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_TECH_H_ +#define _AUTOPILOT_TECH_H_ + +#include "ap_cint.h" +#include "ap_utils.h" + +#endif /* #ifndef _AUTOPILOT_TECH_H_ */ + + + diff --git a/vitis/v2020_1/autopilot_tech.h b/vitis/v2020_1/autopilot_tech.h new file mode 100644 index 00000000..bc1b7fb7 --- /dev/null +++ b/vitis/v2020_1/autopilot_tech.h @@ -0,0 +1,64 @@ +/* autopilot_tech.h */ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_TECH_H_ +#define _AUTOPILOT_TECH_H_ + +#include "ap_cint.h" +#include "ap_utils.h" + +#endif /* #ifndef _AUTOPILOT_TECH_H_ */ + + + diff --git a/vitis/v2020_1/clc.h b/vitis/v2020_1/clc.h new file mode 100644 index 00000000..4785d8a7 --- /dev/null +++ b/vitis/v2020_1/clc.h @@ -0,0 +1,7208 @@ + +/* + Copyright 2013-2017 Xilinx, Inc. All rights reserved. + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"\). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. +*/ +#ifndef _CLC_H_ +#define _CLC_H_ + + +#define __xilinx__ +#define global __global +#define local __local +#define constant __constant +#define private __private + +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +//typedef image begin +#define image1d_t unsigned char* +#define image1d_buffer_t unsigned char* +#define image1d_array_t unsigned char* +#define image2d_t unsigned int* +#define image2d_array_t unsigned int* +#define image2d_depth_t unsigned int* +#define image2d_array_depth_t unsigned int* +#define image3d_t int* +#define sampler_t unsigned int +#endif + +#define CLK_SNORM_INT8 0x10D0 +#define CLK_SNORM_INT16 0x10D1 +#define CLK_UNORM_INT8 0x10D2 +#define CLK_UNORM_INT16 0x10D3 +#define CLK_UNORM_SHORT_565 0x10D4 +#define CLK_UNORM_SHORT_555 0x10D5 +#define CLK_UNORM_INT_101010 0x10D6 +#define CLK_SIGNED_INT8 0x10D7 +#define CLK_SIGNED_INT16 0x10D8 +#define CLK_SIGNED_INT32 0x10D9 +#define CLK_UNSIGNED_INT8 0x10DA +#define CLK_UNSIGNED_INT16 0x10DB +#define CLK_UNSIGNED_INT32 0x10DC +#define CLK_HALF_FLOAT 0x10DD +#define CLK_FLOAT 0x10DE + +/* get_image_channel_order flags */ +#define CLK_R 0x10B0 +#define CLK_A 0x10B1 +#define CLK_RG 0x10B2 +#define CLK_RA 0x10B3 +#define CLK_RGB 0x10B4 +#define CLK_RGBA 0x10B5 +#define CLK_BGRA 0x10B6 +#define CLK_ARGB 0x10B7 +#define CLK_INTENSITY 0x10B8 +#define CLK_LUMINANCE 0x10B9 +#define CLK_Rx 0x10BA +#define CLK_RGx 0x10BB +#define CLK_RGBx 0x10BC + +/* sampler normalized coords */ +#define CLK_NORMALIZED_COORDS_FALSE 0x0000 +#define CLK_NORMALIZED_COORDS_TRUE 0x0001 + +/* sampler addressing mode */ +#define CLK_ADDRESS_NONE 0x0000 +#define CLK_ADDRESS_CLAMP_TO_EDGE 0x0002 +#define CLK_ADDRESS_CLAMP 0x0004 +#define CLK_ADDRESS_REPEAT 0x0006 +#define CLK_ADDRESS_MIRRORED_REPEAT 0x0008 + +/* sampler filter mode */ +#define CLK_FILTER_NEAREST 0x0000 +#define CLK_FILTER_LINEAR 0x0010 + +//typedef image end +//SPIR Specification +//SPIR section 2.1.1 Built-in Scalar Data Types +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; +//typedef struct spirhalf* spirhalf; //todo +#if defined(__SPIR32__) +typedef unsigned int size_t; +typedef unsigned int ptrdiff_t; +typedef int intptr_t; +typedef unsigned int uintptr_t; +#elif defined(__SPIR64__) +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +typedef unsigned long long size_t; +typedef unsigned long long ptrdiff_t; +typedef long long intptr_t; +typedef unsigned long long uintptr_t; +#else +typedef unsigned long size_t; +typedef unsigned long ptrdiff_t; +typedef long intptr_t; +typedef unsigned long uintptr_t; +#endif +#else +#error "must compile using spir or spir64 target" +#endif +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(char)))) char char2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(char)))) char char3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(char)))) char char4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(char)))) char char8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(char)))) char char16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(uchar)))) uchar uchar2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(uchar)))) uchar uchar3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(uchar)))) uchar uchar4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(uchar)))) uchar uchar8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(uchar)))) uchar uchar16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(short)))) short short2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(short)))) short short3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(short)))) short short4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(short)))) short short8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(short)))) short short16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(ushort)))) ushort ushort2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(ushort)))) ushort ushort3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(ushort)))) ushort ushort4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(ushort)))) ushort ushort8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(ushort)))) ushort ushort16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(int)))) int int2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(int)))) int int3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(int)))) int int4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(int)))) int int8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(int)))) int int16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(uint)))) uint uint2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(uint)))) uint uint3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(uint)))) uint uint4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(uint)))) uint uint8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(uint)))) uint uint16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(long)))) long long2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(long)))) long long3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(long)))) long long4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(long)))) long long8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(long)))) long long16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(ulong)))) ulong ulong2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(ulong)))) ulong ulong3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(ulong)))) ulong ulong4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(ulong)))) ulong ulong8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(ulong)))) ulong ulong16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(float)))) float float2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(float)))) float float3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(float)))) float float4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(float)))) float float8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(float)))) float float16; +typedef void* reserve_id_t; +//SPIR section 2.10.1.1 Synchronization Functions +#define CLK_LOCAL_MEM_FENCE 0 +#define CLK_GLOBAL_MEM_FENCE 1 +//OpenCL Section 6.10 Preprocessor Directives and Macros +//__FILE__ defined by GNU CPP +//__LINE__ defined by GNU CPP +#define __OPENCL_VERSION__ CL_VERSION_1_2 +#define CL_VERSION_1_0 100 +#define CL_VERSION_1_1 110 +#define CL_VERSION_1_2 120 + +#ifndef __OPENCL_C_VERSION__ +#define __OPENCL_C_VERSION__ CL_VERSION_1_2 +#endif + +#define __ENDIAN_LITTLE__ 1 +#define __kernel_exec(X,typen) __kernel __attribute__((work_group_size_hint(X,1,1)))\ + __attribute__(vec_type_hint(typen)) +#define kernel_exec(X,typen) __kernel_exec(X,typen) +//define __IMAGE_SUPPORT__ unsupported +//define __FAST_RELAXED_MATH__ unsupported +//OpenCL Section 6.12.3 Integer Function numeric constants +#define CHAR_BIT 8 +#define CHAR_MAX SCHAR_MAX +#define CHAR_MIN SCHAR_MIN +#define INT_MAX 2147483647 +#define INT_MIN (-2147483647 - 1) +#define LONG_MAX 0x7fffffffffffffffL +#define LONG_MIN (-0x7fffffffffffffffL -1) +#define SCHAR_MAX 127 +#define SCHAR_MIN (-127 - 1) +#define SHRT_MAX 32767 +#define SHRT_MIN (-32767 -1) +#define UCHAR_MAX 255 +#define USHRT_MAX 65535 +#define UINT_MAX 0xffffffff +#define ULONG_MAX 0xffffffffffffffffUL +//OpenCL Section 6.12.2.1 Floating-point macros and pragmas +#define FLT_DIG 6 +#define FLT_MANT_DIG 24 +#define FLT_MAX_10_EXP +38 +#define FLT_MAX_EXP +128 +#define FLT_MIN_10_EXP -37 +#define FLT_MIN_EXP -125 +#define FLT_RADIX 2 +#define FLT_MAX 0x1.fffffep127f +#define FLT_MIN 0x1.0p-126f +#define FLT_EPSILON 0x1.0p-23f +#define FP_ILOGB0 (-2147483647 - 1) +#define FP_ILOGBNAN (-2147483647 - 1) +//OpenCL Section 6.12.2 Math functions P251 +//The following constants were generated using generateclconstants +#define M_E_F 2.71828174591064f +#define M_LOG2E_F 1.44269502162933f +#define M_LOG10E_F 0.434294492006302f +#define M_LN2_F 0.6931471824646f +#define M_LN10_F 2.30258512496948f +#define M_PI_F 3.14159274101257f +#define M_PI_2_F 1.57079637050629f +#define M_PI_4_F 0.785398185253143f +#define M_1_PI_F 0.318309873342514f +#define M_2_PI_F 0.636619746685028f +#define M_2_SQRTPI_F 1.1283792257309f +#define M_SQRT2_F 1.41421353816986f +#define M_SQRT1_2_F 0.70710676908493f +#define MAXFLOAT 3.40282346638529e+38f +//from include/bits/huge_valf.h +#define HUGE_VALF \ + (__extension__ \ + ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \ + { __l: 0x7f800000UL }).__d) +#define INFINITY HUGE_VALF +//from include/bits/nan.h +# define NAN \ + (__extension__ \ + ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; }) \ + { __l: 0x7fc00000UL }).__d) +//from include/bits/huge_val.h +# define HUGE_VAL \ + ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ + { __l: 0x7ff0000000000000ULL }).__d) + +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +int __attribute__((overloadable)) printf(__constant char *format, ...); +int xilinx_bprintf(__global char *buffer, __constant char *format, ...); +#else +#ifdef __SYNTHESIS__ +#if __OPENCL_C_VERSION__ >= CL_VERSION_1_2 +// OpenCL v1.2 s6.12.13, v2.0 s6.13.13 - printf + +int printf(__constant const char* st, ...); +#endif +#else +__attribute__((noinline)) int __cl_printf(__constant char *__restrict fmt, ...); +#define printf __cl_printf +#endif + +#endif + + +uint __attribute__((overloadable)) get_work_dim(void); +size_t __attribute__((overloadable)) get_global_size(uint dimindx); +size_t __attribute__((overloadable)) get_global_id(uint dimindx); +size_t __attribute__((overloadable)) get_local_size(uint dimindx); +size_t __attribute__((overloadable)) get_local_id(uint dimindx); +size_t __attribute__((overloadable)) get_num_groups(uint dimindx); +size_t __attribute__((overloadable)) get_group_id(uint dimindx); +size_t __attribute__((overloadable)) get_global_offset(uint dimindx); +size_t __attribute__((overloadable)) get_local_linear_id(void); +size_t __attribute__((overloadable)) get_global_linear_id(void); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char3 (char4 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar2 (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar3 (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar3 (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (char16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) as_short (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (char16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (char4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (char8 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (char16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (char4 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (char8 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (char16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (char8 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (char16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (char8 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (char16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (char4 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (char8 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (char16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) as_char (uchar f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char2 (uchar2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char3 (uchar3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char3 (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (uchar4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (uchar8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (uchar16 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar3 (uchar4 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) as_short (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (uchar16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (uchar4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (uchar8 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (uchar16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (uchar4 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (uchar8 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (uchar16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (uchar8 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (uchar16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (uchar8 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (uchar16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (uchar4 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (uchar8 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (uchar16 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char2 (short f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (short2 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (short4 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (short8 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar2 (short f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (short2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (short4 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (short8 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short3 (short4 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort3 (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort3 (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (short16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (short16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (short4 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (short8 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (short16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (short4 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (short8 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (short16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (short16 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char2 (ushort f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (ushort2 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (ushort4 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (ushort8 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar2 (ushort f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (ushort2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (ushort4 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (ushort8 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) as_short (ushort f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (ushort2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short3 (ushort3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short3 (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (ushort4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (ushort8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (ushort16 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort3 (ushort4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (ushort16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (ushort4 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (ushort8 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (ushort16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (ushort4 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (ushort8 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (ushort16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (ushort16 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (int f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (int2 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (int f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (int2 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (int4 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (int f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (int2 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (int4 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (int8 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (int f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (int2 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (int4 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (int8 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (int4 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (int16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (int16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (int16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (int f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (int2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (int3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (int4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (int8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (int16 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (uint f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (uint2 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (uint f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (uint2 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (uint4 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (uint f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (uint2 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (uint4 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (uint8 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (uint f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (uint2 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (uint4 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (uint8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (uint f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (uint2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (uint3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (uint4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (uint8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (uint16 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (uint4 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (uint16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (uint f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (uint2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (uint3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (uint4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (uint8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (uint16 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (long f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (long2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (long f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (long2 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (long f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (long2 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (long f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (long2 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (long4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (long f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (long2 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (long4 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (long8 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (long f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (long2 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (long4 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (long8 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long3 (long4 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong3 (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong3 (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong16 (long16 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (long f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (long2 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (long4 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (ulong f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (ulong2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (ulong f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (ulong2 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (ulong f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (ulong2 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (ulong f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (ulong2 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (ulong4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (ulong f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (ulong2 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (ulong4 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (ulong8 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (ulong f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (ulong2 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (ulong4 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (ulong8 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (ulong f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (ulong2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long3 (ulong3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long3 (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (ulong4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (ulong8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long16 (ulong16 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong3 (ulong4 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (ulong f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (ulong2 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (ulong4 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (ulong8 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (float f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (float2 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (float f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (float2 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (float4 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (float f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (float2 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (float4 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (float8 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (float f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (float2 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (float4 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (float8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (float16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (float f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (float2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (float3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (float4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (float8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (float16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (float16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (float16 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (float4 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (char16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (char f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (char2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (char3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (char4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (char8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (char16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (char f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (char2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (char3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (char4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (char8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (char f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (char2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (char3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (char4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (char8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (char16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (char f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (char2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (char3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (char4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (char8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (char16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (char f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (char2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (char3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (char4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (char8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (char16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (char f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (char2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (char3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (char4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (char8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (char16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (char f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (char2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (char3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (char4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (char8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (char16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (uchar f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (uchar2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (uchar3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (uchar4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (uchar8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (uchar16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (uchar f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (uchar2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (uchar3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (uchar4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (uchar8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (uchar f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (uchar2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (uchar3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (uchar4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (uchar8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (uchar16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (uchar f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (uchar2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (uchar3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (uchar4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (uchar8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (uchar16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (uchar f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (uchar2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (uchar3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (uchar4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (uchar8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (uchar16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (uchar f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (uchar2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (uchar3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (uchar4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (uchar8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (uchar16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (uchar f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (uchar2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (uchar3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (uchar4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (uchar8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (uchar16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (uchar f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (uchar2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (uchar3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (uchar4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (uchar8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (uchar16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (short f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (short2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (short3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (short4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (short8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (short16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (short f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (short2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (short3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (short4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (short8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (short16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (short f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (short2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (short3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (short4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (short8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (short16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (short f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (short2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (short3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (short4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (short8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (short16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (short f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (short2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (short3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (short4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (short8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (short16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (short f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (short2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (short3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (short4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (short8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (short16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (short f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (short2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (short3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (short4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (short8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (short16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (ushort f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (ushort2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (ushort3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (ushort4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (ushort8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (ushort16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (ushort f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (ushort2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (ushort3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (ushort4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (ushort8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (ushort16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (ushort f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (ushort2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (ushort3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (ushort4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (ushort8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (ushort16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (ushort f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (ushort2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (ushort3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (ushort4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (ushort8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (ushort f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (ushort2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (ushort3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (ushort4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (ushort8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (ushort16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (ushort f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (ushort2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (ushort3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (ushort4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (ushort8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (ushort16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (ushort f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (ushort2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (ushort3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (ushort4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (ushort8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (ushort16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (ushort f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (ushort2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (ushort3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (ushort4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (ushort8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (ushort16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (int f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (int2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (int3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (int4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (int8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (int16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (int f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (int2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (int3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (int4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (int8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (int16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (int f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (int2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (int3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (int4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (int8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (int16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (int f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (int2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (int3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (int4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (int8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (int16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (int f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (int2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (int3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (int4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (int8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (int16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (int f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (int2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (int3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (int4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (int8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (int16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (int f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (int2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (int3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (int4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (int8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (int16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (uint f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (uint2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (uint3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (uint4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (uint8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (uint16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (uint f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (uint2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (uint3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (uint4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (uint8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (uint16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (uint f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (uint2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (uint3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (uint4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (uint8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (uint16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (uint f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (uint2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (uint3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (uint4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (uint8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (uint16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (uint f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (uint2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (uint3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (uint4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (uint8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (uint16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (uint f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (uint2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (uint3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (uint4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (uint8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (uint f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (uint2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (uint3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (uint4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (uint8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (uint16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (uint f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (uint2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (uint3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (uint4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (uint8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (uint16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (long f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (long2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (long3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (long4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (long8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (long16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (long f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (long2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (long3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (long4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (long8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (long16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (long f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (long2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (long3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (long4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (long8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (long16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (long f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (long2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (long3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (long4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (long8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (long16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (long f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (long2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (long3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (long4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (long8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (long16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (long f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (long2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (long3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (long4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (long8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (long16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (long16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (long f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (long2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (long3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (long4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (long8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (long16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (ulong f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (ulong2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (ulong3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (ulong4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (ulong8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (ulong16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (ulong f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (ulong2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (ulong3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (ulong4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (ulong8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (ulong16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (ulong f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (ulong2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (ulong3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (ulong4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (ulong8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (ulong16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (ulong f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (ulong2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (ulong3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (ulong4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (ulong8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (ulong16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (ulong f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (ulong2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (ulong3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (ulong4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (ulong8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (ulong16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (ulong f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (ulong2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (ulong3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (ulong4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (ulong8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (ulong16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (ulong f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (ulong2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (ulong3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (ulong4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (ulong8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (ulong16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (ulong16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (ulong f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (ulong2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (ulong3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (ulong4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (ulong8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (ulong16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (float f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (float2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (float3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (float4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (float8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (float16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (float f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (float2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (float3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (float4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (float8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (float16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (float f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (float2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (float3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (float4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (float8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (float16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (float f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (float2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (float3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (float4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (float8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (float16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (float f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (float2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (float3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (float4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (float8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (float16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (float f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (float2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (float3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (float4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (float8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (float16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (float f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (float2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (float3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (float4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (float8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (float16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (char16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (char f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (char2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (char3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (char4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (char8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (char16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (char f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (char2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (char3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (char4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (char8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (char f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (char2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (char3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (char4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (char8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (char16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (char f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (char2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (char3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (char4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (char8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (char16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (char f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (char2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (char3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (char4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (char8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (char16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (char f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (char2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (char3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (char4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (char8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (char16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (uchar f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (uchar2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (uchar3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (uchar4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (uchar8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (uchar16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (uchar f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (uchar2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (uchar3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (uchar4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (uchar8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (uchar f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (uchar2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (uchar3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (uchar4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (uchar8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (uchar16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (uchar f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (uchar2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (uchar3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (uchar4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (uchar8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (uchar16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (uchar f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (uchar2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (uchar3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (uchar4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (uchar8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (uchar16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (uchar f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (uchar2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (uchar3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (uchar4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (uchar8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (uchar16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (uchar f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (uchar2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (uchar3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (uchar4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (uchar8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (uchar16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (short f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (short2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (short3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (short4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (short8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (short16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (short f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (short2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (short3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (short4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (short8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (short16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (short f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (short2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (short3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (short4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (short8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (short16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (short f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (short2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (short3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (short4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (short8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (short16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (short f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (short2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (short3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (short4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (short8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (short16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (short f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (short2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (short3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (short4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (short8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (short16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (ushort f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (ushort2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (ushort3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (ushort4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (ushort8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (ushort16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (ushort f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (ushort2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (ushort3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (ushort4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (ushort8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (ushort16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (ushort f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (ushort2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (ushort3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (ushort4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (ushort8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (ushort16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (ushort f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (ushort2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (ushort3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (ushort4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (ushort8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (ushort f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (ushort2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (ushort3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (ushort4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (ushort8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (ushort16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (ushort f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (ushort2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (ushort3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (ushort4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (ushort8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (ushort16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (ushort f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (ushort2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (ushort3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (ushort4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (ushort8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (ushort16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (int f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (int2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (int3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (int4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (int8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (int16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (int f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (int2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (int3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (int4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (int8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (int16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (int f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (int2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (int3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (int4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (int8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (int16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (int f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (int2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (int3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (int4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (int8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (int16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (int f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (int2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (int3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (int4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (int8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (int16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (int f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (int2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (int3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (int4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (int8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (int16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (uint f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (uint2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (uint3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (uint4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (uint8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (uint16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (uint f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (uint2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (uint3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (uint4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (uint8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (uint16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (uint f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (uint2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (uint3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (uint4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (uint8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (uint16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (uint f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (uint2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (uint3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (uint4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (uint8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (uint16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (uint f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (uint2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (uint3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (uint4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (uint8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (uint16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (uint f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (uint2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (uint3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (uint4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (uint8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (uint f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (uint2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (uint3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (uint4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (uint8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (uint16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (long f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (long2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (long3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (long4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (long8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (long16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (long f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (long2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (long3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (long4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (long8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (long16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (long f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (long2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (long3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (long4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (long8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (long16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (long f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (long2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (long3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (long4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (long8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (long16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (long f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (long2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (long3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (long4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (long8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (long16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (long f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (long2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (long3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (long4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (long8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (long16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (long16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (ulong f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (ulong2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (ulong3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (ulong4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (ulong8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (ulong16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (ulong f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (ulong2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (ulong3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (ulong4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (ulong8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (ulong16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (ulong f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (ulong2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (ulong3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (ulong4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (ulong8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (ulong16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (ulong f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (ulong2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (ulong3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (ulong4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (ulong8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (ulong16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (ulong f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (ulong2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (ulong3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (ulong4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (ulong8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (ulong16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (ulong f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (ulong2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (ulong3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (ulong4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (ulong8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (ulong16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (ulong f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (ulong2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (ulong3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (ulong4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (ulong8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (ulong16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (ulong16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (float f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (float2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (float3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (float4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (float8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (float16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (float f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (float2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (float3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (float4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (float8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (float16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (float f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (float2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (float3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (float4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (float8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (float16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (float f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (float2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (float3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (float4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (float8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (float16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (float f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (float2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (float3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (float4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (float8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (float16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (float f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (float2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (float3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (float4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (float8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (float16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (float f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (float2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (float3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (float4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (float8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (float16 f); +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +//image 2.0 API +//float4 __attribute__ ((always_inline)) __attribute__((overloadable)) read_imagef(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image2d_t image, sampler_t sampler, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image2d_t image, sampler_t sampler, float2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image2d_t image, sampler_t sampler, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image2d_t image, sampler_t sampler, float2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image2d_t image, sampler_t sampler, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image2d_t image, sampler_t sampler, float2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagef(__global image2d_t image, int2 coord, float4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagei(__global image2d_t image, int2 coord, int4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imageui(__global image2d_t image, int2 coord, uint4 color); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image1d_t image, sampler_t sampler, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image1d_t image, sampler_t sampler, float coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image1d_t image, sampler_t sampler, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image1d_t image, sampler_t sampler, float coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image1d_t image, sampler_t sampler, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image1d_t image, sampler_t sampler, float coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image1d_t image, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image1d_t image, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image1d_t image, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagef(__global image1d_t image, int coord, float4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagei(__global image1d_t image, int coord, int4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imageui(__global image1d_t image, int coord, uint4 color); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image3d_t image, sampler_t sampler, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image3d_t image, sampler_t sampler, float4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image3d_t image, sampler_t sampler, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image3d_t image, sampler_t sampler, float4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image3d_t image, sampler_t sampler, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image3d_t image, sampler_t sampler, float4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image3d_t image, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image3d_t image, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image3d_t image, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagef(__global image3d_t image, int4 coord, float4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagei(__global image3d_t image, int4 coord, int4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imageui(__global image3d_t image, int4 coord, uint4 color); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_width(__global image1d_t image); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_width(__global image2d_t image); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_width(__global image3d_t image); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_height(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_height(__global image3d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_depth(__global image3d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int2 get_image_dim(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_data_type(__global image1d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_data_type(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_data_type(__global image3d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_order(__global image1d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_order(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_order(__global image3d_t image); +#endif + + //OpenCL 1.2 Section 6.12.2 Math Functions + //Table 6.8 + //"gentype" functions can take + //float, float2, float3, float4, float8, float16 + //double, double2, double3, double4, double8, double16 +float __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float16 f, float16 g,float16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float f,__global float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float2 f,__global float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float3 f,__global float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float4 f,__global float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float8 f,__global float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float16 f,__global float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float f,__local float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float2 f,__local float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float3 f,__local float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float4 f,__local float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float8 f,__local float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float16 f,__local float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float f,__private float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float2 f,__private float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float3 f,__private float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float4 f,__private float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float8 f,__private float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float16 f,__private float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float f,__global int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float2 f,__global int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float3 f,__global int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float4 f,__global int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float8 f,__global int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float16 f,__global int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float f,__local int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float2 f,__local int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float3 f,__local int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float4 f,__local int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float8 f,__local int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float16 f,__local int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float f,__private int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float2 f,__private int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float3 f,__private int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float4 f,__private int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float8 f,__private int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float16 f,__private int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float f,int g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float2 f,int2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float3 f,int3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float4 f,int4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float8 f,int8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float16 f,int16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float2 f,int g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float3 f,int g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float4 f,int g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float8 f,int g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float16 f,int g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float f,__global int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float2 f,__global int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float3 f,__global int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float4 f,__global int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float8 f,__global int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float16 f,__global int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float f,__local int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float2 f,__local int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float3 f,__local int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float4 f,__local int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float8 f,__local int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float16 f,__local int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float f,__private int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float2 f,__private int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float3 f,__private int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float4 f,__private int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float8 f,__private int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float16 f,__private int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float16 f, float16 g,float16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float f,__global float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float2 f,__global float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float3 f,__global float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float4 f,__global float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float8 f,__global float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float16 f,__global float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float f,__local float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float2 f,__local float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float3 f,__local float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float4 f,__local float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float8 f,__local float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float16 f,__local float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float f,__private float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float2 f,__private float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float3 f,__private float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float4 f,__private float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float8 f,__private float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float16 f,__private float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float f,int g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float2 f,int2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float3 f,int3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float4 f,int4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float8 f,int8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float16 f,int16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float f, float g,__global int * h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float2 f, float2 g,__global int2 * h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float3 f, float3 g,__global int3 * h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float4 f, float4 g,__global int4 * h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float8 f, float8 g,__global int8 * h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float16 f, float16 g,__global int16 * h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float f, float g,__local int * h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float2 f, float2 g,__local int2 * h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float3 f, float3 g,__local int3 * h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float4 f, float4 g,__local int4 * h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float8 f, float8 g,__local int8 * h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float16 f, float16 g,__local int16 * h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float f, float g,__private int * h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float2 f, float2 g,__private int2 * h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float3 f, float3 g,__private int3 * h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float4 f, float4 g,__private int4 * h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float8 f, float8 g,__private int8 * h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float16 f, float16 g,__private int16 * h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float f,int g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float2 f,int2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float3 f,int3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float4 f,int4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float8 f,int8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float16 f,int16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) round (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float f,__global float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float2 f,__global float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float3 f,__global float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float4 f,__global float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float8 f,__global float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float16 f,__global float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float f,__local float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float2 f,__local float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float3 f,__local float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float4 f,__local float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float8 f,__local float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float16 f,__local float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float f,__private float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float2 f,__private float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float3 f,__private float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float4 f,__private float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float8 f,__private float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float16 f,__private float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float16 f); +//OpenCL 1.2 Section 6.12.2 Math Functions Half +//Table 6.9 +//"gentype" functions can take +//float, float2, float3, float4, float8, float16 +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char f,char g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char2 f,char2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char3 f,char3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char4 f,char4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char8 f,char8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar16 f,uchar16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short f,short g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short2 f,short2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short3 f,short3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short4 f,short4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short8 f,short8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort16 f,ushort16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int f,int g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int2 f,int2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int3 f,int3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int4 f,int4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int8 f,int8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint16 f,uint16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long f,long g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long2 f,long2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long3 f,long3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long4 f,long4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long8 f,long8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong16 f, ulong16 g,ulong16 h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char2 f, char g,char h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char3 f, char g,char h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char4 f, char g,char h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char8 f, char g,char h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char16 f, char g,char h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar2 f, uchar g,uchar h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar3 f, uchar g,uchar h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar4 f, uchar g,uchar h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar8 f, uchar g,uchar h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar16 f, uchar g,uchar h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short2 f, short g,short h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short3 f, short g,short h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short4 f, short g,short h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short8 f, short g,short h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short16 f, short g,short h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort2 f, ushort g,ushort h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort3 f, ushort g,ushort h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort4 f, ushort g,ushort h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort8 f, ushort g,ushort h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort16 f, ushort g,ushort h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int2 f, int g,int h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int3 f, int g,int h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int4 f, int g,int h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int8 f, int g,int h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int16 f, int g,int h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint2 f, uint g,uint h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint3 f, uint g,uint h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint4 f, uint g,uint h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint8 f, uint g,uint h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint16 f, uint g,uint h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long2 f, long g,long h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long3 f, long g,long h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long4 f, long g,long h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long8 f, long g,long h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long16 f, long g,long h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong2 f, ulong g,ulong h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong3 f, ulong g,ulong h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong4 f, ulong g,ulong h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong8 f, ulong g,ulong h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong16 f, ulong g,ulong h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong16 f, ulong16 g,ulong16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong16 f, ulong16 g,ulong16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) max (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) max (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) max (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) max (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) min (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) min (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) min (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) min (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong16 f,ulong16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char f,uchar g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar f,uchar g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char2 f,uchar2 g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar2 f,uchar2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char3 f,uchar3 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar3 f,uchar3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char4 f,uchar4 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar4 f,uchar4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char8 f,uchar8 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar8 f,uchar8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char16 f,uchar16 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar16 f,uchar16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short f,ushort g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort f,ushort g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short2 f,ushort2 g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort2 f,ushort2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short3 f,ushort3 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort3 f,ushort3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short4 f,ushort4 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort4 f,ushort4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short8 f,ushort8 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort8 f,ushort8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short16 f,ushort16 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort16 f,ushort16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int f,uint g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint f,uint g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int2 f,uint2 g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint2 f,uint2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int3 f,uint3 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint3 f,uint3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int4 f,uint4 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint4 f,uint4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int8 f,uint8 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint8 f,uint8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int16 f,uint16 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint16 f,uint16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint16 f, uint16 g,uint16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint16 f,uint16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float16 f, float16 g,float16 h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float2 f, float g,float h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float3 f, float g,float h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float4 f, float g,float h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float8 f, float g,float h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float16 f, float g,float h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) max (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) min (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float16 f, float16 g,float16 h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float2 f, float2 g,float h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float3 f, float3 g,float h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float4 f, float4 g,float h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float8 f, float8 g,float h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float16 f, float16 g,float h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float16 f, float16 g,float16 h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float16 f); +//OpenCL 1.2 Section 6.12.5 Geometric Functions + +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cross (float4 f,float4 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cross (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float2 f,float2 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float4 f,float4 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float8 f,float8 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float2 f,float2 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float4 f,float4 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float8 f,float8 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float2 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float3 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float4 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float8 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float2 f,float2 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float4 f,float4 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float8 f,float8 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float2 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float3 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float4 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float8 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong16 f, ulong16 g,ulong16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float16 f, float16 g,float16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) select (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar f, uchar g,char h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar2 f, uchar2 g,char2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar3 f, uchar3 g,char3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar4 f, uchar4 g,char4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar8 f, uchar8 g,char8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar16 f, uchar16 g,char16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) select (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort f, ushort g,short h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort2 f, ushort2 g,short2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort3 f, ushort3 g,short3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort4 f, ushort4 g,short4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort8 f, ushort8 g,short8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort16 f, ushort16 g,short16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) select (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint f, uint g,int h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint2 f, uint2 g,int2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint3 f, uint3 g,int3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint4 f, uint4 g,int4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint8 f, uint8 g,int8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint16 f, uint16 g,int16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) select (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong f, ulong g,long h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong2 f, ulong2 g,long2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong3 f, ulong3 g,long3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong4 f, ulong4 g,long4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong8 f, ulong8 g,long8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong16 f, ulong16 g,long16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) select (float f, float g,int h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float2 f, float2 g,int2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float3 f, float3 g,int3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float4 f, float4 g,int4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float8 f, float8 g,int8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float16 f, float16 g,int16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) select (char f, char g,uchar h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char2 f, char2 g,uchar2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char3 f, char3 g,uchar3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char4 f, char4 g,uchar4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char8 f, char8 g,uchar8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char16 f, char16 g,uchar16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) select (short f, short g,ushort h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short2 f, short2 g,ushort2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short3 f, short3 g,ushort3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short4 f, short4 g,ushort4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short8 f, short8 g,ushort8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short16 f, short16 g,ushort16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) select (int f, int g,uint h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int2 f, int2 g,uint2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int3 f, int3 g,uint3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int4 f, int4 g,uint4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int8 f, int8 g,uint8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int16 f, int16 g,uint16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) select (long f, long g,ulong h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long2 f, long2 g,ulong2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long3 f, long3 g,ulong3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long4 f, long4 g,ulong4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long8 f, long8 g,ulong8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long16 f, long16 g,ulong16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong16 f, ulong16 g,ulong16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) select (float f, float g,uint h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float2 f, float2 g,uint2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float3 f, float3 g,uint3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float4 f, float4 g,uint4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float8 f, float8 g,uint8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float16 f, float16 g,uint16 h); +void __attribute__ ((always_inline)) __attribute__((overloadable)) barrier(uint i); +void mem_fence(uint i); +#include "clc.h.inc" +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +void wait_group_events(int i,event_t *j); +#else +void __attribute__ ((always_inline)) __attribute__((overloadable)) wait_group_events(int i,event_t *j); +#endif +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +#define read_pipe __opencl_read_pipe +#define write_pipe __opencl_write_pipe +#define read_pipe_block __opencl_read_pipe_block +#define write_pipe_block __opencl_write_pipe_block +#define reserve_read_pipe __opencl_reserve_read_pipe +#define reserve_write_pipe __opencl_reserve_write_pipe +#define commit_read_pipe __opencl_commit_read_pipe +#define commit_write_pipe __opencl_commit_write_pipe +#define get_pipe_max_packets __opencl_get_pipe_max_packets +#define get_pipe_num_packets __opencl_get_pipe_num_packets +#define work_group_reserve_read_pipe __opencl_work_group_reserve_read_pipe +#define work_group_reserve_write_pipe __opencl_work_group_reserve_write_pipe +#define work_group_commit_read_pipe __opencl_work_group_commit_read_pipe +#define work_group_commit_write_pipe __opencl_work_group_commit_write_pipe +_Bool __attribute__ ((always_inline)) is_valid_reserve_id(reserve_id_t id); +#endif + +#endif // _CLC_H_ + + diff --git a/vitis/v2020_1/clc.h.inc b/vitis/v2020_1/clc.h.inc new file mode 100644 index 00000000..22d907e1 --- /dev/null +++ b/vitis/v2020_1/clc.h.inc @@ -0,0 +1,3909 @@ +// vload[n] and vstore[n] + + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private char *p); + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local char *p); + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global char *p); + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (char2 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (char2 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (char2 data, size_t offset, + __global char *p); + + + + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private uchar *p); + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local uchar *p); + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global uchar *p); + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uchar2 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uchar2 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uchar2 data, size_t offset, + __global uchar *p); + + + + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private short *p); + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local short *p); + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global short *p); + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (short2 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (short2 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (short2 data, size_t offset, + __global short *p); + + + + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private ushort *p); + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local ushort *p); + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global ushort *p); + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ushort2 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ushort2 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ushort2 data, size_t offset, + __global ushort *p); + + + + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private int *p); + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local int *p); + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global int *p); + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (int2 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (int2 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (int2 data, size_t offset, + __global int *p); + + + + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private uint *p); + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local uint *p); + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global uint *p); + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uint2 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uint2 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uint2 data, size_t offset, + __global uint *p); + + + + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private long *p); + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local long *p); + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global long *p); + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (long2 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (long2 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (long2 data, size_t offset, + __global long *p); + + + + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private ulong *p); + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local ulong *p); + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global ulong *p); + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ulong2 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ulong2 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ulong2 data, size_t offset, + __global ulong *p); + + + + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private float *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local float *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global float *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (float2 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (float2 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (float2 data, size_t offset, + __global float *p); + + + + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private char *p); + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local char *p); + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global char *p); + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (char3 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (char3 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (char3 data, size_t offset, + __global char *p); + + + + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private uchar *p); + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local uchar *p); + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global uchar *p); + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uchar3 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uchar3 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uchar3 data, size_t offset, + __global uchar *p); + + + + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private short *p); + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local short *p); + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global short *p); + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (short3 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (short3 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (short3 data, size_t offset, + __global short *p); + + + + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private ushort *p); + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local ushort *p); + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global ushort *p); + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ushort3 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ushort3 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ushort3 data, size_t offset, + __global ushort *p); + + + + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private int *p); + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local int *p); + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global int *p); + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (int3 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (int3 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (int3 data, size_t offset, + __global int *p); + + + + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private uint *p); + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local uint *p); + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global uint *p); + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uint3 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uint3 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uint3 data, size_t offset, + __global uint *p); + + + + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private long *p); + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local long *p); + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global long *p); + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (long3 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (long3 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (long3 data, size_t offset, + __global long *p); + + + + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private ulong *p); + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local ulong *p); + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global ulong *p); + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ulong3 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ulong3 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ulong3 data, size_t offset, + __global ulong *p); + + + + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private float *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local float *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global float *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (float3 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (float3 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (float3 data, size_t offset, + __global float *p); + + + + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private char *p); + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local char *p); + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global char *p); + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (char4 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (char4 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (char4 data, size_t offset, + __global char *p); + + + + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private uchar *p); + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local uchar *p); + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global uchar *p); + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uchar4 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uchar4 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uchar4 data, size_t offset, + __global uchar *p); + + + + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private short *p); + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local short *p); + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global short *p); + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (short4 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (short4 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (short4 data, size_t offset, + __global short *p); + + + + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private ushort *p); + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local ushort *p); + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global ushort *p); + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ushort4 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ushort4 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ushort4 data, size_t offset, + __global ushort *p); + + + + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private int *p); + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local int *p); + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global int *p); + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (int4 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (int4 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (int4 data, size_t offset, + __global int *p); + + + + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private uint *p); + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local uint *p); + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global uint *p); + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uint4 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uint4 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uint4 data, size_t offset, + __global uint *p); + + + + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private long *p); + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local long *p); + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global long *p); + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (long4 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (long4 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (long4 data, size_t offset, + __global long *p); + + + + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private ulong *p); + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local ulong *p); + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global ulong *p); + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ulong4 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ulong4 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ulong4 data, size_t offset, + __global ulong *p); + + + + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private float *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local float *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global float *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (float4 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (float4 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (float4 data, size_t offset, + __global float *p); + + + + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private char *p); + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local char *p); + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global char *p); + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (char8 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (char8 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (char8 data, size_t offset, + __global char *p); + + + + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private uchar *p); + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local uchar *p); + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global uchar *p); + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uchar8 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uchar8 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uchar8 data, size_t offset, + __global uchar *p); + + + + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private short *p); + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local short *p); + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global short *p); + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (short8 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (short8 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (short8 data, size_t offset, + __global short *p); + + + + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private ushort *p); + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local ushort *p); + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global ushort *p); + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ushort8 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ushort8 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ushort8 data, size_t offset, + __global ushort *p); + + + + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private int *p); + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local int *p); + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global int *p); + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (int8 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (int8 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (int8 data, size_t offset, + __global int *p); + + + + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private uint *p); + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local uint *p); + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global uint *p); + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uint8 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uint8 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uint8 data, size_t offset, + __global uint *p); + + + + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private long *p); + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local long *p); + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global long *p); + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (long8 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (long8 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (long8 data, size_t offset, + __global long *p); + + + + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private ulong *p); + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local ulong *p); + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global ulong *p); + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ulong8 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ulong8 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ulong8 data, size_t offset, + __global ulong *p); + + + + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private float *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local float *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global float *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (float8 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (float8 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (float8 data, size_t offset, + __global float *p); + + + + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private char *p); + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local char *p); + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global char *p); + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (char16 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (char16 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (char16 data, size_t offset, + __global char *p); + + + + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private uchar *p); + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local uchar *p); + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global uchar *p); + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uchar16 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uchar16 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uchar16 data, size_t offset, + __global uchar *p); + + + + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private short *p); + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local short *p); + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global short *p); + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (short16 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (short16 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (short16 data, size_t offset, + __global short *p); + + + + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private ushort *p); + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local ushort *p); + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global ushort *p); + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ushort16 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ushort16 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ushort16 data, size_t offset, + __global ushort *p); + + + + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private int *p); + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local int *p); + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global int *p); + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (int16 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (int16 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (int16 data, size_t offset, + __global int *p); + + + + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private uint *p); + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local uint *p); + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global uint *p); + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uint16 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uint16 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uint16 data, size_t offset, + __global uint *p); + + + + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private long *p); + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local long *p); + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global long *p); + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (long16 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (long16 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (long16 data, size_t offset, + __global long *p); + + + + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private ulong *p); + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local ulong *p); + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global ulong *p); + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ulong16 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ulong16 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ulong16 data, size_t offset, + __global ulong *p); + + + + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private float *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local float *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global float *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (float16 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (float16 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (float16 data, size_t offset, + __global float *p); + + + + +// vstore[a]_half[n] and vload[a]_half[n] + + + + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __private half *p); + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __local half *p); + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __global half *p); + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rte ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtz ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtp ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtn ( + float data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rte ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtz ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtp ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtn ( + float data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rte ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtz ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtp ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtn ( + float data, + size_t offset, + __global half *p); + + + + + + + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __private half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __local half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __global half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2 ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rte ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtz ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtp ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtn ( + float2 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2 ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rte ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtz ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtp ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtn ( + float2 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2 ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rte ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtz ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtp ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtn ( + float2 data, + size_t offset, + __global half *p); + + + + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __private half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __local half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __global half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2 ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rte ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtz ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtp ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtn ( + float2 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2 ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rte ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtz ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtp ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtn ( + float2 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2 ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rte ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtz ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtp ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtn ( + float2 data, + size_t offset, + __global half *p); + + + + + + + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __private half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __local half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __global half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3 ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rte ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtz ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtp ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtn ( + float3 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3 ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rte ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtz ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtp ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtn ( + float3 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3 ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rte ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtz ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtp ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtn ( + float3 data, + size_t offset, + __global half *p); + + + + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __private half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __local half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __global half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3 ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rte ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtz ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtp ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtn ( + float3 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3 ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rte ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtz ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtp ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtn ( + float3 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3 ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rte ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtz ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtp ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtn ( + float3 data, + size_t offset, + __global half *p); + + + + + + + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __private half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __local half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __global half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4 ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rte ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtz ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtp ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtn ( + float4 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4 ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rte ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtz ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtp ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtn ( + float4 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4 ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rte ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtz ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtp ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtn ( + float4 data, + size_t offset, + __global half *p); + + + + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __private half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __local half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __global half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4 ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rte ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtz ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtp ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtn ( + float4 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4 ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rte ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtz ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtp ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtn ( + float4 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4 ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rte ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtz ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtp ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtn ( + float4 data, + size_t offset, + __global half *p); + + + + + + + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __private half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __local half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __global half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8 ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rte ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtz ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtp ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtn ( + float8 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8 ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rte ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtz ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtp ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtn ( + float8 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8 ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rte ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtz ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtp ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtn ( + float8 data, + size_t offset, + __global half *p); + + + + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __private half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __local half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __global half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8 ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rte ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtz ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtp ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtn ( + float8 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8 ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rte ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtz ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtp ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtn ( + float8 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8 ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rte ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtz ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtp ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtn ( + float8 data, + size_t offset, + __global half *p); + + + + + + + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __private half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __local half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __global half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16 ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rte ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtz ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtp ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtn ( + float16 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16 ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rte ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtz ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtp ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtn ( + float16 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16 ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rte ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtz ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtp ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtn ( + float16 data, + size_t offset, + __global half *p); + + + + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __private half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __local half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __global half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16 ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rte ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtz ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtp ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtn ( + float16 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16 ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rte ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtz ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtp ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtn ( + float16 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16 ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rte ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtz ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtp ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtn ( + float16 data, + size_t offset, + __global half *p); + + + + + +// Async Copy and Prefetch Functions +// async_work_group_copy, async_work_group_strided_copy, prefetch + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char *dst, + const __global char *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char *dst, + const __global char *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char *dst, + const __local char *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char *dst, + const __local char *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar *dst, + const __global uchar *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar *dst, + const __global uchar *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar *dst, + const __local uchar *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar *dst, + const __local uchar *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short *dst, + const __global short *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short *dst, + const __global short *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short *dst, + const __local short *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short *dst, + const __local short *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort *dst, + const __global ushort *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort *dst, + const __global ushort *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort *dst, + const __local ushort *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort *dst, + const __local ushort *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int *dst, + const __global int *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int *dst, + const __global int *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int *dst, + const __local int *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int *dst, + const __local int *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint *dst, + const __global uint *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint *dst, + const __global uint *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint *dst, + const __local uint *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint *dst, + const __local uint *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long *dst, + const __global long *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long *dst, + const __global long *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long *dst, + const __local long *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long *dst, + const __local long *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong *dst, + const __global ulong *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong *dst, + const __global ulong *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong *dst, + const __local ulong *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong *dst, + const __local ulong *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float *dst, + const __global float *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float *dst, + const __global float *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float *dst, + const __local float *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float *dst, + const __local float *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char2 *dst, + const __global char2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char2 *dst, + const __global char2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char2 *dst, + const __local char2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char2 *dst, + const __local char2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar2 *dst, + const __global uchar2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar2 *dst, + const __global uchar2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar2 *dst, + const __local uchar2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar2 *dst, + const __local uchar2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short2 *dst, + const __global short2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short2 *dst, + const __global short2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short2 *dst, + const __local short2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short2 *dst, + const __local short2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort2 *dst, + const __global ushort2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort2 *dst, + const __global ushort2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort2 *dst, + const __local ushort2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort2 *dst, + const __local ushort2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int2 *dst, + const __global int2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int2 *dst, + const __global int2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int2 *dst, + const __local int2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int2 *dst, + const __local int2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint2 *dst, + const __global uint2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint2 *dst, + const __global uint2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint2 *dst, + const __local uint2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint2 *dst, + const __local uint2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long2 *dst, + const __global long2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long2 *dst, + const __global long2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long2 *dst, + const __local long2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long2 *dst, + const __local long2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong2 *dst, + const __global ulong2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong2 *dst, + const __global ulong2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong2 *dst, + const __local ulong2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong2 *dst, + const __local ulong2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float2 *dst, + const __global float2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float2 *dst, + const __global float2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float2 *dst, + const __local float2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float2 *dst, + const __local float2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char3 *dst, + const __global char3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char3 *dst, + const __global char3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char3 *dst, + const __local char3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char3 *dst, + const __local char3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar3 *dst, + const __global uchar3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar3 *dst, + const __global uchar3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar3 *dst, + const __local uchar3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar3 *dst, + const __local uchar3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short3 *dst, + const __global short3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short3 *dst, + const __global short3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short3 *dst, + const __local short3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short3 *dst, + const __local short3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort3 *dst, + const __global ushort3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort3 *dst, + const __global ushort3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort3 *dst, + const __local ushort3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort3 *dst, + const __local ushort3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int3 *dst, + const __global int3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int3 *dst, + const __global int3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int3 *dst, + const __local int3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int3 *dst, + const __local int3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint3 *dst, + const __global uint3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint3 *dst, + const __global uint3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint3 *dst, + const __local uint3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint3 *dst, + const __local uint3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long3 *dst, + const __global long3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long3 *dst, + const __global long3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long3 *dst, + const __local long3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long3 *dst, + const __local long3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong3 *dst, + const __global ulong3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong3 *dst, + const __global ulong3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong3 *dst, + const __local ulong3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong3 *dst, + const __local ulong3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float3 *dst, + const __global float3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float3 *dst, + const __global float3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float3 *dst, + const __local float3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float3 *dst, + const __local float3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char4 *dst, + const __global char4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char4 *dst, + const __global char4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char4 *dst, + const __local char4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char4 *dst, + const __local char4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar4 *dst, + const __global uchar4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar4 *dst, + const __global uchar4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar4 *dst, + const __local uchar4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar4 *dst, + const __local uchar4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short4 *dst, + const __global short4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short4 *dst, + const __global short4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short4 *dst, + const __local short4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short4 *dst, + const __local short4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort4 *dst, + const __global ushort4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort4 *dst, + const __global ushort4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort4 *dst, + const __local ushort4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort4 *dst, + const __local ushort4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int4 *dst, + const __global int4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int4 *dst, + const __global int4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int4 *dst, + const __local int4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int4 *dst, + const __local int4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint4 *dst, + const __global uint4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint4 *dst, + const __global uint4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint4 *dst, + const __local uint4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint4 *dst, + const __local uint4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long4 *dst, + const __global long4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long4 *dst, + const __global long4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long4 *dst, + const __local long4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long4 *dst, + const __local long4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong4 *dst, + const __global ulong4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong4 *dst, + const __global ulong4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong4 *dst, + const __local ulong4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong4 *dst, + const __local ulong4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float4 *dst, + const __global float4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float4 *dst, + const __global float4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float4 *dst, + const __local float4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float4 *dst, + const __local float4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char8 *dst, + const __global char8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char8 *dst, + const __global char8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char8 *dst, + const __local char8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char8 *dst, + const __local char8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar8 *dst, + const __global uchar8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar8 *dst, + const __global uchar8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar8 *dst, + const __local uchar8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar8 *dst, + const __local uchar8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short8 *dst, + const __global short8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short8 *dst, + const __global short8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short8 *dst, + const __local short8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short8 *dst, + const __local short8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort8 *dst, + const __global ushort8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort8 *dst, + const __global ushort8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort8 *dst, + const __local ushort8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort8 *dst, + const __local ushort8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int8 *dst, + const __global int8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int8 *dst, + const __global int8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int8 *dst, + const __local int8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int8 *dst, + const __local int8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint8 *dst, + const __global uint8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint8 *dst, + const __global uint8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint8 *dst, + const __local uint8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint8 *dst, + const __local uint8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long8 *dst, + const __global long8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long8 *dst, + const __global long8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long8 *dst, + const __local long8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long8 *dst, + const __local long8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong8 *dst, + const __global ulong8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong8 *dst, + const __global ulong8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong8 *dst, + const __local ulong8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong8 *dst, + const __local ulong8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float8 *dst, + const __global float8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float8 *dst, + const __global float8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float8 *dst, + const __local float8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float8 *dst, + const __local float8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char16 *dst, + const __global char16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char16 *dst, + const __global char16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char16 *dst, + const __local char16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char16 *dst, + const __local char16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar16 *dst, + const __global uchar16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar16 *dst, + const __global uchar16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar16 *dst, + const __local uchar16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar16 *dst, + const __local uchar16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short16 *dst, + const __global short16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short16 *dst, + const __global short16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short16 *dst, + const __local short16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short16 *dst, + const __local short16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort16 *dst, + const __global ushort16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort16 *dst, + const __global ushort16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort16 *dst, + const __local ushort16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort16 *dst, + const __local ushort16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int16 *dst, + const __global int16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int16 *dst, + const __global int16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int16 *dst, + const __local int16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int16 *dst, + const __local int16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint16 *dst, + const __global uint16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint16 *dst, + const __global uint16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint16 *dst, + const __local uint16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint16 *dst, + const __local uint16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long16 *dst, + const __global long16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long16 *dst, + const __global long16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long16 *dst, + const __local long16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long16 *dst, + const __local long16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong16 *dst, + const __global ulong16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong16 *dst, + const __global ulong16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong16 *dst, + const __local ulong16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong16 *dst, + const __local ulong16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float16 *dst, + const __global float16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float16 *dst, + const __global float16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float16 *dst, + const __local float16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float16 *dst, + const __local float16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float16 *p, size_t num_elements); diff --git a/vitis/v2020_1/dds/dds_compiler_v6_0_bitacc_cmodel.h b/vitis/v2020_1/dds/dds_compiler_v6_0_bitacc_cmodel.h new file mode 100644 index 00000000..e922c920 --- /dev/null +++ b/vitis/v2020_1/dds/dds_compiler_v6_0_bitacc_cmodel.h @@ -0,0 +1,383 @@ +//----------------------------------------------------------------------------- +// +// +// Vendor: Xilinx +// Version: 1.0 +// Filename: $RCSfile: example_bitacc_cmodel.h,v $ +// Date Last Modified: $Date: 2010/04/13 09:57:20 $ +// Date Created: 2012 +// +// +// +// Device : All +// Library : dds_compiler_v6_0 +// Purpose : Header file for bit accurate C model +//----------------------------------------------------------------------------- +// (c) Copyright 2012 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +#ifndef XIP_DDS_COMPILER_V6_0_BITACC_CMODEL_H +#define XIP_DDS_COMPILER_V6_0_BITACC_CMODEL_H + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models +#undef XIP_XILINX_XIP_TARGET +#define XIP_XILINX_XIP_TARGET dds_v6_0 +#include "xip_common_bitacc_cmodel.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//Depreciated; these functions now defined within model +#define DEFINE_XIP_ARRAY(TYPE) + +//Depreciated; use xip_status/XIP_STATUS_* instead +typedef xip_status xip_dds_compiler_v6_0_status; +#define XIP_DDS_COMPILER_V6_0_STATUS_OK XIP_STATUS_OK +#define XIP_DDS_COMPILER_V6_0_STATUS_ERROR XIP_STATUS_ERROR + +/** + * Core Specific Constants + */ +/* PartsPresent values */ +#define XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT 0 +#define XIP_DDS_PHASE_GEN_ONLY 1 +#define XIP_DDS_SIN_COS_LUT_ONLY 2 + + /* DDS_Clock_Rate limits */ +#define XIP_DDS_CLOCK_RATE_MIN 0.01 +#define XIP_DDS_CLOCK_RATE_MAX 1000 + + /* Channels limits */ +#define XIP_DDS_CHANNELS_MIN 1 +#define XIP_DDS_CHANNELS_MAX 16 + + /* Mode of Operation values */ +#define XIP_DDS_MOO_CONVENTIONAL 0 +#define XIP_DDS_MOO_RASTERIZED 1 + + /* Modulus limits */ +#define XIP_DDS_MODULUS_MIN 9 +#define XIP_DDS_MODULUS_MAX 16384 + + /* ParameterEntry values */ +#define XIP_DDS_SYSTEM_PARAMS 0 +#define XIP_DDS_HARDWARE_PARAMS 1 + + /* Spurious Free Dynamic Range SFDR limits */ +#define XIP_DDS_SFDR_MIN 18 +#define XIP_DDS_SFDR_MAX 150 + + /* Frequency_Resolution SFDR limits */ +#define XIP_DDS_FREQ_RES_MIN 0.000000001 +#define XIP_DDS_FREQ_RES_MAX 125000000 + + /* Noise_Shaping values */ +#define XIP_DDS_NS_NONE 0 +#define XIP_DDS_NS_DITHER 1 +#define XIP_DDS_NS_TAYLOR 2 +#define XIP_DDS_NS_AUTO 3 + + /* Phase_Increment and Phase_Offset values */ +#define XIP_DDS_PINCPOFF_NONE 0 +#define XIP_DDS_PINCPOFF_PROG 1 +#define XIP_DDS_PINCPOFF_FIXED 2 +#define XIP_DDS_PINCPOFF_STREAM 3 + + /* Output_Selection values */ +#define XIP_DDS_OUT_SIN_ONLY 0 +#define XIP_DDS_OUT_COS_ONLY 1 +#define XIP_DDS_OUT_SIN_AND_COS 2 + + /* Present/absent values */ +#define XIP_DDS_ABSENT 0 +#define XIP_DDS_PRESENT 1 + + /* Amplitude_Mode values */ +#define XIP_DDS_FULL_RANGE 0 +#define XIP_DDS_UNIT_CIRCLE 1 + + /* Output_Form */ +#define XIP_DDS_OUTPUT_TWOS 0 +#define XIP_DDS_OUTPUT_SIGN_MAG 1 + + /* Memory_Type values */ +#define XIP_DDS_MEM_AUTO 0 +#define XIP_DDS_MEM_BLOCK 1 +#define XIP_DDS_MEM_DIST 2 + + /* Optimization_Goal values */ +#define XIP_DDS_OPTGOAL_AUTO 0 +#define XIP_DDS_OPTGOAL_AREA 1 +#define XIP_DDS_OPTGOAL_SPEED 2 + + /* Resolved Optimization_Goal values */ +#define XIP_DDS_RESOPTGOAL_AREA 0 +#define XIP_DDS_RESOPTGOAL_SPEED 1 + + /* DSP48_use values */ +#define XIP_DDS_DSP_MIN 0 +#define XIP_DDS_DSP_MAX 1 + + /* Latency_configuration values */ +#define XIP_DDS_LATENCY_AUTO 0 +#define XIP_DDS_LATENCY_MANUAL 1 + + /* S_CONFIG_Sync_Mode values */ +#define XIP_DDS_CONFIG_SYNC_VECTOR 0 +#define XIP_DDS_CONFIG_SYNC_PACKET 1 + +#define ci_max_pipe_stages 13 +#define ci_quad_sym_thresh 2048 + +typedef double xip_dds_v6_0_data; + +typedef struct +{ + /** + * dds_compiler_v6_0 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + */ + const char *name; //@- Instance name (arbitrary) + unsigned int PartsPresent; + double DDS_Clock_Rate; + unsigned int Channels; + unsigned int Mode_of_Operation; + unsigned int Modulus; + unsigned int ParameterEntry; + double Spurious_Free_Dynamic_Range; + double Frequency_Resolution; + unsigned int Noise_Shaping; + unsigned int Phase_Increment; + unsigned int Resync; + unsigned int Phase_Offset; + unsigned int Output_Selection; + unsigned int Negative_Sine; + unsigned int Negative_Cosine; + unsigned int Amplitude_Mode; + unsigned int Memory_Type; + unsigned int Optimization_Goal; + unsigned int DSP48_Use; + unsigned int Has_TREADY; + unsigned int S_CONFIG_Sync_Mode; + unsigned int Output_Form; + unsigned int Latency_Configuration; + unsigned int Has_ARESETn; + xip_dds_v6_0_data PINC[XIP_DDS_CHANNELS_MAX]; + xip_dds_v6_0_data POFF[XIP_DDS_CHANNELS_MAX]; + unsigned int Latency; + unsigned int Phase_Width; + unsigned int Output_Width; + + /* The following parameters are the results of resolution fns. They are included here so that they are in + the return structure of get_config */ + + double resSFDR; + double resFrequency_Resolution; + unsigned int resNoise_Shaping; + unsigned int resMemory_Type; + unsigned int resOptimization_Goal; + signed int resLatency; + unsigned int resPhase_Width; + unsigned int resOutput_Width; + unsigned int resPhaseAngleWidth; + unsigned int resPhaseErrWidth; + xip_uint resLatencyPipe[ci_max_pipe_stages+1]; //100 is much bigger than max possible latency + + + int debug; //@- Debug information +} xip_dds_v6_0_config; + +typedef struct +{ + /** + * Input data config channel structure. Contains pointers to vectors (arrays) of double parts + * i.e. one array for PhaseINCrement values - one per channel and the other array for PhaseOFFset values. + */ + + xip_dds_v6_0_data *din_pinc; //@- Phase Increment data + xip_dds_v6_0_data *din_poff; //@- Phase Offset data + +} xip_dds_v6_0_config_pkt; + + +/** + * dds_compiler_v6_0 handle type (opaque to user). + */ +struct _xip_dds_v6_0; +typedef struct _xip_dds_v6_0 xip_dds_v6_0; + +//Helpers for accessing data +XIP_XILINX_XIP_IMPEXP const xip_status xip_dds_v6_0_xip_array_real_set_data(xip_array_real* p, const xip_real value, size_t sample, size_t chan, size_t field); +XIP_XILINX_XIP_IMPEXP const xip_status xip_dds_v6_0_xip_array_real_get_data(const xip_array_real* p, xip_real* value, size_t sample, size_t chan, size_t field); + +/** + * Fill in a configuration structure with the core's default values. + * + * @param config The configuration structure to be populated + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_default_config(xip_dds_v6_0_config *config); + + +/** + * Create a new instance of the core based on some configuration values. + * + * @param config Pointer to a xip_dds_v6_0_config structure + * @param handler Callback function for errors and warnings (providing a null + * pointer means no messages are output) + * @param handle Optional argument to be passed back to callback function + * + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_dds_v6_0 *xip_dds_v6_0_create( + const xip_dds_v6_0_config *config, + xip_msg_handler handler, + void *handle +); + +/** + * Destroy an instance of the core and free any resources allocated. + * + * @param s Pointer to xip_dds_v6_0 state structure + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_destroy(xip_dds_v6_0 *s); + +/** + * Get version of model. + * + * @returns String Textual representation of model version + */ +XIP_XILINX_XIP_IMPEXP +const char* xip_dds_v6_0_get_version(void); + +/** + * Reset an instance of the core. + * + * @param s Pointer to xip_dds_v6_0 state structure + * @returns Exit code XIP_STATUS_* + */ + +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_reset(xip_dds_v6_0 *s); + +/** + * Fill a configuration structure with the core's current state + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_get_config(xip_dds_v6_0 *s, + xip_dds_v6_0_config* config); + +/** + * Allocate appropriate buffers in a config pkt structure. + * + * @param r Address of a pointer to request structure to set up + * @param din_pinc_size Number of channels to allocate space for + * @param din_poff_size Number of channels to allocate space for + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_alloc_config_pkt(xip_dds_v6_0_config_pkt **r, + xip_uint din_pinc_size, + xip_uint din_poff_size); + +/** + * Deallocate the buffers in a config pkt structure allocated by xip_dds_v6_0_alloc_config_pkt + * + * @param s Pointer to xip_dds_v6_0 state structure + * @param r Pointer to config_pkt structure to free + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_free_config_pkt(xip_dds_v6_0_config_pkt **r); + +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_config_do(xip_dds_v6_0 *s, + xip_dds_v6_0_config_pkt *req); + + +/** + * Apply a transaction on the data port. + * + * @param s Pointer to xip_dds_v6_0 state structure + * @param req Pointer to xip_array_real request array + * @param resp Pointer to xip_array_real response array + * @param samples, channels, in_fields, out_fields Dimensions of input and output arrays (Sample and channel are common to both) + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_data_do(xip_dds_v6_0 *s, + xip_array_real *req, + xip_array_real *resp, + size_t samples, + size_t channels, + size_t in_fields, + size_t out_fields); + +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_data_do_signed(xip_dds_v6_0 *s, + xip_array_real *req, + xip_array_real *resp, + size_t samples, + size_t channels, + size_t in_fields, + size_t out_fields, + int form); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vitis/v2020_1/dds/xip_common_bitacc_cmodel.h b/vitis/v2020_1/dds/xip_common_bitacc_cmodel.h new file mode 100644 index 00000000..76dca8cd --- /dev/null +++ b/vitis/v2020_1/dds/xip_common_bitacc_cmodel.h @@ -0,0 +1,261 @@ +// (c) Copyright 2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models. +// #include this file inside each C model's exported header file. + +#ifndef XIP_COMMON_BITACC_CMODEL_H +#define XIP_COMMON_BITACC_CMODEL_H + +//Determine shared library import attributes +#ifndef XIP_XILINX_XIP_IMPEXP +#if defined(NT) || defined(NT64) +#define XIP_XILINX_XIP_IMPEXP __declspec(dllimport) +#elif defined(LIN) || defined(LIN64) +#define XIP_XILINX_XIP_IMPEXP +#else +#define XIP_XILINX_XIP_IMPEXP +#endif +#endif + +//Determine best way to approximate inline functions +#ifndef XIP_XILINX_XIP_INLINE +#ifdef __cplusplus +#define XIP_XILINX_XIP_INLINE inline +#elif (__STDC_VERSION__ >= 199901L) +#define XIP_XILINX_XIP_INLINE static inline +#else +#define XIP_XILINX_XIP_INLINE static +#endif +#endif + +//Check we know which model we are being included for +#ifndef XIP_XILINX_XIP_TARGET +#error "XIP_XILINX_XIP_TARGET undefined; must give interface name of model being compiled" +#endif + +#ifdef __cplusplus +#include +using std::size_t; +extern "C" { +#else +#include +#endif + + +/** + * Result code from DLL functions + */ +typedef int xip_status; + +/** + * Error codes + */ +#define XIP_STATUS_OK 0 +#define XIP_STATUS_ERROR 1 + +/** + * Bit type + */ +typedef unsigned char xip_bit; +#define xip_type_trait_bit 0 + +/** + * Real scalar type + */ +typedef double xip_real; +#define xip_type_trait_real 0 + +/** + * Complex scalar type + */ +typedef struct { xip_real re, im; } xip_complex; +#define xip_type_trait_complex 0 + +/** + * Integer type + */ +typedef unsigned int xip_uint; +#define xip_type_trait_uint 0 + +/** + * 32 bit integer type + */ +typedef unsigned int xip_uint32; +#define xip_type_trait_uint32 0 + + +/** + * Declare a xip_array_ structure for holding multi-dimensional arrays of xip_ instances + * Use xip_array__create() to create an array instance + * Use xip_array__create_ex(xip_array__operations* ops) to create an array instance using a given xip_array__operations object + * Use xip_array__reserve_data(xip_array_* array, size_t n) to reserve data elements + * Use xip_array__reserve_dim(xip_array_* array, size_t n) to reserve dimension elements + * Use xip_array__destroy(xip_array_*) to destroy an array instance + * Use xip_array__sub2ind_*(const xip_array_* p, size_t s0...) to obtain an index from a list of subscripts + * Use xip_array__set_element(xip_array_* p, const xip_ value, size_t index) to set a value + * Use xip_array__get_element(const xip_array_* p, xip_* value, size_t index) to get a value + * + * e.g. + * xip_array_real* array = xip_array_real_create(); //Create an empty array + * xip_array_real_reserve_data(array,1000); //Reserve space for 1000 elements + * xip_array_real_reserve_dim(array,10); //Reserve space for 10 dimensions + * array = xip_array_real_destroy(array); //Destroy array + * + */ +#define DECLARE_XIP_ARRAY(TYPE) \ +typedef struct xip_array_##TYPE##_struct xip_array_##TYPE; \ +typedef struct xip_array_##TYPE##_operations_struct xip_array_##TYPE##_operations; \ +struct xip_array_##TYPE##_struct { \ + xip_##TYPE* data; \ + size_t data_size; \ + size_t data_capacity; \ + size_t* dim; \ + size_t dim_size; \ + size_t dim_capacity; \ + unsigned int owner; \ + const xip_array_##TYPE##_operations* ops; \ +}; \ +struct xip_array_##TYPE##_operations_struct { \ + void* const (*ops_realloc )(const xip_array_##TYPE##_operations* ops, void* p, size_t size); \ + void (*ops_free )(const xip_array_##TYPE##_operations* ops, void* p); \ + void (*ops_elem_create )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void (*ops_elem_copy )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* dst, const xip_##TYPE* src); \ + void (*ops_elem_swap )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e1, xip_##TYPE* e2); \ + void (*ops_elem_destroy)(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void* ops_private; \ +} + +/** + * Export xip_array_ functions + */ +#define EXPORT_XIP_ARRAY(TYPE,TARGET) EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) +#define EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_IMPEXP const xip_array_##TYPE##_operations* const xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_destroy(xip_array_##TYPE* p); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) + +/** + * Declare the array type interfaces + * Note: for any given xip_array_* there should be only one DECLARE_XIP_ARRAY_INTERFACE to expose the interface + */ +#define DECLARE_XIP_ARRAY_INTERFACE(TYPE,TARGET) DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) +#define DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_INLINE const xip_array_##TYPE##_operations* const xip_array_##TYPE##_get_default_ops() { return xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create() { return xip_##TARGET##_xip_array_##TYPE##_create(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops) { return xip_##TARGET##_xip_array_##TYPE##_create_ex(ops); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels) { return xip_##TARGET##_xip_array_##TYPE##_reserve_data(p,max_nels); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim) { return xip_##TARGET##_xip_array_##TYPE##_reserve_dim(p,max_ndim); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_destroy(xip_array_##TYPE* p) { return xip_##TARGET##_xip_array_##TYPE##_destroy(p); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(p,s0); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(p,s0,s1); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(p,s0,s1,s2); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(p,s0,s1,s2,s3); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_set_element(p,value,index); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_get_element(p,value,index); } + +/** + * Declare and export the fundamental array types + */ +DECLARE_XIP_ARRAY(bit ); EXPORT_XIP_ARRAY(bit ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(real ); EXPORT_XIP_ARRAY(real ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(complex); EXPORT_XIP_ARRAY(complex,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint ); EXPORT_XIP_ARRAY(uint ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint32 ); EXPORT_XIP_ARRAY(uint32 ,XIP_XILINX_XIP_TARGET); + + +//Exposed interfaces for each xip_array_* type only if a previous Xilinx C model has not already done so +#ifndef XIP_ARRAY_BIT_API +DECLARE_XIP_ARRAY_INTERFACE(bit ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_BIT_API +#endif + +#ifndef XIP_ARRAY_REAL_API +DECLARE_XIP_ARRAY_INTERFACE(real ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_REAL_API +#endif + +#ifndef XIP_ARRAY_COMPLEX_API +DECLARE_XIP_ARRAY_INTERFACE(complex,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_COMPLEX_API +#endif + +#ifndef XIP_ARRAY_UINT_API +DECLARE_XIP_ARRAY_INTERFACE(uint ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT_API +#endif + +#ifndef XIP_ARRAY_UINT32_API +DECLARE_XIP_ARRAY_INTERFACE(uint32 ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT32_API +#endif + +/** + * Error-handling callback type + */ +typedef void (*xip_msg_handler)(void* handle, int error, const char* msg); + +/** + * Data-handling callback type + * Specific to xip_array_real type + */ +typedef int (*xip_array_real_handler)(const xip_array_real* data, void* handle, void* opt_arg); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_COMMON_BITACC_CMODEL_H diff --git a/vitis/v2020_1/dsp_builtins.h b/vitis/v2020_1/dsp_builtins.h new file mode 100644 index 00000000..61f683cf --- /dev/null +++ b/vitis/v2020_1/dsp_builtins.h @@ -0,0 +1,86 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_DSP_BUILTINS_H +#define X_DSP_BUILTINS_H +#include + +#ifdef __cplusplus +#include "ap_int.h" +typedef ap_int<1> __dsp1_t; +typedef ap_int<6> __dsp6_t; +typedef ap_int<17> __dsp17_t; +typedef ap_int<18> __dsp18_t; +typedef ap_int<25> __dsp25_t; +typedef ap_int<27> __dsp27_t; +typedef ap_int<30> __dsp30_t; +typedef ap_int<48> __dsp48_t; +#else +#include "ap_cint.h" +typedef int1 __dsp1_t; +typedef int6 __dsp6_t; +typedef int17 __dsp17_t; +typedef int18 __dsp18_t; +typedef int25 __dsp25_t; +typedef int27 __dsp27_t; +typedef int30 __dsp30_t; +typedef int48 __dsp48_t; +#endif + +#include "etc/dsp_dp_builtins.h" +#include "etc/dsp48_builtins.h" + +#endif + + + diff --git a/vitis/v2020_1/etc/ap_headers.h b/vitis/v2020_1/etc/ap_headers.h new file mode 100644 index 00000000..7a37f039 --- /dev/null +++ b/vitis/v2020_1/etc/ap_headers.h @@ -0,0 +1,58 @@ +// Fri Mar 8 15:47:06 MST 2013 +const STL_STRING ap_sysheader_files[] = { +"AXI4_if.h", +"algorithm.h", +"ap_axi_sdata.h", +"ap_cint.h", +"ap_decl.h", +"ap_common.h", +"ap_fixed.h", +"ap_fixed_base.h", +"ap_fixed_ref.h", +"ap_fixed_special.h", +"ap_int.h", +"ap_int_base.h", +"ap_int_ref.h", +"ap_int_special.h", +"ap_mem_if.h", +"ap_private.h", +"ap_sc_core.h", +"ap_sc_dt.h", +"ap_sc_ext.h", +"ap_sc_extras.h", +"ap_shift_reg.h", +"ap_stream.h", +"ap_systemc.h", +"ap_tlm.h", +"ap_utils.h", +"autoesl_tech.h", +"autopilot_apint.h", +"autopilot_dt.h", +"autopilot_enum.h", +"autopilot_ssdm_bits.h", +"autopilot_ssdm_op.h", +"c_ap_int_sim.h", +"deque.h", +"hls_bus_if.h", +"hls_design.h", +"hls_fpo.h", +"hls_stream.h", +"hls_util.h", +"iterator.h", +"list.h", +"set.h", +"stdafx.h", +"string.h", +"systemc.h", +"targetver.h", +"tlm.h", +"vector.h", +"vhls_sim.h", +"systemc", +"complex", +"dsp48e1_builtins.h", +"dsp48e2_builtins.h", +"" +}; + + diff --git a/vitis/v2020_1/etc/ap_private.h b/vitis/v2020_1/etc/ap_private.h new file mode 100644 index 00000000..9241e35f --- /dev/null +++ b/vitis/v2020_1/etc/ap_private.h @@ -0,0 +1,7222 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_PRIVATE_H__ +#define __AP_PRIVATE_H__ + +// common macros and type declarations are now defined in ap_common.h, and +// ap_private becomes part of it. +#ifndef __AP_COMMON_H__ +#error "etc/ap_private.h cannot be included directly." +#endif + +// forward declarations +//template +//class ap_private; // moved to ap_common.h +template +struct _private_range_ref; +template +struct _private_bit_ref; + +// TODO clean up this part. +#ifndef LLVM_SUPPORT_MATHEXTRAS_H +#define LLVM_SUPPORT_MATHEXTRAS_H + +#ifdef _MSC_VER +#if _MSC_VER <= 1500 +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +#include +#endif +#else +#include +#endif + +// FIXME eventually, this should have nothing to do with half. +#include "vitis/v2020_1/hls_half.h" + +#ifndef INLINE +#define INLINE inline +// Enable to debug ap_int/ap_fixed +// #define INLINE __attribute__((weak)) +#endif + +// NOTE: The following support functions use the _32/_64 extensions instead of +// type overloading so that signed and unsigned integers can be used without +// ambiguity. +namespace AESL_std { +template +DataType INLINE min(DataType a, DataType b) { + return (a >= b) ? b : a; +} + +template +DataType INLINE max(DataType a, DataType b) { + return (a >= b) ? a : b; +} +} // namespace AESL_std + +// TODO clean up included headers. +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ap_private_ops { +/// Hi_32 - This function returns the high 32 bits of a 64 bit value. +static INLINE uint32_t Hi_32(uint64_t Value) { + return static_cast(Value >> 32); +} + +/// Lo_32 - This function returns the low 32 bits of a 64 bit value. +static INLINE uint32_t Lo_32(uint64_t Value) { + return static_cast(Value); +} + +template +INLINE bool isNegative(const ap_private<_AP_W, false>& a) { + return false; +} + +template +INLINE bool isNegative(const ap_private<_AP_W, true>& a) { + enum { + APINT_BITS_PER_WORD = 64, + _AP_N = (_AP_W + APINT_BITS_PER_WORD - 1) / APINT_BITS_PER_WORD + }; + static const uint64_t sign_mask = 1ULL << ((_AP_W - 1) % APINT_BITS_PER_WORD); + return (sign_mask & a.get_pVal(_AP_N - 1)) != 0; +} + +/// CountLeadingZeros_32 - this function performs the platform optimal form of +/// counting the number of zeros from the most significant bit to the first one +/// bit. Ex. CountLeadingZeros_32(0x00F000FF) == 8. +/// Returns 32 if the word is zero. +static INLINE unsigned CountLeadingZeros_32(uint32_t Value) { + unsigned Count; // result +#if __GNUC__ >= 4 +// PowerPC is defined for __builtin_clz(0) +#if !defined(__ppc__) && !defined(__ppc64__) + if (Value == 0) return 32; +#endif + Count = __builtin_clz(Value); +#else + if (Value == 0) return 32; + Count = 0; + // bisecton method for count leading zeros + for (unsigned Shift = 32 >> 1; Shift; Shift >>= 1) { + uint32_t Tmp = (Value) >> (Shift); + if (Tmp) { + Value = Tmp; + } else { + Count |= Shift; + } + } +#endif + return Count; +} + +/// CountLeadingZeros_64 - This function performs the platform optimal form +/// of counting the number of zeros from the most significant bit to the first +/// one bit (64 bit edition.) +/// Returns 64 if the word is zero. +static INLINE unsigned CountLeadingZeros_64(uint64_t Value) { + unsigned Count; // result +#if __GNUC__ >= 4 +// PowerPC is defined for __builtin_clzll(0) +#if !defined(__ppc__) && !defined(__ppc64__) + if (!Value) return 64; +#endif + Count = __builtin_clzll(Value); +#else + if (sizeof(long) == sizeof(int64_t)) { + if (!Value) return 64; + Count = 0; + // bisecton method for count leading zeros + for (unsigned Shift = 64 >> 1; Shift; Shift >>= 1) { + uint64_t Tmp = (Value) >> (Shift); + if (Tmp) { + Value = Tmp; + } else { + Count |= Shift; + } + } + } else { + // get hi portion + uint32_t Hi = Hi_32(Value); + + // if some bits in hi portion + if (Hi) { + // leading zeros in hi portion plus all bits in lo portion + Count = CountLeadingZeros_32(Hi); + } else { + // get lo portion + uint32_t Lo = Lo_32(Value); + // same as 32 bit value + Count = CountLeadingZeros_32(Lo) + 32; + } + } +#endif + return Count; +} + +/// CountTrailingZeros_64 - This function performs the platform optimal form +/// of counting the number of zeros from the least significant bit to the first +/// one bit (64 bit edition.) +/// Returns 64 if the word is zero. +static INLINE unsigned CountTrailingZeros_64(uint64_t Value) { +#if __GNUC__ >= 4 + return (Value != 0) ? __builtin_ctzll(Value) : 64; +#else + static const unsigned Mod67Position[] = { + 64, 0, 1, 39, 2, 15, 40, 23, 3, 12, 16, 59, 41, 19, 24, 54, 4, + 64, 13, 10, 17, 62, 60, 28, 42, 30, 20, 51, 25, 44, 55, 47, 5, 32, + 65, 38, 14, 22, 11, 58, 18, 53, 63, 9, 61, 27, 29, 50, 43, 46, 31, + 37, 21, 57, 52, 8, 26, 49, 45, 36, 56, 7, 48, 35, 6, 34, 33, 0}; + return Mod67Position[(uint64_t)(-(int64_t)Value & (int64_t)Value) % 67]; +#endif +} + +/// CountPopulation_64 - this function counts the number of set bits in a value, +/// (64 bit edition.) +static INLINE unsigned CountPopulation_64(uint64_t Value) { +#if __GNUC__ >= 4 + return __builtin_popcountll(Value); +#else + uint64_t v = Value - (((Value) >> 1) & 0x5555555555555555ULL); + v = (v & 0x3333333333333333ULL) + (((v) >> 2) & 0x3333333333333333ULL); + v = (v + ((v) >> 4)) & 0x0F0F0F0F0F0F0F0FULL; + return unsigned((uint64_t)(v * 0x0101010101010101ULL) >> 56); +#endif +} + +static INLINE uint32_t countLeadingOnes_64(uint64_t __V, uint32_t skip) { + uint32_t Count = 0; + if (skip) (__V) <<= (skip); + while (__V && (__V & (1ULL << 63))) { + Count++; + (__V) <<= 1; + } + return Count; +} + +static INLINE std::string oct2Bin(char oct) { + switch (oct) { + case '\0': { + return ""; + } + case '.': { + return "."; + } + case '0': { + return "000"; + } + case '1': { + return "001"; + } + case '2': { + return "010"; + } + case '3': { + return "011"; + } + case '4': { + return "100"; + } + case '5': { + return "101"; + } + case '6': { + return "110"; + } + case '7': { + return "111"; + } + } + assert(0 && "Invalid character in digit string"); + return ""; +} + +static INLINE std::string hex2Bin(char hex) { + switch (hex) { + case '\0': { + return ""; + } + case '.': { + return "."; + } + case '0': { + return "0000"; + } + case '1': { + return "0001"; + } + case '2': { + return "0010"; + } + case '3': { + return "0011"; + } + case '4': { + return "0100"; + } + case '5': { + return "0101"; + } + case '6': { + return "0110"; + } + case '7': { + return "0111"; + } + case '8': { + return "1000"; + } + case '9': { + return "1001"; + } + case 'A': + case 'a': { + return "1010"; + } + case 'B': + case 'b': { + return "1011"; + } + case 'C': + case 'c': { + return "1100"; + } + case 'D': + case 'd': { + return "1101"; + } + case 'E': + case 'e': { + return "1110"; + } + case 'F': + case 'f': { + return "1111"; + } + } + assert(0 && "Invalid character in digit string"); + return ""; +} + +static INLINE uint32_t decode_digit(char cdigit, int radix) { + uint32_t digit = 0; + if (radix == 16) { +#define isxdigit(c) \ + (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || \ + ((c) >= 'A' && (c) <= 'F')) +#define isdigit(c) ((c) >= '0' && (c) <= '9') + if (!isxdigit(cdigit)) assert(0 && "Invalid hex digit in string"); + if (isdigit(cdigit)) + digit = cdigit - '0'; + else if (cdigit >= 'a') + digit = cdigit - 'a' + 10; + else if (cdigit >= 'A') + digit = cdigit - 'A' + 10; + else + assert(0 && "huh? we shouldn't get here"); + } else if (isdigit(cdigit)) { + digit = cdigit - '0'; + } else { + assert(0 && "Invalid character in digit string"); + } +#undef isxdigit +#undef isdigit + return digit; +} + +// Determine the radix of "val". +static INLINE std::string parseString(const std::string& input, unsigned char& radix) { + size_t len = input.length(); + if (len == 0) { + if (radix == 0) radix = 10; + return input; + } + + size_t startPos = 0; + // Trim whitespace + while (input[startPos] == ' ' && startPos < len) startPos++; + while (input[len - 1] == ' ' && startPos < len) len--; + + std::string val = input.substr(startPos, len - startPos); + // std::cout << "val = " << val << "\n"; + len = val.length(); + startPos = 0; + + // If the length of the string is less than 2, then radix + // is decimal and there is no exponent. + if (len < 2) { + if (radix == 0) radix = 10; + return val; + } + + bool isNegative = false; + std::string ans; + + // First check to see if we start with a sign indicator + if (val[0] == '-') { + ans = "-"; + ++startPos; + isNegative = true; + } else if (val[0] == '+') + ++startPos; + + if (len - startPos < 2) { + if (radix == 0) radix = 10; + return val; + } + + if (val.substr(startPos, 2) == "0x" || val.substr(startPos, 2) == "0X") { + // If we start with "0x", then the radix is hex. + radix = 16; + startPos += 2; + } else if (val.substr(startPos, 2) == "0b" || + val.substr(startPos, 2) == "0B") { + // If we start with "0b", then the radix is binary. + radix = 2; + startPos += 2; + } else if (val.substr(startPos, 2) == "0o" || + val.substr(startPos, 2) == "0O") { + // If we start with "0o", then the radix is octal. + radix = 8; + startPos += 2; + } else if (radix == 0) { + radix = 10; + } + + int exp = 0; + if (radix == 10) { + // If radix is decimal, then see if there is an + // exponent indicator. + size_t expPos = val.find('e'); + bool has_exponent = true; + if (expPos == std::string::npos) expPos = val.find('E'); + if (expPos == std::string::npos) { + // No exponent indicator, so the mantissa goes to the end. + expPos = len; + has_exponent = false; + } + // std::cout << "startPos = " << startPos << " " << expPos << "\n"; + + ans += val.substr(startPos, expPos - startPos); + if (has_exponent) { + // Parse the exponent. + std::istringstream iss(val.substr(expPos + 1, len - expPos - 1)); + iss >> exp; + } + } else { + // Check for a binary exponent indicator. + size_t expPos = val.find('p'); + bool has_exponent = true; + if (expPos == std::string::npos) expPos = val.find('P'); + if (expPos == std::string::npos) { + // No exponent indicator, so the mantissa goes to the end. + expPos = len; + has_exponent = false; + } + + // std::cout << "startPos = " << startPos << " " << expPos << "\n"; + + assert(startPos <= expPos); + // Convert to binary as we go. + for (size_t i = startPos; i < expPos; ++i) { + if (radix == 16) { + ans += hex2Bin(val[i]); + } else if (radix == 8) { + ans += oct2Bin(val[i]); + } else { // radix == 2 + ans += val[i]; + } + } + // End in binary + radix = 2; + if (has_exponent) { + // Parse the exponent. + std::istringstream iss(val.substr(expPos + 1, len - expPos - 1)); + iss >> exp; + } + } + if (exp == 0) return ans; + + size_t decPos = ans.find('.'); + if (decPos == std::string::npos) decPos = ans.length(); + if ((int)decPos + exp >= (int)ans.length()) { + int i = decPos; + for (; i < (int)ans.length() - 1; ++i) ans[i] = ans[i + 1]; + for (; i < (int)ans.length(); ++i) ans[i] = '0'; + for (; i < (int)decPos + exp; ++i) ans += '0'; + return ans; + } else if ((int)decPos + exp < (int)isNegative) { + std::string dupAns = "0."; + if (ans[0] == '-') dupAns = "-0."; + for (int i = 0; i < isNegative - (int)decPos - exp; ++i) dupAns += '0'; + for (size_t i = isNegative; i < ans.length(); ++i) + if (ans[i] != '.') dupAns += ans[i]; + return dupAns; + } + + if (exp > 0) + for (size_t i = decPos; i < decPos + exp; ++i) ans[i] = ans[i + 1]; + else { + if (decPos == ans.length()) ans += ' '; + for (int i = decPos; i > (int)decPos + exp; --i) ans[i] = ans[i - 1]; + } + ans[decPos + exp] = '.'; + return ans; +} + +/// sub_1 - This function subtracts a single "digit" (64-bit word), y, from +/// the multi-digit integer array, x[], propagating the borrowed 1 value until +/// no further borrowing is neeeded or it runs out of "digits" in x. The result +/// is 1 if "borrowing" exhausted the digits in x, or 0 if x was not exhausted. +/// In other words, if y > x then this function returns 1, otherwise 0. +/// @returns the borrow out of the subtraction +static INLINE bool sub_1(uint64_t x[], uint32_t len, uint64_t y) { + for (uint32_t i = 0; i < len; ++i) { + uint64_t __X = x[i]; + x[i] -= y; + if (y > __X) + y = 1; // We have to "borrow 1" from next "digit" + else { + y = 0; // No need to borrow + break; // Remaining digits are unchanged so exit early + } + } + return (y != 0); +} + +/// add_1 - This function adds a single "digit" integer, y, to the multiple +/// "digit" integer array, x[]. x[] is modified to reflect the addition and +/// 1 is returned if there is a carry out, otherwise 0 is returned. +/// @returns the carry of the addition. +static INLINE bool add_1(uint64_t dest[], uint64_t x[], uint32_t len, + uint64_t y) { + for (uint32_t i = 0; i < len; ++i) { + dest[i] = y + x[i]; + if (dest[i] < y) + y = 1; // Carry one to next digit. + else { + y = 0; // No need to carry so exit early + break; + } + } + return (y != 0); +} + +/// add - This function adds the integer array x to the integer array Y and +/// places the result in dest. +/// @returns the carry out from the addition +/// @brief General addition of 64-bit integer arrays +static INLINE bool add(uint64_t* dest, const uint64_t* x, const uint64_t* y, + uint32_t destlen, uint32_t xlen, uint32_t ylen, + bool xsigned, bool ysigned) { + bool carry = false; + uint32_t len = AESL_std::min(xlen, ylen); + uint32_t i; + for (i = 0; i < len && i < destlen; ++i) { + uint64_t limit = + AESL_std::min(x[i], y[i]); // must come first in case dest == x + dest[i] = x[i] + y[i] + carry; + carry = dest[i] < limit || (carry && dest[i] == limit); + } + if (xlen > ylen) { + const uint64_t yext = ysigned && int64_t(y[ylen - 1]) < 0 ? -1 : 0; + for (i = ylen; i < xlen && i < destlen; i++) { + uint64_t limit = AESL_std::min(x[i], yext); + dest[i] = x[i] + yext + carry; + carry = (dest[i] < limit) || (carry && dest[i] == limit); + } + } else if (ylen > xlen) { + const uint64_t xext = xsigned && int64_t(x[xlen - 1]) < 0 ? -1 : 0; + for (i = xlen; i < ylen && i < destlen; i++) { + uint64_t limit = AESL_std::min(xext, y[i]); + dest[i] = xext + y[i] + carry; + carry = (dest[i] < limit) || (carry && dest[i] == limit); + } + } + return carry; +} + +/// @returns returns the borrow out. +/// @brief Generalized subtraction of 64-bit integer arrays. +static INLINE bool sub(uint64_t* dest, const uint64_t* x, const uint64_t* y, + uint32_t destlen, uint32_t xlen, uint32_t ylen, + bool xsigned, bool ysigned) { + bool borrow = false; + uint32_t i; + uint32_t len = AESL_std::min(xlen, ylen); + for (i = 0; i < len && i < destlen; ++i) { + uint64_t x_tmp = borrow ? x[i] - 1 : x[i]; + borrow = y[i] > x_tmp || (borrow && x[i] == 0); + dest[i] = x_tmp - y[i]; + } + if (xlen > ylen) { + const uint64_t yext = ysigned && int64_t(y[ylen - 1]) < 0 ? -1 : 0; + for (i = ylen; i < xlen && i < destlen; i++) { + uint64_t x_tmp = borrow ? x[i] - 1 : x[i]; + borrow = yext > x_tmp || (borrow && x[i] == 0); + dest[i] = x_tmp - yext; + } + } else if (ylen > xlen) { + const uint64_t xext = xsigned && int64_t(x[xlen - 1]) < 0 ? -1 : 0; + for (i = xlen; i < ylen && i < destlen; i++) { + uint64_t x_tmp = borrow ? xext - 1 : xext; + borrow = y[i] > x_tmp || (borrow && xext == 0); + dest[i] = x_tmp - y[i]; + } + } + return borrow; +} + +/// Subtracts the RHS ap_private from this ap_private +/// @returns this, after subtraction +/// @brief Subtraction assignment operator. + +/// Multiplies an integer array, x by a a uint64_t integer and places the result +/// into dest. +/// @returns the carry out of the multiplication. +/// @brief Multiply a multi-digit ap_private by a single digit (64-bit) integer. +static INLINE uint64_t mul_1(uint64_t dest[], const uint64_t x[], uint32_t len, + uint64_t y) { + // Split y into high 32-bit part (hy) and low 32-bit part (ly) + uint64_t ly = y & 0xffffffffULL, hy = (y) >> 32; + uint64_t carry = 0; + static const uint64_t two_power_32 = 1ULL << 32; + // For each digit of x. + for (uint32_t i = 0; i < len; ++i) { + // Split x into high and low words + uint64_t lx = x[i] & 0xffffffffULL; + uint64_t hx = (x[i]) >> 32; + // hasCarry - A flag to indicate if there is a carry to the next digit. + // hasCarry == 0, no carry + // hasCarry == 1, has carry + // hasCarry == 2, no carry and the calculation result == 0. + uint8_t hasCarry = 0; + dest[i] = carry + lx * ly; + // Determine if the add above introduces carry. + hasCarry = (dest[i] < carry) ? 1 : 0; + carry = hx * ly + ((dest[i]) >> 32) + (hasCarry ? two_power_32 : 0); + // The upper limit of carry can be (2^32 - 1)(2^32 - 1) + + // (2^32 - 1) + 2^32 = 2^64. + hasCarry = (!carry && hasCarry) ? 1 : (!carry ? 2 : 0); + + carry += (lx * hy) & 0xffffffffULL; + dest[i] = ((carry) << 32) | (dest[i] & 0xffffffffULL); + carry = (((!carry && hasCarry != 2) || hasCarry == 1) ? two_power_32 : 0) + + ((carry) >> 32) + ((lx * hy) >> 32) + hx * hy; + } + return carry; +} + +/// Multiplies integer array x by integer array y and stores the result into +/// the integer array dest. Note that dest's size must be >= xlen + ylen in +/// order to +/// do a full precision computation. If it is not, then only the low-order words +/// are returned. +/// @brief Generalized multiplicate of integer arrays. +static INLINE void mul(uint64_t dest[], const uint64_t x[], uint32_t xlen, + const uint64_t y[], uint32_t ylen, uint32_t destlen) { + assert(xlen > 0); + assert(ylen > 0); + assert(destlen >= xlen + ylen); + if (xlen < destlen) dest[xlen] = mul_1(dest, x, xlen, y[0]); + for (uint32_t i = 1; i < ylen; ++i) { + uint64_t ly = y[i] & 0xffffffffULL, hy = (y[i]) >> 32; + uint64_t carry = 0, lx = 0, hx = 0; + for (uint32_t j = 0; j < xlen; ++j) { + lx = x[j] & 0xffffffffULL; + hx = (x[j]) >> 32; + // hasCarry - A flag to indicate if has carry. + // hasCarry == 0, no carry + // hasCarry == 1, has carry + // hasCarry == 2, no carry and the calculation result == 0. + uint8_t hasCarry = 0; + uint64_t resul = carry + lx * ly; + hasCarry = (resul < carry) ? 1 : 0; + carry = (hasCarry ? (1ULL << 32) : 0) + hx * ly + ((resul) >> 32); + hasCarry = (!carry && hasCarry) ? 1 : (!carry ? 2 : 0); + carry += (lx * hy) & 0xffffffffULL; + resul = ((carry) << 32) | (resul & 0xffffffffULL); + if (i + j < destlen) dest[i + j] += resul; + carry = + (((!carry && hasCarry != 2) || hasCarry == 1) ? (1ULL << 32) : 0) + + ((carry) >> 32) + (dest[i + j] < resul ? 1 : 0) + ((lx * hy) >> 32) + + hx * hy; + } + if (i + xlen < destlen) dest[i + xlen] = carry; + } +} + +/// Implementation of Knuth's Algorithm D (Division of nonnegative integers) +/// from "Art of Computer Programming, Volume 2", section 4.3.1, p. 272. The +/// variables here have the same names as in the algorithm. Comments explain +/// the algorithm and any deviation from it. +static INLINE void KnuthDiv(uint32_t* u, uint32_t* v, uint32_t* q, uint32_t* r, + uint32_t m, uint32_t n) { + assert(u && "Must provide dividend"); + assert(v && "Must provide divisor"); + assert(q && "Must provide quotient"); + assert(u != v && u != q && v != q && "Must us different memory"); + assert(n > 1 && "n must be > 1"); + + // Knuth uses the value b as the base of the number system. In our case b + // is 2^31 so we just set it to -1u. + uint64_t b = uint64_t(1) << 32; + + // DEBUG(cerr << "KnuthDiv: m=" << m << " n=" << n << '\n'); + // DEBUG(cerr << "KnuthDiv: original:"); + // DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << std::setbase(16) << + // u[i]); + // DEBUG(cerr << " by"); + // DEBUG(for (int i = n; i >0; i--) cerr << " " << std::setbase(16) << + // v[i-1]); + // DEBUG(cerr << '\n'); + // D1. [Normalize.] Set d = b / (v[n-1] + 1) and multiply all the digits of + // u and v by d. Note that we have taken Knuth's advice here to use a power + // of 2 value for d such that d * v[n-1] >= b/2 (b is the base). A power of + // 2 allows us to shift instead of multiply and it is easy to determine the + // shift amount from the leading zeros. We are basically normalizing the u + // and v so that its high bits are shifted to the top of v's range without + // overflow. Note that this can require an extra word in u so that u must + // be of length m+n+1. + uint32_t shift = CountLeadingZeros_32(v[n - 1]); + uint32_t v_carry = 0; + uint32_t u_carry = 0; + if (shift) { + for (uint32_t i = 0; i < m + n; ++i) { + uint32_t u_tmp = (u[i]) >> (32 - shift); + u[i] = ((u[i]) << (shift)) | u_carry; + u_carry = u_tmp; + } + for (uint32_t i = 0; i < n; ++i) { + uint32_t v_tmp = (v[i]) >> (32 - shift); + v[i] = ((v[i]) << (shift)) | v_carry; + v_carry = v_tmp; + } + } + u[m + n] = u_carry; + // DEBUG(cerr << "KnuthDiv: normal:"); + // DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << std::setbase(16) << + // u[i]); + // DEBUG(cerr << " by"); + // DEBUG(for (int i = n; i >0; i--) cerr << " " << std::setbase(16) << + // v[i-1]); + // DEBUG(cerr << '\n'); + + // D2. [Initialize j.] Set j to m. This is the loop counter over the places. + int j = m; + do { + // DEBUG(cerr << "KnuthDiv: quotient digit #" << j << '\n'); + // D3. [Calculate q'.]. + // Set qp = (u[j+n]*b + u[j+n-1]) / v[n-1]. (qp=qprime=q') + // Set rp = (u[j+n]*b + u[j+n-1]) % v[n-1]. (rp=rprime=r') + // Now test if qp == b or qp*v[n-2] > b*rp + u[j+n-2]; if so, decrease + // qp by 1, inrease rp by v[n-1], and repeat this test if rp < b. The test + // on v[n-2] determines at high speed most of the cases in which the trial + // value qp is one too large, and it eliminates all cases where qp is two + // too large. + uint64_t dividend = ((uint64_t(u[j + n]) << 32) + u[j + n - 1]); + // DEBUG(cerr << "KnuthDiv: dividend == " << dividend << '\n'); + uint64_t qp = dividend / v[n - 1]; + uint64_t rp = dividend % v[n - 1]; + if (qp == b || qp * v[n - 2] > b * rp + u[j + n - 2]) { + qp--; + rp += v[n - 1]; + if (rp < b && (qp == b || qp * v[n - 2] > b * rp + u[j + n - 2])) qp--; + } + // DEBUG(cerr << "KnuthDiv: qp == " << qp << ", rp == " << rp << '\n'); + + // D4. [Multiply and subtract.] Replace (u[j+n]u[j+n-1]...u[j]) with + // (u[j+n]u[j+n-1]..u[j]) - qp * (v[n-1]...v[1]v[0]). This computation + // consists of a simple multiplication by a one-place number, combined with + // a subtraction. + bool isNeg = false; + for (uint32_t i = 0; i < n; ++i) { + uint64_t u_tmp = uint64_t(u[j + i]) | ((uint64_t(u[j + i + 1])) << 32); + uint64_t subtrahend = uint64_t(qp) * uint64_t(v[i]); + bool borrow = subtrahend > u_tmp; + /*DEBUG(cerr << "KnuthDiv: u_tmp == " << u_tmp + << ", subtrahend == " << subtrahend + << ", borrow = " << borrow << '\n');*/ + + uint64_t result = u_tmp - subtrahend; + uint32_t k = j + i; + u[k++] = (uint32_t)(result & (b - 1)); // subtract low word + u[k++] = (uint32_t)((result) >> 32); // subtract high word + while (borrow && k <= m + n) { // deal with borrow to the left + borrow = u[k] == 0; + u[k]--; + k++; + } + isNeg |= borrow; + /*DEBUG(cerr << "KnuthDiv: u[j+i] == " << u[j+i] << ", u[j+i+1] == " << + u[j+i+1] << '\n');*/ + } + /*DEBUG(cerr << "KnuthDiv: after subtraction:"); + DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << u[i]); + DEBUG(cerr << '\n');*/ + // The digits (u[j+n]...u[j]) should be kept positive; if the result of + // this step is actually negative, (u[j+n]...u[j]) should be left as the + // true value plus b**(n+1), namely as the b's complement of + // the true value, and a "borrow" to the left should be remembered. + // + if (isNeg) { + bool carry = true; // true because b's complement is "complement + 1" + for (uint32_t i = 0; i <= m + n; ++i) { + u[i] = ~u[i] + carry; // b's complement + carry = carry && u[i] == 0; + } + } + /*DEBUG(cerr << "KnuthDiv: after complement:"); + DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << u[i]); + DEBUG(cerr << '\n');*/ + + // D5. [Test remainder.] Set q[j] = qp. If the result of step D4 was + // negative, go to step D6; otherwise go on to step D7. + q[j] = (uint32_t)qp; + if (isNeg) { + // D6. [Add back]. The probability that this step is necessary is very + // small, on the order of only 2/b. Make sure that test data accounts for + // this possibility. Decrease q[j] by 1 + q[j]--; + // and add (0v[n-1]...v[1]v[0]) to (u[j+n]u[j+n-1]...u[j+1]u[j]). + // A carry will occur to the left of u[j+n], and it should be ignored + // since it cancels with the borrow that occurred in D4. + bool carry = false; + for (uint32_t i = 0; i < n; i++) { + uint32_t limit = AESL_std::min(u[j + i], v[i]); + u[j + i] += v[i] + carry; + carry = u[j + i] < limit || (carry && u[j + i] == limit); + } + u[j + n] += carry; + } + /*DEBUG(cerr << "KnuthDiv: after correction:"); + DEBUG(for (int i = m+n; i >=0; i--) cerr <<" " << u[i]); + DEBUG(cerr << "\nKnuthDiv: digit result = " << q[j] << '\n');*/ + + // D7. [Loop on j.] Decrease j by one. Now if j >= 0, go back to D3. + } while (--j >= 0); + + /*DEBUG(cerr << "KnuthDiv: quotient:"); + DEBUG(for (int i = m; i >=0; i--) cerr <<" " << q[i]); + DEBUG(cerr << '\n');*/ + + // D8. [Unnormalize]. Now q[...] is the desired quotient, and the desired + // remainder may be obtained by dividing u[...] by d. If r is non-null we + // compute the remainder (urem uses this). + if (r) { + // The value d is expressed by the "shift" value above since we avoided + // multiplication by d by using a shift left. So, all we have to do is + // shift right here. In order to mak + if (shift) { + uint32_t carry = 0; + // DEBUG(cerr << "KnuthDiv: remainder:"); + for (int i = n - 1; i >= 0; i--) { + r[i] = ((u[i]) >> (shift)) | carry; + carry = (u[i]) << (32 - shift); + // DEBUG(cerr << " " << r[i]); + } + } else { + for (int i = n - 1; i >= 0; i--) { + r[i] = u[i]; + // DEBUG(cerr << " " << r[i]); + } + } + // DEBUG(cerr << '\n'); + } + // DEBUG(cerr << std::setbase(10) << '\n'); +} + +template +void divide(const ap_private<_AP_W, _AP_S>& LHS, uint32_t lhsWords, + const ap_private<_AP_W, _AP_S>& RHS, uint32_t rhsWords, + ap_private<_AP_W, _AP_S>* Quotient, + ap_private<_AP_W, _AP_S>* Remainder) { + assert(lhsWords >= rhsWords && "Fractional result"); + enum { APINT_BITS_PER_WORD = 64 }; + // First, compose the values into an array of 32-bit words instead of + // 64-bit words. This is a necessity of both the "short division" algorithm + // and the the Knuth "classical algorithm" which requires there to be native + // operations for +, -, and * on an m bit value with an m*2 bit result. We + // can't use 64-bit operands here because we don't have native results of + // 128-bits. Furthremore, casting the 64-bit values to 32-bit values won't + // work on large-endian machines. + uint64_t mask = ~0ull >> (sizeof(uint32_t) * 8); + uint32_t n = rhsWords * 2; + uint32_t m = (lhsWords * 2) - n; + + // Allocate space for the temporary values we need either on the stack, if + // it will fit, or on the heap if it won't. + uint32_t SPACE[128]; + uint32_t* __U = 0; + uint32_t* __V = 0; + uint32_t* __Q = 0; + uint32_t* __R = 0; + if ((Remainder ? 4 : 3) * n + 2 * m + 1 <= 128) { + __U = &SPACE[0]; + __V = &SPACE[m + n + 1]; + __Q = &SPACE[(m + n + 1) + n]; + if (Remainder) __R = &SPACE[(m + n + 1) + n + (m + n)]; + } else { + __U = new uint32_t[m + n + 1]; + __V = new uint32_t[n]; + __Q = new uint32_t[m + n]; + if (Remainder) __R = new uint32_t[n]; + } + + // Initialize the dividend + memset(__U, 0, (m + n + 1) * sizeof(uint32_t)); + for (unsigned i = 0; i < lhsWords; ++i) { + uint64_t tmp = LHS.get_pVal(i); + __U[i * 2] = (uint32_t)(tmp & mask); + __U[i * 2 + 1] = (tmp) >> (sizeof(uint32_t) * 8); + } + __U[m + n] = 0; // this extra word is for "spill" in the Knuth algorithm. + + // Initialize the divisor + memset(__V, 0, (n) * sizeof(uint32_t)); + for (unsigned i = 0; i < rhsWords; ++i) { + uint64_t tmp = RHS.get_pVal(i); + __V[i * 2] = (uint32_t)(tmp & mask); + __V[i * 2 + 1] = (tmp) >> (sizeof(uint32_t) * 8); + } + + // initialize the quotient and remainder + memset(__Q, 0, (m + n) * sizeof(uint32_t)); + if (Remainder) memset(__R, 0, n * sizeof(uint32_t)); + + // Now, adjust m and n for the Knuth division. n is the number of words in + // the divisor. m is the number of words by which the dividend exceeds the + // divisor (i.e. m+n is the length of the dividend). These sizes must not + // contain any zero words or the Knuth algorithm fails. + for (unsigned i = n; i > 0 && __V[i - 1] == 0; i--) { + n--; + m++; + } + for (unsigned i = m + n; i > 0 && __U[i - 1] == 0; i--) m--; + + // If we're left with only a single word for the divisor, Knuth doesn't work + // so we implement the short division algorithm here. This is much simpler + // and faster because we are certain that we can divide a 64-bit quantity + // by a 32-bit quantity at hardware speed and short division is simply a + // series of such operations. This is just like doing short division but we + // are using base 2^32 instead of base 10. + assert(n != 0 && "Divide by zero?"); + if (n == 1) { + uint32_t divisor = __V[0]; + uint32_t remainder = 0; + for (int i = m + n - 1; i >= 0; i--) { + uint64_t partial_dividend = (uint64_t(remainder)) << 32 | __U[i]; + if (partial_dividend == 0) { + __Q[i] = 0; + remainder = 0; + } else if (partial_dividend < divisor) { + __Q[i] = 0; + remainder = (uint32_t)partial_dividend; + } else if (partial_dividend == divisor) { + __Q[i] = 1; + remainder = 0; + } else { + __Q[i] = (uint32_t)(partial_dividend / divisor); + remainder = (uint32_t)(partial_dividend - (__Q[i] * divisor)); + } + } + if (__R) __R[0] = remainder; + } else { + // Now we're ready to invoke the Knuth classical divide algorithm. In this + // case n > 1. + KnuthDiv(__U, __V, __Q, __R, m, n); + } + + // If the caller wants the quotient + if (Quotient) { + // Set up the Quotient value's memory. + if (Quotient->BitWidth != LHS.BitWidth) { + if (Quotient->isSingleWord()) Quotient->set_VAL(0); + } else + Quotient->clear(); + + // The quotient is in Q. Reconstitute the quotient into Quotient's low + // order words. + if (lhsWords == 1) { + uint64_t tmp = + uint64_t(__Q[0]) | ((uint64_t(__Q[1])) << (APINT_BITS_PER_WORD / 2)); + Quotient->set_VAL(tmp); + } else { + assert(!Quotient->isSingleWord() && + "Quotient ap_private not large enough"); + for (unsigned i = 0; i < lhsWords; ++i) + Quotient->set_pVal( + i, uint64_t(__Q[i * 2]) | + ((uint64_t(__Q[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Quotient->clearUnusedBits(); + } + + // If the caller wants the remainder + if (Remainder) { + // Set up the Remainder value's memory. + if (Remainder->BitWidth != RHS.BitWidth) { + if (Remainder->isSingleWord()) Remainder->set_VAL(0); + } else + Remainder->clear(); + + // The remainder is in R. Reconstitute the remainder into Remainder's low + // order words. + if (rhsWords == 1) { + uint64_t tmp = + uint64_t(__R[0]) | ((uint64_t(__R[1])) << (APINT_BITS_PER_WORD / 2)); + Remainder->set_VAL(tmp); + } else { + assert(!Remainder->isSingleWord() && + "Remainder ap_private not large enough"); + for (unsigned i = 0; i < rhsWords; ++i) + Remainder->set_pVal( + i, uint64_t(__R[i * 2]) | + ((uint64_t(__R[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Remainder->clearUnusedBits(); + } + + // Clean up the memory we allocated. + if (__U != &SPACE[0]) { + delete[] __U; + delete[] __V; + delete[] __Q; + delete[] __R; + } +} + +template +void divide(const ap_private<_AP_W, _AP_S>& LHS, uint32_t lhsWords, + uint64_t RHS, ap_private<_AP_W, _AP_S>* Quotient, + ap_private<_AP_W, _AP_S>* Remainder) { + uint32_t rhsWords = 1; + assert(lhsWords >= rhsWords && "Fractional result"); + enum { APINT_BITS_PER_WORD = 64 }; + // First, compose the values into an array of 32-bit words instead of + // 64-bit words. This is a necessity of both the "short division" algorithm + // and the the Knuth "classical algorithm" which requires there to be native + // operations for +, -, and * on an m bit value with an m*2 bit result. We + // can't use 64-bit operands here because we don't have native results of + // 128-bits. Furthremore, casting the 64-bit values to 32-bit values won't + // work on large-endian machines. + uint64_t mask = ~0ull >> (sizeof(uint32_t) * 8); + uint32_t n = 2; + uint32_t m = (lhsWords * 2) - n; + + // Allocate space for the temporary values we need either on the stack, if + // it will fit, or on the heap if it won't. + uint32_t SPACE[128]; + uint32_t* __U = 0; + uint32_t* __V = 0; + uint32_t* __Q = 0; + uint32_t* __R = 0; + if ((Remainder ? 4 : 3) * n + 2 * m + 1 <= 128) { + __U = &SPACE[0]; + __V = &SPACE[m + n + 1]; + __Q = &SPACE[(m + n + 1) + n]; + if (Remainder) __R = &SPACE[(m + n + 1) + n + (m + n)]; + } else { + __U = new uint32_t[m + n + 1]; + __V = new uint32_t[n]; + __Q = new uint32_t[m + n]; + if (Remainder) __R = new uint32_t[n]; + } + + // Initialize the dividend + memset(__U, 0, (m + n + 1) * sizeof(uint32_t)); + for (unsigned i = 0; i < lhsWords; ++i) { + uint64_t tmp = LHS.get_pVal(i); + __U[i * 2] = tmp & mask; + __U[i * 2 + 1] = (tmp) >> (sizeof(uint32_t) * 8); + } + __U[m + n] = 0; // this extra word is for "spill" in the Knuth algorithm. + + // Initialize the divisor + memset(__V, 0, (n) * sizeof(uint32_t)); + __V[0] = RHS & mask; + __V[1] = (RHS) >> (sizeof(uint32_t) * 8); + + // initialize the quotient and remainder + memset(__Q, 0, (m + n) * sizeof(uint32_t)); + if (Remainder) memset(__R, 0, n * sizeof(uint32_t)); + + // Now, adjust m and n for the Knuth division. n is the number of words in + // the divisor. m is the number of words by which the dividend exceeds the + // divisor (i.e. m+n is the length of the dividend). These sizes must not + // contain any zero words or the Knuth algorithm fails. + for (unsigned i = n; i > 0 && __V[i - 1] == 0; i--) { + n--; + m++; + } + for (unsigned i = m + n; i > 0 && __U[i - 1] == 0; i--) m--; + + // If we're left with only a single word for the divisor, Knuth doesn't work + // so we implement the short division algorithm here. This is much simpler + // and faster because we are certain that we can divide a 64-bit quantity + // by a 32-bit quantity at hardware speed and short division is simply a + // series of such operations. This is just like doing short division but we + // are using base 2^32 instead of base 10. + assert(n != 0 && "Divide by zero?"); + if (n == 1) { + uint32_t divisor = __V[0]; + uint32_t remainder = 0; + for (int i = m + n - 1; i >= 0; i--) { + uint64_t partial_dividend = (uint64_t(remainder)) << 32 | __U[i]; + if (partial_dividend == 0) { + __Q[i] = 0; + remainder = 0; + } else if (partial_dividend < divisor) { + __Q[i] = 0; + remainder = partial_dividend; + } else if (partial_dividend == divisor) { + __Q[i] = 1; + remainder = 0; + } else { + __Q[i] = partial_dividend / divisor; + remainder = partial_dividend - (__Q[i] * divisor); + } + } + if (__R) __R[0] = remainder; + } else { + // Now we're ready to invoke the Knuth classical divide algorithm. In this + // case n > 1. + KnuthDiv(__U, __V, __Q, __R, m, n); + } + + // If the caller wants the quotient + if (Quotient) { + // Set up the Quotient value's memory. + if (Quotient->BitWidth != LHS.BitWidth) { + if (Quotient->isSingleWord()) Quotient->set_VAL(0); + } else + Quotient->clear(); + + // The quotient is in Q. Reconstitute the quotient into Quotient's low + // order words. + if (lhsWords == 1) { + uint64_t tmp = + uint64_t(__Q[0]) | ((uint64_t(__Q[1])) << (APINT_BITS_PER_WORD / 2)); + Quotient->set_VAL(tmp); + } else { + assert(!Quotient->isSingleWord() && + "Quotient ap_private not large enough"); + for (unsigned i = 0; i < lhsWords; ++i) + Quotient->set_pVal( + i, uint64_t(__Q[i * 2]) | + ((uint64_t(__Q[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Quotient->clearUnusedBits(); + } + + // If the caller wants the remainder + if (Remainder) { + // Set up the Remainder value's memory. + if (Remainder->BitWidth != 64 /* RHS.BitWidth */) { + if (Remainder->isSingleWord()) Remainder->set_VAL(0); + } else + Remainder->clear(); + + // The remainder is in __R. Reconstitute the remainder into Remainder's low + // order words. + if (rhsWords == 1) { + uint64_t tmp = + uint64_t(__R[0]) | ((uint64_t(__R[1])) << (APINT_BITS_PER_WORD / 2)); + Remainder->set_VAL(tmp); + } else { + assert(!Remainder->isSingleWord() && + "Remainder ap_private not large enough"); + for (unsigned i = 0; i < rhsWords; ++i) + Remainder->set_pVal( + i, uint64_t(__R[i * 2]) | + ((uint64_t(__R[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Remainder->clearUnusedBits(); + } + + // Clean up the memory we allocated. + if (__U != &SPACE[0]) { + delete[] __U; + delete[] __V; + delete[] __Q; + delete[] __R; + } +} + +/// @brief Logical right-shift function. +template +INLINE ap_private<_AP_W, _AP_S, _AP_C> lshr( + const ap_private<_AP_W, _AP_S, _AP_C>& LHS, uint32_t shiftAmt) { + return LHS.lshr(shiftAmt); +} + +/// Left-shift the ap_private by shiftAmt. +/// @brief Left-shift function. +template +INLINE ap_private<_AP_W, _AP_S, _AP_C> shl( + const ap_private<_AP_W, _AP_S, _AP_C>& LHS, uint32_t shiftAmt) { + return LHS.shl(shiftAmt); +} + +} // namespace ap_private_ops + +#endif // LLVM_SUPPORT_MATHEXTRAS_H + +/// This enumeration just provides for internal constants used in this +/// translation unit. +enum { + MIN_INT_BITS = 1, ///< Minimum number of bits that can be specified + ///< Note that this must remain synchronized with IntegerType::MIN_INT_BITS + MAX_INT_BITS = (1 << 23) - 1 ///< Maximum number of bits that can be specified + ///< Note that this must remain synchronized with IntegerType::MAX_INT_BITS +}; + +//===----------------------------------------------------------------------===// +// ap_private Class +//===----------------------------------------------------------------------===// + +/// ap_private - This class represents arbitrary precision constant integral +/// values. +/// It is a functional replacement for common case unsigned integer type like +/// "unsigned", "unsigned long" or "uint64_t", but also allows non-byte-width +/// integer sizes and large integer value types such as 3-bits, 15-bits, or more +/// than 64-bits of precision. ap_private provides a variety of arithmetic +/// operators +/// and methods to manipulate integer values of any bit-width. It supports both +/// the typical integer arithmetic and comparison operations as well as bitwise +/// manipulation. +/// +/// The class has several invariants worth noting: +/// * All bit, byte, and word positions are zero-based. +/// * Once the bit width is set, it doesn't change except by the Truncate, +/// SignExtend, or ZeroExtend operations. +/// * All binary operators must be on ap_private instances of the same bit +/// width. +/// Attempting to use these operators on instances with different bit +/// widths will yield an assertion. +/// * The value is stored canonically as an unsigned value. For operations +/// where it makes a difference, there are both signed and unsigned variants +/// of the operation. For example, sdiv and udiv. However, because the bit +/// widths must be the same, operations such as Mul and Add produce the same +/// results regardless of whether the values are interpreted as signed or +/// not. +/// * In general, the class tries to follow the style of computation that LLVM +/// uses in its IR. This simplifies its use for LLVM. +/// +/// @brief Class for arbitrary precision integers. + +#if defined(_MSC_VER) +#if _MSC_VER < 1400 && !defined(for) +#define for if (0); else for +#endif +typedef unsigned __int64 ap_ulong; +typedef signed __int64 ap_slong; +#else +typedef unsigned long long ap_ulong; +typedef signed long long ap_slong; +#endif +template +struct valtype; + +template +struct valtype<_AP_N8, false> { + typedef uint64_t Type; +}; + +template +struct valtype<_AP_N8, true> { + typedef int64_t Type; +}; + +template <> +struct valtype<1, false> { + typedef unsigned char Type; +}; +template <> +struct valtype<2, false> { + typedef unsigned short Type; +}; +template <> +struct valtype<3, false> { + typedef unsigned int Type; +}; +template <> +struct valtype<4, false> { + typedef unsigned int Type; +}; +template <> +struct valtype<1, true> { + typedef signed char Type; +}; +template <> +struct valtype<2, true> { + typedef short Type; +}; +template <> +struct valtype<3, true> { + typedef int Type; +}; +template <> +struct valtype<4, true> { + typedef int Type; +}; + +template +struct ap_private_enable_if {}; +template <> +struct ap_private_enable_if { + static const bool isValid = true; +}; + +// When bitwidth < 64 +template +class ap_private<_AP_W, _AP_S, true> { + // SFINAE pattern. Only consider this class when _AP_W <= 64 + const static bool valid = ap_private_enable_if<_AP_W <= 64>::isValid; + +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + public: + typedef typename valtype<(_AP_W + 7) / 8, _AP_S>::Type ValType; + typedef ap_private<_AP_W, _AP_S> Type; + template + struct RType { + enum { + mult_w = _AP_W + _AP_W2, + mult_s = _AP_S || _AP_S2, + plus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, + div_w = _AP_W + _AP_S2, + div_s = _AP_S || _AP_S2, + mod_w = AP_MIN(_AP_W, _AP_W2 + (!_AP_S2 && _AP_S)), + mod_s = _AP_S, + logic_w = AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + typedef ap_private mult; + typedef ap_private plus; + typedef ap_private minus; + typedef ap_private logic; + typedef ap_private div; + typedef ap_private mod; + typedef ap_private<_AP_W, _AP_S> arg1; + typedef bool reduce; + }; + enum { APINT_BITS_PER_WORD = sizeof(uint64_t) * 8 }; + enum { + excess_bits = (_AP_W % APINT_BITS_PER_WORD) + ? APINT_BITS_PER_WORD - (_AP_W % APINT_BITS_PER_WORD) + : 0 + }; + static const uint64_t mask = ((uint64_t)~0ULL >> (excess_bits)); + static const uint64_t not_mask = ~mask; + static const uint64_t sign_bit_mask = 1ULL << (APINT_BITS_PER_WORD - 1); + template + struct sign_ext_mask { + static const uint64_t mask = ~0ULL << _AP_W1; + }; + static const int width = _AP_W; + + enum { + BitWidth = _AP_W, + _AP_N = 1, + }; + ValType VAL; ///< Used to store the <= 64 bits integer value. +#ifdef AP_CANARY + ValType CANARY; + void check_canary() { assert(CANARY == (ValType)0xDEADBEEFDEADBEEF); } + void set_canary() { CANARY = (ValType)0xDEADBEEFDEADBEEF; } +#else + void check_canary() {} + void set_canary() {} +#endif + + INLINE ValType& get_VAL(void) { return VAL; } + INLINE ValType get_VAL(void) const { return VAL; } + INLINE ValType get_VAL(void) const volatile { return VAL; } + INLINE void set_VAL(uint64_t value) { VAL = (ValType)value; } + INLINE ValType& get_pVal(int i) { return VAL; } + INLINE ValType get_pVal(int i) const { return VAL; } + INLINE const uint64_t* get_pVal() const { + assert(0 && "invalid usage"); + return 0; + } + INLINE ValType get_pVal(int i) const volatile { return VAL; } + INLINE uint64_t* get_pVal() const volatile { + assert(0 && "invalid usage"); + return 0; + } + INLINE void set_pVal(int i, uint64_t value) { VAL = (ValType)value; } + + INLINE uint32_t getBitWidth() const { return BitWidth; } + + template + ap_private<_AP_W, _AP_S>& operator=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + ap_private<_AP_W, _AP_S>& operator=( + const volatile ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(RHS.get_VAL()); // TODO check here about ap_private + clearUnusedBits(); + return *this; + } + + void operator=(const ap_private& RHS) volatile { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + } + + ap_private& operator=(const ap_private& RHS) { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + return *this; + } + + void operator=(const volatile ap_private& RHS) volatile { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + } + + ap_private& operator=(const volatile ap_private& RHS) { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator=(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + *this = ap_private<_AP_W2, false>(op2); + return *this; + } + +#define ASSIGN_OP_FROM_INT(C_TYPE) \ + INLINE ap_private& operator=(const C_TYPE v) { \ + set_canary(); \ + this->VAL = (ValType)v; \ + clearUnusedBits(); \ + check_canary(); \ + return *this; \ + } + +ASSIGN_OP_FROM_INT(bool) +ASSIGN_OP_FROM_INT(char) +ASSIGN_OP_FROM_INT(signed char) +ASSIGN_OP_FROM_INT(unsigned char) +ASSIGN_OP_FROM_INT(short) +ASSIGN_OP_FROM_INT(unsigned short) +ASSIGN_OP_FROM_INT(int) +ASSIGN_OP_FROM_INT(unsigned int) +ASSIGN_OP_FROM_INT(long) +ASSIGN_OP_FROM_INT(unsigned long) +ASSIGN_OP_FROM_INT(ap_slong) +ASSIGN_OP_FROM_INT(ap_ulong) +ASSIGN_OP_FROM_INT(half) +//FIXME cast half to integer ? +ASSIGN_OP_FROM_INT(float) +ASSIGN_OP_FROM_INT(double) +#undef ASSIGN_OP_FROM_INT + + // XXX This is a must to prevent pointer being converted to bool. + INLINE ap_private& operator=(const char* s) { + ap_private tmp(s); // XXX direct-initialization, as ctor is explicit. + operator=(tmp); + return *this; + } + + private: + explicit INLINE ap_private(uint64_t* val) : VAL(val[0]) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + INLINE bool isSingleWord() const { return true; } + + public: + INLINE void fromString(const char* strStart, uint32_t slen, uint8_t radix) { + bool isNeg = strStart[0] == '-'; + if (isNeg) { + strStart++; + slen--; + } + + if (strStart[0] == '0' && (strStart[1] == 'b' || strStart[1] == 'B')) { + //if(radix == 0) radix = 2; + _AP_WARNING(radix != 2, "%s seems to have base %d, but %d given.", strStart, 2, radix); + strStart += 2; + slen -=2; + } else if (strStart[0] == '0' && (strStart[1] == 'o' || strStart[1] == 'O')) { + //if (radix == 0) radix = 8; + _AP_WARNING(radix != 8, "%s seems to have base %d, but %d given.", strStart, 8, radix); + strStart += 2; + slen -=2; + } else if (strStart[0] == '0' && (strStart[1] == 'x' || strStart[1] == 'X')) { + //if (radix == 0) radix = 16; + _AP_WARNING(radix != 16, "%s seems to have base %d, but %d given.", strStart, 16, radix); + strStart += 2; + slen -=2; + } else if (strStart[0] == '0' && (strStart[1] == 'd' || strStart[1] == 'D')) { + //if (radix == 0) radix = 10; + _AP_WARNING(radix != 10, "%s seems to have base %d, but %d given.", strStart, 10, radix); + strStart += 2; + slen -=2; + } else if (radix == 0) { + //radix = 2; // XXX default value + } + + // Check our assumptions here + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + assert(strStart && "String is null?"); + + // Clear bits. + uint64_t tmpVAL = VAL = 0; + + switch (radix) { + case 2: + // sscanf(strStart,"%b",&VAL); + // tmpVAL = *strStart =='1' ? ~0ULL : 0; + for (; *strStart; ++strStart) { + assert((*strStart == '0' || *strStart == '1') && + ("Wrong binary number")); + tmpVAL <<= 1; + tmpVAL |= (*strStart - '0'); + } + break; + case 8: +#ifdef _MSC_VER + sscanf_s(strStart, "%llo", &tmpVAL, slen + 1); +#else +#if defined(__x86_64__) && !defined(__MINGW32__) && !defined(__WIN32__) + sscanf(strStart, "%lo", &tmpVAL); +#else + sscanf(strStart, "%llo", &tmpVAL); +#endif //__x86_64__ +#endif //_MSC_VER + break; + case 10: +#ifdef _MSC_VER + sscanf_s(strStart, "%llu", &tmpVAL, slen + 1); +#else +#if defined(__x86_64__) && !defined(__MINGW32__) && !defined(__WIN32__) + sscanf(strStart, "%lu", &tmpVAL); +#else + sscanf(strStart, "%llu", &tmpVAL); +#endif //__x86_64__ +#endif //_MSC_VER + break; + case 16: +#ifdef _MSC_VER + sscanf_s(strStart, "%llx", &tmpVAL, slen + 1); +#else +#if defined(__x86_64__) && !defined(__MINGW32__) && !defined(__WIN32__) + sscanf(strStart, "%lx", &tmpVAL); +#else + sscanf(strStart, "%llx", &tmpVAL); +#endif //__x86_64__ +#endif //_MSC_VER + break; + default: + assert(true && "Unknown radix"); + // error + } + VAL = isNeg ? (ValType)(-tmpVAL) : (ValType)(tmpVAL); + + clearUnusedBits(); + } + + private: + INLINE ap_private(const std::string& val, uint8_t radix = 2) : VAL(0) { + assert(!val.empty() && "String empty?"); + set_canary(); + fromString(val.c_str(), val.size(), radix); + check_canary(); + } + + INLINE ap_private(const char strStart[], uint32_t slen, uint8_t radix) + : VAL(0) { + set_canary(); + fromString(strStart, slen, radix); + check_canary(); + } + + INLINE ap_private(uint32_t numWords, const uint64_t bigVal[]) + : VAL(bigVal[0]) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + public: + INLINE ap_private() { + set_canary(); + clearUnusedBits(); + check_canary(); + } + +#define CTOR(TYPE) \ + INLINE ap_private(TYPE v) : VAL((ValType)v) { \ + set_canary(); \ + clearUnusedBits(); \ + check_canary(); \ + } + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) + CTOR(half) + CTOR(float) + CTOR(double) +#undef CTOR + + template + INLINE ap_private(const ap_private<_AP_W1, _AP_S1, _AP_OPT>& that) + : VAL((ValType)that.get_VAL()) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + template + INLINE ap_private(const volatile ap_private<_AP_W1, _AP_S1, _AP_OPT>& that) + : VAL((ValType)that.get_VAL()) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + explicit INLINE ap_private(const char* val) { + set_canary(); + unsigned char radix = 10; + std::string str = ap_private_ops::parseString(val, radix); // will set radix. + std::string::size_type pos = str.find('.'); + // trunc all fraction part + if (pos != std::string::npos) str = str.substr(pos); + + ap_private<_AP_W, _AP_S> ap_private_val(str, radix); + operator=(ap_private_val); + check_canary(); + } + + INLINE ap_private(const char* val, signed char rd) { + set_canary(); + unsigned char radix = rd; + std::string str = ap_private_ops::parseString(val, radix); // will set radix. + std::string::size_type pos = str.find('.'); + // trunc all fraction part + if (pos != std::string::npos) str = str.substr(pos); + + ap_private<_AP_W, _AP_S> ap_private_val(str, radix); + operator=(ap_private_val); + check_canary(); + } + + INLINE ~ap_private() { check_canary(); } + + INLINE bool isNegative() const { + static const uint64_t sign_mask = 1ULL << (_AP_W - 1); + return _AP_S && (sign_mask & VAL); + } + + INLINE bool isPositive() const { return !isNegative(); } + + INLINE bool isStrictlyPositive() const { return !isNegative() && VAL != 0; } + + INLINE bool isAllOnesValue() const { return (mask & VAL) == mask; } + + INLINE bool operator==(const ap_private<_AP_W, _AP_S>& RHS) const { + return VAL == RHS.get_VAL(); + } + INLINE bool operator==(const ap_private<_AP_W, !_AP_S>& RHS) const { + return (uint64_t)VAL == (uint64_t)RHS.get_VAL(); + } + + INLINE bool operator==(uint64_t Val) const { return ((uint64_t)VAL == Val); } + INLINE bool operator!=(uint64_t Val) const { return ((uint64_t)VAL != Val); } + INLINE bool operator!=(const ap_private<_AP_W, _AP_S>& RHS) const { + return VAL != RHS.get_VAL(); + } + INLINE bool operator!=(const ap_private<_AP_W, !_AP_S>& RHS) const { + return (uint64_t)VAL != (uint64_t)RHS.get_VAL(); + } + + /// postfix increment. + const ap_private operator++(int) { + ap_private orig(*this); + VAL++; + clearUnusedBits(); + return orig; + } + + /// prefix increment. + const ap_private operator++() { + ++VAL; + clearUnusedBits(); + return *this; + } + + /// postfix decrement. + const ap_private operator--(int) { + ap_private orig(*this); + --VAL; + clearUnusedBits(); + return orig; + } + + /// prefix decrement. + const ap_private operator--() { + --VAL; + clearUnusedBits(); + return *this; + } + + /// one's complement. + INLINE ap_private<_AP_W + !_AP_S, true> operator~() const { + ap_private<_AP_W + !_AP_S, true> Result(*this); + Result.flip(); + return Result; + } + + /// two's complement. + INLINE typename RType<1, false>::minus operator-() const { + return ap_private<1, false>(0) - (*this); + } + + /// logic negation. + INLINE bool operator!() const { return !VAL; } + + INLINE std::string toString(uint8_t radix, bool wantSigned) const; + INLINE std::string toStringUnsigned(uint8_t radix = 10) const { + return toString(radix, false); + } + INLINE std::string toStringSigned(uint8_t radix = 10) const { + return toString(radix, true); + } + INLINE void clear() { VAL = 0; } + INLINE ap_private& clear(uint32_t bitPosition) { + VAL &= ~(1ULL << (bitPosition)); + clearUnusedBits(); + return *this; + } + + INLINE ap_private ashr(uint32_t shiftAmt) const { + if (_AP_S) + return ap_private((shiftAmt == BitWidth) ? 0 + : ((int64_t)VAL) >> (shiftAmt)); + else + return ap_private((shiftAmt == BitWidth) ? 0 + : ((uint64_t)VAL) >> (shiftAmt)); + } + + INLINE ap_private lshr(uint32_t shiftAmt) const { + return ap_private((shiftAmt == BitWidth) + ? ap_private(0) + : ap_private((VAL & mask) >> (shiftAmt))); + } + + INLINE ap_private shl(uint32_t shiftAmt) const +// just for clang compiler +#if defined(__clang__) && !defined(__CLANG_3_1__) + __attribute__((no_sanitize("undefined"))) +#endif + { + if (shiftAmt > BitWidth) { + if (!isNegative()) + return ap_private(0); + else + return ap_private(-1); + } + if (shiftAmt == BitWidth) + return ap_private(0); + else + return ap_private((VAL) << (shiftAmt)); + // return ap_private((shiftAmt == BitWidth) ? ap_private(0ULL) : + // ap_private(VAL << shiftAmt)); + } + + INLINE int64_t getSExtValue() const { return VAL; } + + // XXX XXX this function is used in CBE + INLINE uint64_t getZExtValue() const { return VAL & mask; } + + template + INLINE ap_private(const _private_range_ref<_AP_W2, _AP_S2>& ref) { + set_canary(); + *this = ref.get(); + check_canary(); + } + + template + INLINE ap_private(const _private_bit_ref<_AP_W2, _AP_S2>& ref) { + set_canary(); + *this = ((uint64_t)(bool)ref); + check_canary(); + } + +// template +// INLINE ap_private(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) { +// set_canary(); +// *this = ref.get(); +// check_canary(); +// } +// +// template +// INLINE ap_private( +// const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { +// set_canary(); +// *this = ((val.operator ap_private<_AP_W2, false>())); +// check_canary(); +// } +// +// template +// INLINE ap_private( +// const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { +// set_canary(); +// *this = (uint64_t)(bool)val; +// check_canary(); +// } + + INLINE void write(const ap_private<_AP_W, _AP_S>& op2) volatile { + *this = (op2); + } + + // Explicit conversions to C interger types + //----------------------------------------------------------- + INLINE operator ValType() const { return get_VAL(); } + + INLINE int to_uchar() const { return (unsigned char)get_VAL(); } + + INLINE int to_char() const { return (signed char)get_VAL(); } + + INLINE int to_ushort() const { return (unsigned short)get_VAL(); } + + INLINE int to_short() const { return (short)get_VAL(); } + + INLINE int to_int() const { + // ap_private<64 /* _AP_W */, _AP_S> res(V); + return (int)get_VAL(); + } + + INLINE unsigned to_uint() const { return (unsigned)get_VAL(); } + + INLINE long to_long() const { return (long)get_VAL(); } + + INLINE unsigned long to_ulong() const { return (unsigned long)get_VAL(); } + + INLINE ap_slong to_int64() const { return (ap_slong)get_VAL(); } + + INLINE ap_ulong to_uint64() const { return (ap_ulong)get_VAL(); } + + INLINE double to_double() const { + if (isNegative()) + return roundToDouble(true); + else + return roundToDouble(false); + } + + INLINE unsigned length() const { return _AP_W; } + + INLINE bool isMinValue() const { return VAL == 0; } + template + INLINE ap_private& operator&=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(((uint64_t)VAL) & RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator|=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(((uint64_t)VAL) | RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator^=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(((uint64_t)VAL) ^ RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator*=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(((uint64_t)VAL) * RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator+=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(((uint64_t)VAL) + RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator-=(const ap_private<_AP_W1, _AP_S1>& RHS) { + VAL = (ValType)(((uint64_t)VAL) - RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::logic operator&( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (RType<_AP_W1, _AP_S1>::logic_w <= 64) { + typename RType<_AP_W1, _AP_S1>::logic Ret(((uint64_t)VAL) & + RHS.get_VAL()); + return Ret; + } else { + typename RType<_AP_W1, _AP_S1>::logic Ret = *this; + return Ret & RHS; + } + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::logic operator^( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (RType<_AP_W1, _AP_S1>::logic_w <= 64) { + typename RType<_AP_W1, _AP_S1>::logic Ret(((uint64_t)VAL) ^ + RHS.get_VAL()); + return Ret; + } else { + typename RType<_AP_W1, _AP_S1>::logic Ret = *this; + return Ret ^ RHS; + } + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::logic operator|( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (RType<_AP_W1, _AP_S1>::logic_w <= 64) { + typename RType<_AP_W1, _AP_S1>::logic Ret(((uint64_t)VAL) | + RHS.get_VAL()); + return Ret; + } else { + typename RType<_AP_W1, _AP_S1>::logic Ret = *this; + return Ret | RHS; + } + } + + INLINE ap_private And(const ap_private& RHS) const { + return ap_private(VAL & RHS.get_VAL()); + } + + INLINE ap_private Or(const ap_private& RHS) const { + return ap_private(VAL | RHS.get_VAL()); + } + + INLINE ap_private Xor(const ap_private& RHS) const { + return ap_private(VAL ^ RHS.get_VAL()); + } +#if 1 + template + INLINE typename RType<_AP_W1, _AP_S1>::mult operator*( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (RType<_AP_W1, _AP_S1>::mult_w <= 64) { + typename RType<_AP_W1, _AP_S1>::mult Result(((uint64_t)VAL) * + RHS.get_VAL()); + return Result; + } else { + typename RType<_AP_W1, _AP_S1>::mult Result(*this); + Result *= RHS; + return Result; + } + } +#endif + INLINE ap_private Mul(const ap_private& RHS) const { + return ap_private(VAL * RHS.get_VAL()); + } + + INLINE ap_private Add(const ap_private& RHS) const { + return ap_private(VAL + RHS.get_VAL()); + } + + INLINE ap_private Sub(const ap_private& RHS) const { + return ap_private(VAL - RHS.get_VAL()); + } + + INLINE ap_private& operator&=(uint64_t RHS) { + VAL &= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private& operator|=(uint64_t RHS) { + VAL |= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private& operator^=(uint64_t RHS) { + VAL ^= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private& operator*=(uint64_t RHS) { + VAL *= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private& operator+=(uint64_t RHS) { + VAL += (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private& operator-=(uint64_t RHS) { + VAL -= (ValType)RHS; + clearUnusedBits(); + return *this; + } + + INLINE bool isMinSignedValue() const { + static const uint64_t min_mask = ~(~0ULL << (_AP_W - 1)); + return BitWidth == 1 ? VAL == 1 + : (ap_private_ops::isNegative<_AP_W>(*this) && + ((min_mask & VAL) == 0)); + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::plus operator+( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (RType<_AP_W1, _AP_S1>::plus_w <= 64) + return typename RType<_AP_W1, _AP_S1>::plus( + RType<_AP_W1, _AP_S1>::plus_s + ? int64_t(((uint64_t)VAL) + RHS.get_VAL()) + : uint64_t(((uint64_t)VAL) + RHS.get_VAL())); + typename RType<_AP_W1, _AP_S1>::plus Result = RHS; + Result += VAL; + return Result; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::minus operator-( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (RType<_AP_W1, _AP_S1>::minus_w <= 64) + return typename RType<_AP_W1, _AP_S1>::minus( + int64_t(((uint64_t)VAL) - RHS.get_VAL())); + typename RType<_AP_W1, _AP_S1>::minus Result = *this; + Result -= RHS; + return Result; + } + + INLINE uint32_t countPopulation() const { + return ap_private_ops::CountPopulation_64(VAL); + } + INLINE uint32_t countLeadingZeros() const { + int remainder = BitWidth % 64; + int excessBits = (64 - remainder) % 64; + uint32_t Count = ap_private_ops::CountLeadingZeros_64(VAL); + if (Count) Count -= excessBits; + return AESL_std::min(Count, (uint32_t)_AP_W); + } + + /// HiBits - This function returns the high "numBits" bits of this ap_private. + INLINE ap_private<_AP_W, _AP_S> getHiBits(uint32_t numBits) const { + ap_private<_AP_W, _AP_S> ret(*this); + ret = (ret) >> (BitWidth - numBits); + return ret; + } + + /// LoBits - This function returns the low "numBits" bits of this ap_private. + INLINE ap_private<_AP_W, _AP_S> getLoBits(uint32_t numBits) const { + ap_private<_AP_W, _AP_S> ret(((uint64_t)VAL) << (BitWidth - numBits)); + ret = (ret) >> (BitWidth - numBits); + return ret; + // return ap_private(numBits, (VAL << (BitWidth - numBits))>> (BitWidth - + // numBits)); + } + + INLINE ap_private<_AP_W, _AP_S>& set(uint32_t bitPosition) { + VAL |= (1ULL << (bitPosition)); + clearUnusedBits(); + return *this; // clearUnusedBits(); + } + + INLINE void set() { + VAL = (ValType)~0ULL; + clearUnusedBits(); + } + + template + INLINE void set(const ap_private<_AP_W3, false>& val) { + operator=(ap_private<_AP_W3, _AP_S>(val)); + } + + INLINE void set(const ap_private& val) { operator=(val); } + + INLINE void clearUnusedBits(void) volatile +// just for clang compiler +#if defined(__clang__) && !defined(__CLANG_3_1__) + __attribute__((no_sanitize("undefined"))) +#endif + { + enum { excess_bits = (_AP_W % 64) ? 64 - _AP_W % 64 : 0 }; + VAL = (ValType)( + _AP_S + ? ((((int64_t)VAL) << (excess_bits)) >> (excess_bits)) + : (excess_bits ? (((uint64_t)VAL) << (excess_bits)) >> (excess_bits) + : (uint64_t)VAL)); + } + + INLINE void clearUnusedBitsToZero(void) { + enum { excess_bits = (_AP_W % 64) ? 64 - _AP_W % 64 : 0 }; + static uint64_t mask = ~0ULL >> (excess_bits); + VAL &= mask; + } + + INLINE ap_private udiv(const ap_private& RHS) const { + return ap_private((uint64_t)VAL / RHS.get_VAL()); + } + + /// Signed divide this ap_private by ap_private RHS. + /// @brief Signed division function for ap_private. + INLINE ap_private sdiv(const ap_private& RHS) const { + if (isNegative()) + if (RHS.isNegative()) + return ((uint64_t)(0 - (*this))) / (uint64_t)(0 - RHS); + else + return 0 - ((uint64_t)(0 - (*this)) / (uint64_t)(RHS)); + else if (RHS.isNegative()) + return 0 - (this->udiv((ap_private)(0 - RHS))); + return this->udiv(RHS); + } + + template + INLINE ap_private urem(const ap_private<_AP_W, _AP_S2>& RHS) const { + assert(RHS.get_VAL() != 0 && "Divide by 0"); + return ap_private(((uint64_t)VAL) % ((uint64_t)RHS.get_VAL())); + } + + /// Signed remainder operation on ap_private. + /// @brief Function for signed remainder operation. + template + INLINE ap_private srem(const ap_private<_AP_W, _AP_S2>& RHS) const { + if (isNegative()) { + ap_private lhs = 0 - (*this); + if (RHS.isNegative()) { + ap_private rhs = 0 - RHS; + return 0 - (lhs.urem(rhs)); + } else + return 0 - (lhs.urem(RHS)); + } else if (RHS.isNegative()) { + ap_private rhs = 0 - RHS; + return this->urem(rhs); + } + return this->urem(RHS); + } + + template + INLINE bool eq(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return (*this) == RHS; + } + + template + INLINE bool ne(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return !((*this) == RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the less-than relationship. + /// @returns true if *this < RHS when both are considered unsigned. + /// @brief Unsigned less than comparison + template + INLINE bool ult(const ap_private<_AP_W1, _AP_S1>& RHS) const { + if (_AP_W1 <= 64) { + uint64_t lhsZext = ((uint64_t(VAL)) << (64 - _AP_W)) >> (64 - _AP_W); + uint64_t rhsZext = + ((uint64_t(RHS.get_VAL())) << (64 - _AP_W1)) >> (64 - _AP_W1); + return lhsZext < rhsZext; + } else + return RHS.uge(*this); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the less-than relationship. + /// @returns true if *this < RHS when both are considered signed. + /// @brief Signed less than comparison + template + INLINE bool slt(const ap_private<_AP_W1, _AP_S1>& RHS) const +// just for clang compiler +#if defined(__clang__) && !defined(__CLANG_3_1__) + __attribute__((no_sanitize("undefined"))) +#endif + { + if (_AP_W1 <= 64) { + int64_t lhsSext = ((int64_t(VAL)) << (64 - _AP_W)) >> (64 - _AP_W); + int64_t rhsSext = + ((int64_t(RHS.get_VAL())) << (64 - _AP_W1)) >> (64 - _AP_W1); + return lhsSext < rhsSext; + } else + return RHS.sge(*this); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered unsigned. + /// @brief Unsigned less or equal comparison + template + INLINE bool ule(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return ult(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered signed. + /// @brief Signed less or equal comparison + template + INLINE bool sle(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return slt(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered unsigned. + /// @brief Unsigned greather than comparison + template + INLINE bool ugt(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return !ult(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered signed. + /// @brief Signed greather than comparison + template + INLINE bool sgt(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return !slt(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered unsigned. + /// @brief Unsigned greater or equal comparison + template + INLINE bool uge(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return !ult(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered signed. + /// @brief Signed greather or equal comparison + template + INLINE bool sge(const ap_private<_AP_W1, _AP_S1>& RHS) const { + return !slt(RHS); + } + + INLINE ap_private abs() const { + if (isNegative()) return -(*this); + return *this; + } + + INLINE ap_private<_AP_W, false> get() const { + ap_private<_AP_W, false> ret(*this); + return ret; + } + + INLINE static uint32_t getBitsNeeded(const char* str, uint32_t slen, + uint8_t radix) { + return _AP_W; + } + + INLINE uint32_t getActiveBits() const { + uint32_t bits = _AP_W - countLeadingZeros(); + return bits ? bits : 1; + } + + INLINE double roundToDouble(bool isSigned = false) const { + return isSigned ? double((int64_t)VAL) : double((uint64_t)VAL); + } + + /*Reverse the contents of ap_private instance. I.e. LSB becomes MSB and vise + * versa*/ + INLINE ap_private& reverse() { + for (int i = 0; i < _AP_W / 2; ++i) { + bool tmp = operator[](i); + if (operator[](_AP_W - 1 - i)) + set(i); + else + clear(i); + if (tmp) + set(_AP_W - 1 - i); + else + clear(_AP_W - 1 - i); + } + clearUnusedBits(); + return *this; + } + + /*Return true if the value of ap_private instance is zero*/ + INLINE bool iszero() const { return isMinValue(); } + + INLINE bool to_bool() const { return !iszero(); } + + /* x < 0 */ + INLINE bool sign() const { + if (isNegative()) return true; + return false; + } + + /* x[i] = !x[i] */ + INLINE void invert(int i) { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + flip(i); + } + + /* x[i] */ + INLINE bool test(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return operator[](i); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the left + INLINE void lrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(shl(n) | lshr(_AP_W - n)); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the right + INLINE void rrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(lshr(n) | shl(_AP_W - n)); + } + + // Set the ith bit into v + INLINE void set(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // Set the ith bit into v + INLINE void set_bit(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // Get the value of ith bit + INLINE bool get_bit(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return (((1ULL << i) & VAL) != 0); + } + + /// Toggle all bits. + INLINE ap_private& flip() { + VAL = (ValType)((~0ULL ^ VAL) & mask); + clearUnusedBits(); + return *this; + } + + /// Toggles a given bit to its opposite value. + INLINE ap_private& flip(uint32_t bitPosition) { + assert(bitPosition < BitWidth && "Out of the bit-width range!"); + set_bit(bitPosition, !get_bit(bitPosition)); + return *this; + } + + // complements every bit + INLINE void b_not() { flip(); } + +// Binary Arithmetic +//----------------------------------------------------------- +#define OP_BIN_AP(Sym, Rty, Fun) \ + template \ + INLINE typename RType<_AP_W2, _AP_S2>::Rty operator Sym( \ + const ap_private<_AP_W2, _AP_S2>& op) const { \ + typename RType<_AP_W2, _AP_S2>::Rty lhs(*this); \ + typename RType<_AP_W2, _AP_S2>::Rty rhs(op); \ + return lhs.Fun(rhs); \ + } + +/// Bitwise and, or, xor +// OP_BIN_AP(&,logic, And) +// OP_BIN_AP(|,logic, Or) +// OP_BIN_AP(^,logic, Xor) +#undef OP_BIN_AP + + template + INLINE typename RType<_AP_W2, _AP_S2>::div operator/( + const ap_private<_AP_W2, _AP_S2>& op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + return typename RType<_AP_W2, _AP_S2>::div( + (_AP_S || _AP_S2) ? lhs.sdiv(rhs) : lhs.udiv(rhs)); + } + + template + INLINE typename RType<_AP_W2, _AP_S2>::mod operator%( + const ap_private<_AP_W2, _AP_S2>& op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + typename RType<_AP_W2, _AP_S2>::mod res = + typename RType<_AP_W2, _AP_S2>::mod(_AP_S ? lhs.srem(rhs) + : lhs.urem(rhs)); + return res; + } + +#define OP_ASSIGN_AP_2(Sym) \ + template \ + INLINE ap_private<_AP_W, _AP_S>& operator Sym##=( \ + const ap_private<_AP_W2, _AP_S2>& op) { \ + *this = operator Sym(op); \ + return *this; \ + } + + OP_ASSIGN_AP_2(/) + OP_ASSIGN_AP_2(%) +#undef OP_ASSIGN_AP_2 + +/// Bitwise assign: and, or, xor +//------------------------------------------------------------- +// OP_ASSIGN_AP(&) +// OP_ASSIGN_AP(^) +// OP_ASSIGN_AP(|) + +#define OP_LEFT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator<<(const TYPE op) const { \ + if (op >= _AP_W) return ap_private(0); \ + if (SIGNED && op < 0) return *this >> (0 - op); \ + return shl(op); \ + } + + // OP_LEFT_SHIFT_CTYPE(bool, false) + OP_LEFT_SHIFT_CTYPE(char, CHAR_IS_SIGNED) + OP_LEFT_SHIFT_CTYPE(signed char, true) + OP_LEFT_SHIFT_CTYPE(unsigned char, false) + OP_LEFT_SHIFT_CTYPE(short, true) + OP_LEFT_SHIFT_CTYPE(unsigned short, false) + OP_LEFT_SHIFT_CTYPE(int, true) + OP_LEFT_SHIFT_CTYPE(unsigned int, false) + OP_LEFT_SHIFT_CTYPE(long, true) + OP_LEFT_SHIFT_CTYPE(unsigned long, false) + OP_LEFT_SHIFT_CTYPE(long long, true) + OP_LEFT_SHIFT_CTYPE(unsigned long long, false) + OP_LEFT_SHIFT_CTYPE(half, false) + OP_LEFT_SHIFT_CTYPE(float, false) + OP_LEFT_SHIFT_CTYPE(double, false) + +#undef OP_LEFT_SHIFT_CTYPE + + template + INLINE ap_private operator<<(const ap_private<_AP_W2, _AP_S2>& op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this << sh; + } else { + int sh = op2.to_int(); + return *this << sh; + } + } + +#define OP_RIGHT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator>>(const TYPE op) const { \ + if (op >= _AP_W) { \ + if (isNegative()) \ + return ap_private(-1); \ + else \ + return ap_private(0); \ + } \ + if ((SIGNED) && op < 0) return *this << (0 - op); \ + if (_AP_S) \ + return ashr(op); \ + else \ + return lshr(op); \ + } + + // OP_RIGHT_SHIFT_CTYPE(bool, false) + OP_RIGHT_SHIFT_CTYPE(char, CHAR_IS_SIGNED) + OP_RIGHT_SHIFT_CTYPE(signed char, true) + OP_RIGHT_SHIFT_CTYPE(unsigned char, false) + OP_RIGHT_SHIFT_CTYPE(short, true) + OP_RIGHT_SHIFT_CTYPE(unsigned short, false) + OP_RIGHT_SHIFT_CTYPE(int, true) + OP_RIGHT_SHIFT_CTYPE(unsigned int, false) + OP_RIGHT_SHIFT_CTYPE(long, true) + OP_RIGHT_SHIFT_CTYPE(unsigned long, false) + OP_RIGHT_SHIFT_CTYPE(unsigned long long, false) + OP_RIGHT_SHIFT_CTYPE(long long, true) + OP_RIGHT_SHIFT_CTYPE(half, false) + OP_RIGHT_SHIFT_CTYPE(float, false) + OP_RIGHT_SHIFT_CTYPE(double, false) + +#undef OP_RIGHT_SHIFT_CTYPE + + template + INLINE ap_private operator>>(const ap_private<_AP_W2, _AP_S2>& op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this >> sh; + } else { + int sh = op2.to_int(); + return *this >> sh; + } + } + + /// Shift assign + //----------------------------------------------------------------- + + //INLINE const ap_private& operator<<=(uint32_t shiftAmt) { + // VAL <<= shiftAmt; + // clearUnusedBits(); + // return *this; + //} + +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private& operator Sym##=(int op) { \ + *this = operator Sym(op); \ + clearUnusedBits(); \ + return *this; \ + } \ + INLINE ap_private& operator Sym##=(unsigned int op) { \ + *this = operator Sym(op); \ + clearUnusedBits(); \ + return *this; \ + } \ + template \ + INLINE ap_private& operator Sym##=(const ap_private<_AP_W2, _AP_S2>& op) { \ + *this = operator Sym(op); \ + clearUnusedBits(); \ + return *this; \ + } + + OP_ASSIGN_AP(>>) + OP_ASSIGN_AP(<<) +#undef OP_ASSIGN_AP + + /// Comparisons + //----------------------------------------------------------------- + template + INLINE bool operator==(const ap_private<_AP_W1, _AP_S1>& op) const { + enum { _AP_MAX_W = AP_MAX(AP_MAX(_AP_W, _AP_W1), 32) }; + ap_private<_AP_MAX_W, false> lhs(*this); + ap_private<_AP_MAX_W, false> rhs(op); + if (_AP_MAX_W <= 64) { + return (uint64_t)lhs.get_VAL() == (uint64_t)rhs.get_VAL(); + } else + return lhs == rhs; + } + + template + INLINE bool operator!=(const ap_private<_AP_W2, _AP_S2>& op) const { + return !(*this == op); + } + + template + INLINE bool operator>(const ap_private<_AP_W2, _AP_S2>& op) const { + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(*this); + ap_private<_AP_MAX_W, _AP_S2> rhs(op); + // this will follow gcc rule for comparison + // between different bitwidth and signness + if (_AP_S == _AP_S2) + return _AP_S ? lhs.sgt(rhs) : lhs.ugt(rhs); + else if (_AP_W < 32 && _AP_W2 < 32) + // different signness but both bitwidth is less than 32 + return lhs.sgt(rhs); + else + // different signness but bigger bitwidth + // is greater or equal to 32 + if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + } + + template + INLINE bool operator<=(const ap_private<_AP_W2, _AP_S2>& op) const { + return !(*this > op); + } + + template + INLINE bool operator<(const ap_private<_AP_W2, _AP_S2>& op) const { + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(*this); + ap_private<_AP_MAX_W, _AP_S2> rhs(op); + if (_AP_S == _AP_S2) + return _AP_S ? lhs.slt(rhs) : lhs.ult(rhs); + else if (_AP_W < 32 && _AP_W2 < 32) + return lhs.slt(rhs); + else if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + } + + template + INLINE bool operator>=(const ap_private<_AP_W2, _AP_S2>& op) const { + return !(*this < op); + } + + /// Bit and Part Select + //-------------------------------------------------------------- + // FIXME now _private_range_ref refs to _AP_ROOT_TYPE(struct ssdm_int). + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + const_cast*>(this), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + (const_cast*>(this)), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> operator[](int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> operator[]( + const ap_private<_AP_W2, _AP_S2>& index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> operator[](int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> operator[]( + const ap_private<_AP_W2, _AP_S2>& index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index.to_int()); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> bit(int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> bit(const ap_private<_AP_W2, _AP_S2>& index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> bit(int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> bit( + const ap_private<_AP_W2, _AP_S2>& index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index.to_int()); + } + +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> > +// concat(const ap_private<_AP_W2, _AP_S2>& a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> > +// concat(ap_private<_AP_W2, _AP_S2>& a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(const ap_private<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(const ap_private<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(ap_private<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// const_cast&>(*this), a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(ap_private<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> > +// operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> > +// operator,(_private_range_ref<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> > +// operator,(const _private_bit_ref<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> > +// operator,(_private_bit_ref<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > +// operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( +// const_cast&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > +// operator,(ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >(*this, +// a2); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> +// &a2) const { +// return ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// const_cast&>(*this), +// const_cast< +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { +// return ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, +// a2); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> +// &a2) const { +// return ap_concat_ref< +// _AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// const_cast&>(*this), +// const_cast&>( +// a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,( +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { +// return ap_concat_ref< +// _AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, a2); +// } +// +// template +// INLINE ap_private operator&( +// const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { +// return *this & a2.get(); +// } +// +// template +// INLINE ap_private operator|( +// const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { +// return *this | a2.get(); +// } +// +// template +// INLINE ap_private operator^( +// const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { +// return *this ^ a2.get(); +// } + + // Reduce operation + //----------------------------------------------------------- + INLINE bool and_reduce() const { return (VAL & mask) == mask; } + + INLINE bool nand_reduce() const { return (VAL & mask) != mask; } + + INLINE bool or_reduce() const { return (bool)VAL; } + + INLINE bool nor_reduce() const { return VAL == 0; } + + INLINE bool xor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? true : false; + } + + INLINE bool xnor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? false : true; + } + + INLINE std::string to_string(uint8_t radix = 2, bool sign = false) const { + return toString(radix, radix == 10 ? _AP_S : sign); + } +}; // End of class ap_private <_AP_W, _AP_S, true> + +template +std::string ap_private<_AP_W, _AP_S, true>::toString(uint8_t radix, + bool wantSigned) const { + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + static const char* digits[] = {"0", "1", "2", "3", "4", "5", "6", "7", + "8", "9", "a", "b", "c", "d", "e", "f"}; + std::string result; + if (radix != 10) { + // For the 2, 8 and 16 bit cases, we can just shift instead of divide + // because the number of bits per digit (1,3 and 4 respectively) divides + // equaly. We just shift until there value is zero. + + // First, check for a zero value and just short circuit the logic below. + if (*this == (uint64_t)(0)) { + // Always generate a radix indicator because fixed-point + // formats require it. + switch (radix) { + case 2: + result = "0b0"; + break; + case 8: + result = "0o0"; + break; + case 16: + result = "0x0"; + break; + default: + assert("invalid radix" && 0); + } + } else { + ap_private<_AP_W, false, true> tmp(*this); + size_t insert_at = 0; + bool leading_zero = true; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + result = "-"; + insert_at = 1; + leading_zero = false; + } + switch (radix) { + case 2: + result += "0b"; + break; + case 8: + result += "0o"; + break; + case 16: + result += "0x"; + break; + default: + assert("invalid radix" && 0); + } + insert_at += 2; + + // Just shift tmp right for each digit width until it becomes zero + uint32_t shift = (radix == 16 ? 4 : (radix == 8 ? 3 : 1)); + uint64_t mask = radix - 1; + ap_private<_AP_W, false, true> zero(0); + unsigned bits = 0; + bool msb = false; + while (tmp.ne(zero)) { + unsigned digit = (unsigned)(tmp.get_VAL() & mask); + result.insert(insert_at, digits[digit]); + tmp = tmp.lshr(shift); + bits++; + msb = (digit >> (shift - 1)) == 1; + } + bits *= shift; + if (bits < _AP_W && leading_zero && msb) + result.insert(insert_at, digits[0]); + } + return result; + } + + ap_private<_AP_W, false, true> tmp(*this); + ap_private<6, false, true> divisor(radix); + ap_private<_AP_W, _AP_S, true> zero(0); + size_t insert_at = 0; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + result = "-"; + insert_at = 1; + } + if (tmp == ap_private<_AP_W, false, true>(0ULL)) + result = "0"; + else + while (tmp.ne(zero)) { + ap_private<_AP_W, false, true> APdigit = tmp % divisor; + ap_private<_AP_W, false, true> tmp2 = tmp / divisor; + uint32_t digit = (uint32_t)(APdigit.getZExtValue()); + assert(digit < radix && "divide failed"); + result.insert(insert_at, digits[digit]); + tmp = tmp2; + } + return result; + +} // End of ap_private<_AP_W, _AP_S, true>::toString() + +// bitwidth > 64 +template +class ap_private<_AP_W, _AP_S, false> { + // SFINAE pattern. Only consider this class when _AP_W > 64 + const static bool valid = ap_private_enable_if<(_AP_W > 64)>::isValid; + +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + public: + enum { BitWidth = _AP_W, _AP_N = (_AP_W + 63) / 64 }; + static const int width = _AP_W; + + private: + /// This constructor is used only internally for speed of construction of + /// temporaries. It is unsafe for general use so it is not public. + + /* Constructors */ + /// Note that numWords can be smaller or larger than the corresponding bit + /// width but any extraneous bits will be dropped. + /// @param numWords the number of words in bigVal + /// @param bigVal a sequence of words to form the initial value of the + /// ap_private + /// @brief Construct an ap_private, initialized as bigVal[]. + INLINE ap_private(uint32_t numWords, const uint64_t bigVal[]) { + set_canary(); + assert(bigVal && "Null pointer detected!"); + { + // Get memory, cleared to 0 + memset(pVal, 0, _AP_N * sizeof(uint64_t)); + + // Calculate the number of words to copy + uint32_t words = AESL_std::min(numWords, _AP_N); + // Copy the words from bigVal to pVal + memcpy(pVal, bigVal, words * APINT_WORD_SIZE); + if (words >= _AP_W) clearUnusedBits(); + // Make sure unused high bits are cleared + } + check_canary(); + } + + /// This constructor interprets Val as a string in the given radix. The + /// interpretation stops when the first charater that is not suitable for the + /// radix is encountered. Acceptable radix values are 2, 8, 10 and 16. It is + /// an error for the value implied by the string to require more bits than + /// numBits. + /// @param val the string to be interpreted + /// @param radix the radix of Val to use for the intepretation + /// @brief Construct an ap_private from a string representation. + INLINE ap_private(const std::string& val, uint8_t radix = 2) { + set_canary(); + assert(!val.empty() && "The input string is empty."); + const char* c_str = val.c_str(); + fromString(c_str, val.size(), radix); + check_canary(); + } + + /// This constructor interprets the slen characters starting at StrStart as + /// a string in the given radix. The interpretation stops when the first + /// character that is not suitable for the radix is encountered. Acceptable + /// radix values are 2, 8, 10 and 16. It is an error for the value implied by + /// the string to require more bits than numBits. + /// @param strStart the start of the string to be interpreted + /// @param slen the maximum number of characters to interpret + /// @param radix the radix to use for the conversion + /// @brief Construct an ap_private from a string representation. + /// This method does not consider whether it is negative or not. + INLINE ap_private(const char strStart[], uint32_t slen, uint8_t radix) { + set_canary(); + fromString(strStart, slen, radix); + check_canary(); + } + + INLINE void report() { + _AP_ERROR(_AP_W > MAX_MODE(AP_INT_MAX_W) * 1024, + "ap_%sint<%d>: Bitwidth exceeds the " + "default max value %d. Please use macro " + "AP_INT_MAX_W to set a larger max value.", + _AP_S ? "" : "u", _AP_W, MAX_MODE(AP_INT_MAX_W) * 1024); + } + /// This union is used to store the integer value. When the + /// integer bit-width <= 64, it uses VAL, otherwise it uses pVal. + + /// This enum is used to hold the constants we needed for ap_private. + // uint64_t VAL; ///< Used to store the <= 64 bits integer value. + uint64_t pVal[_AP_N]; ///< Used to store the >64 bits integer value. + +#ifdef AP_CANARY + uint64_t CANARY; + INLINE void check_canary() { assert(CANARY == (uint64_t)0xDEADBEEFDEADBEEF); } + INLINE void set_canary() { CANARY = (uint64_t)0xDEADBEEFDEADBEEF; } +#else + INLINE void check_canary() {} + INLINE void set_canary() {} +#endif + + public: + typedef typename valtype<8, _AP_S>::Type ValType; + typedef ap_private<_AP_W, _AP_S> Type; + // FIXME remove friend type? + template + friend struct ap_fixed_base; + /// return type of variety of operations + //---------------------------------------------------------- + template + struct RType { + enum { + mult_w = _AP_W + _AP_W2, + mult_s = _AP_S || _AP_S2, + plus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, + div_w = _AP_W + _AP_S2, + div_s = _AP_S || _AP_S2, + mod_w = AP_MIN(_AP_W, _AP_W2 + (!_AP_S2 && _AP_S)), + mod_s = _AP_S, + logic_w = AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + typedef ap_private mult; + typedef ap_private plus; + typedef ap_private minus; + typedef ap_private logic; + typedef ap_private div; + typedef ap_private mod; + typedef ap_private<_AP_W, _AP_S> arg1; + typedef bool reduce; + }; + + INLINE uint64_t& get_VAL(void) { return pVal[0]; } + INLINE uint64_t get_VAL(void) const { return pVal[0]; } + INLINE uint64_t get_VAL(void) const volatile { return pVal[0]; } + INLINE void set_VAL(uint64_t value) { pVal[0] = value; } + INLINE uint64_t& get_pVal(int index) { return pVal[index]; } + INLINE uint64_t* get_pVal() { return pVal; } + INLINE const uint64_t* get_pVal() const { return pVal; } + INLINE uint64_t get_pVal(int index) const { return pVal[index]; } + INLINE uint64_t* get_pVal() const volatile { return pVal; } + INLINE uint64_t get_pVal(int index) const volatile { return pVal[index]; } + INLINE void set_pVal(int i, uint64_t value) { pVal[i] = value; } + + /// This enum is used to hold the constants we needed for ap_private. + enum { + APINT_BITS_PER_WORD = sizeof(uint64_t) * 8, ///< Bits in a word + APINT_WORD_SIZE = sizeof(uint64_t) ///< Byte size of a word + }; + + enum { + excess_bits = (_AP_W % APINT_BITS_PER_WORD) + ? APINT_BITS_PER_WORD - (_AP_W % APINT_BITS_PER_WORD) + : 0 + }; + static const uint64_t mask = ((uint64_t)~0ULL >> (excess_bits)); + + public: + // NOTE changed to explicit to be consistent with ap_private + explicit INLINE ap_private(const char* val) { + set_canary(); + unsigned char radix = 10; + std::string str = ap_private_ops::parseString(val, radix); // determine radix. + std::string::size_type pos = str.find('.'); + if (pos != std::string::npos) str = str.substr(pos); + ap_private ap_private_val(str, radix); + operator=(ap_private_val); + report(); + check_canary(); + } + + INLINE ap_private(const char* val, unsigned char rd) { + set_canary(); + unsigned char radix = rd; + std::string str = ap_private_ops::parseString(val, radix); // determine radix. + std::string::size_type pos = str.find('.'); + if (pos != std::string::npos) str = str.substr(pos); + ap_private ap_private_val(str, radix); + operator=(ap_private_val); + report(); + + report(); + check_canary(); + } + + template + INLINE ap_private(const _private_range_ref<_AP_W2, _AP_S2>& ref) { + set_canary(); + *this = ref.get(); + report(); + check_canary(); + } + + template + INLINE ap_private(const _private_bit_ref<_AP_W2, _AP_S2>& ref) { + set_canary(); + *this = ((uint64_t)(bool)ref); + report(); + check_canary(); + } + +// template +// INLINE ap_private(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) { +// set_canary(); +// *this = ref.get(); +// report(); +// check_canary(); +// } +// +// template +// INLINE ap_private( +// const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { +// set_canary(); +// *this = ((val.operator ap_private<_AP_W2, false>())); +// report(); +// check_canary(); +// } +// +// template +// INLINE ap_private( +// const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { +// set_canary(); +// *this = (uint64_t)(bool)val; +// report(); +// check_canary(); +// } + + /// Simply makes *this a copy of that. + /// @brief Copy Constructor. + INLINE ap_private(const ap_private& that) { + set_canary(); + memcpy(pVal, that.get_pVal(), _AP_N * APINT_WORD_SIZE); + clearUnusedBits(); + check_canary(); + } + + template + INLINE ap_private(const ap_private<_AP_W1, _AP_S1, false>& that) { + set_canary(); + operator=(that); + check_canary(); + } + + template + INLINE ap_private(const volatile ap_private<_AP_W1, _AP_S1, false>& that) { + set_canary(); + operator=(const_cast&>(that)); + check_canary(); + } + + template + INLINE ap_private(const ap_private<_AP_W1, _AP_S1, true>& that) { + set_canary(); + static const uint64_t that_sign_ext_mask = + (_AP_W1 == APINT_BITS_PER_WORD) + ? 0 + : ~0ULL >> (_AP_W1 % APINT_BITS_PER_WORD) + << (_AP_W1 % APINT_BITS_PER_WORD); + if (that.isNegative()) { + pVal[0] = that.get_VAL() | that_sign_ext_mask; + memset(pVal + 1, ~0, sizeof(uint64_t) * (_AP_N - 1)); + } else { + pVal[0] = that.get_VAL(); + memset(pVal + 1, 0, sizeof(uint64_t) * (_AP_N - 1)); + } + clearUnusedBits(); + check_canary(); + } + + template + INLINE ap_private(const volatile ap_private<_AP_W1, _AP_S1, true>& that) { + set_canary(); + operator=(const_cast&>(that)); + check_canary(); + } + + /// @brief Destructor. + // virtual ~ap_private() {} + INLINE ~ap_private() { check_canary(); } + + /// @name Constructors + /// @{ + + /// Default constructor that creates an uninitialized ap_private. This is + /// useful + /// for object deserialization (pair this with the static method Read). + INLINE ap_private() { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + INLINE ap_private(uint64_t* val, uint32_t bits = _AP_W) { assert(0); } + INLINE ap_private(const uint64_t* const val, uint32_t bits) { assert(0); } + +/// If isSigned is true then val is treated as if it were a signed value +/// (i.e. as an int64_t) and the appropriate sign extension to the bit width +/// will be done. Otherwise, no sign extension occurs (high order bits beyond +/// the range of val are zero filled). +/// @param numBits the bit width of the constructed ap_private +/// @param val the initial value of the ap_private +/// @param isSigned how to treat signedness of val +/// @brief Create a new ap_private of numBits width, initialized as val. +#define CTOR(TYPE, SIGNED) \ + INLINE ap_private(TYPE val, bool isSigned = SIGNED) { \ + set_canary(); \ + pVal[0] = (ValType)val; \ + if (isSigned && int64_t(pVal[0]) < 0) { \ + memset(pVal + 1, ~0, sizeof(uint64_t) * (_AP_N - 1)); \ + } else { \ + memset(pVal + 1, 0, sizeof(uint64_t) * (_AP_N - 1)); \ + } \ + clearUnusedBits(); \ + check_canary(); \ + } + + CTOR(bool, false) + CTOR(char, CHAR_IS_SIGNED) + CTOR(signed char, true) + CTOR(unsigned char, false) + CTOR(short, true) + CTOR(unsigned short, false) + CTOR(int, true) + CTOR(unsigned int, false) + CTOR(long, true) + CTOR(unsigned long, false) + CTOR(ap_slong, true) + CTOR(ap_ulong, false) + CTOR(half, false) + CTOR(float, false) + CTOR(double, false) +#undef CTOR + + /// @returns true if the number of bits <= 64, false otherwise. + /// @brief Determine if this ap_private just has one word to store value. + INLINE bool isSingleWord() const { return false; } + + /// @returns the word position for the specified bit position. + /// @brief Determine which word a bit is in. + static INLINE uint32_t whichWord(uint32_t bitPosition) { + // return bitPosition / APINT_BITS_PER_WORD; + return (bitPosition) >> 6; + } + + /// @returns the bit position in a word for the specified bit position + /// in the ap_private. + /// @brief Determine which bit in a word a bit is in. + static INLINE uint32_t whichBit(uint32_t bitPosition) { + // return bitPosition % APINT_BITS_PER_WORD; + return bitPosition & 0x3f; + } + + /// bit at a specific bit position. This is used to mask the bit in the + /// corresponding word. + /// @returns a uint64_t with only bit at "whichBit(bitPosition)" set + /// @brief Get a single bit mask. + static INLINE uint64_t maskBit(uint32_t bitPosition) { + return 1ULL << (whichBit(bitPosition)); + } + + /// @returns the corresponding word for the specified bit position. + /// @brief Get the word corresponding to a bit position + INLINE uint64_t getWord(uint32_t bitPosition) const { + return pVal[whichWord(bitPosition)]; + } + + /// This method is used internally to clear the to "N" bits in the high order + /// word that are not used by the ap_private. This is needed after the most + /// significant word is assigned a value to ensure that those bits are + /// zero'd out. + /// @brief Clear unused high order bits + INLINE void clearUnusedBits(void) volatile +// just for clang compiler +#if defined(__clang__) && !defined(__CLANG_3_1__) + __attribute__((no_sanitize("undefined"))) +#endif + { + pVal[_AP_N - 1] = + _AP_S ? ((((int64_t)pVal[_AP_N - 1]) << (excess_bits)) >> excess_bits) + : (excess_bits + ? ((pVal[_AP_N - 1]) << (excess_bits)) >> (excess_bits) + : pVal[_AP_N - 1]); + } + + INLINE void clearUnusedBitsToZero(void) { pVal[_AP_N - 1] &= mask; } + + INLINE void clearUnusedBitsToOne(void) { pVal[_AP_N - 1] |= mask; } + + /// This is used by the constructors that take string arguments. + /// @brief Convert a char array into an ap_private + INLINE void fromString(const char* str, uint32_t slen, uint8_t radix) { + enum { numbits = _AP_W }; + bool isNeg = str[0] == '-'; + if (isNeg) { + str++; + slen--; + } + + if (str[0] == '0' && (str[1] == 'b' || str[1] == 'B')) { + //if(radix == 0) radix = 2; + _AP_WARNING(radix != 2, "%s seems to have base %d, but %d given.", str, 2, radix); + str += 2; + slen -=2; + } else if (str[0] == '0' && (str[1] == 'o' || str[1] == 'O')) { + //if (radix == 0) radix = 8; + _AP_WARNING(radix != 8, "%s seems to have base %d, but %d given.", str, 8, radix); + str += 2; + slen -=2; + } else if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) { + //if (radix == 0) radix = 16; + _AP_WARNING(radix != 16, "%s seems to have base %d, but %d given.", str, 16, radix); + str += 2; + slen -=2; + } else if (str[0] == '0' && (str[1] == 'd' || str[1] == 'D')) { + //if (radix == 0) radix = 10; + _AP_WARNING(radix != 10, "%s seems to have base %d, but %d given.", str, 10, radix); + str += 2; + slen -=2; + } else if (radix == 0) { + //radix = 2; // XXX default value + } + + // Check our assumptions here + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + assert(str && "String is null?"); + + // skip any leading zero + while (*str == '0' && *(str + 1) != '\0') { + str++; + slen--; + } + assert((slen <= numbits || radix != 2) && "Insufficient bit width"); + assert(((slen - 1) * 3 <= numbits || radix != 8) && + "Insufficient bit width"); + assert(((slen - 1) * 4 <= numbits || radix != 16) && + "Insufficient bit width"); + assert((((slen - 1) * 64) / 22 <= numbits || radix != 10) && + "Insufficient bit width"); + + // clear bits + memset(pVal, 0, _AP_N * sizeof(uint64_t)); + + // Figure out if we can shift instead of multiply + uint32_t shift = (radix == 16 ? 4 : radix == 8 ? 3 : radix == 2 ? 1 : 0); + + // Set up an ap_private for the digit to add outside the loop so we don't + // constantly construct/destruct it. + uint64_t bigVal[_AP_N]; + memset(bigVal, 0, _AP_N * sizeof(uint64_t)); + ap_private<_AP_W, _AP_S> apdigit(getBitWidth(), bigVal); + ap_private<_AP_W, _AP_S> apradix(radix); + + // Enter digit traversal loop + for (unsigned i = 0; i < slen; i++) { + // Get a digit + uint32_t digit = 0; + char cdigit = str[i]; + if (radix == 16) { +#define isxdigit(c) \ + (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || \ + ((c) >= 'A' && (c) <= 'F')) +#define isdigit(c) ((c) >= '0' && (c) <= '9') + if (!isxdigit(cdigit)) assert(0 && "Invalid hex digit in string"); + if (isdigit(cdigit)) + digit = cdigit - '0'; + else if (cdigit >= 'a') + digit = cdigit - 'a' + 10; + else if (cdigit >= 'A') + digit = cdigit - 'A' + 10; + else + assert(0 && "huh? we shouldn't get here"); + } else if (isdigit(cdigit)) { + digit = cdigit - '0'; + } else if (cdigit != '\0') { + assert(0 && "Invalid character in digit string"); + } +#undef isxdigit +#undef isdigit + // Shift or multiply the value by the radix + if (shift) + *this <<= shift; + else + *this *= apradix; + + // Add in the digit we just interpreted + apdigit.set_VAL(digit); + *this += apdigit; + } + // If its negative, put it in two's complement form + if (isNeg) { + (*this)--; + this->flip(); + } + clearUnusedBits(); + } + + INLINE ap_private read() volatile { return *this; } + + INLINE void write(const ap_private& op2) volatile { *this = (op2); } + + INLINE operator ValType() const { return get_VAL(); } + + INLINE int to_uchar() const { return (unsigned char)get_VAL(); } + + INLINE int to_char() const { return (signed char)get_VAL(); } + + INLINE int to_ushort() const { return (unsigned short)get_VAL(); } + + INLINE int to_short() const { return (short)get_VAL(); } + + INLINE int to_int() const { return (int)get_VAL(); } + + INLINE unsigned to_uint() const { return (unsigned)get_VAL(); } + + INLINE long to_long() const { return (long)get_VAL(); } + + INLINE unsigned long to_ulong() const { return (unsigned long)get_VAL(); } + + INLINE ap_slong to_int64() const { return (ap_slong)get_VAL(); } + + INLINE ap_ulong to_uint64() const { return (ap_ulong)get_VAL(); } + + INLINE double to_double() const { + if (isNegative()) + return roundToDouble(true); + else + return roundToDouble(false); + } + + INLINE unsigned length() const { return _AP_W; } + + /*Reverse the contents of ap_private instance. I.e. LSB becomes MSB and vise + * versa*/ + INLINE ap_private& reverse() { + for (int i = 0; i < _AP_W / 2; ++i) { + bool tmp = operator[](i); + if (operator[](_AP_W - 1 - i)) + set(i); + else + clear(i); + if (tmp) + set(_AP_W - 1 - i); + else + clear(_AP_W - 1 - i); + } + clearUnusedBits(); + return *this; + } + + /*Return true if the value of ap_private instance is zero*/ + INLINE bool iszero() const { return isMinValue(); } + + INLINE bool to_bool() const { return !iszero(); } + + /* x < 0 */ + INLINE bool sign() const { + if (isNegative()) return true; + return false; + } + + /* x[i] = !x[i] */ + INLINE void invert(int i) { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + flip(i); + } + + /* x[i] */ + INLINE bool test(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return operator[](i); + } + + // Set the ith bit into v + INLINE void set(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // Set the ith bit into v + INLINE void set_bit(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // FIXME different argument for different action? + INLINE ap_private& set(uint32_t bitPosition) { + pVal[whichWord(bitPosition)] |= maskBit(bitPosition); + clearUnusedBits(); + return *this; + } + + INLINE void set() { + for (int i = 0; i < _AP_N; ++i) pVal[i] = ~0ULL; + clearUnusedBits(); + } + + // Get the value of ith bit + INLINE bool get(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return ((maskBit(i) & (pVal[whichWord(i)])) != 0); + } + + // Get the value of ith bit + INLINE bool get_bit(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return ((maskBit(i) & (pVal[whichWord(i)])) != 0); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the left + INLINE void lrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(shl(n) | lshr(_AP_W - n)); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the right + INLINE void rrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(lshr(n) | shl(_AP_W - n)); + } + + /// Set the given bit to 0 whose position is given as "bitPosition". + /// @brief Set a given bit to 0. + INLINE ap_private& clear(uint32_t bitPosition) { + pVal[whichWord(bitPosition)] &= ~maskBit(bitPosition); + clearUnusedBits(); + return *this; + } + + /// @brief Set every bit to 0. + INLINE void clear() { memset(pVal, 0, _AP_N * APINT_WORD_SIZE); } + + /// @brief Toggle every bit to its opposite value. + ap_private& flip() { + for (int i = 0; i < _AP_N; ++i) pVal[i] ^= ~0ULL; + clearUnusedBits(); + return *this; + } + + /// @brief Toggles a given bit to its opposite value. + INLINE ap_private& flip(uint32_t bitPosition) { + assert(bitPosition < BitWidth && "Out of the bit-width range!"); + set_bit(bitPosition, !get_bit(bitPosition)); + return *this; + } + + // complements every bit + INLINE void b_not() { flip(); } + + INLINE ap_private getLoBits(uint32_t numBits) const { + return ap_private_ops::lshr(ap_private_ops::shl(*this, _AP_W - numBits), + _AP_W - numBits); + } + + INLINE ap_private getHiBits(uint32_t numBits) const { + return ap_private_ops::lshr(*this, _AP_W - numBits); + } + + // Binary Arithmetic + //----------------------------------------------------------- + +// template +// INLINE ap_private operator&( +// const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { +// return *this & a2.get(); +// } +// +// template +// INLINE ap_private operator|( +// const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { +// return *this | a2.get(); +// } +// +// template +// INLINE ap_private operator^( +// const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { +// return *this ^ a2.get(); +// } + +/// Arithmetic assign +//------------------------------------------------------------- + +#define OP_BIN_LOGIC_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private& operator Sym(const ap_private<_AP_W1, _AP_S1>& RHS) { \ + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; \ + uint32_t numWords = AESL_std::min((int)_AP_N, _AP_N1); \ + uint32_t i; \ + if (_AP_W != _AP_W1) \ + fprintf(stderr, \ + "Warning! Bitsize mismach for ap_[u]int " #Sym " ap_[u]int.\n"); \ + for (i = 0; i < numWords; ++i) pVal[i] Sym RHS.get_pVal(i); \ + if (_AP_N1 < _AP_N) { \ + uint64_t ext = RHS.isNegative() ? ~0ULL : 0; \ + for (; i < _AP_N; i++) pVal[i] Sym ext; \ + } \ + clearUnusedBits(); \ + return *this; \ + } + + OP_BIN_LOGIC_ASSIGN_AP(&=); + OP_BIN_LOGIC_ASSIGN_AP(|=); + OP_BIN_LOGIC_ASSIGN_AP(^=); +#undef OP_BIN_LOGIC_ASSIGN_AP + + /// Adds the RHS APint to this ap_private. + /// @returns this, after addition of RHS. + /// @brief Addition assignment operator. + template + INLINE ap_private& operator+=(const ap_private<_AP_W1, _AP_S1>& RHS) { + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + uint64_t RHSpVal[_AP_N1]; + for (int i = 0; i < _AP_N1; ++i) RHSpVal[i] = RHS.get_pVal(i); + ap_private_ops::add(pVal, pVal, RHSpVal, _AP_N, _AP_N, _AP_N1, _AP_S, + _AP_S1); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator-=(const ap_private<_AP_W1, _AP_S1>& RHS) { + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + uint64_t RHSpVal[_AP_N1]; + for (int i = 0; i < _AP_N1; ++i) RHSpVal[i] = RHS.get_pVal(i); + ap_private_ops::sub(pVal, pVal, RHSpVal, _AP_N, _AP_N, _AP_N1, _AP_S, + _AP_S1); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator*=(const ap_private<_AP_W1, _AP_S1>& RHS) { + // Get some bit facts about LHS and check for zero + uint32_t lhsBits = getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : whichWord(lhsBits - 1) + 1; + if (!lhsWords) { + // 0 * X ===> 0 + return *this; + } + + ap_private dupRHS = RHS; + // Get some bit facts about RHS and check for zero + uint32_t rhsBits = dupRHS.getActiveBits(); + uint32_t rhsWords = !rhsBits ? 0 : whichWord(rhsBits - 1) + 1; + if (!rhsWords) { + // X * 0 ===> 0 + clear(); + return *this; + } + + // Allocate space for the result + uint32_t destWords = rhsWords + lhsWords; + uint64_t* dest = (uint64_t*)malloc(destWords * sizeof(uint64_t)); + + // Perform the long multiply + ap_private_ops::mul(dest, pVal, lhsWords, dupRHS.get_pVal(), rhsWords, + destWords); + + // Copy result back into *this + clear(); + uint32_t wordsToCopy = destWords >= _AP_N ? _AP_N : destWords; + + memcpy(pVal, dest, wordsToCopy * APINT_WORD_SIZE); + + uint64_t ext = (isNegative() ^ RHS.isNegative()) ? ~0ULL : 0ULL; + for (int i = wordsToCopy; i < _AP_N; i++) pVal[i] = ext; + clearUnusedBits(); + // delete dest array and return + free(dest); + return *this; + } + +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private& operator Sym##=(const ap_private<_AP_W2, _AP_S2>& op) { \ + *this = operator Sym(op); \ + return *this; \ + } + + OP_ASSIGN_AP(/) + OP_ASSIGN_AP(%) +#undef OP_ASSIGN_AP + +#define OP_BIN_LOGIC_AP(Sym) \ + template \ + INLINE typename RType<_AP_W1, _AP_S1>::logic operator Sym( \ + const ap_private<_AP_W1, _AP_S1>& RHS) const { \ + enum { \ + numWords = (RType<_AP_W1, _AP_S1>::logic_w + APINT_BITS_PER_WORD - 1) / \ + APINT_BITS_PER_WORD \ + }; \ + typename RType<_AP_W1, _AP_S1>::logic Result; \ + uint32_t i; \ + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; \ + uint32_t min_N = std::min((int)_AP_N, _AP_N1); \ + uint32_t max_N = std::max((int)_AP_N, _AP_N1); \ + for (i = 0; i < min_N; ++i) \ + Result.set_pVal(i, pVal[i] Sym RHS.get_pVal(i)); \ + if (numWords > i) { \ + uint64_t ext = ((_AP_N < _AP_N1 && isNegative()) || \ + (_AP_N1 < _AP_N && RHS.isNegative())) \ + ? ~0ULL \ + : 0; \ + if (_AP_N > _AP_N1) \ + for (; i < max_N; i++) Result.set_pVal(i, pVal[i] Sym ext); \ + else \ + for (; i < max_N; i++) Result.set_pVal(i, RHS.get_pVal(i) Sym ext); \ + if (numWords > i) { \ + uint64_t ext2 = ((_AP_N > _AP_N1 && isNegative()) || \ + (_AP_N1 > _AP_N && RHS.isNegative())) \ + ? ~0ULL \ + : 0; \ + Result.set_pVal(i, ext Sym ext2); \ + } \ + } \ + Result.clearUnusedBits(); \ + return Result; \ + } + + OP_BIN_LOGIC_AP(|); + OP_BIN_LOGIC_AP(&); + OP_BIN_LOGIC_AP(^); + +#undef OP_BIN_LOGIC_AP + + template + INLINE typename RType<_AP_W1, _AP_S1>::plus operator+( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + typename RType<_AP_W1, _AP_S1>::plus Result, lhs(*this), rhs(RHS); + const int Result_AP_N = (RType<_AP_W1, _AP_S1>::plus_w + 63) / 64; + ap_private_ops::add(Result.get_pVal(), lhs.get_pVal(), rhs.get_pVal(), + Result_AP_N, Result_AP_N, Result_AP_N, _AP_S, _AP_S1); + Result.clearUnusedBits(); + return Result; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::minus operator-( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + typename RType<_AP_W1, _AP_S1>::minus Result, lhs(*this), rhs(RHS); + const int Result_AP_N = (RType<_AP_W1, _AP_S1>::minus_w + 63) / 64; + ap_private_ops::sub(Result.get_pVal(), lhs.get_pVal(), rhs.get_pVal(), + Result_AP_N, Result_AP_N, Result_AP_N, _AP_S, _AP_S1); + Result.clearUnusedBits(); + return Result; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::mult operator*( + const ap_private<_AP_W1, _AP_S1>& RHS) const { + typename RType<_AP_W1, _AP_S1>::mult temp = *this; + temp *= RHS; + return temp; + } + + template + INLINE typename RType<_AP_W2, _AP_S2>::div operator/( + const ap_private<_AP_W2, _AP_S2>& op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + return typename RType<_AP_W2, _AP_S2>::div( + (_AP_S || _AP_S2) ? lhs.sdiv(rhs) : lhs.udiv(rhs)); + } + + template + INLINE typename RType<_AP_W2, _AP_S2>::mod operator%( + const ap_private<_AP_W2, _AP_S2>& op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + typename RType<_AP_W2, _AP_S2>::mod res = + typename RType<_AP_W2, _AP_S2>::mod(_AP_S ? lhs.srem(rhs) + : lhs.urem(rhs)); + return res; + } + +#define OP_LEFT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator<<(const TYPE op) const { \ + if (op >= _AP_W) return ap_private(0); \ + if (SIGNED && op < 0) return *this >> (0 - op); \ + return shl(op); \ + } + + OP_LEFT_SHIFT_CTYPE(int, true) + // OP_LEFT_SHIFT_CTYPE(bool, false) + OP_LEFT_SHIFT_CTYPE(signed char, true) + OP_LEFT_SHIFT_CTYPE(unsigned char, false) + OP_LEFT_SHIFT_CTYPE(short, true) + OP_LEFT_SHIFT_CTYPE(unsigned short, false) + OP_LEFT_SHIFT_CTYPE(unsigned int, false) + OP_LEFT_SHIFT_CTYPE(long, true) + OP_LEFT_SHIFT_CTYPE(unsigned long, false) + OP_LEFT_SHIFT_CTYPE(unsigned long long, false) + OP_LEFT_SHIFT_CTYPE(long long, true) + OP_LEFT_SHIFT_CTYPE(half, false) + OP_LEFT_SHIFT_CTYPE(float, false) + OP_LEFT_SHIFT_CTYPE(double, false) +#undef OP_LEFT_SHIFT_CTYPE + + template + INLINE ap_private operator<<(const ap_private<_AP_W2, _AP_S2>& op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this << sh; + } else { + int sh = op2.to_int(); + return *this << sh; + } + } + +#define OP_RIGHT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator>>(const TYPE op) const { \ + if (op >= _AP_W) { \ + if (isNegative()) \ + return ap_private(-1); \ + else \ + return ap_private(0); \ + } \ + if ((SIGNED) && op < 0) return *this << (0 - op); \ + if (_AP_S) \ + return ashr(op); \ + else \ + return lshr(op); \ + } + + // OP_RIGHT_SHIFT_CTYPE(bool, false) + OP_RIGHT_SHIFT_CTYPE(char, CHAR_IS_SIGNED) + OP_RIGHT_SHIFT_CTYPE(signed char, true) + OP_RIGHT_SHIFT_CTYPE(unsigned char, false) + OP_RIGHT_SHIFT_CTYPE(short, true) + OP_RIGHT_SHIFT_CTYPE(unsigned short, false) + OP_RIGHT_SHIFT_CTYPE(int, true) + OP_RIGHT_SHIFT_CTYPE(unsigned int, false) + OP_RIGHT_SHIFT_CTYPE(long, true) + OP_RIGHT_SHIFT_CTYPE(unsigned long, false) + OP_RIGHT_SHIFT_CTYPE(unsigned long long, false) + OP_RIGHT_SHIFT_CTYPE(long long, true) + OP_RIGHT_SHIFT_CTYPE(half, false) + OP_RIGHT_SHIFT_CTYPE(float, false) + OP_RIGHT_SHIFT_CTYPE(double, false) +#undef OP_RIGHT_SHIFT_CTYPE + + template + INLINE ap_private operator>>(const ap_private<_AP_W2, _AP_S2>& op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this >> sh; + } else { + int sh = op2.to_int(); + return *this >> sh; + } + } + + /// Shift assign + //------------------------------------------------------------------ + // TODO call clearUnusedBits ? +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private& operator Sym##=(int op) { \ + *this = operator Sym(op); \ + return *this; \ + } \ + INLINE ap_private& operator Sym##=(unsigned int op) { \ + *this = operator Sym(op); \ + return *this; \ + } \ + template \ + INLINE ap_private& operator Sym##=(const ap_private<_AP_W2, _AP_S2>& op) { \ + *this = operator Sym(op); \ + return *this; \ + } + OP_ASSIGN_AP(>>) + OP_ASSIGN_AP(<<) +#undef OP_ASSIGN_AP + + /// Comparisons + //----------------------------------------------------------------- + INLINE bool operator==(const ap_private& RHS) const { + // Get some facts about the number of bits used in the two operands. + uint32_t n1 = getActiveBits(); + uint32_t n2 = RHS.getActiveBits(); + + // If the number of bits isn't the same, they aren't equal + if (n1 != n2) return false; + + // If the number of bits fits in a word, we only need to compare the low + // word. + if (n1 <= APINT_BITS_PER_WORD) return pVal[0] == RHS.get_pVal(0); + + // Otherwise, compare everything + for (int i = whichWord(n1 - 1); i >= 0; --i) + if (pVal[i] != RHS.get_pVal(i)) return false; + return true; + } + + template + INLINE bool operator==(const ap_private<_AP_W2, _AP_S2>& op) const { + enum { + _AP_MAX_W = AP_MAX(_AP_W, _AP_W2), + }; + ap_private<_AP_MAX_W, false> lhs(*this); + ap_private<_AP_MAX_W, false> rhs(op); + return lhs == rhs; + } + + INLINE bool operator==(uint64_t Val) const { + uint32_t n = getActiveBits(); + if (n <= APINT_BITS_PER_WORD) + return pVal[0] == Val; + else + return false; + } + + template + INLINE bool operator!=(const ap_private<_AP_W2, _AP_S2>& op) const { + return !(*this == op); + } + + template + INLINE bool operator!=(const ap_private<_AP_W, _AP_S1>& RHS) const { + return !((*this) == RHS); + } + + INLINE bool operator!=(uint64_t Val) const { return !((*this) == Val); } + + template + INLINE bool operator<=(const ap_private<_AP_W2, _AP_S2>& op) const { + return !(*this > op); + } + + INLINE bool operator<(const ap_private& op) const { + return _AP_S ? slt(op) : ult(op); + } + + template + INLINE bool operator<(const ap_private<_AP_W2, _AP_S2>& op) const { + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(*this); + ap_private<_AP_MAX_W, _AP_S2> rhs(op); + if (_AP_S == _AP_S2) + return _AP_S ? lhs.slt(rhs) : lhs.ult(rhs); + else if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + } + + template + INLINE bool operator>=(const ap_private<_AP_W2, _AP_S2>& op) const { + return !(*this < op); + } + + INLINE bool operator>(const ap_private& op) const { + return _AP_S ? sgt(op) : ugt(op); + } + + template + INLINE bool operator>(const ap_private<_AP_W2, _AP_S2>& op) const { + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(*this); + ap_private<_AP_MAX_W, _AP_S2> rhs(op); + if (_AP_S == _AP_S2) + return _AP_S ? lhs.sgt(rhs) : lhs.ugt(rhs); + else if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + } + + /// Bit and Part Select + //-------------------------------------------------------------- + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + const_cast*>(this), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + (const_cast*>(this)), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> range( + const ap_private<_AP_W2, _AP_S2>& HiIdx, + const ap_private<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> operator()( + const ap_private<_AP_W2, _AP_S2>& HiIdx, + const ap_private<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> range( + const ap_private<_AP_W2, _AP_S2>& HiIdx, + const ap_private<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return _private_range_ref<_AP_W, _AP_S>(const_cast(this), Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> operator()( + const ap_private<_AP_W2, _AP_S2>& HiIdx, + const ap_private<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> operator[](int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> operator[]( + const ap_private<_AP_W2, _AP_S2>& index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> operator[]( + const ap_private<_AP_W2, _AP_S2>& index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> operator[](int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> bit(int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> bit(const ap_private<_AP_W2, _AP_S2>& index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> bit(int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> bit( + const ap_private<_AP_W2, _AP_S2>& index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast&>(*this), index.to_int()); + } + +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> > +// concat(ap_private<_AP_W2, _AP_S2>& a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> > +// concat(const ap_private<_AP_W2, _AP_S2>& a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(ap_private<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(ap_private<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// const_cast&>(*this), a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(const ap_private<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> > +// operator,(const ap_private<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> > +// operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> > +// operator,(_private_range_ref<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> > +// operator,(const _private_bit_ref<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> >( +// const_cast&>(*this), +// const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> > +// operator,(_private_bit_ref<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, +// _private_bit_ref<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > +// operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) const { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( +// const_cast&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > +// operator,(ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { +// return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >(*this, +// a2); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> +// &a2) const { +// return ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// const_cast&>(*this), +// const_cast< +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { +// return ap_concat_ref< +// _AP_W, ap_private, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, +// a2); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> +// &a2) const { +// return ap_concat_ref< +// _AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// const_cast&>(*this), +// const_cast&>( +// a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,( +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { +// return ap_concat_ref< +// _AP_W, ap_private, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, a2); +// } + + INLINE ap_private<_AP_W, false> get() const { + ap_private<_AP_W, false> ret(*this); + return ret; + } + + template + INLINE void set(const ap_private<_AP_W3, false>& val) { + operator=(ap_private<_AP_W3, _AP_S>(val)); + } + + /// + /// @name Value Tests + /// + /// This tests the high bit of this ap_private to determine if it is set. + /// @returns true if this ap_private is negative, false otherwise + /// @brief Determine sign of this ap_private. + INLINE bool isNegative() const { + // just for get rid of warnings + enum { shift = (_AP_W - APINT_BITS_PER_WORD * (_AP_N - 1) - 1) }; + static const uint64_t mask = 1ULL << (shift); + return _AP_S && (pVal[_AP_N - 1] & mask); + } + + /// This tests the high bit of the ap_private to determine if it is unset. + /// @brief Determine if this ap_private Value is positive (not negative). + INLINE bool isPositive() const { return !isNegative(); } + + /// This tests if the value of this ap_private is strictly positive (> 0). + /// @returns true if this ap_private is Positive and not zero. + /// @brief Determine if this ap_private Value is strictly positive. + INLINE bool isStrictlyPositive() const { + return isPositive() && (*this) != 0; + } + + /// This checks to see if the value has all bits of the ap_private are set or + /// not. + /// @brief Determine if all bits are set + INLINE bool isAllOnesValue() const { return countPopulation() == _AP_W; } + + /// This checks to see if the value of this ap_private is the maximum unsigned + /// value for the ap_private's bit width. + /// @brief Determine if this is the largest unsigned value. + INLINE bool isMaxValue() const { return countPopulation() == _AP_W; } + + /// This checks to see if the value of this ap_private is the maximum signed + /// value for the ap_private's bit width. + /// @brief Determine if this is the largest signed value. + INLINE bool isMaxSignedValue() const { + return !isNegative() && countPopulation() == _AP_W - 1; + } + + /// This checks to see if the value of this ap_private is the minimum unsigned + /// value for the ap_private's bit width. + /// @brief Determine if this is the smallest unsigned value. + INLINE bool isMinValue() const { return countPopulation() == 0; } + + /// This checks to see if the value of this ap_private is the minimum signed + /// value for the ap_private's bit width. + /// @brief Determine if this is the smallest signed value. + INLINE bool isMinSignedValue() const { + return isNegative() && countPopulation() == 1; + } + + /// This function returns a pointer to the internal storage of the ap_private. + /// This is useful for writing out the ap_private in binary form without any + /// conversions. + INLINE const uint64_t* getRawData() const { return &pVal[0]; } + + // Square Root - this method computes and returns the square root of "this". + // Three mechanisms are used for computation. For small values (<= 5 bits), + // a table lookup is done. This gets some performance for common cases. For + // values using less than 52 bits, the value is converted to double and then + // the libc sqrt function is called. The result is rounded and then converted + // back to a uint64_t which is then used to construct the result. Finally, + // the Babylonian method for computing square roots is used. + INLINE ap_private sqrt() const { + // Determine the magnitude of the value. + uint32_t magnitude = getActiveBits(); + + // Use a fast table for some small values. This also gets rid of some + // rounding errors in libc sqrt for small values. + if (magnitude <= 5) { + static const uint8_t results[32] = { + /* 0 */ 0, + /* 1- 2 */ 1, 1, + /* 3- 6 */ 2, 2, 2, 2, + /* 7-12 */ 3, 3, 3, 3, 3, 3, + /* 13-20 */ 4, 4, 4, 4, 4, 4, 4, 4, + /* 21-30 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + /* 31 */ 6}; + return ap_private<_AP_W, _AP_S>(/*BitWidth,*/ results[get_VAL()]); + } + + // If the magnitude of the value fits in less than 52 bits (the precision of + // an IEEE double precision floating point value), then we can use the + // libc sqrt function which will probably use a hardware sqrt computation. + // This should be faster than the algorithm below. + if (magnitude < 52) { +#ifdef _MSC_VER + // Amazingly, VC++ doesn't have round(). + return ap_private<_AP_W, _AP_S>(/*BitWidth,*/ + uint64_t(::sqrt(double(get_VAL()))) + + 0.5); +#else + return ap_private<_AP_W, _AP_S>(/*BitWidth,*/ + uint64_t( + ::round(::sqrt(double(get_VAL()))))); +#endif + } + + // Okay, all the short cuts are exhausted. We must compute it. The following + // is a classical Babylonian method for computing the square root. This code + // was adapted to APINt from a wikipedia article on such computations. + // See http://www.wikipedia.org/ and go to the page named + // Calculate_an_integer_square_root. + uint32_t nbits = BitWidth, i = 4; + ap_private<_AP_W, _AP_S> testy(16); + ap_private<_AP_W, _AP_S> x_old(/*BitWidth,*/ 1); + ap_private<_AP_W, _AP_S> x_new(0); + ap_private<_AP_W, _AP_S> two(/*BitWidth,*/ 2); + + // Select a good starting value using binary logarithms. + for (;; i += 2, testy = testy.shl(2)) + if (i >= nbits || this->ule(testy)) { + x_old = x_old.shl(i / 2); + break; + } + + // Use the Babylonian method to arrive at the integer square root: + for (;;) { + x_new = (this->udiv(x_old) + x_old).udiv(two); + if (x_old.ule(x_new)) break; + x_old = x_new; + } + + // Make sure we return the closest approximation + // NOTE: The rounding calculation below is correct. It will produce an + // off-by-one discrepancy with results from pari/gp. That discrepancy has + // been + // determined to be a rounding issue with pari/gp as it begins to use a + // floating point representation after 192 bits. There are no discrepancies + // between this algorithm and pari/gp for bit widths < 192 bits. + ap_private<_AP_W, _AP_S> square(x_old * x_old); + ap_private<_AP_W, _AP_S> nextSquare((x_old + 1) * (x_old + 1)); + if (this->ult(square)) + return x_old; + else if (this->ule(nextSquare)) { + ap_private<_AP_W, _AP_S> midpoint((nextSquare - square).udiv(two)); + ap_private<_AP_W, _AP_S> offset(*this - square); + if (offset.ult(midpoint)) + return x_old; + else + return x_old + 1; + } else + assert(0 && "Error in ap_private<_AP_W, _AP_S>::sqrt computation"); + return x_old + 1; + } + + /// + /// @Assignment Operators + /// + /// @returns *this after assignment of RHS. + /// @brief Copy assignment operator. + INLINE ap_private& operator=(const ap_private& RHS) { + if (this != &RHS) memcpy(pVal, RHS.get_pVal(), _AP_N * APINT_WORD_SIZE); + clearUnusedBits(); + return *this; + } + INLINE ap_private& operator=(const volatile ap_private& RHS) { + if (this != &RHS) + for (int i = 0; i < _AP_N; ++i) pVal[i] = RHS.get_pVal(i); + clearUnusedBits(); + return *this; + } + INLINE void operator=(const ap_private& RHS) volatile { + if (this != &RHS) + for (int i = 0; i < _AP_N; ++i) pVal[i] = RHS.get_pVal(i); + clearUnusedBits(); + } + INLINE void operator=(const volatile ap_private& RHS) volatile { + if (this != &RHS) + for (int i = 0; i < _AP_N; ++i) pVal[i] = RHS.get_pVal(i); + clearUnusedBits(); + } + + template + INLINE ap_private& operator=(const ap_private<_AP_W1, _AP_S1>& RHS) { + if (_AP_S1) + cpSextOrTrunc(RHS); + else + cpZextOrTrunc(RHS); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator=(const volatile ap_private<_AP_W1, _AP_S1>& RHS) { + if (_AP_S1) + cpSextOrTrunc(RHS); + else + cpZextOrTrunc(RHS); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator=(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + *this = ap_private<_AP_W2, false>(op2); + return *this; + } + +#if 0 + template + INLINE ap_private& operator=(const ap_private<_AP_W1, _AP_S1, true>& RHS) { + static const uint64_t that_sign_ext_mask = (_AP_W1==APINT_BITS_PER_WORD)?0:~0ULL>>(_AP_W1%APINT_BITS_PER_WORD)<<(_AP_W1%APINT_BITS_PER_WORD); + if (RHS.isNegative()) { + pVal[0] = RHS.get_VAL() | that_sign_ext_mask; + memset(pVal+1,~0, APINT_WORD_SIZE*(_AP_N-1)); + } else { + pVal[0] = RHS.get_VAL(); + memset(pVal+1, 0, APINT_WORD_SIZE*(_AP_N-1)); + } + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator=(const volatile ap_private<_AP_W1, _AP_S1, true>& RHS) { + static const uint64_t that_sign_ext_mask = (_AP_W1==APINT_BITS_PER_WORD)?0:~0ULL>>(_AP_W1%APINT_BITS_PER_WORD)<<(_AP_W1%APINT_BITS_PER_WORD); + if (RHS.isNegative()) { + pVal[0] = RHS.get_VAL() | that_sign_ext_mask; + memset(pVal+1,~0, APINT_WORD_SIZE*(_AP_N-1)); + } else { + pVal[0] = RHS.get_VAL(); + memset(pVal+1, 0, APINT_WORD_SIZE*(_AP_N-1)); + } + clearUnusedBits(); + return *this; + } +#endif + +/// from all c types. +#define ASSIGN_OP_FROM_INT(C_TYPE, _AP_W2, _AP_S2) \ + INLINE ap_private& operator=(const C_TYPE rhs) { \ + ap_private<(_AP_W2), (_AP_S2)> tmp = rhs; \ + operator=(tmp); \ + return *this; \ + } + + ASSIGN_OP_FROM_INT(bool, 1, false) + ASSIGN_OP_FROM_INT(char, 8, CHAR_IS_SIGNED) + ASSIGN_OP_FROM_INT(signed char, 8, true) + ASSIGN_OP_FROM_INT(unsigned char, 8, false) + ASSIGN_OP_FROM_INT(short, sizeof(short) * 8, true) + ASSIGN_OP_FROM_INT(unsigned short, sizeof(unsigned short) * 8, false) + ASSIGN_OP_FROM_INT(int, sizeof(int) * 8, true) + ASSIGN_OP_FROM_INT(unsigned int, sizeof(unsigned int) * 8, false) + ASSIGN_OP_FROM_INT(long, sizeof(long) * 8, true) + ASSIGN_OP_FROM_INT(unsigned long, sizeof(unsigned long) * 8, false) + ASSIGN_OP_FROM_INT(ap_slong, sizeof(ap_slong) * 8, true) + ASSIGN_OP_FROM_INT(ap_ulong, sizeof(ap_ulong) * 8, false) +#undef ASSIGN_OP_FROM_INT + + /// from c string. + // XXX this is a must, to prevent pointer being converted to bool. + INLINE ap_private& operator=(const char* s) { + ap_private tmp(s); // XXX direct initialization, as ctor is explicit. + operator=(tmp); + return *this; + } + + /// + /// @name Unary Operators + /// + /// @returns a new ap_private value representing *this incremented by one + /// @brief Postfix increment operator. + INLINE const ap_private operator++(int) { + ap_private API(*this); + ++(*this); + return API; + } + + /// @returns *this incremented by one + /// @brief Prefix increment operator. + INLINE ap_private& operator++() { + ap_private_ops::add_1(pVal, pVal, _AP_N, 1); + clearUnusedBits(); + return *this; + } + + /// @returns a new ap_private representing *this decremented by one. + /// @brief Postfix decrement operator. + INLINE const ap_private operator--(int) { + ap_private API(*this); + --(*this); + return API; + } + + /// @returns *this decremented by one. + /// @brief Prefix decrement operator. + INLINE ap_private& operator--() { + ap_private_ops::sub_1(pVal, _AP_N, 1); + clearUnusedBits(); + return *this; + } + + /// Performs a bitwise complement operation on this ap_private. + /// @returns an ap_private that is the bitwise complement of *this + /// @brief Unary bitwise complement operator. + INLINE ap_private<_AP_W + !_AP_S, true> operator~() const { + ap_private<_AP_W + !_AP_S, true> Result(*this); + Result.flip(); + return Result; + } + + /// Negates *this using two's complement logic. + /// @returns An ap_private value representing the negation of *this. + /// @brief Unary negation operator + INLINE typename RType<1, false>::minus operator-() const { + return ap_private<1, false>(0) - (*this); + } + + /// Performs logical negation operation on this ap_private. + /// @returns true if *this is zero, false otherwise. + /// @brief Logical negation operator. + INLINE bool operator!() const { + for (int i = 0; i < _AP_N; ++i) + if (pVal[i]) return false; + return true; + } + + template + INLINE ap_private<_AP_W, _AP_S || _AP_S1> And( + const ap_private<_AP_W, _AP_S1>& RHS) const { + return this->operator&(RHS); + } + template + INLINE ap_private Or(const ap_private<_AP_W, _AP_S1>& RHS) const { + return this->operator|(RHS); + } + template + INLINE ap_private Xor(const ap_private<_AP_W, _AP_S1>& RHS) const { + return this->operator^(RHS); + } + + INLINE ap_private Mul(const ap_private& RHS) const { + ap_private Result(*this); + Result *= RHS; + return Result; + } + + INLINE ap_private Add(const ap_private& RHS) const { + ap_private Result(0); + ap_private_ops::add(Result.get_pVal(), pVal, RHS.get_pVal(), _AP_N, _AP_N, + _AP_N, _AP_S, _AP_S); + Result.clearUnusedBits(); + return Result; + } + + INLINE ap_private Sub(const ap_private& RHS) const { + ap_private Result(0); + ap_private_ops::sub(Result.get_pVal(), pVal, RHS.get_pVal(), _AP_N, _AP_N, + _AP_N, _AP_S, _AP_S); + Result.clearUnusedBits(); + return Result; + } + + /// Arithmetic right-shift this ap_private by shiftAmt. + /// @brief Arithmetic right-shift function. + INLINE ap_private ashr(uint32_t shiftAmt) const { + assert(shiftAmt <= BitWidth && "Invalid shift amount, too big"); + // Handle a degenerate case + if (shiftAmt == 0) return ap_private(*this); + + // If all the bits were shifted out, the result is, technically, undefined. + // We return -1 if it was negative, 0 otherwise. We check this early to + // avoid + // issues in the algorithm below. + if (shiftAmt == BitWidth) { + if (isNegative()) + return ap_private(-1); + else + return ap_private(0); + } + + // Create some space for the result. + ap_private Retval(0); + uint64_t* val = Retval.get_pVal(); + + // Compute some values needed by the following shift algorithms + uint32_t wordShift = + shiftAmt % APINT_BITS_PER_WORD; // bits to shift per word + uint32_t offset = shiftAmt / APINT_BITS_PER_WORD; // word offset for shift + uint32_t breakWord = _AP_N - 1 - offset; // last word affected + uint32_t bitsInWord = whichBit(BitWidth); // how many bits in last word? + if (bitsInWord == 0) bitsInWord = APINT_BITS_PER_WORD; + + // If we are shifting whole words, just move whole words + if (wordShift == 0) { + // Move the words containing significant bits + for (uint32_t i = 0; i <= breakWord; ++i) + val[i] = pVal[i + offset]; // move whole word + + // Adjust the top significant word for sign bit fill, if negative + if (isNegative()) + if (bitsInWord < APINT_BITS_PER_WORD) + val[breakWord] |= ~0ULL << (bitsInWord); // set high bits + } else { + // Shift the low order words + for (uint32_t i = 0; i < breakWord; ++i) { + // This combines the shifted corresponding word with the low bits from + // the next word (shifted into this word's high bits). + val[i] = ((pVal[i + offset]) >> (wordShift)); + val[i] |= ((pVal[i + offset + 1]) << (APINT_BITS_PER_WORD - wordShift)); + } + + // Shift the break word. In this case there are no bits from the next word + // to include in this word. + val[breakWord] = (pVal[breakWord + offset]) >> (wordShift); + + // Deal with sign extenstion in the break word, and possibly the word + // before + // it. + if (isNegative()) { + if (wordShift > bitsInWord) { + if (breakWord > 0) + val[breakWord - 1] |= + ~0ULL << (APINT_BITS_PER_WORD - (wordShift - bitsInWord)); + val[breakWord] |= ~0ULL; + } else + val[breakWord] |= (~0ULL << (bitsInWord - wordShift)); + } + } + + // Remaining words are 0 or -1, just assign them. + uint64_t fillValue = (isNegative() ? ~0ULL : 0); + for (int i = breakWord + 1; i < _AP_N; ++i) val[i] = fillValue; + Retval.clearUnusedBits(); + return Retval; + } + + /// Logical right-shift this ap_private by shiftAmt. + /// @brief Logical right-shift function. + INLINE ap_private lshr(uint32_t shiftAmt) const { + // If all the bits were shifted out, the result is 0. This avoids issues + // with shifting by the size of the integer type, which produces undefined + // results. We define these "undefined results" to always be 0. + if (shiftAmt == BitWidth) return ap_private(0); + + // If none of the bits are shifted out, the result is *this. This avoids + // issues with shifting byt he size of the integer type, which produces + // undefined results in the code below. This is also an optimization. + if (shiftAmt == 0) return ap_private(*this); + + // Create some space for the result. + ap_private Retval(0); + uint64_t* val = Retval.get_pVal(); + + // If we are shifting less than a word, compute the shift with a simple + // carry + if (shiftAmt < APINT_BITS_PER_WORD) { + uint64_t carry = 0; + for (int i = _AP_N - 1; i >= 0; --i) { + val[i] = ((pVal[i]) >> (shiftAmt)) | carry; + carry = (pVal[i]) << (APINT_BITS_PER_WORD - shiftAmt); + } + Retval.clearUnusedBits(); + return Retval; + } + + // Compute some values needed by the remaining shift algorithms + uint32_t wordShift = shiftAmt % APINT_BITS_PER_WORD; + uint32_t offset = shiftAmt / APINT_BITS_PER_WORD; + + // If we are shifting whole words, just move whole words + if (wordShift == 0) { + for (uint32_t i = 0; i < _AP_N - offset; ++i) val[i] = pVal[i + offset]; + for (uint32_t i = _AP_N - offset; i < _AP_N; i++) val[i] = 0; + Retval.clearUnusedBits(); + return Retval; + } + + // Shift the low order words + uint32_t breakWord = _AP_N - offset - 1; + for (uint32_t i = 0; i < breakWord; ++i) + val[i] = ((pVal[i + offset]) >> (wordShift)) | + ((pVal[i + offset + 1]) << (APINT_BITS_PER_WORD - wordShift)); + // Shift the break word. + val[breakWord] = (pVal[breakWord + offset]) >> (wordShift); + + // Remaining words are 0 + for (int i = breakWord + 1; i < _AP_N; ++i) val[i] = 0; + Retval.clearUnusedBits(); + return Retval; + } + + /// Left-shift this ap_private by shiftAmt. + /// @brief Left-shift function. + INLINE ap_private shl(uint32_t shiftAmt) const { + assert(shiftAmt <= BitWidth && "Invalid shift amount, too big"); + // If all the bits were shifted out, the result is 0. This avoids issues + // with shifting by the size of the integer type, which produces undefined + // results. We define these "undefined results" to always be 0. + if (shiftAmt == BitWidth) return ap_private(0); + + // If none of the bits are shifted out, the result is *this. This avoids a + // lshr by the words size in the loop below which can produce incorrect + // results. It also avoids the expensive computation below for a common + // case. + if (shiftAmt == 0) return ap_private(*this); + + // Create some space for the result. + ap_private Retval(0); + uint64_t* val = Retval.get_pVal(); + // If we are shifting less than a word, do it the easy way + if (shiftAmt < APINT_BITS_PER_WORD) { + uint64_t carry = 0; + for (int i = 0; i < _AP_N; i++) { + val[i] = ((pVal[i]) << (shiftAmt)) | carry; + carry = (pVal[i]) >> (APINT_BITS_PER_WORD - shiftAmt); + } + Retval.clearUnusedBits(); + return Retval; + } + + // Compute some values needed by the remaining shift algorithms + uint32_t wordShift = shiftAmt % APINT_BITS_PER_WORD; + uint32_t offset = shiftAmt / APINT_BITS_PER_WORD; + + // If we are shifting whole words, just move whole words + if (wordShift == 0) { + for (uint32_t i = 0; i < offset; i++) val[i] = 0; + for (int i = offset; i < _AP_N; i++) val[i] = pVal[i - offset]; + Retval.clearUnusedBits(); + return Retval; + } + + // Copy whole words from this to Result. + uint32_t i = _AP_N - 1; + for (; i > offset; --i) + val[i] = (pVal[i - offset]) << (wordShift) | + (pVal[i - offset - 1]) >> (APINT_BITS_PER_WORD - wordShift); + val[offset] = (pVal[0]) << (wordShift); + for (i = 0; i < offset; ++i) val[i] = 0; + Retval.clearUnusedBits(); + return Retval; + } + + INLINE ap_private rotl(uint32_t rotateAmt) const { + if (rotateAmt == 0) return ap_private(*this); + // Don't get too fancy, just use existing shift/or facilities + ap_private hi(*this); + ap_private lo(*this); + hi.shl(rotateAmt); + lo.lshr(BitWidth - rotateAmt); + return hi | lo; + } + + INLINE ap_private rotr(uint32_t rotateAmt) const { + if (rotateAmt == 0) return ap_private(*this); + // Don't get too fancy, just use existing shift/or facilities + ap_private hi(*this); + ap_private lo(*this); + lo.lshr(rotateAmt); + hi.shl(BitWidth - rotateAmt); + return hi | lo; + } + + /// Perform an unsigned divide operation on this ap_private by RHS. Both this + /// and + /// RHS are treated as unsigned quantities for purposes of this division. + /// @returns a new ap_private value containing the division result + /// @brief Unsigned division operation. + INLINE ap_private udiv(const ap_private& RHS) const { + // Get some facts about the LHS and RHS number of bits and words + uint32_t rhsBits = RHS.getActiveBits(); + uint32_t rhsWords = !rhsBits ? 0 : (whichWord(rhsBits - 1) + 1); + assert(rhsWords && "Divided by zero???"); + uint32_t lhsBits = this->getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : (whichWord(lhsBits - 1) + 1); + + // Deal with some degenerate cases + if (!lhsWords) + // 0 / X ===> 0 + return ap_private(0); + else if (lhsWords < rhsWords || this->ult(RHS)) { + // X / Y ===> 0, iff X < Y + return ap_private(0); + } else if (*this == RHS) { + // X / X ===> 1 + return ap_private(1); + } else if (lhsWords == 1 && rhsWords == 1) { + // All high words are zero, just use native divide + return ap_private(this->pVal[0] / RHS.get_pVal(0)); + } + + // We have to compute it the hard way. Invoke the Knuth divide algorithm. + ap_private Quotient(0); // to hold result. + ap_private_ops::divide(*this, lhsWords, RHS, rhsWords, &Quotient, + (ap_private*)0); + return Quotient; + } + + /// Signed divide this ap_private by ap_private RHS. + /// @brief Signed division function for ap_private. + INLINE ap_private sdiv(const ap_private& RHS) const { + if (isNegative()) + if (RHS.isNegative()) + return (-(*this)).udiv(-RHS); + else + return -((-(*this)).udiv(RHS)); + else if (RHS.isNegative()) + return -(this->udiv((ap_private)(-RHS))); + return this->udiv(RHS); + } + + /// Perform an unsigned remainder operation on this ap_private with RHS being + /// the + /// divisor. Both this and RHS are treated as unsigned quantities for purposes + /// of this operation. Note that this is a true remainder operation and not + /// a modulo operation because the sign follows the sign of the dividend + /// which is *this. + /// @returns a new ap_private value containing the remainder result + /// @brief Unsigned remainder operation. + INLINE ap_private urem(const ap_private& RHS) const { + // Get some facts about the LHS + uint32_t lhsBits = getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : (whichWord(lhsBits - 1) + 1); + + // Get some facts about the RHS + uint32_t rhsBits = RHS.getActiveBits(); + uint32_t rhsWords = !rhsBits ? 0 : (whichWord(rhsBits - 1) + 1); + assert(rhsWords && "Performing remainder operation by zero ???"); + + // Check the degenerate cases + if (lhsWords == 0) { + // 0 % Y ===> 0 + return ap_private(0); + } else if (lhsWords < rhsWords || this->ult(RHS)) { + // X % Y ===> X, iff X < Y + return *this; + } else if (*this == RHS) { + // X % X == 0; + return ap_private(0); + } else if (lhsWords == 1) { + // All high words are zero, just use native remainder + return ap_private(pVal[0] % RHS.get_pVal(0)); + } + + // We have to compute it the hard way. Invoke the Knuth divide algorithm. + ap_private Remainder(0); + ap_private_ops::divide(*this, lhsWords, RHS, rhsWords, (ap_private*)(0), + &Remainder); + return Remainder; + } + + INLINE ap_private urem(uint64_t RHS) const { + // Get some facts about the LHS + uint32_t lhsBits = getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : (whichWord(lhsBits - 1) + 1); + // Get some facts about the RHS + uint32_t rhsWords = 1; //! rhsBits ? 0 : (ap_private<_AP_W, + //! _AP_S>::whichWord(rhsBits - 1) + 1); + assert(rhsWords && "Performing remainder operation by zero ???"); + // Check the degenerate cases + if (lhsWords == 0) { + // 0 % Y ===> 0 + return ap_private(0); + } else if (lhsWords < rhsWords || this->ult(RHS)) { + // X % Y ===> X, iff X < Y + return *this; + } else if (*this == RHS) { + // X % X == 0; + return ap_private(0); + } else if (lhsWords == 1) { + // All high words are zero, just use native remainder + return ap_private(pVal[0] % RHS); + } + + // We have to compute it the hard way. Invoke the Knuth divide algorithm. + ap_private Remainder(0); + divide(*this, lhsWords, RHS, (ap_private*)(0), &Remainder); + return Remainder; + } + + /// Signed remainder operation on ap_private. + /// @brief Function for signed remainder operation. + INLINE ap_private srem(const ap_private& RHS) const { + if (isNegative()) { + ap_private lhs = -(*this); + if (RHS.isNegative()) { + ap_private rhs = -RHS; + return -(lhs.urem(rhs)); + } else + return -(lhs.urem(RHS)); + } else if (RHS.isNegative()) { + ap_private rhs = -RHS; + return this->urem(rhs); + } + return this->urem(RHS); + } + + /// Signed remainder operation on ap_private. + /// @brief Function for signed remainder operation. + INLINE ap_private srem(int64_t RHS) const { + if (isNegative()) + if (RHS < 0) + return -((-(*this)).urem(-RHS)); + else + return -((-(*this)).urem(RHS)); + else if (RHS < 0) + return this->urem(-RHS); + return this->urem(RHS); + } + + /// Compares this ap_private with RHS for the validity of the equality + /// relationship. + /// @returns true if *this == Val + /// @brief Equality comparison. + template + INLINE bool eq(const ap_private<_AP_W, _AP_S1>& RHS) const { + return (*this) == RHS; + } + + /// Compares this ap_private with RHS for the validity of the inequality + /// relationship. + /// @returns true if *this != Val + /// @brief Inequality comparison + template + INLINE bool ne(const ap_private<_AP_W, _AP_S1>& RHS) const { + return !((*this) == RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the less-than relationship. + /// @returns true if *this < RHS when both are considered unsigned. + /// @brief Unsigned less than comparison + template + INLINE bool ult(const ap_private<_AP_W, _AP_S1>& RHS) const { + // Get active bit length of both operands + uint32_t n1 = getActiveBits(); + uint32_t n2 = RHS.getActiveBits(); + + // If magnitude of LHS is less than RHS, return true. + if (n1 < n2) return true; + + // If magnitude of RHS is greather than LHS, return false. + if (n2 < n1) return false; + + // If they bot fit in a word, just compare the low order word + if (n1 <= APINT_BITS_PER_WORD && n2 <= APINT_BITS_PER_WORD) + return pVal[0] < RHS.get_pVal(0); + + // Otherwise, compare all words + uint32_t topWord = whichWord(AESL_std::max(n1, n2) - 1); + for (int i = topWord; i >= 0; --i) { + if (pVal[i] > RHS.get_pVal(i)) return false; + if (pVal[i] < RHS.get_pVal(i)) return true; + } + return false; + } + + INLINE bool ult(uint64_t RHS) const { + // Get active bit length of both operands + uint32_t n1 = getActiveBits(); + uint32_t n2 = + 64 - ap_private_ops::CountLeadingZeros_64(RHS); // RHS.getActiveBits(); + + // If magnitude of LHS is less than RHS, return true. + if (n1 < n2) return true; + + // If magnitude of RHS is greather than LHS, return false. + if (n2 < n1) return false; + + // If they bot fit in a word, just compare the low order word + if (n1 <= APINT_BITS_PER_WORD && n2 <= APINT_BITS_PER_WORD) + return pVal[0] < RHS; + assert(0); + } + + template + INLINE bool slt(const ap_private<_AP_W, _AP_S1>& RHS) const { + ap_private lhs(*this); + ap_private<_AP_W, _AP_S1> rhs(RHS); + bool lhsNeg = isNegative(); + bool rhsNeg = rhs.isNegative(); + if (lhsNeg) { + // Sign bit is set so perform two's complement to make it positive + lhs.flip(); + lhs++; + } + if (rhsNeg) { + // Sign bit is set so perform two's complement to make it positive + rhs.flip(); + rhs++; + } + + // Now we have unsigned values to compare so do the comparison if necessary + // based on the negativeness of the values. + if (lhsNeg) + if (rhsNeg) + return lhs.ugt(rhs); + else + return true; + else if (rhsNeg) + return false; + else + return lhs.ult(rhs); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered unsigned. + /// @brief Unsigned less or equal comparison + template + INLINE bool ule(const ap_private<_AP_W, _AP_S1>& RHS) const { + return ult(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered signed. + /// @brief Signed less or equal comparison + template + INLINE bool sle(const ap_private<_AP_W, _AP_S1>& RHS) const { + return slt(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered unsigned. + /// @brief Unsigned greather than comparison + template + INLINE bool ugt(const ap_private<_AP_W, _AP_S1>& RHS) const { + return !ult(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered signed. + /// @brief Signed greather than comparison + template + INLINE bool sgt(const ap_private<_AP_W, _AP_S1>& RHS) const { + return !slt(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered unsigned. + /// @brief Unsigned greater or equal comparison + template + INLINE bool uge(const ap_private<_AP_W, _AP_S>& RHS) const { + return !ult(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered signed. + /// @brief Signed greather or equal comparison + template + INLINE bool sge(const ap_private<_AP_W, _AP_S1>& RHS) const { + return !slt(RHS); + } + + // Sign extend to a new width. + template + INLINE void cpSext(const ap_private<_AP_W1, _AP_S1>& that) { + assert(_AP_W1 < BitWidth && "Invalid ap_private SignExtend request"); + assert(_AP_W1 <= MAX_INT_BITS && "Too many bits"); + // If the sign bit isn't set, this is the same as zext. + if (!that.isNegative()) { + cpZext(that); + return; + } + + // The sign bit is set. First, get some facts + enum { wordBits = _AP_W1 % APINT_BITS_PER_WORD }; + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + // Mask the high order word appropriately + if (_AP_N1 == _AP_N) { + enum { newWordBits = _AP_W % APINT_BITS_PER_WORD }; + // The extension is contained to the wordsBefore-1th word. + static const uint64_t mask = wordBits ? (~0ULL << (wordBits)) : 0ULL; + for (int i = 0; i < _AP_N; ++i) pVal[i] = that.get_pVal(i); + pVal[_AP_N - 1] |= mask; + return; + } + + enum { newWordBits = _AP_W % APINT_BITS_PER_WORD }; + // The extension is contained to the wordsBefore-1th word. + static const uint64_t mask = wordBits ? (~0ULL << (wordBits)) : 0ULL; + int i; + for (i = 0; i < _AP_N1; ++i) pVal[i] = that.get_pVal(i); + pVal[i - 1] |= mask; + for (; i < _AP_N - 1; i++) pVal[i] = ~0ULL; + pVal[i] = ~0ULL; + clearUnusedBits(); + return; + } + + // Zero extend to a new width. + template + INLINE void cpZext(const ap_private<_AP_W1, _AP_S1>& that) { + assert(_AP_W1 < BitWidth && "Invalid ap_private ZeroExtend request"); + assert(_AP_W1 <= MAX_INT_BITS && "Too many bits"); + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + int i = 0; + for (; i < _AP_N1; ++i) pVal[i] = that.get_pVal(i); + for (; i < _AP_N; ++i) pVal[i] = 0; + clearUnusedBits(); + } + + template + INLINE void cpZextOrTrunc(const ap_private<_AP_W1, _AP_S1>& that) { + if (BitWidth > _AP_W1) + cpZext(that); + else { + for (int i = 0; i < _AP_N; ++i) pVal[i] = that.get_pVal(i); + clearUnusedBits(); + } + } + + template + INLINE void cpSextOrTrunc(const ap_private<_AP_W1, _AP_S1>& that) { + if (BitWidth > _AP_W1) + cpSext(that); + else { + for (int i = 0; i < _AP_N; ++i) pVal[i] = that.get_pVal(i); + clearUnusedBits(); + } + } + + /// @} + /// @name Value Characterization Functions + /// @{ + + /// @returns the total number of bits. + INLINE uint32_t getBitWidth() const { return BitWidth; } + + /// Here one word's bitwidth equals to that of uint64_t. + /// @returns the number of words to hold the integer value of this ap_private. + /// @brief Get the number of words. + INLINE uint32_t getNumWords() const { + return (BitWidth + APINT_BITS_PER_WORD - 1) / APINT_BITS_PER_WORD; + } + + /// This function returns the number of active bits which is defined as the + /// bit width minus the number of leading zeros. This is used in several + /// computations to see how "wide" the value is. + /// @brief Compute the number of active bits in the value + INLINE uint32_t getActiveBits() const { + uint32_t bits = BitWidth - countLeadingZeros(); + return bits ? bits : 1; + } + + /// This method attempts to return the value of this ap_private as a zero + /// extended + /// uint64_t. The bitwidth must be <= 64 or the value must fit within a + /// uint64_t. Otherwise an assertion will result. + /// @brief Get zero extended value + INLINE uint64_t getZExtValue() const { + assert(getActiveBits() <= 64 && "Too many bits for uint64_t"); + return *pVal; + } + + /// This method attempts to return the value of this ap_private as a sign + /// extended + /// int64_t. The bit width must be <= 64 or the value must fit within an + /// int64_t. Otherwise an assertion will result. + /// @brief Get sign extended value + INLINE int64_t getSExtValue() const { + assert(getActiveBits() <= 64 && "Too many bits for int64_t"); + return int64_t(pVal[0]); + } + + /// This method determines how many bits are required to hold the ap_private + /// equivalent of the string given by \p str of length \p slen. + /// @brief Get bits required for string value. + INLINE static uint32_t getBitsNeeded(const char* str, uint32_t slen, + uint8_t radix) { + assert(str != 0 && "Invalid value string"); + assert(slen > 0 && "Invalid string length"); + + // Each computation below needs to know if its negative + uint32_t isNegative = str[0] == '-'; + if (isNegative) { + slen--; + str++; + } + // For radixes of power-of-two values, the bits required is accurately and + // easily computed + if (radix == 2) return slen + isNegative; + if (radix == 8) return slen * 3 + isNegative; + if (radix == 16) return slen * 4 + isNegative; + + // Otherwise it must be radix == 10, the hard case + assert(radix == 10 && "Invalid radix"); + + // Convert to the actual binary value. + // ap_private<_AP_W, _AP_S> tmp(sufficient, str, slen, radix); + + // Compute how many bits are required. + // return isNegative + tmp.logBase2() + 1; + return isNegative + slen * 4; + } + + /// countLeadingZeros - This function is an ap_private version of the + /// countLeadingZeros_{32,64} functions in MathExtras.h. It counts the number + /// of zeros from the most significant bit to the first one bit. + /// @returns BitWidth if the value is zero. + /// @returns the number of zeros from the most significant bit to the first + /// one bits. + INLINE uint32_t countLeadingZeros() const { + enum { + msw_bits = (BitWidth % APINT_BITS_PER_WORD) + ? (BitWidth % APINT_BITS_PER_WORD) + : APINT_BITS_PER_WORD, + excessBits = APINT_BITS_PER_WORD - msw_bits + }; + uint32_t Count = ap_private_ops::CountLeadingZeros_64(pVal[_AP_N - 1]); + if (Count >= excessBits) Count -= excessBits; + if (!pVal[_AP_N - 1]) { + for (int i = _AP_N - 1; i; --i) { + if (!pVal[i - 1]) + Count += APINT_BITS_PER_WORD; + else { + Count += ap_private_ops::CountLeadingZeros_64(pVal[i - 1]); + break; + } + } + } + return Count; + } + + /// countLeadingOnes - This function counts the number of contiguous 1 bits + /// in the high order bits. The count stops when the first 0 bit is reached. + /// @returns 0 if the high order bit is not set + /// @returns the number of 1 bits from the most significant to the least + /// @brief Count the number of leading one bits. + INLINE uint32_t countLeadingOnes() const { + if (isSingleWord()) + return countLeadingOnes_64(get_VAL(), APINT_BITS_PER_WORD - BitWidth); + + uint32_t highWordBits = BitWidth % APINT_BITS_PER_WORD; + uint32_t shift = + (highWordBits == 0 ? 0 : APINT_BITS_PER_WORD - highWordBits); + int i = _AP_N - 1; + uint32_t Count = countLeadingOnes_64(get_pVal(i), shift); + if (Count == highWordBits) { + for (i--; i >= 0; --i) { + if (get_pVal(i) == ~0ULL) + Count += APINT_BITS_PER_WORD; + else { + Count += countLeadingOnes_64(get_pVal(i), 0); + break; + } + } + } + return Count; + } + + /// countTrailingZeros - This function is an ap_private version of the + /// countTrailingZoers_{32,64} functions in MathExtras.h. It counts + /// the number of zeros from the least significant bit to the first set bit. + /// @returns BitWidth if the value is zero. + /// @returns the number of zeros from the least significant bit to the first + /// one bit. + /// @brief Count the number of trailing zero bits. + INLINE uint32_t countTrailingZeros() const { + uint32_t Count = 0; + uint32_t i = 0; + for (; i < _AP_N && get_pVal(i) == 0; ++i) Count += APINT_BITS_PER_WORD; + if (i < _AP_N) Count += ap_private_ops::CountTrailingZeros_64(get_pVal(i)); + return AESL_std::min(Count, BitWidth); + } + /// countPopulation - This function is an ap_private version of the + /// countPopulation_{32,64} functions in MathExtras.h. It counts the number + /// of 1 bits in the ap_private value. + /// @returns 0 if the value is zero. + /// @returns the number of set bits. + /// @brief Count the number of bits set. + INLINE uint32_t countPopulation() const { + uint32_t Count = 0; + for (int i = 0; i < _AP_N - 1; ++i) + Count += ap_private_ops::CountPopulation_64(pVal[i]); + Count += ap_private_ops::CountPopulation_64(pVal[_AP_N - 1] & mask); + return Count; + } + + /// @} + /// @name Conversion Functions + /// @ + + /// This is used internally to convert an ap_private to a string. + /// @brief Converts an ap_private to a std::string + INLINE std::string toString(uint8_t radix, bool wantSigned) const; + + /// Considers the ap_private to be unsigned and converts it into a string in + /// the + /// radix given. The radix can be 2, 8, 10 or 16. + /// @returns a character interpretation of the ap_private + /// @brief Convert unsigned ap_private to string representation. + INLINE std::string toStringUnsigned(uint8_t radix = 10) const { + return toString(radix, false); + } + + /// Considers the ap_private to be unsigned and converts it into a string in + /// the + /// radix given. The radix can be 2, 8, 10 or 16. + /// @returns a character interpretation of the ap_private + /// @brief Convert unsigned ap_private to string representation. + INLINE std::string toStringSigned(uint8_t radix = 10) const { + return toString(radix, true); + } + + /// @brief Converts this ap_private to a double value. + INLINE double roundToDouble(bool isSigned) const { + // Handle the simple case where the value is contained in one uint64_t. + if (isSingleWord() || getActiveBits() <= APINT_BITS_PER_WORD) { + uint64_t val = pVal[0]; + if (isSigned) { + int64_t sext = ((int64_t(val)) << (64 - BitWidth)) >> (64 - BitWidth); + return double(sext); + } else + return double(val); + } + + // Determine if the value is negative. + bool isNeg = isSigned ? (*this)[BitWidth - 1] : false; + + // Construct the absolute value if we're negative. + ap_private<_AP_W, _AP_S> Tmp(isNeg ? -(*this) : (*this)); + + // Figure out how many bits we're using. + uint32_t n = Tmp.getActiveBits(); + + // The exponent (without bias normalization) is just the number of bits + // we are using. Note that the sign bit is gone since we constructed the + // absolute value. + uint64_t exp = n; + + // Return infinity for exponent overflow + if (exp > 1023) { + if (!isSigned || !isNeg) + return std::numeric_limits::infinity(); + else + return -std::numeric_limits::infinity(); + } + exp += 1023; // Increment for 1023 bias + + // Number of bits in mantissa is 52. To obtain the mantissa value, we must + // extract the high 52 bits from the correct words in pVal. + uint64_t mantissa; + unsigned hiWord = whichWord(n - 1); + if (hiWord == 0) { + mantissa = Tmp.get_pVal(0); + if (n > 52) + (mantissa) >>= (n - 52); // shift down, we want the top 52 bits. + } else { + assert(hiWord > 0 && "High word is negative?"); + uint64_t hibits = (Tmp.get_pVal(hiWord)) + << (52 - n % APINT_BITS_PER_WORD); + uint64_t lobits = + (Tmp.get_pVal(hiWord - 1)) >> (11 + n % APINT_BITS_PER_WORD); + mantissa = hibits | lobits; + } + + // The leading bit of mantissa is implicit, so get rid of it. + uint64_t sign = isNeg ? (1ULL << (APINT_BITS_PER_WORD - 1)) : 0; + union { + double __D; + uint64_t __I; + } __T; + __T.__I = sign | ((exp) << 52) | mantissa; + return __T.__D; + } + + /// @brief Converts this unsigned ap_private to a double value. + INLINE double roundToDouble() const { return roundToDouble(false); } + + /// @brief Converts this signed ap_private to a double value. + INLINE double signedRoundToDouble() const { return roundToDouble(true); } + + /// The conversion does not do a translation from integer to double, it just + /// re-interprets the bits as a double. Note that it is valid to do this on + /// any bit width. Exactly 64 bits will be translated. + /// @brief Converts ap_private bits to a double + INLINE double bitsToDouble() const { + union { + uint64_t __I; + double __D; + } __T; + __T.__I = pVal[0]; + return __T.__D; + } + + /// The conversion does not do a translation from integer to float, it just + /// re-interprets the bits as a float. Note that it is valid to do this on + /// any bit width. Exactly 32 bits will be translated. + /// @brief Converts ap_private bits to a double + INLINE float bitsToFloat() const { + union { + uint32_t __I; + float __F; + } __T; + __T.__I = uint32_t(pVal[0]); + return __T.__F; + } + + /// The conversion does not do a translation from double to integer, it just + /// re-interprets the bits of the double. Note that it is valid to do this on + /// any bit width but bits from V may get truncated. + /// @brief Converts a double to ap_private bits. + INLINE ap_private& doubleToBits(double __V) { + union { + uint64_t __I; + double __D; + } __T; + __T.__D = __V; + pVal[0] = __T.__I; + return *this; + } + + /// The conversion does not do a translation from float to integer, it just + /// re-interprets the bits of the float. Note that it is valid to do this on + /// any bit width but bits from V may get truncated. + /// @brief Converts a float to ap_private bits. + INLINE ap_private& floatToBits(float __V) { + union { + uint32_t __I; + float __F; + } __T; + __T.__F = __V; + pVal[0] = __T.__I; + } + + // Reduce operation + //----------------------------------------------------------- + INLINE bool and_reduce() const { return isMaxValue(); } + + INLINE bool nand_reduce() const { return isMinValue(); } + + INLINE bool or_reduce() const { return (bool)countPopulation(); } + + INLINE bool nor_reduce() const { return countPopulation() == 0; } + + INLINE bool xor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? true : false; + } + + INLINE bool xnor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? false : true; + } + INLINE std::string to_string(uint8_t radix = 16, bool sign = false) const { + return toString(radix, radix == 10 ? _AP_S : sign); + } +}; // End of class ap_private <_AP_W, _AP_S, false> + +namespace ap_private_ops { + +enum { APINT_BITS_PER_WORD = 64 }; +template +INLINE bool operator==(uint64_t V1, const ap_private<_AP_W, _AP_S>& V2) { + return V2 == V1; +} + +template +INLINE bool operator!=(uint64_t V1, const ap_private<_AP_W, _AP_S>& V2) { + return V2 != V1; +} + +template +INLINE bool get(const ap_private<_AP_W, _AP_S>& a) { + static const uint64_t mask = 1ULL << (index & 0x3f); + return ((mask & a.get_pVal((index) >> 6)) != 0); +} + +template +INLINE void set(ap_private<_AP_W, _AP_S>& a, + const ap_private& mark1 = 0, + const ap_private& mark2 = 0) { + enum { + APINT_BITS_PER_WORD = 64, + lsb_word = lsb_index / APINT_BITS_PER_WORD, + msb_word = msb_index / APINT_BITS_PER_WORD, + msb = msb_index % APINT_BITS_PER_WORD, + lsb = lsb_index % APINT_BITS_PER_WORD + }; + if (msb_word == lsb_word) { + const uint64_t mask = ~0ULL >> + (lsb) << (APINT_BITS_PER_WORD - msb + lsb - 1) >> + (APINT_BITS_PER_WORD - msb - 1); + // a.set_pVal(msb_word, a.get_pVal(msb_word) | mask); + a.get_pVal(msb_word) |= mask; + } else { + const uint64_t lsb_mask = ~0ULL >> (lsb) << (lsb); + const uint64_t msb_mask = ~0ULL << (APINT_BITS_PER_WORD - msb - 1) >> + (APINT_BITS_PER_WORD - msb - 1); + // a.set_pVal(lsb_word, a.get_pVal(lsb_word) | lsb_mask); + a.get_pVal(lsb_word) |= lsb_mask; + for (int i = lsb_word + 1; i < msb_word; i++) { + a.set_pVal(i, ~0ULL); + // a.get_pVal(i)=0; + } + // a.set_pVal(msb_word, a.get_pVal(msb_word) | msb_mask); + + a.get_pVal(msb_word) |= msb_mask; + } + a.clearUnusedBits(); +} + +template +INLINE void clear(ap_private<_AP_W, _AP_S>& a, + const ap_private& mark1 = 0, + const ap_private& mark2 = 0) { + enum { + APINT_BITS_PER_WORD = 64, + lsb_word = lsb_index / APINT_BITS_PER_WORD, + msb_word = msb_index / APINT_BITS_PER_WORD, + msb = msb_index % APINT_BITS_PER_WORD, + lsb = lsb_index % APINT_BITS_PER_WORD + }; + if (msb_word == lsb_word) { + const uint64_t mask = + ~(~0ULL >> (lsb) << (APINT_BITS_PER_WORD - msb + lsb - 1) >> + (APINT_BITS_PER_WORD - msb - 1)); + // a.set_pVal(msb_word, a.get_pVal(msb_word) & mask); + a.get_pVal(msb_word) &= mask; + } else { + const uint64_t lsb_mask = ~(~0ULL >> (lsb) << (lsb)); + const uint64_t msb_mask = ~(~0ULL << (APINT_BITS_PER_WORD - msb - 1) >> + (APINT_BITS_PER_WORD - msb - 1)); + // a.set_pVal(lsb_word, a.get_pVal(lsb_word) & lsb_mask); + a.get_pVal(lsb_word) &= lsb_mask; + for (int i = lsb_word + 1; i < msb_word; i++) { + // a.set_pVal(i, 0); + a.get_pVal(i) = 0; + } + // a.set_pVal(msb_word, a.get_pVal(msb_word) & msb_mask); + a.get_pVal(msb_word) &= msb_mask; + } + a.clearUnusedBits(); +} + +template +INLINE void set(ap_private<_AP_W, _AP_S>& a, + const ap_private& mark = 0) { + enum { APINT_BITS_PER_WORD = 64, word = index / APINT_BITS_PER_WORD }; + static const uint64_t mask = 1ULL << (index % APINT_BITS_PER_WORD); + // a.set_pVal(word, a.get_pVal(word) | mask); + a.get_pVal(word) |= mask; + a.clearUnusedBits(); +} + +template +INLINE void clear(ap_private<_AP_W, _AP_S>& a, + const ap_private& mark = 0) { + enum { APINT_BITS_PER_WORD = 64, word = index / APINT_BITS_PER_WORD }; + static const uint64_t mask = ~(1ULL << (index % APINT_BITS_PER_WORD)); + // a.set_pVal(word, a.get_pVal(word) & mask); + a.get_pVal(word) &= mask; + a.clearUnusedBits(); +} + +} // End of ap_private_ops namespace + +template +INLINE std::string ap_private<_AP_W, _AP_S, false>::toString( + uint8_t radix, bool wantSigned) const { + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + static const char* digits[] = {"0", "1", "2", "3", "4", "5", "6", "7", + "8", "9", "A", "B", "C", "D", "E", "F"}; + std::string result; + + if (radix != 10) { + // For the 2, 8 and 16 bit cases, we can just shift instead of divide + // because the number of bits per digit (1,3 and 4 respectively) divides + // equaly. We just shift until there value is zero. + + // First, check for a zero value and just short circuit the logic below. + if (*this == (uint64_t)(0)) + result = "0"; + else { + ap_private<_AP_W, false> tmp(*this); + size_t insert_at = 0; + bool leading_zero = true; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + tmp.clearUnusedBitsToZero(); + result = "-"; + insert_at = 1; + leading_zero = false; + } + switch (radix) { + case 2: + result += "0b"; + break; + case 8: + result += "0o"; + break; + case 16: + result += "0x"; + break; + default: + assert("invalid radix" && 0); + } + insert_at += 2; + // Just shift tmp right for each digit width until it becomes zero + uint32_t shift = (radix == 16 ? 4 : (radix == 8 ? 3 : 1)); + uint64_t mask = radix - 1; + ap_private<_AP_W, false> zero(0); + unsigned bits = 0; + while (tmp.ne(zero)) { + uint64_t digit = tmp.get_VAL() & mask; + result.insert(insert_at, digits[digit]); + tmp = tmp.lshr(shift); + ++bits; + } + bits *= shift; + if (bits < _AP_W && leading_zero) result.insert(insert_at, digits[0]); + } + return result; + } + + ap_private<_AP_W, false> tmp(*this); + ap_private<_AP_W, false> divisor(radix); + ap_private<_AP_W, false> zero(0); + size_t insert_at = 0; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + tmp.clearUnusedBitsToZero(); + result = "-"; + insert_at = 1; + } + if (tmp == ap_private<_AP_W, false>(0)) + result = "0"; + else + while (tmp.ne(zero)) { + ap_private<_AP_W, false> APdigit(0); + ap_private<_AP_W, false> tmp2(0); + ap_private_ops::divide(tmp, tmp.getNumWords(), divisor, + divisor.getNumWords(), &tmp2, &APdigit); + uint64_t digit = APdigit.getZExtValue(); + assert(digit < radix && "divide failed"); + result.insert(insert_at, digits[digit]); + tmp = tmp2; + } + + return result; +} // End of ap_private<_AP_W, _AP_S, false>::toString() + +template +std::ostream &operator<<(std::ostream &os, const ap_private<_AP_W, _AP_S> &x) { + std::ios_base::fmtflags ff = std::cout.flags(); + if (ff & std::cout.hex) { + os << x.toString(16, false); // don't print sign + } else if (ff & std::cout.oct) { + os << x.toString(8, false); // don't print sign + } else { + os << x.toString(10, _AP_S); + } + return os; +} + +// ------------------------------------------------------------ // +// XXX moved here from ap_int_sim.h XXX // +// ------------------------------------------------------------ // + +/// Concatination reference. +/// Proxy class which allows concatination to be used as rvalue(for reading) and +/// lvalue(for writing) +// ---------------------------------------------------------------- +// template +// struct ap_concat_ref { +//#ifdef _MSC_VER +//#pragma warning(disable : 4521 4522) +//#endif +// enum { +// _AP_WR = _AP_W1 + _AP_W2, +// }; +// _AP_T1& mbv1; +// _AP_T2& mbv2; +// +// INLINE ap_concat_ref(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& +// ref) +// : mbv1(ref.mbv1), mbv2(ref.mbv2) {} +// +// INLINE ap_concat_ref(_AP_T1& bv1, _AP_T2& bv2) : mbv1(bv1), mbv2(bv2) {} +// +// template +// INLINE ap_concat_ref& operator=(const ap_private<_AP_W3, _AP_S3>& val) { +// ap_private<_AP_W1 + _AP_W2, false> vval(val); +// int W_ref1 = mbv1.length(); +// int W_ref2 = mbv2.length(); +// ap_private<_AP_W1, false> mask1(-1); +// mask1 >>= _AP_W1 - W_ref1; +// ap_private<_AP_W2, false> mask2(-1); +// mask2 >>= _AP_W2 - W_ref2; +// mbv1.set(ap_private<_AP_W1, false>((vval >> W_ref2) & mask1)); +// mbv2.set(ap_private<_AP_W2, false>(vval & mask2)); +// return *this; +// } +// +// INLINE ap_concat_ref& operator=(unsigned long long val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4>& val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// INLINE ap_concat_ref& operator=( +// const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=(const _private_bit_ref<_AP_W3, _AP_S3>& +// val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=(const _private_range_ref<_AP_W3, _AP_S3>& +// val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) +// { +// return operator=((const ap_private<_AP_W3, false>)(val)); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const ap_fixed_base<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& +// val) { +// return operator=(val.to_ap_private()); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) { +// return operator=((unsigned long long)(bool)(val)); +// } +// +// INLINE operator ap_private<_AP_WR, false>() const { return get(); } +// +// INLINE operator unsigned long long() const { return get().to_uint64(); } +// +// template +// INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// _private_range_ref<_AP_W3, _AP_S3> > +// operator,(const _private_range_ref<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// _private_range_ref<_AP_W3, _AP_S3> >( +// *this, const_cast<_private_range_ref<_AP_W3, _AP_S3>&>(a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_private<_AP_W3, _AP_S3> +// > +// operator,(ap_private<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// ap_private<_AP_W3, _AP_S3> >(*this, a2); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_private<_AP_W3, _AP_S3> +// > +// operator,(const ap_private<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// ap_private<_AP_W3, _AP_S3> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_WR, ap_concat_ref, 1, _private_bit_ref<_AP_W3, +// _AP_S3> > +// operator,(const _private_bit_ref<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, 1, _private_bit_ref<_AP_W3, +// _AP_S3> >( +// *this, const_cast<_private_bit_ref<_AP_W3, _AP_S3>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, +// ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> > +// operator,(const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, +// ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_WR, ap_concat_ref, _AP_W3, +// af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> > +// operator,( +// const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> &a2) +// { +// return ap_concat_ref< +// _AP_WR, ap_concat_ref, _AP_W3, +// af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( +// *this, +// const_cast< +// af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, +// _AP_N3>&>(a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_WR, ap_concat_ref, 1, +// af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> +// > +// operator,(const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, +// _AP_N3> +// &a2) { +// return ap_concat_ref< +// _AP_WR, ap_concat_ref, 1, +// af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( +// *this, +// const_cast&>( +// a2)); +// } +// +// template +// INLINE ap_private operator&( +// const ap_private<_AP_W3, _AP_S3>& a2) { +// return get() & a2; +// } +// +// template +// INLINE ap_private operator|( +// const ap_private<_AP_W3, _AP_S3>& a2) { +// return get() | a2; +// } +// +// template +// INLINE ap_private operator^( +// const ap_private<_AP_W3, _AP_S3>& a2) { +// return ap_private(get() ^ a2); +// } +// +// INLINE const ap_private<_AP_WR, false> get() const { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal = +// ap_private<_AP_W1 + _AP_W2, false>(mbv1.get()); +// ap_private<_AP_W1 + _AP_W2, false> tmpVal2 = +// ap_private<_AP_W1 + _AP_W2, false>(mbv2.get()); +// int W_ref2 = mbv2.length(); +// tmpVal <<= W_ref2; +// tmpVal |= tmpVal2; +// return tmpVal; +// } +// +// INLINE const ap_private<_AP_WR, false> get() { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal = +// ap_private<_AP_W1 + _AP_W2, false>(mbv1.get()); +// ap_private<_AP_W1 + _AP_W2, false> tmpVal2 = +// ap_private<_AP_W1 + _AP_W2, false>(mbv2.get()); +// int W_ref2 = mbv2.length(); +// tmpVal <<= W_ref2; +// tmpVal |= tmpVal2; +// return tmpVal; +// } +// +// template +// INLINE void set(const ap_private<_AP_W3, false>& val) { +// ap_private<_AP_W1 + _AP_W2, false> vval(val); +// int W_ref1 = mbv1.length(); +// int W_ref2 = mbv2.length(); +// ap_private<_AP_W1, false> mask1(-1); +// mask1 >>= _AP_W1 - W_ref1; +// ap_private<_AP_W2, false> mask2(-1); +// mask2 >>= _AP_W2 - W_ref2; +// mbv1.set(ap_private<_AP_W1, false>((vval >> W_ref2) & mask1)); +// mbv2.set(ap_private<_AP_W2, false>(vval & mask2)); +// } +// +// INLINE int length() const { return mbv1.length() + mbv2.length(); } +// +// INLINE std::string to_string(uint8_t radix = 2) const { +// return get().to_string(radix); +// } +//}; // struct ap_concat_ref. + +/// Range(slice) reference +/// Proxy class, which allows part selection to be used as rvalue(for reading) +/// and lvalue(for writing) +//------------------------------------------------------------ +template +struct _private_range_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + ap_private<_AP_W, _AP_S>& d_bv; + int l_index; + int h_index; + + public: + /// copy ctor. + INLINE _private_range_ref(const _private_range_ref<_AP_W, _AP_S>& ref) + : d_bv(ref.d_bv), l_index(ref.l_index), h_index(ref.h_index) {} + + /// direct ctor. + INLINE _private_range_ref(ap_private<_AP_W, _AP_S>* bv, int h, int l) + : d_bv(*bv), l_index(l), h_index(h) { + _AP_WARNING(h < 0 || l < 0, + "Higher bound (%d) and lower bound (%d) cannot be " + "negative.", + h, l); + _AP_WARNING(h >= _AP_W || l >= _AP_W, + "Higher bound (%d) or lower bound (%d) out of range (%d).", h, l, + _AP_W); + } + + /// compound or assignment. + template + INLINE _private_range_ref<_AP_W, _AP_S>& operator|=( + const _private_range_ref<_AP_W2, _AP_S2>& ref) { + _AP_WARNING((h_index - l_index) != (ref.h_index - ref.l_index), + "Bitsize mismach for ap_private<>.range() &= " + "ap_private<>.range()."); + this->d_bv |= ref.d_bv; + return *this; + } + + /// compound or assignment with root type. + template + INLINE _private_range_ref<_AP_W, _AP_S>& operator|=( + const _AP_ROOT_TYPE<_AP_W2, _AP_S2>& ref) { + _AP_WARNING((h_index - l_index + 1) != _AP_W2, + "Bitsize mismach for ap_private<>.range() |= _AP_ROOT_TYPE<>."); + this->d_bv |= ref.V; + return *this; + } + + /// compound and assignment. + template + INLINE _private_range_ref<_AP_W, _AP_S>& operator&=( + const _private_range_ref<_AP_W2, _AP_S2>& ref) { + _AP_WARNING((h_index - l_index) != (ref.h_index - ref.l_index), + "Bitsize mismach for ap_private<>.range() &= " + "ap_private<>.range()."); + this->d_bv &= ref.d_bv; + return *this; + }; + + /// compound and assignment with root type. + template + INLINE _private_range_ref<_AP_W, _AP_S>& operator&=( + const _AP_ROOT_TYPE<_AP_W2, _AP_S2>& ref) { + _AP_WARNING((h_index - l_index + 1) != _AP_W2, + "Bitsize mismach for ap_private<>.range() &= _AP_ROOT_TYPE<>."); + this->d_bv &= ref.V; + return *this; + } + + /// compound xor assignment. + template + INLINE _private_range_ref<_AP_W, _AP_S>& operator^=( + const _private_range_ref<_AP_W2, _AP_S2>& ref) { + _AP_WARNING((h_index - l_index) != (ref.h_index - ref.l_index), + "Bitsize mismach for ap_private<>.range() ^= " + "ap_private<>.range()."); + this->d_bv ^= ref.d_bv; + return *this; + }; + + /// compound xor assignment with root type. + template + INLINE _private_range_ref<_AP_W, _AP_S>& operator^=( + const _AP_ROOT_TYPE<_AP_W2, _AP_S2>& ref) { + _AP_WARNING((h_index - l_index + 1) != _AP_W2, + "Bitsize mismach for ap_private<>.range() ^= _AP_ROOT_TYPE<>."); + this->d_bv ^= ref.V; + return *this; + } + + /// @name convertors. + // @{ + INLINE operator ap_private<_AP_W, false>() const { + ap_private<_AP_W, false> val(0); + if (h_index >= l_index) { + if (_AP_W > 64) { + val = d_bv; + ap_private<_AP_W, false> mask(-1); + mask >>= _AP_W - (h_index - l_index + 1); + val >>= l_index; + val &= mask; + } else { + const static uint64_t mask = (~0ULL >> (64 > _AP_W ? (64 - _AP_W) : 0)); + val = (d_bv >> l_index) & (mask >> (_AP_W - (h_index - l_index + 1))); + } + } else { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + if ((d_bv)[j]) val.set(i); + } + return val; + } + + INLINE operator unsigned long long() const { return to_uint64(); } + // @} + + template + INLINE _private_range_ref& operator=(const ap_private<_AP_W2, _AP_S2>& val) { + ap_private<_AP_W, false> vval = ap_private<_AP_W, false>(val); + if (l_index > h_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + (vval)[i] ? d_bv.set(j) : d_bv.clear(j); + } else { + if (_AP_W > 64) { + ap_private<_AP_W, false> mask(-1); + if (l_index > 0) { + mask <<= l_index; + vval <<= l_index; + } + if (h_index < _AP_W - 1) { + ap_private<_AP_W, false> mask2(-1); + mask2 >>= _AP_W - h_index - 1; + mask &= mask2; + vval &= mask2; + } + mask.flip(); + d_bv &= mask; + d_bv |= vval; + } else { + unsigned shift = 64 - _AP_W; + uint64_t mask = ~0ULL >> (shift); + if (l_index > 0) { + vval = mask & vval << l_index; + mask = mask & mask << l_index; + } + if (h_index < _AP_W - 1) { + uint64_t mask2 = mask; + mask2 >>= (_AP_W - h_index - 1); + mask &= mask2; + vval &= mask2; + } + mask = ~mask; + d_bv &= mask; + d_bv |= vval; + } + } + return *this; + } // operator=(const ap_private<>&) + + INLINE _private_range_ref& operator=(unsigned long long val) { + const ap_private<_AP_W, _AP_S> vval = val; + return operator=(vval); + } + + template + INLINE _private_range_ref& operator=( + const _private_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=((unsigned long long)(bool)val); + } + + template + INLINE _private_range_ref& operator=( + const _private_range_ref<_AP_W2, _AP_S2>& val) { + const ap_private<_AP_W, false> tmpVal(val); + return operator=(tmpVal); + } + +// template +// INLINE _private_range_ref& operator=( +// const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4>& val) { +// const ap_private<_AP_W, false> tmpVal(val); +// return operator=(tmpVal); +// } + + // TODO from ap_int_base, ap_bit_ref and ap_range_ref. + + template + INLINE _private_range_ref& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=(val.to_ap_int_base().V); + } + + template + INLINE _private_range_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=(val.operator ap_int_base<_AP_W2, false>().V); + } + + template + INLINE _private_range_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((unsigned long long)(bool)val); + } + +// template +// INLINE ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> > +// operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, +// _private_range_ref<_AP_W2, _AP_S2> >( +// *this, const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, +// ap_private<_AP_W2, _AP_S2> > +// operator,(ap_private<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, +// ap_private<_AP_W2, _AP_S2> >(*this, a2); +// } +// +// INLINE +// ap_concat_ref<_AP_W, _private_range_ref, _AP_W, ap_private<_AP_W, _AP_S> > +// operator,(ap_private<_AP_W, _AP_S>& a2) { +// return ap_concat_ref<_AP_W, _private_range_ref, _AP_W, +// ap_private<_AP_W, _AP_S> >(*this, a2); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, _private_range_ref, 1, +// _private_bit_ref<_AP_W2, _AP_S2> > +// operator,(const _private_bit_ref<_AP_W2, _AP_S2> &a2) { +// return ap_concat_ref<_AP_W, _private_range_ref, 1, +// _private_bit_ref<_AP_W2, _AP_S2> >( +// *this, const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_W, _private_range_ref, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > +// operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { +// return ap_concat_ref<_AP_W, _private_range_ref, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_W, _private_range_ref, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,( +// const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { +// return ap_concat_ref< +// _AP_W, _private_range_ref, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// *this, +// const_cast< +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_W, _private_range_ref, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> +// &a2) { +// return ap_concat_ref< +// _AP_W, _private_range_ref, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// *this, +// const_cast&>( +// a2)); +// } + + template + INLINE bool operator==(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs == rhs; + } + + template + INLINE bool operator!=(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs != rhs; + } + + template + INLINE bool operator>(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs > rhs; + } + + template + INLINE bool operator>=(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs >= rhs; + } + + template + INLINE bool operator<(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs < rhs; + } + + template + INLINE bool operator<=(const _private_range_ref<_AP_W2, _AP_S2>& op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs <= rhs; + } + + template + INLINE void set(const ap_private<_AP_W2, false>& val) { + ap_private<_AP_W, _AP_S> vval = val; + if (l_index > h_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + (vval)[i] ? d_bv.set(j) : d_bv.clear(j); + } else { + if (_AP_W > 64) { + ap_private<_AP_W, _AP_S> mask(-1); + if (l_index > 0) { + ap_private<_AP_W, false> mask1(-1); + mask1 >>= _AP_W - l_index; + mask1.flip(); + mask = mask1; + // vval&=mask1; + vval <<= l_index; + } + if (h_index < _AP_W - 1) { + ap_private<_AP_W, false> mask2(-1); + mask2 <<= h_index + 1; + mask2.flip(); + mask &= mask2; + vval &= mask2; + } + mask.flip(); + d_bv &= mask; + d_bv |= vval; + } else { + uint64_t mask = ~0ULL >> (64 - _AP_W); + if (l_index > 0) { + uint64_t mask1 = mask; + mask1 = mask & (mask1 >> (_AP_W - l_index)); + vval = mask & (vval << l_index); + mask = ~mask1 & mask; + // vval&=mask1; + } + if (h_index < _AP_W - 1) { + uint64_t mask2 = ~0ULL >> (64 - _AP_W); + mask2 = mask & (mask2 << (h_index + 1)); + mask &= ~mask2; + vval &= ~mask2; + } + d_bv &= (~mask & (~0ULL >> (64 - _AP_W))); + d_bv |= vval; + } + } + } + + INLINE ap_private<_AP_W, false> get() const { + ap_private<_AP_W, false> val(0); + if (h_index < l_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + if ((d_bv)[j]) val.set(i); + } else { + val = d_bv; + val >>= l_index; + if (h_index < _AP_W - 1) { + if (_AP_W <= 64) { + const static uint64_t mask = + (~0ULL >> (64 > _AP_W ? (64 - _AP_W) : 0)); + val &= (mask >> (_AP_W - (h_index - l_index + 1))); + } else { + ap_private<_AP_W, false> mask(-1); + mask >>= _AP_W - (h_index - l_index + 1); + val &= mask; + } + } + } + return val; + } + + INLINE ap_private<_AP_W, false> get() { + ap_private<_AP_W, false> val(0); + if (h_index < l_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + if ((d_bv)[j]) val.set(i); + } else { + val = d_bv; + val >>= l_index; + if (h_index < _AP_W - 1) { + if (_AP_W <= 64) { + static const uint64_t mask = ~0ULL >> (64 > _AP_W ? (64 - _AP_W) : 0); + return val &= ((mask) >> (_AP_W - (h_index - l_index + 1))); + } else { + ap_private<_AP_W, false> mask(-1); + mask >>= _AP_W - (h_index - l_index + 1); + val &= mask; + } + } + } + return val; + } + + INLINE int length() const { + return h_index >= l_index ? h_index - l_index + 1 : l_index - h_index + 1; + } + + INLINE int to_int() const { + ap_private<_AP_W, false> val = get(); + return val.to_int(); + } + + INLINE unsigned int to_uint() const { + ap_private<_AP_W, false> val = get(); + return val.to_uint(); + } + + INLINE long to_long() const { + ap_private<_AP_W, false> val = get(); + return val.to_long(); + } + + INLINE unsigned long to_ulong() const { + ap_private<_AP_W, false> val = get(); + return val.to_ulong(); + } + + INLINE ap_slong to_int64() const { + ap_private<_AP_W, false> val = get(); + return val.to_int64(); + } + + INLINE ap_ulong to_uint64() const { + ap_private<_AP_W, false> val = get(); + return val.to_uint64(); + } + + INLINE std::string to_string(uint8_t radix = 2) const { + return get().to_string(radix); + } + + INLINE bool and_reduce() { + bool ret = true; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) ret &= d_bv[i]; + return ret; + } + + INLINE bool or_reduce() { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) ret |= d_bv[i]; + return ret; + } + + INLINE bool xor_reduce() { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) ret ^= d_bv[i]; + return ret; + } +}; // struct _private_range_ref. + +/// Bit reference +/// Proxy class, which allows bit selection to be used as rvalue(for reading) +/// and lvalue(for writing) +//-------------------------------------------------------------- +template +struct _private_bit_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + ap_private<_AP_W, _AP_S>& d_bv; + int d_index; + + public: + // copy ctor. + INLINE _private_bit_ref(const _private_bit_ref<_AP_W, _AP_S>& ref) + : d_bv(ref.d_bv), d_index(ref.d_index) {} + + // director ctor. + INLINE _private_bit_ref(ap_private<_AP_W, _AP_S>& bv, int index = 0) + : d_bv(bv), d_index(index) { + _AP_WARNING(d_index < 0, "Index of bit vector (%d) cannot be negative.\n", + d_index); + _AP_WARNING(d_index >= _AP_W, + "Index of bit vector (%d) out of range (%d).\n", d_index, _AP_W); + } + + INLINE operator bool() const { return d_bv.get_bit(d_index); } + + INLINE bool to_bool() const { return operator bool(); } + + template + INLINE _private_bit_ref& operator=(const T& val) { + if (!!val) + d_bv.set(d_index); + else + d_bv.clear(d_index); + return *this; + } + +// template +// INLINE ap_concat_ref<1, _private_bit_ref, _AP_W2, ap_private<_AP_W2, +// _AP_S2> > +// operator,(ap_private<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<1, _private_bit_ref, _AP_W2, ap_private<_AP_W2, +// _AP_S2> >( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), a2); +// } +// +// template +// INLINE ap_concat_ref<1, _private_bit_ref, _AP_W2, +// _private_range_ref<_AP_W2, +// _AP_S2> > +// operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<1, _private_bit_ref, _AP_W2, +// _private_range_ref<_AP_W2, +// _AP_S2> >( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), +// const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<1, _private_bit_ref, 1, _private_bit_ref<_AP_W2, +// _AP_S2> > operator,( +// const _private_bit_ref<_AP_W2, _AP_S2> &a2) const { +// return ap_concat_ref<1, _private_bit_ref, 1, +// _private_bit_ref<_AP_W2, _AP_S2> >( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), +// const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); +// } +// +// INLINE ap_concat_ref<1, _private_bit_ref, 1, _private_bit_ref> +// operator,( +// const _private_bit_ref &a2) const { +// return ap_concat_ref<1, _private_bit_ref, 1, _private_bit_ref>( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), +// const_cast<_private_bit_ref&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<1, _private_bit_ref, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > +// operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) const { +// return ap_concat_ref<1, _private_bit_ref, _AP_W2 + _AP_W3, +// ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), +// const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref< +// 1, _private_bit_ref, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > +// operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, +// _AP_N2> +// &a2) const { +// return ap_concat_ref< +// 1, _private_bit_ref, _AP_W2, +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), +// const_cast< +// af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, +// _AP_N2>&>(a2)); +// } +// +// template +// INLINE +// ap_concat_ref<1, _private_bit_ref, 1, +// af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, +// _AP_N2> > +// operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, +// _AP_N2> +// &a2) const { +// return ap_concat_ref<1, _private_bit_ref, 1, af_bit_ref<_AP_W2, +// _AP_I2, _AP_S2, +// _AP_Q2, _AP_O2, +// _AP_N2> >( +// const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), +// const_cast&>( +// a2)); +// } + + template + INLINE bool operator==(const _private_bit_ref<_AP_W2, _AP_S2>& op) const { + return get() == op.get(); + } + + template + INLINE bool operator!=(const _private_bit_ref<_AP_W2, _AP_S2>& op) const { + return get() != op.get(); + } + + INLINE bool get() const { return operator bool(); } + + // template + // INLINE void set(const ap_private<_AP_W3, false>& val) { + // operator=(val); + // } + + // INLINE bool operator~() const { + // bool bit = (d_bv)[d_index]; + // return bit ? false : true; + // } + + INLINE int length() const { return 1; } + + // INLINE std::string to_string() const { + // bool val = get(); + // return val ? "1" : "0"; + // } + +}; // struct _private_bit_ref. + +// char a[100]; +// char* ptr = a; +// ap_int<2> n = 3; +// char* ptr2 = ptr + n*2; +// avoid ambiguous errors +#define OP_BIN_MIX_PTR(BIN_OP) \ + template \ + INLINE PTR_TYPE* operator BIN_OP(PTR_TYPE* i_op, \ + const ap_private<_AP_W, _AP_S>& op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE PTR_TYPE* operator BIN_OP(const ap_private<_AP_W, _AP_S>& op, \ + PTR_TYPE* i_op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return op2 BIN_OP i_op; \ + } + +OP_BIN_MIX_PTR(+) +OP_BIN_MIX_PTR(-) +#undef OP_BIN_MIX_PTR + +// float OP ap_int +// when ap_int's width > 64, then trunc ap_int to ap_int<64> +#define OP_BIN_MIX_FLOAT(BIN_OP, C_TYPE) \ + template \ + INLINE C_TYPE operator BIN_OP(C_TYPE i_op, \ + const ap_private<_AP_W, _AP_S>& op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE C_TYPE operator BIN_OP(const ap_private<_AP_W, _AP_S>& op, \ + C_TYPE i_op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return op2 BIN_OP i_op; \ + } + +#define OPS_MIX_FLOAT(C_TYPE) \ + OP_BIN_MIX_FLOAT(*, C_TYPE) \ + OP_BIN_MIX_FLOAT(/, C_TYPE) \ + OP_BIN_MIX_FLOAT(+, C_TYPE) \ + OP_BIN_MIX_FLOAT(-, C_TYPE) + +OPS_MIX_FLOAT(float) +OPS_MIX_FLOAT(double) +#undef OP_BIN_MIX_FLOAT +#undef OPS_MIX_FLOAT + +/// Operators mixing Integers with AP_Int +// ---------------------------------------------------------------- + +// partially specialize template argument _AP_C in order that: +// for _AP_W > 64, we will explicitly convert operand with native data type +// into corresponding ap_private +// for _AP_W <= 64, we will implicitly convert operand with ap_private into +// (unsigned) long long +#define OP_BIN_MIX_INT(BIN_OP, C_TYPE, _AP_WI, _AP_SI, RTYPE) \ + template \ + INLINE \ + typename ap_private<_AP_WI, _AP_SI>::template RType<_AP_W, _AP_S>::RTYPE \ + operator BIN_OP(C_TYPE i_op, const ap_private<_AP_W, _AP_S>& op) { \ + return ap_private<_AP_WI, _AP_SI>(i_op).operator BIN_OP(op); \ + } \ + template \ + INLINE \ + typename ap_private<_AP_W, _AP_S>::template RType<_AP_WI, _AP_SI>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W, _AP_S>& op, C_TYPE i_op) { \ + return op.operator BIN_OP(ap_private<_AP_WI, _AP_SI>(i_op)); \ + } + +#define OP_REL_MIX_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(const ap_private<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return op.operator REL_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const ap_private<_AP_W, _AP_S, false>& op) { \ + return ap_private<_AP_W2, _AP_S2>(op2).operator REL_OP(op); \ + } + +#define OP_ASSIGN_MIX_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_private<_AP_W, _AP_S>& operator ASSIGN_OP( \ + ap_private<_AP_W, _AP_S>& op, C_TYPE op2) { \ + return op.operator ASSIGN_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } + +#define OP_BIN_SHIFT_INT(BIN_OP, C_TYPE, _AP_WI, _AP_SI, RTYPE) \ + template \ + C_TYPE operator BIN_OP(C_TYPE i_op, \ + const ap_private<_AP_W, _AP_S, false>& op) { \ + return i_op BIN_OP(op.get_VAL()); \ + } \ + template \ + INLINE \ + typename ap_private<_AP_W, _AP_S>::template RType<_AP_WI, _AP_SI>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W, _AP_S>& op, C_TYPE i_op) { \ + return op.operator BIN_OP(i_op); \ + } + +#define OP_ASSIGN_RSHIFT_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_private<_AP_W, _AP_S>& operator ASSIGN_OP( \ + ap_private<_AP_W, _AP_S>& op, C_TYPE op2) { \ + op = op.operator>>(op2); \ + return op; \ + } + +#define OP_ASSIGN_LSHIFT_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_private<_AP_W, _AP_S>& operator ASSIGN_OP( \ + ap_private<_AP_W, _AP_S>& op, C_TYPE op2) { \ + op = op.operator<<(op2); \ + return op; \ + } + +#define OPS_MIX_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_BIN_MIX_INT(*, C_TYPE, (_AP_W2), (_AP_S2), mult) \ + OP_BIN_MIX_INT(+, C_TYPE, (_AP_W2), (_AP_S2), plus) \ + OP_BIN_MIX_INT(-, C_TYPE, (_AP_W2), (_AP_S2), minus) \ + OP_BIN_MIX_INT(/, C_TYPE, (_AP_W2), (_AP_S2), div) \ + OP_BIN_MIX_INT(%, C_TYPE, (_AP_W2), (_AP_S2), mod) \ + OP_BIN_MIX_INT(&, C_TYPE, (_AP_W2), (_AP_S2), logic) \ + OP_BIN_MIX_INT(|, C_TYPE, (_AP_W2), (_AP_S2), logic) \ + OP_BIN_MIX_INT (^, C_TYPE, (_AP_W2), (_AP_S2), logic) \ + OP_BIN_SHIFT_INT(>>, C_TYPE, (_AP_W2), (_AP_S2), arg1) \ + OP_BIN_SHIFT_INT(<<, C_TYPE, (_AP_W2), (_AP_S2), arg1) \ + \ + OP_ASSIGN_MIX_INT(+=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(-=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(*=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(/=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(%=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(&=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(|=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(^=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_RSHIFT_INT(>>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_LSHIFT_INT(<<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + \ + OP_REL_MIX_INT(>, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(<, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(==, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(!=, C_TYPE, (_AP_W2), (_AP_S2)) + +OPS_MIX_INT(bool, 1, false) +OPS_MIX_INT(char, 8, CHAR_IS_SIGNED) +OPS_MIX_INT(signed char, 8, true) +OPS_MIX_INT(unsigned char, 8, false) +OPS_MIX_INT(short, sizeof(short) * 8, true) +OPS_MIX_INT(unsigned short, sizeof(unsigned short) * 8, false) +OPS_MIX_INT(int, sizeof(int) * 8, true) +OPS_MIX_INT(unsigned int, sizeof(unsigned int) * 8, false) +OPS_MIX_INT(long, sizeof(long) * 8, true) +OPS_MIX_INT(unsigned long, sizeof(unsigned long) * 8, false) +OPS_MIX_INT(ap_slong, sizeof(ap_slong) * 8, true) +OPS_MIX_INT(ap_ulong, sizeof(ap_ulong) * 8, false) + +#undef OP_BIN_MIX_INT +#undef OP_BIN_SHIFT_INT +#undef OP_ASSIGN_MIX_INT +#undef OP_ASSIGN_RSHIFT_INT +#undef OP_ASSIGN_LSHIFT_INT +#undef OP_REL_MIX_INT +#undef OPS_MIX_INT + +#define OP_BIN_MIX_RANGE(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_private<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const _private_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_private<_AP_W2, _AP_S2>& op2) { \ + return ap_private<_AP_W1, false>(op1).operator BIN_OP(op2); \ + } \ + template \ + INLINE typename ap_private<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W1, _AP_S1>& op1, \ + const _private_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator BIN_OP(ap_private<_AP_W2, false>(op2)); \ + } + +#define OP_ASSIGN_MIX_RANGE(ASSIGN_OP) \ + template \ + INLINE ap_private<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_private<_AP_W1, _AP_S1>& op1, \ + const _private_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator ASSIGN_OP(ap_private<_AP_W2, false>(op2)); \ + } \ + template \ + INLINE _private_range_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + _private_range_ref<_AP_W1, _AP_S1>& op1, \ + ap_private<_AP_W2, _AP_S2>& op2) { \ + ap_private<_AP_W1, false> tmp(op1); \ + tmp.operator ASSIGN_OP(op2); \ + op1 = tmp; \ + return op1; \ + } + +#define OP_REL_MIX_RANGE(REL_OP) \ + template \ + INLINE bool operator REL_OP(const _private_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_private<_AP_W2, _AP_S2>& op2) { \ + return ap_private<_AP_W1, false>(op1).operator REL_OP(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_private<_AP_W1, _AP_S1>& op1, \ + const _private_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator REL_OP(op2.operator ap_private<_AP_W2, false>()); \ + } + +OP_BIN_MIX_RANGE(+, plus) +OP_BIN_MIX_RANGE(-, minus) +OP_BIN_MIX_RANGE(*, mult) +OP_BIN_MIX_RANGE(/, div) +OP_BIN_MIX_RANGE(%, mod) +OP_BIN_MIX_RANGE(&, logic) +OP_BIN_MIX_RANGE(|, logic) +OP_BIN_MIX_RANGE(^, logic) +OP_BIN_MIX_RANGE(>>, arg1) +OP_BIN_MIX_RANGE(<<, arg1) +#undef OP_BIN_MIX_RANGE + +OP_ASSIGN_MIX_RANGE(+=) +OP_ASSIGN_MIX_RANGE(-=) +OP_ASSIGN_MIX_RANGE(*=) +OP_ASSIGN_MIX_RANGE(/=) +OP_ASSIGN_MIX_RANGE(%=) +OP_ASSIGN_MIX_RANGE(&=) +OP_ASSIGN_MIX_RANGE(|=) +OP_ASSIGN_MIX_RANGE(^=) +OP_ASSIGN_MIX_RANGE(>>=) +OP_ASSIGN_MIX_RANGE(<<=) +#undef OP_ASSIGN_MIX_RANGE + +OP_REL_MIX_RANGE(>) +OP_REL_MIX_RANGE(<) +OP_REL_MIX_RANGE(>=) +OP_REL_MIX_RANGE(<=) +OP_REL_MIX_RANGE(==) +OP_REL_MIX_RANGE(!=) +#undef OP_REL_MIX_RANGE + +#define OP_BIN_MIX_BIT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_private<1, false>::template RType<_AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP(const _private_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_private<_AP_W2, _AP_S2>& op2) { \ + return ap_private<1, false>(op1).operator BIN_OP(op2); \ + } \ + template \ + INLINE typename ap_private<_AP_W1, _AP_S1>::template RType<1, false>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W1, _AP_S1>& op1, \ + const _private_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator BIN_OP(ap_private<1, false>(op2)); \ + } + +#define OP_ASSIGN_MIX_BIT(ASSIGN_OP) \ + template \ + INLINE ap_private<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_private<_AP_W1, _AP_S1>& op1, \ + _private_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator ASSIGN_OP(ap_private<1, false>(op2)); \ + } \ + template \ + INLINE _private_bit_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + _private_bit_ref<_AP_W1, _AP_S1>& op1, \ + ap_private<_AP_W2, _AP_S2>& op2) { \ + ap_private<1, false> tmp(op1); \ + tmp.operator ASSIGN_OP(op2); \ + op1 = tmp; \ + return op1; \ + } + +#define OP_REL_MIX_BIT(REL_OP) \ + template \ + INLINE bool operator REL_OP(const _private_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_private<_AP_W2, _AP_S2>& op2) { \ + return ap_private<_AP_W1, false>(op1).operator REL_OP(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_private<_AP_W1, _AP_S1>& op1, \ + const _private_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator REL_OP(ap_private<1, false>(op2)); \ + } + +OP_ASSIGN_MIX_BIT(+=) +OP_ASSIGN_MIX_BIT(-=) +OP_ASSIGN_MIX_BIT(*=) +OP_ASSIGN_MIX_BIT(/=) +OP_ASSIGN_MIX_BIT(%=) +OP_ASSIGN_MIX_BIT(&=) +OP_ASSIGN_MIX_BIT(|=) +OP_ASSIGN_MIX_BIT(^=) +OP_ASSIGN_MIX_BIT(>>=) +OP_ASSIGN_MIX_BIT(<<=) +#undef OP_ASSIGN_MIX_BIT + +OP_BIN_MIX_BIT(+, plus) +OP_BIN_MIX_BIT(-, minus) +OP_BIN_MIX_BIT(*, mult) +OP_BIN_MIX_BIT(/, div) +OP_BIN_MIX_BIT(%, mod) +OP_BIN_MIX_BIT(&, logic) +OP_BIN_MIX_BIT(|, logic) +OP_BIN_MIX_BIT(^, logic) +OP_BIN_MIX_BIT(>>, arg1) +OP_BIN_MIX_BIT(<<, arg1) +#undef OP_BIN_MIX_BIT + +OP_REL_MIX_BIT(>) +OP_REL_MIX_BIT(<) +OP_REL_MIX_BIT(<=) +OP_REL_MIX_BIT(>=) +OP_REL_MIX_BIT(==) +OP_REL_MIX_BIT(!=) +#undef OP_REL_MIX_BIT + +#define REF_REL_OP_MIX_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(const _private_range_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return (ap_private<_AP_W, false>(op)) \ + . \ + operator REL_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const _private_range_ref<_AP_W, _AP_S>& op) { \ + return ap_private<_AP_W2, _AP_S2>(op2).operator REL_OP( \ + ap_private<_AP_W, false>(op)); \ + } \ + template \ + INLINE bool operator REL_OP(const _private_bit_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return (bool(op))REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const _private_bit_ref<_AP_W, _AP_S>& op) { \ + return op2 REL_OP(bool(op)); \ + } + +#define REF_REL_MIX_INT(C_TYPE, _AP_W2, _AP_S2) \ + REF_REL_OP_MIX_INT(>, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(<, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(==, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(!=, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_REL_MIX_INT(bool, 1, false) +REF_REL_MIX_INT(char, 8, CHAR_IS_SIGNED) +REF_REL_MIX_INT(signed char, 8, true) +REF_REL_MIX_INT(unsigned char, 8, false) +REF_REL_MIX_INT(short, sizeof(short) * 8, true) +REF_REL_MIX_INT(unsigned short, sizeof(unsigned short) * 8, false) +REF_REL_MIX_INT(int, sizeof(int) * 8, true) +REF_REL_MIX_INT(unsigned int, sizeof(unsigned int) * 8, false) +REF_REL_MIX_INT(long, sizeof(long) * 8, true) +REF_REL_MIX_INT(unsigned long, sizeof(unsigned long) * 8, false) +REF_REL_MIX_INT(ap_slong, sizeof(ap_slong) * 8, true) +REF_REL_MIX_INT(ap_ulong, sizeof(ap_ulong) * 8, false) +#undef REF_REL_OP_MIX_INT +#undef REF_REL_MIX_INT + +#define REF_BIN_OP_MIX_INT(BIN_OP, RTYPE, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE \ + typename ap_private<_AP_W, false>::template RType<_AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP(const _private_range_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return (ap_private<_AP_W, false>(op)) \ + . \ + operator BIN_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } \ + template \ + INLINE \ + typename ap_private<_AP_W2, _AP_S2>::template RType<_AP_W, false>::RTYPE \ + operator BIN_OP(C_TYPE op2, \ + const _private_range_ref<_AP_W, _AP_S>& op) { \ + return ap_private<_AP_W2, _AP_S2>(op2).operator BIN_OP( \ + ap_private<_AP_W, false>(op)); \ + } + +#define REF_BIN_MIX_INT(C_TYPE, _AP_W2, _AP_S2) \ + REF_BIN_OP_MIX_INT(+, plus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(-, minus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(*, mult, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(/, div, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(%, mod, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(&, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(|, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(^, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(>>, arg1, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(<<, arg1, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_BIN_MIX_INT(bool, 1, false) +REF_BIN_MIX_INT(char, 8, CHAR_IS_SIGNED) +REF_BIN_MIX_INT(signed char, 8, true) +REF_BIN_MIX_INT(unsigned char, 8, false) +REF_BIN_MIX_INT(short, sizeof(short) * 8, true) +REF_BIN_MIX_INT(unsigned short, sizeof(unsigned short) * 8, false) +REF_BIN_MIX_INT(int, sizeof(int) * 8, true) +REF_BIN_MIX_INT(unsigned int, sizeof(unsigned int) * 8, false) +REF_BIN_MIX_INT(long, sizeof(long) * 8, true) +REF_BIN_MIX_INT(unsigned long, sizeof(unsigned long) * 8, false) +REF_BIN_MIX_INT(ap_slong, sizeof(ap_slong) * 8, true) +REF_BIN_MIX_INT(ap_ulong, sizeof(ap_ulong) * 8, false) +#undef REF_BIN_OP_MIX_INT +#undef REF_BIN_MIX_INT + +#define REF_BIN_OP(BIN_OP, RTYPE) \ + template \ + INLINE \ + typename ap_private<_AP_W, false>::template RType<_AP_W2, false>::RTYPE \ + operator BIN_OP(const _private_range_ref<_AP_W, _AP_S>& lhs, \ + const _private_range_ref<_AP_W2, _AP_S2>& rhs) { \ + return ap_private<_AP_W, false>(lhs).operator BIN_OP( \ + ap_private<_AP_W2, false>(rhs)); \ + } + +REF_BIN_OP(+, plus) +REF_BIN_OP(-, minus) +REF_BIN_OP(*, mult) +REF_BIN_OP(/, div) +REF_BIN_OP(%, mod) +REF_BIN_OP(&, logic) +REF_BIN_OP(|, logic) +REF_BIN_OP(^, logic) +REF_BIN_OP(>>, arg1) +REF_BIN_OP(<<, arg1) +#undef REF_BIN_OP + +//************************************************************************ +// Implement +// ap_private = ap_concat_ref OP ap_concat_ref +// for operators +, -, *, /, %, >>, <<, &, |, ^ +// Without these operators the operands are converted to int64 and +// larger results lose informations (higher order bits). +// +// operand OP +// / | +// left-concat right-concat +// / | / | +// +// +// _AP_LW1, _AP_LT1 (width and type of left-concat's left side) +// _AP_LW2, _AP_LT2 (width and type of left-concat's right side) +// Similarly for RHS of operand OP: _AP_RW1, AP_RW2, _AP_RT1, _AP_RT2 +// +// In Verilog 2001 result of concatenation is always unsigned even +// when both sides are signed. +//************************************************************************ + +#endif // ifndef __AP_PRIVATE_H__ diff --git a/vitis/v2020_1/etc/autopilot_apint.h b/vitis/v2020_1/etc/autopilot_apint.h new file mode 100644 index 00000000..29723a8f --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_apint.h @@ -0,0 +1,114 @@ +/* autopilot_apint.h*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _AUTOPILOT_APINT_H_ +#define _AUTOPILOT_APINT_H_ + +#include "etc/autopilot_dt.h" +#include "etc/autopilot_ssdm_bits.h" + +#define APInt_BitWidthOf(X) _ssdm_op_bitwidthof(X) + +#define APInt_Concatenate(X, Y) _ssdm_op_Concat(X, Y) +#define APInt_GetBit(Val, Bit) _ssdm_op_GetBit(Val, Bit) +#define APInt_SetBit(Val, Bit, Repl) _ssdm_op_SetBit(Val, Bit, Repl) +#define APInt_GetRange(Val, Hi, Lo) _ssdm_op_GetRange(Val, Hi, Lo) +#define APInt_SetRange(Val, Hi, Lo, Repl) _ssdm_op_SetRange(Val, Hi, Lo, Repl) + +#define APInt_AndReduce(X) _ssdm_op_reduce(and, X) +#define APInt_NandReduce(X) _ssdm_op_reduce(nand, X) +#define APInt_OrReduce(X) _ssdm_op_reduce(or, X) +#define APInt_NorReduce(X) _ssdm_op_reduce(nor, X) +#define APInt_XorReduce(X) _ssdm_op_reduce(xor, X) +#define APInt_XnorReduce(X) _ssdm_op_reduce(nxor, X) + +#define APInt_BitsFromString(Str, Bits) \ + _ssdm_op_bitsFromString(Str, Bits) +#define APInt_BitsFromHexString(Str, Bits) \ + _ssdm_op_bitsFromHexString(Str, Bits) +#define APInt_BitsFromOctalString(Str, Bits) \ + _ssdm_op_bitsFromOctalString(Str, Bits) +#define APInt_BitsFromBinaryString(Str, Bits) \ + _ssdm_op_bitsFromBinaryString(Str, Bits) + + +/************************************************/ + +#define apint_bitwidthof(X) _ssdm_op_bitwidthof(X) + +#define apint_concatenate(X, Y) _ssdm_op_Concat(X, Y) +#define apint_get_bit(Val, Bit) _ssdm_op_GetBit(Val, Bit) +#define apint_set_bit(Val, Bit, Repl) _ssdm_op_SetBit(Val, Bit, Repl) +#define apint_get_range(Val, Hi, Lo) _ssdm_op_GetRange(Val, Hi, Lo) +#define apint_set_range(Val, Hi, Lo, Repl) _ssdm_op_SetRange(Val, Hi, Lo, Repl) + +#define apint_and_reduce(X) _ssdm_op_reduce(and, X) +#define apint_nand_reduce(X) _ssdm_op_reduce(nand, X) +#define apint_or_reduce(X) _ssdm_op_reduce(or, X) +#define apint_nor_reduce(X) _ssdm_op_reduce(nor, X) +#define apint_xor_reduce(X) _ssdm_op_reduce(xor, X) +#define apint_xnor_reduce(X) _ssdm_op_reduce(nxor, X) + +#define apint_print(Val, Radix) _ssdm_op_print_apint(Val, Radix) +#define apint_fprint(FileOut, Val, Radix) _ssdm_op_fprint_apint(FileOut, Val, Radix) + +#define apint_vstring2bits_hex(Str, Bits) _ssdm_op_sscan_hex_apint(Str, Bits) +#define apint_string2bits_dec(Str, Bits) _ssdm_op_bitsFromString(Str, Bits) +#define apint_string2bits_hex(Str, Bits) _ssdm_op_bitsFromHexString(Str, Bits) +#define apint_string2bits_oct(Str, Bits) _ssdm_op_bitsFromOctalString(Str, Bits) +#define apint_string2bits_bin(Str, Bits) _ssdm_op_bitsFromBinaryString(Str, Bits) +#define apint_string2bits(Str, Bits) apint_string2bits_dec(Str, Bits) + +#endif + + diff --git a/vitis/v2020_1/etc/autopilot_dt.def b/vitis/v2020_1/etc/autopilot_dt.def new file mode 100644 index 00000000..44ca29cf --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_dt.def @@ -0,0 +1,2080 @@ +#ifndef APINT_TYPE_PREFIX + +HANDLE_BAT(, 1) +HANDLE_BAT(, 2) +HANDLE_BAT(, 3) +HANDLE_BAT(, 4) +HANDLE_BAT(, 5) +HANDLE_BAT(, 6) +HANDLE_BAT(, 7) +HANDLE_BAT(, 8) +HANDLE_BAT(, 9) +HANDLE_BAT(, 10) +HANDLE_BAT(, 11) +HANDLE_BAT(, 12) +HANDLE_BAT(, 13) +HANDLE_BAT(, 14) +HANDLE_BAT(, 15) +HANDLE_BAT(, 16) +HANDLE_BAT(, 17) +HANDLE_BAT(, 18) +HANDLE_BAT(, 19) +HANDLE_BAT(, 20) +HANDLE_BAT(, 21) +HANDLE_BAT(, 22) +HANDLE_BAT(, 23) +HANDLE_BAT(, 24) +HANDLE_BAT(, 25) +HANDLE_BAT(, 26) +HANDLE_BAT(, 27) +HANDLE_BAT(, 28) +HANDLE_BAT(, 29) +HANDLE_BAT(, 30) +HANDLE_BAT(, 31) +HANDLE_BAT(, 32) +HANDLE_BAT(, 33) +HANDLE_BAT(, 34) +HANDLE_BAT(, 35) +HANDLE_BAT(, 36) +HANDLE_BAT(, 37) +HANDLE_BAT(, 38) +HANDLE_BAT(, 39) +HANDLE_BAT(, 40) +HANDLE_BAT(, 41) +HANDLE_BAT(, 42) +HANDLE_BAT(, 43) +HANDLE_BAT(, 44) +HANDLE_BAT(, 45) +HANDLE_BAT(, 46) +HANDLE_BAT(, 47) +HANDLE_BAT(, 48) +HANDLE_BAT(, 49) +HANDLE_BAT(, 50) +HANDLE_BAT(, 51) +HANDLE_BAT(, 52) +HANDLE_BAT(, 53) +HANDLE_BAT(, 54) +HANDLE_BAT(, 55) +HANDLE_BAT(, 56) +HANDLE_BAT(, 57) +HANDLE_BAT(, 58) +HANDLE_BAT(, 59) +HANDLE_BAT(, 60) +HANDLE_BAT(, 61) +HANDLE_BAT(, 62) +HANDLE_BAT(, 63) + +#ifdef APINT_DEFINE_INT64 +HANDLE_BAT(, 64) +#endif + +/*#if AUTOPILOT_VERSION >= 1 */ + +HANDLE_BAT(, 65) +HANDLE_BAT(, 66) +HANDLE_BAT(, 67) +HANDLE_BAT(, 68) +HANDLE_BAT(, 69) +HANDLE_BAT(, 70) +HANDLE_BAT(, 71) +HANDLE_BAT(, 72) +HANDLE_BAT(, 73) +HANDLE_BAT(, 74) +HANDLE_BAT(, 75) +HANDLE_BAT(, 76) +HANDLE_BAT(, 77) +HANDLE_BAT(, 78) +HANDLE_BAT(, 79) +HANDLE_BAT(, 80) +HANDLE_BAT(, 81) +HANDLE_BAT(, 82) +HANDLE_BAT(, 83) +HANDLE_BAT(, 84) +HANDLE_BAT(, 85) +HANDLE_BAT(, 86) +HANDLE_BAT(, 87) +HANDLE_BAT(, 88) +HANDLE_BAT(, 89) +HANDLE_BAT(, 90) +HANDLE_BAT(, 91) +HANDLE_BAT(, 92) +HANDLE_BAT(, 93) +HANDLE_BAT(, 94) +HANDLE_BAT(, 95) +HANDLE_BAT(, 96) +HANDLE_BAT(, 97) +HANDLE_BAT(, 98) +HANDLE_BAT(, 99) +HANDLE_BAT(, 100) +HANDLE_BAT(, 101) +HANDLE_BAT(, 102) +HANDLE_BAT(, 103) +HANDLE_BAT(, 104) +HANDLE_BAT(, 105) +HANDLE_BAT(, 106) +HANDLE_BAT(, 107) +HANDLE_BAT(, 108) +HANDLE_BAT(, 109) +HANDLE_BAT(, 110) +HANDLE_BAT(, 111) +HANDLE_BAT(, 112) +HANDLE_BAT(, 113) +HANDLE_BAT(, 114) +HANDLE_BAT(, 115) +HANDLE_BAT(, 116) +HANDLE_BAT(, 117) +HANDLE_BAT(, 118) +HANDLE_BAT(, 119) +HANDLE_BAT(, 120) +HANDLE_BAT(, 121) +HANDLE_BAT(, 122) +HANDLE_BAT(, 123) +HANDLE_BAT(, 124) +HANDLE_BAT(, 125) +HANDLE_BAT(, 126) +HANDLE_BAT(, 127) +HANDLE_BAT(, 128) + +/*#endif*/ + + +/*#ifdef EXTENDED_GCC*/ + +HANDLE_BAT(, 129) +HANDLE_BAT(, 130) +HANDLE_BAT(, 131) +HANDLE_BAT(, 132) +HANDLE_BAT(, 133) +HANDLE_BAT(, 134) +HANDLE_BAT(, 135) +HANDLE_BAT(, 136) +HANDLE_BAT(, 137) +HANDLE_BAT(, 138) +HANDLE_BAT(, 139) +HANDLE_BAT(, 140) +HANDLE_BAT(, 141) +HANDLE_BAT(, 142) +HANDLE_BAT(, 143) +HANDLE_BAT(, 144) +HANDLE_BAT(, 145) +HANDLE_BAT(, 146) +HANDLE_BAT(, 147) +HANDLE_BAT(, 148) +HANDLE_BAT(, 149) +HANDLE_BAT(, 150) +HANDLE_BAT(, 151) +HANDLE_BAT(, 152) +HANDLE_BAT(, 153) +HANDLE_BAT(, 154) +HANDLE_BAT(, 155) +HANDLE_BAT(, 156) +HANDLE_BAT(, 157) +HANDLE_BAT(, 158) +HANDLE_BAT(, 159) +HANDLE_BAT(, 160) +HANDLE_BAT(, 161) +HANDLE_BAT(, 162) +HANDLE_BAT(, 163) +HANDLE_BAT(, 164) +HANDLE_BAT(, 165) +HANDLE_BAT(, 166) +HANDLE_BAT(, 167) +HANDLE_BAT(, 168) +HANDLE_BAT(, 169) +HANDLE_BAT(, 170) +HANDLE_BAT(, 171) +HANDLE_BAT(, 172) +HANDLE_BAT(, 173) +HANDLE_BAT(, 174) +HANDLE_BAT(, 175) +HANDLE_BAT(, 176) +HANDLE_BAT(, 177) +HANDLE_BAT(, 178) +HANDLE_BAT(, 179) +HANDLE_BAT(, 180) +HANDLE_BAT(, 181) +HANDLE_BAT(, 182) +HANDLE_BAT(, 183) +HANDLE_BAT(, 184) +HANDLE_BAT(, 185) +HANDLE_BAT(, 186) +HANDLE_BAT(, 187) +HANDLE_BAT(, 188) +HANDLE_BAT(, 189) +HANDLE_BAT(, 190) +HANDLE_BAT(, 191) +HANDLE_BAT(, 192) +HANDLE_BAT(, 193) +HANDLE_BAT(, 194) +HANDLE_BAT(, 195) +HANDLE_BAT(, 196) +HANDLE_BAT(, 197) +HANDLE_BAT(, 198) +HANDLE_BAT(, 199) +HANDLE_BAT(, 200) +HANDLE_BAT(, 201) +HANDLE_BAT(, 202) +HANDLE_BAT(, 203) +HANDLE_BAT(, 204) +HANDLE_BAT(, 205) +HANDLE_BAT(, 206) +HANDLE_BAT(, 207) +HANDLE_BAT(, 208) +HANDLE_BAT(, 209) +HANDLE_BAT(, 210) +HANDLE_BAT(, 211) +HANDLE_BAT(, 212) +HANDLE_BAT(, 213) +HANDLE_BAT(, 214) +HANDLE_BAT(, 215) +HANDLE_BAT(, 216) +HANDLE_BAT(, 217) +HANDLE_BAT(, 218) +HANDLE_BAT(, 219) +HANDLE_BAT(, 220) +HANDLE_BAT(, 221) +HANDLE_BAT(, 222) +HANDLE_BAT(, 223) +HANDLE_BAT(, 224) +HANDLE_BAT(, 225) +HANDLE_BAT(, 226) +HANDLE_BAT(, 227) +HANDLE_BAT(, 228) +HANDLE_BAT(, 229) +HANDLE_BAT(, 230) +HANDLE_BAT(, 231) +HANDLE_BAT(, 232) +HANDLE_BAT(, 233) +HANDLE_BAT(, 234) +HANDLE_BAT(, 235) +HANDLE_BAT(, 236) +HANDLE_BAT(, 237) +HANDLE_BAT(, 238) +HANDLE_BAT(, 239) +HANDLE_BAT(, 240) +HANDLE_BAT(, 241) +HANDLE_BAT(, 242) +HANDLE_BAT(, 243) +HANDLE_BAT(, 244) +HANDLE_BAT(, 245) +HANDLE_BAT(, 246) +HANDLE_BAT(, 247) +HANDLE_BAT(, 248) +HANDLE_BAT(, 249) +HANDLE_BAT(, 250) +HANDLE_BAT(, 251) +HANDLE_BAT(, 252) +HANDLE_BAT(, 253) +HANDLE_BAT(, 254) +HANDLE_BAT(, 255) +HANDLE_BAT(, 256) +HANDLE_BAT(, 257) +HANDLE_BAT(, 258) +HANDLE_BAT(, 259) +HANDLE_BAT(, 260) +HANDLE_BAT(, 261) +HANDLE_BAT(, 262) +HANDLE_BAT(, 263) +HANDLE_BAT(, 264) +HANDLE_BAT(, 265) +HANDLE_BAT(, 266) +HANDLE_BAT(, 267) +HANDLE_BAT(, 268) +HANDLE_BAT(, 269) +HANDLE_BAT(, 270) +HANDLE_BAT(, 271) +HANDLE_BAT(, 272) +HANDLE_BAT(, 273) +HANDLE_BAT(, 274) +HANDLE_BAT(, 275) +HANDLE_BAT(, 276) +HANDLE_BAT(, 277) +HANDLE_BAT(, 278) +HANDLE_BAT(, 279) +HANDLE_BAT(, 280) +HANDLE_BAT(, 281) +HANDLE_BAT(, 282) +HANDLE_BAT(, 283) +HANDLE_BAT(, 284) +HANDLE_BAT(, 285) +HANDLE_BAT(, 286) +HANDLE_BAT(, 287) +HANDLE_BAT(, 288) +HANDLE_BAT(, 289) +HANDLE_BAT(, 290) +HANDLE_BAT(, 291) +HANDLE_BAT(, 292) +HANDLE_BAT(, 293) +HANDLE_BAT(, 294) +HANDLE_BAT(, 295) +HANDLE_BAT(, 296) +HANDLE_BAT(, 297) +HANDLE_BAT(, 298) +HANDLE_BAT(, 299) +HANDLE_BAT(, 300) +HANDLE_BAT(, 301) +HANDLE_BAT(, 302) +HANDLE_BAT(, 303) +HANDLE_BAT(, 304) +HANDLE_BAT(, 305) +HANDLE_BAT(, 306) +HANDLE_BAT(, 307) +HANDLE_BAT(, 308) +HANDLE_BAT(, 309) +HANDLE_BAT(, 310) +HANDLE_BAT(, 311) +HANDLE_BAT(, 312) +HANDLE_BAT(, 313) +HANDLE_BAT(, 314) +HANDLE_BAT(, 315) +HANDLE_BAT(, 316) +HANDLE_BAT(, 317) +HANDLE_BAT(, 318) +HANDLE_BAT(, 319) +HANDLE_BAT(, 320) +HANDLE_BAT(, 321) +HANDLE_BAT(, 322) +HANDLE_BAT(, 323) +HANDLE_BAT(, 324) +HANDLE_BAT(, 325) +HANDLE_BAT(, 326) +HANDLE_BAT(, 327) +HANDLE_BAT(, 328) +HANDLE_BAT(, 329) +HANDLE_BAT(, 330) +HANDLE_BAT(, 331) +HANDLE_BAT(, 332) +HANDLE_BAT(, 333) +HANDLE_BAT(, 334) +HANDLE_BAT(, 335) +HANDLE_BAT(, 336) +HANDLE_BAT(, 337) +HANDLE_BAT(, 338) +HANDLE_BAT(, 339) +HANDLE_BAT(, 340) +HANDLE_BAT(, 341) +HANDLE_BAT(, 342) +HANDLE_BAT(, 343) +HANDLE_BAT(, 344) +HANDLE_BAT(, 345) +HANDLE_BAT(, 346) +HANDLE_BAT(, 347) +HANDLE_BAT(, 348) +HANDLE_BAT(, 349) +HANDLE_BAT(, 350) +HANDLE_BAT(, 351) +HANDLE_BAT(, 352) +HANDLE_BAT(, 353) +HANDLE_BAT(, 354) +HANDLE_BAT(, 355) +HANDLE_BAT(, 356) +HANDLE_BAT(, 357) +HANDLE_BAT(, 358) +HANDLE_BAT(, 359) +HANDLE_BAT(, 360) +HANDLE_BAT(, 361) +HANDLE_BAT(, 362) +HANDLE_BAT(, 363) +HANDLE_BAT(, 364) +HANDLE_BAT(, 365) +HANDLE_BAT(, 366) +HANDLE_BAT(, 367) +HANDLE_BAT(, 368) +HANDLE_BAT(, 369) +HANDLE_BAT(, 370) +HANDLE_BAT(, 371) +HANDLE_BAT(, 372) +HANDLE_BAT(, 373) +HANDLE_BAT(, 374) +HANDLE_BAT(, 375) +HANDLE_BAT(, 376) +HANDLE_BAT(, 377) +HANDLE_BAT(, 378) +HANDLE_BAT(, 379) +HANDLE_BAT(, 380) +HANDLE_BAT(, 381) +HANDLE_BAT(, 382) +HANDLE_BAT(, 383) +HANDLE_BAT(, 384) +HANDLE_BAT(, 385) +HANDLE_BAT(, 386) +HANDLE_BAT(, 387) +HANDLE_BAT(, 388) +HANDLE_BAT(, 389) +HANDLE_BAT(, 390) +HANDLE_BAT(, 391) +HANDLE_BAT(, 392) +HANDLE_BAT(, 393) +HANDLE_BAT(, 394) +HANDLE_BAT(, 395) +HANDLE_BAT(, 396) +HANDLE_BAT(, 397) +HANDLE_BAT(, 398) +HANDLE_BAT(, 399) +HANDLE_BAT(, 400) +HANDLE_BAT(, 401) +HANDLE_BAT(, 402) +HANDLE_BAT(, 403) +HANDLE_BAT(, 404) +HANDLE_BAT(, 405) +HANDLE_BAT(, 406) +HANDLE_BAT(, 407) +HANDLE_BAT(, 408) +HANDLE_BAT(, 409) +HANDLE_BAT(, 410) +HANDLE_BAT(, 411) +HANDLE_BAT(, 412) +HANDLE_BAT(, 413) +HANDLE_BAT(, 414) +HANDLE_BAT(, 415) +HANDLE_BAT(, 416) +HANDLE_BAT(, 417) +HANDLE_BAT(, 418) +HANDLE_BAT(, 419) +HANDLE_BAT(, 420) +HANDLE_BAT(, 421) +HANDLE_BAT(, 422) +HANDLE_BAT(, 423) +HANDLE_BAT(, 424) +HANDLE_BAT(, 425) +HANDLE_BAT(, 426) +HANDLE_BAT(, 427) +HANDLE_BAT(, 428) +HANDLE_BAT(, 429) +HANDLE_BAT(, 430) +HANDLE_BAT(, 431) +HANDLE_BAT(, 432) +HANDLE_BAT(, 433) +HANDLE_BAT(, 434) +HANDLE_BAT(, 435) +HANDLE_BAT(, 436) +HANDLE_BAT(, 437) +HANDLE_BAT(, 438) +HANDLE_BAT(, 439) +HANDLE_BAT(, 440) +HANDLE_BAT(, 441) +HANDLE_BAT(, 442) +HANDLE_BAT(, 443) +HANDLE_BAT(, 444) +HANDLE_BAT(, 445) +HANDLE_BAT(, 446) +HANDLE_BAT(, 447) +HANDLE_BAT(, 448) +HANDLE_BAT(, 449) +HANDLE_BAT(, 450) +HANDLE_BAT(, 451) +HANDLE_BAT(, 452) +HANDLE_BAT(, 453) +HANDLE_BAT(, 454) +HANDLE_BAT(, 455) +HANDLE_BAT(, 456) +HANDLE_BAT(, 457) +HANDLE_BAT(, 458) +HANDLE_BAT(, 459) +HANDLE_BAT(, 460) +HANDLE_BAT(, 461) +HANDLE_BAT(, 462) +HANDLE_BAT(, 463) +HANDLE_BAT(, 464) +HANDLE_BAT(, 465) +HANDLE_BAT(, 466) +HANDLE_BAT(, 467) +HANDLE_BAT(, 468) +HANDLE_BAT(, 469) +HANDLE_BAT(, 470) +HANDLE_BAT(, 471) +HANDLE_BAT(, 472) +HANDLE_BAT(, 473) +HANDLE_BAT(, 474) +HANDLE_BAT(, 475) +HANDLE_BAT(, 476) +HANDLE_BAT(, 477) +HANDLE_BAT(, 478) +HANDLE_BAT(, 479) +HANDLE_BAT(, 480) +HANDLE_BAT(, 481) +HANDLE_BAT(, 482) +HANDLE_BAT(, 483) +HANDLE_BAT(, 484) +HANDLE_BAT(, 485) +HANDLE_BAT(, 486) +HANDLE_BAT(, 487) +HANDLE_BAT(, 488) +HANDLE_BAT(, 489) +HANDLE_BAT(, 490) +HANDLE_BAT(, 491) +HANDLE_BAT(, 492) +HANDLE_BAT(, 493) +HANDLE_BAT(, 494) +HANDLE_BAT(, 495) +HANDLE_BAT(, 496) +HANDLE_BAT(, 497) +HANDLE_BAT(, 498) +HANDLE_BAT(, 499) +HANDLE_BAT(, 500) +HANDLE_BAT(, 501) +HANDLE_BAT(, 502) +HANDLE_BAT(, 503) +HANDLE_BAT(, 504) +HANDLE_BAT(, 505) +HANDLE_BAT(, 506) +HANDLE_BAT(, 507) +HANDLE_BAT(, 508) +HANDLE_BAT(, 509) +HANDLE_BAT(, 510) +HANDLE_BAT(, 511) +HANDLE_BAT(, 512) +HANDLE_BAT(, 513) +HANDLE_BAT(, 514) +HANDLE_BAT(, 515) +HANDLE_BAT(, 516) +HANDLE_BAT(, 517) +HANDLE_BAT(, 518) +HANDLE_BAT(, 519) +HANDLE_BAT(, 520) +HANDLE_BAT(, 521) +HANDLE_BAT(, 522) +HANDLE_BAT(, 523) +HANDLE_BAT(, 524) +HANDLE_BAT(, 525) +HANDLE_BAT(, 526) +HANDLE_BAT(, 527) +HANDLE_BAT(, 528) +HANDLE_BAT(, 529) +HANDLE_BAT(, 530) +HANDLE_BAT(, 531) +HANDLE_BAT(, 532) +HANDLE_BAT(, 533) +HANDLE_BAT(, 534) +HANDLE_BAT(, 535) +HANDLE_BAT(, 536) +HANDLE_BAT(, 537) +HANDLE_BAT(, 538) +HANDLE_BAT(, 539) +HANDLE_BAT(, 540) +HANDLE_BAT(, 541) +HANDLE_BAT(, 542) +HANDLE_BAT(, 543) +HANDLE_BAT(, 544) +HANDLE_BAT(, 545) +HANDLE_BAT(, 546) +HANDLE_BAT(, 547) +HANDLE_BAT(, 548) +HANDLE_BAT(, 549) +HANDLE_BAT(, 550) +HANDLE_BAT(, 551) +HANDLE_BAT(, 552) +HANDLE_BAT(, 553) +HANDLE_BAT(, 554) +HANDLE_BAT(, 555) +HANDLE_BAT(, 556) +HANDLE_BAT(, 557) +HANDLE_BAT(, 558) +HANDLE_BAT(, 559) +HANDLE_BAT(, 560) +HANDLE_BAT(, 561) +HANDLE_BAT(, 562) +HANDLE_BAT(, 563) +HANDLE_BAT(, 564) +HANDLE_BAT(, 565) +HANDLE_BAT(, 566) +HANDLE_BAT(, 567) +HANDLE_BAT(, 568) +HANDLE_BAT(, 569) +HANDLE_BAT(, 570) +HANDLE_BAT(, 571) +HANDLE_BAT(, 572) +HANDLE_BAT(, 573) +HANDLE_BAT(, 574) +HANDLE_BAT(, 575) +HANDLE_BAT(, 576) +HANDLE_BAT(, 577) +HANDLE_BAT(, 578) +HANDLE_BAT(, 579) +HANDLE_BAT(, 580) +HANDLE_BAT(, 581) +HANDLE_BAT(, 582) +HANDLE_BAT(, 583) +HANDLE_BAT(, 584) +HANDLE_BAT(, 585) +HANDLE_BAT(, 586) +HANDLE_BAT(, 587) +HANDLE_BAT(, 588) +HANDLE_BAT(, 589) +HANDLE_BAT(, 590) +HANDLE_BAT(, 591) +HANDLE_BAT(, 592) +HANDLE_BAT(, 593) +HANDLE_BAT(, 594) +HANDLE_BAT(, 595) +HANDLE_BAT(, 596) +HANDLE_BAT(, 597) +HANDLE_BAT(, 598) +HANDLE_BAT(, 599) +HANDLE_BAT(, 600) +HANDLE_BAT(, 601) +HANDLE_BAT(, 602) +HANDLE_BAT(, 603) +HANDLE_BAT(, 604) +HANDLE_BAT(, 605) +HANDLE_BAT(, 606) +HANDLE_BAT(, 607) +HANDLE_BAT(, 608) +HANDLE_BAT(, 609) +HANDLE_BAT(, 610) +HANDLE_BAT(, 611) +HANDLE_BAT(, 612) +HANDLE_BAT(, 613) +HANDLE_BAT(, 614) +HANDLE_BAT(, 615) +HANDLE_BAT(, 616) +HANDLE_BAT(, 617) +HANDLE_BAT(, 618) +HANDLE_BAT(, 619) +HANDLE_BAT(, 620) +HANDLE_BAT(, 621) +HANDLE_BAT(, 622) +HANDLE_BAT(, 623) +HANDLE_BAT(, 624) +HANDLE_BAT(, 625) +HANDLE_BAT(, 626) +HANDLE_BAT(, 627) +HANDLE_BAT(, 628) +HANDLE_BAT(, 629) +HANDLE_BAT(, 630) +HANDLE_BAT(, 631) +HANDLE_BAT(, 632) +HANDLE_BAT(, 633) +HANDLE_BAT(, 634) +HANDLE_BAT(, 635) +HANDLE_BAT(, 636) +HANDLE_BAT(, 637) +HANDLE_BAT(, 638) +HANDLE_BAT(, 639) +HANDLE_BAT(, 640) +HANDLE_BAT(, 641) +HANDLE_BAT(, 642) +HANDLE_BAT(, 643) +HANDLE_BAT(, 644) +HANDLE_BAT(, 645) +HANDLE_BAT(, 646) +HANDLE_BAT(, 647) +HANDLE_BAT(, 648) +HANDLE_BAT(, 649) +HANDLE_BAT(, 650) +HANDLE_BAT(, 651) +HANDLE_BAT(, 652) +HANDLE_BAT(, 653) +HANDLE_BAT(, 654) +HANDLE_BAT(, 655) +HANDLE_BAT(, 656) +HANDLE_BAT(, 657) +HANDLE_BAT(, 658) +HANDLE_BAT(, 659) +HANDLE_BAT(, 660) +HANDLE_BAT(, 661) +HANDLE_BAT(, 662) +HANDLE_BAT(, 663) +HANDLE_BAT(, 664) +HANDLE_BAT(, 665) +HANDLE_BAT(, 666) +HANDLE_BAT(, 667) +HANDLE_BAT(, 668) +HANDLE_BAT(, 669) +HANDLE_BAT(, 670) +HANDLE_BAT(, 671) +HANDLE_BAT(, 672) +HANDLE_BAT(, 673) +HANDLE_BAT(, 674) +HANDLE_BAT(, 675) +HANDLE_BAT(, 676) +HANDLE_BAT(, 677) +HANDLE_BAT(, 678) +HANDLE_BAT(, 679) +HANDLE_BAT(, 680) +HANDLE_BAT(, 681) +HANDLE_BAT(, 682) +HANDLE_BAT(, 683) +HANDLE_BAT(, 684) +HANDLE_BAT(, 685) +HANDLE_BAT(, 686) +HANDLE_BAT(, 687) +HANDLE_BAT(, 688) +HANDLE_BAT(, 689) +HANDLE_BAT(, 690) +HANDLE_BAT(, 691) +HANDLE_BAT(, 692) +HANDLE_BAT(, 693) +HANDLE_BAT(, 694) +HANDLE_BAT(, 695) +HANDLE_BAT(, 696) +HANDLE_BAT(, 697) +HANDLE_BAT(, 698) +HANDLE_BAT(, 699) +HANDLE_BAT(, 700) +HANDLE_BAT(, 701) +HANDLE_BAT(, 702) +HANDLE_BAT(, 703) +HANDLE_BAT(, 704) +HANDLE_BAT(, 705) +HANDLE_BAT(, 706) +HANDLE_BAT(, 707) +HANDLE_BAT(, 708) +HANDLE_BAT(, 709) +HANDLE_BAT(, 710) +HANDLE_BAT(, 711) +HANDLE_BAT(, 712) +HANDLE_BAT(, 713) +HANDLE_BAT(, 714) +HANDLE_BAT(, 715) +HANDLE_BAT(, 716) +HANDLE_BAT(, 717) +HANDLE_BAT(, 718) +HANDLE_BAT(, 719) +HANDLE_BAT(, 720) +HANDLE_BAT(, 721) +HANDLE_BAT(, 722) +HANDLE_BAT(, 723) +HANDLE_BAT(, 724) +HANDLE_BAT(, 725) +HANDLE_BAT(, 726) +HANDLE_BAT(, 727) +HANDLE_BAT(, 728) +HANDLE_BAT(, 729) +HANDLE_BAT(, 730) +HANDLE_BAT(, 731) +HANDLE_BAT(, 732) +HANDLE_BAT(, 733) +HANDLE_BAT(, 734) +HANDLE_BAT(, 735) +HANDLE_BAT(, 736) +HANDLE_BAT(, 737) +HANDLE_BAT(, 738) +HANDLE_BAT(, 739) +HANDLE_BAT(, 740) +HANDLE_BAT(, 741) +HANDLE_BAT(, 742) +HANDLE_BAT(, 743) +HANDLE_BAT(, 744) +HANDLE_BAT(, 745) +HANDLE_BAT(, 746) +HANDLE_BAT(, 747) +HANDLE_BAT(, 748) +HANDLE_BAT(, 749) +HANDLE_BAT(, 750) +HANDLE_BAT(, 751) +HANDLE_BAT(, 752) +HANDLE_BAT(, 753) +HANDLE_BAT(, 754) +HANDLE_BAT(, 755) +HANDLE_BAT(, 756) +HANDLE_BAT(, 757) +HANDLE_BAT(, 758) +HANDLE_BAT(, 759) +HANDLE_BAT(, 760) +HANDLE_BAT(, 761) +HANDLE_BAT(, 762) +HANDLE_BAT(, 763) +HANDLE_BAT(, 764) +HANDLE_BAT(, 765) +HANDLE_BAT(, 766) +HANDLE_BAT(, 767) +HANDLE_BAT(, 768) +HANDLE_BAT(, 769) +HANDLE_BAT(, 770) +HANDLE_BAT(, 771) +HANDLE_BAT(, 772) +HANDLE_BAT(, 773) +HANDLE_BAT(, 774) +HANDLE_BAT(, 775) +HANDLE_BAT(, 776) +HANDLE_BAT(, 777) +HANDLE_BAT(, 778) +HANDLE_BAT(, 779) +HANDLE_BAT(, 780) +HANDLE_BAT(, 781) +HANDLE_BAT(, 782) +HANDLE_BAT(, 783) +HANDLE_BAT(, 784) +HANDLE_BAT(, 785) +HANDLE_BAT(, 786) +HANDLE_BAT(, 787) +HANDLE_BAT(, 788) +HANDLE_BAT(, 789) +HANDLE_BAT(, 790) +HANDLE_BAT(, 791) +HANDLE_BAT(, 792) +HANDLE_BAT(, 793) +HANDLE_BAT(, 794) +HANDLE_BAT(, 795) +HANDLE_BAT(, 796) +HANDLE_BAT(, 797) +HANDLE_BAT(, 798) +HANDLE_BAT(, 799) +HANDLE_BAT(, 800) +HANDLE_BAT(, 801) +HANDLE_BAT(, 802) +HANDLE_BAT(, 803) +HANDLE_BAT(, 804) +HANDLE_BAT(, 805) +HANDLE_BAT(, 806) +HANDLE_BAT(, 807) +HANDLE_BAT(, 808) +HANDLE_BAT(, 809) +HANDLE_BAT(, 810) +HANDLE_BAT(, 811) +HANDLE_BAT(, 812) +HANDLE_BAT(, 813) +HANDLE_BAT(, 814) +HANDLE_BAT(, 815) +HANDLE_BAT(, 816) +HANDLE_BAT(, 817) +HANDLE_BAT(, 818) +HANDLE_BAT(, 819) +HANDLE_BAT(, 820) +HANDLE_BAT(, 821) +HANDLE_BAT(, 822) +HANDLE_BAT(, 823) +HANDLE_BAT(, 824) +HANDLE_BAT(, 825) +HANDLE_BAT(, 826) +HANDLE_BAT(, 827) +HANDLE_BAT(, 828) +HANDLE_BAT(, 829) +HANDLE_BAT(, 830) +HANDLE_BAT(, 831) +HANDLE_BAT(, 832) +HANDLE_BAT(, 833) +HANDLE_BAT(, 834) +HANDLE_BAT(, 835) +HANDLE_BAT(, 836) +HANDLE_BAT(, 837) +HANDLE_BAT(, 838) +HANDLE_BAT(, 839) +HANDLE_BAT(, 840) +HANDLE_BAT(, 841) +HANDLE_BAT(, 842) +HANDLE_BAT(, 843) +HANDLE_BAT(, 844) +HANDLE_BAT(, 845) +HANDLE_BAT(, 846) +HANDLE_BAT(, 847) +HANDLE_BAT(, 848) +HANDLE_BAT(, 849) +HANDLE_BAT(, 850) +HANDLE_BAT(, 851) +HANDLE_BAT(, 852) +HANDLE_BAT(, 853) +HANDLE_BAT(, 854) +HANDLE_BAT(, 855) +HANDLE_BAT(, 856) +HANDLE_BAT(, 857) +HANDLE_BAT(, 858) +HANDLE_BAT(, 859) +HANDLE_BAT(, 860) +HANDLE_BAT(, 861) +HANDLE_BAT(, 862) +HANDLE_BAT(, 863) +HANDLE_BAT(, 864) +HANDLE_BAT(, 865) +HANDLE_BAT(, 866) +HANDLE_BAT(, 867) +HANDLE_BAT(, 868) +HANDLE_BAT(, 869) +HANDLE_BAT(, 870) +HANDLE_BAT(, 871) +HANDLE_BAT(, 872) +HANDLE_BAT(, 873) +HANDLE_BAT(, 874) +HANDLE_BAT(, 875) +HANDLE_BAT(, 876) +HANDLE_BAT(, 877) +HANDLE_BAT(, 878) +HANDLE_BAT(, 879) +HANDLE_BAT(, 880) +HANDLE_BAT(, 881) +HANDLE_BAT(, 882) +HANDLE_BAT(, 883) +HANDLE_BAT(, 884) +HANDLE_BAT(, 885) +HANDLE_BAT(, 886) +HANDLE_BAT(, 887) +HANDLE_BAT(, 888) +HANDLE_BAT(, 889) +HANDLE_BAT(, 890) +HANDLE_BAT(, 891) +HANDLE_BAT(, 892) +HANDLE_BAT(, 893) +HANDLE_BAT(, 894) +HANDLE_BAT(, 895) +HANDLE_BAT(, 896) +HANDLE_BAT(, 897) +HANDLE_BAT(, 898) +HANDLE_BAT(, 899) +HANDLE_BAT(, 900) +HANDLE_BAT(, 901) +HANDLE_BAT(, 902) +HANDLE_BAT(, 903) +HANDLE_BAT(, 904) +HANDLE_BAT(, 905) +HANDLE_BAT(, 906) +HANDLE_BAT(, 907) +HANDLE_BAT(, 908) +HANDLE_BAT(, 909) +HANDLE_BAT(, 910) +HANDLE_BAT(, 911) +HANDLE_BAT(, 912) +HANDLE_BAT(, 913) +HANDLE_BAT(, 914) +HANDLE_BAT(, 915) +HANDLE_BAT(, 916) +HANDLE_BAT(, 917) +HANDLE_BAT(, 918) +HANDLE_BAT(, 919) +HANDLE_BAT(, 920) +HANDLE_BAT(, 921) +HANDLE_BAT(, 922) +HANDLE_BAT(, 923) +HANDLE_BAT(, 924) +HANDLE_BAT(, 925) +HANDLE_BAT(, 926) +HANDLE_BAT(, 927) +HANDLE_BAT(, 928) +HANDLE_BAT(, 929) +HANDLE_BAT(, 930) +HANDLE_BAT(, 931) +HANDLE_BAT(, 932) +HANDLE_BAT(, 933) +HANDLE_BAT(, 934) +HANDLE_BAT(, 935) +HANDLE_BAT(, 936) +HANDLE_BAT(, 937) +HANDLE_BAT(, 938) +HANDLE_BAT(, 939) +HANDLE_BAT(, 940) +HANDLE_BAT(, 941) +HANDLE_BAT(, 942) +HANDLE_BAT(, 943) +HANDLE_BAT(, 944) +HANDLE_BAT(, 945) +HANDLE_BAT(, 946) +HANDLE_BAT(, 947) +HANDLE_BAT(, 948) +HANDLE_BAT(, 949) +HANDLE_BAT(, 950) +HANDLE_BAT(, 951) +HANDLE_BAT(, 952) +HANDLE_BAT(, 953) +HANDLE_BAT(, 954) +HANDLE_BAT(, 955) +HANDLE_BAT(, 956) +HANDLE_BAT(, 957) +HANDLE_BAT(, 958) +HANDLE_BAT(, 959) +HANDLE_BAT(, 960) +HANDLE_BAT(, 961) +HANDLE_BAT(, 962) +HANDLE_BAT(, 963) +HANDLE_BAT(, 964) +HANDLE_BAT(, 965) +HANDLE_BAT(, 966) +HANDLE_BAT(, 967) +HANDLE_BAT(, 968) +HANDLE_BAT(, 969) +HANDLE_BAT(, 970) +HANDLE_BAT(, 971) +HANDLE_BAT(, 972) +HANDLE_BAT(, 973) +HANDLE_BAT(, 974) +HANDLE_BAT(, 975) +HANDLE_BAT(, 976) +HANDLE_BAT(, 977) +HANDLE_BAT(, 978) +HANDLE_BAT(, 979) +HANDLE_BAT(, 980) +HANDLE_BAT(, 981) +HANDLE_BAT(, 982) +HANDLE_BAT(, 983) +HANDLE_BAT(, 984) +HANDLE_BAT(, 985) +HANDLE_BAT(, 986) +HANDLE_BAT(, 987) +HANDLE_BAT(, 988) +HANDLE_BAT(, 989) +HANDLE_BAT(, 990) +HANDLE_BAT(, 991) +HANDLE_BAT(, 992) +HANDLE_BAT(, 993) +HANDLE_BAT(, 994) +HANDLE_BAT(, 995) +HANDLE_BAT(, 996) +HANDLE_BAT(, 997) +HANDLE_BAT(, 998) +HANDLE_BAT(, 999) +HANDLE_BAT(, 1000) +HANDLE_BAT(, 1001) +HANDLE_BAT(, 1002) +HANDLE_BAT(, 1003) +HANDLE_BAT(, 1004) +HANDLE_BAT(, 1005) +HANDLE_BAT(, 1006) +HANDLE_BAT(, 1007) +HANDLE_BAT(, 1008) +HANDLE_BAT(, 1009) +HANDLE_BAT(, 1010) +HANDLE_BAT(, 1011) +HANDLE_BAT(, 1012) +HANDLE_BAT(, 1013) +HANDLE_BAT(, 1014) +HANDLE_BAT(, 1015) +HANDLE_BAT(, 1016) +HANDLE_BAT(, 1017) +HANDLE_BAT(, 1018) +HANDLE_BAT(, 1019) +HANDLE_BAT(, 1020) +HANDLE_BAT(, 1021) +HANDLE_BAT(, 1022) +HANDLE_BAT(, 1023) +HANDLE_BAT(, 1024) + +#else + +HANDLE_BAT(APINT_TYPE_PREFIX, 1) +HANDLE_BAT(APINT_TYPE_PREFIX, 2) +HANDLE_BAT(APINT_TYPE_PREFIX, 3) +HANDLE_BAT(APINT_TYPE_PREFIX, 4) +HANDLE_BAT(APINT_TYPE_PREFIX, 5) +HANDLE_BAT(APINT_TYPE_PREFIX, 6) +HANDLE_BAT(APINT_TYPE_PREFIX, 7) +HANDLE_BAT(APINT_TYPE_PREFIX, 8) +HANDLE_BAT(APINT_TYPE_PREFIX, 9) +HANDLE_BAT(APINT_TYPE_PREFIX, 10) +HANDLE_BAT(APINT_TYPE_PREFIX, 11) +HANDLE_BAT(APINT_TYPE_PREFIX, 12) +HANDLE_BAT(APINT_TYPE_PREFIX, 13) +HANDLE_BAT(APINT_TYPE_PREFIX, 14) +HANDLE_BAT(APINT_TYPE_PREFIX, 15) +HANDLE_BAT(APINT_TYPE_PREFIX, 16) +HANDLE_BAT(APINT_TYPE_PREFIX, 17) +HANDLE_BAT(APINT_TYPE_PREFIX, 18) +HANDLE_BAT(APINT_TYPE_PREFIX, 19) +HANDLE_BAT(APINT_TYPE_PREFIX, 20) +HANDLE_BAT(APINT_TYPE_PREFIX, 21) +HANDLE_BAT(APINT_TYPE_PREFIX, 22) +HANDLE_BAT(APINT_TYPE_PREFIX, 23) +HANDLE_BAT(APINT_TYPE_PREFIX, 24) +HANDLE_BAT(APINT_TYPE_PREFIX, 25) +HANDLE_BAT(APINT_TYPE_PREFIX, 26) +HANDLE_BAT(APINT_TYPE_PREFIX, 27) +HANDLE_BAT(APINT_TYPE_PREFIX, 28) +HANDLE_BAT(APINT_TYPE_PREFIX, 29) +HANDLE_BAT(APINT_TYPE_PREFIX, 30) +HANDLE_BAT(APINT_TYPE_PREFIX, 31) +HANDLE_BAT(APINT_TYPE_PREFIX, 32) +HANDLE_BAT(APINT_TYPE_PREFIX, 33) +HANDLE_BAT(APINT_TYPE_PREFIX, 34) +HANDLE_BAT(APINT_TYPE_PREFIX, 35) +HANDLE_BAT(APINT_TYPE_PREFIX, 36) +HANDLE_BAT(APINT_TYPE_PREFIX, 37) +HANDLE_BAT(APINT_TYPE_PREFIX, 38) +HANDLE_BAT(APINT_TYPE_PREFIX, 39) +HANDLE_BAT(APINT_TYPE_PREFIX, 40) +HANDLE_BAT(APINT_TYPE_PREFIX, 41) +HANDLE_BAT(APINT_TYPE_PREFIX, 42) +HANDLE_BAT(APINT_TYPE_PREFIX, 43) +HANDLE_BAT(APINT_TYPE_PREFIX, 44) +HANDLE_BAT(APINT_TYPE_PREFIX, 45) +HANDLE_BAT(APINT_TYPE_PREFIX, 46) +HANDLE_BAT(APINT_TYPE_PREFIX, 47) +HANDLE_BAT(APINT_TYPE_PREFIX, 48) +HANDLE_BAT(APINT_TYPE_PREFIX, 49) +HANDLE_BAT(APINT_TYPE_PREFIX, 50) +HANDLE_BAT(APINT_TYPE_PREFIX, 51) +HANDLE_BAT(APINT_TYPE_PREFIX, 52) +HANDLE_BAT(APINT_TYPE_PREFIX, 53) +HANDLE_BAT(APINT_TYPE_PREFIX, 54) +HANDLE_BAT(APINT_TYPE_PREFIX, 55) +HANDLE_BAT(APINT_TYPE_PREFIX, 56) +HANDLE_BAT(APINT_TYPE_PREFIX, 57) +HANDLE_BAT(APINT_TYPE_PREFIX, 58) +HANDLE_BAT(APINT_TYPE_PREFIX, 59) +HANDLE_BAT(APINT_TYPE_PREFIX, 60) +HANDLE_BAT(APINT_TYPE_PREFIX, 61) +HANDLE_BAT(APINT_TYPE_PREFIX, 62) +HANDLE_BAT(APINT_TYPE_PREFIX, 63) + +#ifdef APINT_DEFINE_INT64 +HANDLE_BAT(APINT_TYPE_PREFIX, 64) +#endif + +/*#if AUTOPILOT_VERSION >= 1 */ + +HANDLE_BAT(APINT_TYPE_PREFIX, 65) +HANDLE_BAT(APINT_TYPE_PREFIX, 66) +HANDLE_BAT(APINT_TYPE_PREFIX, 67) +HANDLE_BAT(APINT_TYPE_PREFIX, 68) +HANDLE_BAT(APINT_TYPE_PREFIX, 69) +HANDLE_BAT(APINT_TYPE_PREFIX, 70) +HANDLE_BAT(APINT_TYPE_PREFIX, 71) +HANDLE_BAT(APINT_TYPE_PREFIX, 72) +HANDLE_BAT(APINT_TYPE_PREFIX, 73) +HANDLE_BAT(APINT_TYPE_PREFIX, 74) +HANDLE_BAT(APINT_TYPE_PREFIX, 75) +HANDLE_BAT(APINT_TYPE_PREFIX, 76) +HANDLE_BAT(APINT_TYPE_PREFIX, 77) +HANDLE_BAT(APINT_TYPE_PREFIX, 78) +HANDLE_BAT(APINT_TYPE_PREFIX, 79) +HANDLE_BAT(APINT_TYPE_PREFIX, 80) +HANDLE_BAT(APINT_TYPE_PREFIX, 81) +HANDLE_BAT(APINT_TYPE_PREFIX, 82) +HANDLE_BAT(APINT_TYPE_PREFIX, 83) +HANDLE_BAT(APINT_TYPE_PREFIX, 84) +HANDLE_BAT(APINT_TYPE_PREFIX, 85) +HANDLE_BAT(APINT_TYPE_PREFIX, 86) +HANDLE_BAT(APINT_TYPE_PREFIX, 87) +HANDLE_BAT(APINT_TYPE_PREFIX, 88) +HANDLE_BAT(APINT_TYPE_PREFIX, 89) +HANDLE_BAT(APINT_TYPE_PREFIX, 90) +HANDLE_BAT(APINT_TYPE_PREFIX, 91) +HANDLE_BAT(APINT_TYPE_PREFIX, 92) +HANDLE_BAT(APINT_TYPE_PREFIX, 93) +HANDLE_BAT(APINT_TYPE_PREFIX, 94) +HANDLE_BAT(APINT_TYPE_PREFIX, 95) +HANDLE_BAT(APINT_TYPE_PREFIX, 96) +HANDLE_BAT(APINT_TYPE_PREFIX, 97) +HANDLE_BAT(APINT_TYPE_PREFIX, 98) +HANDLE_BAT(APINT_TYPE_PREFIX, 99) +HANDLE_BAT(APINT_TYPE_PREFIX, 100) +HANDLE_BAT(APINT_TYPE_PREFIX, 101) +HANDLE_BAT(APINT_TYPE_PREFIX, 102) +HANDLE_BAT(APINT_TYPE_PREFIX, 103) +HANDLE_BAT(APINT_TYPE_PREFIX, 104) +HANDLE_BAT(APINT_TYPE_PREFIX, 105) +HANDLE_BAT(APINT_TYPE_PREFIX, 106) +HANDLE_BAT(APINT_TYPE_PREFIX, 107) +HANDLE_BAT(APINT_TYPE_PREFIX, 108) +HANDLE_BAT(APINT_TYPE_PREFIX, 109) +HANDLE_BAT(APINT_TYPE_PREFIX, 110) +HANDLE_BAT(APINT_TYPE_PREFIX, 111) +HANDLE_BAT(APINT_TYPE_PREFIX, 112) +HANDLE_BAT(APINT_TYPE_PREFIX, 113) +HANDLE_BAT(APINT_TYPE_PREFIX, 114) +HANDLE_BAT(APINT_TYPE_PREFIX, 115) +HANDLE_BAT(APINT_TYPE_PREFIX, 116) +HANDLE_BAT(APINT_TYPE_PREFIX, 117) +HANDLE_BAT(APINT_TYPE_PREFIX, 118) +HANDLE_BAT(APINT_TYPE_PREFIX, 119) +HANDLE_BAT(APINT_TYPE_PREFIX, 120) +HANDLE_BAT(APINT_TYPE_PREFIX, 121) +HANDLE_BAT(APINT_TYPE_PREFIX, 122) +HANDLE_BAT(APINT_TYPE_PREFIX, 123) +HANDLE_BAT(APINT_TYPE_PREFIX, 124) +HANDLE_BAT(APINT_TYPE_PREFIX, 125) +HANDLE_BAT(APINT_TYPE_PREFIX, 126) +HANDLE_BAT(APINT_TYPE_PREFIX, 127) +HANDLE_BAT(APINT_TYPE_PREFIX, 128) + +/*#endif*/ + + +/*#ifdef EXTENDED_GCC*/ + +HANDLE_BAT(APINT_TYPE_PREFIX, 129) +HANDLE_BAT(APINT_TYPE_PREFIX, 130) +HANDLE_BAT(APINT_TYPE_PREFIX, 131) +HANDLE_BAT(APINT_TYPE_PREFIX, 132) +HANDLE_BAT(APINT_TYPE_PREFIX, 133) +HANDLE_BAT(APINT_TYPE_PREFIX, 134) +HANDLE_BAT(APINT_TYPE_PREFIX, 135) +HANDLE_BAT(APINT_TYPE_PREFIX, 136) +HANDLE_BAT(APINT_TYPE_PREFIX, 137) +HANDLE_BAT(APINT_TYPE_PREFIX, 138) +HANDLE_BAT(APINT_TYPE_PREFIX, 139) +HANDLE_BAT(APINT_TYPE_PREFIX, 140) +HANDLE_BAT(APINT_TYPE_PREFIX, 141) +HANDLE_BAT(APINT_TYPE_PREFIX, 142) +HANDLE_BAT(APINT_TYPE_PREFIX, 143) +HANDLE_BAT(APINT_TYPE_PREFIX, 144) +HANDLE_BAT(APINT_TYPE_PREFIX, 145) +HANDLE_BAT(APINT_TYPE_PREFIX, 146) +HANDLE_BAT(APINT_TYPE_PREFIX, 147) +HANDLE_BAT(APINT_TYPE_PREFIX, 148) +HANDLE_BAT(APINT_TYPE_PREFIX, 149) +HANDLE_BAT(APINT_TYPE_PREFIX, 150) +HANDLE_BAT(APINT_TYPE_PREFIX, 151) +HANDLE_BAT(APINT_TYPE_PREFIX, 152) +HANDLE_BAT(APINT_TYPE_PREFIX, 153) +HANDLE_BAT(APINT_TYPE_PREFIX, 154) +HANDLE_BAT(APINT_TYPE_PREFIX, 155) +HANDLE_BAT(APINT_TYPE_PREFIX, 156) +HANDLE_BAT(APINT_TYPE_PREFIX, 157) +HANDLE_BAT(APINT_TYPE_PREFIX, 158) +HANDLE_BAT(APINT_TYPE_PREFIX, 159) +HANDLE_BAT(APINT_TYPE_PREFIX, 160) +HANDLE_BAT(APINT_TYPE_PREFIX, 161) +HANDLE_BAT(APINT_TYPE_PREFIX, 162) +HANDLE_BAT(APINT_TYPE_PREFIX, 163) +HANDLE_BAT(APINT_TYPE_PREFIX, 164) +HANDLE_BAT(APINT_TYPE_PREFIX, 165) +HANDLE_BAT(APINT_TYPE_PREFIX, 166) +HANDLE_BAT(APINT_TYPE_PREFIX, 167) +HANDLE_BAT(APINT_TYPE_PREFIX, 168) +HANDLE_BAT(APINT_TYPE_PREFIX, 169) +HANDLE_BAT(APINT_TYPE_PREFIX, 170) +HANDLE_BAT(APINT_TYPE_PREFIX, 171) +HANDLE_BAT(APINT_TYPE_PREFIX, 172) +HANDLE_BAT(APINT_TYPE_PREFIX, 173) +HANDLE_BAT(APINT_TYPE_PREFIX, 174) +HANDLE_BAT(APINT_TYPE_PREFIX, 175) +HANDLE_BAT(APINT_TYPE_PREFIX, 176) +HANDLE_BAT(APINT_TYPE_PREFIX, 177) +HANDLE_BAT(APINT_TYPE_PREFIX, 178) +HANDLE_BAT(APINT_TYPE_PREFIX, 179) +HANDLE_BAT(APINT_TYPE_PREFIX, 180) +HANDLE_BAT(APINT_TYPE_PREFIX, 181) +HANDLE_BAT(APINT_TYPE_PREFIX, 182) +HANDLE_BAT(APINT_TYPE_PREFIX, 183) +HANDLE_BAT(APINT_TYPE_PREFIX, 184) +HANDLE_BAT(APINT_TYPE_PREFIX, 185) +HANDLE_BAT(APINT_TYPE_PREFIX, 186) +HANDLE_BAT(APINT_TYPE_PREFIX, 187) +HANDLE_BAT(APINT_TYPE_PREFIX, 188) +HANDLE_BAT(APINT_TYPE_PREFIX, 189) +HANDLE_BAT(APINT_TYPE_PREFIX, 190) +HANDLE_BAT(APINT_TYPE_PREFIX, 191) +HANDLE_BAT(APINT_TYPE_PREFIX, 192) +HANDLE_BAT(APINT_TYPE_PREFIX, 193) +HANDLE_BAT(APINT_TYPE_PREFIX, 194) +HANDLE_BAT(APINT_TYPE_PREFIX, 195) +HANDLE_BAT(APINT_TYPE_PREFIX, 196) +HANDLE_BAT(APINT_TYPE_PREFIX, 197) +HANDLE_BAT(APINT_TYPE_PREFIX, 198) +HANDLE_BAT(APINT_TYPE_PREFIX, 199) +HANDLE_BAT(APINT_TYPE_PREFIX, 200) +HANDLE_BAT(APINT_TYPE_PREFIX, 201) +HANDLE_BAT(APINT_TYPE_PREFIX, 202) +HANDLE_BAT(APINT_TYPE_PREFIX, 203) +HANDLE_BAT(APINT_TYPE_PREFIX, 204) +HANDLE_BAT(APINT_TYPE_PREFIX, 205) +HANDLE_BAT(APINT_TYPE_PREFIX, 206) +HANDLE_BAT(APINT_TYPE_PREFIX, 207) +HANDLE_BAT(APINT_TYPE_PREFIX, 208) +HANDLE_BAT(APINT_TYPE_PREFIX, 209) +HANDLE_BAT(APINT_TYPE_PREFIX, 210) +HANDLE_BAT(APINT_TYPE_PREFIX, 211) +HANDLE_BAT(APINT_TYPE_PREFIX, 212) +HANDLE_BAT(APINT_TYPE_PREFIX, 213) +HANDLE_BAT(APINT_TYPE_PREFIX, 214) +HANDLE_BAT(APINT_TYPE_PREFIX, 215) +HANDLE_BAT(APINT_TYPE_PREFIX, 216) +HANDLE_BAT(APINT_TYPE_PREFIX, 217) +HANDLE_BAT(APINT_TYPE_PREFIX, 218) +HANDLE_BAT(APINT_TYPE_PREFIX, 219) +HANDLE_BAT(APINT_TYPE_PREFIX, 220) +HANDLE_BAT(APINT_TYPE_PREFIX, 221) +HANDLE_BAT(APINT_TYPE_PREFIX, 222) +HANDLE_BAT(APINT_TYPE_PREFIX, 223) +HANDLE_BAT(APINT_TYPE_PREFIX, 224) +HANDLE_BAT(APINT_TYPE_PREFIX, 225) +HANDLE_BAT(APINT_TYPE_PREFIX, 226) +HANDLE_BAT(APINT_TYPE_PREFIX, 227) +HANDLE_BAT(APINT_TYPE_PREFIX, 228) +HANDLE_BAT(APINT_TYPE_PREFIX, 229) +HANDLE_BAT(APINT_TYPE_PREFIX, 230) +HANDLE_BAT(APINT_TYPE_PREFIX, 231) +HANDLE_BAT(APINT_TYPE_PREFIX, 232) +HANDLE_BAT(APINT_TYPE_PREFIX, 233) +HANDLE_BAT(APINT_TYPE_PREFIX, 234) +HANDLE_BAT(APINT_TYPE_PREFIX, 235) +HANDLE_BAT(APINT_TYPE_PREFIX, 236) +HANDLE_BAT(APINT_TYPE_PREFIX, 237) +HANDLE_BAT(APINT_TYPE_PREFIX, 238) +HANDLE_BAT(APINT_TYPE_PREFIX, 239) +HANDLE_BAT(APINT_TYPE_PREFIX, 240) +HANDLE_BAT(APINT_TYPE_PREFIX, 241) +HANDLE_BAT(APINT_TYPE_PREFIX, 242) +HANDLE_BAT(APINT_TYPE_PREFIX, 243) +HANDLE_BAT(APINT_TYPE_PREFIX, 244) +HANDLE_BAT(APINT_TYPE_PREFIX, 245) +HANDLE_BAT(APINT_TYPE_PREFIX, 246) +HANDLE_BAT(APINT_TYPE_PREFIX, 247) +HANDLE_BAT(APINT_TYPE_PREFIX, 248) +HANDLE_BAT(APINT_TYPE_PREFIX, 249) +HANDLE_BAT(APINT_TYPE_PREFIX, 250) +HANDLE_BAT(APINT_TYPE_PREFIX, 251) +HANDLE_BAT(APINT_TYPE_PREFIX, 252) +HANDLE_BAT(APINT_TYPE_PREFIX, 253) +HANDLE_BAT(APINT_TYPE_PREFIX, 254) +HANDLE_BAT(APINT_TYPE_PREFIX, 255) +HANDLE_BAT(APINT_TYPE_PREFIX, 256) +HANDLE_BAT(APINT_TYPE_PREFIX, 257) +HANDLE_BAT(APINT_TYPE_PREFIX, 258) +HANDLE_BAT(APINT_TYPE_PREFIX, 259) +HANDLE_BAT(APINT_TYPE_PREFIX, 260) +HANDLE_BAT(APINT_TYPE_PREFIX, 261) +HANDLE_BAT(APINT_TYPE_PREFIX, 262) +HANDLE_BAT(APINT_TYPE_PREFIX, 263) +HANDLE_BAT(APINT_TYPE_PREFIX, 264) +HANDLE_BAT(APINT_TYPE_PREFIX, 265) +HANDLE_BAT(APINT_TYPE_PREFIX, 266) +HANDLE_BAT(APINT_TYPE_PREFIX, 267) +HANDLE_BAT(APINT_TYPE_PREFIX, 268) +HANDLE_BAT(APINT_TYPE_PREFIX, 269) +HANDLE_BAT(APINT_TYPE_PREFIX, 270) +HANDLE_BAT(APINT_TYPE_PREFIX, 271) +HANDLE_BAT(APINT_TYPE_PREFIX, 272) +HANDLE_BAT(APINT_TYPE_PREFIX, 273) +HANDLE_BAT(APINT_TYPE_PREFIX, 274) +HANDLE_BAT(APINT_TYPE_PREFIX, 275) +HANDLE_BAT(APINT_TYPE_PREFIX, 276) +HANDLE_BAT(APINT_TYPE_PREFIX, 277) +HANDLE_BAT(APINT_TYPE_PREFIX, 278) +HANDLE_BAT(APINT_TYPE_PREFIX, 279) +HANDLE_BAT(APINT_TYPE_PREFIX, 280) +HANDLE_BAT(APINT_TYPE_PREFIX, 281) +HANDLE_BAT(APINT_TYPE_PREFIX, 282) +HANDLE_BAT(APINT_TYPE_PREFIX, 283) +HANDLE_BAT(APINT_TYPE_PREFIX, 284) +HANDLE_BAT(APINT_TYPE_PREFIX, 285) +HANDLE_BAT(APINT_TYPE_PREFIX, 286) +HANDLE_BAT(APINT_TYPE_PREFIX, 287) +HANDLE_BAT(APINT_TYPE_PREFIX, 288) +HANDLE_BAT(APINT_TYPE_PREFIX, 289) +HANDLE_BAT(APINT_TYPE_PREFIX, 290) +HANDLE_BAT(APINT_TYPE_PREFIX, 291) +HANDLE_BAT(APINT_TYPE_PREFIX, 292) +HANDLE_BAT(APINT_TYPE_PREFIX, 293) +HANDLE_BAT(APINT_TYPE_PREFIX, 294) +HANDLE_BAT(APINT_TYPE_PREFIX, 295) +HANDLE_BAT(APINT_TYPE_PREFIX, 296) +HANDLE_BAT(APINT_TYPE_PREFIX, 297) +HANDLE_BAT(APINT_TYPE_PREFIX, 298) +HANDLE_BAT(APINT_TYPE_PREFIX, 299) +HANDLE_BAT(APINT_TYPE_PREFIX, 300) +HANDLE_BAT(APINT_TYPE_PREFIX, 301) +HANDLE_BAT(APINT_TYPE_PREFIX, 302) +HANDLE_BAT(APINT_TYPE_PREFIX, 303) +HANDLE_BAT(APINT_TYPE_PREFIX, 304) +HANDLE_BAT(APINT_TYPE_PREFIX, 305) +HANDLE_BAT(APINT_TYPE_PREFIX, 306) +HANDLE_BAT(APINT_TYPE_PREFIX, 307) +HANDLE_BAT(APINT_TYPE_PREFIX, 308) +HANDLE_BAT(APINT_TYPE_PREFIX, 309) +HANDLE_BAT(APINT_TYPE_PREFIX, 310) +HANDLE_BAT(APINT_TYPE_PREFIX, 311) +HANDLE_BAT(APINT_TYPE_PREFIX, 312) +HANDLE_BAT(APINT_TYPE_PREFIX, 313) +HANDLE_BAT(APINT_TYPE_PREFIX, 314) +HANDLE_BAT(APINT_TYPE_PREFIX, 315) +HANDLE_BAT(APINT_TYPE_PREFIX, 316) +HANDLE_BAT(APINT_TYPE_PREFIX, 317) +HANDLE_BAT(APINT_TYPE_PREFIX, 318) +HANDLE_BAT(APINT_TYPE_PREFIX, 319) +HANDLE_BAT(APINT_TYPE_PREFIX, 320) +HANDLE_BAT(APINT_TYPE_PREFIX, 321) +HANDLE_BAT(APINT_TYPE_PREFIX, 322) +HANDLE_BAT(APINT_TYPE_PREFIX, 323) +HANDLE_BAT(APINT_TYPE_PREFIX, 324) +HANDLE_BAT(APINT_TYPE_PREFIX, 325) +HANDLE_BAT(APINT_TYPE_PREFIX, 326) +HANDLE_BAT(APINT_TYPE_PREFIX, 327) +HANDLE_BAT(APINT_TYPE_PREFIX, 328) +HANDLE_BAT(APINT_TYPE_PREFIX, 329) +HANDLE_BAT(APINT_TYPE_PREFIX, 330) +HANDLE_BAT(APINT_TYPE_PREFIX, 331) +HANDLE_BAT(APINT_TYPE_PREFIX, 332) +HANDLE_BAT(APINT_TYPE_PREFIX, 333) +HANDLE_BAT(APINT_TYPE_PREFIX, 334) +HANDLE_BAT(APINT_TYPE_PREFIX, 335) +HANDLE_BAT(APINT_TYPE_PREFIX, 336) +HANDLE_BAT(APINT_TYPE_PREFIX, 337) +HANDLE_BAT(APINT_TYPE_PREFIX, 338) +HANDLE_BAT(APINT_TYPE_PREFIX, 339) +HANDLE_BAT(APINT_TYPE_PREFIX, 340) +HANDLE_BAT(APINT_TYPE_PREFIX, 341) +HANDLE_BAT(APINT_TYPE_PREFIX, 342) +HANDLE_BAT(APINT_TYPE_PREFIX, 343) +HANDLE_BAT(APINT_TYPE_PREFIX, 344) +HANDLE_BAT(APINT_TYPE_PREFIX, 345) +HANDLE_BAT(APINT_TYPE_PREFIX, 346) +HANDLE_BAT(APINT_TYPE_PREFIX, 347) +HANDLE_BAT(APINT_TYPE_PREFIX, 348) +HANDLE_BAT(APINT_TYPE_PREFIX, 349) +HANDLE_BAT(APINT_TYPE_PREFIX, 350) +HANDLE_BAT(APINT_TYPE_PREFIX, 351) +HANDLE_BAT(APINT_TYPE_PREFIX, 352) +HANDLE_BAT(APINT_TYPE_PREFIX, 353) +HANDLE_BAT(APINT_TYPE_PREFIX, 354) +HANDLE_BAT(APINT_TYPE_PREFIX, 355) +HANDLE_BAT(APINT_TYPE_PREFIX, 356) +HANDLE_BAT(APINT_TYPE_PREFIX, 357) +HANDLE_BAT(APINT_TYPE_PREFIX, 358) +HANDLE_BAT(APINT_TYPE_PREFIX, 359) +HANDLE_BAT(APINT_TYPE_PREFIX, 360) +HANDLE_BAT(APINT_TYPE_PREFIX, 361) +HANDLE_BAT(APINT_TYPE_PREFIX, 362) +HANDLE_BAT(APINT_TYPE_PREFIX, 363) +HANDLE_BAT(APINT_TYPE_PREFIX, 364) +HANDLE_BAT(APINT_TYPE_PREFIX, 365) +HANDLE_BAT(APINT_TYPE_PREFIX, 366) +HANDLE_BAT(APINT_TYPE_PREFIX, 367) +HANDLE_BAT(APINT_TYPE_PREFIX, 368) +HANDLE_BAT(APINT_TYPE_PREFIX, 369) +HANDLE_BAT(APINT_TYPE_PREFIX, 370) +HANDLE_BAT(APINT_TYPE_PREFIX, 371) +HANDLE_BAT(APINT_TYPE_PREFIX, 372) +HANDLE_BAT(APINT_TYPE_PREFIX, 373) +HANDLE_BAT(APINT_TYPE_PREFIX, 374) +HANDLE_BAT(APINT_TYPE_PREFIX, 375) +HANDLE_BAT(APINT_TYPE_PREFIX, 376) +HANDLE_BAT(APINT_TYPE_PREFIX, 377) +HANDLE_BAT(APINT_TYPE_PREFIX, 378) +HANDLE_BAT(APINT_TYPE_PREFIX, 379) +HANDLE_BAT(APINT_TYPE_PREFIX, 380) +HANDLE_BAT(APINT_TYPE_PREFIX, 381) +HANDLE_BAT(APINT_TYPE_PREFIX, 382) +HANDLE_BAT(APINT_TYPE_PREFIX, 383) +HANDLE_BAT(APINT_TYPE_PREFIX, 384) +HANDLE_BAT(APINT_TYPE_PREFIX, 385) +HANDLE_BAT(APINT_TYPE_PREFIX, 386) +HANDLE_BAT(APINT_TYPE_PREFIX, 387) +HANDLE_BAT(APINT_TYPE_PREFIX, 388) +HANDLE_BAT(APINT_TYPE_PREFIX, 389) +HANDLE_BAT(APINT_TYPE_PREFIX, 390) +HANDLE_BAT(APINT_TYPE_PREFIX, 391) +HANDLE_BAT(APINT_TYPE_PREFIX, 392) +HANDLE_BAT(APINT_TYPE_PREFIX, 393) +HANDLE_BAT(APINT_TYPE_PREFIX, 394) +HANDLE_BAT(APINT_TYPE_PREFIX, 395) +HANDLE_BAT(APINT_TYPE_PREFIX, 396) +HANDLE_BAT(APINT_TYPE_PREFIX, 397) +HANDLE_BAT(APINT_TYPE_PREFIX, 398) +HANDLE_BAT(APINT_TYPE_PREFIX, 399) +HANDLE_BAT(APINT_TYPE_PREFIX, 400) +HANDLE_BAT(APINT_TYPE_PREFIX, 401) +HANDLE_BAT(APINT_TYPE_PREFIX, 402) +HANDLE_BAT(APINT_TYPE_PREFIX, 403) +HANDLE_BAT(APINT_TYPE_PREFIX, 404) +HANDLE_BAT(APINT_TYPE_PREFIX, 405) +HANDLE_BAT(APINT_TYPE_PREFIX, 406) +HANDLE_BAT(APINT_TYPE_PREFIX, 407) +HANDLE_BAT(APINT_TYPE_PREFIX, 408) +HANDLE_BAT(APINT_TYPE_PREFIX, 409) +HANDLE_BAT(APINT_TYPE_PREFIX, 410) +HANDLE_BAT(APINT_TYPE_PREFIX, 411) +HANDLE_BAT(APINT_TYPE_PREFIX, 412) +HANDLE_BAT(APINT_TYPE_PREFIX, 413) +HANDLE_BAT(APINT_TYPE_PREFIX, 414) +HANDLE_BAT(APINT_TYPE_PREFIX, 415) +HANDLE_BAT(APINT_TYPE_PREFIX, 416) +HANDLE_BAT(APINT_TYPE_PREFIX, 417) +HANDLE_BAT(APINT_TYPE_PREFIX, 418) +HANDLE_BAT(APINT_TYPE_PREFIX, 419) +HANDLE_BAT(APINT_TYPE_PREFIX, 420) +HANDLE_BAT(APINT_TYPE_PREFIX, 421) +HANDLE_BAT(APINT_TYPE_PREFIX, 422) +HANDLE_BAT(APINT_TYPE_PREFIX, 423) +HANDLE_BAT(APINT_TYPE_PREFIX, 424) +HANDLE_BAT(APINT_TYPE_PREFIX, 425) +HANDLE_BAT(APINT_TYPE_PREFIX, 426) +HANDLE_BAT(APINT_TYPE_PREFIX, 427) +HANDLE_BAT(APINT_TYPE_PREFIX, 428) +HANDLE_BAT(APINT_TYPE_PREFIX, 429) +HANDLE_BAT(APINT_TYPE_PREFIX, 430) +HANDLE_BAT(APINT_TYPE_PREFIX, 431) +HANDLE_BAT(APINT_TYPE_PREFIX, 432) +HANDLE_BAT(APINT_TYPE_PREFIX, 433) +HANDLE_BAT(APINT_TYPE_PREFIX, 434) +HANDLE_BAT(APINT_TYPE_PREFIX, 435) +HANDLE_BAT(APINT_TYPE_PREFIX, 436) +HANDLE_BAT(APINT_TYPE_PREFIX, 437) +HANDLE_BAT(APINT_TYPE_PREFIX, 438) +HANDLE_BAT(APINT_TYPE_PREFIX, 439) +HANDLE_BAT(APINT_TYPE_PREFIX, 440) +HANDLE_BAT(APINT_TYPE_PREFIX, 441) +HANDLE_BAT(APINT_TYPE_PREFIX, 442) +HANDLE_BAT(APINT_TYPE_PREFIX, 443) +HANDLE_BAT(APINT_TYPE_PREFIX, 444) +HANDLE_BAT(APINT_TYPE_PREFIX, 445) +HANDLE_BAT(APINT_TYPE_PREFIX, 446) +HANDLE_BAT(APINT_TYPE_PREFIX, 447) +HANDLE_BAT(APINT_TYPE_PREFIX, 448) +HANDLE_BAT(APINT_TYPE_PREFIX, 449) +HANDLE_BAT(APINT_TYPE_PREFIX, 450) +HANDLE_BAT(APINT_TYPE_PREFIX, 451) +HANDLE_BAT(APINT_TYPE_PREFIX, 452) +HANDLE_BAT(APINT_TYPE_PREFIX, 453) +HANDLE_BAT(APINT_TYPE_PREFIX, 454) +HANDLE_BAT(APINT_TYPE_PREFIX, 455) +HANDLE_BAT(APINT_TYPE_PREFIX, 456) +HANDLE_BAT(APINT_TYPE_PREFIX, 457) +HANDLE_BAT(APINT_TYPE_PREFIX, 458) +HANDLE_BAT(APINT_TYPE_PREFIX, 459) +HANDLE_BAT(APINT_TYPE_PREFIX, 460) +HANDLE_BAT(APINT_TYPE_PREFIX, 461) +HANDLE_BAT(APINT_TYPE_PREFIX, 462) +HANDLE_BAT(APINT_TYPE_PREFIX, 463) +HANDLE_BAT(APINT_TYPE_PREFIX, 464) +HANDLE_BAT(APINT_TYPE_PREFIX, 465) +HANDLE_BAT(APINT_TYPE_PREFIX, 466) +HANDLE_BAT(APINT_TYPE_PREFIX, 467) +HANDLE_BAT(APINT_TYPE_PREFIX, 468) +HANDLE_BAT(APINT_TYPE_PREFIX, 469) +HANDLE_BAT(APINT_TYPE_PREFIX, 470) +HANDLE_BAT(APINT_TYPE_PREFIX, 471) +HANDLE_BAT(APINT_TYPE_PREFIX, 472) +HANDLE_BAT(APINT_TYPE_PREFIX, 473) +HANDLE_BAT(APINT_TYPE_PREFIX, 474) +HANDLE_BAT(APINT_TYPE_PREFIX, 475) +HANDLE_BAT(APINT_TYPE_PREFIX, 476) +HANDLE_BAT(APINT_TYPE_PREFIX, 477) +HANDLE_BAT(APINT_TYPE_PREFIX, 478) +HANDLE_BAT(APINT_TYPE_PREFIX, 479) +HANDLE_BAT(APINT_TYPE_PREFIX, 480) +HANDLE_BAT(APINT_TYPE_PREFIX, 481) +HANDLE_BAT(APINT_TYPE_PREFIX, 482) +HANDLE_BAT(APINT_TYPE_PREFIX, 483) +HANDLE_BAT(APINT_TYPE_PREFIX, 484) +HANDLE_BAT(APINT_TYPE_PREFIX, 485) +HANDLE_BAT(APINT_TYPE_PREFIX, 486) +HANDLE_BAT(APINT_TYPE_PREFIX, 487) +HANDLE_BAT(APINT_TYPE_PREFIX, 488) +HANDLE_BAT(APINT_TYPE_PREFIX, 489) +HANDLE_BAT(APINT_TYPE_PREFIX, 490) +HANDLE_BAT(APINT_TYPE_PREFIX, 491) +HANDLE_BAT(APINT_TYPE_PREFIX, 492) +HANDLE_BAT(APINT_TYPE_PREFIX, 493) +HANDLE_BAT(APINT_TYPE_PREFIX, 494) +HANDLE_BAT(APINT_TYPE_PREFIX, 495) +HANDLE_BAT(APINT_TYPE_PREFIX, 496) +HANDLE_BAT(APINT_TYPE_PREFIX, 497) +HANDLE_BAT(APINT_TYPE_PREFIX, 498) +HANDLE_BAT(APINT_TYPE_PREFIX, 499) +HANDLE_BAT(APINT_TYPE_PREFIX, 500) +HANDLE_BAT(APINT_TYPE_PREFIX, 501) +HANDLE_BAT(APINT_TYPE_PREFIX, 502) +HANDLE_BAT(APINT_TYPE_PREFIX, 503) +HANDLE_BAT(APINT_TYPE_PREFIX, 504) +HANDLE_BAT(APINT_TYPE_PREFIX, 505) +HANDLE_BAT(APINT_TYPE_PREFIX, 506) +HANDLE_BAT(APINT_TYPE_PREFIX, 507) +HANDLE_BAT(APINT_TYPE_PREFIX, 508) +HANDLE_BAT(APINT_TYPE_PREFIX, 509) +HANDLE_BAT(APINT_TYPE_PREFIX, 510) +HANDLE_BAT(APINT_TYPE_PREFIX, 511) +HANDLE_BAT(APINT_TYPE_PREFIX, 512) +HANDLE_BAT(APINT_TYPE_PREFIX, 513) +HANDLE_BAT(APINT_TYPE_PREFIX, 514) +HANDLE_BAT(APINT_TYPE_PREFIX, 515) +HANDLE_BAT(APINT_TYPE_PREFIX, 516) +HANDLE_BAT(APINT_TYPE_PREFIX, 517) +HANDLE_BAT(APINT_TYPE_PREFIX, 518) +HANDLE_BAT(APINT_TYPE_PREFIX, 519) +HANDLE_BAT(APINT_TYPE_PREFIX, 520) +HANDLE_BAT(APINT_TYPE_PREFIX, 521) +HANDLE_BAT(APINT_TYPE_PREFIX, 522) +HANDLE_BAT(APINT_TYPE_PREFIX, 523) +HANDLE_BAT(APINT_TYPE_PREFIX, 524) +HANDLE_BAT(APINT_TYPE_PREFIX, 525) +HANDLE_BAT(APINT_TYPE_PREFIX, 526) +HANDLE_BAT(APINT_TYPE_PREFIX, 527) +HANDLE_BAT(APINT_TYPE_PREFIX, 528) +HANDLE_BAT(APINT_TYPE_PREFIX, 529) +HANDLE_BAT(APINT_TYPE_PREFIX, 530) +HANDLE_BAT(APINT_TYPE_PREFIX, 531) +HANDLE_BAT(APINT_TYPE_PREFIX, 532) +HANDLE_BAT(APINT_TYPE_PREFIX, 533) +HANDLE_BAT(APINT_TYPE_PREFIX, 534) +HANDLE_BAT(APINT_TYPE_PREFIX, 535) +HANDLE_BAT(APINT_TYPE_PREFIX, 536) +HANDLE_BAT(APINT_TYPE_PREFIX, 537) +HANDLE_BAT(APINT_TYPE_PREFIX, 538) +HANDLE_BAT(APINT_TYPE_PREFIX, 539) +HANDLE_BAT(APINT_TYPE_PREFIX, 540) +HANDLE_BAT(APINT_TYPE_PREFIX, 541) +HANDLE_BAT(APINT_TYPE_PREFIX, 542) +HANDLE_BAT(APINT_TYPE_PREFIX, 543) +HANDLE_BAT(APINT_TYPE_PREFIX, 544) +HANDLE_BAT(APINT_TYPE_PREFIX, 545) +HANDLE_BAT(APINT_TYPE_PREFIX, 546) +HANDLE_BAT(APINT_TYPE_PREFIX, 547) +HANDLE_BAT(APINT_TYPE_PREFIX, 548) +HANDLE_BAT(APINT_TYPE_PREFIX, 549) +HANDLE_BAT(APINT_TYPE_PREFIX, 550) +HANDLE_BAT(APINT_TYPE_PREFIX, 551) +HANDLE_BAT(APINT_TYPE_PREFIX, 552) +HANDLE_BAT(APINT_TYPE_PREFIX, 553) +HANDLE_BAT(APINT_TYPE_PREFIX, 554) +HANDLE_BAT(APINT_TYPE_PREFIX, 555) +HANDLE_BAT(APINT_TYPE_PREFIX, 556) +HANDLE_BAT(APINT_TYPE_PREFIX, 557) +HANDLE_BAT(APINT_TYPE_PREFIX, 558) +HANDLE_BAT(APINT_TYPE_PREFIX, 559) +HANDLE_BAT(APINT_TYPE_PREFIX, 560) +HANDLE_BAT(APINT_TYPE_PREFIX, 561) +HANDLE_BAT(APINT_TYPE_PREFIX, 562) +HANDLE_BAT(APINT_TYPE_PREFIX, 563) +HANDLE_BAT(APINT_TYPE_PREFIX, 564) +HANDLE_BAT(APINT_TYPE_PREFIX, 565) +HANDLE_BAT(APINT_TYPE_PREFIX, 566) +HANDLE_BAT(APINT_TYPE_PREFIX, 567) +HANDLE_BAT(APINT_TYPE_PREFIX, 568) +HANDLE_BAT(APINT_TYPE_PREFIX, 569) +HANDLE_BAT(APINT_TYPE_PREFIX, 570) +HANDLE_BAT(APINT_TYPE_PREFIX, 571) +HANDLE_BAT(APINT_TYPE_PREFIX, 572) +HANDLE_BAT(APINT_TYPE_PREFIX, 573) +HANDLE_BAT(APINT_TYPE_PREFIX, 574) +HANDLE_BAT(APINT_TYPE_PREFIX, 575) +HANDLE_BAT(APINT_TYPE_PREFIX, 576) +HANDLE_BAT(APINT_TYPE_PREFIX, 577) +HANDLE_BAT(APINT_TYPE_PREFIX, 578) +HANDLE_BAT(APINT_TYPE_PREFIX, 579) +HANDLE_BAT(APINT_TYPE_PREFIX, 580) +HANDLE_BAT(APINT_TYPE_PREFIX, 581) +HANDLE_BAT(APINT_TYPE_PREFIX, 582) +HANDLE_BAT(APINT_TYPE_PREFIX, 583) +HANDLE_BAT(APINT_TYPE_PREFIX, 584) +HANDLE_BAT(APINT_TYPE_PREFIX, 585) +HANDLE_BAT(APINT_TYPE_PREFIX, 586) +HANDLE_BAT(APINT_TYPE_PREFIX, 587) +HANDLE_BAT(APINT_TYPE_PREFIX, 588) +HANDLE_BAT(APINT_TYPE_PREFIX, 589) +HANDLE_BAT(APINT_TYPE_PREFIX, 590) +HANDLE_BAT(APINT_TYPE_PREFIX, 591) +HANDLE_BAT(APINT_TYPE_PREFIX, 592) +HANDLE_BAT(APINT_TYPE_PREFIX, 593) +HANDLE_BAT(APINT_TYPE_PREFIX, 594) +HANDLE_BAT(APINT_TYPE_PREFIX, 595) +HANDLE_BAT(APINT_TYPE_PREFIX, 596) +HANDLE_BAT(APINT_TYPE_PREFIX, 597) +HANDLE_BAT(APINT_TYPE_PREFIX, 598) +HANDLE_BAT(APINT_TYPE_PREFIX, 599) +HANDLE_BAT(APINT_TYPE_PREFIX, 600) +HANDLE_BAT(APINT_TYPE_PREFIX, 601) +HANDLE_BAT(APINT_TYPE_PREFIX, 602) +HANDLE_BAT(APINT_TYPE_PREFIX, 603) +HANDLE_BAT(APINT_TYPE_PREFIX, 604) +HANDLE_BAT(APINT_TYPE_PREFIX, 605) +HANDLE_BAT(APINT_TYPE_PREFIX, 606) +HANDLE_BAT(APINT_TYPE_PREFIX, 607) +HANDLE_BAT(APINT_TYPE_PREFIX, 608) +HANDLE_BAT(APINT_TYPE_PREFIX, 609) +HANDLE_BAT(APINT_TYPE_PREFIX, 610) +HANDLE_BAT(APINT_TYPE_PREFIX, 611) +HANDLE_BAT(APINT_TYPE_PREFIX, 612) +HANDLE_BAT(APINT_TYPE_PREFIX, 613) +HANDLE_BAT(APINT_TYPE_PREFIX, 614) +HANDLE_BAT(APINT_TYPE_PREFIX, 615) +HANDLE_BAT(APINT_TYPE_PREFIX, 616) +HANDLE_BAT(APINT_TYPE_PREFIX, 617) +HANDLE_BAT(APINT_TYPE_PREFIX, 618) +HANDLE_BAT(APINT_TYPE_PREFIX, 619) +HANDLE_BAT(APINT_TYPE_PREFIX, 620) +HANDLE_BAT(APINT_TYPE_PREFIX, 621) +HANDLE_BAT(APINT_TYPE_PREFIX, 622) +HANDLE_BAT(APINT_TYPE_PREFIX, 623) +HANDLE_BAT(APINT_TYPE_PREFIX, 624) +HANDLE_BAT(APINT_TYPE_PREFIX, 625) +HANDLE_BAT(APINT_TYPE_PREFIX, 626) +HANDLE_BAT(APINT_TYPE_PREFIX, 627) +HANDLE_BAT(APINT_TYPE_PREFIX, 628) +HANDLE_BAT(APINT_TYPE_PREFIX, 629) +HANDLE_BAT(APINT_TYPE_PREFIX, 630) +HANDLE_BAT(APINT_TYPE_PREFIX, 631) +HANDLE_BAT(APINT_TYPE_PREFIX, 632) +HANDLE_BAT(APINT_TYPE_PREFIX, 633) +HANDLE_BAT(APINT_TYPE_PREFIX, 634) +HANDLE_BAT(APINT_TYPE_PREFIX, 635) +HANDLE_BAT(APINT_TYPE_PREFIX, 636) +HANDLE_BAT(APINT_TYPE_PREFIX, 637) +HANDLE_BAT(APINT_TYPE_PREFIX, 638) +HANDLE_BAT(APINT_TYPE_PREFIX, 639) +HANDLE_BAT(APINT_TYPE_PREFIX, 640) +HANDLE_BAT(APINT_TYPE_PREFIX, 641) +HANDLE_BAT(APINT_TYPE_PREFIX, 642) +HANDLE_BAT(APINT_TYPE_PREFIX, 643) +HANDLE_BAT(APINT_TYPE_PREFIX, 644) +HANDLE_BAT(APINT_TYPE_PREFIX, 645) +HANDLE_BAT(APINT_TYPE_PREFIX, 646) +HANDLE_BAT(APINT_TYPE_PREFIX, 647) +HANDLE_BAT(APINT_TYPE_PREFIX, 648) +HANDLE_BAT(APINT_TYPE_PREFIX, 649) +HANDLE_BAT(APINT_TYPE_PREFIX, 650) +HANDLE_BAT(APINT_TYPE_PREFIX, 651) +HANDLE_BAT(APINT_TYPE_PREFIX, 652) +HANDLE_BAT(APINT_TYPE_PREFIX, 653) +HANDLE_BAT(APINT_TYPE_PREFIX, 654) +HANDLE_BAT(APINT_TYPE_PREFIX, 655) +HANDLE_BAT(APINT_TYPE_PREFIX, 656) +HANDLE_BAT(APINT_TYPE_PREFIX, 657) +HANDLE_BAT(APINT_TYPE_PREFIX, 658) +HANDLE_BAT(APINT_TYPE_PREFIX, 659) +HANDLE_BAT(APINT_TYPE_PREFIX, 660) +HANDLE_BAT(APINT_TYPE_PREFIX, 661) +HANDLE_BAT(APINT_TYPE_PREFIX, 662) +HANDLE_BAT(APINT_TYPE_PREFIX, 663) +HANDLE_BAT(APINT_TYPE_PREFIX, 664) +HANDLE_BAT(APINT_TYPE_PREFIX, 665) +HANDLE_BAT(APINT_TYPE_PREFIX, 666) +HANDLE_BAT(APINT_TYPE_PREFIX, 667) +HANDLE_BAT(APINT_TYPE_PREFIX, 668) +HANDLE_BAT(APINT_TYPE_PREFIX, 669) +HANDLE_BAT(APINT_TYPE_PREFIX, 670) +HANDLE_BAT(APINT_TYPE_PREFIX, 671) +HANDLE_BAT(APINT_TYPE_PREFIX, 672) +HANDLE_BAT(APINT_TYPE_PREFIX, 673) +HANDLE_BAT(APINT_TYPE_PREFIX, 674) +HANDLE_BAT(APINT_TYPE_PREFIX, 675) +HANDLE_BAT(APINT_TYPE_PREFIX, 676) +HANDLE_BAT(APINT_TYPE_PREFIX, 677) +HANDLE_BAT(APINT_TYPE_PREFIX, 678) +HANDLE_BAT(APINT_TYPE_PREFIX, 679) +HANDLE_BAT(APINT_TYPE_PREFIX, 680) +HANDLE_BAT(APINT_TYPE_PREFIX, 681) +HANDLE_BAT(APINT_TYPE_PREFIX, 682) +HANDLE_BAT(APINT_TYPE_PREFIX, 683) +HANDLE_BAT(APINT_TYPE_PREFIX, 684) +HANDLE_BAT(APINT_TYPE_PREFIX, 685) +HANDLE_BAT(APINT_TYPE_PREFIX, 686) +HANDLE_BAT(APINT_TYPE_PREFIX, 687) +HANDLE_BAT(APINT_TYPE_PREFIX, 688) +HANDLE_BAT(APINT_TYPE_PREFIX, 689) +HANDLE_BAT(APINT_TYPE_PREFIX, 690) +HANDLE_BAT(APINT_TYPE_PREFIX, 691) +HANDLE_BAT(APINT_TYPE_PREFIX, 692) +HANDLE_BAT(APINT_TYPE_PREFIX, 693) +HANDLE_BAT(APINT_TYPE_PREFIX, 694) +HANDLE_BAT(APINT_TYPE_PREFIX, 695) +HANDLE_BAT(APINT_TYPE_PREFIX, 696) +HANDLE_BAT(APINT_TYPE_PREFIX, 697) +HANDLE_BAT(APINT_TYPE_PREFIX, 698) +HANDLE_BAT(APINT_TYPE_PREFIX, 699) +HANDLE_BAT(APINT_TYPE_PREFIX, 700) +HANDLE_BAT(APINT_TYPE_PREFIX, 701) +HANDLE_BAT(APINT_TYPE_PREFIX, 702) +HANDLE_BAT(APINT_TYPE_PREFIX, 703) +HANDLE_BAT(APINT_TYPE_PREFIX, 704) +HANDLE_BAT(APINT_TYPE_PREFIX, 705) +HANDLE_BAT(APINT_TYPE_PREFIX, 706) +HANDLE_BAT(APINT_TYPE_PREFIX, 707) +HANDLE_BAT(APINT_TYPE_PREFIX, 708) +HANDLE_BAT(APINT_TYPE_PREFIX, 709) +HANDLE_BAT(APINT_TYPE_PREFIX, 710) +HANDLE_BAT(APINT_TYPE_PREFIX, 711) +HANDLE_BAT(APINT_TYPE_PREFIX, 712) +HANDLE_BAT(APINT_TYPE_PREFIX, 713) +HANDLE_BAT(APINT_TYPE_PREFIX, 714) +HANDLE_BAT(APINT_TYPE_PREFIX, 715) +HANDLE_BAT(APINT_TYPE_PREFIX, 716) +HANDLE_BAT(APINT_TYPE_PREFIX, 717) +HANDLE_BAT(APINT_TYPE_PREFIX, 718) +HANDLE_BAT(APINT_TYPE_PREFIX, 719) +HANDLE_BAT(APINT_TYPE_PREFIX, 720) +HANDLE_BAT(APINT_TYPE_PREFIX, 721) +HANDLE_BAT(APINT_TYPE_PREFIX, 722) +HANDLE_BAT(APINT_TYPE_PREFIX, 723) +HANDLE_BAT(APINT_TYPE_PREFIX, 724) +HANDLE_BAT(APINT_TYPE_PREFIX, 725) +HANDLE_BAT(APINT_TYPE_PREFIX, 726) +HANDLE_BAT(APINT_TYPE_PREFIX, 727) +HANDLE_BAT(APINT_TYPE_PREFIX, 728) +HANDLE_BAT(APINT_TYPE_PREFIX, 729) +HANDLE_BAT(APINT_TYPE_PREFIX, 730) +HANDLE_BAT(APINT_TYPE_PREFIX, 731) +HANDLE_BAT(APINT_TYPE_PREFIX, 732) +HANDLE_BAT(APINT_TYPE_PREFIX, 733) +HANDLE_BAT(APINT_TYPE_PREFIX, 734) +HANDLE_BAT(APINT_TYPE_PREFIX, 735) +HANDLE_BAT(APINT_TYPE_PREFIX, 736) +HANDLE_BAT(APINT_TYPE_PREFIX, 737) +HANDLE_BAT(APINT_TYPE_PREFIX, 738) +HANDLE_BAT(APINT_TYPE_PREFIX, 739) +HANDLE_BAT(APINT_TYPE_PREFIX, 740) +HANDLE_BAT(APINT_TYPE_PREFIX, 741) +HANDLE_BAT(APINT_TYPE_PREFIX, 742) +HANDLE_BAT(APINT_TYPE_PREFIX, 743) +HANDLE_BAT(APINT_TYPE_PREFIX, 744) +HANDLE_BAT(APINT_TYPE_PREFIX, 745) +HANDLE_BAT(APINT_TYPE_PREFIX, 746) +HANDLE_BAT(APINT_TYPE_PREFIX, 747) +HANDLE_BAT(APINT_TYPE_PREFIX, 748) +HANDLE_BAT(APINT_TYPE_PREFIX, 749) +HANDLE_BAT(APINT_TYPE_PREFIX, 750) +HANDLE_BAT(APINT_TYPE_PREFIX, 751) +HANDLE_BAT(APINT_TYPE_PREFIX, 752) +HANDLE_BAT(APINT_TYPE_PREFIX, 753) +HANDLE_BAT(APINT_TYPE_PREFIX, 754) +HANDLE_BAT(APINT_TYPE_PREFIX, 755) +HANDLE_BAT(APINT_TYPE_PREFIX, 756) +HANDLE_BAT(APINT_TYPE_PREFIX, 757) +HANDLE_BAT(APINT_TYPE_PREFIX, 758) +HANDLE_BAT(APINT_TYPE_PREFIX, 759) +HANDLE_BAT(APINT_TYPE_PREFIX, 760) +HANDLE_BAT(APINT_TYPE_PREFIX, 761) +HANDLE_BAT(APINT_TYPE_PREFIX, 762) +HANDLE_BAT(APINT_TYPE_PREFIX, 763) +HANDLE_BAT(APINT_TYPE_PREFIX, 764) +HANDLE_BAT(APINT_TYPE_PREFIX, 765) +HANDLE_BAT(APINT_TYPE_PREFIX, 766) +HANDLE_BAT(APINT_TYPE_PREFIX, 767) +HANDLE_BAT(APINT_TYPE_PREFIX, 768) +HANDLE_BAT(APINT_TYPE_PREFIX, 769) +HANDLE_BAT(APINT_TYPE_PREFIX, 770) +HANDLE_BAT(APINT_TYPE_PREFIX, 771) +HANDLE_BAT(APINT_TYPE_PREFIX, 772) +HANDLE_BAT(APINT_TYPE_PREFIX, 773) +HANDLE_BAT(APINT_TYPE_PREFIX, 774) +HANDLE_BAT(APINT_TYPE_PREFIX, 775) +HANDLE_BAT(APINT_TYPE_PREFIX, 776) +HANDLE_BAT(APINT_TYPE_PREFIX, 777) +HANDLE_BAT(APINT_TYPE_PREFIX, 778) +HANDLE_BAT(APINT_TYPE_PREFIX, 779) +HANDLE_BAT(APINT_TYPE_PREFIX, 780) +HANDLE_BAT(APINT_TYPE_PREFIX, 781) +HANDLE_BAT(APINT_TYPE_PREFIX, 782) +HANDLE_BAT(APINT_TYPE_PREFIX, 783) +HANDLE_BAT(APINT_TYPE_PREFIX, 784) +HANDLE_BAT(APINT_TYPE_PREFIX, 785) +HANDLE_BAT(APINT_TYPE_PREFIX, 786) +HANDLE_BAT(APINT_TYPE_PREFIX, 787) +HANDLE_BAT(APINT_TYPE_PREFIX, 788) +HANDLE_BAT(APINT_TYPE_PREFIX, 789) +HANDLE_BAT(APINT_TYPE_PREFIX, 790) +HANDLE_BAT(APINT_TYPE_PREFIX, 791) +HANDLE_BAT(APINT_TYPE_PREFIX, 792) +HANDLE_BAT(APINT_TYPE_PREFIX, 793) +HANDLE_BAT(APINT_TYPE_PREFIX, 794) +HANDLE_BAT(APINT_TYPE_PREFIX, 795) +HANDLE_BAT(APINT_TYPE_PREFIX, 796) +HANDLE_BAT(APINT_TYPE_PREFIX, 797) +HANDLE_BAT(APINT_TYPE_PREFIX, 798) +HANDLE_BAT(APINT_TYPE_PREFIX, 799) +HANDLE_BAT(APINT_TYPE_PREFIX, 800) +HANDLE_BAT(APINT_TYPE_PREFIX, 801) +HANDLE_BAT(APINT_TYPE_PREFIX, 802) +HANDLE_BAT(APINT_TYPE_PREFIX, 803) +HANDLE_BAT(APINT_TYPE_PREFIX, 804) +HANDLE_BAT(APINT_TYPE_PREFIX, 805) +HANDLE_BAT(APINT_TYPE_PREFIX, 806) +HANDLE_BAT(APINT_TYPE_PREFIX, 807) +HANDLE_BAT(APINT_TYPE_PREFIX, 808) +HANDLE_BAT(APINT_TYPE_PREFIX, 809) +HANDLE_BAT(APINT_TYPE_PREFIX, 810) +HANDLE_BAT(APINT_TYPE_PREFIX, 811) +HANDLE_BAT(APINT_TYPE_PREFIX, 812) +HANDLE_BAT(APINT_TYPE_PREFIX, 813) +HANDLE_BAT(APINT_TYPE_PREFIX, 814) +HANDLE_BAT(APINT_TYPE_PREFIX, 815) +HANDLE_BAT(APINT_TYPE_PREFIX, 816) +HANDLE_BAT(APINT_TYPE_PREFIX, 817) +HANDLE_BAT(APINT_TYPE_PREFIX, 818) +HANDLE_BAT(APINT_TYPE_PREFIX, 819) +HANDLE_BAT(APINT_TYPE_PREFIX, 820) +HANDLE_BAT(APINT_TYPE_PREFIX, 821) +HANDLE_BAT(APINT_TYPE_PREFIX, 822) +HANDLE_BAT(APINT_TYPE_PREFIX, 823) +HANDLE_BAT(APINT_TYPE_PREFIX, 824) +HANDLE_BAT(APINT_TYPE_PREFIX, 825) +HANDLE_BAT(APINT_TYPE_PREFIX, 826) +HANDLE_BAT(APINT_TYPE_PREFIX, 827) +HANDLE_BAT(APINT_TYPE_PREFIX, 828) +HANDLE_BAT(APINT_TYPE_PREFIX, 829) +HANDLE_BAT(APINT_TYPE_PREFIX, 830) +HANDLE_BAT(APINT_TYPE_PREFIX, 831) +HANDLE_BAT(APINT_TYPE_PREFIX, 832) +HANDLE_BAT(APINT_TYPE_PREFIX, 833) +HANDLE_BAT(APINT_TYPE_PREFIX, 834) +HANDLE_BAT(APINT_TYPE_PREFIX, 835) +HANDLE_BAT(APINT_TYPE_PREFIX, 836) +HANDLE_BAT(APINT_TYPE_PREFIX, 837) +HANDLE_BAT(APINT_TYPE_PREFIX, 838) +HANDLE_BAT(APINT_TYPE_PREFIX, 839) +HANDLE_BAT(APINT_TYPE_PREFIX, 840) +HANDLE_BAT(APINT_TYPE_PREFIX, 841) +HANDLE_BAT(APINT_TYPE_PREFIX, 842) +HANDLE_BAT(APINT_TYPE_PREFIX, 843) +HANDLE_BAT(APINT_TYPE_PREFIX, 844) +HANDLE_BAT(APINT_TYPE_PREFIX, 845) +HANDLE_BAT(APINT_TYPE_PREFIX, 846) +HANDLE_BAT(APINT_TYPE_PREFIX, 847) +HANDLE_BAT(APINT_TYPE_PREFIX, 848) +HANDLE_BAT(APINT_TYPE_PREFIX, 849) +HANDLE_BAT(APINT_TYPE_PREFIX, 850) +HANDLE_BAT(APINT_TYPE_PREFIX, 851) +HANDLE_BAT(APINT_TYPE_PREFIX, 852) +HANDLE_BAT(APINT_TYPE_PREFIX, 853) +HANDLE_BAT(APINT_TYPE_PREFIX, 854) +HANDLE_BAT(APINT_TYPE_PREFIX, 855) +HANDLE_BAT(APINT_TYPE_PREFIX, 856) +HANDLE_BAT(APINT_TYPE_PREFIX, 857) +HANDLE_BAT(APINT_TYPE_PREFIX, 858) +HANDLE_BAT(APINT_TYPE_PREFIX, 859) +HANDLE_BAT(APINT_TYPE_PREFIX, 860) +HANDLE_BAT(APINT_TYPE_PREFIX, 861) +HANDLE_BAT(APINT_TYPE_PREFIX, 862) +HANDLE_BAT(APINT_TYPE_PREFIX, 863) +HANDLE_BAT(APINT_TYPE_PREFIX, 864) +HANDLE_BAT(APINT_TYPE_PREFIX, 865) +HANDLE_BAT(APINT_TYPE_PREFIX, 866) +HANDLE_BAT(APINT_TYPE_PREFIX, 867) +HANDLE_BAT(APINT_TYPE_PREFIX, 868) +HANDLE_BAT(APINT_TYPE_PREFIX, 869) +HANDLE_BAT(APINT_TYPE_PREFIX, 870) +HANDLE_BAT(APINT_TYPE_PREFIX, 871) +HANDLE_BAT(APINT_TYPE_PREFIX, 872) +HANDLE_BAT(APINT_TYPE_PREFIX, 873) +HANDLE_BAT(APINT_TYPE_PREFIX, 874) +HANDLE_BAT(APINT_TYPE_PREFIX, 875) +HANDLE_BAT(APINT_TYPE_PREFIX, 876) +HANDLE_BAT(APINT_TYPE_PREFIX, 877) +HANDLE_BAT(APINT_TYPE_PREFIX, 878) +HANDLE_BAT(APINT_TYPE_PREFIX, 879) +HANDLE_BAT(APINT_TYPE_PREFIX, 880) +HANDLE_BAT(APINT_TYPE_PREFIX, 881) +HANDLE_BAT(APINT_TYPE_PREFIX, 882) +HANDLE_BAT(APINT_TYPE_PREFIX, 883) +HANDLE_BAT(APINT_TYPE_PREFIX, 884) +HANDLE_BAT(APINT_TYPE_PREFIX, 885) +HANDLE_BAT(APINT_TYPE_PREFIX, 886) +HANDLE_BAT(APINT_TYPE_PREFIX, 887) +HANDLE_BAT(APINT_TYPE_PREFIX, 888) +HANDLE_BAT(APINT_TYPE_PREFIX, 889) +HANDLE_BAT(APINT_TYPE_PREFIX, 890) +HANDLE_BAT(APINT_TYPE_PREFIX, 891) +HANDLE_BAT(APINT_TYPE_PREFIX, 892) +HANDLE_BAT(APINT_TYPE_PREFIX, 893) +HANDLE_BAT(APINT_TYPE_PREFIX, 894) +HANDLE_BAT(APINT_TYPE_PREFIX, 895) +HANDLE_BAT(APINT_TYPE_PREFIX, 896) +HANDLE_BAT(APINT_TYPE_PREFIX, 897) +HANDLE_BAT(APINT_TYPE_PREFIX, 898) +HANDLE_BAT(APINT_TYPE_PREFIX, 899) +HANDLE_BAT(APINT_TYPE_PREFIX, 900) +HANDLE_BAT(APINT_TYPE_PREFIX, 901) +HANDLE_BAT(APINT_TYPE_PREFIX, 902) +HANDLE_BAT(APINT_TYPE_PREFIX, 903) +HANDLE_BAT(APINT_TYPE_PREFIX, 904) +HANDLE_BAT(APINT_TYPE_PREFIX, 905) +HANDLE_BAT(APINT_TYPE_PREFIX, 906) +HANDLE_BAT(APINT_TYPE_PREFIX, 907) +HANDLE_BAT(APINT_TYPE_PREFIX, 908) +HANDLE_BAT(APINT_TYPE_PREFIX, 909) +HANDLE_BAT(APINT_TYPE_PREFIX, 910) +HANDLE_BAT(APINT_TYPE_PREFIX, 911) +HANDLE_BAT(APINT_TYPE_PREFIX, 912) +HANDLE_BAT(APINT_TYPE_PREFIX, 913) +HANDLE_BAT(APINT_TYPE_PREFIX, 914) +HANDLE_BAT(APINT_TYPE_PREFIX, 915) +HANDLE_BAT(APINT_TYPE_PREFIX, 916) +HANDLE_BAT(APINT_TYPE_PREFIX, 917) +HANDLE_BAT(APINT_TYPE_PREFIX, 918) +HANDLE_BAT(APINT_TYPE_PREFIX, 919) +HANDLE_BAT(APINT_TYPE_PREFIX, 920) +HANDLE_BAT(APINT_TYPE_PREFIX, 921) +HANDLE_BAT(APINT_TYPE_PREFIX, 922) +HANDLE_BAT(APINT_TYPE_PREFIX, 923) +HANDLE_BAT(APINT_TYPE_PREFIX, 924) +HANDLE_BAT(APINT_TYPE_PREFIX, 925) +HANDLE_BAT(APINT_TYPE_PREFIX, 926) +HANDLE_BAT(APINT_TYPE_PREFIX, 927) +HANDLE_BAT(APINT_TYPE_PREFIX, 928) +HANDLE_BAT(APINT_TYPE_PREFIX, 929) +HANDLE_BAT(APINT_TYPE_PREFIX, 930) +HANDLE_BAT(APINT_TYPE_PREFIX, 931) +HANDLE_BAT(APINT_TYPE_PREFIX, 932) +HANDLE_BAT(APINT_TYPE_PREFIX, 933) +HANDLE_BAT(APINT_TYPE_PREFIX, 934) +HANDLE_BAT(APINT_TYPE_PREFIX, 935) +HANDLE_BAT(APINT_TYPE_PREFIX, 936) +HANDLE_BAT(APINT_TYPE_PREFIX, 937) +HANDLE_BAT(APINT_TYPE_PREFIX, 938) +HANDLE_BAT(APINT_TYPE_PREFIX, 939) +HANDLE_BAT(APINT_TYPE_PREFIX, 940) +HANDLE_BAT(APINT_TYPE_PREFIX, 941) +HANDLE_BAT(APINT_TYPE_PREFIX, 942) +HANDLE_BAT(APINT_TYPE_PREFIX, 943) +HANDLE_BAT(APINT_TYPE_PREFIX, 944) +HANDLE_BAT(APINT_TYPE_PREFIX, 945) +HANDLE_BAT(APINT_TYPE_PREFIX, 946) +HANDLE_BAT(APINT_TYPE_PREFIX, 947) +HANDLE_BAT(APINT_TYPE_PREFIX, 948) +HANDLE_BAT(APINT_TYPE_PREFIX, 949) +HANDLE_BAT(APINT_TYPE_PREFIX, 950) +HANDLE_BAT(APINT_TYPE_PREFIX, 951) +HANDLE_BAT(APINT_TYPE_PREFIX, 952) +HANDLE_BAT(APINT_TYPE_PREFIX, 953) +HANDLE_BAT(APINT_TYPE_PREFIX, 954) +HANDLE_BAT(APINT_TYPE_PREFIX, 955) +HANDLE_BAT(APINT_TYPE_PREFIX, 956) +HANDLE_BAT(APINT_TYPE_PREFIX, 957) +HANDLE_BAT(APINT_TYPE_PREFIX, 958) +HANDLE_BAT(APINT_TYPE_PREFIX, 959) +HANDLE_BAT(APINT_TYPE_PREFIX, 960) +HANDLE_BAT(APINT_TYPE_PREFIX, 961) +HANDLE_BAT(APINT_TYPE_PREFIX, 962) +HANDLE_BAT(APINT_TYPE_PREFIX, 963) +HANDLE_BAT(APINT_TYPE_PREFIX, 964) +HANDLE_BAT(APINT_TYPE_PREFIX, 965) +HANDLE_BAT(APINT_TYPE_PREFIX, 966) +HANDLE_BAT(APINT_TYPE_PREFIX, 967) +HANDLE_BAT(APINT_TYPE_PREFIX, 968) +HANDLE_BAT(APINT_TYPE_PREFIX, 969) +HANDLE_BAT(APINT_TYPE_PREFIX, 970) +HANDLE_BAT(APINT_TYPE_PREFIX, 971) +HANDLE_BAT(APINT_TYPE_PREFIX, 972) +HANDLE_BAT(APINT_TYPE_PREFIX, 973) +HANDLE_BAT(APINT_TYPE_PREFIX, 974) +HANDLE_BAT(APINT_TYPE_PREFIX, 975) +HANDLE_BAT(APINT_TYPE_PREFIX, 976) +HANDLE_BAT(APINT_TYPE_PREFIX, 977) +HANDLE_BAT(APINT_TYPE_PREFIX, 978) +HANDLE_BAT(APINT_TYPE_PREFIX, 979) +HANDLE_BAT(APINT_TYPE_PREFIX, 980) +HANDLE_BAT(APINT_TYPE_PREFIX, 981) +HANDLE_BAT(APINT_TYPE_PREFIX, 982) +HANDLE_BAT(APINT_TYPE_PREFIX, 983) +HANDLE_BAT(APINT_TYPE_PREFIX, 984) +HANDLE_BAT(APINT_TYPE_PREFIX, 985) +HANDLE_BAT(APINT_TYPE_PREFIX, 986) +HANDLE_BAT(APINT_TYPE_PREFIX, 987) +HANDLE_BAT(APINT_TYPE_PREFIX, 988) +HANDLE_BAT(APINT_TYPE_PREFIX, 989) +HANDLE_BAT(APINT_TYPE_PREFIX, 990) +HANDLE_BAT(APINT_TYPE_PREFIX, 991) +HANDLE_BAT(APINT_TYPE_PREFIX, 992) +HANDLE_BAT(APINT_TYPE_PREFIX, 993) +HANDLE_BAT(APINT_TYPE_PREFIX, 994) +HANDLE_BAT(APINT_TYPE_PREFIX, 995) +HANDLE_BAT(APINT_TYPE_PREFIX, 996) +HANDLE_BAT(APINT_TYPE_PREFIX, 997) +HANDLE_BAT(APINT_TYPE_PREFIX, 998) +HANDLE_BAT(APINT_TYPE_PREFIX, 999) +HANDLE_BAT(APINT_TYPE_PREFIX, 1000) +HANDLE_BAT(APINT_TYPE_PREFIX, 1001) +HANDLE_BAT(APINT_TYPE_PREFIX, 1002) +HANDLE_BAT(APINT_TYPE_PREFIX, 1003) +HANDLE_BAT(APINT_TYPE_PREFIX, 1004) +HANDLE_BAT(APINT_TYPE_PREFIX, 1005) +HANDLE_BAT(APINT_TYPE_PREFIX, 1006) +HANDLE_BAT(APINT_TYPE_PREFIX, 1007) +HANDLE_BAT(APINT_TYPE_PREFIX, 1008) +HANDLE_BAT(APINT_TYPE_PREFIX, 1009) +HANDLE_BAT(APINT_TYPE_PREFIX, 1010) +HANDLE_BAT(APINT_TYPE_PREFIX, 1011) +HANDLE_BAT(APINT_TYPE_PREFIX, 1012) +HANDLE_BAT(APINT_TYPE_PREFIX, 1013) +HANDLE_BAT(APINT_TYPE_PREFIX, 1014) +HANDLE_BAT(APINT_TYPE_PREFIX, 1015) +HANDLE_BAT(APINT_TYPE_PREFIX, 1016) +HANDLE_BAT(APINT_TYPE_PREFIX, 1017) +HANDLE_BAT(APINT_TYPE_PREFIX, 1018) +HANDLE_BAT(APINT_TYPE_PREFIX, 1019) +HANDLE_BAT(APINT_TYPE_PREFIX, 1020) +HANDLE_BAT(APINT_TYPE_PREFIX, 1021) +HANDLE_BAT(APINT_TYPE_PREFIX, 1022) +HANDLE_BAT(APINT_TYPE_PREFIX, 1023) +HANDLE_BAT(APINT_TYPE_PREFIX, 1024) + +#endif + diff --git a/vitis/v2020_1/etc/autopilot_dt.h b/vitis/v2020_1/etc/autopilot_dt.h new file mode 100644 index 00000000..94e13ae1 --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_dt.h @@ -0,0 +1,147 @@ +/*-*-c++-*-*/ +/* autopilot_dt.h: defines all bit-accurate data types.*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _AUTOPILOT_DT_H_ +#define _AUTOPILOT_DT_H_ +#ifndef AP_INT_MAX_W +#define AP_INT_MAX_W 1024 +#endif +#if AP_INT_MAX_W > (1 << 15) +#error "Bitwidth exceeds 32768 (1 << 15), the maximum allowed value" +#endif +#define AP_INT_MAX_UNIT ((AP_INT_MAX_W + 1023) / 1024) +#define _TY_CONCAT(P, T) P##T + +#if defined(__cplusplus) & defined(C_TEST) +# warning "Using SystemC data types" + +# include "systemc.h" +using namespace sc_dt; + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) typedef sc_dt::sc_int _TY_CONCAT(T, int##N); +#else +# define HANDLE_BAT(T, N) typedef sc_dt::sc_int _TY_CONCAT(, int##N); +#endif +# include "etc/autopilot_dt.def" + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) typedef sc_dt::sc_uint _TY_CONCAT(T, uint##N); +#else +# define HANDLE_BAT(T, N) typedef sc_dt::sc_uint _TY_CONCAT(, uint##N); +#endif +# include "etc/autopilot_dt.def" + +/* No definition for SystemC sc_dt::int64 and uint64.*/ + +#else + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) \ + typedef int __attribute__ ((bitwidth(N))) _TY_CONCAT(T, int##N); +#else +# define HANDLE_BAT(T, N) \ + typedef int __attribute__ ((bitwidth(N))) _TY_CONCAT(, int##N); +#endif +# include "etc/autopilot_dt.def" +# include "etc/autopilot_dt_ext.def" +#undef HANDLE_BAT + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) \ + typedef unsigned int __attribute__ ((bitwidth(N))) _TY_CONCAT(T, uint##N); +#else +# define HANDLE_BAT(T, N) \ + typedef unsigned int __attribute__ ((bitwidth(N))) _TY_CONCAT(, uint##N); +#endif +# include "etc/autopilot_dt.def" +# include "etc/autopilot_dt_ext.def" +#undef HANDLE_BAT + +#undef AP_INT_MAX_UNIT + +# if defined(__cplusplus) +/*# warning "Incomplete C++ data types" +# include "autopilot_dt.hpp" */ +# ifndef __SC_COMPATIBLE__ + typedef int __attribute__ ((bitwidth(64))) ap_int64; + typedef unsigned int __attribute__ ((bitwidth(64))) ap_uint64; +# define int64 ap_int64 +# define uint64 ap_uint64 +# endif + +# else + +#if defined(APINT_TYPE_PREFIX) +typedef int __attribute__ ((bitwidth(64))) APINT_TYPE_PREFIXint64; +typedef unsigned int __attribute__ ((bitwidth(64))) APINT_TYPE_PREFIXuint64; +# define bool APINT_TYPE_PREFIXuint1 +#else +typedef int __attribute__ ((bitwidth(64))) int64; +typedef unsigned int __attribute__ ((bitwidth(64))) uint64; +# define bool uint1 +#endif +# define true 1 +# define false 0 + +# endif + + +#endif /*#ifdef _cplusplus & C_TEST */ + +#undef _TY_CONCAT + +#endif + + diff --git a/vitis/v2020_1/etc/autopilot_dt_ext.def b/vitis/v2020_1/etc/autopilot_dt_ext.def new file mode 100644 index 00000000..7d7419e5 --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_dt_ext.def @@ -0,0 +1,63674 @@ +#if AP_INT_MAX_UNIT >= 1 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 1025) +HANDLE_BAT(, 1026) +HANDLE_BAT(, 1027) +HANDLE_BAT(, 1028) +HANDLE_BAT(, 1029) +HANDLE_BAT(, 1030) +HANDLE_BAT(, 1031) +HANDLE_BAT(, 1032) +HANDLE_BAT(, 1033) +HANDLE_BAT(, 1034) +HANDLE_BAT(, 1035) +HANDLE_BAT(, 1036) +HANDLE_BAT(, 1037) +HANDLE_BAT(, 1038) +HANDLE_BAT(, 1039) +HANDLE_BAT(, 1040) +HANDLE_BAT(, 1041) +HANDLE_BAT(, 1042) +HANDLE_BAT(, 1043) +HANDLE_BAT(, 1044) +HANDLE_BAT(, 1045) +HANDLE_BAT(, 1046) +HANDLE_BAT(, 1047) +HANDLE_BAT(, 1048) +HANDLE_BAT(, 1049) +HANDLE_BAT(, 1050) +HANDLE_BAT(, 1051) +HANDLE_BAT(, 1052) +HANDLE_BAT(, 1053) +HANDLE_BAT(, 1054) +HANDLE_BAT(, 1055) +HANDLE_BAT(, 1056) +HANDLE_BAT(, 1057) +HANDLE_BAT(, 1058) +HANDLE_BAT(, 1059) +HANDLE_BAT(, 1060) +HANDLE_BAT(, 1061) +HANDLE_BAT(, 1062) +HANDLE_BAT(, 1063) +HANDLE_BAT(, 1064) +HANDLE_BAT(, 1065) +HANDLE_BAT(, 1066) +HANDLE_BAT(, 1067) +HANDLE_BAT(, 1068) +HANDLE_BAT(, 1069) +HANDLE_BAT(, 1070) +HANDLE_BAT(, 1071) +HANDLE_BAT(, 1072) +HANDLE_BAT(, 1073) +HANDLE_BAT(, 1074) +HANDLE_BAT(, 1075) +HANDLE_BAT(, 1076) +HANDLE_BAT(, 1077) +HANDLE_BAT(, 1078) +HANDLE_BAT(, 1079) +HANDLE_BAT(, 1080) +HANDLE_BAT(, 1081) +HANDLE_BAT(, 1082) +HANDLE_BAT(, 1083) +HANDLE_BAT(, 1084) +HANDLE_BAT(, 1085) +HANDLE_BAT(, 1086) +HANDLE_BAT(, 1087) +HANDLE_BAT(, 1088) +HANDLE_BAT(, 1089) +HANDLE_BAT(, 1090) +HANDLE_BAT(, 1091) +HANDLE_BAT(, 1092) +HANDLE_BAT(, 1093) +HANDLE_BAT(, 1094) +HANDLE_BAT(, 1095) +HANDLE_BAT(, 1096) +HANDLE_BAT(, 1097) +HANDLE_BAT(, 1098) +HANDLE_BAT(, 1099) +HANDLE_BAT(, 1100) +HANDLE_BAT(, 1101) +HANDLE_BAT(, 1102) +HANDLE_BAT(, 1103) +HANDLE_BAT(, 1104) +HANDLE_BAT(, 1105) +HANDLE_BAT(, 1106) +HANDLE_BAT(, 1107) +HANDLE_BAT(, 1108) +HANDLE_BAT(, 1109) +HANDLE_BAT(, 1110) +HANDLE_BAT(, 1111) +HANDLE_BAT(, 1112) +HANDLE_BAT(, 1113) +HANDLE_BAT(, 1114) +HANDLE_BAT(, 1115) +HANDLE_BAT(, 1116) +HANDLE_BAT(, 1117) +HANDLE_BAT(, 1118) +HANDLE_BAT(, 1119) +HANDLE_BAT(, 1120) +HANDLE_BAT(, 1121) +HANDLE_BAT(, 1122) +HANDLE_BAT(, 1123) +HANDLE_BAT(, 1124) +HANDLE_BAT(, 1125) +HANDLE_BAT(, 1126) +HANDLE_BAT(, 1127) +HANDLE_BAT(, 1128) +HANDLE_BAT(, 1129) +HANDLE_BAT(, 1130) +HANDLE_BAT(, 1131) +HANDLE_BAT(, 1132) +HANDLE_BAT(, 1133) +HANDLE_BAT(, 1134) +HANDLE_BAT(, 1135) +HANDLE_BAT(, 1136) +HANDLE_BAT(, 1137) +HANDLE_BAT(, 1138) +HANDLE_BAT(, 1139) +HANDLE_BAT(, 1140) +HANDLE_BAT(, 1141) +HANDLE_BAT(, 1142) +HANDLE_BAT(, 1143) +HANDLE_BAT(, 1144) +HANDLE_BAT(, 1145) +HANDLE_BAT(, 1146) +HANDLE_BAT(, 1147) +HANDLE_BAT(, 1148) +HANDLE_BAT(, 1149) +HANDLE_BAT(, 1150) +HANDLE_BAT(, 1151) +HANDLE_BAT(, 1152) +HANDLE_BAT(, 1153) +HANDLE_BAT(, 1154) +HANDLE_BAT(, 1155) +HANDLE_BAT(, 1156) +HANDLE_BAT(, 1157) +HANDLE_BAT(, 1158) +HANDLE_BAT(, 1159) +HANDLE_BAT(, 1160) +HANDLE_BAT(, 1161) +HANDLE_BAT(, 1162) +HANDLE_BAT(, 1163) +HANDLE_BAT(, 1164) +HANDLE_BAT(, 1165) +HANDLE_BAT(, 1166) +HANDLE_BAT(, 1167) +HANDLE_BAT(, 1168) +HANDLE_BAT(, 1169) +HANDLE_BAT(, 1170) +HANDLE_BAT(, 1171) +HANDLE_BAT(, 1172) +HANDLE_BAT(, 1173) +HANDLE_BAT(, 1174) +HANDLE_BAT(, 1175) +HANDLE_BAT(, 1176) +HANDLE_BAT(, 1177) +HANDLE_BAT(, 1178) +HANDLE_BAT(, 1179) +HANDLE_BAT(, 1180) +HANDLE_BAT(, 1181) +HANDLE_BAT(, 1182) +HANDLE_BAT(, 1183) +HANDLE_BAT(, 1184) +HANDLE_BAT(, 1185) +HANDLE_BAT(, 1186) +HANDLE_BAT(, 1187) +HANDLE_BAT(, 1188) +HANDLE_BAT(, 1189) +HANDLE_BAT(, 1190) +HANDLE_BAT(, 1191) +HANDLE_BAT(, 1192) +HANDLE_BAT(, 1193) +HANDLE_BAT(, 1194) +HANDLE_BAT(, 1195) +HANDLE_BAT(, 1196) +HANDLE_BAT(, 1197) +HANDLE_BAT(, 1198) +HANDLE_BAT(, 1199) +HANDLE_BAT(, 1200) +HANDLE_BAT(, 1201) +HANDLE_BAT(, 1202) +HANDLE_BAT(, 1203) +HANDLE_BAT(, 1204) +HANDLE_BAT(, 1205) +HANDLE_BAT(, 1206) +HANDLE_BAT(, 1207) +HANDLE_BAT(, 1208) +HANDLE_BAT(, 1209) +HANDLE_BAT(, 1210) +HANDLE_BAT(, 1211) +HANDLE_BAT(, 1212) +HANDLE_BAT(, 1213) +HANDLE_BAT(, 1214) +HANDLE_BAT(, 1215) +HANDLE_BAT(, 1216) +HANDLE_BAT(, 1217) +HANDLE_BAT(, 1218) +HANDLE_BAT(, 1219) +HANDLE_BAT(, 1220) +HANDLE_BAT(, 1221) +HANDLE_BAT(, 1222) +HANDLE_BAT(, 1223) +HANDLE_BAT(, 1224) +HANDLE_BAT(, 1225) +HANDLE_BAT(, 1226) +HANDLE_BAT(, 1227) +HANDLE_BAT(, 1228) +HANDLE_BAT(, 1229) +HANDLE_BAT(, 1230) +HANDLE_BAT(, 1231) +HANDLE_BAT(, 1232) +HANDLE_BAT(, 1233) +HANDLE_BAT(, 1234) +HANDLE_BAT(, 1235) +HANDLE_BAT(, 1236) +HANDLE_BAT(, 1237) +HANDLE_BAT(, 1238) +HANDLE_BAT(, 1239) +HANDLE_BAT(, 1240) +HANDLE_BAT(, 1241) +HANDLE_BAT(, 1242) +HANDLE_BAT(, 1243) +HANDLE_BAT(, 1244) +HANDLE_BAT(, 1245) +HANDLE_BAT(, 1246) +HANDLE_BAT(, 1247) +HANDLE_BAT(, 1248) +HANDLE_BAT(, 1249) +HANDLE_BAT(, 1250) +HANDLE_BAT(, 1251) +HANDLE_BAT(, 1252) +HANDLE_BAT(, 1253) +HANDLE_BAT(, 1254) +HANDLE_BAT(, 1255) +HANDLE_BAT(, 1256) +HANDLE_BAT(, 1257) +HANDLE_BAT(, 1258) +HANDLE_BAT(, 1259) +HANDLE_BAT(, 1260) +HANDLE_BAT(, 1261) +HANDLE_BAT(, 1262) +HANDLE_BAT(, 1263) +HANDLE_BAT(, 1264) +HANDLE_BAT(, 1265) +HANDLE_BAT(, 1266) +HANDLE_BAT(, 1267) +HANDLE_BAT(, 1268) +HANDLE_BAT(, 1269) +HANDLE_BAT(, 1270) +HANDLE_BAT(, 1271) +HANDLE_BAT(, 1272) +HANDLE_BAT(, 1273) +HANDLE_BAT(, 1274) +HANDLE_BAT(, 1275) +HANDLE_BAT(, 1276) +HANDLE_BAT(, 1277) +HANDLE_BAT(, 1278) +HANDLE_BAT(, 1279) +HANDLE_BAT(, 1280) +HANDLE_BAT(, 1281) +HANDLE_BAT(, 1282) +HANDLE_BAT(, 1283) +HANDLE_BAT(, 1284) +HANDLE_BAT(, 1285) +HANDLE_BAT(, 1286) +HANDLE_BAT(, 1287) +HANDLE_BAT(, 1288) +HANDLE_BAT(, 1289) +HANDLE_BAT(, 1290) +HANDLE_BAT(, 1291) +HANDLE_BAT(, 1292) +HANDLE_BAT(, 1293) +HANDLE_BAT(, 1294) +HANDLE_BAT(, 1295) +HANDLE_BAT(, 1296) +HANDLE_BAT(, 1297) +HANDLE_BAT(, 1298) +HANDLE_BAT(, 1299) +HANDLE_BAT(, 1300) +HANDLE_BAT(, 1301) +HANDLE_BAT(, 1302) +HANDLE_BAT(, 1303) +HANDLE_BAT(, 1304) +HANDLE_BAT(, 1305) +HANDLE_BAT(, 1306) +HANDLE_BAT(, 1307) +HANDLE_BAT(, 1308) +HANDLE_BAT(, 1309) +HANDLE_BAT(, 1310) +HANDLE_BAT(, 1311) +HANDLE_BAT(, 1312) +HANDLE_BAT(, 1313) +HANDLE_BAT(, 1314) +HANDLE_BAT(, 1315) +HANDLE_BAT(, 1316) +HANDLE_BAT(, 1317) +HANDLE_BAT(, 1318) +HANDLE_BAT(, 1319) +HANDLE_BAT(, 1320) +HANDLE_BAT(, 1321) +HANDLE_BAT(, 1322) +HANDLE_BAT(, 1323) +HANDLE_BAT(, 1324) +HANDLE_BAT(, 1325) +HANDLE_BAT(, 1326) +HANDLE_BAT(, 1327) +HANDLE_BAT(, 1328) +HANDLE_BAT(, 1329) +HANDLE_BAT(, 1330) +HANDLE_BAT(, 1331) +HANDLE_BAT(, 1332) +HANDLE_BAT(, 1333) +HANDLE_BAT(, 1334) +HANDLE_BAT(, 1335) +HANDLE_BAT(, 1336) +HANDLE_BAT(, 1337) +HANDLE_BAT(, 1338) +HANDLE_BAT(, 1339) +HANDLE_BAT(, 1340) +HANDLE_BAT(, 1341) +HANDLE_BAT(, 1342) +HANDLE_BAT(, 1343) +HANDLE_BAT(, 1344) +HANDLE_BAT(, 1345) +HANDLE_BAT(, 1346) +HANDLE_BAT(, 1347) +HANDLE_BAT(, 1348) +HANDLE_BAT(, 1349) +HANDLE_BAT(, 1350) +HANDLE_BAT(, 1351) +HANDLE_BAT(, 1352) +HANDLE_BAT(, 1353) +HANDLE_BAT(, 1354) +HANDLE_BAT(, 1355) +HANDLE_BAT(, 1356) +HANDLE_BAT(, 1357) +HANDLE_BAT(, 1358) +HANDLE_BAT(, 1359) +HANDLE_BAT(, 1360) +HANDLE_BAT(, 1361) +HANDLE_BAT(, 1362) +HANDLE_BAT(, 1363) +HANDLE_BAT(, 1364) +HANDLE_BAT(, 1365) +HANDLE_BAT(, 1366) +HANDLE_BAT(, 1367) +HANDLE_BAT(, 1368) +HANDLE_BAT(, 1369) +HANDLE_BAT(, 1370) +HANDLE_BAT(, 1371) +HANDLE_BAT(, 1372) +HANDLE_BAT(, 1373) +HANDLE_BAT(, 1374) +HANDLE_BAT(, 1375) +HANDLE_BAT(, 1376) +HANDLE_BAT(, 1377) +HANDLE_BAT(, 1378) +HANDLE_BAT(, 1379) +HANDLE_BAT(, 1380) +HANDLE_BAT(, 1381) +HANDLE_BAT(, 1382) +HANDLE_BAT(, 1383) +HANDLE_BAT(, 1384) +HANDLE_BAT(, 1385) +HANDLE_BAT(, 1386) +HANDLE_BAT(, 1387) +HANDLE_BAT(, 1388) +HANDLE_BAT(, 1389) +HANDLE_BAT(, 1390) +HANDLE_BAT(, 1391) +HANDLE_BAT(, 1392) +HANDLE_BAT(, 1393) +HANDLE_BAT(, 1394) +HANDLE_BAT(, 1395) +HANDLE_BAT(, 1396) +HANDLE_BAT(, 1397) +HANDLE_BAT(, 1398) +HANDLE_BAT(, 1399) +HANDLE_BAT(, 1400) +HANDLE_BAT(, 1401) +HANDLE_BAT(, 1402) +HANDLE_BAT(, 1403) +HANDLE_BAT(, 1404) +HANDLE_BAT(, 1405) +HANDLE_BAT(, 1406) +HANDLE_BAT(, 1407) +HANDLE_BAT(, 1408) +HANDLE_BAT(, 1409) +HANDLE_BAT(, 1410) +HANDLE_BAT(, 1411) +HANDLE_BAT(, 1412) +HANDLE_BAT(, 1413) +HANDLE_BAT(, 1414) +HANDLE_BAT(, 1415) +HANDLE_BAT(, 1416) +HANDLE_BAT(, 1417) +HANDLE_BAT(, 1418) +HANDLE_BAT(, 1419) +HANDLE_BAT(, 1420) +HANDLE_BAT(, 1421) +HANDLE_BAT(, 1422) +HANDLE_BAT(, 1423) +HANDLE_BAT(, 1424) +HANDLE_BAT(, 1425) +HANDLE_BAT(, 1426) +HANDLE_BAT(, 1427) +HANDLE_BAT(, 1428) +HANDLE_BAT(, 1429) +HANDLE_BAT(, 1430) +HANDLE_BAT(, 1431) +HANDLE_BAT(, 1432) +HANDLE_BAT(, 1433) +HANDLE_BAT(, 1434) +HANDLE_BAT(, 1435) +HANDLE_BAT(, 1436) +HANDLE_BAT(, 1437) +HANDLE_BAT(, 1438) +HANDLE_BAT(, 1439) +HANDLE_BAT(, 1440) +HANDLE_BAT(, 1441) +HANDLE_BAT(, 1442) +HANDLE_BAT(, 1443) +HANDLE_BAT(, 1444) +HANDLE_BAT(, 1445) +HANDLE_BAT(, 1446) +HANDLE_BAT(, 1447) +HANDLE_BAT(, 1448) +HANDLE_BAT(, 1449) +HANDLE_BAT(, 1450) +HANDLE_BAT(, 1451) +HANDLE_BAT(, 1452) +HANDLE_BAT(, 1453) +HANDLE_BAT(, 1454) +HANDLE_BAT(, 1455) +HANDLE_BAT(, 1456) +HANDLE_BAT(, 1457) +HANDLE_BAT(, 1458) +HANDLE_BAT(, 1459) +HANDLE_BAT(, 1460) +HANDLE_BAT(, 1461) +HANDLE_BAT(, 1462) +HANDLE_BAT(, 1463) +HANDLE_BAT(, 1464) +HANDLE_BAT(, 1465) +HANDLE_BAT(, 1466) +HANDLE_BAT(, 1467) +HANDLE_BAT(, 1468) +HANDLE_BAT(, 1469) +HANDLE_BAT(, 1470) +HANDLE_BAT(, 1471) +HANDLE_BAT(, 1472) +HANDLE_BAT(, 1473) +HANDLE_BAT(, 1474) +HANDLE_BAT(, 1475) +HANDLE_BAT(, 1476) +HANDLE_BAT(, 1477) +HANDLE_BAT(, 1478) +HANDLE_BAT(, 1479) +HANDLE_BAT(, 1480) +HANDLE_BAT(, 1481) +HANDLE_BAT(, 1482) +HANDLE_BAT(, 1483) +HANDLE_BAT(, 1484) +HANDLE_BAT(, 1485) +HANDLE_BAT(, 1486) +HANDLE_BAT(, 1487) +HANDLE_BAT(, 1488) +HANDLE_BAT(, 1489) +HANDLE_BAT(, 1490) +HANDLE_BAT(, 1491) +HANDLE_BAT(, 1492) +HANDLE_BAT(, 1493) +HANDLE_BAT(, 1494) +HANDLE_BAT(, 1495) +HANDLE_BAT(, 1496) +HANDLE_BAT(, 1497) +HANDLE_BAT(, 1498) +HANDLE_BAT(, 1499) +HANDLE_BAT(, 1500) +HANDLE_BAT(, 1501) +HANDLE_BAT(, 1502) +HANDLE_BAT(, 1503) +HANDLE_BAT(, 1504) +HANDLE_BAT(, 1505) +HANDLE_BAT(, 1506) +HANDLE_BAT(, 1507) +HANDLE_BAT(, 1508) +HANDLE_BAT(, 1509) +HANDLE_BAT(, 1510) +HANDLE_BAT(, 1511) +HANDLE_BAT(, 1512) +HANDLE_BAT(, 1513) +HANDLE_BAT(, 1514) +HANDLE_BAT(, 1515) +HANDLE_BAT(, 1516) +HANDLE_BAT(, 1517) +HANDLE_BAT(, 1518) +HANDLE_BAT(, 1519) +HANDLE_BAT(, 1520) +HANDLE_BAT(, 1521) +HANDLE_BAT(, 1522) +HANDLE_BAT(, 1523) +HANDLE_BAT(, 1524) +HANDLE_BAT(, 1525) +HANDLE_BAT(, 1526) +HANDLE_BAT(, 1527) +HANDLE_BAT(, 1528) +HANDLE_BAT(, 1529) +HANDLE_BAT(, 1530) +HANDLE_BAT(, 1531) +HANDLE_BAT(, 1532) +HANDLE_BAT(, 1533) +HANDLE_BAT(, 1534) +HANDLE_BAT(, 1535) +HANDLE_BAT(, 1536) +HANDLE_BAT(, 1537) +HANDLE_BAT(, 1538) +HANDLE_BAT(, 1539) +HANDLE_BAT(, 1540) +HANDLE_BAT(, 1541) +HANDLE_BAT(, 1542) +HANDLE_BAT(, 1543) +HANDLE_BAT(, 1544) +HANDLE_BAT(, 1545) +HANDLE_BAT(, 1546) +HANDLE_BAT(, 1547) +HANDLE_BAT(, 1548) +HANDLE_BAT(, 1549) +HANDLE_BAT(, 1550) +HANDLE_BAT(, 1551) +HANDLE_BAT(, 1552) +HANDLE_BAT(, 1553) +HANDLE_BAT(, 1554) +HANDLE_BAT(, 1555) +HANDLE_BAT(, 1556) +HANDLE_BAT(, 1557) +HANDLE_BAT(, 1558) +HANDLE_BAT(, 1559) +HANDLE_BAT(, 1560) +HANDLE_BAT(, 1561) +HANDLE_BAT(, 1562) +HANDLE_BAT(, 1563) +HANDLE_BAT(, 1564) +HANDLE_BAT(, 1565) +HANDLE_BAT(, 1566) +HANDLE_BAT(, 1567) +HANDLE_BAT(, 1568) +HANDLE_BAT(, 1569) +HANDLE_BAT(, 1570) +HANDLE_BAT(, 1571) +HANDLE_BAT(, 1572) +HANDLE_BAT(, 1573) +HANDLE_BAT(, 1574) +HANDLE_BAT(, 1575) +HANDLE_BAT(, 1576) +HANDLE_BAT(, 1577) +HANDLE_BAT(, 1578) +HANDLE_BAT(, 1579) +HANDLE_BAT(, 1580) +HANDLE_BAT(, 1581) +HANDLE_BAT(, 1582) +HANDLE_BAT(, 1583) +HANDLE_BAT(, 1584) +HANDLE_BAT(, 1585) +HANDLE_BAT(, 1586) +HANDLE_BAT(, 1587) +HANDLE_BAT(, 1588) +HANDLE_BAT(, 1589) +HANDLE_BAT(, 1590) +HANDLE_BAT(, 1591) +HANDLE_BAT(, 1592) +HANDLE_BAT(, 1593) +HANDLE_BAT(, 1594) +HANDLE_BAT(, 1595) +HANDLE_BAT(, 1596) +HANDLE_BAT(, 1597) +HANDLE_BAT(, 1598) +HANDLE_BAT(, 1599) +HANDLE_BAT(, 1600) +HANDLE_BAT(, 1601) +HANDLE_BAT(, 1602) +HANDLE_BAT(, 1603) +HANDLE_BAT(, 1604) +HANDLE_BAT(, 1605) +HANDLE_BAT(, 1606) +HANDLE_BAT(, 1607) +HANDLE_BAT(, 1608) +HANDLE_BAT(, 1609) +HANDLE_BAT(, 1610) +HANDLE_BAT(, 1611) +HANDLE_BAT(, 1612) +HANDLE_BAT(, 1613) +HANDLE_BAT(, 1614) +HANDLE_BAT(, 1615) +HANDLE_BAT(, 1616) +HANDLE_BAT(, 1617) +HANDLE_BAT(, 1618) +HANDLE_BAT(, 1619) +HANDLE_BAT(, 1620) +HANDLE_BAT(, 1621) +HANDLE_BAT(, 1622) +HANDLE_BAT(, 1623) +HANDLE_BAT(, 1624) +HANDLE_BAT(, 1625) +HANDLE_BAT(, 1626) +HANDLE_BAT(, 1627) +HANDLE_BAT(, 1628) +HANDLE_BAT(, 1629) +HANDLE_BAT(, 1630) +HANDLE_BAT(, 1631) +HANDLE_BAT(, 1632) +HANDLE_BAT(, 1633) +HANDLE_BAT(, 1634) +HANDLE_BAT(, 1635) +HANDLE_BAT(, 1636) +HANDLE_BAT(, 1637) +HANDLE_BAT(, 1638) +HANDLE_BAT(, 1639) +HANDLE_BAT(, 1640) +HANDLE_BAT(, 1641) +HANDLE_BAT(, 1642) +HANDLE_BAT(, 1643) +HANDLE_BAT(, 1644) +HANDLE_BAT(, 1645) +HANDLE_BAT(, 1646) +HANDLE_BAT(, 1647) +HANDLE_BAT(, 1648) +HANDLE_BAT(, 1649) +HANDLE_BAT(, 1650) +HANDLE_BAT(, 1651) +HANDLE_BAT(, 1652) +HANDLE_BAT(, 1653) +HANDLE_BAT(, 1654) +HANDLE_BAT(, 1655) +HANDLE_BAT(, 1656) +HANDLE_BAT(, 1657) +HANDLE_BAT(, 1658) +HANDLE_BAT(, 1659) +HANDLE_BAT(, 1660) +HANDLE_BAT(, 1661) +HANDLE_BAT(, 1662) +HANDLE_BAT(, 1663) +HANDLE_BAT(, 1664) +HANDLE_BAT(, 1665) +HANDLE_BAT(, 1666) +HANDLE_BAT(, 1667) +HANDLE_BAT(, 1668) +HANDLE_BAT(, 1669) +HANDLE_BAT(, 1670) +HANDLE_BAT(, 1671) +HANDLE_BAT(, 1672) +HANDLE_BAT(, 1673) +HANDLE_BAT(, 1674) +HANDLE_BAT(, 1675) +HANDLE_BAT(, 1676) +HANDLE_BAT(, 1677) +HANDLE_BAT(, 1678) +HANDLE_BAT(, 1679) +HANDLE_BAT(, 1680) +HANDLE_BAT(, 1681) +HANDLE_BAT(, 1682) +HANDLE_BAT(, 1683) +HANDLE_BAT(, 1684) +HANDLE_BAT(, 1685) +HANDLE_BAT(, 1686) +HANDLE_BAT(, 1687) +HANDLE_BAT(, 1688) +HANDLE_BAT(, 1689) +HANDLE_BAT(, 1690) +HANDLE_BAT(, 1691) +HANDLE_BAT(, 1692) +HANDLE_BAT(, 1693) +HANDLE_BAT(, 1694) +HANDLE_BAT(, 1695) +HANDLE_BAT(, 1696) +HANDLE_BAT(, 1697) +HANDLE_BAT(, 1698) +HANDLE_BAT(, 1699) +HANDLE_BAT(, 1700) +HANDLE_BAT(, 1701) +HANDLE_BAT(, 1702) +HANDLE_BAT(, 1703) +HANDLE_BAT(, 1704) +HANDLE_BAT(, 1705) +HANDLE_BAT(, 1706) +HANDLE_BAT(, 1707) +HANDLE_BAT(, 1708) +HANDLE_BAT(, 1709) +HANDLE_BAT(, 1710) +HANDLE_BAT(, 1711) +HANDLE_BAT(, 1712) +HANDLE_BAT(, 1713) +HANDLE_BAT(, 1714) +HANDLE_BAT(, 1715) +HANDLE_BAT(, 1716) +HANDLE_BAT(, 1717) +HANDLE_BAT(, 1718) +HANDLE_BAT(, 1719) +HANDLE_BAT(, 1720) +HANDLE_BAT(, 1721) +HANDLE_BAT(, 1722) +HANDLE_BAT(, 1723) +HANDLE_BAT(, 1724) +HANDLE_BAT(, 1725) +HANDLE_BAT(, 1726) +HANDLE_BAT(, 1727) +HANDLE_BAT(, 1728) +HANDLE_BAT(, 1729) +HANDLE_BAT(, 1730) +HANDLE_BAT(, 1731) +HANDLE_BAT(, 1732) +HANDLE_BAT(, 1733) +HANDLE_BAT(, 1734) +HANDLE_BAT(, 1735) +HANDLE_BAT(, 1736) +HANDLE_BAT(, 1737) +HANDLE_BAT(, 1738) +HANDLE_BAT(, 1739) +HANDLE_BAT(, 1740) +HANDLE_BAT(, 1741) +HANDLE_BAT(, 1742) +HANDLE_BAT(, 1743) +HANDLE_BAT(, 1744) +HANDLE_BAT(, 1745) +HANDLE_BAT(, 1746) +HANDLE_BAT(, 1747) +HANDLE_BAT(, 1748) +HANDLE_BAT(, 1749) +HANDLE_BAT(, 1750) +HANDLE_BAT(, 1751) +HANDLE_BAT(, 1752) +HANDLE_BAT(, 1753) +HANDLE_BAT(, 1754) +HANDLE_BAT(, 1755) +HANDLE_BAT(, 1756) +HANDLE_BAT(, 1757) +HANDLE_BAT(, 1758) +HANDLE_BAT(, 1759) +HANDLE_BAT(, 1760) +HANDLE_BAT(, 1761) +HANDLE_BAT(, 1762) +HANDLE_BAT(, 1763) +HANDLE_BAT(, 1764) +HANDLE_BAT(, 1765) +HANDLE_BAT(, 1766) +HANDLE_BAT(, 1767) +HANDLE_BAT(, 1768) +HANDLE_BAT(, 1769) +HANDLE_BAT(, 1770) +HANDLE_BAT(, 1771) +HANDLE_BAT(, 1772) +HANDLE_BAT(, 1773) +HANDLE_BAT(, 1774) +HANDLE_BAT(, 1775) +HANDLE_BAT(, 1776) +HANDLE_BAT(, 1777) +HANDLE_BAT(, 1778) +HANDLE_BAT(, 1779) +HANDLE_BAT(, 1780) +HANDLE_BAT(, 1781) +HANDLE_BAT(, 1782) +HANDLE_BAT(, 1783) +HANDLE_BAT(, 1784) +HANDLE_BAT(, 1785) +HANDLE_BAT(, 1786) +HANDLE_BAT(, 1787) +HANDLE_BAT(, 1788) +HANDLE_BAT(, 1789) +HANDLE_BAT(, 1790) +HANDLE_BAT(, 1791) +HANDLE_BAT(, 1792) +HANDLE_BAT(, 1793) +HANDLE_BAT(, 1794) +HANDLE_BAT(, 1795) +HANDLE_BAT(, 1796) +HANDLE_BAT(, 1797) +HANDLE_BAT(, 1798) +HANDLE_BAT(, 1799) +HANDLE_BAT(, 1800) +HANDLE_BAT(, 1801) +HANDLE_BAT(, 1802) +HANDLE_BAT(, 1803) +HANDLE_BAT(, 1804) +HANDLE_BAT(, 1805) +HANDLE_BAT(, 1806) +HANDLE_BAT(, 1807) +HANDLE_BAT(, 1808) +HANDLE_BAT(, 1809) +HANDLE_BAT(, 1810) +HANDLE_BAT(, 1811) +HANDLE_BAT(, 1812) +HANDLE_BAT(, 1813) +HANDLE_BAT(, 1814) +HANDLE_BAT(, 1815) +HANDLE_BAT(, 1816) +HANDLE_BAT(, 1817) +HANDLE_BAT(, 1818) +HANDLE_BAT(, 1819) +HANDLE_BAT(, 1820) +HANDLE_BAT(, 1821) +HANDLE_BAT(, 1822) +HANDLE_BAT(, 1823) +HANDLE_BAT(, 1824) +HANDLE_BAT(, 1825) +HANDLE_BAT(, 1826) +HANDLE_BAT(, 1827) +HANDLE_BAT(, 1828) +HANDLE_BAT(, 1829) +HANDLE_BAT(, 1830) +HANDLE_BAT(, 1831) +HANDLE_BAT(, 1832) +HANDLE_BAT(, 1833) +HANDLE_BAT(, 1834) +HANDLE_BAT(, 1835) +HANDLE_BAT(, 1836) +HANDLE_BAT(, 1837) +HANDLE_BAT(, 1838) +HANDLE_BAT(, 1839) +HANDLE_BAT(, 1840) +HANDLE_BAT(, 1841) +HANDLE_BAT(, 1842) +HANDLE_BAT(, 1843) +HANDLE_BAT(, 1844) +HANDLE_BAT(, 1845) +HANDLE_BAT(, 1846) +HANDLE_BAT(, 1847) +HANDLE_BAT(, 1848) +HANDLE_BAT(, 1849) +HANDLE_BAT(, 1850) +HANDLE_BAT(, 1851) +HANDLE_BAT(, 1852) +HANDLE_BAT(, 1853) +HANDLE_BAT(, 1854) +HANDLE_BAT(, 1855) +HANDLE_BAT(, 1856) +HANDLE_BAT(, 1857) +HANDLE_BAT(, 1858) +HANDLE_BAT(, 1859) +HANDLE_BAT(, 1860) +HANDLE_BAT(, 1861) +HANDLE_BAT(, 1862) +HANDLE_BAT(, 1863) +HANDLE_BAT(, 1864) +HANDLE_BAT(, 1865) +HANDLE_BAT(, 1866) +HANDLE_BAT(, 1867) +HANDLE_BAT(, 1868) +HANDLE_BAT(, 1869) +HANDLE_BAT(, 1870) +HANDLE_BAT(, 1871) +HANDLE_BAT(, 1872) +HANDLE_BAT(, 1873) +HANDLE_BAT(, 1874) +HANDLE_BAT(, 1875) +HANDLE_BAT(, 1876) +HANDLE_BAT(, 1877) +HANDLE_BAT(, 1878) +HANDLE_BAT(, 1879) +HANDLE_BAT(, 1880) +HANDLE_BAT(, 1881) +HANDLE_BAT(, 1882) +HANDLE_BAT(, 1883) +HANDLE_BAT(, 1884) +HANDLE_BAT(, 1885) +HANDLE_BAT(, 1886) +HANDLE_BAT(, 1887) +HANDLE_BAT(, 1888) +HANDLE_BAT(, 1889) +HANDLE_BAT(, 1890) +HANDLE_BAT(, 1891) +HANDLE_BAT(, 1892) +HANDLE_BAT(, 1893) +HANDLE_BAT(, 1894) +HANDLE_BAT(, 1895) +HANDLE_BAT(, 1896) +HANDLE_BAT(, 1897) +HANDLE_BAT(, 1898) +HANDLE_BAT(, 1899) +HANDLE_BAT(, 1900) +HANDLE_BAT(, 1901) +HANDLE_BAT(, 1902) +HANDLE_BAT(, 1903) +HANDLE_BAT(, 1904) +HANDLE_BAT(, 1905) +HANDLE_BAT(, 1906) +HANDLE_BAT(, 1907) +HANDLE_BAT(, 1908) +HANDLE_BAT(, 1909) +HANDLE_BAT(, 1910) +HANDLE_BAT(, 1911) +HANDLE_BAT(, 1912) +HANDLE_BAT(, 1913) +HANDLE_BAT(, 1914) +HANDLE_BAT(, 1915) +HANDLE_BAT(, 1916) +HANDLE_BAT(, 1917) +HANDLE_BAT(, 1918) +HANDLE_BAT(, 1919) +HANDLE_BAT(, 1920) +HANDLE_BAT(, 1921) +HANDLE_BAT(, 1922) +HANDLE_BAT(, 1923) +HANDLE_BAT(, 1924) +HANDLE_BAT(, 1925) +HANDLE_BAT(, 1926) +HANDLE_BAT(, 1927) +HANDLE_BAT(, 1928) +HANDLE_BAT(, 1929) +HANDLE_BAT(, 1930) +HANDLE_BAT(, 1931) +HANDLE_BAT(, 1932) +HANDLE_BAT(, 1933) +HANDLE_BAT(, 1934) +HANDLE_BAT(, 1935) +HANDLE_BAT(, 1936) +HANDLE_BAT(, 1937) +HANDLE_BAT(, 1938) +HANDLE_BAT(, 1939) +HANDLE_BAT(, 1940) +HANDLE_BAT(, 1941) +HANDLE_BAT(, 1942) +HANDLE_BAT(, 1943) +HANDLE_BAT(, 1944) +HANDLE_BAT(, 1945) +HANDLE_BAT(, 1946) +HANDLE_BAT(, 1947) +HANDLE_BAT(, 1948) +HANDLE_BAT(, 1949) +HANDLE_BAT(, 1950) +HANDLE_BAT(, 1951) +HANDLE_BAT(, 1952) +HANDLE_BAT(, 1953) +HANDLE_BAT(, 1954) +HANDLE_BAT(, 1955) +HANDLE_BAT(, 1956) +HANDLE_BAT(, 1957) +HANDLE_BAT(, 1958) +HANDLE_BAT(, 1959) +HANDLE_BAT(, 1960) +HANDLE_BAT(, 1961) +HANDLE_BAT(, 1962) +HANDLE_BAT(, 1963) +HANDLE_BAT(, 1964) +HANDLE_BAT(, 1965) +HANDLE_BAT(, 1966) +HANDLE_BAT(, 1967) +HANDLE_BAT(, 1968) +HANDLE_BAT(, 1969) +HANDLE_BAT(, 1970) +HANDLE_BAT(, 1971) +HANDLE_BAT(, 1972) +HANDLE_BAT(, 1973) +HANDLE_BAT(, 1974) +HANDLE_BAT(, 1975) +HANDLE_BAT(, 1976) +HANDLE_BAT(, 1977) +HANDLE_BAT(, 1978) +HANDLE_BAT(, 1979) +HANDLE_BAT(, 1980) +HANDLE_BAT(, 1981) +HANDLE_BAT(, 1982) +HANDLE_BAT(, 1983) +HANDLE_BAT(, 1984) +HANDLE_BAT(, 1985) +HANDLE_BAT(, 1986) +HANDLE_BAT(, 1987) +HANDLE_BAT(, 1988) +HANDLE_BAT(, 1989) +HANDLE_BAT(, 1990) +HANDLE_BAT(, 1991) +HANDLE_BAT(, 1992) +HANDLE_BAT(, 1993) +HANDLE_BAT(, 1994) +HANDLE_BAT(, 1995) +HANDLE_BAT(, 1996) +HANDLE_BAT(, 1997) +HANDLE_BAT(, 1998) +HANDLE_BAT(, 1999) +HANDLE_BAT(, 2000) +HANDLE_BAT(, 2001) +HANDLE_BAT(, 2002) +HANDLE_BAT(, 2003) +HANDLE_BAT(, 2004) +HANDLE_BAT(, 2005) +HANDLE_BAT(, 2006) +HANDLE_BAT(, 2007) +HANDLE_BAT(, 2008) +HANDLE_BAT(, 2009) +HANDLE_BAT(, 2010) +HANDLE_BAT(, 2011) +HANDLE_BAT(, 2012) +HANDLE_BAT(, 2013) +HANDLE_BAT(, 2014) +HANDLE_BAT(, 2015) +HANDLE_BAT(, 2016) +HANDLE_BAT(, 2017) +HANDLE_BAT(, 2018) +HANDLE_BAT(, 2019) +HANDLE_BAT(, 2020) +HANDLE_BAT(, 2021) +HANDLE_BAT(, 2022) +HANDLE_BAT(, 2023) +HANDLE_BAT(, 2024) +HANDLE_BAT(, 2025) +HANDLE_BAT(, 2026) +HANDLE_BAT(, 2027) +HANDLE_BAT(, 2028) +HANDLE_BAT(, 2029) +HANDLE_BAT(, 2030) +HANDLE_BAT(, 2031) +HANDLE_BAT(, 2032) +HANDLE_BAT(, 2033) +HANDLE_BAT(, 2034) +HANDLE_BAT(, 2035) +HANDLE_BAT(, 2036) +HANDLE_BAT(, 2037) +HANDLE_BAT(, 2038) +HANDLE_BAT(, 2039) +HANDLE_BAT(, 2040) +HANDLE_BAT(, 2041) +HANDLE_BAT(, 2042) +HANDLE_BAT(, 2043) +HANDLE_BAT(, 2044) +HANDLE_BAT(, 2045) +HANDLE_BAT(, 2046) +HANDLE_BAT(, 2047) +HANDLE_BAT(, 2048) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 1025) +HANDLE_BAT(APINT_TYPE_PREFIX, 1026) +HANDLE_BAT(APINT_TYPE_PREFIX, 1027) +HANDLE_BAT(APINT_TYPE_PREFIX, 1028) +HANDLE_BAT(APINT_TYPE_PREFIX, 1029) +HANDLE_BAT(APINT_TYPE_PREFIX, 1030) +HANDLE_BAT(APINT_TYPE_PREFIX, 1031) +HANDLE_BAT(APINT_TYPE_PREFIX, 1032) +HANDLE_BAT(APINT_TYPE_PREFIX, 1033) +HANDLE_BAT(APINT_TYPE_PREFIX, 1034) +HANDLE_BAT(APINT_TYPE_PREFIX, 1035) +HANDLE_BAT(APINT_TYPE_PREFIX, 1036) +HANDLE_BAT(APINT_TYPE_PREFIX, 1037) +HANDLE_BAT(APINT_TYPE_PREFIX, 1038) +HANDLE_BAT(APINT_TYPE_PREFIX, 1039) +HANDLE_BAT(APINT_TYPE_PREFIX, 1040) +HANDLE_BAT(APINT_TYPE_PREFIX, 1041) +HANDLE_BAT(APINT_TYPE_PREFIX, 1042) +HANDLE_BAT(APINT_TYPE_PREFIX, 1043) +HANDLE_BAT(APINT_TYPE_PREFIX, 1044) +HANDLE_BAT(APINT_TYPE_PREFIX, 1045) +HANDLE_BAT(APINT_TYPE_PREFIX, 1046) +HANDLE_BAT(APINT_TYPE_PREFIX, 1047) +HANDLE_BAT(APINT_TYPE_PREFIX, 1048) +HANDLE_BAT(APINT_TYPE_PREFIX, 1049) +HANDLE_BAT(APINT_TYPE_PREFIX, 1050) +HANDLE_BAT(APINT_TYPE_PREFIX, 1051) +HANDLE_BAT(APINT_TYPE_PREFIX, 1052) +HANDLE_BAT(APINT_TYPE_PREFIX, 1053) +HANDLE_BAT(APINT_TYPE_PREFIX, 1054) +HANDLE_BAT(APINT_TYPE_PREFIX, 1055) +HANDLE_BAT(APINT_TYPE_PREFIX, 1056) +HANDLE_BAT(APINT_TYPE_PREFIX, 1057) +HANDLE_BAT(APINT_TYPE_PREFIX, 1058) +HANDLE_BAT(APINT_TYPE_PREFIX, 1059) +HANDLE_BAT(APINT_TYPE_PREFIX, 1060) +HANDLE_BAT(APINT_TYPE_PREFIX, 1061) +HANDLE_BAT(APINT_TYPE_PREFIX, 1062) +HANDLE_BAT(APINT_TYPE_PREFIX, 1063) +HANDLE_BAT(APINT_TYPE_PREFIX, 1064) +HANDLE_BAT(APINT_TYPE_PREFIX, 1065) +HANDLE_BAT(APINT_TYPE_PREFIX, 1066) +HANDLE_BAT(APINT_TYPE_PREFIX, 1067) +HANDLE_BAT(APINT_TYPE_PREFIX, 1068) +HANDLE_BAT(APINT_TYPE_PREFIX, 1069) +HANDLE_BAT(APINT_TYPE_PREFIX, 1070) +HANDLE_BAT(APINT_TYPE_PREFIX, 1071) +HANDLE_BAT(APINT_TYPE_PREFIX, 1072) +HANDLE_BAT(APINT_TYPE_PREFIX, 1073) +HANDLE_BAT(APINT_TYPE_PREFIX, 1074) +HANDLE_BAT(APINT_TYPE_PREFIX, 1075) +HANDLE_BAT(APINT_TYPE_PREFIX, 1076) +HANDLE_BAT(APINT_TYPE_PREFIX, 1077) +HANDLE_BAT(APINT_TYPE_PREFIX, 1078) +HANDLE_BAT(APINT_TYPE_PREFIX, 1079) +HANDLE_BAT(APINT_TYPE_PREFIX, 1080) +HANDLE_BAT(APINT_TYPE_PREFIX, 1081) +HANDLE_BAT(APINT_TYPE_PREFIX, 1082) +HANDLE_BAT(APINT_TYPE_PREFIX, 1083) +HANDLE_BAT(APINT_TYPE_PREFIX, 1084) +HANDLE_BAT(APINT_TYPE_PREFIX, 1085) +HANDLE_BAT(APINT_TYPE_PREFIX, 1086) +HANDLE_BAT(APINT_TYPE_PREFIX, 1087) +HANDLE_BAT(APINT_TYPE_PREFIX, 1088) +HANDLE_BAT(APINT_TYPE_PREFIX, 1089) +HANDLE_BAT(APINT_TYPE_PREFIX, 1090) +HANDLE_BAT(APINT_TYPE_PREFIX, 1091) +HANDLE_BAT(APINT_TYPE_PREFIX, 1092) +HANDLE_BAT(APINT_TYPE_PREFIX, 1093) +HANDLE_BAT(APINT_TYPE_PREFIX, 1094) +HANDLE_BAT(APINT_TYPE_PREFIX, 1095) +HANDLE_BAT(APINT_TYPE_PREFIX, 1096) +HANDLE_BAT(APINT_TYPE_PREFIX, 1097) +HANDLE_BAT(APINT_TYPE_PREFIX, 1098) +HANDLE_BAT(APINT_TYPE_PREFIX, 1099) +HANDLE_BAT(APINT_TYPE_PREFIX, 1100) +HANDLE_BAT(APINT_TYPE_PREFIX, 1101) +HANDLE_BAT(APINT_TYPE_PREFIX, 1102) +HANDLE_BAT(APINT_TYPE_PREFIX, 1103) +HANDLE_BAT(APINT_TYPE_PREFIX, 1104) +HANDLE_BAT(APINT_TYPE_PREFIX, 1105) +HANDLE_BAT(APINT_TYPE_PREFIX, 1106) +HANDLE_BAT(APINT_TYPE_PREFIX, 1107) +HANDLE_BAT(APINT_TYPE_PREFIX, 1108) +HANDLE_BAT(APINT_TYPE_PREFIX, 1109) +HANDLE_BAT(APINT_TYPE_PREFIX, 1110) +HANDLE_BAT(APINT_TYPE_PREFIX, 1111) +HANDLE_BAT(APINT_TYPE_PREFIX, 1112) +HANDLE_BAT(APINT_TYPE_PREFIX, 1113) +HANDLE_BAT(APINT_TYPE_PREFIX, 1114) +HANDLE_BAT(APINT_TYPE_PREFIX, 1115) +HANDLE_BAT(APINT_TYPE_PREFIX, 1116) +HANDLE_BAT(APINT_TYPE_PREFIX, 1117) +HANDLE_BAT(APINT_TYPE_PREFIX, 1118) +HANDLE_BAT(APINT_TYPE_PREFIX, 1119) +HANDLE_BAT(APINT_TYPE_PREFIX, 1120) +HANDLE_BAT(APINT_TYPE_PREFIX, 1121) +HANDLE_BAT(APINT_TYPE_PREFIX, 1122) +HANDLE_BAT(APINT_TYPE_PREFIX, 1123) +HANDLE_BAT(APINT_TYPE_PREFIX, 1124) +HANDLE_BAT(APINT_TYPE_PREFIX, 1125) +HANDLE_BAT(APINT_TYPE_PREFIX, 1126) +HANDLE_BAT(APINT_TYPE_PREFIX, 1127) +HANDLE_BAT(APINT_TYPE_PREFIX, 1128) +HANDLE_BAT(APINT_TYPE_PREFIX, 1129) +HANDLE_BAT(APINT_TYPE_PREFIX, 1130) +HANDLE_BAT(APINT_TYPE_PREFIX, 1131) +HANDLE_BAT(APINT_TYPE_PREFIX, 1132) +HANDLE_BAT(APINT_TYPE_PREFIX, 1133) +HANDLE_BAT(APINT_TYPE_PREFIX, 1134) +HANDLE_BAT(APINT_TYPE_PREFIX, 1135) +HANDLE_BAT(APINT_TYPE_PREFIX, 1136) +HANDLE_BAT(APINT_TYPE_PREFIX, 1137) +HANDLE_BAT(APINT_TYPE_PREFIX, 1138) +HANDLE_BAT(APINT_TYPE_PREFIX, 1139) +HANDLE_BAT(APINT_TYPE_PREFIX, 1140) +HANDLE_BAT(APINT_TYPE_PREFIX, 1141) +HANDLE_BAT(APINT_TYPE_PREFIX, 1142) +HANDLE_BAT(APINT_TYPE_PREFIX, 1143) +HANDLE_BAT(APINT_TYPE_PREFIX, 1144) +HANDLE_BAT(APINT_TYPE_PREFIX, 1145) +HANDLE_BAT(APINT_TYPE_PREFIX, 1146) +HANDLE_BAT(APINT_TYPE_PREFIX, 1147) +HANDLE_BAT(APINT_TYPE_PREFIX, 1148) +HANDLE_BAT(APINT_TYPE_PREFIX, 1149) +HANDLE_BAT(APINT_TYPE_PREFIX, 1150) +HANDLE_BAT(APINT_TYPE_PREFIX, 1151) +HANDLE_BAT(APINT_TYPE_PREFIX, 1152) +HANDLE_BAT(APINT_TYPE_PREFIX, 1153) +HANDLE_BAT(APINT_TYPE_PREFIX, 1154) +HANDLE_BAT(APINT_TYPE_PREFIX, 1155) +HANDLE_BAT(APINT_TYPE_PREFIX, 1156) +HANDLE_BAT(APINT_TYPE_PREFIX, 1157) +HANDLE_BAT(APINT_TYPE_PREFIX, 1158) +HANDLE_BAT(APINT_TYPE_PREFIX, 1159) +HANDLE_BAT(APINT_TYPE_PREFIX, 1160) +HANDLE_BAT(APINT_TYPE_PREFIX, 1161) +HANDLE_BAT(APINT_TYPE_PREFIX, 1162) +HANDLE_BAT(APINT_TYPE_PREFIX, 1163) +HANDLE_BAT(APINT_TYPE_PREFIX, 1164) +HANDLE_BAT(APINT_TYPE_PREFIX, 1165) +HANDLE_BAT(APINT_TYPE_PREFIX, 1166) +HANDLE_BAT(APINT_TYPE_PREFIX, 1167) +HANDLE_BAT(APINT_TYPE_PREFIX, 1168) +HANDLE_BAT(APINT_TYPE_PREFIX, 1169) +HANDLE_BAT(APINT_TYPE_PREFIX, 1170) +HANDLE_BAT(APINT_TYPE_PREFIX, 1171) +HANDLE_BAT(APINT_TYPE_PREFIX, 1172) +HANDLE_BAT(APINT_TYPE_PREFIX, 1173) +HANDLE_BAT(APINT_TYPE_PREFIX, 1174) +HANDLE_BAT(APINT_TYPE_PREFIX, 1175) +HANDLE_BAT(APINT_TYPE_PREFIX, 1176) +HANDLE_BAT(APINT_TYPE_PREFIX, 1177) +HANDLE_BAT(APINT_TYPE_PREFIX, 1178) +HANDLE_BAT(APINT_TYPE_PREFIX, 1179) +HANDLE_BAT(APINT_TYPE_PREFIX, 1180) +HANDLE_BAT(APINT_TYPE_PREFIX, 1181) +HANDLE_BAT(APINT_TYPE_PREFIX, 1182) +HANDLE_BAT(APINT_TYPE_PREFIX, 1183) +HANDLE_BAT(APINT_TYPE_PREFIX, 1184) +HANDLE_BAT(APINT_TYPE_PREFIX, 1185) +HANDLE_BAT(APINT_TYPE_PREFIX, 1186) +HANDLE_BAT(APINT_TYPE_PREFIX, 1187) +HANDLE_BAT(APINT_TYPE_PREFIX, 1188) +HANDLE_BAT(APINT_TYPE_PREFIX, 1189) +HANDLE_BAT(APINT_TYPE_PREFIX, 1190) +HANDLE_BAT(APINT_TYPE_PREFIX, 1191) +HANDLE_BAT(APINT_TYPE_PREFIX, 1192) +HANDLE_BAT(APINT_TYPE_PREFIX, 1193) +HANDLE_BAT(APINT_TYPE_PREFIX, 1194) +HANDLE_BAT(APINT_TYPE_PREFIX, 1195) +HANDLE_BAT(APINT_TYPE_PREFIX, 1196) +HANDLE_BAT(APINT_TYPE_PREFIX, 1197) +HANDLE_BAT(APINT_TYPE_PREFIX, 1198) +HANDLE_BAT(APINT_TYPE_PREFIX, 1199) +HANDLE_BAT(APINT_TYPE_PREFIX, 1200) +HANDLE_BAT(APINT_TYPE_PREFIX, 1201) +HANDLE_BAT(APINT_TYPE_PREFIX, 1202) +HANDLE_BAT(APINT_TYPE_PREFIX, 1203) +HANDLE_BAT(APINT_TYPE_PREFIX, 1204) +HANDLE_BAT(APINT_TYPE_PREFIX, 1205) +HANDLE_BAT(APINT_TYPE_PREFIX, 1206) +HANDLE_BAT(APINT_TYPE_PREFIX, 1207) +HANDLE_BAT(APINT_TYPE_PREFIX, 1208) +HANDLE_BAT(APINT_TYPE_PREFIX, 1209) +HANDLE_BAT(APINT_TYPE_PREFIX, 1210) +HANDLE_BAT(APINT_TYPE_PREFIX, 1211) +HANDLE_BAT(APINT_TYPE_PREFIX, 1212) +HANDLE_BAT(APINT_TYPE_PREFIX, 1213) +HANDLE_BAT(APINT_TYPE_PREFIX, 1214) +HANDLE_BAT(APINT_TYPE_PREFIX, 1215) +HANDLE_BAT(APINT_TYPE_PREFIX, 1216) +HANDLE_BAT(APINT_TYPE_PREFIX, 1217) +HANDLE_BAT(APINT_TYPE_PREFIX, 1218) +HANDLE_BAT(APINT_TYPE_PREFIX, 1219) +HANDLE_BAT(APINT_TYPE_PREFIX, 1220) +HANDLE_BAT(APINT_TYPE_PREFIX, 1221) +HANDLE_BAT(APINT_TYPE_PREFIX, 1222) +HANDLE_BAT(APINT_TYPE_PREFIX, 1223) +HANDLE_BAT(APINT_TYPE_PREFIX, 1224) +HANDLE_BAT(APINT_TYPE_PREFIX, 1225) +HANDLE_BAT(APINT_TYPE_PREFIX, 1226) +HANDLE_BAT(APINT_TYPE_PREFIX, 1227) +HANDLE_BAT(APINT_TYPE_PREFIX, 1228) +HANDLE_BAT(APINT_TYPE_PREFIX, 1229) +HANDLE_BAT(APINT_TYPE_PREFIX, 1230) +HANDLE_BAT(APINT_TYPE_PREFIX, 1231) +HANDLE_BAT(APINT_TYPE_PREFIX, 1232) +HANDLE_BAT(APINT_TYPE_PREFIX, 1233) +HANDLE_BAT(APINT_TYPE_PREFIX, 1234) +HANDLE_BAT(APINT_TYPE_PREFIX, 1235) +HANDLE_BAT(APINT_TYPE_PREFIX, 1236) +HANDLE_BAT(APINT_TYPE_PREFIX, 1237) +HANDLE_BAT(APINT_TYPE_PREFIX, 1238) +HANDLE_BAT(APINT_TYPE_PREFIX, 1239) +HANDLE_BAT(APINT_TYPE_PREFIX, 1240) +HANDLE_BAT(APINT_TYPE_PREFIX, 1241) +HANDLE_BAT(APINT_TYPE_PREFIX, 1242) +HANDLE_BAT(APINT_TYPE_PREFIX, 1243) +HANDLE_BAT(APINT_TYPE_PREFIX, 1244) +HANDLE_BAT(APINT_TYPE_PREFIX, 1245) +HANDLE_BAT(APINT_TYPE_PREFIX, 1246) +HANDLE_BAT(APINT_TYPE_PREFIX, 1247) +HANDLE_BAT(APINT_TYPE_PREFIX, 1248) +HANDLE_BAT(APINT_TYPE_PREFIX, 1249) +HANDLE_BAT(APINT_TYPE_PREFIX, 1250) +HANDLE_BAT(APINT_TYPE_PREFIX, 1251) +HANDLE_BAT(APINT_TYPE_PREFIX, 1252) +HANDLE_BAT(APINT_TYPE_PREFIX, 1253) +HANDLE_BAT(APINT_TYPE_PREFIX, 1254) +HANDLE_BAT(APINT_TYPE_PREFIX, 1255) +HANDLE_BAT(APINT_TYPE_PREFIX, 1256) +HANDLE_BAT(APINT_TYPE_PREFIX, 1257) +HANDLE_BAT(APINT_TYPE_PREFIX, 1258) +HANDLE_BAT(APINT_TYPE_PREFIX, 1259) +HANDLE_BAT(APINT_TYPE_PREFIX, 1260) +HANDLE_BAT(APINT_TYPE_PREFIX, 1261) +HANDLE_BAT(APINT_TYPE_PREFIX, 1262) +HANDLE_BAT(APINT_TYPE_PREFIX, 1263) +HANDLE_BAT(APINT_TYPE_PREFIX, 1264) +HANDLE_BAT(APINT_TYPE_PREFIX, 1265) +HANDLE_BAT(APINT_TYPE_PREFIX, 1266) +HANDLE_BAT(APINT_TYPE_PREFIX, 1267) +HANDLE_BAT(APINT_TYPE_PREFIX, 1268) +HANDLE_BAT(APINT_TYPE_PREFIX, 1269) +HANDLE_BAT(APINT_TYPE_PREFIX, 1270) +HANDLE_BAT(APINT_TYPE_PREFIX, 1271) +HANDLE_BAT(APINT_TYPE_PREFIX, 1272) +HANDLE_BAT(APINT_TYPE_PREFIX, 1273) +HANDLE_BAT(APINT_TYPE_PREFIX, 1274) +HANDLE_BAT(APINT_TYPE_PREFIX, 1275) +HANDLE_BAT(APINT_TYPE_PREFIX, 1276) +HANDLE_BAT(APINT_TYPE_PREFIX, 1277) +HANDLE_BAT(APINT_TYPE_PREFIX, 1278) +HANDLE_BAT(APINT_TYPE_PREFIX, 1279) +HANDLE_BAT(APINT_TYPE_PREFIX, 1280) +HANDLE_BAT(APINT_TYPE_PREFIX, 1281) +HANDLE_BAT(APINT_TYPE_PREFIX, 1282) +HANDLE_BAT(APINT_TYPE_PREFIX, 1283) +HANDLE_BAT(APINT_TYPE_PREFIX, 1284) +HANDLE_BAT(APINT_TYPE_PREFIX, 1285) +HANDLE_BAT(APINT_TYPE_PREFIX, 1286) +HANDLE_BAT(APINT_TYPE_PREFIX, 1287) +HANDLE_BAT(APINT_TYPE_PREFIX, 1288) +HANDLE_BAT(APINT_TYPE_PREFIX, 1289) +HANDLE_BAT(APINT_TYPE_PREFIX, 1290) +HANDLE_BAT(APINT_TYPE_PREFIX, 1291) +HANDLE_BAT(APINT_TYPE_PREFIX, 1292) +HANDLE_BAT(APINT_TYPE_PREFIX, 1293) +HANDLE_BAT(APINT_TYPE_PREFIX, 1294) +HANDLE_BAT(APINT_TYPE_PREFIX, 1295) +HANDLE_BAT(APINT_TYPE_PREFIX, 1296) +HANDLE_BAT(APINT_TYPE_PREFIX, 1297) +HANDLE_BAT(APINT_TYPE_PREFIX, 1298) +HANDLE_BAT(APINT_TYPE_PREFIX, 1299) +HANDLE_BAT(APINT_TYPE_PREFIX, 1300) +HANDLE_BAT(APINT_TYPE_PREFIX, 1301) +HANDLE_BAT(APINT_TYPE_PREFIX, 1302) +HANDLE_BAT(APINT_TYPE_PREFIX, 1303) +HANDLE_BAT(APINT_TYPE_PREFIX, 1304) +HANDLE_BAT(APINT_TYPE_PREFIX, 1305) +HANDLE_BAT(APINT_TYPE_PREFIX, 1306) +HANDLE_BAT(APINT_TYPE_PREFIX, 1307) +HANDLE_BAT(APINT_TYPE_PREFIX, 1308) +HANDLE_BAT(APINT_TYPE_PREFIX, 1309) +HANDLE_BAT(APINT_TYPE_PREFIX, 1310) +HANDLE_BAT(APINT_TYPE_PREFIX, 1311) +HANDLE_BAT(APINT_TYPE_PREFIX, 1312) +HANDLE_BAT(APINT_TYPE_PREFIX, 1313) +HANDLE_BAT(APINT_TYPE_PREFIX, 1314) +HANDLE_BAT(APINT_TYPE_PREFIX, 1315) +HANDLE_BAT(APINT_TYPE_PREFIX, 1316) +HANDLE_BAT(APINT_TYPE_PREFIX, 1317) +HANDLE_BAT(APINT_TYPE_PREFIX, 1318) +HANDLE_BAT(APINT_TYPE_PREFIX, 1319) +HANDLE_BAT(APINT_TYPE_PREFIX, 1320) +HANDLE_BAT(APINT_TYPE_PREFIX, 1321) +HANDLE_BAT(APINT_TYPE_PREFIX, 1322) +HANDLE_BAT(APINT_TYPE_PREFIX, 1323) +HANDLE_BAT(APINT_TYPE_PREFIX, 1324) +HANDLE_BAT(APINT_TYPE_PREFIX, 1325) +HANDLE_BAT(APINT_TYPE_PREFIX, 1326) +HANDLE_BAT(APINT_TYPE_PREFIX, 1327) +HANDLE_BAT(APINT_TYPE_PREFIX, 1328) +HANDLE_BAT(APINT_TYPE_PREFIX, 1329) +HANDLE_BAT(APINT_TYPE_PREFIX, 1330) +HANDLE_BAT(APINT_TYPE_PREFIX, 1331) +HANDLE_BAT(APINT_TYPE_PREFIX, 1332) +HANDLE_BAT(APINT_TYPE_PREFIX, 1333) +HANDLE_BAT(APINT_TYPE_PREFIX, 1334) +HANDLE_BAT(APINT_TYPE_PREFIX, 1335) +HANDLE_BAT(APINT_TYPE_PREFIX, 1336) +HANDLE_BAT(APINT_TYPE_PREFIX, 1337) +HANDLE_BAT(APINT_TYPE_PREFIX, 1338) +HANDLE_BAT(APINT_TYPE_PREFIX, 1339) +HANDLE_BAT(APINT_TYPE_PREFIX, 1340) +HANDLE_BAT(APINT_TYPE_PREFIX, 1341) +HANDLE_BAT(APINT_TYPE_PREFIX, 1342) +HANDLE_BAT(APINT_TYPE_PREFIX, 1343) +HANDLE_BAT(APINT_TYPE_PREFIX, 1344) +HANDLE_BAT(APINT_TYPE_PREFIX, 1345) +HANDLE_BAT(APINT_TYPE_PREFIX, 1346) +HANDLE_BAT(APINT_TYPE_PREFIX, 1347) +HANDLE_BAT(APINT_TYPE_PREFIX, 1348) +HANDLE_BAT(APINT_TYPE_PREFIX, 1349) +HANDLE_BAT(APINT_TYPE_PREFIX, 1350) +HANDLE_BAT(APINT_TYPE_PREFIX, 1351) +HANDLE_BAT(APINT_TYPE_PREFIX, 1352) +HANDLE_BAT(APINT_TYPE_PREFIX, 1353) +HANDLE_BAT(APINT_TYPE_PREFIX, 1354) +HANDLE_BAT(APINT_TYPE_PREFIX, 1355) +HANDLE_BAT(APINT_TYPE_PREFIX, 1356) +HANDLE_BAT(APINT_TYPE_PREFIX, 1357) +HANDLE_BAT(APINT_TYPE_PREFIX, 1358) +HANDLE_BAT(APINT_TYPE_PREFIX, 1359) +HANDLE_BAT(APINT_TYPE_PREFIX, 1360) +HANDLE_BAT(APINT_TYPE_PREFIX, 1361) +HANDLE_BAT(APINT_TYPE_PREFIX, 1362) +HANDLE_BAT(APINT_TYPE_PREFIX, 1363) +HANDLE_BAT(APINT_TYPE_PREFIX, 1364) +HANDLE_BAT(APINT_TYPE_PREFIX, 1365) +HANDLE_BAT(APINT_TYPE_PREFIX, 1366) +HANDLE_BAT(APINT_TYPE_PREFIX, 1367) +HANDLE_BAT(APINT_TYPE_PREFIX, 1368) +HANDLE_BAT(APINT_TYPE_PREFIX, 1369) +HANDLE_BAT(APINT_TYPE_PREFIX, 1370) +HANDLE_BAT(APINT_TYPE_PREFIX, 1371) +HANDLE_BAT(APINT_TYPE_PREFIX, 1372) +HANDLE_BAT(APINT_TYPE_PREFIX, 1373) +HANDLE_BAT(APINT_TYPE_PREFIX, 1374) +HANDLE_BAT(APINT_TYPE_PREFIX, 1375) +HANDLE_BAT(APINT_TYPE_PREFIX, 1376) +HANDLE_BAT(APINT_TYPE_PREFIX, 1377) +HANDLE_BAT(APINT_TYPE_PREFIX, 1378) +HANDLE_BAT(APINT_TYPE_PREFIX, 1379) +HANDLE_BAT(APINT_TYPE_PREFIX, 1380) +HANDLE_BAT(APINT_TYPE_PREFIX, 1381) +HANDLE_BAT(APINT_TYPE_PREFIX, 1382) +HANDLE_BAT(APINT_TYPE_PREFIX, 1383) +HANDLE_BAT(APINT_TYPE_PREFIX, 1384) +HANDLE_BAT(APINT_TYPE_PREFIX, 1385) +HANDLE_BAT(APINT_TYPE_PREFIX, 1386) +HANDLE_BAT(APINT_TYPE_PREFIX, 1387) +HANDLE_BAT(APINT_TYPE_PREFIX, 1388) +HANDLE_BAT(APINT_TYPE_PREFIX, 1389) +HANDLE_BAT(APINT_TYPE_PREFIX, 1390) +HANDLE_BAT(APINT_TYPE_PREFIX, 1391) +HANDLE_BAT(APINT_TYPE_PREFIX, 1392) +HANDLE_BAT(APINT_TYPE_PREFIX, 1393) +HANDLE_BAT(APINT_TYPE_PREFIX, 1394) +HANDLE_BAT(APINT_TYPE_PREFIX, 1395) +HANDLE_BAT(APINT_TYPE_PREFIX, 1396) +HANDLE_BAT(APINT_TYPE_PREFIX, 1397) +HANDLE_BAT(APINT_TYPE_PREFIX, 1398) +HANDLE_BAT(APINT_TYPE_PREFIX, 1399) +HANDLE_BAT(APINT_TYPE_PREFIX, 1400) +HANDLE_BAT(APINT_TYPE_PREFIX, 1401) +HANDLE_BAT(APINT_TYPE_PREFIX, 1402) +HANDLE_BAT(APINT_TYPE_PREFIX, 1403) +HANDLE_BAT(APINT_TYPE_PREFIX, 1404) +HANDLE_BAT(APINT_TYPE_PREFIX, 1405) +HANDLE_BAT(APINT_TYPE_PREFIX, 1406) +HANDLE_BAT(APINT_TYPE_PREFIX, 1407) +HANDLE_BAT(APINT_TYPE_PREFIX, 1408) +HANDLE_BAT(APINT_TYPE_PREFIX, 1409) +HANDLE_BAT(APINT_TYPE_PREFIX, 1410) +HANDLE_BAT(APINT_TYPE_PREFIX, 1411) +HANDLE_BAT(APINT_TYPE_PREFIX, 1412) +HANDLE_BAT(APINT_TYPE_PREFIX, 1413) +HANDLE_BAT(APINT_TYPE_PREFIX, 1414) +HANDLE_BAT(APINT_TYPE_PREFIX, 1415) +HANDLE_BAT(APINT_TYPE_PREFIX, 1416) +HANDLE_BAT(APINT_TYPE_PREFIX, 1417) +HANDLE_BAT(APINT_TYPE_PREFIX, 1418) +HANDLE_BAT(APINT_TYPE_PREFIX, 1419) +HANDLE_BAT(APINT_TYPE_PREFIX, 1420) +HANDLE_BAT(APINT_TYPE_PREFIX, 1421) +HANDLE_BAT(APINT_TYPE_PREFIX, 1422) +HANDLE_BAT(APINT_TYPE_PREFIX, 1423) +HANDLE_BAT(APINT_TYPE_PREFIX, 1424) +HANDLE_BAT(APINT_TYPE_PREFIX, 1425) +HANDLE_BAT(APINT_TYPE_PREFIX, 1426) +HANDLE_BAT(APINT_TYPE_PREFIX, 1427) +HANDLE_BAT(APINT_TYPE_PREFIX, 1428) +HANDLE_BAT(APINT_TYPE_PREFIX, 1429) +HANDLE_BAT(APINT_TYPE_PREFIX, 1430) +HANDLE_BAT(APINT_TYPE_PREFIX, 1431) +HANDLE_BAT(APINT_TYPE_PREFIX, 1432) +HANDLE_BAT(APINT_TYPE_PREFIX, 1433) +HANDLE_BAT(APINT_TYPE_PREFIX, 1434) +HANDLE_BAT(APINT_TYPE_PREFIX, 1435) +HANDLE_BAT(APINT_TYPE_PREFIX, 1436) +HANDLE_BAT(APINT_TYPE_PREFIX, 1437) +HANDLE_BAT(APINT_TYPE_PREFIX, 1438) +HANDLE_BAT(APINT_TYPE_PREFIX, 1439) +HANDLE_BAT(APINT_TYPE_PREFIX, 1440) +HANDLE_BAT(APINT_TYPE_PREFIX, 1441) +HANDLE_BAT(APINT_TYPE_PREFIX, 1442) +HANDLE_BAT(APINT_TYPE_PREFIX, 1443) +HANDLE_BAT(APINT_TYPE_PREFIX, 1444) +HANDLE_BAT(APINT_TYPE_PREFIX, 1445) +HANDLE_BAT(APINT_TYPE_PREFIX, 1446) +HANDLE_BAT(APINT_TYPE_PREFIX, 1447) +HANDLE_BAT(APINT_TYPE_PREFIX, 1448) +HANDLE_BAT(APINT_TYPE_PREFIX, 1449) +HANDLE_BAT(APINT_TYPE_PREFIX, 1450) +HANDLE_BAT(APINT_TYPE_PREFIX, 1451) +HANDLE_BAT(APINT_TYPE_PREFIX, 1452) +HANDLE_BAT(APINT_TYPE_PREFIX, 1453) +HANDLE_BAT(APINT_TYPE_PREFIX, 1454) +HANDLE_BAT(APINT_TYPE_PREFIX, 1455) +HANDLE_BAT(APINT_TYPE_PREFIX, 1456) +HANDLE_BAT(APINT_TYPE_PREFIX, 1457) +HANDLE_BAT(APINT_TYPE_PREFIX, 1458) +HANDLE_BAT(APINT_TYPE_PREFIX, 1459) +HANDLE_BAT(APINT_TYPE_PREFIX, 1460) +HANDLE_BAT(APINT_TYPE_PREFIX, 1461) +HANDLE_BAT(APINT_TYPE_PREFIX, 1462) +HANDLE_BAT(APINT_TYPE_PREFIX, 1463) +HANDLE_BAT(APINT_TYPE_PREFIX, 1464) +HANDLE_BAT(APINT_TYPE_PREFIX, 1465) +HANDLE_BAT(APINT_TYPE_PREFIX, 1466) +HANDLE_BAT(APINT_TYPE_PREFIX, 1467) +HANDLE_BAT(APINT_TYPE_PREFIX, 1468) +HANDLE_BAT(APINT_TYPE_PREFIX, 1469) +HANDLE_BAT(APINT_TYPE_PREFIX, 1470) +HANDLE_BAT(APINT_TYPE_PREFIX, 1471) +HANDLE_BAT(APINT_TYPE_PREFIX, 1472) +HANDLE_BAT(APINT_TYPE_PREFIX, 1473) +HANDLE_BAT(APINT_TYPE_PREFIX, 1474) +HANDLE_BAT(APINT_TYPE_PREFIX, 1475) +HANDLE_BAT(APINT_TYPE_PREFIX, 1476) +HANDLE_BAT(APINT_TYPE_PREFIX, 1477) +HANDLE_BAT(APINT_TYPE_PREFIX, 1478) +HANDLE_BAT(APINT_TYPE_PREFIX, 1479) +HANDLE_BAT(APINT_TYPE_PREFIX, 1480) +HANDLE_BAT(APINT_TYPE_PREFIX, 1481) +HANDLE_BAT(APINT_TYPE_PREFIX, 1482) +HANDLE_BAT(APINT_TYPE_PREFIX, 1483) +HANDLE_BAT(APINT_TYPE_PREFIX, 1484) +HANDLE_BAT(APINT_TYPE_PREFIX, 1485) +HANDLE_BAT(APINT_TYPE_PREFIX, 1486) +HANDLE_BAT(APINT_TYPE_PREFIX, 1487) +HANDLE_BAT(APINT_TYPE_PREFIX, 1488) +HANDLE_BAT(APINT_TYPE_PREFIX, 1489) +HANDLE_BAT(APINT_TYPE_PREFIX, 1490) +HANDLE_BAT(APINT_TYPE_PREFIX, 1491) +HANDLE_BAT(APINT_TYPE_PREFIX, 1492) +HANDLE_BAT(APINT_TYPE_PREFIX, 1493) +HANDLE_BAT(APINT_TYPE_PREFIX, 1494) +HANDLE_BAT(APINT_TYPE_PREFIX, 1495) +HANDLE_BAT(APINT_TYPE_PREFIX, 1496) +HANDLE_BAT(APINT_TYPE_PREFIX, 1497) +HANDLE_BAT(APINT_TYPE_PREFIX, 1498) +HANDLE_BAT(APINT_TYPE_PREFIX, 1499) +HANDLE_BAT(APINT_TYPE_PREFIX, 1500) +HANDLE_BAT(APINT_TYPE_PREFIX, 1501) +HANDLE_BAT(APINT_TYPE_PREFIX, 1502) +HANDLE_BAT(APINT_TYPE_PREFIX, 1503) +HANDLE_BAT(APINT_TYPE_PREFIX, 1504) +HANDLE_BAT(APINT_TYPE_PREFIX, 1505) +HANDLE_BAT(APINT_TYPE_PREFIX, 1506) +HANDLE_BAT(APINT_TYPE_PREFIX, 1507) +HANDLE_BAT(APINT_TYPE_PREFIX, 1508) +HANDLE_BAT(APINT_TYPE_PREFIX, 1509) +HANDLE_BAT(APINT_TYPE_PREFIX, 1510) +HANDLE_BAT(APINT_TYPE_PREFIX, 1511) +HANDLE_BAT(APINT_TYPE_PREFIX, 1512) +HANDLE_BAT(APINT_TYPE_PREFIX, 1513) +HANDLE_BAT(APINT_TYPE_PREFIX, 1514) +HANDLE_BAT(APINT_TYPE_PREFIX, 1515) +HANDLE_BAT(APINT_TYPE_PREFIX, 1516) +HANDLE_BAT(APINT_TYPE_PREFIX, 1517) +HANDLE_BAT(APINT_TYPE_PREFIX, 1518) +HANDLE_BAT(APINT_TYPE_PREFIX, 1519) +HANDLE_BAT(APINT_TYPE_PREFIX, 1520) +HANDLE_BAT(APINT_TYPE_PREFIX, 1521) +HANDLE_BAT(APINT_TYPE_PREFIX, 1522) +HANDLE_BAT(APINT_TYPE_PREFIX, 1523) +HANDLE_BAT(APINT_TYPE_PREFIX, 1524) +HANDLE_BAT(APINT_TYPE_PREFIX, 1525) +HANDLE_BAT(APINT_TYPE_PREFIX, 1526) +HANDLE_BAT(APINT_TYPE_PREFIX, 1527) +HANDLE_BAT(APINT_TYPE_PREFIX, 1528) +HANDLE_BAT(APINT_TYPE_PREFIX, 1529) +HANDLE_BAT(APINT_TYPE_PREFIX, 1530) +HANDLE_BAT(APINT_TYPE_PREFIX, 1531) +HANDLE_BAT(APINT_TYPE_PREFIX, 1532) +HANDLE_BAT(APINT_TYPE_PREFIX, 1533) +HANDLE_BAT(APINT_TYPE_PREFIX, 1534) +HANDLE_BAT(APINT_TYPE_PREFIX, 1535) +HANDLE_BAT(APINT_TYPE_PREFIX, 1536) +HANDLE_BAT(APINT_TYPE_PREFIX, 1537) +HANDLE_BAT(APINT_TYPE_PREFIX, 1538) +HANDLE_BAT(APINT_TYPE_PREFIX, 1539) +HANDLE_BAT(APINT_TYPE_PREFIX, 1540) +HANDLE_BAT(APINT_TYPE_PREFIX, 1541) +HANDLE_BAT(APINT_TYPE_PREFIX, 1542) +HANDLE_BAT(APINT_TYPE_PREFIX, 1543) +HANDLE_BAT(APINT_TYPE_PREFIX, 1544) +HANDLE_BAT(APINT_TYPE_PREFIX, 1545) +HANDLE_BAT(APINT_TYPE_PREFIX, 1546) +HANDLE_BAT(APINT_TYPE_PREFIX, 1547) +HANDLE_BAT(APINT_TYPE_PREFIX, 1548) +HANDLE_BAT(APINT_TYPE_PREFIX, 1549) +HANDLE_BAT(APINT_TYPE_PREFIX, 1550) +HANDLE_BAT(APINT_TYPE_PREFIX, 1551) +HANDLE_BAT(APINT_TYPE_PREFIX, 1552) +HANDLE_BAT(APINT_TYPE_PREFIX, 1553) +HANDLE_BAT(APINT_TYPE_PREFIX, 1554) +HANDLE_BAT(APINT_TYPE_PREFIX, 1555) +HANDLE_BAT(APINT_TYPE_PREFIX, 1556) +HANDLE_BAT(APINT_TYPE_PREFIX, 1557) +HANDLE_BAT(APINT_TYPE_PREFIX, 1558) +HANDLE_BAT(APINT_TYPE_PREFIX, 1559) +HANDLE_BAT(APINT_TYPE_PREFIX, 1560) +HANDLE_BAT(APINT_TYPE_PREFIX, 1561) +HANDLE_BAT(APINT_TYPE_PREFIX, 1562) +HANDLE_BAT(APINT_TYPE_PREFIX, 1563) +HANDLE_BAT(APINT_TYPE_PREFIX, 1564) +HANDLE_BAT(APINT_TYPE_PREFIX, 1565) +HANDLE_BAT(APINT_TYPE_PREFIX, 1566) +HANDLE_BAT(APINT_TYPE_PREFIX, 1567) +HANDLE_BAT(APINT_TYPE_PREFIX, 1568) +HANDLE_BAT(APINT_TYPE_PREFIX, 1569) +HANDLE_BAT(APINT_TYPE_PREFIX, 1570) +HANDLE_BAT(APINT_TYPE_PREFIX, 1571) +HANDLE_BAT(APINT_TYPE_PREFIX, 1572) +HANDLE_BAT(APINT_TYPE_PREFIX, 1573) +HANDLE_BAT(APINT_TYPE_PREFIX, 1574) +HANDLE_BAT(APINT_TYPE_PREFIX, 1575) +HANDLE_BAT(APINT_TYPE_PREFIX, 1576) +HANDLE_BAT(APINT_TYPE_PREFIX, 1577) +HANDLE_BAT(APINT_TYPE_PREFIX, 1578) +HANDLE_BAT(APINT_TYPE_PREFIX, 1579) +HANDLE_BAT(APINT_TYPE_PREFIX, 1580) +HANDLE_BAT(APINT_TYPE_PREFIX, 1581) +HANDLE_BAT(APINT_TYPE_PREFIX, 1582) +HANDLE_BAT(APINT_TYPE_PREFIX, 1583) +HANDLE_BAT(APINT_TYPE_PREFIX, 1584) +HANDLE_BAT(APINT_TYPE_PREFIX, 1585) +HANDLE_BAT(APINT_TYPE_PREFIX, 1586) +HANDLE_BAT(APINT_TYPE_PREFIX, 1587) +HANDLE_BAT(APINT_TYPE_PREFIX, 1588) +HANDLE_BAT(APINT_TYPE_PREFIX, 1589) +HANDLE_BAT(APINT_TYPE_PREFIX, 1590) +HANDLE_BAT(APINT_TYPE_PREFIX, 1591) +HANDLE_BAT(APINT_TYPE_PREFIX, 1592) +HANDLE_BAT(APINT_TYPE_PREFIX, 1593) +HANDLE_BAT(APINT_TYPE_PREFIX, 1594) +HANDLE_BAT(APINT_TYPE_PREFIX, 1595) +HANDLE_BAT(APINT_TYPE_PREFIX, 1596) +HANDLE_BAT(APINT_TYPE_PREFIX, 1597) +HANDLE_BAT(APINT_TYPE_PREFIX, 1598) +HANDLE_BAT(APINT_TYPE_PREFIX, 1599) +HANDLE_BAT(APINT_TYPE_PREFIX, 1600) +HANDLE_BAT(APINT_TYPE_PREFIX, 1601) +HANDLE_BAT(APINT_TYPE_PREFIX, 1602) +HANDLE_BAT(APINT_TYPE_PREFIX, 1603) +HANDLE_BAT(APINT_TYPE_PREFIX, 1604) +HANDLE_BAT(APINT_TYPE_PREFIX, 1605) +HANDLE_BAT(APINT_TYPE_PREFIX, 1606) +HANDLE_BAT(APINT_TYPE_PREFIX, 1607) +HANDLE_BAT(APINT_TYPE_PREFIX, 1608) +HANDLE_BAT(APINT_TYPE_PREFIX, 1609) +HANDLE_BAT(APINT_TYPE_PREFIX, 1610) +HANDLE_BAT(APINT_TYPE_PREFIX, 1611) +HANDLE_BAT(APINT_TYPE_PREFIX, 1612) +HANDLE_BAT(APINT_TYPE_PREFIX, 1613) +HANDLE_BAT(APINT_TYPE_PREFIX, 1614) +HANDLE_BAT(APINT_TYPE_PREFIX, 1615) +HANDLE_BAT(APINT_TYPE_PREFIX, 1616) +HANDLE_BAT(APINT_TYPE_PREFIX, 1617) +HANDLE_BAT(APINT_TYPE_PREFIX, 1618) +HANDLE_BAT(APINT_TYPE_PREFIX, 1619) +HANDLE_BAT(APINT_TYPE_PREFIX, 1620) +HANDLE_BAT(APINT_TYPE_PREFIX, 1621) +HANDLE_BAT(APINT_TYPE_PREFIX, 1622) +HANDLE_BAT(APINT_TYPE_PREFIX, 1623) +HANDLE_BAT(APINT_TYPE_PREFIX, 1624) +HANDLE_BAT(APINT_TYPE_PREFIX, 1625) +HANDLE_BAT(APINT_TYPE_PREFIX, 1626) +HANDLE_BAT(APINT_TYPE_PREFIX, 1627) +HANDLE_BAT(APINT_TYPE_PREFIX, 1628) +HANDLE_BAT(APINT_TYPE_PREFIX, 1629) +HANDLE_BAT(APINT_TYPE_PREFIX, 1630) +HANDLE_BAT(APINT_TYPE_PREFIX, 1631) +HANDLE_BAT(APINT_TYPE_PREFIX, 1632) +HANDLE_BAT(APINT_TYPE_PREFIX, 1633) +HANDLE_BAT(APINT_TYPE_PREFIX, 1634) +HANDLE_BAT(APINT_TYPE_PREFIX, 1635) +HANDLE_BAT(APINT_TYPE_PREFIX, 1636) +HANDLE_BAT(APINT_TYPE_PREFIX, 1637) +HANDLE_BAT(APINT_TYPE_PREFIX, 1638) +HANDLE_BAT(APINT_TYPE_PREFIX, 1639) +HANDLE_BAT(APINT_TYPE_PREFIX, 1640) +HANDLE_BAT(APINT_TYPE_PREFIX, 1641) +HANDLE_BAT(APINT_TYPE_PREFIX, 1642) +HANDLE_BAT(APINT_TYPE_PREFIX, 1643) +HANDLE_BAT(APINT_TYPE_PREFIX, 1644) +HANDLE_BAT(APINT_TYPE_PREFIX, 1645) +HANDLE_BAT(APINT_TYPE_PREFIX, 1646) +HANDLE_BAT(APINT_TYPE_PREFIX, 1647) +HANDLE_BAT(APINT_TYPE_PREFIX, 1648) +HANDLE_BAT(APINT_TYPE_PREFIX, 1649) +HANDLE_BAT(APINT_TYPE_PREFIX, 1650) +HANDLE_BAT(APINT_TYPE_PREFIX, 1651) +HANDLE_BAT(APINT_TYPE_PREFIX, 1652) +HANDLE_BAT(APINT_TYPE_PREFIX, 1653) +HANDLE_BAT(APINT_TYPE_PREFIX, 1654) +HANDLE_BAT(APINT_TYPE_PREFIX, 1655) +HANDLE_BAT(APINT_TYPE_PREFIX, 1656) +HANDLE_BAT(APINT_TYPE_PREFIX, 1657) +HANDLE_BAT(APINT_TYPE_PREFIX, 1658) +HANDLE_BAT(APINT_TYPE_PREFIX, 1659) +HANDLE_BAT(APINT_TYPE_PREFIX, 1660) +HANDLE_BAT(APINT_TYPE_PREFIX, 1661) +HANDLE_BAT(APINT_TYPE_PREFIX, 1662) +HANDLE_BAT(APINT_TYPE_PREFIX, 1663) +HANDLE_BAT(APINT_TYPE_PREFIX, 1664) +HANDLE_BAT(APINT_TYPE_PREFIX, 1665) +HANDLE_BAT(APINT_TYPE_PREFIX, 1666) +HANDLE_BAT(APINT_TYPE_PREFIX, 1667) +HANDLE_BAT(APINT_TYPE_PREFIX, 1668) +HANDLE_BAT(APINT_TYPE_PREFIX, 1669) +HANDLE_BAT(APINT_TYPE_PREFIX, 1670) +HANDLE_BAT(APINT_TYPE_PREFIX, 1671) +HANDLE_BAT(APINT_TYPE_PREFIX, 1672) +HANDLE_BAT(APINT_TYPE_PREFIX, 1673) +HANDLE_BAT(APINT_TYPE_PREFIX, 1674) +HANDLE_BAT(APINT_TYPE_PREFIX, 1675) +HANDLE_BAT(APINT_TYPE_PREFIX, 1676) +HANDLE_BAT(APINT_TYPE_PREFIX, 1677) +HANDLE_BAT(APINT_TYPE_PREFIX, 1678) +HANDLE_BAT(APINT_TYPE_PREFIX, 1679) +HANDLE_BAT(APINT_TYPE_PREFIX, 1680) +HANDLE_BAT(APINT_TYPE_PREFIX, 1681) +HANDLE_BAT(APINT_TYPE_PREFIX, 1682) +HANDLE_BAT(APINT_TYPE_PREFIX, 1683) +HANDLE_BAT(APINT_TYPE_PREFIX, 1684) +HANDLE_BAT(APINT_TYPE_PREFIX, 1685) +HANDLE_BAT(APINT_TYPE_PREFIX, 1686) +HANDLE_BAT(APINT_TYPE_PREFIX, 1687) +HANDLE_BAT(APINT_TYPE_PREFIX, 1688) +HANDLE_BAT(APINT_TYPE_PREFIX, 1689) +HANDLE_BAT(APINT_TYPE_PREFIX, 1690) +HANDLE_BAT(APINT_TYPE_PREFIX, 1691) +HANDLE_BAT(APINT_TYPE_PREFIX, 1692) +HANDLE_BAT(APINT_TYPE_PREFIX, 1693) +HANDLE_BAT(APINT_TYPE_PREFIX, 1694) +HANDLE_BAT(APINT_TYPE_PREFIX, 1695) +HANDLE_BAT(APINT_TYPE_PREFIX, 1696) +HANDLE_BAT(APINT_TYPE_PREFIX, 1697) +HANDLE_BAT(APINT_TYPE_PREFIX, 1698) +HANDLE_BAT(APINT_TYPE_PREFIX, 1699) +HANDLE_BAT(APINT_TYPE_PREFIX, 1700) +HANDLE_BAT(APINT_TYPE_PREFIX, 1701) +HANDLE_BAT(APINT_TYPE_PREFIX, 1702) +HANDLE_BAT(APINT_TYPE_PREFIX, 1703) +HANDLE_BAT(APINT_TYPE_PREFIX, 1704) +HANDLE_BAT(APINT_TYPE_PREFIX, 1705) +HANDLE_BAT(APINT_TYPE_PREFIX, 1706) +HANDLE_BAT(APINT_TYPE_PREFIX, 1707) +HANDLE_BAT(APINT_TYPE_PREFIX, 1708) +HANDLE_BAT(APINT_TYPE_PREFIX, 1709) +HANDLE_BAT(APINT_TYPE_PREFIX, 1710) +HANDLE_BAT(APINT_TYPE_PREFIX, 1711) +HANDLE_BAT(APINT_TYPE_PREFIX, 1712) +HANDLE_BAT(APINT_TYPE_PREFIX, 1713) +HANDLE_BAT(APINT_TYPE_PREFIX, 1714) +HANDLE_BAT(APINT_TYPE_PREFIX, 1715) +HANDLE_BAT(APINT_TYPE_PREFIX, 1716) +HANDLE_BAT(APINT_TYPE_PREFIX, 1717) +HANDLE_BAT(APINT_TYPE_PREFIX, 1718) +HANDLE_BAT(APINT_TYPE_PREFIX, 1719) +HANDLE_BAT(APINT_TYPE_PREFIX, 1720) +HANDLE_BAT(APINT_TYPE_PREFIX, 1721) +HANDLE_BAT(APINT_TYPE_PREFIX, 1722) +HANDLE_BAT(APINT_TYPE_PREFIX, 1723) +HANDLE_BAT(APINT_TYPE_PREFIX, 1724) +HANDLE_BAT(APINT_TYPE_PREFIX, 1725) +HANDLE_BAT(APINT_TYPE_PREFIX, 1726) +HANDLE_BAT(APINT_TYPE_PREFIX, 1727) +HANDLE_BAT(APINT_TYPE_PREFIX, 1728) +HANDLE_BAT(APINT_TYPE_PREFIX, 1729) +HANDLE_BAT(APINT_TYPE_PREFIX, 1730) +HANDLE_BAT(APINT_TYPE_PREFIX, 1731) +HANDLE_BAT(APINT_TYPE_PREFIX, 1732) +HANDLE_BAT(APINT_TYPE_PREFIX, 1733) +HANDLE_BAT(APINT_TYPE_PREFIX, 1734) +HANDLE_BAT(APINT_TYPE_PREFIX, 1735) +HANDLE_BAT(APINT_TYPE_PREFIX, 1736) +HANDLE_BAT(APINT_TYPE_PREFIX, 1737) +HANDLE_BAT(APINT_TYPE_PREFIX, 1738) +HANDLE_BAT(APINT_TYPE_PREFIX, 1739) +HANDLE_BAT(APINT_TYPE_PREFIX, 1740) +HANDLE_BAT(APINT_TYPE_PREFIX, 1741) +HANDLE_BAT(APINT_TYPE_PREFIX, 1742) +HANDLE_BAT(APINT_TYPE_PREFIX, 1743) +HANDLE_BAT(APINT_TYPE_PREFIX, 1744) +HANDLE_BAT(APINT_TYPE_PREFIX, 1745) +HANDLE_BAT(APINT_TYPE_PREFIX, 1746) +HANDLE_BAT(APINT_TYPE_PREFIX, 1747) +HANDLE_BAT(APINT_TYPE_PREFIX, 1748) +HANDLE_BAT(APINT_TYPE_PREFIX, 1749) +HANDLE_BAT(APINT_TYPE_PREFIX, 1750) +HANDLE_BAT(APINT_TYPE_PREFIX, 1751) +HANDLE_BAT(APINT_TYPE_PREFIX, 1752) +HANDLE_BAT(APINT_TYPE_PREFIX, 1753) +HANDLE_BAT(APINT_TYPE_PREFIX, 1754) +HANDLE_BAT(APINT_TYPE_PREFIX, 1755) +HANDLE_BAT(APINT_TYPE_PREFIX, 1756) +HANDLE_BAT(APINT_TYPE_PREFIX, 1757) +HANDLE_BAT(APINT_TYPE_PREFIX, 1758) +HANDLE_BAT(APINT_TYPE_PREFIX, 1759) +HANDLE_BAT(APINT_TYPE_PREFIX, 1760) +HANDLE_BAT(APINT_TYPE_PREFIX, 1761) +HANDLE_BAT(APINT_TYPE_PREFIX, 1762) +HANDLE_BAT(APINT_TYPE_PREFIX, 1763) +HANDLE_BAT(APINT_TYPE_PREFIX, 1764) +HANDLE_BAT(APINT_TYPE_PREFIX, 1765) +HANDLE_BAT(APINT_TYPE_PREFIX, 1766) +HANDLE_BAT(APINT_TYPE_PREFIX, 1767) +HANDLE_BAT(APINT_TYPE_PREFIX, 1768) +HANDLE_BAT(APINT_TYPE_PREFIX, 1769) +HANDLE_BAT(APINT_TYPE_PREFIX, 1770) +HANDLE_BAT(APINT_TYPE_PREFIX, 1771) +HANDLE_BAT(APINT_TYPE_PREFIX, 1772) +HANDLE_BAT(APINT_TYPE_PREFIX, 1773) +HANDLE_BAT(APINT_TYPE_PREFIX, 1774) +HANDLE_BAT(APINT_TYPE_PREFIX, 1775) +HANDLE_BAT(APINT_TYPE_PREFIX, 1776) +HANDLE_BAT(APINT_TYPE_PREFIX, 1777) +HANDLE_BAT(APINT_TYPE_PREFIX, 1778) +HANDLE_BAT(APINT_TYPE_PREFIX, 1779) +HANDLE_BAT(APINT_TYPE_PREFIX, 1780) +HANDLE_BAT(APINT_TYPE_PREFIX, 1781) +HANDLE_BAT(APINT_TYPE_PREFIX, 1782) +HANDLE_BAT(APINT_TYPE_PREFIX, 1783) +HANDLE_BAT(APINT_TYPE_PREFIX, 1784) +HANDLE_BAT(APINT_TYPE_PREFIX, 1785) +HANDLE_BAT(APINT_TYPE_PREFIX, 1786) +HANDLE_BAT(APINT_TYPE_PREFIX, 1787) +HANDLE_BAT(APINT_TYPE_PREFIX, 1788) +HANDLE_BAT(APINT_TYPE_PREFIX, 1789) +HANDLE_BAT(APINT_TYPE_PREFIX, 1790) +HANDLE_BAT(APINT_TYPE_PREFIX, 1791) +HANDLE_BAT(APINT_TYPE_PREFIX, 1792) +HANDLE_BAT(APINT_TYPE_PREFIX, 1793) +HANDLE_BAT(APINT_TYPE_PREFIX, 1794) +HANDLE_BAT(APINT_TYPE_PREFIX, 1795) +HANDLE_BAT(APINT_TYPE_PREFIX, 1796) +HANDLE_BAT(APINT_TYPE_PREFIX, 1797) +HANDLE_BAT(APINT_TYPE_PREFIX, 1798) +HANDLE_BAT(APINT_TYPE_PREFIX, 1799) +HANDLE_BAT(APINT_TYPE_PREFIX, 1800) +HANDLE_BAT(APINT_TYPE_PREFIX, 1801) +HANDLE_BAT(APINT_TYPE_PREFIX, 1802) +HANDLE_BAT(APINT_TYPE_PREFIX, 1803) +HANDLE_BAT(APINT_TYPE_PREFIX, 1804) +HANDLE_BAT(APINT_TYPE_PREFIX, 1805) +HANDLE_BAT(APINT_TYPE_PREFIX, 1806) +HANDLE_BAT(APINT_TYPE_PREFIX, 1807) +HANDLE_BAT(APINT_TYPE_PREFIX, 1808) +HANDLE_BAT(APINT_TYPE_PREFIX, 1809) +HANDLE_BAT(APINT_TYPE_PREFIX, 1810) +HANDLE_BAT(APINT_TYPE_PREFIX, 1811) +HANDLE_BAT(APINT_TYPE_PREFIX, 1812) +HANDLE_BAT(APINT_TYPE_PREFIX, 1813) +HANDLE_BAT(APINT_TYPE_PREFIX, 1814) +HANDLE_BAT(APINT_TYPE_PREFIX, 1815) +HANDLE_BAT(APINT_TYPE_PREFIX, 1816) +HANDLE_BAT(APINT_TYPE_PREFIX, 1817) +HANDLE_BAT(APINT_TYPE_PREFIX, 1818) +HANDLE_BAT(APINT_TYPE_PREFIX, 1819) +HANDLE_BAT(APINT_TYPE_PREFIX, 1820) +HANDLE_BAT(APINT_TYPE_PREFIX, 1821) +HANDLE_BAT(APINT_TYPE_PREFIX, 1822) +HANDLE_BAT(APINT_TYPE_PREFIX, 1823) +HANDLE_BAT(APINT_TYPE_PREFIX, 1824) +HANDLE_BAT(APINT_TYPE_PREFIX, 1825) +HANDLE_BAT(APINT_TYPE_PREFIX, 1826) +HANDLE_BAT(APINT_TYPE_PREFIX, 1827) +HANDLE_BAT(APINT_TYPE_PREFIX, 1828) +HANDLE_BAT(APINT_TYPE_PREFIX, 1829) +HANDLE_BAT(APINT_TYPE_PREFIX, 1830) +HANDLE_BAT(APINT_TYPE_PREFIX, 1831) +HANDLE_BAT(APINT_TYPE_PREFIX, 1832) +HANDLE_BAT(APINT_TYPE_PREFIX, 1833) +HANDLE_BAT(APINT_TYPE_PREFIX, 1834) +HANDLE_BAT(APINT_TYPE_PREFIX, 1835) +HANDLE_BAT(APINT_TYPE_PREFIX, 1836) +HANDLE_BAT(APINT_TYPE_PREFIX, 1837) +HANDLE_BAT(APINT_TYPE_PREFIX, 1838) +HANDLE_BAT(APINT_TYPE_PREFIX, 1839) +HANDLE_BAT(APINT_TYPE_PREFIX, 1840) +HANDLE_BAT(APINT_TYPE_PREFIX, 1841) +HANDLE_BAT(APINT_TYPE_PREFIX, 1842) +HANDLE_BAT(APINT_TYPE_PREFIX, 1843) +HANDLE_BAT(APINT_TYPE_PREFIX, 1844) +HANDLE_BAT(APINT_TYPE_PREFIX, 1845) +HANDLE_BAT(APINT_TYPE_PREFIX, 1846) +HANDLE_BAT(APINT_TYPE_PREFIX, 1847) +HANDLE_BAT(APINT_TYPE_PREFIX, 1848) +HANDLE_BAT(APINT_TYPE_PREFIX, 1849) +HANDLE_BAT(APINT_TYPE_PREFIX, 1850) +HANDLE_BAT(APINT_TYPE_PREFIX, 1851) +HANDLE_BAT(APINT_TYPE_PREFIX, 1852) +HANDLE_BAT(APINT_TYPE_PREFIX, 1853) +HANDLE_BAT(APINT_TYPE_PREFIX, 1854) +HANDLE_BAT(APINT_TYPE_PREFIX, 1855) +HANDLE_BAT(APINT_TYPE_PREFIX, 1856) +HANDLE_BAT(APINT_TYPE_PREFIX, 1857) +HANDLE_BAT(APINT_TYPE_PREFIX, 1858) +HANDLE_BAT(APINT_TYPE_PREFIX, 1859) +HANDLE_BAT(APINT_TYPE_PREFIX, 1860) +HANDLE_BAT(APINT_TYPE_PREFIX, 1861) +HANDLE_BAT(APINT_TYPE_PREFIX, 1862) +HANDLE_BAT(APINT_TYPE_PREFIX, 1863) +HANDLE_BAT(APINT_TYPE_PREFIX, 1864) +HANDLE_BAT(APINT_TYPE_PREFIX, 1865) +HANDLE_BAT(APINT_TYPE_PREFIX, 1866) +HANDLE_BAT(APINT_TYPE_PREFIX, 1867) +HANDLE_BAT(APINT_TYPE_PREFIX, 1868) +HANDLE_BAT(APINT_TYPE_PREFIX, 1869) +HANDLE_BAT(APINT_TYPE_PREFIX, 1870) +HANDLE_BAT(APINT_TYPE_PREFIX, 1871) +HANDLE_BAT(APINT_TYPE_PREFIX, 1872) +HANDLE_BAT(APINT_TYPE_PREFIX, 1873) +HANDLE_BAT(APINT_TYPE_PREFIX, 1874) +HANDLE_BAT(APINT_TYPE_PREFIX, 1875) +HANDLE_BAT(APINT_TYPE_PREFIX, 1876) +HANDLE_BAT(APINT_TYPE_PREFIX, 1877) +HANDLE_BAT(APINT_TYPE_PREFIX, 1878) +HANDLE_BAT(APINT_TYPE_PREFIX, 1879) +HANDLE_BAT(APINT_TYPE_PREFIX, 1880) +HANDLE_BAT(APINT_TYPE_PREFIX, 1881) +HANDLE_BAT(APINT_TYPE_PREFIX, 1882) +HANDLE_BAT(APINT_TYPE_PREFIX, 1883) +HANDLE_BAT(APINT_TYPE_PREFIX, 1884) +HANDLE_BAT(APINT_TYPE_PREFIX, 1885) +HANDLE_BAT(APINT_TYPE_PREFIX, 1886) +HANDLE_BAT(APINT_TYPE_PREFIX, 1887) +HANDLE_BAT(APINT_TYPE_PREFIX, 1888) +HANDLE_BAT(APINT_TYPE_PREFIX, 1889) +HANDLE_BAT(APINT_TYPE_PREFIX, 1890) +HANDLE_BAT(APINT_TYPE_PREFIX, 1891) +HANDLE_BAT(APINT_TYPE_PREFIX, 1892) +HANDLE_BAT(APINT_TYPE_PREFIX, 1893) +HANDLE_BAT(APINT_TYPE_PREFIX, 1894) +HANDLE_BAT(APINT_TYPE_PREFIX, 1895) +HANDLE_BAT(APINT_TYPE_PREFIX, 1896) +HANDLE_BAT(APINT_TYPE_PREFIX, 1897) +HANDLE_BAT(APINT_TYPE_PREFIX, 1898) +HANDLE_BAT(APINT_TYPE_PREFIX, 1899) +HANDLE_BAT(APINT_TYPE_PREFIX, 1900) +HANDLE_BAT(APINT_TYPE_PREFIX, 1901) +HANDLE_BAT(APINT_TYPE_PREFIX, 1902) +HANDLE_BAT(APINT_TYPE_PREFIX, 1903) +HANDLE_BAT(APINT_TYPE_PREFIX, 1904) +HANDLE_BAT(APINT_TYPE_PREFIX, 1905) +HANDLE_BAT(APINT_TYPE_PREFIX, 1906) +HANDLE_BAT(APINT_TYPE_PREFIX, 1907) +HANDLE_BAT(APINT_TYPE_PREFIX, 1908) +HANDLE_BAT(APINT_TYPE_PREFIX, 1909) +HANDLE_BAT(APINT_TYPE_PREFIX, 1910) +HANDLE_BAT(APINT_TYPE_PREFIX, 1911) +HANDLE_BAT(APINT_TYPE_PREFIX, 1912) +HANDLE_BAT(APINT_TYPE_PREFIX, 1913) +HANDLE_BAT(APINT_TYPE_PREFIX, 1914) +HANDLE_BAT(APINT_TYPE_PREFIX, 1915) +HANDLE_BAT(APINT_TYPE_PREFIX, 1916) +HANDLE_BAT(APINT_TYPE_PREFIX, 1917) +HANDLE_BAT(APINT_TYPE_PREFIX, 1918) +HANDLE_BAT(APINT_TYPE_PREFIX, 1919) +HANDLE_BAT(APINT_TYPE_PREFIX, 1920) +HANDLE_BAT(APINT_TYPE_PREFIX, 1921) +HANDLE_BAT(APINT_TYPE_PREFIX, 1922) +HANDLE_BAT(APINT_TYPE_PREFIX, 1923) +HANDLE_BAT(APINT_TYPE_PREFIX, 1924) +HANDLE_BAT(APINT_TYPE_PREFIX, 1925) +HANDLE_BAT(APINT_TYPE_PREFIX, 1926) +HANDLE_BAT(APINT_TYPE_PREFIX, 1927) +HANDLE_BAT(APINT_TYPE_PREFIX, 1928) +HANDLE_BAT(APINT_TYPE_PREFIX, 1929) +HANDLE_BAT(APINT_TYPE_PREFIX, 1930) +HANDLE_BAT(APINT_TYPE_PREFIX, 1931) +HANDLE_BAT(APINT_TYPE_PREFIX, 1932) +HANDLE_BAT(APINT_TYPE_PREFIX, 1933) +HANDLE_BAT(APINT_TYPE_PREFIX, 1934) +HANDLE_BAT(APINT_TYPE_PREFIX, 1935) +HANDLE_BAT(APINT_TYPE_PREFIX, 1936) +HANDLE_BAT(APINT_TYPE_PREFIX, 1937) +HANDLE_BAT(APINT_TYPE_PREFIX, 1938) +HANDLE_BAT(APINT_TYPE_PREFIX, 1939) +HANDLE_BAT(APINT_TYPE_PREFIX, 1940) +HANDLE_BAT(APINT_TYPE_PREFIX, 1941) +HANDLE_BAT(APINT_TYPE_PREFIX, 1942) +HANDLE_BAT(APINT_TYPE_PREFIX, 1943) +HANDLE_BAT(APINT_TYPE_PREFIX, 1944) +HANDLE_BAT(APINT_TYPE_PREFIX, 1945) +HANDLE_BAT(APINT_TYPE_PREFIX, 1946) +HANDLE_BAT(APINT_TYPE_PREFIX, 1947) +HANDLE_BAT(APINT_TYPE_PREFIX, 1948) +HANDLE_BAT(APINT_TYPE_PREFIX, 1949) +HANDLE_BAT(APINT_TYPE_PREFIX, 1950) +HANDLE_BAT(APINT_TYPE_PREFIX, 1951) +HANDLE_BAT(APINT_TYPE_PREFIX, 1952) +HANDLE_BAT(APINT_TYPE_PREFIX, 1953) +HANDLE_BAT(APINT_TYPE_PREFIX, 1954) +HANDLE_BAT(APINT_TYPE_PREFIX, 1955) +HANDLE_BAT(APINT_TYPE_PREFIX, 1956) +HANDLE_BAT(APINT_TYPE_PREFIX, 1957) +HANDLE_BAT(APINT_TYPE_PREFIX, 1958) +HANDLE_BAT(APINT_TYPE_PREFIX, 1959) +HANDLE_BAT(APINT_TYPE_PREFIX, 1960) +HANDLE_BAT(APINT_TYPE_PREFIX, 1961) +HANDLE_BAT(APINT_TYPE_PREFIX, 1962) +HANDLE_BAT(APINT_TYPE_PREFIX, 1963) +HANDLE_BAT(APINT_TYPE_PREFIX, 1964) +HANDLE_BAT(APINT_TYPE_PREFIX, 1965) +HANDLE_BAT(APINT_TYPE_PREFIX, 1966) +HANDLE_BAT(APINT_TYPE_PREFIX, 1967) +HANDLE_BAT(APINT_TYPE_PREFIX, 1968) +HANDLE_BAT(APINT_TYPE_PREFIX, 1969) +HANDLE_BAT(APINT_TYPE_PREFIX, 1970) +HANDLE_BAT(APINT_TYPE_PREFIX, 1971) +HANDLE_BAT(APINT_TYPE_PREFIX, 1972) +HANDLE_BAT(APINT_TYPE_PREFIX, 1973) +HANDLE_BAT(APINT_TYPE_PREFIX, 1974) +HANDLE_BAT(APINT_TYPE_PREFIX, 1975) +HANDLE_BAT(APINT_TYPE_PREFIX, 1976) +HANDLE_BAT(APINT_TYPE_PREFIX, 1977) +HANDLE_BAT(APINT_TYPE_PREFIX, 1978) +HANDLE_BAT(APINT_TYPE_PREFIX, 1979) +HANDLE_BAT(APINT_TYPE_PREFIX, 1980) +HANDLE_BAT(APINT_TYPE_PREFIX, 1981) +HANDLE_BAT(APINT_TYPE_PREFIX, 1982) +HANDLE_BAT(APINT_TYPE_PREFIX, 1983) +HANDLE_BAT(APINT_TYPE_PREFIX, 1984) +HANDLE_BAT(APINT_TYPE_PREFIX, 1985) +HANDLE_BAT(APINT_TYPE_PREFIX, 1986) +HANDLE_BAT(APINT_TYPE_PREFIX, 1987) +HANDLE_BAT(APINT_TYPE_PREFIX, 1988) +HANDLE_BAT(APINT_TYPE_PREFIX, 1989) +HANDLE_BAT(APINT_TYPE_PREFIX, 1990) +HANDLE_BAT(APINT_TYPE_PREFIX, 1991) +HANDLE_BAT(APINT_TYPE_PREFIX, 1992) +HANDLE_BAT(APINT_TYPE_PREFIX, 1993) +HANDLE_BAT(APINT_TYPE_PREFIX, 1994) +HANDLE_BAT(APINT_TYPE_PREFIX, 1995) +HANDLE_BAT(APINT_TYPE_PREFIX, 1996) +HANDLE_BAT(APINT_TYPE_PREFIX, 1997) +HANDLE_BAT(APINT_TYPE_PREFIX, 1998) +HANDLE_BAT(APINT_TYPE_PREFIX, 1999) +HANDLE_BAT(APINT_TYPE_PREFIX, 2000) +HANDLE_BAT(APINT_TYPE_PREFIX, 2001) +HANDLE_BAT(APINT_TYPE_PREFIX, 2002) +HANDLE_BAT(APINT_TYPE_PREFIX, 2003) +HANDLE_BAT(APINT_TYPE_PREFIX, 2004) +HANDLE_BAT(APINT_TYPE_PREFIX, 2005) +HANDLE_BAT(APINT_TYPE_PREFIX, 2006) +HANDLE_BAT(APINT_TYPE_PREFIX, 2007) +HANDLE_BAT(APINT_TYPE_PREFIX, 2008) +HANDLE_BAT(APINT_TYPE_PREFIX, 2009) +HANDLE_BAT(APINT_TYPE_PREFIX, 2010) +HANDLE_BAT(APINT_TYPE_PREFIX, 2011) +HANDLE_BAT(APINT_TYPE_PREFIX, 2012) +HANDLE_BAT(APINT_TYPE_PREFIX, 2013) +HANDLE_BAT(APINT_TYPE_PREFIX, 2014) +HANDLE_BAT(APINT_TYPE_PREFIX, 2015) +HANDLE_BAT(APINT_TYPE_PREFIX, 2016) +HANDLE_BAT(APINT_TYPE_PREFIX, 2017) +HANDLE_BAT(APINT_TYPE_PREFIX, 2018) +HANDLE_BAT(APINT_TYPE_PREFIX, 2019) +HANDLE_BAT(APINT_TYPE_PREFIX, 2020) +HANDLE_BAT(APINT_TYPE_PREFIX, 2021) +HANDLE_BAT(APINT_TYPE_PREFIX, 2022) +HANDLE_BAT(APINT_TYPE_PREFIX, 2023) +HANDLE_BAT(APINT_TYPE_PREFIX, 2024) +HANDLE_BAT(APINT_TYPE_PREFIX, 2025) +HANDLE_BAT(APINT_TYPE_PREFIX, 2026) +HANDLE_BAT(APINT_TYPE_PREFIX, 2027) +HANDLE_BAT(APINT_TYPE_PREFIX, 2028) +HANDLE_BAT(APINT_TYPE_PREFIX, 2029) +HANDLE_BAT(APINT_TYPE_PREFIX, 2030) +HANDLE_BAT(APINT_TYPE_PREFIX, 2031) +HANDLE_BAT(APINT_TYPE_PREFIX, 2032) +HANDLE_BAT(APINT_TYPE_PREFIX, 2033) +HANDLE_BAT(APINT_TYPE_PREFIX, 2034) +HANDLE_BAT(APINT_TYPE_PREFIX, 2035) +HANDLE_BAT(APINT_TYPE_PREFIX, 2036) +HANDLE_BAT(APINT_TYPE_PREFIX, 2037) +HANDLE_BAT(APINT_TYPE_PREFIX, 2038) +HANDLE_BAT(APINT_TYPE_PREFIX, 2039) +HANDLE_BAT(APINT_TYPE_PREFIX, 2040) +HANDLE_BAT(APINT_TYPE_PREFIX, 2041) +HANDLE_BAT(APINT_TYPE_PREFIX, 2042) +HANDLE_BAT(APINT_TYPE_PREFIX, 2043) +HANDLE_BAT(APINT_TYPE_PREFIX, 2044) +HANDLE_BAT(APINT_TYPE_PREFIX, 2045) +HANDLE_BAT(APINT_TYPE_PREFIX, 2046) +HANDLE_BAT(APINT_TYPE_PREFIX, 2047) +HANDLE_BAT(APINT_TYPE_PREFIX, 2048) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 2 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 2049) +HANDLE_BAT(, 2050) +HANDLE_BAT(, 2051) +HANDLE_BAT(, 2052) +HANDLE_BAT(, 2053) +HANDLE_BAT(, 2054) +HANDLE_BAT(, 2055) +HANDLE_BAT(, 2056) +HANDLE_BAT(, 2057) +HANDLE_BAT(, 2058) +HANDLE_BAT(, 2059) +HANDLE_BAT(, 2060) +HANDLE_BAT(, 2061) +HANDLE_BAT(, 2062) +HANDLE_BAT(, 2063) +HANDLE_BAT(, 2064) +HANDLE_BAT(, 2065) +HANDLE_BAT(, 2066) +HANDLE_BAT(, 2067) +HANDLE_BAT(, 2068) +HANDLE_BAT(, 2069) +HANDLE_BAT(, 2070) +HANDLE_BAT(, 2071) +HANDLE_BAT(, 2072) +HANDLE_BAT(, 2073) +HANDLE_BAT(, 2074) +HANDLE_BAT(, 2075) +HANDLE_BAT(, 2076) +HANDLE_BAT(, 2077) +HANDLE_BAT(, 2078) +HANDLE_BAT(, 2079) +HANDLE_BAT(, 2080) +HANDLE_BAT(, 2081) +HANDLE_BAT(, 2082) +HANDLE_BAT(, 2083) +HANDLE_BAT(, 2084) +HANDLE_BAT(, 2085) +HANDLE_BAT(, 2086) +HANDLE_BAT(, 2087) +HANDLE_BAT(, 2088) +HANDLE_BAT(, 2089) +HANDLE_BAT(, 2090) +HANDLE_BAT(, 2091) +HANDLE_BAT(, 2092) +HANDLE_BAT(, 2093) +HANDLE_BAT(, 2094) +HANDLE_BAT(, 2095) +HANDLE_BAT(, 2096) +HANDLE_BAT(, 2097) +HANDLE_BAT(, 2098) +HANDLE_BAT(, 2099) +HANDLE_BAT(, 2100) +HANDLE_BAT(, 2101) +HANDLE_BAT(, 2102) +HANDLE_BAT(, 2103) +HANDLE_BAT(, 2104) +HANDLE_BAT(, 2105) +HANDLE_BAT(, 2106) +HANDLE_BAT(, 2107) +HANDLE_BAT(, 2108) +HANDLE_BAT(, 2109) +HANDLE_BAT(, 2110) +HANDLE_BAT(, 2111) +HANDLE_BAT(, 2112) +HANDLE_BAT(, 2113) +HANDLE_BAT(, 2114) +HANDLE_BAT(, 2115) +HANDLE_BAT(, 2116) +HANDLE_BAT(, 2117) +HANDLE_BAT(, 2118) +HANDLE_BAT(, 2119) +HANDLE_BAT(, 2120) +HANDLE_BAT(, 2121) +HANDLE_BAT(, 2122) +HANDLE_BAT(, 2123) +HANDLE_BAT(, 2124) +HANDLE_BAT(, 2125) +HANDLE_BAT(, 2126) +HANDLE_BAT(, 2127) +HANDLE_BAT(, 2128) +HANDLE_BAT(, 2129) +HANDLE_BAT(, 2130) +HANDLE_BAT(, 2131) +HANDLE_BAT(, 2132) +HANDLE_BAT(, 2133) +HANDLE_BAT(, 2134) +HANDLE_BAT(, 2135) +HANDLE_BAT(, 2136) +HANDLE_BAT(, 2137) +HANDLE_BAT(, 2138) +HANDLE_BAT(, 2139) +HANDLE_BAT(, 2140) +HANDLE_BAT(, 2141) +HANDLE_BAT(, 2142) +HANDLE_BAT(, 2143) +HANDLE_BAT(, 2144) +HANDLE_BAT(, 2145) +HANDLE_BAT(, 2146) +HANDLE_BAT(, 2147) +HANDLE_BAT(, 2148) +HANDLE_BAT(, 2149) +HANDLE_BAT(, 2150) +HANDLE_BAT(, 2151) +HANDLE_BAT(, 2152) +HANDLE_BAT(, 2153) +HANDLE_BAT(, 2154) +HANDLE_BAT(, 2155) +HANDLE_BAT(, 2156) +HANDLE_BAT(, 2157) +HANDLE_BAT(, 2158) +HANDLE_BAT(, 2159) +HANDLE_BAT(, 2160) +HANDLE_BAT(, 2161) +HANDLE_BAT(, 2162) +HANDLE_BAT(, 2163) +HANDLE_BAT(, 2164) +HANDLE_BAT(, 2165) +HANDLE_BAT(, 2166) +HANDLE_BAT(, 2167) +HANDLE_BAT(, 2168) +HANDLE_BAT(, 2169) +HANDLE_BAT(, 2170) +HANDLE_BAT(, 2171) +HANDLE_BAT(, 2172) +HANDLE_BAT(, 2173) +HANDLE_BAT(, 2174) +HANDLE_BAT(, 2175) +HANDLE_BAT(, 2176) +HANDLE_BAT(, 2177) +HANDLE_BAT(, 2178) +HANDLE_BAT(, 2179) +HANDLE_BAT(, 2180) +HANDLE_BAT(, 2181) +HANDLE_BAT(, 2182) +HANDLE_BAT(, 2183) +HANDLE_BAT(, 2184) +HANDLE_BAT(, 2185) +HANDLE_BAT(, 2186) +HANDLE_BAT(, 2187) +HANDLE_BAT(, 2188) +HANDLE_BAT(, 2189) +HANDLE_BAT(, 2190) +HANDLE_BAT(, 2191) +HANDLE_BAT(, 2192) +HANDLE_BAT(, 2193) +HANDLE_BAT(, 2194) +HANDLE_BAT(, 2195) +HANDLE_BAT(, 2196) +HANDLE_BAT(, 2197) +HANDLE_BAT(, 2198) +HANDLE_BAT(, 2199) +HANDLE_BAT(, 2200) +HANDLE_BAT(, 2201) +HANDLE_BAT(, 2202) +HANDLE_BAT(, 2203) +HANDLE_BAT(, 2204) +HANDLE_BAT(, 2205) +HANDLE_BAT(, 2206) +HANDLE_BAT(, 2207) +HANDLE_BAT(, 2208) +HANDLE_BAT(, 2209) +HANDLE_BAT(, 2210) +HANDLE_BAT(, 2211) +HANDLE_BAT(, 2212) +HANDLE_BAT(, 2213) +HANDLE_BAT(, 2214) +HANDLE_BAT(, 2215) +HANDLE_BAT(, 2216) +HANDLE_BAT(, 2217) +HANDLE_BAT(, 2218) +HANDLE_BAT(, 2219) +HANDLE_BAT(, 2220) +HANDLE_BAT(, 2221) +HANDLE_BAT(, 2222) +HANDLE_BAT(, 2223) +HANDLE_BAT(, 2224) +HANDLE_BAT(, 2225) +HANDLE_BAT(, 2226) +HANDLE_BAT(, 2227) +HANDLE_BAT(, 2228) +HANDLE_BAT(, 2229) +HANDLE_BAT(, 2230) +HANDLE_BAT(, 2231) +HANDLE_BAT(, 2232) +HANDLE_BAT(, 2233) +HANDLE_BAT(, 2234) +HANDLE_BAT(, 2235) +HANDLE_BAT(, 2236) +HANDLE_BAT(, 2237) +HANDLE_BAT(, 2238) +HANDLE_BAT(, 2239) +HANDLE_BAT(, 2240) +HANDLE_BAT(, 2241) +HANDLE_BAT(, 2242) +HANDLE_BAT(, 2243) +HANDLE_BAT(, 2244) +HANDLE_BAT(, 2245) +HANDLE_BAT(, 2246) +HANDLE_BAT(, 2247) +HANDLE_BAT(, 2248) +HANDLE_BAT(, 2249) +HANDLE_BAT(, 2250) +HANDLE_BAT(, 2251) +HANDLE_BAT(, 2252) +HANDLE_BAT(, 2253) +HANDLE_BAT(, 2254) +HANDLE_BAT(, 2255) +HANDLE_BAT(, 2256) +HANDLE_BAT(, 2257) +HANDLE_BAT(, 2258) +HANDLE_BAT(, 2259) +HANDLE_BAT(, 2260) +HANDLE_BAT(, 2261) +HANDLE_BAT(, 2262) +HANDLE_BAT(, 2263) +HANDLE_BAT(, 2264) +HANDLE_BAT(, 2265) +HANDLE_BAT(, 2266) +HANDLE_BAT(, 2267) +HANDLE_BAT(, 2268) +HANDLE_BAT(, 2269) +HANDLE_BAT(, 2270) +HANDLE_BAT(, 2271) +HANDLE_BAT(, 2272) +HANDLE_BAT(, 2273) +HANDLE_BAT(, 2274) +HANDLE_BAT(, 2275) +HANDLE_BAT(, 2276) +HANDLE_BAT(, 2277) +HANDLE_BAT(, 2278) +HANDLE_BAT(, 2279) +HANDLE_BAT(, 2280) +HANDLE_BAT(, 2281) +HANDLE_BAT(, 2282) +HANDLE_BAT(, 2283) +HANDLE_BAT(, 2284) +HANDLE_BAT(, 2285) +HANDLE_BAT(, 2286) +HANDLE_BAT(, 2287) +HANDLE_BAT(, 2288) +HANDLE_BAT(, 2289) +HANDLE_BAT(, 2290) +HANDLE_BAT(, 2291) +HANDLE_BAT(, 2292) +HANDLE_BAT(, 2293) +HANDLE_BAT(, 2294) +HANDLE_BAT(, 2295) +HANDLE_BAT(, 2296) +HANDLE_BAT(, 2297) +HANDLE_BAT(, 2298) +HANDLE_BAT(, 2299) +HANDLE_BAT(, 2300) +HANDLE_BAT(, 2301) +HANDLE_BAT(, 2302) +HANDLE_BAT(, 2303) +HANDLE_BAT(, 2304) +HANDLE_BAT(, 2305) +HANDLE_BAT(, 2306) +HANDLE_BAT(, 2307) +HANDLE_BAT(, 2308) +HANDLE_BAT(, 2309) +HANDLE_BAT(, 2310) +HANDLE_BAT(, 2311) +HANDLE_BAT(, 2312) +HANDLE_BAT(, 2313) +HANDLE_BAT(, 2314) +HANDLE_BAT(, 2315) +HANDLE_BAT(, 2316) +HANDLE_BAT(, 2317) +HANDLE_BAT(, 2318) +HANDLE_BAT(, 2319) +HANDLE_BAT(, 2320) +HANDLE_BAT(, 2321) +HANDLE_BAT(, 2322) +HANDLE_BAT(, 2323) +HANDLE_BAT(, 2324) +HANDLE_BAT(, 2325) +HANDLE_BAT(, 2326) +HANDLE_BAT(, 2327) +HANDLE_BAT(, 2328) +HANDLE_BAT(, 2329) +HANDLE_BAT(, 2330) +HANDLE_BAT(, 2331) +HANDLE_BAT(, 2332) +HANDLE_BAT(, 2333) +HANDLE_BAT(, 2334) +HANDLE_BAT(, 2335) +HANDLE_BAT(, 2336) +HANDLE_BAT(, 2337) +HANDLE_BAT(, 2338) +HANDLE_BAT(, 2339) +HANDLE_BAT(, 2340) +HANDLE_BAT(, 2341) +HANDLE_BAT(, 2342) +HANDLE_BAT(, 2343) +HANDLE_BAT(, 2344) +HANDLE_BAT(, 2345) +HANDLE_BAT(, 2346) +HANDLE_BAT(, 2347) +HANDLE_BAT(, 2348) +HANDLE_BAT(, 2349) +HANDLE_BAT(, 2350) +HANDLE_BAT(, 2351) +HANDLE_BAT(, 2352) +HANDLE_BAT(, 2353) +HANDLE_BAT(, 2354) +HANDLE_BAT(, 2355) +HANDLE_BAT(, 2356) +HANDLE_BAT(, 2357) +HANDLE_BAT(, 2358) +HANDLE_BAT(, 2359) +HANDLE_BAT(, 2360) +HANDLE_BAT(, 2361) +HANDLE_BAT(, 2362) +HANDLE_BAT(, 2363) +HANDLE_BAT(, 2364) +HANDLE_BAT(, 2365) +HANDLE_BAT(, 2366) +HANDLE_BAT(, 2367) +HANDLE_BAT(, 2368) +HANDLE_BAT(, 2369) +HANDLE_BAT(, 2370) +HANDLE_BAT(, 2371) +HANDLE_BAT(, 2372) +HANDLE_BAT(, 2373) +HANDLE_BAT(, 2374) +HANDLE_BAT(, 2375) +HANDLE_BAT(, 2376) +HANDLE_BAT(, 2377) +HANDLE_BAT(, 2378) +HANDLE_BAT(, 2379) +HANDLE_BAT(, 2380) +HANDLE_BAT(, 2381) +HANDLE_BAT(, 2382) +HANDLE_BAT(, 2383) +HANDLE_BAT(, 2384) +HANDLE_BAT(, 2385) +HANDLE_BAT(, 2386) +HANDLE_BAT(, 2387) +HANDLE_BAT(, 2388) +HANDLE_BAT(, 2389) +HANDLE_BAT(, 2390) +HANDLE_BAT(, 2391) +HANDLE_BAT(, 2392) +HANDLE_BAT(, 2393) +HANDLE_BAT(, 2394) +HANDLE_BAT(, 2395) +HANDLE_BAT(, 2396) +HANDLE_BAT(, 2397) +HANDLE_BAT(, 2398) +HANDLE_BAT(, 2399) +HANDLE_BAT(, 2400) +HANDLE_BAT(, 2401) +HANDLE_BAT(, 2402) +HANDLE_BAT(, 2403) +HANDLE_BAT(, 2404) +HANDLE_BAT(, 2405) +HANDLE_BAT(, 2406) +HANDLE_BAT(, 2407) +HANDLE_BAT(, 2408) +HANDLE_BAT(, 2409) +HANDLE_BAT(, 2410) +HANDLE_BAT(, 2411) +HANDLE_BAT(, 2412) +HANDLE_BAT(, 2413) +HANDLE_BAT(, 2414) +HANDLE_BAT(, 2415) +HANDLE_BAT(, 2416) +HANDLE_BAT(, 2417) +HANDLE_BAT(, 2418) +HANDLE_BAT(, 2419) +HANDLE_BAT(, 2420) +HANDLE_BAT(, 2421) +HANDLE_BAT(, 2422) +HANDLE_BAT(, 2423) +HANDLE_BAT(, 2424) +HANDLE_BAT(, 2425) +HANDLE_BAT(, 2426) +HANDLE_BAT(, 2427) +HANDLE_BAT(, 2428) +HANDLE_BAT(, 2429) +HANDLE_BAT(, 2430) +HANDLE_BAT(, 2431) +HANDLE_BAT(, 2432) +HANDLE_BAT(, 2433) +HANDLE_BAT(, 2434) +HANDLE_BAT(, 2435) +HANDLE_BAT(, 2436) +HANDLE_BAT(, 2437) +HANDLE_BAT(, 2438) +HANDLE_BAT(, 2439) +HANDLE_BAT(, 2440) +HANDLE_BAT(, 2441) +HANDLE_BAT(, 2442) +HANDLE_BAT(, 2443) +HANDLE_BAT(, 2444) +HANDLE_BAT(, 2445) +HANDLE_BAT(, 2446) +HANDLE_BAT(, 2447) +HANDLE_BAT(, 2448) +HANDLE_BAT(, 2449) +HANDLE_BAT(, 2450) +HANDLE_BAT(, 2451) +HANDLE_BAT(, 2452) +HANDLE_BAT(, 2453) +HANDLE_BAT(, 2454) +HANDLE_BAT(, 2455) +HANDLE_BAT(, 2456) +HANDLE_BAT(, 2457) +HANDLE_BAT(, 2458) +HANDLE_BAT(, 2459) +HANDLE_BAT(, 2460) +HANDLE_BAT(, 2461) +HANDLE_BAT(, 2462) +HANDLE_BAT(, 2463) +HANDLE_BAT(, 2464) +HANDLE_BAT(, 2465) +HANDLE_BAT(, 2466) +HANDLE_BAT(, 2467) +HANDLE_BAT(, 2468) +HANDLE_BAT(, 2469) +HANDLE_BAT(, 2470) +HANDLE_BAT(, 2471) +HANDLE_BAT(, 2472) +HANDLE_BAT(, 2473) +HANDLE_BAT(, 2474) +HANDLE_BAT(, 2475) +HANDLE_BAT(, 2476) +HANDLE_BAT(, 2477) +HANDLE_BAT(, 2478) +HANDLE_BAT(, 2479) +HANDLE_BAT(, 2480) +HANDLE_BAT(, 2481) +HANDLE_BAT(, 2482) +HANDLE_BAT(, 2483) +HANDLE_BAT(, 2484) +HANDLE_BAT(, 2485) +HANDLE_BAT(, 2486) +HANDLE_BAT(, 2487) +HANDLE_BAT(, 2488) +HANDLE_BAT(, 2489) +HANDLE_BAT(, 2490) +HANDLE_BAT(, 2491) +HANDLE_BAT(, 2492) +HANDLE_BAT(, 2493) +HANDLE_BAT(, 2494) +HANDLE_BAT(, 2495) +HANDLE_BAT(, 2496) +HANDLE_BAT(, 2497) +HANDLE_BAT(, 2498) +HANDLE_BAT(, 2499) +HANDLE_BAT(, 2500) +HANDLE_BAT(, 2501) +HANDLE_BAT(, 2502) +HANDLE_BAT(, 2503) +HANDLE_BAT(, 2504) +HANDLE_BAT(, 2505) +HANDLE_BAT(, 2506) +HANDLE_BAT(, 2507) +HANDLE_BAT(, 2508) +HANDLE_BAT(, 2509) +HANDLE_BAT(, 2510) +HANDLE_BAT(, 2511) +HANDLE_BAT(, 2512) +HANDLE_BAT(, 2513) +HANDLE_BAT(, 2514) +HANDLE_BAT(, 2515) +HANDLE_BAT(, 2516) +HANDLE_BAT(, 2517) +HANDLE_BAT(, 2518) +HANDLE_BAT(, 2519) +HANDLE_BAT(, 2520) +HANDLE_BAT(, 2521) +HANDLE_BAT(, 2522) +HANDLE_BAT(, 2523) +HANDLE_BAT(, 2524) +HANDLE_BAT(, 2525) +HANDLE_BAT(, 2526) +HANDLE_BAT(, 2527) +HANDLE_BAT(, 2528) +HANDLE_BAT(, 2529) +HANDLE_BAT(, 2530) +HANDLE_BAT(, 2531) +HANDLE_BAT(, 2532) +HANDLE_BAT(, 2533) +HANDLE_BAT(, 2534) +HANDLE_BAT(, 2535) +HANDLE_BAT(, 2536) +HANDLE_BAT(, 2537) +HANDLE_BAT(, 2538) +HANDLE_BAT(, 2539) +HANDLE_BAT(, 2540) +HANDLE_BAT(, 2541) +HANDLE_BAT(, 2542) +HANDLE_BAT(, 2543) +HANDLE_BAT(, 2544) +HANDLE_BAT(, 2545) +HANDLE_BAT(, 2546) +HANDLE_BAT(, 2547) +HANDLE_BAT(, 2548) +HANDLE_BAT(, 2549) +HANDLE_BAT(, 2550) +HANDLE_BAT(, 2551) +HANDLE_BAT(, 2552) +HANDLE_BAT(, 2553) +HANDLE_BAT(, 2554) +HANDLE_BAT(, 2555) +HANDLE_BAT(, 2556) +HANDLE_BAT(, 2557) +HANDLE_BAT(, 2558) +HANDLE_BAT(, 2559) +HANDLE_BAT(, 2560) +HANDLE_BAT(, 2561) +HANDLE_BAT(, 2562) +HANDLE_BAT(, 2563) +HANDLE_BAT(, 2564) +HANDLE_BAT(, 2565) +HANDLE_BAT(, 2566) +HANDLE_BAT(, 2567) +HANDLE_BAT(, 2568) +HANDLE_BAT(, 2569) +HANDLE_BAT(, 2570) +HANDLE_BAT(, 2571) +HANDLE_BAT(, 2572) +HANDLE_BAT(, 2573) +HANDLE_BAT(, 2574) +HANDLE_BAT(, 2575) +HANDLE_BAT(, 2576) +HANDLE_BAT(, 2577) +HANDLE_BAT(, 2578) +HANDLE_BAT(, 2579) +HANDLE_BAT(, 2580) +HANDLE_BAT(, 2581) +HANDLE_BAT(, 2582) +HANDLE_BAT(, 2583) +HANDLE_BAT(, 2584) +HANDLE_BAT(, 2585) +HANDLE_BAT(, 2586) +HANDLE_BAT(, 2587) +HANDLE_BAT(, 2588) +HANDLE_BAT(, 2589) +HANDLE_BAT(, 2590) +HANDLE_BAT(, 2591) +HANDLE_BAT(, 2592) +HANDLE_BAT(, 2593) +HANDLE_BAT(, 2594) +HANDLE_BAT(, 2595) +HANDLE_BAT(, 2596) +HANDLE_BAT(, 2597) +HANDLE_BAT(, 2598) +HANDLE_BAT(, 2599) +HANDLE_BAT(, 2600) +HANDLE_BAT(, 2601) +HANDLE_BAT(, 2602) +HANDLE_BAT(, 2603) +HANDLE_BAT(, 2604) +HANDLE_BAT(, 2605) +HANDLE_BAT(, 2606) +HANDLE_BAT(, 2607) +HANDLE_BAT(, 2608) +HANDLE_BAT(, 2609) +HANDLE_BAT(, 2610) +HANDLE_BAT(, 2611) +HANDLE_BAT(, 2612) +HANDLE_BAT(, 2613) +HANDLE_BAT(, 2614) +HANDLE_BAT(, 2615) +HANDLE_BAT(, 2616) +HANDLE_BAT(, 2617) +HANDLE_BAT(, 2618) +HANDLE_BAT(, 2619) +HANDLE_BAT(, 2620) +HANDLE_BAT(, 2621) +HANDLE_BAT(, 2622) +HANDLE_BAT(, 2623) +HANDLE_BAT(, 2624) +HANDLE_BAT(, 2625) +HANDLE_BAT(, 2626) +HANDLE_BAT(, 2627) +HANDLE_BAT(, 2628) +HANDLE_BAT(, 2629) +HANDLE_BAT(, 2630) +HANDLE_BAT(, 2631) +HANDLE_BAT(, 2632) +HANDLE_BAT(, 2633) +HANDLE_BAT(, 2634) +HANDLE_BAT(, 2635) +HANDLE_BAT(, 2636) +HANDLE_BAT(, 2637) +HANDLE_BAT(, 2638) +HANDLE_BAT(, 2639) +HANDLE_BAT(, 2640) +HANDLE_BAT(, 2641) +HANDLE_BAT(, 2642) +HANDLE_BAT(, 2643) +HANDLE_BAT(, 2644) +HANDLE_BAT(, 2645) +HANDLE_BAT(, 2646) +HANDLE_BAT(, 2647) +HANDLE_BAT(, 2648) +HANDLE_BAT(, 2649) +HANDLE_BAT(, 2650) +HANDLE_BAT(, 2651) +HANDLE_BAT(, 2652) +HANDLE_BAT(, 2653) +HANDLE_BAT(, 2654) +HANDLE_BAT(, 2655) +HANDLE_BAT(, 2656) +HANDLE_BAT(, 2657) +HANDLE_BAT(, 2658) +HANDLE_BAT(, 2659) +HANDLE_BAT(, 2660) +HANDLE_BAT(, 2661) +HANDLE_BAT(, 2662) +HANDLE_BAT(, 2663) +HANDLE_BAT(, 2664) +HANDLE_BAT(, 2665) +HANDLE_BAT(, 2666) +HANDLE_BAT(, 2667) +HANDLE_BAT(, 2668) +HANDLE_BAT(, 2669) +HANDLE_BAT(, 2670) +HANDLE_BAT(, 2671) +HANDLE_BAT(, 2672) +HANDLE_BAT(, 2673) +HANDLE_BAT(, 2674) +HANDLE_BAT(, 2675) +HANDLE_BAT(, 2676) +HANDLE_BAT(, 2677) +HANDLE_BAT(, 2678) +HANDLE_BAT(, 2679) +HANDLE_BAT(, 2680) +HANDLE_BAT(, 2681) +HANDLE_BAT(, 2682) +HANDLE_BAT(, 2683) +HANDLE_BAT(, 2684) +HANDLE_BAT(, 2685) +HANDLE_BAT(, 2686) +HANDLE_BAT(, 2687) +HANDLE_BAT(, 2688) +HANDLE_BAT(, 2689) +HANDLE_BAT(, 2690) +HANDLE_BAT(, 2691) +HANDLE_BAT(, 2692) +HANDLE_BAT(, 2693) +HANDLE_BAT(, 2694) +HANDLE_BAT(, 2695) +HANDLE_BAT(, 2696) +HANDLE_BAT(, 2697) +HANDLE_BAT(, 2698) +HANDLE_BAT(, 2699) +HANDLE_BAT(, 2700) +HANDLE_BAT(, 2701) +HANDLE_BAT(, 2702) +HANDLE_BAT(, 2703) +HANDLE_BAT(, 2704) +HANDLE_BAT(, 2705) +HANDLE_BAT(, 2706) +HANDLE_BAT(, 2707) +HANDLE_BAT(, 2708) +HANDLE_BAT(, 2709) +HANDLE_BAT(, 2710) +HANDLE_BAT(, 2711) +HANDLE_BAT(, 2712) +HANDLE_BAT(, 2713) +HANDLE_BAT(, 2714) +HANDLE_BAT(, 2715) +HANDLE_BAT(, 2716) +HANDLE_BAT(, 2717) +HANDLE_BAT(, 2718) +HANDLE_BAT(, 2719) +HANDLE_BAT(, 2720) +HANDLE_BAT(, 2721) +HANDLE_BAT(, 2722) +HANDLE_BAT(, 2723) +HANDLE_BAT(, 2724) +HANDLE_BAT(, 2725) +HANDLE_BAT(, 2726) +HANDLE_BAT(, 2727) +HANDLE_BAT(, 2728) +HANDLE_BAT(, 2729) +HANDLE_BAT(, 2730) +HANDLE_BAT(, 2731) +HANDLE_BAT(, 2732) +HANDLE_BAT(, 2733) +HANDLE_BAT(, 2734) +HANDLE_BAT(, 2735) +HANDLE_BAT(, 2736) +HANDLE_BAT(, 2737) +HANDLE_BAT(, 2738) +HANDLE_BAT(, 2739) +HANDLE_BAT(, 2740) +HANDLE_BAT(, 2741) +HANDLE_BAT(, 2742) +HANDLE_BAT(, 2743) +HANDLE_BAT(, 2744) +HANDLE_BAT(, 2745) +HANDLE_BAT(, 2746) +HANDLE_BAT(, 2747) +HANDLE_BAT(, 2748) +HANDLE_BAT(, 2749) +HANDLE_BAT(, 2750) +HANDLE_BAT(, 2751) +HANDLE_BAT(, 2752) +HANDLE_BAT(, 2753) +HANDLE_BAT(, 2754) +HANDLE_BAT(, 2755) +HANDLE_BAT(, 2756) +HANDLE_BAT(, 2757) +HANDLE_BAT(, 2758) +HANDLE_BAT(, 2759) +HANDLE_BAT(, 2760) +HANDLE_BAT(, 2761) +HANDLE_BAT(, 2762) +HANDLE_BAT(, 2763) +HANDLE_BAT(, 2764) +HANDLE_BAT(, 2765) +HANDLE_BAT(, 2766) +HANDLE_BAT(, 2767) +HANDLE_BAT(, 2768) +HANDLE_BAT(, 2769) +HANDLE_BAT(, 2770) +HANDLE_BAT(, 2771) +HANDLE_BAT(, 2772) +HANDLE_BAT(, 2773) +HANDLE_BAT(, 2774) +HANDLE_BAT(, 2775) +HANDLE_BAT(, 2776) +HANDLE_BAT(, 2777) +HANDLE_BAT(, 2778) +HANDLE_BAT(, 2779) +HANDLE_BAT(, 2780) +HANDLE_BAT(, 2781) +HANDLE_BAT(, 2782) +HANDLE_BAT(, 2783) +HANDLE_BAT(, 2784) +HANDLE_BAT(, 2785) +HANDLE_BAT(, 2786) +HANDLE_BAT(, 2787) +HANDLE_BAT(, 2788) +HANDLE_BAT(, 2789) +HANDLE_BAT(, 2790) +HANDLE_BAT(, 2791) +HANDLE_BAT(, 2792) +HANDLE_BAT(, 2793) +HANDLE_BAT(, 2794) +HANDLE_BAT(, 2795) +HANDLE_BAT(, 2796) +HANDLE_BAT(, 2797) +HANDLE_BAT(, 2798) +HANDLE_BAT(, 2799) +HANDLE_BAT(, 2800) +HANDLE_BAT(, 2801) +HANDLE_BAT(, 2802) +HANDLE_BAT(, 2803) +HANDLE_BAT(, 2804) +HANDLE_BAT(, 2805) +HANDLE_BAT(, 2806) +HANDLE_BAT(, 2807) +HANDLE_BAT(, 2808) +HANDLE_BAT(, 2809) +HANDLE_BAT(, 2810) +HANDLE_BAT(, 2811) +HANDLE_BAT(, 2812) +HANDLE_BAT(, 2813) +HANDLE_BAT(, 2814) +HANDLE_BAT(, 2815) +HANDLE_BAT(, 2816) +HANDLE_BAT(, 2817) +HANDLE_BAT(, 2818) +HANDLE_BAT(, 2819) +HANDLE_BAT(, 2820) +HANDLE_BAT(, 2821) +HANDLE_BAT(, 2822) +HANDLE_BAT(, 2823) +HANDLE_BAT(, 2824) +HANDLE_BAT(, 2825) +HANDLE_BAT(, 2826) +HANDLE_BAT(, 2827) +HANDLE_BAT(, 2828) +HANDLE_BAT(, 2829) +HANDLE_BAT(, 2830) +HANDLE_BAT(, 2831) +HANDLE_BAT(, 2832) +HANDLE_BAT(, 2833) +HANDLE_BAT(, 2834) +HANDLE_BAT(, 2835) +HANDLE_BAT(, 2836) +HANDLE_BAT(, 2837) +HANDLE_BAT(, 2838) +HANDLE_BAT(, 2839) +HANDLE_BAT(, 2840) +HANDLE_BAT(, 2841) +HANDLE_BAT(, 2842) +HANDLE_BAT(, 2843) +HANDLE_BAT(, 2844) +HANDLE_BAT(, 2845) +HANDLE_BAT(, 2846) +HANDLE_BAT(, 2847) +HANDLE_BAT(, 2848) +HANDLE_BAT(, 2849) +HANDLE_BAT(, 2850) +HANDLE_BAT(, 2851) +HANDLE_BAT(, 2852) +HANDLE_BAT(, 2853) +HANDLE_BAT(, 2854) +HANDLE_BAT(, 2855) +HANDLE_BAT(, 2856) +HANDLE_BAT(, 2857) +HANDLE_BAT(, 2858) +HANDLE_BAT(, 2859) +HANDLE_BAT(, 2860) +HANDLE_BAT(, 2861) +HANDLE_BAT(, 2862) +HANDLE_BAT(, 2863) +HANDLE_BAT(, 2864) +HANDLE_BAT(, 2865) +HANDLE_BAT(, 2866) +HANDLE_BAT(, 2867) +HANDLE_BAT(, 2868) +HANDLE_BAT(, 2869) +HANDLE_BAT(, 2870) +HANDLE_BAT(, 2871) +HANDLE_BAT(, 2872) +HANDLE_BAT(, 2873) +HANDLE_BAT(, 2874) +HANDLE_BAT(, 2875) +HANDLE_BAT(, 2876) +HANDLE_BAT(, 2877) +HANDLE_BAT(, 2878) +HANDLE_BAT(, 2879) +HANDLE_BAT(, 2880) +HANDLE_BAT(, 2881) +HANDLE_BAT(, 2882) +HANDLE_BAT(, 2883) +HANDLE_BAT(, 2884) +HANDLE_BAT(, 2885) +HANDLE_BAT(, 2886) +HANDLE_BAT(, 2887) +HANDLE_BAT(, 2888) +HANDLE_BAT(, 2889) +HANDLE_BAT(, 2890) +HANDLE_BAT(, 2891) +HANDLE_BAT(, 2892) +HANDLE_BAT(, 2893) +HANDLE_BAT(, 2894) +HANDLE_BAT(, 2895) +HANDLE_BAT(, 2896) +HANDLE_BAT(, 2897) +HANDLE_BAT(, 2898) +HANDLE_BAT(, 2899) +HANDLE_BAT(, 2900) +HANDLE_BAT(, 2901) +HANDLE_BAT(, 2902) +HANDLE_BAT(, 2903) +HANDLE_BAT(, 2904) +HANDLE_BAT(, 2905) +HANDLE_BAT(, 2906) +HANDLE_BAT(, 2907) +HANDLE_BAT(, 2908) +HANDLE_BAT(, 2909) +HANDLE_BAT(, 2910) +HANDLE_BAT(, 2911) +HANDLE_BAT(, 2912) +HANDLE_BAT(, 2913) +HANDLE_BAT(, 2914) +HANDLE_BAT(, 2915) +HANDLE_BAT(, 2916) +HANDLE_BAT(, 2917) +HANDLE_BAT(, 2918) +HANDLE_BAT(, 2919) +HANDLE_BAT(, 2920) +HANDLE_BAT(, 2921) +HANDLE_BAT(, 2922) +HANDLE_BAT(, 2923) +HANDLE_BAT(, 2924) +HANDLE_BAT(, 2925) +HANDLE_BAT(, 2926) +HANDLE_BAT(, 2927) +HANDLE_BAT(, 2928) +HANDLE_BAT(, 2929) +HANDLE_BAT(, 2930) +HANDLE_BAT(, 2931) +HANDLE_BAT(, 2932) +HANDLE_BAT(, 2933) +HANDLE_BAT(, 2934) +HANDLE_BAT(, 2935) +HANDLE_BAT(, 2936) +HANDLE_BAT(, 2937) +HANDLE_BAT(, 2938) +HANDLE_BAT(, 2939) +HANDLE_BAT(, 2940) +HANDLE_BAT(, 2941) +HANDLE_BAT(, 2942) +HANDLE_BAT(, 2943) +HANDLE_BAT(, 2944) +HANDLE_BAT(, 2945) +HANDLE_BAT(, 2946) +HANDLE_BAT(, 2947) +HANDLE_BAT(, 2948) +HANDLE_BAT(, 2949) +HANDLE_BAT(, 2950) +HANDLE_BAT(, 2951) +HANDLE_BAT(, 2952) +HANDLE_BAT(, 2953) +HANDLE_BAT(, 2954) +HANDLE_BAT(, 2955) +HANDLE_BAT(, 2956) +HANDLE_BAT(, 2957) +HANDLE_BAT(, 2958) +HANDLE_BAT(, 2959) +HANDLE_BAT(, 2960) +HANDLE_BAT(, 2961) +HANDLE_BAT(, 2962) +HANDLE_BAT(, 2963) +HANDLE_BAT(, 2964) +HANDLE_BAT(, 2965) +HANDLE_BAT(, 2966) +HANDLE_BAT(, 2967) +HANDLE_BAT(, 2968) +HANDLE_BAT(, 2969) +HANDLE_BAT(, 2970) +HANDLE_BAT(, 2971) +HANDLE_BAT(, 2972) +HANDLE_BAT(, 2973) +HANDLE_BAT(, 2974) +HANDLE_BAT(, 2975) +HANDLE_BAT(, 2976) +HANDLE_BAT(, 2977) +HANDLE_BAT(, 2978) +HANDLE_BAT(, 2979) +HANDLE_BAT(, 2980) +HANDLE_BAT(, 2981) +HANDLE_BAT(, 2982) +HANDLE_BAT(, 2983) +HANDLE_BAT(, 2984) +HANDLE_BAT(, 2985) +HANDLE_BAT(, 2986) +HANDLE_BAT(, 2987) +HANDLE_BAT(, 2988) +HANDLE_BAT(, 2989) +HANDLE_BAT(, 2990) +HANDLE_BAT(, 2991) +HANDLE_BAT(, 2992) +HANDLE_BAT(, 2993) +HANDLE_BAT(, 2994) +HANDLE_BAT(, 2995) +HANDLE_BAT(, 2996) +HANDLE_BAT(, 2997) +HANDLE_BAT(, 2998) +HANDLE_BAT(, 2999) +HANDLE_BAT(, 3000) +HANDLE_BAT(, 3001) +HANDLE_BAT(, 3002) +HANDLE_BAT(, 3003) +HANDLE_BAT(, 3004) +HANDLE_BAT(, 3005) +HANDLE_BAT(, 3006) +HANDLE_BAT(, 3007) +HANDLE_BAT(, 3008) +HANDLE_BAT(, 3009) +HANDLE_BAT(, 3010) +HANDLE_BAT(, 3011) +HANDLE_BAT(, 3012) +HANDLE_BAT(, 3013) +HANDLE_BAT(, 3014) +HANDLE_BAT(, 3015) +HANDLE_BAT(, 3016) +HANDLE_BAT(, 3017) +HANDLE_BAT(, 3018) +HANDLE_BAT(, 3019) +HANDLE_BAT(, 3020) +HANDLE_BAT(, 3021) +HANDLE_BAT(, 3022) +HANDLE_BAT(, 3023) +HANDLE_BAT(, 3024) +HANDLE_BAT(, 3025) +HANDLE_BAT(, 3026) +HANDLE_BAT(, 3027) +HANDLE_BAT(, 3028) +HANDLE_BAT(, 3029) +HANDLE_BAT(, 3030) +HANDLE_BAT(, 3031) +HANDLE_BAT(, 3032) +HANDLE_BAT(, 3033) +HANDLE_BAT(, 3034) +HANDLE_BAT(, 3035) +HANDLE_BAT(, 3036) +HANDLE_BAT(, 3037) +HANDLE_BAT(, 3038) +HANDLE_BAT(, 3039) +HANDLE_BAT(, 3040) +HANDLE_BAT(, 3041) +HANDLE_BAT(, 3042) +HANDLE_BAT(, 3043) +HANDLE_BAT(, 3044) +HANDLE_BAT(, 3045) +HANDLE_BAT(, 3046) +HANDLE_BAT(, 3047) +HANDLE_BAT(, 3048) +HANDLE_BAT(, 3049) +HANDLE_BAT(, 3050) +HANDLE_BAT(, 3051) +HANDLE_BAT(, 3052) +HANDLE_BAT(, 3053) +HANDLE_BAT(, 3054) +HANDLE_BAT(, 3055) +HANDLE_BAT(, 3056) +HANDLE_BAT(, 3057) +HANDLE_BAT(, 3058) +HANDLE_BAT(, 3059) +HANDLE_BAT(, 3060) +HANDLE_BAT(, 3061) +HANDLE_BAT(, 3062) +HANDLE_BAT(, 3063) +HANDLE_BAT(, 3064) +HANDLE_BAT(, 3065) +HANDLE_BAT(, 3066) +HANDLE_BAT(, 3067) +HANDLE_BAT(, 3068) +HANDLE_BAT(, 3069) +HANDLE_BAT(, 3070) +HANDLE_BAT(, 3071) +HANDLE_BAT(, 3072) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 2049) +HANDLE_BAT(APINT_TYPE_PREFIX, 2050) +HANDLE_BAT(APINT_TYPE_PREFIX, 2051) +HANDLE_BAT(APINT_TYPE_PREFIX, 2052) +HANDLE_BAT(APINT_TYPE_PREFIX, 2053) +HANDLE_BAT(APINT_TYPE_PREFIX, 2054) +HANDLE_BAT(APINT_TYPE_PREFIX, 2055) +HANDLE_BAT(APINT_TYPE_PREFIX, 2056) +HANDLE_BAT(APINT_TYPE_PREFIX, 2057) +HANDLE_BAT(APINT_TYPE_PREFIX, 2058) +HANDLE_BAT(APINT_TYPE_PREFIX, 2059) +HANDLE_BAT(APINT_TYPE_PREFIX, 2060) +HANDLE_BAT(APINT_TYPE_PREFIX, 2061) +HANDLE_BAT(APINT_TYPE_PREFIX, 2062) +HANDLE_BAT(APINT_TYPE_PREFIX, 2063) +HANDLE_BAT(APINT_TYPE_PREFIX, 2064) +HANDLE_BAT(APINT_TYPE_PREFIX, 2065) +HANDLE_BAT(APINT_TYPE_PREFIX, 2066) +HANDLE_BAT(APINT_TYPE_PREFIX, 2067) +HANDLE_BAT(APINT_TYPE_PREFIX, 2068) +HANDLE_BAT(APINT_TYPE_PREFIX, 2069) +HANDLE_BAT(APINT_TYPE_PREFIX, 2070) +HANDLE_BAT(APINT_TYPE_PREFIX, 2071) +HANDLE_BAT(APINT_TYPE_PREFIX, 2072) +HANDLE_BAT(APINT_TYPE_PREFIX, 2073) +HANDLE_BAT(APINT_TYPE_PREFIX, 2074) +HANDLE_BAT(APINT_TYPE_PREFIX, 2075) +HANDLE_BAT(APINT_TYPE_PREFIX, 2076) +HANDLE_BAT(APINT_TYPE_PREFIX, 2077) +HANDLE_BAT(APINT_TYPE_PREFIX, 2078) +HANDLE_BAT(APINT_TYPE_PREFIX, 2079) +HANDLE_BAT(APINT_TYPE_PREFIX, 2080) +HANDLE_BAT(APINT_TYPE_PREFIX, 2081) +HANDLE_BAT(APINT_TYPE_PREFIX, 2082) +HANDLE_BAT(APINT_TYPE_PREFIX, 2083) +HANDLE_BAT(APINT_TYPE_PREFIX, 2084) +HANDLE_BAT(APINT_TYPE_PREFIX, 2085) +HANDLE_BAT(APINT_TYPE_PREFIX, 2086) +HANDLE_BAT(APINT_TYPE_PREFIX, 2087) +HANDLE_BAT(APINT_TYPE_PREFIX, 2088) +HANDLE_BAT(APINT_TYPE_PREFIX, 2089) +HANDLE_BAT(APINT_TYPE_PREFIX, 2090) +HANDLE_BAT(APINT_TYPE_PREFIX, 2091) +HANDLE_BAT(APINT_TYPE_PREFIX, 2092) +HANDLE_BAT(APINT_TYPE_PREFIX, 2093) +HANDLE_BAT(APINT_TYPE_PREFIX, 2094) +HANDLE_BAT(APINT_TYPE_PREFIX, 2095) +HANDLE_BAT(APINT_TYPE_PREFIX, 2096) +HANDLE_BAT(APINT_TYPE_PREFIX, 2097) +HANDLE_BAT(APINT_TYPE_PREFIX, 2098) +HANDLE_BAT(APINT_TYPE_PREFIX, 2099) +HANDLE_BAT(APINT_TYPE_PREFIX, 2100) +HANDLE_BAT(APINT_TYPE_PREFIX, 2101) +HANDLE_BAT(APINT_TYPE_PREFIX, 2102) +HANDLE_BAT(APINT_TYPE_PREFIX, 2103) +HANDLE_BAT(APINT_TYPE_PREFIX, 2104) +HANDLE_BAT(APINT_TYPE_PREFIX, 2105) +HANDLE_BAT(APINT_TYPE_PREFIX, 2106) +HANDLE_BAT(APINT_TYPE_PREFIX, 2107) +HANDLE_BAT(APINT_TYPE_PREFIX, 2108) +HANDLE_BAT(APINT_TYPE_PREFIX, 2109) +HANDLE_BAT(APINT_TYPE_PREFIX, 2110) +HANDLE_BAT(APINT_TYPE_PREFIX, 2111) +HANDLE_BAT(APINT_TYPE_PREFIX, 2112) +HANDLE_BAT(APINT_TYPE_PREFIX, 2113) +HANDLE_BAT(APINT_TYPE_PREFIX, 2114) +HANDLE_BAT(APINT_TYPE_PREFIX, 2115) +HANDLE_BAT(APINT_TYPE_PREFIX, 2116) +HANDLE_BAT(APINT_TYPE_PREFIX, 2117) +HANDLE_BAT(APINT_TYPE_PREFIX, 2118) +HANDLE_BAT(APINT_TYPE_PREFIX, 2119) +HANDLE_BAT(APINT_TYPE_PREFIX, 2120) +HANDLE_BAT(APINT_TYPE_PREFIX, 2121) +HANDLE_BAT(APINT_TYPE_PREFIX, 2122) +HANDLE_BAT(APINT_TYPE_PREFIX, 2123) +HANDLE_BAT(APINT_TYPE_PREFIX, 2124) +HANDLE_BAT(APINT_TYPE_PREFIX, 2125) +HANDLE_BAT(APINT_TYPE_PREFIX, 2126) +HANDLE_BAT(APINT_TYPE_PREFIX, 2127) +HANDLE_BAT(APINT_TYPE_PREFIX, 2128) +HANDLE_BAT(APINT_TYPE_PREFIX, 2129) +HANDLE_BAT(APINT_TYPE_PREFIX, 2130) +HANDLE_BAT(APINT_TYPE_PREFIX, 2131) +HANDLE_BAT(APINT_TYPE_PREFIX, 2132) +HANDLE_BAT(APINT_TYPE_PREFIX, 2133) +HANDLE_BAT(APINT_TYPE_PREFIX, 2134) +HANDLE_BAT(APINT_TYPE_PREFIX, 2135) +HANDLE_BAT(APINT_TYPE_PREFIX, 2136) +HANDLE_BAT(APINT_TYPE_PREFIX, 2137) +HANDLE_BAT(APINT_TYPE_PREFIX, 2138) +HANDLE_BAT(APINT_TYPE_PREFIX, 2139) +HANDLE_BAT(APINT_TYPE_PREFIX, 2140) +HANDLE_BAT(APINT_TYPE_PREFIX, 2141) +HANDLE_BAT(APINT_TYPE_PREFIX, 2142) +HANDLE_BAT(APINT_TYPE_PREFIX, 2143) +HANDLE_BAT(APINT_TYPE_PREFIX, 2144) +HANDLE_BAT(APINT_TYPE_PREFIX, 2145) +HANDLE_BAT(APINT_TYPE_PREFIX, 2146) +HANDLE_BAT(APINT_TYPE_PREFIX, 2147) +HANDLE_BAT(APINT_TYPE_PREFIX, 2148) +HANDLE_BAT(APINT_TYPE_PREFIX, 2149) +HANDLE_BAT(APINT_TYPE_PREFIX, 2150) +HANDLE_BAT(APINT_TYPE_PREFIX, 2151) +HANDLE_BAT(APINT_TYPE_PREFIX, 2152) +HANDLE_BAT(APINT_TYPE_PREFIX, 2153) +HANDLE_BAT(APINT_TYPE_PREFIX, 2154) +HANDLE_BAT(APINT_TYPE_PREFIX, 2155) +HANDLE_BAT(APINT_TYPE_PREFIX, 2156) +HANDLE_BAT(APINT_TYPE_PREFIX, 2157) +HANDLE_BAT(APINT_TYPE_PREFIX, 2158) +HANDLE_BAT(APINT_TYPE_PREFIX, 2159) +HANDLE_BAT(APINT_TYPE_PREFIX, 2160) +HANDLE_BAT(APINT_TYPE_PREFIX, 2161) +HANDLE_BAT(APINT_TYPE_PREFIX, 2162) +HANDLE_BAT(APINT_TYPE_PREFIX, 2163) +HANDLE_BAT(APINT_TYPE_PREFIX, 2164) +HANDLE_BAT(APINT_TYPE_PREFIX, 2165) +HANDLE_BAT(APINT_TYPE_PREFIX, 2166) +HANDLE_BAT(APINT_TYPE_PREFIX, 2167) +HANDLE_BAT(APINT_TYPE_PREFIX, 2168) +HANDLE_BAT(APINT_TYPE_PREFIX, 2169) +HANDLE_BAT(APINT_TYPE_PREFIX, 2170) +HANDLE_BAT(APINT_TYPE_PREFIX, 2171) +HANDLE_BAT(APINT_TYPE_PREFIX, 2172) +HANDLE_BAT(APINT_TYPE_PREFIX, 2173) +HANDLE_BAT(APINT_TYPE_PREFIX, 2174) +HANDLE_BAT(APINT_TYPE_PREFIX, 2175) +HANDLE_BAT(APINT_TYPE_PREFIX, 2176) +HANDLE_BAT(APINT_TYPE_PREFIX, 2177) +HANDLE_BAT(APINT_TYPE_PREFIX, 2178) +HANDLE_BAT(APINT_TYPE_PREFIX, 2179) +HANDLE_BAT(APINT_TYPE_PREFIX, 2180) +HANDLE_BAT(APINT_TYPE_PREFIX, 2181) +HANDLE_BAT(APINT_TYPE_PREFIX, 2182) +HANDLE_BAT(APINT_TYPE_PREFIX, 2183) +HANDLE_BAT(APINT_TYPE_PREFIX, 2184) +HANDLE_BAT(APINT_TYPE_PREFIX, 2185) +HANDLE_BAT(APINT_TYPE_PREFIX, 2186) +HANDLE_BAT(APINT_TYPE_PREFIX, 2187) +HANDLE_BAT(APINT_TYPE_PREFIX, 2188) +HANDLE_BAT(APINT_TYPE_PREFIX, 2189) +HANDLE_BAT(APINT_TYPE_PREFIX, 2190) +HANDLE_BAT(APINT_TYPE_PREFIX, 2191) +HANDLE_BAT(APINT_TYPE_PREFIX, 2192) +HANDLE_BAT(APINT_TYPE_PREFIX, 2193) +HANDLE_BAT(APINT_TYPE_PREFIX, 2194) +HANDLE_BAT(APINT_TYPE_PREFIX, 2195) +HANDLE_BAT(APINT_TYPE_PREFIX, 2196) +HANDLE_BAT(APINT_TYPE_PREFIX, 2197) +HANDLE_BAT(APINT_TYPE_PREFIX, 2198) +HANDLE_BAT(APINT_TYPE_PREFIX, 2199) +HANDLE_BAT(APINT_TYPE_PREFIX, 2200) +HANDLE_BAT(APINT_TYPE_PREFIX, 2201) +HANDLE_BAT(APINT_TYPE_PREFIX, 2202) +HANDLE_BAT(APINT_TYPE_PREFIX, 2203) +HANDLE_BAT(APINT_TYPE_PREFIX, 2204) +HANDLE_BAT(APINT_TYPE_PREFIX, 2205) +HANDLE_BAT(APINT_TYPE_PREFIX, 2206) +HANDLE_BAT(APINT_TYPE_PREFIX, 2207) +HANDLE_BAT(APINT_TYPE_PREFIX, 2208) +HANDLE_BAT(APINT_TYPE_PREFIX, 2209) +HANDLE_BAT(APINT_TYPE_PREFIX, 2210) +HANDLE_BAT(APINT_TYPE_PREFIX, 2211) +HANDLE_BAT(APINT_TYPE_PREFIX, 2212) +HANDLE_BAT(APINT_TYPE_PREFIX, 2213) +HANDLE_BAT(APINT_TYPE_PREFIX, 2214) +HANDLE_BAT(APINT_TYPE_PREFIX, 2215) +HANDLE_BAT(APINT_TYPE_PREFIX, 2216) +HANDLE_BAT(APINT_TYPE_PREFIX, 2217) +HANDLE_BAT(APINT_TYPE_PREFIX, 2218) +HANDLE_BAT(APINT_TYPE_PREFIX, 2219) +HANDLE_BAT(APINT_TYPE_PREFIX, 2220) +HANDLE_BAT(APINT_TYPE_PREFIX, 2221) +HANDLE_BAT(APINT_TYPE_PREFIX, 2222) +HANDLE_BAT(APINT_TYPE_PREFIX, 2223) +HANDLE_BAT(APINT_TYPE_PREFIX, 2224) +HANDLE_BAT(APINT_TYPE_PREFIX, 2225) +HANDLE_BAT(APINT_TYPE_PREFIX, 2226) +HANDLE_BAT(APINT_TYPE_PREFIX, 2227) +HANDLE_BAT(APINT_TYPE_PREFIX, 2228) +HANDLE_BAT(APINT_TYPE_PREFIX, 2229) +HANDLE_BAT(APINT_TYPE_PREFIX, 2230) +HANDLE_BAT(APINT_TYPE_PREFIX, 2231) +HANDLE_BAT(APINT_TYPE_PREFIX, 2232) +HANDLE_BAT(APINT_TYPE_PREFIX, 2233) +HANDLE_BAT(APINT_TYPE_PREFIX, 2234) +HANDLE_BAT(APINT_TYPE_PREFIX, 2235) +HANDLE_BAT(APINT_TYPE_PREFIX, 2236) +HANDLE_BAT(APINT_TYPE_PREFIX, 2237) +HANDLE_BAT(APINT_TYPE_PREFIX, 2238) +HANDLE_BAT(APINT_TYPE_PREFIX, 2239) +HANDLE_BAT(APINT_TYPE_PREFIX, 2240) +HANDLE_BAT(APINT_TYPE_PREFIX, 2241) +HANDLE_BAT(APINT_TYPE_PREFIX, 2242) +HANDLE_BAT(APINT_TYPE_PREFIX, 2243) +HANDLE_BAT(APINT_TYPE_PREFIX, 2244) +HANDLE_BAT(APINT_TYPE_PREFIX, 2245) +HANDLE_BAT(APINT_TYPE_PREFIX, 2246) +HANDLE_BAT(APINT_TYPE_PREFIX, 2247) +HANDLE_BAT(APINT_TYPE_PREFIX, 2248) +HANDLE_BAT(APINT_TYPE_PREFIX, 2249) +HANDLE_BAT(APINT_TYPE_PREFIX, 2250) +HANDLE_BAT(APINT_TYPE_PREFIX, 2251) +HANDLE_BAT(APINT_TYPE_PREFIX, 2252) +HANDLE_BAT(APINT_TYPE_PREFIX, 2253) +HANDLE_BAT(APINT_TYPE_PREFIX, 2254) +HANDLE_BAT(APINT_TYPE_PREFIX, 2255) +HANDLE_BAT(APINT_TYPE_PREFIX, 2256) +HANDLE_BAT(APINT_TYPE_PREFIX, 2257) +HANDLE_BAT(APINT_TYPE_PREFIX, 2258) +HANDLE_BAT(APINT_TYPE_PREFIX, 2259) +HANDLE_BAT(APINT_TYPE_PREFIX, 2260) +HANDLE_BAT(APINT_TYPE_PREFIX, 2261) +HANDLE_BAT(APINT_TYPE_PREFIX, 2262) +HANDLE_BAT(APINT_TYPE_PREFIX, 2263) +HANDLE_BAT(APINT_TYPE_PREFIX, 2264) +HANDLE_BAT(APINT_TYPE_PREFIX, 2265) +HANDLE_BAT(APINT_TYPE_PREFIX, 2266) +HANDLE_BAT(APINT_TYPE_PREFIX, 2267) +HANDLE_BAT(APINT_TYPE_PREFIX, 2268) +HANDLE_BAT(APINT_TYPE_PREFIX, 2269) +HANDLE_BAT(APINT_TYPE_PREFIX, 2270) +HANDLE_BAT(APINT_TYPE_PREFIX, 2271) +HANDLE_BAT(APINT_TYPE_PREFIX, 2272) +HANDLE_BAT(APINT_TYPE_PREFIX, 2273) +HANDLE_BAT(APINT_TYPE_PREFIX, 2274) +HANDLE_BAT(APINT_TYPE_PREFIX, 2275) +HANDLE_BAT(APINT_TYPE_PREFIX, 2276) +HANDLE_BAT(APINT_TYPE_PREFIX, 2277) +HANDLE_BAT(APINT_TYPE_PREFIX, 2278) +HANDLE_BAT(APINT_TYPE_PREFIX, 2279) +HANDLE_BAT(APINT_TYPE_PREFIX, 2280) +HANDLE_BAT(APINT_TYPE_PREFIX, 2281) +HANDLE_BAT(APINT_TYPE_PREFIX, 2282) +HANDLE_BAT(APINT_TYPE_PREFIX, 2283) +HANDLE_BAT(APINT_TYPE_PREFIX, 2284) +HANDLE_BAT(APINT_TYPE_PREFIX, 2285) +HANDLE_BAT(APINT_TYPE_PREFIX, 2286) +HANDLE_BAT(APINT_TYPE_PREFIX, 2287) +HANDLE_BAT(APINT_TYPE_PREFIX, 2288) +HANDLE_BAT(APINT_TYPE_PREFIX, 2289) +HANDLE_BAT(APINT_TYPE_PREFIX, 2290) +HANDLE_BAT(APINT_TYPE_PREFIX, 2291) +HANDLE_BAT(APINT_TYPE_PREFIX, 2292) +HANDLE_BAT(APINT_TYPE_PREFIX, 2293) +HANDLE_BAT(APINT_TYPE_PREFIX, 2294) +HANDLE_BAT(APINT_TYPE_PREFIX, 2295) +HANDLE_BAT(APINT_TYPE_PREFIX, 2296) +HANDLE_BAT(APINT_TYPE_PREFIX, 2297) +HANDLE_BAT(APINT_TYPE_PREFIX, 2298) +HANDLE_BAT(APINT_TYPE_PREFIX, 2299) +HANDLE_BAT(APINT_TYPE_PREFIX, 2300) +HANDLE_BAT(APINT_TYPE_PREFIX, 2301) +HANDLE_BAT(APINT_TYPE_PREFIX, 2302) +HANDLE_BAT(APINT_TYPE_PREFIX, 2303) +HANDLE_BAT(APINT_TYPE_PREFIX, 2304) +HANDLE_BAT(APINT_TYPE_PREFIX, 2305) +HANDLE_BAT(APINT_TYPE_PREFIX, 2306) +HANDLE_BAT(APINT_TYPE_PREFIX, 2307) +HANDLE_BAT(APINT_TYPE_PREFIX, 2308) +HANDLE_BAT(APINT_TYPE_PREFIX, 2309) +HANDLE_BAT(APINT_TYPE_PREFIX, 2310) +HANDLE_BAT(APINT_TYPE_PREFIX, 2311) +HANDLE_BAT(APINT_TYPE_PREFIX, 2312) +HANDLE_BAT(APINT_TYPE_PREFIX, 2313) +HANDLE_BAT(APINT_TYPE_PREFIX, 2314) +HANDLE_BAT(APINT_TYPE_PREFIX, 2315) +HANDLE_BAT(APINT_TYPE_PREFIX, 2316) +HANDLE_BAT(APINT_TYPE_PREFIX, 2317) +HANDLE_BAT(APINT_TYPE_PREFIX, 2318) +HANDLE_BAT(APINT_TYPE_PREFIX, 2319) +HANDLE_BAT(APINT_TYPE_PREFIX, 2320) +HANDLE_BAT(APINT_TYPE_PREFIX, 2321) +HANDLE_BAT(APINT_TYPE_PREFIX, 2322) +HANDLE_BAT(APINT_TYPE_PREFIX, 2323) +HANDLE_BAT(APINT_TYPE_PREFIX, 2324) +HANDLE_BAT(APINT_TYPE_PREFIX, 2325) +HANDLE_BAT(APINT_TYPE_PREFIX, 2326) +HANDLE_BAT(APINT_TYPE_PREFIX, 2327) +HANDLE_BAT(APINT_TYPE_PREFIX, 2328) +HANDLE_BAT(APINT_TYPE_PREFIX, 2329) +HANDLE_BAT(APINT_TYPE_PREFIX, 2330) +HANDLE_BAT(APINT_TYPE_PREFIX, 2331) +HANDLE_BAT(APINT_TYPE_PREFIX, 2332) +HANDLE_BAT(APINT_TYPE_PREFIX, 2333) +HANDLE_BAT(APINT_TYPE_PREFIX, 2334) +HANDLE_BAT(APINT_TYPE_PREFIX, 2335) +HANDLE_BAT(APINT_TYPE_PREFIX, 2336) +HANDLE_BAT(APINT_TYPE_PREFIX, 2337) +HANDLE_BAT(APINT_TYPE_PREFIX, 2338) +HANDLE_BAT(APINT_TYPE_PREFIX, 2339) +HANDLE_BAT(APINT_TYPE_PREFIX, 2340) +HANDLE_BAT(APINT_TYPE_PREFIX, 2341) +HANDLE_BAT(APINT_TYPE_PREFIX, 2342) +HANDLE_BAT(APINT_TYPE_PREFIX, 2343) +HANDLE_BAT(APINT_TYPE_PREFIX, 2344) +HANDLE_BAT(APINT_TYPE_PREFIX, 2345) +HANDLE_BAT(APINT_TYPE_PREFIX, 2346) +HANDLE_BAT(APINT_TYPE_PREFIX, 2347) +HANDLE_BAT(APINT_TYPE_PREFIX, 2348) +HANDLE_BAT(APINT_TYPE_PREFIX, 2349) +HANDLE_BAT(APINT_TYPE_PREFIX, 2350) +HANDLE_BAT(APINT_TYPE_PREFIX, 2351) +HANDLE_BAT(APINT_TYPE_PREFIX, 2352) +HANDLE_BAT(APINT_TYPE_PREFIX, 2353) +HANDLE_BAT(APINT_TYPE_PREFIX, 2354) +HANDLE_BAT(APINT_TYPE_PREFIX, 2355) +HANDLE_BAT(APINT_TYPE_PREFIX, 2356) +HANDLE_BAT(APINT_TYPE_PREFIX, 2357) +HANDLE_BAT(APINT_TYPE_PREFIX, 2358) +HANDLE_BAT(APINT_TYPE_PREFIX, 2359) +HANDLE_BAT(APINT_TYPE_PREFIX, 2360) +HANDLE_BAT(APINT_TYPE_PREFIX, 2361) +HANDLE_BAT(APINT_TYPE_PREFIX, 2362) +HANDLE_BAT(APINT_TYPE_PREFIX, 2363) +HANDLE_BAT(APINT_TYPE_PREFIX, 2364) +HANDLE_BAT(APINT_TYPE_PREFIX, 2365) +HANDLE_BAT(APINT_TYPE_PREFIX, 2366) +HANDLE_BAT(APINT_TYPE_PREFIX, 2367) +HANDLE_BAT(APINT_TYPE_PREFIX, 2368) +HANDLE_BAT(APINT_TYPE_PREFIX, 2369) +HANDLE_BAT(APINT_TYPE_PREFIX, 2370) +HANDLE_BAT(APINT_TYPE_PREFIX, 2371) +HANDLE_BAT(APINT_TYPE_PREFIX, 2372) +HANDLE_BAT(APINT_TYPE_PREFIX, 2373) +HANDLE_BAT(APINT_TYPE_PREFIX, 2374) +HANDLE_BAT(APINT_TYPE_PREFIX, 2375) +HANDLE_BAT(APINT_TYPE_PREFIX, 2376) +HANDLE_BAT(APINT_TYPE_PREFIX, 2377) +HANDLE_BAT(APINT_TYPE_PREFIX, 2378) +HANDLE_BAT(APINT_TYPE_PREFIX, 2379) +HANDLE_BAT(APINT_TYPE_PREFIX, 2380) +HANDLE_BAT(APINT_TYPE_PREFIX, 2381) +HANDLE_BAT(APINT_TYPE_PREFIX, 2382) +HANDLE_BAT(APINT_TYPE_PREFIX, 2383) +HANDLE_BAT(APINT_TYPE_PREFIX, 2384) +HANDLE_BAT(APINT_TYPE_PREFIX, 2385) +HANDLE_BAT(APINT_TYPE_PREFIX, 2386) +HANDLE_BAT(APINT_TYPE_PREFIX, 2387) +HANDLE_BAT(APINT_TYPE_PREFIX, 2388) +HANDLE_BAT(APINT_TYPE_PREFIX, 2389) +HANDLE_BAT(APINT_TYPE_PREFIX, 2390) +HANDLE_BAT(APINT_TYPE_PREFIX, 2391) +HANDLE_BAT(APINT_TYPE_PREFIX, 2392) +HANDLE_BAT(APINT_TYPE_PREFIX, 2393) +HANDLE_BAT(APINT_TYPE_PREFIX, 2394) +HANDLE_BAT(APINT_TYPE_PREFIX, 2395) +HANDLE_BAT(APINT_TYPE_PREFIX, 2396) +HANDLE_BAT(APINT_TYPE_PREFIX, 2397) +HANDLE_BAT(APINT_TYPE_PREFIX, 2398) +HANDLE_BAT(APINT_TYPE_PREFIX, 2399) +HANDLE_BAT(APINT_TYPE_PREFIX, 2400) +HANDLE_BAT(APINT_TYPE_PREFIX, 2401) +HANDLE_BAT(APINT_TYPE_PREFIX, 2402) +HANDLE_BAT(APINT_TYPE_PREFIX, 2403) +HANDLE_BAT(APINT_TYPE_PREFIX, 2404) +HANDLE_BAT(APINT_TYPE_PREFIX, 2405) +HANDLE_BAT(APINT_TYPE_PREFIX, 2406) +HANDLE_BAT(APINT_TYPE_PREFIX, 2407) +HANDLE_BAT(APINT_TYPE_PREFIX, 2408) +HANDLE_BAT(APINT_TYPE_PREFIX, 2409) +HANDLE_BAT(APINT_TYPE_PREFIX, 2410) +HANDLE_BAT(APINT_TYPE_PREFIX, 2411) +HANDLE_BAT(APINT_TYPE_PREFIX, 2412) +HANDLE_BAT(APINT_TYPE_PREFIX, 2413) +HANDLE_BAT(APINT_TYPE_PREFIX, 2414) +HANDLE_BAT(APINT_TYPE_PREFIX, 2415) +HANDLE_BAT(APINT_TYPE_PREFIX, 2416) +HANDLE_BAT(APINT_TYPE_PREFIX, 2417) +HANDLE_BAT(APINT_TYPE_PREFIX, 2418) +HANDLE_BAT(APINT_TYPE_PREFIX, 2419) +HANDLE_BAT(APINT_TYPE_PREFIX, 2420) +HANDLE_BAT(APINT_TYPE_PREFIX, 2421) +HANDLE_BAT(APINT_TYPE_PREFIX, 2422) +HANDLE_BAT(APINT_TYPE_PREFIX, 2423) +HANDLE_BAT(APINT_TYPE_PREFIX, 2424) +HANDLE_BAT(APINT_TYPE_PREFIX, 2425) +HANDLE_BAT(APINT_TYPE_PREFIX, 2426) +HANDLE_BAT(APINT_TYPE_PREFIX, 2427) +HANDLE_BAT(APINT_TYPE_PREFIX, 2428) +HANDLE_BAT(APINT_TYPE_PREFIX, 2429) +HANDLE_BAT(APINT_TYPE_PREFIX, 2430) +HANDLE_BAT(APINT_TYPE_PREFIX, 2431) +HANDLE_BAT(APINT_TYPE_PREFIX, 2432) +HANDLE_BAT(APINT_TYPE_PREFIX, 2433) +HANDLE_BAT(APINT_TYPE_PREFIX, 2434) +HANDLE_BAT(APINT_TYPE_PREFIX, 2435) +HANDLE_BAT(APINT_TYPE_PREFIX, 2436) +HANDLE_BAT(APINT_TYPE_PREFIX, 2437) +HANDLE_BAT(APINT_TYPE_PREFIX, 2438) +HANDLE_BAT(APINT_TYPE_PREFIX, 2439) +HANDLE_BAT(APINT_TYPE_PREFIX, 2440) +HANDLE_BAT(APINT_TYPE_PREFIX, 2441) +HANDLE_BAT(APINT_TYPE_PREFIX, 2442) +HANDLE_BAT(APINT_TYPE_PREFIX, 2443) +HANDLE_BAT(APINT_TYPE_PREFIX, 2444) +HANDLE_BAT(APINT_TYPE_PREFIX, 2445) +HANDLE_BAT(APINT_TYPE_PREFIX, 2446) +HANDLE_BAT(APINT_TYPE_PREFIX, 2447) +HANDLE_BAT(APINT_TYPE_PREFIX, 2448) +HANDLE_BAT(APINT_TYPE_PREFIX, 2449) +HANDLE_BAT(APINT_TYPE_PREFIX, 2450) +HANDLE_BAT(APINT_TYPE_PREFIX, 2451) +HANDLE_BAT(APINT_TYPE_PREFIX, 2452) +HANDLE_BAT(APINT_TYPE_PREFIX, 2453) +HANDLE_BAT(APINT_TYPE_PREFIX, 2454) +HANDLE_BAT(APINT_TYPE_PREFIX, 2455) +HANDLE_BAT(APINT_TYPE_PREFIX, 2456) +HANDLE_BAT(APINT_TYPE_PREFIX, 2457) +HANDLE_BAT(APINT_TYPE_PREFIX, 2458) +HANDLE_BAT(APINT_TYPE_PREFIX, 2459) +HANDLE_BAT(APINT_TYPE_PREFIX, 2460) +HANDLE_BAT(APINT_TYPE_PREFIX, 2461) +HANDLE_BAT(APINT_TYPE_PREFIX, 2462) +HANDLE_BAT(APINT_TYPE_PREFIX, 2463) +HANDLE_BAT(APINT_TYPE_PREFIX, 2464) +HANDLE_BAT(APINT_TYPE_PREFIX, 2465) +HANDLE_BAT(APINT_TYPE_PREFIX, 2466) +HANDLE_BAT(APINT_TYPE_PREFIX, 2467) +HANDLE_BAT(APINT_TYPE_PREFIX, 2468) +HANDLE_BAT(APINT_TYPE_PREFIX, 2469) +HANDLE_BAT(APINT_TYPE_PREFIX, 2470) +HANDLE_BAT(APINT_TYPE_PREFIX, 2471) +HANDLE_BAT(APINT_TYPE_PREFIX, 2472) +HANDLE_BAT(APINT_TYPE_PREFIX, 2473) +HANDLE_BAT(APINT_TYPE_PREFIX, 2474) +HANDLE_BAT(APINT_TYPE_PREFIX, 2475) +HANDLE_BAT(APINT_TYPE_PREFIX, 2476) +HANDLE_BAT(APINT_TYPE_PREFIX, 2477) +HANDLE_BAT(APINT_TYPE_PREFIX, 2478) +HANDLE_BAT(APINT_TYPE_PREFIX, 2479) +HANDLE_BAT(APINT_TYPE_PREFIX, 2480) +HANDLE_BAT(APINT_TYPE_PREFIX, 2481) +HANDLE_BAT(APINT_TYPE_PREFIX, 2482) +HANDLE_BAT(APINT_TYPE_PREFIX, 2483) +HANDLE_BAT(APINT_TYPE_PREFIX, 2484) +HANDLE_BAT(APINT_TYPE_PREFIX, 2485) +HANDLE_BAT(APINT_TYPE_PREFIX, 2486) +HANDLE_BAT(APINT_TYPE_PREFIX, 2487) +HANDLE_BAT(APINT_TYPE_PREFIX, 2488) +HANDLE_BAT(APINT_TYPE_PREFIX, 2489) +HANDLE_BAT(APINT_TYPE_PREFIX, 2490) +HANDLE_BAT(APINT_TYPE_PREFIX, 2491) +HANDLE_BAT(APINT_TYPE_PREFIX, 2492) +HANDLE_BAT(APINT_TYPE_PREFIX, 2493) +HANDLE_BAT(APINT_TYPE_PREFIX, 2494) +HANDLE_BAT(APINT_TYPE_PREFIX, 2495) +HANDLE_BAT(APINT_TYPE_PREFIX, 2496) +HANDLE_BAT(APINT_TYPE_PREFIX, 2497) +HANDLE_BAT(APINT_TYPE_PREFIX, 2498) +HANDLE_BAT(APINT_TYPE_PREFIX, 2499) +HANDLE_BAT(APINT_TYPE_PREFIX, 2500) +HANDLE_BAT(APINT_TYPE_PREFIX, 2501) +HANDLE_BAT(APINT_TYPE_PREFIX, 2502) +HANDLE_BAT(APINT_TYPE_PREFIX, 2503) +HANDLE_BAT(APINT_TYPE_PREFIX, 2504) +HANDLE_BAT(APINT_TYPE_PREFIX, 2505) +HANDLE_BAT(APINT_TYPE_PREFIX, 2506) +HANDLE_BAT(APINT_TYPE_PREFIX, 2507) +HANDLE_BAT(APINT_TYPE_PREFIX, 2508) +HANDLE_BAT(APINT_TYPE_PREFIX, 2509) +HANDLE_BAT(APINT_TYPE_PREFIX, 2510) +HANDLE_BAT(APINT_TYPE_PREFIX, 2511) +HANDLE_BAT(APINT_TYPE_PREFIX, 2512) +HANDLE_BAT(APINT_TYPE_PREFIX, 2513) +HANDLE_BAT(APINT_TYPE_PREFIX, 2514) +HANDLE_BAT(APINT_TYPE_PREFIX, 2515) +HANDLE_BAT(APINT_TYPE_PREFIX, 2516) +HANDLE_BAT(APINT_TYPE_PREFIX, 2517) +HANDLE_BAT(APINT_TYPE_PREFIX, 2518) +HANDLE_BAT(APINT_TYPE_PREFIX, 2519) +HANDLE_BAT(APINT_TYPE_PREFIX, 2520) +HANDLE_BAT(APINT_TYPE_PREFIX, 2521) +HANDLE_BAT(APINT_TYPE_PREFIX, 2522) +HANDLE_BAT(APINT_TYPE_PREFIX, 2523) +HANDLE_BAT(APINT_TYPE_PREFIX, 2524) +HANDLE_BAT(APINT_TYPE_PREFIX, 2525) +HANDLE_BAT(APINT_TYPE_PREFIX, 2526) +HANDLE_BAT(APINT_TYPE_PREFIX, 2527) +HANDLE_BAT(APINT_TYPE_PREFIX, 2528) +HANDLE_BAT(APINT_TYPE_PREFIX, 2529) +HANDLE_BAT(APINT_TYPE_PREFIX, 2530) +HANDLE_BAT(APINT_TYPE_PREFIX, 2531) +HANDLE_BAT(APINT_TYPE_PREFIX, 2532) +HANDLE_BAT(APINT_TYPE_PREFIX, 2533) +HANDLE_BAT(APINT_TYPE_PREFIX, 2534) +HANDLE_BAT(APINT_TYPE_PREFIX, 2535) +HANDLE_BAT(APINT_TYPE_PREFIX, 2536) +HANDLE_BAT(APINT_TYPE_PREFIX, 2537) +HANDLE_BAT(APINT_TYPE_PREFIX, 2538) +HANDLE_BAT(APINT_TYPE_PREFIX, 2539) +HANDLE_BAT(APINT_TYPE_PREFIX, 2540) +HANDLE_BAT(APINT_TYPE_PREFIX, 2541) +HANDLE_BAT(APINT_TYPE_PREFIX, 2542) +HANDLE_BAT(APINT_TYPE_PREFIX, 2543) +HANDLE_BAT(APINT_TYPE_PREFIX, 2544) +HANDLE_BAT(APINT_TYPE_PREFIX, 2545) +HANDLE_BAT(APINT_TYPE_PREFIX, 2546) +HANDLE_BAT(APINT_TYPE_PREFIX, 2547) +HANDLE_BAT(APINT_TYPE_PREFIX, 2548) +HANDLE_BAT(APINT_TYPE_PREFIX, 2549) +HANDLE_BAT(APINT_TYPE_PREFIX, 2550) +HANDLE_BAT(APINT_TYPE_PREFIX, 2551) +HANDLE_BAT(APINT_TYPE_PREFIX, 2552) +HANDLE_BAT(APINT_TYPE_PREFIX, 2553) +HANDLE_BAT(APINT_TYPE_PREFIX, 2554) +HANDLE_BAT(APINT_TYPE_PREFIX, 2555) +HANDLE_BAT(APINT_TYPE_PREFIX, 2556) +HANDLE_BAT(APINT_TYPE_PREFIX, 2557) +HANDLE_BAT(APINT_TYPE_PREFIX, 2558) +HANDLE_BAT(APINT_TYPE_PREFIX, 2559) +HANDLE_BAT(APINT_TYPE_PREFIX, 2560) +HANDLE_BAT(APINT_TYPE_PREFIX, 2561) +HANDLE_BAT(APINT_TYPE_PREFIX, 2562) +HANDLE_BAT(APINT_TYPE_PREFIX, 2563) +HANDLE_BAT(APINT_TYPE_PREFIX, 2564) +HANDLE_BAT(APINT_TYPE_PREFIX, 2565) +HANDLE_BAT(APINT_TYPE_PREFIX, 2566) +HANDLE_BAT(APINT_TYPE_PREFIX, 2567) +HANDLE_BAT(APINT_TYPE_PREFIX, 2568) +HANDLE_BAT(APINT_TYPE_PREFIX, 2569) +HANDLE_BAT(APINT_TYPE_PREFIX, 2570) +HANDLE_BAT(APINT_TYPE_PREFIX, 2571) +HANDLE_BAT(APINT_TYPE_PREFIX, 2572) +HANDLE_BAT(APINT_TYPE_PREFIX, 2573) +HANDLE_BAT(APINT_TYPE_PREFIX, 2574) +HANDLE_BAT(APINT_TYPE_PREFIX, 2575) +HANDLE_BAT(APINT_TYPE_PREFIX, 2576) +HANDLE_BAT(APINT_TYPE_PREFIX, 2577) +HANDLE_BAT(APINT_TYPE_PREFIX, 2578) +HANDLE_BAT(APINT_TYPE_PREFIX, 2579) +HANDLE_BAT(APINT_TYPE_PREFIX, 2580) +HANDLE_BAT(APINT_TYPE_PREFIX, 2581) +HANDLE_BAT(APINT_TYPE_PREFIX, 2582) +HANDLE_BAT(APINT_TYPE_PREFIX, 2583) +HANDLE_BAT(APINT_TYPE_PREFIX, 2584) +HANDLE_BAT(APINT_TYPE_PREFIX, 2585) +HANDLE_BAT(APINT_TYPE_PREFIX, 2586) +HANDLE_BAT(APINT_TYPE_PREFIX, 2587) +HANDLE_BAT(APINT_TYPE_PREFIX, 2588) +HANDLE_BAT(APINT_TYPE_PREFIX, 2589) +HANDLE_BAT(APINT_TYPE_PREFIX, 2590) +HANDLE_BAT(APINT_TYPE_PREFIX, 2591) +HANDLE_BAT(APINT_TYPE_PREFIX, 2592) +HANDLE_BAT(APINT_TYPE_PREFIX, 2593) +HANDLE_BAT(APINT_TYPE_PREFIX, 2594) +HANDLE_BAT(APINT_TYPE_PREFIX, 2595) +HANDLE_BAT(APINT_TYPE_PREFIX, 2596) +HANDLE_BAT(APINT_TYPE_PREFIX, 2597) +HANDLE_BAT(APINT_TYPE_PREFIX, 2598) +HANDLE_BAT(APINT_TYPE_PREFIX, 2599) +HANDLE_BAT(APINT_TYPE_PREFIX, 2600) +HANDLE_BAT(APINT_TYPE_PREFIX, 2601) +HANDLE_BAT(APINT_TYPE_PREFIX, 2602) +HANDLE_BAT(APINT_TYPE_PREFIX, 2603) +HANDLE_BAT(APINT_TYPE_PREFIX, 2604) +HANDLE_BAT(APINT_TYPE_PREFIX, 2605) +HANDLE_BAT(APINT_TYPE_PREFIX, 2606) +HANDLE_BAT(APINT_TYPE_PREFIX, 2607) +HANDLE_BAT(APINT_TYPE_PREFIX, 2608) +HANDLE_BAT(APINT_TYPE_PREFIX, 2609) +HANDLE_BAT(APINT_TYPE_PREFIX, 2610) +HANDLE_BAT(APINT_TYPE_PREFIX, 2611) +HANDLE_BAT(APINT_TYPE_PREFIX, 2612) +HANDLE_BAT(APINT_TYPE_PREFIX, 2613) +HANDLE_BAT(APINT_TYPE_PREFIX, 2614) +HANDLE_BAT(APINT_TYPE_PREFIX, 2615) +HANDLE_BAT(APINT_TYPE_PREFIX, 2616) +HANDLE_BAT(APINT_TYPE_PREFIX, 2617) +HANDLE_BAT(APINT_TYPE_PREFIX, 2618) +HANDLE_BAT(APINT_TYPE_PREFIX, 2619) +HANDLE_BAT(APINT_TYPE_PREFIX, 2620) +HANDLE_BAT(APINT_TYPE_PREFIX, 2621) +HANDLE_BAT(APINT_TYPE_PREFIX, 2622) +HANDLE_BAT(APINT_TYPE_PREFIX, 2623) +HANDLE_BAT(APINT_TYPE_PREFIX, 2624) +HANDLE_BAT(APINT_TYPE_PREFIX, 2625) +HANDLE_BAT(APINT_TYPE_PREFIX, 2626) +HANDLE_BAT(APINT_TYPE_PREFIX, 2627) +HANDLE_BAT(APINT_TYPE_PREFIX, 2628) +HANDLE_BAT(APINT_TYPE_PREFIX, 2629) +HANDLE_BAT(APINT_TYPE_PREFIX, 2630) +HANDLE_BAT(APINT_TYPE_PREFIX, 2631) +HANDLE_BAT(APINT_TYPE_PREFIX, 2632) +HANDLE_BAT(APINT_TYPE_PREFIX, 2633) +HANDLE_BAT(APINT_TYPE_PREFIX, 2634) +HANDLE_BAT(APINT_TYPE_PREFIX, 2635) +HANDLE_BAT(APINT_TYPE_PREFIX, 2636) +HANDLE_BAT(APINT_TYPE_PREFIX, 2637) +HANDLE_BAT(APINT_TYPE_PREFIX, 2638) +HANDLE_BAT(APINT_TYPE_PREFIX, 2639) +HANDLE_BAT(APINT_TYPE_PREFIX, 2640) +HANDLE_BAT(APINT_TYPE_PREFIX, 2641) +HANDLE_BAT(APINT_TYPE_PREFIX, 2642) +HANDLE_BAT(APINT_TYPE_PREFIX, 2643) +HANDLE_BAT(APINT_TYPE_PREFIX, 2644) +HANDLE_BAT(APINT_TYPE_PREFIX, 2645) +HANDLE_BAT(APINT_TYPE_PREFIX, 2646) +HANDLE_BAT(APINT_TYPE_PREFIX, 2647) +HANDLE_BAT(APINT_TYPE_PREFIX, 2648) +HANDLE_BAT(APINT_TYPE_PREFIX, 2649) +HANDLE_BAT(APINT_TYPE_PREFIX, 2650) +HANDLE_BAT(APINT_TYPE_PREFIX, 2651) +HANDLE_BAT(APINT_TYPE_PREFIX, 2652) +HANDLE_BAT(APINT_TYPE_PREFIX, 2653) +HANDLE_BAT(APINT_TYPE_PREFIX, 2654) +HANDLE_BAT(APINT_TYPE_PREFIX, 2655) +HANDLE_BAT(APINT_TYPE_PREFIX, 2656) +HANDLE_BAT(APINT_TYPE_PREFIX, 2657) +HANDLE_BAT(APINT_TYPE_PREFIX, 2658) +HANDLE_BAT(APINT_TYPE_PREFIX, 2659) +HANDLE_BAT(APINT_TYPE_PREFIX, 2660) +HANDLE_BAT(APINT_TYPE_PREFIX, 2661) +HANDLE_BAT(APINT_TYPE_PREFIX, 2662) +HANDLE_BAT(APINT_TYPE_PREFIX, 2663) +HANDLE_BAT(APINT_TYPE_PREFIX, 2664) +HANDLE_BAT(APINT_TYPE_PREFIX, 2665) +HANDLE_BAT(APINT_TYPE_PREFIX, 2666) +HANDLE_BAT(APINT_TYPE_PREFIX, 2667) +HANDLE_BAT(APINT_TYPE_PREFIX, 2668) +HANDLE_BAT(APINT_TYPE_PREFIX, 2669) +HANDLE_BAT(APINT_TYPE_PREFIX, 2670) +HANDLE_BAT(APINT_TYPE_PREFIX, 2671) +HANDLE_BAT(APINT_TYPE_PREFIX, 2672) +HANDLE_BAT(APINT_TYPE_PREFIX, 2673) +HANDLE_BAT(APINT_TYPE_PREFIX, 2674) +HANDLE_BAT(APINT_TYPE_PREFIX, 2675) +HANDLE_BAT(APINT_TYPE_PREFIX, 2676) +HANDLE_BAT(APINT_TYPE_PREFIX, 2677) +HANDLE_BAT(APINT_TYPE_PREFIX, 2678) +HANDLE_BAT(APINT_TYPE_PREFIX, 2679) +HANDLE_BAT(APINT_TYPE_PREFIX, 2680) +HANDLE_BAT(APINT_TYPE_PREFIX, 2681) +HANDLE_BAT(APINT_TYPE_PREFIX, 2682) +HANDLE_BAT(APINT_TYPE_PREFIX, 2683) +HANDLE_BAT(APINT_TYPE_PREFIX, 2684) +HANDLE_BAT(APINT_TYPE_PREFIX, 2685) +HANDLE_BAT(APINT_TYPE_PREFIX, 2686) +HANDLE_BAT(APINT_TYPE_PREFIX, 2687) +HANDLE_BAT(APINT_TYPE_PREFIX, 2688) +HANDLE_BAT(APINT_TYPE_PREFIX, 2689) +HANDLE_BAT(APINT_TYPE_PREFIX, 2690) +HANDLE_BAT(APINT_TYPE_PREFIX, 2691) +HANDLE_BAT(APINT_TYPE_PREFIX, 2692) +HANDLE_BAT(APINT_TYPE_PREFIX, 2693) +HANDLE_BAT(APINT_TYPE_PREFIX, 2694) +HANDLE_BAT(APINT_TYPE_PREFIX, 2695) +HANDLE_BAT(APINT_TYPE_PREFIX, 2696) +HANDLE_BAT(APINT_TYPE_PREFIX, 2697) +HANDLE_BAT(APINT_TYPE_PREFIX, 2698) +HANDLE_BAT(APINT_TYPE_PREFIX, 2699) +HANDLE_BAT(APINT_TYPE_PREFIX, 2700) +HANDLE_BAT(APINT_TYPE_PREFIX, 2701) +HANDLE_BAT(APINT_TYPE_PREFIX, 2702) +HANDLE_BAT(APINT_TYPE_PREFIX, 2703) +HANDLE_BAT(APINT_TYPE_PREFIX, 2704) +HANDLE_BAT(APINT_TYPE_PREFIX, 2705) +HANDLE_BAT(APINT_TYPE_PREFIX, 2706) +HANDLE_BAT(APINT_TYPE_PREFIX, 2707) +HANDLE_BAT(APINT_TYPE_PREFIX, 2708) +HANDLE_BAT(APINT_TYPE_PREFIX, 2709) +HANDLE_BAT(APINT_TYPE_PREFIX, 2710) +HANDLE_BAT(APINT_TYPE_PREFIX, 2711) +HANDLE_BAT(APINT_TYPE_PREFIX, 2712) +HANDLE_BAT(APINT_TYPE_PREFIX, 2713) +HANDLE_BAT(APINT_TYPE_PREFIX, 2714) +HANDLE_BAT(APINT_TYPE_PREFIX, 2715) +HANDLE_BAT(APINT_TYPE_PREFIX, 2716) +HANDLE_BAT(APINT_TYPE_PREFIX, 2717) +HANDLE_BAT(APINT_TYPE_PREFIX, 2718) +HANDLE_BAT(APINT_TYPE_PREFIX, 2719) +HANDLE_BAT(APINT_TYPE_PREFIX, 2720) +HANDLE_BAT(APINT_TYPE_PREFIX, 2721) +HANDLE_BAT(APINT_TYPE_PREFIX, 2722) +HANDLE_BAT(APINT_TYPE_PREFIX, 2723) +HANDLE_BAT(APINT_TYPE_PREFIX, 2724) +HANDLE_BAT(APINT_TYPE_PREFIX, 2725) +HANDLE_BAT(APINT_TYPE_PREFIX, 2726) +HANDLE_BAT(APINT_TYPE_PREFIX, 2727) +HANDLE_BAT(APINT_TYPE_PREFIX, 2728) +HANDLE_BAT(APINT_TYPE_PREFIX, 2729) +HANDLE_BAT(APINT_TYPE_PREFIX, 2730) +HANDLE_BAT(APINT_TYPE_PREFIX, 2731) +HANDLE_BAT(APINT_TYPE_PREFIX, 2732) +HANDLE_BAT(APINT_TYPE_PREFIX, 2733) +HANDLE_BAT(APINT_TYPE_PREFIX, 2734) +HANDLE_BAT(APINT_TYPE_PREFIX, 2735) +HANDLE_BAT(APINT_TYPE_PREFIX, 2736) +HANDLE_BAT(APINT_TYPE_PREFIX, 2737) +HANDLE_BAT(APINT_TYPE_PREFIX, 2738) +HANDLE_BAT(APINT_TYPE_PREFIX, 2739) +HANDLE_BAT(APINT_TYPE_PREFIX, 2740) +HANDLE_BAT(APINT_TYPE_PREFIX, 2741) +HANDLE_BAT(APINT_TYPE_PREFIX, 2742) +HANDLE_BAT(APINT_TYPE_PREFIX, 2743) +HANDLE_BAT(APINT_TYPE_PREFIX, 2744) +HANDLE_BAT(APINT_TYPE_PREFIX, 2745) +HANDLE_BAT(APINT_TYPE_PREFIX, 2746) +HANDLE_BAT(APINT_TYPE_PREFIX, 2747) +HANDLE_BAT(APINT_TYPE_PREFIX, 2748) +HANDLE_BAT(APINT_TYPE_PREFIX, 2749) +HANDLE_BAT(APINT_TYPE_PREFIX, 2750) +HANDLE_BAT(APINT_TYPE_PREFIX, 2751) +HANDLE_BAT(APINT_TYPE_PREFIX, 2752) +HANDLE_BAT(APINT_TYPE_PREFIX, 2753) +HANDLE_BAT(APINT_TYPE_PREFIX, 2754) +HANDLE_BAT(APINT_TYPE_PREFIX, 2755) +HANDLE_BAT(APINT_TYPE_PREFIX, 2756) +HANDLE_BAT(APINT_TYPE_PREFIX, 2757) +HANDLE_BAT(APINT_TYPE_PREFIX, 2758) +HANDLE_BAT(APINT_TYPE_PREFIX, 2759) +HANDLE_BAT(APINT_TYPE_PREFIX, 2760) +HANDLE_BAT(APINT_TYPE_PREFIX, 2761) +HANDLE_BAT(APINT_TYPE_PREFIX, 2762) +HANDLE_BAT(APINT_TYPE_PREFIX, 2763) +HANDLE_BAT(APINT_TYPE_PREFIX, 2764) +HANDLE_BAT(APINT_TYPE_PREFIX, 2765) +HANDLE_BAT(APINT_TYPE_PREFIX, 2766) +HANDLE_BAT(APINT_TYPE_PREFIX, 2767) +HANDLE_BAT(APINT_TYPE_PREFIX, 2768) +HANDLE_BAT(APINT_TYPE_PREFIX, 2769) +HANDLE_BAT(APINT_TYPE_PREFIX, 2770) +HANDLE_BAT(APINT_TYPE_PREFIX, 2771) +HANDLE_BAT(APINT_TYPE_PREFIX, 2772) +HANDLE_BAT(APINT_TYPE_PREFIX, 2773) +HANDLE_BAT(APINT_TYPE_PREFIX, 2774) +HANDLE_BAT(APINT_TYPE_PREFIX, 2775) +HANDLE_BAT(APINT_TYPE_PREFIX, 2776) +HANDLE_BAT(APINT_TYPE_PREFIX, 2777) +HANDLE_BAT(APINT_TYPE_PREFIX, 2778) +HANDLE_BAT(APINT_TYPE_PREFIX, 2779) +HANDLE_BAT(APINT_TYPE_PREFIX, 2780) +HANDLE_BAT(APINT_TYPE_PREFIX, 2781) +HANDLE_BAT(APINT_TYPE_PREFIX, 2782) +HANDLE_BAT(APINT_TYPE_PREFIX, 2783) +HANDLE_BAT(APINT_TYPE_PREFIX, 2784) +HANDLE_BAT(APINT_TYPE_PREFIX, 2785) +HANDLE_BAT(APINT_TYPE_PREFIX, 2786) +HANDLE_BAT(APINT_TYPE_PREFIX, 2787) +HANDLE_BAT(APINT_TYPE_PREFIX, 2788) +HANDLE_BAT(APINT_TYPE_PREFIX, 2789) +HANDLE_BAT(APINT_TYPE_PREFIX, 2790) +HANDLE_BAT(APINT_TYPE_PREFIX, 2791) +HANDLE_BAT(APINT_TYPE_PREFIX, 2792) +HANDLE_BAT(APINT_TYPE_PREFIX, 2793) +HANDLE_BAT(APINT_TYPE_PREFIX, 2794) +HANDLE_BAT(APINT_TYPE_PREFIX, 2795) +HANDLE_BAT(APINT_TYPE_PREFIX, 2796) +HANDLE_BAT(APINT_TYPE_PREFIX, 2797) +HANDLE_BAT(APINT_TYPE_PREFIX, 2798) +HANDLE_BAT(APINT_TYPE_PREFIX, 2799) +HANDLE_BAT(APINT_TYPE_PREFIX, 2800) +HANDLE_BAT(APINT_TYPE_PREFIX, 2801) +HANDLE_BAT(APINT_TYPE_PREFIX, 2802) +HANDLE_BAT(APINT_TYPE_PREFIX, 2803) +HANDLE_BAT(APINT_TYPE_PREFIX, 2804) +HANDLE_BAT(APINT_TYPE_PREFIX, 2805) +HANDLE_BAT(APINT_TYPE_PREFIX, 2806) +HANDLE_BAT(APINT_TYPE_PREFIX, 2807) +HANDLE_BAT(APINT_TYPE_PREFIX, 2808) +HANDLE_BAT(APINT_TYPE_PREFIX, 2809) +HANDLE_BAT(APINT_TYPE_PREFIX, 2810) +HANDLE_BAT(APINT_TYPE_PREFIX, 2811) +HANDLE_BAT(APINT_TYPE_PREFIX, 2812) +HANDLE_BAT(APINT_TYPE_PREFIX, 2813) +HANDLE_BAT(APINT_TYPE_PREFIX, 2814) +HANDLE_BAT(APINT_TYPE_PREFIX, 2815) +HANDLE_BAT(APINT_TYPE_PREFIX, 2816) +HANDLE_BAT(APINT_TYPE_PREFIX, 2817) +HANDLE_BAT(APINT_TYPE_PREFIX, 2818) +HANDLE_BAT(APINT_TYPE_PREFIX, 2819) +HANDLE_BAT(APINT_TYPE_PREFIX, 2820) +HANDLE_BAT(APINT_TYPE_PREFIX, 2821) +HANDLE_BAT(APINT_TYPE_PREFIX, 2822) +HANDLE_BAT(APINT_TYPE_PREFIX, 2823) +HANDLE_BAT(APINT_TYPE_PREFIX, 2824) +HANDLE_BAT(APINT_TYPE_PREFIX, 2825) +HANDLE_BAT(APINT_TYPE_PREFIX, 2826) +HANDLE_BAT(APINT_TYPE_PREFIX, 2827) +HANDLE_BAT(APINT_TYPE_PREFIX, 2828) +HANDLE_BAT(APINT_TYPE_PREFIX, 2829) +HANDLE_BAT(APINT_TYPE_PREFIX, 2830) +HANDLE_BAT(APINT_TYPE_PREFIX, 2831) +HANDLE_BAT(APINT_TYPE_PREFIX, 2832) +HANDLE_BAT(APINT_TYPE_PREFIX, 2833) +HANDLE_BAT(APINT_TYPE_PREFIX, 2834) +HANDLE_BAT(APINT_TYPE_PREFIX, 2835) +HANDLE_BAT(APINT_TYPE_PREFIX, 2836) +HANDLE_BAT(APINT_TYPE_PREFIX, 2837) +HANDLE_BAT(APINT_TYPE_PREFIX, 2838) +HANDLE_BAT(APINT_TYPE_PREFIX, 2839) +HANDLE_BAT(APINT_TYPE_PREFIX, 2840) +HANDLE_BAT(APINT_TYPE_PREFIX, 2841) +HANDLE_BAT(APINT_TYPE_PREFIX, 2842) +HANDLE_BAT(APINT_TYPE_PREFIX, 2843) +HANDLE_BAT(APINT_TYPE_PREFIX, 2844) +HANDLE_BAT(APINT_TYPE_PREFIX, 2845) +HANDLE_BAT(APINT_TYPE_PREFIX, 2846) +HANDLE_BAT(APINT_TYPE_PREFIX, 2847) +HANDLE_BAT(APINT_TYPE_PREFIX, 2848) +HANDLE_BAT(APINT_TYPE_PREFIX, 2849) +HANDLE_BAT(APINT_TYPE_PREFIX, 2850) +HANDLE_BAT(APINT_TYPE_PREFIX, 2851) +HANDLE_BAT(APINT_TYPE_PREFIX, 2852) +HANDLE_BAT(APINT_TYPE_PREFIX, 2853) +HANDLE_BAT(APINT_TYPE_PREFIX, 2854) +HANDLE_BAT(APINT_TYPE_PREFIX, 2855) +HANDLE_BAT(APINT_TYPE_PREFIX, 2856) +HANDLE_BAT(APINT_TYPE_PREFIX, 2857) +HANDLE_BAT(APINT_TYPE_PREFIX, 2858) +HANDLE_BAT(APINT_TYPE_PREFIX, 2859) +HANDLE_BAT(APINT_TYPE_PREFIX, 2860) +HANDLE_BAT(APINT_TYPE_PREFIX, 2861) +HANDLE_BAT(APINT_TYPE_PREFIX, 2862) +HANDLE_BAT(APINT_TYPE_PREFIX, 2863) +HANDLE_BAT(APINT_TYPE_PREFIX, 2864) +HANDLE_BAT(APINT_TYPE_PREFIX, 2865) +HANDLE_BAT(APINT_TYPE_PREFIX, 2866) +HANDLE_BAT(APINT_TYPE_PREFIX, 2867) +HANDLE_BAT(APINT_TYPE_PREFIX, 2868) +HANDLE_BAT(APINT_TYPE_PREFIX, 2869) +HANDLE_BAT(APINT_TYPE_PREFIX, 2870) +HANDLE_BAT(APINT_TYPE_PREFIX, 2871) +HANDLE_BAT(APINT_TYPE_PREFIX, 2872) +HANDLE_BAT(APINT_TYPE_PREFIX, 2873) +HANDLE_BAT(APINT_TYPE_PREFIX, 2874) +HANDLE_BAT(APINT_TYPE_PREFIX, 2875) +HANDLE_BAT(APINT_TYPE_PREFIX, 2876) +HANDLE_BAT(APINT_TYPE_PREFIX, 2877) +HANDLE_BAT(APINT_TYPE_PREFIX, 2878) +HANDLE_BAT(APINT_TYPE_PREFIX, 2879) +HANDLE_BAT(APINT_TYPE_PREFIX, 2880) +HANDLE_BAT(APINT_TYPE_PREFIX, 2881) +HANDLE_BAT(APINT_TYPE_PREFIX, 2882) +HANDLE_BAT(APINT_TYPE_PREFIX, 2883) +HANDLE_BAT(APINT_TYPE_PREFIX, 2884) +HANDLE_BAT(APINT_TYPE_PREFIX, 2885) +HANDLE_BAT(APINT_TYPE_PREFIX, 2886) +HANDLE_BAT(APINT_TYPE_PREFIX, 2887) +HANDLE_BAT(APINT_TYPE_PREFIX, 2888) +HANDLE_BAT(APINT_TYPE_PREFIX, 2889) +HANDLE_BAT(APINT_TYPE_PREFIX, 2890) +HANDLE_BAT(APINT_TYPE_PREFIX, 2891) +HANDLE_BAT(APINT_TYPE_PREFIX, 2892) +HANDLE_BAT(APINT_TYPE_PREFIX, 2893) +HANDLE_BAT(APINT_TYPE_PREFIX, 2894) +HANDLE_BAT(APINT_TYPE_PREFIX, 2895) +HANDLE_BAT(APINT_TYPE_PREFIX, 2896) +HANDLE_BAT(APINT_TYPE_PREFIX, 2897) +HANDLE_BAT(APINT_TYPE_PREFIX, 2898) +HANDLE_BAT(APINT_TYPE_PREFIX, 2899) +HANDLE_BAT(APINT_TYPE_PREFIX, 2900) +HANDLE_BAT(APINT_TYPE_PREFIX, 2901) +HANDLE_BAT(APINT_TYPE_PREFIX, 2902) +HANDLE_BAT(APINT_TYPE_PREFIX, 2903) +HANDLE_BAT(APINT_TYPE_PREFIX, 2904) +HANDLE_BAT(APINT_TYPE_PREFIX, 2905) +HANDLE_BAT(APINT_TYPE_PREFIX, 2906) +HANDLE_BAT(APINT_TYPE_PREFIX, 2907) +HANDLE_BAT(APINT_TYPE_PREFIX, 2908) +HANDLE_BAT(APINT_TYPE_PREFIX, 2909) +HANDLE_BAT(APINT_TYPE_PREFIX, 2910) +HANDLE_BAT(APINT_TYPE_PREFIX, 2911) +HANDLE_BAT(APINT_TYPE_PREFIX, 2912) +HANDLE_BAT(APINT_TYPE_PREFIX, 2913) +HANDLE_BAT(APINT_TYPE_PREFIX, 2914) +HANDLE_BAT(APINT_TYPE_PREFIX, 2915) +HANDLE_BAT(APINT_TYPE_PREFIX, 2916) +HANDLE_BAT(APINT_TYPE_PREFIX, 2917) +HANDLE_BAT(APINT_TYPE_PREFIX, 2918) +HANDLE_BAT(APINT_TYPE_PREFIX, 2919) +HANDLE_BAT(APINT_TYPE_PREFIX, 2920) +HANDLE_BAT(APINT_TYPE_PREFIX, 2921) +HANDLE_BAT(APINT_TYPE_PREFIX, 2922) +HANDLE_BAT(APINT_TYPE_PREFIX, 2923) +HANDLE_BAT(APINT_TYPE_PREFIX, 2924) +HANDLE_BAT(APINT_TYPE_PREFIX, 2925) +HANDLE_BAT(APINT_TYPE_PREFIX, 2926) +HANDLE_BAT(APINT_TYPE_PREFIX, 2927) +HANDLE_BAT(APINT_TYPE_PREFIX, 2928) +HANDLE_BAT(APINT_TYPE_PREFIX, 2929) +HANDLE_BAT(APINT_TYPE_PREFIX, 2930) +HANDLE_BAT(APINT_TYPE_PREFIX, 2931) +HANDLE_BAT(APINT_TYPE_PREFIX, 2932) +HANDLE_BAT(APINT_TYPE_PREFIX, 2933) +HANDLE_BAT(APINT_TYPE_PREFIX, 2934) +HANDLE_BAT(APINT_TYPE_PREFIX, 2935) +HANDLE_BAT(APINT_TYPE_PREFIX, 2936) +HANDLE_BAT(APINT_TYPE_PREFIX, 2937) +HANDLE_BAT(APINT_TYPE_PREFIX, 2938) +HANDLE_BAT(APINT_TYPE_PREFIX, 2939) +HANDLE_BAT(APINT_TYPE_PREFIX, 2940) +HANDLE_BAT(APINT_TYPE_PREFIX, 2941) +HANDLE_BAT(APINT_TYPE_PREFIX, 2942) +HANDLE_BAT(APINT_TYPE_PREFIX, 2943) +HANDLE_BAT(APINT_TYPE_PREFIX, 2944) +HANDLE_BAT(APINT_TYPE_PREFIX, 2945) +HANDLE_BAT(APINT_TYPE_PREFIX, 2946) +HANDLE_BAT(APINT_TYPE_PREFIX, 2947) +HANDLE_BAT(APINT_TYPE_PREFIX, 2948) +HANDLE_BAT(APINT_TYPE_PREFIX, 2949) +HANDLE_BAT(APINT_TYPE_PREFIX, 2950) +HANDLE_BAT(APINT_TYPE_PREFIX, 2951) +HANDLE_BAT(APINT_TYPE_PREFIX, 2952) +HANDLE_BAT(APINT_TYPE_PREFIX, 2953) +HANDLE_BAT(APINT_TYPE_PREFIX, 2954) +HANDLE_BAT(APINT_TYPE_PREFIX, 2955) +HANDLE_BAT(APINT_TYPE_PREFIX, 2956) +HANDLE_BAT(APINT_TYPE_PREFIX, 2957) +HANDLE_BAT(APINT_TYPE_PREFIX, 2958) +HANDLE_BAT(APINT_TYPE_PREFIX, 2959) +HANDLE_BAT(APINT_TYPE_PREFIX, 2960) +HANDLE_BAT(APINT_TYPE_PREFIX, 2961) +HANDLE_BAT(APINT_TYPE_PREFIX, 2962) +HANDLE_BAT(APINT_TYPE_PREFIX, 2963) +HANDLE_BAT(APINT_TYPE_PREFIX, 2964) +HANDLE_BAT(APINT_TYPE_PREFIX, 2965) +HANDLE_BAT(APINT_TYPE_PREFIX, 2966) +HANDLE_BAT(APINT_TYPE_PREFIX, 2967) +HANDLE_BAT(APINT_TYPE_PREFIX, 2968) +HANDLE_BAT(APINT_TYPE_PREFIX, 2969) +HANDLE_BAT(APINT_TYPE_PREFIX, 2970) +HANDLE_BAT(APINT_TYPE_PREFIX, 2971) +HANDLE_BAT(APINT_TYPE_PREFIX, 2972) +HANDLE_BAT(APINT_TYPE_PREFIX, 2973) +HANDLE_BAT(APINT_TYPE_PREFIX, 2974) +HANDLE_BAT(APINT_TYPE_PREFIX, 2975) +HANDLE_BAT(APINT_TYPE_PREFIX, 2976) +HANDLE_BAT(APINT_TYPE_PREFIX, 2977) +HANDLE_BAT(APINT_TYPE_PREFIX, 2978) +HANDLE_BAT(APINT_TYPE_PREFIX, 2979) +HANDLE_BAT(APINT_TYPE_PREFIX, 2980) +HANDLE_BAT(APINT_TYPE_PREFIX, 2981) +HANDLE_BAT(APINT_TYPE_PREFIX, 2982) +HANDLE_BAT(APINT_TYPE_PREFIX, 2983) +HANDLE_BAT(APINT_TYPE_PREFIX, 2984) +HANDLE_BAT(APINT_TYPE_PREFIX, 2985) +HANDLE_BAT(APINT_TYPE_PREFIX, 2986) +HANDLE_BAT(APINT_TYPE_PREFIX, 2987) +HANDLE_BAT(APINT_TYPE_PREFIX, 2988) +HANDLE_BAT(APINT_TYPE_PREFIX, 2989) +HANDLE_BAT(APINT_TYPE_PREFIX, 2990) +HANDLE_BAT(APINT_TYPE_PREFIX, 2991) +HANDLE_BAT(APINT_TYPE_PREFIX, 2992) +HANDLE_BAT(APINT_TYPE_PREFIX, 2993) +HANDLE_BAT(APINT_TYPE_PREFIX, 2994) +HANDLE_BAT(APINT_TYPE_PREFIX, 2995) +HANDLE_BAT(APINT_TYPE_PREFIX, 2996) +HANDLE_BAT(APINT_TYPE_PREFIX, 2997) +HANDLE_BAT(APINT_TYPE_PREFIX, 2998) +HANDLE_BAT(APINT_TYPE_PREFIX, 2999) +HANDLE_BAT(APINT_TYPE_PREFIX, 3000) +HANDLE_BAT(APINT_TYPE_PREFIX, 3001) +HANDLE_BAT(APINT_TYPE_PREFIX, 3002) +HANDLE_BAT(APINT_TYPE_PREFIX, 3003) +HANDLE_BAT(APINT_TYPE_PREFIX, 3004) +HANDLE_BAT(APINT_TYPE_PREFIX, 3005) +HANDLE_BAT(APINT_TYPE_PREFIX, 3006) +HANDLE_BAT(APINT_TYPE_PREFIX, 3007) +HANDLE_BAT(APINT_TYPE_PREFIX, 3008) +HANDLE_BAT(APINT_TYPE_PREFIX, 3009) +HANDLE_BAT(APINT_TYPE_PREFIX, 3010) +HANDLE_BAT(APINT_TYPE_PREFIX, 3011) +HANDLE_BAT(APINT_TYPE_PREFIX, 3012) +HANDLE_BAT(APINT_TYPE_PREFIX, 3013) +HANDLE_BAT(APINT_TYPE_PREFIX, 3014) +HANDLE_BAT(APINT_TYPE_PREFIX, 3015) +HANDLE_BAT(APINT_TYPE_PREFIX, 3016) +HANDLE_BAT(APINT_TYPE_PREFIX, 3017) +HANDLE_BAT(APINT_TYPE_PREFIX, 3018) +HANDLE_BAT(APINT_TYPE_PREFIX, 3019) +HANDLE_BAT(APINT_TYPE_PREFIX, 3020) +HANDLE_BAT(APINT_TYPE_PREFIX, 3021) +HANDLE_BAT(APINT_TYPE_PREFIX, 3022) +HANDLE_BAT(APINT_TYPE_PREFIX, 3023) +HANDLE_BAT(APINT_TYPE_PREFIX, 3024) +HANDLE_BAT(APINT_TYPE_PREFIX, 3025) +HANDLE_BAT(APINT_TYPE_PREFIX, 3026) +HANDLE_BAT(APINT_TYPE_PREFIX, 3027) +HANDLE_BAT(APINT_TYPE_PREFIX, 3028) +HANDLE_BAT(APINT_TYPE_PREFIX, 3029) +HANDLE_BAT(APINT_TYPE_PREFIX, 3030) +HANDLE_BAT(APINT_TYPE_PREFIX, 3031) +HANDLE_BAT(APINT_TYPE_PREFIX, 3032) +HANDLE_BAT(APINT_TYPE_PREFIX, 3033) +HANDLE_BAT(APINT_TYPE_PREFIX, 3034) +HANDLE_BAT(APINT_TYPE_PREFIX, 3035) +HANDLE_BAT(APINT_TYPE_PREFIX, 3036) +HANDLE_BAT(APINT_TYPE_PREFIX, 3037) +HANDLE_BAT(APINT_TYPE_PREFIX, 3038) +HANDLE_BAT(APINT_TYPE_PREFIX, 3039) +HANDLE_BAT(APINT_TYPE_PREFIX, 3040) +HANDLE_BAT(APINT_TYPE_PREFIX, 3041) +HANDLE_BAT(APINT_TYPE_PREFIX, 3042) +HANDLE_BAT(APINT_TYPE_PREFIX, 3043) +HANDLE_BAT(APINT_TYPE_PREFIX, 3044) +HANDLE_BAT(APINT_TYPE_PREFIX, 3045) +HANDLE_BAT(APINT_TYPE_PREFIX, 3046) +HANDLE_BAT(APINT_TYPE_PREFIX, 3047) +HANDLE_BAT(APINT_TYPE_PREFIX, 3048) +HANDLE_BAT(APINT_TYPE_PREFIX, 3049) +HANDLE_BAT(APINT_TYPE_PREFIX, 3050) +HANDLE_BAT(APINT_TYPE_PREFIX, 3051) +HANDLE_BAT(APINT_TYPE_PREFIX, 3052) +HANDLE_BAT(APINT_TYPE_PREFIX, 3053) +HANDLE_BAT(APINT_TYPE_PREFIX, 3054) +HANDLE_BAT(APINT_TYPE_PREFIX, 3055) +HANDLE_BAT(APINT_TYPE_PREFIX, 3056) +HANDLE_BAT(APINT_TYPE_PREFIX, 3057) +HANDLE_BAT(APINT_TYPE_PREFIX, 3058) +HANDLE_BAT(APINT_TYPE_PREFIX, 3059) +HANDLE_BAT(APINT_TYPE_PREFIX, 3060) +HANDLE_BAT(APINT_TYPE_PREFIX, 3061) +HANDLE_BAT(APINT_TYPE_PREFIX, 3062) +HANDLE_BAT(APINT_TYPE_PREFIX, 3063) +HANDLE_BAT(APINT_TYPE_PREFIX, 3064) +HANDLE_BAT(APINT_TYPE_PREFIX, 3065) +HANDLE_BAT(APINT_TYPE_PREFIX, 3066) +HANDLE_BAT(APINT_TYPE_PREFIX, 3067) +HANDLE_BAT(APINT_TYPE_PREFIX, 3068) +HANDLE_BAT(APINT_TYPE_PREFIX, 3069) +HANDLE_BAT(APINT_TYPE_PREFIX, 3070) +HANDLE_BAT(APINT_TYPE_PREFIX, 3071) +HANDLE_BAT(APINT_TYPE_PREFIX, 3072) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 3 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 3073) +HANDLE_BAT(, 3074) +HANDLE_BAT(, 3075) +HANDLE_BAT(, 3076) +HANDLE_BAT(, 3077) +HANDLE_BAT(, 3078) +HANDLE_BAT(, 3079) +HANDLE_BAT(, 3080) +HANDLE_BAT(, 3081) +HANDLE_BAT(, 3082) +HANDLE_BAT(, 3083) +HANDLE_BAT(, 3084) +HANDLE_BAT(, 3085) +HANDLE_BAT(, 3086) +HANDLE_BAT(, 3087) +HANDLE_BAT(, 3088) +HANDLE_BAT(, 3089) +HANDLE_BAT(, 3090) +HANDLE_BAT(, 3091) +HANDLE_BAT(, 3092) +HANDLE_BAT(, 3093) +HANDLE_BAT(, 3094) +HANDLE_BAT(, 3095) +HANDLE_BAT(, 3096) +HANDLE_BAT(, 3097) +HANDLE_BAT(, 3098) +HANDLE_BAT(, 3099) +HANDLE_BAT(, 3100) +HANDLE_BAT(, 3101) +HANDLE_BAT(, 3102) +HANDLE_BAT(, 3103) +HANDLE_BAT(, 3104) +HANDLE_BAT(, 3105) +HANDLE_BAT(, 3106) +HANDLE_BAT(, 3107) +HANDLE_BAT(, 3108) +HANDLE_BAT(, 3109) +HANDLE_BAT(, 3110) +HANDLE_BAT(, 3111) +HANDLE_BAT(, 3112) +HANDLE_BAT(, 3113) +HANDLE_BAT(, 3114) +HANDLE_BAT(, 3115) +HANDLE_BAT(, 3116) +HANDLE_BAT(, 3117) +HANDLE_BAT(, 3118) +HANDLE_BAT(, 3119) +HANDLE_BAT(, 3120) +HANDLE_BAT(, 3121) +HANDLE_BAT(, 3122) +HANDLE_BAT(, 3123) +HANDLE_BAT(, 3124) +HANDLE_BAT(, 3125) +HANDLE_BAT(, 3126) +HANDLE_BAT(, 3127) +HANDLE_BAT(, 3128) +HANDLE_BAT(, 3129) +HANDLE_BAT(, 3130) +HANDLE_BAT(, 3131) +HANDLE_BAT(, 3132) +HANDLE_BAT(, 3133) +HANDLE_BAT(, 3134) +HANDLE_BAT(, 3135) +HANDLE_BAT(, 3136) +HANDLE_BAT(, 3137) +HANDLE_BAT(, 3138) +HANDLE_BAT(, 3139) +HANDLE_BAT(, 3140) +HANDLE_BAT(, 3141) +HANDLE_BAT(, 3142) +HANDLE_BAT(, 3143) +HANDLE_BAT(, 3144) +HANDLE_BAT(, 3145) +HANDLE_BAT(, 3146) +HANDLE_BAT(, 3147) +HANDLE_BAT(, 3148) +HANDLE_BAT(, 3149) +HANDLE_BAT(, 3150) +HANDLE_BAT(, 3151) +HANDLE_BAT(, 3152) +HANDLE_BAT(, 3153) +HANDLE_BAT(, 3154) +HANDLE_BAT(, 3155) +HANDLE_BAT(, 3156) +HANDLE_BAT(, 3157) +HANDLE_BAT(, 3158) +HANDLE_BAT(, 3159) +HANDLE_BAT(, 3160) +HANDLE_BAT(, 3161) +HANDLE_BAT(, 3162) +HANDLE_BAT(, 3163) +HANDLE_BAT(, 3164) +HANDLE_BAT(, 3165) +HANDLE_BAT(, 3166) +HANDLE_BAT(, 3167) +HANDLE_BAT(, 3168) +HANDLE_BAT(, 3169) +HANDLE_BAT(, 3170) +HANDLE_BAT(, 3171) +HANDLE_BAT(, 3172) +HANDLE_BAT(, 3173) +HANDLE_BAT(, 3174) +HANDLE_BAT(, 3175) +HANDLE_BAT(, 3176) +HANDLE_BAT(, 3177) +HANDLE_BAT(, 3178) +HANDLE_BAT(, 3179) +HANDLE_BAT(, 3180) +HANDLE_BAT(, 3181) +HANDLE_BAT(, 3182) +HANDLE_BAT(, 3183) +HANDLE_BAT(, 3184) +HANDLE_BAT(, 3185) +HANDLE_BAT(, 3186) +HANDLE_BAT(, 3187) +HANDLE_BAT(, 3188) +HANDLE_BAT(, 3189) +HANDLE_BAT(, 3190) +HANDLE_BAT(, 3191) +HANDLE_BAT(, 3192) +HANDLE_BAT(, 3193) +HANDLE_BAT(, 3194) +HANDLE_BAT(, 3195) +HANDLE_BAT(, 3196) +HANDLE_BAT(, 3197) +HANDLE_BAT(, 3198) +HANDLE_BAT(, 3199) +HANDLE_BAT(, 3200) +HANDLE_BAT(, 3201) +HANDLE_BAT(, 3202) +HANDLE_BAT(, 3203) +HANDLE_BAT(, 3204) +HANDLE_BAT(, 3205) +HANDLE_BAT(, 3206) +HANDLE_BAT(, 3207) +HANDLE_BAT(, 3208) +HANDLE_BAT(, 3209) +HANDLE_BAT(, 3210) +HANDLE_BAT(, 3211) +HANDLE_BAT(, 3212) +HANDLE_BAT(, 3213) +HANDLE_BAT(, 3214) +HANDLE_BAT(, 3215) +HANDLE_BAT(, 3216) +HANDLE_BAT(, 3217) +HANDLE_BAT(, 3218) +HANDLE_BAT(, 3219) +HANDLE_BAT(, 3220) +HANDLE_BAT(, 3221) +HANDLE_BAT(, 3222) +HANDLE_BAT(, 3223) +HANDLE_BAT(, 3224) +HANDLE_BAT(, 3225) +HANDLE_BAT(, 3226) +HANDLE_BAT(, 3227) +HANDLE_BAT(, 3228) +HANDLE_BAT(, 3229) +HANDLE_BAT(, 3230) +HANDLE_BAT(, 3231) +HANDLE_BAT(, 3232) +HANDLE_BAT(, 3233) +HANDLE_BAT(, 3234) +HANDLE_BAT(, 3235) +HANDLE_BAT(, 3236) +HANDLE_BAT(, 3237) +HANDLE_BAT(, 3238) +HANDLE_BAT(, 3239) +HANDLE_BAT(, 3240) +HANDLE_BAT(, 3241) +HANDLE_BAT(, 3242) +HANDLE_BAT(, 3243) +HANDLE_BAT(, 3244) +HANDLE_BAT(, 3245) +HANDLE_BAT(, 3246) +HANDLE_BAT(, 3247) +HANDLE_BAT(, 3248) +HANDLE_BAT(, 3249) +HANDLE_BAT(, 3250) +HANDLE_BAT(, 3251) +HANDLE_BAT(, 3252) +HANDLE_BAT(, 3253) +HANDLE_BAT(, 3254) +HANDLE_BAT(, 3255) +HANDLE_BAT(, 3256) +HANDLE_BAT(, 3257) +HANDLE_BAT(, 3258) +HANDLE_BAT(, 3259) +HANDLE_BAT(, 3260) +HANDLE_BAT(, 3261) +HANDLE_BAT(, 3262) +HANDLE_BAT(, 3263) +HANDLE_BAT(, 3264) +HANDLE_BAT(, 3265) +HANDLE_BAT(, 3266) +HANDLE_BAT(, 3267) +HANDLE_BAT(, 3268) +HANDLE_BAT(, 3269) +HANDLE_BAT(, 3270) +HANDLE_BAT(, 3271) +HANDLE_BAT(, 3272) +HANDLE_BAT(, 3273) +HANDLE_BAT(, 3274) +HANDLE_BAT(, 3275) +HANDLE_BAT(, 3276) +HANDLE_BAT(, 3277) +HANDLE_BAT(, 3278) +HANDLE_BAT(, 3279) +HANDLE_BAT(, 3280) +HANDLE_BAT(, 3281) +HANDLE_BAT(, 3282) +HANDLE_BAT(, 3283) +HANDLE_BAT(, 3284) +HANDLE_BAT(, 3285) +HANDLE_BAT(, 3286) +HANDLE_BAT(, 3287) +HANDLE_BAT(, 3288) +HANDLE_BAT(, 3289) +HANDLE_BAT(, 3290) +HANDLE_BAT(, 3291) +HANDLE_BAT(, 3292) +HANDLE_BAT(, 3293) +HANDLE_BAT(, 3294) +HANDLE_BAT(, 3295) +HANDLE_BAT(, 3296) +HANDLE_BAT(, 3297) +HANDLE_BAT(, 3298) +HANDLE_BAT(, 3299) +HANDLE_BAT(, 3300) +HANDLE_BAT(, 3301) +HANDLE_BAT(, 3302) +HANDLE_BAT(, 3303) +HANDLE_BAT(, 3304) +HANDLE_BAT(, 3305) +HANDLE_BAT(, 3306) +HANDLE_BAT(, 3307) +HANDLE_BAT(, 3308) +HANDLE_BAT(, 3309) +HANDLE_BAT(, 3310) +HANDLE_BAT(, 3311) +HANDLE_BAT(, 3312) +HANDLE_BAT(, 3313) +HANDLE_BAT(, 3314) +HANDLE_BAT(, 3315) +HANDLE_BAT(, 3316) +HANDLE_BAT(, 3317) +HANDLE_BAT(, 3318) +HANDLE_BAT(, 3319) +HANDLE_BAT(, 3320) +HANDLE_BAT(, 3321) +HANDLE_BAT(, 3322) +HANDLE_BAT(, 3323) +HANDLE_BAT(, 3324) +HANDLE_BAT(, 3325) +HANDLE_BAT(, 3326) +HANDLE_BAT(, 3327) +HANDLE_BAT(, 3328) +HANDLE_BAT(, 3329) +HANDLE_BAT(, 3330) +HANDLE_BAT(, 3331) +HANDLE_BAT(, 3332) +HANDLE_BAT(, 3333) +HANDLE_BAT(, 3334) +HANDLE_BAT(, 3335) +HANDLE_BAT(, 3336) +HANDLE_BAT(, 3337) +HANDLE_BAT(, 3338) +HANDLE_BAT(, 3339) +HANDLE_BAT(, 3340) +HANDLE_BAT(, 3341) +HANDLE_BAT(, 3342) +HANDLE_BAT(, 3343) +HANDLE_BAT(, 3344) +HANDLE_BAT(, 3345) +HANDLE_BAT(, 3346) +HANDLE_BAT(, 3347) +HANDLE_BAT(, 3348) +HANDLE_BAT(, 3349) +HANDLE_BAT(, 3350) +HANDLE_BAT(, 3351) +HANDLE_BAT(, 3352) +HANDLE_BAT(, 3353) +HANDLE_BAT(, 3354) +HANDLE_BAT(, 3355) +HANDLE_BAT(, 3356) +HANDLE_BAT(, 3357) +HANDLE_BAT(, 3358) +HANDLE_BAT(, 3359) +HANDLE_BAT(, 3360) +HANDLE_BAT(, 3361) +HANDLE_BAT(, 3362) +HANDLE_BAT(, 3363) +HANDLE_BAT(, 3364) +HANDLE_BAT(, 3365) +HANDLE_BAT(, 3366) +HANDLE_BAT(, 3367) +HANDLE_BAT(, 3368) +HANDLE_BAT(, 3369) +HANDLE_BAT(, 3370) +HANDLE_BAT(, 3371) +HANDLE_BAT(, 3372) +HANDLE_BAT(, 3373) +HANDLE_BAT(, 3374) +HANDLE_BAT(, 3375) +HANDLE_BAT(, 3376) +HANDLE_BAT(, 3377) +HANDLE_BAT(, 3378) +HANDLE_BAT(, 3379) +HANDLE_BAT(, 3380) +HANDLE_BAT(, 3381) +HANDLE_BAT(, 3382) +HANDLE_BAT(, 3383) +HANDLE_BAT(, 3384) +HANDLE_BAT(, 3385) +HANDLE_BAT(, 3386) +HANDLE_BAT(, 3387) +HANDLE_BAT(, 3388) +HANDLE_BAT(, 3389) +HANDLE_BAT(, 3390) +HANDLE_BAT(, 3391) +HANDLE_BAT(, 3392) +HANDLE_BAT(, 3393) +HANDLE_BAT(, 3394) +HANDLE_BAT(, 3395) +HANDLE_BAT(, 3396) +HANDLE_BAT(, 3397) +HANDLE_BAT(, 3398) +HANDLE_BAT(, 3399) +HANDLE_BAT(, 3400) +HANDLE_BAT(, 3401) +HANDLE_BAT(, 3402) +HANDLE_BAT(, 3403) +HANDLE_BAT(, 3404) +HANDLE_BAT(, 3405) +HANDLE_BAT(, 3406) +HANDLE_BAT(, 3407) +HANDLE_BAT(, 3408) +HANDLE_BAT(, 3409) +HANDLE_BAT(, 3410) +HANDLE_BAT(, 3411) +HANDLE_BAT(, 3412) +HANDLE_BAT(, 3413) +HANDLE_BAT(, 3414) +HANDLE_BAT(, 3415) +HANDLE_BAT(, 3416) +HANDLE_BAT(, 3417) +HANDLE_BAT(, 3418) +HANDLE_BAT(, 3419) +HANDLE_BAT(, 3420) +HANDLE_BAT(, 3421) +HANDLE_BAT(, 3422) +HANDLE_BAT(, 3423) +HANDLE_BAT(, 3424) +HANDLE_BAT(, 3425) +HANDLE_BAT(, 3426) +HANDLE_BAT(, 3427) +HANDLE_BAT(, 3428) +HANDLE_BAT(, 3429) +HANDLE_BAT(, 3430) +HANDLE_BAT(, 3431) +HANDLE_BAT(, 3432) +HANDLE_BAT(, 3433) +HANDLE_BAT(, 3434) +HANDLE_BAT(, 3435) +HANDLE_BAT(, 3436) +HANDLE_BAT(, 3437) +HANDLE_BAT(, 3438) +HANDLE_BAT(, 3439) +HANDLE_BAT(, 3440) +HANDLE_BAT(, 3441) +HANDLE_BAT(, 3442) +HANDLE_BAT(, 3443) +HANDLE_BAT(, 3444) +HANDLE_BAT(, 3445) +HANDLE_BAT(, 3446) +HANDLE_BAT(, 3447) +HANDLE_BAT(, 3448) +HANDLE_BAT(, 3449) +HANDLE_BAT(, 3450) +HANDLE_BAT(, 3451) +HANDLE_BAT(, 3452) +HANDLE_BAT(, 3453) +HANDLE_BAT(, 3454) +HANDLE_BAT(, 3455) +HANDLE_BAT(, 3456) +HANDLE_BAT(, 3457) +HANDLE_BAT(, 3458) +HANDLE_BAT(, 3459) +HANDLE_BAT(, 3460) +HANDLE_BAT(, 3461) +HANDLE_BAT(, 3462) +HANDLE_BAT(, 3463) +HANDLE_BAT(, 3464) +HANDLE_BAT(, 3465) +HANDLE_BAT(, 3466) +HANDLE_BAT(, 3467) +HANDLE_BAT(, 3468) +HANDLE_BAT(, 3469) +HANDLE_BAT(, 3470) +HANDLE_BAT(, 3471) +HANDLE_BAT(, 3472) +HANDLE_BAT(, 3473) +HANDLE_BAT(, 3474) +HANDLE_BAT(, 3475) +HANDLE_BAT(, 3476) +HANDLE_BAT(, 3477) +HANDLE_BAT(, 3478) +HANDLE_BAT(, 3479) +HANDLE_BAT(, 3480) +HANDLE_BAT(, 3481) +HANDLE_BAT(, 3482) +HANDLE_BAT(, 3483) +HANDLE_BAT(, 3484) +HANDLE_BAT(, 3485) +HANDLE_BAT(, 3486) +HANDLE_BAT(, 3487) +HANDLE_BAT(, 3488) +HANDLE_BAT(, 3489) +HANDLE_BAT(, 3490) +HANDLE_BAT(, 3491) +HANDLE_BAT(, 3492) +HANDLE_BAT(, 3493) +HANDLE_BAT(, 3494) +HANDLE_BAT(, 3495) +HANDLE_BAT(, 3496) +HANDLE_BAT(, 3497) +HANDLE_BAT(, 3498) +HANDLE_BAT(, 3499) +HANDLE_BAT(, 3500) +HANDLE_BAT(, 3501) +HANDLE_BAT(, 3502) +HANDLE_BAT(, 3503) +HANDLE_BAT(, 3504) +HANDLE_BAT(, 3505) +HANDLE_BAT(, 3506) +HANDLE_BAT(, 3507) +HANDLE_BAT(, 3508) +HANDLE_BAT(, 3509) +HANDLE_BAT(, 3510) +HANDLE_BAT(, 3511) +HANDLE_BAT(, 3512) +HANDLE_BAT(, 3513) +HANDLE_BAT(, 3514) +HANDLE_BAT(, 3515) +HANDLE_BAT(, 3516) +HANDLE_BAT(, 3517) +HANDLE_BAT(, 3518) +HANDLE_BAT(, 3519) +HANDLE_BAT(, 3520) +HANDLE_BAT(, 3521) +HANDLE_BAT(, 3522) +HANDLE_BAT(, 3523) +HANDLE_BAT(, 3524) +HANDLE_BAT(, 3525) +HANDLE_BAT(, 3526) +HANDLE_BAT(, 3527) +HANDLE_BAT(, 3528) +HANDLE_BAT(, 3529) +HANDLE_BAT(, 3530) +HANDLE_BAT(, 3531) +HANDLE_BAT(, 3532) +HANDLE_BAT(, 3533) +HANDLE_BAT(, 3534) +HANDLE_BAT(, 3535) +HANDLE_BAT(, 3536) +HANDLE_BAT(, 3537) +HANDLE_BAT(, 3538) +HANDLE_BAT(, 3539) +HANDLE_BAT(, 3540) +HANDLE_BAT(, 3541) +HANDLE_BAT(, 3542) +HANDLE_BAT(, 3543) +HANDLE_BAT(, 3544) +HANDLE_BAT(, 3545) +HANDLE_BAT(, 3546) +HANDLE_BAT(, 3547) +HANDLE_BAT(, 3548) +HANDLE_BAT(, 3549) +HANDLE_BAT(, 3550) +HANDLE_BAT(, 3551) +HANDLE_BAT(, 3552) +HANDLE_BAT(, 3553) +HANDLE_BAT(, 3554) +HANDLE_BAT(, 3555) +HANDLE_BAT(, 3556) +HANDLE_BAT(, 3557) +HANDLE_BAT(, 3558) +HANDLE_BAT(, 3559) +HANDLE_BAT(, 3560) +HANDLE_BAT(, 3561) +HANDLE_BAT(, 3562) +HANDLE_BAT(, 3563) +HANDLE_BAT(, 3564) +HANDLE_BAT(, 3565) +HANDLE_BAT(, 3566) +HANDLE_BAT(, 3567) +HANDLE_BAT(, 3568) +HANDLE_BAT(, 3569) +HANDLE_BAT(, 3570) +HANDLE_BAT(, 3571) +HANDLE_BAT(, 3572) +HANDLE_BAT(, 3573) +HANDLE_BAT(, 3574) +HANDLE_BAT(, 3575) +HANDLE_BAT(, 3576) +HANDLE_BAT(, 3577) +HANDLE_BAT(, 3578) +HANDLE_BAT(, 3579) +HANDLE_BAT(, 3580) +HANDLE_BAT(, 3581) +HANDLE_BAT(, 3582) +HANDLE_BAT(, 3583) +HANDLE_BAT(, 3584) +HANDLE_BAT(, 3585) +HANDLE_BAT(, 3586) +HANDLE_BAT(, 3587) +HANDLE_BAT(, 3588) +HANDLE_BAT(, 3589) +HANDLE_BAT(, 3590) +HANDLE_BAT(, 3591) +HANDLE_BAT(, 3592) +HANDLE_BAT(, 3593) +HANDLE_BAT(, 3594) +HANDLE_BAT(, 3595) +HANDLE_BAT(, 3596) +HANDLE_BAT(, 3597) +HANDLE_BAT(, 3598) +HANDLE_BAT(, 3599) +HANDLE_BAT(, 3600) +HANDLE_BAT(, 3601) +HANDLE_BAT(, 3602) +HANDLE_BAT(, 3603) +HANDLE_BAT(, 3604) +HANDLE_BAT(, 3605) +HANDLE_BAT(, 3606) +HANDLE_BAT(, 3607) +HANDLE_BAT(, 3608) +HANDLE_BAT(, 3609) +HANDLE_BAT(, 3610) +HANDLE_BAT(, 3611) +HANDLE_BAT(, 3612) +HANDLE_BAT(, 3613) +HANDLE_BAT(, 3614) +HANDLE_BAT(, 3615) +HANDLE_BAT(, 3616) +HANDLE_BAT(, 3617) +HANDLE_BAT(, 3618) +HANDLE_BAT(, 3619) +HANDLE_BAT(, 3620) +HANDLE_BAT(, 3621) +HANDLE_BAT(, 3622) +HANDLE_BAT(, 3623) +HANDLE_BAT(, 3624) +HANDLE_BAT(, 3625) +HANDLE_BAT(, 3626) +HANDLE_BAT(, 3627) +HANDLE_BAT(, 3628) +HANDLE_BAT(, 3629) +HANDLE_BAT(, 3630) +HANDLE_BAT(, 3631) +HANDLE_BAT(, 3632) +HANDLE_BAT(, 3633) +HANDLE_BAT(, 3634) +HANDLE_BAT(, 3635) +HANDLE_BAT(, 3636) +HANDLE_BAT(, 3637) +HANDLE_BAT(, 3638) +HANDLE_BAT(, 3639) +HANDLE_BAT(, 3640) +HANDLE_BAT(, 3641) +HANDLE_BAT(, 3642) +HANDLE_BAT(, 3643) +HANDLE_BAT(, 3644) +HANDLE_BAT(, 3645) +HANDLE_BAT(, 3646) +HANDLE_BAT(, 3647) +HANDLE_BAT(, 3648) +HANDLE_BAT(, 3649) +HANDLE_BAT(, 3650) +HANDLE_BAT(, 3651) +HANDLE_BAT(, 3652) +HANDLE_BAT(, 3653) +HANDLE_BAT(, 3654) +HANDLE_BAT(, 3655) +HANDLE_BAT(, 3656) +HANDLE_BAT(, 3657) +HANDLE_BAT(, 3658) +HANDLE_BAT(, 3659) +HANDLE_BAT(, 3660) +HANDLE_BAT(, 3661) +HANDLE_BAT(, 3662) +HANDLE_BAT(, 3663) +HANDLE_BAT(, 3664) +HANDLE_BAT(, 3665) +HANDLE_BAT(, 3666) +HANDLE_BAT(, 3667) +HANDLE_BAT(, 3668) +HANDLE_BAT(, 3669) +HANDLE_BAT(, 3670) +HANDLE_BAT(, 3671) +HANDLE_BAT(, 3672) +HANDLE_BAT(, 3673) +HANDLE_BAT(, 3674) +HANDLE_BAT(, 3675) +HANDLE_BAT(, 3676) +HANDLE_BAT(, 3677) +HANDLE_BAT(, 3678) +HANDLE_BAT(, 3679) +HANDLE_BAT(, 3680) +HANDLE_BAT(, 3681) +HANDLE_BAT(, 3682) +HANDLE_BAT(, 3683) +HANDLE_BAT(, 3684) +HANDLE_BAT(, 3685) +HANDLE_BAT(, 3686) +HANDLE_BAT(, 3687) +HANDLE_BAT(, 3688) +HANDLE_BAT(, 3689) +HANDLE_BAT(, 3690) +HANDLE_BAT(, 3691) +HANDLE_BAT(, 3692) +HANDLE_BAT(, 3693) +HANDLE_BAT(, 3694) +HANDLE_BAT(, 3695) +HANDLE_BAT(, 3696) +HANDLE_BAT(, 3697) +HANDLE_BAT(, 3698) +HANDLE_BAT(, 3699) +HANDLE_BAT(, 3700) +HANDLE_BAT(, 3701) +HANDLE_BAT(, 3702) +HANDLE_BAT(, 3703) +HANDLE_BAT(, 3704) +HANDLE_BAT(, 3705) +HANDLE_BAT(, 3706) +HANDLE_BAT(, 3707) +HANDLE_BAT(, 3708) +HANDLE_BAT(, 3709) +HANDLE_BAT(, 3710) +HANDLE_BAT(, 3711) +HANDLE_BAT(, 3712) +HANDLE_BAT(, 3713) +HANDLE_BAT(, 3714) +HANDLE_BAT(, 3715) +HANDLE_BAT(, 3716) +HANDLE_BAT(, 3717) +HANDLE_BAT(, 3718) +HANDLE_BAT(, 3719) +HANDLE_BAT(, 3720) +HANDLE_BAT(, 3721) +HANDLE_BAT(, 3722) +HANDLE_BAT(, 3723) +HANDLE_BAT(, 3724) +HANDLE_BAT(, 3725) +HANDLE_BAT(, 3726) +HANDLE_BAT(, 3727) +HANDLE_BAT(, 3728) +HANDLE_BAT(, 3729) +HANDLE_BAT(, 3730) +HANDLE_BAT(, 3731) +HANDLE_BAT(, 3732) +HANDLE_BAT(, 3733) +HANDLE_BAT(, 3734) +HANDLE_BAT(, 3735) +HANDLE_BAT(, 3736) +HANDLE_BAT(, 3737) +HANDLE_BAT(, 3738) +HANDLE_BAT(, 3739) +HANDLE_BAT(, 3740) +HANDLE_BAT(, 3741) +HANDLE_BAT(, 3742) +HANDLE_BAT(, 3743) +HANDLE_BAT(, 3744) +HANDLE_BAT(, 3745) +HANDLE_BAT(, 3746) +HANDLE_BAT(, 3747) +HANDLE_BAT(, 3748) +HANDLE_BAT(, 3749) +HANDLE_BAT(, 3750) +HANDLE_BAT(, 3751) +HANDLE_BAT(, 3752) +HANDLE_BAT(, 3753) +HANDLE_BAT(, 3754) +HANDLE_BAT(, 3755) +HANDLE_BAT(, 3756) +HANDLE_BAT(, 3757) +HANDLE_BAT(, 3758) +HANDLE_BAT(, 3759) +HANDLE_BAT(, 3760) +HANDLE_BAT(, 3761) +HANDLE_BAT(, 3762) +HANDLE_BAT(, 3763) +HANDLE_BAT(, 3764) +HANDLE_BAT(, 3765) +HANDLE_BAT(, 3766) +HANDLE_BAT(, 3767) +HANDLE_BAT(, 3768) +HANDLE_BAT(, 3769) +HANDLE_BAT(, 3770) +HANDLE_BAT(, 3771) +HANDLE_BAT(, 3772) +HANDLE_BAT(, 3773) +HANDLE_BAT(, 3774) +HANDLE_BAT(, 3775) +HANDLE_BAT(, 3776) +HANDLE_BAT(, 3777) +HANDLE_BAT(, 3778) +HANDLE_BAT(, 3779) +HANDLE_BAT(, 3780) +HANDLE_BAT(, 3781) +HANDLE_BAT(, 3782) +HANDLE_BAT(, 3783) +HANDLE_BAT(, 3784) +HANDLE_BAT(, 3785) +HANDLE_BAT(, 3786) +HANDLE_BAT(, 3787) +HANDLE_BAT(, 3788) +HANDLE_BAT(, 3789) +HANDLE_BAT(, 3790) +HANDLE_BAT(, 3791) +HANDLE_BAT(, 3792) +HANDLE_BAT(, 3793) +HANDLE_BAT(, 3794) +HANDLE_BAT(, 3795) +HANDLE_BAT(, 3796) +HANDLE_BAT(, 3797) +HANDLE_BAT(, 3798) +HANDLE_BAT(, 3799) +HANDLE_BAT(, 3800) +HANDLE_BAT(, 3801) +HANDLE_BAT(, 3802) +HANDLE_BAT(, 3803) +HANDLE_BAT(, 3804) +HANDLE_BAT(, 3805) +HANDLE_BAT(, 3806) +HANDLE_BAT(, 3807) +HANDLE_BAT(, 3808) +HANDLE_BAT(, 3809) +HANDLE_BAT(, 3810) +HANDLE_BAT(, 3811) +HANDLE_BAT(, 3812) +HANDLE_BAT(, 3813) +HANDLE_BAT(, 3814) +HANDLE_BAT(, 3815) +HANDLE_BAT(, 3816) +HANDLE_BAT(, 3817) +HANDLE_BAT(, 3818) +HANDLE_BAT(, 3819) +HANDLE_BAT(, 3820) +HANDLE_BAT(, 3821) +HANDLE_BAT(, 3822) +HANDLE_BAT(, 3823) +HANDLE_BAT(, 3824) +HANDLE_BAT(, 3825) +HANDLE_BAT(, 3826) +HANDLE_BAT(, 3827) +HANDLE_BAT(, 3828) +HANDLE_BAT(, 3829) +HANDLE_BAT(, 3830) +HANDLE_BAT(, 3831) +HANDLE_BAT(, 3832) +HANDLE_BAT(, 3833) +HANDLE_BAT(, 3834) +HANDLE_BAT(, 3835) +HANDLE_BAT(, 3836) +HANDLE_BAT(, 3837) +HANDLE_BAT(, 3838) +HANDLE_BAT(, 3839) +HANDLE_BAT(, 3840) +HANDLE_BAT(, 3841) +HANDLE_BAT(, 3842) +HANDLE_BAT(, 3843) +HANDLE_BAT(, 3844) +HANDLE_BAT(, 3845) +HANDLE_BAT(, 3846) +HANDLE_BAT(, 3847) +HANDLE_BAT(, 3848) +HANDLE_BAT(, 3849) +HANDLE_BAT(, 3850) +HANDLE_BAT(, 3851) +HANDLE_BAT(, 3852) +HANDLE_BAT(, 3853) +HANDLE_BAT(, 3854) +HANDLE_BAT(, 3855) +HANDLE_BAT(, 3856) +HANDLE_BAT(, 3857) +HANDLE_BAT(, 3858) +HANDLE_BAT(, 3859) +HANDLE_BAT(, 3860) +HANDLE_BAT(, 3861) +HANDLE_BAT(, 3862) +HANDLE_BAT(, 3863) +HANDLE_BAT(, 3864) +HANDLE_BAT(, 3865) +HANDLE_BAT(, 3866) +HANDLE_BAT(, 3867) +HANDLE_BAT(, 3868) +HANDLE_BAT(, 3869) +HANDLE_BAT(, 3870) +HANDLE_BAT(, 3871) +HANDLE_BAT(, 3872) +HANDLE_BAT(, 3873) +HANDLE_BAT(, 3874) +HANDLE_BAT(, 3875) +HANDLE_BAT(, 3876) +HANDLE_BAT(, 3877) +HANDLE_BAT(, 3878) +HANDLE_BAT(, 3879) +HANDLE_BAT(, 3880) +HANDLE_BAT(, 3881) +HANDLE_BAT(, 3882) +HANDLE_BAT(, 3883) +HANDLE_BAT(, 3884) +HANDLE_BAT(, 3885) +HANDLE_BAT(, 3886) +HANDLE_BAT(, 3887) +HANDLE_BAT(, 3888) +HANDLE_BAT(, 3889) +HANDLE_BAT(, 3890) +HANDLE_BAT(, 3891) +HANDLE_BAT(, 3892) +HANDLE_BAT(, 3893) +HANDLE_BAT(, 3894) +HANDLE_BAT(, 3895) +HANDLE_BAT(, 3896) +HANDLE_BAT(, 3897) +HANDLE_BAT(, 3898) +HANDLE_BAT(, 3899) +HANDLE_BAT(, 3900) +HANDLE_BAT(, 3901) +HANDLE_BAT(, 3902) +HANDLE_BAT(, 3903) +HANDLE_BAT(, 3904) +HANDLE_BAT(, 3905) +HANDLE_BAT(, 3906) +HANDLE_BAT(, 3907) +HANDLE_BAT(, 3908) +HANDLE_BAT(, 3909) +HANDLE_BAT(, 3910) +HANDLE_BAT(, 3911) +HANDLE_BAT(, 3912) +HANDLE_BAT(, 3913) +HANDLE_BAT(, 3914) +HANDLE_BAT(, 3915) +HANDLE_BAT(, 3916) +HANDLE_BAT(, 3917) +HANDLE_BAT(, 3918) +HANDLE_BAT(, 3919) +HANDLE_BAT(, 3920) +HANDLE_BAT(, 3921) +HANDLE_BAT(, 3922) +HANDLE_BAT(, 3923) +HANDLE_BAT(, 3924) +HANDLE_BAT(, 3925) +HANDLE_BAT(, 3926) +HANDLE_BAT(, 3927) +HANDLE_BAT(, 3928) +HANDLE_BAT(, 3929) +HANDLE_BAT(, 3930) +HANDLE_BAT(, 3931) +HANDLE_BAT(, 3932) +HANDLE_BAT(, 3933) +HANDLE_BAT(, 3934) +HANDLE_BAT(, 3935) +HANDLE_BAT(, 3936) +HANDLE_BAT(, 3937) +HANDLE_BAT(, 3938) +HANDLE_BAT(, 3939) +HANDLE_BAT(, 3940) +HANDLE_BAT(, 3941) +HANDLE_BAT(, 3942) +HANDLE_BAT(, 3943) +HANDLE_BAT(, 3944) +HANDLE_BAT(, 3945) +HANDLE_BAT(, 3946) +HANDLE_BAT(, 3947) +HANDLE_BAT(, 3948) +HANDLE_BAT(, 3949) +HANDLE_BAT(, 3950) +HANDLE_BAT(, 3951) +HANDLE_BAT(, 3952) +HANDLE_BAT(, 3953) +HANDLE_BAT(, 3954) +HANDLE_BAT(, 3955) +HANDLE_BAT(, 3956) +HANDLE_BAT(, 3957) +HANDLE_BAT(, 3958) +HANDLE_BAT(, 3959) +HANDLE_BAT(, 3960) +HANDLE_BAT(, 3961) +HANDLE_BAT(, 3962) +HANDLE_BAT(, 3963) +HANDLE_BAT(, 3964) +HANDLE_BAT(, 3965) +HANDLE_BAT(, 3966) +HANDLE_BAT(, 3967) +HANDLE_BAT(, 3968) +HANDLE_BAT(, 3969) +HANDLE_BAT(, 3970) +HANDLE_BAT(, 3971) +HANDLE_BAT(, 3972) +HANDLE_BAT(, 3973) +HANDLE_BAT(, 3974) +HANDLE_BAT(, 3975) +HANDLE_BAT(, 3976) +HANDLE_BAT(, 3977) +HANDLE_BAT(, 3978) +HANDLE_BAT(, 3979) +HANDLE_BAT(, 3980) +HANDLE_BAT(, 3981) +HANDLE_BAT(, 3982) +HANDLE_BAT(, 3983) +HANDLE_BAT(, 3984) +HANDLE_BAT(, 3985) +HANDLE_BAT(, 3986) +HANDLE_BAT(, 3987) +HANDLE_BAT(, 3988) +HANDLE_BAT(, 3989) +HANDLE_BAT(, 3990) +HANDLE_BAT(, 3991) +HANDLE_BAT(, 3992) +HANDLE_BAT(, 3993) +HANDLE_BAT(, 3994) +HANDLE_BAT(, 3995) +HANDLE_BAT(, 3996) +HANDLE_BAT(, 3997) +HANDLE_BAT(, 3998) +HANDLE_BAT(, 3999) +HANDLE_BAT(, 4000) +HANDLE_BAT(, 4001) +HANDLE_BAT(, 4002) +HANDLE_BAT(, 4003) +HANDLE_BAT(, 4004) +HANDLE_BAT(, 4005) +HANDLE_BAT(, 4006) +HANDLE_BAT(, 4007) +HANDLE_BAT(, 4008) +HANDLE_BAT(, 4009) +HANDLE_BAT(, 4010) +HANDLE_BAT(, 4011) +HANDLE_BAT(, 4012) +HANDLE_BAT(, 4013) +HANDLE_BAT(, 4014) +HANDLE_BAT(, 4015) +HANDLE_BAT(, 4016) +HANDLE_BAT(, 4017) +HANDLE_BAT(, 4018) +HANDLE_BAT(, 4019) +HANDLE_BAT(, 4020) +HANDLE_BAT(, 4021) +HANDLE_BAT(, 4022) +HANDLE_BAT(, 4023) +HANDLE_BAT(, 4024) +HANDLE_BAT(, 4025) +HANDLE_BAT(, 4026) +HANDLE_BAT(, 4027) +HANDLE_BAT(, 4028) +HANDLE_BAT(, 4029) +HANDLE_BAT(, 4030) +HANDLE_BAT(, 4031) +HANDLE_BAT(, 4032) +HANDLE_BAT(, 4033) +HANDLE_BAT(, 4034) +HANDLE_BAT(, 4035) +HANDLE_BAT(, 4036) +HANDLE_BAT(, 4037) +HANDLE_BAT(, 4038) +HANDLE_BAT(, 4039) +HANDLE_BAT(, 4040) +HANDLE_BAT(, 4041) +HANDLE_BAT(, 4042) +HANDLE_BAT(, 4043) +HANDLE_BAT(, 4044) +HANDLE_BAT(, 4045) +HANDLE_BAT(, 4046) +HANDLE_BAT(, 4047) +HANDLE_BAT(, 4048) +HANDLE_BAT(, 4049) +HANDLE_BAT(, 4050) +HANDLE_BAT(, 4051) +HANDLE_BAT(, 4052) +HANDLE_BAT(, 4053) +HANDLE_BAT(, 4054) +HANDLE_BAT(, 4055) +HANDLE_BAT(, 4056) +HANDLE_BAT(, 4057) +HANDLE_BAT(, 4058) +HANDLE_BAT(, 4059) +HANDLE_BAT(, 4060) +HANDLE_BAT(, 4061) +HANDLE_BAT(, 4062) +HANDLE_BAT(, 4063) +HANDLE_BAT(, 4064) +HANDLE_BAT(, 4065) +HANDLE_BAT(, 4066) +HANDLE_BAT(, 4067) +HANDLE_BAT(, 4068) +HANDLE_BAT(, 4069) +HANDLE_BAT(, 4070) +HANDLE_BAT(, 4071) +HANDLE_BAT(, 4072) +HANDLE_BAT(, 4073) +HANDLE_BAT(, 4074) +HANDLE_BAT(, 4075) +HANDLE_BAT(, 4076) +HANDLE_BAT(, 4077) +HANDLE_BAT(, 4078) +HANDLE_BAT(, 4079) +HANDLE_BAT(, 4080) +HANDLE_BAT(, 4081) +HANDLE_BAT(, 4082) +HANDLE_BAT(, 4083) +HANDLE_BAT(, 4084) +HANDLE_BAT(, 4085) +HANDLE_BAT(, 4086) +HANDLE_BAT(, 4087) +HANDLE_BAT(, 4088) +HANDLE_BAT(, 4089) +HANDLE_BAT(, 4090) +HANDLE_BAT(, 4091) +HANDLE_BAT(, 4092) +HANDLE_BAT(, 4093) +HANDLE_BAT(, 4094) +HANDLE_BAT(, 4095) +HANDLE_BAT(, 4096) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 3073) +HANDLE_BAT(APINT_TYPE_PREFIX, 3074) +HANDLE_BAT(APINT_TYPE_PREFIX, 3075) +HANDLE_BAT(APINT_TYPE_PREFIX, 3076) +HANDLE_BAT(APINT_TYPE_PREFIX, 3077) +HANDLE_BAT(APINT_TYPE_PREFIX, 3078) +HANDLE_BAT(APINT_TYPE_PREFIX, 3079) +HANDLE_BAT(APINT_TYPE_PREFIX, 3080) +HANDLE_BAT(APINT_TYPE_PREFIX, 3081) +HANDLE_BAT(APINT_TYPE_PREFIX, 3082) +HANDLE_BAT(APINT_TYPE_PREFIX, 3083) +HANDLE_BAT(APINT_TYPE_PREFIX, 3084) +HANDLE_BAT(APINT_TYPE_PREFIX, 3085) +HANDLE_BAT(APINT_TYPE_PREFIX, 3086) +HANDLE_BAT(APINT_TYPE_PREFIX, 3087) +HANDLE_BAT(APINT_TYPE_PREFIX, 3088) +HANDLE_BAT(APINT_TYPE_PREFIX, 3089) +HANDLE_BAT(APINT_TYPE_PREFIX, 3090) +HANDLE_BAT(APINT_TYPE_PREFIX, 3091) +HANDLE_BAT(APINT_TYPE_PREFIX, 3092) +HANDLE_BAT(APINT_TYPE_PREFIX, 3093) +HANDLE_BAT(APINT_TYPE_PREFIX, 3094) +HANDLE_BAT(APINT_TYPE_PREFIX, 3095) +HANDLE_BAT(APINT_TYPE_PREFIX, 3096) +HANDLE_BAT(APINT_TYPE_PREFIX, 3097) +HANDLE_BAT(APINT_TYPE_PREFIX, 3098) +HANDLE_BAT(APINT_TYPE_PREFIX, 3099) +HANDLE_BAT(APINT_TYPE_PREFIX, 3100) +HANDLE_BAT(APINT_TYPE_PREFIX, 3101) +HANDLE_BAT(APINT_TYPE_PREFIX, 3102) +HANDLE_BAT(APINT_TYPE_PREFIX, 3103) +HANDLE_BAT(APINT_TYPE_PREFIX, 3104) +HANDLE_BAT(APINT_TYPE_PREFIX, 3105) +HANDLE_BAT(APINT_TYPE_PREFIX, 3106) +HANDLE_BAT(APINT_TYPE_PREFIX, 3107) +HANDLE_BAT(APINT_TYPE_PREFIX, 3108) +HANDLE_BAT(APINT_TYPE_PREFIX, 3109) +HANDLE_BAT(APINT_TYPE_PREFIX, 3110) +HANDLE_BAT(APINT_TYPE_PREFIX, 3111) +HANDLE_BAT(APINT_TYPE_PREFIX, 3112) +HANDLE_BAT(APINT_TYPE_PREFIX, 3113) +HANDLE_BAT(APINT_TYPE_PREFIX, 3114) +HANDLE_BAT(APINT_TYPE_PREFIX, 3115) +HANDLE_BAT(APINT_TYPE_PREFIX, 3116) +HANDLE_BAT(APINT_TYPE_PREFIX, 3117) +HANDLE_BAT(APINT_TYPE_PREFIX, 3118) +HANDLE_BAT(APINT_TYPE_PREFIX, 3119) +HANDLE_BAT(APINT_TYPE_PREFIX, 3120) +HANDLE_BAT(APINT_TYPE_PREFIX, 3121) +HANDLE_BAT(APINT_TYPE_PREFIX, 3122) +HANDLE_BAT(APINT_TYPE_PREFIX, 3123) +HANDLE_BAT(APINT_TYPE_PREFIX, 3124) +HANDLE_BAT(APINT_TYPE_PREFIX, 3125) +HANDLE_BAT(APINT_TYPE_PREFIX, 3126) +HANDLE_BAT(APINT_TYPE_PREFIX, 3127) +HANDLE_BAT(APINT_TYPE_PREFIX, 3128) +HANDLE_BAT(APINT_TYPE_PREFIX, 3129) +HANDLE_BAT(APINT_TYPE_PREFIX, 3130) +HANDLE_BAT(APINT_TYPE_PREFIX, 3131) +HANDLE_BAT(APINT_TYPE_PREFIX, 3132) +HANDLE_BAT(APINT_TYPE_PREFIX, 3133) +HANDLE_BAT(APINT_TYPE_PREFIX, 3134) +HANDLE_BAT(APINT_TYPE_PREFIX, 3135) +HANDLE_BAT(APINT_TYPE_PREFIX, 3136) +HANDLE_BAT(APINT_TYPE_PREFIX, 3137) +HANDLE_BAT(APINT_TYPE_PREFIX, 3138) +HANDLE_BAT(APINT_TYPE_PREFIX, 3139) +HANDLE_BAT(APINT_TYPE_PREFIX, 3140) +HANDLE_BAT(APINT_TYPE_PREFIX, 3141) +HANDLE_BAT(APINT_TYPE_PREFIX, 3142) +HANDLE_BAT(APINT_TYPE_PREFIX, 3143) +HANDLE_BAT(APINT_TYPE_PREFIX, 3144) +HANDLE_BAT(APINT_TYPE_PREFIX, 3145) +HANDLE_BAT(APINT_TYPE_PREFIX, 3146) +HANDLE_BAT(APINT_TYPE_PREFIX, 3147) +HANDLE_BAT(APINT_TYPE_PREFIX, 3148) +HANDLE_BAT(APINT_TYPE_PREFIX, 3149) +HANDLE_BAT(APINT_TYPE_PREFIX, 3150) +HANDLE_BAT(APINT_TYPE_PREFIX, 3151) +HANDLE_BAT(APINT_TYPE_PREFIX, 3152) +HANDLE_BAT(APINT_TYPE_PREFIX, 3153) +HANDLE_BAT(APINT_TYPE_PREFIX, 3154) +HANDLE_BAT(APINT_TYPE_PREFIX, 3155) +HANDLE_BAT(APINT_TYPE_PREFIX, 3156) +HANDLE_BAT(APINT_TYPE_PREFIX, 3157) +HANDLE_BAT(APINT_TYPE_PREFIX, 3158) +HANDLE_BAT(APINT_TYPE_PREFIX, 3159) +HANDLE_BAT(APINT_TYPE_PREFIX, 3160) +HANDLE_BAT(APINT_TYPE_PREFIX, 3161) +HANDLE_BAT(APINT_TYPE_PREFIX, 3162) +HANDLE_BAT(APINT_TYPE_PREFIX, 3163) +HANDLE_BAT(APINT_TYPE_PREFIX, 3164) +HANDLE_BAT(APINT_TYPE_PREFIX, 3165) +HANDLE_BAT(APINT_TYPE_PREFIX, 3166) +HANDLE_BAT(APINT_TYPE_PREFIX, 3167) +HANDLE_BAT(APINT_TYPE_PREFIX, 3168) +HANDLE_BAT(APINT_TYPE_PREFIX, 3169) +HANDLE_BAT(APINT_TYPE_PREFIX, 3170) +HANDLE_BAT(APINT_TYPE_PREFIX, 3171) +HANDLE_BAT(APINT_TYPE_PREFIX, 3172) +HANDLE_BAT(APINT_TYPE_PREFIX, 3173) +HANDLE_BAT(APINT_TYPE_PREFIX, 3174) +HANDLE_BAT(APINT_TYPE_PREFIX, 3175) +HANDLE_BAT(APINT_TYPE_PREFIX, 3176) +HANDLE_BAT(APINT_TYPE_PREFIX, 3177) +HANDLE_BAT(APINT_TYPE_PREFIX, 3178) +HANDLE_BAT(APINT_TYPE_PREFIX, 3179) +HANDLE_BAT(APINT_TYPE_PREFIX, 3180) +HANDLE_BAT(APINT_TYPE_PREFIX, 3181) +HANDLE_BAT(APINT_TYPE_PREFIX, 3182) +HANDLE_BAT(APINT_TYPE_PREFIX, 3183) +HANDLE_BAT(APINT_TYPE_PREFIX, 3184) +HANDLE_BAT(APINT_TYPE_PREFIX, 3185) +HANDLE_BAT(APINT_TYPE_PREFIX, 3186) +HANDLE_BAT(APINT_TYPE_PREFIX, 3187) +HANDLE_BAT(APINT_TYPE_PREFIX, 3188) +HANDLE_BAT(APINT_TYPE_PREFIX, 3189) +HANDLE_BAT(APINT_TYPE_PREFIX, 3190) +HANDLE_BAT(APINT_TYPE_PREFIX, 3191) +HANDLE_BAT(APINT_TYPE_PREFIX, 3192) +HANDLE_BAT(APINT_TYPE_PREFIX, 3193) +HANDLE_BAT(APINT_TYPE_PREFIX, 3194) +HANDLE_BAT(APINT_TYPE_PREFIX, 3195) +HANDLE_BAT(APINT_TYPE_PREFIX, 3196) +HANDLE_BAT(APINT_TYPE_PREFIX, 3197) +HANDLE_BAT(APINT_TYPE_PREFIX, 3198) +HANDLE_BAT(APINT_TYPE_PREFIX, 3199) +HANDLE_BAT(APINT_TYPE_PREFIX, 3200) +HANDLE_BAT(APINT_TYPE_PREFIX, 3201) +HANDLE_BAT(APINT_TYPE_PREFIX, 3202) +HANDLE_BAT(APINT_TYPE_PREFIX, 3203) +HANDLE_BAT(APINT_TYPE_PREFIX, 3204) +HANDLE_BAT(APINT_TYPE_PREFIX, 3205) +HANDLE_BAT(APINT_TYPE_PREFIX, 3206) +HANDLE_BAT(APINT_TYPE_PREFIX, 3207) +HANDLE_BAT(APINT_TYPE_PREFIX, 3208) +HANDLE_BAT(APINT_TYPE_PREFIX, 3209) +HANDLE_BAT(APINT_TYPE_PREFIX, 3210) +HANDLE_BAT(APINT_TYPE_PREFIX, 3211) +HANDLE_BAT(APINT_TYPE_PREFIX, 3212) +HANDLE_BAT(APINT_TYPE_PREFIX, 3213) +HANDLE_BAT(APINT_TYPE_PREFIX, 3214) +HANDLE_BAT(APINT_TYPE_PREFIX, 3215) +HANDLE_BAT(APINT_TYPE_PREFIX, 3216) +HANDLE_BAT(APINT_TYPE_PREFIX, 3217) +HANDLE_BAT(APINT_TYPE_PREFIX, 3218) +HANDLE_BAT(APINT_TYPE_PREFIX, 3219) +HANDLE_BAT(APINT_TYPE_PREFIX, 3220) +HANDLE_BAT(APINT_TYPE_PREFIX, 3221) +HANDLE_BAT(APINT_TYPE_PREFIX, 3222) +HANDLE_BAT(APINT_TYPE_PREFIX, 3223) +HANDLE_BAT(APINT_TYPE_PREFIX, 3224) +HANDLE_BAT(APINT_TYPE_PREFIX, 3225) +HANDLE_BAT(APINT_TYPE_PREFIX, 3226) +HANDLE_BAT(APINT_TYPE_PREFIX, 3227) +HANDLE_BAT(APINT_TYPE_PREFIX, 3228) +HANDLE_BAT(APINT_TYPE_PREFIX, 3229) +HANDLE_BAT(APINT_TYPE_PREFIX, 3230) +HANDLE_BAT(APINT_TYPE_PREFIX, 3231) +HANDLE_BAT(APINT_TYPE_PREFIX, 3232) +HANDLE_BAT(APINT_TYPE_PREFIX, 3233) +HANDLE_BAT(APINT_TYPE_PREFIX, 3234) +HANDLE_BAT(APINT_TYPE_PREFIX, 3235) +HANDLE_BAT(APINT_TYPE_PREFIX, 3236) +HANDLE_BAT(APINT_TYPE_PREFIX, 3237) +HANDLE_BAT(APINT_TYPE_PREFIX, 3238) +HANDLE_BAT(APINT_TYPE_PREFIX, 3239) +HANDLE_BAT(APINT_TYPE_PREFIX, 3240) +HANDLE_BAT(APINT_TYPE_PREFIX, 3241) +HANDLE_BAT(APINT_TYPE_PREFIX, 3242) +HANDLE_BAT(APINT_TYPE_PREFIX, 3243) +HANDLE_BAT(APINT_TYPE_PREFIX, 3244) +HANDLE_BAT(APINT_TYPE_PREFIX, 3245) +HANDLE_BAT(APINT_TYPE_PREFIX, 3246) +HANDLE_BAT(APINT_TYPE_PREFIX, 3247) +HANDLE_BAT(APINT_TYPE_PREFIX, 3248) +HANDLE_BAT(APINT_TYPE_PREFIX, 3249) +HANDLE_BAT(APINT_TYPE_PREFIX, 3250) +HANDLE_BAT(APINT_TYPE_PREFIX, 3251) +HANDLE_BAT(APINT_TYPE_PREFIX, 3252) +HANDLE_BAT(APINT_TYPE_PREFIX, 3253) +HANDLE_BAT(APINT_TYPE_PREFIX, 3254) +HANDLE_BAT(APINT_TYPE_PREFIX, 3255) +HANDLE_BAT(APINT_TYPE_PREFIX, 3256) +HANDLE_BAT(APINT_TYPE_PREFIX, 3257) +HANDLE_BAT(APINT_TYPE_PREFIX, 3258) +HANDLE_BAT(APINT_TYPE_PREFIX, 3259) +HANDLE_BAT(APINT_TYPE_PREFIX, 3260) +HANDLE_BAT(APINT_TYPE_PREFIX, 3261) +HANDLE_BAT(APINT_TYPE_PREFIX, 3262) +HANDLE_BAT(APINT_TYPE_PREFIX, 3263) +HANDLE_BAT(APINT_TYPE_PREFIX, 3264) +HANDLE_BAT(APINT_TYPE_PREFIX, 3265) +HANDLE_BAT(APINT_TYPE_PREFIX, 3266) +HANDLE_BAT(APINT_TYPE_PREFIX, 3267) +HANDLE_BAT(APINT_TYPE_PREFIX, 3268) +HANDLE_BAT(APINT_TYPE_PREFIX, 3269) +HANDLE_BAT(APINT_TYPE_PREFIX, 3270) +HANDLE_BAT(APINT_TYPE_PREFIX, 3271) +HANDLE_BAT(APINT_TYPE_PREFIX, 3272) +HANDLE_BAT(APINT_TYPE_PREFIX, 3273) +HANDLE_BAT(APINT_TYPE_PREFIX, 3274) +HANDLE_BAT(APINT_TYPE_PREFIX, 3275) +HANDLE_BAT(APINT_TYPE_PREFIX, 3276) +HANDLE_BAT(APINT_TYPE_PREFIX, 3277) +HANDLE_BAT(APINT_TYPE_PREFIX, 3278) +HANDLE_BAT(APINT_TYPE_PREFIX, 3279) +HANDLE_BAT(APINT_TYPE_PREFIX, 3280) +HANDLE_BAT(APINT_TYPE_PREFIX, 3281) +HANDLE_BAT(APINT_TYPE_PREFIX, 3282) +HANDLE_BAT(APINT_TYPE_PREFIX, 3283) +HANDLE_BAT(APINT_TYPE_PREFIX, 3284) +HANDLE_BAT(APINT_TYPE_PREFIX, 3285) +HANDLE_BAT(APINT_TYPE_PREFIX, 3286) +HANDLE_BAT(APINT_TYPE_PREFIX, 3287) +HANDLE_BAT(APINT_TYPE_PREFIX, 3288) +HANDLE_BAT(APINT_TYPE_PREFIX, 3289) +HANDLE_BAT(APINT_TYPE_PREFIX, 3290) +HANDLE_BAT(APINT_TYPE_PREFIX, 3291) +HANDLE_BAT(APINT_TYPE_PREFIX, 3292) +HANDLE_BAT(APINT_TYPE_PREFIX, 3293) +HANDLE_BAT(APINT_TYPE_PREFIX, 3294) +HANDLE_BAT(APINT_TYPE_PREFIX, 3295) +HANDLE_BAT(APINT_TYPE_PREFIX, 3296) +HANDLE_BAT(APINT_TYPE_PREFIX, 3297) +HANDLE_BAT(APINT_TYPE_PREFIX, 3298) +HANDLE_BAT(APINT_TYPE_PREFIX, 3299) +HANDLE_BAT(APINT_TYPE_PREFIX, 3300) +HANDLE_BAT(APINT_TYPE_PREFIX, 3301) +HANDLE_BAT(APINT_TYPE_PREFIX, 3302) +HANDLE_BAT(APINT_TYPE_PREFIX, 3303) +HANDLE_BAT(APINT_TYPE_PREFIX, 3304) +HANDLE_BAT(APINT_TYPE_PREFIX, 3305) +HANDLE_BAT(APINT_TYPE_PREFIX, 3306) +HANDLE_BAT(APINT_TYPE_PREFIX, 3307) +HANDLE_BAT(APINT_TYPE_PREFIX, 3308) +HANDLE_BAT(APINT_TYPE_PREFIX, 3309) +HANDLE_BAT(APINT_TYPE_PREFIX, 3310) +HANDLE_BAT(APINT_TYPE_PREFIX, 3311) +HANDLE_BAT(APINT_TYPE_PREFIX, 3312) +HANDLE_BAT(APINT_TYPE_PREFIX, 3313) +HANDLE_BAT(APINT_TYPE_PREFIX, 3314) +HANDLE_BAT(APINT_TYPE_PREFIX, 3315) +HANDLE_BAT(APINT_TYPE_PREFIX, 3316) +HANDLE_BAT(APINT_TYPE_PREFIX, 3317) +HANDLE_BAT(APINT_TYPE_PREFIX, 3318) +HANDLE_BAT(APINT_TYPE_PREFIX, 3319) +HANDLE_BAT(APINT_TYPE_PREFIX, 3320) +HANDLE_BAT(APINT_TYPE_PREFIX, 3321) +HANDLE_BAT(APINT_TYPE_PREFIX, 3322) +HANDLE_BAT(APINT_TYPE_PREFIX, 3323) +HANDLE_BAT(APINT_TYPE_PREFIX, 3324) +HANDLE_BAT(APINT_TYPE_PREFIX, 3325) +HANDLE_BAT(APINT_TYPE_PREFIX, 3326) +HANDLE_BAT(APINT_TYPE_PREFIX, 3327) +HANDLE_BAT(APINT_TYPE_PREFIX, 3328) +HANDLE_BAT(APINT_TYPE_PREFIX, 3329) +HANDLE_BAT(APINT_TYPE_PREFIX, 3330) +HANDLE_BAT(APINT_TYPE_PREFIX, 3331) +HANDLE_BAT(APINT_TYPE_PREFIX, 3332) +HANDLE_BAT(APINT_TYPE_PREFIX, 3333) +HANDLE_BAT(APINT_TYPE_PREFIX, 3334) +HANDLE_BAT(APINT_TYPE_PREFIX, 3335) +HANDLE_BAT(APINT_TYPE_PREFIX, 3336) +HANDLE_BAT(APINT_TYPE_PREFIX, 3337) +HANDLE_BAT(APINT_TYPE_PREFIX, 3338) +HANDLE_BAT(APINT_TYPE_PREFIX, 3339) +HANDLE_BAT(APINT_TYPE_PREFIX, 3340) +HANDLE_BAT(APINT_TYPE_PREFIX, 3341) +HANDLE_BAT(APINT_TYPE_PREFIX, 3342) +HANDLE_BAT(APINT_TYPE_PREFIX, 3343) +HANDLE_BAT(APINT_TYPE_PREFIX, 3344) +HANDLE_BAT(APINT_TYPE_PREFIX, 3345) +HANDLE_BAT(APINT_TYPE_PREFIX, 3346) +HANDLE_BAT(APINT_TYPE_PREFIX, 3347) +HANDLE_BAT(APINT_TYPE_PREFIX, 3348) +HANDLE_BAT(APINT_TYPE_PREFIX, 3349) +HANDLE_BAT(APINT_TYPE_PREFIX, 3350) +HANDLE_BAT(APINT_TYPE_PREFIX, 3351) +HANDLE_BAT(APINT_TYPE_PREFIX, 3352) +HANDLE_BAT(APINT_TYPE_PREFIX, 3353) +HANDLE_BAT(APINT_TYPE_PREFIX, 3354) +HANDLE_BAT(APINT_TYPE_PREFIX, 3355) +HANDLE_BAT(APINT_TYPE_PREFIX, 3356) +HANDLE_BAT(APINT_TYPE_PREFIX, 3357) +HANDLE_BAT(APINT_TYPE_PREFIX, 3358) +HANDLE_BAT(APINT_TYPE_PREFIX, 3359) +HANDLE_BAT(APINT_TYPE_PREFIX, 3360) +HANDLE_BAT(APINT_TYPE_PREFIX, 3361) +HANDLE_BAT(APINT_TYPE_PREFIX, 3362) +HANDLE_BAT(APINT_TYPE_PREFIX, 3363) +HANDLE_BAT(APINT_TYPE_PREFIX, 3364) +HANDLE_BAT(APINT_TYPE_PREFIX, 3365) +HANDLE_BAT(APINT_TYPE_PREFIX, 3366) +HANDLE_BAT(APINT_TYPE_PREFIX, 3367) +HANDLE_BAT(APINT_TYPE_PREFIX, 3368) +HANDLE_BAT(APINT_TYPE_PREFIX, 3369) +HANDLE_BAT(APINT_TYPE_PREFIX, 3370) +HANDLE_BAT(APINT_TYPE_PREFIX, 3371) +HANDLE_BAT(APINT_TYPE_PREFIX, 3372) +HANDLE_BAT(APINT_TYPE_PREFIX, 3373) +HANDLE_BAT(APINT_TYPE_PREFIX, 3374) +HANDLE_BAT(APINT_TYPE_PREFIX, 3375) +HANDLE_BAT(APINT_TYPE_PREFIX, 3376) +HANDLE_BAT(APINT_TYPE_PREFIX, 3377) +HANDLE_BAT(APINT_TYPE_PREFIX, 3378) +HANDLE_BAT(APINT_TYPE_PREFIX, 3379) +HANDLE_BAT(APINT_TYPE_PREFIX, 3380) +HANDLE_BAT(APINT_TYPE_PREFIX, 3381) +HANDLE_BAT(APINT_TYPE_PREFIX, 3382) +HANDLE_BAT(APINT_TYPE_PREFIX, 3383) +HANDLE_BAT(APINT_TYPE_PREFIX, 3384) +HANDLE_BAT(APINT_TYPE_PREFIX, 3385) +HANDLE_BAT(APINT_TYPE_PREFIX, 3386) +HANDLE_BAT(APINT_TYPE_PREFIX, 3387) +HANDLE_BAT(APINT_TYPE_PREFIX, 3388) +HANDLE_BAT(APINT_TYPE_PREFIX, 3389) +HANDLE_BAT(APINT_TYPE_PREFIX, 3390) +HANDLE_BAT(APINT_TYPE_PREFIX, 3391) +HANDLE_BAT(APINT_TYPE_PREFIX, 3392) +HANDLE_BAT(APINT_TYPE_PREFIX, 3393) +HANDLE_BAT(APINT_TYPE_PREFIX, 3394) +HANDLE_BAT(APINT_TYPE_PREFIX, 3395) +HANDLE_BAT(APINT_TYPE_PREFIX, 3396) +HANDLE_BAT(APINT_TYPE_PREFIX, 3397) +HANDLE_BAT(APINT_TYPE_PREFIX, 3398) +HANDLE_BAT(APINT_TYPE_PREFIX, 3399) +HANDLE_BAT(APINT_TYPE_PREFIX, 3400) +HANDLE_BAT(APINT_TYPE_PREFIX, 3401) +HANDLE_BAT(APINT_TYPE_PREFIX, 3402) +HANDLE_BAT(APINT_TYPE_PREFIX, 3403) +HANDLE_BAT(APINT_TYPE_PREFIX, 3404) +HANDLE_BAT(APINT_TYPE_PREFIX, 3405) +HANDLE_BAT(APINT_TYPE_PREFIX, 3406) +HANDLE_BAT(APINT_TYPE_PREFIX, 3407) +HANDLE_BAT(APINT_TYPE_PREFIX, 3408) +HANDLE_BAT(APINT_TYPE_PREFIX, 3409) +HANDLE_BAT(APINT_TYPE_PREFIX, 3410) +HANDLE_BAT(APINT_TYPE_PREFIX, 3411) +HANDLE_BAT(APINT_TYPE_PREFIX, 3412) +HANDLE_BAT(APINT_TYPE_PREFIX, 3413) +HANDLE_BAT(APINT_TYPE_PREFIX, 3414) +HANDLE_BAT(APINT_TYPE_PREFIX, 3415) +HANDLE_BAT(APINT_TYPE_PREFIX, 3416) +HANDLE_BAT(APINT_TYPE_PREFIX, 3417) +HANDLE_BAT(APINT_TYPE_PREFIX, 3418) +HANDLE_BAT(APINT_TYPE_PREFIX, 3419) +HANDLE_BAT(APINT_TYPE_PREFIX, 3420) +HANDLE_BAT(APINT_TYPE_PREFIX, 3421) +HANDLE_BAT(APINT_TYPE_PREFIX, 3422) +HANDLE_BAT(APINT_TYPE_PREFIX, 3423) +HANDLE_BAT(APINT_TYPE_PREFIX, 3424) +HANDLE_BAT(APINT_TYPE_PREFIX, 3425) +HANDLE_BAT(APINT_TYPE_PREFIX, 3426) +HANDLE_BAT(APINT_TYPE_PREFIX, 3427) +HANDLE_BAT(APINT_TYPE_PREFIX, 3428) +HANDLE_BAT(APINT_TYPE_PREFIX, 3429) +HANDLE_BAT(APINT_TYPE_PREFIX, 3430) +HANDLE_BAT(APINT_TYPE_PREFIX, 3431) +HANDLE_BAT(APINT_TYPE_PREFIX, 3432) +HANDLE_BAT(APINT_TYPE_PREFIX, 3433) +HANDLE_BAT(APINT_TYPE_PREFIX, 3434) +HANDLE_BAT(APINT_TYPE_PREFIX, 3435) +HANDLE_BAT(APINT_TYPE_PREFIX, 3436) +HANDLE_BAT(APINT_TYPE_PREFIX, 3437) +HANDLE_BAT(APINT_TYPE_PREFIX, 3438) +HANDLE_BAT(APINT_TYPE_PREFIX, 3439) +HANDLE_BAT(APINT_TYPE_PREFIX, 3440) +HANDLE_BAT(APINT_TYPE_PREFIX, 3441) +HANDLE_BAT(APINT_TYPE_PREFIX, 3442) +HANDLE_BAT(APINT_TYPE_PREFIX, 3443) +HANDLE_BAT(APINT_TYPE_PREFIX, 3444) +HANDLE_BAT(APINT_TYPE_PREFIX, 3445) +HANDLE_BAT(APINT_TYPE_PREFIX, 3446) +HANDLE_BAT(APINT_TYPE_PREFIX, 3447) +HANDLE_BAT(APINT_TYPE_PREFIX, 3448) +HANDLE_BAT(APINT_TYPE_PREFIX, 3449) +HANDLE_BAT(APINT_TYPE_PREFIX, 3450) +HANDLE_BAT(APINT_TYPE_PREFIX, 3451) +HANDLE_BAT(APINT_TYPE_PREFIX, 3452) +HANDLE_BAT(APINT_TYPE_PREFIX, 3453) +HANDLE_BAT(APINT_TYPE_PREFIX, 3454) +HANDLE_BAT(APINT_TYPE_PREFIX, 3455) +HANDLE_BAT(APINT_TYPE_PREFIX, 3456) +HANDLE_BAT(APINT_TYPE_PREFIX, 3457) +HANDLE_BAT(APINT_TYPE_PREFIX, 3458) +HANDLE_BAT(APINT_TYPE_PREFIX, 3459) +HANDLE_BAT(APINT_TYPE_PREFIX, 3460) +HANDLE_BAT(APINT_TYPE_PREFIX, 3461) +HANDLE_BAT(APINT_TYPE_PREFIX, 3462) +HANDLE_BAT(APINT_TYPE_PREFIX, 3463) +HANDLE_BAT(APINT_TYPE_PREFIX, 3464) +HANDLE_BAT(APINT_TYPE_PREFIX, 3465) +HANDLE_BAT(APINT_TYPE_PREFIX, 3466) +HANDLE_BAT(APINT_TYPE_PREFIX, 3467) +HANDLE_BAT(APINT_TYPE_PREFIX, 3468) +HANDLE_BAT(APINT_TYPE_PREFIX, 3469) +HANDLE_BAT(APINT_TYPE_PREFIX, 3470) +HANDLE_BAT(APINT_TYPE_PREFIX, 3471) +HANDLE_BAT(APINT_TYPE_PREFIX, 3472) +HANDLE_BAT(APINT_TYPE_PREFIX, 3473) +HANDLE_BAT(APINT_TYPE_PREFIX, 3474) +HANDLE_BAT(APINT_TYPE_PREFIX, 3475) +HANDLE_BAT(APINT_TYPE_PREFIX, 3476) +HANDLE_BAT(APINT_TYPE_PREFIX, 3477) +HANDLE_BAT(APINT_TYPE_PREFIX, 3478) +HANDLE_BAT(APINT_TYPE_PREFIX, 3479) +HANDLE_BAT(APINT_TYPE_PREFIX, 3480) +HANDLE_BAT(APINT_TYPE_PREFIX, 3481) +HANDLE_BAT(APINT_TYPE_PREFIX, 3482) +HANDLE_BAT(APINT_TYPE_PREFIX, 3483) +HANDLE_BAT(APINT_TYPE_PREFIX, 3484) +HANDLE_BAT(APINT_TYPE_PREFIX, 3485) +HANDLE_BAT(APINT_TYPE_PREFIX, 3486) +HANDLE_BAT(APINT_TYPE_PREFIX, 3487) +HANDLE_BAT(APINT_TYPE_PREFIX, 3488) +HANDLE_BAT(APINT_TYPE_PREFIX, 3489) +HANDLE_BAT(APINT_TYPE_PREFIX, 3490) +HANDLE_BAT(APINT_TYPE_PREFIX, 3491) +HANDLE_BAT(APINT_TYPE_PREFIX, 3492) +HANDLE_BAT(APINT_TYPE_PREFIX, 3493) +HANDLE_BAT(APINT_TYPE_PREFIX, 3494) +HANDLE_BAT(APINT_TYPE_PREFIX, 3495) +HANDLE_BAT(APINT_TYPE_PREFIX, 3496) +HANDLE_BAT(APINT_TYPE_PREFIX, 3497) +HANDLE_BAT(APINT_TYPE_PREFIX, 3498) +HANDLE_BAT(APINT_TYPE_PREFIX, 3499) +HANDLE_BAT(APINT_TYPE_PREFIX, 3500) +HANDLE_BAT(APINT_TYPE_PREFIX, 3501) +HANDLE_BAT(APINT_TYPE_PREFIX, 3502) +HANDLE_BAT(APINT_TYPE_PREFIX, 3503) +HANDLE_BAT(APINT_TYPE_PREFIX, 3504) +HANDLE_BAT(APINT_TYPE_PREFIX, 3505) +HANDLE_BAT(APINT_TYPE_PREFIX, 3506) +HANDLE_BAT(APINT_TYPE_PREFIX, 3507) +HANDLE_BAT(APINT_TYPE_PREFIX, 3508) +HANDLE_BAT(APINT_TYPE_PREFIX, 3509) +HANDLE_BAT(APINT_TYPE_PREFIX, 3510) +HANDLE_BAT(APINT_TYPE_PREFIX, 3511) +HANDLE_BAT(APINT_TYPE_PREFIX, 3512) +HANDLE_BAT(APINT_TYPE_PREFIX, 3513) +HANDLE_BAT(APINT_TYPE_PREFIX, 3514) +HANDLE_BAT(APINT_TYPE_PREFIX, 3515) +HANDLE_BAT(APINT_TYPE_PREFIX, 3516) +HANDLE_BAT(APINT_TYPE_PREFIX, 3517) +HANDLE_BAT(APINT_TYPE_PREFIX, 3518) +HANDLE_BAT(APINT_TYPE_PREFIX, 3519) +HANDLE_BAT(APINT_TYPE_PREFIX, 3520) +HANDLE_BAT(APINT_TYPE_PREFIX, 3521) +HANDLE_BAT(APINT_TYPE_PREFIX, 3522) +HANDLE_BAT(APINT_TYPE_PREFIX, 3523) +HANDLE_BAT(APINT_TYPE_PREFIX, 3524) +HANDLE_BAT(APINT_TYPE_PREFIX, 3525) +HANDLE_BAT(APINT_TYPE_PREFIX, 3526) +HANDLE_BAT(APINT_TYPE_PREFIX, 3527) +HANDLE_BAT(APINT_TYPE_PREFIX, 3528) +HANDLE_BAT(APINT_TYPE_PREFIX, 3529) +HANDLE_BAT(APINT_TYPE_PREFIX, 3530) +HANDLE_BAT(APINT_TYPE_PREFIX, 3531) +HANDLE_BAT(APINT_TYPE_PREFIX, 3532) +HANDLE_BAT(APINT_TYPE_PREFIX, 3533) +HANDLE_BAT(APINT_TYPE_PREFIX, 3534) +HANDLE_BAT(APINT_TYPE_PREFIX, 3535) +HANDLE_BAT(APINT_TYPE_PREFIX, 3536) +HANDLE_BAT(APINT_TYPE_PREFIX, 3537) +HANDLE_BAT(APINT_TYPE_PREFIX, 3538) +HANDLE_BAT(APINT_TYPE_PREFIX, 3539) +HANDLE_BAT(APINT_TYPE_PREFIX, 3540) +HANDLE_BAT(APINT_TYPE_PREFIX, 3541) +HANDLE_BAT(APINT_TYPE_PREFIX, 3542) +HANDLE_BAT(APINT_TYPE_PREFIX, 3543) +HANDLE_BAT(APINT_TYPE_PREFIX, 3544) +HANDLE_BAT(APINT_TYPE_PREFIX, 3545) +HANDLE_BAT(APINT_TYPE_PREFIX, 3546) +HANDLE_BAT(APINT_TYPE_PREFIX, 3547) +HANDLE_BAT(APINT_TYPE_PREFIX, 3548) +HANDLE_BAT(APINT_TYPE_PREFIX, 3549) +HANDLE_BAT(APINT_TYPE_PREFIX, 3550) +HANDLE_BAT(APINT_TYPE_PREFIX, 3551) +HANDLE_BAT(APINT_TYPE_PREFIX, 3552) +HANDLE_BAT(APINT_TYPE_PREFIX, 3553) +HANDLE_BAT(APINT_TYPE_PREFIX, 3554) +HANDLE_BAT(APINT_TYPE_PREFIX, 3555) +HANDLE_BAT(APINT_TYPE_PREFIX, 3556) +HANDLE_BAT(APINT_TYPE_PREFIX, 3557) +HANDLE_BAT(APINT_TYPE_PREFIX, 3558) +HANDLE_BAT(APINT_TYPE_PREFIX, 3559) +HANDLE_BAT(APINT_TYPE_PREFIX, 3560) +HANDLE_BAT(APINT_TYPE_PREFIX, 3561) +HANDLE_BAT(APINT_TYPE_PREFIX, 3562) +HANDLE_BAT(APINT_TYPE_PREFIX, 3563) +HANDLE_BAT(APINT_TYPE_PREFIX, 3564) +HANDLE_BAT(APINT_TYPE_PREFIX, 3565) +HANDLE_BAT(APINT_TYPE_PREFIX, 3566) +HANDLE_BAT(APINT_TYPE_PREFIX, 3567) +HANDLE_BAT(APINT_TYPE_PREFIX, 3568) +HANDLE_BAT(APINT_TYPE_PREFIX, 3569) +HANDLE_BAT(APINT_TYPE_PREFIX, 3570) +HANDLE_BAT(APINT_TYPE_PREFIX, 3571) +HANDLE_BAT(APINT_TYPE_PREFIX, 3572) +HANDLE_BAT(APINT_TYPE_PREFIX, 3573) +HANDLE_BAT(APINT_TYPE_PREFIX, 3574) +HANDLE_BAT(APINT_TYPE_PREFIX, 3575) +HANDLE_BAT(APINT_TYPE_PREFIX, 3576) +HANDLE_BAT(APINT_TYPE_PREFIX, 3577) +HANDLE_BAT(APINT_TYPE_PREFIX, 3578) +HANDLE_BAT(APINT_TYPE_PREFIX, 3579) +HANDLE_BAT(APINT_TYPE_PREFIX, 3580) +HANDLE_BAT(APINT_TYPE_PREFIX, 3581) +HANDLE_BAT(APINT_TYPE_PREFIX, 3582) +HANDLE_BAT(APINT_TYPE_PREFIX, 3583) +HANDLE_BAT(APINT_TYPE_PREFIX, 3584) +HANDLE_BAT(APINT_TYPE_PREFIX, 3585) +HANDLE_BAT(APINT_TYPE_PREFIX, 3586) +HANDLE_BAT(APINT_TYPE_PREFIX, 3587) +HANDLE_BAT(APINT_TYPE_PREFIX, 3588) +HANDLE_BAT(APINT_TYPE_PREFIX, 3589) +HANDLE_BAT(APINT_TYPE_PREFIX, 3590) +HANDLE_BAT(APINT_TYPE_PREFIX, 3591) +HANDLE_BAT(APINT_TYPE_PREFIX, 3592) +HANDLE_BAT(APINT_TYPE_PREFIX, 3593) +HANDLE_BAT(APINT_TYPE_PREFIX, 3594) +HANDLE_BAT(APINT_TYPE_PREFIX, 3595) +HANDLE_BAT(APINT_TYPE_PREFIX, 3596) +HANDLE_BAT(APINT_TYPE_PREFIX, 3597) +HANDLE_BAT(APINT_TYPE_PREFIX, 3598) +HANDLE_BAT(APINT_TYPE_PREFIX, 3599) +HANDLE_BAT(APINT_TYPE_PREFIX, 3600) +HANDLE_BAT(APINT_TYPE_PREFIX, 3601) +HANDLE_BAT(APINT_TYPE_PREFIX, 3602) +HANDLE_BAT(APINT_TYPE_PREFIX, 3603) +HANDLE_BAT(APINT_TYPE_PREFIX, 3604) +HANDLE_BAT(APINT_TYPE_PREFIX, 3605) +HANDLE_BAT(APINT_TYPE_PREFIX, 3606) +HANDLE_BAT(APINT_TYPE_PREFIX, 3607) +HANDLE_BAT(APINT_TYPE_PREFIX, 3608) +HANDLE_BAT(APINT_TYPE_PREFIX, 3609) +HANDLE_BAT(APINT_TYPE_PREFIX, 3610) +HANDLE_BAT(APINT_TYPE_PREFIX, 3611) +HANDLE_BAT(APINT_TYPE_PREFIX, 3612) +HANDLE_BAT(APINT_TYPE_PREFIX, 3613) +HANDLE_BAT(APINT_TYPE_PREFIX, 3614) +HANDLE_BAT(APINT_TYPE_PREFIX, 3615) +HANDLE_BAT(APINT_TYPE_PREFIX, 3616) +HANDLE_BAT(APINT_TYPE_PREFIX, 3617) +HANDLE_BAT(APINT_TYPE_PREFIX, 3618) +HANDLE_BAT(APINT_TYPE_PREFIX, 3619) +HANDLE_BAT(APINT_TYPE_PREFIX, 3620) +HANDLE_BAT(APINT_TYPE_PREFIX, 3621) +HANDLE_BAT(APINT_TYPE_PREFIX, 3622) +HANDLE_BAT(APINT_TYPE_PREFIX, 3623) +HANDLE_BAT(APINT_TYPE_PREFIX, 3624) +HANDLE_BAT(APINT_TYPE_PREFIX, 3625) +HANDLE_BAT(APINT_TYPE_PREFIX, 3626) +HANDLE_BAT(APINT_TYPE_PREFIX, 3627) +HANDLE_BAT(APINT_TYPE_PREFIX, 3628) +HANDLE_BAT(APINT_TYPE_PREFIX, 3629) +HANDLE_BAT(APINT_TYPE_PREFIX, 3630) +HANDLE_BAT(APINT_TYPE_PREFIX, 3631) +HANDLE_BAT(APINT_TYPE_PREFIX, 3632) +HANDLE_BAT(APINT_TYPE_PREFIX, 3633) +HANDLE_BAT(APINT_TYPE_PREFIX, 3634) +HANDLE_BAT(APINT_TYPE_PREFIX, 3635) +HANDLE_BAT(APINT_TYPE_PREFIX, 3636) +HANDLE_BAT(APINT_TYPE_PREFIX, 3637) +HANDLE_BAT(APINT_TYPE_PREFIX, 3638) +HANDLE_BAT(APINT_TYPE_PREFIX, 3639) +HANDLE_BAT(APINT_TYPE_PREFIX, 3640) +HANDLE_BAT(APINT_TYPE_PREFIX, 3641) +HANDLE_BAT(APINT_TYPE_PREFIX, 3642) +HANDLE_BAT(APINT_TYPE_PREFIX, 3643) +HANDLE_BAT(APINT_TYPE_PREFIX, 3644) +HANDLE_BAT(APINT_TYPE_PREFIX, 3645) +HANDLE_BAT(APINT_TYPE_PREFIX, 3646) +HANDLE_BAT(APINT_TYPE_PREFIX, 3647) +HANDLE_BAT(APINT_TYPE_PREFIX, 3648) +HANDLE_BAT(APINT_TYPE_PREFIX, 3649) +HANDLE_BAT(APINT_TYPE_PREFIX, 3650) +HANDLE_BAT(APINT_TYPE_PREFIX, 3651) +HANDLE_BAT(APINT_TYPE_PREFIX, 3652) +HANDLE_BAT(APINT_TYPE_PREFIX, 3653) +HANDLE_BAT(APINT_TYPE_PREFIX, 3654) +HANDLE_BAT(APINT_TYPE_PREFIX, 3655) +HANDLE_BAT(APINT_TYPE_PREFIX, 3656) +HANDLE_BAT(APINT_TYPE_PREFIX, 3657) +HANDLE_BAT(APINT_TYPE_PREFIX, 3658) +HANDLE_BAT(APINT_TYPE_PREFIX, 3659) +HANDLE_BAT(APINT_TYPE_PREFIX, 3660) +HANDLE_BAT(APINT_TYPE_PREFIX, 3661) +HANDLE_BAT(APINT_TYPE_PREFIX, 3662) +HANDLE_BAT(APINT_TYPE_PREFIX, 3663) +HANDLE_BAT(APINT_TYPE_PREFIX, 3664) +HANDLE_BAT(APINT_TYPE_PREFIX, 3665) +HANDLE_BAT(APINT_TYPE_PREFIX, 3666) +HANDLE_BAT(APINT_TYPE_PREFIX, 3667) +HANDLE_BAT(APINT_TYPE_PREFIX, 3668) +HANDLE_BAT(APINT_TYPE_PREFIX, 3669) +HANDLE_BAT(APINT_TYPE_PREFIX, 3670) +HANDLE_BAT(APINT_TYPE_PREFIX, 3671) +HANDLE_BAT(APINT_TYPE_PREFIX, 3672) +HANDLE_BAT(APINT_TYPE_PREFIX, 3673) +HANDLE_BAT(APINT_TYPE_PREFIX, 3674) +HANDLE_BAT(APINT_TYPE_PREFIX, 3675) +HANDLE_BAT(APINT_TYPE_PREFIX, 3676) +HANDLE_BAT(APINT_TYPE_PREFIX, 3677) +HANDLE_BAT(APINT_TYPE_PREFIX, 3678) +HANDLE_BAT(APINT_TYPE_PREFIX, 3679) +HANDLE_BAT(APINT_TYPE_PREFIX, 3680) +HANDLE_BAT(APINT_TYPE_PREFIX, 3681) +HANDLE_BAT(APINT_TYPE_PREFIX, 3682) +HANDLE_BAT(APINT_TYPE_PREFIX, 3683) +HANDLE_BAT(APINT_TYPE_PREFIX, 3684) +HANDLE_BAT(APINT_TYPE_PREFIX, 3685) +HANDLE_BAT(APINT_TYPE_PREFIX, 3686) +HANDLE_BAT(APINT_TYPE_PREFIX, 3687) +HANDLE_BAT(APINT_TYPE_PREFIX, 3688) +HANDLE_BAT(APINT_TYPE_PREFIX, 3689) +HANDLE_BAT(APINT_TYPE_PREFIX, 3690) +HANDLE_BAT(APINT_TYPE_PREFIX, 3691) +HANDLE_BAT(APINT_TYPE_PREFIX, 3692) +HANDLE_BAT(APINT_TYPE_PREFIX, 3693) +HANDLE_BAT(APINT_TYPE_PREFIX, 3694) +HANDLE_BAT(APINT_TYPE_PREFIX, 3695) +HANDLE_BAT(APINT_TYPE_PREFIX, 3696) +HANDLE_BAT(APINT_TYPE_PREFIX, 3697) +HANDLE_BAT(APINT_TYPE_PREFIX, 3698) +HANDLE_BAT(APINT_TYPE_PREFIX, 3699) +HANDLE_BAT(APINT_TYPE_PREFIX, 3700) +HANDLE_BAT(APINT_TYPE_PREFIX, 3701) +HANDLE_BAT(APINT_TYPE_PREFIX, 3702) +HANDLE_BAT(APINT_TYPE_PREFIX, 3703) +HANDLE_BAT(APINT_TYPE_PREFIX, 3704) +HANDLE_BAT(APINT_TYPE_PREFIX, 3705) +HANDLE_BAT(APINT_TYPE_PREFIX, 3706) +HANDLE_BAT(APINT_TYPE_PREFIX, 3707) +HANDLE_BAT(APINT_TYPE_PREFIX, 3708) +HANDLE_BAT(APINT_TYPE_PREFIX, 3709) +HANDLE_BAT(APINT_TYPE_PREFIX, 3710) +HANDLE_BAT(APINT_TYPE_PREFIX, 3711) +HANDLE_BAT(APINT_TYPE_PREFIX, 3712) +HANDLE_BAT(APINT_TYPE_PREFIX, 3713) +HANDLE_BAT(APINT_TYPE_PREFIX, 3714) +HANDLE_BAT(APINT_TYPE_PREFIX, 3715) +HANDLE_BAT(APINT_TYPE_PREFIX, 3716) +HANDLE_BAT(APINT_TYPE_PREFIX, 3717) +HANDLE_BAT(APINT_TYPE_PREFIX, 3718) +HANDLE_BAT(APINT_TYPE_PREFIX, 3719) +HANDLE_BAT(APINT_TYPE_PREFIX, 3720) +HANDLE_BAT(APINT_TYPE_PREFIX, 3721) +HANDLE_BAT(APINT_TYPE_PREFIX, 3722) +HANDLE_BAT(APINT_TYPE_PREFIX, 3723) +HANDLE_BAT(APINT_TYPE_PREFIX, 3724) +HANDLE_BAT(APINT_TYPE_PREFIX, 3725) +HANDLE_BAT(APINT_TYPE_PREFIX, 3726) +HANDLE_BAT(APINT_TYPE_PREFIX, 3727) +HANDLE_BAT(APINT_TYPE_PREFIX, 3728) +HANDLE_BAT(APINT_TYPE_PREFIX, 3729) +HANDLE_BAT(APINT_TYPE_PREFIX, 3730) +HANDLE_BAT(APINT_TYPE_PREFIX, 3731) +HANDLE_BAT(APINT_TYPE_PREFIX, 3732) +HANDLE_BAT(APINT_TYPE_PREFIX, 3733) +HANDLE_BAT(APINT_TYPE_PREFIX, 3734) +HANDLE_BAT(APINT_TYPE_PREFIX, 3735) +HANDLE_BAT(APINT_TYPE_PREFIX, 3736) +HANDLE_BAT(APINT_TYPE_PREFIX, 3737) +HANDLE_BAT(APINT_TYPE_PREFIX, 3738) +HANDLE_BAT(APINT_TYPE_PREFIX, 3739) +HANDLE_BAT(APINT_TYPE_PREFIX, 3740) +HANDLE_BAT(APINT_TYPE_PREFIX, 3741) +HANDLE_BAT(APINT_TYPE_PREFIX, 3742) +HANDLE_BAT(APINT_TYPE_PREFIX, 3743) +HANDLE_BAT(APINT_TYPE_PREFIX, 3744) +HANDLE_BAT(APINT_TYPE_PREFIX, 3745) +HANDLE_BAT(APINT_TYPE_PREFIX, 3746) +HANDLE_BAT(APINT_TYPE_PREFIX, 3747) +HANDLE_BAT(APINT_TYPE_PREFIX, 3748) +HANDLE_BAT(APINT_TYPE_PREFIX, 3749) +HANDLE_BAT(APINT_TYPE_PREFIX, 3750) +HANDLE_BAT(APINT_TYPE_PREFIX, 3751) +HANDLE_BAT(APINT_TYPE_PREFIX, 3752) +HANDLE_BAT(APINT_TYPE_PREFIX, 3753) +HANDLE_BAT(APINT_TYPE_PREFIX, 3754) +HANDLE_BAT(APINT_TYPE_PREFIX, 3755) +HANDLE_BAT(APINT_TYPE_PREFIX, 3756) +HANDLE_BAT(APINT_TYPE_PREFIX, 3757) +HANDLE_BAT(APINT_TYPE_PREFIX, 3758) +HANDLE_BAT(APINT_TYPE_PREFIX, 3759) +HANDLE_BAT(APINT_TYPE_PREFIX, 3760) +HANDLE_BAT(APINT_TYPE_PREFIX, 3761) +HANDLE_BAT(APINT_TYPE_PREFIX, 3762) +HANDLE_BAT(APINT_TYPE_PREFIX, 3763) +HANDLE_BAT(APINT_TYPE_PREFIX, 3764) +HANDLE_BAT(APINT_TYPE_PREFIX, 3765) +HANDLE_BAT(APINT_TYPE_PREFIX, 3766) +HANDLE_BAT(APINT_TYPE_PREFIX, 3767) +HANDLE_BAT(APINT_TYPE_PREFIX, 3768) +HANDLE_BAT(APINT_TYPE_PREFIX, 3769) +HANDLE_BAT(APINT_TYPE_PREFIX, 3770) +HANDLE_BAT(APINT_TYPE_PREFIX, 3771) +HANDLE_BAT(APINT_TYPE_PREFIX, 3772) +HANDLE_BAT(APINT_TYPE_PREFIX, 3773) +HANDLE_BAT(APINT_TYPE_PREFIX, 3774) +HANDLE_BAT(APINT_TYPE_PREFIX, 3775) +HANDLE_BAT(APINT_TYPE_PREFIX, 3776) +HANDLE_BAT(APINT_TYPE_PREFIX, 3777) +HANDLE_BAT(APINT_TYPE_PREFIX, 3778) +HANDLE_BAT(APINT_TYPE_PREFIX, 3779) +HANDLE_BAT(APINT_TYPE_PREFIX, 3780) +HANDLE_BAT(APINT_TYPE_PREFIX, 3781) +HANDLE_BAT(APINT_TYPE_PREFIX, 3782) +HANDLE_BAT(APINT_TYPE_PREFIX, 3783) +HANDLE_BAT(APINT_TYPE_PREFIX, 3784) +HANDLE_BAT(APINT_TYPE_PREFIX, 3785) +HANDLE_BAT(APINT_TYPE_PREFIX, 3786) +HANDLE_BAT(APINT_TYPE_PREFIX, 3787) +HANDLE_BAT(APINT_TYPE_PREFIX, 3788) +HANDLE_BAT(APINT_TYPE_PREFIX, 3789) +HANDLE_BAT(APINT_TYPE_PREFIX, 3790) +HANDLE_BAT(APINT_TYPE_PREFIX, 3791) +HANDLE_BAT(APINT_TYPE_PREFIX, 3792) +HANDLE_BAT(APINT_TYPE_PREFIX, 3793) +HANDLE_BAT(APINT_TYPE_PREFIX, 3794) +HANDLE_BAT(APINT_TYPE_PREFIX, 3795) +HANDLE_BAT(APINT_TYPE_PREFIX, 3796) +HANDLE_BAT(APINT_TYPE_PREFIX, 3797) +HANDLE_BAT(APINT_TYPE_PREFIX, 3798) +HANDLE_BAT(APINT_TYPE_PREFIX, 3799) +HANDLE_BAT(APINT_TYPE_PREFIX, 3800) +HANDLE_BAT(APINT_TYPE_PREFIX, 3801) +HANDLE_BAT(APINT_TYPE_PREFIX, 3802) +HANDLE_BAT(APINT_TYPE_PREFIX, 3803) +HANDLE_BAT(APINT_TYPE_PREFIX, 3804) +HANDLE_BAT(APINT_TYPE_PREFIX, 3805) +HANDLE_BAT(APINT_TYPE_PREFIX, 3806) +HANDLE_BAT(APINT_TYPE_PREFIX, 3807) +HANDLE_BAT(APINT_TYPE_PREFIX, 3808) +HANDLE_BAT(APINT_TYPE_PREFIX, 3809) +HANDLE_BAT(APINT_TYPE_PREFIX, 3810) +HANDLE_BAT(APINT_TYPE_PREFIX, 3811) +HANDLE_BAT(APINT_TYPE_PREFIX, 3812) +HANDLE_BAT(APINT_TYPE_PREFIX, 3813) +HANDLE_BAT(APINT_TYPE_PREFIX, 3814) +HANDLE_BAT(APINT_TYPE_PREFIX, 3815) +HANDLE_BAT(APINT_TYPE_PREFIX, 3816) +HANDLE_BAT(APINT_TYPE_PREFIX, 3817) +HANDLE_BAT(APINT_TYPE_PREFIX, 3818) +HANDLE_BAT(APINT_TYPE_PREFIX, 3819) +HANDLE_BAT(APINT_TYPE_PREFIX, 3820) +HANDLE_BAT(APINT_TYPE_PREFIX, 3821) +HANDLE_BAT(APINT_TYPE_PREFIX, 3822) +HANDLE_BAT(APINT_TYPE_PREFIX, 3823) +HANDLE_BAT(APINT_TYPE_PREFIX, 3824) +HANDLE_BAT(APINT_TYPE_PREFIX, 3825) +HANDLE_BAT(APINT_TYPE_PREFIX, 3826) +HANDLE_BAT(APINT_TYPE_PREFIX, 3827) +HANDLE_BAT(APINT_TYPE_PREFIX, 3828) +HANDLE_BAT(APINT_TYPE_PREFIX, 3829) +HANDLE_BAT(APINT_TYPE_PREFIX, 3830) +HANDLE_BAT(APINT_TYPE_PREFIX, 3831) +HANDLE_BAT(APINT_TYPE_PREFIX, 3832) +HANDLE_BAT(APINT_TYPE_PREFIX, 3833) +HANDLE_BAT(APINT_TYPE_PREFIX, 3834) +HANDLE_BAT(APINT_TYPE_PREFIX, 3835) +HANDLE_BAT(APINT_TYPE_PREFIX, 3836) +HANDLE_BAT(APINT_TYPE_PREFIX, 3837) +HANDLE_BAT(APINT_TYPE_PREFIX, 3838) +HANDLE_BAT(APINT_TYPE_PREFIX, 3839) +HANDLE_BAT(APINT_TYPE_PREFIX, 3840) +HANDLE_BAT(APINT_TYPE_PREFIX, 3841) +HANDLE_BAT(APINT_TYPE_PREFIX, 3842) +HANDLE_BAT(APINT_TYPE_PREFIX, 3843) +HANDLE_BAT(APINT_TYPE_PREFIX, 3844) +HANDLE_BAT(APINT_TYPE_PREFIX, 3845) +HANDLE_BAT(APINT_TYPE_PREFIX, 3846) +HANDLE_BAT(APINT_TYPE_PREFIX, 3847) +HANDLE_BAT(APINT_TYPE_PREFIX, 3848) +HANDLE_BAT(APINT_TYPE_PREFIX, 3849) +HANDLE_BAT(APINT_TYPE_PREFIX, 3850) +HANDLE_BAT(APINT_TYPE_PREFIX, 3851) +HANDLE_BAT(APINT_TYPE_PREFIX, 3852) +HANDLE_BAT(APINT_TYPE_PREFIX, 3853) +HANDLE_BAT(APINT_TYPE_PREFIX, 3854) +HANDLE_BAT(APINT_TYPE_PREFIX, 3855) +HANDLE_BAT(APINT_TYPE_PREFIX, 3856) +HANDLE_BAT(APINT_TYPE_PREFIX, 3857) +HANDLE_BAT(APINT_TYPE_PREFIX, 3858) +HANDLE_BAT(APINT_TYPE_PREFIX, 3859) +HANDLE_BAT(APINT_TYPE_PREFIX, 3860) +HANDLE_BAT(APINT_TYPE_PREFIX, 3861) +HANDLE_BAT(APINT_TYPE_PREFIX, 3862) +HANDLE_BAT(APINT_TYPE_PREFIX, 3863) +HANDLE_BAT(APINT_TYPE_PREFIX, 3864) +HANDLE_BAT(APINT_TYPE_PREFIX, 3865) +HANDLE_BAT(APINT_TYPE_PREFIX, 3866) +HANDLE_BAT(APINT_TYPE_PREFIX, 3867) +HANDLE_BAT(APINT_TYPE_PREFIX, 3868) +HANDLE_BAT(APINT_TYPE_PREFIX, 3869) +HANDLE_BAT(APINT_TYPE_PREFIX, 3870) +HANDLE_BAT(APINT_TYPE_PREFIX, 3871) +HANDLE_BAT(APINT_TYPE_PREFIX, 3872) +HANDLE_BAT(APINT_TYPE_PREFIX, 3873) +HANDLE_BAT(APINT_TYPE_PREFIX, 3874) +HANDLE_BAT(APINT_TYPE_PREFIX, 3875) +HANDLE_BAT(APINT_TYPE_PREFIX, 3876) +HANDLE_BAT(APINT_TYPE_PREFIX, 3877) +HANDLE_BAT(APINT_TYPE_PREFIX, 3878) +HANDLE_BAT(APINT_TYPE_PREFIX, 3879) +HANDLE_BAT(APINT_TYPE_PREFIX, 3880) +HANDLE_BAT(APINT_TYPE_PREFIX, 3881) +HANDLE_BAT(APINT_TYPE_PREFIX, 3882) +HANDLE_BAT(APINT_TYPE_PREFIX, 3883) +HANDLE_BAT(APINT_TYPE_PREFIX, 3884) +HANDLE_BAT(APINT_TYPE_PREFIX, 3885) +HANDLE_BAT(APINT_TYPE_PREFIX, 3886) +HANDLE_BAT(APINT_TYPE_PREFIX, 3887) +HANDLE_BAT(APINT_TYPE_PREFIX, 3888) +HANDLE_BAT(APINT_TYPE_PREFIX, 3889) +HANDLE_BAT(APINT_TYPE_PREFIX, 3890) +HANDLE_BAT(APINT_TYPE_PREFIX, 3891) +HANDLE_BAT(APINT_TYPE_PREFIX, 3892) +HANDLE_BAT(APINT_TYPE_PREFIX, 3893) +HANDLE_BAT(APINT_TYPE_PREFIX, 3894) +HANDLE_BAT(APINT_TYPE_PREFIX, 3895) +HANDLE_BAT(APINT_TYPE_PREFIX, 3896) +HANDLE_BAT(APINT_TYPE_PREFIX, 3897) +HANDLE_BAT(APINT_TYPE_PREFIX, 3898) +HANDLE_BAT(APINT_TYPE_PREFIX, 3899) +HANDLE_BAT(APINT_TYPE_PREFIX, 3900) +HANDLE_BAT(APINT_TYPE_PREFIX, 3901) +HANDLE_BAT(APINT_TYPE_PREFIX, 3902) +HANDLE_BAT(APINT_TYPE_PREFIX, 3903) +HANDLE_BAT(APINT_TYPE_PREFIX, 3904) +HANDLE_BAT(APINT_TYPE_PREFIX, 3905) +HANDLE_BAT(APINT_TYPE_PREFIX, 3906) +HANDLE_BAT(APINT_TYPE_PREFIX, 3907) +HANDLE_BAT(APINT_TYPE_PREFIX, 3908) +HANDLE_BAT(APINT_TYPE_PREFIX, 3909) +HANDLE_BAT(APINT_TYPE_PREFIX, 3910) +HANDLE_BAT(APINT_TYPE_PREFIX, 3911) +HANDLE_BAT(APINT_TYPE_PREFIX, 3912) +HANDLE_BAT(APINT_TYPE_PREFIX, 3913) +HANDLE_BAT(APINT_TYPE_PREFIX, 3914) +HANDLE_BAT(APINT_TYPE_PREFIX, 3915) +HANDLE_BAT(APINT_TYPE_PREFIX, 3916) +HANDLE_BAT(APINT_TYPE_PREFIX, 3917) +HANDLE_BAT(APINT_TYPE_PREFIX, 3918) +HANDLE_BAT(APINT_TYPE_PREFIX, 3919) +HANDLE_BAT(APINT_TYPE_PREFIX, 3920) +HANDLE_BAT(APINT_TYPE_PREFIX, 3921) +HANDLE_BAT(APINT_TYPE_PREFIX, 3922) +HANDLE_BAT(APINT_TYPE_PREFIX, 3923) +HANDLE_BAT(APINT_TYPE_PREFIX, 3924) +HANDLE_BAT(APINT_TYPE_PREFIX, 3925) +HANDLE_BAT(APINT_TYPE_PREFIX, 3926) +HANDLE_BAT(APINT_TYPE_PREFIX, 3927) +HANDLE_BAT(APINT_TYPE_PREFIX, 3928) +HANDLE_BAT(APINT_TYPE_PREFIX, 3929) +HANDLE_BAT(APINT_TYPE_PREFIX, 3930) +HANDLE_BAT(APINT_TYPE_PREFIX, 3931) +HANDLE_BAT(APINT_TYPE_PREFIX, 3932) +HANDLE_BAT(APINT_TYPE_PREFIX, 3933) +HANDLE_BAT(APINT_TYPE_PREFIX, 3934) +HANDLE_BAT(APINT_TYPE_PREFIX, 3935) +HANDLE_BAT(APINT_TYPE_PREFIX, 3936) +HANDLE_BAT(APINT_TYPE_PREFIX, 3937) +HANDLE_BAT(APINT_TYPE_PREFIX, 3938) +HANDLE_BAT(APINT_TYPE_PREFIX, 3939) +HANDLE_BAT(APINT_TYPE_PREFIX, 3940) +HANDLE_BAT(APINT_TYPE_PREFIX, 3941) +HANDLE_BAT(APINT_TYPE_PREFIX, 3942) +HANDLE_BAT(APINT_TYPE_PREFIX, 3943) +HANDLE_BAT(APINT_TYPE_PREFIX, 3944) +HANDLE_BAT(APINT_TYPE_PREFIX, 3945) +HANDLE_BAT(APINT_TYPE_PREFIX, 3946) +HANDLE_BAT(APINT_TYPE_PREFIX, 3947) +HANDLE_BAT(APINT_TYPE_PREFIX, 3948) +HANDLE_BAT(APINT_TYPE_PREFIX, 3949) +HANDLE_BAT(APINT_TYPE_PREFIX, 3950) +HANDLE_BAT(APINT_TYPE_PREFIX, 3951) +HANDLE_BAT(APINT_TYPE_PREFIX, 3952) +HANDLE_BAT(APINT_TYPE_PREFIX, 3953) +HANDLE_BAT(APINT_TYPE_PREFIX, 3954) +HANDLE_BAT(APINT_TYPE_PREFIX, 3955) +HANDLE_BAT(APINT_TYPE_PREFIX, 3956) +HANDLE_BAT(APINT_TYPE_PREFIX, 3957) +HANDLE_BAT(APINT_TYPE_PREFIX, 3958) +HANDLE_BAT(APINT_TYPE_PREFIX, 3959) +HANDLE_BAT(APINT_TYPE_PREFIX, 3960) +HANDLE_BAT(APINT_TYPE_PREFIX, 3961) +HANDLE_BAT(APINT_TYPE_PREFIX, 3962) +HANDLE_BAT(APINT_TYPE_PREFIX, 3963) +HANDLE_BAT(APINT_TYPE_PREFIX, 3964) +HANDLE_BAT(APINT_TYPE_PREFIX, 3965) +HANDLE_BAT(APINT_TYPE_PREFIX, 3966) +HANDLE_BAT(APINT_TYPE_PREFIX, 3967) +HANDLE_BAT(APINT_TYPE_PREFIX, 3968) +HANDLE_BAT(APINT_TYPE_PREFIX, 3969) +HANDLE_BAT(APINT_TYPE_PREFIX, 3970) +HANDLE_BAT(APINT_TYPE_PREFIX, 3971) +HANDLE_BAT(APINT_TYPE_PREFIX, 3972) +HANDLE_BAT(APINT_TYPE_PREFIX, 3973) +HANDLE_BAT(APINT_TYPE_PREFIX, 3974) +HANDLE_BAT(APINT_TYPE_PREFIX, 3975) +HANDLE_BAT(APINT_TYPE_PREFIX, 3976) +HANDLE_BAT(APINT_TYPE_PREFIX, 3977) +HANDLE_BAT(APINT_TYPE_PREFIX, 3978) +HANDLE_BAT(APINT_TYPE_PREFIX, 3979) +HANDLE_BAT(APINT_TYPE_PREFIX, 3980) +HANDLE_BAT(APINT_TYPE_PREFIX, 3981) +HANDLE_BAT(APINT_TYPE_PREFIX, 3982) +HANDLE_BAT(APINT_TYPE_PREFIX, 3983) +HANDLE_BAT(APINT_TYPE_PREFIX, 3984) +HANDLE_BAT(APINT_TYPE_PREFIX, 3985) +HANDLE_BAT(APINT_TYPE_PREFIX, 3986) +HANDLE_BAT(APINT_TYPE_PREFIX, 3987) +HANDLE_BAT(APINT_TYPE_PREFIX, 3988) +HANDLE_BAT(APINT_TYPE_PREFIX, 3989) +HANDLE_BAT(APINT_TYPE_PREFIX, 3990) +HANDLE_BAT(APINT_TYPE_PREFIX, 3991) +HANDLE_BAT(APINT_TYPE_PREFIX, 3992) +HANDLE_BAT(APINT_TYPE_PREFIX, 3993) +HANDLE_BAT(APINT_TYPE_PREFIX, 3994) +HANDLE_BAT(APINT_TYPE_PREFIX, 3995) +HANDLE_BAT(APINT_TYPE_PREFIX, 3996) +HANDLE_BAT(APINT_TYPE_PREFIX, 3997) +HANDLE_BAT(APINT_TYPE_PREFIX, 3998) +HANDLE_BAT(APINT_TYPE_PREFIX, 3999) +HANDLE_BAT(APINT_TYPE_PREFIX, 4000) +HANDLE_BAT(APINT_TYPE_PREFIX, 4001) +HANDLE_BAT(APINT_TYPE_PREFIX, 4002) +HANDLE_BAT(APINT_TYPE_PREFIX, 4003) +HANDLE_BAT(APINT_TYPE_PREFIX, 4004) +HANDLE_BAT(APINT_TYPE_PREFIX, 4005) +HANDLE_BAT(APINT_TYPE_PREFIX, 4006) +HANDLE_BAT(APINT_TYPE_PREFIX, 4007) +HANDLE_BAT(APINT_TYPE_PREFIX, 4008) +HANDLE_BAT(APINT_TYPE_PREFIX, 4009) +HANDLE_BAT(APINT_TYPE_PREFIX, 4010) +HANDLE_BAT(APINT_TYPE_PREFIX, 4011) +HANDLE_BAT(APINT_TYPE_PREFIX, 4012) +HANDLE_BAT(APINT_TYPE_PREFIX, 4013) +HANDLE_BAT(APINT_TYPE_PREFIX, 4014) +HANDLE_BAT(APINT_TYPE_PREFIX, 4015) +HANDLE_BAT(APINT_TYPE_PREFIX, 4016) +HANDLE_BAT(APINT_TYPE_PREFIX, 4017) +HANDLE_BAT(APINT_TYPE_PREFIX, 4018) +HANDLE_BAT(APINT_TYPE_PREFIX, 4019) +HANDLE_BAT(APINT_TYPE_PREFIX, 4020) +HANDLE_BAT(APINT_TYPE_PREFIX, 4021) +HANDLE_BAT(APINT_TYPE_PREFIX, 4022) +HANDLE_BAT(APINT_TYPE_PREFIX, 4023) +HANDLE_BAT(APINT_TYPE_PREFIX, 4024) +HANDLE_BAT(APINT_TYPE_PREFIX, 4025) +HANDLE_BAT(APINT_TYPE_PREFIX, 4026) +HANDLE_BAT(APINT_TYPE_PREFIX, 4027) +HANDLE_BAT(APINT_TYPE_PREFIX, 4028) +HANDLE_BAT(APINT_TYPE_PREFIX, 4029) +HANDLE_BAT(APINT_TYPE_PREFIX, 4030) +HANDLE_BAT(APINT_TYPE_PREFIX, 4031) +HANDLE_BAT(APINT_TYPE_PREFIX, 4032) +HANDLE_BAT(APINT_TYPE_PREFIX, 4033) +HANDLE_BAT(APINT_TYPE_PREFIX, 4034) +HANDLE_BAT(APINT_TYPE_PREFIX, 4035) +HANDLE_BAT(APINT_TYPE_PREFIX, 4036) +HANDLE_BAT(APINT_TYPE_PREFIX, 4037) +HANDLE_BAT(APINT_TYPE_PREFIX, 4038) +HANDLE_BAT(APINT_TYPE_PREFIX, 4039) +HANDLE_BAT(APINT_TYPE_PREFIX, 4040) +HANDLE_BAT(APINT_TYPE_PREFIX, 4041) +HANDLE_BAT(APINT_TYPE_PREFIX, 4042) +HANDLE_BAT(APINT_TYPE_PREFIX, 4043) +HANDLE_BAT(APINT_TYPE_PREFIX, 4044) +HANDLE_BAT(APINT_TYPE_PREFIX, 4045) +HANDLE_BAT(APINT_TYPE_PREFIX, 4046) +HANDLE_BAT(APINT_TYPE_PREFIX, 4047) +HANDLE_BAT(APINT_TYPE_PREFIX, 4048) +HANDLE_BAT(APINT_TYPE_PREFIX, 4049) +HANDLE_BAT(APINT_TYPE_PREFIX, 4050) +HANDLE_BAT(APINT_TYPE_PREFIX, 4051) +HANDLE_BAT(APINT_TYPE_PREFIX, 4052) +HANDLE_BAT(APINT_TYPE_PREFIX, 4053) +HANDLE_BAT(APINT_TYPE_PREFIX, 4054) +HANDLE_BAT(APINT_TYPE_PREFIX, 4055) +HANDLE_BAT(APINT_TYPE_PREFIX, 4056) +HANDLE_BAT(APINT_TYPE_PREFIX, 4057) +HANDLE_BAT(APINT_TYPE_PREFIX, 4058) +HANDLE_BAT(APINT_TYPE_PREFIX, 4059) +HANDLE_BAT(APINT_TYPE_PREFIX, 4060) +HANDLE_BAT(APINT_TYPE_PREFIX, 4061) +HANDLE_BAT(APINT_TYPE_PREFIX, 4062) +HANDLE_BAT(APINT_TYPE_PREFIX, 4063) +HANDLE_BAT(APINT_TYPE_PREFIX, 4064) +HANDLE_BAT(APINT_TYPE_PREFIX, 4065) +HANDLE_BAT(APINT_TYPE_PREFIX, 4066) +HANDLE_BAT(APINT_TYPE_PREFIX, 4067) +HANDLE_BAT(APINT_TYPE_PREFIX, 4068) +HANDLE_BAT(APINT_TYPE_PREFIX, 4069) +HANDLE_BAT(APINT_TYPE_PREFIX, 4070) +HANDLE_BAT(APINT_TYPE_PREFIX, 4071) +HANDLE_BAT(APINT_TYPE_PREFIX, 4072) +HANDLE_BAT(APINT_TYPE_PREFIX, 4073) +HANDLE_BAT(APINT_TYPE_PREFIX, 4074) +HANDLE_BAT(APINT_TYPE_PREFIX, 4075) +HANDLE_BAT(APINT_TYPE_PREFIX, 4076) +HANDLE_BAT(APINT_TYPE_PREFIX, 4077) +HANDLE_BAT(APINT_TYPE_PREFIX, 4078) +HANDLE_BAT(APINT_TYPE_PREFIX, 4079) +HANDLE_BAT(APINT_TYPE_PREFIX, 4080) +HANDLE_BAT(APINT_TYPE_PREFIX, 4081) +HANDLE_BAT(APINT_TYPE_PREFIX, 4082) +HANDLE_BAT(APINT_TYPE_PREFIX, 4083) +HANDLE_BAT(APINT_TYPE_PREFIX, 4084) +HANDLE_BAT(APINT_TYPE_PREFIX, 4085) +HANDLE_BAT(APINT_TYPE_PREFIX, 4086) +HANDLE_BAT(APINT_TYPE_PREFIX, 4087) +HANDLE_BAT(APINT_TYPE_PREFIX, 4088) +HANDLE_BAT(APINT_TYPE_PREFIX, 4089) +HANDLE_BAT(APINT_TYPE_PREFIX, 4090) +HANDLE_BAT(APINT_TYPE_PREFIX, 4091) +HANDLE_BAT(APINT_TYPE_PREFIX, 4092) +HANDLE_BAT(APINT_TYPE_PREFIX, 4093) +HANDLE_BAT(APINT_TYPE_PREFIX, 4094) +HANDLE_BAT(APINT_TYPE_PREFIX, 4095) +HANDLE_BAT(APINT_TYPE_PREFIX, 4096) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 4 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 4097) +HANDLE_BAT(, 4098) +HANDLE_BAT(, 4099) +HANDLE_BAT(, 4100) +HANDLE_BAT(, 4101) +HANDLE_BAT(, 4102) +HANDLE_BAT(, 4103) +HANDLE_BAT(, 4104) +HANDLE_BAT(, 4105) +HANDLE_BAT(, 4106) +HANDLE_BAT(, 4107) +HANDLE_BAT(, 4108) +HANDLE_BAT(, 4109) +HANDLE_BAT(, 4110) +HANDLE_BAT(, 4111) +HANDLE_BAT(, 4112) +HANDLE_BAT(, 4113) +HANDLE_BAT(, 4114) +HANDLE_BAT(, 4115) +HANDLE_BAT(, 4116) +HANDLE_BAT(, 4117) +HANDLE_BAT(, 4118) +HANDLE_BAT(, 4119) +HANDLE_BAT(, 4120) +HANDLE_BAT(, 4121) +HANDLE_BAT(, 4122) +HANDLE_BAT(, 4123) +HANDLE_BAT(, 4124) +HANDLE_BAT(, 4125) +HANDLE_BAT(, 4126) +HANDLE_BAT(, 4127) +HANDLE_BAT(, 4128) +HANDLE_BAT(, 4129) +HANDLE_BAT(, 4130) +HANDLE_BAT(, 4131) +HANDLE_BAT(, 4132) +HANDLE_BAT(, 4133) +HANDLE_BAT(, 4134) +HANDLE_BAT(, 4135) +HANDLE_BAT(, 4136) +HANDLE_BAT(, 4137) +HANDLE_BAT(, 4138) +HANDLE_BAT(, 4139) +HANDLE_BAT(, 4140) +HANDLE_BAT(, 4141) +HANDLE_BAT(, 4142) +HANDLE_BAT(, 4143) +HANDLE_BAT(, 4144) +HANDLE_BAT(, 4145) +HANDLE_BAT(, 4146) +HANDLE_BAT(, 4147) +HANDLE_BAT(, 4148) +HANDLE_BAT(, 4149) +HANDLE_BAT(, 4150) +HANDLE_BAT(, 4151) +HANDLE_BAT(, 4152) +HANDLE_BAT(, 4153) +HANDLE_BAT(, 4154) +HANDLE_BAT(, 4155) +HANDLE_BAT(, 4156) +HANDLE_BAT(, 4157) +HANDLE_BAT(, 4158) +HANDLE_BAT(, 4159) +HANDLE_BAT(, 4160) +HANDLE_BAT(, 4161) +HANDLE_BAT(, 4162) +HANDLE_BAT(, 4163) +HANDLE_BAT(, 4164) +HANDLE_BAT(, 4165) +HANDLE_BAT(, 4166) +HANDLE_BAT(, 4167) +HANDLE_BAT(, 4168) +HANDLE_BAT(, 4169) +HANDLE_BAT(, 4170) +HANDLE_BAT(, 4171) +HANDLE_BAT(, 4172) +HANDLE_BAT(, 4173) +HANDLE_BAT(, 4174) +HANDLE_BAT(, 4175) +HANDLE_BAT(, 4176) +HANDLE_BAT(, 4177) +HANDLE_BAT(, 4178) +HANDLE_BAT(, 4179) +HANDLE_BAT(, 4180) +HANDLE_BAT(, 4181) +HANDLE_BAT(, 4182) +HANDLE_BAT(, 4183) +HANDLE_BAT(, 4184) +HANDLE_BAT(, 4185) +HANDLE_BAT(, 4186) +HANDLE_BAT(, 4187) +HANDLE_BAT(, 4188) +HANDLE_BAT(, 4189) +HANDLE_BAT(, 4190) +HANDLE_BAT(, 4191) +HANDLE_BAT(, 4192) +HANDLE_BAT(, 4193) +HANDLE_BAT(, 4194) +HANDLE_BAT(, 4195) +HANDLE_BAT(, 4196) +HANDLE_BAT(, 4197) +HANDLE_BAT(, 4198) +HANDLE_BAT(, 4199) +HANDLE_BAT(, 4200) +HANDLE_BAT(, 4201) +HANDLE_BAT(, 4202) +HANDLE_BAT(, 4203) +HANDLE_BAT(, 4204) +HANDLE_BAT(, 4205) +HANDLE_BAT(, 4206) +HANDLE_BAT(, 4207) +HANDLE_BAT(, 4208) +HANDLE_BAT(, 4209) +HANDLE_BAT(, 4210) +HANDLE_BAT(, 4211) +HANDLE_BAT(, 4212) +HANDLE_BAT(, 4213) +HANDLE_BAT(, 4214) +HANDLE_BAT(, 4215) +HANDLE_BAT(, 4216) +HANDLE_BAT(, 4217) +HANDLE_BAT(, 4218) +HANDLE_BAT(, 4219) +HANDLE_BAT(, 4220) +HANDLE_BAT(, 4221) +HANDLE_BAT(, 4222) +HANDLE_BAT(, 4223) +HANDLE_BAT(, 4224) +HANDLE_BAT(, 4225) +HANDLE_BAT(, 4226) +HANDLE_BAT(, 4227) +HANDLE_BAT(, 4228) +HANDLE_BAT(, 4229) +HANDLE_BAT(, 4230) +HANDLE_BAT(, 4231) +HANDLE_BAT(, 4232) +HANDLE_BAT(, 4233) +HANDLE_BAT(, 4234) +HANDLE_BAT(, 4235) +HANDLE_BAT(, 4236) +HANDLE_BAT(, 4237) +HANDLE_BAT(, 4238) +HANDLE_BAT(, 4239) +HANDLE_BAT(, 4240) +HANDLE_BAT(, 4241) +HANDLE_BAT(, 4242) +HANDLE_BAT(, 4243) +HANDLE_BAT(, 4244) +HANDLE_BAT(, 4245) +HANDLE_BAT(, 4246) +HANDLE_BAT(, 4247) +HANDLE_BAT(, 4248) +HANDLE_BAT(, 4249) +HANDLE_BAT(, 4250) +HANDLE_BAT(, 4251) +HANDLE_BAT(, 4252) +HANDLE_BAT(, 4253) +HANDLE_BAT(, 4254) +HANDLE_BAT(, 4255) +HANDLE_BAT(, 4256) +HANDLE_BAT(, 4257) +HANDLE_BAT(, 4258) +HANDLE_BAT(, 4259) +HANDLE_BAT(, 4260) +HANDLE_BAT(, 4261) +HANDLE_BAT(, 4262) +HANDLE_BAT(, 4263) +HANDLE_BAT(, 4264) +HANDLE_BAT(, 4265) +HANDLE_BAT(, 4266) +HANDLE_BAT(, 4267) +HANDLE_BAT(, 4268) +HANDLE_BAT(, 4269) +HANDLE_BAT(, 4270) +HANDLE_BAT(, 4271) +HANDLE_BAT(, 4272) +HANDLE_BAT(, 4273) +HANDLE_BAT(, 4274) +HANDLE_BAT(, 4275) +HANDLE_BAT(, 4276) +HANDLE_BAT(, 4277) +HANDLE_BAT(, 4278) +HANDLE_BAT(, 4279) +HANDLE_BAT(, 4280) +HANDLE_BAT(, 4281) +HANDLE_BAT(, 4282) +HANDLE_BAT(, 4283) +HANDLE_BAT(, 4284) +HANDLE_BAT(, 4285) +HANDLE_BAT(, 4286) +HANDLE_BAT(, 4287) +HANDLE_BAT(, 4288) +HANDLE_BAT(, 4289) +HANDLE_BAT(, 4290) +HANDLE_BAT(, 4291) +HANDLE_BAT(, 4292) +HANDLE_BAT(, 4293) +HANDLE_BAT(, 4294) +HANDLE_BAT(, 4295) +HANDLE_BAT(, 4296) +HANDLE_BAT(, 4297) +HANDLE_BAT(, 4298) +HANDLE_BAT(, 4299) +HANDLE_BAT(, 4300) +HANDLE_BAT(, 4301) +HANDLE_BAT(, 4302) +HANDLE_BAT(, 4303) +HANDLE_BAT(, 4304) +HANDLE_BAT(, 4305) +HANDLE_BAT(, 4306) +HANDLE_BAT(, 4307) +HANDLE_BAT(, 4308) +HANDLE_BAT(, 4309) +HANDLE_BAT(, 4310) +HANDLE_BAT(, 4311) +HANDLE_BAT(, 4312) +HANDLE_BAT(, 4313) +HANDLE_BAT(, 4314) +HANDLE_BAT(, 4315) +HANDLE_BAT(, 4316) +HANDLE_BAT(, 4317) +HANDLE_BAT(, 4318) +HANDLE_BAT(, 4319) +HANDLE_BAT(, 4320) +HANDLE_BAT(, 4321) +HANDLE_BAT(, 4322) +HANDLE_BAT(, 4323) +HANDLE_BAT(, 4324) +HANDLE_BAT(, 4325) +HANDLE_BAT(, 4326) +HANDLE_BAT(, 4327) +HANDLE_BAT(, 4328) +HANDLE_BAT(, 4329) +HANDLE_BAT(, 4330) +HANDLE_BAT(, 4331) +HANDLE_BAT(, 4332) +HANDLE_BAT(, 4333) +HANDLE_BAT(, 4334) +HANDLE_BAT(, 4335) +HANDLE_BAT(, 4336) +HANDLE_BAT(, 4337) +HANDLE_BAT(, 4338) +HANDLE_BAT(, 4339) +HANDLE_BAT(, 4340) +HANDLE_BAT(, 4341) +HANDLE_BAT(, 4342) +HANDLE_BAT(, 4343) +HANDLE_BAT(, 4344) +HANDLE_BAT(, 4345) +HANDLE_BAT(, 4346) +HANDLE_BAT(, 4347) +HANDLE_BAT(, 4348) +HANDLE_BAT(, 4349) +HANDLE_BAT(, 4350) +HANDLE_BAT(, 4351) +HANDLE_BAT(, 4352) +HANDLE_BAT(, 4353) +HANDLE_BAT(, 4354) +HANDLE_BAT(, 4355) +HANDLE_BAT(, 4356) +HANDLE_BAT(, 4357) +HANDLE_BAT(, 4358) +HANDLE_BAT(, 4359) +HANDLE_BAT(, 4360) +HANDLE_BAT(, 4361) +HANDLE_BAT(, 4362) +HANDLE_BAT(, 4363) +HANDLE_BAT(, 4364) +HANDLE_BAT(, 4365) +HANDLE_BAT(, 4366) +HANDLE_BAT(, 4367) +HANDLE_BAT(, 4368) +HANDLE_BAT(, 4369) +HANDLE_BAT(, 4370) +HANDLE_BAT(, 4371) +HANDLE_BAT(, 4372) +HANDLE_BAT(, 4373) +HANDLE_BAT(, 4374) +HANDLE_BAT(, 4375) +HANDLE_BAT(, 4376) +HANDLE_BAT(, 4377) +HANDLE_BAT(, 4378) +HANDLE_BAT(, 4379) +HANDLE_BAT(, 4380) +HANDLE_BAT(, 4381) +HANDLE_BAT(, 4382) +HANDLE_BAT(, 4383) +HANDLE_BAT(, 4384) +HANDLE_BAT(, 4385) +HANDLE_BAT(, 4386) +HANDLE_BAT(, 4387) +HANDLE_BAT(, 4388) +HANDLE_BAT(, 4389) +HANDLE_BAT(, 4390) +HANDLE_BAT(, 4391) +HANDLE_BAT(, 4392) +HANDLE_BAT(, 4393) +HANDLE_BAT(, 4394) +HANDLE_BAT(, 4395) +HANDLE_BAT(, 4396) +HANDLE_BAT(, 4397) +HANDLE_BAT(, 4398) +HANDLE_BAT(, 4399) +HANDLE_BAT(, 4400) +HANDLE_BAT(, 4401) +HANDLE_BAT(, 4402) +HANDLE_BAT(, 4403) +HANDLE_BAT(, 4404) +HANDLE_BAT(, 4405) +HANDLE_BAT(, 4406) +HANDLE_BAT(, 4407) +HANDLE_BAT(, 4408) +HANDLE_BAT(, 4409) +HANDLE_BAT(, 4410) +HANDLE_BAT(, 4411) +HANDLE_BAT(, 4412) +HANDLE_BAT(, 4413) +HANDLE_BAT(, 4414) +HANDLE_BAT(, 4415) +HANDLE_BAT(, 4416) +HANDLE_BAT(, 4417) +HANDLE_BAT(, 4418) +HANDLE_BAT(, 4419) +HANDLE_BAT(, 4420) +HANDLE_BAT(, 4421) +HANDLE_BAT(, 4422) +HANDLE_BAT(, 4423) +HANDLE_BAT(, 4424) +HANDLE_BAT(, 4425) +HANDLE_BAT(, 4426) +HANDLE_BAT(, 4427) +HANDLE_BAT(, 4428) +HANDLE_BAT(, 4429) +HANDLE_BAT(, 4430) +HANDLE_BAT(, 4431) +HANDLE_BAT(, 4432) +HANDLE_BAT(, 4433) +HANDLE_BAT(, 4434) +HANDLE_BAT(, 4435) +HANDLE_BAT(, 4436) +HANDLE_BAT(, 4437) +HANDLE_BAT(, 4438) +HANDLE_BAT(, 4439) +HANDLE_BAT(, 4440) +HANDLE_BAT(, 4441) +HANDLE_BAT(, 4442) +HANDLE_BAT(, 4443) +HANDLE_BAT(, 4444) +HANDLE_BAT(, 4445) +HANDLE_BAT(, 4446) +HANDLE_BAT(, 4447) +HANDLE_BAT(, 4448) +HANDLE_BAT(, 4449) +HANDLE_BAT(, 4450) +HANDLE_BAT(, 4451) +HANDLE_BAT(, 4452) +HANDLE_BAT(, 4453) +HANDLE_BAT(, 4454) +HANDLE_BAT(, 4455) +HANDLE_BAT(, 4456) +HANDLE_BAT(, 4457) +HANDLE_BAT(, 4458) +HANDLE_BAT(, 4459) +HANDLE_BAT(, 4460) +HANDLE_BAT(, 4461) +HANDLE_BAT(, 4462) +HANDLE_BAT(, 4463) +HANDLE_BAT(, 4464) +HANDLE_BAT(, 4465) +HANDLE_BAT(, 4466) +HANDLE_BAT(, 4467) +HANDLE_BAT(, 4468) +HANDLE_BAT(, 4469) +HANDLE_BAT(, 4470) +HANDLE_BAT(, 4471) +HANDLE_BAT(, 4472) +HANDLE_BAT(, 4473) +HANDLE_BAT(, 4474) +HANDLE_BAT(, 4475) +HANDLE_BAT(, 4476) +HANDLE_BAT(, 4477) +HANDLE_BAT(, 4478) +HANDLE_BAT(, 4479) +HANDLE_BAT(, 4480) +HANDLE_BAT(, 4481) +HANDLE_BAT(, 4482) +HANDLE_BAT(, 4483) +HANDLE_BAT(, 4484) +HANDLE_BAT(, 4485) +HANDLE_BAT(, 4486) +HANDLE_BAT(, 4487) +HANDLE_BAT(, 4488) +HANDLE_BAT(, 4489) +HANDLE_BAT(, 4490) +HANDLE_BAT(, 4491) +HANDLE_BAT(, 4492) +HANDLE_BAT(, 4493) +HANDLE_BAT(, 4494) +HANDLE_BAT(, 4495) +HANDLE_BAT(, 4496) +HANDLE_BAT(, 4497) +HANDLE_BAT(, 4498) +HANDLE_BAT(, 4499) +HANDLE_BAT(, 4500) +HANDLE_BAT(, 4501) +HANDLE_BAT(, 4502) +HANDLE_BAT(, 4503) +HANDLE_BAT(, 4504) +HANDLE_BAT(, 4505) +HANDLE_BAT(, 4506) +HANDLE_BAT(, 4507) +HANDLE_BAT(, 4508) +HANDLE_BAT(, 4509) +HANDLE_BAT(, 4510) +HANDLE_BAT(, 4511) +HANDLE_BAT(, 4512) +HANDLE_BAT(, 4513) +HANDLE_BAT(, 4514) +HANDLE_BAT(, 4515) +HANDLE_BAT(, 4516) +HANDLE_BAT(, 4517) +HANDLE_BAT(, 4518) +HANDLE_BAT(, 4519) +HANDLE_BAT(, 4520) +HANDLE_BAT(, 4521) +HANDLE_BAT(, 4522) +HANDLE_BAT(, 4523) +HANDLE_BAT(, 4524) +HANDLE_BAT(, 4525) +HANDLE_BAT(, 4526) +HANDLE_BAT(, 4527) +HANDLE_BAT(, 4528) +HANDLE_BAT(, 4529) +HANDLE_BAT(, 4530) +HANDLE_BAT(, 4531) +HANDLE_BAT(, 4532) +HANDLE_BAT(, 4533) +HANDLE_BAT(, 4534) +HANDLE_BAT(, 4535) +HANDLE_BAT(, 4536) +HANDLE_BAT(, 4537) +HANDLE_BAT(, 4538) +HANDLE_BAT(, 4539) +HANDLE_BAT(, 4540) +HANDLE_BAT(, 4541) +HANDLE_BAT(, 4542) +HANDLE_BAT(, 4543) +HANDLE_BAT(, 4544) +HANDLE_BAT(, 4545) +HANDLE_BAT(, 4546) +HANDLE_BAT(, 4547) +HANDLE_BAT(, 4548) +HANDLE_BAT(, 4549) +HANDLE_BAT(, 4550) +HANDLE_BAT(, 4551) +HANDLE_BAT(, 4552) +HANDLE_BAT(, 4553) +HANDLE_BAT(, 4554) +HANDLE_BAT(, 4555) +HANDLE_BAT(, 4556) +HANDLE_BAT(, 4557) +HANDLE_BAT(, 4558) +HANDLE_BAT(, 4559) +HANDLE_BAT(, 4560) +HANDLE_BAT(, 4561) +HANDLE_BAT(, 4562) +HANDLE_BAT(, 4563) +HANDLE_BAT(, 4564) +HANDLE_BAT(, 4565) +HANDLE_BAT(, 4566) +HANDLE_BAT(, 4567) +HANDLE_BAT(, 4568) +HANDLE_BAT(, 4569) +HANDLE_BAT(, 4570) +HANDLE_BAT(, 4571) +HANDLE_BAT(, 4572) +HANDLE_BAT(, 4573) +HANDLE_BAT(, 4574) +HANDLE_BAT(, 4575) +HANDLE_BAT(, 4576) +HANDLE_BAT(, 4577) +HANDLE_BAT(, 4578) +HANDLE_BAT(, 4579) +HANDLE_BAT(, 4580) +HANDLE_BAT(, 4581) +HANDLE_BAT(, 4582) +HANDLE_BAT(, 4583) +HANDLE_BAT(, 4584) +HANDLE_BAT(, 4585) +HANDLE_BAT(, 4586) +HANDLE_BAT(, 4587) +HANDLE_BAT(, 4588) +HANDLE_BAT(, 4589) +HANDLE_BAT(, 4590) +HANDLE_BAT(, 4591) +HANDLE_BAT(, 4592) +HANDLE_BAT(, 4593) +HANDLE_BAT(, 4594) +HANDLE_BAT(, 4595) +HANDLE_BAT(, 4596) +HANDLE_BAT(, 4597) +HANDLE_BAT(, 4598) +HANDLE_BAT(, 4599) +HANDLE_BAT(, 4600) +HANDLE_BAT(, 4601) +HANDLE_BAT(, 4602) +HANDLE_BAT(, 4603) +HANDLE_BAT(, 4604) +HANDLE_BAT(, 4605) +HANDLE_BAT(, 4606) +HANDLE_BAT(, 4607) +HANDLE_BAT(, 4608) +HANDLE_BAT(, 4609) +HANDLE_BAT(, 4610) +HANDLE_BAT(, 4611) +HANDLE_BAT(, 4612) +HANDLE_BAT(, 4613) +HANDLE_BAT(, 4614) +HANDLE_BAT(, 4615) +HANDLE_BAT(, 4616) +HANDLE_BAT(, 4617) +HANDLE_BAT(, 4618) +HANDLE_BAT(, 4619) +HANDLE_BAT(, 4620) +HANDLE_BAT(, 4621) +HANDLE_BAT(, 4622) +HANDLE_BAT(, 4623) +HANDLE_BAT(, 4624) +HANDLE_BAT(, 4625) +HANDLE_BAT(, 4626) +HANDLE_BAT(, 4627) +HANDLE_BAT(, 4628) +HANDLE_BAT(, 4629) +HANDLE_BAT(, 4630) +HANDLE_BAT(, 4631) +HANDLE_BAT(, 4632) +HANDLE_BAT(, 4633) +HANDLE_BAT(, 4634) +HANDLE_BAT(, 4635) +HANDLE_BAT(, 4636) +HANDLE_BAT(, 4637) +HANDLE_BAT(, 4638) +HANDLE_BAT(, 4639) +HANDLE_BAT(, 4640) +HANDLE_BAT(, 4641) +HANDLE_BAT(, 4642) +HANDLE_BAT(, 4643) +HANDLE_BAT(, 4644) +HANDLE_BAT(, 4645) +HANDLE_BAT(, 4646) +HANDLE_BAT(, 4647) +HANDLE_BAT(, 4648) +HANDLE_BAT(, 4649) +HANDLE_BAT(, 4650) +HANDLE_BAT(, 4651) +HANDLE_BAT(, 4652) +HANDLE_BAT(, 4653) +HANDLE_BAT(, 4654) +HANDLE_BAT(, 4655) +HANDLE_BAT(, 4656) +HANDLE_BAT(, 4657) +HANDLE_BAT(, 4658) +HANDLE_BAT(, 4659) +HANDLE_BAT(, 4660) +HANDLE_BAT(, 4661) +HANDLE_BAT(, 4662) +HANDLE_BAT(, 4663) +HANDLE_BAT(, 4664) +HANDLE_BAT(, 4665) +HANDLE_BAT(, 4666) +HANDLE_BAT(, 4667) +HANDLE_BAT(, 4668) +HANDLE_BAT(, 4669) +HANDLE_BAT(, 4670) +HANDLE_BAT(, 4671) +HANDLE_BAT(, 4672) +HANDLE_BAT(, 4673) +HANDLE_BAT(, 4674) +HANDLE_BAT(, 4675) +HANDLE_BAT(, 4676) +HANDLE_BAT(, 4677) +HANDLE_BAT(, 4678) +HANDLE_BAT(, 4679) +HANDLE_BAT(, 4680) +HANDLE_BAT(, 4681) +HANDLE_BAT(, 4682) +HANDLE_BAT(, 4683) +HANDLE_BAT(, 4684) +HANDLE_BAT(, 4685) +HANDLE_BAT(, 4686) +HANDLE_BAT(, 4687) +HANDLE_BAT(, 4688) +HANDLE_BAT(, 4689) +HANDLE_BAT(, 4690) +HANDLE_BAT(, 4691) +HANDLE_BAT(, 4692) +HANDLE_BAT(, 4693) +HANDLE_BAT(, 4694) +HANDLE_BAT(, 4695) +HANDLE_BAT(, 4696) +HANDLE_BAT(, 4697) +HANDLE_BAT(, 4698) +HANDLE_BAT(, 4699) +HANDLE_BAT(, 4700) +HANDLE_BAT(, 4701) +HANDLE_BAT(, 4702) +HANDLE_BAT(, 4703) +HANDLE_BAT(, 4704) +HANDLE_BAT(, 4705) +HANDLE_BAT(, 4706) +HANDLE_BAT(, 4707) +HANDLE_BAT(, 4708) +HANDLE_BAT(, 4709) +HANDLE_BAT(, 4710) +HANDLE_BAT(, 4711) +HANDLE_BAT(, 4712) +HANDLE_BAT(, 4713) +HANDLE_BAT(, 4714) +HANDLE_BAT(, 4715) +HANDLE_BAT(, 4716) +HANDLE_BAT(, 4717) +HANDLE_BAT(, 4718) +HANDLE_BAT(, 4719) +HANDLE_BAT(, 4720) +HANDLE_BAT(, 4721) +HANDLE_BAT(, 4722) +HANDLE_BAT(, 4723) +HANDLE_BAT(, 4724) +HANDLE_BAT(, 4725) +HANDLE_BAT(, 4726) +HANDLE_BAT(, 4727) +HANDLE_BAT(, 4728) +HANDLE_BAT(, 4729) +HANDLE_BAT(, 4730) +HANDLE_BAT(, 4731) +HANDLE_BAT(, 4732) +HANDLE_BAT(, 4733) +HANDLE_BAT(, 4734) +HANDLE_BAT(, 4735) +HANDLE_BAT(, 4736) +HANDLE_BAT(, 4737) +HANDLE_BAT(, 4738) +HANDLE_BAT(, 4739) +HANDLE_BAT(, 4740) +HANDLE_BAT(, 4741) +HANDLE_BAT(, 4742) +HANDLE_BAT(, 4743) +HANDLE_BAT(, 4744) +HANDLE_BAT(, 4745) +HANDLE_BAT(, 4746) +HANDLE_BAT(, 4747) +HANDLE_BAT(, 4748) +HANDLE_BAT(, 4749) +HANDLE_BAT(, 4750) +HANDLE_BAT(, 4751) +HANDLE_BAT(, 4752) +HANDLE_BAT(, 4753) +HANDLE_BAT(, 4754) +HANDLE_BAT(, 4755) +HANDLE_BAT(, 4756) +HANDLE_BAT(, 4757) +HANDLE_BAT(, 4758) +HANDLE_BAT(, 4759) +HANDLE_BAT(, 4760) +HANDLE_BAT(, 4761) +HANDLE_BAT(, 4762) +HANDLE_BAT(, 4763) +HANDLE_BAT(, 4764) +HANDLE_BAT(, 4765) +HANDLE_BAT(, 4766) +HANDLE_BAT(, 4767) +HANDLE_BAT(, 4768) +HANDLE_BAT(, 4769) +HANDLE_BAT(, 4770) +HANDLE_BAT(, 4771) +HANDLE_BAT(, 4772) +HANDLE_BAT(, 4773) +HANDLE_BAT(, 4774) +HANDLE_BAT(, 4775) +HANDLE_BAT(, 4776) +HANDLE_BAT(, 4777) +HANDLE_BAT(, 4778) +HANDLE_BAT(, 4779) +HANDLE_BAT(, 4780) +HANDLE_BAT(, 4781) +HANDLE_BAT(, 4782) +HANDLE_BAT(, 4783) +HANDLE_BAT(, 4784) +HANDLE_BAT(, 4785) +HANDLE_BAT(, 4786) +HANDLE_BAT(, 4787) +HANDLE_BAT(, 4788) +HANDLE_BAT(, 4789) +HANDLE_BAT(, 4790) +HANDLE_BAT(, 4791) +HANDLE_BAT(, 4792) +HANDLE_BAT(, 4793) +HANDLE_BAT(, 4794) +HANDLE_BAT(, 4795) +HANDLE_BAT(, 4796) +HANDLE_BAT(, 4797) +HANDLE_BAT(, 4798) +HANDLE_BAT(, 4799) +HANDLE_BAT(, 4800) +HANDLE_BAT(, 4801) +HANDLE_BAT(, 4802) +HANDLE_BAT(, 4803) +HANDLE_BAT(, 4804) +HANDLE_BAT(, 4805) +HANDLE_BAT(, 4806) +HANDLE_BAT(, 4807) +HANDLE_BAT(, 4808) +HANDLE_BAT(, 4809) +HANDLE_BAT(, 4810) +HANDLE_BAT(, 4811) +HANDLE_BAT(, 4812) +HANDLE_BAT(, 4813) +HANDLE_BAT(, 4814) +HANDLE_BAT(, 4815) +HANDLE_BAT(, 4816) +HANDLE_BAT(, 4817) +HANDLE_BAT(, 4818) +HANDLE_BAT(, 4819) +HANDLE_BAT(, 4820) +HANDLE_BAT(, 4821) +HANDLE_BAT(, 4822) +HANDLE_BAT(, 4823) +HANDLE_BAT(, 4824) +HANDLE_BAT(, 4825) +HANDLE_BAT(, 4826) +HANDLE_BAT(, 4827) +HANDLE_BAT(, 4828) +HANDLE_BAT(, 4829) +HANDLE_BAT(, 4830) +HANDLE_BAT(, 4831) +HANDLE_BAT(, 4832) +HANDLE_BAT(, 4833) +HANDLE_BAT(, 4834) +HANDLE_BAT(, 4835) +HANDLE_BAT(, 4836) +HANDLE_BAT(, 4837) +HANDLE_BAT(, 4838) +HANDLE_BAT(, 4839) +HANDLE_BAT(, 4840) +HANDLE_BAT(, 4841) +HANDLE_BAT(, 4842) +HANDLE_BAT(, 4843) +HANDLE_BAT(, 4844) +HANDLE_BAT(, 4845) +HANDLE_BAT(, 4846) +HANDLE_BAT(, 4847) +HANDLE_BAT(, 4848) +HANDLE_BAT(, 4849) +HANDLE_BAT(, 4850) +HANDLE_BAT(, 4851) +HANDLE_BAT(, 4852) +HANDLE_BAT(, 4853) +HANDLE_BAT(, 4854) +HANDLE_BAT(, 4855) +HANDLE_BAT(, 4856) +HANDLE_BAT(, 4857) +HANDLE_BAT(, 4858) +HANDLE_BAT(, 4859) +HANDLE_BAT(, 4860) +HANDLE_BAT(, 4861) +HANDLE_BAT(, 4862) +HANDLE_BAT(, 4863) +HANDLE_BAT(, 4864) +HANDLE_BAT(, 4865) +HANDLE_BAT(, 4866) +HANDLE_BAT(, 4867) +HANDLE_BAT(, 4868) +HANDLE_BAT(, 4869) +HANDLE_BAT(, 4870) +HANDLE_BAT(, 4871) +HANDLE_BAT(, 4872) +HANDLE_BAT(, 4873) +HANDLE_BAT(, 4874) +HANDLE_BAT(, 4875) +HANDLE_BAT(, 4876) +HANDLE_BAT(, 4877) +HANDLE_BAT(, 4878) +HANDLE_BAT(, 4879) +HANDLE_BAT(, 4880) +HANDLE_BAT(, 4881) +HANDLE_BAT(, 4882) +HANDLE_BAT(, 4883) +HANDLE_BAT(, 4884) +HANDLE_BAT(, 4885) +HANDLE_BAT(, 4886) +HANDLE_BAT(, 4887) +HANDLE_BAT(, 4888) +HANDLE_BAT(, 4889) +HANDLE_BAT(, 4890) +HANDLE_BAT(, 4891) +HANDLE_BAT(, 4892) +HANDLE_BAT(, 4893) +HANDLE_BAT(, 4894) +HANDLE_BAT(, 4895) +HANDLE_BAT(, 4896) +HANDLE_BAT(, 4897) +HANDLE_BAT(, 4898) +HANDLE_BAT(, 4899) +HANDLE_BAT(, 4900) +HANDLE_BAT(, 4901) +HANDLE_BAT(, 4902) +HANDLE_BAT(, 4903) +HANDLE_BAT(, 4904) +HANDLE_BAT(, 4905) +HANDLE_BAT(, 4906) +HANDLE_BAT(, 4907) +HANDLE_BAT(, 4908) +HANDLE_BAT(, 4909) +HANDLE_BAT(, 4910) +HANDLE_BAT(, 4911) +HANDLE_BAT(, 4912) +HANDLE_BAT(, 4913) +HANDLE_BAT(, 4914) +HANDLE_BAT(, 4915) +HANDLE_BAT(, 4916) +HANDLE_BAT(, 4917) +HANDLE_BAT(, 4918) +HANDLE_BAT(, 4919) +HANDLE_BAT(, 4920) +HANDLE_BAT(, 4921) +HANDLE_BAT(, 4922) +HANDLE_BAT(, 4923) +HANDLE_BAT(, 4924) +HANDLE_BAT(, 4925) +HANDLE_BAT(, 4926) +HANDLE_BAT(, 4927) +HANDLE_BAT(, 4928) +HANDLE_BAT(, 4929) +HANDLE_BAT(, 4930) +HANDLE_BAT(, 4931) +HANDLE_BAT(, 4932) +HANDLE_BAT(, 4933) +HANDLE_BAT(, 4934) +HANDLE_BAT(, 4935) +HANDLE_BAT(, 4936) +HANDLE_BAT(, 4937) +HANDLE_BAT(, 4938) +HANDLE_BAT(, 4939) +HANDLE_BAT(, 4940) +HANDLE_BAT(, 4941) +HANDLE_BAT(, 4942) +HANDLE_BAT(, 4943) +HANDLE_BAT(, 4944) +HANDLE_BAT(, 4945) +HANDLE_BAT(, 4946) +HANDLE_BAT(, 4947) +HANDLE_BAT(, 4948) +HANDLE_BAT(, 4949) +HANDLE_BAT(, 4950) +HANDLE_BAT(, 4951) +HANDLE_BAT(, 4952) +HANDLE_BAT(, 4953) +HANDLE_BAT(, 4954) +HANDLE_BAT(, 4955) +HANDLE_BAT(, 4956) +HANDLE_BAT(, 4957) +HANDLE_BAT(, 4958) +HANDLE_BAT(, 4959) +HANDLE_BAT(, 4960) +HANDLE_BAT(, 4961) +HANDLE_BAT(, 4962) +HANDLE_BAT(, 4963) +HANDLE_BAT(, 4964) +HANDLE_BAT(, 4965) +HANDLE_BAT(, 4966) +HANDLE_BAT(, 4967) +HANDLE_BAT(, 4968) +HANDLE_BAT(, 4969) +HANDLE_BAT(, 4970) +HANDLE_BAT(, 4971) +HANDLE_BAT(, 4972) +HANDLE_BAT(, 4973) +HANDLE_BAT(, 4974) +HANDLE_BAT(, 4975) +HANDLE_BAT(, 4976) +HANDLE_BAT(, 4977) +HANDLE_BAT(, 4978) +HANDLE_BAT(, 4979) +HANDLE_BAT(, 4980) +HANDLE_BAT(, 4981) +HANDLE_BAT(, 4982) +HANDLE_BAT(, 4983) +HANDLE_BAT(, 4984) +HANDLE_BAT(, 4985) +HANDLE_BAT(, 4986) +HANDLE_BAT(, 4987) +HANDLE_BAT(, 4988) +HANDLE_BAT(, 4989) +HANDLE_BAT(, 4990) +HANDLE_BAT(, 4991) +HANDLE_BAT(, 4992) +HANDLE_BAT(, 4993) +HANDLE_BAT(, 4994) +HANDLE_BAT(, 4995) +HANDLE_BAT(, 4996) +HANDLE_BAT(, 4997) +HANDLE_BAT(, 4998) +HANDLE_BAT(, 4999) +HANDLE_BAT(, 5000) +HANDLE_BAT(, 5001) +HANDLE_BAT(, 5002) +HANDLE_BAT(, 5003) +HANDLE_BAT(, 5004) +HANDLE_BAT(, 5005) +HANDLE_BAT(, 5006) +HANDLE_BAT(, 5007) +HANDLE_BAT(, 5008) +HANDLE_BAT(, 5009) +HANDLE_BAT(, 5010) +HANDLE_BAT(, 5011) +HANDLE_BAT(, 5012) +HANDLE_BAT(, 5013) +HANDLE_BAT(, 5014) +HANDLE_BAT(, 5015) +HANDLE_BAT(, 5016) +HANDLE_BAT(, 5017) +HANDLE_BAT(, 5018) +HANDLE_BAT(, 5019) +HANDLE_BAT(, 5020) +HANDLE_BAT(, 5021) +HANDLE_BAT(, 5022) +HANDLE_BAT(, 5023) +HANDLE_BAT(, 5024) +HANDLE_BAT(, 5025) +HANDLE_BAT(, 5026) +HANDLE_BAT(, 5027) +HANDLE_BAT(, 5028) +HANDLE_BAT(, 5029) +HANDLE_BAT(, 5030) +HANDLE_BAT(, 5031) +HANDLE_BAT(, 5032) +HANDLE_BAT(, 5033) +HANDLE_BAT(, 5034) +HANDLE_BAT(, 5035) +HANDLE_BAT(, 5036) +HANDLE_BAT(, 5037) +HANDLE_BAT(, 5038) +HANDLE_BAT(, 5039) +HANDLE_BAT(, 5040) +HANDLE_BAT(, 5041) +HANDLE_BAT(, 5042) +HANDLE_BAT(, 5043) +HANDLE_BAT(, 5044) +HANDLE_BAT(, 5045) +HANDLE_BAT(, 5046) +HANDLE_BAT(, 5047) +HANDLE_BAT(, 5048) +HANDLE_BAT(, 5049) +HANDLE_BAT(, 5050) +HANDLE_BAT(, 5051) +HANDLE_BAT(, 5052) +HANDLE_BAT(, 5053) +HANDLE_BAT(, 5054) +HANDLE_BAT(, 5055) +HANDLE_BAT(, 5056) +HANDLE_BAT(, 5057) +HANDLE_BAT(, 5058) +HANDLE_BAT(, 5059) +HANDLE_BAT(, 5060) +HANDLE_BAT(, 5061) +HANDLE_BAT(, 5062) +HANDLE_BAT(, 5063) +HANDLE_BAT(, 5064) +HANDLE_BAT(, 5065) +HANDLE_BAT(, 5066) +HANDLE_BAT(, 5067) +HANDLE_BAT(, 5068) +HANDLE_BAT(, 5069) +HANDLE_BAT(, 5070) +HANDLE_BAT(, 5071) +HANDLE_BAT(, 5072) +HANDLE_BAT(, 5073) +HANDLE_BAT(, 5074) +HANDLE_BAT(, 5075) +HANDLE_BAT(, 5076) +HANDLE_BAT(, 5077) +HANDLE_BAT(, 5078) +HANDLE_BAT(, 5079) +HANDLE_BAT(, 5080) +HANDLE_BAT(, 5081) +HANDLE_BAT(, 5082) +HANDLE_BAT(, 5083) +HANDLE_BAT(, 5084) +HANDLE_BAT(, 5085) +HANDLE_BAT(, 5086) +HANDLE_BAT(, 5087) +HANDLE_BAT(, 5088) +HANDLE_BAT(, 5089) +HANDLE_BAT(, 5090) +HANDLE_BAT(, 5091) +HANDLE_BAT(, 5092) +HANDLE_BAT(, 5093) +HANDLE_BAT(, 5094) +HANDLE_BAT(, 5095) +HANDLE_BAT(, 5096) +HANDLE_BAT(, 5097) +HANDLE_BAT(, 5098) +HANDLE_BAT(, 5099) +HANDLE_BAT(, 5100) +HANDLE_BAT(, 5101) +HANDLE_BAT(, 5102) +HANDLE_BAT(, 5103) +HANDLE_BAT(, 5104) +HANDLE_BAT(, 5105) +HANDLE_BAT(, 5106) +HANDLE_BAT(, 5107) +HANDLE_BAT(, 5108) +HANDLE_BAT(, 5109) +HANDLE_BAT(, 5110) +HANDLE_BAT(, 5111) +HANDLE_BAT(, 5112) +HANDLE_BAT(, 5113) +HANDLE_BAT(, 5114) +HANDLE_BAT(, 5115) +HANDLE_BAT(, 5116) +HANDLE_BAT(, 5117) +HANDLE_BAT(, 5118) +HANDLE_BAT(, 5119) +HANDLE_BAT(, 5120) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 4097) +HANDLE_BAT(APINT_TYPE_PREFIX, 4098) +HANDLE_BAT(APINT_TYPE_PREFIX, 4099) +HANDLE_BAT(APINT_TYPE_PREFIX, 4100) +HANDLE_BAT(APINT_TYPE_PREFIX, 4101) +HANDLE_BAT(APINT_TYPE_PREFIX, 4102) +HANDLE_BAT(APINT_TYPE_PREFIX, 4103) +HANDLE_BAT(APINT_TYPE_PREFIX, 4104) +HANDLE_BAT(APINT_TYPE_PREFIX, 4105) +HANDLE_BAT(APINT_TYPE_PREFIX, 4106) +HANDLE_BAT(APINT_TYPE_PREFIX, 4107) +HANDLE_BAT(APINT_TYPE_PREFIX, 4108) +HANDLE_BAT(APINT_TYPE_PREFIX, 4109) +HANDLE_BAT(APINT_TYPE_PREFIX, 4110) +HANDLE_BAT(APINT_TYPE_PREFIX, 4111) +HANDLE_BAT(APINT_TYPE_PREFIX, 4112) +HANDLE_BAT(APINT_TYPE_PREFIX, 4113) +HANDLE_BAT(APINT_TYPE_PREFIX, 4114) +HANDLE_BAT(APINT_TYPE_PREFIX, 4115) +HANDLE_BAT(APINT_TYPE_PREFIX, 4116) +HANDLE_BAT(APINT_TYPE_PREFIX, 4117) +HANDLE_BAT(APINT_TYPE_PREFIX, 4118) +HANDLE_BAT(APINT_TYPE_PREFIX, 4119) +HANDLE_BAT(APINT_TYPE_PREFIX, 4120) +HANDLE_BAT(APINT_TYPE_PREFIX, 4121) +HANDLE_BAT(APINT_TYPE_PREFIX, 4122) +HANDLE_BAT(APINT_TYPE_PREFIX, 4123) +HANDLE_BAT(APINT_TYPE_PREFIX, 4124) +HANDLE_BAT(APINT_TYPE_PREFIX, 4125) +HANDLE_BAT(APINT_TYPE_PREFIX, 4126) +HANDLE_BAT(APINT_TYPE_PREFIX, 4127) +HANDLE_BAT(APINT_TYPE_PREFIX, 4128) +HANDLE_BAT(APINT_TYPE_PREFIX, 4129) +HANDLE_BAT(APINT_TYPE_PREFIX, 4130) +HANDLE_BAT(APINT_TYPE_PREFIX, 4131) +HANDLE_BAT(APINT_TYPE_PREFIX, 4132) +HANDLE_BAT(APINT_TYPE_PREFIX, 4133) +HANDLE_BAT(APINT_TYPE_PREFIX, 4134) +HANDLE_BAT(APINT_TYPE_PREFIX, 4135) +HANDLE_BAT(APINT_TYPE_PREFIX, 4136) +HANDLE_BAT(APINT_TYPE_PREFIX, 4137) +HANDLE_BAT(APINT_TYPE_PREFIX, 4138) +HANDLE_BAT(APINT_TYPE_PREFIX, 4139) +HANDLE_BAT(APINT_TYPE_PREFIX, 4140) +HANDLE_BAT(APINT_TYPE_PREFIX, 4141) +HANDLE_BAT(APINT_TYPE_PREFIX, 4142) +HANDLE_BAT(APINT_TYPE_PREFIX, 4143) +HANDLE_BAT(APINT_TYPE_PREFIX, 4144) +HANDLE_BAT(APINT_TYPE_PREFIX, 4145) +HANDLE_BAT(APINT_TYPE_PREFIX, 4146) +HANDLE_BAT(APINT_TYPE_PREFIX, 4147) +HANDLE_BAT(APINT_TYPE_PREFIX, 4148) +HANDLE_BAT(APINT_TYPE_PREFIX, 4149) +HANDLE_BAT(APINT_TYPE_PREFIX, 4150) +HANDLE_BAT(APINT_TYPE_PREFIX, 4151) +HANDLE_BAT(APINT_TYPE_PREFIX, 4152) +HANDLE_BAT(APINT_TYPE_PREFIX, 4153) +HANDLE_BAT(APINT_TYPE_PREFIX, 4154) +HANDLE_BAT(APINT_TYPE_PREFIX, 4155) +HANDLE_BAT(APINT_TYPE_PREFIX, 4156) +HANDLE_BAT(APINT_TYPE_PREFIX, 4157) +HANDLE_BAT(APINT_TYPE_PREFIX, 4158) +HANDLE_BAT(APINT_TYPE_PREFIX, 4159) +HANDLE_BAT(APINT_TYPE_PREFIX, 4160) +HANDLE_BAT(APINT_TYPE_PREFIX, 4161) +HANDLE_BAT(APINT_TYPE_PREFIX, 4162) +HANDLE_BAT(APINT_TYPE_PREFIX, 4163) +HANDLE_BAT(APINT_TYPE_PREFIX, 4164) +HANDLE_BAT(APINT_TYPE_PREFIX, 4165) +HANDLE_BAT(APINT_TYPE_PREFIX, 4166) +HANDLE_BAT(APINT_TYPE_PREFIX, 4167) +HANDLE_BAT(APINT_TYPE_PREFIX, 4168) +HANDLE_BAT(APINT_TYPE_PREFIX, 4169) +HANDLE_BAT(APINT_TYPE_PREFIX, 4170) +HANDLE_BAT(APINT_TYPE_PREFIX, 4171) +HANDLE_BAT(APINT_TYPE_PREFIX, 4172) +HANDLE_BAT(APINT_TYPE_PREFIX, 4173) +HANDLE_BAT(APINT_TYPE_PREFIX, 4174) +HANDLE_BAT(APINT_TYPE_PREFIX, 4175) +HANDLE_BAT(APINT_TYPE_PREFIX, 4176) +HANDLE_BAT(APINT_TYPE_PREFIX, 4177) +HANDLE_BAT(APINT_TYPE_PREFIX, 4178) +HANDLE_BAT(APINT_TYPE_PREFIX, 4179) +HANDLE_BAT(APINT_TYPE_PREFIX, 4180) +HANDLE_BAT(APINT_TYPE_PREFIX, 4181) +HANDLE_BAT(APINT_TYPE_PREFIX, 4182) +HANDLE_BAT(APINT_TYPE_PREFIX, 4183) +HANDLE_BAT(APINT_TYPE_PREFIX, 4184) +HANDLE_BAT(APINT_TYPE_PREFIX, 4185) +HANDLE_BAT(APINT_TYPE_PREFIX, 4186) +HANDLE_BAT(APINT_TYPE_PREFIX, 4187) +HANDLE_BAT(APINT_TYPE_PREFIX, 4188) +HANDLE_BAT(APINT_TYPE_PREFIX, 4189) +HANDLE_BAT(APINT_TYPE_PREFIX, 4190) +HANDLE_BAT(APINT_TYPE_PREFIX, 4191) +HANDLE_BAT(APINT_TYPE_PREFIX, 4192) +HANDLE_BAT(APINT_TYPE_PREFIX, 4193) +HANDLE_BAT(APINT_TYPE_PREFIX, 4194) +HANDLE_BAT(APINT_TYPE_PREFIX, 4195) +HANDLE_BAT(APINT_TYPE_PREFIX, 4196) +HANDLE_BAT(APINT_TYPE_PREFIX, 4197) +HANDLE_BAT(APINT_TYPE_PREFIX, 4198) +HANDLE_BAT(APINT_TYPE_PREFIX, 4199) +HANDLE_BAT(APINT_TYPE_PREFIX, 4200) +HANDLE_BAT(APINT_TYPE_PREFIX, 4201) +HANDLE_BAT(APINT_TYPE_PREFIX, 4202) +HANDLE_BAT(APINT_TYPE_PREFIX, 4203) +HANDLE_BAT(APINT_TYPE_PREFIX, 4204) +HANDLE_BAT(APINT_TYPE_PREFIX, 4205) +HANDLE_BAT(APINT_TYPE_PREFIX, 4206) +HANDLE_BAT(APINT_TYPE_PREFIX, 4207) +HANDLE_BAT(APINT_TYPE_PREFIX, 4208) +HANDLE_BAT(APINT_TYPE_PREFIX, 4209) +HANDLE_BAT(APINT_TYPE_PREFIX, 4210) +HANDLE_BAT(APINT_TYPE_PREFIX, 4211) +HANDLE_BAT(APINT_TYPE_PREFIX, 4212) +HANDLE_BAT(APINT_TYPE_PREFIX, 4213) +HANDLE_BAT(APINT_TYPE_PREFIX, 4214) +HANDLE_BAT(APINT_TYPE_PREFIX, 4215) +HANDLE_BAT(APINT_TYPE_PREFIX, 4216) +HANDLE_BAT(APINT_TYPE_PREFIX, 4217) +HANDLE_BAT(APINT_TYPE_PREFIX, 4218) +HANDLE_BAT(APINT_TYPE_PREFIX, 4219) +HANDLE_BAT(APINT_TYPE_PREFIX, 4220) +HANDLE_BAT(APINT_TYPE_PREFIX, 4221) +HANDLE_BAT(APINT_TYPE_PREFIX, 4222) +HANDLE_BAT(APINT_TYPE_PREFIX, 4223) +HANDLE_BAT(APINT_TYPE_PREFIX, 4224) +HANDLE_BAT(APINT_TYPE_PREFIX, 4225) +HANDLE_BAT(APINT_TYPE_PREFIX, 4226) +HANDLE_BAT(APINT_TYPE_PREFIX, 4227) +HANDLE_BAT(APINT_TYPE_PREFIX, 4228) +HANDLE_BAT(APINT_TYPE_PREFIX, 4229) +HANDLE_BAT(APINT_TYPE_PREFIX, 4230) +HANDLE_BAT(APINT_TYPE_PREFIX, 4231) +HANDLE_BAT(APINT_TYPE_PREFIX, 4232) +HANDLE_BAT(APINT_TYPE_PREFIX, 4233) +HANDLE_BAT(APINT_TYPE_PREFIX, 4234) +HANDLE_BAT(APINT_TYPE_PREFIX, 4235) +HANDLE_BAT(APINT_TYPE_PREFIX, 4236) +HANDLE_BAT(APINT_TYPE_PREFIX, 4237) +HANDLE_BAT(APINT_TYPE_PREFIX, 4238) +HANDLE_BAT(APINT_TYPE_PREFIX, 4239) +HANDLE_BAT(APINT_TYPE_PREFIX, 4240) +HANDLE_BAT(APINT_TYPE_PREFIX, 4241) +HANDLE_BAT(APINT_TYPE_PREFIX, 4242) +HANDLE_BAT(APINT_TYPE_PREFIX, 4243) +HANDLE_BAT(APINT_TYPE_PREFIX, 4244) +HANDLE_BAT(APINT_TYPE_PREFIX, 4245) +HANDLE_BAT(APINT_TYPE_PREFIX, 4246) +HANDLE_BAT(APINT_TYPE_PREFIX, 4247) +HANDLE_BAT(APINT_TYPE_PREFIX, 4248) +HANDLE_BAT(APINT_TYPE_PREFIX, 4249) +HANDLE_BAT(APINT_TYPE_PREFIX, 4250) +HANDLE_BAT(APINT_TYPE_PREFIX, 4251) +HANDLE_BAT(APINT_TYPE_PREFIX, 4252) +HANDLE_BAT(APINT_TYPE_PREFIX, 4253) +HANDLE_BAT(APINT_TYPE_PREFIX, 4254) +HANDLE_BAT(APINT_TYPE_PREFIX, 4255) +HANDLE_BAT(APINT_TYPE_PREFIX, 4256) +HANDLE_BAT(APINT_TYPE_PREFIX, 4257) +HANDLE_BAT(APINT_TYPE_PREFIX, 4258) +HANDLE_BAT(APINT_TYPE_PREFIX, 4259) +HANDLE_BAT(APINT_TYPE_PREFIX, 4260) +HANDLE_BAT(APINT_TYPE_PREFIX, 4261) +HANDLE_BAT(APINT_TYPE_PREFIX, 4262) +HANDLE_BAT(APINT_TYPE_PREFIX, 4263) +HANDLE_BAT(APINT_TYPE_PREFIX, 4264) +HANDLE_BAT(APINT_TYPE_PREFIX, 4265) +HANDLE_BAT(APINT_TYPE_PREFIX, 4266) +HANDLE_BAT(APINT_TYPE_PREFIX, 4267) +HANDLE_BAT(APINT_TYPE_PREFIX, 4268) +HANDLE_BAT(APINT_TYPE_PREFIX, 4269) +HANDLE_BAT(APINT_TYPE_PREFIX, 4270) +HANDLE_BAT(APINT_TYPE_PREFIX, 4271) +HANDLE_BAT(APINT_TYPE_PREFIX, 4272) +HANDLE_BAT(APINT_TYPE_PREFIX, 4273) +HANDLE_BAT(APINT_TYPE_PREFIX, 4274) +HANDLE_BAT(APINT_TYPE_PREFIX, 4275) +HANDLE_BAT(APINT_TYPE_PREFIX, 4276) +HANDLE_BAT(APINT_TYPE_PREFIX, 4277) +HANDLE_BAT(APINT_TYPE_PREFIX, 4278) +HANDLE_BAT(APINT_TYPE_PREFIX, 4279) +HANDLE_BAT(APINT_TYPE_PREFIX, 4280) +HANDLE_BAT(APINT_TYPE_PREFIX, 4281) +HANDLE_BAT(APINT_TYPE_PREFIX, 4282) +HANDLE_BAT(APINT_TYPE_PREFIX, 4283) +HANDLE_BAT(APINT_TYPE_PREFIX, 4284) +HANDLE_BAT(APINT_TYPE_PREFIX, 4285) +HANDLE_BAT(APINT_TYPE_PREFIX, 4286) +HANDLE_BAT(APINT_TYPE_PREFIX, 4287) +HANDLE_BAT(APINT_TYPE_PREFIX, 4288) +HANDLE_BAT(APINT_TYPE_PREFIX, 4289) +HANDLE_BAT(APINT_TYPE_PREFIX, 4290) +HANDLE_BAT(APINT_TYPE_PREFIX, 4291) +HANDLE_BAT(APINT_TYPE_PREFIX, 4292) +HANDLE_BAT(APINT_TYPE_PREFIX, 4293) +HANDLE_BAT(APINT_TYPE_PREFIX, 4294) +HANDLE_BAT(APINT_TYPE_PREFIX, 4295) +HANDLE_BAT(APINT_TYPE_PREFIX, 4296) +HANDLE_BAT(APINT_TYPE_PREFIX, 4297) +HANDLE_BAT(APINT_TYPE_PREFIX, 4298) +HANDLE_BAT(APINT_TYPE_PREFIX, 4299) +HANDLE_BAT(APINT_TYPE_PREFIX, 4300) +HANDLE_BAT(APINT_TYPE_PREFIX, 4301) +HANDLE_BAT(APINT_TYPE_PREFIX, 4302) +HANDLE_BAT(APINT_TYPE_PREFIX, 4303) +HANDLE_BAT(APINT_TYPE_PREFIX, 4304) +HANDLE_BAT(APINT_TYPE_PREFIX, 4305) +HANDLE_BAT(APINT_TYPE_PREFIX, 4306) +HANDLE_BAT(APINT_TYPE_PREFIX, 4307) +HANDLE_BAT(APINT_TYPE_PREFIX, 4308) +HANDLE_BAT(APINT_TYPE_PREFIX, 4309) +HANDLE_BAT(APINT_TYPE_PREFIX, 4310) +HANDLE_BAT(APINT_TYPE_PREFIX, 4311) +HANDLE_BAT(APINT_TYPE_PREFIX, 4312) +HANDLE_BAT(APINT_TYPE_PREFIX, 4313) +HANDLE_BAT(APINT_TYPE_PREFIX, 4314) +HANDLE_BAT(APINT_TYPE_PREFIX, 4315) +HANDLE_BAT(APINT_TYPE_PREFIX, 4316) +HANDLE_BAT(APINT_TYPE_PREFIX, 4317) +HANDLE_BAT(APINT_TYPE_PREFIX, 4318) +HANDLE_BAT(APINT_TYPE_PREFIX, 4319) +HANDLE_BAT(APINT_TYPE_PREFIX, 4320) +HANDLE_BAT(APINT_TYPE_PREFIX, 4321) +HANDLE_BAT(APINT_TYPE_PREFIX, 4322) +HANDLE_BAT(APINT_TYPE_PREFIX, 4323) +HANDLE_BAT(APINT_TYPE_PREFIX, 4324) +HANDLE_BAT(APINT_TYPE_PREFIX, 4325) +HANDLE_BAT(APINT_TYPE_PREFIX, 4326) +HANDLE_BAT(APINT_TYPE_PREFIX, 4327) +HANDLE_BAT(APINT_TYPE_PREFIX, 4328) +HANDLE_BAT(APINT_TYPE_PREFIX, 4329) +HANDLE_BAT(APINT_TYPE_PREFIX, 4330) +HANDLE_BAT(APINT_TYPE_PREFIX, 4331) +HANDLE_BAT(APINT_TYPE_PREFIX, 4332) +HANDLE_BAT(APINT_TYPE_PREFIX, 4333) +HANDLE_BAT(APINT_TYPE_PREFIX, 4334) +HANDLE_BAT(APINT_TYPE_PREFIX, 4335) +HANDLE_BAT(APINT_TYPE_PREFIX, 4336) +HANDLE_BAT(APINT_TYPE_PREFIX, 4337) +HANDLE_BAT(APINT_TYPE_PREFIX, 4338) +HANDLE_BAT(APINT_TYPE_PREFIX, 4339) +HANDLE_BAT(APINT_TYPE_PREFIX, 4340) +HANDLE_BAT(APINT_TYPE_PREFIX, 4341) +HANDLE_BAT(APINT_TYPE_PREFIX, 4342) +HANDLE_BAT(APINT_TYPE_PREFIX, 4343) +HANDLE_BAT(APINT_TYPE_PREFIX, 4344) +HANDLE_BAT(APINT_TYPE_PREFIX, 4345) +HANDLE_BAT(APINT_TYPE_PREFIX, 4346) +HANDLE_BAT(APINT_TYPE_PREFIX, 4347) +HANDLE_BAT(APINT_TYPE_PREFIX, 4348) +HANDLE_BAT(APINT_TYPE_PREFIX, 4349) +HANDLE_BAT(APINT_TYPE_PREFIX, 4350) +HANDLE_BAT(APINT_TYPE_PREFIX, 4351) +HANDLE_BAT(APINT_TYPE_PREFIX, 4352) +HANDLE_BAT(APINT_TYPE_PREFIX, 4353) +HANDLE_BAT(APINT_TYPE_PREFIX, 4354) +HANDLE_BAT(APINT_TYPE_PREFIX, 4355) +HANDLE_BAT(APINT_TYPE_PREFIX, 4356) +HANDLE_BAT(APINT_TYPE_PREFIX, 4357) +HANDLE_BAT(APINT_TYPE_PREFIX, 4358) +HANDLE_BAT(APINT_TYPE_PREFIX, 4359) +HANDLE_BAT(APINT_TYPE_PREFIX, 4360) +HANDLE_BAT(APINT_TYPE_PREFIX, 4361) +HANDLE_BAT(APINT_TYPE_PREFIX, 4362) +HANDLE_BAT(APINT_TYPE_PREFIX, 4363) +HANDLE_BAT(APINT_TYPE_PREFIX, 4364) +HANDLE_BAT(APINT_TYPE_PREFIX, 4365) +HANDLE_BAT(APINT_TYPE_PREFIX, 4366) +HANDLE_BAT(APINT_TYPE_PREFIX, 4367) +HANDLE_BAT(APINT_TYPE_PREFIX, 4368) +HANDLE_BAT(APINT_TYPE_PREFIX, 4369) +HANDLE_BAT(APINT_TYPE_PREFIX, 4370) +HANDLE_BAT(APINT_TYPE_PREFIX, 4371) +HANDLE_BAT(APINT_TYPE_PREFIX, 4372) +HANDLE_BAT(APINT_TYPE_PREFIX, 4373) +HANDLE_BAT(APINT_TYPE_PREFIX, 4374) +HANDLE_BAT(APINT_TYPE_PREFIX, 4375) +HANDLE_BAT(APINT_TYPE_PREFIX, 4376) +HANDLE_BAT(APINT_TYPE_PREFIX, 4377) +HANDLE_BAT(APINT_TYPE_PREFIX, 4378) +HANDLE_BAT(APINT_TYPE_PREFIX, 4379) +HANDLE_BAT(APINT_TYPE_PREFIX, 4380) +HANDLE_BAT(APINT_TYPE_PREFIX, 4381) +HANDLE_BAT(APINT_TYPE_PREFIX, 4382) +HANDLE_BAT(APINT_TYPE_PREFIX, 4383) +HANDLE_BAT(APINT_TYPE_PREFIX, 4384) +HANDLE_BAT(APINT_TYPE_PREFIX, 4385) +HANDLE_BAT(APINT_TYPE_PREFIX, 4386) +HANDLE_BAT(APINT_TYPE_PREFIX, 4387) +HANDLE_BAT(APINT_TYPE_PREFIX, 4388) +HANDLE_BAT(APINT_TYPE_PREFIX, 4389) +HANDLE_BAT(APINT_TYPE_PREFIX, 4390) +HANDLE_BAT(APINT_TYPE_PREFIX, 4391) +HANDLE_BAT(APINT_TYPE_PREFIX, 4392) +HANDLE_BAT(APINT_TYPE_PREFIX, 4393) +HANDLE_BAT(APINT_TYPE_PREFIX, 4394) +HANDLE_BAT(APINT_TYPE_PREFIX, 4395) +HANDLE_BAT(APINT_TYPE_PREFIX, 4396) +HANDLE_BAT(APINT_TYPE_PREFIX, 4397) +HANDLE_BAT(APINT_TYPE_PREFIX, 4398) +HANDLE_BAT(APINT_TYPE_PREFIX, 4399) +HANDLE_BAT(APINT_TYPE_PREFIX, 4400) +HANDLE_BAT(APINT_TYPE_PREFIX, 4401) +HANDLE_BAT(APINT_TYPE_PREFIX, 4402) +HANDLE_BAT(APINT_TYPE_PREFIX, 4403) +HANDLE_BAT(APINT_TYPE_PREFIX, 4404) +HANDLE_BAT(APINT_TYPE_PREFIX, 4405) +HANDLE_BAT(APINT_TYPE_PREFIX, 4406) +HANDLE_BAT(APINT_TYPE_PREFIX, 4407) +HANDLE_BAT(APINT_TYPE_PREFIX, 4408) +HANDLE_BAT(APINT_TYPE_PREFIX, 4409) +HANDLE_BAT(APINT_TYPE_PREFIX, 4410) +HANDLE_BAT(APINT_TYPE_PREFIX, 4411) +HANDLE_BAT(APINT_TYPE_PREFIX, 4412) +HANDLE_BAT(APINT_TYPE_PREFIX, 4413) +HANDLE_BAT(APINT_TYPE_PREFIX, 4414) +HANDLE_BAT(APINT_TYPE_PREFIX, 4415) +HANDLE_BAT(APINT_TYPE_PREFIX, 4416) +HANDLE_BAT(APINT_TYPE_PREFIX, 4417) +HANDLE_BAT(APINT_TYPE_PREFIX, 4418) +HANDLE_BAT(APINT_TYPE_PREFIX, 4419) +HANDLE_BAT(APINT_TYPE_PREFIX, 4420) +HANDLE_BAT(APINT_TYPE_PREFIX, 4421) +HANDLE_BAT(APINT_TYPE_PREFIX, 4422) +HANDLE_BAT(APINT_TYPE_PREFIX, 4423) +HANDLE_BAT(APINT_TYPE_PREFIX, 4424) +HANDLE_BAT(APINT_TYPE_PREFIX, 4425) +HANDLE_BAT(APINT_TYPE_PREFIX, 4426) +HANDLE_BAT(APINT_TYPE_PREFIX, 4427) +HANDLE_BAT(APINT_TYPE_PREFIX, 4428) +HANDLE_BAT(APINT_TYPE_PREFIX, 4429) +HANDLE_BAT(APINT_TYPE_PREFIX, 4430) +HANDLE_BAT(APINT_TYPE_PREFIX, 4431) +HANDLE_BAT(APINT_TYPE_PREFIX, 4432) +HANDLE_BAT(APINT_TYPE_PREFIX, 4433) +HANDLE_BAT(APINT_TYPE_PREFIX, 4434) +HANDLE_BAT(APINT_TYPE_PREFIX, 4435) +HANDLE_BAT(APINT_TYPE_PREFIX, 4436) +HANDLE_BAT(APINT_TYPE_PREFIX, 4437) +HANDLE_BAT(APINT_TYPE_PREFIX, 4438) +HANDLE_BAT(APINT_TYPE_PREFIX, 4439) +HANDLE_BAT(APINT_TYPE_PREFIX, 4440) +HANDLE_BAT(APINT_TYPE_PREFIX, 4441) +HANDLE_BAT(APINT_TYPE_PREFIX, 4442) +HANDLE_BAT(APINT_TYPE_PREFIX, 4443) +HANDLE_BAT(APINT_TYPE_PREFIX, 4444) +HANDLE_BAT(APINT_TYPE_PREFIX, 4445) +HANDLE_BAT(APINT_TYPE_PREFIX, 4446) +HANDLE_BAT(APINT_TYPE_PREFIX, 4447) +HANDLE_BAT(APINT_TYPE_PREFIX, 4448) +HANDLE_BAT(APINT_TYPE_PREFIX, 4449) +HANDLE_BAT(APINT_TYPE_PREFIX, 4450) +HANDLE_BAT(APINT_TYPE_PREFIX, 4451) +HANDLE_BAT(APINT_TYPE_PREFIX, 4452) +HANDLE_BAT(APINT_TYPE_PREFIX, 4453) +HANDLE_BAT(APINT_TYPE_PREFIX, 4454) +HANDLE_BAT(APINT_TYPE_PREFIX, 4455) +HANDLE_BAT(APINT_TYPE_PREFIX, 4456) +HANDLE_BAT(APINT_TYPE_PREFIX, 4457) +HANDLE_BAT(APINT_TYPE_PREFIX, 4458) +HANDLE_BAT(APINT_TYPE_PREFIX, 4459) +HANDLE_BAT(APINT_TYPE_PREFIX, 4460) +HANDLE_BAT(APINT_TYPE_PREFIX, 4461) +HANDLE_BAT(APINT_TYPE_PREFIX, 4462) +HANDLE_BAT(APINT_TYPE_PREFIX, 4463) +HANDLE_BAT(APINT_TYPE_PREFIX, 4464) +HANDLE_BAT(APINT_TYPE_PREFIX, 4465) +HANDLE_BAT(APINT_TYPE_PREFIX, 4466) +HANDLE_BAT(APINT_TYPE_PREFIX, 4467) +HANDLE_BAT(APINT_TYPE_PREFIX, 4468) +HANDLE_BAT(APINT_TYPE_PREFIX, 4469) +HANDLE_BAT(APINT_TYPE_PREFIX, 4470) +HANDLE_BAT(APINT_TYPE_PREFIX, 4471) +HANDLE_BAT(APINT_TYPE_PREFIX, 4472) +HANDLE_BAT(APINT_TYPE_PREFIX, 4473) +HANDLE_BAT(APINT_TYPE_PREFIX, 4474) +HANDLE_BAT(APINT_TYPE_PREFIX, 4475) +HANDLE_BAT(APINT_TYPE_PREFIX, 4476) +HANDLE_BAT(APINT_TYPE_PREFIX, 4477) +HANDLE_BAT(APINT_TYPE_PREFIX, 4478) +HANDLE_BAT(APINT_TYPE_PREFIX, 4479) +HANDLE_BAT(APINT_TYPE_PREFIX, 4480) +HANDLE_BAT(APINT_TYPE_PREFIX, 4481) +HANDLE_BAT(APINT_TYPE_PREFIX, 4482) +HANDLE_BAT(APINT_TYPE_PREFIX, 4483) +HANDLE_BAT(APINT_TYPE_PREFIX, 4484) +HANDLE_BAT(APINT_TYPE_PREFIX, 4485) +HANDLE_BAT(APINT_TYPE_PREFIX, 4486) +HANDLE_BAT(APINT_TYPE_PREFIX, 4487) +HANDLE_BAT(APINT_TYPE_PREFIX, 4488) +HANDLE_BAT(APINT_TYPE_PREFIX, 4489) +HANDLE_BAT(APINT_TYPE_PREFIX, 4490) +HANDLE_BAT(APINT_TYPE_PREFIX, 4491) +HANDLE_BAT(APINT_TYPE_PREFIX, 4492) +HANDLE_BAT(APINT_TYPE_PREFIX, 4493) +HANDLE_BAT(APINT_TYPE_PREFIX, 4494) +HANDLE_BAT(APINT_TYPE_PREFIX, 4495) +HANDLE_BAT(APINT_TYPE_PREFIX, 4496) +HANDLE_BAT(APINT_TYPE_PREFIX, 4497) +HANDLE_BAT(APINT_TYPE_PREFIX, 4498) +HANDLE_BAT(APINT_TYPE_PREFIX, 4499) +HANDLE_BAT(APINT_TYPE_PREFIX, 4500) +HANDLE_BAT(APINT_TYPE_PREFIX, 4501) +HANDLE_BAT(APINT_TYPE_PREFIX, 4502) +HANDLE_BAT(APINT_TYPE_PREFIX, 4503) +HANDLE_BAT(APINT_TYPE_PREFIX, 4504) +HANDLE_BAT(APINT_TYPE_PREFIX, 4505) +HANDLE_BAT(APINT_TYPE_PREFIX, 4506) +HANDLE_BAT(APINT_TYPE_PREFIX, 4507) +HANDLE_BAT(APINT_TYPE_PREFIX, 4508) +HANDLE_BAT(APINT_TYPE_PREFIX, 4509) +HANDLE_BAT(APINT_TYPE_PREFIX, 4510) +HANDLE_BAT(APINT_TYPE_PREFIX, 4511) +HANDLE_BAT(APINT_TYPE_PREFIX, 4512) +HANDLE_BAT(APINT_TYPE_PREFIX, 4513) +HANDLE_BAT(APINT_TYPE_PREFIX, 4514) +HANDLE_BAT(APINT_TYPE_PREFIX, 4515) +HANDLE_BAT(APINT_TYPE_PREFIX, 4516) +HANDLE_BAT(APINT_TYPE_PREFIX, 4517) +HANDLE_BAT(APINT_TYPE_PREFIX, 4518) +HANDLE_BAT(APINT_TYPE_PREFIX, 4519) +HANDLE_BAT(APINT_TYPE_PREFIX, 4520) +HANDLE_BAT(APINT_TYPE_PREFIX, 4521) +HANDLE_BAT(APINT_TYPE_PREFIX, 4522) +HANDLE_BAT(APINT_TYPE_PREFIX, 4523) +HANDLE_BAT(APINT_TYPE_PREFIX, 4524) +HANDLE_BAT(APINT_TYPE_PREFIX, 4525) +HANDLE_BAT(APINT_TYPE_PREFIX, 4526) +HANDLE_BAT(APINT_TYPE_PREFIX, 4527) +HANDLE_BAT(APINT_TYPE_PREFIX, 4528) +HANDLE_BAT(APINT_TYPE_PREFIX, 4529) +HANDLE_BAT(APINT_TYPE_PREFIX, 4530) +HANDLE_BAT(APINT_TYPE_PREFIX, 4531) +HANDLE_BAT(APINT_TYPE_PREFIX, 4532) +HANDLE_BAT(APINT_TYPE_PREFIX, 4533) +HANDLE_BAT(APINT_TYPE_PREFIX, 4534) +HANDLE_BAT(APINT_TYPE_PREFIX, 4535) +HANDLE_BAT(APINT_TYPE_PREFIX, 4536) +HANDLE_BAT(APINT_TYPE_PREFIX, 4537) +HANDLE_BAT(APINT_TYPE_PREFIX, 4538) +HANDLE_BAT(APINT_TYPE_PREFIX, 4539) +HANDLE_BAT(APINT_TYPE_PREFIX, 4540) +HANDLE_BAT(APINT_TYPE_PREFIX, 4541) +HANDLE_BAT(APINT_TYPE_PREFIX, 4542) +HANDLE_BAT(APINT_TYPE_PREFIX, 4543) +HANDLE_BAT(APINT_TYPE_PREFIX, 4544) +HANDLE_BAT(APINT_TYPE_PREFIX, 4545) +HANDLE_BAT(APINT_TYPE_PREFIX, 4546) +HANDLE_BAT(APINT_TYPE_PREFIX, 4547) +HANDLE_BAT(APINT_TYPE_PREFIX, 4548) +HANDLE_BAT(APINT_TYPE_PREFIX, 4549) +HANDLE_BAT(APINT_TYPE_PREFIX, 4550) +HANDLE_BAT(APINT_TYPE_PREFIX, 4551) +HANDLE_BAT(APINT_TYPE_PREFIX, 4552) +HANDLE_BAT(APINT_TYPE_PREFIX, 4553) +HANDLE_BAT(APINT_TYPE_PREFIX, 4554) +HANDLE_BAT(APINT_TYPE_PREFIX, 4555) +HANDLE_BAT(APINT_TYPE_PREFIX, 4556) +HANDLE_BAT(APINT_TYPE_PREFIX, 4557) +HANDLE_BAT(APINT_TYPE_PREFIX, 4558) +HANDLE_BAT(APINT_TYPE_PREFIX, 4559) +HANDLE_BAT(APINT_TYPE_PREFIX, 4560) +HANDLE_BAT(APINT_TYPE_PREFIX, 4561) +HANDLE_BAT(APINT_TYPE_PREFIX, 4562) +HANDLE_BAT(APINT_TYPE_PREFIX, 4563) +HANDLE_BAT(APINT_TYPE_PREFIX, 4564) +HANDLE_BAT(APINT_TYPE_PREFIX, 4565) +HANDLE_BAT(APINT_TYPE_PREFIX, 4566) +HANDLE_BAT(APINT_TYPE_PREFIX, 4567) +HANDLE_BAT(APINT_TYPE_PREFIX, 4568) +HANDLE_BAT(APINT_TYPE_PREFIX, 4569) +HANDLE_BAT(APINT_TYPE_PREFIX, 4570) +HANDLE_BAT(APINT_TYPE_PREFIX, 4571) +HANDLE_BAT(APINT_TYPE_PREFIX, 4572) +HANDLE_BAT(APINT_TYPE_PREFIX, 4573) +HANDLE_BAT(APINT_TYPE_PREFIX, 4574) +HANDLE_BAT(APINT_TYPE_PREFIX, 4575) +HANDLE_BAT(APINT_TYPE_PREFIX, 4576) +HANDLE_BAT(APINT_TYPE_PREFIX, 4577) +HANDLE_BAT(APINT_TYPE_PREFIX, 4578) +HANDLE_BAT(APINT_TYPE_PREFIX, 4579) +HANDLE_BAT(APINT_TYPE_PREFIX, 4580) +HANDLE_BAT(APINT_TYPE_PREFIX, 4581) +HANDLE_BAT(APINT_TYPE_PREFIX, 4582) +HANDLE_BAT(APINT_TYPE_PREFIX, 4583) +HANDLE_BAT(APINT_TYPE_PREFIX, 4584) +HANDLE_BAT(APINT_TYPE_PREFIX, 4585) +HANDLE_BAT(APINT_TYPE_PREFIX, 4586) +HANDLE_BAT(APINT_TYPE_PREFIX, 4587) +HANDLE_BAT(APINT_TYPE_PREFIX, 4588) +HANDLE_BAT(APINT_TYPE_PREFIX, 4589) +HANDLE_BAT(APINT_TYPE_PREFIX, 4590) +HANDLE_BAT(APINT_TYPE_PREFIX, 4591) +HANDLE_BAT(APINT_TYPE_PREFIX, 4592) +HANDLE_BAT(APINT_TYPE_PREFIX, 4593) +HANDLE_BAT(APINT_TYPE_PREFIX, 4594) +HANDLE_BAT(APINT_TYPE_PREFIX, 4595) +HANDLE_BAT(APINT_TYPE_PREFIX, 4596) +HANDLE_BAT(APINT_TYPE_PREFIX, 4597) +HANDLE_BAT(APINT_TYPE_PREFIX, 4598) +HANDLE_BAT(APINT_TYPE_PREFIX, 4599) +HANDLE_BAT(APINT_TYPE_PREFIX, 4600) +HANDLE_BAT(APINT_TYPE_PREFIX, 4601) +HANDLE_BAT(APINT_TYPE_PREFIX, 4602) +HANDLE_BAT(APINT_TYPE_PREFIX, 4603) +HANDLE_BAT(APINT_TYPE_PREFIX, 4604) +HANDLE_BAT(APINT_TYPE_PREFIX, 4605) +HANDLE_BAT(APINT_TYPE_PREFIX, 4606) +HANDLE_BAT(APINT_TYPE_PREFIX, 4607) +HANDLE_BAT(APINT_TYPE_PREFIX, 4608) +HANDLE_BAT(APINT_TYPE_PREFIX, 4609) +HANDLE_BAT(APINT_TYPE_PREFIX, 4610) +HANDLE_BAT(APINT_TYPE_PREFIX, 4611) +HANDLE_BAT(APINT_TYPE_PREFIX, 4612) +HANDLE_BAT(APINT_TYPE_PREFIX, 4613) +HANDLE_BAT(APINT_TYPE_PREFIX, 4614) +HANDLE_BAT(APINT_TYPE_PREFIX, 4615) +HANDLE_BAT(APINT_TYPE_PREFIX, 4616) +HANDLE_BAT(APINT_TYPE_PREFIX, 4617) +HANDLE_BAT(APINT_TYPE_PREFIX, 4618) +HANDLE_BAT(APINT_TYPE_PREFIX, 4619) +HANDLE_BAT(APINT_TYPE_PREFIX, 4620) +HANDLE_BAT(APINT_TYPE_PREFIX, 4621) +HANDLE_BAT(APINT_TYPE_PREFIX, 4622) +HANDLE_BAT(APINT_TYPE_PREFIX, 4623) +HANDLE_BAT(APINT_TYPE_PREFIX, 4624) +HANDLE_BAT(APINT_TYPE_PREFIX, 4625) +HANDLE_BAT(APINT_TYPE_PREFIX, 4626) +HANDLE_BAT(APINT_TYPE_PREFIX, 4627) +HANDLE_BAT(APINT_TYPE_PREFIX, 4628) +HANDLE_BAT(APINT_TYPE_PREFIX, 4629) +HANDLE_BAT(APINT_TYPE_PREFIX, 4630) +HANDLE_BAT(APINT_TYPE_PREFIX, 4631) +HANDLE_BAT(APINT_TYPE_PREFIX, 4632) +HANDLE_BAT(APINT_TYPE_PREFIX, 4633) +HANDLE_BAT(APINT_TYPE_PREFIX, 4634) +HANDLE_BAT(APINT_TYPE_PREFIX, 4635) +HANDLE_BAT(APINT_TYPE_PREFIX, 4636) +HANDLE_BAT(APINT_TYPE_PREFIX, 4637) +HANDLE_BAT(APINT_TYPE_PREFIX, 4638) +HANDLE_BAT(APINT_TYPE_PREFIX, 4639) +HANDLE_BAT(APINT_TYPE_PREFIX, 4640) +HANDLE_BAT(APINT_TYPE_PREFIX, 4641) +HANDLE_BAT(APINT_TYPE_PREFIX, 4642) +HANDLE_BAT(APINT_TYPE_PREFIX, 4643) +HANDLE_BAT(APINT_TYPE_PREFIX, 4644) +HANDLE_BAT(APINT_TYPE_PREFIX, 4645) +HANDLE_BAT(APINT_TYPE_PREFIX, 4646) +HANDLE_BAT(APINT_TYPE_PREFIX, 4647) +HANDLE_BAT(APINT_TYPE_PREFIX, 4648) +HANDLE_BAT(APINT_TYPE_PREFIX, 4649) +HANDLE_BAT(APINT_TYPE_PREFIX, 4650) +HANDLE_BAT(APINT_TYPE_PREFIX, 4651) +HANDLE_BAT(APINT_TYPE_PREFIX, 4652) +HANDLE_BAT(APINT_TYPE_PREFIX, 4653) +HANDLE_BAT(APINT_TYPE_PREFIX, 4654) +HANDLE_BAT(APINT_TYPE_PREFIX, 4655) +HANDLE_BAT(APINT_TYPE_PREFIX, 4656) +HANDLE_BAT(APINT_TYPE_PREFIX, 4657) +HANDLE_BAT(APINT_TYPE_PREFIX, 4658) +HANDLE_BAT(APINT_TYPE_PREFIX, 4659) +HANDLE_BAT(APINT_TYPE_PREFIX, 4660) +HANDLE_BAT(APINT_TYPE_PREFIX, 4661) +HANDLE_BAT(APINT_TYPE_PREFIX, 4662) +HANDLE_BAT(APINT_TYPE_PREFIX, 4663) +HANDLE_BAT(APINT_TYPE_PREFIX, 4664) +HANDLE_BAT(APINT_TYPE_PREFIX, 4665) +HANDLE_BAT(APINT_TYPE_PREFIX, 4666) +HANDLE_BAT(APINT_TYPE_PREFIX, 4667) +HANDLE_BAT(APINT_TYPE_PREFIX, 4668) +HANDLE_BAT(APINT_TYPE_PREFIX, 4669) +HANDLE_BAT(APINT_TYPE_PREFIX, 4670) +HANDLE_BAT(APINT_TYPE_PREFIX, 4671) +HANDLE_BAT(APINT_TYPE_PREFIX, 4672) +HANDLE_BAT(APINT_TYPE_PREFIX, 4673) +HANDLE_BAT(APINT_TYPE_PREFIX, 4674) +HANDLE_BAT(APINT_TYPE_PREFIX, 4675) +HANDLE_BAT(APINT_TYPE_PREFIX, 4676) +HANDLE_BAT(APINT_TYPE_PREFIX, 4677) +HANDLE_BAT(APINT_TYPE_PREFIX, 4678) +HANDLE_BAT(APINT_TYPE_PREFIX, 4679) +HANDLE_BAT(APINT_TYPE_PREFIX, 4680) +HANDLE_BAT(APINT_TYPE_PREFIX, 4681) +HANDLE_BAT(APINT_TYPE_PREFIX, 4682) +HANDLE_BAT(APINT_TYPE_PREFIX, 4683) +HANDLE_BAT(APINT_TYPE_PREFIX, 4684) +HANDLE_BAT(APINT_TYPE_PREFIX, 4685) +HANDLE_BAT(APINT_TYPE_PREFIX, 4686) +HANDLE_BAT(APINT_TYPE_PREFIX, 4687) +HANDLE_BAT(APINT_TYPE_PREFIX, 4688) +HANDLE_BAT(APINT_TYPE_PREFIX, 4689) +HANDLE_BAT(APINT_TYPE_PREFIX, 4690) +HANDLE_BAT(APINT_TYPE_PREFIX, 4691) +HANDLE_BAT(APINT_TYPE_PREFIX, 4692) +HANDLE_BAT(APINT_TYPE_PREFIX, 4693) +HANDLE_BAT(APINT_TYPE_PREFIX, 4694) +HANDLE_BAT(APINT_TYPE_PREFIX, 4695) +HANDLE_BAT(APINT_TYPE_PREFIX, 4696) +HANDLE_BAT(APINT_TYPE_PREFIX, 4697) +HANDLE_BAT(APINT_TYPE_PREFIX, 4698) +HANDLE_BAT(APINT_TYPE_PREFIX, 4699) +HANDLE_BAT(APINT_TYPE_PREFIX, 4700) +HANDLE_BAT(APINT_TYPE_PREFIX, 4701) +HANDLE_BAT(APINT_TYPE_PREFIX, 4702) +HANDLE_BAT(APINT_TYPE_PREFIX, 4703) +HANDLE_BAT(APINT_TYPE_PREFIX, 4704) +HANDLE_BAT(APINT_TYPE_PREFIX, 4705) +HANDLE_BAT(APINT_TYPE_PREFIX, 4706) +HANDLE_BAT(APINT_TYPE_PREFIX, 4707) +HANDLE_BAT(APINT_TYPE_PREFIX, 4708) +HANDLE_BAT(APINT_TYPE_PREFIX, 4709) +HANDLE_BAT(APINT_TYPE_PREFIX, 4710) +HANDLE_BAT(APINT_TYPE_PREFIX, 4711) +HANDLE_BAT(APINT_TYPE_PREFIX, 4712) +HANDLE_BAT(APINT_TYPE_PREFIX, 4713) +HANDLE_BAT(APINT_TYPE_PREFIX, 4714) +HANDLE_BAT(APINT_TYPE_PREFIX, 4715) +HANDLE_BAT(APINT_TYPE_PREFIX, 4716) +HANDLE_BAT(APINT_TYPE_PREFIX, 4717) +HANDLE_BAT(APINT_TYPE_PREFIX, 4718) +HANDLE_BAT(APINT_TYPE_PREFIX, 4719) +HANDLE_BAT(APINT_TYPE_PREFIX, 4720) +HANDLE_BAT(APINT_TYPE_PREFIX, 4721) +HANDLE_BAT(APINT_TYPE_PREFIX, 4722) +HANDLE_BAT(APINT_TYPE_PREFIX, 4723) +HANDLE_BAT(APINT_TYPE_PREFIX, 4724) +HANDLE_BAT(APINT_TYPE_PREFIX, 4725) +HANDLE_BAT(APINT_TYPE_PREFIX, 4726) +HANDLE_BAT(APINT_TYPE_PREFIX, 4727) +HANDLE_BAT(APINT_TYPE_PREFIX, 4728) +HANDLE_BAT(APINT_TYPE_PREFIX, 4729) +HANDLE_BAT(APINT_TYPE_PREFIX, 4730) +HANDLE_BAT(APINT_TYPE_PREFIX, 4731) +HANDLE_BAT(APINT_TYPE_PREFIX, 4732) +HANDLE_BAT(APINT_TYPE_PREFIX, 4733) +HANDLE_BAT(APINT_TYPE_PREFIX, 4734) +HANDLE_BAT(APINT_TYPE_PREFIX, 4735) +HANDLE_BAT(APINT_TYPE_PREFIX, 4736) +HANDLE_BAT(APINT_TYPE_PREFIX, 4737) +HANDLE_BAT(APINT_TYPE_PREFIX, 4738) +HANDLE_BAT(APINT_TYPE_PREFIX, 4739) +HANDLE_BAT(APINT_TYPE_PREFIX, 4740) +HANDLE_BAT(APINT_TYPE_PREFIX, 4741) +HANDLE_BAT(APINT_TYPE_PREFIX, 4742) +HANDLE_BAT(APINT_TYPE_PREFIX, 4743) +HANDLE_BAT(APINT_TYPE_PREFIX, 4744) +HANDLE_BAT(APINT_TYPE_PREFIX, 4745) +HANDLE_BAT(APINT_TYPE_PREFIX, 4746) +HANDLE_BAT(APINT_TYPE_PREFIX, 4747) +HANDLE_BAT(APINT_TYPE_PREFIX, 4748) +HANDLE_BAT(APINT_TYPE_PREFIX, 4749) +HANDLE_BAT(APINT_TYPE_PREFIX, 4750) +HANDLE_BAT(APINT_TYPE_PREFIX, 4751) +HANDLE_BAT(APINT_TYPE_PREFIX, 4752) +HANDLE_BAT(APINT_TYPE_PREFIX, 4753) +HANDLE_BAT(APINT_TYPE_PREFIX, 4754) +HANDLE_BAT(APINT_TYPE_PREFIX, 4755) +HANDLE_BAT(APINT_TYPE_PREFIX, 4756) +HANDLE_BAT(APINT_TYPE_PREFIX, 4757) +HANDLE_BAT(APINT_TYPE_PREFIX, 4758) +HANDLE_BAT(APINT_TYPE_PREFIX, 4759) +HANDLE_BAT(APINT_TYPE_PREFIX, 4760) +HANDLE_BAT(APINT_TYPE_PREFIX, 4761) +HANDLE_BAT(APINT_TYPE_PREFIX, 4762) +HANDLE_BAT(APINT_TYPE_PREFIX, 4763) +HANDLE_BAT(APINT_TYPE_PREFIX, 4764) +HANDLE_BAT(APINT_TYPE_PREFIX, 4765) +HANDLE_BAT(APINT_TYPE_PREFIX, 4766) +HANDLE_BAT(APINT_TYPE_PREFIX, 4767) +HANDLE_BAT(APINT_TYPE_PREFIX, 4768) +HANDLE_BAT(APINT_TYPE_PREFIX, 4769) +HANDLE_BAT(APINT_TYPE_PREFIX, 4770) +HANDLE_BAT(APINT_TYPE_PREFIX, 4771) +HANDLE_BAT(APINT_TYPE_PREFIX, 4772) +HANDLE_BAT(APINT_TYPE_PREFIX, 4773) +HANDLE_BAT(APINT_TYPE_PREFIX, 4774) +HANDLE_BAT(APINT_TYPE_PREFIX, 4775) +HANDLE_BAT(APINT_TYPE_PREFIX, 4776) +HANDLE_BAT(APINT_TYPE_PREFIX, 4777) +HANDLE_BAT(APINT_TYPE_PREFIX, 4778) +HANDLE_BAT(APINT_TYPE_PREFIX, 4779) +HANDLE_BAT(APINT_TYPE_PREFIX, 4780) +HANDLE_BAT(APINT_TYPE_PREFIX, 4781) +HANDLE_BAT(APINT_TYPE_PREFIX, 4782) +HANDLE_BAT(APINT_TYPE_PREFIX, 4783) +HANDLE_BAT(APINT_TYPE_PREFIX, 4784) +HANDLE_BAT(APINT_TYPE_PREFIX, 4785) +HANDLE_BAT(APINT_TYPE_PREFIX, 4786) +HANDLE_BAT(APINT_TYPE_PREFIX, 4787) +HANDLE_BAT(APINT_TYPE_PREFIX, 4788) +HANDLE_BAT(APINT_TYPE_PREFIX, 4789) +HANDLE_BAT(APINT_TYPE_PREFIX, 4790) +HANDLE_BAT(APINT_TYPE_PREFIX, 4791) +HANDLE_BAT(APINT_TYPE_PREFIX, 4792) +HANDLE_BAT(APINT_TYPE_PREFIX, 4793) +HANDLE_BAT(APINT_TYPE_PREFIX, 4794) +HANDLE_BAT(APINT_TYPE_PREFIX, 4795) +HANDLE_BAT(APINT_TYPE_PREFIX, 4796) +HANDLE_BAT(APINT_TYPE_PREFIX, 4797) +HANDLE_BAT(APINT_TYPE_PREFIX, 4798) +HANDLE_BAT(APINT_TYPE_PREFIX, 4799) +HANDLE_BAT(APINT_TYPE_PREFIX, 4800) +HANDLE_BAT(APINT_TYPE_PREFIX, 4801) +HANDLE_BAT(APINT_TYPE_PREFIX, 4802) +HANDLE_BAT(APINT_TYPE_PREFIX, 4803) +HANDLE_BAT(APINT_TYPE_PREFIX, 4804) +HANDLE_BAT(APINT_TYPE_PREFIX, 4805) +HANDLE_BAT(APINT_TYPE_PREFIX, 4806) +HANDLE_BAT(APINT_TYPE_PREFIX, 4807) +HANDLE_BAT(APINT_TYPE_PREFIX, 4808) +HANDLE_BAT(APINT_TYPE_PREFIX, 4809) +HANDLE_BAT(APINT_TYPE_PREFIX, 4810) +HANDLE_BAT(APINT_TYPE_PREFIX, 4811) +HANDLE_BAT(APINT_TYPE_PREFIX, 4812) +HANDLE_BAT(APINT_TYPE_PREFIX, 4813) +HANDLE_BAT(APINT_TYPE_PREFIX, 4814) +HANDLE_BAT(APINT_TYPE_PREFIX, 4815) +HANDLE_BAT(APINT_TYPE_PREFIX, 4816) +HANDLE_BAT(APINT_TYPE_PREFIX, 4817) +HANDLE_BAT(APINT_TYPE_PREFIX, 4818) +HANDLE_BAT(APINT_TYPE_PREFIX, 4819) +HANDLE_BAT(APINT_TYPE_PREFIX, 4820) +HANDLE_BAT(APINT_TYPE_PREFIX, 4821) +HANDLE_BAT(APINT_TYPE_PREFIX, 4822) +HANDLE_BAT(APINT_TYPE_PREFIX, 4823) +HANDLE_BAT(APINT_TYPE_PREFIX, 4824) +HANDLE_BAT(APINT_TYPE_PREFIX, 4825) +HANDLE_BAT(APINT_TYPE_PREFIX, 4826) +HANDLE_BAT(APINT_TYPE_PREFIX, 4827) +HANDLE_BAT(APINT_TYPE_PREFIX, 4828) +HANDLE_BAT(APINT_TYPE_PREFIX, 4829) +HANDLE_BAT(APINT_TYPE_PREFIX, 4830) +HANDLE_BAT(APINT_TYPE_PREFIX, 4831) +HANDLE_BAT(APINT_TYPE_PREFIX, 4832) +HANDLE_BAT(APINT_TYPE_PREFIX, 4833) +HANDLE_BAT(APINT_TYPE_PREFIX, 4834) +HANDLE_BAT(APINT_TYPE_PREFIX, 4835) +HANDLE_BAT(APINT_TYPE_PREFIX, 4836) +HANDLE_BAT(APINT_TYPE_PREFIX, 4837) +HANDLE_BAT(APINT_TYPE_PREFIX, 4838) +HANDLE_BAT(APINT_TYPE_PREFIX, 4839) +HANDLE_BAT(APINT_TYPE_PREFIX, 4840) +HANDLE_BAT(APINT_TYPE_PREFIX, 4841) +HANDLE_BAT(APINT_TYPE_PREFIX, 4842) +HANDLE_BAT(APINT_TYPE_PREFIX, 4843) +HANDLE_BAT(APINT_TYPE_PREFIX, 4844) +HANDLE_BAT(APINT_TYPE_PREFIX, 4845) +HANDLE_BAT(APINT_TYPE_PREFIX, 4846) +HANDLE_BAT(APINT_TYPE_PREFIX, 4847) +HANDLE_BAT(APINT_TYPE_PREFIX, 4848) +HANDLE_BAT(APINT_TYPE_PREFIX, 4849) +HANDLE_BAT(APINT_TYPE_PREFIX, 4850) +HANDLE_BAT(APINT_TYPE_PREFIX, 4851) +HANDLE_BAT(APINT_TYPE_PREFIX, 4852) +HANDLE_BAT(APINT_TYPE_PREFIX, 4853) +HANDLE_BAT(APINT_TYPE_PREFIX, 4854) +HANDLE_BAT(APINT_TYPE_PREFIX, 4855) +HANDLE_BAT(APINT_TYPE_PREFIX, 4856) +HANDLE_BAT(APINT_TYPE_PREFIX, 4857) +HANDLE_BAT(APINT_TYPE_PREFIX, 4858) +HANDLE_BAT(APINT_TYPE_PREFIX, 4859) +HANDLE_BAT(APINT_TYPE_PREFIX, 4860) +HANDLE_BAT(APINT_TYPE_PREFIX, 4861) +HANDLE_BAT(APINT_TYPE_PREFIX, 4862) +HANDLE_BAT(APINT_TYPE_PREFIX, 4863) +HANDLE_BAT(APINT_TYPE_PREFIX, 4864) +HANDLE_BAT(APINT_TYPE_PREFIX, 4865) +HANDLE_BAT(APINT_TYPE_PREFIX, 4866) +HANDLE_BAT(APINT_TYPE_PREFIX, 4867) +HANDLE_BAT(APINT_TYPE_PREFIX, 4868) +HANDLE_BAT(APINT_TYPE_PREFIX, 4869) +HANDLE_BAT(APINT_TYPE_PREFIX, 4870) +HANDLE_BAT(APINT_TYPE_PREFIX, 4871) +HANDLE_BAT(APINT_TYPE_PREFIX, 4872) +HANDLE_BAT(APINT_TYPE_PREFIX, 4873) +HANDLE_BAT(APINT_TYPE_PREFIX, 4874) +HANDLE_BAT(APINT_TYPE_PREFIX, 4875) +HANDLE_BAT(APINT_TYPE_PREFIX, 4876) +HANDLE_BAT(APINT_TYPE_PREFIX, 4877) +HANDLE_BAT(APINT_TYPE_PREFIX, 4878) +HANDLE_BAT(APINT_TYPE_PREFIX, 4879) +HANDLE_BAT(APINT_TYPE_PREFIX, 4880) +HANDLE_BAT(APINT_TYPE_PREFIX, 4881) +HANDLE_BAT(APINT_TYPE_PREFIX, 4882) +HANDLE_BAT(APINT_TYPE_PREFIX, 4883) +HANDLE_BAT(APINT_TYPE_PREFIX, 4884) +HANDLE_BAT(APINT_TYPE_PREFIX, 4885) +HANDLE_BAT(APINT_TYPE_PREFIX, 4886) +HANDLE_BAT(APINT_TYPE_PREFIX, 4887) +HANDLE_BAT(APINT_TYPE_PREFIX, 4888) +HANDLE_BAT(APINT_TYPE_PREFIX, 4889) +HANDLE_BAT(APINT_TYPE_PREFIX, 4890) +HANDLE_BAT(APINT_TYPE_PREFIX, 4891) +HANDLE_BAT(APINT_TYPE_PREFIX, 4892) +HANDLE_BAT(APINT_TYPE_PREFIX, 4893) +HANDLE_BAT(APINT_TYPE_PREFIX, 4894) +HANDLE_BAT(APINT_TYPE_PREFIX, 4895) +HANDLE_BAT(APINT_TYPE_PREFIX, 4896) +HANDLE_BAT(APINT_TYPE_PREFIX, 4897) +HANDLE_BAT(APINT_TYPE_PREFIX, 4898) +HANDLE_BAT(APINT_TYPE_PREFIX, 4899) +HANDLE_BAT(APINT_TYPE_PREFIX, 4900) +HANDLE_BAT(APINT_TYPE_PREFIX, 4901) +HANDLE_BAT(APINT_TYPE_PREFIX, 4902) +HANDLE_BAT(APINT_TYPE_PREFIX, 4903) +HANDLE_BAT(APINT_TYPE_PREFIX, 4904) +HANDLE_BAT(APINT_TYPE_PREFIX, 4905) +HANDLE_BAT(APINT_TYPE_PREFIX, 4906) +HANDLE_BAT(APINT_TYPE_PREFIX, 4907) +HANDLE_BAT(APINT_TYPE_PREFIX, 4908) +HANDLE_BAT(APINT_TYPE_PREFIX, 4909) +HANDLE_BAT(APINT_TYPE_PREFIX, 4910) +HANDLE_BAT(APINT_TYPE_PREFIX, 4911) +HANDLE_BAT(APINT_TYPE_PREFIX, 4912) +HANDLE_BAT(APINT_TYPE_PREFIX, 4913) +HANDLE_BAT(APINT_TYPE_PREFIX, 4914) +HANDLE_BAT(APINT_TYPE_PREFIX, 4915) +HANDLE_BAT(APINT_TYPE_PREFIX, 4916) +HANDLE_BAT(APINT_TYPE_PREFIX, 4917) +HANDLE_BAT(APINT_TYPE_PREFIX, 4918) +HANDLE_BAT(APINT_TYPE_PREFIX, 4919) +HANDLE_BAT(APINT_TYPE_PREFIX, 4920) +HANDLE_BAT(APINT_TYPE_PREFIX, 4921) +HANDLE_BAT(APINT_TYPE_PREFIX, 4922) +HANDLE_BAT(APINT_TYPE_PREFIX, 4923) +HANDLE_BAT(APINT_TYPE_PREFIX, 4924) +HANDLE_BAT(APINT_TYPE_PREFIX, 4925) +HANDLE_BAT(APINT_TYPE_PREFIX, 4926) +HANDLE_BAT(APINT_TYPE_PREFIX, 4927) +HANDLE_BAT(APINT_TYPE_PREFIX, 4928) +HANDLE_BAT(APINT_TYPE_PREFIX, 4929) +HANDLE_BAT(APINT_TYPE_PREFIX, 4930) +HANDLE_BAT(APINT_TYPE_PREFIX, 4931) +HANDLE_BAT(APINT_TYPE_PREFIX, 4932) +HANDLE_BAT(APINT_TYPE_PREFIX, 4933) +HANDLE_BAT(APINT_TYPE_PREFIX, 4934) +HANDLE_BAT(APINT_TYPE_PREFIX, 4935) +HANDLE_BAT(APINT_TYPE_PREFIX, 4936) +HANDLE_BAT(APINT_TYPE_PREFIX, 4937) +HANDLE_BAT(APINT_TYPE_PREFIX, 4938) +HANDLE_BAT(APINT_TYPE_PREFIX, 4939) +HANDLE_BAT(APINT_TYPE_PREFIX, 4940) +HANDLE_BAT(APINT_TYPE_PREFIX, 4941) +HANDLE_BAT(APINT_TYPE_PREFIX, 4942) +HANDLE_BAT(APINT_TYPE_PREFIX, 4943) +HANDLE_BAT(APINT_TYPE_PREFIX, 4944) +HANDLE_BAT(APINT_TYPE_PREFIX, 4945) +HANDLE_BAT(APINT_TYPE_PREFIX, 4946) +HANDLE_BAT(APINT_TYPE_PREFIX, 4947) +HANDLE_BAT(APINT_TYPE_PREFIX, 4948) +HANDLE_BAT(APINT_TYPE_PREFIX, 4949) +HANDLE_BAT(APINT_TYPE_PREFIX, 4950) +HANDLE_BAT(APINT_TYPE_PREFIX, 4951) +HANDLE_BAT(APINT_TYPE_PREFIX, 4952) +HANDLE_BAT(APINT_TYPE_PREFIX, 4953) +HANDLE_BAT(APINT_TYPE_PREFIX, 4954) +HANDLE_BAT(APINT_TYPE_PREFIX, 4955) +HANDLE_BAT(APINT_TYPE_PREFIX, 4956) +HANDLE_BAT(APINT_TYPE_PREFIX, 4957) +HANDLE_BAT(APINT_TYPE_PREFIX, 4958) +HANDLE_BAT(APINT_TYPE_PREFIX, 4959) +HANDLE_BAT(APINT_TYPE_PREFIX, 4960) +HANDLE_BAT(APINT_TYPE_PREFIX, 4961) +HANDLE_BAT(APINT_TYPE_PREFIX, 4962) +HANDLE_BAT(APINT_TYPE_PREFIX, 4963) +HANDLE_BAT(APINT_TYPE_PREFIX, 4964) +HANDLE_BAT(APINT_TYPE_PREFIX, 4965) +HANDLE_BAT(APINT_TYPE_PREFIX, 4966) +HANDLE_BAT(APINT_TYPE_PREFIX, 4967) +HANDLE_BAT(APINT_TYPE_PREFIX, 4968) +HANDLE_BAT(APINT_TYPE_PREFIX, 4969) +HANDLE_BAT(APINT_TYPE_PREFIX, 4970) +HANDLE_BAT(APINT_TYPE_PREFIX, 4971) +HANDLE_BAT(APINT_TYPE_PREFIX, 4972) +HANDLE_BAT(APINT_TYPE_PREFIX, 4973) +HANDLE_BAT(APINT_TYPE_PREFIX, 4974) +HANDLE_BAT(APINT_TYPE_PREFIX, 4975) +HANDLE_BAT(APINT_TYPE_PREFIX, 4976) +HANDLE_BAT(APINT_TYPE_PREFIX, 4977) +HANDLE_BAT(APINT_TYPE_PREFIX, 4978) +HANDLE_BAT(APINT_TYPE_PREFIX, 4979) +HANDLE_BAT(APINT_TYPE_PREFIX, 4980) +HANDLE_BAT(APINT_TYPE_PREFIX, 4981) +HANDLE_BAT(APINT_TYPE_PREFIX, 4982) +HANDLE_BAT(APINT_TYPE_PREFIX, 4983) +HANDLE_BAT(APINT_TYPE_PREFIX, 4984) +HANDLE_BAT(APINT_TYPE_PREFIX, 4985) +HANDLE_BAT(APINT_TYPE_PREFIX, 4986) +HANDLE_BAT(APINT_TYPE_PREFIX, 4987) +HANDLE_BAT(APINT_TYPE_PREFIX, 4988) +HANDLE_BAT(APINT_TYPE_PREFIX, 4989) +HANDLE_BAT(APINT_TYPE_PREFIX, 4990) +HANDLE_BAT(APINT_TYPE_PREFIX, 4991) +HANDLE_BAT(APINT_TYPE_PREFIX, 4992) +HANDLE_BAT(APINT_TYPE_PREFIX, 4993) +HANDLE_BAT(APINT_TYPE_PREFIX, 4994) +HANDLE_BAT(APINT_TYPE_PREFIX, 4995) +HANDLE_BAT(APINT_TYPE_PREFIX, 4996) +HANDLE_BAT(APINT_TYPE_PREFIX, 4997) +HANDLE_BAT(APINT_TYPE_PREFIX, 4998) +HANDLE_BAT(APINT_TYPE_PREFIX, 4999) +HANDLE_BAT(APINT_TYPE_PREFIX, 5000) +HANDLE_BAT(APINT_TYPE_PREFIX, 5001) +HANDLE_BAT(APINT_TYPE_PREFIX, 5002) +HANDLE_BAT(APINT_TYPE_PREFIX, 5003) +HANDLE_BAT(APINT_TYPE_PREFIX, 5004) +HANDLE_BAT(APINT_TYPE_PREFIX, 5005) +HANDLE_BAT(APINT_TYPE_PREFIX, 5006) +HANDLE_BAT(APINT_TYPE_PREFIX, 5007) +HANDLE_BAT(APINT_TYPE_PREFIX, 5008) +HANDLE_BAT(APINT_TYPE_PREFIX, 5009) +HANDLE_BAT(APINT_TYPE_PREFIX, 5010) +HANDLE_BAT(APINT_TYPE_PREFIX, 5011) +HANDLE_BAT(APINT_TYPE_PREFIX, 5012) +HANDLE_BAT(APINT_TYPE_PREFIX, 5013) +HANDLE_BAT(APINT_TYPE_PREFIX, 5014) +HANDLE_BAT(APINT_TYPE_PREFIX, 5015) +HANDLE_BAT(APINT_TYPE_PREFIX, 5016) +HANDLE_BAT(APINT_TYPE_PREFIX, 5017) +HANDLE_BAT(APINT_TYPE_PREFIX, 5018) +HANDLE_BAT(APINT_TYPE_PREFIX, 5019) +HANDLE_BAT(APINT_TYPE_PREFIX, 5020) +HANDLE_BAT(APINT_TYPE_PREFIX, 5021) +HANDLE_BAT(APINT_TYPE_PREFIX, 5022) +HANDLE_BAT(APINT_TYPE_PREFIX, 5023) +HANDLE_BAT(APINT_TYPE_PREFIX, 5024) +HANDLE_BAT(APINT_TYPE_PREFIX, 5025) +HANDLE_BAT(APINT_TYPE_PREFIX, 5026) +HANDLE_BAT(APINT_TYPE_PREFIX, 5027) +HANDLE_BAT(APINT_TYPE_PREFIX, 5028) +HANDLE_BAT(APINT_TYPE_PREFIX, 5029) +HANDLE_BAT(APINT_TYPE_PREFIX, 5030) +HANDLE_BAT(APINT_TYPE_PREFIX, 5031) +HANDLE_BAT(APINT_TYPE_PREFIX, 5032) +HANDLE_BAT(APINT_TYPE_PREFIX, 5033) +HANDLE_BAT(APINT_TYPE_PREFIX, 5034) +HANDLE_BAT(APINT_TYPE_PREFIX, 5035) +HANDLE_BAT(APINT_TYPE_PREFIX, 5036) +HANDLE_BAT(APINT_TYPE_PREFIX, 5037) +HANDLE_BAT(APINT_TYPE_PREFIX, 5038) +HANDLE_BAT(APINT_TYPE_PREFIX, 5039) +HANDLE_BAT(APINT_TYPE_PREFIX, 5040) +HANDLE_BAT(APINT_TYPE_PREFIX, 5041) +HANDLE_BAT(APINT_TYPE_PREFIX, 5042) +HANDLE_BAT(APINT_TYPE_PREFIX, 5043) +HANDLE_BAT(APINT_TYPE_PREFIX, 5044) +HANDLE_BAT(APINT_TYPE_PREFIX, 5045) +HANDLE_BAT(APINT_TYPE_PREFIX, 5046) +HANDLE_BAT(APINT_TYPE_PREFIX, 5047) +HANDLE_BAT(APINT_TYPE_PREFIX, 5048) +HANDLE_BAT(APINT_TYPE_PREFIX, 5049) +HANDLE_BAT(APINT_TYPE_PREFIX, 5050) +HANDLE_BAT(APINT_TYPE_PREFIX, 5051) +HANDLE_BAT(APINT_TYPE_PREFIX, 5052) +HANDLE_BAT(APINT_TYPE_PREFIX, 5053) +HANDLE_BAT(APINT_TYPE_PREFIX, 5054) +HANDLE_BAT(APINT_TYPE_PREFIX, 5055) +HANDLE_BAT(APINT_TYPE_PREFIX, 5056) +HANDLE_BAT(APINT_TYPE_PREFIX, 5057) +HANDLE_BAT(APINT_TYPE_PREFIX, 5058) +HANDLE_BAT(APINT_TYPE_PREFIX, 5059) +HANDLE_BAT(APINT_TYPE_PREFIX, 5060) +HANDLE_BAT(APINT_TYPE_PREFIX, 5061) +HANDLE_BAT(APINT_TYPE_PREFIX, 5062) +HANDLE_BAT(APINT_TYPE_PREFIX, 5063) +HANDLE_BAT(APINT_TYPE_PREFIX, 5064) +HANDLE_BAT(APINT_TYPE_PREFIX, 5065) +HANDLE_BAT(APINT_TYPE_PREFIX, 5066) +HANDLE_BAT(APINT_TYPE_PREFIX, 5067) +HANDLE_BAT(APINT_TYPE_PREFIX, 5068) +HANDLE_BAT(APINT_TYPE_PREFIX, 5069) +HANDLE_BAT(APINT_TYPE_PREFIX, 5070) +HANDLE_BAT(APINT_TYPE_PREFIX, 5071) +HANDLE_BAT(APINT_TYPE_PREFIX, 5072) +HANDLE_BAT(APINT_TYPE_PREFIX, 5073) +HANDLE_BAT(APINT_TYPE_PREFIX, 5074) +HANDLE_BAT(APINT_TYPE_PREFIX, 5075) +HANDLE_BAT(APINT_TYPE_PREFIX, 5076) +HANDLE_BAT(APINT_TYPE_PREFIX, 5077) +HANDLE_BAT(APINT_TYPE_PREFIX, 5078) +HANDLE_BAT(APINT_TYPE_PREFIX, 5079) +HANDLE_BAT(APINT_TYPE_PREFIX, 5080) +HANDLE_BAT(APINT_TYPE_PREFIX, 5081) +HANDLE_BAT(APINT_TYPE_PREFIX, 5082) +HANDLE_BAT(APINT_TYPE_PREFIX, 5083) +HANDLE_BAT(APINT_TYPE_PREFIX, 5084) +HANDLE_BAT(APINT_TYPE_PREFIX, 5085) +HANDLE_BAT(APINT_TYPE_PREFIX, 5086) +HANDLE_BAT(APINT_TYPE_PREFIX, 5087) +HANDLE_BAT(APINT_TYPE_PREFIX, 5088) +HANDLE_BAT(APINT_TYPE_PREFIX, 5089) +HANDLE_BAT(APINT_TYPE_PREFIX, 5090) +HANDLE_BAT(APINT_TYPE_PREFIX, 5091) +HANDLE_BAT(APINT_TYPE_PREFIX, 5092) +HANDLE_BAT(APINT_TYPE_PREFIX, 5093) +HANDLE_BAT(APINT_TYPE_PREFIX, 5094) +HANDLE_BAT(APINT_TYPE_PREFIX, 5095) +HANDLE_BAT(APINT_TYPE_PREFIX, 5096) +HANDLE_BAT(APINT_TYPE_PREFIX, 5097) +HANDLE_BAT(APINT_TYPE_PREFIX, 5098) +HANDLE_BAT(APINT_TYPE_PREFIX, 5099) +HANDLE_BAT(APINT_TYPE_PREFIX, 5100) +HANDLE_BAT(APINT_TYPE_PREFIX, 5101) +HANDLE_BAT(APINT_TYPE_PREFIX, 5102) +HANDLE_BAT(APINT_TYPE_PREFIX, 5103) +HANDLE_BAT(APINT_TYPE_PREFIX, 5104) +HANDLE_BAT(APINT_TYPE_PREFIX, 5105) +HANDLE_BAT(APINT_TYPE_PREFIX, 5106) +HANDLE_BAT(APINT_TYPE_PREFIX, 5107) +HANDLE_BAT(APINT_TYPE_PREFIX, 5108) +HANDLE_BAT(APINT_TYPE_PREFIX, 5109) +HANDLE_BAT(APINT_TYPE_PREFIX, 5110) +HANDLE_BAT(APINT_TYPE_PREFIX, 5111) +HANDLE_BAT(APINT_TYPE_PREFIX, 5112) +HANDLE_BAT(APINT_TYPE_PREFIX, 5113) +HANDLE_BAT(APINT_TYPE_PREFIX, 5114) +HANDLE_BAT(APINT_TYPE_PREFIX, 5115) +HANDLE_BAT(APINT_TYPE_PREFIX, 5116) +HANDLE_BAT(APINT_TYPE_PREFIX, 5117) +HANDLE_BAT(APINT_TYPE_PREFIX, 5118) +HANDLE_BAT(APINT_TYPE_PREFIX, 5119) +HANDLE_BAT(APINT_TYPE_PREFIX, 5120) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 5 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 5121) +HANDLE_BAT(, 5122) +HANDLE_BAT(, 5123) +HANDLE_BAT(, 5124) +HANDLE_BAT(, 5125) +HANDLE_BAT(, 5126) +HANDLE_BAT(, 5127) +HANDLE_BAT(, 5128) +HANDLE_BAT(, 5129) +HANDLE_BAT(, 5130) +HANDLE_BAT(, 5131) +HANDLE_BAT(, 5132) +HANDLE_BAT(, 5133) +HANDLE_BAT(, 5134) +HANDLE_BAT(, 5135) +HANDLE_BAT(, 5136) +HANDLE_BAT(, 5137) +HANDLE_BAT(, 5138) +HANDLE_BAT(, 5139) +HANDLE_BAT(, 5140) +HANDLE_BAT(, 5141) +HANDLE_BAT(, 5142) +HANDLE_BAT(, 5143) +HANDLE_BAT(, 5144) +HANDLE_BAT(, 5145) +HANDLE_BAT(, 5146) +HANDLE_BAT(, 5147) +HANDLE_BAT(, 5148) +HANDLE_BAT(, 5149) +HANDLE_BAT(, 5150) +HANDLE_BAT(, 5151) +HANDLE_BAT(, 5152) +HANDLE_BAT(, 5153) +HANDLE_BAT(, 5154) +HANDLE_BAT(, 5155) +HANDLE_BAT(, 5156) +HANDLE_BAT(, 5157) +HANDLE_BAT(, 5158) +HANDLE_BAT(, 5159) +HANDLE_BAT(, 5160) +HANDLE_BAT(, 5161) +HANDLE_BAT(, 5162) +HANDLE_BAT(, 5163) +HANDLE_BAT(, 5164) +HANDLE_BAT(, 5165) +HANDLE_BAT(, 5166) +HANDLE_BAT(, 5167) +HANDLE_BAT(, 5168) +HANDLE_BAT(, 5169) +HANDLE_BAT(, 5170) +HANDLE_BAT(, 5171) +HANDLE_BAT(, 5172) +HANDLE_BAT(, 5173) +HANDLE_BAT(, 5174) +HANDLE_BAT(, 5175) +HANDLE_BAT(, 5176) +HANDLE_BAT(, 5177) +HANDLE_BAT(, 5178) +HANDLE_BAT(, 5179) +HANDLE_BAT(, 5180) +HANDLE_BAT(, 5181) +HANDLE_BAT(, 5182) +HANDLE_BAT(, 5183) +HANDLE_BAT(, 5184) +HANDLE_BAT(, 5185) +HANDLE_BAT(, 5186) +HANDLE_BAT(, 5187) +HANDLE_BAT(, 5188) +HANDLE_BAT(, 5189) +HANDLE_BAT(, 5190) +HANDLE_BAT(, 5191) +HANDLE_BAT(, 5192) +HANDLE_BAT(, 5193) +HANDLE_BAT(, 5194) +HANDLE_BAT(, 5195) +HANDLE_BAT(, 5196) +HANDLE_BAT(, 5197) +HANDLE_BAT(, 5198) +HANDLE_BAT(, 5199) +HANDLE_BAT(, 5200) +HANDLE_BAT(, 5201) +HANDLE_BAT(, 5202) +HANDLE_BAT(, 5203) +HANDLE_BAT(, 5204) +HANDLE_BAT(, 5205) +HANDLE_BAT(, 5206) +HANDLE_BAT(, 5207) +HANDLE_BAT(, 5208) +HANDLE_BAT(, 5209) +HANDLE_BAT(, 5210) +HANDLE_BAT(, 5211) +HANDLE_BAT(, 5212) +HANDLE_BAT(, 5213) +HANDLE_BAT(, 5214) +HANDLE_BAT(, 5215) +HANDLE_BAT(, 5216) +HANDLE_BAT(, 5217) +HANDLE_BAT(, 5218) +HANDLE_BAT(, 5219) +HANDLE_BAT(, 5220) +HANDLE_BAT(, 5221) +HANDLE_BAT(, 5222) +HANDLE_BAT(, 5223) +HANDLE_BAT(, 5224) +HANDLE_BAT(, 5225) +HANDLE_BAT(, 5226) +HANDLE_BAT(, 5227) +HANDLE_BAT(, 5228) +HANDLE_BAT(, 5229) +HANDLE_BAT(, 5230) +HANDLE_BAT(, 5231) +HANDLE_BAT(, 5232) +HANDLE_BAT(, 5233) +HANDLE_BAT(, 5234) +HANDLE_BAT(, 5235) +HANDLE_BAT(, 5236) +HANDLE_BAT(, 5237) +HANDLE_BAT(, 5238) +HANDLE_BAT(, 5239) +HANDLE_BAT(, 5240) +HANDLE_BAT(, 5241) +HANDLE_BAT(, 5242) +HANDLE_BAT(, 5243) +HANDLE_BAT(, 5244) +HANDLE_BAT(, 5245) +HANDLE_BAT(, 5246) +HANDLE_BAT(, 5247) +HANDLE_BAT(, 5248) +HANDLE_BAT(, 5249) +HANDLE_BAT(, 5250) +HANDLE_BAT(, 5251) +HANDLE_BAT(, 5252) +HANDLE_BAT(, 5253) +HANDLE_BAT(, 5254) +HANDLE_BAT(, 5255) +HANDLE_BAT(, 5256) +HANDLE_BAT(, 5257) +HANDLE_BAT(, 5258) +HANDLE_BAT(, 5259) +HANDLE_BAT(, 5260) +HANDLE_BAT(, 5261) +HANDLE_BAT(, 5262) +HANDLE_BAT(, 5263) +HANDLE_BAT(, 5264) +HANDLE_BAT(, 5265) +HANDLE_BAT(, 5266) +HANDLE_BAT(, 5267) +HANDLE_BAT(, 5268) +HANDLE_BAT(, 5269) +HANDLE_BAT(, 5270) +HANDLE_BAT(, 5271) +HANDLE_BAT(, 5272) +HANDLE_BAT(, 5273) +HANDLE_BAT(, 5274) +HANDLE_BAT(, 5275) +HANDLE_BAT(, 5276) +HANDLE_BAT(, 5277) +HANDLE_BAT(, 5278) +HANDLE_BAT(, 5279) +HANDLE_BAT(, 5280) +HANDLE_BAT(, 5281) +HANDLE_BAT(, 5282) +HANDLE_BAT(, 5283) +HANDLE_BAT(, 5284) +HANDLE_BAT(, 5285) +HANDLE_BAT(, 5286) +HANDLE_BAT(, 5287) +HANDLE_BAT(, 5288) +HANDLE_BAT(, 5289) +HANDLE_BAT(, 5290) +HANDLE_BAT(, 5291) +HANDLE_BAT(, 5292) +HANDLE_BAT(, 5293) +HANDLE_BAT(, 5294) +HANDLE_BAT(, 5295) +HANDLE_BAT(, 5296) +HANDLE_BAT(, 5297) +HANDLE_BAT(, 5298) +HANDLE_BAT(, 5299) +HANDLE_BAT(, 5300) +HANDLE_BAT(, 5301) +HANDLE_BAT(, 5302) +HANDLE_BAT(, 5303) +HANDLE_BAT(, 5304) +HANDLE_BAT(, 5305) +HANDLE_BAT(, 5306) +HANDLE_BAT(, 5307) +HANDLE_BAT(, 5308) +HANDLE_BAT(, 5309) +HANDLE_BAT(, 5310) +HANDLE_BAT(, 5311) +HANDLE_BAT(, 5312) +HANDLE_BAT(, 5313) +HANDLE_BAT(, 5314) +HANDLE_BAT(, 5315) +HANDLE_BAT(, 5316) +HANDLE_BAT(, 5317) +HANDLE_BAT(, 5318) +HANDLE_BAT(, 5319) +HANDLE_BAT(, 5320) +HANDLE_BAT(, 5321) +HANDLE_BAT(, 5322) +HANDLE_BAT(, 5323) +HANDLE_BAT(, 5324) +HANDLE_BAT(, 5325) +HANDLE_BAT(, 5326) +HANDLE_BAT(, 5327) +HANDLE_BAT(, 5328) +HANDLE_BAT(, 5329) +HANDLE_BAT(, 5330) +HANDLE_BAT(, 5331) +HANDLE_BAT(, 5332) +HANDLE_BAT(, 5333) +HANDLE_BAT(, 5334) +HANDLE_BAT(, 5335) +HANDLE_BAT(, 5336) +HANDLE_BAT(, 5337) +HANDLE_BAT(, 5338) +HANDLE_BAT(, 5339) +HANDLE_BAT(, 5340) +HANDLE_BAT(, 5341) +HANDLE_BAT(, 5342) +HANDLE_BAT(, 5343) +HANDLE_BAT(, 5344) +HANDLE_BAT(, 5345) +HANDLE_BAT(, 5346) +HANDLE_BAT(, 5347) +HANDLE_BAT(, 5348) +HANDLE_BAT(, 5349) +HANDLE_BAT(, 5350) +HANDLE_BAT(, 5351) +HANDLE_BAT(, 5352) +HANDLE_BAT(, 5353) +HANDLE_BAT(, 5354) +HANDLE_BAT(, 5355) +HANDLE_BAT(, 5356) +HANDLE_BAT(, 5357) +HANDLE_BAT(, 5358) +HANDLE_BAT(, 5359) +HANDLE_BAT(, 5360) +HANDLE_BAT(, 5361) +HANDLE_BAT(, 5362) +HANDLE_BAT(, 5363) +HANDLE_BAT(, 5364) +HANDLE_BAT(, 5365) +HANDLE_BAT(, 5366) +HANDLE_BAT(, 5367) +HANDLE_BAT(, 5368) +HANDLE_BAT(, 5369) +HANDLE_BAT(, 5370) +HANDLE_BAT(, 5371) +HANDLE_BAT(, 5372) +HANDLE_BAT(, 5373) +HANDLE_BAT(, 5374) +HANDLE_BAT(, 5375) +HANDLE_BAT(, 5376) +HANDLE_BAT(, 5377) +HANDLE_BAT(, 5378) +HANDLE_BAT(, 5379) +HANDLE_BAT(, 5380) +HANDLE_BAT(, 5381) +HANDLE_BAT(, 5382) +HANDLE_BAT(, 5383) +HANDLE_BAT(, 5384) +HANDLE_BAT(, 5385) +HANDLE_BAT(, 5386) +HANDLE_BAT(, 5387) +HANDLE_BAT(, 5388) +HANDLE_BAT(, 5389) +HANDLE_BAT(, 5390) +HANDLE_BAT(, 5391) +HANDLE_BAT(, 5392) +HANDLE_BAT(, 5393) +HANDLE_BAT(, 5394) +HANDLE_BAT(, 5395) +HANDLE_BAT(, 5396) +HANDLE_BAT(, 5397) +HANDLE_BAT(, 5398) +HANDLE_BAT(, 5399) +HANDLE_BAT(, 5400) +HANDLE_BAT(, 5401) +HANDLE_BAT(, 5402) +HANDLE_BAT(, 5403) +HANDLE_BAT(, 5404) +HANDLE_BAT(, 5405) +HANDLE_BAT(, 5406) +HANDLE_BAT(, 5407) +HANDLE_BAT(, 5408) +HANDLE_BAT(, 5409) +HANDLE_BAT(, 5410) +HANDLE_BAT(, 5411) +HANDLE_BAT(, 5412) +HANDLE_BAT(, 5413) +HANDLE_BAT(, 5414) +HANDLE_BAT(, 5415) +HANDLE_BAT(, 5416) +HANDLE_BAT(, 5417) +HANDLE_BAT(, 5418) +HANDLE_BAT(, 5419) +HANDLE_BAT(, 5420) +HANDLE_BAT(, 5421) +HANDLE_BAT(, 5422) +HANDLE_BAT(, 5423) +HANDLE_BAT(, 5424) +HANDLE_BAT(, 5425) +HANDLE_BAT(, 5426) +HANDLE_BAT(, 5427) +HANDLE_BAT(, 5428) +HANDLE_BAT(, 5429) +HANDLE_BAT(, 5430) +HANDLE_BAT(, 5431) +HANDLE_BAT(, 5432) +HANDLE_BAT(, 5433) +HANDLE_BAT(, 5434) +HANDLE_BAT(, 5435) +HANDLE_BAT(, 5436) +HANDLE_BAT(, 5437) +HANDLE_BAT(, 5438) +HANDLE_BAT(, 5439) +HANDLE_BAT(, 5440) +HANDLE_BAT(, 5441) +HANDLE_BAT(, 5442) +HANDLE_BAT(, 5443) +HANDLE_BAT(, 5444) +HANDLE_BAT(, 5445) +HANDLE_BAT(, 5446) +HANDLE_BAT(, 5447) +HANDLE_BAT(, 5448) +HANDLE_BAT(, 5449) +HANDLE_BAT(, 5450) +HANDLE_BAT(, 5451) +HANDLE_BAT(, 5452) +HANDLE_BAT(, 5453) +HANDLE_BAT(, 5454) +HANDLE_BAT(, 5455) +HANDLE_BAT(, 5456) +HANDLE_BAT(, 5457) +HANDLE_BAT(, 5458) +HANDLE_BAT(, 5459) +HANDLE_BAT(, 5460) +HANDLE_BAT(, 5461) +HANDLE_BAT(, 5462) +HANDLE_BAT(, 5463) +HANDLE_BAT(, 5464) +HANDLE_BAT(, 5465) +HANDLE_BAT(, 5466) +HANDLE_BAT(, 5467) +HANDLE_BAT(, 5468) +HANDLE_BAT(, 5469) +HANDLE_BAT(, 5470) +HANDLE_BAT(, 5471) +HANDLE_BAT(, 5472) +HANDLE_BAT(, 5473) +HANDLE_BAT(, 5474) +HANDLE_BAT(, 5475) +HANDLE_BAT(, 5476) +HANDLE_BAT(, 5477) +HANDLE_BAT(, 5478) +HANDLE_BAT(, 5479) +HANDLE_BAT(, 5480) +HANDLE_BAT(, 5481) +HANDLE_BAT(, 5482) +HANDLE_BAT(, 5483) +HANDLE_BAT(, 5484) +HANDLE_BAT(, 5485) +HANDLE_BAT(, 5486) +HANDLE_BAT(, 5487) +HANDLE_BAT(, 5488) +HANDLE_BAT(, 5489) +HANDLE_BAT(, 5490) +HANDLE_BAT(, 5491) +HANDLE_BAT(, 5492) +HANDLE_BAT(, 5493) +HANDLE_BAT(, 5494) +HANDLE_BAT(, 5495) +HANDLE_BAT(, 5496) +HANDLE_BAT(, 5497) +HANDLE_BAT(, 5498) +HANDLE_BAT(, 5499) +HANDLE_BAT(, 5500) +HANDLE_BAT(, 5501) +HANDLE_BAT(, 5502) +HANDLE_BAT(, 5503) +HANDLE_BAT(, 5504) +HANDLE_BAT(, 5505) +HANDLE_BAT(, 5506) +HANDLE_BAT(, 5507) +HANDLE_BAT(, 5508) +HANDLE_BAT(, 5509) +HANDLE_BAT(, 5510) +HANDLE_BAT(, 5511) +HANDLE_BAT(, 5512) +HANDLE_BAT(, 5513) +HANDLE_BAT(, 5514) +HANDLE_BAT(, 5515) +HANDLE_BAT(, 5516) +HANDLE_BAT(, 5517) +HANDLE_BAT(, 5518) +HANDLE_BAT(, 5519) +HANDLE_BAT(, 5520) +HANDLE_BAT(, 5521) +HANDLE_BAT(, 5522) +HANDLE_BAT(, 5523) +HANDLE_BAT(, 5524) +HANDLE_BAT(, 5525) +HANDLE_BAT(, 5526) +HANDLE_BAT(, 5527) +HANDLE_BAT(, 5528) +HANDLE_BAT(, 5529) +HANDLE_BAT(, 5530) +HANDLE_BAT(, 5531) +HANDLE_BAT(, 5532) +HANDLE_BAT(, 5533) +HANDLE_BAT(, 5534) +HANDLE_BAT(, 5535) +HANDLE_BAT(, 5536) +HANDLE_BAT(, 5537) +HANDLE_BAT(, 5538) +HANDLE_BAT(, 5539) +HANDLE_BAT(, 5540) +HANDLE_BAT(, 5541) +HANDLE_BAT(, 5542) +HANDLE_BAT(, 5543) +HANDLE_BAT(, 5544) +HANDLE_BAT(, 5545) +HANDLE_BAT(, 5546) +HANDLE_BAT(, 5547) +HANDLE_BAT(, 5548) +HANDLE_BAT(, 5549) +HANDLE_BAT(, 5550) +HANDLE_BAT(, 5551) +HANDLE_BAT(, 5552) +HANDLE_BAT(, 5553) +HANDLE_BAT(, 5554) +HANDLE_BAT(, 5555) +HANDLE_BAT(, 5556) +HANDLE_BAT(, 5557) +HANDLE_BAT(, 5558) +HANDLE_BAT(, 5559) +HANDLE_BAT(, 5560) +HANDLE_BAT(, 5561) +HANDLE_BAT(, 5562) +HANDLE_BAT(, 5563) +HANDLE_BAT(, 5564) +HANDLE_BAT(, 5565) +HANDLE_BAT(, 5566) +HANDLE_BAT(, 5567) +HANDLE_BAT(, 5568) +HANDLE_BAT(, 5569) +HANDLE_BAT(, 5570) +HANDLE_BAT(, 5571) +HANDLE_BAT(, 5572) +HANDLE_BAT(, 5573) +HANDLE_BAT(, 5574) +HANDLE_BAT(, 5575) +HANDLE_BAT(, 5576) +HANDLE_BAT(, 5577) +HANDLE_BAT(, 5578) +HANDLE_BAT(, 5579) +HANDLE_BAT(, 5580) +HANDLE_BAT(, 5581) +HANDLE_BAT(, 5582) +HANDLE_BAT(, 5583) +HANDLE_BAT(, 5584) +HANDLE_BAT(, 5585) +HANDLE_BAT(, 5586) +HANDLE_BAT(, 5587) +HANDLE_BAT(, 5588) +HANDLE_BAT(, 5589) +HANDLE_BAT(, 5590) +HANDLE_BAT(, 5591) +HANDLE_BAT(, 5592) +HANDLE_BAT(, 5593) +HANDLE_BAT(, 5594) +HANDLE_BAT(, 5595) +HANDLE_BAT(, 5596) +HANDLE_BAT(, 5597) +HANDLE_BAT(, 5598) +HANDLE_BAT(, 5599) +HANDLE_BAT(, 5600) +HANDLE_BAT(, 5601) +HANDLE_BAT(, 5602) +HANDLE_BAT(, 5603) +HANDLE_BAT(, 5604) +HANDLE_BAT(, 5605) +HANDLE_BAT(, 5606) +HANDLE_BAT(, 5607) +HANDLE_BAT(, 5608) +HANDLE_BAT(, 5609) +HANDLE_BAT(, 5610) +HANDLE_BAT(, 5611) +HANDLE_BAT(, 5612) +HANDLE_BAT(, 5613) +HANDLE_BAT(, 5614) +HANDLE_BAT(, 5615) +HANDLE_BAT(, 5616) +HANDLE_BAT(, 5617) +HANDLE_BAT(, 5618) +HANDLE_BAT(, 5619) +HANDLE_BAT(, 5620) +HANDLE_BAT(, 5621) +HANDLE_BAT(, 5622) +HANDLE_BAT(, 5623) +HANDLE_BAT(, 5624) +HANDLE_BAT(, 5625) +HANDLE_BAT(, 5626) +HANDLE_BAT(, 5627) +HANDLE_BAT(, 5628) +HANDLE_BAT(, 5629) +HANDLE_BAT(, 5630) +HANDLE_BAT(, 5631) +HANDLE_BAT(, 5632) +HANDLE_BAT(, 5633) +HANDLE_BAT(, 5634) +HANDLE_BAT(, 5635) +HANDLE_BAT(, 5636) +HANDLE_BAT(, 5637) +HANDLE_BAT(, 5638) +HANDLE_BAT(, 5639) +HANDLE_BAT(, 5640) +HANDLE_BAT(, 5641) +HANDLE_BAT(, 5642) +HANDLE_BAT(, 5643) +HANDLE_BAT(, 5644) +HANDLE_BAT(, 5645) +HANDLE_BAT(, 5646) +HANDLE_BAT(, 5647) +HANDLE_BAT(, 5648) +HANDLE_BAT(, 5649) +HANDLE_BAT(, 5650) +HANDLE_BAT(, 5651) +HANDLE_BAT(, 5652) +HANDLE_BAT(, 5653) +HANDLE_BAT(, 5654) +HANDLE_BAT(, 5655) +HANDLE_BAT(, 5656) +HANDLE_BAT(, 5657) +HANDLE_BAT(, 5658) +HANDLE_BAT(, 5659) +HANDLE_BAT(, 5660) +HANDLE_BAT(, 5661) +HANDLE_BAT(, 5662) +HANDLE_BAT(, 5663) +HANDLE_BAT(, 5664) +HANDLE_BAT(, 5665) +HANDLE_BAT(, 5666) +HANDLE_BAT(, 5667) +HANDLE_BAT(, 5668) +HANDLE_BAT(, 5669) +HANDLE_BAT(, 5670) +HANDLE_BAT(, 5671) +HANDLE_BAT(, 5672) +HANDLE_BAT(, 5673) +HANDLE_BAT(, 5674) +HANDLE_BAT(, 5675) +HANDLE_BAT(, 5676) +HANDLE_BAT(, 5677) +HANDLE_BAT(, 5678) +HANDLE_BAT(, 5679) +HANDLE_BAT(, 5680) +HANDLE_BAT(, 5681) +HANDLE_BAT(, 5682) +HANDLE_BAT(, 5683) +HANDLE_BAT(, 5684) +HANDLE_BAT(, 5685) +HANDLE_BAT(, 5686) +HANDLE_BAT(, 5687) +HANDLE_BAT(, 5688) +HANDLE_BAT(, 5689) +HANDLE_BAT(, 5690) +HANDLE_BAT(, 5691) +HANDLE_BAT(, 5692) +HANDLE_BAT(, 5693) +HANDLE_BAT(, 5694) +HANDLE_BAT(, 5695) +HANDLE_BAT(, 5696) +HANDLE_BAT(, 5697) +HANDLE_BAT(, 5698) +HANDLE_BAT(, 5699) +HANDLE_BAT(, 5700) +HANDLE_BAT(, 5701) +HANDLE_BAT(, 5702) +HANDLE_BAT(, 5703) +HANDLE_BAT(, 5704) +HANDLE_BAT(, 5705) +HANDLE_BAT(, 5706) +HANDLE_BAT(, 5707) +HANDLE_BAT(, 5708) +HANDLE_BAT(, 5709) +HANDLE_BAT(, 5710) +HANDLE_BAT(, 5711) +HANDLE_BAT(, 5712) +HANDLE_BAT(, 5713) +HANDLE_BAT(, 5714) +HANDLE_BAT(, 5715) +HANDLE_BAT(, 5716) +HANDLE_BAT(, 5717) +HANDLE_BAT(, 5718) +HANDLE_BAT(, 5719) +HANDLE_BAT(, 5720) +HANDLE_BAT(, 5721) +HANDLE_BAT(, 5722) +HANDLE_BAT(, 5723) +HANDLE_BAT(, 5724) +HANDLE_BAT(, 5725) +HANDLE_BAT(, 5726) +HANDLE_BAT(, 5727) +HANDLE_BAT(, 5728) +HANDLE_BAT(, 5729) +HANDLE_BAT(, 5730) +HANDLE_BAT(, 5731) +HANDLE_BAT(, 5732) +HANDLE_BAT(, 5733) +HANDLE_BAT(, 5734) +HANDLE_BAT(, 5735) +HANDLE_BAT(, 5736) +HANDLE_BAT(, 5737) +HANDLE_BAT(, 5738) +HANDLE_BAT(, 5739) +HANDLE_BAT(, 5740) +HANDLE_BAT(, 5741) +HANDLE_BAT(, 5742) +HANDLE_BAT(, 5743) +HANDLE_BAT(, 5744) +HANDLE_BAT(, 5745) +HANDLE_BAT(, 5746) +HANDLE_BAT(, 5747) +HANDLE_BAT(, 5748) +HANDLE_BAT(, 5749) +HANDLE_BAT(, 5750) +HANDLE_BAT(, 5751) +HANDLE_BAT(, 5752) +HANDLE_BAT(, 5753) +HANDLE_BAT(, 5754) +HANDLE_BAT(, 5755) +HANDLE_BAT(, 5756) +HANDLE_BAT(, 5757) +HANDLE_BAT(, 5758) +HANDLE_BAT(, 5759) +HANDLE_BAT(, 5760) +HANDLE_BAT(, 5761) +HANDLE_BAT(, 5762) +HANDLE_BAT(, 5763) +HANDLE_BAT(, 5764) +HANDLE_BAT(, 5765) +HANDLE_BAT(, 5766) +HANDLE_BAT(, 5767) +HANDLE_BAT(, 5768) +HANDLE_BAT(, 5769) +HANDLE_BAT(, 5770) +HANDLE_BAT(, 5771) +HANDLE_BAT(, 5772) +HANDLE_BAT(, 5773) +HANDLE_BAT(, 5774) +HANDLE_BAT(, 5775) +HANDLE_BAT(, 5776) +HANDLE_BAT(, 5777) +HANDLE_BAT(, 5778) +HANDLE_BAT(, 5779) +HANDLE_BAT(, 5780) +HANDLE_BAT(, 5781) +HANDLE_BAT(, 5782) +HANDLE_BAT(, 5783) +HANDLE_BAT(, 5784) +HANDLE_BAT(, 5785) +HANDLE_BAT(, 5786) +HANDLE_BAT(, 5787) +HANDLE_BAT(, 5788) +HANDLE_BAT(, 5789) +HANDLE_BAT(, 5790) +HANDLE_BAT(, 5791) +HANDLE_BAT(, 5792) +HANDLE_BAT(, 5793) +HANDLE_BAT(, 5794) +HANDLE_BAT(, 5795) +HANDLE_BAT(, 5796) +HANDLE_BAT(, 5797) +HANDLE_BAT(, 5798) +HANDLE_BAT(, 5799) +HANDLE_BAT(, 5800) +HANDLE_BAT(, 5801) +HANDLE_BAT(, 5802) +HANDLE_BAT(, 5803) +HANDLE_BAT(, 5804) +HANDLE_BAT(, 5805) +HANDLE_BAT(, 5806) +HANDLE_BAT(, 5807) +HANDLE_BAT(, 5808) +HANDLE_BAT(, 5809) +HANDLE_BAT(, 5810) +HANDLE_BAT(, 5811) +HANDLE_BAT(, 5812) +HANDLE_BAT(, 5813) +HANDLE_BAT(, 5814) +HANDLE_BAT(, 5815) +HANDLE_BAT(, 5816) +HANDLE_BAT(, 5817) +HANDLE_BAT(, 5818) +HANDLE_BAT(, 5819) +HANDLE_BAT(, 5820) +HANDLE_BAT(, 5821) +HANDLE_BAT(, 5822) +HANDLE_BAT(, 5823) +HANDLE_BAT(, 5824) +HANDLE_BAT(, 5825) +HANDLE_BAT(, 5826) +HANDLE_BAT(, 5827) +HANDLE_BAT(, 5828) +HANDLE_BAT(, 5829) +HANDLE_BAT(, 5830) +HANDLE_BAT(, 5831) +HANDLE_BAT(, 5832) +HANDLE_BAT(, 5833) +HANDLE_BAT(, 5834) +HANDLE_BAT(, 5835) +HANDLE_BAT(, 5836) +HANDLE_BAT(, 5837) +HANDLE_BAT(, 5838) +HANDLE_BAT(, 5839) +HANDLE_BAT(, 5840) +HANDLE_BAT(, 5841) +HANDLE_BAT(, 5842) +HANDLE_BAT(, 5843) +HANDLE_BAT(, 5844) +HANDLE_BAT(, 5845) +HANDLE_BAT(, 5846) +HANDLE_BAT(, 5847) +HANDLE_BAT(, 5848) +HANDLE_BAT(, 5849) +HANDLE_BAT(, 5850) +HANDLE_BAT(, 5851) +HANDLE_BAT(, 5852) +HANDLE_BAT(, 5853) +HANDLE_BAT(, 5854) +HANDLE_BAT(, 5855) +HANDLE_BAT(, 5856) +HANDLE_BAT(, 5857) +HANDLE_BAT(, 5858) +HANDLE_BAT(, 5859) +HANDLE_BAT(, 5860) +HANDLE_BAT(, 5861) +HANDLE_BAT(, 5862) +HANDLE_BAT(, 5863) +HANDLE_BAT(, 5864) +HANDLE_BAT(, 5865) +HANDLE_BAT(, 5866) +HANDLE_BAT(, 5867) +HANDLE_BAT(, 5868) +HANDLE_BAT(, 5869) +HANDLE_BAT(, 5870) +HANDLE_BAT(, 5871) +HANDLE_BAT(, 5872) +HANDLE_BAT(, 5873) +HANDLE_BAT(, 5874) +HANDLE_BAT(, 5875) +HANDLE_BAT(, 5876) +HANDLE_BAT(, 5877) +HANDLE_BAT(, 5878) +HANDLE_BAT(, 5879) +HANDLE_BAT(, 5880) +HANDLE_BAT(, 5881) +HANDLE_BAT(, 5882) +HANDLE_BAT(, 5883) +HANDLE_BAT(, 5884) +HANDLE_BAT(, 5885) +HANDLE_BAT(, 5886) +HANDLE_BAT(, 5887) +HANDLE_BAT(, 5888) +HANDLE_BAT(, 5889) +HANDLE_BAT(, 5890) +HANDLE_BAT(, 5891) +HANDLE_BAT(, 5892) +HANDLE_BAT(, 5893) +HANDLE_BAT(, 5894) +HANDLE_BAT(, 5895) +HANDLE_BAT(, 5896) +HANDLE_BAT(, 5897) +HANDLE_BAT(, 5898) +HANDLE_BAT(, 5899) +HANDLE_BAT(, 5900) +HANDLE_BAT(, 5901) +HANDLE_BAT(, 5902) +HANDLE_BAT(, 5903) +HANDLE_BAT(, 5904) +HANDLE_BAT(, 5905) +HANDLE_BAT(, 5906) +HANDLE_BAT(, 5907) +HANDLE_BAT(, 5908) +HANDLE_BAT(, 5909) +HANDLE_BAT(, 5910) +HANDLE_BAT(, 5911) +HANDLE_BAT(, 5912) +HANDLE_BAT(, 5913) +HANDLE_BAT(, 5914) +HANDLE_BAT(, 5915) +HANDLE_BAT(, 5916) +HANDLE_BAT(, 5917) +HANDLE_BAT(, 5918) +HANDLE_BAT(, 5919) +HANDLE_BAT(, 5920) +HANDLE_BAT(, 5921) +HANDLE_BAT(, 5922) +HANDLE_BAT(, 5923) +HANDLE_BAT(, 5924) +HANDLE_BAT(, 5925) +HANDLE_BAT(, 5926) +HANDLE_BAT(, 5927) +HANDLE_BAT(, 5928) +HANDLE_BAT(, 5929) +HANDLE_BAT(, 5930) +HANDLE_BAT(, 5931) +HANDLE_BAT(, 5932) +HANDLE_BAT(, 5933) +HANDLE_BAT(, 5934) +HANDLE_BAT(, 5935) +HANDLE_BAT(, 5936) +HANDLE_BAT(, 5937) +HANDLE_BAT(, 5938) +HANDLE_BAT(, 5939) +HANDLE_BAT(, 5940) +HANDLE_BAT(, 5941) +HANDLE_BAT(, 5942) +HANDLE_BAT(, 5943) +HANDLE_BAT(, 5944) +HANDLE_BAT(, 5945) +HANDLE_BAT(, 5946) +HANDLE_BAT(, 5947) +HANDLE_BAT(, 5948) +HANDLE_BAT(, 5949) +HANDLE_BAT(, 5950) +HANDLE_BAT(, 5951) +HANDLE_BAT(, 5952) +HANDLE_BAT(, 5953) +HANDLE_BAT(, 5954) +HANDLE_BAT(, 5955) +HANDLE_BAT(, 5956) +HANDLE_BAT(, 5957) +HANDLE_BAT(, 5958) +HANDLE_BAT(, 5959) +HANDLE_BAT(, 5960) +HANDLE_BAT(, 5961) +HANDLE_BAT(, 5962) +HANDLE_BAT(, 5963) +HANDLE_BAT(, 5964) +HANDLE_BAT(, 5965) +HANDLE_BAT(, 5966) +HANDLE_BAT(, 5967) +HANDLE_BAT(, 5968) +HANDLE_BAT(, 5969) +HANDLE_BAT(, 5970) +HANDLE_BAT(, 5971) +HANDLE_BAT(, 5972) +HANDLE_BAT(, 5973) +HANDLE_BAT(, 5974) +HANDLE_BAT(, 5975) +HANDLE_BAT(, 5976) +HANDLE_BAT(, 5977) +HANDLE_BAT(, 5978) +HANDLE_BAT(, 5979) +HANDLE_BAT(, 5980) +HANDLE_BAT(, 5981) +HANDLE_BAT(, 5982) +HANDLE_BAT(, 5983) +HANDLE_BAT(, 5984) +HANDLE_BAT(, 5985) +HANDLE_BAT(, 5986) +HANDLE_BAT(, 5987) +HANDLE_BAT(, 5988) +HANDLE_BAT(, 5989) +HANDLE_BAT(, 5990) +HANDLE_BAT(, 5991) +HANDLE_BAT(, 5992) +HANDLE_BAT(, 5993) +HANDLE_BAT(, 5994) +HANDLE_BAT(, 5995) +HANDLE_BAT(, 5996) +HANDLE_BAT(, 5997) +HANDLE_BAT(, 5998) +HANDLE_BAT(, 5999) +HANDLE_BAT(, 6000) +HANDLE_BAT(, 6001) +HANDLE_BAT(, 6002) +HANDLE_BAT(, 6003) +HANDLE_BAT(, 6004) +HANDLE_BAT(, 6005) +HANDLE_BAT(, 6006) +HANDLE_BAT(, 6007) +HANDLE_BAT(, 6008) +HANDLE_BAT(, 6009) +HANDLE_BAT(, 6010) +HANDLE_BAT(, 6011) +HANDLE_BAT(, 6012) +HANDLE_BAT(, 6013) +HANDLE_BAT(, 6014) +HANDLE_BAT(, 6015) +HANDLE_BAT(, 6016) +HANDLE_BAT(, 6017) +HANDLE_BAT(, 6018) +HANDLE_BAT(, 6019) +HANDLE_BAT(, 6020) +HANDLE_BAT(, 6021) +HANDLE_BAT(, 6022) +HANDLE_BAT(, 6023) +HANDLE_BAT(, 6024) +HANDLE_BAT(, 6025) +HANDLE_BAT(, 6026) +HANDLE_BAT(, 6027) +HANDLE_BAT(, 6028) +HANDLE_BAT(, 6029) +HANDLE_BAT(, 6030) +HANDLE_BAT(, 6031) +HANDLE_BAT(, 6032) +HANDLE_BAT(, 6033) +HANDLE_BAT(, 6034) +HANDLE_BAT(, 6035) +HANDLE_BAT(, 6036) +HANDLE_BAT(, 6037) +HANDLE_BAT(, 6038) +HANDLE_BAT(, 6039) +HANDLE_BAT(, 6040) +HANDLE_BAT(, 6041) +HANDLE_BAT(, 6042) +HANDLE_BAT(, 6043) +HANDLE_BAT(, 6044) +HANDLE_BAT(, 6045) +HANDLE_BAT(, 6046) +HANDLE_BAT(, 6047) +HANDLE_BAT(, 6048) +HANDLE_BAT(, 6049) +HANDLE_BAT(, 6050) +HANDLE_BAT(, 6051) +HANDLE_BAT(, 6052) +HANDLE_BAT(, 6053) +HANDLE_BAT(, 6054) +HANDLE_BAT(, 6055) +HANDLE_BAT(, 6056) +HANDLE_BAT(, 6057) +HANDLE_BAT(, 6058) +HANDLE_BAT(, 6059) +HANDLE_BAT(, 6060) +HANDLE_BAT(, 6061) +HANDLE_BAT(, 6062) +HANDLE_BAT(, 6063) +HANDLE_BAT(, 6064) +HANDLE_BAT(, 6065) +HANDLE_BAT(, 6066) +HANDLE_BAT(, 6067) +HANDLE_BAT(, 6068) +HANDLE_BAT(, 6069) +HANDLE_BAT(, 6070) +HANDLE_BAT(, 6071) +HANDLE_BAT(, 6072) +HANDLE_BAT(, 6073) +HANDLE_BAT(, 6074) +HANDLE_BAT(, 6075) +HANDLE_BAT(, 6076) +HANDLE_BAT(, 6077) +HANDLE_BAT(, 6078) +HANDLE_BAT(, 6079) +HANDLE_BAT(, 6080) +HANDLE_BAT(, 6081) +HANDLE_BAT(, 6082) +HANDLE_BAT(, 6083) +HANDLE_BAT(, 6084) +HANDLE_BAT(, 6085) +HANDLE_BAT(, 6086) +HANDLE_BAT(, 6087) +HANDLE_BAT(, 6088) +HANDLE_BAT(, 6089) +HANDLE_BAT(, 6090) +HANDLE_BAT(, 6091) +HANDLE_BAT(, 6092) +HANDLE_BAT(, 6093) +HANDLE_BAT(, 6094) +HANDLE_BAT(, 6095) +HANDLE_BAT(, 6096) +HANDLE_BAT(, 6097) +HANDLE_BAT(, 6098) +HANDLE_BAT(, 6099) +HANDLE_BAT(, 6100) +HANDLE_BAT(, 6101) +HANDLE_BAT(, 6102) +HANDLE_BAT(, 6103) +HANDLE_BAT(, 6104) +HANDLE_BAT(, 6105) +HANDLE_BAT(, 6106) +HANDLE_BAT(, 6107) +HANDLE_BAT(, 6108) +HANDLE_BAT(, 6109) +HANDLE_BAT(, 6110) +HANDLE_BAT(, 6111) +HANDLE_BAT(, 6112) +HANDLE_BAT(, 6113) +HANDLE_BAT(, 6114) +HANDLE_BAT(, 6115) +HANDLE_BAT(, 6116) +HANDLE_BAT(, 6117) +HANDLE_BAT(, 6118) +HANDLE_BAT(, 6119) +HANDLE_BAT(, 6120) +HANDLE_BAT(, 6121) +HANDLE_BAT(, 6122) +HANDLE_BAT(, 6123) +HANDLE_BAT(, 6124) +HANDLE_BAT(, 6125) +HANDLE_BAT(, 6126) +HANDLE_BAT(, 6127) +HANDLE_BAT(, 6128) +HANDLE_BAT(, 6129) +HANDLE_BAT(, 6130) +HANDLE_BAT(, 6131) +HANDLE_BAT(, 6132) +HANDLE_BAT(, 6133) +HANDLE_BAT(, 6134) +HANDLE_BAT(, 6135) +HANDLE_BAT(, 6136) +HANDLE_BAT(, 6137) +HANDLE_BAT(, 6138) +HANDLE_BAT(, 6139) +HANDLE_BAT(, 6140) +HANDLE_BAT(, 6141) +HANDLE_BAT(, 6142) +HANDLE_BAT(, 6143) +HANDLE_BAT(, 6144) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 5121) +HANDLE_BAT(APINT_TYPE_PREFIX, 5122) +HANDLE_BAT(APINT_TYPE_PREFIX, 5123) +HANDLE_BAT(APINT_TYPE_PREFIX, 5124) +HANDLE_BAT(APINT_TYPE_PREFIX, 5125) +HANDLE_BAT(APINT_TYPE_PREFIX, 5126) +HANDLE_BAT(APINT_TYPE_PREFIX, 5127) +HANDLE_BAT(APINT_TYPE_PREFIX, 5128) +HANDLE_BAT(APINT_TYPE_PREFIX, 5129) +HANDLE_BAT(APINT_TYPE_PREFIX, 5130) +HANDLE_BAT(APINT_TYPE_PREFIX, 5131) +HANDLE_BAT(APINT_TYPE_PREFIX, 5132) +HANDLE_BAT(APINT_TYPE_PREFIX, 5133) +HANDLE_BAT(APINT_TYPE_PREFIX, 5134) +HANDLE_BAT(APINT_TYPE_PREFIX, 5135) +HANDLE_BAT(APINT_TYPE_PREFIX, 5136) +HANDLE_BAT(APINT_TYPE_PREFIX, 5137) +HANDLE_BAT(APINT_TYPE_PREFIX, 5138) +HANDLE_BAT(APINT_TYPE_PREFIX, 5139) +HANDLE_BAT(APINT_TYPE_PREFIX, 5140) +HANDLE_BAT(APINT_TYPE_PREFIX, 5141) +HANDLE_BAT(APINT_TYPE_PREFIX, 5142) +HANDLE_BAT(APINT_TYPE_PREFIX, 5143) +HANDLE_BAT(APINT_TYPE_PREFIX, 5144) +HANDLE_BAT(APINT_TYPE_PREFIX, 5145) +HANDLE_BAT(APINT_TYPE_PREFIX, 5146) +HANDLE_BAT(APINT_TYPE_PREFIX, 5147) +HANDLE_BAT(APINT_TYPE_PREFIX, 5148) +HANDLE_BAT(APINT_TYPE_PREFIX, 5149) +HANDLE_BAT(APINT_TYPE_PREFIX, 5150) +HANDLE_BAT(APINT_TYPE_PREFIX, 5151) +HANDLE_BAT(APINT_TYPE_PREFIX, 5152) +HANDLE_BAT(APINT_TYPE_PREFIX, 5153) +HANDLE_BAT(APINT_TYPE_PREFIX, 5154) +HANDLE_BAT(APINT_TYPE_PREFIX, 5155) +HANDLE_BAT(APINT_TYPE_PREFIX, 5156) +HANDLE_BAT(APINT_TYPE_PREFIX, 5157) +HANDLE_BAT(APINT_TYPE_PREFIX, 5158) +HANDLE_BAT(APINT_TYPE_PREFIX, 5159) +HANDLE_BAT(APINT_TYPE_PREFIX, 5160) +HANDLE_BAT(APINT_TYPE_PREFIX, 5161) +HANDLE_BAT(APINT_TYPE_PREFIX, 5162) +HANDLE_BAT(APINT_TYPE_PREFIX, 5163) +HANDLE_BAT(APINT_TYPE_PREFIX, 5164) +HANDLE_BAT(APINT_TYPE_PREFIX, 5165) +HANDLE_BAT(APINT_TYPE_PREFIX, 5166) +HANDLE_BAT(APINT_TYPE_PREFIX, 5167) +HANDLE_BAT(APINT_TYPE_PREFIX, 5168) +HANDLE_BAT(APINT_TYPE_PREFIX, 5169) +HANDLE_BAT(APINT_TYPE_PREFIX, 5170) +HANDLE_BAT(APINT_TYPE_PREFIX, 5171) +HANDLE_BAT(APINT_TYPE_PREFIX, 5172) +HANDLE_BAT(APINT_TYPE_PREFIX, 5173) +HANDLE_BAT(APINT_TYPE_PREFIX, 5174) +HANDLE_BAT(APINT_TYPE_PREFIX, 5175) +HANDLE_BAT(APINT_TYPE_PREFIX, 5176) +HANDLE_BAT(APINT_TYPE_PREFIX, 5177) +HANDLE_BAT(APINT_TYPE_PREFIX, 5178) +HANDLE_BAT(APINT_TYPE_PREFIX, 5179) +HANDLE_BAT(APINT_TYPE_PREFIX, 5180) +HANDLE_BAT(APINT_TYPE_PREFIX, 5181) +HANDLE_BAT(APINT_TYPE_PREFIX, 5182) +HANDLE_BAT(APINT_TYPE_PREFIX, 5183) +HANDLE_BAT(APINT_TYPE_PREFIX, 5184) +HANDLE_BAT(APINT_TYPE_PREFIX, 5185) +HANDLE_BAT(APINT_TYPE_PREFIX, 5186) +HANDLE_BAT(APINT_TYPE_PREFIX, 5187) +HANDLE_BAT(APINT_TYPE_PREFIX, 5188) +HANDLE_BAT(APINT_TYPE_PREFIX, 5189) +HANDLE_BAT(APINT_TYPE_PREFIX, 5190) +HANDLE_BAT(APINT_TYPE_PREFIX, 5191) +HANDLE_BAT(APINT_TYPE_PREFIX, 5192) +HANDLE_BAT(APINT_TYPE_PREFIX, 5193) +HANDLE_BAT(APINT_TYPE_PREFIX, 5194) +HANDLE_BAT(APINT_TYPE_PREFIX, 5195) +HANDLE_BAT(APINT_TYPE_PREFIX, 5196) +HANDLE_BAT(APINT_TYPE_PREFIX, 5197) +HANDLE_BAT(APINT_TYPE_PREFIX, 5198) +HANDLE_BAT(APINT_TYPE_PREFIX, 5199) +HANDLE_BAT(APINT_TYPE_PREFIX, 5200) +HANDLE_BAT(APINT_TYPE_PREFIX, 5201) +HANDLE_BAT(APINT_TYPE_PREFIX, 5202) +HANDLE_BAT(APINT_TYPE_PREFIX, 5203) +HANDLE_BAT(APINT_TYPE_PREFIX, 5204) +HANDLE_BAT(APINT_TYPE_PREFIX, 5205) +HANDLE_BAT(APINT_TYPE_PREFIX, 5206) +HANDLE_BAT(APINT_TYPE_PREFIX, 5207) +HANDLE_BAT(APINT_TYPE_PREFIX, 5208) +HANDLE_BAT(APINT_TYPE_PREFIX, 5209) +HANDLE_BAT(APINT_TYPE_PREFIX, 5210) +HANDLE_BAT(APINT_TYPE_PREFIX, 5211) +HANDLE_BAT(APINT_TYPE_PREFIX, 5212) +HANDLE_BAT(APINT_TYPE_PREFIX, 5213) +HANDLE_BAT(APINT_TYPE_PREFIX, 5214) +HANDLE_BAT(APINT_TYPE_PREFIX, 5215) +HANDLE_BAT(APINT_TYPE_PREFIX, 5216) +HANDLE_BAT(APINT_TYPE_PREFIX, 5217) +HANDLE_BAT(APINT_TYPE_PREFIX, 5218) +HANDLE_BAT(APINT_TYPE_PREFIX, 5219) +HANDLE_BAT(APINT_TYPE_PREFIX, 5220) +HANDLE_BAT(APINT_TYPE_PREFIX, 5221) +HANDLE_BAT(APINT_TYPE_PREFIX, 5222) +HANDLE_BAT(APINT_TYPE_PREFIX, 5223) +HANDLE_BAT(APINT_TYPE_PREFIX, 5224) +HANDLE_BAT(APINT_TYPE_PREFIX, 5225) +HANDLE_BAT(APINT_TYPE_PREFIX, 5226) +HANDLE_BAT(APINT_TYPE_PREFIX, 5227) +HANDLE_BAT(APINT_TYPE_PREFIX, 5228) +HANDLE_BAT(APINT_TYPE_PREFIX, 5229) +HANDLE_BAT(APINT_TYPE_PREFIX, 5230) +HANDLE_BAT(APINT_TYPE_PREFIX, 5231) +HANDLE_BAT(APINT_TYPE_PREFIX, 5232) +HANDLE_BAT(APINT_TYPE_PREFIX, 5233) +HANDLE_BAT(APINT_TYPE_PREFIX, 5234) +HANDLE_BAT(APINT_TYPE_PREFIX, 5235) +HANDLE_BAT(APINT_TYPE_PREFIX, 5236) +HANDLE_BAT(APINT_TYPE_PREFIX, 5237) +HANDLE_BAT(APINT_TYPE_PREFIX, 5238) +HANDLE_BAT(APINT_TYPE_PREFIX, 5239) +HANDLE_BAT(APINT_TYPE_PREFIX, 5240) +HANDLE_BAT(APINT_TYPE_PREFIX, 5241) +HANDLE_BAT(APINT_TYPE_PREFIX, 5242) +HANDLE_BAT(APINT_TYPE_PREFIX, 5243) +HANDLE_BAT(APINT_TYPE_PREFIX, 5244) +HANDLE_BAT(APINT_TYPE_PREFIX, 5245) +HANDLE_BAT(APINT_TYPE_PREFIX, 5246) +HANDLE_BAT(APINT_TYPE_PREFIX, 5247) +HANDLE_BAT(APINT_TYPE_PREFIX, 5248) +HANDLE_BAT(APINT_TYPE_PREFIX, 5249) +HANDLE_BAT(APINT_TYPE_PREFIX, 5250) +HANDLE_BAT(APINT_TYPE_PREFIX, 5251) +HANDLE_BAT(APINT_TYPE_PREFIX, 5252) +HANDLE_BAT(APINT_TYPE_PREFIX, 5253) +HANDLE_BAT(APINT_TYPE_PREFIX, 5254) +HANDLE_BAT(APINT_TYPE_PREFIX, 5255) +HANDLE_BAT(APINT_TYPE_PREFIX, 5256) +HANDLE_BAT(APINT_TYPE_PREFIX, 5257) +HANDLE_BAT(APINT_TYPE_PREFIX, 5258) +HANDLE_BAT(APINT_TYPE_PREFIX, 5259) +HANDLE_BAT(APINT_TYPE_PREFIX, 5260) +HANDLE_BAT(APINT_TYPE_PREFIX, 5261) +HANDLE_BAT(APINT_TYPE_PREFIX, 5262) +HANDLE_BAT(APINT_TYPE_PREFIX, 5263) +HANDLE_BAT(APINT_TYPE_PREFIX, 5264) +HANDLE_BAT(APINT_TYPE_PREFIX, 5265) +HANDLE_BAT(APINT_TYPE_PREFIX, 5266) +HANDLE_BAT(APINT_TYPE_PREFIX, 5267) +HANDLE_BAT(APINT_TYPE_PREFIX, 5268) +HANDLE_BAT(APINT_TYPE_PREFIX, 5269) +HANDLE_BAT(APINT_TYPE_PREFIX, 5270) +HANDLE_BAT(APINT_TYPE_PREFIX, 5271) +HANDLE_BAT(APINT_TYPE_PREFIX, 5272) +HANDLE_BAT(APINT_TYPE_PREFIX, 5273) +HANDLE_BAT(APINT_TYPE_PREFIX, 5274) +HANDLE_BAT(APINT_TYPE_PREFIX, 5275) +HANDLE_BAT(APINT_TYPE_PREFIX, 5276) +HANDLE_BAT(APINT_TYPE_PREFIX, 5277) +HANDLE_BAT(APINT_TYPE_PREFIX, 5278) +HANDLE_BAT(APINT_TYPE_PREFIX, 5279) +HANDLE_BAT(APINT_TYPE_PREFIX, 5280) +HANDLE_BAT(APINT_TYPE_PREFIX, 5281) +HANDLE_BAT(APINT_TYPE_PREFIX, 5282) +HANDLE_BAT(APINT_TYPE_PREFIX, 5283) +HANDLE_BAT(APINT_TYPE_PREFIX, 5284) +HANDLE_BAT(APINT_TYPE_PREFIX, 5285) +HANDLE_BAT(APINT_TYPE_PREFIX, 5286) +HANDLE_BAT(APINT_TYPE_PREFIX, 5287) +HANDLE_BAT(APINT_TYPE_PREFIX, 5288) +HANDLE_BAT(APINT_TYPE_PREFIX, 5289) +HANDLE_BAT(APINT_TYPE_PREFIX, 5290) +HANDLE_BAT(APINT_TYPE_PREFIX, 5291) +HANDLE_BAT(APINT_TYPE_PREFIX, 5292) +HANDLE_BAT(APINT_TYPE_PREFIX, 5293) +HANDLE_BAT(APINT_TYPE_PREFIX, 5294) +HANDLE_BAT(APINT_TYPE_PREFIX, 5295) +HANDLE_BAT(APINT_TYPE_PREFIX, 5296) +HANDLE_BAT(APINT_TYPE_PREFIX, 5297) +HANDLE_BAT(APINT_TYPE_PREFIX, 5298) +HANDLE_BAT(APINT_TYPE_PREFIX, 5299) +HANDLE_BAT(APINT_TYPE_PREFIX, 5300) +HANDLE_BAT(APINT_TYPE_PREFIX, 5301) +HANDLE_BAT(APINT_TYPE_PREFIX, 5302) +HANDLE_BAT(APINT_TYPE_PREFIX, 5303) +HANDLE_BAT(APINT_TYPE_PREFIX, 5304) +HANDLE_BAT(APINT_TYPE_PREFIX, 5305) +HANDLE_BAT(APINT_TYPE_PREFIX, 5306) +HANDLE_BAT(APINT_TYPE_PREFIX, 5307) +HANDLE_BAT(APINT_TYPE_PREFIX, 5308) +HANDLE_BAT(APINT_TYPE_PREFIX, 5309) +HANDLE_BAT(APINT_TYPE_PREFIX, 5310) +HANDLE_BAT(APINT_TYPE_PREFIX, 5311) +HANDLE_BAT(APINT_TYPE_PREFIX, 5312) +HANDLE_BAT(APINT_TYPE_PREFIX, 5313) +HANDLE_BAT(APINT_TYPE_PREFIX, 5314) +HANDLE_BAT(APINT_TYPE_PREFIX, 5315) +HANDLE_BAT(APINT_TYPE_PREFIX, 5316) +HANDLE_BAT(APINT_TYPE_PREFIX, 5317) +HANDLE_BAT(APINT_TYPE_PREFIX, 5318) +HANDLE_BAT(APINT_TYPE_PREFIX, 5319) +HANDLE_BAT(APINT_TYPE_PREFIX, 5320) +HANDLE_BAT(APINT_TYPE_PREFIX, 5321) +HANDLE_BAT(APINT_TYPE_PREFIX, 5322) +HANDLE_BAT(APINT_TYPE_PREFIX, 5323) +HANDLE_BAT(APINT_TYPE_PREFIX, 5324) +HANDLE_BAT(APINT_TYPE_PREFIX, 5325) +HANDLE_BAT(APINT_TYPE_PREFIX, 5326) +HANDLE_BAT(APINT_TYPE_PREFIX, 5327) +HANDLE_BAT(APINT_TYPE_PREFIX, 5328) +HANDLE_BAT(APINT_TYPE_PREFIX, 5329) +HANDLE_BAT(APINT_TYPE_PREFIX, 5330) +HANDLE_BAT(APINT_TYPE_PREFIX, 5331) +HANDLE_BAT(APINT_TYPE_PREFIX, 5332) +HANDLE_BAT(APINT_TYPE_PREFIX, 5333) +HANDLE_BAT(APINT_TYPE_PREFIX, 5334) +HANDLE_BAT(APINT_TYPE_PREFIX, 5335) +HANDLE_BAT(APINT_TYPE_PREFIX, 5336) +HANDLE_BAT(APINT_TYPE_PREFIX, 5337) +HANDLE_BAT(APINT_TYPE_PREFIX, 5338) +HANDLE_BAT(APINT_TYPE_PREFIX, 5339) +HANDLE_BAT(APINT_TYPE_PREFIX, 5340) +HANDLE_BAT(APINT_TYPE_PREFIX, 5341) +HANDLE_BAT(APINT_TYPE_PREFIX, 5342) +HANDLE_BAT(APINT_TYPE_PREFIX, 5343) +HANDLE_BAT(APINT_TYPE_PREFIX, 5344) +HANDLE_BAT(APINT_TYPE_PREFIX, 5345) +HANDLE_BAT(APINT_TYPE_PREFIX, 5346) +HANDLE_BAT(APINT_TYPE_PREFIX, 5347) +HANDLE_BAT(APINT_TYPE_PREFIX, 5348) +HANDLE_BAT(APINT_TYPE_PREFIX, 5349) +HANDLE_BAT(APINT_TYPE_PREFIX, 5350) +HANDLE_BAT(APINT_TYPE_PREFIX, 5351) +HANDLE_BAT(APINT_TYPE_PREFIX, 5352) +HANDLE_BAT(APINT_TYPE_PREFIX, 5353) +HANDLE_BAT(APINT_TYPE_PREFIX, 5354) +HANDLE_BAT(APINT_TYPE_PREFIX, 5355) +HANDLE_BAT(APINT_TYPE_PREFIX, 5356) +HANDLE_BAT(APINT_TYPE_PREFIX, 5357) +HANDLE_BAT(APINT_TYPE_PREFIX, 5358) +HANDLE_BAT(APINT_TYPE_PREFIX, 5359) +HANDLE_BAT(APINT_TYPE_PREFIX, 5360) +HANDLE_BAT(APINT_TYPE_PREFIX, 5361) +HANDLE_BAT(APINT_TYPE_PREFIX, 5362) +HANDLE_BAT(APINT_TYPE_PREFIX, 5363) +HANDLE_BAT(APINT_TYPE_PREFIX, 5364) +HANDLE_BAT(APINT_TYPE_PREFIX, 5365) +HANDLE_BAT(APINT_TYPE_PREFIX, 5366) +HANDLE_BAT(APINT_TYPE_PREFIX, 5367) +HANDLE_BAT(APINT_TYPE_PREFIX, 5368) +HANDLE_BAT(APINT_TYPE_PREFIX, 5369) +HANDLE_BAT(APINT_TYPE_PREFIX, 5370) +HANDLE_BAT(APINT_TYPE_PREFIX, 5371) +HANDLE_BAT(APINT_TYPE_PREFIX, 5372) +HANDLE_BAT(APINT_TYPE_PREFIX, 5373) +HANDLE_BAT(APINT_TYPE_PREFIX, 5374) +HANDLE_BAT(APINT_TYPE_PREFIX, 5375) +HANDLE_BAT(APINT_TYPE_PREFIX, 5376) +HANDLE_BAT(APINT_TYPE_PREFIX, 5377) +HANDLE_BAT(APINT_TYPE_PREFIX, 5378) +HANDLE_BAT(APINT_TYPE_PREFIX, 5379) +HANDLE_BAT(APINT_TYPE_PREFIX, 5380) +HANDLE_BAT(APINT_TYPE_PREFIX, 5381) +HANDLE_BAT(APINT_TYPE_PREFIX, 5382) +HANDLE_BAT(APINT_TYPE_PREFIX, 5383) +HANDLE_BAT(APINT_TYPE_PREFIX, 5384) +HANDLE_BAT(APINT_TYPE_PREFIX, 5385) +HANDLE_BAT(APINT_TYPE_PREFIX, 5386) +HANDLE_BAT(APINT_TYPE_PREFIX, 5387) +HANDLE_BAT(APINT_TYPE_PREFIX, 5388) +HANDLE_BAT(APINT_TYPE_PREFIX, 5389) +HANDLE_BAT(APINT_TYPE_PREFIX, 5390) +HANDLE_BAT(APINT_TYPE_PREFIX, 5391) +HANDLE_BAT(APINT_TYPE_PREFIX, 5392) +HANDLE_BAT(APINT_TYPE_PREFIX, 5393) +HANDLE_BAT(APINT_TYPE_PREFIX, 5394) +HANDLE_BAT(APINT_TYPE_PREFIX, 5395) +HANDLE_BAT(APINT_TYPE_PREFIX, 5396) +HANDLE_BAT(APINT_TYPE_PREFIX, 5397) +HANDLE_BAT(APINT_TYPE_PREFIX, 5398) +HANDLE_BAT(APINT_TYPE_PREFIX, 5399) +HANDLE_BAT(APINT_TYPE_PREFIX, 5400) +HANDLE_BAT(APINT_TYPE_PREFIX, 5401) +HANDLE_BAT(APINT_TYPE_PREFIX, 5402) +HANDLE_BAT(APINT_TYPE_PREFIX, 5403) +HANDLE_BAT(APINT_TYPE_PREFIX, 5404) +HANDLE_BAT(APINT_TYPE_PREFIX, 5405) +HANDLE_BAT(APINT_TYPE_PREFIX, 5406) +HANDLE_BAT(APINT_TYPE_PREFIX, 5407) +HANDLE_BAT(APINT_TYPE_PREFIX, 5408) +HANDLE_BAT(APINT_TYPE_PREFIX, 5409) +HANDLE_BAT(APINT_TYPE_PREFIX, 5410) +HANDLE_BAT(APINT_TYPE_PREFIX, 5411) +HANDLE_BAT(APINT_TYPE_PREFIX, 5412) +HANDLE_BAT(APINT_TYPE_PREFIX, 5413) +HANDLE_BAT(APINT_TYPE_PREFIX, 5414) +HANDLE_BAT(APINT_TYPE_PREFIX, 5415) +HANDLE_BAT(APINT_TYPE_PREFIX, 5416) +HANDLE_BAT(APINT_TYPE_PREFIX, 5417) +HANDLE_BAT(APINT_TYPE_PREFIX, 5418) +HANDLE_BAT(APINT_TYPE_PREFIX, 5419) +HANDLE_BAT(APINT_TYPE_PREFIX, 5420) +HANDLE_BAT(APINT_TYPE_PREFIX, 5421) +HANDLE_BAT(APINT_TYPE_PREFIX, 5422) +HANDLE_BAT(APINT_TYPE_PREFIX, 5423) +HANDLE_BAT(APINT_TYPE_PREFIX, 5424) +HANDLE_BAT(APINT_TYPE_PREFIX, 5425) +HANDLE_BAT(APINT_TYPE_PREFIX, 5426) +HANDLE_BAT(APINT_TYPE_PREFIX, 5427) +HANDLE_BAT(APINT_TYPE_PREFIX, 5428) +HANDLE_BAT(APINT_TYPE_PREFIX, 5429) +HANDLE_BAT(APINT_TYPE_PREFIX, 5430) +HANDLE_BAT(APINT_TYPE_PREFIX, 5431) +HANDLE_BAT(APINT_TYPE_PREFIX, 5432) +HANDLE_BAT(APINT_TYPE_PREFIX, 5433) +HANDLE_BAT(APINT_TYPE_PREFIX, 5434) +HANDLE_BAT(APINT_TYPE_PREFIX, 5435) +HANDLE_BAT(APINT_TYPE_PREFIX, 5436) +HANDLE_BAT(APINT_TYPE_PREFIX, 5437) +HANDLE_BAT(APINT_TYPE_PREFIX, 5438) +HANDLE_BAT(APINT_TYPE_PREFIX, 5439) +HANDLE_BAT(APINT_TYPE_PREFIX, 5440) +HANDLE_BAT(APINT_TYPE_PREFIX, 5441) +HANDLE_BAT(APINT_TYPE_PREFIX, 5442) +HANDLE_BAT(APINT_TYPE_PREFIX, 5443) +HANDLE_BAT(APINT_TYPE_PREFIX, 5444) +HANDLE_BAT(APINT_TYPE_PREFIX, 5445) +HANDLE_BAT(APINT_TYPE_PREFIX, 5446) +HANDLE_BAT(APINT_TYPE_PREFIX, 5447) +HANDLE_BAT(APINT_TYPE_PREFIX, 5448) +HANDLE_BAT(APINT_TYPE_PREFIX, 5449) +HANDLE_BAT(APINT_TYPE_PREFIX, 5450) +HANDLE_BAT(APINT_TYPE_PREFIX, 5451) +HANDLE_BAT(APINT_TYPE_PREFIX, 5452) +HANDLE_BAT(APINT_TYPE_PREFIX, 5453) +HANDLE_BAT(APINT_TYPE_PREFIX, 5454) +HANDLE_BAT(APINT_TYPE_PREFIX, 5455) +HANDLE_BAT(APINT_TYPE_PREFIX, 5456) +HANDLE_BAT(APINT_TYPE_PREFIX, 5457) +HANDLE_BAT(APINT_TYPE_PREFIX, 5458) +HANDLE_BAT(APINT_TYPE_PREFIX, 5459) +HANDLE_BAT(APINT_TYPE_PREFIX, 5460) +HANDLE_BAT(APINT_TYPE_PREFIX, 5461) +HANDLE_BAT(APINT_TYPE_PREFIX, 5462) +HANDLE_BAT(APINT_TYPE_PREFIX, 5463) +HANDLE_BAT(APINT_TYPE_PREFIX, 5464) +HANDLE_BAT(APINT_TYPE_PREFIX, 5465) +HANDLE_BAT(APINT_TYPE_PREFIX, 5466) +HANDLE_BAT(APINT_TYPE_PREFIX, 5467) +HANDLE_BAT(APINT_TYPE_PREFIX, 5468) +HANDLE_BAT(APINT_TYPE_PREFIX, 5469) +HANDLE_BAT(APINT_TYPE_PREFIX, 5470) +HANDLE_BAT(APINT_TYPE_PREFIX, 5471) +HANDLE_BAT(APINT_TYPE_PREFIX, 5472) +HANDLE_BAT(APINT_TYPE_PREFIX, 5473) +HANDLE_BAT(APINT_TYPE_PREFIX, 5474) +HANDLE_BAT(APINT_TYPE_PREFIX, 5475) +HANDLE_BAT(APINT_TYPE_PREFIX, 5476) +HANDLE_BAT(APINT_TYPE_PREFIX, 5477) +HANDLE_BAT(APINT_TYPE_PREFIX, 5478) +HANDLE_BAT(APINT_TYPE_PREFIX, 5479) +HANDLE_BAT(APINT_TYPE_PREFIX, 5480) +HANDLE_BAT(APINT_TYPE_PREFIX, 5481) +HANDLE_BAT(APINT_TYPE_PREFIX, 5482) +HANDLE_BAT(APINT_TYPE_PREFIX, 5483) +HANDLE_BAT(APINT_TYPE_PREFIX, 5484) +HANDLE_BAT(APINT_TYPE_PREFIX, 5485) +HANDLE_BAT(APINT_TYPE_PREFIX, 5486) +HANDLE_BAT(APINT_TYPE_PREFIX, 5487) +HANDLE_BAT(APINT_TYPE_PREFIX, 5488) +HANDLE_BAT(APINT_TYPE_PREFIX, 5489) +HANDLE_BAT(APINT_TYPE_PREFIX, 5490) +HANDLE_BAT(APINT_TYPE_PREFIX, 5491) +HANDLE_BAT(APINT_TYPE_PREFIX, 5492) +HANDLE_BAT(APINT_TYPE_PREFIX, 5493) +HANDLE_BAT(APINT_TYPE_PREFIX, 5494) +HANDLE_BAT(APINT_TYPE_PREFIX, 5495) +HANDLE_BAT(APINT_TYPE_PREFIX, 5496) +HANDLE_BAT(APINT_TYPE_PREFIX, 5497) +HANDLE_BAT(APINT_TYPE_PREFIX, 5498) +HANDLE_BAT(APINT_TYPE_PREFIX, 5499) +HANDLE_BAT(APINT_TYPE_PREFIX, 5500) +HANDLE_BAT(APINT_TYPE_PREFIX, 5501) +HANDLE_BAT(APINT_TYPE_PREFIX, 5502) +HANDLE_BAT(APINT_TYPE_PREFIX, 5503) +HANDLE_BAT(APINT_TYPE_PREFIX, 5504) +HANDLE_BAT(APINT_TYPE_PREFIX, 5505) +HANDLE_BAT(APINT_TYPE_PREFIX, 5506) +HANDLE_BAT(APINT_TYPE_PREFIX, 5507) +HANDLE_BAT(APINT_TYPE_PREFIX, 5508) +HANDLE_BAT(APINT_TYPE_PREFIX, 5509) +HANDLE_BAT(APINT_TYPE_PREFIX, 5510) +HANDLE_BAT(APINT_TYPE_PREFIX, 5511) +HANDLE_BAT(APINT_TYPE_PREFIX, 5512) +HANDLE_BAT(APINT_TYPE_PREFIX, 5513) +HANDLE_BAT(APINT_TYPE_PREFIX, 5514) +HANDLE_BAT(APINT_TYPE_PREFIX, 5515) +HANDLE_BAT(APINT_TYPE_PREFIX, 5516) +HANDLE_BAT(APINT_TYPE_PREFIX, 5517) +HANDLE_BAT(APINT_TYPE_PREFIX, 5518) +HANDLE_BAT(APINT_TYPE_PREFIX, 5519) +HANDLE_BAT(APINT_TYPE_PREFIX, 5520) +HANDLE_BAT(APINT_TYPE_PREFIX, 5521) +HANDLE_BAT(APINT_TYPE_PREFIX, 5522) +HANDLE_BAT(APINT_TYPE_PREFIX, 5523) +HANDLE_BAT(APINT_TYPE_PREFIX, 5524) +HANDLE_BAT(APINT_TYPE_PREFIX, 5525) +HANDLE_BAT(APINT_TYPE_PREFIX, 5526) +HANDLE_BAT(APINT_TYPE_PREFIX, 5527) +HANDLE_BAT(APINT_TYPE_PREFIX, 5528) +HANDLE_BAT(APINT_TYPE_PREFIX, 5529) +HANDLE_BAT(APINT_TYPE_PREFIX, 5530) +HANDLE_BAT(APINT_TYPE_PREFIX, 5531) +HANDLE_BAT(APINT_TYPE_PREFIX, 5532) +HANDLE_BAT(APINT_TYPE_PREFIX, 5533) +HANDLE_BAT(APINT_TYPE_PREFIX, 5534) +HANDLE_BAT(APINT_TYPE_PREFIX, 5535) +HANDLE_BAT(APINT_TYPE_PREFIX, 5536) +HANDLE_BAT(APINT_TYPE_PREFIX, 5537) +HANDLE_BAT(APINT_TYPE_PREFIX, 5538) +HANDLE_BAT(APINT_TYPE_PREFIX, 5539) +HANDLE_BAT(APINT_TYPE_PREFIX, 5540) +HANDLE_BAT(APINT_TYPE_PREFIX, 5541) +HANDLE_BAT(APINT_TYPE_PREFIX, 5542) +HANDLE_BAT(APINT_TYPE_PREFIX, 5543) +HANDLE_BAT(APINT_TYPE_PREFIX, 5544) +HANDLE_BAT(APINT_TYPE_PREFIX, 5545) +HANDLE_BAT(APINT_TYPE_PREFIX, 5546) +HANDLE_BAT(APINT_TYPE_PREFIX, 5547) +HANDLE_BAT(APINT_TYPE_PREFIX, 5548) +HANDLE_BAT(APINT_TYPE_PREFIX, 5549) +HANDLE_BAT(APINT_TYPE_PREFIX, 5550) +HANDLE_BAT(APINT_TYPE_PREFIX, 5551) +HANDLE_BAT(APINT_TYPE_PREFIX, 5552) +HANDLE_BAT(APINT_TYPE_PREFIX, 5553) +HANDLE_BAT(APINT_TYPE_PREFIX, 5554) +HANDLE_BAT(APINT_TYPE_PREFIX, 5555) +HANDLE_BAT(APINT_TYPE_PREFIX, 5556) +HANDLE_BAT(APINT_TYPE_PREFIX, 5557) +HANDLE_BAT(APINT_TYPE_PREFIX, 5558) +HANDLE_BAT(APINT_TYPE_PREFIX, 5559) +HANDLE_BAT(APINT_TYPE_PREFIX, 5560) +HANDLE_BAT(APINT_TYPE_PREFIX, 5561) +HANDLE_BAT(APINT_TYPE_PREFIX, 5562) +HANDLE_BAT(APINT_TYPE_PREFIX, 5563) +HANDLE_BAT(APINT_TYPE_PREFIX, 5564) +HANDLE_BAT(APINT_TYPE_PREFIX, 5565) +HANDLE_BAT(APINT_TYPE_PREFIX, 5566) +HANDLE_BAT(APINT_TYPE_PREFIX, 5567) +HANDLE_BAT(APINT_TYPE_PREFIX, 5568) +HANDLE_BAT(APINT_TYPE_PREFIX, 5569) +HANDLE_BAT(APINT_TYPE_PREFIX, 5570) +HANDLE_BAT(APINT_TYPE_PREFIX, 5571) +HANDLE_BAT(APINT_TYPE_PREFIX, 5572) +HANDLE_BAT(APINT_TYPE_PREFIX, 5573) +HANDLE_BAT(APINT_TYPE_PREFIX, 5574) +HANDLE_BAT(APINT_TYPE_PREFIX, 5575) +HANDLE_BAT(APINT_TYPE_PREFIX, 5576) +HANDLE_BAT(APINT_TYPE_PREFIX, 5577) +HANDLE_BAT(APINT_TYPE_PREFIX, 5578) +HANDLE_BAT(APINT_TYPE_PREFIX, 5579) +HANDLE_BAT(APINT_TYPE_PREFIX, 5580) +HANDLE_BAT(APINT_TYPE_PREFIX, 5581) +HANDLE_BAT(APINT_TYPE_PREFIX, 5582) +HANDLE_BAT(APINT_TYPE_PREFIX, 5583) +HANDLE_BAT(APINT_TYPE_PREFIX, 5584) +HANDLE_BAT(APINT_TYPE_PREFIX, 5585) +HANDLE_BAT(APINT_TYPE_PREFIX, 5586) +HANDLE_BAT(APINT_TYPE_PREFIX, 5587) +HANDLE_BAT(APINT_TYPE_PREFIX, 5588) +HANDLE_BAT(APINT_TYPE_PREFIX, 5589) +HANDLE_BAT(APINT_TYPE_PREFIX, 5590) +HANDLE_BAT(APINT_TYPE_PREFIX, 5591) +HANDLE_BAT(APINT_TYPE_PREFIX, 5592) +HANDLE_BAT(APINT_TYPE_PREFIX, 5593) +HANDLE_BAT(APINT_TYPE_PREFIX, 5594) +HANDLE_BAT(APINT_TYPE_PREFIX, 5595) +HANDLE_BAT(APINT_TYPE_PREFIX, 5596) +HANDLE_BAT(APINT_TYPE_PREFIX, 5597) +HANDLE_BAT(APINT_TYPE_PREFIX, 5598) +HANDLE_BAT(APINT_TYPE_PREFIX, 5599) +HANDLE_BAT(APINT_TYPE_PREFIX, 5600) +HANDLE_BAT(APINT_TYPE_PREFIX, 5601) +HANDLE_BAT(APINT_TYPE_PREFIX, 5602) +HANDLE_BAT(APINT_TYPE_PREFIX, 5603) +HANDLE_BAT(APINT_TYPE_PREFIX, 5604) +HANDLE_BAT(APINT_TYPE_PREFIX, 5605) +HANDLE_BAT(APINT_TYPE_PREFIX, 5606) +HANDLE_BAT(APINT_TYPE_PREFIX, 5607) +HANDLE_BAT(APINT_TYPE_PREFIX, 5608) +HANDLE_BAT(APINT_TYPE_PREFIX, 5609) +HANDLE_BAT(APINT_TYPE_PREFIX, 5610) +HANDLE_BAT(APINT_TYPE_PREFIX, 5611) +HANDLE_BAT(APINT_TYPE_PREFIX, 5612) +HANDLE_BAT(APINT_TYPE_PREFIX, 5613) +HANDLE_BAT(APINT_TYPE_PREFIX, 5614) +HANDLE_BAT(APINT_TYPE_PREFIX, 5615) +HANDLE_BAT(APINT_TYPE_PREFIX, 5616) +HANDLE_BAT(APINT_TYPE_PREFIX, 5617) +HANDLE_BAT(APINT_TYPE_PREFIX, 5618) +HANDLE_BAT(APINT_TYPE_PREFIX, 5619) +HANDLE_BAT(APINT_TYPE_PREFIX, 5620) +HANDLE_BAT(APINT_TYPE_PREFIX, 5621) +HANDLE_BAT(APINT_TYPE_PREFIX, 5622) +HANDLE_BAT(APINT_TYPE_PREFIX, 5623) +HANDLE_BAT(APINT_TYPE_PREFIX, 5624) +HANDLE_BAT(APINT_TYPE_PREFIX, 5625) +HANDLE_BAT(APINT_TYPE_PREFIX, 5626) +HANDLE_BAT(APINT_TYPE_PREFIX, 5627) +HANDLE_BAT(APINT_TYPE_PREFIX, 5628) +HANDLE_BAT(APINT_TYPE_PREFIX, 5629) +HANDLE_BAT(APINT_TYPE_PREFIX, 5630) +HANDLE_BAT(APINT_TYPE_PREFIX, 5631) +HANDLE_BAT(APINT_TYPE_PREFIX, 5632) +HANDLE_BAT(APINT_TYPE_PREFIX, 5633) +HANDLE_BAT(APINT_TYPE_PREFIX, 5634) +HANDLE_BAT(APINT_TYPE_PREFIX, 5635) +HANDLE_BAT(APINT_TYPE_PREFIX, 5636) +HANDLE_BAT(APINT_TYPE_PREFIX, 5637) +HANDLE_BAT(APINT_TYPE_PREFIX, 5638) +HANDLE_BAT(APINT_TYPE_PREFIX, 5639) +HANDLE_BAT(APINT_TYPE_PREFIX, 5640) +HANDLE_BAT(APINT_TYPE_PREFIX, 5641) +HANDLE_BAT(APINT_TYPE_PREFIX, 5642) +HANDLE_BAT(APINT_TYPE_PREFIX, 5643) +HANDLE_BAT(APINT_TYPE_PREFIX, 5644) +HANDLE_BAT(APINT_TYPE_PREFIX, 5645) +HANDLE_BAT(APINT_TYPE_PREFIX, 5646) +HANDLE_BAT(APINT_TYPE_PREFIX, 5647) +HANDLE_BAT(APINT_TYPE_PREFIX, 5648) +HANDLE_BAT(APINT_TYPE_PREFIX, 5649) +HANDLE_BAT(APINT_TYPE_PREFIX, 5650) +HANDLE_BAT(APINT_TYPE_PREFIX, 5651) +HANDLE_BAT(APINT_TYPE_PREFIX, 5652) +HANDLE_BAT(APINT_TYPE_PREFIX, 5653) +HANDLE_BAT(APINT_TYPE_PREFIX, 5654) +HANDLE_BAT(APINT_TYPE_PREFIX, 5655) +HANDLE_BAT(APINT_TYPE_PREFIX, 5656) +HANDLE_BAT(APINT_TYPE_PREFIX, 5657) +HANDLE_BAT(APINT_TYPE_PREFIX, 5658) +HANDLE_BAT(APINT_TYPE_PREFIX, 5659) +HANDLE_BAT(APINT_TYPE_PREFIX, 5660) +HANDLE_BAT(APINT_TYPE_PREFIX, 5661) +HANDLE_BAT(APINT_TYPE_PREFIX, 5662) +HANDLE_BAT(APINT_TYPE_PREFIX, 5663) +HANDLE_BAT(APINT_TYPE_PREFIX, 5664) +HANDLE_BAT(APINT_TYPE_PREFIX, 5665) +HANDLE_BAT(APINT_TYPE_PREFIX, 5666) +HANDLE_BAT(APINT_TYPE_PREFIX, 5667) +HANDLE_BAT(APINT_TYPE_PREFIX, 5668) +HANDLE_BAT(APINT_TYPE_PREFIX, 5669) +HANDLE_BAT(APINT_TYPE_PREFIX, 5670) +HANDLE_BAT(APINT_TYPE_PREFIX, 5671) +HANDLE_BAT(APINT_TYPE_PREFIX, 5672) +HANDLE_BAT(APINT_TYPE_PREFIX, 5673) +HANDLE_BAT(APINT_TYPE_PREFIX, 5674) +HANDLE_BAT(APINT_TYPE_PREFIX, 5675) +HANDLE_BAT(APINT_TYPE_PREFIX, 5676) +HANDLE_BAT(APINT_TYPE_PREFIX, 5677) +HANDLE_BAT(APINT_TYPE_PREFIX, 5678) +HANDLE_BAT(APINT_TYPE_PREFIX, 5679) +HANDLE_BAT(APINT_TYPE_PREFIX, 5680) +HANDLE_BAT(APINT_TYPE_PREFIX, 5681) +HANDLE_BAT(APINT_TYPE_PREFIX, 5682) +HANDLE_BAT(APINT_TYPE_PREFIX, 5683) +HANDLE_BAT(APINT_TYPE_PREFIX, 5684) +HANDLE_BAT(APINT_TYPE_PREFIX, 5685) +HANDLE_BAT(APINT_TYPE_PREFIX, 5686) +HANDLE_BAT(APINT_TYPE_PREFIX, 5687) +HANDLE_BAT(APINT_TYPE_PREFIX, 5688) +HANDLE_BAT(APINT_TYPE_PREFIX, 5689) +HANDLE_BAT(APINT_TYPE_PREFIX, 5690) +HANDLE_BAT(APINT_TYPE_PREFIX, 5691) +HANDLE_BAT(APINT_TYPE_PREFIX, 5692) +HANDLE_BAT(APINT_TYPE_PREFIX, 5693) +HANDLE_BAT(APINT_TYPE_PREFIX, 5694) +HANDLE_BAT(APINT_TYPE_PREFIX, 5695) +HANDLE_BAT(APINT_TYPE_PREFIX, 5696) +HANDLE_BAT(APINT_TYPE_PREFIX, 5697) +HANDLE_BAT(APINT_TYPE_PREFIX, 5698) +HANDLE_BAT(APINT_TYPE_PREFIX, 5699) +HANDLE_BAT(APINT_TYPE_PREFIX, 5700) +HANDLE_BAT(APINT_TYPE_PREFIX, 5701) +HANDLE_BAT(APINT_TYPE_PREFIX, 5702) +HANDLE_BAT(APINT_TYPE_PREFIX, 5703) +HANDLE_BAT(APINT_TYPE_PREFIX, 5704) +HANDLE_BAT(APINT_TYPE_PREFIX, 5705) +HANDLE_BAT(APINT_TYPE_PREFIX, 5706) +HANDLE_BAT(APINT_TYPE_PREFIX, 5707) +HANDLE_BAT(APINT_TYPE_PREFIX, 5708) +HANDLE_BAT(APINT_TYPE_PREFIX, 5709) +HANDLE_BAT(APINT_TYPE_PREFIX, 5710) +HANDLE_BAT(APINT_TYPE_PREFIX, 5711) +HANDLE_BAT(APINT_TYPE_PREFIX, 5712) +HANDLE_BAT(APINT_TYPE_PREFIX, 5713) +HANDLE_BAT(APINT_TYPE_PREFIX, 5714) +HANDLE_BAT(APINT_TYPE_PREFIX, 5715) +HANDLE_BAT(APINT_TYPE_PREFIX, 5716) +HANDLE_BAT(APINT_TYPE_PREFIX, 5717) +HANDLE_BAT(APINT_TYPE_PREFIX, 5718) +HANDLE_BAT(APINT_TYPE_PREFIX, 5719) +HANDLE_BAT(APINT_TYPE_PREFIX, 5720) +HANDLE_BAT(APINT_TYPE_PREFIX, 5721) +HANDLE_BAT(APINT_TYPE_PREFIX, 5722) +HANDLE_BAT(APINT_TYPE_PREFIX, 5723) +HANDLE_BAT(APINT_TYPE_PREFIX, 5724) +HANDLE_BAT(APINT_TYPE_PREFIX, 5725) +HANDLE_BAT(APINT_TYPE_PREFIX, 5726) +HANDLE_BAT(APINT_TYPE_PREFIX, 5727) +HANDLE_BAT(APINT_TYPE_PREFIX, 5728) +HANDLE_BAT(APINT_TYPE_PREFIX, 5729) +HANDLE_BAT(APINT_TYPE_PREFIX, 5730) +HANDLE_BAT(APINT_TYPE_PREFIX, 5731) +HANDLE_BAT(APINT_TYPE_PREFIX, 5732) +HANDLE_BAT(APINT_TYPE_PREFIX, 5733) +HANDLE_BAT(APINT_TYPE_PREFIX, 5734) +HANDLE_BAT(APINT_TYPE_PREFIX, 5735) +HANDLE_BAT(APINT_TYPE_PREFIX, 5736) +HANDLE_BAT(APINT_TYPE_PREFIX, 5737) +HANDLE_BAT(APINT_TYPE_PREFIX, 5738) +HANDLE_BAT(APINT_TYPE_PREFIX, 5739) +HANDLE_BAT(APINT_TYPE_PREFIX, 5740) +HANDLE_BAT(APINT_TYPE_PREFIX, 5741) +HANDLE_BAT(APINT_TYPE_PREFIX, 5742) +HANDLE_BAT(APINT_TYPE_PREFIX, 5743) +HANDLE_BAT(APINT_TYPE_PREFIX, 5744) +HANDLE_BAT(APINT_TYPE_PREFIX, 5745) +HANDLE_BAT(APINT_TYPE_PREFIX, 5746) +HANDLE_BAT(APINT_TYPE_PREFIX, 5747) +HANDLE_BAT(APINT_TYPE_PREFIX, 5748) +HANDLE_BAT(APINT_TYPE_PREFIX, 5749) +HANDLE_BAT(APINT_TYPE_PREFIX, 5750) +HANDLE_BAT(APINT_TYPE_PREFIX, 5751) +HANDLE_BAT(APINT_TYPE_PREFIX, 5752) +HANDLE_BAT(APINT_TYPE_PREFIX, 5753) +HANDLE_BAT(APINT_TYPE_PREFIX, 5754) +HANDLE_BAT(APINT_TYPE_PREFIX, 5755) +HANDLE_BAT(APINT_TYPE_PREFIX, 5756) +HANDLE_BAT(APINT_TYPE_PREFIX, 5757) +HANDLE_BAT(APINT_TYPE_PREFIX, 5758) +HANDLE_BAT(APINT_TYPE_PREFIX, 5759) +HANDLE_BAT(APINT_TYPE_PREFIX, 5760) +HANDLE_BAT(APINT_TYPE_PREFIX, 5761) +HANDLE_BAT(APINT_TYPE_PREFIX, 5762) +HANDLE_BAT(APINT_TYPE_PREFIX, 5763) +HANDLE_BAT(APINT_TYPE_PREFIX, 5764) +HANDLE_BAT(APINT_TYPE_PREFIX, 5765) +HANDLE_BAT(APINT_TYPE_PREFIX, 5766) +HANDLE_BAT(APINT_TYPE_PREFIX, 5767) +HANDLE_BAT(APINT_TYPE_PREFIX, 5768) +HANDLE_BAT(APINT_TYPE_PREFIX, 5769) +HANDLE_BAT(APINT_TYPE_PREFIX, 5770) +HANDLE_BAT(APINT_TYPE_PREFIX, 5771) +HANDLE_BAT(APINT_TYPE_PREFIX, 5772) +HANDLE_BAT(APINT_TYPE_PREFIX, 5773) +HANDLE_BAT(APINT_TYPE_PREFIX, 5774) +HANDLE_BAT(APINT_TYPE_PREFIX, 5775) +HANDLE_BAT(APINT_TYPE_PREFIX, 5776) +HANDLE_BAT(APINT_TYPE_PREFIX, 5777) +HANDLE_BAT(APINT_TYPE_PREFIX, 5778) +HANDLE_BAT(APINT_TYPE_PREFIX, 5779) +HANDLE_BAT(APINT_TYPE_PREFIX, 5780) +HANDLE_BAT(APINT_TYPE_PREFIX, 5781) +HANDLE_BAT(APINT_TYPE_PREFIX, 5782) +HANDLE_BAT(APINT_TYPE_PREFIX, 5783) +HANDLE_BAT(APINT_TYPE_PREFIX, 5784) +HANDLE_BAT(APINT_TYPE_PREFIX, 5785) +HANDLE_BAT(APINT_TYPE_PREFIX, 5786) +HANDLE_BAT(APINT_TYPE_PREFIX, 5787) +HANDLE_BAT(APINT_TYPE_PREFIX, 5788) +HANDLE_BAT(APINT_TYPE_PREFIX, 5789) +HANDLE_BAT(APINT_TYPE_PREFIX, 5790) +HANDLE_BAT(APINT_TYPE_PREFIX, 5791) +HANDLE_BAT(APINT_TYPE_PREFIX, 5792) +HANDLE_BAT(APINT_TYPE_PREFIX, 5793) +HANDLE_BAT(APINT_TYPE_PREFIX, 5794) +HANDLE_BAT(APINT_TYPE_PREFIX, 5795) +HANDLE_BAT(APINT_TYPE_PREFIX, 5796) +HANDLE_BAT(APINT_TYPE_PREFIX, 5797) +HANDLE_BAT(APINT_TYPE_PREFIX, 5798) +HANDLE_BAT(APINT_TYPE_PREFIX, 5799) +HANDLE_BAT(APINT_TYPE_PREFIX, 5800) +HANDLE_BAT(APINT_TYPE_PREFIX, 5801) +HANDLE_BAT(APINT_TYPE_PREFIX, 5802) +HANDLE_BAT(APINT_TYPE_PREFIX, 5803) +HANDLE_BAT(APINT_TYPE_PREFIX, 5804) +HANDLE_BAT(APINT_TYPE_PREFIX, 5805) +HANDLE_BAT(APINT_TYPE_PREFIX, 5806) +HANDLE_BAT(APINT_TYPE_PREFIX, 5807) +HANDLE_BAT(APINT_TYPE_PREFIX, 5808) +HANDLE_BAT(APINT_TYPE_PREFIX, 5809) +HANDLE_BAT(APINT_TYPE_PREFIX, 5810) +HANDLE_BAT(APINT_TYPE_PREFIX, 5811) +HANDLE_BAT(APINT_TYPE_PREFIX, 5812) +HANDLE_BAT(APINT_TYPE_PREFIX, 5813) +HANDLE_BAT(APINT_TYPE_PREFIX, 5814) +HANDLE_BAT(APINT_TYPE_PREFIX, 5815) +HANDLE_BAT(APINT_TYPE_PREFIX, 5816) +HANDLE_BAT(APINT_TYPE_PREFIX, 5817) +HANDLE_BAT(APINT_TYPE_PREFIX, 5818) +HANDLE_BAT(APINT_TYPE_PREFIX, 5819) +HANDLE_BAT(APINT_TYPE_PREFIX, 5820) +HANDLE_BAT(APINT_TYPE_PREFIX, 5821) +HANDLE_BAT(APINT_TYPE_PREFIX, 5822) +HANDLE_BAT(APINT_TYPE_PREFIX, 5823) +HANDLE_BAT(APINT_TYPE_PREFIX, 5824) +HANDLE_BAT(APINT_TYPE_PREFIX, 5825) +HANDLE_BAT(APINT_TYPE_PREFIX, 5826) +HANDLE_BAT(APINT_TYPE_PREFIX, 5827) +HANDLE_BAT(APINT_TYPE_PREFIX, 5828) +HANDLE_BAT(APINT_TYPE_PREFIX, 5829) +HANDLE_BAT(APINT_TYPE_PREFIX, 5830) +HANDLE_BAT(APINT_TYPE_PREFIX, 5831) +HANDLE_BAT(APINT_TYPE_PREFIX, 5832) +HANDLE_BAT(APINT_TYPE_PREFIX, 5833) +HANDLE_BAT(APINT_TYPE_PREFIX, 5834) +HANDLE_BAT(APINT_TYPE_PREFIX, 5835) +HANDLE_BAT(APINT_TYPE_PREFIX, 5836) +HANDLE_BAT(APINT_TYPE_PREFIX, 5837) +HANDLE_BAT(APINT_TYPE_PREFIX, 5838) +HANDLE_BAT(APINT_TYPE_PREFIX, 5839) +HANDLE_BAT(APINT_TYPE_PREFIX, 5840) +HANDLE_BAT(APINT_TYPE_PREFIX, 5841) +HANDLE_BAT(APINT_TYPE_PREFIX, 5842) +HANDLE_BAT(APINT_TYPE_PREFIX, 5843) +HANDLE_BAT(APINT_TYPE_PREFIX, 5844) +HANDLE_BAT(APINT_TYPE_PREFIX, 5845) +HANDLE_BAT(APINT_TYPE_PREFIX, 5846) +HANDLE_BAT(APINT_TYPE_PREFIX, 5847) +HANDLE_BAT(APINT_TYPE_PREFIX, 5848) +HANDLE_BAT(APINT_TYPE_PREFIX, 5849) +HANDLE_BAT(APINT_TYPE_PREFIX, 5850) +HANDLE_BAT(APINT_TYPE_PREFIX, 5851) +HANDLE_BAT(APINT_TYPE_PREFIX, 5852) +HANDLE_BAT(APINT_TYPE_PREFIX, 5853) +HANDLE_BAT(APINT_TYPE_PREFIX, 5854) +HANDLE_BAT(APINT_TYPE_PREFIX, 5855) +HANDLE_BAT(APINT_TYPE_PREFIX, 5856) +HANDLE_BAT(APINT_TYPE_PREFIX, 5857) +HANDLE_BAT(APINT_TYPE_PREFIX, 5858) +HANDLE_BAT(APINT_TYPE_PREFIX, 5859) +HANDLE_BAT(APINT_TYPE_PREFIX, 5860) +HANDLE_BAT(APINT_TYPE_PREFIX, 5861) +HANDLE_BAT(APINT_TYPE_PREFIX, 5862) +HANDLE_BAT(APINT_TYPE_PREFIX, 5863) +HANDLE_BAT(APINT_TYPE_PREFIX, 5864) +HANDLE_BAT(APINT_TYPE_PREFIX, 5865) +HANDLE_BAT(APINT_TYPE_PREFIX, 5866) +HANDLE_BAT(APINT_TYPE_PREFIX, 5867) +HANDLE_BAT(APINT_TYPE_PREFIX, 5868) +HANDLE_BAT(APINT_TYPE_PREFIX, 5869) +HANDLE_BAT(APINT_TYPE_PREFIX, 5870) +HANDLE_BAT(APINT_TYPE_PREFIX, 5871) +HANDLE_BAT(APINT_TYPE_PREFIX, 5872) +HANDLE_BAT(APINT_TYPE_PREFIX, 5873) +HANDLE_BAT(APINT_TYPE_PREFIX, 5874) +HANDLE_BAT(APINT_TYPE_PREFIX, 5875) +HANDLE_BAT(APINT_TYPE_PREFIX, 5876) +HANDLE_BAT(APINT_TYPE_PREFIX, 5877) +HANDLE_BAT(APINT_TYPE_PREFIX, 5878) +HANDLE_BAT(APINT_TYPE_PREFIX, 5879) +HANDLE_BAT(APINT_TYPE_PREFIX, 5880) +HANDLE_BAT(APINT_TYPE_PREFIX, 5881) +HANDLE_BAT(APINT_TYPE_PREFIX, 5882) +HANDLE_BAT(APINT_TYPE_PREFIX, 5883) +HANDLE_BAT(APINT_TYPE_PREFIX, 5884) +HANDLE_BAT(APINT_TYPE_PREFIX, 5885) +HANDLE_BAT(APINT_TYPE_PREFIX, 5886) +HANDLE_BAT(APINT_TYPE_PREFIX, 5887) +HANDLE_BAT(APINT_TYPE_PREFIX, 5888) +HANDLE_BAT(APINT_TYPE_PREFIX, 5889) +HANDLE_BAT(APINT_TYPE_PREFIX, 5890) +HANDLE_BAT(APINT_TYPE_PREFIX, 5891) +HANDLE_BAT(APINT_TYPE_PREFIX, 5892) +HANDLE_BAT(APINT_TYPE_PREFIX, 5893) +HANDLE_BAT(APINT_TYPE_PREFIX, 5894) +HANDLE_BAT(APINT_TYPE_PREFIX, 5895) +HANDLE_BAT(APINT_TYPE_PREFIX, 5896) +HANDLE_BAT(APINT_TYPE_PREFIX, 5897) +HANDLE_BAT(APINT_TYPE_PREFIX, 5898) +HANDLE_BAT(APINT_TYPE_PREFIX, 5899) +HANDLE_BAT(APINT_TYPE_PREFIX, 5900) +HANDLE_BAT(APINT_TYPE_PREFIX, 5901) +HANDLE_BAT(APINT_TYPE_PREFIX, 5902) +HANDLE_BAT(APINT_TYPE_PREFIX, 5903) +HANDLE_BAT(APINT_TYPE_PREFIX, 5904) +HANDLE_BAT(APINT_TYPE_PREFIX, 5905) +HANDLE_BAT(APINT_TYPE_PREFIX, 5906) +HANDLE_BAT(APINT_TYPE_PREFIX, 5907) +HANDLE_BAT(APINT_TYPE_PREFIX, 5908) +HANDLE_BAT(APINT_TYPE_PREFIX, 5909) +HANDLE_BAT(APINT_TYPE_PREFIX, 5910) +HANDLE_BAT(APINT_TYPE_PREFIX, 5911) +HANDLE_BAT(APINT_TYPE_PREFIX, 5912) +HANDLE_BAT(APINT_TYPE_PREFIX, 5913) +HANDLE_BAT(APINT_TYPE_PREFIX, 5914) +HANDLE_BAT(APINT_TYPE_PREFIX, 5915) +HANDLE_BAT(APINT_TYPE_PREFIX, 5916) +HANDLE_BAT(APINT_TYPE_PREFIX, 5917) +HANDLE_BAT(APINT_TYPE_PREFIX, 5918) +HANDLE_BAT(APINT_TYPE_PREFIX, 5919) +HANDLE_BAT(APINT_TYPE_PREFIX, 5920) +HANDLE_BAT(APINT_TYPE_PREFIX, 5921) +HANDLE_BAT(APINT_TYPE_PREFIX, 5922) +HANDLE_BAT(APINT_TYPE_PREFIX, 5923) +HANDLE_BAT(APINT_TYPE_PREFIX, 5924) +HANDLE_BAT(APINT_TYPE_PREFIX, 5925) +HANDLE_BAT(APINT_TYPE_PREFIX, 5926) +HANDLE_BAT(APINT_TYPE_PREFIX, 5927) +HANDLE_BAT(APINT_TYPE_PREFIX, 5928) +HANDLE_BAT(APINT_TYPE_PREFIX, 5929) +HANDLE_BAT(APINT_TYPE_PREFIX, 5930) +HANDLE_BAT(APINT_TYPE_PREFIX, 5931) +HANDLE_BAT(APINT_TYPE_PREFIX, 5932) +HANDLE_BAT(APINT_TYPE_PREFIX, 5933) +HANDLE_BAT(APINT_TYPE_PREFIX, 5934) +HANDLE_BAT(APINT_TYPE_PREFIX, 5935) +HANDLE_BAT(APINT_TYPE_PREFIX, 5936) +HANDLE_BAT(APINT_TYPE_PREFIX, 5937) +HANDLE_BAT(APINT_TYPE_PREFIX, 5938) +HANDLE_BAT(APINT_TYPE_PREFIX, 5939) +HANDLE_BAT(APINT_TYPE_PREFIX, 5940) +HANDLE_BAT(APINT_TYPE_PREFIX, 5941) +HANDLE_BAT(APINT_TYPE_PREFIX, 5942) +HANDLE_BAT(APINT_TYPE_PREFIX, 5943) +HANDLE_BAT(APINT_TYPE_PREFIX, 5944) +HANDLE_BAT(APINT_TYPE_PREFIX, 5945) +HANDLE_BAT(APINT_TYPE_PREFIX, 5946) +HANDLE_BAT(APINT_TYPE_PREFIX, 5947) +HANDLE_BAT(APINT_TYPE_PREFIX, 5948) +HANDLE_BAT(APINT_TYPE_PREFIX, 5949) +HANDLE_BAT(APINT_TYPE_PREFIX, 5950) +HANDLE_BAT(APINT_TYPE_PREFIX, 5951) +HANDLE_BAT(APINT_TYPE_PREFIX, 5952) +HANDLE_BAT(APINT_TYPE_PREFIX, 5953) +HANDLE_BAT(APINT_TYPE_PREFIX, 5954) +HANDLE_BAT(APINT_TYPE_PREFIX, 5955) +HANDLE_BAT(APINT_TYPE_PREFIX, 5956) +HANDLE_BAT(APINT_TYPE_PREFIX, 5957) +HANDLE_BAT(APINT_TYPE_PREFIX, 5958) +HANDLE_BAT(APINT_TYPE_PREFIX, 5959) +HANDLE_BAT(APINT_TYPE_PREFIX, 5960) +HANDLE_BAT(APINT_TYPE_PREFIX, 5961) +HANDLE_BAT(APINT_TYPE_PREFIX, 5962) +HANDLE_BAT(APINT_TYPE_PREFIX, 5963) +HANDLE_BAT(APINT_TYPE_PREFIX, 5964) +HANDLE_BAT(APINT_TYPE_PREFIX, 5965) +HANDLE_BAT(APINT_TYPE_PREFIX, 5966) +HANDLE_BAT(APINT_TYPE_PREFIX, 5967) +HANDLE_BAT(APINT_TYPE_PREFIX, 5968) +HANDLE_BAT(APINT_TYPE_PREFIX, 5969) +HANDLE_BAT(APINT_TYPE_PREFIX, 5970) +HANDLE_BAT(APINT_TYPE_PREFIX, 5971) +HANDLE_BAT(APINT_TYPE_PREFIX, 5972) +HANDLE_BAT(APINT_TYPE_PREFIX, 5973) +HANDLE_BAT(APINT_TYPE_PREFIX, 5974) +HANDLE_BAT(APINT_TYPE_PREFIX, 5975) +HANDLE_BAT(APINT_TYPE_PREFIX, 5976) +HANDLE_BAT(APINT_TYPE_PREFIX, 5977) +HANDLE_BAT(APINT_TYPE_PREFIX, 5978) +HANDLE_BAT(APINT_TYPE_PREFIX, 5979) +HANDLE_BAT(APINT_TYPE_PREFIX, 5980) +HANDLE_BAT(APINT_TYPE_PREFIX, 5981) +HANDLE_BAT(APINT_TYPE_PREFIX, 5982) +HANDLE_BAT(APINT_TYPE_PREFIX, 5983) +HANDLE_BAT(APINT_TYPE_PREFIX, 5984) +HANDLE_BAT(APINT_TYPE_PREFIX, 5985) +HANDLE_BAT(APINT_TYPE_PREFIX, 5986) +HANDLE_BAT(APINT_TYPE_PREFIX, 5987) +HANDLE_BAT(APINT_TYPE_PREFIX, 5988) +HANDLE_BAT(APINT_TYPE_PREFIX, 5989) +HANDLE_BAT(APINT_TYPE_PREFIX, 5990) +HANDLE_BAT(APINT_TYPE_PREFIX, 5991) +HANDLE_BAT(APINT_TYPE_PREFIX, 5992) +HANDLE_BAT(APINT_TYPE_PREFIX, 5993) +HANDLE_BAT(APINT_TYPE_PREFIX, 5994) +HANDLE_BAT(APINT_TYPE_PREFIX, 5995) +HANDLE_BAT(APINT_TYPE_PREFIX, 5996) +HANDLE_BAT(APINT_TYPE_PREFIX, 5997) +HANDLE_BAT(APINT_TYPE_PREFIX, 5998) +HANDLE_BAT(APINT_TYPE_PREFIX, 5999) +HANDLE_BAT(APINT_TYPE_PREFIX, 6000) +HANDLE_BAT(APINT_TYPE_PREFIX, 6001) +HANDLE_BAT(APINT_TYPE_PREFIX, 6002) +HANDLE_BAT(APINT_TYPE_PREFIX, 6003) +HANDLE_BAT(APINT_TYPE_PREFIX, 6004) +HANDLE_BAT(APINT_TYPE_PREFIX, 6005) +HANDLE_BAT(APINT_TYPE_PREFIX, 6006) +HANDLE_BAT(APINT_TYPE_PREFIX, 6007) +HANDLE_BAT(APINT_TYPE_PREFIX, 6008) +HANDLE_BAT(APINT_TYPE_PREFIX, 6009) +HANDLE_BAT(APINT_TYPE_PREFIX, 6010) +HANDLE_BAT(APINT_TYPE_PREFIX, 6011) +HANDLE_BAT(APINT_TYPE_PREFIX, 6012) +HANDLE_BAT(APINT_TYPE_PREFIX, 6013) +HANDLE_BAT(APINT_TYPE_PREFIX, 6014) +HANDLE_BAT(APINT_TYPE_PREFIX, 6015) +HANDLE_BAT(APINT_TYPE_PREFIX, 6016) +HANDLE_BAT(APINT_TYPE_PREFIX, 6017) +HANDLE_BAT(APINT_TYPE_PREFIX, 6018) +HANDLE_BAT(APINT_TYPE_PREFIX, 6019) +HANDLE_BAT(APINT_TYPE_PREFIX, 6020) +HANDLE_BAT(APINT_TYPE_PREFIX, 6021) +HANDLE_BAT(APINT_TYPE_PREFIX, 6022) +HANDLE_BAT(APINT_TYPE_PREFIX, 6023) +HANDLE_BAT(APINT_TYPE_PREFIX, 6024) +HANDLE_BAT(APINT_TYPE_PREFIX, 6025) +HANDLE_BAT(APINT_TYPE_PREFIX, 6026) +HANDLE_BAT(APINT_TYPE_PREFIX, 6027) +HANDLE_BAT(APINT_TYPE_PREFIX, 6028) +HANDLE_BAT(APINT_TYPE_PREFIX, 6029) +HANDLE_BAT(APINT_TYPE_PREFIX, 6030) +HANDLE_BAT(APINT_TYPE_PREFIX, 6031) +HANDLE_BAT(APINT_TYPE_PREFIX, 6032) +HANDLE_BAT(APINT_TYPE_PREFIX, 6033) +HANDLE_BAT(APINT_TYPE_PREFIX, 6034) +HANDLE_BAT(APINT_TYPE_PREFIX, 6035) +HANDLE_BAT(APINT_TYPE_PREFIX, 6036) +HANDLE_BAT(APINT_TYPE_PREFIX, 6037) +HANDLE_BAT(APINT_TYPE_PREFIX, 6038) +HANDLE_BAT(APINT_TYPE_PREFIX, 6039) +HANDLE_BAT(APINT_TYPE_PREFIX, 6040) +HANDLE_BAT(APINT_TYPE_PREFIX, 6041) +HANDLE_BAT(APINT_TYPE_PREFIX, 6042) +HANDLE_BAT(APINT_TYPE_PREFIX, 6043) +HANDLE_BAT(APINT_TYPE_PREFIX, 6044) +HANDLE_BAT(APINT_TYPE_PREFIX, 6045) +HANDLE_BAT(APINT_TYPE_PREFIX, 6046) +HANDLE_BAT(APINT_TYPE_PREFIX, 6047) +HANDLE_BAT(APINT_TYPE_PREFIX, 6048) +HANDLE_BAT(APINT_TYPE_PREFIX, 6049) +HANDLE_BAT(APINT_TYPE_PREFIX, 6050) +HANDLE_BAT(APINT_TYPE_PREFIX, 6051) +HANDLE_BAT(APINT_TYPE_PREFIX, 6052) +HANDLE_BAT(APINT_TYPE_PREFIX, 6053) +HANDLE_BAT(APINT_TYPE_PREFIX, 6054) +HANDLE_BAT(APINT_TYPE_PREFIX, 6055) +HANDLE_BAT(APINT_TYPE_PREFIX, 6056) +HANDLE_BAT(APINT_TYPE_PREFIX, 6057) +HANDLE_BAT(APINT_TYPE_PREFIX, 6058) +HANDLE_BAT(APINT_TYPE_PREFIX, 6059) +HANDLE_BAT(APINT_TYPE_PREFIX, 6060) +HANDLE_BAT(APINT_TYPE_PREFIX, 6061) +HANDLE_BAT(APINT_TYPE_PREFIX, 6062) +HANDLE_BAT(APINT_TYPE_PREFIX, 6063) +HANDLE_BAT(APINT_TYPE_PREFIX, 6064) +HANDLE_BAT(APINT_TYPE_PREFIX, 6065) +HANDLE_BAT(APINT_TYPE_PREFIX, 6066) +HANDLE_BAT(APINT_TYPE_PREFIX, 6067) +HANDLE_BAT(APINT_TYPE_PREFIX, 6068) +HANDLE_BAT(APINT_TYPE_PREFIX, 6069) +HANDLE_BAT(APINT_TYPE_PREFIX, 6070) +HANDLE_BAT(APINT_TYPE_PREFIX, 6071) +HANDLE_BAT(APINT_TYPE_PREFIX, 6072) +HANDLE_BAT(APINT_TYPE_PREFIX, 6073) +HANDLE_BAT(APINT_TYPE_PREFIX, 6074) +HANDLE_BAT(APINT_TYPE_PREFIX, 6075) +HANDLE_BAT(APINT_TYPE_PREFIX, 6076) +HANDLE_BAT(APINT_TYPE_PREFIX, 6077) +HANDLE_BAT(APINT_TYPE_PREFIX, 6078) +HANDLE_BAT(APINT_TYPE_PREFIX, 6079) +HANDLE_BAT(APINT_TYPE_PREFIX, 6080) +HANDLE_BAT(APINT_TYPE_PREFIX, 6081) +HANDLE_BAT(APINT_TYPE_PREFIX, 6082) +HANDLE_BAT(APINT_TYPE_PREFIX, 6083) +HANDLE_BAT(APINT_TYPE_PREFIX, 6084) +HANDLE_BAT(APINT_TYPE_PREFIX, 6085) +HANDLE_BAT(APINT_TYPE_PREFIX, 6086) +HANDLE_BAT(APINT_TYPE_PREFIX, 6087) +HANDLE_BAT(APINT_TYPE_PREFIX, 6088) +HANDLE_BAT(APINT_TYPE_PREFIX, 6089) +HANDLE_BAT(APINT_TYPE_PREFIX, 6090) +HANDLE_BAT(APINT_TYPE_PREFIX, 6091) +HANDLE_BAT(APINT_TYPE_PREFIX, 6092) +HANDLE_BAT(APINT_TYPE_PREFIX, 6093) +HANDLE_BAT(APINT_TYPE_PREFIX, 6094) +HANDLE_BAT(APINT_TYPE_PREFIX, 6095) +HANDLE_BAT(APINT_TYPE_PREFIX, 6096) +HANDLE_BAT(APINT_TYPE_PREFIX, 6097) +HANDLE_BAT(APINT_TYPE_PREFIX, 6098) +HANDLE_BAT(APINT_TYPE_PREFIX, 6099) +HANDLE_BAT(APINT_TYPE_PREFIX, 6100) +HANDLE_BAT(APINT_TYPE_PREFIX, 6101) +HANDLE_BAT(APINT_TYPE_PREFIX, 6102) +HANDLE_BAT(APINT_TYPE_PREFIX, 6103) +HANDLE_BAT(APINT_TYPE_PREFIX, 6104) +HANDLE_BAT(APINT_TYPE_PREFIX, 6105) +HANDLE_BAT(APINT_TYPE_PREFIX, 6106) +HANDLE_BAT(APINT_TYPE_PREFIX, 6107) +HANDLE_BAT(APINT_TYPE_PREFIX, 6108) +HANDLE_BAT(APINT_TYPE_PREFIX, 6109) +HANDLE_BAT(APINT_TYPE_PREFIX, 6110) +HANDLE_BAT(APINT_TYPE_PREFIX, 6111) +HANDLE_BAT(APINT_TYPE_PREFIX, 6112) +HANDLE_BAT(APINT_TYPE_PREFIX, 6113) +HANDLE_BAT(APINT_TYPE_PREFIX, 6114) +HANDLE_BAT(APINT_TYPE_PREFIX, 6115) +HANDLE_BAT(APINT_TYPE_PREFIX, 6116) +HANDLE_BAT(APINT_TYPE_PREFIX, 6117) +HANDLE_BAT(APINT_TYPE_PREFIX, 6118) +HANDLE_BAT(APINT_TYPE_PREFIX, 6119) +HANDLE_BAT(APINT_TYPE_PREFIX, 6120) +HANDLE_BAT(APINT_TYPE_PREFIX, 6121) +HANDLE_BAT(APINT_TYPE_PREFIX, 6122) +HANDLE_BAT(APINT_TYPE_PREFIX, 6123) +HANDLE_BAT(APINT_TYPE_PREFIX, 6124) +HANDLE_BAT(APINT_TYPE_PREFIX, 6125) +HANDLE_BAT(APINT_TYPE_PREFIX, 6126) +HANDLE_BAT(APINT_TYPE_PREFIX, 6127) +HANDLE_BAT(APINT_TYPE_PREFIX, 6128) +HANDLE_BAT(APINT_TYPE_PREFIX, 6129) +HANDLE_BAT(APINT_TYPE_PREFIX, 6130) +HANDLE_BAT(APINT_TYPE_PREFIX, 6131) +HANDLE_BAT(APINT_TYPE_PREFIX, 6132) +HANDLE_BAT(APINT_TYPE_PREFIX, 6133) +HANDLE_BAT(APINT_TYPE_PREFIX, 6134) +HANDLE_BAT(APINT_TYPE_PREFIX, 6135) +HANDLE_BAT(APINT_TYPE_PREFIX, 6136) +HANDLE_BAT(APINT_TYPE_PREFIX, 6137) +HANDLE_BAT(APINT_TYPE_PREFIX, 6138) +HANDLE_BAT(APINT_TYPE_PREFIX, 6139) +HANDLE_BAT(APINT_TYPE_PREFIX, 6140) +HANDLE_BAT(APINT_TYPE_PREFIX, 6141) +HANDLE_BAT(APINT_TYPE_PREFIX, 6142) +HANDLE_BAT(APINT_TYPE_PREFIX, 6143) +HANDLE_BAT(APINT_TYPE_PREFIX, 6144) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 6 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 6145) +HANDLE_BAT(, 6146) +HANDLE_BAT(, 6147) +HANDLE_BAT(, 6148) +HANDLE_BAT(, 6149) +HANDLE_BAT(, 6150) +HANDLE_BAT(, 6151) +HANDLE_BAT(, 6152) +HANDLE_BAT(, 6153) +HANDLE_BAT(, 6154) +HANDLE_BAT(, 6155) +HANDLE_BAT(, 6156) +HANDLE_BAT(, 6157) +HANDLE_BAT(, 6158) +HANDLE_BAT(, 6159) +HANDLE_BAT(, 6160) +HANDLE_BAT(, 6161) +HANDLE_BAT(, 6162) +HANDLE_BAT(, 6163) +HANDLE_BAT(, 6164) +HANDLE_BAT(, 6165) +HANDLE_BAT(, 6166) +HANDLE_BAT(, 6167) +HANDLE_BAT(, 6168) +HANDLE_BAT(, 6169) +HANDLE_BAT(, 6170) +HANDLE_BAT(, 6171) +HANDLE_BAT(, 6172) +HANDLE_BAT(, 6173) +HANDLE_BAT(, 6174) +HANDLE_BAT(, 6175) +HANDLE_BAT(, 6176) +HANDLE_BAT(, 6177) +HANDLE_BAT(, 6178) +HANDLE_BAT(, 6179) +HANDLE_BAT(, 6180) +HANDLE_BAT(, 6181) +HANDLE_BAT(, 6182) +HANDLE_BAT(, 6183) +HANDLE_BAT(, 6184) +HANDLE_BAT(, 6185) +HANDLE_BAT(, 6186) +HANDLE_BAT(, 6187) +HANDLE_BAT(, 6188) +HANDLE_BAT(, 6189) +HANDLE_BAT(, 6190) +HANDLE_BAT(, 6191) +HANDLE_BAT(, 6192) +HANDLE_BAT(, 6193) +HANDLE_BAT(, 6194) +HANDLE_BAT(, 6195) +HANDLE_BAT(, 6196) +HANDLE_BAT(, 6197) +HANDLE_BAT(, 6198) +HANDLE_BAT(, 6199) +HANDLE_BAT(, 6200) +HANDLE_BAT(, 6201) +HANDLE_BAT(, 6202) +HANDLE_BAT(, 6203) +HANDLE_BAT(, 6204) +HANDLE_BAT(, 6205) +HANDLE_BAT(, 6206) +HANDLE_BAT(, 6207) +HANDLE_BAT(, 6208) +HANDLE_BAT(, 6209) +HANDLE_BAT(, 6210) +HANDLE_BAT(, 6211) +HANDLE_BAT(, 6212) +HANDLE_BAT(, 6213) +HANDLE_BAT(, 6214) +HANDLE_BAT(, 6215) +HANDLE_BAT(, 6216) +HANDLE_BAT(, 6217) +HANDLE_BAT(, 6218) +HANDLE_BAT(, 6219) +HANDLE_BAT(, 6220) +HANDLE_BAT(, 6221) +HANDLE_BAT(, 6222) +HANDLE_BAT(, 6223) +HANDLE_BAT(, 6224) +HANDLE_BAT(, 6225) +HANDLE_BAT(, 6226) +HANDLE_BAT(, 6227) +HANDLE_BAT(, 6228) +HANDLE_BAT(, 6229) +HANDLE_BAT(, 6230) +HANDLE_BAT(, 6231) +HANDLE_BAT(, 6232) +HANDLE_BAT(, 6233) +HANDLE_BAT(, 6234) +HANDLE_BAT(, 6235) +HANDLE_BAT(, 6236) +HANDLE_BAT(, 6237) +HANDLE_BAT(, 6238) +HANDLE_BAT(, 6239) +HANDLE_BAT(, 6240) +HANDLE_BAT(, 6241) +HANDLE_BAT(, 6242) +HANDLE_BAT(, 6243) +HANDLE_BAT(, 6244) +HANDLE_BAT(, 6245) +HANDLE_BAT(, 6246) +HANDLE_BAT(, 6247) +HANDLE_BAT(, 6248) +HANDLE_BAT(, 6249) +HANDLE_BAT(, 6250) +HANDLE_BAT(, 6251) +HANDLE_BAT(, 6252) +HANDLE_BAT(, 6253) +HANDLE_BAT(, 6254) +HANDLE_BAT(, 6255) +HANDLE_BAT(, 6256) +HANDLE_BAT(, 6257) +HANDLE_BAT(, 6258) +HANDLE_BAT(, 6259) +HANDLE_BAT(, 6260) +HANDLE_BAT(, 6261) +HANDLE_BAT(, 6262) +HANDLE_BAT(, 6263) +HANDLE_BAT(, 6264) +HANDLE_BAT(, 6265) +HANDLE_BAT(, 6266) +HANDLE_BAT(, 6267) +HANDLE_BAT(, 6268) +HANDLE_BAT(, 6269) +HANDLE_BAT(, 6270) +HANDLE_BAT(, 6271) +HANDLE_BAT(, 6272) +HANDLE_BAT(, 6273) +HANDLE_BAT(, 6274) +HANDLE_BAT(, 6275) +HANDLE_BAT(, 6276) +HANDLE_BAT(, 6277) +HANDLE_BAT(, 6278) +HANDLE_BAT(, 6279) +HANDLE_BAT(, 6280) +HANDLE_BAT(, 6281) +HANDLE_BAT(, 6282) +HANDLE_BAT(, 6283) +HANDLE_BAT(, 6284) +HANDLE_BAT(, 6285) +HANDLE_BAT(, 6286) +HANDLE_BAT(, 6287) +HANDLE_BAT(, 6288) +HANDLE_BAT(, 6289) +HANDLE_BAT(, 6290) +HANDLE_BAT(, 6291) +HANDLE_BAT(, 6292) +HANDLE_BAT(, 6293) +HANDLE_BAT(, 6294) +HANDLE_BAT(, 6295) +HANDLE_BAT(, 6296) +HANDLE_BAT(, 6297) +HANDLE_BAT(, 6298) +HANDLE_BAT(, 6299) +HANDLE_BAT(, 6300) +HANDLE_BAT(, 6301) +HANDLE_BAT(, 6302) +HANDLE_BAT(, 6303) +HANDLE_BAT(, 6304) +HANDLE_BAT(, 6305) +HANDLE_BAT(, 6306) +HANDLE_BAT(, 6307) +HANDLE_BAT(, 6308) +HANDLE_BAT(, 6309) +HANDLE_BAT(, 6310) +HANDLE_BAT(, 6311) +HANDLE_BAT(, 6312) +HANDLE_BAT(, 6313) +HANDLE_BAT(, 6314) +HANDLE_BAT(, 6315) +HANDLE_BAT(, 6316) +HANDLE_BAT(, 6317) +HANDLE_BAT(, 6318) +HANDLE_BAT(, 6319) +HANDLE_BAT(, 6320) +HANDLE_BAT(, 6321) +HANDLE_BAT(, 6322) +HANDLE_BAT(, 6323) +HANDLE_BAT(, 6324) +HANDLE_BAT(, 6325) +HANDLE_BAT(, 6326) +HANDLE_BAT(, 6327) +HANDLE_BAT(, 6328) +HANDLE_BAT(, 6329) +HANDLE_BAT(, 6330) +HANDLE_BAT(, 6331) +HANDLE_BAT(, 6332) +HANDLE_BAT(, 6333) +HANDLE_BAT(, 6334) +HANDLE_BAT(, 6335) +HANDLE_BAT(, 6336) +HANDLE_BAT(, 6337) +HANDLE_BAT(, 6338) +HANDLE_BAT(, 6339) +HANDLE_BAT(, 6340) +HANDLE_BAT(, 6341) +HANDLE_BAT(, 6342) +HANDLE_BAT(, 6343) +HANDLE_BAT(, 6344) +HANDLE_BAT(, 6345) +HANDLE_BAT(, 6346) +HANDLE_BAT(, 6347) +HANDLE_BAT(, 6348) +HANDLE_BAT(, 6349) +HANDLE_BAT(, 6350) +HANDLE_BAT(, 6351) +HANDLE_BAT(, 6352) +HANDLE_BAT(, 6353) +HANDLE_BAT(, 6354) +HANDLE_BAT(, 6355) +HANDLE_BAT(, 6356) +HANDLE_BAT(, 6357) +HANDLE_BAT(, 6358) +HANDLE_BAT(, 6359) +HANDLE_BAT(, 6360) +HANDLE_BAT(, 6361) +HANDLE_BAT(, 6362) +HANDLE_BAT(, 6363) +HANDLE_BAT(, 6364) +HANDLE_BAT(, 6365) +HANDLE_BAT(, 6366) +HANDLE_BAT(, 6367) +HANDLE_BAT(, 6368) +HANDLE_BAT(, 6369) +HANDLE_BAT(, 6370) +HANDLE_BAT(, 6371) +HANDLE_BAT(, 6372) +HANDLE_BAT(, 6373) +HANDLE_BAT(, 6374) +HANDLE_BAT(, 6375) +HANDLE_BAT(, 6376) +HANDLE_BAT(, 6377) +HANDLE_BAT(, 6378) +HANDLE_BAT(, 6379) +HANDLE_BAT(, 6380) +HANDLE_BAT(, 6381) +HANDLE_BAT(, 6382) +HANDLE_BAT(, 6383) +HANDLE_BAT(, 6384) +HANDLE_BAT(, 6385) +HANDLE_BAT(, 6386) +HANDLE_BAT(, 6387) +HANDLE_BAT(, 6388) +HANDLE_BAT(, 6389) +HANDLE_BAT(, 6390) +HANDLE_BAT(, 6391) +HANDLE_BAT(, 6392) +HANDLE_BAT(, 6393) +HANDLE_BAT(, 6394) +HANDLE_BAT(, 6395) +HANDLE_BAT(, 6396) +HANDLE_BAT(, 6397) +HANDLE_BAT(, 6398) +HANDLE_BAT(, 6399) +HANDLE_BAT(, 6400) +HANDLE_BAT(, 6401) +HANDLE_BAT(, 6402) +HANDLE_BAT(, 6403) +HANDLE_BAT(, 6404) +HANDLE_BAT(, 6405) +HANDLE_BAT(, 6406) +HANDLE_BAT(, 6407) +HANDLE_BAT(, 6408) +HANDLE_BAT(, 6409) +HANDLE_BAT(, 6410) +HANDLE_BAT(, 6411) +HANDLE_BAT(, 6412) +HANDLE_BAT(, 6413) +HANDLE_BAT(, 6414) +HANDLE_BAT(, 6415) +HANDLE_BAT(, 6416) +HANDLE_BAT(, 6417) +HANDLE_BAT(, 6418) +HANDLE_BAT(, 6419) +HANDLE_BAT(, 6420) +HANDLE_BAT(, 6421) +HANDLE_BAT(, 6422) +HANDLE_BAT(, 6423) +HANDLE_BAT(, 6424) +HANDLE_BAT(, 6425) +HANDLE_BAT(, 6426) +HANDLE_BAT(, 6427) +HANDLE_BAT(, 6428) +HANDLE_BAT(, 6429) +HANDLE_BAT(, 6430) +HANDLE_BAT(, 6431) +HANDLE_BAT(, 6432) +HANDLE_BAT(, 6433) +HANDLE_BAT(, 6434) +HANDLE_BAT(, 6435) +HANDLE_BAT(, 6436) +HANDLE_BAT(, 6437) +HANDLE_BAT(, 6438) +HANDLE_BAT(, 6439) +HANDLE_BAT(, 6440) +HANDLE_BAT(, 6441) +HANDLE_BAT(, 6442) +HANDLE_BAT(, 6443) +HANDLE_BAT(, 6444) +HANDLE_BAT(, 6445) +HANDLE_BAT(, 6446) +HANDLE_BAT(, 6447) +HANDLE_BAT(, 6448) +HANDLE_BAT(, 6449) +HANDLE_BAT(, 6450) +HANDLE_BAT(, 6451) +HANDLE_BAT(, 6452) +HANDLE_BAT(, 6453) +HANDLE_BAT(, 6454) +HANDLE_BAT(, 6455) +HANDLE_BAT(, 6456) +HANDLE_BAT(, 6457) +HANDLE_BAT(, 6458) +HANDLE_BAT(, 6459) +HANDLE_BAT(, 6460) +HANDLE_BAT(, 6461) +HANDLE_BAT(, 6462) +HANDLE_BAT(, 6463) +HANDLE_BAT(, 6464) +HANDLE_BAT(, 6465) +HANDLE_BAT(, 6466) +HANDLE_BAT(, 6467) +HANDLE_BAT(, 6468) +HANDLE_BAT(, 6469) +HANDLE_BAT(, 6470) +HANDLE_BAT(, 6471) +HANDLE_BAT(, 6472) +HANDLE_BAT(, 6473) +HANDLE_BAT(, 6474) +HANDLE_BAT(, 6475) +HANDLE_BAT(, 6476) +HANDLE_BAT(, 6477) +HANDLE_BAT(, 6478) +HANDLE_BAT(, 6479) +HANDLE_BAT(, 6480) +HANDLE_BAT(, 6481) +HANDLE_BAT(, 6482) +HANDLE_BAT(, 6483) +HANDLE_BAT(, 6484) +HANDLE_BAT(, 6485) +HANDLE_BAT(, 6486) +HANDLE_BAT(, 6487) +HANDLE_BAT(, 6488) +HANDLE_BAT(, 6489) +HANDLE_BAT(, 6490) +HANDLE_BAT(, 6491) +HANDLE_BAT(, 6492) +HANDLE_BAT(, 6493) +HANDLE_BAT(, 6494) +HANDLE_BAT(, 6495) +HANDLE_BAT(, 6496) +HANDLE_BAT(, 6497) +HANDLE_BAT(, 6498) +HANDLE_BAT(, 6499) +HANDLE_BAT(, 6500) +HANDLE_BAT(, 6501) +HANDLE_BAT(, 6502) +HANDLE_BAT(, 6503) +HANDLE_BAT(, 6504) +HANDLE_BAT(, 6505) +HANDLE_BAT(, 6506) +HANDLE_BAT(, 6507) +HANDLE_BAT(, 6508) +HANDLE_BAT(, 6509) +HANDLE_BAT(, 6510) +HANDLE_BAT(, 6511) +HANDLE_BAT(, 6512) +HANDLE_BAT(, 6513) +HANDLE_BAT(, 6514) +HANDLE_BAT(, 6515) +HANDLE_BAT(, 6516) +HANDLE_BAT(, 6517) +HANDLE_BAT(, 6518) +HANDLE_BAT(, 6519) +HANDLE_BAT(, 6520) +HANDLE_BAT(, 6521) +HANDLE_BAT(, 6522) +HANDLE_BAT(, 6523) +HANDLE_BAT(, 6524) +HANDLE_BAT(, 6525) +HANDLE_BAT(, 6526) +HANDLE_BAT(, 6527) +HANDLE_BAT(, 6528) +HANDLE_BAT(, 6529) +HANDLE_BAT(, 6530) +HANDLE_BAT(, 6531) +HANDLE_BAT(, 6532) +HANDLE_BAT(, 6533) +HANDLE_BAT(, 6534) +HANDLE_BAT(, 6535) +HANDLE_BAT(, 6536) +HANDLE_BAT(, 6537) +HANDLE_BAT(, 6538) +HANDLE_BAT(, 6539) +HANDLE_BAT(, 6540) +HANDLE_BAT(, 6541) +HANDLE_BAT(, 6542) +HANDLE_BAT(, 6543) +HANDLE_BAT(, 6544) +HANDLE_BAT(, 6545) +HANDLE_BAT(, 6546) +HANDLE_BAT(, 6547) +HANDLE_BAT(, 6548) +HANDLE_BAT(, 6549) +HANDLE_BAT(, 6550) +HANDLE_BAT(, 6551) +HANDLE_BAT(, 6552) +HANDLE_BAT(, 6553) +HANDLE_BAT(, 6554) +HANDLE_BAT(, 6555) +HANDLE_BAT(, 6556) +HANDLE_BAT(, 6557) +HANDLE_BAT(, 6558) +HANDLE_BAT(, 6559) +HANDLE_BAT(, 6560) +HANDLE_BAT(, 6561) +HANDLE_BAT(, 6562) +HANDLE_BAT(, 6563) +HANDLE_BAT(, 6564) +HANDLE_BAT(, 6565) +HANDLE_BAT(, 6566) +HANDLE_BAT(, 6567) +HANDLE_BAT(, 6568) +HANDLE_BAT(, 6569) +HANDLE_BAT(, 6570) +HANDLE_BAT(, 6571) +HANDLE_BAT(, 6572) +HANDLE_BAT(, 6573) +HANDLE_BAT(, 6574) +HANDLE_BAT(, 6575) +HANDLE_BAT(, 6576) +HANDLE_BAT(, 6577) +HANDLE_BAT(, 6578) +HANDLE_BAT(, 6579) +HANDLE_BAT(, 6580) +HANDLE_BAT(, 6581) +HANDLE_BAT(, 6582) +HANDLE_BAT(, 6583) +HANDLE_BAT(, 6584) +HANDLE_BAT(, 6585) +HANDLE_BAT(, 6586) +HANDLE_BAT(, 6587) +HANDLE_BAT(, 6588) +HANDLE_BAT(, 6589) +HANDLE_BAT(, 6590) +HANDLE_BAT(, 6591) +HANDLE_BAT(, 6592) +HANDLE_BAT(, 6593) +HANDLE_BAT(, 6594) +HANDLE_BAT(, 6595) +HANDLE_BAT(, 6596) +HANDLE_BAT(, 6597) +HANDLE_BAT(, 6598) +HANDLE_BAT(, 6599) +HANDLE_BAT(, 6600) +HANDLE_BAT(, 6601) +HANDLE_BAT(, 6602) +HANDLE_BAT(, 6603) +HANDLE_BAT(, 6604) +HANDLE_BAT(, 6605) +HANDLE_BAT(, 6606) +HANDLE_BAT(, 6607) +HANDLE_BAT(, 6608) +HANDLE_BAT(, 6609) +HANDLE_BAT(, 6610) +HANDLE_BAT(, 6611) +HANDLE_BAT(, 6612) +HANDLE_BAT(, 6613) +HANDLE_BAT(, 6614) +HANDLE_BAT(, 6615) +HANDLE_BAT(, 6616) +HANDLE_BAT(, 6617) +HANDLE_BAT(, 6618) +HANDLE_BAT(, 6619) +HANDLE_BAT(, 6620) +HANDLE_BAT(, 6621) +HANDLE_BAT(, 6622) +HANDLE_BAT(, 6623) +HANDLE_BAT(, 6624) +HANDLE_BAT(, 6625) +HANDLE_BAT(, 6626) +HANDLE_BAT(, 6627) +HANDLE_BAT(, 6628) +HANDLE_BAT(, 6629) +HANDLE_BAT(, 6630) +HANDLE_BAT(, 6631) +HANDLE_BAT(, 6632) +HANDLE_BAT(, 6633) +HANDLE_BAT(, 6634) +HANDLE_BAT(, 6635) +HANDLE_BAT(, 6636) +HANDLE_BAT(, 6637) +HANDLE_BAT(, 6638) +HANDLE_BAT(, 6639) +HANDLE_BAT(, 6640) +HANDLE_BAT(, 6641) +HANDLE_BAT(, 6642) +HANDLE_BAT(, 6643) +HANDLE_BAT(, 6644) +HANDLE_BAT(, 6645) +HANDLE_BAT(, 6646) +HANDLE_BAT(, 6647) +HANDLE_BAT(, 6648) +HANDLE_BAT(, 6649) +HANDLE_BAT(, 6650) +HANDLE_BAT(, 6651) +HANDLE_BAT(, 6652) +HANDLE_BAT(, 6653) +HANDLE_BAT(, 6654) +HANDLE_BAT(, 6655) +HANDLE_BAT(, 6656) +HANDLE_BAT(, 6657) +HANDLE_BAT(, 6658) +HANDLE_BAT(, 6659) +HANDLE_BAT(, 6660) +HANDLE_BAT(, 6661) +HANDLE_BAT(, 6662) +HANDLE_BAT(, 6663) +HANDLE_BAT(, 6664) +HANDLE_BAT(, 6665) +HANDLE_BAT(, 6666) +HANDLE_BAT(, 6667) +HANDLE_BAT(, 6668) +HANDLE_BAT(, 6669) +HANDLE_BAT(, 6670) +HANDLE_BAT(, 6671) +HANDLE_BAT(, 6672) +HANDLE_BAT(, 6673) +HANDLE_BAT(, 6674) +HANDLE_BAT(, 6675) +HANDLE_BAT(, 6676) +HANDLE_BAT(, 6677) +HANDLE_BAT(, 6678) +HANDLE_BAT(, 6679) +HANDLE_BAT(, 6680) +HANDLE_BAT(, 6681) +HANDLE_BAT(, 6682) +HANDLE_BAT(, 6683) +HANDLE_BAT(, 6684) +HANDLE_BAT(, 6685) +HANDLE_BAT(, 6686) +HANDLE_BAT(, 6687) +HANDLE_BAT(, 6688) +HANDLE_BAT(, 6689) +HANDLE_BAT(, 6690) +HANDLE_BAT(, 6691) +HANDLE_BAT(, 6692) +HANDLE_BAT(, 6693) +HANDLE_BAT(, 6694) +HANDLE_BAT(, 6695) +HANDLE_BAT(, 6696) +HANDLE_BAT(, 6697) +HANDLE_BAT(, 6698) +HANDLE_BAT(, 6699) +HANDLE_BAT(, 6700) +HANDLE_BAT(, 6701) +HANDLE_BAT(, 6702) +HANDLE_BAT(, 6703) +HANDLE_BAT(, 6704) +HANDLE_BAT(, 6705) +HANDLE_BAT(, 6706) +HANDLE_BAT(, 6707) +HANDLE_BAT(, 6708) +HANDLE_BAT(, 6709) +HANDLE_BAT(, 6710) +HANDLE_BAT(, 6711) +HANDLE_BAT(, 6712) +HANDLE_BAT(, 6713) +HANDLE_BAT(, 6714) +HANDLE_BAT(, 6715) +HANDLE_BAT(, 6716) +HANDLE_BAT(, 6717) +HANDLE_BAT(, 6718) +HANDLE_BAT(, 6719) +HANDLE_BAT(, 6720) +HANDLE_BAT(, 6721) +HANDLE_BAT(, 6722) +HANDLE_BAT(, 6723) +HANDLE_BAT(, 6724) +HANDLE_BAT(, 6725) +HANDLE_BAT(, 6726) +HANDLE_BAT(, 6727) +HANDLE_BAT(, 6728) +HANDLE_BAT(, 6729) +HANDLE_BAT(, 6730) +HANDLE_BAT(, 6731) +HANDLE_BAT(, 6732) +HANDLE_BAT(, 6733) +HANDLE_BAT(, 6734) +HANDLE_BAT(, 6735) +HANDLE_BAT(, 6736) +HANDLE_BAT(, 6737) +HANDLE_BAT(, 6738) +HANDLE_BAT(, 6739) +HANDLE_BAT(, 6740) +HANDLE_BAT(, 6741) +HANDLE_BAT(, 6742) +HANDLE_BAT(, 6743) +HANDLE_BAT(, 6744) +HANDLE_BAT(, 6745) +HANDLE_BAT(, 6746) +HANDLE_BAT(, 6747) +HANDLE_BAT(, 6748) +HANDLE_BAT(, 6749) +HANDLE_BAT(, 6750) +HANDLE_BAT(, 6751) +HANDLE_BAT(, 6752) +HANDLE_BAT(, 6753) +HANDLE_BAT(, 6754) +HANDLE_BAT(, 6755) +HANDLE_BAT(, 6756) +HANDLE_BAT(, 6757) +HANDLE_BAT(, 6758) +HANDLE_BAT(, 6759) +HANDLE_BAT(, 6760) +HANDLE_BAT(, 6761) +HANDLE_BAT(, 6762) +HANDLE_BAT(, 6763) +HANDLE_BAT(, 6764) +HANDLE_BAT(, 6765) +HANDLE_BAT(, 6766) +HANDLE_BAT(, 6767) +HANDLE_BAT(, 6768) +HANDLE_BAT(, 6769) +HANDLE_BAT(, 6770) +HANDLE_BAT(, 6771) +HANDLE_BAT(, 6772) +HANDLE_BAT(, 6773) +HANDLE_BAT(, 6774) +HANDLE_BAT(, 6775) +HANDLE_BAT(, 6776) +HANDLE_BAT(, 6777) +HANDLE_BAT(, 6778) +HANDLE_BAT(, 6779) +HANDLE_BAT(, 6780) +HANDLE_BAT(, 6781) +HANDLE_BAT(, 6782) +HANDLE_BAT(, 6783) +HANDLE_BAT(, 6784) +HANDLE_BAT(, 6785) +HANDLE_BAT(, 6786) +HANDLE_BAT(, 6787) +HANDLE_BAT(, 6788) +HANDLE_BAT(, 6789) +HANDLE_BAT(, 6790) +HANDLE_BAT(, 6791) +HANDLE_BAT(, 6792) +HANDLE_BAT(, 6793) +HANDLE_BAT(, 6794) +HANDLE_BAT(, 6795) +HANDLE_BAT(, 6796) +HANDLE_BAT(, 6797) +HANDLE_BAT(, 6798) +HANDLE_BAT(, 6799) +HANDLE_BAT(, 6800) +HANDLE_BAT(, 6801) +HANDLE_BAT(, 6802) +HANDLE_BAT(, 6803) +HANDLE_BAT(, 6804) +HANDLE_BAT(, 6805) +HANDLE_BAT(, 6806) +HANDLE_BAT(, 6807) +HANDLE_BAT(, 6808) +HANDLE_BAT(, 6809) +HANDLE_BAT(, 6810) +HANDLE_BAT(, 6811) +HANDLE_BAT(, 6812) +HANDLE_BAT(, 6813) +HANDLE_BAT(, 6814) +HANDLE_BAT(, 6815) +HANDLE_BAT(, 6816) +HANDLE_BAT(, 6817) +HANDLE_BAT(, 6818) +HANDLE_BAT(, 6819) +HANDLE_BAT(, 6820) +HANDLE_BAT(, 6821) +HANDLE_BAT(, 6822) +HANDLE_BAT(, 6823) +HANDLE_BAT(, 6824) +HANDLE_BAT(, 6825) +HANDLE_BAT(, 6826) +HANDLE_BAT(, 6827) +HANDLE_BAT(, 6828) +HANDLE_BAT(, 6829) +HANDLE_BAT(, 6830) +HANDLE_BAT(, 6831) +HANDLE_BAT(, 6832) +HANDLE_BAT(, 6833) +HANDLE_BAT(, 6834) +HANDLE_BAT(, 6835) +HANDLE_BAT(, 6836) +HANDLE_BAT(, 6837) +HANDLE_BAT(, 6838) +HANDLE_BAT(, 6839) +HANDLE_BAT(, 6840) +HANDLE_BAT(, 6841) +HANDLE_BAT(, 6842) +HANDLE_BAT(, 6843) +HANDLE_BAT(, 6844) +HANDLE_BAT(, 6845) +HANDLE_BAT(, 6846) +HANDLE_BAT(, 6847) +HANDLE_BAT(, 6848) +HANDLE_BAT(, 6849) +HANDLE_BAT(, 6850) +HANDLE_BAT(, 6851) +HANDLE_BAT(, 6852) +HANDLE_BAT(, 6853) +HANDLE_BAT(, 6854) +HANDLE_BAT(, 6855) +HANDLE_BAT(, 6856) +HANDLE_BAT(, 6857) +HANDLE_BAT(, 6858) +HANDLE_BAT(, 6859) +HANDLE_BAT(, 6860) +HANDLE_BAT(, 6861) +HANDLE_BAT(, 6862) +HANDLE_BAT(, 6863) +HANDLE_BAT(, 6864) +HANDLE_BAT(, 6865) +HANDLE_BAT(, 6866) +HANDLE_BAT(, 6867) +HANDLE_BAT(, 6868) +HANDLE_BAT(, 6869) +HANDLE_BAT(, 6870) +HANDLE_BAT(, 6871) +HANDLE_BAT(, 6872) +HANDLE_BAT(, 6873) +HANDLE_BAT(, 6874) +HANDLE_BAT(, 6875) +HANDLE_BAT(, 6876) +HANDLE_BAT(, 6877) +HANDLE_BAT(, 6878) +HANDLE_BAT(, 6879) +HANDLE_BAT(, 6880) +HANDLE_BAT(, 6881) +HANDLE_BAT(, 6882) +HANDLE_BAT(, 6883) +HANDLE_BAT(, 6884) +HANDLE_BAT(, 6885) +HANDLE_BAT(, 6886) +HANDLE_BAT(, 6887) +HANDLE_BAT(, 6888) +HANDLE_BAT(, 6889) +HANDLE_BAT(, 6890) +HANDLE_BAT(, 6891) +HANDLE_BAT(, 6892) +HANDLE_BAT(, 6893) +HANDLE_BAT(, 6894) +HANDLE_BAT(, 6895) +HANDLE_BAT(, 6896) +HANDLE_BAT(, 6897) +HANDLE_BAT(, 6898) +HANDLE_BAT(, 6899) +HANDLE_BAT(, 6900) +HANDLE_BAT(, 6901) +HANDLE_BAT(, 6902) +HANDLE_BAT(, 6903) +HANDLE_BAT(, 6904) +HANDLE_BAT(, 6905) +HANDLE_BAT(, 6906) +HANDLE_BAT(, 6907) +HANDLE_BAT(, 6908) +HANDLE_BAT(, 6909) +HANDLE_BAT(, 6910) +HANDLE_BAT(, 6911) +HANDLE_BAT(, 6912) +HANDLE_BAT(, 6913) +HANDLE_BAT(, 6914) +HANDLE_BAT(, 6915) +HANDLE_BAT(, 6916) +HANDLE_BAT(, 6917) +HANDLE_BAT(, 6918) +HANDLE_BAT(, 6919) +HANDLE_BAT(, 6920) +HANDLE_BAT(, 6921) +HANDLE_BAT(, 6922) +HANDLE_BAT(, 6923) +HANDLE_BAT(, 6924) +HANDLE_BAT(, 6925) +HANDLE_BAT(, 6926) +HANDLE_BAT(, 6927) +HANDLE_BAT(, 6928) +HANDLE_BAT(, 6929) +HANDLE_BAT(, 6930) +HANDLE_BAT(, 6931) +HANDLE_BAT(, 6932) +HANDLE_BAT(, 6933) +HANDLE_BAT(, 6934) +HANDLE_BAT(, 6935) +HANDLE_BAT(, 6936) +HANDLE_BAT(, 6937) +HANDLE_BAT(, 6938) +HANDLE_BAT(, 6939) +HANDLE_BAT(, 6940) +HANDLE_BAT(, 6941) +HANDLE_BAT(, 6942) +HANDLE_BAT(, 6943) +HANDLE_BAT(, 6944) +HANDLE_BAT(, 6945) +HANDLE_BAT(, 6946) +HANDLE_BAT(, 6947) +HANDLE_BAT(, 6948) +HANDLE_BAT(, 6949) +HANDLE_BAT(, 6950) +HANDLE_BAT(, 6951) +HANDLE_BAT(, 6952) +HANDLE_BAT(, 6953) +HANDLE_BAT(, 6954) +HANDLE_BAT(, 6955) +HANDLE_BAT(, 6956) +HANDLE_BAT(, 6957) +HANDLE_BAT(, 6958) +HANDLE_BAT(, 6959) +HANDLE_BAT(, 6960) +HANDLE_BAT(, 6961) +HANDLE_BAT(, 6962) +HANDLE_BAT(, 6963) +HANDLE_BAT(, 6964) +HANDLE_BAT(, 6965) +HANDLE_BAT(, 6966) +HANDLE_BAT(, 6967) +HANDLE_BAT(, 6968) +HANDLE_BAT(, 6969) +HANDLE_BAT(, 6970) +HANDLE_BAT(, 6971) +HANDLE_BAT(, 6972) +HANDLE_BAT(, 6973) +HANDLE_BAT(, 6974) +HANDLE_BAT(, 6975) +HANDLE_BAT(, 6976) +HANDLE_BAT(, 6977) +HANDLE_BAT(, 6978) +HANDLE_BAT(, 6979) +HANDLE_BAT(, 6980) +HANDLE_BAT(, 6981) +HANDLE_BAT(, 6982) +HANDLE_BAT(, 6983) +HANDLE_BAT(, 6984) +HANDLE_BAT(, 6985) +HANDLE_BAT(, 6986) +HANDLE_BAT(, 6987) +HANDLE_BAT(, 6988) +HANDLE_BAT(, 6989) +HANDLE_BAT(, 6990) +HANDLE_BAT(, 6991) +HANDLE_BAT(, 6992) +HANDLE_BAT(, 6993) +HANDLE_BAT(, 6994) +HANDLE_BAT(, 6995) +HANDLE_BAT(, 6996) +HANDLE_BAT(, 6997) +HANDLE_BAT(, 6998) +HANDLE_BAT(, 6999) +HANDLE_BAT(, 7000) +HANDLE_BAT(, 7001) +HANDLE_BAT(, 7002) +HANDLE_BAT(, 7003) +HANDLE_BAT(, 7004) +HANDLE_BAT(, 7005) +HANDLE_BAT(, 7006) +HANDLE_BAT(, 7007) +HANDLE_BAT(, 7008) +HANDLE_BAT(, 7009) +HANDLE_BAT(, 7010) +HANDLE_BAT(, 7011) +HANDLE_BAT(, 7012) +HANDLE_BAT(, 7013) +HANDLE_BAT(, 7014) +HANDLE_BAT(, 7015) +HANDLE_BAT(, 7016) +HANDLE_BAT(, 7017) +HANDLE_BAT(, 7018) +HANDLE_BAT(, 7019) +HANDLE_BAT(, 7020) +HANDLE_BAT(, 7021) +HANDLE_BAT(, 7022) +HANDLE_BAT(, 7023) +HANDLE_BAT(, 7024) +HANDLE_BAT(, 7025) +HANDLE_BAT(, 7026) +HANDLE_BAT(, 7027) +HANDLE_BAT(, 7028) +HANDLE_BAT(, 7029) +HANDLE_BAT(, 7030) +HANDLE_BAT(, 7031) +HANDLE_BAT(, 7032) +HANDLE_BAT(, 7033) +HANDLE_BAT(, 7034) +HANDLE_BAT(, 7035) +HANDLE_BAT(, 7036) +HANDLE_BAT(, 7037) +HANDLE_BAT(, 7038) +HANDLE_BAT(, 7039) +HANDLE_BAT(, 7040) +HANDLE_BAT(, 7041) +HANDLE_BAT(, 7042) +HANDLE_BAT(, 7043) +HANDLE_BAT(, 7044) +HANDLE_BAT(, 7045) +HANDLE_BAT(, 7046) +HANDLE_BAT(, 7047) +HANDLE_BAT(, 7048) +HANDLE_BAT(, 7049) +HANDLE_BAT(, 7050) +HANDLE_BAT(, 7051) +HANDLE_BAT(, 7052) +HANDLE_BAT(, 7053) +HANDLE_BAT(, 7054) +HANDLE_BAT(, 7055) +HANDLE_BAT(, 7056) +HANDLE_BAT(, 7057) +HANDLE_BAT(, 7058) +HANDLE_BAT(, 7059) +HANDLE_BAT(, 7060) +HANDLE_BAT(, 7061) +HANDLE_BAT(, 7062) +HANDLE_BAT(, 7063) +HANDLE_BAT(, 7064) +HANDLE_BAT(, 7065) +HANDLE_BAT(, 7066) +HANDLE_BAT(, 7067) +HANDLE_BAT(, 7068) +HANDLE_BAT(, 7069) +HANDLE_BAT(, 7070) +HANDLE_BAT(, 7071) +HANDLE_BAT(, 7072) +HANDLE_BAT(, 7073) +HANDLE_BAT(, 7074) +HANDLE_BAT(, 7075) +HANDLE_BAT(, 7076) +HANDLE_BAT(, 7077) +HANDLE_BAT(, 7078) +HANDLE_BAT(, 7079) +HANDLE_BAT(, 7080) +HANDLE_BAT(, 7081) +HANDLE_BAT(, 7082) +HANDLE_BAT(, 7083) +HANDLE_BAT(, 7084) +HANDLE_BAT(, 7085) +HANDLE_BAT(, 7086) +HANDLE_BAT(, 7087) +HANDLE_BAT(, 7088) +HANDLE_BAT(, 7089) +HANDLE_BAT(, 7090) +HANDLE_BAT(, 7091) +HANDLE_BAT(, 7092) +HANDLE_BAT(, 7093) +HANDLE_BAT(, 7094) +HANDLE_BAT(, 7095) +HANDLE_BAT(, 7096) +HANDLE_BAT(, 7097) +HANDLE_BAT(, 7098) +HANDLE_BAT(, 7099) +HANDLE_BAT(, 7100) +HANDLE_BAT(, 7101) +HANDLE_BAT(, 7102) +HANDLE_BAT(, 7103) +HANDLE_BAT(, 7104) +HANDLE_BAT(, 7105) +HANDLE_BAT(, 7106) +HANDLE_BAT(, 7107) +HANDLE_BAT(, 7108) +HANDLE_BAT(, 7109) +HANDLE_BAT(, 7110) +HANDLE_BAT(, 7111) +HANDLE_BAT(, 7112) +HANDLE_BAT(, 7113) +HANDLE_BAT(, 7114) +HANDLE_BAT(, 7115) +HANDLE_BAT(, 7116) +HANDLE_BAT(, 7117) +HANDLE_BAT(, 7118) +HANDLE_BAT(, 7119) +HANDLE_BAT(, 7120) +HANDLE_BAT(, 7121) +HANDLE_BAT(, 7122) +HANDLE_BAT(, 7123) +HANDLE_BAT(, 7124) +HANDLE_BAT(, 7125) +HANDLE_BAT(, 7126) +HANDLE_BAT(, 7127) +HANDLE_BAT(, 7128) +HANDLE_BAT(, 7129) +HANDLE_BAT(, 7130) +HANDLE_BAT(, 7131) +HANDLE_BAT(, 7132) +HANDLE_BAT(, 7133) +HANDLE_BAT(, 7134) +HANDLE_BAT(, 7135) +HANDLE_BAT(, 7136) +HANDLE_BAT(, 7137) +HANDLE_BAT(, 7138) +HANDLE_BAT(, 7139) +HANDLE_BAT(, 7140) +HANDLE_BAT(, 7141) +HANDLE_BAT(, 7142) +HANDLE_BAT(, 7143) +HANDLE_BAT(, 7144) +HANDLE_BAT(, 7145) +HANDLE_BAT(, 7146) +HANDLE_BAT(, 7147) +HANDLE_BAT(, 7148) +HANDLE_BAT(, 7149) +HANDLE_BAT(, 7150) +HANDLE_BAT(, 7151) +HANDLE_BAT(, 7152) +HANDLE_BAT(, 7153) +HANDLE_BAT(, 7154) +HANDLE_BAT(, 7155) +HANDLE_BAT(, 7156) +HANDLE_BAT(, 7157) +HANDLE_BAT(, 7158) +HANDLE_BAT(, 7159) +HANDLE_BAT(, 7160) +HANDLE_BAT(, 7161) +HANDLE_BAT(, 7162) +HANDLE_BAT(, 7163) +HANDLE_BAT(, 7164) +HANDLE_BAT(, 7165) +HANDLE_BAT(, 7166) +HANDLE_BAT(, 7167) +HANDLE_BAT(, 7168) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 6145) +HANDLE_BAT(APINT_TYPE_PREFIX, 6146) +HANDLE_BAT(APINT_TYPE_PREFIX, 6147) +HANDLE_BAT(APINT_TYPE_PREFIX, 6148) +HANDLE_BAT(APINT_TYPE_PREFIX, 6149) +HANDLE_BAT(APINT_TYPE_PREFIX, 6150) +HANDLE_BAT(APINT_TYPE_PREFIX, 6151) +HANDLE_BAT(APINT_TYPE_PREFIX, 6152) +HANDLE_BAT(APINT_TYPE_PREFIX, 6153) +HANDLE_BAT(APINT_TYPE_PREFIX, 6154) +HANDLE_BAT(APINT_TYPE_PREFIX, 6155) +HANDLE_BAT(APINT_TYPE_PREFIX, 6156) +HANDLE_BAT(APINT_TYPE_PREFIX, 6157) +HANDLE_BAT(APINT_TYPE_PREFIX, 6158) +HANDLE_BAT(APINT_TYPE_PREFIX, 6159) +HANDLE_BAT(APINT_TYPE_PREFIX, 6160) +HANDLE_BAT(APINT_TYPE_PREFIX, 6161) +HANDLE_BAT(APINT_TYPE_PREFIX, 6162) +HANDLE_BAT(APINT_TYPE_PREFIX, 6163) +HANDLE_BAT(APINT_TYPE_PREFIX, 6164) +HANDLE_BAT(APINT_TYPE_PREFIX, 6165) +HANDLE_BAT(APINT_TYPE_PREFIX, 6166) +HANDLE_BAT(APINT_TYPE_PREFIX, 6167) +HANDLE_BAT(APINT_TYPE_PREFIX, 6168) +HANDLE_BAT(APINT_TYPE_PREFIX, 6169) +HANDLE_BAT(APINT_TYPE_PREFIX, 6170) +HANDLE_BAT(APINT_TYPE_PREFIX, 6171) +HANDLE_BAT(APINT_TYPE_PREFIX, 6172) +HANDLE_BAT(APINT_TYPE_PREFIX, 6173) +HANDLE_BAT(APINT_TYPE_PREFIX, 6174) +HANDLE_BAT(APINT_TYPE_PREFIX, 6175) +HANDLE_BAT(APINT_TYPE_PREFIX, 6176) +HANDLE_BAT(APINT_TYPE_PREFIX, 6177) +HANDLE_BAT(APINT_TYPE_PREFIX, 6178) +HANDLE_BAT(APINT_TYPE_PREFIX, 6179) +HANDLE_BAT(APINT_TYPE_PREFIX, 6180) +HANDLE_BAT(APINT_TYPE_PREFIX, 6181) +HANDLE_BAT(APINT_TYPE_PREFIX, 6182) +HANDLE_BAT(APINT_TYPE_PREFIX, 6183) +HANDLE_BAT(APINT_TYPE_PREFIX, 6184) +HANDLE_BAT(APINT_TYPE_PREFIX, 6185) +HANDLE_BAT(APINT_TYPE_PREFIX, 6186) +HANDLE_BAT(APINT_TYPE_PREFIX, 6187) +HANDLE_BAT(APINT_TYPE_PREFIX, 6188) +HANDLE_BAT(APINT_TYPE_PREFIX, 6189) +HANDLE_BAT(APINT_TYPE_PREFIX, 6190) +HANDLE_BAT(APINT_TYPE_PREFIX, 6191) +HANDLE_BAT(APINT_TYPE_PREFIX, 6192) +HANDLE_BAT(APINT_TYPE_PREFIX, 6193) +HANDLE_BAT(APINT_TYPE_PREFIX, 6194) +HANDLE_BAT(APINT_TYPE_PREFIX, 6195) +HANDLE_BAT(APINT_TYPE_PREFIX, 6196) +HANDLE_BAT(APINT_TYPE_PREFIX, 6197) +HANDLE_BAT(APINT_TYPE_PREFIX, 6198) +HANDLE_BAT(APINT_TYPE_PREFIX, 6199) +HANDLE_BAT(APINT_TYPE_PREFIX, 6200) +HANDLE_BAT(APINT_TYPE_PREFIX, 6201) +HANDLE_BAT(APINT_TYPE_PREFIX, 6202) +HANDLE_BAT(APINT_TYPE_PREFIX, 6203) +HANDLE_BAT(APINT_TYPE_PREFIX, 6204) +HANDLE_BAT(APINT_TYPE_PREFIX, 6205) +HANDLE_BAT(APINT_TYPE_PREFIX, 6206) +HANDLE_BAT(APINT_TYPE_PREFIX, 6207) +HANDLE_BAT(APINT_TYPE_PREFIX, 6208) +HANDLE_BAT(APINT_TYPE_PREFIX, 6209) +HANDLE_BAT(APINT_TYPE_PREFIX, 6210) +HANDLE_BAT(APINT_TYPE_PREFIX, 6211) +HANDLE_BAT(APINT_TYPE_PREFIX, 6212) +HANDLE_BAT(APINT_TYPE_PREFIX, 6213) +HANDLE_BAT(APINT_TYPE_PREFIX, 6214) +HANDLE_BAT(APINT_TYPE_PREFIX, 6215) +HANDLE_BAT(APINT_TYPE_PREFIX, 6216) +HANDLE_BAT(APINT_TYPE_PREFIX, 6217) +HANDLE_BAT(APINT_TYPE_PREFIX, 6218) +HANDLE_BAT(APINT_TYPE_PREFIX, 6219) +HANDLE_BAT(APINT_TYPE_PREFIX, 6220) +HANDLE_BAT(APINT_TYPE_PREFIX, 6221) +HANDLE_BAT(APINT_TYPE_PREFIX, 6222) +HANDLE_BAT(APINT_TYPE_PREFIX, 6223) +HANDLE_BAT(APINT_TYPE_PREFIX, 6224) +HANDLE_BAT(APINT_TYPE_PREFIX, 6225) +HANDLE_BAT(APINT_TYPE_PREFIX, 6226) +HANDLE_BAT(APINT_TYPE_PREFIX, 6227) +HANDLE_BAT(APINT_TYPE_PREFIX, 6228) +HANDLE_BAT(APINT_TYPE_PREFIX, 6229) +HANDLE_BAT(APINT_TYPE_PREFIX, 6230) +HANDLE_BAT(APINT_TYPE_PREFIX, 6231) +HANDLE_BAT(APINT_TYPE_PREFIX, 6232) +HANDLE_BAT(APINT_TYPE_PREFIX, 6233) +HANDLE_BAT(APINT_TYPE_PREFIX, 6234) +HANDLE_BAT(APINT_TYPE_PREFIX, 6235) +HANDLE_BAT(APINT_TYPE_PREFIX, 6236) +HANDLE_BAT(APINT_TYPE_PREFIX, 6237) +HANDLE_BAT(APINT_TYPE_PREFIX, 6238) +HANDLE_BAT(APINT_TYPE_PREFIX, 6239) +HANDLE_BAT(APINT_TYPE_PREFIX, 6240) +HANDLE_BAT(APINT_TYPE_PREFIX, 6241) +HANDLE_BAT(APINT_TYPE_PREFIX, 6242) +HANDLE_BAT(APINT_TYPE_PREFIX, 6243) +HANDLE_BAT(APINT_TYPE_PREFIX, 6244) +HANDLE_BAT(APINT_TYPE_PREFIX, 6245) +HANDLE_BAT(APINT_TYPE_PREFIX, 6246) +HANDLE_BAT(APINT_TYPE_PREFIX, 6247) +HANDLE_BAT(APINT_TYPE_PREFIX, 6248) +HANDLE_BAT(APINT_TYPE_PREFIX, 6249) +HANDLE_BAT(APINT_TYPE_PREFIX, 6250) +HANDLE_BAT(APINT_TYPE_PREFIX, 6251) +HANDLE_BAT(APINT_TYPE_PREFIX, 6252) +HANDLE_BAT(APINT_TYPE_PREFIX, 6253) +HANDLE_BAT(APINT_TYPE_PREFIX, 6254) +HANDLE_BAT(APINT_TYPE_PREFIX, 6255) +HANDLE_BAT(APINT_TYPE_PREFIX, 6256) +HANDLE_BAT(APINT_TYPE_PREFIX, 6257) +HANDLE_BAT(APINT_TYPE_PREFIX, 6258) +HANDLE_BAT(APINT_TYPE_PREFIX, 6259) +HANDLE_BAT(APINT_TYPE_PREFIX, 6260) +HANDLE_BAT(APINT_TYPE_PREFIX, 6261) +HANDLE_BAT(APINT_TYPE_PREFIX, 6262) +HANDLE_BAT(APINT_TYPE_PREFIX, 6263) +HANDLE_BAT(APINT_TYPE_PREFIX, 6264) +HANDLE_BAT(APINT_TYPE_PREFIX, 6265) +HANDLE_BAT(APINT_TYPE_PREFIX, 6266) +HANDLE_BAT(APINT_TYPE_PREFIX, 6267) +HANDLE_BAT(APINT_TYPE_PREFIX, 6268) +HANDLE_BAT(APINT_TYPE_PREFIX, 6269) +HANDLE_BAT(APINT_TYPE_PREFIX, 6270) +HANDLE_BAT(APINT_TYPE_PREFIX, 6271) +HANDLE_BAT(APINT_TYPE_PREFIX, 6272) +HANDLE_BAT(APINT_TYPE_PREFIX, 6273) +HANDLE_BAT(APINT_TYPE_PREFIX, 6274) +HANDLE_BAT(APINT_TYPE_PREFIX, 6275) +HANDLE_BAT(APINT_TYPE_PREFIX, 6276) +HANDLE_BAT(APINT_TYPE_PREFIX, 6277) +HANDLE_BAT(APINT_TYPE_PREFIX, 6278) +HANDLE_BAT(APINT_TYPE_PREFIX, 6279) +HANDLE_BAT(APINT_TYPE_PREFIX, 6280) +HANDLE_BAT(APINT_TYPE_PREFIX, 6281) +HANDLE_BAT(APINT_TYPE_PREFIX, 6282) +HANDLE_BAT(APINT_TYPE_PREFIX, 6283) +HANDLE_BAT(APINT_TYPE_PREFIX, 6284) +HANDLE_BAT(APINT_TYPE_PREFIX, 6285) +HANDLE_BAT(APINT_TYPE_PREFIX, 6286) +HANDLE_BAT(APINT_TYPE_PREFIX, 6287) +HANDLE_BAT(APINT_TYPE_PREFIX, 6288) +HANDLE_BAT(APINT_TYPE_PREFIX, 6289) +HANDLE_BAT(APINT_TYPE_PREFIX, 6290) +HANDLE_BAT(APINT_TYPE_PREFIX, 6291) +HANDLE_BAT(APINT_TYPE_PREFIX, 6292) +HANDLE_BAT(APINT_TYPE_PREFIX, 6293) +HANDLE_BAT(APINT_TYPE_PREFIX, 6294) +HANDLE_BAT(APINT_TYPE_PREFIX, 6295) +HANDLE_BAT(APINT_TYPE_PREFIX, 6296) +HANDLE_BAT(APINT_TYPE_PREFIX, 6297) +HANDLE_BAT(APINT_TYPE_PREFIX, 6298) +HANDLE_BAT(APINT_TYPE_PREFIX, 6299) +HANDLE_BAT(APINT_TYPE_PREFIX, 6300) +HANDLE_BAT(APINT_TYPE_PREFIX, 6301) +HANDLE_BAT(APINT_TYPE_PREFIX, 6302) +HANDLE_BAT(APINT_TYPE_PREFIX, 6303) +HANDLE_BAT(APINT_TYPE_PREFIX, 6304) +HANDLE_BAT(APINT_TYPE_PREFIX, 6305) +HANDLE_BAT(APINT_TYPE_PREFIX, 6306) +HANDLE_BAT(APINT_TYPE_PREFIX, 6307) +HANDLE_BAT(APINT_TYPE_PREFIX, 6308) +HANDLE_BAT(APINT_TYPE_PREFIX, 6309) +HANDLE_BAT(APINT_TYPE_PREFIX, 6310) +HANDLE_BAT(APINT_TYPE_PREFIX, 6311) +HANDLE_BAT(APINT_TYPE_PREFIX, 6312) +HANDLE_BAT(APINT_TYPE_PREFIX, 6313) +HANDLE_BAT(APINT_TYPE_PREFIX, 6314) +HANDLE_BAT(APINT_TYPE_PREFIX, 6315) +HANDLE_BAT(APINT_TYPE_PREFIX, 6316) +HANDLE_BAT(APINT_TYPE_PREFIX, 6317) +HANDLE_BAT(APINT_TYPE_PREFIX, 6318) +HANDLE_BAT(APINT_TYPE_PREFIX, 6319) +HANDLE_BAT(APINT_TYPE_PREFIX, 6320) +HANDLE_BAT(APINT_TYPE_PREFIX, 6321) +HANDLE_BAT(APINT_TYPE_PREFIX, 6322) +HANDLE_BAT(APINT_TYPE_PREFIX, 6323) +HANDLE_BAT(APINT_TYPE_PREFIX, 6324) +HANDLE_BAT(APINT_TYPE_PREFIX, 6325) +HANDLE_BAT(APINT_TYPE_PREFIX, 6326) +HANDLE_BAT(APINT_TYPE_PREFIX, 6327) +HANDLE_BAT(APINT_TYPE_PREFIX, 6328) +HANDLE_BAT(APINT_TYPE_PREFIX, 6329) +HANDLE_BAT(APINT_TYPE_PREFIX, 6330) +HANDLE_BAT(APINT_TYPE_PREFIX, 6331) +HANDLE_BAT(APINT_TYPE_PREFIX, 6332) +HANDLE_BAT(APINT_TYPE_PREFIX, 6333) +HANDLE_BAT(APINT_TYPE_PREFIX, 6334) +HANDLE_BAT(APINT_TYPE_PREFIX, 6335) +HANDLE_BAT(APINT_TYPE_PREFIX, 6336) +HANDLE_BAT(APINT_TYPE_PREFIX, 6337) +HANDLE_BAT(APINT_TYPE_PREFIX, 6338) +HANDLE_BAT(APINT_TYPE_PREFIX, 6339) +HANDLE_BAT(APINT_TYPE_PREFIX, 6340) +HANDLE_BAT(APINT_TYPE_PREFIX, 6341) +HANDLE_BAT(APINT_TYPE_PREFIX, 6342) +HANDLE_BAT(APINT_TYPE_PREFIX, 6343) +HANDLE_BAT(APINT_TYPE_PREFIX, 6344) +HANDLE_BAT(APINT_TYPE_PREFIX, 6345) +HANDLE_BAT(APINT_TYPE_PREFIX, 6346) +HANDLE_BAT(APINT_TYPE_PREFIX, 6347) +HANDLE_BAT(APINT_TYPE_PREFIX, 6348) +HANDLE_BAT(APINT_TYPE_PREFIX, 6349) +HANDLE_BAT(APINT_TYPE_PREFIX, 6350) +HANDLE_BAT(APINT_TYPE_PREFIX, 6351) +HANDLE_BAT(APINT_TYPE_PREFIX, 6352) +HANDLE_BAT(APINT_TYPE_PREFIX, 6353) +HANDLE_BAT(APINT_TYPE_PREFIX, 6354) +HANDLE_BAT(APINT_TYPE_PREFIX, 6355) +HANDLE_BAT(APINT_TYPE_PREFIX, 6356) +HANDLE_BAT(APINT_TYPE_PREFIX, 6357) +HANDLE_BAT(APINT_TYPE_PREFIX, 6358) +HANDLE_BAT(APINT_TYPE_PREFIX, 6359) +HANDLE_BAT(APINT_TYPE_PREFIX, 6360) +HANDLE_BAT(APINT_TYPE_PREFIX, 6361) +HANDLE_BAT(APINT_TYPE_PREFIX, 6362) +HANDLE_BAT(APINT_TYPE_PREFIX, 6363) +HANDLE_BAT(APINT_TYPE_PREFIX, 6364) +HANDLE_BAT(APINT_TYPE_PREFIX, 6365) +HANDLE_BAT(APINT_TYPE_PREFIX, 6366) +HANDLE_BAT(APINT_TYPE_PREFIX, 6367) +HANDLE_BAT(APINT_TYPE_PREFIX, 6368) +HANDLE_BAT(APINT_TYPE_PREFIX, 6369) +HANDLE_BAT(APINT_TYPE_PREFIX, 6370) +HANDLE_BAT(APINT_TYPE_PREFIX, 6371) +HANDLE_BAT(APINT_TYPE_PREFIX, 6372) +HANDLE_BAT(APINT_TYPE_PREFIX, 6373) +HANDLE_BAT(APINT_TYPE_PREFIX, 6374) +HANDLE_BAT(APINT_TYPE_PREFIX, 6375) +HANDLE_BAT(APINT_TYPE_PREFIX, 6376) +HANDLE_BAT(APINT_TYPE_PREFIX, 6377) +HANDLE_BAT(APINT_TYPE_PREFIX, 6378) +HANDLE_BAT(APINT_TYPE_PREFIX, 6379) +HANDLE_BAT(APINT_TYPE_PREFIX, 6380) +HANDLE_BAT(APINT_TYPE_PREFIX, 6381) +HANDLE_BAT(APINT_TYPE_PREFIX, 6382) +HANDLE_BAT(APINT_TYPE_PREFIX, 6383) +HANDLE_BAT(APINT_TYPE_PREFIX, 6384) +HANDLE_BAT(APINT_TYPE_PREFIX, 6385) +HANDLE_BAT(APINT_TYPE_PREFIX, 6386) +HANDLE_BAT(APINT_TYPE_PREFIX, 6387) +HANDLE_BAT(APINT_TYPE_PREFIX, 6388) +HANDLE_BAT(APINT_TYPE_PREFIX, 6389) +HANDLE_BAT(APINT_TYPE_PREFIX, 6390) +HANDLE_BAT(APINT_TYPE_PREFIX, 6391) +HANDLE_BAT(APINT_TYPE_PREFIX, 6392) +HANDLE_BAT(APINT_TYPE_PREFIX, 6393) +HANDLE_BAT(APINT_TYPE_PREFIX, 6394) +HANDLE_BAT(APINT_TYPE_PREFIX, 6395) +HANDLE_BAT(APINT_TYPE_PREFIX, 6396) +HANDLE_BAT(APINT_TYPE_PREFIX, 6397) +HANDLE_BAT(APINT_TYPE_PREFIX, 6398) +HANDLE_BAT(APINT_TYPE_PREFIX, 6399) +HANDLE_BAT(APINT_TYPE_PREFIX, 6400) +HANDLE_BAT(APINT_TYPE_PREFIX, 6401) +HANDLE_BAT(APINT_TYPE_PREFIX, 6402) +HANDLE_BAT(APINT_TYPE_PREFIX, 6403) +HANDLE_BAT(APINT_TYPE_PREFIX, 6404) +HANDLE_BAT(APINT_TYPE_PREFIX, 6405) +HANDLE_BAT(APINT_TYPE_PREFIX, 6406) +HANDLE_BAT(APINT_TYPE_PREFIX, 6407) +HANDLE_BAT(APINT_TYPE_PREFIX, 6408) +HANDLE_BAT(APINT_TYPE_PREFIX, 6409) +HANDLE_BAT(APINT_TYPE_PREFIX, 6410) +HANDLE_BAT(APINT_TYPE_PREFIX, 6411) +HANDLE_BAT(APINT_TYPE_PREFIX, 6412) +HANDLE_BAT(APINT_TYPE_PREFIX, 6413) +HANDLE_BAT(APINT_TYPE_PREFIX, 6414) +HANDLE_BAT(APINT_TYPE_PREFIX, 6415) +HANDLE_BAT(APINT_TYPE_PREFIX, 6416) +HANDLE_BAT(APINT_TYPE_PREFIX, 6417) +HANDLE_BAT(APINT_TYPE_PREFIX, 6418) +HANDLE_BAT(APINT_TYPE_PREFIX, 6419) +HANDLE_BAT(APINT_TYPE_PREFIX, 6420) +HANDLE_BAT(APINT_TYPE_PREFIX, 6421) +HANDLE_BAT(APINT_TYPE_PREFIX, 6422) +HANDLE_BAT(APINT_TYPE_PREFIX, 6423) +HANDLE_BAT(APINT_TYPE_PREFIX, 6424) +HANDLE_BAT(APINT_TYPE_PREFIX, 6425) +HANDLE_BAT(APINT_TYPE_PREFIX, 6426) +HANDLE_BAT(APINT_TYPE_PREFIX, 6427) +HANDLE_BAT(APINT_TYPE_PREFIX, 6428) +HANDLE_BAT(APINT_TYPE_PREFIX, 6429) +HANDLE_BAT(APINT_TYPE_PREFIX, 6430) +HANDLE_BAT(APINT_TYPE_PREFIX, 6431) +HANDLE_BAT(APINT_TYPE_PREFIX, 6432) +HANDLE_BAT(APINT_TYPE_PREFIX, 6433) +HANDLE_BAT(APINT_TYPE_PREFIX, 6434) +HANDLE_BAT(APINT_TYPE_PREFIX, 6435) +HANDLE_BAT(APINT_TYPE_PREFIX, 6436) +HANDLE_BAT(APINT_TYPE_PREFIX, 6437) +HANDLE_BAT(APINT_TYPE_PREFIX, 6438) +HANDLE_BAT(APINT_TYPE_PREFIX, 6439) +HANDLE_BAT(APINT_TYPE_PREFIX, 6440) +HANDLE_BAT(APINT_TYPE_PREFIX, 6441) +HANDLE_BAT(APINT_TYPE_PREFIX, 6442) +HANDLE_BAT(APINT_TYPE_PREFIX, 6443) +HANDLE_BAT(APINT_TYPE_PREFIX, 6444) +HANDLE_BAT(APINT_TYPE_PREFIX, 6445) +HANDLE_BAT(APINT_TYPE_PREFIX, 6446) +HANDLE_BAT(APINT_TYPE_PREFIX, 6447) +HANDLE_BAT(APINT_TYPE_PREFIX, 6448) +HANDLE_BAT(APINT_TYPE_PREFIX, 6449) +HANDLE_BAT(APINT_TYPE_PREFIX, 6450) +HANDLE_BAT(APINT_TYPE_PREFIX, 6451) +HANDLE_BAT(APINT_TYPE_PREFIX, 6452) +HANDLE_BAT(APINT_TYPE_PREFIX, 6453) +HANDLE_BAT(APINT_TYPE_PREFIX, 6454) +HANDLE_BAT(APINT_TYPE_PREFIX, 6455) +HANDLE_BAT(APINT_TYPE_PREFIX, 6456) +HANDLE_BAT(APINT_TYPE_PREFIX, 6457) +HANDLE_BAT(APINT_TYPE_PREFIX, 6458) +HANDLE_BAT(APINT_TYPE_PREFIX, 6459) +HANDLE_BAT(APINT_TYPE_PREFIX, 6460) +HANDLE_BAT(APINT_TYPE_PREFIX, 6461) +HANDLE_BAT(APINT_TYPE_PREFIX, 6462) +HANDLE_BAT(APINT_TYPE_PREFIX, 6463) +HANDLE_BAT(APINT_TYPE_PREFIX, 6464) +HANDLE_BAT(APINT_TYPE_PREFIX, 6465) +HANDLE_BAT(APINT_TYPE_PREFIX, 6466) +HANDLE_BAT(APINT_TYPE_PREFIX, 6467) +HANDLE_BAT(APINT_TYPE_PREFIX, 6468) +HANDLE_BAT(APINT_TYPE_PREFIX, 6469) +HANDLE_BAT(APINT_TYPE_PREFIX, 6470) +HANDLE_BAT(APINT_TYPE_PREFIX, 6471) +HANDLE_BAT(APINT_TYPE_PREFIX, 6472) +HANDLE_BAT(APINT_TYPE_PREFIX, 6473) +HANDLE_BAT(APINT_TYPE_PREFIX, 6474) +HANDLE_BAT(APINT_TYPE_PREFIX, 6475) +HANDLE_BAT(APINT_TYPE_PREFIX, 6476) +HANDLE_BAT(APINT_TYPE_PREFIX, 6477) +HANDLE_BAT(APINT_TYPE_PREFIX, 6478) +HANDLE_BAT(APINT_TYPE_PREFIX, 6479) +HANDLE_BAT(APINT_TYPE_PREFIX, 6480) +HANDLE_BAT(APINT_TYPE_PREFIX, 6481) +HANDLE_BAT(APINT_TYPE_PREFIX, 6482) +HANDLE_BAT(APINT_TYPE_PREFIX, 6483) +HANDLE_BAT(APINT_TYPE_PREFIX, 6484) +HANDLE_BAT(APINT_TYPE_PREFIX, 6485) +HANDLE_BAT(APINT_TYPE_PREFIX, 6486) +HANDLE_BAT(APINT_TYPE_PREFIX, 6487) +HANDLE_BAT(APINT_TYPE_PREFIX, 6488) +HANDLE_BAT(APINT_TYPE_PREFIX, 6489) +HANDLE_BAT(APINT_TYPE_PREFIX, 6490) +HANDLE_BAT(APINT_TYPE_PREFIX, 6491) +HANDLE_BAT(APINT_TYPE_PREFIX, 6492) +HANDLE_BAT(APINT_TYPE_PREFIX, 6493) +HANDLE_BAT(APINT_TYPE_PREFIX, 6494) +HANDLE_BAT(APINT_TYPE_PREFIX, 6495) +HANDLE_BAT(APINT_TYPE_PREFIX, 6496) +HANDLE_BAT(APINT_TYPE_PREFIX, 6497) +HANDLE_BAT(APINT_TYPE_PREFIX, 6498) +HANDLE_BAT(APINT_TYPE_PREFIX, 6499) +HANDLE_BAT(APINT_TYPE_PREFIX, 6500) +HANDLE_BAT(APINT_TYPE_PREFIX, 6501) +HANDLE_BAT(APINT_TYPE_PREFIX, 6502) +HANDLE_BAT(APINT_TYPE_PREFIX, 6503) +HANDLE_BAT(APINT_TYPE_PREFIX, 6504) +HANDLE_BAT(APINT_TYPE_PREFIX, 6505) +HANDLE_BAT(APINT_TYPE_PREFIX, 6506) +HANDLE_BAT(APINT_TYPE_PREFIX, 6507) +HANDLE_BAT(APINT_TYPE_PREFIX, 6508) +HANDLE_BAT(APINT_TYPE_PREFIX, 6509) +HANDLE_BAT(APINT_TYPE_PREFIX, 6510) +HANDLE_BAT(APINT_TYPE_PREFIX, 6511) +HANDLE_BAT(APINT_TYPE_PREFIX, 6512) +HANDLE_BAT(APINT_TYPE_PREFIX, 6513) +HANDLE_BAT(APINT_TYPE_PREFIX, 6514) +HANDLE_BAT(APINT_TYPE_PREFIX, 6515) +HANDLE_BAT(APINT_TYPE_PREFIX, 6516) +HANDLE_BAT(APINT_TYPE_PREFIX, 6517) +HANDLE_BAT(APINT_TYPE_PREFIX, 6518) +HANDLE_BAT(APINT_TYPE_PREFIX, 6519) +HANDLE_BAT(APINT_TYPE_PREFIX, 6520) +HANDLE_BAT(APINT_TYPE_PREFIX, 6521) +HANDLE_BAT(APINT_TYPE_PREFIX, 6522) +HANDLE_BAT(APINT_TYPE_PREFIX, 6523) +HANDLE_BAT(APINT_TYPE_PREFIX, 6524) +HANDLE_BAT(APINT_TYPE_PREFIX, 6525) +HANDLE_BAT(APINT_TYPE_PREFIX, 6526) +HANDLE_BAT(APINT_TYPE_PREFIX, 6527) +HANDLE_BAT(APINT_TYPE_PREFIX, 6528) +HANDLE_BAT(APINT_TYPE_PREFIX, 6529) +HANDLE_BAT(APINT_TYPE_PREFIX, 6530) +HANDLE_BAT(APINT_TYPE_PREFIX, 6531) +HANDLE_BAT(APINT_TYPE_PREFIX, 6532) +HANDLE_BAT(APINT_TYPE_PREFIX, 6533) +HANDLE_BAT(APINT_TYPE_PREFIX, 6534) +HANDLE_BAT(APINT_TYPE_PREFIX, 6535) +HANDLE_BAT(APINT_TYPE_PREFIX, 6536) +HANDLE_BAT(APINT_TYPE_PREFIX, 6537) +HANDLE_BAT(APINT_TYPE_PREFIX, 6538) +HANDLE_BAT(APINT_TYPE_PREFIX, 6539) +HANDLE_BAT(APINT_TYPE_PREFIX, 6540) +HANDLE_BAT(APINT_TYPE_PREFIX, 6541) +HANDLE_BAT(APINT_TYPE_PREFIX, 6542) +HANDLE_BAT(APINT_TYPE_PREFIX, 6543) +HANDLE_BAT(APINT_TYPE_PREFIX, 6544) +HANDLE_BAT(APINT_TYPE_PREFIX, 6545) +HANDLE_BAT(APINT_TYPE_PREFIX, 6546) +HANDLE_BAT(APINT_TYPE_PREFIX, 6547) +HANDLE_BAT(APINT_TYPE_PREFIX, 6548) +HANDLE_BAT(APINT_TYPE_PREFIX, 6549) +HANDLE_BAT(APINT_TYPE_PREFIX, 6550) +HANDLE_BAT(APINT_TYPE_PREFIX, 6551) +HANDLE_BAT(APINT_TYPE_PREFIX, 6552) +HANDLE_BAT(APINT_TYPE_PREFIX, 6553) +HANDLE_BAT(APINT_TYPE_PREFIX, 6554) +HANDLE_BAT(APINT_TYPE_PREFIX, 6555) +HANDLE_BAT(APINT_TYPE_PREFIX, 6556) +HANDLE_BAT(APINT_TYPE_PREFIX, 6557) +HANDLE_BAT(APINT_TYPE_PREFIX, 6558) +HANDLE_BAT(APINT_TYPE_PREFIX, 6559) +HANDLE_BAT(APINT_TYPE_PREFIX, 6560) +HANDLE_BAT(APINT_TYPE_PREFIX, 6561) +HANDLE_BAT(APINT_TYPE_PREFIX, 6562) +HANDLE_BAT(APINT_TYPE_PREFIX, 6563) +HANDLE_BAT(APINT_TYPE_PREFIX, 6564) +HANDLE_BAT(APINT_TYPE_PREFIX, 6565) +HANDLE_BAT(APINT_TYPE_PREFIX, 6566) +HANDLE_BAT(APINT_TYPE_PREFIX, 6567) +HANDLE_BAT(APINT_TYPE_PREFIX, 6568) +HANDLE_BAT(APINT_TYPE_PREFIX, 6569) +HANDLE_BAT(APINT_TYPE_PREFIX, 6570) +HANDLE_BAT(APINT_TYPE_PREFIX, 6571) +HANDLE_BAT(APINT_TYPE_PREFIX, 6572) +HANDLE_BAT(APINT_TYPE_PREFIX, 6573) +HANDLE_BAT(APINT_TYPE_PREFIX, 6574) +HANDLE_BAT(APINT_TYPE_PREFIX, 6575) +HANDLE_BAT(APINT_TYPE_PREFIX, 6576) +HANDLE_BAT(APINT_TYPE_PREFIX, 6577) +HANDLE_BAT(APINT_TYPE_PREFIX, 6578) +HANDLE_BAT(APINT_TYPE_PREFIX, 6579) +HANDLE_BAT(APINT_TYPE_PREFIX, 6580) +HANDLE_BAT(APINT_TYPE_PREFIX, 6581) +HANDLE_BAT(APINT_TYPE_PREFIX, 6582) +HANDLE_BAT(APINT_TYPE_PREFIX, 6583) +HANDLE_BAT(APINT_TYPE_PREFIX, 6584) +HANDLE_BAT(APINT_TYPE_PREFIX, 6585) +HANDLE_BAT(APINT_TYPE_PREFIX, 6586) +HANDLE_BAT(APINT_TYPE_PREFIX, 6587) +HANDLE_BAT(APINT_TYPE_PREFIX, 6588) +HANDLE_BAT(APINT_TYPE_PREFIX, 6589) +HANDLE_BAT(APINT_TYPE_PREFIX, 6590) +HANDLE_BAT(APINT_TYPE_PREFIX, 6591) +HANDLE_BAT(APINT_TYPE_PREFIX, 6592) +HANDLE_BAT(APINT_TYPE_PREFIX, 6593) +HANDLE_BAT(APINT_TYPE_PREFIX, 6594) +HANDLE_BAT(APINT_TYPE_PREFIX, 6595) +HANDLE_BAT(APINT_TYPE_PREFIX, 6596) +HANDLE_BAT(APINT_TYPE_PREFIX, 6597) +HANDLE_BAT(APINT_TYPE_PREFIX, 6598) +HANDLE_BAT(APINT_TYPE_PREFIX, 6599) +HANDLE_BAT(APINT_TYPE_PREFIX, 6600) +HANDLE_BAT(APINT_TYPE_PREFIX, 6601) +HANDLE_BAT(APINT_TYPE_PREFIX, 6602) +HANDLE_BAT(APINT_TYPE_PREFIX, 6603) +HANDLE_BAT(APINT_TYPE_PREFIX, 6604) +HANDLE_BAT(APINT_TYPE_PREFIX, 6605) +HANDLE_BAT(APINT_TYPE_PREFIX, 6606) +HANDLE_BAT(APINT_TYPE_PREFIX, 6607) +HANDLE_BAT(APINT_TYPE_PREFIX, 6608) +HANDLE_BAT(APINT_TYPE_PREFIX, 6609) +HANDLE_BAT(APINT_TYPE_PREFIX, 6610) +HANDLE_BAT(APINT_TYPE_PREFIX, 6611) +HANDLE_BAT(APINT_TYPE_PREFIX, 6612) +HANDLE_BAT(APINT_TYPE_PREFIX, 6613) +HANDLE_BAT(APINT_TYPE_PREFIX, 6614) +HANDLE_BAT(APINT_TYPE_PREFIX, 6615) +HANDLE_BAT(APINT_TYPE_PREFIX, 6616) +HANDLE_BAT(APINT_TYPE_PREFIX, 6617) +HANDLE_BAT(APINT_TYPE_PREFIX, 6618) +HANDLE_BAT(APINT_TYPE_PREFIX, 6619) +HANDLE_BAT(APINT_TYPE_PREFIX, 6620) +HANDLE_BAT(APINT_TYPE_PREFIX, 6621) +HANDLE_BAT(APINT_TYPE_PREFIX, 6622) +HANDLE_BAT(APINT_TYPE_PREFIX, 6623) +HANDLE_BAT(APINT_TYPE_PREFIX, 6624) +HANDLE_BAT(APINT_TYPE_PREFIX, 6625) +HANDLE_BAT(APINT_TYPE_PREFIX, 6626) +HANDLE_BAT(APINT_TYPE_PREFIX, 6627) +HANDLE_BAT(APINT_TYPE_PREFIX, 6628) +HANDLE_BAT(APINT_TYPE_PREFIX, 6629) +HANDLE_BAT(APINT_TYPE_PREFIX, 6630) +HANDLE_BAT(APINT_TYPE_PREFIX, 6631) +HANDLE_BAT(APINT_TYPE_PREFIX, 6632) +HANDLE_BAT(APINT_TYPE_PREFIX, 6633) +HANDLE_BAT(APINT_TYPE_PREFIX, 6634) +HANDLE_BAT(APINT_TYPE_PREFIX, 6635) +HANDLE_BAT(APINT_TYPE_PREFIX, 6636) +HANDLE_BAT(APINT_TYPE_PREFIX, 6637) +HANDLE_BAT(APINT_TYPE_PREFIX, 6638) +HANDLE_BAT(APINT_TYPE_PREFIX, 6639) +HANDLE_BAT(APINT_TYPE_PREFIX, 6640) +HANDLE_BAT(APINT_TYPE_PREFIX, 6641) +HANDLE_BAT(APINT_TYPE_PREFIX, 6642) +HANDLE_BAT(APINT_TYPE_PREFIX, 6643) +HANDLE_BAT(APINT_TYPE_PREFIX, 6644) +HANDLE_BAT(APINT_TYPE_PREFIX, 6645) +HANDLE_BAT(APINT_TYPE_PREFIX, 6646) +HANDLE_BAT(APINT_TYPE_PREFIX, 6647) +HANDLE_BAT(APINT_TYPE_PREFIX, 6648) +HANDLE_BAT(APINT_TYPE_PREFIX, 6649) +HANDLE_BAT(APINT_TYPE_PREFIX, 6650) +HANDLE_BAT(APINT_TYPE_PREFIX, 6651) +HANDLE_BAT(APINT_TYPE_PREFIX, 6652) +HANDLE_BAT(APINT_TYPE_PREFIX, 6653) +HANDLE_BAT(APINT_TYPE_PREFIX, 6654) +HANDLE_BAT(APINT_TYPE_PREFIX, 6655) +HANDLE_BAT(APINT_TYPE_PREFIX, 6656) +HANDLE_BAT(APINT_TYPE_PREFIX, 6657) +HANDLE_BAT(APINT_TYPE_PREFIX, 6658) +HANDLE_BAT(APINT_TYPE_PREFIX, 6659) +HANDLE_BAT(APINT_TYPE_PREFIX, 6660) +HANDLE_BAT(APINT_TYPE_PREFIX, 6661) +HANDLE_BAT(APINT_TYPE_PREFIX, 6662) +HANDLE_BAT(APINT_TYPE_PREFIX, 6663) +HANDLE_BAT(APINT_TYPE_PREFIX, 6664) +HANDLE_BAT(APINT_TYPE_PREFIX, 6665) +HANDLE_BAT(APINT_TYPE_PREFIX, 6666) +HANDLE_BAT(APINT_TYPE_PREFIX, 6667) +HANDLE_BAT(APINT_TYPE_PREFIX, 6668) +HANDLE_BAT(APINT_TYPE_PREFIX, 6669) +HANDLE_BAT(APINT_TYPE_PREFIX, 6670) +HANDLE_BAT(APINT_TYPE_PREFIX, 6671) +HANDLE_BAT(APINT_TYPE_PREFIX, 6672) +HANDLE_BAT(APINT_TYPE_PREFIX, 6673) +HANDLE_BAT(APINT_TYPE_PREFIX, 6674) +HANDLE_BAT(APINT_TYPE_PREFIX, 6675) +HANDLE_BAT(APINT_TYPE_PREFIX, 6676) +HANDLE_BAT(APINT_TYPE_PREFIX, 6677) +HANDLE_BAT(APINT_TYPE_PREFIX, 6678) +HANDLE_BAT(APINT_TYPE_PREFIX, 6679) +HANDLE_BAT(APINT_TYPE_PREFIX, 6680) +HANDLE_BAT(APINT_TYPE_PREFIX, 6681) +HANDLE_BAT(APINT_TYPE_PREFIX, 6682) +HANDLE_BAT(APINT_TYPE_PREFIX, 6683) +HANDLE_BAT(APINT_TYPE_PREFIX, 6684) +HANDLE_BAT(APINT_TYPE_PREFIX, 6685) +HANDLE_BAT(APINT_TYPE_PREFIX, 6686) +HANDLE_BAT(APINT_TYPE_PREFIX, 6687) +HANDLE_BAT(APINT_TYPE_PREFIX, 6688) +HANDLE_BAT(APINT_TYPE_PREFIX, 6689) +HANDLE_BAT(APINT_TYPE_PREFIX, 6690) +HANDLE_BAT(APINT_TYPE_PREFIX, 6691) +HANDLE_BAT(APINT_TYPE_PREFIX, 6692) +HANDLE_BAT(APINT_TYPE_PREFIX, 6693) +HANDLE_BAT(APINT_TYPE_PREFIX, 6694) +HANDLE_BAT(APINT_TYPE_PREFIX, 6695) +HANDLE_BAT(APINT_TYPE_PREFIX, 6696) +HANDLE_BAT(APINT_TYPE_PREFIX, 6697) +HANDLE_BAT(APINT_TYPE_PREFIX, 6698) +HANDLE_BAT(APINT_TYPE_PREFIX, 6699) +HANDLE_BAT(APINT_TYPE_PREFIX, 6700) +HANDLE_BAT(APINT_TYPE_PREFIX, 6701) +HANDLE_BAT(APINT_TYPE_PREFIX, 6702) +HANDLE_BAT(APINT_TYPE_PREFIX, 6703) +HANDLE_BAT(APINT_TYPE_PREFIX, 6704) +HANDLE_BAT(APINT_TYPE_PREFIX, 6705) +HANDLE_BAT(APINT_TYPE_PREFIX, 6706) +HANDLE_BAT(APINT_TYPE_PREFIX, 6707) +HANDLE_BAT(APINT_TYPE_PREFIX, 6708) +HANDLE_BAT(APINT_TYPE_PREFIX, 6709) +HANDLE_BAT(APINT_TYPE_PREFIX, 6710) +HANDLE_BAT(APINT_TYPE_PREFIX, 6711) +HANDLE_BAT(APINT_TYPE_PREFIX, 6712) +HANDLE_BAT(APINT_TYPE_PREFIX, 6713) +HANDLE_BAT(APINT_TYPE_PREFIX, 6714) +HANDLE_BAT(APINT_TYPE_PREFIX, 6715) +HANDLE_BAT(APINT_TYPE_PREFIX, 6716) +HANDLE_BAT(APINT_TYPE_PREFIX, 6717) +HANDLE_BAT(APINT_TYPE_PREFIX, 6718) +HANDLE_BAT(APINT_TYPE_PREFIX, 6719) +HANDLE_BAT(APINT_TYPE_PREFIX, 6720) +HANDLE_BAT(APINT_TYPE_PREFIX, 6721) +HANDLE_BAT(APINT_TYPE_PREFIX, 6722) +HANDLE_BAT(APINT_TYPE_PREFIX, 6723) +HANDLE_BAT(APINT_TYPE_PREFIX, 6724) +HANDLE_BAT(APINT_TYPE_PREFIX, 6725) +HANDLE_BAT(APINT_TYPE_PREFIX, 6726) +HANDLE_BAT(APINT_TYPE_PREFIX, 6727) +HANDLE_BAT(APINT_TYPE_PREFIX, 6728) +HANDLE_BAT(APINT_TYPE_PREFIX, 6729) +HANDLE_BAT(APINT_TYPE_PREFIX, 6730) +HANDLE_BAT(APINT_TYPE_PREFIX, 6731) +HANDLE_BAT(APINT_TYPE_PREFIX, 6732) +HANDLE_BAT(APINT_TYPE_PREFIX, 6733) +HANDLE_BAT(APINT_TYPE_PREFIX, 6734) +HANDLE_BAT(APINT_TYPE_PREFIX, 6735) +HANDLE_BAT(APINT_TYPE_PREFIX, 6736) +HANDLE_BAT(APINT_TYPE_PREFIX, 6737) +HANDLE_BAT(APINT_TYPE_PREFIX, 6738) +HANDLE_BAT(APINT_TYPE_PREFIX, 6739) +HANDLE_BAT(APINT_TYPE_PREFIX, 6740) +HANDLE_BAT(APINT_TYPE_PREFIX, 6741) +HANDLE_BAT(APINT_TYPE_PREFIX, 6742) +HANDLE_BAT(APINT_TYPE_PREFIX, 6743) +HANDLE_BAT(APINT_TYPE_PREFIX, 6744) +HANDLE_BAT(APINT_TYPE_PREFIX, 6745) +HANDLE_BAT(APINT_TYPE_PREFIX, 6746) +HANDLE_BAT(APINT_TYPE_PREFIX, 6747) +HANDLE_BAT(APINT_TYPE_PREFIX, 6748) +HANDLE_BAT(APINT_TYPE_PREFIX, 6749) +HANDLE_BAT(APINT_TYPE_PREFIX, 6750) +HANDLE_BAT(APINT_TYPE_PREFIX, 6751) +HANDLE_BAT(APINT_TYPE_PREFIX, 6752) +HANDLE_BAT(APINT_TYPE_PREFIX, 6753) +HANDLE_BAT(APINT_TYPE_PREFIX, 6754) +HANDLE_BAT(APINT_TYPE_PREFIX, 6755) +HANDLE_BAT(APINT_TYPE_PREFIX, 6756) +HANDLE_BAT(APINT_TYPE_PREFIX, 6757) +HANDLE_BAT(APINT_TYPE_PREFIX, 6758) +HANDLE_BAT(APINT_TYPE_PREFIX, 6759) +HANDLE_BAT(APINT_TYPE_PREFIX, 6760) +HANDLE_BAT(APINT_TYPE_PREFIX, 6761) +HANDLE_BAT(APINT_TYPE_PREFIX, 6762) +HANDLE_BAT(APINT_TYPE_PREFIX, 6763) +HANDLE_BAT(APINT_TYPE_PREFIX, 6764) +HANDLE_BAT(APINT_TYPE_PREFIX, 6765) +HANDLE_BAT(APINT_TYPE_PREFIX, 6766) +HANDLE_BAT(APINT_TYPE_PREFIX, 6767) +HANDLE_BAT(APINT_TYPE_PREFIX, 6768) +HANDLE_BAT(APINT_TYPE_PREFIX, 6769) +HANDLE_BAT(APINT_TYPE_PREFIX, 6770) +HANDLE_BAT(APINT_TYPE_PREFIX, 6771) +HANDLE_BAT(APINT_TYPE_PREFIX, 6772) +HANDLE_BAT(APINT_TYPE_PREFIX, 6773) +HANDLE_BAT(APINT_TYPE_PREFIX, 6774) +HANDLE_BAT(APINT_TYPE_PREFIX, 6775) +HANDLE_BAT(APINT_TYPE_PREFIX, 6776) +HANDLE_BAT(APINT_TYPE_PREFIX, 6777) +HANDLE_BAT(APINT_TYPE_PREFIX, 6778) +HANDLE_BAT(APINT_TYPE_PREFIX, 6779) +HANDLE_BAT(APINT_TYPE_PREFIX, 6780) +HANDLE_BAT(APINT_TYPE_PREFIX, 6781) +HANDLE_BAT(APINT_TYPE_PREFIX, 6782) +HANDLE_BAT(APINT_TYPE_PREFIX, 6783) +HANDLE_BAT(APINT_TYPE_PREFIX, 6784) +HANDLE_BAT(APINT_TYPE_PREFIX, 6785) +HANDLE_BAT(APINT_TYPE_PREFIX, 6786) +HANDLE_BAT(APINT_TYPE_PREFIX, 6787) +HANDLE_BAT(APINT_TYPE_PREFIX, 6788) +HANDLE_BAT(APINT_TYPE_PREFIX, 6789) +HANDLE_BAT(APINT_TYPE_PREFIX, 6790) +HANDLE_BAT(APINT_TYPE_PREFIX, 6791) +HANDLE_BAT(APINT_TYPE_PREFIX, 6792) +HANDLE_BAT(APINT_TYPE_PREFIX, 6793) +HANDLE_BAT(APINT_TYPE_PREFIX, 6794) +HANDLE_BAT(APINT_TYPE_PREFIX, 6795) +HANDLE_BAT(APINT_TYPE_PREFIX, 6796) +HANDLE_BAT(APINT_TYPE_PREFIX, 6797) +HANDLE_BAT(APINT_TYPE_PREFIX, 6798) +HANDLE_BAT(APINT_TYPE_PREFIX, 6799) +HANDLE_BAT(APINT_TYPE_PREFIX, 6800) +HANDLE_BAT(APINT_TYPE_PREFIX, 6801) +HANDLE_BAT(APINT_TYPE_PREFIX, 6802) +HANDLE_BAT(APINT_TYPE_PREFIX, 6803) +HANDLE_BAT(APINT_TYPE_PREFIX, 6804) +HANDLE_BAT(APINT_TYPE_PREFIX, 6805) +HANDLE_BAT(APINT_TYPE_PREFIX, 6806) +HANDLE_BAT(APINT_TYPE_PREFIX, 6807) +HANDLE_BAT(APINT_TYPE_PREFIX, 6808) +HANDLE_BAT(APINT_TYPE_PREFIX, 6809) +HANDLE_BAT(APINT_TYPE_PREFIX, 6810) +HANDLE_BAT(APINT_TYPE_PREFIX, 6811) +HANDLE_BAT(APINT_TYPE_PREFIX, 6812) +HANDLE_BAT(APINT_TYPE_PREFIX, 6813) +HANDLE_BAT(APINT_TYPE_PREFIX, 6814) +HANDLE_BAT(APINT_TYPE_PREFIX, 6815) +HANDLE_BAT(APINT_TYPE_PREFIX, 6816) +HANDLE_BAT(APINT_TYPE_PREFIX, 6817) +HANDLE_BAT(APINT_TYPE_PREFIX, 6818) +HANDLE_BAT(APINT_TYPE_PREFIX, 6819) +HANDLE_BAT(APINT_TYPE_PREFIX, 6820) +HANDLE_BAT(APINT_TYPE_PREFIX, 6821) +HANDLE_BAT(APINT_TYPE_PREFIX, 6822) +HANDLE_BAT(APINT_TYPE_PREFIX, 6823) +HANDLE_BAT(APINT_TYPE_PREFIX, 6824) +HANDLE_BAT(APINT_TYPE_PREFIX, 6825) +HANDLE_BAT(APINT_TYPE_PREFIX, 6826) +HANDLE_BAT(APINT_TYPE_PREFIX, 6827) +HANDLE_BAT(APINT_TYPE_PREFIX, 6828) +HANDLE_BAT(APINT_TYPE_PREFIX, 6829) +HANDLE_BAT(APINT_TYPE_PREFIX, 6830) +HANDLE_BAT(APINT_TYPE_PREFIX, 6831) +HANDLE_BAT(APINT_TYPE_PREFIX, 6832) +HANDLE_BAT(APINT_TYPE_PREFIX, 6833) +HANDLE_BAT(APINT_TYPE_PREFIX, 6834) +HANDLE_BAT(APINT_TYPE_PREFIX, 6835) +HANDLE_BAT(APINT_TYPE_PREFIX, 6836) +HANDLE_BAT(APINT_TYPE_PREFIX, 6837) +HANDLE_BAT(APINT_TYPE_PREFIX, 6838) +HANDLE_BAT(APINT_TYPE_PREFIX, 6839) +HANDLE_BAT(APINT_TYPE_PREFIX, 6840) +HANDLE_BAT(APINT_TYPE_PREFIX, 6841) +HANDLE_BAT(APINT_TYPE_PREFIX, 6842) +HANDLE_BAT(APINT_TYPE_PREFIX, 6843) +HANDLE_BAT(APINT_TYPE_PREFIX, 6844) +HANDLE_BAT(APINT_TYPE_PREFIX, 6845) +HANDLE_BAT(APINT_TYPE_PREFIX, 6846) +HANDLE_BAT(APINT_TYPE_PREFIX, 6847) +HANDLE_BAT(APINT_TYPE_PREFIX, 6848) +HANDLE_BAT(APINT_TYPE_PREFIX, 6849) +HANDLE_BAT(APINT_TYPE_PREFIX, 6850) +HANDLE_BAT(APINT_TYPE_PREFIX, 6851) +HANDLE_BAT(APINT_TYPE_PREFIX, 6852) +HANDLE_BAT(APINT_TYPE_PREFIX, 6853) +HANDLE_BAT(APINT_TYPE_PREFIX, 6854) +HANDLE_BAT(APINT_TYPE_PREFIX, 6855) +HANDLE_BAT(APINT_TYPE_PREFIX, 6856) +HANDLE_BAT(APINT_TYPE_PREFIX, 6857) +HANDLE_BAT(APINT_TYPE_PREFIX, 6858) +HANDLE_BAT(APINT_TYPE_PREFIX, 6859) +HANDLE_BAT(APINT_TYPE_PREFIX, 6860) +HANDLE_BAT(APINT_TYPE_PREFIX, 6861) +HANDLE_BAT(APINT_TYPE_PREFIX, 6862) +HANDLE_BAT(APINT_TYPE_PREFIX, 6863) +HANDLE_BAT(APINT_TYPE_PREFIX, 6864) +HANDLE_BAT(APINT_TYPE_PREFIX, 6865) +HANDLE_BAT(APINT_TYPE_PREFIX, 6866) +HANDLE_BAT(APINT_TYPE_PREFIX, 6867) +HANDLE_BAT(APINT_TYPE_PREFIX, 6868) +HANDLE_BAT(APINT_TYPE_PREFIX, 6869) +HANDLE_BAT(APINT_TYPE_PREFIX, 6870) +HANDLE_BAT(APINT_TYPE_PREFIX, 6871) +HANDLE_BAT(APINT_TYPE_PREFIX, 6872) +HANDLE_BAT(APINT_TYPE_PREFIX, 6873) +HANDLE_BAT(APINT_TYPE_PREFIX, 6874) +HANDLE_BAT(APINT_TYPE_PREFIX, 6875) +HANDLE_BAT(APINT_TYPE_PREFIX, 6876) +HANDLE_BAT(APINT_TYPE_PREFIX, 6877) +HANDLE_BAT(APINT_TYPE_PREFIX, 6878) +HANDLE_BAT(APINT_TYPE_PREFIX, 6879) +HANDLE_BAT(APINT_TYPE_PREFIX, 6880) +HANDLE_BAT(APINT_TYPE_PREFIX, 6881) +HANDLE_BAT(APINT_TYPE_PREFIX, 6882) +HANDLE_BAT(APINT_TYPE_PREFIX, 6883) +HANDLE_BAT(APINT_TYPE_PREFIX, 6884) +HANDLE_BAT(APINT_TYPE_PREFIX, 6885) +HANDLE_BAT(APINT_TYPE_PREFIX, 6886) +HANDLE_BAT(APINT_TYPE_PREFIX, 6887) +HANDLE_BAT(APINT_TYPE_PREFIX, 6888) +HANDLE_BAT(APINT_TYPE_PREFIX, 6889) +HANDLE_BAT(APINT_TYPE_PREFIX, 6890) +HANDLE_BAT(APINT_TYPE_PREFIX, 6891) +HANDLE_BAT(APINT_TYPE_PREFIX, 6892) +HANDLE_BAT(APINT_TYPE_PREFIX, 6893) +HANDLE_BAT(APINT_TYPE_PREFIX, 6894) +HANDLE_BAT(APINT_TYPE_PREFIX, 6895) +HANDLE_BAT(APINT_TYPE_PREFIX, 6896) +HANDLE_BAT(APINT_TYPE_PREFIX, 6897) +HANDLE_BAT(APINT_TYPE_PREFIX, 6898) +HANDLE_BAT(APINT_TYPE_PREFIX, 6899) +HANDLE_BAT(APINT_TYPE_PREFIX, 6900) +HANDLE_BAT(APINT_TYPE_PREFIX, 6901) +HANDLE_BAT(APINT_TYPE_PREFIX, 6902) +HANDLE_BAT(APINT_TYPE_PREFIX, 6903) +HANDLE_BAT(APINT_TYPE_PREFIX, 6904) +HANDLE_BAT(APINT_TYPE_PREFIX, 6905) +HANDLE_BAT(APINT_TYPE_PREFIX, 6906) +HANDLE_BAT(APINT_TYPE_PREFIX, 6907) +HANDLE_BAT(APINT_TYPE_PREFIX, 6908) +HANDLE_BAT(APINT_TYPE_PREFIX, 6909) +HANDLE_BAT(APINT_TYPE_PREFIX, 6910) +HANDLE_BAT(APINT_TYPE_PREFIX, 6911) +HANDLE_BAT(APINT_TYPE_PREFIX, 6912) +HANDLE_BAT(APINT_TYPE_PREFIX, 6913) +HANDLE_BAT(APINT_TYPE_PREFIX, 6914) +HANDLE_BAT(APINT_TYPE_PREFIX, 6915) +HANDLE_BAT(APINT_TYPE_PREFIX, 6916) +HANDLE_BAT(APINT_TYPE_PREFIX, 6917) +HANDLE_BAT(APINT_TYPE_PREFIX, 6918) +HANDLE_BAT(APINT_TYPE_PREFIX, 6919) +HANDLE_BAT(APINT_TYPE_PREFIX, 6920) +HANDLE_BAT(APINT_TYPE_PREFIX, 6921) +HANDLE_BAT(APINT_TYPE_PREFIX, 6922) +HANDLE_BAT(APINT_TYPE_PREFIX, 6923) +HANDLE_BAT(APINT_TYPE_PREFIX, 6924) +HANDLE_BAT(APINT_TYPE_PREFIX, 6925) +HANDLE_BAT(APINT_TYPE_PREFIX, 6926) +HANDLE_BAT(APINT_TYPE_PREFIX, 6927) +HANDLE_BAT(APINT_TYPE_PREFIX, 6928) +HANDLE_BAT(APINT_TYPE_PREFIX, 6929) +HANDLE_BAT(APINT_TYPE_PREFIX, 6930) +HANDLE_BAT(APINT_TYPE_PREFIX, 6931) +HANDLE_BAT(APINT_TYPE_PREFIX, 6932) +HANDLE_BAT(APINT_TYPE_PREFIX, 6933) +HANDLE_BAT(APINT_TYPE_PREFIX, 6934) +HANDLE_BAT(APINT_TYPE_PREFIX, 6935) +HANDLE_BAT(APINT_TYPE_PREFIX, 6936) +HANDLE_BAT(APINT_TYPE_PREFIX, 6937) +HANDLE_BAT(APINT_TYPE_PREFIX, 6938) +HANDLE_BAT(APINT_TYPE_PREFIX, 6939) +HANDLE_BAT(APINT_TYPE_PREFIX, 6940) +HANDLE_BAT(APINT_TYPE_PREFIX, 6941) +HANDLE_BAT(APINT_TYPE_PREFIX, 6942) +HANDLE_BAT(APINT_TYPE_PREFIX, 6943) +HANDLE_BAT(APINT_TYPE_PREFIX, 6944) +HANDLE_BAT(APINT_TYPE_PREFIX, 6945) +HANDLE_BAT(APINT_TYPE_PREFIX, 6946) +HANDLE_BAT(APINT_TYPE_PREFIX, 6947) +HANDLE_BAT(APINT_TYPE_PREFIX, 6948) +HANDLE_BAT(APINT_TYPE_PREFIX, 6949) +HANDLE_BAT(APINT_TYPE_PREFIX, 6950) +HANDLE_BAT(APINT_TYPE_PREFIX, 6951) +HANDLE_BAT(APINT_TYPE_PREFIX, 6952) +HANDLE_BAT(APINT_TYPE_PREFIX, 6953) +HANDLE_BAT(APINT_TYPE_PREFIX, 6954) +HANDLE_BAT(APINT_TYPE_PREFIX, 6955) +HANDLE_BAT(APINT_TYPE_PREFIX, 6956) +HANDLE_BAT(APINT_TYPE_PREFIX, 6957) +HANDLE_BAT(APINT_TYPE_PREFIX, 6958) +HANDLE_BAT(APINT_TYPE_PREFIX, 6959) +HANDLE_BAT(APINT_TYPE_PREFIX, 6960) +HANDLE_BAT(APINT_TYPE_PREFIX, 6961) +HANDLE_BAT(APINT_TYPE_PREFIX, 6962) +HANDLE_BAT(APINT_TYPE_PREFIX, 6963) +HANDLE_BAT(APINT_TYPE_PREFIX, 6964) +HANDLE_BAT(APINT_TYPE_PREFIX, 6965) +HANDLE_BAT(APINT_TYPE_PREFIX, 6966) +HANDLE_BAT(APINT_TYPE_PREFIX, 6967) +HANDLE_BAT(APINT_TYPE_PREFIX, 6968) +HANDLE_BAT(APINT_TYPE_PREFIX, 6969) +HANDLE_BAT(APINT_TYPE_PREFIX, 6970) +HANDLE_BAT(APINT_TYPE_PREFIX, 6971) +HANDLE_BAT(APINT_TYPE_PREFIX, 6972) +HANDLE_BAT(APINT_TYPE_PREFIX, 6973) +HANDLE_BAT(APINT_TYPE_PREFIX, 6974) +HANDLE_BAT(APINT_TYPE_PREFIX, 6975) +HANDLE_BAT(APINT_TYPE_PREFIX, 6976) +HANDLE_BAT(APINT_TYPE_PREFIX, 6977) +HANDLE_BAT(APINT_TYPE_PREFIX, 6978) +HANDLE_BAT(APINT_TYPE_PREFIX, 6979) +HANDLE_BAT(APINT_TYPE_PREFIX, 6980) +HANDLE_BAT(APINT_TYPE_PREFIX, 6981) +HANDLE_BAT(APINT_TYPE_PREFIX, 6982) +HANDLE_BAT(APINT_TYPE_PREFIX, 6983) +HANDLE_BAT(APINT_TYPE_PREFIX, 6984) +HANDLE_BAT(APINT_TYPE_PREFIX, 6985) +HANDLE_BAT(APINT_TYPE_PREFIX, 6986) +HANDLE_BAT(APINT_TYPE_PREFIX, 6987) +HANDLE_BAT(APINT_TYPE_PREFIX, 6988) +HANDLE_BAT(APINT_TYPE_PREFIX, 6989) +HANDLE_BAT(APINT_TYPE_PREFIX, 6990) +HANDLE_BAT(APINT_TYPE_PREFIX, 6991) +HANDLE_BAT(APINT_TYPE_PREFIX, 6992) +HANDLE_BAT(APINT_TYPE_PREFIX, 6993) +HANDLE_BAT(APINT_TYPE_PREFIX, 6994) +HANDLE_BAT(APINT_TYPE_PREFIX, 6995) +HANDLE_BAT(APINT_TYPE_PREFIX, 6996) +HANDLE_BAT(APINT_TYPE_PREFIX, 6997) +HANDLE_BAT(APINT_TYPE_PREFIX, 6998) +HANDLE_BAT(APINT_TYPE_PREFIX, 6999) +HANDLE_BAT(APINT_TYPE_PREFIX, 7000) +HANDLE_BAT(APINT_TYPE_PREFIX, 7001) +HANDLE_BAT(APINT_TYPE_PREFIX, 7002) +HANDLE_BAT(APINT_TYPE_PREFIX, 7003) +HANDLE_BAT(APINT_TYPE_PREFIX, 7004) +HANDLE_BAT(APINT_TYPE_PREFIX, 7005) +HANDLE_BAT(APINT_TYPE_PREFIX, 7006) +HANDLE_BAT(APINT_TYPE_PREFIX, 7007) +HANDLE_BAT(APINT_TYPE_PREFIX, 7008) +HANDLE_BAT(APINT_TYPE_PREFIX, 7009) +HANDLE_BAT(APINT_TYPE_PREFIX, 7010) +HANDLE_BAT(APINT_TYPE_PREFIX, 7011) +HANDLE_BAT(APINT_TYPE_PREFIX, 7012) +HANDLE_BAT(APINT_TYPE_PREFIX, 7013) +HANDLE_BAT(APINT_TYPE_PREFIX, 7014) +HANDLE_BAT(APINT_TYPE_PREFIX, 7015) +HANDLE_BAT(APINT_TYPE_PREFIX, 7016) +HANDLE_BAT(APINT_TYPE_PREFIX, 7017) +HANDLE_BAT(APINT_TYPE_PREFIX, 7018) +HANDLE_BAT(APINT_TYPE_PREFIX, 7019) +HANDLE_BAT(APINT_TYPE_PREFIX, 7020) +HANDLE_BAT(APINT_TYPE_PREFIX, 7021) +HANDLE_BAT(APINT_TYPE_PREFIX, 7022) +HANDLE_BAT(APINT_TYPE_PREFIX, 7023) +HANDLE_BAT(APINT_TYPE_PREFIX, 7024) +HANDLE_BAT(APINT_TYPE_PREFIX, 7025) +HANDLE_BAT(APINT_TYPE_PREFIX, 7026) +HANDLE_BAT(APINT_TYPE_PREFIX, 7027) +HANDLE_BAT(APINT_TYPE_PREFIX, 7028) +HANDLE_BAT(APINT_TYPE_PREFIX, 7029) +HANDLE_BAT(APINT_TYPE_PREFIX, 7030) +HANDLE_BAT(APINT_TYPE_PREFIX, 7031) +HANDLE_BAT(APINT_TYPE_PREFIX, 7032) +HANDLE_BAT(APINT_TYPE_PREFIX, 7033) +HANDLE_BAT(APINT_TYPE_PREFIX, 7034) +HANDLE_BAT(APINT_TYPE_PREFIX, 7035) +HANDLE_BAT(APINT_TYPE_PREFIX, 7036) +HANDLE_BAT(APINT_TYPE_PREFIX, 7037) +HANDLE_BAT(APINT_TYPE_PREFIX, 7038) +HANDLE_BAT(APINT_TYPE_PREFIX, 7039) +HANDLE_BAT(APINT_TYPE_PREFIX, 7040) +HANDLE_BAT(APINT_TYPE_PREFIX, 7041) +HANDLE_BAT(APINT_TYPE_PREFIX, 7042) +HANDLE_BAT(APINT_TYPE_PREFIX, 7043) +HANDLE_BAT(APINT_TYPE_PREFIX, 7044) +HANDLE_BAT(APINT_TYPE_PREFIX, 7045) +HANDLE_BAT(APINT_TYPE_PREFIX, 7046) +HANDLE_BAT(APINT_TYPE_PREFIX, 7047) +HANDLE_BAT(APINT_TYPE_PREFIX, 7048) +HANDLE_BAT(APINT_TYPE_PREFIX, 7049) +HANDLE_BAT(APINT_TYPE_PREFIX, 7050) +HANDLE_BAT(APINT_TYPE_PREFIX, 7051) +HANDLE_BAT(APINT_TYPE_PREFIX, 7052) +HANDLE_BAT(APINT_TYPE_PREFIX, 7053) +HANDLE_BAT(APINT_TYPE_PREFIX, 7054) +HANDLE_BAT(APINT_TYPE_PREFIX, 7055) +HANDLE_BAT(APINT_TYPE_PREFIX, 7056) +HANDLE_BAT(APINT_TYPE_PREFIX, 7057) +HANDLE_BAT(APINT_TYPE_PREFIX, 7058) +HANDLE_BAT(APINT_TYPE_PREFIX, 7059) +HANDLE_BAT(APINT_TYPE_PREFIX, 7060) +HANDLE_BAT(APINT_TYPE_PREFIX, 7061) +HANDLE_BAT(APINT_TYPE_PREFIX, 7062) +HANDLE_BAT(APINT_TYPE_PREFIX, 7063) +HANDLE_BAT(APINT_TYPE_PREFIX, 7064) +HANDLE_BAT(APINT_TYPE_PREFIX, 7065) +HANDLE_BAT(APINT_TYPE_PREFIX, 7066) +HANDLE_BAT(APINT_TYPE_PREFIX, 7067) +HANDLE_BAT(APINT_TYPE_PREFIX, 7068) +HANDLE_BAT(APINT_TYPE_PREFIX, 7069) +HANDLE_BAT(APINT_TYPE_PREFIX, 7070) +HANDLE_BAT(APINT_TYPE_PREFIX, 7071) +HANDLE_BAT(APINT_TYPE_PREFIX, 7072) +HANDLE_BAT(APINT_TYPE_PREFIX, 7073) +HANDLE_BAT(APINT_TYPE_PREFIX, 7074) +HANDLE_BAT(APINT_TYPE_PREFIX, 7075) +HANDLE_BAT(APINT_TYPE_PREFIX, 7076) +HANDLE_BAT(APINT_TYPE_PREFIX, 7077) +HANDLE_BAT(APINT_TYPE_PREFIX, 7078) +HANDLE_BAT(APINT_TYPE_PREFIX, 7079) +HANDLE_BAT(APINT_TYPE_PREFIX, 7080) +HANDLE_BAT(APINT_TYPE_PREFIX, 7081) +HANDLE_BAT(APINT_TYPE_PREFIX, 7082) +HANDLE_BAT(APINT_TYPE_PREFIX, 7083) +HANDLE_BAT(APINT_TYPE_PREFIX, 7084) +HANDLE_BAT(APINT_TYPE_PREFIX, 7085) +HANDLE_BAT(APINT_TYPE_PREFIX, 7086) +HANDLE_BAT(APINT_TYPE_PREFIX, 7087) +HANDLE_BAT(APINT_TYPE_PREFIX, 7088) +HANDLE_BAT(APINT_TYPE_PREFIX, 7089) +HANDLE_BAT(APINT_TYPE_PREFIX, 7090) +HANDLE_BAT(APINT_TYPE_PREFIX, 7091) +HANDLE_BAT(APINT_TYPE_PREFIX, 7092) +HANDLE_BAT(APINT_TYPE_PREFIX, 7093) +HANDLE_BAT(APINT_TYPE_PREFIX, 7094) +HANDLE_BAT(APINT_TYPE_PREFIX, 7095) +HANDLE_BAT(APINT_TYPE_PREFIX, 7096) +HANDLE_BAT(APINT_TYPE_PREFIX, 7097) +HANDLE_BAT(APINT_TYPE_PREFIX, 7098) +HANDLE_BAT(APINT_TYPE_PREFIX, 7099) +HANDLE_BAT(APINT_TYPE_PREFIX, 7100) +HANDLE_BAT(APINT_TYPE_PREFIX, 7101) +HANDLE_BAT(APINT_TYPE_PREFIX, 7102) +HANDLE_BAT(APINT_TYPE_PREFIX, 7103) +HANDLE_BAT(APINT_TYPE_PREFIX, 7104) +HANDLE_BAT(APINT_TYPE_PREFIX, 7105) +HANDLE_BAT(APINT_TYPE_PREFIX, 7106) +HANDLE_BAT(APINT_TYPE_PREFIX, 7107) +HANDLE_BAT(APINT_TYPE_PREFIX, 7108) +HANDLE_BAT(APINT_TYPE_PREFIX, 7109) +HANDLE_BAT(APINT_TYPE_PREFIX, 7110) +HANDLE_BAT(APINT_TYPE_PREFIX, 7111) +HANDLE_BAT(APINT_TYPE_PREFIX, 7112) +HANDLE_BAT(APINT_TYPE_PREFIX, 7113) +HANDLE_BAT(APINT_TYPE_PREFIX, 7114) +HANDLE_BAT(APINT_TYPE_PREFIX, 7115) +HANDLE_BAT(APINT_TYPE_PREFIX, 7116) +HANDLE_BAT(APINT_TYPE_PREFIX, 7117) +HANDLE_BAT(APINT_TYPE_PREFIX, 7118) +HANDLE_BAT(APINT_TYPE_PREFIX, 7119) +HANDLE_BAT(APINT_TYPE_PREFIX, 7120) +HANDLE_BAT(APINT_TYPE_PREFIX, 7121) +HANDLE_BAT(APINT_TYPE_PREFIX, 7122) +HANDLE_BAT(APINT_TYPE_PREFIX, 7123) +HANDLE_BAT(APINT_TYPE_PREFIX, 7124) +HANDLE_BAT(APINT_TYPE_PREFIX, 7125) +HANDLE_BAT(APINT_TYPE_PREFIX, 7126) +HANDLE_BAT(APINT_TYPE_PREFIX, 7127) +HANDLE_BAT(APINT_TYPE_PREFIX, 7128) +HANDLE_BAT(APINT_TYPE_PREFIX, 7129) +HANDLE_BAT(APINT_TYPE_PREFIX, 7130) +HANDLE_BAT(APINT_TYPE_PREFIX, 7131) +HANDLE_BAT(APINT_TYPE_PREFIX, 7132) +HANDLE_BAT(APINT_TYPE_PREFIX, 7133) +HANDLE_BAT(APINT_TYPE_PREFIX, 7134) +HANDLE_BAT(APINT_TYPE_PREFIX, 7135) +HANDLE_BAT(APINT_TYPE_PREFIX, 7136) +HANDLE_BAT(APINT_TYPE_PREFIX, 7137) +HANDLE_BAT(APINT_TYPE_PREFIX, 7138) +HANDLE_BAT(APINT_TYPE_PREFIX, 7139) +HANDLE_BAT(APINT_TYPE_PREFIX, 7140) +HANDLE_BAT(APINT_TYPE_PREFIX, 7141) +HANDLE_BAT(APINT_TYPE_PREFIX, 7142) +HANDLE_BAT(APINT_TYPE_PREFIX, 7143) +HANDLE_BAT(APINT_TYPE_PREFIX, 7144) +HANDLE_BAT(APINT_TYPE_PREFIX, 7145) +HANDLE_BAT(APINT_TYPE_PREFIX, 7146) +HANDLE_BAT(APINT_TYPE_PREFIX, 7147) +HANDLE_BAT(APINT_TYPE_PREFIX, 7148) +HANDLE_BAT(APINT_TYPE_PREFIX, 7149) +HANDLE_BAT(APINT_TYPE_PREFIX, 7150) +HANDLE_BAT(APINT_TYPE_PREFIX, 7151) +HANDLE_BAT(APINT_TYPE_PREFIX, 7152) +HANDLE_BAT(APINT_TYPE_PREFIX, 7153) +HANDLE_BAT(APINT_TYPE_PREFIX, 7154) +HANDLE_BAT(APINT_TYPE_PREFIX, 7155) +HANDLE_BAT(APINT_TYPE_PREFIX, 7156) +HANDLE_BAT(APINT_TYPE_PREFIX, 7157) +HANDLE_BAT(APINT_TYPE_PREFIX, 7158) +HANDLE_BAT(APINT_TYPE_PREFIX, 7159) +HANDLE_BAT(APINT_TYPE_PREFIX, 7160) +HANDLE_BAT(APINT_TYPE_PREFIX, 7161) +HANDLE_BAT(APINT_TYPE_PREFIX, 7162) +HANDLE_BAT(APINT_TYPE_PREFIX, 7163) +HANDLE_BAT(APINT_TYPE_PREFIX, 7164) +HANDLE_BAT(APINT_TYPE_PREFIX, 7165) +HANDLE_BAT(APINT_TYPE_PREFIX, 7166) +HANDLE_BAT(APINT_TYPE_PREFIX, 7167) +HANDLE_BAT(APINT_TYPE_PREFIX, 7168) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 7 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 7169) +HANDLE_BAT(, 7170) +HANDLE_BAT(, 7171) +HANDLE_BAT(, 7172) +HANDLE_BAT(, 7173) +HANDLE_BAT(, 7174) +HANDLE_BAT(, 7175) +HANDLE_BAT(, 7176) +HANDLE_BAT(, 7177) +HANDLE_BAT(, 7178) +HANDLE_BAT(, 7179) +HANDLE_BAT(, 7180) +HANDLE_BAT(, 7181) +HANDLE_BAT(, 7182) +HANDLE_BAT(, 7183) +HANDLE_BAT(, 7184) +HANDLE_BAT(, 7185) +HANDLE_BAT(, 7186) +HANDLE_BAT(, 7187) +HANDLE_BAT(, 7188) +HANDLE_BAT(, 7189) +HANDLE_BAT(, 7190) +HANDLE_BAT(, 7191) +HANDLE_BAT(, 7192) +HANDLE_BAT(, 7193) +HANDLE_BAT(, 7194) +HANDLE_BAT(, 7195) +HANDLE_BAT(, 7196) +HANDLE_BAT(, 7197) +HANDLE_BAT(, 7198) +HANDLE_BAT(, 7199) +HANDLE_BAT(, 7200) +HANDLE_BAT(, 7201) +HANDLE_BAT(, 7202) +HANDLE_BAT(, 7203) +HANDLE_BAT(, 7204) +HANDLE_BAT(, 7205) +HANDLE_BAT(, 7206) +HANDLE_BAT(, 7207) +HANDLE_BAT(, 7208) +HANDLE_BAT(, 7209) +HANDLE_BAT(, 7210) +HANDLE_BAT(, 7211) +HANDLE_BAT(, 7212) +HANDLE_BAT(, 7213) +HANDLE_BAT(, 7214) +HANDLE_BAT(, 7215) +HANDLE_BAT(, 7216) +HANDLE_BAT(, 7217) +HANDLE_BAT(, 7218) +HANDLE_BAT(, 7219) +HANDLE_BAT(, 7220) +HANDLE_BAT(, 7221) +HANDLE_BAT(, 7222) +HANDLE_BAT(, 7223) +HANDLE_BAT(, 7224) +HANDLE_BAT(, 7225) +HANDLE_BAT(, 7226) +HANDLE_BAT(, 7227) +HANDLE_BAT(, 7228) +HANDLE_BAT(, 7229) +HANDLE_BAT(, 7230) +HANDLE_BAT(, 7231) +HANDLE_BAT(, 7232) +HANDLE_BAT(, 7233) +HANDLE_BAT(, 7234) +HANDLE_BAT(, 7235) +HANDLE_BAT(, 7236) +HANDLE_BAT(, 7237) +HANDLE_BAT(, 7238) +HANDLE_BAT(, 7239) +HANDLE_BAT(, 7240) +HANDLE_BAT(, 7241) +HANDLE_BAT(, 7242) +HANDLE_BAT(, 7243) +HANDLE_BAT(, 7244) +HANDLE_BAT(, 7245) +HANDLE_BAT(, 7246) +HANDLE_BAT(, 7247) +HANDLE_BAT(, 7248) +HANDLE_BAT(, 7249) +HANDLE_BAT(, 7250) +HANDLE_BAT(, 7251) +HANDLE_BAT(, 7252) +HANDLE_BAT(, 7253) +HANDLE_BAT(, 7254) +HANDLE_BAT(, 7255) +HANDLE_BAT(, 7256) +HANDLE_BAT(, 7257) +HANDLE_BAT(, 7258) +HANDLE_BAT(, 7259) +HANDLE_BAT(, 7260) +HANDLE_BAT(, 7261) +HANDLE_BAT(, 7262) +HANDLE_BAT(, 7263) +HANDLE_BAT(, 7264) +HANDLE_BAT(, 7265) +HANDLE_BAT(, 7266) +HANDLE_BAT(, 7267) +HANDLE_BAT(, 7268) +HANDLE_BAT(, 7269) +HANDLE_BAT(, 7270) +HANDLE_BAT(, 7271) +HANDLE_BAT(, 7272) +HANDLE_BAT(, 7273) +HANDLE_BAT(, 7274) +HANDLE_BAT(, 7275) +HANDLE_BAT(, 7276) +HANDLE_BAT(, 7277) +HANDLE_BAT(, 7278) +HANDLE_BAT(, 7279) +HANDLE_BAT(, 7280) +HANDLE_BAT(, 7281) +HANDLE_BAT(, 7282) +HANDLE_BAT(, 7283) +HANDLE_BAT(, 7284) +HANDLE_BAT(, 7285) +HANDLE_BAT(, 7286) +HANDLE_BAT(, 7287) +HANDLE_BAT(, 7288) +HANDLE_BAT(, 7289) +HANDLE_BAT(, 7290) +HANDLE_BAT(, 7291) +HANDLE_BAT(, 7292) +HANDLE_BAT(, 7293) +HANDLE_BAT(, 7294) +HANDLE_BAT(, 7295) +HANDLE_BAT(, 7296) +HANDLE_BAT(, 7297) +HANDLE_BAT(, 7298) +HANDLE_BAT(, 7299) +HANDLE_BAT(, 7300) +HANDLE_BAT(, 7301) +HANDLE_BAT(, 7302) +HANDLE_BAT(, 7303) +HANDLE_BAT(, 7304) +HANDLE_BAT(, 7305) +HANDLE_BAT(, 7306) +HANDLE_BAT(, 7307) +HANDLE_BAT(, 7308) +HANDLE_BAT(, 7309) +HANDLE_BAT(, 7310) +HANDLE_BAT(, 7311) +HANDLE_BAT(, 7312) +HANDLE_BAT(, 7313) +HANDLE_BAT(, 7314) +HANDLE_BAT(, 7315) +HANDLE_BAT(, 7316) +HANDLE_BAT(, 7317) +HANDLE_BAT(, 7318) +HANDLE_BAT(, 7319) +HANDLE_BAT(, 7320) +HANDLE_BAT(, 7321) +HANDLE_BAT(, 7322) +HANDLE_BAT(, 7323) +HANDLE_BAT(, 7324) +HANDLE_BAT(, 7325) +HANDLE_BAT(, 7326) +HANDLE_BAT(, 7327) +HANDLE_BAT(, 7328) +HANDLE_BAT(, 7329) +HANDLE_BAT(, 7330) +HANDLE_BAT(, 7331) +HANDLE_BAT(, 7332) +HANDLE_BAT(, 7333) +HANDLE_BAT(, 7334) +HANDLE_BAT(, 7335) +HANDLE_BAT(, 7336) +HANDLE_BAT(, 7337) +HANDLE_BAT(, 7338) +HANDLE_BAT(, 7339) +HANDLE_BAT(, 7340) +HANDLE_BAT(, 7341) +HANDLE_BAT(, 7342) +HANDLE_BAT(, 7343) +HANDLE_BAT(, 7344) +HANDLE_BAT(, 7345) +HANDLE_BAT(, 7346) +HANDLE_BAT(, 7347) +HANDLE_BAT(, 7348) +HANDLE_BAT(, 7349) +HANDLE_BAT(, 7350) +HANDLE_BAT(, 7351) +HANDLE_BAT(, 7352) +HANDLE_BAT(, 7353) +HANDLE_BAT(, 7354) +HANDLE_BAT(, 7355) +HANDLE_BAT(, 7356) +HANDLE_BAT(, 7357) +HANDLE_BAT(, 7358) +HANDLE_BAT(, 7359) +HANDLE_BAT(, 7360) +HANDLE_BAT(, 7361) +HANDLE_BAT(, 7362) +HANDLE_BAT(, 7363) +HANDLE_BAT(, 7364) +HANDLE_BAT(, 7365) +HANDLE_BAT(, 7366) +HANDLE_BAT(, 7367) +HANDLE_BAT(, 7368) +HANDLE_BAT(, 7369) +HANDLE_BAT(, 7370) +HANDLE_BAT(, 7371) +HANDLE_BAT(, 7372) +HANDLE_BAT(, 7373) +HANDLE_BAT(, 7374) +HANDLE_BAT(, 7375) +HANDLE_BAT(, 7376) +HANDLE_BAT(, 7377) +HANDLE_BAT(, 7378) +HANDLE_BAT(, 7379) +HANDLE_BAT(, 7380) +HANDLE_BAT(, 7381) +HANDLE_BAT(, 7382) +HANDLE_BAT(, 7383) +HANDLE_BAT(, 7384) +HANDLE_BAT(, 7385) +HANDLE_BAT(, 7386) +HANDLE_BAT(, 7387) +HANDLE_BAT(, 7388) +HANDLE_BAT(, 7389) +HANDLE_BAT(, 7390) +HANDLE_BAT(, 7391) +HANDLE_BAT(, 7392) +HANDLE_BAT(, 7393) +HANDLE_BAT(, 7394) +HANDLE_BAT(, 7395) +HANDLE_BAT(, 7396) +HANDLE_BAT(, 7397) +HANDLE_BAT(, 7398) +HANDLE_BAT(, 7399) +HANDLE_BAT(, 7400) +HANDLE_BAT(, 7401) +HANDLE_BAT(, 7402) +HANDLE_BAT(, 7403) +HANDLE_BAT(, 7404) +HANDLE_BAT(, 7405) +HANDLE_BAT(, 7406) +HANDLE_BAT(, 7407) +HANDLE_BAT(, 7408) +HANDLE_BAT(, 7409) +HANDLE_BAT(, 7410) +HANDLE_BAT(, 7411) +HANDLE_BAT(, 7412) +HANDLE_BAT(, 7413) +HANDLE_BAT(, 7414) +HANDLE_BAT(, 7415) +HANDLE_BAT(, 7416) +HANDLE_BAT(, 7417) +HANDLE_BAT(, 7418) +HANDLE_BAT(, 7419) +HANDLE_BAT(, 7420) +HANDLE_BAT(, 7421) +HANDLE_BAT(, 7422) +HANDLE_BAT(, 7423) +HANDLE_BAT(, 7424) +HANDLE_BAT(, 7425) +HANDLE_BAT(, 7426) +HANDLE_BAT(, 7427) +HANDLE_BAT(, 7428) +HANDLE_BAT(, 7429) +HANDLE_BAT(, 7430) +HANDLE_BAT(, 7431) +HANDLE_BAT(, 7432) +HANDLE_BAT(, 7433) +HANDLE_BAT(, 7434) +HANDLE_BAT(, 7435) +HANDLE_BAT(, 7436) +HANDLE_BAT(, 7437) +HANDLE_BAT(, 7438) +HANDLE_BAT(, 7439) +HANDLE_BAT(, 7440) +HANDLE_BAT(, 7441) +HANDLE_BAT(, 7442) +HANDLE_BAT(, 7443) +HANDLE_BAT(, 7444) +HANDLE_BAT(, 7445) +HANDLE_BAT(, 7446) +HANDLE_BAT(, 7447) +HANDLE_BAT(, 7448) +HANDLE_BAT(, 7449) +HANDLE_BAT(, 7450) +HANDLE_BAT(, 7451) +HANDLE_BAT(, 7452) +HANDLE_BAT(, 7453) +HANDLE_BAT(, 7454) +HANDLE_BAT(, 7455) +HANDLE_BAT(, 7456) +HANDLE_BAT(, 7457) +HANDLE_BAT(, 7458) +HANDLE_BAT(, 7459) +HANDLE_BAT(, 7460) +HANDLE_BAT(, 7461) +HANDLE_BAT(, 7462) +HANDLE_BAT(, 7463) +HANDLE_BAT(, 7464) +HANDLE_BAT(, 7465) +HANDLE_BAT(, 7466) +HANDLE_BAT(, 7467) +HANDLE_BAT(, 7468) +HANDLE_BAT(, 7469) +HANDLE_BAT(, 7470) +HANDLE_BAT(, 7471) +HANDLE_BAT(, 7472) +HANDLE_BAT(, 7473) +HANDLE_BAT(, 7474) +HANDLE_BAT(, 7475) +HANDLE_BAT(, 7476) +HANDLE_BAT(, 7477) +HANDLE_BAT(, 7478) +HANDLE_BAT(, 7479) +HANDLE_BAT(, 7480) +HANDLE_BAT(, 7481) +HANDLE_BAT(, 7482) +HANDLE_BAT(, 7483) +HANDLE_BAT(, 7484) +HANDLE_BAT(, 7485) +HANDLE_BAT(, 7486) +HANDLE_BAT(, 7487) +HANDLE_BAT(, 7488) +HANDLE_BAT(, 7489) +HANDLE_BAT(, 7490) +HANDLE_BAT(, 7491) +HANDLE_BAT(, 7492) +HANDLE_BAT(, 7493) +HANDLE_BAT(, 7494) +HANDLE_BAT(, 7495) +HANDLE_BAT(, 7496) +HANDLE_BAT(, 7497) +HANDLE_BAT(, 7498) +HANDLE_BAT(, 7499) +HANDLE_BAT(, 7500) +HANDLE_BAT(, 7501) +HANDLE_BAT(, 7502) +HANDLE_BAT(, 7503) +HANDLE_BAT(, 7504) +HANDLE_BAT(, 7505) +HANDLE_BAT(, 7506) +HANDLE_BAT(, 7507) +HANDLE_BAT(, 7508) +HANDLE_BAT(, 7509) +HANDLE_BAT(, 7510) +HANDLE_BAT(, 7511) +HANDLE_BAT(, 7512) +HANDLE_BAT(, 7513) +HANDLE_BAT(, 7514) +HANDLE_BAT(, 7515) +HANDLE_BAT(, 7516) +HANDLE_BAT(, 7517) +HANDLE_BAT(, 7518) +HANDLE_BAT(, 7519) +HANDLE_BAT(, 7520) +HANDLE_BAT(, 7521) +HANDLE_BAT(, 7522) +HANDLE_BAT(, 7523) +HANDLE_BAT(, 7524) +HANDLE_BAT(, 7525) +HANDLE_BAT(, 7526) +HANDLE_BAT(, 7527) +HANDLE_BAT(, 7528) +HANDLE_BAT(, 7529) +HANDLE_BAT(, 7530) +HANDLE_BAT(, 7531) +HANDLE_BAT(, 7532) +HANDLE_BAT(, 7533) +HANDLE_BAT(, 7534) +HANDLE_BAT(, 7535) +HANDLE_BAT(, 7536) +HANDLE_BAT(, 7537) +HANDLE_BAT(, 7538) +HANDLE_BAT(, 7539) +HANDLE_BAT(, 7540) +HANDLE_BAT(, 7541) +HANDLE_BAT(, 7542) +HANDLE_BAT(, 7543) +HANDLE_BAT(, 7544) +HANDLE_BAT(, 7545) +HANDLE_BAT(, 7546) +HANDLE_BAT(, 7547) +HANDLE_BAT(, 7548) +HANDLE_BAT(, 7549) +HANDLE_BAT(, 7550) +HANDLE_BAT(, 7551) +HANDLE_BAT(, 7552) +HANDLE_BAT(, 7553) +HANDLE_BAT(, 7554) +HANDLE_BAT(, 7555) +HANDLE_BAT(, 7556) +HANDLE_BAT(, 7557) +HANDLE_BAT(, 7558) +HANDLE_BAT(, 7559) +HANDLE_BAT(, 7560) +HANDLE_BAT(, 7561) +HANDLE_BAT(, 7562) +HANDLE_BAT(, 7563) +HANDLE_BAT(, 7564) +HANDLE_BAT(, 7565) +HANDLE_BAT(, 7566) +HANDLE_BAT(, 7567) +HANDLE_BAT(, 7568) +HANDLE_BAT(, 7569) +HANDLE_BAT(, 7570) +HANDLE_BAT(, 7571) +HANDLE_BAT(, 7572) +HANDLE_BAT(, 7573) +HANDLE_BAT(, 7574) +HANDLE_BAT(, 7575) +HANDLE_BAT(, 7576) +HANDLE_BAT(, 7577) +HANDLE_BAT(, 7578) +HANDLE_BAT(, 7579) +HANDLE_BAT(, 7580) +HANDLE_BAT(, 7581) +HANDLE_BAT(, 7582) +HANDLE_BAT(, 7583) +HANDLE_BAT(, 7584) +HANDLE_BAT(, 7585) +HANDLE_BAT(, 7586) +HANDLE_BAT(, 7587) +HANDLE_BAT(, 7588) +HANDLE_BAT(, 7589) +HANDLE_BAT(, 7590) +HANDLE_BAT(, 7591) +HANDLE_BAT(, 7592) +HANDLE_BAT(, 7593) +HANDLE_BAT(, 7594) +HANDLE_BAT(, 7595) +HANDLE_BAT(, 7596) +HANDLE_BAT(, 7597) +HANDLE_BAT(, 7598) +HANDLE_BAT(, 7599) +HANDLE_BAT(, 7600) +HANDLE_BAT(, 7601) +HANDLE_BAT(, 7602) +HANDLE_BAT(, 7603) +HANDLE_BAT(, 7604) +HANDLE_BAT(, 7605) +HANDLE_BAT(, 7606) +HANDLE_BAT(, 7607) +HANDLE_BAT(, 7608) +HANDLE_BAT(, 7609) +HANDLE_BAT(, 7610) +HANDLE_BAT(, 7611) +HANDLE_BAT(, 7612) +HANDLE_BAT(, 7613) +HANDLE_BAT(, 7614) +HANDLE_BAT(, 7615) +HANDLE_BAT(, 7616) +HANDLE_BAT(, 7617) +HANDLE_BAT(, 7618) +HANDLE_BAT(, 7619) +HANDLE_BAT(, 7620) +HANDLE_BAT(, 7621) +HANDLE_BAT(, 7622) +HANDLE_BAT(, 7623) +HANDLE_BAT(, 7624) +HANDLE_BAT(, 7625) +HANDLE_BAT(, 7626) +HANDLE_BAT(, 7627) +HANDLE_BAT(, 7628) +HANDLE_BAT(, 7629) +HANDLE_BAT(, 7630) +HANDLE_BAT(, 7631) +HANDLE_BAT(, 7632) +HANDLE_BAT(, 7633) +HANDLE_BAT(, 7634) +HANDLE_BAT(, 7635) +HANDLE_BAT(, 7636) +HANDLE_BAT(, 7637) +HANDLE_BAT(, 7638) +HANDLE_BAT(, 7639) +HANDLE_BAT(, 7640) +HANDLE_BAT(, 7641) +HANDLE_BAT(, 7642) +HANDLE_BAT(, 7643) +HANDLE_BAT(, 7644) +HANDLE_BAT(, 7645) +HANDLE_BAT(, 7646) +HANDLE_BAT(, 7647) +HANDLE_BAT(, 7648) +HANDLE_BAT(, 7649) +HANDLE_BAT(, 7650) +HANDLE_BAT(, 7651) +HANDLE_BAT(, 7652) +HANDLE_BAT(, 7653) +HANDLE_BAT(, 7654) +HANDLE_BAT(, 7655) +HANDLE_BAT(, 7656) +HANDLE_BAT(, 7657) +HANDLE_BAT(, 7658) +HANDLE_BAT(, 7659) +HANDLE_BAT(, 7660) +HANDLE_BAT(, 7661) +HANDLE_BAT(, 7662) +HANDLE_BAT(, 7663) +HANDLE_BAT(, 7664) +HANDLE_BAT(, 7665) +HANDLE_BAT(, 7666) +HANDLE_BAT(, 7667) +HANDLE_BAT(, 7668) +HANDLE_BAT(, 7669) +HANDLE_BAT(, 7670) +HANDLE_BAT(, 7671) +HANDLE_BAT(, 7672) +HANDLE_BAT(, 7673) +HANDLE_BAT(, 7674) +HANDLE_BAT(, 7675) +HANDLE_BAT(, 7676) +HANDLE_BAT(, 7677) +HANDLE_BAT(, 7678) +HANDLE_BAT(, 7679) +HANDLE_BAT(, 7680) +HANDLE_BAT(, 7681) +HANDLE_BAT(, 7682) +HANDLE_BAT(, 7683) +HANDLE_BAT(, 7684) +HANDLE_BAT(, 7685) +HANDLE_BAT(, 7686) +HANDLE_BAT(, 7687) +HANDLE_BAT(, 7688) +HANDLE_BAT(, 7689) +HANDLE_BAT(, 7690) +HANDLE_BAT(, 7691) +HANDLE_BAT(, 7692) +HANDLE_BAT(, 7693) +HANDLE_BAT(, 7694) +HANDLE_BAT(, 7695) +HANDLE_BAT(, 7696) +HANDLE_BAT(, 7697) +HANDLE_BAT(, 7698) +HANDLE_BAT(, 7699) +HANDLE_BAT(, 7700) +HANDLE_BAT(, 7701) +HANDLE_BAT(, 7702) +HANDLE_BAT(, 7703) +HANDLE_BAT(, 7704) +HANDLE_BAT(, 7705) +HANDLE_BAT(, 7706) +HANDLE_BAT(, 7707) +HANDLE_BAT(, 7708) +HANDLE_BAT(, 7709) +HANDLE_BAT(, 7710) +HANDLE_BAT(, 7711) +HANDLE_BAT(, 7712) +HANDLE_BAT(, 7713) +HANDLE_BAT(, 7714) +HANDLE_BAT(, 7715) +HANDLE_BAT(, 7716) +HANDLE_BAT(, 7717) +HANDLE_BAT(, 7718) +HANDLE_BAT(, 7719) +HANDLE_BAT(, 7720) +HANDLE_BAT(, 7721) +HANDLE_BAT(, 7722) +HANDLE_BAT(, 7723) +HANDLE_BAT(, 7724) +HANDLE_BAT(, 7725) +HANDLE_BAT(, 7726) +HANDLE_BAT(, 7727) +HANDLE_BAT(, 7728) +HANDLE_BAT(, 7729) +HANDLE_BAT(, 7730) +HANDLE_BAT(, 7731) +HANDLE_BAT(, 7732) +HANDLE_BAT(, 7733) +HANDLE_BAT(, 7734) +HANDLE_BAT(, 7735) +HANDLE_BAT(, 7736) +HANDLE_BAT(, 7737) +HANDLE_BAT(, 7738) +HANDLE_BAT(, 7739) +HANDLE_BAT(, 7740) +HANDLE_BAT(, 7741) +HANDLE_BAT(, 7742) +HANDLE_BAT(, 7743) +HANDLE_BAT(, 7744) +HANDLE_BAT(, 7745) +HANDLE_BAT(, 7746) +HANDLE_BAT(, 7747) +HANDLE_BAT(, 7748) +HANDLE_BAT(, 7749) +HANDLE_BAT(, 7750) +HANDLE_BAT(, 7751) +HANDLE_BAT(, 7752) +HANDLE_BAT(, 7753) +HANDLE_BAT(, 7754) +HANDLE_BAT(, 7755) +HANDLE_BAT(, 7756) +HANDLE_BAT(, 7757) +HANDLE_BAT(, 7758) +HANDLE_BAT(, 7759) +HANDLE_BAT(, 7760) +HANDLE_BAT(, 7761) +HANDLE_BAT(, 7762) +HANDLE_BAT(, 7763) +HANDLE_BAT(, 7764) +HANDLE_BAT(, 7765) +HANDLE_BAT(, 7766) +HANDLE_BAT(, 7767) +HANDLE_BAT(, 7768) +HANDLE_BAT(, 7769) +HANDLE_BAT(, 7770) +HANDLE_BAT(, 7771) +HANDLE_BAT(, 7772) +HANDLE_BAT(, 7773) +HANDLE_BAT(, 7774) +HANDLE_BAT(, 7775) +HANDLE_BAT(, 7776) +HANDLE_BAT(, 7777) +HANDLE_BAT(, 7778) +HANDLE_BAT(, 7779) +HANDLE_BAT(, 7780) +HANDLE_BAT(, 7781) +HANDLE_BAT(, 7782) +HANDLE_BAT(, 7783) +HANDLE_BAT(, 7784) +HANDLE_BAT(, 7785) +HANDLE_BAT(, 7786) +HANDLE_BAT(, 7787) +HANDLE_BAT(, 7788) +HANDLE_BAT(, 7789) +HANDLE_BAT(, 7790) +HANDLE_BAT(, 7791) +HANDLE_BAT(, 7792) +HANDLE_BAT(, 7793) +HANDLE_BAT(, 7794) +HANDLE_BAT(, 7795) +HANDLE_BAT(, 7796) +HANDLE_BAT(, 7797) +HANDLE_BAT(, 7798) +HANDLE_BAT(, 7799) +HANDLE_BAT(, 7800) +HANDLE_BAT(, 7801) +HANDLE_BAT(, 7802) +HANDLE_BAT(, 7803) +HANDLE_BAT(, 7804) +HANDLE_BAT(, 7805) +HANDLE_BAT(, 7806) +HANDLE_BAT(, 7807) +HANDLE_BAT(, 7808) +HANDLE_BAT(, 7809) +HANDLE_BAT(, 7810) +HANDLE_BAT(, 7811) +HANDLE_BAT(, 7812) +HANDLE_BAT(, 7813) +HANDLE_BAT(, 7814) +HANDLE_BAT(, 7815) +HANDLE_BAT(, 7816) +HANDLE_BAT(, 7817) +HANDLE_BAT(, 7818) +HANDLE_BAT(, 7819) +HANDLE_BAT(, 7820) +HANDLE_BAT(, 7821) +HANDLE_BAT(, 7822) +HANDLE_BAT(, 7823) +HANDLE_BAT(, 7824) +HANDLE_BAT(, 7825) +HANDLE_BAT(, 7826) +HANDLE_BAT(, 7827) +HANDLE_BAT(, 7828) +HANDLE_BAT(, 7829) +HANDLE_BAT(, 7830) +HANDLE_BAT(, 7831) +HANDLE_BAT(, 7832) +HANDLE_BAT(, 7833) +HANDLE_BAT(, 7834) +HANDLE_BAT(, 7835) +HANDLE_BAT(, 7836) +HANDLE_BAT(, 7837) +HANDLE_BAT(, 7838) +HANDLE_BAT(, 7839) +HANDLE_BAT(, 7840) +HANDLE_BAT(, 7841) +HANDLE_BAT(, 7842) +HANDLE_BAT(, 7843) +HANDLE_BAT(, 7844) +HANDLE_BAT(, 7845) +HANDLE_BAT(, 7846) +HANDLE_BAT(, 7847) +HANDLE_BAT(, 7848) +HANDLE_BAT(, 7849) +HANDLE_BAT(, 7850) +HANDLE_BAT(, 7851) +HANDLE_BAT(, 7852) +HANDLE_BAT(, 7853) +HANDLE_BAT(, 7854) +HANDLE_BAT(, 7855) +HANDLE_BAT(, 7856) +HANDLE_BAT(, 7857) +HANDLE_BAT(, 7858) +HANDLE_BAT(, 7859) +HANDLE_BAT(, 7860) +HANDLE_BAT(, 7861) +HANDLE_BAT(, 7862) +HANDLE_BAT(, 7863) +HANDLE_BAT(, 7864) +HANDLE_BAT(, 7865) +HANDLE_BAT(, 7866) +HANDLE_BAT(, 7867) +HANDLE_BAT(, 7868) +HANDLE_BAT(, 7869) +HANDLE_BAT(, 7870) +HANDLE_BAT(, 7871) +HANDLE_BAT(, 7872) +HANDLE_BAT(, 7873) +HANDLE_BAT(, 7874) +HANDLE_BAT(, 7875) +HANDLE_BAT(, 7876) +HANDLE_BAT(, 7877) +HANDLE_BAT(, 7878) +HANDLE_BAT(, 7879) +HANDLE_BAT(, 7880) +HANDLE_BAT(, 7881) +HANDLE_BAT(, 7882) +HANDLE_BAT(, 7883) +HANDLE_BAT(, 7884) +HANDLE_BAT(, 7885) +HANDLE_BAT(, 7886) +HANDLE_BAT(, 7887) +HANDLE_BAT(, 7888) +HANDLE_BAT(, 7889) +HANDLE_BAT(, 7890) +HANDLE_BAT(, 7891) +HANDLE_BAT(, 7892) +HANDLE_BAT(, 7893) +HANDLE_BAT(, 7894) +HANDLE_BAT(, 7895) +HANDLE_BAT(, 7896) +HANDLE_BAT(, 7897) +HANDLE_BAT(, 7898) +HANDLE_BAT(, 7899) +HANDLE_BAT(, 7900) +HANDLE_BAT(, 7901) +HANDLE_BAT(, 7902) +HANDLE_BAT(, 7903) +HANDLE_BAT(, 7904) +HANDLE_BAT(, 7905) +HANDLE_BAT(, 7906) +HANDLE_BAT(, 7907) +HANDLE_BAT(, 7908) +HANDLE_BAT(, 7909) +HANDLE_BAT(, 7910) +HANDLE_BAT(, 7911) +HANDLE_BAT(, 7912) +HANDLE_BAT(, 7913) +HANDLE_BAT(, 7914) +HANDLE_BAT(, 7915) +HANDLE_BAT(, 7916) +HANDLE_BAT(, 7917) +HANDLE_BAT(, 7918) +HANDLE_BAT(, 7919) +HANDLE_BAT(, 7920) +HANDLE_BAT(, 7921) +HANDLE_BAT(, 7922) +HANDLE_BAT(, 7923) +HANDLE_BAT(, 7924) +HANDLE_BAT(, 7925) +HANDLE_BAT(, 7926) +HANDLE_BAT(, 7927) +HANDLE_BAT(, 7928) +HANDLE_BAT(, 7929) +HANDLE_BAT(, 7930) +HANDLE_BAT(, 7931) +HANDLE_BAT(, 7932) +HANDLE_BAT(, 7933) +HANDLE_BAT(, 7934) +HANDLE_BAT(, 7935) +HANDLE_BAT(, 7936) +HANDLE_BAT(, 7937) +HANDLE_BAT(, 7938) +HANDLE_BAT(, 7939) +HANDLE_BAT(, 7940) +HANDLE_BAT(, 7941) +HANDLE_BAT(, 7942) +HANDLE_BAT(, 7943) +HANDLE_BAT(, 7944) +HANDLE_BAT(, 7945) +HANDLE_BAT(, 7946) +HANDLE_BAT(, 7947) +HANDLE_BAT(, 7948) +HANDLE_BAT(, 7949) +HANDLE_BAT(, 7950) +HANDLE_BAT(, 7951) +HANDLE_BAT(, 7952) +HANDLE_BAT(, 7953) +HANDLE_BAT(, 7954) +HANDLE_BAT(, 7955) +HANDLE_BAT(, 7956) +HANDLE_BAT(, 7957) +HANDLE_BAT(, 7958) +HANDLE_BAT(, 7959) +HANDLE_BAT(, 7960) +HANDLE_BAT(, 7961) +HANDLE_BAT(, 7962) +HANDLE_BAT(, 7963) +HANDLE_BAT(, 7964) +HANDLE_BAT(, 7965) +HANDLE_BAT(, 7966) +HANDLE_BAT(, 7967) +HANDLE_BAT(, 7968) +HANDLE_BAT(, 7969) +HANDLE_BAT(, 7970) +HANDLE_BAT(, 7971) +HANDLE_BAT(, 7972) +HANDLE_BAT(, 7973) +HANDLE_BAT(, 7974) +HANDLE_BAT(, 7975) +HANDLE_BAT(, 7976) +HANDLE_BAT(, 7977) +HANDLE_BAT(, 7978) +HANDLE_BAT(, 7979) +HANDLE_BAT(, 7980) +HANDLE_BAT(, 7981) +HANDLE_BAT(, 7982) +HANDLE_BAT(, 7983) +HANDLE_BAT(, 7984) +HANDLE_BAT(, 7985) +HANDLE_BAT(, 7986) +HANDLE_BAT(, 7987) +HANDLE_BAT(, 7988) +HANDLE_BAT(, 7989) +HANDLE_BAT(, 7990) +HANDLE_BAT(, 7991) +HANDLE_BAT(, 7992) +HANDLE_BAT(, 7993) +HANDLE_BAT(, 7994) +HANDLE_BAT(, 7995) +HANDLE_BAT(, 7996) +HANDLE_BAT(, 7997) +HANDLE_BAT(, 7998) +HANDLE_BAT(, 7999) +HANDLE_BAT(, 8000) +HANDLE_BAT(, 8001) +HANDLE_BAT(, 8002) +HANDLE_BAT(, 8003) +HANDLE_BAT(, 8004) +HANDLE_BAT(, 8005) +HANDLE_BAT(, 8006) +HANDLE_BAT(, 8007) +HANDLE_BAT(, 8008) +HANDLE_BAT(, 8009) +HANDLE_BAT(, 8010) +HANDLE_BAT(, 8011) +HANDLE_BAT(, 8012) +HANDLE_BAT(, 8013) +HANDLE_BAT(, 8014) +HANDLE_BAT(, 8015) +HANDLE_BAT(, 8016) +HANDLE_BAT(, 8017) +HANDLE_BAT(, 8018) +HANDLE_BAT(, 8019) +HANDLE_BAT(, 8020) +HANDLE_BAT(, 8021) +HANDLE_BAT(, 8022) +HANDLE_BAT(, 8023) +HANDLE_BAT(, 8024) +HANDLE_BAT(, 8025) +HANDLE_BAT(, 8026) +HANDLE_BAT(, 8027) +HANDLE_BAT(, 8028) +HANDLE_BAT(, 8029) +HANDLE_BAT(, 8030) +HANDLE_BAT(, 8031) +HANDLE_BAT(, 8032) +HANDLE_BAT(, 8033) +HANDLE_BAT(, 8034) +HANDLE_BAT(, 8035) +HANDLE_BAT(, 8036) +HANDLE_BAT(, 8037) +HANDLE_BAT(, 8038) +HANDLE_BAT(, 8039) +HANDLE_BAT(, 8040) +HANDLE_BAT(, 8041) +HANDLE_BAT(, 8042) +HANDLE_BAT(, 8043) +HANDLE_BAT(, 8044) +HANDLE_BAT(, 8045) +HANDLE_BAT(, 8046) +HANDLE_BAT(, 8047) +HANDLE_BAT(, 8048) +HANDLE_BAT(, 8049) +HANDLE_BAT(, 8050) +HANDLE_BAT(, 8051) +HANDLE_BAT(, 8052) +HANDLE_BAT(, 8053) +HANDLE_BAT(, 8054) +HANDLE_BAT(, 8055) +HANDLE_BAT(, 8056) +HANDLE_BAT(, 8057) +HANDLE_BAT(, 8058) +HANDLE_BAT(, 8059) +HANDLE_BAT(, 8060) +HANDLE_BAT(, 8061) +HANDLE_BAT(, 8062) +HANDLE_BAT(, 8063) +HANDLE_BAT(, 8064) +HANDLE_BAT(, 8065) +HANDLE_BAT(, 8066) +HANDLE_BAT(, 8067) +HANDLE_BAT(, 8068) +HANDLE_BAT(, 8069) +HANDLE_BAT(, 8070) +HANDLE_BAT(, 8071) +HANDLE_BAT(, 8072) +HANDLE_BAT(, 8073) +HANDLE_BAT(, 8074) +HANDLE_BAT(, 8075) +HANDLE_BAT(, 8076) +HANDLE_BAT(, 8077) +HANDLE_BAT(, 8078) +HANDLE_BAT(, 8079) +HANDLE_BAT(, 8080) +HANDLE_BAT(, 8081) +HANDLE_BAT(, 8082) +HANDLE_BAT(, 8083) +HANDLE_BAT(, 8084) +HANDLE_BAT(, 8085) +HANDLE_BAT(, 8086) +HANDLE_BAT(, 8087) +HANDLE_BAT(, 8088) +HANDLE_BAT(, 8089) +HANDLE_BAT(, 8090) +HANDLE_BAT(, 8091) +HANDLE_BAT(, 8092) +HANDLE_BAT(, 8093) +HANDLE_BAT(, 8094) +HANDLE_BAT(, 8095) +HANDLE_BAT(, 8096) +HANDLE_BAT(, 8097) +HANDLE_BAT(, 8098) +HANDLE_BAT(, 8099) +HANDLE_BAT(, 8100) +HANDLE_BAT(, 8101) +HANDLE_BAT(, 8102) +HANDLE_BAT(, 8103) +HANDLE_BAT(, 8104) +HANDLE_BAT(, 8105) +HANDLE_BAT(, 8106) +HANDLE_BAT(, 8107) +HANDLE_BAT(, 8108) +HANDLE_BAT(, 8109) +HANDLE_BAT(, 8110) +HANDLE_BAT(, 8111) +HANDLE_BAT(, 8112) +HANDLE_BAT(, 8113) +HANDLE_BAT(, 8114) +HANDLE_BAT(, 8115) +HANDLE_BAT(, 8116) +HANDLE_BAT(, 8117) +HANDLE_BAT(, 8118) +HANDLE_BAT(, 8119) +HANDLE_BAT(, 8120) +HANDLE_BAT(, 8121) +HANDLE_BAT(, 8122) +HANDLE_BAT(, 8123) +HANDLE_BAT(, 8124) +HANDLE_BAT(, 8125) +HANDLE_BAT(, 8126) +HANDLE_BAT(, 8127) +HANDLE_BAT(, 8128) +HANDLE_BAT(, 8129) +HANDLE_BAT(, 8130) +HANDLE_BAT(, 8131) +HANDLE_BAT(, 8132) +HANDLE_BAT(, 8133) +HANDLE_BAT(, 8134) +HANDLE_BAT(, 8135) +HANDLE_BAT(, 8136) +HANDLE_BAT(, 8137) +HANDLE_BAT(, 8138) +HANDLE_BAT(, 8139) +HANDLE_BAT(, 8140) +HANDLE_BAT(, 8141) +HANDLE_BAT(, 8142) +HANDLE_BAT(, 8143) +HANDLE_BAT(, 8144) +HANDLE_BAT(, 8145) +HANDLE_BAT(, 8146) +HANDLE_BAT(, 8147) +HANDLE_BAT(, 8148) +HANDLE_BAT(, 8149) +HANDLE_BAT(, 8150) +HANDLE_BAT(, 8151) +HANDLE_BAT(, 8152) +HANDLE_BAT(, 8153) +HANDLE_BAT(, 8154) +HANDLE_BAT(, 8155) +HANDLE_BAT(, 8156) +HANDLE_BAT(, 8157) +HANDLE_BAT(, 8158) +HANDLE_BAT(, 8159) +HANDLE_BAT(, 8160) +HANDLE_BAT(, 8161) +HANDLE_BAT(, 8162) +HANDLE_BAT(, 8163) +HANDLE_BAT(, 8164) +HANDLE_BAT(, 8165) +HANDLE_BAT(, 8166) +HANDLE_BAT(, 8167) +HANDLE_BAT(, 8168) +HANDLE_BAT(, 8169) +HANDLE_BAT(, 8170) +HANDLE_BAT(, 8171) +HANDLE_BAT(, 8172) +HANDLE_BAT(, 8173) +HANDLE_BAT(, 8174) +HANDLE_BAT(, 8175) +HANDLE_BAT(, 8176) +HANDLE_BAT(, 8177) +HANDLE_BAT(, 8178) +HANDLE_BAT(, 8179) +HANDLE_BAT(, 8180) +HANDLE_BAT(, 8181) +HANDLE_BAT(, 8182) +HANDLE_BAT(, 8183) +HANDLE_BAT(, 8184) +HANDLE_BAT(, 8185) +HANDLE_BAT(, 8186) +HANDLE_BAT(, 8187) +HANDLE_BAT(, 8188) +HANDLE_BAT(, 8189) +HANDLE_BAT(, 8190) +HANDLE_BAT(, 8191) +HANDLE_BAT(, 8192) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 7169) +HANDLE_BAT(APINT_TYPE_PREFIX, 7170) +HANDLE_BAT(APINT_TYPE_PREFIX, 7171) +HANDLE_BAT(APINT_TYPE_PREFIX, 7172) +HANDLE_BAT(APINT_TYPE_PREFIX, 7173) +HANDLE_BAT(APINT_TYPE_PREFIX, 7174) +HANDLE_BAT(APINT_TYPE_PREFIX, 7175) +HANDLE_BAT(APINT_TYPE_PREFIX, 7176) +HANDLE_BAT(APINT_TYPE_PREFIX, 7177) +HANDLE_BAT(APINT_TYPE_PREFIX, 7178) +HANDLE_BAT(APINT_TYPE_PREFIX, 7179) +HANDLE_BAT(APINT_TYPE_PREFIX, 7180) +HANDLE_BAT(APINT_TYPE_PREFIX, 7181) +HANDLE_BAT(APINT_TYPE_PREFIX, 7182) +HANDLE_BAT(APINT_TYPE_PREFIX, 7183) +HANDLE_BAT(APINT_TYPE_PREFIX, 7184) +HANDLE_BAT(APINT_TYPE_PREFIX, 7185) +HANDLE_BAT(APINT_TYPE_PREFIX, 7186) +HANDLE_BAT(APINT_TYPE_PREFIX, 7187) +HANDLE_BAT(APINT_TYPE_PREFIX, 7188) +HANDLE_BAT(APINT_TYPE_PREFIX, 7189) +HANDLE_BAT(APINT_TYPE_PREFIX, 7190) +HANDLE_BAT(APINT_TYPE_PREFIX, 7191) +HANDLE_BAT(APINT_TYPE_PREFIX, 7192) +HANDLE_BAT(APINT_TYPE_PREFIX, 7193) +HANDLE_BAT(APINT_TYPE_PREFIX, 7194) +HANDLE_BAT(APINT_TYPE_PREFIX, 7195) +HANDLE_BAT(APINT_TYPE_PREFIX, 7196) +HANDLE_BAT(APINT_TYPE_PREFIX, 7197) +HANDLE_BAT(APINT_TYPE_PREFIX, 7198) +HANDLE_BAT(APINT_TYPE_PREFIX, 7199) +HANDLE_BAT(APINT_TYPE_PREFIX, 7200) +HANDLE_BAT(APINT_TYPE_PREFIX, 7201) +HANDLE_BAT(APINT_TYPE_PREFIX, 7202) +HANDLE_BAT(APINT_TYPE_PREFIX, 7203) +HANDLE_BAT(APINT_TYPE_PREFIX, 7204) +HANDLE_BAT(APINT_TYPE_PREFIX, 7205) +HANDLE_BAT(APINT_TYPE_PREFIX, 7206) +HANDLE_BAT(APINT_TYPE_PREFIX, 7207) +HANDLE_BAT(APINT_TYPE_PREFIX, 7208) +HANDLE_BAT(APINT_TYPE_PREFIX, 7209) +HANDLE_BAT(APINT_TYPE_PREFIX, 7210) +HANDLE_BAT(APINT_TYPE_PREFIX, 7211) +HANDLE_BAT(APINT_TYPE_PREFIX, 7212) +HANDLE_BAT(APINT_TYPE_PREFIX, 7213) +HANDLE_BAT(APINT_TYPE_PREFIX, 7214) +HANDLE_BAT(APINT_TYPE_PREFIX, 7215) +HANDLE_BAT(APINT_TYPE_PREFIX, 7216) +HANDLE_BAT(APINT_TYPE_PREFIX, 7217) +HANDLE_BAT(APINT_TYPE_PREFIX, 7218) +HANDLE_BAT(APINT_TYPE_PREFIX, 7219) +HANDLE_BAT(APINT_TYPE_PREFIX, 7220) +HANDLE_BAT(APINT_TYPE_PREFIX, 7221) +HANDLE_BAT(APINT_TYPE_PREFIX, 7222) +HANDLE_BAT(APINT_TYPE_PREFIX, 7223) +HANDLE_BAT(APINT_TYPE_PREFIX, 7224) +HANDLE_BAT(APINT_TYPE_PREFIX, 7225) +HANDLE_BAT(APINT_TYPE_PREFIX, 7226) +HANDLE_BAT(APINT_TYPE_PREFIX, 7227) +HANDLE_BAT(APINT_TYPE_PREFIX, 7228) +HANDLE_BAT(APINT_TYPE_PREFIX, 7229) +HANDLE_BAT(APINT_TYPE_PREFIX, 7230) +HANDLE_BAT(APINT_TYPE_PREFIX, 7231) +HANDLE_BAT(APINT_TYPE_PREFIX, 7232) +HANDLE_BAT(APINT_TYPE_PREFIX, 7233) +HANDLE_BAT(APINT_TYPE_PREFIX, 7234) +HANDLE_BAT(APINT_TYPE_PREFIX, 7235) +HANDLE_BAT(APINT_TYPE_PREFIX, 7236) +HANDLE_BAT(APINT_TYPE_PREFIX, 7237) +HANDLE_BAT(APINT_TYPE_PREFIX, 7238) +HANDLE_BAT(APINT_TYPE_PREFIX, 7239) +HANDLE_BAT(APINT_TYPE_PREFIX, 7240) +HANDLE_BAT(APINT_TYPE_PREFIX, 7241) +HANDLE_BAT(APINT_TYPE_PREFIX, 7242) +HANDLE_BAT(APINT_TYPE_PREFIX, 7243) +HANDLE_BAT(APINT_TYPE_PREFIX, 7244) +HANDLE_BAT(APINT_TYPE_PREFIX, 7245) +HANDLE_BAT(APINT_TYPE_PREFIX, 7246) +HANDLE_BAT(APINT_TYPE_PREFIX, 7247) +HANDLE_BAT(APINT_TYPE_PREFIX, 7248) +HANDLE_BAT(APINT_TYPE_PREFIX, 7249) +HANDLE_BAT(APINT_TYPE_PREFIX, 7250) +HANDLE_BAT(APINT_TYPE_PREFIX, 7251) +HANDLE_BAT(APINT_TYPE_PREFIX, 7252) +HANDLE_BAT(APINT_TYPE_PREFIX, 7253) +HANDLE_BAT(APINT_TYPE_PREFIX, 7254) +HANDLE_BAT(APINT_TYPE_PREFIX, 7255) +HANDLE_BAT(APINT_TYPE_PREFIX, 7256) +HANDLE_BAT(APINT_TYPE_PREFIX, 7257) +HANDLE_BAT(APINT_TYPE_PREFIX, 7258) +HANDLE_BAT(APINT_TYPE_PREFIX, 7259) +HANDLE_BAT(APINT_TYPE_PREFIX, 7260) +HANDLE_BAT(APINT_TYPE_PREFIX, 7261) +HANDLE_BAT(APINT_TYPE_PREFIX, 7262) +HANDLE_BAT(APINT_TYPE_PREFIX, 7263) +HANDLE_BAT(APINT_TYPE_PREFIX, 7264) +HANDLE_BAT(APINT_TYPE_PREFIX, 7265) +HANDLE_BAT(APINT_TYPE_PREFIX, 7266) +HANDLE_BAT(APINT_TYPE_PREFIX, 7267) +HANDLE_BAT(APINT_TYPE_PREFIX, 7268) +HANDLE_BAT(APINT_TYPE_PREFIX, 7269) +HANDLE_BAT(APINT_TYPE_PREFIX, 7270) +HANDLE_BAT(APINT_TYPE_PREFIX, 7271) +HANDLE_BAT(APINT_TYPE_PREFIX, 7272) +HANDLE_BAT(APINT_TYPE_PREFIX, 7273) +HANDLE_BAT(APINT_TYPE_PREFIX, 7274) +HANDLE_BAT(APINT_TYPE_PREFIX, 7275) +HANDLE_BAT(APINT_TYPE_PREFIX, 7276) +HANDLE_BAT(APINT_TYPE_PREFIX, 7277) +HANDLE_BAT(APINT_TYPE_PREFIX, 7278) +HANDLE_BAT(APINT_TYPE_PREFIX, 7279) +HANDLE_BAT(APINT_TYPE_PREFIX, 7280) +HANDLE_BAT(APINT_TYPE_PREFIX, 7281) +HANDLE_BAT(APINT_TYPE_PREFIX, 7282) +HANDLE_BAT(APINT_TYPE_PREFIX, 7283) +HANDLE_BAT(APINT_TYPE_PREFIX, 7284) +HANDLE_BAT(APINT_TYPE_PREFIX, 7285) +HANDLE_BAT(APINT_TYPE_PREFIX, 7286) +HANDLE_BAT(APINT_TYPE_PREFIX, 7287) +HANDLE_BAT(APINT_TYPE_PREFIX, 7288) +HANDLE_BAT(APINT_TYPE_PREFIX, 7289) +HANDLE_BAT(APINT_TYPE_PREFIX, 7290) +HANDLE_BAT(APINT_TYPE_PREFIX, 7291) +HANDLE_BAT(APINT_TYPE_PREFIX, 7292) +HANDLE_BAT(APINT_TYPE_PREFIX, 7293) +HANDLE_BAT(APINT_TYPE_PREFIX, 7294) +HANDLE_BAT(APINT_TYPE_PREFIX, 7295) +HANDLE_BAT(APINT_TYPE_PREFIX, 7296) +HANDLE_BAT(APINT_TYPE_PREFIX, 7297) +HANDLE_BAT(APINT_TYPE_PREFIX, 7298) +HANDLE_BAT(APINT_TYPE_PREFIX, 7299) +HANDLE_BAT(APINT_TYPE_PREFIX, 7300) +HANDLE_BAT(APINT_TYPE_PREFIX, 7301) +HANDLE_BAT(APINT_TYPE_PREFIX, 7302) +HANDLE_BAT(APINT_TYPE_PREFIX, 7303) +HANDLE_BAT(APINT_TYPE_PREFIX, 7304) +HANDLE_BAT(APINT_TYPE_PREFIX, 7305) +HANDLE_BAT(APINT_TYPE_PREFIX, 7306) +HANDLE_BAT(APINT_TYPE_PREFIX, 7307) +HANDLE_BAT(APINT_TYPE_PREFIX, 7308) +HANDLE_BAT(APINT_TYPE_PREFIX, 7309) +HANDLE_BAT(APINT_TYPE_PREFIX, 7310) +HANDLE_BAT(APINT_TYPE_PREFIX, 7311) +HANDLE_BAT(APINT_TYPE_PREFIX, 7312) +HANDLE_BAT(APINT_TYPE_PREFIX, 7313) +HANDLE_BAT(APINT_TYPE_PREFIX, 7314) +HANDLE_BAT(APINT_TYPE_PREFIX, 7315) +HANDLE_BAT(APINT_TYPE_PREFIX, 7316) +HANDLE_BAT(APINT_TYPE_PREFIX, 7317) +HANDLE_BAT(APINT_TYPE_PREFIX, 7318) +HANDLE_BAT(APINT_TYPE_PREFIX, 7319) +HANDLE_BAT(APINT_TYPE_PREFIX, 7320) +HANDLE_BAT(APINT_TYPE_PREFIX, 7321) +HANDLE_BAT(APINT_TYPE_PREFIX, 7322) +HANDLE_BAT(APINT_TYPE_PREFIX, 7323) +HANDLE_BAT(APINT_TYPE_PREFIX, 7324) +HANDLE_BAT(APINT_TYPE_PREFIX, 7325) +HANDLE_BAT(APINT_TYPE_PREFIX, 7326) +HANDLE_BAT(APINT_TYPE_PREFIX, 7327) +HANDLE_BAT(APINT_TYPE_PREFIX, 7328) +HANDLE_BAT(APINT_TYPE_PREFIX, 7329) +HANDLE_BAT(APINT_TYPE_PREFIX, 7330) +HANDLE_BAT(APINT_TYPE_PREFIX, 7331) +HANDLE_BAT(APINT_TYPE_PREFIX, 7332) +HANDLE_BAT(APINT_TYPE_PREFIX, 7333) +HANDLE_BAT(APINT_TYPE_PREFIX, 7334) +HANDLE_BAT(APINT_TYPE_PREFIX, 7335) +HANDLE_BAT(APINT_TYPE_PREFIX, 7336) +HANDLE_BAT(APINT_TYPE_PREFIX, 7337) +HANDLE_BAT(APINT_TYPE_PREFIX, 7338) +HANDLE_BAT(APINT_TYPE_PREFIX, 7339) +HANDLE_BAT(APINT_TYPE_PREFIX, 7340) +HANDLE_BAT(APINT_TYPE_PREFIX, 7341) +HANDLE_BAT(APINT_TYPE_PREFIX, 7342) +HANDLE_BAT(APINT_TYPE_PREFIX, 7343) +HANDLE_BAT(APINT_TYPE_PREFIX, 7344) +HANDLE_BAT(APINT_TYPE_PREFIX, 7345) +HANDLE_BAT(APINT_TYPE_PREFIX, 7346) +HANDLE_BAT(APINT_TYPE_PREFIX, 7347) +HANDLE_BAT(APINT_TYPE_PREFIX, 7348) +HANDLE_BAT(APINT_TYPE_PREFIX, 7349) +HANDLE_BAT(APINT_TYPE_PREFIX, 7350) +HANDLE_BAT(APINT_TYPE_PREFIX, 7351) +HANDLE_BAT(APINT_TYPE_PREFIX, 7352) +HANDLE_BAT(APINT_TYPE_PREFIX, 7353) +HANDLE_BAT(APINT_TYPE_PREFIX, 7354) +HANDLE_BAT(APINT_TYPE_PREFIX, 7355) +HANDLE_BAT(APINT_TYPE_PREFIX, 7356) +HANDLE_BAT(APINT_TYPE_PREFIX, 7357) +HANDLE_BAT(APINT_TYPE_PREFIX, 7358) +HANDLE_BAT(APINT_TYPE_PREFIX, 7359) +HANDLE_BAT(APINT_TYPE_PREFIX, 7360) +HANDLE_BAT(APINT_TYPE_PREFIX, 7361) +HANDLE_BAT(APINT_TYPE_PREFIX, 7362) +HANDLE_BAT(APINT_TYPE_PREFIX, 7363) +HANDLE_BAT(APINT_TYPE_PREFIX, 7364) +HANDLE_BAT(APINT_TYPE_PREFIX, 7365) +HANDLE_BAT(APINT_TYPE_PREFIX, 7366) +HANDLE_BAT(APINT_TYPE_PREFIX, 7367) +HANDLE_BAT(APINT_TYPE_PREFIX, 7368) +HANDLE_BAT(APINT_TYPE_PREFIX, 7369) +HANDLE_BAT(APINT_TYPE_PREFIX, 7370) +HANDLE_BAT(APINT_TYPE_PREFIX, 7371) +HANDLE_BAT(APINT_TYPE_PREFIX, 7372) +HANDLE_BAT(APINT_TYPE_PREFIX, 7373) +HANDLE_BAT(APINT_TYPE_PREFIX, 7374) +HANDLE_BAT(APINT_TYPE_PREFIX, 7375) +HANDLE_BAT(APINT_TYPE_PREFIX, 7376) +HANDLE_BAT(APINT_TYPE_PREFIX, 7377) +HANDLE_BAT(APINT_TYPE_PREFIX, 7378) +HANDLE_BAT(APINT_TYPE_PREFIX, 7379) +HANDLE_BAT(APINT_TYPE_PREFIX, 7380) +HANDLE_BAT(APINT_TYPE_PREFIX, 7381) +HANDLE_BAT(APINT_TYPE_PREFIX, 7382) +HANDLE_BAT(APINT_TYPE_PREFIX, 7383) +HANDLE_BAT(APINT_TYPE_PREFIX, 7384) +HANDLE_BAT(APINT_TYPE_PREFIX, 7385) +HANDLE_BAT(APINT_TYPE_PREFIX, 7386) +HANDLE_BAT(APINT_TYPE_PREFIX, 7387) +HANDLE_BAT(APINT_TYPE_PREFIX, 7388) +HANDLE_BAT(APINT_TYPE_PREFIX, 7389) +HANDLE_BAT(APINT_TYPE_PREFIX, 7390) +HANDLE_BAT(APINT_TYPE_PREFIX, 7391) +HANDLE_BAT(APINT_TYPE_PREFIX, 7392) +HANDLE_BAT(APINT_TYPE_PREFIX, 7393) +HANDLE_BAT(APINT_TYPE_PREFIX, 7394) +HANDLE_BAT(APINT_TYPE_PREFIX, 7395) +HANDLE_BAT(APINT_TYPE_PREFIX, 7396) +HANDLE_BAT(APINT_TYPE_PREFIX, 7397) +HANDLE_BAT(APINT_TYPE_PREFIX, 7398) +HANDLE_BAT(APINT_TYPE_PREFIX, 7399) +HANDLE_BAT(APINT_TYPE_PREFIX, 7400) +HANDLE_BAT(APINT_TYPE_PREFIX, 7401) +HANDLE_BAT(APINT_TYPE_PREFIX, 7402) +HANDLE_BAT(APINT_TYPE_PREFIX, 7403) +HANDLE_BAT(APINT_TYPE_PREFIX, 7404) +HANDLE_BAT(APINT_TYPE_PREFIX, 7405) +HANDLE_BAT(APINT_TYPE_PREFIX, 7406) +HANDLE_BAT(APINT_TYPE_PREFIX, 7407) +HANDLE_BAT(APINT_TYPE_PREFIX, 7408) +HANDLE_BAT(APINT_TYPE_PREFIX, 7409) +HANDLE_BAT(APINT_TYPE_PREFIX, 7410) +HANDLE_BAT(APINT_TYPE_PREFIX, 7411) +HANDLE_BAT(APINT_TYPE_PREFIX, 7412) +HANDLE_BAT(APINT_TYPE_PREFIX, 7413) +HANDLE_BAT(APINT_TYPE_PREFIX, 7414) +HANDLE_BAT(APINT_TYPE_PREFIX, 7415) +HANDLE_BAT(APINT_TYPE_PREFIX, 7416) +HANDLE_BAT(APINT_TYPE_PREFIX, 7417) +HANDLE_BAT(APINT_TYPE_PREFIX, 7418) +HANDLE_BAT(APINT_TYPE_PREFIX, 7419) +HANDLE_BAT(APINT_TYPE_PREFIX, 7420) +HANDLE_BAT(APINT_TYPE_PREFIX, 7421) +HANDLE_BAT(APINT_TYPE_PREFIX, 7422) +HANDLE_BAT(APINT_TYPE_PREFIX, 7423) +HANDLE_BAT(APINT_TYPE_PREFIX, 7424) +HANDLE_BAT(APINT_TYPE_PREFIX, 7425) +HANDLE_BAT(APINT_TYPE_PREFIX, 7426) +HANDLE_BAT(APINT_TYPE_PREFIX, 7427) +HANDLE_BAT(APINT_TYPE_PREFIX, 7428) +HANDLE_BAT(APINT_TYPE_PREFIX, 7429) +HANDLE_BAT(APINT_TYPE_PREFIX, 7430) +HANDLE_BAT(APINT_TYPE_PREFIX, 7431) +HANDLE_BAT(APINT_TYPE_PREFIX, 7432) +HANDLE_BAT(APINT_TYPE_PREFIX, 7433) +HANDLE_BAT(APINT_TYPE_PREFIX, 7434) +HANDLE_BAT(APINT_TYPE_PREFIX, 7435) +HANDLE_BAT(APINT_TYPE_PREFIX, 7436) +HANDLE_BAT(APINT_TYPE_PREFIX, 7437) +HANDLE_BAT(APINT_TYPE_PREFIX, 7438) +HANDLE_BAT(APINT_TYPE_PREFIX, 7439) +HANDLE_BAT(APINT_TYPE_PREFIX, 7440) +HANDLE_BAT(APINT_TYPE_PREFIX, 7441) +HANDLE_BAT(APINT_TYPE_PREFIX, 7442) +HANDLE_BAT(APINT_TYPE_PREFIX, 7443) +HANDLE_BAT(APINT_TYPE_PREFIX, 7444) +HANDLE_BAT(APINT_TYPE_PREFIX, 7445) +HANDLE_BAT(APINT_TYPE_PREFIX, 7446) +HANDLE_BAT(APINT_TYPE_PREFIX, 7447) +HANDLE_BAT(APINT_TYPE_PREFIX, 7448) +HANDLE_BAT(APINT_TYPE_PREFIX, 7449) +HANDLE_BAT(APINT_TYPE_PREFIX, 7450) +HANDLE_BAT(APINT_TYPE_PREFIX, 7451) +HANDLE_BAT(APINT_TYPE_PREFIX, 7452) +HANDLE_BAT(APINT_TYPE_PREFIX, 7453) +HANDLE_BAT(APINT_TYPE_PREFIX, 7454) +HANDLE_BAT(APINT_TYPE_PREFIX, 7455) +HANDLE_BAT(APINT_TYPE_PREFIX, 7456) +HANDLE_BAT(APINT_TYPE_PREFIX, 7457) +HANDLE_BAT(APINT_TYPE_PREFIX, 7458) +HANDLE_BAT(APINT_TYPE_PREFIX, 7459) +HANDLE_BAT(APINT_TYPE_PREFIX, 7460) +HANDLE_BAT(APINT_TYPE_PREFIX, 7461) +HANDLE_BAT(APINT_TYPE_PREFIX, 7462) +HANDLE_BAT(APINT_TYPE_PREFIX, 7463) +HANDLE_BAT(APINT_TYPE_PREFIX, 7464) +HANDLE_BAT(APINT_TYPE_PREFIX, 7465) +HANDLE_BAT(APINT_TYPE_PREFIX, 7466) +HANDLE_BAT(APINT_TYPE_PREFIX, 7467) +HANDLE_BAT(APINT_TYPE_PREFIX, 7468) +HANDLE_BAT(APINT_TYPE_PREFIX, 7469) +HANDLE_BAT(APINT_TYPE_PREFIX, 7470) +HANDLE_BAT(APINT_TYPE_PREFIX, 7471) +HANDLE_BAT(APINT_TYPE_PREFIX, 7472) +HANDLE_BAT(APINT_TYPE_PREFIX, 7473) +HANDLE_BAT(APINT_TYPE_PREFIX, 7474) +HANDLE_BAT(APINT_TYPE_PREFIX, 7475) +HANDLE_BAT(APINT_TYPE_PREFIX, 7476) +HANDLE_BAT(APINT_TYPE_PREFIX, 7477) +HANDLE_BAT(APINT_TYPE_PREFIX, 7478) +HANDLE_BAT(APINT_TYPE_PREFIX, 7479) +HANDLE_BAT(APINT_TYPE_PREFIX, 7480) +HANDLE_BAT(APINT_TYPE_PREFIX, 7481) +HANDLE_BAT(APINT_TYPE_PREFIX, 7482) +HANDLE_BAT(APINT_TYPE_PREFIX, 7483) +HANDLE_BAT(APINT_TYPE_PREFIX, 7484) +HANDLE_BAT(APINT_TYPE_PREFIX, 7485) +HANDLE_BAT(APINT_TYPE_PREFIX, 7486) +HANDLE_BAT(APINT_TYPE_PREFIX, 7487) +HANDLE_BAT(APINT_TYPE_PREFIX, 7488) +HANDLE_BAT(APINT_TYPE_PREFIX, 7489) +HANDLE_BAT(APINT_TYPE_PREFIX, 7490) +HANDLE_BAT(APINT_TYPE_PREFIX, 7491) +HANDLE_BAT(APINT_TYPE_PREFIX, 7492) +HANDLE_BAT(APINT_TYPE_PREFIX, 7493) +HANDLE_BAT(APINT_TYPE_PREFIX, 7494) +HANDLE_BAT(APINT_TYPE_PREFIX, 7495) +HANDLE_BAT(APINT_TYPE_PREFIX, 7496) +HANDLE_BAT(APINT_TYPE_PREFIX, 7497) +HANDLE_BAT(APINT_TYPE_PREFIX, 7498) +HANDLE_BAT(APINT_TYPE_PREFIX, 7499) +HANDLE_BAT(APINT_TYPE_PREFIX, 7500) +HANDLE_BAT(APINT_TYPE_PREFIX, 7501) +HANDLE_BAT(APINT_TYPE_PREFIX, 7502) +HANDLE_BAT(APINT_TYPE_PREFIX, 7503) +HANDLE_BAT(APINT_TYPE_PREFIX, 7504) +HANDLE_BAT(APINT_TYPE_PREFIX, 7505) +HANDLE_BAT(APINT_TYPE_PREFIX, 7506) +HANDLE_BAT(APINT_TYPE_PREFIX, 7507) +HANDLE_BAT(APINT_TYPE_PREFIX, 7508) +HANDLE_BAT(APINT_TYPE_PREFIX, 7509) +HANDLE_BAT(APINT_TYPE_PREFIX, 7510) +HANDLE_BAT(APINT_TYPE_PREFIX, 7511) +HANDLE_BAT(APINT_TYPE_PREFIX, 7512) +HANDLE_BAT(APINT_TYPE_PREFIX, 7513) +HANDLE_BAT(APINT_TYPE_PREFIX, 7514) +HANDLE_BAT(APINT_TYPE_PREFIX, 7515) +HANDLE_BAT(APINT_TYPE_PREFIX, 7516) +HANDLE_BAT(APINT_TYPE_PREFIX, 7517) +HANDLE_BAT(APINT_TYPE_PREFIX, 7518) +HANDLE_BAT(APINT_TYPE_PREFIX, 7519) +HANDLE_BAT(APINT_TYPE_PREFIX, 7520) +HANDLE_BAT(APINT_TYPE_PREFIX, 7521) +HANDLE_BAT(APINT_TYPE_PREFIX, 7522) +HANDLE_BAT(APINT_TYPE_PREFIX, 7523) +HANDLE_BAT(APINT_TYPE_PREFIX, 7524) +HANDLE_BAT(APINT_TYPE_PREFIX, 7525) +HANDLE_BAT(APINT_TYPE_PREFIX, 7526) +HANDLE_BAT(APINT_TYPE_PREFIX, 7527) +HANDLE_BAT(APINT_TYPE_PREFIX, 7528) +HANDLE_BAT(APINT_TYPE_PREFIX, 7529) +HANDLE_BAT(APINT_TYPE_PREFIX, 7530) +HANDLE_BAT(APINT_TYPE_PREFIX, 7531) +HANDLE_BAT(APINT_TYPE_PREFIX, 7532) +HANDLE_BAT(APINT_TYPE_PREFIX, 7533) +HANDLE_BAT(APINT_TYPE_PREFIX, 7534) +HANDLE_BAT(APINT_TYPE_PREFIX, 7535) +HANDLE_BAT(APINT_TYPE_PREFIX, 7536) +HANDLE_BAT(APINT_TYPE_PREFIX, 7537) +HANDLE_BAT(APINT_TYPE_PREFIX, 7538) +HANDLE_BAT(APINT_TYPE_PREFIX, 7539) +HANDLE_BAT(APINT_TYPE_PREFIX, 7540) +HANDLE_BAT(APINT_TYPE_PREFIX, 7541) +HANDLE_BAT(APINT_TYPE_PREFIX, 7542) +HANDLE_BAT(APINT_TYPE_PREFIX, 7543) +HANDLE_BAT(APINT_TYPE_PREFIX, 7544) +HANDLE_BAT(APINT_TYPE_PREFIX, 7545) +HANDLE_BAT(APINT_TYPE_PREFIX, 7546) +HANDLE_BAT(APINT_TYPE_PREFIX, 7547) +HANDLE_BAT(APINT_TYPE_PREFIX, 7548) +HANDLE_BAT(APINT_TYPE_PREFIX, 7549) +HANDLE_BAT(APINT_TYPE_PREFIX, 7550) +HANDLE_BAT(APINT_TYPE_PREFIX, 7551) +HANDLE_BAT(APINT_TYPE_PREFIX, 7552) +HANDLE_BAT(APINT_TYPE_PREFIX, 7553) +HANDLE_BAT(APINT_TYPE_PREFIX, 7554) +HANDLE_BAT(APINT_TYPE_PREFIX, 7555) +HANDLE_BAT(APINT_TYPE_PREFIX, 7556) +HANDLE_BAT(APINT_TYPE_PREFIX, 7557) +HANDLE_BAT(APINT_TYPE_PREFIX, 7558) +HANDLE_BAT(APINT_TYPE_PREFIX, 7559) +HANDLE_BAT(APINT_TYPE_PREFIX, 7560) +HANDLE_BAT(APINT_TYPE_PREFIX, 7561) +HANDLE_BAT(APINT_TYPE_PREFIX, 7562) +HANDLE_BAT(APINT_TYPE_PREFIX, 7563) +HANDLE_BAT(APINT_TYPE_PREFIX, 7564) +HANDLE_BAT(APINT_TYPE_PREFIX, 7565) +HANDLE_BAT(APINT_TYPE_PREFIX, 7566) +HANDLE_BAT(APINT_TYPE_PREFIX, 7567) +HANDLE_BAT(APINT_TYPE_PREFIX, 7568) +HANDLE_BAT(APINT_TYPE_PREFIX, 7569) +HANDLE_BAT(APINT_TYPE_PREFIX, 7570) +HANDLE_BAT(APINT_TYPE_PREFIX, 7571) +HANDLE_BAT(APINT_TYPE_PREFIX, 7572) +HANDLE_BAT(APINT_TYPE_PREFIX, 7573) +HANDLE_BAT(APINT_TYPE_PREFIX, 7574) +HANDLE_BAT(APINT_TYPE_PREFIX, 7575) +HANDLE_BAT(APINT_TYPE_PREFIX, 7576) +HANDLE_BAT(APINT_TYPE_PREFIX, 7577) +HANDLE_BAT(APINT_TYPE_PREFIX, 7578) +HANDLE_BAT(APINT_TYPE_PREFIX, 7579) +HANDLE_BAT(APINT_TYPE_PREFIX, 7580) +HANDLE_BAT(APINT_TYPE_PREFIX, 7581) +HANDLE_BAT(APINT_TYPE_PREFIX, 7582) +HANDLE_BAT(APINT_TYPE_PREFIX, 7583) +HANDLE_BAT(APINT_TYPE_PREFIX, 7584) +HANDLE_BAT(APINT_TYPE_PREFIX, 7585) +HANDLE_BAT(APINT_TYPE_PREFIX, 7586) +HANDLE_BAT(APINT_TYPE_PREFIX, 7587) +HANDLE_BAT(APINT_TYPE_PREFIX, 7588) +HANDLE_BAT(APINT_TYPE_PREFIX, 7589) +HANDLE_BAT(APINT_TYPE_PREFIX, 7590) +HANDLE_BAT(APINT_TYPE_PREFIX, 7591) +HANDLE_BAT(APINT_TYPE_PREFIX, 7592) +HANDLE_BAT(APINT_TYPE_PREFIX, 7593) +HANDLE_BAT(APINT_TYPE_PREFIX, 7594) +HANDLE_BAT(APINT_TYPE_PREFIX, 7595) +HANDLE_BAT(APINT_TYPE_PREFIX, 7596) +HANDLE_BAT(APINT_TYPE_PREFIX, 7597) +HANDLE_BAT(APINT_TYPE_PREFIX, 7598) +HANDLE_BAT(APINT_TYPE_PREFIX, 7599) +HANDLE_BAT(APINT_TYPE_PREFIX, 7600) +HANDLE_BAT(APINT_TYPE_PREFIX, 7601) +HANDLE_BAT(APINT_TYPE_PREFIX, 7602) +HANDLE_BAT(APINT_TYPE_PREFIX, 7603) +HANDLE_BAT(APINT_TYPE_PREFIX, 7604) +HANDLE_BAT(APINT_TYPE_PREFIX, 7605) +HANDLE_BAT(APINT_TYPE_PREFIX, 7606) +HANDLE_BAT(APINT_TYPE_PREFIX, 7607) +HANDLE_BAT(APINT_TYPE_PREFIX, 7608) +HANDLE_BAT(APINT_TYPE_PREFIX, 7609) +HANDLE_BAT(APINT_TYPE_PREFIX, 7610) +HANDLE_BAT(APINT_TYPE_PREFIX, 7611) +HANDLE_BAT(APINT_TYPE_PREFIX, 7612) +HANDLE_BAT(APINT_TYPE_PREFIX, 7613) +HANDLE_BAT(APINT_TYPE_PREFIX, 7614) +HANDLE_BAT(APINT_TYPE_PREFIX, 7615) +HANDLE_BAT(APINT_TYPE_PREFIX, 7616) +HANDLE_BAT(APINT_TYPE_PREFIX, 7617) +HANDLE_BAT(APINT_TYPE_PREFIX, 7618) +HANDLE_BAT(APINT_TYPE_PREFIX, 7619) +HANDLE_BAT(APINT_TYPE_PREFIX, 7620) +HANDLE_BAT(APINT_TYPE_PREFIX, 7621) +HANDLE_BAT(APINT_TYPE_PREFIX, 7622) +HANDLE_BAT(APINT_TYPE_PREFIX, 7623) +HANDLE_BAT(APINT_TYPE_PREFIX, 7624) +HANDLE_BAT(APINT_TYPE_PREFIX, 7625) +HANDLE_BAT(APINT_TYPE_PREFIX, 7626) +HANDLE_BAT(APINT_TYPE_PREFIX, 7627) +HANDLE_BAT(APINT_TYPE_PREFIX, 7628) +HANDLE_BAT(APINT_TYPE_PREFIX, 7629) +HANDLE_BAT(APINT_TYPE_PREFIX, 7630) +HANDLE_BAT(APINT_TYPE_PREFIX, 7631) +HANDLE_BAT(APINT_TYPE_PREFIX, 7632) +HANDLE_BAT(APINT_TYPE_PREFIX, 7633) +HANDLE_BAT(APINT_TYPE_PREFIX, 7634) +HANDLE_BAT(APINT_TYPE_PREFIX, 7635) +HANDLE_BAT(APINT_TYPE_PREFIX, 7636) +HANDLE_BAT(APINT_TYPE_PREFIX, 7637) +HANDLE_BAT(APINT_TYPE_PREFIX, 7638) +HANDLE_BAT(APINT_TYPE_PREFIX, 7639) +HANDLE_BAT(APINT_TYPE_PREFIX, 7640) +HANDLE_BAT(APINT_TYPE_PREFIX, 7641) +HANDLE_BAT(APINT_TYPE_PREFIX, 7642) +HANDLE_BAT(APINT_TYPE_PREFIX, 7643) +HANDLE_BAT(APINT_TYPE_PREFIX, 7644) +HANDLE_BAT(APINT_TYPE_PREFIX, 7645) +HANDLE_BAT(APINT_TYPE_PREFIX, 7646) +HANDLE_BAT(APINT_TYPE_PREFIX, 7647) +HANDLE_BAT(APINT_TYPE_PREFIX, 7648) +HANDLE_BAT(APINT_TYPE_PREFIX, 7649) +HANDLE_BAT(APINT_TYPE_PREFIX, 7650) +HANDLE_BAT(APINT_TYPE_PREFIX, 7651) +HANDLE_BAT(APINT_TYPE_PREFIX, 7652) +HANDLE_BAT(APINT_TYPE_PREFIX, 7653) +HANDLE_BAT(APINT_TYPE_PREFIX, 7654) +HANDLE_BAT(APINT_TYPE_PREFIX, 7655) +HANDLE_BAT(APINT_TYPE_PREFIX, 7656) +HANDLE_BAT(APINT_TYPE_PREFIX, 7657) +HANDLE_BAT(APINT_TYPE_PREFIX, 7658) +HANDLE_BAT(APINT_TYPE_PREFIX, 7659) +HANDLE_BAT(APINT_TYPE_PREFIX, 7660) +HANDLE_BAT(APINT_TYPE_PREFIX, 7661) +HANDLE_BAT(APINT_TYPE_PREFIX, 7662) +HANDLE_BAT(APINT_TYPE_PREFIX, 7663) +HANDLE_BAT(APINT_TYPE_PREFIX, 7664) +HANDLE_BAT(APINT_TYPE_PREFIX, 7665) +HANDLE_BAT(APINT_TYPE_PREFIX, 7666) +HANDLE_BAT(APINT_TYPE_PREFIX, 7667) +HANDLE_BAT(APINT_TYPE_PREFIX, 7668) +HANDLE_BAT(APINT_TYPE_PREFIX, 7669) +HANDLE_BAT(APINT_TYPE_PREFIX, 7670) +HANDLE_BAT(APINT_TYPE_PREFIX, 7671) +HANDLE_BAT(APINT_TYPE_PREFIX, 7672) +HANDLE_BAT(APINT_TYPE_PREFIX, 7673) +HANDLE_BAT(APINT_TYPE_PREFIX, 7674) +HANDLE_BAT(APINT_TYPE_PREFIX, 7675) +HANDLE_BAT(APINT_TYPE_PREFIX, 7676) +HANDLE_BAT(APINT_TYPE_PREFIX, 7677) +HANDLE_BAT(APINT_TYPE_PREFIX, 7678) +HANDLE_BAT(APINT_TYPE_PREFIX, 7679) +HANDLE_BAT(APINT_TYPE_PREFIX, 7680) +HANDLE_BAT(APINT_TYPE_PREFIX, 7681) +HANDLE_BAT(APINT_TYPE_PREFIX, 7682) +HANDLE_BAT(APINT_TYPE_PREFIX, 7683) +HANDLE_BAT(APINT_TYPE_PREFIX, 7684) +HANDLE_BAT(APINT_TYPE_PREFIX, 7685) +HANDLE_BAT(APINT_TYPE_PREFIX, 7686) +HANDLE_BAT(APINT_TYPE_PREFIX, 7687) +HANDLE_BAT(APINT_TYPE_PREFIX, 7688) +HANDLE_BAT(APINT_TYPE_PREFIX, 7689) +HANDLE_BAT(APINT_TYPE_PREFIX, 7690) +HANDLE_BAT(APINT_TYPE_PREFIX, 7691) +HANDLE_BAT(APINT_TYPE_PREFIX, 7692) +HANDLE_BAT(APINT_TYPE_PREFIX, 7693) +HANDLE_BAT(APINT_TYPE_PREFIX, 7694) +HANDLE_BAT(APINT_TYPE_PREFIX, 7695) +HANDLE_BAT(APINT_TYPE_PREFIX, 7696) +HANDLE_BAT(APINT_TYPE_PREFIX, 7697) +HANDLE_BAT(APINT_TYPE_PREFIX, 7698) +HANDLE_BAT(APINT_TYPE_PREFIX, 7699) +HANDLE_BAT(APINT_TYPE_PREFIX, 7700) +HANDLE_BAT(APINT_TYPE_PREFIX, 7701) +HANDLE_BAT(APINT_TYPE_PREFIX, 7702) +HANDLE_BAT(APINT_TYPE_PREFIX, 7703) +HANDLE_BAT(APINT_TYPE_PREFIX, 7704) +HANDLE_BAT(APINT_TYPE_PREFIX, 7705) +HANDLE_BAT(APINT_TYPE_PREFIX, 7706) +HANDLE_BAT(APINT_TYPE_PREFIX, 7707) +HANDLE_BAT(APINT_TYPE_PREFIX, 7708) +HANDLE_BAT(APINT_TYPE_PREFIX, 7709) +HANDLE_BAT(APINT_TYPE_PREFIX, 7710) +HANDLE_BAT(APINT_TYPE_PREFIX, 7711) +HANDLE_BAT(APINT_TYPE_PREFIX, 7712) +HANDLE_BAT(APINT_TYPE_PREFIX, 7713) +HANDLE_BAT(APINT_TYPE_PREFIX, 7714) +HANDLE_BAT(APINT_TYPE_PREFIX, 7715) +HANDLE_BAT(APINT_TYPE_PREFIX, 7716) +HANDLE_BAT(APINT_TYPE_PREFIX, 7717) +HANDLE_BAT(APINT_TYPE_PREFIX, 7718) +HANDLE_BAT(APINT_TYPE_PREFIX, 7719) +HANDLE_BAT(APINT_TYPE_PREFIX, 7720) +HANDLE_BAT(APINT_TYPE_PREFIX, 7721) +HANDLE_BAT(APINT_TYPE_PREFIX, 7722) +HANDLE_BAT(APINT_TYPE_PREFIX, 7723) +HANDLE_BAT(APINT_TYPE_PREFIX, 7724) +HANDLE_BAT(APINT_TYPE_PREFIX, 7725) +HANDLE_BAT(APINT_TYPE_PREFIX, 7726) +HANDLE_BAT(APINT_TYPE_PREFIX, 7727) +HANDLE_BAT(APINT_TYPE_PREFIX, 7728) +HANDLE_BAT(APINT_TYPE_PREFIX, 7729) +HANDLE_BAT(APINT_TYPE_PREFIX, 7730) +HANDLE_BAT(APINT_TYPE_PREFIX, 7731) +HANDLE_BAT(APINT_TYPE_PREFIX, 7732) +HANDLE_BAT(APINT_TYPE_PREFIX, 7733) +HANDLE_BAT(APINT_TYPE_PREFIX, 7734) +HANDLE_BAT(APINT_TYPE_PREFIX, 7735) +HANDLE_BAT(APINT_TYPE_PREFIX, 7736) +HANDLE_BAT(APINT_TYPE_PREFIX, 7737) +HANDLE_BAT(APINT_TYPE_PREFIX, 7738) +HANDLE_BAT(APINT_TYPE_PREFIX, 7739) +HANDLE_BAT(APINT_TYPE_PREFIX, 7740) +HANDLE_BAT(APINT_TYPE_PREFIX, 7741) +HANDLE_BAT(APINT_TYPE_PREFIX, 7742) +HANDLE_BAT(APINT_TYPE_PREFIX, 7743) +HANDLE_BAT(APINT_TYPE_PREFIX, 7744) +HANDLE_BAT(APINT_TYPE_PREFIX, 7745) +HANDLE_BAT(APINT_TYPE_PREFIX, 7746) +HANDLE_BAT(APINT_TYPE_PREFIX, 7747) +HANDLE_BAT(APINT_TYPE_PREFIX, 7748) +HANDLE_BAT(APINT_TYPE_PREFIX, 7749) +HANDLE_BAT(APINT_TYPE_PREFIX, 7750) +HANDLE_BAT(APINT_TYPE_PREFIX, 7751) +HANDLE_BAT(APINT_TYPE_PREFIX, 7752) +HANDLE_BAT(APINT_TYPE_PREFIX, 7753) +HANDLE_BAT(APINT_TYPE_PREFIX, 7754) +HANDLE_BAT(APINT_TYPE_PREFIX, 7755) +HANDLE_BAT(APINT_TYPE_PREFIX, 7756) +HANDLE_BAT(APINT_TYPE_PREFIX, 7757) +HANDLE_BAT(APINT_TYPE_PREFIX, 7758) +HANDLE_BAT(APINT_TYPE_PREFIX, 7759) +HANDLE_BAT(APINT_TYPE_PREFIX, 7760) +HANDLE_BAT(APINT_TYPE_PREFIX, 7761) +HANDLE_BAT(APINT_TYPE_PREFIX, 7762) +HANDLE_BAT(APINT_TYPE_PREFIX, 7763) +HANDLE_BAT(APINT_TYPE_PREFIX, 7764) +HANDLE_BAT(APINT_TYPE_PREFIX, 7765) +HANDLE_BAT(APINT_TYPE_PREFIX, 7766) +HANDLE_BAT(APINT_TYPE_PREFIX, 7767) +HANDLE_BAT(APINT_TYPE_PREFIX, 7768) +HANDLE_BAT(APINT_TYPE_PREFIX, 7769) +HANDLE_BAT(APINT_TYPE_PREFIX, 7770) +HANDLE_BAT(APINT_TYPE_PREFIX, 7771) +HANDLE_BAT(APINT_TYPE_PREFIX, 7772) +HANDLE_BAT(APINT_TYPE_PREFIX, 7773) +HANDLE_BAT(APINT_TYPE_PREFIX, 7774) +HANDLE_BAT(APINT_TYPE_PREFIX, 7775) +HANDLE_BAT(APINT_TYPE_PREFIX, 7776) +HANDLE_BAT(APINT_TYPE_PREFIX, 7777) +HANDLE_BAT(APINT_TYPE_PREFIX, 7778) +HANDLE_BAT(APINT_TYPE_PREFIX, 7779) +HANDLE_BAT(APINT_TYPE_PREFIX, 7780) +HANDLE_BAT(APINT_TYPE_PREFIX, 7781) +HANDLE_BAT(APINT_TYPE_PREFIX, 7782) +HANDLE_BAT(APINT_TYPE_PREFIX, 7783) +HANDLE_BAT(APINT_TYPE_PREFIX, 7784) +HANDLE_BAT(APINT_TYPE_PREFIX, 7785) +HANDLE_BAT(APINT_TYPE_PREFIX, 7786) +HANDLE_BAT(APINT_TYPE_PREFIX, 7787) +HANDLE_BAT(APINT_TYPE_PREFIX, 7788) +HANDLE_BAT(APINT_TYPE_PREFIX, 7789) +HANDLE_BAT(APINT_TYPE_PREFIX, 7790) +HANDLE_BAT(APINT_TYPE_PREFIX, 7791) +HANDLE_BAT(APINT_TYPE_PREFIX, 7792) +HANDLE_BAT(APINT_TYPE_PREFIX, 7793) +HANDLE_BAT(APINT_TYPE_PREFIX, 7794) +HANDLE_BAT(APINT_TYPE_PREFIX, 7795) +HANDLE_BAT(APINT_TYPE_PREFIX, 7796) +HANDLE_BAT(APINT_TYPE_PREFIX, 7797) +HANDLE_BAT(APINT_TYPE_PREFIX, 7798) +HANDLE_BAT(APINT_TYPE_PREFIX, 7799) +HANDLE_BAT(APINT_TYPE_PREFIX, 7800) +HANDLE_BAT(APINT_TYPE_PREFIX, 7801) +HANDLE_BAT(APINT_TYPE_PREFIX, 7802) +HANDLE_BAT(APINT_TYPE_PREFIX, 7803) +HANDLE_BAT(APINT_TYPE_PREFIX, 7804) +HANDLE_BAT(APINT_TYPE_PREFIX, 7805) +HANDLE_BAT(APINT_TYPE_PREFIX, 7806) +HANDLE_BAT(APINT_TYPE_PREFIX, 7807) +HANDLE_BAT(APINT_TYPE_PREFIX, 7808) +HANDLE_BAT(APINT_TYPE_PREFIX, 7809) +HANDLE_BAT(APINT_TYPE_PREFIX, 7810) +HANDLE_BAT(APINT_TYPE_PREFIX, 7811) +HANDLE_BAT(APINT_TYPE_PREFIX, 7812) +HANDLE_BAT(APINT_TYPE_PREFIX, 7813) +HANDLE_BAT(APINT_TYPE_PREFIX, 7814) +HANDLE_BAT(APINT_TYPE_PREFIX, 7815) +HANDLE_BAT(APINT_TYPE_PREFIX, 7816) +HANDLE_BAT(APINT_TYPE_PREFIX, 7817) +HANDLE_BAT(APINT_TYPE_PREFIX, 7818) +HANDLE_BAT(APINT_TYPE_PREFIX, 7819) +HANDLE_BAT(APINT_TYPE_PREFIX, 7820) +HANDLE_BAT(APINT_TYPE_PREFIX, 7821) +HANDLE_BAT(APINT_TYPE_PREFIX, 7822) +HANDLE_BAT(APINT_TYPE_PREFIX, 7823) +HANDLE_BAT(APINT_TYPE_PREFIX, 7824) +HANDLE_BAT(APINT_TYPE_PREFIX, 7825) +HANDLE_BAT(APINT_TYPE_PREFIX, 7826) +HANDLE_BAT(APINT_TYPE_PREFIX, 7827) +HANDLE_BAT(APINT_TYPE_PREFIX, 7828) +HANDLE_BAT(APINT_TYPE_PREFIX, 7829) +HANDLE_BAT(APINT_TYPE_PREFIX, 7830) +HANDLE_BAT(APINT_TYPE_PREFIX, 7831) +HANDLE_BAT(APINT_TYPE_PREFIX, 7832) +HANDLE_BAT(APINT_TYPE_PREFIX, 7833) +HANDLE_BAT(APINT_TYPE_PREFIX, 7834) +HANDLE_BAT(APINT_TYPE_PREFIX, 7835) +HANDLE_BAT(APINT_TYPE_PREFIX, 7836) +HANDLE_BAT(APINT_TYPE_PREFIX, 7837) +HANDLE_BAT(APINT_TYPE_PREFIX, 7838) +HANDLE_BAT(APINT_TYPE_PREFIX, 7839) +HANDLE_BAT(APINT_TYPE_PREFIX, 7840) +HANDLE_BAT(APINT_TYPE_PREFIX, 7841) +HANDLE_BAT(APINT_TYPE_PREFIX, 7842) +HANDLE_BAT(APINT_TYPE_PREFIX, 7843) +HANDLE_BAT(APINT_TYPE_PREFIX, 7844) +HANDLE_BAT(APINT_TYPE_PREFIX, 7845) +HANDLE_BAT(APINT_TYPE_PREFIX, 7846) +HANDLE_BAT(APINT_TYPE_PREFIX, 7847) +HANDLE_BAT(APINT_TYPE_PREFIX, 7848) +HANDLE_BAT(APINT_TYPE_PREFIX, 7849) +HANDLE_BAT(APINT_TYPE_PREFIX, 7850) +HANDLE_BAT(APINT_TYPE_PREFIX, 7851) +HANDLE_BAT(APINT_TYPE_PREFIX, 7852) +HANDLE_BAT(APINT_TYPE_PREFIX, 7853) +HANDLE_BAT(APINT_TYPE_PREFIX, 7854) +HANDLE_BAT(APINT_TYPE_PREFIX, 7855) +HANDLE_BAT(APINT_TYPE_PREFIX, 7856) +HANDLE_BAT(APINT_TYPE_PREFIX, 7857) +HANDLE_BAT(APINT_TYPE_PREFIX, 7858) +HANDLE_BAT(APINT_TYPE_PREFIX, 7859) +HANDLE_BAT(APINT_TYPE_PREFIX, 7860) +HANDLE_BAT(APINT_TYPE_PREFIX, 7861) +HANDLE_BAT(APINT_TYPE_PREFIX, 7862) +HANDLE_BAT(APINT_TYPE_PREFIX, 7863) +HANDLE_BAT(APINT_TYPE_PREFIX, 7864) +HANDLE_BAT(APINT_TYPE_PREFIX, 7865) +HANDLE_BAT(APINT_TYPE_PREFIX, 7866) +HANDLE_BAT(APINT_TYPE_PREFIX, 7867) +HANDLE_BAT(APINT_TYPE_PREFIX, 7868) +HANDLE_BAT(APINT_TYPE_PREFIX, 7869) +HANDLE_BAT(APINT_TYPE_PREFIX, 7870) +HANDLE_BAT(APINT_TYPE_PREFIX, 7871) +HANDLE_BAT(APINT_TYPE_PREFIX, 7872) +HANDLE_BAT(APINT_TYPE_PREFIX, 7873) +HANDLE_BAT(APINT_TYPE_PREFIX, 7874) +HANDLE_BAT(APINT_TYPE_PREFIX, 7875) +HANDLE_BAT(APINT_TYPE_PREFIX, 7876) +HANDLE_BAT(APINT_TYPE_PREFIX, 7877) +HANDLE_BAT(APINT_TYPE_PREFIX, 7878) +HANDLE_BAT(APINT_TYPE_PREFIX, 7879) +HANDLE_BAT(APINT_TYPE_PREFIX, 7880) +HANDLE_BAT(APINT_TYPE_PREFIX, 7881) +HANDLE_BAT(APINT_TYPE_PREFIX, 7882) +HANDLE_BAT(APINT_TYPE_PREFIX, 7883) +HANDLE_BAT(APINT_TYPE_PREFIX, 7884) +HANDLE_BAT(APINT_TYPE_PREFIX, 7885) +HANDLE_BAT(APINT_TYPE_PREFIX, 7886) +HANDLE_BAT(APINT_TYPE_PREFIX, 7887) +HANDLE_BAT(APINT_TYPE_PREFIX, 7888) +HANDLE_BAT(APINT_TYPE_PREFIX, 7889) +HANDLE_BAT(APINT_TYPE_PREFIX, 7890) +HANDLE_BAT(APINT_TYPE_PREFIX, 7891) +HANDLE_BAT(APINT_TYPE_PREFIX, 7892) +HANDLE_BAT(APINT_TYPE_PREFIX, 7893) +HANDLE_BAT(APINT_TYPE_PREFIX, 7894) +HANDLE_BAT(APINT_TYPE_PREFIX, 7895) +HANDLE_BAT(APINT_TYPE_PREFIX, 7896) +HANDLE_BAT(APINT_TYPE_PREFIX, 7897) +HANDLE_BAT(APINT_TYPE_PREFIX, 7898) +HANDLE_BAT(APINT_TYPE_PREFIX, 7899) +HANDLE_BAT(APINT_TYPE_PREFIX, 7900) +HANDLE_BAT(APINT_TYPE_PREFIX, 7901) +HANDLE_BAT(APINT_TYPE_PREFIX, 7902) +HANDLE_BAT(APINT_TYPE_PREFIX, 7903) +HANDLE_BAT(APINT_TYPE_PREFIX, 7904) +HANDLE_BAT(APINT_TYPE_PREFIX, 7905) +HANDLE_BAT(APINT_TYPE_PREFIX, 7906) +HANDLE_BAT(APINT_TYPE_PREFIX, 7907) +HANDLE_BAT(APINT_TYPE_PREFIX, 7908) +HANDLE_BAT(APINT_TYPE_PREFIX, 7909) +HANDLE_BAT(APINT_TYPE_PREFIX, 7910) +HANDLE_BAT(APINT_TYPE_PREFIX, 7911) +HANDLE_BAT(APINT_TYPE_PREFIX, 7912) +HANDLE_BAT(APINT_TYPE_PREFIX, 7913) +HANDLE_BAT(APINT_TYPE_PREFIX, 7914) +HANDLE_BAT(APINT_TYPE_PREFIX, 7915) +HANDLE_BAT(APINT_TYPE_PREFIX, 7916) +HANDLE_BAT(APINT_TYPE_PREFIX, 7917) +HANDLE_BAT(APINT_TYPE_PREFIX, 7918) +HANDLE_BAT(APINT_TYPE_PREFIX, 7919) +HANDLE_BAT(APINT_TYPE_PREFIX, 7920) +HANDLE_BAT(APINT_TYPE_PREFIX, 7921) +HANDLE_BAT(APINT_TYPE_PREFIX, 7922) +HANDLE_BAT(APINT_TYPE_PREFIX, 7923) +HANDLE_BAT(APINT_TYPE_PREFIX, 7924) +HANDLE_BAT(APINT_TYPE_PREFIX, 7925) +HANDLE_BAT(APINT_TYPE_PREFIX, 7926) +HANDLE_BAT(APINT_TYPE_PREFIX, 7927) +HANDLE_BAT(APINT_TYPE_PREFIX, 7928) +HANDLE_BAT(APINT_TYPE_PREFIX, 7929) +HANDLE_BAT(APINT_TYPE_PREFIX, 7930) +HANDLE_BAT(APINT_TYPE_PREFIX, 7931) +HANDLE_BAT(APINT_TYPE_PREFIX, 7932) +HANDLE_BAT(APINT_TYPE_PREFIX, 7933) +HANDLE_BAT(APINT_TYPE_PREFIX, 7934) +HANDLE_BAT(APINT_TYPE_PREFIX, 7935) +HANDLE_BAT(APINT_TYPE_PREFIX, 7936) +HANDLE_BAT(APINT_TYPE_PREFIX, 7937) +HANDLE_BAT(APINT_TYPE_PREFIX, 7938) +HANDLE_BAT(APINT_TYPE_PREFIX, 7939) +HANDLE_BAT(APINT_TYPE_PREFIX, 7940) +HANDLE_BAT(APINT_TYPE_PREFIX, 7941) +HANDLE_BAT(APINT_TYPE_PREFIX, 7942) +HANDLE_BAT(APINT_TYPE_PREFIX, 7943) +HANDLE_BAT(APINT_TYPE_PREFIX, 7944) +HANDLE_BAT(APINT_TYPE_PREFIX, 7945) +HANDLE_BAT(APINT_TYPE_PREFIX, 7946) +HANDLE_BAT(APINT_TYPE_PREFIX, 7947) +HANDLE_BAT(APINT_TYPE_PREFIX, 7948) +HANDLE_BAT(APINT_TYPE_PREFIX, 7949) +HANDLE_BAT(APINT_TYPE_PREFIX, 7950) +HANDLE_BAT(APINT_TYPE_PREFIX, 7951) +HANDLE_BAT(APINT_TYPE_PREFIX, 7952) +HANDLE_BAT(APINT_TYPE_PREFIX, 7953) +HANDLE_BAT(APINT_TYPE_PREFIX, 7954) +HANDLE_BAT(APINT_TYPE_PREFIX, 7955) +HANDLE_BAT(APINT_TYPE_PREFIX, 7956) +HANDLE_BAT(APINT_TYPE_PREFIX, 7957) +HANDLE_BAT(APINT_TYPE_PREFIX, 7958) +HANDLE_BAT(APINT_TYPE_PREFIX, 7959) +HANDLE_BAT(APINT_TYPE_PREFIX, 7960) +HANDLE_BAT(APINT_TYPE_PREFIX, 7961) +HANDLE_BAT(APINT_TYPE_PREFIX, 7962) +HANDLE_BAT(APINT_TYPE_PREFIX, 7963) +HANDLE_BAT(APINT_TYPE_PREFIX, 7964) +HANDLE_BAT(APINT_TYPE_PREFIX, 7965) +HANDLE_BAT(APINT_TYPE_PREFIX, 7966) +HANDLE_BAT(APINT_TYPE_PREFIX, 7967) +HANDLE_BAT(APINT_TYPE_PREFIX, 7968) +HANDLE_BAT(APINT_TYPE_PREFIX, 7969) +HANDLE_BAT(APINT_TYPE_PREFIX, 7970) +HANDLE_BAT(APINT_TYPE_PREFIX, 7971) +HANDLE_BAT(APINT_TYPE_PREFIX, 7972) +HANDLE_BAT(APINT_TYPE_PREFIX, 7973) +HANDLE_BAT(APINT_TYPE_PREFIX, 7974) +HANDLE_BAT(APINT_TYPE_PREFIX, 7975) +HANDLE_BAT(APINT_TYPE_PREFIX, 7976) +HANDLE_BAT(APINT_TYPE_PREFIX, 7977) +HANDLE_BAT(APINT_TYPE_PREFIX, 7978) +HANDLE_BAT(APINT_TYPE_PREFIX, 7979) +HANDLE_BAT(APINT_TYPE_PREFIX, 7980) +HANDLE_BAT(APINT_TYPE_PREFIX, 7981) +HANDLE_BAT(APINT_TYPE_PREFIX, 7982) +HANDLE_BAT(APINT_TYPE_PREFIX, 7983) +HANDLE_BAT(APINT_TYPE_PREFIX, 7984) +HANDLE_BAT(APINT_TYPE_PREFIX, 7985) +HANDLE_BAT(APINT_TYPE_PREFIX, 7986) +HANDLE_BAT(APINT_TYPE_PREFIX, 7987) +HANDLE_BAT(APINT_TYPE_PREFIX, 7988) +HANDLE_BAT(APINT_TYPE_PREFIX, 7989) +HANDLE_BAT(APINT_TYPE_PREFIX, 7990) +HANDLE_BAT(APINT_TYPE_PREFIX, 7991) +HANDLE_BAT(APINT_TYPE_PREFIX, 7992) +HANDLE_BAT(APINT_TYPE_PREFIX, 7993) +HANDLE_BAT(APINT_TYPE_PREFIX, 7994) +HANDLE_BAT(APINT_TYPE_PREFIX, 7995) +HANDLE_BAT(APINT_TYPE_PREFIX, 7996) +HANDLE_BAT(APINT_TYPE_PREFIX, 7997) +HANDLE_BAT(APINT_TYPE_PREFIX, 7998) +HANDLE_BAT(APINT_TYPE_PREFIX, 7999) +HANDLE_BAT(APINT_TYPE_PREFIX, 8000) +HANDLE_BAT(APINT_TYPE_PREFIX, 8001) +HANDLE_BAT(APINT_TYPE_PREFIX, 8002) +HANDLE_BAT(APINT_TYPE_PREFIX, 8003) +HANDLE_BAT(APINT_TYPE_PREFIX, 8004) +HANDLE_BAT(APINT_TYPE_PREFIX, 8005) +HANDLE_BAT(APINT_TYPE_PREFIX, 8006) +HANDLE_BAT(APINT_TYPE_PREFIX, 8007) +HANDLE_BAT(APINT_TYPE_PREFIX, 8008) +HANDLE_BAT(APINT_TYPE_PREFIX, 8009) +HANDLE_BAT(APINT_TYPE_PREFIX, 8010) +HANDLE_BAT(APINT_TYPE_PREFIX, 8011) +HANDLE_BAT(APINT_TYPE_PREFIX, 8012) +HANDLE_BAT(APINT_TYPE_PREFIX, 8013) +HANDLE_BAT(APINT_TYPE_PREFIX, 8014) +HANDLE_BAT(APINT_TYPE_PREFIX, 8015) +HANDLE_BAT(APINT_TYPE_PREFIX, 8016) +HANDLE_BAT(APINT_TYPE_PREFIX, 8017) +HANDLE_BAT(APINT_TYPE_PREFIX, 8018) +HANDLE_BAT(APINT_TYPE_PREFIX, 8019) +HANDLE_BAT(APINT_TYPE_PREFIX, 8020) +HANDLE_BAT(APINT_TYPE_PREFIX, 8021) +HANDLE_BAT(APINT_TYPE_PREFIX, 8022) +HANDLE_BAT(APINT_TYPE_PREFIX, 8023) +HANDLE_BAT(APINT_TYPE_PREFIX, 8024) +HANDLE_BAT(APINT_TYPE_PREFIX, 8025) +HANDLE_BAT(APINT_TYPE_PREFIX, 8026) +HANDLE_BAT(APINT_TYPE_PREFIX, 8027) +HANDLE_BAT(APINT_TYPE_PREFIX, 8028) +HANDLE_BAT(APINT_TYPE_PREFIX, 8029) +HANDLE_BAT(APINT_TYPE_PREFIX, 8030) +HANDLE_BAT(APINT_TYPE_PREFIX, 8031) +HANDLE_BAT(APINT_TYPE_PREFIX, 8032) +HANDLE_BAT(APINT_TYPE_PREFIX, 8033) +HANDLE_BAT(APINT_TYPE_PREFIX, 8034) +HANDLE_BAT(APINT_TYPE_PREFIX, 8035) +HANDLE_BAT(APINT_TYPE_PREFIX, 8036) +HANDLE_BAT(APINT_TYPE_PREFIX, 8037) +HANDLE_BAT(APINT_TYPE_PREFIX, 8038) +HANDLE_BAT(APINT_TYPE_PREFIX, 8039) +HANDLE_BAT(APINT_TYPE_PREFIX, 8040) +HANDLE_BAT(APINT_TYPE_PREFIX, 8041) +HANDLE_BAT(APINT_TYPE_PREFIX, 8042) +HANDLE_BAT(APINT_TYPE_PREFIX, 8043) +HANDLE_BAT(APINT_TYPE_PREFIX, 8044) +HANDLE_BAT(APINT_TYPE_PREFIX, 8045) +HANDLE_BAT(APINT_TYPE_PREFIX, 8046) +HANDLE_BAT(APINT_TYPE_PREFIX, 8047) +HANDLE_BAT(APINT_TYPE_PREFIX, 8048) +HANDLE_BAT(APINT_TYPE_PREFIX, 8049) +HANDLE_BAT(APINT_TYPE_PREFIX, 8050) +HANDLE_BAT(APINT_TYPE_PREFIX, 8051) +HANDLE_BAT(APINT_TYPE_PREFIX, 8052) +HANDLE_BAT(APINT_TYPE_PREFIX, 8053) +HANDLE_BAT(APINT_TYPE_PREFIX, 8054) +HANDLE_BAT(APINT_TYPE_PREFIX, 8055) +HANDLE_BAT(APINT_TYPE_PREFIX, 8056) +HANDLE_BAT(APINT_TYPE_PREFIX, 8057) +HANDLE_BAT(APINT_TYPE_PREFIX, 8058) +HANDLE_BAT(APINT_TYPE_PREFIX, 8059) +HANDLE_BAT(APINT_TYPE_PREFIX, 8060) +HANDLE_BAT(APINT_TYPE_PREFIX, 8061) +HANDLE_BAT(APINT_TYPE_PREFIX, 8062) +HANDLE_BAT(APINT_TYPE_PREFIX, 8063) +HANDLE_BAT(APINT_TYPE_PREFIX, 8064) +HANDLE_BAT(APINT_TYPE_PREFIX, 8065) +HANDLE_BAT(APINT_TYPE_PREFIX, 8066) +HANDLE_BAT(APINT_TYPE_PREFIX, 8067) +HANDLE_BAT(APINT_TYPE_PREFIX, 8068) +HANDLE_BAT(APINT_TYPE_PREFIX, 8069) +HANDLE_BAT(APINT_TYPE_PREFIX, 8070) +HANDLE_BAT(APINT_TYPE_PREFIX, 8071) +HANDLE_BAT(APINT_TYPE_PREFIX, 8072) +HANDLE_BAT(APINT_TYPE_PREFIX, 8073) +HANDLE_BAT(APINT_TYPE_PREFIX, 8074) +HANDLE_BAT(APINT_TYPE_PREFIX, 8075) +HANDLE_BAT(APINT_TYPE_PREFIX, 8076) +HANDLE_BAT(APINT_TYPE_PREFIX, 8077) +HANDLE_BAT(APINT_TYPE_PREFIX, 8078) +HANDLE_BAT(APINT_TYPE_PREFIX, 8079) +HANDLE_BAT(APINT_TYPE_PREFIX, 8080) +HANDLE_BAT(APINT_TYPE_PREFIX, 8081) +HANDLE_BAT(APINT_TYPE_PREFIX, 8082) +HANDLE_BAT(APINT_TYPE_PREFIX, 8083) +HANDLE_BAT(APINT_TYPE_PREFIX, 8084) +HANDLE_BAT(APINT_TYPE_PREFIX, 8085) +HANDLE_BAT(APINT_TYPE_PREFIX, 8086) +HANDLE_BAT(APINT_TYPE_PREFIX, 8087) +HANDLE_BAT(APINT_TYPE_PREFIX, 8088) +HANDLE_BAT(APINT_TYPE_PREFIX, 8089) +HANDLE_BAT(APINT_TYPE_PREFIX, 8090) +HANDLE_BAT(APINT_TYPE_PREFIX, 8091) +HANDLE_BAT(APINT_TYPE_PREFIX, 8092) +HANDLE_BAT(APINT_TYPE_PREFIX, 8093) +HANDLE_BAT(APINT_TYPE_PREFIX, 8094) +HANDLE_BAT(APINT_TYPE_PREFIX, 8095) +HANDLE_BAT(APINT_TYPE_PREFIX, 8096) +HANDLE_BAT(APINT_TYPE_PREFIX, 8097) +HANDLE_BAT(APINT_TYPE_PREFIX, 8098) +HANDLE_BAT(APINT_TYPE_PREFIX, 8099) +HANDLE_BAT(APINT_TYPE_PREFIX, 8100) +HANDLE_BAT(APINT_TYPE_PREFIX, 8101) +HANDLE_BAT(APINT_TYPE_PREFIX, 8102) +HANDLE_BAT(APINT_TYPE_PREFIX, 8103) +HANDLE_BAT(APINT_TYPE_PREFIX, 8104) +HANDLE_BAT(APINT_TYPE_PREFIX, 8105) +HANDLE_BAT(APINT_TYPE_PREFIX, 8106) +HANDLE_BAT(APINT_TYPE_PREFIX, 8107) +HANDLE_BAT(APINT_TYPE_PREFIX, 8108) +HANDLE_BAT(APINT_TYPE_PREFIX, 8109) +HANDLE_BAT(APINT_TYPE_PREFIX, 8110) +HANDLE_BAT(APINT_TYPE_PREFIX, 8111) +HANDLE_BAT(APINT_TYPE_PREFIX, 8112) +HANDLE_BAT(APINT_TYPE_PREFIX, 8113) +HANDLE_BAT(APINT_TYPE_PREFIX, 8114) +HANDLE_BAT(APINT_TYPE_PREFIX, 8115) +HANDLE_BAT(APINT_TYPE_PREFIX, 8116) +HANDLE_BAT(APINT_TYPE_PREFIX, 8117) +HANDLE_BAT(APINT_TYPE_PREFIX, 8118) +HANDLE_BAT(APINT_TYPE_PREFIX, 8119) +HANDLE_BAT(APINT_TYPE_PREFIX, 8120) +HANDLE_BAT(APINT_TYPE_PREFIX, 8121) +HANDLE_BAT(APINT_TYPE_PREFIX, 8122) +HANDLE_BAT(APINT_TYPE_PREFIX, 8123) +HANDLE_BAT(APINT_TYPE_PREFIX, 8124) +HANDLE_BAT(APINT_TYPE_PREFIX, 8125) +HANDLE_BAT(APINT_TYPE_PREFIX, 8126) +HANDLE_BAT(APINT_TYPE_PREFIX, 8127) +HANDLE_BAT(APINT_TYPE_PREFIX, 8128) +HANDLE_BAT(APINT_TYPE_PREFIX, 8129) +HANDLE_BAT(APINT_TYPE_PREFIX, 8130) +HANDLE_BAT(APINT_TYPE_PREFIX, 8131) +HANDLE_BAT(APINT_TYPE_PREFIX, 8132) +HANDLE_BAT(APINT_TYPE_PREFIX, 8133) +HANDLE_BAT(APINT_TYPE_PREFIX, 8134) +HANDLE_BAT(APINT_TYPE_PREFIX, 8135) +HANDLE_BAT(APINT_TYPE_PREFIX, 8136) +HANDLE_BAT(APINT_TYPE_PREFIX, 8137) +HANDLE_BAT(APINT_TYPE_PREFIX, 8138) +HANDLE_BAT(APINT_TYPE_PREFIX, 8139) +HANDLE_BAT(APINT_TYPE_PREFIX, 8140) +HANDLE_BAT(APINT_TYPE_PREFIX, 8141) +HANDLE_BAT(APINT_TYPE_PREFIX, 8142) +HANDLE_BAT(APINT_TYPE_PREFIX, 8143) +HANDLE_BAT(APINT_TYPE_PREFIX, 8144) +HANDLE_BAT(APINT_TYPE_PREFIX, 8145) +HANDLE_BAT(APINT_TYPE_PREFIX, 8146) +HANDLE_BAT(APINT_TYPE_PREFIX, 8147) +HANDLE_BAT(APINT_TYPE_PREFIX, 8148) +HANDLE_BAT(APINT_TYPE_PREFIX, 8149) +HANDLE_BAT(APINT_TYPE_PREFIX, 8150) +HANDLE_BAT(APINT_TYPE_PREFIX, 8151) +HANDLE_BAT(APINT_TYPE_PREFIX, 8152) +HANDLE_BAT(APINT_TYPE_PREFIX, 8153) +HANDLE_BAT(APINT_TYPE_PREFIX, 8154) +HANDLE_BAT(APINT_TYPE_PREFIX, 8155) +HANDLE_BAT(APINT_TYPE_PREFIX, 8156) +HANDLE_BAT(APINT_TYPE_PREFIX, 8157) +HANDLE_BAT(APINT_TYPE_PREFIX, 8158) +HANDLE_BAT(APINT_TYPE_PREFIX, 8159) +HANDLE_BAT(APINT_TYPE_PREFIX, 8160) +HANDLE_BAT(APINT_TYPE_PREFIX, 8161) +HANDLE_BAT(APINT_TYPE_PREFIX, 8162) +HANDLE_BAT(APINT_TYPE_PREFIX, 8163) +HANDLE_BAT(APINT_TYPE_PREFIX, 8164) +HANDLE_BAT(APINT_TYPE_PREFIX, 8165) +HANDLE_BAT(APINT_TYPE_PREFIX, 8166) +HANDLE_BAT(APINT_TYPE_PREFIX, 8167) +HANDLE_BAT(APINT_TYPE_PREFIX, 8168) +HANDLE_BAT(APINT_TYPE_PREFIX, 8169) +HANDLE_BAT(APINT_TYPE_PREFIX, 8170) +HANDLE_BAT(APINT_TYPE_PREFIX, 8171) +HANDLE_BAT(APINT_TYPE_PREFIX, 8172) +HANDLE_BAT(APINT_TYPE_PREFIX, 8173) +HANDLE_BAT(APINT_TYPE_PREFIX, 8174) +HANDLE_BAT(APINT_TYPE_PREFIX, 8175) +HANDLE_BAT(APINT_TYPE_PREFIX, 8176) +HANDLE_BAT(APINT_TYPE_PREFIX, 8177) +HANDLE_BAT(APINT_TYPE_PREFIX, 8178) +HANDLE_BAT(APINT_TYPE_PREFIX, 8179) +HANDLE_BAT(APINT_TYPE_PREFIX, 8180) +HANDLE_BAT(APINT_TYPE_PREFIX, 8181) +HANDLE_BAT(APINT_TYPE_PREFIX, 8182) +HANDLE_BAT(APINT_TYPE_PREFIX, 8183) +HANDLE_BAT(APINT_TYPE_PREFIX, 8184) +HANDLE_BAT(APINT_TYPE_PREFIX, 8185) +HANDLE_BAT(APINT_TYPE_PREFIX, 8186) +HANDLE_BAT(APINT_TYPE_PREFIX, 8187) +HANDLE_BAT(APINT_TYPE_PREFIX, 8188) +HANDLE_BAT(APINT_TYPE_PREFIX, 8189) +HANDLE_BAT(APINT_TYPE_PREFIX, 8190) +HANDLE_BAT(APINT_TYPE_PREFIX, 8191) +HANDLE_BAT(APINT_TYPE_PREFIX, 8192) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 8 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 8193) +HANDLE_BAT(, 8194) +HANDLE_BAT(, 8195) +HANDLE_BAT(, 8196) +HANDLE_BAT(, 8197) +HANDLE_BAT(, 8198) +HANDLE_BAT(, 8199) +HANDLE_BAT(, 8200) +HANDLE_BAT(, 8201) +HANDLE_BAT(, 8202) +HANDLE_BAT(, 8203) +HANDLE_BAT(, 8204) +HANDLE_BAT(, 8205) +HANDLE_BAT(, 8206) +HANDLE_BAT(, 8207) +HANDLE_BAT(, 8208) +HANDLE_BAT(, 8209) +HANDLE_BAT(, 8210) +HANDLE_BAT(, 8211) +HANDLE_BAT(, 8212) +HANDLE_BAT(, 8213) +HANDLE_BAT(, 8214) +HANDLE_BAT(, 8215) +HANDLE_BAT(, 8216) +HANDLE_BAT(, 8217) +HANDLE_BAT(, 8218) +HANDLE_BAT(, 8219) +HANDLE_BAT(, 8220) +HANDLE_BAT(, 8221) +HANDLE_BAT(, 8222) +HANDLE_BAT(, 8223) +HANDLE_BAT(, 8224) +HANDLE_BAT(, 8225) +HANDLE_BAT(, 8226) +HANDLE_BAT(, 8227) +HANDLE_BAT(, 8228) +HANDLE_BAT(, 8229) +HANDLE_BAT(, 8230) +HANDLE_BAT(, 8231) +HANDLE_BAT(, 8232) +HANDLE_BAT(, 8233) +HANDLE_BAT(, 8234) +HANDLE_BAT(, 8235) +HANDLE_BAT(, 8236) +HANDLE_BAT(, 8237) +HANDLE_BAT(, 8238) +HANDLE_BAT(, 8239) +HANDLE_BAT(, 8240) +HANDLE_BAT(, 8241) +HANDLE_BAT(, 8242) +HANDLE_BAT(, 8243) +HANDLE_BAT(, 8244) +HANDLE_BAT(, 8245) +HANDLE_BAT(, 8246) +HANDLE_BAT(, 8247) +HANDLE_BAT(, 8248) +HANDLE_BAT(, 8249) +HANDLE_BAT(, 8250) +HANDLE_BAT(, 8251) +HANDLE_BAT(, 8252) +HANDLE_BAT(, 8253) +HANDLE_BAT(, 8254) +HANDLE_BAT(, 8255) +HANDLE_BAT(, 8256) +HANDLE_BAT(, 8257) +HANDLE_BAT(, 8258) +HANDLE_BAT(, 8259) +HANDLE_BAT(, 8260) +HANDLE_BAT(, 8261) +HANDLE_BAT(, 8262) +HANDLE_BAT(, 8263) +HANDLE_BAT(, 8264) +HANDLE_BAT(, 8265) +HANDLE_BAT(, 8266) +HANDLE_BAT(, 8267) +HANDLE_BAT(, 8268) +HANDLE_BAT(, 8269) +HANDLE_BAT(, 8270) +HANDLE_BAT(, 8271) +HANDLE_BAT(, 8272) +HANDLE_BAT(, 8273) +HANDLE_BAT(, 8274) +HANDLE_BAT(, 8275) +HANDLE_BAT(, 8276) +HANDLE_BAT(, 8277) +HANDLE_BAT(, 8278) +HANDLE_BAT(, 8279) +HANDLE_BAT(, 8280) +HANDLE_BAT(, 8281) +HANDLE_BAT(, 8282) +HANDLE_BAT(, 8283) +HANDLE_BAT(, 8284) +HANDLE_BAT(, 8285) +HANDLE_BAT(, 8286) +HANDLE_BAT(, 8287) +HANDLE_BAT(, 8288) +HANDLE_BAT(, 8289) +HANDLE_BAT(, 8290) +HANDLE_BAT(, 8291) +HANDLE_BAT(, 8292) +HANDLE_BAT(, 8293) +HANDLE_BAT(, 8294) +HANDLE_BAT(, 8295) +HANDLE_BAT(, 8296) +HANDLE_BAT(, 8297) +HANDLE_BAT(, 8298) +HANDLE_BAT(, 8299) +HANDLE_BAT(, 8300) +HANDLE_BAT(, 8301) +HANDLE_BAT(, 8302) +HANDLE_BAT(, 8303) +HANDLE_BAT(, 8304) +HANDLE_BAT(, 8305) +HANDLE_BAT(, 8306) +HANDLE_BAT(, 8307) +HANDLE_BAT(, 8308) +HANDLE_BAT(, 8309) +HANDLE_BAT(, 8310) +HANDLE_BAT(, 8311) +HANDLE_BAT(, 8312) +HANDLE_BAT(, 8313) +HANDLE_BAT(, 8314) +HANDLE_BAT(, 8315) +HANDLE_BAT(, 8316) +HANDLE_BAT(, 8317) +HANDLE_BAT(, 8318) +HANDLE_BAT(, 8319) +HANDLE_BAT(, 8320) +HANDLE_BAT(, 8321) +HANDLE_BAT(, 8322) +HANDLE_BAT(, 8323) +HANDLE_BAT(, 8324) +HANDLE_BAT(, 8325) +HANDLE_BAT(, 8326) +HANDLE_BAT(, 8327) +HANDLE_BAT(, 8328) +HANDLE_BAT(, 8329) +HANDLE_BAT(, 8330) +HANDLE_BAT(, 8331) +HANDLE_BAT(, 8332) +HANDLE_BAT(, 8333) +HANDLE_BAT(, 8334) +HANDLE_BAT(, 8335) +HANDLE_BAT(, 8336) +HANDLE_BAT(, 8337) +HANDLE_BAT(, 8338) +HANDLE_BAT(, 8339) +HANDLE_BAT(, 8340) +HANDLE_BAT(, 8341) +HANDLE_BAT(, 8342) +HANDLE_BAT(, 8343) +HANDLE_BAT(, 8344) +HANDLE_BAT(, 8345) +HANDLE_BAT(, 8346) +HANDLE_BAT(, 8347) +HANDLE_BAT(, 8348) +HANDLE_BAT(, 8349) +HANDLE_BAT(, 8350) +HANDLE_BAT(, 8351) +HANDLE_BAT(, 8352) +HANDLE_BAT(, 8353) +HANDLE_BAT(, 8354) +HANDLE_BAT(, 8355) +HANDLE_BAT(, 8356) +HANDLE_BAT(, 8357) +HANDLE_BAT(, 8358) +HANDLE_BAT(, 8359) +HANDLE_BAT(, 8360) +HANDLE_BAT(, 8361) +HANDLE_BAT(, 8362) +HANDLE_BAT(, 8363) +HANDLE_BAT(, 8364) +HANDLE_BAT(, 8365) +HANDLE_BAT(, 8366) +HANDLE_BAT(, 8367) +HANDLE_BAT(, 8368) +HANDLE_BAT(, 8369) +HANDLE_BAT(, 8370) +HANDLE_BAT(, 8371) +HANDLE_BAT(, 8372) +HANDLE_BAT(, 8373) +HANDLE_BAT(, 8374) +HANDLE_BAT(, 8375) +HANDLE_BAT(, 8376) +HANDLE_BAT(, 8377) +HANDLE_BAT(, 8378) +HANDLE_BAT(, 8379) +HANDLE_BAT(, 8380) +HANDLE_BAT(, 8381) +HANDLE_BAT(, 8382) +HANDLE_BAT(, 8383) +HANDLE_BAT(, 8384) +HANDLE_BAT(, 8385) +HANDLE_BAT(, 8386) +HANDLE_BAT(, 8387) +HANDLE_BAT(, 8388) +HANDLE_BAT(, 8389) +HANDLE_BAT(, 8390) +HANDLE_BAT(, 8391) +HANDLE_BAT(, 8392) +HANDLE_BAT(, 8393) +HANDLE_BAT(, 8394) +HANDLE_BAT(, 8395) +HANDLE_BAT(, 8396) +HANDLE_BAT(, 8397) +HANDLE_BAT(, 8398) +HANDLE_BAT(, 8399) +HANDLE_BAT(, 8400) +HANDLE_BAT(, 8401) +HANDLE_BAT(, 8402) +HANDLE_BAT(, 8403) +HANDLE_BAT(, 8404) +HANDLE_BAT(, 8405) +HANDLE_BAT(, 8406) +HANDLE_BAT(, 8407) +HANDLE_BAT(, 8408) +HANDLE_BAT(, 8409) +HANDLE_BAT(, 8410) +HANDLE_BAT(, 8411) +HANDLE_BAT(, 8412) +HANDLE_BAT(, 8413) +HANDLE_BAT(, 8414) +HANDLE_BAT(, 8415) +HANDLE_BAT(, 8416) +HANDLE_BAT(, 8417) +HANDLE_BAT(, 8418) +HANDLE_BAT(, 8419) +HANDLE_BAT(, 8420) +HANDLE_BAT(, 8421) +HANDLE_BAT(, 8422) +HANDLE_BAT(, 8423) +HANDLE_BAT(, 8424) +HANDLE_BAT(, 8425) +HANDLE_BAT(, 8426) +HANDLE_BAT(, 8427) +HANDLE_BAT(, 8428) +HANDLE_BAT(, 8429) +HANDLE_BAT(, 8430) +HANDLE_BAT(, 8431) +HANDLE_BAT(, 8432) +HANDLE_BAT(, 8433) +HANDLE_BAT(, 8434) +HANDLE_BAT(, 8435) +HANDLE_BAT(, 8436) +HANDLE_BAT(, 8437) +HANDLE_BAT(, 8438) +HANDLE_BAT(, 8439) +HANDLE_BAT(, 8440) +HANDLE_BAT(, 8441) +HANDLE_BAT(, 8442) +HANDLE_BAT(, 8443) +HANDLE_BAT(, 8444) +HANDLE_BAT(, 8445) +HANDLE_BAT(, 8446) +HANDLE_BAT(, 8447) +HANDLE_BAT(, 8448) +HANDLE_BAT(, 8449) +HANDLE_BAT(, 8450) +HANDLE_BAT(, 8451) +HANDLE_BAT(, 8452) +HANDLE_BAT(, 8453) +HANDLE_BAT(, 8454) +HANDLE_BAT(, 8455) +HANDLE_BAT(, 8456) +HANDLE_BAT(, 8457) +HANDLE_BAT(, 8458) +HANDLE_BAT(, 8459) +HANDLE_BAT(, 8460) +HANDLE_BAT(, 8461) +HANDLE_BAT(, 8462) +HANDLE_BAT(, 8463) +HANDLE_BAT(, 8464) +HANDLE_BAT(, 8465) +HANDLE_BAT(, 8466) +HANDLE_BAT(, 8467) +HANDLE_BAT(, 8468) +HANDLE_BAT(, 8469) +HANDLE_BAT(, 8470) +HANDLE_BAT(, 8471) +HANDLE_BAT(, 8472) +HANDLE_BAT(, 8473) +HANDLE_BAT(, 8474) +HANDLE_BAT(, 8475) +HANDLE_BAT(, 8476) +HANDLE_BAT(, 8477) +HANDLE_BAT(, 8478) +HANDLE_BAT(, 8479) +HANDLE_BAT(, 8480) +HANDLE_BAT(, 8481) +HANDLE_BAT(, 8482) +HANDLE_BAT(, 8483) +HANDLE_BAT(, 8484) +HANDLE_BAT(, 8485) +HANDLE_BAT(, 8486) +HANDLE_BAT(, 8487) +HANDLE_BAT(, 8488) +HANDLE_BAT(, 8489) +HANDLE_BAT(, 8490) +HANDLE_BAT(, 8491) +HANDLE_BAT(, 8492) +HANDLE_BAT(, 8493) +HANDLE_BAT(, 8494) +HANDLE_BAT(, 8495) +HANDLE_BAT(, 8496) +HANDLE_BAT(, 8497) +HANDLE_BAT(, 8498) +HANDLE_BAT(, 8499) +HANDLE_BAT(, 8500) +HANDLE_BAT(, 8501) +HANDLE_BAT(, 8502) +HANDLE_BAT(, 8503) +HANDLE_BAT(, 8504) +HANDLE_BAT(, 8505) +HANDLE_BAT(, 8506) +HANDLE_BAT(, 8507) +HANDLE_BAT(, 8508) +HANDLE_BAT(, 8509) +HANDLE_BAT(, 8510) +HANDLE_BAT(, 8511) +HANDLE_BAT(, 8512) +HANDLE_BAT(, 8513) +HANDLE_BAT(, 8514) +HANDLE_BAT(, 8515) +HANDLE_BAT(, 8516) +HANDLE_BAT(, 8517) +HANDLE_BAT(, 8518) +HANDLE_BAT(, 8519) +HANDLE_BAT(, 8520) +HANDLE_BAT(, 8521) +HANDLE_BAT(, 8522) +HANDLE_BAT(, 8523) +HANDLE_BAT(, 8524) +HANDLE_BAT(, 8525) +HANDLE_BAT(, 8526) +HANDLE_BAT(, 8527) +HANDLE_BAT(, 8528) +HANDLE_BAT(, 8529) +HANDLE_BAT(, 8530) +HANDLE_BAT(, 8531) +HANDLE_BAT(, 8532) +HANDLE_BAT(, 8533) +HANDLE_BAT(, 8534) +HANDLE_BAT(, 8535) +HANDLE_BAT(, 8536) +HANDLE_BAT(, 8537) +HANDLE_BAT(, 8538) +HANDLE_BAT(, 8539) +HANDLE_BAT(, 8540) +HANDLE_BAT(, 8541) +HANDLE_BAT(, 8542) +HANDLE_BAT(, 8543) +HANDLE_BAT(, 8544) +HANDLE_BAT(, 8545) +HANDLE_BAT(, 8546) +HANDLE_BAT(, 8547) +HANDLE_BAT(, 8548) +HANDLE_BAT(, 8549) +HANDLE_BAT(, 8550) +HANDLE_BAT(, 8551) +HANDLE_BAT(, 8552) +HANDLE_BAT(, 8553) +HANDLE_BAT(, 8554) +HANDLE_BAT(, 8555) +HANDLE_BAT(, 8556) +HANDLE_BAT(, 8557) +HANDLE_BAT(, 8558) +HANDLE_BAT(, 8559) +HANDLE_BAT(, 8560) +HANDLE_BAT(, 8561) +HANDLE_BAT(, 8562) +HANDLE_BAT(, 8563) +HANDLE_BAT(, 8564) +HANDLE_BAT(, 8565) +HANDLE_BAT(, 8566) +HANDLE_BAT(, 8567) +HANDLE_BAT(, 8568) +HANDLE_BAT(, 8569) +HANDLE_BAT(, 8570) +HANDLE_BAT(, 8571) +HANDLE_BAT(, 8572) +HANDLE_BAT(, 8573) +HANDLE_BAT(, 8574) +HANDLE_BAT(, 8575) +HANDLE_BAT(, 8576) +HANDLE_BAT(, 8577) +HANDLE_BAT(, 8578) +HANDLE_BAT(, 8579) +HANDLE_BAT(, 8580) +HANDLE_BAT(, 8581) +HANDLE_BAT(, 8582) +HANDLE_BAT(, 8583) +HANDLE_BAT(, 8584) +HANDLE_BAT(, 8585) +HANDLE_BAT(, 8586) +HANDLE_BAT(, 8587) +HANDLE_BAT(, 8588) +HANDLE_BAT(, 8589) +HANDLE_BAT(, 8590) +HANDLE_BAT(, 8591) +HANDLE_BAT(, 8592) +HANDLE_BAT(, 8593) +HANDLE_BAT(, 8594) +HANDLE_BAT(, 8595) +HANDLE_BAT(, 8596) +HANDLE_BAT(, 8597) +HANDLE_BAT(, 8598) +HANDLE_BAT(, 8599) +HANDLE_BAT(, 8600) +HANDLE_BAT(, 8601) +HANDLE_BAT(, 8602) +HANDLE_BAT(, 8603) +HANDLE_BAT(, 8604) +HANDLE_BAT(, 8605) +HANDLE_BAT(, 8606) +HANDLE_BAT(, 8607) +HANDLE_BAT(, 8608) +HANDLE_BAT(, 8609) +HANDLE_BAT(, 8610) +HANDLE_BAT(, 8611) +HANDLE_BAT(, 8612) +HANDLE_BAT(, 8613) +HANDLE_BAT(, 8614) +HANDLE_BAT(, 8615) +HANDLE_BAT(, 8616) +HANDLE_BAT(, 8617) +HANDLE_BAT(, 8618) +HANDLE_BAT(, 8619) +HANDLE_BAT(, 8620) +HANDLE_BAT(, 8621) +HANDLE_BAT(, 8622) +HANDLE_BAT(, 8623) +HANDLE_BAT(, 8624) +HANDLE_BAT(, 8625) +HANDLE_BAT(, 8626) +HANDLE_BAT(, 8627) +HANDLE_BAT(, 8628) +HANDLE_BAT(, 8629) +HANDLE_BAT(, 8630) +HANDLE_BAT(, 8631) +HANDLE_BAT(, 8632) +HANDLE_BAT(, 8633) +HANDLE_BAT(, 8634) +HANDLE_BAT(, 8635) +HANDLE_BAT(, 8636) +HANDLE_BAT(, 8637) +HANDLE_BAT(, 8638) +HANDLE_BAT(, 8639) +HANDLE_BAT(, 8640) +HANDLE_BAT(, 8641) +HANDLE_BAT(, 8642) +HANDLE_BAT(, 8643) +HANDLE_BAT(, 8644) +HANDLE_BAT(, 8645) +HANDLE_BAT(, 8646) +HANDLE_BAT(, 8647) +HANDLE_BAT(, 8648) +HANDLE_BAT(, 8649) +HANDLE_BAT(, 8650) +HANDLE_BAT(, 8651) +HANDLE_BAT(, 8652) +HANDLE_BAT(, 8653) +HANDLE_BAT(, 8654) +HANDLE_BAT(, 8655) +HANDLE_BAT(, 8656) +HANDLE_BAT(, 8657) +HANDLE_BAT(, 8658) +HANDLE_BAT(, 8659) +HANDLE_BAT(, 8660) +HANDLE_BAT(, 8661) +HANDLE_BAT(, 8662) +HANDLE_BAT(, 8663) +HANDLE_BAT(, 8664) +HANDLE_BAT(, 8665) +HANDLE_BAT(, 8666) +HANDLE_BAT(, 8667) +HANDLE_BAT(, 8668) +HANDLE_BAT(, 8669) +HANDLE_BAT(, 8670) +HANDLE_BAT(, 8671) +HANDLE_BAT(, 8672) +HANDLE_BAT(, 8673) +HANDLE_BAT(, 8674) +HANDLE_BAT(, 8675) +HANDLE_BAT(, 8676) +HANDLE_BAT(, 8677) +HANDLE_BAT(, 8678) +HANDLE_BAT(, 8679) +HANDLE_BAT(, 8680) +HANDLE_BAT(, 8681) +HANDLE_BAT(, 8682) +HANDLE_BAT(, 8683) +HANDLE_BAT(, 8684) +HANDLE_BAT(, 8685) +HANDLE_BAT(, 8686) +HANDLE_BAT(, 8687) +HANDLE_BAT(, 8688) +HANDLE_BAT(, 8689) +HANDLE_BAT(, 8690) +HANDLE_BAT(, 8691) +HANDLE_BAT(, 8692) +HANDLE_BAT(, 8693) +HANDLE_BAT(, 8694) +HANDLE_BAT(, 8695) +HANDLE_BAT(, 8696) +HANDLE_BAT(, 8697) +HANDLE_BAT(, 8698) +HANDLE_BAT(, 8699) +HANDLE_BAT(, 8700) +HANDLE_BAT(, 8701) +HANDLE_BAT(, 8702) +HANDLE_BAT(, 8703) +HANDLE_BAT(, 8704) +HANDLE_BAT(, 8705) +HANDLE_BAT(, 8706) +HANDLE_BAT(, 8707) +HANDLE_BAT(, 8708) +HANDLE_BAT(, 8709) +HANDLE_BAT(, 8710) +HANDLE_BAT(, 8711) +HANDLE_BAT(, 8712) +HANDLE_BAT(, 8713) +HANDLE_BAT(, 8714) +HANDLE_BAT(, 8715) +HANDLE_BAT(, 8716) +HANDLE_BAT(, 8717) +HANDLE_BAT(, 8718) +HANDLE_BAT(, 8719) +HANDLE_BAT(, 8720) +HANDLE_BAT(, 8721) +HANDLE_BAT(, 8722) +HANDLE_BAT(, 8723) +HANDLE_BAT(, 8724) +HANDLE_BAT(, 8725) +HANDLE_BAT(, 8726) +HANDLE_BAT(, 8727) +HANDLE_BAT(, 8728) +HANDLE_BAT(, 8729) +HANDLE_BAT(, 8730) +HANDLE_BAT(, 8731) +HANDLE_BAT(, 8732) +HANDLE_BAT(, 8733) +HANDLE_BAT(, 8734) +HANDLE_BAT(, 8735) +HANDLE_BAT(, 8736) +HANDLE_BAT(, 8737) +HANDLE_BAT(, 8738) +HANDLE_BAT(, 8739) +HANDLE_BAT(, 8740) +HANDLE_BAT(, 8741) +HANDLE_BAT(, 8742) +HANDLE_BAT(, 8743) +HANDLE_BAT(, 8744) +HANDLE_BAT(, 8745) +HANDLE_BAT(, 8746) +HANDLE_BAT(, 8747) +HANDLE_BAT(, 8748) +HANDLE_BAT(, 8749) +HANDLE_BAT(, 8750) +HANDLE_BAT(, 8751) +HANDLE_BAT(, 8752) +HANDLE_BAT(, 8753) +HANDLE_BAT(, 8754) +HANDLE_BAT(, 8755) +HANDLE_BAT(, 8756) +HANDLE_BAT(, 8757) +HANDLE_BAT(, 8758) +HANDLE_BAT(, 8759) +HANDLE_BAT(, 8760) +HANDLE_BAT(, 8761) +HANDLE_BAT(, 8762) +HANDLE_BAT(, 8763) +HANDLE_BAT(, 8764) +HANDLE_BAT(, 8765) +HANDLE_BAT(, 8766) +HANDLE_BAT(, 8767) +HANDLE_BAT(, 8768) +HANDLE_BAT(, 8769) +HANDLE_BAT(, 8770) +HANDLE_BAT(, 8771) +HANDLE_BAT(, 8772) +HANDLE_BAT(, 8773) +HANDLE_BAT(, 8774) +HANDLE_BAT(, 8775) +HANDLE_BAT(, 8776) +HANDLE_BAT(, 8777) +HANDLE_BAT(, 8778) +HANDLE_BAT(, 8779) +HANDLE_BAT(, 8780) +HANDLE_BAT(, 8781) +HANDLE_BAT(, 8782) +HANDLE_BAT(, 8783) +HANDLE_BAT(, 8784) +HANDLE_BAT(, 8785) +HANDLE_BAT(, 8786) +HANDLE_BAT(, 8787) +HANDLE_BAT(, 8788) +HANDLE_BAT(, 8789) +HANDLE_BAT(, 8790) +HANDLE_BAT(, 8791) +HANDLE_BAT(, 8792) +HANDLE_BAT(, 8793) +HANDLE_BAT(, 8794) +HANDLE_BAT(, 8795) +HANDLE_BAT(, 8796) +HANDLE_BAT(, 8797) +HANDLE_BAT(, 8798) +HANDLE_BAT(, 8799) +HANDLE_BAT(, 8800) +HANDLE_BAT(, 8801) +HANDLE_BAT(, 8802) +HANDLE_BAT(, 8803) +HANDLE_BAT(, 8804) +HANDLE_BAT(, 8805) +HANDLE_BAT(, 8806) +HANDLE_BAT(, 8807) +HANDLE_BAT(, 8808) +HANDLE_BAT(, 8809) +HANDLE_BAT(, 8810) +HANDLE_BAT(, 8811) +HANDLE_BAT(, 8812) +HANDLE_BAT(, 8813) +HANDLE_BAT(, 8814) +HANDLE_BAT(, 8815) +HANDLE_BAT(, 8816) +HANDLE_BAT(, 8817) +HANDLE_BAT(, 8818) +HANDLE_BAT(, 8819) +HANDLE_BAT(, 8820) +HANDLE_BAT(, 8821) +HANDLE_BAT(, 8822) +HANDLE_BAT(, 8823) +HANDLE_BAT(, 8824) +HANDLE_BAT(, 8825) +HANDLE_BAT(, 8826) +HANDLE_BAT(, 8827) +HANDLE_BAT(, 8828) +HANDLE_BAT(, 8829) +HANDLE_BAT(, 8830) +HANDLE_BAT(, 8831) +HANDLE_BAT(, 8832) +HANDLE_BAT(, 8833) +HANDLE_BAT(, 8834) +HANDLE_BAT(, 8835) +HANDLE_BAT(, 8836) +HANDLE_BAT(, 8837) +HANDLE_BAT(, 8838) +HANDLE_BAT(, 8839) +HANDLE_BAT(, 8840) +HANDLE_BAT(, 8841) +HANDLE_BAT(, 8842) +HANDLE_BAT(, 8843) +HANDLE_BAT(, 8844) +HANDLE_BAT(, 8845) +HANDLE_BAT(, 8846) +HANDLE_BAT(, 8847) +HANDLE_BAT(, 8848) +HANDLE_BAT(, 8849) +HANDLE_BAT(, 8850) +HANDLE_BAT(, 8851) +HANDLE_BAT(, 8852) +HANDLE_BAT(, 8853) +HANDLE_BAT(, 8854) +HANDLE_BAT(, 8855) +HANDLE_BAT(, 8856) +HANDLE_BAT(, 8857) +HANDLE_BAT(, 8858) +HANDLE_BAT(, 8859) +HANDLE_BAT(, 8860) +HANDLE_BAT(, 8861) +HANDLE_BAT(, 8862) +HANDLE_BAT(, 8863) +HANDLE_BAT(, 8864) +HANDLE_BAT(, 8865) +HANDLE_BAT(, 8866) +HANDLE_BAT(, 8867) +HANDLE_BAT(, 8868) +HANDLE_BAT(, 8869) +HANDLE_BAT(, 8870) +HANDLE_BAT(, 8871) +HANDLE_BAT(, 8872) +HANDLE_BAT(, 8873) +HANDLE_BAT(, 8874) +HANDLE_BAT(, 8875) +HANDLE_BAT(, 8876) +HANDLE_BAT(, 8877) +HANDLE_BAT(, 8878) +HANDLE_BAT(, 8879) +HANDLE_BAT(, 8880) +HANDLE_BAT(, 8881) +HANDLE_BAT(, 8882) +HANDLE_BAT(, 8883) +HANDLE_BAT(, 8884) +HANDLE_BAT(, 8885) +HANDLE_BAT(, 8886) +HANDLE_BAT(, 8887) +HANDLE_BAT(, 8888) +HANDLE_BAT(, 8889) +HANDLE_BAT(, 8890) +HANDLE_BAT(, 8891) +HANDLE_BAT(, 8892) +HANDLE_BAT(, 8893) +HANDLE_BAT(, 8894) +HANDLE_BAT(, 8895) +HANDLE_BAT(, 8896) +HANDLE_BAT(, 8897) +HANDLE_BAT(, 8898) +HANDLE_BAT(, 8899) +HANDLE_BAT(, 8900) +HANDLE_BAT(, 8901) +HANDLE_BAT(, 8902) +HANDLE_BAT(, 8903) +HANDLE_BAT(, 8904) +HANDLE_BAT(, 8905) +HANDLE_BAT(, 8906) +HANDLE_BAT(, 8907) +HANDLE_BAT(, 8908) +HANDLE_BAT(, 8909) +HANDLE_BAT(, 8910) +HANDLE_BAT(, 8911) +HANDLE_BAT(, 8912) +HANDLE_BAT(, 8913) +HANDLE_BAT(, 8914) +HANDLE_BAT(, 8915) +HANDLE_BAT(, 8916) +HANDLE_BAT(, 8917) +HANDLE_BAT(, 8918) +HANDLE_BAT(, 8919) +HANDLE_BAT(, 8920) +HANDLE_BAT(, 8921) +HANDLE_BAT(, 8922) +HANDLE_BAT(, 8923) +HANDLE_BAT(, 8924) +HANDLE_BAT(, 8925) +HANDLE_BAT(, 8926) +HANDLE_BAT(, 8927) +HANDLE_BAT(, 8928) +HANDLE_BAT(, 8929) +HANDLE_BAT(, 8930) +HANDLE_BAT(, 8931) +HANDLE_BAT(, 8932) +HANDLE_BAT(, 8933) +HANDLE_BAT(, 8934) +HANDLE_BAT(, 8935) +HANDLE_BAT(, 8936) +HANDLE_BAT(, 8937) +HANDLE_BAT(, 8938) +HANDLE_BAT(, 8939) +HANDLE_BAT(, 8940) +HANDLE_BAT(, 8941) +HANDLE_BAT(, 8942) +HANDLE_BAT(, 8943) +HANDLE_BAT(, 8944) +HANDLE_BAT(, 8945) +HANDLE_BAT(, 8946) +HANDLE_BAT(, 8947) +HANDLE_BAT(, 8948) +HANDLE_BAT(, 8949) +HANDLE_BAT(, 8950) +HANDLE_BAT(, 8951) +HANDLE_BAT(, 8952) +HANDLE_BAT(, 8953) +HANDLE_BAT(, 8954) +HANDLE_BAT(, 8955) +HANDLE_BAT(, 8956) +HANDLE_BAT(, 8957) +HANDLE_BAT(, 8958) +HANDLE_BAT(, 8959) +HANDLE_BAT(, 8960) +HANDLE_BAT(, 8961) +HANDLE_BAT(, 8962) +HANDLE_BAT(, 8963) +HANDLE_BAT(, 8964) +HANDLE_BAT(, 8965) +HANDLE_BAT(, 8966) +HANDLE_BAT(, 8967) +HANDLE_BAT(, 8968) +HANDLE_BAT(, 8969) +HANDLE_BAT(, 8970) +HANDLE_BAT(, 8971) +HANDLE_BAT(, 8972) +HANDLE_BAT(, 8973) +HANDLE_BAT(, 8974) +HANDLE_BAT(, 8975) +HANDLE_BAT(, 8976) +HANDLE_BAT(, 8977) +HANDLE_BAT(, 8978) +HANDLE_BAT(, 8979) +HANDLE_BAT(, 8980) +HANDLE_BAT(, 8981) +HANDLE_BAT(, 8982) +HANDLE_BAT(, 8983) +HANDLE_BAT(, 8984) +HANDLE_BAT(, 8985) +HANDLE_BAT(, 8986) +HANDLE_BAT(, 8987) +HANDLE_BAT(, 8988) +HANDLE_BAT(, 8989) +HANDLE_BAT(, 8990) +HANDLE_BAT(, 8991) +HANDLE_BAT(, 8992) +HANDLE_BAT(, 8993) +HANDLE_BAT(, 8994) +HANDLE_BAT(, 8995) +HANDLE_BAT(, 8996) +HANDLE_BAT(, 8997) +HANDLE_BAT(, 8998) +HANDLE_BAT(, 8999) +HANDLE_BAT(, 9000) +HANDLE_BAT(, 9001) +HANDLE_BAT(, 9002) +HANDLE_BAT(, 9003) +HANDLE_BAT(, 9004) +HANDLE_BAT(, 9005) +HANDLE_BAT(, 9006) +HANDLE_BAT(, 9007) +HANDLE_BAT(, 9008) +HANDLE_BAT(, 9009) +HANDLE_BAT(, 9010) +HANDLE_BAT(, 9011) +HANDLE_BAT(, 9012) +HANDLE_BAT(, 9013) +HANDLE_BAT(, 9014) +HANDLE_BAT(, 9015) +HANDLE_BAT(, 9016) +HANDLE_BAT(, 9017) +HANDLE_BAT(, 9018) +HANDLE_BAT(, 9019) +HANDLE_BAT(, 9020) +HANDLE_BAT(, 9021) +HANDLE_BAT(, 9022) +HANDLE_BAT(, 9023) +HANDLE_BAT(, 9024) +HANDLE_BAT(, 9025) +HANDLE_BAT(, 9026) +HANDLE_BAT(, 9027) +HANDLE_BAT(, 9028) +HANDLE_BAT(, 9029) +HANDLE_BAT(, 9030) +HANDLE_BAT(, 9031) +HANDLE_BAT(, 9032) +HANDLE_BAT(, 9033) +HANDLE_BAT(, 9034) +HANDLE_BAT(, 9035) +HANDLE_BAT(, 9036) +HANDLE_BAT(, 9037) +HANDLE_BAT(, 9038) +HANDLE_BAT(, 9039) +HANDLE_BAT(, 9040) +HANDLE_BAT(, 9041) +HANDLE_BAT(, 9042) +HANDLE_BAT(, 9043) +HANDLE_BAT(, 9044) +HANDLE_BAT(, 9045) +HANDLE_BAT(, 9046) +HANDLE_BAT(, 9047) +HANDLE_BAT(, 9048) +HANDLE_BAT(, 9049) +HANDLE_BAT(, 9050) +HANDLE_BAT(, 9051) +HANDLE_BAT(, 9052) +HANDLE_BAT(, 9053) +HANDLE_BAT(, 9054) +HANDLE_BAT(, 9055) +HANDLE_BAT(, 9056) +HANDLE_BAT(, 9057) +HANDLE_BAT(, 9058) +HANDLE_BAT(, 9059) +HANDLE_BAT(, 9060) +HANDLE_BAT(, 9061) +HANDLE_BAT(, 9062) +HANDLE_BAT(, 9063) +HANDLE_BAT(, 9064) +HANDLE_BAT(, 9065) +HANDLE_BAT(, 9066) +HANDLE_BAT(, 9067) +HANDLE_BAT(, 9068) +HANDLE_BAT(, 9069) +HANDLE_BAT(, 9070) +HANDLE_BAT(, 9071) +HANDLE_BAT(, 9072) +HANDLE_BAT(, 9073) +HANDLE_BAT(, 9074) +HANDLE_BAT(, 9075) +HANDLE_BAT(, 9076) +HANDLE_BAT(, 9077) +HANDLE_BAT(, 9078) +HANDLE_BAT(, 9079) +HANDLE_BAT(, 9080) +HANDLE_BAT(, 9081) +HANDLE_BAT(, 9082) +HANDLE_BAT(, 9083) +HANDLE_BAT(, 9084) +HANDLE_BAT(, 9085) +HANDLE_BAT(, 9086) +HANDLE_BAT(, 9087) +HANDLE_BAT(, 9088) +HANDLE_BAT(, 9089) +HANDLE_BAT(, 9090) +HANDLE_BAT(, 9091) +HANDLE_BAT(, 9092) +HANDLE_BAT(, 9093) +HANDLE_BAT(, 9094) +HANDLE_BAT(, 9095) +HANDLE_BAT(, 9096) +HANDLE_BAT(, 9097) +HANDLE_BAT(, 9098) +HANDLE_BAT(, 9099) +HANDLE_BAT(, 9100) +HANDLE_BAT(, 9101) +HANDLE_BAT(, 9102) +HANDLE_BAT(, 9103) +HANDLE_BAT(, 9104) +HANDLE_BAT(, 9105) +HANDLE_BAT(, 9106) +HANDLE_BAT(, 9107) +HANDLE_BAT(, 9108) +HANDLE_BAT(, 9109) +HANDLE_BAT(, 9110) +HANDLE_BAT(, 9111) +HANDLE_BAT(, 9112) +HANDLE_BAT(, 9113) +HANDLE_BAT(, 9114) +HANDLE_BAT(, 9115) +HANDLE_BAT(, 9116) +HANDLE_BAT(, 9117) +HANDLE_BAT(, 9118) +HANDLE_BAT(, 9119) +HANDLE_BAT(, 9120) +HANDLE_BAT(, 9121) +HANDLE_BAT(, 9122) +HANDLE_BAT(, 9123) +HANDLE_BAT(, 9124) +HANDLE_BAT(, 9125) +HANDLE_BAT(, 9126) +HANDLE_BAT(, 9127) +HANDLE_BAT(, 9128) +HANDLE_BAT(, 9129) +HANDLE_BAT(, 9130) +HANDLE_BAT(, 9131) +HANDLE_BAT(, 9132) +HANDLE_BAT(, 9133) +HANDLE_BAT(, 9134) +HANDLE_BAT(, 9135) +HANDLE_BAT(, 9136) +HANDLE_BAT(, 9137) +HANDLE_BAT(, 9138) +HANDLE_BAT(, 9139) +HANDLE_BAT(, 9140) +HANDLE_BAT(, 9141) +HANDLE_BAT(, 9142) +HANDLE_BAT(, 9143) +HANDLE_BAT(, 9144) +HANDLE_BAT(, 9145) +HANDLE_BAT(, 9146) +HANDLE_BAT(, 9147) +HANDLE_BAT(, 9148) +HANDLE_BAT(, 9149) +HANDLE_BAT(, 9150) +HANDLE_BAT(, 9151) +HANDLE_BAT(, 9152) +HANDLE_BAT(, 9153) +HANDLE_BAT(, 9154) +HANDLE_BAT(, 9155) +HANDLE_BAT(, 9156) +HANDLE_BAT(, 9157) +HANDLE_BAT(, 9158) +HANDLE_BAT(, 9159) +HANDLE_BAT(, 9160) +HANDLE_BAT(, 9161) +HANDLE_BAT(, 9162) +HANDLE_BAT(, 9163) +HANDLE_BAT(, 9164) +HANDLE_BAT(, 9165) +HANDLE_BAT(, 9166) +HANDLE_BAT(, 9167) +HANDLE_BAT(, 9168) +HANDLE_BAT(, 9169) +HANDLE_BAT(, 9170) +HANDLE_BAT(, 9171) +HANDLE_BAT(, 9172) +HANDLE_BAT(, 9173) +HANDLE_BAT(, 9174) +HANDLE_BAT(, 9175) +HANDLE_BAT(, 9176) +HANDLE_BAT(, 9177) +HANDLE_BAT(, 9178) +HANDLE_BAT(, 9179) +HANDLE_BAT(, 9180) +HANDLE_BAT(, 9181) +HANDLE_BAT(, 9182) +HANDLE_BAT(, 9183) +HANDLE_BAT(, 9184) +HANDLE_BAT(, 9185) +HANDLE_BAT(, 9186) +HANDLE_BAT(, 9187) +HANDLE_BAT(, 9188) +HANDLE_BAT(, 9189) +HANDLE_BAT(, 9190) +HANDLE_BAT(, 9191) +HANDLE_BAT(, 9192) +HANDLE_BAT(, 9193) +HANDLE_BAT(, 9194) +HANDLE_BAT(, 9195) +HANDLE_BAT(, 9196) +HANDLE_BAT(, 9197) +HANDLE_BAT(, 9198) +HANDLE_BAT(, 9199) +HANDLE_BAT(, 9200) +HANDLE_BAT(, 9201) +HANDLE_BAT(, 9202) +HANDLE_BAT(, 9203) +HANDLE_BAT(, 9204) +HANDLE_BAT(, 9205) +HANDLE_BAT(, 9206) +HANDLE_BAT(, 9207) +HANDLE_BAT(, 9208) +HANDLE_BAT(, 9209) +HANDLE_BAT(, 9210) +HANDLE_BAT(, 9211) +HANDLE_BAT(, 9212) +HANDLE_BAT(, 9213) +HANDLE_BAT(, 9214) +HANDLE_BAT(, 9215) +HANDLE_BAT(, 9216) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 8193) +HANDLE_BAT(APINT_TYPE_PREFIX, 8194) +HANDLE_BAT(APINT_TYPE_PREFIX, 8195) +HANDLE_BAT(APINT_TYPE_PREFIX, 8196) +HANDLE_BAT(APINT_TYPE_PREFIX, 8197) +HANDLE_BAT(APINT_TYPE_PREFIX, 8198) +HANDLE_BAT(APINT_TYPE_PREFIX, 8199) +HANDLE_BAT(APINT_TYPE_PREFIX, 8200) +HANDLE_BAT(APINT_TYPE_PREFIX, 8201) +HANDLE_BAT(APINT_TYPE_PREFIX, 8202) +HANDLE_BAT(APINT_TYPE_PREFIX, 8203) +HANDLE_BAT(APINT_TYPE_PREFIX, 8204) +HANDLE_BAT(APINT_TYPE_PREFIX, 8205) +HANDLE_BAT(APINT_TYPE_PREFIX, 8206) +HANDLE_BAT(APINT_TYPE_PREFIX, 8207) +HANDLE_BAT(APINT_TYPE_PREFIX, 8208) +HANDLE_BAT(APINT_TYPE_PREFIX, 8209) +HANDLE_BAT(APINT_TYPE_PREFIX, 8210) +HANDLE_BAT(APINT_TYPE_PREFIX, 8211) +HANDLE_BAT(APINT_TYPE_PREFIX, 8212) +HANDLE_BAT(APINT_TYPE_PREFIX, 8213) +HANDLE_BAT(APINT_TYPE_PREFIX, 8214) +HANDLE_BAT(APINT_TYPE_PREFIX, 8215) +HANDLE_BAT(APINT_TYPE_PREFIX, 8216) +HANDLE_BAT(APINT_TYPE_PREFIX, 8217) +HANDLE_BAT(APINT_TYPE_PREFIX, 8218) +HANDLE_BAT(APINT_TYPE_PREFIX, 8219) +HANDLE_BAT(APINT_TYPE_PREFIX, 8220) +HANDLE_BAT(APINT_TYPE_PREFIX, 8221) +HANDLE_BAT(APINT_TYPE_PREFIX, 8222) +HANDLE_BAT(APINT_TYPE_PREFIX, 8223) +HANDLE_BAT(APINT_TYPE_PREFIX, 8224) +HANDLE_BAT(APINT_TYPE_PREFIX, 8225) +HANDLE_BAT(APINT_TYPE_PREFIX, 8226) +HANDLE_BAT(APINT_TYPE_PREFIX, 8227) +HANDLE_BAT(APINT_TYPE_PREFIX, 8228) +HANDLE_BAT(APINT_TYPE_PREFIX, 8229) +HANDLE_BAT(APINT_TYPE_PREFIX, 8230) +HANDLE_BAT(APINT_TYPE_PREFIX, 8231) +HANDLE_BAT(APINT_TYPE_PREFIX, 8232) +HANDLE_BAT(APINT_TYPE_PREFIX, 8233) +HANDLE_BAT(APINT_TYPE_PREFIX, 8234) +HANDLE_BAT(APINT_TYPE_PREFIX, 8235) +HANDLE_BAT(APINT_TYPE_PREFIX, 8236) +HANDLE_BAT(APINT_TYPE_PREFIX, 8237) +HANDLE_BAT(APINT_TYPE_PREFIX, 8238) +HANDLE_BAT(APINT_TYPE_PREFIX, 8239) +HANDLE_BAT(APINT_TYPE_PREFIX, 8240) +HANDLE_BAT(APINT_TYPE_PREFIX, 8241) +HANDLE_BAT(APINT_TYPE_PREFIX, 8242) +HANDLE_BAT(APINT_TYPE_PREFIX, 8243) +HANDLE_BAT(APINT_TYPE_PREFIX, 8244) +HANDLE_BAT(APINT_TYPE_PREFIX, 8245) +HANDLE_BAT(APINT_TYPE_PREFIX, 8246) +HANDLE_BAT(APINT_TYPE_PREFIX, 8247) +HANDLE_BAT(APINT_TYPE_PREFIX, 8248) +HANDLE_BAT(APINT_TYPE_PREFIX, 8249) +HANDLE_BAT(APINT_TYPE_PREFIX, 8250) +HANDLE_BAT(APINT_TYPE_PREFIX, 8251) +HANDLE_BAT(APINT_TYPE_PREFIX, 8252) +HANDLE_BAT(APINT_TYPE_PREFIX, 8253) +HANDLE_BAT(APINT_TYPE_PREFIX, 8254) +HANDLE_BAT(APINT_TYPE_PREFIX, 8255) +HANDLE_BAT(APINT_TYPE_PREFIX, 8256) +HANDLE_BAT(APINT_TYPE_PREFIX, 8257) +HANDLE_BAT(APINT_TYPE_PREFIX, 8258) +HANDLE_BAT(APINT_TYPE_PREFIX, 8259) +HANDLE_BAT(APINT_TYPE_PREFIX, 8260) +HANDLE_BAT(APINT_TYPE_PREFIX, 8261) +HANDLE_BAT(APINT_TYPE_PREFIX, 8262) +HANDLE_BAT(APINT_TYPE_PREFIX, 8263) +HANDLE_BAT(APINT_TYPE_PREFIX, 8264) +HANDLE_BAT(APINT_TYPE_PREFIX, 8265) +HANDLE_BAT(APINT_TYPE_PREFIX, 8266) +HANDLE_BAT(APINT_TYPE_PREFIX, 8267) +HANDLE_BAT(APINT_TYPE_PREFIX, 8268) +HANDLE_BAT(APINT_TYPE_PREFIX, 8269) +HANDLE_BAT(APINT_TYPE_PREFIX, 8270) +HANDLE_BAT(APINT_TYPE_PREFIX, 8271) +HANDLE_BAT(APINT_TYPE_PREFIX, 8272) +HANDLE_BAT(APINT_TYPE_PREFIX, 8273) +HANDLE_BAT(APINT_TYPE_PREFIX, 8274) +HANDLE_BAT(APINT_TYPE_PREFIX, 8275) +HANDLE_BAT(APINT_TYPE_PREFIX, 8276) +HANDLE_BAT(APINT_TYPE_PREFIX, 8277) +HANDLE_BAT(APINT_TYPE_PREFIX, 8278) +HANDLE_BAT(APINT_TYPE_PREFIX, 8279) +HANDLE_BAT(APINT_TYPE_PREFIX, 8280) +HANDLE_BAT(APINT_TYPE_PREFIX, 8281) +HANDLE_BAT(APINT_TYPE_PREFIX, 8282) +HANDLE_BAT(APINT_TYPE_PREFIX, 8283) +HANDLE_BAT(APINT_TYPE_PREFIX, 8284) +HANDLE_BAT(APINT_TYPE_PREFIX, 8285) +HANDLE_BAT(APINT_TYPE_PREFIX, 8286) +HANDLE_BAT(APINT_TYPE_PREFIX, 8287) +HANDLE_BAT(APINT_TYPE_PREFIX, 8288) +HANDLE_BAT(APINT_TYPE_PREFIX, 8289) +HANDLE_BAT(APINT_TYPE_PREFIX, 8290) +HANDLE_BAT(APINT_TYPE_PREFIX, 8291) +HANDLE_BAT(APINT_TYPE_PREFIX, 8292) +HANDLE_BAT(APINT_TYPE_PREFIX, 8293) +HANDLE_BAT(APINT_TYPE_PREFIX, 8294) +HANDLE_BAT(APINT_TYPE_PREFIX, 8295) +HANDLE_BAT(APINT_TYPE_PREFIX, 8296) +HANDLE_BAT(APINT_TYPE_PREFIX, 8297) +HANDLE_BAT(APINT_TYPE_PREFIX, 8298) +HANDLE_BAT(APINT_TYPE_PREFIX, 8299) +HANDLE_BAT(APINT_TYPE_PREFIX, 8300) +HANDLE_BAT(APINT_TYPE_PREFIX, 8301) +HANDLE_BAT(APINT_TYPE_PREFIX, 8302) +HANDLE_BAT(APINT_TYPE_PREFIX, 8303) +HANDLE_BAT(APINT_TYPE_PREFIX, 8304) +HANDLE_BAT(APINT_TYPE_PREFIX, 8305) +HANDLE_BAT(APINT_TYPE_PREFIX, 8306) +HANDLE_BAT(APINT_TYPE_PREFIX, 8307) +HANDLE_BAT(APINT_TYPE_PREFIX, 8308) +HANDLE_BAT(APINT_TYPE_PREFIX, 8309) +HANDLE_BAT(APINT_TYPE_PREFIX, 8310) +HANDLE_BAT(APINT_TYPE_PREFIX, 8311) +HANDLE_BAT(APINT_TYPE_PREFIX, 8312) +HANDLE_BAT(APINT_TYPE_PREFIX, 8313) +HANDLE_BAT(APINT_TYPE_PREFIX, 8314) +HANDLE_BAT(APINT_TYPE_PREFIX, 8315) +HANDLE_BAT(APINT_TYPE_PREFIX, 8316) +HANDLE_BAT(APINT_TYPE_PREFIX, 8317) +HANDLE_BAT(APINT_TYPE_PREFIX, 8318) +HANDLE_BAT(APINT_TYPE_PREFIX, 8319) +HANDLE_BAT(APINT_TYPE_PREFIX, 8320) +HANDLE_BAT(APINT_TYPE_PREFIX, 8321) +HANDLE_BAT(APINT_TYPE_PREFIX, 8322) +HANDLE_BAT(APINT_TYPE_PREFIX, 8323) +HANDLE_BAT(APINT_TYPE_PREFIX, 8324) +HANDLE_BAT(APINT_TYPE_PREFIX, 8325) +HANDLE_BAT(APINT_TYPE_PREFIX, 8326) +HANDLE_BAT(APINT_TYPE_PREFIX, 8327) +HANDLE_BAT(APINT_TYPE_PREFIX, 8328) +HANDLE_BAT(APINT_TYPE_PREFIX, 8329) +HANDLE_BAT(APINT_TYPE_PREFIX, 8330) +HANDLE_BAT(APINT_TYPE_PREFIX, 8331) +HANDLE_BAT(APINT_TYPE_PREFIX, 8332) +HANDLE_BAT(APINT_TYPE_PREFIX, 8333) +HANDLE_BAT(APINT_TYPE_PREFIX, 8334) +HANDLE_BAT(APINT_TYPE_PREFIX, 8335) +HANDLE_BAT(APINT_TYPE_PREFIX, 8336) +HANDLE_BAT(APINT_TYPE_PREFIX, 8337) +HANDLE_BAT(APINT_TYPE_PREFIX, 8338) +HANDLE_BAT(APINT_TYPE_PREFIX, 8339) +HANDLE_BAT(APINT_TYPE_PREFIX, 8340) +HANDLE_BAT(APINT_TYPE_PREFIX, 8341) +HANDLE_BAT(APINT_TYPE_PREFIX, 8342) +HANDLE_BAT(APINT_TYPE_PREFIX, 8343) +HANDLE_BAT(APINT_TYPE_PREFIX, 8344) +HANDLE_BAT(APINT_TYPE_PREFIX, 8345) +HANDLE_BAT(APINT_TYPE_PREFIX, 8346) +HANDLE_BAT(APINT_TYPE_PREFIX, 8347) +HANDLE_BAT(APINT_TYPE_PREFIX, 8348) +HANDLE_BAT(APINT_TYPE_PREFIX, 8349) +HANDLE_BAT(APINT_TYPE_PREFIX, 8350) +HANDLE_BAT(APINT_TYPE_PREFIX, 8351) +HANDLE_BAT(APINT_TYPE_PREFIX, 8352) +HANDLE_BAT(APINT_TYPE_PREFIX, 8353) +HANDLE_BAT(APINT_TYPE_PREFIX, 8354) +HANDLE_BAT(APINT_TYPE_PREFIX, 8355) +HANDLE_BAT(APINT_TYPE_PREFIX, 8356) +HANDLE_BAT(APINT_TYPE_PREFIX, 8357) +HANDLE_BAT(APINT_TYPE_PREFIX, 8358) +HANDLE_BAT(APINT_TYPE_PREFIX, 8359) +HANDLE_BAT(APINT_TYPE_PREFIX, 8360) +HANDLE_BAT(APINT_TYPE_PREFIX, 8361) +HANDLE_BAT(APINT_TYPE_PREFIX, 8362) +HANDLE_BAT(APINT_TYPE_PREFIX, 8363) +HANDLE_BAT(APINT_TYPE_PREFIX, 8364) +HANDLE_BAT(APINT_TYPE_PREFIX, 8365) +HANDLE_BAT(APINT_TYPE_PREFIX, 8366) +HANDLE_BAT(APINT_TYPE_PREFIX, 8367) +HANDLE_BAT(APINT_TYPE_PREFIX, 8368) +HANDLE_BAT(APINT_TYPE_PREFIX, 8369) +HANDLE_BAT(APINT_TYPE_PREFIX, 8370) +HANDLE_BAT(APINT_TYPE_PREFIX, 8371) +HANDLE_BAT(APINT_TYPE_PREFIX, 8372) +HANDLE_BAT(APINT_TYPE_PREFIX, 8373) +HANDLE_BAT(APINT_TYPE_PREFIX, 8374) +HANDLE_BAT(APINT_TYPE_PREFIX, 8375) +HANDLE_BAT(APINT_TYPE_PREFIX, 8376) +HANDLE_BAT(APINT_TYPE_PREFIX, 8377) +HANDLE_BAT(APINT_TYPE_PREFIX, 8378) +HANDLE_BAT(APINT_TYPE_PREFIX, 8379) +HANDLE_BAT(APINT_TYPE_PREFIX, 8380) +HANDLE_BAT(APINT_TYPE_PREFIX, 8381) +HANDLE_BAT(APINT_TYPE_PREFIX, 8382) +HANDLE_BAT(APINT_TYPE_PREFIX, 8383) +HANDLE_BAT(APINT_TYPE_PREFIX, 8384) +HANDLE_BAT(APINT_TYPE_PREFIX, 8385) +HANDLE_BAT(APINT_TYPE_PREFIX, 8386) +HANDLE_BAT(APINT_TYPE_PREFIX, 8387) +HANDLE_BAT(APINT_TYPE_PREFIX, 8388) +HANDLE_BAT(APINT_TYPE_PREFIX, 8389) +HANDLE_BAT(APINT_TYPE_PREFIX, 8390) +HANDLE_BAT(APINT_TYPE_PREFIX, 8391) +HANDLE_BAT(APINT_TYPE_PREFIX, 8392) +HANDLE_BAT(APINT_TYPE_PREFIX, 8393) +HANDLE_BAT(APINT_TYPE_PREFIX, 8394) +HANDLE_BAT(APINT_TYPE_PREFIX, 8395) +HANDLE_BAT(APINT_TYPE_PREFIX, 8396) +HANDLE_BAT(APINT_TYPE_PREFIX, 8397) +HANDLE_BAT(APINT_TYPE_PREFIX, 8398) +HANDLE_BAT(APINT_TYPE_PREFIX, 8399) +HANDLE_BAT(APINT_TYPE_PREFIX, 8400) +HANDLE_BAT(APINT_TYPE_PREFIX, 8401) +HANDLE_BAT(APINT_TYPE_PREFIX, 8402) +HANDLE_BAT(APINT_TYPE_PREFIX, 8403) +HANDLE_BAT(APINT_TYPE_PREFIX, 8404) +HANDLE_BAT(APINT_TYPE_PREFIX, 8405) +HANDLE_BAT(APINT_TYPE_PREFIX, 8406) +HANDLE_BAT(APINT_TYPE_PREFIX, 8407) +HANDLE_BAT(APINT_TYPE_PREFIX, 8408) +HANDLE_BAT(APINT_TYPE_PREFIX, 8409) +HANDLE_BAT(APINT_TYPE_PREFIX, 8410) +HANDLE_BAT(APINT_TYPE_PREFIX, 8411) +HANDLE_BAT(APINT_TYPE_PREFIX, 8412) +HANDLE_BAT(APINT_TYPE_PREFIX, 8413) +HANDLE_BAT(APINT_TYPE_PREFIX, 8414) +HANDLE_BAT(APINT_TYPE_PREFIX, 8415) +HANDLE_BAT(APINT_TYPE_PREFIX, 8416) +HANDLE_BAT(APINT_TYPE_PREFIX, 8417) +HANDLE_BAT(APINT_TYPE_PREFIX, 8418) +HANDLE_BAT(APINT_TYPE_PREFIX, 8419) +HANDLE_BAT(APINT_TYPE_PREFIX, 8420) +HANDLE_BAT(APINT_TYPE_PREFIX, 8421) +HANDLE_BAT(APINT_TYPE_PREFIX, 8422) +HANDLE_BAT(APINT_TYPE_PREFIX, 8423) +HANDLE_BAT(APINT_TYPE_PREFIX, 8424) +HANDLE_BAT(APINT_TYPE_PREFIX, 8425) +HANDLE_BAT(APINT_TYPE_PREFIX, 8426) +HANDLE_BAT(APINT_TYPE_PREFIX, 8427) +HANDLE_BAT(APINT_TYPE_PREFIX, 8428) +HANDLE_BAT(APINT_TYPE_PREFIX, 8429) +HANDLE_BAT(APINT_TYPE_PREFIX, 8430) +HANDLE_BAT(APINT_TYPE_PREFIX, 8431) +HANDLE_BAT(APINT_TYPE_PREFIX, 8432) +HANDLE_BAT(APINT_TYPE_PREFIX, 8433) +HANDLE_BAT(APINT_TYPE_PREFIX, 8434) +HANDLE_BAT(APINT_TYPE_PREFIX, 8435) +HANDLE_BAT(APINT_TYPE_PREFIX, 8436) +HANDLE_BAT(APINT_TYPE_PREFIX, 8437) +HANDLE_BAT(APINT_TYPE_PREFIX, 8438) +HANDLE_BAT(APINT_TYPE_PREFIX, 8439) +HANDLE_BAT(APINT_TYPE_PREFIX, 8440) +HANDLE_BAT(APINT_TYPE_PREFIX, 8441) +HANDLE_BAT(APINT_TYPE_PREFIX, 8442) +HANDLE_BAT(APINT_TYPE_PREFIX, 8443) +HANDLE_BAT(APINT_TYPE_PREFIX, 8444) +HANDLE_BAT(APINT_TYPE_PREFIX, 8445) +HANDLE_BAT(APINT_TYPE_PREFIX, 8446) +HANDLE_BAT(APINT_TYPE_PREFIX, 8447) +HANDLE_BAT(APINT_TYPE_PREFIX, 8448) +HANDLE_BAT(APINT_TYPE_PREFIX, 8449) +HANDLE_BAT(APINT_TYPE_PREFIX, 8450) +HANDLE_BAT(APINT_TYPE_PREFIX, 8451) +HANDLE_BAT(APINT_TYPE_PREFIX, 8452) +HANDLE_BAT(APINT_TYPE_PREFIX, 8453) +HANDLE_BAT(APINT_TYPE_PREFIX, 8454) +HANDLE_BAT(APINT_TYPE_PREFIX, 8455) +HANDLE_BAT(APINT_TYPE_PREFIX, 8456) +HANDLE_BAT(APINT_TYPE_PREFIX, 8457) +HANDLE_BAT(APINT_TYPE_PREFIX, 8458) +HANDLE_BAT(APINT_TYPE_PREFIX, 8459) +HANDLE_BAT(APINT_TYPE_PREFIX, 8460) +HANDLE_BAT(APINT_TYPE_PREFIX, 8461) +HANDLE_BAT(APINT_TYPE_PREFIX, 8462) +HANDLE_BAT(APINT_TYPE_PREFIX, 8463) +HANDLE_BAT(APINT_TYPE_PREFIX, 8464) +HANDLE_BAT(APINT_TYPE_PREFIX, 8465) +HANDLE_BAT(APINT_TYPE_PREFIX, 8466) +HANDLE_BAT(APINT_TYPE_PREFIX, 8467) +HANDLE_BAT(APINT_TYPE_PREFIX, 8468) +HANDLE_BAT(APINT_TYPE_PREFIX, 8469) +HANDLE_BAT(APINT_TYPE_PREFIX, 8470) +HANDLE_BAT(APINT_TYPE_PREFIX, 8471) +HANDLE_BAT(APINT_TYPE_PREFIX, 8472) +HANDLE_BAT(APINT_TYPE_PREFIX, 8473) +HANDLE_BAT(APINT_TYPE_PREFIX, 8474) +HANDLE_BAT(APINT_TYPE_PREFIX, 8475) +HANDLE_BAT(APINT_TYPE_PREFIX, 8476) +HANDLE_BAT(APINT_TYPE_PREFIX, 8477) +HANDLE_BAT(APINT_TYPE_PREFIX, 8478) +HANDLE_BAT(APINT_TYPE_PREFIX, 8479) +HANDLE_BAT(APINT_TYPE_PREFIX, 8480) +HANDLE_BAT(APINT_TYPE_PREFIX, 8481) +HANDLE_BAT(APINT_TYPE_PREFIX, 8482) +HANDLE_BAT(APINT_TYPE_PREFIX, 8483) +HANDLE_BAT(APINT_TYPE_PREFIX, 8484) +HANDLE_BAT(APINT_TYPE_PREFIX, 8485) +HANDLE_BAT(APINT_TYPE_PREFIX, 8486) +HANDLE_BAT(APINT_TYPE_PREFIX, 8487) +HANDLE_BAT(APINT_TYPE_PREFIX, 8488) +HANDLE_BAT(APINT_TYPE_PREFIX, 8489) +HANDLE_BAT(APINT_TYPE_PREFIX, 8490) +HANDLE_BAT(APINT_TYPE_PREFIX, 8491) +HANDLE_BAT(APINT_TYPE_PREFIX, 8492) +HANDLE_BAT(APINT_TYPE_PREFIX, 8493) +HANDLE_BAT(APINT_TYPE_PREFIX, 8494) +HANDLE_BAT(APINT_TYPE_PREFIX, 8495) +HANDLE_BAT(APINT_TYPE_PREFIX, 8496) +HANDLE_BAT(APINT_TYPE_PREFIX, 8497) +HANDLE_BAT(APINT_TYPE_PREFIX, 8498) +HANDLE_BAT(APINT_TYPE_PREFIX, 8499) +HANDLE_BAT(APINT_TYPE_PREFIX, 8500) +HANDLE_BAT(APINT_TYPE_PREFIX, 8501) +HANDLE_BAT(APINT_TYPE_PREFIX, 8502) +HANDLE_BAT(APINT_TYPE_PREFIX, 8503) +HANDLE_BAT(APINT_TYPE_PREFIX, 8504) +HANDLE_BAT(APINT_TYPE_PREFIX, 8505) +HANDLE_BAT(APINT_TYPE_PREFIX, 8506) +HANDLE_BAT(APINT_TYPE_PREFIX, 8507) +HANDLE_BAT(APINT_TYPE_PREFIX, 8508) +HANDLE_BAT(APINT_TYPE_PREFIX, 8509) +HANDLE_BAT(APINT_TYPE_PREFIX, 8510) +HANDLE_BAT(APINT_TYPE_PREFIX, 8511) +HANDLE_BAT(APINT_TYPE_PREFIX, 8512) +HANDLE_BAT(APINT_TYPE_PREFIX, 8513) +HANDLE_BAT(APINT_TYPE_PREFIX, 8514) +HANDLE_BAT(APINT_TYPE_PREFIX, 8515) +HANDLE_BAT(APINT_TYPE_PREFIX, 8516) +HANDLE_BAT(APINT_TYPE_PREFIX, 8517) +HANDLE_BAT(APINT_TYPE_PREFIX, 8518) +HANDLE_BAT(APINT_TYPE_PREFIX, 8519) +HANDLE_BAT(APINT_TYPE_PREFIX, 8520) +HANDLE_BAT(APINT_TYPE_PREFIX, 8521) +HANDLE_BAT(APINT_TYPE_PREFIX, 8522) +HANDLE_BAT(APINT_TYPE_PREFIX, 8523) +HANDLE_BAT(APINT_TYPE_PREFIX, 8524) +HANDLE_BAT(APINT_TYPE_PREFIX, 8525) +HANDLE_BAT(APINT_TYPE_PREFIX, 8526) +HANDLE_BAT(APINT_TYPE_PREFIX, 8527) +HANDLE_BAT(APINT_TYPE_PREFIX, 8528) +HANDLE_BAT(APINT_TYPE_PREFIX, 8529) +HANDLE_BAT(APINT_TYPE_PREFIX, 8530) +HANDLE_BAT(APINT_TYPE_PREFIX, 8531) +HANDLE_BAT(APINT_TYPE_PREFIX, 8532) +HANDLE_BAT(APINT_TYPE_PREFIX, 8533) +HANDLE_BAT(APINT_TYPE_PREFIX, 8534) +HANDLE_BAT(APINT_TYPE_PREFIX, 8535) +HANDLE_BAT(APINT_TYPE_PREFIX, 8536) +HANDLE_BAT(APINT_TYPE_PREFIX, 8537) +HANDLE_BAT(APINT_TYPE_PREFIX, 8538) +HANDLE_BAT(APINT_TYPE_PREFIX, 8539) +HANDLE_BAT(APINT_TYPE_PREFIX, 8540) +HANDLE_BAT(APINT_TYPE_PREFIX, 8541) +HANDLE_BAT(APINT_TYPE_PREFIX, 8542) +HANDLE_BAT(APINT_TYPE_PREFIX, 8543) +HANDLE_BAT(APINT_TYPE_PREFIX, 8544) +HANDLE_BAT(APINT_TYPE_PREFIX, 8545) +HANDLE_BAT(APINT_TYPE_PREFIX, 8546) +HANDLE_BAT(APINT_TYPE_PREFIX, 8547) +HANDLE_BAT(APINT_TYPE_PREFIX, 8548) +HANDLE_BAT(APINT_TYPE_PREFIX, 8549) +HANDLE_BAT(APINT_TYPE_PREFIX, 8550) +HANDLE_BAT(APINT_TYPE_PREFIX, 8551) +HANDLE_BAT(APINT_TYPE_PREFIX, 8552) +HANDLE_BAT(APINT_TYPE_PREFIX, 8553) +HANDLE_BAT(APINT_TYPE_PREFIX, 8554) +HANDLE_BAT(APINT_TYPE_PREFIX, 8555) +HANDLE_BAT(APINT_TYPE_PREFIX, 8556) +HANDLE_BAT(APINT_TYPE_PREFIX, 8557) +HANDLE_BAT(APINT_TYPE_PREFIX, 8558) +HANDLE_BAT(APINT_TYPE_PREFIX, 8559) +HANDLE_BAT(APINT_TYPE_PREFIX, 8560) +HANDLE_BAT(APINT_TYPE_PREFIX, 8561) +HANDLE_BAT(APINT_TYPE_PREFIX, 8562) +HANDLE_BAT(APINT_TYPE_PREFIX, 8563) +HANDLE_BAT(APINT_TYPE_PREFIX, 8564) +HANDLE_BAT(APINT_TYPE_PREFIX, 8565) +HANDLE_BAT(APINT_TYPE_PREFIX, 8566) +HANDLE_BAT(APINT_TYPE_PREFIX, 8567) +HANDLE_BAT(APINT_TYPE_PREFIX, 8568) +HANDLE_BAT(APINT_TYPE_PREFIX, 8569) +HANDLE_BAT(APINT_TYPE_PREFIX, 8570) +HANDLE_BAT(APINT_TYPE_PREFIX, 8571) +HANDLE_BAT(APINT_TYPE_PREFIX, 8572) +HANDLE_BAT(APINT_TYPE_PREFIX, 8573) +HANDLE_BAT(APINT_TYPE_PREFIX, 8574) +HANDLE_BAT(APINT_TYPE_PREFIX, 8575) +HANDLE_BAT(APINT_TYPE_PREFIX, 8576) +HANDLE_BAT(APINT_TYPE_PREFIX, 8577) +HANDLE_BAT(APINT_TYPE_PREFIX, 8578) +HANDLE_BAT(APINT_TYPE_PREFIX, 8579) +HANDLE_BAT(APINT_TYPE_PREFIX, 8580) +HANDLE_BAT(APINT_TYPE_PREFIX, 8581) +HANDLE_BAT(APINT_TYPE_PREFIX, 8582) +HANDLE_BAT(APINT_TYPE_PREFIX, 8583) +HANDLE_BAT(APINT_TYPE_PREFIX, 8584) +HANDLE_BAT(APINT_TYPE_PREFIX, 8585) +HANDLE_BAT(APINT_TYPE_PREFIX, 8586) +HANDLE_BAT(APINT_TYPE_PREFIX, 8587) +HANDLE_BAT(APINT_TYPE_PREFIX, 8588) +HANDLE_BAT(APINT_TYPE_PREFIX, 8589) +HANDLE_BAT(APINT_TYPE_PREFIX, 8590) +HANDLE_BAT(APINT_TYPE_PREFIX, 8591) +HANDLE_BAT(APINT_TYPE_PREFIX, 8592) +HANDLE_BAT(APINT_TYPE_PREFIX, 8593) +HANDLE_BAT(APINT_TYPE_PREFIX, 8594) +HANDLE_BAT(APINT_TYPE_PREFIX, 8595) +HANDLE_BAT(APINT_TYPE_PREFIX, 8596) +HANDLE_BAT(APINT_TYPE_PREFIX, 8597) +HANDLE_BAT(APINT_TYPE_PREFIX, 8598) +HANDLE_BAT(APINT_TYPE_PREFIX, 8599) +HANDLE_BAT(APINT_TYPE_PREFIX, 8600) +HANDLE_BAT(APINT_TYPE_PREFIX, 8601) +HANDLE_BAT(APINT_TYPE_PREFIX, 8602) +HANDLE_BAT(APINT_TYPE_PREFIX, 8603) +HANDLE_BAT(APINT_TYPE_PREFIX, 8604) +HANDLE_BAT(APINT_TYPE_PREFIX, 8605) +HANDLE_BAT(APINT_TYPE_PREFIX, 8606) +HANDLE_BAT(APINT_TYPE_PREFIX, 8607) +HANDLE_BAT(APINT_TYPE_PREFIX, 8608) +HANDLE_BAT(APINT_TYPE_PREFIX, 8609) +HANDLE_BAT(APINT_TYPE_PREFIX, 8610) +HANDLE_BAT(APINT_TYPE_PREFIX, 8611) +HANDLE_BAT(APINT_TYPE_PREFIX, 8612) +HANDLE_BAT(APINT_TYPE_PREFIX, 8613) +HANDLE_BAT(APINT_TYPE_PREFIX, 8614) +HANDLE_BAT(APINT_TYPE_PREFIX, 8615) +HANDLE_BAT(APINT_TYPE_PREFIX, 8616) +HANDLE_BAT(APINT_TYPE_PREFIX, 8617) +HANDLE_BAT(APINT_TYPE_PREFIX, 8618) +HANDLE_BAT(APINT_TYPE_PREFIX, 8619) +HANDLE_BAT(APINT_TYPE_PREFIX, 8620) +HANDLE_BAT(APINT_TYPE_PREFIX, 8621) +HANDLE_BAT(APINT_TYPE_PREFIX, 8622) +HANDLE_BAT(APINT_TYPE_PREFIX, 8623) +HANDLE_BAT(APINT_TYPE_PREFIX, 8624) +HANDLE_BAT(APINT_TYPE_PREFIX, 8625) +HANDLE_BAT(APINT_TYPE_PREFIX, 8626) +HANDLE_BAT(APINT_TYPE_PREFIX, 8627) +HANDLE_BAT(APINT_TYPE_PREFIX, 8628) +HANDLE_BAT(APINT_TYPE_PREFIX, 8629) +HANDLE_BAT(APINT_TYPE_PREFIX, 8630) +HANDLE_BAT(APINT_TYPE_PREFIX, 8631) +HANDLE_BAT(APINT_TYPE_PREFIX, 8632) +HANDLE_BAT(APINT_TYPE_PREFIX, 8633) +HANDLE_BAT(APINT_TYPE_PREFIX, 8634) +HANDLE_BAT(APINT_TYPE_PREFIX, 8635) +HANDLE_BAT(APINT_TYPE_PREFIX, 8636) +HANDLE_BAT(APINT_TYPE_PREFIX, 8637) +HANDLE_BAT(APINT_TYPE_PREFIX, 8638) +HANDLE_BAT(APINT_TYPE_PREFIX, 8639) +HANDLE_BAT(APINT_TYPE_PREFIX, 8640) +HANDLE_BAT(APINT_TYPE_PREFIX, 8641) +HANDLE_BAT(APINT_TYPE_PREFIX, 8642) +HANDLE_BAT(APINT_TYPE_PREFIX, 8643) +HANDLE_BAT(APINT_TYPE_PREFIX, 8644) +HANDLE_BAT(APINT_TYPE_PREFIX, 8645) +HANDLE_BAT(APINT_TYPE_PREFIX, 8646) +HANDLE_BAT(APINT_TYPE_PREFIX, 8647) +HANDLE_BAT(APINT_TYPE_PREFIX, 8648) +HANDLE_BAT(APINT_TYPE_PREFIX, 8649) +HANDLE_BAT(APINT_TYPE_PREFIX, 8650) +HANDLE_BAT(APINT_TYPE_PREFIX, 8651) +HANDLE_BAT(APINT_TYPE_PREFIX, 8652) +HANDLE_BAT(APINT_TYPE_PREFIX, 8653) +HANDLE_BAT(APINT_TYPE_PREFIX, 8654) +HANDLE_BAT(APINT_TYPE_PREFIX, 8655) +HANDLE_BAT(APINT_TYPE_PREFIX, 8656) +HANDLE_BAT(APINT_TYPE_PREFIX, 8657) +HANDLE_BAT(APINT_TYPE_PREFIX, 8658) +HANDLE_BAT(APINT_TYPE_PREFIX, 8659) +HANDLE_BAT(APINT_TYPE_PREFIX, 8660) +HANDLE_BAT(APINT_TYPE_PREFIX, 8661) +HANDLE_BAT(APINT_TYPE_PREFIX, 8662) +HANDLE_BAT(APINT_TYPE_PREFIX, 8663) +HANDLE_BAT(APINT_TYPE_PREFIX, 8664) +HANDLE_BAT(APINT_TYPE_PREFIX, 8665) +HANDLE_BAT(APINT_TYPE_PREFIX, 8666) +HANDLE_BAT(APINT_TYPE_PREFIX, 8667) +HANDLE_BAT(APINT_TYPE_PREFIX, 8668) +HANDLE_BAT(APINT_TYPE_PREFIX, 8669) +HANDLE_BAT(APINT_TYPE_PREFIX, 8670) +HANDLE_BAT(APINT_TYPE_PREFIX, 8671) +HANDLE_BAT(APINT_TYPE_PREFIX, 8672) +HANDLE_BAT(APINT_TYPE_PREFIX, 8673) +HANDLE_BAT(APINT_TYPE_PREFIX, 8674) +HANDLE_BAT(APINT_TYPE_PREFIX, 8675) +HANDLE_BAT(APINT_TYPE_PREFIX, 8676) +HANDLE_BAT(APINT_TYPE_PREFIX, 8677) +HANDLE_BAT(APINT_TYPE_PREFIX, 8678) +HANDLE_BAT(APINT_TYPE_PREFIX, 8679) +HANDLE_BAT(APINT_TYPE_PREFIX, 8680) +HANDLE_BAT(APINT_TYPE_PREFIX, 8681) +HANDLE_BAT(APINT_TYPE_PREFIX, 8682) +HANDLE_BAT(APINT_TYPE_PREFIX, 8683) +HANDLE_BAT(APINT_TYPE_PREFIX, 8684) +HANDLE_BAT(APINT_TYPE_PREFIX, 8685) +HANDLE_BAT(APINT_TYPE_PREFIX, 8686) +HANDLE_BAT(APINT_TYPE_PREFIX, 8687) +HANDLE_BAT(APINT_TYPE_PREFIX, 8688) +HANDLE_BAT(APINT_TYPE_PREFIX, 8689) +HANDLE_BAT(APINT_TYPE_PREFIX, 8690) +HANDLE_BAT(APINT_TYPE_PREFIX, 8691) +HANDLE_BAT(APINT_TYPE_PREFIX, 8692) +HANDLE_BAT(APINT_TYPE_PREFIX, 8693) +HANDLE_BAT(APINT_TYPE_PREFIX, 8694) +HANDLE_BAT(APINT_TYPE_PREFIX, 8695) +HANDLE_BAT(APINT_TYPE_PREFIX, 8696) +HANDLE_BAT(APINT_TYPE_PREFIX, 8697) +HANDLE_BAT(APINT_TYPE_PREFIX, 8698) +HANDLE_BAT(APINT_TYPE_PREFIX, 8699) +HANDLE_BAT(APINT_TYPE_PREFIX, 8700) +HANDLE_BAT(APINT_TYPE_PREFIX, 8701) +HANDLE_BAT(APINT_TYPE_PREFIX, 8702) +HANDLE_BAT(APINT_TYPE_PREFIX, 8703) +HANDLE_BAT(APINT_TYPE_PREFIX, 8704) +HANDLE_BAT(APINT_TYPE_PREFIX, 8705) +HANDLE_BAT(APINT_TYPE_PREFIX, 8706) +HANDLE_BAT(APINT_TYPE_PREFIX, 8707) +HANDLE_BAT(APINT_TYPE_PREFIX, 8708) +HANDLE_BAT(APINT_TYPE_PREFIX, 8709) +HANDLE_BAT(APINT_TYPE_PREFIX, 8710) +HANDLE_BAT(APINT_TYPE_PREFIX, 8711) +HANDLE_BAT(APINT_TYPE_PREFIX, 8712) +HANDLE_BAT(APINT_TYPE_PREFIX, 8713) +HANDLE_BAT(APINT_TYPE_PREFIX, 8714) +HANDLE_BAT(APINT_TYPE_PREFIX, 8715) +HANDLE_BAT(APINT_TYPE_PREFIX, 8716) +HANDLE_BAT(APINT_TYPE_PREFIX, 8717) +HANDLE_BAT(APINT_TYPE_PREFIX, 8718) +HANDLE_BAT(APINT_TYPE_PREFIX, 8719) +HANDLE_BAT(APINT_TYPE_PREFIX, 8720) +HANDLE_BAT(APINT_TYPE_PREFIX, 8721) +HANDLE_BAT(APINT_TYPE_PREFIX, 8722) +HANDLE_BAT(APINT_TYPE_PREFIX, 8723) +HANDLE_BAT(APINT_TYPE_PREFIX, 8724) +HANDLE_BAT(APINT_TYPE_PREFIX, 8725) +HANDLE_BAT(APINT_TYPE_PREFIX, 8726) +HANDLE_BAT(APINT_TYPE_PREFIX, 8727) +HANDLE_BAT(APINT_TYPE_PREFIX, 8728) +HANDLE_BAT(APINT_TYPE_PREFIX, 8729) +HANDLE_BAT(APINT_TYPE_PREFIX, 8730) +HANDLE_BAT(APINT_TYPE_PREFIX, 8731) +HANDLE_BAT(APINT_TYPE_PREFIX, 8732) +HANDLE_BAT(APINT_TYPE_PREFIX, 8733) +HANDLE_BAT(APINT_TYPE_PREFIX, 8734) +HANDLE_BAT(APINT_TYPE_PREFIX, 8735) +HANDLE_BAT(APINT_TYPE_PREFIX, 8736) +HANDLE_BAT(APINT_TYPE_PREFIX, 8737) +HANDLE_BAT(APINT_TYPE_PREFIX, 8738) +HANDLE_BAT(APINT_TYPE_PREFIX, 8739) +HANDLE_BAT(APINT_TYPE_PREFIX, 8740) +HANDLE_BAT(APINT_TYPE_PREFIX, 8741) +HANDLE_BAT(APINT_TYPE_PREFIX, 8742) +HANDLE_BAT(APINT_TYPE_PREFIX, 8743) +HANDLE_BAT(APINT_TYPE_PREFIX, 8744) +HANDLE_BAT(APINT_TYPE_PREFIX, 8745) +HANDLE_BAT(APINT_TYPE_PREFIX, 8746) +HANDLE_BAT(APINT_TYPE_PREFIX, 8747) +HANDLE_BAT(APINT_TYPE_PREFIX, 8748) +HANDLE_BAT(APINT_TYPE_PREFIX, 8749) +HANDLE_BAT(APINT_TYPE_PREFIX, 8750) +HANDLE_BAT(APINT_TYPE_PREFIX, 8751) +HANDLE_BAT(APINT_TYPE_PREFIX, 8752) +HANDLE_BAT(APINT_TYPE_PREFIX, 8753) +HANDLE_BAT(APINT_TYPE_PREFIX, 8754) +HANDLE_BAT(APINT_TYPE_PREFIX, 8755) +HANDLE_BAT(APINT_TYPE_PREFIX, 8756) +HANDLE_BAT(APINT_TYPE_PREFIX, 8757) +HANDLE_BAT(APINT_TYPE_PREFIX, 8758) +HANDLE_BAT(APINT_TYPE_PREFIX, 8759) +HANDLE_BAT(APINT_TYPE_PREFIX, 8760) +HANDLE_BAT(APINT_TYPE_PREFIX, 8761) +HANDLE_BAT(APINT_TYPE_PREFIX, 8762) +HANDLE_BAT(APINT_TYPE_PREFIX, 8763) +HANDLE_BAT(APINT_TYPE_PREFIX, 8764) +HANDLE_BAT(APINT_TYPE_PREFIX, 8765) +HANDLE_BAT(APINT_TYPE_PREFIX, 8766) +HANDLE_BAT(APINT_TYPE_PREFIX, 8767) +HANDLE_BAT(APINT_TYPE_PREFIX, 8768) +HANDLE_BAT(APINT_TYPE_PREFIX, 8769) +HANDLE_BAT(APINT_TYPE_PREFIX, 8770) +HANDLE_BAT(APINT_TYPE_PREFIX, 8771) +HANDLE_BAT(APINT_TYPE_PREFIX, 8772) +HANDLE_BAT(APINT_TYPE_PREFIX, 8773) +HANDLE_BAT(APINT_TYPE_PREFIX, 8774) +HANDLE_BAT(APINT_TYPE_PREFIX, 8775) +HANDLE_BAT(APINT_TYPE_PREFIX, 8776) +HANDLE_BAT(APINT_TYPE_PREFIX, 8777) +HANDLE_BAT(APINT_TYPE_PREFIX, 8778) +HANDLE_BAT(APINT_TYPE_PREFIX, 8779) +HANDLE_BAT(APINT_TYPE_PREFIX, 8780) +HANDLE_BAT(APINT_TYPE_PREFIX, 8781) +HANDLE_BAT(APINT_TYPE_PREFIX, 8782) +HANDLE_BAT(APINT_TYPE_PREFIX, 8783) +HANDLE_BAT(APINT_TYPE_PREFIX, 8784) +HANDLE_BAT(APINT_TYPE_PREFIX, 8785) +HANDLE_BAT(APINT_TYPE_PREFIX, 8786) +HANDLE_BAT(APINT_TYPE_PREFIX, 8787) +HANDLE_BAT(APINT_TYPE_PREFIX, 8788) +HANDLE_BAT(APINT_TYPE_PREFIX, 8789) +HANDLE_BAT(APINT_TYPE_PREFIX, 8790) +HANDLE_BAT(APINT_TYPE_PREFIX, 8791) +HANDLE_BAT(APINT_TYPE_PREFIX, 8792) +HANDLE_BAT(APINT_TYPE_PREFIX, 8793) +HANDLE_BAT(APINT_TYPE_PREFIX, 8794) +HANDLE_BAT(APINT_TYPE_PREFIX, 8795) +HANDLE_BAT(APINT_TYPE_PREFIX, 8796) +HANDLE_BAT(APINT_TYPE_PREFIX, 8797) +HANDLE_BAT(APINT_TYPE_PREFIX, 8798) +HANDLE_BAT(APINT_TYPE_PREFIX, 8799) +HANDLE_BAT(APINT_TYPE_PREFIX, 8800) +HANDLE_BAT(APINT_TYPE_PREFIX, 8801) +HANDLE_BAT(APINT_TYPE_PREFIX, 8802) +HANDLE_BAT(APINT_TYPE_PREFIX, 8803) +HANDLE_BAT(APINT_TYPE_PREFIX, 8804) +HANDLE_BAT(APINT_TYPE_PREFIX, 8805) +HANDLE_BAT(APINT_TYPE_PREFIX, 8806) +HANDLE_BAT(APINT_TYPE_PREFIX, 8807) +HANDLE_BAT(APINT_TYPE_PREFIX, 8808) +HANDLE_BAT(APINT_TYPE_PREFIX, 8809) +HANDLE_BAT(APINT_TYPE_PREFIX, 8810) +HANDLE_BAT(APINT_TYPE_PREFIX, 8811) +HANDLE_BAT(APINT_TYPE_PREFIX, 8812) +HANDLE_BAT(APINT_TYPE_PREFIX, 8813) +HANDLE_BAT(APINT_TYPE_PREFIX, 8814) +HANDLE_BAT(APINT_TYPE_PREFIX, 8815) +HANDLE_BAT(APINT_TYPE_PREFIX, 8816) +HANDLE_BAT(APINT_TYPE_PREFIX, 8817) +HANDLE_BAT(APINT_TYPE_PREFIX, 8818) +HANDLE_BAT(APINT_TYPE_PREFIX, 8819) +HANDLE_BAT(APINT_TYPE_PREFIX, 8820) +HANDLE_BAT(APINT_TYPE_PREFIX, 8821) +HANDLE_BAT(APINT_TYPE_PREFIX, 8822) +HANDLE_BAT(APINT_TYPE_PREFIX, 8823) +HANDLE_BAT(APINT_TYPE_PREFIX, 8824) +HANDLE_BAT(APINT_TYPE_PREFIX, 8825) +HANDLE_BAT(APINT_TYPE_PREFIX, 8826) +HANDLE_BAT(APINT_TYPE_PREFIX, 8827) +HANDLE_BAT(APINT_TYPE_PREFIX, 8828) +HANDLE_BAT(APINT_TYPE_PREFIX, 8829) +HANDLE_BAT(APINT_TYPE_PREFIX, 8830) +HANDLE_BAT(APINT_TYPE_PREFIX, 8831) +HANDLE_BAT(APINT_TYPE_PREFIX, 8832) +HANDLE_BAT(APINT_TYPE_PREFIX, 8833) +HANDLE_BAT(APINT_TYPE_PREFIX, 8834) +HANDLE_BAT(APINT_TYPE_PREFIX, 8835) +HANDLE_BAT(APINT_TYPE_PREFIX, 8836) +HANDLE_BAT(APINT_TYPE_PREFIX, 8837) +HANDLE_BAT(APINT_TYPE_PREFIX, 8838) +HANDLE_BAT(APINT_TYPE_PREFIX, 8839) +HANDLE_BAT(APINT_TYPE_PREFIX, 8840) +HANDLE_BAT(APINT_TYPE_PREFIX, 8841) +HANDLE_BAT(APINT_TYPE_PREFIX, 8842) +HANDLE_BAT(APINT_TYPE_PREFIX, 8843) +HANDLE_BAT(APINT_TYPE_PREFIX, 8844) +HANDLE_BAT(APINT_TYPE_PREFIX, 8845) +HANDLE_BAT(APINT_TYPE_PREFIX, 8846) +HANDLE_BAT(APINT_TYPE_PREFIX, 8847) +HANDLE_BAT(APINT_TYPE_PREFIX, 8848) +HANDLE_BAT(APINT_TYPE_PREFIX, 8849) +HANDLE_BAT(APINT_TYPE_PREFIX, 8850) +HANDLE_BAT(APINT_TYPE_PREFIX, 8851) +HANDLE_BAT(APINT_TYPE_PREFIX, 8852) +HANDLE_BAT(APINT_TYPE_PREFIX, 8853) +HANDLE_BAT(APINT_TYPE_PREFIX, 8854) +HANDLE_BAT(APINT_TYPE_PREFIX, 8855) +HANDLE_BAT(APINT_TYPE_PREFIX, 8856) +HANDLE_BAT(APINT_TYPE_PREFIX, 8857) +HANDLE_BAT(APINT_TYPE_PREFIX, 8858) +HANDLE_BAT(APINT_TYPE_PREFIX, 8859) +HANDLE_BAT(APINT_TYPE_PREFIX, 8860) +HANDLE_BAT(APINT_TYPE_PREFIX, 8861) +HANDLE_BAT(APINT_TYPE_PREFIX, 8862) +HANDLE_BAT(APINT_TYPE_PREFIX, 8863) +HANDLE_BAT(APINT_TYPE_PREFIX, 8864) +HANDLE_BAT(APINT_TYPE_PREFIX, 8865) +HANDLE_BAT(APINT_TYPE_PREFIX, 8866) +HANDLE_BAT(APINT_TYPE_PREFIX, 8867) +HANDLE_BAT(APINT_TYPE_PREFIX, 8868) +HANDLE_BAT(APINT_TYPE_PREFIX, 8869) +HANDLE_BAT(APINT_TYPE_PREFIX, 8870) +HANDLE_BAT(APINT_TYPE_PREFIX, 8871) +HANDLE_BAT(APINT_TYPE_PREFIX, 8872) +HANDLE_BAT(APINT_TYPE_PREFIX, 8873) +HANDLE_BAT(APINT_TYPE_PREFIX, 8874) +HANDLE_BAT(APINT_TYPE_PREFIX, 8875) +HANDLE_BAT(APINT_TYPE_PREFIX, 8876) +HANDLE_BAT(APINT_TYPE_PREFIX, 8877) +HANDLE_BAT(APINT_TYPE_PREFIX, 8878) +HANDLE_BAT(APINT_TYPE_PREFIX, 8879) +HANDLE_BAT(APINT_TYPE_PREFIX, 8880) +HANDLE_BAT(APINT_TYPE_PREFIX, 8881) +HANDLE_BAT(APINT_TYPE_PREFIX, 8882) +HANDLE_BAT(APINT_TYPE_PREFIX, 8883) +HANDLE_BAT(APINT_TYPE_PREFIX, 8884) +HANDLE_BAT(APINT_TYPE_PREFIX, 8885) +HANDLE_BAT(APINT_TYPE_PREFIX, 8886) +HANDLE_BAT(APINT_TYPE_PREFIX, 8887) +HANDLE_BAT(APINT_TYPE_PREFIX, 8888) +HANDLE_BAT(APINT_TYPE_PREFIX, 8889) +HANDLE_BAT(APINT_TYPE_PREFIX, 8890) +HANDLE_BAT(APINT_TYPE_PREFIX, 8891) +HANDLE_BAT(APINT_TYPE_PREFIX, 8892) +HANDLE_BAT(APINT_TYPE_PREFIX, 8893) +HANDLE_BAT(APINT_TYPE_PREFIX, 8894) +HANDLE_BAT(APINT_TYPE_PREFIX, 8895) +HANDLE_BAT(APINT_TYPE_PREFIX, 8896) +HANDLE_BAT(APINT_TYPE_PREFIX, 8897) +HANDLE_BAT(APINT_TYPE_PREFIX, 8898) +HANDLE_BAT(APINT_TYPE_PREFIX, 8899) +HANDLE_BAT(APINT_TYPE_PREFIX, 8900) +HANDLE_BAT(APINT_TYPE_PREFIX, 8901) +HANDLE_BAT(APINT_TYPE_PREFIX, 8902) +HANDLE_BAT(APINT_TYPE_PREFIX, 8903) +HANDLE_BAT(APINT_TYPE_PREFIX, 8904) +HANDLE_BAT(APINT_TYPE_PREFIX, 8905) +HANDLE_BAT(APINT_TYPE_PREFIX, 8906) +HANDLE_BAT(APINT_TYPE_PREFIX, 8907) +HANDLE_BAT(APINT_TYPE_PREFIX, 8908) +HANDLE_BAT(APINT_TYPE_PREFIX, 8909) +HANDLE_BAT(APINT_TYPE_PREFIX, 8910) +HANDLE_BAT(APINT_TYPE_PREFIX, 8911) +HANDLE_BAT(APINT_TYPE_PREFIX, 8912) +HANDLE_BAT(APINT_TYPE_PREFIX, 8913) +HANDLE_BAT(APINT_TYPE_PREFIX, 8914) +HANDLE_BAT(APINT_TYPE_PREFIX, 8915) +HANDLE_BAT(APINT_TYPE_PREFIX, 8916) +HANDLE_BAT(APINT_TYPE_PREFIX, 8917) +HANDLE_BAT(APINT_TYPE_PREFIX, 8918) +HANDLE_BAT(APINT_TYPE_PREFIX, 8919) +HANDLE_BAT(APINT_TYPE_PREFIX, 8920) +HANDLE_BAT(APINT_TYPE_PREFIX, 8921) +HANDLE_BAT(APINT_TYPE_PREFIX, 8922) +HANDLE_BAT(APINT_TYPE_PREFIX, 8923) +HANDLE_BAT(APINT_TYPE_PREFIX, 8924) +HANDLE_BAT(APINT_TYPE_PREFIX, 8925) +HANDLE_BAT(APINT_TYPE_PREFIX, 8926) +HANDLE_BAT(APINT_TYPE_PREFIX, 8927) +HANDLE_BAT(APINT_TYPE_PREFIX, 8928) +HANDLE_BAT(APINT_TYPE_PREFIX, 8929) +HANDLE_BAT(APINT_TYPE_PREFIX, 8930) +HANDLE_BAT(APINT_TYPE_PREFIX, 8931) +HANDLE_BAT(APINT_TYPE_PREFIX, 8932) +HANDLE_BAT(APINT_TYPE_PREFIX, 8933) +HANDLE_BAT(APINT_TYPE_PREFIX, 8934) +HANDLE_BAT(APINT_TYPE_PREFIX, 8935) +HANDLE_BAT(APINT_TYPE_PREFIX, 8936) +HANDLE_BAT(APINT_TYPE_PREFIX, 8937) +HANDLE_BAT(APINT_TYPE_PREFIX, 8938) +HANDLE_BAT(APINT_TYPE_PREFIX, 8939) +HANDLE_BAT(APINT_TYPE_PREFIX, 8940) +HANDLE_BAT(APINT_TYPE_PREFIX, 8941) +HANDLE_BAT(APINT_TYPE_PREFIX, 8942) +HANDLE_BAT(APINT_TYPE_PREFIX, 8943) +HANDLE_BAT(APINT_TYPE_PREFIX, 8944) +HANDLE_BAT(APINT_TYPE_PREFIX, 8945) +HANDLE_BAT(APINT_TYPE_PREFIX, 8946) +HANDLE_BAT(APINT_TYPE_PREFIX, 8947) +HANDLE_BAT(APINT_TYPE_PREFIX, 8948) +HANDLE_BAT(APINT_TYPE_PREFIX, 8949) +HANDLE_BAT(APINT_TYPE_PREFIX, 8950) +HANDLE_BAT(APINT_TYPE_PREFIX, 8951) +HANDLE_BAT(APINT_TYPE_PREFIX, 8952) +HANDLE_BAT(APINT_TYPE_PREFIX, 8953) +HANDLE_BAT(APINT_TYPE_PREFIX, 8954) +HANDLE_BAT(APINT_TYPE_PREFIX, 8955) +HANDLE_BAT(APINT_TYPE_PREFIX, 8956) +HANDLE_BAT(APINT_TYPE_PREFIX, 8957) +HANDLE_BAT(APINT_TYPE_PREFIX, 8958) +HANDLE_BAT(APINT_TYPE_PREFIX, 8959) +HANDLE_BAT(APINT_TYPE_PREFIX, 8960) +HANDLE_BAT(APINT_TYPE_PREFIX, 8961) +HANDLE_BAT(APINT_TYPE_PREFIX, 8962) +HANDLE_BAT(APINT_TYPE_PREFIX, 8963) +HANDLE_BAT(APINT_TYPE_PREFIX, 8964) +HANDLE_BAT(APINT_TYPE_PREFIX, 8965) +HANDLE_BAT(APINT_TYPE_PREFIX, 8966) +HANDLE_BAT(APINT_TYPE_PREFIX, 8967) +HANDLE_BAT(APINT_TYPE_PREFIX, 8968) +HANDLE_BAT(APINT_TYPE_PREFIX, 8969) +HANDLE_BAT(APINT_TYPE_PREFIX, 8970) +HANDLE_BAT(APINT_TYPE_PREFIX, 8971) +HANDLE_BAT(APINT_TYPE_PREFIX, 8972) +HANDLE_BAT(APINT_TYPE_PREFIX, 8973) +HANDLE_BAT(APINT_TYPE_PREFIX, 8974) +HANDLE_BAT(APINT_TYPE_PREFIX, 8975) +HANDLE_BAT(APINT_TYPE_PREFIX, 8976) +HANDLE_BAT(APINT_TYPE_PREFIX, 8977) +HANDLE_BAT(APINT_TYPE_PREFIX, 8978) +HANDLE_BAT(APINT_TYPE_PREFIX, 8979) +HANDLE_BAT(APINT_TYPE_PREFIX, 8980) +HANDLE_BAT(APINT_TYPE_PREFIX, 8981) +HANDLE_BAT(APINT_TYPE_PREFIX, 8982) +HANDLE_BAT(APINT_TYPE_PREFIX, 8983) +HANDLE_BAT(APINT_TYPE_PREFIX, 8984) +HANDLE_BAT(APINT_TYPE_PREFIX, 8985) +HANDLE_BAT(APINT_TYPE_PREFIX, 8986) +HANDLE_BAT(APINT_TYPE_PREFIX, 8987) +HANDLE_BAT(APINT_TYPE_PREFIX, 8988) +HANDLE_BAT(APINT_TYPE_PREFIX, 8989) +HANDLE_BAT(APINT_TYPE_PREFIX, 8990) +HANDLE_BAT(APINT_TYPE_PREFIX, 8991) +HANDLE_BAT(APINT_TYPE_PREFIX, 8992) +HANDLE_BAT(APINT_TYPE_PREFIX, 8993) +HANDLE_BAT(APINT_TYPE_PREFIX, 8994) +HANDLE_BAT(APINT_TYPE_PREFIX, 8995) +HANDLE_BAT(APINT_TYPE_PREFIX, 8996) +HANDLE_BAT(APINT_TYPE_PREFIX, 8997) +HANDLE_BAT(APINT_TYPE_PREFIX, 8998) +HANDLE_BAT(APINT_TYPE_PREFIX, 8999) +HANDLE_BAT(APINT_TYPE_PREFIX, 9000) +HANDLE_BAT(APINT_TYPE_PREFIX, 9001) +HANDLE_BAT(APINT_TYPE_PREFIX, 9002) +HANDLE_BAT(APINT_TYPE_PREFIX, 9003) +HANDLE_BAT(APINT_TYPE_PREFIX, 9004) +HANDLE_BAT(APINT_TYPE_PREFIX, 9005) +HANDLE_BAT(APINT_TYPE_PREFIX, 9006) +HANDLE_BAT(APINT_TYPE_PREFIX, 9007) +HANDLE_BAT(APINT_TYPE_PREFIX, 9008) +HANDLE_BAT(APINT_TYPE_PREFIX, 9009) +HANDLE_BAT(APINT_TYPE_PREFIX, 9010) +HANDLE_BAT(APINT_TYPE_PREFIX, 9011) +HANDLE_BAT(APINT_TYPE_PREFIX, 9012) +HANDLE_BAT(APINT_TYPE_PREFIX, 9013) +HANDLE_BAT(APINT_TYPE_PREFIX, 9014) +HANDLE_BAT(APINT_TYPE_PREFIX, 9015) +HANDLE_BAT(APINT_TYPE_PREFIX, 9016) +HANDLE_BAT(APINT_TYPE_PREFIX, 9017) +HANDLE_BAT(APINT_TYPE_PREFIX, 9018) +HANDLE_BAT(APINT_TYPE_PREFIX, 9019) +HANDLE_BAT(APINT_TYPE_PREFIX, 9020) +HANDLE_BAT(APINT_TYPE_PREFIX, 9021) +HANDLE_BAT(APINT_TYPE_PREFIX, 9022) +HANDLE_BAT(APINT_TYPE_PREFIX, 9023) +HANDLE_BAT(APINT_TYPE_PREFIX, 9024) +HANDLE_BAT(APINT_TYPE_PREFIX, 9025) +HANDLE_BAT(APINT_TYPE_PREFIX, 9026) +HANDLE_BAT(APINT_TYPE_PREFIX, 9027) +HANDLE_BAT(APINT_TYPE_PREFIX, 9028) +HANDLE_BAT(APINT_TYPE_PREFIX, 9029) +HANDLE_BAT(APINT_TYPE_PREFIX, 9030) +HANDLE_BAT(APINT_TYPE_PREFIX, 9031) +HANDLE_BAT(APINT_TYPE_PREFIX, 9032) +HANDLE_BAT(APINT_TYPE_PREFIX, 9033) +HANDLE_BAT(APINT_TYPE_PREFIX, 9034) +HANDLE_BAT(APINT_TYPE_PREFIX, 9035) +HANDLE_BAT(APINT_TYPE_PREFIX, 9036) +HANDLE_BAT(APINT_TYPE_PREFIX, 9037) +HANDLE_BAT(APINT_TYPE_PREFIX, 9038) +HANDLE_BAT(APINT_TYPE_PREFIX, 9039) +HANDLE_BAT(APINT_TYPE_PREFIX, 9040) +HANDLE_BAT(APINT_TYPE_PREFIX, 9041) +HANDLE_BAT(APINT_TYPE_PREFIX, 9042) +HANDLE_BAT(APINT_TYPE_PREFIX, 9043) +HANDLE_BAT(APINT_TYPE_PREFIX, 9044) +HANDLE_BAT(APINT_TYPE_PREFIX, 9045) +HANDLE_BAT(APINT_TYPE_PREFIX, 9046) +HANDLE_BAT(APINT_TYPE_PREFIX, 9047) +HANDLE_BAT(APINT_TYPE_PREFIX, 9048) +HANDLE_BAT(APINT_TYPE_PREFIX, 9049) +HANDLE_BAT(APINT_TYPE_PREFIX, 9050) +HANDLE_BAT(APINT_TYPE_PREFIX, 9051) +HANDLE_BAT(APINT_TYPE_PREFIX, 9052) +HANDLE_BAT(APINT_TYPE_PREFIX, 9053) +HANDLE_BAT(APINT_TYPE_PREFIX, 9054) +HANDLE_BAT(APINT_TYPE_PREFIX, 9055) +HANDLE_BAT(APINT_TYPE_PREFIX, 9056) +HANDLE_BAT(APINT_TYPE_PREFIX, 9057) +HANDLE_BAT(APINT_TYPE_PREFIX, 9058) +HANDLE_BAT(APINT_TYPE_PREFIX, 9059) +HANDLE_BAT(APINT_TYPE_PREFIX, 9060) +HANDLE_BAT(APINT_TYPE_PREFIX, 9061) +HANDLE_BAT(APINT_TYPE_PREFIX, 9062) +HANDLE_BAT(APINT_TYPE_PREFIX, 9063) +HANDLE_BAT(APINT_TYPE_PREFIX, 9064) +HANDLE_BAT(APINT_TYPE_PREFIX, 9065) +HANDLE_BAT(APINT_TYPE_PREFIX, 9066) +HANDLE_BAT(APINT_TYPE_PREFIX, 9067) +HANDLE_BAT(APINT_TYPE_PREFIX, 9068) +HANDLE_BAT(APINT_TYPE_PREFIX, 9069) +HANDLE_BAT(APINT_TYPE_PREFIX, 9070) +HANDLE_BAT(APINT_TYPE_PREFIX, 9071) +HANDLE_BAT(APINT_TYPE_PREFIX, 9072) +HANDLE_BAT(APINT_TYPE_PREFIX, 9073) +HANDLE_BAT(APINT_TYPE_PREFIX, 9074) +HANDLE_BAT(APINT_TYPE_PREFIX, 9075) +HANDLE_BAT(APINT_TYPE_PREFIX, 9076) +HANDLE_BAT(APINT_TYPE_PREFIX, 9077) +HANDLE_BAT(APINT_TYPE_PREFIX, 9078) +HANDLE_BAT(APINT_TYPE_PREFIX, 9079) +HANDLE_BAT(APINT_TYPE_PREFIX, 9080) +HANDLE_BAT(APINT_TYPE_PREFIX, 9081) +HANDLE_BAT(APINT_TYPE_PREFIX, 9082) +HANDLE_BAT(APINT_TYPE_PREFIX, 9083) +HANDLE_BAT(APINT_TYPE_PREFIX, 9084) +HANDLE_BAT(APINT_TYPE_PREFIX, 9085) +HANDLE_BAT(APINT_TYPE_PREFIX, 9086) +HANDLE_BAT(APINT_TYPE_PREFIX, 9087) +HANDLE_BAT(APINT_TYPE_PREFIX, 9088) +HANDLE_BAT(APINT_TYPE_PREFIX, 9089) +HANDLE_BAT(APINT_TYPE_PREFIX, 9090) +HANDLE_BAT(APINT_TYPE_PREFIX, 9091) +HANDLE_BAT(APINT_TYPE_PREFIX, 9092) +HANDLE_BAT(APINT_TYPE_PREFIX, 9093) +HANDLE_BAT(APINT_TYPE_PREFIX, 9094) +HANDLE_BAT(APINT_TYPE_PREFIX, 9095) +HANDLE_BAT(APINT_TYPE_PREFIX, 9096) +HANDLE_BAT(APINT_TYPE_PREFIX, 9097) +HANDLE_BAT(APINT_TYPE_PREFIX, 9098) +HANDLE_BAT(APINT_TYPE_PREFIX, 9099) +HANDLE_BAT(APINT_TYPE_PREFIX, 9100) +HANDLE_BAT(APINT_TYPE_PREFIX, 9101) +HANDLE_BAT(APINT_TYPE_PREFIX, 9102) +HANDLE_BAT(APINT_TYPE_PREFIX, 9103) +HANDLE_BAT(APINT_TYPE_PREFIX, 9104) +HANDLE_BAT(APINT_TYPE_PREFIX, 9105) +HANDLE_BAT(APINT_TYPE_PREFIX, 9106) +HANDLE_BAT(APINT_TYPE_PREFIX, 9107) +HANDLE_BAT(APINT_TYPE_PREFIX, 9108) +HANDLE_BAT(APINT_TYPE_PREFIX, 9109) +HANDLE_BAT(APINT_TYPE_PREFIX, 9110) +HANDLE_BAT(APINT_TYPE_PREFIX, 9111) +HANDLE_BAT(APINT_TYPE_PREFIX, 9112) +HANDLE_BAT(APINT_TYPE_PREFIX, 9113) +HANDLE_BAT(APINT_TYPE_PREFIX, 9114) +HANDLE_BAT(APINT_TYPE_PREFIX, 9115) +HANDLE_BAT(APINT_TYPE_PREFIX, 9116) +HANDLE_BAT(APINT_TYPE_PREFIX, 9117) +HANDLE_BAT(APINT_TYPE_PREFIX, 9118) +HANDLE_BAT(APINT_TYPE_PREFIX, 9119) +HANDLE_BAT(APINT_TYPE_PREFIX, 9120) +HANDLE_BAT(APINT_TYPE_PREFIX, 9121) +HANDLE_BAT(APINT_TYPE_PREFIX, 9122) +HANDLE_BAT(APINT_TYPE_PREFIX, 9123) +HANDLE_BAT(APINT_TYPE_PREFIX, 9124) +HANDLE_BAT(APINT_TYPE_PREFIX, 9125) +HANDLE_BAT(APINT_TYPE_PREFIX, 9126) +HANDLE_BAT(APINT_TYPE_PREFIX, 9127) +HANDLE_BAT(APINT_TYPE_PREFIX, 9128) +HANDLE_BAT(APINT_TYPE_PREFIX, 9129) +HANDLE_BAT(APINT_TYPE_PREFIX, 9130) +HANDLE_BAT(APINT_TYPE_PREFIX, 9131) +HANDLE_BAT(APINT_TYPE_PREFIX, 9132) +HANDLE_BAT(APINT_TYPE_PREFIX, 9133) +HANDLE_BAT(APINT_TYPE_PREFIX, 9134) +HANDLE_BAT(APINT_TYPE_PREFIX, 9135) +HANDLE_BAT(APINT_TYPE_PREFIX, 9136) +HANDLE_BAT(APINT_TYPE_PREFIX, 9137) +HANDLE_BAT(APINT_TYPE_PREFIX, 9138) +HANDLE_BAT(APINT_TYPE_PREFIX, 9139) +HANDLE_BAT(APINT_TYPE_PREFIX, 9140) +HANDLE_BAT(APINT_TYPE_PREFIX, 9141) +HANDLE_BAT(APINT_TYPE_PREFIX, 9142) +HANDLE_BAT(APINT_TYPE_PREFIX, 9143) +HANDLE_BAT(APINT_TYPE_PREFIX, 9144) +HANDLE_BAT(APINT_TYPE_PREFIX, 9145) +HANDLE_BAT(APINT_TYPE_PREFIX, 9146) +HANDLE_BAT(APINT_TYPE_PREFIX, 9147) +HANDLE_BAT(APINT_TYPE_PREFIX, 9148) +HANDLE_BAT(APINT_TYPE_PREFIX, 9149) +HANDLE_BAT(APINT_TYPE_PREFIX, 9150) +HANDLE_BAT(APINT_TYPE_PREFIX, 9151) +HANDLE_BAT(APINT_TYPE_PREFIX, 9152) +HANDLE_BAT(APINT_TYPE_PREFIX, 9153) +HANDLE_BAT(APINT_TYPE_PREFIX, 9154) +HANDLE_BAT(APINT_TYPE_PREFIX, 9155) +HANDLE_BAT(APINT_TYPE_PREFIX, 9156) +HANDLE_BAT(APINT_TYPE_PREFIX, 9157) +HANDLE_BAT(APINT_TYPE_PREFIX, 9158) +HANDLE_BAT(APINT_TYPE_PREFIX, 9159) +HANDLE_BAT(APINT_TYPE_PREFIX, 9160) +HANDLE_BAT(APINT_TYPE_PREFIX, 9161) +HANDLE_BAT(APINT_TYPE_PREFIX, 9162) +HANDLE_BAT(APINT_TYPE_PREFIX, 9163) +HANDLE_BAT(APINT_TYPE_PREFIX, 9164) +HANDLE_BAT(APINT_TYPE_PREFIX, 9165) +HANDLE_BAT(APINT_TYPE_PREFIX, 9166) +HANDLE_BAT(APINT_TYPE_PREFIX, 9167) +HANDLE_BAT(APINT_TYPE_PREFIX, 9168) +HANDLE_BAT(APINT_TYPE_PREFIX, 9169) +HANDLE_BAT(APINT_TYPE_PREFIX, 9170) +HANDLE_BAT(APINT_TYPE_PREFIX, 9171) +HANDLE_BAT(APINT_TYPE_PREFIX, 9172) +HANDLE_BAT(APINT_TYPE_PREFIX, 9173) +HANDLE_BAT(APINT_TYPE_PREFIX, 9174) +HANDLE_BAT(APINT_TYPE_PREFIX, 9175) +HANDLE_BAT(APINT_TYPE_PREFIX, 9176) +HANDLE_BAT(APINT_TYPE_PREFIX, 9177) +HANDLE_BAT(APINT_TYPE_PREFIX, 9178) +HANDLE_BAT(APINT_TYPE_PREFIX, 9179) +HANDLE_BAT(APINT_TYPE_PREFIX, 9180) +HANDLE_BAT(APINT_TYPE_PREFIX, 9181) +HANDLE_BAT(APINT_TYPE_PREFIX, 9182) +HANDLE_BAT(APINT_TYPE_PREFIX, 9183) +HANDLE_BAT(APINT_TYPE_PREFIX, 9184) +HANDLE_BAT(APINT_TYPE_PREFIX, 9185) +HANDLE_BAT(APINT_TYPE_PREFIX, 9186) +HANDLE_BAT(APINT_TYPE_PREFIX, 9187) +HANDLE_BAT(APINT_TYPE_PREFIX, 9188) +HANDLE_BAT(APINT_TYPE_PREFIX, 9189) +HANDLE_BAT(APINT_TYPE_PREFIX, 9190) +HANDLE_BAT(APINT_TYPE_PREFIX, 9191) +HANDLE_BAT(APINT_TYPE_PREFIX, 9192) +HANDLE_BAT(APINT_TYPE_PREFIX, 9193) +HANDLE_BAT(APINT_TYPE_PREFIX, 9194) +HANDLE_BAT(APINT_TYPE_PREFIX, 9195) +HANDLE_BAT(APINT_TYPE_PREFIX, 9196) +HANDLE_BAT(APINT_TYPE_PREFIX, 9197) +HANDLE_BAT(APINT_TYPE_PREFIX, 9198) +HANDLE_BAT(APINT_TYPE_PREFIX, 9199) +HANDLE_BAT(APINT_TYPE_PREFIX, 9200) +HANDLE_BAT(APINT_TYPE_PREFIX, 9201) +HANDLE_BAT(APINT_TYPE_PREFIX, 9202) +HANDLE_BAT(APINT_TYPE_PREFIX, 9203) +HANDLE_BAT(APINT_TYPE_PREFIX, 9204) +HANDLE_BAT(APINT_TYPE_PREFIX, 9205) +HANDLE_BAT(APINT_TYPE_PREFIX, 9206) +HANDLE_BAT(APINT_TYPE_PREFIX, 9207) +HANDLE_BAT(APINT_TYPE_PREFIX, 9208) +HANDLE_BAT(APINT_TYPE_PREFIX, 9209) +HANDLE_BAT(APINT_TYPE_PREFIX, 9210) +HANDLE_BAT(APINT_TYPE_PREFIX, 9211) +HANDLE_BAT(APINT_TYPE_PREFIX, 9212) +HANDLE_BAT(APINT_TYPE_PREFIX, 9213) +HANDLE_BAT(APINT_TYPE_PREFIX, 9214) +HANDLE_BAT(APINT_TYPE_PREFIX, 9215) +HANDLE_BAT(APINT_TYPE_PREFIX, 9216) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 9 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 9217) +HANDLE_BAT(, 9218) +HANDLE_BAT(, 9219) +HANDLE_BAT(, 9220) +HANDLE_BAT(, 9221) +HANDLE_BAT(, 9222) +HANDLE_BAT(, 9223) +HANDLE_BAT(, 9224) +HANDLE_BAT(, 9225) +HANDLE_BAT(, 9226) +HANDLE_BAT(, 9227) +HANDLE_BAT(, 9228) +HANDLE_BAT(, 9229) +HANDLE_BAT(, 9230) +HANDLE_BAT(, 9231) +HANDLE_BAT(, 9232) +HANDLE_BAT(, 9233) +HANDLE_BAT(, 9234) +HANDLE_BAT(, 9235) +HANDLE_BAT(, 9236) +HANDLE_BAT(, 9237) +HANDLE_BAT(, 9238) +HANDLE_BAT(, 9239) +HANDLE_BAT(, 9240) +HANDLE_BAT(, 9241) +HANDLE_BAT(, 9242) +HANDLE_BAT(, 9243) +HANDLE_BAT(, 9244) +HANDLE_BAT(, 9245) +HANDLE_BAT(, 9246) +HANDLE_BAT(, 9247) +HANDLE_BAT(, 9248) +HANDLE_BAT(, 9249) +HANDLE_BAT(, 9250) +HANDLE_BAT(, 9251) +HANDLE_BAT(, 9252) +HANDLE_BAT(, 9253) +HANDLE_BAT(, 9254) +HANDLE_BAT(, 9255) +HANDLE_BAT(, 9256) +HANDLE_BAT(, 9257) +HANDLE_BAT(, 9258) +HANDLE_BAT(, 9259) +HANDLE_BAT(, 9260) +HANDLE_BAT(, 9261) +HANDLE_BAT(, 9262) +HANDLE_BAT(, 9263) +HANDLE_BAT(, 9264) +HANDLE_BAT(, 9265) +HANDLE_BAT(, 9266) +HANDLE_BAT(, 9267) +HANDLE_BAT(, 9268) +HANDLE_BAT(, 9269) +HANDLE_BAT(, 9270) +HANDLE_BAT(, 9271) +HANDLE_BAT(, 9272) +HANDLE_BAT(, 9273) +HANDLE_BAT(, 9274) +HANDLE_BAT(, 9275) +HANDLE_BAT(, 9276) +HANDLE_BAT(, 9277) +HANDLE_BAT(, 9278) +HANDLE_BAT(, 9279) +HANDLE_BAT(, 9280) +HANDLE_BAT(, 9281) +HANDLE_BAT(, 9282) +HANDLE_BAT(, 9283) +HANDLE_BAT(, 9284) +HANDLE_BAT(, 9285) +HANDLE_BAT(, 9286) +HANDLE_BAT(, 9287) +HANDLE_BAT(, 9288) +HANDLE_BAT(, 9289) +HANDLE_BAT(, 9290) +HANDLE_BAT(, 9291) +HANDLE_BAT(, 9292) +HANDLE_BAT(, 9293) +HANDLE_BAT(, 9294) +HANDLE_BAT(, 9295) +HANDLE_BAT(, 9296) +HANDLE_BAT(, 9297) +HANDLE_BAT(, 9298) +HANDLE_BAT(, 9299) +HANDLE_BAT(, 9300) +HANDLE_BAT(, 9301) +HANDLE_BAT(, 9302) +HANDLE_BAT(, 9303) +HANDLE_BAT(, 9304) +HANDLE_BAT(, 9305) +HANDLE_BAT(, 9306) +HANDLE_BAT(, 9307) +HANDLE_BAT(, 9308) +HANDLE_BAT(, 9309) +HANDLE_BAT(, 9310) +HANDLE_BAT(, 9311) +HANDLE_BAT(, 9312) +HANDLE_BAT(, 9313) +HANDLE_BAT(, 9314) +HANDLE_BAT(, 9315) +HANDLE_BAT(, 9316) +HANDLE_BAT(, 9317) +HANDLE_BAT(, 9318) +HANDLE_BAT(, 9319) +HANDLE_BAT(, 9320) +HANDLE_BAT(, 9321) +HANDLE_BAT(, 9322) +HANDLE_BAT(, 9323) +HANDLE_BAT(, 9324) +HANDLE_BAT(, 9325) +HANDLE_BAT(, 9326) +HANDLE_BAT(, 9327) +HANDLE_BAT(, 9328) +HANDLE_BAT(, 9329) +HANDLE_BAT(, 9330) +HANDLE_BAT(, 9331) +HANDLE_BAT(, 9332) +HANDLE_BAT(, 9333) +HANDLE_BAT(, 9334) +HANDLE_BAT(, 9335) +HANDLE_BAT(, 9336) +HANDLE_BAT(, 9337) +HANDLE_BAT(, 9338) +HANDLE_BAT(, 9339) +HANDLE_BAT(, 9340) +HANDLE_BAT(, 9341) +HANDLE_BAT(, 9342) +HANDLE_BAT(, 9343) +HANDLE_BAT(, 9344) +HANDLE_BAT(, 9345) +HANDLE_BAT(, 9346) +HANDLE_BAT(, 9347) +HANDLE_BAT(, 9348) +HANDLE_BAT(, 9349) +HANDLE_BAT(, 9350) +HANDLE_BAT(, 9351) +HANDLE_BAT(, 9352) +HANDLE_BAT(, 9353) +HANDLE_BAT(, 9354) +HANDLE_BAT(, 9355) +HANDLE_BAT(, 9356) +HANDLE_BAT(, 9357) +HANDLE_BAT(, 9358) +HANDLE_BAT(, 9359) +HANDLE_BAT(, 9360) +HANDLE_BAT(, 9361) +HANDLE_BAT(, 9362) +HANDLE_BAT(, 9363) +HANDLE_BAT(, 9364) +HANDLE_BAT(, 9365) +HANDLE_BAT(, 9366) +HANDLE_BAT(, 9367) +HANDLE_BAT(, 9368) +HANDLE_BAT(, 9369) +HANDLE_BAT(, 9370) +HANDLE_BAT(, 9371) +HANDLE_BAT(, 9372) +HANDLE_BAT(, 9373) +HANDLE_BAT(, 9374) +HANDLE_BAT(, 9375) +HANDLE_BAT(, 9376) +HANDLE_BAT(, 9377) +HANDLE_BAT(, 9378) +HANDLE_BAT(, 9379) +HANDLE_BAT(, 9380) +HANDLE_BAT(, 9381) +HANDLE_BAT(, 9382) +HANDLE_BAT(, 9383) +HANDLE_BAT(, 9384) +HANDLE_BAT(, 9385) +HANDLE_BAT(, 9386) +HANDLE_BAT(, 9387) +HANDLE_BAT(, 9388) +HANDLE_BAT(, 9389) +HANDLE_BAT(, 9390) +HANDLE_BAT(, 9391) +HANDLE_BAT(, 9392) +HANDLE_BAT(, 9393) +HANDLE_BAT(, 9394) +HANDLE_BAT(, 9395) +HANDLE_BAT(, 9396) +HANDLE_BAT(, 9397) +HANDLE_BAT(, 9398) +HANDLE_BAT(, 9399) +HANDLE_BAT(, 9400) +HANDLE_BAT(, 9401) +HANDLE_BAT(, 9402) +HANDLE_BAT(, 9403) +HANDLE_BAT(, 9404) +HANDLE_BAT(, 9405) +HANDLE_BAT(, 9406) +HANDLE_BAT(, 9407) +HANDLE_BAT(, 9408) +HANDLE_BAT(, 9409) +HANDLE_BAT(, 9410) +HANDLE_BAT(, 9411) +HANDLE_BAT(, 9412) +HANDLE_BAT(, 9413) +HANDLE_BAT(, 9414) +HANDLE_BAT(, 9415) +HANDLE_BAT(, 9416) +HANDLE_BAT(, 9417) +HANDLE_BAT(, 9418) +HANDLE_BAT(, 9419) +HANDLE_BAT(, 9420) +HANDLE_BAT(, 9421) +HANDLE_BAT(, 9422) +HANDLE_BAT(, 9423) +HANDLE_BAT(, 9424) +HANDLE_BAT(, 9425) +HANDLE_BAT(, 9426) +HANDLE_BAT(, 9427) +HANDLE_BAT(, 9428) +HANDLE_BAT(, 9429) +HANDLE_BAT(, 9430) +HANDLE_BAT(, 9431) +HANDLE_BAT(, 9432) +HANDLE_BAT(, 9433) +HANDLE_BAT(, 9434) +HANDLE_BAT(, 9435) +HANDLE_BAT(, 9436) +HANDLE_BAT(, 9437) +HANDLE_BAT(, 9438) +HANDLE_BAT(, 9439) +HANDLE_BAT(, 9440) +HANDLE_BAT(, 9441) +HANDLE_BAT(, 9442) +HANDLE_BAT(, 9443) +HANDLE_BAT(, 9444) +HANDLE_BAT(, 9445) +HANDLE_BAT(, 9446) +HANDLE_BAT(, 9447) +HANDLE_BAT(, 9448) +HANDLE_BAT(, 9449) +HANDLE_BAT(, 9450) +HANDLE_BAT(, 9451) +HANDLE_BAT(, 9452) +HANDLE_BAT(, 9453) +HANDLE_BAT(, 9454) +HANDLE_BAT(, 9455) +HANDLE_BAT(, 9456) +HANDLE_BAT(, 9457) +HANDLE_BAT(, 9458) +HANDLE_BAT(, 9459) +HANDLE_BAT(, 9460) +HANDLE_BAT(, 9461) +HANDLE_BAT(, 9462) +HANDLE_BAT(, 9463) +HANDLE_BAT(, 9464) +HANDLE_BAT(, 9465) +HANDLE_BAT(, 9466) +HANDLE_BAT(, 9467) +HANDLE_BAT(, 9468) +HANDLE_BAT(, 9469) +HANDLE_BAT(, 9470) +HANDLE_BAT(, 9471) +HANDLE_BAT(, 9472) +HANDLE_BAT(, 9473) +HANDLE_BAT(, 9474) +HANDLE_BAT(, 9475) +HANDLE_BAT(, 9476) +HANDLE_BAT(, 9477) +HANDLE_BAT(, 9478) +HANDLE_BAT(, 9479) +HANDLE_BAT(, 9480) +HANDLE_BAT(, 9481) +HANDLE_BAT(, 9482) +HANDLE_BAT(, 9483) +HANDLE_BAT(, 9484) +HANDLE_BAT(, 9485) +HANDLE_BAT(, 9486) +HANDLE_BAT(, 9487) +HANDLE_BAT(, 9488) +HANDLE_BAT(, 9489) +HANDLE_BAT(, 9490) +HANDLE_BAT(, 9491) +HANDLE_BAT(, 9492) +HANDLE_BAT(, 9493) +HANDLE_BAT(, 9494) +HANDLE_BAT(, 9495) +HANDLE_BAT(, 9496) +HANDLE_BAT(, 9497) +HANDLE_BAT(, 9498) +HANDLE_BAT(, 9499) +HANDLE_BAT(, 9500) +HANDLE_BAT(, 9501) +HANDLE_BAT(, 9502) +HANDLE_BAT(, 9503) +HANDLE_BAT(, 9504) +HANDLE_BAT(, 9505) +HANDLE_BAT(, 9506) +HANDLE_BAT(, 9507) +HANDLE_BAT(, 9508) +HANDLE_BAT(, 9509) +HANDLE_BAT(, 9510) +HANDLE_BAT(, 9511) +HANDLE_BAT(, 9512) +HANDLE_BAT(, 9513) +HANDLE_BAT(, 9514) +HANDLE_BAT(, 9515) +HANDLE_BAT(, 9516) +HANDLE_BAT(, 9517) +HANDLE_BAT(, 9518) +HANDLE_BAT(, 9519) +HANDLE_BAT(, 9520) +HANDLE_BAT(, 9521) +HANDLE_BAT(, 9522) +HANDLE_BAT(, 9523) +HANDLE_BAT(, 9524) +HANDLE_BAT(, 9525) +HANDLE_BAT(, 9526) +HANDLE_BAT(, 9527) +HANDLE_BAT(, 9528) +HANDLE_BAT(, 9529) +HANDLE_BAT(, 9530) +HANDLE_BAT(, 9531) +HANDLE_BAT(, 9532) +HANDLE_BAT(, 9533) +HANDLE_BAT(, 9534) +HANDLE_BAT(, 9535) +HANDLE_BAT(, 9536) +HANDLE_BAT(, 9537) +HANDLE_BAT(, 9538) +HANDLE_BAT(, 9539) +HANDLE_BAT(, 9540) +HANDLE_BAT(, 9541) +HANDLE_BAT(, 9542) +HANDLE_BAT(, 9543) +HANDLE_BAT(, 9544) +HANDLE_BAT(, 9545) +HANDLE_BAT(, 9546) +HANDLE_BAT(, 9547) +HANDLE_BAT(, 9548) +HANDLE_BAT(, 9549) +HANDLE_BAT(, 9550) +HANDLE_BAT(, 9551) +HANDLE_BAT(, 9552) +HANDLE_BAT(, 9553) +HANDLE_BAT(, 9554) +HANDLE_BAT(, 9555) +HANDLE_BAT(, 9556) +HANDLE_BAT(, 9557) +HANDLE_BAT(, 9558) +HANDLE_BAT(, 9559) +HANDLE_BAT(, 9560) +HANDLE_BAT(, 9561) +HANDLE_BAT(, 9562) +HANDLE_BAT(, 9563) +HANDLE_BAT(, 9564) +HANDLE_BAT(, 9565) +HANDLE_BAT(, 9566) +HANDLE_BAT(, 9567) +HANDLE_BAT(, 9568) +HANDLE_BAT(, 9569) +HANDLE_BAT(, 9570) +HANDLE_BAT(, 9571) +HANDLE_BAT(, 9572) +HANDLE_BAT(, 9573) +HANDLE_BAT(, 9574) +HANDLE_BAT(, 9575) +HANDLE_BAT(, 9576) +HANDLE_BAT(, 9577) +HANDLE_BAT(, 9578) +HANDLE_BAT(, 9579) +HANDLE_BAT(, 9580) +HANDLE_BAT(, 9581) +HANDLE_BAT(, 9582) +HANDLE_BAT(, 9583) +HANDLE_BAT(, 9584) +HANDLE_BAT(, 9585) +HANDLE_BAT(, 9586) +HANDLE_BAT(, 9587) +HANDLE_BAT(, 9588) +HANDLE_BAT(, 9589) +HANDLE_BAT(, 9590) +HANDLE_BAT(, 9591) +HANDLE_BAT(, 9592) +HANDLE_BAT(, 9593) +HANDLE_BAT(, 9594) +HANDLE_BAT(, 9595) +HANDLE_BAT(, 9596) +HANDLE_BAT(, 9597) +HANDLE_BAT(, 9598) +HANDLE_BAT(, 9599) +HANDLE_BAT(, 9600) +HANDLE_BAT(, 9601) +HANDLE_BAT(, 9602) +HANDLE_BAT(, 9603) +HANDLE_BAT(, 9604) +HANDLE_BAT(, 9605) +HANDLE_BAT(, 9606) +HANDLE_BAT(, 9607) +HANDLE_BAT(, 9608) +HANDLE_BAT(, 9609) +HANDLE_BAT(, 9610) +HANDLE_BAT(, 9611) +HANDLE_BAT(, 9612) +HANDLE_BAT(, 9613) +HANDLE_BAT(, 9614) +HANDLE_BAT(, 9615) +HANDLE_BAT(, 9616) +HANDLE_BAT(, 9617) +HANDLE_BAT(, 9618) +HANDLE_BAT(, 9619) +HANDLE_BAT(, 9620) +HANDLE_BAT(, 9621) +HANDLE_BAT(, 9622) +HANDLE_BAT(, 9623) +HANDLE_BAT(, 9624) +HANDLE_BAT(, 9625) +HANDLE_BAT(, 9626) +HANDLE_BAT(, 9627) +HANDLE_BAT(, 9628) +HANDLE_BAT(, 9629) +HANDLE_BAT(, 9630) +HANDLE_BAT(, 9631) +HANDLE_BAT(, 9632) +HANDLE_BAT(, 9633) +HANDLE_BAT(, 9634) +HANDLE_BAT(, 9635) +HANDLE_BAT(, 9636) +HANDLE_BAT(, 9637) +HANDLE_BAT(, 9638) +HANDLE_BAT(, 9639) +HANDLE_BAT(, 9640) +HANDLE_BAT(, 9641) +HANDLE_BAT(, 9642) +HANDLE_BAT(, 9643) +HANDLE_BAT(, 9644) +HANDLE_BAT(, 9645) +HANDLE_BAT(, 9646) +HANDLE_BAT(, 9647) +HANDLE_BAT(, 9648) +HANDLE_BAT(, 9649) +HANDLE_BAT(, 9650) +HANDLE_BAT(, 9651) +HANDLE_BAT(, 9652) +HANDLE_BAT(, 9653) +HANDLE_BAT(, 9654) +HANDLE_BAT(, 9655) +HANDLE_BAT(, 9656) +HANDLE_BAT(, 9657) +HANDLE_BAT(, 9658) +HANDLE_BAT(, 9659) +HANDLE_BAT(, 9660) +HANDLE_BAT(, 9661) +HANDLE_BAT(, 9662) +HANDLE_BAT(, 9663) +HANDLE_BAT(, 9664) +HANDLE_BAT(, 9665) +HANDLE_BAT(, 9666) +HANDLE_BAT(, 9667) +HANDLE_BAT(, 9668) +HANDLE_BAT(, 9669) +HANDLE_BAT(, 9670) +HANDLE_BAT(, 9671) +HANDLE_BAT(, 9672) +HANDLE_BAT(, 9673) +HANDLE_BAT(, 9674) +HANDLE_BAT(, 9675) +HANDLE_BAT(, 9676) +HANDLE_BAT(, 9677) +HANDLE_BAT(, 9678) +HANDLE_BAT(, 9679) +HANDLE_BAT(, 9680) +HANDLE_BAT(, 9681) +HANDLE_BAT(, 9682) +HANDLE_BAT(, 9683) +HANDLE_BAT(, 9684) +HANDLE_BAT(, 9685) +HANDLE_BAT(, 9686) +HANDLE_BAT(, 9687) +HANDLE_BAT(, 9688) +HANDLE_BAT(, 9689) +HANDLE_BAT(, 9690) +HANDLE_BAT(, 9691) +HANDLE_BAT(, 9692) +HANDLE_BAT(, 9693) +HANDLE_BAT(, 9694) +HANDLE_BAT(, 9695) +HANDLE_BAT(, 9696) +HANDLE_BAT(, 9697) +HANDLE_BAT(, 9698) +HANDLE_BAT(, 9699) +HANDLE_BAT(, 9700) +HANDLE_BAT(, 9701) +HANDLE_BAT(, 9702) +HANDLE_BAT(, 9703) +HANDLE_BAT(, 9704) +HANDLE_BAT(, 9705) +HANDLE_BAT(, 9706) +HANDLE_BAT(, 9707) +HANDLE_BAT(, 9708) +HANDLE_BAT(, 9709) +HANDLE_BAT(, 9710) +HANDLE_BAT(, 9711) +HANDLE_BAT(, 9712) +HANDLE_BAT(, 9713) +HANDLE_BAT(, 9714) +HANDLE_BAT(, 9715) +HANDLE_BAT(, 9716) +HANDLE_BAT(, 9717) +HANDLE_BAT(, 9718) +HANDLE_BAT(, 9719) +HANDLE_BAT(, 9720) +HANDLE_BAT(, 9721) +HANDLE_BAT(, 9722) +HANDLE_BAT(, 9723) +HANDLE_BAT(, 9724) +HANDLE_BAT(, 9725) +HANDLE_BAT(, 9726) +HANDLE_BAT(, 9727) +HANDLE_BAT(, 9728) +HANDLE_BAT(, 9729) +HANDLE_BAT(, 9730) +HANDLE_BAT(, 9731) +HANDLE_BAT(, 9732) +HANDLE_BAT(, 9733) +HANDLE_BAT(, 9734) +HANDLE_BAT(, 9735) +HANDLE_BAT(, 9736) +HANDLE_BAT(, 9737) +HANDLE_BAT(, 9738) +HANDLE_BAT(, 9739) +HANDLE_BAT(, 9740) +HANDLE_BAT(, 9741) +HANDLE_BAT(, 9742) +HANDLE_BAT(, 9743) +HANDLE_BAT(, 9744) +HANDLE_BAT(, 9745) +HANDLE_BAT(, 9746) +HANDLE_BAT(, 9747) +HANDLE_BAT(, 9748) +HANDLE_BAT(, 9749) +HANDLE_BAT(, 9750) +HANDLE_BAT(, 9751) +HANDLE_BAT(, 9752) +HANDLE_BAT(, 9753) +HANDLE_BAT(, 9754) +HANDLE_BAT(, 9755) +HANDLE_BAT(, 9756) +HANDLE_BAT(, 9757) +HANDLE_BAT(, 9758) +HANDLE_BAT(, 9759) +HANDLE_BAT(, 9760) +HANDLE_BAT(, 9761) +HANDLE_BAT(, 9762) +HANDLE_BAT(, 9763) +HANDLE_BAT(, 9764) +HANDLE_BAT(, 9765) +HANDLE_BAT(, 9766) +HANDLE_BAT(, 9767) +HANDLE_BAT(, 9768) +HANDLE_BAT(, 9769) +HANDLE_BAT(, 9770) +HANDLE_BAT(, 9771) +HANDLE_BAT(, 9772) +HANDLE_BAT(, 9773) +HANDLE_BAT(, 9774) +HANDLE_BAT(, 9775) +HANDLE_BAT(, 9776) +HANDLE_BAT(, 9777) +HANDLE_BAT(, 9778) +HANDLE_BAT(, 9779) +HANDLE_BAT(, 9780) +HANDLE_BAT(, 9781) +HANDLE_BAT(, 9782) +HANDLE_BAT(, 9783) +HANDLE_BAT(, 9784) +HANDLE_BAT(, 9785) +HANDLE_BAT(, 9786) +HANDLE_BAT(, 9787) +HANDLE_BAT(, 9788) +HANDLE_BAT(, 9789) +HANDLE_BAT(, 9790) +HANDLE_BAT(, 9791) +HANDLE_BAT(, 9792) +HANDLE_BAT(, 9793) +HANDLE_BAT(, 9794) +HANDLE_BAT(, 9795) +HANDLE_BAT(, 9796) +HANDLE_BAT(, 9797) +HANDLE_BAT(, 9798) +HANDLE_BAT(, 9799) +HANDLE_BAT(, 9800) +HANDLE_BAT(, 9801) +HANDLE_BAT(, 9802) +HANDLE_BAT(, 9803) +HANDLE_BAT(, 9804) +HANDLE_BAT(, 9805) +HANDLE_BAT(, 9806) +HANDLE_BAT(, 9807) +HANDLE_BAT(, 9808) +HANDLE_BAT(, 9809) +HANDLE_BAT(, 9810) +HANDLE_BAT(, 9811) +HANDLE_BAT(, 9812) +HANDLE_BAT(, 9813) +HANDLE_BAT(, 9814) +HANDLE_BAT(, 9815) +HANDLE_BAT(, 9816) +HANDLE_BAT(, 9817) +HANDLE_BAT(, 9818) +HANDLE_BAT(, 9819) +HANDLE_BAT(, 9820) +HANDLE_BAT(, 9821) +HANDLE_BAT(, 9822) +HANDLE_BAT(, 9823) +HANDLE_BAT(, 9824) +HANDLE_BAT(, 9825) +HANDLE_BAT(, 9826) +HANDLE_BAT(, 9827) +HANDLE_BAT(, 9828) +HANDLE_BAT(, 9829) +HANDLE_BAT(, 9830) +HANDLE_BAT(, 9831) +HANDLE_BAT(, 9832) +HANDLE_BAT(, 9833) +HANDLE_BAT(, 9834) +HANDLE_BAT(, 9835) +HANDLE_BAT(, 9836) +HANDLE_BAT(, 9837) +HANDLE_BAT(, 9838) +HANDLE_BAT(, 9839) +HANDLE_BAT(, 9840) +HANDLE_BAT(, 9841) +HANDLE_BAT(, 9842) +HANDLE_BAT(, 9843) +HANDLE_BAT(, 9844) +HANDLE_BAT(, 9845) +HANDLE_BAT(, 9846) +HANDLE_BAT(, 9847) +HANDLE_BAT(, 9848) +HANDLE_BAT(, 9849) +HANDLE_BAT(, 9850) +HANDLE_BAT(, 9851) +HANDLE_BAT(, 9852) +HANDLE_BAT(, 9853) +HANDLE_BAT(, 9854) +HANDLE_BAT(, 9855) +HANDLE_BAT(, 9856) +HANDLE_BAT(, 9857) +HANDLE_BAT(, 9858) +HANDLE_BAT(, 9859) +HANDLE_BAT(, 9860) +HANDLE_BAT(, 9861) +HANDLE_BAT(, 9862) +HANDLE_BAT(, 9863) +HANDLE_BAT(, 9864) +HANDLE_BAT(, 9865) +HANDLE_BAT(, 9866) +HANDLE_BAT(, 9867) +HANDLE_BAT(, 9868) +HANDLE_BAT(, 9869) +HANDLE_BAT(, 9870) +HANDLE_BAT(, 9871) +HANDLE_BAT(, 9872) +HANDLE_BAT(, 9873) +HANDLE_BAT(, 9874) +HANDLE_BAT(, 9875) +HANDLE_BAT(, 9876) +HANDLE_BAT(, 9877) +HANDLE_BAT(, 9878) +HANDLE_BAT(, 9879) +HANDLE_BAT(, 9880) +HANDLE_BAT(, 9881) +HANDLE_BAT(, 9882) +HANDLE_BAT(, 9883) +HANDLE_BAT(, 9884) +HANDLE_BAT(, 9885) +HANDLE_BAT(, 9886) +HANDLE_BAT(, 9887) +HANDLE_BAT(, 9888) +HANDLE_BAT(, 9889) +HANDLE_BAT(, 9890) +HANDLE_BAT(, 9891) +HANDLE_BAT(, 9892) +HANDLE_BAT(, 9893) +HANDLE_BAT(, 9894) +HANDLE_BAT(, 9895) +HANDLE_BAT(, 9896) +HANDLE_BAT(, 9897) +HANDLE_BAT(, 9898) +HANDLE_BAT(, 9899) +HANDLE_BAT(, 9900) +HANDLE_BAT(, 9901) +HANDLE_BAT(, 9902) +HANDLE_BAT(, 9903) +HANDLE_BAT(, 9904) +HANDLE_BAT(, 9905) +HANDLE_BAT(, 9906) +HANDLE_BAT(, 9907) +HANDLE_BAT(, 9908) +HANDLE_BAT(, 9909) +HANDLE_BAT(, 9910) +HANDLE_BAT(, 9911) +HANDLE_BAT(, 9912) +HANDLE_BAT(, 9913) +HANDLE_BAT(, 9914) +HANDLE_BAT(, 9915) +HANDLE_BAT(, 9916) +HANDLE_BAT(, 9917) +HANDLE_BAT(, 9918) +HANDLE_BAT(, 9919) +HANDLE_BAT(, 9920) +HANDLE_BAT(, 9921) +HANDLE_BAT(, 9922) +HANDLE_BAT(, 9923) +HANDLE_BAT(, 9924) +HANDLE_BAT(, 9925) +HANDLE_BAT(, 9926) +HANDLE_BAT(, 9927) +HANDLE_BAT(, 9928) +HANDLE_BAT(, 9929) +HANDLE_BAT(, 9930) +HANDLE_BAT(, 9931) +HANDLE_BAT(, 9932) +HANDLE_BAT(, 9933) +HANDLE_BAT(, 9934) +HANDLE_BAT(, 9935) +HANDLE_BAT(, 9936) +HANDLE_BAT(, 9937) +HANDLE_BAT(, 9938) +HANDLE_BAT(, 9939) +HANDLE_BAT(, 9940) +HANDLE_BAT(, 9941) +HANDLE_BAT(, 9942) +HANDLE_BAT(, 9943) +HANDLE_BAT(, 9944) +HANDLE_BAT(, 9945) +HANDLE_BAT(, 9946) +HANDLE_BAT(, 9947) +HANDLE_BAT(, 9948) +HANDLE_BAT(, 9949) +HANDLE_BAT(, 9950) +HANDLE_BAT(, 9951) +HANDLE_BAT(, 9952) +HANDLE_BAT(, 9953) +HANDLE_BAT(, 9954) +HANDLE_BAT(, 9955) +HANDLE_BAT(, 9956) +HANDLE_BAT(, 9957) +HANDLE_BAT(, 9958) +HANDLE_BAT(, 9959) +HANDLE_BAT(, 9960) +HANDLE_BAT(, 9961) +HANDLE_BAT(, 9962) +HANDLE_BAT(, 9963) +HANDLE_BAT(, 9964) +HANDLE_BAT(, 9965) +HANDLE_BAT(, 9966) +HANDLE_BAT(, 9967) +HANDLE_BAT(, 9968) +HANDLE_BAT(, 9969) +HANDLE_BAT(, 9970) +HANDLE_BAT(, 9971) +HANDLE_BAT(, 9972) +HANDLE_BAT(, 9973) +HANDLE_BAT(, 9974) +HANDLE_BAT(, 9975) +HANDLE_BAT(, 9976) +HANDLE_BAT(, 9977) +HANDLE_BAT(, 9978) +HANDLE_BAT(, 9979) +HANDLE_BAT(, 9980) +HANDLE_BAT(, 9981) +HANDLE_BAT(, 9982) +HANDLE_BAT(, 9983) +HANDLE_BAT(, 9984) +HANDLE_BAT(, 9985) +HANDLE_BAT(, 9986) +HANDLE_BAT(, 9987) +HANDLE_BAT(, 9988) +HANDLE_BAT(, 9989) +HANDLE_BAT(, 9990) +HANDLE_BAT(, 9991) +HANDLE_BAT(, 9992) +HANDLE_BAT(, 9993) +HANDLE_BAT(, 9994) +HANDLE_BAT(, 9995) +HANDLE_BAT(, 9996) +HANDLE_BAT(, 9997) +HANDLE_BAT(, 9998) +HANDLE_BAT(, 9999) +HANDLE_BAT(, 10000) +HANDLE_BAT(, 10001) +HANDLE_BAT(, 10002) +HANDLE_BAT(, 10003) +HANDLE_BAT(, 10004) +HANDLE_BAT(, 10005) +HANDLE_BAT(, 10006) +HANDLE_BAT(, 10007) +HANDLE_BAT(, 10008) +HANDLE_BAT(, 10009) +HANDLE_BAT(, 10010) +HANDLE_BAT(, 10011) +HANDLE_BAT(, 10012) +HANDLE_BAT(, 10013) +HANDLE_BAT(, 10014) +HANDLE_BAT(, 10015) +HANDLE_BAT(, 10016) +HANDLE_BAT(, 10017) +HANDLE_BAT(, 10018) +HANDLE_BAT(, 10019) +HANDLE_BAT(, 10020) +HANDLE_BAT(, 10021) +HANDLE_BAT(, 10022) +HANDLE_BAT(, 10023) +HANDLE_BAT(, 10024) +HANDLE_BAT(, 10025) +HANDLE_BAT(, 10026) +HANDLE_BAT(, 10027) +HANDLE_BAT(, 10028) +HANDLE_BAT(, 10029) +HANDLE_BAT(, 10030) +HANDLE_BAT(, 10031) +HANDLE_BAT(, 10032) +HANDLE_BAT(, 10033) +HANDLE_BAT(, 10034) +HANDLE_BAT(, 10035) +HANDLE_BAT(, 10036) +HANDLE_BAT(, 10037) +HANDLE_BAT(, 10038) +HANDLE_BAT(, 10039) +HANDLE_BAT(, 10040) +HANDLE_BAT(, 10041) +HANDLE_BAT(, 10042) +HANDLE_BAT(, 10043) +HANDLE_BAT(, 10044) +HANDLE_BAT(, 10045) +HANDLE_BAT(, 10046) +HANDLE_BAT(, 10047) +HANDLE_BAT(, 10048) +HANDLE_BAT(, 10049) +HANDLE_BAT(, 10050) +HANDLE_BAT(, 10051) +HANDLE_BAT(, 10052) +HANDLE_BAT(, 10053) +HANDLE_BAT(, 10054) +HANDLE_BAT(, 10055) +HANDLE_BAT(, 10056) +HANDLE_BAT(, 10057) +HANDLE_BAT(, 10058) +HANDLE_BAT(, 10059) +HANDLE_BAT(, 10060) +HANDLE_BAT(, 10061) +HANDLE_BAT(, 10062) +HANDLE_BAT(, 10063) +HANDLE_BAT(, 10064) +HANDLE_BAT(, 10065) +HANDLE_BAT(, 10066) +HANDLE_BAT(, 10067) +HANDLE_BAT(, 10068) +HANDLE_BAT(, 10069) +HANDLE_BAT(, 10070) +HANDLE_BAT(, 10071) +HANDLE_BAT(, 10072) +HANDLE_BAT(, 10073) +HANDLE_BAT(, 10074) +HANDLE_BAT(, 10075) +HANDLE_BAT(, 10076) +HANDLE_BAT(, 10077) +HANDLE_BAT(, 10078) +HANDLE_BAT(, 10079) +HANDLE_BAT(, 10080) +HANDLE_BAT(, 10081) +HANDLE_BAT(, 10082) +HANDLE_BAT(, 10083) +HANDLE_BAT(, 10084) +HANDLE_BAT(, 10085) +HANDLE_BAT(, 10086) +HANDLE_BAT(, 10087) +HANDLE_BAT(, 10088) +HANDLE_BAT(, 10089) +HANDLE_BAT(, 10090) +HANDLE_BAT(, 10091) +HANDLE_BAT(, 10092) +HANDLE_BAT(, 10093) +HANDLE_BAT(, 10094) +HANDLE_BAT(, 10095) +HANDLE_BAT(, 10096) +HANDLE_BAT(, 10097) +HANDLE_BAT(, 10098) +HANDLE_BAT(, 10099) +HANDLE_BAT(, 10100) +HANDLE_BAT(, 10101) +HANDLE_BAT(, 10102) +HANDLE_BAT(, 10103) +HANDLE_BAT(, 10104) +HANDLE_BAT(, 10105) +HANDLE_BAT(, 10106) +HANDLE_BAT(, 10107) +HANDLE_BAT(, 10108) +HANDLE_BAT(, 10109) +HANDLE_BAT(, 10110) +HANDLE_BAT(, 10111) +HANDLE_BAT(, 10112) +HANDLE_BAT(, 10113) +HANDLE_BAT(, 10114) +HANDLE_BAT(, 10115) +HANDLE_BAT(, 10116) +HANDLE_BAT(, 10117) +HANDLE_BAT(, 10118) +HANDLE_BAT(, 10119) +HANDLE_BAT(, 10120) +HANDLE_BAT(, 10121) +HANDLE_BAT(, 10122) +HANDLE_BAT(, 10123) +HANDLE_BAT(, 10124) +HANDLE_BAT(, 10125) +HANDLE_BAT(, 10126) +HANDLE_BAT(, 10127) +HANDLE_BAT(, 10128) +HANDLE_BAT(, 10129) +HANDLE_BAT(, 10130) +HANDLE_BAT(, 10131) +HANDLE_BAT(, 10132) +HANDLE_BAT(, 10133) +HANDLE_BAT(, 10134) +HANDLE_BAT(, 10135) +HANDLE_BAT(, 10136) +HANDLE_BAT(, 10137) +HANDLE_BAT(, 10138) +HANDLE_BAT(, 10139) +HANDLE_BAT(, 10140) +HANDLE_BAT(, 10141) +HANDLE_BAT(, 10142) +HANDLE_BAT(, 10143) +HANDLE_BAT(, 10144) +HANDLE_BAT(, 10145) +HANDLE_BAT(, 10146) +HANDLE_BAT(, 10147) +HANDLE_BAT(, 10148) +HANDLE_BAT(, 10149) +HANDLE_BAT(, 10150) +HANDLE_BAT(, 10151) +HANDLE_BAT(, 10152) +HANDLE_BAT(, 10153) +HANDLE_BAT(, 10154) +HANDLE_BAT(, 10155) +HANDLE_BAT(, 10156) +HANDLE_BAT(, 10157) +HANDLE_BAT(, 10158) +HANDLE_BAT(, 10159) +HANDLE_BAT(, 10160) +HANDLE_BAT(, 10161) +HANDLE_BAT(, 10162) +HANDLE_BAT(, 10163) +HANDLE_BAT(, 10164) +HANDLE_BAT(, 10165) +HANDLE_BAT(, 10166) +HANDLE_BAT(, 10167) +HANDLE_BAT(, 10168) +HANDLE_BAT(, 10169) +HANDLE_BAT(, 10170) +HANDLE_BAT(, 10171) +HANDLE_BAT(, 10172) +HANDLE_BAT(, 10173) +HANDLE_BAT(, 10174) +HANDLE_BAT(, 10175) +HANDLE_BAT(, 10176) +HANDLE_BAT(, 10177) +HANDLE_BAT(, 10178) +HANDLE_BAT(, 10179) +HANDLE_BAT(, 10180) +HANDLE_BAT(, 10181) +HANDLE_BAT(, 10182) +HANDLE_BAT(, 10183) +HANDLE_BAT(, 10184) +HANDLE_BAT(, 10185) +HANDLE_BAT(, 10186) +HANDLE_BAT(, 10187) +HANDLE_BAT(, 10188) +HANDLE_BAT(, 10189) +HANDLE_BAT(, 10190) +HANDLE_BAT(, 10191) +HANDLE_BAT(, 10192) +HANDLE_BAT(, 10193) +HANDLE_BAT(, 10194) +HANDLE_BAT(, 10195) +HANDLE_BAT(, 10196) +HANDLE_BAT(, 10197) +HANDLE_BAT(, 10198) +HANDLE_BAT(, 10199) +HANDLE_BAT(, 10200) +HANDLE_BAT(, 10201) +HANDLE_BAT(, 10202) +HANDLE_BAT(, 10203) +HANDLE_BAT(, 10204) +HANDLE_BAT(, 10205) +HANDLE_BAT(, 10206) +HANDLE_BAT(, 10207) +HANDLE_BAT(, 10208) +HANDLE_BAT(, 10209) +HANDLE_BAT(, 10210) +HANDLE_BAT(, 10211) +HANDLE_BAT(, 10212) +HANDLE_BAT(, 10213) +HANDLE_BAT(, 10214) +HANDLE_BAT(, 10215) +HANDLE_BAT(, 10216) +HANDLE_BAT(, 10217) +HANDLE_BAT(, 10218) +HANDLE_BAT(, 10219) +HANDLE_BAT(, 10220) +HANDLE_BAT(, 10221) +HANDLE_BAT(, 10222) +HANDLE_BAT(, 10223) +HANDLE_BAT(, 10224) +HANDLE_BAT(, 10225) +HANDLE_BAT(, 10226) +HANDLE_BAT(, 10227) +HANDLE_BAT(, 10228) +HANDLE_BAT(, 10229) +HANDLE_BAT(, 10230) +HANDLE_BAT(, 10231) +HANDLE_BAT(, 10232) +HANDLE_BAT(, 10233) +HANDLE_BAT(, 10234) +HANDLE_BAT(, 10235) +HANDLE_BAT(, 10236) +HANDLE_BAT(, 10237) +HANDLE_BAT(, 10238) +HANDLE_BAT(, 10239) +HANDLE_BAT(, 10240) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 9217) +HANDLE_BAT(APINT_TYPE_PREFIX, 9218) +HANDLE_BAT(APINT_TYPE_PREFIX, 9219) +HANDLE_BAT(APINT_TYPE_PREFIX, 9220) +HANDLE_BAT(APINT_TYPE_PREFIX, 9221) +HANDLE_BAT(APINT_TYPE_PREFIX, 9222) +HANDLE_BAT(APINT_TYPE_PREFIX, 9223) +HANDLE_BAT(APINT_TYPE_PREFIX, 9224) +HANDLE_BAT(APINT_TYPE_PREFIX, 9225) +HANDLE_BAT(APINT_TYPE_PREFIX, 9226) +HANDLE_BAT(APINT_TYPE_PREFIX, 9227) +HANDLE_BAT(APINT_TYPE_PREFIX, 9228) +HANDLE_BAT(APINT_TYPE_PREFIX, 9229) +HANDLE_BAT(APINT_TYPE_PREFIX, 9230) +HANDLE_BAT(APINT_TYPE_PREFIX, 9231) +HANDLE_BAT(APINT_TYPE_PREFIX, 9232) +HANDLE_BAT(APINT_TYPE_PREFIX, 9233) +HANDLE_BAT(APINT_TYPE_PREFIX, 9234) +HANDLE_BAT(APINT_TYPE_PREFIX, 9235) +HANDLE_BAT(APINT_TYPE_PREFIX, 9236) +HANDLE_BAT(APINT_TYPE_PREFIX, 9237) +HANDLE_BAT(APINT_TYPE_PREFIX, 9238) +HANDLE_BAT(APINT_TYPE_PREFIX, 9239) +HANDLE_BAT(APINT_TYPE_PREFIX, 9240) +HANDLE_BAT(APINT_TYPE_PREFIX, 9241) +HANDLE_BAT(APINT_TYPE_PREFIX, 9242) +HANDLE_BAT(APINT_TYPE_PREFIX, 9243) +HANDLE_BAT(APINT_TYPE_PREFIX, 9244) +HANDLE_BAT(APINT_TYPE_PREFIX, 9245) +HANDLE_BAT(APINT_TYPE_PREFIX, 9246) +HANDLE_BAT(APINT_TYPE_PREFIX, 9247) +HANDLE_BAT(APINT_TYPE_PREFIX, 9248) +HANDLE_BAT(APINT_TYPE_PREFIX, 9249) +HANDLE_BAT(APINT_TYPE_PREFIX, 9250) +HANDLE_BAT(APINT_TYPE_PREFIX, 9251) +HANDLE_BAT(APINT_TYPE_PREFIX, 9252) +HANDLE_BAT(APINT_TYPE_PREFIX, 9253) +HANDLE_BAT(APINT_TYPE_PREFIX, 9254) +HANDLE_BAT(APINT_TYPE_PREFIX, 9255) +HANDLE_BAT(APINT_TYPE_PREFIX, 9256) +HANDLE_BAT(APINT_TYPE_PREFIX, 9257) +HANDLE_BAT(APINT_TYPE_PREFIX, 9258) +HANDLE_BAT(APINT_TYPE_PREFIX, 9259) +HANDLE_BAT(APINT_TYPE_PREFIX, 9260) +HANDLE_BAT(APINT_TYPE_PREFIX, 9261) +HANDLE_BAT(APINT_TYPE_PREFIX, 9262) +HANDLE_BAT(APINT_TYPE_PREFIX, 9263) +HANDLE_BAT(APINT_TYPE_PREFIX, 9264) +HANDLE_BAT(APINT_TYPE_PREFIX, 9265) +HANDLE_BAT(APINT_TYPE_PREFIX, 9266) +HANDLE_BAT(APINT_TYPE_PREFIX, 9267) +HANDLE_BAT(APINT_TYPE_PREFIX, 9268) +HANDLE_BAT(APINT_TYPE_PREFIX, 9269) +HANDLE_BAT(APINT_TYPE_PREFIX, 9270) +HANDLE_BAT(APINT_TYPE_PREFIX, 9271) +HANDLE_BAT(APINT_TYPE_PREFIX, 9272) +HANDLE_BAT(APINT_TYPE_PREFIX, 9273) +HANDLE_BAT(APINT_TYPE_PREFIX, 9274) +HANDLE_BAT(APINT_TYPE_PREFIX, 9275) +HANDLE_BAT(APINT_TYPE_PREFIX, 9276) +HANDLE_BAT(APINT_TYPE_PREFIX, 9277) +HANDLE_BAT(APINT_TYPE_PREFIX, 9278) +HANDLE_BAT(APINT_TYPE_PREFIX, 9279) +HANDLE_BAT(APINT_TYPE_PREFIX, 9280) +HANDLE_BAT(APINT_TYPE_PREFIX, 9281) +HANDLE_BAT(APINT_TYPE_PREFIX, 9282) +HANDLE_BAT(APINT_TYPE_PREFIX, 9283) +HANDLE_BAT(APINT_TYPE_PREFIX, 9284) +HANDLE_BAT(APINT_TYPE_PREFIX, 9285) +HANDLE_BAT(APINT_TYPE_PREFIX, 9286) +HANDLE_BAT(APINT_TYPE_PREFIX, 9287) +HANDLE_BAT(APINT_TYPE_PREFIX, 9288) +HANDLE_BAT(APINT_TYPE_PREFIX, 9289) +HANDLE_BAT(APINT_TYPE_PREFIX, 9290) +HANDLE_BAT(APINT_TYPE_PREFIX, 9291) +HANDLE_BAT(APINT_TYPE_PREFIX, 9292) +HANDLE_BAT(APINT_TYPE_PREFIX, 9293) +HANDLE_BAT(APINT_TYPE_PREFIX, 9294) +HANDLE_BAT(APINT_TYPE_PREFIX, 9295) +HANDLE_BAT(APINT_TYPE_PREFIX, 9296) +HANDLE_BAT(APINT_TYPE_PREFIX, 9297) +HANDLE_BAT(APINT_TYPE_PREFIX, 9298) +HANDLE_BAT(APINT_TYPE_PREFIX, 9299) +HANDLE_BAT(APINT_TYPE_PREFIX, 9300) +HANDLE_BAT(APINT_TYPE_PREFIX, 9301) +HANDLE_BAT(APINT_TYPE_PREFIX, 9302) +HANDLE_BAT(APINT_TYPE_PREFIX, 9303) +HANDLE_BAT(APINT_TYPE_PREFIX, 9304) +HANDLE_BAT(APINT_TYPE_PREFIX, 9305) +HANDLE_BAT(APINT_TYPE_PREFIX, 9306) +HANDLE_BAT(APINT_TYPE_PREFIX, 9307) +HANDLE_BAT(APINT_TYPE_PREFIX, 9308) +HANDLE_BAT(APINT_TYPE_PREFIX, 9309) +HANDLE_BAT(APINT_TYPE_PREFIX, 9310) +HANDLE_BAT(APINT_TYPE_PREFIX, 9311) +HANDLE_BAT(APINT_TYPE_PREFIX, 9312) +HANDLE_BAT(APINT_TYPE_PREFIX, 9313) +HANDLE_BAT(APINT_TYPE_PREFIX, 9314) +HANDLE_BAT(APINT_TYPE_PREFIX, 9315) +HANDLE_BAT(APINT_TYPE_PREFIX, 9316) +HANDLE_BAT(APINT_TYPE_PREFIX, 9317) +HANDLE_BAT(APINT_TYPE_PREFIX, 9318) +HANDLE_BAT(APINT_TYPE_PREFIX, 9319) +HANDLE_BAT(APINT_TYPE_PREFIX, 9320) +HANDLE_BAT(APINT_TYPE_PREFIX, 9321) +HANDLE_BAT(APINT_TYPE_PREFIX, 9322) +HANDLE_BAT(APINT_TYPE_PREFIX, 9323) +HANDLE_BAT(APINT_TYPE_PREFIX, 9324) +HANDLE_BAT(APINT_TYPE_PREFIX, 9325) +HANDLE_BAT(APINT_TYPE_PREFIX, 9326) +HANDLE_BAT(APINT_TYPE_PREFIX, 9327) +HANDLE_BAT(APINT_TYPE_PREFIX, 9328) +HANDLE_BAT(APINT_TYPE_PREFIX, 9329) +HANDLE_BAT(APINT_TYPE_PREFIX, 9330) +HANDLE_BAT(APINT_TYPE_PREFIX, 9331) +HANDLE_BAT(APINT_TYPE_PREFIX, 9332) +HANDLE_BAT(APINT_TYPE_PREFIX, 9333) +HANDLE_BAT(APINT_TYPE_PREFIX, 9334) +HANDLE_BAT(APINT_TYPE_PREFIX, 9335) +HANDLE_BAT(APINT_TYPE_PREFIX, 9336) +HANDLE_BAT(APINT_TYPE_PREFIX, 9337) +HANDLE_BAT(APINT_TYPE_PREFIX, 9338) +HANDLE_BAT(APINT_TYPE_PREFIX, 9339) +HANDLE_BAT(APINT_TYPE_PREFIX, 9340) +HANDLE_BAT(APINT_TYPE_PREFIX, 9341) +HANDLE_BAT(APINT_TYPE_PREFIX, 9342) +HANDLE_BAT(APINT_TYPE_PREFIX, 9343) +HANDLE_BAT(APINT_TYPE_PREFIX, 9344) +HANDLE_BAT(APINT_TYPE_PREFIX, 9345) +HANDLE_BAT(APINT_TYPE_PREFIX, 9346) +HANDLE_BAT(APINT_TYPE_PREFIX, 9347) +HANDLE_BAT(APINT_TYPE_PREFIX, 9348) +HANDLE_BAT(APINT_TYPE_PREFIX, 9349) +HANDLE_BAT(APINT_TYPE_PREFIX, 9350) +HANDLE_BAT(APINT_TYPE_PREFIX, 9351) +HANDLE_BAT(APINT_TYPE_PREFIX, 9352) +HANDLE_BAT(APINT_TYPE_PREFIX, 9353) +HANDLE_BAT(APINT_TYPE_PREFIX, 9354) +HANDLE_BAT(APINT_TYPE_PREFIX, 9355) +HANDLE_BAT(APINT_TYPE_PREFIX, 9356) +HANDLE_BAT(APINT_TYPE_PREFIX, 9357) +HANDLE_BAT(APINT_TYPE_PREFIX, 9358) +HANDLE_BAT(APINT_TYPE_PREFIX, 9359) +HANDLE_BAT(APINT_TYPE_PREFIX, 9360) +HANDLE_BAT(APINT_TYPE_PREFIX, 9361) +HANDLE_BAT(APINT_TYPE_PREFIX, 9362) +HANDLE_BAT(APINT_TYPE_PREFIX, 9363) +HANDLE_BAT(APINT_TYPE_PREFIX, 9364) +HANDLE_BAT(APINT_TYPE_PREFIX, 9365) +HANDLE_BAT(APINT_TYPE_PREFIX, 9366) +HANDLE_BAT(APINT_TYPE_PREFIX, 9367) +HANDLE_BAT(APINT_TYPE_PREFIX, 9368) +HANDLE_BAT(APINT_TYPE_PREFIX, 9369) +HANDLE_BAT(APINT_TYPE_PREFIX, 9370) +HANDLE_BAT(APINT_TYPE_PREFIX, 9371) +HANDLE_BAT(APINT_TYPE_PREFIX, 9372) +HANDLE_BAT(APINT_TYPE_PREFIX, 9373) +HANDLE_BAT(APINT_TYPE_PREFIX, 9374) +HANDLE_BAT(APINT_TYPE_PREFIX, 9375) +HANDLE_BAT(APINT_TYPE_PREFIX, 9376) +HANDLE_BAT(APINT_TYPE_PREFIX, 9377) +HANDLE_BAT(APINT_TYPE_PREFIX, 9378) +HANDLE_BAT(APINT_TYPE_PREFIX, 9379) +HANDLE_BAT(APINT_TYPE_PREFIX, 9380) +HANDLE_BAT(APINT_TYPE_PREFIX, 9381) +HANDLE_BAT(APINT_TYPE_PREFIX, 9382) +HANDLE_BAT(APINT_TYPE_PREFIX, 9383) +HANDLE_BAT(APINT_TYPE_PREFIX, 9384) +HANDLE_BAT(APINT_TYPE_PREFIX, 9385) +HANDLE_BAT(APINT_TYPE_PREFIX, 9386) +HANDLE_BAT(APINT_TYPE_PREFIX, 9387) +HANDLE_BAT(APINT_TYPE_PREFIX, 9388) +HANDLE_BAT(APINT_TYPE_PREFIX, 9389) +HANDLE_BAT(APINT_TYPE_PREFIX, 9390) +HANDLE_BAT(APINT_TYPE_PREFIX, 9391) +HANDLE_BAT(APINT_TYPE_PREFIX, 9392) +HANDLE_BAT(APINT_TYPE_PREFIX, 9393) +HANDLE_BAT(APINT_TYPE_PREFIX, 9394) +HANDLE_BAT(APINT_TYPE_PREFIX, 9395) +HANDLE_BAT(APINT_TYPE_PREFIX, 9396) +HANDLE_BAT(APINT_TYPE_PREFIX, 9397) +HANDLE_BAT(APINT_TYPE_PREFIX, 9398) +HANDLE_BAT(APINT_TYPE_PREFIX, 9399) +HANDLE_BAT(APINT_TYPE_PREFIX, 9400) +HANDLE_BAT(APINT_TYPE_PREFIX, 9401) +HANDLE_BAT(APINT_TYPE_PREFIX, 9402) +HANDLE_BAT(APINT_TYPE_PREFIX, 9403) +HANDLE_BAT(APINT_TYPE_PREFIX, 9404) +HANDLE_BAT(APINT_TYPE_PREFIX, 9405) +HANDLE_BAT(APINT_TYPE_PREFIX, 9406) +HANDLE_BAT(APINT_TYPE_PREFIX, 9407) +HANDLE_BAT(APINT_TYPE_PREFIX, 9408) +HANDLE_BAT(APINT_TYPE_PREFIX, 9409) +HANDLE_BAT(APINT_TYPE_PREFIX, 9410) +HANDLE_BAT(APINT_TYPE_PREFIX, 9411) +HANDLE_BAT(APINT_TYPE_PREFIX, 9412) +HANDLE_BAT(APINT_TYPE_PREFIX, 9413) +HANDLE_BAT(APINT_TYPE_PREFIX, 9414) +HANDLE_BAT(APINT_TYPE_PREFIX, 9415) +HANDLE_BAT(APINT_TYPE_PREFIX, 9416) +HANDLE_BAT(APINT_TYPE_PREFIX, 9417) +HANDLE_BAT(APINT_TYPE_PREFIX, 9418) +HANDLE_BAT(APINT_TYPE_PREFIX, 9419) +HANDLE_BAT(APINT_TYPE_PREFIX, 9420) +HANDLE_BAT(APINT_TYPE_PREFIX, 9421) +HANDLE_BAT(APINT_TYPE_PREFIX, 9422) +HANDLE_BAT(APINT_TYPE_PREFIX, 9423) +HANDLE_BAT(APINT_TYPE_PREFIX, 9424) +HANDLE_BAT(APINT_TYPE_PREFIX, 9425) +HANDLE_BAT(APINT_TYPE_PREFIX, 9426) +HANDLE_BAT(APINT_TYPE_PREFIX, 9427) +HANDLE_BAT(APINT_TYPE_PREFIX, 9428) +HANDLE_BAT(APINT_TYPE_PREFIX, 9429) +HANDLE_BAT(APINT_TYPE_PREFIX, 9430) +HANDLE_BAT(APINT_TYPE_PREFIX, 9431) +HANDLE_BAT(APINT_TYPE_PREFIX, 9432) +HANDLE_BAT(APINT_TYPE_PREFIX, 9433) +HANDLE_BAT(APINT_TYPE_PREFIX, 9434) +HANDLE_BAT(APINT_TYPE_PREFIX, 9435) +HANDLE_BAT(APINT_TYPE_PREFIX, 9436) +HANDLE_BAT(APINT_TYPE_PREFIX, 9437) +HANDLE_BAT(APINT_TYPE_PREFIX, 9438) +HANDLE_BAT(APINT_TYPE_PREFIX, 9439) +HANDLE_BAT(APINT_TYPE_PREFIX, 9440) +HANDLE_BAT(APINT_TYPE_PREFIX, 9441) +HANDLE_BAT(APINT_TYPE_PREFIX, 9442) +HANDLE_BAT(APINT_TYPE_PREFIX, 9443) +HANDLE_BAT(APINT_TYPE_PREFIX, 9444) +HANDLE_BAT(APINT_TYPE_PREFIX, 9445) +HANDLE_BAT(APINT_TYPE_PREFIX, 9446) +HANDLE_BAT(APINT_TYPE_PREFIX, 9447) +HANDLE_BAT(APINT_TYPE_PREFIX, 9448) +HANDLE_BAT(APINT_TYPE_PREFIX, 9449) +HANDLE_BAT(APINT_TYPE_PREFIX, 9450) +HANDLE_BAT(APINT_TYPE_PREFIX, 9451) +HANDLE_BAT(APINT_TYPE_PREFIX, 9452) +HANDLE_BAT(APINT_TYPE_PREFIX, 9453) +HANDLE_BAT(APINT_TYPE_PREFIX, 9454) +HANDLE_BAT(APINT_TYPE_PREFIX, 9455) +HANDLE_BAT(APINT_TYPE_PREFIX, 9456) +HANDLE_BAT(APINT_TYPE_PREFIX, 9457) +HANDLE_BAT(APINT_TYPE_PREFIX, 9458) +HANDLE_BAT(APINT_TYPE_PREFIX, 9459) +HANDLE_BAT(APINT_TYPE_PREFIX, 9460) +HANDLE_BAT(APINT_TYPE_PREFIX, 9461) +HANDLE_BAT(APINT_TYPE_PREFIX, 9462) +HANDLE_BAT(APINT_TYPE_PREFIX, 9463) +HANDLE_BAT(APINT_TYPE_PREFIX, 9464) +HANDLE_BAT(APINT_TYPE_PREFIX, 9465) +HANDLE_BAT(APINT_TYPE_PREFIX, 9466) +HANDLE_BAT(APINT_TYPE_PREFIX, 9467) +HANDLE_BAT(APINT_TYPE_PREFIX, 9468) +HANDLE_BAT(APINT_TYPE_PREFIX, 9469) +HANDLE_BAT(APINT_TYPE_PREFIX, 9470) +HANDLE_BAT(APINT_TYPE_PREFIX, 9471) +HANDLE_BAT(APINT_TYPE_PREFIX, 9472) +HANDLE_BAT(APINT_TYPE_PREFIX, 9473) +HANDLE_BAT(APINT_TYPE_PREFIX, 9474) +HANDLE_BAT(APINT_TYPE_PREFIX, 9475) +HANDLE_BAT(APINT_TYPE_PREFIX, 9476) +HANDLE_BAT(APINT_TYPE_PREFIX, 9477) +HANDLE_BAT(APINT_TYPE_PREFIX, 9478) +HANDLE_BAT(APINT_TYPE_PREFIX, 9479) +HANDLE_BAT(APINT_TYPE_PREFIX, 9480) +HANDLE_BAT(APINT_TYPE_PREFIX, 9481) +HANDLE_BAT(APINT_TYPE_PREFIX, 9482) +HANDLE_BAT(APINT_TYPE_PREFIX, 9483) +HANDLE_BAT(APINT_TYPE_PREFIX, 9484) +HANDLE_BAT(APINT_TYPE_PREFIX, 9485) +HANDLE_BAT(APINT_TYPE_PREFIX, 9486) +HANDLE_BAT(APINT_TYPE_PREFIX, 9487) +HANDLE_BAT(APINT_TYPE_PREFIX, 9488) +HANDLE_BAT(APINT_TYPE_PREFIX, 9489) +HANDLE_BAT(APINT_TYPE_PREFIX, 9490) +HANDLE_BAT(APINT_TYPE_PREFIX, 9491) +HANDLE_BAT(APINT_TYPE_PREFIX, 9492) +HANDLE_BAT(APINT_TYPE_PREFIX, 9493) +HANDLE_BAT(APINT_TYPE_PREFIX, 9494) +HANDLE_BAT(APINT_TYPE_PREFIX, 9495) +HANDLE_BAT(APINT_TYPE_PREFIX, 9496) +HANDLE_BAT(APINT_TYPE_PREFIX, 9497) +HANDLE_BAT(APINT_TYPE_PREFIX, 9498) +HANDLE_BAT(APINT_TYPE_PREFIX, 9499) +HANDLE_BAT(APINT_TYPE_PREFIX, 9500) +HANDLE_BAT(APINT_TYPE_PREFIX, 9501) +HANDLE_BAT(APINT_TYPE_PREFIX, 9502) +HANDLE_BAT(APINT_TYPE_PREFIX, 9503) +HANDLE_BAT(APINT_TYPE_PREFIX, 9504) +HANDLE_BAT(APINT_TYPE_PREFIX, 9505) +HANDLE_BAT(APINT_TYPE_PREFIX, 9506) +HANDLE_BAT(APINT_TYPE_PREFIX, 9507) +HANDLE_BAT(APINT_TYPE_PREFIX, 9508) +HANDLE_BAT(APINT_TYPE_PREFIX, 9509) +HANDLE_BAT(APINT_TYPE_PREFIX, 9510) +HANDLE_BAT(APINT_TYPE_PREFIX, 9511) +HANDLE_BAT(APINT_TYPE_PREFIX, 9512) +HANDLE_BAT(APINT_TYPE_PREFIX, 9513) +HANDLE_BAT(APINT_TYPE_PREFIX, 9514) +HANDLE_BAT(APINT_TYPE_PREFIX, 9515) +HANDLE_BAT(APINT_TYPE_PREFIX, 9516) +HANDLE_BAT(APINT_TYPE_PREFIX, 9517) +HANDLE_BAT(APINT_TYPE_PREFIX, 9518) +HANDLE_BAT(APINT_TYPE_PREFIX, 9519) +HANDLE_BAT(APINT_TYPE_PREFIX, 9520) +HANDLE_BAT(APINT_TYPE_PREFIX, 9521) +HANDLE_BAT(APINT_TYPE_PREFIX, 9522) +HANDLE_BAT(APINT_TYPE_PREFIX, 9523) +HANDLE_BAT(APINT_TYPE_PREFIX, 9524) +HANDLE_BAT(APINT_TYPE_PREFIX, 9525) +HANDLE_BAT(APINT_TYPE_PREFIX, 9526) +HANDLE_BAT(APINT_TYPE_PREFIX, 9527) +HANDLE_BAT(APINT_TYPE_PREFIX, 9528) +HANDLE_BAT(APINT_TYPE_PREFIX, 9529) +HANDLE_BAT(APINT_TYPE_PREFIX, 9530) +HANDLE_BAT(APINT_TYPE_PREFIX, 9531) +HANDLE_BAT(APINT_TYPE_PREFIX, 9532) +HANDLE_BAT(APINT_TYPE_PREFIX, 9533) +HANDLE_BAT(APINT_TYPE_PREFIX, 9534) +HANDLE_BAT(APINT_TYPE_PREFIX, 9535) +HANDLE_BAT(APINT_TYPE_PREFIX, 9536) +HANDLE_BAT(APINT_TYPE_PREFIX, 9537) +HANDLE_BAT(APINT_TYPE_PREFIX, 9538) +HANDLE_BAT(APINT_TYPE_PREFIX, 9539) +HANDLE_BAT(APINT_TYPE_PREFIX, 9540) +HANDLE_BAT(APINT_TYPE_PREFIX, 9541) +HANDLE_BAT(APINT_TYPE_PREFIX, 9542) +HANDLE_BAT(APINT_TYPE_PREFIX, 9543) +HANDLE_BAT(APINT_TYPE_PREFIX, 9544) +HANDLE_BAT(APINT_TYPE_PREFIX, 9545) +HANDLE_BAT(APINT_TYPE_PREFIX, 9546) +HANDLE_BAT(APINT_TYPE_PREFIX, 9547) +HANDLE_BAT(APINT_TYPE_PREFIX, 9548) +HANDLE_BAT(APINT_TYPE_PREFIX, 9549) +HANDLE_BAT(APINT_TYPE_PREFIX, 9550) +HANDLE_BAT(APINT_TYPE_PREFIX, 9551) +HANDLE_BAT(APINT_TYPE_PREFIX, 9552) +HANDLE_BAT(APINT_TYPE_PREFIX, 9553) +HANDLE_BAT(APINT_TYPE_PREFIX, 9554) +HANDLE_BAT(APINT_TYPE_PREFIX, 9555) +HANDLE_BAT(APINT_TYPE_PREFIX, 9556) +HANDLE_BAT(APINT_TYPE_PREFIX, 9557) +HANDLE_BAT(APINT_TYPE_PREFIX, 9558) +HANDLE_BAT(APINT_TYPE_PREFIX, 9559) +HANDLE_BAT(APINT_TYPE_PREFIX, 9560) +HANDLE_BAT(APINT_TYPE_PREFIX, 9561) +HANDLE_BAT(APINT_TYPE_PREFIX, 9562) +HANDLE_BAT(APINT_TYPE_PREFIX, 9563) +HANDLE_BAT(APINT_TYPE_PREFIX, 9564) +HANDLE_BAT(APINT_TYPE_PREFIX, 9565) +HANDLE_BAT(APINT_TYPE_PREFIX, 9566) +HANDLE_BAT(APINT_TYPE_PREFIX, 9567) +HANDLE_BAT(APINT_TYPE_PREFIX, 9568) +HANDLE_BAT(APINT_TYPE_PREFIX, 9569) +HANDLE_BAT(APINT_TYPE_PREFIX, 9570) +HANDLE_BAT(APINT_TYPE_PREFIX, 9571) +HANDLE_BAT(APINT_TYPE_PREFIX, 9572) +HANDLE_BAT(APINT_TYPE_PREFIX, 9573) +HANDLE_BAT(APINT_TYPE_PREFIX, 9574) +HANDLE_BAT(APINT_TYPE_PREFIX, 9575) +HANDLE_BAT(APINT_TYPE_PREFIX, 9576) +HANDLE_BAT(APINT_TYPE_PREFIX, 9577) +HANDLE_BAT(APINT_TYPE_PREFIX, 9578) +HANDLE_BAT(APINT_TYPE_PREFIX, 9579) +HANDLE_BAT(APINT_TYPE_PREFIX, 9580) +HANDLE_BAT(APINT_TYPE_PREFIX, 9581) +HANDLE_BAT(APINT_TYPE_PREFIX, 9582) +HANDLE_BAT(APINT_TYPE_PREFIX, 9583) +HANDLE_BAT(APINT_TYPE_PREFIX, 9584) +HANDLE_BAT(APINT_TYPE_PREFIX, 9585) +HANDLE_BAT(APINT_TYPE_PREFIX, 9586) +HANDLE_BAT(APINT_TYPE_PREFIX, 9587) +HANDLE_BAT(APINT_TYPE_PREFIX, 9588) +HANDLE_BAT(APINT_TYPE_PREFIX, 9589) +HANDLE_BAT(APINT_TYPE_PREFIX, 9590) +HANDLE_BAT(APINT_TYPE_PREFIX, 9591) +HANDLE_BAT(APINT_TYPE_PREFIX, 9592) +HANDLE_BAT(APINT_TYPE_PREFIX, 9593) +HANDLE_BAT(APINT_TYPE_PREFIX, 9594) +HANDLE_BAT(APINT_TYPE_PREFIX, 9595) +HANDLE_BAT(APINT_TYPE_PREFIX, 9596) +HANDLE_BAT(APINT_TYPE_PREFIX, 9597) +HANDLE_BAT(APINT_TYPE_PREFIX, 9598) +HANDLE_BAT(APINT_TYPE_PREFIX, 9599) +HANDLE_BAT(APINT_TYPE_PREFIX, 9600) +HANDLE_BAT(APINT_TYPE_PREFIX, 9601) +HANDLE_BAT(APINT_TYPE_PREFIX, 9602) +HANDLE_BAT(APINT_TYPE_PREFIX, 9603) +HANDLE_BAT(APINT_TYPE_PREFIX, 9604) +HANDLE_BAT(APINT_TYPE_PREFIX, 9605) +HANDLE_BAT(APINT_TYPE_PREFIX, 9606) +HANDLE_BAT(APINT_TYPE_PREFIX, 9607) +HANDLE_BAT(APINT_TYPE_PREFIX, 9608) +HANDLE_BAT(APINT_TYPE_PREFIX, 9609) +HANDLE_BAT(APINT_TYPE_PREFIX, 9610) +HANDLE_BAT(APINT_TYPE_PREFIX, 9611) +HANDLE_BAT(APINT_TYPE_PREFIX, 9612) +HANDLE_BAT(APINT_TYPE_PREFIX, 9613) +HANDLE_BAT(APINT_TYPE_PREFIX, 9614) +HANDLE_BAT(APINT_TYPE_PREFIX, 9615) +HANDLE_BAT(APINT_TYPE_PREFIX, 9616) +HANDLE_BAT(APINT_TYPE_PREFIX, 9617) +HANDLE_BAT(APINT_TYPE_PREFIX, 9618) +HANDLE_BAT(APINT_TYPE_PREFIX, 9619) +HANDLE_BAT(APINT_TYPE_PREFIX, 9620) +HANDLE_BAT(APINT_TYPE_PREFIX, 9621) +HANDLE_BAT(APINT_TYPE_PREFIX, 9622) +HANDLE_BAT(APINT_TYPE_PREFIX, 9623) +HANDLE_BAT(APINT_TYPE_PREFIX, 9624) +HANDLE_BAT(APINT_TYPE_PREFIX, 9625) +HANDLE_BAT(APINT_TYPE_PREFIX, 9626) +HANDLE_BAT(APINT_TYPE_PREFIX, 9627) +HANDLE_BAT(APINT_TYPE_PREFIX, 9628) +HANDLE_BAT(APINT_TYPE_PREFIX, 9629) +HANDLE_BAT(APINT_TYPE_PREFIX, 9630) +HANDLE_BAT(APINT_TYPE_PREFIX, 9631) +HANDLE_BAT(APINT_TYPE_PREFIX, 9632) +HANDLE_BAT(APINT_TYPE_PREFIX, 9633) +HANDLE_BAT(APINT_TYPE_PREFIX, 9634) +HANDLE_BAT(APINT_TYPE_PREFIX, 9635) +HANDLE_BAT(APINT_TYPE_PREFIX, 9636) +HANDLE_BAT(APINT_TYPE_PREFIX, 9637) +HANDLE_BAT(APINT_TYPE_PREFIX, 9638) +HANDLE_BAT(APINT_TYPE_PREFIX, 9639) +HANDLE_BAT(APINT_TYPE_PREFIX, 9640) +HANDLE_BAT(APINT_TYPE_PREFIX, 9641) +HANDLE_BAT(APINT_TYPE_PREFIX, 9642) +HANDLE_BAT(APINT_TYPE_PREFIX, 9643) +HANDLE_BAT(APINT_TYPE_PREFIX, 9644) +HANDLE_BAT(APINT_TYPE_PREFIX, 9645) +HANDLE_BAT(APINT_TYPE_PREFIX, 9646) +HANDLE_BAT(APINT_TYPE_PREFIX, 9647) +HANDLE_BAT(APINT_TYPE_PREFIX, 9648) +HANDLE_BAT(APINT_TYPE_PREFIX, 9649) +HANDLE_BAT(APINT_TYPE_PREFIX, 9650) +HANDLE_BAT(APINT_TYPE_PREFIX, 9651) +HANDLE_BAT(APINT_TYPE_PREFIX, 9652) +HANDLE_BAT(APINT_TYPE_PREFIX, 9653) +HANDLE_BAT(APINT_TYPE_PREFIX, 9654) +HANDLE_BAT(APINT_TYPE_PREFIX, 9655) +HANDLE_BAT(APINT_TYPE_PREFIX, 9656) +HANDLE_BAT(APINT_TYPE_PREFIX, 9657) +HANDLE_BAT(APINT_TYPE_PREFIX, 9658) +HANDLE_BAT(APINT_TYPE_PREFIX, 9659) +HANDLE_BAT(APINT_TYPE_PREFIX, 9660) +HANDLE_BAT(APINT_TYPE_PREFIX, 9661) +HANDLE_BAT(APINT_TYPE_PREFIX, 9662) +HANDLE_BAT(APINT_TYPE_PREFIX, 9663) +HANDLE_BAT(APINT_TYPE_PREFIX, 9664) +HANDLE_BAT(APINT_TYPE_PREFIX, 9665) +HANDLE_BAT(APINT_TYPE_PREFIX, 9666) +HANDLE_BAT(APINT_TYPE_PREFIX, 9667) +HANDLE_BAT(APINT_TYPE_PREFIX, 9668) +HANDLE_BAT(APINT_TYPE_PREFIX, 9669) +HANDLE_BAT(APINT_TYPE_PREFIX, 9670) +HANDLE_BAT(APINT_TYPE_PREFIX, 9671) +HANDLE_BAT(APINT_TYPE_PREFIX, 9672) +HANDLE_BAT(APINT_TYPE_PREFIX, 9673) +HANDLE_BAT(APINT_TYPE_PREFIX, 9674) +HANDLE_BAT(APINT_TYPE_PREFIX, 9675) +HANDLE_BAT(APINT_TYPE_PREFIX, 9676) +HANDLE_BAT(APINT_TYPE_PREFIX, 9677) +HANDLE_BAT(APINT_TYPE_PREFIX, 9678) +HANDLE_BAT(APINT_TYPE_PREFIX, 9679) +HANDLE_BAT(APINT_TYPE_PREFIX, 9680) +HANDLE_BAT(APINT_TYPE_PREFIX, 9681) +HANDLE_BAT(APINT_TYPE_PREFIX, 9682) +HANDLE_BAT(APINT_TYPE_PREFIX, 9683) +HANDLE_BAT(APINT_TYPE_PREFIX, 9684) +HANDLE_BAT(APINT_TYPE_PREFIX, 9685) +HANDLE_BAT(APINT_TYPE_PREFIX, 9686) +HANDLE_BAT(APINT_TYPE_PREFIX, 9687) +HANDLE_BAT(APINT_TYPE_PREFIX, 9688) +HANDLE_BAT(APINT_TYPE_PREFIX, 9689) +HANDLE_BAT(APINT_TYPE_PREFIX, 9690) +HANDLE_BAT(APINT_TYPE_PREFIX, 9691) +HANDLE_BAT(APINT_TYPE_PREFIX, 9692) +HANDLE_BAT(APINT_TYPE_PREFIX, 9693) +HANDLE_BAT(APINT_TYPE_PREFIX, 9694) +HANDLE_BAT(APINT_TYPE_PREFIX, 9695) +HANDLE_BAT(APINT_TYPE_PREFIX, 9696) +HANDLE_BAT(APINT_TYPE_PREFIX, 9697) +HANDLE_BAT(APINT_TYPE_PREFIX, 9698) +HANDLE_BAT(APINT_TYPE_PREFIX, 9699) +HANDLE_BAT(APINT_TYPE_PREFIX, 9700) +HANDLE_BAT(APINT_TYPE_PREFIX, 9701) +HANDLE_BAT(APINT_TYPE_PREFIX, 9702) +HANDLE_BAT(APINT_TYPE_PREFIX, 9703) +HANDLE_BAT(APINT_TYPE_PREFIX, 9704) +HANDLE_BAT(APINT_TYPE_PREFIX, 9705) +HANDLE_BAT(APINT_TYPE_PREFIX, 9706) +HANDLE_BAT(APINT_TYPE_PREFIX, 9707) +HANDLE_BAT(APINT_TYPE_PREFIX, 9708) +HANDLE_BAT(APINT_TYPE_PREFIX, 9709) +HANDLE_BAT(APINT_TYPE_PREFIX, 9710) +HANDLE_BAT(APINT_TYPE_PREFIX, 9711) +HANDLE_BAT(APINT_TYPE_PREFIX, 9712) +HANDLE_BAT(APINT_TYPE_PREFIX, 9713) +HANDLE_BAT(APINT_TYPE_PREFIX, 9714) +HANDLE_BAT(APINT_TYPE_PREFIX, 9715) +HANDLE_BAT(APINT_TYPE_PREFIX, 9716) +HANDLE_BAT(APINT_TYPE_PREFIX, 9717) +HANDLE_BAT(APINT_TYPE_PREFIX, 9718) +HANDLE_BAT(APINT_TYPE_PREFIX, 9719) +HANDLE_BAT(APINT_TYPE_PREFIX, 9720) +HANDLE_BAT(APINT_TYPE_PREFIX, 9721) +HANDLE_BAT(APINT_TYPE_PREFIX, 9722) +HANDLE_BAT(APINT_TYPE_PREFIX, 9723) +HANDLE_BAT(APINT_TYPE_PREFIX, 9724) +HANDLE_BAT(APINT_TYPE_PREFIX, 9725) +HANDLE_BAT(APINT_TYPE_PREFIX, 9726) +HANDLE_BAT(APINT_TYPE_PREFIX, 9727) +HANDLE_BAT(APINT_TYPE_PREFIX, 9728) +HANDLE_BAT(APINT_TYPE_PREFIX, 9729) +HANDLE_BAT(APINT_TYPE_PREFIX, 9730) +HANDLE_BAT(APINT_TYPE_PREFIX, 9731) +HANDLE_BAT(APINT_TYPE_PREFIX, 9732) +HANDLE_BAT(APINT_TYPE_PREFIX, 9733) +HANDLE_BAT(APINT_TYPE_PREFIX, 9734) +HANDLE_BAT(APINT_TYPE_PREFIX, 9735) +HANDLE_BAT(APINT_TYPE_PREFIX, 9736) +HANDLE_BAT(APINT_TYPE_PREFIX, 9737) +HANDLE_BAT(APINT_TYPE_PREFIX, 9738) +HANDLE_BAT(APINT_TYPE_PREFIX, 9739) +HANDLE_BAT(APINT_TYPE_PREFIX, 9740) +HANDLE_BAT(APINT_TYPE_PREFIX, 9741) +HANDLE_BAT(APINT_TYPE_PREFIX, 9742) +HANDLE_BAT(APINT_TYPE_PREFIX, 9743) +HANDLE_BAT(APINT_TYPE_PREFIX, 9744) +HANDLE_BAT(APINT_TYPE_PREFIX, 9745) +HANDLE_BAT(APINT_TYPE_PREFIX, 9746) +HANDLE_BAT(APINT_TYPE_PREFIX, 9747) +HANDLE_BAT(APINT_TYPE_PREFIX, 9748) +HANDLE_BAT(APINT_TYPE_PREFIX, 9749) +HANDLE_BAT(APINT_TYPE_PREFIX, 9750) +HANDLE_BAT(APINT_TYPE_PREFIX, 9751) +HANDLE_BAT(APINT_TYPE_PREFIX, 9752) +HANDLE_BAT(APINT_TYPE_PREFIX, 9753) +HANDLE_BAT(APINT_TYPE_PREFIX, 9754) +HANDLE_BAT(APINT_TYPE_PREFIX, 9755) +HANDLE_BAT(APINT_TYPE_PREFIX, 9756) +HANDLE_BAT(APINT_TYPE_PREFIX, 9757) +HANDLE_BAT(APINT_TYPE_PREFIX, 9758) +HANDLE_BAT(APINT_TYPE_PREFIX, 9759) +HANDLE_BAT(APINT_TYPE_PREFIX, 9760) +HANDLE_BAT(APINT_TYPE_PREFIX, 9761) +HANDLE_BAT(APINT_TYPE_PREFIX, 9762) +HANDLE_BAT(APINT_TYPE_PREFIX, 9763) +HANDLE_BAT(APINT_TYPE_PREFIX, 9764) +HANDLE_BAT(APINT_TYPE_PREFIX, 9765) +HANDLE_BAT(APINT_TYPE_PREFIX, 9766) +HANDLE_BAT(APINT_TYPE_PREFIX, 9767) +HANDLE_BAT(APINT_TYPE_PREFIX, 9768) +HANDLE_BAT(APINT_TYPE_PREFIX, 9769) +HANDLE_BAT(APINT_TYPE_PREFIX, 9770) +HANDLE_BAT(APINT_TYPE_PREFIX, 9771) +HANDLE_BAT(APINT_TYPE_PREFIX, 9772) +HANDLE_BAT(APINT_TYPE_PREFIX, 9773) +HANDLE_BAT(APINT_TYPE_PREFIX, 9774) +HANDLE_BAT(APINT_TYPE_PREFIX, 9775) +HANDLE_BAT(APINT_TYPE_PREFIX, 9776) +HANDLE_BAT(APINT_TYPE_PREFIX, 9777) +HANDLE_BAT(APINT_TYPE_PREFIX, 9778) +HANDLE_BAT(APINT_TYPE_PREFIX, 9779) +HANDLE_BAT(APINT_TYPE_PREFIX, 9780) +HANDLE_BAT(APINT_TYPE_PREFIX, 9781) +HANDLE_BAT(APINT_TYPE_PREFIX, 9782) +HANDLE_BAT(APINT_TYPE_PREFIX, 9783) +HANDLE_BAT(APINT_TYPE_PREFIX, 9784) +HANDLE_BAT(APINT_TYPE_PREFIX, 9785) +HANDLE_BAT(APINT_TYPE_PREFIX, 9786) +HANDLE_BAT(APINT_TYPE_PREFIX, 9787) +HANDLE_BAT(APINT_TYPE_PREFIX, 9788) +HANDLE_BAT(APINT_TYPE_PREFIX, 9789) +HANDLE_BAT(APINT_TYPE_PREFIX, 9790) +HANDLE_BAT(APINT_TYPE_PREFIX, 9791) +HANDLE_BAT(APINT_TYPE_PREFIX, 9792) +HANDLE_BAT(APINT_TYPE_PREFIX, 9793) +HANDLE_BAT(APINT_TYPE_PREFIX, 9794) +HANDLE_BAT(APINT_TYPE_PREFIX, 9795) +HANDLE_BAT(APINT_TYPE_PREFIX, 9796) +HANDLE_BAT(APINT_TYPE_PREFIX, 9797) +HANDLE_BAT(APINT_TYPE_PREFIX, 9798) +HANDLE_BAT(APINT_TYPE_PREFIX, 9799) +HANDLE_BAT(APINT_TYPE_PREFIX, 9800) +HANDLE_BAT(APINT_TYPE_PREFIX, 9801) +HANDLE_BAT(APINT_TYPE_PREFIX, 9802) +HANDLE_BAT(APINT_TYPE_PREFIX, 9803) +HANDLE_BAT(APINT_TYPE_PREFIX, 9804) +HANDLE_BAT(APINT_TYPE_PREFIX, 9805) +HANDLE_BAT(APINT_TYPE_PREFIX, 9806) +HANDLE_BAT(APINT_TYPE_PREFIX, 9807) +HANDLE_BAT(APINT_TYPE_PREFIX, 9808) +HANDLE_BAT(APINT_TYPE_PREFIX, 9809) +HANDLE_BAT(APINT_TYPE_PREFIX, 9810) +HANDLE_BAT(APINT_TYPE_PREFIX, 9811) +HANDLE_BAT(APINT_TYPE_PREFIX, 9812) +HANDLE_BAT(APINT_TYPE_PREFIX, 9813) +HANDLE_BAT(APINT_TYPE_PREFIX, 9814) +HANDLE_BAT(APINT_TYPE_PREFIX, 9815) +HANDLE_BAT(APINT_TYPE_PREFIX, 9816) +HANDLE_BAT(APINT_TYPE_PREFIX, 9817) +HANDLE_BAT(APINT_TYPE_PREFIX, 9818) +HANDLE_BAT(APINT_TYPE_PREFIX, 9819) +HANDLE_BAT(APINT_TYPE_PREFIX, 9820) +HANDLE_BAT(APINT_TYPE_PREFIX, 9821) +HANDLE_BAT(APINT_TYPE_PREFIX, 9822) +HANDLE_BAT(APINT_TYPE_PREFIX, 9823) +HANDLE_BAT(APINT_TYPE_PREFIX, 9824) +HANDLE_BAT(APINT_TYPE_PREFIX, 9825) +HANDLE_BAT(APINT_TYPE_PREFIX, 9826) +HANDLE_BAT(APINT_TYPE_PREFIX, 9827) +HANDLE_BAT(APINT_TYPE_PREFIX, 9828) +HANDLE_BAT(APINT_TYPE_PREFIX, 9829) +HANDLE_BAT(APINT_TYPE_PREFIX, 9830) +HANDLE_BAT(APINT_TYPE_PREFIX, 9831) +HANDLE_BAT(APINT_TYPE_PREFIX, 9832) +HANDLE_BAT(APINT_TYPE_PREFIX, 9833) +HANDLE_BAT(APINT_TYPE_PREFIX, 9834) +HANDLE_BAT(APINT_TYPE_PREFIX, 9835) +HANDLE_BAT(APINT_TYPE_PREFIX, 9836) +HANDLE_BAT(APINT_TYPE_PREFIX, 9837) +HANDLE_BAT(APINT_TYPE_PREFIX, 9838) +HANDLE_BAT(APINT_TYPE_PREFIX, 9839) +HANDLE_BAT(APINT_TYPE_PREFIX, 9840) +HANDLE_BAT(APINT_TYPE_PREFIX, 9841) +HANDLE_BAT(APINT_TYPE_PREFIX, 9842) +HANDLE_BAT(APINT_TYPE_PREFIX, 9843) +HANDLE_BAT(APINT_TYPE_PREFIX, 9844) +HANDLE_BAT(APINT_TYPE_PREFIX, 9845) +HANDLE_BAT(APINT_TYPE_PREFIX, 9846) +HANDLE_BAT(APINT_TYPE_PREFIX, 9847) +HANDLE_BAT(APINT_TYPE_PREFIX, 9848) +HANDLE_BAT(APINT_TYPE_PREFIX, 9849) +HANDLE_BAT(APINT_TYPE_PREFIX, 9850) +HANDLE_BAT(APINT_TYPE_PREFIX, 9851) +HANDLE_BAT(APINT_TYPE_PREFIX, 9852) +HANDLE_BAT(APINT_TYPE_PREFIX, 9853) +HANDLE_BAT(APINT_TYPE_PREFIX, 9854) +HANDLE_BAT(APINT_TYPE_PREFIX, 9855) +HANDLE_BAT(APINT_TYPE_PREFIX, 9856) +HANDLE_BAT(APINT_TYPE_PREFIX, 9857) +HANDLE_BAT(APINT_TYPE_PREFIX, 9858) +HANDLE_BAT(APINT_TYPE_PREFIX, 9859) +HANDLE_BAT(APINT_TYPE_PREFIX, 9860) +HANDLE_BAT(APINT_TYPE_PREFIX, 9861) +HANDLE_BAT(APINT_TYPE_PREFIX, 9862) +HANDLE_BAT(APINT_TYPE_PREFIX, 9863) +HANDLE_BAT(APINT_TYPE_PREFIX, 9864) +HANDLE_BAT(APINT_TYPE_PREFIX, 9865) +HANDLE_BAT(APINT_TYPE_PREFIX, 9866) +HANDLE_BAT(APINT_TYPE_PREFIX, 9867) +HANDLE_BAT(APINT_TYPE_PREFIX, 9868) +HANDLE_BAT(APINT_TYPE_PREFIX, 9869) +HANDLE_BAT(APINT_TYPE_PREFIX, 9870) +HANDLE_BAT(APINT_TYPE_PREFIX, 9871) +HANDLE_BAT(APINT_TYPE_PREFIX, 9872) +HANDLE_BAT(APINT_TYPE_PREFIX, 9873) +HANDLE_BAT(APINT_TYPE_PREFIX, 9874) +HANDLE_BAT(APINT_TYPE_PREFIX, 9875) +HANDLE_BAT(APINT_TYPE_PREFIX, 9876) +HANDLE_BAT(APINT_TYPE_PREFIX, 9877) +HANDLE_BAT(APINT_TYPE_PREFIX, 9878) +HANDLE_BAT(APINT_TYPE_PREFIX, 9879) +HANDLE_BAT(APINT_TYPE_PREFIX, 9880) +HANDLE_BAT(APINT_TYPE_PREFIX, 9881) +HANDLE_BAT(APINT_TYPE_PREFIX, 9882) +HANDLE_BAT(APINT_TYPE_PREFIX, 9883) +HANDLE_BAT(APINT_TYPE_PREFIX, 9884) +HANDLE_BAT(APINT_TYPE_PREFIX, 9885) +HANDLE_BAT(APINT_TYPE_PREFIX, 9886) +HANDLE_BAT(APINT_TYPE_PREFIX, 9887) +HANDLE_BAT(APINT_TYPE_PREFIX, 9888) +HANDLE_BAT(APINT_TYPE_PREFIX, 9889) +HANDLE_BAT(APINT_TYPE_PREFIX, 9890) +HANDLE_BAT(APINT_TYPE_PREFIX, 9891) +HANDLE_BAT(APINT_TYPE_PREFIX, 9892) +HANDLE_BAT(APINT_TYPE_PREFIX, 9893) +HANDLE_BAT(APINT_TYPE_PREFIX, 9894) +HANDLE_BAT(APINT_TYPE_PREFIX, 9895) +HANDLE_BAT(APINT_TYPE_PREFIX, 9896) +HANDLE_BAT(APINT_TYPE_PREFIX, 9897) +HANDLE_BAT(APINT_TYPE_PREFIX, 9898) +HANDLE_BAT(APINT_TYPE_PREFIX, 9899) +HANDLE_BAT(APINT_TYPE_PREFIX, 9900) +HANDLE_BAT(APINT_TYPE_PREFIX, 9901) +HANDLE_BAT(APINT_TYPE_PREFIX, 9902) +HANDLE_BAT(APINT_TYPE_PREFIX, 9903) +HANDLE_BAT(APINT_TYPE_PREFIX, 9904) +HANDLE_BAT(APINT_TYPE_PREFIX, 9905) +HANDLE_BAT(APINT_TYPE_PREFIX, 9906) +HANDLE_BAT(APINT_TYPE_PREFIX, 9907) +HANDLE_BAT(APINT_TYPE_PREFIX, 9908) +HANDLE_BAT(APINT_TYPE_PREFIX, 9909) +HANDLE_BAT(APINT_TYPE_PREFIX, 9910) +HANDLE_BAT(APINT_TYPE_PREFIX, 9911) +HANDLE_BAT(APINT_TYPE_PREFIX, 9912) +HANDLE_BAT(APINT_TYPE_PREFIX, 9913) +HANDLE_BAT(APINT_TYPE_PREFIX, 9914) +HANDLE_BAT(APINT_TYPE_PREFIX, 9915) +HANDLE_BAT(APINT_TYPE_PREFIX, 9916) +HANDLE_BAT(APINT_TYPE_PREFIX, 9917) +HANDLE_BAT(APINT_TYPE_PREFIX, 9918) +HANDLE_BAT(APINT_TYPE_PREFIX, 9919) +HANDLE_BAT(APINT_TYPE_PREFIX, 9920) +HANDLE_BAT(APINT_TYPE_PREFIX, 9921) +HANDLE_BAT(APINT_TYPE_PREFIX, 9922) +HANDLE_BAT(APINT_TYPE_PREFIX, 9923) +HANDLE_BAT(APINT_TYPE_PREFIX, 9924) +HANDLE_BAT(APINT_TYPE_PREFIX, 9925) +HANDLE_BAT(APINT_TYPE_PREFIX, 9926) +HANDLE_BAT(APINT_TYPE_PREFIX, 9927) +HANDLE_BAT(APINT_TYPE_PREFIX, 9928) +HANDLE_BAT(APINT_TYPE_PREFIX, 9929) +HANDLE_BAT(APINT_TYPE_PREFIX, 9930) +HANDLE_BAT(APINT_TYPE_PREFIX, 9931) +HANDLE_BAT(APINT_TYPE_PREFIX, 9932) +HANDLE_BAT(APINT_TYPE_PREFIX, 9933) +HANDLE_BAT(APINT_TYPE_PREFIX, 9934) +HANDLE_BAT(APINT_TYPE_PREFIX, 9935) +HANDLE_BAT(APINT_TYPE_PREFIX, 9936) +HANDLE_BAT(APINT_TYPE_PREFIX, 9937) +HANDLE_BAT(APINT_TYPE_PREFIX, 9938) +HANDLE_BAT(APINT_TYPE_PREFIX, 9939) +HANDLE_BAT(APINT_TYPE_PREFIX, 9940) +HANDLE_BAT(APINT_TYPE_PREFIX, 9941) +HANDLE_BAT(APINT_TYPE_PREFIX, 9942) +HANDLE_BAT(APINT_TYPE_PREFIX, 9943) +HANDLE_BAT(APINT_TYPE_PREFIX, 9944) +HANDLE_BAT(APINT_TYPE_PREFIX, 9945) +HANDLE_BAT(APINT_TYPE_PREFIX, 9946) +HANDLE_BAT(APINT_TYPE_PREFIX, 9947) +HANDLE_BAT(APINT_TYPE_PREFIX, 9948) +HANDLE_BAT(APINT_TYPE_PREFIX, 9949) +HANDLE_BAT(APINT_TYPE_PREFIX, 9950) +HANDLE_BAT(APINT_TYPE_PREFIX, 9951) +HANDLE_BAT(APINT_TYPE_PREFIX, 9952) +HANDLE_BAT(APINT_TYPE_PREFIX, 9953) +HANDLE_BAT(APINT_TYPE_PREFIX, 9954) +HANDLE_BAT(APINT_TYPE_PREFIX, 9955) +HANDLE_BAT(APINT_TYPE_PREFIX, 9956) +HANDLE_BAT(APINT_TYPE_PREFIX, 9957) +HANDLE_BAT(APINT_TYPE_PREFIX, 9958) +HANDLE_BAT(APINT_TYPE_PREFIX, 9959) +HANDLE_BAT(APINT_TYPE_PREFIX, 9960) +HANDLE_BAT(APINT_TYPE_PREFIX, 9961) +HANDLE_BAT(APINT_TYPE_PREFIX, 9962) +HANDLE_BAT(APINT_TYPE_PREFIX, 9963) +HANDLE_BAT(APINT_TYPE_PREFIX, 9964) +HANDLE_BAT(APINT_TYPE_PREFIX, 9965) +HANDLE_BAT(APINT_TYPE_PREFIX, 9966) +HANDLE_BAT(APINT_TYPE_PREFIX, 9967) +HANDLE_BAT(APINT_TYPE_PREFIX, 9968) +HANDLE_BAT(APINT_TYPE_PREFIX, 9969) +HANDLE_BAT(APINT_TYPE_PREFIX, 9970) +HANDLE_BAT(APINT_TYPE_PREFIX, 9971) +HANDLE_BAT(APINT_TYPE_PREFIX, 9972) +HANDLE_BAT(APINT_TYPE_PREFIX, 9973) +HANDLE_BAT(APINT_TYPE_PREFIX, 9974) +HANDLE_BAT(APINT_TYPE_PREFIX, 9975) +HANDLE_BAT(APINT_TYPE_PREFIX, 9976) +HANDLE_BAT(APINT_TYPE_PREFIX, 9977) +HANDLE_BAT(APINT_TYPE_PREFIX, 9978) +HANDLE_BAT(APINT_TYPE_PREFIX, 9979) +HANDLE_BAT(APINT_TYPE_PREFIX, 9980) +HANDLE_BAT(APINT_TYPE_PREFIX, 9981) +HANDLE_BAT(APINT_TYPE_PREFIX, 9982) +HANDLE_BAT(APINT_TYPE_PREFIX, 9983) +HANDLE_BAT(APINT_TYPE_PREFIX, 9984) +HANDLE_BAT(APINT_TYPE_PREFIX, 9985) +HANDLE_BAT(APINT_TYPE_PREFIX, 9986) +HANDLE_BAT(APINT_TYPE_PREFIX, 9987) +HANDLE_BAT(APINT_TYPE_PREFIX, 9988) +HANDLE_BAT(APINT_TYPE_PREFIX, 9989) +HANDLE_BAT(APINT_TYPE_PREFIX, 9990) +HANDLE_BAT(APINT_TYPE_PREFIX, 9991) +HANDLE_BAT(APINT_TYPE_PREFIX, 9992) +HANDLE_BAT(APINT_TYPE_PREFIX, 9993) +HANDLE_BAT(APINT_TYPE_PREFIX, 9994) +HANDLE_BAT(APINT_TYPE_PREFIX, 9995) +HANDLE_BAT(APINT_TYPE_PREFIX, 9996) +HANDLE_BAT(APINT_TYPE_PREFIX, 9997) +HANDLE_BAT(APINT_TYPE_PREFIX, 9998) +HANDLE_BAT(APINT_TYPE_PREFIX, 9999) +HANDLE_BAT(APINT_TYPE_PREFIX, 10000) +HANDLE_BAT(APINT_TYPE_PREFIX, 10001) +HANDLE_BAT(APINT_TYPE_PREFIX, 10002) +HANDLE_BAT(APINT_TYPE_PREFIX, 10003) +HANDLE_BAT(APINT_TYPE_PREFIX, 10004) +HANDLE_BAT(APINT_TYPE_PREFIX, 10005) +HANDLE_BAT(APINT_TYPE_PREFIX, 10006) +HANDLE_BAT(APINT_TYPE_PREFIX, 10007) +HANDLE_BAT(APINT_TYPE_PREFIX, 10008) +HANDLE_BAT(APINT_TYPE_PREFIX, 10009) +HANDLE_BAT(APINT_TYPE_PREFIX, 10010) +HANDLE_BAT(APINT_TYPE_PREFIX, 10011) +HANDLE_BAT(APINT_TYPE_PREFIX, 10012) +HANDLE_BAT(APINT_TYPE_PREFIX, 10013) +HANDLE_BAT(APINT_TYPE_PREFIX, 10014) +HANDLE_BAT(APINT_TYPE_PREFIX, 10015) +HANDLE_BAT(APINT_TYPE_PREFIX, 10016) +HANDLE_BAT(APINT_TYPE_PREFIX, 10017) +HANDLE_BAT(APINT_TYPE_PREFIX, 10018) +HANDLE_BAT(APINT_TYPE_PREFIX, 10019) +HANDLE_BAT(APINT_TYPE_PREFIX, 10020) +HANDLE_BAT(APINT_TYPE_PREFIX, 10021) +HANDLE_BAT(APINT_TYPE_PREFIX, 10022) +HANDLE_BAT(APINT_TYPE_PREFIX, 10023) +HANDLE_BAT(APINT_TYPE_PREFIX, 10024) +HANDLE_BAT(APINT_TYPE_PREFIX, 10025) +HANDLE_BAT(APINT_TYPE_PREFIX, 10026) +HANDLE_BAT(APINT_TYPE_PREFIX, 10027) +HANDLE_BAT(APINT_TYPE_PREFIX, 10028) +HANDLE_BAT(APINT_TYPE_PREFIX, 10029) +HANDLE_BAT(APINT_TYPE_PREFIX, 10030) +HANDLE_BAT(APINT_TYPE_PREFIX, 10031) +HANDLE_BAT(APINT_TYPE_PREFIX, 10032) +HANDLE_BAT(APINT_TYPE_PREFIX, 10033) +HANDLE_BAT(APINT_TYPE_PREFIX, 10034) +HANDLE_BAT(APINT_TYPE_PREFIX, 10035) +HANDLE_BAT(APINT_TYPE_PREFIX, 10036) +HANDLE_BAT(APINT_TYPE_PREFIX, 10037) +HANDLE_BAT(APINT_TYPE_PREFIX, 10038) +HANDLE_BAT(APINT_TYPE_PREFIX, 10039) +HANDLE_BAT(APINT_TYPE_PREFIX, 10040) +HANDLE_BAT(APINT_TYPE_PREFIX, 10041) +HANDLE_BAT(APINT_TYPE_PREFIX, 10042) +HANDLE_BAT(APINT_TYPE_PREFIX, 10043) +HANDLE_BAT(APINT_TYPE_PREFIX, 10044) +HANDLE_BAT(APINT_TYPE_PREFIX, 10045) +HANDLE_BAT(APINT_TYPE_PREFIX, 10046) +HANDLE_BAT(APINT_TYPE_PREFIX, 10047) +HANDLE_BAT(APINT_TYPE_PREFIX, 10048) +HANDLE_BAT(APINT_TYPE_PREFIX, 10049) +HANDLE_BAT(APINT_TYPE_PREFIX, 10050) +HANDLE_BAT(APINT_TYPE_PREFIX, 10051) +HANDLE_BAT(APINT_TYPE_PREFIX, 10052) +HANDLE_BAT(APINT_TYPE_PREFIX, 10053) +HANDLE_BAT(APINT_TYPE_PREFIX, 10054) +HANDLE_BAT(APINT_TYPE_PREFIX, 10055) +HANDLE_BAT(APINT_TYPE_PREFIX, 10056) +HANDLE_BAT(APINT_TYPE_PREFIX, 10057) +HANDLE_BAT(APINT_TYPE_PREFIX, 10058) +HANDLE_BAT(APINT_TYPE_PREFIX, 10059) +HANDLE_BAT(APINT_TYPE_PREFIX, 10060) +HANDLE_BAT(APINT_TYPE_PREFIX, 10061) +HANDLE_BAT(APINT_TYPE_PREFIX, 10062) +HANDLE_BAT(APINT_TYPE_PREFIX, 10063) +HANDLE_BAT(APINT_TYPE_PREFIX, 10064) +HANDLE_BAT(APINT_TYPE_PREFIX, 10065) +HANDLE_BAT(APINT_TYPE_PREFIX, 10066) +HANDLE_BAT(APINT_TYPE_PREFIX, 10067) +HANDLE_BAT(APINT_TYPE_PREFIX, 10068) +HANDLE_BAT(APINT_TYPE_PREFIX, 10069) +HANDLE_BAT(APINT_TYPE_PREFIX, 10070) +HANDLE_BAT(APINT_TYPE_PREFIX, 10071) +HANDLE_BAT(APINT_TYPE_PREFIX, 10072) +HANDLE_BAT(APINT_TYPE_PREFIX, 10073) +HANDLE_BAT(APINT_TYPE_PREFIX, 10074) +HANDLE_BAT(APINT_TYPE_PREFIX, 10075) +HANDLE_BAT(APINT_TYPE_PREFIX, 10076) +HANDLE_BAT(APINT_TYPE_PREFIX, 10077) +HANDLE_BAT(APINT_TYPE_PREFIX, 10078) +HANDLE_BAT(APINT_TYPE_PREFIX, 10079) +HANDLE_BAT(APINT_TYPE_PREFIX, 10080) +HANDLE_BAT(APINT_TYPE_PREFIX, 10081) +HANDLE_BAT(APINT_TYPE_PREFIX, 10082) +HANDLE_BAT(APINT_TYPE_PREFIX, 10083) +HANDLE_BAT(APINT_TYPE_PREFIX, 10084) +HANDLE_BAT(APINT_TYPE_PREFIX, 10085) +HANDLE_BAT(APINT_TYPE_PREFIX, 10086) +HANDLE_BAT(APINT_TYPE_PREFIX, 10087) +HANDLE_BAT(APINT_TYPE_PREFIX, 10088) +HANDLE_BAT(APINT_TYPE_PREFIX, 10089) +HANDLE_BAT(APINT_TYPE_PREFIX, 10090) +HANDLE_BAT(APINT_TYPE_PREFIX, 10091) +HANDLE_BAT(APINT_TYPE_PREFIX, 10092) +HANDLE_BAT(APINT_TYPE_PREFIX, 10093) +HANDLE_BAT(APINT_TYPE_PREFIX, 10094) +HANDLE_BAT(APINT_TYPE_PREFIX, 10095) +HANDLE_BAT(APINT_TYPE_PREFIX, 10096) +HANDLE_BAT(APINT_TYPE_PREFIX, 10097) +HANDLE_BAT(APINT_TYPE_PREFIX, 10098) +HANDLE_BAT(APINT_TYPE_PREFIX, 10099) +HANDLE_BAT(APINT_TYPE_PREFIX, 10100) +HANDLE_BAT(APINT_TYPE_PREFIX, 10101) +HANDLE_BAT(APINT_TYPE_PREFIX, 10102) +HANDLE_BAT(APINT_TYPE_PREFIX, 10103) +HANDLE_BAT(APINT_TYPE_PREFIX, 10104) +HANDLE_BAT(APINT_TYPE_PREFIX, 10105) +HANDLE_BAT(APINT_TYPE_PREFIX, 10106) +HANDLE_BAT(APINT_TYPE_PREFIX, 10107) +HANDLE_BAT(APINT_TYPE_PREFIX, 10108) +HANDLE_BAT(APINT_TYPE_PREFIX, 10109) +HANDLE_BAT(APINT_TYPE_PREFIX, 10110) +HANDLE_BAT(APINT_TYPE_PREFIX, 10111) +HANDLE_BAT(APINT_TYPE_PREFIX, 10112) +HANDLE_BAT(APINT_TYPE_PREFIX, 10113) +HANDLE_BAT(APINT_TYPE_PREFIX, 10114) +HANDLE_BAT(APINT_TYPE_PREFIX, 10115) +HANDLE_BAT(APINT_TYPE_PREFIX, 10116) +HANDLE_BAT(APINT_TYPE_PREFIX, 10117) +HANDLE_BAT(APINT_TYPE_PREFIX, 10118) +HANDLE_BAT(APINT_TYPE_PREFIX, 10119) +HANDLE_BAT(APINT_TYPE_PREFIX, 10120) +HANDLE_BAT(APINT_TYPE_PREFIX, 10121) +HANDLE_BAT(APINT_TYPE_PREFIX, 10122) +HANDLE_BAT(APINT_TYPE_PREFIX, 10123) +HANDLE_BAT(APINT_TYPE_PREFIX, 10124) +HANDLE_BAT(APINT_TYPE_PREFIX, 10125) +HANDLE_BAT(APINT_TYPE_PREFIX, 10126) +HANDLE_BAT(APINT_TYPE_PREFIX, 10127) +HANDLE_BAT(APINT_TYPE_PREFIX, 10128) +HANDLE_BAT(APINT_TYPE_PREFIX, 10129) +HANDLE_BAT(APINT_TYPE_PREFIX, 10130) +HANDLE_BAT(APINT_TYPE_PREFIX, 10131) +HANDLE_BAT(APINT_TYPE_PREFIX, 10132) +HANDLE_BAT(APINT_TYPE_PREFIX, 10133) +HANDLE_BAT(APINT_TYPE_PREFIX, 10134) +HANDLE_BAT(APINT_TYPE_PREFIX, 10135) +HANDLE_BAT(APINT_TYPE_PREFIX, 10136) +HANDLE_BAT(APINT_TYPE_PREFIX, 10137) +HANDLE_BAT(APINT_TYPE_PREFIX, 10138) +HANDLE_BAT(APINT_TYPE_PREFIX, 10139) +HANDLE_BAT(APINT_TYPE_PREFIX, 10140) +HANDLE_BAT(APINT_TYPE_PREFIX, 10141) +HANDLE_BAT(APINT_TYPE_PREFIX, 10142) +HANDLE_BAT(APINT_TYPE_PREFIX, 10143) +HANDLE_BAT(APINT_TYPE_PREFIX, 10144) +HANDLE_BAT(APINT_TYPE_PREFIX, 10145) +HANDLE_BAT(APINT_TYPE_PREFIX, 10146) +HANDLE_BAT(APINT_TYPE_PREFIX, 10147) +HANDLE_BAT(APINT_TYPE_PREFIX, 10148) +HANDLE_BAT(APINT_TYPE_PREFIX, 10149) +HANDLE_BAT(APINT_TYPE_PREFIX, 10150) +HANDLE_BAT(APINT_TYPE_PREFIX, 10151) +HANDLE_BAT(APINT_TYPE_PREFIX, 10152) +HANDLE_BAT(APINT_TYPE_PREFIX, 10153) +HANDLE_BAT(APINT_TYPE_PREFIX, 10154) +HANDLE_BAT(APINT_TYPE_PREFIX, 10155) +HANDLE_BAT(APINT_TYPE_PREFIX, 10156) +HANDLE_BAT(APINT_TYPE_PREFIX, 10157) +HANDLE_BAT(APINT_TYPE_PREFIX, 10158) +HANDLE_BAT(APINT_TYPE_PREFIX, 10159) +HANDLE_BAT(APINT_TYPE_PREFIX, 10160) +HANDLE_BAT(APINT_TYPE_PREFIX, 10161) +HANDLE_BAT(APINT_TYPE_PREFIX, 10162) +HANDLE_BAT(APINT_TYPE_PREFIX, 10163) +HANDLE_BAT(APINT_TYPE_PREFIX, 10164) +HANDLE_BAT(APINT_TYPE_PREFIX, 10165) +HANDLE_BAT(APINT_TYPE_PREFIX, 10166) +HANDLE_BAT(APINT_TYPE_PREFIX, 10167) +HANDLE_BAT(APINT_TYPE_PREFIX, 10168) +HANDLE_BAT(APINT_TYPE_PREFIX, 10169) +HANDLE_BAT(APINT_TYPE_PREFIX, 10170) +HANDLE_BAT(APINT_TYPE_PREFIX, 10171) +HANDLE_BAT(APINT_TYPE_PREFIX, 10172) +HANDLE_BAT(APINT_TYPE_PREFIX, 10173) +HANDLE_BAT(APINT_TYPE_PREFIX, 10174) +HANDLE_BAT(APINT_TYPE_PREFIX, 10175) +HANDLE_BAT(APINT_TYPE_PREFIX, 10176) +HANDLE_BAT(APINT_TYPE_PREFIX, 10177) +HANDLE_BAT(APINT_TYPE_PREFIX, 10178) +HANDLE_BAT(APINT_TYPE_PREFIX, 10179) +HANDLE_BAT(APINT_TYPE_PREFIX, 10180) +HANDLE_BAT(APINT_TYPE_PREFIX, 10181) +HANDLE_BAT(APINT_TYPE_PREFIX, 10182) +HANDLE_BAT(APINT_TYPE_PREFIX, 10183) +HANDLE_BAT(APINT_TYPE_PREFIX, 10184) +HANDLE_BAT(APINT_TYPE_PREFIX, 10185) +HANDLE_BAT(APINT_TYPE_PREFIX, 10186) +HANDLE_BAT(APINT_TYPE_PREFIX, 10187) +HANDLE_BAT(APINT_TYPE_PREFIX, 10188) +HANDLE_BAT(APINT_TYPE_PREFIX, 10189) +HANDLE_BAT(APINT_TYPE_PREFIX, 10190) +HANDLE_BAT(APINT_TYPE_PREFIX, 10191) +HANDLE_BAT(APINT_TYPE_PREFIX, 10192) +HANDLE_BAT(APINT_TYPE_PREFIX, 10193) +HANDLE_BAT(APINT_TYPE_PREFIX, 10194) +HANDLE_BAT(APINT_TYPE_PREFIX, 10195) +HANDLE_BAT(APINT_TYPE_PREFIX, 10196) +HANDLE_BAT(APINT_TYPE_PREFIX, 10197) +HANDLE_BAT(APINT_TYPE_PREFIX, 10198) +HANDLE_BAT(APINT_TYPE_PREFIX, 10199) +HANDLE_BAT(APINT_TYPE_PREFIX, 10200) +HANDLE_BAT(APINT_TYPE_PREFIX, 10201) +HANDLE_BAT(APINT_TYPE_PREFIX, 10202) +HANDLE_BAT(APINT_TYPE_PREFIX, 10203) +HANDLE_BAT(APINT_TYPE_PREFIX, 10204) +HANDLE_BAT(APINT_TYPE_PREFIX, 10205) +HANDLE_BAT(APINT_TYPE_PREFIX, 10206) +HANDLE_BAT(APINT_TYPE_PREFIX, 10207) +HANDLE_BAT(APINT_TYPE_PREFIX, 10208) +HANDLE_BAT(APINT_TYPE_PREFIX, 10209) +HANDLE_BAT(APINT_TYPE_PREFIX, 10210) +HANDLE_BAT(APINT_TYPE_PREFIX, 10211) +HANDLE_BAT(APINT_TYPE_PREFIX, 10212) +HANDLE_BAT(APINT_TYPE_PREFIX, 10213) +HANDLE_BAT(APINT_TYPE_PREFIX, 10214) +HANDLE_BAT(APINT_TYPE_PREFIX, 10215) +HANDLE_BAT(APINT_TYPE_PREFIX, 10216) +HANDLE_BAT(APINT_TYPE_PREFIX, 10217) +HANDLE_BAT(APINT_TYPE_PREFIX, 10218) +HANDLE_BAT(APINT_TYPE_PREFIX, 10219) +HANDLE_BAT(APINT_TYPE_PREFIX, 10220) +HANDLE_BAT(APINT_TYPE_PREFIX, 10221) +HANDLE_BAT(APINT_TYPE_PREFIX, 10222) +HANDLE_BAT(APINT_TYPE_PREFIX, 10223) +HANDLE_BAT(APINT_TYPE_PREFIX, 10224) +HANDLE_BAT(APINT_TYPE_PREFIX, 10225) +HANDLE_BAT(APINT_TYPE_PREFIX, 10226) +HANDLE_BAT(APINT_TYPE_PREFIX, 10227) +HANDLE_BAT(APINT_TYPE_PREFIX, 10228) +HANDLE_BAT(APINT_TYPE_PREFIX, 10229) +HANDLE_BAT(APINT_TYPE_PREFIX, 10230) +HANDLE_BAT(APINT_TYPE_PREFIX, 10231) +HANDLE_BAT(APINT_TYPE_PREFIX, 10232) +HANDLE_BAT(APINT_TYPE_PREFIX, 10233) +HANDLE_BAT(APINT_TYPE_PREFIX, 10234) +HANDLE_BAT(APINT_TYPE_PREFIX, 10235) +HANDLE_BAT(APINT_TYPE_PREFIX, 10236) +HANDLE_BAT(APINT_TYPE_PREFIX, 10237) +HANDLE_BAT(APINT_TYPE_PREFIX, 10238) +HANDLE_BAT(APINT_TYPE_PREFIX, 10239) +HANDLE_BAT(APINT_TYPE_PREFIX, 10240) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 10 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 10241) +HANDLE_BAT(, 10242) +HANDLE_BAT(, 10243) +HANDLE_BAT(, 10244) +HANDLE_BAT(, 10245) +HANDLE_BAT(, 10246) +HANDLE_BAT(, 10247) +HANDLE_BAT(, 10248) +HANDLE_BAT(, 10249) +HANDLE_BAT(, 10250) +HANDLE_BAT(, 10251) +HANDLE_BAT(, 10252) +HANDLE_BAT(, 10253) +HANDLE_BAT(, 10254) +HANDLE_BAT(, 10255) +HANDLE_BAT(, 10256) +HANDLE_BAT(, 10257) +HANDLE_BAT(, 10258) +HANDLE_BAT(, 10259) +HANDLE_BAT(, 10260) +HANDLE_BAT(, 10261) +HANDLE_BAT(, 10262) +HANDLE_BAT(, 10263) +HANDLE_BAT(, 10264) +HANDLE_BAT(, 10265) +HANDLE_BAT(, 10266) +HANDLE_BAT(, 10267) +HANDLE_BAT(, 10268) +HANDLE_BAT(, 10269) +HANDLE_BAT(, 10270) +HANDLE_BAT(, 10271) +HANDLE_BAT(, 10272) +HANDLE_BAT(, 10273) +HANDLE_BAT(, 10274) +HANDLE_BAT(, 10275) +HANDLE_BAT(, 10276) +HANDLE_BAT(, 10277) +HANDLE_BAT(, 10278) +HANDLE_BAT(, 10279) +HANDLE_BAT(, 10280) +HANDLE_BAT(, 10281) +HANDLE_BAT(, 10282) +HANDLE_BAT(, 10283) +HANDLE_BAT(, 10284) +HANDLE_BAT(, 10285) +HANDLE_BAT(, 10286) +HANDLE_BAT(, 10287) +HANDLE_BAT(, 10288) +HANDLE_BAT(, 10289) +HANDLE_BAT(, 10290) +HANDLE_BAT(, 10291) +HANDLE_BAT(, 10292) +HANDLE_BAT(, 10293) +HANDLE_BAT(, 10294) +HANDLE_BAT(, 10295) +HANDLE_BAT(, 10296) +HANDLE_BAT(, 10297) +HANDLE_BAT(, 10298) +HANDLE_BAT(, 10299) +HANDLE_BAT(, 10300) +HANDLE_BAT(, 10301) +HANDLE_BAT(, 10302) +HANDLE_BAT(, 10303) +HANDLE_BAT(, 10304) +HANDLE_BAT(, 10305) +HANDLE_BAT(, 10306) +HANDLE_BAT(, 10307) +HANDLE_BAT(, 10308) +HANDLE_BAT(, 10309) +HANDLE_BAT(, 10310) +HANDLE_BAT(, 10311) +HANDLE_BAT(, 10312) +HANDLE_BAT(, 10313) +HANDLE_BAT(, 10314) +HANDLE_BAT(, 10315) +HANDLE_BAT(, 10316) +HANDLE_BAT(, 10317) +HANDLE_BAT(, 10318) +HANDLE_BAT(, 10319) +HANDLE_BAT(, 10320) +HANDLE_BAT(, 10321) +HANDLE_BAT(, 10322) +HANDLE_BAT(, 10323) +HANDLE_BAT(, 10324) +HANDLE_BAT(, 10325) +HANDLE_BAT(, 10326) +HANDLE_BAT(, 10327) +HANDLE_BAT(, 10328) +HANDLE_BAT(, 10329) +HANDLE_BAT(, 10330) +HANDLE_BAT(, 10331) +HANDLE_BAT(, 10332) +HANDLE_BAT(, 10333) +HANDLE_BAT(, 10334) +HANDLE_BAT(, 10335) +HANDLE_BAT(, 10336) +HANDLE_BAT(, 10337) +HANDLE_BAT(, 10338) +HANDLE_BAT(, 10339) +HANDLE_BAT(, 10340) +HANDLE_BAT(, 10341) +HANDLE_BAT(, 10342) +HANDLE_BAT(, 10343) +HANDLE_BAT(, 10344) +HANDLE_BAT(, 10345) +HANDLE_BAT(, 10346) +HANDLE_BAT(, 10347) +HANDLE_BAT(, 10348) +HANDLE_BAT(, 10349) +HANDLE_BAT(, 10350) +HANDLE_BAT(, 10351) +HANDLE_BAT(, 10352) +HANDLE_BAT(, 10353) +HANDLE_BAT(, 10354) +HANDLE_BAT(, 10355) +HANDLE_BAT(, 10356) +HANDLE_BAT(, 10357) +HANDLE_BAT(, 10358) +HANDLE_BAT(, 10359) +HANDLE_BAT(, 10360) +HANDLE_BAT(, 10361) +HANDLE_BAT(, 10362) +HANDLE_BAT(, 10363) +HANDLE_BAT(, 10364) +HANDLE_BAT(, 10365) +HANDLE_BAT(, 10366) +HANDLE_BAT(, 10367) +HANDLE_BAT(, 10368) +HANDLE_BAT(, 10369) +HANDLE_BAT(, 10370) +HANDLE_BAT(, 10371) +HANDLE_BAT(, 10372) +HANDLE_BAT(, 10373) +HANDLE_BAT(, 10374) +HANDLE_BAT(, 10375) +HANDLE_BAT(, 10376) +HANDLE_BAT(, 10377) +HANDLE_BAT(, 10378) +HANDLE_BAT(, 10379) +HANDLE_BAT(, 10380) +HANDLE_BAT(, 10381) +HANDLE_BAT(, 10382) +HANDLE_BAT(, 10383) +HANDLE_BAT(, 10384) +HANDLE_BAT(, 10385) +HANDLE_BAT(, 10386) +HANDLE_BAT(, 10387) +HANDLE_BAT(, 10388) +HANDLE_BAT(, 10389) +HANDLE_BAT(, 10390) +HANDLE_BAT(, 10391) +HANDLE_BAT(, 10392) +HANDLE_BAT(, 10393) +HANDLE_BAT(, 10394) +HANDLE_BAT(, 10395) +HANDLE_BAT(, 10396) +HANDLE_BAT(, 10397) +HANDLE_BAT(, 10398) +HANDLE_BAT(, 10399) +HANDLE_BAT(, 10400) +HANDLE_BAT(, 10401) +HANDLE_BAT(, 10402) +HANDLE_BAT(, 10403) +HANDLE_BAT(, 10404) +HANDLE_BAT(, 10405) +HANDLE_BAT(, 10406) +HANDLE_BAT(, 10407) +HANDLE_BAT(, 10408) +HANDLE_BAT(, 10409) +HANDLE_BAT(, 10410) +HANDLE_BAT(, 10411) +HANDLE_BAT(, 10412) +HANDLE_BAT(, 10413) +HANDLE_BAT(, 10414) +HANDLE_BAT(, 10415) +HANDLE_BAT(, 10416) +HANDLE_BAT(, 10417) +HANDLE_BAT(, 10418) +HANDLE_BAT(, 10419) +HANDLE_BAT(, 10420) +HANDLE_BAT(, 10421) +HANDLE_BAT(, 10422) +HANDLE_BAT(, 10423) +HANDLE_BAT(, 10424) +HANDLE_BAT(, 10425) +HANDLE_BAT(, 10426) +HANDLE_BAT(, 10427) +HANDLE_BAT(, 10428) +HANDLE_BAT(, 10429) +HANDLE_BAT(, 10430) +HANDLE_BAT(, 10431) +HANDLE_BAT(, 10432) +HANDLE_BAT(, 10433) +HANDLE_BAT(, 10434) +HANDLE_BAT(, 10435) +HANDLE_BAT(, 10436) +HANDLE_BAT(, 10437) +HANDLE_BAT(, 10438) +HANDLE_BAT(, 10439) +HANDLE_BAT(, 10440) +HANDLE_BAT(, 10441) +HANDLE_BAT(, 10442) +HANDLE_BAT(, 10443) +HANDLE_BAT(, 10444) +HANDLE_BAT(, 10445) +HANDLE_BAT(, 10446) +HANDLE_BAT(, 10447) +HANDLE_BAT(, 10448) +HANDLE_BAT(, 10449) +HANDLE_BAT(, 10450) +HANDLE_BAT(, 10451) +HANDLE_BAT(, 10452) +HANDLE_BAT(, 10453) +HANDLE_BAT(, 10454) +HANDLE_BAT(, 10455) +HANDLE_BAT(, 10456) +HANDLE_BAT(, 10457) +HANDLE_BAT(, 10458) +HANDLE_BAT(, 10459) +HANDLE_BAT(, 10460) +HANDLE_BAT(, 10461) +HANDLE_BAT(, 10462) +HANDLE_BAT(, 10463) +HANDLE_BAT(, 10464) +HANDLE_BAT(, 10465) +HANDLE_BAT(, 10466) +HANDLE_BAT(, 10467) +HANDLE_BAT(, 10468) +HANDLE_BAT(, 10469) +HANDLE_BAT(, 10470) +HANDLE_BAT(, 10471) +HANDLE_BAT(, 10472) +HANDLE_BAT(, 10473) +HANDLE_BAT(, 10474) +HANDLE_BAT(, 10475) +HANDLE_BAT(, 10476) +HANDLE_BAT(, 10477) +HANDLE_BAT(, 10478) +HANDLE_BAT(, 10479) +HANDLE_BAT(, 10480) +HANDLE_BAT(, 10481) +HANDLE_BAT(, 10482) +HANDLE_BAT(, 10483) +HANDLE_BAT(, 10484) +HANDLE_BAT(, 10485) +HANDLE_BAT(, 10486) +HANDLE_BAT(, 10487) +HANDLE_BAT(, 10488) +HANDLE_BAT(, 10489) +HANDLE_BAT(, 10490) +HANDLE_BAT(, 10491) +HANDLE_BAT(, 10492) +HANDLE_BAT(, 10493) +HANDLE_BAT(, 10494) +HANDLE_BAT(, 10495) +HANDLE_BAT(, 10496) +HANDLE_BAT(, 10497) +HANDLE_BAT(, 10498) +HANDLE_BAT(, 10499) +HANDLE_BAT(, 10500) +HANDLE_BAT(, 10501) +HANDLE_BAT(, 10502) +HANDLE_BAT(, 10503) +HANDLE_BAT(, 10504) +HANDLE_BAT(, 10505) +HANDLE_BAT(, 10506) +HANDLE_BAT(, 10507) +HANDLE_BAT(, 10508) +HANDLE_BAT(, 10509) +HANDLE_BAT(, 10510) +HANDLE_BAT(, 10511) +HANDLE_BAT(, 10512) +HANDLE_BAT(, 10513) +HANDLE_BAT(, 10514) +HANDLE_BAT(, 10515) +HANDLE_BAT(, 10516) +HANDLE_BAT(, 10517) +HANDLE_BAT(, 10518) +HANDLE_BAT(, 10519) +HANDLE_BAT(, 10520) +HANDLE_BAT(, 10521) +HANDLE_BAT(, 10522) +HANDLE_BAT(, 10523) +HANDLE_BAT(, 10524) +HANDLE_BAT(, 10525) +HANDLE_BAT(, 10526) +HANDLE_BAT(, 10527) +HANDLE_BAT(, 10528) +HANDLE_BAT(, 10529) +HANDLE_BAT(, 10530) +HANDLE_BAT(, 10531) +HANDLE_BAT(, 10532) +HANDLE_BAT(, 10533) +HANDLE_BAT(, 10534) +HANDLE_BAT(, 10535) +HANDLE_BAT(, 10536) +HANDLE_BAT(, 10537) +HANDLE_BAT(, 10538) +HANDLE_BAT(, 10539) +HANDLE_BAT(, 10540) +HANDLE_BAT(, 10541) +HANDLE_BAT(, 10542) +HANDLE_BAT(, 10543) +HANDLE_BAT(, 10544) +HANDLE_BAT(, 10545) +HANDLE_BAT(, 10546) +HANDLE_BAT(, 10547) +HANDLE_BAT(, 10548) +HANDLE_BAT(, 10549) +HANDLE_BAT(, 10550) +HANDLE_BAT(, 10551) +HANDLE_BAT(, 10552) +HANDLE_BAT(, 10553) +HANDLE_BAT(, 10554) +HANDLE_BAT(, 10555) +HANDLE_BAT(, 10556) +HANDLE_BAT(, 10557) +HANDLE_BAT(, 10558) +HANDLE_BAT(, 10559) +HANDLE_BAT(, 10560) +HANDLE_BAT(, 10561) +HANDLE_BAT(, 10562) +HANDLE_BAT(, 10563) +HANDLE_BAT(, 10564) +HANDLE_BAT(, 10565) +HANDLE_BAT(, 10566) +HANDLE_BAT(, 10567) +HANDLE_BAT(, 10568) +HANDLE_BAT(, 10569) +HANDLE_BAT(, 10570) +HANDLE_BAT(, 10571) +HANDLE_BAT(, 10572) +HANDLE_BAT(, 10573) +HANDLE_BAT(, 10574) +HANDLE_BAT(, 10575) +HANDLE_BAT(, 10576) +HANDLE_BAT(, 10577) +HANDLE_BAT(, 10578) +HANDLE_BAT(, 10579) +HANDLE_BAT(, 10580) +HANDLE_BAT(, 10581) +HANDLE_BAT(, 10582) +HANDLE_BAT(, 10583) +HANDLE_BAT(, 10584) +HANDLE_BAT(, 10585) +HANDLE_BAT(, 10586) +HANDLE_BAT(, 10587) +HANDLE_BAT(, 10588) +HANDLE_BAT(, 10589) +HANDLE_BAT(, 10590) +HANDLE_BAT(, 10591) +HANDLE_BAT(, 10592) +HANDLE_BAT(, 10593) +HANDLE_BAT(, 10594) +HANDLE_BAT(, 10595) +HANDLE_BAT(, 10596) +HANDLE_BAT(, 10597) +HANDLE_BAT(, 10598) +HANDLE_BAT(, 10599) +HANDLE_BAT(, 10600) +HANDLE_BAT(, 10601) +HANDLE_BAT(, 10602) +HANDLE_BAT(, 10603) +HANDLE_BAT(, 10604) +HANDLE_BAT(, 10605) +HANDLE_BAT(, 10606) +HANDLE_BAT(, 10607) +HANDLE_BAT(, 10608) +HANDLE_BAT(, 10609) +HANDLE_BAT(, 10610) +HANDLE_BAT(, 10611) +HANDLE_BAT(, 10612) +HANDLE_BAT(, 10613) +HANDLE_BAT(, 10614) +HANDLE_BAT(, 10615) +HANDLE_BAT(, 10616) +HANDLE_BAT(, 10617) +HANDLE_BAT(, 10618) +HANDLE_BAT(, 10619) +HANDLE_BAT(, 10620) +HANDLE_BAT(, 10621) +HANDLE_BAT(, 10622) +HANDLE_BAT(, 10623) +HANDLE_BAT(, 10624) +HANDLE_BAT(, 10625) +HANDLE_BAT(, 10626) +HANDLE_BAT(, 10627) +HANDLE_BAT(, 10628) +HANDLE_BAT(, 10629) +HANDLE_BAT(, 10630) +HANDLE_BAT(, 10631) +HANDLE_BAT(, 10632) +HANDLE_BAT(, 10633) +HANDLE_BAT(, 10634) +HANDLE_BAT(, 10635) +HANDLE_BAT(, 10636) +HANDLE_BAT(, 10637) +HANDLE_BAT(, 10638) +HANDLE_BAT(, 10639) +HANDLE_BAT(, 10640) +HANDLE_BAT(, 10641) +HANDLE_BAT(, 10642) +HANDLE_BAT(, 10643) +HANDLE_BAT(, 10644) +HANDLE_BAT(, 10645) +HANDLE_BAT(, 10646) +HANDLE_BAT(, 10647) +HANDLE_BAT(, 10648) +HANDLE_BAT(, 10649) +HANDLE_BAT(, 10650) +HANDLE_BAT(, 10651) +HANDLE_BAT(, 10652) +HANDLE_BAT(, 10653) +HANDLE_BAT(, 10654) +HANDLE_BAT(, 10655) +HANDLE_BAT(, 10656) +HANDLE_BAT(, 10657) +HANDLE_BAT(, 10658) +HANDLE_BAT(, 10659) +HANDLE_BAT(, 10660) +HANDLE_BAT(, 10661) +HANDLE_BAT(, 10662) +HANDLE_BAT(, 10663) +HANDLE_BAT(, 10664) +HANDLE_BAT(, 10665) +HANDLE_BAT(, 10666) +HANDLE_BAT(, 10667) +HANDLE_BAT(, 10668) +HANDLE_BAT(, 10669) +HANDLE_BAT(, 10670) +HANDLE_BAT(, 10671) +HANDLE_BAT(, 10672) +HANDLE_BAT(, 10673) +HANDLE_BAT(, 10674) +HANDLE_BAT(, 10675) +HANDLE_BAT(, 10676) +HANDLE_BAT(, 10677) +HANDLE_BAT(, 10678) +HANDLE_BAT(, 10679) +HANDLE_BAT(, 10680) +HANDLE_BAT(, 10681) +HANDLE_BAT(, 10682) +HANDLE_BAT(, 10683) +HANDLE_BAT(, 10684) +HANDLE_BAT(, 10685) +HANDLE_BAT(, 10686) +HANDLE_BAT(, 10687) +HANDLE_BAT(, 10688) +HANDLE_BAT(, 10689) +HANDLE_BAT(, 10690) +HANDLE_BAT(, 10691) +HANDLE_BAT(, 10692) +HANDLE_BAT(, 10693) +HANDLE_BAT(, 10694) +HANDLE_BAT(, 10695) +HANDLE_BAT(, 10696) +HANDLE_BAT(, 10697) +HANDLE_BAT(, 10698) +HANDLE_BAT(, 10699) +HANDLE_BAT(, 10700) +HANDLE_BAT(, 10701) +HANDLE_BAT(, 10702) +HANDLE_BAT(, 10703) +HANDLE_BAT(, 10704) +HANDLE_BAT(, 10705) +HANDLE_BAT(, 10706) +HANDLE_BAT(, 10707) +HANDLE_BAT(, 10708) +HANDLE_BAT(, 10709) +HANDLE_BAT(, 10710) +HANDLE_BAT(, 10711) +HANDLE_BAT(, 10712) +HANDLE_BAT(, 10713) +HANDLE_BAT(, 10714) +HANDLE_BAT(, 10715) +HANDLE_BAT(, 10716) +HANDLE_BAT(, 10717) +HANDLE_BAT(, 10718) +HANDLE_BAT(, 10719) +HANDLE_BAT(, 10720) +HANDLE_BAT(, 10721) +HANDLE_BAT(, 10722) +HANDLE_BAT(, 10723) +HANDLE_BAT(, 10724) +HANDLE_BAT(, 10725) +HANDLE_BAT(, 10726) +HANDLE_BAT(, 10727) +HANDLE_BAT(, 10728) +HANDLE_BAT(, 10729) +HANDLE_BAT(, 10730) +HANDLE_BAT(, 10731) +HANDLE_BAT(, 10732) +HANDLE_BAT(, 10733) +HANDLE_BAT(, 10734) +HANDLE_BAT(, 10735) +HANDLE_BAT(, 10736) +HANDLE_BAT(, 10737) +HANDLE_BAT(, 10738) +HANDLE_BAT(, 10739) +HANDLE_BAT(, 10740) +HANDLE_BAT(, 10741) +HANDLE_BAT(, 10742) +HANDLE_BAT(, 10743) +HANDLE_BAT(, 10744) +HANDLE_BAT(, 10745) +HANDLE_BAT(, 10746) +HANDLE_BAT(, 10747) +HANDLE_BAT(, 10748) +HANDLE_BAT(, 10749) +HANDLE_BAT(, 10750) +HANDLE_BAT(, 10751) +HANDLE_BAT(, 10752) +HANDLE_BAT(, 10753) +HANDLE_BAT(, 10754) +HANDLE_BAT(, 10755) +HANDLE_BAT(, 10756) +HANDLE_BAT(, 10757) +HANDLE_BAT(, 10758) +HANDLE_BAT(, 10759) +HANDLE_BAT(, 10760) +HANDLE_BAT(, 10761) +HANDLE_BAT(, 10762) +HANDLE_BAT(, 10763) +HANDLE_BAT(, 10764) +HANDLE_BAT(, 10765) +HANDLE_BAT(, 10766) +HANDLE_BAT(, 10767) +HANDLE_BAT(, 10768) +HANDLE_BAT(, 10769) +HANDLE_BAT(, 10770) +HANDLE_BAT(, 10771) +HANDLE_BAT(, 10772) +HANDLE_BAT(, 10773) +HANDLE_BAT(, 10774) +HANDLE_BAT(, 10775) +HANDLE_BAT(, 10776) +HANDLE_BAT(, 10777) +HANDLE_BAT(, 10778) +HANDLE_BAT(, 10779) +HANDLE_BAT(, 10780) +HANDLE_BAT(, 10781) +HANDLE_BAT(, 10782) +HANDLE_BAT(, 10783) +HANDLE_BAT(, 10784) +HANDLE_BAT(, 10785) +HANDLE_BAT(, 10786) +HANDLE_BAT(, 10787) +HANDLE_BAT(, 10788) +HANDLE_BAT(, 10789) +HANDLE_BAT(, 10790) +HANDLE_BAT(, 10791) +HANDLE_BAT(, 10792) +HANDLE_BAT(, 10793) +HANDLE_BAT(, 10794) +HANDLE_BAT(, 10795) +HANDLE_BAT(, 10796) +HANDLE_BAT(, 10797) +HANDLE_BAT(, 10798) +HANDLE_BAT(, 10799) +HANDLE_BAT(, 10800) +HANDLE_BAT(, 10801) +HANDLE_BAT(, 10802) +HANDLE_BAT(, 10803) +HANDLE_BAT(, 10804) +HANDLE_BAT(, 10805) +HANDLE_BAT(, 10806) +HANDLE_BAT(, 10807) +HANDLE_BAT(, 10808) +HANDLE_BAT(, 10809) +HANDLE_BAT(, 10810) +HANDLE_BAT(, 10811) +HANDLE_BAT(, 10812) +HANDLE_BAT(, 10813) +HANDLE_BAT(, 10814) +HANDLE_BAT(, 10815) +HANDLE_BAT(, 10816) +HANDLE_BAT(, 10817) +HANDLE_BAT(, 10818) +HANDLE_BAT(, 10819) +HANDLE_BAT(, 10820) +HANDLE_BAT(, 10821) +HANDLE_BAT(, 10822) +HANDLE_BAT(, 10823) +HANDLE_BAT(, 10824) +HANDLE_BAT(, 10825) +HANDLE_BAT(, 10826) +HANDLE_BAT(, 10827) +HANDLE_BAT(, 10828) +HANDLE_BAT(, 10829) +HANDLE_BAT(, 10830) +HANDLE_BAT(, 10831) +HANDLE_BAT(, 10832) +HANDLE_BAT(, 10833) +HANDLE_BAT(, 10834) +HANDLE_BAT(, 10835) +HANDLE_BAT(, 10836) +HANDLE_BAT(, 10837) +HANDLE_BAT(, 10838) +HANDLE_BAT(, 10839) +HANDLE_BAT(, 10840) +HANDLE_BAT(, 10841) +HANDLE_BAT(, 10842) +HANDLE_BAT(, 10843) +HANDLE_BAT(, 10844) +HANDLE_BAT(, 10845) +HANDLE_BAT(, 10846) +HANDLE_BAT(, 10847) +HANDLE_BAT(, 10848) +HANDLE_BAT(, 10849) +HANDLE_BAT(, 10850) +HANDLE_BAT(, 10851) +HANDLE_BAT(, 10852) +HANDLE_BAT(, 10853) +HANDLE_BAT(, 10854) +HANDLE_BAT(, 10855) +HANDLE_BAT(, 10856) +HANDLE_BAT(, 10857) +HANDLE_BAT(, 10858) +HANDLE_BAT(, 10859) +HANDLE_BAT(, 10860) +HANDLE_BAT(, 10861) +HANDLE_BAT(, 10862) +HANDLE_BAT(, 10863) +HANDLE_BAT(, 10864) +HANDLE_BAT(, 10865) +HANDLE_BAT(, 10866) +HANDLE_BAT(, 10867) +HANDLE_BAT(, 10868) +HANDLE_BAT(, 10869) +HANDLE_BAT(, 10870) +HANDLE_BAT(, 10871) +HANDLE_BAT(, 10872) +HANDLE_BAT(, 10873) +HANDLE_BAT(, 10874) +HANDLE_BAT(, 10875) +HANDLE_BAT(, 10876) +HANDLE_BAT(, 10877) +HANDLE_BAT(, 10878) +HANDLE_BAT(, 10879) +HANDLE_BAT(, 10880) +HANDLE_BAT(, 10881) +HANDLE_BAT(, 10882) +HANDLE_BAT(, 10883) +HANDLE_BAT(, 10884) +HANDLE_BAT(, 10885) +HANDLE_BAT(, 10886) +HANDLE_BAT(, 10887) +HANDLE_BAT(, 10888) +HANDLE_BAT(, 10889) +HANDLE_BAT(, 10890) +HANDLE_BAT(, 10891) +HANDLE_BAT(, 10892) +HANDLE_BAT(, 10893) +HANDLE_BAT(, 10894) +HANDLE_BAT(, 10895) +HANDLE_BAT(, 10896) +HANDLE_BAT(, 10897) +HANDLE_BAT(, 10898) +HANDLE_BAT(, 10899) +HANDLE_BAT(, 10900) +HANDLE_BAT(, 10901) +HANDLE_BAT(, 10902) +HANDLE_BAT(, 10903) +HANDLE_BAT(, 10904) +HANDLE_BAT(, 10905) +HANDLE_BAT(, 10906) +HANDLE_BAT(, 10907) +HANDLE_BAT(, 10908) +HANDLE_BAT(, 10909) +HANDLE_BAT(, 10910) +HANDLE_BAT(, 10911) +HANDLE_BAT(, 10912) +HANDLE_BAT(, 10913) +HANDLE_BAT(, 10914) +HANDLE_BAT(, 10915) +HANDLE_BAT(, 10916) +HANDLE_BAT(, 10917) +HANDLE_BAT(, 10918) +HANDLE_BAT(, 10919) +HANDLE_BAT(, 10920) +HANDLE_BAT(, 10921) +HANDLE_BAT(, 10922) +HANDLE_BAT(, 10923) +HANDLE_BAT(, 10924) +HANDLE_BAT(, 10925) +HANDLE_BAT(, 10926) +HANDLE_BAT(, 10927) +HANDLE_BAT(, 10928) +HANDLE_BAT(, 10929) +HANDLE_BAT(, 10930) +HANDLE_BAT(, 10931) +HANDLE_BAT(, 10932) +HANDLE_BAT(, 10933) +HANDLE_BAT(, 10934) +HANDLE_BAT(, 10935) +HANDLE_BAT(, 10936) +HANDLE_BAT(, 10937) +HANDLE_BAT(, 10938) +HANDLE_BAT(, 10939) +HANDLE_BAT(, 10940) +HANDLE_BAT(, 10941) +HANDLE_BAT(, 10942) +HANDLE_BAT(, 10943) +HANDLE_BAT(, 10944) +HANDLE_BAT(, 10945) +HANDLE_BAT(, 10946) +HANDLE_BAT(, 10947) +HANDLE_BAT(, 10948) +HANDLE_BAT(, 10949) +HANDLE_BAT(, 10950) +HANDLE_BAT(, 10951) +HANDLE_BAT(, 10952) +HANDLE_BAT(, 10953) +HANDLE_BAT(, 10954) +HANDLE_BAT(, 10955) +HANDLE_BAT(, 10956) +HANDLE_BAT(, 10957) +HANDLE_BAT(, 10958) +HANDLE_BAT(, 10959) +HANDLE_BAT(, 10960) +HANDLE_BAT(, 10961) +HANDLE_BAT(, 10962) +HANDLE_BAT(, 10963) +HANDLE_BAT(, 10964) +HANDLE_BAT(, 10965) +HANDLE_BAT(, 10966) +HANDLE_BAT(, 10967) +HANDLE_BAT(, 10968) +HANDLE_BAT(, 10969) +HANDLE_BAT(, 10970) +HANDLE_BAT(, 10971) +HANDLE_BAT(, 10972) +HANDLE_BAT(, 10973) +HANDLE_BAT(, 10974) +HANDLE_BAT(, 10975) +HANDLE_BAT(, 10976) +HANDLE_BAT(, 10977) +HANDLE_BAT(, 10978) +HANDLE_BAT(, 10979) +HANDLE_BAT(, 10980) +HANDLE_BAT(, 10981) +HANDLE_BAT(, 10982) +HANDLE_BAT(, 10983) +HANDLE_BAT(, 10984) +HANDLE_BAT(, 10985) +HANDLE_BAT(, 10986) +HANDLE_BAT(, 10987) +HANDLE_BAT(, 10988) +HANDLE_BAT(, 10989) +HANDLE_BAT(, 10990) +HANDLE_BAT(, 10991) +HANDLE_BAT(, 10992) +HANDLE_BAT(, 10993) +HANDLE_BAT(, 10994) +HANDLE_BAT(, 10995) +HANDLE_BAT(, 10996) +HANDLE_BAT(, 10997) +HANDLE_BAT(, 10998) +HANDLE_BAT(, 10999) +HANDLE_BAT(, 11000) +HANDLE_BAT(, 11001) +HANDLE_BAT(, 11002) +HANDLE_BAT(, 11003) +HANDLE_BAT(, 11004) +HANDLE_BAT(, 11005) +HANDLE_BAT(, 11006) +HANDLE_BAT(, 11007) +HANDLE_BAT(, 11008) +HANDLE_BAT(, 11009) +HANDLE_BAT(, 11010) +HANDLE_BAT(, 11011) +HANDLE_BAT(, 11012) +HANDLE_BAT(, 11013) +HANDLE_BAT(, 11014) +HANDLE_BAT(, 11015) +HANDLE_BAT(, 11016) +HANDLE_BAT(, 11017) +HANDLE_BAT(, 11018) +HANDLE_BAT(, 11019) +HANDLE_BAT(, 11020) +HANDLE_BAT(, 11021) +HANDLE_BAT(, 11022) +HANDLE_BAT(, 11023) +HANDLE_BAT(, 11024) +HANDLE_BAT(, 11025) +HANDLE_BAT(, 11026) +HANDLE_BAT(, 11027) +HANDLE_BAT(, 11028) +HANDLE_BAT(, 11029) +HANDLE_BAT(, 11030) +HANDLE_BAT(, 11031) +HANDLE_BAT(, 11032) +HANDLE_BAT(, 11033) +HANDLE_BAT(, 11034) +HANDLE_BAT(, 11035) +HANDLE_BAT(, 11036) +HANDLE_BAT(, 11037) +HANDLE_BAT(, 11038) +HANDLE_BAT(, 11039) +HANDLE_BAT(, 11040) +HANDLE_BAT(, 11041) +HANDLE_BAT(, 11042) +HANDLE_BAT(, 11043) +HANDLE_BAT(, 11044) +HANDLE_BAT(, 11045) +HANDLE_BAT(, 11046) +HANDLE_BAT(, 11047) +HANDLE_BAT(, 11048) +HANDLE_BAT(, 11049) +HANDLE_BAT(, 11050) +HANDLE_BAT(, 11051) +HANDLE_BAT(, 11052) +HANDLE_BAT(, 11053) +HANDLE_BAT(, 11054) +HANDLE_BAT(, 11055) +HANDLE_BAT(, 11056) +HANDLE_BAT(, 11057) +HANDLE_BAT(, 11058) +HANDLE_BAT(, 11059) +HANDLE_BAT(, 11060) +HANDLE_BAT(, 11061) +HANDLE_BAT(, 11062) +HANDLE_BAT(, 11063) +HANDLE_BAT(, 11064) +HANDLE_BAT(, 11065) +HANDLE_BAT(, 11066) +HANDLE_BAT(, 11067) +HANDLE_BAT(, 11068) +HANDLE_BAT(, 11069) +HANDLE_BAT(, 11070) +HANDLE_BAT(, 11071) +HANDLE_BAT(, 11072) +HANDLE_BAT(, 11073) +HANDLE_BAT(, 11074) +HANDLE_BAT(, 11075) +HANDLE_BAT(, 11076) +HANDLE_BAT(, 11077) +HANDLE_BAT(, 11078) +HANDLE_BAT(, 11079) +HANDLE_BAT(, 11080) +HANDLE_BAT(, 11081) +HANDLE_BAT(, 11082) +HANDLE_BAT(, 11083) +HANDLE_BAT(, 11084) +HANDLE_BAT(, 11085) +HANDLE_BAT(, 11086) +HANDLE_BAT(, 11087) +HANDLE_BAT(, 11088) +HANDLE_BAT(, 11089) +HANDLE_BAT(, 11090) +HANDLE_BAT(, 11091) +HANDLE_BAT(, 11092) +HANDLE_BAT(, 11093) +HANDLE_BAT(, 11094) +HANDLE_BAT(, 11095) +HANDLE_BAT(, 11096) +HANDLE_BAT(, 11097) +HANDLE_BAT(, 11098) +HANDLE_BAT(, 11099) +HANDLE_BAT(, 11100) +HANDLE_BAT(, 11101) +HANDLE_BAT(, 11102) +HANDLE_BAT(, 11103) +HANDLE_BAT(, 11104) +HANDLE_BAT(, 11105) +HANDLE_BAT(, 11106) +HANDLE_BAT(, 11107) +HANDLE_BAT(, 11108) +HANDLE_BAT(, 11109) +HANDLE_BAT(, 11110) +HANDLE_BAT(, 11111) +HANDLE_BAT(, 11112) +HANDLE_BAT(, 11113) +HANDLE_BAT(, 11114) +HANDLE_BAT(, 11115) +HANDLE_BAT(, 11116) +HANDLE_BAT(, 11117) +HANDLE_BAT(, 11118) +HANDLE_BAT(, 11119) +HANDLE_BAT(, 11120) +HANDLE_BAT(, 11121) +HANDLE_BAT(, 11122) +HANDLE_BAT(, 11123) +HANDLE_BAT(, 11124) +HANDLE_BAT(, 11125) +HANDLE_BAT(, 11126) +HANDLE_BAT(, 11127) +HANDLE_BAT(, 11128) +HANDLE_BAT(, 11129) +HANDLE_BAT(, 11130) +HANDLE_BAT(, 11131) +HANDLE_BAT(, 11132) +HANDLE_BAT(, 11133) +HANDLE_BAT(, 11134) +HANDLE_BAT(, 11135) +HANDLE_BAT(, 11136) +HANDLE_BAT(, 11137) +HANDLE_BAT(, 11138) +HANDLE_BAT(, 11139) +HANDLE_BAT(, 11140) +HANDLE_BAT(, 11141) +HANDLE_BAT(, 11142) +HANDLE_BAT(, 11143) +HANDLE_BAT(, 11144) +HANDLE_BAT(, 11145) +HANDLE_BAT(, 11146) +HANDLE_BAT(, 11147) +HANDLE_BAT(, 11148) +HANDLE_BAT(, 11149) +HANDLE_BAT(, 11150) +HANDLE_BAT(, 11151) +HANDLE_BAT(, 11152) +HANDLE_BAT(, 11153) +HANDLE_BAT(, 11154) +HANDLE_BAT(, 11155) +HANDLE_BAT(, 11156) +HANDLE_BAT(, 11157) +HANDLE_BAT(, 11158) +HANDLE_BAT(, 11159) +HANDLE_BAT(, 11160) +HANDLE_BAT(, 11161) +HANDLE_BAT(, 11162) +HANDLE_BAT(, 11163) +HANDLE_BAT(, 11164) +HANDLE_BAT(, 11165) +HANDLE_BAT(, 11166) +HANDLE_BAT(, 11167) +HANDLE_BAT(, 11168) +HANDLE_BAT(, 11169) +HANDLE_BAT(, 11170) +HANDLE_BAT(, 11171) +HANDLE_BAT(, 11172) +HANDLE_BAT(, 11173) +HANDLE_BAT(, 11174) +HANDLE_BAT(, 11175) +HANDLE_BAT(, 11176) +HANDLE_BAT(, 11177) +HANDLE_BAT(, 11178) +HANDLE_BAT(, 11179) +HANDLE_BAT(, 11180) +HANDLE_BAT(, 11181) +HANDLE_BAT(, 11182) +HANDLE_BAT(, 11183) +HANDLE_BAT(, 11184) +HANDLE_BAT(, 11185) +HANDLE_BAT(, 11186) +HANDLE_BAT(, 11187) +HANDLE_BAT(, 11188) +HANDLE_BAT(, 11189) +HANDLE_BAT(, 11190) +HANDLE_BAT(, 11191) +HANDLE_BAT(, 11192) +HANDLE_BAT(, 11193) +HANDLE_BAT(, 11194) +HANDLE_BAT(, 11195) +HANDLE_BAT(, 11196) +HANDLE_BAT(, 11197) +HANDLE_BAT(, 11198) +HANDLE_BAT(, 11199) +HANDLE_BAT(, 11200) +HANDLE_BAT(, 11201) +HANDLE_BAT(, 11202) +HANDLE_BAT(, 11203) +HANDLE_BAT(, 11204) +HANDLE_BAT(, 11205) +HANDLE_BAT(, 11206) +HANDLE_BAT(, 11207) +HANDLE_BAT(, 11208) +HANDLE_BAT(, 11209) +HANDLE_BAT(, 11210) +HANDLE_BAT(, 11211) +HANDLE_BAT(, 11212) +HANDLE_BAT(, 11213) +HANDLE_BAT(, 11214) +HANDLE_BAT(, 11215) +HANDLE_BAT(, 11216) +HANDLE_BAT(, 11217) +HANDLE_BAT(, 11218) +HANDLE_BAT(, 11219) +HANDLE_BAT(, 11220) +HANDLE_BAT(, 11221) +HANDLE_BAT(, 11222) +HANDLE_BAT(, 11223) +HANDLE_BAT(, 11224) +HANDLE_BAT(, 11225) +HANDLE_BAT(, 11226) +HANDLE_BAT(, 11227) +HANDLE_BAT(, 11228) +HANDLE_BAT(, 11229) +HANDLE_BAT(, 11230) +HANDLE_BAT(, 11231) +HANDLE_BAT(, 11232) +HANDLE_BAT(, 11233) +HANDLE_BAT(, 11234) +HANDLE_BAT(, 11235) +HANDLE_BAT(, 11236) +HANDLE_BAT(, 11237) +HANDLE_BAT(, 11238) +HANDLE_BAT(, 11239) +HANDLE_BAT(, 11240) +HANDLE_BAT(, 11241) +HANDLE_BAT(, 11242) +HANDLE_BAT(, 11243) +HANDLE_BAT(, 11244) +HANDLE_BAT(, 11245) +HANDLE_BAT(, 11246) +HANDLE_BAT(, 11247) +HANDLE_BAT(, 11248) +HANDLE_BAT(, 11249) +HANDLE_BAT(, 11250) +HANDLE_BAT(, 11251) +HANDLE_BAT(, 11252) +HANDLE_BAT(, 11253) +HANDLE_BAT(, 11254) +HANDLE_BAT(, 11255) +HANDLE_BAT(, 11256) +HANDLE_BAT(, 11257) +HANDLE_BAT(, 11258) +HANDLE_BAT(, 11259) +HANDLE_BAT(, 11260) +HANDLE_BAT(, 11261) +HANDLE_BAT(, 11262) +HANDLE_BAT(, 11263) +HANDLE_BAT(, 11264) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 10241) +HANDLE_BAT(APINT_TYPE_PREFIX, 10242) +HANDLE_BAT(APINT_TYPE_PREFIX, 10243) +HANDLE_BAT(APINT_TYPE_PREFIX, 10244) +HANDLE_BAT(APINT_TYPE_PREFIX, 10245) +HANDLE_BAT(APINT_TYPE_PREFIX, 10246) +HANDLE_BAT(APINT_TYPE_PREFIX, 10247) +HANDLE_BAT(APINT_TYPE_PREFIX, 10248) +HANDLE_BAT(APINT_TYPE_PREFIX, 10249) +HANDLE_BAT(APINT_TYPE_PREFIX, 10250) +HANDLE_BAT(APINT_TYPE_PREFIX, 10251) +HANDLE_BAT(APINT_TYPE_PREFIX, 10252) +HANDLE_BAT(APINT_TYPE_PREFIX, 10253) +HANDLE_BAT(APINT_TYPE_PREFIX, 10254) +HANDLE_BAT(APINT_TYPE_PREFIX, 10255) +HANDLE_BAT(APINT_TYPE_PREFIX, 10256) +HANDLE_BAT(APINT_TYPE_PREFIX, 10257) +HANDLE_BAT(APINT_TYPE_PREFIX, 10258) +HANDLE_BAT(APINT_TYPE_PREFIX, 10259) +HANDLE_BAT(APINT_TYPE_PREFIX, 10260) +HANDLE_BAT(APINT_TYPE_PREFIX, 10261) +HANDLE_BAT(APINT_TYPE_PREFIX, 10262) +HANDLE_BAT(APINT_TYPE_PREFIX, 10263) +HANDLE_BAT(APINT_TYPE_PREFIX, 10264) +HANDLE_BAT(APINT_TYPE_PREFIX, 10265) +HANDLE_BAT(APINT_TYPE_PREFIX, 10266) +HANDLE_BAT(APINT_TYPE_PREFIX, 10267) +HANDLE_BAT(APINT_TYPE_PREFIX, 10268) +HANDLE_BAT(APINT_TYPE_PREFIX, 10269) +HANDLE_BAT(APINT_TYPE_PREFIX, 10270) +HANDLE_BAT(APINT_TYPE_PREFIX, 10271) +HANDLE_BAT(APINT_TYPE_PREFIX, 10272) +HANDLE_BAT(APINT_TYPE_PREFIX, 10273) +HANDLE_BAT(APINT_TYPE_PREFIX, 10274) +HANDLE_BAT(APINT_TYPE_PREFIX, 10275) +HANDLE_BAT(APINT_TYPE_PREFIX, 10276) +HANDLE_BAT(APINT_TYPE_PREFIX, 10277) +HANDLE_BAT(APINT_TYPE_PREFIX, 10278) +HANDLE_BAT(APINT_TYPE_PREFIX, 10279) +HANDLE_BAT(APINT_TYPE_PREFIX, 10280) +HANDLE_BAT(APINT_TYPE_PREFIX, 10281) +HANDLE_BAT(APINT_TYPE_PREFIX, 10282) +HANDLE_BAT(APINT_TYPE_PREFIX, 10283) +HANDLE_BAT(APINT_TYPE_PREFIX, 10284) +HANDLE_BAT(APINT_TYPE_PREFIX, 10285) +HANDLE_BAT(APINT_TYPE_PREFIX, 10286) +HANDLE_BAT(APINT_TYPE_PREFIX, 10287) +HANDLE_BAT(APINT_TYPE_PREFIX, 10288) +HANDLE_BAT(APINT_TYPE_PREFIX, 10289) +HANDLE_BAT(APINT_TYPE_PREFIX, 10290) +HANDLE_BAT(APINT_TYPE_PREFIX, 10291) +HANDLE_BAT(APINT_TYPE_PREFIX, 10292) +HANDLE_BAT(APINT_TYPE_PREFIX, 10293) +HANDLE_BAT(APINT_TYPE_PREFIX, 10294) +HANDLE_BAT(APINT_TYPE_PREFIX, 10295) +HANDLE_BAT(APINT_TYPE_PREFIX, 10296) +HANDLE_BAT(APINT_TYPE_PREFIX, 10297) +HANDLE_BAT(APINT_TYPE_PREFIX, 10298) +HANDLE_BAT(APINT_TYPE_PREFIX, 10299) +HANDLE_BAT(APINT_TYPE_PREFIX, 10300) +HANDLE_BAT(APINT_TYPE_PREFIX, 10301) +HANDLE_BAT(APINT_TYPE_PREFIX, 10302) +HANDLE_BAT(APINT_TYPE_PREFIX, 10303) +HANDLE_BAT(APINT_TYPE_PREFIX, 10304) +HANDLE_BAT(APINT_TYPE_PREFIX, 10305) +HANDLE_BAT(APINT_TYPE_PREFIX, 10306) +HANDLE_BAT(APINT_TYPE_PREFIX, 10307) +HANDLE_BAT(APINT_TYPE_PREFIX, 10308) +HANDLE_BAT(APINT_TYPE_PREFIX, 10309) +HANDLE_BAT(APINT_TYPE_PREFIX, 10310) +HANDLE_BAT(APINT_TYPE_PREFIX, 10311) +HANDLE_BAT(APINT_TYPE_PREFIX, 10312) +HANDLE_BAT(APINT_TYPE_PREFIX, 10313) +HANDLE_BAT(APINT_TYPE_PREFIX, 10314) +HANDLE_BAT(APINT_TYPE_PREFIX, 10315) +HANDLE_BAT(APINT_TYPE_PREFIX, 10316) +HANDLE_BAT(APINT_TYPE_PREFIX, 10317) +HANDLE_BAT(APINT_TYPE_PREFIX, 10318) +HANDLE_BAT(APINT_TYPE_PREFIX, 10319) +HANDLE_BAT(APINT_TYPE_PREFIX, 10320) +HANDLE_BAT(APINT_TYPE_PREFIX, 10321) +HANDLE_BAT(APINT_TYPE_PREFIX, 10322) +HANDLE_BAT(APINT_TYPE_PREFIX, 10323) +HANDLE_BAT(APINT_TYPE_PREFIX, 10324) +HANDLE_BAT(APINT_TYPE_PREFIX, 10325) +HANDLE_BAT(APINT_TYPE_PREFIX, 10326) +HANDLE_BAT(APINT_TYPE_PREFIX, 10327) +HANDLE_BAT(APINT_TYPE_PREFIX, 10328) +HANDLE_BAT(APINT_TYPE_PREFIX, 10329) +HANDLE_BAT(APINT_TYPE_PREFIX, 10330) +HANDLE_BAT(APINT_TYPE_PREFIX, 10331) +HANDLE_BAT(APINT_TYPE_PREFIX, 10332) +HANDLE_BAT(APINT_TYPE_PREFIX, 10333) +HANDLE_BAT(APINT_TYPE_PREFIX, 10334) +HANDLE_BAT(APINT_TYPE_PREFIX, 10335) +HANDLE_BAT(APINT_TYPE_PREFIX, 10336) +HANDLE_BAT(APINT_TYPE_PREFIX, 10337) +HANDLE_BAT(APINT_TYPE_PREFIX, 10338) +HANDLE_BAT(APINT_TYPE_PREFIX, 10339) +HANDLE_BAT(APINT_TYPE_PREFIX, 10340) +HANDLE_BAT(APINT_TYPE_PREFIX, 10341) +HANDLE_BAT(APINT_TYPE_PREFIX, 10342) +HANDLE_BAT(APINT_TYPE_PREFIX, 10343) +HANDLE_BAT(APINT_TYPE_PREFIX, 10344) +HANDLE_BAT(APINT_TYPE_PREFIX, 10345) +HANDLE_BAT(APINT_TYPE_PREFIX, 10346) +HANDLE_BAT(APINT_TYPE_PREFIX, 10347) +HANDLE_BAT(APINT_TYPE_PREFIX, 10348) +HANDLE_BAT(APINT_TYPE_PREFIX, 10349) +HANDLE_BAT(APINT_TYPE_PREFIX, 10350) +HANDLE_BAT(APINT_TYPE_PREFIX, 10351) +HANDLE_BAT(APINT_TYPE_PREFIX, 10352) +HANDLE_BAT(APINT_TYPE_PREFIX, 10353) +HANDLE_BAT(APINT_TYPE_PREFIX, 10354) +HANDLE_BAT(APINT_TYPE_PREFIX, 10355) +HANDLE_BAT(APINT_TYPE_PREFIX, 10356) +HANDLE_BAT(APINT_TYPE_PREFIX, 10357) +HANDLE_BAT(APINT_TYPE_PREFIX, 10358) +HANDLE_BAT(APINT_TYPE_PREFIX, 10359) +HANDLE_BAT(APINT_TYPE_PREFIX, 10360) +HANDLE_BAT(APINT_TYPE_PREFIX, 10361) +HANDLE_BAT(APINT_TYPE_PREFIX, 10362) +HANDLE_BAT(APINT_TYPE_PREFIX, 10363) +HANDLE_BAT(APINT_TYPE_PREFIX, 10364) +HANDLE_BAT(APINT_TYPE_PREFIX, 10365) +HANDLE_BAT(APINT_TYPE_PREFIX, 10366) +HANDLE_BAT(APINT_TYPE_PREFIX, 10367) +HANDLE_BAT(APINT_TYPE_PREFIX, 10368) +HANDLE_BAT(APINT_TYPE_PREFIX, 10369) +HANDLE_BAT(APINT_TYPE_PREFIX, 10370) +HANDLE_BAT(APINT_TYPE_PREFIX, 10371) +HANDLE_BAT(APINT_TYPE_PREFIX, 10372) +HANDLE_BAT(APINT_TYPE_PREFIX, 10373) +HANDLE_BAT(APINT_TYPE_PREFIX, 10374) +HANDLE_BAT(APINT_TYPE_PREFIX, 10375) +HANDLE_BAT(APINT_TYPE_PREFIX, 10376) +HANDLE_BAT(APINT_TYPE_PREFIX, 10377) +HANDLE_BAT(APINT_TYPE_PREFIX, 10378) +HANDLE_BAT(APINT_TYPE_PREFIX, 10379) +HANDLE_BAT(APINT_TYPE_PREFIX, 10380) +HANDLE_BAT(APINT_TYPE_PREFIX, 10381) +HANDLE_BAT(APINT_TYPE_PREFIX, 10382) +HANDLE_BAT(APINT_TYPE_PREFIX, 10383) +HANDLE_BAT(APINT_TYPE_PREFIX, 10384) +HANDLE_BAT(APINT_TYPE_PREFIX, 10385) +HANDLE_BAT(APINT_TYPE_PREFIX, 10386) +HANDLE_BAT(APINT_TYPE_PREFIX, 10387) +HANDLE_BAT(APINT_TYPE_PREFIX, 10388) +HANDLE_BAT(APINT_TYPE_PREFIX, 10389) +HANDLE_BAT(APINT_TYPE_PREFIX, 10390) +HANDLE_BAT(APINT_TYPE_PREFIX, 10391) +HANDLE_BAT(APINT_TYPE_PREFIX, 10392) +HANDLE_BAT(APINT_TYPE_PREFIX, 10393) +HANDLE_BAT(APINT_TYPE_PREFIX, 10394) +HANDLE_BAT(APINT_TYPE_PREFIX, 10395) +HANDLE_BAT(APINT_TYPE_PREFIX, 10396) +HANDLE_BAT(APINT_TYPE_PREFIX, 10397) +HANDLE_BAT(APINT_TYPE_PREFIX, 10398) +HANDLE_BAT(APINT_TYPE_PREFIX, 10399) +HANDLE_BAT(APINT_TYPE_PREFIX, 10400) +HANDLE_BAT(APINT_TYPE_PREFIX, 10401) +HANDLE_BAT(APINT_TYPE_PREFIX, 10402) +HANDLE_BAT(APINT_TYPE_PREFIX, 10403) +HANDLE_BAT(APINT_TYPE_PREFIX, 10404) +HANDLE_BAT(APINT_TYPE_PREFIX, 10405) +HANDLE_BAT(APINT_TYPE_PREFIX, 10406) +HANDLE_BAT(APINT_TYPE_PREFIX, 10407) +HANDLE_BAT(APINT_TYPE_PREFIX, 10408) +HANDLE_BAT(APINT_TYPE_PREFIX, 10409) +HANDLE_BAT(APINT_TYPE_PREFIX, 10410) +HANDLE_BAT(APINT_TYPE_PREFIX, 10411) +HANDLE_BAT(APINT_TYPE_PREFIX, 10412) +HANDLE_BAT(APINT_TYPE_PREFIX, 10413) +HANDLE_BAT(APINT_TYPE_PREFIX, 10414) +HANDLE_BAT(APINT_TYPE_PREFIX, 10415) +HANDLE_BAT(APINT_TYPE_PREFIX, 10416) +HANDLE_BAT(APINT_TYPE_PREFIX, 10417) +HANDLE_BAT(APINT_TYPE_PREFIX, 10418) +HANDLE_BAT(APINT_TYPE_PREFIX, 10419) +HANDLE_BAT(APINT_TYPE_PREFIX, 10420) +HANDLE_BAT(APINT_TYPE_PREFIX, 10421) +HANDLE_BAT(APINT_TYPE_PREFIX, 10422) +HANDLE_BAT(APINT_TYPE_PREFIX, 10423) +HANDLE_BAT(APINT_TYPE_PREFIX, 10424) +HANDLE_BAT(APINT_TYPE_PREFIX, 10425) +HANDLE_BAT(APINT_TYPE_PREFIX, 10426) +HANDLE_BAT(APINT_TYPE_PREFIX, 10427) +HANDLE_BAT(APINT_TYPE_PREFIX, 10428) +HANDLE_BAT(APINT_TYPE_PREFIX, 10429) +HANDLE_BAT(APINT_TYPE_PREFIX, 10430) +HANDLE_BAT(APINT_TYPE_PREFIX, 10431) +HANDLE_BAT(APINT_TYPE_PREFIX, 10432) +HANDLE_BAT(APINT_TYPE_PREFIX, 10433) +HANDLE_BAT(APINT_TYPE_PREFIX, 10434) +HANDLE_BAT(APINT_TYPE_PREFIX, 10435) +HANDLE_BAT(APINT_TYPE_PREFIX, 10436) +HANDLE_BAT(APINT_TYPE_PREFIX, 10437) +HANDLE_BAT(APINT_TYPE_PREFIX, 10438) +HANDLE_BAT(APINT_TYPE_PREFIX, 10439) +HANDLE_BAT(APINT_TYPE_PREFIX, 10440) +HANDLE_BAT(APINT_TYPE_PREFIX, 10441) +HANDLE_BAT(APINT_TYPE_PREFIX, 10442) +HANDLE_BAT(APINT_TYPE_PREFIX, 10443) +HANDLE_BAT(APINT_TYPE_PREFIX, 10444) +HANDLE_BAT(APINT_TYPE_PREFIX, 10445) +HANDLE_BAT(APINT_TYPE_PREFIX, 10446) +HANDLE_BAT(APINT_TYPE_PREFIX, 10447) +HANDLE_BAT(APINT_TYPE_PREFIX, 10448) +HANDLE_BAT(APINT_TYPE_PREFIX, 10449) +HANDLE_BAT(APINT_TYPE_PREFIX, 10450) +HANDLE_BAT(APINT_TYPE_PREFIX, 10451) +HANDLE_BAT(APINT_TYPE_PREFIX, 10452) +HANDLE_BAT(APINT_TYPE_PREFIX, 10453) +HANDLE_BAT(APINT_TYPE_PREFIX, 10454) +HANDLE_BAT(APINT_TYPE_PREFIX, 10455) +HANDLE_BAT(APINT_TYPE_PREFIX, 10456) +HANDLE_BAT(APINT_TYPE_PREFIX, 10457) +HANDLE_BAT(APINT_TYPE_PREFIX, 10458) +HANDLE_BAT(APINT_TYPE_PREFIX, 10459) +HANDLE_BAT(APINT_TYPE_PREFIX, 10460) +HANDLE_BAT(APINT_TYPE_PREFIX, 10461) +HANDLE_BAT(APINT_TYPE_PREFIX, 10462) +HANDLE_BAT(APINT_TYPE_PREFIX, 10463) +HANDLE_BAT(APINT_TYPE_PREFIX, 10464) +HANDLE_BAT(APINT_TYPE_PREFIX, 10465) +HANDLE_BAT(APINT_TYPE_PREFIX, 10466) +HANDLE_BAT(APINT_TYPE_PREFIX, 10467) +HANDLE_BAT(APINT_TYPE_PREFIX, 10468) +HANDLE_BAT(APINT_TYPE_PREFIX, 10469) +HANDLE_BAT(APINT_TYPE_PREFIX, 10470) +HANDLE_BAT(APINT_TYPE_PREFIX, 10471) +HANDLE_BAT(APINT_TYPE_PREFIX, 10472) +HANDLE_BAT(APINT_TYPE_PREFIX, 10473) +HANDLE_BAT(APINT_TYPE_PREFIX, 10474) +HANDLE_BAT(APINT_TYPE_PREFIX, 10475) +HANDLE_BAT(APINT_TYPE_PREFIX, 10476) +HANDLE_BAT(APINT_TYPE_PREFIX, 10477) +HANDLE_BAT(APINT_TYPE_PREFIX, 10478) +HANDLE_BAT(APINT_TYPE_PREFIX, 10479) +HANDLE_BAT(APINT_TYPE_PREFIX, 10480) +HANDLE_BAT(APINT_TYPE_PREFIX, 10481) +HANDLE_BAT(APINT_TYPE_PREFIX, 10482) +HANDLE_BAT(APINT_TYPE_PREFIX, 10483) +HANDLE_BAT(APINT_TYPE_PREFIX, 10484) +HANDLE_BAT(APINT_TYPE_PREFIX, 10485) +HANDLE_BAT(APINT_TYPE_PREFIX, 10486) +HANDLE_BAT(APINT_TYPE_PREFIX, 10487) +HANDLE_BAT(APINT_TYPE_PREFIX, 10488) +HANDLE_BAT(APINT_TYPE_PREFIX, 10489) +HANDLE_BAT(APINT_TYPE_PREFIX, 10490) +HANDLE_BAT(APINT_TYPE_PREFIX, 10491) +HANDLE_BAT(APINT_TYPE_PREFIX, 10492) +HANDLE_BAT(APINT_TYPE_PREFIX, 10493) +HANDLE_BAT(APINT_TYPE_PREFIX, 10494) +HANDLE_BAT(APINT_TYPE_PREFIX, 10495) +HANDLE_BAT(APINT_TYPE_PREFIX, 10496) +HANDLE_BAT(APINT_TYPE_PREFIX, 10497) +HANDLE_BAT(APINT_TYPE_PREFIX, 10498) +HANDLE_BAT(APINT_TYPE_PREFIX, 10499) +HANDLE_BAT(APINT_TYPE_PREFIX, 10500) +HANDLE_BAT(APINT_TYPE_PREFIX, 10501) +HANDLE_BAT(APINT_TYPE_PREFIX, 10502) +HANDLE_BAT(APINT_TYPE_PREFIX, 10503) +HANDLE_BAT(APINT_TYPE_PREFIX, 10504) +HANDLE_BAT(APINT_TYPE_PREFIX, 10505) +HANDLE_BAT(APINT_TYPE_PREFIX, 10506) +HANDLE_BAT(APINT_TYPE_PREFIX, 10507) +HANDLE_BAT(APINT_TYPE_PREFIX, 10508) +HANDLE_BAT(APINT_TYPE_PREFIX, 10509) +HANDLE_BAT(APINT_TYPE_PREFIX, 10510) +HANDLE_BAT(APINT_TYPE_PREFIX, 10511) +HANDLE_BAT(APINT_TYPE_PREFIX, 10512) +HANDLE_BAT(APINT_TYPE_PREFIX, 10513) +HANDLE_BAT(APINT_TYPE_PREFIX, 10514) +HANDLE_BAT(APINT_TYPE_PREFIX, 10515) +HANDLE_BAT(APINT_TYPE_PREFIX, 10516) +HANDLE_BAT(APINT_TYPE_PREFIX, 10517) +HANDLE_BAT(APINT_TYPE_PREFIX, 10518) +HANDLE_BAT(APINT_TYPE_PREFIX, 10519) +HANDLE_BAT(APINT_TYPE_PREFIX, 10520) +HANDLE_BAT(APINT_TYPE_PREFIX, 10521) +HANDLE_BAT(APINT_TYPE_PREFIX, 10522) +HANDLE_BAT(APINT_TYPE_PREFIX, 10523) +HANDLE_BAT(APINT_TYPE_PREFIX, 10524) +HANDLE_BAT(APINT_TYPE_PREFIX, 10525) +HANDLE_BAT(APINT_TYPE_PREFIX, 10526) +HANDLE_BAT(APINT_TYPE_PREFIX, 10527) +HANDLE_BAT(APINT_TYPE_PREFIX, 10528) +HANDLE_BAT(APINT_TYPE_PREFIX, 10529) +HANDLE_BAT(APINT_TYPE_PREFIX, 10530) +HANDLE_BAT(APINT_TYPE_PREFIX, 10531) +HANDLE_BAT(APINT_TYPE_PREFIX, 10532) +HANDLE_BAT(APINT_TYPE_PREFIX, 10533) +HANDLE_BAT(APINT_TYPE_PREFIX, 10534) +HANDLE_BAT(APINT_TYPE_PREFIX, 10535) +HANDLE_BAT(APINT_TYPE_PREFIX, 10536) +HANDLE_BAT(APINT_TYPE_PREFIX, 10537) +HANDLE_BAT(APINT_TYPE_PREFIX, 10538) +HANDLE_BAT(APINT_TYPE_PREFIX, 10539) +HANDLE_BAT(APINT_TYPE_PREFIX, 10540) +HANDLE_BAT(APINT_TYPE_PREFIX, 10541) +HANDLE_BAT(APINT_TYPE_PREFIX, 10542) +HANDLE_BAT(APINT_TYPE_PREFIX, 10543) +HANDLE_BAT(APINT_TYPE_PREFIX, 10544) +HANDLE_BAT(APINT_TYPE_PREFIX, 10545) +HANDLE_BAT(APINT_TYPE_PREFIX, 10546) +HANDLE_BAT(APINT_TYPE_PREFIX, 10547) +HANDLE_BAT(APINT_TYPE_PREFIX, 10548) +HANDLE_BAT(APINT_TYPE_PREFIX, 10549) +HANDLE_BAT(APINT_TYPE_PREFIX, 10550) +HANDLE_BAT(APINT_TYPE_PREFIX, 10551) +HANDLE_BAT(APINT_TYPE_PREFIX, 10552) +HANDLE_BAT(APINT_TYPE_PREFIX, 10553) +HANDLE_BAT(APINT_TYPE_PREFIX, 10554) +HANDLE_BAT(APINT_TYPE_PREFIX, 10555) +HANDLE_BAT(APINT_TYPE_PREFIX, 10556) +HANDLE_BAT(APINT_TYPE_PREFIX, 10557) +HANDLE_BAT(APINT_TYPE_PREFIX, 10558) +HANDLE_BAT(APINT_TYPE_PREFIX, 10559) +HANDLE_BAT(APINT_TYPE_PREFIX, 10560) +HANDLE_BAT(APINT_TYPE_PREFIX, 10561) +HANDLE_BAT(APINT_TYPE_PREFIX, 10562) +HANDLE_BAT(APINT_TYPE_PREFIX, 10563) +HANDLE_BAT(APINT_TYPE_PREFIX, 10564) +HANDLE_BAT(APINT_TYPE_PREFIX, 10565) +HANDLE_BAT(APINT_TYPE_PREFIX, 10566) +HANDLE_BAT(APINT_TYPE_PREFIX, 10567) +HANDLE_BAT(APINT_TYPE_PREFIX, 10568) +HANDLE_BAT(APINT_TYPE_PREFIX, 10569) +HANDLE_BAT(APINT_TYPE_PREFIX, 10570) +HANDLE_BAT(APINT_TYPE_PREFIX, 10571) +HANDLE_BAT(APINT_TYPE_PREFIX, 10572) +HANDLE_BAT(APINT_TYPE_PREFIX, 10573) +HANDLE_BAT(APINT_TYPE_PREFIX, 10574) +HANDLE_BAT(APINT_TYPE_PREFIX, 10575) +HANDLE_BAT(APINT_TYPE_PREFIX, 10576) +HANDLE_BAT(APINT_TYPE_PREFIX, 10577) +HANDLE_BAT(APINT_TYPE_PREFIX, 10578) +HANDLE_BAT(APINT_TYPE_PREFIX, 10579) +HANDLE_BAT(APINT_TYPE_PREFIX, 10580) +HANDLE_BAT(APINT_TYPE_PREFIX, 10581) +HANDLE_BAT(APINT_TYPE_PREFIX, 10582) +HANDLE_BAT(APINT_TYPE_PREFIX, 10583) +HANDLE_BAT(APINT_TYPE_PREFIX, 10584) +HANDLE_BAT(APINT_TYPE_PREFIX, 10585) +HANDLE_BAT(APINT_TYPE_PREFIX, 10586) +HANDLE_BAT(APINT_TYPE_PREFIX, 10587) +HANDLE_BAT(APINT_TYPE_PREFIX, 10588) +HANDLE_BAT(APINT_TYPE_PREFIX, 10589) +HANDLE_BAT(APINT_TYPE_PREFIX, 10590) +HANDLE_BAT(APINT_TYPE_PREFIX, 10591) +HANDLE_BAT(APINT_TYPE_PREFIX, 10592) +HANDLE_BAT(APINT_TYPE_PREFIX, 10593) +HANDLE_BAT(APINT_TYPE_PREFIX, 10594) +HANDLE_BAT(APINT_TYPE_PREFIX, 10595) +HANDLE_BAT(APINT_TYPE_PREFIX, 10596) +HANDLE_BAT(APINT_TYPE_PREFIX, 10597) +HANDLE_BAT(APINT_TYPE_PREFIX, 10598) +HANDLE_BAT(APINT_TYPE_PREFIX, 10599) +HANDLE_BAT(APINT_TYPE_PREFIX, 10600) +HANDLE_BAT(APINT_TYPE_PREFIX, 10601) +HANDLE_BAT(APINT_TYPE_PREFIX, 10602) +HANDLE_BAT(APINT_TYPE_PREFIX, 10603) +HANDLE_BAT(APINT_TYPE_PREFIX, 10604) +HANDLE_BAT(APINT_TYPE_PREFIX, 10605) +HANDLE_BAT(APINT_TYPE_PREFIX, 10606) +HANDLE_BAT(APINT_TYPE_PREFIX, 10607) +HANDLE_BAT(APINT_TYPE_PREFIX, 10608) +HANDLE_BAT(APINT_TYPE_PREFIX, 10609) +HANDLE_BAT(APINT_TYPE_PREFIX, 10610) +HANDLE_BAT(APINT_TYPE_PREFIX, 10611) +HANDLE_BAT(APINT_TYPE_PREFIX, 10612) +HANDLE_BAT(APINT_TYPE_PREFIX, 10613) +HANDLE_BAT(APINT_TYPE_PREFIX, 10614) +HANDLE_BAT(APINT_TYPE_PREFIX, 10615) +HANDLE_BAT(APINT_TYPE_PREFIX, 10616) +HANDLE_BAT(APINT_TYPE_PREFIX, 10617) +HANDLE_BAT(APINT_TYPE_PREFIX, 10618) +HANDLE_BAT(APINT_TYPE_PREFIX, 10619) +HANDLE_BAT(APINT_TYPE_PREFIX, 10620) +HANDLE_BAT(APINT_TYPE_PREFIX, 10621) +HANDLE_BAT(APINT_TYPE_PREFIX, 10622) +HANDLE_BAT(APINT_TYPE_PREFIX, 10623) +HANDLE_BAT(APINT_TYPE_PREFIX, 10624) +HANDLE_BAT(APINT_TYPE_PREFIX, 10625) +HANDLE_BAT(APINT_TYPE_PREFIX, 10626) +HANDLE_BAT(APINT_TYPE_PREFIX, 10627) +HANDLE_BAT(APINT_TYPE_PREFIX, 10628) +HANDLE_BAT(APINT_TYPE_PREFIX, 10629) +HANDLE_BAT(APINT_TYPE_PREFIX, 10630) +HANDLE_BAT(APINT_TYPE_PREFIX, 10631) +HANDLE_BAT(APINT_TYPE_PREFIX, 10632) +HANDLE_BAT(APINT_TYPE_PREFIX, 10633) +HANDLE_BAT(APINT_TYPE_PREFIX, 10634) +HANDLE_BAT(APINT_TYPE_PREFIX, 10635) +HANDLE_BAT(APINT_TYPE_PREFIX, 10636) +HANDLE_BAT(APINT_TYPE_PREFIX, 10637) +HANDLE_BAT(APINT_TYPE_PREFIX, 10638) +HANDLE_BAT(APINT_TYPE_PREFIX, 10639) +HANDLE_BAT(APINT_TYPE_PREFIX, 10640) +HANDLE_BAT(APINT_TYPE_PREFIX, 10641) +HANDLE_BAT(APINT_TYPE_PREFIX, 10642) +HANDLE_BAT(APINT_TYPE_PREFIX, 10643) +HANDLE_BAT(APINT_TYPE_PREFIX, 10644) +HANDLE_BAT(APINT_TYPE_PREFIX, 10645) +HANDLE_BAT(APINT_TYPE_PREFIX, 10646) +HANDLE_BAT(APINT_TYPE_PREFIX, 10647) +HANDLE_BAT(APINT_TYPE_PREFIX, 10648) +HANDLE_BAT(APINT_TYPE_PREFIX, 10649) +HANDLE_BAT(APINT_TYPE_PREFIX, 10650) +HANDLE_BAT(APINT_TYPE_PREFIX, 10651) +HANDLE_BAT(APINT_TYPE_PREFIX, 10652) +HANDLE_BAT(APINT_TYPE_PREFIX, 10653) +HANDLE_BAT(APINT_TYPE_PREFIX, 10654) +HANDLE_BAT(APINT_TYPE_PREFIX, 10655) +HANDLE_BAT(APINT_TYPE_PREFIX, 10656) +HANDLE_BAT(APINT_TYPE_PREFIX, 10657) +HANDLE_BAT(APINT_TYPE_PREFIX, 10658) +HANDLE_BAT(APINT_TYPE_PREFIX, 10659) +HANDLE_BAT(APINT_TYPE_PREFIX, 10660) +HANDLE_BAT(APINT_TYPE_PREFIX, 10661) +HANDLE_BAT(APINT_TYPE_PREFIX, 10662) +HANDLE_BAT(APINT_TYPE_PREFIX, 10663) +HANDLE_BAT(APINT_TYPE_PREFIX, 10664) +HANDLE_BAT(APINT_TYPE_PREFIX, 10665) +HANDLE_BAT(APINT_TYPE_PREFIX, 10666) +HANDLE_BAT(APINT_TYPE_PREFIX, 10667) +HANDLE_BAT(APINT_TYPE_PREFIX, 10668) +HANDLE_BAT(APINT_TYPE_PREFIX, 10669) +HANDLE_BAT(APINT_TYPE_PREFIX, 10670) +HANDLE_BAT(APINT_TYPE_PREFIX, 10671) +HANDLE_BAT(APINT_TYPE_PREFIX, 10672) +HANDLE_BAT(APINT_TYPE_PREFIX, 10673) +HANDLE_BAT(APINT_TYPE_PREFIX, 10674) +HANDLE_BAT(APINT_TYPE_PREFIX, 10675) +HANDLE_BAT(APINT_TYPE_PREFIX, 10676) +HANDLE_BAT(APINT_TYPE_PREFIX, 10677) +HANDLE_BAT(APINT_TYPE_PREFIX, 10678) +HANDLE_BAT(APINT_TYPE_PREFIX, 10679) +HANDLE_BAT(APINT_TYPE_PREFIX, 10680) +HANDLE_BAT(APINT_TYPE_PREFIX, 10681) +HANDLE_BAT(APINT_TYPE_PREFIX, 10682) +HANDLE_BAT(APINT_TYPE_PREFIX, 10683) +HANDLE_BAT(APINT_TYPE_PREFIX, 10684) +HANDLE_BAT(APINT_TYPE_PREFIX, 10685) +HANDLE_BAT(APINT_TYPE_PREFIX, 10686) +HANDLE_BAT(APINT_TYPE_PREFIX, 10687) +HANDLE_BAT(APINT_TYPE_PREFIX, 10688) +HANDLE_BAT(APINT_TYPE_PREFIX, 10689) +HANDLE_BAT(APINT_TYPE_PREFIX, 10690) +HANDLE_BAT(APINT_TYPE_PREFIX, 10691) +HANDLE_BAT(APINT_TYPE_PREFIX, 10692) +HANDLE_BAT(APINT_TYPE_PREFIX, 10693) +HANDLE_BAT(APINT_TYPE_PREFIX, 10694) +HANDLE_BAT(APINT_TYPE_PREFIX, 10695) +HANDLE_BAT(APINT_TYPE_PREFIX, 10696) +HANDLE_BAT(APINT_TYPE_PREFIX, 10697) +HANDLE_BAT(APINT_TYPE_PREFIX, 10698) +HANDLE_BAT(APINT_TYPE_PREFIX, 10699) +HANDLE_BAT(APINT_TYPE_PREFIX, 10700) +HANDLE_BAT(APINT_TYPE_PREFIX, 10701) +HANDLE_BAT(APINT_TYPE_PREFIX, 10702) +HANDLE_BAT(APINT_TYPE_PREFIX, 10703) +HANDLE_BAT(APINT_TYPE_PREFIX, 10704) +HANDLE_BAT(APINT_TYPE_PREFIX, 10705) +HANDLE_BAT(APINT_TYPE_PREFIX, 10706) +HANDLE_BAT(APINT_TYPE_PREFIX, 10707) +HANDLE_BAT(APINT_TYPE_PREFIX, 10708) +HANDLE_BAT(APINT_TYPE_PREFIX, 10709) +HANDLE_BAT(APINT_TYPE_PREFIX, 10710) +HANDLE_BAT(APINT_TYPE_PREFIX, 10711) +HANDLE_BAT(APINT_TYPE_PREFIX, 10712) +HANDLE_BAT(APINT_TYPE_PREFIX, 10713) +HANDLE_BAT(APINT_TYPE_PREFIX, 10714) +HANDLE_BAT(APINT_TYPE_PREFIX, 10715) +HANDLE_BAT(APINT_TYPE_PREFIX, 10716) +HANDLE_BAT(APINT_TYPE_PREFIX, 10717) +HANDLE_BAT(APINT_TYPE_PREFIX, 10718) +HANDLE_BAT(APINT_TYPE_PREFIX, 10719) +HANDLE_BAT(APINT_TYPE_PREFIX, 10720) +HANDLE_BAT(APINT_TYPE_PREFIX, 10721) +HANDLE_BAT(APINT_TYPE_PREFIX, 10722) +HANDLE_BAT(APINT_TYPE_PREFIX, 10723) +HANDLE_BAT(APINT_TYPE_PREFIX, 10724) +HANDLE_BAT(APINT_TYPE_PREFIX, 10725) +HANDLE_BAT(APINT_TYPE_PREFIX, 10726) +HANDLE_BAT(APINT_TYPE_PREFIX, 10727) +HANDLE_BAT(APINT_TYPE_PREFIX, 10728) +HANDLE_BAT(APINT_TYPE_PREFIX, 10729) +HANDLE_BAT(APINT_TYPE_PREFIX, 10730) +HANDLE_BAT(APINT_TYPE_PREFIX, 10731) +HANDLE_BAT(APINT_TYPE_PREFIX, 10732) +HANDLE_BAT(APINT_TYPE_PREFIX, 10733) +HANDLE_BAT(APINT_TYPE_PREFIX, 10734) +HANDLE_BAT(APINT_TYPE_PREFIX, 10735) +HANDLE_BAT(APINT_TYPE_PREFIX, 10736) +HANDLE_BAT(APINT_TYPE_PREFIX, 10737) +HANDLE_BAT(APINT_TYPE_PREFIX, 10738) +HANDLE_BAT(APINT_TYPE_PREFIX, 10739) +HANDLE_BAT(APINT_TYPE_PREFIX, 10740) +HANDLE_BAT(APINT_TYPE_PREFIX, 10741) +HANDLE_BAT(APINT_TYPE_PREFIX, 10742) +HANDLE_BAT(APINT_TYPE_PREFIX, 10743) +HANDLE_BAT(APINT_TYPE_PREFIX, 10744) +HANDLE_BAT(APINT_TYPE_PREFIX, 10745) +HANDLE_BAT(APINT_TYPE_PREFIX, 10746) +HANDLE_BAT(APINT_TYPE_PREFIX, 10747) +HANDLE_BAT(APINT_TYPE_PREFIX, 10748) +HANDLE_BAT(APINT_TYPE_PREFIX, 10749) +HANDLE_BAT(APINT_TYPE_PREFIX, 10750) +HANDLE_BAT(APINT_TYPE_PREFIX, 10751) +HANDLE_BAT(APINT_TYPE_PREFIX, 10752) +HANDLE_BAT(APINT_TYPE_PREFIX, 10753) +HANDLE_BAT(APINT_TYPE_PREFIX, 10754) +HANDLE_BAT(APINT_TYPE_PREFIX, 10755) +HANDLE_BAT(APINT_TYPE_PREFIX, 10756) +HANDLE_BAT(APINT_TYPE_PREFIX, 10757) +HANDLE_BAT(APINT_TYPE_PREFIX, 10758) +HANDLE_BAT(APINT_TYPE_PREFIX, 10759) +HANDLE_BAT(APINT_TYPE_PREFIX, 10760) +HANDLE_BAT(APINT_TYPE_PREFIX, 10761) +HANDLE_BAT(APINT_TYPE_PREFIX, 10762) +HANDLE_BAT(APINT_TYPE_PREFIX, 10763) +HANDLE_BAT(APINT_TYPE_PREFIX, 10764) +HANDLE_BAT(APINT_TYPE_PREFIX, 10765) +HANDLE_BAT(APINT_TYPE_PREFIX, 10766) +HANDLE_BAT(APINT_TYPE_PREFIX, 10767) +HANDLE_BAT(APINT_TYPE_PREFIX, 10768) +HANDLE_BAT(APINT_TYPE_PREFIX, 10769) +HANDLE_BAT(APINT_TYPE_PREFIX, 10770) +HANDLE_BAT(APINT_TYPE_PREFIX, 10771) +HANDLE_BAT(APINT_TYPE_PREFIX, 10772) +HANDLE_BAT(APINT_TYPE_PREFIX, 10773) +HANDLE_BAT(APINT_TYPE_PREFIX, 10774) +HANDLE_BAT(APINT_TYPE_PREFIX, 10775) +HANDLE_BAT(APINT_TYPE_PREFIX, 10776) +HANDLE_BAT(APINT_TYPE_PREFIX, 10777) +HANDLE_BAT(APINT_TYPE_PREFIX, 10778) +HANDLE_BAT(APINT_TYPE_PREFIX, 10779) +HANDLE_BAT(APINT_TYPE_PREFIX, 10780) +HANDLE_BAT(APINT_TYPE_PREFIX, 10781) +HANDLE_BAT(APINT_TYPE_PREFIX, 10782) +HANDLE_BAT(APINT_TYPE_PREFIX, 10783) +HANDLE_BAT(APINT_TYPE_PREFIX, 10784) +HANDLE_BAT(APINT_TYPE_PREFIX, 10785) +HANDLE_BAT(APINT_TYPE_PREFIX, 10786) +HANDLE_BAT(APINT_TYPE_PREFIX, 10787) +HANDLE_BAT(APINT_TYPE_PREFIX, 10788) +HANDLE_BAT(APINT_TYPE_PREFIX, 10789) +HANDLE_BAT(APINT_TYPE_PREFIX, 10790) +HANDLE_BAT(APINT_TYPE_PREFIX, 10791) +HANDLE_BAT(APINT_TYPE_PREFIX, 10792) +HANDLE_BAT(APINT_TYPE_PREFIX, 10793) +HANDLE_BAT(APINT_TYPE_PREFIX, 10794) +HANDLE_BAT(APINT_TYPE_PREFIX, 10795) +HANDLE_BAT(APINT_TYPE_PREFIX, 10796) +HANDLE_BAT(APINT_TYPE_PREFIX, 10797) +HANDLE_BAT(APINT_TYPE_PREFIX, 10798) +HANDLE_BAT(APINT_TYPE_PREFIX, 10799) +HANDLE_BAT(APINT_TYPE_PREFIX, 10800) +HANDLE_BAT(APINT_TYPE_PREFIX, 10801) +HANDLE_BAT(APINT_TYPE_PREFIX, 10802) +HANDLE_BAT(APINT_TYPE_PREFIX, 10803) +HANDLE_BAT(APINT_TYPE_PREFIX, 10804) +HANDLE_BAT(APINT_TYPE_PREFIX, 10805) +HANDLE_BAT(APINT_TYPE_PREFIX, 10806) +HANDLE_BAT(APINT_TYPE_PREFIX, 10807) +HANDLE_BAT(APINT_TYPE_PREFIX, 10808) +HANDLE_BAT(APINT_TYPE_PREFIX, 10809) +HANDLE_BAT(APINT_TYPE_PREFIX, 10810) +HANDLE_BAT(APINT_TYPE_PREFIX, 10811) +HANDLE_BAT(APINT_TYPE_PREFIX, 10812) +HANDLE_BAT(APINT_TYPE_PREFIX, 10813) +HANDLE_BAT(APINT_TYPE_PREFIX, 10814) +HANDLE_BAT(APINT_TYPE_PREFIX, 10815) +HANDLE_BAT(APINT_TYPE_PREFIX, 10816) +HANDLE_BAT(APINT_TYPE_PREFIX, 10817) +HANDLE_BAT(APINT_TYPE_PREFIX, 10818) +HANDLE_BAT(APINT_TYPE_PREFIX, 10819) +HANDLE_BAT(APINT_TYPE_PREFIX, 10820) +HANDLE_BAT(APINT_TYPE_PREFIX, 10821) +HANDLE_BAT(APINT_TYPE_PREFIX, 10822) +HANDLE_BAT(APINT_TYPE_PREFIX, 10823) +HANDLE_BAT(APINT_TYPE_PREFIX, 10824) +HANDLE_BAT(APINT_TYPE_PREFIX, 10825) +HANDLE_BAT(APINT_TYPE_PREFIX, 10826) +HANDLE_BAT(APINT_TYPE_PREFIX, 10827) +HANDLE_BAT(APINT_TYPE_PREFIX, 10828) +HANDLE_BAT(APINT_TYPE_PREFIX, 10829) +HANDLE_BAT(APINT_TYPE_PREFIX, 10830) +HANDLE_BAT(APINT_TYPE_PREFIX, 10831) +HANDLE_BAT(APINT_TYPE_PREFIX, 10832) +HANDLE_BAT(APINT_TYPE_PREFIX, 10833) +HANDLE_BAT(APINT_TYPE_PREFIX, 10834) +HANDLE_BAT(APINT_TYPE_PREFIX, 10835) +HANDLE_BAT(APINT_TYPE_PREFIX, 10836) +HANDLE_BAT(APINT_TYPE_PREFIX, 10837) +HANDLE_BAT(APINT_TYPE_PREFIX, 10838) +HANDLE_BAT(APINT_TYPE_PREFIX, 10839) +HANDLE_BAT(APINT_TYPE_PREFIX, 10840) +HANDLE_BAT(APINT_TYPE_PREFIX, 10841) +HANDLE_BAT(APINT_TYPE_PREFIX, 10842) +HANDLE_BAT(APINT_TYPE_PREFIX, 10843) +HANDLE_BAT(APINT_TYPE_PREFIX, 10844) +HANDLE_BAT(APINT_TYPE_PREFIX, 10845) +HANDLE_BAT(APINT_TYPE_PREFIX, 10846) +HANDLE_BAT(APINT_TYPE_PREFIX, 10847) +HANDLE_BAT(APINT_TYPE_PREFIX, 10848) +HANDLE_BAT(APINT_TYPE_PREFIX, 10849) +HANDLE_BAT(APINT_TYPE_PREFIX, 10850) +HANDLE_BAT(APINT_TYPE_PREFIX, 10851) +HANDLE_BAT(APINT_TYPE_PREFIX, 10852) +HANDLE_BAT(APINT_TYPE_PREFIX, 10853) +HANDLE_BAT(APINT_TYPE_PREFIX, 10854) +HANDLE_BAT(APINT_TYPE_PREFIX, 10855) +HANDLE_BAT(APINT_TYPE_PREFIX, 10856) +HANDLE_BAT(APINT_TYPE_PREFIX, 10857) +HANDLE_BAT(APINT_TYPE_PREFIX, 10858) +HANDLE_BAT(APINT_TYPE_PREFIX, 10859) +HANDLE_BAT(APINT_TYPE_PREFIX, 10860) +HANDLE_BAT(APINT_TYPE_PREFIX, 10861) +HANDLE_BAT(APINT_TYPE_PREFIX, 10862) +HANDLE_BAT(APINT_TYPE_PREFIX, 10863) +HANDLE_BAT(APINT_TYPE_PREFIX, 10864) +HANDLE_BAT(APINT_TYPE_PREFIX, 10865) +HANDLE_BAT(APINT_TYPE_PREFIX, 10866) +HANDLE_BAT(APINT_TYPE_PREFIX, 10867) +HANDLE_BAT(APINT_TYPE_PREFIX, 10868) +HANDLE_BAT(APINT_TYPE_PREFIX, 10869) +HANDLE_BAT(APINT_TYPE_PREFIX, 10870) +HANDLE_BAT(APINT_TYPE_PREFIX, 10871) +HANDLE_BAT(APINT_TYPE_PREFIX, 10872) +HANDLE_BAT(APINT_TYPE_PREFIX, 10873) +HANDLE_BAT(APINT_TYPE_PREFIX, 10874) +HANDLE_BAT(APINT_TYPE_PREFIX, 10875) +HANDLE_BAT(APINT_TYPE_PREFIX, 10876) +HANDLE_BAT(APINT_TYPE_PREFIX, 10877) +HANDLE_BAT(APINT_TYPE_PREFIX, 10878) +HANDLE_BAT(APINT_TYPE_PREFIX, 10879) +HANDLE_BAT(APINT_TYPE_PREFIX, 10880) +HANDLE_BAT(APINT_TYPE_PREFIX, 10881) +HANDLE_BAT(APINT_TYPE_PREFIX, 10882) +HANDLE_BAT(APINT_TYPE_PREFIX, 10883) +HANDLE_BAT(APINT_TYPE_PREFIX, 10884) +HANDLE_BAT(APINT_TYPE_PREFIX, 10885) +HANDLE_BAT(APINT_TYPE_PREFIX, 10886) +HANDLE_BAT(APINT_TYPE_PREFIX, 10887) +HANDLE_BAT(APINT_TYPE_PREFIX, 10888) +HANDLE_BAT(APINT_TYPE_PREFIX, 10889) +HANDLE_BAT(APINT_TYPE_PREFIX, 10890) +HANDLE_BAT(APINT_TYPE_PREFIX, 10891) +HANDLE_BAT(APINT_TYPE_PREFIX, 10892) +HANDLE_BAT(APINT_TYPE_PREFIX, 10893) +HANDLE_BAT(APINT_TYPE_PREFIX, 10894) +HANDLE_BAT(APINT_TYPE_PREFIX, 10895) +HANDLE_BAT(APINT_TYPE_PREFIX, 10896) +HANDLE_BAT(APINT_TYPE_PREFIX, 10897) +HANDLE_BAT(APINT_TYPE_PREFIX, 10898) +HANDLE_BAT(APINT_TYPE_PREFIX, 10899) +HANDLE_BAT(APINT_TYPE_PREFIX, 10900) +HANDLE_BAT(APINT_TYPE_PREFIX, 10901) +HANDLE_BAT(APINT_TYPE_PREFIX, 10902) +HANDLE_BAT(APINT_TYPE_PREFIX, 10903) +HANDLE_BAT(APINT_TYPE_PREFIX, 10904) +HANDLE_BAT(APINT_TYPE_PREFIX, 10905) +HANDLE_BAT(APINT_TYPE_PREFIX, 10906) +HANDLE_BAT(APINT_TYPE_PREFIX, 10907) +HANDLE_BAT(APINT_TYPE_PREFIX, 10908) +HANDLE_BAT(APINT_TYPE_PREFIX, 10909) +HANDLE_BAT(APINT_TYPE_PREFIX, 10910) +HANDLE_BAT(APINT_TYPE_PREFIX, 10911) +HANDLE_BAT(APINT_TYPE_PREFIX, 10912) +HANDLE_BAT(APINT_TYPE_PREFIX, 10913) +HANDLE_BAT(APINT_TYPE_PREFIX, 10914) +HANDLE_BAT(APINT_TYPE_PREFIX, 10915) +HANDLE_BAT(APINT_TYPE_PREFIX, 10916) +HANDLE_BAT(APINT_TYPE_PREFIX, 10917) +HANDLE_BAT(APINT_TYPE_PREFIX, 10918) +HANDLE_BAT(APINT_TYPE_PREFIX, 10919) +HANDLE_BAT(APINT_TYPE_PREFIX, 10920) +HANDLE_BAT(APINT_TYPE_PREFIX, 10921) +HANDLE_BAT(APINT_TYPE_PREFIX, 10922) +HANDLE_BAT(APINT_TYPE_PREFIX, 10923) +HANDLE_BAT(APINT_TYPE_PREFIX, 10924) +HANDLE_BAT(APINT_TYPE_PREFIX, 10925) +HANDLE_BAT(APINT_TYPE_PREFIX, 10926) +HANDLE_BAT(APINT_TYPE_PREFIX, 10927) +HANDLE_BAT(APINT_TYPE_PREFIX, 10928) +HANDLE_BAT(APINT_TYPE_PREFIX, 10929) +HANDLE_BAT(APINT_TYPE_PREFIX, 10930) +HANDLE_BAT(APINT_TYPE_PREFIX, 10931) +HANDLE_BAT(APINT_TYPE_PREFIX, 10932) +HANDLE_BAT(APINT_TYPE_PREFIX, 10933) +HANDLE_BAT(APINT_TYPE_PREFIX, 10934) +HANDLE_BAT(APINT_TYPE_PREFIX, 10935) +HANDLE_BAT(APINT_TYPE_PREFIX, 10936) +HANDLE_BAT(APINT_TYPE_PREFIX, 10937) +HANDLE_BAT(APINT_TYPE_PREFIX, 10938) +HANDLE_BAT(APINT_TYPE_PREFIX, 10939) +HANDLE_BAT(APINT_TYPE_PREFIX, 10940) +HANDLE_BAT(APINT_TYPE_PREFIX, 10941) +HANDLE_BAT(APINT_TYPE_PREFIX, 10942) +HANDLE_BAT(APINT_TYPE_PREFIX, 10943) +HANDLE_BAT(APINT_TYPE_PREFIX, 10944) +HANDLE_BAT(APINT_TYPE_PREFIX, 10945) +HANDLE_BAT(APINT_TYPE_PREFIX, 10946) +HANDLE_BAT(APINT_TYPE_PREFIX, 10947) +HANDLE_BAT(APINT_TYPE_PREFIX, 10948) +HANDLE_BAT(APINT_TYPE_PREFIX, 10949) +HANDLE_BAT(APINT_TYPE_PREFIX, 10950) +HANDLE_BAT(APINT_TYPE_PREFIX, 10951) +HANDLE_BAT(APINT_TYPE_PREFIX, 10952) +HANDLE_BAT(APINT_TYPE_PREFIX, 10953) +HANDLE_BAT(APINT_TYPE_PREFIX, 10954) +HANDLE_BAT(APINT_TYPE_PREFIX, 10955) +HANDLE_BAT(APINT_TYPE_PREFIX, 10956) +HANDLE_BAT(APINT_TYPE_PREFIX, 10957) +HANDLE_BAT(APINT_TYPE_PREFIX, 10958) +HANDLE_BAT(APINT_TYPE_PREFIX, 10959) +HANDLE_BAT(APINT_TYPE_PREFIX, 10960) +HANDLE_BAT(APINT_TYPE_PREFIX, 10961) +HANDLE_BAT(APINT_TYPE_PREFIX, 10962) +HANDLE_BAT(APINT_TYPE_PREFIX, 10963) +HANDLE_BAT(APINT_TYPE_PREFIX, 10964) +HANDLE_BAT(APINT_TYPE_PREFIX, 10965) +HANDLE_BAT(APINT_TYPE_PREFIX, 10966) +HANDLE_BAT(APINT_TYPE_PREFIX, 10967) +HANDLE_BAT(APINT_TYPE_PREFIX, 10968) +HANDLE_BAT(APINT_TYPE_PREFIX, 10969) +HANDLE_BAT(APINT_TYPE_PREFIX, 10970) +HANDLE_BAT(APINT_TYPE_PREFIX, 10971) +HANDLE_BAT(APINT_TYPE_PREFIX, 10972) +HANDLE_BAT(APINT_TYPE_PREFIX, 10973) +HANDLE_BAT(APINT_TYPE_PREFIX, 10974) +HANDLE_BAT(APINT_TYPE_PREFIX, 10975) +HANDLE_BAT(APINT_TYPE_PREFIX, 10976) +HANDLE_BAT(APINT_TYPE_PREFIX, 10977) +HANDLE_BAT(APINT_TYPE_PREFIX, 10978) +HANDLE_BAT(APINT_TYPE_PREFIX, 10979) +HANDLE_BAT(APINT_TYPE_PREFIX, 10980) +HANDLE_BAT(APINT_TYPE_PREFIX, 10981) +HANDLE_BAT(APINT_TYPE_PREFIX, 10982) +HANDLE_BAT(APINT_TYPE_PREFIX, 10983) +HANDLE_BAT(APINT_TYPE_PREFIX, 10984) +HANDLE_BAT(APINT_TYPE_PREFIX, 10985) +HANDLE_BAT(APINT_TYPE_PREFIX, 10986) +HANDLE_BAT(APINT_TYPE_PREFIX, 10987) +HANDLE_BAT(APINT_TYPE_PREFIX, 10988) +HANDLE_BAT(APINT_TYPE_PREFIX, 10989) +HANDLE_BAT(APINT_TYPE_PREFIX, 10990) +HANDLE_BAT(APINT_TYPE_PREFIX, 10991) +HANDLE_BAT(APINT_TYPE_PREFIX, 10992) +HANDLE_BAT(APINT_TYPE_PREFIX, 10993) +HANDLE_BAT(APINT_TYPE_PREFIX, 10994) +HANDLE_BAT(APINT_TYPE_PREFIX, 10995) +HANDLE_BAT(APINT_TYPE_PREFIX, 10996) +HANDLE_BAT(APINT_TYPE_PREFIX, 10997) +HANDLE_BAT(APINT_TYPE_PREFIX, 10998) +HANDLE_BAT(APINT_TYPE_PREFIX, 10999) +HANDLE_BAT(APINT_TYPE_PREFIX, 11000) +HANDLE_BAT(APINT_TYPE_PREFIX, 11001) +HANDLE_BAT(APINT_TYPE_PREFIX, 11002) +HANDLE_BAT(APINT_TYPE_PREFIX, 11003) +HANDLE_BAT(APINT_TYPE_PREFIX, 11004) +HANDLE_BAT(APINT_TYPE_PREFIX, 11005) +HANDLE_BAT(APINT_TYPE_PREFIX, 11006) +HANDLE_BAT(APINT_TYPE_PREFIX, 11007) +HANDLE_BAT(APINT_TYPE_PREFIX, 11008) +HANDLE_BAT(APINT_TYPE_PREFIX, 11009) +HANDLE_BAT(APINT_TYPE_PREFIX, 11010) +HANDLE_BAT(APINT_TYPE_PREFIX, 11011) +HANDLE_BAT(APINT_TYPE_PREFIX, 11012) +HANDLE_BAT(APINT_TYPE_PREFIX, 11013) +HANDLE_BAT(APINT_TYPE_PREFIX, 11014) +HANDLE_BAT(APINT_TYPE_PREFIX, 11015) +HANDLE_BAT(APINT_TYPE_PREFIX, 11016) +HANDLE_BAT(APINT_TYPE_PREFIX, 11017) +HANDLE_BAT(APINT_TYPE_PREFIX, 11018) +HANDLE_BAT(APINT_TYPE_PREFIX, 11019) +HANDLE_BAT(APINT_TYPE_PREFIX, 11020) +HANDLE_BAT(APINT_TYPE_PREFIX, 11021) +HANDLE_BAT(APINT_TYPE_PREFIX, 11022) +HANDLE_BAT(APINT_TYPE_PREFIX, 11023) +HANDLE_BAT(APINT_TYPE_PREFIX, 11024) +HANDLE_BAT(APINT_TYPE_PREFIX, 11025) +HANDLE_BAT(APINT_TYPE_PREFIX, 11026) +HANDLE_BAT(APINT_TYPE_PREFIX, 11027) +HANDLE_BAT(APINT_TYPE_PREFIX, 11028) +HANDLE_BAT(APINT_TYPE_PREFIX, 11029) +HANDLE_BAT(APINT_TYPE_PREFIX, 11030) +HANDLE_BAT(APINT_TYPE_PREFIX, 11031) +HANDLE_BAT(APINT_TYPE_PREFIX, 11032) +HANDLE_BAT(APINT_TYPE_PREFIX, 11033) +HANDLE_BAT(APINT_TYPE_PREFIX, 11034) +HANDLE_BAT(APINT_TYPE_PREFIX, 11035) +HANDLE_BAT(APINT_TYPE_PREFIX, 11036) +HANDLE_BAT(APINT_TYPE_PREFIX, 11037) +HANDLE_BAT(APINT_TYPE_PREFIX, 11038) +HANDLE_BAT(APINT_TYPE_PREFIX, 11039) +HANDLE_BAT(APINT_TYPE_PREFIX, 11040) +HANDLE_BAT(APINT_TYPE_PREFIX, 11041) +HANDLE_BAT(APINT_TYPE_PREFIX, 11042) +HANDLE_BAT(APINT_TYPE_PREFIX, 11043) +HANDLE_BAT(APINT_TYPE_PREFIX, 11044) +HANDLE_BAT(APINT_TYPE_PREFIX, 11045) +HANDLE_BAT(APINT_TYPE_PREFIX, 11046) +HANDLE_BAT(APINT_TYPE_PREFIX, 11047) +HANDLE_BAT(APINT_TYPE_PREFIX, 11048) +HANDLE_BAT(APINT_TYPE_PREFIX, 11049) +HANDLE_BAT(APINT_TYPE_PREFIX, 11050) +HANDLE_BAT(APINT_TYPE_PREFIX, 11051) +HANDLE_BAT(APINT_TYPE_PREFIX, 11052) +HANDLE_BAT(APINT_TYPE_PREFIX, 11053) +HANDLE_BAT(APINT_TYPE_PREFIX, 11054) +HANDLE_BAT(APINT_TYPE_PREFIX, 11055) +HANDLE_BAT(APINT_TYPE_PREFIX, 11056) +HANDLE_BAT(APINT_TYPE_PREFIX, 11057) +HANDLE_BAT(APINT_TYPE_PREFIX, 11058) +HANDLE_BAT(APINT_TYPE_PREFIX, 11059) +HANDLE_BAT(APINT_TYPE_PREFIX, 11060) +HANDLE_BAT(APINT_TYPE_PREFIX, 11061) +HANDLE_BAT(APINT_TYPE_PREFIX, 11062) +HANDLE_BAT(APINT_TYPE_PREFIX, 11063) +HANDLE_BAT(APINT_TYPE_PREFIX, 11064) +HANDLE_BAT(APINT_TYPE_PREFIX, 11065) +HANDLE_BAT(APINT_TYPE_PREFIX, 11066) +HANDLE_BAT(APINT_TYPE_PREFIX, 11067) +HANDLE_BAT(APINT_TYPE_PREFIX, 11068) +HANDLE_BAT(APINT_TYPE_PREFIX, 11069) +HANDLE_BAT(APINT_TYPE_PREFIX, 11070) +HANDLE_BAT(APINT_TYPE_PREFIX, 11071) +HANDLE_BAT(APINT_TYPE_PREFIX, 11072) +HANDLE_BAT(APINT_TYPE_PREFIX, 11073) +HANDLE_BAT(APINT_TYPE_PREFIX, 11074) +HANDLE_BAT(APINT_TYPE_PREFIX, 11075) +HANDLE_BAT(APINT_TYPE_PREFIX, 11076) +HANDLE_BAT(APINT_TYPE_PREFIX, 11077) +HANDLE_BAT(APINT_TYPE_PREFIX, 11078) +HANDLE_BAT(APINT_TYPE_PREFIX, 11079) +HANDLE_BAT(APINT_TYPE_PREFIX, 11080) +HANDLE_BAT(APINT_TYPE_PREFIX, 11081) +HANDLE_BAT(APINT_TYPE_PREFIX, 11082) +HANDLE_BAT(APINT_TYPE_PREFIX, 11083) +HANDLE_BAT(APINT_TYPE_PREFIX, 11084) +HANDLE_BAT(APINT_TYPE_PREFIX, 11085) +HANDLE_BAT(APINT_TYPE_PREFIX, 11086) +HANDLE_BAT(APINT_TYPE_PREFIX, 11087) +HANDLE_BAT(APINT_TYPE_PREFIX, 11088) +HANDLE_BAT(APINT_TYPE_PREFIX, 11089) +HANDLE_BAT(APINT_TYPE_PREFIX, 11090) +HANDLE_BAT(APINT_TYPE_PREFIX, 11091) +HANDLE_BAT(APINT_TYPE_PREFIX, 11092) +HANDLE_BAT(APINT_TYPE_PREFIX, 11093) +HANDLE_BAT(APINT_TYPE_PREFIX, 11094) +HANDLE_BAT(APINT_TYPE_PREFIX, 11095) +HANDLE_BAT(APINT_TYPE_PREFIX, 11096) +HANDLE_BAT(APINT_TYPE_PREFIX, 11097) +HANDLE_BAT(APINT_TYPE_PREFIX, 11098) +HANDLE_BAT(APINT_TYPE_PREFIX, 11099) +HANDLE_BAT(APINT_TYPE_PREFIX, 11100) +HANDLE_BAT(APINT_TYPE_PREFIX, 11101) +HANDLE_BAT(APINT_TYPE_PREFIX, 11102) +HANDLE_BAT(APINT_TYPE_PREFIX, 11103) +HANDLE_BAT(APINT_TYPE_PREFIX, 11104) +HANDLE_BAT(APINT_TYPE_PREFIX, 11105) +HANDLE_BAT(APINT_TYPE_PREFIX, 11106) +HANDLE_BAT(APINT_TYPE_PREFIX, 11107) +HANDLE_BAT(APINT_TYPE_PREFIX, 11108) +HANDLE_BAT(APINT_TYPE_PREFIX, 11109) +HANDLE_BAT(APINT_TYPE_PREFIX, 11110) +HANDLE_BAT(APINT_TYPE_PREFIX, 11111) +HANDLE_BAT(APINT_TYPE_PREFIX, 11112) +HANDLE_BAT(APINT_TYPE_PREFIX, 11113) +HANDLE_BAT(APINT_TYPE_PREFIX, 11114) +HANDLE_BAT(APINT_TYPE_PREFIX, 11115) +HANDLE_BAT(APINT_TYPE_PREFIX, 11116) +HANDLE_BAT(APINT_TYPE_PREFIX, 11117) +HANDLE_BAT(APINT_TYPE_PREFIX, 11118) +HANDLE_BAT(APINT_TYPE_PREFIX, 11119) +HANDLE_BAT(APINT_TYPE_PREFIX, 11120) +HANDLE_BAT(APINT_TYPE_PREFIX, 11121) +HANDLE_BAT(APINT_TYPE_PREFIX, 11122) +HANDLE_BAT(APINT_TYPE_PREFIX, 11123) +HANDLE_BAT(APINT_TYPE_PREFIX, 11124) +HANDLE_BAT(APINT_TYPE_PREFIX, 11125) +HANDLE_BAT(APINT_TYPE_PREFIX, 11126) +HANDLE_BAT(APINT_TYPE_PREFIX, 11127) +HANDLE_BAT(APINT_TYPE_PREFIX, 11128) +HANDLE_BAT(APINT_TYPE_PREFIX, 11129) +HANDLE_BAT(APINT_TYPE_PREFIX, 11130) +HANDLE_BAT(APINT_TYPE_PREFIX, 11131) +HANDLE_BAT(APINT_TYPE_PREFIX, 11132) +HANDLE_BAT(APINT_TYPE_PREFIX, 11133) +HANDLE_BAT(APINT_TYPE_PREFIX, 11134) +HANDLE_BAT(APINT_TYPE_PREFIX, 11135) +HANDLE_BAT(APINT_TYPE_PREFIX, 11136) +HANDLE_BAT(APINT_TYPE_PREFIX, 11137) +HANDLE_BAT(APINT_TYPE_PREFIX, 11138) +HANDLE_BAT(APINT_TYPE_PREFIX, 11139) +HANDLE_BAT(APINT_TYPE_PREFIX, 11140) +HANDLE_BAT(APINT_TYPE_PREFIX, 11141) +HANDLE_BAT(APINT_TYPE_PREFIX, 11142) +HANDLE_BAT(APINT_TYPE_PREFIX, 11143) +HANDLE_BAT(APINT_TYPE_PREFIX, 11144) +HANDLE_BAT(APINT_TYPE_PREFIX, 11145) +HANDLE_BAT(APINT_TYPE_PREFIX, 11146) +HANDLE_BAT(APINT_TYPE_PREFIX, 11147) +HANDLE_BAT(APINT_TYPE_PREFIX, 11148) +HANDLE_BAT(APINT_TYPE_PREFIX, 11149) +HANDLE_BAT(APINT_TYPE_PREFIX, 11150) +HANDLE_BAT(APINT_TYPE_PREFIX, 11151) +HANDLE_BAT(APINT_TYPE_PREFIX, 11152) +HANDLE_BAT(APINT_TYPE_PREFIX, 11153) +HANDLE_BAT(APINT_TYPE_PREFIX, 11154) +HANDLE_BAT(APINT_TYPE_PREFIX, 11155) +HANDLE_BAT(APINT_TYPE_PREFIX, 11156) +HANDLE_BAT(APINT_TYPE_PREFIX, 11157) +HANDLE_BAT(APINT_TYPE_PREFIX, 11158) +HANDLE_BAT(APINT_TYPE_PREFIX, 11159) +HANDLE_BAT(APINT_TYPE_PREFIX, 11160) +HANDLE_BAT(APINT_TYPE_PREFIX, 11161) +HANDLE_BAT(APINT_TYPE_PREFIX, 11162) +HANDLE_BAT(APINT_TYPE_PREFIX, 11163) +HANDLE_BAT(APINT_TYPE_PREFIX, 11164) +HANDLE_BAT(APINT_TYPE_PREFIX, 11165) +HANDLE_BAT(APINT_TYPE_PREFIX, 11166) +HANDLE_BAT(APINT_TYPE_PREFIX, 11167) +HANDLE_BAT(APINT_TYPE_PREFIX, 11168) +HANDLE_BAT(APINT_TYPE_PREFIX, 11169) +HANDLE_BAT(APINT_TYPE_PREFIX, 11170) +HANDLE_BAT(APINT_TYPE_PREFIX, 11171) +HANDLE_BAT(APINT_TYPE_PREFIX, 11172) +HANDLE_BAT(APINT_TYPE_PREFIX, 11173) +HANDLE_BAT(APINT_TYPE_PREFIX, 11174) +HANDLE_BAT(APINT_TYPE_PREFIX, 11175) +HANDLE_BAT(APINT_TYPE_PREFIX, 11176) +HANDLE_BAT(APINT_TYPE_PREFIX, 11177) +HANDLE_BAT(APINT_TYPE_PREFIX, 11178) +HANDLE_BAT(APINT_TYPE_PREFIX, 11179) +HANDLE_BAT(APINT_TYPE_PREFIX, 11180) +HANDLE_BAT(APINT_TYPE_PREFIX, 11181) +HANDLE_BAT(APINT_TYPE_PREFIX, 11182) +HANDLE_BAT(APINT_TYPE_PREFIX, 11183) +HANDLE_BAT(APINT_TYPE_PREFIX, 11184) +HANDLE_BAT(APINT_TYPE_PREFIX, 11185) +HANDLE_BAT(APINT_TYPE_PREFIX, 11186) +HANDLE_BAT(APINT_TYPE_PREFIX, 11187) +HANDLE_BAT(APINT_TYPE_PREFIX, 11188) +HANDLE_BAT(APINT_TYPE_PREFIX, 11189) +HANDLE_BAT(APINT_TYPE_PREFIX, 11190) +HANDLE_BAT(APINT_TYPE_PREFIX, 11191) +HANDLE_BAT(APINT_TYPE_PREFIX, 11192) +HANDLE_BAT(APINT_TYPE_PREFIX, 11193) +HANDLE_BAT(APINT_TYPE_PREFIX, 11194) +HANDLE_BAT(APINT_TYPE_PREFIX, 11195) +HANDLE_BAT(APINT_TYPE_PREFIX, 11196) +HANDLE_BAT(APINT_TYPE_PREFIX, 11197) +HANDLE_BAT(APINT_TYPE_PREFIX, 11198) +HANDLE_BAT(APINT_TYPE_PREFIX, 11199) +HANDLE_BAT(APINT_TYPE_PREFIX, 11200) +HANDLE_BAT(APINT_TYPE_PREFIX, 11201) +HANDLE_BAT(APINT_TYPE_PREFIX, 11202) +HANDLE_BAT(APINT_TYPE_PREFIX, 11203) +HANDLE_BAT(APINT_TYPE_PREFIX, 11204) +HANDLE_BAT(APINT_TYPE_PREFIX, 11205) +HANDLE_BAT(APINT_TYPE_PREFIX, 11206) +HANDLE_BAT(APINT_TYPE_PREFIX, 11207) +HANDLE_BAT(APINT_TYPE_PREFIX, 11208) +HANDLE_BAT(APINT_TYPE_PREFIX, 11209) +HANDLE_BAT(APINT_TYPE_PREFIX, 11210) +HANDLE_BAT(APINT_TYPE_PREFIX, 11211) +HANDLE_BAT(APINT_TYPE_PREFIX, 11212) +HANDLE_BAT(APINT_TYPE_PREFIX, 11213) +HANDLE_BAT(APINT_TYPE_PREFIX, 11214) +HANDLE_BAT(APINT_TYPE_PREFIX, 11215) +HANDLE_BAT(APINT_TYPE_PREFIX, 11216) +HANDLE_BAT(APINT_TYPE_PREFIX, 11217) +HANDLE_BAT(APINT_TYPE_PREFIX, 11218) +HANDLE_BAT(APINT_TYPE_PREFIX, 11219) +HANDLE_BAT(APINT_TYPE_PREFIX, 11220) +HANDLE_BAT(APINT_TYPE_PREFIX, 11221) +HANDLE_BAT(APINT_TYPE_PREFIX, 11222) +HANDLE_BAT(APINT_TYPE_PREFIX, 11223) +HANDLE_BAT(APINT_TYPE_PREFIX, 11224) +HANDLE_BAT(APINT_TYPE_PREFIX, 11225) +HANDLE_BAT(APINT_TYPE_PREFIX, 11226) +HANDLE_BAT(APINT_TYPE_PREFIX, 11227) +HANDLE_BAT(APINT_TYPE_PREFIX, 11228) +HANDLE_BAT(APINT_TYPE_PREFIX, 11229) +HANDLE_BAT(APINT_TYPE_PREFIX, 11230) +HANDLE_BAT(APINT_TYPE_PREFIX, 11231) +HANDLE_BAT(APINT_TYPE_PREFIX, 11232) +HANDLE_BAT(APINT_TYPE_PREFIX, 11233) +HANDLE_BAT(APINT_TYPE_PREFIX, 11234) +HANDLE_BAT(APINT_TYPE_PREFIX, 11235) +HANDLE_BAT(APINT_TYPE_PREFIX, 11236) +HANDLE_BAT(APINT_TYPE_PREFIX, 11237) +HANDLE_BAT(APINT_TYPE_PREFIX, 11238) +HANDLE_BAT(APINT_TYPE_PREFIX, 11239) +HANDLE_BAT(APINT_TYPE_PREFIX, 11240) +HANDLE_BAT(APINT_TYPE_PREFIX, 11241) +HANDLE_BAT(APINT_TYPE_PREFIX, 11242) +HANDLE_BAT(APINT_TYPE_PREFIX, 11243) +HANDLE_BAT(APINT_TYPE_PREFIX, 11244) +HANDLE_BAT(APINT_TYPE_PREFIX, 11245) +HANDLE_BAT(APINT_TYPE_PREFIX, 11246) +HANDLE_BAT(APINT_TYPE_PREFIX, 11247) +HANDLE_BAT(APINT_TYPE_PREFIX, 11248) +HANDLE_BAT(APINT_TYPE_PREFIX, 11249) +HANDLE_BAT(APINT_TYPE_PREFIX, 11250) +HANDLE_BAT(APINT_TYPE_PREFIX, 11251) +HANDLE_BAT(APINT_TYPE_PREFIX, 11252) +HANDLE_BAT(APINT_TYPE_PREFIX, 11253) +HANDLE_BAT(APINT_TYPE_PREFIX, 11254) +HANDLE_BAT(APINT_TYPE_PREFIX, 11255) +HANDLE_BAT(APINT_TYPE_PREFIX, 11256) +HANDLE_BAT(APINT_TYPE_PREFIX, 11257) +HANDLE_BAT(APINT_TYPE_PREFIX, 11258) +HANDLE_BAT(APINT_TYPE_PREFIX, 11259) +HANDLE_BAT(APINT_TYPE_PREFIX, 11260) +HANDLE_BAT(APINT_TYPE_PREFIX, 11261) +HANDLE_BAT(APINT_TYPE_PREFIX, 11262) +HANDLE_BAT(APINT_TYPE_PREFIX, 11263) +HANDLE_BAT(APINT_TYPE_PREFIX, 11264) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 11 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 11265) +HANDLE_BAT(, 11266) +HANDLE_BAT(, 11267) +HANDLE_BAT(, 11268) +HANDLE_BAT(, 11269) +HANDLE_BAT(, 11270) +HANDLE_BAT(, 11271) +HANDLE_BAT(, 11272) +HANDLE_BAT(, 11273) +HANDLE_BAT(, 11274) +HANDLE_BAT(, 11275) +HANDLE_BAT(, 11276) +HANDLE_BAT(, 11277) +HANDLE_BAT(, 11278) +HANDLE_BAT(, 11279) +HANDLE_BAT(, 11280) +HANDLE_BAT(, 11281) +HANDLE_BAT(, 11282) +HANDLE_BAT(, 11283) +HANDLE_BAT(, 11284) +HANDLE_BAT(, 11285) +HANDLE_BAT(, 11286) +HANDLE_BAT(, 11287) +HANDLE_BAT(, 11288) +HANDLE_BAT(, 11289) +HANDLE_BAT(, 11290) +HANDLE_BAT(, 11291) +HANDLE_BAT(, 11292) +HANDLE_BAT(, 11293) +HANDLE_BAT(, 11294) +HANDLE_BAT(, 11295) +HANDLE_BAT(, 11296) +HANDLE_BAT(, 11297) +HANDLE_BAT(, 11298) +HANDLE_BAT(, 11299) +HANDLE_BAT(, 11300) +HANDLE_BAT(, 11301) +HANDLE_BAT(, 11302) +HANDLE_BAT(, 11303) +HANDLE_BAT(, 11304) +HANDLE_BAT(, 11305) +HANDLE_BAT(, 11306) +HANDLE_BAT(, 11307) +HANDLE_BAT(, 11308) +HANDLE_BAT(, 11309) +HANDLE_BAT(, 11310) +HANDLE_BAT(, 11311) +HANDLE_BAT(, 11312) +HANDLE_BAT(, 11313) +HANDLE_BAT(, 11314) +HANDLE_BAT(, 11315) +HANDLE_BAT(, 11316) +HANDLE_BAT(, 11317) +HANDLE_BAT(, 11318) +HANDLE_BAT(, 11319) +HANDLE_BAT(, 11320) +HANDLE_BAT(, 11321) +HANDLE_BAT(, 11322) +HANDLE_BAT(, 11323) +HANDLE_BAT(, 11324) +HANDLE_BAT(, 11325) +HANDLE_BAT(, 11326) +HANDLE_BAT(, 11327) +HANDLE_BAT(, 11328) +HANDLE_BAT(, 11329) +HANDLE_BAT(, 11330) +HANDLE_BAT(, 11331) +HANDLE_BAT(, 11332) +HANDLE_BAT(, 11333) +HANDLE_BAT(, 11334) +HANDLE_BAT(, 11335) +HANDLE_BAT(, 11336) +HANDLE_BAT(, 11337) +HANDLE_BAT(, 11338) +HANDLE_BAT(, 11339) +HANDLE_BAT(, 11340) +HANDLE_BAT(, 11341) +HANDLE_BAT(, 11342) +HANDLE_BAT(, 11343) +HANDLE_BAT(, 11344) +HANDLE_BAT(, 11345) +HANDLE_BAT(, 11346) +HANDLE_BAT(, 11347) +HANDLE_BAT(, 11348) +HANDLE_BAT(, 11349) +HANDLE_BAT(, 11350) +HANDLE_BAT(, 11351) +HANDLE_BAT(, 11352) +HANDLE_BAT(, 11353) +HANDLE_BAT(, 11354) +HANDLE_BAT(, 11355) +HANDLE_BAT(, 11356) +HANDLE_BAT(, 11357) +HANDLE_BAT(, 11358) +HANDLE_BAT(, 11359) +HANDLE_BAT(, 11360) +HANDLE_BAT(, 11361) +HANDLE_BAT(, 11362) +HANDLE_BAT(, 11363) +HANDLE_BAT(, 11364) +HANDLE_BAT(, 11365) +HANDLE_BAT(, 11366) +HANDLE_BAT(, 11367) +HANDLE_BAT(, 11368) +HANDLE_BAT(, 11369) +HANDLE_BAT(, 11370) +HANDLE_BAT(, 11371) +HANDLE_BAT(, 11372) +HANDLE_BAT(, 11373) +HANDLE_BAT(, 11374) +HANDLE_BAT(, 11375) +HANDLE_BAT(, 11376) +HANDLE_BAT(, 11377) +HANDLE_BAT(, 11378) +HANDLE_BAT(, 11379) +HANDLE_BAT(, 11380) +HANDLE_BAT(, 11381) +HANDLE_BAT(, 11382) +HANDLE_BAT(, 11383) +HANDLE_BAT(, 11384) +HANDLE_BAT(, 11385) +HANDLE_BAT(, 11386) +HANDLE_BAT(, 11387) +HANDLE_BAT(, 11388) +HANDLE_BAT(, 11389) +HANDLE_BAT(, 11390) +HANDLE_BAT(, 11391) +HANDLE_BAT(, 11392) +HANDLE_BAT(, 11393) +HANDLE_BAT(, 11394) +HANDLE_BAT(, 11395) +HANDLE_BAT(, 11396) +HANDLE_BAT(, 11397) +HANDLE_BAT(, 11398) +HANDLE_BAT(, 11399) +HANDLE_BAT(, 11400) +HANDLE_BAT(, 11401) +HANDLE_BAT(, 11402) +HANDLE_BAT(, 11403) +HANDLE_BAT(, 11404) +HANDLE_BAT(, 11405) +HANDLE_BAT(, 11406) +HANDLE_BAT(, 11407) +HANDLE_BAT(, 11408) +HANDLE_BAT(, 11409) +HANDLE_BAT(, 11410) +HANDLE_BAT(, 11411) +HANDLE_BAT(, 11412) +HANDLE_BAT(, 11413) +HANDLE_BAT(, 11414) +HANDLE_BAT(, 11415) +HANDLE_BAT(, 11416) +HANDLE_BAT(, 11417) +HANDLE_BAT(, 11418) +HANDLE_BAT(, 11419) +HANDLE_BAT(, 11420) +HANDLE_BAT(, 11421) +HANDLE_BAT(, 11422) +HANDLE_BAT(, 11423) +HANDLE_BAT(, 11424) +HANDLE_BAT(, 11425) +HANDLE_BAT(, 11426) +HANDLE_BAT(, 11427) +HANDLE_BAT(, 11428) +HANDLE_BAT(, 11429) +HANDLE_BAT(, 11430) +HANDLE_BAT(, 11431) +HANDLE_BAT(, 11432) +HANDLE_BAT(, 11433) +HANDLE_BAT(, 11434) +HANDLE_BAT(, 11435) +HANDLE_BAT(, 11436) +HANDLE_BAT(, 11437) +HANDLE_BAT(, 11438) +HANDLE_BAT(, 11439) +HANDLE_BAT(, 11440) +HANDLE_BAT(, 11441) +HANDLE_BAT(, 11442) +HANDLE_BAT(, 11443) +HANDLE_BAT(, 11444) +HANDLE_BAT(, 11445) +HANDLE_BAT(, 11446) +HANDLE_BAT(, 11447) +HANDLE_BAT(, 11448) +HANDLE_BAT(, 11449) +HANDLE_BAT(, 11450) +HANDLE_BAT(, 11451) +HANDLE_BAT(, 11452) +HANDLE_BAT(, 11453) +HANDLE_BAT(, 11454) +HANDLE_BAT(, 11455) +HANDLE_BAT(, 11456) +HANDLE_BAT(, 11457) +HANDLE_BAT(, 11458) +HANDLE_BAT(, 11459) +HANDLE_BAT(, 11460) +HANDLE_BAT(, 11461) +HANDLE_BAT(, 11462) +HANDLE_BAT(, 11463) +HANDLE_BAT(, 11464) +HANDLE_BAT(, 11465) +HANDLE_BAT(, 11466) +HANDLE_BAT(, 11467) +HANDLE_BAT(, 11468) +HANDLE_BAT(, 11469) +HANDLE_BAT(, 11470) +HANDLE_BAT(, 11471) +HANDLE_BAT(, 11472) +HANDLE_BAT(, 11473) +HANDLE_BAT(, 11474) +HANDLE_BAT(, 11475) +HANDLE_BAT(, 11476) +HANDLE_BAT(, 11477) +HANDLE_BAT(, 11478) +HANDLE_BAT(, 11479) +HANDLE_BAT(, 11480) +HANDLE_BAT(, 11481) +HANDLE_BAT(, 11482) +HANDLE_BAT(, 11483) +HANDLE_BAT(, 11484) +HANDLE_BAT(, 11485) +HANDLE_BAT(, 11486) +HANDLE_BAT(, 11487) +HANDLE_BAT(, 11488) +HANDLE_BAT(, 11489) +HANDLE_BAT(, 11490) +HANDLE_BAT(, 11491) +HANDLE_BAT(, 11492) +HANDLE_BAT(, 11493) +HANDLE_BAT(, 11494) +HANDLE_BAT(, 11495) +HANDLE_BAT(, 11496) +HANDLE_BAT(, 11497) +HANDLE_BAT(, 11498) +HANDLE_BAT(, 11499) +HANDLE_BAT(, 11500) +HANDLE_BAT(, 11501) +HANDLE_BAT(, 11502) +HANDLE_BAT(, 11503) +HANDLE_BAT(, 11504) +HANDLE_BAT(, 11505) +HANDLE_BAT(, 11506) +HANDLE_BAT(, 11507) +HANDLE_BAT(, 11508) +HANDLE_BAT(, 11509) +HANDLE_BAT(, 11510) +HANDLE_BAT(, 11511) +HANDLE_BAT(, 11512) +HANDLE_BAT(, 11513) +HANDLE_BAT(, 11514) +HANDLE_BAT(, 11515) +HANDLE_BAT(, 11516) +HANDLE_BAT(, 11517) +HANDLE_BAT(, 11518) +HANDLE_BAT(, 11519) +HANDLE_BAT(, 11520) +HANDLE_BAT(, 11521) +HANDLE_BAT(, 11522) +HANDLE_BAT(, 11523) +HANDLE_BAT(, 11524) +HANDLE_BAT(, 11525) +HANDLE_BAT(, 11526) +HANDLE_BAT(, 11527) +HANDLE_BAT(, 11528) +HANDLE_BAT(, 11529) +HANDLE_BAT(, 11530) +HANDLE_BAT(, 11531) +HANDLE_BAT(, 11532) +HANDLE_BAT(, 11533) +HANDLE_BAT(, 11534) +HANDLE_BAT(, 11535) +HANDLE_BAT(, 11536) +HANDLE_BAT(, 11537) +HANDLE_BAT(, 11538) +HANDLE_BAT(, 11539) +HANDLE_BAT(, 11540) +HANDLE_BAT(, 11541) +HANDLE_BAT(, 11542) +HANDLE_BAT(, 11543) +HANDLE_BAT(, 11544) +HANDLE_BAT(, 11545) +HANDLE_BAT(, 11546) +HANDLE_BAT(, 11547) +HANDLE_BAT(, 11548) +HANDLE_BAT(, 11549) +HANDLE_BAT(, 11550) +HANDLE_BAT(, 11551) +HANDLE_BAT(, 11552) +HANDLE_BAT(, 11553) +HANDLE_BAT(, 11554) +HANDLE_BAT(, 11555) +HANDLE_BAT(, 11556) +HANDLE_BAT(, 11557) +HANDLE_BAT(, 11558) +HANDLE_BAT(, 11559) +HANDLE_BAT(, 11560) +HANDLE_BAT(, 11561) +HANDLE_BAT(, 11562) +HANDLE_BAT(, 11563) +HANDLE_BAT(, 11564) +HANDLE_BAT(, 11565) +HANDLE_BAT(, 11566) +HANDLE_BAT(, 11567) +HANDLE_BAT(, 11568) +HANDLE_BAT(, 11569) +HANDLE_BAT(, 11570) +HANDLE_BAT(, 11571) +HANDLE_BAT(, 11572) +HANDLE_BAT(, 11573) +HANDLE_BAT(, 11574) +HANDLE_BAT(, 11575) +HANDLE_BAT(, 11576) +HANDLE_BAT(, 11577) +HANDLE_BAT(, 11578) +HANDLE_BAT(, 11579) +HANDLE_BAT(, 11580) +HANDLE_BAT(, 11581) +HANDLE_BAT(, 11582) +HANDLE_BAT(, 11583) +HANDLE_BAT(, 11584) +HANDLE_BAT(, 11585) +HANDLE_BAT(, 11586) +HANDLE_BAT(, 11587) +HANDLE_BAT(, 11588) +HANDLE_BAT(, 11589) +HANDLE_BAT(, 11590) +HANDLE_BAT(, 11591) +HANDLE_BAT(, 11592) +HANDLE_BAT(, 11593) +HANDLE_BAT(, 11594) +HANDLE_BAT(, 11595) +HANDLE_BAT(, 11596) +HANDLE_BAT(, 11597) +HANDLE_BAT(, 11598) +HANDLE_BAT(, 11599) +HANDLE_BAT(, 11600) +HANDLE_BAT(, 11601) +HANDLE_BAT(, 11602) +HANDLE_BAT(, 11603) +HANDLE_BAT(, 11604) +HANDLE_BAT(, 11605) +HANDLE_BAT(, 11606) +HANDLE_BAT(, 11607) +HANDLE_BAT(, 11608) +HANDLE_BAT(, 11609) +HANDLE_BAT(, 11610) +HANDLE_BAT(, 11611) +HANDLE_BAT(, 11612) +HANDLE_BAT(, 11613) +HANDLE_BAT(, 11614) +HANDLE_BAT(, 11615) +HANDLE_BAT(, 11616) +HANDLE_BAT(, 11617) +HANDLE_BAT(, 11618) +HANDLE_BAT(, 11619) +HANDLE_BAT(, 11620) +HANDLE_BAT(, 11621) +HANDLE_BAT(, 11622) +HANDLE_BAT(, 11623) +HANDLE_BAT(, 11624) +HANDLE_BAT(, 11625) +HANDLE_BAT(, 11626) +HANDLE_BAT(, 11627) +HANDLE_BAT(, 11628) +HANDLE_BAT(, 11629) +HANDLE_BAT(, 11630) +HANDLE_BAT(, 11631) +HANDLE_BAT(, 11632) +HANDLE_BAT(, 11633) +HANDLE_BAT(, 11634) +HANDLE_BAT(, 11635) +HANDLE_BAT(, 11636) +HANDLE_BAT(, 11637) +HANDLE_BAT(, 11638) +HANDLE_BAT(, 11639) +HANDLE_BAT(, 11640) +HANDLE_BAT(, 11641) +HANDLE_BAT(, 11642) +HANDLE_BAT(, 11643) +HANDLE_BAT(, 11644) +HANDLE_BAT(, 11645) +HANDLE_BAT(, 11646) +HANDLE_BAT(, 11647) +HANDLE_BAT(, 11648) +HANDLE_BAT(, 11649) +HANDLE_BAT(, 11650) +HANDLE_BAT(, 11651) +HANDLE_BAT(, 11652) +HANDLE_BAT(, 11653) +HANDLE_BAT(, 11654) +HANDLE_BAT(, 11655) +HANDLE_BAT(, 11656) +HANDLE_BAT(, 11657) +HANDLE_BAT(, 11658) +HANDLE_BAT(, 11659) +HANDLE_BAT(, 11660) +HANDLE_BAT(, 11661) +HANDLE_BAT(, 11662) +HANDLE_BAT(, 11663) +HANDLE_BAT(, 11664) +HANDLE_BAT(, 11665) +HANDLE_BAT(, 11666) +HANDLE_BAT(, 11667) +HANDLE_BAT(, 11668) +HANDLE_BAT(, 11669) +HANDLE_BAT(, 11670) +HANDLE_BAT(, 11671) +HANDLE_BAT(, 11672) +HANDLE_BAT(, 11673) +HANDLE_BAT(, 11674) +HANDLE_BAT(, 11675) +HANDLE_BAT(, 11676) +HANDLE_BAT(, 11677) +HANDLE_BAT(, 11678) +HANDLE_BAT(, 11679) +HANDLE_BAT(, 11680) +HANDLE_BAT(, 11681) +HANDLE_BAT(, 11682) +HANDLE_BAT(, 11683) +HANDLE_BAT(, 11684) +HANDLE_BAT(, 11685) +HANDLE_BAT(, 11686) +HANDLE_BAT(, 11687) +HANDLE_BAT(, 11688) +HANDLE_BAT(, 11689) +HANDLE_BAT(, 11690) +HANDLE_BAT(, 11691) +HANDLE_BAT(, 11692) +HANDLE_BAT(, 11693) +HANDLE_BAT(, 11694) +HANDLE_BAT(, 11695) +HANDLE_BAT(, 11696) +HANDLE_BAT(, 11697) +HANDLE_BAT(, 11698) +HANDLE_BAT(, 11699) +HANDLE_BAT(, 11700) +HANDLE_BAT(, 11701) +HANDLE_BAT(, 11702) +HANDLE_BAT(, 11703) +HANDLE_BAT(, 11704) +HANDLE_BAT(, 11705) +HANDLE_BAT(, 11706) +HANDLE_BAT(, 11707) +HANDLE_BAT(, 11708) +HANDLE_BAT(, 11709) +HANDLE_BAT(, 11710) +HANDLE_BAT(, 11711) +HANDLE_BAT(, 11712) +HANDLE_BAT(, 11713) +HANDLE_BAT(, 11714) +HANDLE_BAT(, 11715) +HANDLE_BAT(, 11716) +HANDLE_BAT(, 11717) +HANDLE_BAT(, 11718) +HANDLE_BAT(, 11719) +HANDLE_BAT(, 11720) +HANDLE_BAT(, 11721) +HANDLE_BAT(, 11722) +HANDLE_BAT(, 11723) +HANDLE_BAT(, 11724) +HANDLE_BAT(, 11725) +HANDLE_BAT(, 11726) +HANDLE_BAT(, 11727) +HANDLE_BAT(, 11728) +HANDLE_BAT(, 11729) +HANDLE_BAT(, 11730) +HANDLE_BAT(, 11731) +HANDLE_BAT(, 11732) +HANDLE_BAT(, 11733) +HANDLE_BAT(, 11734) +HANDLE_BAT(, 11735) +HANDLE_BAT(, 11736) +HANDLE_BAT(, 11737) +HANDLE_BAT(, 11738) +HANDLE_BAT(, 11739) +HANDLE_BAT(, 11740) +HANDLE_BAT(, 11741) +HANDLE_BAT(, 11742) +HANDLE_BAT(, 11743) +HANDLE_BAT(, 11744) +HANDLE_BAT(, 11745) +HANDLE_BAT(, 11746) +HANDLE_BAT(, 11747) +HANDLE_BAT(, 11748) +HANDLE_BAT(, 11749) +HANDLE_BAT(, 11750) +HANDLE_BAT(, 11751) +HANDLE_BAT(, 11752) +HANDLE_BAT(, 11753) +HANDLE_BAT(, 11754) +HANDLE_BAT(, 11755) +HANDLE_BAT(, 11756) +HANDLE_BAT(, 11757) +HANDLE_BAT(, 11758) +HANDLE_BAT(, 11759) +HANDLE_BAT(, 11760) +HANDLE_BAT(, 11761) +HANDLE_BAT(, 11762) +HANDLE_BAT(, 11763) +HANDLE_BAT(, 11764) +HANDLE_BAT(, 11765) +HANDLE_BAT(, 11766) +HANDLE_BAT(, 11767) +HANDLE_BAT(, 11768) +HANDLE_BAT(, 11769) +HANDLE_BAT(, 11770) +HANDLE_BAT(, 11771) +HANDLE_BAT(, 11772) +HANDLE_BAT(, 11773) +HANDLE_BAT(, 11774) +HANDLE_BAT(, 11775) +HANDLE_BAT(, 11776) +HANDLE_BAT(, 11777) +HANDLE_BAT(, 11778) +HANDLE_BAT(, 11779) +HANDLE_BAT(, 11780) +HANDLE_BAT(, 11781) +HANDLE_BAT(, 11782) +HANDLE_BAT(, 11783) +HANDLE_BAT(, 11784) +HANDLE_BAT(, 11785) +HANDLE_BAT(, 11786) +HANDLE_BAT(, 11787) +HANDLE_BAT(, 11788) +HANDLE_BAT(, 11789) +HANDLE_BAT(, 11790) +HANDLE_BAT(, 11791) +HANDLE_BAT(, 11792) +HANDLE_BAT(, 11793) +HANDLE_BAT(, 11794) +HANDLE_BAT(, 11795) +HANDLE_BAT(, 11796) +HANDLE_BAT(, 11797) +HANDLE_BAT(, 11798) +HANDLE_BAT(, 11799) +HANDLE_BAT(, 11800) +HANDLE_BAT(, 11801) +HANDLE_BAT(, 11802) +HANDLE_BAT(, 11803) +HANDLE_BAT(, 11804) +HANDLE_BAT(, 11805) +HANDLE_BAT(, 11806) +HANDLE_BAT(, 11807) +HANDLE_BAT(, 11808) +HANDLE_BAT(, 11809) +HANDLE_BAT(, 11810) +HANDLE_BAT(, 11811) +HANDLE_BAT(, 11812) +HANDLE_BAT(, 11813) +HANDLE_BAT(, 11814) +HANDLE_BAT(, 11815) +HANDLE_BAT(, 11816) +HANDLE_BAT(, 11817) +HANDLE_BAT(, 11818) +HANDLE_BAT(, 11819) +HANDLE_BAT(, 11820) +HANDLE_BAT(, 11821) +HANDLE_BAT(, 11822) +HANDLE_BAT(, 11823) +HANDLE_BAT(, 11824) +HANDLE_BAT(, 11825) +HANDLE_BAT(, 11826) +HANDLE_BAT(, 11827) +HANDLE_BAT(, 11828) +HANDLE_BAT(, 11829) +HANDLE_BAT(, 11830) +HANDLE_BAT(, 11831) +HANDLE_BAT(, 11832) +HANDLE_BAT(, 11833) +HANDLE_BAT(, 11834) +HANDLE_BAT(, 11835) +HANDLE_BAT(, 11836) +HANDLE_BAT(, 11837) +HANDLE_BAT(, 11838) +HANDLE_BAT(, 11839) +HANDLE_BAT(, 11840) +HANDLE_BAT(, 11841) +HANDLE_BAT(, 11842) +HANDLE_BAT(, 11843) +HANDLE_BAT(, 11844) +HANDLE_BAT(, 11845) +HANDLE_BAT(, 11846) +HANDLE_BAT(, 11847) +HANDLE_BAT(, 11848) +HANDLE_BAT(, 11849) +HANDLE_BAT(, 11850) +HANDLE_BAT(, 11851) +HANDLE_BAT(, 11852) +HANDLE_BAT(, 11853) +HANDLE_BAT(, 11854) +HANDLE_BAT(, 11855) +HANDLE_BAT(, 11856) +HANDLE_BAT(, 11857) +HANDLE_BAT(, 11858) +HANDLE_BAT(, 11859) +HANDLE_BAT(, 11860) +HANDLE_BAT(, 11861) +HANDLE_BAT(, 11862) +HANDLE_BAT(, 11863) +HANDLE_BAT(, 11864) +HANDLE_BAT(, 11865) +HANDLE_BAT(, 11866) +HANDLE_BAT(, 11867) +HANDLE_BAT(, 11868) +HANDLE_BAT(, 11869) +HANDLE_BAT(, 11870) +HANDLE_BAT(, 11871) +HANDLE_BAT(, 11872) +HANDLE_BAT(, 11873) +HANDLE_BAT(, 11874) +HANDLE_BAT(, 11875) +HANDLE_BAT(, 11876) +HANDLE_BAT(, 11877) +HANDLE_BAT(, 11878) +HANDLE_BAT(, 11879) +HANDLE_BAT(, 11880) +HANDLE_BAT(, 11881) +HANDLE_BAT(, 11882) +HANDLE_BAT(, 11883) +HANDLE_BAT(, 11884) +HANDLE_BAT(, 11885) +HANDLE_BAT(, 11886) +HANDLE_BAT(, 11887) +HANDLE_BAT(, 11888) +HANDLE_BAT(, 11889) +HANDLE_BAT(, 11890) +HANDLE_BAT(, 11891) +HANDLE_BAT(, 11892) +HANDLE_BAT(, 11893) +HANDLE_BAT(, 11894) +HANDLE_BAT(, 11895) +HANDLE_BAT(, 11896) +HANDLE_BAT(, 11897) +HANDLE_BAT(, 11898) +HANDLE_BAT(, 11899) +HANDLE_BAT(, 11900) +HANDLE_BAT(, 11901) +HANDLE_BAT(, 11902) +HANDLE_BAT(, 11903) +HANDLE_BAT(, 11904) +HANDLE_BAT(, 11905) +HANDLE_BAT(, 11906) +HANDLE_BAT(, 11907) +HANDLE_BAT(, 11908) +HANDLE_BAT(, 11909) +HANDLE_BAT(, 11910) +HANDLE_BAT(, 11911) +HANDLE_BAT(, 11912) +HANDLE_BAT(, 11913) +HANDLE_BAT(, 11914) +HANDLE_BAT(, 11915) +HANDLE_BAT(, 11916) +HANDLE_BAT(, 11917) +HANDLE_BAT(, 11918) +HANDLE_BAT(, 11919) +HANDLE_BAT(, 11920) +HANDLE_BAT(, 11921) +HANDLE_BAT(, 11922) +HANDLE_BAT(, 11923) +HANDLE_BAT(, 11924) +HANDLE_BAT(, 11925) +HANDLE_BAT(, 11926) +HANDLE_BAT(, 11927) +HANDLE_BAT(, 11928) +HANDLE_BAT(, 11929) +HANDLE_BAT(, 11930) +HANDLE_BAT(, 11931) +HANDLE_BAT(, 11932) +HANDLE_BAT(, 11933) +HANDLE_BAT(, 11934) +HANDLE_BAT(, 11935) +HANDLE_BAT(, 11936) +HANDLE_BAT(, 11937) +HANDLE_BAT(, 11938) +HANDLE_BAT(, 11939) +HANDLE_BAT(, 11940) +HANDLE_BAT(, 11941) +HANDLE_BAT(, 11942) +HANDLE_BAT(, 11943) +HANDLE_BAT(, 11944) +HANDLE_BAT(, 11945) +HANDLE_BAT(, 11946) +HANDLE_BAT(, 11947) +HANDLE_BAT(, 11948) +HANDLE_BAT(, 11949) +HANDLE_BAT(, 11950) +HANDLE_BAT(, 11951) +HANDLE_BAT(, 11952) +HANDLE_BAT(, 11953) +HANDLE_BAT(, 11954) +HANDLE_BAT(, 11955) +HANDLE_BAT(, 11956) +HANDLE_BAT(, 11957) +HANDLE_BAT(, 11958) +HANDLE_BAT(, 11959) +HANDLE_BAT(, 11960) +HANDLE_BAT(, 11961) +HANDLE_BAT(, 11962) +HANDLE_BAT(, 11963) +HANDLE_BAT(, 11964) +HANDLE_BAT(, 11965) +HANDLE_BAT(, 11966) +HANDLE_BAT(, 11967) +HANDLE_BAT(, 11968) +HANDLE_BAT(, 11969) +HANDLE_BAT(, 11970) +HANDLE_BAT(, 11971) +HANDLE_BAT(, 11972) +HANDLE_BAT(, 11973) +HANDLE_BAT(, 11974) +HANDLE_BAT(, 11975) +HANDLE_BAT(, 11976) +HANDLE_BAT(, 11977) +HANDLE_BAT(, 11978) +HANDLE_BAT(, 11979) +HANDLE_BAT(, 11980) +HANDLE_BAT(, 11981) +HANDLE_BAT(, 11982) +HANDLE_BAT(, 11983) +HANDLE_BAT(, 11984) +HANDLE_BAT(, 11985) +HANDLE_BAT(, 11986) +HANDLE_BAT(, 11987) +HANDLE_BAT(, 11988) +HANDLE_BAT(, 11989) +HANDLE_BAT(, 11990) +HANDLE_BAT(, 11991) +HANDLE_BAT(, 11992) +HANDLE_BAT(, 11993) +HANDLE_BAT(, 11994) +HANDLE_BAT(, 11995) +HANDLE_BAT(, 11996) +HANDLE_BAT(, 11997) +HANDLE_BAT(, 11998) +HANDLE_BAT(, 11999) +HANDLE_BAT(, 12000) +HANDLE_BAT(, 12001) +HANDLE_BAT(, 12002) +HANDLE_BAT(, 12003) +HANDLE_BAT(, 12004) +HANDLE_BAT(, 12005) +HANDLE_BAT(, 12006) +HANDLE_BAT(, 12007) +HANDLE_BAT(, 12008) +HANDLE_BAT(, 12009) +HANDLE_BAT(, 12010) +HANDLE_BAT(, 12011) +HANDLE_BAT(, 12012) +HANDLE_BAT(, 12013) +HANDLE_BAT(, 12014) +HANDLE_BAT(, 12015) +HANDLE_BAT(, 12016) +HANDLE_BAT(, 12017) +HANDLE_BAT(, 12018) +HANDLE_BAT(, 12019) +HANDLE_BAT(, 12020) +HANDLE_BAT(, 12021) +HANDLE_BAT(, 12022) +HANDLE_BAT(, 12023) +HANDLE_BAT(, 12024) +HANDLE_BAT(, 12025) +HANDLE_BAT(, 12026) +HANDLE_BAT(, 12027) +HANDLE_BAT(, 12028) +HANDLE_BAT(, 12029) +HANDLE_BAT(, 12030) +HANDLE_BAT(, 12031) +HANDLE_BAT(, 12032) +HANDLE_BAT(, 12033) +HANDLE_BAT(, 12034) +HANDLE_BAT(, 12035) +HANDLE_BAT(, 12036) +HANDLE_BAT(, 12037) +HANDLE_BAT(, 12038) +HANDLE_BAT(, 12039) +HANDLE_BAT(, 12040) +HANDLE_BAT(, 12041) +HANDLE_BAT(, 12042) +HANDLE_BAT(, 12043) +HANDLE_BAT(, 12044) +HANDLE_BAT(, 12045) +HANDLE_BAT(, 12046) +HANDLE_BAT(, 12047) +HANDLE_BAT(, 12048) +HANDLE_BAT(, 12049) +HANDLE_BAT(, 12050) +HANDLE_BAT(, 12051) +HANDLE_BAT(, 12052) +HANDLE_BAT(, 12053) +HANDLE_BAT(, 12054) +HANDLE_BAT(, 12055) +HANDLE_BAT(, 12056) +HANDLE_BAT(, 12057) +HANDLE_BAT(, 12058) +HANDLE_BAT(, 12059) +HANDLE_BAT(, 12060) +HANDLE_BAT(, 12061) +HANDLE_BAT(, 12062) +HANDLE_BAT(, 12063) +HANDLE_BAT(, 12064) +HANDLE_BAT(, 12065) +HANDLE_BAT(, 12066) +HANDLE_BAT(, 12067) +HANDLE_BAT(, 12068) +HANDLE_BAT(, 12069) +HANDLE_BAT(, 12070) +HANDLE_BAT(, 12071) +HANDLE_BAT(, 12072) +HANDLE_BAT(, 12073) +HANDLE_BAT(, 12074) +HANDLE_BAT(, 12075) +HANDLE_BAT(, 12076) +HANDLE_BAT(, 12077) +HANDLE_BAT(, 12078) +HANDLE_BAT(, 12079) +HANDLE_BAT(, 12080) +HANDLE_BAT(, 12081) +HANDLE_BAT(, 12082) +HANDLE_BAT(, 12083) +HANDLE_BAT(, 12084) +HANDLE_BAT(, 12085) +HANDLE_BAT(, 12086) +HANDLE_BAT(, 12087) +HANDLE_BAT(, 12088) +HANDLE_BAT(, 12089) +HANDLE_BAT(, 12090) +HANDLE_BAT(, 12091) +HANDLE_BAT(, 12092) +HANDLE_BAT(, 12093) +HANDLE_BAT(, 12094) +HANDLE_BAT(, 12095) +HANDLE_BAT(, 12096) +HANDLE_BAT(, 12097) +HANDLE_BAT(, 12098) +HANDLE_BAT(, 12099) +HANDLE_BAT(, 12100) +HANDLE_BAT(, 12101) +HANDLE_BAT(, 12102) +HANDLE_BAT(, 12103) +HANDLE_BAT(, 12104) +HANDLE_BAT(, 12105) +HANDLE_BAT(, 12106) +HANDLE_BAT(, 12107) +HANDLE_BAT(, 12108) +HANDLE_BAT(, 12109) +HANDLE_BAT(, 12110) +HANDLE_BAT(, 12111) +HANDLE_BAT(, 12112) +HANDLE_BAT(, 12113) +HANDLE_BAT(, 12114) +HANDLE_BAT(, 12115) +HANDLE_BAT(, 12116) +HANDLE_BAT(, 12117) +HANDLE_BAT(, 12118) +HANDLE_BAT(, 12119) +HANDLE_BAT(, 12120) +HANDLE_BAT(, 12121) +HANDLE_BAT(, 12122) +HANDLE_BAT(, 12123) +HANDLE_BAT(, 12124) +HANDLE_BAT(, 12125) +HANDLE_BAT(, 12126) +HANDLE_BAT(, 12127) +HANDLE_BAT(, 12128) +HANDLE_BAT(, 12129) +HANDLE_BAT(, 12130) +HANDLE_BAT(, 12131) +HANDLE_BAT(, 12132) +HANDLE_BAT(, 12133) +HANDLE_BAT(, 12134) +HANDLE_BAT(, 12135) +HANDLE_BAT(, 12136) +HANDLE_BAT(, 12137) +HANDLE_BAT(, 12138) +HANDLE_BAT(, 12139) +HANDLE_BAT(, 12140) +HANDLE_BAT(, 12141) +HANDLE_BAT(, 12142) +HANDLE_BAT(, 12143) +HANDLE_BAT(, 12144) +HANDLE_BAT(, 12145) +HANDLE_BAT(, 12146) +HANDLE_BAT(, 12147) +HANDLE_BAT(, 12148) +HANDLE_BAT(, 12149) +HANDLE_BAT(, 12150) +HANDLE_BAT(, 12151) +HANDLE_BAT(, 12152) +HANDLE_BAT(, 12153) +HANDLE_BAT(, 12154) +HANDLE_BAT(, 12155) +HANDLE_BAT(, 12156) +HANDLE_BAT(, 12157) +HANDLE_BAT(, 12158) +HANDLE_BAT(, 12159) +HANDLE_BAT(, 12160) +HANDLE_BAT(, 12161) +HANDLE_BAT(, 12162) +HANDLE_BAT(, 12163) +HANDLE_BAT(, 12164) +HANDLE_BAT(, 12165) +HANDLE_BAT(, 12166) +HANDLE_BAT(, 12167) +HANDLE_BAT(, 12168) +HANDLE_BAT(, 12169) +HANDLE_BAT(, 12170) +HANDLE_BAT(, 12171) +HANDLE_BAT(, 12172) +HANDLE_BAT(, 12173) +HANDLE_BAT(, 12174) +HANDLE_BAT(, 12175) +HANDLE_BAT(, 12176) +HANDLE_BAT(, 12177) +HANDLE_BAT(, 12178) +HANDLE_BAT(, 12179) +HANDLE_BAT(, 12180) +HANDLE_BAT(, 12181) +HANDLE_BAT(, 12182) +HANDLE_BAT(, 12183) +HANDLE_BAT(, 12184) +HANDLE_BAT(, 12185) +HANDLE_BAT(, 12186) +HANDLE_BAT(, 12187) +HANDLE_BAT(, 12188) +HANDLE_BAT(, 12189) +HANDLE_BAT(, 12190) +HANDLE_BAT(, 12191) +HANDLE_BAT(, 12192) +HANDLE_BAT(, 12193) +HANDLE_BAT(, 12194) +HANDLE_BAT(, 12195) +HANDLE_BAT(, 12196) +HANDLE_BAT(, 12197) +HANDLE_BAT(, 12198) +HANDLE_BAT(, 12199) +HANDLE_BAT(, 12200) +HANDLE_BAT(, 12201) +HANDLE_BAT(, 12202) +HANDLE_BAT(, 12203) +HANDLE_BAT(, 12204) +HANDLE_BAT(, 12205) +HANDLE_BAT(, 12206) +HANDLE_BAT(, 12207) +HANDLE_BAT(, 12208) +HANDLE_BAT(, 12209) +HANDLE_BAT(, 12210) +HANDLE_BAT(, 12211) +HANDLE_BAT(, 12212) +HANDLE_BAT(, 12213) +HANDLE_BAT(, 12214) +HANDLE_BAT(, 12215) +HANDLE_BAT(, 12216) +HANDLE_BAT(, 12217) +HANDLE_BAT(, 12218) +HANDLE_BAT(, 12219) +HANDLE_BAT(, 12220) +HANDLE_BAT(, 12221) +HANDLE_BAT(, 12222) +HANDLE_BAT(, 12223) +HANDLE_BAT(, 12224) +HANDLE_BAT(, 12225) +HANDLE_BAT(, 12226) +HANDLE_BAT(, 12227) +HANDLE_BAT(, 12228) +HANDLE_BAT(, 12229) +HANDLE_BAT(, 12230) +HANDLE_BAT(, 12231) +HANDLE_BAT(, 12232) +HANDLE_BAT(, 12233) +HANDLE_BAT(, 12234) +HANDLE_BAT(, 12235) +HANDLE_BAT(, 12236) +HANDLE_BAT(, 12237) +HANDLE_BAT(, 12238) +HANDLE_BAT(, 12239) +HANDLE_BAT(, 12240) +HANDLE_BAT(, 12241) +HANDLE_BAT(, 12242) +HANDLE_BAT(, 12243) +HANDLE_BAT(, 12244) +HANDLE_BAT(, 12245) +HANDLE_BAT(, 12246) +HANDLE_BAT(, 12247) +HANDLE_BAT(, 12248) +HANDLE_BAT(, 12249) +HANDLE_BAT(, 12250) +HANDLE_BAT(, 12251) +HANDLE_BAT(, 12252) +HANDLE_BAT(, 12253) +HANDLE_BAT(, 12254) +HANDLE_BAT(, 12255) +HANDLE_BAT(, 12256) +HANDLE_BAT(, 12257) +HANDLE_BAT(, 12258) +HANDLE_BAT(, 12259) +HANDLE_BAT(, 12260) +HANDLE_BAT(, 12261) +HANDLE_BAT(, 12262) +HANDLE_BAT(, 12263) +HANDLE_BAT(, 12264) +HANDLE_BAT(, 12265) +HANDLE_BAT(, 12266) +HANDLE_BAT(, 12267) +HANDLE_BAT(, 12268) +HANDLE_BAT(, 12269) +HANDLE_BAT(, 12270) +HANDLE_BAT(, 12271) +HANDLE_BAT(, 12272) +HANDLE_BAT(, 12273) +HANDLE_BAT(, 12274) +HANDLE_BAT(, 12275) +HANDLE_BAT(, 12276) +HANDLE_BAT(, 12277) +HANDLE_BAT(, 12278) +HANDLE_BAT(, 12279) +HANDLE_BAT(, 12280) +HANDLE_BAT(, 12281) +HANDLE_BAT(, 12282) +HANDLE_BAT(, 12283) +HANDLE_BAT(, 12284) +HANDLE_BAT(, 12285) +HANDLE_BAT(, 12286) +HANDLE_BAT(, 12287) +HANDLE_BAT(, 12288) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 11265) +HANDLE_BAT(APINT_TYPE_PREFIX, 11266) +HANDLE_BAT(APINT_TYPE_PREFIX, 11267) +HANDLE_BAT(APINT_TYPE_PREFIX, 11268) +HANDLE_BAT(APINT_TYPE_PREFIX, 11269) +HANDLE_BAT(APINT_TYPE_PREFIX, 11270) +HANDLE_BAT(APINT_TYPE_PREFIX, 11271) +HANDLE_BAT(APINT_TYPE_PREFIX, 11272) +HANDLE_BAT(APINT_TYPE_PREFIX, 11273) +HANDLE_BAT(APINT_TYPE_PREFIX, 11274) +HANDLE_BAT(APINT_TYPE_PREFIX, 11275) +HANDLE_BAT(APINT_TYPE_PREFIX, 11276) +HANDLE_BAT(APINT_TYPE_PREFIX, 11277) +HANDLE_BAT(APINT_TYPE_PREFIX, 11278) +HANDLE_BAT(APINT_TYPE_PREFIX, 11279) +HANDLE_BAT(APINT_TYPE_PREFIX, 11280) +HANDLE_BAT(APINT_TYPE_PREFIX, 11281) +HANDLE_BAT(APINT_TYPE_PREFIX, 11282) +HANDLE_BAT(APINT_TYPE_PREFIX, 11283) +HANDLE_BAT(APINT_TYPE_PREFIX, 11284) +HANDLE_BAT(APINT_TYPE_PREFIX, 11285) +HANDLE_BAT(APINT_TYPE_PREFIX, 11286) +HANDLE_BAT(APINT_TYPE_PREFIX, 11287) +HANDLE_BAT(APINT_TYPE_PREFIX, 11288) +HANDLE_BAT(APINT_TYPE_PREFIX, 11289) +HANDLE_BAT(APINT_TYPE_PREFIX, 11290) +HANDLE_BAT(APINT_TYPE_PREFIX, 11291) +HANDLE_BAT(APINT_TYPE_PREFIX, 11292) +HANDLE_BAT(APINT_TYPE_PREFIX, 11293) +HANDLE_BAT(APINT_TYPE_PREFIX, 11294) +HANDLE_BAT(APINT_TYPE_PREFIX, 11295) +HANDLE_BAT(APINT_TYPE_PREFIX, 11296) +HANDLE_BAT(APINT_TYPE_PREFIX, 11297) +HANDLE_BAT(APINT_TYPE_PREFIX, 11298) +HANDLE_BAT(APINT_TYPE_PREFIX, 11299) +HANDLE_BAT(APINT_TYPE_PREFIX, 11300) +HANDLE_BAT(APINT_TYPE_PREFIX, 11301) +HANDLE_BAT(APINT_TYPE_PREFIX, 11302) +HANDLE_BAT(APINT_TYPE_PREFIX, 11303) +HANDLE_BAT(APINT_TYPE_PREFIX, 11304) +HANDLE_BAT(APINT_TYPE_PREFIX, 11305) +HANDLE_BAT(APINT_TYPE_PREFIX, 11306) +HANDLE_BAT(APINT_TYPE_PREFIX, 11307) +HANDLE_BAT(APINT_TYPE_PREFIX, 11308) +HANDLE_BAT(APINT_TYPE_PREFIX, 11309) +HANDLE_BAT(APINT_TYPE_PREFIX, 11310) +HANDLE_BAT(APINT_TYPE_PREFIX, 11311) +HANDLE_BAT(APINT_TYPE_PREFIX, 11312) +HANDLE_BAT(APINT_TYPE_PREFIX, 11313) +HANDLE_BAT(APINT_TYPE_PREFIX, 11314) +HANDLE_BAT(APINT_TYPE_PREFIX, 11315) +HANDLE_BAT(APINT_TYPE_PREFIX, 11316) +HANDLE_BAT(APINT_TYPE_PREFIX, 11317) +HANDLE_BAT(APINT_TYPE_PREFIX, 11318) +HANDLE_BAT(APINT_TYPE_PREFIX, 11319) +HANDLE_BAT(APINT_TYPE_PREFIX, 11320) +HANDLE_BAT(APINT_TYPE_PREFIX, 11321) +HANDLE_BAT(APINT_TYPE_PREFIX, 11322) +HANDLE_BAT(APINT_TYPE_PREFIX, 11323) +HANDLE_BAT(APINT_TYPE_PREFIX, 11324) +HANDLE_BAT(APINT_TYPE_PREFIX, 11325) +HANDLE_BAT(APINT_TYPE_PREFIX, 11326) +HANDLE_BAT(APINT_TYPE_PREFIX, 11327) +HANDLE_BAT(APINT_TYPE_PREFIX, 11328) +HANDLE_BAT(APINT_TYPE_PREFIX, 11329) +HANDLE_BAT(APINT_TYPE_PREFIX, 11330) +HANDLE_BAT(APINT_TYPE_PREFIX, 11331) +HANDLE_BAT(APINT_TYPE_PREFIX, 11332) +HANDLE_BAT(APINT_TYPE_PREFIX, 11333) +HANDLE_BAT(APINT_TYPE_PREFIX, 11334) +HANDLE_BAT(APINT_TYPE_PREFIX, 11335) +HANDLE_BAT(APINT_TYPE_PREFIX, 11336) +HANDLE_BAT(APINT_TYPE_PREFIX, 11337) +HANDLE_BAT(APINT_TYPE_PREFIX, 11338) +HANDLE_BAT(APINT_TYPE_PREFIX, 11339) +HANDLE_BAT(APINT_TYPE_PREFIX, 11340) +HANDLE_BAT(APINT_TYPE_PREFIX, 11341) +HANDLE_BAT(APINT_TYPE_PREFIX, 11342) +HANDLE_BAT(APINT_TYPE_PREFIX, 11343) +HANDLE_BAT(APINT_TYPE_PREFIX, 11344) +HANDLE_BAT(APINT_TYPE_PREFIX, 11345) +HANDLE_BAT(APINT_TYPE_PREFIX, 11346) +HANDLE_BAT(APINT_TYPE_PREFIX, 11347) +HANDLE_BAT(APINT_TYPE_PREFIX, 11348) +HANDLE_BAT(APINT_TYPE_PREFIX, 11349) +HANDLE_BAT(APINT_TYPE_PREFIX, 11350) +HANDLE_BAT(APINT_TYPE_PREFIX, 11351) +HANDLE_BAT(APINT_TYPE_PREFIX, 11352) +HANDLE_BAT(APINT_TYPE_PREFIX, 11353) +HANDLE_BAT(APINT_TYPE_PREFIX, 11354) +HANDLE_BAT(APINT_TYPE_PREFIX, 11355) +HANDLE_BAT(APINT_TYPE_PREFIX, 11356) +HANDLE_BAT(APINT_TYPE_PREFIX, 11357) +HANDLE_BAT(APINT_TYPE_PREFIX, 11358) +HANDLE_BAT(APINT_TYPE_PREFIX, 11359) +HANDLE_BAT(APINT_TYPE_PREFIX, 11360) +HANDLE_BAT(APINT_TYPE_PREFIX, 11361) +HANDLE_BAT(APINT_TYPE_PREFIX, 11362) +HANDLE_BAT(APINT_TYPE_PREFIX, 11363) +HANDLE_BAT(APINT_TYPE_PREFIX, 11364) +HANDLE_BAT(APINT_TYPE_PREFIX, 11365) +HANDLE_BAT(APINT_TYPE_PREFIX, 11366) +HANDLE_BAT(APINT_TYPE_PREFIX, 11367) +HANDLE_BAT(APINT_TYPE_PREFIX, 11368) +HANDLE_BAT(APINT_TYPE_PREFIX, 11369) +HANDLE_BAT(APINT_TYPE_PREFIX, 11370) +HANDLE_BAT(APINT_TYPE_PREFIX, 11371) +HANDLE_BAT(APINT_TYPE_PREFIX, 11372) +HANDLE_BAT(APINT_TYPE_PREFIX, 11373) +HANDLE_BAT(APINT_TYPE_PREFIX, 11374) +HANDLE_BAT(APINT_TYPE_PREFIX, 11375) +HANDLE_BAT(APINT_TYPE_PREFIX, 11376) +HANDLE_BAT(APINT_TYPE_PREFIX, 11377) +HANDLE_BAT(APINT_TYPE_PREFIX, 11378) +HANDLE_BAT(APINT_TYPE_PREFIX, 11379) +HANDLE_BAT(APINT_TYPE_PREFIX, 11380) +HANDLE_BAT(APINT_TYPE_PREFIX, 11381) +HANDLE_BAT(APINT_TYPE_PREFIX, 11382) +HANDLE_BAT(APINT_TYPE_PREFIX, 11383) +HANDLE_BAT(APINT_TYPE_PREFIX, 11384) +HANDLE_BAT(APINT_TYPE_PREFIX, 11385) +HANDLE_BAT(APINT_TYPE_PREFIX, 11386) +HANDLE_BAT(APINT_TYPE_PREFIX, 11387) +HANDLE_BAT(APINT_TYPE_PREFIX, 11388) +HANDLE_BAT(APINT_TYPE_PREFIX, 11389) +HANDLE_BAT(APINT_TYPE_PREFIX, 11390) +HANDLE_BAT(APINT_TYPE_PREFIX, 11391) +HANDLE_BAT(APINT_TYPE_PREFIX, 11392) +HANDLE_BAT(APINT_TYPE_PREFIX, 11393) +HANDLE_BAT(APINT_TYPE_PREFIX, 11394) +HANDLE_BAT(APINT_TYPE_PREFIX, 11395) +HANDLE_BAT(APINT_TYPE_PREFIX, 11396) +HANDLE_BAT(APINT_TYPE_PREFIX, 11397) +HANDLE_BAT(APINT_TYPE_PREFIX, 11398) +HANDLE_BAT(APINT_TYPE_PREFIX, 11399) +HANDLE_BAT(APINT_TYPE_PREFIX, 11400) +HANDLE_BAT(APINT_TYPE_PREFIX, 11401) +HANDLE_BAT(APINT_TYPE_PREFIX, 11402) +HANDLE_BAT(APINT_TYPE_PREFIX, 11403) +HANDLE_BAT(APINT_TYPE_PREFIX, 11404) +HANDLE_BAT(APINT_TYPE_PREFIX, 11405) +HANDLE_BAT(APINT_TYPE_PREFIX, 11406) +HANDLE_BAT(APINT_TYPE_PREFIX, 11407) +HANDLE_BAT(APINT_TYPE_PREFIX, 11408) +HANDLE_BAT(APINT_TYPE_PREFIX, 11409) +HANDLE_BAT(APINT_TYPE_PREFIX, 11410) +HANDLE_BAT(APINT_TYPE_PREFIX, 11411) +HANDLE_BAT(APINT_TYPE_PREFIX, 11412) +HANDLE_BAT(APINT_TYPE_PREFIX, 11413) +HANDLE_BAT(APINT_TYPE_PREFIX, 11414) +HANDLE_BAT(APINT_TYPE_PREFIX, 11415) +HANDLE_BAT(APINT_TYPE_PREFIX, 11416) +HANDLE_BAT(APINT_TYPE_PREFIX, 11417) +HANDLE_BAT(APINT_TYPE_PREFIX, 11418) +HANDLE_BAT(APINT_TYPE_PREFIX, 11419) +HANDLE_BAT(APINT_TYPE_PREFIX, 11420) +HANDLE_BAT(APINT_TYPE_PREFIX, 11421) +HANDLE_BAT(APINT_TYPE_PREFIX, 11422) +HANDLE_BAT(APINT_TYPE_PREFIX, 11423) +HANDLE_BAT(APINT_TYPE_PREFIX, 11424) +HANDLE_BAT(APINT_TYPE_PREFIX, 11425) +HANDLE_BAT(APINT_TYPE_PREFIX, 11426) +HANDLE_BAT(APINT_TYPE_PREFIX, 11427) +HANDLE_BAT(APINT_TYPE_PREFIX, 11428) +HANDLE_BAT(APINT_TYPE_PREFIX, 11429) +HANDLE_BAT(APINT_TYPE_PREFIX, 11430) +HANDLE_BAT(APINT_TYPE_PREFIX, 11431) +HANDLE_BAT(APINT_TYPE_PREFIX, 11432) +HANDLE_BAT(APINT_TYPE_PREFIX, 11433) +HANDLE_BAT(APINT_TYPE_PREFIX, 11434) +HANDLE_BAT(APINT_TYPE_PREFIX, 11435) +HANDLE_BAT(APINT_TYPE_PREFIX, 11436) +HANDLE_BAT(APINT_TYPE_PREFIX, 11437) +HANDLE_BAT(APINT_TYPE_PREFIX, 11438) +HANDLE_BAT(APINT_TYPE_PREFIX, 11439) +HANDLE_BAT(APINT_TYPE_PREFIX, 11440) +HANDLE_BAT(APINT_TYPE_PREFIX, 11441) +HANDLE_BAT(APINT_TYPE_PREFIX, 11442) +HANDLE_BAT(APINT_TYPE_PREFIX, 11443) +HANDLE_BAT(APINT_TYPE_PREFIX, 11444) +HANDLE_BAT(APINT_TYPE_PREFIX, 11445) +HANDLE_BAT(APINT_TYPE_PREFIX, 11446) +HANDLE_BAT(APINT_TYPE_PREFIX, 11447) +HANDLE_BAT(APINT_TYPE_PREFIX, 11448) +HANDLE_BAT(APINT_TYPE_PREFIX, 11449) +HANDLE_BAT(APINT_TYPE_PREFIX, 11450) +HANDLE_BAT(APINT_TYPE_PREFIX, 11451) +HANDLE_BAT(APINT_TYPE_PREFIX, 11452) +HANDLE_BAT(APINT_TYPE_PREFIX, 11453) +HANDLE_BAT(APINT_TYPE_PREFIX, 11454) +HANDLE_BAT(APINT_TYPE_PREFIX, 11455) +HANDLE_BAT(APINT_TYPE_PREFIX, 11456) +HANDLE_BAT(APINT_TYPE_PREFIX, 11457) +HANDLE_BAT(APINT_TYPE_PREFIX, 11458) +HANDLE_BAT(APINT_TYPE_PREFIX, 11459) +HANDLE_BAT(APINT_TYPE_PREFIX, 11460) +HANDLE_BAT(APINT_TYPE_PREFIX, 11461) +HANDLE_BAT(APINT_TYPE_PREFIX, 11462) +HANDLE_BAT(APINT_TYPE_PREFIX, 11463) +HANDLE_BAT(APINT_TYPE_PREFIX, 11464) +HANDLE_BAT(APINT_TYPE_PREFIX, 11465) +HANDLE_BAT(APINT_TYPE_PREFIX, 11466) +HANDLE_BAT(APINT_TYPE_PREFIX, 11467) +HANDLE_BAT(APINT_TYPE_PREFIX, 11468) +HANDLE_BAT(APINT_TYPE_PREFIX, 11469) +HANDLE_BAT(APINT_TYPE_PREFIX, 11470) +HANDLE_BAT(APINT_TYPE_PREFIX, 11471) +HANDLE_BAT(APINT_TYPE_PREFIX, 11472) +HANDLE_BAT(APINT_TYPE_PREFIX, 11473) +HANDLE_BAT(APINT_TYPE_PREFIX, 11474) +HANDLE_BAT(APINT_TYPE_PREFIX, 11475) +HANDLE_BAT(APINT_TYPE_PREFIX, 11476) +HANDLE_BAT(APINT_TYPE_PREFIX, 11477) +HANDLE_BAT(APINT_TYPE_PREFIX, 11478) +HANDLE_BAT(APINT_TYPE_PREFIX, 11479) +HANDLE_BAT(APINT_TYPE_PREFIX, 11480) +HANDLE_BAT(APINT_TYPE_PREFIX, 11481) +HANDLE_BAT(APINT_TYPE_PREFIX, 11482) +HANDLE_BAT(APINT_TYPE_PREFIX, 11483) +HANDLE_BAT(APINT_TYPE_PREFIX, 11484) +HANDLE_BAT(APINT_TYPE_PREFIX, 11485) +HANDLE_BAT(APINT_TYPE_PREFIX, 11486) +HANDLE_BAT(APINT_TYPE_PREFIX, 11487) +HANDLE_BAT(APINT_TYPE_PREFIX, 11488) +HANDLE_BAT(APINT_TYPE_PREFIX, 11489) +HANDLE_BAT(APINT_TYPE_PREFIX, 11490) +HANDLE_BAT(APINT_TYPE_PREFIX, 11491) +HANDLE_BAT(APINT_TYPE_PREFIX, 11492) +HANDLE_BAT(APINT_TYPE_PREFIX, 11493) +HANDLE_BAT(APINT_TYPE_PREFIX, 11494) +HANDLE_BAT(APINT_TYPE_PREFIX, 11495) +HANDLE_BAT(APINT_TYPE_PREFIX, 11496) +HANDLE_BAT(APINT_TYPE_PREFIX, 11497) +HANDLE_BAT(APINT_TYPE_PREFIX, 11498) +HANDLE_BAT(APINT_TYPE_PREFIX, 11499) +HANDLE_BAT(APINT_TYPE_PREFIX, 11500) +HANDLE_BAT(APINT_TYPE_PREFIX, 11501) +HANDLE_BAT(APINT_TYPE_PREFIX, 11502) +HANDLE_BAT(APINT_TYPE_PREFIX, 11503) +HANDLE_BAT(APINT_TYPE_PREFIX, 11504) +HANDLE_BAT(APINT_TYPE_PREFIX, 11505) +HANDLE_BAT(APINT_TYPE_PREFIX, 11506) +HANDLE_BAT(APINT_TYPE_PREFIX, 11507) +HANDLE_BAT(APINT_TYPE_PREFIX, 11508) +HANDLE_BAT(APINT_TYPE_PREFIX, 11509) +HANDLE_BAT(APINT_TYPE_PREFIX, 11510) +HANDLE_BAT(APINT_TYPE_PREFIX, 11511) +HANDLE_BAT(APINT_TYPE_PREFIX, 11512) +HANDLE_BAT(APINT_TYPE_PREFIX, 11513) +HANDLE_BAT(APINT_TYPE_PREFIX, 11514) +HANDLE_BAT(APINT_TYPE_PREFIX, 11515) +HANDLE_BAT(APINT_TYPE_PREFIX, 11516) +HANDLE_BAT(APINT_TYPE_PREFIX, 11517) +HANDLE_BAT(APINT_TYPE_PREFIX, 11518) +HANDLE_BAT(APINT_TYPE_PREFIX, 11519) +HANDLE_BAT(APINT_TYPE_PREFIX, 11520) +HANDLE_BAT(APINT_TYPE_PREFIX, 11521) +HANDLE_BAT(APINT_TYPE_PREFIX, 11522) +HANDLE_BAT(APINT_TYPE_PREFIX, 11523) +HANDLE_BAT(APINT_TYPE_PREFIX, 11524) +HANDLE_BAT(APINT_TYPE_PREFIX, 11525) +HANDLE_BAT(APINT_TYPE_PREFIX, 11526) +HANDLE_BAT(APINT_TYPE_PREFIX, 11527) +HANDLE_BAT(APINT_TYPE_PREFIX, 11528) +HANDLE_BAT(APINT_TYPE_PREFIX, 11529) +HANDLE_BAT(APINT_TYPE_PREFIX, 11530) +HANDLE_BAT(APINT_TYPE_PREFIX, 11531) +HANDLE_BAT(APINT_TYPE_PREFIX, 11532) +HANDLE_BAT(APINT_TYPE_PREFIX, 11533) +HANDLE_BAT(APINT_TYPE_PREFIX, 11534) +HANDLE_BAT(APINT_TYPE_PREFIX, 11535) +HANDLE_BAT(APINT_TYPE_PREFIX, 11536) +HANDLE_BAT(APINT_TYPE_PREFIX, 11537) +HANDLE_BAT(APINT_TYPE_PREFIX, 11538) +HANDLE_BAT(APINT_TYPE_PREFIX, 11539) +HANDLE_BAT(APINT_TYPE_PREFIX, 11540) +HANDLE_BAT(APINT_TYPE_PREFIX, 11541) +HANDLE_BAT(APINT_TYPE_PREFIX, 11542) +HANDLE_BAT(APINT_TYPE_PREFIX, 11543) +HANDLE_BAT(APINT_TYPE_PREFIX, 11544) +HANDLE_BAT(APINT_TYPE_PREFIX, 11545) +HANDLE_BAT(APINT_TYPE_PREFIX, 11546) +HANDLE_BAT(APINT_TYPE_PREFIX, 11547) +HANDLE_BAT(APINT_TYPE_PREFIX, 11548) +HANDLE_BAT(APINT_TYPE_PREFIX, 11549) +HANDLE_BAT(APINT_TYPE_PREFIX, 11550) +HANDLE_BAT(APINT_TYPE_PREFIX, 11551) +HANDLE_BAT(APINT_TYPE_PREFIX, 11552) +HANDLE_BAT(APINT_TYPE_PREFIX, 11553) +HANDLE_BAT(APINT_TYPE_PREFIX, 11554) +HANDLE_BAT(APINT_TYPE_PREFIX, 11555) +HANDLE_BAT(APINT_TYPE_PREFIX, 11556) +HANDLE_BAT(APINT_TYPE_PREFIX, 11557) +HANDLE_BAT(APINT_TYPE_PREFIX, 11558) +HANDLE_BAT(APINT_TYPE_PREFIX, 11559) +HANDLE_BAT(APINT_TYPE_PREFIX, 11560) +HANDLE_BAT(APINT_TYPE_PREFIX, 11561) +HANDLE_BAT(APINT_TYPE_PREFIX, 11562) +HANDLE_BAT(APINT_TYPE_PREFIX, 11563) +HANDLE_BAT(APINT_TYPE_PREFIX, 11564) +HANDLE_BAT(APINT_TYPE_PREFIX, 11565) +HANDLE_BAT(APINT_TYPE_PREFIX, 11566) +HANDLE_BAT(APINT_TYPE_PREFIX, 11567) +HANDLE_BAT(APINT_TYPE_PREFIX, 11568) +HANDLE_BAT(APINT_TYPE_PREFIX, 11569) +HANDLE_BAT(APINT_TYPE_PREFIX, 11570) +HANDLE_BAT(APINT_TYPE_PREFIX, 11571) +HANDLE_BAT(APINT_TYPE_PREFIX, 11572) +HANDLE_BAT(APINT_TYPE_PREFIX, 11573) +HANDLE_BAT(APINT_TYPE_PREFIX, 11574) +HANDLE_BAT(APINT_TYPE_PREFIX, 11575) +HANDLE_BAT(APINT_TYPE_PREFIX, 11576) +HANDLE_BAT(APINT_TYPE_PREFIX, 11577) +HANDLE_BAT(APINT_TYPE_PREFIX, 11578) +HANDLE_BAT(APINT_TYPE_PREFIX, 11579) +HANDLE_BAT(APINT_TYPE_PREFIX, 11580) +HANDLE_BAT(APINT_TYPE_PREFIX, 11581) +HANDLE_BAT(APINT_TYPE_PREFIX, 11582) +HANDLE_BAT(APINT_TYPE_PREFIX, 11583) +HANDLE_BAT(APINT_TYPE_PREFIX, 11584) +HANDLE_BAT(APINT_TYPE_PREFIX, 11585) +HANDLE_BAT(APINT_TYPE_PREFIX, 11586) +HANDLE_BAT(APINT_TYPE_PREFIX, 11587) +HANDLE_BAT(APINT_TYPE_PREFIX, 11588) +HANDLE_BAT(APINT_TYPE_PREFIX, 11589) +HANDLE_BAT(APINT_TYPE_PREFIX, 11590) +HANDLE_BAT(APINT_TYPE_PREFIX, 11591) +HANDLE_BAT(APINT_TYPE_PREFIX, 11592) +HANDLE_BAT(APINT_TYPE_PREFIX, 11593) +HANDLE_BAT(APINT_TYPE_PREFIX, 11594) +HANDLE_BAT(APINT_TYPE_PREFIX, 11595) +HANDLE_BAT(APINT_TYPE_PREFIX, 11596) +HANDLE_BAT(APINT_TYPE_PREFIX, 11597) +HANDLE_BAT(APINT_TYPE_PREFIX, 11598) +HANDLE_BAT(APINT_TYPE_PREFIX, 11599) +HANDLE_BAT(APINT_TYPE_PREFIX, 11600) +HANDLE_BAT(APINT_TYPE_PREFIX, 11601) +HANDLE_BAT(APINT_TYPE_PREFIX, 11602) +HANDLE_BAT(APINT_TYPE_PREFIX, 11603) +HANDLE_BAT(APINT_TYPE_PREFIX, 11604) +HANDLE_BAT(APINT_TYPE_PREFIX, 11605) +HANDLE_BAT(APINT_TYPE_PREFIX, 11606) +HANDLE_BAT(APINT_TYPE_PREFIX, 11607) +HANDLE_BAT(APINT_TYPE_PREFIX, 11608) +HANDLE_BAT(APINT_TYPE_PREFIX, 11609) +HANDLE_BAT(APINT_TYPE_PREFIX, 11610) +HANDLE_BAT(APINT_TYPE_PREFIX, 11611) +HANDLE_BAT(APINT_TYPE_PREFIX, 11612) +HANDLE_BAT(APINT_TYPE_PREFIX, 11613) +HANDLE_BAT(APINT_TYPE_PREFIX, 11614) +HANDLE_BAT(APINT_TYPE_PREFIX, 11615) +HANDLE_BAT(APINT_TYPE_PREFIX, 11616) +HANDLE_BAT(APINT_TYPE_PREFIX, 11617) +HANDLE_BAT(APINT_TYPE_PREFIX, 11618) +HANDLE_BAT(APINT_TYPE_PREFIX, 11619) +HANDLE_BAT(APINT_TYPE_PREFIX, 11620) +HANDLE_BAT(APINT_TYPE_PREFIX, 11621) +HANDLE_BAT(APINT_TYPE_PREFIX, 11622) +HANDLE_BAT(APINT_TYPE_PREFIX, 11623) +HANDLE_BAT(APINT_TYPE_PREFIX, 11624) +HANDLE_BAT(APINT_TYPE_PREFIX, 11625) +HANDLE_BAT(APINT_TYPE_PREFIX, 11626) +HANDLE_BAT(APINT_TYPE_PREFIX, 11627) +HANDLE_BAT(APINT_TYPE_PREFIX, 11628) +HANDLE_BAT(APINT_TYPE_PREFIX, 11629) +HANDLE_BAT(APINT_TYPE_PREFIX, 11630) +HANDLE_BAT(APINT_TYPE_PREFIX, 11631) +HANDLE_BAT(APINT_TYPE_PREFIX, 11632) +HANDLE_BAT(APINT_TYPE_PREFIX, 11633) +HANDLE_BAT(APINT_TYPE_PREFIX, 11634) +HANDLE_BAT(APINT_TYPE_PREFIX, 11635) +HANDLE_BAT(APINT_TYPE_PREFIX, 11636) +HANDLE_BAT(APINT_TYPE_PREFIX, 11637) +HANDLE_BAT(APINT_TYPE_PREFIX, 11638) +HANDLE_BAT(APINT_TYPE_PREFIX, 11639) +HANDLE_BAT(APINT_TYPE_PREFIX, 11640) +HANDLE_BAT(APINT_TYPE_PREFIX, 11641) +HANDLE_BAT(APINT_TYPE_PREFIX, 11642) +HANDLE_BAT(APINT_TYPE_PREFIX, 11643) +HANDLE_BAT(APINT_TYPE_PREFIX, 11644) +HANDLE_BAT(APINT_TYPE_PREFIX, 11645) +HANDLE_BAT(APINT_TYPE_PREFIX, 11646) +HANDLE_BAT(APINT_TYPE_PREFIX, 11647) +HANDLE_BAT(APINT_TYPE_PREFIX, 11648) +HANDLE_BAT(APINT_TYPE_PREFIX, 11649) +HANDLE_BAT(APINT_TYPE_PREFIX, 11650) +HANDLE_BAT(APINT_TYPE_PREFIX, 11651) +HANDLE_BAT(APINT_TYPE_PREFIX, 11652) +HANDLE_BAT(APINT_TYPE_PREFIX, 11653) +HANDLE_BAT(APINT_TYPE_PREFIX, 11654) +HANDLE_BAT(APINT_TYPE_PREFIX, 11655) +HANDLE_BAT(APINT_TYPE_PREFIX, 11656) +HANDLE_BAT(APINT_TYPE_PREFIX, 11657) +HANDLE_BAT(APINT_TYPE_PREFIX, 11658) +HANDLE_BAT(APINT_TYPE_PREFIX, 11659) +HANDLE_BAT(APINT_TYPE_PREFIX, 11660) +HANDLE_BAT(APINT_TYPE_PREFIX, 11661) +HANDLE_BAT(APINT_TYPE_PREFIX, 11662) +HANDLE_BAT(APINT_TYPE_PREFIX, 11663) +HANDLE_BAT(APINT_TYPE_PREFIX, 11664) +HANDLE_BAT(APINT_TYPE_PREFIX, 11665) +HANDLE_BAT(APINT_TYPE_PREFIX, 11666) +HANDLE_BAT(APINT_TYPE_PREFIX, 11667) +HANDLE_BAT(APINT_TYPE_PREFIX, 11668) +HANDLE_BAT(APINT_TYPE_PREFIX, 11669) +HANDLE_BAT(APINT_TYPE_PREFIX, 11670) +HANDLE_BAT(APINT_TYPE_PREFIX, 11671) +HANDLE_BAT(APINT_TYPE_PREFIX, 11672) +HANDLE_BAT(APINT_TYPE_PREFIX, 11673) +HANDLE_BAT(APINT_TYPE_PREFIX, 11674) +HANDLE_BAT(APINT_TYPE_PREFIX, 11675) +HANDLE_BAT(APINT_TYPE_PREFIX, 11676) +HANDLE_BAT(APINT_TYPE_PREFIX, 11677) +HANDLE_BAT(APINT_TYPE_PREFIX, 11678) +HANDLE_BAT(APINT_TYPE_PREFIX, 11679) +HANDLE_BAT(APINT_TYPE_PREFIX, 11680) +HANDLE_BAT(APINT_TYPE_PREFIX, 11681) +HANDLE_BAT(APINT_TYPE_PREFIX, 11682) +HANDLE_BAT(APINT_TYPE_PREFIX, 11683) +HANDLE_BAT(APINT_TYPE_PREFIX, 11684) +HANDLE_BAT(APINT_TYPE_PREFIX, 11685) +HANDLE_BAT(APINT_TYPE_PREFIX, 11686) +HANDLE_BAT(APINT_TYPE_PREFIX, 11687) +HANDLE_BAT(APINT_TYPE_PREFIX, 11688) +HANDLE_BAT(APINT_TYPE_PREFIX, 11689) +HANDLE_BAT(APINT_TYPE_PREFIX, 11690) +HANDLE_BAT(APINT_TYPE_PREFIX, 11691) +HANDLE_BAT(APINT_TYPE_PREFIX, 11692) +HANDLE_BAT(APINT_TYPE_PREFIX, 11693) +HANDLE_BAT(APINT_TYPE_PREFIX, 11694) +HANDLE_BAT(APINT_TYPE_PREFIX, 11695) +HANDLE_BAT(APINT_TYPE_PREFIX, 11696) +HANDLE_BAT(APINT_TYPE_PREFIX, 11697) +HANDLE_BAT(APINT_TYPE_PREFIX, 11698) +HANDLE_BAT(APINT_TYPE_PREFIX, 11699) +HANDLE_BAT(APINT_TYPE_PREFIX, 11700) +HANDLE_BAT(APINT_TYPE_PREFIX, 11701) +HANDLE_BAT(APINT_TYPE_PREFIX, 11702) +HANDLE_BAT(APINT_TYPE_PREFIX, 11703) +HANDLE_BAT(APINT_TYPE_PREFIX, 11704) +HANDLE_BAT(APINT_TYPE_PREFIX, 11705) +HANDLE_BAT(APINT_TYPE_PREFIX, 11706) +HANDLE_BAT(APINT_TYPE_PREFIX, 11707) +HANDLE_BAT(APINT_TYPE_PREFIX, 11708) +HANDLE_BAT(APINT_TYPE_PREFIX, 11709) +HANDLE_BAT(APINT_TYPE_PREFIX, 11710) +HANDLE_BAT(APINT_TYPE_PREFIX, 11711) +HANDLE_BAT(APINT_TYPE_PREFIX, 11712) +HANDLE_BAT(APINT_TYPE_PREFIX, 11713) +HANDLE_BAT(APINT_TYPE_PREFIX, 11714) +HANDLE_BAT(APINT_TYPE_PREFIX, 11715) +HANDLE_BAT(APINT_TYPE_PREFIX, 11716) +HANDLE_BAT(APINT_TYPE_PREFIX, 11717) +HANDLE_BAT(APINT_TYPE_PREFIX, 11718) +HANDLE_BAT(APINT_TYPE_PREFIX, 11719) +HANDLE_BAT(APINT_TYPE_PREFIX, 11720) +HANDLE_BAT(APINT_TYPE_PREFIX, 11721) +HANDLE_BAT(APINT_TYPE_PREFIX, 11722) +HANDLE_BAT(APINT_TYPE_PREFIX, 11723) +HANDLE_BAT(APINT_TYPE_PREFIX, 11724) +HANDLE_BAT(APINT_TYPE_PREFIX, 11725) +HANDLE_BAT(APINT_TYPE_PREFIX, 11726) +HANDLE_BAT(APINT_TYPE_PREFIX, 11727) +HANDLE_BAT(APINT_TYPE_PREFIX, 11728) +HANDLE_BAT(APINT_TYPE_PREFIX, 11729) +HANDLE_BAT(APINT_TYPE_PREFIX, 11730) +HANDLE_BAT(APINT_TYPE_PREFIX, 11731) +HANDLE_BAT(APINT_TYPE_PREFIX, 11732) +HANDLE_BAT(APINT_TYPE_PREFIX, 11733) +HANDLE_BAT(APINT_TYPE_PREFIX, 11734) +HANDLE_BAT(APINT_TYPE_PREFIX, 11735) +HANDLE_BAT(APINT_TYPE_PREFIX, 11736) +HANDLE_BAT(APINT_TYPE_PREFIX, 11737) +HANDLE_BAT(APINT_TYPE_PREFIX, 11738) +HANDLE_BAT(APINT_TYPE_PREFIX, 11739) +HANDLE_BAT(APINT_TYPE_PREFIX, 11740) +HANDLE_BAT(APINT_TYPE_PREFIX, 11741) +HANDLE_BAT(APINT_TYPE_PREFIX, 11742) +HANDLE_BAT(APINT_TYPE_PREFIX, 11743) +HANDLE_BAT(APINT_TYPE_PREFIX, 11744) +HANDLE_BAT(APINT_TYPE_PREFIX, 11745) +HANDLE_BAT(APINT_TYPE_PREFIX, 11746) +HANDLE_BAT(APINT_TYPE_PREFIX, 11747) +HANDLE_BAT(APINT_TYPE_PREFIX, 11748) +HANDLE_BAT(APINT_TYPE_PREFIX, 11749) +HANDLE_BAT(APINT_TYPE_PREFIX, 11750) +HANDLE_BAT(APINT_TYPE_PREFIX, 11751) +HANDLE_BAT(APINT_TYPE_PREFIX, 11752) +HANDLE_BAT(APINT_TYPE_PREFIX, 11753) +HANDLE_BAT(APINT_TYPE_PREFIX, 11754) +HANDLE_BAT(APINT_TYPE_PREFIX, 11755) +HANDLE_BAT(APINT_TYPE_PREFIX, 11756) +HANDLE_BAT(APINT_TYPE_PREFIX, 11757) +HANDLE_BAT(APINT_TYPE_PREFIX, 11758) +HANDLE_BAT(APINT_TYPE_PREFIX, 11759) +HANDLE_BAT(APINT_TYPE_PREFIX, 11760) +HANDLE_BAT(APINT_TYPE_PREFIX, 11761) +HANDLE_BAT(APINT_TYPE_PREFIX, 11762) +HANDLE_BAT(APINT_TYPE_PREFIX, 11763) +HANDLE_BAT(APINT_TYPE_PREFIX, 11764) +HANDLE_BAT(APINT_TYPE_PREFIX, 11765) +HANDLE_BAT(APINT_TYPE_PREFIX, 11766) +HANDLE_BAT(APINT_TYPE_PREFIX, 11767) +HANDLE_BAT(APINT_TYPE_PREFIX, 11768) +HANDLE_BAT(APINT_TYPE_PREFIX, 11769) +HANDLE_BAT(APINT_TYPE_PREFIX, 11770) +HANDLE_BAT(APINT_TYPE_PREFIX, 11771) +HANDLE_BAT(APINT_TYPE_PREFIX, 11772) +HANDLE_BAT(APINT_TYPE_PREFIX, 11773) +HANDLE_BAT(APINT_TYPE_PREFIX, 11774) +HANDLE_BAT(APINT_TYPE_PREFIX, 11775) +HANDLE_BAT(APINT_TYPE_PREFIX, 11776) +HANDLE_BAT(APINT_TYPE_PREFIX, 11777) +HANDLE_BAT(APINT_TYPE_PREFIX, 11778) +HANDLE_BAT(APINT_TYPE_PREFIX, 11779) +HANDLE_BAT(APINT_TYPE_PREFIX, 11780) +HANDLE_BAT(APINT_TYPE_PREFIX, 11781) +HANDLE_BAT(APINT_TYPE_PREFIX, 11782) +HANDLE_BAT(APINT_TYPE_PREFIX, 11783) +HANDLE_BAT(APINT_TYPE_PREFIX, 11784) +HANDLE_BAT(APINT_TYPE_PREFIX, 11785) +HANDLE_BAT(APINT_TYPE_PREFIX, 11786) +HANDLE_BAT(APINT_TYPE_PREFIX, 11787) +HANDLE_BAT(APINT_TYPE_PREFIX, 11788) +HANDLE_BAT(APINT_TYPE_PREFIX, 11789) +HANDLE_BAT(APINT_TYPE_PREFIX, 11790) +HANDLE_BAT(APINT_TYPE_PREFIX, 11791) +HANDLE_BAT(APINT_TYPE_PREFIX, 11792) +HANDLE_BAT(APINT_TYPE_PREFIX, 11793) +HANDLE_BAT(APINT_TYPE_PREFIX, 11794) +HANDLE_BAT(APINT_TYPE_PREFIX, 11795) +HANDLE_BAT(APINT_TYPE_PREFIX, 11796) +HANDLE_BAT(APINT_TYPE_PREFIX, 11797) +HANDLE_BAT(APINT_TYPE_PREFIX, 11798) +HANDLE_BAT(APINT_TYPE_PREFIX, 11799) +HANDLE_BAT(APINT_TYPE_PREFIX, 11800) +HANDLE_BAT(APINT_TYPE_PREFIX, 11801) +HANDLE_BAT(APINT_TYPE_PREFIX, 11802) +HANDLE_BAT(APINT_TYPE_PREFIX, 11803) +HANDLE_BAT(APINT_TYPE_PREFIX, 11804) +HANDLE_BAT(APINT_TYPE_PREFIX, 11805) +HANDLE_BAT(APINT_TYPE_PREFIX, 11806) +HANDLE_BAT(APINT_TYPE_PREFIX, 11807) +HANDLE_BAT(APINT_TYPE_PREFIX, 11808) +HANDLE_BAT(APINT_TYPE_PREFIX, 11809) +HANDLE_BAT(APINT_TYPE_PREFIX, 11810) +HANDLE_BAT(APINT_TYPE_PREFIX, 11811) +HANDLE_BAT(APINT_TYPE_PREFIX, 11812) +HANDLE_BAT(APINT_TYPE_PREFIX, 11813) +HANDLE_BAT(APINT_TYPE_PREFIX, 11814) +HANDLE_BAT(APINT_TYPE_PREFIX, 11815) +HANDLE_BAT(APINT_TYPE_PREFIX, 11816) +HANDLE_BAT(APINT_TYPE_PREFIX, 11817) +HANDLE_BAT(APINT_TYPE_PREFIX, 11818) +HANDLE_BAT(APINT_TYPE_PREFIX, 11819) +HANDLE_BAT(APINT_TYPE_PREFIX, 11820) +HANDLE_BAT(APINT_TYPE_PREFIX, 11821) +HANDLE_BAT(APINT_TYPE_PREFIX, 11822) +HANDLE_BAT(APINT_TYPE_PREFIX, 11823) +HANDLE_BAT(APINT_TYPE_PREFIX, 11824) +HANDLE_BAT(APINT_TYPE_PREFIX, 11825) +HANDLE_BAT(APINT_TYPE_PREFIX, 11826) +HANDLE_BAT(APINT_TYPE_PREFIX, 11827) +HANDLE_BAT(APINT_TYPE_PREFIX, 11828) +HANDLE_BAT(APINT_TYPE_PREFIX, 11829) +HANDLE_BAT(APINT_TYPE_PREFIX, 11830) +HANDLE_BAT(APINT_TYPE_PREFIX, 11831) +HANDLE_BAT(APINT_TYPE_PREFIX, 11832) +HANDLE_BAT(APINT_TYPE_PREFIX, 11833) +HANDLE_BAT(APINT_TYPE_PREFIX, 11834) +HANDLE_BAT(APINT_TYPE_PREFIX, 11835) +HANDLE_BAT(APINT_TYPE_PREFIX, 11836) +HANDLE_BAT(APINT_TYPE_PREFIX, 11837) +HANDLE_BAT(APINT_TYPE_PREFIX, 11838) +HANDLE_BAT(APINT_TYPE_PREFIX, 11839) +HANDLE_BAT(APINT_TYPE_PREFIX, 11840) +HANDLE_BAT(APINT_TYPE_PREFIX, 11841) +HANDLE_BAT(APINT_TYPE_PREFIX, 11842) +HANDLE_BAT(APINT_TYPE_PREFIX, 11843) +HANDLE_BAT(APINT_TYPE_PREFIX, 11844) +HANDLE_BAT(APINT_TYPE_PREFIX, 11845) +HANDLE_BAT(APINT_TYPE_PREFIX, 11846) +HANDLE_BAT(APINT_TYPE_PREFIX, 11847) +HANDLE_BAT(APINT_TYPE_PREFIX, 11848) +HANDLE_BAT(APINT_TYPE_PREFIX, 11849) +HANDLE_BAT(APINT_TYPE_PREFIX, 11850) +HANDLE_BAT(APINT_TYPE_PREFIX, 11851) +HANDLE_BAT(APINT_TYPE_PREFIX, 11852) +HANDLE_BAT(APINT_TYPE_PREFIX, 11853) +HANDLE_BAT(APINT_TYPE_PREFIX, 11854) +HANDLE_BAT(APINT_TYPE_PREFIX, 11855) +HANDLE_BAT(APINT_TYPE_PREFIX, 11856) +HANDLE_BAT(APINT_TYPE_PREFIX, 11857) +HANDLE_BAT(APINT_TYPE_PREFIX, 11858) +HANDLE_BAT(APINT_TYPE_PREFIX, 11859) +HANDLE_BAT(APINT_TYPE_PREFIX, 11860) +HANDLE_BAT(APINT_TYPE_PREFIX, 11861) +HANDLE_BAT(APINT_TYPE_PREFIX, 11862) +HANDLE_BAT(APINT_TYPE_PREFIX, 11863) +HANDLE_BAT(APINT_TYPE_PREFIX, 11864) +HANDLE_BAT(APINT_TYPE_PREFIX, 11865) +HANDLE_BAT(APINT_TYPE_PREFIX, 11866) +HANDLE_BAT(APINT_TYPE_PREFIX, 11867) +HANDLE_BAT(APINT_TYPE_PREFIX, 11868) +HANDLE_BAT(APINT_TYPE_PREFIX, 11869) +HANDLE_BAT(APINT_TYPE_PREFIX, 11870) +HANDLE_BAT(APINT_TYPE_PREFIX, 11871) +HANDLE_BAT(APINT_TYPE_PREFIX, 11872) +HANDLE_BAT(APINT_TYPE_PREFIX, 11873) +HANDLE_BAT(APINT_TYPE_PREFIX, 11874) +HANDLE_BAT(APINT_TYPE_PREFIX, 11875) +HANDLE_BAT(APINT_TYPE_PREFIX, 11876) +HANDLE_BAT(APINT_TYPE_PREFIX, 11877) +HANDLE_BAT(APINT_TYPE_PREFIX, 11878) +HANDLE_BAT(APINT_TYPE_PREFIX, 11879) +HANDLE_BAT(APINT_TYPE_PREFIX, 11880) +HANDLE_BAT(APINT_TYPE_PREFIX, 11881) +HANDLE_BAT(APINT_TYPE_PREFIX, 11882) +HANDLE_BAT(APINT_TYPE_PREFIX, 11883) +HANDLE_BAT(APINT_TYPE_PREFIX, 11884) +HANDLE_BAT(APINT_TYPE_PREFIX, 11885) +HANDLE_BAT(APINT_TYPE_PREFIX, 11886) +HANDLE_BAT(APINT_TYPE_PREFIX, 11887) +HANDLE_BAT(APINT_TYPE_PREFIX, 11888) +HANDLE_BAT(APINT_TYPE_PREFIX, 11889) +HANDLE_BAT(APINT_TYPE_PREFIX, 11890) +HANDLE_BAT(APINT_TYPE_PREFIX, 11891) +HANDLE_BAT(APINT_TYPE_PREFIX, 11892) +HANDLE_BAT(APINT_TYPE_PREFIX, 11893) +HANDLE_BAT(APINT_TYPE_PREFIX, 11894) +HANDLE_BAT(APINT_TYPE_PREFIX, 11895) +HANDLE_BAT(APINT_TYPE_PREFIX, 11896) +HANDLE_BAT(APINT_TYPE_PREFIX, 11897) +HANDLE_BAT(APINT_TYPE_PREFIX, 11898) +HANDLE_BAT(APINT_TYPE_PREFIX, 11899) +HANDLE_BAT(APINT_TYPE_PREFIX, 11900) +HANDLE_BAT(APINT_TYPE_PREFIX, 11901) +HANDLE_BAT(APINT_TYPE_PREFIX, 11902) +HANDLE_BAT(APINT_TYPE_PREFIX, 11903) +HANDLE_BAT(APINT_TYPE_PREFIX, 11904) +HANDLE_BAT(APINT_TYPE_PREFIX, 11905) +HANDLE_BAT(APINT_TYPE_PREFIX, 11906) +HANDLE_BAT(APINT_TYPE_PREFIX, 11907) +HANDLE_BAT(APINT_TYPE_PREFIX, 11908) +HANDLE_BAT(APINT_TYPE_PREFIX, 11909) +HANDLE_BAT(APINT_TYPE_PREFIX, 11910) +HANDLE_BAT(APINT_TYPE_PREFIX, 11911) +HANDLE_BAT(APINT_TYPE_PREFIX, 11912) +HANDLE_BAT(APINT_TYPE_PREFIX, 11913) +HANDLE_BAT(APINT_TYPE_PREFIX, 11914) +HANDLE_BAT(APINT_TYPE_PREFIX, 11915) +HANDLE_BAT(APINT_TYPE_PREFIX, 11916) +HANDLE_BAT(APINT_TYPE_PREFIX, 11917) +HANDLE_BAT(APINT_TYPE_PREFIX, 11918) +HANDLE_BAT(APINT_TYPE_PREFIX, 11919) +HANDLE_BAT(APINT_TYPE_PREFIX, 11920) +HANDLE_BAT(APINT_TYPE_PREFIX, 11921) +HANDLE_BAT(APINT_TYPE_PREFIX, 11922) +HANDLE_BAT(APINT_TYPE_PREFIX, 11923) +HANDLE_BAT(APINT_TYPE_PREFIX, 11924) +HANDLE_BAT(APINT_TYPE_PREFIX, 11925) +HANDLE_BAT(APINT_TYPE_PREFIX, 11926) +HANDLE_BAT(APINT_TYPE_PREFIX, 11927) +HANDLE_BAT(APINT_TYPE_PREFIX, 11928) +HANDLE_BAT(APINT_TYPE_PREFIX, 11929) +HANDLE_BAT(APINT_TYPE_PREFIX, 11930) +HANDLE_BAT(APINT_TYPE_PREFIX, 11931) +HANDLE_BAT(APINT_TYPE_PREFIX, 11932) +HANDLE_BAT(APINT_TYPE_PREFIX, 11933) +HANDLE_BAT(APINT_TYPE_PREFIX, 11934) +HANDLE_BAT(APINT_TYPE_PREFIX, 11935) +HANDLE_BAT(APINT_TYPE_PREFIX, 11936) +HANDLE_BAT(APINT_TYPE_PREFIX, 11937) +HANDLE_BAT(APINT_TYPE_PREFIX, 11938) +HANDLE_BAT(APINT_TYPE_PREFIX, 11939) +HANDLE_BAT(APINT_TYPE_PREFIX, 11940) +HANDLE_BAT(APINT_TYPE_PREFIX, 11941) +HANDLE_BAT(APINT_TYPE_PREFIX, 11942) +HANDLE_BAT(APINT_TYPE_PREFIX, 11943) +HANDLE_BAT(APINT_TYPE_PREFIX, 11944) +HANDLE_BAT(APINT_TYPE_PREFIX, 11945) +HANDLE_BAT(APINT_TYPE_PREFIX, 11946) +HANDLE_BAT(APINT_TYPE_PREFIX, 11947) +HANDLE_BAT(APINT_TYPE_PREFIX, 11948) +HANDLE_BAT(APINT_TYPE_PREFIX, 11949) +HANDLE_BAT(APINT_TYPE_PREFIX, 11950) +HANDLE_BAT(APINT_TYPE_PREFIX, 11951) +HANDLE_BAT(APINT_TYPE_PREFIX, 11952) +HANDLE_BAT(APINT_TYPE_PREFIX, 11953) +HANDLE_BAT(APINT_TYPE_PREFIX, 11954) +HANDLE_BAT(APINT_TYPE_PREFIX, 11955) +HANDLE_BAT(APINT_TYPE_PREFIX, 11956) +HANDLE_BAT(APINT_TYPE_PREFIX, 11957) +HANDLE_BAT(APINT_TYPE_PREFIX, 11958) +HANDLE_BAT(APINT_TYPE_PREFIX, 11959) +HANDLE_BAT(APINT_TYPE_PREFIX, 11960) +HANDLE_BAT(APINT_TYPE_PREFIX, 11961) +HANDLE_BAT(APINT_TYPE_PREFIX, 11962) +HANDLE_BAT(APINT_TYPE_PREFIX, 11963) +HANDLE_BAT(APINT_TYPE_PREFIX, 11964) +HANDLE_BAT(APINT_TYPE_PREFIX, 11965) +HANDLE_BAT(APINT_TYPE_PREFIX, 11966) +HANDLE_BAT(APINT_TYPE_PREFIX, 11967) +HANDLE_BAT(APINT_TYPE_PREFIX, 11968) +HANDLE_BAT(APINT_TYPE_PREFIX, 11969) +HANDLE_BAT(APINT_TYPE_PREFIX, 11970) +HANDLE_BAT(APINT_TYPE_PREFIX, 11971) +HANDLE_BAT(APINT_TYPE_PREFIX, 11972) +HANDLE_BAT(APINT_TYPE_PREFIX, 11973) +HANDLE_BAT(APINT_TYPE_PREFIX, 11974) +HANDLE_BAT(APINT_TYPE_PREFIX, 11975) +HANDLE_BAT(APINT_TYPE_PREFIX, 11976) +HANDLE_BAT(APINT_TYPE_PREFIX, 11977) +HANDLE_BAT(APINT_TYPE_PREFIX, 11978) +HANDLE_BAT(APINT_TYPE_PREFIX, 11979) +HANDLE_BAT(APINT_TYPE_PREFIX, 11980) +HANDLE_BAT(APINT_TYPE_PREFIX, 11981) +HANDLE_BAT(APINT_TYPE_PREFIX, 11982) +HANDLE_BAT(APINT_TYPE_PREFIX, 11983) +HANDLE_BAT(APINT_TYPE_PREFIX, 11984) +HANDLE_BAT(APINT_TYPE_PREFIX, 11985) +HANDLE_BAT(APINT_TYPE_PREFIX, 11986) +HANDLE_BAT(APINT_TYPE_PREFIX, 11987) +HANDLE_BAT(APINT_TYPE_PREFIX, 11988) +HANDLE_BAT(APINT_TYPE_PREFIX, 11989) +HANDLE_BAT(APINT_TYPE_PREFIX, 11990) +HANDLE_BAT(APINT_TYPE_PREFIX, 11991) +HANDLE_BAT(APINT_TYPE_PREFIX, 11992) +HANDLE_BAT(APINT_TYPE_PREFIX, 11993) +HANDLE_BAT(APINT_TYPE_PREFIX, 11994) +HANDLE_BAT(APINT_TYPE_PREFIX, 11995) +HANDLE_BAT(APINT_TYPE_PREFIX, 11996) +HANDLE_BAT(APINT_TYPE_PREFIX, 11997) +HANDLE_BAT(APINT_TYPE_PREFIX, 11998) +HANDLE_BAT(APINT_TYPE_PREFIX, 11999) +HANDLE_BAT(APINT_TYPE_PREFIX, 12000) +HANDLE_BAT(APINT_TYPE_PREFIX, 12001) +HANDLE_BAT(APINT_TYPE_PREFIX, 12002) +HANDLE_BAT(APINT_TYPE_PREFIX, 12003) +HANDLE_BAT(APINT_TYPE_PREFIX, 12004) +HANDLE_BAT(APINT_TYPE_PREFIX, 12005) +HANDLE_BAT(APINT_TYPE_PREFIX, 12006) +HANDLE_BAT(APINT_TYPE_PREFIX, 12007) +HANDLE_BAT(APINT_TYPE_PREFIX, 12008) +HANDLE_BAT(APINT_TYPE_PREFIX, 12009) +HANDLE_BAT(APINT_TYPE_PREFIX, 12010) +HANDLE_BAT(APINT_TYPE_PREFIX, 12011) +HANDLE_BAT(APINT_TYPE_PREFIX, 12012) +HANDLE_BAT(APINT_TYPE_PREFIX, 12013) +HANDLE_BAT(APINT_TYPE_PREFIX, 12014) +HANDLE_BAT(APINT_TYPE_PREFIX, 12015) +HANDLE_BAT(APINT_TYPE_PREFIX, 12016) +HANDLE_BAT(APINT_TYPE_PREFIX, 12017) +HANDLE_BAT(APINT_TYPE_PREFIX, 12018) +HANDLE_BAT(APINT_TYPE_PREFIX, 12019) +HANDLE_BAT(APINT_TYPE_PREFIX, 12020) +HANDLE_BAT(APINT_TYPE_PREFIX, 12021) +HANDLE_BAT(APINT_TYPE_PREFIX, 12022) +HANDLE_BAT(APINT_TYPE_PREFIX, 12023) +HANDLE_BAT(APINT_TYPE_PREFIX, 12024) +HANDLE_BAT(APINT_TYPE_PREFIX, 12025) +HANDLE_BAT(APINT_TYPE_PREFIX, 12026) +HANDLE_BAT(APINT_TYPE_PREFIX, 12027) +HANDLE_BAT(APINT_TYPE_PREFIX, 12028) +HANDLE_BAT(APINT_TYPE_PREFIX, 12029) +HANDLE_BAT(APINT_TYPE_PREFIX, 12030) +HANDLE_BAT(APINT_TYPE_PREFIX, 12031) +HANDLE_BAT(APINT_TYPE_PREFIX, 12032) +HANDLE_BAT(APINT_TYPE_PREFIX, 12033) +HANDLE_BAT(APINT_TYPE_PREFIX, 12034) +HANDLE_BAT(APINT_TYPE_PREFIX, 12035) +HANDLE_BAT(APINT_TYPE_PREFIX, 12036) +HANDLE_BAT(APINT_TYPE_PREFIX, 12037) +HANDLE_BAT(APINT_TYPE_PREFIX, 12038) +HANDLE_BAT(APINT_TYPE_PREFIX, 12039) +HANDLE_BAT(APINT_TYPE_PREFIX, 12040) +HANDLE_BAT(APINT_TYPE_PREFIX, 12041) +HANDLE_BAT(APINT_TYPE_PREFIX, 12042) +HANDLE_BAT(APINT_TYPE_PREFIX, 12043) +HANDLE_BAT(APINT_TYPE_PREFIX, 12044) +HANDLE_BAT(APINT_TYPE_PREFIX, 12045) +HANDLE_BAT(APINT_TYPE_PREFIX, 12046) +HANDLE_BAT(APINT_TYPE_PREFIX, 12047) +HANDLE_BAT(APINT_TYPE_PREFIX, 12048) +HANDLE_BAT(APINT_TYPE_PREFIX, 12049) +HANDLE_BAT(APINT_TYPE_PREFIX, 12050) +HANDLE_BAT(APINT_TYPE_PREFIX, 12051) +HANDLE_BAT(APINT_TYPE_PREFIX, 12052) +HANDLE_BAT(APINT_TYPE_PREFIX, 12053) +HANDLE_BAT(APINT_TYPE_PREFIX, 12054) +HANDLE_BAT(APINT_TYPE_PREFIX, 12055) +HANDLE_BAT(APINT_TYPE_PREFIX, 12056) +HANDLE_BAT(APINT_TYPE_PREFIX, 12057) +HANDLE_BAT(APINT_TYPE_PREFIX, 12058) +HANDLE_BAT(APINT_TYPE_PREFIX, 12059) +HANDLE_BAT(APINT_TYPE_PREFIX, 12060) +HANDLE_BAT(APINT_TYPE_PREFIX, 12061) +HANDLE_BAT(APINT_TYPE_PREFIX, 12062) +HANDLE_BAT(APINT_TYPE_PREFIX, 12063) +HANDLE_BAT(APINT_TYPE_PREFIX, 12064) +HANDLE_BAT(APINT_TYPE_PREFIX, 12065) +HANDLE_BAT(APINT_TYPE_PREFIX, 12066) +HANDLE_BAT(APINT_TYPE_PREFIX, 12067) +HANDLE_BAT(APINT_TYPE_PREFIX, 12068) +HANDLE_BAT(APINT_TYPE_PREFIX, 12069) +HANDLE_BAT(APINT_TYPE_PREFIX, 12070) +HANDLE_BAT(APINT_TYPE_PREFIX, 12071) +HANDLE_BAT(APINT_TYPE_PREFIX, 12072) +HANDLE_BAT(APINT_TYPE_PREFIX, 12073) +HANDLE_BAT(APINT_TYPE_PREFIX, 12074) +HANDLE_BAT(APINT_TYPE_PREFIX, 12075) +HANDLE_BAT(APINT_TYPE_PREFIX, 12076) +HANDLE_BAT(APINT_TYPE_PREFIX, 12077) +HANDLE_BAT(APINT_TYPE_PREFIX, 12078) +HANDLE_BAT(APINT_TYPE_PREFIX, 12079) +HANDLE_BAT(APINT_TYPE_PREFIX, 12080) +HANDLE_BAT(APINT_TYPE_PREFIX, 12081) +HANDLE_BAT(APINT_TYPE_PREFIX, 12082) +HANDLE_BAT(APINT_TYPE_PREFIX, 12083) +HANDLE_BAT(APINT_TYPE_PREFIX, 12084) +HANDLE_BAT(APINT_TYPE_PREFIX, 12085) +HANDLE_BAT(APINT_TYPE_PREFIX, 12086) +HANDLE_BAT(APINT_TYPE_PREFIX, 12087) +HANDLE_BAT(APINT_TYPE_PREFIX, 12088) +HANDLE_BAT(APINT_TYPE_PREFIX, 12089) +HANDLE_BAT(APINT_TYPE_PREFIX, 12090) +HANDLE_BAT(APINT_TYPE_PREFIX, 12091) +HANDLE_BAT(APINT_TYPE_PREFIX, 12092) +HANDLE_BAT(APINT_TYPE_PREFIX, 12093) +HANDLE_BAT(APINT_TYPE_PREFIX, 12094) +HANDLE_BAT(APINT_TYPE_PREFIX, 12095) +HANDLE_BAT(APINT_TYPE_PREFIX, 12096) +HANDLE_BAT(APINT_TYPE_PREFIX, 12097) +HANDLE_BAT(APINT_TYPE_PREFIX, 12098) +HANDLE_BAT(APINT_TYPE_PREFIX, 12099) +HANDLE_BAT(APINT_TYPE_PREFIX, 12100) +HANDLE_BAT(APINT_TYPE_PREFIX, 12101) +HANDLE_BAT(APINT_TYPE_PREFIX, 12102) +HANDLE_BAT(APINT_TYPE_PREFIX, 12103) +HANDLE_BAT(APINT_TYPE_PREFIX, 12104) +HANDLE_BAT(APINT_TYPE_PREFIX, 12105) +HANDLE_BAT(APINT_TYPE_PREFIX, 12106) +HANDLE_BAT(APINT_TYPE_PREFIX, 12107) +HANDLE_BAT(APINT_TYPE_PREFIX, 12108) +HANDLE_BAT(APINT_TYPE_PREFIX, 12109) +HANDLE_BAT(APINT_TYPE_PREFIX, 12110) +HANDLE_BAT(APINT_TYPE_PREFIX, 12111) +HANDLE_BAT(APINT_TYPE_PREFIX, 12112) +HANDLE_BAT(APINT_TYPE_PREFIX, 12113) +HANDLE_BAT(APINT_TYPE_PREFIX, 12114) +HANDLE_BAT(APINT_TYPE_PREFIX, 12115) +HANDLE_BAT(APINT_TYPE_PREFIX, 12116) +HANDLE_BAT(APINT_TYPE_PREFIX, 12117) +HANDLE_BAT(APINT_TYPE_PREFIX, 12118) +HANDLE_BAT(APINT_TYPE_PREFIX, 12119) +HANDLE_BAT(APINT_TYPE_PREFIX, 12120) +HANDLE_BAT(APINT_TYPE_PREFIX, 12121) +HANDLE_BAT(APINT_TYPE_PREFIX, 12122) +HANDLE_BAT(APINT_TYPE_PREFIX, 12123) +HANDLE_BAT(APINT_TYPE_PREFIX, 12124) +HANDLE_BAT(APINT_TYPE_PREFIX, 12125) +HANDLE_BAT(APINT_TYPE_PREFIX, 12126) +HANDLE_BAT(APINT_TYPE_PREFIX, 12127) +HANDLE_BAT(APINT_TYPE_PREFIX, 12128) +HANDLE_BAT(APINT_TYPE_PREFIX, 12129) +HANDLE_BAT(APINT_TYPE_PREFIX, 12130) +HANDLE_BAT(APINT_TYPE_PREFIX, 12131) +HANDLE_BAT(APINT_TYPE_PREFIX, 12132) +HANDLE_BAT(APINT_TYPE_PREFIX, 12133) +HANDLE_BAT(APINT_TYPE_PREFIX, 12134) +HANDLE_BAT(APINT_TYPE_PREFIX, 12135) +HANDLE_BAT(APINT_TYPE_PREFIX, 12136) +HANDLE_BAT(APINT_TYPE_PREFIX, 12137) +HANDLE_BAT(APINT_TYPE_PREFIX, 12138) +HANDLE_BAT(APINT_TYPE_PREFIX, 12139) +HANDLE_BAT(APINT_TYPE_PREFIX, 12140) +HANDLE_BAT(APINT_TYPE_PREFIX, 12141) +HANDLE_BAT(APINT_TYPE_PREFIX, 12142) +HANDLE_BAT(APINT_TYPE_PREFIX, 12143) +HANDLE_BAT(APINT_TYPE_PREFIX, 12144) +HANDLE_BAT(APINT_TYPE_PREFIX, 12145) +HANDLE_BAT(APINT_TYPE_PREFIX, 12146) +HANDLE_BAT(APINT_TYPE_PREFIX, 12147) +HANDLE_BAT(APINT_TYPE_PREFIX, 12148) +HANDLE_BAT(APINT_TYPE_PREFIX, 12149) +HANDLE_BAT(APINT_TYPE_PREFIX, 12150) +HANDLE_BAT(APINT_TYPE_PREFIX, 12151) +HANDLE_BAT(APINT_TYPE_PREFIX, 12152) +HANDLE_BAT(APINT_TYPE_PREFIX, 12153) +HANDLE_BAT(APINT_TYPE_PREFIX, 12154) +HANDLE_BAT(APINT_TYPE_PREFIX, 12155) +HANDLE_BAT(APINT_TYPE_PREFIX, 12156) +HANDLE_BAT(APINT_TYPE_PREFIX, 12157) +HANDLE_BAT(APINT_TYPE_PREFIX, 12158) +HANDLE_BAT(APINT_TYPE_PREFIX, 12159) +HANDLE_BAT(APINT_TYPE_PREFIX, 12160) +HANDLE_BAT(APINT_TYPE_PREFIX, 12161) +HANDLE_BAT(APINT_TYPE_PREFIX, 12162) +HANDLE_BAT(APINT_TYPE_PREFIX, 12163) +HANDLE_BAT(APINT_TYPE_PREFIX, 12164) +HANDLE_BAT(APINT_TYPE_PREFIX, 12165) +HANDLE_BAT(APINT_TYPE_PREFIX, 12166) +HANDLE_BAT(APINT_TYPE_PREFIX, 12167) +HANDLE_BAT(APINT_TYPE_PREFIX, 12168) +HANDLE_BAT(APINT_TYPE_PREFIX, 12169) +HANDLE_BAT(APINT_TYPE_PREFIX, 12170) +HANDLE_BAT(APINT_TYPE_PREFIX, 12171) +HANDLE_BAT(APINT_TYPE_PREFIX, 12172) +HANDLE_BAT(APINT_TYPE_PREFIX, 12173) +HANDLE_BAT(APINT_TYPE_PREFIX, 12174) +HANDLE_BAT(APINT_TYPE_PREFIX, 12175) +HANDLE_BAT(APINT_TYPE_PREFIX, 12176) +HANDLE_BAT(APINT_TYPE_PREFIX, 12177) +HANDLE_BAT(APINT_TYPE_PREFIX, 12178) +HANDLE_BAT(APINT_TYPE_PREFIX, 12179) +HANDLE_BAT(APINT_TYPE_PREFIX, 12180) +HANDLE_BAT(APINT_TYPE_PREFIX, 12181) +HANDLE_BAT(APINT_TYPE_PREFIX, 12182) +HANDLE_BAT(APINT_TYPE_PREFIX, 12183) +HANDLE_BAT(APINT_TYPE_PREFIX, 12184) +HANDLE_BAT(APINT_TYPE_PREFIX, 12185) +HANDLE_BAT(APINT_TYPE_PREFIX, 12186) +HANDLE_BAT(APINT_TYPE_PREFIX, 12187) +HANDLE_BAT(APINT_TYPE_PREFIX, 12188) +HANDLE_BAT(APINT_TYPE_PREFIX, 12189) +HANDLE_BAT(APINT_TYPE_PREFIX, 12190) +HANDLE_BAT(APINT_TYPE_PREFIX, 12191) +HANDLE_BAT(APINT_TYPE_PREFIX, 12192) +HANDLE_BAT(APINT_TYPE_PREFIX, 12193) +HANDLE_BAT(APINT_TYPE_PREFIX, 12194) +HANDLE_BAT(APINT_TYPE_PREFIX, 12195) +HANDLE_BAT(APINT_TYPE_PREFIX, 12196) +HANDLE_BAT(APINT_TYPE_PREFIX, 12197) +HANDLE_BAT(APINT_TYPE_PREFIX, 12198) +HANDLE_BAT(APINT_TYPE_PREFIX, 12199) +HANDLE_BAT(APINT_TYPE_PREFIX, 12200) +HANDLE_BAT(APINT_TYPE_PREFIX, 12201) +HANDLE_BAT(APINT_TYPE_PREFIX, 12202) +HANDLE_BAT(APINT_TYPE_PREFIX, 12203) +HANDLE_BAT(APINT_TYPE_PREFIX, 12204) +HANDLE_BAT(APINT_TYPE_PREFIX, 12205) +HANDLE_BAT(APINT_TYPE_PREFIX, 12206) +HANDLE_BAT(APINT_TYPE_PREFIX, 12207) +HANDLE_BAT(APINT_TYPE_PREFIX, 12208) +HANDLE_BAT(APINT_TYPE_PREFIX, 12209) +HANDLE_BAT(APINT_TYPE_PREFIX, 12210) +HANDLE_BAT(APINT_TYPE_PREFIX, 12211) +HANDLE_BAT(APINT_TYPE_PREFIX, 12212) +HANDLE_BAT(APINT_TYPE_PREFIX, 12213) +HANDLE_BAT(APINT_TYPE_PREFIX, 12214) +HANDLE_BAT(APINT_TYPE_PREFIX, 12215) +HANDLE_BAT(APINT_TYPE_PREFIX, 12216) +HANDLE_BAT(APINT_TYPE_PREFIX, 12217) +HANDLE_BAT(APINT_TYPE_PREFIX, 12218) +HANDLE_BAT(APINT_TYPE_PREFIX, 12219) +HANDLE_BAT(APINT_TYPE_PREFIX, 12220) +HANDLE_BAT(APINT_TYPE_PREFIX, 12221) +HANDLE_BAT(APINT_TYPE_PREFIX, 12222) +HANDLE_BAT(APINT_TYPE_PREFIX, 12223) +HANDLE_BAT(APINT_TYPE_PREFIX, 12224) +HANDLE_BAT(APINT_TYPE_PREFIX, 12225) +HANDLE_BAT(APINT_TYPE_PREFIX, 12226) +HANDLE_BAT(APINT_TYPE_PREFIX, 12227) +HANDLE_BAT(APINT_TYPE_PREFIX, 12228) +HANDLE_BAT(APINT_TYPE_PREFIX, 12229) +HANDLE_BAT(APINT_TYPE_PREFIX, 12230) +HANDLE_BAT(APINT_TYPE_PREFIX, 12231) +HANDLE_BAT(APINT_TYPE_PREFIX, 12232) +HANDLE_BAT(APINT_TYPE_PREFIX, 12233) +HANDLE_BAT(APINT_TYPE_PREFIX, 12234) +HANDLE_BAT(APINT_TYPE_PREFIX, 12235) +HANDLE_BAT(APINT_TYPE_PREFIX, 12236) +HANDLE_BAT(APINT_TYPE_PREFIX, 12237) +HANDLE_BAT(APINT_TYPE_PREFIX, 12238) +HANDLE_BAT(APINT_TYPE_PREFIX, 12239) +HANDLE_BAT(APINT_TYPE_PREFIX, 12240) +HANDLE_BAT(APINT_TYPE_PREFIX, 12241) +HANDLE_BAT(APINT_TYPE_PREFIX, 12242) +HANDLE_BAT(APINT_TYPE_PREFIX, 12243) +HANDLE_BAT(APINT_TYPE_PREFIX, 12244) +HANDLE_BAT(APINT_TYPE_PREFIX, 12245) +HANDLE_BAT(APINT_TYPE_PREFIX, 12246) +HANDLE_BAT(APINT_TYPE_PREFIX, 12247) +HANDLE_BAT(APINT_TYPE_PREFIX, 12248) +HANDLE_BAT(APINT_TYPE_PREFIX, 12249) +HANDLE_BAT(APINT_TYPE_PREFIX, 12250) +HANDLE_BAT(APINT_TYPE_PREFIX, 12251) +HANDLE_BAT(APINT_TYPE_PREFIX, 12252) +HANDLE_BAT(APINT_TYPE_PREFIX, 12253) +HANDLE_BAT(APINT_TYPE_PREFIX, 12254) +HANDLE_BAT(APINT_TYPE_PREFIX, 12255) +HANDLE_BAT(APINT_TYPE_PREFIX, 12256) +HANDLE_BAT(APINT_TYPE_PREFIX, 12257) +HANDLE_BAT(APINT_TYPE_PREFIX, 12258) +HANDLE_BAT(APINT_TYPE_PREFIX, 12259) +HANDLE_BAT(APINT_TYPE_PREFIX, 12260) +HANDLE_BAT(APINT_TYPE_PREFIX, 12261) +HANDLE_BAT(APINT_TYPE_PREFIX, 12262) +HANDLE_BAT(APINT_TYPE_PREFIX, 12263) +HANDLE_BAT(APINT_TYPE_PREFIX, 12264) +HANDLE_BAT(APINT_TYPE_PREFIX, 12265) +HANDLE_BAT(APINT_TYPE_PREFIX, 12266) +HANDLE_BAT(APINT_TYPE_PREFIX, 12267) +HANDLE_BAT(APINT_TYPE_PREFIX, 12268) +HANDLE_BAT(APINT_TYPE_PREFIX, 12269) +HANDLE_BAT(APINT_TYPE_PREFIX, 12270) +HANDLE_BAT(APINT_TYPE_PREFIX, 12271) +HANDLE_BAT(APINT_TYPE_PREFIX, 12272) +HANDLE_BAT(APINT_TYPE_PREFIX, 12273) +HANDLE_BAT(APINT_TYPE_PREFIX, 12274) +HANDLE_BAT(APINT_TYPE_PREFIX, 12275) +HANDLE_BAT(APINT_TYPE_PREFIX, 12276) +HANDLE_BAT(APINT_TYPE_PREFIX, 12277) +HANDLE_BAT(APINT_TYPE_PREFIX, 12278) +HANDLE_BAT(APINT_TYPE_PREFIX, 12279) +HANDLE_BAT(APINT_TYPE_PREFIX, 12280) +HANDLE_BAT(APINT_TYPE_PREFIX, 12281) +HANDLE_BAT(APINT_TYPE_PREFIX, 12282) +HANDLE_BAT(APINT_TYPE_PREFIX, 12283) +HANDLE_BAT(APINT_TYPE_PREFIX, 12284) +HANDLE_BAT(APINT_TYPE_PREFIX, 12285) +HANDLE_BAT(APINT_TYPE_PREFIX, 12286) +HANDLE_BAT(APINT_TYPE_PREFIX, 12287) +HANDLE_BAT(APINT_TYPE_PREFIX, 12288) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 12 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 12289) +HANDLE_BAT(, 12290) +HANDLE_BAT(, 12291) +HANDLE_BAT(, 12292) +HANDLE_BAT(, 12293) +HANDLE_BAT(, 12294) +HANDLE_BAT(, 12295) +HANDLE_BAT(, 12296) +HANDLE_BAT(, 12297) +HANDLE_BAT(, 12298) +HANDLE_BAT(, 12299) +HANDLE_BAT(, 12300) +HANDLE_BAT(, 12301) +HANDLE_BAT(, 12302) +HANDLE_BAT(, 12303) +HANDLE_BAT(, 12304) +HANDLE_BAT(, 12305) +HANDLE_BAT(, 12306) +HANDLE_BAT(, 12307) +HANDLE_BAT(, 12308) +HANDLE_BAT(, 12309) +HANDLE_BAT(, 12310) +HANDLE_BAT(, 12311) +HANDLE_BAT(, 12312) +HANDLE_BAT(, 12313) +HANDLE_BAT(, 12314) +HANDLE_BAT(, 12315) +HANDLE_BAT(, 12316) +HANDLE_BAT(, 12317) +HANDLE_BAT(, 12318) +HANDLE_BAT(, 12319) +HANDLE_BAT(, 12320) +HANDLE_BAT(, 12321) +HANDLE_BAT(, 12322) +HANDLE_BAT(, 12323) +HANDLE_BAT(, 12324) +HANDLE_BAT(, 12325) +HANDLE_BAT(, 12326) +HANDLE_BAT(, 12327) +HANDLE_BAT(, 12328) +HANDLE_BAT(, 12329) +HANDLE_BAT(, 12330) +HANDLE_BAT(, 12331) +HANDLE_BAT(, 12332) +HANDLE_BAT(, 12333) +HANDLE_BAT(, 12334) +HANDLE_BAT(, 12335) +HANDLE_BAT(, 12336) +HANDLE_BAT(, 12337) +HANDLE_BAT(, 12338) +HANDLE_BAT(, 12339) +HANDLE_BAT(, 12340) +HANDLE_BAT(, 12341) +HANDLE_BAT(, 12342) +HANDLE_BAT(, 12343) +HANDLE_BAT(, 12344) +HANDLE_BAT(, 12345) +HANDLE_BAT(, 12346) +HANDLE_BAT(, 12347) +HANDLE_BAT(, 12348) +HANDLE_BAT(, 12349) +HANDLE_BAT(, 12350) +HANDLE_BAT(, 12351) +HANDLE_BAT(, 12352) +HANDLE_BAT(, 12353) +HANDLE_BAT(, 12354) +HANDLE_BAT(, 12355) +HANDLE_BAT(, 12356) +HANDLE_BAT(, 12357) +HANDLE_BAT(, 12358) +HANDLE_BAT(, 12359) +HANDLE_BAT(, 12360) +HANDLE_BAT(, 12361) +HANDLE_BAT(, 12362) +HANDLE_BAT(, 12363) +HANDLE_BAT(, 12364) +HANDLE_BAT(, 12365) +HANDLE_BAT(, 12366) +HANDLE_BAT(, 12367) +HANDLE_BAT(, 12368) +HANDLE_BAT(, 12369) +HANDLE_BAT(, 12370) +HANDLE_BAT(, 12371) +HANDLE_BAT(, 12372) +HANDLE_BAT(, 12373) +HANDLE_BAT(, 12374) +HANDLE_BAT(, 12375) +HANDLE_BAT(, 12376) +HANDLE_BAT(, 12377) +HANDLE_BAT(, 12378) +HANDLE_BAT(, 12379) +HANDLE_BAT(, 12380) +HANDLE_BAT(, 12381) +HANDLE_BAT(, 12382) +HANDLE_BAT(, 12383) +HANDLE_BAT(, 12384) +HANDLE_BAT(, 12385) +HANDLE_BAT(, 12386) +HANDLE_BAT(, 12387) +HANDLE_BAT(, 12388) +HANDLE_BAT(, 12389) +HANDLE_BAT(, 12390) +HANDLE_BAT(, 12391) +HANDLE_BAT(, 12392) +HANDLE_BAT(, 12393) +HANDLE_BAT(, 12394) +HANDLE_BAT(, 12395) +HANDLE_BAT(, 12396) +HANDLE_BAT(, 12397) +HANDLE_BAT(, 12398) +HANDLE_BAT(, 12399) +HANDLE_BAT(, 12400) +HANDLE_BAT(, 12401) +HANDLE_BAT(, 12402) +HANDLE_BAT(, 12403) +HANDLE_BAT(, 12404) +HANDLE_BAT(, 12405) +HANDLE_BAT(, 12406) +HANDLE_BAT(, 12407) +HANDLE_BAT(, 12408) +HANDLE_BAT(, 12409) +HANDLE_BAT(, 12410) +HANDLE_BAT(, 12411) +HANDLE_BAT(, 12412) +HANDLE_BAT(, 12413) +HANDLE_BAT(, 12414) +HANDLE_BAT(, 12415) +HANDLE_BAT(, 12416) +HANDLE_BAT(, 12417) +HANDLE_BAT(, 12418) +HANDLE_BAT(, 12419) +HANDLE_BAT(, 12420) +HANDLE_BAT(, 12421) +HANDLE_BAT(, 12422) +HANDLE_BAT(, 12423) +HANDLE_BAT(, 12424) +HANDLE_BAT(, 12425) +HANDLE_BAT(, 12426) +HANDLE_BAT(, 12427) +HANDLE_BAT(, 12428) +HANDLE_BAT(, 12429) +HANDLE_BAT(, 12430) +HANDLE_BAT(, 12431) +HANDLE_BAT(, 12432) +HANDLE_BAT(, 12433) +HANDLE_BAT(, 12434) +HANDLE_BAT(, 12435) +HANDLE_BAT(, 12436) +HANDLE_BAT(, 12437) +HANDLE_BAT(, 12438) +HANDLE_BAT(, 12439) +HANDLE_BAT(, 12440) +HANDLE_BAT(, 12441) +HANDLE_BAT(, 12442) +HANDLE_BAT(, 12443) +HANDLE_BAT(, 12444) +HANDLE_BAT(, 12445) +HANDLE_BAT(, 12446) +HANDLE_BAT(, 12447) +HANDLE_BAT(, 12448) +HANDLE_BAT(, 12449) +HANDLE_BAT(, 12450) +HANDLE_BAT(, 12451) +HANDLE_BAT(, 12452) +HANDLE_BAT(, 12453) +HANDLE_BAT(, 12454) +HANDLE_BAT(, 12455) +HANDLE_BAT(, 12456) +HANDLE_BAT(, 12457) +HANDLE_BAT(, 12458) +HANDLE_BAT(, 12459) +HANDLE_BAT(, 12460) +HANDLE_BAT(, 12461) +HANDLE_BAT(, 12462) +HANDLE_BAT(, 12463) +HANDLE_BAT(, 12464) +HANDLE_BAT(, 12465) +HANDLE_BAT(, 12466) +HANDLE_BAT(, 12467) +HANDLE_BAT(, 12468) +HANDLE_BAT(, 12469) +HANDLE_BAT(, 12470) +HANDLE_BAT(, 12471) +HANDLE_BAT(, 12472) +HANDLE_BAT(, 12473) +HANDLE_BAT(, 12474) +HANDLE_BAT(, 12475) +HANDLE_BAT(, 12476) +HANDLE_BAT(, 12477) +HANDLE_BAT(, 12478) +HANDLE_BAT(, 12479) +HANDLE_BAT(, 12480) +HANDLE_BAT(, 12481) +HANDLE_BAT(, 12482) +HANDLE_BAT(, 12483) +HANDLE_BAT(, 12484) +HANDLE_BAT(, 12485) +HANDLE_BAT(, 12486) +HANDLE_BAT(, 12487) +HANDLE_BAT(, 12488) +HANDLE_BAT(, 12489) +HANDLE_BAT(, 12490) +HANDLE_BAT(, 12491) +HANDLE_BAT(, 12492) +HANDLE_BAT(, 12493) +HANDLE_BAT(, 12494) +HANDLE_BAT(, 12495) +HANDLE_BAT(, 12496) +HANDLE_BAT(, 12497) +HANDLE_BAT(, 12498) +HANDLE_BAT(, 12499) +HANDLE_BAT(, 12500) +HANDLE_BAT(, 12501) +HANDLE_BAT(, 12502) +HANDLE_BAT(, 12503) +HANDLE_BAT(, 12504) +HANDLE_BAT(, 12505) +HANDLE_BAT(, 12506) +HANDLE_BAT(, 12507) +HANDLE_BAT(, 12508) +HANDLE_BAT(, 12509) +HANDLE_BAT(, 12510) +HANDLE_BAT(, 12511) +HANDLE_BAT(, 12512) +HANDLE_BAT(, 12513) +HANDLE_BAT(, 12514) +HANDLE_BAT(, 12515) +HANDLE_BAT(, 12516) +HANDLE_BAT(, 12517) +HANDLE_BAT(, 12518) +HANDLE_BAT(, 12519) +HANDLE_BAT(, 12520) +HANDLE_BAT(, 12521) +HANDLE_BAT(, 12522) +HANDLE_BAT(, 12523) +HANDLE_BAT(, 12524) +HANDLE_BAT(, 12525) +HANDLE_BAT(, 12526) +HANDLE_BAT(, 12527) +HANDLE_BAT(, 12528) +HANDLE_BAT(, 12529) +HANDLE_BAT(, 12530) +HANDLE_BAT(, 12531) +HANDLE_BAT(, 12532) +HANDLE_BAT(, 12533) +HANDLE_BAT(, 12534) +HANDLE_BAT(, 12535) +HANDLE_BAT(, 12536) +HANDLE_BAT(, 12537) +HANDLE_BAT(, 12538) +HANDLE_BAT(, 12539) +HANDLE_BAT(, 12540) +HANDLE_BAT(, 12541) +HANDLE_BAT(, 12542) +HANDLE_BAT(, 12543) +HANDLE_BAT(, 12544) +HANDLE_BAT(, 12545) +HANDLE_BAT(, 12546) +HANDLE_BAT(, 12547) +HANDLE_BAT(, 12548) +HANDLE_BAT(, 12549) +HANDLE_BAT(, 12550) +HANDLE_BAT(, 12551) +HANDLE_BAT(, 12552) +HANDLE_BAT(, 12553) +HANDLE_BAT(, 12554) +HANDLE_BAT(, 12555) +HANDLE_BAT(, 12556) +HANDLE_BAT(, 12557) +HANDLE_BAT(, 12558) +HANDLE_BAT(, 12559) +HANDLE_BAT(, 12560) +HANDLE_BAT(, 12561) +HANDLE_BAT(, 12562) +HANDLE_BAT(, 12563) +HANDLE_BAT(, 12564) +HANDLE_BAT(, 12565) +HANDLE_BAT(, 12566) +HANDLE_BAT(, 12567) +HANDLE_BAT(, 12568) +HANDLE_BAT(, 12569) +HANDLE_BAT(, 12570) +HANDLE_BAT(, 12571) +HANDLE_BAT(, 12572) +HANDLE_BAT(, 12573) +HANDLE_BAT(, 12574) +HANDLE_BAT(, 12575) +HANDLE_BAT(, 12576) +HANDLE_BAT(, 12577) +HANDLE_BAT(, 12578) +HANDLE_BAT(, 12579) +HANDLE_BAT(, 12580) +HANDLE_BAT(, 12581) +HANDLE_BAT(, 12582) +HANDLE_BAT(, 12583) +HANDLE_BAT(, 12584) +HANDLE_BAT(, 12585) +HANDLE_BAT(, 12586) +HANDLE_BAT(, 12587) +HANDLE_BAT(, 12588) +HANDLE_BAT(, 12589) +HANDLE_BAT(, 12590) +HANDLE_BAT(, 12591) +HANDLE_BAT(, 12592) +HANDLE_BAT(, 12593) +HANDLE_BAT(, 12594) +HANDLE_BAT(, 12595) +HANDLE_BAT(, 12596) +HANDLE_BAT(, 12597) +HANDLE_BAT(, 12598) +HANDLE_BAT(, 12599) +HANDLE_BAT(, 12600) +HANDLE_BAT(, 12601) +HANDLE_BAT(, 12602) +HANDLE_BAT(, 12603) +HANDLE_BAT(, 12604) +HANDLE_BAT(, 12605) +HANDLE_BAT(, 12606) +HANDLE_BAT(, 12607) +HANDLE_BAT(, 12608) +HANDLE_BAT(, 12609) +HANDLE_BAT(, 12610) +HANDLE_BAT(, 12611) +HANDLE_BAT(, 12612) +HANDLE_BAT(, 12613) +HANDLE_BAT(, 12614) +HANDLE_BAT(, 12615) +HANDLE_BAT(, 12616) +HANDLE_BAT(, 12617) +HANDLE_BAT(, 12618) +HANDLE_BAT(, 12619) +HANDLE_BAT(, 12620) +HANDLE_BAT(, 12621) +HANDLE_BAT(, 12622) +HANDLE_BAT(, 12623) +HANDLE_BAT(, 12624) +HANDLE_BAT(, 12625) +HANDLE_BAT(, 12626) +HANDLE_BAT(, 12627) +HANDLE_BAT(, 12628) +HANDLE_BAT(, 12629) +HANDLE_BAT(, 12630) +HANDLE_BAT(, 12631) +HANDLE_BAT(, 12632) +HANDLE_BAT(, 12633) +HANDLE_BAT(, 12634) +HANDLE_BAT(, 12635) +HANDLE_BAT(, 12636) +HANDLE_BAT(, 12637) +HANDLE_BAT(, 12638) +HANDLE_BAT(, 12639) +HANDLE_BAT(, 12640) +HANDLE_BAT(, 12641) +HANDLE_BAT(, 12642) +HANDLE_BAT(, 12643) +HANDLE_BAT(, 12644) +HANDLE_BAT(, 12645) +HANDLE_BAT(, 12646) +HANDLE_BAT(, 12647) +HANDLE_BAT(, 12648) +HANDLE_BAT(, 12649) +HANDLE_BAT(, 12650) +HANDLE_BAT(, 12651) +HANDLE_BAT(, 12652) +HANDLE_BAT(, 12653) +HANDLE_BAT(, 12654) +HANDLE_BAT(, 12655) +HANDLE_BAT(, 12656) +HANDLE_BAT(, 12657) +HANDLE_BAT(, 12658) +HANDLE_BAT(, 12659) +HANDLE_BAT(, 12660) +HANDLE_BAT(, 12661) +HANDLE_BAT(, 12662) +HANDLE_BAT(, 12663) +HANDLE_BAT(, 12664) +HANDLE_BAT(, 12665) +HANDLE_BAT(, 12666) +HANDLE_BAT(, 12667) +HANDLE_BAT(, 12668) +HANDLE_BAT(, 12669) +HANDLE_BAT(, 12670) +HANDLE_BAT(, 12671) +HANDLE_BAT(, 12672) +HANDLE_BAT(, 12673) +HANDLE_BAT(, 12674) +HANDLE_BAT(, 12675) +HANDLE_BAT(, 12676) +HANDLE_BAT(, 12677) +HANDLE_BAT(, 12678) +HANDLE_BAT(, 12679) +HANDLE_BAT(, 12680) +HANDLE_BAT(, 12681) +HANDLE_BAT(, 12682) +HANDLE_BAT(, 12683) +HANDLE_BAT(, 12684) +HANDLE_BAT(, 12685) +HANDLE_BAT(, 12686) +HANDLE_BAT(, 12687) +HANDLE_BAT(, 12688) +HANDLE_BAT(, 12689) +HANDLE_BAT(, 12690) +HANDLE_BAT(, 12691) +HANDLE_BAT(, 12692) +HANDLE_BAT(, 12693) +HANDLE_BAT(, 12694) +HANDLE_BAT(, 12695) +HANDLE_BAT(, 12696) +HANDLE_BAT(, 12697) +HANDLE_BAT(, 12698) +HANDLE_BAT(, 12699) +HANDLE_BAT(, 12700) +HANDLE_BAT(, 12701) +HANDLE_BAT(, 12702) +HANDLE_BAT(, 12703) +HANDLE_BAT(, 12704) +HANDLE_BAT(, 12705) +HANDLE_BAT(, 12706) +HANDLE_BAT(, 12707) +HANDLE_BAT(, 12708) +HANDLE_BAT(, 12709) +HANDLE_BAT(, 12710) +HANDLE_BAT(, 12711) +HANDLE_BAT(, 12712) +HANDLE_BAT(, 12713) +HANDLE_BAT(, 12714) +HANDLE_BAT(, 12715) +HANDLE_BAT(, 12716) +HANDLE_BAT(, 12717) +HANDLE_BAT(, 12718) +HANDLE_BAT(, 12719) +HANDLE_BAT(, 12720) +HANDLE_BAT(, 12721) +HANDLE_BAT(, 12722) +HANDLE_BAT(, 12723) +HANDLE_BAT(, 12724) +HANDLE_BAT(, 12725) +HANDLE_BAT(, 12726) +HANDLE_BAT(, 12727) +HANDLE_BAT(, 12728) +HANDLE_BAT(, 12729) +HANDLE_BAT(, 12730) +HANDLE_BAT(, 12731) +HANDLE_BAT(, 12732) +HANDLE_BAT(, 12733) +HANDLE_BAT(, 12734) +HANDLE_BAT(, 12735) +HANDLE_BAT(, 12736) +HANDLE_BAT(, 12737) +HANDLE_BAT(, 12738) +HANDLE_BAT(, 12739) +HANDLE_BAT(, 12740) +HANDLE_BAT(, 12741) +HANDLE_BAT(, 12742) +HANDLE_BAT(, 12743) +HANDLE_BAT(, 12744) +HANDLE_BAT(, 12745) +HANDLE_BAT(, 12746) +HANDLE_BAT(, 12747) +HANDLE_BAT(, 12748) +HANDLE_BAT(, 12749) +HANDLE_BAT(, 12750) +HANDLE_BAT(, 12751) +HANDLE_BAT(, 12752) +HANDLE_BAT(, 12753) +HANDLE_BAT(, 12754) +HANDLE_BAT(, 12755) +HANDLE_BAT(, 12756) +HANDLE_BAT(, 12757) +HANDLE_BAT(, 12758) +HANDLE_BAT(, 12759) +HANDLE_BAT(, 12760) +HANDLE_BAT(, 12761) +HANDLE_BAT(, 12762) +HANDLE_BAT(, 12763) +HANDLE_BAT(, 12764) +HANDLE_BAT(, 12765) +HANDLE_BAT(, 12766) +HANDLE_BAT(, 12767) +HANDLE_BAT(, 12768) +HANDLE_BAT(, 12769) +HANDLE_BAT(, 12770) +HANDLE_BAT(, 12771) +HANDLE_BAT(, 12772) +HANDLE_BAT(, 12773) +HANDLE_BAT(, 12774) +HANDLE_BAT(, 12775) +HANDLE_BAT(, 12776) +HANDLE_BAT(, 12777) +HANDLE_BAT(, 12778) +HANDLE_BAT(, 12779) +HANDLE_BAT(, 12780) +HANDLE_BAT(, 12781) +HANDLE_BAT(, 12782) +HANDLE_BAT(, 12783) +HANDLE_BAT(, 12784) +HANDLE_BAT(, 12785) +HANDLE_BAT(, 12786) +HANDLE_BAT(, 12787) +HANDLE_BAT(, 12788) +HANDLE_BAT(, 12789) +HANDLE_BAT(, 12790) +HANDLE_BAT(, 12791) +HANDLE_BAT(, 12792) +HANDLE_BAT(, 12793) +HANDLE_BAT(, 12794) +HANDLE_BAT(, 12795) +HANDLE_BAT(, 12796) +HANDLE_BAT(, 12797) +HANDLE_BAT(, 12798) +HANDLE_BAT(, 12799) +HANDLE_BAT(, 12800) +HANDLE_BAT(, 12801) +HANDLE_BAT(, 12802) +HANDLE_BAT(, 12803) +HANDLE_BAT(, 12804) +HANDLE_BAT(, 12805) +HANDLE_BAT(, 12806) +HANDLE_BAT(, 12807) +HANDLE_BAT(, 12808) +HANDLE_BAT(, 12809) +HANDLE_BAT(, 12810) +HANDLE_BAT(, 12811) +HANDLE_BAT(, 12812) +HANDLE_BAT(, 12813) +HANDLE_BAT(, 12814) +HANDLE_BAT(, 12815) +HANDLE_BAT(, 12816) +HANDLE_BAT(, 12817) +HANDLE_BAT(, 12818) +HANDLE_BAT(, 12819) +HANDLE_BAT(, 12820) +HANDLE_BAT(, 12821) +HANDLE_BAT(, 12822) +HANDLE_BAT(, 12823) +HANDLE_BAT(, 12824) +HANDLE_BAT(, 12825) +HANDLE_BAT(, 12826) +HANDLE_BAT(, 12827) +HANDLE_BAT(, 12828) +HANDLE_BAT(, 12829) +HANDLE_BAT(, 12830) +HANDLE_BAT(, 12831) +HANDLE_BAT(, 12832) +HANDLE_BAT(, 12833) +HANDLE_BAT(, 12834) +HANDLE_BAT(, 12835) +HANDLE_BAT(, 12836) +HANDLE_BAT(, 12837) +HANDLE_BAT(, 12838) +HANDLE_BAT(, 12839) +HANDLE_BAT(, 12840) +HANDLE_BAT(, 12841) +HANDLE_BAT(, 12842) +HANDLE_BAT(, 12843) +HANDLE_BAT(, 12844) +HANDLE_BAT(, 12845) +HANDLE_BAT(, 12846) +HANDLE_BAT(, 12847) +HANDLE_BAT(, 12848) +HANDLE_BAT(, 12849) +HANDLE_BAT(, 12850) +HANDLE_BAT(, 12851) +HANDLE_BAT(, 12852) +HANDLE_BAT(, 12853) +HANDLE_BAT(, 12854) +HANDLE_BAT(, 12855) +HANDLE_BAT(, 12856) +HANDLE_BAT(, 12857) +HANDLE_BAT(, 12858) +HANDLE_BAT(, 12859) +HANDLE_BAT(, 12860) +HANDLE_BAT(, 12861) +HANDLE_BAT(, 12862) +HANDLE_BAT(, 12863) +HANDLE_BAT(, 12864) +HANDLE_BAT(, 12865) +HANDLE_BAT(, 12866) +HANDLE_BAT(, 12867) +HANDLE_BAT(, 12868) +HANDLE_BAT(, 12869) +HANDLE_BAT(, 12870) +HANDLE_BAT(, 12871) +HANDLE_BAT(, 12872) +HANDLE_BAT(, 12873) +HANDLE_BAT(, 12874) +HANDLE_BAT(, 12875) +HANDLE_BAT(, 12876) +HANDLE_BAT(, 12877) +HANDLE_BAT(, 12878) +HANDLE_BAT(, 12879) +HANDLE_BAT(, 12880) +HANDLE_BAT(, 12881) +HANDLE_BAT(, 12882) +HANDLE_BAT(, 12883) +HANDLE_BAT(, 12884) +HANDLE_BAT(, 12885) +HANDLE_BAT(, 12886) +HANDLE_BAT(, 12887) +HANDLE_BAT(, 12888) +HANDLE_BAT(, 12889) +HANDLE_BAT(, 12890) +HANDLE_BAT(, 12891) +HANDLE_BAT(, 12892) +HANDLE_BAT(, 12893) +HANDLE_BAT(, 12894) +HANDLE_BAT(, 12895) +HANDLE_BAT(, 12896) +HANDLE_BAT(, 12897) +HANDLE_BAT(, 12898) +HANDLE_BAT(, 12899) +HANDLE_BAT(, 12900) +HANDLE_BAT(, 12901) +HANDLE_BAT(, 12902) +HANDLE_BAT(, 12903) +HANDLE_BAT(, 12904) +HANDLE_BAT(, 12905) +HANDLE_BAT(, 12906) +HANDLE_BAT(, 12907) +HANDLE_BAT(, 12908) +HANDLE_BAT(, 12909) +HANDLE_BAT(, 12910) +HANDLE_BAT(, 12911) +HANDLE_BAT(, 12912) +HANDLE_BAT(, 12913) +HANDLE_BAT(, 12914) +HANDLE_BAT(, 12915) +HANDLE_BAT(, 12916) +HANDLE_BAT(, 12917) +HANDLE_BAT(, 12918) +HANDLE_BAT(, 12919) +HANDLE_BAT(, 12920) +HANDLE_BAT(, 12921) +HANDLE_BAT(, 12922) +HANDLE_BAT(, 12923) +HANDLE_BAT(, 12924) +HANDLE_BAT(, 12925) +HANDLE_BAT(, 12926) +HANDLE_BAT(, 12927) +HANDLE_BAT(, 12928) +HANDLE_BAT(, 12929) +HANDLE_BAT(, 12930) +HANDLE_BAT(, 12931) +HANDLE_BAT(, 12932) +HANDLE_BAT(, 12933) +HANDLE_BAT(, 12934) +HANDLE_BAT(, 12935) +HANDLE_BAT(, 12936) +HANDLE_BAT(, 12937) +HANDLE_BAT(, 12938) +HANDLE_BAT(, 12939) +HANDLE_BAT(, 12940) +HANDLE_BAT(, 12941) +HANDLE_BAT(, 12942) +HANDLE_BAT(, 12943) +HANDLE_BAT(, 12944) +HANDLE_BAT(, 12945) +HANDLE_BAT(, 12946) +HANDLE_BAT(, 12947) +HANDLE_BAT(, 12948) +HANDLE_BAT(, 12949) +HANDLE_BAT(, 12950) +HANDLE_BAT(, 12951) +HANDLE_BAT(, 12952) +HANDLE_BAT(, 12953) +HANDLE_BAT(, 12954) +HANDLE_BAT(, 12955) +HANDLE_BAT(, 12956) +HANDLE_BAT(, 12957) +HANDLE_BAT(, 12958) +HANDLE_BAT(, 12959) +HANDLE_BAT(, 12960) +HANDLE_BAT(, 12961) +HANDLE_BAT(, 12962) +HANDLE_BAT(, 12963) +HANDLE_BAT(, 12964) +HANDLE_BAT(, 12965) +HANDLE_BAT(, 12966) +HANDLE_BAT(, 12967) +HANDLE_BAT(, 12968) +HANDLE_BAT(, 12969) +HANDLE_BAT(, 12970) +HANDLE_BAT(, 12971) +HANDLE_BAT(, 12972) +HANDLE_BAT(, 12973) +HANDLE_BAT(, 12974) +HANDLE_BAT(, 12975) +HANDLE_BAT(, 12976) +HANDLE_BAT(, 12977) +HANDLE_BAT(, 12978) +HANDLE_BAT(, 12979) +HANDLE_BAT(, 12980) +HANDLE_BAT(, 12981) +HANDLE_BAT(, 12982) +HANDLE_BAT(, 12983) +HANDLE_BAT(, 12984) +HANDLE_BAT(, 12985) +HANDLE_BAT(, 12986) +HANDLE_BAT(, 12987) +HANDLE_BAT(, 12988) +HANDLE_BAT(, 12989) +HANDLE_BAT(, 12990) +HANDLE_BAT(, 12991) +HANDLE_BAT(, 12992) +HANDLE_BAT(, 12993) +HANDLE_BAT(, 12994) +HANDLE_BAT(, 12995) +HANDLE_BAT(, 12996) +HANDLE_BAT(, 12997) +HANDLE_BAT(, 12998) +HANDLE_BAT(, 12999) +HANDLE_BAT(, 13000) +HANDLE_BAT(, 13001) +HANDLE_BAT(, 13002) +HANDLE_BAT(, 13003) +HANDLE_BAT(, 13004) +HANDLE_BAT(, 13005) +HANDLE_BAT(, 13006) +HANDLE_BAT(, 13007) +HANDLE_BAT(, 13008) +HANDLE_BAT(, 13009) +HANDLE_BAT(, 13010) +HANDLE_BAT(, 13011) +HANDLE_BAT(, 13012) +HANDLE_BAT(, 13013) +HANDLE_BAT(, 13014) +HANDLE_BAT(, 13015) +HANDLE_BAT(, 13016) +HANDLE_BAT(, 13017) +HANDLE_BAT(, 13018) +HANDLE_BAT(, 13019) +HANDLE_BAT(, 13020) +HANDLE_BAT(, 13021) +HANDLE_BAT(, 13022) +HANDLE_BAT(, 13023) +HANDLE_BAT(, 13024) +HANDLE_BAT(, 13025) +HANDLE_BAT(, 13026) +HANDLE_BAT(, 13027) +HANDLE_BAT(, 13028) +HANDLE_BAT(, 13029) +HANDLE_BAT(, 13030) +HANDLE_BAT(, 13031) +HANDLE_BAT(, 13032) +HANDLE_BAT(, 13033) +HANDLE_BAT(, 13034) +HANDLE_BAT(, 13035) +HANDLE_BAT(, 13036) +HANDLE_BAT(, 13037) +HANDLE_BAT(, 13038) +HANDLE_BAT(, 13039) +HANDLE_BAT(, 13040) +HANDLE_BAT(, 13041) +HANDLE_BAT(, 13042) +HANDLE_BAT(, 13043) +HANDLE_BAT(, 13044) +HANDLE_BAT(, 13045) +HANDLE_BAT(, 13046) +HANDLE_BAT(, 13047) +HANDLE_BAT(, 13048) +HANDLE_BAT(, 13049) +HANDLE_BAT(, 13050) +HANDLE_BAT(, 13051) +HANDLE_BAT(, 13052) +HANDLE_BAT(, 13053) +HANDLE_BAT(, 13054) +HANDLE_BAT(, 13055) +HANDLE_BAT(, 13056) +HANDLE_BAT(, 13057) +HANDLE_BAT(, 13058) +HANDLE_BAT(, 13059) +HANDLE_BAT(, 13060) +HANDLE_BAT(, 13061) +HANDLE_BAT(, 13062) +HANDLE_BAT(, 13063) +HANDLE_BAT(, 13064) +HANDLE_BAT(, 13065) +HANDLE_BAT(, 13066) +HANDLE_BAT(, 13067) +HANDLE_BAT(, 13068) +HANDLE_BAT(, 13069) +HANDLE_BAT(, 13070) +HANDLE_BAT(, 13071) +HANDLE_BAT(, 13072) +HANDLE_BAT(, 13073) +HANDLE_BAT(, 13074) +HANDLE_BAT(, 13075) +HANDLE_BAT(, 13076) +HANDLE_BAT(, 13077) +HANDLE_BAT(, 13078) +HANDLE_BAT(, 13079) +HANDLE_BAT(, 13080) +HANDLE_BAT(, 13081) +HANDLE_BAT(, 13082) +HANDLE_BAT(, 13083) +HANDLE_BAT(, 13084) +HANDLE_BAT(, 13085) +HANDLE_BAT(, 13086) +HANDLE_BAT(, 13087) +HANDLE_BAT(, 13088) +HANDLE_BAT(, 13089) +HANDLE_BAT(, 13090) +HANDLE_BAT(, 13091) +HANDLE_BAT(, 13092) +HANDLE_BAT(, 13093) +HANDLE_BAT(, 13094) +HANDLE_BAT(, 13095) +HANDLE_BAT(, 13096) +HANDLE_BAT(, 13097) +HANDLE_BAT(, 13098) +HANDLE_BAT(, 13099) +HANDLE_BAT(, 13100) +HANDLE_BAT(, 13101) +HANDLE_BAT(, 13102) +HANDLE_BAT(, 13103) +HANDLE_BAT(, 13104) +HANDLE_BAT(, 13105) +HANDLE_BAT(, 13106) +HANDLE_BAT(, 13107) +HANDLE_BAT(, 13108) +HANDLE_BAT(, 13109) +HANDLE_BAT(, 13110) +HANDLE_BAT(, 13111) +HANDLE_BAT(, 13112) +HANDLE_BAT(, 13113) +HANDLE_BAT(, 13114) +HANDLE_BAT(, 13115) +HANDLE_BAT(, 13116) +HANDLE_BAT(, 13117) +HANDLE_BAT(, 13118) +HANDLE_BAT(, 13119) +HANDLE_BAT(, 13120) +HANDLE_BAT(, 13121) +HANDLE_BAT(, 13122) +HANDLE_BAT(, 13123) +HANDLE_BAT(, 13124) +HANDLE_BAT(, 13125) +HANDLE_BAT(, 13126) +HANDLE_BAT(, 13127) +HANDLE_BAT(, 13128) +HANDLE_BAT(, 13129) +HANDLE_BAT(, 13130) +HANDLE_BAT(, 13131) +HANDLE_BAT(, 13132) +HANDLE_BAT(, 13133) +HANDLE_BAT(, 13134) +HANDLE_BAT(, 13135) +HANDLE_BAT(, 13136) +HANDLE_BAT(, 13137) +HANDLE_BAT(, 13138) +HANDLE_BAT(, 13139) +HANDLE_BAT(, 13140) +HANDLE_BAT(, 13141) +HANDLE_BAT(, 13142) +HANDLE_BAT(, 13143) +HANDLE_BAT(, 13144) +HANDLE_BAT(, 13145) +HANDLE_BAT(, 13146) +HANDLE_BAT(, 13147) +HANDLE_BAT(, 13148) +HANDLE_BAT(, 13149) +HANDLE_BAT(, 13150) +HANDLE_BAT(, 13151) +HANDLE_BAT(, 13152) +HANDLE_BAT(, 13153) +HANDLE_BAT(, 13154) +HANDLE_BAT(, 13155) +HANDLE_BAT(, 13156) +HANDLE_BAT(, 13157) +HANDLE_BAT(, 13158) +HANDLE_BAT(, 13159) +HANDLE_BAT(, 13160) +HANDLE_BAT(, 13161) +HANDLE_BAT(, 13162) +HANDLE_BAT(, 13163) +HANDLE_BAT(, 13164) +HANDLE_BAT(, 13165) +HANDLE_BAT(, 13166) +HANDLE_BAT(, 13167) +HANDLE_BAT(, 13168) +HANDLE_BAT(, 13169) +HANDLE_BAT(, 13170) +HANDLE_BAT(, 13171) +HANDLE_BAT(, 13172) +HANDLE_BAT(, 13173) +HANDLE_BAT(, 13174) +HANDLE_BAT(, 13175) +HANDLE_BAT(, 13176) +HANDLE_BAT(, 13177) +HANDLE_BAT(, 13178) +HANDLE_BAT(, 13179) +HANDLE_BAT(, 13180) +HANDLE_BAT(, 13181) +HANDLE_BAT(, 13182) +HANDLE_BAT(, 13183) +HANDLE_BAT(, 13184) +HANDLE_BAT(, 13185) +HANDLE_BAT(, 13186) +HANDLE_BAT(, 13187) +HANDLE_BAT(, 13188) +HANDLE_BAT(, 13189) +HANDLE_BAT(, 13190) +HANDLE_BAT(, 13191) +HANDLE_BAT(, 13192) +HANDLE_BAT(, 13193) +HANDLE_BAT(, 13194) +HANDLE_BAT(, 13195) +HANDLE_BAT(, 13196) +HANDLE_BAT(, 13197) +HANDLE_BAT(, 13198) +HANDLE_BAT(, 13199) +HANDLE_BAT(, 13200) +HANDLE_BAT(, 13201) +HANDLE_BAT(, 13202) +HANDLE_BAT(, 13203) +HANDLE_BAT(, 13204) +HANDLE_BAT(, 13205) +HANDLE_BAT(, 13206) +HANDLE_BAT(, 13207) +HANDLE_BAT(, 13208) +HANDLE_BAT(, 13209) +HANDLE_BAT(, 13210) +HANDLE_BAT(, 13211) +HANDLE_BAT(, 13212) +HANDLE_BAT(, 13213) +HANDLE_BAT(, 13214) +HANDLE_BAT(, 13215) +HANDLE_BAT(, 13216) +HANDLE_BAT(, 13217) +HANDLE_BAT(, 13218) +HANDLE_BAT(, 13219) +HANDLE_BAT(, 13220) +HANDLE_BAT(, 13221) +HANDLE_BAT(, 13222) +HANDLE_BAT(, 13223) +HANDLE_BAT(, 13224) +HANDLE_BAT(, 13225) +HANDLE_BAT(, 13226) +HANDLE_BAT(, 13227) +HANDLE_BAT(, 13228) +HANDLE_BAT(, 13229) +HANDLE_BAT(, 13230) +HANDLE_BAT(, 13231) +HANDLE_BAT(, 13232) +HANDLE_BAT(, 13233) +HANDLE_BAT(, 13234) +HANDLE_BAT(, 13235) +HANDLE_BAT(, 13236) +HANDLE_BAT(, 13237) +HANDLE_BAT(, 13238) +HANDLE_BAT(, 13239) +HANDLE_BAT(, 13240) +HANDLE_BAT(, 13241) +HANDLE_BAT(, 13242) +HANDLE_BAT(, 13243) +HANDLE_BAT(, 13244) +HANDLE_BAT(, 13245) +HANDLE_BAT(, 13246) +HANDLE_BAT(, 13247) +HANDLE_BAT(, 13248) +HANDLE_BAT(, 13249) +HANDLE_BAT(, 13250) +HANDLE_BAT(, 13251) +HANDLE_BAT(, 13252) +HANDLE_BAT(, 13253) +HANDLE_BAT(, 13254) +HANDLE_BAT(, 13255) +HANDLE_BAT(, 13256) +HANDLE_BAT(, 13257) +HANDLE_BAT(, 13258) +HANDLE_BAT(, 13259) +HANDLE_BAT(, 13260) +HANDLE_BAT(, 13261) +HANDLE_BAT(, 13262) +HANDLE_BAT(, 13263) +HANDLE_BAT(, 13264) +HANDLE_BAT(, 13265) +HANDLE_BAT(, 13266) +HANDLE_BAT(, 13267) +HANDLE_BAT(, 13268) +HANDLE_BAT(, 13269) +HANDLE_BAT(, 13270) +HANDLE_BAT(, 13271) +HANDLE_BAT(, 13272) +HANDLE_BAT(, 13273) +HANDLE_BAT(, 13274) +HANDLE_BAT(, 13275) +HANDLE_BAT(, 13276) +HANDLE_BAT(, 13277) +HANDLE_BAT(, 13278) +HANDLE_BAT(, 13279) +HANDLE_BAT(, 13280) +HANDLE_BAT(, 13281) +HANDLE_BAT(, 13282) +HANDLE_BAT(, 13283) +HANDLE_BAT(, 13284) +HANDLE_BAT(, 13285) +HANDLE_BAT(, 13286) +HANDLE_BAT(, 13287) +HANDLE_BAT(, 13288) +HANDLE_BAT(, 13289) +HANDLE_BAT(, 13290) +HANDLE_BAT(, 13291) +HANDLE_BAT(, 13292) +HANDLE_BAT(, 13293) +HANDLE_BAT(, 13294) +HANDLE_BAT(, 13295) +HANDLE_BAT(, 13296) +HANDLE_BAT(, 13297) +HANDLE_BAT(, 13298) +HANDLE_BAT(, 13299) +HANDLE_BAT(, 13300) +HANDLE_BAT(, 13301) +HANDLE_BAT(, 13302) +HANDLE_BAT(, 13303) +HANDLE_BAT(, 13304) +HANDLE_BAT(, 13305) +HANDLE_BAT(, 13306) +HANDLE_BAT(, 13307) +HANDLE_BAT(, 13308) +HANDLE_BAT(, 13309) +HANDLE_BAT(, 13310) +HANDLE_BAT(, 13311) +HANDLE_BAT(, 13312) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 12289) +HANDLE_BAT(APINT_TYPE_PREFIX, 12290) +HANDLE_BAT(APINT_TYPE_PREFIX, 12291) +HANDLE_BAT(APINT_TYPE_PREFIX, 12292) +HANDLE_BAT(APINT_TYPE_PREFIX, 12293) +HANDLE_BAT(APINT_TYPE_PREFIX, 12294) +HANDLE_BAT(APINT_TYPE_PREFIX, 12295) +HANDLE_BAT(APINT_TYPE_PREFIX, 12296) +HANDLE_BAT(APINT_TYPE_PREFIX, 12297) +HANDLE_BAT(APINT_TYPE_PREFIX, 12298) +HANDLE_BAT(APINT_TYPE_PREFIX, 12299) +HANDLE_BAT(APINT_TYPE_PREFIX, 12300) +HANDLE_BAT(APINT_TYPE_PREFIX, 12301) +HANDLE_BAT(APINT_TYPE_PREFIX, 12302) +HANDLE_BAT(APINT_TYPE_PREFIX, 12303) +HANDLE_BAT(APINT_TYPE_PREFIX, 12304) +HANDLE_BAT(APINT_TYPE_PREFIX, 12305) +HANDLE_BAT(APINT_TYPE_PREFIX, 12306) +HANDLE_BAT(APINT_TYPE_PREFIX, 12307) +HANDLE_BAT(APINT_TYPE_PREFIX, 12308) +HANDLE_BAT(APINT_TYPE_PREFIX, 12309) +HANDLE_BAT(APINT_TYPE_PREFIX, 12310) +HANDLE_BAT(APINT_TYPE_PREFIX, 12311) +HANDLE_BAT(APINT_TYPE_PREFIX, 12312) +HANDLE_BAT(APINT_TYPE_PREFIX, 12313) +HANDLE_BAT(APINT_TYPE_PREFIX, 12314) +HANDLE_BAT(APINT_TYPE_PREFIX, 12315) +HANDLE_BAT(APINT_TYPE_PREFIX, 12316) +HANDLE_BAT(APINT_TYPE_PREFIX, 12317) +HANDLE_BAT(APINT_TYPE_PREFIX, 12318) +HANDLE_BAT(APINT_TYPE_PREFIX, 12319) +HANDLE_BAT(APINT_TYPE_PREFIX, 12320) +HANDLE_BAT(APINT_TYPE_PREFIX, 12321) +HANDLE_BAT(APINT_TYPE_PREFIX, 12322) +HANDLE_BAT(APINT_TYPE_PREFIX, 12323) +HANDLE_BAT(APINT_TYPE_PREFIX, 12324) +HANDLE_BAT(APINT_TYPE_PREFIX, 12325) +HANDLE_BAT(APINT_TYPE_PREFIX, 12326) +HANDLE_BAT(APINT_TYPE_PREFIX, 12327) +HANDLE_BAT(APINT_TYPE_PREFIX, 12328) +HANDLE_BAT(APINT_TYPE_PREFIX, 12329) +HANDLE_BAT(APINT_TYPE_PREFIX, 12330) +HANDLE_BAT(APINT_TYPE_PREFIX, 12331) +HANDLE_BAT(APINT_TYPE_PREFIX, 12332) +HANDLE_BAT(APINT_TYPE_PREFIX, 12333) +HANDLE_BAT(APINT_TYPE_PREFIX, 12334) +HANDLE_BAT(APINT_TYPE_PREFIX, 12335) +HANDLE_BAT(APINT_TYPE_PREFIX, 12336) +HANDLE_BAT(APINT_TYPE_PREFIX, 12337) +HANDLE_BAT(APINT_TYPE_PREFIX, 12338) +HANDLE_BAT(APINT_TYPE_PREFIX, 12339) +HANDLE_BAT(APINT_TYPE_PREFIX, 12340) +HANDLE_BAT(APINT_TYPE_PREFIX, 12341) +HANDLE_BAT(APINT_TYPE_PREFIX, 12342) +HANDLE_BAT(APINT_TYPE_PREFIX, 12343) +HANDLE_BAT(APINT_TYPE_PREFIX, 12344) +HANDLE_BAT(APINT_TYPE_PREFIX, 12345) +HANDLE_BAT(APINT_TYPE_PREFIX, 12346) +HANDLE_BAT(APINT_TYPE_PREFIX, 12347) +HANDLE_BAT(APINT_TYPE_PREFIX, 12348) +HANDLE_BAT(APINT_TYPE_PREFIX, 12349) +HANDLE_BAT(APINT_TYPE_PREFIX, 12350) +HANDLE_BAT(APINT_TYPE_PREFIX, 12351) +HANDLE_BAT(APINT_TYPE_PREFIX, 12352) +HANDLE_BAT(APINT_TYPE_PREFIX, 12353) +HANDLE_BAT(APINT_TYPE_PREFIX, 12354) +HANDLE_BAT(APINT_TYPE_PREFIX, 12355) +HANDLE_BAT(APINT_TYPE_PREFIX, 12356) +HANDLE_BAT(APINT_TYPE_PREFIX, 12357) +HANDLE_BAT(APINT_TYPE_PREFIX, 12358) +HANDLE_BAT(APINT_TYPE_PREFIX, 12359) +HANDLE_BAT(APINT_TYPE_PREFIX, 12360) +HANDLE_BAT(APINT_TYPE_PREFIX, 12361) +HANDLE_BAT(APINT_TYPE_PREFIX, 12362) +HANDLE_BAT(APINT_TYPE_PREFIX, 12363) +HANDLE_BAT(APINT_TYPE_PREFIX, 12364) +HANDLE_BAT(APINT_TYPE_PREFIX, 12365) +HANDLE_BAT(APINT_TYPE_PREFIX, 12366) +HANDLE_BAT(APINT_TYPE_PREFIX, 12367) +HANDLE_BAT(APINT_TYPE_PREFIX, 12368) +HANDLE_BAT(APINT_TYPE_PREFIX, 12369) +HANDLE_BAT(APINT_TYPE_PREFIX, 12370) +HANDLE_BAT(APINT_TYPE_PREFIX, 12371) +HANDLE_BAT(APINT_TYPE_PREFIX, 12372) +HANDLE_BAT(APINT_TYPE_PREFIX, 12373) +HANDLE_BAT(APINT_TYPE_PREFIX, 12374) +HANDLE_BAT(APINT_TYPE_PREFIX, 12375) +HANDLE_BAT(APINT_TYPE_PREFIX, 12376) +HANDLE_BAT(APINT_TYPE_PREFIX, 12377) +HANDLE_BAT(APINT_TYPE_PREFIX, 12378) +HANDLE_BAT(APINT_TYPE_PREFIX, 12379) +HANDLE_BAT(APINT_TYPE_PREFIX, 12380) +HANDLE_BAT(APINT_TYPE_PREFIX, 12381) +HANDLE_BAT(APINT_TYPE_PREFIX, 12382) +HANDLE_BAT(APINT_TYPE_PREFIX, 12383) +HANDLE_BAT(APINT_TYPE_PREFIX, 12384) +HANDLE_BAT(APINT_TYPE_PREFIX, 12385) +HANDLE_BAT(APINT_TYPE_PREFIX, 12386) +HANDLE_BAT(APINT_TYPE_PREFIX, 12387) +HANDLE_BAT(APINT_TYPE_PREFIX, 12388) +HANDLE_BAT(APINT_TYPE_PREFIX, 12389) +HANDLE_BAT(APINT_TYPE_PREFIX, 12390) +HANDLE_BAT(APINT_TYPE_PREFIX, 12391) +HANDLE_BAT(APINT_TYPE_PREFIX, 12392) +HANDLE_BAT(APINT_TYPE_PREFIX, 12393) +HANDLE_BAT(APINT_TYPE_PREFIX, 12394) +HANDLE_BAT(APINT_TYPE_PREFIX, 12395) +HANDLE_BAT(APINT_TYPE_PREFIX, 12396) +HANDLE_BAT(APINT_TYPE_PREFIX, 12397) +HANDLE_BAT(APINT_TYPE_PREFIX, 12398) +HANDLE_BAT(APINT_TYPE_PREFIX, 12399) +HANDLE_BAT(APINT_TYPE_PREFIX, 12400) +HANDLE_BAT(APINT_TYPE_PREFIX, 12401) +HANDLE_BAT(APINT_TYPE_PREFIX, 12402) +HANDLE_BAT(APINT_TYPE_PREFIX, 12403) +HANDLE_BAT(APINT_TYPE_PREFIX, 12404) +HANDLE_BAT(APINT_TYPE_PREFIX, 12405) +HANDLE_BAT(APINT_TYPE_PREFIX, 12406) +HANDLE_BAT(APINT_TYPE_PREFIX, 12407) +HANDLE_BAT(APINT_TYPE_PREFIX, 12408) +HANDLE_BAT(APINT_TYPE_PREFIX, 12409) +HANDLE_BAT(APINT_TYPE_PREFIX, 12410) +HANDLE_BAT(APINT_TYPE_PREFIX, 12411) +HANDLE_BAT(APINT_TYPE_PREFIX, 12412) +HANDLE_BAT(APINT_TYPE_PREFIX, 12413) +HANDLE_BAT(APINT_TYPE_PREFIX, 12414) +HANDLE_BAT(APINT_TYPE_PREFIX, 12415) +HANDLE_BAT(APINT_TYPE_PREFIX, 12416) +HANDLE_BAT(APINT_TYPE_PREFIX, 12417) +HANDLE_BAT(APINT_TYPE_PREFIX, 12418) +HANDLE_BAT(APINT_TYPE_PREFIX, 12419) +HANDLE_BAT(APINT_TYPE_PREFIX, 12420) +HANDLE_BAT(APINT_TYPE_PREFIX, 12421) +HANDLE_BAT(APINT_TYPE_PREFIX, 12422) +HANDLE_BAT(APINT_TYPE_PREFIX, 12423) +HANDLE_BAT(APINT_TYPE_PREFIX, 12424) +HANDLE_BAT(APINT_TYPE_PREFIX, 12425) +HANDLE_BAT(APINT_TYPE_PREFIX, 12426) +HANDLE_BAT(APINT_TYPE_PREFIX, 12427) +HANDLE_BAT(APINT_TYPE_PREFIX, 12428) +HANDLE_BAT(APINT_TYPE_PREFIX, 12429) +HANDLE_BAT(APINT_TYPE_PREFIX, 12430) +HANDLE_BAT(APINT_TYPE_PREFIX, 12431) +HANDLE_BAT(APINT_TYPE_PREFIX, 12432) +HANDLE_BAT(APINT_TYPE_PREFIX, 12433) +HANDLE_BAT(APINT_TYPE_PREFIX, 12434) +HANDLE_BAT(APINT_TYPE_PREFIX, 12435) +HANDLE_BAT(APINT_TYPE_PREFIX, 12436) +HANDLE_BAT(APINT_TYPE_PREFIX, 12437) +HANDLE_BAT(APINT_TYPE_PREFIX, 12438) +HANDLE_BAT(APINT_TYPE_PREFIX, 12439) +HANDLE_BAT(APINT_TYPE_PREFIX, 12440) +HANDLE_BAT(APINT_TYPE_PREFIX, 12441) +HANDLE_BAT(APINT_TYPE_PREFIX, 12442) +HANDLE_BAT(APINT_TYPE_PREFIX, 12443) +HANDLE_BAT(APINT_TYPE_PREFIX, 12444) +HANDLE_BAT(APINT_TYPE_PREFIX, 12445) +HANDLE_BAT(APINT_TYPE_PREFIX, 12446) +HANDLE_BAT(APINT_TYPE_PREFIX, 12447) +HANDLE_BAT(APINT_TYPE_PREFIX, 12448) +HANDLE_BAT(APINT_TYPE_PREFIX, 12449) +HANDLE_BAT(APINT_TYPE_PREFIX, 12450) +HANDLE_BAT(APINT_TYPE_PREFIX, 12451) +HANDLE_BAT(APINT_TYPE_PREFIX, 12452) +HANDLE_BAT(APINT_TYPE_PREFIX, 12453) +HANDLE_BAT(APINT_TYPE_PREFIX, 12454) +HANDLE_BAT(APINT_TYPE_PREFIX, 12455) +HANDLE_BAT(APINT_TYPE_PREFIX, 12456) +HANDLE_BAT(APINT_TYPE_PREFIX, 12457) +HANDLE_BAT(APINT_TYPE_PREFIX, 12458) +HANDLE_BAT(APINT_TYPE_PREFIX, 12459) +HANDLE_BAT(APINT_TYPE_PREFIX, 12460) +HANDLE_BAT(APINT_TYPE_PREFIX, 12461) +HANDLE_BAT(APINT_TYPE_PREFIX, 12462) +HANDLE_BAT(APINT_TYPE_PREFIX, 12463) +HANDLE_BAT(APINT_TYPE_PREFIX, 12464) +HANDLE_BAT(APINT_TYPE_PREFIX, 12465) +HANDLE_BAT(APINT_TYPE_PREFIX, 12466) +HANDLE_BAT(APINT_TYPE_PREFIX, 12467) +HANDLE_BAT(APINT_TYPE_PREFIX, 12468) +HANDLE_BAT(APINT_TYPE_PREFIX, 12469) +HANDLE_BAT(APINT_TYPE_PREFIX, 12470) +HANDLE_BAT(APINT_TYPE_PREFIX, 12471) +HANDLE_BAT(APINT_TYPE_PREFIX, 12472) +HANDLE_BAT(APINT_TYPE_PREFIX, 12473) +HANDLE_BAT(APINT_TYPE_PREFIX, 12474) +HANDLE_BAT(APINT_TYPE_PREFIX, 12475) +HANDLE_BAT(APINT_TYPE_PREFIX, 12476) +HANDLE_BAT(APINT_TYPE_PREFIX, 12477) +HANDLE_BAT(APINT_TYPE_PREFIX, 12478) +HANDLE_BAT(APINT_TYPE_PREFIX, 12479) +HANDLE_BAT(APINT_TYPE_PREFIX, 12480) +HANDLE_BAT(APINT_TYPE_PREFIX, 12481) +HANDLE_BAT(APINT_TYPE_PREFIX, 12482) +HANDLE_BAT(APINT_TYPE_PREFIX, 12483) +HANDLE_BAT(APINT_TYPE_PREFIX, 12484) +HANDLE_BAT(APINT_TYPE_PREFIX, 12485) +HANDLE_BAT(APINT_TYPE_PREFIX, 12486) +HANDLE_BAT(APINT_TYPE_PREFIX, 12487) +HANDLE_BAT(APINT_TYPE_PREFIX, 12488) +HANDLE_BAT(APINT_TYPE_PREFIX, 12489) +HANDLE_BAT(APINT_TYPE_PREFIX, 12490) +HANDLE_BAT(APINT_TYPE_PREFIX, 12491) +HANDLE_BAT(APINT_TYPE_PREFIX, 12492) +HANDLE_BAT(APINT_TYPE_PREFIX, 12493) +HANDLE_BAT(APINT_TYPE_PREFIX, 12494) +HANDLE_BAT(APINT_TYPE_PREFIX, 12495) +HANDLE_BAT(APINT_TYPE_PREFIX, 12496) +HANDLE_BAT(APINT_TYPE_PREFIX, 12497) +HANDLE_BAT(APINT_TYPE_PREFIX, 12498) +HANDLE_BAT(APINT_TYPE_PREFIX, 12499) +HANDLE_BAT(APINT_TYPE_PREFIX, 12500) +HANDLE_BAT(APINT_TYPE_PREFIX, 12501) +HANDLE_BAT(APINT_TYPE_PREFIX, 12502) +HANDLE_BAT(APINT_TYPE_PREFIX, 12503) +HANDLE_BAT(APINT_TYPE_PREFIX, 12504) +HANDLE_BAT(APINT_TYPE_PREFIX, 12505) +HANDLE_BAT(APINT_TYPE_PREFIX, 12506) +HANDLE_BAT(APINT_TYPE_PREFIX, 12507) +HANDLE_BAT(APINT_TYPE_PREFIX, 12508) +HANDLE_BAT(APINT_TYPE_PREFIX, 12509) +HANDLE_BAT(APINT_TYPE_PREFIX, 12510) +HANDLE_BAT(APINT_TYPE_PREFIX, 12511) +HANDLE_BAT(APINT_TYPE_PREFIX, 12512) +HANDLE_BAT(APINT_TYPE_PREFIX, 12513) +HANDLE_BAT(APINT_TYPE_PREFIX, 12514) +HANDLE_BAT(APINT_TYPE_PREFIX, 12515) +HANDLE_BAT(APINT_TYPE_PREFIX, 12516) +HANDLE_BAT(APINT_TYPE_PREFIX, 12517) +HANDLE_BAT(APINT_TYPE_PREFIX, 12518) +HANDLE_BAT(APINT_TYPE_PREFIX, 12519) +HANDLE_BAT(APINT_TYPE_PREFIX, 12520) +HANDLE_BAT(APINT_TYPE_PREFIX, 12521) +HANDLE_BAT(APINT_TYPE_PREFIX, 12522) +HANDLE_BAT(APINT_TYPE_PREFIX, 12523) +HANDLE_BAT(APINT_TYPE_PREFIX, 12524) +HANDLE_BAT(APINT_TYPE_PREFIX, 12525) +HANDLE_BAT(APINT_TYPE_PREFIX, 12526) +HANDLE_BAT(APINT_TYPE_PREFIX, 12527) +HANDLE_BAT(APINT_TYPE_PREFIX, 12528) +HANDLE_BAT(APINT_TYPE_PREFIX, 12529) +HANDLE_BAT(APINT_TYPE_PREFIX, 12530) +HANDLE_BAT(APINT_TYPE_PREFIX, 12531) +HANDLE_BAT(APINT_TYPE_PREFIX, 12532) +HANDLE_BAT(APINT_TYPE_PREFIX, 12533) +HANDLE_BAT(APINT_TYPE_PREFIX, 12534) +HANDLE_BAT(APINT_TYPE_PREFIX, 12535) +HANDLE_BAT(APINT_TYPE_PREFIX, 12536) +HANDLE_BAT(APINT_TYPE_PREFIX, 12537) +HANDLE_BAT(APINT_TYPE_PREFIX, 12538) +HANDLE_BAT(APINT_TYPE_PREFIX, 12539) +HANDLE_BAT(APINT_TYPE_PREFIX, 12540) +HANDLE_BAT(APINT_TYPE_PREFIX, 12541) +HANDLE_BAT(APINT_TYPE_PREFIX, 12542) +HANDLE_BAT(APINT_TYPE_PREFIX, 12543) +HANDLE_BAT(APINT_TYPE_PREFIX, 12544) +HANDLE_BAT(APINT_TYPE_PREFIX, 12545) +HANDLE_BAT(APINT_TYPE_PREFIX, 12546) +HANDLE_BAT(APINT_TYPE_PREFIX, 12547) +HANDLE_BAT(APINT_TYPE_PREFIX, 12548) +HANDLE_BAT(APINT_TYPE_PREFIX, 12549) +HANDLE_BAT(APINT_TYPE_PREFIX, 12550) +HANDLE_BAT(APINT_TYPE_PREFIX, 12551) +HANDLE_BAT(APINT_TYPE_PREFIX, 12552) +HANDLE_BAT(APINT_TYPE_PREFIX, 12553) +HANDLE_BAT(APINT_TYPE_PREFIX, 12554) +HANDLE_BAT(APINT_TYPE_PREFIX, 12555) +HANDLE_BAT(APINT_TYPE_PREFIX, 12556) +HANDLE_BAT(APINT_TYPE_PREFIX, 12557) +HANDLE_BAT(APINT_TYPE_PREFIX, 12558) +HANDLE_BAT(APINT_TYPE_PREFIX, 12559) +HANDLE_BAT(APINT_TYPE_PREFIX, 12560) +HANDLE_BAT(APINT_TYPE_PREFIX, 12561) +HANDLE_BAT(APINT_TYPE_PREFIX, 12562) +HANDLE_BAT(APINT_TYPE_PREFIX, 12563) +HANDLE_BAT(APINT_TYPE_PREFIX, 12564) +HANDLE_BAT(APINT_TYPE_PREFIX, 12565) +HANDLE_BAT(APINT_TYPE_PREFIX, 12566) +HANDLE_BAT(APINT_TYPE_PREFIX, 12567) +HANDLE_BAT(APINT_TYPE_PREFIX, 12568) +HANDLE_BAT(APINT_TYPE_PREFIX, 12569) +HANDLE_BAT(APINT_TYPE_PREFIX, 12570) +HANDLE_BAT(APINT_TYPE_PREFIX, 12571) +HANDLE_BAT(APINT_TYPE_PREFIX, 12572) +HANDLE_BAT(APINT_TYPE_PREFIX, 12573) +HANDLE_BAT(APINT_TYPE_PREFIX, 12574) +HANDLE_BAT(APINT_TYPE_PREFIX, 12575) +HANDLE_BAT(APINT_TYPE_PREFIX, 12576) +HANDLE_BAT(APINT_TYPE_PREFIX, 12577) +HANDLE_BAT(APINT_TYPE_PREFIX, 12578) +HANDLE_BAT(APINT_TYPE_PREFIX, 12579) +HANDLE_BAT(APINT_TYPE_PREFIX, 12580) +HANDLE_BAT(APINT_TYPE_PREFIX, 12581) +HANDLE_BAT(APINT_TYPE_PREFIX, 12582) +HANDLE_BAT(APINT_TYPE_PREFIX, 12583) +HANDLE_BAT(APINT_TYPE_PREFIX, 12584) +HANDLE_BAT(APINT_TYPE_PREFIX, 12585) +HANDLE_BAT(APINT_TYPE_PREFIX, 12586) +HANDLE_BAT(APINT_TYPE_PREFIX, 12587) +HANDLE_BAT(APINT_TYPE_PREFIX, 12588) +HANDLE_BAT(APINT_TYPE_PREFIX, 12589) +HANDLE_BAT(APINT_TYPE_PREFIX, 12590) +HANDLE_BAT(APINT_TYPE_PREFIX, 12591) +HANDLE_BAT(APINT_TYPE_PREFIX, 12592) +HANDLE_BAT(APINT_TYPE_PREFIX, 12593) +HANDLE_BAT(APINT_TYPE_PREFIX, 12594) +HANDLE_BAT(APINT_TYPE_PREFIX, 12595) +HANDLE_BAT(APINT_TYPE_PREFIX, 12596) +HANDLE_BAT(APINT_TYPE_PREFIX, 12597) +HANDLE_BAT(APINT_TYPE_PREFIX, 12598) +HANDLE_BAT(APINT_TYPE_PREFIX, 12599) +HANDLE_BAT(APINT_TYPE_PREFIX, 12600) +HANDLE_BAT(APINT_TYPE_PREFIX, 12601) +HANDLE_BAT(APINT_TYPE_PREFIX, 12602) +HANDLE_BAT(APINT_TYPE_PREFIX, 12603) +HANDLE_BAT(APINT_TYPE_PREFIX, 12604) +HANDLE_BAT(APINT_TYPE_PREFIX, 12605) +HANDLE_BAT(APINT_TYPE_PREFIX, 12606) +HANDLE_BAT(APINT_TYPE_PREFIX, 12607) +HANDLE_BAT(APINT_TYPE_PREFIX, 12608) +HANDLE_BAT(APINT_TYPE_PREFIX, 12609) +HANDLE_BAT(APINT_TYPE_PREFIX, 12610) +HANDLE_BAT(APINT_TYPE_PREFIX, 12611) +HANDLE_BAT(APINT_TYPE_PREFIX, 12612) +HANDLE_BAT(APINT_TYPE_PREFIX, 12613) +HANDLE_BAT(APINT_TYPE_PREFIX, 12614) +HANDLE_BAT(APINT_TYPE_PREFIX, 12615) +HANDLE_BAT(APINT_TYPE_PREFIX, 12616) +HANDLE_BAT(APINT_TYPE_PREFIX, 12617) +HANDLE_BAT(APINT_TYPE_PREFIX, 12618) +HANDLE_BAT(APINT_TYPE_PREFIX, 12619) +HANDLE_BAT(APINT_TYPE_PREFIX, 12620) +HANDLE_BAT(APINT_TYPE_PREFIX, 12621) +HANDLE_BAT(APINT_TYPE_PREFIX, 12622) +HANDLE_BAT(APINT_TYPE_PREFIX, 12623) +HANDLE_BAT(APINT_TYPE_PREFIX, 12624) +HANDLE_BAT(APINT_TYPE_PREFIX, 12625) +HANDLE_BAT(APINT_TYPE_PREFIX, 12626) +HANDLE_BAT(APINT_TYPE_PREFIX, 12627) +HANDLE_BAT(APINT_TYPE_PREFIX, 12628) +HANDLE_BAT(APINT_TYPE_PREFIX, 12629) +HANDLE_BAT(APINT_TYPE_PREFIX, 12630) +HANDLE_BAT(APINT_TYPE_PREFIX, 12631) +HANDLE_BAT(APINT_TYPE_PREFIX, 12632) +HANDLE_BAT(APINT_TYPE_PREFIX, 12633) +HANDLE_BAT(APINT_TYPE_PREFIX, 12634) +HANDLE_BAT(APINT_TYPE_PREFIX, 12635) +HANDLE_BAT(APINT_TYPE_PREFIX, 12636) +HANDLE_BAT(APINT_TYPE_PREFIX, 12637) +HANDLE_BAT(APINT_TYPE_PREFIX, 12638) +HANDLE_BAT(APINT_TYPE_PREFIX, 12639) +HANDLE_BAT(APINT_TYPE_PREFIX, 12640) +HANDLE_BAT(APINT_TYPE_PREFIX, 12641) +HANDLE_BAT(APINT_TYPE_PREFIX, 12642) +HANDLE_BAT(APINT_TYPE_PREFIX, 12643) +HANDLE_BAT(APINT_TYPE_PREFIX, 12644) +HANDLE_BAT(APINT_TYPE_PREFIX, 12645) +HANDLE_BAT(APINT_TYPE_PREFIX, 12646) +HANDLE_BAT(APINT_TYPE_PREFIX, 12647) +HANDLE_BAT(APINT_TYPE_PREFIX, 12648) +HANDLE_BAT(APINT_TYPE_PREFIX, 12649) +HANDLE_BAT(APINT_TYPE_PREFIX, 12650) +HANDLE_BAT(APINT_TYPE_PREFIX, 12651) +HANDLE_BAT(APINT_TYPE_PREFIX, 12652) +HANDLE_BAT(APINT_TYPE_PREFIX, 12653) +HANDLE_BAT(APINT_TYPE_PREFIX, 12654) +HANDLE_BAT(APINT_TYPE_PREFIX, 12655) +HANDLE_BAT(APINT_TYPE_PREFIX, 12656) +HANDLE_BAT(APINT_TYPE_PREFIX, 12657) +HANDLE_BAT(APINT_TYPE_PREFIX, 12658) +HANDLE_BAT(APINT_TYPE_PREFIX, 12659) +HANDLE_BAT(APINT_TYPE_PREFIX, 12660) +HANDLE_BAT(APINT_TYPE_PREFIX, 12661) +HANDLE_BAT(APINT_TYPE_PREFIX, 12662) +HANDLE_BAT(APINT_TYPE_PREFIX, 12663) +HANDLE_BAT(APINT_TYPE_PREFIX, 12664) +HANDLE_BAT(APINT_TYPE_PREFIX, 12665) +HANDLE_BAT(APINT_TYPE_PREFIX, 12666) +HANDLE_BAT(APINT_TYPE_PREFIX, 12667) +HANDLE_BAT(APINT_TYPE_PREFIX, 12668) +HANDLE_BAT(APINT_TYPE_PREFIX, 12669) +HANDLE_BAT(APINT_TYPE_PREFIX, 12670) +HANDLE_BAT(APINT_TYPE_PREFIX, 12671) +HANDLE_BAT(APINT_TYPE_PREFIX, 12672) +HANDLE_BAT(APINT_TYPE_PREFIX, 12673) +HANDLE_BAT(APINT_TYPE_PREFIX, 12674) +HANDLE_BAT(APINT_TYPE_PREFIX, 12675) +HANDLE_BAT(APINT_TYPE_PREFIX, 12676) +HANDLE_BAT(APINT_TYPE_PREFIX, 12677) +HANDLE_BAT(APINT_TYPE_PREFIX, 12678) +HANDLE_BAT(APINT_TYPE_PREFIX, 12679) +HANDLE_BAT(APINT_TYPE_PREFIX, 12680) +HANDLE_BAT(APINT_TYPE_PREFIX, 12681) +HANDLE_BAT(APINT_TYPE_PREFIX, 12682) +HANDLE_BAT(APINT_TYPE_PREFIX, 12683) +HANDLE_BAT(APINT_TYPE_PREFIX, 12684) +HANDLE_BAT(APINT_TYPE_PREFIX, 12685) +HANDLE_BAT(APINT_TYPE_PREFIX, 12686) +HANDLE_BAT(APINT_TYPE_PREFIX, 12687) +HANDLE_BAT(APINT_TYPE_PREFIX, 12688) +HANDLE_BAT(APINT_TYPE_PREFIX, 12689) +HANDLE_BAT(APINT_TYPE_PREFIX, 12690) +HANDLE_BAT(APINT_TYPE_PREFIX, 12691) +HANDLE_BAT(APINT_TYPE_PREFIX, 12692) +HANDLE_BAT(APINT_TYPE_PREFIX, 12693) +HANDLE_BAT(APINT_TYPE_PREFIX, 12694) +HANDLE_BAT(APINT_TYPE_PREFIX, 12695) +HANDLE_BAT(APINT_TYPE_PREFIX, 12696) +HANDLE_BAT(APINT_TYPE_PREFIX, 12697) +HANDLE_BAT(APINT_TYPE_PREFIX, 12698) +HANDLE_BAT(APINT_TYPE_PREFIX, 12699) +HANDLE_BAT(APINT_TYPE_PREFIX, 12700) +HANDLE_BAT(APINT_TYPE_PREFIX, 12701) +HANDLE_BAT(APINT_TYPE_PREFIX, 12702) +HANDLE_BAT(APINT_TYPE_PREFIX, 12703) +HANDLE_BAT(APINT_TYPE_PREFIX, 12704) +HANDLE_BAT(APINT_TYPE_PREFIX, 12705) +HANDLE_BAT(APINT_TYPE_PREFIX, 12706) +HANDLE_BAT(APINT_TYPE_PREFIX, 12707) +HANDLE_BAT(APINT_TYPE_PREFIX, 12708) +HANDLE_BAT(APINT_TYPE_PREFIX, 12709) +HANDLE_BAT(APINT_TYPE_PREFIX, 12710) +HANDLE_BAT(APINT_TYPE_PREFIX, 12711) +HANDLE_BAT(APINT_TYPE_PREFIX, 12712) +HANDLE_BAT(APINT_TYPE_PREFIX, 12713) +HANDLE_BAT(APINT_TYPE_PREFIX, 12714) +HANDLE_BAT(APINT_TYPE_PREFIX, 12715) +HANDLE_BAT(APINT_TYPE_PREFIX, 12716) +HANDLE_BAT(APINT_TYPE_PREFIX, 12717) +HANDLE_BAT(APINT_TYPE_PREFIX, 12718) +HANDLE_BAT(APINT_TYPE_PREFIX, 12719) +HANDLE_BAT(APINT_TYPE_PREFIX, 12720) +HANDLE_BAT(APINT_TYPE_PREFIX, 12721) +HANDLE_BAT(APINT_TYPE_PREFIX, 12722) +HANDLE_BAT(APINT_TYPE_PREFIX, 12723) +HANDLE_BAT(APINT_TYPE_PREFIX, 12724) +HANDLE_BAT(APINT_TYPE_PREFIX, 12725) +HANDLE_BAT(APINT_TYPE_PREFIX, 12726) +HANDLE_BAT(APINT_TYPE_PREFIX, 12727) +HANDLE_BAT(APINT_TYPE_PREFIX, 12728) +HANDLE_BAT(APINT_TYPE_PREFIX, 12729) +HANDLE_BAT(APINT_TYPE_PREFIX, 12730) +HANDLE_BAT(APINT_TYPE_PREFIX, 12731) +HANDLE_BAT(APINT_TYPE_PREFIX, 12732) +HANDLE_BAT(APINT_TYPE_PREFIX, 12733) +HANDLE_BAT(APINT_TYPE_PREFIX, 12734) +HANDLE_BAT(APINT_TYPE_PREFIX, 12735) +HANDLE_BAT(APINT_TYPE_PREFIX, 12736) +HANDLE_BAT(APINT_TYPE_PREFIX, 12737) +HANDLE_BAT(APINT_TYPE_PREFIX, 12738) +HANDLE_BAT(APINT_TYPE_PREFIX, 12739) +HANDLE_BAT(APINT_TYPE_PREFIX, 12740) +HANDLE_BAT(APINT_TYPE_PREFIX, 12741) +HANDLE_BAT(APINT_TYPE_PREFIX, 12742) +HANDLE_BAT(APINT_TYPE_PREFIX, 12743) +HANDLE_BAT(APINT_TYPE_PREFIX, 12744) +HANDLE_BAT(APINT_TYPE_PREFIX, 12745) +HANDLE_BAT(APINT_TYPE_PREFIX, 12746) +HANDLE_BAT(APINT_TYPE_PREFIX, 12747) +HANDLE_BAT(APINT_TYPE_PREFIX, 12748) +HANDLE_BAT(APINT_TYPE_PREFIX, 12749) +HANDLE_BAT(APINT_TYPE_PREFIX, 12750) +HANDLE_BAT(APINT_TYPE_PREFIX, 12751) +HANDLE_BAT(APINT_TYPE_PREFIX, 12752) +HANDLE_BAT(APINT_TYPE_PREFIX, 12753) +HANDLE_BAT(APINT_TYPE_PREFIX, 12754) +HANDLE_BAT(APINT_TYPE_PREFIX, 12755) +HANDLE_BAT(APINT_TYPE_PREFIX, 12756) +HANDLE_BAT(APINT_TYPE_PREFIX, 12757) +HANDLE_BAT(APINT_TYPE_PREFIX, 12758) +HANDLE_BAT(APINT_TYPE_PREFIX, 12759) +HANDLE_BAT(APINT_TYPE_PREFIX, 12760) +HANDLE_BAT(APINT_TYPE_PREFIX, 12761) +HANDLE_BAT(APINT_TYPE_PREFIX, 12762) +HANDLE_BAT(APINT_TYPE_PREFIX, 12763) +HANDLE_BAT(APINT_TYPE_PREFIX, 12764) +HANDLE_BAT(APINT_TYPE_PREFIX, 12765) +HANDLE_BAT(APINT_TYPE_PREFIX, 12766) +HANDLE_BAT(APINT_TYPE_PREFIX, 12767) +HANDLE_BAT(APINT_TYPE_PREFIX, 12768) +HANDLE_BAT(APINT_TYPE_PREFIX, 12769) +HANDLE_BAT(APINT_TYPE_PREFIX, 12770) +HANDLE_BAT(APINT_TYPE_PREFIX, 12771) +HANDLE_BAT(APINT_TYPE_PREFIX, 12772) +HANDLE_BAT(APINT_TYPE_PREFIX, 12773) +HANDLE_BAT(APINT_TYPE_PREFIX, 12774) +HANDLE_BAT(APINT_TYPE_PREFIX, 12775) +HANDLE_BAT(APINT_TYPE_PREFIX, 12776) +HANDLE_BAT(APINT_TYPE_PREFIX, 12777) +HANDLE_BAT(APINT_TYPE_PREFIX, 12778) +HANDLE_BAT(APINT_TYPE_PREFIX, 12779) +HANDLE_BAT(APINT_TYPE_PREFIX, 12780) +HANDLE_BAT(APINT_TYPE_PREFIX, 12781) +HANDLE_BAT(APINT_TYPE_PREFIX, 12782) +HANDLE_BAT(APINT_TYPE_PREFIX, 12783) +HANDLE_BAT(APINT_TYPE_PREFIX, 12784) +HANDLE_BAT(APINT_TYPE_PREFIX, 12785) +HANDLE_BAT(APINT_TYPE_PREFIX, 12786) +HANDLE_BAT(APINT_TYPE_PREFIX, 12787) +HANDLE_BAT(APINT_TYPE_PREFIX, 12788) +HANDLE_BAT(APINT_TYPE_PREFIX, 12789) +HANDLE_BAT(APINT_TYPE_PREFIX, 12790) +HANDLE_BAT(APINT_TYPE_PREFIX, 12791) +HANDLE_BAT(APINT_TYPE_PREFIX, 12792) +HANDLE_BAT(APINT_TYPE_PREFIX, 12793) +HANDLE_BAT(APINT_TYPE_PREFIX, 12794) +HANDLE_BAT(APINT_TYPE_PREFIX, 12795) +HANDLE_BAT(APINT_TYPE_PREFIX, 12796) +HANDLE_BAT(APINT_TYPE_PREFIX, 12797) +HANDLE_BAT(APINT_TYPE_PREFIX, 12798) +HANDLE_BAT(APINT_TYPE_PREFIX, 12799) +HANDLE_BAT(APINT_TYPE_PREFIX, 12800) +HANDLE_BAT(APINT_TYPE_PREFIX, 12801) +HANDLE_BAT(APINT_TYPE_PREFIX, 12802) +HANDLE_BAT(APINT_TYPE_PREFIX, 12803) +HANDLE_BAT(APINT_TYPE_PREFIX, 12804) +HANDLE_BAT(APINT_TYPE_PREFIX, 12805) +HANDLE_BAT(APINT_TYPE_PREFIX, 12806) +HANDLE_BAT(APINT_TYPE_PREFIX, 12807) +HANDLE_BAT(APINT_TYPE_PREFIX, 12808) +HANDLE_BAT(APINT_TYPE_PREFIX, 12809) +HANDLE_BAT(APINT_TYPE_PREFIX, 12810) +HANDLE_BAT(APINT_TYPE_PREFIX, 12811) +HANDLE_BAT(APINT_TYPE_PREFIX, 12812) +HANDLE_BAT(APINT_TYPE_PREFIX, 12813) +HANDLE_BAT(APINT_TYPE_PREFIX, 12814) +HANDLE_BAT(APINT_TYPE_PREFIX, 12815) +HANDLE_BAT(APINT_TYPE_PREFIX, 12816) +HANDLE_BAT(APINT_TYPE_PREFIX, 12817) +HANDLE_BAT(APINT_TYPE_PREFIX, 12818) +HANDLE_BAT(APINT_TYPE_PREFIX, 12819) +HANDLE_BAT(APINT_TYPE_PREFIX, 12820) +HANDLE_BAT(APINT_TYPE_PREFIX, 12821) +HANDLE_BAT(APINT_TYPE_PREFIX, 12822) +HANDLE_BAT(APINT_TYPE_PREFIX, 12823) +HANDLE_BAT(APINT_TYPE_PREFIX, 12824) +HANDLE_BAT(APINT_TYPE_PREFIX, 12825) +HANDLE_BAT(APINT_TYPE_PREFIX, 12826) +HANDLE_BAT(APINT_TYPE_PREFIX, 12827) +HANDLE_BAT(APINT_TYPE_PREFIX, 12828) +HANDLE_BAT(APINT_TYPE_PREFIX, 12829) +HANDLE_BAT(APINT_TYPE_PREFIX, 12830) +HANDLE_BAT(APINT_TYPE_PREFIX, 12831) +HANDLE_BAT(APINT_TYPE_PREFIX, 12832) +HANDLE_BAT(APINT_TYPE_PREFIX, 12833) +HANDLE_BAT(APINT_TYPE_PREFIX, 12834) +HANDLE_BAT(APINT_TYPE_PREFIX, 12835) +HANDLE_BAT(APINT_TYPE_PREFIX, 12836) +HANDLE_BAT(APINT_TYPE_PREFIX, 12837) +HANDLE_BAT(APINT_TYPE_PREFIX, 12838) +HANDLE_BAT(APINT_TYPE_PREFIX, 12839) +HANDLE_BAT(APINT_TYPE_PREFIX, 12840) +HANDLE_BAT(APINT_TYPE_PREFIX, 12841) +HANDLE_BAT(APINT_TYPE_PREFIX, 12842) +HANDLE_BAT(APINT_TYPE_PREFIX, 12843) +HANDLE_BAT(APINT_TYPE_PREFIX, 12844) +HANDLE_BAT(APINT_TYPE_PREFIX, 12845) +HANDLE_BAT(APINT_TYPE_PREFIX, 12846) +HANDLE_BAT(APINT_TYPE_PREFIX, 12847) +HANDLE_BAT(APINT_TYPE_PREFIX, 12848) +HANDLE_BAT(APINT_TYPE_PREFIX, 12849) +HANDLE_BAT(APINT_TYPE_PREFIX, 12850) +HANDLE_BAT(APINT_TYPE_PREFIX, 12851) +HANDLE_BAT(APINT_TYPE_PREFIX, 12852) +HANDLE_BAT(APINT_TYPE_PREFIX, 12853) +HANDLE_BAT(APINT_TYPE_PREFIX, 12854) +HANDLE_BAT(APINT_TYPE_PREFIX, 12855) +HANDLE_BAT(APINT_TYPE_PREFIX, 12856) +HANDLE_BAT(APINT_TYPE_PREFIX, 12857) +HANDLE_BAT(APINT_TYPE_PREFIX, 12858) +HANDLE_BAT(APINT_TYPE_PREFIX, 12859) +HANDLE_BAT(APINT_TYPE_PREFIX, 12860) +HANDLE_BAT(APINT_TYPE_PREFIX, 12861) +HANDLE_BAT(APINT_TYPE_PREFIX, 12862) +HANDLE_BAT(APINT_TYPE_PREFIX, 12863) +HANDLE_BAT(APINT_TYPE_PREFIX, 12864) +HANDLE_BAT(APINT_TYPE_PREFIX, 12865) +HANDLE_BAT(APINT_TYPE_PREFIX, 12866) +HANDLE_BAT(APINT_TYPE_PREFIX, 12867) +HANDLE_BAT(APINT_TYPE_PREFIX, 12868) +HANDLE_BAT(APINT_TYPE_PREFIX, 12869) +HANDLE_BAT(APINT_TYPE_PREFIX, 12870) +HANDLE_BAT(APINT_TYPE_PREFIX, 12871) +HANDLE_BAT(APINT_TYPE_PREFIX, 12872) +HANDLE_BAT(APINT_TYPE_PREFIX, 12873) +HANDLE_BAT(APINT_TYPE_PREFIX, 12874) +HANDLE_BAT(APINT_TYPE_PREFIX, 12875) +HANDLE_BAT(APINT_TYPE_PREFIX, 12876) +HANDLE_BAT(APINT_TYPE_PREFIX, 12877) +HANDLE_BAT(APINT_TYPE_PREFIX, 12878) +HANDLE_BAT(APINT_TYPE_PREFIX, 12879) +HANDLE_BAT(APINT_TYPE_PREFIX, 12880) +HANDLE_BAT(APINT_TYPE_PREFIX, 12881) +HANDLE_BAT(APINT_TYPE_PREFIX, 12882) +HANDLE_BAT(APINT_TYPE_PREFIX, 12883) +HANDLE_BAT(APINT_TYPE_PREFIX, 12884) +HANDLE_BAT(APINT_TYPE_PREFIX, 12885) +HANDLE_BAT(APINT_TYPE_PREFIX, 12886) +HANDLE_BAT(APINT_TYPE_PREFIX, 12887) +HANDLE_BAT(APINT_TYPE_PREFIX, 12888) +HANDLE_BAT(APINT_TYPE_PREFIX, 12889) +HANDLE_BAT(APINT_TYPE_PREFIX, 12890) +HANDLE_BAT(APINT_TYPE_PREFIX, 12891) +HANDLE_BAT(APINT_TYPE_PREFIX, 12892) +HANDLE_BAT(APINT_TYPE_PREFIX, 12893) +HANDLE_BAT(APINT_TYPE_PREFIX, 12894) +HANDLE_BAT(APINT_TYPE_PREFIX, 12895) +HANDLE_BAT(APINT_TYPE_PREFIX, 12896) +HANDLE_BAT(APINT_TYPE_PREFIX, 12897) +HANDLE_BAT(APINT_TYPE_PREFIX, 12898) +HANDLE_BAT(APINT_TYPE_PREFIX, 12899) +HANDLE_BAT(APINT_TYPE_PREFIX, 12900) +HANDLE_BAT(APINT_TYPE_PREFIX, 12901) +HANDLE_BAT(APINT_TYPE_PREFIX, 12902) +HANDLE_BAT(APINT_TYPE_PREFIX, 12903) +HANDLE_BAT(APINT_TYPE_PREFIX, 12904) +HANDLE_BAT(APINT_TYPE_PREFIX, 12905) +HANDLE_BAT(APINT_TYPE_PREFIX, 12906) +HANDLE_BAT(APINT_TYPE_PREFIX, 12907) +HANDLE_BAT(APINT_TYPE_PREFIX, 12908) +HANDLE_BAT(APINT_TYPE_PREFIX, 12909) +HANDLE_BAT(APINT_TYPE_PREFIX, 12910) +HANDLE_BAT(APINT_TYPE_PREFIX, 12911) +HANDLE_BAT(APINT_TYPE_PREFIX, 12912) +HANDLE_BAT(APINT_TYPE_PREFIX, 12913) +HANDLE_BAT(APINT_TYPE_PREFIX, 12914) +HANDLE_BAT(APINT_TYPE_PREFIX, 12915) +HANDLE_BAT(APINT_TYPE_PREFIX, 12916) +HANDLE_BAT(APINT_TYPE_PREFIX, 12917) +HANDLE_BAT(APINT_TYPE_PREFIX, 12918) +HANDLE_BAT(APINT_TYPE_PREFIX, 12919) +HANDLE_BAT(APINT_TYPE_PREFIX, 12920) +HANDLE_BAT(APINT_TYPE_PREFIX, 12921) +HANDLE_BAT(APINT_TYPE_PREFIX, 12922) +HANDLE_BAT(APINT_TYPE_PREFIX, 12923) +HANDLE_BAT(APINT_TYPE_PREFIX, 12924) +HANDLE_BAT(APINT_TYPE_PREFIX, 12925) +HANDLE_BAT(APINT_TYPE_PREFIX, 12926) +HANDLE_BAT(APINT_TYPE_PREFIX, 12927) +HANDLE_BAT(APINT_TYPE_PREFIX, 12928) +HANDLE_BAT(APINT_TYPE_PREFIX, 12929) +HANDLE_BAT(APINT_TYPE_PREFIX, 12930) +HANDLE_BAT(APINT_TYPE_PREFIX, 12931) +HANDLE_BAT(APINT_TYPE_PREFIX, 12932) +HANDLE_BAT(APINT_TYPE_PREFIX, 12933) +HANDLE_BAT(APINT_TYPE_PREFIX, 12934) +HANDLE_BAT(APINT_TYPE_PREFIX, 12935) +HANDLE_BAT(APINT_TYPE_PREFIX, 12936) +HANDLE_BAT(APINT_TYPE_PREFIX, 12937) +HANDLE_BAT(APINT_TYPE_PREFIX, 12938) +HANDLE_BAT(APINT_TYPE_PREFIX, 12939) +HANDLE_BAT(APINT_TYPE_PREFIX, 12940) +HANDLE_BAT(APINT_TYPE_PREFIX, 12941) +HANDLE_BAT(APINT_TYPE_PREFIX, 12942) +HANDLE_BAT(APINT_TYPE_PREFIX, 12943) +HANDLE_BAT(APINT_TYPE_PREFIX, 12944) +HANDLE_BAT(APINT_TYPE_PREFIX, 12945) +HANDLE_BAT(APINT_TYPE_PREFIX, 12946) +HANDLE_BAT(APINT_TYPE_PREFIX, 12947) +HANDLE_BAT(APINT_TYPE_PREFIX, 12948) +HANDLE_BAT(APINT_TYPE_PREFIX, 12949) +HANDLE_BAT(APINT_TYPE_PREFIX, 12950) +HANDLE_BAT(APINT_TYPE_PREFIX, 12951) +HANDLE_BAT(APINT_TYPE_PREFIX, 12952) +HANDLE_BAT(APINT_TYPE_PREFIX, 12953) +HANDLE_BAT(APINT_TYPE_PREFIX, 12954) +HANDLE_BAT(APINT_TYPE_PREFIX, 12955) +HANDLE_BAT(APINT_TYPE_PREFIX, 12956) +HANDLE_BAT(APINT_TYPE_PREFIX, 12957) +HANDLE_BAT(APINT_TYPE_PREFIX, 12958) +HANDLE_BAT(APINT_TYPE_PREFIX, 12959) +HANDLE_BAT(APINT_TYPE_PREFIX, 12960) +HANDLE_BAT(APINT_TYPE_PREFIX, 12961) +HANDLE_BAT(APINT_TYPE_PREFIX, 12962) +HANDLE_BAT(APINT_TYPE_PREFIX, 12963) +HANDLE_BAT(APINT_TYPE_PREFIX, 12964) +HANDLE_BAT(APINT_TYPE_PREFIX, 12965) +HANDLE_BAT(APINT_TYPE_PREFIX, 12966) +HANDLE_BAT(APINT_TYPE_PREFIX, 12967) +HANDLE_BAT(APINT_TYPE_PREFIX, 12968) +HANDLE_BAT(APINT_TYPE_PREFIX, 12969) +HANDLE_BAT(APINT_TYPE_PREFIX, 12970) +HANDLE_BAT(APINT_TYPE_PREFIX, 12971) +HANDLE_BAT(APINT_TYPE_PREFIX, 12972) +HANDLE_BAT(APINT_TYPE_PREFIX, 12973) +HANDLE_BAT(APINT_TYPE_PREFIX, 12974) +HANDLE_BAT(APINT_TYPE_PREFIX, 12975) +HANDLE_BAT(APINT_TYPE_PREFIX, 12976) +HANDLE_BAT(APINT_TYPE_PREFIX, 12977) +HANDLE_BAT(APINT_TYPE_PREFIX, 12978) +HANDLE_BAT(APINT_TYPE_PREFIX, 12979) +HANDLE_BAT(APINT_TYPE_PREFIX, 12980) +HANDLE_BAT(APINT_TYPE_PREFIX, 12981) +HANDLE_BAT(APINT_TYPE_PREFIX, 12982) +HANDLE_BAT(APINT_TYPE_PREFIX, 12983) +HANDLE_BAT(APINT_TYPE_PREFIX, 12984) +HANDLE_BAT(APINT_TYPE_PREFIX, 12985) +HANDLE_BAT(APINT_TYPE_PREFIX, 12986) +HANDLE_BAT(APINT_TYPE_PREFIX, 12987) +HANDLE_BAT(APINT_TYPE_PREFIX, 12988) +HANDLE_BAT(APINT_TYPE_PREFIX, 12989) +HANDLE_BAT(APINT_TYPE_PREFIX, 12990) +HANDLE_BAT(APINT_TYPE_PREFIX, 12991) +HANDLE_BAT(APINT_TYPE_PREFIX, 12992) +HANDLE_BAT(APINT_TYPE_PREFIX, 12993) +HANDLE_BAT(APINT_TYPE_PREFIX, 12994) +HANDLE_BAT(APINT_TYPE_PREFIX, 12995) +HANDLE_BAT(APINT_TYPE_PREFIX, 12996) +HANDLE_BAT(APINT_TYPE_PREFIX, 12997) +HANDLE_BAT(APINT_TYPE_PREFIX, 12998) +HANDLE_BAT(APINT_TYPE_PREFIX, 12999) +HANDLE_BAT(APINT_TYPE_PREFIX, 13000) +HANDLE_BAT(APINT_TYPE_PREFIX, 13001) +HANDLE_BAT(APINT_TYPE_PREFIX, 13002) +HANDLE_BAT(APINT_TYPE_PREFIX, 13003) +HANDLE_BAT(APINT_TYPE_PREFIX, 13004) +HANDLE_BAT(APINT_TYPE_PREFIX, 13005) +HANDLE_BAT(APINT_TYPE_PREFIX, 13006) +HANDLE_BAT(APINT_TYPE_PREFIX, 13007) +HANDLE_BAT(APINT_TYPE_PREFIX, 13008) +HANDLE_BAT(APINT_TYPE_PREFIX, 13009) +HANDLE_BAT(APINT_TYPE_PREFIX, 13010) +HANDLE_BAT(APINT_TYPE_PREFIX, 13011) +HANDLE_BAT(APINT_TYPE_PREFIX, 13012) +HANDLE_BAT(APINT_TYPE_PREFIX, 13013) +HANDLE_BAT(APINT_TYPE_PREFIX, 13014) +HANDLE_BAT(APINT_TYPE_PREFIX, 13015) +HANDLE_BAT(APINT_TYPE_PREFIX, 13016) +HANDLE_BAT(APINT_TYPE_PREFIX, 13017) +HANDLE_BAT(APINT_TYPE_PREFIX, 13018) +HANDLE_BAT(APINT_TYPE_PREFIX, 13019) +HANDLE_BAT(APINT_TYPE_PREFIX, 13020) +HANDLE_BAT(APINT_TYPE_PREFIX, 13021) +HANDLE_BAT(APINT_TYPE_PREFIX, 13022) +HANDLE_BAT(APINT_TYPE_PREFIX, 13023) +HANDLE_BAT(APINT_TYPE_PREFIX, 13024) +HANDLE_BAT(APINT_TYPE_PREFIX, 13025) +HANDLE_BAT(APINT_TYPE_PREFIX, 13026) +HANDLE_BAT(APINT_TYPE_PREFIX, 13027) +HANDLE_BAT(APINT_TYPE_PREFIX, 13028) +HANDLE_BAT(APINT_TYPE_PREFIX, 13029) +HANDLE_BAT(APINT_TYPE_PREFIX, 13030) +HANDLE_BAT(APINT_TYPE_PREFIX, 13031) +HANDLE_BAT(APINT_TYPE_PREFIX, 13032) +HANDLE_BAT(APINT_TYPE_PREFIX, 13033) +HANDLE_BAT(APINT_TYPE_PREFIX, 13034) +HANDLE_BAT(APINT_TYPE_PREFIX, 13035) +HANDLE_BAT(APINT_TYPE_PREFIX, 13036) +HANDLE_BAT(APINT_TYPE_PREFIX, 13037) +HANDLE_BAT(APINT_TYPE_PREFIX, 13038) +HANDLE_BAT(APINT_TYPE_PREFIX, 13039) +HANDLE_BAT(APINT_TYPE_PREFIX, 13040) +HANDLE_BAT(APINT_TYPE_PREFIX, 13041) +HANDLE_BAT(APINT_TYPE_PREFIX, 13042) +HANDLE_BAT(APINT_TYPE_PREFIX, 13043) +HANDLE_BAT(APINT_TYPE_PREFIX, 13044) +HANDLE_BAT(APINT_TYPE_PREFIX, 13045) +HANDLE_BAT(APINT_TYPE_PREFIX, 13046) +HANDLE_BAT(APINT_TYPE_PREFIX, 13047) +HANDLE_BAT(APINT_TYPE_PREFIX, 13048) +HANDLE_BAT(APINT_TYPE_PREFIX, 13049) +HANDLE_BAT(APINT_TYPE_PREFIX, 13050) +HANDLE_BAT(APINT_TYPE_PREFIX, 13051) +HANDLE_BAT(APINT_TYPE_PREFIX, 13052) +HANDLE_BAT(APINT_TYPE_PREFIX, 13053) +HANDLE_BAT(APINT_TYPE_PREFIX, 13054) +HANDLE_BAT(APINT_TYPE_PREFIX, 13055) +HANDLE_BAT(APINT_TYPE_PREFIX, 13056) +HANDLE_BAT(APINT_TYPE_PREFIX, 13057) +HANDLE_BAT(APINT_TYPE_PREFIX, 13058) +HANDLE_BAT(APINT_TYPE_PREFIX, 13059) +HANDLE_BAT(APINT_TYPE_PREFIX, 13060) +HANDLE_BAT(APINT_TYPE_PREFIX, 13061) +HANDLE_BAT(APINT_TYPE_PREFIX, 13062) +HANDLE_BAT(APINT_TYPE_PREFIX, 13063) +HANDLE_BAT(APINT_TYPE_PREFIX, 13064) +HANDLE_BAT(APINT_TYPE_PREFIX, 13065) +HANDLE_BAT(APINT_TYPE_PREFIX, 13066) +HANDLE_BAT(APINT_TYPE_PREFIX, 13067) +HANDLE_BAT(APINT_TYPE_PREFIX, 13068) +HANDLE_BAT(APINT_TYPE_PREFIX, 13069) +HANDLE_BAT(APINT_TYPE_PREFIX, 13070) +HANDLE_BAT(APINT_TYPE_PREFIX, 13071) +HANDLE_BAT(APINT_TYPE_PREFIX, 13072) +HANDLE_BAT(APINT_TYPE_PREFIX, 13073) +HANDLE_BAT(APINT_TYPE_PREFIX, 13074) +HANDLE_BAT(APINT_TYPE_PREFIX, 13075) +HANDLE_BAT(APINT_TYPE_PREFIX, 13076) +HANDLE_BAT(APINT_TYPE_PREFIX, 13077) +HANDLE_BAT(APINT_TYPE_PREFIX, 13078) +HANDLE_BAT(APINT_TYPE_PREFIX, 13079) +HANDLE_BAT(APINT_TYPE_PREFIX, 13080) +HANDLE_BAT(APINT_TYPE_PREFIX, 13081) +HANDLE_BAT(APINT_TYPE_PREFIX, 13082) +HANDLE_BAT(APINT_TYPE_PREFIX, 13083) +HANDLE_BAT(APINT_TYPE_PREFIX, 13084) +HANDLE_BAT(APINT_TYPE_PREFIX, 13085) +HANDLE_BAT(APINT_TYPE_PREFIX, 13086) +HANDLE_BAT(APINT_TYPE_PREFIX, 13087) +HANDLE_BAT(APINT_TYPE_PREFIX, 13088) +HANDLE_BAT(APINT_TYPE_PREFIX, 13089) +HANDLE_BAT(APINT_TYPE_PREFIX, 13090) +HANDLE_BAT(APINT_TYPE_PREFIX, 13091) +HANDLE_BAT(APINT_TYPE_PREFIX, 13092) +HANDLE_BAT(APINT_TYPE_PREFIX, 13093) +HANDLE_BAT(APINT_TYPE_PREFIX, 13094) +HANDLE_BAT(APINT_TYPE_PREFIX, 13095) +HANDLE_BAT(APINT_TYPE_PREFIX, 13096) +HANDLE_BAT(APINT_TYPE_PREFIX, 13097) +HANDLE_BAT(APINT_TYPE_PREFIX, 13098) +HANDLE_BAT(APINT_TYPE_PREFIX, 13099) +HANDLE_BAT(APINT_TYPE_PREFIX, 13100) +HANDLE_BAT(APINT_TYPE_PREFIX, 13101) +HANDLE_BAT(APINT_TYPE_PREFIX, 13102) +HANDLE_BAT(APINT_TYPE_PREFIX, 13103) +HANDLE_BAT(APINT_TYPE_PREFIX, 13104) +HANDLE_BAT(APINT_TYPE_PREFIX, 13105) +HANDLE_BAT(APINT_TYPE_PREFIX, 13106) +HANDLE_BAT(APINT_TYPE_PREFIX, 13107) +HANDLE_BAT(APINT_TYPE_PREFIX, 13108) +HANDLE_BAT(APINT_TYPE_PREFIX, 13109) +HANDLE_BAT(APINT_TYPE_PREFIX, 13110) +HANDLE_BAT(APINT_TYPE_PREFIX, 13111) +HANDLE_BAT(APINT_TYPE_PREFIX, 13112) +HANDLE_BAT(APINT_TYPE_PREFIX, 13113) +HANDLE_BAT(APINT_TYPE_PREFIX, 13114) +HANDLE_BAT(APINT_TYPE_PREFIX, 13115) +HANDLE_BAT(APINT_TYPE_PREFIX, 13116) +HANDLE_BAT(APINT_TYPE_PREFIX, 13117) +HANDLE_BAT(APINT_TYPE_PREFIX, 13118) +HANDLE_BAT(APINT_TYPE_PREFIX, 13119) +HANDLE_BAT(APINT_TYPE_PREFIX, 13120) +HANDLE_BAT(APINT_TYPE_PREFIX, 13121) +HANDLE_BAT(APINT_TYPE_PREFIX, 13122) +HANDLE_BAT(APINT_TYPE_PREFIX, 13123) +HANDLE_BAT(APINT_TYPE_PREFIX, 13124) +HANDLE_BAT(APINT_TYPE_PREFIX, 13125) +HANDLE_BAT(APINT_TYPE_PREFIX, 13126) +HANDLE_BAT(APINT_TYPE_PREFIX, 13127) +HANDLE_BAT(APINT_TYPE_PREFIX, 13128) +HANDLE_BAT(APINT_TYPE_PREFIX, 13129) +HANDLE_BAT(APINT_TYPE_PREFIX, 13130) +HANDLE_BAT(APINT_TYPE_PREFIX, 13131) +HANDLE_BAT(APINT_TYPE_PREFIX, 13132) +HANDLE_BAT(APINT_TYPE_PREFIX, 13133) +HANDLE_BAT(APINT_TYPE_PREFIX, 13134) +HANDLE_BAT(APINT_TYPE_PREFIX, 13135) +HANDLE_BAT(APINT_TYPE_PREFIX, 13136) +HANDLE_BAT(APINT_TYPE_PREFIX, 13137) +HANDLE_BAT(APINT_TYPE_PREFIX, 13138) +HANDLE_BAT(APINT_TYPE_PREFIX, 13139) +HANDLE_BAT(APINT_TYPE_PREFIX, 13140) +HANDLE_BAT(APINT_TYPE_PREFIX, 13141) +HANDLE_BAT(APINT_TYPE_PREFIX, 13142) +HANDLE_BAT(APINT_TYPE_PREFIX, 13143) +HANDLE_BAT(APINT_TYPE_PREFIX, 13144) +HANDLE_BAT(APINT_TYPE_PREFIX, 13145) +HANDLE_BAT(APINT_TYPE_PREFIX, 13146) +HANDLE_BAT(APINT_TYPE_PREFIX, 13147) +HANDLE_BAT(APINT_TYPE_PREFIX, 13148) +HANDLE_BAT(APINT_TYPE_PREFIX, 13149) +HANDLE_BAT(APINT_TYPE_PREFIX, 13150) +HANDLE_BAT(APINT_TYPE_PREFIX, 13151) +HANDLE_BAT(APINT_TYPE_PREFIX, 13152) +HANDLE_BAT(APINT_TYPE_PREFIX, 13153) +HANDLE_BAT(APINT_TYPE_PREFIX, 13154) +HANDLE_BAT(APINT_TYPE_PREFIX, 13155) +HANDLE_BAT(APINT_TYPE_PREFIX, 13156) +HANDLE_BAT(APINT_TYPE_PREFIX, 13157) +HANDLE_BAT(APINT_TYPE_PREFIX, 13158) +HANDLE_BAT(APINT_TYPE_PREFIX, 13159) +HANDLE_BAT(APINT_TYPE_PREFIX, 13160) +HANDLE_BAT(APINT_TYPE_PREFIX, 13161) +HANDLE_BAT(APINT_TYPE_PREFIX, 13162) +HANDLE_BAT(APINT_TYPE_PREFIX, 13163) +HANDLE_BAT(APINT_TYPE_PREFIX, 13164) +HANDLE_BAT(APINT_TYPE_PREFIX, 13165) +HANDLE_BAT(APINT_TYPE_PREFIX, 13166) +HANDLE_BAT(APINT_TYPE_PREFIX, 13167) +HANDLE_BAT(APINT_TYPE_PREFIX, 13168) +HANDLE_BAT(APINT_TYPE_PREFIX, 13169) +HANDLE_BAT(APINT_TYPE_PREFIX, 13170) +HANDLE_BAT(APINT_TYPE_PREFIX, 13171) +HANDLE_BAT(APINT_TYPE_PREFIX, 13172) +HANDLE_BAT(APINT_TYPE_PREFIX, 13173) +HANDLE_BAT(APINT_TYPE_PREFIX, 13174) +HANDLE_BAT(APINT_TYPE_PREFIX, 13175) +HANDLE_BAT(APINT_TYPE_PREFIX, 13176) +HANDLE_BAT(APINT_TYPE_PREFIX, 13177) +HANDLE_BAT(APINT_TYPE_PREFIX, 13178) +HANDLE_BAT(APINT_TYPE_PREFIX, 13179) +HANDLE_BAT(APINT_TYPE_PREFIX, 13180) +HANDLE_BAT(APINT_TYPE_PREFIX, 13181) +HANDLE_BAT(APINT_TYPE_PREFIX, 13182) +HANDLE_BAT(APINT_TYPE_PREFIX, 13183) +HANDLE_BAT(APINT_TYPE_PREFIX, 13184) +HANDLE_BAT(APINT_TYPE_PREFIX, 13185) +HANDLE_BAT(APINT_TYPE_PREFIX, 13186) +HANDLE_BAT(APINT_TYPE_PREFIX, 13187) +HANDLE_BAT(APINT_TYPE_PREFIX, 13188) +HANDLE_BAT(APINT_TYPE_PREFIX, 13189) +HANDLE_BAT(APINT_TYPE_PREFIX, 13190) +HANDLE_BAT(APINT_TYPE_PREFIX, 13191) +HANDLE_BAT(APINT_TYPE_PREFIX, 13192) +HANDLE_BAT(APINT_TYPE_PREFIX, 13193) +HANDLE_BAT(APINT_TYPE_PREFIX, 13194) +HANDLE_BAT(APINT_TYPE_PREFIX, 13195) +HANDLE_BAT(APINT_TYPE_PREFIX, 13196) +HANDLE_BAT(APINT_TYPE_PREFIX, 13197) +HANDLE_BAT(APINT_TYPE_PREFIX, 13198) +HANDLE_BAT(APINT_TYPE_PREFIX, 13199) +HANDLE_BAT(APINT_TYPE_PREFIX, 13200) +HANDLE_BAT(APINT_TYPE_PREFIX, 13201) +HANDLE_BAT(APINT_TYPE_PREFIX, 13202) +HANDLE_BAT(APINT_TYPE_PREFIX, 13203) +HANDLE_BAT(APINT_TYPE_PREFIX, 13204) +HANDLE_BAT(APINT_TYPE_PREFIX, 13205) +HANDLE_BAT(APINT_TYPE_PREFIX, 13206) +HANDLE_BAT(APINT_TYPE_PREFIX, 13207) +HANDLE_BAT(APINT_TYPE_PREFIX, 13208) +HANDLE_BAT(APINT_TYPE_PREFIX, 13209) +HANDLE_BAT(APINT_TYPE_PREFIX, 13210) +HANDLE_BAT(APINT_TYPE_PREFIX, 13211) +HANDLE_BAT(APINT_TYPE_PREFIX, 13212) +HANDLE_BAT(APINT_TYPE_PREFIX, 13213) +HANDLE_BAT(APINT_TYPE_PREFIX, 13214) +HANDLE_BAT(APINT_TYPE_PREFIX, 13215) +HANDLE_BAT(APINT_TYPE_PREFIX, 13216) +HANDLE_BAT(APINT_TYPE_PREFIX, 13217) +HANDLE_BAT(APINT_TYPE_PREFIX, 13218) +HANDLE_BAT(APINT_TYPE_PREFIX, 13219) +HANDLE_BAT(APINT_TYPE_PREFIX, 13220) +HANDLE_BAT(APINT_TYPE_PREFIX, 13221) +HANDLE_BAT(APINT_TYPE_PREFIX, 13222) +HANDLE_BAT(APINT_TYPE_PREFIX, 13223) +HANDLE_BAT(APINT_TYPE_PREFIX, 13224) +HANDLE_BAT(APINT_TYPE_PREFIX, 13225) +HANDLE_BAT(APINT_TYPE_PREFIX, 13226) +HANDLE_BAT(APINT_TYPE_PREFIX, 13227) +HANDLE_BAT(APINT_TYPE_PREFIX, 13228) +HANDLE_BAT(APINT_TYPE_PREFIX, 13229) +HANDLE_BAT(APINT_TYPE_PREFIX, 13230) +HANDLE_BAT(APINT_TYPE_PREFIX, 13231) +HANDLE_BAT(APINT_TYPE_PREFIX, 13232) +HANDLE_BAT(APINT_TYPE_PREFIX, 13233) +HANDLE_BAT(APINT_TYPE_PREFIX, 13234) +HANDLE_BAT(APINT_TYPE_PREFIX, 13235) +HANDLE_BAT(APINT_TYPE_PREFIX, 13236) +HANDLE_BAT(APINT_TYPE_PREFIX, 13237) +HANDLE_BAT(APINT_TYPE_PREFIX, 13238) +HANDLE_BAT(APINT_TYPE_PREFIX, 13239) +HANDLE_BAT(APINT_TYPE_PREFIX, 13240) +HANDLE_BAT(APINT_TYPE_PREFIX, 13241) +HANDLE_BAT(APINT_TYPE_PREFIX, 13242) +HANDLE_BAT(APINT_TYPE_PREFIX, 13243) +HANDLE_BAT(APINT_TYPE_PREFIX, 13244) +HANDLE_BAT(APINT_TYPE_PREFIX, 13245) +HANDLE_BAT(APINT_TYPE_PREFIX, 13246) +HANDLE_BAT(APINT_TYPE_PREFIX, 13247) +HANDLE_BAT(APINT_TYPE_PREFIX, 13248) +HANDLE_BAT(APINT_TYPE_PREFIX, 13249) +HANDLE_BAT(APINT_TYPE_PREFIX, 13250) +HANDLE_BAT(APINT_TYPE_PREFIX, 13251) +HANDLE_BAT(APINT_TYPE_PREFIX, 13252) +HANDLE_BAT(APINT_TYPE_PREFIX, 13253) +HANDLE_BAT(APINT_TYPE_PREFIX, 13254) +HANDLE_BAT(APINT_TYPE_PREFIX, 13255) +HANDLE_BAT(APINT_TYPE_PREFIX, 13256) +HANDLE_BAT(APINT_TYPE_PREFIX, 13257) +HANDLE_BAT(APINT_TYPE_PREFIX, 13258) +HANDLE_BAT(APINT_TYPE_PREFIX, 13259) +HANDLE_BAT(APINT_TYPE_PREFIX, 13260) +HANDLE_BAT(APINT_TYPE_PREFIX, 13261) +HANDLE_BAT(APINT_TYPE_PREFIX, 13262) +HANDLE_BAT(APINT_TYPE_PREFIX, 13263) +HANDLE_BAT(APINT_TYPE_PREFIX, 13264) +HANDLE_BAT(APINT_TYPE_PREFIX, 13265) +HANDLE_BAT(APINT_TYPE_PREFIX, 13266) +HANDLE_BAT(APINT_TYPE_PREFIX, 13267) +HANDLE_BAT(APINT_TYPE_PREFIX, 13268) +HANDLE_BAT(APINT_TYPE_PREFIX, 13269) +HANDLE_BAT(APINT_TYPE_PREFIX, 13270) +HANDLE_BAT(APINT_TYPE_PREFIX, 13271) +HANDLE_BAT(APINT_TYPE_PREFIX, 13272) +HANDLE_BAT(APINT_TYPE_PREFIX, 13273) +HANDLE_BAT(APINT_TYPE_PREFIX, 13274) +HANDLE_BAT(APINT_TYPE_PREFIX, 13275) +HANDLE_BAT(APINT_TYPE_PREFIX, 13276) +HANDLE_BAT(APINT_TYPE_PREFIX, 13277) +HANDLE_BAT(APINT_TYPE_PREFIX, 13278) +HANDLE_BAT(APINT_TYPE_PREFIX, 13279) +HANDLE_BAT(APINT_TYPE_PREFIX, 13280) +HANDLE_BAT(APINT_TYPE_PREFIX, 13281) +HANDLE_BAT(APINT_TYPE_PREFIX, 13282) +HANDLE_BAT(APINT_TYPE_PREFIX, 13283) +HANDLE_BAT(APINT_TYPE_PREFIX, 13284) +HANDLE_BAT(APINT_TYPE_PREFIX, 13285) +HANDLE_BAT(APINT_TYPE_PREFIX, 13286) +HANDLE_BAT(APINT_TYPE_PREFIX, 13287) +HANDLE_BAT(APINT_TYPE_PREFIX, 13288) +HANDLE_BAT(APINT_TYPE_PREFIX, 13289) +HANDLE_BAT(APINT_TYPE_PREFIX, 13290) +HANDLE_BAT(APINT_TYPE_PREFIX, 13291) +HANDLE_BAT(APINT_TYPE_PREFIX, 13292) +HANDLE_BAT(APINT_TYPE_PREFIX, 13293) +HANDLE_BAT(APINT_TYPE_PREFIX, 13294) +HANDLE_BAT(APINT_TYPE_PREFIX, 13295) +HANDLE_BAT(APINT_TYPE_PREFIX, 13296) +HANDLE_BAT(APINT_TYPE_PREFIX, 13297) +HANDLE_BAT(APINT_TYPE_PREFIX, 13298) +HANDLE_BAT(APINT_TYPE_PREFIX, 13299) +HANDLE_BAT(APINT_TYPE_PREFIX, 13300) +HANDLE_BAT(APINT_TYPE_PREFIX, 13301) +HANDLE_BAT(APINT_TYPE_PREFIX, 13302) +HANDLE_BAT(APINT_TYPE_PREFIX, 13303) +HANDLE_BAT(APINT_TYPE_PREFIX, 13304) +HANDLE_BAT(APINT_TYPE_PREFIX, 13305) +HANDLE_BAT(APINT_TYPE_PREFIX, 13306) +HANDLE_BAT(APINT_TYPE_PREFIX, 13307) +HANDLE_BAT(APINT_TYPE_PREFIX, 13308) +HANDLE_BAT(APINT_TYPE_PREFIX, 13309) +HANDLE_BAT(APINT_TYPE_PREFIX, 13310) +HANDLE_BAT(APINT_TYPE_PREFIX, 13311) +HANDLE_BAT(APINT_TYPE_PREFIX, 13312) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 13 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 13313) +HANDLE_BAT(, 13314) +HANDLE_BAT(, 13315) +HANDLE_BAT(, 13316) +HANDLE_BAT(, 13317) +HANDLE_BAT(, 13318) +HANDLE_BAT(, 13319) +HANDLE_BAT(, 13320) +HANDLE_BAT(, 13321) +HANDLE_BAT(, 13322) +HANDLE_BAT(, 13323) +HANDLE_BAT(, 13324) +HANDLE_BAT(, 13325) +HANDLE_BAT(, 13326) +HANDLE_BAT(, 13327) +HANDLE_BAT(, 13328) +HANDLE_BAT(, 13329) +HANDLE_BAT(, 13330) +HANDLE_BAT(, 13331) +HANDLE_BAT(, 13332) +HANDLE_BAT(, 13333) +HANDLE_BAT(, 13334) +HANDLE_BAT(, 13335) +HANDLE_BAT(, 13336) +HANDLE_BAT(, 13337) +HANDLE_BAT(, 13338) +HANDLE_BAT(, 13339) +HANDLE_BAT(, 13340) +HANDLE_BAT(, 13341) +HANDLE_BAT(, 13342) +HANDLE_BAT(, 13343) +HANDLE_BAT(, 13344) +HANDLE_BAT(, 13345) +HANDLE_BAT(, 13346) +HANDLE_BAT(, 13347) +HANDLE_BAT(, 13348) +HANDLE_BAT(, 13349) +HANDLE_BAT(, 13350) +HANDLE_BAT(, 13351) +HANDLE_BAT(, 13352) +HANDLE_BAT(, 13353) +HANDLE_BAT(, 13354) +HANDLE_BAT(, 13355) +HANDLE_BAT(, 13356) +HANDLE_BAT(, 13357) +HANDLE_BAT(, 13358) +HANDLE_BAT(, 13359) +HANDLE_BAT(, 13360) +HANDLE_BAT(, 13361) +HANDLE_BAT(, 13362) +HANDLE_BAT(, 13363) +HANDLE_BAT(, 13364) +HANDLE_BAT(, 13365) +HANDLE_BAT(, 13366) +HANDLE_BAT(, 13367) +HANDLE_BAT(, 13368) +HANDLE_BAT(, 13369) +HANDLE_BAT(, 13370) +HANDLE_BAT(, 13371) +HANDLE_BAT(, 13372) +HANDLE_BAT(, 13373) +HANDLE_BAT(, 13374) +HANDLE_BAT(, 13375) +HANDLE_BAT(, 13376) +HANDLE_BAT(, 13377) +HANDLE_BAT(, 13378) +HANDLE_BAT(, 13379) +HANDLE_BAT(, 13380) +HANDLE_BAT(, 13381) +HANDLE_BAT(, 13382) +HANDLE_BAT(, 13383) +HANDLE_BAT(, 13384) +HANDLE_BAT(, 13385) +HANDLE_BAT(, 13386) +HANDLE_BAT(, 13387) +HANDLE_BAT(, 13388) +HANDLE_BAT(, 13389) +HANDLE_BAT(, 13390) +HANDLE_BAT(, 13391) +HANDLE_BAT(, 13392) +HANDLE_BAT(, 13393) +HANDLE_BAT(, 13394) +HANDLE_BAT(, 13395) +HANDLE_BAT(, 13396) +HANDLE_BAT(, 13397) +HANDLE_BAT(, 13398) +HANDLE_BAT(, 13399) +HANDLE_BAT(, 13400) +HANDLE_BAT(, 13401) +HANDLE_BAT(, 13402) +HANDLE_BAT(, 13403) +HANDLE_BAT(, 13404) +HANDLE_BAT(, 13405) +HANDLE_BAT(, 13406) +HANDLE_BAT(, 13407) +HANDLE_BAT(, 13408) +HANDLE_BAT(, 13409) +HANDLE_BAT(, 13410) +HANDLE_BAT(, 13411) +HANDLE_BAT(, 13412) +HANDLE_BAT(, 13413) +HANDLE_BAT(, 13414) +HANDLE_BAT(, 13415) +HANDLE_BAT(, 13416) +HANDLE_BAT(, 13417) +HANDLE_BAT(, 13418) +HANDLE_BAT(, 13419) +HANDLE_BAT(, 13420) +HANDLE_BAT(, 13421) +HANDLE_BAT(, 13422) +HANDLE_BAT(, 13423) +HANDLE_BAT(, 13424) +HANDLE_BAT(, 13425) +HANDLE_BAT(, 13426) +HANDLE_BAT(, 13427) +HANDLE_BAT(, 13428) +HANDLE_BAT(, 13429) +HANDLE_BAT(, 13430) +HANDLE_BAT(, 13431) +HANDLE_BAT(, 13432) +HANDLE_BAT(, 13433) +HANDLE_BAT(, 13434) +HANDLE_BAT(, 13435) +HANDLE_BAT(, 13436) +HANDLE_BAT(, 13437) +HANDLE_BAT(, 13438) +HANDLE_BAT(, 13439) +HANDLE_BAT(, 13440) +HANDLE_BAT(, 13441) +HANDLE_BAT(, 13442) +HANDLE_BAT(, 13443) +HANDLE_BAT(, 13444) +HANDLE_BAT(, 13445) +HANDLE_BAT(, 13446) +HANDLE_BAT(, 13447) +HANDLE_BAT(, 13448) +HANDLE_BAT(, 13449) +HANDLE_BAT(, 13450) +HANDLE_BAT(, 13451) +HANDLE_BAT(, 13452) +HANDLE_BAT(, 13453) +HANDLE_BAT(, 13454) +HANDLE_BAT(, 13455) +HANDLE_BAT(, 13456) +HANDLE_BAT(, 13457) +HANDLE_BAT(, 13458) +HANDLE_BAT(, 13459) +HANDLE_BAT(, 13460) +HANDLE_BAT(, 13461) +HANDLE_BAT(, 13462) +HANDLE_BAT(, 13463) +HANDLE_BAT(, 13464) +HANDLE_BAT(, 13465) +HANDLE_BAT(, 13466) +HANDLE_BAT(, 13467) +HANDLE_BAT(, 13468) +HANDLE_BAT(, 13469) +HANDLE_BAT(, 13470) +HANDLE_BAT(, 13471) +HANDLE_BAT(, 13472) +HANDLE_BAT(, 13473) +HANDLE_BAT(, 13474) +HANDLE_BAT(, 13475) +HANDLE_BAT(, 13476) +HANDLE_BAT(, 13477) +HANDLE_BAT(, 13478) +HANDLE_BAT(, 13479) +HANDLE_BAT(, 13480) +HANDLE_BAT(, 13481) +HANDLE_BAT(, 13482) +HANDLE_BAT(, 13483) +HANDLE_BAT(, 13484) +HANDLE_BAT(, 13485) +HANDLE_BAT(, 13486) +HANDLE_BAT(, 13487) +HANDLE_BAT(, 13488) +HANDLE_BAT(, 13489) +HANDLE_BAT(, 13490) +HANDLE_BAT(, 13491) +HANDLE_BAT(, 13492) +HANDLE_BAT(, 13493) +HANDLE_BAT(, 13494) +HANDLE_BAT(, 13495) +HANDLE_BAT(, 13496) +HANDLE_BAT(, 13497) +HANDLE_BAT(, 13498) +HANDLE_BAT(, 13499) +HANDLE_BAT(, 13500) +HANDLE_BAT(, 13501) +HANDLE_BAT(, 13502) +HANDLE_BAT(, 13503) +HANDLE_BAT(, 13504) +HANDLE_BAT(, 13505) +HANDLE_BAT(, 13506) +HANDLE_BAT(, 13507) +HANDLE_BAT(, 13508) +HANDLE_BAT(, 13509) +HANDLE_BAT(, 13510) +HANDLE_BAT(, 13511) +HANDLE_BAT(, 13512) +HANDLE_BAT(, 13513) +HANDLE_BAT(, 13514) +HANDLE_BAT(, 13515) +HANDLE_BAT(, 13516) +HANDLE_BAT(, 13517) +HANDLE_BAT(, 13518) +HANDLE_BAT(, 13519) +HANDLE_BAT(, 13520) +HANDLE_BAT(, 13521) +HANDLE_BAT(, 13522) +HANDLE_BAT(, 13523) +HANDLE_BAT(, 13524) +HANDLE_BAT(, 13525) +HANDLE_BAT(, 13526) +HANDLE_BAT(, 13527) +HANDLE_BAT(, 13528) +HANDLE_BAT(, 13529) +HANDLE_BAT(, 13530) +HANDLE_BAT(, 13531) +HANDLE_BAT(, 13532) +HANDLE_BAT(, 13533) +HANDLE_BAT(, 13534) +HANDLE_BAT(, 13535) +HANDLE_BAT(, 13536) +HANDLE_BAT(, 13537) +HANDLE_BAT(, 13538) +HANDLE_BAT(, 13539) +HANDLE_BAT(, 13540) +HANDLE_BAT(, 13541) +HANDLE_BAT(, 13542) +HANDLE_BAT(, 13543) +HANDLE_BAT(, 13544) +HANDLE_BAT(, 13545) +HANDLE_BAT(, 13546) +HANDLE_BAT(, 13547) +HANDLE_BAT(, 13548) +HANDLE_BAT(, 13549) +HANDLE_BAT(, 13550) +HANDLE_BAT(, 13551) +HANDLE_BAT(, 13552) +HANDLE_BAT(, 13553) +HANDLE_BAT(, 13554) +HANDLE_BAT(, 13555) +HANDLE_BAT(, 13556) +HANDLE_BAT(, 13557) +HANDLE_BAT(, 13558) +HANDLE_BAT(, 13559) +HANDLE_BAT(, 13560) +HANDLE_BAT(, 13561) +HANDLE_BAT(, 13562) +HANDLE_BAT(, 13563) +HANDLE_BAT(, 13564) +HANDLE_BAT(, 13565) +HANDLE_BAT(, 13566) +HANDLE_BAT(, 13567) +HANDLE_BAT(, 13568) +HANDLE_BAT(, 13569) +HANDLE_BAT(, 13570) +HANDLE_BAT(, 13571) +HANDLE_BAT(, 13572) +HANDLE_BAT(, 13573) +HANDLE_BAT(, 13574) +HANDLE_BAT(, 13575) +HANDLE_BAT(, 13576) +HANDLE_BAT(, 13577) +HANDLE_BAT(, 13578) +HANDLE_BAT(, 13579) +HANDLE_BAT(, 13580) +HANDLE_BAT(, 13581) +HANDLE_BAT(, 13582) +HANDLE_BAT(, 13583) +HANDLE_BAT(, 13584) +HANDLE_BAT(, 13585) +HANDLE_BAT(, 13586) +HANDLE_BAT(, 13587) +HANDLE_BAT(, 13588) +HANDLE_BAT(, 13589) +HANDLE_BAT(, 13590) +HANDLE_BAT(, 13591) +HANDLE_BAT(, 13592) +HANDLE_BAT(, 13593) +HANDLE_BAT(, 13594) +HANDLE_BAT(, 13595) +HANDLE_BAT(, 13596) +HANDLE_BAT(, 13597) +HANDLE_BAT(, 13598) +HANDLE_BAT(, 13599) +HANDLE_BAT(, 13600) +HANDLE_BAT(, 13601) +HANDLE_BAT(, 13602) +HANDLE_BAT(, 13603) +HANDLE_BAT(, 13604) +HANDLE_BAT(, 13605) +HANDLE_BAT(, 13606) +HANDLE_BAT(, 13607) +HANDLE_BAT(, 13608) +HANDLE_BAT(, 13609) +HANDLE_BAT(, 13610) +HANDLE_BAT(, 13611) +HANDLE_BAT(, 13612) +HANDLE_BAT(, 13613) +HANDLE_BAT(, 13614) +HANDLE_BAT(, 13615) +HANDLE_BAT(, 13616) +HANDLE_BAT(, 13617) +HANDLE_BAT(, 13618) +HANDLE_BAT(, 13619) +HANDLE_BAT(, 13620) +HANDLE_BAT(, 13621) +HANDLE_BAT(, 13622) +HANDLE_BAT(, 13623) +HANDLE_BAT(, 13624) +HANDLE_BAT(, 13625) +HANDLE_BAT(, 13626) +HANDLE_BAT(, 13627) +HANDLE_BAT(, 13628) +HANDLE_BAT(, 13629) +HANDLE_BAT(, 13630) +HANDLE_BAT(, 13631) +HANDLE_BAT(, 13632) +HANDLE_BAT(, 13633) +HANDLE_BAT(, 13634) +HANDLE_BAT(, 13635) +HANDLE_BAT(, 13636) +HANDLE_BAT(, 13637) +HANDLE_BAT(, 13638) +HANDLE_BAT(, 13639) +HANDLE_BAT(, 13640) +HANDLE_BAT(, 13641) +HANDLE_BAT(, 13642) +HANDLE_BAT(, 13643) +HANDLE_BAT(, 13644) +HANDLE_BAT(, 13645) +HANDLE_BAT(, 13646) +HANDLE_BAT(, 13647) +HANDLE_BAT(, 13648) +HANDLE_BAT(, 13649) +HANDLE_BAT(, 13650) +HANDLE_BAT(, 13651) +HANDLE_BAT(, 13652) +HANDLE_BAT(, 13653) +HANDLE_BAT(, 13654) +HANDLE_BAT(, 13655) +HANDLE_BAT(, 13656) +HANDLE_BAT(, 13657) +HANDLE_BAT(, 13658) +HANDLE_BAT(, 13659) +HANDLE_BAT(, 13660) +HANDLE_BAT(, 13661) +HANDLE_BAT(, 13662) +HANDLE_BAT(, 13663) +HANDLE_BAT(, 13664) +HANDLE_BAT(, 13665) +HANDLE_BAT(, 13666) +HANDLE_BAT(, 13667) +HANDLE_BAT(, 13668) +HANDLE_BAT(, 13669) +HANDLE_BAT(, 13670) +HANDLE_BAT(, 13671) +HANDLE_BAT(, 13672) +HANDLE_BAT(, 13673) +HANDLE_BAT(, 13674) +HANDLE_BAT(, 13675) +HANDLE_BAT(, 13676) +HANDLE_BAT(, 13677) +HANDLE_BAT(, 13678) +HANDLE_BAT(, 13679) +HANDLE_BAT(, 13680) +HANDLE_BAT(, 13681) +HANDLE_BAT(, 13682) +HANDLE_BAT(, 13683) +HANDLE_BAT(, 13684) +HANDLE_BAT(, 13685) +HANDLE_BAT(, 13686) +HANDLE_BAT(, 13687) +HANDLE_BAT(, 13688) +HANDLE_BAT(, 13689) +HANDLE_BAT(, 13690) +HANDLE_BAT(, 13691) +HANDLE_BAT(, 13692) +HANDLE_BAT(, 13693) +HANDLE_BAT(, 13694) +HANDLE_BAT(, 13695) +HANDLE_BAT(, 13696) +HANDLE_BAT(, 13697) +HANDLE_BAT(, 13698) +HANDLE_BAT(, 13699) +HANDLE_BAT(, 13700) +HANDLE_BAT(, 13701) +HANDLE_BAT(, 13702) +HANDLE_BAT(, 13703) +HANDLE_BAT(, 13704) +HANDLE_BAT(, 13705) +HANDLE_BAT(, 13706) +HANDLE_BAT(, 13707) +HANDLE_BAT(, 13708) +HANDLE_BAT(, 13709) +HANDLE_BAT(, 13710) +HANDLE_BAT(, 13711) +HANDLE_BAT(, 13712) +HANDLE_BAT(, 13713) +HANDLE_BAT(, 13714) +HANDLE_BAT(, 13715) +HANDLE_BAT(, 13716) +HANDLE_BAT(, 13717) +HANDLE_BAT(, 13718) +HANDLE_BAT(, 13719) +HANDLE_BAT(, 13720) +HANDLE_BAT(, 13721) +HANDLE_BAT(, 13722) +HANDLE_BAT(, 13723) +HANDLE_BAT(, 13724) +HANDLE_BAT(, 13725) +HANDLE_BAT(, 13726) +HANDLE_BAT(, 13727) +HANDLE_BAT(, 13728) +HANDLE_BAT(, 13729) +HANDLE_BAT(, 13730) +HANDLE_BAT(, 13731) +HANDLE_BAT(, 13732) +HANDLE_BAT(, 13733) +HANDLE_BAT(, 13734) +HANDLE_BAT(, 13735) +HANDLE_BAT(, 13736) +HANDLE_BAT(, 13737) +HANDLE_BAT(, 13738) +HANDLE_BAT(, 13739) +HANDLE_BAT(, 13740) +HANDLE_BAT(, 13741) +HANDLE_BAT(, 13742) +HANDLE_BAT(, 13743) +HANDLE_BAT(, 13744) +HANDLE_BAT(, 13745) +HANDLE_BAT(, 13746) +HANDLE_BAT(, 13747) +HANDLE_BAT(, 13748) +HANDLE_BAT(, 13749) +HANDLE_BAT(, 13750) +HANDLE_BAT(, 13751) +HANDLE_BAT(, 13752) +HANDLE_BAT(, 13753) +HANDLE_BAT(, 13754) +HANDLE_BAT(, 13755) +HANDLE_BAT(, 13756) +HANDLE_BAT(, 13757) +HANDLE_BAT(, 13758) +HANDLE_BAT(, 13759) +HANDLE_BAT(, 13760) +HANDLE_BAT(, 13761) +HANDLE_BAT(, 13762) +HANDLE_BAT(, 13763) +HANDLE_BAT(, 13764) +HANDLE_BAT(, 13765) +HANDLE_BAT(, 13766) +HANDLE_BAT(, 13767) +HANDLE_BAT(, 13768) +HANDLE_BAT(, 13769) +HANDLE_BAT(, 13770) +HANDLE_BAT(, 13771) +HANDLE_BAT(, 13772) +HANDLE_BAT(, 13773) +HANDLE_BAT(, 13774) +HANDLE_BAT(, 13775) +HANDLE_BAT(, 13776) +HANDLE_BAT(, 13777) +HANDLE_BAT(, 13778) +HANDLE_BAT(, 13779) +HANDLE_BAT(, 13780) +HANDLE_BAT(, 13781) +HANDLE_BAT(, 13782) +HANDLE_BAT(, 13783) +HANDLE_BAT(, 13784) +HANDLE_BAT(, 13785) +HANDLE_BAT(, 13786) +HANDLE_BAT(, 13787) +HANDLE_BAT(, 13788) +HANDLE_BAT(, 13789) +HANDLE_BAT(, 13790) +HANDLE_BAT(, 13791) +HANDLE_BAT(, 13792) +HANDLE_BAT(, 13793) +HANDLE_BAT(, 13794) +HANDLE_BAT(, 13795) +HANDLE_BAT(, 13796) +HANDLE_BAT(, 13797) +HANDLE_BAT(, 13798) +HANDLE_BAT(, 13799) +HANDLE_BAT(, 13800) +HANDLE_BAT(, 13801) +HANDLE_BAT(, 13802) +HANDLE_BAT(, 13803) +HANDLE_BAT(, 13804) +HANDLE_BAT(, 13805) +HANDLE_BAT(, 13806) +HANDLE_BAT(, 13807) +HANDLE_BAT(, 13808) +HANDLE_BAT(, 13809) +HANDLE_BAT(, 13810) +HANDLE_BAT(, 13811) +HANDLE_BAT(, 13812) +HANDLE_BAT(, 13813) +HANDLE_BAT(, 13814) +HANDLE_BAT(, 13815) +HANDLE_BAT(, 13816) +HANDLE_BAT(, 13817) +HANDLE_BAT(, 13818) +HANDLE_BAT(, 13819) +HANDLE_BAT(, 13820) +HANDLE_BAT(, 13821) +HANDLE_BAT(, 13822) +HANDLE_BAT(, 13823) +HANDLE_BAT(, 13824) +HANDLE_BAT(, 13825) +HANDLE_BAT(, 13826) +HANDLE_BAT(, 13827) +HANDLE_BAT(, 13828) +HANDLE_BAT(, 13829) +HANDLE_BAT(, 13830) +HANDLE_BAT(, 13831) +HANDLE_BAT(, 13832) +HANDLE_BAT(, 13833) +HANDLE_BAT(, 13834) +HANDLE_BAT(, 13835) +HANDLE_BAT(, 13836) +HANDLE_BAT(, 13837) +HANDLE_BAT(, 13838) +HANDLE_BAT(, 13839) +HANDLE_BAT(, 13840) +HANDLE_BAT(, 13841) +HANDLE_BAT(, 13842) +HANDLE_BAT(, 13843) +HANDLE_BAT(, 13844) +HANDLE_BAT(, 13845) +HANDLE_BAT(, 13846) +HANDLE_BAT(, 13847) +HANDLE_BAT(, 13848) +HANDLE_BAT(, 13849) +HANDLE_BAT(, 13850) +HANDLE_BAT(, 13851) +HANDLE_BAT(, 13852) +HANDLE_BAT(, 13853) +HANDLE_BAT(, 13854) +HANDLE_BAT(, 13855) +HANDLE_BAT(, 13856) +HANDLE_BAT(, 13857) +HANDLE_BAT(, 13858) +HANDLE_BAT(, 13859) +HANDLE_BAT(, 13860) +HANDLE_BAT(, 13861) +HANDLE_BAT(, 13862) +HANDLE_BAT(, 13863) +HANDLE_BAT(, 13864) +HANDLE_BAT(, 13865) +HANDLE_BAT(, 13866) +HANDLE_BAT(, 13867) +HANDLE_BAT(, 13868) +HANDLE_BAT(, 13869) +HANDLE_BAT(, 13870) +HANDLE_BAT(, 13871) +HANDLE_BAT(, 13872) +HANDLE_BAT(, 13873) +HANDLE_BAT(, 13874) +HANDLE_BAT(, 13875) +HANDLE_BAT(, 13876) +HANDLE_BAT(, 13877) +HANDLE_BAT(, 13878) +HANDLE_BAT(, 13879) +HANDLE_BAT(, 13880) +HANDLE_BAT(, 13881) +HANDLE_BAT(, 13882) +HANDLE_BAT(, 13883) +HANDLE_BAT(, 13884) +HANDLE_BAT(, 13885) +HANDLE_BAT(, 13886) +HANDLE_BAT(, 13887) +HANDLE_BAT(, 13888) +HANDLE_BAT(, 13889) +HANDLE_BAT(, 13890) +HANDLE_BAT(, 13891) +HANDLE_BAT(, 13892) +HANDLE_BAT(, 13893) +HANDLE_BAT(, 13894) +HANDLE_BAT(, 13895) +HANDLE_BAT(, 13896) +HANDLE_BAT(, 13897) +HANDLE_BAT(, 13898) +HANDLE_BAT(, 13899) +HANDLE_BAT(, 13900) +HANDLE_BAT(, 13901) +HANDLE_BAT(, 13902) +HANDLE_BAT(, 13903) +HANDLE_BAT(, 13904) +HANDLE_BAT(, 13905) +HANDLE_BAT(, 13906) +HANDLE_BAT(, 13907) +HANDLE_BAT(, 13908) +HANDLE_BAT(, 13909) +HANDLE_BAT(, 13910) +HANDLE_BAT(, 13911) +HANDLE_BAT(, 13912) +HANDLE_BAT(, 13913) +HANDLE_BAT(, 13914) +HANDLE_BAT(, 13915) +HANDLE_BAT(, 13916) +HANDLE_BAT(, 13917) +HANDLE_BAT(, 13918) +HANDLE_BAT(, 13919) +HANDLE_BAT(, 13920) +HANDLE_BAT(, 13921) +HANDLE_BAT(, 13922) +HANDLE_BAT(, 13923) +HANDLE_BAT(, 13924) +HANDLE_BAT(, 13925) +HANDLE_BAT(, 13926) +HANDLE_BAT(, 13927) +HANDLE_BAT(, 13928) +HANDLE_BAT(, 13929) +HANDLE_BAT(, 13930) +HANDLE_BAT(, 13931) +HANDLE_BAT(, 13932) +HANDLE_BAT(, 13933) +HANDLE_BAT(, 13934) +HANDLE_BAT(, 13935) +HANDLE_BAT(, 13936) +HANDLE_BAT(, 13937) +HANDLE_BAT(, 13938) +HANDLE_BAT(, 13939) +HANDLE_BAT(, 13940) +HANDLE_BAT(, 13941) +HANDLE_BAT(, 13942) +HANDLE_BAT(, 13943) +HANDLE_BAT(, 13944) +HANDLE_BAT(, 13945) +HANDLE_BAT(, 13946) +HANDLE_BAT(, 13947) +HANDLE_BAT(, 13948) +HANDLE_BAT(, 13949) +HANDLE_BAT(, 13950) +HANDLE_BAT(, 13951) +HANDLE_BAT(, 13952) +HANDLE_BAT(, 13953) +HANDLE_BAT(, 13954) +HANDLE_BAT(, 13955) +HANDLE_BAT(, 13956) +HANDLE_BAT(, 13957) +HANDLE_BAT(, 13958) +HANDLE_BAT(, 13959) +HANDLE_BAT(, 13960) +HANDLE_BAT(, 13961) +HANDLE_BAT(, 13962) +HANDLE_BAT(, 13963) +HANDLE_BAT(, 13964) +HANDLE_BAT(, 13965) +HANDLE_BAT(, 13966) +HANDLE_BAT(, 13967) +HANDLE_BAT(, 13968) +HANDLE_BAT(, 13969) +HANDLE_BAT(, 13970) +HANDLE_BAT(, 13971) +HANDLE_BAT(, 13972) +HANDLE_BAT(, 13973) +HANDLE_BAT(, 13974) +HANDLE_BAT(, 13975) +HANDLE_BAT(, 13976) +HANDLE_BAT(, 13977) +HANDLE_BAT(, 13978) +HANDLE_BAT(, 13979) +HANDLE_BAT(, 13980) +HANDLE_BAT(, 13981) +HANDLE_BAT(, 13982) +HANDLE_BAT(, 13983) +HANDLE_BAT(, 13984) +HANDLE_BAT(, 13985) +HANDLE_BAT(, 13986) +HANDLE_BAT(, 13987) +HANDLE_BAT(, 13988) +HANDLE_BAT(, 13989) +HANDLE_BAT(, 13990) +HANDLE_BAT(, 13991) +HANDLE_BAT(, 13992) +HANDLE_BAT(, 13993) +HANDLE_BAT(, 13994) +HANDLE_BAT(, 13995) +HANDLE_BAT(, 13996) +HANDLE_BAT(, 13997) +HANDLE_BAT(, 13998) +HANDLE_BAT(, 13999) +HANDLE_BAT(, 14000) +HANDLE_BAT(, 14001) +HANDLE_BAT(, 14002) +HANDLE_BAT(, 14003) +HANDLE_BAT(, 14004) +HANDLE_BAT(, 14005) +HANDLE_BAT(, 14006) +HANDLE_BAT(, 14007) +HANDLE_BAT(, 14008) +HANDLE_BAT(, 14009) +HANDLE_BAT(, 14010) +HANDLE_BAT(, 14011) +HANDLE_BAT(, 14012) +HANDLE_BAT(, 14013) +HANDLE_BAT(, 14014) +HANDLE_BAT(, 14015) +HANDLE_BAT(, 14016) +HANDLE_BAT(, 14017) +HANDLE_BAT(, 14018) +HANDLE_BAT(, 14019) +HANDLE_BAT(, 14020) +HANDLE_BAT(, 14021) +HANDLE_BAT(, 14022) +HANDLE_BAT(, 14023) +HANDLE_BAT(, 14024) +HANDLE_BAT(, 14025) +HANDLE_BAT(, 14026) +HANDLE_BAT(, 14027) +HANDLE_BAT(, 14028) +HANDLE_BAT(, 14029) +HANDLE_BAT(, 14030) +HANDLE_BAT(, 14031) +HANDLE_BAT(, 14032) +HANDLE_BAT(, 14033) +HANDLE_BAT(, 14034) +HANDLE_BAT(, 14035) +HANDLE_BAT(, 14036) +HANDLE_BAT(, 14037) +HANDLE_BAT(, 14038) +HANDLE_BAT(, 14039) +HANDLE_BAT(, 14040) +HANDLE_BAT(, 14041) +HANDLE_BAT(, 14042) +HANDLE_BAT(, 14043) +HANDLE_BAT(, 14044) +HANDLE_BAT(, 14045) +HANDLE_BAT(, 14046) +HANDLE_BAT(, 14047) +HANDLE_BAT(, 14048) +HANDLE_BAT(, 14049) +HANDLE_BAT(, 14050) +HANDLE_BAT(, 14051) +HANDLE_BAT(, 14052) +HANDLE_BAT(, 14053) +HANDLE_BAT(, 14054) +HANDLE_BAT(, 14055) +HANDLE_BAT(, 14056) +HANDLE_BAT(, 14057) +HANDLE_BAT(, 14058) +HANDLE_BAT(, 14059) +HANDLE_BAT(, 14060) +HANDLE_BAT(, 14061) +HANDLE_BAT(, 14062) +HANDLE_BAT(, 14063) +HANDLE_BAT(, 14064) +HANDLE_BAT(, 14065) +HANDLE_BAT(, 14066) +HANDLE_BAT(, 14067) +HANDLE_BAT(, 14068) +HANDLE_BAT(, 14069) +HANDLE_BAT(, 14070) +HANDLE_BAT(, 14071) +HANDLE_BAT(, 14072) +HANDLE_BAT(, 14073) +HANDLE_BAT(, 14074) +HANDLE_BAT(, 14075) +HANDLE_BAT(, 14076) +HANDLE_BAT(, 14077) +HANDLE_BAT(, 14078) +HANDLE_BAT(, 14079) +HANDLE_BAT(, 14080) +HANDLE_BAT(, 14081) +HANDLE_BAT(, 14082) +HANDLE_BAT(, 14083) +HANDLE_BAT(, 14084) +HANDLE_BAT(, 14085) +HANDLE_BAT(, 14086) +HANDLE_BAT(, 14087) +HANDLE_BAT(, 14088) +HANDLE_BAT(, 14089) +HANDLE_BAT(, 14090) +HANDLE_BAT(, 14091) +HANDLE_BAT(, 14092) +HANDLE_BAT(, 14093) +HANDLE_BAT(, 14094) +HANDLE_BAT(, 14095) +HANDLE_BAT(, 14096) +HANDLE_BAT(, 14097) +HANDLE_BAT(, 14098) +HANDLE_BAT(, 14099) +HANDLE_BAT(, 14100) +HANDLE_BAT(, 14101) +HANDLE_BAT(, 14102) +HANDLE_BAT(, 14103) +HANDLE_BAT(, 14104) +HANDLE_BAT(, 14105) +HANDLE_BAT(, 14106) +HANDLE_BAT(, 14107) +HANDLE_BAT(, 14108) +HANDLE_BAT(, 14109) +HANDLE_BAT(, 14110) +HANDLE_BAT(, 14111) +HANDLE_BAT(, 14112) +HANDLE_BAT(, 14113) +HANDLE_BAT(, 14114) +HANDLE_BAT(, 14115) +HANDLE_BAT(, 14116) +HANDLE_BAT(, 14117) +HANDLE_BAT(, 14118) +HANDLE_BAT(, 14119) +HANDLE_BAT(, 14120) +HANDLE_BAT(, 14121) +HANDLE_BAT(, 14122) +HANDLE_BAT(, 14123) +HANDLE_BAT(, 14124) +HANDLE_BAT(, 14125) +HANDLE_BAT(, 14126) +HANDLE_BAT(, 14127) +HANDLE_BAT(, 14128) +HANDLE_BAT(, 14129) +HANDLE_BAT(, 14130) +HANDLE_BAT(, 14131) +HANDLE_BAT(, 14132) +HANDLE_BAT(, 14133) +HANDLE_BAT(, 14134) +HANDLE_BAT(, 14135) +HANDLE_BAT(, 14136) +HANDLE_BAT(, 14137) +HANDLE_BAT(, 14138) +HANDLE_BAT(, 14139) +HANDLE_BAT(, 14140) +HANDLE_BAT(, 14141) +HANDLE_BAT(, 14142) +HANDLE_BAT(, 14143) +HANDLE_BAT(, 14144) +HANDLE_BAT(, 14145) +HANDLE_BAT(, 14146) +HANDLE_BAT(, 14147) +HANDLE_BAT(, 14148) +HANDLE_BAT(, 14149) +HANDLE_BAT(, 14150) +HANDLE_BAT(, 14151) +HANDLE_BAT(, 14152) +HANDLE_BAT(, 14153) +HANDLE_BAT(, 14154) +HANDLE_BAT(, 14155) +HANDLE_BAT(, 14156) +HANDLE_BAT(, 14157) +HANDLE_BAT(, 14158) +HANDLE_BAT(, 14159) +HANDLE_BAT(, 14160) +HANDLE_BAT(, 14161) +HANDLE_BAT(, 14162) +HANDLE_BAT(, 14163) +HANDLE_BAT(, 14164) +HANDLE_BAT(, 14165) +HANDLE_BAT(, 14166) +HANDLE_BAT(, 14167) +HANDLE_BAT(, 14168) +HANDLE_BAT(, 14169) +HANDLE_BAT(, 14170) +HANDLE_BAT(, 14171) +HANDLE_BAT(, 14172) +HANDLE_BAT(, 14173) +HANDLE_BAT(, 14174) +HANDLE_BAT(, 14175) +HANDLE_BAT(, 14176) +HANDLE_BAT(, 14177) +HANDLE_BAT(, 14178) +HANDLE_BAT(, 14179) +HANDLE_BAT(, 14180) +HANDLE_BAT(, 14181) +HANDLE_BAT(, 14182) +HANDLE_BAT(, 14183) +HANDLE_BAT(, 14184) +HANDLE_BAT(, 14185) +HANDLE_BAT(, 14186) +HANDLE_BAT(, 14187) +HANDLE_BAT(, 14188) +HANDLE_BAT(, 14189) +HANDLE_BAT(, 14190) +HANDLE_BAT(, 14191) +HANDLE_BAT(, 14192) +HANDLE_BAT(, 14193) +HANDLE_BAT(, 14194) +HANDLE_BAT(, 14195) +HANDLE_BAT(, 14196) +HANDLE_BAT(, 14197) +HANDLE_BAT(, 14198) +HANDLE_BAT(, 14199) +HANDLE_BAT(, 14200) +HANDLE_BAT(, 14201) +HANDLE_BAT(, 14202) +HANDLE_BAT(, 14203) +HANDLE_BAT(, 14204) +HANDLE_BAT(, 14205) +HANDLE_BAT(, 14206) +HANDLE_BAT(, 14207) +HANDLE_BAT(, 14208) +HANDLE_BAT(, 14209) +HANDLE_BAT(, 14210) +HANDLE_BAT(, 14211) +HANDLE_BAT(, 14212) +HANDLE_BAT(, 14213) +HANDLE_BAT(, 14214) +HANDLE_BAT(, 14215) +HANDLE_BAT(, 14216) +HANDLE_BAT(, 14217) +HANDLE_BAT(, 14218) +HANDLE_BAT(, 14219) +HANDLE_BAT(, 14220) +HANDLE_BAT(, 14221) +HANDLE_BAT(, 14222) +HANDLE_BAT(, 14223) +HANDLE_BAT(, 14224) +HANDLE_BAT(, 14225) +HANDLE_BAT(, 14226) +HANDLE_BAT(, 14227) +HANDLE_BAT(, 14228) +HANDLE_BAT(, 14229) +HANDLE_BAT(, 14230) +HANDLE_BAT(, 14231) +HANDLE_BAT(, 14232) +HANDLE_BAT(, 14233) +HANDLE_BAT(, 14234) +HANDLE_BAT(, 14235) +HANDLE_BAT(, 14236) +HANDLE_BAT(, 14237) +HANDLE_BAT(, 14238) +HANDLE_BAT(, 14239) +HANDLE_BAT(, 14240) +HANDLE_BAT(, 14241) +HANDLE_BAT(, 14242) +HANDLE_BAT(, 14243) +HANDLE_BAT(, 14244) +HANDLE_BAT(, 14245) +HANDLE_BAT(, 14246) +HANDLE_BAT(, 14247) +HANDLE_BAT(, 14248) +HANDLE_BAT(, 14249) +HANDLE_BAT(, 14250) +HANDLE_BAT(, 14251) +HANDLE_BAT(, 14252) +HANDLE_BAT(, 14253) +HANDLE_BAT(, 14254) +HANDLE_BAT(, 14255) +HANDLE_BAT(, 14256) +HANDLE_BAT(, 14257) +HANDLE_BAT(, 14258) +HANDLE_BAT(, 14259) +HANDLE_BAT(, 14260) +HANDLE_BAT(, 14261) +HANDLE_BAT(, 14262) +HANDLE_BAT(, 14263) +HANDLE_BAT(, 14264) +HANDLE_BAT(, 14265) +HANDLE_BAT(, 14266) +HANDLE_BAT(, 14267) +HANDLE_BAT(, 14268) +HANDLE_BAT(, 14269) +HANDLE_BAT(, 14270) +HANDLE_BAT(, 14271) +HANDLE_BAT(, 14272) +HANDLE_BAT(, 14273) +HANDLE_BAT(, 14274) +HANDLE_BAT(, 14275) +HANDLE_BAT(, 14276) +HANDLE_BAT(, 14277) +HANDLE_BAT(, 14278) +HANDLE_BAT(, 14279) +HANDLE_BAT(, 14280) +HANDLE_BAT(, 14281) +HANDLE_BAT(, 14282) +HANDLE_BAT(, 14283) +HANDLE_BAT(, 14284) +HANDLE_BAT(, 14285) +HANDLE_BAT(, 14286) +HANDLE_BAT(, 14287) +HANDLE_BAT(, 14288) +HANDLE_BAT(, 14289) +HANDLE_BAT(, 14290) +HANDLE_BAT(, 14291) +HANDLE_BAT(, 14292) +HANDLE_BAT(, 14293) +HANDLE_BAT(, 14294) +HANDLE_BAT(, 14295) +HANDLE_BAT(, 14296) +HANDLE_BAT(, 14297) +HANDLE_BAT(, 14298) +HANDLE_BAT(, 14299) +HANDLE_BAT(, 14300) +HANDLE_BAT(, 14301) +HANDLE_BAT(, 14302) +HANDLE_BAT(, 14303) +HANDLE_BAT(, 14304) +HANDLE_BAT(, 14305) +HANDLE_BAT(, 14306) +HANDLE_BAT(, 14307) +HANDLE_BAT(, 14308) +HANDLE_BAT(, 14309) +HANDLE_BAT(, 14310) +HANDLE_BAT(, 14311) +HANDLE_BAT(, 14312) +HANDLE_BAT(, 14313) +HANDLE_BAT(, 14314) +HANDLE_BAT(, 14315) +HANDLE_BAT(, 14316) +HANDLE_BAT(, 14317) +HANDLE_BAT(, 14318) +HANDLE_BAT(, 14319) +HANDLE_BAT(, 14320) +HANDLE_BAT(, 14321) +HANDLE_BAT(, 14322) +HANDLE_BAT(, 14323) +HANDLE_BAT(, 14324) +HANDLE_BAT(, 14325) +HANDLE_BAT(, 14326) +HANDLE_BAT(, 14327) +HANDLE_BAT(, 14328) +HANDLE_BAT(, 14329) +HANDLE_BAT(, 14330) +HANDLE_BAT(, 14331) +HANDLE_BAT(, 14332) +HANDLE_BAT(, 14333) +HANDLE_BAT(, 14334) +HANDLE_BAT(, 14335) +HANDLE_BAT(, 14336) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 13313) +HANDLE_BAT(APINT_TYPE_PREFIX, 13314) +HANDLE_BAT(APINT_TYPE_PREFIX, 13315) +HANDLE_BAT(APINT_TYPE_PREFIX, 13316) +HANDLE_BAT(APINT_TYPE_PREFIX, 13317) +HANDLE_BAT(APINT_TYPE_PREFIX, 13318) +HANDLE_BAT(APINT_TYPE_PREFIX, 13319) +HANDLE_BAT(APINT_TYPE_PREFIX, 13320) +HANDLE_BAT(APINT_TYPE_PREFIX, 13321) +HANDLE_BAT(APINT_TYPE_PREFIX, 13322) +HANDLE_BAT(APINT_TYPE_PREFIX, 13323) +HANDLE_BAT(APINT_TYPE_PREFIX, 13324) +HANDLE_BAT(APINT_TYPE_PREFIX, 13325) +HANDLE_BAT(APINT_TYPE_PREFIX, 13326) +HANDLE_BAT(APINT_TYPE_PREFIX, 13327) +HANDLE_BAT(APINT_TYPE_PREFIX, 13328) +HANDLE_BAT(APINT_TYPE_PREFIX, 13329) +HANDLE_BAT(APINT_TYPE_PREFIX, 13330) +HANDLE_BAT(APINT_TYPE_PREFIX, 13331) +HANDLE_BAT(APINT_TYPE_PREFIX, 13332) +HANDLE_BAT(APINT_TYPE_PREFIX, 13333) +HANDLE_BAT(APINT_TYPE_PREFIX, 13334) +HANDLE_BAT(APINT_TYPE_PREFIX, 13335) +HANDLE_BAT(APINT_TYPE_PREFIX, 13336) +HANDLE_BAT(APINT_TYPE_PREFIX, 13337) +HANDLE_BAT(APINT_TYPE_PREFIX, 13338) +HANDLE_BAT(APINT_TYPE_PREFIX, 13339) +HANDLE_BAT(APINT_TYPE_PREFIX, 13340) +HANDLE_BAT(APINT_TYPE_PREFIX, 13341) +HANDLE_BAT(APINT_TYPE_PREFIX, 13342) +HANDLE_BAT(APINT_TYPE_PREFIX, 13343) +HANDLE_BAT(APINT_TYPE_PREFIX, 13344) +HANDLE_BAT(APINT_TYPE_PREFIX, 13345) +HANDLE_BAT(APINT_TYPE_PREFIX, 13346) +HANDLE_BAT(APINT_TYPE_PREFIX, 13347) +HANDLE_BAT(APINT_TYPE_PREFIX, 13348) +HANDLE_BAT(APINT_TYPE_PREFIX, 13349) +HANDLE_BAT(APINT_TYPE_PREFIX, 13350) +HANDLE_BAT(APINT_TYPE_PREFIX, 13351) +HANDLE_BAT(APINT_TYPE_PREFIX, 13352) +HANDLE_BAT(APINT_TYPE_PREFIX, 13353) +HANDLE_BAT(APINT_TYPE_PREFIX, 13354) +HANDLE_BAT(APINT_TYPE_PREFIX, 13355) +HANDLE_BAT(APINT_TYPE_PREFIX, 13356) +HANDLE_BAT(APINT_TYPE_PREFIX, 13357) +HANDLE_BAT(APINT_TYPE_PREFIX, 13358) +HANDLE_BAT(APINT_TYPE_PREFIX, 13359) +HANDLE_BAT(APINT_TYPE_PREFIX, 13360) +HANDLE_BAT(APINT_TYPE_PREFIX, 13361) +HANDLE_BAT(APINT_TYPE_PREFIX, 13362) +HANDLE_BAT(APINT_TYPE_PREFIX, 13363) +HANDLE_BAT(APINT_TYPE_PREFIX, 13364) +HANDLE_BAT(APINT_TYPE_PREFIX, 13365) +HANDLE_BAT(APINT_TYPE_PREFIX, 13366) +HANDLE_BAT(APINT_TYPE_PREFIX, 13367) +HANDLE_BAT(APINT_TYPE_PREFIX, 13368) +HANDLE_BAT(APINT_TYPE_PREFIX, 13369) +HANDLE_BAT(APINT_TYPE_PREFIX, 13370) +HANDLE_BAT(APINT_TYPE_PREFIX, 13371) +HANDLE_BAT(APINT_TYPE_PREFIX, 13372) +HANDLE_BAT(APINT_TYPE_PREFIX, 13373) +HANDLE_BAT(APINT_TYPE_PREFIX, 13374) +HANDLE_BAT(APINT_TYPE_PREFIX, 13375) +HANDLE_BAT(APINT_TYPE_PREFIX, 13376) +HANDLE_BAT(APINT_TYPE_PREFIX, 13377) +HANDLE_BAT(APINT_TYPE_PREFIX, 13378) +HANDLE_BAT(APINT_TYPE_PREFIX, 13379) +HANDLE_BAT(APINT_TYPE_PREFIX, 13380) +HANDLE_BAT(APINT_TYPE_PREFIX, 13381) +HANDLE_BAT(APINT_TYPE_PREFIX, 13382) +HANDLE_BAT(APINT_TYPE_PREFIX, 13383) +HANDLE_BAT(APINT_TYPE_PREFIX, 13384) +HANDLE_BAT(APINT_TYPE_PREFIX, 13385) +HANDLE_BAT(APINT_TYPE_PREFIX, 13386) +HANDLE_BAT(APINT_TYPE_PREFIX, 13387) +HANDLE_BAT(APINT_TYPE_PREFIX, 13388) +HANDLE_BAT(APINT_TYPE_PREFIX, 13389) +HANDLE_BAT(APINT_TYPE_PREFIX, 13390) +HANDLE_BAT(APINT_TYPE_PREFIX, 13391) +HANDLE_BAT(APINT_TYPE_PREFIX, 13392) +HANDLE_BAT(APINT_TYPE_PREFIX, 13393) +HANDLE_BAT(APINT_TYPE_PREFIX, 13394) +HANDLE_BAT(APINT_TYPE_PREFIX, 13395) +HANDLE_BAT(APINT_TYPE_PREFIX, 13396) +HANDLE_BAT(APINT_TYPE_PREFIX, 13397) +HANDLE_BAT(APINT_TYPE_PREFIX, 13398) +HANDLE_BAT(APINT_TYPE_PREFIX, 13399) +HANDLE_BAT(APINT_TYPE_PREFIX, 13400) +HANDLE_BAT(APINT_TYPE_PREFIX, 13401) +HANDLE_BAT(APINT_TYPE_PREFIX, 13402) +HANDLE_BAT(APINT_TYPE_PREFIX, 13403) +HANDLE_BAT(APINT_TYPE_PREFIX, 13404) +HANDLE_BAT(APINT_TYPE_PREFIX, 13405) +HANDLE_BAT(APINT_TYPE_PREFIX, 13406) +HANDLE_BAT(APINT_TYPE_PREFIX, 13407) +HANDLE_BAT(APINT_TYPE_PREFIX, 13408) +HANDLE_BAT(APINT_TYPE_PREFIX, 13409) +HANDLE_BAT(APINT_TYPE_PREFIX, 13410) +HANDLE_BAT(APINT_TYPE_PREFIX, 13411) +HANDLE_BAT(APINT_TYPE_PREFIX, 13412) +HANDLE_BAT(APINT_TYPE_PREFIX, 13413) +HANDLE_BAT(APINT_TYPE_PREFIX, 13414) +HANDLE_BAT(APINT_TYPE_PREFIX, 13415) +HANDLE_BAT(APINT_TYPE_PREFIX, 13416) +HANDLE_BAT(APINT_TYPE_PREFIX, 13417) +HANDLE_BAT(APINT_TYPE_PREFIX, 13418) +HANDLE_BAT(APINT_TYPE_PREFIX, 13419) +HANDLE_BAT(APINT_TYPE_PREFIX, 13420) +HANDLE_BAT(APINT_TYPE_PREFIX, 13421) +HANDLE_BAT(APINT_TYPE_PREFIX, 13422) +HANDLE_BAT(APINT_TYPE_PREFIX, 13423) +HANDLE_BAT(APINT_TYPE_PREFIX, 13424) +HANDLE_BAT(APINT_TYPE_PREFIX, 13425) +HANDLE_BAT(APINT_TYPE_PREFIX, 13426) +HANDLE_BAT(APINT_TYPE_PREFIX, 13427) +HANDLE_BAT(APINT_TYPE_PREFIX, 13428) +HANDLE_BAT(APINT_TYPE_PREFIX, 13429) +HANDLE_BAT(APINT_TYPE_PREFIX, 13430) +HANDLE_BAT(APINT_TYPE_PREFIX, 13431) +HANDLE_BAT(APINT_TYPE_PREFIX, 13432) +HANDLE_BAT(APINT_TYPE_PREFIX, 13433) +HANDLE_BAT(APINT_TYPE_PREFIX, 13434) +HANDLE_BAT(APINT_TYPE_PREFIX, 13435) +HANDLE_BAT(APINT_TYPE_PREFIX, 13436) +HANDLE_BAT(APINT_TYPE_PREFIX, 13437) +HANDLE_BAT(APINT_TYPE_PREFIX, 13438) +HANDLE_BAT(APINT_TYPE_PREFIX, 13439) +HANDLE_BAT(APINT_TYPE_PREFIX, 13440) +HANDLE_BAT(APINT_TYPE_PREFIX, 13441) +HANDLE_BAT(APINT_TYPE_PREFIX, 13442) +HANDLE_BAT(APINT_TYPE_PREFIX, 13443) +HANDLE_BAT(APINT_TYPE_PREFIX, 13444) +HANDLE_BAT(APINT_TYPE_PREFIX, 13445) +HANDLE_BAT(APINT_TYPE_PREFIX, 13446) +HANDLE_BAT(APINT_TYPE_PREFIX, 13447) +HANDLE_BAT(APINT_TYPE_PREFIX, 13448) +HANDLE_BAT(APINT_TYPE_PREFIX, 13449) +HANDLE_BAT(APINT_TYPE_PREFIX, 13450) +HANDLE_BAT(APINT_TYPE_PREFIX, 13451) +HANDLE_BAT(APINT_TYPE_PREFIX, 13452) +HANDLE_BAT(APINT_TYPE_PREFIX, 13453) +HANDLE_BAT(APINT_TYPE_PREFIX, 13454) +HANDLE_BAT(APINT_TYPE_PREFIX, 13455) +HANDLE_BAT(APINT_TYPE_PREFIX, 13456) +HANDLE_BAT(APINT_TYPE_PREFIX, 13457) +HANDLE_BAT(APINT_TYPE_PREFIX, 13458) +HANDLE_BAT(APINT_TYPE_PREFIX, 13459) +HANDLE_BAT(APINT_TYPE_PREFIX, 13460) +HANDLE_BAT(APINT_TYPE_PREFIX, 13461) +HANDLE_BAT(APINT_TYPE_PREFIX, 13462) +HANDLE_BAT(APINT_TYPE_PREFIX, 13463) +HANDLE_BAT(APINT_TYPE_PREFIX, 13464) +HANDLE_BAT(APINT_TYPE_PREFIX, 13465) +HANDLE_BAT(APINT_TYPE_PREFIX, 13466) +HANDLE_BAT(APINT_TYPE_PREFIX, 13467) +HANDLE_BAT(APINT_TYPE_PREFIX, 13468) +HANDLE_BAT(APINT_TYPE_PREFIX, 13469) +HANDLE_BAT(APINT_TYPE_PREFIX, 13470) +HANDLE_BAT(APINT_TYPE_PREFIX, 13471) +HANDLE_BAT(APINT_TYPE_PREFIX, 13472) +HANDLE_BAT(APINT_TYPE_PREFIX, 13473) +HANDLE_BAT(APINT_TYPE_PREFIX, 13474) +HANDLE_BAT(APINT_TYPE_PREFIX, 13475) +HANDLE_BAT(APINT_TYPE_PREFIX, 13476) +HANDLE_BAT(APINT_TYPE_PREFIX, 13477) +HANDLE_BAT(APINT_TYPE_PREFIX, 13478) +HANDLE_BAT(APINT_TYPE_PREFIX, 13479) +HANDLE_BAT(APINT_TYPE_PREFIX, 13480) +HANDLE_BAT(APINT_TYPE_PREFIX, 13481) +HANDLE_BAT(APINT_TYPE_PREFIX, 13482) +HANDLE_BAT(APINT_TYPE_PREFIX, 13483) +HANDLE_BAT(APINT_TYPE_PREFIX, 13484) +HANDLE_BAT(APINT_TYPE_PREFIX, 13485) +HANDLE_BAT(APINT_TYPE_PREFIX, 13486) +HANDLE_BAT(APINT_TYPE_PREFIX, 13487) +HANDLE_BAT(APINT_TYPE_PREFIX, 13488) +HANDLE_BAT(APINT_TYPE_PREFIX, 13489) +HANDLE_BAT(APINT_TYPE_PREFIX, 13490) +HANDLE_BAT(APINT_TYPE_PREFIX, 13491) +HANDLE_BAT(APINT_TYPE_PREFIX, 13492) +HANDLE_BAT(APINT_TYPE_PREFIX, 13493) +HANDLE_BAT(APINT_TYPE_PREFIX, 13494) +HANDLE_BAT(APINT_TYPE_PREFIX, 13495) +HANDLE_BAT(APINT_TYPE_PREFIX, 13496) +HANDLE_BAT(APINT_TYPE_PREFIX, 13497) +HANDLE_BAT(APINT_TYPE_PREFIX, 13498) +HANDLE_BAT(APINT_TYPE_PREFIX, 13499) +HANDLE_BAT(APINT_TYPE_PREFIX, 13500) +HANDLE_BAT(APINT_TYPE_PREFIX, 13501) +HANDLE_BAT(APINT_TYPE_PREFIX, 13502) +HANDLE_BAT(APINT_TYPE_PREFIX, 13503) +HANDLE_BAT(APINT_TYPE_PREFIX, 13504) +HANDLE_BAT(APINT_TYPE_PREFIX, 13505) +HANDLE_BAT(APINT_TYPE_PREFIX, 13506) +HANDLE_BAT(APINT_TYPE_PREFIX, 13507) +HANDLE_BAT(APINT_TYPE_PREFIX, 13508) +HANDLE_BAT(APINT_TYPE_PREFIX, 13509) +HANDLE_BAT(APINT_TYPE_PREFIX, 13510) +HANDLE_BAT(APINT_TYPE_PREFIX, 13511) +HANDLE_BAT(APINT_TYPE_PREFIX, 13512) +HANDLE_BAT(APINT_TYPE_PREFIX, 13513) +HANDLE_BAT(APINT_TYPE_PREFIX, 13514) +HANDLE_BAT(APINT_TYPE_PREFIX, 13515) +HANDLE_BAT(APINT_TYPE_PREFIX, 13516) +HANDLE_BAT(APINT_TYPE_PREFIX, 13517) +HANDLE_BAT(APINT_TYPE_PREFIX, 13518) +HANDLE_BAT(APINT_TYPE_PREFIX, 13519) +HANDLE_BAT(APINT_TYPE_PREFIX, 13520) +HANDLE_BAT(APINT_TYPE_PREFIX, 13521) +HANDLE_BAT(APINT_TYPE_PREFIX, 13522) +HANDLE_BAT(APINT_TYPE_PREFIX, 13523) +HANDLE_BAT(APINT_TYPE_PREFIX, 13524) +HANDLE_BAT(APINT_TYPE_PREFIX, 13525) +HANDLE_BAT(APINT_TYPE_PREFIX, 13526) +HANDLE_BAT(APINT_TYPE_PREFIX, 13527) +HANDLE_BAT(APINT_TYPE_PREFIX, 13528) +HANDLE_BAT(APINT_TYPE_PREFIX, 13529) +HANDLE_BAT(APINT_TYPE_PREFIX, 13530) +HANDLE_BAT(APINT_TYPE_PREFIX, 13531) +HANDLE_BAT(APINT_TYPE_PREFIX, 13532) +HANDLE_BAT(APINT_TYPE_PREFIX, 13533) +HANDLE_BAT(APINT_TYPE_PREFIX, 13534) +HANDLE_BAT(APINT_TYPE_PREFIX, 13535) +HANDLE_BAT(APINT_TYPE_PREFIX, 13536) +HANDLE_BAT(APINT_TYPE_PREFIX, 13537) +HANDLE_BAT(APINT_TYPE_PREFIX, 13538) +HANDLE_BAT(APINT_TYPE_PREFIX, 13539) +HANDLE_BAT(APINT_TYPE_PREFIX, 13540) +HANDLE_BAT(APINT_TYPE_PREFIX, 13541) +HANDLE_BAT(APINT_TYPE_PREFIX, 13542) +HANDLE_BAT(APINT_TYPE_PREFIX, 13543) +HANDLE_BAT(APINT_TYPE_PREFIX, 13544) +HANDLE_BAT(APINT_TYPE_PREFIX, 13545) +HANDLE_BAT(APINT_TYPE_PREFIX, 13546) +HANDLE_BAT(APINT_TYPE_PREFIX, 13547) +HANDLE_BAT(APINT_TYPE_PREFIX, 13548) +HANDLE_BAT(APINT_TYPE_PREFIX, 13549) +HANDLE_BAT(APINT_TYPE_PREFIX, 13550) +HANDLE_BAT(APINT_TYPE_PREFIX, 13551) +HANDLE_BAT(APINT_TYPE_PREFIX, 13552) +HANDLE_BAT(APINT_TYPE_PREFIX, 13553) +HANDLE_BAT(APINT_TYPE_PREFIX, 13554) +HANDLE_BAT(APINT_TYPE_PREFIX, 13555) +HANDLE_BAT(APINT_TYPE_PREFIX, 13556) +HANDLE_BAT(APINT_TYPE_PREFIX, 13557) +HANDLE_BAT(APINT_TYPE_PREFIX, 13558) +HANDLE_BAT(APINT_TYPE_PREFIX, 13559) +HANDLE_BAT(APINT_TYPE_PREFIX, 13560) +HANDLE_BAT(APINT_TYPE_PREFIX, 13561) +HANDLE_BAT(APINT_TYPE_PREFIX, 13562) +HANDLE_BAT(APINT_TYPE_PREFIX, 13563) +HANDLE_BAT(APINT_TYPE_PREFIX, 13564) +HANDLE_BAT(APINT_TYPE_PREFIX, 13565) +HANDLE_BAT(APINT_TYPE_PREFIX, 13566) +HANDLE_BAT(APINT_TYPE_PREFIX, 13567) +HANDLE_BAT(APINT_TYPE_PREFIX, 13568) +HANDLE_BAT(APINT_TYPE_PREFIX, 13569) +HANDLE_BAT(APINT_TYPE_PREFIX, 13570) +HANDLE_BAT(APINT_TYPE_PREFIX, 13571) +HANDLE_BAT(APINT_TYPE_PREFIX, 13572) +HANDLE_BAT(APINT_TYPE_PREFIX, 13573) +HANDLE_BAT(APINT_TYPE_PREFIX, 13574) +HANDLE_BAT(APINT_TYPE_PREFIX, 13575) +HANDLE_BAT(APINT_TYPE_PREFIX, 13576) +HANDLE_BAT(APINT_TYPE_PREFIX, 13577) +HANDLE_BAT(APINT_TYPE_PREFIX, 13578) +HANDLE_BAT(APINT_TYPE_PREFIX, 13579) +HANDLE_BAT(APINT_TYPE_PREFIX, 13580) +HANDLE_BAT(APINT_TYPE_PREFIX, 13581) +HANDLE_BAT(APINT_TYPE_PREFIX, 13582) +HANDLE_BAT(APINT_TYPE_PREFIX, 13583) +HANDLE_BAT(APINT_TYPE_PREFIX, 13584) +HANDLE_BAT(APINT_TYPE_PREFIX, 13585) +HANDLE_BAT(APINT_TYPE_PREFIX, 13586) +HANDLE_BAT(APINT_TYPE_PREFIX, 13587) +HANDLE_BAT(APINT_TYPE_PREFIX, 13588) +HANDLE_BAT(APINT_TYPE_PREFIX, 13589) +HANDLE_BAT(APINT_TYPE_PREFIX, 13590) +HANDLE_BAT(APINT_TYPE_PREFIX, 13591) +HANDLE_BAT(APINT_TYPE_PREFIX, 13592) +HANDLE_BAT(APINT_TYPE_PREFIX, 13593) +HANDLE_BAT(APINT_TYPE_PREFIX, 13594) +HANDLE_BAT(APINT_TYPE_PREFIX, 13595) +HANDLE_BAT(APINT_TYPE_PREFIX, 13596) +HANDLE_BAT(APINT_TYPE_PREFIX, 13597) +HANDLE_BAT(APINT_TYPE_PREFIX, 13598) +HANDLE_BAT(APINT_TYPE_PREFIX, 13599) +HANDLE_BAT(APINT_TYPE_PREFIX, 13600) +HANDLE_BAT(APINT_TYPE_PREFIX, 13601) +HANDLE_BAT(APINT_TYPE_PREFIX, 13602) +HANDLE_BAT(APINT_TYPE_PREFIX, 13603) +HANDLE_BAT(APINT_TYPE_PREFIX, 13604) +HANDLE_BAT(APINT_TYPE_PREFIX, 13605) +HANDLE_BAT(APINT_TYPE_PREFIX, 13606) +HANDLE_BAT(APINT_TYPE_PREFIX, 13607) +HANDLE_BAT(APINT_TYPE_PREFIX, 13608) +HANDLE_BAT(APINT_TYPE_PREFIX, 13609) +HANDLE_BAT(APINT_TYPE_PREFIX, 13610) +HANDLE_BAT(APINT_TYPE_PREFIX, 13611) +HANDLE_BAT(APINT_TYPE_PREFIX, 13612) +HANDLE_BAT(APINT_TYPE_PREFIX, 13613) +HANDLE_BAT(APINT_TYPE_PREFIX, 13614) +HANDLE_BAT(APINT_TYPE_PREFIX, 13615) +HANDLE_BAT(APINT_TYPE_PREFIX, 13616) +HANDLE_BAT(APINT_TYPE_PREFIX, 13617) +HANDLE_BAT(APINT_TYPE_PREFIX, 13618) +HANDLE_BAT(APINT_TYPE_PREFIX, 13619) +HANDLE_BAT(APINT_TYPE_PREFIX, 13620) +HANDLE_BAT(APINT_TYPE_PREFIX, 13621) +HANDLE_BAT(APINT_TYPE_PREFIX, 13622) +HANDLE_BAT(APINT_TYPE_PREFIX, 13623) +HANDLE_BAT(APINT_TYPE_PREFIX, 13624) +HANDLE_BAT(APINT_TYPE_PREFIX, 13625) +HANDLE_BAT(APINT_TYPE_PREFIX, 13626) +HANDLE_BAT(APINT_TYPE_PREFIX, 13627) +HANDLE_BAT(APINT_TYPE_PREFIX, 13628) +HANDLE_BAT(APINT_TYPE_PREFIX, 13629) +HANDLE_BAT(APINT_TYPE_PREFIX, 13630) +HANDLE_BAT(APINT_TYPE_PREFIX, 13631) +HANDLE_BAT(APINT_TYPE_PREFIX, 13632) +HANDLE_BAT(APINT_TYPE_PREFIX, 13633) +HANDLE_BAT(APINT_TYPE_PREFIX, 13634) +HANDLE_BAT(APINT_TYPE_PREFIX, 13635) +HANDLE_BAT(APINT_TYPE_PREFIX, 13636) +HANDLE_BAT(APINT_TYPE_PREFIX, 13637) +HANDLE_BAT(APINT_TYPE_PREFIX, 13638) +HANDLE_BAT(APINT_TYPE_PREFIX, 13639) +HANDLE_BAT(APINT_TYPE_PREFIX, 13640) +HANDLE_BAT(APINT_TYPE_PREFIX, 13641) +HANDLE_BAT(APINT_TYPE_PREFIX, 13642) +HANDLE_BAT(APINT_TYPE_PREFIX, 13643) +HANDLE_BAT(APINT_TYPE_PREFIX, 13644) +HANDLE_BAT(APINT_TYPE_PREFIX, 13645) +HANDLE_BAT(APINT_TYPE_PREFIX, 13646) +HANDLE_BAT(APINT_TYPE_PREFIX, 13647) +HANDLE_BAT(APINT_TYPE_PREFIX, 13648) +HANDLE_BAT(APINT_TYPE_PREFIX, 13649) +HANDLE_BAT(APINT_TYPE_PREFIX, 13650) +HANDLE_BAT(APINT_TYPE_PREFIX, 13651) +HANDLE_BAT(APINT_TYPE_PREFIX, 13652) +HANDLE_BAT(APINT_TYPE_PREFIX, 13653) +HANDLE_BAT(APINT_TYPE_PREFIX, 13654) +HANDLE_BAT(APINT_TYPE_PREFIX, 13655) +HANDLE_BAT(APINT_TYPE_PREFIX, 13656) +HANDLE_BAT(APINT_TYPE_PREFIX, 13657) +HANDLE_BAT(APINT_TYPE_PREFIX, 13658) +HANDLE_BAT(APINT_TYPE_PREFIX, 13659) +HANDLE_BAT(APINT_TYPE_PREFIX, 13660) +HANDLE_BAT(APINT_TYPE_PREFIX, 13661) +HANDLE_BAT(APINT_TYPE_PREFIX, 13662) +HANDLE_BAT(APINT_TYPE_PREFIX, 13663) +HANDLE_BAT(APINT_TYPE_PREFIX, 13664) +HANDLE_BAT(APINT_TYPE_PREFIX, 13665) +HANDLE_BAT(APINT_TYPE_PREFIX, 13666) +HANDLE_BAT(APINT_TYPE_PREFIX, 13667) +HANDLE_BAT(APINT_TYPE_PREFIX, 13668) +HANDLE_BAT(APINT_TYPE_PREFIX, 13669) +HANDLE_BAT(APINT_TYPE_PREFIX, 13670) +HANDLE_BAT(APINT_TYPE_PREFIX, 13671) +HANDLE_BAT(APINT_TYPE_PREFIX, 13672) +HANDLE_BAT(APINT_TYPE_PREFIX, 13673) +HANDLE_BAT(APINT_TYPE_PREFIX, 13674) +HANDLE_BAT(APINT_TYPE_PREFIX, 13675) +HANDLE_BAT(APINT_TYPE_PREFIX, 13676) +HANDLE_BAT(APINT_TYPE_PREFIX, 13677) +HANDLE_BAT(APINT_TYPE_PREFIX, 13678) +HANDLE_BAT(APINT_TYPE_PREFIX, 13679) +HANDLE_BAT(APINT_TYPE_PREFIX, 13680) +HANDLE_BAT(APINT_TYPE_PREFIX, 13681) +HANDLE_BAT(APINT_TYPE_PREFIX, 13682) +HANDLE_BAT(APINT_TYPE_PREFIX, 13683) +HANDLE_BAT(APINT_TYPE_PREFIX, 13684) +HANDLE_BAT(APINT_TYPE_PREFIX, 13685) +HANDLE_BAT(APINT_TYPE_PREFIX, 13686) +HANDLE_BAT(APINT_TYPE_PREFIX, 13687) +HANDLE_BAT(APINT_TYPE_PREFIX, 13688) +HANDLE_BAT(APINT_TYPE_PREFIX, 13689) +HANDLE_BAT(APINT_TYPE_PREFIX, 13690) +HANDLE_BAT(APINT_TYPE_PREFIX, 13691) +HANDLE_BAT(APINT_TYPE_PREFIX, 13692) +HANDLE_BAT(APINT_TYPE_PREFIX, 13693) +HANDLE_BAT(APINT_TYPE_PREFIX, 13694) +HANDLE_BAT(APINT_TYPE_PREFIX, 13695) +HANDLE_BAT(APINT_TYPE_PREFIX, 13696) +HANDLE_BAT(APINT_TYPE_PREFIX, 13697) +HANDLE_BAT(APINT_TYPE_PREFIX, 13698) +HANDLE_BAT(APINT_TYPE_PREFIX, 13699) +HANDLE_BAT(APINT_TYPE_PREFIX, 13700) +HANDLE_BAT(APINT_TYPE_PREFIX, 13701) +HANDLE_BAT(APINT_TYPE_PREFIX, 13702) +HANDLE_BAT(APINT_TYPE_PREFIX, 13703) +HANDLE_BAT(APINT_TYPE_PREFIX, 13704) +HANDLE_BAT(APINT_TYPE_PREFIX, 13705) +HANDLE_BAT(APINT_TYPE_PREFIX, 13706) +HANDLE_BAT(APINT_TYPE_PREFIX, 13707) +HANDLE_BAT(APINT_TYPE_PREFIX, 13708) +HANDLE_BAT(APINT_TYPE_PREFIX, 13709) +HANDLE_BAT(APINT_TYPE_PREFIX, 13710) +HANDLE_BAT(APINT_TYPE_PREFIX, 13711) +HANDLE_BAT(APINT_TYPE_PREFIX, 13712) +HANDLE_BAT(APINT_TYPE_PREFIX, 13713) +HANDLE_BAT(APINT_TYPE_PREFIX, 13714) +HANDLE_BAT(APINT_TYPE_PREFIX, 13715) +HANDLE_BAT(APINT_TYPE_PREFIX, 13716) +HANDLE_BAT(APINT_TYPE_PREFIX, 13717) +HANDLE_BAT(APINT_TYPE_PREFIX, 13718) +HANDLE_BAT(APINT_TYPE_PREFIX, 13719) +HANDLE_BAT(APINT_TYPE_PREFIX, 13720) +HANDLE_BAT(APINT_TYPE_PREFIX, 13721) +HANDLE_BAT(APINT_TYPE_PREFIX, 13722) +HANDLE_BAT(APINT_TYPE_PREFIX, 13723) +HANDLE_BAT(APINT_TYPE_PREFIX, 13724) +HANDLE_BAT(APINT_TYPE_PREFIX, 13725) +HANDLE_BAT(APINT_TYPE_PREFIX, 13726) +HANDLE_BAT(APINT_TYPE_PREFIX, 13727) +HANDLE_BAT(APINT_TYPE_PREFIX, 13728) +HANDLE_BAT(APINT_TYPE_PREFIX, 13729) +HANDLE_BAT(APINT_TYPE_PREFIX, 13730) +HANDLE_BAT(APINT_TYPE_PREFIX, 13731) +HANDLE_BAT(APINT_TYPE_PREFIX, 13732) +HANDLE_BAT(APINT_TYPE_PREFIX, 13733) +HANDLE_BAT(APINT_TYPE_PREFIX, 13734) +HANDLE_BAT(APINT_TYPE_PREFIX, 13735) +HANDLE_BAT(APINT_TYPE_PREFIX, 13736) +HANDLE_BAT(APINT_TYPE_PREFIX, 13737) +HANDLE_BAT(APINT_TYPE_PREFIX, 13738) +HANDLE_BAT(APINT_TYPE_PREFIX, 13739) +HANDLE_BAT(APINT_TYPE_PREFIX, 13740) +HANDLE_BAT(APINT_TYPE_PREFIX, 13741) +HANDLE_BAT(APINT_TYPE_PREFIX, 13742) +HANDLE_BAT(APINT_TYPE_PREFIX, 13743) +HANDLE_BAT(APINT_TYPE_PREFIX, 13744) +HANDLE_BAT(APINT_TYPE_PREFIX, 13745) +HANDLE_BAT(APINT_TYPE_PREFIX, 13746) +HANDLE_BAT(APINT_TYPE_PREFIX, 13747) +HANDLE_BAT(APINT_TYPE_PREFIX, 13748) +HANDLE_BAT(APINT_TYPE_PREFIX, 13749) +HANDLE_BAT(APINT_TYPE_PREFIX, 13750) +HANDLE_BAT(APINT_TYPE_PREFIX, 13751) +HANDLE_BAT(APINT_TYPE_PREFIX, 13752) +HANDLE_BAT(APINT_TYPE_PREFIX, 13753) +HANDLE_BAT(APINT_TYPE_PREFIX, 13754) +HANDLE_BAT(APINT_TYPE_PREFIX, 13755) +HANDLE_BAT(APINT_TYPE_PREFIX, 13756) +HANDLE_BAT(APINT_TYPE_PREFIX, 13757) +HANDLE_BAT(APINT_TYPE_PREFIX, 13758) +HANDLE_BAT(APINT_TYPE_PREFIX, 13759) +HANDLE_BAT(APINT_TYPE_PREFIX, 13760) +HANDLE_BAT(APINT_TYPE_PREFIX, 13761) +HANDLE_BAT(APINT_TYPE_PREFIX, 13762) +HANDLE_BAT(APINT_TYPE_PREFIX, 13763) +HANDLE_BAT(APINT_TYPE_PREFIX, 13764) +HANDLE_BAT(APINT_TYPE_PREFIX, 13765) +HANDLE_BAT(APINT_TYPE_PREFIX, 13766) +HANDLE_BAT(APINT_TYPE_PREFIX, 13767) +HANDLE_BAT(APINT_TYPE_PREFIX, 13768) +HANDLE_BAT(APINT_TYPE_PREFIX, 13769) +HANDLE_BAT(APINT_TYPE_PREFIX, 13770) +HANDLE_BAT(APINT_TYPE_PREFIX, 13771) +HANDLE_BAT(APINT_TYPE_PREFIX, 13772) +HANDLE_BAT(APINT_TYPE_PREFIX, 13773) +HANDLE_BAT(APINT_TYPE_PREFIX, 13774) +HANDLE_BAT(APINT_TYPE_PREFIX, 13775) +HANDLE_BAT(APINT_TYPE_PREFIX, 13776) +HANDLE_BAT(APINT_TYPE_PREFIX, 13777) +HANDLE_BAT(APINT_TYPE_PREFIX, 13778) +HANDLE_BAT(APINT_TYPE_PREFIX, 13779) +HANDLE_BAT(APINT_TYPE_PREFIX, 13780) +HANDLE_BAT(APINT_TYPE_PREFIX, 13781) +HANDLE_BAT(APINT_TYPE_PREFIX, 13782) +HANDLE_BAT(APINT_TYPE_PREFIX, 13783) +HANDLE_BAT(APINT_TYPE_PREFIX, 13784) +HANDLE_BAT(APINT_TYPE_PREFIX, 13785) +HANDLE_BAT(APINT_TYPE_PREFIX, 13786) +HANDLE_BAT(APINT_TYPE_PREFIX, 13787) +HANDLE_BAT(APINT_TYPE_PREFIX, 13788) +HANDLE_BAT(APINT_TYPE_PREFIX, 13789) +HANDLE_BAT(APINT_TYPE_PREFIX, 13790) +HANDLE_BAT(APINT_TYPE_PREFIX, 13791) +HANDLE_BAT(APINT_TYPE_PREFIX, 13792) +HANDLE_BAT(APINT_TYPE_PREFIX, 13793) +HANDLE_BAT(APINT_TYPE_PREFIX, 13794) +HANDLE_BAT(APINT_TYPE_PREFIX, 13795) +HANDLE_BAT(APINT_TYPE_PREFIX, 13796) +HANDLE_BAT(APINT_TYPE_PREFIX, 13797) +HANDLE_BAT(APINT_TYPE_PREFIX, 13798) +HANDLE_BAT(APINT_TYPE_PREFIX, 13799) +HANDLE_BAT(APINT_TYPE_PREFIX, 13800) +HANDLE_BAT(APINT_TYPE_PREFIX, 13801) +HANDLE_BAT(APINT_TYPE_PREFIX, 13802) +HANDLE_BAT(APINT_TYPE_PREFIX, 13803) +HANDLE_BAT(APINT_TYPE_PREFIX, 13804) +HANDLE_BAT(APINT_TYPE_PREFIX, 13805) +HANDLE_BAT(APINT_TYPE_PREFIX, 13806) +HANDLE_BAT(APINT_TYPE_PREFIX, 13807) +HANDLE_BAT(APINT_TYPE_PREFIX, 13808) +HANDLE_BAT(APINT_TYPE_PREFIX, 13809) +HANDLE_BAT(APINT_TYPE_PREFIX, 13810) +HANDLE_BAT(APINT_TYPE_PREFIX, 13811) +HANDLE_BAT(APINT_TYPE_PREFIX, 13812) +HANDLE_BAT(APINT_TYPE_PREFIX, 13813) +HANDLE_BAT(APINT_TYPE_PREFIX, 13814) +HANDLE_BAT(APINT_TYPE_PREFIX, 13815) +HANDLE_BAT(APINT_TYPE_PREFIX, 13816) +HANDLE_BAT(APINT_TYPE_PREFIX, 13817) +HANDLE_BAT(APINT_TYPE_PREFIX, 13818) +HANDLE_BAT(APINT_TYPE_PREFIX, 13819) +HANDLE_BAT(APINT_TYPE_PREFIX, 13820) +HANDLE_BAT(APINT_TYPE_PREFIX, 13821) +HANDLE_BAT(APINT_TYPE_PREFIX, 13822) +HANDLE_BAT(APINT_TYPE_PREFIX, 13823) +HANDLE_BAT(APINT_TYPE_PREFIX, 13824) +HANDLE_BAT(APINT_TYPE_PREFIX, 13825) +HANDLE_BAT(APINT_TYPE_PREFIX, 13826) +HANDLE_BAT(APINT_TYPE_PREFIX, 13827) +HANDLE_BAT(APINT_TYPE_PREFIX, 13828) +HANDLE_BAT(APINT_TYPE_PREFIX, 13829) +HANDLE_BAT(APINT_TYPE_PREFIX, 13830) +HANDLE_BAT(APINT_TYPE_PREFIX, 13831) +HANDLE_BAT(APINT_TYPE_PREFIX, 13832) +HANDLE_BAT(APINT_TYPE_PREFIX, 13833) +HANDLE_BAT(APINT_TYPE_PREFIX, 13834) +HANDLE_BAT(APINT_TYPE_PREFIX, 13835) +HANDLE_BAT(APINT_TYPE_PREFIX, 13836) +HANDLE_BAT(APINT_TYPE_PREFIX, 13837) +HANDLE_BAT(APINT_TYPE_PREFIX, 13838) +HANDLE_BAT(APINT_TYPE_PREFIX, 13839) +HANDLE_BAT(APINT_TYPE_PREFIX, 13840) +HANDLE_BAT(APINT_TYPE_PREFIX, 13841) +HANDLE_BAT(APINT_TYPE_PREFIX, 13842) +HANDLE_BAT(APINT_TYPE_PREFIX, 13843) +HANDLE_BAT(APINT_TYPE_PREFIX, 13844) +HANDLE_BAT(APINT_TYPE_PREFIX, 13845) +HANDLE_BAT(APINT_TYPE_PREFIX, 13846) +HANDLE_BAT(APINT_TYPE_PREFIX, 13847) +HANDLE_BAT(APINT_TYPE_PREFIX, 13848) +HANDLE_BAT(APINT_TYPE_PREFIX, 13849) +HANDLE_BAT(APINT_TYPE_PREFIX, 13850) +HANDLE_BAT(APINT_TYPE_PREFIX, 13851) +HANDLE_BAT(APINT_TYPE_PREFIX, 13852) +HANDLE_BAT(APINT_TYPE_PREFIX, 13853) +HANDLE_BAT(APINT_TYPE_PREFIX, 13854) +HANDLE_BAT(APINT_TYPE_PREFIX, 13855) +HANDLE_BAT(APINT_TYPE_PREFIX, 13856) +HANDLE_BAT(APINT_TYPE_PREFIX, 13857) +HANDLE_BAT(APINT_TYPE_PREFIX, 13858) +HANDLE_BAT(APINT_TYPE_PREFIX, 13859) +HANDLE_BAT(APINT_TYPE_PREFIX, 13860) +HANDLE_BAT(APINT_TYPE_PREFIX, 13861) +HANDLE_BAT(APINT_TYPE_PREFIX, 13862) +HANDLE_BAT(APINT_TYPE_PREFIX, 13863) +HANDLE_BAT(APINT_TYPE_PREFIX, 13864) +HANDLE_BAT(APINT_TYPE_PREFIX, 13865) +HANDLE_BAT(APINT_TYPE_PREFIX, 13866) +HANDLE_BAT(APINT_TYPE_PREFIX, 13867) +HANDLE_BAT(APINT_TYPE_PREFIX, 13868) +HANDLE_BAT(APINT_TYPE_PREFIX, 13869) +HANDLE_BAT(APINT_TYPE_PREFIX, 13870) +HANDLE_BAT(APINT_TYPE_PREFIX, 13871) +HANDLE_BAT(APINT_TYPE_PREFIX, 13872) +HANDLE_BAT(APINT_TYPE_PREFIX, 13873) +HANDLE_BAT(APINT_TYPE_PREFIX, 13874) +HANDLE_BAT(APINT_TYPE_PREFIX, 13875) +HANDLE_BAT(APINT_TYPE_PREFIX, 13876) +HANDLE_BAT(APINT_TYPE_PREFIX, 13877) +HANDLE_BAT(APINT_TYPE_PREFIX, 13878) +HANDLE_BAT(APINT_TYPE_PREFIX, 13879) +HANDLE_BAT(APINT_TYPE_PREFIX, 13880) +HANDLE_BAT(APINT_TYPE_PREFIX, 13881) +HANDLE_BAT(APINT_TYPE_PREFIX, 13882) +HANDLE_BAT(APINT_TYPE_PREFIX, 13883) +HANDLE_BAT(APINT_TYPE_PREFIX, 13884) +HANDLE_BAT(APINT_TYPE_PREFIX, 13885) +HANDLE_BAT(APINT_TYPE_PREFIX, 13886) +HANDLE_BAT(APINT_TYPE_PREFIX, 13887) +HANDLE_BAT(APINT_TYPE_PREFIX, 13888) +HANDLE_BAT(APINT_TYPE_PREFIX, 13889) +HANDLE_BAT(APINT_TYPE_PREFIX, 13890) +HANDLE_BAT(APINT_TYPE_PREFIX, 13891) +HANDLE_BAT(APINT_TYPE_PREFIX, 13892) +HANDLE_BAT(APINT_TYPE_PREFIX, 13893) +HANDLE_BAT(APINT_TYPE_PREFIX, 13894) +HANDLE_BAT(APINT_TYPE_PREFIX, 13895) +HANDLE_BAT(APINT_TYPE_PREFIX, 13896) +HANDLE_BAT(APINT_TYPE_PREFIX, 13897) +HANDLE_BAT(APINT_TYPE_PREFIX, 13898) +HANDLE_BAT(APINT_TYPE_PREFIX, 13899) +HANDLE_BAT(APINT_TYPE_PREFIX, 13900) +HANDLE_BAT(APINT_TYPE_PREFIX, 13901) +HANDLE_BAT(APINT_TYPE_PREFIX, 13902) +HANDLE_BAT(APINT_TYPE_PREFIX, 13903) +HANDLE_BAT(APINT_TYPE_PREFIX, 13904) +HANDLE_BAT(APINT_TYPE_PREFIX, 13905) +HANDLE_BAT(APINT_TYPE_PREFIX, 13906) +HANDLE_BAT(APINT_TYPE_PREFIX, 13907) +HANDLE_BAT(APINT_TYPE_PREFIX, 13908) +HANDLE_BAT(APINT_TYPE_PREFIX, 13909) +HANDLE_BAT(APINT_TYPE_PREFIX, 13910) +HANDLE_BAT(APINT_TYPE_PREFIX, 13911) +HANDLE_BAT(APINT_TYPE_PREFIX, 13912) +HANDLE_BAT(APINT_TYPE_PREFIX, 13913) +HANDLE_BAT(APINT_TYPE_PREFIX, 13914) +HANDLE_BAT(APINT_TYPE_PREFIX, 13915) +HANDLE_BAT(APINT_TYPE_PREFIX, 13916) +HANDLE_BAT(APINT_TYPE_PREFIX, 13917) +HANDLE_BAT(APINT_TYPE_PREFIX, 13918) +HANDLE_BAT(APINT_TYPE_PREFIX, 13919) +HANDLE_BAT(APINT_TYPE_PREFIX, 13920) +HANDLE_BAT(APINT_TYPE_PREFIX, 13921) +HANDLE_BAT(APINT_TYPE_PREFIX, 13922) +HANDLE_BAT(APINT_TYPE_PREFIX, 13923) +HANDLE_BAT(APINT_TYPE_PREFIX, 13924) +HANDLE_BAT(APINT_TYPE_PREFIX, 13925) +HANDLE_BAT(APINT_TYPE_PREFIX, 13926) +HANDLE_BAT(APINT_TYPE_PREFIX, 13927) +HANDLE_BAT(APINT_TYPE_PREFIX, 13928) +HANDLE_BAT(APINT_TYPE_PREFIX, 13929) +HANDLE_BAT(APINT_TYPE_PREFIX, 13930) +HANDLE_BAT(APINT_TYPE_PREFIX, 13931) +HANDLE_BAT(APINT_TYPE_PREFIX, 13932) +HANDLE_BAT(APINT_TYPE_PREFIX, 13933) +HANDLE_BAT(APINT_TYPE_PREFIX, 13934) +HANDLE_BAT(APINT_TYPE_PREFIX, 13935) +HANDLE_BAT(APINT_TYPE_PREFIX, 13936) +HANDLE_BAT(APINT_TYPE_PREFIX, 13937) +HANDLE_BAT(APINT_TYPE_PREFIX, 13938) +HANDLE_BAT(APINT_TYPE_PREFIX, 13939) +HANDLE_BAT(APINT_TYPE_PREFIX, 13940) +HANDLE_BAT(APINT_TYPE_PREFIX, 13941) +HANDLE_BAT(APINT_TYPE_PREFIX, 13942) +HANDLE_BAT(APINT_TYPE_PREFIX, 13943) +HANDLE_BAT(APINT_TYPE_PREFIX, 13944) +HANDLE_BAT(APINT_TYPE_PREFIX, 13945) +HANDLE_BAT(APINT_TYPE_PREFIX, 13946) +HANDLE_BAT(APINT_TYPE_PREFIX, 13947) +HANDLE_BAT(APINT_TYPE_PREFIX, 13948) +HANDLE_BAT(APINT_TYPE_PREFIX, 13949) +HANDLE_BAT(APINT_TYPE_PREFIX, 13950) +HANDLE_BAT(APINT_TYPE_PREFIX, 13951) +HANDLE_BAT(APINT_TYPE_PREFIX, 13952) +HANDLE_BAT(APINT_TYPE_PREFIX, 13953) +HANDLE_BAT(APINT_TYPE_PREFIX, 13954) +HANDLE_BAT(APINT_TYPE_PREFIX, 13955) +HANDLE_BAT(APINT_TYPE_PREFIX, 13956) +HANDLE_BAT(APINT_TYPE_PREFIX, 13957) +HANDLE_BAT(APINT_TYPE_PREFIX, 13958) +HANDLE_BAT(APINT_TYPE_PREFIX, 13959) +HANDLE_BAT(APINT_TYPE_PREFIX, 13960) +HANDLE_BAT(APINT_TYPE_PREFIX, 13961) +HANDLE_BAT(APINT_TYPE_PREFIX, 13962) +HANDLE_BAT(APINT_TYPE_PREFIX, 13963) +HANDLE_BAT(APINT_TYPE_PREFIX, 13964) +HANDLE_BAT(APINT_TYPE_PREFIX, 13965) +HANDLE_BAT(APINT_TYPE_PREFIX, 13966) +HANDLE_BAT(APINT_TYPE_PREFIX, 13967) +HANDLE_BAT(APINT_TYPE_PREFIX, 13968) +HANDLE_BAT(APINT_TYPE_PREFIX, 13969) +HANDLE_BAT(APINT_TYPE_PREFIX, 13970) +HANDLE_BAT(APINT_TYPE_PREFIX, 13971) +HANDLE_BAT(APINT_TYPE_PREFIX, 13972) +HANDLE_BAT(APINT_TYPE_PREFIX, 13973) +HANDLE_BAT(APINT_TYPE_PREFIX, 13974) +HANDLE_BAT(APINT_TYPE_PREFIX, 13975) +HANDLE_BAT(APINT_TYPE_PREFIX, 13976) +HANDLE_BAT(APINT_TYPE_PREFIX, 13977) +HANDLE_BAT(APINT_TYPE_PREFIX, 13978) +HANDLE_BAT(APINT_TYPE_PREFIX, 13979) +HANDLE_BAT(APINT_TYPE_PREFIX, 13980) +HANDLE_BAT(APINT_TYPE_PREFIX, 13981) +HANDLE_BAT(APINT_TYPE_PREFIX, 13982) +HANDLE_BAT(APINT_TYPE_PREFIX, 13983) +HANDLE_BAT(APINT_TYPE_PREFIX, 13984) +HANDLE_BAT(APINT_TYPE_PREFIX, 13985) +HANDLE_BAT(APINT_TYPE_PREFIX, 13986) +HANDLE_BAT(APINT_TYPE_PREFIX, 13987) +HANDLE_BAT(APINT_TYPE_PREFIX, 13988) +HANDLE_BAT(APINT_TYPE_PREFIX, 13989) +HANDLE_BAT(APINT_TYPE_PREFIX, 13990) +HANDLE_BAT(APINT_TYPE_PREFIX, 13991) +HANDLE_BAT(APINT_TYPE_PREFIX, 13992) +HANDLE_BAT(APINT_TYPE_PREFIX, 13993) +HANDLE_BAT(APINT_TYPE_PREFIX, 13994) +HANDLE_BAT(APINT_TYPE_PREFIX, 13995) +HANDLE_BAT(APINT_TYPE_PREFIX, 13996) +HANDLE_BAT(APINT_TYPE_PREFIX, 13997) +HANDLE_BAT(APINT_TYPE_PREFIX, 13998) +HANDLE_BAT(APINT_TYPE_PREFIX, 13999) +HANDLE_BAT(APINT_TYPE_PREFIX, 14000) +HANDLE_BAT(APINT_TYPE_PREFIX, 14001) +HANDLE_BAT(APINT_TYPE_PREFIX, 14002) +HANDLE_BAT(APINT_TYPE_PREFIX, 14003) +HANDLE_BAT(APINT_TYPE_PREFIX, 14004) +HANDLE_BAT(APINT_TYPE_PREFIX, 14005) +HANDLE_BAT(APINT_TYPE_PREFIX, 14006) +HANDLE_BAT(APINT_TYPE_PREFIX, 14007) +HANDLE_BAT(APINT_TYPE_PREFIX, 14008) +HANDLE_BAT(APINT_TYPE_PREFIX, 14009) +HANDLE_BAT(APINT_TYPE_PREFIX, 14010) +HANDLE_BAT(APINT_TYPE_PREFIX, 14011) +HANDLE_BAT(APINT_TYPE_PREFIX, 14012) +HANDLE_BAT(APINT_TYPE_PREFIX, 14013) +HANDLE_BAT(APINT_TYPE_PREFIX, 14014) +HANDLE_BAT(APINT_TYPE_PREFIX, 14015) +HANDLE_BAT(APINT_TYPE_PREFIX, 14016) +HANDLE_BAT(APINT_TYPE_PREFIX, 14017) +HANDLE_BAT(APINT_TYPE_PREFIX, 14018) +HANDLE_BAT(APINT_TYPE_PREFIX, 14019) +HANDLE_BAT(APINT_TYPE_PREFIX, 14020) +HANDLE_BAT(APINT_TYPE_PREFIX, 14021) +HANDLE_BAT(APINT_TYPE_PREFIX, 14022) +HANDLE_BAT(APINT_TYPE_PREFIX, 14023) +HANDLE_BAT(APINT_TYPE_PREFIX, 14024) +HANDLE_BAT(APINT_TYPE_PREFIX, 14025) +HANDLE_BAT(APINT_TYPE_PREFIX, 14026) +HANDLE_BAT(APINT_TYPE_PREFIX, 14027) +HANDLE_BAT(APINT_TYPE_PREFIX, 14028) +HANDLE_BAT(APINT_TYPE_PREFIX, 14029) +HANDLE_BAT(APINT_TYPE_PREFIX, 14030) +HANDLE_BAT(APINT_TYPE_PREFIX, 14031) +HANDLE_BAT(APINT_TYPE_PREFIX, 14032) +HANDLE_BAT(APINT_TYPE_PREFIX, 14033) +HANDLE_BAT(APINT_TYPE_PREFIX, 14034) +HANDLE_BAT(APINT_TYPE_PREFIX, 14035) +HANDLE_BAT(APINT_TYPE_PREFIX, 14036) +HANDLE_BAT(APINT_TYPE_PREFIX, 14037) +HANDLE_BAT(APINT_TYPE_PREFIX, 14038) +HANDLE_BAT(APINT_TYPE_PREFIX, 14039) +HANDLE_BAT(APINT_TYPE_PREFIX, 14040) +HANDLE_BAT(APINT_TYPE_PREFIX, 14041) +HANDLE_BAT(APINT_TYPE_PREFIX, 14042) +HANDLE_BAT(APINT_TYPE_PREFIX, 14043) +HANDLE_BAT(APINT_TYPE_PREFIX, 14044) +HANDLE_BAT(APINT_TYPE_PREFIX, 14045) +HANDLE_BAT(APINT_TYPE_PREFIX, 14046) +HANDLE_BAT(APINT_TYPE_PREFIX, 14047) +HANDLE_BAT(APINT_TYPE_PREFIX, 14048) +HANDLE_BAT(APINT_TYPE_PREFIX, 14049) +HANDLE_BAT(APINT_TYPE_PREFIX, 14050) +HANDLE_BAT(APINT_TYPE_PREFIX, 14051) +HANDLE_BAT(APINT_TYPE_PREFIX, 14052) +HANDLE_BAT(APINT_TYPE_PREFIX, 14053) +HANDLE_BAT(APINT_TYPE_PREFIX, 14054) +HANDLE_BAT(APINT_TYPE_PREFIX, 14055) +HANDLE_BAT(APINT_TYPE_PREFIX, 14056) +HANDLE_BAT(APINT_TYPE_PREFIX, 14057) +HANDLE_BAT(APINT_TYPE_PREFIX, 14058) +HANDLE_BAT(APINT_TYPE_PREFIX, 14059) +HANDLE_BAT(APINT_TYPE_PREFIX, 14060) +HANDLE_BAT(APINT_TYPE_PREFIX, 14061) +HANDLE_BAT(APINT_TYPE_PREFIX, 14062) +HANDLE_BAT(APINT_TYPE_PREFIX, 14063) +HANDLE_BAT(APINT_TYPE_PREFIX, 14064) +HANDLE_BAT(APINT_TYPE_PREFIX, 14065) +HANDLE_BAT(APINT_TYPE_PREFIX, 14066) +HANDLE_BAT(APINT_TYPE_PREFIX, 14067) +HANDLE_BAT(APINT_TYPE_PREFIX, 14068) +HANDLE_BAT(APINT_TYPE_PREFIX, 14069) +HANDLE_BAT(APINT_TYPE_PREFIX, 14070) +HANDLE_BAT(APINT_TYPE_PREFIX, 14071) +HANDLE_BAT(APINT_TYPE_PREFIX, 14072) +HANDLE_BAT(APINT_TYPE_PREFIX, 14073) +HANDLE_BAT(APINT_TYPE_PREFIX, 14074) +HANDLE_BAT(APINT_TYPE_PREFIX, 14075) +HANDLE_BAT(APINT_TYPE_PREFIX, 14076) +HANDLE_BAT(APINT_TYPE_PREFIX, 14077) +HANDLE_BAT(APINT_TYPE_PREFIX, 14078) +HANDLE_BAT(APINT_TYPE_PREFIX, 14079) +HANDLE_BAT(APINT_TYPE_PREFIX, 14080) +HANDLE_BAT(APINT_TYPE_PREFIX, 14081) +HANDLE_BAT(APINT_TYPE_PREFIX, 14082) +HANDLE_BAT(APINT_TYPE_PREFIX, 14083) +HANDLE_BAT(APINT_TYPE_PREFIX, 14084) +HANDLE_BAT(APINT_TYPE_PREFIX, 14085) +HANDLE_BAT(APINT_TYPE_PREFIX, 14086) +HANDLE_BAT(APINT_TYPE_PREFIX, 14087) +HANDLE_BAT(APINT_TYPE_PREFIX, 14088) +HANDLE_BAT(APINT_TYPE_PREFIX, 14089) +HANDLE_BAT(APINT_TYPE_PREFIX, 14090) +HANDLE_BAT(APINT_TYPE_PREFIX, 14091) +HANDLE_BAT(APINT_TYPE_PREFIX, 14092) +HANDLE_BAT(APINT_TYPE_PREFIX, 14093) +HANDLE_BAT(APINT_TYPE_PREFIX, 14094) +HANDLE_BAT(APINT_TYPE_PREFIX, 14095) +HANDLE_BAT(APINT_TYPE_PREFIX, 14096) +HANDLE_BAT(APINT_TYPE_PREFIX, 14097) +HANDLE_BAT(APINT_TYPE_PREFIX, 14098) +HANDLE_BAT(APINT_TYPE_PREFIX, 14099) +HANDLE_BAT(APINT_TYPE_PREFIX, 14100) +HANDLE_BAT(APINT_TYPE_PREFIX, 14101) +HANDLE_BAT(APINT_TYPE_PREFIX, 14102) +HANDLE_BAT(APINT_TYPE_PREFIX, 14103) +HANDLE_BAT(APINT_TYPE_PREFIX, 14104) +HANDLE_BAT(APINT_TYPE_PREFIX, 14105) +HANDLE_BAT(APINT_TYPE_PREFIX, 14106) +HANDLE_BAT(APINT_TYPE_PREFIX, 14107) +HANDLE_BAT(APINT_TYPE_PREFIX, 14108) +HANDLE_BAT(APINT_TYPE_PREFIX, 14109) +HANDLE_BAT(APINT_TYPE_PREFIX, 14110) +HANDLE_BAT(APINT_TYPE_PREFIX, 14111) +HANDLE_BAT(APINT_TYPE_PREFIX, 14112) +HANDLE_BAT(APINT_TYPE_PREFIX, 14113) +HANDLE_BAT(APINT_TYPE_PREFIX, 14114) +HANDLE_BAT(APINT_TYPE_PREFIX, 14115) +HANDLE_BAT(APINT_TYPE_PREFIX, 14116) +HANDLE_BAT(APINT_TYPE_PREFIX, 14117) +HANDLE_BAT(APINT_TYPE_PREFIX, 14118) +HANDLE_BAT(APINT_TYPE_PREFIX, 14119) +HANDLE_BAT(APINT_TYPE_PREFIX, 14120) +HANDLE_BAT(APINT_TYPE_PREFIX, 14121) +HANDLE_BAT(APINT_TYPE_PREFIX, 14122) +HANDLE_BAT(APINT_TYPE_PREFIX, 14123) +HANDLE_BAT(APINT_TYPE_PREFIX, 14124) +HANDLE_BAT(APINT_TYPE_PREFIX, 14125) +HANDLE_BAT(APINT_TYPE_PREFIX, 14126) +HANDLE_BAT(APINT_TYPE_PREFIX, 14127) +HANDLE_BAT(APINT_TYPE_PREFIX, 14128) +HANDLE_BAT(APINT_TYPE_PREFIX, 14129) +HANDLE_BAT(APINT_TYPE_PREFIX, 14130) +HANDLE_BAT(APINT_TYPE_PREFIX, 14131) +HANDLE_BAT(APINT_TYPE_PREFIX, 14132) +HANDLE_BAT(APINT_TYPE_PREFIX, 14133) +HANDLE_BAT(APINT_TYPE_PREFIX, 14134) +HANDLE_BAT(APINT_TYPE_PREFIX, 14135) +HANDLE_BAT(APINT_TYPE_PREFIX, 14136) +HANDLE_BAT(APINT_TYPE_PREFIX, 14137) +HANDLE_BAT(APINT_TYPE_PREFIX, 14138) +HANDLE_BAT(APINT_TYPE_PREFIX, 14139) +HANDLE_BAT(APINT_TYPE_PREFIX, 14140) +HANDLE_BAT(APINT_TYPE_PREFIX, 14141) +HANDLE_BAT(APINT_TYPE_PREFIX, 14142) +HANDLE_BAT(APINT_TYPE_PREFIX, 14143) +HANDLE_BAT(APINT_TYPE_PREFIX, 14144) +HANDLE_BAT(APINT_TYPE_PREFIX, 14145) +HANDLE_BAT(APINT_TYPE_PREFIX, 14146) +HANDLE_BAT(APINT_TYPE_PREFIX, 14147) +HANDLE_BAT(APINT_TYPE_PREFIX, 14148) +HANDLE_BAT(APINT_TYPE_PREFIX, 14149) +HANDLE_BAT(APINT_TYPE_PREFIX, 14150) +HANDLE_BAT(APINT_TYPE_PREFIX, 14151) +HANDLE_BAT(APINT_TYPE_PREFIX, 14152) +HANDLE_BAT(APINT_TYPE_PREFIX, 14153) +HANDLE_BAT(APINT_TYPE_PREFIX, 14154) +HANDLE_BAT(APINT_TYPE_PREFIX, 14155) +HANDLE_BAT(APINT_TYPE_PREFIX, 14156) +HANDLE_BAT(APINT_TYPE_PREFIX, 14157) +HANDLE_BAT(APINT_TYPE_PREFIX, 14158) +HANDLE_BAT(APINT_TYPE_PREFIX, 14159) +HANDLE_BAT(APINT_TYPE_PREFIX, 14160) +HANDLE_BAT(APINT_TYPE_PREFIX, 14161) +HANDLE_BAT(APINT_TYPE_PREFIX, 14162) +HANDLE_BAT(APINT_TYPE_PREFIX, 14163) +HANDLE_BAT(APINT_TYPE_PREFIX, 14164) +HANDLE_BAT(APINT_TYPE_PREFIX, 14165) +HANDLE_BAT(APINT_TYPE_PREFIX, 14166) +HANDLE_BAT(APINT_TYPE_PREFIX, 14167) +HANDLE_BAT(APINT_TYPE_PREFIX, 14168) +HANDLE_BAT(APINT_TYPE_PREFIX, 14169) +HANDLE_BAT(APINT_TYPE_PREFIX, 14170) +HANDLE_BAT(APINT_TYPE_PREFIX, 14171) +HANDLE_BAT(APINT_TYPE_PREFIX, 14172) +HANDLE_BAT(APINT_TYPE_PREFIX, 14173) +HANDLE_BAT(APINT_TYPE_PREFIX, 14174) +HANDLE_BAT(APINT_TYPE_PREFIX, 14175) +HANDLE_BAT(APINT_TYPE_PREFIX, 14176) +HANDLE_BAT(APINT_TYPE_PREFIX, 14177) +HANDLE_BAT(APINT_TYPE_PREFIX, 14178) +HANDLE_BAT(APINT_TYPE_PREFIX, 14179) +HANDLE_BAT(APINT_TYPE_PREFIX, 14180) +HANDLE_BAT(APINT_TYPE_PREFIX, 14181) +HANDLE_BAT(APINT_TYPE_PREFIX, 14182) +HANDLE_BAT(APINT_TYPE_PREFIX, 14183) +HANDLE_BAT(APINT_TYPE_PREFIX, 14184) +HANDLE_BAT(APINT_TYPE_PREFIX, 14185) +HANDLE_BAT(APINT_TYPE_PREFIX, 14186) +HANDLE_BAT(APINT_TYPE_PREFIX, 14187) +HANDLE_BAT(APINT_TYPE_PREFIX, 14188) +HANDLE_BAT(APINT_TYPE_PREFIX, 14189) +HANDLE_BAT(APINT_TYPE_PREFIX, 14190) +HANDLE_BAT(APINT_TYPE_PREFIX, 14191) +HANDLE_BAT(APINT_TYPE_PREFIX, 14192) +HANDLE_BAT(APINT_TYPE_PREFIX, 14193) +HANDLE_BAT(APINT_TYPE_PREFIX, 14194) +HANDLE_BAT(APINT_TYPE_PREFIX, 14195) +HANDLE_BAT(APINT_TYPE_PREFIX, 14196) +HANDLE_BAT(APINT_TYPE_PREFIX, 14197) +HANDLE_BAT(APINT_TYPE_PREFIX, 14198) +HANDLE_BAT(APINT_TYPE_PREFIX, 14199) +HANDLE_BAT(APINT_TYPE_PREFIX, 14200) +HANDLE_BAT(APINT_TYPE_PREFIX, 14201) +HANDLE_BAT(APINT_TYPE_PREFIX, 14202) +HANDLE_BAT(APINT_TYPE_PREFIX, 14203) +HANDLE_BAT(APINT_TYPE_PREFIX, 14204) +HANDLE_BAT(APINT_TYPE_PREFIX, 14205) +HANDLE_BAT(APINT_TYPE_PREFIX, 14206) +HANDLE_BAT(APINT_TYPE_PREFIX, 14207) +HANDLE_BAT(APINT_TYPE_PREFIX, 14208) +HANDLE_BAT(APINT_TYPE_PREFIX, 14209) +HANDLE_BAT(APINT_TYPE_PREFIX, 14210) +HANDLE_BAT(APINT_TYPE_PREFIX, 14211) +HANDLE_BAT(APINT_TYPE_PREFIX, 14212) +HANDLE_BAT(APINT_TYPE_PREFIX, 14213) +HANDLE_BAT(APINT_TYPE_PREFIX, 14214) +HANDLE_BAT(APINT_TYPE_PREFIX, 14215) +HANDLE_BAT(APINT_TYPE_PREFIX, 14216) +HANDLE_BAT(APINT_TYPE_PREFIX, 14217) +HANDLE_BAT(APINT_TYPE_PREFIX, 14218) +HANDLE_BAT(APINT_TYPE_PREFIX, 14219) +HANDLE_BAT(APINT_TYPE_PREFIX, 14220) +HANDLE_BAT(APINT_TYPE_PREFIX, 14221) +HANDLE_BAT(APINT_TYPE_PREFIX, 14222) +HANDLE_BAT(APINT_TYPE_PREFIX, 14223) +HANDLE_BAT(APINT_TYPE_PREFIX, 14224) +HANDLE_BAT(APINT_TYPE_PREFIX, 14225) +HANDLE_BAT(APINT_TYPE_PREFIX, 14226) +HANDLE_BAT(APINT_TYPE_PREFIX, 14227) +HANDLE_BAT(APINT_TYPE_PREFIX, 14228) +HANDLE_BAT(APINT_TYPE_PREFIX, 14229) +HANDLE_BAT(APINT_TYPE_PREFIX, 14230) +HANDLE_BAT(APINT_TYPE_PREFIX, 14231) +HANDLE_BAT(APINT_TYPE_PREFIX, 14232) +HANDLE_BAT(APINT_TYPE_PREFIX, 14233) +HANDLE_BAT(APINT_TYPE_PREFIX, 14234) +HANDLE_BAT(APINT_TYPE_PREFIX, 14235) +HANDLE_BAT(APINT_TYPE_PREFIX, 14236) +HANDLE_BAT(APINT_TYPE_PREFIX, 14237) +HANDLE_BAT(APINT_TYPE_PREFIX, 14238) +HANDLE_BAT(APINT_TYPE_PREFIX, 14239) +HANDLE_BAT(APINT_TYPE_PREFIX, 14240) +HANDLE_BAT(APINT_TYPE_PREFIX, 14241) +HANDLE_BAT(APINT_TYPE_PREFIX, 14242) +HANDLE_BAT(APINT_TYPE_PREFIX, 14243) +HANDLE_BAT(APINT_TYPE_PREFIX, 14244) +HANDLE_BAT(APINT_TYPE_PREFIX, 14245) +HANDLE_BAT(APINT_TYPE_PREFIX, 14246) +HANDLE_BAT(APINT_TYPE_PREFIX, 14247) +HANDLE_BAT(APINT_TYPE_PREFIX, 14248) +HANDLE_BAT(APINT_TYPE_PREFIX, 14249) +HANDLE_BAT(APINT_TYPE_PREFIX, 14250) +HANDLE_BAT(APINT_TYPE_PREFIX, 14251) +HANDLE_BAT(APINT_TYPE_PREFIX, 14252) +HANDLE_BAT(APINT_TYPE_PREFIX, 14253) +HANDLE_BAT(APINT_TYPE_PREFIX, 14254) +HANDLE_BAT(APINT_TYPE_PREFIX, 14255) +HANDLE_BAT(APINT_TYPE_PREFIX, 14256) +HANDLE_BAT(APINT_TYPE_PREFIX, 14257) +HANDLE_BAT(APINT_TYPE_PREFIX, 14258) +HANDLE_BAT(APINT_TYPE_PREFIX, 14259) +HANDLE_BAT(APINT_TYPE_PREFIX, 14260) +HANDLE_BAT(APINT_TYPE_PREFIX, 14261) +HANDLE_BAT(APINT_TYPE_PREFIX, 14262) +HANDLE_BAT(APINT_TYPE_PREFIX, 14263) +HANDLE_BAT(APINT_TYPE_PREFIX, 14264) +HANDLE_BAT(APINT_TYPE_PREFIX, 14265) +HANDLE_BAT(APINT_TYPE_PREFIX, 14266) +HANDLE_BAT(APINT_TYPE_PREFIX, 14267) +HANDLE_BAT(APINT_TYPE_PREFIX, 14268) +HANDLE_BAT(APINT_TYPE_PREFIX, 14269) +HANDLE_BAT(APINT_TYPE_PREFIX, 14270) +HANDLE_BAT(APINT_TYPE_PREFIX, 14271) +HANDLE_BAT(APINT_TYPE_PREFIX, 14272) +HANDLE_BAT(APINT_TYPE_PREFIX, 14273) +HANDLE_BAT(APINT_TYPE_PREFIX, 14274) +HANDLE_BAT(APINT_TYPE_PREFIX, 14275) +HANDLE_BAT(APINT_TYPE_PREFIX, 14276) +HANDLE_BAT(APINT_TYPE_PREFIX, 14277) +HANDLE_BAT(APINT_TYPE_PREFIX, 14278) +HANDLE_BAT(APINT_TYPE_PREFIX, 14279) +HANDLE_BAT(APINT_TYPE_PREFIX, 14280) +HANDLE_BAT(APINT_TYPE_PREFIX, 14281) +HANDLE_BAT(APINT_TYPE_PREFIX, 14282) +HANDLE_BAT(APINT_TYPE_PREFIX, 14283) +HANDLE_BAT(APINT_TYPE_PREFIX, 14284) +HANDLE_BAT(APINT_TYPE_PREFIX, 14285) +HANDLE_BAT(APINT_TYPE_PREFIX, 14286) +HANDLE_BAT(APINT_TYPE_PREFIX, 14287) +HANDLE_BAT(APINT_TYPE_PREFIX, 14288) +HANDLE_BAT(APINT_TYPE_PREFIX, 14289) +HANDLE_BAT(APINT_TYPE_PREFIX, 14290) +HANDLE_BAT(APINT_TYPE_PREFIX, 14291) +HANDLE_BAT(APINT_TYPE_PREFIX, 14292) +HANDLE_BAT(APINT_TYPE_PREFIX, 14293) +HANDLE_BAT(APINT_TYPE_PREFIX, 14294) +HANDLE_BAT(APINT_TYPE_PREFIX, 14295) +HANDLE_BAT(APINT_TYPE_PREFIX, 14296) +HANDLE_BAT(APINT_TYPE_PREFIX, 14297) +HANDLE_BAT(APINT_TYPE_PREFIX, 14298) +HANDLE_BAT(APINT_TYPE_PREFIX, 14299) +HANDLE_BAT(APINT_TYPE_PREFIX, 14300) +HANDLE_BAT(APINT_TYPE_PREFIX, 14301) +HANDLE_BAT(APINT_TYPE_PREFIX, 14302) +HANDLE_BAT(APINT_TYPE_PREFIX, 14303) +HANDLE_BAT(APINT_TYPE_PREFIX, 14304) +HANDLE_BAT(APINT_TYPE_PREFIX, 14305) +HANDLE_BAT(APINT_TYPE_PREFIX, 14306) +HANDLE_BAT(APINT_TYPE_PREFIX, 14307) +HANDLE_BAT(APINT_TYPE_PREFIX, 14308) +HANDLE_BAT(APINT_TYPE_PREFIX, 14309) +HANDLE_BAT(APINT_TYPE_PREFIX, 14310) +HANDLE_BAT(APINT_TYPE_PREFIX, 14311) +HANDLE_BAT(APINT_TYPE_PREFIX, 14312) +HANDLE_BAT(APINT_TYPE_PREFIX, 14313) +HANDLE_BAT(APINT_TYPE_PREFIX, 14314) +HANDLE_BAT(APINT_TYPE_PREFIX, 14315) +HANDLE_BAT(APINT_TYPE_PREFIX, 14316) +HANDLE_BAT(APINT_TYPE_PREFIX, 14317) +HANDLE_BAT(APINT_TYPE_PREFIX, 14318) +HANDLE_BAT(APINT_TYPE_PREFIX, 14319) +HANDLE_BAT(APINT_TYPE_PREFIX, 14320) +HANDLE_BAT(APINT_TYPE_PREFIX, 14321) +HANDLE_BAT(APINT_TYPE_PREFIX, 14322) +HANDLE_BAT(APINT_TYPE_PREFIX, 14323) +HANDLE_BAT(APINT_TYPE_PREFIX, 14324) +HANDLE_BAT(APINT_TYPE_PREFIX, 14325) +HANDLE_BAT(APINT_TYPE_PREFIX, 14326) +HANDLE_BAT(APINT_TYPE_PREFIX, 14327) +HANDLE_BAT(APINT_TYPE_PREFIX, 14328) +HANDLE_BAT(APINT_TYPE_PREFIX, 14329) +HANDLE_BAT(APINT_TYPE_PREFIX, 14330) +HANDLE_BAT(APINT_TYPE_PREFIX, 14331) +HANDLE_BAT(APINT_TYPE_PREFIX, 14332) +HANDLE_BAT(APINT_TYPE_PREFIX, 14333) +HANDLE_BAT(APINT_TYPE_PREFIX, 14334) +HANDLE_BAT(APINT_TYPE_PREFIX, 14335) +HANDLE_BAT(APINT_TYPE_PREFIX, 14336) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 14 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 14337) +HANDLE_BAT(, 14338) +HANDLE_BAT(, 14339) +HANDLE_BAT(, 14340) +HANDLE_BAT(, 14341) +HANDLE_BAT(, 14342) +HANDLE_BAT(, 14343) +HANDLE_BAT(, 14344) +HANDLE_BAT(, 14345) +HANDLE_BAT(, 14346) +HANDLE_BAT(, 14347) +HANDLE_BAT(, 14348) +HANDLE_BAT(, 14349) +HANDLE_BAT(, 14350) +HANDLE_BAT(, 14351) +HANDLE_BAT(, 14352) +HANDLE_BAT(, 14353) +HANDLE_BAT(, 14354) +HANDLE_BAT(, 14355) +HANDLE_BAT(, 14356) +HANDLE_BAT(, 14357) +HANDLE_BAT(, 14358) +HANDLE_BAT(, 14359) +HANDLE_BAT(, 14360) +HANDLE_BAT(, 14361) +HANDLE_BAT(, 14362) +HANDLE_BAT(, 14363) +HANDLE_BAT(, 14364) +HANDLE_BAT(, 14365) +HANDLE_BAT(, 14366) +HANDLE_BAT(, 14367) +HANDLE_BAT(, 14368) +HANDLE_BAT(, 14369) +HANDLE_BAT(, 14370) +HANDLE_BAT(, 14371) +HANDLE_BAT(, 14372) +HANDLE_BAT(, 14373) +HANDLE_BAT(, 14374) +HANDLE_BAT(, 14375) +HANDLE_BAT(, 14376) +HANDLE_BAT(, 14377) +HANDLE_BAT(, 14378) +HANDLE_BAT(, 14379) +HANDLE_BAT(, 14380) +HANDLE_BAT(, 14381) +HANDLE_BAT(, 14382) +HANDLE_BAT(, 14383) +HANDLE_BAT(, 14384) +HANDLE_BAT(, 14385) +HANDLE_BAT(, 14386) +HANDLE_BAT(, 14387) +HANDLE_BAT(, 14388) +HANDLE_BAT(, 14389) +HANDLE_BAT(, 14390) +HANDLE_BAT(, 14391) +HANDLE_BAT(, 14392) +HANDLE_BAT(, 14393) +HANDLE_BAT(, 14394) +HANDLE_BAT(, 14395) +HANDLE_BAT(, 14396) +HANDLE_BAT(, 14397) +HANDLE_BAT(, 14398) +HANDLE_BAT(, 14399) +HANDLE_BAT(, 14400) +HANDLE_BAT(, 14401) +HANDLE_BAT(, 14402) +HANDLE_BAT(, 14403) +HANDLE_BAT(, 14404) +HANDLE_BAT(, 14405) +HANDLE_BAT(, 14406) +HANDLE_BAT(, 14407) +HANDLE_BAT(, 14408) +HANDLE_BAT(, 14409) +HANDLE_BAT(, 14410) +HANDLE_BAT(, 14411) +HANDLE_BAT(, 14412) +HANDLE_BAT(, 14413) +HANDLE_BAT(, 14414) +HANDLE_BAT(, 14415) +HANDLE_BAT(, 14416) +HANDLE_BAT(, 14417) +HANDLE_BAT(, 14418) +HANDLE_BAT(, 14419) +HANDLE_BAT(, 14420) +HANDLE_BAT(, 14421) +HANDLE_BAT(, 14422) +HANDLE_BAT(, 14423) +HANDLE_BAT(, 14424) +HANDLE_BAT(, 14425) +HANDLE_BAT(, 14426) +HANDLE_BAT(, 14427) +HANDLE_BAT(, 14428) +HANDLE_BAT(, 14429) +HANDLE_BAT(, 14430) +HANDLE_BAT(, 14431) +HANDLE_BAT(, 14432) +HANDLE_BAT(, 14433) +HANDLE_BAT(, 14434) +HANDLE_BAT(, 14435) +HANDLE_BAT(, 14436) +HANDLE_BAT(, 14437) +HANDLE_BAT(, 14438) +HANDLE_BAT(, 14439) +HANDLE_BAT(, 14440) +HANDLE_BAT(, 14441) +HANDLE_BAT(, 14442) +HANDLE_BAT(, 14443) +HANDLE_BAT(, 14444) +HANDLE_BAT(, 14445) +HANDLE_BAT(, 14446) +HANDLE_BAT(, 14447) +HANDLE_BAT(, 14448) +HANDLE_BAT(, 14449) +HANDLE_BAT(, 14450) +HANDLE_BAT(, 14451) +HANDLE_BAT(, 14452) +HANDLE_BAT(, 14453) +HANDLE_BAT(, 14454) +HANDLE_BAT(, 14455) +HANDLE_BAT(, 14456) +HANDLE_BAT(, 14457) +HANDLE_BAT(, 14458) +HANDLE_BAT(, 14459) +HANDLE_BAT(, 14460) +HANDLE_BAT(, 14461) +HANDLE_BAT(, 14462) +HANDLE_BAT(, 14463) +HANDLE_BAT(, 14464) +HANDLE_BAT(, 14465) +HANDLE_BAT(, 14466) +HANDLE_BAT(, 14467) +HANDLE_BAT(, 14468) +HANDLE_BAT(, 14469) +HANDLE_BAT(, 14470) +HANDLE_BAT(, 14471) +HANDLE_BAT(, 14472) +HANDLE_BAT(, 14473) +HANDLE_BAT(, 14474) +HANDLE_BAT(, 14475) +HANDLE_BAT(, 14476) +HANDLE_BAT(, 14477) +HANDLE_BAT(, 14478) +HANDLE_BAT(, 14479) +HANDLE_BAT(, 14480) +HANDLE_BAT(, 14481) +HANDLE_BAT(, 14482) +HANDLE_BAT(, 14483) +HANDLE_BAT(, 14484) +HANDLE_BAT(, 14485) +HANDLE_BAT(, 14486) +HANDLE_BAT(, 14487) +HANDLE_BAT(, 14488) +HANDLE_BAT(, 14489) +HANDLE_BAT(, 14490) +HANDLE_BAT(, 14491) +HANDLE_BAT(, 14492) +HANDLE_BAT(, 14493) +HANDLE_BAT(, 14494) +HANDLE_BAT(, 14495) +HANDLE_BAT(, 14496) +HANDLE_BAT(, 14497) +HANDLE_BAT(, 14498) +HANDLE_BAT(, 14499) +HANDLE_BAT(, 14500) +HANDLE_BAT(, 14501) +HANDLE_BAT(, 14502) +HANDLE_BAT(, 14503) +HANDLE_BAT(, 14504) +HANDLE_BAT(, 14505) +HANDLE_BAT(, 14506) +HANDLE_BAT(, 14507) +HANDLE_BAT(, 14508) +HANDLE_BAT(, 14509) +HANDLE_BAT(, 14510) +HANDLE_BAT(, 14511) +HANDLE_BAT(, 14512) +HANDLE_BAT(, 14513) +HANDLE_BAT(, 14514) +HANDLE_BAT(, 14515) +HANDLE_BAT(, 14516) +HANDLE_BAT(, 14517) +HANDLE_BAT(, 14518) +HANDLE_BAT(, 14519) +HANDLE_BAT(, 14520) +HANDLE_BAT(, 14521) +HANDLE_BAT(, 14522) +HANDLE_BAT(, 14523) +HANDLE_BAT(, 14524) +HANDLE_BAT(, 14525) +HANDLE_BAT(, 14526) +HANDLE_BAT(, 14527) +HANDLE_BAT(, 14528) +HANDLE_BAT(, 14529) +HANDLE_BAT(, 14530) +HANDLE_BAT(, 14531) +HANDLE_BAT(, 14532) +HANDLE_BAT(, 14533) +HANDLE_BAT(, 14534) +HANDLE_BAT(, 14535) +HANDLE_BAT(, 14536) +HANDLE_BAT(, 14537) +HANDLE_BAT(, 14538) +HANDLE_BAT(, 14539) +HANDLE_BAT(, 14540) +HANDLE_BAT(, 14541) +HANDLE_BAT(, 14542) +HANDLE_BAT(, 14543) +HANDLE_BAT(, 14544) +HANDLE_BAT(, 14545) +HANDLE_BAT(, 14546) +HANDLE_BAT(, 14547) +HANDLE_BAT(, 14548) +HANDLE_BAT(, 14549) +HANDLE_BAT(, 14550) +HANDLE_BAT(, 14551) +HANDLE_BAT(, 14552) +HANDLE_BAT(, 14553) +HANDLE_BAT(, 14554) +HANDLE_BAT(, 14555) +HANDLE_BAT(, 14556) +HANDLE_BAT(, 14557) +HANDLE_BAT(, 14558) +HANDLE_BAT(, 14559) +HANDLE_BAT(, 14560) +HANDLE_BAT(, 14561) +HANDLE_BAT(, 14562) +HANDLE_BAT(, 14563) +HANDLE_BAT(, 14564) +HANDLE_BAT(, 14565) +HANDLE_BAT(, 14566) +HANDLE_BAT(, 14567) +HANDLE_BAT(, 14568) +HANDLE_BAT(, 14569) +HANDLE_BAT(, 14570) +HANDLE_BAT(, 14571) +HANDLE_BAT(, 14572) +HANDLE_BAT(, 14573) +HANDLE_BAT(, 14574) +HANDLE_BAT(, 14575) +HANDLE_BAT(, 14576) +HANDLE_BAT(, 14577) +HANDLE_BAT(, 14578) +HANDLE_BAT(, 14579) +HANDLE_BAT(, 14580) +HANDLE_BAT(, 14581) +HANDLE_BAT(, 14582) +HANDLE_BAT(, 14583) +HANDLE_BAT(, 14584) +HANDLE_BAT(, 14585) +HANDLE_BAT(, 14586) +HANDLE_BAT(, 14587) +HANDLE_BAT(, 14588) +HANDLE_BAT(, 14589) +HANDLE_BAT(, 14590) +HANDLE_BAT(, 14591) +HANDLE_BAT(, 14592) +HANDLE_BAT(, 14593) +HANDLE_BAT(, 14594) +HANDLE_BAT(, 14595) +HANDLE_BAT(, 14596) +HANDLE_BAT(, 14597) +HANDLE_BAT(, 14598) +HANDLE_BAT(, 14599) +HANDLE_BAT(, 14600) +HANDLE_BAT(, 14601) +HANDLE_BAT(, 14602) +HANDLE_BAT(, 14603) +HANDLE_BAT(, 14604) +HANDLE_BAT(, 14605) +HANDLE_BAT(, 14606) +HANDLE_BAT(, 14607) +HANDLE_BAT(, 14608) +HANDLE_BAT(, 14609) +HANDLE_BAT(, 14610) +HANDLE_BAT(, 14611) +HANDLE_BAT(, 14612) +HANDLE_BAT(, 14613) +HANDLE_BAT(, 14614) +HANDLE_BAT(, 14615) +HANDLE_BAT(, 14616) +HANDLE_BAT(, 14617) +HANDLE_BAT(, 14618) +HANDLE_BAT(, 14619) +HANDLE_BAT(, 14620) +HANDLE_BAT(, 14621) +HANDLE_BAT(, 14622) +HANDLE_BAT(, 14623) +HANDLE_BAT(, 14624) +HANDLE_BAT(, 14625) +HANDLE_BAT(, 14626) +HANDLE_BAT(, 14627) +HANDLE_BAT(, 14628) +HANDLE_BAT(, 14629) +HANDLE_BAT(, 14630) +HANDLE_BAT(, 14631) +HANDLE_BAT(, 14632) +HANDLE_BAT(, 14633) +HANDLE_BAT(, 14634) +HANDLE_BAT(, 14635) +HANDLE_BAT(, 14636) +HANDLE_BAT(, 14637) +HANDLE_BAT(, 14638) +HANDLE_BAT(, 14639) +HANDLE_BAT(, 14640) +HANDLE_BAT(, 14641) +HANDLE_BAT(, 14642) +HANDLE_BAT(, 14643) +HANDLE_BAT(, 14644) +HANDLE_BAT(, 14645) +HANDLE_BAT(, 14646) +HANDLE_BAT(, 14647) +HANDLE_BAT(, 14648) +HANDLE_BAT(, 14649) +HANDLE_BAT(, 14650) +HANDLE_BAT(, 14651) +HANDLE_BAT(, 14652) +HANDLE_BAT(, 14653) +HANDLE_BAT(, 14654) +HANDLE_BAT(, 14655) +HANDLE_BAT(, 14656) +HANDLE_BAT(, 14657) +HANDLE_BAT(, 14658) +HANDLE_BAT(, 14659) +HANDLE_BAT(, 14660) +HANDLE_BAT(, 14661) +HANDLE_BAT(, 14662) +HANDLE_BAT(, 14663) +HANDLE_BAT(, 14664) +HANDLE_BAT(, 14665) +HANDLE_BAT(, 14666) +HANDLE_BAT(, 14667) +HANDLE_BAT(, 14668) +HANDLE_BAT(, 14669) +HANDLE_BAT(, 14670) +HANDLE_BAT(, 14671) +HANDLE_BAT(, 14672) +HANDLE_BAT(, 14673) +HANDLE_BAT(, 14674) +HANDLE_BAT(, 14675) +HANDLE_BAT(, 14676) +HANDLE_BAT(, 14677) +HANDLE_BAT(, 14678) +HANDLE_BAT(, 14679) +HANDLE_BAT(, 14680) +HANDLE_BAT(, 14681) +HANDLE_BAT(, 14682) +HANDLE_BAT(, 14683) +HANDLE_BAT(, 14684) +HANDLE_BAT(, 14685) +HANDLE_BAT(, 14686) +HANDLE_BAT(, 14687) +HANDLE_BAT(, 14688) +HANDLE_BAT(, 14689) +HANDLE_BAT(, 14690) +HANDLE_BAT(, 14691) +HANDLE_BAT(, 14692) +HANDLE_BAT(, 14693) +HANDLE_BAT(, 14694) +HANDLE_BAT(, 14695) +HANDLE_BAT(, 14696) +HANDLE_BAT(, 14697) +HANDLE_BAT(, 14698) +HANDLE_BAT(, 14699) +HANDLE_BAT(, 14700) +HANDLE_BAT(, 14701) +HANDLE_BAT(, 14702) +HANDLE_BAT(, 14703) +HANDLE_BAT(, 14704) +HANDLE_BAT(, 14705) +HANDLE_BAT(, 14706) +HANDLE_BAT(, 14707) +HANDLE_BAT(, 14708) +HANDLE_BAT(, 14709) +HANDLE_BAT(, 14710) +HANDLE_BAT(, 14711) +HANDLE_BAT(, 14712) +HANDLE_BAT(, 14713) +HANDLE_BAT(, 14714) +HANDLE_BAT(, 14715) +HANDLE_BAT(, 14716) +HANDLE_BAT(, 14717) +HANDLE_BAT(, 14718) +HANDLE_BAT(, 14719) +HANDLE_BAT(, 14720) +HANDLE_BAT(, 14721) +HANDLE_BAT(, 14722) +HANDLE_BAT(, 14723) +HANDLE_BAT(, 14724) +HANDLE_BAT(, 14725) +HANDLE_BAT(, 14726) +HANDLE_BAT(, 14727) +HANDLE_BAT(, 14728) +HANDLE_BAT(, 14729) +HANDLE_BAT(, 14730) +HANDLE_BAT(, 14731) +HANDLE_BAT(, 14732) +HANDLE_BAT(, 14733) +HANDLE_BAT(, 14734) +HANDLE_BAT(, 14735) +HANDLE_BAT(, 14736) +HANDLE_BAT(, 14737) +HANDLE_BAT(, 14738) +HANDLE_BAT(, 14739) +HANDLE_BAT(, 14740) +HANDLE_BAT(, 14741) +HANDLE_BAT(, 14742) +HANDLE_BAT(, 14743) +HANDLE_BAT(, 14744) +HANDLE_BAT(, 14745) +HANDLE_BAT(, 14746) +HANDLE_BAT(, 14747) +HANDLE_BAT(, 14748) +HANDLE_BAT(, 14749) +HANDLE_BAT(, 14750) +HANDLE_BAT(, 14751) +HANDLE_BAT(, 14752) +HANDLE_BAT(, 14753) +HANDLE_BAT(, 14754) +HANDLE_BAT(, 14755) +HANDLE_BAT(, 14756) +HANDLE_BAT(, 14757) +HANDLE_BAT(, 14758) +HANDLE_BAT(, 14759) +HANDLE_BAT(, 14760) +HANDLE_BAT(, 14761) +HANDLE_BAT(, 14762) +HANDLE_BAT(, 14763) +HANDLE_BAT(, 14764) +HANDLE_BAT(, 14765) +HANDLE_BAT(, 14766) +HANDLE_BAT(, 14767) +HANDLE_BAT(, 14768) +HANDLE_BAT(, 14769) +HANDLE_BAT(, 14770) +HANDLE_BAT(, 14771) +HANDLE_BAT(, 14772) +HANDLE_BAT(, 14773) +HANDLE_BAT(, 14774) +HANDLE_BAT(, 14775) +HANDLE_BAT(, 14776) +HANDLE_BAT(, 14777) +HANDLE_BAT(, 14778) +HANDLE_BAT(, 14779) +HANDLE_BAT(, 14780) +HANDLE_BAT(, 14781) +HANDLE_BAT(, 14782) +HANDLE_BAT(, 14783) +HANDLE_BAT(, 14784) +HANDLE_BAT(, 14785) +HANDLE_BAT(, 14786) +HANDLE_BAT(, 14787) +HANDLE_BAT(, 14788) +HANDLE_BAT(, 14789) +HANDLE_BAT(, 14790) +HANDLE_BAT(, 14791) +HANDLE_BAT(, 14792) +HANDLE_BAT(, 14793) +HANDLE_BAT(, 14794) +HANDLE_BAT(, 14795) +HANDLE_BAT(, 14796) +HANDLE_BAT(, 14797) +HANDLE_BAT(, 14798) +HANDLE_BAT(, 14799) +HANDLE_BAT(, 14800) +HANDLE_BAT(, 14801) +HANDLE_BAT(, 14802) +HANDLE_BAT(, 14803) +HANDLE_BAT(, 14804) +HANDLE_BAT(, 14805) +HANDLE_BAT(, 14806) +HANDLE_BAT(, 14807) +HANDLE_BAT(, 14808) +HANDLE_BAT(, 14809) +HANDLE_BAT(, 14810) +HANDLE_BAT(, 14811) +HANDLE_BAT(, 14812) +HANDLE_BAT(, 14813) +HANDLE_BAT(, 14814) +HANDLE_BAT(, 14815) +HANDLE_BAT(, 14816) +HANDLE_BAT(, 14817) +HANDLE_BAT(, 14818) +HANDLE_BAT(, 14819) +HANDLE_BAT(, 14820) +HANDLE_BAT(, 14821) +HANDLE_BAT(, 14822) +HANDLE_BAT(, 14823) +HANDLE_BAT(, 14824) +HANDLE_BAT(, 14825) +HANDLE_BAT(, 14826) +HANDLE_BAT(, 14827) +HANDLE_BAT(, 14828) +HANDLE_BAT(, 14829) +HANDLE_BAT(, 14830) +HANDLE_BAT(, 14831) +HANDLE_BAT(, 14832) +HANDLE_BAT(, 14833) +HANDLE_BAT(, 14834) +HANDLE_BAT(, 14835) +HANDLE_BAT(, 14836) +HANDLE_BAT(, 14837) +HANDLE_BAT(, 14838) +HANDLE_BAT(, 14839) +HANDLE_BAT(, 14840) +HANDLE_BAT(, 14841) +HANDLE_BAT(, 14842) +HANDLE_BAT(, 14843) +HANDLE_BAT(, 14844) +HANDLE_BAT(, 14845) +HANDLE_BAT(, 14846) +HANDLE_BAT(, 14847) +HANDLE_BAT(, 14848) +HANDLE_BAT(, 14849) +HANDLE_BAT(, 14850) +HANDLE_BAT(, 14851) +HANDLE_BAT(, 14852) +HANDLE_BAT(, 14853) +HANDLE_BAT(, 14854) +HANDLE_BAT(, 14855) +HANDLE_BAT(, 14856) +HANDLE_BAT(, 14857) +HANDLE_BAT(, 14858) +HANDLE_BAT(, 14859) +HANDLE_BAT(, 14860) +HANDLE_BAT(, 14861) +HANDLE_BAT(, 14862) +HANDLE_BAT(, 14863) +HANDLE_BAT(, 14864) +HANDLE_BAT(, 14865) +HANDLE_BAT(, 14866) +HANDLE_BAT(, 14867) +HANDLE_BAT(, 14868) +HANDLE_BAT(, 14869) +HANDLE_BAT(, 14870) +HANDLE_BAT(, 14871) +HANDLE_BAT(, 14872) +HANDLE_BAT(, 14873) +HANDLE_BAT(, 14874) +HANDLE_BAT(, 14875) +HANDLE_BAT(, 14876) +HANDLE_BAT(, 14877) +HANDLE_BAT(, 14878) +HANDLE_BAT(, 14879) +HANDLE_BAT(, 14880) +HANDLE_BAT(, 14881) +HANDLE_BAT(, 14882) +HANDLE_BAT(, 14883) +HANDLE_BAT(, 14884) +HANDLE_BAT(, 14885) +HANDLE_BAT(, 14886) +HANDLE_BAT(, 14887) +HANDLE_BAT(, 14888) +HANDLE_BAT(, 14889) +HANDLE_BAT(, 14890) +HANDLE_BAT(, 14891) +HANDLE_BAT(, 14892) +HANDLE_BAT(, 14893) +HANDLE_BAT(, 14894) +HANDLE_BAT(, 14895) +HANDLE_BAT(, 14896) +HANDLE_BAT(, 14897) +HANDLE_BAT(, 14898) +HANDLE_BAT(, 14899) +HANDLE_BAT(, 14900) +HANDLE_BAT(, 14901) +HANDLE_BAT(, 14902) +HANDLE_BAT(, 14903) +HANDLE_BAT(, 14904) +HANDLE_BAT(, 14905) +HANDLE_BAT(, 14906) +HANDLE_BAT(, 14907) +HANDLE_BAT(, 14908) +HANDLE_BAT(, 14909) +HANDLE_BAT(, 14910) +HANDLE_BAT(, 14911) +HANDLE_BAT(, 14912) +HANDLE_BAT(, 14913) +HANDLE_BAT(, 14914) +HANDLE_BAT(, 14915) +HANDLE_BAT(, 14916) +HANDLE_BAT(, 14917) +HANDLE_BAT(, 14918) +HANDLE_BAT(, 14919) +HANDLE_BAT(, 14920) +HANDLE_BAT(, 14921) +HANDLE_BAT(, 14922) +HANDLE_BAT(, 14923) +HANDLE_BAT(, 14924) +HANDLE_BAT(, 14925) +HANDLE_BAT(, 14926) +HANDLE_BAT(, 14927) +HANDLE_BAT(, 14928) +HANDLE_BAT(, 14929) +HANDLE_BAT(, 14930) +HANDLE_BAT(, 14931) +HANDLE_BAT(, 14932) +HANDLE_BAT(, 14933) +HANDLE_BAT(, 14934) +HANDLE_BAT(, 14935) +HANDLE_BAT(, 14936) +HANDLE_BAT(, 14937) +HANDLE_BAT(, 14938) +HANDLE_BAT(, 14939) +HANDLE_BAT(, 14940) +HANDLE_BAT(, 14941) +HANDLE_BAT(, 14942) +HANDLE_BAT(, 14943) +HANDLE_BAT(, 14944) +HANDLE_BAT(, 14945) +HANDLE_BAT(, 14946) +HANDLE_BAT(, 14947) +HANDLE_BAT(, 14948) +HANDLE_BAT(, 14949) +HANDLE_BAT(, 14950) +HANDLE_BAT(, 14951) +HANDLE_BAT(, 14952) +HANDLE_BAT(, 14953) +HANDLE_BAT(, 14954) +HANDLE_BAT(, 14955) +HANDLE_BAT(, 14956) +HANDLE_BAT(, 14957) +HANDLE_BAT(, 14958) +HANDLE_BAT(, 14959) +HANDLE_BAT(, 14960) +HANDLE_BAT(, 14961) +HANDLE_BAT(, 14962) +HANDLE_BAT(, 14963) +HANDLE_BAT(, 14964) +HANDLE_BAT(, 14965) +HANDLE_BAT(, 14966) +HANDLE_BAT(, 14967) +HANDLE_BAT(, 14968) +HANDLE_BAT(, 14969) +HANDLE_BAT(, 14970) +HANDLE_BAT(, 14971) +HANDLE_BAT(, 14972) +HANDLE_BAT(, 14973) +HANDLE_BAT(, 14974) +HANDLE_BAT(, 14975) +HANDLE_BAT(, 14976) +HANDLE_BAT(, 14977) +HANDLE_BAT(, 14978) +HANDLE_BAT(, 14979) +HANDLE_BAT(, 14980) +HANDLE_BAT(, 14981) +HANDLE_BAT(, 14982) +HANDLE_BAT(, 14983) +HANDLE_BAT(, 14984) +HANDLE_BAT(, 14985) +HANDLE_BAT(, 14986) +HANDLE_BAT(, 14987) +HANDLE_BAT(, 14988) +HANDLE_BAT(, 14989) +HANDLE_BAT(, 14990) +HANDLE_BAT(, 14991) +HANDLE_BAT(, 14992) +HANDLE_BAT(, 14993) +HANDLE_BAT(, 14994) +HANDLE_BAT(, 14995) +HANDLE_BAT(, 14996) +HANDLE_BAT(, 14997) +HANDLE_BAT(, 14998) +HANDLE_BAT(, 14999) +HANDLE_BAT(, 15000) +HANDLE_BAT(, 15001) +HANDLE_BAT(, 15002) +HANDLE_BAT(, 15003) +HANDLE_BAT(, 15004) +HANDLE_BAT(, 15005) +HANDLE_BAT(, 15006) +HANDLE_BAT(, 15007) +HANDLE_BAT(, 15008) +HANDLE_BAT(, 15009) +HANDLE_BAT(, 15010) +HANDLE_BAT(, 15011) +HANDLE_BAT(, 15012) +HANDLE_BAT(, 15013) +HANDLE_BAT(, 15014) +HANDLE_BAT(, 15015) +HANDLE_BAT(, 15016) +HANDLE_BAT(, 15017) +HANDLE_BAT(, 15018) +HANDLE_BAT(, 15019) +HANDLE_BAT(, 15020) +HANDLE_BAT(, 15021) +HANDLE_BAT(, 15022) +HANDLE_BAT(, 15023) +HANDLE_BAT(, 15024) +HANDLE_BAT(, 15025) +HANDLE_BAT(, 15026) +HANDLE_BAT(, 15027) +HANDLE_BAT(, 15028) +HANDLE_BAT(, 15029) +HANDLE_BAT(, 15030) +HANDLE_BAT(, 15031) +HANDLE_BAT(, 15032) +HANDLE_BAT(, 15033) +HANDLE_BAT(, 15034) +HANDLE_BAT(, 15035) +HANDLE_BAT(, 15036) +HANDLE_BAT(, 15037) +HANDLE_BAT(, 15038) +HANDLE_BAT(, 15039) +HANDLE_BAT(, 15040) +HANDLE_BAT(, 15041) +HANDLE_BAT(, 15042) +HANDLE_BAT(, 15043) +HANDLE_BAT(, 15044) +HANDLE_BAT(, 15045) +HANDLE_BAT(, 15046) +HANDLE_BAT(, 15047) +HANDLE_BAT(, 15048) +HANDLE_BAT(, 15049) +HANDLE_BAT(, 15050) +HANDLE_BAT(, 15051) +HANDLE_BAT(, 15052) +HANDLE_BAT(, 15053) +HANDLE_BAT(, 15054) +HANDLE_BAT(, 15055) +HANDLE_BAT(, 15056) +HANDLE_BAT(, 15057) +HANDLE_BAT(, 15058) +HANDLE_BAT(, 15059) +HANDLE_BAT(, 15060) +HANDLE_BAT(, 15061) +HANDLE_BAT(, 15062) +HANDLE_BAT(, 15063) +HANDLE_BAT(, 15064) +HANDLE_BAT(, 15065) +HANDLE_BAT(, 15066) +HANDLE_BAT(, 15067) +HANDLE_BAT(, 15068) +HANDLE_BAT(, 15069) +HANDLE_BAT(, 15070) +HANDLE_BAT(, 15071) +HANDLE_BAT(, 15072) +HANDLE_BAT(, 15073) +HANDLE_BAT(, 15074) +HANDLE_BAT(, 15075) +HANDLE_BAT(, 15076) +HANDLE_BAT(, 15077) +HANDLE_BAT(, 15078) +HANDLE_BAT(, 15079) +HANDLE_BAT(, 15080) +HANDLE_BAT(, 15081) +HANDLE_BAT(, 15082) +HANDLE_BAT(, 15083) +HANDLE_BAT(, 15084) +HANDLE_BAT(, 15085) +HANDLE_BAT(, 15086) +HANDLE_BAT(, 15087) +HANDLE_BAT(, 15088) +HANDLE_BAT(, 15089) +HANDLE_BAT(, 15090) +HANDLE_BAT(, 15091) +HANDLE_BAT(, 15092) +HANDLE_BAT(, 15093) +HANDLE_BAT(, 15094) +HANDLE_BAT(, 15095) +HANDLE_BAT(, 15096) +HANDLE_BAT(, 15097) +HANDLE_BAT(, 15098) +HANDLE_BAT(, 15099) +HANDLE_BAT(, 15100) +HANDLE_BAT(, 15101) +HANDLE_BAT(, 15102) +HANDLE_BAT(, 15103) +HANDLE_BAT(, 15104) +HANDLE_BAT(, 15105) +HANDLE_BAT(, 15106) +HANDLE_BAT(, 15107) +HANDLE_BAT(, 15108) +HANDLE_BAT(, 15109) +HANDLE_BAT(, 15110) +HANDLE_BAT(, 15111) +HANDLE_BAT(, 15112) +HANDLE_BAT(, 15113) +HANDLE_BAT(, 15114) +HANDLE_BAT(, 15115) +HANDLE_BAT(, 15116) +HANDLE_BAT(, 15117) +HANDLE_BAT(, 15118) +HANDLE_BAT(, 15119) +HANDLE_BAT(, 15120) +HANDLE_BAT(, 15121) +HANDLE_BAT(, 15122) +HANDLE_BAT(, 15123) +HANDLE_BAT(, 15124) +HANDLE_BAT(, 15125) +HANDLE_BAT(, 15126) +HANDLE_BAT(, 15127) +HANDLE_BAT(, 15128) +HANDLE_BAT(, 15129) +HANDLE_BAT(, 15130) +HANDLE_BAT(, 15131) +HANDLE_BAT(, 15132) +HANDLE_BAT(, 15133) +HANDLE_BAT(, 15134) +HANDLE_BAT(, 15135) +HANDLE_BAT(, 15136) +HANDLE_BAT(, 15137) +HANDLE_BAT(, 15138) +HANDLE_BAT(, 15139) +HANDLE_BAT(, 15140) +HANDLE_BAT(, 15141) +HANDLE_BAT(, 15142) +HANDLE_BAT(, 15143) +HANDLE_BAT(, 15144) +HANDLE_BAT(, 15145) +HANDLE_BAT(, 15146) +HANDLE_BAT(, 15147) +HANDLE_BAT(, 15148) +HANDLE_BAT(, 15149) +HANDLE_BAT(, 15150) +HANDLE_BAT(, 15151) +HANDLE_BAT(, 15152) +HANDLE_BAT(, 15153) +HANDLE_BAT(, 15154) +HANDLE_BAT(, 15155) +HANDLE_BAT(, 15156) +HANDLE_BAT(, 15157) +HANDLE_BAT(, 15158) +HANDLE_BAT(, 15159) +HANDLE_BAT(, 15160) +HANDLE_BAT(, 15161) +HANDLE_BAT(, 15162) +HANDLE_BAT(, 15163) +HANDLE_BAT(, 15164) +HANDLE_BAT(, 15165) +HANDLE_BAT(, 15166) +HANDLE_BAT(, 15167) +HANDLE_BAT(, 15168) +HANDLE_BAT(, 15169) +HANDLE_BAT(, 15170) +HANDLE_BAT(, 15171) +HANDLE_BAT(, 15172) +HANDLE_BAT(, 15173) +HANDLE_BAT(, 15174) +HANDLE_BAT(, 15175) +HANDLE_BAT(, 15176) +HANDLE_BAT(, 15177) +HANDLE_BAT(, 15178) +HANDLE_BAT(, 15179) +HANDLE_BAT(, 15180) +HANDLE_BAT(, 15181) +HANDLE_BAT(, 15182) +HANDLE_BAT(, 15183) +HANDLE_BAT(, 15184) +HANDLE_BAT(, 15185) +HANDLE_BAT(, 15186) +HANDLE_BAT(, 15187) +HANDLE_BAT(, 15188) +HANDLE_BAT(, 15189) +HANDLE_BAT(, 15190) +HANDLE_BAT(, 15191) +HANDLE_BAT(, 15192) +HANDLE_BAT(, 15193) +HANDLE_BAT(, 15194) +HANDLE_BAT(, 15195) +HANDLE_BAT(, 15196) +HANDLE_BAT(, 15197) +HANDLE_BAT(, 15198) +HANDLE_BAT(, 15199) +HANDLE_BAT(, 15200) +HANDLE_BAT(, 15201) +HANDLE_BAT(, 15202) +HANDLE_BAT(, 15203) +HANDLE_BAT(, 15204) +HANDLE_BAT(, 15205) +HANDLE_BAT(, 15206) +HANDLE_BAT(, 15207) +HANDLE_BAT(, 15208) +HANDLE_BAT(, 15209) +HANDLE_BAT(, 15210) +HANDLE_BAT(, 15211) +HANDLE_BAT(, 15212) +HANDLE_BAT(, 15213) +HANDLE_BAT(, 15214) +HANDLE_BAT(, 15215) +HANDLE_BAT(, 15216) +HANDLE_BAT(, 15217) +HANDLE_BAT(, 15218) +HANDLE_BAT(, 15219) +HANDLE_BAT(, 15220) +HANDLE_BAT(, 15221) +HANDLE_BAT(, 15222) +HANDLE_BAT(, 15223) +HANDLE_BAT(, 15224) +HANDLE_BAT(, 15225) +HANDLE_BAT(, 15226) +HANDLE_BAT(, 15227) +HANDLE_BAT(, 15228) +HANDLE_BAT(, 15229) +HANDLE_BAT(, 15230) +HANDLE_BAT(, 15231) +HANDLE_BAT(, 15232) +HANDLE_BAT(, 15233) +HANDLE_BAT(, 15234) +HANDLE_BAT(, 15235) +HANDLE_BAT(, 15236) +HANDLE_BAT(, 15237) +HANDLE_BAT(, 15238) +HANDLE_BAT(, 15239) +HANDLE_BAT(, 15240) +HANDLE_BAT(, 15241) +HANDLE_BAT(, 15242) +HANDLE_BAT(, 15243) +HANDLE_BAT(, 15244) +HANDLE_BAT(, 15245) +HANDLE_BAT(, 15246) +HANDLE_BAT(, 15247) +HANDLE_BAT(, 15248) +HANDLE_BAT(, 15249) +HANDLE_BAT(, 15250) +HANDLE_BAT(, 15251) +HANDLE_BAT(, 15252) +HANDLE_BAT(, 15253) +HANDLE_BAT(, 15254) +HANDLE_BAT(, 15255) +HANDLE_BAT(, 15256) +HANDLE_BAT(, 15257) +HANDLE_BAT(, 15258) +HANDLE_BAT(, 15259) +HANDLE_BAT(, 15260) +HANDLE_BAT(, 15261) +HANDLE_BAT(, 15262) +HANDLE_BAT(, 15263) +HANDLE_BAT(, 15264) +HANDLE_BAT(, 15265) +HANDLE_BAT(, 15266) +HANDLE_BAT(, 15267) +HANDLE_BAT(, 15268) +HANDLE_BAT(, 15269) +HANDLE_BAT(, 15270) +HANDLE_BAT(, 15271) +HANDLE_BAT(, 15272) +HANDLE_BAT(, 15273) +HANDLE_BAT(, 15274) +HANDLE_BAT(, 15275) +HANDLE_BAT(, 15276) +HANDLE_BAT(, 15277) +HANDLE_BAT(, 15278) +HANDLE_BAT(, 15279) +HANDLE_BAT(, 15280) +HANDLE_BAT(, 15281) +HANDLE_BAT(, 15282) +HANDLE_BAT(, 15283) +HANDLE_BAT(, 15284) +HANDLE_BAT(, 15285) +HANDLE_BAT(, 15286) +HANDLE_BAT(, 15287) +HANDLE_BAT(, 15288) +HANDLE_BAT(, 15289) +HANDLE_BAT(, 15290) +HANDLE_BAT(, 15291) +HANDLE_BAT(, 15292) +HANDLE_BAT(, 15293) +HANDLE_BAT(, 15294) +HANDLE_BAT(, 15295) +HANDLE_BAT(, 15296) +HANDLE_BAT(, 15297) +HANDLE_BAT(, 15298) +HANDLE_BAT(, 15299) +HANDLE_BAT(, 15300) +HANDLE_BAT(, 15301) +HANDLE_BAT(, 15302) +HANDLE_BAT(, 15303) +HANDLE_BAT(, 15304) +HANDLE_BAT(, 15305) +HANDLE_BAT(, 15306) +HANDLE_BAT(, 15307) +HANDLE_BAT(, 15308) +HANDLE_BAT(, 15309) +HANDLE_BAT(, 15310) +HANDLE_BAT(, 15311) +HANDLE_BAT(, 15312) +HANDLE_BAT(, 15313) +HANDLE_BAT(, 15314) +HANDLE_BAT(, 15315) +HANDLE_BAT(, 15316) +HANDLE_BAT(, 15317) +HANDLE_BAT(, 15318) +HANDLE_BAT(, 15319) +HANDLE_BAT(, 15320) +HANDLE_BAT(, 15321) +HANDLE_BAT(, 15322) +HANDLE_BAT(, 15323) +HANDLE_BAT(, 15324) +HANDLE_BAT(, 15325) +HANDLE_BAT(, 15326) +HANDLE_BAT(, 15327) +HANDLE_BAT(, 15328) +HANDLE_BAT(, 15329) +HANDLE_BAT(, 15330) +HANDLE_BAT(, 15331) +HANDLE_BAT(, 15332) +HANDLE_BAT(, 15333) +HANDLE_BAT(, 15334) +HANDLE_BAT(, 15335) +HANDLE_BAT(, 15336) +HANDLE_BAT(, 15337) +HANDLE_BAT(, 15338) +HANDLE_BAT(, 15339) +HANDLE_BAT(, 15340) +HANDLE_BAT(, 15341) +HANDLE_BAT(, 15342) +HANDLE_BAT(, 15343) +HANDLE_BAT(, 15344) +HANDLE_BAT(, 15345) +HANDLE_BAT(, 15346) +HANDLE_BAT(, 15347) +HANDLE_BAT(, 15348) +HANDLE_BAT(, 15349) +HANDLE_BAT(, 15350) +HANDLE_BAT(, 15351) +HANDLE_BAT(, 15352) +HANDLE_BAT(, 15353) +HANDLE_BAT(, 15354) +HANDLE_BAT(, 15355) +HANDLE_BAT(, 15356) +HANDLE_BAT(, 15357) +HANDLE_BAT(, 15358) +HANDLE_BAT(, 15359) +HANDLE_BAT(, 15360) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 14337) +HANDLE_BAT(APINT_TYPE_PREFIX, 14338) +HANDLE_BAT(APINT_TYPE_PREFIX, 14339) +HANDLE_BAT(APINT_TYPE_PREFIX, 14340) +HANDLE_BAT(APINT_TYPE_PREFIX, 14341) +HANDLE_BAT(APINT_TYPE_PREFIX, 14342) +HANDLE_BAT(APINT_TYPE_PREFIX, 14343) +HANDLE_BAT(APINT_TYPE_PREFIX, 14344) +HANDLE_BAT(APINT_TYPE_PREFIX, 14345) +HANDLE_BAT(APINT_TYPE_PREFIX, 14346) +HANDLE_BAT(APINT_TYPE_PREFIX, 14347) +HANDLE_BAT(APINT_TYPE_PREFIX, 14348) +HANDLE_BAT(APINT_TYPE_PREFIX, 14349) +HANDLE_BAT(APINT_TYPE_PREFIX, 14350) +HANDLE_BAT(APINT_TYPE_PREFIX, 14351) +HANDLE_BAT(APINT_TYPE_PREFIX, 14352) +HANDLE_BAT(APINT_TYPE_PREFIX, 14353) +HANDLE_BAT(APINT_TYPE_PREFIX, 14354) +HANDLE_BAT(APINT_TYPE_PREFIX, 14355) +HANDLE_BAT(APINT_TYPE_PREFIX, 14356) +HANDLE_BAT(APINT_TYPE_PREFIX, 14357) +HANDLE_BAT(APINT_TYPE_PREFIX, 14358) +HANDLE_BAT(APINT_TYPE_PREFIX, 14359) +HANDLE_BAT(APINT_TYPE_PREFIX, 14360) +HANDLE_BAT(APINT_TYPE_PREFIX, 14361) +HANDLE_BAT(APINT_TYPE_PREFIX, 14362) +HANDLE_BAT(APINT_TYPE_PREFIX, 14363) +HANDLE_BAT(APINT_TYPE_PREFIX, 14364) +HANDLE_BAT(APINT_TYPE_PREFIX, 14365) +HANDLE_BAT(APINT_TYPE_PREFIX, 14366) +HANDLE_BAT(APINT_TYPE_PREFIX, 14367) +HANDLE_BAT(APINT_TYPE_PREFIX, 14368) +HANDLE_BAT(APINT_TYPE_PREFIX, 14369) +HANDLE_BAT(APINT_TYPE_PREFIX, 14370) +HANDLE_BAT(APINT_TYPE_PREFIX, 14371) +HANDLE_BAT(APINT_TYPE_PREFIX, 14372) +HANDLE_BAT(APINT_TYPE_PREFIX, 14373) +HANDLE_BAT(APINT_TYPE_PREFIX, 14374) +HANDLE_BAT(APINT_TYPE_PREFIX, 14375) +HANDLE_BAT(APINT_TYPE_PREFIX, 14376) +HANDLE_BAT(APINT_TYPE_PREFIX, 14377) +HANDLE_BAT(APINT_TYPE_PREFIX, 14378) +HANDLE_BAT(APINT_TYPE_PREFIX, 14379) +HANDLE_BAT(APINT_TYPE_PREFIX, 14380) +HANDLE_BAT(APINT_TYPE_PREFIX, 14381) +HANDLE_BAT(APINT_TYPE_PREFIX, 14382) +HANDLE_BAT(APINT_TYPE_PREFIX, 14383) +HANDLE_BAT(APINT_TYPE_PREFIX, 14384) +HANDLE_BAT(APINT_TYPE_PREFIX, 14385) +HANDLE_BAT(APINT_TYPE_PREFIX, 14386) +HANDLE_BAT(APINT_TYPE_PREFIX, 14387) +HANDLE_BAT(APINT_TYPE_PREFIX, 14388) +HANDLE_BAT(APINT_TYPE_PREFIX, 14389) +HANDLE_BAT(APINT_TYPE_PREFIX, 14390) +HANDLE_BAT(APINT_TYPE_PREFIX, 14391) +HANDLE_BAT(APINT_TYPE_PREFIX, 14392) +HANDLE_BAT(APINT_TYPE_PREFIX, 14393) +HANDLE_BAT(APINT_TYPE_PREFIX, 14394) +HANDLE_BAT(APINT_TYPE_PREFIX, 14395) +HANDLE_BAT(APINT_TYPE_PREFIX, 14396) +HANDLE_BAT(APINT_TYPE_PREFIX, 14397) +HANDLE_BAT(APINT_TYPE_PREFIX, 14398) +HANDLE_BAT(APINT_TYPE_PREFIX, 14399) +HANDLE_BAT(APINT_TYPE_PREFIX, 14400) +HANDLE_BAT(APINT_TYPE_PREFIX, 14401) +HANDLE_BAT(APINT_TYPE_PREFIX, 14402) +HANDLE_BAT(APINT_TYPE_PREFIX, 14403) +HANDLE_BAT(APINT_TYPE_PREFIX, 14404) +HANDLE_BAT(APINT_TYPE_PREFIX, 14405) +HANDLE_BAT(APINT_TYPE_PREFIX, 14406) +HANDLE_BAT(APINT_TYPE_PREFIX, 14407) +HANDLE_BAT(APINT_TYPE_PREFIX, 14408) +HANDLE_BAT(APINT_TYPE_PREFIX, 14409) +HANDLE_BAT(APINT_TYPE_PREFIX, 14410) +HANDLE_BAT(APINT_TYPE_PREFIX, 14411) +HANDLE_BAT(APINT_TYPE_PREFIX, 14412) +HANDLE_BAT(APINT_TYPE_PREFIX, 14413) +HANDLE_BAT(APINT_TYPE_PREFIX, 14414) +HANDLE_BAT(APINT_TYPE_PREFIX, 14415) +HANDLE_BAT(APINT_TYPE_PREFIX, 14416) +HANDLE_BAT(APINT_TYPE_PREFIX, 14417) +HANDLE_BAT(APINT_TYPE_PREFIX, 14418) +HANDLE_BAT(APINT_TYPE_PREFIX, 14419) +HANDLE_BAT(APINT_TYPE_PREFIX, 14420) +HANDLE_BAT(APINT_TYPE_PREFIX, 14421) +HANDLE_BAT(APINT_TYPE_PREFIX, 14422) +HANDLE_BAT(APINT_TYPE_PREFIX, 14423) +HANDLE_BAT(APINT_TYPE_PREFIX, 14424) +HANDLE_BAT(APINT_TYPE_PREFIX, 14425) +HANDLE_BAT(APINT_TYPE_PREFIX, 14426) +HANDLE_BAT(APINT_TYPE_PREFIX, 14427) +HANDLE_BAT(APINT_TYPE_PREFIX, 14428) +HANDLE_BAT(APINT_TYPE_PREFIX, 14429) +HANDLE_BAT(APINT_TYPE_PREFIX, 14430) +HANDLE_BAT(APINT_TYPE_PREFIX, 14431) +HANDLE_BAT(APINT_TYPE_PREFIX, 14432) +HANDLE_BAT(APINT_TYPE_PREFIX, 14433) +HANDLE_BAT(APINT_TYPE_PREFIX, 14434) +HANDLE_BAT(APINT_TYPE_PREFIX, 14435) +HANDLE_BAT(APINT_TYPE_PREFIX, 14436) +HANDLE_BAT(APINT_TYPE_PREFIX, 14437) +HANDLE_BAT(APINT_TYPE_PREFIX, 14438) +HANDLE_BAT(APINT_TYPE_PREFIX, 14439) +HANDLE_BAT(APINT_TYPE_PREFIX, 14440) +HANDLE_BAT(APINT_TYPE_PREFIX, 14441) +HANDLE_BAT(APINT_TYPE_PREFIX, 14442) +HANDLE_BAT(APINT_TYPE_PREFIX, 14443) +HANDLE_BAT(APINT_TYPE_PREFIX, 14444) +HANDLE_BAT(APINT_TYPE_PREFIX, 14445) +HANDLE_BAT(APINT_TYPE_PREFIX, 14446) +HANDLE_BAT(APINT_TYPE_PREFIX, 14447) +HANDLE_BAT(APINT_TYPE_PREFIX, 14448) +HANDLE_BAT(APINT_TYPE_PREFIX, 14449) +HANDLE_BAT(APINT_TYPE_PREFIX, 14450) +HANDLE_BAT(APINT_TYPE_PREFIX, 14451) +HANDLE_BAT(APINT_TYPE_PREFIX, 14452) +HANDLE_BAT(APINT_TYPE_PREFIX, 14453) +HANDLE_BAT(APINT_TYPE_PREFIX, 14454) +HANDLE_BAT(APINT_TYPE_PREFIX, 14455) +HANDLE_BAT(APINT_TYPE_PREFIX, 14456) +HANDLE_BAT(APINT_TYPE_PREFIX, 14457) +HANDLE_BAT(APINT_TYPE_PREFIX, 14458) +HANDLE_BAT(APINT_TYPE_PREFIX, 14459) +HANDLE_BAT(APINT_TYPE_PREFIX, 14460) +HANDLE_BAT(APINT_TYPE_PREFIX, 14461) +HANDLE_BAT(APINT_TYPE_PREFIX, 14462) +HANDLE_BAT(APINT_TYPE_PREFIX, 14463) +HANDLE_BAT(APINT_TYPE_PREFIX, 14464) +HANDLE_BAT(APINT_TYPE_PREFIX, 14465) +HANDLE_BAT(APINT_TYPE_PREFIX, 14466) +HANDLE_BAT(APINT_TYPE_PREFIX, 14467) +HANDLE_BAT(APINT_TYPE_PREFIX, 14468) +HANDLE_BAT(APINT_TYPE_PREFIX, 14469) +HANDLE_BAT(APINT_TYPE_PREFIX, 14470) +HANDLE_BAT(APINT_TYPE_PREFIX, 14471) +HANDLE_BAT(APINT_TYPE_PREFIX, 14472) +HANDLE_BAT(APINT_TYPE_PREFIX, 14473) +HANDLE_BAT(APINT_TYPE_PREFIX, 14474) +HANDLE_BAT(APINT_TYPE_PREFIX, 14475) +HANDLE_BAT(APINT_TYPE_PREFIX, 14476) +HANDLE_BAT(APINT_TYPE_PREFIX, 14477) +HANDLE_BAT(APINT_TYPE_PREFIX, 14478) +HANDLE_BAT(APINT_TYPE_PREFIX, 14479) +HANDLE_BAT(APINT_TYPE_PREFIX, 14480) +HANDLE_BAT(APINT_TYPE_PREFIX, 14481) +HANDLE_BAT(APINT_TYPE_PREFIX, 14482) +HANDLE_BAT(APINT_TYPE_PREFIX, 14483) +HANDLE_BAT(APINT_TYPE_PREFIX, 14484) +HANDLE_BAT(APINT_TYPE_PREFIX, 14485) +HANDLE_BAT(APINT_TYPE_PREFIX, 14486) +HANDLE_BAT(APINT_TYPE_PREFIX, 14487) +HANDLE_BAT(APINT_TYPE_PREFIX, 14488) +HANDLE_BAT(APINT_TYPE_PREFIX, 14489) +HANDLE_BAT(APINT_TYPE_PREFIX, 14490) +HANDLE_BAT(APINT_TYPE_PREFIX, 14491) +HANDLE_BAT(APINT_TYPE_PREFIX, 14492) +HANDLE_BAT(APINT_TYPE_PREFIX, 14493) +HANDLE_BAT(APINT_TYPE_PREFIX, 14494) +HANDLE_BAT(APINT_TYPE_PREFIX, 14495) +HANDLE_BAT(APINT_TYPE_PREFIX, 14496) +HANDLE_BAT(APINT_TYPE_PREFIX, 14497) +HANDLE_BAT(APINT_TYPE_PREFIX, 14498) +HANDLE_BAT(APINT_TYPE_PREFIX, 14499) +HANDLE_BAT(APINT_TYPE_PREFIX, 14500) +HANDLE_BAT(APINT_TYPE_PREFIX, 14501) +HANDLE_BAT(APINT_TYPE_PREFIX, 14502) +HANDLE_BAT(APINT_TYPE_PREFIX, 14503) +HANDLE_BAT(APINT_TYPE_PREFIX, 14504) +HANDLE_BAT(APINT_TYPE_PREFIX, 14505) +HANDLE_BAT(APINT_TYPE_PREFIX, 14506) +HANDLE_BAT(APINT_TYPE_PREFIX, 14507) +HANDLE_BAT(APINT_TYPE_PREFIX, 14508) +HANDLE_BAT(APINT_TYPE_PREFIX, 14509) +HANDLE_BAT(APINT_TYPE_PREFIX, 14510) +HANDLE_BAT(APINT_TYPE_PREFIX, 14511) +HANDLE_BAT(APINT_TYPE_PREFIX, 14512) +HANDLE_BAT(APINT_TYPE_PREFIX, 14513) +HANDLE_BAT(APINT_TYPE_PREFIX, 14514) +HANDLE_BAT(APINT_TYPE_PREFIX, 14515) +HANDLE_BAT(APINT_TYPE_PREFIX, 14516) +HANDLE_BAT(APINT_TYPE_PREFIX, 14517) +HANDLE_BAT(APINT_TYPE_PREFIX, 14518) +HANDLE_BAT(APINT_TYPE_PREFIX, 14519) +HANDLE_BAT(APINT_TYPE_PREFIX, 14520) +HANDLE_BAT(APINT_TYPE_PREFIX, 14521) +HANDLE_BAT(APINT_TYPE_PREFIX, 14522) +HANDLE_BAT(APINT_TYPE_PREFIX, 14523) +HANDLE_BAT(APINT_TYPE_PREFIX, 14524) +HANDLE_BAT(APINT_TYPE_PREFIX, 14525) +HANDLE_BAT(APINT_TYPE_PREFIX, 14526) +HANDLE_BAT(APINT_TYPE_PREFIX, 14527) +HANDLE_BAT(APINT_TYPE_PREFIX, 14528) +HANDLE_BAT(APINT_TYPE_PREFIX, 14529) +HANDLE_BAT(APINT_TYPE_PREFIX, 14530) +HANDLE_BAT(APINT_TYPE_PREFIX, 14531) +HANDLE_BAT(APINT_TYPE_PREFIX, 14532) +HANDLE_BAT(APINT_TYPE_PREFIX, 14533) +HANDLE_BAT(APINT_TYPE_PREFIX, 14534) +HANDLE_BAT(APINT_TYPE_PREFIX, 14535) +HANDLE_BAT(APINT_TYPE_PREFIX, 14536) +HANDLE_BAT(APINT_TYPE_PREFIX, 14537) +HANDLE_BAT(APINT_TYPE_PREFIX, 14538) +HANDLE_BAT(APINT_TYPE_PREFIX, 14539) +HANDLE_BAT(APINT_TYPE_PREFIX, 14540) +HANDLE_BAT(APINT_TYPE_PREFIX, 14541) +HANDLE_BAT(APINT_TYPE_PREFIX, 14542) +HANDLE_BAT(APINT_TYPE_PREFIX, 14543) +HANDLE_BAT(APINT_TYPE_PREFIX, 14544) +HANDLE_BAT(APINT_TYPE_PREFIX, 14545) +HANDLE_BAT(APINT_TYPE_PREFIX, 14546) +HANDLE_BAT(APINT_TYPE_PREFIX, 14547) +HANDLE_BAT(APINT_TYPE_PREFIX, 14548) +HANDLE_BAT(APINT_TYPE_PREFIX, 14549) +HANDLE_BAT(APINT_TYPE_PREFIX, 14550) +HANDLE_BAT(APINT_TYPE_PREFIX, 14551) +HANDLE_BAT(APINT_TYPE_PREFIX, 14552) +HANDLE_BAT(APINT_TYPE_PREFIX, 14553) +HANDLE_BAT(APINT_TYPE_PREFIX, 14554) +HANDLE_BAT(APINT_TYPE_PREFIX, 14555) +HANDLE_BAT(APINT_TYPE_PREFIX, 14556) +HANDLE_BAT(APINT_TYPE_PREFIX, 14557) +HANDLE_BAT(APINT_TYPE_PREFIX, 14558) +HANDLE_BAT(APINT_TYPE_PREFIX, 14559) +HANDLE_BAT(APINT_TYPE_PREFIX, 14560) +HANDLE_BAT(APINT_TYPE_PREFIX, 14561) +HANDLE_BAT(APINT_TYPE_PREFIX, 14562) +HANDLE_BAT(APINT_TYPE_PREFIX, 14563) +HANDLE_BAT(APINT_TYPE_PREFIX, 14564) +HANDLE_BAT(APINT_TYPE_PREFIX, 14565) +HANDLE_BAT(APINT_TYPE_PREFIX, 14566) +HANDLE_BAT(APINT_TYPE_PREFIX, 14567) +HANDLE_BAT(APINT_TYPE_PREFIX, 14568) +HANDLE_BAT(APINT_TYPE_PREFIX, 14569) +HANDLE_BAT(APINT_TYPE_PREFIX, 14570) +HANDLE_BAT(APINT_TYPE_PREFIX, 14571) +HANDLE_BAT(APINT_TYPE_PREFIX, 14572) +HANDLE_BAT(APINT_TYPE_PREFIX, 14573) +HANDLE_BAT(APINT_TYPE_PREFIX, 14574) +HANDLE_BAT(APINT_TYPE_PREFIX, 14575) +HANDLE_BAT(APINT_TYPE_PREFIX, 14576) +HANDLE_BAT(APINT_TYPE_PREFIX, 14577) +HANDLE_BAT(APINT_TYPE_PREFIX, 14578) +HANDLE_BAT(APINT_TYPE_PREFIX, 14579) +HANDLE_BAT(APINT_TYPE_PREFIX, 14580) +HANDLE_BAT(APINT_TYPE_PREFIX, 14581) +HANDLE_BAT(APINT_TYPE_PREFIX, 14582) +HANDLE_BAT(APINT_TYPE_PREFIX, 14583) +HANDLE_BAT(APINT_TYPE_PREFIX, 14584) +HANDLE_BAT(APINT_TYPE_PREFIX, 14585) +HANDLE_BAT(APINT_TYPE_PREFIX, 14586) +HANDLE_BAT(APINT_TYPE_PREFIX, 14587) +HANDLE_BAT(APINT_TYPE_PREFIX, 14588) +HANDLE_BAT(APINT_TYPE_PREFIX, 14589) +HANDLE_BAT(APINT_TYPE_PREFIX, 14590) +HANDLE_BAT(APINT_TYPE_PREFIX, 14591) +HANDLE_BAT(APINT_TYPE_PREFIX, 14592) +HANDLE_BAT(APINT_TYPE_PREFIX, 14593) +HANDLE_BAT(APINT_TYPE_PREFIX, 14594) +HANDLE_BAT(APINT_TYPE_PREFIX, 14595) +HANDLE_BAT(APINT_TYPE_PREFIX, 14596) +HANDLE_BAT(APINT_TYPE_PREFIX, 14597) +HANDLE_BAT(APINT_TYPE_PREFIX, 14598) +HANDLE_BAT(APINT_TYPE_PREFIX, 14599) +HANDLE_BAT(APINT_TYPE_PREFIX, 14600) +HANDLE_BAT(APINT_TYPE_PREFIX, 14601) +HANDLE_BAT(APINT_TYPE_PREFIX, 14602) +HANDLE_BAT(APINT_TYPE_PREFIX, 14603) +HANDLE_BAT(APINT_TYPE_PREFIX, 14604) +HANDLE_BAT(APINT_TYPE_PREFIX, 14605) +HANDLE_BAT(APINT_TYPE_PREFIX, 14606) +HANDLE_BAT(APINT_TYPE_PREFIX, 14607) +HANDLE_BAT(APINT_TYPE_PREFIX, 14608) +HANDLE_BAT(APINT_TYPE_PREFIX, 14609) +HANDLE_BAT(APINT_TYPE_PREFIX, 14610) +HANDLE_BAT(APINT_TYPE_PREFIX, 14611) +HANDLE_BAT(APINT_TYPE_PREFIX, 14612) +HANDLE_BAT(APINT_TYPE_PREFIX, 14613) +HANDLE_BAT(APINT_TYPE_PREFIX, 14614) +HANDLE_BAT(APINT_TYPE_PREFIX, 14615) +HANDLE_BAT(APINT_TYPE_PREFIX, 14616) +HANDLE_BAT(APINT_TYPE_PREFIX, 14617) +HANDLE_BAT(APINT_TYPE_PREFIX, 14618) +HANDLE_BAT(APINT_TYPE_PREFIX, 14619) +HANDLE_BAT(APINT_TYPE_PREFIX, 14620) +HANDLE_BAT(APINT_TYPE_PREFIX, 14621) +HANDLE_BAT(APINT_TYPE_PREFIX, 14622) +HANDLE_BAT(APINT_TYPE_PREFIX, 14623) +HANDLE_BAT(APINT_TYPE_PREFIX, 14624) +HANDLE_BAT(APINT_TYPE_PREFIX, 14625) +HANDLE_BAT(APINT_TYPE_PREFIX, 14626) +HANDLE_BAT(APINT_TYPE_PREFIX, 14627) +HANDLE_BAT(APINT_TYPE_PREFIX, 14628) +HANDLE_BAT(APINT_TYPE_PREFIX, 14629) +HANDLE_BAT(APINT_TYPE_PREFIX, 14630) +HANDLE_BAT(APINT_TYPE_PREFIX, 14631) +HANDLE_BAT(APINT_TYPE_PREFIX, 14632) +HANDLE_BAT(APINT_TYPE_PREFIX, 14633) +HANDLE_BAT(APINT_TYPE_PREFIX, 14634) +HANDLE_BAT(APINT_TYPE_PREFIX, 14635) +HANDLE_BAT(APINT_TYPE_PREFIX, 14636) +HANDLE_BAT(APINT_TYPE_PREFIX, 14637) +HANDLE_BAT(APINT_TYPE_PREFIX, 14638) +HANDLE_BAT(APINT_TYPE_PREFIX, 14639) +HANDLE_BAT(APINT_TYPE_PREFIX, 14640) +HANDLE_BAT(APINT_TYPE_PREFIX, 14641) +HANDLE_BAT(APINT_TYPE_PREFIX, 14642) +HANDLE_BAT(APINT_TYPE_PREFIX, 14643) +HANDLE_BAT(APINT_TYPE_PREFIX, 14644) +HANDLE_BAT(APINT_TYPE_PREFIX, 14645) +HANDLE_BAT(APINT_TYPE_PREFIX, 14646) +HANDLE_BAT(APINT_TYPE_PREFIX, 14647) +HANDLE_BAT(APINT_TYPE_PREFIX, 14648) +HANDLE_BAT(APINT_TYPE_PREFIX, 14649) +HANDLE_BAT(APINT_TYPE_PREFIX, 14650) +HANDLE_BAT(APINT_TYPE_PREFIX, 14651) +HANDLE_BAT(APINT_TYPE_PREFIX, 14652) +HANDLE_BAT(APINT_TYPE_PREFIX, 14653) +HANDLE_BAT(APINT_TYPE_PREFIX, 14654) +HANDLE_BAT(APINT_TYPE_PREFIX, 14655) +HANDLE_BAT(APINT_TYPE_PREFIX, 14656) +HANDLE_BAT(APINT_TYPE_PREFIX, 14657) +HANDLE_BAT(APINT_TYPE_PREFIX, 14658) +HANDLE_BAT(APINT_TYPE_PREFIX, 14659) +HANDLE_BAT(APINT_TYPE_PREFIX, 14660) +HANDLE_BAT(APINT_TYPE_PREFIX, 14661) +HANDLE_BAT(APINT_TYPE_PREFIX, 14662) +HANDLE_BAT(APINT_TYPE_PREFIX, 14663) +HANDLE_BAT(APINT_TYPE_PREFIX, 14664) +HANDLE_BAT(APINT_TYPE_PREFIX, 14665) +HANDLE_BAT(APINT_TYPE_PREFIX, 14666) +HANDLE_BAT(APINT_TYPE_PREFIX, 14667) +HANDLE_BAT(APINT_TYPE_PREFIX, 14668) +HANDLE_BAT(APINT_TYPE_PREFIX, 14669) +HANDLE_BAT(APINT_TYPE_PREFIX, 14670) +HANDLE_BAT(APINT_TYPE_PREFIX, 14671) +HANDLE_BAT(APINT_TYPE_PREFIX, 14672) +HANDLE_BAT(APINT_TYPE_PREFIX, 14673) +HANDLE_BAT(APINT_TYPE_PREFIX, 14674) +HANDLE_BAT(APINT_TYPE_PREFIX, 14675) +HANDLE_BAT(APINT_TYPE_PREFIX, 14676) +HANDLE_BAT(APINT_TYPE_PREFIX, 14677) +HANDLE_BAT(APINT_TYPE_PREFIX, 14678) +HANDLE_BAT(APINT_TYPE_PREFIX, 14679) +HANDLE_BAT(APINT_TYPE_PREFIX, 14680) +HANDLE_BAT(APINT_TYPE_PREFIX, 14681) +HANDLE_BAT(APINT_TYPE_PREFIX, 14682) +HANDLE_BAT(APINT_TYPE_PREFIX, 14683) +HANDLE_BAT(APINT_TYPE_PREFIX, 14684) +HANDLE_BAT(APINT_TYPE_PREFIX, 14685) +HANDLE_BAT(APINT_TYPE_PREFIX, 14686) +HANDLE_BAT(APINT_TYPE_PREFIX, 14687) +HANDLE_BAT(APINT_TYPE_PREFIX, 14688) +HANDLE_BAT(APINT_TYPE_PREFIX, 14689) +HANDLE_BAT(APINT_TYPE_PREFIX, 14690) +HANDLE_BAT(APINT_TYPE_PREFIX, 14691) +HANDLE_BAT(APINT_TYPE_PREFIX, 14692) +HANDLE_BAT(APINT_TYPE_PREFIX, 14693) +HANDLE_BAT(APINT_TYPE_PREFIX, 14694) +HANDLE_BAT(APINT_TYPE_PREFIX, 14695) +HANDLE_BAT(APINT_TYPE_PREFIX, 14696) +HANDLE_BAT(APINT_TYPE_PREFIX, 14697) +HANDLE_BAT(APINT_TYPE_PREFIX, 14698) +HANDLE_BAT(APINT_TYPE_PREFIX, 14699) +HANDLE_BAT(APINT_TYPE_PREFIX, 14700) +HANDLE_BAT(APINT_TYPE_PREFIX, 14701) +HANDLE_BAT(APINT_TYPE_PREFIX, 14702) +HANDLE_BAT(APINT_TYPE_PREFIX, 14703) +HANDLE_BAT(APINT_TYPE_PREFIX, 14704) +HANDLE_BAT(APINT_TYPE_PREFIX, 14705) +HANDLE_BAT(APINT_TYPE_PREFIX, 14706) +HANDLE_BAT(APINT_TYPE_PREFIX, 14707) +HANDLE_BAT(APINT_TYPE_PREFIX, 14708) +HANDLE_BAT(APINT_TYPE_PREFIX, 14709) +HANDLE_BAT(APINT_TYPE_PREFIX, 14710) +HANDLE_BAT(APINT_TYPE_PREFIX, 14711) +HANDLE_BAT(APINT_TYPE_PREFIX, 14712) +HANDLE_BAT(APINT_TYPE_PREFIX, 14713) +HANDLE_BAT(APINT_TYPE_PREFIX, 14714) +HANDLE_BAT(APINT_TYPE_PREFIX, 14715) +HANDLE_BAT(APINT_TYPE_PREFIX, 14716) +HANDLE_BAT(APINT_TYPE_PREFIX, 14717) +HANDLE_BAT(APINT_TYPE_PREFIX, 14718) +HANDLE_BAT(APINT_TYPE_PREFIX, 14719) +HANDLE_BAT(APINT_TYPE_PREFIX, 14720) +HANDLE_BAT(APINT_TYPE_PREFIX, 14721) +HANDLE_BAT(APINT_TYPE_PREFIX, 14722) +HANDLE_BAT(APINT_TYPE_PREFIX, 14723) +HANDLE_BAT(APINT_TYPE_PREFIX, 14724) +HANDLE_BAT(APINT_TYPE_PREFIX, 14725) +HANDLE_BAT(APINT_TYPE_PREFIX, 14726) +HANDLE_BAT(APINT_TYPE_PREFIX, 14727) +HANDLE_BAT(APINT_TYPE_PREFIX, 14728) +HANDLE_BAT(APINT_TYPE_PREFIX, 14729) +HANDLE_BAT(APINT_TYPE_PREFIX, 14730) +HANDLE_BAT(APINT_TYPE_PREFIX, 14731) +HANDLE_BAT(APINT_TYPE_PREFIX, 14732) +HANDLE_BAT(APINT_TYPE_PREFIX, 14733) +HANDLE_BAT(APINT_TYPE_PREFIX, 14734) +HANDLE_BAT(APINT_TYPE_PREFIX, 14735) +HANDLE_BAT(APINT_TYPE_PREFIX, 14736) +HANDLE_BAT(APINT_TYPE_PREFIX, 14737) +HANDLE_BAT(APINT_TYPE_PREFIX, 14738) +HANDLE_BAT(APINT_TYPE_PREFIX, 14739) +HANDLE_BAT(APINT_TYPE_PREFIX, 14740) +HANDLE_BAT(APINT_TYPE_PREFIX, 14741) +HANDLE_BAT(APINT_TYPE_PREFIX, 14742) +HANDLE_BAT(APINT_TYPE_PREFIX, 14743) +HANDLE_BAT(APINT_TYPE_PREFIX, 14744) +HANDLE_BAT(APINT_TYPE_PREFIX, 14745) +HANDLE_BAT(APINT_TYPE_PREFIX, 14746) +HANDLE_BAT(APINT_TYPE_PREFIX, 14747) +HANDLE_BAT(APINT_TYPE_PREFIX, 14748) +HANDLE_BAT(APINT_TYPE_PREFIX, 14749) +HANDLE_BAT(APINT_TYPE_PREFIX, 14750) +HANDLE_BAT(APINT_TYPE_PREFIX, 14751) +HANDLE_BAT(APINT_TYPE_PREFIX, 14752) +HANDLE_BAT(APINT_TYPE_PREFIX, 14753) +HANDLE_BAT(APINT_TYPE_PREFIX, 14754) +HANDLE_BAT(APINT_TYPE_PREFIX, 14755) +HANDLE_BAT(APINT_TYPE_PREFIX, 14756) +HANDLE_BAT(APINT_TYPE_PREFIX, 14757) +HANDLE_BAT(APINT_TYPE_PREFIX, 14758) +HANDLE_BAT(APINT_TYPE_PREFIX, 14759) +HANDLE_BAT(APINT_TYPE_PREFIX, 14760) +HANDLE_BAT(APINT_TYPE_PREFIX, 14761) +HANDLE_BAT(APINT_TYPE_PREFIX, 14762) +HANDLE_BAT(APINT_TYPE_PREFIX, 14763) +HANDLE_BAT(APINT_TYPE_PREFIX, 14764) +HANDLE_BAT(APINT_TYPE_PREFIX, 14765) +HANDLE_BAT(APINT_TYPE_PREFIX, 14766) +HANDLE_BAT(APINT_TYPE_PREFIX, 14767) +HANDLE_BAT(APINT_TYPE_PREFIX, 14768) +HANDLE_BAT(APINT_TYPE_PREFIX, 14769) +HANDLE_BAT(APINT_TYPE_PREFIX, 14770) +HANDLE_BAT(APINT_TYPE_PREFIX, 14771) +HANDLE_BAT(APINT_TYPE_PREFIX, 14772) +HANDLE_BAT(APINT_TYPE_PREFIX, 14773) +HANDLE_BAT(APINT_TYPE_PREFIX, 14774) +HANDLE_BAT(APINT_TYPE_PREFIX, 14775) +HANDLE_BAT(APINT_TYPE_PREFIX, 14776) +HANDLE_BAT(APINT_TYPE_PREFIX, 14777) +HANDLE_BAT(APINT_TYPE_PREFIX, 14778) +HANDLE_BAT(APINT_TYPE_PREFIX, 14779) +HANDLE_BAT(APINT_TYPE_PREFIX, 14780) +HANDLE_BAT(APINT_TYPE_PREFIX, 14781) +HANDLE_BAT(APINT_TYPE_PREFIX, 14782) +HANDLE_BAT(APINT_TYPE_PREFIX, 14783) +HANDLE_BAT(APINT_TYPE_PREFIX, 14784) +HANDLE_BAT(APINT_TYPE_PREFIX, 14785) +HANDLE_BAT(APINT_TYPE_PREFIX, 14786) +HANDLE_BAT(APINT_TYPE_PREFIX, 14787) +HANDLE_BAT(APINT_TYPE_PREFIX, 14788) +HANDLE_BAT(APINT_TYPE_PREFIX, 14789) +HANDLE_BAT(APINT_TYPE_PREFIX, 14790) +HANDLE_BAT(APINT_TYPE_PREFIX, 14791) +HANDLE_BAT(APINT_TYPE_PREFIX, 14792) +HANDLE_BAT(APINT_TYPE_PREFIX, 14793) +HANDLE_BAT(APINT_TYPE_PREFIX, 14794) +HANDLE_BAT(APINT_TYPE_PREFIX, 14795) +HANDLE_BAT(APINT_TYPE_PREFIX, 14796) +HANDLE_BAT(APINT_TYPE_PREFIX, 14797) +HANDLE_BAT(APINT_TYPE_PREFIX, 14798) +HANDLE_BAT(APINT_TYPE_PREFIX, 14799) +HANDLE_BAT(APINT_TYPE_PREFIX, 14800) +HANDLE_BAT(APINT_TYPE_PREFIX, 14801) +HANDLE_BAT(APINT_TYPE_PREFIX, 14802) +HANDLE_BAT(APINT_TYPE_PREFIX, 14803) +HANDLE_BAT(APINT_TYPE_PREFIX, 14804) +HANDLE_BAT(APINT_TYPE_PREFIX, 14805) +HANDLE_BAT(APINT_TYPE_PREFIX, 14806) +HANDLE_BAT(APINT_TYPE_PREFIX, 14807) +HANDLE_BAT(APINT_TYPE_PREFIX, 14808) +HANDLE_BAT(APINT_TYPE_PREFIX, 14809) +HANDLE_BAT(APINT_TYPE_PREFIX, 14810) +HANDLE_BAT(APINT_TYPE_PREFIX, 14811) +HANDLE_BAT(APINT_TYPE_PREFIX, 14812) +HANDLE_BAT(APINT_TYPE_PREFIX, 14813) +HANDLE_BAT(APINT_TYPE_PREFIX, 14814) +HANDLE_BAT(APINT_TYPE_PREFIX, 14815) +HANDLE_BAT(APINT_TYPE_PREFIX, 14816) +HANDLE_BAT(APINT_TYPE_PREFIX, 14817) +HANDLE_BAT(APINT_TYPE_PREFIX, 14818) +HANDLE_BAT(APINT_TYPE_PREFIX, 14819) +HANDLE_BAT(APINT_TYPE_PREFIX, 14820) +HANDLE_BAT(APINT_TYPE_PREFIX, 14821) +HANDLE_BAT(APINT_TYPE_PREFIX, 14822) +HANDLE_BAT(APINT_TYPE_PREFIX, 14823) +HANDLE_BAT(APINT_TYPE_PREFIX, 14824) +HANDLE_BAT(APINT_TYPE_PREFIX, 14825) +HANDLE_BAT(APINT_TYPE_PREFIX, 14826) +HANDLE_BAT(APINT_TYPE_PREFIX, 14827) +HANDLE_BAT(APINT_TYPE_PREFIX, 14828) +HANDLE_BAT(APINT_TYPE_PREFIX, 14829) +HANDLE_BAT(APINT_TYPE_PREFIX, 14830) +HANDLE_BAT(APINT_TYPE_PREFIX, 14831) +HANDLE_BAT(APINT_TYPE_PREFIX, 14832) +HANDLE_BAT(APINT_TYPE_PREFIX, 14833) +HANDLE_BAT(APINT_TYPE_PREFIX, 14834) +HANDLE_BAT(APINT_TYPE_PREFIX, 14835) +HANDLE_BAT(APINT_TYPE_PREFIX, 14836) +HANDLE_BAT(APINT_TYPE_PREFIX, 14837) +HANDLE_BAT(APINT_TYPE_PREFIX, 14838) +HANDLE_BAT(APINT_TYPE_PREFIX, 14839) +HANDLE_BAT(APINT_TYPE_PREFIX, 14840) +HANDLE_BAT(APINT_TYPE_PREFIX, 14841) +HANDLE_BAT(APINT_TYPE_PREFIX, 14842) +HANDLE_BAT(APINT_TYPE_PREFIX, 14843) +HANDLE_BAT(APINT_TYPE_PREFIX, 14844) +HANDLE_BAT(APINT_TYPE_PREFIX, 14845) +HANDLE_BAT(APINT_TYPE_PREFIX, 14846) +HANDLE_BAT(APINT_TYPE_PREFIX, 14847) +HANDLE_BAT(APINT_TYPE_PREFIX, 14848) +HANDLE_BAT(APINT_TYPE_PREFIX, 14849) +HANDLE_BAT(APINT_TYPE_PREFIX, 14850) +HANDLE_BAT(APINT_TYPE_PREFIX, 14851) +HANDLE_BAT(APINT_TYPE_PREFIX, 14852) +HANDLE_BAT(APINT_TYPE_PREFIX, 14853) +HANDLE_BAT(APINT_TYPE_PREFIX, 14854) +HANDLE_BAT(APINT_TYPE_PREFIX, 14855) +HANDLE_BAT(APINT_TYPE_PREFIX, 14856) +HANDLE_BAT(APINT_TYPE_PREFIX, 14857) +HANDLE_BAT(APINT_TYPE_PREFIX, 14858) +HANDLE_BAT(APINT_TYPE_PREFIX, 14859) +HANDLE_BAT(APINT_TYPE_PREFIX, 14860) +HANDLE_BAT(APINT_TYPE_PREFIX, 14861) +HANDLE_BAT(APINT_TYPE_PREFIX, 14862) +HANDLE_BAT(APINT_TYPE_PREFIX, 14863) +HANDLE_BAT(APINT_TYPE_PREFIX, 14864) +HANDLE_BAT(APINT_TYPE_PREFIX, 14865) +HANDLE_BAT(APINT_TYPE_PREFIX, 14866) +HANDLE_BAT(APINT_TYPE_PREFIX, 14867) +HANDLE_BAT(APINT_TYPE_PREFIX, 14868) +HANDLE_BAT(APINT_TYPE_PREFIX, 14869) +HANDLE_BAT(APINT_TYPE_PREFIX, 14870) +HANDLE_BAT(APINT_TYPE_PREFIX, 14871) +HANDLE_BAT(APINT_TYPE_PREFIX, 14872) +HANDLE_BAT(APINT_TYPE_PREFIX, 14873) +HANDLE_BAT(APINT_TYPE_PREFIX, 14874) +HANDLE_BAT(APINT_TYPE_PREFIX, 14875) +HANDLE_BAT(APINT_TYPE_PREFIX, 14876) +HANDLE_BAT(APINT_TYPE_PREFIX, 14877) +HANDLE_BAT(APINT_TYPE_PREFIX, 14878) +HANDLE_BAT(APINT_TYPE_PREFIX, 14879) +HANDLE_BAT(APINT_TYPE_PREFIX, 14880) +HANDLE_BAT(APINT_TYPE_PREFIX, 14881) +HANDLE_BAT(APINT_TYPE_PREFIX, 14882) +HANDLE_BAT(APINT_TYPE_PREFIX, 14883) +HANDLE_BAT(APINT_TYPE_PREFIX, 14884) +HANDLE_BAT(APINT_TYPE_PREFIX, 14885) +HANDLE_BAT(APINT_TYPE_PREFIX, 14886) +HANDLE_BAT(APINT_TYPE_PREFIX, 14887) +HANDLE_BAT(APINT_TYPE_PREFIX, 14888) +HANDLE_BAT(APINT_TYPE_PREFIX, 14889) +HANDLE_BAT(APINT_TYPE_PREFIX, 14890) +HANDLE_BAT(APINT_TYPE_PREFIX, 14891) +HANDLE_BAT(APINT_TYPE_PREFIX, 14892) +HANDLE_BAT(APINT_TYPE_PREFIX, 14893) +HANDLE_BAT(APINT_TYPE_PREFIX, 14894) +HANDLE_BAT(APINT_TYPE_PREFIX, 14895) +HANDLE_BAT(APINT_TYPE_PREFIX, 14896) +HANDLE_BAT(APINT_TYPE_PREFIX, 14897) +HANDLE_BAT(APINT_TYPE_PREFIX, 14898) +HANDLE_BAT(APINT_TYPE_PREFIX, 14899) +HANDLE_BAT(APINT_TYPE_PREFIX, 14900) +HANDLE_BAT(APINT_TYPE_PREFIX, 14901) +HANDLE_BAT(APINT_TYPE_PREFIX, 14902) +HANDLE_BAT(APINT_TYPE_PREFIX, 14903) +HANDLE_BAT(APINT_TYPE_PREFIX, 14904) +HANDLE_BAT(APINT_TYPE_PREFIX, 14905) +HANDLE_BAT(APINT_TYPE_PREFIX, 14906) +HANDLE_BAT(APINT_TYPE_PREFIX, 14907) +HANDLE_BAT(APINT_TYPE_PREFIX, 14908) +HANDLE_BAT(APINT_TYPE_PREFIX, 14909) +HANDLE_BAT(APINT_TYPE_PREFIX, 14910) +HANDLE_BAT(APINT_TYPE_PREFIX, 14911) +HANDLE_BAT(APINT_TYPE_PREFIX, 14912) +HANDLE_BAT(APINT_TYPE_PREFIX, 14913) +HANDLE_BAT(APINT_TYPE_PREFIX, 14914) +HANDLE_BAT(APINT_TYPE_PREFIX, 14915) +HANDLE_BAT(APINT_TYPE_PREFIX, 14916) +HANDLE_BAT(APINT_TYPE_PREFIX, 14917) +HANDLE_BAT(APINT_TYPE_PREFIX, 14918) +HANDLE_BAT(APINT_TYPE_PREFIX, 14919) +HANDLE_BAT(APINT_TYPE_PREFIX, 14920) +HANDLE_BAT(APINT_TYPE_PREFIX, 14921) +HANDLE_BAT(APINT_TYPE_PREFIX, 14922) +HANDLE_BAT(APINT_TYPE_PREFIX, 14923) +HANDLE_BAT(APINT_TYPE_PREFIX, 14924) +HANDLE_BAT(APINT_TYPE_PREFIX, 14925) +HANDLE_BAT(APINT_TYPE_PREFIX, 14926) +HANDLE_BAT(APINT_TYPE_PREFIX, 14927) +HANDLE_BAT(APINT_TYPE_PREFIX, 14928) +HANDLE_BAT(APINT_TYPE_PREFIX, 14929) +HANDLE_BAT(APINT_TYPE_PREFIX, 14930) +HANDLE_BAT(APINT_TYPE_PREFIX, 14931) +HANDLE_BAT(APINT_TYPE_PREFIX, 14932) +HANDLE_BAT(APINT_TYPE_PREFIX, 14933) +HANDLE_BAT(APINT_TYPE_PREFIX, 14934) +HANDLE_BAT(APINT_TYPE_PREFIX, 14935) +HANDLE_BAT(APINT_TYPE_PREFIX, 14936) +HANDLE_BAT(APINT_TYPE_PREFIX, 14937) +HANDLE_BAT(APINT_TYPE_PREFIX, 14938) +HANDLE_BAT(APINT_TYPE_PREFIX, 14939) +HANDLE_BAT(APINT_TYPE_PREFIX, 14940) +HANDLE_BAT(APINT_TYPE_PREFIX, 14941) +HANDLE_BAT(APINT_TYPE_PREFIX, 14942) +HANDLE_BAT(APINT_TYPE_PREFIX, 14943) +HANDLE_BAT(APINT_TYPE_PREFIX, 14944) +HANDLE_BAT(APINT_TYPE_PREFIX, 14945) +HANDLE_BAT(APINT_TYPE_PREFIX, 14946) +HANDLE_BAT(APINT_TYPE_PREFIX, 14947) +HANDLE_BAT(APINT_TYPE_PREFIX, 14948) +HANDLE_BAT(APINT_TYPE_PREFIX, 14949) +HANDLE_BAT(APINT_TYPE_PREFIX, 14950) +HANDLE_BAT(APINT_TYPE_PREFIX, 14951) +HANDLE_BAT(APINT_TYPE_PREFIX, 14952) +HANDLE_BAT(APINT_TYPE_PREFIX, 14953) +HANDLE_BAT(APINT_TYPE_PREFIX, 14954) +HANDLE_BAT(APINT_TYPE_PREFIX, 14955) +HANDLE_BAT(APINT_TYPE_PREFIX, 14956) +HANDLE_BAT(APINT_TYPE_PREFIX, 14957) +HANDLE_BAT(APINT_TYPE_PREFIX, 14958) +HANDLE_BAT(APINT_TYPE_PREFIX, 14959) +HANDLE_BAT(APINT_TYPE_PREFIX, 14960) +HANDLE_BAT(APINT_TYPE_PREFIX, 14961) +HANDLE_BAT(APINT_TYPE_PREFIX, 14962) +HANDLE_BAT(APINT_TYPE_PREFIX, 14963) +HANDLE_BAT(APINT_TYPE_PREFIX, 14964) +HANDLE_BAT(APINT_TYPE_PREFIX, 14965) +HANDLE_BAT(APINT_TYPE_PREFIX, 14966) +HANDLE_BAT(APINT_TYPE_PREFIX, 14967) +HANDLE_BAT(APINT_TYPE_PREFIX, 14968) +HANDLE_BAT(APINT_TYPE_PREFIX, 14969) +HANDLE_BAT(APINT_TYPE_PREFIX, 14970) +HANDLE_BAT(APINT_TYPE_PREFIX, 14971) +HANDLE_BAT(APINT_TYPE_PREFIX, 14972) +HANDLE_BAT(APINT_TYPE_PREFIX, 14973) +HANDLE_BAT(APINT_TYPE_PREFIX, 14974) +HANDLE_BAT(APINT_TYPE_PREFIX, 14975) +HANDLE_BAT(APINT_TYPE_PREFIX, 14976) +HANDLE_BAT(APINT_TYPE_PREFIX, 14977) +HANDLE_BAT(APINT_TYPE_PREFIX, 14978) +HANDLE_BAT(APINT_TYPE_PREFIX, 14979) +HANDLE_BAT(APINT_TYPE_PREFIX, 14980) +HANDLE_BAT(APINT_TYPE_PREFIX, 14981) +HANDLE_BAT(APINT_TYPE_PREFIX, 14982) +HANDLE_BAT(APINT_TYPE_PREFIX, 14983) +HANDLE_BAT(APINT_TYPE_PREFIX, 14984) +HANDLE_BAT(APINT_TYPE_PREFIX, 14985) +HANDLE_BAT(APINT_TYPE_PREFIX, 14986) +HANDLE_BAT(APINT_TYPE_PREFIX, 14987) +HANDLE_BAT(APINT_TYPE_PREFIX, 14988) +HANDLE_BAT(APINT_TYPE_PREFIX, 14989) +HANDLE_BAT(APINT_TYPE_PREFIX, 14990) +HANDLE_BAT(APINT_TYPE_PREFIX, 14991) +HANDLE_BAT(APINT_TYPE_PREFIX, 14992) +HANDLE_BAT(APINT_TYPE_PREFIX, 14993) +HANDLE_BAT(APINT_TYPE_PREFIX, 14994) +HANDLE_BAT(APINT_TYPE_PREFIX, 14995) +HANDLE_BAT(APINT_TYPE_PREFIX, 14996) +HANDLE_BAT(APINT_TYPE_PREFIX, 14997) +HANDLE_BAT(APINT_TYPE_PREFIX, 14998) +HANDLE_BAT(APINT_TYPE_PREFIX, 14999) +HANDLE_BAT(APINT_TYPE_PREFIX, 15000) +HANDLE_BAT(APINT_TYPE_PREFIX, 15001) +HANDLE_BAT(APINT_TYPE_PREFIX, 15002) +HANDLE_BAT(APINT_TYPE_PREFIX, 15003) +HANDLE_BAT(APINT_TYPE_PREFIX, 15004) +HANDLE_BAT(APINT_TYPE_PREFIX, 15005) +HANDLE_BAT(APINT_TYPE_PREFIX, 15006) +HANDLE_BAT(APINT_TYPE_PREFIX, 15007) +HANDLE_BAT(APINT_TYPE_PREFIX, 15008) +HANDLE_BAT(APINT_TYPE_PREFIX, 15009) +HANDLE_BAT(APINT_TYPE_PREFIX, 15010) +HANDLE_BAT(APINT_TYPE_PREFIX, 15011) +HANDLE_BAT(APINT_TYPE_PREFIX, 15012) +HANDLE_BAT(APINT_TYPE_PREFIX, 15013) +HANDLE_BAT(APINT_TYPE_PREFIX, 15014) +HANDLE_BAT(APINT_TYPE_PREFIX, 15015) +HANDLE_BAT(APINT_TYPE_PREFIX, 15016) +HANDLE_BAT(APINT_TYPE_PREFIX, 15017) +HANDLE_BAT(APINT_TYPE_PREFIX, 15018) +HANDLE_BAT(APINT_TYPE_PREFIX, 15019) +HANDLE_BAT(APINT_TYPE_PREFIX, 15020) +HANDLE_BAT(APINT_TYPE_PREFIX, 15021) +HANDLE_BAT(APINT_TYPE_PREFIX, 15022) +HANDLE_BAT(APINT_TYPE_PREFIX, 15023) +HANDLE_BAT(APINT_TYPE_PREFIX, 15024) +HANDLE_BAT(APINT_TYPE_PREFIX, 15025) +HANDLE_BAT(APINT_TYPE_PREFIX, 15026) +HANDLE_BAT(APINT_TYPE_PREFIX, 15027) +HANDLE_BAT(APINT_TYPE_PREFIX, 15028) +HANDLE_BAT(APINT_TYPE_PREFIX, 15029) +HANDLE_BAT(APINT_TYPE_PREFIX, 15030) +HANDLE_BAT(APINT_TYPE_PREFIX, 15031) +HANDLE_BAT(APINT_TYPE_PREFIX, 15032) +HANDLE_BAT(APINT_TYPE_PREFIX, 15033) +HANDLE_BAT(APINT_TYPE_PREFIX, 15034) +HANDLE_BAT(APINT_TYPE_PREFIX, 15035) +HANDLE_BAT(APINT_TYPE_PREFIX, 15036) +HANDLE_BAT(APINT_TYPE_PREFIX, 15037) +HANDLE_BAT(APINT_TYPE_PREFIX, 15038) +HANDLE_BAT(APINT_TYPE_PREFIX, 15039) +HANDLE_BAT(APINT_TYPE_PREFIX, 15040) +HANDLE_BAT(APINT_TYPE_PREFIX, 15041) +HANDLE_BAT(APINT_TYPE_PREFIX, 15042) +HANDLE_BAT(APINT_TYPE_PREFIX, 15043) +HANDLE_BAT(APINT_TYPE_PREFIX, 15044) +HANDLE_BAT(APINT_TYPE_PREFIX, 15045) +HANDLE_BAT(APINT_TYPE_PREFIX, 15046) +HANDLE_BAT(APINT_TYPE_PREFIX, 15047) +HANDLE_BAT(APINT_TYPE_PREFIX, 15048) +HANDLE_BAT(APINT_TYPE_PREFIX, 15049) +HANDLE_BAT(APINT_TYPE_PREFIX, 15050) +HANDLE_BAT(APINT_TYPE_PREFIX, 15051) +HANDLE_BAT(APINT_TYPE_PREFIX, 15052) +HANDLE_BAT(APINT_TYPE_PREFIX, 15053) +HANDLE_BAT(APINT_TYPE_PREFIX, 15054) +HANDLE_BAT(APINT_TYPE_PREFIX, 15055) +HANDLE_BAT(APINT_TYPE_PREFIX, 15056) +HANDLE_BAT(APINT_TYPE_PREFIX, 15057) +HANDLE_BAT(APINT_TYPE_PREFIX, 15058) +HANDLE_BAT(APINT_TYPE_PREFIX, 15059) +HANDLE_BAT(APINT_TYPE_PREFIX, 15060) +HANDLE_BAT(APINT_TYPE_PREFIX, 15061) +HANDLE_BAT(APINT_TYPE_PREFIX, 15062) +HANDLE_BAT(APINT_TYPE_PREFIX, 15063) +HANDLE_BAT(APINT_TYPE_PREFIX, 15064) +HANDLE_BAT(APINT_TYPE_PREFIX, 15065) +HANDLE_BAT(APINT_TYPE_PREFIX, 15066) +HANDLE_BAT(APINT_TYPE_PREFIX, 15067) +HANDLE_BAT(APINT_TYPE_PREFIX, 15068) +HANDLE_BAT(APINT_TYPE_PREFIX, 15069) +HANDLE_BAT(APINT_TYPE_PREFIX, 15070) +HANDLE_BAT(APINT_TYPE_PREFIX, 15071) +HANDLE_BAT(APINT_TYPE_PREFIX, 15072) +HANDLE_BAT(APINT_TYPE_PREFIX, 15073) +HANDLE_BAT(APINT_TYPE_PREFIX, 15074) +HANDLE_BAT(APINT_TYPE_PREFIX, 15075) +HANDLE_BAT(APINT_TYPE_PREFIX, 15076) +HANDLE_BAT(APINT_TYPE_PREFIX, 15077) +HANDLE_BAT(APINT_TYPE_PREFIX, 15078) +HANDLE_BAT(APINT_TYPE_PREFIX, 15079) +HANDLE_BAT(APINT_TYPE_PREFIX, 15080) +HANDLE_BAT(APINT_TYPE_PREFIX, 15081) +HANDLE_BAT(APINT_TYPE_PREFIX, 15082) +HANDLE_BAT(APINT_TYPE_PREFIX, 15083) +HANDLE_BAT(APINT_TYPE_PREFIX, 15084) +HANDLE_BAT(APINT_TYPE_PREFIX, 15085) +HANDLE_BAT(APINT_TYPE_PREFIX, 15086) +HANDLE_BAT(APINT_TYPE_PREFIX, 15087) +HANDLE_BAT(APINT_TYPE_PREFIX, 15088) +HANDLE_BAT(APINT_TYPE_PREFIX, 15089) +HANDLE_BAT(APINT_TYPE_PREFIX, 15090) +HANDLE_BAT(APINT_TYPE_PREFIX, 15091) +HANDLE_BAT(APINT_TYPE_PREFIX, 15092) +HANDLE_BAT(APINT_TYPE_PREFIX, 15093) +HANDLE_BAT(APINT_TYPE_PREFIX, 15094) +HANDLE_BAT(APINT_TYPE_PREFIX, 15095) +HANDLE_BAT(APINT_TYPE_PREFIX, 15096) +HANDLE_BAT(APINT_TYPE_PREFIX, 15097) +HANDLE_BAT(APINT_TYPE_PREFIX, 15098) +HANDLE_BAT(APINT_TYPE_PREFIX, 15099) +HANDLE_BAT(APINT_TYPE_PREFIX, 15100) +HANDLE_BAT(APINT_TYPE_PREFIX, 15101) +HANDLE_BAT(APINT_TYPE_PREFIX, 15102) +HANDLE_BAT(APINT_TYPE_PREFIX, 15103) +HANDLE_BAT(APINT_TYPE_PREFIX, 15104) +HANDLE_BAT(APINT_TYPE_PREFIX, 15105) +HANDLE_BAT(APINT_TYPE_PREFIX, 15106) +HANDLE_BAT(APINT_TYPE_PREFIX, 15107) +HANDLE_BAT(APINT_TYPE_PREFIX, 15108) +HANDLE_BAT(APINT_TYPE_PREFIX, 15109) +HANDLE_BAT(APINT_TYPE_PREFIX, 15110) +HANDLE_BAT(APINT_TYPE_PREFIX, 15111) +HANDLE_BAT(APINT_TYPE_PREFIX, 15112) +HANDLE_BAT(APINT_TYPE_PREFIX, 15113) +HANDLE_BAT(APINT_TYPE_PREFIX, 15114) +HANDLE_BAT(APINT_TYPE_PREFIX, 15115) +HANDLE_BAT(APINT_TYPE_PREFIX, 15116) +HANDLE_BAT(APINT_TYPE_PREFIX, 15117) +HANDLE_BAT(APINT_TYPE_PREFIX, 15118) +HANDLE_BAT(APINT_TYPE_PREFIX, 15119) +HANDLE_BAT(APINT_TYPE_PREFIX, 15120) +HANDLE_BAT(APINT_TYPE_PREFIX, 15121) +HANDLE_BAT(APINT_TYPE_PREFIX, 15122) +HANDLE_BAT(APINT_TYPE_PREFIX, 15123) +HANDLE_BAT(APINT_TYPE_PREFIX, 15124) +HANDLE_BAT(APINT_TYPE_PREFIX, 15125) +HANDLE_BAT(APINT_TYPE_PREFIX, 15126) +HANDLE_BAT(APINT_TYPE_PREFIX, 15127) +HANDLE_BAT(APINT_TYPE_PREFIX, 15128) +HANDLE_BAT(APINT_TYPE_PREFIX, 15129) +HANDLE_BAT(APINT_TYPE_PREFIX, 15130) +HANDLE_BAT(APINT_TYPE_PREFIX, 15131) +HANDLE_BAT(APINT_TYPE_PREFIX, 15132) +HANDLE_BAT(APINT_TYPE_PREFIX, 15133) +HANDLE_BAT(APINT_TYPE_PREFIX, 15134) +HANDLE_BAT(APINT_TYPE_PREFIX, 15135) +HANDLE_BAT(APINT_TYPE_PREFIX, 15136) +HANDLE_BAT(APINT_TYPE_PREFIX, 15137) +HANDLE_BAT(APINT_TYPE_PREFIX, 15138) +HANDLE_BAT(APINT_TYPE_PREFIX, 15139) +HANDLE_BAT(APINT_TYPE_PREFIX, 15140) +HANDLE_BAT(APINT_TYPE_PREFIX, 15141) +HANDLE_BAT(APINT_TYPE_PREFIX, 15142) +HANDLE_BAT(APINT_TYPE_PREFIX, 15143) +HANDLE_BAT(APINT_TYPE_PREFIX, 15144) +HANDLE_BAT(APINT_TYPE_PREFIX, 15145) +HANDLE_BAT(APINT_TYPE_PREFIX, 15146) +HANDLE_BAT(APINT_TYPE_PREFIX, 15147) +HANDLE_BAT(APINT_TYPE_PREFIX, 15148) +HANDLE_BAT(APINT_TYPE_PREFIX, 15149) +HANDLE_BAT(APINT_TYPE_PREFIX, 15150) +HANDLE_BAT(APINT_TYPE_PREFIX, 15151) +HANDLE_BAT(APINT_TYPE_PREFIX, 15152) +HANDLE_BAT(APINT_TYPE_PREFIX, 15153) +HANDLE_BAT(APINT_TYPE_PREFIX, 15154) +HANDLE_BAT(APINT_TYPE_PREFIX, 15155) +HANDLE_BAT(APINT_TYPE_PREFIX, 15156) +HANDLE_BAT(APINT_TYPE_PREFIX, 15157) +HANDLE_BAT(APINT_TYPE_PREFIX, 15158) +HANDLE_BAT(APINT_TYPE_PREFIX, 15159) +HANDLE_BAT(APINT_TYPE_PREFIX, 15160) +HANDLE_BAT(APINT_TYPE_PREFIX, 15161) +HANDLE_BAT(APINT_TYPE_PREFIX, 15162) +HANDLE_BAT(APINT_TYPE_PREFIX, 15163) +HANDLE_BAT(APINT_TYPE_PREFIX, 15164) +HANDLE_BAT(APINT_TYPE_PREFIX, 15165) +HANDLE_BAT(APINT_TYPE_PREFIX, 15166) +HANDLE_BAT(APINT_TYPE_PREFIX, 15167) +HANDLE_BAT(APINT_TYPE_PREFIX, 15168) +HANDLE_BAT(APINT_TYPE_PREFIX, 15169) +HANDLE_BAT(APINT_TYPE_PREFIX, 15170) +HANDLE_BAT(APINT_TYPE_PREFIX, 15171) +HANDLE_BAT(APINT_TYPE_PREFIX, 15172) +HANDLE_BAT(APINT_TYPE_PREFIX, 15173) +HANDLE_BAT(APINT_TYPE_PREFIX, 15174) +HANDLE_BAT(APINT_TYPE_PREFIX, 15175) +HANDLE_BAT(APINT_TYPE_PREFIX, 15176) +HANDLE_BAT(APINT_TYPE_PREFIX, 15177) +HANDLE_BAT(APINT_TYPE_PREFIX, 15178) +HANDLE_BAT(APINT_TYPE_PREFIX, 15179) +HANDLE_BAT(APINT_TYPE_PREFIX, 15180) +HANDLE_BAT(APINT_TYPE_PREFIX, 15181) +HANDLE_BAT(APINT_TYPE_PREFIX, 15182) +HANDLE_BAT(APINT_TYPE_PREFIX, 15183) +HANDLE_BAT(APINT_TYPE_PREFIX, 15184) +HANDLE_BAT(APINT_TYPE_PREFIX, 15185) +HANDLE_BAT(APINT_TYPE_PREFIX, 15186) +HANDLE_BAT(APINT_TYPE_PREFIX, 15187) +HANDLE_BAT(APINT_TYPE_PREFIX, 15188) +HANDLE_BAT(APINT_TYPE_PREFIX, 15189) +HANDLE_BAT(APINT_TYPE_PREFIX, 15190) +HANDLE_BAT(APINT_TYPE_PREFIX, 15191) +HANDLE_BAT(APINT_TYPE_PREFIX, 15192) +HANDLE_BAT(APINT_TYPE_PREFIX, 15193) +HANDLE_BAT(APINT_TYPE_PREFIX, 15194) +HANDLE_BAT(APINT_TYPE_PREFIX, 15195) +HANDLE_BAT(APINT_TYPE_PREFIX, 15196) +HANDLE_BAT(APINT_TYPE_PREFIX, 15197) +HANDLE_BAT(APINT_TYPE_PREFIX, 15198) +HANDLE_BAT(APINT_TYPE_PREFIX, 15199) +HANDLE_BAT(APINT_TYPE_PREFIX, 15200) +HANDLE_BAT(APINT_TYPE_PREFIX, 15201) +HANDLE_BAT(APINT_TYPE_PREFIX, 15202) +HANDLE_BAT(APINT_TYPE_PREFIX, 15203) +HANDLE_BAT(APINT_TYPE_PREFIX, 15204) +HANDLE_BAT(APINT_TYPE_PREFIX, 15205) +HANDLE_BAT(APINT_TYPE_PREFIX, 15206) +HANDLE_BAT(APINT_TYPE_PREFIX, 15207) +HANDLE_BAT(APINT_TYPE_PREFIX, 15208) +HANDLE_BAT(APINT_TYPE_PREFIX, 15209) +HANDLE_BAT(APINT_TYPE_PREFIX, 15210) +HANDLE_BAT(APINT_TYPE_PREFIX, 15211) +HANDLE_BAT(APINT_TYPE_PREFIX, 15212) +HANDLE_BAT(APINT_TYPE_PREFIX, 15213) +HANDLE_BAT(APINT_TYPE_PREFIX, 15214) +HANDLE_BAT(APINT_TYPE_PREFIX, 15215) +HANDLE_BAT(APINT_TYPE_PREFIX, 15216) +HANDLE_BAT(APINT_TYPE_PREFIX, 15217) +HANDLE_BAT(APINT_TYPE_PREFIX, 15218) +HANDLE_BAT(APINT_TYPE_PREFIX, 15219) +HANDLE_BAT(APINT_TYPE_PREFIX, 15220) +HANDLE_BAT(APINT_TYPE_PREFIX, 15221) +HANDLE_BAT(APINT_TYPE_PREFIX, 15222) +HANDLE_BAT(APINT_TYPE_PREFIX, 15223) +HANDLE_BAT(APINT_TYPE_PREFIX, 15224) +HANDLE_BAT(APINT_TYPE_PREFIX, 15225) +HANDLE_BAT(APINT_TYPE_PREFIX, 15226) +HANDLE_BAT(APINT_TYPE_PREFIX, 15227) +HANDLE_BAT(APINT_TYPE_PREFIX, 15228) +HANDLE_BAT(APINT_TYPE_PREFIX, 15229) +HANDLE_BAT(APINT_TYPE_PREFIX, 15230) +HANDLE_BAT(APINT_TYPE_PREFIX, 15231) +HANDLE_BAT(APINT_TYPE_PREFIX, 15232) +HANDLE_BAT(APINT_TYPE_PREFIX, 15233) +HANDLE_BAT(APINT_TYPE_PREFIX, 15234) +HANDLE_BAT(APINT_TYPE_PREFIX, 15235) +HANDLE_BAT(APINT_TYPE_PREFIX, 15236) +HANDLE_BAT(APINT_TYPE_PREFIX, 15237) +HANDLE_BAT(APINT_TYPE_PREFIX, 15238) +HANDLE_BAT(APINT_TYPE_PREFIX, 15239) +HANDLE_BAT(APINT_TYPE_PREFIX, 15240) +HANDLE_BAT(APINT_TYPE_PREFIX, 15241) +HANDLE_BAT(APINT_TYPE_PREFIX, 15242) +HANDLE_BAT(APINT_TYPE_PREFIX, 15243) +HANDLE_BAT(APINT_TYPE_PREFIX, 15244) +HANDLE_BAT(APINT_TYPE_PREFIX, 15245) +HANDLE_BAT(APINT_TYPE_PREFIX, 15246) +HANDLE_BAT(APINT_TYPE_PREFIX, 15247) +HANDLE_BAT(APINT_TYPE_PREFIX, 15248) +HANDLE_BAT(APINT_TYPE_PREFIX, 15249) +HANDLE_BAT(APINT_TYPE_PREFIX, 15250) +HANDLE_BAT(APINT_TYPE_PREFIX, 15251) +HANDLE_BAT(APINT_TYPE_PREFIX, 15252) +HANDLE_BAT(APINT_TYPE_PREFIX, 15253) +HANDLE_BAT(APINT_TYPE_PREFIX, 15254) +HANDLE_BAT(APINT_TYPE_PREFIX, 15255) +HANDLE_BAT(APINT_TYPE_PREFIX, 15256) +HANDLE_BAT(APINT_TYPE_PREFIX, 15257) +HANDLE_BAT(APINT_TYPE_PREFIX, 15258) +HANDLE_BAT(APINT_TYPE_PREFIX, 15259) +HANDLE_BAT(APINT_TYPE_PREFIX, 15260) +HANDLE_BAT(APINT_TYPE_PREFIX, 15261) +HANDLE_BAT(APINT_TYPE_PREFIX, 15262) +HANDLE_BAT(APINT_TYPE_PREFIX, 15263) +HANDLE_BAT(APINT_TYPE_PREFIX, 15264) +HANDLE_BAT(APINT_TYPE_PREFIX, 15265) +HANDLE_BAT(APINT_TYPE_PREFIX, 15266) +HANDLE_BAT(APINT_TYPE_PREFIX, 15267) +HANDLE_BAT(APINT_TYPE_PREFIX, 15268) +HANDLE_BAT(APINT_TYPE_PREFIX, 15269) +HANDLE_BAT(APINT_TYPE_PREFIX, 15270) +HANDLE_BAT(APINT_TYPE_PREFIX, 15271) +HANDLE_BAT(APINT_TYPE_PREFIX, 15272) +HANDLE_BAT(APINT_TYPE_PREFIX, 15273) +HANDLE_BAT(APINT_TYPE_PREFIX, 15274) +HANDLE_BAT(APINT_TYPE_PREFIX, 15275) +HANDLE_BAT(APINT_TYPE_PREFIX, 15276) +HANDLE_BAT(APINT_TYPE_PREFIX, 15277) +HANDLE_BAT(APINT_TYPE_PREFIX, 15278) +HANDLE_BAT(APINT_TYPE_PREFIX, 15279) +HANDLE_BAT(APINT_TYPE_PREFIX, 15280) +HANDLE_BAT(APINT_TYPE_PREFIX, 15281) +HANDLE_BAT(APINT_TYPE_PREFIX, 15282) +HANDLE_BAT(APINT_TYPE_PREFIX, 15283) +HANDLE_BAT(APINT_TYPE_PREFIX, 15284) +HANDLE_BAT(APINT_TYPE_PREFIX, 15285) +HANDLE_BAT(APINT_TYPE_PREFIX, 15286) +HANDLE_BAT(APINT_TYPE_PREFIX, 15287) +HANDLE_BAT(APINT_TYPE_PREFIX, 15288) +HANDLE_BAT(APINT_TYPE_PREFIX, 15289) +HANDLE_BAT(APINT_TYPE_PREFIX, 15290) +HANDLE_BAT(APINT_TYPE_PREFIX, 15291) +HANDLE_BAT(APINT_TYPE_PREFIX, 15292) +HANDLE_BAT(APINT_TYPE_PREFIX, 15293) +HANDLE_BAT(APINT_TYPE_PREFIX, 15294) +HANDLE_BAT(APINT_TYPE_PREFIX, 15295) +HANDLE_BAT(APINT_TYPE_PREFIX, 15296) +HANDLE_BAT(APINT_TYPE_PREFIX, 15297) +HANDLE_BAT(APINT_TYPE_PREFIX, 15298) +HANDLE_BAT(APINT_TYPE_PREFIX, 15299) +HANDLE_BAT(APINT_TYPE_PREFIX, 15300) +HANDLE_BAT(APINT_TYPE_PREFIX, 15301) +HANDLE_BAT(APINT_TYPE_PREFIX, 15302) +HANDLE_BAT(APINT_TYPE_PREFIX, 15303) +HANDLE_BAT(APINT_TYPE_PREFIX, 15304) +HANDLE_BAT(APINT_TYPE_PREFIX, 15305) +HANDLE_BAT(APINT_TYPE_PREFIX, 15306) +HANDLE_BAT(APINT_TYPE_PREFIX, 15307) +HANDLE_BAT(APINT_TYPE_PREFIX, 15308) +HANDLE_BAT(APINT_TYPE_PREFIX, 15309) +HANDLE_BAT(APINT_TYPE_PREFIX, 15310) +HANDLE_BAT(APINT_TYPE_PREFIX, 15311) +HANDLE_BAT(APINT_TYPE_PREFIX, 15312) +HANDLE_BAT(APINT_TYPE_PREFIX, 15313) +HANDLE_BAT(APINT_TYPE_PREFIX, 15314) +HANDLE_BAT(APINT_TYPE_PREFIX, 15315) +HANDLE_BAT(APINT_TYPE_PREFIX, 15316) +HANDLE_BAT(APINT_TYPE_PREFIX, 15317) +HANDLE_BAT(APINT_TYPE_PREFIX, 15318) +HANDLE_BAT(APINT_TYPE_PREFIX, 15319) +HANDLE_BAT(APINT_TYPE_PREFIX, 15320) +HANDLE_BAT(APINT_TYPE_PREFIX, 15321) +HANDLE_BAT(APINT_TYPE_PREFIX, 15322) +HANDLE_BAT(APINT_TYPE_PREFIX, 15323) +HANDLE_BAT(APINT_TYPE_PREFIX, 15324) +HANDLE_BAT(APINT_TYPE_PREFIX, 15325) +HANDLE_BAT(APINT_TYPE_PREFIX, 15326) +HANDLE_BAT(APINT_TYPE_PREFIX, 15327) +HANDLE_BAT(APINT_TYPE_PREFIX, 15328) +HANDLE_BAT(APINT_TYPE_PREFIX, 15329) +HANDLE_BAT(APINT_TYPE_PREFIX, 15330) +HANDLE_BAT(APINT_TYPE_PREFIX, 15331) +HANDLE_BAT(APINT_TYPE_PREFIX, 15332) +HANDLE_BAT(APINT_TYPE_PREFIX, 15333) +HANDLE_BAT(APINT_TYPE_PREFIX, 15334) +HANDLE_BAT(APINT_TYPE_PREFIX, 15335) +HANDLE_BAT(APINT_TYPE_PREFIX, 15336) +HANDLE_BAT(APINT_TYPE_PREFIX, 15337) +HANDLE_BAT(APINT_TYPE_PREFIX, 15338) +HANDLE_BAT(APINT_TYPE_PREFIX, 15339) +HANDLE_BAT(APINT_TYPE_PREFIX, 15340) +HANDLE_BAT(APINT_TYPE_PREFIX, 15341) +HANDLE_BAT(APINT_TYPE_PREFIX, 15342) +HANDLE_BAT(APINT_TYPE_PREFIX, 15343) +HANDLE_BAT(APINT_TYPE_PREFIX, 15344) +HANDLE_BAT(APINT_TYPE_PREFIX, 15345) +HANDLE_BAT(APINT_TYPE_PREFIX, 15346) +HANDLE_BAT(APINT_TYPE_PREFIX, 15347) +HANDLE_BAT(APINT_TYPE_PREFIX, 15348) +HANDLE_BAT(APINT_TYPE_PREFIX, 15349) +HANDLE_BAT(APINT_TYPE_PREFIX, 15350) +HANDLE_BAT(APINT_TYPE_PREFIX, 15351) +HANDLE_BAT(APINT_TYPE_PREFIX, 15352) +HANDLE_BAT(APINT_TYPE_PREFIX, 15353) +HANDLE_BAT(APINT_TYPE_PREFIX, 15354) +HANDLE_BAT(APINT_TYPE_PREFIX, 15355) +HANDLE_BAT(APINT_TYPE_PREFIX, 15356) +HANDLE_BAT(APINT_TYPE_PREFIX, 15357) +HANDLE_BAT(APINT_TYPE_PREFIX, 15358) +HANDLE_BAT(APINT_TYPE_PREFIX, 15359) +HANDLE_BAT(APINT_TYPE_PREFIX, 15360) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 15 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 15361) +HANDLE_BAT(, 15362) +HANDLE_BAT(, 15363) +HANDLE_BAT(, 15364) +HANDLE_BAT(, 15365) +HANDLE_BAT(, 15366) +HANDLE_BAT(, 15367) +HANDLE_BAT(, 15368) +HANDLE_BAT(, 15369) +HANDLE_BAT(, 15370) +HANDLE_BAT(, 15371) +HANDLE_BAT(, 15372) +HANDLE_BAT(, 15373) +HANDLE_BAT(, 15374) +HANDLE_BAT(, 15375) +HANDLE_BAT(, 15376) +HANDLE_BAT(, 15377) +HANDLE_BAT(, 15378) +HANDLE_BAT(, 15379) +HANDLE_BAT(, 15380) +HANDLE_BAT(, 15381) +HANDLE_BAT(, 15382) +HANDLE_BAT(, 15383) +HANDLE_BAT(, 15384) +HANDLE_BAT(, 15385) +HANDLE_BAT(, 15386) +HANDLE_BAT(, 15387) +HANDLE_BAT(, 15388) +HANDLE_BAT(, 15389) +HANDLE_BAT(, 15390) +HANDLE_BAT(, 15391) +HANDLE_BAT(, 15392) +HANDLE_BAT(, 15393) +HANDLE_BAT(, 15394) +HANDLE_BAT(, 15395) +HANDLE_BAT(, 15396) +HANDLE_BAT(, 15397) +HANDLE_BAT(, 15398) +HANDLE_BAT(, 15399) +HANDLE_BAT(, 15400) +HANDLE_BAT(, 15401) +HANDLE_BAT(, 15402) +HANDLE_BAT(, 15403) +HANDLE_BAT(, 15404) +HANDLE_BAT(, 15405) +HANDLE_BAT(, 15406) +HANDLE_BAT(, 15407) +HANDLE_BAT(, 15408) +HANDLE_BAT(, 15409) +HANDLE_BAT(, 15410) +HANDLE_BAT(, 15411) +HANDLE_BAT(, 15412) +HANDLE_BAT(, 15413) +HANDLE_BAT(, 15414) +HANDLE_BAT(, 15415) +HANDLE_BAT(, 15416) +HANDLE_BAT(, 15417) +HANDLE_BAT(, 15418) +HANDLE_BAT(, 15419) +HANDLE_BAT(, 15420) +HANDLE_BAT(, 15421) +HANDLE_BAT(, 15422) +HANDLE_BAT(, 15423) +HANDLE_BAT(, 15424) +HANDLE_BAT(, 15425) +HANDLE_BAT(, 15426) +HANDLE_BAT(, 15427) +HANDLE_BAT(, 15428) +HANDLE_BAT(, 15429) +HANDLE_BAT(, 15430) +HANDLE_BAT(, 15431) +HANDLE_BAT(, 15432) +HANDLE_BAT(, 15433) +HANDLE_BAT(, 15434) +HANDLE_BAT(, 15435) +HANDLE_BAT(, 15436) +HANDLE_BAT(, 15437) +HANDLE_BAT(, 15438) +HANDLE_BAT(, 15439) +HANDLE_BAT(, 15440) +HANDLE_BAT(, 15441) +HANDLE_BAT(, 15442) +HANDLE_BAT(, 15443) +HANDLE_BAT(, 15444) +HANDLE_BAT(, 15445) +HANDLE_BAT(, 15446) +HANDLE_BAT(, 15447) +HANDLE_BAT(, 15448) +HANDLE_BAT(, 15449) +HANDLE_BAT(, 15450) +HANDLE_BAT(, 15451) +HANDLE_BAT(, 15452) +HANDLE_BAT(, 15453) +HANDLE_BAT(, 15454) +HANDLE_BAT(, 15455) +HANDLE_BAT(, 15456) +HANDLE_BAT(, 15457) +HANDLE_BAT(, 15458) +HANDLE_BAT(, 15459) +HANDLE_BAT(, 15460) +HANDLE_BAT(, 15461) +HANDLE_BAT(, 15462) +HANDLE_BAT(, 15463) +HANDLE_BAT(, 15464) +HANDLE_BAT(, 15465) +HANDLE_BAT(, 15466) +HANDLE_BAT(, 15467) +HANDLE_BAT(, 15468) +HANDLE_BAT(, 15469) +HANDLE_BAT(, 15470) +HANDLE_BAT(, 15471) +HANDLE_BAT(, 15472) +HANDLE_BAT(, 15473) +HANDLE_BAT(, 15474) +HANDLE_BAT(, 15475) +HANDLE_BAT(, 15476) +HANDLE_BAT(, 15477) +HANDLE_BAT(, 15478) +HANDLE_BAT(, 15479) +HANDLE_BAT(, 15480) +HANDLE_BAT(, 15481) +HANDLE_BAT(, 15482) +HANDLE_BAT(, 15483) +HANDLE_BAT(, 15484) +HANDLE_BAT(, 15485) +HANDLE_BAT(, 15486) +HANDLE_BAT(, 15487) +HANDLE_BAT(, 15488) +HANDLE_BAT(, 15489) +HANDLE_BAT(, 15490) +HANDLE_BAT(, 15491) +HANDLE_BAT(, 15492) +HANDLE_BAT(, 15493) +HANDLE_BAT(, 15494) +HANDLE_BAT(, 15495) +HANDLE_BAT(, 15496) +HANDLE_BAT(, 15497) +HANDLE_BAT(, 15498) +HANDLE_BAT(, 15499) +HANDLE_BAT(, 15500) +HANDLE_BAT(, 15501) +HANDLE_BAT(, 15502) +HANDLE_BAT(, 15503) +HANDLE_BAT(, 15504) +HANDLE_BAT(, 15505) +HANDLE_BAT(, 15506) +HANDLE_BAT(, 15507) +HANDLE_BAT(, 15508) +HANDLE_BAT(, 15509) +HANDLE_BAT(, 15510) +HANDLE_BAT(, 15511) +HANDLE_BAT(, 15512) +HANDLE_BAT(, 15513) +HANDLE_BAT(, 15514) +HANDLE_BAT(, 15515) +HANDLE_BAT(, 15516) +HANDLE_BAT(, 15517) +HANDLE_BAT(, 15518) +HANDLE_BAT(, 15519) +HANDLE_BAT(, 15520) +HANDLE_BAT(, 15521) +HANDLE_BAT(, 15522) +HANDLE_BAT(, 15523) +HANDLE_BAT(, 15524) +HANDLE_BAT(, 15525) +HANDLE_BAT(, 15526) +HANDLE_BAT(, 15527) +HANDLE_BAT(, 15528) +HANDLE_BAT(, 15529) +HANDLE_BAT(, 15530) +HANDLE_BAT(, 15531) +HANDLE_BAT(, 15532) +HANDLE_BAT(, 15533) +HANDLE_BAT(, 15534) +HANDLE_BAT(, 15535) +HANDLE_BAT(, 15536) +HANDLE_BAT(, 15537) +HANDLE_BAT(, 15538) +HANDLE_BAT(, 15539) +HANDLE_BAT(, 15540) +HANDLE_BAT(, 15541) +HANDLE_BAT(, 15542) +HANDLE_BAT(, 15543) +HANDLE_BAT(, 15544) +HANDLE_BAT(, 15545) +HANDLE_BAT(, 15546) +HANDLE_BAT(, 15547) +HANDLE_BAT(, 15548) +HANDLE_BAT(, 15549) +HANDLE_BAT(, 15550) +HANDLE_BAT(, 15551) +HANDLE_BAT(, 15552) +HANDLE_BAT(, 15553) +HANDLE_BAT(, 15554) +HANDLE_BAT(, 15555) +HANDLE_BAT(, 15556) +HANDLE_BAT(, 15557) +HANDLE_BAT(, 15558) +HANDLE_BAT(, 15559) +HANDLE_BAT(, 15560) +HANDLE_BAT(, 15561) +HANDLE_BAT(, 15562) +HANDLE_BAT(, 15563) +HANDLE_BAT(, 15564) +HANDLE_BAT(, 15565) +HANDLE_BAT(, 15566) +HANDLE_BAT(, 15567) +HANDLE_BAT(, 15568) +HANDLE_BAT(, 15569) +HANDLE_BAT(, 15570) +HANDLE_BAT(, 15571) +HANDLE_BAT(, 15572) +HANDLE_BAT(, 15573) +HANDLE_BAT(, 15574) +HANDLE_BAT(, 15575) +HANDLE_BAT(, 15576) +HANDLE_BAT(, 15577) +HANDLE_BAT(, 15578) +HANDLE_BAT(, 15579) +HANDLE_BAT(, 15580) +HANDLE_BAT(, 15581) +HANDLE_BAT(, 15582) +HANDLE_BAT(, 15583) +HANDLE_BAT(, 15584) +HANDLE_BAT(, 15585) +HANDLE_BAT(, 15586) +HANDLE_BAT(, 15587) +HANDLE_BAT(, 15588) +HANDLE_BAT(, 15589) +HANDLE_BAT(, 15590) +HANDLE_BAT(, 15591) +HANDLE_BAT(, 15592) +HANDLE_BAT(, 15593) +HANDLE_BAT(, 15594) +HANDLE_BAT(, 15595) +HANDLE_BAT(, 15596) +HANDLE_BAT(, 15597) +HANDLE_BAT(, 15598) +HANDLE_BAT(, 15599) +HANDLE_BAT(, 15600) +HANDLE_BAT(, 15601) +HANDLE_BAT(, 15602) +HANDLE_BAT(, 15603) +HANDLE_BAT(, 15604) +HANDLE_BAT(, 15605) +HANDLE_BAT(, 15606) +HANDLE_BAT(, 15607) +HANDLE_BAT(, 15608) +HANDLE_BAT(, 15609) +HANDLE_BAT(, 15610) +HANDLE_BAT(, 15611) +HANDLE_BAT(, 15612) +HANDLE_BAT(, 15613) +HANDLE_BAT(, 15614) +HANDLE_BAT(, 15615) +HANDLE_BAT(, 15616) +HANDLE_BAT(, 15617) +HANDLE_BAT(, 15618) +HANDLE_BAT(, 15619) +HANDLE_BAT(, 15620) +HANDLE_BAT(, 15621) +HANDLE_BAT(, 15622) +HANDLE_BAT(, 15623) +HANDLE_BAT(, 15624) +HANDLE_BAT(, 15625) +HANDLE_BAT(, 15626) +HANDLE_BAT(, 15627) +HANDLE_BAT(, 15628) +HANDLE_BAT(, 15629) +HANDLE_BAT(, 15630) +HANDLE_BAT(, 15631) +HANDLE_BAT(, 15632) +HANDLE_BAT(, 15633) +HANDLE_BAT(, 15634) +HANDLE_BAT(, 15635) +HANDLE_BAT(, 15636) +HANDLE_BAT(, 15637) +HANDLE_BAT(, 15638) +HANDLE_BAT(, 15639) +HANDLE_BAT(, 15640) +HANDLE_BAT(, 15641) +HANDLE_BAT(, 15642) +HANDLE_BAT(, 15643) +HANDLE_BAT(, 15644) +HANDLE_BAT(, 15645) +HANDLE_BAT(, 15646) +HANDLE_BAT(, 15647) +HANDLE_BAT(, 15648) +HANDLE_BAT(, 15649) +HANDLE_BAT(, 15650) +HANDLE_BAT(, 15651) +HANDLE_BAT(, 15652) +HANDLE_BAT(, 15653) +HANDLE_BAT(, 15654) +HANDLE_BAT(, 15655) +HANDLE_BAT(, 15656) +HANDLE_BAT(, 15657) +HANDLE_BAT(, 15658) +HANDLE_BAT(, 15659) +HANDLE_BAT(, 15660) +HANDLE_BAT(, 15661) +HANDLE_BAT(, 15662) +HANDLE_BAT(, 15663) +HANDLE_BAT(, 15664) +HANDLE_BAT(, 15665) +HANDLE_BAT(, 15666) +HANDLE_BAT(, 15667) +HANDLE_BAT(, 15668) +HANDLE_BAT(, 15669) +HANDLE_BAT(, 15670) +HANDLE_BAT(, 15671) +HANDLE_BAT(, 15672) +HANDLE_BAT(, 15673) +HANDLE_BAT(, 15674) +HANDLE_BAT(, 15675) +HANDLE_BAT(, 15676) +HANDLE_BAT(, 15677) +HANDLE_BAT(, 15678) +HANDLE_BAT(, 15679) +HANDLE_BAT(, 15680) +HANDLE_BAT(, 15681) +HANDLE_BAT(, 15682) +HANDLE_BAT(, 15683) +HANDLE_BAT(, 15684) +HANDLE_BAT(, 15685) +HANDLE_BAT(, 15686) +HANDLE_BAT(, 15687) +HANDLE_BAT(, 15688) +HANDLE_BAT(, 15689) +HANDLE_BAT(, 15690) +HANDLE_BAT(, 15691) +HANDLE_BAT(, 15692) +HANDLE_BAT(, 15693) +HANDLE_BAT(, 15694) +HANDLE_BAT(, 15695) +HANDLE_BAT(, 15696) +HANDLE_BAT(, 15697) +HANDLE_BAT(, 15698) +HANDLE_BAT(, 15699) +HANDLE_BAT(, 15700) +HANDLE_BAT(, 15701) +HANDLE_BAT(, 15702) +HANDLE_BAT(, 15703) +HANDLE_BAT(, 15704) +HANDLE_BAT(, 15705) +HANDLE_BAT(, 15706) +HANDLE_BAT(, 15707) +HANDLE_BAT(, 15708) +HANDLE_BAT(, 15709) +HANDLE_BAT(, 15710) +HANDLE_BAT(, 15711) +HANDLE_BAT(, 15712) +HANDLE_BAT(, 15713) +HANDLE_BAT(, 15714) +HANDLE_BAT(, 15715) +HANDLE_BAT(, 15716) +HANDLE_BAT(, 15717) +HANDLE_BAT(, 15718) +HANDLE_BAT(, 15719) +HANDLE_BAT(, 15720) +HANDLE_BAT(, 15721) +HANDLE_BAT(, 15722) +HANDLE_BAT(, 15723) +HANDLE_BAT(, 15724) +HANDLE_BAT(, 15725) +HANDLE_BAT(, 15726) +HANDLE_BAT(, 15727) +HANDLE_BAT(, 15728) +HANDLE_BAT(, 15729) +HANDLE_BAT(, 15730) +HANDLE_BAT(, 15731) +HANDLE_BAT(, 15732) +HANDLE_BAT(, 15733) +HANDLE_BAT(, 15734) +HANDLE_BAT(, 15735) +HANDLE_BAT(, 15736) +HANDLE_BAT(, 15737) +HANDLE_BAT(, 15738) +HANDLE_BAT(, 15739) +HANDLE_BAT(, 15740) +HANDLE_BAT(, 15741) +HANDLE_BAT(, 15742) +HANDLE_BAT(, 15743) +HANDLE_BAT(, 15744) +HANDLE_BAT(, 15745) +HANDLE_BAT(, 15746) +HANDLE_BAT(, 15747) +HANDLE_BAT(, 15748) +HANDLE_BAT(, 15749) +HANDLE_BAT(, 15750) +HANDLE_BAT(, 15751) +HANDLE_BAT(, 15752) +HANDLE_BAT(, 15753) +HANDLE_BAT(, 15754) +HANDLE_BAT(, 15755) +HANDLE_BAT(, 15756) +HANDLE_BAT(, 15757) +HANDLE_BAT(, 15758) +HANDLE_BAT(, 15759) +HANDLE_BAT(, 15760) +HANDLE_BAT(, 15761) +HANDLE_BAT(, 15762) +HANDLE_BAT(, 15763) +HANDLE_BAT(, 15764) +HANDLE_BAT(, 15765) +HANDLE_BAT(, 15766) +HANDLE_BAT(, 15767) +HANDLE_BAT(, 15768) +HANDLE_BAT(, 15769) +HANDLE_BAT(, 15770) +HANDLE_BAT(, 15771) +HANDLE_BAT(, 15772) +HANDLE_BAT(, 15773) +HANDLE_BAT(, 15774) +HANDLE_BAT(, 15775) +HANDLE_BAT(, 15776) +HANDLE_BAT(, 15777) +HANDLE_BAT(, 15778) +HANDLE_BAT(, 15779) +HANDLE_BAT(, 15780) +HANDLE_BAT(, 15781) +HANDLE_BAT(, 15782) +HANDLE_BAT(, 15783) +HANDLE_BAT(, 15784) +HANDLE_BAT(, 15785) +HANDLE_BAT(, 15786) +HANDLE_BAT(, 15787) +HANDLE_BAT(, 15788) +HANDLE_BAT(, 15789) +HANDLE_BAT(, 15790) +HANDLE_BAT(, 15791) +HANDLE_BAT(, 15792) +HANDLE_BAT(, 15793) +HANDLE_BAT(, 15794) +HANDLE_BAT(, 15795) +HANDLE_BAT(, 15796) +HANDLE_BAT(, 15797) +HANDLE_BAT(, 15798) +HANDLE_BAT(, 15799) +HANDLE_BAT(, 15800) +HANDLE_BAT(, 15801) +HANDLE_BAT(, 15802) +HANDLE_BAT(, 15803) +HANDLE_BAT(, 15804) +HANDLE_BAT(, 15805) +HANDLE_BAT(, 15806) +HANDLE_BAT(, 15807) +HANDLE_BAT(, 15808) +HANDLE_BAT(, 15809) +HANDLE_BAT(, 15810) +HANDLE_BAT(, 15811) +HANDLE_BAT(, 15812) +HANDLE_BAT(, 15813) +HANDLE_BAT(, 15814) +HANDLE_BAT(, 15815) +HANDLE_BAT(, 15816) +HANDLE_BAT(, 15817) +HANDLE_BAT(, 15818) +HANDLE_BAT(, 15819) +HANDLE_BAT(, 15820) +HANDLE_BAT(, 15821) +HANDLE_BAT(, 15822) +HANDLE_BAT(, 15823) +HANDLE_BAT(, 15824) +HANDLE_BAT(, 15825) +HANDLE_BAT(, 15826) +HANDLE_BAT(, 15827) +HANDLE_BAT(, 15828) +HANDLE_BAT(, 15829) +HANDLE_BAT(, 15830) +HANDLE_BAT(, 15831) +HANDLE_BAT(, 15832) +HANDLE_BAT(, 15833) +HANDLE_BAT(, 15834) +HANDLE_BAT(, 15835) +HANDLE_BAT(, 15836) +HANDLE_BAT(, 15837) +HANDLE_BAT(, 15838) +HANDLE_BAT(, 15839) +HANDLE_BAT(, 15840) +HANDLE_BAT(, 15841) +HANDLE_BAT(, 15842) +HANDLE_BAT(, 15843) +HANDLE_BAT(, 15844) +HANDLE_BAT(, 15845) +HANDLE_BAT(, 15846) +HANDLE_BAT(, 15847) +HANDLE_BAT(, 15848) +HANDLE_BAT(, 15849) +HANDLE_BAT(, 15850) +HANDLE_BAT(, 15851) +HANDLE_BAT(, 15852) +HANDLE_BAT(, 15853) +HANDLE_BAT(, 15854) +HANDLE_BAT(, 15855) +HANDLE_BAT(, 15856) +HANDLE_BAT(, 15857) +HANDLE_BAT(, 15858) +HANDLE_BAT(, 15859) +HANDLE_BAT(, 15860) +HANDLE_BAT(, 15861) +HANDLE_BAT(, 15862) +HANDLE_BAT(, 15863) +HANDLE_BAT(, 15864) +HANDLE_BAT(, 15865) +HANDLE_BAT(, 15866) +HANDLE_BAT(, 15867) +HANDLE_BAT(, 15868) +HANDLE_BAT(, 15869) +HANDLE_BAT(, 15870) +HANDLE_BAT(, 15871) +HANDLE_BAT(, 15872) +HANDLE_BAT(, 15873) +HANDLE_BAT(, 15874) +HANDLE_BAT(, 15875) +HANDLE_BAT(, 15876) +HANDLE_BAT(, 15877) +HANDLE_BAT(, 15878) +HANDLE_BAT(, 15879) +HANDLE_BAT(, 15880) +HANDLE_BAT(, 15881) +HANDLE_BAT(, 15882) +HANDLE_BAT(, 15883) +HANDLE_BAT(, 15884) +HANDLE_BAT(, 15885) +HANDLE_BAT(, 15886) +HANDLE_BAT(, 15887) +HANDLE_BAT(, 15888) +HANDLE_BAT(, 15889) +HANDLE_BAT(, 15890) +HANDLE_BAT(, 15891) +HANDLE_BAT(, 15892) +HANDLE_BAT(, 15893) +HANDLE_BAT(, 15894) +HANDLE_BAT(, 15895) +HANDLE_BAT(, 15896) +HANDLE_BAT(, 15897) +HANDLE_BAT(, 15898) +HANDLE_BAT(, 15899) +HANDLE_BAT(, 15900) +HANDLE_BAT(, 15901) +HANDLE_BAT(, 15902) +HANDLE_BAT(, 15903) +HANDLE_BAT(, 15904) +HANDLE_BAT(, 15905) +HANDLE_BAT(, 15906) +HANDLE_BAT(, 15907) +HANDLE_BAT(, 15908) +HANDLE_BAT(, 15909) +HANDLE_BAT(, 15910) +HANDLE_BAT(, 15911) +HANDLE_BAT(, 15912) +HANDLE_BAT(, 15913) +HANDLE_BAT(, 15914) +HANDLE_BAT(, 15915) +HANDLE_BAT(, 15916) +HANDLE_BAT(, 15917) +HANDLE_BAT(, 15918) +HANDLE_BAT(, 15919) +HANDLE_BAT(, 15920) +HANDLE_BAT(, 15921) +HANDLE_BAT(, 15922) +HANDLE_BAT(, 15923) +HANDLE_BAT(, 15924) +HANDLE_BAT(, 15925) +HANDLE_BAT(, 15926) +HANDLE_BAT(, 15927) +HANDLE_BAT(, 15928) +HANDLE_BAT(, 15929) +HANDLE_BAT(, 15930) +HANDLE_BAT(, 15931) +HANDLE_BAT(, 15932) +HANDLE_BAT(, 15933) +HANDLE_BAT(, 15934) +HANDLE_BAT(, 15935) +HANDLE_BAT(, 15936) +HANDLE_BAT(, 15937) +HANDLE_BAT(, 15938) +HANDLE_BAT(, 15939) +HANDLE_BAT(, 15940) +HANDLE_BAT(, 15941) +HANDLE_BAT(, 15942) +HANDLE_BAT(, 15943) +HANDLE_BAT(, 15944) +HANDLE_BAT(, 15945) +HANDLE_BAT(, 15946) +HANDLE_BAT(, 15947) +HANDLE_BAT(, 15948) +HANDLE_BAT(, 15949) +HANDLE_BAT(, 15950) +HANDLE_BAT(, 15951) +HANDLE_BAT(, 15952) +HANDLE_BAT(, 15953) +HANDLE_BAT(, 15954) +HANDLE_BAT(, 15955) +HANDLE_BAT(, 15956) +HANDLE_BAT(, 15957) +HANDLE_BAT(, 15958) +HANDLE_BAT(, 15959) +HANDLE_BAT(, 15960) +HANDLE_BAT(, 15961) +HANDLE_BAT(, 15962) +HANDLE_BAT(, 15963) +HANDLE_BAT(, 15964) +HANDLE_BAT(, 15965) +HANDLE_BAT(, 15966) +HANDLE_BAT(, 15967) +HANDLE_BAT(, 15968) +HANDLE_BAT(, 15969) +HANDLE_BAT(, 15970) +HANDLE_BAT(, 15971) +HANDLE_BAT(, 15972) +HANDLE_BAT(, 15973) +HANDLE_BAT(, 15974) +HANDLE_BAT(, 15975) +HANDLE_BAT(, 15976) +HANDLE_BAT(, 15977) +HANDLE_BAT(, 15978) +HANDLE_BAT(, 15979) +HANDLE_BAT(, 15980) +HANDLE_BAT(, 15981) +HANDLE_BAT(, 15982) +HANDLE_BAT(, 15983) +HANDLE_BAT(, 15984) +HANDLE_BAT(, 15985) +HANDLE_BAT(, 15986) +HANDLE_BAT(, 15987) +HANDLE_BAT(, 15988) +HANDLE_BAT(, 15989) +HANDLE_BAT(, 15990) +HANDLE_BAT(, 15991) +HANDLE_BAT(, 15992) +HANDLE_BAT(, 15993) +HANDLE_BAT(, 15994) +HANDLE_BAT(, 15995) +HANDLE_BAT(, 15996) +HANDLE_BAT(, 15997) +HANDLE_BAT(, 15998) +HANDLE_BAT(, 15999) +HANDLE_BAT(, 16000) +HANDLE_BAT(, 16001) +HANDLE_BAT(, 16002) +HANDLE_BAT(, 16003) +HANDLE_BAT(, 16004) +HANDLE_BAT(, 16005) +HANDLE_BAT(, 16006) +HANDLE_BAT(, 16007) +HANDLE_BAT(, 16008) +HANDLE_BAT(, 16009) +HANDLE_BAT(, 16010) +HANDLE_BAT(, 16011) +HANDLE_BAT(, 16012) +HANDLE_BAT(, 16013) +HANDLE_BAT(, 16014) +HANDLE_BAT(, 16015) +HANDLE_BAT(, 16016) +HANDLE_BAT(, 16017) +HANDLE_BAT(, 16018) +HANDLE_BAT(, 16019) +HANDLE_BAT(, 16020) +HANDLE_BAT(, 16021) +HANDLE_BAT(, 16022) +HANDLE_BAT(, 16023) +HANDLE_BAT(, 16024) +HANDLE_BAT(, 16025) +HANDLE_BAT(, 16026) +HANDLE_BAT(, 16027) +HANDLE_BAT(, 16028) +HANDLE_BAT(, 16029) +HANDLE_BAT(, 16030) +HANDLE_BAT(, 16031) +HANDLE_BAT(, 16032) +HANDLE_BAT(, 16033) +HANDLE_BAT(, 16034) +HANDLE_BAT(, 16035) +HANDLE_BAT(, 16036) +HANDLE_BAT(, 16037) +HANDLE_BAT(, 16038) +HANDLE_BAT(, 16039) +HANDLE_BAT(, 16040) +HANDLE_BAT(, 16041) +HANDLE_BAT(, 16042) +HANDLE_BAT(, 16043) +HANDLE_BAT(, 16044) +HANDLE_BAT(, 16045) +HANDLE_BAT(, 16046) +HANDLE_BAT(, 16047) +HANDLE_BAT(, 16048) +HANDLE_BAT(, 16049) +HANDLE_BAT(, 16050) +HANDLE_BAT(, 16051) +HANDLE_BAT(, 16052) +HANDLE_BAT(, 16053) +HANDLE_BAT(, 16054) +HANDLE_BAT(, 16055) +HANDLE_BAT(, 16056) +HANDLE_BAT(, 16057) +HANDLE_BAT(, 16058) +HANDLE_BAT(, 16059) +HANDLE_BAT(, 16060) +HANDLE_BAT(, 16061) +HANDLE_BAT(, 16062) +HANDLE_BAT(, 16063) +HANDLE_BAT(, 16064) +HANDLE_BAT(, 16065) +HANDLE_BAT(, 16066) +HANDLE_BAT(, 16067) +HANDLE_BAT(, 16068) +HANDLE_BAT(, 16069) +HANDLE_BAT(, 16070) +HANDLE_BAT(, 16071) +HANDLE_BAT(, 16072) +HANDLE_BAT(, 16073) +HANDLE_BAT(, 16074) +HANDLE_BAT(, 16075) +HANDLE_BAT(, 16076) +HANDLE_BAT(, 16077) +HANDLE_BAT(, 16078) +HANDLE_BAT(, 16079) +HANDLE_BAT(, 16080) +HANDLE_BAT(, 16081) +HANDLE_BAT(, 16082) +HANDLE_BAT(, 16083) +HANDLE_BAT(, 16084) +HANDLE_BAT(, 16085) +HANDLE_BAT(, 16086) +HANDLE_BAT(, 16087) +HANDLE_BAT(, 16088) +HANDLE_BAT(, 16089) +HANDLE_BAT(, 16090) +HANDLE_BAT(, 16091) +HANDLE_BAT(, 16092) +HANDLE_BAT(, 16093) +HANDLE_BAT(, 16094) +HANDLE_BAT(, 16095) +HANDLE_BAT(, 16096) +HANDLE_BAT(, 16097) +HANDLE_BAT(, 16098) +HANDLE_BAT(, 16099) +HANDLE_BAT(, 16100) +HANDLE_BAT(, 16101) +HANDLE_BAT(, 16102) +HANDLE_BAT(, 16103) +HANDLE_BAT(, 16104) +HANDLE_BAT(, 16105) +HANDLE_BAT(, 16106) +HANDLE_BAT(, 16107) +HANDLE_BAT(, 16108) +HANDLE_BAT(, 16109) +HANDLE_BAT(, 16110) +HANDLE_BAT(, 16111) +HANDLE_BAT(, 16112) +HANDLE_BAT(, 16113) +HANDLE_BAT(, 16114) +HANDLE_BAT(, 16115) +HANDLE_BAT(, 16116) +HANDLE_BAT(, 16117) +HANDLE_BAT(, 16118) +HANDLE_BAT(, 16119) +HANDLE_BAT(, 16120) +HANDLE_BAT(, 16121) +HANDLE_BAT(, 16122) +HANDLE_BAT(, 16123) +HANDLE_BAT(, 16124) +HANDLE_BAT(, 16125) +HANDLE_BAT(, 16126) +HANDLE_BAT(, 16127) +HANDLE_BAT(, 16128) +HANDLE_BAT(, 16129) +HANDLE_BAT(, 16130) +HANDLE_BAT(, 16131) +HANDLE_BAT(, 16132) +HANDLE_BAT(, 16133) +HANDLE_BAT(, 16134) +HANDLE_BAT(, 16135) +HANDLE_BAT(, 16136) +HANDLE_BAT(, 16137) +HANDLE_BAT(, 16138) +HANDLE_BAT(, 16139) +HANDLE_BAT(, 16140) +HANDLE_BAT(, 16141) +HANDLE_BAT(, 16142) +HANDLE_BAT(, 16143) +HANDLE_BAT(, 16144) +HANDLE_BAT(, 16145) +HANDLE_BAT(, 16146) +HANDLE_BAT(, 16147) +HANDLE_BAT(, 16148) +HANDLE_BAT(, 16149) +HANDLE_BAT(, 16150) +HANDLE_BAT(, 16151) +HANDLE_BAT(, 16152) +HANDLE_BAT(, 16153) +HANDLE_BAT(, 16154) +HANDLE_BAT(, 16155) +HANDLE_BAT(, 16156) +HANDLE_BAT(, 16157) +HANDLE_BAT(, 16158) +HANDLE_BAT(, 16159) +HANDLE_BAT(, 16160) +HANDLE_BAT(, 16161) +HANDLE_BAT(, 16162) +HANDLE_BAT(, 16163) +HANDLE_BAT(, 16164) +HANDLE_BAT(, 16165) +HANDLE_BAT(, 16166) +HANDLE_BAT(, 16167) +HANDLE_BAT(, 16168) +HANDLE_BAT(, 16169) +HANDLE_BAT(, 16170) +HANDLE_BAT(, 16171) +HANDLE_BAT(, 16172) +HANDLE_BAT(, 16173) +HANDLE_BAT(, 16174) +HANDLE_BAT(, 16175) +HANDLE_BAT(, 16176) +HANDLE_BAT(, 16177) +HANDLE_BAT(, 16178) +HANDLE_BAT(, 16179) +HANDLE_BAT(, 16180) +HANDLE_BAT(, 16181) +HANDLE_BAT(, 16182) +HANDLE_BAT(, 16183) +HANDLE_BAT(, 16184) +HANDLE_BAT(, 16185) +HANDLE_BAT(, 16186) +HANDLE_BAT(, 16187) +HANDLE_BAT(, 16188) +HANDLE_BAT(, 16189) +HANDLE_BAT(, 16190) +HANDLE_BAT(, 16191) +HANDLE_BAT(, 16192) +HANDLE_BAT(, 16193) +HANDLE_BAT(, 16194) +HANDLE_BAT(, 16195) +HANDLE_BAT(, 16196) +HANDLE_BAT(, 16197) +HANDLE_BAT(, 16198) +HANDLE_BAT(, 16199) +HANDLE_BAT(, 16200) +HANDLE_BAT(, 16201) +HANDLE_BAT(, 16202) +HANDLE_BAT(, 16203) +HANDLE_BAT(, 16204) +HANDLE_BAT(, 16205) +HANDLE_BAT(, 16206) +HANDLE_BAT(, 16207) +HANDLE_BAT(, 16208) +HANDLE_BAT(, 16209) +HANDLE_BAT(, 16210) +HANDLE_BAT(, 16211) +HANDLE_BAT(, 16212) +HANDLE_BAT(, 16213) +HANDLE_BAT(, 16214) +HANDLE_BAT(, 16215) +HANDLE_BAT(, 16216) +HANDLE_BAT(, 16217) +HANDLE_BAT(, 16218) +HANDLE_BAT(, 16219) +HANDLE_BAT(, 16220) +HANDLE_BAT(, 16221) +HANDLE_BAT(, 16222) +HANDLE_BAT(, 16223) +HANDLE_BAT(, 16224) +HANDLE_BAT(, 16225) +HANDLE_BAT(, 16226) +HANDLE_BAT(, 16227) +HANDLE_BAT(, 16228) +HANDLE_BAT(, 16229) +HANDLE_BAT(, 16230) +HANDLE_BAT(, 16231) +HANDLE_BAT(, 16232) +HANDLE_BAT(, 16233) +HANDLE_BAT(, 16234) +HANDLE_BAT(, 16235) +HANDLE_BAT(, 16236) +HANDLE_BAT(, 16237) +HANDLE_BAT(, 16238) +HANDLE_BAT(, 16239) +HANDLE_BAT(, 16240) +HANDLE_BAT(, 16241) +HANDLE_BAT(, 16242) +HANDLE_BAT(, 16243) +HANDLE_BAT(, 16244) +HANDLE_BAT(, 16245) +HANDLE_BAT(, 16246) +HANDLE_BAT(, 16247) +HANDLE_BAT(, 16248) +HANDLE_BAT(, 16249) +HANDLE_BAT(, 16250) +HANDLE_BAT(, 16251) +HANDLE_BAT(, 16252) +HANDLE_BAT(, 16253) +HANDLE_BAT(, 16254) +HANDLE_BAT(, 16255) +HANDLE_BAT(, 16256) +HANDLE_BAT(, 16257) +HANDLE_BAT(, 16258) +HANDLE_BAT(, 16259) +HANDLE_BAT(, 16260) +HANDLE_BAT(, 16261) +HANDLE_BAT(, 16262) +HANDLE_BAT(, 16263) +HANDLE_BAT(, 16264) +HANDLE_BAT(, 16265) +HANDLE_BAT(, 16266) +HANDLE_BAT(, 16267) +HANDLE_BAT(, 16268) +HANDLE_BAT(, 16269) +HANDLE_BAT(, 16270) +HANDLE_BAT(, 16271) +HANDLE_BAT(, 16272) +HANDLE_BAT(, 16273) +HANDLE_BAT(, 16274) +HANDLE_BAT(, 16275) +HANDLE_BAT(, 16276) +HANDLE_BAT(, 16277) +HANDLE_BAT(, 16278) +HANDLE_BAT(, 16279) +HANDLE_BAT(, 16280) +HANDLE_BAT(, 16281) +HANDLE_BAT(, 16282) +HANDLE_BAT(, 16283) +HANDLE_BAT(, 16284) +HANDLE_BAT(, 16285) +HANDLE_BAT(, 16286) +HANDLE_BAT(, 16287) +HANDLE_BAT(, 16288) +HANDLE_BAT(, 16289) +HANDLE_BAT(, 16290) +HANDLE_BAT(, 16291) +HANDLE_BAT(, 16292) +HANDLE_BAT(, 16293) +HANDLE_BAT(, 16294) +HANDLE_BAT(, 16295) +HANDLE_BAT(, 16296) +HANDLE_BAT(, 16297) +HANDLE_BAT(, 16298) +HANDLE_BAT(, 16299) +HANDLE_BAT(, 16300) +HANDLE_BAT(, 16301) +HANDLE_BAT(, 16302) +HANDLE_BAT(, 16303) +HANDLE_BAT(, 16304) +HANDLE_BAT(, 16305) +HANDLE_BAT(, 16306) +HANDLE_BAT(, 16307) +HANDLE_BAT(, 16308) +HANDLE_BAT(, 16309) +HANDLE_BAT(, 16310) +HANDLE_BAT(, 16311) +HANDLE_BAT(, 16312) +HANDLE_BAT(, 16313) +HANDLE_BAT(, 16314) +HANDLE_BAT(, 16315) +HANDLE_BAT(, 16316) +HANDLE_BAT(, 16317) +HANDLE_BAT(, 16318) +HANDLE_BAT(, 16319) +HANDLE_BAT(, 16320) +HANDLE_BAT(, 16321) +HANDLE_BAT(, 16322) +HANDLE_BAT(, 16323) +HANDLE_BAT(, 16324) +HANDLE_BAT(, 16325) +HANDLE_BAT(, 16326) +HANDLE_BAT(, 16327) +HANDLE_BAT(, 16328) +HANDLE_BAT(, 16329) +HANDLE_BAT(, 16330) +HANDLE_BAT(, 16331) +HANDLE_BAT(, 16332) +HANDLE_BAT(, 16333) +HANDLE_BAT(, 16334) +HANDLE_BAT(, 16335) +HANDLE_BAT(, 16336) +HANDLE_BAT(, 16337) +HANDLE_BAT(, 16338) +HANDLE_BAT(, 16339) +HANDLE_BAT(, 16340) +HANDLE_BAT(, 16341) +HANDLE_BAT(, 16342) +HANDLE_BAT(, 16343) +HANDLE_BAT(, 16344) +HANDLE_BAT(, 16345) +HANDLE_BAT(, 16346) +HANDLE_BAT(, 16347) +HANDLE_BAT(, 16348) +HANDLE_BAT(, 16349) +HANDLE_BAT(, 16350) +HANDLE_BAT(, 16351) +HANDLE_BAT(, 16352) +HANDLE_BAT(, 16353) +HANDLE_BAT(, 16354) +HANDLE_BAT(, 16355) +HANDLE_BAT(, 16356) +HANDLE_BAT(, 16357) +HANDLE_BAT(, 16358) +HANDLE_BAT(, 16359) +HANDLE_BAT(, 16360) +HANDLE_BAT(, 16361) +HANDLE_BAT(, 16362) +HANDLE_BAT(, 16363) +HANDLE_BAT(, 16364) +HANDLE_BAT(, 16365) +HANDLE_BAT(, 16366) +HANDLE_BAT(, 16367) +HANDLE_BAT(, 16368) +HANDLE_BAT(, 16369) +HANDLE_BAT(, 16370) +HANDLE_BAT(, 16371) +HANDLE_BAT(, 16372) +HANDLE_BAT(, 16373) +HANDLE_BAT(, 16374) +HANDLE_BAT(, 16375) +HANDLE_BAT(, 16376) +HANDLE_BAT(, 16377) +HANDLE_BAT(, 16378) +HANDLE_BAT(, 16379) +HANDLE_BAT(, 16380) +HANDLE_BAT(, 16381) +HANDLE_BAT(, 16382) +HANDLE_BAT(, 16383) +HANDLE_BAT(, 16384) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 15361) +HANDLE_BAT(APINT_TYPE_PREFIX, 15362) +HANDLE_BAT(APINT_TYPE_PREFIX, 15363) +HANDLE_BAT(APINT_TYPE_PREFIX, 15364) +HANDLE_BAT(APINT_TYPE_PREFIX, 15365) +HANDLE_BAT(APINT_TYPE_PREFIX, 15366) +HANDLE_BAT(APINT_TYPE_PREFIX, 15367) +HANDLE_BAT(APINT_TYPE_PREFIX, 15368) +HANDLE_BAT(APINT_TYPE_PREFIX, 15369) +HANDLE_BAT(APINT_TYPE_PREFIX, 15370) +HANDLE_BAT(APINT_TYPE_PREFIX, 15371) +HANDLE_BAT(APINT_TYPE_PREFIX, 15372) +HANDLE_BAT(APINT_TYPE_PREFIX, 15373) +HANDLE_BAT(APINT_TYPE_PREFIX, 15374) +HANDLE_BAT(APINT_TYPE_PREFIX, 15375) +HANDLE_BAT(APINT_TYPE_PREFIX, 15376) +HANDLE_BAT(APINT_TYPE_PREFIX, 15377) +HANDLE_BAT(APINT_TYPE_PREFIX, 15378) +HANDLE_BAT(APINT_TYPE_PREFIX, 15379) +HANDLE_BAT(APINT_TYPE_PREFIX, 15380) +HANDLE_BAT(APINT_TYPE_PREFIX, 15381) +HANDLE_BAT(APINT_TYPE_PREFIX, 15382) +HANDLE_BAT(APINT_TYPE_PREFIX, 15383) +HANDLE_BAT(APINT_TYPE_PREFIX, 15384) +HANDLE_BAT(APINT_TYPE_PREFIX, 15385) +HANDLE_BAT(APINT_TYPE_PREFIX, 15386) +HANDLE_BAT(APINT_TYPE_PREFIX, 15387) +HANDLE_BAT(APINT_TYPE_PREFIX, 15388) +HANDLE_BAT(APINT_TYPE_PREFIX, 15389) +HANDLE_BAT(APINT_TYPE_PREFIX, 15390) +HANDLE_BAT(APINT_TYPE_PREFIX, 15391) +HANDLE_BAT(APINT_TYPE_PREFIX, 15392) +HANDLE_BAT(APINT_TYPE_PREFIX, 15393) +HANDLE_BAT(APINT_TYPE_PREFIX, 15394) +HANDLE_BAT(APINT_TYPE_PREFIX, 15395) +HANDLE_BAT(APINT_TYPE_PREFIX, 15396) +HANDLE_BAT(APINT_TYPE_PREFIX, 15397) +HANDLE_BAT(APINT_TYPE_PREFIX, 15398) +HANDLE_BAT(APINT_TYPE_PREFIX, 15399) +HANDLE_BAT(APINT_TYPE_PREFIX, 15400) +HANDLE_BAT(APINT_TYPE_PREFIX, 15401) +HANDLE_BAT(APINT_TYPE_PREFIX, 15402) +HANDLE_BAT(APINT_TYPE_PREFIX, 15403) +HANDLE_BAT(APINT_TYPE_PREFIX, 15404) +HANDLE_BAT(APINT_TYPE_PREFIX, 15405) +HANDLE_BAT(APINT_TYPE_PREFIX, 15406) +HANDLE_BAT(APINT_TYPE_PREFIX, 15407) +HANDLE_BAT(APINT_TYPE_PREFIX, 15408) +HANDLE_BAT(APINT_TYPE_PREFIX, 15409) +HANDLE_BAT(APINT_TYPE_PREFIX, 15410) +HANDLE_BAT(APINT_TYPE_PREFIX, 15411) +HANDLE_BAT(APINT_TYPE_PREFIX, 15412) +HANDLE_BAT(APINT_TYPE_PREFIX, 15413) +HANDLE_BAT(APINT_TYPE_PREFIX, 15414) +HANDLE_BAT(APINT_TYPE_PREFIX, 15415) +HANDLE_BAT(APINT_TYPE_PREFIX, 15416) +HANDLE_BAT(APINT_TYPE_PREFIX, 15417) +HANDLE_BAT(APINT_TYPE_PREFIX, 15418) +HANDLE_BAT(APINT_TYPE_PREFIX, 15419) +HANDLE_BAT(APINT_TYPE_PREFIX, 15420) +HANDLE_BAT(APINT_TYPE_PREFIX, 15421) +HANDLE_BAT(APINT_TYPE_PREFIX, 15422) +HANDLE_BAT(APINT_TYPE_PREFIX, 15423) +HANDLE_BAT(APINT_TYPE_PREFIX, 15424) +HANDLE_BAT(APINT_TYPE_PREFIX, 15425) +HANDLE_BAT(APINT_TYPE_PREFIX, 15426) +HANDLE_BAT(APINT_TYPE_PREFIX, 15427) +HANDLE_BAT(APINT_TYPE_PREFIX, 15428) +HANDLE_BAT(APINT_TYPE_PREFIX, 15429) +HANDLE_BAT(APINT_TYPE_PREFIX, 15430) +HANDLE_BAT(APINT_TYPE_PREFIX, 15431) +HANDLE_BAT(APINT_TYPE_PREFIX, 15432) +HANDLE_BAT(APINT_TYPE_PREFIX, 15433) +HANDLE_BAT(APINT_TYPE_PREFIX, 15434) +HANDLE_BAT(APINT_TYPE_PREFIX, 15435) +HANDLE_BAT(APINT_TYPE_PREFIX, 15436) +HANDLE_BAT(APINT_TYPE_PREFIX, 15437) +HANDLE_BAT(APINT_TYPE_PREFIX, 15438) +HANDLE_BAT(APINT_TYPE_PREFIX, 15439) +HANDLE_BAT(APINT_TYPE_PREFIX, 15440) +HANDLE_BAT(APINT_TYPE_PREFIX, 15441) +HANDLE_BAT(APINT_TYPE_PREFIX, 15442) +HANDLE_BAT(APINT_TYPE_PREFIX, 15443) +HANDLE_BAT(APINT_TYPE_PREFIX, 15444) +HANDLE_BAT(APINT_TYPE_PREFIX, 15445) +HANDLE_BAT(APINT_TYPE_PREFIX, 15446) +HANDLE_BAT(APINT_TYPE_PREFIX, 15447) +HANDLE_BAT(APINT_TYPE_PREFIX, 15448) +HANDLE_BAT(APINT_TYPE_PREFIX, 15449) +HANDLE_BAT(APINT_TYPE_PREFIX, 15450) +HANDLE_BAT(APINT_TYPE_PREFIX, 15451) +HANDLE_BAT(APINT_TYPE_PREFIX, 15452) +HANDLE_BAT(APINT_TYPE_PREFIX, 15453) +HANDLE_BAT(APINT_TYPE_PREFIX, 15454) +HANDLE_BAT(APINT_TYPE_PREFIX, 15455) +HANDLE_BAT(APINT_TYPE_PREFIX, 15456) +HANDLE_BAT(APINT_TYPE_PREFIX, 15457) +HANDLE_BAT(APINT_TYPE_PREFIX, 15458) +HANDLE_BAT(APINT_TYPE_PREFIX, 15459) +HANDLE_BAT(APINT_TYPE_PREFIX, 15460) +HANDLE_BAT(APINT_TYPE_PREFIX, 15461) +HANDLE_BAT(APINT_TYPE_PREFIX, 15462) +HANDLE_BAT(APINT_TYPE_PREFIX, 15463) +HANDLE_BAT(APINT_TYPE_PREFIX, 15464) +HANDLE_BAT(APINT_TYPE_PREFIX, 15465) +HANDLE_BAT(APINT_TYPE_PREFIX, 15466) +HANDLE_BAT(APINT_TYPE_PREFIX, 15467) +HANDLE_BAT(APINT_TYPE_PREFIX, 15468) +HANDLE_BAT(APINT_TYPE_PREFIX, 15469) +HANDLE_BAT(APINT_TYPE_PREFIX, 15470) +HANDLE_BAT(APINT_TYPE_PREFIX, 15471) +HANDLE_BAT(APINT_TYPE_PREFIX, 15472) +HANDLE_BAT(APINT_TYPE_PREFIX, 15473) +HANDLE_BAT(APINT_TYPE_PREFIX, 15474) +HANDLE_BAT(APINT_TYPE_PREFIX, 15475) +HANDLE_BAT(APINT_TYPE_PREFIX, 15476) +HANDLE_BAT(APINT_TYPE_PREFIX, 15477) +HANDLE_BAT(APINT_TYPE_PREFIX, 15478) +HANDLE_BAT(APINT_TYPE_PREFIX, 15479) +HANDLE_BAT(APINT_TYPE_PREFIX, 15480) +HANDLE_BAT(APINT_TYPE_PREFIX, 15481) +HANDLE_BAT(APINT_TYPE_PREFIX, 15482) +HANDLE_BAT(APINT_TYPE_PREFIX, 15483) +HANDLE_BAT(APINT_TYPE_PREFIX, 15484) +HANDLE_BAT(APINT_TYPE_PREFIX, 15485) +HANDLE_BAT(APINT_TYPE_PREFIX, 15486) +HANDLE_BAT(APINT_TYPE_PREFIX, 15487) +HANDLE_BAT(APINT_TYPE_PREFIX, 15488) +HANDLE_BAT(APINT_TYPE_PREFIX, 15489) +HANDLE_BAT(APINT_TYPE_PREFIX, 15490) +HANDLE_BAT(APINT_TYPE_PREFIX, 15491) +HANDLE_BAT(APINT_TYPE_PREFIX, 15492) +HANDLE_BAT(APINT_TYPE_PREFIX, 15493) +HANDLE_BAT(APINT_TYPE_PREFIX, 15494) +HANDLE_BAT(APINT_TYPE_PREFIX, 15495) +HANDLE_BAT(APINT_TYPE_PREFIX, 15496) +HANDLE_BAT(APINT_TYPE_PREFIX, 15497) +HANDLE_BAT(APINT_TYPE_PREFIX, 15498) +HANDLE_BAT(APINT_TYPE_PREFIX, 15499) +HANDLE_BAT(APINT_TYPE_PREFIX, 15500) +HANDLE_BAT(APINT_TYPE_PREFIX, 15501) +HANDLE_BAT(APINT_TYPE_PREFIX, 15502) +HANDLE_BAT(APINT_TYPE_PREFIX, 15503) +HANDLE_BAT(APINT_TYPE_PREFIX, 15504) +HANDLE_BAT(APINT_TYPE_PREFIX, 15505) +HANDLE_BAT(APINT_TYPE_PREFIX, 15506) +HANDLE_BAT(APINT_TYPE_PREFIX, 15507) +HANDLE_BAT(APINT_TYPE_PREFIX, 15508) +HANDLE_BAT(APINT_TYPE_PREFIX, 15509) +HANDLE_BAT(APINT_TYPE_PREFIX, 15510) +HANDLE_BAT(APINT_TYPE_PREFIX, 15511) +HANDLE_BAT(APINT_TYPE_PREFIX, 15512) +HANDLE_BAT(APINT_TYPE_PREFIX, 15513) +HANDLE_BAT(APINT_TYPE_PREFIX, 15514) +HANDLE_BAT(APINT_TYPE_PREFIX, 15515) +HANDLE_BAT(APINT_TYPE_PREFIX, 15516) +HANDLE_BAT(APINT_TYPE_PREFIX, 15517) +HANDLE_BAT(APINT_TYPE_PREFIX, 15518) +HANDLE_BAT(APINT_TYPE_PREFIX, 15519) +HANDLE_BAT(APINT_TYPE_PREFIX, 15520) +HANDLE_BAT(APINT_TYPE_PREFIX, 15521) +HANDLE_BAT(APINT_TYPE_PREFIX, 15522) +HANDLE_BAT(APINT_TYPE_PREFIX, 15523) +HANDLE_BAT(APINT_TYPE_PREFIX, 15524) +HANDLE_BAT(APINT_TYPE_PREFIX, 15525) +HANDLE_BAT(APINT_TYPE_PREFIX, 15526) +HANDLE_BAT(APINT_TYPE_PREFIX, 15527) +HANDLE_BAT(APINT_TYPE_PREFIX, 15528) +HANDLE_BAT(APINT_TYPE_PREFIX, 15529) +HANDLE_BAT(APINT_TYPE_PREFIX, 15530) +HANDLE_BAT(APINT_TYPE_PREFIX, 15531) +HANDLE_BAT(APINT_TYPE_PREFIX, 15532) +HANDLE_BAT(APINT_TYPE_PREFIX, 15533) +HANDLE_BAT(APINT_TYPE_PREFIX, 15534) +HANDLE_BAT(APINT_TYPE_PREFIX, 15535) +HANDLE_BAT(APINT_TYPE_PREFIX, 15536) +HANDLE_BAT(APINT_TYPE_PREFIX, 15537) +HANDLE_BAT(APINT_TYPE_PREFIX, 15538) +HANDLE_BAT(APINT_TYPE_PREFIX, 15539) +HANDLE_BAT(APINT_TYPE_PREFIX, 15540) +HANDLE_BAT(APINT_TYPE_PREFIX, 15541) +HANDLE_BAT(APINT_TYPE_PREFIX, 15542) +HANDLE_BAT(APINT_TYPE_PREFIX, 15543) +HANDLE_BAT(APINT_TYPE_PREFIX, 15544) +HANDLE_BAT(APINT_TYPE_PREFIX, 15545) +HANDLE_BAT(APINT_TYPE_PREFIX, 15546) +HANDLE_BAT(APINT_TYPE_PREFIX, 15547) +HANDLE_BAT(APINT_TYPE_PREFIX, 15548) +HANDLE_BAT(APINT_TYPE_PREFIX, 15549) +HANDLE_BAT(APINT_TYPE_PREFIX, 15550) +HANDLE_BAT(APINT_TYPE_PREFIX, 15551) +HANDLE_BAT(APINT_TYPE_PREFIX, 15552) +HANDLE_BAT(APINT_TYPE_PREFIX, 15553) +HANDLE_BAT(APINT_TYPE_PREFIX, 15554) +HANDLE_BAT(APINT_TYPE_PREFIX, 15555) +HANDLE_BAT(APINT_TYPE_PREFIX, 15556) +HANDLE_BAT(APINT_TYPE_PREFIX, 15557) +HANDLE_BAT(APINT_TYPE_PREFIX, 15558) +HANDLE_BAT(APINT_TYPE_PREFIX, 15559) +HANDLE_BAT(APINT_TYPE_PREFIX, 15560) +HANDLE_BAT(APINT_TYPE_PREFIX, 15561) +HANDLE_BAT(APINT_TYPE_PREFIX, 15562) +HANDLE_BAT(APINT_TYPE_PREFIX, 15563) +HANDLE_BAT(APINT_TYPE_PREFIX, 15564) +HANDLE_BAT(APINT_TYPE_PREFIX, 15565) +HANDLE_BAT(APINT_TYPE_PREFIX, 15566) +HANDLE_BAT(APINT_TYPE_PREFIX, 15567) +HANDLE_BAT(APINT_TYPE_PREFIX, 15568) +HANDLE_BAT(APINT_TYPE_PREFIX, 15569) +HANDLE_BAT(APINT_TYPE_PREFIX, 15570) +HANDLE_BAT(APINT_TYPE_PREFIX, 15571) +HANDLE_BAT(APINT_TYPE_PREFIX, 15572) +HANDLE_BAT(APINT_TYPE_PREFIX, 15573) +HANDLE_BAT(APINT_TYPE_PREFIX, 15574) +HANDLE_BAT(APINT_TYPE_PREFIX, 15575) +HANDLE_BAT(APINT_TYPE_PREFIX, 15576) +HANDLE_BAT(APINT_TYPE_PREFIX, 15577) +HANDLE_BAT(APINT_TYPE_PREFIX, 15578) +HANDLE_BAT(APINT_TYPE_PREFIX, 15579) +HANDLE_BAT(APINT_TYPE_PREFIX, 15580) +HANDLE_BAT(APINT_TYPE_PREFIX, 15581) +HANDLE_BAT(APINT_TYPE_PREFIX, 15582) +HANDLE_BAT(APINT_TYPE_PREFIX, 15583) +HANDLE_BAT(APINT_TYPE_PREFIX, 15584) +HANDLE_BAT(APINT_TYPE_PREFIX, 15585) +HANDLE_BAT(APINT_TYPE_PREFIX, 15586) +HANDLE_BAT(APINT_TYPE_PREFIX, 15587) +HANDLE_BAT(APINT_TYPE_PREFIX, 15588) +HANDLE_BAT(APINT_TYPE_PREFIX, 15589) +HANDLE_BAT(APINT_TYPE_PREFIX, 15590) +HANDLE_BAT(APINT_TYPE_PREFIX, 15591) +HANDLE_BAT(APINT_TYPE_PREFIX, 15592) +HANDLE_BAT(APINT_TYPE_PREFIX, 15593) +HANDLE_BAT(APINT_TYPE_PREFIX, 15594) +HANDLE_BAT(APINT_TYPE_PREFIX, 15595) +HANDLE_BAT(APINT_TYPE_PREFIX, 15596) +HANDLE_BAT(APINT_TYPE_PREFIX, 15597) +HANDLE_BAT(APINT_TYPE_PREFIX, 15598) +HANDLE_BAT(APINT_TYPE_PREFIX, 15599) +HANDLE_BAT(APINT_TYPE_PREFIX, 15600) +HANDLE_BAT(APINT_TYPE_PREFIX, 15601) +HANDLE_BAT(APINT_TYPE_PREFIX, 15602) +HANDLE_BAT(APINT_TYPE_PREFIX, 15603) +HANDLE_BAT(APINT_TYPE_PREFIX, 15604) +HANDLE_BAT(APINT_TYPE_PREFIX, 15605) +HANDLE_BAT(APINT_TYPE_PREFIX, 15606) +HANDLE_BAT(APINT_TYPE_PREFIX, 15607) +HANDLE_BAT(APINT_TYPE_PREFIX, 15608) +HANDLE_BAT(APINT_TYPE_PREFIX, 15609) +HANDLE_BAT(APINT_TYPE_PREFIX, 15610) +HANDLE_BAT(APINT_TYPE_PREFIX, 15611) +HANDLE_BAT(APINT_TYPE_PREFIX, 15612) +HANDLE_BAT(APINT_TYPE_PREFIX, 15613) +HANDLE_BAT(APINT_TYPE_PREFIX, 15614) +HANDLE_BAT(APINT_TYPE_PREFIX, 15615) +HANDLE_BAT(APINT_TYPE_PREFIX, 15616) +HANDLE_BAT(APINT_TYPE_PREFIX, 15617) +HANDLE_BAT(APINT_TYPE_PREFIX, 15618) +HANDLE_BAT(APINT_TYPE_PREFIX, 15619) +HANDLE_BAT(APINT_TYPE_PREFIX, 15620) +HANDLE_BAT(APINT_TYPE_PREFIX, 15621) +HANDLE_BAT(APINT_TYPE_PREFIX, 15622) +HANDLE_BAT(APINT_TYPE_PREFIX, 15623) +HANDLE_BAT(APINT_TYPE_PREFIX, 15624) +HANDLE_BAT(APINT_TYPE_PREFIX, 15625) +HANDLE_BAT(APINT_TYPE_PREFIX, 15626) +HANDLE_BAT(APINT_TYPE_PREFIX, 15627) +HANDLE_BAT(APINT_TYPE_PREFIX, 15628) +HANDLE_BAT(APINT_TYPE_PREFIX, 15629) +HANDLE_BAT(APINT_TYPE_PREFIX, 15630) +HANDLE_BAT(APINT_TYPE_PREFIX, 15631) +HANDLE_BAT(APINT_TYPE_PREFIX, 15632) +HANDLE_BAT(APINT_TYPE_PREFIX, 15633) +HANDLE_BAT(APINT_TYPE_PREFIX, 15634) +HANDLE_BAT(APINT_TYPE_PREFIX, 15635) +HANDLE_BAT(APINT_TYPE_PREFIX, 15636) +HANDLE_BAT(APINT_TYPE_PREFIX, 15637) +HANDLE_BAT(APINT_TYPE_PREFIX, 15638) +HANDLE_BAT(APINT_TYPE_PREFIX, 15639) +HANDLE_BAT(APINT_TYPE_PREFIX, 15640) +HANDLE_BAT(APINT_TYPE_PREFIX, 15641) +HANDLE_BAT(APINT_TYPE_PREFIX, 15642) +HANDLE_BAT(APINT_TYPE_PREFIX, 15643) +HANDLE_BAT(APINT_TYPE_PREFIX, 15644) +HANDLE_BAT(APINT_TYPE_PREFIX, 15645) +HANDLE_BAT(APINT_TYPE_PREFIX, 15646) +HANDLE_BAT(APINT_TYPE_PREFIX, 15647) +HANDLE_BAT(APINT_TYPE_PREFIX, 15648) +HANDLE_BAT(APINT_TYPE_PREFIX, 15649) +HANDLE_BAT(APINT_TYPE_PREFIX, 15650) +HANDLE_BAT(APINT_TYPE_PREFIX, 15651) +HANDLE_BAT(APINT_TYPE_PREFIX, 15652) +HANDLE_BAT(APINT_TYPE_PREFIX, 15653) +HANDLE_BAT(APINT_TYPE_PREFIX, 15654) +HANDLE_BAT(APINT_TYPE_PREFIX, 15655) +HANDLE_BAT(APINT_TYPE_PREFIX, 15656) +HANDLE_BAT(APINT_TYPE_PREFIX, 15657) +HANDLE_BAT(APINT_TYPE_PREFIX, 15658) +HANDLE_BAT(APINT_TYPE_PREFIX, 15659) +HANDLE_BAT(APINT_TYPE_PREFIX, 15660) +HANDLE_BAT(APINT_TYPE_PREFIX, 15661) +HANDLE_BAT(APINT_TYPE_PREFIX, 15662) +HANDLE_BAT(APINT_TYPE_PREFIX, 15663) +HANDLE_BAT(APINT_TYPE_PREFIX, 15664) +HANDLE_BAT(APINT_TYPE_PREFIX, 15665) +HANDLE_BAT(APINT_TYPE_PREFIX, 15666) +HANDLE_BAT(APINT_TYPE_PREFIX, 15667) +HANDLE_BAT(APINT_TYPE_PREFIX, 15668) +HANDLE_BAT(APINT_TYPE_PREFIX, 15669) +HANDLE_BAT(APINT_TYPE_PREFIX, 15670) +HANDLE_BAT(APINT_TYPE_PREFIX, 15671) +HANDLE_BAT(APINT_TYPE_PREFIX, 15672) +HANDLE_BAT(APINT_TYPE_PREFIX, 15673) +HANDLE_BAT(APINT_TYPE_PREFIX, 15674) +HANDLE_BAT(APINT_TYPE_PREFIX, 15675) +HANDLE_BAT(APINT_TYPE_PREFIX, 15676) +HANDLE_BAT(APINT_TYPE_PREFIX, 15677) +HANDLE_BAT(APINT_TYPE_PREFIX, 15678) +HANDLE_BAT(APINT_TYPE_PREFIX, 15679) +HANDLE_BAT(APINT_TYPE_PREFIX, 15680) +HANDLE_BAT(APINT_TYPE_PREFIX, 15681) +HANDLE_BAT(APINT_TYPE_PREFIX, 15682) +HANDLE_BAT(APINT_TYPE_PREFIX, 15683) +HANDLE_BAT(APINT_TYPE_PREFIX, 15684) +HANDLE_BAT(APINT_TYPE_PREFIX, 15685) +HANDLE_BAT(APINT_TYPE_PREFIX, 15686) +HANDLE_BAT(APINT_TYPE_PREFIX, 15687) +HANDLE_BAT(APINT_TYPE_PREFIX, 15688) +HANDLE_BAT(APINT_TYPE_PREFIX, 15689) +HANDLE_BAT(APINT_TYPE_PREFIX, 15690) +HANDLE_BAT(APINT_TYPE_PREFIX, 15691) +HANDLE_BAT(APINT_TYPE_PREFIX, 15692) +HANDLE_BAT(APINT_TYPE_PREFIX, 15693) +HANDLE_BAT(APINT_TYPE_PREFIX, 15694) +HANDLE_BAT(APINT_TYPE_PREFIX, 15695) +HANDLE_BAT(APINT_TYPE_PREFIX, 15696) +HANDLE_BAT(APINT_TYPE_PREFIX, 15697) +HANDLE_BAT(APINT_TYPE_PREFIX, 15698) +HANDLE_BAT(APINT_TYPE_PREFIX, 15699) +HANDLE_BAT(APINT_TYPE_PREFIX, 15700) +HANDLE_BAT(APINT_TYPE_PREFIX, 15701) +HANDLE_BAT(APINT_TYPE_PREFIX, 15702) +HANDLE_BAT(APINT_TYPE_PREFIX, 15703) +HANDLE_BAT(APINT_TYPE_PREFIX, 15704) +HANDLE_BAT(APINT_TYPE_PREFIX, 15705) +HANDLE_BAT(APINT_TYPE_PREFIX, 15706) +HANDLE_BAT(APINT_TYPE_PREFIX, 15707) +HANDLE_BAT(APINT_TYPE_PREFIX, 15708) +HANDLE_BAT(APINT_TYPE_PREFIX, 15709) +HANDLE_BAT(APINT_TYPE_PREFIX, 15710) +HANDLE_BAT(APINT_TYPE_PREFIX, 15711) +HANDLE_BAT(APINT_TYPE_PREFIX, 15712) +HANDLE_BAT(APINT_TYPE_PREFIX, 15713) +HANDLE_BAT(APINT_TYPE_PREFIX, 15714) +HANDLE_BAT(APINT_TYPE_PREFIX, 15715) +HANDLE_BAT(APINT_TYPE_PREFIX, 15716) +HANDLE_BAT(APINT_TYPE_PREFIX, 15717) +HANDLE_BAT(APINT_TYPE_PREFIX, 15718) +HANDLE_BAT(APINT_TYPE_PREFIX, 15719) +HANDLE_BAT(APINT_TYPE_PREFIX, 15720) +HANDLE_BAT(APINT_TYPE_PREFIX, 15721) +HANDLE_BAT(APINT_TYPE_PREFIX, 15722) +HANDLE_BAT(APINT_TYPE_PREFIX, 15723) +HANDLE_BAT(APINT_TYPE_PREFIX, 15724) +HANDLE_BAT(APINT_TYPE_PREFIX, 15725) +HANDLE_BAT(APINT_TYPE_PREFIX, 15726) +HANDLE_BAT(APINT_TYPE_PREFIX, 15727) +HANDLE_BAT(APINT_TYPE_PREFIX, 15728) +HANDLE_BAT(APINT_TYPE_PREFIX, 15729) +HANDLE_BAT(APINT_TYPE_PREFIX, 15730) +HANDLE_BAT(APINT_TYPE_PREFIX, 15731) +HANDLE_BAT(APINT_TYPE_PREFIX, 15732) +HANDLE_BAT(APINT_TYPE_PREFIX, 15733) +HANDLE_BAT(APINT_TYPE_PREFIX, 15734) +HANDLE_BAT(APINT_TYPE_PREFIX, 15735) +HANDLE_BAT(APINT_TYPE_PREFIX, 15736) +HANDLE_BAT(APINT_TYPE_PREFIX, 15737) +HANDLE_BAT(APINT_TYPE_PREFIX, 15738) +HANDLE_BAT(APINT_TYPE_PREFIX, 15739) +HANDLE_BAT(APINT_TYPE_PREFIX, 15740) +HANDLE_BAT(APINT_TYPE_PREFIX, 15741) +HANDLE_BAT(APINT_TYPE_PREFIX, 15742) +HANDLE_BAT(APINT_TYPE_PREFIX, 15743) +HANDLE_BAT(APINT_TYPE_PREFIX, 15744) +HANDLE_BAT(APINT_TYPE_PREFIX, 15745) +HANDLE_BAT(APINT_TYPE_PREFIX, 15746) +HANDLE_BAT(APINT_TYPE_PREFIX, 15747) +HANDLE_BAT(APINT_TYPE_PREFIX, 15748) +HANDLE_BAT(APINT_TYPE_PREFIX, 15749) +HANDLE_BAT(APINT_TYPE_PREFIX, 15750) +HANDLE_BAT(APINT_TYPE_PREFIX, 15751) +HANDLE_BAT(APINT_TYPE_PREFIX, 15752) +HANDLE_BAT(APINT_TYPE_PREFIX, 15753) +HANDLE_BAT(APINT_TYPE_PREFIX, 15754) +HANDLE_BAT(APINT_TYPE_PREFIX, 15755) +HANDLE_BAT(APINT_TYPE_PREFIX, 15756) +HANDLE_BAT(APINT_TYPE_PREFIX, 15757) +HANDLE_BAT(APINT_TYPE_PREFIX, 15758) +HANDLE_BAT(APINT_TYPE_PREFIX, 15759) +HANDLE_BAT(APINT_TYPE_PREFIX, 15760) +HANDLE_BAT(APINT_TYPE_PREFIX, 15761) +HANDLE_BAT(APINT_TYPE_PREFIX, 15762) +HANDLE_BAT(APINT_TYPE_PREFIX, 15763) +HANDLE_BAT(APINT_TYPE_PREFIX, 15764) +HANDLE_BAT(APINT_TYPE_PREFIX, 15765) +HANDLE_BAT(APINT_TYPE_PREFIX, 15766) +HANDLE_BAT(APINT_TYPE_PREFIX, 15767) +HANDLE_BAT(APINT_TYPE_PREFIX, 15768) +HANDLE_BAT(APINT_TYPE_PREFIX, 15769) +HANDLE_BAT(APINT_TYPE_PREFIX, 15770) +HANDLE_BAT(APINT_TYPE_PREFIX, 15771) +HANDLE_BAT(APINT_TYPE_PREFIX, 15772) +HANDLE_BAT(APINT_TYPE_PREFIX, 15773) +HANDLE_BAT(APINT_TYPE_PREFIX, 15774) +HANDLE_BAT(APINT_TYPE_PREFIX, 15775) +HANDLE_BAT(APINT_TYPE_PREFIX, 15776) +HANDLE_BAT(APINT_TYPE_PREFIX, 15777) +HANDLE_BAT(APINT_TYPE_PREFIX, 15778) +HANDLE_BAT(APINT_TYPE_PREFIX, 15779) +HANDLE_BAT(APINT_TYPE_PREFIX, 15780) +HANDLE_BAT(APINT_TYPE_PREFIX, 15781) +HANDLE_BAT(APINT_TYPE_PREFIX, 15782) +HANDLE_BAT(APINT_TYPE_PREFIX, 15783) +HANDLE_BAT(APINT_TYPE_PREFIX, 15784) +HANDLE_BAT(APINT_TYPE_PREFIX, 15785) +HANDLE_BAT(APINT_TYPE_PREFIX, 15786) +HANDLE_BAT(APINT_TYPE_PREFIX, 15787) +HANDLE_BAT(APINT_TYPE_PREFIX, 15788) +HANDLE_BAT(APINT_TYPE_PREFIX, 15789) +HANDLE_BAT(APINT_TYPE_PREFIX, 15790) +HANDLE_BAT(APINT_TYPE_PREFIX, 15791) +HANDLE_BAT(APINT_TYPE_PREFIX, 15792) +HANDLE_BAT(APINT_TYPE_PREFIX, 15793) +HANDLE_BAT(APINT_TYPE_PREFIX, 15794) +HANDLE_BAT(APINT_TYPE_PREFIX, 15795) +HANDLE_BAT(APINT_TYPE_PREFIX, 15796) +HANDLE_BAT(APINT_TYPE_PREFIX, 15797) +HANDLE_BAT(APINT_TYPE_PREFIX, 15798) +HANDLE_BAT(APINT_TYPE_PREFIX, 15799) +HANDLE_BAT(APINT_TYPE_PREFIX, 15800) +HANDLE_BAT(APINT_TYPE_PREFIX, 15801) +HANDLE_BAT(APINT_TYPE_PREFIX, 15802) +HANDLE_BAT(APINT_TYPE_PREFIX, 15803) +HANDLE_BAT(APINT_TYPE_PREFIX, 15804) +HANDLE_BAT(APINT_TYPE_PREFIX, 15805) +HANDLE_BAT(APINT_TYPE_PREFIX, 15806) +HANDLE_BAT(APINT_TYPE_PREFIX, 15807) +HANDLE_BAT(APINT_TYPE_PREFIX, 15808) +HANDLE_BAT(APINT_TYPE_PREFIX, 15809) +HANDLE_BAT(APINT_TYPE_PREFIX, 15810) +HANDLE_BAT(APINT_TYPE_PREFIX, 15811) +HANDLE_BAT(APINT_TYPE_PREFIX, 15812) +HANDLE_BAT(APINT_TYPE_PREFIX, 15813) +HANDLE_BAT(APINT_TYPE_PREFIX, 15814) +HANDLE_BAT(APINT_TYPE_PREFIX, 15815) +HANDLE_BAT(APINT_TYPE_PREFIX, 15816) +HANDLE_BAT(APINT_TYPE_PREFIX, 15817) +HANDLE_BAT(APINT_TYPE_PREFIX, 15818) +HANDLE_BAT(APINT_TYPE_PREFIX, 15819) +HANDLE_BAT(APINT_TYPE_PREFIX, 15820) +HANDLE_BAT(APINT_TYPE_PREFIX, 15821) +HANDLE_BAT(APINT_TYPE_PREFIX, 15822) +HANDLE_BAT(APINT_TYPE_PREFIX, 15823) +HANDLE_BAT(APINT_TYPE_PREFIX, 15824) +HANDLE_BAT(APINT_TYPE_PREFIX, 15825) +HANDLE_BAT(APINT_TYPE_PREFIX, 15826) +HANDLE_BAT(APINT_TYPE_PREFIX, 15827) +HANDLE_BAT(APINT_TYPE_PREFIX, 15828) +HANDLE_BAT(APINT_TYPE_PREFIX, 15829) +HANDLE_BAT(APINT_TYPE_PREFIX, 15830) +HANDLE_BAT(APINT_TYPE_PREFIX, 15831) +HANDLE_BAT(APINT_TYPE_PREFIX, 15832) +HANDLE_BAT(APINT_TYPE_PREFIX, 15833) +HANDLE_BAT(APINT_TYPE_PREFIX, 15834) +HANDLE_BAT(APINT_TYPE_PREFIX, 15835) +HANDLE_BAT(APINT_TYPE_PREFIX, 15836) +HANDLE_BAT(APINT_TYPE_PREFIX, 15837) +HANDLE_BAT(APINT_TYPE_PREFIX, 15838) +HANDLE_BAT(APINT_TYPE_PREFIX, 15839) +HANDLE_BAT(APINT_TYPE_PREFIX, 15840) +HANDLE_BAT(APINT_TYPE_PREFIX, 15841) +HANDLE_BAT(APINT_TYPE_PREFIX, 15842) +HANDLE_BAT(APINT_TYPE_PREFIX, 15843) +HANDLE_BAT(APINT_TYPE_PREFIX, 15844) +HANDLE_BAT(APINT_TYPE_PREFIX, 15845) +HANDLE_BAT(APINT_TYPE_PREFIX, 15846) +HANDLE_BAT(APINT_TYPE_PREFIX, 15847) +HANDLE_BAT(APINT_TYPE_PREFIX, 15848) +HANDLE_BAT(APINT_TYPE_PREFIX, 15849) +HANDLE_BAT(APINT_TYPE_PREFIX, 15850) +HANDLE_BAT(APINT_TYPE_PREFIX, 15851) +HANDLE_BAT(APINT_TYPE_PREFIX, 15852) +HANDLE_BAT(APINT_TYPE_PREFIX, 15853) +HANDLE_BAT(APINT_TYPE_PREFIX, 15854) +HANDLE_BAT(APINT_TYPE_PREFIX, 15855) +HANDLE_BAT(APINT_TYPE_PREFIX, 15856) +HANDLE_BAT(APINT_TYPE_PREFIX, 15857) +HANDLE_BAT(APINT_TYPE_PREFIX, 15858) +HANDLE_BAT(APINT_TYPE_PREFIX, 15859) +HANDLE_BAT(APINT_TYPE_PREFIX, 15860) +HANDLE_BAT(APINT_TYPE_PREFIX, 15861) +HANDLE_BAT(APINT_TYPE_PREFIX, 15862) +HANDLE_BAT(APINT_TYPE_PREFIX, 15863) +HANDLE_BAT(APINT_TYPE_PREFIX, 15864) +HANDLE_BAT(APINT_TYPE_PREFIX, 15865) +HANDLE_BAT(APINT_TYPE_PREFIX, 15866) +HANDLE_BAT(APINT_TYPE_PREFIX, 15867) +HANDLE_BAT(APINT_TYPE_PREFIX, 15868) +HANDLE_BAT(APINT_TYPE_PREFIX, 15869) +HANDLE_BAT(APINT_TYPE_PREFIX, 15870) +HANDLE_BAT(APINT_TYPE_PREFIX, 15871) +HANDLE_BAT(APINT_TYPE_PREFIX, 15872) +HANDLE_BAT(APINT_TYPE_PREFIX, 15873) +HANDLE_BAT(APINT_TYPE_PREFIX, 15874) +HANDLE_BAT(APINT_TYPE_PREFIX, 15875) +HANDLE_BAT(APINT_TYPE_PREFIX, 15876) +HANDLE_BAT(APINT_TYPE_PREFIX, 15877) +HANDLE_BAT(APINT_TYPE_PREFIX, 15878) +HANDLE_BAT(APINT_TYPE_PREFIX, 15879) +HANDLE_BAT(APINT_TYPE_PREFIX, 15880) +HANDLE_BAT(APINT_TYPE_PREFIX, 15881) +HANDLE_BAT(APINT_TYPE_PREFIX, 15882) +HANDLE_BAT(APINT_TYPE_PREFIX, 15883) +HANDLE_BAT(APINT_TYPE_PREFIX, 15884) +HANDLE_BAT(APINT_TYPE_PREFIX, 15885) +HANDLE_BAT(APINT_TYPE_PREFIX, 15886) +HANDLE_BAT(APINT_TYPE_PREFIX, 15887) +HANDLE_BAT(APINT_TYPE_PREFIX, 15888) +HANDLE_BAT(APINT_TYPE_PREFIX, 15889) +HANDLE_BAT(APINT_TYPE_PREFIX, 15890) +HANDLE_BAT(APINT_TYPE_PREFIX, 15891) +HANDLE_BAT(APINT_TYPE_PREFIX, 15892) +HANDLE_BAT(APINT_TYPE_PREFIX, 15893) +HANDLE_BAT(APINT_TYPE_PREFIX, 15894) +HANDLE_BAT(APINT_TYPE_PREFIX, 15895) +HANDLE_BAT(APINT_TYPE_PREFIX, 15896) +HANDLE_BAT(APINT_TYPE_PREFIX, 15897) +HANDLE_BAT(APINT_TYPE_PREFIX, 15898) +HANDLE_BAT(APINT_TYPE_PREFIX, 15899) +HANDLE_BAT(APINT_TYPE_PREFIX, 15900) +HANDLE_BAT(APINT_TYPE_PREFIX, 15901) +HANDLE_BAT(APINT_TYPE_PREFIX, 15902) +HANDLE_BAT(APINT_TYPE_PREFIX, 15903) +HANDLE_BAT(APINT_TYPE_PREFIX, 15904) +HANDLE_BAT(APINT_TYPE_PREFIX, 15905) +HANDLE_BAT(APINT_TYPE_PREFIX, 15906) +HANDLE_BAT(APINT_TYPE_PREFIX, 15907) +HANDLE_BAT(APINT_TYPE_PREFIX, 15908) +HANDLE_BAT(APINT_TYPE_PREFIX, 15909) +HANDLE_BAT(APINT_TYPE_PREFIX, 15910) +HANDLE_BAT(APINT_TYPE_PREFIX, 15911) +HANDLE_BAT(APINT_TYPE_PREFIX, 15912) +HANDLE_BAT(APINT_TYPE_PREFIX, 15913) +HANDLE_BAT(APINT_TYPE_PREFIX, 15914) +HANDLE_BAT(APINT_TYPE_PREFIX, 15915) +HANDLE_BAT(APINT_TYPE_PREFIX, 15916) +HANDLE_BAT(APINT_TYPE_PREFIX, 15917) +HANDLE_BAT(APINT_TYPE_PREFIX, 15918) +HANDLE_BAT(APINT_TYPE_PREFIX, 15919) +HANDLE_BAT(APINT_TYPE_PREFIX, 15920) +HANDLE_BAT(APINT_TYPE_PREFIX, 15921) +HANDLE_BAT(APINT_TYPE_PREFIX, 15922) +HANDLE_BAT(APINT_TYPE_PREFIX, 15923) +HANDLE_BAT(APINT_TYPE_PREFIX, 15924) +HANDLE_BAT(APINT_TYPE_PREFIX, 15925) +HANDLE_BAT(APINT_TYPE_PREFIX, 15926) +HANDLE_BAT(APINT_TYPE_PREFIX, 15927) +HANDLE_BAT(APINT_TYPE_PREFIX, 15928) +HANDLE_BAT(APINT_TYPE_PREFIX, 15929) +HANDLE_BAT(APINT_TYPE_PREFIX, 15930) +HANDLE_BAT(APINT_TYPE_PREFIX, 15931) +HANDLE_BAT(APINT_TYPE_PREFIX, 15932) +HANDLE_BAT(APINT_TYPE_PREFIX, 15933) +HANDLE_BAT(APINT_TYPE_PREFIX, 15934) +HANDLE_BAT(APINT_TYPE_PREFIX, 15935) +HANDLE_BAT(APINT_TYPE_PREFIX, 15936) +HANDLE_BAT(APINT_TYPE_PREFIX, 15937) +HANDLE_BAT(APINT_TYPE_PREFIX, 15938) +HANDLE_BAT(APINT_TYPE_PREFIX, 15939) +HANDLE_BAT(APINT_TYPE_PREFIX, 15940) +HANDLE_BAT(APINT_TYPE_PREFIX, 15941) +HANDLE_BAT(APINT_TYPE_PREFIX, 15942) +HANDLE_BAT(APINT_TYPE_PREFIX, 15943) +HANDLE_BAT(APINT_TYPE_PREFIX, 15944) +HANDLE_BAT(APINT_TYPE_PREFIX, 15945) +HANDLE_BAT(APINT_TYPE_PREFIX, 15946) +HANDLE_BAT(APINT_TYPE_PREFIX, 15947) +HANDLE_BAT(APINT_TYPE_PREFIX, 15948) +HANDLE_BAT(APINT_TYPE_PREFIX, 15949) +HANDLE_BAT(APINT_TYPE_PREFIX, 15950) +HANDLE_BAT(APINT_TYPE_PREFIX, 15951) +HANDLE_BAT(APINT_TYPE_PREFIX, 15952) +HANDLE_BAT(APINT_TYPE_PREFIX, 15953) +HANDLE_BAT(APINT_TYPE_PREFIX, 15954) +HANDLE_BAT(APINT_TYPE_PREFIX, 15955) +HANDLE_BAT(APINT_TYPE_PREFIX, 15956) +HANDLE_BAT(APINT_TYPE_PREFIX, 15957) +HANDLE_BAT(APINT_TYPE_PREFIX, 15958) +HANDLE_BAT(APINT_TYPE_PREFIX, 15959) +HANDLE_BAT(APINT_TYPE_PREFIX, 15960) +HANDLE_BAT(APINT_TYPE_PREFIX, 15961) +HANDLE_BAT(APINT_TYPE_PREFIX, 15962) +HANDLE_BAT(APINT_TYPE_PREFIX, 15963) +HANDLE_BAT(APINT_TYPE_PREFIX, 15964) +HANDLE_BAT(APINT_TYPE_PREFIX, 15965) +HANDLE_BAT(APINT_TYPE_PREFIX, 15966) +HANDLE_BAT(APINT_TYPE_PREFIX, 15967) +HANDLE_BAT(APINT_TYPE_PREFIX, 15968) +HANDLE_BAT(APINT_TYPE_PREFIX, 15969) +HANDLE_BAT(APINT_TYPE_PREFIX, 15970) +HANDLE_BAT(APINT_TYPE_PREFIX, 15971) +HANDLE_BAT(APINT_TYPE_PREFIX, 15972) +HANDLE_BAT(APINT_TYPE_PREFIX, 15973) +HANDLE_BAT(APINT_TYPE_PREFIX, 15974) +HANDLE_BAT(APINT_TYPE_PREFIX, 15975) +HANDLE_BAT(APINT_TYPE_PREFIX, 15976) +HANDLE_BAT(APINT_TYPE_PREFIX, 15977) +HANDLE_BAT(APINT_TYPE_PREFIX, 15978) +HANDLE_BAT(APINT_TYPE_PREFIX, 15979) +HANDLE_BAT(APINT_TYPE_PREFIX, 15980) +HANDLE_BAT(APINT_TYPE_PREFIX, 15981) +HANDLE_BAT(APINT_TYPE_PREFIX, 15982) +HANDLE_BAT(APINT_TYPE_PREFIX, 15983) +HANDLE_BAT(APINT_TYPE_PREFIX, 15984) +HANDLE_BAT(APINT_TYPE_PREFIX, 15985) +HANDLE_BAT(APINT_TYPE_PREFIX, 15986) +HANDLE_BAT(APINT_TYPE_PREFIX, 15987) +HANDLE_BAT(APINT_TYPE_PREFIX, 15988) +HANDLE_BAT(APINT_TYPE_PREFIX, 15989) +HANDLE_BAT(APINT_TYPE_PREFIX, 15990) +HANDLE_BAT(APINT_TYPE_PREFIX, 15991) +HANDLE_BAT(APINT_TYPE_PREFIX, 15992) +HANDLE_BAT(APINT_TYPE_PREFIX, 15993) +HANDLE_BAT(APINT_TYPE_PREFIX, 15994) +HANDLE_BAT(APINT_TYPE_PREFIX, 15995) +HANDLE_BAT(APINT_TYPE_PREFIX, 15996) +HANDLE_BAT(APINT_TYPE_PREFIX, 15997) +HANDLE_BAT(APINT_TYPE_PREFIX, 15998) +HANDLE_BAT(APINT_TYPE_PREFIX, 15999) +HANDLE_BAT(APINT_TYPE_PREFIX, 16000) +HANDLE_BAT(APINT_TYPE_PREFIX, 16001) +HANDLE_BAT(APINT_TYPE_PREFIX, 16002) +HANDLE_BAT(APINT_TYPE_PREFIX, 16003) +HANDLE_BAT(APINT_TYPE_PREFIX, 16004) +HANDLE_BAT(APINT_TYPE_PREFIX, 16005) +HANDLE_BAT(APINT_TYPE_PREFIX, 16006) +HANDLE_BAT(APINT_TYPE_PREFIX, 16007) +HANDLE_BAT(APINT_TYPE_PREFIX, 16008) +HANDLE_BAT(APINT_TYPE_PREFIX, 16009) +HANDLE_BAT(APINT_TYPE_PREFIX, 16010) +HANDLE_BAT(APINT_TYPE_PREFIX, 16011) +HANDLE_BAT(APINT_TYPE_PREFIX, 16012) +HANDLE_BAT(APINT_TYPE_PREFIX, 16013) +HANDLE_BAT(APINT_TYPE_PREFIX, 16014) +HANDLE_BAT(APINT_TYPE_PREFIX, 16015) +HANDLE_BAT(APINT_TYPE_PREFIX, 16016) +HANDLE_BAT(APINT_TYPE_PREFIX, 16017) +HANDLE_BAT(APINT_TYPE_PREFIX, 16018) +HANDLE_BAT(APINT_TYPE_PREFIX, 16019) +HANDLE_BAT(APINT_TYPE_PREFIX, 16020) +HANDLE_BAT(APINT_TYPE_PREFIX, 16021) +HANDLE_BAT(APINT_TYPE_PREFIX, 16022) +HANDLE_BAT(APINT_TYPE_PREFIX, 16023) +HANDLE_BAT(APINT_TYPE_PREFIX, 16024) +HANDLE_BAT(APINT_TYPE_PREFIX, 16025) +HANDLE_BAT(APINT_TYPE_PREFIX, 16026) +HANDLE_BAT(APINT_TYPE_PREFIX, 16027) +HANDLE_BAT(APINT_TYPE_PREFIX, 16028) +HANDLE_BAT(APINT_TYPE_PREFIX, 16029) +HANDLE_BAT(APINT_TYPE_PREFIX, 16030) +HANDLE_BAT(APINT_TYPE_PREFIX, 16031) +HANDLE_BAT(APINT_TYPE_PREFIX, 16032) +HANDLE_BAT(APINT_TYPE_PREFIX, 16033) +HANDLE_BAT(APINT_TYPE_PREFIX, 16034) +HANDLE_BAT(APINT_TYPE_PREFIX, 16035) +HANDLE_BAT(APINT_TYPE_PREFIX, 16036) +HANDLE_BAT(APINT_TYPE_PREFIX, 16037) +HANDLE_BAT(APINT_TYPE_PREFIX, 16038) +HANDLE_BAT(APINT_TYPE_PREFIX, 16039) +HANDLE_BAT(APINT_TYPE_PREFIX, 16040) +HANDLE_BAT(APINT_TYPE_PREFIX, 16041) +HANDLE_BAT(APINT_TYPE_PREFIX, 16042) +HANDLE_BAT(APINT_TYPE_PREFIX, 16043) +HANDLE_BAT(APINT_TYPE_PREFIX, 16044) +HANDLE_BAT(APINT_TYPE_PREFIX, 16045) +HANDLE_BAT(APINT_TYPE_PREFIX, 16046) +HANDLE_BAT(APINT_TYPE_PREFIX, 16047) +HANDLE_BAT(APINT_TYPE_PREFIX, 16048) +HANDLE_BAT(APINT_TYPE_PREFIX, 16049) +HANDLE_BAT(APINT_TYPE_PREFIX, 16050) +HANDLE_BAT(APINT_TYPE_PREFIX, 16051) +HANDLE_BAT(APINT_TYPE_PREFIX, 16052) +HANDLE_BAT(APINT_TYPE_PREFIX, 16053) +HANDLE_BAT(APINT_TYPE_PREFIX, 16054) +HANDLE_BAT(APINT_TYPE_PREFIX, 16055) +HANDLE_BAT(APINT_TYPE_PREFIX, 16056) +HANDLE_BAT(APINT_TYPE_PREFIX, 16057) +HANDLE_BAT(APINT_TYPE_PREFIX, 16058) +HANDLE_BAT(APINT_TYPE_PREFIX, 16059) +HANDLE_BAT(APINT_TYPE_PREFIX, 16060) +HANDLE_BAT(APINT_TYPE_PREFIX, 16061) +HANDLE_BAT(APINT_TYPE_PREFIX, 16062) +HANDLE_BAT(APINT_TYPE_PREFIX, 16063) +HANDLE_BAT(APINT_TYPE_PREFIX, 16064) +HANDLE_BAT(APINT_TYPE_PREFIX, 16065) +HANDLE_BAT(APINT_TYPE_PREFIX, 16066) +HANDLE_BAT(APINT_TYPE_PREFIX, 16067) +HANDLE_BAT(APINT_TYPE_PREFIX, 16068) +HANDLE_BAT(APINT_TYPE_PREFIX, 16069) +HANDLE_BAT(APINT_TYPE_PREFIX, 16070) +HANDLE_BAT(APINT_TYPE_PREFIX, 16071) +HANDLE_BAT(APINT_TYPE_PREFIX, 16072) +HANDLE_BAT(APINT_TYPE_PREFIX, 16073) +HANDLE_BAT(APINT_TYPE_PREFIX, 16074) +HANDLE_BAT(APINT_TYPE_PREFIX, 16075) +HANDLE_BAT(APINT_TYPE_PREFIX, 16076) +HANDLE_BAT(APINT_TYPE_PREFIX, 16077) +HANDLE_BAT(APINT_TYPE_PREFIX, 16078) +HANDLE_BAT(APINT_TYPE_PREFIX, 16079) +HANDLE_BAT(APINT_TYPE_PREFIX, 16080) +HANDLE_BAT(APINT_TYPE_PREFIX, 16081) +HANDLE_BAT(APINT_TYPE_PREFIX, 16082) +HANDLE_BAT(APINT_TYPE_PREFIX, 16083) +HANDLE_BAT(APINT_TYPE_PREFIX, 16084) +HANDLE_BAT(APINT_TYPE_PREFIX, 16085) +HANDLE_BAT(APINT_TYPE_PREFIX, 16086) +HANDLE_BAT(APINT_TYPE_PREFIX, 16087) +HANDLE_BAT(APINT_TYPE_PREFIX, 16088) +HANDLE_BAT(APINT_TYPE_PREFIX, 16089) +HANDLE_BAT(APINT_TYPE_PREFIX, 16090) +HANDLE_BAT(APINT_TYPE_PREFIX, 16091) +HANDLE_BAT(APINT_TYPE_PREFIX, 16092) +HANDLE_BAT(APINT_TYPE_PREFIX, 16093) +HANDLE_BAT(APINT_TYPE_PREFIX, 16094) +HANDLE_BAT(APINT_TYPE_PREFIX, 16095) +HANDLE_BAT(APINT_TYPE_PREFIX, 16096) +HANDLE_BAT(APINT_TYPE_PREFIX, 16097) +HANDLE_BAT(APINT_TYPE_PREFIX, 16098) +HANDLE_BAT(APINT_TYPE_PREFIX, 16099) +HANDLE_BAT(APINT_TYPE_PREFIX, 16100) +HANDLE_BAT(APINT_TYPE_PREFIX, 16101) +HANDLE_BAT(APINT_TYPE_PREFIX, 16102) +HANDLE_BAT(APINT_TYPE_PREFIX, 16103) +HANDLE_BAT(APINT_TYPE_PREFIX, 16104) +HANDLE_BAT(APINT_TYPE_PREFIX, 16105) +HANDLE_BAT(APINT_TYPE_PREFIX, 16106) +HANDLE_BAT(APINT_TYPE_PREFIX, 16107) +HANDLE_BAT(APINT_TYPE_PREFIX, 16108) +HANDLE_BAT(APINT_TYPE_PREFIX, 16109) +HANDLE_BAT(APINT_TYPE_PREFIX, 16110) +HANDLE_BAT(APINT_TYPE_PREFIX, 16111) +HANDLE_BAT(APINT_TYPE_PREFIX, 16112) +HANDLE_BAT(APINT_TYPE_PREFIX, 16113) +HANDLE_BAT(APINT_TYPE_PREFIX, 16114) +HANDLE_BAT(APINT_TYPE_PREFIX, 16115) +HANDLE_BAT(APINT_TYPE_PREFIX, 16116) +HANDLE_BAT(APINT_TYPE_PREFIX, 16117) +HANDLE_BAT(APINT_TYPE_PREFIX, 16118) +HANDLE_BAT(APINT_TYPE_PREFIX, 16119) +HANDLE_BAT(APINT_TYPE_PREFIX, 16120) +HANDLE_BAT(APINT_TYPE_PREFIX, 16121) +HANDLE_BAT(APINT_TYPE_PREFIX, 16122) +HANDLE_BAT(APINT_TYPE_PREFIX, 16123) +HANDLE_BAT(APINT_TYPE_PREFIX, 16124) +HANDLE_BAT(APINT_TYPE_PREFIX, 16125) +HANDLE_BAT(APINT_TYPE_PREFIX, 16126) +HANDLE_BAT(APINT_TYPE_PREFIX, 16127) +HANDLE_BAT(APINT_TYPE_PREFIX, 16128) +HANDLE_BAT(APINT_TYPE_PREFIX, 16129) +HANDLE_BAT(APINT_TYPE_PREFIX, 16130) +HANDLE_BAT(APINT_TYPE_PREFIX, 16131) +HANDLE_BAT(APINT_TYPE_PREFIX, 16132) +HANDLE_BAT(APINT_TYPE_PREFIX, 16133) +HANDLE_BAT(APINT_TYPE_PREFIX, 16134) +HANDLE_BAT(APINT_TYPE_PREFIX, 16135) +HANDLE_BAT(APINT_TYPE_PREFIX, 16136) +HANDLE_BAT(APINT_TYPE_PREFIX, 16137) +HANDLE_BAT(APINT_TYPE_PREFIX, 16138) +HANDLE_BAT(APINT_TYPE_PREFIX, 16139) +HANDLE_BAT(APINT_TYPE_PREFIX, 16140) +HANDLE_BAT(APINT_TYPE_PREFIX, 16141) +HANDLE_BAT(APINT_TYPE_PREFIX, 16142) +HANDLE_BAT(APINT_TYPE_PREFIX, 16143) +HANDLE_BAT(APINT_TYPE_PREFIX, 16144) +HANDLE_BAT(APINT_TYPE_PREFIX, 16145) +HANDLE_BAT(APINT_TYPE_PREFIX, 16146) +HANDLE_BAT(APINT_TYPE_PREFIX, 16147) +HANDLE_BAT(APINT_TYPE_PREFIX, 16148) +HANDLE_BAT(APINT_TYPE_PREFIX, 16149) +HANDLE_BAT(APINT_TYPE_PREFIX, 16150) +HANDLE_BAT(APINT_TYPE_PREFIX, 16151) +HANDLE_BAT(APINT_TYPE_PREFIX, 16152) +HANDLE_BAT(APINT_TYPE_PREFIX, 16153) +HANDLE_BAT(APINT_TYPE_PREFIX, 16154) +HANDLE_BAT(APINT_TYPE_PREFIX, 16155) +HANDLE_BAT(APINT_TYPE_PREFIX, 16156) +HANDLE_BAT(APINT_TYPE_PREFIX, 16157) +HANDLE_BAT(APINT_TYPE_PREFIX, 16158) +HANDLE_BAT(APINT_TYPE_PREFIX, 16159) +HANDLE_BAT(APINT_TYPE_PREFIX, 16160) +HANDLE_BAT(APINT_TYPE_PREFIX, 16161) +HANDLE_BAT(APINT_TYPE_PREFIX, 16162) +HANDLE_BAT(APINT_TYPE_PREFIX, 16163) +HANDLE_BAT(APINT_TYPE_PREFIX, 16164) +HANDLE_BAT(APINT_TYPE_PREFIX, 16165) +HANDLE_BAT(APINT_TYPE_PREFIX, 16166) +HANDLE_BAT(APINT_TYPE_PREFIX, 16167) +HANDLE_BAT(APINT_TYPE_PREFIX, 16168) +HANDLE_BAT(APINT_TYPE_PREFIX, 16169) +HANDLE_BAT(APINT_TYPE_PREFIX, 16170) +HANDLE_BAT(APINT_TYPE_PREFIX, 16171) +HANDLE_BAT(APINT_TYPE_PREFIX, 16172) +HANDLE_BAT(APINT_TYPE_PREFIX, 16173) +HANDLE_BAT(APINT_TYPE_PREFIX, 16174) +HANDLE_BAT(APINT_TYPE_PREFIX, 16175) +HANDLE_BAT(APINT_TYPE_PREFIX, 16176) +HANDLE_BAT(APINT_TYPE_PREFIX, 16177) +HANDLE_BAT(APINT_TYPE_PREFIX, 16178) +HANDLE_BAT(APINT_TYPE_PREFIX, 16179) +HANDLE_BAT(APINT_TYPE_PREFIX, 16180) +HANDLE_BAT(APINT_TYPE_PREFIX, 16181) +HANDLE_BAT(APINT_TYPE_PREFIX, 16182) +HANDLE_BAT(APINT_TYPE_PREFIX, 16183) +HANDLE_BAT(APINT_TYPE_PREFIX, 16184) +HANDLE_BAT(APINT_TYPE_PREFIX, 16185) +HANDLE_BAT(APINT_TYPE_PREFIX, 16186) +HANDLE_BAT(APINT_TYPE_PREFIX, 16187) +HANDLE_BAT(APINT_TYPE_PREFIX, 16188) +HANDLE_BAT(APINT_TYPE_PREFIX, 16189) +HANDLE_BAT(APINT_TYPE_PREFIX, 16190) +HANDLE_BAT(APINT_TYPE_PREFIX, 16191) +HANDLE_BAT(APINT_TYPE_PREFIX, 16192) +HANDLE_BAT(APINT_TYPE_PREFIX, 16193) +HANDLE_BAT(APINT_TYPE_PREFIX, 16194) +HANDLE_BAT(APINT_TYPE_PREFIX, 16195) +HANDLE_BAT(APINT_TYPE_PREFIX, 16196) +HANDLE_BAT(APINT_TYPE_PREFIX, 16197) +HANDLE_BAT(APINT_TYPE_PREFIX, 16198) +HANDLE_BAT(APINT_TYPE_PREFIX, 16199) +HANDLE_BAT(APINT_TYPE_PREFIX, 16200) +HANDLE_BAT(APINT_TYPE_PREFIX, 16201) +HANDLE_BAT(APINT_TYPE_PREFIX, 16202) +HANDLE_BAT(APINT_TYPE_PREFIX, 16203) +HANDLE_BAT(APINT_TYPE_PREFIX, 16204) +HANDLE_BAT(APINT_TYPE_PREFIX, 16205) +HANDLE_BAT(APINT_TYPE_PREFIX, 16206) +HANDLE_BAT(APINT_TYPE_PREFIX, 16207) +HANDLE_BAT(APINT_TYPE_PREFIX, 16208) +HANDLE_BAT(APINT_TYPE_PREFIX, 16209) +HANDLE_BAT(APINT_TYPE_PREFIX, 16210) +HANDLE_BAT(APINT_TYPE_PREFIX, 16211) +HANDLE_BAT(APINT_TYPE_PREFIX, 16212) +HANDLE_BAT(APINT_TYPE_PREFIX, 16213) +HANDLE_BAT(APINT_TYPE_PREFIX, 16214) +HANDLE_BAT(APINT_TYPE_PREFIX, 16215) +HANDLE_BAT(APINT_TYPE_PREFIX, 16216) +HANDLE_BAT(APINT_TYPE_PREFIX, 16217) +HANDLE_BAT(APINT_TYPE_PREFIX, 16218) +HANDLE_BAT(APINT_TYPE_PREFIX, 16219) +HANDLE_BAT(APINT_TYPE_PREFIX, 16220) +HANDLE_BAT(APINT_TYPE_PREFIX, 16221) +HANDLE_BAT(APINT_TYPE_PREFIX, 16222) +HANDLE_BAT(APINT_TYPE_PREFIX, 16223) +HANDLE_BAT(APINT_TYPE_PREFIX, 16224) +HANDLE_BAT(APINT_TYPE_PREFIX, 16225) +HANDLE_BAT(APINT_TYPE_PREFIX, 16226) +HANDLE_BAT(APINT_TYPE_PREFIX, 16227) +HANDLE_BAT(APINT_TYPE_PREFIX, 16228) +HANDLE_BAT(APINT_TYPE_PREFIX, 16229) +HANDLE_BAT(APINT_TYPE_PREFIX, 16230) +HANDLE_BAT(APINT_TYPE_PREFIX, 16231) +HANDLE_BAT(APINT_TYPE_PREFIX, 16232) +HANDLE_BAT(APINT_TYPE_PREFIX, 16233) +HANDLE_BAT(APINT_TYPE_PREFIX, 16234) +HANDLE_BAT(APINT_TYPE_PREFIX, 16235) +HANDLE_BAT(APINT_TYPE_PREFIX, 16236) +HANDLE_BAT(APINT_TYPE_PREFIX, 16237) +HANDLE_BAT(APINT_TYPE_PREFIX, 16238) +HANDLE_BAT(APINT_TYPE_PREFIX, 16239) +HANDLE_BAT(APINT_TYPE_PREFIX, 16240) +HANDLE_BAT(APINT_TYPE_PREFIX, 16241) +HANDLE_BAT(APINT_TYPE_PREFIX, 16242) +HANDLE_BAT(APINT_TYPE_PREFIX, 16243) +HANDLE_BAT(APINT_TYPE_PREFIX, 16244) +HANDLE_BAT(APINT_TYPE_PREFIX, 16245) +HANDLE_BAT(APINT_TYPE_PREFIX, 16246) +HANDLE_BAT(APINT_TYPE_PREFIX, 16247) +HANDLE_BAT(APINT_TYPE_PREFIX, 16248) +HANDLE_BAT(APINT_TYPE_PREFIX, 16249) +HANDLE_BAT(APINT_TYPE_PREFIX, 16250) +HANDLE_BAT(APINT_TYPE_PREFIX, 16251) +HANDLE_BAT(APINT_TYPE_PREFIX, 16252) +HANDLE_BAT(APINT_TYPE_PREFIX, 16253) +HANDLE_BAT(APINT_TYPE_PREFIX, 16254) +HANDLE_BAT(APINT_TYPE_PREFIX, 16255) +HANDLE_BAT(APINT_TYPE_PREFIX, 16256) +HANDLE_BAT(APINT_TYPE_PREFIX, 16257) +HANDLE_BAT(APINT_TYPE_PREFIX, 16258) +HANDLE_BAT(APINT_TYPE_PREFIX, 16259) +HANDLE_BAT(APINT_TYPE_PREFIX, 16260) +HANDLE_BAT(APINT_TYPE_PREFIX, 16261) +HANDLE_BAT(APINT_TYPE_PREFIX, 16262) +HANDLE_BAT(APINT_TYPE_PREFIX, 16263) +HANDLE_BAT(APINT_TYPE_PREFIX, 16264) +HANDLE_BAT(APINT_TYPE_PREFIX, 16265) +HANDLE_BAT(APINT_TYPE_PREFIX, 16266) +HANDLE_BAT(APINT_TYPE_PREFIX, 16267) +HANDLE_BAT(APINT_TYPE_PREFIX, 16268) +HANDLE_BAT(APINT_TYPE_PREFIX, 16269) +HANDLE_BAT(APINT_TYPE_PREFIX, 16270) +HANDLE_BAT(APINT_TYPE_PREFIX, 16271) +HANDLE_BAT(APINT_TYPE_PREFIX, 16272) +HANDLE_BAT(APINT_TYPE_PREFIX, 16273) +HANDLE_BAT(APINT_TYPE_PREFIX, 16274) +HANDLE_BAT(APINT_TYPE_PREFIX, 16275) +HANDLE_BAT(APINT_TYPE_PREFIX, 16276) +HANDLE_BAT(APINT_TYPE_PREFIX, 16277) +HANDLE_BAT(APINT_TYPE_PREFIX, 16278) +HANDLE_BAT(APINT_TYPE_PREFIX, 16279) +HANDLE_BAT(APINT_TYPE_PREFIX, 16280) +HANDLE_BAT(APINT_TYPE_PREFIX, 16281) +HANDLE_BAT(APINT_TYPE_PREFIX, 16282) +HANDLE_BAT(APINT_TYPE_PREFIX, 16283) +HANDLE_BAT(APINT_TYPE_PREFIX, 16284) +HANDLE_BAT(APINT_TYPE_PREFIX, 16285) +HANDLE_BAT(APINT_TYPE_PREFIX, 16286) +HANDLE_BAT(APINT_TYPE_PREFIX, 16287) +HANDLE_BAT(APINT_TYPE_PREFIX, 16288) +HANDLE_BAT(APINT_TYPE_PREFIX, 16289) +HANDLE_BAT(APINT_TYPE_PREFIX, 16290) +HANDLE_BAT(APINT_TYPE_PREFIX, 16291) +HANDLE_BAT(APINT_TYPE_PREFIX, 16292) +HANDLE_BAT(APINT_TYPE_PREFIX, 16293) +HANDLE_BAT(APINT_TYPE_PREFIX, 16294) +HANDLE_BAT(APINT_TYPE_PREFIX, 16295) +HANDLE_BAT(APINT_TYPE_PREFIX, 16296) +HANDLE_BAT(APINT_TYPE_PREFIX, 16297) +HANDLE_BAT(APINT_TYPE_PREFIX, 16298) +HANDLE_BAT(APINT_TYPE_PREFIX, 16299) +HANDLE_BAT(APINT_TYPE_PREFIX, 16300) +HANDLE_BAT(APINT_TYPE_PREFIX, 16301) +HANDLE_BAT(APINT_TYPE_PREFIX, 16302) +HANDLE_BAT(APINT_TYPE_PREFIX, 16303) +HANDLE_BAT(APINT_TYPE_PREFIX, 16304) +HANDLE_BAT(APINT_TYPE_PREFIX, 16305) +HANDLE_BAT(APINT_TYPE_PREFIX, 16306) +HANDLE_BAT(APINT_TYPE_PREFIX, 16307) +HANDLE_BAT(APINT_TYPE_PREFIX, 16308) +HANDLE_BAT(APINT_TYPE_PREFIX, 16309) +HANDLE_BAT(APINT_TYPE_PREFIX, 16310) +HANDLE_BAT(APINT_TYPE_PREFIX, 16311) +HANDLE_BAT(APINT_TYPE_PREFIX, 16312) +HANDLE_BAT(APINT_TYPE_PREFIX, 16313) +HANDLE_BAT(APINT_TYPE_PREFIX, 16314) +HANDLE_BAT(APINT_TYPE_PREFIX, 16315) +HANDLE_BAT(APINT_TYPE_PREFIX, 16316) +HANDLE_BAT(APINT_TYPE_PREFIX, 16317) +HANDLE_BAT(APINT_TYPE_PREFIX, 16318) +HANDLE_BAT(APINT_TYPE_PREFIX, 16319) +HANDLE_BAT(APINT_TYPE_PREFIX, 16320) +HANDLE_BAT(APINT_TYPE_PREFIX, 16321) +HANDLE_BAT(APINT_TYPE_PREFIX, 16322) +HANDLE_BAT(APINT_TYPE_PREFIX, 16323) +HANDLE_BAT(APINT_TYPE_PREFIX, 16324) +HANDLE_BAT(APINT_TYPE_PREFIX, 16325) +HANDLE_BAT(APINT_TYPE_PREFIX, 16326) +HANDLE_BAT(APINT_TYPE_PREFIX, 16327) +HANDLE_BAT(APINT_TYPE_PREFIX, 16328) +HANDLE_BAT(APINT_TYPE_PREFIX, 16329) +HANDLE_BAT(APINT_TYPE_PREFIX, 16330) +HANDLE_BAT(APINT_TYPE_PREFIX, 16331) +HANDLE_BAT(APINT_TYPE_PREFIX, 16332) +HANDLE_BAT(APINT_TYPE_PREFIX, 16333) +HANDLE_BAT(APINT_TYPE_PREFIX, 16334) +HANDLE_BAT(APINT_TYPE_PREFIX, 16335) +HANDLE_BAT(APINT_TYPE_PREFIX, 16336) +HANDLE_BAT(APINT_TYPE_PREFIX, 16337) +HANDLE_BAT(APINT_TYPE_PREFIX, 16338) +HANDLE_BAT(APINT_TYPE_PREFIX, 16339) +HANDLE_BAT(APINT_TYPE_PREFIX, 16340) +HANDLE_BAT(APINT_TYPE_PREFIX, 16341) +HANDLE_BAT(APINT_TYPE_PREFIX, 16342) +HANDLE_BAT(APINT_TYPE_PREFIX, 16343) +HANDLE_BAT(APINT_TYPE_PREFIX, 16344) +HANDLE_BAT(APINT_TYPE_PREFIX, 16345) +HANDLE_BAT(APINT_TYPE_PREFIX, 16346) +HANDLE_BAT(APINT_TYPE_PREFIX, 16347) +HANDLE_BAT(APINT_TYPE_PREFIX, 16348) +HANDLE_BAT(APINT_TYPE_PREFIX, 16349) +HANDLE_BAT(APINT_TYPE_PREFIX, 16350) +HANDLE_BAT(APINT_TYPE_PREFIX, 16351) +HANDLE_BAT(APINT_TYPE_PREFIX, 16352) +HANDLE_BAT(APINT_TYPE_PREFIX, 16353) +HANDLE_BAT(APINT_TYPE_PREFIX, 16354) +HANDLE_BAT(APINT_TYPE_PREFIX, 16355) +HANDLE_BAT(APINT_TYPE_PREFIX, 16356) +HANDLE_BAT(APINT_TYPE_PREFIX, 16357) +HANDLE_BAT(APINT_TYPE_PREFIX, 16358) +HANDLE_BAT(APINT_TYPE_PREFIX, 16359) +HANDLE_BAT(APINT_TYPE_PREFIX, 16360) +HANDLE_BAT(APINT_TYPE_PREFIX, 16361) +HANDLE_BAT(APINT_TYPE_PREFIX, 16362) +HANDLE_BAT(APINT_TYPE_PREFIX, 16363) +HANDLE_BAT(APINT_TYPE_PREFIX, 16364) +HANDLE_BAT(APINT_TYPE_PREFIX, 16365) +HANDLE_BAT(APINT_TYPE_PREFIX, 16366) +HANDLE_BAT(APINT_TYPE_PREFIX, 16367) +HANDLE_BAT(APINT_TYPE_PREFIX, 16368) +HANDLE_BAT(APINT_TYPE_PREFIX, 16369) +HANDLE_BAT(APINT_TYPE_PREFIX, 16370) +HANDLE_BAT(APINT_TYPE_PREFIX, 16371) +HANDLE_BAT(APINT_TYPE_PREFIX, 16372) +HANDLE_BAT(APINT_TYPE_PREFIX, 16373) +HANDLE_BAT(APINT_TYPE_PREFIX, 16374) +HANDLE_BAT(APINT_TYPE_PREFIX, 16375) +HANDLE_BAT(APINT_TYPE_PREFIX, 16376) +HANDLE_BAT(APINT_TYPE_PREFIX, 16377) +HANDLE_BAT(APINT_TYPE_PREFIX, 16378) +HANDLE_BAT(APINT_TYPE_PREFIX, 16379) +HANDLE_BAT(APINT_TYPE_PREFIX, 16380) +HANDLE_BAT(APINT_TYPE_PREFIX, 16381) +HANDLE_BAT(APINT_TYPE_PREFIX, 16382) +HANDLE_BAT(APINT_TYPE_PREFIX, 16383) +HANDLE_BAT(APINT_TYPE_PREFIX, 16384) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 16 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 16385) +HANDLE_BAT(, 16386) +HANDLE_BAT(, 16387) +HANDLE_BAT(, 16388) +HANDLE_BAT(, 16389) +HANDLE_BAT(, 16390) +HANDLE_BAT(, 16391) +HANDLE_BAT(, 16392) +HANDLE_BAT(, 16393) +HANDLE_BAT(, 16394) +HANDLE_BAT(, 16395) +HANDLE_BAT(, 16396) +HANDLE_BAT(, 16397) +HANDLE_BAT(, 16398) +HANDLE_BAT(, 16399) +HANDLE_BAT(, 16400) +HANDLE_BAT(, 16401) +HANDLE_BAT(, 16402) +HANDLE_BAT(, 16403) +HANDLE_BAT(, 16404) +HANDLE_BAT(, 16405) +HANDLE_BAT(, 16406) +HANDLE_BAT(, 16407) +HANDLE_BAT(, 16408) +HANDLE_BAT(, 16409) +HANDLE_BAT(, 16410) +HANDLE_BAT(, 16411) +HANDLE_BAT(, 16412) +HANDLE_BAT(, 16413) +HANDLE_BAT(, 16414) +HANDLE_BAT(, 16415) +HANDLE_BAT(, 16416) +HANDLE_BAT(, 16417) +HANDLE_BAT(, 16418) +HANDLE_BAT(, 16419) +HANDLE_BAT(, 16420) +HANDLE_BAT(, 16421) +HANDLE_BAT(, 16422) +HANDLE_BAT(, 16423) +HANDLE_BAT(, 16424) +HANDLE_BAT(, 16425) +HANDLE_BAT(, 16426) +HANDLE_BAT(, 16427) +HANDLE_BAT(, 16428) +HANDLE_BAT(, 16429) +HANDLE_BAT(, 16430) +HANDLE_BAT(, 16431) +HANDLE_BAT(, 16432) +HANDLE_BAT(, 16433) +HANDLE_BAT(, 16434) +HANDLE_BAT(, 16435) +HANDLE_BAT(, 16436) +HANDLE_BAT(, 16437) +HANDLE_BAT(, 16438) +HANDLE_BAT(, 16439) +HANDLE_BAT(, 16440) +HANDLE_BAT(, 16441) +HANDLE_BAT(, 16442) +HANDLE_BAT(, 16443) +HANDLE_BAT(, 16444) +HANDLE_BAT(, 16445) +HANDLE_BAT(, 16446) +HANDLE_BAT(, 16447) +HANDLE_BAT(, 16448) +HANDLE_BAT(, 16449) +HANDLE_BAT(, 16450) +HANDLE_BAT(, 16451) +HANDLE_BAT(, 16452) +HANDLE_BAT(, 16453) +HANDLE_BAT(, 16454) +HANDLE_BAT(, 16455) +HANDLE_BAT(, 16456) +HANDLE_BAT(, 16457) +HANDLE_BAT(, 16458) +HANDLE_BAT(, 16459) +HANDLE_BAT(, 16460) +HANDLE_BAT(, 16461) +HANDLE_BAT(, 16462) +HANDLE_BAT(, 16463) +HANDLE_BAT(, 16464) +HANDLE_BAT(, 16465) +HANDLE_BAT(, 16466) +HANDLE_BAT(, 16467) +HANDLE_BAT(, 16468) +HANDLE_BAT(, 16469) +HANDLE_BAT(, 16470) +HANDLE_BAT(, 16471) +HANDLE_BAT(, 16472) +HANDLE_BAT(, 16473) +HANDLE_BAT(, 16474) +HANDLE_BAT(, 16475) +HANDLE_BAT(, 16476) +HANDLE_BAT(, 16477) +HANDLE_BAT(, 16478) +HANDLE_BAT(, 16479) +HANDLE_BAT(, 16480) +HANDLE_BAT(, 16481) +HANDLE_BAT(, 16482) +HANDLE_BAT(, 16483) +HANDLE_BAT(, 16484) +HANDLE_BAT(, 16485) +HANDLE_BAT(, 16486) +HANDLE_BAT(, 16487) +HANDLE_BAT(, 16488) +HANDLE_BAT(, 16489) +HANDLE_BAT(, 16490) +HANDLE_BAT(, 16491) +HANDLE_BAT(, 16492) +HANDLE_BAT(, 16493) +HANDLE_BAT(, 16494) +HANDLE_BAT(, 16495) +HANDLE_BAT(, 16496) +HANDLE_BAT(, 16497) +HANDLE_BAT(, 16498) +HANDLE_BAT(, 16499) +HANDLE_BAT(, 16500) +HANDLE_BAT(, 16501) +HANDLE_BAT(, 16502) +HANDLE_BAT(, 16503) +HANDLE_BAT(, 16504) +HANDLE_BAT(, 16505) +HANDLE_BAT(, 16506) +HANDLE_BAT(, 16507) +HANDLE_BAT(, 16508) +HANDLE_BAT(, 16509) +HANDLE_BAT(, 16510) +HANDLE_BAT(, 16511) +HANDLE_BAT(, 16512) +HANDLE_BAT(, 16513) +HANDLE_BAT(, 16514) +HANDLE_BAT(, 16515) +HANDLE_BAT(, 16516) +HANDLE_BAT(, 16517) +HANDLE_BAT(, 16518) +HANDLE_BAT(, 16519) +HANDLE_BAT(, 16520) +HANDLE_BAT(, 16521) +HANDLE_BAT(, 16522) +HANDLE_BAT(, 16523) +HANDLE_BAT(, 16524) +HANDLE_BAT(, 16525) +HANDLE_BAT(, 16526) +HANDLE_BAT(, 16527) +HANDLE_BAT(, 16528) +HANDLE_BAT(, 16529) +HANDLE_BAT(, 16530) +HANDLE_BAT(, 16531) +HANDLE_BAT(, 16532) +HANDLE_BAT(, 16533) +HANDLE_BAT(, 16534) +HANDLE_BAT(, 16535) +HANDLE_BAT(, 16536) +HANDLE_BAT(, 16537) +HANDLE_BAT(, 16538) +HANDLE_BAT(, 16539) +HANDLE_BAT(, 16540) +HANDLE_BAT(, 16541) +HANDLE_BAT(, 16542) +HANDLE_BAT(, 16543) +HANDLE_BAT(, 16544) +HANDLE_BAT(, 16545) +HANDLE_BAT(, 16546) +HANDLE_BAT(, 16547) +HANDLE_BAT(, 16548) +HANDLE_BAT(, 16549) +HANDLE_BAT(, 16550) +HANDLE_BAT(, 16551) +HANDLE_BAT(, 16552) +HANDLE_BAT(, 16553) +HANDLE_BAT(, 16554) +HANDLE_BAT(, 16555) +HANDLE_BAT(, 16556) +HANDLE_BAT(, 16557) +HANDLE_BAT(, 16558) +HANDLE_BAT(, 16559) +HANDLE_BAT(, 16560) +HANDLE_BAT(, 16561) +HANDLE_BAT(, 16562) +HANDLE_BAT(, 16563) +HANDLE_BAT(, 16564) +HANDLE_BAT(, 16565) +HANDLE_BAT(, 16566) +HANDLE_BAT(, 16567) +HANDLE_BAT(, 16568) +HANDLE_BAT(, 16569) +HANDLE_BAT(, 16570) +HANDLE_BAT(, 16571) +HANDLE_BAT(, 16572) +HANDLE_BAT(, 16573) +HANDLE_BAT(, 16574) +HANDLE_BAT(, 16575) +HANDLE_BAT(, 16576) +HANDLE_BAT(, 16577) +HANDLE_BAT(, 16578) +HANDLE_BAT(, 16579) +HANDLE_BAT(, 16580) +HANDLE_BAT(, 16581) +HANDLE_BAT(, 16582) +HANDLE_BAT(, 16583) +HANDLE_BAT(, 16584) +HANDLE_BAT(, 16585) +HANDLE_BAT(, 16586) +HANDLE_BAT(, 16587) +HANDLE_BAT(, 16588) +HANDLE_BAT(, 16589) +HANDLE_BAT(, 16590) +HANDLE_BAT(, 16591) +HANDLE_BAT(, 16592) +HANDLE_BAT(, 16593) +HANDLE_BAT(, 16594) +HANDLE_BAT(, 16595) +HANDLE_BAT(, 16596) +HANDLE_BAT(, 16597) +HANDLE_BAT(, 16598) +HANDLE_BAT(, 16599) +HANDLE_BAT(, 16600) +HANDLE_BAT(, 16601) +HANDLE_BAT(, 16602) +HANDLE_BAT(, 16603) +HANDLE_BAT(, 16604) +HANDLE_BAT(, 16605) +HANDLE_BAT(, 16606) +HANDLE_BAT(, 16607) +HANDLE_BAT(, 16608) +HANDLE_BAT(, 16609) +HANDLE_BAT(, 16610) +HANDLE_BAT(, 16611) +HANDLE_BAT(, 16612) +HANDLE_BAT(, 16613) +HANDLE_BAT(, 16614) +HANDLE_BAT(, 16615) +HANDLE_BAT(, 16616) +HANDLE_BAT(, 16617) +HANDLE_BAT(, 16618) +HANDLE_BAT(, 16619) +HANDLE_BAT(, 16620) +HANDLE_BAT(, 16621) +HANDLE_BAT(, 16622) +HANDLE_BAT(, 16623) +HANDLE_BAT(, 16624) +HANDLE_BAT(, 16625) +HANDLE_BAT(, 16626) +HANDLE_BAT(, 16627) +HANDLE_BAT(, 16628) +HANDLE_BAT(, 16629) +HANDLE_BAT(, 16630) +HANDLE_BAT(, 16631) +HANDLE_BAT(, 16632) +HANDLE_BAT(, 16633) +HANDLE_BAT(, 16634) +HANDLE_BAT(, 16635) +HANDLE_BAT(, 16636) +HANDLE_BAT(, 16637) +HANDLE_BAT(, 16638) +HANDLE_BAT(, 16639) +HANDLE_BAT(, 16640) +HANDLE_BAT(, 16641) +HANDLE_BAT(, 16642) +HANDLE_BAT(, 16643) +HANDLE_BAT(, 16644) +HANDLE_BAT(, 16645) +HANDLE_BAT(, 16646) +HANDLE_BAT(, 16647) +HANDLE_BAT(, 16648) +HANDLE_BAT(, 16649) +HANDLE_BAT(, 16650) +HANDLE_BAT(, 16651) +HANDLE_BAT(, 16652) +HANDLE_BAT(, 16653) +HANDLE_BAT(, 16654) +HANDLE_BAT(, 16655) +HANDLE_BAT(, 16656) +HANDLE_BAT(, 16657) +HANDLE_BAT(, 16658) +HANDLE_BAT(, 16659) +HANDLE_BAT(, 16660) +HANDLE_BAT(, 16661) +HANDLE_BAT(, 16662) +HANDLE_BAT(, 16663) +HANDLE_BAT(, 16664) +HANDLE_BAT(, 16665) +HANDLE_BAT(, 16666) +HANDLE_BAT(, 16667) +HANDLE_BAT(, 16668) +HANDLE_BAT(, 16669) +HANDLE_BAT(, 16670) +HANDLE_BAT(, 16671) +HANDLE_BAT(, 16672) +HANDLE_BAT(, 16673) +HANDLE_BAT(, 16674) +HANDLE_BAT(, 16675) +HANDLE_BAT(, 16676) +HANDLE_BAT(, 16677) +HANDLE_BAT(, 16678) +HANDLE_BAT(, 16679) +HANDLE_BAT(, 16680) +HANDLE_BAT(, 16681) +HANDLE_BAT(, 16682) +HANDLE_BAT(, 16683) +HANDLE_BAT(, 16684) +HANDLE_BAT(, 16685) +HANDLE_BAT(, 16686) +HANDLE_BAT(, 16687) +HANDLE_BAT(, 16688) +HANDLE_BAT(, 16689) +HANDLE_BAT(, 16690) +HANDLE_BAT(, 16691) +HANDLE_BAT(, 16692) +HANDLE_BAT(, 16693) +HANDLE_BAT(, 16694) +HANDLE_BAT(, 16695) +HANDLE_BAT(, 16696) +HANDLE_BAT(, 16697) +HANDLE_BAT(, 16698) +HANDLE_BAT(, 16699) +HANDLE_BAT(, 16700) +HANDLE_BAT(, 16701) +HANDLE_BAT(, 16702) +HANDLE_BAT(, 16703) +HANDLE_BAT(, 16704) +HANDLE_BAT(, 16705) +HANDLE_BAT(, 16706) +HANDLE_BAT(, 16707) +HANDLE_BAT(, 16708) +HANDLE_BAT(, 16709) +HANDLE_BAT(, 16710) +HANDLE_BAT(, 16711) +HANDLE_BAT(, 16712) +HANDLE_BAT(, 16713) +HANDLE_BAT(, 16714) +HANDLE_BAT(, 16715) +HANDLE_BAT(, 16716) +HANDLE_BAT(, 16717) +HANDLE_BAT(, 16718) +HANDLE_BAT(, 16719) +HANDLE_BAT(, 16720) +HANDLE_BAT(, 16721) +HANDLE_BAT(, 16722) +HANDLE_BAT(, 16723) +HANDLE_BAT(, 16724) +HANDLE_BAT(, 16725) +HANDLE_BAT(, 16726) +HANDLE_BAT(, 16727) +HANDLE_BAT(, 16728) +HANDLE_BAT(, 16729) +HANDLE_BAT(, 16730) +HANDLE_BAT(, 16731) +HANDLE_BAT(, 16732) +HANDLE_BAT(, 16733) +HANDLE_BAT(, 16734) +HANDLE_BAT(, 16735) +HANDLE_BAT(, 16736) +HANDLE_BAT(, 16737) +HANDLE_BAT(, 16738) +HANDLE_BAT(, 16739) +HANDLE_BAT(, 16740) +HANDLE_BAT(, 16741) +HANDLE_BAT(, 16742) +HANDLE_BAT(, 16743) +HANDLE_BAT(, 16744) +HANDLE_BAT(, 16745) +HANDLE_BAT(, 16746) +HANDLE_BAT(, 16747) +HANDLE_BAT(, 16748) +HANDLE_BAT(, 16749) +HANDLE_BAT(, 16750) +HANDLE_BAT(, 16751) +HANDLE_BAT(, 16752) +HANDLE_BAT(, 16753) +HANDLE_BAT(, 16754) +HANDLE_BAT(, 16755) +HANDLE_BAT(, 16756) +HANDLE_BAT(, 16757) +HANDLE_BAT(, 16758) +HANDLE_BAT(, 16759) +HANDLE_BAT(, 16760) +HANDLE_BAT(, 16761) +HANDLE_BAT(, 16762) +HANDLE_BAT(, 16763) +HANDLE_BAT(, 16764) +HANDLE_BAT(, 16765) +HANDLE_BAT(, 16766) +HANDLE_BAT(, 16767) +HANDLE_BAT(, 16768) +HANDLE_BAT(, 16769) +HANDLE_BAT(, 16770) +HANDLE_BAT(, 16771) +HANDLE_BAT(, 16772) +HANDLE_BAT(, 16773) +HANDLE_BAT(, 16774) +HANDLE_BAT(, 16775) +HANDLE_BAT(, 16776) +HANDLE_BAT(, 16777) +HANDLE_BAT(, 16778) +HANDLE_BAT(, 16779) +HANDLE_BAT(, 16780) +HANDLE_BAT(, 16781) +HANDLE_BAT(, 16782) +HANDLE_BAT(, 16783) +HANDLE_BAT(, 16784) +HANDLE_BAT(, 16785) +HANDLE_BAT(, 16786) +HANDLE_BAT(, 16787) +HANDLE_BAT(, 16788) +HANDLE_BAT(, 16789) +HANDLE_BAT(, 16790) +HANDLE_BAT(, 16791) +HANDLE_BAT(, 16792) +HANDLE_BAT(, 16793) +HANDLE_BAT(, 16794) +HANDLE_BAT(, 16795) +HANDLE_BAT(, 16796) +HANDLE_BAT(, 16797) +HANDLE_BAT(, 16798) +HANDLE_BAT(, 16799) +HANDLE_BAT(, 16800) +HANDLE_BAT(, 16801) +HANDLE_BAT(, 16802) +HANDLE_BAT(, 16803) +HANDLE_BAT(, 16804) +HANDLE_BAT(, 16805) +HANDLE_BAT(, 16806) +HANDLE_BAT(, 16807) +HANDLE_BAT(, 16808) +HANDLE_BAT(, 16809) +HANDLE_BAT(, 16810) +HANDLE_BAT(, 16811) +HANDLE_BAT(, 16812) +HANDLE_BAT(, 16813) +HANDLE_BAT(, 16814) +HANDLE_BAT(, 16815) +HANDLE_BAT(, 16816) +HANDLE_BAT(, 16817) +HANDLE_BAT(, 16818) +HANDLE_BAT(, 16819) +HANDLE_BAT(, 16820) +HANDLE_BAT(, 16821) +HANDLE_BAT(, 16822) +HANDLE_BAT(, 16823) +HANDLE_BAT(, 16824) +HANDLE_BAT(, 16825) +HANDLE_BAT(, 16826) +HANDLE_BAT(, 16827) +HANDLE_BAT(, 16828) +HANDLE_BAT(, 16829) +HANDLE_BAT(, 16830) +HANDLE_BAT(, 16831) +HANDLE_BAT(, 16832) +HANDLE_BAT(, 16833) +HANDLE_BAT(, 16834) +HANDLE_BAT(, 16835) +HANDLE_BAT(, 16836) +HANDLE_BAT(, 16837) +HANDLE_BAT(, 16838) +HANDLE_BAT(, 16839) +HANDLE_BAT(, 16840) +HANDLE_BAT(, 16841) +HANDLE_BAT(, 16842) +HANDLE_BAT(, 16843) +HANDLE_BAT(, 16844) +HANDLE_BAT(, 16845) +HANDLE_BAT(, 16846) +HANDLE_BAT(, 16847) +HANDLE_BAT(, 16848) +HANDLE_BAT(, 16849) +HANDLE_BAT(, 16850) +HANDLE_BAT(, 16851) +HANDLE_BAT(, 16852) +HANDLE_BAT(, 16853) +HANDLE_BAT(, 16854) +HANDLE_BAT(, 16855) +HANDLE_BAT(, 16856) +HANDLE_BAT(, 16857) +HANDLE_BAT(, 16858) +HANDLE_BAT(, 16859) +HANDLE_BAT(, 16860) +HANDLE_BAT(, 16861) +HANDLE_BAT(, 16862) +HANDLE_BAT(, 16863) +HANDLE_BAT(, 16864) +HANDLE_BAT(, 16865) +HANDLE_BAT(, 16866) +HANDLE_BAT(, 16867) +HANDLE_BAT(, 16868) +HANDLE_BAT(, 16869) +HANDLE_BAT(, 16870) +HANDLE_BAT(, 16871) +HANDLE_BAT(, 16872) +HANDLE_BAT(, 16873) +HANDLE_BAT(, 16874) +HANDLE_BAT(, 16875) +HANDLE_BAT(, 16876) +HANDLE_BAT(, 16877) +HANDLE_BAT(, 16878) +HANDLE_BAT(, 16879) +HANDLE_BAT(, 16880) +HANDLE_BAT(, 16881) +HANDLE_BAT(, 16882) +HANDLE_BAT(, 16883) +HANDLE_BAT(, 16884) +HANDLE_BAT(, 16885) +HANDLE_BAT(, 16886) +HANDLE_BAT(, 16887) +HANDLE_BAT(, 16888) +HANDLE_BAT(, 16889) +HANDLE_BAT(, 16890) +HANDLE_BAT(, 16891) +HANDLE_BAT(, 16892) +HANDLE_BAT(, 16893) +HANDLE_BAT(, 16894) +HANDLE_BAT(, 16895) +HANDLE_BAT(, 16896) +HANDLE_BAT(, 16897) +HANDLE_BAT(, 16898) +HANDLE_BAT(, 16899) +HANDLE_BAT(, 16900) +HANDLE_BAT(, 16901) +HANDLE_BAT(, 16902) +HANDLE_BAT(, 16903) +HANDLE_BAT(, 16904) +HANDLE_BAT(, 16905) +HANDLE_BAT(, 16906) +HANDLE_BAT(, 16907) +HANDLE_BAT(, 16908) +HANDLE_BAT(, 16909) +HANDLE_BAT(, 16910) +HANDLE_BAT(, 16911) +HANDLE_BAT(, 16912) +HANDLE_BAT(, 16913) +HANDLE_BAT(, 16914) +HANDLE_BAT(, 16915) +HANDLE_BAT(, 16916) +HANDLE_BAT(, 16917) +HANDLE_BAT(, 16918) +HANDLE_BAT(, 16919) +HANDLE_BAT(, 16920) +HANDLE_BAT(, 16921) +HANDLE_BAT(, 16922) +HANDLE_BAT(, 16923) +HANDLE_BAT(, 16924) +HANDLE_BAT(, 16925) +HANDLE_BAT(, 16926) +HANDLE_BAT(, 16927) +HANDLE_BAT(, 16928) +HANDLE_BAT(, 16929) +HANDLE_BAT(, 16930) +HANDLE_BAT(, 16931) +HANDLE_BAT(, 16932) +HANDLE_BAT(, 16933) +HANDLE_BAT(, 16934) +HANDLE_BAT(, 16935) +HANDLE_BAT(, 16936) +HANDLE_BAT(, 16937) +HANDLE_BAT(, 16938) +HANDLE_BAT(, 16939) +HANDLE_BAT(, 16940) +HANDLE_BAT(, 16941) +HANDLE_BAT(, 16942) +HANDLE_BAT(, 16943) +HANDLE_BAT(, 16944) +HANDLE_BAT(, 16945) +HANDLE_BAT(, 16946) +HANDLE_BAT(, 16947) +HANDLE_BAT(, 16948) +HANDLE_BAT(, 16949) +HANDLE_BAT(, 16950) +HANDLE_BAT(, 16951) +HANDLE_BAT(, 16952) +HANDLE_BAT(, 16953) +HANDLE_BAT(, 16954) +HANDLE_BAT(, 16955) +HANDLE_BAT(, 16956) +HANDLE_BAT(, 16957) +HANDLE_BAT(, 16958) +HANDLE_BAT(, 16959) +HANDLE_BAT(, 16960) +HANDLE_BAT(, 16961) +HANDLE_BAT(, 16962) +HANDLE_BAT(, 16963) +HANDLE_BAT(, 16964) +HANDLE_BAT(, 16965) +HANDLE_BAT(, 16966) +HANDLE_BAT(, 16967) +HANDLE_BAT(, 16968) +HANDLE_BAT(, 16969) +HANDLE_BAT(, 16970) +HANDLE_BAT(, 16971) +HANDLE_BAT(, 16972) +HANDLE_BAT(, 16973) +HANDLE_BAT(, 16974) +HANDLE_BAT(, 16975) +HANDLE_BAT(, 16976) +HANDLE_BAT(, 16977) +HANDLE_BAT(, 16978) +HANDLE_BAT(, 16979) +HANDLE_BAT(, 16980) +HANDLE_BAT(, 16981) +HANDLE_BAT(, 16982) +HANDLE_BAT(, 16983) +HANDLE_BAT(, 16984) +HANDLE_BAT(, 16985) +HANDLE_BAT(, 16986) +HANDLE_BAT(, 16987) +HANDLE_BAT(, 16988) +HANDLE_BAT(, 16989) +HANDLE_BAT(, 16990) +HANDLE_BAT(, 16991) +HANDLE_BAT(, 16992) +HANDLE_BAT(, 16993) +HANDLE_BAT(, 16994) +HANDLE_BAT(, 16995) +HANDLE_BAT(, 16996) +HANDLE_BAT(, 16997) +HANDLE_BAT(, 16998) +HANDLE_BAT(, 16999) +HANDLE_BAT(, 17000) +HANDLE_BAT(, 17001) +HANDLE_BAT(, 17002) +HANDLE_BAT(, 17003) +HANDLE_BAT(, 17004) +HANDLE_BAT(, 17005) +HANDLE_BAT(, 17006) +HANDLE_BAT(, 17007) +HANDLE_BAT(, 17008) +HANDLE_BAT(, 17009) +HANDLE_BAT(, 17010) +HANDLE_BAT(, 17011) +HANDLE_BAT(, 17012) +HANDLE_BAT(, 17013) +HANDLE_BAT(, 17014) +HANDLE_BAT(, 17015) +HANDLE_BAT(, 17016) +HANDLE_BAT(, 17017) +HANDLE_BAT(, 17018) +HANDLE_BAT(, 17019) +HANDLE_BAT(, 17020) +HANDLE_BAT(, 17021) +HANDLE_BAT(, 17022) +HANDLE_BAT(, 17023) +HANDLE_BAT(, 17024) +HANDLE_BAT(, 17025) +HANDLE_BAT(, 17026) +HANDLE_BAT(, 17027) +HANDLE_BAT(, 17028) +HANDLE_BAT(, 17029) +HANDLE_BAT(, 17030) +HANDLE_BAT(, 17031) +HANDLE_BAT(, 17032) +HANDLE_BAT(, 17033) +HANDLE_BAT(, 17034) +HANDLE_BAT(, 17035) +HANDLE_BAT(, 17036) +HANDLE_BAT(, 17037) +HANDLE_BAT(, 17038) +HANDLE_BAT(, 17039) +HANDLE_BAT(, 17040) +HANDLE_BAT(, 17041) +HANDLE_BAT(, 17042) +HANDLE_BAT(, 17043) +HANDLE_BAT(, 17044) +HANDLE_BAT(, 17045) +HANDLE_BAT(, 17046) +HANDLE_BAT(, 17047) +HANDLE_BAT(, 17048) +HANDLE_BAT(, 17049) +HANDLE_BAT(, 17050) +HANDLE_BAT(, 17051) +HANDLE_BAT(, 17052) +HANDLE_BAT(, 17053) +HANDLE_BAT(, 17054) +HANDLE_BAT(, 17055) +HANDLE_BAT(, 17056) +HANDLE_BAT(, 17057) +HANDLE_BAT(, 17058) +HANDLE_BAT(, 17059) +HANDLE_BAT(, 17060) +HANDLE_BAT(, 17061) +HANDLE_BAT(, 17062) +HANDLE_BAT(, 17063) +HANDLE_BAT(, 17064) +HANDLE_BAT(, 17065) +HANDLE_BAT(, 17066) +HANDLE_BAT(, 17067) +HANDLE_BAT(, 17068) +HANDLE_BAT(, 17069) +HANDLE_BAT(, 17070) +HANDLE_BAT(, 17071) +HANDLE_BAT(, 17072) +HANDLE_BAT(, 17073) +HANDLE_BAT(, 17074) +HANDLE_BAT(, 17075) +HANDLE_BAT(, 17076) +HANDLE_BAT(, 17077) +HANDLE_BAT(, 17078) +HANDLE_BAT(, 17079) +HANDLE_BAT(, 17080) +HANDLE_BAT(, 17081) +HANDLE_BAT(, 17082) +HANDLE_BAT(, 17083) +HANDLE_BAT(, 17084) +HANDLE_BAT(, 17085) +HANDLE_BAT(, 17086) +HANDLE_BAT(, 17087) +HANDLE_BAT(, 17088) +HANDLE_BAT(, 17089) +HANDLE_BAT(, 17090) +HANDLE_BAT(, 17091) +HANDLE_BAT(, 17092) +HANDLE_BAT(, 17093) +HANDLE_BAT(, 17094) +HANDLE_BAT(, 17095) +HANDLE_BAT(, 17096) +HANDLE_BAT(, 17097) +HANDLE_BAT(, 17098) +HANDLE_BAT(, 17099) +HANDLE_BAT(, 17100) +HANDLE_BAT(, 17101) +HANDLE_BAT(, 17102) +HANDLE_BAT(, 17103) +HANDLE_BAT(, 17104) +HANDLE_BAT(, 17105) +HANDLE_BAT(, 17106) +HANDLE_BAT(, 17107) +HANDLE_BAT(, 17108) +HANDLE_BAT(, 17109) +HANDLE_BAT(, 17110) +HANDLE_BAT(, 17111) +HANDLE_BAT(, 17112) +HANDLE_BAT(, 17113) +HANDLE_BAT(, 17114) +HANDLE_BAT(, 17115) +HANDLE_BAT(, 17116) +HANDLE_BAT(, 17117) +HANDLE_BAT(, 17118) +HANDLE_BAT(, 17119) +HANDLE_BAT(, 17120) +HANDLE_BAT(, 17121) +HANDLE_BAT(, 17122) +HANDLE_BAT(, 17123) +HANDLE_BAT(, 17124) +HANDLE_BAT(, 17125) +HANDLE_BAT(, 17126) +HANDLE_BAT(, 17127) +HANDLE_BAT(, 17128) +HANDLE_BAT(, 17129) +HANDLE_BAT(, 17130) +HANDLE_BAT(, 17131) +HANDLE_BAT(, 17132) +HANDLE_BAT(, 17133) +HANDLE_BAT(, 17134) +HANDLE_BAT(, 17135) +HANDLE_BAT(, 17136) +HANDLE_BAT(, 17137) +HANDLE_BAT(, 17138) +HANDLE_BAT(, 17139) +HANDLE_BAT(, 17140) +HANDLE_BAT(, 17141) +HANDLE_BAT(, 17142) +HANDLE_BAT(, 17143) +HANDLE_BAT(, 17144) +HANDLE_BAT(, 17145) +HANDLE_BAT(, 17146) +HANDLE_BAT(, 17147) +HANDLE_BAT(, 17148) +HANDLE_BAT(, 17149) +HANDLE_BAT(, 17150) +HANDLE_BAT(, 17151) +HANDLE_BAT(, 17152) +HANDLE_BAT(, 17153) +HANDLE_BAT(, 17154) +HANDLE_BAT(, 17155) +HANDLE_BAT(, 17156) +HANDLE_BAT(, 17157) +HANDLE_BAT(, 17158) +HANDLE_BAT(, 17159) +HANDLE_BAT(, 17160) +HANDLE_BAT(, 17161) +HANDLE_BAT(, 17162) +HANDLE_BAT(, 17163) +HANDLE_BAT(, 17164) +HANDLE_BAT(, 17165) +HANDLE_BAT(, 17166) +HANDLE_BAT(, 17167) +HANDLE_BAT(, 17168) +HANDLE_BAT(, 17169) +HANDLE_BAT(, 17170) +HANDLE_BAT(, 17171) +HANDLE_BAT(, 17172) +HANDLE_BAT(, 17173) +HANDLE_BAT(, 17174) +HANDLE_BAT(, 17175) +HANDLE_BAT(, 17176) +HANDLE_BAT(, 17177) +HANDLE_BAT(, 17178) +HANDLE_BAT(, 17179) +HANDLE_BAT(, 17180) +HANDLE_BAT(, 17181) +HANDLE_BAT(, 17182) +HANDLE_BAT(, 17183) +HANDLE_BAT(, 17184) +HANDLE_BAT(, 17185) +HANDLE_BAT(, 17186) +HANDLE_BAT(, 17187) +HANDLE_BAT(, 17188) +HANDLE_BAT(, 17189) +HANDLE_BAT(, 17190) +HANDLE_BAT(, 17191) +HANDLE_BAT(, 17192) +HANDLE_BAT(, 17193) +HANDLE_BAT(, 17194) +HANDLE_BAT(, 17195) +HANDLE_BAT(, 17196) +HANDLE_BAT(, 17197) +HANDLE_BAT(, 17198) +HANDLE_BAT(, 17199) +HANDLE_BAT(, 17200) +HANDLE_BAT(, 17201) +HANDLE_BAT(, 17202) +HANDLE_BAT(, 17203) +HANDLE_BAT(, 17204) +HANDLE_BAT(, 17205) +HANDLE_BAT(, 17206) +HANDLE_BAT(, 17207) +HANDLE_BAT(, 17208) +HANDLE_BAT(, 17209) +HANDLE_BAT(, 17210) +HANDLE_BAT(, 17211) +HANDLE_BAT(, 17212) +HANDLE_BAT(, 17213) +HANDLE_BAT(, 17214) +HANDLE_BAT(, 17215) +HANDLE_BAT(, 17216) +HANDLE_BAT(, 17217) +HANDLE_BAT(, 17218) +HANDLE_BAT(, 17219) +HANDLE_BAT(, 17220) +HANDLE_BAT(, 17221) +HANDLE_BAT(, 17222) +HANDLE_BAT(, 17223) +HANDLE_BAT(, 17224) +HANDLE_BAT(, 17225) +HANDLE_BAT(, 17226) +HANDLE_BAT(, 17227) +HANDLE_BAT(, 17228) +HANDLE_BAT(, 17229) +HANDLE_BAT(, 17230) +HANDLE_BAT(, 17231) +HANDLE_BAT(, 17232) +HANDLE_BAT(, 17233) +HANDLE_BAT(, 17234) +HANDLE_BAT(, 17235) +HANDLE_BAT(, 17236) +HANDLE_BAT(, 17237) +HANDLE_BAT(, 17238) +HANDLE_BAT(, 17239) +HANDLE_BAT(, 17240) +HANDLE_BAT(, 17241) +HANDLE_BAT(, 17242) +HANDLE_BAT(, 17243) +HANDLE_BAT(, 17244) +HANDLE_BAT(, 17245) +HANDLE_BAT(, 17246) +HANDLE_BAT(, 17247) +HANDLE_BAT(, 17248) +HANDLE_BAT(, 17249) +HANDLE_BAT(, 17250) +HANDLE_BAT(, 17251) +HANDLE_BAT(, 17252) +HANDLE_BAT(, 17253) +HANDLE_BAT(, 17254) +HANDLE_BAT(, 17255) +HANDLE_BAT(, 17256) +HANDLE_BAT(, 17257) +HANDLE_BAT(, 17258) +HANDLE_BAT(, 17259) +HANDLE_BAT(, 17260) +HANDLE_BAT(, 17261) +HANDLE_BAT(, 17262) +HANDLE_BAT(, 17263) +HANDLE_BAT(, 17264) +HANDLE_BAT(, 17265) +HANDLE_BAT(, 17266) +HANDLE_BAT(, 17267) +HANDLE_BAT(, 17268) +HANDLE_BAT(, 17269) +HANDLE_BAT(, 17270) +HANDLE_BAT(, 17271) +HANDLE_BAT(, 17272) +HANDLE_BAT(, 17273) +HANDLE_BAT(, 17274) +HANDLE_BAT(, 17275) +HANDLE_BAT(, 17276) +HANDLE_BAT(, 17277) +HANDLE_BAT(, 17278) +HANDLE_BAT(, 17279) +HANDLE_BAT(, 17280) +HANDLE_BAT(, 17281) +HANDLE_BAT(, 17282) +HANDLE_BAT(, 17283) +HANDLE_BAT(, 17284) +HANDLE_BAT(, 17285) +HANDLE_BAT(, 17286) +HANDLE_BAT(, 17287) +HANDLE_BAT(, 17288) +HANDLE_BAT(, 17289) +HANDLE_BAT(, 17290) +HANDLE_BAT(, 17291) +HANDLE_BAT(, 17292) +HANDLE_BAT(, 17293) +HANDLE_BAT(, 17294) +HANDLE_BAT(, 17295) +HANDLE_BAT(, 17296) +HANDLE_BAT(, 17297) +HANDLE_BAT(, 17298) +HANDLE_BAT(, 17299) +HANDLE_BAT(, 17300) +HANDLE_BAT(, 17301) +HANDLE_BAT(, 17302) +HANDLE_BAT(, 17303) +HANDLE_BAT(, 17304) +HANDLE_BAT(, 17305) +HANDLE_BAT(, 17306) +HANDLE_BAT(, 17307) +HANDLE_BAT(, 17308) +HANDLE_BAT(, 17309) +HANDLE_BAT(, 17310) +HANDLE_BAT(, 17311) +HANDLE_BAT(, 17312) +HANDLE_BAT(, 17313) +HANDLE_BAT(, 17314) +HANDLE_BAT(, 17315) +HANDLE_BAT(, 17316) +HANDLE_BAT(, 17317) +HANDLE_BAT(, 17318) +HANDLE_BAT(, 17319) +HANDLE_BAT(, 17320) +HANDLE_BAT(, 17321) +HANDLE_BAT(, 17322) +HANDLE_BAT(, 17323) +HANDLE_BAT(, 17324) +HANDLE_BAT(, 17325) +HANDLE_BAT(, 17326) +HANDLE_BAT(, 17327) +HANDLE_BAT(, 17328) +HANDLE_BAT(, 17329) +HANDLE_BAT(, 17330) +HANDLE_BAT(, 17331) +HANDLE_BAT(, 17332) +HANDLE_BAT(, 17333) +HANDLE_BAT(, 17334) +HANDLE_BAT(, 17335) +HANDLE_BAT(, 17336) +HANDLE_BAT(, 17337) +HANDLE_BAT(, 17338) +HANDLE_BAT(, 17339) +HANDLE_BAT(, 17340) +HANDLE_BAT(, 17341) +HANDLE_BAT(, 17342) +HANDLE_BAT(, 17343) +HANDLE_BAT(, 17344) +HANDLE_BAT(, 17345) +HANDLE_BAT(, 17346) +HANDLE_BAT(, 17347) +HANDLE_BAT(, 17348) +HANDLE_BAT(, 17349) +HANDLE_BAT(, 17350) +HANDLE_BAT(, 17351) +HANDLE_BAT(, 17352) +HANDLE_BAT(, 17353) +HANDLE_BAT(, 17354) +HANDLE_BAT(, 17355) +HANDLE_BAT(, 17356) +HANDLE_BAT(, 17357) +HANDLE_BAT(, 17358) +HANDLE_BAT(, 17359) +HANDLE_BAT(, 17360) +HANDLE_BAT(, 17361) +HANDLE_BAT(, 17362) +HANDLE_BAT(, 17363) +HANDLE_BAT(, 17364) +HANDLE_BAT(, 17365) +HANDLE_BAT(, 17366) +HANDLE_BAT(, 17367) +HANDLE_BAT(, 17368) +HANDLE_BAT(, 17369) +HANDLE_BAT(, 17370) +HANDLE_BAT(, 17371) +HANDLE_BAT(, 17372) +HANDLE_BAT(, 17373) +HANDLE_BAT(, 17374) +HANDLE_BAT(, 17375) +HANDLE_BAT(, 17376) +HANDLE_BAT(, 17377) +HANDLE_BAT(, 17378) +HANDLE_BAT(, 17379) +HANDLE_BAT(, 17380) +HANDLE_BAT(, 17381) +HANDLE_BAT(, 17382) +HANDLE_BAT(, 17383) +HANDLE_BAT(, 17384) +HANDLE_BAT(, 17385) +HANDLE_BAT(, 17386) +HANDLE_BAT(, 17387) +HANDLE_BAT(, 17388) +HANDLE_BAT(, 17389) +HANDLE_BAT(, 17390) +HANDLE_BAT(, 17391) +HANDLE_BAT(, 17392) +HANDLE_BAT(, 17393) +HANDLE_BAT(, 17394) +HANDLE_BAT(, 17395) +HANDLE_BAT(, 17396) +HANDLE_BAT(, 17397) +HANDLE_BAT(, 17398) +HANDLE_BAT(, 17399) +HANDLE_BAT(, 17400) +HANDLE_BAT(, 17401) +HANDLE_BAT(, 17402) +HANDLE_BAT(, 17403) +HANDLE_BAT(, 17404) +HANDLE_BAT(, 17405) +HANDLE_BAT(, 17406) +HANDLE_BAT(, 17407) +HANDLE_BAT(, 17408) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 16385) +HANDLE_BAT(APINT_TYPE_PREFIX, 16386) +HANDLE_BAT(APINT_TYPE_PREFIX, 16387) +HANDLE_BAT(APINT_TYPE_PREFIX, 16388) +HANDLE_BAT(APINT_TYPE_PREFIX, 16389) +HANDLE_BAT(APINT_TYPE_PREFIX, 16390) +HANDLE_BAT(APINT_TYPE_PREFIX, 16391) +HANDLE_BAT(APINT_TYPE_PREFIX, 16392) +HANDLE_BAT(APINT_TYPE_PREFIX, 16393) +HANDLE_BAT(APINT_TYPE_PREFIX, 16394) +HANDLE_BAT(APINT_TYPE_PREFIX, 16395) +HANDLE_BAT(APINT_TYPE_PREFIX, 16396) +HANDLE_BAT(APINT_TYPE_PREFIX, 16397) +HANDLE_BAT(APINT_TYPE_PREFIX, 16398) +HANDLE_BAT(APINT_TYPE_PREFIX, 16399) +HANDLE_BAT(APINT_TYPE_PREFIX, 16400) +HANDLE_BAT(APINT_TYPE_PREFIX, 16401) +HANDLE_BAT(APINT_TYPE_PREFIX, 16402) +HANDLE_BAT(APINT_TYPE_PREFIX, 16403) +HANDLE_BAT(APINT_TYPE_PREFIX, 16404) +HANDLE_BAT(APINT_TYPE_PREFIX, 16405) +HANDLE_BAT(APINT_TYPE_PREFIX, 16406) +HANDLE_BAT(APINT_TYPE_PREFIX, 16407) +HANDLE_BAT(APINT_TYPE_PREFIX, 16408) +HANDLE_BAT(APINT_TYPE_PREFIX, 16409) +HANDLE_BAT(APINT_TYPE_PREFIX, 16410) +HANDLE_BAT(APINT_TYPE_PREFIX, 16411) +HANDLE_BAT(APINT_TYPE_PREFIX, 16412) +HANDLE_BAT(APINT_TYPE_PREFIX, 16413) +HANDLE_BAT(APINT_TYPE_PREFIX, 16414) +HANDLE_BAT(APINT_TYPE_PREFIX, 16415) +HANDLE_BAT(APINT_TYPE_PREFIX, 16416) +HANDLE_BAT(APINT_TYPE_PREFIX, 16417) +HANDLE_BAT(APINT_TYPE_PREFIX, 16418) +HANDLE_BAT(APINT_TYPE_PREFIX, 16419) +HANDLE_BAT(APINT_TYPE_PREFIX, 16420) +HANDLE_BAT(APINT_TYPE_PREFIX, 16421) +HANDLE_BAT(APINT_TYPE_PREFIX, 16422) +HANDLE_BAT(APINT_TYPE_PREFIX, 16423) +HANDLE_BAT(APINT_TYPE_PREFIX, 16424) +HANDLE_BAT(APINT_TYPE_PREFIX, 16425) +HANDLE_BAT(APINT_TYPE_PREFIX, 16426) +HANDLE_BAT(APINT_TYPE_PREFIX, 16427) +HANDLE_BAT(APINT_TYPE_PREFIX, 16428) +HANDLE_BAT(APINT_TYPE_PREFIX, 16429) +HANDLE_BAT(APINT_TYPE_PREFIX, 16430) +HANDLE_BAT(APINT_TYPE_PREFIX, 16431) +HANDLE_BAT(APINT_TYPE_PREFIX, 16432) +HANDLE_BAT(APINT_TYPE_PREFIX, 16433) +HANDLE_BAT(APINT_TYPE_PREFIX, 16434) +HANDLE_BAT(APINT_TYPE_PREFIX, 16435) +HANDLE_BAT(APINT_TYPE_PREFIX, 16436) +HANDLE_BAT(APINT_TYPE_PREFIX, 16437) +HANDLE_BAT(APINT_TYPE_PREFIX, 16438) +HANDLE_BAT(APINT_TYPE_PREFIX, 16439) +HANDLE_BAT(APINT_TYPE_PREFIX, 16440) +HANDLE_BAT(APINT_TYPE_PREFIX, 16441) +HANDLE_BAT(APINT_TYPE_PREFIX, 16442) +HANDLE_BAT(APINT_TYPE_PREFIX, 16443) +HANDLE_BAT(APINT_TYPE_PREFIX, 16444) +HANDLE_BAT(APINT_TYPE_PREFIX, 16445) +HANDLE_BAT(APINT_TYPE_PREFIX, 16446) +HANDLE_BAT(APINT_TYPE_PREFIX, 16447) +HANDLE_BAT(APINT_TYPE_PREFIX, 16448) +HANDLE_BAT(APINT_TYPE_PREFIX, 16449) +HANDLE_BAT(APINT_TYPE_PREFIX, 16450) +HANDLE_BAT(APINT_TYPE_PREFIX, 16451) +HANDLE_BAT(APINT_TYPE_PREFIX, 16452) +HANDLE_BAT(APINT_TYPE_PREFIX, 16453) +HANDLE_BAT(APINT_TYPE_PREFIX, 16454) +HANDLE_BAT(APINT_TYPE_PREFIX, 16455) +HANDLE_BAT(APINT_TYPE_PREFIX, 16456) +HANDLE_BAT(APINT_TYPE_PREFIX, 16457) +HANDLE_BAT(APINT_TYPE_PREFIX, 16458) +HANDLE_BAT(APINT_TYPE_PREFIX, 16459) +HANDLE_BAT(APINT_TYPE_PREFIX, 16460) +HANDLE_BAT(APINT_TYPE_PREFIX, 16461) +HANDLE_BAT(APINT_TYPE_PREFIX, 16462) +HANDLE_BAT(APINT_TYPE_PREFIX, 16463) +HANDLE_BAT(APINT_TYPE_PREFIX, 16464) +HANDLE_BAT(APINT_TYPE_PREFIX, 16465) +HANDLE_BAT(APINT_TYPE_PREFIX, 16466) +HANDLE_BAT(APINT_TYPE_PREFIX, 16467) +HANDLE_BAT(APINT_TYPE_PREFIX, 16468) +HANDLE_BAT(APINT_TYPE_PREFIX, 16469) +HANDLE_BAT(APINT_TYPE_PREFIX, 16470) +HANDLE_BAT(APINT_TYPE_PREFIX, 16471) +HANDLE_BAT(APINT_TYPE_PREFIX, 16472) +HANDLE_BAT(APINT_TYPE_PREFIX, 16473) +HANDLE_BAT(APINT_TYPE_PREFIX, 16474) +HANDLE_BAT(APINT_TYPE_PREFIX, 16475) +HANDLE_BAT(APINT_TYPE_PREFIX, 16476) +HANDLE_BAT(APINT_TYPE_PREFIX, 16477) +HANDLE_BAT(APINT_TYPE_PREFIX, 16478) +HANDLE_BAT(APINT_TYPE_PREFIX, 16479) +HANDLE_BAT(APINT_TYPE_PREFIX, 16480) +HANDLE_BAT(APINT_TYPE_PREFIX, 16481) +HANDLE_BAT(APINT_TYPE_PREFIX, 16482) +HANDLE_BAT(APINT_TYPE_PREFIX, 16483) +HANDLE_BAT(APINT_TYPE_PREFIX, 16484) +HANDLE_BAT(APINT_TYPE_PREFIX, 16485) +HANDLE_BAT(APINT_TYPE_PREFIX, 16486) +HANDLE_BAT(APINT_TYPE_PREFIX, 16487) +HANDLE_BAT(APINT_TYPE_PREFIX, 16488) +HANDLE_BAT(APINT_TYPE_PREFIX, 16489) +HANDLE_BAT(APINT_TYPE_PREFIX, 16490) +HANDLE_BAT(APINT_TYPE_PREFIX, 16491) +HANDLE_BAT(APINT_TYPE_PREFIX, 16492) +HANDLE_BAT(APINT_TYPE_PREFIX, 16493) +HANDLE_BAT(APINT_TYPE_PREFIX, 16494) +HANDLE_BAT(APINT_TYPE_PREFIX, 16495) +HANDLE_BAT(APINT_TYPE_PREFIX, 16496) +HANDLE_BAT(APINT_TYPE_PREFIX, 16497) +HANDLE_BAT(APINT_TYPE_PREFIX, 16498) +HANDLE_BAT(APINT_TYPE_PREFIX, 16499) +HANDLE_BAT(APINT_TYPE_PREFIX, 16500) +HANDLE_BAT(APINT_TYPE_PREFIX, 16501) +HANDLE_BAT(APINT_TYPE_PREFIX, 16502) +HANDLE_BAT(APINT_TYPE_PREFIX, 16503) +HANDLE_BAT(APINT_TYPE_PREFIX, 16504) +HANDLE_BAT(APINT_TYPE_PREFIX, 16505) +HANDLE_BAT(APINT_TYPE_PREFIX, 16506) +HANDLE_BAT(APINT_TYPE_PREFIX, 16507) +HANDLE_BAT(APINT_TYPE_PREFIX, 16508) +HANDLE_BAT(APINT_TYPE_PREFIX, 16509) +HANDLE_BAT(APINT_TYPE_PREFIX, 16510) +HANDLE_BAT(APINT_TYPE_PREFIX, 16511) +HANDLE_BAT(APINT_TYPE_PREFIX, 16512) +HANDLE_BAT(APINT_TYPE_PREFIX, 16513) +HANDLE_BAT(APINT_TYPE_PREFIX, 16514) +HANDLE_BAT(APINT_TYPE_PREFIX, 16515) +HANDLE_BAT(APINT_TYPE_PREFIX, 16516) +HANDLE_BAT(APINT_TYPE_PREFIX, 16517) +HANDLE_BAT(APINT_TYPE_PREFIX, 16518) +HANDLE_BAT(APINT_TYPE_PREFIX, 16519) +HANDLE_BAT(APINT_TYPE_PREFIX, 16520) +HANDLE_BAT(APINT_TYPE_PREFIX, 16521) +HANDLE_BAT(APINT_TYPE_PREFIX, 16522) +HANDLE_BAT(APINT_TYPE_PREFIX, 16523) +HANDLE_BAT(APINT_TYPE_PREFIX, 16524) +HANDLE_BAT(APINT_TYPE_PREFIX, 16525) +HANDLE_BAT(APINT_TYPE_PREFIX, 16526) +HANDLE_BAT(APINT_TYPE_PREFIX, 16527) +HANDLE_BAT(APINT_TYPE_PREFIX, 16528) +HANDLE_BAT(APINT_TYPE_PREFIX, 16529) +HANDLE_BAT(APINT_TYPE_PREFIX, 16530) +HANDLE_BAT(APINT_TYPE_PREFIX, 16531) +HANDLE_BAT(APINT_TYPE_PREFIX, 16532) +HANDLE_BAT(APINT_TYPE_PREFIX, 16533) +HANDLE_BAT(APINT_TYPE_PREFIX, 16534) +HANDLE_BAT(APINT_TYPE_PREFIX, 16535) +HANDLE_BAT(APINT_TYPE_PREFIX, 16536) +HANDLE_BAT(APINT_TYPE_PREFIX, 16537) +HANDLE_BAT(APINT_TYPE_PREFIX, 16538) +HANDLE_BAT(APINT_TYPE_PREFIX, 16539) +HANDLE_BAT(APINT_TYPE_PREFIX, 16540) +HANDLE_BAT(APINT_TYPE_PREFIX, 16541) +HANDLE_BAT(APINT_TYPE_PREFIX, 16542) +HANDLE_BAT(APINT_TYPE_PREFIX, 16543) +HANDLE_BAT(APINT_TYPE_PREFIX, 16544) +HANDLE_BAT(APINT_TYPE_PREFIX, 16545) +HANDLE_BAT(APINT_TYPE_PREFIX, 16546) +HANDLE_BAT(APINT_TYPE_PREFIX, 16547) +HANDLE_BAT(APINT_TYPE_PREFIX, 16548) +HANDLE_BAT(APINT_TYPE_PREFIX, 16549) +HANDLE_BAT(APINT_TYPE_PREFIX, 16550) +HANDLE_BAT(APINT_TYPE_PREFIX, 16551) +HANDLE_BAT(APINT_TYPE_PREFIX, 16552) +HANDLE_BAT(APINT_TYPE_PREFIX, 16553) +HANDLE_BAT(APINT_TYPE_PREFIX, 16554) +HANDLE_BAT(APINT_TYPE_PREFIX, 16555) +HANDLE_BAT(APINT_TYPE_PREFIX, 16556) +HANDLE_BAT(APINT_TYPE_PREFIX, 16557) +HANDLE_BAT(APINT_TYPE_PREFIX, 16558) +HANDLE_BAT(APINT_TYPE_PREFIX, 16559) +HANDLE_BAT(APINT_TYPE_PREFIX, 16560) +HANDLE_BAT(APINT_TYPE_PREFIX, 16561) +HANDLE_BAT(APINT_TYPE_PREFIX, 16562) +HANDLE_BAT(APINT_TYPE_PREFIX, 16563) +HANDLE_BAT(APINT_TYPE_PREFIX, 16564) +HANDLE_BAT(APINT_TYPE_PREFIX, 16565) +HANDLE_BAT(APINT_TYPE_PREFIX, 16566) +HANDLE_BAT(APINT_TYPE_PREFIX, 16567) +HANDLE_BAT(APINT_TYPE_PREFIX, 16568) +HANDLE_BAT(APINT_TYPE_PREFIX, 16569) +HANDLE_BAT(APINT_TYPE_PREFIX, 16570) +HANDLE_BAT(APINT_TYPE_PREFIX, 16571) +HANDLE_BAT(APINT_TYPE_PREFIX, 16572) +HANDLE_BAT(APINT_TYPE_PREFIX, 16573) +HANDLE_BAT(APINT_TYPE_PREFIX, 16574) +HANDLE_BAT(APINT_TYPE_PREFIX, 16575) +HANDLE_BAT(APINT_TYPE_PREFIX, 16576) +HANDLE_BAT(APINT_TYPE_PREFIX, 16577) +HANDLE_BAT(APINT_TYPE_PREFIX, 16578) +HANDLE_BAT(APINT_TYPE_PREFIX, 16579) +HANDLE_BAT(APINT_TYPE_PREFIX, 16580) +HANDLE_BAT(APINT_TYPE_PREFIX, 16581) +HANDLE_BAT(APINT_TYPE_PREFIX, 16582) +HANDLE_BAT(APINT_TYPE_PREFIX, 16583) +HANDLE_BAT(APINT_TYPE_PREFIX, 16584) +HANDLE_BAT(APINT_TYPE_PREFIX, 16585) +HANDLE_BAT(APINT_TYPE_PREFIX, 16586) +HANDLE_BAT(APINT_TYPE_PREFIX, 16587) +HANDLE_BAT(APINT_TYPE_PREFIX, 16588) +HANDLE_BAT(APINT_TYPE_PREFIX, 16589) +HANDLE_BAT(APINT_TYPE_PREFIX, 16590) +HANDLE_BAT(APINT_TYPE_PREFIX, 16591) +HANDLE_BAT(APINT_TYPE_PREFIX, 16592) +HANDLE_BAT(APINT_TYPE_PREFIX, 16593) +HANDLE_BAT(APINT_TYPE_PREFIX, 16594) +HANDLE_BAT(APINT_TYPE_PREFIX, 16595) +HANDLE_BAT(APINT_TYPE_PREFIX, 16596) +HANDLE_BAT(APINT_TYPE_PREFIX, 16597) +HANDLE_BAT(APINT_TYPE_PREFIX, 16598) +HANDLE_BAT(APINT_TYPE_PREFIX, 16599) +HANDLE_BAT(APINT_TYPE_PREFIX, 16600) +HANDLE_BAT(APINT_TYPE_PREFIX, 16601) +HANDLE_BAT(APINT_TYPE_PREFIX, 16602) +HANDLE_BAT(APINT_TYPE_PREFIX, 16603) +HANDLE_BAT(APINT_TYPE_PREFIX, 16604) +HANDLE_BAT(APINT_TYPE_PREFIX, 16605) +HANDLE_BAT(APINT_TYPE_PREFIX, 16606) +HANDLE_BAT(APINT_TYPE_PREFIX, 16607) +HANDLE_BAT(APINT_TYPE_PREFIX, 16608) +HANDLE_BAT(APINT_TYPE_PREFIX, 16609) +HANDLE_BAT(APINT_TYPE_PREFIX, 16610) +HANDLE_BAT(APINT_TYPE_PREFIX, 16611) +HANDLE_BAT(APINT_TYPE_PREFIX, 16612) +HANDLE_BAT(APINT_TYPE_PREFIX, 16613) +HANDLE_BAT(APINT_TYPE_PREFIX, 16614) +HANDLE_BAT(APINT_TYPE_PREFIX, 16615) +HANDLE_BAT(APINT_TYPE_PREFIX, 16616) +HANDLE_BAT(APINT_TYPE_PREFIX, 16617) +HANDLE_BAT(APINT_TYPE_PREFIX, 16618) +HANDLE_BAT(APINT_TYPE_PREFIX, 16619) +HANDLE_BAT(APINT_TYPE_PREFIX, 16620) +HANDLE_BAT(APINT_TYPE_PREFIX, 16621) +HANDLE_BAT(APINT_TYPE_PREFIX, 16622) +HANDLE_BAT(APINT_TYPE_PREFIX, 16623) +HANDLE_BAT(APINT_TYPE_PREFIX, 16624) +HANDLE_BAT(APINT_TYPE_PREFIX, 16625) +HANDLE_BAT(APINT_TYPE_PREFIX, 16626) +HANDLE_BAT(APINT_TYPE_PREFIX, 16627) +HANDLE_BAT(APINT_TYPE_PREFIX, 16628) +HANDLE_BAT(APINT_TYPE_PREFIX, 16629) +HANDLE_BAT(APINT_TYPE_PREFIX, 16630) +HANDLE_BAT(APINT_TYPE_PREFIX, 16631) +HANDLE_BAT(APINT_TYPE_PREFIX, 16632) +HANDLE_BAT(APINT_TYPE_PREFIX, 16633) +HANDLE_BAT(APINT_TYPE_PREFIX, 16634) +HANDLE_BAT(APINT_TYPE_PREFIX, 16635) +HANDLE_BAT(APINT_TYPE_PREFIX, 16636) +HANDLE_BAT(APINT_TYPE_PREFIX, 16637) +HANDLE_BAT(APINT_TYPE_PREFIX, 16638) +HANDLE_BAT(APINT_TYPE_PREFIX, 16639) +HANDLE_BAT(APINT_TYPE_PREFIX, 16640) +HANDLE_BAT(APINT_TYPE_PREFIX, 16641) +HANDLE_BAT(APINT_TYPE_PREFIX, 16642) +HANDLE_BAT(APINT_TYPE_PREFIX, 16643) +HANDLE_BAT(APINT_TYPE_PREFIX, 16644) +HANDLE_BAT(APINT_TYPE_PREFIX, 16645) +HANDLE_BAT(APINT_TYPE_PREFIX, 16646) +HANDLE_BAT(APINT_TYPE_PREFIX, 16647) +HANDLE_BAT(APINT_TYPE_PREFIX, 16648) +HANDLE_BAT(APINT_TYPE_PREFIX, 16649) +HANDLE_BAT(APINT_TYPE_PREFIX, 16650) +HANDLE_BAT(APINT_TYPE_PREFIX, 16651) +HANDLE_BAT(APINT_TYPE_PREFIX, 16652) +HANDLE_BAT(APINT_TYPE_PREFIX, 16653) +HANDLE_BAT(APINT_TYPE_PREFIX, 16654) +HANDLE_BAT(APINT_TYPE_PREFIX, 16655) +HANDLE_BAT(APINT_TYPE_PREFIX, 16656) +HANDLE_BAT(APINT_TYPE_PREFIX, 16657) +HANDLE_BAT(APINT_TYPE_PREFIX, 16658) +HANDLE_BAT(APINT_TYPE_PREFIX, 16659) +HANDLE_BAT(APINT_TYPE_PREFIX, 16660) +HANDLE_BAT(APINT_TYPE_PREFIX, 16661) +HANDLE_BAT(APINT_TYPE_PREFIX, 16662) +HANDLE_BAT(APINT_TYPE_PREFIX, 16663) +HANDLE_BAT(APINT_TYPE_PREFIX, 16664) +HANDLE_BAT(APINT_TYPE_PREFIX, 16665) +HANDLE_BAT(APINT_TYPE_PREFIX, 16666) +HANDLE_BAT(APINT_TYPE_PREFIX, 16667) +HANDLE_BAT(APINT_TYPE_PREFIX, 16668) +HANDLE_BAT(APINT_TYPE_PREFIX, 16669) +HANDLE_BAT(APINT_TYPE_PREFIX, 16670) +HANDLE_BAT(APINT_TYPE_PREFIX, 16671) +HANDLE_BAT(APINT_TYPE_PREFIX, 16672) +HANDLE_BAT(APINT_TYPE_PREFIX, 16673) +HANDLE_BAT(APINT_TYPE_PREFIX, 16674) +HANDLE_BAT(APINT_TYPE_PREFIX, 16675) +HANDLE_BAT(APINT_TYPE_PREFIX, 16676) +HANDLE_BAT(APINT_TYPE_PREFIX, 16677) +HANDLE_BAT(APINT_TYPE_PREFIX, 16678) +HANDLE_BAT(APINT_TYPE_PREFIX, 16679) +HANDLE_BAT(APINT_TYPE_PREFIX, 16680) +HANDLE_BAT(APINT_TYPE_PREFIX, 16681) +HANDLE_BAT(APINT_TYPE_PREFIX, 16682) +HANDLE_BAT(APINT_TYPE_PREFIX, 16683) +HANDLE_BAT(APINT_TYPE_PREFIX, 16684) +HANDLE_BAT(APINT_TYPE_PREFIX, 16685) +HANDLE_BAT(APINT_TYPE_PREFIX, 16686) +HANDLE_BAT(APINT_TYPE_PREFIX, 16687) +HANDLE_BAT(APINT_TYPE_PREFIX, 16688) +HANDLE_BAT(APINT_TYPE_PREFIX, 16689) +HANDLE_BAT(APINT_TYPE_PREFIX, 16690) +HANDLE_BAT(APINT_TYPE_PREFIX, 16691) +HANDLE_BAT(APINT_TYPE_PREFIX, 16692) +HANDLE_BAT(APINT_TYPE_PREFIX, 16693) +HANDLE_BAT(APINT_TYPE_PREFIX, 16694) +HANDLE_BAT(APINT_TYPE_PREFIX, 16695) +HANDLE_BAT(APINT_TYPE_PREFIX, 16696) +HANDLE_BAT(APINT_TYPE_PREFIX, 16697) +HANDLE_BAT(APINT_TYPE_PREFIX, 16698) +HANDLE_BAT(APINT_TYPE_PREFIX, 16699) +HANDLE_BAT(APINT_TYPE_PREFIX, 16700) +HANDLE_BAT(APINT_TYPE_PREFIX, 16701) +HANDLE_BAT(APINT_TYPE_PREFIX, 16702) +HANDLE_BAT(APINT_TYPE_PREFIX, 16703) +HANDLE_BAT(APINT_TYPE_PREFIX, 16704) +HANDLE_BAT(APINT_TYPE_PREFIX, 16705) +HANDLE_BAT(APINT_TYPE_PREFIX, 16706) +HANDLE_BAT(APINT_TYPE_PREFIX, 16707) +HANDLE_BAT(APINT_TYPE_PREFIX, 16708) +HANDLE_BAT(APINT_TYPE_PREFIX, 16709) +HANDLE_BAT(APINT_TYPE_PREFIX, 16710) +HANDLE_BAT(APINT_TYPE_PREFIX, 16711) +HANDLE_BAT(APINT_TYPE_PREFIX, 16712) +HANDLE_BAT(APINT_TYPE_PREFIX, 16713) +HANDLE_BAT(APINT_TYPE_PREFIX, 16714) +HANDLE_BAT(APINT_TYPE_PREFIX, 16715) +HANDLE_BAT(APINT_TYPE_PREFIX, 16716) +HANDLE_BAT(APINT_TYPE_PREFIX, 16717) +HANDLE_BAT(APINT_TYPE_PREFIX, 16718) +HANDLE_BAT(APINT_TYPE_PREFIX, 16719) +HANDLE_BAT(APINT_TYPE_PREFIX, 16720) +HANDLE_BAT(APINT_TYPE_PREFIX, 16721) +HANDLE_BAT(APINT_TYPE_PREFIX, 16722) +HANDLE_BAT(APINT_TYPE_PREFIX, 16723) +HANDLE_BAT(APINT_TYPE_PREFIX, 16724) +HANDLE_BAT(APINT_TYPE_PREFIX, 16725) +HANDLE_BAT(APINT_TYPE_PREFIX, 16726) +HANDLE_BAT(APINT_TYPE_PREFIX, 16727) +HANDLE_BAT(APINT_TYPE_PREFIX, 16728) +HANDLE_BAT(APINT_TYPE_PREFIX, 16729) +HANDLE_BAT(APINT_TYPE_PREFIX, 16730) +HANDLE_BAT(APINT_TYPE_PREFIX, 16731) +HANDLE_BAT(APINT_TYPE_PREFIX, 16732) +HANDLE_BAT(APINT_TYPE_PREFIX, 16733) +HANDLE_BAT(APINT_TYPE_PREFIX, 16734) +HANDLE_BAT(APINT_TYPE_PREFIX, 16735) +HANDLE_BAT(APINT_TYPE_PREFIX, 16736) +HANDLE_BAT(APINT_TYPE_PREFIX, 16737) +HANDLE_BAT(APINT_TYPE_PREFIX, 16738) +HANDLE_BAT(APINT_TYPE_PREFIX, 16739) +HANDLE_BAT(APINT_TYPE_PREFIX, 16740) +HANDLE_BAT(APINT_TYPE_PREFIX, 16741) +HANDLE_BAT(APINT_TYPE_PREFIX, 16742) +HANDLE_BAT(APINT_TYPE_PREFIX, 16743) +HANDLE_BAT(APINT_TYPE_PREFIX, 16744) +HANDLE_BAT(APINT_TYPE_PREFIX, 16745) +HANDLE_BAT(APINT_TYPE_PREFIX, 16746) +HANDLE_BAT(APINT_TYPE_PREFIX, 16747) +HANDLE_BAT(APINT_TYPE_PREFIX, 16748) +HANDLE_BAT(APINT_TYPE_PREFIX, 16749) +HANDLE_BAT(APINT_TYPE_PREFIX, 16750) +HANDLE_BAT(APINT_TYPE_PREFIX, 16751) +HANDLE_BAT(APINT_TYPE_PREFIX, 16752) +HANDLE_BAT(APINT_TYPE_PREFIX, 16753) +HANDLE_BAT(APINT_TYPE_PREFIX, 16754) +HANDLE_BAT(APINT_TYPE_PREFIX, 16755) +HANDLE_BAT(APINT_TYPE_PREFIX, 16756) +HANDLE_BAT(APINT_TYPE_PREFIX, 16757) +HANDLE_BAT(APINT_TYPE_PREFIX, 16758) +HANDLE_BAT(APINT_TYPE_PREFIX, 16759) +HANDLE_BAT(APINT_TYPE_PREFIX, 16760) +HANDLE_BAT(APINT_TYPE_PREFIX, 16761) +HANDLE_BAT(APINT_TYPE_PREFIX, 16762) +HANDLE_BAT(APINT_TYPE_PREFIX, 16763) +HANDLE_BAT(APINT_TYPE_PREFIX, 16764) +HANDLE_BAT(APINT_TYPE_PREFIX, 16765) +HANDLE_BAT(APINT_TYPE_PREFIX, 16766) +HANDLE_BAT(APINT_TYPE_PREFIX, 16767) +HANDLE_BAT(APINT_TYPE_PREFIX, 16768) +HANDLE_BAT(APINT_TYPE_PREFIX, 16769) +HANDLE_BAT(APINT_TYPE_PREFIX, 16770) +HANDLE_BAT(APINT_TYPE_PREFIX, 16771) +HANDLE_BAT(APINT_TYPE_PREFIX, 16772) +HANDLE_BAT(APINT_TYPE_PREFIX, 16773) +HANDLE_BAT(APINT_TYPE_PREFIX, 16774) +HANDLE_BAT(APINT_TYPE_PREFIX, 16775) +HANDLE_BAT(APINT_TYPE_PREFIX, 16776) +HANDLE_BAT(APINT_TYPE_PREFIX, 16777) +HANDLE_BAT(APINT_TYPE_PREFIX, 16778) +HANDLE_BAT(APINT_TYPE_PREFIX, 16779) +HANDLE_BAT(APINT_TYPE_PREFIX, 16780) +HANDLE_BAT(APINT_TYPE_PREFIX, 16781) +HANDLE_BAT(APINT_TYPE_PREFIX, 16782) +HANDLE_BAT(APINT_TYPE_PREFIX, 16783) +HANDLE_BAT(APINT_TYPE_PREFIX, 16784) +HANDLE_BAT(APINT_TYPE_PREFIX, 16785) +HANDLE_BAT(APINT_TYPE_PREFIX, 16786) +HANDLE_BAT(APINT_TYPE_PREFIX, 16787) +HANDLE_BAT(APINT_TYPE_PREFIX, 16788) +HANDLE_BAT(APINT_TYPE_PREFIX, 16789) +HANDLE_BAT(APINT_TYPE_PREFIX, 16790) +HANDLE_BAT(APINT_TYPE_PREFIX, 16791) +HANDLE_BAT(APINT_TYPE_PREFIX, 16792) +HANDLE_BAT(APINT_TYPE_PREFIX, 16793) +HANDLE_BAT(APINT_TYPE_PREFIX, 16794) +HANDLE_BAT(APINT_TYPE_PREFIX, 16795) +HANDLE_BAT(APINT_TYPE_PREFIX, 16796) +HANDLE_BAT(APINT_TYPE_PREFIX, 16797) +HANDLE_BAT(APINT_TYPE_PREFIX, 16798) +HANDLE_BAT(APINT_TYPE_PREFIX, 16799) +HANDLE_BAT(APINT_TYPE_PREFIX, 16800) +HANDLE_BAT(APINT_TYPE_PREFIX, 16801) +HANDLE_BAT(APINT_TYPE_PREFIX, 16802) +HANDLE_BAT(APINT_TYPE_PREFIX, 16803) +HANDLE_BAT(APINT_TYPE_PREFIX, 16804) +HANDLE_BAT(APINT_TYPE_PREFIX, 16805) +HANDLE_BAT(APINT_TYPE_PREFIX, 16806) +HANDLE_BAT(APINT_TYPE_PREFIX, 16807) +HANDLE_BAT(APINT_TYPE_PREFIX, 16808) +HANDLE_BAT(APINT_TYPE_PREFIX, 16809) +HANDLE_BAT(APINT_TYPE_PREFIX, 16810) +HANDLE_BAT(APINT_TYPE_PREFIX, 16811) +HANDLE_BAT(APINT_TYPE_PREFIX, 16812) +HANDLE_BAT(APINT_TYPE_PREFIX, 16813) +HANDLE_BAT(APINT_TYPE_PREFIX, 16814) +HANDLE_BAT(APINT_TYPE_PREFIX, 16815) +HANDLE_BAT(APINT_TYPE_PREFIX, 16816) +HANDLE_BAT(APINT_TYPE_PREFIX, 16817) +HANDLE_BAT(APINT_TYPE_PREFIX, 16818) +HANDLE_BAT(APINT_TYPE_PREFIX, 16819) +HANDLE_BAT(APINT_TYPE_PREFIX, 16820) +HANDLE_BAT(APINT_TYPE_PREFIX, 16821) +HANDLE_BAT(APINT_TYPE_PREFIX, 16822) +HANDLE_BAT(APINT_TYPE_PREFIX, 16823) +HANDLE_BAT(APINT_TYPE_PREFIX, 16824) +HANDLE_BAT(APINT_TYPE_PREFIX, 16825) +HANDLE_BAT(APINT_TYPE_PREFIX, 16826) +HANDLE_BAT(APINT_TYPE_PREFIX, 16827) +HANDLE_BAT(APINT_TYPE_PREFIX, 16828) +HANDLE_BAT(APINT_TYPE_PREFIX, 16829) +HANDLE_BAT(APINT_TYPE_PREFIX, 16830) +HANDLE_BAT(APINT_TYPE_PREFIX, 16831) +HANDLE_BAT(APINT_TYPE_PREFIX, 16832) +HANDLE_BAT(APINT_TYPE_PREFIX, 16833) +HANDLE_BAT(APINT_TYPE_PREFIX, 16834) +HANDLE_BAT(APINT_TYPE_PREFIX, 16835) +HANDLE_BAT(APINT_TYPE_PREFIX, 16836) +HANDLE_BAT(APINT_TYPE_PREFIX, 16837) +HANDLE_BAT(APINT_TYPE_PREFIX, 16838) +HANDLE_BAT(APINT_TYPE_PREFIX, 16839) +HANDLE_BAT(APINT_TYPE_PREFIX, 16840) +HANDLE_BAT(APINT_TYPE_PREFIX, 16841) +HANDLE_BAT(APINT_TYPE_PREFIX, 16842) +HANDLE_BAT(APINT_TYPE_PREFIX, 16843) +HANDLE_BAT(APINT_TYPE_PREFIX, 16844) +HANDLE_BAT(APINT_TYPE_PREFIX, 16845) +HANDLE_BAT(APINT_TYPE_PREFIX, 16846) +HANDLE_BAT(APINT_TYPE_PREFIX, 16847) +HANDLE_BAT(APINT_TYPE_PREFIX, 16848) +HANDLE_BAT(APINT_TYPE_PREFIX, 16849) +HANDLE_BAT(APINT_TYPE_PREFIX, 16850) +HANDLE_BAT(APINT_TYPE_PREFIX, 16851) +HANDLE_BAT(APINT_TYPE_PREFIX, 16852) +HANDLE_BAT(APINT_TYPE_PREFIX, 16853) +HANDLE_BAT(APINT_TYPE_PREFIX, 16854) +HANDLE_BAT(APINT_TYPE_PREFIX, 16855) +HANDLE_BAT(APINT_TYPE_PREFIX, 16856) +HANDLE_BAT(APINT_TYPE_PREFIX, 16857) +HANDLE_BAT(APINT_TYPE_PREFIX, 16858) +HANDLE_BAT(APINT_TYPE_PREFIX, 16859) +HANDLE_BAT(APINT_TYPE_PREFIX, 16860) +HANDLE_BAT(APINT_TYPE_PREFIX, 16861) +HANDLE_BAT(APINT_TYPE_PREFIX, 16862) +HANDLE_BAT(APINT_TYPE_PREFIX, 16863) +HANDLE_BAT(APINT_TYPE_PREFIX, 16864) +HANDLE_BAT(APINT_TYPE_PREFIX, 16865) +HANDLE_BAT(APINT_TYPE_PREFIX, 16866) +HANDLE_BAT(APINT_TYPE_PREFIX, 16867) +HANDLE_BAT(APINT_TYPE_PREFIX, 16868) +HANDLE_BAT(APINT_TYPE_PREFIX, 16869) +HANDLE_BAT(APINT_TYPE_PREFIX, 16870) +HANDLE_BAT(APINT_TYPE_PREFIX, 16871) +HANDLE_BAT(APINT_TYPE_PREFIX, 16872) +HANDLE_BAT(APINT_TYPE_PREFIX, 16873) +HANDLE_BAT(APINT_TYPE_PREFIX, 16874) +HANDLE_BAT(APINT_TYPE_PREFIX, 16875) +HANDLE_BAT(APINT_TYPE_PREFIX, 16876) +HANDLE_BAT(APINT_TYPE_PREFIX, 16877) +HANDLE_BAT(APINT_TYPE_PREFIX, 16878) +HANDLE_BAT(APINT_TYPE_PREFIX, 16879) +HANDLE_BAT(APINT_TYPE_PREFIX, 16880) +HANDLE_BAT(APINT_TYPE_PREFIX, 16881) +HANDLE_BAT(APINT_TYPE_PREFIX, 16882) +HANDLE_BAT(APINT_TYPE_PREFIX, 16883) +HANDLE_BAT(APINT_TYPE_PREFIX, 16884) +HANDLE_BAT(APINT_TYPE_PREFIX, 16885) +HANDLE_BAT(APINT_TYPE_PREFIX, 16886) +HANDLE_BAT(APINT_TYPE_PREFIX, 16887) +HANDLE_BAT(APINT_TYPE_PREFIX, 16888) +HANDLE_BAT(APINT_TYPE_PREFIX, 16889) +HANDLE_BAT(APINT_TYPE_PREFIX, 16890) +HANDLE_BAT(APINT_TYPE_PREFIX, 16891) +HANDLE_BAT(APINT_TYPE_PREFIX, 16892) +HANDLE_BAT(APINT_TYPE_PREFIX, 16893) +HANDLE_BAT(APINT_TYPE_PREFIX, 16894) +HANDLE_BAT(APINT_TYPE_PREFIX, 16895) +HANDLE_BAT(APINT_TYPE_PREFIX, 16896) +HANDLE_BAT(APINT_TYPE_PREFIX, 16897) +HANDLE_BAT(APINT_TYPE_PREFIX, 16898) +HANDLE_BAT(APINT_TYPE_PREFIX, 16899) +HANDLE_BAT(APINT_TYPE_PREFIX, 16900) +HANDLE_BAT(APINT_TYPE_PREFIX, 16901) +HANDLE_BAT(APINT_TYPE_PREFIX, 16902) +HANDLE_BAT(APINT_TYPE_PREFIX, 16903) +HANDLE_BAT(APINT_TYPE_PREFIX, 16904) +HANDLE_BAT(APINT_TYPE_PREFIX, 16905) +HANDLE_BAT(APINT_TYPE_PREFIX, 16906) +HANDLE_BAT(APINT_TYPE_PREFIX, 16907) +HANDLE_BAT(APINT_TYPE_PREFIX, 16908) +HANDLE_BAT(APINT_TYPE_PREFIX, 16909) +HANDLE_BAT(APINT_TYPE_PREFIX, 16910) +HANDLE_BAT(APINT_TYPE_PREFIX, 16911) +HANDLE_BAT(APINT_TYPE_PREFIX, 16912) +HANDLE_BAT(APINT_TYPE_PREFIX, 16913) +HANDLE_BAT(APINT_TYPE_PREFIX, 16914) +HANDLE_BAT(APINT_TYPE_PREFIX, 16915) +HANDLE_BAT(APINT_TYPE_PREFIX, 16916) +HANDLE_BAT(APINT_TYPE_PREFIX, 16917) +HANDLE_BAT(APINT_TYPE_PREFIX, 16918) +HANDLE_BAT(APINT_TYPE_PREFIX, 16919) +HANDLE_BAT(APINT_TYPE_PREFIX, 16920) +HANDLE_BAT(APINT_TYPE_PREFIX, 16921) +HANDLE_BAT(APINT_TYPE_PREFIX, 16922) +HANDLE_BAT(APINT_TYPE_PREFIX, 16923) +HANDLE_BAT(APINT_TYPE_PREFIX, 16924) +HANDLE_BAT(APINT_TYPE_PREFIX, 16925) +HANDLE_BAT(APINT_TYPE_PREFIX, 16926) +HANDLE_BAT(APINT_TYPE_PREFIX, 16927) +HANDLE_BAT(APINT_TYPE_PREFIX, 16928) +HANDLE_BAT(APINT_TYPE_PREFIX, 16929) +HANDLE_BAT(APINT_TYPE_PREFIX, 16930) +HANDLE_BAT(APINT_TYPE_PREFIX, 16931) +HANDLE_BAT(APINT_TYPE_PREFIX, 16932) +HANDLE_BAT(APINT_TYPE_PREFIX, 16933) +HANDLE_BAT(APINT_TYPE_PREFIX, 16934) +HANDLE_BAT(APINT_TYPE_PREFIX, 16935) +HANDLE_BAT(APINT_TYPE_PREFIX, 16936) +HANDLE_BAT(APINT_TYPE_PREFIX, 16937) +HANDLE_BAT(APINT_TYPE_PREFIX, 16938) +HANDLE_BAT(APINT_TYPE_PREFIX, 16939) +HANDLE_BAT(APINT_TYPE_PREFIX, 16940) +HANDLE_BAT(APINT_TYPE_PREFIX, 16941) +HANDLE_BAT(APINT_TYPE_PREFIX, 16942) +HANDLE_BAT(APINT_TYPE_PREFIX, 16943) +HANDLE_BAT(APINT_TYPE_PREFIX, 16944) +HANDLE_BAT(APINT_TYPE_PREFIX, 16945) +HANDLE_BAT(APINT_TYPE_PREFIX, 16946) +HANDLE_BAT(APINT_TYPE_PREFIX, 16947) +HANDLE_BAT(APINT_TYPE_PREFIX, 16948) +HANDLE_BAT(APINT_TYPE_PREFIX, 16949) +HANDLE_BAT(APINT_TYPE_PREFIX, 16950) +HANDLE_BAT(APINT_TYPE_PREFIX, 16951) +HANDLE_BAT(APINT_TYPE_PREFIX, 16952) +HANDLE_BAT(APINT_TYPE_PREFIX, 16953) +HANDLE_BAT(APINT_TYPE_PREFIX, 16954) +HANDLE_BAT(APINT_TYPE_PREFIX, 16955) +HANDLE_BAT(APINT_TYPE_PREFIX, 16956) +HANDLE_BAT(APINT_TYPE_PREFIX, 16957) +HANDLE_BAT(APINT_TYPE_PREFIX, 16958) +HANDLE_BAT(APINT_TYPE_PREFIX, 16959) +HANDLE_BAT(APINT_TYPE_PREFIX, 16960) +HANDLE_BAT(APINT_TYPE_PREFIX, 16961) +HANDLE_BAT(APINT_TYPE_PREFIX, 16962) +HANDLE_BAT(APINT_TYPE_PREFIX, 16963) +HANDLE_BAT(APINT_TYPE_PREFIX, 16964) +HANDLE_BAT(APINT_TYPE_PREFIX, 16965) +HANDLE_BAT(APINT_TYPE_PREFIX, 16966) +HANDLE_BAT(APINT_TYPE_PREFIX, 16967) +HANDLE_BAT(APINT_TYPE_PREFIX, 16968) +HANDLE_BAT(APINT_TYPE_PREFIX, 16969) +HANDLE_BAT(APINT_TYPE_PREFIX, 16970) +HANDLE_BAT(APINT_TYPE_PREFIX, 16971) +HANDLE_BAT(APINT_TYPE_PREFIX, 16972) +HANDLE_BAT(APINT_TYPE_PREFIX, 16973) +HANDLE_BAT(APINT_TYPE_PREFIX, 16974) +HANDLE_BAT(APINT_TYPE_PREFIX, 16975) +HANDLE_BAT(APINT_TYPE_PREFIX, 16976) +HANDLE_BAT(APINT_TYPE_PREFIX, 16977) +HANDLE_BAT(APINT_TYPE_PREFIX, 16978) +HANDLE_BAT(APINT_TYPE_PREFIX, 16979) +HANDLE_BAT(APINT_TYPE_PREFIX, 16980) +HANDLE_BAT(APINT_TYPE_PREFIX, 16981) +HANDLE_BAT(APINT_TYPE_PREFIX, 16982) +HANDLE_BAT(APINT_TYPE_PREFIX, 16983) +HANDLE_BAT(APINT_TYPE_PREFIX, 16984) +HANDLE_BAT(APINT_TYPE_PREFIX, 16985) +HANDLE_BAT(APINT_TYPE_PREFIX, 16986) +HANDLE_BAT(APINT_TYPE_PREFIX, 16987) +HANDLE_BAT(APINT_TYPE_PREFIX, 16988) +HANDLE_BAT(APINT_TYPE_PREFIX, 16989) +HANDLE_BAT(APINT_TYPE_PREFIX, 16990) +HANDLE_BAT(APINT_TYPE_PREFIX, 16991) +HANDLE_BAT(APINT_TYPE_PREFIX, 16992) +HANDLE_BAT(APINT_TYPE_PREFIX, 16993) +HANDLE_BAT(APINT_TYPE_PREFIX, 16994) +HANDLE_BAT(APINT_TYPE_PREFIX, 16995) +HANDLE_BAT(APINT_TYPE_PREFIX, 16996) +HANDLE_BAT(APINT_TYPE_PREFIX, 16997) +HANDLE_BAT(APINT_TYPE_PREFIX, 16998) +HANDLE_BAT(APINT_TYPE_PREFIX, 16999) +HANDLE_BAT(APINT_TYPE_PREFIX, 17000) +HANDLE_BAT(APINT_TYPE_PREFIX, 17001) +HANDLE_BAT(APINT_TYPE_PREFIX, 17002) +HANDLE_BAT(APINT_TYPE_PREFIX, 17003) +HANDLE_BAT(APINT_TYPE_PREFIX, 17004) +HANDLE_BAT(APINT_TYPE_PREFIX, 17005) +HANDLE_BAT(APINT_TYPE_PREFIX, 17006) +HANDLE_BAT(APINT_TYPE_PREFIX, 17007) +HANDLE_BAT(APINT_TYPE_PREFIX, 17008) +HANDLE_BAT(APINT_TYPE_PREFIX, 17009) +HANDLE_BAT(APINT_TYPE_PREFIX, 17010) +HANDLE_BAT(APINT_TYPE_PREFIX, 17011) +HANDLE_BAT(APINT_TYPE_PREFIX, 17012) +HANDLE_BAT(APINT_TYPE_PREFIX, 17013) +HANDLE_BAT(APINT_TYPE_PREFIX, 17014) +HANDLE_BAT(APINT_TYPE_PREFIX, 17015) +HANDLE_BAT(APINT_TYPE_PREFIX, 17016) +HANDLE_BAT(APINT_TYPE_PREFIX, 17017) +HANDLE_BAT(APINT_TYPE_PREFIX, 17018) +HANDLE_BAT(APINT_TYPE_PREFIX, 17019) +HANDLE_BAT(APINT_TYPE_PREFIX, 17020) +HANDLE_BAT(APINT_TYPE_PREFIX, 17021) +HANDLE_BAT(APINT_TYPE_PREFIX, 17022) +HANDLE_BAT(APINT_TYPE_PREFIX, 17023) +HANDLE_BAT(APINT_TYPE_PREFIX, 17024) +HANDLE_BAT(APINT_TYPE_PREFIX, 17025) +HANDLE_BAT(APINT_TYPE_PREFIX, 17026) +HANDLE_BAT(APINT_TYPE_PREFIX, 17027) +HANDLE_BAT(APINT_TYPE_PREFIX, 17028) +HANDLE_BAT(APINT_TYPE_PREFIX, 17029) +HANDLE_BAT(APINT_TYPE_PREFIX, 17030) +HANDLE_BAT(APINT_TYPE_PREFIX, 17031) +HANDLE_BAT(APINT_TYPE_PREFIX, 17032) +HANDLE_BAT(APINT_TYPE_PREFIX, 17033) +HANDLE_BAT(APINT_TYPE_PREFIX, 17034) +HANDLE_BAT(APINT_TYPE_PREFIX, 17035) +HANDLE_BAT(APINT_TYPE_PREFIX, 17036) +HANDLE_BAT(APINT_TYPE_PREFIX, 17037) +HANDLE_BAT(APINT_TYPE_PREFIX, 17038) +HANDLE_BAT(APINT_TYPE_PREFIX, 17039) +HANDLE_BAT(APINT_TYPE_PREFIX, 17040) +HANDLE_BAT(APINT_TYPE_PREFIX, 17041) +HANDLE_BAT(APINT_TYPE_PREFIX, 17042) +HANDLE_BAT(APINT_TYPE_PREFIX, 17043) +HANDLE_BAT(APINT_TYPE_PREFIX, 17044) +HANDLE_BAT(APINT_TYPE_PREFIX, 17045) +HANDLE_BAT(APINT_TYPE_PREFIX, 17046) +HANDLE_BAT(APINT_TYPE_PREFIX, 17047) +HANDLE_BAT(APINT_TYPE_PREFIX, 17048) +HANDLE_BAT(APINT_TYPE_PREFIX, 17049) +HANDLE_BAT(APINT_TYPE_PREFIX, 17050) +HANDLE_BAT(APINT_TYPE_PREFIX, 17051) +HANDLE_BAT(APINT_TYPE_PREFIX, 17052) +HANDLE_BAT(APINT_TYPE_PREFIX, 17053) +HANDLE_BAT(APINT_TYPE_PREFIX, 17054) +HANDLE_BAT(APINT_TYPE_PREFIX, 17055) +HANDLE_BAT(APINT_TYPE_PREFIX, 17056) +HANDLE_BAT(APINT_TYPE_PREFIX, 17057) +HANDLE_BAT(APINT_TYPE_PREFIX, 17058) +HANDLE_BAT(APINT_TYPE_PREFIX, 17059) +HANDLE_BAT(APINT_TYPE_PREFIX, 17060) +HANDLE_BAT(APINT_TYPE_PREFIX, 17061) +HANDLE_BAT(APINT_TYPE_PREFIX, 17062) +HANDLE_BAT(APINT_TYPE_PREFIX, 17063) +HANDLE_BAT(APINT_TYPE_PREFIX, 17064) +HANDLE_BAT(APINT_TYPE_PREFIX, 17065) +HANDLE_BAT(APINT_TYPE_PREFIX, 17066) +HANDLE_BAT(APINT_TYPE_PREFIX, 17067) +HANDLE_BAT(APINT_TYPE_PREFIX, 17068) +HANDLE_BAT(APINT_TYPE_PREFIX, 17069) +HANDLE_BAT(APINT_TYPE_PREFIX, 17070) +HANDLE_BAT(APINT_TYPE_PREFIX, 17071) +HANDLE_BAT(APINT_TYPE_PREFIX, 17072) +HANDLE_BAT(APINT_TYPE_PREFIX, 17073) +HANDLE_BAT(APINT_TYPE_PREFIX, 17074) +HANDLE_BAT(APINT_TYPE_PREFIX, 17075) +HANDLE_BAT(APINT_TYPE_PREFIX, 17076) +HANDLE_BAT(APINT_TYPE_PREFIX, 17077) +HANDLE_BAT(APINT_TYPE_PREFIX, 17078) +HANDLE_BAT(APINT_TYPE_PREFIX, 17079) +HANDLE_BAT(APINT_TYPE_PREFIX, 17080) +HANDLE_BAT(APINT_TYPE_PREFIX, 17081) +HANDLE_BAT(APINT_TYPE_PREFIX, 17082) +HANDLE_BAT(APINT_TYPE_PREFIX, 17083) +HANDLE_BAT(APINT_TYPE_PREFIX, 17084) +HANDLE_BAT(APINT_TYPE_PREFIX, 17085) +HANDLE_BAT(APINT_TYPE_PREFIX, 17086) +HANDLE_BAT(APINT_TYPE_PREFIX, 17087) +HANDLE_BAT(APINT_TYPE_PREFIX, 17088) +HANDLE_BAT(APINT_TYPE_PREFIX, 17089) +HANDLE_BAT(APINT_TYPE_PREFIX, 17090) +HANDLE_BAT(APINT_TYPE_PREFIX, 17091) +HANDLE_BAT(APINT_TYPE_PREFIX, 17092) +HANDLE_BAT(APINT_TYPE_PREFIX, 17093) +HANDLE_BAT(APINT_TYPE_PREFIX, 17094) +HANDLE_BAT(APINT_TYPE_PREFIX, 17095) +HANDLE_BAT(APINT_TYPE_PREFIX, 17096) +HANDLE_BAT(APINT_TYPE_PREFIX, 17097) +HANDLE_BAT(APINT_TYPE_PREFIX, 17098) +HANDLE_BAT(APINT_TYPE_PREFIX, 17099) +HANDLE_BAT(APINT_TYPE_PREFIX, 17100) +HANDLE_BAT(APINT_TYPE_PREFIX, 17101) +HANDLE_BAT(APINT_TYPE_PREFIX, 17102) +HANDLE_BAT(APINT_TYPE_PREFIX, 17103) +HANDLE_BAT(APINT_TYPE_PREFIX, 17104) +HANDLE_BAT(APINT_TYPE_PREFIX, 17105) +HANDLE_BAT(APINT_TYPE_PREFIX, 17106) +HANDLE_BAT(APINT_TYPE_PREFIX, 17107) +HANDLE_BAT(APINT_TYPE_PREFIX, 17108) +HANDLE_BAT(APINT_TYPE_PREFIX, 17109) +HANDLE_BAT(APINT_TYPE_PREFIX, 17110) +HANDLE_BAT(APINT_TYPE_PREFIX, 17111) +HANDLE_BAT(APINT_TYPE_PREFIX, 17112) +HANDLE_BAT(APINT_TYPE_PREFIX, 17113) +HANDLE_BAT(APINT_TYPE_PREFIX, 17114) +HANDLE_BAT(APINT_TYPE_PREFIX, 17115) +HANDLE_BAT(APINT_TYPE_PREFIX, 17116) +HANDLE_BAT(APINT_TYPE_PREFIX, 17117) +HANDLE_BAT(APINT_TYPE_PREFIX, 17118) +HANDLE_BAT(APINT_TYPE_PREFIX, 17119) +HANDLE_BAT(APINT_TYPE_PREFIX, 17120) +HANDLE_BAT(APINT_TYPE_PREFIX, 17121) +HANDLE_BAT(APINT_TYPE_PREFIX, 17122) +HANDLE_BAT(APINT_TYPE_PREFIX, 17123) +HANDLE_BAT(APINT_TYPE_PREFIX, 17124) +HANDLE_BAT(APINT_TYPE_PREFIX, 17125) +HANDLE_BAT(APINT_TYPE_PREFIX, 17126) +HANDLE_BAT(APINT_TYPE_PREFIX, 17127) +HANDLE_BAT(APINT_TYPE_PREFIX, 17128) +HANDLE_BAT(APINT_TYPE_PREFIX, 17129) +HANDLE_BAT(APINT_TYPE_PREFIX, 17130) +HANDLE_BAT(APINT_TYPE_PREFIX, 17131) +HANDLE_BAT(APINT_TYPE_PREFIX, 17132) +HANDLE_BAT(APINT_TYPE_PREFIX, 17133) +HANDLE_BAT(APINT_TYPE_PREFIX, 17134) +HANDLE_BAT(APINT_TYPE_PREFIX, 17135) +HANDLE_BAT(APINT_TYPE_PREFIX, 17136) +HANDLE_BAT(APINT_TYPE_PREFIX, 17137) +HANDLE_BAT(APINT_TYPE_PREFIX, 17138) +HANDLE_BAT(APINT_TYPE_PREFIX, 17139) +HANDLE_BAT(APINT_TYPE_PREFIX, 17140) +HANDLE_BAT(APINT_TYPE_PREFIX, 17141) +HANDLE_BAT(APINT_TYPE_PREFIX, 17142) +HANDLE_BAT(APINT_TYPE_PREFIX, 17143) +HANDLE_BAT(APINT_TYPE_PREFIX, 17144) +HANDLE_BAT(APINT_TYPE_PREFIX, 17145) +HANDLE_BAT(APINT_TYPE_PREFIX, 17146) +HANDLE_BAT(APINT_TYPE_PREFIX, 17147) +HANDLE_BAT(APINT_TYPE_PREFIX, 17148) +HANDLE_BAT(APINT_TYPE_PREFIX, 17149) +HANDLE_BAT(APINT_TYPE_PREFIX, 17150) +HANDLE_BAT(APINT_TYPE_PREFIX, 17151) +HANDLE_BAT(APINT_TYPE_PREFIX, 17152) +HANDLE_BAT(APINT_TYPE_PREFIX, 17153) +HANDLE_BAT(APINT_TYPE_PREFIX, 17154) +HANDLE_BAT(APINT_TYPE_PREFIX, 17155) +HANDLE_BAT(APINT_TYPE_PREFIX, 17156) +HANDLE_BAT(APINT_TYPE_PREFIX, 17157) +HANDLE_BAT(APINT_TYPE_PREFIX, 17158) +HANDLE_BAT(APINT_TYPE_PREFIX, 17159) +HANDLE_BAT(APINT_TYPE_PREFIX, 17160) +HANDLE_BAT(APINT_TYPE_PREFIX, 17161) +HANDLE_BAT(APINT_TYPE_PREFIX, 17162) +HANDLE_BAT(APINT_TYPE_PREFIX, 17163) +HANDLE_BAT(APINT_TYPE_PREFIX, 17164) +HANDLE_BAT(APINT_TYPE_PREFIX, 17165) +HANDLE_BAT(APINT_TYPE_PREFIX, 17166) +HANDLE_BAT(APINT_TYPE_PREFIX, 17167) +HANDLE_BAT(APINT_TYPE_PREFIX, 17168) +HANDLE_BAT(APINT_TYPE_PREFIX, 17169) +HANDLE_BAT(APINT_TYPE_PREFIX, 17170) +HANDLE_BAT(APINT_TYPE_PREFIX, 17171) +HANDLE_BAT(APINT_TYPE_PREFIX, 17172) +HANDLE_BAT(APINT_TYPE_PREFIX, 17173) +HANDLE_BAT(APINT_TYPE_PREFIX, 17174) +HANDLE_BAT(APINT_TYPE_PREFIX, 17175) +HANDLE_BAT(APINT_TYPE_PREFIX, 17176) +HANDLE_BAT(APINT_TYPE_PREFIX, 17177) +HANDLE_BAT(APINT_TYPE_PREFIX, 17178) +HANDLE_BAT(APINT_TYPE_PREFIX, 17179) +HANDLE_BAT(APINT_TYPE_PREFIX, 17180) +HANDLE_BAT(APINT_TYPE_PREFIX, 17181) +HANDLE_BAT(APINT_TYPE_PREFIX, 17182) +HANDLE_BAT(APINT_TYPE_PREFIX, 17183) +HANDLE_BAT(APINT_TYPE_PREFIX, 17184) +HANDLE_BAT(APINT_TYPE_PREFIX, 17185) +HANDLE_BAT(APINT_TYPE_PREFIX, 17186) +HANDLE_BAT(APINT_TYPE_PREFIX, 17187) +HANDLE_BAT(APINT_TYPE_PREFIX, 17188) +HANDLE_BAT(APINT_TYPE_PREFIX, 17189) +HANDLE_BAT(APINT_TYPE_PREFIX, 17190) +HANDLE_BAT(APINT_TYPE_PREFIX, 17191) +HANDLE_BAT(APINT_TYPE_PREFIX, 17192) +HANDLE_BAT(APINT_TYPE_PREFIX, 17193) +HANDLE_BAT(APINT_TYPE_PREFIX, 17194) +HANDLE_BAT(APINT_TYPE_PREFIX, 17195) +HANDLE_BAT(APINT_TYPE_PREFIX, 17196) +HANDLE_BAT(APINT_TYPE_PREFIX, 17197) +HANDLE_BAT(APINT_TYPE_PREFIX, 17198) +HANDLE_BAT(APINT_TYPE_PREFIX, 17199) +HANDLE_BAT(APINT_TYPE_PREFIX, 17200) +HANDLE_BAT(APINT_TYPE_PREFIX, 17201) +HANDLE_BAT(APINT_TYPE_PREFIX, 17202) +HANDLE_BAT(APINT_TYPE_PREFIX, 17203) +HANDLE_BAT(APINT_TYPE_PREFIX, 17204) +HANDLE_BAT(APINT_TYPE_PREFIX, 17205) +HANDLE_BAT(APINT_TYPE_PREFIX, 17206) +HANDLE_BAT(APINT_TYPE_PREFIX, 17207) +HANDLE_BAT(APINT_TYPE_PREFIX, 17208) +HANDLE_BAT(APINT_TYPE_PREFIX, 17209) +HANDLE_BAT(APINT_TYPE_PREFIX, 17210) +HANDLE_BAT(APINT_TYPE_PREFIX, 17211) +HANDLE_BAT(APINT_TYPE_PREFIX, 17212) +HANDLE_BAT(APINT_TYPE_PREFIX, 17213) +HANDLE_BAT(APINT_TYPE_PREFIX, 17214) +HANDLE_BAT(APINT_TYPE_PREFIX, 17215) +HANDLE_BAT(APINT_TYPE_PREFIX, 17216) +HANDLE_BAT(APINT_TYPE_PREFIX, 17217) +HANDLE_BAT(APINT_TYPE_PREFIX, 17218) +HANDLE_BAT(APINT_TYPE_PREFIX, 17219) +HANDLE_BAT(APINT_TYPE_PREFIX, 17220) +HANDLE_BAT(APINT_TYPE_PREFIX, 17221) +HANDLE_BAT(APINT_TYPE_PREFIX, 17222) +HANDLE_BAT(APINT_TYPE_PREFIX, 17223) +HANDLE_BAT(APINT_TYPE_PREFIX, 17224) +HANDLE_BAT(APINT_TYPE_PREFIX, 17225) +HANDLE_BAT(APINT_TYPE_PREFIX, 17226) +HANDLE_BAT(APINT_TYPE_PREFIX, 17227) +HANDLE_BAT(APINT_TYPE_PREFIX, 17228) +HANDLE_BAT(APINT_TYPE_PREFIX, 17229) +HANDLE_BAT(APINT_TYPE_PREFIX, 17230) +HANDLE_BAT(APINT_TYPE_PREFIX, 17231) +HANDLE_BAT(APINT_TYPE_PREFIX, 17232) +HANDLE_BAT(APINT_TYPE_PREFIX, 17233) +HANDLE_BAT(APINT_TYPE_PREFIX, 17234) +HANDLE_BAT(APINT_TYPE_PREFIX, 17235) +HANDLE_BAT(APINT_TYPE_PREFIX, 17236) +HANDLE_BAT(APINT_TYPE_PREFIX, 17237) +HANDLE_BAT(APINT_TYPE_PREFIX, 17238) +HANDLE_BAT(APINT_TYPE_PREFIX, 17239) +HANDLE_BAT(APINT_TYPE_PREFIX, 17240) +HANDLE_BAT(APINT_TYPE_PREFIX, 17241) +HANDLE_BAT(APINT_TYPE_PREFIX, 17242) +HANDLE_BAT(APINT_TYPE_PREFIX, 17243) +HANDLE_BAT(APINT_TYPE_PREFIX, 17244) +HANDLE_BAT(APINT_TYPE_PREFIX, 17245) +HANDLE_BAT(APINT_TYPE_PREFIX, 17246) +HANDLE_BAT(APINT_TYPE_PREFIX, 17247) +HANDLE_BAT(APINT_TYPE_PREFIX, 17248) +HANDLE_BAT(APINT_TYPE_PREFIX, 17249) +HANDLE_BAT(APINT_TYPE_PREFIX, 17250) +HANDLE_BAT(APINT_TYPE_PREFIX, 17251) +HANDLE_BAT(APINT_TYPE_PREFIX, 17252) +HANDLE_BAT(APINT_TYPE_PREFIX, 17253) +HANDLE_BAT(APINT_TYPE_PREFIX, 17254) +HANDLE_BAT(APINT_TYPE_PREFIX, 17255) +HANDLE_BAT(APINT_TYPE_PREFIX, 17256) +HANDLE_BAT(APINT_TYPE_PREFIX, 17257) +HANDLE_BAT(APINT_TYPE_PREFIX, 17258) +HANDLE_BAT(APINT_TYPE_PREFIX, 17259) +HANDLE_BAT(APINT_TYPE_PREFIX, 17260) +HANDLE_BAT(APINT_TYPE_PREFIX, 17261) +HANDLE_BAT(APINT_TYPE_PREFIX, 17262) +HANDLE_BAT(APINT_TYPE_PREFIX, 17263) +HANDLE_BAT(APINT_TYPE_PREFIX, 17264) +HANDLE_BAT(APINT_TYPE_PREFIX, 17265) +HANDLE_BAT(APINT_TYPE_PREFIX, 17266) +HANDLE_BAT(APINT_TYPE_PREFIX, 17267) +HANDLE_BAT(APINT_TYPE_PREFIX, 17268) +HANDLE_BAT(APINT_TYPE_PREFIX, 17269) +HANDLE_BAT(APINT_TYPE_PREFIX, 17270) +HANDLE_BAT(APINT_TYPE_PREFIX, 17271) +HANDLE_BAT(APINT_TYPE_PREFIX, 17272) +HANDLE_BAT(APINT_TYPE_PREFIX, 17273) +HANDLE_BAT(APINT_TYPE_PREFIX, 17274) +HANDLE_BAT(APINT_TYPE_PREFIX, 17275) +HANDLE_BAT(APINT_TYPE_PREFIX, 17276) +HANDLE_BAT(APINT_TYPE_PREFIX, 17277) +HANDLE_BAT(APINT_TYPE_PREFIX, 17278) +HANDLE_BAT(APINT_TYPE_PREFIX, 17279) +HANDLE_BAT(APINT_TYPE_PREFIX, 17280) +HANDLE_BAT(APINT_TYPE_PREFIX, 17281) +HANDLE_BAT(APINT_TYPE_PREFIX, 17282) +HANDLE_BAT(APINT_TYPE_PREFIX, 17283) +HANDLE_BAT(APINT_TYPE_PREFIX, 17284) +HANDLE_BAT(APINT_TYPE_PREFIX, 17285) +HANDLE_BAT(APINT_TYPE_PREFIX, 17286) +HANDLE_BAT(APINT_TYPE_PREFIX, 17287) +HANDLE_BAT(APINT_TYPE_PREFIX, 17288) +HANDLE_BAT(APINT_TYPE_PREFIX, 17289) +HANDLE_BAT(APINT_TYPE_PREFIX, 17290) +HANDLE_BAT(APINT_TYPE_PREFIX, 17291) +HANDLE_BAT(APINT_TYPE_PREFIX, 17292) +HANDLE_BAT(APINT_TYPE_PREFIX, 17293) +HANDLE_BAT(APINT_TYPE_PREFIX, 17294) +HANDLE_BAT(APINT_TYPE_PREFIX, 17295) +HANDLE_BAT(APINT_TYPE_PREFIX, 17296) +HANDLE_BAT(APINT_TYPE_PREFIX, 17297) +HANDLE_BAT(APINT_TYPE_PREFIX, 17298) +HANDLE_BAT(APINT_TYPE_PREFIX, 17299) +HANDLE_BAT(APINT_TYPE_PREFIX, 17300) +HANDLE_BAT(APINT_TYPE_PREFIX, 17301) +HANDLE_BAT(APINT_TYPE_PREFIX, 17302) +HANDLE_BAT(APINT_TYPE_PREFIX, 17303) +HANDLE_BAT(APINT_TYPE_PREFIX, 17304) +HANDLE_BAT(APINT_TYPE_PREFIX, 17305) +HANDLE_BAT(APINT_TYPE_PREFIX, 17306) +HANDLE_BAT(APINT_TYPE_PREFIX, 17307) +HANDLE_BAT(APINT_TYPE_PREFIX, 17308) +HANDLE_BAT(APINT_TYPE_PREFIX, 17309) +HANDLE_BAT(APINT_TYPE_PREFIX, 17310) +HANDLE_BAT(APINT_TYPE_PREFIX, 17311) +HANDLE_BAT(APINT_TYPE_PREFIX, 17312) +HANDLE_BAT(APINT_TYPE_PREFIX, 17313) +HANDLE_BAT(APINT_TYPE_PREFIX, 17314) +HANDLE_BAT(APINT_TYPE_PREFIX, 17315) +HANDLE_BAT(APINT_TYPE_PREFIX, 17316) +HANDLE_BAT(APINT_TYPE_PREFIX, 17317) +HANDLE_BAT(APINT_TYPE_PREFIX, 17318) +HANDLE_BAT(APINT_TYPE_PREFIX, 17319) +HANDLE_BAT(APINT_TYPE_PREFIX, 17320) +HANDLE_BAT(APINT_TYPE_PREFIX, 17321) +HANDLE_BAT(APINT_TYPE_PREFIX, 17322) +HANDLE_BAT(APINT_TYPE_PREFIX, 17323) +HANDLE_BAT(APINT_TYPE_PREFIX, 17324) +HANDLE_BAT(APINT_TYPE_PREFIX, 17325) +HANDLE_BAT(APINT_TYPE_PREFIX, 17326) +HANDLE_BAT(APINT_TYPE_PREFIX, 17327) +HANDLE_BAT(APINT_TYPE_PREFIX, 17328) +HANDLE_BAT(APINT_TYPE_PREFIX, 17329) +HANDLE_BAT(APINT_TYPE_PREFIX, 17330) +HANDLE_BAT(APINT_TYPE_PREFIX, 17331) +HANDLE_BAT(APINT_TYPE_PREFIX, 17332) +HANDLE_BAT(APINT_TYPE_PREFIX, 17333) +HANDLE_BAT(APINT_TYPE_PREFIX, 17334) +HANDLE_BAT(APINT_TYPE_PREFIX, 17335) +HANDLE_BAT(APINT_TYPE_PREFIX, 17336) +HANDLE_BAT(APINT_TYPE_PREFIX, 17337) +HANDLE_BAT(APINT_TYPE_PREFIX, 17338) +HANDLE_BAT(APINT_TYPE_PREFIX, 17339) +HANDLE_BAT(APINT_TYPE_PREFIX, 17340) +HANDLE_BAT(APINT_TYPE_PREFIX, 17341) +HANDLE_BAT(APINT_TYPE_PREFIX, 17342) +HANDLE_BAT(APINT_TYPE_PREFIX, 17343) +HANDLE_BAT(APINT_TYPE_PREFIX, 17344) +HANDLE_BAT(APINT_TYPE_PREFIX, 17345) +HANDLE_BAT(APINT_TYPE_PREFIX, 17346) +HANDLE_BAT(APINT_TYPE_PREFIX, 17347) +HANDLE_BAT(APINT_TYPE_PREFIX, 17348) +HANDLE_BAT(APINT_TYPE_PREFIX, 17349) +HANDLE_BAT(APINT_TYPE_PREFIX, 17350) +HANDLE_BAT(APINT_TYPE_PREFIX, 17351) +HANDLE_BAT(APINT_TYPE_PREFIX, 17352) +HANDLE_BAT(APINT_TYPE_PREFIX, 17353) +HANDLE_BAT(APINT_TYPE_PREFIX, 17354) +HANDLE_BAT(APINT_TYPE_PREFIX, 17355) +HANDLE_BAT(APINT_TYPE_PREFIX, 17356) +HANDLE_BAT(APINT_TYPE_PREFIX, 17357) +HANDLE_BAT(APINT_TYPE_PREFIX, 17358) +HANDLE_BAT(APINT_TYPE_PREFIX, 17359) +HANDLE_BAT(APINT_TYPE_PREFIX, 17360) +HANDLE_BAT(APINT_TYPE_PREFIX, 17361) +HANDLE_BAT(APINT_TYPE_PREFIX, 17362) +HANDLE_BAT(APINT_TYPE_PREFIX, 17363) +HANDLE_BAT(APINT_TYPE_PREFIX, 17364) +HANDLE_BAT(APINT_TYPE_PREFIX, 17365) +HANDLE_BAT(APINT_TYPE_PREFIX, 17366) +HANDLE_BAT(APINT_TYPE_PREFIX, 17367) +HANDLE_BAT(APINT_TYPE_PREFIX, 17368) +HANDLE_BAT(APINT_TYPE_PREFIX, 17369) +HANDLE_BAT(APINT_TYPE_PREFIX, 17370) +HANDLE_BAT(APINT_TYPE_PREFIX, 17371) +HANDLE_BAT(APINT_TYPE_PREFIX, 17372) +HANDLE_BAT(APINT_TYPE_PREFIX, 17373) +HANDLE_BAT(APINT_TYPE_PREFIX, 17374) +HANDLE_BAT(APINT_TYPE_PREFIX, 17375) +HANDLE_BAT(APINT_TYPE_PREFIX, 17376) +HANDLE_BAT(APINT_TYPE_PREFIX, 17377) +HANDLE_BAT(APINT_TYPE_PREFIX, 17378) +HANDLE_BAT(APINT_TYPE_PREFIX, 17379) +HANDLE_BAT(APINT_TYPE_PREFIX, 17380) +HANDLE_BAT(APINT_TYPE_PREFIX, 17381) +HANDLE_BAT(APINT_TYPE_PREFIX, 17382) +HANDLE_BAT(APINT_TYPE_PREFIX, 17383) +HANDLE_BAT(APINT_TYPE_PREFIX, 17384) +HANDLE_BAT(APINT_TYPE_PREFIX, 17385) +HANDLE_BAT(APINT_TYPE_PREFIX, 17386) +HANDLE_BAT(APINT_TYPE_PREFIX, 17387) +HANDLE_BAT(APINT_TYPE_PREFIX, 17388) +HANDLE_BAT(APINT_TYPE_PREFIX, 17389) +HANDLE_BAT(APINT_TYPE_PREFIX, 17390) +HANDLE_BAT(APINT_TYPE_PREFIX, 17391) +HANDLE_BAT(APINT_TYPE_PREFIX, 17392) +HANDLE_BAT(APINT_TYPE_PREFIX, 17393) +HANDLE_BAT(APINT_TYPE_PREFIX, 17394) +HANDLE_BAT(APINT_TYPE_PREFIX, 17395) +HANDLE_BAT(APINT_TYPE_PREFIX, 17396) +HANDLE_BAT(APINT_TYPE_PREFIX, 17397) +HANDLE_BAT(APINT_TYPE_PREFIX, 17398) +HANDLE_BAT(APINT_TYPE_PREFIX, 17399) +HANDLE_BAT(APINT_TYPE_PREFIX, 17400) +HANDLE_BAT(APINT_TYPE_PREFIX, 17401) +HANDLE_BAT(APINT_TYPE_PREFIX, 17402) +HANDLE_BAT(APINT_TYPE_PREFIX, 17403) +HANDLE_BAT(APINT_TYPE_PREFIX, 17404) +HANDLE_BAT(APINT_TYPE_PREFIX, 17405) +HANDLE_BAT(APINT_TYPE_PREFIX, 17406) +HANDLE_BAT(APINT_TYPE_PREFIX, 17407) +HANDLE_BAT(APINT_TYPE_PREFIX, 17408) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 17 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 17409) +HANDLE_BAT(, 17410) +HANDLE_BAT(, 17411) +HANDLE_BAT(, 17412) +HANDLE_BAT(, 17413) +HANDLE_BAT(, 17414) +HANDLE_BAT(, 17415) +HANDLE_BAT(, 17416) +HANDLE_BAT(, 17417) +HANDLE_BAT(, 17418) +HANDLE_BAT(, 17419) +HANDLE_BAT(, 17420) +HANDLE_BAT(, 17421) +HANDLE_BAT(, 17422) +HANDLE_BAT(, 17423) +HANDLE_BAT(, 17424) +HANDLE_BAT(, 17425) +HANDLE_BAT(, 17426) +HANDLE_BAT(, 17427) +HANDLE_BAT(, 17428) +HANDLE_BAT(, 17429) +HANDLE_BAT(, 17430) +HANDLE_BAT(, 17431) +HANDLE_BAT(, 17432) +HANDLE_BAT(, 17433) +HANDLE_BAT(, 17434) +HANDLE_BAT(, 17435) +HANDLE_BAT(, 17436) +HANDLE_BAT(, 17437) +HANDLE_BAT(, 17438) +HANDLE_BAT(, 17439) +HANDLE_BAT(, 17440) +HANDLE_BAT(, 17441) +HANDLE_BAT(, 17442) +HANDLE_BAT(, 17443) +HANDLE_BAT(, 17444) +HANDLE_BAT(, 17445) +HANDLE_BAT(, 17446) +HANDLE_BAT(, 17447) +HANDLE_BAT(, 17448) +HANDLE_BAT(, 17449) +HANDLE_BAT(, 17450) +HANDLE_BAT(, 17451) +HANDLE_BAT(, 17452) +HANDLE_BAT(, 17453) +HANDLE_BAT(, 17454) +HANDLE_BAT(, 17455) +HANDLE_BAT(, 17456) +HANDLE_BAT(, 17457) +HANDLE_BAT(, 17458) +HANDLE_BAT(, 17459) +HANDLE_BAT(, 17460) +HANDLE_BAT(, 17461) +HANDLE_BAT(, 17462) +HANDLE_BAT(, 17463) +HANDLE_BAT(, 17464) +HANDLE_BAT(, 17465) +HANDLE_BAT(, 17466) +HANDLE_BAT(, 17467) +HANDLE_BAT(, 17468) +HANDLE_BAT(, 17469) +HANDLE_BAT(, 17470) +HANDLE_BAT(, 17471) +HANDLE_BAT(, 17472) +HANDLE_BAT(, 17473) +HANDLE_BAT(, 17474) +HANDLE_BAT(, 17475) +HANDLE_BAT(, 17476) +HANDLE_BAT(, 17477) +HANDLE_BAT(, 17478) +HANDLE_BAT(, 17479) +HANDLE_BAT(, 17480) +HANDLE_BAT(, 17481) +HANDLE_BAT(, 17482) +HANDLE_BAT(, 17483) +HANDLE_BAT(, 17484) +HANDLE_BAT(, 17485) +HANDLE_BAT(, 17486) +HANDLE_BAT(, 17487) +HANDLE_BAT(, 17488) +HANDLE_BAT(, 17489) +HANDLE_BAT(, 17490) +HANDLE_BAT(, 17491) +HANDLE_BAT(, 17492) +HANDLE_BAT(, 17493) +HANDLE_BAT(, 17494) +HANDLE_BAT(, 17495) +HANDLE_BAT(, 17496) +HANDLE_BAT(, 17497) +HANDLE_BAT(, 17498) +HANDLE_BAT(, 17499) +HANDLE_BAT(, 17500) +HANDLE_BAT(, 17501) +HANDLE_BAT(, 17502) +HANDLE_BAT(, 17503) +HANDLE_BAT(, 17504) +HANDLE_BAT(, 17505) +HANDLE_BAT(, 17506) +HANDLE_BAT(, 17507) +HANDLE_BAT(, 17508) +HANDLE_BAT(, 17509) +HANDLE_BAT(, 17510) +HANDLE_BAT(, 17511) +HANDLE_BAT(, 17512) +HANDLE_BAT(, 17513) +HANDLE_BAT(, 17514) +HANDLE_BAT(, 17515) +HANDLE_BAT(, 17516) +HANDLE_BAT(, 17517) +HANDLE_BAT(, 17518) +HANDLE_BAT(, 17519) +HANDLE_BAT(, 17520) +HANDLE_BAT(, 17521) +HANDLE_BAT(, 17522) +HANDLE_BAT(, 17523) +HANDLE_BAT(, 17524) +HANDLE_BAT(, 17525) +HANDLE_BAT(, 17526) +HANDLE_BAT(, 17527) +HANDLE_BAT(, 17528) +HANDLE_BAT(, 17529) +HANDLE_BAT(, 17530) +HANDLE_BAT(, 17531) +HANDLE_BAT(, 17532) +HANDLE_BAT(, 17533) +HANDLE_BAT(, 17534) +HANDLE_BAT(, 17535) +HANDLE_BAT(, 17536) +HANDLE_BAT(, 17537) +HANDLE_BAT(, 17538) +HANDLE_BAT(, 17539) +HANDLE_BAT(, 17540) +HANDLE_BAT(, 17541) +HANDLE_BAT(, 17542) +HANDLE_BAT(, 17543) +HANDLE_BAT(, 17544) +HANDLE_BAT(, 17545) +HANDLE_BAT(, 17546) +HANDLE_BAT(, 17547) +HANDLE_BAT(, 17548) +HANDLE_BAT(, 17549) +HANDLE_BAT(, 17550) +HANDLE_BAT(, 17551) +HANDLE_BAT(, 17552) +HANDLE_BAT(, 17553) +HANDLE_BAT(, 17554) +HANDLE_BAT(, 17555) +HANDLE_BAT(, 17556) +HANDLE_BAT(, 17557) +HANDLE_BAT(, 17558) +HANDLE_BAT(, 17559) +HANDLE_BAT(, 17560) +HANDLE_BAT(, 17561) +HANDLE_BAT(, 17562) +HANDLE_BAT(, 17563) +HANDLE_BAT(, 17564) +HANDLE_BAT(, 17565) +HANDLE_BAT(, 17566) +HANDLE_BAT(, 17567) +HANDLE_BAT(, 17568) +HANDLE_BAT(, 17569) +HANDLE_BAT(, 17570) +HANDLE_BAT(, 17571) +HANDLE_BAT(, 17572) +HANDLE_BAT(, 17573) +HANDLE_BAT(, 17574) +HANDLE_BAT(, 17575) +HANDLE_BAT(, 17576) +HANDLE_BAT(, 17577) +HANDLE_BAT(, 17578) +HANDLE_BAT(, 17579) +HANDLE_BAT(, 17580) +HANDLE_BAT(, 17581) +HANDLE_BAT(, 17582) +HANDLE_BAT(, 17583) +HANDLE_BAT(, 17584) +HANDLE_BAT(, 17585) +HANDLE_BAT(, 17586) +HANDLE_BAT(, 17587) +HANDLE_BAT(, 17588) +HANDLE_BAT(, 17589) +HANDLE_BAT(, 17590) +HANDLE_BAT(, 17591) +HANDLE_BAT(, 17592) +HANDLE_BAT(, 17593) +HANDLE_BAT(, 17594) +HANDLE_BAT(, 17595) +HANDLE_BAT(, 17596) +HANDLE_BAT(, 17597) +HANDLE_BAT(, 17598) +HANDLE_BAT(, 17599) +HANDLE_BAT(, 17600) +HANDLE_BAT(, 17601) +HANDLE_BAT(, 17602) +HANDLE_BAT(, 17603) +HANDLE_BAT(, 17604) +HANDLE_BAT(, 17605) +HANDLE_BAT(, 17606) +HANDLE_BAT(, 17607) +HANDLE_BAT(, 17608) +HANDLE_BAT(, 17609) +HANDLE_BAT(, 17610) +HANDLE_BAT(, 17611) +HANDLE_BAT(, 17612) +HANDLE_BAT(, 17613) +HANDLE_BAT(, 17614) +HANDLE_BAT(, 17615) +HANDLE_BAT(, 17616) +HANDLE_BAT(, 17617) +HANDLE_BAT(, 17618) +HANDLE_BAT(, 17619) +HANDLE_BAT(, 17620) +HANDLE_BAT(, 17621) +HANDLE_BAT(, 17622) +HANDLE_BAT(, 17623) +HANDLE_BAT(, 17624) +HANDLE_BAT(, 17625) +HANDLE_BAT(, 17626) +HANDLE_BAT(, 17627) +HANDLE_BAT(, 17628) +HANDLE_BAT(, 17629) +HANDLE_BAT(, 17630) +HANDLE_BAT(, 17631) +HANDLE_BAT(, 17632) +HANDLE_BAT(, 17633) +HANDLE_BAT(, 17634) +HANDLE_BAT(, 17635) +HANDLE_BAT(, 17636) +HANDLE_BAT(, 17637) +HANDLE_BAT(, 17638) +HANDLE_BAT(, 17639) +HANDLE_BAT(, 17640) +HANDLE_BAT(, 17641) +HANDLE_BAT(, 17642) +HANDLE_BAT(, 17643) +HANDLE_BAT(, 17644) +HANDLE_BAT(, 17645) +HANDLE_BAT(, 17646) +HANDLE_BAT(, 17647) +HANDLE_BAT(, 17648) +HANDLE_BAT(, 17649) +HANDLE_BAT(, 17650) +HANDLE_BAT(, 17651) +HANDLE_BAT(, 17652) +HANDLE_BAT(, 17653) +HANDLE_BAT(, 17654) +HANDLE_BAT(, 17655) +HANDLE_BAT(, 17656) +HANDLE_BAT(, 17657) +HANDLE_BAT(, 17658) +HANDLE_BAT(, 17659) +HANDLE_BAT(, 17660) +HANDLE_BAT(, 17661) +HANDLE_BAT(, 17662) +HANDLE_BAT(, 17663) +HANDLE_BAT(, 17664) +HANDLE_BAT(, 17665) +HANDLE_BAT(, 17666) +HANDLE_BAT(, 17667) +HANDLE_BAT(, 17668) +HANDLE_BAT(, 17669) +HANDLE_BAT(, 17670) +HANDLE_BAT(, 17671) +HANDLE_BAT(, 17672) +HANDLE_BAT(, 17673) +HANDLE_BAT(, 17674) +HANDLE_BAT(, 17675) +HANDLE_BAT(, 17676) +HANDLE_BAT(, 17677) +HANDLE_BAT(, 17678) +HANDLE_BAT(, 17679) +HANDLE_BAT(, 17680) +HANDLE_BAT(, 17681) +HANDLE_BAT(, 17682) +HANDLE_BAT(, 17683) +HANDLE_BAT(, 17684) +HANDLE_BAT(, 17685) +HANDLE_BAT(, 17686) +HANDLE_BAT(, 17687) +HANDLE_BAT(, 17688) +HANDLE_BAT(, 17689) +HANDLE_BAT(, 17690) +HANDLE_BAT(, 17691) +HANDLE_BAT(, 17692) +HANDLE_BAT(, 17693) +HANDLE_BAT(, 17694) +HANDLE_BAT(, 17695) +HANDLE_BAT(, 17696) +HANDLE_BAT(, 17697) +HANDLE_BAT(, 17698) +HANDLE_BAT(, 17699) +HANDLE_BAT(, 17700) +HANDLE_BAT(, 17701) +HANDLE_BAT(, 17702) +HANDLE_BAT(, 17703) +HANDLE_BAT(, 17704) +HANDLE_BAT(, 17705) +HANDLE_BAT(, 17706) +HANDLE_BAT(, 17707) +HANDLE_BAT(, 17708) +HANDLE_BAT(, 17709) +HANDLE_BAT(, 17710) +HANDLE_BAT(, 17711) +HANDLE_BAT(, 17712) +HANDLE_BAT(, 17713) +HANDLE_BAT(, 17714) +HANDLE_BAT(, 17715) +HANDLE_BAT(, 17716) +HANDLE_BAT(, 17717) +HANDLE_BAT(, 17718) +HANDLE_BAT(, 17719) +HANDLE_BAT(, 17720) +HANDLE_BAT(, 17721) +HANDLE_BAT(, 17722) +HANDLE_BAT(, 17723) +HANDLE_BAT(, 17724) +HANDLE_BAT(, 17725) +HANDLE_BAT(, 17726) +HANDLE_BAT(, 17727) +HANDLE_BAT(, 17728) +HANDLE_BAT(, 17729) +HANDLE_BAT(, 17730) +HANDLE_BAT(, 17731) +HANDLE_BAT(, 17732) +HANDLE_BAT(, 17733) +HANDLE_BAT(, 17734) +HANDLE_BAT(, 17735) +HANDLE_BAT(, 17736) +HANDLE_BAT(, 17737) +HANDLE_BAT(, 17738) +HANDLE_BAT(, 17739) +HANDLE_BAT(, 17740) +HANDLE_BAT(, 17741) +HANDLE_BAT(, 17742) +HANDLE_BAT(, 17743) +HANDLE_BAT(, 17744) +HANDLE_BAT(, 17745) +HANDLE_BAT(, 17746) +HANDLE_BAT(, 17747) +HANDLE_BAT(, 17748) +HANDLE_BAT(, 17749) +HANDLE_BAT(, 17750) +HANDLE_BAT(, 17751) +HANDLE_BAT(, 17752) +HANDLE_BAT(, 17753) +HANDLE_BAT(, 17754) +HANDLE_BAT(, 17755) +HANDLE_BAT(, 17756) +HANDLE_BAT(, 17757) +HANDLE_BAT(, 17758) +HANDLE_BAT(, 17759) +HANDLE_BAT(, 17760) +HANDLE_BAT(, 17761) +HANDLE_BAT(, 17762) +HANDLE_BAT(, 17763) +HANDLE_BAT(, 17764) +HANDLE_BAT(, 17765) +HANDLE_BAT(, 17766) +HANDLE_BAT(, 17767) +HANDLE_BAT(, 17768) +HANDLE_BAT(, 17769) +HANDLE_BAT(, 17770) +HANDLE_BAT(, 17771) +HANDLE_BAT(, 17772) +HANDLE_BAT(, 17773) +HANDLE_BAT(, 17774) +HANDLE_BAT(, 17775) +HANDLE_BAT(, 17776) +HANDLE_BAT(, 17777) +HANDLE_BAT(, 17778) +HANDLE_BAT(, 17779) +HANDLE_BAT(, 17780) +HANDLE_BAT(, 17781) +HANDLE_BAT(, 17782) +HANDLE_BAT(, 17783) +HANDLE_BAT(, 17784) +HANDLE_BAT(, 17785) +HANDLE_BAT(, 17786) +HANDLE_BAT(, 17787) +HANDLE_BAT(, 17788) +HANDLE_BAT(, 17789) +HANDLE_BAT(, 17790) +HANDLE_BAT(, 17791) +HANDLE_BAT(, 17792) +HANDLE_BAT(, 17793) +HANDLE_BAT(, 17794) +HANDLE_BAT(, 17795) +HANDLE_BAT(, 17796) +HANDLE_BAT(, 17797) +HANDLE_BAT(, 17798) +HANDLE_BAT(, 17799) +HANDLE_BAT(, 17800) +HANDLE_BAT(, 17801) +HANDLE_BAT(, 17802) +HANDLE_BAT(, 17803) +HANDLE_BAT(, 17804) +HANDLE_BAT(, 17805) +HANDLE_BAT(, 17806) +HANDLE_BAT(, 17807) +HANDLE_BAT(, 17808) +HANDLE_BAT(, 17809) +HANDLE_BAT(, 17810) +HANDLE_BAT(, 17811) +HANDLE_BAT(, 17812) +HANDLE_BAT(, 17813) +HANDLE_BAT(, 17814) +HANDLE_BAT(, 17815) +HANDLE_BAT(, 17816) +HANDLE_BAT(, 17817) +HANDLE_BAT(, 17818) +HANDLE_BAT(, 17819) +HANDLE_BAT(, 17820) +HANDLE_BAT(, 17821) +HANDLE_BAT(, 17822) +HANDLE_BAT(, 17823) +HANDLE_BAT(, 17824) +HANDLE_BAT(, 17825) +HANDLE_BAT(, 17826) +HANDLE_BAT(, 17827) +HANDLE_BAT(, 17828) +HANDLE_BAT(, 17829) +HANDLE_BAT(, 17830) +HANDLE_BAT(, 17831) +HANDLE_BAT(, 17832) +HANDLE_BAT(, 17833) +HANDLE_BAT(, 17834) +HANDLE_BAT(, 17835) +HANDLE_BAT(, 17836) +HANDLE_BAT(, 17837) +HANDLE_BAT(, 17838) +HANDLE_BAT(, 17839) +HANDLE_BAT(, 17840) +HANDLE_BAT(, 17841) +HANDLE_BAT(, 17842) +HANDLE_BAT(, 17843) +HANDLE_BAT(, 17844) +HANDLE_BAT(, 17845) +HANDLE_BAT(, 17846) +HANDLE_BAT(, 17847) +HANDLE_BAT(, 17848) +HANDLE_BAT(, 17849) +HANDLE_BAT(, 17850) +HANDLE_BAT(, 17851) +HANDLE_BAT(, 17852) +HANDLE_BAT(, 17853) +HANDLE_BAT(, 17854) +HANDLE_BAT(, 17855) +HANDLE_BAT(, 17856) +HANDLE_BAT(, 17857) +HANDLE_BAT(, 17858) +HANDLE_BAT(, 17859) +HANDLE_BAT(, 17860) +HANDLE_BAT(, 17861) +HANDLE_BAT(, 17862) +HANDLE_BAT(, 17863) +HANDLE_BAT(, 17864) +HANDLE_BAT(, 17865) +HANDLE_BAT(, 17866) +HANDLE_BAT(, 17867) +HANDLE_BAT(, 17868) +HANDLE_BAT(, 17869) +HANDLE_BAT(, 17870) +HANDLE_BAT(, 17871) +HANDLE_BAT(, 17872) +HANDLE_BAT(, 17873) +HANDLE_BAT(, 17874) +HANDLE_BAT(, 17875) +HANDLE_BAT(, 17876) +HANDLE_BAT(, 17877) +HANDLE_BAT(, 17878) +HANDLE_BAT(, 17879) +HANDLE_BAT(, 17880) +HANDLE_BAT(, 17881) +HANDLE_BAT(, 17882) +HANDLE_BAT(, 17883) +HANDLE_BAT(, 17884) +HANDLE_BAT(, 17885) +HANDLE_BAT(, 17886) +HANDLE_BAT(, 17887) +HANDLE_BAT(, 17888) +HANDLE_BAT(, 17889) +HANDLE_BAT(, 17890) +HANDLE_BAT(, 17891) +HANDLE_BAT(, 17892) +HANDLE_BAT(, 17893) +HANDLE_BAT(, 17894) +HANDLE_BAT(, 17895) +HANDLE_BAT(, 17896) +HANDLE_BAT(, 17897) +HANDLE_BAT(, 17898) +HANDLE_BAT(, 17899) +HANDLE_BAT(, 17900) +HANDLE_BAT(, 17901) +HANDLE_BAT(, 17902) +HANDLE_BAT(, 17903) +HANDLE_BAT(, 17904) +HANDLE_BAT(, 17905) +HANDLE_BAT(, 17906) +HANDLE_BAT(, 17907) +HANDLE_BAT(, 17908) +HANDLE_BAT(, 17909) +HANDLE_BAT(, 17910) +HANDLE_BAT(, 17911) +HANDLE_BAT(, 17912) +HANDLE_BAT(, 17913) +HANDLE_BAT(, 17914) +HANDLE_BAT(, 17915) +HANDLE_BAT(, 17916) +HANDLE_BAT(, 17917) +HANDLE_BAT(, 17918) +HANDLE_BAT(, 17919) +HANDLE_BAT(, 17920) +HANDLE_BAT(, 17921) +HANDLE_BAT(, 17922) +HANDLE_BAT(, 17923) +HANDLE_BAT(, 17924) +HANDLE_BAT(, 17925) +HANDLE_BAT(, 17926) +HANDLE_BAT(, 17927) +HANDLE_BAT(, 17928) +HANDLE_BAT(, 17929) +HANDLE_BAT(, 17930) +HANDLE_BAT(, 17931) +HANDLE_BAT(, 17932) +HANDLE_BAT(, 17933) +HANDLE_BAT(, 17934) +HANDLE_BAT(, 17935) +HANDLE_BAT(, 17936) +HANDLE_BAT(, 17937) +HANDLE_BAT(, 17938) +HANDLE_BAT(, 17939) +HANDLE_BAT(, 17940) +HANDLE_BAT(, 17941) +HANDLE_BAT(, 17942) +HANDLE_BAT(, 17943) +HANDLE_BAT(, 17944) +HANDLE_BAT(, 17945) +HANDLE_BAT(, 17946) +HANDLE_BAT(, 17947) +HANDLE_BAT(, 17948) +HANDLE_BAT(, 17949) +HANDLE_BAT(, 17950) +HANDLE_BAT(, 17951) +HANDLE_BAT(, 17952) +HANDLE_BAT(, 17953) +HANDLE_BAT(, 17954) +HANDLE_BAT(, 17955) +HANDLE_BAT(, 17956) +HANDLE_BAT(, 17957) +HANDLE_BAT(, 17958) +HANDLE_BAT(, 17959) +HANDLE_BAT(, 17960) +HANDLE_BAT(, 17961) +HANDLE_BAT(, 17962) +HANDLE_BAT(, 17963) +HANDLE_BAT(, 17964) +HANDLE_BAT(, 17965) +HANDLE_BAT(, 17966) +HANDLE_BAT(, 17967) +HANDLE_BAT(, 17968) +HANDLE_BAT(, 17969) +HANDLE_BAT(, 17970) +HANDLE_BAT(, 17971) +HANDLE_BAT(, 17972) +HANDLE_BAT(, 17973) +HANDLE_BAT(, 17974) +HANDLE_BAT(, 17975) +HANDLE_BAT(, 17976) +HANDLE_BAT(, 17977) +HANDLE_BAT(, 17978) +HANDLE_BAT(, 17979) +HANDLE_BAT(, 17980) +HANDLE_BAT(, 17981) +HANDLE_BAT(, 17982) +HANDLE_BAT(, 17983) +HANDLE_BAT(, 17984) +HANDLE_BAT(, 17985) +HANDLE_BAT(, 17986) +HANDLE_BAT(, 17987) +HANDLE_BAT(, 17988) +HANDLE_BAT(, 17989) +HANDLE_BAT(, 17990) +HANDLE_BAT(, 17991) +HANDLE_BAT(, 17992) +HANDLE_BAT(, 17993) +HANDLE_BAT(, 17994) +HANDLE_BAT(, 17995) +HANDLE_BAT(, 17996) +HANDLE_BAT(, 17997) +HANDLE_BAT(, 17998) +HANDLE_BAT(, 17999) +HANDLE_BAT(, 18000) +HANDLE_BAT(, 18001) +HANDLE_BAT(, 18002) +HANDLE_BAT(, 18003) +HANDLE_BAT(, 18004) +HANDLE_BAT(, 18005) +HANDLE_BAT(, 18006) +HANDLE_BAT(, 18007) +HANDLE_BAT(, 18008) +HANDLE_BAT(, 18009) +HANDLE_BAT(, 18010) +HANDLE_BAT(, 18011) +HANDLE_BAT(, 18012) +HANDLE_BAT(, 18013) +HANDLE_BAT(, 18014) +HANDLE_BAT(, 18015) +HANDLE_BAT(, 18016) +HANDLE_BAT(, 18017) +HANDLE_BAT(, 18018) +HANDLE_BAT(, 18019) +HANDLE_BAT(, 18020) +HANDLE_BAT(, 18021) +HANDLE_BAT(, 18022) +HANDLE_BAT(, 18023) +HANDLE_BAT(, 18024) +HANDLE_BAT(, 18025) +HANDLE_BAT(, 18026) +HANDLE_BAT(, 18027) +HANDLE_BAT(, 18028) +HANDLE_BAT(, 18029) +HANDLE_BAT(, 18030) +HANDLE_BAT(, 18031) +HANDLE_BAT(, 18032) +HANDLE_BAT(, 18033) +HANDLE_BAT(, 18034) +HANDLE_BAT(, 18035) +HANDLE_BAT(, 18036) +HANDLE_BAT(, 18037) +HANDLE_BAT(, 18038) +HANDLE_BAT(, 18039) +HANDLE_BAT(, 18040) +HANDLE_BAT(, 18041) +HANDLE_BAT(, 18042) +HANDLE_BAT(, 18043) +HANDLE_BAT(, 18044) +HANDLE_BAT(, 18045) +HANDLE_BAT(, 18046) +HANDLE_BAT(, 18047) +HANDLE_BAT(, 18048) +HANDLE_BAT(, 18049) +HANDLE_BAT(, 18050) +HANDLE_BAT(, 18051) +HANDLE_BAT(, 18052) +HANDLE_BAT(, 18053) +HANDLE_BAT(, 18054) +HANDLE_BAT(, 18055) +HANDLE_BAT(, 18056) +HANDLE_BAT(, 18057) +HANDLE_BAT(, 18058) +HANDLE_BAT(, 18059) +HANDLE_BAT(, 18060) +HANDLE_BAT(, 18061) +HANDLE_BAT(, 18062) +HANDLE_BAT(, 18063) +HANDLE_BAT(, 18064) +HANDLE_BAT(, 18065) +HANDLE_BAT(, 18066) +HANDLE_BAT(, 18067) +HANDLE_BAT(, 18068) +HANDLE_BAT(, 18069) +HANDLE_BAT(, 18070) +HANDLE_BAT(, 18071) +HANDLE_BAT(, 18072) +HANDLE_BAT(, 18073) +HANDLE_BAT(, 18074) +HANDLE_BAT(, 18075) +HANDLE_BAT(, 18076) +HANDLE_BAT(, 18077) +HANDLE_BAT(, 18078) +HANDLE_BAT(, 18079) +HANDLE_BAT(, 18080) +HANDLE_BAT(, 18081) +HANDLE_BAT(, 18082) +HANDLE_BAT(, 18083) +HANDLE_BAT(, 18084) +HANDLE_BAT(, 18085) +HANDLE_BAT(, 18086) +HANDLE_BAT(, 18087) +HANDLE_BAT(, 18088) +HANDLE_BAT(, 18089) +HANDLE_BAT(, 18090) +HANDLE_BAT(, 18091) +HANDLE_BAT(, 18092) +HANDLE_BAT(, 18093) +HANDLE_BAT(, 18094) +HANDLE_BAT(, 18095) +HANDLE_BAT(, 18096) +HANDLE_BAT(, 18097) +HANDLE_BAT(, 18098) +HANDLE_BAT(, 18099) +HANDLE_BAT(, 18100) +HANDLE_BAT(, 18101) +HANDLE_BAT(, 18102) +HANDLE_BAT(, 18103) +HANDLE_BAT(, 18104) +HANDLE_BAT(, 18105) +HANDLE_BAT(, 18106) +HANDLE_BAT(, 18107) +HANDLE_BAT(, 18108) +HANDLE_BAT(, 18109) +HANDLE_BAT(, 18110) +HANDLE_BAT(, 18111) +HANDLE_BAT(, 18112) +HANDLE_BAT(, 18113) +HANDLE_BAT(, 18114) +HANDLE_BAT(, 18115) +HANDLE_BAT(, 18116) +HANDLE_BAT(, 18117) +HANDLE_BAT(, 18118) +HANDLE_BAT(, 18119) +HANDLE_BAT(, 18120) +HANDLE_BAT(, 18121) +HANDLE_BAT(, 18122) +HANDLE_BAT(, 18123) +HANDLE_BAT(, 18124) +HANDLE_BAT(, 18125) +HANDLE_BAT(, 18126) +HANDLE_BAT(, 18127) +HANDLE_BAT(, 18128) +HANDLE_BAT(, 18129) +HANDLE_BAT(, 18130) +HANDLE_BAT(, 18131) +HANDLE_BAT(, 18132) +HANDLE_BAT(, 18133) +HANDLE_BAT(, 18134) +HANDLE_BAT(, 18135) +HANDLE_BAT(, 18136) +HANDLE_BAT(, 18137) +HANDLE_BAT(, 18138) +HANDLE_BAT(, 18139) +HANDLE_BAT(, 18140) +HANDLE_BAT(, 18141) +HANDLE_BAT(, 18142) +HANDLE_BAT(, 18143) +HANDLE_BAT(, 18144) +HANDLE_BAT(, 18145) +HANDLE_BAT(, 18146) +HANDLE_BAT(, 18147) +HANDLE_BAT(, 18148) +HANDLE_BAT(, 18149) +HANDLE_BAT(, 18150) +HANDLE_BAT(, 18151) +HANDLE_BAT(, 18152) +HANDLE_BAT(, 18153) +HANDLE_BAT(, 18154) +HANDLE_BAT(, 18155) +HANDLE_BAT(, 18156) +HANDLE_BAT(, 18157) +HANDLE_BAT(, 18158) +HANDLE_BAT(, 18159) +HANDLE_BAT(, 18160) +HANDLE_BAT(, 18161) +HANDLE_BAT(, 18162) +HANDLE_BAT(, 18163) +HANDLE_BAT(, 18164) +HANDLE_BAT(, 18165) +HANDLE_BAT(, 18166) +HANDLE_BAT(, 18167) +HANDLE_BAT(, 18168) +HANDLE_BAT(, 18169) +HANDLE_BAT(, 18170) +HANDLE_BAT(, 18171) +HANDLE_BAT(, 18172) +HANDLE_BAT(, 18173) +HANDLE_BAT(, 18174) +HANDLE_BAT(, 18175) +HANDLE_BAT(, 18176) +HANDLE_BAT(, 18177) +HANDLE_BAT(, 18178) +HANDLE_BAT(, 18179) +HANDLE_BAT(, 18180) +HANDLE_BAT(, 18181) +HANDLE_BAT(, 18182) +HANDLE_BAT(, 18183) +HANDLE_BAT(, 18184) +HANDLE_BAT(, 18185) +HANDLE_BAT(, 18186) +HANDLE_BAT(, 18187) +HANDLE_BAT(, 18188) +HANDLE_BAT(, 18189) +HANDLE_BAT(, 18190) +HANDLE_BAT(, 18191) +HANDLE_BAT(, 18192) +HANDLE_BAT(, 18193) +HANDLE_BAT(, 18194) +HANDLE_BAT(, 18195) +HANDLE_BAT(, 18196) +HANDLE_BAT(, 18197) +HANDLE_BAT(, 18198) +HANDLE_BAT(, 18199) +HANDLE_BAT(, 18200) +HANDLE_BAT(, 18201) +HANDLE_BAT(, 18202) +HANDLE_BAT(, 18203) +HANDLE_BAT(, 18204) +HANDLE_BAT(, 18205) +HANDLE_BAT(, 18206) +HANDLE_BAT(, 18207) +HANDLE_BAT(, 18208) +HANDLE_BAT(, 18209) +HANDLE_BAT(, 18210) +HANDLE_BAT(, 18211) +HANDLE_BAT(, 18212) +HANDLE_BAT(, 18213) +HANDLE_BAT(, 18214) +HANDLE_BAT(, 18215) +HANDLE_BAT(, 18216) +HANDLE_BAT(, 18217) +HANDLE_BAT(, 18218) +HANDLE_BAT(, 18219) +HANDLE_BAT(, 18220) +HANDLE_BAT(, 18221) +HANDLE_BAT(, 18222) +HANDLE_BAT(, 18223) +HANDLE_BAT(, 18224) +HANDLE_BAT(, 18225) +HANDLE_BAT(, 18226) +HANDLE_BAT(, 18227) +HANDLE_BAT(, 18228) +HANDLE_BAT(, 18229) +HANDLE_BAT(, 18230) +HANDLE_BAT(, 18231) +HANDLE_BAT(, 18232) +HANDLE_BAT(, 18233) +HANDLE_BAT(, 18234) +HANDLE_BAT(, 18235) +HANDLE_BAT(, 18236) +HANDLE_BAT(, 18237) +HANDLE_BAT(, 18238) +HANDLE_BAT(, 18239) +HANDLE_BAT(, 18240) +HANDLE_BAT(, 18241) +HANDLE_BAT(, 18242) +HANDLE_BAT(, 18243) +HANDLE_BAT(, 18244) +HANDLE_BAT(, 18245) +HANDLE_BAT(, 18246) +HANDLE_BAT(, 18247) +HANDLE_BAT(, 18248) +HANDLE_BAT(, 18249) +HANDLE_BAT(, 18250) +HANDLE_BAT(, 18251) +HANDLE_BAT(, 18252) +HANDLE_BAT(, 18253) +HANDLE_BAT(, 18254) +HANDLE_BAT(, 18255) +HANDLE_BAT(, 18256) +HANDLE_BAT(, 18257) +HANDLE_BAT(, 18258) +HANDLE_BAT(, 18259) +HANDLE_BAT(, 18260) +HANDLE_BAT(, 18261) +HANDLE_BAT(, 18262) +HANDLE_BAT(, 18263) +HANDLE_BAT(, 18264) +HANDLE_BAT(, 18265) +HANDLE_BAT(, 18266) +HANDLE_BAT(, 18267) +HANDLE_BAT(, 18268) +HANDLE_BAT(, 18269) +HANDLE_BAT(, 18270) +HANDLE_BAT(, 18271) +HANDLE_BAT(, 18272) +HANDLE_BAT(, 18273) +HANDLE_BAT(, 18274) +HANDLE_BAT(, 18275) +HANDLE_BAT(, 18276) +HANDLE_BAT(, 18277) +HANDLE_BAT(, 18278) +HANDLE_BAT(, 18279) +HANDLE_BAT(, 18280) +HANDLE_BAT(, 18281) +HANDLE_BAT(, 18282) +HANDLE_BAT(, 18283) +HANDLE_BAT(, 18284) +HANDLE_BAT(, 18285) +HANDLE_BAT(, 18286) +HANDLE_BAT(, 18287) +HANDLE_BAT(, 18288) +HANDLE_BAT(, 18289) +HANDLE_BAT(, 18290) +HANDLE_BAT(, 18291) +HANDLE_BAT(, 18292) +HANDLE_BAT(, 18293) +HANDLE_BAT(, 18294) +HANDLE_BAT(, 18295) +HANDLE_BAT(, 18296) +HANDLE_BAT(, 18297) +HANDLE_BAT(, 18298) +HANDLE_BAT(, 18299) +HANDLE_BAT(, 18300) +HANDLE_BAT(, 18301) +HANDLE_BAT(, 18302) +HANDLE_BAT(, 18303) +HANDLE_BAT(, 18304) +HANDLE_BAT(, 18305) +HANDLE_BAT(, 18306) +HANDLE_BAT(, 18307) +HANDLE_BAT(, 18308) +HANDLE_BAT(, 18309) +HANDLE_BAT(, 18310) +HANDLE_BAT(, 18311) +HANDLE_BAT(, 18312) +HANDLE_BAT(, 18313) +HANDLE_BAT(, 18314) +HANDLE_BAT(, 18315) +HANDLE_BAT(, 18316) +HANDLE_BAT(, 18317) +HANDLE_BAT(, 18318) +HANDLE_BAT(, 18319) +HANDLE_BAT(, 18320) +HANDLE_BAT(, 18321) +HANDLE_BAT(, 18322) +HANDLE_BAT(, 18323) +HANDLE_BAT(, 18324) +HANDLE_BAT(, 18325) +HANDLE_BAT(, 18326) +HANDLE_BAT(, 18327) +HANDLE_BAT(, 18328) +HANDLE_BAT(, 18329) +HANDLE_BAT(, 18330) +HANDLE_BAT(, 18331) +HANDLE_BAT(, 18332) +HANDLE_BAT(, 18333) +HANDLE_BAT(, 18334) +HANDLE_BAT(, 18335) +HANDLE_BAT(, 18336) +HANDLE_BAT(, 18337) +HANDLE_BAT(, 18338) +HANDLE_BAT(, 18339) +HANDLE_BAT(, 18340) +HANDLE_BAT(, 18341) +HANDLE_BAT(, 18342) +HANDLE_BAT(, 18343) +HANDLE_BAT(, 18344) +HANDLE_BAT(, 18345) +HANDLE_BAT(, 18346) +HANDLE_BAT(, 18347) +HANDLE_BAT(, 18348) +HANDLE_BAT(, 18349) +HANDLE_BAT(, 18350) +HANDLE_BAT(, 18351) +HANDLE_BAT(, 18352) +HANDLE_BAT(, 18353) +HANDLE_BAT(, 18354) +HANDLE_BAT(, 18355) +HANDLE_BAT(, 18356) +HANDLE_BAT(, 18357) +HANDLE_BAT(, 18358) +HANDLE_BAT(, 18359) +HANDLE_BAT(, 18360) +HANDLE_BAT(, 18361) +HANDLE_BAT(, 18362) +HANDLE_BAT(, 18363) +HANDLE_BAT(, 18364) +HANDLE_BAT(, 18365) +HANDLE_BAT(, 18366) +HANDLE_BAT(, 18367) +HANDLE_BAT(, 18368) +HANDLE_BAT(, 18369) +HANDLE_BAT(, 18370) +HANDLE_BAT(, 18371) +HANDLE_BAT(, 18372) +HANDLE_BAT(, 18373) +HANDLE_BAT(, 18374) +HANDLE_BAT(, 18375) +HANDLE_BAT(, 18376) +HANDLE_BAT(, 18377) +HANDLE_BAT(, 18378) +HANDLE_BAT(, 18379) +HANDLE_BAT(, 18380) +HANDLE_BAT(, 18381) +HANDLE_BAT(, 18382) +HANDLE_BAT(, 18383) +HANDLE_BAT(, 18384) +HANDLE_BAT(, 18385) +HANDLE_BAT(, 18386) +HANDLE_BAT(, 18387) +HANDLE_BAT(, 18388) +HANDLE_BAT(, 18389) +HANDLE_BAT(, 18390) +HANDLE_BAT(, 18391) +HANDLE_BAT(, 18392) +HANDLE_BAT(, 18393) +HANDLE_BAT(, 18394) +HANDLE_BAT(, 18395) +HANDLE_BAT(, 18396) +HANDLE_BAT(, 18397) +HANDLE_BAT(, 18398) +HANDLE_BAT(, 18399) +HANDLE_BAT(, 18400) +HANDLE_BAT(, 18401) +HANDLE_BAT(, 18402) +HANDLE_BAT(, 18403) +HANDLE_BAT(, 18404) +HANDLE_BAT(, 18405) +HANDLE_BAT(, 18406) +HANDLE_BAT(, 18407) +HANDLE_BAT(, 18408) +HANDLE_BAT(, 18409) +HANDLE_BAT(, 18410) +HANDLE_BAT(, 18411) +HANDLE_BAT(, 18412) +HANDLE_BAT(, 18413) +HANDLE_BAT(, 18414) +HANDLE_BAT(, 18415) +HANDLE_BAT(, 18416) +HANDLE_BAT(, 18417) +HANDLE_BAT(, 18418) +HANDLE_BAT(, 18419) +HANDLE_BAT(, 18420) +HANDLE_BAT(, 18421) +HANDLE_BAT(, 18422) +HANDLE_BAT(, 18423) +HANDLE_BAT(, 18424) +HANDLE_BAT(, 18425) +HANDLE_BAT(, 18426) +HANDLE_BAT(, 18427) +HANDLE_BAT(, 18428) +HANDLE_BAT(, 18429) +HANDLE_BAT(, 18430) +HANDLE_BAT(, 18431) +HANDLE_BAT(, 18432) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 17409) +HANDLE_BAT(APINT_TYPE_PREFIX, 17410) +HANDLE_BAT(APINT_TYPE_PREFIX, 17411) +HANDLE_BAT(APINT_TYPE_PREFIX, 17412) +HANDLE_BAT(APINT_TYPE_PREFIX, 17413) +HANDLE_BAT(APINT_TYPE_PREFIX, 17414) +HANDLE_BAT(APINT_TYPE_PREFIX, 17415) +HANDLE_BAT(APINT_TYPE_PREFIX, 17416) +HANDLE_BAT(APINT_TYPE_PREFIX, 17417) +HANDLE_BAT(APINT_TYPE_PREFIX, 17418) +HANDLE_BAT(APINT_TYPE_PREFIX, 17419) +HANDLE_BAT(APINT_TYPE_PREFIX, 17420) +HANDLE_BAT(APINT_TYPE_PREFIX, 17421) +HANDLE_BAT(APINT_TYPE_PREFIX, 17422) +HANDLE_BAT(APINT_TYPE_PREFIX, 17423) +HANDLE_BAT(APINT_TYPE_PREFIX, 17424) +HANDLE_BAT(APINT_TYPE_PREFIX, 17425) +HANDLE_BAT(APINT_TYPE_PREFIX, 17426) +HANDLE_BAT(APINT_TYPE_PREFIX, 17427) +HANDLE_BAT(APINT_TYPE_PREFIX, 17428) +HANDLE_BAT(APINT_TYPE_PREFIX, 17429) +HANDLE_BAT(APINT_TYPE_PREFIX, 17430) +HANDLE_BAT(APINT_TYPE_PREFIX, 17431) +HANDLE_BAT(APINT_TYPE_PREFIX, 17432) +HANDLE_BAT(APINT_TYPE_PREFIX, 17433) +HANDLE_BAT(APINT_TYPE_PREFIX, 17434) +HANDLE_BAT(APINT_TYPE_PREFIX, 17435) +HANDLE_BAT(APINT_TYPE_PREFIX, 17436) +HANDLE_BAT(APINT_TYPE_PREFIX, 17437) +HANDLE_BAT(APINT_TYPE_PREFIX, 17438) +HANDLE_BAT(APINT_TYPE_PREFIX, 17439) +HANDLE_BAT(APINT_TYPE_PREFIX, 17440) +HANDLE_BAT(APINT_TYPE_PREFIX, 17441) +HANDLE_BAT(APINT_TYPE_PREFIX, 17442) +HANDLE_BAT(APINT_TYPE_PREFIX, 17443) +HANDLE_BAT(APINT_TYPE_PREFIX, 17444) +HANDLE_BAT(APINT_TYPE_PREFIX, 17445) +HANDLE_BAT(APINT_TYPE_PREFIX, 17446) +HANDLE_BAT(APINT_TYPE_PREFIX, 17447) +HANDLE_BAT(APINT_TYPE_PREFIX, 17448) +HANDLE_BAT(APINT_TYPE_PREFIX, 17449) +HANDLE_BAT(APINT_TYPE_PREFIX, 17450) +HANDLE_BAT(APINT_TYPE_PREFIX, 17451) +HANDLE_BAT(APINT_TYPE_PREFIX, 17452) +HANDLE_BAT(APINT_TYPE_PREFIX, 17453) +HANDLE_BAT(APINT_TYPE_PREFIX, 17454) +HANDLE_BAT(APINT_TYPE_PREFIX, 17455) +HANDLE_BAT(APINT_TYPE_PREFIX, 17456) +HANDLE_BAT(APINT_TYPE_PREFIX, 17457) +HANDLE_BAT(APINT_TYPE_PREFIX, 17458) +HANDLE_BAT(APINT_TYPE_PREFIX, 17459) +HANDLE_BAT(APINT_TYPE_PREFIX, 17460) +HANDLE_BAT(APINT_TYPE_PREFIX, 17461) +HANDLE_BAT(APINT_TYPE_PREFIX, 17462) +HANDLE_BAT(APINT_TYPE_PREFIX, 17463) +HANDLE_BAT(APINT_TYPE_PREFIX, 17464) +HANDLE_BAT(APINT_TYPE_PREFIX, 17465) +HANDLE_BAT(APINT_TYPE_PREFIX, 17466) +HANDLE_BAT(APINT_TYPE_PREFIX, 17467) +HANDLE_BAT(APINT_TYPE_PREFIX, 17468) +HANDLE_BAT(APINT_TYPE_PREFIX, 17469) +HANDLE_BAT(APINT_TYPE_PREFIX, 17470) +HANDLE_BAT(APINT_TYPE_PREFIX, 17471) +HANDLE_BAT(APINT_TYPE_PREFIX, 17472) +HANDLE_BAT(APINT_TYPE_PREFIX, 17473) +HANDLE_BAT(APINT_TYPE_PREFIX, 17474) +HANDLE_BAT(APINT_TYPE_PREFIX, 17475) +HANDLE_BAT(APINT_TYPE_PREFIX, 17476) +HANDLE_BAT(APINT_TYPE_PREFIX, 17477) +HANDLE_BAT(APINT_TYPE_PREFIX, 17478) +HANDLE_BAT(APINT_TYPE_PREFIX, 17479) +HANDLE_BAT(APINT_TYPE_PREFIX, 17480) +HANDLE_BAT(APINT_TYPE_PREFIX, 17481) +HANDLE_BAT(APINT_TYPE_PREFIX, 17482) +HANDLE_BAT(APINT_TYPE_PREFIX, 17483) +HANDLE_BAT(APINT_TYPE_PREFIX, 17484) +HANDLE_BAT(APINT_TYPE_PREFIX, 17485) +HANDLE_BAT(APINT_TYPE_PREFIX, 17486) +HANDLE_BAT(APINT_TYPE_PREFIX, 17487) +HANDLE_BAT(APINT_TYPE_PREFIX, 17488) +HANDLE_BAT(APINT_TYPE_PREFIX, 17489) +HANDLE_BAT(APINT_TYPE_PREFIX, 17490) +HANDLE_BAT(APINT_TYPE_PREFIX, 17491) +HANDLE_BAT(APINT_TYPE_PREFIX, 17492) +HANDLE_BAT(APINT_TYPE_PREFIX, 17493) +HANDLE_BAT(APINT_TYPE_PREFIX, 17494) +HANDLE_BAT(APINT_TYPE_PREFIX, 17495) +HANDLE_BAT(APINT_TYPE_PREFIX, 17496) +HANDLE_BAT(APINT_TYPE_PREFIX, 17497) +HANDLE_BAT(APINT_TYPE_PREFIX, 17498) +HANDLE_BAT(APINT_TYPE_PREFIX, 17499) +HANDLE_BAT(APINT_TYPE_PREFIX, 17500) +HANDLE_BAT(APINT_TYPE_PREFIX, 17501) +HANDLE_BAT(APINT_TYPE_PREFIX, 17502) +HANDLE_BAT(APINT_TYPE_PREFIX, 17503) +HANDLE_BAT(APINT_TYPE_PREFIX, 17504) +HANDLE_BAT(APINT_TYPE_PREFIX, 17505) +HANDLE_BAT(APINT_TYPE_PREFIX, 17506) +HANDLE_BAT(APINT_TYPE_PREFIX, 17507) +HANDLE_BAT(APINT_TYPE_PREFIX, 17508) +HANDLE_BAT(APINT_TYPE_PREFIX, 17509) +HANDLE_BAT(APINT_TYPE_PREFIX, 17510) +HANDLE_BAT(APINT_TYPE_PREFIX, 17511) +HANDLE_BAT(APINT_TYPE_PREFIX, 17512) +HANDLE_BAT(APINT_TYPE_PREFIX, 17513) +HANDLE_BAT(APINT_TYPE_PREFIX, 17514) +HANDLE_BAT(APINT_TYPE_PREFIX, 17515) +HANDLE_BAT(APINT_TYPE_PREFIX, 17516) +HANDLE_BAT(APINT_TYPE_PREFIX, 17517) +HANDLE_BAT(APINT_TYPE_PREFIX, 17518) +HANDLE_BAT(APINT_TYPE_PREFIX, 17519) +HANDLE_BAT(APINT_TYPE_PREFIX, 17520) +HANDLE_BAT(APINT_TYPE_PREFIX, 17521) +HANDLE_BAT(APINT_TYPE_PREFIX, 17522) +HANDLE_BAT(APINT_TYPE_PREFIX, 17523) +HANDLE_BAT(APINT_TYPE_PREFIX, 17524) +HANDLE_BAT(APINT_TYPE_PREFIX, 17525) +HANDLE_BAT(APINT_TYPE_PREFIX, 17526) +HANDLE_BAT(APINT_TYPE_PREFIX, 17527) +HANDLE_BAT(APINT_TYPE_PREFIX, 17528) +HANDLE_BAT(APINT_TYPE_PREFIX, 17529) +HANDLE_BAT(APINT_TYPE_PREFIX, 17530) +HANDLE_BAT(APINT_TYPE_PREFIX, 17531) +HANDLE_BAT(APINT_TYPE_PREFIX, 17532) +HANDLE_BAT(APINT_TYPE_PREFIX, 17533) +HANDLE_BAT(APINT_TYPE_PREFIX, 17534) +HANDLE_BAT(APINT_TYPE_PREFIX, 17535) +HANDLE_BAT(APINT_TYPE_PREFIX, 17536) +HANDLE_BAT(APINT_TYPE_PREFIX, 17537) +HANDLE_BAT(APINT_TYPE_PREFIX, 17538) +HANDLE_BAT(APINT_TYPE_PREFIX, 17539) +HANDLE_BAT(APINT_TYPE_PREFIX, 17540) +HANDLE_BAT(APINT_TYPE_PREFIX, 17541) +HANDLE_BAT(APINT_TYPE_PREFIX, 17542) +HANDLE_BAT(APINT_TYPE_PREFIX, 17543) +HANDLE_BAT(APINT_TYPE_PREFIX, 17544) +HANDLE_BAT(APINT_TYPE_PREFIX, 17545) +HANDLE_BAT(APINT_TYPE_PREFIX, 17546) +HANDLE_BAT(APINT_TYPE_PREFIX, 17547) +HANDLE_BAT(APINT_TYPE_PREFIX, 17548) +HANDLE_BAT(APINT_TYPE_PREFIX, 17549) +HANDLE_BAT(APINT_TYPE_PREFIX, 17550) +HANDLE_BAT(APINT_TYPE_PREFIX, 17551) +HANDLE_BAT(APINT_TYPE_PREFIX, 17552) +HANDLE_BAT(APINT_TYPE_PREFIX, 17553) +HANDLE_BAT(APINT_TYPE_PREFIX, 17554) +HANDLE_BAT(APINT_TYPE_PREFIX, 17555) +HANDLE_BAT(APINT_TYPE_PREFIX, 17556) +HANDLE_BAT(APINT_TYPE_PREFIX, 17557) +HANDLE_BAT(APINT_TYPE_PREFIX, 17558) +HANDLE_BAT(APINT_TYPE_PREFIX, 17559) +HANDLE_BAT(APINT_TYPE_PREFIX, 17560) +HANDLE_BAT(APINT_TYPE_PREFIX, 17561) +HANDLE_BAT(APINT_TYPE_PREFIX, 17562) +HANDLE_BAT(APINT_TYPE_PREFIX, 17563) +HANDLE_BAT(APINT_TYPE_PREFIX, 17564) +HANDLE_BAT(APINT_TYPE_PREFIX, 17565) +HANDLE_BAT(APINT_TYPE_PREFIX, 17566) +HANDLE_BAT(APINT_TYPE_PREFIX, 17567) +HANDLE_BAT(APINT_TYPE_PREFIX, 17568) +HANDLE_BAT(APINT_TYPE_PREFIX, 17569) +HANDLE_BAT(APINT_TYPE_PREFIX, 17570) +HANDLE_BAT(APINT_TYPE_PREFIX, 17571) +HANDLE_BAT(APINT_TYPE_PREFIX, 17572) +HANDLE_BAT(APINT_TYPE_PREFIX, 17573) +HANDLE_BAT(APINT_TYPE_PREFIX, 17574) +HANDLE_BAT(APINT_TYPE_PREFIX, 17575) +HANDLE_BAT(APINT_TYPE_PREFIX, 17576) +HANDLE_BAT(APINT_TYPE_PREFIX, 17577) +HANDLE_BAT(APINT_TYPE_PREFIX, 17578) +HANDLE_BAT(APINT_TYPE_PREFIX, 17579) +HANDLE_BAT(APINT_TYPE_PREFIX, 17580) +HANDLE_BAT(APINT_TYPE_PREFIX, 17581) +HANDLE_BAT(APINT_TYPE_PREFIX, 17582) +HANDLE_BAT(APINT_TYPE_PREFIX, 17583) +HANDLE_BAT(APINT_TYPE_PREFIX, 17584) +HANDLE_BAT(APINT_TYPE_PREFIX, 17585) +HANDLE_BAT(APINT_TYPE_PREFIX, 17586) +HANDLE_BAT(APINT_TYPE_PREFIX, 17587) +HANDLE_BAT(APINT_TYPE_PREFIX, 17588) +HANDLE_BAT(APINT_TYPE_PREFIX, 17589) +HANDLE_BAT(APINT_TYPE_PREFIX, 17590) +HANDLE_BAT(APINT_TYPE_PREFIX, 17591) +HANDLE_BAT(APINT_TYPE_PREFIX, 17592) +HANDLE_BAT(APINT_TYPE_PREFIX, 17593) +HANDLE_BAT(APINT_TYPE_PREFIX, 17594) +HANDLE_BAT(APINT_TYPE_PREFIX, 17595) +HANDLE_BAT(APINT_TYPE_PREFIX, 17596) +HANDLE_BAT(APINT_TYPE_PREFIX, 17597) +HANDLE_BAT(APINT_TYPE_PREFIX, 17598) +HANDLE_BAT(APINT_TYPE_PREFIX, 17599) +HANDLE_BAT(APINT_TYPE_PREFIX, 17600) +HANDLE_BAT(APINT_TYPE_PREFIX, 17601) +HANDLE_BAT(APINT_TYPE_PREFIX, 17602) +HANDLE_BAT(APINT_TYPE_PREFIX, 17603) +HANDLE_BAT(APINT_TYPE_PREFIX, 17604) +HANDLE_BAT(APINT_TYPE_PREFIX, 17605) +HANDLE_BAT(APINT_TYPE_PREFIX, 17606) +HANDLE_BAT(APINT_TYPE_PREFIX, 17607) +HANDLE_BAT(APINT_TYPE_PREFIX, 17608) +HANDLE_BAT(APINT_TYPE_PREFIX, 17609) +HANDLE_BAT(APINT_TYPE_PREFIX, 17610) +HANDLE_BAT(APINT_TYPE_PREFIX, 17611) +HANDLE_BAT(APINT_TYPE_PREFIX, 17612) +HANDLE_BAT(APINT_TYPE_PREFIX, 17613) +HANDLE_BAT(APINT_TYPE_PREFIX, 17614) +HANDLE_BAT(APINT_TYPE_PREFIX, 17615) +HANDLE_BAT(APINT_TYPE_PREFIX, 17616) +HANDLE_BAT(APINT_TYPE_PREFIX, 17617) +HANDLE_BAT(APINT_TYPE_PREFIX, 17618) +HANDLE_BAT(APINT_TYPE_PREFIX, 17619) +HANDLE_BAT(APINT_TYPE_PREFIX, 17620) +HANDLE_BAT(APINT_TYPE_PREFIX, 17621) +HANDLE_BAT(APINT_TYPE_PREFIX, 17622) +HANDLE_BAT(APINT_TYPE_PREFIX, 17623) +HANDLE_BAT(APINT_TYPE_PREFIX, 17624) +HANDLE_BAT(APINT_TYPE_PREFIX, 17625) +HANDLE_BAT(APINT_TYPE_PREFIX, 17626) +HANDLE_BAT(APINT_TYPE_PREFIX, 17627) +HANDLE_BAT(APINT_TYPE_PREFIX, 17628) +HANDLE_BAT(APINT_TYPE_PREFIX, 17629) +HANDLE_BAT(APINT_TYPE_PREFIX, 17630) +HANDLE_BAT(APINT_TYPE_PREFIX, 17631) +HANDLE_BAT(APINT_TYPE_PREFIX, 17632) +HANDLE_BAT(APINT_TYPE_PREFIX, 17633) +HANDLE_BAT(APINT_TYPE_PREFIX, 17634) +HANDLE_BAT(APINT_TYPE_PREFIX, 17635) +HANDLE_BAT(APINT_TYPE_PREFIX, 17636) +HANDLE_BAT(APINT_TYPE_PREFIX, 17637) +HANDLE_BAT(APINT_TYPE_PREFIX, 17638) +HANDLE_BAT(APINT_TYPE_PREFIX, 17639) +HANDLE_BAT(APINT_TYPE_PREFIX, 17640) +HANDLE_BAT(APINT_TYPE_PREFIX, 17641) +HANDLE_BAT(APINT_TYPE_PREFIX, 17642) +HANDLE_BAT(APINT_TYPE_PREFIX, 17643) +HANDLE_BAT(APINT_TYPE_PREFIX, 17644) +HANDLE_BAT(APINT_TYPE_PREFIX, 17645) +HANDLE_BAT(APINT_TYPE_PREFIX, 17646) +HANDLE_BAT(APINT_TYPE_PREFIX, 17647) +HANDLE_BAT(APINT_TYPE_PREFIX, 17648) +HANDLE_BAT(APINT_TYPE_PREFIX, 17649) +HANDLE_BAT(APINT_TYPE_PREFIX, 17650) +HANDLE_BAT(APINT_TYPE_PREFIX, 17651) +HANDLE_BAT(APINT_TYPE_PREFIX, 17652) +HANDLE_BAT(APINT_TYPE_PREFIX, 17653) +HANDLE_BAT(APINT_TYPE_PREFIX, 17654) +HANDLE_BAT(APINT_TYPE_PREFIX, 17655) +HANDLE_BAT(APINT_TYPE_PREFIX, 17656) +HANDLE_BAT(APINT_TYPE_PREFIX, 17657) +HANDLE_BAT(APINT_TYPE_PREFIX, 17658) +HANDLE_BAT(APINT_TYPE_PREFIX, 17659) +HANDLE_BAT(APINT_TYPE_PREFIX, 17660) +HANDLE_BAT(APINT_TYPE_PREFIX, 17661) +HANDLE_BAT(APINT_TYPE_PREFIX, 17662) +HANDLE_BAT(APINT_TYPE_PREFIX, 17663) +HANDLE_BAT(APINT_TYPE_PREFIX, 17664) +HANDLE_BAT(APINT_TYPE_PREFIX, 17665) +HANDLE_BAT(APINT_TYPE_PREFIX, 17666) +HANDLE_BAT(APINT_TYPE_PREFIX, 17667) +HANDLE_BAT(APINT_TYPE_PREFIX, 17668) +HANDLE_BAT(APINT_TYPE_PREFIX, 17669) +HANDLE_BAT(APINT_TYPE_PREFIX, 17670) +HANDLE_BAT(APINT_TYPE_PREFIX, 17671) +HANDLE_BAT(APINT_TYPE_PREFIX, 17672) +HANDLE_BAT(APINT_TYPE_PREFIX, 17673) +HANDLE_BAT(APINT_TYPE_PREFIX, 17674) +HANDLE_BAT(APINT_TYPE_PREFIX, 17675) +HANDLE_BAT(APINT_TYPE_PREFIX, 17676) +HANDLE_BAT(APINT_TYPE_PREFIX, 17677) +HANDLE_BAT(APINT_TYPE_PREFIX, 17678) +HANDLE_BAT(APINT_TYPE_PREFIX, 17679) +HANDLE_BAT(APINT_TYPE_PREFIX, 17680) +HANDLE_BAT(APINT_TYPE_PREFIX, 17681) +HANDLE_BAT(APINT_TYPE_PREFIX, 17682) +HANDLE_BAT(APINT_TYPE_PREFIX, 17683) +HANDLE_BAT(APINT_TYPE_PREFIX, 17684) +HANDLE_BAT(APINT_TYPE_PREFIX, 17685) +HANDLE_BAT(APINT_TYPE_PREFIX, 17686) +HANDLE_BAT(APINT_TYPE_PREFIX, 17687) +HANDLE_BAT(APINT_TYPE_PREFIX, 17688) +HANDLE_BAT(APINT_TYPE_PREFIX, 17689) +HANDLE_BAT(APINT_TYPE_PREFIX, 17690) +HANDLE_BAT(APINT_TYPE_PREFIX, 17691) +HANDLE_BAT(APINT_TYPE_PREFIX, 17692) +HANDLE_BAT(APINT_TYPE_PREFIX, 17693) +HANDLE_BAT(APINT_TYPE_PREFIX, 17694) +HANDLE_BAT(APINT_TYPE_PREFIX, 17695) +HANDLE_BAT(APINT_TYPE_PREFIX, 17696) +HANDLE_BAT(APINT_TYPE_PREFIX, 17697) +HANDLE_BAT(APINT_TYPE_PREFIX, 17698) +HANDLE_BAT(APINT_TYPE_PREFIX, 17699) +HANDLE_BAT(APINT_TYPE_PREFIX, 17700) +HANDLE_BAT(APINT_TYPE_PREFIX, 17701) +HANDLE_BAT(APINT_TYPE_PREFIX, 17702) +HANDLE_BAT(APINT_TYPE_PREFIX, 17703) +HANDLE_BAT(APINT_TYPE_PREFIX, 17704) +HANDLE_BAT(APINT_TYPE_PREFIX, 17705) +HANDLE_BAT(APINT_TYPE_PREFIX, 17706) +HANDLE_BAT(APINT_TYPE_PREFIX, 17707) +HANDLE_BAT(APINT_TYPE_PREFIX, 17708) +HANDLE_BAT(APINT_TYPE_PREFIX, 17709) +HANDLE_BAT(APINT_TYPE_PREFIX, 17710) +HANDLE_BAT(APINT_TYPE_PREFIX, 17711) +HANDLE_BAT(APINT_TYPE_PREFIX, 17712) +HANDLE_BAT(APINT_TYPE_PREFIX, 17713) +HANDLE_BAT(APINT_TYPE_PREFIX, 17714) +HANDLE_BAT(APINT_TYPE_PREFIX, 17715) +HANDLE_BAT(APINT_TYPE_PREFIX, 17716) +HANDLE_BAT(APINT_TYPE_PREFIX, 17717) +HANDLE_BAT(APINT_TYPE_PREFIX, 17718) +HANDLE_BAT(APINT_TYPE_PREFIX, 17719) +HANDLE_BAT(APINT_TYPE_PREFIX, 17720) +HANDLE_BAT(APINT_TYPE_PREFIX, 17721) +HANDLE_BAT(APINT_TYPE_PREFIX, 17722) +HANDLE_BAT(APINT_TYPE_PREFIX, 17723) +HANDLE_BAT(APINT_TYPE_PREFIX, 17724) +HANDLE_BAT(APINT_TYPE_PREFIX, 17725) +HANDLE_BAT(APINT_TYPE_PREFIX, 17726) +HANDLE_BAT(APINT_TYPE_PREFIX, 17727) +HANDLE_BAT(APINT_TYPE_PREFIX, 17728) +HANDLE_BAT(APINT_TYPE_PREFIX, 17729) +HANDLE_BAT(APINT_TYPE_PREFIX, 17730) +HANDLE_BAT(APINT_TYPE_PREFIX, 17731) +HANDLE_BAT(APINT_TYPE_PREFIX, 17732) +HANDLE_BAT(APINT_TYPE_PREFIX, 17733) +HANDLE_BAT(APINT_TYPE_PREFIX, 17734) +HANDLE_BAT(APINT_TYPE_PREFIX, 17735) +HANDLE_BAT(APINT_TYPE_PREFIX, 17736) +HANDLE_BAT(APINT_TYPE_PREFIX, 17737) +HANDLE_BAT(APINT_TYPE_PREFIX, 17738) +HANDLE_BAT(APINT_TYPE_PREFIX, 17739) +HANDLE_BAT(APINT_TYPE_PREFIX, 17740) +HANDLE_BAT(APINT_TYPE_PREFIX, 17741) +HANDLE_BAT(APINT_TYPE_PREFIX, 17742) +HANDLE_BAT(APINT_TYPE_PREFIX, 17743) +HANDLE_BAT(APINT_TYPE_PREFIX, 17744) +HANDLE_BAT(APINT_TYPE_PREFIX, 17745) +HANDLE_BAT(APINT_TYPE_PREFIX, 17746) +HANDLE_BAT(APINT_TYPE_PREFIX, 17747) +HANDLE_BAT(APINT_TYPE_PREFIX, 17748) +HANDLE_BAT(APINT_TYPE_PREFIX, 17749) +HANDLE_BAT(APINT_TYPE_PREFIX, 17750) +HANDLE_BAT(APINT_TYPE_PREFIX, 17751) +HANDLE_BAT(APINT_TYPE_PREFIX, 17752) +HANDLE_BAT(APINT_TYPE_PREFIX, 17753) +HANDLE_BAT(APINT_TYPE_PREFIX, 17754) +HANDLE_BAT(APINT_TYPE_PREFIX, 17755) +HANDLE_BAT(APINT_TYPE_PREFIX, 17756) +HANDLE_BAT(APINT_TYPE_PREFIX, 17757) +HANDLE_BAT(APINT_TYPE_PREFIX, 17758) +HANDLE_BAT(APINT_TYPE_PREFIX, 17759) +HANDLE_BAT(APINT_TYPE_PREFIX, 17760) +HANDLE_BAT(APINT_TYPE_PREFIX, 17761) +HANDLE_BAT(APINT_TYPE_PREFIX, 17762) +HANDLE_BAT(APINT_TYPE_PREFIX, 17763) +HANDLE_BAT(APINT_TYPE_PREFIX, 17764) +HANDLE_BAT(APINT_TYPE_PREFIX, 17765) +HANDLE_BAT(APINT_TYPE_PREFIX, 17766) +HANDLE_BAT(APINT_TYPE_PREFIX, 17767) +HANDLE_BAT(APINT_TYPE_PREFIX, 17768) +HANDLE_BAT(APINT_TYPE_PREFIX, 17769) +HANDLE_BAT(APINT_TYPE_PREFIX, 17770) +HANDLE_BAT(APINT_TYPE_PREFIX, 17771) +HANDLE_BAT(APINT_TYPE_PREFIX, 17772) +HANDLE_BAT(APINT_TYPE_PREFIX, 17773) +HANDLE_BAT(APINT_TYPE_PREFIX, 17774) +HANDLE_BAT(APINT_TYPE_PREFIX, 17775) +HANDLE_BAT(APINT_TYPE_PREFIX, 17776) +HANDLE_BAT(APINT_TYPE_PREFIX, 17777) +HANDLE_BAT(APINT_TYPE_PREFIX, 17778) +HANDLE_BAT(APINT_TYPE_PREFIX, 17779) +HANDLE_BAT(APINT_TYPE_PREFIX, 17780) +HANDLE_BAT(APINT_TYPE_PREFIX, 17781) +HANDLE_BAT(APINT_TYPE_PREFIX, 17782) +HANDLE_BAT(APINT_TYPE_PREFIX, 17783) +HANDLE_BAT(APINT_TYPE_PREFIX, 17784) +HANDLE_BAT(APINT_TYPE_PREFIX, 17785) +HANDLE_BAT(APINT_TYPE_PREFIX, 17786) +HANDLE_BAT(APINT_TYPE_PREFIX, 17787) +HANDLE_BAT(APINT_TYPE_PREFIX, 17788) +HANDLE_BAT(APINT_TYPE_PREFIX, 17789) +HANDLE_BAT(APINT_TYPE_PREFIX, 17790) +HANDLE_BAT(APINT_TYPE_PREFIX, 17791) +HANDLE_BAT(APINT_TYPE_PREFIX, 17792) +HANDLE_BAT(APINT_TYPE_PREFIX, 17793) +HANDLE_BAT(APINT_TYPE_PREFIX, 17794) +HANDLE_BAT(APINT_TYPE_PREFIX, 17795) +HANDLE_BAT(APINT_TYPE_PREFIX, 17796) +HANDLE_BAT(APINT_TYPE_PREFIX, 17797) +HANDLE_BAT(APINT_TYPE_PREFIX, 17798) +HANDLE_BAT(APINT_TYPE_PREFIX, 17799) +HANDLE_BAT(APINT_TYPE_PREFIX, 17800) +HANDLE_BAT(APINT_TYPE_PREFIX, 17801) +HANDLE_BAT(APINT_TYPE_PREFIX, 17802) +HANDLE_BAT(APINT_TYPE_PREFIX, 17803) +HANDLE_BAT(APINT_TYPE_PREFIX, 17804) +HANDLE_BAT(APINT_TYPE_PREFIX, 17805) +HANDLE_BAT(APINT_TYPE_PREFIX, 17806) +HANDLE_BAT(APINT_TYPE_PREFIX, 17807) +HANDLE_BAT(APINT_TYPE_PREFIX, 17808) +HANDLE_BAT(APINT_TYPE_PREFIX, 17809) +HANDLE_BAT(APINT_TYPE_PREFIX, 17810) +HANDLE_BAT(APINT_TYPE_PREFIX, 17811) +HANDLE_BAT(APINT_TYPE_PREFIX, 17812) +HANDLE_BAT(APINT_TYPE_PREFIX, 17813) +HANDLE_BAT(APINT_TYPE_PREFIX, 17814) +HANDLE_BAT(APINT_TYPE_PREFIX, 17815) +HANDLE_BAT(APINT_TYPE_PREFIX, 17816) +HANDLE_BAT(APINT_TYPE_PREFIX, 17817) +HANDLE_BAT(APINT_TYPE_PREFIX, 17818) +HANDLE_BAT(APINT_TYPE_PREFIX, 17819) +HANDLE_BAT(APINT_TYPE_PREFIX, 17820) +HANDLE_BAT(APINT_TYPE_PREFIX, 17821) +HANDLE_BAT(APINT_TYPE_PREFIX, 17822) +HANDLE_BAT(APINT_TYPE_PREFIX, 17823) +HANDLE_BAT(APINT_TYPE_PREFIX, 17824) +HANDLE_BAT(APINT_TYPE_PREFIX, 17825) +HANDLE_BAT(APINT_TYPE_PREFIX, 17826) +HANDLE_BAT(APINT_TYPE_PREFIX, 17827) +HANDLE_BAT(APINT_TYPE_PREFIX, 17828) +HANDLE_BAT(APINT_TYPE_PREFIX, 17829) +HANDLE_BAT(APINT_TYPE_PREFIX, 17830) +HANDLE_BAT(APINT_TYPE_PREFIX, 17831) +HANDLE_BAT(APINT_TYPE_PREFIX, 17832) +HANDLE_BAT(APINT_TYPE_PREFIX, 17833) +HANDLE_BAT(APINT_TYPE_PREFIX, 17834) +HANDLE_BAT(APINT_TYPE_PREFIX, 17835) +HANDLE_BAT(APINT_TYPE_PREFIX, 17836) +HANDLE_BAT(APINT_TYPE_PREFIX, 17837) +HANDLE_BAT(APINT_TYPE_PREFIX, 17838) +HANDLE_BAT(APINT_TYPE_PREFIX, 17839) +HANDLE_BAT(APINT_TYPE_PREFIX, 17840) +HANDLE_BAT(APINT_TYPE_PREFIX, 17841) +HANDLE_BAT(APINT_TYPE_PREFIX, 17842) +HANDLE_BAT(APINT_TYPE_PREFIX, 17843) +HANDLE_BAT(APINT_TYPE_PREFIX, 17844) +HANDLE_BAT(APINT_TYPE_PREFIX, 17845) +HANDLE_BAT(APINT_TYPE_PREFIX, 17846) +HANDLE_BAT(APINT_TYPE_PREFIX, 17847) +HANDLE_BAT(APINT_TYPE_PREFIX, 17848) +HANDLE_BAT(APINT_TYPE_PREFIX, 17849) +HANDLE_BAT(APINT_TYPE_PREFIX, 17850) +HANDLE_BAT(APINT_TYPE_PREFIX, 17851) +HANDLE_BAT(APINT_TYPE_PREFIX, 17852) +HANDLE_BAT(APINT_TYPE_PREFIX, 17853) +HANDLE_BAT(APINT_TYPE_PREFIX, 17854) +HANDLE_BAT(APINT_TYPE_PREFIX, 17855) +HANDLE_BAT(APINT_TYPE_PREFIX, 17856) +HANDLE_BAT(APINT_TYPE_PREFIX, 17857) +HANDLE_BAT(APINT_TYPE_PREFIX, 17858) +HANDLE_BAT(APINT_TYPE_PREFIX, 17859) +HANDLE_BAT(APINT_TYPE_PREFIX, 17860) +HANDLE_BAT(APINT_TYPE_PREFIX, 17861) +HANDLE_BAT(APINT_TYPE_PREFIX, 17862) +HANDLE_BAT(APINT_TYPE_PREFIX, 17863) +HANDLE_BAT(APINT_TYPE_PREFIX, 17864) +HANDLE_BAT(APINT_TYPE_PREFIX, 17865) +HANDLE_BAT(APINT_TYPE_PREFIX, 17866) +HANDLE_BAT(APINT_TYPE_PREFIX, 17867) +HANDLE_BAT(APINT_TYPE_PREFIX, 17868) +HANDLE_BAT(APINT_TYPE_PREFIX, 17869) +HANDLE_BAT(APINT_TYPE_PREFIX, 17870) +HANDLE_BAT(APINT_TYPE_PREFIX, 17871) +HANDLE_BAT(APINT_TYPE_PREFIX, 17872) +HANDLE_BAT(APINT_TYPE_PREFIX, 17873) +HANDLE_BAT(APINT_TYPE_PREFIX, 17874) +HANDLE_BAT(APINT_TYPE_PREFIX, 17875) +HANDLE_BAT(APINT_TYPE_PREFIX, 17876) +HANDLE_BAT(APINT_TYPE_PREFIX, 17877) +HANDLE_BAT(APINT_TYPE_PREFIX, 17878) +HANDLE_BAT(APINT_TYPE_PREFIX, 17879) +HANDLE_BAT(APINT_TYPE_PREFIX, 17880) +HANDLE_BAT(APINT_TYPE_PREFIX, 17881) +HANDLE_BAT(APINT_TYPE_PREFIX, 17882) +HANDLE_BAT(APINT_TYPE_PREFIX, 17883) +HANDLE_BAT(APINT_TYPE_PREFIX, 17884) +HANDLE_BAT(APINT_TYPE_PREFIX, 17885) +HANDLE_BAT(APINT_TYPE_PREFIX, 17886) +HANDLE_BAT(APINT_TYPE_PREFIX, 17887) +HANDLE_BAT(APINT_TYPE_PREFIX, 17888) +HANDLE_BAT(APINT_TYPE_PREFIX, 17889) +HANDLE_BAT(APINT_TYPE_PREFIX, 17890) +HANDLE_BAT(APINT_TYPE_PREFIX, 17891) +HANDLE_BAT(APINT_TYPE_PREFIX, 17892) +HANDLE_BAT(APINT_TYPE_PREFIX, 17893) +HANDLE_BAT(APINT_TYPE_PREFIX, 17894) +HANDLE_BAT(APINT_TYPE_PREFIX, 17895) +HANDLE_BAT(APINT_TYPE_PREFIX, 17896) +HANDLE_BAT(APINT_TYPE_PREFIX, 17897) +HANDLE_BAT(APINT_TYPE_PREFIX, 17898) +HANDLE_BAT(APINT_TYPE_PREFIX, 17899) +HANDLE_BAT(APINT_TYPE_PREFIX, 17900) +HANDLE_BAT(APINT_TYPE_PREFIX, 17901) +HANDLE_BAT(APINT_TYPE_PREFIX, 17902) +HANDLE_BAT(APINT_TYPE_PREFIX, 17903) +HANDLE_BAT(APINT_TYPE_PREFIX, 17904) +HANDLE_BAT(APINT_TYPE_PREFIX, 17905) +HANDLE_BAT(APINT_TYPE_PREFIX, 17906) +HANDLE_BAT(APINT_TYPE_PREFIX, 17907) +HANDLE_BAT(APINT_TYPE_PREFIX, 17908) +HANDLE_BAT(APINT_TYPE_PREFIX, 17909) +HANDLE_BAT(APINT_TYPE_PREFIX, 17910) +HANDLE_BAT(APINT_TYPE_PREFIX, 17911) +HANDLE_BAT(APINT_TYPE_PREFIX, 17912) +HANDLE_BAT(APINT_TYPE_PREFIX, 17913) +HANDLE_BAT(APINT_TYPE_PREFIX, 17914) +HANDLE_BAT(APINT_TYPE_PREFIX, 17915) +HANDLE_BAT(APINT_TYPE_PREFIX, 17916) +HANDLE_BAT(APINT_TYPE_PREFIX, 17917) +HANDLE_BAT(APINT_TYPE_PREFIX, 17918) +HANDLE_BAT(APINT_TYPE_PREFIX, 17919) +HANDLE_BAT(APINT_TYPE_PREFIX, 17920) +HANDLE_BAT(APINT_TYPE_PREFIX, 17921) +HANDLE_BAT(APINT_TYPE_PREFIX, 17922) +HANDLE_BAT(APINT_TYPE_PREFIX, 17923) +HANDLE_BAT(APINT_TYPE_PREFIX, 17924) +HANDLE_BAT(APINT_TYPE_PREFIX, 17925) +HANDLE_BAT(APINT_TYPE_PREFIX, 17926) +HANDLE_BAT(APINT_TYPE_PREFIX, 17927) +HANDLE_BAT(APINT_TYPE_PREFIX, 17928) +HANDLE_BAT(APINT_TYPE_PREFIX, 17929) +HANDLE_BAT(APINT_TYPE_PREFIX, 17930) +HANDLE_BAT(APINT_TYPE_PREFIX, 17931) +HANDLE_BAT(APINT_TYPE_PREFIX, 17932) +HANDLE_BAT(APINT_TYPE_PREFIX, 17933) +HANDLE_BAT(APINT_TYPE_PREFIX, 17934) +HANDLE_BAT(APINT_TYPE_PREFIX, 17935) +HANDLE_BAT(APINT_TYPE_PREFIX, 17936) +HANDLE_BAT(APINT_TYPE_PREFIX, 17937) +HANDLE_BAT(APINT_TYPE_PREFIX, 17938) +HANDLE_BAT(APINT_TYPE_PREFIX, 17939) +HANDLE_BAT(APINT_TYPE_PREFIX, 17940) +HANDLE_BAT(APINT_TYPE_PREFIX, 17941) +HANDLE_BAT(APINT_TYPE_PREFIX, 17942) +HANDLE_BAT(APINT_TYPE_PREFIX, 17943) +HANDLE_BAT(APINT_TYPE_PREFIX, 17944) +HANDLE_BAT(APINT_TYPE_PREFIX, 17945) +HANDLE_BAT(APINT_TYPE_PREFIX, 17946) +HANDLE_BAT(APINT_TYPE_PREFIX, 17947) +HANDLE_BAT(APINT_TYPE_PREFIX, 17948) +HANDLE_BAT(APINT_TYPE_PREFIX, 17949) +HANDLE_BAT(APINT_TYPE_PREFIX, 17950) +HANDLE_BAT(APINT_TYPE_PREFIX, 17951) +HANDLE_BAT(APINT_TYPE_PREFIX, 17952) +HANDLE_BAT(APINT_TYPE_PREFIX, 17953) +HANDLE_BAT(APINT_TYPE_PREFIX, 17954) +HANDLE_BAT(APINT_TYPE_PREFIX, 17955) +HANDLE_BAT(APINT_TYPE_PREFIX, 17956) +HANDLE_BAT(APINT_TYPE_PREFIX, 17957) +HANDLE_BAT(APINT_TYPE_PREFIX, 17958) +HANDLE_BAT(APINT_TYPE_PREFIX, 17959) +HANDLE_BAT(APINT_TYPE_PREFIX, 17960) +HANDLE_BAT(APINT_TYPE_PREFIX, 17961) +HANDLE_BAT(APINT_TYPE_PREFIX, 17962) +HANDLE_BAT(APINT_TYPE_PREFIX, 17963) +HANDLE_BAT(APINT_TYPE_PREFIX, 17964) +HANDLE_BAT(APINT_TYPE_PREFIX, 17965) +HANDLE_BAT(APINT_TYPE_PREFIX, 17966) +HANDLE_BAT(APINT_TYPE_PREFIX, 17967) +HANDLE_BAT(APINT_TYPE_PREFIX, 17968) +HANDLE_BAT(APINT_TYPE_PREFIX, 17969) +HANDLE_BAT(APINT_TYPE_PREFIX, 17970) +HANDLE_BAT(APINT_TYPE_PREFIX, 17971) +HANDLE_BAT(APINT_TYPE_PREFIX, 17972) +HANDLE_BAT(APINT_TYPE_PREFIX, 17973) +HANDLE_BAT(APINT_TYPE_PREFIX, 17974) +HANDLE_BAT(APINT_TYPE_PREFIX, 17975) +HANDLE_BAT(APINT_TYPE_PREFIX, 17976) +HANDLE_BAT(APINT_TYPE_PREFIX, 17977) +HANDLE_BAT(APINT_TYPE_PREFIX, 17978) +HANDLE_BAT(APINT_TYPE_PREFIX, 17979) +HANDLE_BAT(APINT_TYPE_PREFIX, 17980) +HANDLE_BAT(APINT_TYPE_PREFIX, 17981) +HANDLE_BAT(APINT_TYPE_PREFIX, 17982) +HANDLE_BAT(APINT_TYPE_PREFIX, 17983) +HANDLE_BAT(APINT_TYPE_PREFIX, 17984) +HANDLE_BAT(APINT_TYPE_PREFIX, 17985) +HANDLE_BAT(APINT_TYPE_PREFIX, 17986) +HANDLE_BAT(APINT_TYPE_PREFIX, 17987) +HANDLE_BAT(APINT_TYPE_PREFIX, 17988) +HANDLE_BAT(APINT_TYPE_PREFIX, 17989) +HANDLE_BAT(APINT_TYPE_PREFIX, 17990) +HANDLE_BAT(APINT_TYPE_PREFIX, 17991) +HANDLE_BAT(APINT_TYPE_PREFIX, 17992) +HANDLE_BAT(APINT_TYPE_PREFIX, 17993) +HANDLE_BAT(APINT_TYPE_PREFIX, 17994) +HANDLE_BAT(APINT_TYPE_PREFIX, 17995) +HANDLE_BAT(APINT_TYPE_PREFIX, 17996) +HANDLE_BAT(APINT_TYPE_PREFIX, 17997) +HANDLE_BAT(APINT_TYPE_PREFIX, 17998) +HANDLE_BAT(APINT_TYPE_PREFIX, 17999) +HANDLE_BAT(APINT_TYPE_PREFIX, 18000) +HANDLE_BAT(APINT_TYPE_PREFIX, 18001) +HANDLE_BAT(APINT_TYPE_PREFIX, 18002) +HANDLE_BAT(APINT_TYPE_PREFIX, 18003) +HANDLE_BAT(APINT_TYPE_PREFIX, 18004) +HANDLE_BAT(APINT_TYPE_PREFIX, 18005) +HANDLE_BAT(APINT_TYPE_PREFIX, 18006) +HANDLE_BAT(APINT_TYPE_PREFIX, 18007) +HANDLE_BAT(APINT_TYPE_PREFIX, 18008) +HANDLE_BAT(APINT_TYPE_PREFIX, 18009) +HANDLE_BAT(APINT_TYPE_PREFIX, 18010) +HANDLE_BAT(APINT_TYPE_PREFIX, 18011) +HANDLE_BAT(APINT_TYPE_PREFIX, 18012) +HANDLE_BAT(APINT_TYPE_PREFIX, 18013) +HANDLE_BAT(APINT_TYPE_PREFIX, 18014) +HANDLE_BAT(APINT_TYPE_PREFIX, 18015) +HANDLE_BAT(APINT_TYPE_PREFIX, 18016) +HANDLE_BAT(APINT_TYPE_PREFIX, 18017) +HANDLE_BAT(APINT_TYPE_PREFIX, 18018) +HANDLE_BAT(APINT_TYPE_PREFIX, 18019) +HANDLE_BAT(APINT_TYPE_PREFIX, 18020) +HANDLE_BAT(APINT_TYPE_PREFIX, 18021) +HANDLE_BAT(APINT_TYPE_PREFIX, 18022) +HANDLE_BAT(APINT_TYPE_PREFIX, 18023) +HANDLE_BAT(APINT_TYPE_PREFIX, 18024) +HANDLE_BAT(APINT_TYPE_PREFIX, 18025) +HANDLE_BAT(APINT_TYPE_PREFIX, 18026) +HANDLE_BAT(APINT_TYPE_PREFIX, 18027) +HANDLE_BAT(APINT_TYPE_PREFIX, 18028) +HANDLE_BAT(APINT_TYPE_PREFIX, 18029) +HANDLE_BAT(APINT_TYPE_PREFIX, 18030) +HANDLE_BAT(APINT_TYPE_PREFIX, 18031) +HANDLE_BAT(APINT_TYPE_PREFIX, 18032) +HANDLE_BAT(APINT_TYPE_PREFIX, 18033) +HANDLE_BAT(APINT_TYPE_PREFIX, 18034) +HANDLE_BAT(APINT_TYPE_PREFIX, 18035) +HANDLE_BAT(APINT_TYPE_PREFIX, 18036) +HANDLE_BAT(APINT_TYPE_PREFIX, 18037) +HANDLE_BAT(APINT_TYPE_PREFIX, 18038) +HANDLE_BAT(APINT_TYPE_PREFIX, 18039) +HANDLE_BAT(APINT_TYPE_PREFIX, 18040) +HANDLE_BAT(APINT_TYPE_PREFIX, 18041) +HANDLE_BAT(APINT_TYPE_PREFIX, 18042) +HANDLE_BAT(APINT_TYPE_PREFIX, 18043) +HANDLE_BAT(APINT_TYPE_PREFIX, 18044) +HANDLE_BAT(APINT_TYPE_PREFIX, 18045) +HANDLE_BAT(APINT_TYPE_PREFIX, 18046) +HANDLE_BAT(APINT_TYPE_PREFIX, 18047) +HANDLE_BAT(APINT_TYPE_PREFIX, 18048) +HANDLE_BAT(APINT_TYPE_PREFIX, 18049) +HANDLE_BAT(APINT_TYPE_PREFIX, 18050) +HANDLE_BAT(APINT_TYPE_PREFIX, 18051) +HANDLE_BAT(APINT_TYPE_PREFIX, 18052) +HANDLE_BAT(APINT_TYPE_PREFIX, 18053) +HANDLE_BAT(APINT_TYPE_PREFIX, 18054) +HANDLE_BAT(APINT_TYPE_PREFIX, 18055) +HANDLE_BAT(APINT_TYPE_PREFIX, 18056) +HANDLE_BAT(APINT_TYPE_PREFIX, 18057) +HANDLE_BAT(APINT_TYPE_PREFIX, 18058) +HANDLE_BAT(APINT_TYPE_PREFIX, 18059) +HANDLE_BAT(APINT_TYPE_PREFIX, 18060) +HANDLE_BAT(APINT_TYPE_PREFIX, 18061) +HANDLE_BAT(APINT_TYPE_PREFIX, 18062) +HANDLE_BAT(APINT_TYPE_PREFIX, 18063) +HANDLE_BAT(APINT_TYPE_PREFIX, 18064) +HANDLE_BAT(APINT_TYPE_PREFIX, 18065) +HANDLE_BAT(APINT_TYPE_PREFIX, 18066) +HANDLE_BAT(APINT_TYPE_PREFIX, 18067) +HANDLE_BAT(APINT_TYPE_PREFIX, 18068) +HANDLE_BAT(APINT_TYPE_PREFIX, 18069) +HANDLE_BAT(APINT_TYPE_PREFIX, 18070) +HANDLE_BAT(APINT_TYPE_PREFIX, 18071) +HANDLE_BAT(APINT_TYPE_PREFIX, 18072) +HANDLE_BAT(APINT_TYPE_PREFIX, 18073) +HANDLE_BAT(APINT_TYPE_PREFIX, 18074) +HANDLE_BAT(APINT_TYPE_PREFIX, 18075) +HANDLE_BAT(APINT_TYPE_PREFIX, 18076) +HANDLE_BAT(APINT_TYPE_PREFIX, 18077) +HANDLE_BAT(APINT_TYPE_PREFIX, 18078) +HANDLE_BAT(APINT_TYPE_PREFIX, 18079) +HANDLE_BAT(APINT_TYPE_PREFIX, 18080) +HANDLE_BAT(APINT_TYPE_PREFIX, 18081) +HANDLE_BAT(APINT_TYPE_PREFIX, 18082) +HANDLE_BAT(APINT_TYPE_PREFIX, 18083) +HANDLE_BAT(APINT_TYPE_PREFIX, 18084) +HANDLE_BAT(APINT_TYPE_PREFIX, 18085) +HANDLE_BAT(APINT_TYPE_PREFIX, 18086) +HANDLE_BAT(APINT_TYPE_PREFIX, 18087) +HANDLE_BAT(APINT_TYPE_PREFIX, 18088) +HANDLE_BAT(APINT_TYPE_PREFIX, 18089) +HANDLE_BAT(APINT_TYPE_PREFIX, 18090) +HANDLE_BAT(APINT_TYPE_PREFIX, 18091) +HANDLE_BAT(APINT_TYPE_PREFIX, 18092) +HANDLE_BAT(APINT_TYPE_PREFIX, 18093) +HANDLE_BAT(APINT_TYPE_PREFIX, 18094) +HANDLE_BAT(APINT_TYPE_PREFIX, 18095) +HANDLE_BAT(APINT_TYPE_PREFIX, 18096) +HANDLE_BAT(APINT_TYPE_PREFIX, 18097) +HANDLE_BAT(APINT_TYPE_PREFIX, 18098) +HANDLE_BAT(APINT_TYPE_PREFIX, 18099) +HANDLE_BAT(APINT_TYPE_PREFIX, 18100) +HANDLE_BAT(APINT_TYPE_PREFIX, 18101) +HANDLE_BAT(APINT_TYPE_PREFIX, 18102) +HANDLE_BAT(APINT_TYPE_PREFIX, 18103) +HANDLE_BAT(APINT_TYPE_PREFIX, 18104) +HANDLE_BAT(APINT_TYPE_PREFIX, 18105) +HANDLE_BAT(APINT_TYPE_PREFIX, 18106) +HANDLE_BAT(APINT_TYPE_PREFIX, 18107) +HANDLE_BAT(APINT_TYPE_PREFIX, 18108) +HANDLE_BAT(APINT_TYPE_PREFIX, 18109) +HANDLE_BAT(APINT_TYPE_PREFIX, 18110) +HANDLE_BAT(APINT_TYPE_PREFIX, 18111) +HANDLE_BAT(APINT_TYPE_PREFIX, 18112) +HANDLE_BAT(APINT_TYPE_PREFIX, 18113) +HANDLE_BAT(APINT_TYPE_PREFIX, 18114) +HANDLE_BAT(APINT_TYPE_PREFIX, 18115) +HANDLE_BAT(APINT_TYPE_PREFIX, 18116) +HANDLE_BAT(APINT_TYPE_PREFIX, 18117) +HANDLE_BAT(APINT_TYPE_PREFIX, 18118) +HANDLE_BAT(APINT_TYPE_PREFIX, 18119) +HANDLE_BAT(APINT_TYPE_PREFIX, 18120) +HANDLE_BAT(APINT_TYPE_PREFIX, 18121) +HANDLE_BAT(APINT_TYPE_PREFIX, 18122) +HANDLE_BAT(APINT_TYPE_PREFIX, 18123) +HANDLE_BAT(APINT_TYPE_PREFIX, 18124) +HANDLE_BAT(APINT_TYPE_PREFIX, 18125) +HANDLE_BAT(APINT_TYPE_PREFIX, 18126) +HANDLE_BAT(APINT_TYPE_PREFIX, 18127) +HANDLE_BAT(APINT_TYPE_PREFIX, 18128) +HANDLE_BAT(APINT_TYPE_PREFIX, 18129) +HANDLE_BAT(APINT_TYPE_PREFIX, 18130) +HANDLE_BAT(APINT_TYPE_PREFIX, 18131) +HANDLE_BAT(APINT_TYPE_PREFIX, 18132) +HANDLE_BAT(APINT_TYPE_PREFIX, 18133) +HANDLE_BAT(APINT_TYPE_PREFIX, 18134) +HANDLE_BAT(APINT_TYPE_PREFIX, 18135) +HANDLE_BAT(APINT_TYPE_PREFIX, 18136) +HANDLE_BAT(APINT_TYPE_PREFIX, 18137) +HANDLE_BAT(APINT_TYPE_PREFIX, 18138) +HANDLE_BAT(APINT_TYPE_PREFIX, 18139) +HANDLE_BAT(APINT_TYPE_PREFIX, 18140) +HANDLE_BAT(APINT_TYPE_PREFIX, 18141) +HANDLE_BAT(APINT_TYPE_PREFIX, 18142) +HANDLE_BAT(APINT_TYPE_PREFIX, 18143) +HANDLE_BAT(APINT_TYPE_PREFIX, 18144) +HANDLE_BAT(APINT_TYPE_PREFIX, 18145) +HANDLE_BAT(APINT_TYPE_PREFIX, 18146) +HANDLE_BAT(APINT_TYPE_PREFIX, 18147) +HANDLE_BAT(APINT_TYPE_PREFIX, 18148) +HANDLE_BAT(APINT_TYPE_PREFIX, 18149) +HANDLE_BAT(APINT_TYPE_PREFIX, 18150) +HANDLE_BAT(APINT_TYPE_PREFIX, 18151) +HANDLE_BAT(APINT_TYPE_PREFIX, 18152) +HANDLE_BAT(APINT_TYPE_PREFIX, 18153) +HANDLE_BAT(APINT_TYPE_PREFIX, 18154) +HANDLE_BAT(APINT_TYPE_PREFIX, 18155) +HANDLE_BAT(APINT_TYPE_PREFIX, 18156) +HANDLE_BAT(APINT_TYPE_PREFIX, 18157) +HANDLE_BAT(APINT_TYPE_PREFIX, 18158) +HANDLE_BAT(APINT_TYPE_PREFIX, 18159) +HANDLE_BAT(APINT_TYPE_PREFIX, 18160) +HANDLE_BAT(APINT_TYPE_PREFIX, 18161) +HANDLE_BAT(APINT_TYPE_PREFIX, 18162) +HANDLE_BAT(APINT_TYPE_PREFIX, 18163) +HANDLE_BAT(APINT_TYPE_PREFIX, 18164) +HANDLE_BAT(APINT_TYPE_PREFIX, 18165) +HANDLE_BAT(APINT_TYPE_PREFIX, 18166) +HANDLE_BAT(APINT_TYPE_PREFIX, 18167) +HANDLE_BAT(APINT_TYPE_PREFIX, 18168) +HANDLE_BAT(APINT_TYPE_PREFIX, 18169) +HANDLE_BAT(APINT_TYPE_PREFIX, 18170) +HANDLE_BAT(APINT_TYPE_PREFIX, 18171) +HANDLE_BAT(APINT_TYPE_PREFIX, 18172) +HANDLE_BAT(APINT_TYPE_PREFIX, 18173) +HANDLE_BAT(APINT_TYPE_PREFIX, 18174) +HANDLE_BAT(APINT_TYPE_PREFIX, 18175) +HANDLE_BAT(APINT_TYPE_PREFIX, 18176) +HANDLE_BAT(APINT_TYPE_PREFIX, 18177) +HANDLE_BAT(APINT_TYPE_PREFIX, 18178) +HANDLE_BAT(APINT_TYPE_PREFIX, 18179) +HANDLE_BAT(APINT_TYPE_PREFIX, 18180) +HANDLE_BAT(APINT_TYPE_PREFIX, 18181) +HANDLE_BAT(APINT_TYPE_PREFIX, 18182) +HANDLE_BAT(APINT_TYPE_PREFIX, 18183) +HANDLE_BAT(APINT_TYPE_PREFIX, 18184) +HANDLE_BAT(APINT_TYPE_PREFIX, 18185) +HANDLE_BAT(APINT_TYPE_PREFIX, 18186) +HANDLE_BAT(APINT_TYPE_PREFIX, 18187) +HANDLE_BAT(APINT_TYPE_PREFIX, 18188) +HANDLE_BAT(APINT_TYPE_PREFIX, 18189) +HANDLE_BAT(APINT_TYPE_PREFIX, 18190) +HANDLE_BAT(APINT_TYPE_PREFIX, 18191) +HANDLE_BAT(APINT_TYPE_PREFIX, 18192) +HANDLE_BAT(APINT_TYPE_PREFIX, 18193) +HANDLE_BAT(APINT_TYPE_PREFIX, 18194) +HANDLE_BAT(APINT_TYPE_PREFIX, 18195) +HANDLE_BAT(APINT_TYPE_PREFIX, 18196) +HANDLE_BAT(APINT_TYPE_PREFIX, 18197) +HANDLE_BAT(APINT_TYPE_PREFIX, 18198) +HANDLE_BAT(APINT_TYPE_PREFIX, 18199) +HANDLE_BAT(APINT_TYPE_PREFIX, 18200) +HANDLE_BAT(APINT_TYPE_PREFIX, 18201) +HANDLE_BAT(APINT_TYPE_PREFIX, 18202) +HANDLE_BAT(APINT_TYPE_PREFIX, 18203) +HANDLE_BAT(APINT_TYPE_PREFIX, 18204) +HANDLE_BAT(APINT_TYPE_PREFIX, 18205) +HANDLE_BAT(APINT_TYPE_PREFIX, 18206) +HANDLE_BAT(APINT_TYPE_PREFIX, 18207) +HANDLE_BAT(APINT_TYPE_PREFIX, 18208) +HANDLE_BAT(APINT_TYPE_PREFIX, 18209) +HANDLE_BAT(APINT_TYPE_PREFIX, 18210) +HANDLE_BAT(APINT_TYPE_PREFIX, 18211) +HANDLE_BAT(APINT_TYPE_PREFIX, 18212) +HANDLE_BAT(APINT_TYPE_PREFIX, 18213) +HANDLE_BAT(APINT_TYPE_PREFIX, 18214) +HANDLE_BAT(APINT_TYPE_PREFIX, 18215) +HANDLE_BAT(APINT_TYPE_PREFIX, 18216) +HANDLE_BAT(APINT_TYPE_PREFIX, 18217) +HANDLE_BAT(APINT_TYPE_PREFIX, 18218) +HANDLE_BAT(APINT_TYPE_PREFIX, 18219) +HANDLE_BAT(APINT_TYPE_PREFIX, 18220) +HANDLE_BAT(APINT_TYPE_PREFIX, 18221) +HANDLE_BAT(APINT_TYPE_PREFIX, 18222) +HANDLE_BAT(APINT_TYPE_PREFIX, 18223) +HANDLE_BAT(APINT_TYPE_PREFIX, 18224) +HANDLE_BAT(APINT_TYPE_PREFIX, 18225) +HANDLE_BAT(APINT_TYPE_PREFIX, 18226) +HANDLE_BAT(APINT_TYPE_PREFIX, 18227) +HANDLE_BAT(APINT_TYPE_PREFIX, 18228) +HANDLE_BAT(APINT_TYPE_PREFIX, 18229) +HANDLE_BAT(APINT_TYPE_PREFIX, 18230) +HANDLE_BAT(APINT_TYPE_PREFIX, 18231) +HANDLE_BAT(APINT_TYPE_PREFIX, 18232) +HANDLE_BAT(APINT_TYPE_PREFIX, 18233) +HANDLE_BAT(APINT_TYPE_PREFIX, 18234) +HANDLE_BAT(APINT_TYPE_PREFIX, 18235) +HANDLE_BAT(APINT_TYPE_PREFIX, 18236) +HANDLE_BAT(APINT_TYPE_PREFIX, 18237) +HANDLE_BAT(APINT_TYPE_PREFIX, 18238) +HANDLE_BAT(APINT_TYPE_PREFIX, 18239) +HANDLE_BAT(APINT_TYPE_PREFIX, 18240) +HANDLE_BAT(APINT_TYPE_PREFIX, 18241) +HANDLE_BAT(APINT_TYPE_PREFIX, 18242) +HANDLE_BAT(APINT_TYPE_PREFIX, 18243) +HANDLE_BAT(APINT_TYPE_PREFIX, 18244) +HANDLE_BAT(APINT_TYPE_PREFIX, 18245) +HANDLE_BAT(APINT_TYPE_PREFIX, 18246) +HANDLE_BAT(APINT_TYPE_PREFIX, 18247) +HANDLE_BAT(APINT_TYPE_PREFIX, 18248) +HANDLE_BAT(APINT_TYPE_PREFIX, 18249) +HANDLE_BAT(APINT_TYPE_PREFIX, 18250) +HANDLE_BAT(APINT_TYPE_PREFIX, 18251) +HANDLE_BAT(APINT_TYPE_PREFIX, 18252) +HANDLE_BAT(APINT_TYPE_PREFIX, 18253) +HANDLE_BAT(APINT_TYPE_PREFIX, 18254) +HANDLE_BAT(APINT_TYPE_PREFIX, 18255) +HANDLE_BAT(APINT_TYPE_PREFIX, 18256) +HANDLE_BAT(APINT_TYPE_PREFIX, 18257) +HANDLE_BAT(APINT_TYPE_PREFIX, 18258) +HANDLE_BAT(APINT_TYPE_PREFIX, 18259) +HANDLE_BAT(APINT_TYPE_PREFIX, 18260) +HANDLE_BAT(APINT_TYPE_PREFIX, 18261) +HANDLE_BAT(APINT_TYPE_PREFIX, 18262) +HANDLE_BAT(APINT_TYPE_PREFIX, 18263) +HANDLE_BAT(APINT_TYPE_PREFIX, 18264) +HANDLE_BAT(APINT_TYPE_PREFIX, 18265) +HANDLE_BAT(APINT_TYPE_PREFIX, 18266) +HANDLE_BAT(APINT_TYPE_PREFIX, 18267) +HANDLE_BAT(APINT_TYPE_PREFIX, 18268) +HANDLE_BAT(APINT_TYPE_PREFIX, 18269) +HANDLE_BAT(APINT_TYPE_PREFIX, 18270) +HANDLE_BAT(APINT_TYPE_PREFIX, 18271) +HANDLE_BAT(APINT_TYPE_PREFIX, 18272) +HANDLE_BAT(APINT_TYPE_PREFIX, 18273) +HANDLE_BAT(APINT_TYPE_PREFIX, 18274) +HANDLE_BAT(APINT_TYPE_PREFIX, 18275) +HANDLE_BAT(APINT_TYPE_PREFIX, 18276) +HANDLE_BAT(APINT_TYPE_PREFIX, 18277) +HANDLE_BAT(APINT_TYPE_PREFIX, 18278) +HANDLE_BAT(APINT_TYPE_PREFIX, 18279) +HANDLE_BAT(APINT_TYPE_PREFIX, 18280) +HANDLE_BAT(APINT_TYPE_PREFIX, 18281) +HANDLE_BAT(APINT_TYPE_PREFIX, 18282) +HANDLE_BAT(APINT_TYPE_PREFIX, 18283) +HANDLE_BAT(APINT_TYPE_PREFIX, 18284) +HANDLE_BAT(APINT_TYPE_PREFIX, 18285) +HANDLE_BAT(APINT_TYPE_PREFIX, 18286) +HANDLE_BAT(APINT_TYPE_PREFIX, 18287) +HANDLE_BAT(APINT_TYPE_PREFIX, 18288) +HANDLE_BAT(APINT_TYPE_PREFIX, 18289) +HANDLE_BAT(APINT_TYPE_PREFIX, 18290) +HANDLE_BAT(APINT_TYPE_PREFIX, 18291) +HANDLE_BAT(APINT_TYPE_PREFIX, 18292) +HANDLE_BAT(APINT_TYPE_PREFIX, 18293) +HANDLE_BAT(APINT_TYPE_PREFIX, 18294) +HANDLE_BAT(APINT_TYPE_PREFIX, 18295) +HANDLE_BAT(APINT_TYPE_PREFIX, 18296) +HANDLE_BAT(APINT_TYPE_PREFIX, 18297) +HANDLE_BAT(APINT_TYPE_PREFIX, 18298) +HANDLE_BAT(APINT_TYPE_PREFIX, 18299) +HANDLE_BAT(APINT_TYPE_PREFIX, 18300) +HANDLE_BAT(APINT_TYPE_PREFIX, 18301) +HANDLE_BAT(APINT_TYPE_PREFIX, 18302) +HANDLE_BAT(APINT_TYPE_PREFIX, 18303) +HANDLE_BAT(APINT_TYPE_PREFIX, 18304) +HANDLE_BAT(APINT_TYPE_PREFIX, 18305) +HANDLE_BAT(APINT_TYPE_PREFIX, 18306) +HANDLE_BAT(APINT_TYPE_PREFIX, 18307) +HANDLE_BAT(APINT_TYPE_PREFIX, 18308) +HANDLE_BAT(APINT_TYPE_PREFIX, 18309) +HANDLE_BAT(APINT_TYPE_PREFIX, 18310) +HANDLE_BAT(APINT_TYPE_PREFIX, 18311) +HANDLE_BAT(APINT_TYPE_PREFIX, 18312) +HANDLE_BAT(APINT_TYPE_PREFIX, 18313) +HANDLE_BAT(APINT_TYPE_PREFIX, 18314) +HANDLE_BAT(APINT_TYPE_PREFIX, 18315) +HANDLE_BAT(APINT_TYPE_PREFIX, 18316) +HANDLE_BAT(APINT_TYPE_PREFIX, 18317) +HANDLE_BAT(APINT_TYPE_PREFIX, 18318) +HANDLE_BAT(APINT_TYPE_PREFIX, 18319) +HANDLE_BAT(APINT_TYPE_PREFIX, 18320) +HANDLE_BAT(APINT_TYPE_PREFIX, 18321) +HANDLE_BAT(APINT_TYPE_PREFIX, 18322) +HANDLE_BAT(APINT_TYPE_PREFIX, 18323) +HANDLE_BAT(APINT_TYPE_PREFIX, 18324) +HANDLE_BAT(APINT_TYPE_PREFIX, 18325) +HANDLE_BAT(APINT_TYPE_PREFIX, 18326) +HANDLE_BAT(APINT_TYPE_PREFIX, 18327) +HANDLE_BAT(APINT_TYPE_PREFIX, 18328) +HANDLE_BAT(APINT_TYPE_PREFIX, 18329) +HANDLE_BAT(APINT_TYPE_PREFIX, 18330) +HANDLE_BAT(APINT_TYPE_PREFIX, 18331) +HANDLE_BAT(APINT_TYPE_PREFIX, 18332) +HANDLE_BAT(APINT_TYPE_PREFIX, 18333) +HANDLE_BAT(APINT_TYPE_PREFIX, 18334) +HANDLE_BAT(APINT_TYPE_PREFIX, 18335) +HANDLE_BAT(APINT_TYPE_PREFIX, 18336) +HANDLE_BAT(APINT_TYPE_PREFIX, 18337) +HANDLE_BAT(APINT_TYPE_PREFIX, 18338) +HANDLE_BAT(APINT_TYPE_PREFIX, 18339) +HANDLE_BAT(APINT_TYPE_PREFIX, 18340) +HANDLE_BAT(APINT_TYPE_PREFIX, 18341) +HANDLE_BAT(APINT_TYPE_PREFIX, 18342) +HANDLE_BAT(APINT_TYPE_PREFIX, 18343) +HANDLE_BAT(APINT_TYPE_PREFIX, 18344) +HANDLE_BAT(APINT_TYPE_PREFIX, 18345) +HANDLE_BAT(APINT_TYPE_PREFIX, 18346) +HANDLE_BAT(APINT_TYPE_PREFIX, 18347) +HANDLE_BAT(APINT_TYPE_PREFIX, 18348) +HANDLE_BAT(APINT_TYPE_PREFIX, 18349) +HANDLE_BAT(APINT_TYPE_PREFIX, 18350) +HANDLE_BAT(APINT_TYPE_PREFIX, 18351) +HANDLE_BAT(APINT_TYPE_PREFIX, 18352) +HANDLE_BAT(APINT_TYPE_PREFIX, 18353) +HANDLE_BAT(APINT_TYPE_PREFIX, 18354) +HANDLE_BAT(APINT_TYPE_PREFIX, 18355) +HANDLE_BAT(APINT_TYPE_PREFIX, 18356) +HANDLE_BAT(APINT_TYPE_PREFIX, 18357) +HANDLE_BAT(APINT_TYPE_PREFIX, 18358) +HANDLE_BAT(APINT_TYPE_PREFIX, 18359) +HANDLE_BAT(APINT_TYPE_PREFIX, 18360) +HANDLE_BAT(APINT_TYPE_PREFIX, 18361) +HANDLE_BAT(APINT_TYPE_PREFIX, 18362) +HANDLE_BAT(APINT_TYPE_PREFIX, 18363) +HANDLE_BAT(APINT_TYPE_PREFIX, 18364) +HANDLE_BAT(APINT_TYPE_PREFIX, 18365) +HANDLE_BAT(APINT_TYPE_PREFIX, 18366) +HANDLE_BAT(APINT_TYPE_PREFIX, 18367) +HANDLE_BAT(APINT_TYPE_PREFIX, 18368) +HANDLE_BAT(APINT_TYPE_PREFIX, 18369) +HANDLE_BAT(APINT_TYPE_PREFIX, 18370) +HANDLE_BAT(APINT_TYPE_PREFIX, 18371) +HANDLE_BAT(APINT_TYPE_PREFIX, 18372) +HANDLE_BAT(APINT_TYPE_PREFIX, 18373) +HANDLE_BAT(APINT_TYPE_PREFIX, 18374) +HANDLE_BAT(APINT_TYPE_PREFIX, 18375) +HANDLE_BAT(APINT_TYPE_PREFIX, 18376) +HANDLE_BAT(APINT_TYPE_PREFIX, 18377) +HANDLE_BAT(APINT_TYPE_PREFIX, 18378) +HANDLE_BAT(APINT_TYPE_PREFIX, 18379) +HANDLE_BAT(APINT_TYPE_PREFIX, 18380) +HANDLE_BAT(APINT_TYPE_PREFIX, 18381) +HANDLE_BAT(APINT_TYPE_PREFIX, 18382) +HANDLE_BAT(APINT_TYPE_PREFIX, 18383) +HANDLE_BAT(APINT_TYPE_PREFIX, 18384) +HANDLE_BAT(APINT_TYPE_PREFIX, 18385) +HANDLE_BAT(APINT_TYPE_PREFIX, 18386) +HANDLE_BAT(APINT_TYPE_PREFIX, 18387) +HANDLE_BAT(APINT_TYPE_PREFIX, 18388) +HANDLE_BAT(APINT_TYPE_PREFIX, 18389) +HANDLE_BAT(APINT_TYPE_PREFIX, 18390) +HANDLE_BAT(APINT_TYPE_PREFIX, 18391) +HANDLE_BAT(APINT_TYPE_PREFIX, 18392) +HANDLE_BAT(APINT_TYPE_PREFIX, 18393) +HANDLE_BAT(APINT_TYPE_PREFIX, 18394) +HANDLE_BAT(APINT_TYPE_PREFIX, 18395) +HANDLE_BAT(APINT_TYPE_PREFIX, 18396) +HANDLE_BAT(APINT_TYPE_PREFIX, 18397) +HANDLE_BAT(APINT_TYPE_PREFIX, 18398) +HANDLE_BAT(APINT_TYPE_PREFIX, 18399) +HANDLE_BAT(APINT_TYPE_PREFIX, 18400) +HANDLE_BAT(APINT_TYPE_PREFIX, 18401) +HANDLE_BAT(APINT_TYPE_PREFIX, 18402) +HANDLE_BAT(APINT_TYPE_PREFIX, 18403) +HANDLE_BAT(APINT_TYPE_PREFIX, 18404) +HANDLE_BAT(APINT_TYPE_PREFIX, 18405) +HANDLE_BAT(APINT_TYPE_PREFIX, 18406) +HANDLE_BAT(APINT_TYPE_PREFIX, 18407) +HANDLE_BAT(APINT_TYPE_PREFIX, 18408) +HANDLE_BAT(APINT_TYPE_PREFIX, 18409) +HANDLE_BAT(APINT_TYPE_PREFIX, 18410) +HANDLE_BAT(APINT_TYPE_PREFIX, 18411) +HANDLE_BAT(APINT_TYPE_PREFIX, 18412) +HANDLE_BAT(APINT_TYPE_PREFIX, 18413) +HANDLE_BAT(APINT_TYPE_PREFIX, 18414) +HANDLE_BAT(APINT_TYPE_PREFIX, 18415) +HANDLE_BAT(APINT_TYPE_PREFIX, 18416) +HANDLE_BAT(APINT_TYPE_PREFIX, 18417) +HANDLE_BAT(APINT_TYPE_PREFIX, 18418) +HANDLE_BAT(APINT_TYPE_PREFIX, 18419) +HANDLE_BAT(APINT_TYPE_PREFIX, 18420) +HANDLE_BAT(APINT_TYPE_PREFIX, 18421) +HANDLE_BAT(APINT_TYPE_PREFIX, 18422) +HANDLE_BAT(APINT_TYPE_PREFIX, 18423) +HANDLE_BAT(APINT_TYPE_PREFIX, 18424) +HANDLE_BAT(APINT_TYPE_PREFIX, 18425) +HANDLE_BAT(APINT_TYPE_PREFIX, 18426) +HANDLE_BAT(APINT_TYPE_PREFIX, 18427) +HANDLE_BAT(APINT_TYPE_PREFIX, 18428) +HANDLE_BAT(APINT_TYPE_PREFIX, 18429) +HANDLE_BAT(APINT_TYPE_PREFIX, 18430) +HANDLE_BAT(APINT_TYPE_PREFIX, 18431) +HANDLE_BAT(APINT_TYPE_PREFIX, 18432) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 18 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 18433) +HANDLE_BAT(, 18434) +HANDLE_BAT(, 18435) +HANDLE_BAT(, 18436) +HANDLE_BAT(, 18437) +HANDLE_BAT(, 18438) +HANDLE_BAT(, 18439) +HANDLE_BAT(, 18440) +HANDLE_BAT(, 18441) +HANDLE_BAT(, 18442) +HANDLE_BAT(, 18443) +HANDLE_BAT(, 18444) +HANDLE_BAT(, 18445) +HANDLE_BAT(, 18446) +HANDLE_BAT(, 18447) +HANDLE_BAT(, 18448) +HANDLE_BAT(, 18449) +HANDLE_BAT(, 18450) +HANDLE_BAT(, 18451) +HANDLE_BAT(, 18452) +HANDLE_BAT(, 18453) +HANDLE_BAT(, 18454) +HANDLE_BAT(, 18455) +HANDLE_BAT(, 18456) +HANDLE_BAT(, 18457) +HANDLE_BAT(, 18458) +HANDLE_BAT(, 18459) +HANDLE_BAT(, 18460) +HANDLE_BAT(, 18461) +HANDLE_BAT(, 18462) +HANDLE_BAT(, 18463) +HANDLE_BAT(, 18464) +HANDLE_BAT(, 18465) +HANDLE_BAT(, 18466) +HANDLE_BAT(, 18467) +HANDLE_BAT(, 18468) +HANDLE_BAT(, 18469) +HANDLE_BAT(, 18470) +HANDLE_BAT(, 18471) +HANDLE_BAT(, 18472) +HANDLE_BAT(, 18473) +HANDLE_BAT(, 18474) +HANDLE_BAT(, 18475) +HANDLE_BAT(, 18476) +HANDLE_BAT(, 18477) +HANDLE_BAT(, 18478) +HANDLE_BAT(, 18479) +HANDLE_BAT(, 18480) +HANDLE_BAT(, 18481) +HANDLE_BAT(, 18482) +HANDLE_BAT(, 18483) +HANDLE_BAT(, 18484) +HANDLE_BAT(, 18485) +HANDLE_BAT(, 18486) +HANDLE_BAT(, 18487) +HANDLE_BAT(, 18488) +HANDLE_BAT(, 18489) +HANDLE_BAT(, 18490) +HANDLE_BAT(, 18491) +HANDLE_BAT(, 18492) +HANDLE_BAT(, 18493) +HANDLE_BAT(, 18494) +HANDLE_BAT(, 18495) +HANDLE_BAT(, 18496) +HANDLE_BAT(, 18497) +HANDLE_BAT(, 18498) +HANDLE_BAT(, 18499) +HANDLE_BAT(, 18500) +HANDLE_BAT(, 18501) +HANDLE_BAT(, 18502) +HANDLE_BAT(, 18503) +HANDLE_BAT(, 18504) +HANDLE_BAT(, 18505) +HANDLE_BAT(, 18506) +HANDLE_BAT(, 18507) +HANDLE_BAT(, 18508) +HANDLE_BAT(, 18509) +HANDLE_BAT(, 18510) +HANDLE_BAT(, 18511) +HANDLE_BAT(, 18512) +HANDLE_BAT(, 18513) +HANDLE_BAT(, 18514) +HANDLE_BAT(, 18515) +HANDLE_BAT(, 18516) +HANDLE_BAT(, 18517) +HANDLE_BAT(, 18518) +HANDLE_BAT(, 18519) +HANDLE_BAT(, 18520) +HANDLE_BAT(, 18521) +HANDLE_BAT(, 18522) +HANDLE_BAT(, 18523) +HANDLE_BAT(, 18524) +HANDLE_BAT(, 18525) +HANDLE_BAT(, 18526) +HANDLE_BAT(, 18527) +HANDLE_BAT(, 18528) +HANDLE_BAT(, 18529) +HANDLE_BAT(, 18530) +HANDLE_BAT(, 18531) +HANDLE_BAT(, 18532) +HANDLE_BAT(, 18533) +HANDLE_BAT(, 18534) +HANDLE_BAT(, 18535) +HANDLE_BAT(, 18536) +HANDLE_BAT(, 18537) +HANDLE_BAT(, 18538) +HANDLE_BAT(, 18539) +HANDLE_BAT(, 18540) +HANDLE_BAT(, 18541) +HANDLE_BAT(, 18542) +HANDLE_BAT(, 18543) +HANDLE_BAT(, 18544) +HANDLE_BAT(, 18545) +HANDLE_BAT(, 18546) +HANDLE_BAT(, 18547) +HANDLE_BAT(, 18548) +HANDLE_BAT(, 18549) +HANDLE_BAT(, 18550) +HANDLE_BAT(, 18551) +HANDLE_BAT(, 18552) +HANDLE_BAT(, 18553) +HANDLE_BAT(, 18554) +HANDLE_BAT(, 18555) +HANDLE_BAT(, 18556) +HANDLE_BAT(, 18557) +HANDLE_BAT(, 18558) +HANDLE_BAT(, 18559) +HANDLE_BAT(, 18560) +HANDLE_BAT(, 18561) +HANDLE_BAT(, 18562) +HANDLE_BAT(, 18563) +HANDLE_BAT(, 18564) +HANDLE_BAT(, 18565) +HANDLE_BAT(, 18566) +HANDLE_BAT(, 18567) +HANDLE_BAT(, 18568) +HANDLE_BAT(, 18569) +HANDLE_BAT(, 18570) +HANDLE_BAT(, 18571) +HANDLE_BAT(, 18572) +HANDLE_BAT(, 18573) +HANDLE_BAT(, 18574) +HANDLE_BAT(, 18575) +HANDLE_BAT(, 18576) +HANDLE_BAT(, 18577) +HANDLE_BAT(, 18578) +HANDLE_BAT(, 18579) +HANDLE_BAT(, 18580) +HANDLE_BAT(, 18581) +HANDLE_BAT(, 18582) +HANDLE_BAT(, 18583) +HANDLE_BAT(, 18584) +HANDLE_BAT(, 18585) +HANDLE_BAT(, 18586) +HANDLE_BAT(, 18587) +HANDLE_BAT(, 18588) +HANDLE_BAT(, 18589) +HANDLE_BAT(, 18590) +HANDLE_BAT(, 18591) +HANDLE_BAT(, 18592) +HANDLE_BAT(, 18593) +HANDLE_BAT(, 18594) +HANDLE_BAT(, 18595) +HANDLE_BAT(, 18596) +HANDLE_BAT(, 18597) +HANDLE_BAT(, 18598) +HANDLE_BAT(, 18599) +HANDLE_BAT(, 18600) +HANDLE_BAT(, 18601) +HANDLE_BAT(, 18602) +HANDLE_BAT(, 18603) +HANDLE_BAT(, 18604) +HANDLE_BAT(, 18605) +HANDLE_BAT(, 18606) +HANDLE_BAT(, 18607) +HANDLE_BAT(, 18608) +HANDLE_BAT(, 18609) +HANDLE_BAT(, 18610) +HANDLE_BAT(, 18611) +HANDLE_BAT(, 18612) +HANDLE_BAT(, 18613) +HANDLE_BAT(, 18614) +HANDLE_BAT(, 18615) +HANDLE_BAT(, 18616) +HANDLE_BAT(, 18617) +HANDLE_BAT(, 18618) +HANDLE_BAT(, 18619) +HANDLE_BAT(, 18620) +HANDLE_BAT(, 18621) +HANDLE_BAT(, 18622) +HANDLE_BAT(, 18623) +HANDLE_BAT(, 18624) +HANDLE_BAT(, 18625) +HANDLE_BAT(, 18626) +HANDLE_BAT(, 18627) +HANDLE_BAT(, 18628) +HANDLE_BAT(, 18629) +HANDLE_BAT(, 18630) +HANDLE_BAT(, 18631) +HANDLE_BAT(, 18632) +HANDLE_BAT(, 18633) +HANDLE_BAT(, 18634) +HANDLE_BAT(, 18635) +HANDLE_BAT(, 18636) +HANDLE_BAT(, 18637) +HANDLE_BAT(, 18638) +HANDLE_BAT(, 18639) +HANDLE_BAT(, 18640) +HANDLE_BAT(, 18641) +HANDLE_BAT(, 18642) +HANDLE_BAT(, 18643) +HANDLE_BAT(, 18644) +HANDLE_BAT(, 18645) +HANDLE_BAT(, 18646) +HANDLE_BAT(, 18647) +HANDLE_BAT(, 18648) +HANDLE_BAT(, 18649) +HANDLE_BAT(, 18650) +HANDLE_BAT(, 18651) +HANDLE_BAT(, 18652) +HANDLE_BAT(, 18653) +HANDLE_BAT(, 18654) +HANDLE_BAT(, 18655) +HANDLE_BAT(, 18656) +HANDLE_BAT(, 18657) +HANDLE_BAT(, 18658) +HANDLE_BAT(, 18659) +HANDLE_BAT(, 18660) +HANDLE_BAT(, 18661) +HANDLE_BAT(, 18662) +HANDLE_BAT(, 18663) +HANDLE_BAT(, 18664) +HANDLE_BAT(, 18665) +HANDLE_BAT(, 18666) +HANDLE_BAT(, 18667) +HANDLE_BAT(, 18668) +HANDLE_BAT(, 18669) +HANDLE_BAT(, 18670) +HANDLE_BAT(, 18671) +HANDLE_BAT(, 18672) +HANDLE_BAT(, 18673) +HANDLE_BAT(, 18674) +HANDLE_BAT(, 18675) +HANDLE_BAT(, 18676) +HANDLE_BAT(, 18677) +HANDLE_BAT(, 18678) +HANDLE_BAT(, 18679) +HANDLE_BAT(, 18680) +HANDLE_BAT(, 18681) +HANDLE_BAT(, 18682) +HANDLE_BAT(, 18683) +HANDLE_BAT(, 18684) +HANDLE_BAT(, 18685) +HANDLE_BAT(, 18686) +HANDLE_BAT(, 18687) +HANDLE_BAT(, 18688) +HANDLE_BAT(, 18689) +HANDLE_BAT(, 18690) +HANDLE_BAT(, 18691) +HANDLE_BAT(, 18692) +HANDLE_BAT(, 18693) +HANDLE_BAT(, 18694) +HANDLE_BAT(, 18695) +HANDLE_BAT(, 18696) +HANDLE_BAT(, 18697) +HANDLE_BAT(, 18698) +HANDLE_BAT(, 18699) +HANDLE_BAT(, 18700) +HANDLE_BAT(, 18701) +HANDLE_BAT(, 18702) +HANDLE_BAT(, 18703) +HANDLE_BAT(, 18704) +HANDLE_BAT(, 18705) +HANDLE_BAT(, 18706) +HANDLE_BAT(, 18707) +HANDLE_BAT(, 18708) +HANDLE_BAT(, 18709) +HANDLE_BAT(, 18710) +HANDLE_BAT(, 18711) +HANDLE_BAT(, 18712) +HANDLE_BAT(, 18713) +HANDLE_BAT(, 18714) +HANDLE_BAT(, 18715) +HANDLE_BAT(, 18716) +HANDLE_BAT(, 18717) +HANDLE_BAT(, 18718) +HANDLE_BAT(, 18719) +HANDLE_BAT(, 18720) +HANDLE_BAT(, 18721) +HANDLE_BAT(, 18722) +HANDLE_BAT(, 18723) +HANDLE_BAT(, 18724) +HANDLE_BAT(, 18725) +HANDLE_BAT(, 18726) +HANDLE_BAT(, 18727) +HANDLE_BAT(, 18728) +HANDLE_BAT(, 18729) +HANDLE_BAT(, 18730) +HANDLE_BAT(, 18731) +HANDLE_BAT(, 18732) +HANDLE_BAT(, 18733) +HANDLE_BAT(, 18734) +HANDLE_BAT(, 18735) +HANDLE_BAT(, 18736) +HANDLE_BAT(, 18737) +HANDLE_BAT(, 18738) +HANDLE_BAT(, 18739) +HANDLE_BAT(, 18740) +HANDLE_BAT(, 18741) +HANDLE_BAT(, 18742) +HANDLE_BAT(, 18743) +HANDLE_BAT(, 18744) +HANDLE_BAT(, 18745) +HANDLE_BAT(, 18746) +HANDLE_BAT(, 18747) +HANDLE_BAT(, 18748) +HANDLE_BAT(, 18749) +HANDLE_BAT(, 18750) +HANDLE_BAT(, 18751) +HANDLE_BAT(, 18752) +HANDLE_BAT(, 18753) +HANDLE_BAT(, 18754) +HANDLE_BAT(, 18755) +HANDLE_BAT(, 18756) +HANDLE_BAT(, 18757) +HANDLE_BAT(, 18758) +HANDLE_BAT(, 18759) +HANDLE_BAT(, 18760) +HANDLE_BAT(, 18761) +HANDLE_BAT(, 18762) +HANDLE_BAT(, 18763) +HANDLE_BAT(, 18764) +HANDLE_BAT(, 18765) +HANDLE_BAT(, 18766) +HANDLE_BAT(, 18767) +HANDLE_BAT(, 18768) +HANDLE_BAT(, 18769) +HANDLE_BAT(, 18770) +HANDLE_BAT(, 18771) +HANDLE_BAT(, 18772) +HANDLE_BAT(, 18773) +HANDLE_BAT(, 18774) +HANDLE_BAT(, 18775) +HANDLE_BAT(, 18776) +HANDLE_BAT(, 18777) +HANDLE_BAT(, 18778) +HANDLE_BAT(, 18779) +HANDLE_BAT(, 18780) +HANDLE_BAT(, 18781) +HANDLE_BAT(, 18782) +HANDLE_BAT(, 18783) +HANDLE_BAT(, 18784) +HANDLE_BAT(, 18785) +HANDLE_BAT(, 18786) +HANDLE_BAT(, 18787) +HANDLE_BAT(, 18788) +HANDLE_BAT(, 18789) +HANDLE_BAT(, 18790) +HANDLE_BAT(, 18791) +HANDLE_BAT(, 18792) +HANDLE_BAT(, 18793) +HANDLE_BAT(, 18794) +HANDLE_BAT(, 18795) +HANDLE_BAT(, 18796) +HANDLE_BAT(, 18797) +HANDLE_BAT(, 18798) +HANDLE_BAT(, 18799) +HANDLE_BAT(, 18800) +HANDLE_BAT(, 18801) +HANDLE_BAT(, 18802) +HANDLE_BAT(, 18803) +HANDLE_BAT(, 18804) +HANDLE_BAT(, 18805) +HANDLE_BAT(, 18806) +HANDLE_BAT(, 18807) +HANDLE_BAT(, 18808) +HANDLE_BAT(, 18809) +HANDLE_BAT(, 18810) +HANDLE_BAT(, 18811) +HANDLE_BAT(, 18812) +HANDLE_BAT(, 18813) +HANDLE_BAT(, 18814) +HANDLE_BAT(, 18815) +HANDLE_BAT(, 18816) +HANDLE_BAT(, 18817) +HANDLE_BAT(, 18818) +HANDLE_BAT(, 18819) +HANDLE_BAT(, 18820) +HANDLE_BAT(, 18821) +HANDLE_BAT(, 18822) +HANDLE_BAT(, 18823) +HANDLE_BAT(, 18824) +HANDLE_BAT(, 18825) +HANDLE_BAT(, 18826) +HANDLE_BAT(, 18827) +HANDLE_BAT(, 18828) +HANDLE_BAT(, 18829) +HANDLE_BAT(, 18830) +HANDLE_BAT(, 18831) +HANDLE_BAT(, 18832) +HANDLE_BAT(, 18833) +HANDLE_BAT(, 18834) +HANDLE_BAT(, 18835) +HANDLE_BAT(, 18836) +HANDLE_BAT(, 18837) +HANDLE_BAT(, 18838) +HANDLE_BAT(, 18839) +HANDLE_BAT(, 18840) +HANDLE_BAT(, 18841) +HANDLE_BAT(, 18842) +HANDLE_BAT(, 18843) +HANDLE_BAT(, 18844) +HANDLE_BAT(, 18845) +HANDLE_BAT(, 18846) +HANDLE_BAT(, 18847) +HANDLE_BAT(, 18848) +HANDLE_BAT(, 18849) +HANDLE_BAT(, 18850) +HANDLE_BAT(, 18851) +HANDLE_BAT(, 18852) +HANDLE_BAT(, 18853) +HANDLE_BAT(, 18854) +HANDLE_BAT(, 18855) +HANDLE_BAT(, 18856) +HANDLE_BAT(, 18857) +HANDLE_BAT(, 18858) +HANDLE_BAT(, 18859) +HANDLE_BAT(, 18860) +HANDLE_BAT(, 18861) +HANDLE_BAT(, 18862) +HANDLE_BAT(, 18863) +HANDLE_BAT(, 18864) +HANDLE_BAT(, 18865) +HANDLE_BAT(, 18866) +HANDLE_BAT(, 18867) +HANDLE_BAT(, 18868) +HANDLE_BAT(, 18869) +HANDLE_BAT(, 18870) +HANDLE_BAT(, 18871) +HANDLE_BAT(, 18872) +HANDLE_BAT(, 18873) +HANDLE_BAT(, 18874) +HANDLE_BAT(, 18875) +HANDLE_BAT(, 18876) +HANDLE_BAT(, 18877) +HANDLE_BAT(, 18878) +HANDLE_BAT(, 18879) +HANDLE_BAT(, 18880) +HANDLE_BAT(, 18881) +HANDLE_BAT(, 18882) +HANDLE_BAT(, 18883) +HANDLE_BAT(, 18884) +HANDLE_BAT(, 18885) +HANDLE_BAT(, 18886) +HANDLE_BAT(, 18887) +HANDLE_BAT(, 18888) +HANDLE_BAT(, 18889) +HANDLE_BAT(, 18890) +HANDLE_BAT(, 18891) +HANDLE_BAT(, 18892) +HANDLE_BAT(, 18893) +HANDLE_BAT(, 18894) +HANDLE_BAT(, 18895) +HANDLE_BAT(, 18896) +HANDLE_BAT(, 18897) +HANDLE_BAT(, 18898) +HANDLE_BAT(, 18899) +HANDLE_BAT(, 18900) +HANDLE_BAT(, 18901) +HANDLE_BAT(, 18902) +HANDLE_BAT(, 18903) +HANDLE_BAT(, 18904) +HANDLE_BAT(, 18905) +HANDLE_BAT(, 18906) +HANDLE_BAT(, 18907) +HANDLE_BAT(, 18908) +HANDLE_BAT(, 18909) +HANDLE_BAT(, 18910) +HANDLE_BAT(, 18911) +HANDLE_BAT(, 18912) +HANDLE_BAT(, 18913) +HANDLE_BAT(, 18914) +HANDLE_BAT(, 18915) +HANDLE_BAT(, 18916) +HANDLE_BAT(, 18917) +HANDLE_BAT(, 18918) +HANDLE_BAT(, 18919) +HANDLE_BAT(, 18920) +HANDLE_BAT(, 18921) +HANDLE_BAT(, 18922) +HANDLE_BAT(, 18923) +HANDLE_BAT(, 18924) +HANDLE_BAT(, 18925) +HANDLE_BAT(, 18926) +HANDLE_BAT(, 18927) +HANDLE_BAT(, 18928) +HANDLE_BAT(, 18929) +HANDLE_BAT(, 18930) +HANDLE_BAT(, 18931) +HANDLE_BAT(, 18932) +HANDLE_BAT(, 18933) +HANDLE_BAT(, 18934) +HANDLE_BAT(, 18935) +HANDLE_BAT(, 18936) +HANDLE_BAT(, 18937) +HANDLE_BAT(, 18938) +HANDLE_BAT(, 18939) +HANDLE_BAT(, 18940) +HANDLE_BAT(, 18941) +HANDLE_BAT(, 18942) +HANDLE_BAT(, 18943) +HANDLE_BAT(, 18944) +HANDLE_BAT(, 18945) +HANDLE_BAT(, 18946) +HANDLE_BAT(, 18947) +HANDLE_BAT(, 18948) +HANDLE_BAT(, 18949) +HANDLE_BAT(, 18950) +HANDLE_BAT(, 18951) +HANDLE_BAT(, 18952) +HANDLE_BAT(, 18953) +HANDLE_BAT(, 18954) +HANDLE_BAT(, 18955) +HANDLE_BAT(, 18956) +HANDLE_BAT(, 18957) +HANDLE_BAT(, 18958) +HANDLE_BAT(, 18959) +HANDLE_BAT(, 18960) +HANDLE_BAT(, 18961) +HANDLE_BAT(, 18962) +HANDLE_BAT(, 18963) +HANDLE_BAT(, 18964) +HANDLE_BAT(, 18965) +HANDLE_BAT(, 18966) +HANDLE_BAT(, 18967) +HANDLE_BAT(, 18968) +HANDLE_BAT(, 18969) +HANDLE_BAT(, 18970) +HANDLE_BAT(, 18971) +HANDLE_BAT(, 18972) +HANDLE_BAT(, 18973) +HANDLE_BAT(, 18974) +HANDLE_BAT(, 18975) +HANDLE_BAT(, 18976) +HANDLE_BAT(, 18977) +HANDLE_BAT(, 18978) +HANDLE_BAT(, 18979) +HANDLE_BAT(, 18980) +HANDLE_BAT(, 18981) +HANDLE_BAT(, 18982) +HANDLE_BAT(, 18983) +HANDLE_BAT(, 18984) +HANDLE_BAT(, 18985) +HANDLE_BAT(, 18986) +HANDLE_BAT(, 18987) +HANDLE_BAT(, 18988) +HANDLE_BAT(, 18989) +HANDLE_BAT(, 18990) +HANDLE_BAT(, 18991) +HANDLE_BAT(, 18992) +HANDLE_BAT(, 18993) +HANDLE_BAT(, 18994) +HANDLE_BAT(, 18995) +HANDLE_BAT(, 18996) +HANDLE_BAT(, 18997) +HANDLE_BAT(, 18998) +HANDLE_BAT(, 18999) +HANDLE_BAT(, 19000) +HANDLE_BAT(, 19001) +HANDLE_BAT(, 19002) +HANDLE_BAT(, 19003) +HANDLE_BAT(, 19004) +HANDLE_BAT(, 19005) +HANDLE_BAT(, 19006) +HANDLE_BAT(, 19007) +HANDLE_BAT(, 19008) +HANDLE_BAT(, 19009) +HANDLE_BAT(, 19010) +HANDLE_BAT(, 19011) +HANDLE_BAT(, 19012) +HANDLE_BAT(, 19013) +HANDLE_BAT(, 19014) +HANDLE_BAT(, 19015) +HANDLE_BAT(, 19016) +HANDLE_BAT(, 19017) +HANDLE_BAT(, 19018) +HANDLE_BAT(, 19019) +HANDLE_BAT(, 19020) +HANDLE_BAT(, 19021) +HANDLE_BAT(, 19022) +HANDLE_BAT(, 19023) +HANDLE_BAT(, 19024) +HANDLE_BAT(, 19025) +HANDLE_BAT(, 19026) +HANDLE_BAT(, 19027) +HANDLE_BAT(, 19028) +HANDLE_BAT(, 19029) +HANDLE_BAT(, 19030) +HANDLE_BAT(, 19031) +HANDLE_BAT(, 19032) +HANDLE_BAT(, 19033) +HANDLE_BAT(, 19034) +HANDLE_BAT(, 19035) +HANDLE_BAT(, 19036) +HANDLE_BAT(, 19037) +HANDLE_BAT(, 19038) +HANDLE_BAT(, 19039) +HANDLE_BAT(, 19040) +HANDLE_BAT(, 19041) +HANDLE_BAT(, 19042) +HANDLE_BAT(, 19043) +HANDLE_BAT(, 19044) +HANDLE_BAT(, 19045) +HANDLE_BAT(, 19046) +HANDLE_BAT(, 19047) +HANDLE_BAT(, 19048) +HANDLE_BAT(, 19049) +HANDLE_BAT(, 19050) +HANDLE_BAT(, 19051) +HANDLE_BAT(, 19052) +HANDLE_BAT(, 19053) +HANDLE_BAT(, 19054) +HANDLE_BAT(, 19055) +HANDLE_BAT(, 19056) +HANDLE_BAT(, 19057) +HANDLE_BAT(, 19058) +HANDLE_BAT(, 19059) +HANDLE_BAT(, 19060) +HANDLE_BAT(, 19061) +HANDLE_BAT(, 19062) +HANDLE_BAT(, 19063) +HANDLE_BAT(, 19064) +HANDLE_BAT(, 19065) +HANDLE_BAT(, 19066) +HANDLE_BAT(, 19067) +HANDLE_BAT(, 19068) +HANDLE_BAT(, 19069) +HANDLE_BAT(, 19070) +HANDLE_BAT(, 19071) +HANDLE_BAT(, 19072) +HANDLE_BAT(, 19073) +HANDLE_BAT(, 19074) +HANDLE_BAT(, 19075) +HANDLE_BAT(, 19076) +HANDLE_BAT(, 19077) +HANDLE_BAT(, 19078) +HANDLE_BAT(, 19079) +HANDLE_BAT(, 19080) +HANDLE_BAT(, 19081) +HANDLE_BAT(, 19082) +HANDLE_BAT(, 19083) +HANDLE_BAT(, 19084) +HANDLE_BAT(, 19085) +HANDLE_BAT(, 19086) +HANDLE_BAT(, 19087) +HANDLE_BAT(, 19088) +HANDLE_BAT(, 19089) +HANDLE_BAT(, 19090) +HANDLE_BAT(, 19091) +HANDLE_BAT(, 19092) +HANDLE_BAT(, 19093) +HANDLE_BAT(, 19094) +HANDLE_BAT(, 19095) +HANDLE_BAT(, 19096) +HANDLE_BAT(, 19097) +HANDLE_BAT(, 19098) +HANDLE_BAT(, 19099) +HANDLE_BAT(, 19100) +HANDLE_BAT(, 19101) +HANDLE_BAT(, 19102) +HANDLE_BAT(, 19103) +HANDLE_BAT(, 19104) +HANDLE_BAT(, 19105) +HANDLE_BAT(, 19106) +HANDLE_BAT(, 19107) +HANDLE_BAT(, 19108) +HANDLE_BAT(, 19109) +HANDLE_BAT(, 19110) +HANDLE_BAT(, 19111) +HANDLE_BAT(, 19112) +HANDLE_BAT(, 19113) +HANDLE_BAT(, 19114) +HANDLE_BAT(, 19115) +HANDLE_BAT(, 19116) +HANDLE_BAT(, 19117) +HANDLE_BAT(, 19118) +HANDLE_BAT(, 19119) +HANDLE_BAT(, 19120) +HANDLE_BAT(, 19121) +HANDLE_BAT(, 19122) +HANDLE_BAT(, 19123) +HANDLE_BAT(, 19124) +HANDLE_BAT(, 19125) +HANDLE_BAT(, 19126) +HANDLE_BAT(, 19127) +HANDLE_BAT(, 19128) +HANDLE_BAT(, 19129) +HANDLE_BAT(, 19130) +HANDLE_BAT(, 19131) +HANDLE_BAT(, 19132) +HANDLE_BAT(, 19133) +HANDLE_BAT(, 19134) +HANDLE_BAT(, 19135) +HANDLE_BAT(, 19136) +HANDLE_BAT(, 19137) +HANDLE_BAT(, 19138) +HANDLE_BAT(, 19139) +HANDLE_BAT(, 19140) +HANDLE_BAT(, 19141) +HANDLE_BAT(, 19142) +HANDLE_BAT(, 19143) +HANDLE_BAT(, 19144) +HANDLE_BAT(, 19145) +HANDLE_BAT(, 19146) +HANDLE_BAT(, 19147) +HANDLE_BAT(, 19148) +HANDLE_BAT(, 19149) +HANDLE_BAT(, 19150) +HANDLE_BAT(, 19151) +HANDLE_BAT(, 19152) +HANDLE_BAT(, 19153) +HANDLE_BAT(, 19154) +HANDLE_BAT(, 19155) +HANDLE_BAT(, 19156) +HANDLE_BAT(, 19157) +HANDLE_BAT(, 19158) +HANDLE_BAT(, 19159) +HANDLE_BAT(, 19160) +HANDLE_BAT(, 19161) +HANDLE_BAT(, 19162) +HANDLE_BAT(, 19163) +HANDLE_BAT(, 19164) +HANDLE_BAT(, 19165) +HANDLE_BAT(, 19166) +HANDLE_BAT(, 19167) +HANDLE_BAT(, 19168) +HANDLE_BAT(, 19169) +HANDLE_BAT(, 19170) +HANDLE_BAT(, 19171) +HANDLE_BAT(, 19172) +HANDLE_BAT(, 19173) +HANDLE_BAT(, 19174) +HANDLE_BAT(, 19175) +HANDLE_BAT(, 19176) +HANDLE_BAT(, 19177) +HANDLE_BAT(, 19178) +HANDLE_BAT(, 19179) +HANDLE_BAT(, 19180) +HANDLE_BAT(, 19181) +HANDLE_BAT(, 19182) +HANDLE_BAT(, 19183) +HANDLE_BAT(, 19184) +HANDLE_BAT(, 19185) +HANDLE_BAT(, 19186) +HANDLE_BAT(, 19187) +HANDLE_BAT(, 19188) +HANDLE_BAT(, 19189) +HANDLE_BAT(, 19190) +HANDLE_BAT(, 19191) +HANDLE_BAT(, 19192) +HANDLE_BAT(, 19193) +HANDLE_BAT(, 19194) +HANDLE_BAT(, 19195) +HANDLE_BAT(, 19196) +HANDLE_BAT(, 19197) +HANDLE_BAT(, 19198) +HANDLE_BAT(, 19199) +HANDLE_BAT(, 19200) +HANDLE_BAT(, 19201) +HANDLE_BAT(, 19202) +HANDLE_BAT(, 19203) +HANDLE_BAT(, 19204) +HANDLE_BAT(, 19205) +HANDLE_BAT(, 19206) +HANDLE_BAT(, 19207) +HANDLE_BAT(, 19208) +HANDLE_BAT(, 19209) +HANDLE_BAT(, 19210) +HANDLE_BAT(, 19211) +HANDLE_BAT(, 19212) +HANDLE_BAT(, 19213) +HANDLE_BAT(, 19214) +HANDLE_BAT(, 19215) +HANDLE_BAT(, 19216) +HANDLE_BAT(, 19217) +HANDLE_BAT(, 19218) +HANDLE_BAT(, 19219) +HANDLE_BAT(, 19220) +HANDLE_BAT(, 19221) +HANDLE_BAT(, 19222) +HANDLE_BAT(, 19223) +HANDLE_BAT(, 19224) +HANDLE_BAT(, 19225) +HANDLE_BAT(, 19226) +HANDLE_BAT(, 19227) +HANDLE_BAT(, 19228) +HANDLE_BAT(, 19229) +HANDLE_BAT(, 19230) +HANDLE_BAT(, 19231) +HANDLE_BAT(, 19232) +HANDLE_BAT(, 19233) +HANDLE_BAT(, 19234) +HANDLE_BAT(, 19235) +HANDLE_BAT(, 19236) +HANDLE_BAT(, 19237) +HANDLE_BAT(, 19238) +HANDLE_BAT(, 19239) +HANDLE_BAT(, 19240) +HANDLE_BAT(, 19241) +HANDLE_BAT(, 19242) +HANDLE_BAT(, 19243) +HANDLE_BAT(, 19244) +HANDLE_BAT(, 19245) +HANDLE_BAT(, 19246) +HANDLE_BAT(, 19247) +HANDLE_BAT(, 19248) +HANDLE_BAT(, 19249) +HANDLE_BAT(, 19250) +HANDLE_BAT(, 19251) +HANDLE_BAT(, 19252) +HANDLE_BAT(, 19253) +HANDLE_BAT(, 19254) +HANDLE_BAT(, 19255) +HANDLE_BAT(, 19256) +HANDLE_BAT(, 19257) +HANDLE_BAT(, 19258) +HANDLE_BAT(, 19259) +HANDLE_BAT(, 19260) +HANDLE_BAT(, 19261) +HANDLE_BAT(, 19262) +HANDLE_BAT(, 19263) +HANDLE_BAT(, 19264) +HANDLE_BAT(, 19265) +HANDLE_BAT(, 19266) +HANDLE_BAT(, 19267) +HANDLE_BAT(, 19268) +HANDLE_BAT(, 19269) +HANDLE_BAT(, 19270) +HANDLE_BAT(, 19271) +HANDLE_BAT(, 19272) +HANDLE_BAT(, 19273) +HANDLE_BAT(, 19274) +HANDLE_BAT(, 19275) +HANDLE_BAT(, 19276) +HANDLE_BAT(, 19277) +HANDLE_BAT(, 19278) +HANDLE_BAT(, 19279) +HANDLE_BAT(, 19280) +HANDLE_BAT(, 19281) +HANDLE_BAT(, 19282) +HANDLE_BAT(, 19283) +HANDLE_BAT(, 19284) +HANDLE_BAT(, 19285) +HANDLE_BAT(, 19286) +HANDLE_BAT(, 19287) +HANDLE_BAT(, 19288) +HANDLE_BAT(, 19289) +HANDLE_BAT(, 19290) +HANDLE_BAT(, 19291) +HANDLE_BAT(, 19292) +HANDLE_BAT(, 19293) +HANDLE_BAT(, 19294) +HANDLE_BAT(, 19295) +HANDLE_BAT(, 19296) +HANDLE_BAT(, 19297) +HANDLE_BAT(, 19298) +HANDLE_BAT(, 19299) +HANDLE_BAT(, 19300) +HANDLE_BAT(, 19301) +HANDLE_BAT(, 19302) +HANDLE_BAT(, 19303) +HANDLE_BAT(, 19304) +HANDLE_BAT(, 19305) +HANDLE_BAT(, 19306) +HANDLE_BAT(, 19307) +HANDLE_BAT(, 19308) +HANDLE_BAT(, 19309) +HANDLE_BAT(, 19310) +HANDLE_BAT(, 19311) +HANDLE_BAT(, 19312) +HANDLE_BAT(, 19313) +HANDLE_BAT(, 19314) +HANDLE_BAT(, 19315) +HANDLE_BAT(, 19316) +HANDLE_BAT(, 19317) +HANDLE_BAT(, 19318) +HANDLE_BAT(, 19319) +HANDLE_BAT(, 19320) +HANDLE_BAT(, 19321) +HANDLE_BAT(, 19322) +HANDLE_BAT(, 19323) +HANDLE_BAT(, 19324) +HANDLE_BAT(, 19325) +HANDLE_BAT(, 19326) +HANDLE_BAT(, 19327) +HANDLE_BAT(, 19328) +HANDLE_BAT(, 19329) +HANDLE_BAT(, 19330) +HANDLE_BAT(, 19331) +HANDLE_BAT(, 19332) +HANDLE_BAT(, 19333) +HANDLE_BAT(, 19334) +HANDLE_BAT(, 19335) +HANDLE_BAT(, 19336) +HANDLE_BAT(, 19337) +HANDLE_BAT(, 19338) +HANDLE_BAT(, 19339) +HANDLE_BAT(, 19340) +HANDLE_BAT(, 19341) +HANDLE_BAT(, 19342) +HANDLE_BAT(, 19343) +HANDLE_BAT(, 19344) +HANDLE_BAT(, 19345) +HANDLE_BAT(, 19346) +HANDLE_BAT(, 19347) +HANDLE_BAT(, 19348) +HANDLE_BAT(, 19349) +HANDLE_BAT(, 19350) +HANDLE_BAT(, 19351) +HANDLE_BAT(, 19352) +HANDLE_BAT(, 19353) +HANDLE_BAT(, 19354) +HANDLE_BAT(, 19355) +HANDLE_BAT(, 19356) +HANDLE_BAT(, 19357) +HANDLE_BAT(, 19358) +HANDLE_BAT(, 19359) +HANDLE_BAT(, 19360) +HANDLE_BAT(, 19361) +HANDLE_BAT(, 19362) +HANDLE_BAT(, 19363) +HANDLE_BAT(, 19364) +HANDLE_BAT(, 19365) +HANDLE_BAT(, 19366) +HANDLE_BAT(, 19367) +HANDLE_BAT(, 19368) +HANDLE_BAT(, 19369) +HANDLE_BAT(, 19370) +HANDLE_BAT(, 19371) +HANDLE_BAT(, 19372) +HANDLE_BAT(, 19373) +HANDLE_BAT(, 19374) +HANDLE_BAT(, 19375) +HANDLE_BAT(, 19376) +HANDLE_BAT(, 19377) +HANDLE_BAT(, 19378) +HANDLE_BAT(, 19379) +HANDLE_BAT(, 19380) +HANDLE_BAT(, 19381) +HANDLE_BAT(, 19382) +HANDLE_BAT(, 19383) +HANDLE_BAT(, 19384) +HANDLE_BAT(, 19385) +HANDLE_BAT(, 19386) +HANDLE_BAT(, 19387) +HANDLE_BAT(, 19388) +HANDLE_BAT(, 19389) +HANDLE_BAT(, 19390) +HANDLE_BAT(, 19391) +HANDLE_BAT(, 19392) +HANDLE_BAT(, 19393) +HANDLE_BAT(, 19394) +HANDLE_BAT(, 19395) +HANDLE_BAT(, 19396) +HANDLE_BAT(, 19397) +HANDLE_BAT(, 19398) +HANDLE_BAT(, 19399) +HANDLE_BAT(, 19400) +HANDLE_BAT(, 19401) +HANDLE_BAT(, 19402) +HANDLE_BAT(, 19403) +HANDLE_BAT(, 19404) +HANDLE_BAT(, 19405) +HANDLE_BAT(, 19406) +HANDLE_BAT(, 19407) +HANDLE_BAT(, 19408) +HANDLE_BAT(, 19409) +HANDLE_BAT(, 19410) +HANDLE_BAT(, 19411) +HANDLE_BAT(, 19412) +HANDLE_BAT(, 19413) +HANDLE_BAT(, 19414) +HANDLE_BAT(, 19415) +HANDLE_BAT(, 19416) +HANDLE_BAT(, 19417) +HANDLE_BAT(, 19418) +HANDLE_BAT(, 19419) +HANDLE_BAT(, 19420) +HANDLE_BAT(, 19421) +HANDLE_BAT(, 19422) +HANDLE_BAT(, 19423) +HANDLE_BAT(, 19424) +HANDLE_BAT(, 19425) +HANDLE_BAT(, 19426) +HANDLE_BAT(, 19427) +HANDLE_BAT(, 19428) +HANDLE_BAT(, 19429) +HANDLE_BAT(, 19430) +HANDLE_BAT(, 19431) +HANDLE_BAT(, 19432) +HANDLE_BAT(, 19433) +HANDLE_BAT(, 19434) +HANDLE_BAT(, 19435) +HANDLE_BAT(, 19436) +HANDLE_BAT(, 19437) +HANDLE_BAT(, 19438) +HANDLE_BAT(, 19439) +HANDLE_BAT(, 19440) +HANDLE_BAT(, 19441) +HANDLE_BAT(, 19442) +HANDLE_BAT(, 19443) +HANDLE_BAT(, 19444) +HANDLE_BAT(, 19445) +HANDLE_BAT(, 19446) +HANDLE_BAT(, 19447) +HANDLE_BAT(, 19448) +HANDLE_BAT(, 19449) +HANDLE_BAT(, 19450) +HANDLE_BAT(, 19451) +HANDLE_BAT(, 19452) +HANDLE_BAT(, 19453) +HANDLE_BAT(, 19454) +HANDLE_BAT(, 19455) +HANDLE_BAT(, 19456) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 18433) +HANDLE_BAT(APINT_TYPE_PREFIX, 18434) +HANDLE_BAT(APINT_TYPE_PREFIX, 18435) +HANDLE_BAT(APINT_TYPE_PREFIX, 18436) +HANDLE_BAT(APINT_TYPE_PREFIX, 18437) +HANDLE_BAT(APINT_TYPE_PREFIX, 18438) +HANDLE_BAT(APINT_TYPE_PREFIX, 18439) +HANDLE_BAT(APINT_TYPE_PREFIX, 18440) +HANDLE_BAT(APINT_TYPE_PREFIX, 18441) +HANDLE_BAT(APINT_TYPE_PREFIX, 18442) +HANDLE_BAT(APINT_TYPE_PREFIX, 18443) +HANDLE_BAT(APINT_TYPE_PREFIX, 18444) +HANDLE_BAT(APINT_TYPE_PREFIX, 18445) +HANDLE_BAT(APINT_TYPE_PREFIX, 18446) +HANDLE_BAT(APINT_TYPE_PREFIX, 18447) +HANDLE_BAT(APINT_TYPE_PREFIX, 18448) +HANDLE_BAT(APINT_TYPE_PREFIX, 18449) +HANDLE_BAT(APINT_TYPE_PREFIX, 18450) +HANDLE_BAT(APINT_TYPE_PREFIX, 18451) +HANDLE_BAT(APINT_TYPE_PREFIX, 18452) +HANDLE_BAT(APINT_TYPE_PREFIX, 18453) +HANDLE_BAT(APINT_TYPE_PREFIX, 18454) +HANDLE_BAT(APINT_TYPE_PREFIX, 18455) +HANDLE_BAT(APINT_TYPE_PREFIX, 18456) +HANDLE_BAT(APINT_TYPE_PREFIX, 18457) +HANDLE_BAT(APINT_TYPE_PREFIX, 18458) +HANDLE_BAT(APINT_TYPE_PREFIX, 18459) +HANDLE_BAT(APINT_TYPE_PREFIX, 18460) +HANDLE_BAT(APINT_TYPE_PREFIX, 18461) +HANDLE_BAT(APINT_TYPE_PREFIX, 18462) +HANDLE_BAT(APINT_TYPE_PREFIX, 18463) +HANDLE_BAT(APINT_TYPE_PREFIX, 18464) +HANDLE_BAT(APINT_TYPE_PREFIX, 18465) +HANDLE_BAT(APINT_TYPE_PREFIX, 18466) +HANDLE_BAT(APINT_TYPE_PREFIX, 18467) +HANDLE_BAT(APINT_TYPE_PREFIX, 18468) +HANDLE_BAT(APINT_TYPE_PREFIX, 18469) +HANDLE_BAT(APINT_TYPE_PREFIX, 18470) +HANDLE_BAT(APINT_TYPE_PREFIX, 18471) +HANDLE_BAT(APINT_TYPE_PREFIX, 18472) +HANDLE_BAT(APINT_TYPE_PREFIX, 18473) +HANDLE_BAT(APINT_TYPE_PREFIX, 18474) +HANDLE_BAT(APINT_TYPE_PREFIX, 18475) +HANDLE_BAT(APINT_TYPE_PREFIX, 18476) +HANDLE_BAT(APINT_TYPE_PREFIX, 18477) +HANDLE_BAT(APINT_TYPE_PREFIX, 18478) +HANDLE_BAT(APINT_TYPE_PREFIX, 18479) +HANDLE_BAT(APINT_TYPE_PREFIX, 18480) +HANDLE_BAT(APINT_TYPE_PREFIX, 18481) +HANDLE_BAT(APINT_TYPE_PREFIX, 18482) +HANDLE_BAT(APINT_TYPE_PREFIX, 18483) +HANDLE_BAT(APINT_TYPE_PREFIX, 18484) +HANDLE_BAT(APINT_TYPE_PREFIX, 18485) +HANDLE_BAT(APINT_TYPE_PREFIX, 18486) +HANDLE_BAT(APINT_TYPE_PREFIX, 18487) +HANDLE_BAT(APINT_TYPE_PREFIX, 18488) +HANDLE_BAT(APINT_TYPE_PREFIX, 18489) +HANDLE_BAT(APINT_TYPE_PREFIX, 18490) +HANDLE_BAT(APINT_TYPE_PREFIX, 18491) +HANDLE_BAT(APINT_TYPE_PREFIX, 18492) +HANDLE_BAT(APINT_TYPE_PREFIX, 18493) +HANDLE_BAT(APINT_TYPE_PREFIX, 18494) +HANDLE_BAT(APINT_TYPE_PREFIX, 18495) +HANDLE_BAT(APINT_TYPE_PREFIX, 18496) +HANDLE_BAT(APINT_TYPE_PREFIX, 18497) +HANDLE_BAT(APINT_TYPE_PREFIX, 18498) +HANDLE_BAT(APINT_TYPE_PREFIX, 18499) +HANDLE_BAT(APINT_TYPE_PREFIX, 18500) +HANDLE_BAT(APINT_TYPE_PREFIX, 18501) +HANDLE_BAT(APINT_TYPE_PREFIX, 18502) +HANDLE_BAT(APINT_TYPE_PREFIX, 18503) +HANDLE_BAT(APINT_TYPE_PREFIX, 18504) +HANDLE_BAT(APINT_TYPE_PREFIX, 18505) +HANDLE_BAT(APINT_TYPE_PREFIX, 18506) +HANDLE_BAT(APINT_TYPE_PREFIX, 18507) +HANDLE_BAT(APINT_TYPE_PREFIX, 18508) +HANDLE_BAT(APINT_TYPE_PREFIX, 18509) +HANDLE_BAT(APINT_TYPE_PREFIX, 18510) +HANDLE_BAT(APINT_TYPE_PREFIX, 18511) +HANDLE_BAT(APINT_TYPE_PREFIX, 18512) +HANDLE_BAT(APINT_TYPE_PREFIX, 18513) +HANDLE_BAT(APINT_TYPE_PREFIX, 18514) +HANDLE_BAT(APINT_TYPE_PREFIX, 18515) +HANDLE_BAT(APINT_TYPE_PREFIX, 18516) +HANDLE_BAT(APINT_TYPE_PREFIX, 18517) +HANDLE_BAT(APINT_TYPE_PREFIX, 18518) +HANDLE_BAT(APINT_TYPE_PREFIX, 18519) +HANDLE_BAT(APINT_TYPE_PREFIX, 18520) +HANDLE_BAT(APINT_TYPE_PREFIX, 18521) +HANDLE_BAT(APINT_TYPE_PREFIX, 18522) +HANDLE_BAT(APINT_TYPE_PREFIX, 18523) +HANDLE_BAT(APINT_TYPE_PREFIX, 18524) +HANDLE_BAT(APINT_TYPE_PREFIX, 18525) +HANDLE_BAT(APINT_TYPE_PREFIX, 18526) +HANDLE_BAT(APINT_TYPE_PREFIX, 18527) +HANDLE_BAT(APINT_TYPE_PREFIX, 18528) +HANDLE_BAT(APINT_TYPE_PREFIX, 18529) +HANDLE_BAT(APINT_TYPE_PREFIX, 18530) +HANDLE_BAT(APINT_TYPE_PREFIX, 18531) +HANDLE_BAT(APINT_TYPE_PREFIX, 18532) +HANDLE_BAT(APINT_TYPE_PREFIX, 18533) +HANDLE_BAT(APINT_TYPE_PREFIX, 18534) +HANDLE_BAT(APINT_TYPE_PREFIX, 18535) +HANDLE_BAT(APINT_TYPE_PREFIX, 18536) +HANDLE_BAT(APINT_TYPE_PREFIX, 18537) +HANDLE_BAT(APINT_TYPE_PREFIX, 18538) +HANDLE_BAT(APINT_TYPE_PREFIX, 18539) +HANDLE_BAT(APINT_TYPE_PREFIX, 18540) +HANDLE_BAT(APINT_TYPE_PREFIX, 18541) +HANDLE_BAT(APINT_TYPE_PREFIX, 18542) +HANDLE_BAT(APINT_TYPE_PREFIX, 18543) +HANDLE_BAT(APINT_TYPE_PREFIX, 18544) +HANDLE_BAT(APINT_TYPE_PREFIX, 18545) +HANDLE_BAT(APINT_TYPE_PREFIX, 18546) +HANDLE_BAT(APINT_TYPE_PREFIX, 18547) +HANDLE_BAT(APINT_TYPE_PREFIX, 18548) +HANDLE_BAT(APINT_TYPE_PREFIX, 18549) +HANDLE_BAT(APINT_TYPE_PREFIX, 18550) +HANDLE_BAT(APINT_TYPE_PREFIX, 18551) +HANDLE_BAT(APINT_TYPE_PREFIX, 18552) +HANDLE_BAT(APINT_TYPE_PREFIX, 18553) +HANDLE_BAT(APINT_TYPE_PREFIX, 18554) +HANDLE_BAT(APINT_TYPE_PREFIX, 18555) +HANDLE_BAT(APINT_TYPE_PREFIX, 18556) +HANDLE_BAT(APINT_TYPE_PREFIX, 18557) +HANDLE_BAT(APINT_TYPE_PREFIX, 18558) +HANDLE_BAT(APINT_TYPE_PREFIX, 18559) +HANDLE_BAT(APINT_TYPE_PREFIX, 18560) +HANDLE_BAT(APINT_TYPE_PREFIX, 18561) +HANDLE_BAT(APINT_TYPE_PREFIX, 18562) +HANDLE_BAT(APINT_TYPE_PREFIX, 18563) +HANDLE_BAT(APINT_TYPE_PREFIX, 18564) +HANDLE_BAT(APINT_TYPE_PREFIX, 18565) +HANDLE_BAT(APINT_TYPE_PREFIX, 18566) +HANDLE_BAT(APINT_TYPE_PREFIX, 18567) +HANDLE_BAT(APINT_TYPE_PREFIX, 18568) +HANDLE_BAT(APINT_TYPE_PREFIX, 18569) +HANDLE_BAT(APINT_TYPE_PREFIX, 18570) +HANDLE_BAT(APINT_TYPE_PREFIX, 18571) +HANDLE_BAT(APINT_TYPE_PREFIX, 18572) +HANDLE_BAT(APINT_TYPE_PREFIX, 18573) +HANDLE_BAT(APINT_TYPE_PREFIX, 18574) +HANDLE_BAT(APINT_TYPE_PREFIX, 18575) +HANDLE_BAT(APINT_TYPE_PREFIX, 18576) +HANDLE_BAT(APINT_TYPE_PREFIX, 18577) +HANDLE_BAT(APINT_TYPE_PREFIX, 18578) +HANDLE_BAT(APINT_TYPE_PREFIX, 18579) +HANDLE_BAT(APINT_TYPE_PREFIX, 18580) +HANDLE_BAT(APINT_TYPE_PREFIX, 18581) +HANDLE_BAT(APINT_TYPE_PREFIX, 18582) +HANDLE_BAT(APINT_TYPE_PREFIX, 18583) +HANDLE_BAT(APINT_TYPE_PREFIX, 18584) +HANDLE_BAT(APINT_TYPE_PREFIX, 18585) +HANDLE_BAT(APINT_TYPE_PREFIX, 18586) +HANDLE_BAT(APINT_TYPE_PREFIX, 18587) +HANDLE_BAT(APINT_TYPE_PREFIX, 18588) +HANDLE_BAT(APINT_TYPE_PREFIX, 18589) +HANDLE_BAT(APINT_TYPE_PREFIX, 18590) +HANDLE_BAT(APINT_TYPE_PREFIX, 18591) +HANDLE_BAT(APINT_TYPE_PREFIX, 18592) +HANDLE_BAT(APINT_TYPE_PREFIX, 18593) +HANDLE_BAT(APINT_TYPE_PREFIX, 18594) +HANDLE_BAT(APINT_TYPE_PREFIX, 18595) +HANDLE_BAT(APINT_TYPE_PREFIX, 18596) +HANDLE_BAT(APINT_TYPE_PREFIX, 18597) +HANDLE_BAT(APINT_TYPE_PREFIX, 18598) +HANDLE_BAT(APINT_TYPE_PREFIX, 18599) +HANDLE_BAT(APINT_TYPE_PREFIX, 18600) +HANDLE_BAT(APINT_TYPE_PREFIX, 18601) +HANDLE_BAT(APINT_TYPE_PREFIX, 18602) +HANDLE_BAT(APINT_TYPE_PREFIX, 18603) +HANDLE_BAT(APINT_TYPE_PREFIX, 18604) +HANDLE_BAT(APINT_TYPE_PREFIX, 18605) +HANDLE_BAT(APINT_TYPE_PREFIX, 18606) +HANDLE_BAT(APINT_TYPE_PREFIX, 18607) +HANDLE_BAT(APINT_TYPE_PREFIX, 18608) +HANDLE_BAT(APINT_TYPE_PREFIX, 18609) +HANDLE_BAT(APINT_TYPE_PREFIX, 18610) +HANDLE_BAT(APINT_TYPE_PREFIX, 18611) +HANDLE_BAT(APINT_TYPE_PREFIX, 18612) +HANDLE_BAT(APINT_TYPE_PREFIX, 18613) +HANDLE_BAT(APINT_TYPE_PREFIX, 18614) +HANDLE_BAT(APINT_TYPE_PREFIX, 18615) +HANDLE_BAT(APINT_TYPE_PREFIX, 18616) +HANDLE_BAT(APINT_TYPE_PREFIX, 18617) +HANDLE_BAT(APINT_TYPE_PREFIX, 18618) +HANDLE_BAT(APINT_TYPE_PREFIX, 18619) +HANDLE_BAT(APINT_TYPE_PREFIX, 18620) +HANDLE_BAT(APINT_TYPE_PREFIX, 18621) +HANDLE_BAT(APINT_TYPE_PREFIX, 18622) +HANDLE_BAT(APINT_TYPE_PREFIX, 18623) +HANDLE_BAT(APINT_TYPE_PREFIX, 18624) +HANDLE_BAT(APINT_TYPE_PREFIX, 18625) +HANDLE_BAT(APINT_TYPE_PREFIX, 18626) +HANDLE_BAT(APINT_TYPE_PREFIX, 18627) +HANDLE_BAT(APINT_TYPE_PREFIX, 18628) +HANDLE_BAT(APINT_TYPE_PREFIX, 18629) +HANDLE_BAT(APINT_TYPE_PREFIX, 18630) +HANDLE_BAT(APINT_TYPE_PREFIX, 18631) +HANDLE_BAT(APINT_TYPE_PREFIX, 18632) +HANDLE_BAT(APINT_TYPE_PREFIX, 18633) +HANDLE_BAT(APINT_TYPE_PREFIX, 18634) +HANDLE_BAT(APINT_TYPE_PREFIX, 18635) +HANDLE_BAT(APINT_TYPE_PREFIX, 18636) +HANDLE_BAT(APINT_TYPE_PREFIX, 18637) +HANDLE_BAT(APINT_TYPE_PREFIX, 18638) +HANDLE_BAT(APINT_TYPE_PREFIX, 18639) +HANDLE_BAT(APINT_TYPE_PREFIX, 18640) +HANDLE_BAT(APINT_TYPE_PREFIX, 18641) +HANDLE_BAT(APINT_TYPE_PREFIX, 18642) +HANDLE_BAT(APINT_TYPE_PREFIX, 18643) +HANDLE_BAT(APINT_TYPE_PREFIX, 18644) +HANDLE_BAT(APINT_TYPE_PREFIX, 18645) +HANDLE_BAT(APINT_TYPE_PREFIX, 18646) +HANDLE_BAT(APINT_TYPE_PREFIX, 18647) +HANDLE_BAT(APINT_TYPE_PREFIX, 18648) +HANDLE_BAT(APINT_TYPE_PREFIX, 18649) +HANDLE_BAT(APINT_TYPE_PREFIX, 18650) +HANDLE_BAT(APINT_TYPE_PREFIX, 18651) +HANDLE_BAT(APINT_TYPE_PREFIX, 18652) +HANDLE_BAT(APINT_TYPE_PREFIX, 18653) +HANDLE_BAT(APINT_TYPE_PREFIX, 18654) +HANDLE_BAT(APINT_TYPE_PREFIX, 18655) +HANDLE_BAT(APINT_TYPE_PREFIX, 18656) +HANDLE_BAT(APINT_TYPE_PREFIX, 18657) +HANDLE_BAT(APINT_TYPE_PREFIX, 18658) +HANDLE_BAT(APINT_TYPE_PREFIX, 18659) +HANDLE_BAT(APINT_TYPE_PREFIX, 18660) +HANDLE_BAT(APINT_TYPE_PREFIX, 18661) +HANDLE_BAT(APINT_TYPE_PREFIX, 18662) +HANDLE_BAT(APINT_TYPE_PREFIX, 18663) +HANDLE_BAT(APINT_TYPE_PREFIX, 18664) +HANDLE_BAT(APINT_TYPE_PREFIX, 18665) +HANDLE_BAT(APINT_TYPE_PREFIX, 18666) +HANDLE_BAT(APINT_TYPE_PREFIX, 18667) +HANDLE_BAT(APINT_TYPE_PREFIX, 18668) +HANDLE_BAT(APINT_TYPE_PREFIX, 18669) +HANDLE_BAT(APINT_TYPE_PREFIX, 18670) +HANDLE_BAT(APINT_TYPE_PREFIX, 18671) +HANDLE_BAT(APINT_TYPE_PREFIX, 18672) +HANDLE_BAT(APINT_TYPE_PREFIX, 18673) +HANDLE_BAT(APINT_TYPE_PREFIX, 18674) +HANDLE_BAT(APINT_TYPE_PREFIX, 18675) +HANDLE_BAT(APINT_TYPE_PREFIX, 18676) +HANDLE_BAT(APINT_TYPE_PREFIX, 18677) +HANDLE_BAT(APINT_TYPE_PREFIX, 18678) +HANDLE_BAT(APINT_TYPE_PREFIX, 18679) +HANDLE_BAT(APINT_TYPE_PREFIX, 18680) +HANDLE_BAT(APINT_TYPE_PREFIX, 18681) +HANDLE_BAT(APINT_TYPE_PREFIX, 18682) +HANDLE_BAT(APINT_TYPE_PREFIX, 18683) +HANDLE_BAT(APINT_TYPE_PREFIX, 18684) +HANDLE_BAT(APINT_TYPE_PREFIX, 18685) +HANDLE_BAT(APINT_TYPE_PREFIX, 18686) +HANDLE_BAT(APINT_TYPE_PREFIX, 18687) +HANDLE_BAT(APINT_TYPE_PREFIX, 18688) +HANDLE_BAT(APINT_TYPE_PREFIX, 18689) +HANDLE_BAT(APINT_TYPE_PREFIX, 18690) +HANDLE_BAT(APINT_TYPE_PREFIX, 18691) +HANDLE_BAT(APINT_TYPE_PREFIX, 18692) +HANDLE_BAT(APINT_TYPE_PREFIX, 18693) +HANDLE_BAT(APINT_TYPE_PREFIX, 18694) +HANDLE_BAT(APINT_TYPE_PREFIX, 18695) +HANDLE_BAT(APINT_TYPE_PREFIX, 18696) +HANDLE_BAT(APINT_TYPE_PREFIX, 18697) +HANDLE_BAT(APINT_TYPE_PREFIX, 18698) +HANDLE_BAT(APINT_TYPE_PREFIX, 18699) +HANDLE_BAT(APINT_TYPE_PREFIX, 18700) +HANDLE_BAT(APINT_TYPE_PREFIX, 18701) +HANDLE_BAT(APINT_TYPE_PREFIX, 18702) +HANDLE_BAT(APINT_TYPE_PREFIX, 18703) +HANDLE_BAT(APINT_TYPE_PREFIX, 18704) +HANDLE_BAT(APINT_TYPE_PREFIX, 18705) +HANDLE_BAT(APINT_TYPE_PREFIX, 18706) +HANDLE_BAT(APINT_TYPE_PREFIX, 18707) +HANDLE_BAT(APINT_TYPE_PREFIX, 18708) +HANDLE_BAT(APINT_TYPE_PREFIX, 18709) +HANDLE_BAT(APINT_TYPE_PREFIX, 18710) +HANDLE_BAT(APINT_TYPE_PREFIX, 18711) +HANDLE_BAT(APINT_TYPE_PREFIX, 18712) +HANDLE_BAT(APINT_TYPE_PREFIX, 18713) +HANDLE_BAT(APINT_TYPE_PREFIX, 18714) +HANDLE_BAT(APINT_TYPE_PREFIX, 18715) +HANDLE_BAT(APINT_TYPE_PREFIX, 18716) +HANDLE_BAT(APINT_TYPE_PREFIX, 18717) +HANDLE_BAT(APINT_TYPE_PREFIX, 18718) +HANDLE_BAT(APINT_TYPE_PREFIX, 18719) +HANDLE_BAT(APINT_TYPE_PREFIX, 18720) +HANDLE_BAT(APINT_TYPE_PREFIX, 18721) +HANDLE_BAT(APINT_TYPE_PREFIX, 18722) +HANDLE_BAT(APINT_TYPE_PREFIX, 18723) +HANDLE_BAT(APINT_TYPE_PREFIX, 18724) +HANDLE_BAT(APINT_TYPE_PREFIX, 18725) +HANDLE_BAT(APINT_TYPE_PREFIX, 18726) +HANDLE_BAT(APINT_TYPE_PREFIX, 18727) +HANDLE_BAT(APINT_TYPE_PREFIX, 18728) +HANDLE_BAT(APINT_TYPE_PREFIX, 18729) +HANDLE_BAT(APINT_TYPE_PREFIX, 18730) +HANDLE_BAT(APINT_TYPE_PREFIX, 18731) +HANDLE_BAT(APINT_TYPE_PREFIX, 18732) +HANDLE_BAT(APINT_TYPE_PREFIX, 18733) +HANDLE_BAT(APINT_TYPE_PREFIX, 18734) +HANDLE_BAT(APINT_TYPE_PREFIX, 18735) +HANDLE_BAT(APINT_TYPE_PREFIX, 18736) +HANDLE_BAT(APINT_TYPE_PREFIX, 18737) +HANDLE_BAT(APINT_TYPE_PREFIX, 18738) +HANDLE_BAT(APINT_TYPE_PREFIX, 18739) +HANDLE_BAT(APINT_TYPE_PREFIX, 18740) +HANDLE_BAT(APINT_TYPE_PREFIX, 18741) +HANDLE_BAT(APINT_TYPE_PREFIX, 18742) +HANDLE_BAT(APINT_TYPE_PREFIX, 18743) +HANDLE_BAT(APINT_TYPE_PREFIX, 18744) +HANDLE_BAT(APINT_TYPE_PREFIX, 18745) +HANDLE_BAT(APINT_TYPE_PREFIX, 18746) +HANDLE_BAT(APINT_TYPE_PREFIX, 18747) +HANDLE_BAT(APINT_TYPE_PREFIX, 18748) +HANDLE_BAT(APINT_TYPE_PREFIX, 18749) +HANDLE_BAT(APINT_TYPE_PREFIX, 18750) +HANDLE_BAT(APINT_TYPE_PREFIX, 18751) +HANDLE_BAT(APINT_TYPE_PREFIX, 18752) +HANDLE_BAT(APINT_TYPE_PREFIX, 18753) +HANDLE_BAT(APINT_TYPE_PREFIX, 18754) +HANDLE_BAT(APINT_TYPE_PREFIX, 18755) +HANDLE_BAT(APINT_TYPE_PREFIX, 18756) +HANDLE_BAT(APINT_TYPE_PREFIX, 18757) +HANDLE_BAT(APINT_TYPE_PREFIX, 18758) +HANDLE_BAT(APINT_TYPE_PREFIX, 18759) +HANDLE_BAT(APINT_TYPE_PREFIX, 18760) +HANDLE_BAT(APINT_TYPE_PREFIX, 18761) +HANDLE_BAT(APINT_TYPE_PREFIX, 18762) +HANDLE_BAT(APINT_TYPE_PREFIX, 18763) +HANDLE_BAT(APINT_TYPE_PREFIX, 18764) +HANDLE_BAT(APINT_TYPE_PREFIX, 18765) +HANDLE_BAT(APINT_TYPE_PREFIX, 18766) +HANDLE_BAT(APINT_TYPE_PREFIX, 18767) +HANDLE_BAT(APINT_TYPE_PREFIX, 18768) +HANDLE_BAT(APINT_TYPE_PREFIX, 18769) +HANDLE_BAT(APINT_TYPE_PREFIX, 18770) +HANDLE_BAT(APINT_TYPE_PREFIX, 18771) +HANDLE_BAT(APINT_TYPE_PREFIX, 18772) +HANDLE_BAT(APINT_TYPE_PREFIX, 18773) +HANDLE_BAT(APINT_TYPE_PREFIX, 18774) +HANDLE_BAT(APINT_TYPE_PREFIX, 18775) +HANDLE_BAT(APINT_TYPE_PREFIX, 18776) +HANDLE_BAT(APINT_TYPE_PREFIX, 18777) +HANDLE_BAT(APINT_TYPE_PREFIX, 18778) +HANDLE_BAT(APINT_TYPE_PREFIX, 18779) +HANDLE_BAT(APINT_TYPE_PREFIX, 18780) +HANDLE_BAT(APINT_TYPE_PREFIX, 18781) +HANDLE_BAT(APINT_TYPE_PREFIX, 18782) +HANDLE_BAT(APINT_TYPE_PREFIX, 18783) +HANDLE_BAT(APINT_TYPE_PREFIX, 18784) +HANDLE_BAT(APINT_TYPE_PREFIX, 18785) +HANDLE_BAT(APINT_TYPE_PREFIX, 18786) +HANDLE_BAT(APINT_TYPE_PREFIX, 18787) +HANDLE_BAT(APINT_TYPE_PREFIX, 18788) +HANDLE_BAT(APINT_TYPE_PREFIX, 18789) +HANDLE_BAT(APINT_TYPE_PREFIX, 18790) +HANDLE_BAT(APINT_TYPE_PREFIX, 18791) +HANDLE_BAT(APINT_TYPE_PREFIX, 18792) +HANDLE_BAT(APINT_TYPE_PREFIX, 18793) +HANDLE_BAT(APINT_TYPE_PREFIX, 18794) +HANDLE_BAT(APINT_TYPE_PREFIX, 18795) +HANDLE_BAT(APINT_TYPE_PREFIX, 18796) +HANDLE_BAT(APINT_TYPE_PREFIX, 18797) +HANDLE_BAT(APINT_TYPE_PREFIX, 18798) +HANDLE_BAT(APINT_TYPE_PREFIX, 18799) +HANDLE_BAT(APINT_TYPE_PREFIX, 18800) +HANDLE_BAT(APINT_TYPE_PREFIX, 18801) +HANDLE_BAT(APINT_TYPE_PREFIX, 18802) +HANDLE_BAT(APINT_TYPE_PREFIX, 18803) +HANDLE_BAT(APINT_TYPE_PREFIX, 18804) +HANDLE_BAT(APINT_TYPE_PREFIX, 18805) +HANDLE_BAT(APINT_TYPE_PREFIX, 18806) +HANDLE_BAT(APINT_TYPE_PREFIX, 18807) +HANDLE_BAT(APINT_TYPE_PREFIX, 18808) +HANDLE_BAT(APINT_TYPE_PREFIX, 18809) +HANDLE_BAT(APINT_TYPE_PREFIX, 18810) +HANDLE_BAT(APINT_TYPE_PREFIX, 18811) +HANDLE_BAT(APINT_TYPE_PREFIX, 18812) +HANDLE_BAT(APINT_TYPE_PREFIX, 18813) +HANDLE_BAT(APINT_TYPE_PREFIX, 18814) +HANDLE_BAT(APINT_TYPE_PREFIX, 18815) +HANDLE_BAT(APINT_TYPE_PREFIX, 18816) +HANDLE_BAT(APINT_TYPE_PREFIX, 18817) +HANDLE_BAT(APINT_TYPE_PREFIX, 18818) +HANDLE_BAT(APINT_TYPE_PREFIX, 18819) +HANDLE_BAT(APINT_TYPE_PREFIX, 18820) +HANDLE_BAT(APINT_TYPE_PREFIX, 18821) +HANDLE_BAT(APINT_TYPE_PREFIX, 18822) +HANDLE_BAT(APINT_TYPE_PREFIX, 18823) +HANDLE_BAT(APINT_TYPE_PREFIX, 18824) +HANDLE_BAT(APINT_TYPE_PREFIX, 18825) +HANDLE_BAT(APINT_TYPE_PREFIX, 18826) +HANDLE_BAT(APINT_TYPE_PREFIX, 18827) +HANDLE_BAT(APINT_TYPE_PREFIX, 18828) +HANDLE_BAT(APINT_TYPE_PREFIX, 18829) +HANDLE_BAT(APINT_TYPE_PREFIX, 18830) +HANDLE_BAT(APINT_TYPE_PREFIX, 18831) +HANDLE_BAT(APINT_TYPE_PREFIX, 18832) +HANDLE_BAT(APINT_TYPE_PREFIX, 18833) +HANDLE_BAT(APINT_TYPE_PREFIX, 18834) +HANDLE_BAT(APINT_TYPE_PREFIX, 18835) +HANDLE_BAT(APINT_TYPE_PREFIX, 18836) +HANDLE_BAT(APINT_TYPE_PREFIX, 18837) +HANDLE_BAT(APINT_TYPE_PREFIX, 18838) +HANDLE_BAT(APINT_TYPE_PREFIX, 18839) +HANDLE_BAT(APINT_TYPE_PREFIX, 18840) +HANDLE_BAT(APINT_TYPE_PREFIX, 18841) +HANDLE_BAT(APINT_TYPE_PREFIX, 18842) +HANDLE_BAT(APINT_TYPE_PREFIX, 18843) +HANDLE_BAT(APINT_TYPE_PREFIX, 18844) +HANDLE_BAT(APINT_TYPE_PREFIX, 18845) +HANDLE_BAT(APINT_TYPE_PREFIX, 18846) +HANDLE_BAT(APINT_TYPE_PREFIX, 18847) +HANDLE_BAT(APINT_TYPE_PREFIX, 18848) +HANDLE_BAT(APINT_TYPE_PREFIX, 18849) +HANDLE_BAT(APINT_TYPE_PREFIX, 18850) +HANDLE_BAT(APINT_TYPE_PREFIX, 18851) +HANDLE_BAT(APINT_TYPE_PREFIX, 18852) +HANDLE_BAT(APINT_TYPE_PREFIX, 18853) +HANDLE_BAT(APINT_TYPE_PREFIX, 18854) +HANDLE_BAT(APINT_TYPE_PREFIX, 18855) +HANDLE_BAT(APINT_TYPE_PREFIX, 18856) +HANDLE_BAT(APINT_TYPE_PREFIX, 18857) +HANDLE_BAT(APINT_TYPE_PREFIX, 18858) +HANDLE_BAT(APINT_TYPE_PREFIX, 18859) +HANDLE_BAT(APINT_TYPE_PREFIX, 18860) +HANDLE_BAT(APINT_TYPE_PREFIX, 18861) +HANDLE_BAT(APINT_TYPE_PREFIX, 18862) +HANDLE_BAT(APINT_TYPE_PREFIX, 18863) +HANDLE_BAT(APINT_TYPE_PREFIX, 18864) +HANDLE_BAT(APINT_TYPE_PREFIX, 18865) +HANDLE_BAT(APINT_TYPE_PREFIX, 18866) +HANDLE_BAT(APINT_TYPE_PREFIX, 18867) +HANDLE_BAT(APINT_TYPE_PREFIX, 18868) +HANDLE_BAT(APINT_TYPE_PREFIX, 18869) +HANDLE_BAT(APINT_TYPE_PREFIX, 18870) +HANDLE_BAT(APINT_TYPE_PREFIX, 18871) +HANDLE_BAT(APINT_TYPE_PREFIX, 18872) +HANDLE_BAT(APINT_TYPE_PREFIX, 18873) +HANDLE_BAT(APINT_TYPE_PREFIX, 18874) +HANDLE_BAT(APINT_TYPE_PREFIX, 18875) +HANDLE_BAT(APINT_TYPE_PREFIX, 18876) +HANDLE_BAT(APINT_TYPE_PREFIX, 18877) +HANDLE_BAT(APINT_TYPE_PREFIX, 18878) +HANDLE_BAT(APINT_TYPE_PREFIX, 18879) +HANDLE_BAT(APINT_TYPE_PREFIX, 18880) +HANDLE_BAT(APINT_TYPE_PREFIX, 18881) +HANDLE_BAT(APINT_TYPE_PREFIX, 18882) +HANDLE_BAT(APINT_TYPE_PREFIX, 18883) +HANDLE_BAT(APINT_TYPE_PREFIX, 18884) +HANDLE_BAT(APINT_TYPE_PREFIX, 18885) +HANDLE_BAT(APINT_TYPE_PREFIX, 18886) +HANDLE_BAT(APINT_TYPE_PREFIX, 18887) +HANDLE_BAT(APINT_TYPE_PREFIX, 18888) +HANDLE_BAT(APINT_TYPE_PREFIX, 18889) +HANDLE_BAT(APINT_TYPE_PREFIX, 18890) +HANDLE_BAT(APINT_TYPE_PREFIX, 18891) +HANDLE_BAT(APINT_TYPE_PREFIX, 18892) +HANDLE_BAT(APINT_TYPE_PREFIX, 18893) +HANDLE_BAT(APINT_TYPE_PREFIX, 18894) +HANDLE_BAT(APINT_TYPE_PREFIX, 18895) +HANDLE_BAT(APINT_TYPE_PREFIX, 18896) +HANDLE_BAT(APINT_TYPE_PREFIX, 18897) +HANDLE_BAT(APINT_TYPE_PREFIX, 18898) +HANDLE_BAT(APINT_TYPE_PREFIX, 18899) +HANDLE_BAT(APINT_TYPE_PREFIX, 18900) +HANDLE_BAT(APINT_TYPE_PREFIX, 18901) +HANDLE_BAT(APINT_TYPE_PREFIX, 18902) +HANDLE_BAT(APINT_TYPE_PREFIX, 18903) +HANDLE_BAT(APINT_TYPE_PREFIX, 18904) +HANDLE_BAT(APINT_TYPE_PREFIX, 18905) +HANDLE_BAT(APINT_TYPE_PREFIX, 18906) +HANDLE_BAT(APINT_TYPE_PREFIX, 18907) +HANDLE_BAT(APINT_TYPE_PREFIX, 18908) +HANDLE_BAT(APINT_TYPE_PREFIX, 18909) +HANDLE_BAT(APINT_TYPE_PREFIX, 18910) +HANDLE_BAT(APINT_TYPE_PREFIX, 18911) +HANDLE_BAT(APINT_TYPE_PREFIX, 18912) +HANDLE_BAT(APINT_TYPE_PREFIX, 18913) +HANDLE_BAT(APINT_TYPE_PREFIX, 18914) +HANDLE_BAT(APINT_TYPE_PREFIX, 18915) +HANDLE_BAT(APINT_TYPE_PREFIX, 18916) +HANDLE_BAT(APINT_TYPE_PREFIX, 18917) +HANDLE_BAT(APINT_TYPE_PREFIX, 18918) +HANDLE_BAT(APINT_TYPE_PREFIX, 18919) +HANDLE_BAT(APINT_TYPE_PREFIX, 18920) +HANDLE_BAT(APINT_TYPE_PREFIX, 18921) +HANDLE_BAT(APINT_TYPE_PREFIX, 18922) +HANDLE_BAT(APINT_TYPE_PREFIX, 18923) +HANDLE_BAT(APINT_TYPE_PREFIX, 18924) +HANDLE_BAT(APINT_TYPE_PREFIX, 18925) +HANDLE_BAT(APINT_TYPE_PREFIX, 18926) +HANDLE_BAT(APINT_TYPE_PREFIX, 18927) +HANDLE_BAT(APINT_TYPE_PREFIX, 18928) +HANDLE_BAT(APINT_TYPE_PREFIX, 18929) +HANDLE_BAT(APINT_TYPE_PREFIX, 18930) +HANDLE_BAT(APINT_TYPE_PREFIX, 18931) +HANDLE_BAT(APINT_TYPE_PREFIX, 18932) +HANDLE_BAT(APINT_TYPE_PREFIX, 18933) +HANDLE_BAT(APINT_TYPE_PREFIX, 18934) +HANDLE_BAT(APINT_TYPE_PREFIX, 18935) +HANDLE_BAT(APINT_TYPE_PREFIX, 18936) +HANDLE_BAT(APINT_TYPE_PREFIX, 18937) +HANDLE_BAT(APINT_TYPE_PREFIX, 18938) +HANDLE_BAT(APINT_TYPE_PREFIX, 18939) +HANDLE_BAT(APINT_TYPE_PREFIX, 18940) +HANDLE_BAT(APINT_TYPE_PREFIX, 18941) +HANDLE_BAT(APINT_TYPE_PREFIX, 18942) +HANDLE_BAT(APINT_TYPE_PREFIX, 18943) +HANDLE_BAT(APINT_TYPE_PREFIX, 18944) +HANDLE_BAT(APINT_TYPE_PREFIX, 18945) +HANDLE_BAT(APINT_TYPE_PREFIX, 18946) +HANDLE_BAT(APINT_TYPE_PREFIX, 18947) +HANDLE_BAT(APINT_TYPE_PREFIX, 18948) +HANDLE_BAT(APINT_TYPE_PREFIX, 18949) +HANDLE_BAT(APINT_TYPE_PREFIX, 18950) +HANDLE_BAT(APINT_TYPE_PREFIX, 18951) +HANDLE_BAT(APINT_TYPE_PREFIX, 18952) +HANDLE_BAT(APINT_TYPE_PREFIX, 18953) +HANDLE_BAT(APINT_TYPE_PREFIX, 18954) +HANDLE_BAT(APINT_TYPE_PREFIX, 18955) +HANDLE_BAT(APINT_TYPE_PREFIX, 18956) +HANDLE_BAT(APINT_TYPE_PREFIX, 18957) +HANDLE_BAT(APINT_TYPE_PREFIX, 18958) +HANDLE_BAT(APINT_TYPE_PREFIX, 18959) +HANDLE_BAT(APINT_TYPE_PREFIX, 18960) +HANDLE_BAT(APINT_TYPE_PREFIX, 18961) +HANDLE_BAT(APINT_TYPE_PREFIX, 18962) +HANDLE_BAT(APINT_TYPE_PREFIX, 18963) +HANDLE_BAT(APINT_TYPE_PREFIX, 18964) +HANDLE_BAT(APINT_TYPE_PREFIX, 18965) +HANDLE_BAT(APINT_TYPE_PREFIX, 18966) +HANDLE_BAT(APINT_TYPE_PREFIX, 18967) +HANDLE_BAT(APINT_TYPE_PREFIX, 18968) +HANDLE_BAT(APINT_TYPE_PREFIX, 18969) +HANDLE_BAT(APINT_TYPE_PREFIX, 18970) +HANDLE_BAT(APINT_TYPE_PREFIX, 18971) +HANDLE_BAT(APINT_TYPE_PREFIX, 18972) +HANDLE_BAT(APINT_TYPE_PREFIX, 18973) +HANDLE_BAT(APINT_TYPE_PREFIX, 18974) +HANDLE_BAT(APINT_TYPE_PREFIX, 18975) +HANDLE_BAT(APINT_TYPE_PREFIX, 18976) +HANDLE_BAT(APINT_TYPE_PREFIX, 18977) +HANDLE_BAT(APINT_TYPE_PREFIX, 18978) +HANDLE_BAT(APINT_TYPE_PREFIX, 18979) +HANDLE_BAT(APINT_TYPE_PREFIX, 18980) +HANDLE_BAT(APINT_TYPE_PREFIX, 18981) +HANDLE_BAT(APINT_TYPE_PREFIX, 18982) +HANDLE_BAT(APINT_TYPE_PREFIX, 18983) +HANDLE_BAT(APINT_TYPE_PREFIX, 18984) +HANDLE_BAT(APINT_TYPE_PREFIX, 18985) +HANDLE_BAT(APINT_TYPE_PREFIX, 18986) +HANDLE_BAT(APINT_TYPE_PREFIX, 18987) +HANDLE_BAT(APINT_TYPE_PREFIX, 18988) +HANDLE_BAT(APINT_TYPE_PREFIX, 18989) +HANDLE_BAT(APINT_TYPE_PREFIX, 18990) +HANDLE_BAT(APINT_TYPE_PREFIX, 18991) +HANDLE_BAT(APINT_TYPE_PREFIX, 18992) +HANDLE_BAT(APINT_TYPE_PREFIX, 18993) +HANDLE_BAT(APINT_TYPE_PREFIX, 18994) +HANDLE_BAT(APINT_TYPE_PREFIX, 18995) +HANDLE_BAT(APINT_TYPE_PREFIX, 18996) +HANDLE_BAT(APINT_TYPE_PREFIX, 18997) +HANDLE_BAT(APINT_TYPE_PREFIX, 18998) +HANDLE_BAT(APINT_TYPE_PREFIX, 18999) +HANDLE_BAT(APINT_TYPE_PREFIX, 19000) +HANDLE_BAT(APINT_TYPE_PREFIX, 19001) +HANDLE_BAT(APINT_TYPE_PREFIX, 19002) +HANDLE_BAT(APINT_TYPE_PREFIX, 19003) +HANDLE_BAT(APINT_TYPE_PREFIX, 19004) +HANDLE_BAT(APINT_TYPE_PREFIX, 19005) +HANDLE_BAT(APINT_TYPE_PREFIX, 19006) +HANDLE_BAT(APINT_TYPE_PREFIX, 19007) +HANDLE_BAT(APINT_TYPE_PREFIX, 19008) +HANDLE_BAT(APINT_TYPE_PREFIX, 19009) +HANDLE_BAT(APINT_TYPE_PREFIX, 19010) +HANDLE_BAT(APINT_TYPE_PREFIX, 19011) +HANDLE_BAT(APINT_TYPE_PREFIX, 19012) +HANDLE_BAT(APINT_TYPE_PREFIX, 19013) +HANDLE_BAT(APINT_TYPE_PREFIX, 19014) +HANDLE_BAT(APINT_TYPE_PREFIX, 19015) +HANDLE_BAT(APINT_TYPE_PREFIX, 19016) +HANDLE_BAT(APINT_TYPE_PREFIX, 19017) +HANDLE_BAT(APINT_TYPE_PREFIX, 19018) +HANDLE_BAT(APINT_TYPE_PREFIX, 19019) +HANDLE_BAT(APINT_TYPE_PREFIX, 19020) +HANDLE_BAT(APINT_TYPE_PREFIX, 19021) +HANDLE_BAT(APINT_TYPE_PREFIX, 19022) +HANDLE_BAT(APINT_TYPE_PREFIX, 19023) +HANDLE_BAT(APINT_TYPE_PREFIX, 19024) +HANDLE_BAT(APINT_TYPE_PREFIX, 19025) +HANDLE_BAT(APINT_TYPE_PREFIX, 19026) +HANDLE_BAT(APINT_TYPE_PREFIX, 19027) +HANDLE_BAT(APINT_TYPE_PREFIX, 19028) +HANDLE_BAT(APINT_TYPE_PREFIX, 19029) +HANDLE_BAT(APINT_TYPE_PREFIX, 19030) +HANDLE_BAT(APINT_TYPE_PREFIX, 19031) +HANDLE_BAT(APINT_TYPE_PREFIX, 19032) +HANDLE_BAT(APINT_TYPE_PREFIX, 19033) +HANDLE_BAT(APINT_TYPE_PREFIX, 19034) +HANDLE_BAT(APINT_TYPE_PREFIX, 19035) +HANDLE_BAT(APINT_TYPE_PREFIX, 19036) +HANDLE_BAT(APINT_TYPE_PREFIX, 19037) +HANDLE_BAT(APINT_TYPE_PREFIX, 19038) +HANDLE_BAT(APINT_TYPE_PREFIX, 19039) +HANDLE_BAT(APINT_TYPE_PREFIX, 19040) +HANDLE_BAT(APINT_TYPE_PREFIX, 19041) +HANDLE_BAT(APINT_TYPE_PREFIX, 19042) +HANDLE_BAT(APINT_TYPE_PREFIX, 19043) +HANDLE_BAT(APINT_TYPE_PREFIX, 19044) +HANDLE_BAT(APINT_TYPE_PREFIX, 19045) +HANDLE_BAT(APINT_TYPE_PREFIX, 19046) +HANDLE_BAT(APINT_TYPE_PREFIX, 19047) +HANDLE_BAT(APINT_TYPE_PREFIX, 19048) +HANDLE_BAT(APINT_TYPE_PREFIX, 19049) +HANDLE_BAT(APINT_TYPE_PREFIX, 19050) +HANDLE_BAT(APINT_TYPE_PREFIX, 19051) +HANDLE_BAT(APINT_TYPE_PREFIX, 19052) +HANDLE_BAT(APINT_TYPE_PREFIX, 19053) +HANDLE_BAT(APINT_TYPE_PREFIX, 19054) +HANDLE_BAT(APINT_TYPE_PREFIX, 19055) +HANDLE_BAT(APINT_TYPE_PREFIX, 19056) +HANDLE_BAT(APINT_TYPE_PREFIX, 19057) +HANDLE_BAT(APINT_TYPE_PREFIX, 19058) +HANDLE_BAT(APINT_TYPE_PREFIX, 19059) +HANDLE_BAT(APINT_TYPE_PREFIX, 19060) +HANDLE_BAT(APINT_TYPE_PREFIX, 19061) +HANDLE_BAT(APINT_TYPE_PREFIX, 19062) +HANDLE_BAT(APINT_TYPE_PREFIX, 19063) +HANDLE_BAT(APINT_TYPE_PREFIX, 19064) +HANDLE_BAT(APINT_TYPE_PREFIX, 19065) +HANDLE_BAT(APINT_TYPE_PREFIX, 19066) +HANDLE_BAT(APINT_TYPE_PREFIX, 19067) +HANDLE_BAT(APINT_TYPE_PREFIX, 19068) +HANDLE_BAT(APINT_TYPE_PREFIX, 19069) +HANDLE_BAT(APINT_TYPE_PREFIX, 19070) +HANDLE_BAT(APINT_TYPE_PREFIX, 19071) +HANDLE_BAT(APINT_TYPE_PREFIX, 19072) +HANDLE_BAT(APINT_TYPE_PREFIX, 19073) +HANDLE_BAT(APINT_TYPE_PREFIX, 19074) +HANDLE_BAT(APINT_TYPE_PREFIX, 19075) +HANDLE_BAT(APINT_TYPE_PREFIX, 19076) +HANDLE_BAT(APINT_TYPE_PREFIX, 19077) +HANDLE_BAT(APINT_TYPE_PREFIX, 19078) +HANDLE_BAT(APINT_TYPE_PREFIX, 19079) +HANDLE_BAT(APINT_TYPE_PREFIX, 19080) +HANDLE_BAT(APINT_TYPE_PREFIX, 19081) +HANDLE_BAT(APINT_TYPE_PREFIX, 19082) +HANDLE_BAT(APINT_TYPE_PREFIX, 19083) +HANDLE_BAT(APINT_TYPE_PREFIX, 19084) +HANDLE_BAT(APINT_TYPE_PREFIX, 19085) +HANDLE_BAT(APINT_TYPE_PREFIX, 19086) +HANDLE_BAT(APINT_TYPE_PREFIX, 19087) +HANDLE_BAT(APINT_TYPE_PREFIX, 19088) +HANDLE_BAT(APINT_TYPE_PREFIX, 19089) +HANDLE_BAT(APINT_TYPE_PREFIX, 19090) +HANDLE_BAT(APINT_TYPE_PREFIX, 19091) +HANDLE_BAT(APINT_TYPE_PREFIX, 19092) +HANDLE_BAT(APINT_TYPE_PREFIX, 19093) +HANDLE_BAT(APINT_TYPE_PREFIX, 19094) +HANDLE_BAT(APINT_TYPE_PREFIX, 19095) +HANDLE_BAT(APINT_TYPE_PREFIX, 19096) +HANDLE_BAT(APINT_TYPE_PREFIX, 19097) +HANDLE_BAT(APINT_TYPE_PREFIX, 19098) +HANDLE_BAT(APINT_TYPE_PREFIX, 19099) +HANDLE_BAT(APINT_TYPE_PREFIX, 19100) +HANDLE_BAT(APINT_TYPE_PREFIX, 19101) +HANDLE_BAT(APINT_TYPE_PREFIX, 19102) +HANDLE_BAT(APINT_TYPE_PREFIX, 19103) +HANDLE_BAT(APINT_TYPE_PREFIX, 19104) +HANDLE_BAT(APINT_TYPE_PREFIX, 19105) +HANDLE_BAT(APINT_TYPE_PREFIX, 19106) +HANDLE_BAT(APINT_TYPE_PREFIX, 19107) +HANDLE_BAT(APINT_TYPE_PREFIX, 19108) +HANDLE_BAT(APINT_TYPE_PREFIX, 19109) +HANDLE_BAT(APINT_TYPE_PREFIX, 19110) +HANDLE_BAT(APINT_TYPE_PREFIX, 19111) +HANDLE_BAT(APINT_TYPE_PREFIX, 19112) +HANDLE_BAT(APINT_TYPE_PREFIX, 19113) +HANDLE_BAT(APINT_TYPE_PREFIX, 19114) +HANDLE_BAT(APINT_TYPE_PREFIX, 19115) +HANDLE_BAT(APINT_TYPE_PREFIX, 19116) +HANDLE_BAT(APINT_TYPE_PREFIX, 19117) +HANDLE_BAT(APINT_TYPE_PREFIX, 19118) +HANDLE_BAT(APINT_TYPE_PREFIX, 19119) +HANDLE_BAT(APINT_TYPE_PREFIX, 19120) +HANDLE_BAT(APINT_TYPE_PREFIX, 19121) +HANDLE_BAT(APINT_TYPE_PREFIX, 19122) +HANDLE_BAT(APINT_TYPE_PREFIX, 19123) +HANDLE_BAT(APINT_TYPE_PREFIX, 19124) +HANDLE_BAT(APINT_TYPE_PREFIX, 19125) +HANDLE_BAT(APINT_TYPE_PREFIX, 19126) +HANDLE_BAT(APINT_TYPE_PREFIX, 19127) +HANDLE_BAT(APINT_TYPE_PREFIX, 19128) +HANDLE_BAT(APINT_TYPE_PREFIX, 19129) +HANDLE_BAT(APINT_TYPE_PREFIX, 19130) +HANDLE_BAT(APINT_TYPE_PREFIX, 19131) +HANDLE_BAT(APINT_TYPE_PREFIX, 19132) +HANDLE_BAT(APINT_TYPE_PREFIX, 19133) +HANDLE_BAT(APINT_TYPE_PREFIX, 19134) +HANDLE_BAT(APINT_TYPE_PREFIX, 19135) +HANDLE_BAT(APINT_TYPE_PREFIX, 19136) +HANDLE_BAT(APINT_TYPE_PREFIX, 19137) +HANDLE_BAT(APINT_TYPE_PREFIX, 19138) +HANDLE_BAT(APINT_TYPE_PREFIX, 19139) +HANDLE_BAT(APINT_TYPE_PREFIX, 19140) +HANDLE_BAT(APINT_TYPE_PREFIX, 19141) +HANDLE_BAT(APINT_TYPE_PREFIX, 19142) +HANDLE_BAT(APINT_TYPE_PREFIX, 19143) +HANDLE_BAT(APINT_TYPE_PREFIX, 19144) +HANDLE_BAT(APINT_TYPE_PREFIX, 19145) +HANDLE_BAT(APINT_TYPE_PREFIX, 19146) +HANDLE_BAT(APINT_TYPE_PREFIX, 19147) +HANDLE_BAT(APINT_TYPE_PREFIX, 19148) +HANDLE_BAT(APINT_TYPE_PREFIX, 19149) +HANDLE_BAT(APINT_TYPE_PREFIX, 19150) +HANDLE_BAT(APINT_TYPE_PREFIX, 19151) +HANDLE_BAT(APINT_TYPE_PREFIX, 19152) +HANDLE_BAT(APINT_TYPE_PREFIX, 19153) +HANDLE_BAT(APINT_TYPE_PREFIX, 19154) +HANDLE_BAT(APINT_TYPE_PREFIX, 19155) +HANDLE_BAT(APINT_TYPE_PREFIX, 19156) +HANDLE_BAT(APINT_TYPE_PREFIX, 19157) +HANDLE_BAT(APINT_TYPE_PREFIX, 19158) +HANDLE_BAT(APINT_TYPE_PREFIX, 19159) +HANDLE_BAT(APINT_TYPE_PREFIX, 19160) +HANDLE_BAT(APINT_TYPE_PREFIX, 19161) +HANDLE_BAT(APINT_TYPE_PREFIX, 19162) +HANDLE_BAT(APINT_TYPE_PREFIX, 19163) +HANDLE_BAT(APINT_TYPE_PREFIX, 19164) +HANDLE_BAT(APINT_TYPE_PREFIX, 19165) +HANDLE_BAT(APINT_TYPE_PREFIX, 19166) +HANDLE_BAT(APINT_TYPE_PREFIX, 19167) +HANDLE_BAT(APINT_TYPE_PREFIX, 19168) +HANDLE_BAT(APINT_TYPE_PREFIX, 19169) +HANDLE_BAT(APINT_TYPE_PREFIX, 19170) +HANDLE_BAT(APINT_TYPE_PREFIX, 19171) +HANDLE_BAT(APINT_TYPE_PREFIX, 19172) +HANDLE_BAT(APINT_TYPE_PREFIX, 19173) +HANDLE_BAT(APINT_TYPE_PREFIX, 19174) +HANDLE_BAT(APINT_TYPE_PREFIX, 19175) +HANDLE_BAT(APINT_TYPE_PREFIX, 19176) +HANDLE_BAT(APINT_TYPE_PREFIX, 19177) +HANDLE_BAT(APINT_TYPE_PREFIX, 19178) +HANDLE_BAT(APINT_TYPE_PREFIX, 19179) +HANDLE_BAT(APINT_TYPE_PREFIX, 19180) +HANDLE_BAT(APINT_TYPE_PREFIX, 19181) +HANDLE_BAT(APINT_TYPE_PREFIX, 19182) +HANDLE_BAT(APINT_TYPE_PREFIX, 19183) +HANDLE_BAT(APINT_TYPE_PREFIX, 19184) +HANDLE_BAT(APINT_TYPE_PREFIX, 19185) +HANDLE_BAT(APINT_TYPE_PREFIX, 19186) +HANDLE_BAT(APINT_TYPE_PREFIX, 19187) +HANDLE_BAT(APINT_TYPE_PREFIX, 19188) +HANDLE_BAT(APINT_TYPE_PREFIX, 19189) +HANDLE_BAT(APINT_TYPE_PREFIX, 19190) +HANDLE_BAT(APINT_TYPE_PREFIX, 19191) +HANDLE_BAT(APINT_TYPE_PREFIX, 19192) +HANDLE_BAT(APINT_TYPE_PREFIX, 19193) +HANDLE_BAT(APINT_TYPE_PREFIX, 19194) +HANDLE_BAT(APINT_TYPE_PREFIX, 19195) +HANDLE_BAT(APINT_TYPE_PREFIX, 19196) +HANDLE_BAT(APINT_TYPE_PREFIX, 19197) +HANDLE_BAT(APINT_TYPE_PREFIX, 19198) +HANDLE_BAT(APINT_TYPE_PREFIX, 19199) +HANDLE_BAT(APINT_TYPE_PREFIX, 19200) +HANDLE_BAT(APINT_TYPE_PREFIX, 19201) +HANDLE_BAT(APINT_TYPE_PREFIX, 19202) +HANDLE_BAT(APINT_TYPE_PREFIX, 19203) +HANDLE_BAT(APINT_TYPE_PREFIX, 19204) +HANDLE_BAT(APINT_TYPE_PREFIX, 19205) +HANDLE_BAT(APINT_TYPE_PREFIX, 19206) +HANDLE_BAT(APINT_TYPE_PREFIX, 19207) +HANDLE_BAT(APINT_TYPE_PREFIX, 19208) +HANDLE_BAT(APINT_TYPE_PREFIX, 19209) +HANDLE_BAT(APINT_TYPE_PREFIX, 19210) +HANDLE_BAT(APINT_TYPE_PREFIX, 19211) +HANDLE_BAT(APINT_TYPE_PREFIX, 19212) +HANDLE_BAT(APINT_TYPE_PREFIX, 19213) +HANDLE_BAT(APINT_TYPE_PREFIX, 19214) +HANDLE_BAT(APINT_TYPE_PREFIX, 19215) +HANDLE_BAT(APINT_TYPE_PREFIX, 19216) +HANDLE_BAT(APINT_TYPE_PREFIX, 19217) +HANDLE_BAT(APINT_TYPE_PREFIX, 19218) +HANDLE_BAT(APINT_TYPE_PREFIX, 19219) +HANDLE_BAT(APINT_TYPE_PREFIX, 19220) +HANDLE_BAT(APINT_TYPE_PREFIX, 19221) +HANDLE_BAT(APINT_TYPE_PREFIX, 19222) +HANDLE_BAT(APINT_TYPE_PREFIX, 19223) +HANDLE_BAT(APINT_TYPE_PREFIX, 19224) +HANDLE_BAT(APINT_TYPE_PREFIX, 19225) +HANDLE_BAT(APINT_TYPE_PREFIX, 19226) +HANDLE_BAT(APINT_TYPE_PREFIX, 19227) +HANDLE_BAT(APINT_TYPE_PREFIX, 19228) +HANDLE_BAT(APINT_TYPE_PREFIX, 19229) +HANDLE_BAT(APINT_TYPE_PREFIX, 19230) +HANDLE_BAT(APINT_TYPE_PREFIX, 19231) +HANDLE_BAT(APINT_TYPE_PREFIX, 19232) +HANDLE_BAT(APINT_TYPE_PREFIX, 19233) +HANDLE_BAT(APINT_TYPE_PREFIX, 19234) +HANDLE_BAT(APINT_TYPE_PREFIX, 19235) +HANDLE_BAT(APINT_TYPE_PREFIX, 19236) +HANDLE_BAT(APINT_TYPE_PREFIX, 19237) +HANDLE_BAT(APINT_TYPE_PREFIX, 19238) +HANDLE_BAT(APINT_TYPE_PREFIX, 19239) +HANDLE_BAT(APINT_TYPE_PREFIX, 19240) +HANDLE_BAT(APINT_TYPE_PREFIX, 19241) +HANDLE_BAT(APINT_TYPE_PREFIX, 19242) +HANDLE_BAT(APINT_TYPE_PREFIX, 19243) +HANDLE_BAT(APINT_TYPE_PREFIX, 19244) +HANDLE_BAT(APINT_TYPE_PREFIX, 19245) +HANDLE_BAT(APINT_TYPE_PREFIX, 19246) +HANDLE_BAT(APINT_TYPE_PREFIX, 19247) +HANDLE_BAT(APINT_TYPE_PREFIX, 19248) +HANDLE_BAT(APINT_TYPE_PREFIX, 19249) +HANDLE_BAT(APINT_TYPE_PREFIX, 19250) +HANDLE_BAT(APINT_TYPE_PREFIX, 19251) +HANDLE_BAT(APINT_TYPE_PREFIX, 19252) +HANDLE_BAT(APINT_TYPE_PREFIX, 19253) +HANDLE_BAT(APINT_TYPE_PREFIX, 19254) +HANDLE_BAT(APINT_TYPE_PREFIX, 19255) +HANDLE_BAT(APINT_TYPE_PREFIX, 19256) +HANDLE_BAT(APINT_TYPE_PREFIX, 19257) +HANDLE_BAT(APINT_TYPE_PREFIX, 19258) +HANDLE_BAT(APINT_TYPE_PREFIX, 19259) +HANDLE_BAT(APINT_TYPE_PREFIX, 19260) +HANDLE_BAT(APINT_TYPE_PREFIX, 19261) +HANDLE_BAT(APINT_TYPE_PREFIX, 19262) +HANDLE_BAT(APINT_TYPE_PREFIX, 19263) +HANDLE_BAT(APINT_TYPE_PREFIX, 19264) +HANDLE_BAT(APINT_TYPE_PREFIX, 19265) +HANDLE_BAT(APINT_TYPE_PREFIX, 19266) +HANDLE_BAT(APINT_TYPE_PREFIX, 19267) +HANDLE_BAT(APINT_TYPE_PREFIX, 19268) +HANDLE_BAT(APINT_TYPE_PREFIX, 19269) +HANDLE_BAT(APINT_TYPE_PREFIX, 19270) +HANDLE_BAT(APINT_TYPE_PREFIX, 19271) +HANDLE_BAT(APINT_TYPE_PREFIX, 19272) +HANDLE_BAT(APINT_TYPE_PREFIX, 19273) +HANDLE_BAT(APINT_TYPE_PREFIX, 19274) +HANDLE_BAT(APINT_TYPE_PREFIX, 19275) +HANDLE_BAT(APINT_TYPE_PREFIX, 19276) +HANDLE_BAT(APINT_TYPE_PREFIX, 19277) +HANDLE_BAT(APINT_TYPE_PREFIX, 19278) +HANDLE_BAT(APINT_TYPE_PREFIX, 19279) +HANDLE_BAT(APINT_TYPE_PREFIX, 19280) +HANDLE_BAT(APINT_TYPE_PREFIX, 19281) +HANDLE_BAT(APINT_TYPE_PREFIX, 19282) +HANDLE_BAT(APINT_TYPE_PREFIX, 19283) +HANDLE_BAT(APINT_TYPE_PREFIX, 19284) +HANDLE_BAT(APINT_TYPE_PREFIX, 19285) +HANDLE_BAT(APINT_TYPE_PREFIX, 19286) +HANDLE_BAT(APINT_TYPE_PREFIX, 19287) +HANDLE_BAT(APINT_TYPE_PREFIX, 19288) +HANDLE_BAT(APINT_TYPE_PREFIX, 19289) +HANDLE_BAT(APINT_TYPE_PREFIX, 19290) +HANDLE_BAT(APINT_TYPE_PREFIX, 19291) +HANDLE_BAT(APINT_TYPE_PREFIX, 19292) +HANDLE_BAT(APINT_TYPE_PREFIX, 19293) +HANDLE_BAT(APINT_TYPE_PREFIX, 19294) +HANDLE_BAT(APINT_TYPE_PREFIX, 19295) +HANDLE_BAT(APINT_TYPE_PREFIX, 19296) +HANDLE_BAT(APINT_TYPE_PREFIX, 19297) +HANDLE_BAT(APINT_TYPE_PREFIX, 19298) +HANDLE_BAT(APINT_TYPE_PREFIX, 19299) +HANDLE_BAT(APINT_TYPE_PREFIX, 19300) +HANDLE_BAT(APINT_TYPE_PREFIX, 19301) +HANDLE_BAT(APINT_TYPE_PREFIX, 19302) +HANDLE_BAT(APINT_TYPE_PREFIX, 19303) +HANDLE_BAT(APINT_TYPE_PREFIX, 19304) +HANDLE_BAT(APINT_TYPE_PREFIX, 19305) +HANDLE_BAT(APINT_TYPE_PREFIX, 19306) +HANDLE_BAT(APINT_TYPE_PREFIX, 19307) +HANDLE_BAT(APINT_TYPE_PREFIX, 19308) +HANDLE_BAT(APINT_TYPE_PREFIX, 19309) +HANDLE_BAT(APINT_TYPE_PREFIX, 19310) +HANDLE_BAT(APINT_TYPE_PREFIX, 19311) +HANDLE_BAT(APINT_TYPE_PREFIX, 19312) +HANDLE_BAT(APINT_TYPE_PREFIX, 19313) +HANDLE_BAT(APINT_TYPE_PREFIX, 19314) +HANDLE_BAT(APINT_TYPE_PREFIX, 19315) +HANDLE_BAT(APINT_TYPE_PREFIX, 19316) +HANDLE_BAT(APINT_TYPE_PREFIX, 19317) +HANDLE_BAT(APINT_TYPE_PREFIX, 19318) +HANDLE_BAT(APINT_TYPE_PREFIX, 19319) +HANDLE_BAT(APINT_TYPE_PREFIX, 19320) +HANDLE_BAT(APINT_TYPE_PREFIX, 19321) +HANDLE_BAT(APINT_TYPE_PREFIX, 19322) +HANDLE_BAT(APINT_TYPE_PREFIX, 19323) +HANDLE_BAT(APINT_TYPE_PREFIX, 19324) +HANDLE_BAT(APINT_TYPE_PREFIX, 19325) +HANDLE_BAT(APINT_TYPE_PREFIX, 19326) +HANDLE_BAT(APINT_TYPE_PREFIX, 19327) +HANDLE_BAT(APINT_TYPE_PREFIX, 19328) +HANDLE_BAT(APINT_TYPE_PREFIX, 19329) +HANDLE_BAT(APINT_TYPE_PREFIX, 19330) +HANDLE_BAT(APINT_TYPE_PREFIX, 19331) +HANDLE_BAT(APINT_TYPE_PREFIX, 19332) +HANDLE_BAT(APINT_TYPE_PREFIX, 19333) +HANDLE_BAT(APINT_TYPE_PREFIX, 19334) +HANDLE_BAT(APINT_TYPE_PREFIX, 19335) +HANDLE_BAT(APINT_TYPE_PREFIX, 19336) +HANDLE_BAT(APINT_TYPE_PREFIX, 19337) +HANDLE_BAT(APINT_TYPE_PREFIX, 19338) +HANDLE_BAT(APINT_TYPE_PREFIX, 19339) +HANDLE_BAT(APINT_TYPE_PREFIX, 19340) +HANDLE_BAT(APINT_TYPE_PREFIX, 19341) +HANDLE_BAT(APINT_TYPE_PREFIX, 19342) +HANDLE_BAT(APINT_TYPE_PREFIX, 19343) +HANDLE_BAT(APINT_TYPE_PREFIX, 19344) +HANDLE_BAT(APINT_TYPE_PREFIX, 19345) +HANDLE_BAT(APINT_TYPE_PREFIX, 19346) +HANDLE_BAT(APINT_TYPE_PREFIX, 19347) +HANDLE_BAT(APINT_TYPE_PREFIX, 19348) +HANDLE_BAT(APINT_TYPE_PREFIX, 19349) +HANDLE_BAT(APINT_TYPE_PREFIX, 19350) +HANDLE_BAT(APINT_TYPE_PREFIX, 19351) +HANDLE_BAT(APINT_TYPE_PREFIX, 19352) +HANDLE_BAT(APINT_TYPE_PREFIX, 19353) +HANDLE_BAT(APINT_TYPE_PREFIX, 19354) +HANDLE_BAT(APINT_TYPE_PREFIX, 19355) +HANDLE_BAT(APINT_TYPE_PREFIX, 19356) +HANDLE_BAT(APINT_TYPE_PREFIX, 19357) +HANDLE_BAT(APINT_TYPE_PREFIX, 19358) +HANDLE_BAT(APINT_TYPE_PREFIX, 19359) +HANDLE_BAT(APINT_TYPE_PREFIX, 19360) +HANDLE_BAT(APINT_TYPE_PREFIX, 19361) +HANDLE_BAT(APINT_TYPE_PREFIX, 19362) +HANDLE_BAT(APINT_TYPE_PREFIX, 19363) +HANDLE_BAT(APINT_TYPE_PREFIX, 19364) +HANDLE_BAT(APINT_TYPE_PREFIX, 19365) +HANDLE_BAT(APINT_TYPE_PREFIX, 19366) +HANDLE_BAT(APINT_TYPE_PREFIX, 19367) +HANDLE_BAT(APINT_TYPE_PREFIX, 19368) +HANDLE_BAT(APINT_TYPE_PREFIX, 19369) +HANDLE_BAT(APINT_TYPE_PREFIX, 19370) +HANDLE_BAT(APINT_TYPE_PREFIX, 19371) +HANDLE_BAT(APINT_TYPE_PREFIX, 19372) +HANDLE_BAT(APINT_TYPE_PREFIX, 19373) +HANDLE_BAT(APINT_TYPE_PREFIX, 19374) +HANDLE_BAT(APINT_TYPE_PREFIX, 19375) +HANDLE_BAT(APINT_TYPE_PREFIX, 19376) +HANDLE_BAT(APINT_TYPE_PREFIX, 19377) +HANDLE_BAT(APINT_TYPE_PREFIX, 19378) +HANDLE_BAT(APINT_TYPE_PREFIX, 19379) +HANDLE_BAT(APINT_TYPE_PREFIX, 19380) +HANDLE_BAT(APINT_TYPE_PREFIX, 19381) +HANDLE_BAT(APINT_TYPE_PREFIX, 19382) +HANDLE_BAT(APINT_TYPE_PREFIX, 19383) +HANDLE_BAT(APINT_TYPE_PREFIX, 19384) +HANDLE_BAT(APINT_TYPE_PREFIX, 19385) +HANDLE_BAT(APINT_TYPE_PREFIX, 19386) +HANDLE_BAT(APINT_TYPE_PREFIX, 19387) +HANDLE_BAT(APINT_TYPE_PREFIX, 19388) +HANDLE_BAT(APINT_TYPE_PREFIX, 19389) +HANDLE_BAT(APINT_TYPE_PREFIX, 19390) +HANDLE_BAT(APINT_TYPE_PREFIX, 19391) +HANDLE_BAT(APINT_TYPE_PREFIX, 19392) +HANDLE_BAT(APINT_TYPE_PREFIX, 19393) +HANDLE_BAT(APINT_TYPE_PREFIX, 19394) +HANDLE_BAT(APINT_TYPE_PREFIX, 19395) +HANDLE_BAT(APINT_TYPE_PREFIX, 19396) +HANDLE_BAT(APINT_TYPE_PREFIX, 19397) +HANDLE_BAT(APINT_TYPE_PREFIX, 19398) +HANDLE_BAT(APINT_TYPE_PREFIX, 19399) +HANDLE_BAT(APINT_TYPE_PREFIX, 19400) +HANDLE_BAT(APINT_TYPE_PREFIX, 19401) +HANDLE_BAT(APINT_TYPE_PREFIX, 19402) +HANDLE_BAT(APINT_TYPE_PREFIX, 19403) +HANDLE_BAT(APINT_TYPE_PREFIX, 19404) +HANDLE_BAT(APINT_TYPE_PREFIX, 19405) +HANDLE_BAT(APINT_TYPE_PREFIX, 19406) +HANDLE_BAT(APINT_TYPE_PREFIX, 19407) +HANDLE_BAT(APINT_TYPE_PREFIX, 19408) +HANDLE_BAT(APINT_TYPE_PREFIX, 19409) +HANDLE_BAT(APINT_TYPE_PREFIX, 19410) +HANDLE_BAT(APINT_TYPE_PREFIX, 19411) +HANDLE_BAT(APINT_TYPE_PREFIX, 19412) +HANDLE_BAT(APINT_TYPE_PREFIX, 19413) +HANDLE_BAT(APINT_TYPE_PREFIX, 19414) +HANDLE_BAT(APINT_TYPE_PREFIX, 19415) +HANDLE_BAT(APINT_TYPE_PREFIX, 19416) +HANDLE_BAT(APINT_TYPE_PREFIX, 19417) +HANDLE_BAT(APINT_TYPE_PREFIX, 19418) +HANDLE_BAT(APINT_TYPE_PREFIX, 19419) +HANDLE_BAT(APINT_TYPE_PREFIX, 19420) +HANDLE_BAT(APINT_TYPE_PREFIX, 19421) +HANDLE_BAT(APINT_TYPE_PREFIX, 19422) +HANDLE_BAT(APINT_TYPE_PREFIX, 19423) +HANDLE_BAT(APINT_TYPE_PREFIX, 19424) +HANDLE_BAT(APINT_TYPE_PREFIX, 19425) +HANDLE_BAT(APINT_TYPE_PREFIX, 19426) +HANDLE_BAT(APINT_TYPE_PREFIX, 19427) +HANDLE_BAT(APINT_TYPE_PREFIX, 19428) +HANDLE_BAT(APINT_TYPE_PREFIX, 19429) +HANDLE_BAT(APINT_TYPE_PREFIX, 19430) +HANDLE_BAT(APINT_TYPE_PREFIX, 19431) +HANDLE_BAT(APINT_TYPE_PREFIX, 19432) +HANDLE_BAT(APINT_TYPE_PREFIX, 19433) +HANDLE_BAT(APINT_TYPE_PREFIX, 19434) +HANDLE_BAT(APINT_TYPE_PREFIX, 19435) +HANDLE_BAT(APINT_TYPE_PREFIX, 19436) +HANDLE_BAT(APINT_TYPE_PREFIX, 19437) +HANDLE_BAT(APINT_TYPE_PREFIX, 19438) +HANDLE_BAT(APINT_TYPE_PREFIX, 19439) +HANDLE_BAT(APINT_TYPE_PREFIX, 19440) +HANDLE_BAT(APINT_TYPE_PREFIX, 19441) +HANDLE_BAT(APINT_TYPE_PREFIX, 19442) +HANDLE_BAT(APINT_TYPE_PREFIX, 19443) +HANDLE_BAT(APINT_TYPE_PREFIX, 19444) +HANDLE_BAT(APINT_TYPE_PREFIX, 19445) +HANDLE_BAT(APINT_TYPE_PREFIX, 19446) +HANDLE_BAT(APINT_TYPE_PREFIX, 19447) +HANDLE_BAT(APINT_TYPE_PREFIX, 19448) +HANDLE_BAT(APINT_TYPE_PREFIX, 19449) +HANDLE_BAT(APINT_TYPE_PREFIX, 19450) +HANDLE_BAT(APINT_TYPE_PREFIX, 19451) +HANDLE_BAT(APINT_TYPE_PREFIX, 19452) +HANDLE_BAT(APINT_TYPE_PREFIX, 19453) +HANDLE_BAT(APINT_TYPE_PREFIX, 19454) +HANDLE_BAT(APINT_TYPE_PREFIX, 19455) +HANDLE_BAT(APINT_TYPE_PREFIX, 19456) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 19 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 19457) +HANDLE_BAT(, 19458) +HANDLE_BAT(, 19459) +HANDLE_BAT(, 19460) +HANDLE_BAT(, 19461) +HANDLE_BAT(, 19462) +HANDLE_BAT(, 19463) +HANDLE_BAT(, 19464) +HANDLE_BAT(, 19465) +HANDLE_BAT(, 19466) +HANDLE_BAT(, 19467) +HANDLE_BAT(, 19468) +HANDLE_BAT(, 19469) +HANDLE_BAT(, 19470) +HANDLE_BAT(, 19471) +HANDLE_BAT(, 19472) +HANDLE_BAT(, 19473) +HANDLE_BAT(, 19474) +HANDLE_BAT(, 19475) +HANDLE_BAT(, 19476) +HANDLE_BAT(, 19477) +HANDLE_BAT(, 19478) +HANDLE_BAT(, 19479) +HANDLE_BAT(, 19480) +HANDLE_BAT(, 19481) +HANDLE_BAT(, 19482) +HANDLE_BAT(, 19483) +HANDLE_BAT(, 19484) +HANDLE_BAT(, 19485) +HANDLE_BAT(, 19486) +HANDLE_BAT(, 19487) +HANDLE_BAT(, 19488) +HANDLE_BAT(, 19489) +HANDLE_BAT(, 19490) +HANDLE_BAT(, 19491) +HANDLE_BAT(, 19492) +HANDLE_BAT(, 19493) +HANDLE_BAT(, 19494) +HANDLE_BAT(, 19495) +HANDLE_BAT(, 19496) +HANDLE_BAT(, 19497) +HANDLE_BAT(, 19498) +HANDLE_BAT(, 19499) +HANDLE_BAT(, 19500) +HANDLE_BAT(, 19501) +HANDLE_BAT(, 19502) +HANDLE_BAT(, 19503) +HANDLE_BAT(, 19504) +HANDLE_BAT(, 19505) +HANDLE_BAT(, 19506) +HANDLE_BAT(, 19507) +HANDLE_BAT(, 19508) +HANDLE_BAT(, 19509) +HANDLE_BAT(, 19510) +HANDLE_BAT(, 19511) +HANDLE_BAT(, 19512) +HANDLE_BAT(, 19513) +HANDLE_BAT(, 19514) +HANDLE_BAT(, 19515) +HANDLE_BAT(, 19516) +HANDLE_BAT(, 19517) +HANDLE_BAT(, 19518) +HANDLE_BAT(, 19519) +HANDLE_BAT(, 19520) +HANDLE_BAT(, 19521) +HANDLE_BAT(, 19522) +HANDLE_BAT(, 19523) +HANDLE_BAT(, 19524) +HANDLE_BAT(, 19525) +HANDLE_BAT(, 19526) +HANDLE_BAT(, 19527) +HANDLE_BAT(, 19528) +HANDLE_BAT(, 19529) +HANDLE_BAT(, 19530) +HANDLE_BAT(, 19531) +HANDLE_BAT(, 19532) +HANDLE_BAT(, 19533) +HANDLE_BAT(, 19534) +HANDLE_BAT(, 19535) +HANDLE_BAT(, 19536) +HANDLE_BAT(, 19537) +HANDLE_BAT(, 19538) +HANDLE_BAT(, 19539) +HANDLE_BAT(, 19540) +HANDLE_BAT(, 19541) +HANDLE_BAT(, 19542) +HANDLE_BAT(, 19543) +HANDLE_BAT(, 19544) +HANDLE_BAT(, 19545) +HANDLE_BAT(, 19546) +HANDLE_BAT(, 19547) +HANDLE_BAT(, 19548) +HANDLE_BAT(, 19549) +HANDLE_BAT(, 19550) +HANDLE_BAT(, 19551) +HANDLE_BAT(, 19552) +HANDLE_BAT(, 19553) +HANDLE_BAT(, 19554) +HANDLE_BAT(, 19555) +HANDLE_BAT(, 19556) +HANDLE_BAT(, 19557) +HANDLE_BAT(, 19558) +HANDLE_BAT(, 19559) +HANDLE_BAT(, 19560) +HANDLE_BAT(, 19561) +HANDLE_BAT(, 19562) +HANDLE_BAT(, 19563) +HANDLE_BAT(, 19564) +HANDLE_BAT(, 19565) +HANDLE_BAT(, 19566) +HANDLE_BAT(, 19567) +HANDLE_BAT(, 19568) +HANDLE_BAT(, 19569) +HANDLE_BAT(, 19570) +HANDLE_BAT(, 19571) +HANDLE_BAT(, 19572) +HANDLE_BAT(, 19573) +HANDLE_BAT(, 19574) +HANDLE_BAT(, 19575) +HANDLE_BAT(, 19576) +HANDLE_BAT(, 19577) +HANDLE_BAT(, 19578) +HANDLE_BAT(, 19579) +HANDLE_BAT(, 19580) +HANDLE_BAT(, 19581) +HANDLE_BAT(, 19582) +HANDLE_BAT(, 19583) +HANDLE_BAT(, 19584) +HANDLE_BAT(, 19585) +HANDLE_BAT(, 19586) +HANDLE_BAT(, 19587) +HANDLE_BAT(, 19588) +HANDLE_BAT(, 19589) +HANDLE_BAT(, 19590) +HANDLE_BAT(, 19591) +HANDLE_BAT(, 19592) +HANDLE_BAT(, 19593) +HANDLE_BAT(, 19594) +HANDLE_BAT(, 19595) +HANDLE_BAT(, 19596) +HANDLE_BAT(, 19597) +HANDLE_BAT(, 19598) +HANDLE_BAT(, 19599) +HANDLE_BAT(, 19600) +HANDLE_BAT(, 19601) +HANDLE_BAT(, 19602) +HANDLE_BAT(, 19603) +HANDLE_BAT(, 19604) +HANDLE_BAT(, 19605) +HANDLE_BAT(, 19606) +HANDLE_BAT(, 19607) +HANDLE_BAT(, 19608) +HANDLE_BAT(, 19609) +HANDLE_BAT(, 19610) +HANDLE_BAT(, 19611) +HANDLE_BAT(, 19612) +HANDLE_BAT(, 19613) +HANDLE_BAT(, 19614) +HANDLE_BAT(, 19615) +HANDLE_BAT(, 19616) +HANDLE_BAT(, 19617) +HANDLE_BAT(, 19618) +HANDLE_BAT(, 19619) +HANDLE_BAT(, 19620) +HANDLE_BAT(, 19621) +HANDLE_BAT(, 19622) +HANDLE_BAT(, 19623) +HANDLE_BAT(, 19624) +HANDLE_BAT(, 19625) +HANDLE_BAT(, 19626) +HANDLE_BAT(, 19627) +HANDLE_BAT(, 19628) +HANDLE_BAT(, 19629) +HANDLE_BAT(, 19630) +HANDLE_BAT(, 19631) +HANDLE_BAT(, 19632) +HANDLE_BAT(, 19633) +HANDLE_BAT(, 19634) +HANDLE_BAT(, 19635) +HANDLE_BAT(, 19636) +HANDLE_BAT(, 19637) +HANDLE_BAT(, 19638) +HANDLE_BAT(, 19639) +HANDLE_BAT(, 19640) +HANDLE_BAT(, 19641) +HANDLE_BAT(, 19642) +HANDLE_BAT(, 19643) +HANDLE_BAT(, 19644) +HANDLE_BAT(, 19645) +HANDLE_BAT(, 19646) +HANDLE_BAT(, 19647) +HANDLE_BAT(, 19648) +HANDLE_BAT(, 19649) +HANDLE_BAT(, 19650) +HANDLE_BAT(, 19651) +HANDLE_BAT(, 19652) +HANDLE_BAT(, 19653) +HANDLE_BAT(, 19654) +HANDLE_BAT(, 19655) +HANDLE_BAT(, 19656) +HANDLE_BAT(, 19657) +HANDLE_BAT(, 19658) +HANDLE_BAT(, 19659) +HANDLE_BAT(, 19660) +HANDLE_BAT(, 19661) +HANDLE_BAT(, 19662) +HANDLE_BAT(, 19663) +HANDLE_BAT(, 19664) +HANDLE_BAT(, 19665) +HANDLE_BAT(, 19666) +HANDLE_BAT(, 19667) +HANDLE_BAT(, 19668) +HANDLE_BAT(, 19669) +HANDLE_BAT(, 19670) +HANDLE_BAT(, 19671) +HANDLE_BAT(, 19672) +HANDLE_BAT(, 19673) +HANDLE_BAT(, 19674) +HANDLE_BAT(, 19675) +HANDLE_BAT(, 19676) +HANDLE_BAT(, 19677) +HANDLE_BAT(, 19678) +HANDLE_BAT(, 19679) +HANDLE_BAT(, 19680) +HANDLE_BAT(, 19681) +HANDLE_BAT(, 19682) +HANDLE_BAT(, 19683) +HANDLE_BAT(, 19684) +HANDLE_BAT(, 19685) +HANDLE_BAT(, 19686) +HANDLE_BAT(, 19687) +HANDLE_BAT(, 19688) +HANDLE_BAT(, 19689) +HANDLE_BAT(, 19690) +HANDLE_BAT(, 19691) +HANDLE_BAT(, 19692) +HANDLE_BAT(, 19693) +HANDLE_BAT(, 19694) +HANDLE_BAT(, 19695) +HANDLE_BAT(, 19696) +HANDLE_BAT(, 19697) +HANDLE_BAT(, 19698) +HANDLE_BAT(, 19699) +HANDLE_BAT(, 19700) +HANDLE_BAT(, 19701) +HANDLE_BAT(, 19702) +HANDLE_BAT(, 19703) +HANDLE_BAT(, 19704) +HANDLE_BAT(, 19705) +HANDLE_BAT(, 19706) +HANDLE_BAT(, 19707) +HANDLE_BAT(, 19708) +HANDLE_BAT(, 19709) +HANDLE_BAT(, 19710) +HANDLE_BAT(, 19711) +HANDLE_BAT(, 19712) +HANDLE_BAT(, 19713) +HANDLE_BAT(, 19714) +HANDLE_BAT(, 19715) +HANDLE_BAT(, 19716) +HANDLE_BAT(, 19717) +HANDLE_BAT(, 19718) +HANDLE_BAT(, 19719) +HANDLE_BAT(, 19720) +HANDLE_BAT(, 19721) +HANDLE_BAT(, 19722) +HANDLE_BAT(, 19723) +HANDLE_BAT(, 19724) +HANDLE_BAT(, 19725) +HANDLE_BAT(, 19726) +HANDLE_BAT(, 19727) +HANDLE_BAT(, 19728) +HANDLE_BAT(, 19729) +HANDLE_BAT(, 19730) +HANDLE_BAT(, 19731) +HANDLE_BAT(, 19732) +HANDLE_BAT(, 19733) +HANDLE_BAT(, 19734) +HANDLE_BAT(, 19735) +HANDLE_BAT(, 19736) +HANDLE_BAT(, 19737) +HANDLE_BAT(, 19738) +HANDLE_BAT(, 19739) +HANDLE_BAT(, 19740) +HANDLE_BAT(, 19741) +HANDLE_BAT(, 19742) +HANDLE_BAT(, 19743) +HANDLE_BAT(, 19744) +HANDLE_BAT(, 19745) +HANDLE_BAT(, 19746) +HANDLE_BAT(, 19747) +HANDLE_BAT(, 19748) +HANDLE_BAT(, 19749) +HANDLE_BAT(, 19750) +HANDLE_BAT(, 19751) +HANDLE_BAT(, 19752) +HANDLE_BAT(, 19753) +HANDLE_BAT(, 19754) +HANDLE_BAT(, 19755) +HANDLE_BAT(, 19756) +HANDLE_BAT(, 19757) +HANDLE_BAT(, 19758) +HANDLE_BAT(, 19759) +HANDLE_BAT(, 19760) +HANDLE_BAT(, 19761) +HANDLE_BAT(, 19762) +HANDLE_BAT(, 19763) +HANDLE_BAT(, 19764) +HANDLE_BAT(, 19765) +HANDLE_BAT(, 19766) +HANDLE_BAT(, 19767) +HANDLE_BAT(, 19768) +HANDLE_BAT(, 19769) +HANDLE_BAT(, 19770) +HANDLE_BAT(, 19771) +HANDLE_BAT(, 19772) +HANDLE_BAT(, 19773) +HANDLE_BAT(, 19774) +HANDLE_BAT(, 19775) +HANDLE_BAT(, 19776) +HANDLE_BAT(, 19777) +HANDLE_BAT(, 19778) +HANDLE_BAT(, 19779) +HANDLE_BAT(, 19780) +HANDLE_BAT(, 19781) +HANDLE_BAT(, 19782) +HANDLE_BAT(, 19783) +HANDLE_BAT(, 19784) +HANDLE_BAT(, 19785) +HANDLE_BAT(, 19786) +HANDLE_BAT(, 19787) +HANDLE_BAT(, 19788) +HANDLE_BAT(, 19789) +HANDLE_BAT(, 19790) +HANDLE_BAT(, 19791) +HANDLE_BAT(, 19792) +HANDLE_BAT(, 19793) +HANDLE_BAT(, 19794) +HANDLE_BAT(, 19795) +HANDLE_BAT(, 19796) +HANDLE_BAT(, 19797) +HANDLE_BAT(, 19798) +HANDLE_BAT(, 19799) +HANDLE_BAT(, 19800) +HANDLE_BAT(, 19801) +HANDLE_BAT(, 19802) +HANDLE_BAT(, 19803) +HANDLE_BAT(, 19804) +HANDLE_BAT(, 19805) +HANDLE_BAT(, 19806) +HANDLE_BAT(, 19807) +HANDLE_BAT(, 19808) +HANDLE_BAT(, 19809) +HANDLE_BAT(, 19810) +HANDLE_BAT(, 19811) +HANDLE_BAT(, 19812) +HANDLE_BAT(, 19813) +HANDLE_BAT(, 19814) +HANDLE_BAT(, 19815) +HANDLE_BAT(, 19816) +HANDLE_BAT(, 19817) +HANDLE_BAT(, 19818) +HANDLE_BAT(, 19819) +HANDLE_BAT(, 19820) +HANDLE_BAT(, 19821) +HANDLE_BAT(, 19822) +HANDLE_BAT(, 19823) +HANDLE_BAT(, 19824) +HANDLE_BAT(, 19825) +HANDLE_BAT(, 19826) +HANDLE_BAT(, 19827) +HANDLE_BAT(, 19828) +HANDLE_BAT(, 19829) +HANDLE_BAT(, 19830) +HANDLE_BAT(, 19831) +HANDLE_BAT(, 19832) +HANDLE_BAT(, 19833) +HANDLE_BAT(, 19834) +HANDLE_BAT(, 19835) +HANDLE_BAT(, 19836) +HANDLE_BAT(, 19837) +HANDLE_BAT(, 19838) +HANDLE_BAT(, 19839) +HANDLE_BAT(, 19840) +HANDLE_BAT(, 19841) +HANDLE_BAT(, 19842) +HANDLE_BAT(, 19843) +HANDLE_BAT(, 19844) +HANDLE_BAT(, 19845) +HANDLE_BAT(, 19846) +HANDLE_BAT(, 19847) +HANDLE_BAT(, 19848) +HANDLE_BAT(, 19849) +HANDLE_BAT(, 19850) +HANDLE_BAT(, 19851) +HANDLE_BAT(, 19852) +HANDLE_BAT(, 19853) +HANDLE_BAT(, 19854) +HANDLE_BAT(, 19855) +HANDLE_BAT(, 19856) +HANDLE_BAT(, 19857) +HANDLE_BAT(, 19858) +HANDLE_BAT(, 19859) +HANDLE_BAT(, 19860) +HANDLE_BAT(, 19861) +HANDLE_BAT(, 19862) +HANDLE_BAT(, 19863) +HANDLE_BAT(, 19864) +HANDLE_BAT(, 19865) +HANDLE_BAT(, 19866) +HANDLE_BAT(, 19867) +HANDLE_BAT(, 19868) +HANDLE_BAT(, 19869) +HANDLE_BAT(, 19870) +HANDLE_BAT(, 19871) +HANDLE_BAT(, 19872) +HANDLE_BAT(, 19873) +HANDLE_BAT(, 19874) +HANDLE_BAT(, 19875) +HANDLE_BAT(, 19876) +HANDLE_BAT(, 19877) +HANDLE_BAT(, 19878) +HANDLE_BAT(, 19879) +HANDLE_BAT(, 19880) +HANDLE_BAT(, 19881) +HANDLE_BAT(, 19882) +HANDLE_BAT(, 19883) +HANDLE_BAT(, 19884) +HANDLE_BAT(, 19885) +HANDLE_BAT(, 19886) +HANDLE_BAT(, 19887) +HANDLE_BAT(, 19888) +HANDLE_BAT(, 19889) +HANDLE_BAT(, 19890) +HANDLE_BAT(, 19891) +HANDLE_BAT(, 19892) +HANDLE_BAT(, 19893) +HANDLE_BAT(, 19894) +HANDLE_BAT(, 19895) +HANDLE_BAT(, 19896) +HANDLE_BAT(, 19897) +HANDLE_BAT(, 19898) +HANDLE_BAT(, 19899) +HANDLE_BAT(, 19900) +HANDLE_BAT(, 19901) +HANDLE_BAT(, 19902) +HANDLE_BAT(, 19903) +HANDLE_BAT(, 19904) +HANDLE_BAT(, 19905) +HANDLE_BAT(, 19906) +HANDLE_BAT(, 19907) +HANDLE_BAT(, 19908) +HANDLE_BAT(, 19909) +HANDLE_BAT(, 19910) +HANDLE_BAT(, 19911) +HANDLE_BAT(, 19912) +HANDLE_BAT(, 19913) +HANDLE_BAT(, 19914) +HANDLE_BAT(, 19915) +HANDLE_BAT(, 19916) +HANDLE_BAT(, 19917) +HANDLE_BAT(, 19918) +HANDLE_BAT(, 19919) +HANDLE_BAT(, 19920) +HANDLE_BAT(, 19921) +HANDLE_BAT(, 19922) +HANDLE_BAT(, 19923) +HANDLE_BAT(, 19924) +HANDLE_BAT(, 19925) +HANDLE_BAT(, 19926) +HANDLE_BAT(, 19927) +HANDLE_BAT(, 19928) +HANDLE_BAT(, 19929) +HANDLE_BAT(, 19930) +HANDLE_BAT(, 19931) +HANDLE_BAT(, 19932) +HANDLE_BAT(, 19933) +HANDLE_BAT(, 19934) +HANDLE_BAT(, 19935) +HANDLE_BAT(, 19936) +HANDLE_BAT(, 19937) +HANDLE_BAT(, 19938) +HANDLE_BAT(, 19939) +HANDLE_BAT(, 19940) +HANDLE_BAT(, 19941) +HANDLE_BAT(, 19942) +HANDLE_BAT(, 19943) +HANDLE_BAT(, 19944) +HANDLE_BAT(, 19945) +HANDLE_BAT(, 19946) +HANDLE_BAT(, 19947) +HANDLE_BAT(, 19948) +HANDLE_BAT(, 19949) +HANDLE_BAT(, 19950) +HANDLE_BAT(, 19951) +HANDLE_BAT(, 19952) +HANDLE_BAT(, 19953) +HANDLE_BAT(, 19954) +HANDLE_BAT(, 19955) +HANDLE_BAT(, 19956) +HANDLE_BAT(, 19957) +HANDLE_BAT(, 19958) +HANDLE_BAT(, 19959) +HANDLE_BAT(, 19960) +HANDLE_BAT(, 19961) +HANDLE_BAT(, 19962) +HANDLE_BAT(, 19963) +HANDLE_BAT(, 19964) +HANDLE_BAT(, 19965) +HANDLE_BAT(, 19966) +HANDLE_BAT(, 19967) +HANDLE_BAT(, 19968) +HANDLE_BAT(, 19969) +HANDLE_BAT(, 19970) +HANDLE_BAT(, 19971) +HANDLE_BAT(, 19972) +HANDLE_BAT(, 19973) +HANDLE_BAT(, 19974) +HANDLE_BAT(, 19975) +HANDLE_BAT(, 19976) +HANDLE_BAT(, 19977) +HANDLE_BAT(, 19978) +HANDLE_BAT(, 19979) +HANDLE_BAT(, 19980) +HANDLE_BAT(, 19981) +HANDLE_BAT(, 19982) +HANDLE_BAT(, 19983) +HANDLE_BAT(, 19984) +HANDLE_BAT(, 19985) +HANDLE_BAT(, 19986) +HANDLE_BAT(, 19987) +HANDLE_BAT(, 19988) +HANDLE_BAT(, 19989) +HANDLE_BAT(, 19990) +HANDLE_BAT(, 19991) +HANDLE_BAT(, 19992) +HANDLE_BAT(, 19993) +HANDLE_BAT(, 19994) +HANDLE_BAT(, 19995) +HANDLE_BAT(, 19996) +HANDLE_BAT(, 19997) +HANDLE_BAT(, 19998) +HANDLE_BAT(, 19999) +HANDLE_BAT(, 20000) +HANDLE_BAT(, 20001) +HANDLE_BAT(, 20002) +HANDLE_BAT(, 20003) +HANDLE_BAT(, 20004) +HANDLE_BAT(, 20005) +HANDLE_BAT(, 20006) +HANDLE_BAT(, 20007) +HANDLE_BAT(, 20008) +HANDLE_BAT(, 20009) +HANDLE_BAT(, 20010) +HANDLE_BAT(, 20011) +HANDLE_BAT(, 20012) +HANDLE_BAT(, 20013) +HANDLE_BAT(, 20014) +HANDLE_BAT(, 20015) +HANDLE_BAT(, 20016) +HANDLE_BAT(, 20017) +HANDLE_BAT(, 20018) +HANDLE_BAT(, 20019) +HANDLE_BAT(, 20020) +HANDLE_BAT(, 20021) +HANDLE_BAT(, 20022) +HANDLE_BAT(, 20023) +HANDLE_BAT(, 20024) +HANDLE_BAT(, 20025) +HANDLE_BAT(, 20026) +HANDLE_BAT(, 20027) +HANDLE_BAT(, 20028) +HANDLE_BAT(, 20029) +HANDLE_BAT(, 20030) +HANDLE_BAT(, 20031) +HANDLE_BAT(, 20032) +HANDLE_BAT(, 20033) +HANDLE_BAT(, 20034) +HANDLE_BAT(, 20035) +HANDLE_BAT(, 20036) +HANDLE_BAT(, 20037) +HANDLE_BAT(, 20038) +HANDLE_BAT(, 20039) +HANDLE_BAT(, 20040) +HANDLE_BAT(, 20041) +HANDLE_BAT(, 20042) +HANDLE_BAT(, 20043) +HANDLE_BAT(, 20044) +HANDLE_BAT(, 20045) +HANDLE_BAT(, 20046) +HANDLE_BAT(, 20047) +HANDLE_BAT(, 20048) +HANDLE_BAT(, 20049) +HANDLE_BAT(, 20050) +HANDLE_BAT(, 20051) +HANDLE_BAT(, 20052) +HANDLE_BAT(, 20053) +HANDLE_BAT(, 20054) +HANDLE_BAT(, 20055) +HANDLE_BAT(, 20056) +HANDLE_BAT(, 20057) +HANDLE_BAT(, 20058) +HANDLE_BAT(, 20059) +HANDLE_BAT(, 20060) +HANDLE_BAT(, 20061) +HANDLE_BAT(, 20062) +HANDLE_BAT(, 20063) +HANDLE_BAT(, 20064) +HANDLE_BAT(, 20065) +HANDLE_BAT(, 20066) +HANDLE_BAT(, 20067) +HANDLE_BAT(, 20068) +HANDLE_BAT(, 20069) +HANDLE_BAT(, 20070) +HANDLE_BAT(, 20071) +HANDLE_BAT(, 20072) +HANDLE_BAT(, 20073) +HANDLE_BAT(, 20074) +HANDLE_BAT(, 20075) +HANDLE_BAT(, 20076) +HANDLE_BAT(, 20077) +HANDLE_BAT(, 20078) +HANDLE_BAT(, 20079) +HANDLE_BAT(, 20080) +HANDLE_BAT(, 20081) +HANDLE_BAT(, 20082) +HANDLE_BAT(, 20083) +HANDLE_BAT(, 20084) +HANDLE_BAT(, 20085) +HANDLE_BAT(, 20086) +HANDLE_BAT(, 20087) +HANDLE_BAT(, 20088) +HANDLE_BAT(, 20089) +HANDLE_BAT(, 20090) +HANDLE_BAT(, 20091) +HANDLE_BAT(, 20092) +HANDLE_BAT(, 20093) +HANDLE_BAT(, 20094) +HANDLE_BAT(, 20095) +HANDLE_BAT(, 20096) +HANDLE_BAT(, 20097) +HANDLE_BAT(, 20098) +HANDLE_BAT(, 20099) +HANDLE_BAT(, 20100) +HANDLE_BAT(, 20101) +HANDLE_BAT(, 20102) +HANDLE_BAT(, 20103) +HANDLE_BAT(, 20104) +HANDLE_BAT(, 20105) +HANDLE_BAT(, 20106) +HANDLE_BAT(, 20107) +HANDLE_BAT(, 20108) +HANDLE_BAT(, 20109) +HANDLE_BAT(, 20110) +HANDLE_BAT(, 20111) +HANDLE_BAT(, 20112) +HANDLE_BAT(, 20113) +HANDLE_BAT(, 20114) +HANDLE_BAT(, 20115) +HANDLE_BAT(, 20116) +HANDLE_BAT(, 20117) +HANDLE_BAT(, 20118) +HANDLE_BAT(, 20119) +HANDLE_BAT(, 20120) +HANDLE_BAT(, 20121) +HANDLE_BAT(, 20122) +HANDLE_BAT(, 20123) +HANDLE_BAT(, 20124) +HANDLE_BAT(, 20125) +HANDLE_BAT(, 20126) +HANDLE_BAT(, 20127) +HANDLE_BAT(, 20128) +HANDLE_BAT(, 20129) +HANDLE_BAT(, 20130) +HANDLE_BAT(, 20131) +HANDLE_BAT(, 20132) +HANDLE_BAT(, 20133) +HANDLE_BAT(, 20134) +HANDLE_BAT(, 20135) +HANDLE_BAT(, 20136) +HANDLE_BAT(, 20137) +HANDLE_BAT(, 20138) +HANDLE_BAT(, 20139) +HANDLE_BAT(, 20140) +HANDLE_BAT(, 20141) +HANDLE_BAT(, 20142) +HANDLE_BAT(, 20143) +HANDLE_BAT(, 20144) +HANDLE_BAT(, 20145) +HANDLE_BAT(, 20146) +HANDLE_BAT(, 20147) +HANDLE_BAT(, 20148) +HANDLE_BAT(, 20149) +HANDLE_BAT(, 20150) +HANDLE_BAT(, 20151) +HANDLE_BAT(, 20152) +HANDLE_BAT(, 20153) +HANDLE_BAT(, 20154) +HANDLE_BAT(, 20155) +HANDLE_BAT(, 20156) +HANDLE_BAT(, 20157) +HANDLE_BAT(, 20158) +HANDLE_BAT(, 20159) +HANDLE_BAT(, 20160) +HANDLE_BAT(, 20161) +HANDLE_BAT(, 20162) +HANDLE_BAT(, 20163) +HANDLE_BAT(, 20164) +HANDLE_BAT(, 20165) +HANDLE_BAT(, 20166) +HANDLE_BAT(, 20167) +HANDLE_BAT(, 20168) +HANDLE_BAT(, 20169) +HANDLE_BAT(, 20170) +HANDLE_BAT(, 20171) +HANDLE_BAT(, 20172) +HANDLE_BAT(, 20173) +HANDLE_BAT(, 20174) +HANDLE_BAT(, 20175) +HANDLE_BAT(, 20176) +HANDLE_BAT(, 20177) +HANDLE_BAT(, 20178) +HANDLE_BAT(, 20179) +HANDLE_BAT(, 20180) +HANDLE_BAT(, 20181) +HANDLE_BAT(, 20182) +HANDLE_BAT(, 20183) +HANDLE_BAT(, 20184) +HANDLE_BAT(, 20185) +HANDLE_BAT(, 20186) +HANDLE_BAT(, 20187) +HANDLE_BAT(, 20188) +HANDLE_BAT(, 20189) +HANDLE_BAT(, 20190) +HANDLE_BAT(, 20191) +HANDLE_BAT(, 20192) +HANDLE_BAT(, 20193) +HANDLE_BAT(, 20194) +HANDLE_BAT(, 20195) +HANDLE_BAT(, 20196) +HANDLE_BAT(, 20197) +HANDLE_BAT(, 20198) +HANDLE_BAT(, 20199) +HANDLE_BAT(, 20200) +HANDLE_BAT(, 20201) +HANDLE_BAT(, 20202) +HANDLE_BAT(, 20203) +HANDLE_BAT(, 20204) +HANDLE_BAT(, 20205) +HANDLE_BAT(, 20206) +HANDLE_BAT(, 20207) +HANDLE_BAT(, 20208) +HANDLE_BAT(, 20209) +HANDLE_BAT(, 20210) +HANDLE_BAT(, 20211) +HANDLE_BAT(, 20212) +HANDLE_BAT(, 20213) +HANDLE_BAT(, 20214) +HANDLE_BAT(, 20215) +HANDLE_BAT(, 20216) +HANDLE_BAT(, 20217) +HANDLE_BAT(, 20218) +HANDLE_BAT(, 20219) +HANDLE_BAT(, 20220) +HANDLE_BAT(, 20221) +HANDLE_BAT(, 20222) +HANDLE_BAT(, 20223) +HANDLE_BAT(, 20224) +HANDLE_BAT(, 20225) +HANDLE_BAT(, 20226) +HANDLE_BAT(, 20227) +HANDLE_BAT(, 20228) +HANDLE_BAT(, 20229) +HANDLE_BAT(, 20230) +HANDLE_BAT(, 20231) +HANDLE_BAT(, 20232) +HANDLE_BAT(, 20233) +HANDLE_BAT(, 20234) +HANDLE_BAT(, 20235) +HANDLE_BAT(, 20236) +HANDLE_BAT(, 20237) +HANDLE_BAT(, 20238) +HANDLE_BAT(, 20239) +HANDLE_BAT(, 20240) +HANDLE_BAT(, 20241) +HANDLE_BAT(, 20242) +HANDLE_BAT(, 20243) +HANDLE_BAT(, 20244) +HANDLE_BAT(, 20245) +HANDLE_BAT(, 20246) +HANDLE_BAT(, 20247) +HANDLE_BAT(, 20248) +HANDLE_BAT(, 20249) +HANDLE_BAT(, 20250) +HANDLE_BAT(, 20251) +HANDLE_BAT(, 20252) +HANDLE_BAT(, 20253) +HANDLE_BAT(, 20254) +HANDLE_BAT(, 20255) +HANDLE_BAT(, 20256) +HANDLE_BAT(, 20257) +HANDLE_BAT(, 20258) +HANDLE_BAT(, 20259) +HANDLE_BAT(, 20260) +HANDLE_BAT(, 20261) +HANDLE_BAT(, 20262) +HANDLE_BAT(, 20263) +HANDLE_BAT(, 20264) +HANDLE_BAT(, 20265) +HANDLE_BAT(, 20266) +HANDLE_BAT(, 20267) +HANDLE_BAT(, 20268) +HANDLE_BAT(, 20269) +HANDLE_BAT(, 20270) +HANDLE_BAT(, 20271) +HANDLE_BAT(, 20272) +HANDLE_BAT(, 20273) +HANDLE_BAT(, 20274) +HANDLE_BAT(, 20275) +HANDLE_BAT(, 20276) +HANDLE_BAT(, 20277) +HANDLE_BAT(, 20278) +HANDLE_BAT(, 20279) +HANDLE_BAT(, 20280) +HANDLE_BAT(, 20281) +HANDLE_BAT(, 20282) +HANDLE_BAT(, 20283) +HANDLE_BAT(, 20284) +HANDLE_BAT(, 20285) +HANDLE_BAT(, 20286) +HANDLE_BAT(, 20287) +HANDLE_BAT(, 20288) +HANDLE_BAT(, 20289) +HANDLE_BAT(, 20290) +HANDLE_BAT(, 20291) +HANDLE_BAT(, 20292) +HANDLE_BAT(, 20293) +HANDLE_BAT(, 20294) +HANDLE_BAT(, 20295) +HANDLE_BAT(, 20296) +HANDLE_BAT(, 20297) +HANDLE_BAT(, 20298) +HANDLE_BAT(, 20299) +HANDLE_BAT(, 20300) +HANDLE_BAT(, 20301) +HANDLE_BAT(, 20302) +HANDLE_BAT(, 20303) +HANDLE_BAT(, 20304) +HANDLE_BAT(, 20305) +HANDLE_BAT(, 20306) +HANDLE_BAT(, 20307) +HANDLE_BAT(, 20308) +HANDLE_BAT(, 20309) +HANDLE_BAT(, 20310) +HANDLE_BAT(, 20311) +HANDLE_BAT(, 20312) +HANDLE_BAT(, 20313) +HANDLE_BAT(, 20314) +HANDLE_BAT(, 20315) +HANDLE_BAT(, 20316) +HANDLE_BAT(, 20317) +HANDLE_BAT(, 20318) +HANDLE_BAT(, 20319) +HANDLE_BAT(, 20320) +HANDLE_BAT(, 20321) +HANDLE_BAT(, 20322) +HANDLE_BAT(, 20323) +HANDLE_BAT(, 20324) +HANDLE_BAT(, 20325) +HANDLE_BAT(, 20326) +HANDLE_BAT(, 20327) +HANDLE_BAT(, 20328) +HANDLE_BAT(, 20329) +HANDLE_BAT(, 20330) +HANDLE_BAT(, 20331) +HANDLE_BAT(, 20332) +HANDLE_BAT(, 20333) +HANDLE_BAT(, 20334) +HANDLE_BAT(, 20335) +HANDLE_BAT(, 20336) +HANDLE_BAT(, 20337) +HANDLE_BAT(, 20338) +HANDLE_BAT(, 20339) +HANDLE_BAT(, 20340) +HANDLE_BAT(, 20341) +HANDLE_BAT(, 20342) +HANDLE_BAT(, 20343) +HANDLE_BAT(, 20344) +HANDLE_BAT(, 20345) +HANDLE_BAT(, 20346) +HANDLE_BAT(, 20347) +HANDLE_BAT(, 20348) +HANDLE_BAT(, 20349) +HANDLE_BAT(, 20350) +HANDLE_BAT(, 20351) +HANDLE_BAT(, 20352) +HANDLE_BAT(, 20353) +HANDLE_BAT(, 20354) +HANDLE_BAT(, 20355) +HANDLE_BAT(, 20356) +HANDLE_BAT(, 20357) +HANDLE_BAT(, 20358) +HANDLE_BAT(, 20359) +HANDLE_BAT(, 20360) +HANDLE_BAT(, 20361) +HANDLE_BAT(, 20362) +HANDLE_BAT(, 20363) +HANDLE_BAT(, 20364) +HANDLE_BAT(, 20365) +HANDLE_BAT(, 20366) +HANDLE_BAT(, 20367) +HANDLE_BAT(, 20368) +HANDLE_BAT(, 20369) +HANDLE_BAT(, 20370) +HANDLE_BAT(, 20371) +HANDLE_BAT(, 20372) +HANDLE_BAT(, 20373) +HANDLE_BAT(, 20374) +HANDLE_BAT(, 20375) +HANDLE_BAT(, 20376) +HANDLE_BAT(, 20377) +HANDLE_BAT(, 20378) +HANDLE_BAT(, 20379) +HANDLE_BAT(, 20380) +HANDLE_BAT(, 20381) +HANDLE_BAT(, 20382) +HANDLE_BAT(, 20383) +HANDLE_BAT(, 20384) +HANDLE_BAT(, 20385) +HANDLE_BAT(, 20386) +HANDLE_BAT(, 20387) +HANDLE_BAT(, 20388) +HANDLE_BAT(, 20389) +HANDLE_BAT(, 20390) +HANDLE_BAT(, 20391) +HANDLE_BAT(, 20392) +HANDLE_BAT(, 20393) +HANDLE_BAT(, 20394) +HANDLE_BAT(, 20395) +HANDLE_BAT(, 20396) +HANDLE_BAT(, 20397) +HANDLE_BAT(, 20398) +HANDLE_BAT(, 20399) +HANDLE_BAT(, 20400) +HANDLE_BAT(, 20401) +HANDLE_BAT(, 20402) +HANDLE_BAT(, 20403) +HANDLE_BAT(, 20404) +HANDLE_BAT(, 20405) +HANDLE_BAT(, 20406) +HANDLE_BAT(, 20407) +HANDLE_BAT(, 20408) +HANDLE_BAT(, 20409) +HANDLE_BAT(, 20410) +HANDLE_BAT(, 20411) +HANDLE_BAT(, 20412) +HANDLE_BAT(, 20413) +HANDLE_BAT(, 20414) +HANDLE_BAT(, 20415) +HANDLE_BAT(, 20416) +HANDLE_BAT(, 20417) +HANDLE_BAT(, 20418) +HANDLE_BAT(, 20419) +HANDLE_BAT(, 20420) +HANDLE_BAT(, 20421) +HANDLE_BAT(, 20422) +HANDLE_BAT(, 20423) +HANDLE_BAT(, 20424) +HANDLE_BAT(, 20425) +HANDLE_BAT(, 20426) +HANDLE_BAT(, 20427) +HANDLE_BAT(, 20428) +HANDLE_BAT(, 20429) +HANDLE_BAT(, 20430) +HANDLE_BAT(, 20431) +HANDLE_BAT(, 20432) +HANDLE_BAT(, 20433) +HANDLE_BAT(, 20434) +HANDLE_BAT(, 20435) +HANDLE_BAT(, 20436) +HANDLE_BAT(, 20437) +HANDLE_BAT(, 20438) +HANDLE_BAT(, 20439) +HANDLE_BAT(, 20440) +HANDLE_BAT(, 20441) +HANDLE_BAT(, 20442) +HANDLE_BAT(, 20443) +HANDLE_BAT(, 20444) +HANDLE_BAT(, 20445) +HANDLE_BAT(, 20446) +HANDLE_BAT(, 20447) +HANDLE_BAT(, 20448) +HANDLE_BAT(, 20449) +HANDLE_BAT(, 20450) +HANDLE_BAT(, 20451) +HANDLE_BAT(, 20452) +HANDLE_BAT(, 20453) +HANDLE_BAT(, 20454) +HANDLE_BAT(, 20455) +HANDLE_BAT(, 20456) +HANDLE_BAT(, 20457) +HANDLE_BAT(, 20458) +HANDLE_BAT(, 20459) +HANDLE_BAT(, 20460) +HANDLE_BAT(, 20461) +HANDLE_BAT(, 20462) +HANDLE_BAT(, 20463) +HANDLE_BAT(, 20464) +HANDLE_BAT(, 20465) +HANDLE_BAT(, 20466) +HANDLE_BAT(, 20467) +HANDLE_BAT(, 20468) +HANDLE_BAT(, 20469) +HANDLE_BAT(, 20470) +HANDLE_BAT(, 20471) +HANDLE_BAT(, 20472) +HANDLE_BAT(, 20473) +HANDLE_BAT(, 20474) +HANDLE_BAT(, 20475) +HANDLE_BAT(, 20476) +HANDLE_BAT(, 20477) +HANDLE_BAT(, 20478) +HANDLE_BAT(, 20479) +HANDLE_BAT(, 20480) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 19457) +HANDLE_BAT(APINT_TYPE_PREFIX, 19458) +HANDLE_BAT(APINT_TYPE_PREFIX, 19459) +HANDLE_BAT(APINT_TYPE_PREFIX, 19460) +HANDLE_BAT(APINT_TYPE_PREFIX, 19461) +HANDLE_BAT(APINT_TYPE_PREFIX, 19462) +HANDLE_BAT(APINT_TYPE_PREFIX, 19463) +HANDLE_BAT(APINT_TYPE_PREFIX, 19464) +HANDLE_BAT(APINT_TYPE_PREFIX, 19465) +HANDLE_BAT(APINT_TYPE_PREFIX, 19466) +HANDLE_BAT(APINT_TYPE_PREFIX, 19467) +HANDLE_BAT(APINT_TYPE_PREFIX, 19468) +HANDLE_BAT(APINT_TYPE_PREFIX, 19469) +HANDLE_BAT(APINT_TYPE_PREFIX, 19470) +HANDLE_BAT(APINT_TYPE_PREFIX, 19471) +HANDLE_BAT(APINT_TYPE_PREFIX, 19472) +HANDLE_BAT(APINT_TYPE_PREFIX, 19473) +HANDLE_BAT(APINT_TYPE_PREFIX, 19474) +HANDLE_BAT(APINT_TYPE_PREFIX, 19475) +HANDLE_BAT(APINT_TYPE_PREFIX, 19476) +HANDLE_BAT(APINT_TYPE_PREFIX, 19477) +HANDLE_BAT(APINT_TYPE_PREFIX, 19478) +HANDLE_BAT(APINT_TYPE_PREFIX, 19479) +HANDLE_BAT(APINT_TYPE_PREFIX, 19480) +HANDLE_BAT(APINT_TYPE_PREFIX, 19481) +HANDLE_BAT(APINT_TYPE_PREFIX, 19482) +HANDLE_BAT(APINT_TYPE_PREFIX, 19483) +HANDLE_BAT(APINT_TYPE_PREFIX, 19484) +HANDLE_BAT(APINT_TYPE_PREFIX, 19485) +HANDLE_BAT(APINT_TYPE_PREFIX, 19486) +HANDLE_BAT(APINT_TYPE_PREFIX, 19487) +HANDLE_BAT(APINT_TYPE_PREFIX, 19488) +HANDLE_BAT(APINT_TYPE_PREFIX, 19489) +HANDLE_BAT(APINT_TYPE_PREFIX, 19490) +HANDLE_BAT(APINT_TYPE_PREFIX, 19491) +HANDLE_BAT(APINT_TYPE_PREFIX, 19492) +HANDLE_BAT(APINT_TYPE_PREFIX, 19493) +HANDLE_BAT(APINT_TYPE_PREFIX, 19494) +HANDLE_BAT(APINT_TYPE_PREFIX, 19495) +HANDLE_BAT(APINT_TYPE_PREFIX, 19496) +HANDLE_BAT(APINT_TYPE_PREFIX, 19497) +HANDLE_BAT(APINT_TYPE_PREFIX, 19498) +HANDLE_BAT(APINT_TYPE_PREFIX, 19499) +HANDLE_BAT(APINT_TYPE_PREFIX, 19500) +HANDLE_BAT(APINT_TYPE_PREFIX, 19501) +HANDLE_BAT(APINT_TYPE_PREFIX, 19502) +HANDLE_BAT(APINT_TYPE_PREFIX, 19503) +HANDLE_BAT(APINT_TYPE_PREFIX, 19504) +HANDLE_BAT(APINT_TYPE_PREFIX, 19505) +HANDLE_BAT(APINT_TYPE_PREFIX, 19506) +HANDLE_BAT(APINT_TYPE_PREFIX, 19507) +HANDLE_BAT(APINT_TYPE_PREFIX, 19508) +HANDLE_BAT(APINT_TYPE_PREFIX, 19509) +HANDLE_BAT(APINT_TYPE_PREFIX, 19510) +HANDLE_BAT(APINT_TYPE_PREFIX, 19511) +HANDLE_BAT(APINT_TYPE_PREFIX, 19512) +HANDLE_BAT(APINT_TYPE_PREFIX, 19513) +HANDLE_BAT(APINT_TYPE_PREFIX, 19514) +HANDLE_BAT(APINT_TYPE_PREFIX, 19515) +HANDLE_BAT(APINT_TYPE_PREFIX, 19516) +HANDLE_BAT(APINT_TYPE_PREFIX, 19517) +HANDLE_BAT(APINT_TYPE_PREFIX, 19518) +HANDLE_BAT(APINT_TYPE_PREFIX, 19519) +HANDLE_BAT(APINT_TYPE_PREFIX, 19520) +HANDLE_BAT(APINT_TYPE_PREFIX, 19521) +HANDLE_BAT(APINT_TYPE_PREFIX, 19522) +HANDLE_BAT(APINT_TYPE_PREFIX, 19523) +HANDLE_BAT(APINT_TYPE_PREFIX, 19524) +HANDLE_BAT(APINT_TYPE_PREFIX, 19525) +HANDLE_BAT(APINT_TYPE_PREFIX, 19526) +HANDLE_BAT(APINT_TYPE_PREFIX, 19527) +HANDLE_BAT(APINT_TYPE_PREFIX, 19528) +HANDLE_BAT(APINT_TYPE_PREFIX, 19529) +HANDLE_BAT(APINT_TYPE_PREFIX, 19530) +HANDLE_BAT(APINT_TYPE_PREFIX, 19531) +HANDLE_BAT(APINT_TYPE_PREFIX, 19532) +HANDLE_BAT(APINT_TYPE_PREFIX, 19533) +HANDLE_BAT(APINT_TYPE_PREFIX, 19534) +HANDLE_BAT(APINT_TYPE_PREFIX, 19535) +HANDLE_BAT(APINT_TYPE_PREFIX, 19536) +HANDLE_BAT(APINT_TYPE_PREFIX, 19537) +HANDLE_BAT(APINT_TYPE_PREFIX, 19538) +HANDLE_BAT(APINT_TYPE_PREFIX, 19539) +HANDLE_BAT(APINT_TYPE_PREFIX, 19540) +HANDLE_BAT(APINT_TYPE_PREFIX, 19541) +HANDLE_BAT(APINT_TYPE_PREFIX, 19542) +HANDLE_BAT(APINT_TYPE_PREFIX, 19543) +HANDLE_BAT(APINT_TYPE_PREFIX, 19544) +HANDLE_BAT(APINT_TYPE_PREFIX, 19545) +HANDLE_BAT(APINT_TYPE_PREFIX, 19546) +HANDLE_BAT(APINT_TYPE_PREFIX, 19547) +HANDLE_BAT(APINT_TYPE_PREFIX, 19548) +HANDLE_BAT(APINT_TYPE_PREFIX, 19549) +HANDLE_BAT(APINT_TYPE_PREFIX, 19550) +HANDLE_BAT(APINT_TYPE_PREFIX, 19551) +HANDLE_BAT(APINT_TYPE_PREFIX, 19552) +HANDLE_BAT(APINT_TYPE_PREFIX, 19553) +HANDLE_BAT(APINT_TYPE_PREFIX, 19554) +HANDLE_BAT(APINT_TYPE_PREFIX, 19555) +HANDLE_BAT(APINT_TYPE_PREFIX, 19556) +HANDLE_BAT(APINT_TYPE_PREFIX, 19557) +HANDLE_BAT(APINT_TYPE_PREFIX, 19558) +HANDLE_BAT(APINT_TYPE_PREFIX, 19559) +HANDLE_BAT(APINT_TYPE_PREFIX, 19560) +HANDLE_BAT(APINT_TYPE_PREFIX, 19561) +HANDLE_BAT(APINT_TYPE_PREFIX, 19562) +HANDLE_BAT(APINT_TYPE_PREFIX, 19563) +HANDLE_BAT(APINT_TYPE_PREFIX, 19564) +HANDLE_BAT(APINT_TYPE_PREFIX, 19565) +HANDLE_BAT(APINT_TYPE_PREFIX, 19566) +HANDLE_BAT(APINT_TYPE_PREFIX, 19567) +HANDLE_BAT(APINT_TYPE_PREFIX, 19568) +HANDLE_BAT(APINT_TYPE_PREFIX, 19569) +HANDLE_BAT(APINT_TYPE_PREFIX, 19570) +HANDLE_BAT(APINT_TYPE_PREFIX, 19571) +HANDLE_BAT(APINT_TYPE_PREFIX, 19572) +HANDLE_BAT(APINT_TYPE_PREFIX, 19573) +HANDLE_BAT(APINT_TYPE_PREFIX, 19574) +HANDLE_BAT(APINT_TYPE_PREFIX, 19575) +HANDLE_BAT(APINT_TYPE_PREFIX, 19576) +HANDLE_BAT(APINT_TYPE_PREFIX, 19577) +HANDLE_BAT(APINT_TYPE_PREFIX, 19578) +HANDLE_BAT(APINT_TYPE_PREFIX, 19579) +HANDLE_BAT(APINT_TYPE_PREFIX, 19580) +HANDLE_BAT(APINT_TYPE_PREFIX, 19581) +HANDLE_BAT(APINT_TYPE_PREFIX, 19582) +HANDLE_BAT(APINT_TYPE_PREFIX, 19583) +HANDLE_BAT(APINT_TYPE_PREFIX, 19584) +HANDLE_BAT(APINT_TYPE_PREFIX, 19585) +HANDLE_BAT(APINT_TYPE_PREFIX, 19586) +HANDLE_BAT(APINT_TYPE_PREFIX, 19587) +HANDLE_BAT(APINT_TYPE_PREFIX, 19588) +HANDLE_BAT(APINT_TYPE_PREFIX, 19589) +HANDLE_BAT(APINT_TYPE_PREFIX, 19590) +HANDLE_BAT(APINT_TYPE_PREFIX, 19591) +HANDLE_BAT(APINT_TYPE_PREFIX, 19592) +HANDLE_BAT(APINT_TYPE_PREFIX, 19593) +HANDLE_BAT(APINT_TYPE_PREFIX, 19594) +HANDLE_BAT(APINT_TYPE_PREFIX, 19595) +HANDLE_BAT(APINT_TYPE_PREFIX, 19596) +HANDLE_BAT(APINT_TYPE_PREFIX, 19597) +HANDLE_BAT(APINT_TYPE_PREFIX, 19598) +HANDLE_BAT(APINT_TYPE_PREFIX, 19599) +HANDLE_BAT(APINT_TYPE_PREFIX, 19600) +HANDLE_BAT(APINT_TYPE_PREFIX, 19601) +HANDLE_BAT(APINT_TYPE_PREFIX, 19602) +HANDLE_BAT(APINT_TYPE_PREFIX, 19603) +HANDLE_BAT(APINT_TYPE_PREFIX, 19604) +HANDLE_BAT(APINT_TYPE_PREFIX, 19605) +HANDLE_BAT(APINT_TYPE_PREFIX, 19606) +HANDLE_BAT(APINT_TYPE_PREFIX, 19607) +HANDLE_BAT(APINT_TYPE_PREFIX, 19608) +HANDLE_BAT(APINT_TYPE_PREFIX, 19609) +HANDLE_BAT(APINT_TYPE_PREFIX, 19610) +HANDLE_BAT(APINT_TYPE_PREFIX, 19611) +HANDLE_BAT(APINT_TYPE_PREFIX, 19612) +HANDLE_BAT(APINT_TYPE_PREFIX, 19613) +HANDLE_BAT(APINT_TYPE_PREFIX, 19614) +HANDLE_BAT(APINT_TYPE_PREFIX, 19615) +HANDLE_BAT(APINT_TYPE_PREFIX, 19616) +HANDLE_BAT(APINT_TYPE_PREFIX, 19617) +HANDLE_BAT(APINT_TYPE_PREFIX, 19618) +HANDLE_BAT(APINT_TYPE_PREFIX, 19619) +HANDLE_BAT(APINT_TYPE_PREFIX, 19620) +HANDLE_BAT(APINT_TYPE_PREFIX, 19621) +HANDLE_BAT(APINT_TYPE_PREFIX, 19622) +HANDLE_BAT(APINT_TYPE_PREFIX, 19623) +HANDLE_BAT(APINT_TYPE_PREFIX, 19624) +HANDLE_BAT(APINT_TYPE_PREFIX, 19625) +HANDLE_BAT(APINT_TYPE_PREFIX, 19626) +HANDLE_BAT(APINT_TYPE_PREFIX, 19627) +HANDLE_BAT(APINT_TYPE_PREFIX, 19628) +HANDLE_BAT(APINT_TYPE_PREFIX, 19629) +HANDLE_BAT(APINT_TYPE_PREFIX, 19630) +HANDLE_BAT(APINT_TYPE_PREFIX, 19631) +HANDLE_BAT(APINT_TYPE_PREFIX, 19632) +HANDLE_BAT(APINT_TYPE_PREFIX, 19633) +HANDLE_BAT(APINT_TYPE_PREFIX, 19634) +HANDLE_BAT(APINT_TYPE_PREFIX, 19635) +HANDLE_BAT(APINT_TYPE_PREFIX, 19636) +HANDLE_BAT(APINT_TYPE_PREFIX, 19637) +HANDLE_BAT(APINT_TYPE_PREFIX, 19638) +HANDLE_BAT(APINT_TYPE_PREFIX, 19639) +HANDLE_BAT(APINT_TYPE_PREFIX, 19640) +HANDLE_BAT(APINT_TYPE_PREFIX, 19641) +HANDLE_BAT(APINT_TYPE_PREFIX, 19642) +HANDLE_BAT(APINT_TYPE_PREFIX, 19643) +HANDLE_BAT(APINT_TYPE_PREFIX, 19644) +HANDLE_BAT(APINT_TYPE_PREFIX, 19645) +HANDLE_BAT(APINT_TYPE_PREFIX, 19646) +HANDLE_BAT(APINT_TYPE_PREFIX, 19647) +HANDLE_BAT(APINT_TYPE_PREFIX, 19648) +HANDLE_BAT(APINT_TYPE_PREFIX, 19649) +HANDLE_BAT(APINT_TYPE_PREFIX, 19650) +HANDLE_BAT(APINT_TYPE_PREFIX, 19651) +HANDLE_BAT(APINT_TYPE_PREFIX, 19652) +HANDLE_BAT(APINT_TYPE_PREFIX, 19653) +HANDLE_BAT(APINT_TYPE_PREFIX, 19654) +HANDLE_BAT(APINT_TYPE_PREFIX, 19655) +HANDLE_BAT(APINT_TYPE_PREFIX, 19656) +HANDLE_BAT(APINT_TYPE_PREFIX, 19657) +HANDLE_BAT(APINT_TYPE_PREFIX, 19658) +HANDLE_BAT(APINT_TYPE_PREFIX, 19659) +HANDLE_BAT(APINT_TYPE_PREFIX, 19660) +HANDLE_BAT(APINT_TYPE_PREFIX, 19661) +HANDLE_BAT(APINT_TYPE_PREFIX, 19662) +HANDLE_BAT(APINT_TYPE_PREFIX, 19663) +HANDLE_BAT(APINT_TYPE_PREFIX, 19664) +HANDLE_BAT(APINT_TYPE_PREFIX, 19665) +HANDLE_BAT(APINT_TYPE_PREFIX, 19666) +HANDLE_BAT(APINT_TYPE_PREFIX, 19667) +HANDLE_BAT(APINT_TYPE_PREFIX, 19668) +HANDLE_BAT(APINT_TYPE_PREFIX, 19669) +HANDLE_BAT(APINT_TYPE_PREFIX, 19670) +HANDLE_BAT(APINT_TYPE_PREFIX, 19671) +HANDLE_BAT(APINT_TYPE_PREFIX, 19672) +HANDLE_BAT(APINT_TYPE_PREFIX, 19673) +HANDLE_BAT(APINT_TYPE_PREFIX, 19674) +HANDLE_BAT(APINT_TYPE_PREFIX, 19675) +HANDLE_BAT(APINT_TYPE_PREFIX, 19676) +HANDLE_BAT(APINT_TYPE_PREFIX, 19677) +HANDLE_BAT(APINT_TYPE_PREFIX, 19678) +HANDLE_BAT(APINT_TYPE_PREFIX, 19679) +HANDLE_BAT(APINT_TYPE_PREFIX, 19680) +HANDLE_BAT(APINT_TYPE_PREFIX, 19681) +HANDLE_BAT(APINT_TYPE_PREFIX, 19682) +HANDLE_BAT(APINT_TYPE_PREFIX, 19683) +HANDLE_BAT(APINT_TYPE_PREFIX, 19684) +HANDLE_BAT(APINT_TYPE_PREFIX, 19685) +HANDLE_BAT(APINT_TYPE_PREFIX, 19686) +HANDLE_BAT(APINT_TYPE_PREFIX, 19687) +HANDLE_BAT(APINT_TYPE_PREFIX, 19688) +HANDLE_BAT(APINT_TYPE_PREFIX, 19689) +HANDLE_BAT(APINT_TYPE_PREFIX, 19690) +HANDLE_BAT(APINT_TYPE_PREFIX, 19691) +HANDLE_BAT(APINT_TYPE_PREFIX, 19692) +HANDLE_BAT(APINT_TYPE_PREFIX, 19693) +HANDLE_BAT(APINT_TYPE_PREFIX, 19694) +HANDLE_BAT(APINT_TYPE_PREFIX, 19695) +HANDLE_BAT(APINT_TYPE_PREFIX, 19696) +HANDLE_BAT(APINT_TYPE_PREFIX, 19697) +HANDLE_BAT(APINT_TYPE_PREFIX, 19698) +HANDLE_BAT(APINT_TYPE_PREFIX, 19699) +HANDLE_BAT(APINT_TYPE_PREFIX, 19700) +HANDLE_BAT(APINT_TYPE_PREFIX, 19701) +HANDLE_BAT(APINT_TYPE_PREFIX, 19702) +HANDLE_BAT(APINT_TYPE_PREFIX, 19703) +HANDLE_BAT(APINT_TYPE_PREFIX, 19704) +HANDLE_BAT(APINT_TYPE_PREFIX, 19705) +HANDLE_BAT(APINT_TYPE_PREFIX, 19706) +HANDLE_BAT(APINT_TYPE_PREFIX, 19707) +HANDLE_BAT(APINT_TYPE_PREFIX, 19708) +HANDLE_BAT(APINT_TYPE_PREFIX, 19709) +HANDLE_BAT(APINT_TYPE_PREFIX, 19710) +HANDLE_BAT(APINT_TYPE_PREFIX, 19711) +HANDLE_BAT(APINT_TYPE_PREFIX, 19712) +HANDLE_BAT(APINT_TYPE_PREFIX, 19713) +HANDLE_BAT(APINT_TYPE_PREFIX, 19714) +HANDLE_BAT(APINT_TYPE_PREFIX, 19715) +HANDLE_BAT(APINT_TYPE_PREFIX, 19716) +HANDLE_BAT(APINT_TYPE_PREFIX, 19717) +HANDLE_BAT(APINT_TYPE_PREFIX, 19718) +HANDLE_BAT(APINT_TYPE_PREFIX, 19719) +HANDLE_BAT(APINT_TYPE_PREFIX, 19720) +HANDLE_BAT(APINT_TYPE_PREFIX, 19721) +HANDLE_BAT(APINT_TYPE_PREFIX, 19722) +HANDLE_BAT(APINT_TYPE_PREFIX, 19723) +HANDLE_BAT(APINT_TYPE_PREFIX, 19724) +HANDLE_BAT(APINT_TYPE_PREFIX, 19725) +HANDLE_BAT(APINT_TYPE_PREFIX, 19726) +HANDLE_BAT(APINT_TYPE_PREFIX, 19727) +HANDLE_BAT(APINT_TYPE_PREFIX, 19728) +HANDLE_BAT(APINT_TYPE_PREFIX, 19729) +HANDLE_BAT(APINT_TYPE_PREFIX, 19730) +HANDLE_BAT(APINT_TYPE_PREFIX, 19731) +HANDLE_BAT(APINT_TYPE_PREFIX, 19732) +HANDLE_BAT(APINT_TYPE_PREFIX, 19733) +HANDLE_BAT(APINT_TYPE_PREFIX, 19734) +HANDLE_BAT(APINT_TYPE_PREFIX, 19735) +HANDLE_BAT(APINT_TYPE_PREFIX, 19736) +HANDLE_BAT(APINT_TYPE_PREFIX, 19737) +HANDLE_BAT(APINT_TYPE_PREFIX, 19738) +HANDLE_BAT(APINT_TYPE_PREFIX, 19739) +HANDLE_BAT(APINT_TYPE_PREFIX, 19740) +HANDLE_BAT(APINT_TYPE_PREFIX, 19741) +HANDLE_BAT(APINT_TYPE_PREFIX, 19742) +HANDLE_BAT(APINT_TYPE_PREFIX, 19743) +HANDLE_BAT(APINT_TYPE_PREFIX, 19744) +HANDLE_BAT(APINT_TYPE_PREFIX, 19745) +HANDLE_BAT(APINT_TYPE_PREFIX, 19746) +HANDLE_BAT(APINT_TYPE_PREFIX, 19747) +HANDLE_BAT(APINT_TYPE_PREFIX, 19748) +HANDLE_BAT(APINT_TYPE_PREFIX, 19749) +HANDLE_BAT(APINT_TYPE_PREFIX, 19750) +HANDLE_BAT(APINT_TYPE_PREFIX, 19751) +HANDLE_BAT(APINT_TYPE_PREFIX, 19752) +HANDLE_BAT(APINT_TYPE_PREFIX, 19753) +HANDLE_BAT(APINT_TYPE_PREFIX, 19754) +HANDLE_BAT(APINT_TYPE_PREFIX, 19755) +HANDLE_BAT(APINT_TYPE_PREFIX, 19756) +HANDLE_BAT(APINT_TYPE_PREFIX, 19757) +HANDLE_BAT(APINT_TYPE_PREFIX, 19758) +HANDLE_BAT(APINT_TYPE_PREFIX, 19759) +HANDLE_BAT(APINT_TYPE_PREFIX, 19760) +HANDLE_BAT(APINT_TYPE_PREFIX, 19761) +HANDLE_BAT(APINT_TYPE_PREFIX, 19762) +HANDLE_BAT(APINT_TYPE_PREFIX, 19763) +HANDLE_BAT(APINT_TYPE_PREFIX, 19764) +HANDLE_BAT(APINT_TYPE_PREFIX, 19765) +HANDLE_BAT(APINT_TYPE_PREFIX, 19766) +HANDLE_BAT(APINT_TYPE_PREFIX, 19767) +HANDLE_BAT(APINT_TYPE_PREFIX, 19768) +HANDLE_BAT(APINT_TYPE_PREFIX, 19769) +HANDLE_BAT(APINT_TYPE_PREFIX, 19770) +HANDLE_BAT(APINT_TYPE_PREFIX, 19771) +HANDLE_BAT(APINT_TYPE_PREFIX, 19772) +HANDLE_BAT(APINT_TYPE_PREFIX, 19773) +HANDLE_BAT(APINT_TYPE_PREFIX, 19774) +HANDLE_BAT(APINT_TYPE_PREFIX, 19775) +HANDLE_BAT(APINT_TYPE_PREFIX, 19776) +HANDLE_BAT(APINT_TYPE_PREFIX, 19777) +HANDLE_BAT(APINT_TYPE_PREFIX, 19778) +HANDLE_BAT(APINT_TYPE_PREFIX, 19779) +HANDLE_BAT(APINT_TYPE_PREFIX, 19780) +HANDLE_BAT(APINT_TYPE_PREFIX, 19781) +HANDLE_BAT(APINT_TYPE_PREFIX, 19782) +HANDLE_BAT(APINT_TYPE_PREFIX, 19783) +HANDLE_BAT(APINT_TYPE_PREFIX, 19784) +HANDLE_BAT(APINT_TYPE_PREFIX, 19785) +HANDLE_BAT(APINT_TYPE_PREFIX, 19786) +HANDLE_BAT(APINT_TYPE_PREFIX, 19787) +HANDLE_BAT(APINT_TYPE_PREFIX, 19788) +HANDLE_BAT(APINT_TYPE_PREFIX, 19789) +HANDLE_BAT(APINT_TYPE_PREFIX, 19790) +HANDLE_BAT(APINT_TYPE_PREFIX, 19791) +HANDLE_BAT(APINT_TYPE_PREFIX, 19792) +HANDLE_BAT(APINT_TYPE_PREFIX, 19793) +HANDLE_BAT(APINT_TYPE_PREFIX, 19794) +HANDLE_BAT(APINT_TYPE_PREFIX, 19795) +HANDLE_BAT(APINT_TYPE_PREFIX, 19796) +HANDLE_BAT(APINT_TYPE_PREFIX, 19797) +HANDLE_BAT(APINT_TYPE_PREFIX, 19798) +HANDLE_BAT(APINT_TYPE_PREFIX, 19799) +HANDLE_BAT(APINT_TYPE_PREFIX, 19800) +HANDLE_BAT(APINT_TYPE_PREFIX, 19801) +HANDLE_BAT(APINT_TYPE_PREFIX, 19802) +HANDLE_BAT(APINT_TYPE_PREFIX, 19803) +HANDLE_BAT(APINT_TYPE_PREFIX, 19804) +HANDLE_BAT(APINT_TYPE_PREFIX, 19805) +HANDLE_BAT(APINT_TYPE_PREFIX, 19806) +HANDLE_BAT(APINT_TYPE_PREFIX, 19807) +HANDLE_BAT(APINT_TYPE_PREFIX, 19808) +HANDLE_BAT(APINT_TYPE_PREFIX, 19809) +HANDLE_BAT(APINT_TYPE_PREFIX, 19810) +HANDLE_BAT(APINT_TYPE_PREFIX, 19811) +HANDLE_BAT(APINT_TYPE_PREFIX, 19812) +HANDLE_BAT(APINT_TYPE_PREFIX, 19813) +HANDLE_BAT(APINT_TYPE_PREFIX, 19814) +HANDLE_BAT(APINT_TYPE_PREFIX, 19815) +HANDLE_BAT(APINT_TYPE_PREFIX, 19816) +HANDLE_BAT(APINT_TYPE_PREFIX, 19817) +HANDLE_BAT(APINT_TYPE_PREFIX, 19818) +HANDLE_BAT(APINT_TYPE_PREFIX, 19819) +HANDLE_BAT(APINT_TYPE_PREFIX, 19820) +HANDLE_BAT(APINT_TYPE_PREFIX, 19821) +HANDLE_BAT(APINT_TYPE_PREFIX, 19822) +HANDLE_BAT(APINT_TYPE_PREFIX, 19823) +HANDLE_BAT(APINT_TYPE_PREFIX, 19824) +HANDLE_BAT(APINT_TYPE_PREFIX, 19825) +HANDLE_BAT(APINT_TYPE_PREFIX, 19826) +HANDLE_BAT(APINT_TYPE_PREFIX, 19827) +HANDLE_BAT(APINT_TYPE_PREFIX, 19828) +HANDLE_BAT(APINT_TYPE_PREFIX, 19829) +HANDLE_BAT(APINT_TYPE_PREFIX, 19830) +HANDLE_BAT(APINT_TYPE_PREFIX, 19831) +HANDLE_BAT(APINT_TYPE_PREFIX, 19832) +HANDLE_BAT(APINT_TYPE_PREFIX, 19833) +HANDLE_BAT(APINT_TYPE_PREFIX, 19834) +HANDLE_BAT(APINT_TYPE_PREFIX, 19835) +HANDLE_BAT(APINT_TYPE_PREFIX, 19836) +HANDLE_BAT(APINT_TYPE_PREFIX, 19837) +HANDLE_BAT(APINT_TYPE_PREFIX, 19838) +HANDLE_BAT(APINT_TYPE_PREFIX, 19839) +HANDLE_BAT(APINT_TYPE_PREFIX, 19840) +HANDLE_BAT(APINT_TYPE_PREFIX, 19841) +HANDLE_BAT(APINT_TYPE_PREFIX, 19842) +HANDLE_BAT(APINT_TYPE_PREFIX, 19843) +HANDLE_BAT(APINT_TYPE_PREFIX, 19844) +HANDLE_BAT(APINT_TYPE_PREFIX, 19845) +HANDLE_BAT(APINT_TYPE_PREFIX, 19846) +HANDLE_BAT(APINT_TYPE_PREFIX, 19847) +HANDLE_BAT(APINT_TYPE_PREFIX, 19848) +HANDLE_BAT(APINT_TYPE_PREFIX, 19849) +HANDLE_BAT(APINT_TYPE_PREFIX, 19850) +HANDLE_BAT(APINT_TYPE_PREFIX, 19851) +HANDLE_BAT(APINT_TYPE_PREFIX, 19852) +HANDLE_BAT(APINT_TYPE_PREFIX, 19853) +HANDLE_BAT(APINT_TYPE_PREFIX, 19854) +HANDLE_BAT(APINT_TYPE_PREFIX, 19855) +HANDLE_BAT(APINT_TYPE_PREFIX, 19856) +HANDLE_BAT(APINT_TYPE_PREFIX, 19857) +HANDLE_BAT(APINT_TYPE_PREFIX, 19858) +HANDLE_BAT(APINT_TYPE_PREFIX, 19859) +HANDLE_BAT(APINT_TYPE_PREFIX, 19860) +HANDLE_BAT(APINT_TYPE_PREFIX, 19861) +HANDLE_BAT(APINT_TYPE_PREFIX, 19862) +HANDLE_BAT(APINT_TYPE_PREFIX, 19863) +HANDLE_BAT(APINT_TYPE_PREFIX, 19864) +HANDLE_BAT(APINT_TYPE_PREFIX, 19865) +HANDLE_BAT(APINT_TYPE_PREFIX, 19866) +HANDLE_BAT(APINT_TYPE_PREFIX, 19867) +HANDLE_BAT(APINT_TYPE_PREFIX, 19868) +HANDLE_BAT(APINT_TYPE_PREFIX, 19869) +HANDLE_BAT(APINT_TYPE_PREFIX, 19870) +HANDLE_BAT(APINT_TYPE_PREFIX, 19871) +HANDLE_BAT(APINT_TYPE_PREFIX, 19872) +HANDLE_BAT(APINT_TYPE_PREFIX, 19873) +HANDLE_BAT(APINT_TYPE_PREFIX, 19874) +HANDLE_BAT(APINT_TYPE_PREFIX, 19875) +HANDLE_BAT(APINT_TYPE_PREFIX, 19876) +HANDLE_BAT(APINT_TYPE_PREFIX, 19877) +HANDLE_BAT(APINT_TYPE_PREFIX, 19878) +HANDLE_BAT(APINT_TYPE_PREFIX, 19879) +HANDLE_BAT(APINT_TYPE_PREFIX, 19880) +HANDLE_BAT(APINT_TYPE_PREFIX, 19881) +HANDLE_BAT(APINT_TYPE_PREFIX, 19882) +HANDLE_BAT(APINT_TYPE_PREFIX, 19883) +HANDLE_BAT(APINT_TYPE_PREFIX, 19884) +HANDLE_BAT(APINT_TYPE_PREFIX, 19885) +HANDLE_BAT(APINT_TYPE_PREFIX, 19886) +HANDLE_BAT(APINT_TYPE_PREFIX, 19887) +HANDLE_BAT(APINT_TYPE_PREFIX, 19888) +HANDLE_BAT(APINT_TYPE_PREFIX, 19889) +HANDLE_BAT(APINT_TYPE_PREFIX, 19890) +HANDLE_BAT(APINT_TYPE_PREFIX, 19891) +HANDLE_BAT(APINT_TYPE_PREFIX, 19892) +HANDLE_BAT(APINT_TYPE_PREFIX, 19893) +HANDLE_BAT(APINT_TYPE_PREFIX, 19894) +HANDLE_BAT(APINT_TYPE_PREFIX, 19895) +HANDLE_BAT(APINT_TYPE_PREFIX, 19896) +HANDLE_BAT(APINT_TYPE_PREFIX, 19897) +HANDLE_BAT(APINT_TYPE_PREFIX, 19898) +HANDLE_BAT(APINT_TYPE_PREFIX, 19899) +HANDLE_BAT(APINT_TYPE_PREFIX, 19900) +HANDLE_BAT(APINT_TYPE_PREFIX, 19901) +HANDLE_BAT(APINT_TYPE_PREFIX, 19902) +HANDLE_BAT(APINT_TYPE_PREFIX, 19903) +HANDLE_BAT(APINT_TYPE_PREFIX, 19904) +HANDLE_BAT(APINT_TYPE_PREFIX, 19905) +HANDLE_BAT(APINT_TYPE_PREFIX, 19906) +HANDLE_BAT(APINT_TYPE_PREFIX, 19907) +HANDLE_BAT(APINT_TYPE_PREFIX, 19908) +HANDLE_BAT(APINT_TYPE_PREFIX, 19909) +HANDLE_BAT(APINT_TYPE_PREFIX, 19910) +HANDLE_BAT(APINT_TYPE_PREFIX, 19911) +HANDLE_BAT(APINT_TYPE_PREFIX, 19912) +HANDLE_BAT(APINT_TYPE_PREFIX, 19913) +HANDLE_BAT(APINT_TYPE_PREFIX, 19914) +HANDLE_BAT(APINT_TYPE_PREFIX, 19915) +HANDLE_BAT(APINT_TYPE_PREFIX, 19916) +HANDLE_BAT(APINT_TYPE_PREFIX, 19917) +HANDLE_BAT(APINT_TYPE_PREFIX, 19918) +HANDLE_BAT(APINT_TYPE_PREFIX, 19919) +HANDLE_BAT(APINT_TYPE_PREFIX, 19920) +HANDLE_BAT(APINT_TYPE_PREFIX, 19921) +HANDLE_BAT(APINT_TYPE_PREFIX, 19922) +HANDLE_BAT(APINT_TYPE_PREFIX, 19923) +HANDLE_BAT(APINT_TYPE_PREFIX, 19924) +HANDLE_BAT(APINT_TYPE_PREFIX, 19925) +HANDLE_BAT(APINT_TYPE_PREFIX, 19926) +HANDLE_BAT(APINT_TYPE_PREFIX, 19927) +HANDLE_BAT(APINT_TYPE_PREFIX, 19928) +HANDLE_BAT(APINT_TYPE_PREFIX, 19929) +HANDLE_BAT(APINT_TYPE_PREFIX, 19930) +HANDLE_BAT(APINT_TYPE_PREFIX, 19931) +HANDLE_BAT(APINT_TYPE_PREFIX, 19932) +HANDLE_BAT(APINT_TYPE_PREFIX, 19933) +HANDLE_BAT(APINT_TYPE_PREFIX, 19934) +HANDLE_BAT(APINT_TYPE_PREFIX, 19935) +HANDLE_BAT(APINT_TYPE_PREFIX, 19936) +HANDLE_BAT(APINT_TYPE_PREFIX, 19937) +HANDLE_BAT(APINT_TYPE_PREFIX, 19938) +HANDLE_BAT(APINT_TYPE_PREFIX, 19939) +HANDLE_BAT(APINT_TYPE_PREFIX, 19940) +HANDLE_BAT(APINT_TYPE_PREFIX, 19941) +HANDLE_BAT(APINT_TYPE_PREFIX, 19942) +HANDLE_BAT(APINT_TYPE_PREFIX, 19943) +HANDLE_BAT(APINT_TYPE_PREFIX, 19944) +HANDLE_BAT(APINT_TYPE_PREFIX, 19945) +HANDLE_BAT(APINT_TYPE_PREFIX, 19946) +HANDLE_BAT(APINT_TYPE_PREFIX, 19947) +HANDLE_BAT(APINT_TYPE_PREFIX, 19948) +HANDLE_BAT(APINT_TYPE_PREFIX, 19949) +HANDLE_BAT(APINT_TYPE_PREFIX, 19950) +HANDLE_BAT(APINT_TYPE_PREFIX, 19951) +HANDLE_BAT(APINT_TYPE_PREFIX, 19952) +HANDLE_BAT(APINT_TYPE_PREFIX, 19953) +HANDLE_BAT(APINT_TYPE_PREFIX, 19954) +HANDLE_BAT(APINT_TYPE_PREFIX, 19955) +HANDLE_BAT(APINT_TYPE_PREFIX, 19956) +HANDLE_BAT(APINT_TYPE_PREFIX, 19957) +HANDLE_BAT(APINT_TYPE_PREFIX, 19958) +HANDLE_BAT(APINT_TYPE_PREFIX, 19959) +HANDLE_BAT(APINT_TYPE_PREFIX, 19960) +HANDLE_BAT(APINT_TYPE_PREFIX, 19961) +HANDLE_BAT(APINT_TYPE_PREFIX, 19962) +HANDLE_BAT(APINT_TYPE_PREFIX, 19963) +HANDLE_BAT(APINT_TYPE_PREFIX, 19964) +HANDLE_BAT(APINT_TYPE_PREFIX, 19965) +HANDLE_BAT(APINT_TYPE_PREFIX, 19966) +HANDLE_BAT(APINT_TYPE_PREFIX, 19967) +HANDLE_BAT(APINT_TYPE_PREFIX, 19968) +HANDLE_BAT(APINT_TYPE_PREFIX, 19969) +HANDLE_BAT(APINT_TYPE_PREFIX, 19970) +HANDLE_BAT(APINT_TYPE_PREFIX, 19971) +HANDLE_BAT(APINT_TYPE_PREFIX, 19972) +HANDLE_BAT(APINT_TYPE_PREFIX, 19973) +HANDLE_BAT(APINT_TYPE_PREFIX, 19974) +HANDLE_BAT(APINT_TYPE_PREFIX, 19975) +HANDLE_BAT(APINT_TYPE_PREFIX, 19976) +HANDLE_BAT(APINT_TYPE_PREFIX, 19977) +HANDLE_BAT(APINT_TYPE_PREFIX, 19978) +HANDLE_BAT(APINT_TYPE_PREFIX, 19979) +HANDLE_BAT(APINT_TYPE_PREFIX, 19980) +HANDLE_BAT(APINT_TYPE_PREFIX, 19981) +HANDLE_BAT(APINT_TYPE_PREFIX, 19982) +HANDLE_BAT(APINT_TYPE_PREFIX, 19983) +HANDLE_BAT(APINT_TYPE_PREFIX, 19984) +HANDLE_BAT(APINT_TYPE_PREFIX, 19985) +HANDLE_BAT(APINT_TYPE_PREFIX, 19986) +HANDLE_BAT(APINT_TYPE_PREFIX, 19987) +HANDLE_BAT(APINT_TYPE_PREFIX, 19988) +HANDLE_BAT(APINT_TYPE_PREFIX, 19989) +HANDLE_BAT(APINT_TYPE_PREFIX, 19990) +HANDLE_BAT(APINT_TYPE_PREFIX, 19991) +HANDLE_BAT(APINT_TYPE_PREFIX, 19992) +HANDLE_BAT(APINT_TYPE_PREFIX, 19993) +HANDLE_BAT(APINT_TYPE_PREFIX, 19994) +HANDLE_BAT(APINT_TYPE_PREFIX, 19995) +HANDLE_BAT(APINT_TYPE_PREFIX, 19996) +HANDLE_BAT(APINT_TYPE_PREFIX, 19997) +HANDLE_BAT(APINT_TYPE_PREFIX, 19998) +HANDLE_BAT(APINT_TYPE_PREFIX, 19999) +HANDLE_BAT(APINT_TYPE_PREFIX, 20000) +HANDLE_BAT(APINT_TYPE_PREFIX, 20001) +HANDLE_BAT(APINT_TYPE_PREFIX, 20002) +HANDLE_BAT(APINT_TYPE_PREFIX, 20003) +HANDLE_BAT(APINT_TYPE_PREFIX, 20004) +HANDLE_BAT(APINT_TYPE_PREFIX, 20005) +HANDLE_BAT(APINT_TYPE_PREFIX, 20006) +HANDLE_BAT(APINT_TYPE_PREFIX, 20007) +HANDLE_BAT(APINT_TYPE_PREFIX, 20008) +HANDLE_BAT(APINT_TYPE_PREFIX, 20009) +HANDLE_BAT(APINT_TYPE_PREFIX, 20010) +HANDLE_BAT(APINT_TYPE_PREFIX, 20011) +HANDLE_BAT(APINT_TYPE_PREFIX, 20012) +HANDLE_BAT(APINT_TYPE_PREFIX, 20013) +HANDLE_BAT(APINT_TYPE_PREFIX, 20014) +HANDLE_BAT(APINT_TYPE_PREFIX, 20015) +HANDLE_BAT(APINT_TYPE_PREFIX, 20016) +HANDLE_BAT(APINT_TYPE_PREFIX, 20017) +HANDLE_BAT(APINT_TYPE_PREFIX, 20018) +HANDLE_BAT(APINT_TYPE_PREFIX, 20019) +HANDLE_BAT(APINT_TYPE_PREFIX, 20020) +HANDLE_BAT(APINT_TYPE_PREFIX, 20021) +HANDLE_BAT(APINT_TYPE_PREFIX, 20022) +HANDLE_BAT(APINT_TYPE_PREFIX, 20023) +HANDLE_BAT(APINT_TYPE_PREFIX, 20024) +HANDLE_BAT(APINT_TYPE_PREFIX, 20025) +HANDLE_BAT(APINT_TYPE_PREFIX, 20026) +HANDLE_BAT(APINT_TYPE_PREFIX, 20027) +HANDLE_BAT(APINT_TYPE_PREFIX, 20028) +HANDLE_BAT(APINT_TYPE_PREFIX, 20029) +HANDLE_BAT(APINT_TYPE_PREFIX, 20030) +HANDLE_BAT(APINT_TYPE_PREFIX, 20031) +HANDLE_BAT(APINT_TYPE_PREFIX, 20032) +HANDLE_BAT(APINT_TYPE_PREFIX, 20033) +HANDLE_BAT(APINT_TYPE_PREFIX, 20034) +HANDLE_BAT(APINT_TYPE_PREFIX, 20035) +HANDLE_BAT(APINT_TYPE_PREFIX, 20036) +HANDLE_BAT(APINT_TYPE_PREFIX, 20037) +HANDLE_BAT(APINT_TYPE_PREFIX, 20038) +HANDLE_BAT(APINT_TYPE_PREFIX, 20039) +HANDLE_BAT(APINT_TYPE_PREFIX, 20040) +HANDLE_BAT(APINT_TYPE_PREFIX, 20041) +HANDLE_BAT(APINT_TYPE_PREFIX, 20042) +HANDLE_BAT(APINT_TYPE_PREFIX, 20043) +HANDLE_BAT(APINT_TYPE_PREFIX, 20044) +HANDLE_BAT(APINT_TYPE_PREFIX, 20045) +HANDLE_BAT(APINT_TYPE_PREFIX, 20046) +HANDLE_BAT(APINT_TYPE_PREFIX, 20047) +HANDLE_BAT(APINT_TYPE_PREFIX, 20048) +HANDLE_BAT(APINT_TYPE_PREFIX, 20049) +HANDLE_BAT(APINT_TYPE_PREFIX, 20050) +HANDLE_BAT(APINT_TYPE_PREFIX, 20051) +HANDLE_BAT(APINT_TYPE_PREFIX, 20052) +HANDLE_BAT(APINT_TYPE_PREFIX, 20053) +HANDLE_BAT(APINT_TYPE_PREFIX, 20054) +HANDLE_BAT(APINT_TYPE_PREFIX, 20055) +HANDLE_BAT(APINT_TYPE_PREFIX, 20056) +HANDLE_BAT(APINT_TYPE_PREFIX, 20057) +HANDLE_BAT(APINT_TYPE_PREFIX, 20058) +HANDLE_BAT(APINT_TYPE_PREFIX, 20059) +HANDLE_BAT(APINT_TYPE_PREFIX, 20060) +HANDLE_BAT(APINT_TYPE_PREFIX, 20061) +HANDLE_BAT(APINT_TYPE_PREFIX, 20062) +HANDLE_BAT(APINT_TYPE_PREFIX, 20063) +HANDLE_BAT(APINT_TYPE_PREFIX, 20064) +HANDLE_BAT(APINT_TYPE_PREFIX, 20065) +HANDLE_BAT(APINT_TYPE_PREFIX, 20066) +HANDLE_BAT(APINT_TYPE_PREFIX, 20067) +HANDLE_BAT(APINT_TYPE_PREFIX, 20068) +HANDLE_BAT(APINT_TYPE_PREFIX, 20069) +HANDLE_BAT(APINT_TYPE_PREFIX, 20070) +HANDLE_BAT(APINT_TYPE_PREFIX, 20071) +HANDLE_BAT(APINT_TYPE_PREFIX, 20072) +HANDLE_BAT(APINT_TYPE_PREFIX, 20073) +HANDLE_BAT(APINT_TYPE_PREFIX, 20074) +HANDLE_BAT(APINT_TYPE_PREFIX, 20075) +HANDLE_BAT(APINT_TYPE_PREFIX, 20076) +HANDLE_BAT(APINT_TYPE_PREFIX, 20077) +HANDLE_BAT(APINT_TYPE_PREFIX, 20078) +HANDLE_BAT(APINT_TYPE_PREFIX, 20079) +HANDLE_BAT(APINT_TYPE_PREFIX, 20080) +HANDLE_BAT(APINT_TYPE_PREFIX, 20081) +HANDLE_BAT(APINT_TYPE_PREFIX, 20082) +HANDLE_BAT(APINT_TYPE_PREFIX, 20083) +HANDLE_BAT(APINT_TYPE_PREFIX, 20084) +HANDLE_BAT(APINT_TYPE_PREFIX, 20085) +HANDLE_BAT(APINT_TYPE_PREFIX, 20086) +HANDLE_BAT(APINT_TYPE_PREFIX, 20087) +HANDLE_BAT(APINT_TYPE_PREFIX, 20088) +HANDLE_BAT(APINT_TYPE_PREFIX, 20089) +HANDLE_BAT(APINT_TYPE_PREFIX, 20090) +HANDLE_BAT(APINT_TYPE_PREFIX, 20091) +HANDLE_BAT(APINT_TYPE_PREFIX, 20092) +HANDLE_BAT(APINT_TYPE_PREFIX, 20093) +HANDLE_BAT(APINT_TYPE_PREFIX, 20094) +HANDLE_BAT(APINT_TYPE_PREFIX, 20095) +HANDLE_BAT(APINT_TYPE_PREFIX, 20096) +HANDLE_BAT(APINT_TYPE_PREFIX, 20097) +HANDLE_BAT(APINT_TYPE_PREFIX, 20098) +HANDLE_BAT(APINT_TYPE_PREFIX, 20099) +HANDLE_BAT(APINT_TYPE_PREFIX, 20100) +HANDLE_BAT(APINT_TYPE_PREFIX, 20101) +HANDLE_BAT(APINT_TYPE_PREFIX, 20102) +HANDLE_BAT(APINT_TYPE_PREFIX, 20103) +HANDLE_BAT(APINT_TYPE_PREFIX, 20104) +HANDLE_BAT(APINT_TYPE_PREFIX, 20105) +HANDLE_BAT(APINT_TYPE_PREFIX, 20106) +HANDLE_BAT(APINT_TYPE_PREFIX, 20107) +HANDLE_BAT(APINT_TYPE_PREFIX, 20108) +HANDLE_BAT(APINT_TYPE_PREFIX, 20109) +HANDLE_BAT(APINT_TYPE_PREFIX, 20110) +HANDLE_BAT(APINT_TYPE_PREFIX, 20111) +HANDLE_BAT(APINT_TYPE_PREFIX, 20112) +HANDLE_BAT(APINT_TYPE_PREFIX, 20113) +HANDLE_BAT(APINT_TYPE_PREFIX, 20114) +HANDLE_BAT(APINT_TYPE_PREFIX, 20115) +HANDLE_BAT(APINT_TYPE_PREFIX, 20116) +HANDLE_BAT(APINT_TYPE_PREFIX, 20117) +HANDLE_BAT(APINT_TYPE_PREFIX, 20118) +HANDLE_BAT(APINT_TYPE_PREFIX, 20119) +HANDLE_BAT(APINT_TYPE_PREFIX, 20120) +HANDLE_BAT(APINT_TYPE_PREFIX, 20121) +HANDLE_BAT(APINT_TYPE_PREFIX, 20122) +HANDLE_BAT(APINT_TYPE_PREFIX, 20123) +HANDLE_BAT(APINT_TYPE_PREFIX, 20124) +HANDLE_BAT(APINT_TYPE_PREFIX, 20125) +HANDLE_BAT(APINT_TYPE_PREFIX, 20126) +HANDLE_BAT(APINT_TYPE_PREFIX, 20127) +HANDLE_BAT(APINT_TYPE_PREFIX, 20128) +HANDLE_BAT(APINT_TYPE_PREFIX, 20129) +HANDLE_BAT(APINT_TYPE_PREFIX, 20130) +HANDLE_BAT(APINT_TYPE_PREFIX, 20131) +HANDLE_BAT(APINT_TYPE_PREFIX, 20132) +HANDLE_BAT(APINT_TYPE_PREFIX, 20133) +HANDLE_BAT(APINT_TYPE_PREFIX, 20134) +HANDLE_BAT(APINT_TYPE_PREFIX, 20135) +HANDLE_BAT(APINT_TYPE_PREFIX, 20136) +HANDLE_BAT(APINT_TYPE_PREFIX, 20137) +HANDLE_BAT(APINT_TYPE_PREFIX, 20138) +HANDLE_BAT(APINT_TYPE_PREFIX, 20139) +HANDLE_BAT(APINT_TYPE_PREFIX, 20140) +HANDLE_BAT(APINT_TYPE_PREFIX, 20141) +HANDLE_BAT(APINT_TYPE_PREFIX, 20142) +HANDLE_BAT(APINT_TYPE_PREFIX, 20143) +HANDLE_BAT(APINT_TYPE_PREFIX, 20144) +HANDLE_BAT(APINT_TYPE_PREFIX, 20145) +HANDLE_BAT(APINT_TYPE_PREFIX, 20146) +HANDLE_BAT(APINT_TYPE_PREFIX, 20147) +HANDLE_BAT(APINT_TYPE_PREFIX, 20148) +HANDLE_BAT(APINT_TYPE_PREFIX, 20149) +HANDLE_BAT(APINT_TYPE_PREFIX, 20150) +HANDLE_BAT(APINT_TYPE_PREFIX, 20151) +HANDLE_BAT(APINT_TYPE_PREFIX, 20152) +HANDLE_BAT(APINT_TYPE_PREFIX, 20153) +HANDLE_BAT(APINT_TYPE_PREFIX, 20154) +HANDLE_BAT(APINT_TYPE_PREFIX, 20155) +HANDLE_BAT(APINT_TYPE_PREFIX, 20156) +HANDLE_BAT(APINT_TYPE_PREFIX, 20157) +HANDLE_BAT(APINT_TYPE_PREFIX, 20158) +HANDLE_BAT(APINT_TYPE_PREFIX, 20159) +HANDLE_BAT(APINT_TYPE_PREFIX, 20160) +HANDLE_BAT(APINT_TYPE_PREFIX, 20161) +HANDLE_BAT(APINT_TYPE_PREFIX, 20162) +HANDLE_BAT(APINT_TYPE_PREFIX, 20163) +HANDLE_BAT(APINT_TYPE_PREFIX, 20164) +HANDLE_BAT(APINT_TYPE_PREFIX, 20165) +HANDLE_BAT(APINT_TYPE_PREFIX, 20166) +HANDLE_BAT(APINT_TYPE_PREFIX, 20167) +HANDLE_BAT(APINT_TYPE_PREFIX, 20168) +HANDLE_BAT(APINT_TYPE_PREFIX, 20169) +HANDLE_BAT(APINT_TYPE_PREFIX, 20170) +HANDLE_BAT(APINT_TYPE_PREFIX, 20171) +HANDLE_BAT(APINT_TYPE_PREFIX, 20172) +HANDLE_BAT(APINT_TYPE_PREFIX, 20173) +HANDLE_BAT(APINT_TYPE_PREFIX, 20174) +HANDLE_BAT(APINT_TYPE_PREFIX, 20175) +HANDLE_BAT(APINT_TYPE_PREFIX, 20176) +HANDLE_BAT(APINT_TYPE_PREFIX, 20177) +HANDLE_BAT(APINT_TYPE_PREFIX, 20178) +HANDLE_BAT(APINT_TYPE_PREFIX, 20179) +HANDLE_BAT(APINT_TYPE_PREFIX, 20180) +HANDLE_BAT(APINT_TYPE_PREFIX, 20181) +HANDLE_BAT(APINT_TYPE_PREFIX, 20182) +HANDLE_BAT(APINT_TYPE_PREFIX, 20183) +HANDLE_BAT(APINT_TYPE_PREFIX, 20184) +HANDLE_BAT(APINT_TYPE_PREFIX, 20185) +HANDLE_BAT(APINT_TYPE_PREFIX, 20186) +HANDLE_BAT(APINT_TYPE_PREFIX, 20187) +HANDLE_BAT(APINT_TYPE_PREFIX, 20188) +HANDLE_BAT(APINT_TYPE_PREFIX, 20189) +HANDLE_BAT(APINT_TYPE_PREFIX, 20190) +HANDLE_BAT(APINT_TYPE_PREFIX, 20191) +HANDLE_BAT(APINT_TYPE_PREFIX, 20192) +HANDLE_BAT(APINT_TYPE_PREFIX, 20193) +HANDLE_BAT(APINT_TYPE_PREFIX, 20194) +HANDLE_BAT(APINT_TYPE_PREFIX, 20195) +HANDLE_BAT(APINT_TYPE_PREFIX, 20196) +HANDLE_BAT(APINT_TYPE_PREFIX, 20197) +HANDLE_BAT(APINT_TYPE_PREFIX, 20198) +HANDLE_BAT(APINT_TYPE_PREFIX, 20199) +HANDLE_BAT(APINT_TYPE_PREFIX, 20200) +HANDLE_BAT(APINT_TYPE_PREFIX, 20201) +HANDLE_BAT(APINT_TYPE_PREFIX, 20202) +HANDLE_BAT(APINT_TYPE_PREFIX, 20203) +HANDLE_BAT(APINT_TYPE_PREFIX, 20204) +HANDLE_BAT(APINT_TYPE_PREFIX, 20205) +HANDLE_BAT(APINT_TYPE_PREFIX, 20206) +HANDLE_BAT(APINT_TYPE_PREFIX, 20207) +HANDLE_BAT(APINT_TYPE_PREFIX, 20208) +HANDLE_BAT(APINT_TYPE_PREFIX, 20209) +HANDLE_BAT(APINT_TYPE_PREFIX, 20210) +HANDLE_BAT(APINT_TYPE_PREFIX, 20211) +HANDLE_BAT(APINT_TYPE_PREFIX, 20212) +HANDLE_BAT(APINT_TYPE_PREFIX, 20213) +HANDLE_BAT(APINT_TYPE_PREFIX, 20214) +HANDLE_BAT(APINT_TYPE_PREFIX, 20215) +HANDLE_BAT(APINT_TYPE_PREFIX, 20216) +HANDLE_BAT(APINT_TYPE_PREFIX, 20217) +HANDLE_BAT(APINT_TYPE_PREFIX, 20218) +HANDLE_BAT(APINT_TYPE_PREFIX, 20219) +HANDLE_BAT(APINT_TYPE_PREFIX, 20220) +HANDLE_BAT(APINT_TYPE_PREFIX, 20221) +HANDLE_BAT(APINT_TYPE_PREFIX, 20222) +HANDLE_BAT(APINT_TYPE_PREFIX, 20223) +HANDLE_BAT(APINT_TYPE_PREFIX, 20224) +HANDLE_BAT(APINT_TYPE_PREFIX, 20225) +HANDLE_BAT(APINT_TYPE_PREFIX, 20226) +HANDLE_BAT(APINT_TYPE_PREFIX, 20227) +HANDLE_BAT(APINT_TYPE_PREFIX, 20228) +HANDLE_BAT(APINT_TYPE_PREFIX, 20229) +HANDLE_BAT(APINT_TYPE_PREFIX, 20230) +HANDLE_BAT(APINT_TYPE_PREFIX, 20231) +HANDLE_BAT(APINT_TYPE_PREFIX, 20232) +HANDLE_BAT(APINT_TYPE_PREFIX, 20233) +HANDLE_BAT(APINT_TYPE_PREFIX, 20234) +HANDLE_BAT(APINT_TYPE_PREFIX, 20235) +HANDLE_BAT(APINT_TYPE_PREFIX, 20236) +HANDLE_BAT(APINT_TYPE_PREFIX, 20237) +HANDLE_BAT(APINT_TYPE_PREFIX, 20238) +HANDLE_BAT(APINT_TYPE_PREFIX, 20239) +HANDLE_BAT(APINT_TYPE_PREFIX, 20240) +HANDLE_BAT(APINT_TYPE_PREFIX, 20241) +HANDLE_BAT(APINT_TYPE_PREFIX, 20242) +HANDLE_BAT(APINT_TYPE_PREFIX, 20243) +HANDLE_BAT(APINT_TYPE_PREFIX, 20244) +HANDLE_BAT(APINT_TYPE_PREFIX, 20245) +HANDLE_BAT(APINT_TYPE_PREFIX, 20246) +HANDLE_BAT(APINT_TYPE_PREFIX, 20247) +HANDLE_BAT(APINT_TYPE_PREFIX, 20248) +HANDLE_BAT(APINT_TYPE_PREFIX, 20249) +HANDLE_BAT(APINT_TYPE_PREFIX, 20250) +HANDLE_BAT(APINT_TYPE_PREFIX, 20251) +HANDLE_BAT(APINT_TYPE_PREFIX, 20252) +HANDLE_BAT(APINT_TYPE_PREFIX, 20253) +HANDLE_BAT(APINT_TYPE_PREFIX, 20254) +HANDLE_BAT(APINT_TYPE_PREFIX, 20255) +HANDLE_BAT(APINT_TYPE_PREFIX, 20256) +HANDLE_BAT(APINT_TYPE_PREFIX, 20257) +HANDLE_BAT(APINT_TYPE_PREFIX, 20258) +HANDLE_BAT(APINT_TYPE_PREFIX, 20259) +HANDLE_BAT(APINT_TYPE_PREFIX, 20260) +HANDLE_BAT(APINT_TYPE_PREFIX, 20261) +HANDLE_BAT(APINT_TYPE_PREFIX, 20262) +HANDLE_BAT(APINT_TYPE_PREFIX, 20263) +HANDLE_BAT(APINT_TYPE_PREFIX, 20264) +HANDLE_BAT(APINT_TYPE_PREFIX, 20265) +HANDLE_BAT(APINT_TYPE_PREFIX, 20266) +HANDLE_BAT(APINT_TYPE_PREFIX, 20267) +HANDLE_BAT(APINT_TYPE_PREFIX, 20268) +HANDLE_BAT(APINT_TYPE_PREFIX, 20269) +HANDLE_BAT(APINT_TYPE_PREFIX, 20270) +HANDLE_BAT(APINT_TYPE_PREFIX, 20271) +HANDLE_BAT(APINT_TYPE_PREFIX, 20272) +HANDLE_BAT(APINT_TYPE_PREFIX, 20273) +HANDLE_BAT(APINT_TYPE_PREFIX, 20274) +HANDLE_BAT(APINT_TYPE_PREFIX, 20275) +HANDLE_BAT(APINT_TYPE_PREFIX, 20276) +HANDLE_BAT(APINT_TYPE_PREFIX, 20277) +HANDLE_BAT(APINT_TYPE_PREFIX, 20278) +HANDLE_BAT(APINT_TYPE_PREFIX, 20279) +HANDLE_BAT(APINT_TYPE_PREFIX, 20280) +HANDLE_BAT(APINT_TYPE_PREFIX, 20281) +HANDLE_BAT(APINT_TYPE_PREFIX, 20282) +HANDLE_BAT(APINT_TYPE_PREFIX, 20283) +HANDLE_BAT(APINT_TYPE_PREFIX, 20284) +HANDLE_BAT(APINT_TYPE_PREFIX, 20285) +HANDLE_BAT(APINT_TYPE_PREFIX, 20286) +HANDLE_BAT(APINT_TYPE_PREFIX, 20287) +HANDLE_BAT(APINT_TYPE_PREFIX, 20288) +HANDLE_BAT(APINT_TYPE_PREFIX, 20289) +HANDLE_BAT(APINT_TYPE_PREFIX, 20290) +HANDLE_BAT(APINT_TYPE_PREFIX, 20291) +HANDLE_BAT(APINT_TYPE_PREFIX, 20292) +HANDLE_BAT(APINT_TYPE_PREFIX, 20293) +HANDLE_BAT(APINT_TYPE_PREFIX, 20294) +HANDLE_BAT(APINT_TYPE_PREFIX, 20295) +HANDLE_BAT(APINT_TYPE_PREFIX, 20296) +HANDLE_BAT(APINT_TYPE_PREFIX, 20297) +HANDLE_BAT(APINT_TYPE_PREFIX, 20298) +HANDLE_BAT(APINT_TYPE_PREFIX, 20299) +HANDLE_BAT(APINT_TYPE_PREFIX, 20300) +HANDLE_BAT(APINT_TYPE_PREFIX, 20301) +HANDLE_BAT(APINT_TYPE_PREFIX, 20302) +HANDLE_BAT(APINT_TYPE_PREFIX, 20303) +HANDLE_BAT(APINT_TYPE_PREFIX, 20304) +HANDLE_BAT(APINT_TYPE_PREFIX, 20305) +HANDLE_BAT(APINT_TYPE_PREFIX, 20306) +HANDLE_BAT(APINT_TYPE_PREFIX, 20307) +HANDLE_BAT(APINT_TYPE_PREFIX, 20308) +HANDLE_BAT(APINT_TYPE_PREFIX, 20309) +HANDLE_BAT(APINT_TYPE_PREFIX, 20310) +HANDLE_BAT(APINT_TYPE_PREFIX, 20311) +HANDLE_BAT(APINT_TYPE_PREFIX, 20312) +HANDLE_BAT(APINT_TYPE_PREFIX, 20313) +HANDLE_BAT(APINT_TYPE_PREFIX, 20314) +HANDLE_BAT(APINT_TYPE_PREFIX, 20315) +HANDLE_BAT(APINT_TYPE_PREFIX, 20316) +HANDLE_BAT(APINT_TYPE_PREFIX, 20317) +HANDLE_BAT(APINT_TYPE_PREFIX, 20318) +HANDLE_BAT(APINT_TYPE_PREFIX, 20319) +HANDLE_BAT(APINT_TYPE_PREFIX, 20320) +HANDLE_BAT(APINT_TYPE_PREFIX, 20321) +HANDLE_BAT(APINT_TYPE_PREFIX, 20322) +HANDLE_BAT(APINT_TYPE_PREFIX, 20323) +HANDLE_BAT(APINT_TYPE_PREFIX, 20324) +HANDLE_BAT(APINT_TYPE_PREFIX, 20325) +HANDLE_BAT(APINT_TYPE_PREFIX, 20326) +HANDLE_BAT(APINT_TYPE_PREFIX, 20327) +HANDLE_BAT(APINT_TYPE_PREFIX, 20328) +HANDLE_BAT(APINT_TYPE_PREFIX, 20329) +HANDLE_BAT(APINT_TYPE_PREFIX, 20330) +HANDLE_BAT(APINT_TYPE_PREFIX, 20331) +HANDLE_BAT(APINT_TYPE_PREFIX, 20332) +HANDLE_BAT(APINT_TYPE_PREFIX, 20333) +HANDLE_BAT(APINT_TYPE_PREFIX, 20334) +HANDLE_BAT(APINT_TYPE_PREFIX, 20335) +HANDLE_BAT(APINT_TYPE_PREFIX, 20336) +HANDLE_BAT(APINT_TYPE_PREFIX, 20337) +HANDLE_BAT(APINT_TYPE_PREFIX, 20338) +HANDLE_BAT(APINT_TYPE_PREFIX, 20339) +HANDLE_BAT(APINT_TYPE_PREFIX, 20340) +HANDLE_BAT(APINT_TYPE_PREFIX, 20341) +HANDLE_BAT(APINT_TYPE_PREFIX, 20342) +HANDLE_BAT(APINT_TYPE_PREFIX, 20343) +HANDLE_BAT(APINT_TYPE_PREFIX, 20344) +HANDLE_BAT(APINT_TYPE_PREFIX, 20345) +HANDLE_BAT(APINT_TYPE_PREFIX, 20346) +HANDLE_BAT(APINT_TYPE_PREFIX, 20347) +HANDLE_BAT(APINT_TYPE_PREFIX, 20348) +HANDLE_BAT(APINT_TYPE_PREFIX, 20349) +HANDLE_BAT(APINT_TYPE_PREFIX, 20350) +HANDLE_BAT(APINT_TYPE_PREFIX, 20351) +HANDLE_BAT(APINT_TYPE_PREFIX, 20352) +HANDLE_BAT(APINT_TYPE_PREFIX, 20353) +HANDLE_BAT(APINT_TYPE_PREFIX, 20354) +HANDLE_BAT(APINT_TYPE_PREFIX, 20355) +HANDLE_BAT(APINT_TYPE_PREFIX, 20356) +HANDLE_BAT(APINT_TYPE_PREFIX, 20357) +HANDLE_BAT(APINT_TYPE_PREFIX, 20358) +HANDLE_BAT(APINT_TYPE_PREFIX, 20359) +HANDLE_BAT(APINT_TYPE_PREFIX, 20360) +HANDLE_BAT(APINT_TYPE_PREFIX, 20361) +HANDLE_BAT(APINT_TYPE_PREFIX, 20362) +HANDLE_BAT(APINT_TYPE_PREFIX, 20363) +HANDLE_BAT(APINT_TYPE_PREFIX, 20364) +HANDLE_BAT(APINT_TYPE_PREFIX, 20365) +HANDLE_BAT(APINT_TYPE_PREFIX, 20366) +HANDLE_BAT(APINT_TYPE_PREFIX, 20367) +HANDLE_BAT(APINT_TYPE_PREFIX, 20368) +HANDLE_BAT(APINT_TYPE_PREFIX, 20369) +HANDLE_BAT(APINT_TYPE_PREFIX, 20370) +HANDLE_BAT(APINT_TYPE_PREFIX, 20371) +HANDLE_BAT(APINT_TYPE_PREFIX, 20372) +HANDLE_BAT(APINT_TYPE_PREFIX, 20373) +HANDLE_BAT(APINT_TYPE_PREFIX, 20374) +HANDLE_BAT(APINT_TYPE_PREFIX, 20375) +HANDLE_BAT(APINT_TYPE_PREFIX, 20376) +HANDLE_BAT(APINT_TYPE_PREFIX, 20377) +HANDLE_BAT(APINT_TYPE_PREFIX, 20378) +HANDLE_BAT(APINT_TYPE_PREFIX, 20379) +HANDLE_BAT(APINT_TYPE_PREFIX, 20380) +HANDLE_BAT(APINT_TYPE_PREFIX, 20381) +HANDLE_BAT(APINT_TYPE_PREFIX, 20382) +HANDLE_BAT(APINT_TYPE_PREFIX, 20383) +HANDLE_BAT(APINT_TYPE_PREFIX, 20384) +HANDLE_BAT(APINT_TYPE_PREFIX, 20385) +HANDLE_BAT(APINT_TYPE_PREFIX, 20386) +HANDLE_BAT(APINT_TYPE_PREFIX, 20387) +HANDLE_BAT(APINT_TYPE_PREFIX, 20388) +HANDLE_BAT(APINT_TYPE_PREFIX, 20389) +HANDLE_BAT(APINT_TYPE_PREFIX, 20390) +HANDLE_BAT(APINT_TYPE_PREFIX, 20391) +HANDLE_BAT(APINT_TYPE_PREFIX, 20392) +HANDLE_BAT(APINT_TYPE_PREFIX, 20393) +HANDLE_BAT(APINT_TYPE_PREFIX, 20394) +HANDLE_BAT(APINT_TYPE_PREFIX, 20395) +HANDLE_BAT(APINT_TYPE_PREFIX, 20396) +HANDLE_BAT(APINT_TYPE_PREFIX, 20397) +HANDLE_BAT(APINT_TYPE_PREFIX, 20398) +HANDLE_BAT(APINT_TYPE_PREFIX, 20399) +HANDLE_BAT(APINT_TYPE_PREFIX, 20400) +HANDLE_BAT(APINT_TYPE_PREFIX, 20401) +HANDLE_BAT(APINT_TYPE_PREFIX, 20402) +HANDLE_BAT(APINT_TYPE_PREFIX, 20403) +HANDLE_BAT(APINT_TYPE_PREFIX, 20404) +HANDLE_BAT(APINT_TYPE_PREFIX, 20405) +HANDLE_BAT(APINT_TYPE_PREFIX, 20406) +HANDLE_BAT(APINT_TYPE_PREFIX, 20407) +HANDLE_BAT(APINT_TYPE_PREFIX, 20408) +HANDLE_BAT(APINT_TYPE_PREFIX, 20409) +HANDLE_BAT(APINT_TYPE_PREFIX, 20410) +HANDLE_BAT(APINT_TYPE_PREFIX, 20411) +HANDLE_BAT(APINT_TYPE_PREFIX, 20412) +HANDLE_BAT(APINT_TYPE_PREFIX, 20413) +HANDLE_BAT(APINT_TYPE_PREFIX, 20414) +HANDLE_BAT(APINT_TYPE_PREFIX, 20415) +HANDLE_BAT(APINT_TYPE_PREFIX, 20416) +HANDLE_BAT(APINT_TYPE_PREFIX, 20417) +HANDLE_BAT(APINT_TYPE_PREFIX, 20418) +HANDLE_BAT(APINT_TYPE_PREFIX, 20419) +HANDLE_BAT(APINT_TYPE_PREFIX, 20420) +HANDLE_BAT(APINT_TYPE_PREFIX, 20421) +HANDLE_BAT(APINT_TYPE_PREFIX, 20422) +HANDLE_BAT(APINT_TYPE_PREFIX, 20423) +HANDLE_BAT(APINT_TYPE_PREFIX, 20424) +HANDLE_BAT(APINT_TYPE_PREFIX, 20425) +HANDLE_BAT(APINT_TYPE_PREFIX, 20426) +HANDLE_BAT(APINT_TYPE_PREFIX, 20427) +HANDLE_BAT(APINT_TYPE_PREFIX, 20428) +HANDLE_BAT(APINT_TYPE_PREFIX, 20429) +HANDLE_BAT(APINT_TYPE_PREFIX, 20430) +HANDLE_BAT(APINT_TYPE_PREFIX, 20431) +HANDLE_BAT(APINT_TYPE_PREFIX, 20432) +HANDLE_BAT(APINT_TYPE_PREFIX, 20433) +HANDLE_BAT(APINT_TYPE_PREFIX, 20434) +HANDLE_BAT(APINT_TYPE_PREFIX, 20435) +HANDLE_BAT(APINT_TYPE_PREFIX, 20436) +HANDLE_BAT(APINT_TYPE_PREFIX, 20437) +HANDLE_BAT(APINT_TYPE_PREFIX, 20438) +HANDLE_BAT(APINT_TYPE_PREFIX, 20439) +HANDLE_BAT(APINT_TYPE_PREFIX, 20440) +HANDLE_BAT(APINT_TYPE_PREFIX, 20441) +HANDLE_BAT(APINT_TYPE_PREFIX, 20442) +HANDLE_BAT(APINT_TYPE_PREFIX, 20443) +HANDLE_BAT(APINT_TYPE_PREFIX, 20444) +HANDLE_BAT(APINT_TYPE_PREFIX, 20445) +HANDLE_BAT(APINT_TYPE_PREFIX, 20446) +HANDLE_BAT(APINT_TYPE_PREFIX, 20447) +HANDLE_BAT(APINT_TYPE_PREFIX, 20448) +HANDLE_BAT(APINT_TYPE_PREFIX, 20449) +HANDLE_BAT(APINT_TYPE_PREFIX, 20450) +HANDLE_BAT(APINT_TYPE_PREFIX, 20451) +HANDLE_BAT(APINT_TYPE_PREFIX, 20452) +HANDLE_BAT(APINT_TYPE_PREFIX, 20453) +HANDLE_BAT(APINT_TYPE_PREFIX, 20454) +HANDLE_BAT(APINT_TYPE_PREFIX, 20455) +HANDLE_BAT(APINT_TYPE_PREFIX, 20456) +HANDLE_BAT(APINT_TYPE_PREFIX, 20457) +HANDLE_BAT(APINT_TYPE_PREFIX, 20458) +HANDLE_BAT(APINT_TYPE_PREFIX, 20459) +HANDLE_BAT(APINT_TYPE_PREFIX, 20460) +HANDLE_BAT(APINT_TYPE_PREFIX, 20461) +HANDLE_BAT(APINT_TYPE_PREFIX, 20462) +HANDLE_BAT(APINT_TYPE_PREFIX, 20463) +HANDLE_BAT(APINT_TYPE_PREFIX, 20464) +HANDLE_BAT(APINT_TYPE_PREFIX, 20465) +HANDLE_BAT(APINT_TYPE_PREFIX, 20466) +HANDLE_BAT(APINT_TYPE_PREFIX, 20467) +HANDLE_BAT(APINT_TYPE_PREFIX, 20468) +HANDLE_BAT(APINT_TYPE_PREFIX, 20469) +HANDLE_BAT(APINT_TYPE_PREFIX, 20470) +HANDLE_BAT(APINT_TYPE_PREFIX, 20471) +HANDLE_BAT(APINT_TYPE_PREFIX, 20472) +HANDLE_BAT(APINT_TYPE_PREFIX, 20473) +HANDLE_BAT(APINT_TYPE_PREFIX, 20474) +HANDLE_BAT(APINT_TYPE_PREFIX, 20475) +HANDLE_BAT(APINT_TYPE_PREFIX, 20476) +HANDLE_BAT(APINT_TYPE_PREFIX, 20477) +HANDLE_BAT(APINT_TYPE_PREFIX, 20478) +HANDLE_BAT(APINT_TYPE_PREFIX, 20479) +HANDLE_BAT(APINT_TYPE_PREFIX, 20480) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 20 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 20481) +HANDLE_BAT(, 20482) +HANDLE_BAT(, 20483) +HANDLE_BAT(, 20484) +HANDLE_BAT(, 20485) +HANDLE_BAT(, 20486) +HANDLE_BAT(, 20487) +HANDLE_BAT(, 20488) +HANDLE_BAT(, 20489) +HANDLE_BAT(, 20490) +HANDLE_BAT(, 20491) +HANDLE_BAT(, 20492) +HANDLE_BAT(, 20493) +HANDLE_BAT(, 20494) +HANDLE_BAT(, 20495) +HANDLE_BAT(, 20496) +HANDLE_BAT(, 20497) +HANDLE_BAT(, 20498) +HANDLE_BAT(, 20499) +HANDLE_BAT(, 20500) +HANDLE_BAT(, 20501) +HANDLE_BAT(, 20502) +HANDLE_BAT(, 20503) +HANDLE_BAT(, 20504) +HANDLE_BAT(, 20505) +HANDLE_BAT(, 20506) +HANDLE_BAT(, 20507) +HANDLE_BAT(, 20508) +HANDLE_BAT(, 20509) +HANDLE_BAT(, 20510) +HANDLE_BAT(, 20511) +HANDLE_BAT(, 20512) +HANDLE_BAT(, 20513) +HANDLE_BAT(, 20514) +HANDLE_BAT(, 20515) +HANDLE_BAT(, 20516) +HANDLE_BAT(, 20517) +HANDLE_BAT(, 20518) +HANDLE_BAT(, 20519) +HANDLE_BAT(, 20520) +HANDLE_BAT(, 20521) +HANDLE_BAT(, 20522) +HANDLE_BAT(, 20523) +HANDLE_BAT(, 20524) +HANDLE_BAT(, 20525) +HANDLE_BAT(, 20526) +HANDLE_BAT(, 20527) +HANDLE_BAT(, 20528) +HANDLE_BAT(, 20529) +HANDLE_BAT(, 20530) +HANDLE_BAT(, 20531) +HANDLE_BAT(, 20532) +HANDLE_BAT(, 20533) +HANDLE_BAT(, 20534) +HANDLE_BAT(, 20535) +HANDLE_BAT(, 20536) +HANDLE_BAT(, 20537) +HANDLE_BAT(, 20538) +HANDLE_BAT(, 20539) +HANDLE_BAT(, 20540) +HANDLE_BAT(, 20541) +HANDLE_BAT(, 20542) +HANDLE_BAT(, 20543) +HANDLE_BAT(, 20544) +HANDLE_BAT(, 20545) +HANDLE_BAT(, 20546) +HANDLE_BAT(, 20547) +HANDLE_BAT(, 20548) +HANDLE_BAT(, 20549) +HANDLE_BAT(, 20550) +HANDLE_BAT(, 20551) +HANDLE_BAT(, 20552) +HANDLE_BAT(, 20553) +HANDLE_BAT(, 20554) +HANDLE_BAT(, 20555) +HANDLE_BAT(, 20556) +HANDLE_BAT(, 20557) +HANDLE_BAT(, 20558) +HANDLE_BAT(, 20559) +HANDLE_BAT(, 20560) +HANDLE_BAT(, 20561) +HANDLE_BAT(, 20562) +HANDLE_BAT(, 20563) +HANDLE_BAT(, 20564) +HANDLE_BAT(, 20565) +HANDLE_BAT(, 20566) +HANDLE_BAT(, 20567) +HANDLE_BAT(, 20568) +HANDLE_BAT(, 20569) +HANDLE_BAT(, 20570) +HANDLE_BAT(, 20571) +HANDLE_BAT(, 20572) +HANDLE_BAT(, 20573) +HANDLE_BAT(, 20574) +HANDLE_BAT(, 20575) +HANDLE_BAT(, 20576) +HANDLE_BAT(, 20577) +HANDLE_BAT(, 20578) +HANDLE_BAT(, 20579) +HANDLE_BAT(, 20580) +HANDLE_BAT(, 20581) +HANDLE_BAT(, 20582) +HANDLE_BAT(, 20583) +HANDLE_BAT(, 20584) +HANDLE_BAT(, 20585) +HANDLE_BAT(, 20586) +HANDLE_BAT(, 20587) +HANDLE_BAT(, 20588) +HANDLE_BAT(, 20589) +HANDLE_BAT(, 20590) +HANDLE_BAT(, 20591) +HANDLE_BAT(, 20592) +HANDLE_BAT(, 20593) +HANDLE_BAT(, 20594) +HANDLE_BAT(, 20595) +HANDLE_BAT(, 20596) +HANDLE_BAT(, 20597) +HANDLE_BAT(, 20598) +HANDLE_BAT(, 20599) +HANDLE_BAT(, 20600) +HANDLE_BAT(, 20601) +HANDLE_BAT(, 20602) +HANDLE_BAT(, 20603) +HANDLE_BAT(, 20604) +HANDLE_BAT(, 20605) +HANDLE_BAT(, 20606) +HANDLE_BAT(, 20607) +HANDLE_BAT(, 20608) +HANDLE_BAT(, 20609) +HANDLE_BAT(, 20610) +HANDLE_BAT(, 20611) +HANDLE_BAT(, 20612) +HANDLE_BAT(, 20613) +HANDLE_BAT(, 20614) +HANDLE_BAT(, 20615) +HANDLE_BAT(, 20616) +HANDLE_BAT(, 20617) +HANDLE_BAT(, 20618) +HANDLE_BAT(, 20619) +HANDLE_BAT(, 20620) +HANDLE_BAT(, 20621) +HANDLE_BAT(, 20622) +HANDLE_BAT(, 20623) +HANDLE_BAT(, 20624) +HANDLE_BAT(, 20625) +HANDLE_BAT(, 20626) +HANDLE_BAT(, 20627) +HANDLE_BAT(, 20628) +HANDLE_BAT(, 20629) +HANDLE_BAT(, 20630) +HANDLE_BAT(, 20631) +HANDLE_BAT(, 20632) +HANDLE_BAT(, 20633) +HANDLE_BAT(, 20634) +HANDLE_BAT(, 20635) +HANDLE_BAT(, 20636) +HANDLE_BAT(, 20637) +HANDLE_BAT(, 20638) +HANDLE_BAT(, 20639) +HANDLE_BAT(, 20640) +HANDLE_BAT(, 20641) +HANDLE_BAT(, 20642) +HANDLE_BAT(, 20643) +HANDLE_BAT(, 20644) +HANDLE_BAT(, 20645) +HANDLE_BAT(, 20646) +HANDLE_BAT(, 20647) +HANDLE_BAT(, 20648) +HANDLE_BAT(, 20649) +HANDLE_BAT(, 20650) +HANDLE_BAT(, 20651) +HANDLE_BAT(, 20652) +HANDLE_BAT(, 20653) +HANDLE_BAT(, 20654) +HANDLE_BAT(, 20655) +HANDLE_BAT(, 20656) +HANDLE_BAT(, 20657) +HANDLE_BAT(, 20658) +HANDLE_BAT(, 20659) +HANDLE_BAT(, 20660) +HANDLE_BAT(, 20661) +HANDLE_BAT(, 20662) +HANDLE_BAT(, 20663) +HANDLE_BAT(, 20664) +HANDLE_BAT(, 20665) +HANDLE_BAT(, 20666) +HANDLE_BAT(, 20667) +HANDLE_BAT(, 20668) +HANDLE_BAT(, 20669) +HANDLE_BAT(, 20670) +HANDLE_BAT(, 20671) +HANDLE_BAT(, 20672) +HANDLE_BAT(, 20673) +HANDLE_BAT(, 20674) +HANDLE_BAT(, 20675) +HANDLE_BAT(, 20676) +HANDLE_BAT(, 20677) +HANDLE_BAT(, 20678) +HANDLE_BAT(, 20679) +HANDLE_BAT(, 20680) +HANDLE_BAT(, 20681) +HANDLE_BAT(, 20682) +HANDLE_BAT(, 20683) +HANDLE_BAT(, 20684) +HANDLE_BAT(, 20685) +HANDLE_BAT(, 20686) +HANDLE_BAT(, 20687) +HANDLE_BAT(, 20688) +HANDLE_BAT(, 20689) +HANDLE_BAT(, 20690) +HANDLE_BAT(, 20691) +HANDLE_BAT(, 20692) +HANDLE_BAT(, 20693) +HANDLE_BAT(, 20694) +HANDLE_BAT(, 20695) +HANDLE_BAT(, 20696) +HANDLE_BAT(, 20697) +HANDLE_BAT(, 20698) +HANDLE_BAT(, 20699) +HANDLE_BAT(, 20700) +HANDLE_BAT(, 20701) +HANDLE_BAT(, 20702) +HANDLE_BAT(, 20703) +HANDLE_BAT(, 20704) +HANDLE_BAT(, 20705) +HANDLE_BAT(, 20706) +HANDLE_BAT(, 20707) +HANDLE_BAT(, 20708) +HANDLE_BAT(, 20709) +HANDLE_BAT(, 20710) +HANDLE_BAT(, 20711) +HANDLE_BAT(, 20712) +HANDLE_BAT(, 20713) +HANDLE_BAT(, 20714) +HANDLE_BAT(, 20715) +HANDLE_BAT(, 20716) +HANDLE_BAT(, 20717) +HANDLE_BAT(, 20718) +HANDLE_BAT(, 20719) +HANDLE_BAT(, 20720) +HANDLE_BAT(, 20721) +HANDLE_BAT(, 20722) +HANDLE_BAT(, 20723) +HANDLE_BAT(, 20724) +HANDLE_BAT(, 20725) +HANDLE_BAT(, 20726) +HANDLE_BAT(, 20727) +HANDLE_BAT(, 20728) +HANDLE_BAT(, 20729) +HANDLE_BAT(, 20730) +HANDLE_BAT(, 20731) +HANDLE_BAT(, 20732) +HANDLE_BAT(, 20733) +HANDLE_BAT(, 20734) +HANDLE_BAT(, 20735) +HANDLE_BAT(, 20736) +HANDLE_BAT(, 20737) +HANDLE_BAT(, 20738) +HANDLE_BAT(, 20739) +HANDLE_BAT(, 20740) +HANDLE_BAT(, 20741) +HANDLE_BAT(, 20742) +HANDLE_BAT(, 20743) +HANDLE_BAT(, 20744) +HANDLE_BAT(, 20745) +HANDLE_BAT(, 20746) +HANDLE_BAT(, 20747) +HANDLE_BAT(, 20748) +HANDLE_BAT(, 20749) +HANDLE_BAT(, 20750) +HANDLE_BAT(, 20751) +HANDLE_BAT(, 20752) +HANDLE_BAT(, 20753) +HANDLE_BAT(, 20754) +HANDLE_BAT(, 20755) +HANDLE_BAT(, 20756) +HANDLE_BAT(, 20757) +HANDLE_BAT(, 20758) +HANDLE_BAT(, 20759) +HANDLE_BAT(, 20760) +HANDLE_BAT(, 20761) +HANDLE_BAT(, 20762) +HANDLE_BAT(, 20763) +HANDLE_BAT(, 20764) +HANDLE_BAT(, 20765) +HANDLE_BAT(, 20766) +HANDLE_BAT(, 20767) +HANDLE_BAT(, 20768) +HANDLE_BAT(, 20769) +HANDLE_BAT(, 20770) +HANDLE_BAT(, 20771) +HANDLE_BAT(, 20772) +HANDLE_BAT(, 20773) +HANDLE_BAT(, 20774) +HANDLE_BAT(, 20775) +HANDLE_BAT(, 20776) +HANDLE_BAT(, 20777) +HANDLE_BAT(, 20778) +HANDLE_BAT(, 20779) +HANDLE_BAT(, 20780) +HANDLE_BAT(, 20781) +HANDLE_BAT(, 20782) +HANDLE_BAT(, 20783) +HANDLE_BAT(, 20784) +HANDLE_BAT(, 20785) +HANDLE_BAT(, 20786) +HANDLE_BAT(, 20787) +HANDLE_BAT(, 20788) +HANDLE_BAT(, 20789) +HANDLE_BAT(, 20790) +HANDLE_BAT(, 20791) +HANDLE_BAT(, 20792) +HANDLE_BAT(, 20793) +HANDLE_BAT(, 20794) +HANDLE_BAT(, 20795) +HANDLE_BAT(, 20796) +HANDLE_BAT(, 20797) +HANDLE_BAT(, 20798) +HANDLE_BAT(, 20799) +HANDLE_BAT(, 20800) +HANDLE_BAT(, 20801) +HANDLE_BAT(, 20802) +HANDLE_BAT(, 20803) +HANDLE_BAT(, 20804) +HANDLE_BAT(, 20805) +HANDLE_BAT(, 20806) +HANDLE_BAT(, 20807) +HANDLE_BAT(, 20808) +HANDLE_BAT(, 20809) +HANDLE_BAT(, 20810) +HANDLE_BAT(, 20811) +HANDLE_BAT(, 20812) +HANDLE_BAT(, 20813) +HANDLE_BAT(, 20814) +HANDLE_BAT(, 20815) +HANDLE_BAT(, 20816) +HANDLE_BAT(, 20817) +HANDLE_BAT(, 20818) +HANDLE_BAT(, 20819) +HANDLE_BAT(, 20820) +HANDLE_BAT(, 20821) +HANDLE_BAT(, 20822) +HANDLE_BAT(, 20823) +HANDLE_BAT(, 20824) +HANDLE_BAT(, 20825) +HANDLE_BAT(, 20826) +HANDLE_BAT(, 20827) +HANDLE_BAT(, 20828) +HANDLE_BAT(, 20829) +HANDLE_BAT(, 20830) +HANDLE_BAT(, 20831) +HANDLE_BAT(, 20832) +HANDLE_BAT(, 20833) +HANDLE_BAT(, 20834) +HANDLE_BAT(, 20835) +HANDLE_BAT(, 20836) +HANDLE_BAT(, 20837) +HANDLE_BAT(, 20838) +HANDLE_BAT(, 20839) +HANDLE_BAT(, 20840) +HANDLE_BAT(, 20841) +HANDLE_BAT(, 20842) +HANDLE_BAT(, 20843) +HANDLE_BAT(, 20844) +HANDLE_BAT(, 20845) +HANDLE_BAT(, 20846) +HANDLE_BAT(, 20847) +HANDLE_BAT(, 20848) +HANDLE_BAT(, 20849) +HANDLE_BAT(, 20850) +HANDLE_BAT(, 20851) +HANDLE_BAT(, 20852) +HANDLE_BAT(, 20853) +HANDLE_BAT(, 20854) +HANDLE_BAT(, 20855) +HANDLE_BAT(, 20856) +HANDLE_BAT(, 20857) +HANDLE_BAT(, 20858) +HANDLE_BAT(, 20859) +HANDLE_BAT(, 20860) +HANDLE_BAT(, 20861) +HANDLE_BAT(, 20862) +HANDLE_BAT(, 20863) +HANDLE_BAT(, 20864) +HANDLE_BAT(, 20865) +HANDLE_BAT(, 20866) +HANDLE_BAT(, 20867) +HANDLE_BAT(, 20868) +HANDLE_BAT(, 20869) +HANDLE_BAT(, 20870) +HANDLE_BAT(, 20871) +HANDLE_BAT(, 20872) +HANDLE_BAT(, 20873) +HANDLE_BAT(, 20874) +HANDLE_BAT(, 20875) +HANDLE_BAT(, 20876) +HANDLE_BAT(, 20877) +HANDLE_BAT(, 20878) +HANDLE_BAT(, 20879) +HANDLE_BAT(, 20880) +HANDLE_BAT(, 20881) +HANDLE_BAT(, 20882) +HANDLE_BAT(, 20883) +HANDLE_BAT(, 20884) +HANDLE_BAT(, 20885) +HANDLE_BAT(, 20886) +HANDLE_BAT(, 20887) +HANDLE_BAT(, 20888) +HANDLE_BAT(, 20889) +HANDLE_BAT(, 20890) +HANDLE_BAT(, 20891) +HANDLE_BAT(, 20892) +HANDLE_BAT(, 20893) +HANDLE_BAT(, 20894) +HANDLE_BAT(, 20895) +HANDLE_BAT(, 20896) +HANDLE_BAT(, 20897) +HANDLE_BAT(, 20898) +HANDLE_BAT(, 20899) +HANDLE_BAT(, 20900) +HANDLE_BAT(, 20901) +HANDLE_BAT(, 20902) +HANDLE_BAT(, 20903) +HANDLE_BAT(, 20904) +HANDLE_BAT(, 20905) +HANDLE_BAT(, 20906) +HANDLE_BAT(, 20907) +HANDLE_BAT(, 20908) +HANDLE_BAT(, 20909) +HANDLE_BAT(, 20910) +HANDLE_BAT(, 20911) +HANDLE_BAT(, 20912) +HANDLE_BAT(, 20913) +HANDLE_BAT(, 20914) +HANDLE_BAT(, 20915) +HANDLE_BAT(, 20916) +HANDLE_BAT(, 20917) +HANDLE_BAT(, 20918) +HANDLE_BAT(, 20919) +HANDLE_BAT(, 20920) +HANDLE_BAT(, 20921) +HANDLE_BAT(, 20922) +HANDLE_BAT(, 20923) +HANDLE_BAT(, 20924) +HANDLE_BAT(, 20925) +HANDLE_BAT(, 20926) +HANDLE_BAT(, 20927) +HANDLE_BAT(, 20928) +HANDLE_BAT(, 20929) +HANDLE_BAT(, 20930) +HANDLE_BAT(, 20931) +HANDLE_BAT(, 20932) +HANDLE_BAT(, 20933) +HANDLE_BAT(, 20934) +HANDLE_BAT(, 20935) +HANDLE_BAT(, 20936) +HANDLE_BAT(, 20937) +HANDLE_BAT(, 20938) +HANDLE_BAT(, 20939) +HANDLE_BAT(, 20940) +HANDLE_BAT(, 20941) +HANDLE_BAT(, 20942) +HANDLE_BAT(, 20943) +HANDLE_BAT(, 20944) +HANDLE_BAT(, 20945) +HANDLE_BAT(, 20946) +HANDLE_BAT(, 20947) +HANDLE_BAT(, 20948) +HANDLE_BAT(, 20949) +HANDLE_BAT(, 20950) +HANDLE_BAT(, 20951) +HANDLE_BAT(, 20952) +HANDLE_BAT(, 20953) +HANDLE_BAT(, 20954) +HANDLE_BAT(, 20955) +HANDLE_BAT(, 20956) +HANDLE_BAT(, 20957) +HANDLE_BAT(, 20958) +HANDLE_BAT(, 20959) +HANDLE_BAT(, 20960) +HANDLE_BAT(, 20961) +HANDLE_BAT(, 20962) +HANDLE_BAT(, 20963) +HANDLE_BAT(, 20964) +HANDLE_BAT(, 20965) +HANDLE_BAT(, 20966) +HANDLE_BAT(, 20967) +HANDLE_BAT(, 20968) +HANDLE_BAT(, 20969) +HANDLE_BAT(, 20970) +HANDLE_BAT(, 20971) +HANDLE_BAT(, 20972) +HANDLE_BAT(, 20973) +HANDLE_BAT(, 20974) +HANDLE_BAT(, 20975) +HANDLE_BAT(, 20976) +HANDLE_BAT(, 20977) +HANDLE_BAT(, 20978) +HANDLE_BAT(, 20979) +HANDLE_BAT(, 20980) +HANDLE_BAT(, 20981) +HANDLE_BAT(, 20982) +HANDLE_BAT(, 20983) +HANDLE_BAT(, 20984) +HANDLE_BAT(, 20985) +HANDLE_BAT(, 20986) +HANDLE_BAT(, 20987) +HANDLE_BAT(, 20988) +HANDLE_BAT(, 20989) +HANDLE_BAT(, 20990) +HANDLE_BAT(, 20991) +HANDLE_BAT(, 20992) +HANDLE_BAT(, 20993) +HANDLE_BAT(, 20994) +HANDLE_BAT(, 20995) +HANDLE_BAT(, 20996) +HANDLE_BAT(, 20997) +HANDLE_BAT(, 20998) +HANDLE_BAT(, 20999) +HANDLE_BAT(, 21000) +HANDLE_BAT(, 21001) +HANDLE_BAT(, 21002) +HANDLE_BAT(, 21003) +HANDLE_BAT(, 21004) +HANDLE_BAT(, 21005) +HANDLE_BAT(, 21006) +HANDLE_BAT(, 21007) +HANDLE_BAT(, 21008) +HANDLE_BAT(, 21009) +HANDLE_BAT(, 21010) +HANDLE_BAT(, 21011) +HANDLE_BAT(, 21012) +HANDLE_BAT(, 21013) +HANDLE_BAT(, 21014) +HANDLE_BAT(, 21015) +HANDLE_BAT(, 21016) +HANDLE_BAT(, 21017) +HANDLE_BAT(, 21018) +HANDLE_BAT(, 21019) +HANDLE_BAT(, 21020) +HANDLE_BAT(, 21021) +HANDLE_BAT(, 21022) +HANDLE_BAT(, 21023) +HANDLE_BAT(, 21024) +HANDLE_BAT(, 21025) +HANDLE_BAT(, 21026) +HANDLE_BAT(, 21027) +HANDLE_BAT(, 21028) +HANDLE_BAT(, 21029) +HANDLE_BAT(, 21030) +HANDLE_BAT(, 21031) +HANDLE_BAT(, 21032) +HANDLE_BAT(, 21033) +HANDLE_BAT(, 21034) +HANDLE_BAT(, 21035) +HANDLE_BAT(, 21036) +HANDLE_BAT(, 21037) +HANDLE_BAT(, 21038) +HANDLE_BAT(, 21039) +HANDLE_BAT(, 21040) +HANDLE_BAT(, 21041) +HANDLE_BAT(, 21042) +HANDLE_BAT(, 21043) +HANDLE_BAT(, 21044) +HANDLE_BAT(, 21045) +HANDLE_BAT(, 21046) +HANDLE_BAT(, 21047) +HANDLE_BAT(, 21048) +HANDLE_BAT(, 21049) +HANDLE_BAT(, 21050) +HANDLE_BAT(, 21051) +HANDLE_BAT(, 21052) +HANDLE_BAT(, 21053) +HANDLE_BAT(, 21054) +HANDLE_BAT(, 21055) +HANDLE_BAT(, 21056) +HANDLE_BAT(, 21057) +HANDLE_BAT(, 21058) +HANDLE_BAT(, 21059) +HANDLE_BAT(, 21060) +HANDLE_BAT(, 21061) +HANDLE_BAT(, 21062) +HANDLE_BAT(, 21063) +HANDLE_BAT(, 21064) +HANDLE_BAT(, 21065) +HANDLE_BAT(, 21066) +HANDLE_BAT(, 21067) +HANDLE_BAT(, 21068) +HANDLE_BAT(, 21069) +HANDLE_BAT(, 21070) +HANDLE_BAT(, 21071) +HANDLE_BAT(, 21072) +HANDLE_BAT(, 21073) +HANDLE_BAT(, 21074) +HANDLE_BAT(, 21075) +HANDLE_BAT(, 21076) +HANDLE_BAT(, 21077) +HANDLE_BAT(, 21078) +HANDLE_BAT(, 21079) +HANDLE_BAT(, 21080) +HANDLE_BAT(, 21081) +HANDLE_BAT(, 21082) +HANDLE_BAT(, 21083) +HANDLE_BAT(, 21084) +HANDLE_BAT(, 21085) +HANDLE_BAT(, 21086) +HANDLE_BAT(, 21087) +HANDLE_BAT(, 21088) +HANDLE_BAT(, 21089) +HANDLE_BAT(, 21090) +HANDLE_BAT(, 21091) +HANDLE_BAT(, 21092) +HANDLE_BAT(, 21093) +HANDLE_BAT(, 21094) +HANDLE_BAT(, 21095) +HANDLE_BAT(, 21096) +HANDLE_BAT(, 21097) +HANDLE_BAT(, 21098) +HANDLE_BAT(, 21099) +HANDLE_BAT(, 21100) +HANDLE_BAT(, 21101) +HANDLE_BAT(, 21102) +HANDLE_BAT(, 21103) +HANDLE_BAT(, 21104) +HANDLE_BAT(, 21105) +HANDLE_BAT(, 21106) +HANDLE_BAT(, 21107) +HANDLE_BAT(, 21108) +HANDLE_BAT(, 21109) +HANDLE_BAT(, 21110) +HANDLE_BAT(, 21111) +HANDLE_BAT(, 21112) +HANDLE_BAT(, 21113) +HANDLE_BAT(, 21114) +HANDLE_BAT(, 21115) +HANDLE_BAT(, 21116) +HANDLE_BAT(, 21117) +HANDLE_BAT(, 21118) +HANDLE_BAT(, 21119) +HANDLE_BAT(, 21120) +HANDLE_BAT(, 21121) +HANDLE_BAT(, 21122) +HANDLE_BAT(, 21123) +HANDLE_BAT(, 21124) +HANDLE_BAT(, 21125) +HANDLE_BAT(, 21126) +HANDLE_BAT(, 21127) +HANDLE_BAT(, 21128) +HANDLE_BAT(, 21129) +HANDLE_BAT(, 21130) +HANDLE_BAT(, 21131) +HANDLE_BAT(, 21132) +HANDLE_BAT(, 21133) +HANDLE_BAT(, 21134) +HANDLE_BAT(, 21135) +HANDLE_BAT(, 21136) +HANDLE_BAT(, 21137) +HANDLE_BAT(, 21138) +HANDLE_BAT(, 21139) +HANDLE_BAT(, 21140) +HANDLE_BAT(, 21141) +HANDLE_BAT(, 21142) +HANDLE_BAT(, 21143) +HANDLE_BAT(, 21144) +HANDLE_BAT(, 21145) +HANDLE_BAT(, 21146) +HANDLE_BAT(, 21147) +HANDLE_BAT(, 21148) +HANDLE_BAT(, 21149) +HANDLE_BAT(, 21150) +HANDLE_BAT(, 21151) +HANDLE_BAT(, 21152) +HANDLE_BAT(, 21153) +HANDLE_BAT(, 21154) +HANDLE_BAT(, 21155) +HANDLE_BAT(, 21156) +HANDLE_BAT(, 21157) +HANDLE_BAT(, 21158) +HANDLE_BAT(, 21159) +HANDLE_BAT(, 21160) +HANDLE_BAT(, 21161) +HANDLE_BAT(, 21162) +HANDLE_BAT(, 21163) +HANDLE_BAT(, 21164) +HANDLE_BAT(, 21165) +HANDLE_BAT(, 21166) +HANDLE_BAT(, 21167) +HANDLE_BAT(, 21168) +HANDLE_BAT(, 21169) +HANDLE_BAT(, 21170) +HANDLE_BAT(, 21171) +HANDLE_BAT(, 21172) +HANDLE_BAT(, 21173) +HANDLE_BAT(, 21174) +HANDLE_BAT(, 21175) +HANDLE_BAT(, 21176) +HANDLE_BAT(, 21177) +HANDLE_BAT(, 21178) +HANDLE_BAT(, 21179) +HANDLE_BAT(, 21180) +HANDLE_BAT(, 21181) +HANDLE_BAT(, 21182) +HANDLE_BAT(, 21183) +HANDLE_BAT(, 21184) +HANDLE_BAT(, 21185) +HANDLE_BAT(, 21186) +HANDLE_BAT(, 21187) +HANDLE_BAT(, 21188) +HANDLE_BAT(, 21189) +HANDLE_BAT(, 21190) +HANDLE_BAT(, 21191) +HANDLE_BAT(, 21192) +HANDLE_BAT(, 21193) +HANDLE_BAT(, 21194) +HANDLE_BAT(, 21195) +HANDLE_BAT(, 21196) +HANDLE_BAT(, 21197) +HANDLE_BAT(, 21198) +HANDLE_BAT(, 21199) +HANDLE_BAT(, 21200) +HANDLE_BAT(, 21201) +HANDLE_BAT(, 21202) +HANDLE_BAT(, 21203) +HANDLE_BAT(, 21204) +HANDLE_BAT(, 21205) +HANDLE_BAT(, 21206) +HANDLE_BAT(, 21207) +HANDLE_BAT(, 21208) +HANDLE_BAT(, 21209) +HANDLE_BAT(, 21210) +HANDLE_BAT(, 21211) +HANDLE_BAT(, 21212) +HANDLE_BAT(, 21213) +HANDLE_BAT(, 21214) +HANDLE_BAT(, 21215) +HANDLE_BAT(, 21216) +HANDLE_BAT(, 21217) +HANDLE_BAT(, 21218) +HANDLE_BAT(, 21219) +HANDLE_BAT(, 21220) +HANDLE_BAT(, 21221) +HANDLE_BAT(, 21222) +HANDLE_BAT(, 21223) +HANDLE_BAT(, 21224) +HANDLE_BAT(, 21225) +HANDLE_BAT(, 21226) +HANDLE_BAT(, 21227) +HANDLE_BAT(, 21228) +HANDLE_BAT(, 21229) +HANDLE_BAT(, 21230) +HANDLE_BAT(, 21231) +HANDLE_BAT(, 21232) +HANDLE_BAT(, 21233) +HANDLE_BAT(, 21234) +HANDLE_BAT(, 21235) +HANDLE_BAT(, 21236) +HANDLE_BAT(, 21237) +HANDLE_BAT(, 21238) +HANDLE_BAT(, 21239) +HANDLE_BAT(, 21240) +HANDLE_BAT(, 21241) +HANDLE_BAT(, 21242) +HANDLE_BAT(, 21243) +HANDLE_BAT(, 21244) +HANDLE_BAT(, 21245) +HANDLE_BAT(, 21246) +HANDLE_BAT(, 21247) +HANDLE_BAT(, 21248) +HANDLE_BAT(, 21249) +HANDLE_BAT(, 21250) +HANDLE_BAT(, 21251) +HANDLE_BAT(, 21252) +HANDLE_BAT(, 21253) +HANDLE_BAT(, 21254) +HANDLE_BAT(, 21255) +HANDLE_BAT(, 21256) +HANDLE_BAT(, 21257) +HANDLE_BAT(, 21258) +HANDLE_BAT(, 21259) +HANDLE_BAT(, 21260) +HANDLE_BAT(, 21261) +HANDLE_BAT(, 21262) +HANDLE_BAT(, 21263) +HANDLE_BAT(, 21264) +HANDLE_BAT(, 21265) +HANDLE_BAT(, 21266) +HANDLE_BAT(, 21267) +HANDLE_BAT(, 21268) +HANDLE_BAT(, 21269) +HANDLE_BAT(, 21270) +HANDLE_BAT(, 21271) +HANDLE_BAT(, 21272) +HANDLE_BAT(, 21273) +HANDLE_BAT(, 21274) +HANDLE_BAT(, 21275) +HANDLE_BAT(, 21276) +HANDLE_BAT(, 21277) +HANDLE_BAT(, 21278) +HANDLE_BAT(, 21279) +HANDLE_BAT(, 21280) +HANDLE_BAT(, 21281) +HANDLE_BAT(, 21282) +HANDLE_BAT(, 21283) +HANDLE_BAT(, 21284) +HANDLE_BAT(, 21285) +HANDLE_BAT(, 21286) +HANDLE_BAT(, 21287) +HANDLE_BAT(, 21288) +HANDLE_BAT(, 21289) +HANDLE_BAT(, 21290) +HANDLE_BAT(, 21291) +HANDLE_BAT(, 21292) +HANDLE_BAT(, 21293) +HANDLE_BAT(, 21294) +HANDLE_BAT(, 21295) +HANDLE_BAT(, 21296) +HANDLE_BAT(, 21297) +HANDLE_BAT(, 21298) +HANDLE_BAT(, 21299) +HANDLE_BAT(, 21300) +HANDLE_BAT(, 21301) +HANDLE_BAT(, 21302) +HANDLE_BAT(, 21303) +HANDLE_BAT(, 21304) +HANDLE_BAT(, 21305) +HANDLE_BAT(, 21306) +HANDLE_BAT(, 21307) +HANDLE_BAT(, 21308) +HANDLE_BAT(, 21309) +HANDLE_BAT(, 21310) +HANDLE_BAT(, 21311) +HANDLE_BAT(, 21312) +HANDLE_BAT(, 21313) +HANDLE_BAT(, 21314) +HANDLE_BAT(, 21315) +HANDLE_BAT(, 21316) +HANDLE_BAT(, 21317) +HANDLE_BAT(, 21318) +HANDLE_BAT(, 21319) +HANDLE_BAT(, 21320) +HANDLE_BAT(, 21321) +HANDLE_BAT(, 21322) +HANDLE_BAT(, 21323) +HANDLE_BAT(, 21324) +HANDLE_BAT(, 21325) +HANDLE_BAT(, 21326) +HANDLE_BAT(, 21327) +HANDLE_BAT(, 21328) +HANDLE_BAT(, 21329) +HANDLE_BAT(, 21330) +HANDLE_BAT(, 21331) +HANDLE_BAT(, 21332) +HANDLE_BAT(, 21333) +HANDLE_BAT(, 21334) +HANDLE_BAT(, 21335) +HANDLE_BAT(, 21336) +HANDLE_BAT(, 21337) +HANDLE_BAT(, 21338) +HANDLE_BAT(, 21339) +HANDLE_BAT(, 21340) +HANDLE_BAT(, 21341) +HANDLE_BAT(, 21342) +HANDLE_BAT(, 21343) +HANDLE_BAT(, 21344) +HANDLE_BAT(, 21345) +HANDLE_BAT(, 21346) +HANDLE_BAT(, 21347) +HANDLE_BAT(, 21348) +HANDLE_BAT(, 21349) +HANDLE_BAT(, 21350) +HANDLE_BAT(, 21351) +HANDLE_BAT(, 21352) +HANDLE_BAT(, 21353) +HANDLE_BAT(, 21354) +HANDLE_BAT(, 21355) +HANDLE_BAT(, 21356) +HANDLE_BAT(, 21357) +HANDLE_BAT(, 21358) +HANDLE_BAT(, 21359) +HANDLE_BAT(, 21360) +HANDLE_BAT(, 21361) +HANDLE_BAT(, 21362) +HANDLE_BAT(, 21363) +HANDLE_BAT(, 21364) +HANDLE_BAT(, 21365) +HANDLE_BAT(, 21366) +HANDLE_BAT(, 21367) +HANDLE_BAT(, 21368) +HANDLE_BAT(, 21369) +HANDLE_BAT(, 21370) +HANDLE_BAT(, 21371) +HANDLE_BAT(, 21372) +HANDLE_BAT(, 21373) +HANDLE_BAT(, 21374) +HANDLE_BAT(, 21375) +HANDLE_BAT(, 21376) +HANDLE_BAT(, 21377) +HANDLE_BAT(, 21378) +HANDLE_BAT(, 21379) +HANDLE_BAT(, 21380) +HANDLE_BAT(, 21381) +HANDLE_BAT(, 21382) +HANDLE_BAT(, 21383) +HANDLE_BAT(, 21384) +HANDLE_BAT(, 21385) +HANDLE_BAT(, 21386) +HANDLE_BAT(, 21387) +HANDLE_BAT(, 21388) +HANDLE_BAT(, 21389) +HANDLE_BAT(, 21390) +HANDLE_BAT(, 21391) +HANDLE_BAT(, 21392) +HANDLE_BAT(, 21393) +HANDLE_BAT(, 21394) +HANDLE_BAT(, 21395) +HANDLE_BAT(, 21396) +HANDLE_BAT(, 21397) +HANDLE_BAT(, 21398) +HANDLE_BAT(, 21399) +HANDLE_BAT(, 21400) +HANDLE_BAT(, 21401) +HANDLE_BAT(, 21402) +HANDLE_BAT(, 21403) +HANDLE_BAT(, 21404) +HANDLE_BAT(, 21405) +HANDLE_BAT(, 21406) +HANDLE_BAT(, 21407) +HANDLE_BAT(, 21408) +HANDLE_BAT(, 21409) +HANDLE_BAT(, 21410) +HANDLE_BAT(, 21411) +HANDLE_BAT(, 21412) +HANDLE_BAT(, 21413) +HANDLE_BAT(, 21414) +HANDLE_BAT(, 21415) +HANDLE_BAT(, 21416) +HANDLE_BAT(, 21417) +HANDLE_BAT(, 21418) +HANDLE_BAT(, 21419) +HANDLE_BAT(, 21420) +HANDLE_BAT(, 21421) +HANDLE_BAT(, 21422) +HANDLE_BAT(, 21423) +HANDLE_BAT(, 21424) +HANDLE_BAT(, 21425) +HANDLE_BAT(, 21426) +HANDLE_BAT(, 21427) +HANDLE_BAT(, 21428) +HANDLE_BAT(, 21429) +HANDLE_BAT(, 21430) +HANDLE_BAT(, 21431) +HANDLE_BAT(, 21432) +HANDLE_BAT(, 21433) +HANDLE_BAT(, 21434) +HANDLE_BAT(, 21435) +HANDLE_BAT(, 21436) +HANDLE_BAT(, 21437) +HANDLE_BAT(, 21438) +HANDLE_BAT(, 21439) +HANDLE_BAT(, 21440) +HANDLE_BAT(, 21441) +HANDLE_BAT(, 21442) +HANDLE_BAT(, 21443) +HANDLE_BAT(, 21444) +HANDLE_BAT(, 21445) +HANDLE_BAT(, 21446) +HANDLE_BAT(, 21447) +HANDLE_BAT(, 21448) +HANDLE_BAT(, 21449) +HANDLE_BAT(, 21450) +HANDLE_BAT(, 21451) +HANDLE_BAT(, 21452) +HANDLE_BAT(, 21453) +HANDLE_BAT(, 21454) +HANDLE_BAT(, 21455) +HANDLE_BAT(, 21456) +HANDLE_BAT(, 21457) +HANDLE_BAT(, 21458) +HANDLE_BAT(, 21459) +HANDLE_BAT(, 21460) +HANDLE_BAT(, 21461) +HANDLE_BAT(, 21462) +HANDLE_BAT(, 21463) +HANDLE_BAT(, 21464) +HANDLE_BAT(, 21465) +HANDLE_BAT(, 21466) +HANDLE_BAT(, 21467) +HANDLE_BAT(, 21468) +HANDLE_BAT(, 21469) +HANDLE_BAT(, 21470) +HANDLE_BAT(, 21471) +HANDLE_BAT(, 21472) +HANDLE_BAT(, 21473) +HANDLE_BAT(, 21474) +HANDLE_BAT(, 21475) +HANDLE_BAT(, 21476) +HANDLE_BAT(, 21477) +HANDLE_BAT(, 21478) +HANDLE_BAT(, 21479) +HANDLE_BAT(, 21480) +HANDLE_BAT(, 21481) +HANDLE_BAT(, 21482) +HANDLE_BAT(, 21483) +HANDLE_BAT(, 21484) +HANDLE_BAT(, 21485) +HANDLE_BAT(, 21486) +HANDLE_BAT(, 21487) +HANDLE_BAT(, 21488) +HANDLE_BAT(, 21489) +HANDLE_BAT(, 21490) +HANDLE_BAT(, 21491) +HANDLE_BAT(, 21492) +HANDLE_BAT(, 21493) +HANDLE_BAT(, 21494) +HANDLE_BAT(, 21495) +HANDLE_BAT(, 21496) +HANDLE_BAT(, 21497) +HANDLE_BAT(, 21498) +HANDLE_BAT(, 21499) +HANDLE_BAT(, 21500) +HANDLE_BAT(, 21501) +HANDLE_BAT(, 21502) +HANDLE_BAT(, 21503) +HANDLE_BAT(, 21504) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 20481) +HANDLE_BAT(APINT_TYPE_PREFIX, 20482) +HANDLE_BAT(APINT_TYPE_PREFIX, 20483) +HANDLE_BAT(APINT_TYPE_PREFIX, 20484) +HANDLE_BAT(APINT_TYPE_PREFIX, 20485) +HANDLE_BAT(APINT_TYPE_PREFIX, 20486) +HANDLE_BAT(APINT_TYPE_PREFIX, 20487) +HANDLE_BAT(APINT_TYPE_PREFIX, 20488) +HANDLE_BAT(APINT_TYPE_PREFIX, 20489) +HANDLE_BAT(APINT_TYPE_PREFIX, 20490) +HANDLE_BAT(APINT_TYPE_PREFIX, 20491) +HANDLE_BAT(APINT_TYPE_PREFIX, 20492) +HANDLE_BAT(APINT_TYPE_PREFIX, 20493) +HANDLE_BAT(APINT_TYPE_PREFIX, 20494) +HANDLE_BAT(APINT_TYPE_PREFIX, 20495) +HANDLE_BAT(APINT_TYPE_PREFIX, 20496) +HANDLE_BAT(APINT_TYPE_PREFIX, 20497) +HANDLE_BAT(APINT_TYPE_PREFIX, 20498) +HANDLE_BAT(APINT_TYPE_PREFIX, 20499) +HANDLE_BAT(APINT_TYPE_PREFIX, 20500) +HANDLE_BAT(APINT_TYPE_PREFIX, 20501) +HANDLE_BAT(APINT_TYPE_PREFIX, 20502) +HANDLE_BAT(APINT_TYPE_PREFIX, 20503) +HANDLE_BAT(APINT_TYPE_PREFIX, 20504) +HANDLE_BAT(APINT_TYPE_PREFIX, 20505) +HANDLE_BAT(APINT_TYPE_PREFIX, 20506) +HANDLE_BAT(APINT_TYPE_PREFIX, 20507) +HANDLE_BAT(APINT_TYPE_PREFIX, 20508) +HANDLE_BAT(APINT_TYPE_PREFIX, 20509) +HANDLE_BAT(APINT_TYPE_PREFIX, 20510) +HANDLE_BAT(APINT_TYPE_PREFIX, 20511) +HANDLE_BAT(APINT_TYPE_PREFIX, 20512) +HANDLE_BAT(APINT_TYPE_PREFIX, 20513) +HANDLE_BAT(APINT_TYPE_PREFIX, 20514) +HANDLE_BAT(APINT_TYPE_PREFIX, 20515) +HANDLE_BAT(APINT_TYPE_PREFIX, 20516) +HANDLE_BAT(APINT_TYPE_PREFIX, 20517) +HANDLE_BAT(APINT_TYPE_PREFIX, 20518) +HANDLE_BAT(APINT_TYPE_PREFIX, 20519) +HANDLE_BAT(APINT_TYPE_PREFIX, 20520) +HANDLE_BAT(APINT_TYPE_PREFIX, 20521) +HANDLE_BAT(APINT_TYPE_PREFIX, 20522) +HANDLE_BAT(APINT_TYPE_PREFIX, 20523) +HANDLE_BAT(APINT_TYPE_PREFIX, 20524) +HANDLE_BAT(APINT_TYPE_PREFIX, 20525) +HANDLE_BAT(APINT_TYPE_PREFIX, 20526) +HANDLE_BAT(APINT_TYPE_PREFIX, 20527) +HANDLE_BAT(APINT_TYPE_PREFIX, 20528) +HANDLE_BAT(APINT_TYPE_PREFIX, 20529) +HANDLE_BAT(APINT_TYPE_PREFIX, 20530) +HANDLE_BAT(APINT_TYPE_PREFIX, 20531) +HANDLE_BAT(APINT_TYPE_PREFIX, 20532) +HANDLE_BAT(APINT_TYPE_PREFIX, 20533) +HANDLE_BAT(APINT_TYPE_PREFIX, 20534) +HANDLE_BAT(APINT_TYPE_PREFIX, 20535) +HANDLE_BAT(APINT_TYPE_PREFIX, 20536) +HANDLE_BAT(APINT_TYPE_PREFIX, 20537) +HANDLE_BAT(APINT_TYPE_PREFIX, 20538) +HANDLE_BAT(APINT_TYPE_PREFIX, 20539) +HANDLE_BAT(APINT_TYPE_PREFIX, 20540) +HANDLE_BAT(APINT_TYPE_PREFIX, 20541) +HANDLE_BAT(APINT_TYPE_PREFIX, 20542) +HANDLE_BAT(APINT_TYPE_PREFIX, 20543) +HANDLE_BAT(APINT_TYPE_PREFIX, 20544) +HANDLE_BAT(APINT_TYPE_PREFIX, 20545) +HANDLE_BAT(APINT_TYPE_PREFIX, 20546) +HANDLE_BAT(APINT_TYPE_PREFIX, 20547) +HANDLE_BAT(APINT_TYPE_PREFIX, 20548) +HANDLE_BAT(APINT_TYPE_PREFIX, 20549) +HANDLE_BAT(APINT_TYPE_PREFIX, 20550) +HANDLE_BAT(APINT_TYPE_PREFIX, 20551) +HANDLE_BAT(APINT_TYPE_PREFIX, 20552) +HANDLE_BAT(APINT_TYPE_PREFIX, 20553) +HANDLE_BAT(APINT_TYPE_PREFIX, 20554) +HANDLE_BAT(APINT_TYPE_PREFIX, 20555) +HANDLE_BAT(APINT_TYPE_PREFIX, 20556) +HANDLE_BAT(APINT_TYPE_PREFIX, 20557) +HANDLE_BAT(APINT_TYPE_PREFIX, 20558) +HANDLE_BAT(APINT_TYPE_PREFIX, 20559) +HANDLE_BAT(APINT_TYPE_PREFIX, 20560) +HANDLE_BAT(APINT_TYPE_PREFIX, 20561) +HANDLE_BAT(APINT_TYPE_PREFIX, 20562) +HANDLE_BAT(APINT_TYPE_PREFIX, 20563) +HANDLE_BAT(APINT_TYPE_PREFIX, 20564) +HANDLE_BAT(APINT_TYPE_PREFIX, 20565) +HANDLE_BAT(APINT_TYPE_PREFIX, 20566) +HANDLE_BAT(APINT_TYPE_PREFIX, 20567) +HANDLE_BAT(APINT_TYPE_PREFIX, 20568) +HANDLE_BAT(APINT_TYPE_PREFIX, 20569) +HANDLE_BAT(APINT_TYPE_PREFIX, 20570) +HANDLE_BAT(APINT_TYPE_PREFIX, 20571) +HANDLE_BAT(APINT_TYPE_PREFIX, 20572) +HANDLE_BAT(APINT_TYPE_PREFIX, 20573) +HANDLE_BAT(APINT_TYPE_PREFIX, 20574) +HANDLE_BAT(APINT_TYPE_PREFIX, 20575) +HANDLE_BAT(APINT_TYPE_PREFIX, 20576) +HANDLE_BAT(APINT_TYPE_PREFIX, 20577) +HANDLE_BAT(APINT_TYPE_PREFIX, 20578) +HANDLE_BAT(APINT_TYPE_PREFIX, 20579) +HANDLE_BAT(APINT_TYPE_PREFIX, 20580) +HANDLE_BAT(APINT_TYPE_PREFIX, 20581) +HANDLE_BAT(APINT_TYPE_PREFIX, 20582) +HANDLE_BAT(APINT_TYPE_PREFIX, 20583) +HANDLE_BAT(APINT_TYPE_PREFIX, 20584) +HANDLE_BAT(APINT_TYPE_PREFIX, 20585) +HANDLE_BAT(APINT_TYPE_PREFIX, 20586) +HANDLE_BAT(APINT_TYPE_PREFIX, 20587) +HANDLE_BAT(APINT_TYPE_PREFIX, 20588) +HANDLE_BAT(APINT_TYPE_PREFIX, 20589) +HANDLE_BAT(APINT_TYPE_PREFIX, 20590) +HANDLE_BAT(APINT_TYPE_PREFIX, 20591) +HANDLE_BAT(APINT_TYPE_PREFIX, 20592) +HANDLE_BAT(APINT_TYPE_PREFIX, 20593) +HANDLE_BAT(APINT_TYPE_PREFIX, 20594) +HANDLE_BAT(APINT_TYPE_PREFIX, 20595) +HANDLE_BAT(APINT_TYPE_PREFIX, 20596) +HANDLE_BAT(APINT_TYPE_PREFIX, 20597) +HANDLE_BAT(APINT_TYPE_PREFIX, 20598) +HANDLE_BAT(APINT_TYPE_PREFIX, 20599) +HANDLE_BAT(APINT_TYPE_PREFIX, 20600) +HANDLE_BAT(APINT_TYPE_PREFIX, 20601) +HANDLE_BAT(APINT_TYPE_PREFIX, 20602) +HANDLE_BAT(APINT_TYPE_PREFIX, 20603) +HANDLE_BAT(APINT_TYPE_PREFIX, 20604) +HANDLE_BAT(APINT_TYPE_PREFIX, 20605) +HANDLE_BAT(APINT_TYPE_PREFIX, 20606) +HANDLE_BAT(APINT_TYPE_PREFIX, 20607) +HANDLE_BAT(APINT_TYPE_PREFIX, 20608) +HANDLE_BAT(APINT_TYPE_PREFIX, 20609) +HANDLE_BAT(APINT_TYPE_PREFIX, 20610) +HANDLE_BAT(APINT_TYPE_PREFIX, 20611) +HANDLE_BAT(APINT_TYPE_PREFIX, 20612) +HANDLE_BAT(APINT_TYPE_PREFIX, 20613) +HANDLE_BAT(APINT_TYPE_PREFIX, 20614) +HANDLE_BAT(APINT_TYPE_PREFIX, 20615) +HANDLE_BAT(APINT_TYPE_PREFIX, 20616) +HANDLE_BAT(APINT_TYPE_PREFIX, 20617) +HANDLE_BAT(APINT_TYPE_PREFIX, 20618) +HANDLE_BAT(APINT_TYPE_PREFIX, 20619) +HANDLE_BAT(APINT_TYPE_PREFIX, 20620) +HANDLE_BAT(APINT_TYPE_PREFIX, 20621) +HANDLE_BAT(APINT_TYPE_PREFIX, 20622) +HANDLE_BAT(APINT_TYPE_PREFIX, 20623) +HANDLE_BAT(APINT_TYPE_PREFIX, 20624) +HANDLE_BAT(APINT_TYPE_PREFIX, 20625) +HANDLE_BAT(APINT_TYPE_PREFIX, 20626) +HANDLE_BAT(APINT_TYPE_PREFIX, 20627) +HANDLE_BAT(APINT_TYPE_PREFIX, 20628) +HANDLE_BAT(APINT_TYPE_PREFIX, 20629) +HANDLE_BAT(APINT_TYPE_PREFIX, 20630) +HANDLE_BAT(APINT_TYPE_PREFIX, 20631) +HANDLE_BAT(APINT_TYPE_PREFIX, 20632) +HANDLE_BAT(APINT_TYPE_PREFIX, 20633) +HANDLE_BAT(APINT_TYPE_PREFIX, 20634) +HANDLE_BAT(APINT_TYPE_PREFIX, 20635) +HANDLE_BAT(APINT_TYPE_PREFIX, 20636) +HANDLE_BAT(APINT_TYPE_PREFIX, 20637) +HANDLE_BAT(APINT_TYPE_PREFIX, 20638) +HANDLE_BAT(APINT_TYPE_PREFIX, 20639) +HANDLE_BAT(APINT_TYPE_PREFIX, 20640) +HANDLE_BAT(APINT_TYPE_PREFIX, 20641) +HANDLE_BAT(APINT_TYPE_PREFIX, 20642) +HANDLE_BAT(APINT_TYPE_PREFIX, 20643) +HANDLE_BAT(APINT_TYPE_PREFIX, 20644) +HANDLE_BAT(APINT_TYPE_PREFIX, 20645) +HANDLE_BAT(APINT_TYPE_PREFIX, 20646) +HANDLE_BAT(APINT_TYPE_PREFIX, 20647) +HANDLE_BAT(APINT_TYPE_PREFIX, 20648) +HANDLE_BAT(APINT_TYPE_PREFIX, 20649) +HANDLE_BAT(APINT_TYPE_PREFIX, 20650) +HANDLE_BAT(APINT_TYPE_PREFIX, 20651) +HANDLE_BAT(APINT_TYPE_PREFIX, 20652) +HANDLE_BAT(APINT_TYPE_PREFIX, 20653) +HANDLE_BAT(APINT_TYPE_PREFIX, 20654) +HANDLE_BAT(APINT_TYPE_PREFIX, 20655) +HANDLE_BAT(APINT_TYPE_PREFIX, 20656) +HANDLE_BAT(APINT_TYPE_PREFIX, 20657) +HANDLE_BAT(APINT_TYPE_PREFIX, 20658) +HANDLE_BAT(APINT_TYPE_PREFIX, 20659) +HANDLE_BAT(APINT_TYPE_PREFIX, 20660) +HANDLE_BAT(APINT_TYPE_PREFIX, 20661) +HANDLE_BAT(APINT_TYPE_PREFIX, 20662) +HANDLE_BAT(APINT_TYPE_PREFIX, 20663) +HANDLE_BAT(APINT_TYPE_PREFIX, 20664) +HANDLE_BAT(APINT_TYPE_PREFIX, 20665) +HANDLE_BAT(APINT_TYPE_PREFIX, 20666) +HANDLE_BAT(APINT_TYPE_PREFIX, 20667) +HANDLE_BAT(APINT_TYPE_PREFIX, 20668) +HANDLE_BAT(APINT_TYPE_PREFIX, 20669) +HANDLE_BAT(APINT_TYPE_PREFIX, 20670) +HANDLE_BAT(APINT_TYPE_PREFIX, 20671) +HANDLE_BAT(APINT_TYPE_PREFIX, 20672) +HANDLE_BAT(APINT_TYPE_PREFIX, 20673) +HANDLE_BAT(APINT_TYPE_PREFIX, 20674) +HANDLE_BAT(APINT_TYPE_PREFIX, 20675) +HANDLE_BAT(APINT_TYPE_PREFIX, 20676) +HANDLE_BAT(APINT_TYPE_PREFIX, 20677) +HANDLE_BAT(APINT_TYPE_PREFIX, 20678) +HANDLE_BAT(APINT_TYPE_PREFIX, 20679) +HANDLE_BAT(APINT_TYPE_PREFIX, 20680) +HANDLE_BAT(APINT_TYPE_PREFIX, 20681) +HANDLE_BAT(APINT_TYPE_PREFIX, 20682) +HANDLE_BAT(APINT_TYPE_PREFIX, 20683) +HANDLE_BAT(APINT_TYPE_PREFIX, 20684) +HANDLE_BAT(APINT_TYPE_PREFIX, 20685) +HANDLE_BAT(APINT_TYPE_PREFIX, 20686) +HANDLE_BAT(APINT_TYPE_PREFIX, 20687) +HANDLE_BAT(APINT_TYPE_PREFIX, 20688) +HANDLE_BAT(APINT_TYPE_PREFIX, 20689) +HANDLE_BAT(APINT_TYPE_PREFIX, 20690) +HANDLE_BAT(APINT_TYPE_PREFIX, 20691) +HANDLE_BAT(APINT_TYPE_PREFIX, 20692) +HANDLE_BAT(APINT_TYPE_PREFIX, 20693) +HANDLE_BAT(APINT_TYPE_PREFIX, 20694) +HANDLE_BAT(APINT_TYPE_PREFIX, 20695) +HANDLE_BAT(APINT_TYPE_PREFIX, 20696) +HANDLE_BAT(APINT_TYPE_PREFIX, 20697) +HANDLE_BAT(APINT_TYPE_PREFIX, 20698) +HANDLE_BAT(APINT_TYPE_PREFIX, 20699) +HANDLE_BAT(APINT_TYPE_PREFIX, 20700) +HANDLE_BAT(APINT_TYPE_PREFIX, 20701) +HANDLE_BAT(APINT_TYPE_PREFIX, 20702) +HANDLE_BAT(APINT_TYPE_PREFIX, 20703) +HANDLE_BAT(APINT_TYPE_PREFIX, 20704) +HANDLE_BAT(APINT_TYPE_PREFIX, 20705) +HANDLE_BAT(APINT_TYPE_PREFIX, 20706) +HANDLE_BAT(APINT_TYPE_PREFIX, 20707) +HANDLE_BAT(APINT_TYPE_PREFIX, 20708) +HANDLE_BAT(APINT_TYPE_PREFIX, 20709) +HANDLE_BAT(APINT_TYPE_PREFIX, 20710) +HANDLE_BAT(APINT_TYPE_PREFIX, 20711) +HANDLE_BAT(APINT_TYPE_PREFIX, 20712) +HANDLE_BAT(APINT_TYPE_PREFIX, 20713) +HANDLE_BAT(APINT_TYPE_PREFIX, 20714) +HANDLE_BAT(APINT_TYPE_PREFIX, 20715) +HANDLE_BAT(APINT_TYPE_PREFIX, 20716) +HANDLE_BAT(APINT_TYPE_PREFIX, 20717) +HANDLE_BAT(APINT_TYPE_PREFIX, 20718) +HANDLE_BAT(APINT_TYPE_PREFIX, 20719) +HANDLE_BAT(APINT_TYPE_PREFIX, 20720) +HANDLE_BAT(APINT_TYPE_PREFIX, 20721) +HANDLE_BAT(APINT_TYPE_PREFIX, 20722) +HANDLE_BAT(APINT_TYPE_PREFIX, 20723) +HANDLE_BAT(APINT_TYPE_PREFIX, 20724) +HANDLE_BAT(APINT_TYPE_PREFIX, 20725) +HANDLE_BAT(APINT_TYPE_PREFIX, 20726) +HANDLE_BAT(APINT_TYPE_PREFIX, 20727) +HANDLE_BAT(APINT_TYPE_PREFIX, 20728) +HANDLE_BAT(APINT_TYPE_PREFIX, 20729) +HANDLE_BAT(APINT_TYPE_PREFIX, 20730) +HANDLE_BAT(APINT_TYPE_PREFIX, 20731) +HANDLE_BAT(APINT_TYPE_PREFIX, 20732) +HANDLE_BAT(APINT_TYPE_PREFIX, 20733) +HANDLE_BAT(APINT_TYPE_PREFIX, 20734) +HANDLE_BAT(APINT_TYPE_PREFIX, 20735) +HANDLE_BAT(APINT_TYPE_PREFIX, 20736) +HANDLE_BAT(APINT_TYPE_PREFIX, 20737) +HANDLE_BAT(APINT_TYPE_PREFIX, 20738) +HANDLE_BAT(APINT_TYPE_PREFIX, 20739) +HANDLE_BAT(APINT_TYPE_PREFIX, 20740) +HANDLE_BAT(APINT_TYPE_PREFIX, 20741) +HANDLE_BAT(APINT_TYPE_PREFIX, 20742) +HANDLE_BAT(APINT_TYPE_PREFIX, 20743) +HANDLE_BAT(APINT_TYPE_PREFIX, 20744) +HANDLE_BAT(APINT_TYPE_PREFIX, 20745) +HANDLE_BAT(APINT_TYPE_PREFIX, 20746) +HANDLE_BAT(APINT_TYPE_PREFIX, 20747) +HANDLE_BAT(APINT_TYPE_PREFIX, 20748) +HANDLE_BAT(APINT_TYPE_PREFIX, 20749) +HANDLE_BAT(APINT_TYPE_PREFIX, 20750) +HANDLE_BAT(APINT_TYPE_PREFIX, 20751) +HANDLE_BAT(APINT_TYPE_PREFIX, 20752) +HANDLE_BAT(APINT_TYPE_PREFIX, 20753) +HANDLE_BAT(APINT_TYPE_PREFIX, 20754) +HANDLE_BAT(APINT_TYPE_PREFIX, 20755) +HANDLE_BAT(APINT_TYPE_PREFIX, 20756) +HANDLE_BAT(APINT_TYPE_PREFIX, 20757) +HANDLE_BAT(APINT_TYPE_PREFIX, 20758) +HANDLE_BAT(APINT_TYPE_PREFIX, 20759) +HANDLE_BAT(APINT_TYPE_PREFIX, 20760) +HANDLE_BAT(APINT_TYPE_PREFIX, 20761) +HANDLE_BAT(APINT_TYPE_PREFIX, 20762) +HANDLE_BAT(APINT_TYPE_PREFIX, 20763) +HANDLE_BAT(APINT_TYPE_PREFIX, 20764) +HANDLE_BAT(APINT_TYPE_PREFIX, 20765) +HANDLE_BAT(APINT_TYPE_PREFIX, 20766) +HANDLE_BAT(APINT_TYPE_PREFIX, 20767) +HANDLE_BAT(APINT_TYPE_PREFIX, 20768) +HANDLE_BAT(APINT_TYPE_PREFIX, 20769) +HANDLE_BAT(APINT_TYPE_PREFIX, 20770) +HANDLE_BAT(APINT_TYPE_PREFIX, 20771) +HANDLE_BAT(APINT_TYPE_PREFIX, 20772) +HANDLE_BAT(APINT_TYPE_PREFIX, 20773) +HANDLE_BAT(APINT_TYPE_PREFIX, 20774) +HANDLE_BAT(APINT_TYPE_PREFIX, 20775) +HANDLE_BAT(APINT_TYPE_PREFIX, 20776) +HANDLE_BAT(APINT_TYPE_PREFIX, 20777) +HANDLE_BAT(APINT_TYPE_PREFIX, 20778) +HANDLE_BAT(APINT_TYPE_PREFIX, 20779) +HANDLE_BAT(APINT_TYPE_PREFIX, 20780) +HANDLE_BAT(APINT_TYPE_PREFIX, 20781) +HANDLE_BAT(APINT_TYPE_PREFIX, 20782) +HANDLE_BAT(APINT_TYPE_PREFIX, 20783) +HANDLE_BAT(APINT_TYPE_PREFIX, 20784) +HANDLE_BAT(APINT_TYPE_PREFIX, 20785) +HANDLE_BAT(APINT_TYPE_PREFIX, 20786) +HANDLE_BAT(APINT_TYPE_PREFIX, 20787) +HANDLE_BAT(APINT_TYPE_PREFIX, 20788) +HANDLE_BAT(APINT_TYPE_PREFIX, 20789) +HANDLE_BAT(APINT_TYPE_PREFIX, 20790) +HANDLE_BAT(APINT_TYPE_PREFIX, 20791) +HANDLE_BAT(APINT_TYPE_PREFIX, 20792) +HANDLE_BAT(APINT_TYPE_PREFIX, 20793) +HANDLE_BAT(APINT_TYPE_PREFIX, 20794) +HANDLE_BAT(APINT_TYPE_PREFIX, 20795) +HANDLE_BAT(APINT_TYPE_PREFIX, 20796) +HANDLE_BAT(APINT_TYPE_PREFIX, 20797) +HANDLE_BAT(APINT_TYPE_PREFIX, 20798) +HANDLE_BAT(APINT_TYPE_PREFIX, 20799) +HANDLE_BAT(APINT_TYPE_PREFIX, 20800) +HANDLE_BAT(APINT_TYPE_PREFIX, 20801) +HANDLE_BAT(APINT_TYPE_PREFIX, 20802) +HANDLE_BAT(APINT_TYPE_PREFIX, 20803) +HANDLE_BAT(APINT_TYPE_PREFIX, 20804) +HANDLE_BAT(APINT_TYPE_PREFIX, 20805) +HANDLE_BAT(APINT_TYPE_PREFIX, 20806) +HANDLE_BAT(APINT_TYPE_PREFIX, 20807) +HANDLE_BAT(APINT_TYPE_PREFIX, 20808) +HANDLE_BAT(APINT_TYPE_PREFIX, 20809) +HANDLE_BAT(APINT_TYPE_PREFIX, 20810) +HANDLE_BAT(APINT_TYPE_PREFIX, 20811) +HANDLE_BAT(APINT_TYPE_PREFIX, 20812) +HANDLE_BAT(APINT_TYPE_PREFIX, 20813) +HANDLE_BAT(APINT_TYPE_PREFIX, 20814) +HANDLE_BAT(APINT_TYPE_PREFIX, 20815) +HANDLE_BAT(APINT_TYPE_PREFIX, 20816) +HANDLE_BAT(APINT_TYPE_PREFIX, 20817) +HANDLE_BAT(APINT_TYPE_PREFIX, 20818) +HANDLE_BAT(APINT_TYPE_PREFIX, 20819) +HANDLE_BAT(APINT_TYPE_PREFIX, 20820) +HANDLE_BAT(APINT_TYPE_PREFIX, 20821) +HANDLE_BAT(APINT_TYPE_PREFIX, 20822) +HANDLE_BAT(APINT_TYPE_PREFIX, 20823) +HANDLE_BAT(APINT_TYPE_PREFIX, 20824) +HANDLE_BAT(APINT_TYPE_PREFIX, 20825) +HANDLE_BAT(APINT_TYPE_PREFIX, 20826) +HANDLE_BAT(APINT_TYPE_PREFIX, 20827) +HANDLE_BAT(APINT_TYPE_PREFIX, 20828) +HANDLE_BAT(APINT_TYPE_PREFIX, 20829) +HANDLE_BAT(APINT_TYPE_PREFIX, 20830) +HANDLE_BAT(APINT_TYPE_PREFIX, 20831) +HANDLE_BAT(APINT_TYPE_PREFIX, 20832) +HANDLE_BAT(APINT_TYPE_PREFIX, 20833) +HANDLE_BAT(APINT_TYPE_PREFIX, 20834) +HANDLE_BAT(APINT_TYPE_PREFIX, 20835) +HANDLE_BAT(APINT_TYPE_PREFIX, 20836) +HANDLE_BAT(APINT_TYPE_PREFIX, 20837) +HANDLE_BAT(APINT_TYPE_PREFIX, 20838) +HANDLE_BAT(APINT_TYPE_PREFIX, 20839) +HANDLE_BAT(APINT_TYPE_PREFIX, 20840) +HANDLE_BAT(APINT_TYPE_PREFIX, 20841) +HANDLE_BAT(APINT_TYPE_PREFIX, 20842) +HANDLE_BAT(APINT_TYPE_PREFIX, 20843) +HANDLE_BAT(APINT_TYPE_PREFIX, 20844) +HANDLE_BAT(APINT_TYPE_PREFIX, 20845) +HANDLE_BAT(APINT_TYPE_PREFIX, 20846) +HANDLE_BAT(APINT_TYPE_PREFIX, 20847) +HANDLE_BAT(APINT_TYPE_PREFIX, 20848) +HANDLE_BAT(APINT_TYPE_PREFIX, 20849) +HANDLE_BAT(APINT_TYPE_PREFIX, 20850) +HANDLE_BAT(APINT_TYPE_PREFIX, 20851) +HANDLE_BAT(APINT_TYPE_PREFIX, 20852) +HANDLE_BAT(APINT_TYPE_PREFIX, 20853) +HANDLE_BAT(APINT_TYPE_PREFIX, 20854) +HANDLE_BAT(APINT_TYPE_PREFIX, 20855) +HANDLE_BAT(APINT_TYPE_PREFIX, 20856) +HANDLE_BAT(APINT_TYPE_PREFIX, 20857) +HANDLE_BAT(APINT_TYPE_PREFIX, 20858) +HANDLE_BAT(APINT_TYPE_PREFIX, 20859) +HANDLE_BAT(APINT_TYPE_PREFIX, 20860) +HANDLE_BAT(APINT_TYPE_PREFIX, 20861) +HANDLE_BAT(APINT_TYPE_PREFIX, 20862) +HANDLE_BAT(APINT_TYPE_PREFIX, 20863) +HANDLE_BAT(APINT_TYPE_PREFIX, 20864) +HANDLE_BAT(APINT_TYPE_PREFIX, 20865) +HANDLE_BAT(APINT_TYPE_PREFIX, 20866) +HANDLE_BAT(APINT_TYPE_PREFIX, 20867) +HANDLE_BAT(APINT_TYPE_PREFIX, 20868) +HANDLE_BAT(APINT_TYPE_PREFIX, 20869) +HANDLE_BAT(APINT_TYPE_PREFIX, 20870) +HANDLE_BAT(APINT_TYPE_PREFIX, 20871) +HANDLE_BAT(APINT_TYPE_PREFIX, 20872) +HANDLE_BAT(APINT_TYPE_PREFIX, 20873) +HANDLE_BAT(APINT_TYPE_PREFIX, 20874) +HANDLE_BAT(APINT_TYPE_PREFIX, 20875) +HANDLE_BAT(APINT_TYPE_PREFIX, 20876) +HANDLE_BAT(APINT_TYPE_PREFIX, 20877) +HANDLE_BAT(APINT_TYPE_PREFIX, 20878) +HANDLE_BAT(APINT_TYPE_PREFIX, 20879) +HANDLE_BAT(APINT_TYPE_PREFIX, 20880) +HANDLE_BAT(APINT_TYPE_PREFIX, 20881) +HANDLE_BAT(APINT_TYPE_PREFIX, 20882) +HANDLE_BAT(APINT_TYPE_PREFIX, 20883) +HANDLE_BAT(APINT_TYPE_PREFIX, 20884) +HANDLE_BAT(APINT_TYPE_PREFIX, 20885) +HANDLE_BAT(APINT_TYPE_PREFIX, 20886) +HANDLE_BAT(APINT_TYPE_PREFIX, 20887) +HANDLE_BAT(APINT_TYPE_PREFIX, 20888) +HANDLE_BAT(APINT_TYPE_PREFIX, 20889) +HANDLE_BAT(APINT_TYPE_PREFIX, 20890) +HANDLE_BAT(APINT_TYPE_PREFIX, 20891) +HANDLE_BAT(APINT_TYPE_PREFIX, 20892) +HANDLE_BAT(APINT_TYPE_PREFIX, 20893) +HANDLE_BAT(APINT_TYPE_PREFIX, 20894) +HANDLE_BAT(APINT_TYPE_PREFIX, 20895) +HANDLE_BAT(APINT_TYPE_PREFIX, 20896) +HANDLE_BAT(APINT_TYPE_PREFIX, 20897) +HANDLE_BAT(APINT_TYPE_PREFIX, 20898) +HANDLE_BAT(APINT_TYPE_PREFIX, 20899) +HANDLE_BAT(APINT_TYPE_PREFIX, 20900) +HANDLE_BAT(APINT_TYPE_PREFIX, 20901) +HANDLE_BAT(APINT_TYPE_PREFIX, 20902) +HANDLE_BAT(APINT_TYPE_PREFIX, 20903) +HANDLE_BAT(APINT_TYPE_PREFIX, 20904) +HANDLE_BAT(APINT_TYPE_PREFIX, 20905) +HANDLE_BAT(APINT_TYPE_PREFIX, 20906) +HANDLE_BAT(APINT_TYPE_PREFIX, 20907) +HANDLE_BAT(APINT_TYPE_PREFIX, 20908) +HANDLE_BAT(APINT_TYPE_PREFIX, 20909) +HANDLE_BAT(APINT_TYPE_PREFIX, 20910) +HANDLE_BAT(APINT_TYPE_PREFIX, 20911) +HANDLE_BAT(APINT_TYPE_PREFIX, 20912) +HANDLE_BAT(APINT_TYPE_PREFIX, 20913) +HANDLE_BAT(APINT_TYPE_PREFIX, 20914) +HANDLE_BAT(APINT_TYPE_PREFIX, 20915) +HANDLE_BAT(APINT_TYPE_PREFIX, 20916) +HANDLE_BAT(APINT_TYPE_PREFIX, 20917) +HANDLE_BAT(APINT_TYPE_PREFIX, 20918) +HANDLE_BAT(APINT_TYPE_PREFIX, 20919) +HANDLE_BAT(APINT_TYPE_PREFIX, 20920) +HANDLE_BAT(APINT_TYPE_PREFIX, 20921) +HANDLE_BAT(APINT_TYPE_PREFIX, 20922) +HANDLE_BAT(APINT_TYPE_PREFIX, 20923) +HANDLE_BAT(APINT_TYPE_PREFIX, 20924) +HANDLE_BAT(APINT_TYPE_PREFIX, 20925) +HANDLE_BAT(APINT_TYPE_PREFIX, 20926) +HANDLE_BAT(APINT_TYPE_PREFIX, 20927) +HANDLE_BAT(APINT_TYPE_PREFIX, 20928) +HANDLE_BAT(APINT_TYPE_PREFIX, 20929) +HANDLE_BAT(APINT_TYPE_PREFIX, 20930) +HANDLE_BAT(APINT_TYPE_PREFIX, 20931) +HANDLE_BAT(APINT_TYPE_PREFIX, 20932) +HANDLE_BAT(APINT_TYPE_PREFIX, 20933) +HANDLE_BAT(APINT_TYPE_PREFIX, 20934) +HANDLE_BAT(APINT_TYPE_PREFIX, 20935) +HANDLE_BAT(APINT_TYPE_PREFIX, 20936) +HANDLE_BAT(APINT_TYPE_PREFIX, 20937) +HANDLE_BAT(APINT_TYPE_PREFIX, 20938) +HANDLE_BAT(APINT_TYPE_PREFIX, 20939) +HANDLE_BAT(APINT_TYPE_PREFIX, 20940) +HANDLE_BAT(APINT_TYPE_PREFIX, 20941) +HANDLE_BAT(APINT_TYPE_PREFIX, 20942) +HANDLE_BAT(APINT_TYPE_PREFIX, 20943) +HANDLE_BAT(APINT_TYPE_PREFIX, 20944) +HANDLE_BAT(APINT_TYPE_PREFIX, 20945) +HANDLE_BAT(APINT_TYPE_PREFIX, 20946) +HANDLE_BAT(APINT_TYPE_PREFIX, 20947) +HANDLE_BAT(APINT_TYPE_PREFIX, 20948) +HANDLE_BAT(APINT_TYPE_PREFIX, 20949) +HANDLE_BAT(APINT_TYPE_PREFIX, 20950) +HANDLE_BAT(APINT_TYPE_PREFIX, 20951) +HANDLE_BAT(APINT_TYPE_PREFIX, 20952) +HANDLE_BAT(APINT_TYPE_PREFIX, 20953) +HANDLE_BAT(APINT_TYPE_PREFIX, 20954) +HANDLE_BAT(APINT_TYPE_PREFIX, 20955) +HANDLE_BAT(APINT_TYPE_PREFIX, 20956) +HANDLE_BAT(APINT_TYPE_PREFIX, 20957) +HANDLE_BAT(APINT_TYPE_PREFIX, 20958) +HANDLE_BAT(APINT_TYPE_PREFIX, 20959) +HANDLE_BAT(APINT_TYPE_PREFIX, 20960) +HANDLE_BAT(APINT_TYPE_PREFIX, 20961) +HANDLE_BAT(APINT_TYPE_PREFIX, 20962) +HANDLE_BAT(APINT_TYPE_PREFIX, 20963) +HANDLE_BAT(APINT_TYPE_PREFIX, 20964) +HANDLE_BAT(APINT_TYPE_PREFIX, 20965) +HANDLE_BAT(APINT_TYPE_PREFIX, 20966) +HANDLE_BAT(APINT_TYPE_PREFIX, 20967) +HANDLE_BAT(APINT_TYPE_PREFIX, 20968) +HANDLE_BAT(APINT_TYPE_PREFIX, 20969) +HANDLE_BAT(APINT_TYPE_PREFIX, 20970) +HANDLE_BAT(APINT_TYPE_PREFIX, 20971) +HANDLE_BAT(APINT_TYPE_PREFIX, 20972) +HANDLE_BAT(APINT_TYPE_PREFIX, 20973) +HANDLE_BAT(APINT_TYPE_PREFIX, 20974) +HANDLE_BAT(APINT_TYPE_PREFIX, 20975) +HANDLE_BAT(APINT_TYPE_PREFIX, 20976) +HANDLE_BAT(APINT_TYPE_PREFIX, 20977) +HANDLE_BAT(APINT_TYPE_PREFIX, 20978) +HANDLE_BAT(APINT_TYPE_PREFIX, 20979) +HANDLE_BAT(APINT_TYPE_PREFIX, 20980) +HANDLE_BAT(APINT_TYPE_PREFIX, 20981) +HANDLE_BAT(APINT_TYPE_PREFIX, 20982) +HANDLE_BAT(APINT_TYPE_PREFIX, 20983) +HANDLE_BAT(APINT_TYPE_PREFIX, 20984) +HANDLE_BAT(APINT_TYPE_PREFIX, 20985) +HANDLE_BAT(APINT_TYPE_PREFIX, 20986) +HANDLE_BAT(APINT_TYPE_PREFIX, 20987) +HANDLE_BAT(APINT_TYPE_PREFIX, 20988) +HANDLE_BAT(APINT_TYPE_PREFIX, 20989) +HANDLE_BAT(APINT_TYPE_PREFIX, 20990) +HANDLE_BAT(APINT_TYPE_PREFIX, 20991) +HANDLE_BAT(APINT_TYPE_PREFIX, 20992) +HANDLE_BAT(APINT_TYPE_PREFIX, 20993) +HANDLE_BAT(APINT_TYPE_PREFIX, 20994) +HANDLE_BAT(APINT_TYPE_PREFIX, 20995) +HANDLE_BAT(APINT_TYPE_PREFIX, 20996) +HANDLE_BAT(APINT_TYPE_PREFIX, 20997) +HANDLE_BAT(APINT_TYPE_PREFIX, 20998) +HANDLE_BAT(APINT_TYPE_PREFIX, 20999) +HANDLE_BAT(APINT_TYPE_PREFIX, 21000) +HANDLE_BAT(APINT_TYPE_PREFIX, 21001) +HANDLE_BAT(APINT_TYPE_PREFIX, 21002) +HANDLE_BAT(APINT_TYPE_PREFIX, 21003) +HANDLE_BAT(APINT_TYPE_PREFIX, 21004) +HANDLE_BAT(APINT_TYPE_PREFIX, 21005) +HANDLE_BAT(APINT_TYPE_PREFIX, 21006) +HANDLE_BAT(APINT_TYPE_PREFIX, 21007) +HANDLE_BAT(APINT_TYPE_PREFIX, 21008) +HANDLE_BAT(APINT_TYPE_PREFIX, 21009) +HANDLE_BAT(APINT_TYPE_PREFIX, 21010) +HANDLE_BAT(APINT_TYPE_PREFIX, 21011) +HANDLE_BAT(APINT_TYPE_PREFIX, 21012) +HANDLE_BAT(APINT_TYPE_PREFIX, 21013) +HANDLE_BAT(APINT_TYPE_PREFIX, 21014) +HANDLE_BAT(APINT_TYPE_PREFIX, 21015) +HANDLE_BAT(APINT_TYPE_PREFIX, 21016) +HANDLE_BAT(APINT_TYPE_PREFIX, 21017) +HANDLE_BAT(APINT_TYPE_PREFIX, 21018) +HANDLE_BAT(APINT_TYPE_PREFIX, 21019) +HANDLE_BAT(APINT_TYPE_PREFIX, 21020) +HANDLE_BAT(APINT_TYPE_PREFIX, 21021) +HANDLE_BAT(APINT_TYPE_PREFIX, 21022) +HANDLE_BAT(APINT_TYPE_PREFIX, 21023) +HANDLE_BAT(APINT_TYPE_PREFIX, 21024) +HANDLE_BAT(APINT_TYPE_PREFIX, 21025) +HANDLE_BAT(APINT_TYPE_PREFIX, 21026) +HANDLE_BAT(APINT_TYPE_PREFIX, 21027) +HANDLE_BAT(APINT_TYPE_PREFIX, 21028) +HANDLE_BAT(APINT_TYPE_PREFIX, 21029) +HANDLE_BAT(APINT_TYPE_PREFIX, 21030) +HANDLE_BAT(APINT_TYPE_PREFIX, 21031) +HANDLE_BAT(APINT_TYPE_PREFIX, 21032) +HANDLE_BAT(APINT_TYPE_PREFIX, 21033) +HANDLE_BAT(APINT_TYPE_PREFIX, 21034) +HANDLE_BAT(APINT_TYPE_PREFIX, 21035) +HANDLE_BAT(APINT_TYPE_PREFIX, 21036) +HANDLE_BAT(APINT_TYPE_PREFIX, 21037) +HANDLE_BAT(APINT_TYPE_PREFIX, 21038) +HANDLE_BAT(APINT_TYPE_PREFIX, 21039) +HANDLE_BAT(APINT_TYPE_PREFIX, 21040) +HANDLE_BAT(APINT_TYPE_PREFIX, 21041) +HANDLE_BAT(APINT_TYPE_PREFIX, 21042) +HANDLE_BAT(APINT_TYPE_PREFIX, 21043) +HANDLE_BAT(APINT_TYPE_PREFIX, 21044) +HANDLE_BAT(APINT_TYPE_PREFIX, 21045) +HANDLE_BAT(APINT_TYPE_PREFIX, 21046) +HANDLE_BAT(APINT_TYPE_PREFIX, 21047) +HANDLE_BAT(APINT_TYPE_PREFIX, 21048) +HANDLE_BAT(APINT_TYPE_PREFIX, 21049) +HANDLE_BAT(APINT_TYPE_PREFIX, 21050) +HANDLE_BAT(APINT_TYPE_PREFIX, 21051) +HANDLE_BAT(APINT_TYPE_PREFIX, 21052) +HANDLE_BAT(APINT_TYPE_PREFIX, 21053) +HANDLE_BAT(APINT_TYPE_PREFIX, 21054) +HANDLE_BAT(APINT_TYPE_PREFIX, 21055) +HANDLE_BAT(APINT_TYPE_PREFIX, 21056) +HANDLE_BAT(APINT_TYPE_PREFIX, 21057) +HANDLE_BAT(APINT_TYPE_PREFIX, 21058) +HANDLE_BAT(APINT_TYPE_PREFIX, 21059) +HANDLE_BAT(APINT_TYPE_PREFIX, 21060) +HANDLE_BAT(APINT_TYPE_PREFIX, 21061) +HANDLE_BAT(APINT_TYPE_PREFIX, 21062) +HANDLE_BAT(APINT_TYPE_PREFIX, 21063) +HANDLE_BAT(APINT_TYPE_PREFIX, 21064) +HANDLE_BAT(APINT_TYPE_PREFIX, 21065) +HANDLE_BAT(APINT_TYPE_PREFIX, 21066) +HANDLE_BAT(APINT_TYPE_PREFIX, 21067) +HANDLE_BAT(APINT_TYPE_PREFIX, 21068) +HANDLE_BAT(APINT_TYPE_PREFIX, 21069) +HANDLE_BAT(APINT_TYPE_PREFIX, 21070) +HANDLE_BAT(APINT_TYPE_PREFIX, 21071) +HANDLE_BAT(APINT_TYPE_PREFIX, 21072) +HANDLE_BAT(APINT_TYPE_PREFIX, 21073) +HANDLE_BAT(APINT_TYPE_PREFIX, 21074) +HANDLE_BAT(APINT_TYPE_PREFIX, 21075) +HANDLE_BAT(APINT_TYPE_PREFIX, 21076) +HANDLE_BAT(APINT_TYPE_PREFIX, 21077) +HANDLE_BAT(APINT_TYPE_PREFIX, 21078) +HANDLE_BAT(APINT_TYPE_PREFIX, 21079) +HANDLE_BAT(APINT_TYPE_PREFIX, 21080) +HANDLE_BAT(APINT_TYPE_PREFIX, 21081) +HANDLE_BAT(APINT_TYPE_PREFIX, 21082) +HANDLE_BAT(APINT_TYPE_PREFIX, 21083) +HANDLE_BAT(APINT_TYPE_PREFIX, 21084) +HANDLE_BAT(APINT_TYPE_PREFIX, 21085) +HANDLE_BAT(APINT_TYPE_PREFIX, 21086) +HANDLE_BAT(APINT_TYPE_PREFIX, 21087) +HANDLE_BAT(APINT_TYPE_PREFIX, 21088) +HANDLE_BAT(APINT_TYPE_PREFIX, 21089) +HANDLE_BAT(APINT_TYPE_PREFIX, 21090) +HANDLE_BAT(APINT_TYPE_PREFIX, 21091) +HANDLE_BAT(APINT_TYPE_PREFIX, 21092) +HANDLE_BAT(APINT_TYPE_PREFIX, 21093) +HANDLE_BAT(APINT_TYPE_PREFIX, 21094) +HANDLE_BAT(APINT_TYPE_PREFIX, 21095) +HANDLE_BAT(APINT_TYPE_PREFIX, 21096) +HANDLE_BAT(APINT_TYPE_PREFIX, 21097) +HANDLE_BAT(APINT_TYPE_PREFIX, 21098) +HANDLE_BAT(APINT_TYPE_PREFIX, 21099) +HANDLE_BAT(APINT_TYPE_PREFIX, 21100) +HANDLE_BAT(APINT_TYPE_PREFIX, 21101) +HANDLE_BAT(APINT_TYPE_PREFIX, 21102) +HANDLE_BAT(APINT_TYPE_PREFIX, 21103) +HANDLE_BAT(APINT_TYPE_PREFIX, 21104) +HANDLE_BAT(APINT_TYPE_PREFIX, 21105) +HANDLE_BAT(APINT_TYPE_PREFIX, 21106) +HANDLE_BAT(APINT_TYPE_PREFIX, 21107) +HANDLE_BAT(APINT_TYPE_PREFIX, 21108) +HANDLE_BAT(APINT_TYPE_PREFIX, 21109) +HANDLE_BAT(APINT_TYPE_PREFIX, 21110) +HANDLE_BAT(APINT_TYPE_PREFIX, 21111) +HANDLE_BAT(APINT_TYPE_PREFIX, 21112) +HANDLE_BAT(APINT_TYPE_PREFIX, 21113) +HANDLE_BAT(APINT_TYPE_PREFIX, 21114) +HANDLE_BAT(APINT_TYPE_PREFIX, 21115) +HANDLE_BAT(APINT_TYPE_PREFIX, 21116) +HANDLE_BAT(APINT_TYPE_PREFIX, 21117) +HANDLE_BAT(APINT_TYPE_PREFIX, 21118) +HANDLE_BAT(APINT_TYPE_PREFIX, 21119) +HANDLE_BAT(APINT_TYPE_PREFIX, 21120) +HANDLE_BAT(APINT_TYPE_PREFIX, 21121) +HANDLE_BAT(APINT_TYPE_PREFIX, 21122) +HANDLE_BAT(APINT_TYPE_PREFIX, 21123) +HANDLE_BAT(APINT_TYPE_PREFIX, 21124) +HANDLE_BAT(APINT_TYPE_PREFIX, 21125) +HANDLE_BAT(APINT_TYPE_PREFIX, 21126) +HANDLE_BAT(APINT_TYPE_PREFIX, 21127) +HANDLE_BAT(APINT_TYPE_PREFIX, 21128) +HANDLE_BAT(APINT_TYPE_PREFIX, 21129) +HANDLE_BAT(APINT_TYPE_PREFIX, 21130) +HANDLE_BAT(APINT_TYPE_PREFIX, 21131) +HANDLE_BAT(APINT_TYPE_PREFIX, 21132) +HANDLE_BAT(APINT_TYPE_PREFIX, 21133) +HANDLE_BAT(APINT_TYPE_PREFIX, 21134) +HANDLE_BAT(APINT_TYPE_PREFIX, 21135) +HANDLE_BAT(APINT_TYPE_PREFIX, 21136) +HANDLE_BAT(APINT_TYPE_PREFIX, 21137) +HANDLE_BAT(APINT_TYPE_PREFIX, 21138) +HANDLE_BAT(APINT_TYPE_PREFIX, 21139) +HANDLE_BAT(APINT_TYPE_PREFIX, 21140) +HANDLE_BAT(APINT_TYPE_PREFIX, 21141) +HANDLE_BAT(APINT_TYPE_PREFIX, 21142) +HANDLE_BAT(APINT_TYPE_PREFIX, 21143) +HANDLE_BAT(APINT_TYPE_PREFIX, 21144) +HANDLE_BAT(APINT_TYPE_PREFIX, 21145) +HANDLE_BAT(APINT_TYPE_PREFIX, 21146) +HANDLE_BAT(APINT_TYPE_PREFIX, 21147) +HANDLE_BAT(APINT_TYPE_PREFIX, 21148) +HANDLE_BAT(APINT_TYPE_PREFIX, 21149) +HANDLE_BAT(APINT_TYPE_PREFIX, 21150) +HANDLE_BAT(APINT_TYPE_PREFIX, 21151) +HANDLE_BAT(APINT_TYPE_PREFIX, 21152) +HANDLE_BAT(APINT_TYPE_PREFIX, 21153) +HANDLE_BAT(APINT_TYPE_PREFIX, 21154) +HANDLE_BAT(APINT_TYPE_PREFIX, 21155) +HANDLE_BAT(APINT_TYPE_PREFIX, 21156) +HANDLE_BAT(APINT_TYPE_PREFIX, 21157) +HANDLE_BAT(APINT_TYPE_PREFIX, 21158) +HANDLE_BAT(APINT_TYPE_PREFIX, 21159) +HANDLE_BAT(APINT_TYPE_PREFIX, 21160) +HANDLE_BAT(APINT_TYPE_PREFIX, 21161) +HANDLE_BAT(APINT_TYPE_PREFIX, 21162) +HANDLE_BAT(APINT_TYPE_PREFIX, 21163) +HANDLE_BAT(APINT_TYPE_PREFIX, 21164) +HANDLE_BAT(APINT_TYPE_PREFIX, 21165) +HANDLE_BAT(APINT_TYPE_PREFIX, 21166) +HANDLE_BAT(APINT_TYPE_PREFIX, 21167) +HANDLE_BAT(APINT_TYPE_PREFIX, 21168) +HANDLE_BAT(APINT_TYPE_PREFIX, 21169) +HANDLE_BAT(APINT_TYPE_PREFIX, 21170) +HANDLE_BAT(APINT_TYPE_PREFIX, 21171) +HANDLE_BAT(APINT_TYPE_PREFIX, 21172) +HANDLE_BAT(APINT_TYPE_PREFIX, 21173) +HANDLE_BAT(APINT_TYPE_PREFIX, 21174) +HANDLE_BAT(APINT_TYPE_PREFIX, 21175) +HANDLE_BAT(APINT_TYPE_PREFIX, 21176) +HANDLE_BAT(APINT_TYPE_PREFIX, 21177) +HANDLE_BAT(APINT_TYPE_PREFIX, 21178) +HANDLE_BAT(APINT_TYPE_PREFIX, 21179) +HANDLE_BAT(APINT_TYPE_PREFIX, 21180) +HANDLE_BAT(APINT_TYPE_PREFIX, 21181) +HANDLE_BAT(APINT_TYPE_PREFIX, 21182) +HANDLE_BAT(APINT_TYPE_PREFIX, 21183) +HANDLE_BAT(APINT_TYPE_PREFIX, 21184) +HANDLE_BAT(APINT_TYPE_PREFIX, 21185) +HANDLE_BAT(APINT_TYPE_PREFIX, 21186) +HANDLE_BAT(APINT_TYPE_PREFIX, 21187) +HANDLE_BAT(APINT_TYPE_PREFIX, 21188) +HANDLE_BAT(APINT_TYPE_PREFIX, 21189) +HANDLE_BAT(APINT_TYPE_PREFIX, 21190) +HANDLE_BAT(APINT_TYPE_PREFIX, 21191) +HANDLE_BAT(APINT_TYPE_PREFIX, 21192) +HANDLE_BAT(APINT_TYPE_PREFIX, 21193) +HANDLE_BAT(APINT_TYPE_PREFIX, 21194) +HANDLE_BAT(APINT_TYPE_PREFIX, 21195) +HANDLE_BAT(APINT_TYPE_PREFIX, 21196) +HANDLE_BAT(APINT_TYPE_PREFIX, 21197) +HANDLE_BAT(APINT_TYPE_PREFIX, 21198) +HANDLE_BAT(APINT_TYPE_PREFIX, 21199) +HANDLE_BAT(APINT_TYPE_PREFIX, 21200) +HANDLE_BAT(APINT_TYPE_PREFIX, 21201) +HANDLE_BAT(APINT_TYPE_PREFIX, 21202) +HANDLE_BAT(APINT_TYPE_PREFIX, 21203) +HANDLE_BAT(APINT_TYPE_PREFIX, 21204) +HANDLE_BAT(APINT_TYPE_PREFIX, 21205) +HANDLE_BAT(APINT_TYPE_PREFIX, 21206) +HANDLE_BAT(APINT_TYPE_PREFIX, 21207) +HANDLE_BAT(APINT_TYPE_PREFIX, 21208) +HANDLE_BAT(APINT_TYPE_PREFIX, 21209) +HANDLE_BAT(APINT_TYPE_PREFIX, 21210) +HANDLE_BAT(APINT_TYPE_PREFIX, 21211) +HANDLE_BAT(APINT_TYPE_PREFIX, 21212) +HANDLE_BAT(APINT_TYPE_PREFIX, 21213) +HANDLE_BAT(APINT_TYPE_PREFIX, 21214) +HANDLE_BAT(APINT_TYPE_PREFIX, 21215) +HANDLE_BAT(APINT_TYPE_PREFIX, 21216) +HANDLE_BAT(APINT_TYPE_PREFIX, 21217) +HANDLE_BAT(APINT_TYPE_PREFIX, 21218) +HANDLE_BAT(APINT_TYPE_PREFIX, 21219) +HANDLE_BAT(APINT_TYPE_PREFIX, 21220) +HANDLE_BAT(APINT_TYPE_PREFIX, 21221) +HANDLE_BAT(APINT_TYPE_PREFIX, 21222) +HANDLE_BAT(APINT_TYPE_PREFIX, 21223) +HANDLE_BAT(APINT_TYPE_PREFIX, 21224) +HANDLE_BAT(APINT_TYPE_PREFIX, 21225) +HANDLE_BAT(APINT_TYPE_PREFIX, 21226) +HANDLE_BAT(APINT_TYPE_PREFIX, 21227) +HANDLE_BAT(APINT_TYPE_PREFIX, 21228) +HANDLE_BAT(APINT_TYPE_PREFIX, 21229) +HANDLE_BAT(APINT_TYPE_PREFIX, 21230) +HANDLE_BAT(APINT_TYPE_PREFIX, 21231) +HANDLE_BAT(APINT_TYPE_PREFIX, 21232) +HANDLE_BAT(APINT_TYPE_PREFIX, 21233) +HANDLE_BAT(APINT_TYPE_PREFIX, 21234) +HANDLE_BAT(APINT_TYPE_PREFIX, 21235) +HANDLE_BAT(APINT_TYPE_PREFIX, 21236) +HANDLE_BAT(APINT_TYPE_PREFIX, 21237) +HANDLE_BAT(APINT_TYPE_PREFIX, 21238) +HANDLE_BAT(APINT_TYPE_PREFIX, 21239) +HANDLE_BAT(APINT_TYPE_PREFIX, 21240) +HANDLE_BAT(APINT_TYPE_PREFIX, 21241) +HANDLE_BAT(APINT_TYPE_PREFIX, 21242) +HANDLE_BAT(APINT_TYPE_PREFIX, 21243) +HANDLE_BAT(APINT_TYPE_PREFIX, 21244) +HANDLE_BAT(APINT_TYPE_PREFIX, 21245) +HANDLE_BAT(APINT_TYPE_PREFIX, 21246) +HANDLE_BAT(APINT_TYPE_PREFIX, 21247) +HANDLE_BAT(APINT_TYPE_PREFIX, 21248) +HANDLE_BAT(APINT_TYPE_PREFIX, 21249) +HANDLE_BAT(APINT_TYPE_PREFIX, 21250) +HANDLE_BAT(APINT_TYPE_PREFIX, 21251) +HANDLE_BAT(APINT_TYPE_PREFIX, 21252) +HANDLE_BAT(APINT_TYPE_PREFIX, 21253) +HANDLE_BAT(APINT_TYPE_PREFIX, 21254) +HANDLE_BAT(APINT_TYPE_PREFIX, 21255) +HANDLE_BAT(APINT_TYPE_PREFIX, 21256) +HANDLE_BAT(APINT_TYPE_PREFIX, 21257) +HANDLE_BAT(APINT_TYPE_PREFIX, 21258) +HANDLE_BAT(APINT_TYPE_PREFIX, 21259) +HANDLE_BAT(APINT_TYPE_PREFIX, 21260) +HANDLE_BAT(APINT_TYPE_PREFIX, 21261) +HANDLE_BAT(APINT_TYPE_PREFIX, 21262) +HANDLE_BAT(APINT_TYPE_PREFIX, 21263) +HANDLE_BAT(APINT_TYPE_PREFIX, 21264) +HANDLE_BAT(APINT_TYPE_PREFIX, 21265) +HANDLE_BAT(APINT_TYPE_PREFIX, 21266) +HANDLE_BAT(APINT_TYPE_PREFIX, 21267) +HANDLE_BAT(APINT_TYPE_PREFIX, 21268) +HANDLE_BAT(APINT_TYPE_PREFIX, 21269) +HANDLE_BAT(APINT_TYPE_PREFIX, 21270) +HANDLE_BAT(APINT_TYPE_PREFIX, 21271) +HANDLE_BAT(APINT_TYPE_PREFIX, 21272) +HANDLE_BAT(APINT_TYPE_PREFIX, 21273) +HANDLE_BAT(APINT_TYPE_PREFIX, 21274) +HANDLE_BAT(APINT_TYPE_PREFIX, 21275) +HANDLE_BAT(APINT_TYPE_PREFIX, 21276) +HANDLE_BAT(APINT_TYPE_PREFIX, 21277) +HANDLE_BAT(APINT_TYPE_PREFIX, 21278) +HANDLE_BAT(APINT_TYPE_PREFIX, 21279) +HANDLE_BAT(APINT_TYPE_PREFIX, 21280) +HANDLE_BAT(APINT_TYPE_PREFIX, 21281) +HANDLE_BAT(APINT_TYPE_PREFIX, 21282) +HANDLE_BAT(APINT_TYPE_PREFIX, 21283) +HANDLE_BAT(APINT_TYPE_PREFIX, 21284) +HANDLE_BAT(APINT_TYPE_PREFIX, 21285) +HANDLE_BAT(APINT_TYPE_PREFIX, 21286) +HANDLE_BAT(APINT_TYPE_PREFIX, 21287) +HANDLE_BAT(APINT_TYPE_PREFIX, 21288) +HANDLE_BAT(APINT_TYPE_PREFIX, 21289) +HANDLE_BAT(APINT_TYPE_PREFIX, 21290) +HANDLE_BAT(APINT_TYPE_PREFIX, 21291) +HANDLE_BAT(APINT_TYPE_PREFIX, 21292) +HANDLE_BAT(APINT_TYPE_PREFIX, 21293) +HANDLE_BAT(APINT_TYPE_PREFIX, 21294) +HANDLE_BAT(APINT_TYPE_PREFIX, 21295) +HANDLE_BAT(APINT_TYPE_PREFIX, 21296) +HANDLE_BAT(APINT_TYPE_PREFIX, 21297) +HANDLE_BAT(APINT_TYPE_PREFIX, 21298) +HANDLE_BAT(APINT_TYPE_PREFIX, 21299) +HANDLE_BAT(APINT_TYPE_PREFIX, 21300) +HANDLE_BAT(APINT_TYPE_PREFIX, 21301) +HANDLE_BAT(APINT_TYPE_PREFIX, 21302) +HANDLE_BAT(APINT_TYPE_PREFIX, 21303) +HANDLE_BAT(APINT_TYPE_PREFIX, 21304) +HANDLE_BAT(APINT_TYPE_PREFIX, 21305) +HANDLE_BAT(APINT_TYPE_PREFIX, 21306) +HANDLE_BAT(APINT_TYPE_PREFIX, 21307) +HANDLE_BAT(APINT_TYPE_PREFIX, 21308) +HANDLE_BAT(APINT_TYPE_PREFIX, 21309) +HANDLE_BAT(APINT_TYPE_PREFIX, 21310) +HANDLE_BAT(APINT_TYPE_PREFIX, 21311) +HANDLE_BAT(APINT_TYPE_PREFIX, 21312) +HANDLE_BAT(APINT_TYPE_PREFIX, 21313) +HANDLE_BAT(APINT_TYPE_PREFIX, 21314) +HANDLE_BAT(APINT_TYPE_PREFIX, 21315) +HANDLE_BAT(APINT_TYPE_PREFIX, 21316) +HANDLE_BAT(APINT_TYPE_PREFIX, 21317) +HANDLE_BAT(APINT_TYPE_PREFIX, 21318) +HANDLE_BAT(APINT_TYPE_PREFIX, 21319) +HANDLE_BAT(APINT_TYPE_PREFIX, 21320) +HANDLE_BAT(APINT_TYPE_PREFIX, 21321) +HANDLE_BAT(APINT_TYPE_PREFIX, 21322) +HANDLE_BAT(APINT_TYPE_PREFIX, 21323) +HANDLE_BAT(APINT_TYPE_PREFIX, 21324) +HANDLE_BAT(APINT_TYPE_PREFIX, 21325) +HANDLE_BAT(APINT_TYPE_PREFIX, 21326) +HANDLE_BAT(APINT_TYPE_PREFIX, 21327) +HANDLE_BAT(APINT_TYPE_PREFIX, 21328) +HANDLE_BAT(APINT_TYPE_PREFIX, 21329) +HANDLE_BAT(APINT_TYPE_PREFIX, 21330) +HANDLE_BAT(APINT_TYPE_PREFIX, 21331) +HANDLE_BAT(APINT_TYPE_PREFIX, 21332) +HANDLE_BAT(APINT_TYPE_PREFIX, 21333) +HANDLE_BAT(APINT_TYPE_PREFIX, 21334) +HANDLE_BAT(APINT_TYPE_PREFIX, 21335) +HANDLE_BAT(APINT_TYPE_PREFIX, 21336) +HANDLE_BAT(APINT_TYPE_PREFIX, 21337) +HANDLE_BAT(APINT_TYPE_PREFIX, 21338) +HANDLE_BAT(APINT_TYPE_PREFIX, 21339) +HANDLE_BAT(APINT_TYPE_PREFIX, 21340) +HANDLE_BAT(APINT_TYPE_PREFIX, 21341) +HANDLE_BAT(APINT_TYPE_PREFIX, 21342) +HANDLE_BAT(APINT_TYPE_PREFIX, 21343) +HANDLE_BAT(APINT_TYPE_PREFIX, 21344) +HANDLE_BAT(APINT_TYPE_PREFIX, 21345) +HANDLE_BAT(APINT_TYPE_PREFIX, 21346) +HANDLE_BAT(APINT_TYPE_PREFIX, 21347) +HANDLE_BAT(APINT_TYPE_PREFIX, 21348) +HANDLE_BAT(APINT_TYPE_PREFIX, 21349) +HANDLE_BAT(APINT_TYPE_PREFIX, 21350) +HANDLE_BAT(APINT_TYPE_PREFIX, 21351) +HANDLE_BAT(APINT_TYPE_PREFIX, 21352) +HANDLE_BAT(APINT_TYPE_PREFIX, 21353) +HANDLE_BAT(APINT_TYPE_PREFIX, 21354) +HANDLE_BAT(APINT_TYPE_PREFIX, 21355) +HANDLE_BAT(APINT_TYPE_PREFIX, 21356) +HANDLE_BAT(APINT_TYPE_PREFIX, 21357) +HANDLE_BAT(APINT_TYPE_PREFIX, 21358) +HANDLE_BAT(APINT_TYPE_PREFIX, 21359) +HANDLE_BAT(APINT_TYPE_PREFIX, 21360) +HANDLE_BAT(APINT_TYPE_PREFIX, 21361) +HANDLE_BAT(APINT_TYPE_PREFIX, 21362) +HANDLE_BAT(APINT_TYPE_PREFIX, 21363) +HANDLE_BAT(APINT_TYPE_PREFIX, 21364) +HANDLE_BAT(APINT_TYPE_PREFIX, 21365) +HANDLE_BAT(APINT_TYPE_PREFIX, 21366) +HANDLE_BAT(APINT_TYPE_PREFIX, 21367) +HANDLE_BAT(APINT_TYPE_PREFIX, 21368) +HANDLE_BAT(APINT_TYPE_PREFIX, 21369) +HANDLE_BAT(APINT_TYPE_PREFIX, 21370) +HANDLE_BAT(APINT_TYPE_PREFIX, 21371) +HANDLE_BAT(APINT_TYPE_PREFIX, 21372) +HANDLE_BAT(APINT_TYPE_PREFIX, 21373) +HANDLE_BAT(APINT_TYPE_PREFIX, 21374) +HANDLE_BAT(APINT_TYPE_PREFIX, 21375) +HANDLE_BAT(APINT_TYPE_PREFIX, 21376) +HANDLE_BAT(APINT_TYPE_PREFIX, 21377) +HANDLE_BAT(APINT_TYPE_PREFIX, 21378) +HANDLE_BAT(APINT_TYPE_PREFIX, 21379) +HANDLE_BAT(APINT_TYPE_PREFIX, 21380) +HANDLE_BAT(APINT_TYPE_PREFIX, 21381) +HANDLE_BAT(APINT_TYPE_PREFIX, 21382) +HANDLE_BAT(APINT_TYPE_PREFIX, 21383) +HANDLE_BAT(APINT_TYPE_PREFIX, 21384) +HANDLE_BAT(APINT_TYPE_PREFIX, 21385) +HANDLE_BAT(APINT_TYPE_PREFIX, 21386) +HANDLE_BAT(APINT_TYPE_PREFIX, 21387) +HANDLE_BAT(APINT_TYPE_PREFIX, 21388) +HANDLE_BAT(APINT_TYPE_PREFIX, 21389) +HANDLE_BAT(APINT_TYPE_PREFIX, 21390) +HANDLE_BAT(APINT_TYPE_PREFIX, 21391) +HANDLE_BAT(APINT_TYPE_PREFIX, 21392) +HANDLE_BAT(APINT_TYPE_PREFIX, 21393) +HANDLE_BAT(APINT_TYPE_PREFIX, 21394) +HANDLE_BAT(APINT_TYPE_PREFIX, 21395) +HANDLE_BAT(APINT_TYPE_PREFIX, 21396) +HANDLE_BAT(APINT_TYPE_PREFIX, 21397) +HANDLE_BAT(APINT_TYPE_PREFIX, 21398) +HANDLE_BAT(APINT_TYPE_PREFIX, 21399) +HANDLE_BAT(APINT_TYPE_PREFIX, 21400) +HANDLE_BAT(APINT_TYPE_PREFIX, 21401) +HANDLE_BAT(APINT_TYPE_PREFIX, 21402) +HANDLE_BAT(APINT_TYPE_PREFIX, 21403) +HANDLE_BAT(APINT_TYPE_PREFIX, 21404) +HANDLE_BAT(APINT_TYPE_PREFIX, 21405) +HANDLE_BAT(APINT_TYPE_PREFIX, 21406) +HANDLE_BAT(APINT_TYPE_PREFIX, 21407) +HANDLE_BAT(APINT_TYPE_PREFIX, 21408) +HANDLE_BAT(APINT_TYPE_PREFIX, 21409) +HANDLE_BAT(APINT_TYPE_PREFIX, 21410) +HANDLE_BAT(APINT_TYPE_PREFIX, 21411) +HANDLE_BAT(APINT_TYPE_PREFIX, 21412) +HANDLE_BAT(APINT_TYPE_PREFIX, 21413) +HANDLE_BAT(APINT_TYPE_PREFIX, 21414) +HANDLE_BAT(APINT_TYPE_PREFIX, 21415) +HANDLE_BAT(APINT_TYPE_PREFIX, 21416) +HANDLE_BAT(APINT_TYPE_PREFIX, 21417) +HANDLE_BAT(APINT_TYPE_PREFIX, 21418) +HANDLE_BAT(APINT_TYPE_PREFIX, 21419) +HANDLE_BAT(APINT_TYPE_PREFIX, 21420) +HANDLE_BAT(APINT_TYPE_PREFIX, 21421) +HANDLE_BAT(APINT_TYPE_PREFIX, 21422) +HANDLE_BAT(APINT_TYPE_PREFIX, 21423) +HANDLE_BAT(APINT_TYPE_PREFIX, 21424) +HANDLE_BAT(APINT_TYPE_PREFIX, 21425) +HANDLE_BAT(APINT_TYPE_PREFIX, 21426) +HANDLE_BAT(APINT_TYPE_PREFIX, 21427) +HANDLE_BAT(APINT_TYPE_PREFIX, 21428) +HANDLE_BAT(APINT_TYPE_PREFIX, 21429) +HANDLE_BAT(APINT_TYPE_PREFIX, 21430) +HANDLE_BAT(APINT_TYPE_PREFIX, 21431) +HANDLE_BAT(APINT_TYPE_PREFIX, 21432) +HANDLE_BAT(APINT_TYPE_PREFIX, 21433) +HANDLE_BAT(APINT_TYPE_PREFIX, 21434) +HANDLE_BAT(APINT_TYPE_PREFIX, 21435) +HANDLE_BAT(APINT_TYPE_PREFIX, 21436) +HANDLE_BAT(APINT_TYPE_PREFIX, 21437) +HANDLE_BAT(APINT_TYPE_PREFIX, 21438) +HANDLE_BAT(APINT_TYPE_PREFIX, 21439) +HANDLE_BAT(APINT_TYPE_PREFIX, 21440) +HANDLE_BAT(APINT_TYPE_PREFIX, 21441) +HANDLE_BAT(APINT_TYPE_PREFIX, 21442) +HANDLE_BAT(APINT_TYPE_PREFIX, 21443) +HANDLE_BAT(APINT_TYPE_PREFIX, 21444) +HANDLE_BAT(APINT_TYPE_PREFIX, 21445) +HANDLE_BAT(APINT_TYPE_PREFIX, 21446) +HANDLE_BAT(APINT_TYPE_PREFIX, 21447) +HANDLE_BAT(APINT_TYPE_PREFIX, 21448) +HANDLE_BAT(APINT_TYPE_PREFIX, 21449) +HANDLE_BAT(APINT_TYPE_PREFIX, 21450) +HANDLE_BAT(APINT_TYPE_PREFIX, 21451) +HANDLE_BAT(APINT_TYPE_PREFIX, 21452) +HANDLE_BAT(APINT_TYPE_PREFIX, 21453) +HANDLE_BAT(APINT_TYPE_PREFIX, 21454) +HANDLE_BAT(APINT_TYPE_PREFIX, 21455) +HANDLE_BAT(APINT_TYPE_PREFIX, 21456) +HANDLE_BAT(APINT_TYPE_PREFIX, 21457) +HANDLE_BAT(APINT_TYPE_PREFIX, 21458) +HANDLE_BAT(APINT_TYPE_PREFIX, 21459) +HANDLE_BAT(APINT_TYPE_PREFIX, 21460) +HANDLE_BAT(APINT_TYPE_PREFIX, 21461) +HANDLE_BAT(APINT_TYPE_PREFIX, 21462) +HANDLE_BAT(APINT_TYPE_PREFIX, 21463) +HANDLE_BAT(APINT_TYPE_PREFIX, 21464) +HANDLE_BAT(APINT_TYPE_PREFIX, 21465) +HANDLE_BAT(APINT_TYPE_PREFIX, 21466) +HANDLE_BAT(APINT_TYPE_PREFIX, 21467) +HANDLE_BAT(APINT_TYPE_PREFIX, 21468) +HANDLE_BAT(APINT_TYPE_PREFIX, 21469) +HANDLE_BAT(APINT_TYPE_PREFIX, 21470) +HANDLE_BAT(APINT_TYPE_PREFIX, 21471) +HANDLE_BAT(APINT_TYPE_PREFIX, 21472) +HANDLE_BAT(APINT_TYPE_PREFIX, 21473) +HANDLE_BAT(APINT_TYPE_PREFIX, 21474) +HANDLE_BAT(APINT_TYPE_PREFIX, 21475) +HANDLE_BAT(APINT_TYPE_PREFIX, 21476) +HANDLE_BAT(APINT_TYPE_PREFIX, 21477) +HANDLE_BAT(APINT_TYPE_PREFIX, 21478) +HANDLE_BAT(APINT_TYPE_PREFIX, 21479) +HANDLE_BAT(APINT_TYPE_PREFIX, 21480) +HANDLE_BAT(APINT_TYPE_PREFIX, 21481) +HANDLE_BAT(APINT_TYPE_PREFIX, 21482) +HANDLE_BAT(APINT_TYPE_PREFIX, 21483) +HANDLE_BAT(APINT_TYPE_PREFIX, 21484) +HANDLE_BAT(APINT_TYPE_PREFIX, 21485) +HANDLE_BAT(APINT_TYPE_PREFIX, 21486) +HANDLE_BAT(APINT_TYPE_PREFIX, 21487) +HANDLE_BAT(APINT_TYPE_PREFIX, 21488) +HANDLE_BAT(APINT_TYPE_PREFIX, 21489) +HANDLE_BAT(APINT_TYPE_PREFIX, 21490) +HANDLE_BAT(APINT_TYPE_PREFIX, 21491) +HANDLE_BAT(APINT_TYPE_PREFIX, 21492) +HANDLE_BAT(APINT_TYPE_PREFIX, 21493) +HANDLE_BAT(APINT_TYPE_PREFIX, 21494) +HANDLE_BAT(APINT_TYPE_PREFIX, 21495) +HANDLE_BAT(APINT_TYPE_PREFIX, 21496) +HANDLE_BAT(APINT_TYPE_PREFIX, 21497) +HANDLE_BAT(APINT_TYPE_PREFIX, 21498) +HANDLE_BAT(APINT_TYPE_PREFIX, 21499) +HANDLE_BAT(APINT_TYPE_PREFIX, 21500) +HANDLE_BAT(APINT_TYPE_PREFIX, 21501) +HANDLE_BAT(APINT_TYPE_PREFIX, 21502) +HANDLE_BAT(APINT_TYPE_PREFIX, 21503) +HANDLE_BAT(APINT_TYPE_PREFIX, 21504) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 21 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 21505) +HANDLE_BAT(, 21506) +HANDLE_BAT(, 21507) +HANDLE_BAT(, 21508) +HANDLE_BAT(, 21509) +HANDLE_BAT(, 21510) +HANDLE_BAT(, 21511) +HANDLE_BAT(, 21512) +HANDLE_BAT(, 21513) +HANDLE_BAT(, 21514) +HANDLE_BAT(, 21515) +HANDLE_BAT(, 21516) +HANDLE_BAT(, 21517) +HANDLE_BAT(, 21518) +HANDLE_BAT(, 21519) +HANDLE_BAT(, 21520) +HANDLE_BAT(, 21521) +HANDLE_BAT(, 21522) +HANDLE_BAT(, 21523) +HANDLE_BAT(, 21524) +HANDLE_BAT(, 21525) +HANDLE_BAT(, 21526) +HANDLE_BAT(, 21527) +HANDLE_BAT(, 21528) +HANDLE_BAT(, 21529) +HANDLE_BAT(, 21530) +HANDLE_BAT(, 21531) +HANDLE_BAT(, 21532) +HANDLE_BAT(, 21533) +HANDLE_BAT(, 21534) +HANDLE_BAT(, 21535) +HANDLE_BAT(, 21536) +HANDLE_BAT(, 21537) +HANDLE_BAT(, 21538) +HANDLE_BAT(, 21539) +HANDLE_BAT(, 21540) +HANDLE_BAT(, 21541) +HANDLE_BAT(, 21542) +HANDLE_BAT(, 21543) +HANDLE_BAT(, 21544) +HANDLE_BAT(, 21545) +HANDLE_BAT(, 21546) +HANDLE_BAT(, 21547) +HANDLE_BAT(, 21548) +HANDLE_BAT(, 21549) +HANDLE_BAT(, 21550) +HANDLE_BAT(, 21551) +HANDLE_BAT(, 21552) +HANDLE_BAT(, 21553) +HANDLE_BAT(, 21554) +HANDLE_BAT(, 21555) +HANDLE_BAT(, 21556) +HANDLE_BAT(, 21557) +HANDLE_BAT(, 21558) +HANDLE_BAT(, 21559) +HANDLE_BAT(, 21560) +HANDLE_BAT(, 21561) +HANDLE_BAT(, 21562) +HANDLE_BAT(, 21563) +HANDLE_BAT(, 21564) +HANDLE_BAT(, 21565) +HANDLE_BAT(, 21566) +HANDLE_BAT(, 21567) +HANDLE_BAT(, 21568) +HANDLE_BAT(, 21569) +HANDLE_BAT(, 21570) +HANDLE_BAT(, 21571) +HANDLE_BAT(, 21572) +HANDLE_BAT(, 21573) +HANDLE_BAT(, 21574) +HANDLE_BAT(, 21575) +HANDLE_BAT(, 21576) +HANDLE_BAT(, 21577) +HANDLE_BAT(, 21578) +HANDLE_BAT(, 21579) +HANDLE_BAT(, 21580) +HANDLE_BAT(, 21581) +HANDLE_BAT(, 21582) +HANDLE_BAT(, 21583) +HANDLE_BAT(, 21584) +HANDLE_BAT(, 21585) +HANDLE_BAT(, 21586) +HANDLE_BAT(, 21587) +HANDLE_BAT(, 21588) +HANDLE_BAT(, 21589) +HANDLE_BAT(, 21590) +HANDLE_BAT(, 21591) +HANDLE_BAT(, 21592) +HANDLE_BAT(, 21593) +HANDLE_BAT(, 21594) +HANDLE_BAT(, 21595) +HANDLE_BAT(, 21596) +HANDLE_BAT(, 21597) +HANDLE_BAT(, 21598) +HANDLE_BAT(, 21599) +HANDLE_BAT(, 21600) +HANDLE_BAT(, 21601) +HANDLE_BAT(, 21602) +HANDLE_BAT(, 21603) +HANDLE_BAT(, 21604) +HANDLE_BAT(, 21605) +HANDLE_BAT(, 21606) +HANDLE_BAT(, 21607) +HANDLE_BAT(, 21608) +HANDLE_BAT(, 21609) +HANDLE_BAT(, 21610) +HANDLE_BAT(, 21611) +HANDLE_BAT(, 21612) +HANDLE_BAT(, 21613) +HANDLE_BAT(, 21614) +HANDLE_BAT(, 21615) +HANDLE_BAT(, 21616) +HANDLE_BAT(, 21617) +HANDLE_BAT(, 21618) +HANDLE_BAT(, 21619) +HANDLE_BAT(, 21620) +HANDLE_BAT(, 21621) +HANDLE_BAT(, 21622) +HANDLE_BAT(, 21623) +HANDLE_BAT(, 21624) +HANDLE_BAT(, 21625) +HANDLE_BAT(, 21626) +HANDLE_BAT(, 21627) +HANDLE_BAT(, 21628) +HANDLE_BAT(, 21629) +HANDLE_BAT(, 21630) +HANDLE_BAT(, 21631) +HANDLE_BAT(, 21632) +HANDLE_BAT(, 21633) +HANDLE_BAT(, 21634) +HANDLE_BAT(, 21635) +HANDLE_BAT(, 21636) +HANDLE_BAT(, 21637) +HANDLE_BAT(, 21638) +HANDLE_BAT(, 21639) +HANDLE_BAT(, 21640) +HANDLE_BAT(, 21641) +HANDLE_BAT(, 21642) +HANDLE_BAT(, 21643) +HANDLE_BAT(, 21644) +HANDLE_BAT(, 21645) +HANDLE_BAT(, 21646) +HANDLE_BAT(, 21647) +HANDLE_BAT(, 21648) +HANDLE_BAT(, 21649) +HANDLE_BAT(, 21650) +HANDLE_BAT(, 21651) +HANDLE_BAT(, 21652) +HANDLE_BAT(, 21653) +HANDLE_BAT(, 21654) +HANDLE_BAT(, 21655) +HANDLE_BAT(, 21656) +HANDLE_BAT(, 21657) +HANDLE_BAT(, 21658) +HANDLE_BAT(, 21659) +HANDLE_BAT(, 21660) +HANDLE_BAT(, 21661) +HANDLE_BAT(, 21662) +HANDLE_BAT(, 21663) +HANDLE_BAT(, 21664) +HANDLE_BAT(, 21665) +HANDLE_BAT(, 21666) +HANDLE_BAT(, 21667) +HANDLE_BAT(, 21668) +HANDLE_BAT(, 21669) +HANDLE_BAT(, 21670) +HANDLE_BAT(, 21671) +HANDLE_BAT(, 21672) +HANDLE_BAT(, 21673) +HANDLE_BAT(, 21674) +HANDLE_BAT(, 21675) +HANDLE_BAT(, 21676) +HANDLE_BAT(, 21677) +HANDLE_BAT(, 21678) +HANDLE_BAT(, 21679) +HANDLE_BAT(, 21680) +HANDLE_BAT(, 21681) +HANDLE_BAT(, 21682) +HANDLE_BAT(, 21683) +HANDLE_BAT(, 21684) +HANDLE_BAT(, 21685) +HANDLE_BAT(, 21686) +HANDLE_BAT(, 21687) +HANDLE_BAT(, 21688) +HANDLE_BAT(, 21689) +HANDLE_BAT(, 21690) +HANDLE_BAT(, 21691) +HANDLE_BAT(, 21692) +HANDLE_BAT(, 21693) +HANDLE_BAT(, 21694) +HANDLE_BAT(, 21695) +HANDLE_BAT(, 21696) +HANDLE_BAT(, 21697) +HANDLE_BAT(, 21698) +HANDLE_BAT(, 21699) +HANDLE_BAT(, 21700) +HANDLE_BAT(, 21701) +HANDLE_BAT(, 21702) +HANDLE_BAT(, 21703) +HANDLE_BAT(, 21704) +HANDLE_BAT(, 21705) +HANDLE_BAT(, 21706) +HANDLE_BAT(, 21707) +HANDLE_BAT(, 21708) +HANDLE_BAT(, 21709) +HANDLE_BAT(, 21710) +HANDLE_BAT(, 21711) +HANDLE_BAT(, 21712) +HANDLE_BAT(, 21713) +HANDLE_BAT(, 21714) +HANDLE_BAT(, 21715) +HANDLE_BAT(, 21716) +HANDLE_BAT(, 21717) +HANDLE_BAT(, 21718) +HANDLE_BAT(, 21719) +HANDLE_BAT(, 21720) +HANDLE_BAT(, 21721) +HANDLE_BAT(, 21722) +HANDLE_BAT(, 21723) +HANDLE_BAT(, 21724) +HANDLE_BAT(, 21725) +HANDLE_BAT(, 21726) +HANDLE_BAT(, 21727) +HANDLE_BAT(, 21728) +HANDLE_BAT(, 21729) +HANDLE_BAT(, 21730) +HANDLE_BAT(, 21731) +HANDLE_BAT(, 21732) +HANDLE_BAT(, 21733) +HANDLE_BAT(, 21734) +HANDLE_BAT(, 21735) +HANDLE_BAT(, 21736) +HANDLE_BAT(, 21737) +HANDLE_BAT(, 21738) +HANDLE_BAT(, 21739) +HANDLE_BAT(, 21740) +HANDLE_BAT(, 21741) +HANDLE_BAT(, 21742) +HANDLE_BAT(, 21743) +HANDLE_BAT(, 21744) +HANDLE_BAT(, 21745) +HANDLE_BAT(, 21746) +HANDLE_BAT(, 21747) +HANDLE_BAT(, 21748) +HANDLE_BAT(, 21749) +HANDLE_BAT(, 21750) +HANDLE_BAT(, 21751) +HANDLE_BAT(, 21752) +HANDLE_BAT(, 21753) +HANDLE_BAT(, 21754) +HANDLE_BAT(, 21755) +HANDLE_BAT(, 21756) +HANDLE_BAT(, 21757) +HANDLE_BAT(, 21758) +HANDLE_BAT(, 21759) +HANDLE_BAT(, 21760) +HANDLE_BAT(, 21761) +HANDLE_BAT(, 21762) +HANDLE_BAT(, 21763) +HANDLE_BAT(, 21764) +HANDLE_BAT(, 21765) +HANDLE_BAT(, 21766) +HANDLE_BAT(, 21767) +HANDLE_BAT(, 21768) +HANDLE_BAT(, 21769) +HANDLE_BAT(, 21770) +HANDLE_BAT(, 21771) +HANDLE_BAT(, 21772) +HANDLE_BAT(, 21773) +HANDLE_BAT(, 21774) +HANDLE_BAT(, 21775) +HANDLE_BAT(, 21776) +HANDLE_BAT(, 21777) +HANDLE_BAT(, 21778) +HANDLE_BAT(, 21779) +HANDLE_BAT(, 21780) +HANDLE_BAT(, 21781) +HANDLE_BAT(, 21782) +HANDLE_BAT(, 21783) +HANDLE_BAT(, 21784) +HANDLE_BAT(, 21785) +HANDLE_BAT(, 21786) +HANDLE_BAT(, 21787) +HANDLE_BAT(, 21788) +HANDLE_BAT(, 21789) +HANDLE_BAT(, 21790) +HANDLE_BAT(, 21791) +HANDLE_BAT(, 21792) +HANDLE_BAT(, 21793) +HANDLE_BAT(, 21794) +HANDLE_BAT(, 21795) +HANDLE_BAT(, 21796) +HANDLE_BAT(, 21797) +HANDLE_BAT(, 21798) +HANDLE_BAT(, 21799) +HANDLE_BAT(, 21800) +HANDLE_BAT(, 21801) +HANDLE_BAT(, 21802) +HANDLE_BAT(, 21803) +HANDLE_BAT(, 21804) +HANDLE_BAT(, 21805) +HANDLE_BAT(, 21806) +HANDLE_BAT(, 21807) +HANDLE_BAT(, 21808) +HANDLE_BAT(, 21809) +HANDLE_BAT(, 21810) +HANDLE_BAT(, 21811) +HANDLE_BAT(, 21812) +HANDLE_BAT(, 21813) +HANDLE_BAT(, 21814) +HANDLE_BAT(, 21815) +HANDLE_BAT(, 21816) +HANDLE_BAT(, 21817) +HANDLE_BAT(, 21818) +HANDLE_BAT(, 21819) +HANDLE_BAT(, 21820) +HANDLE_BAT(, 21821) +HANDLE_BAT(, 21822) +HANDLE_BAT(, 21823) +HANDLE_BAT(, 21824) +HANDLE_BAT(, 21825) +HANDLE_BAT(, 21826) +HANDLE_BAT(, 21827) +HANDLE_BAT(, 21828) +HANDLE_BAT(, 21829) +HANDLE_BAT(, 21830) +HANDLE_BAT(, 21831) +HANDLE_BAT(, 21832) +HANDLE_BAT(, 21833) +HANDLE_BAT(, 21834) +HANDLE_BAT(, 21835) +HANDLE_BAT(, 21836) +HANDLE_BAT(, 21837) +HANDLE_BAT(, 21838) +HANDLE_BAT(, 21839) +HANDLE_BAT(, 21840) +HANDLE_BAT(, 21841) +HANDLE_BAT(, 21842) +HANDLE_BAT(, 21843) +HANDLE_BAT(, 21844) +HANDLE_BAT(, 21845) +HANDLE_BAT(, 21846) +HANDLE_BAT(, 21847) +HANDLE_BAT(, 21848) +HANDLE_BAT(, 21849) +HANDLE_BAT(, 21850) +HANDLE_BAT(, 21851) +HANDLE_BAT(, 21852) +HANDLE_BAT(, 21853) +HANDLE_BAT(, 21854) +HANDLE_BAT(, 21855) +HANDLE_BAT(, 21856) +HANDLE_BAT(, 21857) +HANDLE_BAT(, 21858) +HANDLE_BAT(, 21859) +HANDLE_BAT(, 21860) +HANDLE_BAT(, 21861) +HANDLE_BAT(, 21862) +HANDLE_BAT(, 21863) +HANDLE_BAT(, 21864) +HANDLE_BAT(, 21865) +HANDLE_BAT(, 21866) +HANDLE_BAT(, 21867) +HANDLE_BAT(, 21868) +HANDLE_BAT(, 21869) +HANDLE_BAT(, 21870) +HANDLE_BAT(, 21871) +HANDLE_BAT(, 21872) +HANDLE_BAT(, 21873) +HANDLE_BAT(, 21874) +HANDLE_BAT(, 21875) +HANDLE_BAT(, 21876) +HANDLE_BAT(, 21877) +HANDLE_BAT(, 21878) +HANDLE_BAT(, 21879) +HANDLE_BAT(, 21880) +HANDLE_BAT(, 21881) +HANDLE_BAT(, 21882) +HANDLE_BAT(, 21883) +HANDLE_BAT(, 21884) +HANDLE_BAT(, 21885) +HANDLE_BAT(, 21886) +HANDLE_BAT(, 21887) +HANDLE_BAT(, 21888) +HANDLE_BAT(, 21889) +HANDLE_BAT(, 21890) +HANDLE_BAT(, 21891) +HANDLE_BAT(, 21892) +HANDLE_BAT(, 21893) +HANDLE_BAT(, 21894) +HANDLE_BAT(, 21895) +HANDLE_BAT(, 21896) +HANDLE_BAT(, 21897) +HANDLE_BAT(, 21898) +HANDLE_BAT(, 21899) +HANDLE_BAT(, 21900) +HANDLE_BAT(, 21901) +HANDLE_BAT(, 21902) +HANDLE_BAT(, 21903) +HANDLE_BAT(, 21904) +HANDLE_BAT(, 21905) +HANDLE_BAT(, 21906) +HANDLE_BAT(, 21907) +HANDLE_BAT(, 21908) +HANDLE_BAT(, 21909) +HANDLE_BAT(, 21910) +HANDLE_BAT(, 21911) +HANDLE_BAT(, 21912) +HANDLE_BAT(, 21913) +HANDLE_BAT(, 21914) +HANDLE_BAT(, 21915) +HANDLE_BAT(, 21916) +HANDLE_BAT(, 21917) +HANDLE_BAT(, 21918) +HANDLE_BAT(, 21919) +HANDLE_BAT(, 21920) +HANDLE_BAT(, 21921) +HANDLE_BAT(, 21922) +HANDLE_BAT(, 21923) +HANDLE_BAT(, 21924) +HANDLE_BAT(, 21925) +HANDLE_BAT(, 21926) +HANDLE_BAT(, 21927) +HANDLE_BAT(, 21928) +HANDLE_BAT(, 21929) +HANDLE_BAT(, 21930) +HANDLE_BAT(, 21931) +HANDLE_BAT(, 21932) +HANDLE_BAT(, 21933) +HANDLE_BAT(, 21934) +HANDLE_BAT(, 21935) +HANDLE_BAT(, 21936) +HANDLE_BAT(, 21937) +HANDLE_BAT(, 21938) +HANDLE_BAT(, 21939) +HANDLE_BAT(, 21940) +HANDLE_BAT(, 21941) +HANDLE_BAT(, 21942) +HANDLE_BAT(, 21943) +HANDLE_BAT(, 21944) +HANDLE_BAT(, 21945) +HANDLE_BAT(, 21946) +HANDLE_BAT(, 21947) +HANDLE_BAT(, 21948) +HANDLE_BAT(, 21949) +HANDLE_BAT(, 21950) +HANDLE_BAT(, 21951) +HANDLE_BAT(, 21952) +HANDLE_BAT(, 21953) +HANDLE_BAT(, 21954) +HANDLE_BAT(, 21955) +HANDLE_BAT(, 21956) +HANDLE_BAT(, 21957) +HANDLE_BAT(, 21958) +HANDLE_BAT(, 21959) +HANDLE_BAT(, 21960) +HANDLE_BAT(, 21961) +HANDLE_BAT(, 21962) +HANDLE_BAT(, 21963) +HANDLE_BAT(, 21964) +HANDLE_BAT(, 21965) +HANDLE_BAT(, 21966) +HANDLE_BAT(, 21967) +HANDLE_BAT(, 21968) +HANDLE_BAT(, 21969) +HANDLE_BAT(, 21970) +HANDLE_BAT(, 21971) +HANDLE_BAT(, 21972) +HANDLE_BAT(, 21973) +HANDLE_BAT(, 21974) +HANDLE_BAT(, 21975) +HANDLE_BAT(, 21976) +HANDLE_BAT(, 21977) +HANDLE_BAT(, 21978) +HANDLE_BAT(, 21979) +HANDLE_BAT(, 21980) +HANDLE_BAT(, 21981) +HANDLE_BAT(, 21982) +HANDLE_BAT(, 21983) +HANDLE_BAT(, 21984) +HANDLE_BAT(, 21985) +HANDLE_BAT(, 21986) +HANDLE_BAT(, 21987) +HANDLE_BAT(, 21988) +HANDLE_BAT(, 21989) +HANDLE_BAT(, 21990) +HANDLE_BAT(, 21991) +HANDLE_BAT(, 21992) +HANDLE_BAT(, 21993) +HANDLE_BAT(, 21994) +HANDLE_BAT(, 21995) +HANDLE_BAT(, 21996) +HANDLE_BAT(, 21997) +HANDLE_BAT(, 21998) +HANDLE_BAT(, 21999) +HANDLE_BAT(, 22000) +HANDLE_BAT(, 22001) +HANDLE_BAT(, 22002) +HANDLE_BAT(, 22003) +HANDLE_BAT(, 22004) +HANDLE_BAT(, 22005) +HANDLE_BAT(, 22006) +HANDLE_BAT(, 22007) +HANDLE_BAT(, 22008) +HANDLE_BAT(, 22009) +HANDLE_BAT(, 22010) +HANDLE_BAT(, 22011) +HANDLE_BAT(, 22012) +HANDLE_BAT(, 22013) +HANDLE_BAT(, 22014) +HANDLE_BAT(, 22015) +HANDLE_BAT(, 22016) +HANDLE_BAT(, 22017) +HANDLE_BAT(, 22018) +HANDLE_BAT(, 22019) +HANDLE_BAT(, 22020) +HANDLE_BAT(, 22021) +HANDLE_BAT(, 22022) +HANDLE_BAT(, 22023) +HANDLE_BAT(, 22024) +HANDLE_BAT(, 22025) +HANDLE_BAT(, 22026) +HANDLE_BAT(, 22027) +HANDLE_BAT(, 22028) +HANDLE_BAT(, 22029) +HANDLE_BAT(, 22030) +HANDLE_BAT(, 22031) +HANDLE_BAT(, 22032) +HANDLE_BAT(, 22033) +HANDLE_BAT(, 22034) +HANDLE_BAT(, 22035) +HANDLE_BAT(, 22036) +HANDLE_BAT(, 22037) +HANDLE_BAT(, 22038) +HANDLE_BAT(, 22039) +HANDLE_BAT(, 22040) +HANDLE_BAT(, 22041) +HANDLE_BAT(, 22042) +HANDLE_BAT(, 22043) +HANDLE_BAT(, 22044) +HANDLE_BAT(, 22045) +HANDLE_BAT(, 22046) +HANDLE_BAT(, 22047) +HANDLE_BAT(, 22048) +HANDLE_BAT(, 22049) +HANDLE_BAT(, 22050) +HANDLE_BAT(, 22051) +HANDLE_BAT(, 22052) +HANDLE_BAT(, 22053) +HANDLE_BAT(, 22054) +HANDLE_BAT(, 22055) +HANDLE_BAT(, 22056) +HANDLE_BAT(, 22057) +HANDLE_BAT(, 22058) +HANDLE_BAT(, 22059) +HANDLE_BAT(, 22060) +HANDLE_BAT(, 22061) +HANDLE_BAT(, 22062) +HANDLE_BAT(, 22063) +HANDLE_BAT(, 22064) +HANDLE_BAT(, 22065) +HANDLE_BAT(, 22066) +HANDLE_BAT(, 22067) +HANDLE_BAT(, 22068) +HANDLE_BAT(, 22069) +HANDLE_BAT(, 22070) +HANDLE_BAT(, 22071) +HANDLE_BAT(, 22072) +HANDLE_BAT(, 22073) +HANDLE_BAT(, 22074) +HANDLE_BAT(, 22075) +HANDLE_BAT(, 22076) +HANDLE_BAT(, 22077) +HANDLE_BAT(, 22078) +HANDLE_BAT(, 22079) +HANDLE_BAT(, 22080) +HANDLE_BAT(, 22081) +HANDLE_BAT(, 22082) +HANDLE_BAT(, 22083) +HANDLE_BAT(, 22084) +HANDLE_BAT(, 22085) +HANDLE_BAT(, 22086) +HANDLE_BAT(, 22087) +HANDLE_BAT(, 22088) +HANDLE_BAT(, 22089) +HANDLE_BAT(, 22090) +HANDLE_BAT(, 22091) +HANDLE_BAT(, 22092) +HANDLE_BAT(, 22093) +HANDLE_BAT(, 22094) +HANDLE_BAT(, 22095) +HANDLE_BAT(, 22096) +HANDLE_BAT(, 22097) +HANDLE_BAT(, 22098) +HANDLE_BAT(, 22099) +HANDLE_BAT(, 22100) +HANDLE_BAT(, 22101) +HANDLE_BAT(, 22102) +HANDLE_BAT(, 22103) +HANDLE_BAT(, 22104) +HANDLE_BAT(, 22105) +HANDLE_BAT(, 22106) +HANDLE_BAT(, 22107) +HANDLE_BAT(, 22108) +HANDLE_BAT(, 22109) +HANDLE_BAT(, 22110) +HANDLE_BAT(, 22111) +HANDLE_BAT(, 22112) +HANDLE_BAT(, 22113) +HANDLE_BAT(, 22114) +HANDLE_BAT(, 22115) +HANDLE_BAT(, 22116) +HANDLE_BAT(, 22117) +HANDLE_BAT(, 22118) +HANDLE_BAT(, 22119) +HANDLE_BAT(, 22120) +HANDLE_BAT(, 22121) +HANDLE_BAT(, 22122) +HANDLE_BAT(, 22123) +HANDLE_BAT(, 22124) +HANDLE_BAT(, 22125) +HANDLE_BAT(, 22126) +HANDLE_BAT(, 22127) +HANDLE_BAT(, 22128) +HANDLE_BAT(, 22129) +HANDLE_BAT(, 22130) +HANDLE_BAT(, 22131) +HANDLE_BAT(, 22132) +HANDLE_BAT(, 22133) +HANDLE_BAT(, 22134) +HANDLE_BAT(, 22135) +HANDLE_BAT(, 22136) +HANDLE_BAT(, 22137) +HANDLE_BAT(, 22138) +HANDLE_BAT(, 22139) +HANDLE_BAT(, 22140) +HANDLE_BAT(, 22141) +HANDLE_BAT(, 22142) +HANDLE_BAT(, 22143) +HANDLE_BAT(, 22144) +HANDLE_BAT(, 22145) +HANDLE_BAT(, 22146) +HANDLE_BAT(, 22147) +HANDLE_BAT(, 22148) +HANDLE_BAT(, 22149) +HANDLE_BAT(, 22150) +HANDLE_BAT(, 22151) +HANDLE_BAT(, 22152) +HANDLE_BAT(, 22153) +HANDLE_BAT(, 22154) +HANDLE_BAT(, 22155) +HANDLE_BAT(, 22156) +HANDLE_BAT(, 22157) +HANDLE_BAT(, 22158) +HANDLE_BAT(, 22159) +HANDLE_BAT(, 22160) +HANDLE_BAT(, 22161) +HANDLE_BAT(, 22162) +HANDLE_BAT(, 22163) +HANDLE_BAT(, 22164) +HANDLE_BAT(, 22165) +HANDLE_BAT(, 22166) +HANDLE_BAT(, 22167) +HANDLE_BAT(, 22168) +HANDLE_BAT(, 22169) +HANDLE_BAT(, 22170) +HANDLE_BAT(, 22171) +HANDLE_BAT(, 22172) +HANDLE_BAT(, 22173) +HANDLE_BAT(, 22174) +HANDLE_BAT(, 22175) +HANDLE_BAT(, 22176) +HANDLE_BAT(, 22177) +HANDLE_BAT(, 22178) +HANDLE_BAT(, 22179) +HANDLE_BAT(, 22180) +HANDLE_BAT(, 22181) +HANDLE_BAT(, 22182) +HANDLE_BAT(, 22183) +HANDLE_BAT(, 22184) +HANDLE_BAT(, 22185) +HANDLE_BAT(, 22186) +HANDLE_BAT(, 22187) +HANDLE_BAT(, 22188) +HANDLE_BAT(, 22189) +HANDLE_BAT(, 22190) +HANDLE_BAT(, 22191) +HANDLE_BAT(, 22192) +HANDLE_BAT(, 22193) +HANDLE_BAT(, 22194) +HANDLE_BAT(, 22195) +HANDLE_BAT(, 22196) +HANDLE_BAT(, 22197) +HANDLE_BAT(, 22198) +HANDLE_BAT(, 22199) +HANDLE_BAT(, 22200) +HANDLE_BAT(, 22201) +HANDLE_BAT(, 22202) +HANDLE_BAT(, 22203) +HANDLE_BAT(, 22204) +HANDLE_BAT(, 22205) +HANDLE_BAT(, 22206) +HANDLE_BAT(, 22207) +HANDLE_BAT(, 22208) +HANDLE_BAT(, 22209) +HANDLE_BAT(, 22210) +HANDLE_BAT(, 22211) +HANDLE_BAT(, 22212) +HANDLE_BAT(, 22213) +HANDLE_BAT(, 22214) +HANDLE_BAT(, 22215) +HANDLE_BAT(, 22216) +HANDLE_BAT(, 22217) +HANDLE_BAT(, 22218) +HANDLE_BAT(, 22219) +HANDLE_BAT(, 22220) +HANDLE_BAT(, 22221) +HANDLE_BAT(, 22222) +HANDLE_BAT(, 22223) +HANDLE_BAT(, 22224) +HANDLE_BAT(, 22225) +HANDLE_BAT(, 22226) +HANDLE_BAT(, 22227) +HANDLE_BAT(, 22228) +HANDLE_BAT(, 22229) +HANDLE_BAT(, 22230) +HANDLE_BAT(, 22231) +HANDLE_BAT(, 22232) +HANDLE_BAT(, 22233) +HANDLE_BAT(, 22234) +HANDLE_BAT(, 22235) +HANDLE_BAT(, 22236) +HANDLE_BAT(, 22237) +HANDLE_BAT(, 22238) +HANDLE_BAT(, 22239) +HANDLE_BAT(, 22240) +HANDLE_BAT(, 22241) +HANDLE_BAT(, 22242) +HANDLE_BAT(, 22243) +HANDLE_BAT(, 22244) +HANDLE_BAT(, 22245) +HANDLE_BAT(, 22246) +HANDLE_BAT(, 22247) +HANDLE_BAT(, 22248) +HANDLE_BAT(, 22249) +HANDLE_BAT(, 22250) +HANDLE_BAT(, 22251) +HANDLE_BAT(, 22252) +HANDLE_BAT(, 22253) +HANDLE_BAT(, 22254) +HANDLE_BAT(, 22255) +HANDLE_BAT(, 22256) +HANDLE_BAT(, 22257) +HANDLE_BAT(, 22258) +HANDLE_BAT(, 22259) +HANDLE_BAT(, 22260) +HANDLE_BAT(, 22261) +HANDLE_BAT(, 22262) +HANDLE_BAT(, 22263) +HANDLE_BAT(, 22264) +HANDLE_BAT(, 22265) +HANDLE_BAT(, 22266) +HANDLE_BAT(, 22267) +HANDLE_BAT(, 22268) +HANDLE_BAT(, 22269) +HANDLE_BAT(, 22270) +HANDLE_BAT(, 22271) +HANDLE_BAT(, 22272) +HANDLE_BAT(, 22273) +HANDLE_BAT(, 22274) +HANDLE_BAT(, 22275) +HANDLE_BAT(, 22276) +HANDLE_BAT(, 22277) +HANDLE_BAT(, 22278) +HANDLE_BAT(, 22279) +HANDLE_BAT(, 22280) +HANDLE_BAT(, 22281) +HANDLE_BAT(, 22282) +HANDLE_BAT(, 22283) +HANDLE_BAT(, 22284) +HANDLE_BAT(, 22285) +HANDLE_BAT(, 22286) +HANDLE_BAT(, 22287) +HANDLE_BAT(, 22288) +HANDLE_BAT(, 22289) +HANDLE_BAT(, 22290) +HANDLE_BAT(, 22291) +HANDLE_BAT(, 22292) +HANDLE_BAT(, 22293) +HANDLE_BAT(, 22294) +HANDLE_BAT(, 22295) +HANDLE_BAT(, 22296) +HANDLE_BAT(, 22297) +HANDLE_BAT(, 22298) +HANDLE_BAT(, 22299) +HANDLE_BAT(, 22300) +HANDLE_BAT(, 22301) +HANDLE_BAT(, 22302) +HANDLE_BAT(, 22303) +HANDLE_BAT(, 22304) +HANDLE_BAT(, 22305) +HANDLE_BAT(, 22306) +HANDLE_BAT(, 22307) +HANDLE_BAT(, 22308) +HANDLE_BAT(, 22309) +HANDLE_BAT(, 22310) +HANDLE_BAT(, 22311) +HANDLE_BAT(, 22312) +HANDLE_BAT(, 22313) +HANDLE_BAT(, 22314) +HANDLE_BAT(, 22315) +HANDLE_BAT(, 22316) +HANDLE_BAT(, 22317) +HANDLE_BAT(, 22318) +HANDLE_BAT(, 22319) +HANDLE_BAT(, 22320) +HANDLE_BAT(, 22321) +HANDLE_BAT(, 22322) +HANDLE_BAT(, 22323) +HANDLE_BAT(, 22324) +HANDLE_BAT(, 22325) +HANDLE_BAT(, 22326) +HANDLE_BAT(, 22327) +HANDLE_BAT(, 22328) +HANDLE_BAT(, 22329) +HANDLE_BAT(, 22330) +HANDLE_BAT(, 22331) +HANDLE_BAT(, 22332) +HANDLE_BAT(, 22333) +HANDLE_BAT(, 22334) +HANDLE_BAT(, 22335) +HANDLE_BAT(, 22336) +HANDLE_BAT(, 22337) +HANDLE_BAT(, 22338) +HANDLE_BAT(, 22339) +HANDLE_BAT(, 22340) +HANDLE_BAT(, 22341) +HANDLE_BAT(, 22342) +HANDLE_BAT(, 22343) +HANDLE_BAT(, 22344) +HANDLE_BAT(, 22345) +HANDLE_BAT(, 22346) +HANDLE_BAT(, 22347) +HANDLE_BAT(, 22348) +HANDLE_BAT(, 22349) +HANDLE_BAT(, 22350) +HANDLE_BAT(, 22351) +HANDLE_BAT(, 22352) +HANDLE_BAT(, 22353) +HANDLE_BAT(, 22354) +HANDLE_BAT(, 22355) +HANDLE_BAT(, 22356) +HANDLE_BAT(, 22357) +HANDLE_BAT(, 22358) +HANDLE_BAT(, 22359) +HANDLE_BAT(, 22360) +HANDLE_BAT(, 22361) +HANDLE_BAT(, 22362) +HANDLE_BAT(, 22363) +HANDLE_BAT(, 22364) +HANDLE_BAT(, 22365) +HANDLE_BAT(, 22366) +HANDLE_BAT(, 22367) +HANDLE_BAT(, 22368) +HANDLE_BAT(, 22369) +HANDLE_BAT(, 22370) +HANDLE_BAT(, 22371) +HANDLE_BAT(, 22372) +HANDLE_BAT(, 22373) +HANDLE_BAT(, 22374) +HANDLE_BAT(, 22375) +HANDLE_BAT(, 22376) +HANDLE_BAT(, 22377) +HANDLE_BAT(, 22378) +HANDLE_BAT(, 22379) +HANDLE_BAT(, 22380) +HANDLE_BAT(, 22381) +HANDLE_BAT(, 22382) +HANDLE_BAT(, 22383) +HANDLE_BAT(, 22384) +HANDLE_BAT(, 22385) +HANDLE_BAT(, 22386) +HANDLE_BAT(, 22387) +HANDLE_BAT(, 22388) +HANDLE_BAT(, 22389) +HANDLE_BAT(, 22390) +HANDLE_BAT(, 22391) +HANDLE_BAT(, 22392) +HANDLE_BAT(, 22393) +HANDLE_BAT(, 22394) +HANDLE_BAT(, 22395) +HANDLE_BAT(, 22396) +HANDLE_BAT(, 22397) +HANDLE_BAT(, 22398) +HANDLE_BAT(, 22399) +HANDLE_BAT(, 22400) +HANDLE_BAT(, 22401) +HANDLE_BAT(, 22402) +HANDLE_BAT(, 22403) +HANDLE_BAT(, 22404) +HANDLE_BAT(, 22405) +HANDLE_BAT(, 22406) +HANDLE_BAT(, 22407) +HANDLE_BAT(, 22408) +HANDLE_BAT(, 22409) +HANDLE_BAT(, 22410) +HANDLE_BAT(, 22411) +HANDLE_BAT(, 22412) +HANDLE_BAT(, 22413) +HANDLE_BAT(, 22414) +HANDLE_BAT(, 22415) +HANDLE_BAT(, 22416) +HANDLE_BAT(, 22417) +HANDLE_BAT(, 22418) +HANDLE_BAT(, 22419) +HANDLE_BAT(, 22420) +HANDLE_BAT(, 22421) +HANDLE_BAT(, 22422) +HANDLE_BAT(, 22423) +HANDLE_BAT(, 22424) +HANDLE_BAT(, 22425) +HANDLE_BAT(, 22426) +HANDLE_BAT(, 22427) +HANDLE_BAT(, 22428) +HANDLE_BAT(, 22429) +HANDLE_BAT(, 22430) +HANDLE_BAT(, 22431) +HANDLE_BAT(, 22432) +HANDLE_BAT(, 22433) +HANDLE_BAT(, 22434) +HANDLE_BAT(, 22435) +HANDLE_BAT(, 22436) +HANDLE_BAT(, 22437) +HANDLE_BAT(, 22438) +HANDLE_BAT(, 22439) +HANDLE_BAT(, 22440) +HANDLE_BAT(, 22441) +HANDLE_BAT(, 22442) +HANDLE_BAT(, 22443) +HANDLE_BAT(, 22444) +HANDLE_BAT(, 22445) +HANDLE_BAT(, 22446) +HANDLE_BAT(, 22447) +HANDLE_BAT(, 22448) +HANDLE_BAT(, 22449) +HANDLE_BAT(, 22450) +HANDLE_BAT(, 22451) +HANDLE_BAT(, 22452) +HANDLE_BAT(, 22453) +HANDLE_BAT(, 22454) +HANDLE_BAT(, 22455) +HANDLE_BAT(, 22456) +HANDLE_BAT(, 22457) +HANDLE_BAT(, 22458) +HANDLE_BAT(, 22459) +HANDLE_BAT(, 22460) +HANDLE_BAT(, 22461) +HANDLE_BAT(, 22462) +HANDLE_BAT(, 22463) +HANDLE_BAT(, 22464) +HANDLE_BAT(, 22465) +HANDLE_BAT(, 22466) +HANDLE_BAT(, 22467) +HANDLE_BAT(, 22468) +HANDLE_BAT(, 22469) +HANDLE_BAT(, 22470) +HANDLE_BAT(, 22471) +HANDLE_BAT(, 22472) +HANDLE_BAT(, 22473) +HANDLE_BAT(, 22474) +HANDLE_BAT(, 22475) +HANDLE_BAT(, 22476) +HANDLE_BAT(, 22477) +HANDLE_BAT(, 22478) +HANDLE_BAT(, 22479) +HANDLE_BAT(, 22480) +HANDLE_BAT(, 22481) +HANDLE_BAT(, 22482) +HANDLE_BAT(, 22483) +HANDLE_BAT(, 22484) +HANDLE_BAT(, 22485) +HANDLE_BAT(, 22486) +HANDLE_BAT(, 22487) +HANDLE_BAT(, 22488) +HANDLE_BAT(, 22489) +HANDLE_BAT(, 22490) +HANDLE_BAT(, 22491) +HANDLE_BAT(, 22492) +HANDLE_BAT(, 22493) +HANDLE_BAT(, 22494) +HANDLE_BAT(, 22495) +HANDLE_BAT(, 22496) +HANDLE_BAT(, 22497) +HANDLE_BAT(, 22498) +HANDLE_BAT(, 22499) +HANDLE_BAT(, 22500) +HANDLE_BAT(, 22501) +HANDLE_BAT(, 22502) +HANDLE_BAT(, 22503) +HANDLE_BAT(, 22504) +HANDLE_BAT(, 22505) +HANDLE_BAT(, 22506) +HANDLE_BAT(, 22507) +HANDLE_BAT(, 22508) +HANDLE_BAT(, 22509) +HANDLE_BAT(, 22510) +HANDLE_BAT(, 22511) +HANDLE_BAT(, 22512) +HANDLE_BAT(, 22513) +HANDLE_BAT(, 22514) +HANDLE_BAT(, 22515) +HANDLE_BAT(, 22516) +HANDLE_BAT(, 22517) +HANDLE_BAT(, 22518) +HANDLE_BAT(, 22519) +HANDLE_BAT(, 22520) +HANDLE_BAT(, 22521) +HANDLE_BAT(, 22522) +HANDLE_BAT(, 22523) +HANDLE_BAT(, 22524) +HANDLE_BAT(, 22525) +HANDLE_BAT(, 22526) +HANDLE_BAT(, 22527) +HANDLE_BAT(, 22528) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 21505) +HANDLE_BAT(APINT_TYPE_PREFIX, 21506) +HANDLE_BAT(APINT_TYPE_PREFIX, 21507) +HANDLE_BAT(APINT_TYPE_PREFIX, 21508) +HANDLE_BAT(APINT_TYPE_PREFIX, 21509) +HANDLE_BAT(APINT_TYPE_PREFIX, 21510) +HANDLE_BAT(APINT_TYPE_PREFIX, 21511) +HANDLE_BAT(APINT_TYPE_PREFIX, 21512) +HANDLE_BAT(APINT_TYPE_PREFIX, 21513) +HANDLE_BAT(APINT_TYPE_PREFIX, 21514) +HANDLE_BAT(APINT_TYPE_PREFIX, 21515) +HANDLE_BAT(APINT_TYPE_PREFIX, 21516) +HANDLE_BAT(APINT_TYPE_PREFIX, 21517) +HANDLE_BAT(APINT_TYPE_PREFIX, 21518) +HANDLE_BAT(APINT_TYPE_PREFIX, 21519) +HANDLE_BAT(APINT_TYPE_PREFIX, 21520) +HANDLE_BAT(APINT_TYPE_PREFIX, 21521) +HANDLE_BAT(APINT_TYPE_PREFIX, 21522) +HANDLE_BAT(APINT_TYPE_PREFIX, 21523) +HANDLE_BAT(APINT_TYPE_PREFIX, 21524) +HANDLE_BAT(APINT_TYPE_PREFIX, 21525) +HANDLE_BAT(APINT_TYPE_PREFIX, 21526) +HANDLE_BAT(APINT_TYPE_PREFIX, 21527) +HANDLE_BAT(APINT_TYPE_PREFIX, 21528) +HANDLE_BAT(APINT_TYPE_PREFIX, 21529) +HANDLE_BAT(APINT_TYPE_PREFIX, 21530) +HANDLE_BAT(APINT_TYPE_PREFIX, 21531) +HANDLE_BAT(APINT_TYPE_PREFIX, 21532) +HANDLE_BAT(APINT_TYPE_PREFIX, 21533) +HANDLE_BAT(APINT_TYPE_PREFIX, 21534) +HANDLE_BAT(APINT_TYPE_PREFIX, 21535) +HANDLE_BAT(APINT_TYPE_PREFIX, 21536) +HANDLE_BAT(APINT_TYPE_PREFIX, 21537) +HANDLE_BAT(APINT_TYPE_PREFIX, 21538) +HANDLE_BAT(APINT_TYPE_PREFIX, 21539) +HANDLE_BAT(APINT_TYPE_PREFIX, 21540) +HANDLE_BAT(APINT_TYPE_PREFIX, 21541) +HANDLE_BAT(APINT_TYPE_PREFIX, 21542) +HANDLE_BAT(APINT_TYPE_PREFIX, 21543) +HANDLE_BAT(APINT_TYPE_PREFIX, 21544) +HANDLE_BAT(APINT_TYPE_PREFIX, 21545) +HANDLE_BAT(APINT_TYPE_PREFIX, 21546) +HANDLE_BAT(APINT_TYPE_PREFIX, 21547) +HANDLE_BAT(APINT_TYPE_PREFIX, 21548) +HANDLE_BAT(APINT_TYPE_PREFIX, 21549) +HANDLE_BAT(APINT_TYPE_PREFIX, 21550) +HANDLE_BAT(APINT_TYPE_PREFIX, 21551) +HANDLE_BAT(APINT_TYPE_PREFIX, 21552) +HANDLE_BAT(APINT_TYPE_PREFIX, 21553) +HANDLE_BAT(APINT_TYPE_PREFIX, 21554) +HANDLE_BAT(APINT_TYPE_PREFIX, 21555) +HANDLE_BAT(APINT_TYPE_PREFIX, 21556) +HANDLE_BAT(APINT_TYPE_PREFIX, 21557) +HANDLE_BAT(APINT_TYPE_PREFIX, 21558) +HANDLE_BAT(APINT_TYPE_PREFIX, 21559) +HANDLE_BAT(APINT_TYPE_PREFIX, 21560) +HANDLE_BAT(APINT_TYPE_PREFIX, 21561) +HANDLE_BAT(APINT_TYPE_PREFIX, 21562) +HANDLE_BAT(APINT_TYPE_PREFIX, 21563) +HANDLE_BAT(APINT_TYPE_PREFIX, 21564) +HANDLE_BAT(APINT_TYPE_PREFIX, 21565) +HANDLE_BAT(APINT_TYPE_PREFIX, 21566) +HANDLE_BAT(APINT_TYPE_PREFIX, 21567) +HANDLE_BAT(APINT_TYPE_PREFIX, 21568) +HANDLE_BAT(APINT_TYPE_PREFIX, 21569) +HANDLE_BAT(APINT_TYPE_PREFIX, 21570) +HANDLE_BAT(APINT_TYPE_PREFIX, 21571) +HANDLE_BAT(APINT_TYPE_PREFIX, 21572) +HANDLE_BAT(APINT_TYPE_PREFIX, 21573) +HANDLE_BAT(APINT_TYPE_PREFIX, 21574) +HANDLE_BAT(APINT_TYPE_PREFIX, 21575) +HANDLE_BAT(APINT_TYPE_PREFIX, 21576) +HANDLE_BAT(APINT_TYPE_PREFIX, 21577) +HANDLE_BAT(APINT_TYPE_PREFIX, 21578) +HANDLE_BAT(APINT_TYPE_PREFIX, 21579) +HANDLE_BAT(APINT_TYPE_PREFIX, 21580) +HANDLE_BAT(APINT_TYPE_PREFIX, 21581) +HANDLE_BAT(APINT_TYPE_PREFIX, 21582) +HANDLE_BAT(APINT_TYPE_PREFIX, 21583) +HANDLE_BAT(APINT_TYPE_PREFIX, 21584) +HANDLE_BAT(APINT_TYPE_PREFIX, 21585) +HANDLE_BAT(APINT_TYPE_PREFIX, 21586) +HANDLE_BAT(APINT_TYPE_PREFIX, 21587) +HANDLE_BAT(APINT_TYPE_PREFIX, 21588) +HANDLE_BAT(APINT_TYPE_PREFIX, 21589) +HANDLE_BAT(APINT_TYPE_PREFIX, 21590) +HANDLE_BAT(APINT_TYPE_PREFIX, 21591) +HANDLE_BAT(APINT_TYPE_PREFIX, 21592) +HANDLE_BAT(APINT_TYPE_PREFIX, 21593) +HANDLE_BAT(APINT_TYPE_PREFIX, 21594) +HANDLE_BAT(APINT_TYPE_PREFIX, 21595) +HANDLE_BAT(APINT_TYPE_PREFIX, 21596) +HANDLE_BAT(APINT_TYPE_PREFIX, 21597) +HANDLE_BAT(APINT_TYPE_PREFIX, 21598) +HANDLE_BAT(APINT_TYPE_PREFIX, 21599) +HANDLE_BAT(APINT_TYPE_PREFIX, 21600) +HANDLE_BAT(APINT_TYPE_PREFIX, 21601) +HANDLE_BAT(APINT_TYPE_PREFIX, 21602) +HANDLE_BAT(APINT_TYPE_PREFIX, 21603) +HANDLE_BAT(APINT_TYPE_PREFIX, 21604) +HANDLE_BAT(APINT_TYPE_PREFIX, 21605) +HANDLE_BAT(APINT_TYPE_PREFIX, 21606) +HANDLE_BAT(APINT_TYPE_PREFIX, 21607) +HANDLE_BAT(APINT_TYPE_PREFIX, 21608) +HANDLE_BAT(APINT_TYPE_PREFIX, 21609) +HANDLE_BAT(APINT_TYPE_PREFIX, 21610) +HANDLE_BAT(APINT_TYPE_PREFIX, 21611) +HANDLE_BAT(APINT_TYPE_PREFIX, 21612) +HANDLE_BAT(APINT_TYPE_PREFIX, 21613) +HANDLE_BAT(APINT_TYPE_PREFIX, 21614) +HANDLE_BAT(APINT_TYPE_PREFIX, 21615) +HANDLE_BAT(APINT_TYPE_PREFIX, 21616) +HANDLE_BAT(APINT_TYPE_PREFIX, 21617) +HANDLE_BAT(APINT_TYPE_PREFIX, 21618) +HANDLE_BAT(APINT_TYPE_PREFIX, 21619) +HANDLE_BAT(APINT_TYPE_PREFIX, 21620) +HANDLE_BAT(APINT_TYPE_PREFIX, 21621) +HANDLE_BAT(APINT_TYPE_PREFIX, 21622) +HANDLE_BAT(APINT_TYPE_PREFIX, 21623) +HANDLE_BAT(APINT_TYPE_PREFIX, 21624) +HANDLE_BAT(APINT_TYPE_PREFIX, 21625) +HANDLE_BAT(APINT_TYPE_PREFIX, 21626) +HANDLE_BAT(APINT_TYPE_PREFIX, 21627) +HANDLE_BAT(APINT_TYPE_PREFIX, 21628) +HANDLE_BAT(APINT_TYPE_PREFIX, 21629) +HANDLE_BAT(APINT_TYPE_PREFIX, 21630) +HANDLE_BAT(APINT_TYPE_PREFIX, 21631) +HANDLE_BAT(APINT_TYPE_PREFIX, 21632) +HANDLE_BAT(APINT_TYPE_PREFIX, 21633) +HANDLE_BAT(APINT_TYPE_PREFIX, 21634) +HANDLE_BAT(APINT_TYPE_PREFIX, 21635) +HANDLE_BAT(APINT_TYPE_PREFIX, 21636) +HANDLE_BAT(APINT_TYPE_PREFIX, 21637) +HANDLE_BAT(APINT_TYPE_PREFIX, 21638) +HANDLE_BAT(APINT_TYPE_PREFIX, 21639) +HANDLE_BAT(APINT_TYPE_PREFIX, 21640) +HANDLE_BAT(APINT_TYPE_PREFIX, 21641) +HANDLE_BAT(APINT_TYPE_PREFIX, 21642) +HANDLE_BAT(APINT_TYPE_PREFIX, 21643) +HANDLE_BAT(APINT_TYPE_PREFIX, 21644) +HANDLE_BAT(APINT_TYPE_PREFIX, 21645) +HANDLE_BAT(APINT_TYPE_PREFIX, 21646) +HANDLE_BAT(APINT_TYPE_PREFIX, 21647) +HANDLE_BAT(APINT_TYPE_PREFIX, 21648) +HANDLE_BAT(APINT_TYPE_PREFIX, 21649) +HANDLE_BAT(APINT_TYPE_PREFIX, 21650) +HANDLE_BAT(APINT_TYPE_PREFIX, 21651) +HANDLE_BAT(APINT_TYPE_PREFIX, 21652) +HANDLE_BAT(APINT_TYPE_PREFIX, 21653) +HANDLE_BAT(APINT_TYPE_PREFIX, 21654) +HANDLE_BAT(APINT_TYPE_PREFIX, 21655) +HANDLE_BAT(APINT_TYPE_PREFIX, 21656) +HANDLE_BAT(APINT_TYPE_PREFIX, 21657) +HANDLE_BAT(APINT_TYPE_PREFIX, 21658) +HANDLE_BAT(APINT_TYPE_PREFIX, 21659) +HANDLE_BAT(APINT_TYPE_PREFIX, 21660) +HANDLE_BAT(APINT_TYPE_PREFIX, 21661) +HANDLE_BAT(APINT_TYPE_PREFIX, 21662) +HANDLE_BAT(APINT_TYPE_PREFIX, 21663) +HANDLE_BAT(APINT_TYPE_PREFIX, 21664) +HANDLE_BAT(APINT_TYPE_PREFIX, 21665) +HANDLE_BAT(APINT_TYPE_PREFIX, 21666) +HANDLE_BAT(APINT_TYPE_PREFIX, 21667) +HANDLE_BAT(APINT_TYPE_PREFIX, 21668) +HANDLE_BAT(APINT_TYPE_PREFIX, 21669) +HANDLE_BAT(APINT_TYPE_PREFIX, 21670) +HANDLE_BAT(APINT_TYPE_PREFIX, 21671) +HANDLE_BAT(APINT_TYPE_PREFIX, 21672) +HANDLE_BAT(APINT_TYPE_PREFIX, 21673) +HANDLE_BAT(APINT_TYPE_PREFIX, 21674) +HANDLE_BAT(APINT_TYPE_PREFIX, 21675) +HANDLE_BAT(APINT_TYPE_PREFIX, 21676) +HANDLE_BAT(APINT_TYPE_PREFIX, 21677) +HANDLE_BAT(APINT_TYPE_PREFIX, 21678) +HANDLE_BAT(APINT_TYPE_PREFIX, 21679) +HANDLE_BAT(APINT_TYPE_PREFIX, 21680) +HANDLE_BAT(APINT_TYPE_PREFIX, 21681) +HANDLE_BAT(APINT_TYPE_PREFIX, 21682) +HANDLE_BAT(APINT_TYPE_PREFIX, 21683) +HANDLE_BAT(APINT_TYPE_PREFIX, 21684) +HANDLE_BAT(APINT_TYPE_PREFIX, 21685) +HANDLE_BAT(APINT_TYPE_PREFIX, 21686) +HANDLE_BAT(APINT_TYPE_PREFIX, 21687) +HANDLE_BAT(APINT_TYPE_PREFIX, 21688) +HANDLE_BAT(APINT_TYPE_PREFIX, 21689) +HANDLE_BAT(APINT_TYPE_PREFIX, 21690) +HANDLE_BAT(APINT_TYPE_PREFIX, 21691) +HANDLE_BAT(APINT_TYPE_PREFIX, 21692) +HANDLE_BAT(APINT_TYPE_PREFIX, 21693) +HANDLE_BAT(APINT_TYPE_PREFIX, 21694) +HANDLE_BAT(APINT_TYPE_PREFIX, 21695) +HANDLE_BAT(APINT_TYPE_PREFIX, 21696) +HANDLE_BAT(APINT_TYPE_PREFIX, 21697) +HANDLE_BAT(APINT_TYPE_PREFIX, 21698) +HANDLE_BAT(APINT_TYPE_PREFIX, 21699) +HANDLE_BAT(APINT_TYPE_PREFIX, 21700) +HANDLE_BAT(APINT_TYPE_PREFIX, 21701) +HANDLE_BAT(APINT_TYPE_PREFIX, 21702) +HANDLE_BAT(APINT_TYPE_PREFIX, 21703) +HANDLE_BAT(APINT_TYPE_PREFIX, 21704) +HANDLE_BAT(APINT_TYPE_PREFIX, 21705) +HANDLE_BAT(APINT_TYPE_PREFIX, 21706) +HANDLE_BAT(APINT_TYPE_PREFIX, 21707) +HANDLE_BAT(APINT_TYPE_PREFIX, 21708) +HANDLE_BAT(APINT_TYPE_PREFIX, 21709) +HANDLE_BAT(APINT_TYPE_PREFIX, 21710) +HANDLE_BAT(APINT_TYPE_PREFIX, 21711) +HANDLE_BAT(APINT_TYPE_PREFIX, 21712) +HANDLE_BAT(APINT_TYPE_PREFIX, 21713) +HANDLE_BAT(APINT_TYPE_PREFIX, 21714) +HANDLE_BAT(APINT_TYPE_PREFIX, 21715) +HANDLE_BAT(APINT_TYPE_PREFIX, 21716) +HANDLE_BAT(APINT_TYPE_PREFIX, 21717) +HANDLE_BAT(APINT_TYPE_PREFIX, 21718) +HANDLE_BAT(APINT_TYPE_PREFIX, 21719) +HANDLE_BAT(APINT_TYPE_PREFIX, 21720) +HANDLE_BAT(APINT_TYPE_PREFIX, 21721) +HANDLE_BAT(APINT_TYPE_PREFIX, 21722) +HANDLE_BAT(APINT_TYPE_PREFIX, 21723) +HANDLE_BAT(APINT_TYPE_PREFIX, 21724) +HANDLE_BAT(APINT_TYPE_PREFIX, 21725) +HANDLE_BAT(APINT_TYPE_PREFIX, 21726) +HANDLE_BAT(APINT_TYPE_PREFIX, 21727) +HANDLE_BAT(APINT_TYPE_PREFIX, 21728) +HANDLE_BAT(APINT_TYPE_PREFIX, 21729) +HANDLE_BAT(APINT_TYPE_PREFIX, 21730) +HANDLE_BAT(APINT_TYPE_PREFIX, 21731) +HANDLE_BAT(APINT_TYPE_PREFIX, 21732) +HANDLE_BAT(APINT_TYPE_PREFIX, 21733) +HANDLE_BAT(APINT_TYPE_PREFIX, 21734) +HANDLE_BAT(APINT_TYPE_PREFIX, 21735) +HANDLE_BAT(APINT_TYPE_PREFIX, 21736) +HANDLE_BAT(APINT_TYPE_PREFIX, 21737) +HANDLE_BAT(APINT_TYPE_PREFIX, 21738) +HANDLE_BAT(APINT_TYPE_PREFIX, 21739) +HANDLE_BAT(APINT_TYPE_PREFIX, 21740) +HANDLE_BAT(APINT_TYPE_PREFIX, 21741) +HANDLE_BAT(APINT_TYPE_PREFIX, 21742) +HANDLE_BAT(APINT_TYPE_PREFIX, 21743) +HANDLE_BAT(APINT_TYPE_PREFIX, 21744) +HANDLE_BAT(APINT_TYPE_PREFIX, 21745) +HANDLE_BAT(APINT_TYPE_PREFIX, 21746) +HANDLE_BAT(APINT_TYPE_PREFIX, 21747) +HANDLE_BAT(APINT_TYPE_PREFIX, 21748) +HANDLE_BAT(APINT_TYPE_PREFIX, 21749) +HANDLE_BAT(APINT_TYPE_PREFIX, 21750) +HANDLE_BAT(APINT_TYPE_PREFIX, 21751) +HANDLE_BAT(APINT_TYPE_PREFIX, 21752) +HANDLE_BAT(APINT_TYPE_PREFIX, 21753) +HANDLE_BAT(APINT_TYPE_PREFIX, 21754) +HANDLE_BAT(APINT_TYPE_PREFIX, 21755) +HANDLE_BAT(APINT_TYPE_PREFIX, 21756) +HANDLE_BAT(APINT_TYPE_PREFIX, 21757) +HANDLE_BAT(APINT_TYPE_PREFIX, 21758) +HANDLE_BAT(APINT_TYPE_PREFIX, 21759) +HANDLE_BAT(APINT_TYPE_PREFIX, 21760) +HANDLE_BAT(APINT_TYPE_PREFIX, 21761) +HANDLE_BAT(APINT_TYPE_PREFIX, 21762) +HANDLE_BAT(APINT_TYPE_PREFIX, 21763) +HANDLE_BAT(APINT_TYPE_PREFIX, 21764) +HANDLE_BAT(APINT_TYPE_PREFIX, 21765) +HANDLE_BAT(APINT_TYPE_PREFIX, 21766) +HANDLE_BAT(APINT_TYPE_PREFIX, 21767) +HANDLE_BAT(APINT_TYPE_PREFIX, 21768) +HANDLE_BAT(APINT_TYPE_PREFIX, 21769) +HANDLE_BAT(APINT_TYPE_PREFIX, 21770) +HANDLE_BAT(APINT_TYPE_PREFIX, 21771) +HANDLE_BAT(APINT_TYPE_PREFIX, 21772) +HANDLE_BAT(APINT_TYPE_PREFIX, 21773) +HANDLE_BAT(APINT_TYPE_PREFIX, 21774) +HANDLE_BAT(APINT_TYPE_PREFIX, 21775) +HANDLE_BAT(APINT_TYPE_PREFIX, 21776) +HANDLE_BAT(APINT_TYPE_PREFIX, 21777) +HANDLE_BAT(APINT_TYPE_PREFIX, 21778) +HANDLE_BAT(APINT_TYPE_PREFIX, 21779) +HANDLE_BAT(APINT_TYPE_PREFIX, 21780) +HANDLE_BAT(APINT_TYPE_PREFIX, 21781) +HANDLE_BAT(APINT_TYPE_PREFIX, 21782) +HANDLE_BAT(APINT_TYPE_PREFIX, 21783) +HANDLE_BAT(APINT_TYPE_PREFIX, 21784) +HANDLE_BAT(APINT_TYPE_PREFIX, 21785) +HANDLE_BAT(APINT_TYPE_PREFIX, 21786) +HANDLE_BAT(APINT_TYPE_PREFIX, 21787) +HANDLE_BAT(APINT_TYPE_PREFIX, 21788) +HANDLE_BAT(APINT_TYPE_PREFIX, 21789) +HANDLE_BAT(APINT_TYPE_PREFIX, 21790) +HANDLE_BAT(APINT_TYPE_PREFIX, 21791) +HANDLE_BAT(APINT_TYPE_PREFIX, 21792) +HANDLE_BAT(APINT_TYPE_PREFIX, 21793) +HANDLE_BAT(APINT_TYPE_PREFIX, 21794) +HANDLE_BAT(APINT_TYPE_PREFIX, 21795) +HANDLE_BAT(APINT_TYPE_PREFIX, 21796) +HANDLE_BAT(APINT_TYPE_PREFIX, 21797) +HANDLE_BAT(APINT_TYPE_PREFIX, 21798) +HANDLE_BAT(APINT_TYPE_PREFIX, 21799) +HANDLE_BAT(APINT_TYPE_PREFIX, 21800) +HANDLE_BAT(APINT_TYPE_PREFIX, 21801) +HANDLE_BAT(APINT_TYPE_PREFIX, 21802) +HANDLE_BAT(APINT_TYPE_PREFIX, 21803) +HANDLE_BAT(APINT_TYPE_PREFIX, 21804) +HANDLE_BAT(APINT_TYPE_PREFIX, 21805) +HANDLE_BAT(APINT_TYPE_PREFIX, 21806) +HANDLE_BAT(APINT_TYPE_PREFIX, 21807) +HANDLE_BAT(APINT_TYPE_PREFIX, 21808) +HANDLE_BAT(APINT_TYPE_PREFIX, 21809) +HANDLE_BAT(APINT_TYPE_PREFIX, 21810) +HANDLE_BAT(APINT_TYPE_PREFIX, 21811) +HANDLE_BAT(APINT_TYPE_PREFIX, 21812) +HANDLE_BAT(APINT_TYPE_PREFIX, 21813) +HANDLE_BAT(APINT_TYPE_PREFIX, 21814) +HANDLE_BAT(APINT_TYPE_PREFIX, 21815) +HANDLE_BAT(APINT_TYPE_PREFIX, 21816) +HANDLE_BAT(APINT_TYPE_PREFIX, 21817) +HANDLE_BAT(APINT_TYPE_PREFIX, 21818) +HANDLE_BAT(APINT_TYPE_PREFIX, 21819) +HANDLE_BAT(APINT_TYPE_PREFIX, 21820) +HANDLE_BAT(APINT_TYPE_PREFIX, 21821) +HANDLE_BAT(APINT_TYPE_PREFIX, 21822) +HANDLE_BAT(APINT_TYPE_PREFIX, 21823) +HANDLE_BAT(APINT_TYPE_PREFIX, 21824) +HANDLE_BAT(APINT_TYPE_PREFIX, 21825) +HANDLE_BAT(APINT_TYPE_PREFIX, 21826) +HANDLE_BAT(APINT_TYPE_PREFIX, 21827) +HANDLE_BAT(APINT_TYPE_PREFIX, 21828) +HANDLE_BAT(APINT_TYPE_PREFIX, 21829) +HANDLE_BAT(APINT_TYPE_PREFIX, 21830) +HANDLE_BAT(APINT_TYPE_PREFIX, 21831) +HANDLE_BAT(APINT_TYPE_PREFIX, 21832) +HANDLE_BAT(APINT_TYPE_PREFIX, 21833) +HANDLE_BAT(APINT_TYPE_PREFIX, 21834) +HANDLE_BAT(APINT_TYPE_PREFIX, 21835) +HANDLE_BAT(APINT_TYPE_PREFIX, 21836) +HANDLE_BAT(APINT_TYPE_PREFIX, 21837) +HANDLE_BAT(APINT_TYPE_PREFIX, 21838) +HANDLE_BAT(APINT_TYPE_PREFIX, 21839) +HANDLE_BAT(APINT_TYPE_PREFIX, 21840) +HANDLE_BAT(APINT_TYPE_PREFIX, 21841) +HANDLE_BAT(APINT_TYPE_PREFIX, 21842) +HANDLE_BAT(APINT_TYPE_PREFIX, 21843) +HANDLE_BAT(APINT_TYPE_PREFIX, 21844) +HANDLE_BAT(APINT_TYPE_PREFIX, 21845) +HANDLE_BAT(APINT_TYPE_PREFIX, 21846) +HANDLE_BAT(APINT_TYPE_PREFIX, 21847) +HANDLE_BAT(APINT_TYPE_PREFIX, 21848) +HANDLE_BAT(APINT_TYPE_PREFIX, 21849) +HANDLE_BAT(APINT_TYPE_PREFIX, 21850) +HANDLE_BAT(APINT_TYPE_PREFIX, 21851) +HANDLE_BAT(APINT_TYPE_PREFIX, 21852) +HANDLE_BAT(APINT_TYPE_PREFIX, 21853) +HANDLE_BAT(APINT_TYPE_PREFIX, 21854) +HANDLE_BAT(APINT_TYPE_PREFIX, 21855) +HANDLE_BAT(APINT_TYPE_PREFIX, 21856) +HANDLE_BAT(APINT_TYPE_PREFIX, 21857) +HANDLE_BAT(APINT_TYPE_PREFIX, 21858) +HANDLE_BAT(APINT_TYPE_PREFIX, 21859) +HANDLE_BAT(APINT_TYPE_PREFIX, 21860) +HANDLE_BAT(APINT_TYPE_PREFIX, 21861) +HANDLE_BAT(APINT_TYPE_PREFIX, 21862) +HANDLE_BAT(APINT_TYPE_PREFIX, 21863) +HANDLE_BAT(APINT_TYPE_PREFIX, 21864) +HANDLE_BAT(APINT_TYPE_PREFIX, 21865) +HANDLE_BAT(APINT_TYPE_PREFIX, 21866) +HANDLE_BAT(APINT_TYPE_PREFIX, 21867) +HANDLE_BAT(APINT_TYPE_PREFIX, 21868) +HANDLE_BAT(APINT_TYPE_PREFIX, 21869) +HANDLE_BAT(APINT_TYPE_PREFIX, 21870) +HANDLE_BAT(APINT_TYPE_PREFIX, 21871) +HANDLE_BAT(APINT_TYPE_PREFIX, 21872) +HANDLE_BAT(APINT_TYPE_PREFIX, 21873) +HANDLE_BAT(APINT_TYPE_PREFIX, 21874) +HANDLE_BAT(APINT_TYPE_PREFIX, 21875) +HANDLE_BAT(APINT_TYPE_PREFIX, 21876) +HANDLE_BAT(APINT_TYPE_PREFIX, 21877) +HANDLE_BAT(APINT_TYPE_PREFIX, 21878) +HANDLE_BAT(APINT_TYPE_PREFIX, 21879) +HANDLE_BAT(APINT_TYPE_PREFIX, 21880) +HANDLE_BAT(APINT_TYPE_PREFIX, 21881) +HANDLE_BAT(APINT_TYPE_PREFIX, 21882) +HANDLE_BAT(APINT_TYPE_PREFIX, 21883) +HANDLE_BAT(APINT_TYPE_PREFIX, 21884) +HANDLE_BAT(APINT_TYPE_PREFIX, 21885) +HANDLE_BAT(APINT_TYPE_PREFIX, 21886) +HANDLE_BAT(APINT_TYPE_PREFIX, 21887) +HANDLE_BAT(APINT_TYPE_PREFIX, 21888) +HANDLE_BAT(APINT_TYPE_PREFIX, 21889) +HANDLE_BAT(APINT_TYPE_PREFIX, 21890) +HANDLE_BAT(APINT_TYPE_PREFIX, 21891) +HANDLE_BAT(APINT_TYPE_PREFIX, 21892) +HANDLE_BAT(APINT_TYPE_PREFIX, 21893) +HANDLE_BAT(APINT_TYPE_PREFIX, 21894) +HANDLE_BAT(APINT_TYPE_PREFIX, 21895) +HANDLE_BAT(APINT_TYPE_PREFIX, 21896) +HANDLE_BAT(APINT_TYPE_PREFIX, 21897) +HANDLE_BAT(APINT_TYPE_PREFIX, 21898) +HANDLE_BAT(APINT_TYPE_PREFIX, 21899) +HANDLE_BAT(APINT_TYPE_PREFIX, 21900) +HANDLE_BAT(APINT_TYPE_PREFIX, 21901) +HANDLE_BAT(APINT_TYPE_PREFIX, 21902) +HANDLE_BAT(APINT_TYPE_PREFIX, 21903) +HANDLE_BAT(APINT_TYPE_PREFIX, 21904) +HANDLE_BAT(APINT_TYPE_PREFIX, 21905) +HANDLE_BAT(APINT_TYPE_PREFIX, 21906) +HANDLE_BAT(APINT_TYPE_PREFIX, 21907) +HANDLE_BAT(APINT_TYPE_PREFIX, 21908) +HANDLE_BAT(APINT_TYPE_PREFIX, 21909) +HANDLE_BAT(APINT_TYPE_PREFIX, 21910) +HANDLE_BAT(APINT_TYPE_PREFIX, 21911) +HANDLE_BAT(APINT_TYPE_PREFIX, 21912) +HANDLE_BAT(APINT_TYPE_PREFIX, 21913) +HANDLE_BAT(APINT_TYPE_PREFIX, 21914) +HANDLE_BAT(APINT_TYPE_PREFIX, 21915) +HANDLE_BAT(APINT_TYPE_PREFIX, 21916) +HANDLE_BAT(APINT_TYPE_PREFIX, 21917) +HANDLE_BAT(APINT_TYPE_PREFIX, 21918) +HANDLE_BAT(APINT_TYPE_PREFIX, 21919) +HANDLE_BAT(APINT_TYPE_PREFIX, 21920) +HANDLE_BAT(APINT_TYPE_PREFIX, 21921) +HANDLE_BAT(APINT_TYPE_PREFIX, 21922) +HANDLE_BAT(APINT_TYPE_PREFIX, 21923) +HANDLE_BAT(APINT_TYPE_PREFIX, 21924) +HANDLE_BAT(APINT_TYPE_PREFIX, 21925) +HANDLE_BAT(APINT_TYPE_PREFIX, 21926) +HANDLE_BAT(APINT_TYPE_PREFIX, 21927) +HANDLE_BAT(APINT_TYPE_PREFIX, 21928) +HANDLE_BAT(APINT_TYPE_PREFIX, 21929) +HANDLE_BAT(APINT_TYPE_PREFIX, 21930) +HANDLE_BAT(APINT_TYPE_PREFIX, 21931) +HANDLE_BAT(APINT_TYPE_PREFIX, 21932) +HANDLE_BAT(APINT_TYPE_PREFIX, 21933) +HANDLE_BAT(APINT_TYPE_PREFIX, 21934) +HANDLE_BAT(APINT_TYPE_PREFIX, 21935) +HANDLE_BAT(APINT_TYPE_PREFIX, 21936) +HANDLE_BAT(APINT_TYPE_PREFIX, 21937) +HANDLE_BAT(APINT_TYPE_PREFIX, 21938) +HANDLE_BAT(APINT_TYPE_PREFIX, 21939) +HANDLE_BAT(APINT_TYPE_PREFIX, 21940) +HANDLE_BAT(APINT_TYPE_PREFIX, 21941) +HANDLE_BAT(APINT_TYPE_PREFIX, 21942) +HANDLE_BAT(APINT_TYPE_PREFIX, 21943) +HANDLE_BAT(APINT_TYPE_PREFIX, 21944) +HANDLE_BAT(APINT_TYPE_PREFIX, 21945) +HANDLE_BAT(APINT_TYPE_PREFIX, 21946) +HANDLE_BAT(APINT_TYPE_PREFIX, 21947) +HANDLE_BAT(APINT_TYPE_PREFIX, 21948) +HANDLE_BAT(APINT_TYPE_PREFIX, 21949) +HANDLE_BAT(APINT_TYPE_PREFIX, 21950) +HANDLE_BAT(APINT_TYPE_PREFIX, 21951) +HANDLE_BAT(APINT_TYPE_PREFIX, 21952) +HANDLE_BAT(APINT_TYPE_PREFIX, 21953) +HANDLE_BAT(APINT_TYPE_PREFIX, 21954) +HANDLE_BAT(APINT_TYPE_PREFIX, 21955) +HANDLE_BAT(APINT_TYPE_PREFIX, 21956) +HANDLE_BAT(APINT_TYPE_PREFIX, 21957) +HANDLE_BAT(APINT_TYPE_PREFIX, 21958) +HANDLE_BAT(APINT_TYPE_PREFIX, 21959) +HANDLE_BAT(APINT_TYPE_PREFIX, 21960) +HANDLE_BAT(APINT_TYPE_PREFIX, 21961) +HANDLE_BAT(APINT_TYPE_PREFIX, 21962) +HANDLE_BAT(APINT_TYPE_PREFIX, 21963) +HANDLE_BAT(APINT_TYPE_PREFIX, 21964) +HANDLE_BAT(APINT_TYPE_PREFIX, 21965) +HANDLE_BAT(APINT_TYPE_PREFIX, 21966) +HANDLE_BAT(APINT_TYPE_PREFIX, 21967) +HANDLE_BAT(APINT_TYPE_PREFIX, 21968) +HANDLE_BAT(APINT_TYPE_PREFIX, 21969) +HANDLE_BAT(APINT_TYPE_PREFIX, 21970) +HANDLE_BAT(APINT_TYPE_PREFIX, 21971) +HANDLE_BAT(APINT_TYPE_PREFIX, 21972) +HANDLE_BAT(APINT_TYPE_PREFIX, 21973) +HANDLE_BAT(APINT_TYPE_PREFIX, 21974) +HANDLE_BAT(APINT_TYPE_PREFIX, 21975) +HANDLE_BAT(APINT_TYPE_PREFIX, 21976) +HANDLE_BAT(APINT_TYPE_PREFIX, 21977) +HANDLE_BAT(APINT_TYPE_PREFIX, 21978) +HANDLE_BAT(APINT_TYPE_PREFIX, 21979) +HANDLE_BAT(APINT_TYPE_PREFIX, 21980) +HANDLE_BAT(APINT_TYPE_PREFIX, 21981) +HANDLE_BAT(APINT_TYPE_PREFIX, 21982) +HANDLE_BAT(APINT_TYPE_PREFIX, 21983) +HANDLE_BAT(APINT_TYPE_PREFIX, 21984) +HANDLE_BAT(APINT_TYPE_PREFIX, 21985) +HANDLE_BAT(APINT_TYPE_PREFIX, 21986) +HANDLE_BAT(APINT_TYPE_PREFIX, 21987) +HANDLE_BAT(APINT_TYPE_PREFIX, 21988) +HANDLE_BAT(APINT_TYPE_PREFIX, 21989) +HANDLE_BAT(APINT_TYPE_PREFIX, 21990) +HANDLE_BAT(APINT_TYPE_PREFIX, 21991) +HANDLE_BAT(APINT_TYPE_PREFIX, 21992) +HANDLE_BAT(APINT_TYPE_PREFIX, 21993) +HANDLE_BAT(APINT_TYPE_PREFIX, 21994) +HANDLE_BAT(APINT_TYPE_PREFIX, 21995) +HANDLE_BAT(APINT_TYPE_PREFIX, 21996) +HANDLE_BAT(APINT_TYPE_PREFIX, 21997) +HANDLE_BAT(APINT_TYPE_PREFIX, 21998) +HANDLE_BAT(APINT_TYPE_PREFIX, 21999) +HANDLE_BAT(APINT_TYPE_PREFIX, 22000) +HANDLE_BAT(APINT_TYPE_PREFIX, 22001) +HANDLE_BAT(APINT_TYPE_PREFIX, 22002) +HANDLE_BAT(APINT_TYPE_PREFIX, 22003) +HANDLE_BAT(APINT_TYPE_PREFIX, 22004) +HANDLE_BAT(APINT_TYPE_PREFIX, 22005) +HANDLE_BAT(APINT_TYPE_PREFIX, 22006) +HANDLE_BAT(APINT_TYPE_PREFIX, 22007) +HANDLE_BAT(APINT_TYPE_PREFIX, 22008) +HANDLE_BAT(APINT_TYPE_PREFIX, 22009) +HANDLE_BAT(APINT_TYPE_PREFIX, 22010) +HANDLE_BAT(APINT_TYPE_PREFIX, 22011) +HANDLE_BAT(APINT_TYPE_PREFIX, 22012) +HANDLE_BAT(APINT_TYPE_PREFIX, 22013) +HANDLE_BAT(APINT_TYPE_PREFIX, 22014) +HANDLE_BAT(APINT_TYPE_PREFIX, 22015) +HANDLE_BAT(APINT_TYPE_PREFIX, 22016) +HANDLE_BAT(APINT_TYPE_PREFIX, 22017) +HANDLE_BAT(APINT_TYPE_PREFIX, 22018) +HANDLE_BAT(APINT_TYPE_PREFIX, 22019) +HANDLE_BAT(APINT_TYPE_PREFIX, 22020) +HANDLE_BAT(APINT_TYPE_PREFIX, 22021) +HANDLE_BAT(APINT_TYPE_PREFIX, 22022) +HANDLE_BAT(APINT_TYPE_PREFIX, 22023) +HANDLE_BAT(APINT_TYPE_PREFIX, 22024) +HANDLE_BAT(APINT_TYPE_PREFIX, 22025) +HANDLE_BAT(APINT_TYPE_PREFIX, 22026) +HANDLE_BAT(APINT_TYPE_PREFIX, 22027) +HANDLE_BAT(APINT_TYPE_PREFIX, 22028) +HANDLE_BAT(APINT_TYPE_PREFIX, 22029) +HANDLE_BAT(APINT_TYPE_PREFIX, 22030) +HANDLE_BAT(APINT_TYPE_PREFIX, 22031) +HANDLE_BAT(APINT_TYPE_PREFIX, 22032) +HANDLE_BAT(APINT_TYPE_PREFIX, 22033) +HANDLE_BAT(APINT_TYPE_PREFIX, 22034) +HANDLE_BAT(APINT_TYPE_PREFIX, 22035) +HANDLE_BAT(APINT_TYPE_PREFIX, 22036) +HANDLE_BAT(APINT_TYPE_PREFIX, 22037) +HANDLE_BAT(APINT_TYPE_PREFIX, 22038) +HANDLE_BAT(APINT_TYPE_PREFIX, 22039) +HANDLE_BAT(APINT_TYPE_PREFIX, 22040) +HANDLE_BAT(APINT_TYPE_PREFIX, 22041) +HANDLE_BAT(APINT_TYPE_PREFIX, 22042) +HANDLE_BAT(APINT_TYPE_PREFIX, 22043) +HANDLE_BAT(APINT_TYPE_PREFIX, 22044) +HANDLE_BAT(APINT_TYPE_PREFIX, 22045) +HANDLE_BAT(APINT_TYPE_PREFIX, 22046) +HANDLE_BAT(APINT_TYPE_PREFIX, 22047) +HANDLE_BAT(APINT_TYPE_PREFIX, 22048) +HANDLE_BAT(APINT_TYPE_PREFIX, 22049) +HANDLE_BAT(APINT_TYPE_PREFIX, 22050) +HANDLE_BAT(APINT_TYPE_PREFIX, 22051) +HANDLE_BAT(APINT_TYPE_PREFIX, 22052) +HANDLE_BAT(APINT_TYPE_PREFIX, 22053) +HANDLE_BAT(APINT_TYPE_PREFIX, 22054) +HANDLE_BAT(APINT_TYPE_PREFIX, 22055) +HANDLE_BAT(APINT_TYPE_PREFIX, 22056) +HANDLE_BAT(APINT_TYPE_PREFIX, 22057) +HANDLE_BAT(APINT_TYPE_PREFIX, 22058) +HANDLE_BAT(APINT_TYPE_PREFIX, 22059) +HANDLE_BAT(APINT_TYPE_PREFIX, 22060) +HANDLE_BAT(APINT_TYPE_PREFIX, 22061) +HANDLE_BAT(APINT_TYPE_PREFIX, 22062) +HANDLE_BAT(APINT_TYPE_PREFIX, 22063) +HANDLE_BAT(APINT_TYPE_PREFIX, 22064) +HANDLE_BAT(APINT_TYPE_PREFIX, 22065) +HANDLE_BAT(APINT_TYPE_PREFIX, 22066) +HANDLE_BAT(APINT_TYPE_PREFIX, 22067) +HANDLE_BAT(APINT_TYPE_PREFIX, 22068) +HANDLE_BAT(APINT_TYPE_PREFIX, 22069) +HANDLE_BAT(APINT_TYPE_PREFIX, 22070) +HANDLE_BAT(APINT_TYPE_PREFIX, 22071) +HANDLE_BAT(APINT_TYPE_PREFIX, 22072) +HANDLE_BAT(APINT_TYPE_PREFIX, 22073) +HANDLE_BAT(APINT_TYPE_PREFIX, 22074) +HANDLE_BAT(APINT_TYPE_PREFIX, 22075) +HANDLE_BAT(APINT_TYPE_PREFIX, 22076) +HANDLE_BAT(APINT_TYPE_PREFIX, 22077) +HANDLE_BAT(APINT_TYPE_PREFIX, 22078) +HANDLE_BAT(APINT_TYPE_PREFIX, 22079) +HANDLE_BAT(APINT_TYPE_PREFIX, 22080) +HANDLE_BAT(APINT_TYPE_PREFIX, 22081) +HANDLE_BAT(APINT_TYPE_PREFIX, 22082) +HANDLE_BAT(APINT_TYPE_PREFIX, 22083) +HANDLE_BAT(APINT_TYPE_PREFIX, 22084) +HANDLE_BAT(APINT_TYPE_PREFIX, 22085) +HANDLE_BAT(APINT_TYPE_PREFIX, 22086) +HANDLE_BAT(APINT_TYPE_PREFIX, 22087) +HANDLE_BAT(APINT_TYPE_PREFIX, 22088) +HANDLE_BAT(APINT_TYPE_PREFIX, 22089) +HANDLE_BAT(APINT_TYPE_PREFIX, 22090) +HANDLE_BAT(APINT_TYPE_PREFIX, 22091) +HANDLE_BAT(APINT_TYPE_PREFIX, 22092) +HANDLE_BAT(APINT_TYPE_PREFIX, 22093) +HANDLE_BAT(APINT_TYPE_PREFIX, 22094) +HANDLE_BAT(APINT_TYPE_PREFIX, 22095) +HANDLE_BAT(APINT_TYPE_PREFIX, 22096) +HANDLE_BAT(APINT_TYPE_PREFIX, 22097) +HANDLE_BAT(APINT_TYPE_PREFIX, 22098) +HANDLE_BAT(APINT_TYPE_PREFIX, 22099) +HANDLE_BAT(APINT_TYPE_PREFIX, 22100) +HANDLE_BAT(APINT_TYPE_PREFIX, 22101) +HANDLE_BAT(APINT_TYPE_PREFIX, 22102) +HANDLE_BAT(APINT_TYPE_PREFIX, 22103) +HANDLE_BAT(APINT_TYPE_PREFIX, 22104) +HANDLE_BAT(APINT_TYPE_PREFIX, 22105) +HANDLE_BAT(APINT_TYPE_PREFIX, 22106) +HANDLE_BAT(APINT_TYPE_PREFIX, 22107) +HANDLE_BAT(APINT_TYPE_PREFIX, 22108) +HANDLE_BAT(APINT_TYPE_PREFIX, 22109) +HANDLE_BAT(APINT_TYPE_PREFIX, 22110) +HANDLE_BAT(APINT_TYPE_PREFIX, 22111) +HANDLE_BAT(APINT_TYPE_PREFIX, 22112) +HANDLE_BAT(APINT_TYPE_PREFIX, 22113) +HANDLE_BAT(APINT_TYPE_PREFIX, 22114) +HANDLE_BAT(APINT_TYPE_PREFIX, 22115) +HANDLE_BAT(APINT_TYPE_PREFIX, 22116) +HANDLE_BAT(APINT_TYPE_PREFIX, 22117) +HANDLE_BAT(APINT_TYPE_PREFIX, 22118) +HANDLE_BAT(APINT_TYPE_PREFIX, 22119) +HANDLE_BAT(APINT_TYPE_PREFIX, 22120) +HANDLE_BAT(APINT_TYPE_PREFIX, 22121) +HANDLE_BAT(APINT_TYPE_PREFIX, 22122) +HANDLE_BAT(APINT_TYPE_PREFIX, 22123) +HANDLE_BAT(APINT_TYPE_PREFIX, 22124) +HANDLE_BAT(APINT_TYPE_PREFIX, 22125) +HANDLE_BAT(APINT_TYPE_PREFIX, 22126) +HANDLE_BAT(APINT_TYPE_PREFIX, 22127) +HANDLE_BAT(APINT_TYPE_PREFIX, 22128) +HANDLE_BAT(APINT_TYPE_PREFIX, 22129) +HANDLE_BAT(APINT_TYPE_PREFIX, 22130) +HANDLE_BAT(APINT_TYPE_PREFIX, 22131) +HANDLE_BAT(APINT_TYPE_PREFIX, 22132) +HANDLE_BAT(APINT_TYPE_PREFIX, 22133) +HANDLE_BAT(APINT_TYPE_PREFIX, 22134) +HANDLE_BAT(APINT_TYPE_PREFIX, 22135) +HANDLE_BAT(APINT_TYPE_PREFIX, 22136) +HANDLE_BAT(APINT_TYPE_PREFIX, 22137) +HANDLE_BAT(APINT_TYPE_PREFIX, 22138) +HANDLE_BAT(APINT_TYPE_PREFIX, 22139) +HANDLE_BAT(APINT_TYPE_PREFIX, 22140) +HANDLE_BAT(APINT_TYPE_PREFIX, 22141) +HANDLE_BAT(APINT_TYPE_PREFIX, 22142) +HANDLE_BAT(APINT_TYPE_PREFIX, 22143) +HANDLE_BAT(APINT_TYPE_PREFIX, 22144) +HANDLE_BAT(APINT_TYPE_PREFIX, 22145) +HANDLE_BAT(APINT_TYPE_PREFIX, 22146) +HANDLE_BAT(APINT_TYPE_PREFIX, 22147) +HANDLE_BAT(APINT_TYPE_PREFIX, 22148) +HANDLE_BAT(APINT_TYPE_PREFIX, 22149) +HANDLE_BAT(APINT_TYPE_PREFIX, 22150) +HANDLE_BAT(APINT_TYPE_PREFIX, 22151) +HANDLE_BAT(APINT_TYPE_PREFIX, 22152) +HANDLE_BAT(APINT_TYPE_PREFIX, 22153) +HANDLE_BAT(APINT_TYPE_PREFIX, 22154) +HANDLE_BAT(APINT_TYPE_PREFIX, 22155) +HANDLE_BAT(APINT_TYPE_PREFIX, 22156) +HANDLE_BAT(APINT_TYPE_PREFIX, 22157) +HANDLE_BAT(APINT_TYPE_PREFIX, 22158) +HANDLE_BAT(APINT_TYPE_PREFIX, 22159) +HANDLE_BAT(APINT_TYPE_PREFIX, 22160) +HANDLE_BAT(APINT_TYPE_PREFIX, 22161) +HANDLE_BAT(APINT_TYPE_PREFIX, 22162) +HANDLE_BAT(APINT_TYPE_PREFIX, 22163) +HANDLE_BAT(APINT_TYPE_PREFIX, 22164) +HANDLE_BAT(APINT_TYPE_PREFIX, 22165) +HANDLE_BAT(APINT_TYPE_PREFIX, 22166) +HANDLE_BAT(APINT_TYPE_PREFIX, 22167) +HANDLE_BAT(APINT_TYPE_PREFIX, 22168) +HANDLE_BAT(APINT_TYPE_PREFIX, 22169) +HANDLE_BAT(APINT_TYPE_PREFIX, 22170) +HANDLE_BAT(APINT_TYPE_PREFIX, 22171) +HANDLE_BAT(APINT_TYPE_PREFIX, 22172) +HANDLE_BAT(APINT_TYPE_PREFIX, 22173) +HANDLE_BAT(APINT_TYPE_PREFIX, 22174) +HANDLE_BAT(APINT_TYPE_PREFIX, 22175) +HANDLE_BAT(APINT_TYPE_PREFIX, 22176) +HANDLE_BAT(APINT_TYPE_PREFIX, 22177) +HANDLE_BAT(APINT_TYPE_PREFIX, 22178) +HANDLE_BAT(APINT_TYPE_PREFIX, 22179) +HANDLE_BAT(APINT_TYPE_PREFIX, 22180) +HANDLE_BAT(APINT_TYPE_PREFIX, 22181) +HANDLE_BAT(APINT_TYPE_PREFIX, 22182) +HANDLE_BAT(APINT_TYPE_PREFIX, 22183) +HANDLE_BAT(APINT_TYPE_PREFIX, 22184) +HANDLE_BAT(APINT_TYPE_PREFIX, 22185) +HANDLE_BAT(APINT_TYPE_PREFIX, 22186) +HANDLE_BAT(APINT_TYPE_PREFIX, 22187) +HANDLE_BAT(APINT_TYPE_PREFIX, 22188) +HANDLE_BAT(APINT_TYPE_PREFIX, 22189) +HANDLE_BAT(APINT_TYPE_PREFIX, 22190) +HANDLE_BAT(APINT_TYPE_PREFIX, 22191) +HANDLE_BAT(APINT_TYPE_PREFIX, 22192) +HANDLE_BAT(APINT_TYPE_PREFIX, 22193) +HANDLE_BAT(APINT_TYPE_PREFIX, 22194) +HANDLE_BAT(APINT_TYPE_PREFIX, 22195) +HANDLE_BAT(APINT_TYPE_PREFIX, 22196) +HANDLE_BAT(APINT_TYPE_PREFIX, 22197) +HANDLE_BAT(APINT_TYPE_PREFIX, 22198) +HANDLE_BAT(APINT_TYPE_PREFIX, 22199) +HANDLE_BAT(APINT_TYPE_PREFIX, 22200) +HANDLE_BAT(APINT_TYPE_PREFIX, 22201) +HANDLE_BAT(APINT_TYPE_PREFIX, 22202) +HANDLE_BAT(APINT_TYPE_PREFIX, 22203) +HANDLE_BAT(APINT_TYPE_PREFIX, 22204) +HANDLE_BAT(APINT_TYPE_PREFIX, 22205) +HANDLE_BAT(APINT_TYPE_PREFIX, 22206) +HANDLE_BAT(APINT_TYPE_PREFIX, 22207) +HANDLE_BAT(APINT_TYPE_PREFIX, 22208) +HANDLE_BAT(APINT_TYPE_PREFIX, 22209) +HANDLE_BAT(APINT_TYPE_PREFIX, 22210) +HANDLE_BAT(APINT_TYPE_PREFIX, 22211) +HANDLE_BAT(APINT_TYPE_PREFIX, 22212) +HANDLE_BAT(APINT_TYPE_PREFIX, 22213) +HANDLE_BAT(APINT_TYPE_PREFIX, 22214) +HANDLE_BAT(APINT_TYPE_PREFIX, 22215) +HANDLE_BAT(APINT_TYPE_PREFIX, 22216) +HANDLE_BAT(APINT_TYPE_PREFIX, 22217) +HANDLE_BAT(APINT_TYPE_PREFIX, 22218) +HANDLE_BAT(APINT_TYPE_PREFIX, 22219) +HANDLE_BAT(APINT_TYPE_PREFIX, 22220) +HANDLE_BAT(APINT_TYPE_PREFIX, 22221) +HANDLE_BAT(APINT_TYPE_PREFIX, 22222) +HANDLE_BAT(APINT_TYPE_PREFIX, 22223) +HANDLE_BAT(APINT_TYPE_PREFIX, 22224) +HANDLE_BAT(APINT_TYPE_PREFIX, 22225) +HANDLE_BAT(APINT_TYPE_PREFIX, 22226) +HANDLE_BAT(APINT_TYPE_PREFIX, 22227) +HANDLE_BAT(APINT_TYPE_PREFIX, 22228) +HANDLE_BAT(APINT_TYPE_PREFIX, 22229) +HANDLE_BAT(APINT_TYPE_PREFIX, 22230) +HANDLE_BAT(APINT_TYPE_PREFIX, 22231) +HANDLE_BAT(APINT_TYPE_PREFIX, 22232) +HANDLE_BAT(APINT_TYPE_PREFIX, 22233) +HANDLE_BAT(APINT_TYPE_PREFIX, 22234) +HANDLE_BAT(APINT_TYPE_PREFIX, 22235) +HANDLE_BAT(APINT_TYPE_PREFIX, 22236) +HANDLE_BAT(APINT_TYPE_PREFIX, 22237) +HANDLE_BAT(APINT_TYPE_PREFIX, 22238) +HANDLE_BAT(APINT_TYPE_PREFIX, 22239) +HANDLE_BAT(APINT_TYPE_PREFIX, 22240) +HANDLE_BAT(APINT_TYPE_PREFIX, 22241) +HANDLE_BAT(APINT_TYPE_PREFIX, 22242) +HANDLE_BAT(APINT_TYPE_PREFIX, 22243) +HANDLE_BAT(APINT_TYPE_PREFIX, 22244) +HANDLE_BAT(APINT_TYPE_PREFIX, 22245) +HANDLE_BAT(APINT_TYPE_PREFIX, 22246) +HANDLE_BAT(APINT_TYPE_PREFIX, 22247) +HANDLE_BAT(APINT_TYPE_PREFIX, 22248) +HANDLE_BAT(APINT_TYPE_PREFIX, 22249) +HANDLE_BAT(APINT_TYPE_PREFIX, 22250) +HANDLE_BAT(APINT_TYPE_PREFIX, 22251) +HANDLE_BAT(APINT_TYPE_PREFIX, 22252) +HANDLE_BAT(APINT_TYPE_PREFIX, 22253) +HANDLE_BAT(APINT_TYPE_PREFIX, 22254) +HANDLE_BAT(APINT_TYPE_PREFIX, 22255) +HANDLE_BAT(APINT_TYPE_PREFIX, 22256) +HANDLE_BAT(APINT_TYPE_PREFIX, 22257) +HANDLE_BAT(APINT_TYPE_PREFIX, 22258) +HANDLE_BAT(APINT_TYPE_PREFIX, 22259) +HANDLE_BAT(APINT_TYPE_PREFIX, 22260) +HANDLE_BAT(APINT_TYPE_PREFIX, 22261) +HANDLE_BAT(APINT_TYPE_PREFIX, 22262) +HANDLE_BAT(APINT_TYPE_PREFIX, 22263) +HANDLE_BAT(APINT_TYPE_PREFIX, 22264) +HANDLE_BAT(APINT_TYPE_PREFIX, 22265) +HANDLE_BAT(APINT_TYPE_PREFIX, 22266) +HANDLE_BAT(APINT_TYPE_PREFIX, 22267) +HANDLE_BAT(APINT_TYPE_PREFIX, 22268) +HANDLE_BAT(APINT_TYPE_PREFIX, 22269) +HANDLE_BAT(APINT_TYPE_PREFIX, 22270) +HANDLE_BAT(APINT_TYPE_PREFIX, 22271) +HANDLE_BAT(APINT_TYPE_PREFIX, 22272) +HANDLE_BAT(APINT_TYPE_PREFIX, 22273) +HANDLE_BAT(APINT_TYPE_PREFIX, 22274) +HANDLE_BAT(APINT_TYPE_PREFIX, 22275) +HANDLE_BAT(APINT_TYPE_PREFIX, 22276) +HANDLE_BAT(APINT_TYPE_PREFIX, 22277) +HANDLE_BAT(APINT_TYPE_PREFIX, 22278) +HANDLE_BAT(APINT_TYPE_PREFIX, 22279) +HANDLE_BAT(APINT_TYPE_PREFIX, 22280) +HANDLE_BAT(APINT_TYPE_PREFIX, 22281) +HANDLE_BAT(APINT_TYPE_PREFIX, 22282) +HANDLE_BAT(APINT_TYPE_PREFIX, 22283) +HANDLE_BAT(APINT_TYPE_PREFIX, 22284) +HANDLE_BAT(APINT_TYPE_PREFIX, 22285) +HANDLE_BAT(APINT_TYPE_PREFIX, 22286) +HANDLE_BAT(APINT_TYPE_PREFIX, 22287) +HANDLE_BAT(APINT_TYPE_PREFIX, 22288) +HANDLE_BAT(APINT_TYPE_PREFIX, 22289) +HANDLE_BAT(APINT_TYPE_PREFIX, 22290) +HANDLE_BAT(APINT_TYPE_PREFIX, 22291) +HANDLE_BAT(APINT_TYPE_PREFIX, 22292) +HANDLE_BAT(APINT_TYPE_PREFIX, 22293) +HANDLE_BAT(APINT_TYPE_PREFIX, 22294) +HANDLE_BAT(APINT_TYPE_PREFIX, 22295) +HANDLE_BAT(APINT_TYPE_PREFIX, 22296) +HANDLE_BAT(APINT_TYPE_PREFIX, 22297) +HANDLE_BAT(APINT_TYPE_PREFIX, 22298) +HANDLE_BAT(APINT_TYPE_PREFIX, 22299) +HANDLE_BAT(APINT_TYPE_PREFIX, 22300) +HANDLE_BAT(APINT_TYPE_PREFIX, 22301) +HANDLE_BAT(APINT_TYPE_PREFIX, 22302) +HANDLE_BAT(APINT_TYPE_PREFIX, 22303) +HANDLE_BAT(APINT_TYPE_PREFIX, 22304) +HANDLE_BAT(APINT_TYPE_PREFIX, 22305) +HANDLE_BAT(APINT_TYPE_PREFIX, 22306) +HANDLE_BAT(APINT_TYPE_PREFIX, 22307) +HANDLE_BAT(APINT_TYPE_PREFIX, 22308) +HANDLE_BAT(APINT_TYPE_PREFIX, 22309) +HANDLE_BAT(APINT_TYPE_PREFIX, 22310) +HANDLE_BAT(APINT_TYPE_PREFIX, 22311) +HANDLE_BAT(APINT_TYPE_PREFIX, 22312) +HANDLE_BAT(APINT_TYPE_PREFIX, 22313) +HANDLE_BAT(APINT_TYPE_PREFIX, 22314) +HANDLE_BAT(APINT_TYPE_PREFIX, 22315) +HANDLE_BAT(APINT_TYPE_PREFIX, 22316) +HANDLE_BAT(APINT_TYPE_PREFIX, 22317) +HANDLE_BAT(APINT_TYPE_PREFIX, 22318) +HANDLE_BAT(APINT_TYPE_PREFIX, 22319) +HANDLE_BAT(APINT_TYPE_PREFIX, 22320) +HANDLE_BAT(APINT_TYPE_PREFIX, 22321) +HANDLE_BAT(APINT_TYPE_PREFIX, 22322) +HANDLE_BAT(APINT_TYPE_PREFIX, 22323) +HANDLE_BAT(APINT_TYPE_PREFIX, 22324) +HANDLE_BAT(APINT_TYPE_PREFIX, 22325) +HANDLE_BAT(APINT_TYPE_PREFIX, 22326) +HANDLE_BAT(APINT_TYPE_PREFIX, 22327) +HANDLE_BAT(APINT_TYPE_PREFIX, 22328) +HANDLE_BAT(APINT_TYPE_PREFIX, 22329) +HANDLE_BAT(APINT_TYPE_PREFIX, 22330) +HANDLE_BAT(APINT_TYPE_PREFIX, 22331) +HANDLE_BAT(APINT_TYPE_PREFIX, 22332) +HANDLE_BAT(APINT_TYPE_PREFIX, 22333) +HANDLE_BAT(APINT_TYPE_PREFIX, 22334) +HANDLE_BAT(APINT_TYPE_PREFIX, 22335) +HANDLE_BAT(APINT_TYPE_PREFIX, 22336) +HANDLE_BAT(APINT_TYPE_PREFIX, 22337) +HANDLE_BAT(APINT_TYPE_PREFIX, 22338) +HANDLE_BAT(APINT_TYPE_PREFIX, 22339) +HANDLE_BAT(APINT_TYPE_PREFIX, 22340) +HANDLE_BAT(APINT_TYPE_PREFIX, 22341) +HANDLE_BAT(APINT_TYPE_PREFIX, 22342) +HANDLE_BAT(APINT_TYPE_PREFIX, 22343) +HANDLE_BAT(APINT_TYPE_PREFIX, 22344) +HANDLE_BAT(APINT_TYPE_PREFIX, 22345) +HANDLE_BAT(APINT_TYPE_PREFIX, 22346) +HANDLE_BAT(APINT_TYPE_PREFIX, 22347) +HANDLE_BAT(APINT_TYPE_PREFIX, 22348) +HANDLE_BAT(APINT_TYPE_PREFIX, 22349) +HANDLE_BAT(APINT_TYPE_PREFIX, 22350) +HANDLE_BAT(APINT_TYPE_PREFIX, 22351) +HANDLE_BAT(APINT_TYPE_PREFIX, 22352) +HANDLE_BAT(APINT_TYPE_PREFIX, 22353) +HANDLE_BAT(APINT_TYPE_PREFIX, 22354) +HANDLE_BAT(APINT_TYPE_PREFIX, 22355) +HANDLE_BAT(APINT_TYPE_PREFIX, 22356) +HANDLE_BAT(APINT_TYPE_PREFIX, 22357) +HANDLE_BAT(APINT_TYPE_PREFIX, 22358) +HANDLE_BAT(APINT_TYPE_PREFIX, 22359) +HANDLE_BAT(APINT_TYPE_PREFIX, 22360) +HANDLE_BAT(APINT_TYPE_PREFIX, 22361) +HANDLE_BAT(APINT_TYPE_PREFIX, 22362) +HANDLE_BAT(APINT_TYPE_PREFIX, 22363) +HANDLE_BAT(APINT_TYPE_PREFIX, 22364) +HANDLE_BAT(APINT_TYPE_PREFIX, 22365) +HANDLE_BAT(APINT_TYPE_PREFIX, 22366) +HANDLE_BAT(APINT_TYPE_PREFIX, 22367) +HANDLE_BAT(APINT_TYPE_PREFIX, 22368) +HANDLE_BAT(APINT_TYPE_PREFIX, 22369) +HANDLE_BAT(APINT_TYPE_PREFIX, 22370) +HANDLE_BAT(APINT_TYPE_PREFIX, 22371) +HANDLE_BAT(APINT_TYPE_PREFIX, 22372) +HANDLE_BAT(APINT_TYPE_PREFIX, 22373) +HANDLE_BAT(APINT_TYPE_PREFIX, 22374) +HANDLE_BAT(APINT_TYPE_PREFIX, 22375) +HANDLE_BAT(APINT_TYPE_PREFIX, 22376) +HANDLE_BAT(APINT_TYPE_PREFIX, 22377) +HANDLE_BAT(APINT_TYPE_PREFIX, 22378) +HANDLE_BAT(APINT_TYPE_PREFIX, 22379) +HANDLE_BAT(APINT_TYPE_PREFIX, 22380) +HANDLE_BAT(APINT_TYPE_PREFIX, 22381) +HANDLE_BAT(APINT_TYPE_PREFIX, 22382) +HANDLE_BAT(APINT_TYPE_PREFIX, 22383) +HANDLE_BAT(APINT_TYPE_PREFIX, 22384) +HANDLE_BAT(APINT_TYPE_PREFIX, 22385) +HANDLE_BAT(APINT_TYPE_PREFIX, 22386) +HANDLE_BAT(APINT_TYPE_PREFIX, 22387) +HANDLE_BAT(APINT_TYPE_PREFIX, 22388) +HANDLE_BAT(APINT_TYPE_PREFIX, 22389) +HANDLE_BAT(APINT_TYPE_PREFIX, 22390) +HANDLE_BAT(APINT_TYPE_PREFIX, 22391) +HANDLE_BAT(APINT_TYPE_PREFIX, 22392) +HANDLE_BAT(APINT_TYPE_PREFIX, 22393) +HANDLE_BAT(APINT_TYPE_PREFIX, 22394) +HANDLE_BAT(APINT_TYPE_PREFIX, 22395) +HANDLE_BAT(APINT_TYPE_PREFIX, 22396) +HANDLE_BAT(APINT_TYPE_PREFIX, 22397) +HANDLE_BAT(APINT_TYPE_PREFIX, 22398) +HANDLE_BAT(APINT_TYPE_PREFIX, 22399) +HANDLE_BAT(APINT_TYPE_PREFIX, 22400) +HANDLE_BAT(APINT_TYPE_PREFIX, 22401) +HANDLE_BAT(APINT_TYPE_PREFIX, 22402) +HANDLE_BAT(APINT_TYPE_PREFIX, 22403) +HANDLE_BAT(APINT_TYPE_PREFIX, 22404) +HANDLE_BAT(APINT_TYPE_PREFIX, 22405) +HANDLE_BAT(APINT_TYPE_PREFIX, 22406) +HANDLE_BAT(APINT_TYPE_PREFIX, 22407) +HANDLE_BAT(APINT_TYPE_PREFIX, 22408) +HANDLE_BAT(APINT_TYPE_PREFIX, 22409) +HANDLE_BAT(APINT_TYPE_PREFIX, 22410) +HANDLE_BAT(APINT_TYPE_PREFIX, 22411) +HANDLE_BAT(APINT_TYPE_PREFIX, 22412) +HANDLE_BAT(APINT_TYPE_PREFIX, 22413) +HANDLE_BAT(APINT_TYPE_PREFIX, 22414) +HANDLE_BAT(APINT_TYPE_PREFIX, 22415) +HANDLE_BAT(APINT_TYPE_PREFIX, 22416) +HANDLE_BAT(APINT_TYPE_PREFIX, 22417) +HANDLE_BAT(APINT_TYPE_PREFIX, 22418) +HANDLE_BAT(APINT_TYPE_PREFIX, 22419) +HANDLE_BAT(APINT_TYPE_PREFIX, 22420) +HANDLE_BAT(APINT_TYPE_PREFIX, 22421) +HANDLE_BAT(APINT_TYPE_PREFIX, 22422) +HANDLE_BAT(APINT_TYPE_PREFIX, 22423) +HANDLE_BAT(APINT_TYPE_PREFIX, 22424) +HANDLE_BAT(APINT_TYPE_PREFIX, 22425) +HANDLE_BAT(APINT_TYPE_PREFIX, 22426) +HANDLE_BAT(APINT_TYPE_PREFIX, 22427) +HANDLE_BAT(APINT_TYPE_PREFIX, 22428) +HANDLE_BAT(APINT_TYPE_PREFIX, 22429) +HANDLE_BAT(APINT_TYPE_PREFIX, 22430) +HANDLE_BAT(APINT_TYPE_PREFIX, 22431) +HANDLE_BAT(APINT_TYPE_PREFIX, 22432) +HANDLE_BAT(APINT_TYPE_PREFIX, 22433) +HANDLE_BAT(APINT_TYPE_PREFIX, 22434) +HANDLE_BAT(APINT_TYPE_PREFIX, 22435) +HANDLE_BAT(APINT_TYPE_PREFIX, 22436) +HANDLE_BAT(APINT_TYPE_PREFIX, 22437) +HANDLE_BAT(APINT_TYPE_PREFIX, 22438) +HANDLE_BAT(APINT_TYPE_PREFIX, 22439) +HANDLE_BAT(APINT_TYPE_PREFIX, 22440) +HANDLE_BAT(APINT_TYPE_PREFIX, 22441) +HANDLE_BAT(APINT_TYPE_PREFIX, 22442) +HANDLE_BAT(APINT_TYPE_PREFIX, 22443) +HANDLE_BAT(APINT_TYPE_PREFIX, 22444) +HANDLE_BAT(APINT_TYPE_PREFIX, 22445) +HANDLE_BAT(APINT_TYPE_PREFIX, 22446) +HANDLE_BAT(APINT_TYPE_PREFIX, 22447) +HANDLE_BAT(APINT_TYPE_PREFIX, 22448) +HANDLE_BAT(APINT_TYPE_PREFIX, 22449) +HANDLE_BAT(APINT_TYPE_PREFIX, 22450) +HANDLE_BAT(APINT_TYPE_PREFIX, 22451) +HANDLE_BAT(APINT_TYPE_PREFIX, 22452) +HANDLE_BAT(APINT_TYPE_PREFIX, 22453) +HANDLE_BAT(APINT_TYPE_PREFIX, 22454) +HANDLE_BAT(APINT_TYPE_PREFIX, 22455) +HANDLE_BAT(APINT_TYPE_PREFIX, 22456) +HANDLE_BAT(APINT_TYPE_PREFIX, 22457) +HANDLE_BAT(APINT_TYPE_PREFIX, 22458) +HANDLE_BAT(APINT_TYPE_PREFIX, 22459) +HANDLE_BAT(APINT_TYPE_PREFIX, 22460) +HANDLE_BAT(APINT_TYPE_PREFIX, 22461) +HANDLE_BAT(APINT_TYPE_PREFIX, 22462) +HANDLE_BAT(APINT_TYPE_PREFIX, 22463) +HANDLE_BAT(APINT_TYPE_PREFIX, 22464) +HANDLE_BAT(APINT_TYPE_PREFIX, 22465) +HANDLE_BAT(APINT_TYPE_PREFIX, 22466) +HANDLE_BAT(APINT_TYPE_PREFIX, 22467) +HANDLE_BAT(APINT_TYPE_PREFIX, 22468) +HANDLE_BAT(APINT_TYPE_PREFIX, 22469) +HANDLE_BAT(APINT_TYPE_PREFIX, 22470) +HANDLE_BAT(APINT_TYPE_PREFIX, 22471) +HANDLE_BAT(APINT_TYPE_PREFIX, 22472) +HANDLE_BAT(APINT_TYPE_PREFIX, 22473) +HANDLE_BAT(APINT_TYPE_PREFIX, 22474) +HANDLE_BAT(APINT_TYPE_PREFIX, 22475) +HANDLE_BAT(APINT_TYPE_PREFIX, 22476) +HANDLE_BAT(APINT_TYPE_PREFIX, 22477) +HANDLE_BAT(APINT_TYPE_PREFIX, 22478) +HANDLE_BAT(APINT_TYPE_PREFIX, 22479) +HANDLE_BAT(APINT_TYPE_PREFIX, 22480) +HANDLE_BAT(APINT_TYPE_PREFIX, 22481) +HANDLE_BAT(APINT_TYPE_PREFIX, 22482) +HANDLE_BAT(APINT_TYPE_PREFIX, 22483) +HANDLE_BAT(APINT_TYPE_PREFIX, 22484) +HANDLE_BAT(APINT_TYPE_PREFIX, 22485) +HANDLE_BAT(APINT_TYPE_PREFIX, 22486) +HANDLE_BAT(APINT_TYPE_PREFIX, 22487) +HANDLE_BAT(APINT_TYPE_PREFIX, 22488) +HANDLE_BAT(APINT_TYPE_PREFIX, 22489) +HANDLE_BAT(APINT_TYPE_PREFIX, 22490) +HANDLE_BAT(APINT_TYPE_PREFIX, 22491) +HANDLE_BAT(APINT_TYPE_PREFIX, 22492) +HANDLE_BAT(APINT_TYPE_PREFIX, 22493) +HANDLE_BAT(APINT_TYPE_PREFIX, 22494) +HANDLE_BAT(APINT_TYPE_PREFIX, 22495) +HANDLE_BAT(APINT_TYPE_PREFIX, 22496) +HANDLE_BAT(APINT_TYPE_PREFIX, 22497) +HANDLE_BAT(APINT_TYPE_PREFIX, 22498) +HANDLE_BAT(APINT_TYPE_PREFIX, 22499) +HANDLE_BAT(APINT_TYPE_PREFIX, 22500) +HANDLE_BAT(APINT_TYPE_PREFIX, 22501) +HANDLE_BAT(APINT_TYPE_PREFIX, 22502) +HANDLE_BAT(APINT_TYPE_PREFIX, 22503) +HANDLE_BAT(APINT_TYPE_PREFIX, 22504) +HANDLE_BAT(APINT_TYPE_PREFIX, 22505) +HANDLE_BAT(APINT_TYPE_PREFIX, 22506) +HANDLE_BAT(APINT_TYPE_PREFIX, 22507) +HANDLE_BAT(APINT_TYPE_PREFIX, 22508) +HANDLE_BAT(APINT_TYPE_PREFIX, 22509) +HANDLE_BAT(APINT_TYPE_PREFIX, 22510) +HANDLE_BAT(APINT_TYPE_PREFIX, 22511) +HANDLE_BAT(APINT_TYPE_PREFIX, 22512) +HANDLE_BAT(APINT_TYPE_PREFIX, 22513) +HANDLE_BAT(APINT_TYPE_PREFIX, 22514) +HANDLE_BAT(APINT_TYPE_PREFIX, 22515) +HANDLE_BAT(APINT_TYPE_PREFIX, 22516) +HANDLE_BAT(APINT_TYPE_PREFIX, 22517) +HANDLE_BAT(APINT_TYPE_PREFIX, 22518) +HANDLE_BAT(APINT_TYPE_PREFIX, 22519) +HANDLE_BAT(APINT_TYPE_PREFIX, 22520) +HANDLE_BAT(APINT_TYPE_PREFIX, 22521) +HANDLE_BAT(APINT_TYPE_PREFIX, 22522) +HANDLE_BAT(APINT_TYPE_PREFIX, 22523) +HANDLE_BAT(APINT_TYPE_PREFIX, 22524) +HANDLE_BAT(APINT_TYPE_PREFIX, 22525) +HANDLE_BAT(APINT_TYPE_PREFIX, 22526) +HANDLE_BAT(APINT_TYPE_PREFIX, 22527) +HANDLE_BAT(APINT_TYPE_PREFIX, 22528) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 22 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 22529) +HANDLE_BAT(, 22530) +HANDLE_BAT(, 22531) +HANDLE_BAT(, 22532) +HANDLE_BAT(, 22533) +HANDLE_BAT(, 22534) +HANDLE_BAT(, 22535) +HANDLE_BAT(, 22536) +HANDLE_BAT(, 22537) +HANDLE_BAT(, 22538) +HANDLE_BAT(, 22539) +HANDLE_BAT(, 22540) +HANDLE_BAT(, 22541) +HANDLE_BAT(, 22542) +HANDLE_BAT(, 22543) +HANDLE_BAT(, 22544) +HANDLE_BAT(, 22545) +HANDLE_BAT(, 22546) +HANDLE_BAT(, 22547) +HANDLE_BAT(, 22548) +HANDLE_BAT(, 22549) +HANDLE_BAT(, 22550) +HANDLE_BAT(, 22551) +HANDLE_BAT(, 22552) +HANDLE_BAT(, 22553) +HANDLE_BAT(, 22554) +HANDLE_BAT(, 22555) +HANDLE_BAT(, 22556) +HANDLE_BAT(, 22557) +HANDLE_BAT(, 22558) +HANDLE_BAT(, 22559) +HANDLE_BAT(, 22560) +HANDLE_BAT(, 22561) +HANDLE_BAT(, 22562) +HANDLE_BAT(, 22563) +HANDLE_BAT(, 22564) +HANDLE_BAT(, 22565) +HANDLE_BAT(, 22566) +HANDLE_BAT(, 22567) +HANDLE_BAT(, 22568) +HANDLE_BAT(, 22569) +HANDLE_BAT(, 22570) +HANDLE_BAT(, 22571) +HANDLE_BAT(, 22572) +HANDLE_BAT(, 22573) +HANDLE_BAT(, 22574) +HANDLE_BAT(, 22575) +HANDLE_BAT(, 22576) +HANDLE_BAT(, 22577) +HANDLE_BAT(, 22578) +HANDLE_BAT(, 22579) +HANDLE_BAT(, 22580) +HANDLE_BAT(, 22581) +HANDLE_BAT(, 22582) +HANDLE_BAT(, 22583) +HANDLE_BAT(, 22584) +HANDLE_BAT(, 22585) +HANDLE_BAT(, 22586) +HANDLE_BAT(, 22587) +HANDLE_BAT(, 22588) +HANDLE_BAT(, 22589) +HANDLE_BAT(, 22590) +HANDLE_BAT(, 22591) +HANDLE_BAT(, 22592) +HANDLE_BAT(, 22593) +HANDLE_BAT(, 22594) +HANDLE_BAT(, 22595) +HANDLE_BAT(, 22596) +HANDLE_BAT(, 22597) +HANDLE_BAT(, 22598) +HANDLE_BAT(, 22599) +HANDLE_BAT(, 22600) +HANDLE_BAT(, 22601) +HANDLE_BAT(, 22602) +HANDLE_BAT(, 22603) +HANDLE_BAT(, 22604) +HANDLE_BAT(, 22605) +HANDLE_BAT(, 22606) +HANDLE_BAT(, 22607) +HANDLE_BAT(, 22608) +HANDLE_BAT(, 22609) +HANDLE_BAT(, 22610) +HANDLE_BAT(, 22611) +HANDLE_BAT(, 22612) +HANDLE_BAT(, 22613) +HANDLE_BAT(, 22614) +HANDLE_BAT(, 22615) +HANDLE_BAT(, 22616) +HANDLE_BAT(, 22617) +HANDLE_BAT(, 22618) +HANDLE_BAT(, 22619) +HANDLE_BAT(, 22620) +HANDLE_BAT(, 22621) +HANDLE_BAT(, 22622) +HANDLE_BAT(, 22623) +HANDLE_BAT(, 22624) +HANDLE_BAT(, 22625) +HANDLE_BAT(, 22626) +HANDLE_BAT(, 22627) +HANDLE_BAT(, 22628) +HANDLE_BAT(, 22629) +HANDLE_BAT(, 22630) +HANDLE_BAT(, 22631) +HANDLE_BAT(, 22632) +HANDLE_BAT(, 22633) +HANDLE_BAT(, 22634) +HANDLE_BAT(, 22635) +HANDLE_BAT(, 22636) +HANDLE_BAT(, 22637) +HANDLE_BAT(, 22638) +HANDLE_BAT(, 22639) +HANDLE_BAT(, 22640) +HANDLE_BAT(, 22641) +HANDLE_BAT(, 22642) +HANDLE_BAT(, 22643) +HANDLE_BAT(, 22644) +HANDLE_BAT(, 22645) +HANDLE_BAT(, 22646) +HANDLE_BAT(, 22647) +HANDLE_BAT(, 22648) +HANDLE_BAT(, 22649) +HANDLE_BAT(, 22650) +HANDLE_BAT(, 22651) +HANDLE_BAT(, 22652) +HANDLE_BAT(, 22653) +HANDLE_BAT(, 22654) +HANDLE_BAT(, 22655) +HANDLE_BAT(, 22656) +HANDLE_BAT(, 22657) +HANDLE_BAT(, 22658) +HANDLE_BAT(, 22659) +HANDLE_BAT(, 22660) +HANDLE_BAT(, 22661) +HANDLE_BAT(, 22662) +HANDLE_BAT(, 22663) +HANDLE_BAT(, 22664) +HANDLE_BAT(, 22665) +HANDLE_BAT(, 22666) +HANDLE_BAT(, 22667) +HANDLE_BAT(, 22668) +HANDLE_BAT(, 22669) +HANDLE_BAT(, 22670) +HANDLE_BAT(, 22671) +HANDLE_BAT(, 22672) +HANDLE_BAT(, 22673) +HANDLE_BAT(, 22674) +HANDLE_BAT(, 22675) +HANDLE_BAT(, 22676) +HANDLE_BAT(, 22677) +HANDLE_BAT(, 22678) +HANDLE_BAT(, 22679) +HANDLE_BAT(, 22680) +HANDLE_BAT(, 22681) +HANDLE_BAT(, 22682) +HANDLE_BAT(, 22683) +HANDLE_BAT(, 22684) +HANDLE_BAT(, 22685) +HANDLE_BAT(, 22686) +HANDLE_BAT(, 22687) +HANDLE_BAT(, 22688) +HANDLE_BAT(, 22689) +HANDLE_BAT(, 22690) +HANDLE_BAT(, 22691) +HANDLE_BAT(, 22692) +HANDLE_BAT(, 22693) +HANDLE_BAT(, 22694) +HANDLE_BAT(, 22695) +HANDLE_BAT(, 22696) +HANDLE_BAT(, 22697) +HANDLE_BAT(, 22698) +HANDLE_BAT(, 22699) +HANDLE_BAT(, 22700) +HANDLE_BAT(, 22701) +HANDLE_BAT(, 22702) +HANDLE_BAT(, 22703) +HANDLE_BAT(, 22704) +HANDLE_BAT(, 22705) +HANDLE_BAT(, 22706) +HANDLE_BAT(, 22707) +HANDLE_BAT(, 22708) +HANDLE_BAT(, 22709) +HANDLE_BAT(, 22710) +HANDLE_BAT(, 22711) +HANDLE_BAT(, 22712) +HANDLE_BAT(, 22713) +HANDLE_BAT(, 22714) +HANDLE_BAT(, 22715) +HANDLE_BAT(, 22716) +HANDLE_BAT(, 22717) +HANDLE_BAT(, 22718) +HANDLE_BAT(, 22719) +HANDLE_BAT(, 22720) +HANDLE_BAT(, 22721) +HANDLE_BAT(, 22722) +HANDLE_BAT(, 22723) +HANDLE_BAT(, 22724) +HANDLE_BAT(, 22725) +HANDLE_BAT(, 22726) +HANDLE_BAT(, 22727) +HANDLE_BAT(, 22728) +HANDLE_BAT(, 22729) +HANDLE_BAT(, 22730) +HANDLE_BAT(, 22731) +HANDLE_BAT(, 22732) +HANDLE_BAT(, 22733) +HANDLE_BAT(, 22734) +HANDLE_BAT(, 22735) +HANDLE_BAT(, 22736) +HANDLE_BAT(, 22737) +HANDLE_BAT(, 22738) +HANDLE_BAT(, 22739) +HANDLE_BAT(, 22740) +HANDLE_BAT(, 22741) +HANDLE_BAT(, 22742) +HANDLE_BAT(, 22743) +HANDLE_BAT(, 22744) +HANDLE_BAT(, 22745) +HANDLE_BAT(, 22746) +HANDLE_BAT(, 22747) +HANDLE_BAT(, 22748) +HANDLE_BAT(, 22749) +HANDLE_BAT(, 22750) +HANDLE_BAT(, 22751) +HANDLE_BAT(, 22752) +HANDLE_BAT(, 22753) +HANDLE_BAT(, 22754) +HANDLE_BAT(, 22755) +HANDLE_BAT(, 22756) +HANDLE_BAT(, 22757) +HANDLE_BAT(, 22758) +HANDLE_BAT(, 22759) +HANDLE_BAT(, 22760) +HANDLE_BAT(, 22761) +HANDLE_BAT(, 22762) +HANDLE_BAT(, 22763) +HANDLE_BAT(, 22764) +HANDLE_BAT(, 22765) +HANDLE_BAT(, 22766) +HANDLE_BAT(, 22767) +HANDLE_BAT(, 22768) +HANDLE_BAT(, 22769) +HANDLE_BAT(, 22770) +HANDLE_BAT(, 22771) +HANDLE_BAT(, 22772) +HANDLE_BAT(, 22773) +HANDLE_BAT(, 22774) +HANDLE_BAT(, 22775) +HANDLE_BAT(, 22776) +HANDLE_BAT(, 22777) +HANDLE_BAT(, 22778) +HANDLE_BAT(, 22779) +HANDLE_BAT(, 22780) +HANDLE_BAT(, 22781) +HANDLE_BAT(, 22782) +HANDLE_BAT(, 22783) +HANDLE_BAT(, 22784) +HANDLE_BAT(, 22785) +HANDLE_BAT(, 22786) +HANDLE_BAT(, 22787) +HANDLE_BAT(, 22788) +HANDLE_BAT(, 22789) +HANDLE_BAT(, 22790) +HANDLE_BAT(, 22791) +HANDLE_BAT(, 22792) +HANDLE_BAT(, 22793) +HANDLE_BAT(, 22794) +HANDLE_BAT(, 22795) +HANDLE_BAT(, 22796) +HANDLE_BAT(, 22797) +HANDLE_BAT(, 22798) +HANDLE_BAT(, 22799) +HANDLE_BAT(, 22800) +HANDLE_BAT(, 22801) +HANDLE_BAT(, 22802) +HANDLE_BAT(, 22803) +HANDLE_BAT(, 22804) +HANDLE_BAT(, 22805) +HANDLE_BAT(, 22806) +HANDLE_BAT(, 22807) +HANDLE_BAT(, 22808) +HANDLE_BAT(, 22809) +HANDLE_BAT(, 22810) +HANDLE_BAT(, 22811) +HANDLE_BAT(, 22812) +HANDLE_BAT(, 22813) +HANDLE_BAT(, 22814) +HANDLE_BAT(, 22815) +HANDLE_BAT(, 22816) +HANDLE_BAT(, 22817) +HANDLE_BAT(, 22818) +HANDLE_BAT(, 22819) +HANDLE_BAT(, 22820) +HANDLE_BAT(, 22821) +HANDLE_BAT(, 22822) +HANDLE_BAT(, 22823) +HANDLE_BAT(, 22824) +HANDLE_BAT(, 22825) +HANDLE_BAT(, 22826) +HANDLE_BAT(, 22827) +HANDLE_BAT(, 22828) +HANDLE_BAT(, 22829) +HANDLE_BAT(, 22830) +HANDLE_BAT(, 22831) +HANDLE_BAT(, 22832) +HANDLE_BAT(, 22833) +HANDLE_BAT(, 22834) +HANDLE_BAT(, 22835) +HANDLE_BAT(, 22836) +HANDLE_BAT(, 22837) +HANDLE_BAT(, 22838) +HANDLE_BAT(, 22839) +HANDLE_BAT(, 22840) +HANDLE_BAT(, 22841) +HANDLE_BAT(, 22842) +HANDLE_BAT(, 22843) +HANDLE_BAT(, 22844) +HANDLE_BAT(, 22845) +HANDLE_BAT(, 22846) +HANDLE_BAT(, 22847) +HANDLE_BAT(, 22848) +HANDLE_BAT(, 22849) +HANDLE_BAT(, 22850) +HANDLE_BAT(, 22851) +HANDLE_BAT(, 22852) +HANDLE_BAT(, 22853) +HANDLE_BAT(, 22854) +HANDLE_BAT(, 22855) +HANDLE_BAT(, 22856) +HANDLE_BAT(, 22857) +HANDLE_BAT(, 22858) +HANDLE_BAT(, 22859) +HANDLE_BAT(, 22860) +HANDLE_BAT(, 22861) +HANDLE_BAT(, 22862) +HANDLE_BAT(, 22863) +HANDLE_BAT(, 22864) +HANDLE_BAT(, 22865) +HANDLE_BAT(, 22866) +HANDLE_BAT(, 22867) +HANDLE_BAT(, 22868) +HANDLE_BAT(, 22869) +HANDLE_BAT(, 22870) +HANDLE_BAT(, 22871) +HANDLE_BAT(, 22872) +HANDLE_BAT(, 22873) +HANDLE_BAT(, 22874) +HANDLE_BAT(, 22875) +HANDLE_BAT(, 22876) +HANDLE_BAT(, 22877) +HANDLE_BAT(, 22878) +HANDLE_BAT(, 22879) +HANDLE_BAT(, 22880) +HANDLE_BAT(, 22881) +HANDLE_BAT(, 22882) +HANDLE_BAT(, 22883) +HANDLE_BAT(, 22884) +HANDLE_BAT(, 22885) +HANDLE_BAT(, 22886) +HANDLE_BAT(, 22887) +HANDLE_BAT(, 22888) +HANDLE_BAT(, 22889) +HANDLE_BAT(, 22890) +HANDLE_BAT(, 22891) +HANDLE_BAT(, 22892) +HANDLE_BAT(, 22893) +HANDLE_BAT(, 22894) +HANDLE_BAT(, 22895) +HANDLE_BAT(, 22896) +HANDLE_BAT(, 22897) +HANDLE_BAT(, 22898) +HANDLE_BAT(, 22899) +HANDLE_BAT(, 22900) +HANDLE_BAT(, 22901) +HANDLE_BAT(, 22902) +HANDLE_BAT(, 22903) +HANDLE_BAT(, 22904) +HANDLE_BAT(, 22905) +HANDLE_BAT(, 22906) +HANDLE_BAT(, 22907) +HANDLE_BAT(, 22908) +HANDLE_BAT(, 22909) +HANDLE_BAT(, 22910) +HANDLE_BAT(, 22911) +HANDLE_BAT(, 22912) +HANDLE_BAT(, 22913) +HANDLE_BAT(, 22914) +HANDLE_BAT(, 22915) +HANDLE_BAT(, 22916) +HANDLE_BAT(, 22917) +HANDLE_BAT(, 22918) +HANDLE_BAT(, 22919) +HANDLE_BAT(, 22920) +HANDLE_BAT(, 22921) +HANDLE_BAT(, 22922) +HANDLE_BAT(, 22923) +HANDLE_BAT(, 22924) +HANDLE_BAT(, 22925) +HANDLE_BAT(, 22926) +HANDLE_BAT(, 22927) +HANDLE_BAT(, 22928) +HANDLE_BAT(, 22929) +HANDLE_BAT(, 22930) +HANDLE_BAT(, 22931) +HANDLE_BAT(, 22932) +HANDLE_BAT(, 22933) +HANDLE_BAT(, 22934) +HANDLE_BAT(, 22935) +HANDLE_BAT(, 22936) +HANDLE_BAT(, 22937) +HANDLE_BAT(, 22938) +HANDLE_BAT(, 22939) +HANDLE_BAT(, 22940) +HANDLE_BAT(, 22941) +HANDLE_BAT(, 22942) +HANDLE_BAT(, 22943) +HANDLE_BAT(, 22944) +HANDLE_BAT(, 22945) +HANDLE_BAT(, 22946) +HANDLE_BAT(, 22947) +HANDLE_BAT(, 22948) +HANDLE_BAT(, 22949) +HANDLE_BAT(, 22950) +HANDLE_BAT(, 22951) +HANDLE_BAT(, 22952) +HANDLE_BAT(, 22953) +HANDLE_BAT(, 22954) +HANDLE_BAT(, 22955) +HANDLE_BAT(, 22956) +HANDLE_BAT(, 22957) +HANDLE_BAT(, 22958) +HANDLE_BAT(, 22959) +HANDLE_BAT(, 22960) +HANDLE_BAT(, 22961) +HANDLE_BAT(, 22962) +HANDLE_BAT(, 22963) +HANDLE_BAT(, 22964) +HANDLE_BAT(, 22965) +HANDLE_BAT(, 22966) +HANDLE_BAT(, 22967) +HANDLE_BAT(, 22968) +HANDLE_BAT(, 22969) +HANDLE_BAT(, 22970) +HANDLE_BAT(, 22971) +HANDLE_BAT(, 22972) +HANDLE_BAT(, 22973) +HANDLE_BAT(, 22974) +HANDLE_BAT(, 22975) +HANDLE_BAT(, 22976) +HANDLE_BAT(, 22977) +HANDLE_BAT(, 22978) +HANDLE_BAT(, 22979) +HANDLE_BAT(, 22980) +HANDLE_BAT(, 22981) +HANDLE_BAT(, 22982) +HANDLE_BAT(, 22983) +HANDLE_BAT(, 22984) +HANDLE_BAT(, 22985) +HANDLE_BAT(, 22986) +HANDLE_BAT(, 22987) +HANDLE_BAT(, 22988) +HANDLE_BAT(, 22989) +HANDLE_BAT(, 22990) +HANDLE_BAT(, 22991) +HANDLE_BAT(, 22992) +HANDLE_BAT(, 22993) +HANDLE_BAT(, 22994) +HANDLE_BAT(, 22995) +HANDLE_BAT(, 22996) +HANDLE_BAT(, 22997) +HANDLE_BAT(, 22998) +HANDLE_BAT(, 22999) +HANDLE_BAT(, 23000) +HANDLE_BAT(, 23001) +HANDLE_BAT(, 23002) +HANDLE_BAT(, 23003) +HANDLE_BAT(, 23004) +HANDLE_BAT(, 23005) +HANDLE_BAT(, 23006) +HANDLE_BAT(, 23007) +HANDLE_BAT(, 23008) +HANDLE_BAT(, 23009) +HANDLE_BAT(, 23010) +HANDLE_BAT(, 23011) +HANDLE_BAT(, 23012) +HANDLE_BAT(, 23013) +HANDLE_BAT(, 23014) +HANDLE_BAT(, 23015) +HANDLE_BAT(, 23016) +HANDLE_BAT(, 23017) +HANDLE_BAT(, 23018) +HANDLE_BAT(, 23019) +HANDLE_BAT(, 23020) +HANDLE_BAT(, 23021) +HANDLE_BAT(, 23022) +HANDLE_BAT(, 23023) +HANDLE_BAT(, 23024) +HANDLE_BAT(, 23025) +HANDLE_BAT(, 23026) +HANDLE_BAT(, 23027) +HANDLE_BAT(, 23028) +HANDLE_BAT(, 23029) +HANDLE_BAT(, 23030) +HANDLE_BAT(, 23031) +HANDLE_BAT(, 23032) +HANDLE_BAT(, 23033) +HANDLE_BAT(, 23034) +HANDLE_BAT(, 23035) +HANDLE_BAT(, 23036) +HANDLE_BAT(, 23037) +HANDLE_BAT(, 23038) +HANDLE_BAT(, 23039) +HANDLE_BAT(, 23040) +HANDLE_BAT(, 23041) +HANDLE_BAT(, 23042) +HANDLE_BAT(, 23043) +HANDLE_BAT(, 23044) +HANDLE_BAT(, 23045) +HANDLE_BAT(, 23046) +HANDLE_BAT(, 23047) +HANDLE_BAT(, 23048) +HANDLE_BAT(, 23049) +HANDLE_BAT(, 23050) +HANDLE_BAT(, 23051) +HANDLE_BAT(, 23052) +HANDLE_BAT(, 23053) +HANDLE_BAT(, 23054) +HANDLE_BAT(, 23055) +HANDLE_BAT(, 23056) +HANDLE_BAT(, 23057) +HANDLE_BAT(, 23058) +HANDLE_BAT(, 23059) +HANDLE_BAT(, 23060) +HANDLE_BAT(, 23061) +HANDLE_BAT(, 23062) +HANDLE_BAT(, 23063) +HANDLE_BAT(, 23064) +HANDLE_BAT(, 23065) +HANDLE_BAT(, 23066) +HANDLE_BAT(, 23067) +HANDLE_BAT(, 23068) +HANDLE_BAT(, 23069) +HANDLE_BAT(, 23070) +HANDLE_BAT(, 23071) +HANDLE_BAT(, 23072) +HANDLE_BAT(, 23073) +HANDLE_BAT(, 23074) +HANDLE_BAT(, 23075) +HANDLE_BAT(, 23076) +HANDLE_BAT(, 23077) +HANDLE_BAT(, 23078) +HANDLE_BAT(, 23079) +HANDLE_BAT(, 23080) +HANDLE_BAT(, 23081) +HANDLE_BAT(, 23082) +HANDLE_BAT(, 23083) +HANDLE_BAT(, 23084) +HANDLE_BAT(, 23085) +HANDLE_BAT(, 23086) +HANDLE_BAT(, 23087) +HANDLE_BAT(, 23088) +HANDLE_BAT(, 23089) +HANDLE_BAT(, 23090) +HANDLE_BAT(, 23091) +HANDLE_BAT(, 23092) +HANDLE_BAT(, 23093) +HANDLE_BAT(, 23094) +HANDLE_BAT(, 23095) +HANDLE_BAT(, 23096) +HANDLE_BAT(, 23097) +HANDLE_BAT(, 23098) +HANDLE_BAT(, 23099) +HANDLE_BAT(, 23100) +HANDLE_BAT(, 23101) +HANDLE_BAT(, 23102) +HANDLE_BAT(, 23103) +HANDLE_BAT(, 23104) +HANDLE_BAT(, 23105) +HANDLE_BAT(, 23106) +HANDLE_BAT(, 23107) +HANDLE_BAT(, 23108) +HANDLE_BAT(, 23109) +HANDLE_BAT(, 23110) +HANDLE_BAT(, 23111) +HANDLE_BAT(, 23112) +HANDLE_BAT(, 23113) +HANDLE_BAT(, 23114) +HANDLE_BAT(, 23115) +HANDLE_BAT(, 23116) +HANDLE_BAT(, 23117) +HANDLE_BAT(, 23118) +HANDLE_BAT(, 23119) +HANDLE_BAT(, 23120) +HANDLE_BAT(, 23121) +HANDLE_BAT(, 23122) +HANDLE_BAT(, 23123) +HANDLE_BAT(, 23124) +HANDLE_BAT(, 23125) +HANDLE_BAT(, 23126) +HANDLE_BAT(, 23127) +HANDLE_BAT(, 23128) +HANDLE_BAT(, 23129) +HANDLE_BAT(, 23130) +HANDLE_BAT(, 23131) +HANDLE_BAT(, 23132) +HANDLE_BAT(, 23133) +HANDLE_BAT(, 23134) +HANDLE_BAT(, 23135) +HANDLE_BAT(, 23136) +HANDLE_BAT(, 23137) +HANDLE_BAT(, 23138) +HANDLE_BAT(, 23139) +HANDLE_BAT(, 23140) +HANDLE_BAT(, 23141) +HANDLE_BAT(, 23142) +HANDLE_BAT(, 23143) +HANDLE_BAT(, 23144) +HANDLE_BAT(, 23145) +HANDLE_BAT(, 23146) +HANDLE_BAT(, 23147) +HANDLE_BAT(, 23148) +HANDLE_BAT(, 23149) +HANDLE_BAT(, 23150) +HANDLE_BAT(, 23151) +HANDLE_BAT(, 23152) +HANDLE_BAT(, 23153) +HANDLE_BAT(, 23154) +HANDLE_BAT(, 23155) +HANDLE_BAT(, 23156) +HANDLE_BAT(, 23157) +HANDLE_BAT(, 23158) +HANDLE_BAT(, 23159) +HANDLE_BAT(, 23160) +HANDLE_BAT(, 23161) +HANDLE_BAT(, 23162) +HANDLE_BAT(, 23163) +HANDLE_BAT(, 23164) +HANDLE_BAT(, 23165) +HANDLE_BAT(, 23166) +HANDLE_BAT(, 23167) +HANDLE_BAT(, 23168) +HANDLE_BAT(, 23169) +HANDLE_BAT(, 23170) +HANDLE_BAT(, 23171) +HANDLE_BAT(, 23172) +HANDLE_BAT(, 23173) +HANDLE_BAT(, 23174) +HANDLE_BAT(, 23175) +HANDLE_BAT(, 23176) +HANDLE_BAT(, 23177) +HANDLE_BAT(, 23178) +HANDLE_BAT(, 23179) +HANDLE_BAT(, 23180) +HANDLE_BAT(, 23181) +HANDLE_BAT(, 23182) +HANDLE_BAT(, 23183) +HANDLE_BAT(, 23184) +HANDLE_BAT(, 23185) +HANDLE_BAT(, 23186) +HANDLE_BAT(, 23187) +HANDLE_BAT(, 23188) +HANDLE_BAT(, 23189) +HANDLE_BAT(, 23190) +HANDLE_BAT(, 23191) +HANDLE_BAT(, 23192) +HANDLE_BAT(, 23193) +HANDLE_BAT(, 23194) +HANDLE_BAT(, 23195) +HANDLE_BAT(, 23196) +HANDLE_BAT(, 23197) +HANDLE_BAT(, 23198) +HANDLE_BAT(, 23199) +HANDLE_BAT(, 23200) +HANDLE_BAT(, 23201) +HANDLE_BAT(, 23202) +HANDLE_BAT(, 23203) +HANDLE_BAT(, 23204) +HANDLE_BAT(, 23205) +HANDLE_BAT(, 23206) +HANDLE_BAT(, 23207) +HANDLE_BAT(, 23208) +HANDLE_BAT(, 23209) +HANDLE_BAT(, 23210) +HANDLE_BAT(, 23211) +HANDLE_BAT(, 23212) +HANDLE_BAT(, 23213) +HANDLE_BAT(, 23214) +HANDLE_BAT(, 23215) +HANDLE_BAT(, 23216) +HANDLE_BAT(, 23217) +HANDLE_BAT(, 23218) +HANDLE_BAT(, 23219) +HANDLE_BAT(, 23220) +HANDLE_BAT(, 23221) +HANDLE_BAT(, 23222) +HANDLE_BAT(, 23223) +HANDLE_BAT(, 23224) +HANDLE_BAT(, 23225) +HANDLE_BAT(, 23226) +HANDLE_BAT(, 23227) +HANDLE_BAT(, 23228) +HANDLE_BAT(, 23229) +HANDLE_BAT(, 23230) +HANDLE_BAT(, 23231) +HANDLE_BAT(, 23232) +HANDLE_BAT(, 23233) +HANDLE_BAT(, 23234) +HANDLE_BAT(, 23235) +HANDLE_BAT(, 23236) +HANDLE_BAT(, 23237) +HANDLE_BAT(, 23238) +HANDLE_BAT(, 23239) +HANDLE_BAT(, 23240) +HANDLE_BAT(, 23241) +HANDLE_BAT(, 23242) +HANDLE_BAT(, 23243) +HANDLE_BAT(, 23244) +HANDLE_BAT(, 23245) +HANDLE_BAT(, 23246) +HANDLE_BAT(, 23247) +HANDLE_BAT(, 23248) +HANDLE_BAT(, 23249) +HANDLE_BAT(, 23250) +HANDLE_BAT(, 23251) +HANDLE_BAT(, 23252) +HANDLE_BAT(, 23253) +HANDLE_BAT(, 23254) +HANDLE_BAT(, 23255) +HANDLE_BAT(, 23256) +HANDLE_BAT(, 23257) +HANDLE_BAT(, 23258) +HANDLE_BAT(, 23259) +HANDLE_BAT(, 23260) +HANDLE_BAT(, 23261) +HANDLE_BAT(, 23262) +HANDLE_BAT(, 23263) +HANDLE_BAT(, 23264) +HANDLE_BAT(, 23265) +HANDLE_BAT(, 23266) +HANDLE_BAT(, 23267) +HANDLE_BAT(, 23268) +HANDLE_BAT(, 23269) +HANDLE_BAT(, 23270) +HANDLE_BAT(, 23271) +HANDLE_BAT(, 23272) +HANDLE_BAT(, 23273) +HANDLE_BAT(, 23274) +HANDLE_BAT(, 23275) +HANDLE_BAT(, 23276) +HANDLE_BAT(, 23277) +HANDLE_BAT(, 23278) +HANDLE_BAT(, 23279) +HANDLE_BAT(, 23280) +HANDLE_BAT(, 23281) +HANDLE_BAT(, 23282) +HANDLE_BAT(, 23283) +HANDLE_BAT(, 23284) +HANDLE_BAT(, 23285) +HANDLE_BAT(, 23286) +HANDLE_BAT(, 23287) +HANDLE_BAT(, 23288) +HANDLE_BAT(, 23289) +HANDLE_BAT(, 23290) +HANDLE_BAT(, 23291) +HANDLE_BAT(, 23292) +HANDLE_BAT(, 23293) +HANDLE_BAT(, 23294) +HANDLE_BAT(, 23295) +HANDLE_BAT(, 23296) +HANDLE_BAT(, 23297) +HANDLE_BAT(, 23298) +HANDLE_BAT(, 23299) +HANDLE_BAT(, 23300) +HANDLE_BAT(, 23301) +HANDLE_BAT(, 23302) +HANDLE_BAT(, 23303) +HANDLE_BAT(, 23304) +HANDLE_BAT(, 23305) +HANDLE_BAT(, 23306) +HANDLE_BAT(, 23307) +HANDLE_BAT(, 23308) +HANDLE_BAT(, 23309) +HANDLE_BAT(, 23310) +HANDLE_BAT(, 23311) +HANDLE_BAT(, 23312) +HANDLE_BAT(, 23313) +HANDLE_BAT(, 23314) +HANDLE_BAT(, 23315) +HANDLE_BAT(, 23316) +HANDLE_BAT(, 23317) +HANDLE_BAT(, 23318) +HANDLE_BAT(, 23319) +HANDLE_BAT(, 23320) +HANDLE_BAT(, 23321) +HANDLE_BAT(, 23322) +HANDLE_BAT(, 23323) +HANDLE_BAT(, 23324) +HANDLE_BAT(, 23325) +HANDLE_BAT(, 23326) +HANDLE_BAT(, 23327) +HANDLE_BAT(, 23328) +HANDLE_BAT(, 23329) +HANDLE_BAT(, 23330) +HANDLE_BAT(, 23331) +HANDLE_BAT(, 23332) +HANDLE_BAT(, 23333) +HANDLE_BAT(, 23334) +HANDLE_BAT(, 23335) +HANDLE_BAT(, 23336) +HANDLE_BAT(, 23337) +HANDLE_BAT(, 23338) +HANDLE_BAT(, 23339) +HANDLE_BAT(, 23340) +HANDLE_BAT(, 23341) +HANDLE_BAT(, 23342) +HANDLE_BAT(, 23343) +HANDLE_BAT(, 23344) +HANDLE_BAT(, 23345) +HANDLE_BAT(, 23346) +HANDLE_BAT(, 23347) +HANDLE_BAT(, 23348) +HANDLE_BAT(, 23349) +HANDLE_BAT(, 23350) +HANDLE_BAT(, 23351) +HANDLE_BAT(, 23352) +HANDLE_BAT(, 23353) +HANDLE_BAT(, 23354) +HANDLE_BAT(, 23355) +HANDLE_BAT(, 23356) +HANDLE_BAT(, 23357) +HANDLE_BAT(, 23358) +HANDLE_BAT(, 23359) +HANDLE_BAT(, 23360) +HANDLE_BAT(, 23361) +HANDLE_BAT(, 23362) +HANDLE_BAT(, 23363) +HANDLE_BAT(, 23364) +HANDLE_BAT(, 23365) +HANDLE_BAT(, 23366) +HANDLE_BAT(, 23367) +HANDLE_BAT(, 23368) +HANDLE_BAT(, 23369) +HANDLE_BAT(, 23370) +HANDLE_BAT(, 23371) +HANDLE_BAT(, 23372) +HANDLE_BAT(, 23373) +HANDLE_BAT(, 23374) +HANDLE_BAT(, 23375) +HANDLE_BAT(, 23376) +HANDLE_BAT(, 23377) +HANDLE_BAT(, 23378) +HANDLE_BAT(, 23379) +HANDLE_BAT(, 23380) +HANDLE_BAT(, 23381) +HANDLE_BAT(, 23382) +HANDLE_BAT(, 23383) +HANDLE_BAT(, 23384) +HANDLE_BAT(, 23385) +HANDLE_BAT(, 23386) +HANDLE_BAT(, 23387) +HANDLE_BAT(, 23388) +HANDLE_BAT(, 23389) +HANDLE_BAT(, 23390) +HANDLE_BAT(, 23391) +HANDLE_BAT(, 23392) +HANDLE_BAT(, 23393) +HANDLE_BAT(, 23394) +HANDLE_BAT(, 23395) +HANDLE_BAT(, 23396) +HANDLE_BAT(, 23397) +HANDLE_BAT(, 23398) +HANDLE_BAT(, 23399) +HANDLE_BAT(, 23400) +HANDLE_BAT(, 23401) +HANDLE_BAT(, 23402) +HANDLE_BAT(, 23403) +HANDLE_BAT(, 23404) +HANDLE_BAT(, 23405) +HANDLE_BAT(, 23406) +HANDLE_BAT(, 23407) +HANDLE_BAT(, 23408) +HANDLE_BAT(, 23409) +HANDLE_BAT(, 23410) +HANDLE_BAT(, 23411) +HANDLE_BAT(, 23412) +HANDLE_BAT(, 23413) +HANDLE_BAT(, 23414) +HANDLE_BAT(, 23415) +HANDLE_BAT(, 23416) +HANDLE_BAT(, 23417) +HANDLE_BAT(, 23418) +HANDLE_BAT(, 23419) +HANDLE_BAT(, 23420) +HANDLE_BAT(, 23421) +HANDLE_BAT(, 23422) +HANDLE_BAT(, 23423) +HANDLE_BAT(, 23424) +HANDLE_BAT(, 23425) +HANDLE_BAT(, 23426) +HANDLE_BAT(, 23427) +HANDLE_BAT(, 23428) +HANDLE_BAT(, 23429) +HANDLE_BAT(, 23430) +HANDLE_BAT(, 23431) +HANDLE_BAT(, 23432) +HANDLE_BAT(, 23433) +HANDLE_BAT(, 23434) +HANDLE_BAT(, 23435) +HANDLE_BAT(, 23436) +HANDLE_BAT(, 23437) +HANDLE_BAT(, 23438) +HANDLE_BAT(, 23439) +HANDLE_BAT(, 23440) +HANDLE_BAT(, 23441) +HANDLE_BAT(, 23442) +HANDLE_BAT(, 23443) +HANDLE_BAT(, 23444) +HANDLE_BAT(, 23445) +HANDLE_BAT(, 23446) +HANDLE_BAT(, 23447) +HANDLE_BAT(, 23448) +HANDLE_BAT(, 23449) +HANDLE_BAT(, 23450) +HANDLE_BAT(, 23451) +HANDLE_BAT(, 23452) +HANDLE_BAT(, 23453) +HANDLE_BAT(, 23454) +HANDLE_BAT(, 23455) +HANDLE_BAT(, 23456) +HANDLE_BAT(, 23457) +HANDLE_BAT(, 23458) +HANDLE_BAT(, 23459) +HANDLE_BAT(, 23460) +HANDLE_BAT(, 23461) +HANDLE_BAT(, 23462) +HANDLE_BAT(, 23463) +HANDLE_BAT(, 23464) +HANDLE_BAT(, 23465) +HANDLE_BAT(, 23466) +HANDLE_BAT(, 23467) +HANDLE_BAT(, 23468) +HANDLE_BAT(, 23469) +HANDLE_BAT(, 23470) +HANDLE_BAT(, 23471) +HANDLE_BAT(, 23472) +HANDLE_BAT(, 23473) +HANDLE_BAT(, 23474) +HANDLE_BAT(, 23475) +HANDLE_BAT(, 23476) +HANDLE_BAT(, 23477) +HANDLE_BAT(, 23478) +HANDLE_BAT(, 23479) +HANDLE_BAT(, 23480) +HANDLE_BAT(, 23481) +HANDLE_BAT(, 23482) +HANDLE_BAT(, 23483) +HANDLE_BAT(, 23484) +HANDLE_BAT(, 23485) +HANDLE_BAT(, 23486) +HANDLE_BAT(, 23487) +HANDLE_BAT(, 23488) +HANDLE_BAT(, 23489) +HANDLE_BAT(, 23490) +HANDLE_BAT(, 23491) +HANDLE_BAT(, 23492) +HANDLE_BAT(, 23493) +HANDLE_BAT(, 23494) +HANDLE_BAT(, 23495) +HANDLE_BAT(, 23496) +HANDLE_BAT(, 23497) +HANDLE_BAT(, 23498) +HANDLE_BAT(, 23499) +HANDLE_BAT(, 23500) +HANDLE_BAT(, 23501) +HANDLE_BAT(, 23502) +HANDLE_BAT(, 23503) +HANDLE_BAT(, 23504) +HANDLE_BAT(, 23505) +HANDLE_BAT(, 23506) +HANDLE_BAT(, 23507) +HANDLE_BAT(, 23508) +HANDLE_BAT(, 23509) +HANDLE_BAT(, 23510) +HANDLE_BAT(, 23511) +HANDLE_BAT(, 23512) +HANDLE_BAT(, 23513) +HANDLE_BAT(, 23514) +HANDLE_BAT(, 23515) +HANDLE_BAT(, 23516) +HANDLE_BAT(, 23517) +HANDLE_BAT(, 23518) +HANDLE_BAT(, 23519) +HANDLE_BAT(, 23520) +HANDLE_BAT(, 23521) +HANDLE_BAT(, 23522) +HANDLE_BAT(, 23523) +HANDLE_BAT(, 23524) +HANDLE_BAT(, 23525) +HANDLE_BAT(, 23526) +HANDLE_BAT(, 23527) +HANDLE_BAT(, 23528) +HANDLE_BAT(, 23529) +HANDLE_BAT(, 23530) +HANDLE_BAT(, 23531) +HANDLE_BAT(, 23532) +HANDLE_BAT(, 23533) +HANDLE_BAT(, 23534) +HANDLE_BAT(, 23535) +HANDLE_BAT(, 23536) +HANDLE_BAT(, 23537) +HANDLE_BAT(, 23538) +HANDLE_BAT(, 23539) +HANDLE_BAT(, 23540) +HANDLE_BAT(, 23541) +HANDLE_BAT(, 23542) +HANDLE_BAT(, 23543) +HANDLE_BAT(, 23544) +HANDLE_BAT(, 23545) +HANDLE_BAT(, 23546) +HANDLE_BAT(, 23547) +HANDLE_BAT(, 23548) +HANDLE_BAT(, 23549) +HANDLE_BAT(, 23550) +HANDLE_BAT(, 23551) +HANDLE_BAT(, 23552) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 22529) +HANDLE_BAT(APINT_TYPE_PREFIX, 22530) +HANDLE_BAT(APINT_TYPE_PREFIX, 22531) +HANDLE_BAT(APINT_TYPE_PREFIX, 22532) +HANDLE_BAT(APINT_TYPE_PREFIX, 22533) +HANDLE_BAT(APINT_TYPE_PREFIX, 22534) +HANDLE_BAT(APINT_TYPE_PREFIX, 22535) +HANDLE_BAT(APINT_TYPE_PREFIX, 22536) +HANDLE_BAT(APINT_TYPE_PREFIX, 22537) +HANDLE_BAT(APINT_TYPE_PREFIX, 22538) +HANDLE_BAT(APINT_TYPE_PREFIX, 22539) +HANDLE_BAT(APINT_TYPE_PREFIX, 22540) +HANDLE_BAT(APINT_TYPE_PREFIX, 22541) +HANDLE_BAT(APINT_TYPE_PREFIX, 22542) +HANDLE_BAT(APINT_TYPE_PREFIX, 22543) +HANDLE_BAT(APINT_TYPE_PREFIX, 22544) +HANDLE_BAT(APINT_TYPE_PREFIX, 22545) +HANDLE_BAT(APINT_TYPE_PREFIX, 22546) +HANDLE_BAT(APINT_TYPE_PREFIX, 22547) +HANDLE_BAT(APINT_TYPE_PREFIX, 22548) +HANDLE_BAT(APINT_TYPE_PREFIX, 22549) +HANDLE_BAT(APINT_TYPE_PREFIX, 22550) +HANDLE_BAT(APINT_TYPE_PREFIX, 22551) +HANDLE_BAT(APINT_TYPE_PREFIX, 22552) +HANDLE_BAT(APINT_TYPE_PREFIX, 22553) +HANDLE_BAT(APINT_TYPE_PREFIX, 22554) +HANDLE_BAT(APINT_TYPE_PREFIX, 22555) +HANDLE_BAT(APINT_TYPE_PREFIX, 22556) +HANDLE_BAT(APINT_TYPE_PREFIX, 22557) +HANDLE_BAT(APINT_TYPE_PREFIX, 22558) +HANDLE_BAT(APINT_TYPE_PREFIX, 22559) +HANDLE_BAT(APINT_TYPE_PREFIX, 22560) +HANDLE_BAT(APINT_TYPE_PREFIX, 22561) +HANDLE_BAT(APINT_TYPE_PREFIX, 22562) +HANDLE_BAT(APINT_TYPE_PREFIX, 22563) +HANDLE_BAT(APINT_TYPE_PREFIX, 22564) +HANDLE_BAT(APINT_TYPE_PREFIX, 22565) +HANDLE_BAT(APINT_TYPE_PREFIX, 22566) +HANDLE_BAT(APINT_TYPE_PREFIX, 22567) +HANDLE_BAT(APINT_TYPE_PREFIX, 22568) +HANDLE_BAT(APINT_TYPE_PREFIX, 22569) +HANDLE_BAT(APINT_TYPE_PREFIX, 22570) +HANDLE_BAT(APINT_TYPE_PREFIX, 22571) +HANDLE_BAT(APINT_TYPE_PREFIX, 22572) +HANDLE_BAT(APINT_TYPE_PREFIX, 22573) +HANDLE_BAT(APINT_TYPE_PREFIX, 22574) +HANDLE_BAT(APINT_TYPE_PREFIX, 22575) +HANDLE_BAT(APINT_TYPE_PREFIX, 22576) +HANDLE_BAT(APINT_TYPE_PREFIX, 22577) +HANDLE_BAT(APINT_TYPE_PREFIX, 22578) +HANDLE_BAT(APINT_TYPE_PREFIX, 22579) +HANDLE_BAT(APINT_TYPE_PREFIX, 22580) +HANDLE_BAT(APINT_TYPE_PREFIX, 22581) +HANDLE_BAT(APINT_TYPE_PREFIX, 22582) +HANDLE_BAT(APINT_TYPE_PREFIX, 22583) +HANDLE_BAT(APINT_TYPE_PREFIX, 22584) +HANDLE_BAT(APINT_TYPE_PREFIX, 22585) +HANDLE_BAT(APINT_TYPE_PREFIX, 22586) +HANDLE_BAT(APINT_TYPE_PREFIX, 22587) +HANDLE_BAT(APINT_TYPE_PREFIX, 22588) +HANDLE_BAT(APINT_TYPE_PREFIX, 22589) +HANDLE_BAT(APINT_TYPE_PREFIX, 22590) +HANDLE_BAT(APINT_TYPE_PREFIX, 22591) +HANDLE_BAT(APINT_TYPE_PREFIX, 22592) +HANDLE_BAT(APINT_TYPE_PREFIX, 22593) +HANDLE_BAT(APINT_TYPE_PREFIX, 22594) +HANDLE_BAT(APINT_TYPE_PREFIX, 22595) +HANDLE_BAT(APINT_TYPE_PREFIX, 22596) +HANDLE_BAT(APINT_TYPE_PREFIX, 22597) +HANDLE_BAT(APINT_TYPE_PREFIX, 22598) +HANDLE_BAT(APINT_TYPE_PREFIX, 22599) +HANDLE_BAT(APINT_TYPE_PREFIX, 22600) +HANDLE_BAT(APINT_TYPE_PREFIX, 22601) +HANDLE_BAT(APINT_TYPE_PREFIX, 22602) +HANDLE_BAT(APINT_TYPE_PREFIX, 22603) +HANDLE_BAT(APINT_TYPE_PREFIX, 22604) +HANDLE_BAT(APINT_TYPE_PREFIX, 22605) +HANDLE_BAT(APINT_TYPE_PREFIX, 22606) +HANDLE_BAT(APINT_TYPE_PREFIX, 22607) +HANDLE_BAT(APINT_TYPE_PREFIX, 22608) +HANDLE_BAT(APINT_TYPE_PREFIX, 22609) +HANDLE_BAT(APINT_TYPE_PREFIX, 22610) +HANDLE_BAT(APINT_TYPE_PREFIX, 22611) +HANDLE_BAT(APINT_TYPE_PREFIX, 22612) +HANDLE_BAT(APINT_TYPE_PREFIX, 22613) +HANDLE_BAT(APINT_TYPE_PREFIX, 22614) +HANDLE_BAT(APINT_TYPE_PREFIX, 22615) +HANDLE_BAT(APINT_TYPE_PREFIX, 22616) +HANDLE_BAT(APINT_TYPE_PREFIX, 22617) +HANDLE_BAT(APINT_TYPE_PREFIX, 22618) +HANDLE_BAT(APINT_TYPE_PREFIX, 22619) +HANDLE_BAT(APINT_TYPE_PREFIX, 22620) +HANDLE_BAT(APINT_TYPE_PREFIX, 22621) +HANDLE_BAT(APINT_TYPE_PREFIX, 22622) +HANDLE_BAT(APINT_TYPE_PREFIX, 22623) +HANDLE_BAT(APINT_TYPE_PREFIX, 22624) +HANDLE_BAT(APINT_TYPE_PREFIX, 22625) +HANDLE_BAT(APINT_TYPE_PREFIX, 22626) +HANDLE_BAT(APINT_TYPE_PREFIX, 22627) +HANDLE_BAT(APINT_TYPE_PREFIX, 22628) +HANDLE_BAT(APINT_TYPE_PREFIX, 22629) +HANDLE_BAT(APINT_TYPE_PREFIX, 22630) +HANDLE_BAT(APINT_TYPE_PREFIX, 22631) +HANDLE_BAT(APINT_TYPE_PREFIX, 22632) +HANDLE_BAT(APINT_TYPE_PREFIX, 22633) +HANDLE_BAT(APINT_TYPE_PREFIX, 22634) +HANDLE_BAT(APINT_TYPE_PREFIX, 22635) +HANDLE_BAT(APINT_TYPE_PREFIX, 22636) +HANDLE_BAT(APINT_TYPE_PREFIX, 22637) +HANDLE_BAT(APINT_TYPE_PREFIX, 22638) +HANDLE_BAT(APINT_TYPE_PREFIX, 22639) +HANDLE_BAT(APINT_TYPE_PREFIX, 22640) +HANDLE_BAT(APINT_TYPE_PREFIX, 22641) +HANDLE_BAT(APINT_TYPE_PREFIX, 22642) +HANDLE_BAT(APINT_TYPE_PREFIX, 22643) +HANDLE_BAT(APINT_TYPE_PREFIX, 22644) +HANDLE_BAT(APINT_TYPE_PREFIX, 22645) +HANDLE_BAT(APINT_TYPE_PREFIX, 22646) +HANDLE_BAT(APINT_TYPE_PREFIX, 22647) +HANDLE_BAT(APINT_TYPE_PREFIX, 22648) +HANDLE_BAT(APINT_TYPE_PREFIX, 22649) +HANDLE_BAT(APINT_TYPE_PREFIX, 22650) +HANDLE_BAT(APINT_TYPE_PREFIX, 22651) +HANDLE_BAT(APINT_TYPE_PREFIX, 22652) +HANDLE_BAT(APINT_TYPE_PREFIX, 22653) +HANDLE_BAT(APINT_TYPE_PREFIX, 22654) +HANDLE_BAT(APINT_TYPE_PREFIX, 22655) +HANDLE_BAT(APINT_TYPE_PREFIX, 22656) +HANDLE_BAT(APINT_TYPE_PREFIX, 22657) +HANDLE_BAT(APINT_TYPE_PREFIX, 22658) +HANDLE_BAT(APINT_TYPE_PREFIX, 22659) +HANDLE_BAT(APINT_TYPE_PREFIX, 22660) +HANDLE_BAT(APINT_TYPE_PREFIX, 22661) +HANDLE_BAT(APINT_TYPE_PREFIX, 22662) +HANDLE_BAT(APINT_TYPE_PREFIX, 22663) +HANDLE_BAT(APINT_TYPE_PREFIX, 22664) +HANDLE_BAT(APINT_TYPE_PREFIX, 22665) +HANDLE_BAT(APINT_TYPE_PREFIX, 22666) +HANDLE_BAT(APINT_TYPE_PREFIX, 22667) +HANDLE_BAT(APINT_TYPE_PREFIX, 22668) +HANDLE_BAT(APINT_TYPE_PREFIX, 22669) +HANDLE_BAT(APINT_TYPE_PREFIX, 22670) +HANDLE_BAT(APINT_TYPE_PREFIX, 22671) +HANDLE_BAT(APINT_TYPE_PREFIX, 22672) +HANDLE_BAT(APINT_TYPE_PREFIX, 22673) +HANDLE_BAT(APINT_TYPE_PREFIX, 22674) +HANDLE_BAT(APINT_TYPE_PREFIX, 22675) +HANDLE_BAT(APINT_TYPE_PREFIX, 22676) +HANDLE_BAT(APINT_TYPE_PREFIX, 22677) +HANDLE_BAT(APINT_TYPE_PREFIX, 22678) +HANDLE_BAT(APINT_TYPE_PREFIX, 22679) +HANDLE_BAT(APINT_TYPE_PREFIX, 22680) +HANDLE_BAT(APINT_TYPE_PREFIX, 22681) +HANDLE_BAT(APINT_TYPE_PREFIX, 22682) +HANDLE_BAT(APINT_TYPE_PREFIX, 22683) +HANDLE_BAT(APINT_TYPE_PREFIX, 22684) +HANDLE_BAT(APINT_TYPE_PREFIX, 22685) +HANDLE_BAT(APINT_TYPE_PREFIX, 22686) +HANDLE_BAT(APINT_TYPE_PREFIX, 22687) +HANDLE_BAT(APINT_TYPE_PREFIX, 22688) +HANDLE_BAT(APINT_TYPE_PREFIX, 22689) +HANDLE_BAT(APINT_TYPE_PREFIX, 22690) +HANDLE_BAT(APINT_TYPE_PREFIX, 22691) +HANDLE_BAT(APINT_TYPE_PREFIX, 22692) +HANDLE_BAT(APINT_TYPE_PREFIX, 22693) +HANDLE_BAT(APINT_TYPE_PREFIX, 22694) +HANDLE_BAT(APINT_TYPE_PREFIX, 22695) +HANDLE_BAT(APINT_TYPE_PREFIX, 22696) +HANDLE_BAT(APINT_TYPE_PREFIX, 22697) +HANDLE_BAT(APINT_TYPE_PREFIX, 22698) +HANDLE_BAT(APINT_TYPE_PREFIX, 22699) +HANDLE_BAT(APINT_TYPE_PREFIX, 22700) +HANDLE_BAT(APINT_TYPE_PREFIX, 22701) +HANDLE_BAT(APINT_TYPE_PREFIX, 22702) +HANDLE_BAT(APINT_TYPE_PREFIX, 22703) +HANDLE_BAT(APINT_TYPE_PREFIX, 22704) +HANDLE_BAT(APINT_TYPE_PREFIX, 22705) +HANDLE_BAT(APINT_TYPE_PREFIX, 22706) +HANDLE_BAT(APINT_TYPE_PREFIX, 22707) +HANDLE_BAT(APINT_TYPE_PREFIX, 22708) +HANDLE_BAT(APINT_TYPE_PREFIX, 22709) +HANDLE_BAT(APINT_TYPE_PREFIX, 22710) +HANDLE_BAT(APINT_TYPE_PREFIX, 22711) +HANDLE_BAT(APINT_TYPE_PREFIX, 22712) +HANDLE_BAT(APINT_TYPE_PREFIX, 22713) +HANDLE_BAT(APINT_TYPE_PREFIX, 22714) +HANDLE_BAT(APINT_TYPE_PREFIX, 22715) +HANDLE_BAT(APINT_TYPE_PREFIX, 22716) +HANDLE_BAT(APINT_TYPE_PREFIX, 22717) +HANDLE_BAT(APINT_TYPE_PREFIX, 22718) +HANDLE_BAT(APINT_TYPE_PREFIX, 22719) +HANDLE_BAT(APINT_TYPE_PREFIX, 22720) +HANDLE_BAT(APINT_TYPE_PREFIX, 22721) +HANDLE_BAT(APINT_TYPE_PREFIX, 22722) +HANDLE_BAT(APINT_TYPE_PREFIX, 22723) +HANDLE_BAT(APINT_TYPE_PREFIX, 22724) +HANDLE_BAT(APINT_TYPE_PREFIX, 22725) +HANDLE_BAT(APINT_TYPE_PREFIX, 22726) +HANDLE_BAT(APINT_TYPE_PREFIX, 22727) +HANDLE_BAT(APINT_TYPE_PREFIX, 22728) +HANDLE_BAT(APINT_TYPE_PREFIX, 22729) +HANDLE_BAT(APINT_TYPE_PREFIX, 22730) +HANDLE_BAT(APINT_TYPE_PREFIX, 22731) +HANDLE_BAT(APINT_TYPE_PREFIX, 22732) +HANDLE_BAT(APINT_TYPE_PREFIX, 22733) +HANDLE_BAT(APINT_TYPE_PREFIX, 22734) +HANDLE_BAT(APINT_TYPE_PREFIX, 22735) +HANDLE_BAT(APINT_TYPE_PREFIX, 22736) +HANDLE_BAT(APINT_TYPE_PREFIX, 22737) +HANDLE_BAT(APINT_TYPE_PREFIX, 22738) +HANDLE_BAT(APINT_TYPE_PREFIX, 22739) +HANDLE_BAT(APINT_TYPE_PREFIX, 22740) +HANDLE_BAT(APINT_TYPE_PREFIX, 22741) +HANDLE_BAT(APINT_TYPE_PREFIX, 22742) +HANDLE_BAT(APINT_TYPE_PREFIX, 22743) +HANDLE_BAT(APINT_TYPE_PREFIX, 22744) +HANDLE_BAT(APINT_TYPE_PREFIX, 22745) +HANDLE_BAT(APINT_TYPE_PREFIX, 22746) +HANDLE_BAT(APINT_TYPE_PREFIX, 22747) +HANDLE_BAT(APINT_TYPE_PREFIX, 22748) +HANDLE_BAT(APINT_TYPE_PREFIX, 22749) +HANDLE_BAT(APINT_TYPE_PREFIX, 22750) +HANDLE_BAT(APINT_TYPE_PREFIX, 22751) +HANDLE_BAT(APINT_TYPE_PREFIX, 22752) +HANDLE_BAT(APINT_TYPE_PREFIX, 22753) +HANDLE_BAT(APINT_TYPE_PREFIX, 22754) +HANDLE_BAT(APINT_TYPE_PREFIX, 22755) +HANDLE_BAT(APINT_TYPE_PREFIX, 22756) +HANDLE_BAT(APINT_TYPE_PREFIX, 22757) +HANDLE_BAT(APINT_TYPE_PREFIX, 22758) +HANDLE_BAT(APINT_TYPE_PREFIX, 22759) +HANDLE_BAT(APINT_TYPE_PREFIX, 22760) +HANDLE_BAT(APINT_TYPE_PREFIX, 22761) +HANDLE_BAT(APINT_TYPE_PREFIX, 22762) +HANDLE_BAT(APINT_TYPE_PREFIX, 22763) +HANDLE_BAT(APINT_TYPE_PREFIX, 22764) +HANDLE_BAT(APINT_TYPE_PREFIX, 22765) +HANDLE_BAT(APINT_TYPE_PREFIX, 22766) +HANDLE_BAT(APINT_TYPE_PREFIX, 22767) +HANDLE_BAT(APINT_TYPE_PREFIX, 22768) +HANDLE_BAT(APINT_TYPE_PREFIX, 22769) +HANDLE_BAT(APINT_TYPE_PREFIX, 22770) +HANDLE_BAT(APINT_TYPE_PREFIX, 22771) +HANDLE_BAT(APINT_TYPE_PREFIX, 22772) +HANDLE_BAT(APINT_TYPE_PREFIX, 22773) +HANDLE_BAT(APINT_TYPE_PREFIX, 22774) +HANDLE_BAT(APINT_TYPE_PREFIX, 22775) +HANDLE_BAT(APINT_TYPE_PREFIX, 22776) +HANDLE_BAT(APINT_TYPE_PREFIX, 22777) +HANDLE_BAT(APINT_TYPE_PREFIX, 22778) +HANDLE_BAT(APINT_TYPE_PREFIX, 22779) +HANDLE_BAT(APINT_TYPE_PREFIX, 22780) +HANDLE_BAT(APINT_TYPE_PREFIX, 22781) +HANDLE_BAT(APINT_TYPE_PREFIX, 22782) +HANDLE_BAT(APINT_TYPE_PREFIX, 22783) +HANDLE_BAT(APINT_TYPE_PREFIX, 22784) +HANDLE_BAT(APINT_TYPE_PREFIX, 22785) +HANDLE_BAT(APINT_TYPE_PREFIX, 22786) +HANDLE_BAT(APINT_TYPE_PREFIX, 22787) +HANDLE_BAT(APINT_TYPE_PREFIX, 22788) +HANDLE_BAT(APINT_TYPE_PREFIX, 22789) +HANDLE_BAT(APINT_TYPE_PREFIX, 22790) +HANDLE_BAT(APINT_TYPE_PREFIX, 22791) +HANDLE_BAT(APINT_TYPE_PREFIX, 22792) +HANDLE_BAT(APINT_TYPE_PREFIX, 22793) +HANDLE_BAT(APINT_TYPE_PREFIX, 22794) +HANDLE_BAT(APINT_TYPE_PREFIX, 22795) +HANDLE_BAT(APINT_TYPE_PREFIX, 22796) +HANDLE_BAT(APINT_TYPE_PREFIX, 22797) +HANDLE_BAT(APINT_TYPE_PREFIX, 22798) +HANDLE_BAT(APINT_TYPE_PREFIX, 22799) +HANDLE_BAT(APINT_TYPE_PREFIX, 22800) +HANDLE_BAT(APINT_TYPE_PREFIX, 22801) +HANDLE_BAT(APINT_TYPE_PREFIX, 22802) +HANDLE_BAT(APINT_TYPE_PREFIX, 22803) +HANDLE_BAT(APINT_TYPE_PREFIX, 22804) +HANDLE_BAT(APINT_TYPE_PREFIX, 22805) +HANDLE_BAT(APINT_TYPE_PREFIX, 22806) +HANDLE_BAT(APINT_TYPE_PREFIX, 22807) +HANDLE_BAT(APINT_TYPE_PREFIX, 22808) +HANDLE_BAT(APINT_TYPE_PREFIX, 22809) +HANDLE_BAT(APINT_TYPE_PREFIX, 22810) +HANDLE_BAT(APINT_TYPE_PREFIX, 22811) +HANDLE_BAT(APINT_TYPE_PREFIX, 22812) +HANDLE_BAT(APINT_TYPE_PREFIX, 22813) +HANDLE_BAT(APINT_TYPE_PREFIX, 22814) +HANDLE_BAT(APINT_TYPE_PREFIX, 22815) +HANDLE_BAT(APINT_TYPE_PREFIX, 22816) +HANDLE_BAT(APINT_TYPE_PREFIX, 22817) +HANDLE_BAT(APINT_TYPE_PREFIX, 22818) +HANDLE_BAT(APINT_TYPE_PREFIX, 22819) +HANDLE_BAT(APINT_TYPE_PREFIX, 22820) +HANDLE_BAT(APINT_TYPE_PREFIX, 22821) +HANDLE_BAT(APINT_TYPE_PREFIX, 22822) +HANDLE_BAT(APINT_TYPE_PREFIX, 22823) +HANDLE_BAT(APINT_TYPE_PREFIX, 22824) +HANDLE_BAT(APINT_TYPE_PREFIX, 22825) +HANDLE_BAT(APINT_TYPE_PREFIX, 22826) +HANDLE_BAT(APINT_TYPE_PREFIX, 22827) +HANDLE_BAT(APINT_TYPE_PREFIX, 22828) +HANDLE_BAT(APINT_TYPE_PREFIX, 22829) +HANDLE_BAT(APINT_TYPE_PREFIX, 22830) +HANDLE_BAT(APINT_TYPE_PREFIX, 22831) +HANDLE_BAT(APINT_TYPE_PREFIX, 22832) +HANDLE_BAT(APINT_TYPE_PREFIX, 22833) +HANDLE_BAT(APINT_TYPE_PREFIX, 22834) +HANDLE_BAT(APINT_TYPE_PREFIX, 22835) +HANDLE_BAT(APINT_TYPE_PREFIX, 22836) +HANDLE_BAT(APINT_TYPE_PREFIX, 22837) +HANDLE_BAT(APINT_TYPE_PREFIX, 22838) +HANDLE_BAT(APINT_TYPE_PREFIX, 22839) +HANDLE_BAT(APINT_TYPE_PREFIX, 22840) +HANDLE_BAT(APINT_TYPE_PREFIX, 22841) +HANDLE_BAT(APINT_TYPE_PREFIX, 22842) +HANDLE_BAT(APINT_TYPE_PREFIX, 22843) +HANDLE_BAT(APINT_TYPE_PREFIX, 22844) +HANDLE_BAT(APINT_TYPE_PREFIX, 22845) +HANDLE_BAT(APINT_TYPE_PREFIX, 22846) +HANDLE_BAT(APINT_TYPE_PREFIX, 22847) +HANDLE_BAT(APINT_TYPE_PREFIX, 22848) +HANDLE_BAT(APINT_TYPE_PREFIX, 22849) +HANDLE_BAT(APINT_TYPE_PREFIX, 22850) +HANDLE_BAT(APINT_TYPE_PREFIX, 22851) +HANDLE_BAT(APINT_TYPE_PREFIX, 22852) +HANDLE_BAT(APINT_TYPE_PREFIX, 22853) +HANDLE_BAT(APINT_TYPE_PREFIX, 22854) +HANDLE_BAT(APINT_TYPE_PREFIX, 22855) +HANDLE_BAT(APINT_TYPE_PREFIX, 22856) +HANDLE_BAT(APINT_TYPE_PREFIX, 22857) +HANDLE_BAT(APINT_TYPE_PREFIX, 22858) +HANDLE_BAT(APINT_TYPE_PREFIX, 22859) +HANDLE_BAT(APINT_TYPE_PREFIX, 22860) +HANDLE_BAT(APINT_TYPE_PREFIX, 22861) +HANDLE_BAT(APINT_TYPE_PREFIX, 22862) +HANDLE_BAT(APINT_TYPE_PREFIX, 22863) +HANDLE_BAT(APINT_TYPE_PREFIX, 22864) +HANDLE_BAT(APINT_TYPE_PREFIX, 22865) +HANDLE_BAT(APINT_TYPE_PREFIX, 22866) +HANDLE_BAT(APINT_TYPE_PREFIX, 22867) +HANDLE_BAT(APINT_TYPE_PREFIX, 22868) +HANDLE_BAT(APINT_TYPE_PREFIX, 22869) +HANDLE_BAT(APINT_TYPE_PREFIX, 22870) +HANDLE_BAT(APINT_TYPE_PREFIX, 22871) +HANDLE_BAT(APINT_TYPE_PREFIX, 22872) +HANDLE_BAT(APINT_TYPE_PREFIX, 22873) +HANDLE_BAT(APINT_TYPE_PREFIX, 22874) +HANDLE_BAT(APINT_TYPE_PREFIX, 22875) +HANDLE_BAT(APINT_TYPE_PREFIX, 22876) +HANDLE_BAT(APINT_TYPE_PREFIX, 22877) +HANDLE_BAT(APINT_TYPE_PREFIX, 22878) +HANDLE_BAT(APINT_TYPE_PREFIX, 22879) +HANDLE_BAT(APINT_TYPE_PREFIX, 22880) +HANDLE_BAT(APINT_TYPE_PREFIX, 22881) +HANDLE_BAT(APINT_TYPE_PREFIX, 22882) +HANDLE_BAT(APINT_TYPE_PREFIX, 22883) +HANDLE_BAT(APINT_TYPE_PREFIX, 22884) +HANDLE_BAT(APINT_TYPE_PREFIX, 22885) +HANDLE_BAT(APINT_TYPE_PREFIX, 22886) +HANDLE_BAT(APINT_TYPE_PREFIX, 22887) +HANDLE_BAT(APINT_TYPE_PREFIX, 22888) +HANDLE_BAT(APINT_TYPE_PREFIX, 22889) +HANDLE_BAT(APINT_TYPE_PREFIX, 22890) +HANDLE_BAT(APINT_TYPE_PREFIX, 22891) +HANDLE_BAT(APINT_TYPE_PREFIX, 22892) +HANDLE_BAT(APINT_TYPE_PREFIX, 22893) +HANDLE_BAT(APINT_TYPE_PREFIX, 22894) +HANDLE_BAT(APINT_TYPE_PREFIX, 22895) +HANDLE_BAT(APINT_TYPE_PREFIX, 22896) +HANDLE_BAT(APINT_TYPE_PREFIX, 22897) +HANDLE_BAT(APINT_TYPE_PREFIX, 22898) +HANDLE_BAT(APINT_TYPE_PREFIX, 22899) +HANDLE_BAT(APINT_TYPE_PREFIX, 22900) +HANDLE_BAT(APINT_TYPE_PREFIX, 22901) +HANDLE_BAT(APINT_TYPE_PREFIX, 22902) +HANDLE_BAT(APINT_TYPE_PREFIX, 22903) +HANDLE_BAT(APINT_TYPE_PREFIX, 22904) +HANDLE_BAT(APINT_TYPE_PREFIX, 22905) +HANDLE_BAT(APINT_TYPE_PREFIX, 22906) +HANDLE_BAT(APINT_TYPE_PREFIX, 22907) +HANDLE_BAT(APINT_TYPE_PREFIX, 22908) +HANDLE_BAT(APINT_TYPE_PREFIX, 22909) +HANDLE_BAT(APINT_TYPE_PREFIX, 22910) +HANDLE_BAT(APINT_TYPE_PREFIX, 22911) +HANDLE_BAT(APINT_TYPE_PREFIX, 22912) +HANDLE_BAT(APINT_TYPE_PREFIX, 22913) +HANDLE_BAT(APINT_TYPE_PREFIX, 22914) +HANDLE_BAT(APINT_TYPE_PREFIX, 22915) +HANDLE_BAT(APINT_TYPE_PREFIX, 22916) +HANDLE_BAT(APINT_TYPE_PREFIX, 22917) +HANDLE_BAT(APINT_TYPE_PREFIX, 22918) +HANDLE_BAT(APINT_TYPE_PREFIX, 22919) +HANDLE_BAT(APINT_TYPE_PREFIX, 22920) +HANDLE_BAT(APINT_TYPE_PREFIX, 22921) +HANDLE_BAT(APINT_TYPE_PREFIX, 22922) +HANDLE_BAT(APINT_TYPE_PREFIX, 22923) +HANDLE_BAT(APINT_TYPE_PREFIX, 22924) +HANDLE_BAT(APINT_TYPE_PREFIX, 22925) +HANDLE_BAT(APINT_TYPE_PREFIX, 22926) +HANDLE_BAT(APINT_TYPE_PREFIX, 22927) +HANDLE_BAT(APINT_TYPE_PREFIX, 22928) +HANDLE_BAT(APINT_TYPE_PREFIX, 22929) +HANDLE_BAT(APINT_TYPE_PREFIX, 22930) +HANDLE_BAT(APINT_TYPE_PREFIX, 22931) +HANDLE_BAT(APINT_TYPE_PREFIX, 22932) +HANDLE_BAT(APINT_TYPE_PREFIX, 22933) +HANDLE_BAT(APINT_TYPE_PREFIX, 22934) +HANDLE_BAT(APINT_TYPE_PREFIX, 22935) +HANDLE_BAT(APINT_TYPE_PREFIX, 22936) +HANDLE_BAT(APINT_TYPE_PREFIX, 22937) +HANDLE_BAT(APINT_TYPE_PREFIX, 22938) +HANDLE_BAT(APINT_TYPE_PREFIX, 22939) +HANDLE_BAT(APINT_TYPE_PREFIX, 22940) +HANDLE_BAT(APINT_TYPE_PREFIX, 22941) +HANDLE_BAT(APINT_TYPE_PREFIX, 22942) +HANDLE_BAT(APINT_TYPE_PREFIX, 22943) +HANDLE_BAT(APINT_TYPE_PREFIX, 22944) +HANDLE_BAT(APINT_TYPE_PREFIX, 22945) +HANDLE_BAT(APINT_TYPE_PREFIX, 22946) +HANDLE_BAT(APINT_TYPE_PREFIX, 22947) +HANDLE_BAT(APINT_TYPE_PREFIX, 22948) +HANDLE_BAT(APINT_TYPE_PREFIX, 22949) +HANDLE_BAT(APINT_TYPE_PREFIX, 22950) +HANDLE_BAT(APINT_TYPE_PREFIX, 22951) +HANDLE_BAT(APINT_TYPE_PREFIX, 22952) +HANDLE_BAT(APINT_TYPE_PREFIX, 22953) +HANDLE_BAT(APINT_TYPE_PREFIX, 22954) +HANDLE_BAT(APINT_TYPE_PREFIX, 22955) +HANDLE_BAT(APINT_TYPE_PREFIX, 22956) +HANDLE_BAT(APINT_TYPE_PREFIX, 22957) +HANDLE_BAT(APINT_TYPE_PREFIX, 22958) +HANDLE_BAT(APINT_TYPE_PREFIX, 22959) +HANDLE_BAT(APINT_TYPE_PREFIX, 22960) +HANDLE_BAT(APINT_TYPE_PREFIX, 22961) +HANDLE_BAT(APINT_TYPE_PREFIX, 22962) +HANDLE_BAT(APINT_TYPE_PREFIX, 22963) +HANDLE_BAT(APINT_TYPE_PREFIX, 22964) +HANDLE_BAT(APINT_TYPE_PREFIX, 22965) +HANDLE_BAT(APINT_TYPE_PREFIX, 22966) +HANDLE_BAT(APINT_TYPE_PREFIX, 22967) +HANDLE_BAT(APINT_TYPE_PREFIX, 22968) +HANDLE_BAT(APINT_TYPE_PREFIX, 22969) +HANDLE_BAT(APINT_TYPE_PREFIX, 22970) +HANDLE_BAT(APINT_TYPE_PREFIX, 22971) +HANDLE_BAT(APINT_TYPE_PREFIX, 22972) +HANDLE_BAT(APINT_TYPE_PREFIX, 22973) +HANDLE_BAT(APINT_TYPE_PREFIX, 22974) +HANDLE_BAT(APINT_TYPE_PREFIX, 22975) +HANDLE_BAT(APINT_TYPE_PREFIX, 22976) +HANDLE_BAT(APINT_TYPE_PREFIX, 22977) +HANDLE_BAT(APINT_TYPE_PREFIX, 22978) +HANDLE_BAT(APINT_TYPE_PREFIX, 22979) +HANDLE_BAT(APINT_TYPE_PREFIX, 22980) +HANDLE_BAT(APINT_TYPE_PREFIX, 22981) +HANDLE_BAT(APINT_TYPE_PREFIX, 22982) +HANDLE_BAT(APINT_TYPE_PREFIX, 22983) +HANDLE_BAT(APINT_TYPE_PREFIX, 22984) +HANDLE_BAT(APINT_TYPE_PREFIX, 22985) +HANDLE_BAT(APINT_TYPE_PREFIX, 22986) +HANDLE_BAT(APINT_TYPE_PREFIX, 22987) +HANDLE_BAT(APINT_TYPE_PREFIX, 22988) +HANDLE_BAT(APINT_TYPE_PREFIX, 22989) +HANDLE_BAT(APINT_TYPE_PREFIX, 22990) +HANDLE_BAT(APINT_TYPE_PREFIX, 22991) +HANDLE_BAT(APINT_TYPE_PREFIX, 22992) +HANDLE_BAT(APINT_TYPE_PREFIX, 22993) +HANDLE_BAT(APINT_TYPE_PREFIX, 22994) +HANDLE_BAT(APINT_TYPE_PREFIX, 22995) +HANDLE_BAT(APINT_TYPE_PREFIX, 22996) +HANDLE_BAT(APINT_TYPE_PREFIX, 22997) +HANDLE_BAT(APINT_TYPE_PREFIX, 22998) +HANDLE_BAT(APINT_TYPE_PREFIX, 22999) +HANDLE_BAT(APINT_TYPE_PREFIX, 23000) +HANDLE_BAT(APINT_TYPE_PREFIX, 23001) +HANDLE_BAT(APINT_TYPE_PREFIX, 23002) +HANDLE_BAT(APINT_TYPE_PREFIX, 23003) +HANDLE_BAT(APINT_TYPE_PREFIX, 23004) +HANDLE_BAT(APINT_TYPE_PREFIX, 23005) +HANDLE_BAT(APINT_TYPE_PREFIX, 23006) +HANDLE_BAT(APINT_TYPE_PREFIX, 23007) +HANDLE_BAT(APINT_TYPE_PREFIX, 23008) +HANDLE_BAT(APINT_TYPE_PREFIX, 23009) +HANDLE_BAT(APINT_TYPE_PREFIX, 23010) +HANDLE_BAT(APINT_TYPE_PREFIX, 23011) +HANDLE_BAT(APINT_TYPE_PREFIX, 23012) +HANDLE_BAT(APINT_TYPE_PREFIX, 23013) +HANDLE_BAT(APINT_TYPE_PREFIX, 23014) +HANDLE_BAT(APINT_TYPE_PREFIX, 23015) +HANDLE_BAT(APINT_TYPE_PREFIX, 23016) +HANDLE_BAT(APINT_TYPE_PREFIX, 23017) +HANDLE_BAT(APINT_TYPE_PREFIX, 23018) +HANDLE_BAT(APINT_TYPE_PREFIX, 23019) +HANDLE_BAT(APINT_TYPE_PREFIX, 23020) +HANDLE_BAT(APINT_TYPE_PREFIX, 23021) +HANDLE_BAT(APINT_TYPE_PREFIX, 23022) +HANDLE_BAT(APINT_TYPE_PREFIX, 23023) +HANDLE_BAT(APINT_TYPE_PREFIX, 23024) +HANDLE_BAT(APINT_TYPE_PREFIX, 23025) +HANDLE_BAT(APINT_TYPE_PREFIX, 23026) +HANDLE_BAT(APINT_TYPE_PREFIX, 23027) +HANDLE_BAT(APINT_TYPE_PREFIX, 23028) +HANDLE_BAT(APINT_TYPE_PREFIX, 23029) +HANDLE_BAT(APINT_TYPE_PREFIX, 23030) +HANDLE_BAT(APINT_TYPE_PREFIX, 23031) +HANDLE_BAT(APINT_TYPE_PREFIX, 23032) +HANDLE_BAT(APINT_TYPE_PREFIX, 23033) +HANDLE_BAT(APINT_TYPE_PREFIX, 23034) +HANDLE_BAT(APINT_TYPE_PREFIX, 23035) +HANDLE_BAT(APINT_TYPE_PREFIX, 23036) +HANDLE_BAT(APINT_TYPE_PREFIX, 23037) +HANDLE_BAT(APINT_TYPE_PREFIX, 23038) +HANDLE_BAT(APINT_TYPE_PREFIX, 23039) +HANDLE_BAT(APINT_TYPE_PREFIX, 23040) +HANDLE_BAT(APINT_TYPE_PREFIX, 23041) +HANDLE_BAT(APINT_TYPE_PREFIX, 23042) +HANDLE_BAT(APINT_TYPE_PREFIX, 23043) +HANDLE_BAT(APINT_TYPE_PREFIX, 23044) +HANDLE_BAT(APINT_TYPE_PREFIX, 23045) +HANDLE_BAT(APINT_TYPE_PREFIX, 23046) +HANDLE_BAT(APINT_TYPE_PREFIX, 23047) +HANDLE_BAT(APINT_TYPE_PREFIX, 23048) +HANDLE_BAT(APINT_TYPE_PREFIX, 23049) +HANDLE_BAT(APINT_TYPE_PREFIX, 23050) +HANDLE_BAT(APINT_TYPE_PREFIX, 23051) +HANDLE_BAT(APINT_TYPE_PREFIX, 23052) +HANDLE_BAT(APINT_TYPE_PREFIX, 23053) +HANDLE_BAT(APINT_TYPE_PREFIX, 23054) +HANDLE_BAT(APINT_TYPE_PREFIX, 23055) +HANDLE_BAT(APINT_TYPE_PREFIX, 23056) +HANDLE_BAT(APINT_TYPE_PREFIX, 23057) +HANDLE_BAT(APINT_TYPE_PREFIX, 23058) +HANDLE_BAT(APINT_TYPE_PREFIX, 23059) +HANDLE_BAT(APINT_TYPE_PREFIX, 23060) +HANDLE_BAT(APINT_TYPE_PREFIX, 23061) +HANDLE_BAT(APINT_TYPE_PREFIX, 23062) +HANDLE_BAT(APINT_TYPE_PREFIX, 23063) +HANDLE_BAT(APINT_TYPE_PREFIX, 23064) +HANDLE_BAT(APINT_TYPE_PREFIX, 23065) +HANDLE_BAT(APINT_TYPE_PREFIX, 23066) +HANDLE_BAT(APINT_TYPE_PREFIX, 23067) +HANDLE_BAT(APINT_TYPE_PREFIX, 23068) +HANDLE_BAT(APINT_TYPE_PREFIX, 23069) +HANDLE_BAT(APINT_TYPE_PREFIX, 23070) +HANDLE_BAT(APINT_TYPE_PREFIX, 23071) +HANDLE_BAT(APINT_TYPE_PREFIX, 23072) +HANDLE_BAT(APINT_TYPE_PREFIX, 23073) +HANDLE_BAT(APINT_TYPE_PREFIX, 23074) +HANDLE_BAT(APINT_TYPE_PREFIX, 23075) +HANDLE_BAT(APINT_TYPE_PREFIX, 23076) +HANDLE_BAT(APINT_TYPE_PREFIX, 23077) +HANDLE_BAT(APINT_TYPE_PREFIX, 23078) +HANDLE_BAT(APINT_TYPE_PREFIX, 23079) +HANDLE_BAT(APINT_TYPE_PREFIX, 23080) +HANDLE_BAT(APINT_TYPE_PREFIX, 23081) +HANDLE_BAT(APINT_TYPE_PREFIX, 23082) +HANDLE_BAT(APINT_TYPE_PREFIX, 23083) +HANDLE_BAT(APINT_TYPE_PREFIX, 23084) +HANDLE_BAT(APINT_TYPE_PREFIX, 23085) +HANDLE_BAT(APINT_TYPE_PREFIX, 23086) +HANDLE_BAT(APINT_TYPE_PREFIX, 23087) +HANDLE_BAT(APINT_TYPE_PREFIX, 23088) +HANDLE_BAT(APINT_TYPE_PREFIX, 23089) +HANDLE_BAT(APINT_TYPE_PREFIX, 23090) +HANDLE_BAT(APINT_TYPE_PREFIX, 23091) +HANDLE_BAT(APINT_TYPE_PREFIX, 23092) +HANDLE_BAT(APINT_TYPE_PREFIX, 23093) +HANDLE_BAT(APINT_TYPE_PREFIX, 23094) +HANDLE_BAT(APINT_TYPE_PREFIX, 23095) +HANDLE_BAT(APINT_TYPE_PREFIX, 23096) +HANDLE_BAT(APINT_TYPE_PREFIX, 23097) +HANDLE_BAT(APINT_TYPE_PREFIX, 23098) +HANDLE_BAT(APINT_TYPE_PREFIX, 23099) +HANDLE_BAT(APINT_TYPE_PREFIX, 23100) +HANDLE_BAT(APINT_TYPE_PREFIX, 23101) +HANDLE_BAT(APINT_TYPE_PREFIX, 23102) +HANDLE_BAT(APINT_TYPE_PREFIX, 23103) +HANDLE_BAT(APINT_TYPE_PREFIX, 23104) +HANDLE_BAT(APINT_TYPE_PREFIX, 23105) +HANDLE_BAT(APINT_TYPE_PREFIX, 23106) +HANDLE_BAT(APINT_TYPE_PREFIX, 23107) +HANDLE_BAT(APINT_TYPE_PREFIX, 23108) +HANDLE_BAT(APINT_TYPE_PREFIX, 23109) +HANDLE_BAT(APINT_TYPE_PREFIX, 23110) +HANDLE_BAT(APINT_TYPE_PREFIX, 23111) +HANDLE_BAT(APINT_TYPE_PREFIX, 23112) +HANDLE_BAT(APINT_TYPE_PREFIX, 23113) +HANDLE_BAT(APINT_TYPE_PREFIX, 23114) +HANDLE_BAT(APINT_TYPE_PREFIX, 23115) +HANDLE_BAT(APINT_TYPE_PREFIX, 23116) +HANDLE_BAT(APINT_TYPE_PREFIX, 23117) +HANDLE_BAT(APINT_TYPE_PREFIX, 23118) +HANDLE_BAT(APINT_TYPE_PREFIX, 23119) +HANDLE_BAT(APINT_TYPE_PREFIX, 23120) +HANDLE_BAT(APINT_TYPE_PREFIX, 23121) +HANDLE_BAT(APINT_TYPE_PREFIX, 23122) +HANDLE_BAT(APINT_TYPE_PREFIX, 23123) +HANDLE_BAT(APINT_TYPE_PREFIX, 23124) +HANDLE_BAT(APINT_TYPE_PREFIX, 23125) +HANDLE_BAT(APINT_TYPE_PREFIX, 23126) +HANDLE_BAT(APINT_TYPE_PREFIX, 23127) +HANDLE_BAT(APINT_TYPE_PREFIX, 23128) +HANDLE_BAT(APINT_TYPE_PREFIX, 23129) +HANDLE_BAT(APINT_TYPE_PREFIX, 23130) +HANDLE_BAT(APINT_TYPE_PREFIX, 23131) +HANDLE_BAT(APINT_TYPE_PREFIX, 23132) +HANDLE_BAT(APINT_TYPE_PREFIX, 23133) +HANDLE_BAT(APINT_TYPE_PREFIX, 23134) +HANDLE_BAT(APINT_TYPE_PREFIX, 23135) +HANDLE_BAT(APINT_TYPE_PREFIX, 23136) +HANDLE_BAT(APINT_TYPE_PREFIX, 23137) +HANDLE_BAT(APINT_TYPE_PREFIX, 23138) +HANDLE_BAT(APINT_TYPE_PREFIX, 23139) +HANDLE_BAT(APINT_TYPE_PREFIX, 23140) +HANDLE_BAT(APINT_TYPE_PREFIX, 23141) +HANDLE_BAT(APINT_TYPE_PREFIX, 23142) +HANDLE_BAT(APINT_TYPE_PREFIX, 23143) +HANDLE_BAT(APINT_TYPE_PREFIX, 23144) +HANDLE_BAT(APINT_TYPE_PREFIX, 23145) +HANDLE_BAT(APINT_TYPE_PREFIX, 23146) +HANDLE_BAT(APINT_TYPE_PREFIX, 23147) +HANDLE_BAT(APINT_TYPE_PREFIX, 23148) +HANDLE_BAT(APINT_TYPE_PREFIX, 23149) +HANDLE_BAT(APINT_TYPE_PREFIX, 23150) +HANDLE_BAT(APINT_TYPE_PREFIX, 23151) +HANDLE_BAT(APINT_TYPE_PREFIX, 23152) +HANDLE_BAT(APINT_TYPE_PREFIX, 23153) +HANDLE_BAT(APINT_TYPE_PREFIX, 23154) +HANDLE_BAT(APINT_TYPE_PREFIX, 23155) +HANDLE_BAT(APINT_TYPE_PREFIX, 23156) +HANDLE_BAT(APINT_TYPE_PREFIX, 23157) +HANDLE_BAT(APINT_TYPE_PREFIX, 23158) +HANDLE_BAT(APINT_TYPE_PREFIX, 23159) +HANDLE_BAT(APINT_TYPE_PREFIX, 23160) +HANDLE_BAT(APINT_TYPE_PREFIX, 23161) +HANDLE_BAT(APINT_TYPE_PREFIX, 23162) +HANDLE_BAT(APINT_TYPE_PREFIX, 23163) +HANDLE_BAT(APINT_TYPE_PREFIX, 23164) +HANDLE_BAT(APINT_TYPE_PREFIX, 23165) +HANDLE_BAT(APINT_TYPE_PREFIX, 23166) +HANDLE_BAT(APINT_TYPE_PREFIX, 23167) +HANDLE_BAT(APINT_TYPE_PREFIX, 23168) +HANDLE_BAT(APINT_TYPE_PREFIX, 23169) +HANDLE_BAT(APINT_TYPE_PREFIX, 23170) +HANDLE_BAT(APINT_TYPE_PREFIX, 23171) +HANDLE_BAT(APINT_TYPE_PREFIX, 23172) +HANDLE_BAT(APINT_TYPE_PREFIX, 23173) +HANDLE_BAT(APINT_TYPE_PREFIX, 23174) +HANDLE_BAT(APINT_TYPE_PREFIX, 23175) +HANDLE_BAT(APINT_TYPE_PREFIX, 23176) +HANDLE_BAT(APINT_TYPE_PREFIX, 23177) +HANDLE_BAT(APINT_TYPE_PREFIX, 23178) +HANDLE_BAT(APINT_TYPE_PREFIX, 23179) +HANDLE_BAT(APINT_TYPE_PREFIX, 23180) +HANDLE_BAT(APINT_TYPE_PREFIX, 23181) +HANDLE_BAT(APINT_TYPE_PREFIX, 23182) +HANDLE_BAT(APINT_TYPE_PREFIX, 23183) +HANDLE_BAT(APINT_TYPE_PREFIX, 23184) +HANDLE_BAT(APINT_TYPE_PREFIX, 23185) +HANDLE_BAT(APINT_TYPE_PREFIX, 23186) +HANDLE_BAT(APINT_TYPE_PREFIX, 23187) +HANDLE_BAT(APINT_TYPE_PREFIX, 23188) +HANDLE_BAT(APINT_TYPE_PREFIX, 23189) +HANDLE_BAT(APINT_TYPE_PREFIX, 23190) +HANDLE_BAT(APINT_TYPE_PREFIX, 23191) +HANDLE_BAT(APINT_TYPE_PREFIX, 23192) +HANDLE_BAT(APINT_TYPE_PREFIX, 23193) +HANDLE_BAT(APINT_TYPE_PREFIX, 23194) +HANDLE_BAT(APINT_TYPE_PREFIX, 23195) +HANDLE_BAT(APINT_TYPE_PREFIX, 23196) +HANDLE_BAT(APINT_TYPE_PREFIX, 23197) +HANDLE_BAT(APINT_TYPE_PREFIX, 23198) +HANDLE_BAT(APINT_TYPE_PREFIX, 23199) +HANDLE_BAT(APINT_TYPE_PREFIX, 23200) +HANDLE_BAT(APINT_TYPE_PREFIX, 23201) +HANDLE_BAT(APINT_TYPE_PREFIX, 23202) +HANDLE_BAT(APINT_TYPE_PREFIX, 23203) +HANDLE_BAT(APINT_TYPE_PREFIX, 23204) +HANDLE_BAT(APINT_TYPE_PREFIX, 23205) +HANDLE_BAT(APINT_TYPE_PREFIX, 23206) +HANDLE_BAT(APINT_TYPE_PREFIX, 23207) +HANDLE_BAT(APINT_TYPE_PREFIX, 23208) +HANDLE_BAT(APINT_TYPE_PREFIX, 23209) +HANDLE_BAT(APINT_TYPE_PREFIX, 23210) +HANDLE_BAT(APINT_TYPE_PREFIX, 23211) +HANDLE_BAT(APINT_TYPE_PREFIX, 23212) +HANDLE_BAT(APINT_TYPE_PREFIX, 23213) +HANDLE_BAT(APINT_TYPE_PREFIX, 23214) +HANDLE_BAT(APINT_TYPE_PREFIX, 23215) +HANDLE_BAT(APINT_TYPE_PREFIX, 23216) +HANDLE_BAT(APINT_TYPE_PREFIX, 23217) +HANDLE_BAT(APINT_TYPE_PREFIX, 23218) +HANDLE_BAT(APINT_TYPE_PREFIX, 23219) +HANDLE_BAT(APINT_TYPE_PREFIX, 23220) +HANDLE_BAT(APINT_TYPE_PREFIX, 23221) +HANDLE_BAT(APINT_TYPE_PREFIX, 23222) +HANDLE_BAT(APINT_TYPE_PREFIX, 23223) +HANDLE_BAT(APINT_TYPE_PREFIX, 23224) +HANDLE_BAT(APINT_TYPE_PREFIX, 23225) +HANDLE_BAT(APINT_TYPE_PREFIX, 23226) +HANDLE_BAT(APINT_TYPE_PREFIX, 23227) +HANDLE_BAT(APINT_TYPE_PREFIX, 23228) +HANDLE_BAT(APINT_TYPE_PREFIX, 23229) +HANDLE_BAT(APINT_TYPE_PREFIX, 23230) +HANDLE_BAT(APINT_TYPE_PREFIX, 23231) +HANDLE_BAT(APINT_TYPE_PREFIX, 23232) +HANDLE_BAT(APINT_TYPE_PREFIX, 23233) +HANDLE_BAT(APINT_TYPE_PREFIX, 23234) +HANDLE_BAT(APINT_TYPE_PREFIX, 23235) +HANDLE_BAT(APINT_TYPE_PREFIX, 23236) +HANDLE_BAT(APINT_TYPE_PREFIX, 23237) +HANDLE_BAT(APINT_TYPE_PREFIX, 23238) +HANDLE_BAT(APINT_TYPE_PREFIX, 23239) +HANDLE_BAT(APINT_TYPE_PREFIX, 23240) +HANDLE_BAT(APINT_TYPE_PREFIX, 23241) +HANDLE_BAT(APINT_TYPE_PREFIX, 23242) +HANDLE_BAT(APINT_TYPE_PREFIX, 23243) +HANDLE_BAT(APINT_TYPE_PREFIX, 23244) +HANDLE_BAT(APINT_TYPE_PREFIX, 23245) +HANDLE_BAT(APINT_TYPE_PREFIX, 23246) +HANDLE_BAT(APINT_TYPE_PREFIX, 23247) +HANDLE_BAT(APINT_TYPE_PREFIX, 23248) +HANDLE_BAT(APINT_TYPE_PREFIX, 23249) +HANDLE_BAT(APINT_TYPE_PREFIX, 23250) +HANDLE_BAT(APINT_TYPE_PREFIX, 23251) +HANDLE_BAT(APINT_TYPE_PREFIX, 23252) +HANDLE_BAT(APINT_TYPE_PREFIX, 23253) +HANDLE_BAT(APINT_TYPE_PREFIX, 23254) +HANDLE_BAT(APINT_TYPE_PREFIX, 23255) +HANDLE_BAT(APINT_TYPE_PREFIX, 23256) +HANDLE_BAT(APINT_TYPE_PREFIX, 23257) +HANDLE_BAT(APINT_TYPE_PREFIX, 23258) +HANDLE_BAT(APINT_TYPE_PREFIX, 23259) +HANDLE_BAT(APINT_TYPE_PREFIX, 23260) +HANDLE_BAT(APINT_TYPE_PREFIX, 23261) +HANDLE_BAT(APINT_TYPE_PREFIX, 23262) +HANDLE_BAT(APINT_TYPE_PREFIX, 23263) +HANDLE_BAT(APINT_TYPE_PREFIX, 23264) +HANDLE_BAT(APINT_TYPE_PREFIX, 23265) +HANDLE_BAT(APINT_TYPE_PREFIX, 23266) +HANDLE_BAT(APINT_TYPE_PREFIX, 23267) +HANDLE_BAT(APINT_TYPE_PREFIX, 23268) +HANDLE_BAT(APINT_TYPE_PREFIX, 23269) +HANDLE_BAT(APINT_TYPE_PREFIX, 23270) +HANDLE_BAT(APINT_TYPE_PREFIX, 23271) +HANDLE_BAT(APINT_TYPE_PREFIX, 23272) +HANDLE_BAT(APINT_TYPE_PREFIX, 23273) +HANDLE_BAT(APINT_TYPE_PREFIX, 23274) +HANDLE_BAT(APINT_TYPE_PREFIX, 23275) +HANDLE_BAT(APINT_TYPE_PREFIX, 23276) +HANDLE_BAT(APINT_TYPE_PREFIX, 23277) +HANDLE_BAT(APINT_TYPE_PREFIX, 23278) +HANDLE_BAT(APINT_TYPE_PREFIX, 23279) +HANDLE_BAT(APINT_TYPE_PREFIX, 23280) +HANDLE_BAT(APINT_TYPE_PREFIX, 23281) +HANDLE_BAT(APINT_TYPE_PREFIX, 23282) +HANDLE_BAT(APINT_TYPE_PREFIX, 23283) +HANDLE_BAT(APINT_TYPE_PREFIX, 23284) +HANDLE_BAT(APINT_TYPE_PREFIX, 23285) +HANDLE_BAT(APINT_TYPE_PREFIX, 23286) +HANDLE_BAT(APINT_TYPE_PREFIX, 23287) +HANDLE_BAT(APINT_TYPE_PREFIX, 23288) +HANDLE_BAT(APINT_TYPE_PREFIX, 23289) +HANDLE_BAT(APINT_TYPE_PREFIX, 23290) +HANDLE_BAT(APINT_TYPE_PREFIX, 23291) +HANDLE_BAT(APINT_TYPE_PREFIX, 23292) +HANDLE_BAT(APINT_TYPE_PREFIX, 23293) +HANDLE_BAT(APINT_TYPE_PREFIX, 23294) +HANDLE_BAT(APINT_TYPE_PREFIX, 23295) +HANDLE_BAT(APINT_TYPE_PREFIX, 23296) +HANDLE_BAT(APINT_TYPE_PREFIX, 23297) +HANDLE_BAT(APINT_TYPE_PREFIX, 23298) +HANDLE_BAT(APINT_TYPE_PREFIX, 23299) +HANDLE_BAT(APINT_TYPE_PREFIX, 23300) +HANDLE_BAT(APINT_TYPE_PREFIX, 23301) +HANDLE_BAT(APINT_TYPE_PREFIX, 23302) +HANDLE_BAT(APINT_TYPE_PREFIX, 23303) +HANDLE_BAT(APINT_TYPE_PREFIX, 23304) +HANDLE_BAT(APINT_TYPE_PREFIX, 23305) +HANDLE_BAT(APINT_TYPE_PREFIX, 23306) +HANDLE_BAT(APINT_TYPE_PREFIX, 23307) +HANDLE_BAT(APINT_TYPE_PREFIX, 23308) +HANDLE_BAT(APINT_TYPE_PREFIX, 23309) +HANDLE_BAT(APINT_TYPE_PREFIX, 23310) +HANDLE_BAT(APINT_TYPE_PREFIX, 23311) +HANDLE_BAT(APINT_TYPE_PREFIX, 23312) +HANDLE_BAT(APINT_TYPE_PREFIX, 23313) +HANDLE_BAT(APINT_TYPE_PREFIX, 23314) +HANDLE_BAT(APINT_TYPE_PREFIX, 23315) +HANDLE_BAT(APINT_TYPE_PREFIX, 23316) +HANDLE_BAT(APINT_TYPE_PREFIX, 23317) +HANDLE_BAT(APINT_TYPE_PREFIX, 23318) +HANDLE_BAT(APINT_TYPE_PREFIX, 23319) +HANDLE_BAT(APINT_TYPE_PREFIX, 23320) +HANDLE_BAT(APINT_TYPE_PREFIX, 23321) +HANDLE_BAT(APINT_TYPE_PREFIX, 23322) +HANDLE_BAT(APINT_TYPE_PREFIX, 23323) +HANDLE_BAT(APINT_TYPE_PREFIX, 23324) +HANDLE_BAT(APINT_TYPE_PREFIX, 23325) +HANDLE_BAT(APINT_TYPE_PREFIX, 23326) +HANDLE_BAT(APINT_TYPE_PREFIX, 23327) +HANDLE_BAT(APINT_TYPE_PREFIX, 23328) +HANDLE_BAT(APINT_TYPE_PREFIX, 23329) +HANDLE_BAT(APINT_TYPE_PREFIX, 23330) +HANDLE_BAT(APINT_TYPE_PREFIX, 23331) +HANDLE_BAT(APINT_TYPE_PREFIX, 23332) +HANDLE_BAT(APINT_TYPE_PREFIX, 23333) +HANDLE_BAT(APINT_TYPE_PREFIX, 23334) +HANDLE_BAT(APINT_TYPE_PREFIX, 23335) +HANDLE_BAT(APINT_TYPE_PREFIX, 23336) +HANDLE_BAT(APINT_TYPE_PREFIX, 23337) +HANDLE_BAT(APINT_TYPE_PREFIX, 23338) +HANDLE_BAT(APINT_TYPE_PREFIX, 23339) +HANDLE_BAT(APINT_TYPE_PREFIX, 23340) +HANDLE_BAT(APINT_TYPE_PREFIX, 23341) +HANDLE_BAT(APINT_TYPE_PREFIX, 23342) +HANDLE_BAT(APINT_TYPE_PREFIX, 23343) +HANDLE_BAT(APINT_TYPE_PREFIX, 23344) +HANDLE_BAT(APINT_TYPE_PREFIX, 23345) +HANDLE_BAT(APINT_TYPE_PREFIX, 23346) +HANDLE_BAT(APINT_TYPE_PREFIX, 23347) +HANDLE_BAT(APINT_TYPE_PREFIX, 23348) +HANDLE_BAT(APINT_TYPE_PREFIX, 23349) +HANDLE_BAT(APINT_TYPE_PREFIX, 23350) +HANDLE_BAT(APINT_TYPE_PREFIX, 23351) +HANDLE_BAT(APINT_TYPE_PREFIX, 23352) +HANDLE_BAT(APINT_TYPE_PREFIX, 23353) +HANDLE_BAT(APINT_TYPE_PREFIX, 23354) +HANDLE_BAT(APINT_TYPE_PREFIX, 23355) +HANDLE_BAT(APINT_TYPE_PREFIX, 23356) +HANDLE_BAT(APINT_TYPE_PREFIX, 23357) +HANDLE_BAT(APINT_TYPE_PREFIX, 23358) +HANDLE_BAT(APINT_TYPE_PREFIX, 23359) +HANDLE_BAT(APINT_TYPE_PREFIX, 23360) +HANDLE_BAT(APINT_TYPE_PREFIX, 23361) +HANDLE_BAT(APINT_TYPE_PREFIX, 23362) +HANDLE_BAT(APINT_TYPE_PREFIX, 23363) +HANDLE_BAT(APINT_TYPE_PREFIX, 23364) +HANDLE_BAT(APINT_TYPE_PREFIX, 23365) +HANDLE_BAT(APINT_TYPE_PREFIX, 23366) +HANDLE_BAT(APINT_TYPE_PREFIX, 23367) +HANDLE_BAT(APINT_TYPE_PREFIX, 23368) +HANDLE_BAT(APINT_TYPE_PREFIX, 23369) +HANDLE_BAT(APINT_TYPE_PREFIX, 23370) +HANDLE_BAT(APINT_TYPE_PREFIX, 23371) +HANDLE_BAT(APINT_TYPE_PREFIX, 23372) +HANDLE_BAT(APINT_TYPE_PREFIX, 23373) +HANDLE_BAT(APINT_TYPE_PREFIX, 23374) +HANDLE_BAT(APINT_TYPE_PREFIX, 23375) +HANDLE_BAT(APINT_TYPE_PREFIX, 23376) +HANDLE_BAT(APINT_TYPE_PREFIX, 23377) +HANDLE_BAT(APINT_TYPE_PREFIX, 23378) +HANDLE_BAT(APINT_TYPE_PREFIX, 23379) +HANDLE_BAT(APINT_TYPE_PREFIX, 23380) +HANDLE_BAT(APINT_TYPE_PREFIX, 23381) +HANDLE_BAT(APINT_TYPE_PREFIX, 23382) +HANDLE_BAT(APINT_TYPE_PREFIX, 23383) +HANDLE_BAT(APINT_TYPE_PREFIX, 23384) +HANDLE_BAT(APINT_TYPE_PREFIX, 23385) +HANDLE_BAT(APINT_TYPE_PREFIX, 23386) +HANDLE_BAT(APINT_TYPE_PREFIX, 23387) +HANDLE_BAT(APINT_TYPE_PREFIX, 23388) +HANDLE_BAT(APINT_TYPE_PREFIX, 23389) +HANDLE_BAT(APINT_TYPE_PREFIX, 23390) +HANDLE_BAT(APINT_TYPE_PREFIX, 23391) +HANDLE_BAT(APINT_TYPE_PREFIX, 23392) +HANDLE_BAT(APINT_TYPE_PREFIX, 23393) +HANDLE_BAT(APINT_TYPE_PREFIX, 23394) +HANDLE_BAT(APINT_TYPE_PREFIX, 23395) +HANDLE_BAT(APINT_TYPE_PREFIX, 23396) +HANDLE_BAT(APINT_TYPE_PREFIX, 23397) +HANDLE_BAT(APINT_TYPE_PREFIX, 23398) +HANDLE_BAT(APINT_TYPE_PREFIX, 23399) +HANDLE_BAT(APINT_TYPE_PREFIX, 23400) +HANDLE_BAT(APINT_TYPE_PREFIX, 23401) +HANDLE_BAT(APINT_TYPE_PREFIX, 23402) +HANDLE_BAT(APINT_TYPE_PREFIX, 23403) +HANDLE_BAT(APINT_TYPE_PREFIX, 23404) +HANDLE_BAT(APINT_TYPE_PREFIX, 23405) +HANDLE_BAT(APINT_TYPE_PREFIX, 23406) +HANDLE_BAT(APINT_TYPE_PREFIX, 23407) +HANDLE_BAT(APINT_TYPE_PREFIX, 23408) +HANDLE_BAT(APINT_TYPE_PREFIX, 23409) +HANDLE_BAT(APINT_TYPE_PREFIX, 23410) +HANDLE_BAT(APINT_TYPE_PREFIX, 23411) +HANDLE_BAT(APINT_TYPE_PREFIX, 23412) +HANDLE_BAT(APINT_TYPE_PREFIX, 23413) +HANDLE_BAT(APINT_TYPE_PREFIX, 23414) +HANDLE_BAT(APINT_TYPE_PREFIX, 23415) +HANDLE_BAT(APINT_TYPE_PREFIX, 23416) +HANDLE_BAT(APINT_TYPE_PREFIX, 23417) +HANDLE_BAT(APINT_TYPE_PREFIX, 23418) +HANDLE_BAT(APINT_TYPE_PREFIX, 23419) +HANDLE_BAT(APINT_TYPE_PREFIX, 23420) +HANDLE_BAT(APINT_TYPE_PREFIX, 23421) +HANDLE_BAT(APINT_TYPE_PREFIX, 23422) +HANDLE_BAT(APINT_TYPE_PREFIX, 23423) +HANDLE_BAT(APINT_TYPE_PREFIX, 23424) +HANDLE_BAT(APINT_TYPE_PREFIX, 23425) +HANDLE_BAT(APINT_TYPE_PREFIX, 23426) +HANDLE_BAT(APINT_TYPE_PREFIX, 23427) +HANDLE_BAT(APINT_TYPE_PREFIX, 23428) +HANDLE_BAT(APINT_TYPE_PREFIX, 23429) +HANDLE_BAT(APINT_TYPE_PREFIX, 23430) +HANDLE_BAT(APINT_TYPE_PREFIX, 23431) +HANDLE_BAT(APINT_TYPE_PREFIX, 23432) +HANDLE_BAT(APINT_TYPE_PREFIX, 23433) +HANDLE_BAT(APINT_TYPE_PREFIX, 23434) +HANDLE_BAT(APINT_TYPE_PREFIX, 23435) +HANDLE_BAT(APINT_TYPE_PREFIX, 23436) +HANDLE_BAT(APINT_TYPE_PREFIX, 23437) +HANDLE_BAT(APINT_TYPE_PREFIX, 23438) +HANDLE_BAT(APINT_TYPE_PREFIX, 23439) +HANDLE_BAT(APINT_TYPE_PREFIX, 23440) +HANDLE_BAT(APINT_TYPE_PREFIX, 23441) +HANDLE_BAT(APINT_TYPE_PREFIX, 23442) +HANDLE_BAT(APINT_TYPE_PREFIX, 23443) +HANDLE_BAT(APINT_TYPE_PREFIX, 23444) +HANDLE_BAT(APINT_TYPE_PREFIX, 23445) +HANDLE_BAT(APINT_TYPE_PREFIX, 23446) +HANDLE_BAT(APINT_TYPE_PREFIX, 23447) +HANDLE_BAT(APINT_TYPE_PREFIX, 23448) +HANDLE_BAT(APINT_TYPE_PREFIX, 23449) +HANDLE_BAT(APINT_TYPE_PREFIX, 23450) +HANDLE_BAT(APINT_TYPE_PREFIX, 23451) +HANDLE_BAT(APINT_TYPE_PREFIX, 23452) +HANDLE_BAT(APINT_TYPE_PREFIX, 23453) +HANDLE_BAT(APINT_TYPE_PREFIX, 23454) +HANDLE_BAT(APINT_TYPE_PREFIX, 23455) +HANDLE_BAT(APINT_TYPE_PREFIX, 23456) +HANDLE_BAT(APINT_TYPE_PREFIX, 23457) +HANDLE_BAT(APINT_TYPE_PREFIX, 23458) +HANDLE_BAT(APINT_TYPE_PREFIX, 23459) +HANDLE_BAT(APINT_TYPE_PREFIX, 23460) +HANDLE_BAT(APINT_TYPE_PREFIX, 23461) +HANDLE_BAT(APINT_TYPE_PREFIX, 23462) +HANDLE_BAT(APINT_TYPE_PREFIX, 23463) +HANDLE_BAT(APINT_TYPE_PREFIX, 23464) +HANDLE_BAT(APINT_TYPE_PREFIX, 23465) +HANDLE_BAT(APINT_TYPE_PREFIX, 23466) +HANDLE_BAT(APINT_TYPE_PREFIX, 23467) +HANDLE_BAT(APINT_TYPE_PREFIX, 23468) +HANDLE_BAT(APINT_TYPE_PREFIX, 23469) +HANDLE_BAT(APINT_TYPE_PREFIX, 23470) +HANDLE_BAT(APINT_TYPE_PREFIX, 23471) +HANDLE_BAT(APINT_TYPE_PREFIX, 23472) +HANDLE_BAT(APINT_TYPE_PREFIX, 23473) +HANDLE_BAT(APINT_TYPE_PREFIX, 23474) +HANDLE_BAT(APINT_TYPE_PREFIX, 23475) +HANDLE_BAT(APINT_TYPE_PREFIX, 23476) +HANDLE_BAT(APINT_TYPE_PREFIX, 23477) +HANDLE_BAT(APINT_TYPE_PREFIX, 23478) +HANDLE_BAT(APINT_TYPE_PREFIX, 23479) +HANDLE_BAT(APINT_TYPE_PREFIX, 23480) +HANDLE_BAT(APINT_TYPE_PREFIX, 23481) +HANDLE_BAT(APINT_TYPE_PREFIX, 23482) +HANDLE_BAT(APINT_TYPE_PREFIX, 23483) +HANDLE_BAT(APINT_TYPE_PREFIX, 23484) +HANDLE_BAT(APINT_TYPE_PREFIX, 23485) +HANDLE_BAT(APINT_TYPE_PREFIX, 23486) +HANDLE_BAT(APINT_TYPE_PREFIX, 23487) +HANDLE_BAT(APINT_TYPE_PREFIX, 23488) +HANDLE_BAT(APINT_TYPE_PREFIX, 23489) +HANDLE_BAT(APINT_TYPE_PREFIX, 23490) +HANDLE_BAT(APINT_TYPE_PREFIX, 23491) +HANDLE_BAT(APINT_TYPE_PREFIX, 23492) +HANDLE_BAT(APINT_TYPE_PREFIX, 23493) +HANDLE_BAT(APINT_TYPE_PREFIX, 23494) +HANDLE_BAT(APINT_TYPE_PREFIX, 23495) +HANDLE_BAT(APINT_TYPE_PREFIX, 23496) +HANDLE_BAT(APINT_TYPE_PREFIX, 23497) +HANDLE_BAT(APINT_TYPE_PREFIX, 23498) +HANDLE_BAT(APINT_TYPE_PREFIX, 23499) +HANDLE_BAT(APINT_TYPE_PREFIX, 23500) +HANDLE_BAT(APINT_TYPE_PREFIX, 23501) +HANDLE_BAT(APINT_TYPE_PREFIX, 23502) +HANDLE_BAT(APINT_TYPE_PREFIX, 23503) +HANDLE_BAT(APINT_TYPE_PREFIX, 23504) +HANDLE_BAT(APINT_TYPE_PREFIX, 23505) +HANDLE_BAT(APINT_TYPE_PREFIX, 23506) +HANDLE_BAT(APINT_TYPE_PREFIX, 23507) +HANDLE_BAT(APINT_TYPE_PREFIX, 23508) +HANDLE_BAT(APINT_TYPE_PREFIX, 23509) +HANDLE_BAT(APINT_TYPE_PREFIX, 23510) +HANDLE_BAT(APINT_TYPE_PREFIX, 23511) +HANDLE_BAT(APINT_TYPE_PREFIX, 23512) +HANDLE_BAT(APINT_TYPE_PREFIX, 23513) +HANDLE_BAT(APINT_TYPE_PREFIX, 23514) +HANDLE_BAT(APINT_TYPE_PREFIX, 23515) +HANDLE_BAT(APINT_TYPE_PREFIX, 23516) +HANDLE_BAT(APINT_TYPE_PREFIX, 23517) +HANDLE_BAT(APINT_TYPE_PREFIX, 23518) +HANDLE_BAT(APINT_TYPE_PREFIX, 23519) +HANDLE_BAT(APINT_TYPE_PREFIX, 23520) +HANDLE_BAT(APINT_TYPE_PREFIX, 23521) +HANDLE_BAT(APINT_TYPE_PREFIX, 23522) +HANDLE_BAT(APINT_TYPE_PREFIX, 23523) +HANDLE_BAT(APINT_TYPE_PREFIX, 23524) +HANDLE_BAT(APINT_TYPE_PREFIX, 23525) +HANDLE_BAT(APINT_TYPE_PREFIX, 23526) +HANDLE_BAT(APINT_TYPE_PREFIX, 23527) +HANDLE_BAT(APINT_TYPE_PREFIX, 23528) +HANDLE_BAT(APINT_TYPE_PREFIX, 23529) +HANDLE_BAT(APINT_TYPE_PREFIX, 23530) +HANDLE_BAT(APINT_TYPE_PREFIX, 23531) +HANDLE_BAT(APINT_TYPE_PREFIX, 23532) +HANDLE_BAT(APINT_TYPE_PREFIX, 23533) +HANDLE_BAT(APINT_TYPE_PREFIX, 23534) +HANDLE_BAT(APINT_TYPE_PREFIX, 23535) +HANDLE_BAT(APINT_TYPE_PREFIX, 23536) +HANDLE_BAT(APINT_TYPE_PREFIX, 23537) +HANDLE_BAT(APINT_TYPE_PREFIX, 23538) +HANDLE_BAT(APINT_TYPE_PREFIX, 23539) +HANDLE_BAT(APINT_TYPE_PREFIX, 23540) +HANDLE_BAT(APINT_TYPE_PREFIX, 23541) +HANDLE_BAT(APINT_TYPE_PREFIX, 23542) +HANDLE_BAT(APINT_TYPE_PREFIX, 23543) +HANDLE_BAT(APINT_TYPE_PREFIX, 23544) +HANDLE_BAT(APINT_TYPE_PREFIX, 23545) +HANDLE_BAT(APINT_TYPE_PREFIX, 23546) +HANDLE_BAT(APINT_TYPE_PREFIX, 23547) +HANDLE_BAT(APINT_TYPE_PREFIX, 23548) +HANDLE_BAT(APINT_TYPE_PREFIX, 23549) +HANDLE_BAT(APINT_TYPE_PREFIX, 23550) +HANDLE_BAT(APINT_TYPE_PREFIX, 23551) +HANDLE_BAT(APINT_TYPE_PREFIX, 23552) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 23 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 23553) +HANDLE_BAT(, 23554) +HANDLE_BAT(, 23555) +HANDLE_BAT(, 23556) +HANDLE_BAT(, 23557) +HANDLE_BAT(, 23558) +HANDLE_BAT(, 23559) +HANDLE_BAT(, 23560) +HANDLE_BAT(, 23561) +HANDLE_BAT(, 23562) +HANDLE_BAT(, 23563) +HANDLE_BAT(, 23564) +HANDLE_BAT(, 23565) +HANDLE_BAT(, 23566) +HANDLE_BAT(, 23567) +HANDLE_BAT(, 23568) +HANDLE_BAT(, 23569) +HANDLE_BAT(, 23570) +HANDLE_BAT(, 23571) +HANDLE_BAT(, 23572) +HANDLE_BAT(, 23573) +HANDLE_BAT(, 23574) +HANDLE_BAT(, 23575) +HANDLE_BAT(, 23576) +HANDLE_BAT(, 23577) +HANDLE_BAT(, 23578) +HANDLE_BAT(, 23579) +HANDLE_BAT(, 23580) +HANDLE_BAT(, 23581) +HANDLE_BAT(, 23582) +HANDLE_BAT(, 23583) +HANDLE_BAT(, 23584) +HANDLE_BAT(, 23585) +HANDLE_BAT(, 23586) +HANDLE_BAT(, 23587) +HANDLE_BAT(, 23588) +HANDLE_BAT(, 23589) +HANDLE_BAT(, 23590) +HANDLE_BAT(, 23591) +HANDLE_BAT(, 23592) +HANDLE_BAT(, 23593) +HANDLE_BAT(, 23594) +HANDLE_BAT(, 23595) +HANDLE_BAT(, 23596) +HANDLE_BAT(, 23597) +HANDLE_BAT(, 23598) +HANDLE_BAT(, 23599) +HANDLE_BAT(, 23600) +HANDLE_BAT(, 23601) +HANDLE_BAT(, 23602) +HANDLE_BAT(, 23603) +HANDLE_BAT(, 23604) +HANDLE_BAT(, 23605) +HANDLE_BAT(, 23606) +HANDLE_BAT(, 23607) +HANDLE_BAT(, 23608) +HANDLE_BAT(, 23609) +HANDLE_BAT(, 23610) +HANDLE_BAT(, 23611) +HANDLE_BAT(, 23612) +HANDLE_BAT(, 23613) +HANDLE_BAT(, 23614) +HANDLE_BAT(, 23615) +HANDLE_BAT(, 23616) +HANDLE_BAT(, 23617) +HANDLE_BAT(, 23618) +HANDLE_BAT(, 23619) +HANDLE_BAT(, 23620) +HANDLE_BAT(, 23621) +HANDLE_BAT(, 23622) +HANDLE_BAT(, 23623) +HANDLE_BAT(, 23624) +HANDLE_BAT(, 23625) +HANDLE_BAT(, 23626) +HANDLE_BAT(, 23627) +HANDLE_BAT(, 23628) +HANDLE_BAT(, 23629) +HANDLE_BAT(, 23630) +HANDLE_BAT(, 23631) +HANDLE_BAT(, 23632) +HANDLE_BAT(, 23633) +HANDLE_BAT(, 23634) +HANDLE_BAT(, 23635) +HANDLE_BAT(, 23636) +HANDLE_BAT(, 23637) +HANDLE_BAT(, 23638) +HANDLE_BAT(, 23639) +HANDLE_BAT(, 23640) +HANDLE_BAT(, 23641) +HANDLE_BAT(, 23642) +HANDLE_BAT(, 23643) +HANDLE_BAT(, 23644) +HANDLE_BAT(, 23645) +HANDLE_BAT(, 23646) +HANDLE_BAT(, 23647) +HANDLE_BAT(, 23648) +HANDLE_BAT(, 23649) +HANDLE_BAT(, 23650) +HANDLE_BAT(, 23651) +HANDLE_BAT(, 23652) +HANDLE_BAT(, 23653) +HANDLE_BAT(, 23654) +HANDLE_BAT(, 23655) +HANDLE_BAT(, 23656) +HANDLE_BAT(, 23657) +HANDLE_BAT(, 23658) +HANDLE_BAT(, 23659) +HANDLE_BAT(, 23660) +HANDLE_BAT(, 23661) +HANDLE_BAT(, 23662) +HANDLE_BAT(, 23663) +HANDLE_BAT(, 23664) +HANDLE_BAT(, 23665) +HANDLE_BAT(, 23666) +HANDLE_BAT(, 23667) +HANDLE_BAT(, 23668) +HANDLE_BAT(, 23669) +HANDLE_BAT(, 23670) +HANDLE_BAT(, 23671) +HANDLE_BAT(, 23672) +HANDLE_BAT(, 23673) +HANDLE_BAT(, 23674) +HANDLE_BAT(, 23675) +HANDLE_BAT(, 23676) +HANDLE_BAT(, 23677) +HANDLE_BAT(, 23678) +HANDLE_BAT(, 23679) +HANDLE_BAT(, 23680) +HANDLE_BAT(, 23681) +HANDLE_BAT(, 23682) +HANDLE_BAT(, 23683) +HANDLE_BAT(, 23684) +HANDLE_BAT(, 23685) +HANDLE_BAT(, 23686) +HANDLE_BAT(, 23687) +HANDLE_BAT(, 23688) +HANDLE_BAT(, 23689) +HANDLE_BAT(, 23690) +HANDLE_BAT(, 23691) +HANDLE_BAT(, 23692) +HANDLE_BAT(, 23693) +HANDLE_BAT(, 23694) +HANDLE_BAT(, 23695) +HANDLE_BAT(, 23696) +HANDLE_BAT(, 23697) +HANDLE_BAT(, 23698) +HANDLE_BAT(, 23699) +HANDLE_BAT(, 23700) +HANDLE_BAT(, 23701) +HANDLE_BAT(, 23702) +HANDLE_BAT(, 23703) +HANDLE_BAT(, 23704) +HANDLE_BAT(, 23705) +HANDLE_BAT(, 23706) +HANDLE_BAT(, 23707) +HANDLE_BAT(, 23708) +HANDLE_BAT(, 23709) +HANDLE_BAT(, 23710) +HANDLE_BAT(, 23711) +HANDLE_BAT(, 23712) +HANDLE_BAT(, 23713) +HANDLE_BAT(, 23714) +HANDLE_BAT(, 23715) +HANDLE_BAT(, 23716) +HANDLE_BAT(, 23717) +HANDLE_BAT(, 23718) +HANDLE_BAT(, 23719) +HANDLE_BAT(, 23720) +HANDLE_BAT(, 23721) +HANDLE_BAT(, 23722) +HANDLE_BAT(, 23723) +HANDLE_BAT(, 23724) +HANDLE_BAT(, 23725) +HANDLE_BAT(, 23726) +HANDLE_BAT(, 23727) +HANDLE_BAT(, 23728) +HANDLE_BAT(, 23729) +HANDLE_BAT(, 23730) +HANDLE_BAT(, 23731) +HANDLE_BAT(, 23732) +HANDLE_BAT(, 23733) +HANDLE_BAT(, 23734) +HANDLE_BAT(, 23735) +HANDLE_BAT(, 23736) +HANDLE_BAT(, 23737) +HANDLE_BAT(, 23738) +HANDLE_BAT(, 23739) +HANDLE_BAT(, 23740) +HANDLE_BAT(, 23741) +HANDLE_BAT(, 23742) +HANDLE_BAT(, 23743) +HANDLE_BAT(, 23744) +HANDLE_BAT(, 23745) +HANDLE_BAT(, 23746) +HANDLE_BAT(, 23747) +HANDLE_BAT(, 23748) +HANDLE_BAT(, 23749) +HANDLE_BAT(, 23750) +HANDLE_BAT(, 23751) +HANDLE_BAT(, 23752) +HANDLE_BAT(, 23753) +HANDLE_BAT(, 23754) +HANDLE_BAT(, 23755) +HANDLE_BAT(, 23756) +HANDLE_BAT(, 23757) +HANDLE_BAT(, 23758) +HANDLE_BAT(, 23759) +HANDLE_BAT(, 23760) +HANDLE_BAT(, 23761) +HANDLE_BAT(, 23762) +HANDLE_BAT(, 23763) +HANDLE_BAT(, 23764) +HANDLE_BAT(, 23765) +HANDLE_BAT(, 23766) +HANDLE_BAT(, 23767) +HANDLE_BAT(, 23768) +HANDLE_BAT(, 23769) +HANDLE_BAT(, 23770) +HANDLE_BAT(, 23771) +HANDLE_BAT(, 23772) +HANDLE_BAT(, 23773) +HANDLE_BAT(, 23774) +HANDLE_BAT(, 23775) +HANDLE_BAT(, 23776) +HANDLE_BAT(, 23777) +HANDLE_BAT(, 23778) +HANDLE_BAT(, 23779) +HANDLE_BAT(, 23780) +HANDLE_BAT(, 23781) +HANDLE_BAT(, 23782) +HANDLE_BAT(, 23783) +HANDLE_BAT(, 23784) +HANDLE_BAT(, 23785) +HANDLE_BAT(, 23786) +HANDLE_BAT(, 23787) +HANDLE_BAT(, 23788) +HANDLE_BAT(, 23789) +HANDLE_BAT(, 23790) +HANDLE_BAT(, 23791) +HANDLE_BAT(, 23792) +HANDLE_BAT(, 23793) +HANDLE_BAT(, 23794) +HANDLE_BAT(, 23795) +HANDLE_BAT(, 23796) +HANDLE_BAT(, 23797) +HANDLE_BAT(, 23798) +HANDLE_BAT(, 23799) +HANDLE_BAT(, 23800) +HANDLE_BAT(, 23801) +HANDLE_BAT(, 23802) +HANDLE_BAT(, 23803) +HANDLE_BAT(, 23804) +HANDLE_BAT(, 23805) +HANDLE_BAT(, 23806) +HANDLE_BAT(, 23807) +HANDLE_BAT(, 23808) +HANDLE_BAT(, 23809) +HANDLE_BAT(, 23810) +HANDLE_BAT(, 23811) +HANDLE_BAT(, 23812) +HANDLE_BAT(, 23813) +HANDLE_BAT(, 23814) +HANDLE_BAT(, 23815) +HANDLE_BAT(, 23816) +HANDLE_BAT(, 23817) +HANDLE_BAT(, 23818) +HANDLE_BAT(, 23819) +HANDLE_BAT(, 23820) +HANDLE_BAT(, 23821) +HANDLE_BAT(, 23822) +HANDLE_BAT(, 23823) +HANDLE_BAT(, 23824) +HANDLE_BAT(, 23825) +HANDLE_BAT(, 23826) +HANDLE_BAT(, 23827) +HANDLE_BAT(, 23828) +HANDLE_BAT(, 23829) +HANDLE_BAT(, 23830) +HANDLE_BAT(, 23831) +HANDLE_BAT(, 23832) +HANDLE_BAT(, 23833) +HANDLE_BAT(, 23834) +HANDLE_BAT(, 23835) +HANDLE_BAT(, 23836) +HANDLE_BAT(, 23837) +HANDLE_BAT(, 23838) +HANDLE_BAT(, 23839) +HANDLE_BAT(, 23840) +HANDLE_BAT(, 23841) +HANDLE_BAT(, 23842) +HANDLE_BAT(, 23843) +HANDLE_BAT(, 23844) +HANDLE_BAT(, 23845) +HANDLE_BAT(, 23846) +HANDLE_BAT(, 23847) +HANDLE_BAT(, 23848) +HANDLE_BAT(, 23849) +HANDLE_BAT(, 23850) +HANDLE_BAT(, 23851) +HANDLE_BAT(, 23852) +HANDLE_BAT(, 23853) +HANDLE_BAT(, 23854) +HANDLE_BAT(, 23855) +HANDLE_BAT(, 23856) +HANDLE_BAT(, 23857) +HANDLE_BAT(, 23858) +HANDLE_BAT(, 23859) +HANDLE_BAT(, 23860) +HANDLE_BAT(, 23861) +HANDLE_BAT(, 23862) +HANDLE_BAT(, 23863) +HANDLE_BAT(, 23864) +HANDLE_BAT(, 23865) +HANDLE_BAT(, 23866) +HANDLE_BAT(, 23867) +HANDLE_BAT(, 23868) +HANDLE_BAT(, 23869) +HANDLE_BAT(, 23870) +HANDLE_BAT(, 23871) +HANDLE_BAT(, 23872) +HANDLE_BAT(, 23873) +HANDLE_BAT(, 23874) +HANDLE_BAT(, 23875) +HANDLE_BAT(, 23876) +HANDLE_BAT(, 23877) +HANDLE_BAT(, 23878) +HANDLE_BAT(, 23879) +HANDLE_BAT(, 23880) +HANDLE_BAT(, 23881) +HANDLE_BAT(, 23882) +HANDLE_BAT(, 23883) +HANDLE_BAT(, 23884) +HANDLE_BAT(, 23885) +HANDLE_BAT(, 23886) +HANDLE_BAT(, 23887) +HANDLE_BAT(, 23888) +HANDLE_BAT(, 23889) +HANDLE_BAT(, 23890) +HANDLE_BAT(, 23891) +HANDLE_BAT(, 23892) +HANDLE_BAT(, 23893) +HANDLE_BAT(, 23894) +HANDLE_BAT(, 23895) +HANDLE_BAT(, 23896) +HANDLE_BAT(, 23897) +HANDLE_BAT(, 23898) +HANDLE_BAT(, 23899) +HANDLE_BAT(, 23900) +HANDLE_BAT(, 23901) +HANDLE_BAT(, 23902) +HANDLE_BAT(, 23903) +HANDLE_BAT(, 23904) +HANDLE_BAT(, 23905) +HANDLE_BAT(, 23906) +HANDLE_BAT(, 23907) +HANDLE_BAT(, 23908) +HANDLE_BAT(, 23909) +HANDLE_BAT(, 23910) +HANDLE_BAT(, 23911) +HANDLE_BAT(, 23912) +HANDLE_BAT(, 23913) +HANDLE_BAT(, 23914) +HANDLE_BAT(, 23915) +HANDLE_BAT(, 23916) +HANDLE_BAT(, 23917) +HANDLE_BAT(, 23918) +HANDLE_BAT(, 23919) +HANDLE_BAT(, 23920) +HANDLE_BAT(, 23921) +HANDLE_BAT(, 23922) +HANDLE_BAT(, 23923) +HANDLE_BAT(, 23924) +HANDLE_BAT(, 23925) +HANDLE_BAT(, 23926) +HANDLE_BAT(, 23927) +HANDLE_BAT(, 23928) +HANDLE_BAT(, 23929) +HANDLE_BAT(, 23930) +HANDLE_BAT(, 23931) +HANDLE_BAT(, 23932) +HANDLE_BAT(, 23933) +HANDLE_BAT(, 23934) +HANDLE_BAT(, 23935) +HANDLE_BAT(, 23936) +HANDLE_BAT(, 23937) +HANDLE_BAT(, 23938) +HANDLE_BAT(, 23939) +HANDLE_BAT(, 23940) +HANDLE_BAT(, 23941) +HANDLE_BAT(, 23942) +HANDLE_BAT(, 23943) +HANDLE_BAT(, 23944) +HANDLE_BAT(, 23945) +HANDLE_BAT(, 23946) +HANDLE_BAT(, 23947) +HANDLE_BAT(, 23948) +HANDLE_BAT(, 23949) +HANDLE_BAT(, 23950) +HANDLE_BAT(, 23951) +HANDLE_BAT(, 23952) +HANDLE_BAT(, 23953) +HANDLE_BAT(, 23954) +HANDLE_BAT(, 23955) +HANDLE_BAT(, 23956) +HANDLE_BAT(, 23957) +HANDLE_BAT(, 23958) +HANDLE_BAT(, 23959) +HANDLE_BAT(, 23960) +HANDLE_BAT(, 23961) +HANDLE_BAT(, 23962) +HANDLE_BAT(, 23963) +HANDLE_BAT(, 23964) +HANDLE_BAT(, 23965) +HANDLE_BAT(, 23966) +HANDLE_BAT(, 23967) +HANDLE_BAT(, 23968) +HANDLE_BAT(, 23969) +HANDLE_BAT(, 23970) +HANDLE_BAT(, 23971) +HANDLE_BAT(, 23972) +HANDLE_BAT(, 23973) +HANDLE_BAT(, 23974) +HANDLE_BAT(, 23975) +HANDLE_BAT(, 23976) +HANDLE_BAT(, 23977) +HANDLE_BAT(, 23978) +HANDLE_BAT(, 23979) +HANDLE_BAT(, 23980) +HANDLE_BAT(, 23981) +HANDLE_BAT(, 23982) +HANDLE_BAT(, 23983) +HANDLE_BAT(, 23984) +HANDLE_BAT(, 23985) +HANDLE_BAT(, 23986) +HANDLE_BAT(, 23987) +HANDLE_BAT(, 23988) +HANDLE_BAT(, 23989) +HANDLE_BAT(, 23990) +HANDLE_BAT(, 23991) +HANDLE_BAT(, 23992) +HANDLE_BAT(, 23993) +HANDLE_BAT(, 23994) +HANDLE_BAT(, 23995) +HANDLE_BAT(, 23996) +HANDLE_BAT(, 23997) +HANDLE_BAT(, 23998) +HANDLE_BAT(, 23999) +HANDLE_BAT(, 24000) +HANDLE_BAT(, 24001) +HANDLE_BAT(, 24002) +HANDLE_BAT(, 24003) +HANDLE_BAT(, 24004) +HANDLE_BAT(, 24005) +HANDLE_BAT(, 24006) +HANDLE_BAT(, 24007) +HANDLE_BAT(, 24008) +HANDLE_BAT(, 24009) +HANDLE_BAT(, 24010) +HANDLE_BAT(, 24011) +HANDLE_BAT(, 24012) +HANDLE_BAT(, 24013) +HANDLE_BAT(, 24014) +HANDLE_BAT(, 24015) +HANDLE_BAT(, 24016) +HANDLE_BAT(, 24017) +HANDLE_BAT(, 24018) +HANDLE_BAT(, 24019) +HANDLE_BAT(, 24020) +HANDLE_BAT(, 24021) +HANDLE_BAT(, 24022) +HANDLE_BAT(, 24023) +HANDLE_BAT(, 24024) +HANDLE_BAT(, 24025) +HANDLE_BAT(, 24026) +HANDLE_BAT(, 24027) +HANDLE_BAT(, 24028) +HANDLE_BAT(, 24029) +HANDLE_BAT(, 24030) +HANDLE_BAT(, 24031) +HANDLE_BAT(, 24032) +HANDLE_BAT(, 24033) +HANDLE_BAT(, 24034) +HANDLE_BAT(, 24035) +HANDLE_BAT(, 24036) +HANDLE_BAT(, 24037) +HANDLE_BAT(, 24038) +HANDLE_BAT(, 24039) +HANDLE_BAT(, 24040) +HANDLE_BAT(, 24041) +HANDLE_BAT(, 24042) +HANDLE_BAT(, 24043) +HANDLE_BAT(, 24044) +HANDLE_BAT(, 24045) +HANDLE_BAT(, 24046) +HANDLE_BAT(, 24047) +HANDLE_BAT(, 24048) +HANDLE_BAT(, 24049) +HANDLE_BAT(, 24050) +HANDLE_BAT(, 24051) +HANDLE_BAT(, 24052) +HANDLE_BAT(, 24053) +HANDLE_BAT(, 24054) +HANDLE_BAT(, 24055) +HANDLE_BAT(, 24056) +HANDLE_BAT(, 24057) +HANDLE_BAT(, 24058) +HANDLE_BAT(, 24059) +HANDLE_BAT(, 24060) +HANDLE_BAT(, 24061) +HANDLE_BAT(, 24062) +HANDLE_BAT(, 24063) +HANDLE_BAT(, 24064) +HANDLE_BAT(, 24065) +HANDLE_BAT(, 24066) +HANDLE_BAT(, 24067) +HANDLE_BAT(, 24068) +HANDLE_BAT(, 24069) +HANDLE_BAT(, 24070) +HANDLE_BAT(, 24071) +HANDLE_BAT(, 24072) +HANDLE_BAT(, 24073) +HANDLE_BAT(, 24074) +HANDLE_BAT(, 24075) +HANDLE_BAT(, 24076) +HANDLE_BAT(, 24077) +HANDLE_BAT(, 24078) +HANDLE_BAT(, 24079) +HANDLE_BAT(, 24080) +HANDLE_BAT(, 24081) +HANDLE_BAT(, 24082) +HANDLE_BAT(, 24083) +HANDLE_BAT(, 24084) +HANDLE_BAT(, 24085) +HANDLE_BAT(, 24086) +HANDLE_BAT(, 24087) +HANDLE_BAT(, 24088) +HANDLE_BAT(, 24089) +HANDLE_BAT(, 24090) +HANDLE_BAT(, 24091) +HANDLE_BAT(, 24092) +HANDLE_BAT(, 24093) +HANDLE_BAT(, 24094) +HANDLE_BAT(, 24095) +HANDLE_BAT(, 24096) +HANDLE_BAT(, 24097) +HANDLE_BAT(, 24098) +HANDLE_BAT(, 24099) +HANDLE_BAT(, 24100) +HANDLE_BAT(, 24101) +HANDLE_BAT(, 24102) +HANDLE_BAT(, 24103) +HANDLE_BAT(, 24104) +HANDLE_BAT(, 24105) +HANDLE_BAT(, 24106) +HANDLE_BAT(, 24107) +HANDLE_BAT(, 24108) +HANDLE_BAT(, 24109) +HANDLE_BAT(, 24110) +HANDLE_BAT(, 24111) +HANDLE_BAT(, 24112) +HANDLE_BAT(, 24113) +HANDLE_BAT(, 24114) +HANDLE_BAT(, 24115) +HANDLE_BAT(, 24116) +HANDLE_BAT(, 24117) +HANDLE_BAT(, 24118) +HANDLE_BAT(, 24119) +HANDLE_BAT(, 24120) +HANDLE_BAT(, 24121) +HANDLE_BAT(, 24122) +HANDLE_BAT(, 24123) +HANDLE_BAT(, 24124) +HANDLE_BAT(, 24125) +HANDLE_BAT(, 24126) +HANDLE_BAT(, 24127) +HANDLE_BAT(, 24128) +HANDLE_BAT(, 24129) +HANDLE_BAT(, 24130) +HANDLE_BAT(, 24131) +HANDLE_BAT(, 24132) +HANDLE_BAT(, 24133) +HANDLE_BAT(, 24134) +HANDLE_BAT(, 24135) +HANDLE_BAT(, 24136) +HANDLE_BAT(, 24137) +HANDLE_BAT(, 24138) +HANDLE_BAT(, 24139) +HANDLE_BAT(, 24140) +HANDLE_BAT(, 24141) +HANDLE_BAT(, 24142) +HANDLE_BAT(, 24143) +HANDLE_BAT(, 24144) +HANDLE_BAT(, 24145) +HANDLE_BAT(, 24146) +HANDLE_BAT(, 24147) +HANDLE_BAT(, 24148) +HANDLE_BAT(, 24149) +HANDLE_BAT(, 24150) +HANDLE_BAT(, 24151) +HANDLE_BAT(, 24152) +HANDLE_BAT(, 24153) +HANDLE_BAT(, 24154) +HANDLE_BAT(, 24155) +HANDLE_BAT(, 24156) +HANDLE_BAT(, 24157) +HANDLE_BAT(, 24158) +HANDLE_BAT(, 24159) +HANDLE_BAT(, 24160) +HANDLE_BAT(, 24161) +HANDLE_BAT(, 24162) +HANDLE_BAT(, 24163) +HANDLE_BAT(, 24164) +HANDLE_BAT(, 24165) +HANDLE_BAT(, 24166) +HANDLE_BAT(, 24167) +HANDLE_BAT(, 24168) +HANDLE_BAT(, 24169) +HANDLE_BAT(, 24170) +HANDLE_BAT(, 24171) +HANDLE_BAT(, 24172) +HANDLE_BAT(, 24173) +HANDLE_BAT(, 24174) +HANDLE_BAT(, 24175) +HANDLE_BAT(, 24176) +HANDLE_BAT(, 24177) +HANDLE_BAT(, 24178) +HANDLE_BAT(, 24179) +HANDLE_BAT(, 24180) +HANDLE_BAT(, 24181) +HANDLE_BAT(, 24182) +HANDLE_BAT(, 24183) +HANDLE_BAT(, 24184) +HANDLE_BAT(, 24185) +HANDLE_BAT(, 24186) +HANDLE_BAT(, 24187) +HANDLE_BAT(, 24188) +HANDLE_BAT(, 24189) +HANDLE_BAT(, 24190) +HANDLE_BAT(, 24191) +HANDLE_BAT(, 24192) +HANDLE_BAT(, 24193) +HANDLE_BAT(, 24194) +HANDLE_BAT(, 24195) +HANDLE_BAT(, 24196) +HANDLE_BAT(, 24197) +HANDLE_BAT(, 24198) +HANDLE_BAT(, 24199) +HANDLE_BAT(, 24200) +HANDLE_BAT(, 24201) +HANDLE_BAT(, 24202) +HANDLE_BAT(, 24203) +HANDLE_BAT(, 24204) +HANDLE_BAT(, 24205) +HANDLE_BAT(, 24206) +HANDLE_BAT(, 24207) +HANDLE_BAT(, 24208) +HANDLE_BAT(, 24209) +HANDLE_BAT(, 24210) +HANDLE_BAT(, 24211) +HANDLE_BAT(, 24212) +HANDLE_BAT(, 24213) +HANDLE_BAT(, 24214) +HANDLE_BAT(, 24215) +HANDLE_BAT(, 24216) +HANDLE_BAT(, 24217) +HANDLE_BAT(, 24218) +HANDLE_BAT(, 24219) +HANDLE_BAT(, 24220) +HANDLE_BAT(, 24221) +HANDLE_BAT(, 24222) +HANDLE_BAT(, 24223) +HANDLE_BAT(, 24224) +HANDLE_BAT(, 24225) +HANDLE_BAT(, 24226) +HANDLE_BAT(, 24227) +HANDLE_BAT(, 24228) +HANDLE_BAT(, 24229) +HANDLE_BAT(, 24230) +HANDLE_BAT(, 24231) +HANDLE_BAT(, 24232) +HANDLE_BAT(, 24233) +HANDLE_BAT(, 24234) +HANDLE_BAT(, 24235) +HANDLE_BAT(, 24236) +HANDLE_BAT(, 24237) +HANDLE_BAT(, 24238) +HANDLE_BAT(, 24239) +HANDLE_BAT(, 24240) +HANDLE_BAT(, 24241) +HANDLE_BAT(, 24242) +HANDLE_BAT(, 24243) +HANDLE_BAT(, 24244) +HANDLE_BAT(, 24245) +HANDLE_BAT(, 24246) +HANDLE_BAT(, 24247) +HANDLE_BAT(, 24248) +HANDLE_BAT(, 24249) +HANDLE_BAT(, 24250) +HANDLE_BAT(, 24251) +HANDLE_BAT(, 24252) +HANDLE_BAT(, 24253) +HANDLE_BAT(, 24254) +HANDLE_BAT(, 24255) +HANDLE_BAT(, 24256) +HANDLE_BAT(, 24257) +HANDLE_BAT(, 24258) +HANDLE_BAT(, 24259) +HANDLE_BAT(, 24260) +HANDLE_BAT(, 24261) +HANDLE_BAT(, 24262) +HANDLE_BAT(, 24263) +HANDLE_BAT(, 24264) +HANDLE_BAT(, 24265) +HANDLE_BAT(, 24266) +HANDLE_BAT(, 24267) +HANDLE_BAT(, 24268) +HANDLE_BAT(, 24269) +HANDLE_BAT(, 24270) +HANDLE_BAT(, 24271) +HANDLE_BAT(, 24272) +HANDLE_BAT(, 24273) +HANDLE_BAT(, 24274) +HANDLE_BAT(, 24275) +HANDLE_BAT(, 24276) +HANDLE_BAT(, 24277) +HANDLE_BAT(, 24278) +HANDLE_BAT(, 24279) +HANDLE_BAT(, 24280) +HANDLE_BAT(, 24281) +HANDLE_BAT(, 24282) +HANDLE_BAT(, 24283) +HANDLE_BAT(, 24284) +HANDLE_BAT(, 24285) +HANDLE_BAT(, 24286) +HANDLE_BAT(, 24287) +HANDLE_BAT(, 24288) +HANDLE_BAT(, 24289) +HANDLE_BAT(, 24290) +HANDLE_BAT(, 24291) +HANDLE_BAT(, 24292) +HANDLE_BAT(, 24293) +HANDLE_BAT(, 24294) +HANDLE_BAT(, 24295) +HANDLE_BAT(, 24296) +HANDLE_BAT(, 24297) +HANDLE_BAT(, 24298) +HANDLE_BAT(, 24299) +HANDLE_BAT(, 24300) +HANDLE_BAT(, 24301) +HANDLE_BAT(, 24302) +HANDLE_BAT(, 24303) +HANDLE_BAT(, 24304) +HANDLE_BAT(, 24305) +HANDLE_BAT(, 24306) +HANDLE_BAT(, 24307) +HANDLE_BAT(, 24308) +HANDLE_BAT(, 24309) +HANDLE_BAT(, 24310) +HANDLE_BAT(, 24311) +HANDLE_BAT(, 24312) +HANDLE_BAT(, 24313) +HANDLE_BAT(, 24314) +HANDLE_BAT(, 24315) +HANDLE_BAT(, 24316) +HANDLE_BAT(, 24317) +HANDLE_BAT(, 24318) +HANDLE_BAT(, 24319) +HANDLE_BAT(, 24320) +HANDLE_BAT(, 24321) +HANDLE_BAT(, 24322) +HANDLE_BAT(, 24323) +HANDLE_BAT(, 24324) +HANDLE_BAT(, 24325) +HANDLE_BAT(, 24326) +HANDLE_BAT(, 24327) +HANDLE_BAT(, 24328) +HANDLE_BAT(, 24329) +HANDLE_BAT(, 24330) +HANDLE_BAT(, 24331) +HANDLE_BAT(, 24332) +HANDLE_BAT(, 24333) +HANDLE_BAT(, 24334) +HANDLE_BAT(, 24335) +HANDLE_BAT(, 24336) +HANDLE_BAT(, 24337) +HANDLE_BAT(, 24338) +HANDLE_BAT(, 24339) +HANDLE_BAT(, 24340) +HANDLE_BAT(, 24341) +HANDLE_BAT(, 24342) +HANDLE_BAT(, 24343) +HANDLE_BAT(, 24344) +HANDLE_BAT(, 24345) +HANDLE_BAT(, 24346) +HANDLE_BAT(, 24347) +HANDLE_BAT(, 24348) +HANDLE_BAT(, 24349) +HANDLE_BAT(, 24350) +HANDLE_BAT(, 24351) +HANDLE_BAT(, 24352) +HANDLE_BAT(, 24353) +HANDLE_BAT(, 24354) +HANDLE_BAT(, 24355) +HANDLE_BAT(, 24356) +HANDLE_BAT(, 24357) +HANDLE_BAT(, 24358) +HANDLE_BAT(, 24359) +HANDLE_BAT(, 24360) +HANDLE_BAT(, 24361) +HANDLE_BAT(, 24362) +HANDLE_BAT(, 24363) +HANDLE_BAT(, 24364) +HANDLE_BAT(, 24365) +HANDLE_BAT(, 24366) +HANDLE_BAT(, 24367) +HANDLE_BAT(, 24368) +HANDLE_BAT(, 24369) +HANDLE_BAT(, 24370) +HANDLE_BAT(, 24371) +HANDLE_BAT(, 24372) +HANDLE_BAT(, 24373) +HANDLE_BAT(, 24374) +HANDLE_BAT(, 24375) +HANDLE_BAT(, 24376) +HANDLE_BAT(, 24377) +HANDLE_BAT(, 24378) +HANDLE_BAT(, 24379) +HANDLE_BAT(, 24380) +HANDLE_BAT(, 24381) +HANDLE_BAT(, 24382) +HANDLE_BAT(, 24383) +HANDLE_BAT(, 24384) +HANDLE_BAT(, 24385) +HANDLE_BAT(, 24386) +HANDLE_BAT(, 24387) +HANDLE_BAT(, 24388) +HANDLE_BAT(, 24389) +HANDLE_BAT(, 24390) +HANDLE_BAT(, 24391) +HANDLE_BAT(, 24392) +HANDLE_BAT(, 24393) +HANDLE_BAT(, 24394) +HANDLE_BAT(, 24395) +HANDLE_BAT(, 24396) +HANDLE_BAT(, 24397) +HANDLE_BAT(, 24398) +HANDLE_BAT(, 24399) +HANDLE_BAT(, 24400) +HANDLE_BAT(, 24401) +HANDLE_BAT(, 24402) +HANDLE_BAT(, 24403) +HANDLE_BAT(, 24404) +HANDLE_BAT(, 24405) +HANDLE_BAT(, 24406) +HANDLE_BAT(, 24407) +HANDLE_BAT(, 24408) +HANDLE_BAT(, 24409) +HANDLE_BAT(, 24410) +HANDLE_BAT(, 24411) +HANDLE_BAT(, 24412) +HANDLE_BAT(, 24413) +HANDLE_BAT(, 24414) +HANDLE_BAT(, 24415) +HANDLE_BAT(, 24416) +HANDLE_BAT(, 24417) +HANDLE_BAT(, 24418) +HANDLE_BAT(, 24419) +HANDLE_BAT(, 24420) +HANDLE_BAT(, 24421) +HANDLE_BAT(, 24422) +HANDLE_BAT(, 24423) +HANDLE_BAT(, 24424) +HANDLE_BAT(, 24425) +HANDLE_BAT(, 24426) +HANDLE_BAT(, 24427) +HANDLE_BAT(, 24428) +HANDLE_BAT(, 24429) +HANDLE_BAT(, 24430) +HANDLE_BAT(, 24431) +HANDLE_BAT(, 24432) +HANDLE_BAT(, 24433) +HANDLE_BAT(, 24434) +HANDLE_BAT(, 24435) +HANDLE_BAT(, 24436) +HANDLE_BAT(, 24437) +HANDLE_BAT(, 24438) +HANDLE_BAT(, 24439) +HANDLE_BAT(, 24440) +HANDLE_BAT(, 24441) +HANDLE_BAT(, 24442) +HANDLE_BAT(, 24443) +HANDLE_BAT(, 24444) +HANDLE_BAT(, 24445) +HANDLE_BAT(, 24446) +HANDLE_BAT(, 24447) +HANDLE_BAT(, 24448) +HANDLE_BAT(, 24449) +HANDLE_BAT(, 24450) +HANDLE_BAT(, 24451) +HANDLE_BAT(, 24452) +HANDLE_BAT(, 24453) +HANDLE_BAT(, 24454) +HANDLE_BAT(, 24455) +HANDLE_BAT(, 24456) +HANDLE_BAT(, 24457) +HANDLE_BAT(, 24458) +HANDLE_BAT(, 24459) +HANDLE_BAT(, 24460) +HANDLE_BAT(, 24461) +HANDLE_BAT(, 24462) +HANDLE_BAT(, 24463) +HANDLE_BAT(, 24464) +HANDLE_BAT(, 24465) +HANDLE_BAT(, 24466) +HANDLE_BAT(, 24467) +HANDLE_BAT(, 24468) +HANDLE_BAT(, 24469) +HANDLE_BAT(, 24470) +HANDLE_BAT(, 24471) +HANDLE_BAT(, 24472) +HANDLE_BAT(, 24473) +HANDLE_BAT(, 24474) +HANDLE_BAT(, 24475) +HANDLE_BAT(, 24476) +HANDLE_BAT(, 24477) +HANDLE_BAT(, 24478) +HANDLE_BAT(, 24479) +HANDLE_BAT(, 24480) +HANDLE_BAT(, 24481) +HANDLE_BAT(, 24482) +HANDLE_BAT(, 24483) +HANDLE_BAT(, 24484) +HANDLE_BAT(, 24485) +HANDLE_BAT(, 24486) +HANDLE_BAT(, 24487) +HANDLE_BAT(, 24488) +HANDLE_BAT(, 24489) +HANDLE_BAT(, 24490) +HANDLE_BAT(, 24491) +HANDLE_BAT(, 24492) +HANDLE_BAT(, 24493) +HANDLE_BAT(, 24494) +HANDLE_BAT(, 24495) +HANDLE_BAT(, 24496) +HANDLE_BAT(, 24497) +HANDLE_BAT(, 24498) +HANDLE_BAT(, 24499) +HANDLE_BAT(, 24500) +HANDLE_BAT(, 24501) +HANDLE_BAT(, 24502) +HANDLE_BAT(, 24503) +HANDLE_BAT(, 24504) +HANDLE_BAT(, 24505) +HANDLE_BAT(, 24506) +HANDLE_BAT(, 24507) +HANDLE_BAT(, 24508) +HANDLE_BAT(, 24509) +HANDLE_BAT(, 24510) +HANDLE_BAT(, 24511) +HANDLE_BAT(, 24512) +HANDLE_BAT(, 24513) +HANDLE_BAT(, 24514) +HANDLE_BAT(, 24515) +HANDLE_BAT(, 24516) +HANDLE_BAT(, 24517) +HANDLE_BAT(, 24518) +HANDLE_BAT(, 24519) +HANDLE_BAT(, 24520) +HANDLE_BAT(, 24521) +HANDLE_BAT(, 24522) +HANDLE_BAT(, 24523) +HANDLE_BAT(, 24524) +HANDLE_BAT(, 24525) +HANDLE_BAT(, 24526) +HANDLE_BAT(, 24527) +HANDLE_BAT(, 24528) +HANDLE_BAT(, 24529) +HANDLE_BAT(, 24530) +HANDLE_BAT(, 24531) +HANDLE_BAT(, 24532) +HANDLE_BAT(, 24533) +HANDLE_BAT(, 24534) +HANDLE_BAT(, 24535) +HANDLE_BAT(, 24536) +HANDLE_BAT(, 24537) +HANDLE_BAT(, 24538) +HANDLE_BAT(, 24539) +HANDLE_BAT(, 24540) +HANDLE_BAT(, 24541) +HANDLE_BAT(, 24542) +HANDLE_BAT(, 24543) +HANDLE_BAT(, 24544) +HANDLE_BAT(, 24545) +HANDLE_BAT(, 24546) +HANDLE_BAT(, 24547) +HANDLE_BAT(, 24548) +HANDLE_BAT(, 24549) +HANDLE_BAT(, 24550) +HANDLE_BAT(, 24551) +HANDLE_BAT(, 24552) +HANDLE_BAT(, 24553) +HANDLE_BAT(, 24554) +HANDLE_BAT(, 24555) +HANDLE_BAT(, 24556) +HANDLE_BAT(, 24557) +HANDLE_BAT(, 24558) +HANDLE_BAT(, 24559) +HANDLE_BAT(, 24560) +HANDLE_BAT(, 24561) +HANDLE_BAT(, 24562) +HANDLE_BAT(, 24563) +HANDLE_BAT(, 24564) +HANDLE_BAT(, 24565) +HANDLE_BAT(, 24566) +HANDLE_BAT(, 24567) +HANDLE_BAT(, 24568) +HANDLE_BAT(, 24569) +HANDLE_BAT(, 24570) +HANDLE_BAT(, 24571) +HANDLE_BAT(, 24572) +HANDLE_BAT(, 24573) +HANDLE_BAT(, 24574) +HANDLE_BAT(, 24575) +HANDLE_BAT(, 24576) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 23553) +HANDLE_BAT(APINT_TYPE_PREFIX, 23554) +HANDLE_BAT(APINT_TYPE_PREFIX, 23555) +HANDLE_BAT(APINT_TYPE_PREFIX, 23556) +HANDLE_BAT(APINT_TYPE_PREFIX, 23557) +HANDLE_BAT(APINT_TYPE_PREFIX, 23558) +HANDLE_BAT(APINT_TYPE_PREFIX, 23559) +HANDLE_BAT(APINT_TYPE_PREFIX, 23560) +HANDLE_BAT(APINT_TYPE_PREFIX, 23561) +HANDLE_BAT(APINT_TYPE_PREFIX, 23562) +HANDLE_BAT(APINT_TYPE_PREFIX, 23563) +HANDLE_BAT(APINT_TYPE_PREFIX, 23564) +HANDLE_BAT(APINT_TYPE_PREFIX, 23565) +HANDLE_BAT(APINT_TYPE_PREFIX, 23566) +HANDLE_BAT(APINT_TYPE_PREFIX, 23567) +HANDLE_BAT(APINT_TYPE_PREFIX, 23568) +HANDLE_BAT(APINT_TYPE_PREFIX, 23569) +HANDLE_BAT(APINT_TYPE_PREFIX, 23570) +HANDLE_BAT(APINT_TYPE_PREFIX, 23571) +HANDLE_BAT(APINT_TYPE_PREFIX, 23572) +HANDLE_BAT(APINT_TYPE_PREFIX, 23573) +HANDLE_BAT(APINT_TYPE_PREFIX, 23574) +HANDLE_BAT(APINT_TYPE_PREFIX, 23575) +HANDLE_BAT(APINT_TYPE_PREFIX, 23576) +HANDLE_BAT(APINT_TYPE_PREFIX, 23577) +HANDLE_BAT(APINT_TYPE_PREFIX, 23578) +HANDLE_BAT(APINT_TYPE_PREFIX, 23579) +HANDLE_BAT(APINT_TYPE_PREFIX, 23580) +HANDLE_BAT(APINT_TYPE_PREFIX, 23581) +HANDLE_BAT(APINT_TYPE_PREFIX, 23582) +HANDLE_BAT(APINT_TYPE_PREFIX, 23583) +HANDLE_BAT(APINT_TYPE_PREFIX, 23584) +HANDLE_BAT(APINT_TYPE_PREFIX, 23585) +HANDLE_BAT(APINT_TYPE_PREFIX, 23586) +HANDLE_BAT(APINT_TYPE_PREFIX, 23587) +HANDLE_BAT(APINT_TYPE_PREFIX, 23588) +HANDLE_BAT(APINT_TYPE_PREFIX, 23589) +HANDLE_BAT(APINT_TYPE_PREFIX, 23590) +HANDLE_BAT(APINT_TYPE_PREFIX, 23591) +HANDLE_BAT(APINT_TYPE_PREFIX, 23592) +HANDLE_BAT(APINT_TYPE_PREFIX, 23593) +HANDLE_BAT(APINT_TYPE_PREFIX, 23594) +HANDLE_BAT(APINT_TYPE_PREFIX, 23595) +HANDLE_BAT(APINT_TYPE_PREFIX, 23596) +HANDLE_BAT(APINT_TYPE_PREFIX, 23597) +HANDLE_BAT(APINT_TYPE_PREFIX, 23598) +HANDLE_BAT(APINT_TYPE_PREFIX, 23599) +HANDLE_BAT(APINT_TYPE_PREFIX, 23600) +HANDLE_BAT(APINT_TYPE_PREFIX, 23601) +HANDLE_BAT(APINT_TYPE_PREFIX, 23602) +HANDLE_BAT(APINT_TYPE_PREFIX, 23603) +HANDLE_BAT(APINT_TYPE_PREFIX, 23604) +HANDLE_BAT(APINT_TYPE_PREFIX, 23605) +HANDLE_BAT(APINT_TYPE_PREFIX, 23606) +HANDLE_BAT(APINT_TYPE_PREFIX, 23607) +HANDLE_BAT(APINT_TYPE_PREFIX, 23608) +HANDLE_BAT(APINT_TYPE_PREFIX, 23609) +HANDLE_BAT(APINT_TYPE_PREFIX, 23610) +HANDLE_BAT(APINT_TYPE_PREFIX, 23611) +HANDLE_BAT(APINT_TYPE_PREFIX, 23612) +HANDLE_BAT(APINT_TYPE_PREFIX, 23613) +HANDLE_BAT(APINT_TYPE_PREFIX, 23614) +HANDLE_BAT(APINT_TYPE_PREFIX, 23615) +HANDLE_BAT(APINT_TYPE_PREFIX, 23616) +HANDLE_BAT(APINT_TYPE_PREFIX, 23617) +HANDLE_BAT(APINT_TYPE_PREFIX, 23618) +HANDLE_BAT(APINT_TYPE_PREFIX, 23619) +HANDLE_BAT(APINT_TYPE_PREFIX, 23620) +HANDLE_BAT(APINT_TYPE_PREFIX, 23621) +HANDLE_BAT(APINT_TYPE_PREFIX, 23622) +HANDLE_BAT(APINT_TYPE_PREFIX, 23623) +HANDLE_BAT(APINT_TYPE_PREFIX, 23624) +HANDLE_BAT(APINT_TYPE_PREFIX, 23625) +HANDLE_BAT(APINT_TYPE_PREFIX, 23626) +HANDLE_BAT(APINT_TYPE_PREFIX, 23627) +HANDLE_BAT(APINT_TYPE_PREFIX, 23628) +HANDLE_BAT(APINT_TYPE_PREFIX, 23629) +HANDLE_BAT(APINT_TYPE_PREFIX, 23630) +HANDLE_BAT(APINT_TYPE_PREFIX, 23631) +HANDLE_BAT(APINT_TYPE_PREFIX, 23632) +HANDLE_BAT(APINT_TYPE_PREFIX, 23633) +HANDLE_BAT(APINT_TYPE_PREFIX, 23634) +HANDLE_BAT(APINT_TYPE_PREFIX, 23635) +HANDLE_BAT(APINT_TYPE_PREFIX, 23636) +HANDLE_BAT(APINT_TYPE_PREFIX, 23637) +HANDLE_BAT(APINT_TYPE_PREFIX, 23638) +HANDLE_BAT(APINT_TYPE_PREFIX, 23639) +HANDLE_BAT(APINT_TYPE_PREFIX, 23640) +HANDLE_BAT(APINT_TYPE_PREFIX, 23641) +HANDLE_BAT(APINT_TYPE_PREFIX, 23642) +HANDLE_BAT(APINT_TYPE_PREFIX, 23643) +HANDLE_BAT(APINT_TYPE_PREFIX, 23644) +HANDLE_BAT(APINT_TYPE_PREFIX, 23645) +HANDLE_BAT(APINT_TYPE_PREFIX, 23646) +HANDLE_BAT(APINT_TYPE_PREFIX, 23647) +HANDLE_BAT(APINT_TYPE_PREFIX, 23648) +HANDLE_BAT(APINT_TYPE_PREFIX, 23649) +HANDLE_BAT(APINT_TYPE_PREFIX, 23650) +HANDLE_BAT(APINT_TYPE_PREFIX, 23651) +HANDLE_BAT(APINT_TYPE_PREFIX, 23652) +HANDLE_BAT(APINT_TYPE_PREFIX, 23653) +HANDLE_BAT(APINT_TYPE_PREFIX, 23654) +HANDLE_BAT(APINT_TYPE_PREFIX, 23655) +HANDLE_BAT(APINT_TYPE_PREFIX, 23656) +HANDLE_BAT(APINT_TYPE_PREFIX, 23657) +HANDLE_BAT(APINT_TYPE_PREFIX, 23658) +HANDLE_BAT(APINT_TYPE_PREFIX, 23659) +HANDLE_BAT(APINT_TYPE_PREFIX, 23660) +HANDLE_BAT(APINT_TYPE_PREFIX, 23661) +HANDLE_BAT(APINT_TYPE_PREFIX, 23662) +HANDLE_BAT(APINT_TYPE_PREFIX, 23663) +HANDLE_BAT(APINT_TYPE_PREFIX, 23664) +HANDLE_BAT(APINT_TYPE_PREFIX, 23665) +HANDLE_BAT(APINT_TYPE_PREFIX, 23666) +HANDLE_BAT(APINT_TYPE_PREFIX, 23667) +HANDLE_BAT(APINT_TYPE_PREFIX, 23668) +HANDLE_BAT(APINT_TYPE_PREFIX, 23669) +HANDLE_BAT(APINT_TYPE_PREFIX, 23670) +HANDLE_BAT(APINT_TYPE_PREFIX, 23671) +HANDLE_BAT(APINT_TYPE_PREFIX, 23672) +HANDLE_BAT(APINT_TYPE_PREFIX, 23673) +HANDLE_BAT(APINT_TYPE_PREFIX, 23674) +HANDLE_BAT(APINT_TYPE_PREFIX, 23675) +HANDLE_BAT(APINT_TYPE_PREFIX, 23676) +HANDLE_BAT(APINT_TYPE_PREFIX, 23677) +HANDLE_BAT(APINT_TYPE_PREFIX, 23678) +HANDLE_BAT(APINT_TYPE_PREFIX, 23679) +HANDLE_BAT(APINT_TYPE_PREFIX, 23680) +HANDLE_BAT(APINT_TYPE_PREFIX, 23681) +HANDLE_BAT(APINT_TYPE_PREFIX, 23682) +HANDLE_BAT(APINT_TYPE_PREFIX, 23683) +HANDLE_BAT(APINT_TYPE_PREFIX, 23684) +HANDLE_BAT(APINT_TYPE_PREFIX, 23685) +HANDLE_BAT(APINT_TYPE_PREFIX, 23686) +HANDLE_BAT(APINT_TYPE_PREFIX, 23687) +HANDLE_BAT(APINT_TYPE_PREFIX, 23688) +HANDLE_BAT(APINT_TYPE_PREFIX, 23689) +HANDLE_BAT(APINT_TYPE_PREFIX, 23690) +HANDLE_BAT(APINT_TYPE_PREFIX, 23691) +HANDLE_BAT(APINT_TYPE_PREFIX, 23692) +HANDLE_BAT(APINT_TYPE_PREFIX, 23693) +HANDLE_BAT(APINT_TYPE_PREFIX, 23694) +HANDLE_BAT(APINT_TYPE_PREFIX, 23695) +HANDLE_BAT(APINT_TYPE_PREFIX, 23696) +HANDLE_BAT(APINT_TYPE_PREFIX, 23697) +HANDLE_BAT(APINT_TYPE_PREFIX, 23698) +HANDLE_BAT(APINT_TYPE_PREFIX, 23699) +HANDLE_BAT(APINT_TYPE_PREFIX, 23700) +HANDLE_BAT(APINT_TYPE_PREFIX, 23701) +HANDLE_BAT(APINT_TYPE_PREFIX, 23702) +HANDLE_BAT(APINT_TYPE_PREFIX, 23703) +HANDLE_BAT(APINT_TYPE_PREFIX, 23704) +HANDLE_BAT(APINT_TYPE_PREFIX, 23705) +HANDLE_BAT(APINT_TYPE_PREFIX, 23706) +HANDLE_BAT(APINT_TYPE_PREFIX, 23707) +HANDLE_BAT(APINT_TYPE_PREFIX, 23708) +HANDLE_BAT(APINT_TYPE_PREFIX, 23709) +HANDLE_BAT(APINT_TYPE_PREFIX, 23710) +HANDLE_BAT(APINT_TYPE_PREFIX, 23711) +HANDLE_BAT(APINT_TYPE_PREFIX, 23712) +HANDLE_BAT(APINT_TYPE_PREFIX, 23713) +HANDLE_BAT(APINT_TYPE_PREFIX, 23714) +HANDLE_BAT(APINT_TYPE_PREFIX, 23715) +HANDLE_BAT(APINT_TYPE_PREFIX, 23716) +HANDLE_BAT(APINT_TYPE_PREFIX, 23717) +HANDLE_BAT(APINT_TYPE_PREFIX, 23718) +HANDLE_BAT(APINT_TYPE_PREFIX, 23719) +HANDLE_BAT(APINT_TYPE_PREFIX, 23720) +HANDLE_BAT(APINT_TYPE_PREFIX, 23721) +HANDLE_BAT(APINT_TYPE_PREFIX, 23722) +HANDLE_BAT(APINT_TYPE_PREFIX, 23723) +HANDLE_BAT(APINT_TYPE_PREFIX, 23724) +HANDLE_BAT(APINT_TYPE_PREFIX, 23725) +HANDLE_BAT(APINT_TYPE_PREFIX, 23726) +HANDLE_BAT(APINT_TYPE_PREFIX, 23727) +HANDLE_BAT(APINT_TYPE_PREFIX, 23728) +HANDLE_BAT(APINT_TYPE_PREFIX, 23729) +HANDLE_BAT(APINT_TYPE_PREFIX, 23730) +HANDLE_BAT(APINT_TYPE_PREFIX, 23731) +HANDLE_BAT(APINT_TYPE_PREFIX, 23732) +HANDLE_BAT(APINT_TYPE_PREFIX, 23733) +HANDLE_BAT(APINT_TYPE_PREFIX, 23734) +HANDLE_BAT(APINT_TYPE_PREFIX, 23735) +HANDLE_BAT(APINT_TYPE_PREFIX, 23736) +HANDLE_BAT(APINT_TYPE_PREFIX, 23737) +HANDLE_BAT(APINT_TYPE_PREFIX, 23738) +HANDLE_BAT(APINT_TYPE_PREFIX, 23739) +HANDLE_BAT(APINT_TYPE_PREFIX, 23740) +HANDLE_BAT(APINT_TYPE_PREFIX, 23741) +HANDLE_BAT(APINT_TYPE_PREFIX, 23742) +HANDLE_BAT(APINT_TYPE_PREFIX, 23743) +HANDLE_BAT(APINT_TYPE_PREFIX, 23744) +HANDLE_BAT(APINT_TYPE_PREFIX, 23745) +HANDLE_BAT(APINT_TYPE_PREFIX, 23746) +HANDLE_BAT(APINT_TYPE_PREFIX, 23747) +HANDLE_BAT(APINT_TYPE_PREFIX, 23748) +HANDLE_BAT(APINT_TYPE_PREFIX, 23749) +HANDLE_BAT(APINT_TYPE_PREFIX, 23750) +HANDLE_BAT(APINT_TYPE_PREFIX, 23751) +HANDLE_BAT(APINT_TYPE_PREFIX, 23752) +HANDLE_BAT(APINT_TYPE_PREFIX, 23753) +HANDLE_BAT(APINT_TYPE_PREFIX, 23754) +HANDLE_BAT(APINT_TYPE_PREFIX, 23755) +HANDLE_BAT(APINT_TYPE_PREFIX, 23756) +HANDLE_BAT(APINT_TYPE_PREFIX, 23757) +HANDLE_BAT(APINT_TYPE_PREFIX, 23758) +HANDLE_BAT(APINT_TYPE_PREFIX, 23759) +HANDLE_BAT(APINT_TYPE_PREFIX, 23760) +HANDLE_BAT(APINT_TYPE_PREFIX, 23761) +HANDLE_BAT(APINT_TYPE_PREFIX, 23762) +HANDLE_BAT(APINT_TYPE_PREFIX, 23763) +HANDLE_BAT(APINT_TYPE_PREFIX, 23764) +HANDLE_BAT(APINT_TYPE_PREFIX, 23765) +HANDLE_BAT(APINT_TYPE_PREFIX, 23766) +HANDLE_BAT(APINT_TYPE_PREFIX, 23767) +HANDLE_BAT(APINT_TYPE_PREFIX, 23768) +HANDLE_BAT(APINT_TYPE_PREFIX, 23769) +HANDLE_BAT(APINT_TYPE_PREFIX, 23770) +HANDLE_BAT(APINT_TYPE_PREFIX, 23771) +HANDLE_BAT(APINT_TYPE_PREFIX, 23772) +HANDLE_BAT(APINT_TYPE_PREFIX, 23773) +HANDLE_BAT(APINT_TYPE_PREFIX, 23774) +HANDLE_BAT(APINT_TYPE_PREFIX, 23775) +HANDLE_BAT(APINT_TYPE_PREFIX, 23776) +HANDLE_BAT(APINT_TYPE_PREFIX, 23777) +HANDLE_BAT(APINT_TYPE_PREFIX, 23778) +HANDLE_BAT(APINT_TYPE_PREFIX, 23779) +HANDLE_BAT(APINT_TYPE_PREFIX, 23780) +HANDLE_BAT(APINT_TYPE_PREFIX, 23781) +HANDLE_BAT(APINT_TYPE_PREFIX, 23782) +HANDLE_BAT(APINT_TYPE_PREFIX, 23783) +HANDLE_BAT(APINT_TYPE_PREFIX, 23784) +HANDLE_BAT(APINT_TYPE_PREFIX, 23785) +HANDLE_BAT(APINT_TYPE_PREFIX, 23786) +HANDLE_BAT(APINT_TYPE_PREFIX, 23787) +HANDLE_BAT(APINT_TYPE_PREFIX, 23788) +HANDLE_BAT(APINT_TYPE_PREFIX, 23789) +HANDLE_BAT(APINT_TYPE_PREFIX, 23790) +HANDLE_BAT(APINT_TYPE_PREFIX, 23791) +HANDLE_BAT(APINT_TYPE_PREFIX, 23792) +HANDLE_BAT(APINT_TYPE_PREFIX, 23793) +HANDLE_BAT(APINT_TYPE_PREFIX, 23794) +HANDLE_BAT(APINT_TYPE_PREFIX, 23795) +HANDLE_BAT(APINT_TYPE_PREFIX, 23796) +HANDLE_BAT(APINT_TYPE_PREFIX, 23797) +HANDLE_BAT(APINT_TYPE_PREFIX, 23798) +HANDLE_BAT(APINT_TYPE_PREFIX, 23799) +HANDLE_BAT(APINT_TYPE_PREFIX, 23800) +HANDLE_BAT(APINT_TYPE_PREFIX, 23801) +HANDLE_BAT(APINT_TYPE_PREFIX, 23802) +HANDLE_BAT(APINT_TYPE_PREFIX, 23803) +HANDLE_BAT(APINT_TYPE_PREFIX, 23804) +HANDLE_BAT(APINT_TYPE_PREFIX, 23805) +HANDLE_BAT(APINT_TYPE_PREFIX, 23806) +HANDLE_BAT(APINT_TYPE_PREFIX, 23807) +HANDLE_BAT(APINT_TYPE_PREFIX, 23808) +HANDLE_BAT(APINT_TYPE_PREFIX, 23809) +HANDLE_BAT(APINT_TYPE_PREFIX, 23810) +HANDLE_BAT(APINT_TYPE_PREFIX, 23811) +HANDLE_BAT(APINT_TYPE_PREFIX, 23812) +HANDLE_BAT(APINT_TYPE_PREFIX, 23813) +HANDLE_BAT(APINT_TYPE_PREFIX, 23814) +HANDLE_BAT(APINT_TYPE_PREFIX, 23815) +HANDLE_BAT(APINT_TYPE_PREFIX, 23816) +HANDLE_BAT(APINT_TYPE_PREFIX, 23817) +HANDLE_BAT(APINT_TYPE_PREFIX, 23818) +HANDLE_BAT(APINT_TYPE_PREFIX, 23819) +HANDLE_BAT(APINT_TYPE_PREFIX, 23820) +HANDLE_BAT(APINT_TYPE_PREFIX, 23821) +HANDLE_BAT(APINT_TYPE_PREFIX, 23822) +HANDLE_BAT(APINT_TYPE_PREFIX, 23823) +HANDLE_BAT(APINT_TYPE_PREFIX, 23824) +HANDLE_BAT(APINT_TYPE_PREFIX, 23825) +HANDLE_BAT(APINT_TYPE_PREFIX, 23826) +HANDLE_BAT(APINT_TYPE_PREFIX, 23827) +HANDLE_BAT(APINT_TYPE_PREFIX, 23828) +HANDLE_BAT(APINT_TYPE_PREFIX, 23829) +HANDLE_BAT(APINT_TYPE_PREFIX, 23830) +HANDLE_BAT(APINT_TYPE_PREFIX, 23831) +HANDLE_BAT(APINT_TYPE_PREFIX, 23832) +HANDLE_BAT(APINT_TYPE_PREFIX, 23833) +HANDLE_BAT(APINT_TYPE_PREFIX, 23834) +HANDLE_BAT(APINT_TYPE_PREFIX, 23835) +HANDLE_BAT(APINT_TYPE_PREFIX, 23836) +HANDLE_BAT(APINT_TYPE_PREFIX, 23837) +HANDLE_BAT(APINT_TYPE_PREFIX, 23838) +HANDLE_BAT(APINT_TYPE_PREFIX, 23839) +HANDLE_BAT(APINT_TYPE_PREFIX, 23840) +HANDLE_BAT(APINT_TYPE_PREFIX, 23841) +HANDLE_BAT(APINT_TYPE_PREFIX, 23842) +HANDLE_BAT(APINT_TYPE_PREFIX, 23843) +HANDLE_BAT(APINT_TYPE_PREFIX, 23844) +HANDLE_BAT(APINT_TYPE_PREFIX, 23845) +HANDLE_BAT(APINT_TYPE_PREFIX, 23846) +HANDLE_BAT(APINT_TYPE_PREFIX, 23847) +HANDLE_BAT(APINT_TYPE_PREFIX, 23848) +HANDLE_BAT(APINT_TYPE_PREFIX, 23849) +HANDLE_BAT(APINT_TYPE_PREFIX, 23850) +HANDLE_BAT(APINT_TYPE_PREFIX, 23851) +HANDLE_BAT(APINT_TYPE_PREFIX, 23852) +HANDLE_BAT(APINT_TYPE_PREFIX, 23853) +HANDLE_BAT(APINT_TYPE_PREFIX, 23854) +HANDLE_BAT(APINT_TYPE_PREFIX, 23855) +HANDLE_BAT(APINT_TYPE_PREFIX, 23856) +HANDLE_BAT(APINT_TYPE_PREFIX, 23857) +HANDLE_BAT(APINT_TYPE_PREFIX, 23858) +HANDLE_BAT(APINT_TYPE_PREFIX, 23859) +HANDLE_BAT(APINT_TYPE_PREFIX, 23860) +HANDLE_BAT(APINT_TYPE_PREFIX, 23861) +HANDLE_BAT(APINT_TYPE_PREFIX, 23862) +HANDLE_BAT(APINT_TYPE_PREFIX, 23863) +HANDLE_BAT(APINT_TYPE_PREFIX, 23864) +HANDLE_BAT(APINT_TYPE_PREFIX, 23865) +HANDLE_BAT(APINT_TYPE_PREFIX, 23866) +HANDLE_BAT(APINT_TYPE_PREFIX, 23867) +HANDLE_BAT(APINT_TYPE_PREFIX, 23868) +HANDLE_BAT(APINT_TYPE_PREFIX, 23869) +HANDLE_BAT(APINT_TYPE_PREFIX, 23870) +HANDLE_BAT(APINT_TYPE_PREFIX, 23871) +HANDLE_BAT(APINT_TYPE_PREFIX, 23872) +HANDLE_BAT(APINT_TYPE_PREFIX, 23873) +HANDLE_BAT(APINT_TYPE_PREFIX, 23874) +HANDLE_BAT(APINT_TYPE_PREFIX, 23875) +HANDLE_BAT(APINT_TYPE_PREFIX, 23876) +HANDLE_BAT(APINT_TYPE_PREFIX, 23877) +HANDLE_BAT(APINT_TYPE_PREFIX, 23878) +HANDLE_BAT(APINT_TYPE_PREFIX, 23879) +HANDLE_BAT(APINT_TYPE_PREFIX, 23880) +HANDLE_BAT(APINT_TYPE_PREFIX, 23881) +HANDLE_BAT(APINT_TYPE_PREFIX, 23882) +HANDLE_BAT(APINT_TYPE_PREFIX, 23883) +HANDLE_BAT(APINT_TYPE_PREFIX, 23884) +HANDLE_BAT(APINT_TYPE_PREFIX, 23885) +HANDLE_BAT(APINT_TYPE_PREFIX, 23886) +HANDLE_BAT(APINT_TYPE_PREFIX, 23887) +HANDLE_BAT(APINT_TYPE_PREFIX, 23888) +HANDLE_BAT(APINT_TYPE_PREFIX, 23889) +HANDLE_BAT(APINT_TYPE_PREFIX, 23890) +HANDLE_BAT(APINT_TYPE_PREFIX, 23891) +HANDLE_BAT(APINT_TYPE_PREFIX, 23892) +HANDLE_BAT(APINT_TYPE_PREFIX, 23893) +HANDLE_BAT(APINT_TYPE_PREFIX, 23894) +HANDLE_BAT(APINT_TYPE_PREFIX, 23895) +HANDLE_BAT(APINT_TYPE_PREFIX, 23896) +HANDLE_BAT(APINT_TYPE_PREFIX, 23897) +HANDLE_BAT(APINT_TYPE_PREFIX, 23898) +HANDLE_BAT(APINT_TYPE_PREFIX, 23899) +HANDLE_BAT(APINT_TYPE_PREFIX, 23900) +HANDLE_BAT(APINT_TYPE_PREFIX, 23901) +HANDLE_BAT(APINT_TYPE_PREFIX, 23902) +HANDLE_BAT(APINT_TYPE_PREFIX, 23903) +HANDLE_BAT(APINT_TYPE_PREFIX, 23904) +HANDLE_BAT(APINT_TYPE_PREFIX, 23905) +HANDLE_BAT(APINT_TYPE_PREFIX, 23906) +HANDLE_BAT(APINT_TYPE_PREFIX, 23907) +HANDLE_BAT(APINT_TYPE_PREFIX, 23908) +HANDLE_BAT(APINT_TYPE_PREFIX, 23909) +HANDLE_BAT(APINT_TYPE_PREFIX, 23910) +HANDLE_BAT(APINT_TYPE_PREFIX, 23911) +HANDLE_BAT(APINT_TYPE_PREFIX, 23912) +HANDLE_BAT(APINT_TYPE_PREFIX, 23913) +HANDLE_BAT(APINT_TYPE_PREFIX, 23914) +HANDLE_BAT(APINT_TYPE_PREFIX, 23915) +HANDLE_BAT(APINT_TYPE_PREFIX, 23916) +HANDLE_BAT(APINT_TYPE_PREFIX, 23917) +HANDLE_BAT(APINT_TYPE_PREFIX, 23918) +HANDLE_BAT(APINT_TYPE_PREFIX, 23919) +HANDLE_BAT(APINT_TYPE_PREFIX, 23920) +HANDLE_BAT(APINT_TYPE_PREFIX, 23921) +HANDLE_BAT(APINT_TYPE_PREFIX, 23922) +HANDLE_BAT(APINT_TYPE_PREFIX, 23923) +HANDLE_BAT(APINT_TYPE_PREFIX, 23924) +HANDLE_BAT(APINT_TYPE_PREFIX, 23925) +HANDLE_BAT(APINT_TYPE_PREFIX, 23926) +HANDLE_BAT(APINT_TYPE_PREFIX, 23927) +HANDLE_BAT(APINT_TYPE_PREFIX, 23928) +HANDLE_BAT(APINT_TYPE_PREFIX, 23929) +HANDLE_BAT(APINT_TYPE_PREFIX, 23930) +HANDLE_BAT(APINT_TYPE_PREFIX, 23931) +HANDLE_BAT(APINT_TYPE_PREFIX, 23932) +HANDLE_BAT(APINT_TYPE_PREFIX, 23933) +HANDLE_BAT(APINT_TYPE_PREFIX, 23934) +HANDLE_BAT(APINT_TYPE_PREFIX, 23935) +HANDLE_BAT(APINT_TYPE_PREFIX, 23936) +HANDLE_BAT(APINT_TYPE_PREFIX, 23937) +HANDLE_BAT(APINT_TYPE_PREFIX, 23938) +HANDLE_BAT(APINT_TYPE_PREFIX, 23939) +HANDLE_BAT(APINT_TYPE_PREFIX, 23940) +HANDLE_BAT(APINT_TYPE_PREFIX, 23941) +HANDLE_BAT(APINT_TYPE_PREFIX, 23942) +HANDLE_BAT(APINT_TYPE_PREFIX, 23943) +HANDLE_BAT(APINT_TYPE_PREFIX, 23944) +HANDLE_BAT(APINT_TYPE_PREFIX, 23945) +HANDLE_BAT(APINT_TYPE_PREFIX, 23946) +HANDLE_BAT(APINT_TYPE_PREFIX, 23947) +HANDLE_BAT(APINT_TYPE_PREFIX, 23948) +HANDLE_BAT(APINT_TYPE_PREFIX, 23949) +HANDLE_BAT(APINT_TYPE_PREFIX, 23950) +HANDLE_BAT(APINT_TYPE_PREFIX, 23951) +HANDLE_BAT(APINT_TYPE_PREFIX, 23952) +HANDLE_BAT(APINT_TYPE_PREFIX, 23953) +HANDLE_BAT(APINT_TYPE_PREFIX, 23954) +HANDLE_BAT(APINT_TYPE_PREFIX, 23955) +HANDLE_BAT(APINT_TYPE_PREFIX, 23956) +HANDLE_BAT(APINT_TYPE_PREFIX, 23957) +HANDLE_BAT(APINT_TYPE_PREFIX, 23958) +HANDLE_BAT(APINT_TYPE_PREFIX, 23959) +HANDLE_BAT(APINT_TYPE_PREFIX, 23960) +HANDLE_BAT(APINT_TYPE_PREFIX, 23961) +HANDLE_BAT(APINT_TYPE_PREFIX, 23962) +HANDLE_BAT(APINT_TYPE_PREFIX, 23963) +HANDLE_BAT(APINT_TYPE_PREFIX, 23964) +HANDLE_BAT(APINT_TYPE_PREFIX, 23965) +HANDLE_BAT(APINT_TYPE_PREFIX, 23966) +HANDLE_BAT(APINT_TYPE_PREFIX, 23967) +HANDLE_BAT(APINT_TYPE_PREFIX, 23968) +HANDLE_BAT(APINT_TYPE_PREFIX, 23969) +HANDLE_BAT(APINT_TYPE_PREFIX, 23970) +HANDLE_BAT(APINT_TYPE_PREFIX, 23971) +HANDLE_BAT(APINT_TYPE_PREFIX, 23972) +HANDLE_BAT(APINT_TYPE_PREFIX, 23973) +HANDLE_BAT(APINT_TYPE_PREFIX, 23974) +HANDLE_BAT(APINT_TYPE_PREFIX, 23975) +HANDLE_BAT(APINT_TYPE_PREFIX, 23976) +HANDLE_BAT(APINT_TYPE_PREFIX, 23977) +HANDLE_BAT(APINT_TYPE_PREFIX, 23978) +HANDLE_BAT(APINT_TYPE_PREFIX, 23979) +HANDLE_BAT(APINT_TYPE_PREFIX, 23980) +HANDLE_BAT(APINT_TYPE_PREFIX, 23981) +HANDLE_BAT(APINT_TYPE_PREFIX, 23982) +HANDLE_BAT(APINT_TYPE_PREFIX, 23983) +HANDLE_BAT(APINT_TYPE_PREFIX, 23984) +HANDLE_BAT(APINT_TYPE_PREFIX, 23985) +HANDLE_BAT(APINT_TYPE_PREFIX, 23986) +HANDLE_BAT(APINT_TYPE_PREFIX, 23987) +HANDLE_BAT(APINT_TYPE_PREFIX, 23988) +HANDLE_BAT(APINT_TYPE_PREFIX, 23989) +HANDLE_BAT(APINT_TYPE_PREFIX, 23990) +HANDLE_BAT(APINT_TYPE_PREFIX, 23991) +HANDLE_BAT(APINT_TYPE_PREFIX, 23992) +HANDLE_BAT(APINT_TYPE_PREFIX, 23993) +HANDLE_BAT(APINT_TYPE_PREFIX, 23994) +HANDLE_BAT(APINT_TYPE_PREFIX, 23995) +HANDLE_BAT(APINT_TYPE_PREFIX, 23996) +HANDLE_BAT(APINT_TYPE_PREFIX, 23997) +HANDLE_BAT(APINT_TYPE_PREFIX, 23998) +HANDLE_BAT(APINT_TYPE_PREFIX, 23999) +HANDLE_BAT(APINT_TYPE_PREFIX, 24000) +HANDLE_BAT(APINT_TYPE_PREFIX, 24001) +HANDLE_BAT(APINT_TYPE_PREFIX, 24002) +HANDLE_BAT(APINT_TYPE_PREFIX, 24003) +HANDLE_BAT(APINT_TYPE_PREFIX, 24004) +HANDLE_BAT(APINT_TYPE_PREFIX, 24005) +HANDLE_BAT(APINT_TYPE_PREFIX, 24006) +HANDLE_BAT(APINT_TYPE_PREFIX, 24007) +HANDLE_BAT(APINT_TYPE_PREFIX, 24008) +HANDLE_BAT(APINT_TYPE_PREFIX, 24009) +HANDLE_BAT(APINT_TYPE_PREFIX, 24010) +HANDLE_BAT(APINT_TYPE_PREFIX, 24011) +HANDLE_BAT(APINT_TYPE_PREFIX, 24012) +HANDLE_BAT(APINT_TYPE_PREFIX, 24013) +HANDLE_BAT(APINT_TYPE_PREFIX, 24014) +HANDLE_BAT(APINT_TYPE_PREFIX, 24015) +HANDLE_BAT(APINT_TYPE_PREFIX, 24016) +HANDLE_BAT(APINT_TYPE_PREFIX, 24017) +HANDLE_BAT(APINT_TYPE_PREFIX, 24018) +HANDLE_BAT(APINT_TYPE_PREFIX, 24019) +HANDLE_BAT(APINT_TYPE_PREFIX, 24020) +HANDLE_BAT(APINT_TYPE_PREFIX, 24021) +HANDLE_BAT(APINT_TYPE_PREFIX, 24022) +HANDLE_BAT(APINT_TYPE_PREFIX, 24023) +HANDLE_BAT(APINT_TYPE_PREFIX, 24024) +HANDLE_BAT(APINT_TYPE_PREFIX, 24025) +HANDLE_BAT(APINT_TYPE_PREFIX, 24026) +HANDLE_BAT(APINT_TYPE_PREFIX, 24027) +HANDLE_BAT(APINT_TYPE_PREFIX, 24028) +HANDLE_BAT(APINT_TYPE_PREFIX, 24029) +HANDLE_BAT(APINT_TYPE_PREFIX, 24030) +HANDLE_BAT(APINT_TYPE_PREFIX, 24031) +HANDLE_BAT(APINT_TYPE_PREFIX, 24032) +HANDLE_BAT(APINT_TYPE_PREFIX, 24033) +HANDLE_BAT(APINT_TYPE_PREFIX, 24034) +HANDLE_BAT(APINT_TYPE_PREFIX, 24035) +HANDLE_BAT(APINT_TYPE_PREFIX, 24036) +HANDLE_BAT(APINT_TYPE_PREFIX, 24037) +HANDLE_BAT(APINT_TYPE_PREFIX, 24038) +HANDLE_BAT(APINT_TYPE_PREFIX, 24039) +HANDLE_BAT(APINT_TYPE_PREFIX, 24040) +HANDLE_BAT(APINT_TYPE_PREFIX, 24041) +HANDLE_BAT(APINT_TYPE_PREFIX, 24042) +HANDLE_BAT(APINT_TYPE_PREFIX, 24043) +HANDLE_BAT(APINT_TYPE_PREFIX, 24044) +HANDLE_BAT(APINT_TYPE_PREFIX, 24045) +HANDLE_BAT(APINT_TYPE_PREFIX, 24046) +HANDLE_BAT(APINT_TYPE_PREFIX, 24047) +HANDLE_BAT(APINT_TYPE_PREFIX, 24048) +HANDLE_BAT(APINT_TYPE_PREFIX, 24049) +HANDLE_BAT(APINT_TYPE_PREFIX, 24050) +HANDLE_BAT(APINT_TYPE_PREFIX, 24051) +HANDLE_BAT(APINT_TYPE_PREFIX, 24052) +HANDLE_BAT(APINT_TYPE_PREFIX, 24053) +HANDLE_BAT(APINT_TYPE_PREFIX, 24054) +HANDLE_BAT(APINT_TYPE_PREFIX, 24055) +HANDLE_BAT(APINT_TYPE_PREFIX, 24056) +HANDLE_BAT(APINT_TYPE_PREFIX, 24057) +HANDLE_BAT(APINT_TYPE_PREFIX, 24058) +HANDLE_BAT(APINT_TYPE_PREFIX, 24059) +HANDLE_BAT(APINT_TYPE_PREFIX, 24060) +HANDLE_BAT(APINT_TYPE_PREFIX, 24061) +HANDLE_BAT(APINT_TYPE_PREFIX, 24062) +HANDLE_BAT(APINT_TYPE_PREFIX, 24063) +HANDLE_BAT(APINT_TYPE_PREFIX, 24064) +HANDLE_BAT(APINT_TYPE_PREFIX, 24065) +HANDLE_BAT(APINT_TYPE_PREFIX, 24066) +HANDLE_BAT(APINT_TYPE_PREFIX, 24067) +HANDLE_BAT(APINT_TYPE_PREFIX, 24068) +HANDLE_BAT(APINT_TYPE_PREFIX, 24069) +HANDLE_BAT(APINT_TYPE_PREFIX, 24070) +HANDLE_BAT(APINT_TYPE_PREFIX, 24071) +HANDLE_BAT(APINT_TYPE_PREFIX, 24072) +HANDLE_BAT(APINT_TYPE_PREFIX, 24073) +HANDLE_BAT(APINT_TYPE_PREFIX, 24074) +HANDLE_BAT(APINT_TYPE_PREFIX, 24075) +HANDLE_BAT(APINT_TYPE_PREFIX, 24076) +HANDLE_BAT(APINT_TYPE_PREFIX, 24077) +HANDLE_BAT(APINT_TYPE_PREFIX, 24078) +HANDLE_BAT(APINT_TYPE_PREFIX, 24079) +HANDLE_BAT(APINT_TYPE_PREFIX, 24080) +HANDLE_BAT(APINT_TYPE_PREFIX, 24081) +HANDLE_BAT(APINT_TYPE_PREFIX, 24082) +HANDLE_BAT(APINT_TYPE_PREFIX, 24083) +HANDLE_BAT(APINT_TYPE_PREFIX, 24084) +HANDLE_BAT(APINT_TYPE_PREFIX, 24085) +HANDLE_BAT(APINT_TYPE_PREFIX, 24086) +HANDLE_BAT(APINT_TYPE_PREFIX, 24087) +HANDLE_BAT(APINT_TYPE_PREFIX, 24088) +HANDLE_BAT(APINT_TYPE_PREFIX, 24089) +HANDLE_BAT(APINT_TYPE_PREFIX, 24090) +HANDLE_BAT(APINT_TYPE_PREFIX, 24091) +HANDLE_BAT(APINT_TYPE_PREFIX, 24092) +HANDLE_BAT(APINT_TYPE_PREFIX, 24093) +HANDLE_BAT(APINT_TYPE_PREFIX, 24094) +HANDLE_BAT(APINT_TYPE_PREFIX, 24095) +HANDLE_BAT(APINT_TYPE_PREFIX, 24096) +HANDLE_BAT(APINT_TYPE_PREFIX, 24097) +HANDLE_BAT(APINT_TYPE_PREFIX, 24098) +HANDLE_BAT(APINT_TYPE_PREFIX, 24099) +HANDLE_BAT(APINT_TYPE_PREFIX, 24100) +HANDLE_BAT(APINT_TYPE_PREFIX, 24101) +HANDLE_BAT(APINT_TYPE_PREFIX, 24102) +HANDLE_BAT(APINT_TYPE_PREFIX, 24103) +HANDLE_BAT(APINT_TYPE_PREFIX, 24104) +HANDLE_BAT(APINT_TYPE_PREFIX, 24105) +HANDLE_BAT(APINT_TYPE_PREFIX, 24106) +HANDLE_BAT(APINT_TYPE_PREFIX, 24107) +HANDLE_BAT(APINT_TYPE_PREFIX, 24108) +HANDLE_BAT(APINT_TYPE_PREFIX, 24109) +HANDLE_BAT(APINT_TYPE_PREFIX, 24110) +HANDLE_BAT(APINT_TYPE_PREFIX, 24111) +HANDLE_BAT(APINT_TYPE_PREFIX, 24112) +HANDLE_BAT(APINT_TYPE_PREFIX, 24113) +HANDLE_BAT(APINT_TYPE_PREFIX, 24114) +HANDLE_BAT(APINT_TYPE_PREFIX, 24115) +HANDLE_BAT(APINT_TYPE_PREFIX, 24116) +HANDLE_BAT(APINT_TYPE_PREFIX, 24117) +HANDLE_BAT(APINT_TYPE_PREFIX, 24118) +HANDLE_BAT(APINT_TYPE_PREFIX, 24119) +HANDLE_BAT(APINT_TYPE_PREFIX, 24120) +HANDLE_BAT(APINT_TYPE_PREFIX, 24121) +HANDLE_BAT(APINT_TYPE_PREFIX, 24122) +HANDLE_BAT(APINT_TYPE_PREFIX, 24123) +HANDLE_BAT(APINT_TYPE_PREFIX, 24124) +HANDLE_BAT(APINT_TYPE_PREFIX, 24125) +HANDLE_BAT(APINT_TYPE_PREFIX, 24126) +HANDLE_BAT(APINT_TYPE_PREFIX, 24127) +HANDLE_BAT(APINT_TYPE_PREFIX, 24128) +HANDLE_BAT(APINT_TYPE_PREFIX, 24129) +HANDLE_BAT(APINT_TYPE_PREFIX, 24130) +HANDLE_BAT(APINT_TYPE_PREFIX, 24131) +HANDLE_BAT(APINT_TYPE_PREFIX, 24132) +HANDLE_BAT(APINT_TYPE_PREFIX, 24133) +HANDLE_BAT(APINT_TYPE_PREFIX, 24134) +HANDLE_BAT(APINT_TYPE_PREFIX, 24135) +HANDLE_BAT(APINT_TYPE_PREFIX, 24136) +HANDLE_BAT(APINT_TYPE_PREFIX, 24137) +HANDLE_BAT(APINT_TYPE_PREFIX, 24138) +HANDLE_BAT(APINT_TYPE_PREFIX, 24139) +HANDLE_BAT(APINT_TYPE_PREFIX, 24140) +HANDLE_BAT(APINT_TYPE_PREFIX, 24141) +HANDLE_BAT(APINT_TYPE_PREFIX, 24142) +HANDLE_BAT(APINT_TYPE_PREFIX, 24143) +HANDLE_BAT(APINT_TYPE_PREFIX, 24144) +HANDLE_BAT(APINT_TYPE_PREFIX, 24145) +HANDLE_BAT(APINT_TYPE_PREFIX, 24146) +HANDLE_BAT(APINT_TYPE_PREFIX, 24147) +HANDLE_BAT(APINT_TYPE_PREFIX, 24148) +HANDLE_BAT(APINT_TYPE_PREFIX, 24149) +HANDLE_BAT(APINT_TYPE_PREFIX, 24150) +HANDLE_BAT(APINT_TYPE_PREFIX, 24151) +HANDLE_BAT(APINT_TYPE_PREFIX, 24152) +HANDLE_BAT(APINT_TYPE_PREFIX, 24153) +HANDLE_BAT(APINT_TYPE_PREFIX, 24154) +HANDLE_BAT(APINT_TYPE_PREFIX, 24155) +HANDLE_BAT(APINT_TYPE_PREFIX, 24156) +HANDLE_BAT(APINT_TYPE_PREFIX, 24157) +HANDLE_BAT(APINT_TYPE_PREFIX, 24158) +HANDLE_BAT(APINT_TYPE_PREFIX, 24159) +HANDLE_BAT(APINT_TYPE_PREFIX, 24160) +HANDLE_BAT(APINT_TYPE_PREFIX, 24161) +HANDLE_BAT(APINT_TYPE_PREFIX, 24162) +HANDLE_BAT(APINT_TYPE_PREFIX, 24163) +HANDLE_BAT(APINT_TYPE_PREFIX, 24164) +HANDLE_BAT(APINT_TYPE_PREFIX, 24165) +HANDLE_BAT(APINT_TYPE_PREFIX, 24166) +HANDLE_BAT(APINT_TYPE_PREFIX, 24167) +HANDLE_BAT(APINT_TYPE_PREFIX, 24168) +HANDLE_BAT(APINT_TYPE_PREFIX, 24169) +HANDLE_BAT(APINT_TYPE_PREFIX, 24170) +HANDLE_BAT(APINT_TYPE_PREFIX, 24171) +HANDLE_BAT(APINT_TYPE_PREFIX, 24172) +HANDLE_BAT(APINT_TYPE_PREFIX, 24173) +HANDLE_BAT(APINT_TYPE_PREFIX, 24174) +HANDLE_BAT(APINT_TYPE_PREFIX, 24175) +HANDLE_BAT(APINT_TYPE_PREFIX, 24176) +HANDLE_BAT(APINT_TYPE_PREFIX, 24177) +HANDLE_BAT(APINT_TYPE_PREFIX, 24178) +HANDLE_BAT(APINT_TYPE_PREFIX, 24179) +HANDLE_BAT(APINT_TYPE_PREFIX, 24180) +HANDLE_BAT(APINT_TYPE_PREFIX, 24181) +HANDLE_BAT(APINT_TYPE_PREFIX, 24182) +HANDLE_BAT(APINT_TYPE_PREFIX, 24183) +HANDLE_BAT(APINT_TYPE_PREFIX, 24184) +HANDLE_BAT(APINT_TYPE_PREFIX, 24185) +HANDLE_BAT(APINT_TYPE_PREFIX, 24186) +HANDLE_BAT(APINT_TYPE_PREFIX, 24187) +HANDLE_BAT(APINT_TYPE_PREFIX, 24188) +HANDLE_BAT(APINT_TYPE_PREFIX, 24189) +HANDLE_BAT(APINT_TYPE_PREFIX, 24190) +HANDLE_BAT(APINT_TYPE_PREFIX, 24191) +HANDLE_BAT(APINT_TYPE_PREFIX, 24192) +HANDLE_BAT(APINT_TYPE_PREFIX, 24193) +HANDLE_BAT(APINT_TYPE_PREFIX, 24194) +HANDLE_BAT(APINT_TYPE_PREFIX, 24195) +HANDLE_BAT(APINT_TYPE_PREFIX, 24196) +HANDLE_BAT(APINT_TYPE_PREFIX, 24197) +HANDLE_BAT(APINT_TYPE_PREFIX, 24198) +HANDLE_BAT(APINT_TYPE_PREFIX, 24199) +HANDLE_BAT(APINT_TYPE_PREFIX, 24200) +HANDLE_BAT(APINT_TYPE_PREFIX, 24201) +HANDLE_BAT(APINT_TYPE_PREFIX, 24202) +HANDLE_BAT(APINT_TYPE_PREFIX, 24203) +HANDLE_BAT(APINT_TYPE_PREFIX, 24204) +HANDLE_BAT(APINT_TYPE_PREFIX, 24205) +HANDLE_BAT(APINT_TYPE_PREFIX, 24206) +HANDLE_BAT(APINT_TYPE_PREFIX, 24207) +HANDLE_BAT(APINT_TYPE_PREFIX, 24208) +HANDLE_BAT(APINT_TYPE_PREFIX, 24209) +HANDLE_BAT(APINT_TYPE_PREFIX, 24210) +HANDLE_BAT(APINT_TYPE_PREFIX, 24211) +HANDLE_BAT(APINT_TYPE_PREFIX, 24212) +HANDLE_BAT(APINT_TYPE_PREFIX, 24213) +HANDLE_BAT(APINT_TYPE_PREFIX, 24214) +HANDLE_BAT(APINT_TYPE_PREFIX, 24215) +HANDLE_BAT(APINT_TYPE_PREFIX, 24216) +HANDLE_BAT(APINT_TYPE_PREFIX, 24217) +HANDLE_BAT(APINT_TYPE_PREFIX, 24218) +HANDLE_BAT(APINT_TYPE_PREFIX, 24219) +HANDLE_BAT(APINT_TYPE_PREFIX, 24220) +HANDLE_BAT(APINT_TYPE_PREFIX, 24221) +HANDLE_BAT(APINT_TYPE_PREFIX, 24222) +HANDLE_BAT(APINT_TYPE_PREFIX, 24223) +HANDLE_BAT(APINT_TYPE_PREFIX, 24224) +HANDLE_BAT(APINT_TYPE_PREFIX, 24225) +HANDLE_BAT(APINT_TYPE_PREFIX, 24226) +HANDLE_BAT(APINT_TYPE_PREFIX, 24227) +HANDLE_BAT(APINT_TYPE_PREFIX, 24228) +HANDLE_BAT(APINT_TYPE_PREFIX, 24229) +HANDLE_BAT(APINT_TYPE_PREFIX, 24230) +HANDLE_BAT(APINT_TYPE_PREFIX, 24231) +HANDLE_BAT(APINT_TYPE_PREFIX, 24232) +HANDLE_BAT(APINT_TYPE_PREFIX, 24233) +HANDLE_BAT(APINT_TYPE_PREFIX, 24234) +HANDLE_BAT(APINT_TYPE_PREFIX, 24235) +HANDLE_BAT(APINT_TYPE_PREFIX, 24236) +HANDLE_BAT(APINT_TYPE_PREFIX, 24237) +HANDLE_BAT(APINT_TYPE_PREFIX, 24238) +HANDLE_BAT(APINT_TYPE_PREFIX, 24239) +HANDLE_BAT(APINT_TYPE_PREFIX, 24240) +HANDLE_BAT(APINT_TYPE_PREFIX, 24241) +HANDLE_BAT(APINT_TYPE_PREFIX, 24242) +HANDLE_BAT(APINT_TYPE_PREFIX, 24243) +HANDLE_BAT(APINT_TYPE_PREFIX, 24244) +HANDLE_BAT(APINT_TYPE_PREFIX, 24245) +HANDLE_BAT(APINT_TYPE_PREFIX, 24246) +HANDLE_BAT(APINT_TYPE_PREFIX, 24247) +HANDLE_BAT(APINT_TYPE_PREFIX, 24248) +HANDLE_BAT(APINT_TYPE_PREFIX, 24249) +HANDLE_BAT(APINT_TYPE_PREFIX, 24250) +HANDLE_BAT(APINT_TYPE_PREFIX, 24251) +HANDLE_BAT(APINT_TYPE_PREFIX, 24252) +HANDLE_BAT(APINT_TYPE_PREFIX, 24253) +HANDLE_BAT(APINT_TYPE_PREFIX, 24254) +HANDLE_BAT(APINT_TYPE_PREFIX, 24255) +HANDLE_BAT(APINT_TYPE_PREFIX, 24256) +HANDLE_BAT(APINT_TYPE_PREFIX, 24257) +HANDLE_BAT(APINT_TYPE_PREFIX, 24258) +HANDLE_BAT(APINT_TYPE_PREFIX, 24259) +HANDLE_BAT(APINT_TYPE_PREFIX, 24260) +HANDLE_BAT(APINT_TYPE_PREFIX, 24261) +HANDLE_BAT(APINT_TYPE_PREFIX, 24262) +HANDLE_BAT(APINT_TYPE_PREFIX, 24263) +HANDLE_BAT(APINT_TYPE_PREFIX, 24264) +HANDLE_BAT(APINT_TYPE_PREFIX, 24265) +HANDLE_BAT(APINT_TYPE_PREFIX, 24266) +HANDLE_BAT(APINT_TYPE_PREFIX, 24267) +HANDLE_BAT(APINT_TYPE_PREFIX, 24268) +HANDLE_BAT(APINT_TYPE_PREFIX, 24269) +HANDLE_BAT(APINT_TYPE_PREFIX, 24270) +HANDLE_BAT(APINT_TYPE_PREFIX, 24271) +HANDLE_BAT(APINT_TYPE_PREFIX, 24272) +HANDLE_BAT(APINT_TYPE_PREFIX, 24273) +HANDLE_BAT(APINT_TYPE_PREFIX, 24274) +HANDLE_BAT(APINT_TYPE_PREFIX, 24275) +HANDLE_BAT(APINT_TYPE_PREFIX, 24276) +HANDLE_BAT(APINT_TYPE_PREFIX, 24277) +HANDLE_BAT(APINT_TYPE_PREFIX, 24278) +HANDLE_BAT(APINT_TYPE_PREFIX, 24279) +HANDLE_BAT(APINT_TYPE_PREFIX, 24280) +HANDLE_BAT(APINT_TYPE_PREFIX, 24281) +HANDLE_BAT(APINT_TYPE_PREFIX, 24282) +HANDLE_BAT(APINT_TYPE_PREFIX, 24283) +HANDLE_BAT(APINT_TYPE_PREFIX, 24284) +HANDLE_BAT(APINT_TYPE_PREFIX, 24285) +HANDLE_BAT(APINT_TYPE_PREFIX, 24286) +HANDLE_BAT(APINT_TYPE_PREFIX, 24287) +HANDLE_BAT(APINT_TYPE_PREFIX, 24288) +HANDLE_BAT(APINT_TYPE_PREFIX, 24289) +HANDLE_BAT(APINT_TYPE_PREFIX, 24290) +HANDLE_BAT(APINT_TYPE_PREFIX, 24291) +HANDLE_BAT(APINT_TYPE_PREFIX, 24292) +HANDLE_BAT(APINT_TYPE_PREFIX, 24293) +HANDLE_BAT(APINT_TYPE_PREFIX, 24294) +HANDLE_BAT(APINT_TYPE_PREFIX, 24295) +HANDLE_BAT(APINT_TYPE_PREFIX, 24296) +HANDLE_BAT(APINT_TYPE_PREFIX, 24297) +HANDLE_BAT(APINT_TYPE_PREFIX, 24298) +HANDLE_BAT(APINT_TYPE_PREFIX, 24299) +HANDLE_BAT(APINT_TYPE_PREFIX, 24300) +HANDLE_BAT(APINT_TYPE_PREFIX, 24301) +HANDLE_BAT(APINT_TYPE_PREFIX, 24302) +HANDLE_BAT(APINT_TYPE_PREFIX, 24303) +HANDLE_BAT(APINT_TYPE_PREFIX, 24304) +HANDLE_BAT(APINT_TYPE_PREFIX, 24305) +HANDLE_BAT(APINT_TYPE_PREFIX, 24306) +HANDLE_BAT(APINT_TYPE_PREFIX, 24307) +HANDLE_BAT(APINT_TYPE_PREFIX, 24308) +HANDLE_BAT(APINT_TYPE_PREFIX, 24309) +HANDLE_BAT(APINT_TYPE_PREFIX, 24310) +HANDLE_BAT(APINT_TYPE_PREFIX, 24311) +HANDLE_BAT(APINT_TYPE_PREFIX, 24312) +HANDLE_BAT(APINT_TYPE_PREFIX, 24313) +HANDLE_BAT(APINT_TYPE_PREFIX, 24314) +HANDLE_BAT(APINT_TYPE_PREFIX, 24315) +HANDLE_BAT(APINT_TYPE_PREFIX, 24316) +HANDLE_BAT(APINT_TYPE_PREFIX, 24317) +HANDLE_BAT(APINT_TYPE_PREFIX, 24318) +HANDLE_BAT(APINT_TYPE_PREFIX, 24319) +HANDLE_BAT(APINT_TYPE_PREFIX, 24320) +HANDLE_BAT(APINT_TYPE_PREFIX, 24321) +HANDLE_BAT(APINT_TYPE_PREFIX, 24322) +HANDLE_BAT(APINT_TYPE_PREFIX, 24323) +HANDLE_BAT(APINT_TYPE_PREFIX, 24324) +HANDLE_BAT(APINT_TYPE_PREFIX, 24325) +HANDLE_BAT(APINT_TYPE_PREFIX, 24326) +HANDLE_BAT(APINT_TYPE_PREFIX, 24327) +HANDLE_BAT(APINT_TYPE_PREFIX, 24328) +HANDLE_BAT(APINT_TYPE_PREFIX, 24329) +HANDLE_BAT(APINT_TYPE_PREFIX, 24330) +HANDLE_BAT(APINT_TYPE_PREFIX, 24331) +HANDLE_BAT(APINT_TYPE_PREFIX, 24332) +HANDLE_BAT(APINT_TYPE_PREFIX, 24333) +HANDLE_BAT(APINT_TYPE_PREFIX, 24334) +HANDLE_BAT(APINT_TYPE_PREFIX, 24335) +HANDLE_BAT(APINT_TYPE_PREFIX, 24336) +HANDLE_BAT(APINT_TYPE_PREFIX, 24337) +HANDLE_BAT(APINT_TYPE_PREFIX, 24338) +HANDLE_BAT(APINT_TYPE_PREFIX, 24339) +HANDLE_BAT(APINT_TYPE_PREFIX, 24340) +HANDLE_BAT(APINT_TYPE_PREFIX, 24341) +HANDLE_BAT(APINT_TYPE_PREFIX, 24342) +HANDLE_BAT(APINT_TYPE_PREFIX, 24343) +HANDLE_BAT(APINT_TYPE_PREFIX, 24344) +HANDLE_BAT(APINT_TYPE_PREFIX, 24345) +HANDLE_BAT(APINT_TYPE_PREFIX, 24346) +HANDLE_BAT(APINT_TYPE_PREFIX, 24347) +HANDLE_BAT(APINT_TYPE_PREFIX, 24348) +HANDLE_BAT(APINT_TYPE_PREFIX, 24349) +HANDLE_BAT(APINT_TYPE_PREFIX, 24350) +HANDLE_BAT(APINT_TYPE_PREFIX, 24351) +HANDLE_BAT(APINT_TYPE_PREFIX, 24352) +HANDLE_BAT(APINT_TYPE_PREFIX, 24353) +HANDLE_BAT(APINT_TYPE_PREFIX, 24354) +HANDLE_BAT(APINT_TYPE_PREFIX, 24355) +HANDLE_BAT(APINT_TYPE_PREFIX, 24356) +HANDLE_BAT(APINT_TYPE_PREFIX, 24357) +HANDLE_BAT(APINT_TYPE_PREFIX, 24358) +HANDLE_BAT(APINT_TYPE_PREFIX, 24359) +HANDLE_BAT(APINT_TYPE_PREFIX, 24360) +HANDLE_BAT(APINT_TYPE_PREFIX, 24361) +HANDLE_BAT(APINT_TYPE_PREFIX, 24362) +HANDLE_BAT(APINT_TYPE_PREFIX, 24363) +HANDLE_BAT(APINT_TYPE_PREFIX, 24364) +HANDLE_BAT(APINT_TYPE_PREFIX, 24365) +HANDLE_BAT(APINT_TYPE_PREFIX, 24366) +HANDLE_BAT(APINT_TYPE_PREFIX, 24367) +HANDLE_BAT(APINT_TYPE_PREFIX, 24368) +HANDLE_BAT(APINT_TYPE_PREFIX, 24369) +HANDLE_BAT(APINT_TYPE_PREFIX, 24370) +HANDLE_BAT(APINT_TYPE_PREFIX, 24371) +HANDLE_BAT(APINT_TYPE_PREFIX, 24372) +HANDLE_BAT(APINT_TYPE_PREFIX, 24373) +HANDLE_BAT(APINT_TYPE_PREFIX, 24374) +HANDLE_BAT(APINT_TYPE_PREFIX, 24375) +HANDLE_BAT(APINT_TYPE_PREFIX, 24376) +HANDLE_BAT(APINT_TYPE_PREFIX, 24377) +HANDLE_BAT(APINT_TYPE_PREFIX, 24378) +HANDLE_BAT(APINT_TYPE_PREFIX, 24379) +HANDLE_BAT(APINT_TYPE_PREFIX, 24380) +HANDLE_BAT(APINT_TYPE_PREFIX, 24381) +HANDLE_BAT(APINT_TYPE_PREFIX, 24382) +HANDLE_BAT(APINT_TYPE_PREFIX, 24383) +HANDLE_BAT(APINT_TYPE_PREFIX, 24384) +HANDLE_BAT(APINT_TYPE_PREFIX, 24385) +HANDLE_BAT(APINT_TYPE_PREFIX, 24386) +HANDLE_BAT(APINT_TYPE_PREFIX, 24387) +HANDLE_BAT(APINT_TYPE_PREFIX, 24388) +HANDLE_BAT(APINT_TYPE_PREFIX, 24389) +HANDLE_BAT(APINT_TYPE_PREFIX, 24390) +HANDLE_BAT(APINT_TYPE_PREFIX, 24391) +HANDLE_BAT(APINT_TYPE_PREFIX, 24392) +HANDLE_BAT(APINT_TYPE_PREFIX, 24393) +HANDLE_BAT(APINT_TYPE_PREFIX, 24394) +HANDLE_BAT(APINT_TYPE_PREFIX, 24395) +HANDLE_BAT(APINT_TYPE_PREFIX, 24396) +HANDLE_BAT(APINT_TYPE_PREFIX, 24397) +HANDLE_BAT(APINT_TYPE_PREFIX, 24398) +HANDLE_BAT(APINT_TYPE_PREFIX, 24399) +HANDLE_BAT(APINT_TYPE_PREFIX, 24400) +HANDLE_BAT(APINT_TYPE_PREFIX, 24401) +HANDLE_BAT(APINT_TYPE_PREFIX, 24402) +HANDLE_BAT(APINT_TYPE_PREFIX, 24403) +HANDLE_BAT(APINT_TYPE_PREFIX, 24404) +HANDLE_BAT(APINT_TYPE_PREFIX, 24405) +HANDLE_BAT(APINT_TYPE_PREFIX, 24406) +HANDLE_BAT(APINT_TYPE_PREFIX, 24407) +HANDLE_BAT(APINT_TYPE_PREFIX, 24408) +HANDLE_BAT(APINT_TYPE_PREFIX, 24409) +HANDLE_BAT(APINT_TYPE_PREFIX, 24410) +HANDLE_BAT(APINT_TYPE_PREFIX, 24411) +HANDLE_BAT(APINT_TYPE_PREFIX, 24412) +HANDLE_BAT(APINT_TYPE_PREFIX, 24413) +HANDLE_BAT(APINT_TYPE_PREFIX, 24414) +HANDLE_BAT(APINT_TYPE_PREFIX, 24415) +HANDLE_BAT(APINT_TYPE_PREFIX, 24416) +HANDLE_BAT(APINT_TYPE_PREFIX, 24417) +HANDLE_BAT(APINT_TYPE_PREFIX, 24418) +HANDLE_BAT(APINT_TYPE_PREFIX, 24419) +HANDLE_BAT(APINT_TYPE_PREFIX, 24420) +HANDLE_BAT(APINT_TYPE_PREFIX, 24421) +HANDLE_BAT(APINT_TYPE_PREFIX, 24422) +HANDLE_BAT(APINT_TYPE_PREFIX, 24423) +HANDLE_BAT(APINT_TYPE_PREFIX, 24424) +HANDLE_BAT(APINT_TYPE_PREFIX, 24425) +HANDLE_BAT(APINT_TYPE_PREFIX, 24426) +HANDLE_BAT(APINT_TYPE_PREFIX, 24427) +HANDLE_BAT(APINT_TYPE_PREFIX, 24428) +HANDLE_BAT(APINT_TYPE_PREFIX, 24429) +HANDLE_BAT(APINT_TYPE_PREFIX, 24430) +HANDLE_BAT(APINT_TYPE_PREFIX, 24431) +HANDLE_BAT(APINT_TYPE_PREFIX, 24432) +HANDLE_BAT(APINT_TYPE_PREFIX, 24433) +HANDLE_BAT(APINT_TYPE_PREFIX, 24434) +HANDLE_BAT(APINT_TYPE_PREFIX, 24435) +HANDLE_BAT(APINT_TYPE_PREFIX, 24436) +HANDLE_BAT(APINT_TYPE_PREFIX, 24437) +HANDLE_BAT(APINT_TYPE_PREFIX, 24438) +HANDLE_BAT(APINT_TYPE_PREFIX, 24439) +HANDLE_BAT(APINT_TYPE_PREFIX, 24440) +HANDLE_BAT(APINT_TYPE_PREFIX, 24441) +HANDLE_BAT(APINT_TYPE_PREFIX, 24442) +HANDLE_BAT(APINT_TYPE_PREFIX, 24443) +HANDLE_BAT(APINT_TYPE_PREFIX, 24444) +HANDLE_BAT(APINT_TYPE_PREFIX, 24445) +HANDLE_BAT(APINT_TYPE_PREFIX, 24446) +HANDLE_BAT(APINT_TYPE_PREFIX, 24447) +HANDLE_BAT(APINT_TYPE_PREFIX, 24448) +HANDLE_BAT(APINT_TYPE_PREFIX, 24449) +HANDLE_BAT(APINT_TYPE_PREFIX, 24450) +HANDLE_BAT(APINT_TYPE_PREFIX, 24451) +HANDLE_BAT(APINT_TYPE_PREFIX, 24452) +HANDLE_BAT(APINT_TYPE_PREFIX, 24453) +HANDLE_BAT(APINT_TYPE_PREFIX, 24454) +HANDLE_BAT(APINT_TYPE_PREFIX, 24455) +HANDLE_BAT(APINT_TYPE_PREFIX, 24456) +HANDLE_BAT(APINT_TYPE_PREFIX, 24457) +HANDLE_BAT(APINT_TYPE_PREFIX, 24458) +HANDLE_BAT(APINT_TYPE_PREFIX, 24459) +HANDLE_BAT(APINT_TYPE_PREFIX, 24460) +HANDLE_BAT(APINT_TYPE_PREFIX, 24461) +HANDLE_BAT(APINT_TYPE_PREFIX, 24462) +HANDLE_BAT(APINT_TYPE_PREFIX, 24463) +HANDLE_BAT(APINT_TYPE_PREFIX, 24464) +HANDLE_BAT(APINT_TYPE_PREFIX, 24465) +HANDLE_BAT(APINT_TYPE_PREFIX, 24466) +HANDLE_BAT(APINT_TYPE_PREFIX, 24467) +HANDLE_BAT(APINT_TYPE_PREFIX, 24468) +HANDLE_BAT(APINT_TYPE_PREFIX, 24469) +HANDLE_BAT(APINT_TYPE_PREFIX, 24470) +HANDLE_BAT(APINT_TYPE_PREFIX, 24471) +HANDLE_BAT(APINT_TYPE_PREFIX, 24472) +HANDLE_BAT(APINT_TYPE_PREFIX, 24473) +HANDLE_BAT(APINT_TYPE_PREFIX, 24474) +HANDLE_BAT(APINT_TYPE_PREFIX, 24475) +HANDLE_BAT(APINT_TYPE_PREFIX, 24476) +HANDLE_BAT(APINT_TYPE_PREFIX, 24477) +HANDLE_BAT(APINT_TYPE_PREFIX, 24478) +HANDLE_BAT(APINT_TYPE_PREFIX, 24479) +HANDLE_BAT(APINT_TYPE_PREFIX, 24480) +HANDLE_BAT(APINT_TYPE_PREFIX, 24481) +HANDLE_BAT(APINT_TYPE_PREFIX, 24482) +HANDLE_BAT(APINT_TYPE_PREFIX, 24483) +HANDLE_BAT(APINT_TYPE_PREFIX, 24484) +HANDLE_BAT(APINT_TYPE_PREFIX, 24485) +HANDLE_BAT(APINT_TYPE_PREFIX, 24486) +HANDLE_BAT(APINT_TYPE_PREFIX, 24487) +HANDLE_BAT(APINT_TYPE_PREFIX, 24488) +HANDLE_BAT(APINT_TYPE_PREFIX, 24489) +HANDLE_BAT(APINT_TYPE_PREFIX, 24490) +HANDLE_BAT(APINT_TYPE_PREFIX, 24491) +HANDLE_BAT(APINT_TYPE_PREFIX, 24492) +HANDLE_BAT(APINT_TYPE_PREFIX, 24493) +HANDLE_BAT(APINT_TYPE_PREFIX, 24494) +HANDLE_BAT(APINT_TYPE_PREFIX, 24495) +HANDLE_BAT(APINT_TYPE_PREFIX, 24496) +HANDLE_BAT(APINT_TYPE_PREFIX, 24497) +HANDLE_BAT(APINT_TYPE_PREFIX, 24498) +HANDLE_BAT(APINT_TYPE_PREFIX, 24499) +HANDLE_BAT(APINT_TYPE_PREFIX, 24500) +HANDLE_BAT(APINT_TYPE_PREFIX, 24501) +HANDLE_BAT(APINT_TYPE_PREFIX, 24502) +HANDLE_BAT(APINT_TYPE_PREFIX, 24503) +HANDLE_BAT(APINT_TYPE_PREFIX, 24504) +HANDLE_BAT(APINT_TYPE_PREFIX, 24505) +HANDLE_BAT(APINT_TYPE_PREFIX, 24506) +HANDLE_BAT(APINT_TYPE_PREFIX, 24507) +HANDLE_BAT(APINT_TYPE_PREFIX, 24508) +HANDLE_BAT(APINT_TYPE_PREFIX, 24509) +HANDLE_BAT(APINT_TYPE_PREFIX, 24510) +HANDLE_BAT(APINT_TYPE_PREFIX, 24511) +HANDLE_BAT(APINT_TYPE_PREFIX, 24512) +HANDLE_BAT(APINT_TYPE_PREFIX, 24513) +HANDLE_BAT(APINT_TYPE_PREFIX, 24514) +HANDLE_BAT(APINT_TYPE_PREFIX, 24515) +HANDLE_BAT(APINT_TYPE_PREFIX, 24516) +HANDLE_BAT(APINT_TYPE_PREFIX, 24517) +HANDLE_BAT(APINT_TYPE_PREFIX, 24518) +HANDLE_BAT(APINT_TYPE_PREFIX, 24519) +HANDLE_BAT(APINT_TYPE_PREFIX, 24520) +HANDLE_BAT(APINT_TYPE_PREFIX, 24521) +HANDLE_BAT(APINT_TYPE_PREFIX, 24522) +HANDLE_BAT(APINT_TYPE_PREFIX, 24523) +HANDLE_BAT(APINT_TYPE_PREFIX, 24524) +HANDLE_BAT(APINT_TYPE_PREFIX, 24525) +HANDLE_BAT(APINT_TYPE_PREFIX, 24526) +HANDLE_BAT(APINT_TYPE_PREFIX, 24527) +HANDLE_BAT(APINT_TYPE_PREFIX, 24528) +HANDLE_BAT(APINT_TYPE_PREFIX, 24529) +HANDLE_BAT(APINT_TYPE_PREFIX, 24530) +HANDLE_BAT(APINT_TYPE_PREFIX, 24531) +HANDLE_BAT(APINT_TYPE_PREFIX, 24532) +HANDLE_BAT(APINT_TYPE_PREFIX, 24533) +HANDLE_BAT(APINT_TYPE_PREFIX, 24534) +HANDLE_BAT(APINT_TYPE_PREFIX, 24535) +HANDLE_BAT(APINT_TYPE_PREFIX, 24536) +HANDLE_BAT(APINT_TYPE_PREFIX, 24537) +HANDLE_BAT(APINT_TYPE_PREFIX, 24538) +HANDLE_BAT(APINT_TYPE_PREFIX, 24539) +HANDLE_BAT(APINT_TYPE_PREFIX, 24540) +HANDLE_BAT(APINT_TYPE_PREFIX, 24541) +HANDLE_BAT(APINT_TYPE_PREFIX, 24542) +HANDLE_BAT(APINT_TYPE_PREFIX, 24543) +HANDLE_BAT(APINT_TYPE_PREFIX, 24544) +HANDLE_BAT(APINT_TYPE_PREFIX, 24545) +HANDLE_BAT(APINT_TYPE_PREFIX, 24546) +HANDLE_BAT(APINT_TYPE_PREFIX, 24547) +HANDLE_BAT(APINT_TYPE_PREFIX, 24548) +HANDLE_BAT(APINT_TYPE_PREFIX, 24549) +HANDLE_BAT(APINT_TYPE_PREFIX, 24550) +HANDLE_BAT(APINT_TYPE_PREFIX, 24551) +HANDLE_BAT(APINT_TYPE_PREFIX, 24552) +HANDLE_BAT(APINT_TYPE_PREFIX, 24553) +HANDLE_BAT(APINT_TYPE_PREFIX, 24554) +HANDLE_BAT(APINT_TYPE_PREFIX, 24555) +HANDLE_BAT(APINT_TYPE_PREFIX, 24556) +HANDLE_BAT(APINT_TYPE_PREFIX, 24557) +HANDLE_BAT(APINT_TYPE_PREFIX, 24558) +HANDLE_BAT(APINT_TYPE_PREFIX, 24559) +HANDLE_BAT(APINT_TYPE_PREFIX, 24560) +HANDLE_BAT(APINT_TYPE_PREFIX, 24561) +HANDLE_BAT(APINT_TYPE_PREFIX, 24562) +HANDLE_BAT(APINT_TYPE_PREFIX, 24563) +HANDLE_BAT(APINT_TYPE_PREFIX, 24564) +HANDLE_BAT(APINT_TYPE_PREFIX, 24565) +HANDLE_BAT(APINT_TYPE_PREFIX, 24566) +HANDLE_BAT(APINT_TYPE_PREFIX, 24567) +HANDLE_BAT(APINT_TYPE_PREFIX, 24568) +HANDLE_BAT(APINT_TYPE_PREFIX, 24569) +HANDLE_BAT(APINT_TYPE_PREFIX, 24570) +HANDLE_BAT(APINT_TYPE_PREFIX, 24571) +HANDLE_BAT(APINT_TYPE_PREFIX, 24572) +HANDLE_BAT(APINT_TYPE_PREFIX, 24573) +HANDLE_BAT(APINT_TYPE_PREFIX, 24574) +HANDLE_BAT(APINT_TYPE_PREFIX, 24575) +HANDLE_BAT(APINT_TYPE_PREFIX, 24576) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 24 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 24577) +HANDLE_BAT(, 24578) +HANDLE_BAT(, 24579) +HANDLE_BAT(, 24580) +HANDLE_BAT(, 24581) +HANDLE_BAT(, 24582) +HANDLE_BAT(, 24583) +HANDLE_BAT(, 24584) +HANDLE_BAT(, 24585) +HANDLE_BAT(, 24586) +HANDLE_BAT(, 24587) +HANDLE_BAT(, 24588) +HANDLE_BAT(, 24589) +HANDLE_BAT(, 24590) +HANDLE_BAT(, 24591) +HANDLE_BAT(, 24592) +HANDLE_BAT(, 24593) +HANDLE_BAT(, 24594) +HANDLE_BAT(, 24595) +HANDLE_BAT(, 24596) +HANDLE_BAT(, 24597) +HANDLE_BAT(, 24598) +HANDLE_BAT(, 24599) +HANDLE_BAT(, 24600) +HANDLE_BAT(, 24601) +HANDLE_BAT(, 24602) +HANDLE_BAT(, 24603) +HANDLE_BAT(, 24604) +HANDLE_BAT(, 24605) +HANDLE_BAT(, 24606) +HANDLE_BAT(, 24607) +HANDLE_BAT(, 24608) +HANDLE_BAT(, 24609) +HANDLE_BAT(, 24610) +HANDLE_BAT(, 24611) +HANDLE_BAT(, 24612) +HANDLE_BAT(, 24613) +HANDLE_BAT(, 24614) +HANDLE_BAT(, 24615) +HANDLE_BAT(, 24616) +HANDLE_BAT(, 24617) +HANDLE_BAT(, 24618) +HANDLE_BAT(, 24619) +HANDLE_BAT(, 24620) +HANDLE_BAT(, 24621) +HANDLE_BAT(, 24622) +HANDLE_BAT(, 24623) +HANDLE_BAT(, 24624) +HANDLE_BAT(, 24625) +HANDLE_BAT(, 24626) +HANDLE_BAT(, 24627) +HANDLE_BAT(, 24628) +HANDLE_BAT(, 24629) +HANDLE_BAT(, 24630) +HANDLE_BAT(, 24631) +HANDLE_BAT(, 24632) +HANDLE_BAT(, 24633) +HANDLE_BAT(, 24634) +HANDLE_BAT(, 24635) +HANDLE_BAT(, 24636) +HANDLE_BAT(, 24637) +HANDLE_BAT(, 24638) +HANDLE_BAT(, 24639) +HANDLE_BAT(, 24640) +HANDLE_BAT(, 24641) +HANDLE_BAT(, 24642) +HANDLE_BAT(, 24643) +HANDLE_BAT(, 24644) +HANDLE_BAT(, 24645) +HANDLE_BAT(, 24646) +HANDLE_BAT(, 24647) +HANDLE_BAT(, 24648) +HANDLE_BAT(, 24649) +HANDLE_BAT(, 24650) +HANDLE_BAT(, 24651) +HANDLE_BAT(, 24652) +HANDLE_BAT(, 24653) +HANDLE_BAT(, 24654) +HANDLE_BAT(, 24655) +HANDLE_BAT(, 24656) +HANDLE_BAT(, 24657) +HANDLE_BAT(, 24658) +HANDLE_BAT(, 24659) +HANDLE_BAT(, 24660) +HANDLE_BAT(, 24661) +HANDLE_BAT(, 24662) +HANDLE_BAT(, 24663) +HANDLE_BAT(, 24664) +HANDLE_BAT(, 24665) +HANDLE_BAT(, 24666) +HANDLE_BAT(, 24667) +HANDLE_BAT(, 24668) +HANDLE_BAT(, 24669) +HANDLE_BAT(, 24670) +HANDLE_BAT(, 24671) +HANDLE_BAT(, 24672) +HANDLE_BAT(, 24673) +HANDLE_BAT(, 24674) +HANDLE_BAT(, 24675) +HANDLE_BAT(, 24676) +HANDLE_BAT(, 24677) +HANDLE_BAT(, 24678) +HANDLE_BAT(, 24679) +HANDLE_BAT(, 24680) +HANDLE_BAT(, 24681) +HANDLE_BAT(, 24682) +HANDLE_BAT(, 24683) +HANDLE_BAT(, 24684) +HANDLE_BAT(, 24685) +HANDLE_BAT(, 24686) +HANDLE_BAT(, 24687) +HANDLE_BAT(, 24688) +HANDLE_BAT(, 24689) +HANDLE_BAT(, 24690) +HANDLE_BAT(, 24691) +HANDLE_BAT(, 24692) +HANDLE_BAT(, 24693) +HANDLE_BAT(, 24694) +HANDLE_BAT(, 24695) +HANDLE_BAT(, 24696) +HANDLE_BAT(, 24697) +HANDLE_BAT(, 24698) +HANDLE_BAT(, 24699) +HANDLE_BAT(, 24700) +HANDLE_BAT(, 24701) +HANDLE_BAT(, 24702) +HANDLE_BAT(, 24703) +HANDLE_BAT(, 24704) +HANDLE_BAT(, 24705) +HANDLE_BAT(, 24706) +HANDLE_BAT(, 24707) +HANDLE_BAT(, 24708) +HANDLE_BAT(, 24709) +HANDLE_BAT(, 24710) +HANDLE_BAT(, 24711) +HANDLE_BAT(, 24712) +HANDLE_BAT(, 24713) +HANDLE_BAT(, 24714) +HANDLE_BAT(, 24715) +HANDLE_BAT(, 24716) +HANDLE_BAT(, 24717) +HANDLE_BAT(, 24718) +HANDLE_BAT(, 24719) +HANDLE_BAT(, 24720) +HANDLE_BAT(, 24721) +HANDLE_BAT(, 24722) +HANDLE_BAT(, 24723) +HANDLE_BAT(, 24724) +HANDLE_BAT(, 24725) +HANDLE_BAT(, 24726) +HANDLE_BAT(, 24727) +HANDLE_BAT(, 24728) +HANDLE_BAT(, 24729) +HANDLE_BAT(, 24730) +HANDLE_BAT(, 24731) +HANDLE_BAT(, 24732) +HANDLE_BAT(, 24733) +HANDLE_BAT(, 24734) +HANDLE_BAT(, 24735) +HANDLE_BAT(, 24736) +HANDLE_BAT(, 24737) +HANDLE_BAT(, 24738) +HANDLE_BAT(, 24739) +HANDLE_BAT(, 24740) +HANDLE_BAT(, 24741) +HANDLE_BAT(, 24742) +HANDLE_BAT(, 24743) +HANDLE_BAT(, 24744) +HANDLE_BAT(, 24745) +HANDLE_BAT(, 24746) +HANDLE_BAT(, 24747) +HANDLE_BAT(, 24748) +HANDLE_BAT(, 24749) +HANDLE_BAT(, 24750) +HANDLE_BAT(, 24751) +HANDLE_BAT(, 24752) +HANDLE_BAT(, 24753) +HANDLE_BAT(, 24754) +HANDLE_BAT(, 24755) +HANDLE_BAT(, 24756) +HANDLE_BAT(, 24757) +HANDLE_BAT(, 24758) +HANDLE_BAT(, 24759) +HANDLE_BAT(, 24760) +HANDLE_BAT(, 24761) +HANDLE_BAT(, 24762) +HANDLE_BAT(, 24763) +HANDLE_BAT(, 24764) +HANDLE_BAT(, 24765) +HANDLE_BAT(, 24766) +HANDLE_BAT(, 24767) +HANDLE_BAT(, 24768) +HANDLE_BAT(, 24769) +HANDLE_BAT(, 24770) +HANDLE_BAT(, 24771) +HANDLE_BAT(, 24772) +HANDLE_BAT(, 24773) +HANDLE_BAT(, 24774) +HANDLE_BAT(, 24775) +HANDLE_BAT(, 24776) +HANDLE_BAT(, 24777) +HANDLE_BAT(, 24778) +HANDLE_BAT(, 24779) +HANDLE_BAT(, 24780) +HANDLE_BAT(, 24781) +HANDLE_BAT(, 24782) +HANDLE_BAT(, 24783) +HANDLE_BAT(, 24784) +HANDLE_BAT(, 24785) +HANDLE_BAT(, 24786) +HANDLE_BAT(, 24787) +HANDLE_BAT(, 24788) +HANDLE_BAT(, 24789) +HANDLE_BAT(, 24790) +HANDLE_BAT(, 24791) +HANDLE_BAT(, 24792) +HANDLE_BAT(, 24793) +HANDLE_BAT(, 24794) +HANDLE_BAT(, 24795) +HANDLE_BAT(, 24796) +HANDLE_BAT(, 24797) +HANDLE_BAT(, 24798) +HANDLE_BAT(, 24799) +HANDLE_BAT(, 24800) +HANDLE_BAT(, 24801) +HANDLE_BAT(, 24802) +HANDLE_BAT(, 24803) +HANDLE_BAT(, 24804) +HANDLE_BAT(, 24805) +HANDLE_BAT(, 24806) +HANDLE_BAT(, 24807) +HANDLE_BAT(, 24808) +HANDLE_BAT(, 24809) +HANDLE_BAT(, 24810) +HANDLE_BAT(, 24811) +HANDLE_BAT(, 24812) +HANDLE_BAT(, 24813) +HANDLE_BAT(, 24814) +HANDLE_BAT(, 24815) +HANDLE_BAT(, 24816) +HANDLE_BAT(, 24817) +HANDLE_BAT(, 24818) +HANDLE_BAT(, 24819) +HANDLE_BAT(, 24820) +HANDLE_BAT(, 24821) +HANDLE_BAT(, 24822) +HANDLE_BAT(, 24823) +HANDLE_BAT(, 24824) +HANDLE_BAT(, 24825) +HANDLE_BAT(, 24826) +HANDLE_BAT(, 24827) +HANDLE_BAT(, 24828) +HANDLE_BAT(, 24829) +HANDLE_BAT(, 24830) +HANDLE_BAT(, 24831) +HANDLE_BAT(, 24832) +HANDLE_BAT(, 24833) +HANDLE_BAT(, 24834) +HANDLE_BAT(, 24835) +HANDLE_BAT(, 24836) +HANDLE_BAT(, 24837) +HANDLE_BAT(, 24838) +HANDLE_BAT(, 24839) +HANDLE_BAT(, 24840) +HANDLE_BAT(, 24841) +HANDLE_BAT(, 24842) +HANDLE_BAT(, 24843) +HANDLE_BAT(, 24844) +HANDLE_BAT(, 24845) +HANDLE_BAT(, 24846) +HANDLE_BAT(, 24847) +HANDLE_BAT(, 24848) +HANDLE_BAT(, 24849) +HANDLE_BAT(, 24850) +HANDLE_BAT(, 24851) +HANDLE_BAT(, 24852) +HANDLE_BAT(, 24853) +HANDLE_BAT(, 24854) +HANDLE_BAT(, 24855) +HANDLE_BAT(, 24856) +HANDLE_BAT(, 24857) +HANDLE_BAT(, 24858) +HANDLE_BAT(, 24859) +HANDLE_BAT(, 24860) +HANDLE_BAT(, 24861) +HANDLE_BAT(, 24862) +HANDLE_BAT(, 24863) +HANDLE_BAT(, 24864) +HANDLE_BAT(, 24865) +HANDLE_BAT(, 24866) +HANDLE_BAT(, 24867) +HANDLE_BAT(, 24868) +HANDLE_BAT(, 24869) +HANDLE_BAT(, 24870) +HANDLE_BAT(, 24871) +HANDLE_BAT(, 24872) +HANDLE_BAT(, 24873) +HANDLE_BAT(, 24874) +HANDLE_BAT(, 24875) +HANDLE_BAT(, 24876) +HANDLE_BAT(, 24877) +HANDLE_BAT(, 24878) +HANDLE_BAT(, 24879) +HANDLE_BAT(, 24880) +HANDLE_BAT(, 24881) +HANDLE_BAT(, 24882) +HANDLE_BAT(, 24883) +HANDLE_BAT(, 24884) +HANDLE_BAT(, 24885) +HANDLE_BAT(, 24886) +HANDLE_BAT(, 24887) +HANDLE_BAT(, 24888) +HANDLE_BAT(, 24889) +HANDLE_BAT(, 24890) +HANDLE_BAT(, 24891) +HANDLE_BAT(, 24892) +HANDLE_BAT(, 24893) +HANDLE_BAT(, 24894) +HANDLE_BAT(, 24895) +HANDLE_BAT(, 24896) +HANDLE_BAT(, 24897) +HANDLE_BAT(, 24898) +HANDLE_BAT(, 24899) +HANDLE_BAT(, 24900) +HANDLE_BAT(, 24901) +HANDLE_BAT(, 24902) +HANDLE_BAT(, 24903) +HANDLE_BAT(, 24904) +HANDLE_BAT(, 24905) +HANDLE_BAT(, 24906) +HANDLE_BAT(, 24907) +HANDLE_BAT(, 24908) +HANDLE_BAT(, 24909) +HANDLE_BAT(, 24910) +HANDLE_BAT(, 24911) +HANDLE_BAT(, 24912) +HANDLE_BAT(, 24913) +HANDLE_BAT(, 24914) +HANDLE_BAT(, 24915) +HANDLE_BAT(, 24916) +HANDLE_BAT(, 24917) +HANDLE_BAT(, 24918) +HANDLE_BAT(, 24919) +HANDLE_BAT(, 24920) +HANDLE_BAT(, 24921) +HANDLE_BAT(, 24922) +HANDLE_BAT(, 24923) +HANDLE_BAT(, 24924) +HANDLE_BAT(, 24925) +HANDLE_BAT(, 24926) +HANDLE_BAT(, 24927) +HANDLE_BAT(, 24928) +HANDLE_BAT(, 24929) +HANDLE_BAT(, 24930) +HANDLE_BAT(, 24931) +HANDLE_BAT(, 24932) +HANDLE_BAT(, 24933) +HANDLE_BAT(, 24934) +HANDLE_BAT(, 24935) +HANDLE_BAT(, 24936) +HANDLE_BAT(, 24937) +HANDLE_BAT(, 24938) +HANDLE_BAT(, 24939) +HANDLE_BAT(, 24940) +HANDLE_BAT(, 24941) +HANDLE_BAT(, 24942) +HANDLE_BAT(, 24943) +HANDLE_BAT(, 24944) +HANDLE_BAT(, 24945) +HANDLE_BAT(, 24946) +HANDLE_BAT(, 24947) +HANDLE_BAT(, 24948) +HANDLE_BAT(, 24949) +HANDLE_BAT(, 24950) +HANDLE_BAT(, 24951) +HANDLE_BAT(, 24952) +HANDLE_BAT(, 24953) +HANDLE_BAT(, 24954) +HANDLE_BAT(, 24955) +HANDLE_BAT(, 24956) +HANDLE_BAT(, 24957) +HANDLE_BAT(, 24958) +HANDLE_BAT(, 24959) +HANDLE_BAT(, 24960) +HANDLE_BAT(, 24961) +HANDLE_BAT(, 24962) +HANDLE_BAT(, 24963) +HANDLE_BAT(, 24964) +HANDLE_BAT(, 24965) +HANDLE_BAT(, 24966) +HANDLE_BAT(, 24967) +HANDLE_BAT(, 24968) +HANDLE_BAT(, 24969) +HANDLE_BAT(, 24970) +HANDLE_BAT(, 24971) +HANDLE_BAT(, 24972) +HANDLE_BAT(, 24973) +HANDLE_BAT(, 24974) +HANDLE_BAT(, 24975) +HANDLE_BAT(, 24976) +HANDLE_BAT(, 24977) +HANDLE_BAT(, 24978) +HANDLE_BAT(, 24979) +HANDLE_BAT(, 24980) +HANDLE_BAT(, 24981) +HANDLE_BAT(, 24982) +HANDLE_BAT(, 24983) +HANDLE_BAT(, 24984) +HANDLE_BAT(, 24985) +HANDLE_BAT(, 24986) +HANDLE_BAT(, 24987) +HANDLE_BAT(, 24988) +HANDLE_BAT(, 24989) +HANDLE_BAT(, 24990) +HANDLE_BAT(, 24991) +HANDLE_BAT(, 24992) +HANDLE_BAT(, 24993) +HANDLE_BAT(, 24994) +HANDLE_BAT(, 24995) +HANDLE_BAT(, 24996) +HANDLE_BAT(, 24997) +HANDLE_BAT(, 24998) +HANDLE_BAT(, 24999) +HANDLE_BAT(, 25000) +HANDLE_BAT(, 25001) +HANDLE_BAT(, 25002) +HANDLE_BAT(, 25003) +HANDLE_BAT(, 25004) +HANDLE_BAT(, 25005) +HANDLE_BAT(, 25006) +HANDLE_BAT(, 25007) +HANDLE_BAT(, 25008) +HANDLE_BAT(, 25009) +HANDLE_BAT(, 25010) +HANDLE_BAT(, 25011) +HANDLE_BAT(, 25012) +HANDLE_BAT(, 25013) +HANDLE_BAT(, 25014) +HANDLE_BAT(, 25015) +HANDLE_BAT(, 25016) +HANDLE_BAT(, 25017) +HANDLE_BAT(, 25018) +HANDLE_BAT(, 25019) +HANDLE_BAT(, 25020) +HANDLE_BAT(, 25021) +HANDLE_BAT(, 25022) +HANDLE_BAT(, 25023) +HANDLE_BAT(, 25024) +HANDLE_BAT(, 25025) +HANDLE_BAT(, 25026) +HANDLE_BAT(, 25027) +HANDLE_BAT(, 25028) +HANDLE_BAT(, 25029) +HANDLE_BAT(, 25030) +HANDLE_BAT(, 25031) +HANDLE_BAT(, 25032) +HANDLE_BAT(, 25033) +HANDLE_BAT(, 25034) +HANDLE_BAT(, 25035) +HANDLE_BAT(, 25036) +HANDLE_BAT(, 25037) +HANDLE_BAT(, 25038) +HANDLE_BAT(, 25039) +HANDLE_BAT(, 25040) +HANDLE_BAT(, 25041) +HANDLE_BAT(, 25042) +HANDLE_BAT(, 25043) +HANDLE_BAT(, 25044) +HANDLE_BAT(, 25045) +HANDLE_BAT(, 25046) +HANDLE_BAT(, 25047) +HANDLE_BAT(, 25048) +HANDLE_BAT(, 25049) +HANDLE_BAT(, 25050) +HANDLE_BAT(, 25051) +HANDLE_BAT(, 25052) +HANDLE_BAT(, 25053) +HANDLE_BAT(, 25054) +HANDLE_BAT(, 25055) +HANDLE_BAT(, 25056) +HANDLE_BAT(, 25057) +HANDLE_BAT(, 25058) +HANDLE_BAT(, 25059) +HANDLE_BAT(, 25060) +HANDLE_BAT(, 25061) +HANDLE_BAT(, 25062) +HANDLE_BAT(, 25063) +HANDLE_BAT(, 25064) +HANDLE_BAT(, 25065) +HANDLE_BAT(, 25066) +HANDLE_BAT(, 25067) +HANDLE_BAT(, 25068) +HANDLE_BAT(, 25069) +HANDLE_BAT(, 25070) +HANDLE_BAT(, 25071) +HANDLE_BAT(, 25072) +HANDLE_BAT(, 25073) +HANDLE_BAT(, 25074) +HANDLE_BAT(, 25075) +HANDLE_BAT(, 25076) +HANDLE_BAT(, 25077) +HANDLE_BAT(, 25078) +HANDLE_BAT(, 25079) +HANDLE_BAT(, 25080) +HANDLE_BAT(, 25081) +HANDLE_BAT(, 25082) +HANDLE_BAT(, 25083) +HANDLE_BAT(, 25084) +HANDLE_BAT(, 25085) +HANDLE_BAT(, 25086) +HANDLE_BAT(, 25087) +HANDLE_BAT(, 25088) +HANDLE_BAT(, 25089) +HANDLE_BAT(, 25090) +HANDLE_BAT(, 25091) +HANDLE_BAT(, 25092) +HANDLE_BAT(, 25093) +HANDLE_BAT(, 25094) +HANDLE_BAT(, 25095) +HANDLE_BAT(, 25096) +HANDLE_BAT(, 25097) +HANDLE_BAT(, 25098) +HANDLE_BAT(, 25099) +HANDLE_BAT(, 25100) +HANDLE_BAT(, 25101) +HANDLE_BAT(, 25102) +HANDLE_BAT(, 25103) +HANDLE_BAT(, 25104) +HANDLE_BAT(, 25105) +HANDLE_BAT(, 25106) +HANDLE_BAT(, 25107) +HANDLE_BAT(, 25108) +HANDLE_BAT(, 25109) +HANDLE_BAT(, 25110) +HANDLE_BAT(, 25111) +HANDLE_BAT(, 25112) +HANDLE_BAT(, 25113) +HANDLE_BAT(, 25114) +HANDLE_BAT(, 25115) +HANDLE_BAT(, 25116) +HANDLE_BAT(, 25117) +HANDLE_BAT(, 25118) +HANDLE_BAT(, 25119) +HANDLE_BAT(, 25120) +HANDLE_BAT(, 25121) +HANDLE_BAT(, 25122) +HANDLE_BAT(, 25123) +HANDLE_BAT(, 25124) +HANDLE_BAT(, 25125) +HANDLE_BAT(, 25126) +HANDLE_BAT(, 25127) +HANDLE_BAT(, 25128) +HANDLE_BAT(, 25129) +HANDLE_BAT(, 25130) +HANDLE_BAT(, 25131) +HANDLE_BAT(, 25132) +HANDLE_BAT(, 25133) +HANDLE_BAT(, 25134) +HANDLE_BAT(, 25135) +HANDLE_BAT(, 25136) +HANDLE_BAT(, 25137) +HANDLE_BAT(, 25138) +HANDLE_BAT(, 25139) +HANDLE_BAT(, 25140) +HANDLE_BAT(, 25141) +HANDLE_BAT(, 25142) +HANDLE_BAT(, 25143) +HANDLE_BAT(, 25144) +HANDLE_BAT(, 25145) +HANDLE_BAT(, 25146) +HANDLE_BAT(, 25147) +HANDLE_BAT(, 25148) +HANDLE_BAT(, 25149) +HANDLE_BAT(, 25150) +HANDLE_BAT(, 25151) +HANDLE_BAT(, 25152) +HANDLE_BAT(, 25153) +HANDLE_BAT(, 25154) +HANDLE_BAT(, 25155) +HANDLE_BAT(, 25156) +HANDLE_BAT(, 25157) +HANDLE_BAT(, 25158) +HANDLE_BAT(, 25159) +HANDLE_BAT(, 25160) +HANDLE_BAT(, 25161) +HANDLE_BAT(, 25162) +HANDLE_BAT(, 25163) +HANDLE_BAT(, 25164) +HANDLE_BAT(, 25165) +HANDLE_BAT(, 25166) +HANDLE_BAT(, 25167) +HANDLE_BAT(, 25168) +HANDLE_BAT(, 25169) +HANDLE_BAT(, 25170) +HANDLE_BAT(, 25171) +HANDLE_BAT(, 25172) +HANDLE_BAT(, 25173) +HANDLE_BAT(, 25174) +HANDLE_BAT(, 25175) +HANDLE_BAT(, 25176) +HANDLE_BAT(, 25177) +HANDLE_BAT(, 25178) +HANDLE_BAT(, 25179) +HANDLE_BAT(, 25180) +HANDLE_BAT(, 25181) +HANDLE_BAT(, 25182) +HANDLE_BAT(, 25183) +HANDLE_BAT(, 25184) +HANDLE_BAT(, 25185) +HANDLE_BAT(, 25186) +HANDLE_BAT(, 25187) +HANDLE_BAT(, 25188) +HANDLE_BAT(, 25189) +HANDLE_BAT(, 25190) +HANDLE_BAT(, 25191) +HANDLE_BAT(, 25192) +HANDLE_BAT(, 25193) +HANDLE_BAT(, 25194) +HANDLE_BAT(, 25195) +HANDLE_BAT(, 25196) +HANDLE_BAT(, 25197) +HANDLE_BAT(, 25198) +HANDLE_BAT(, 25199) +HANDLE_BAT(, 25200) +HANDLE_BAT(, 25201) +HANDLE_BAT(, 25202) +HANDLE_BAT(, 25203) +HANDLE_BAT(, 25204) +HANDLE_BAT(, 25205) +HANDLE_BAT(, 25206) +HANDLE_BAT(, 25207) +HANDLE_BAT(, 25208) +HANDLE_BAT(, 25209) +HANDLE_BAT(, 25210) +HANDLE_BAT(, 25211) +HANDLE_BAT(, 25212) +HANDLE_BAT(, 25213) +HANDLE_BAT(, 25214) +HANDLE_BAT(, 25215) +HANDLE_BAT(, 25216) +HANDLE_BAT(, 25217) +HANDLE_BAT(, 25218) +HANDLE_BAT(, 25219) +HANDLE_BAT(, 25220) +HANDLE_BAT(, 25221) +HANDLE_BAT(, 25222) +HANDLE_BAT(, 25223) +HANDLE_BAT(, 25224) +HANDLE_BAT(, 25225) +HANDLE_BAT(, 25226) +HANDLE_BAT(, 25227) +HANDLE_BAT(, 25228) +HANDLE_BAT(, 25229) +HANDLE_BAT(, 25230) +HANDLE_BAT(, 25231) +HANDLE_BAT(, 25232) +HANDLE_BAT(, 25233) +HANDLE_BAT(, 25234) +HANDLE_BAT(, 25235) +HANDLE_BAT(, 25236) +HANDLE_BAT(, 25237) +HANDLE_BAT(, 25238) +HANDLE_BAT(, 25239) +HANDLE_BAT(, 25240) +HANDLE_BAT(, 25241) +HANDLE_BAT(, 25242) +HANDLE_BAT(, 25243) +HANDLE_BAT(, 25244) +HANDLE_BAT(, 25245) +HANDLE_BAT(, 25246) +HANDLE_BAT(, 25247) +HANDLE_BAT(, 25248) +HANDLE_BAT(, 25249) +HANDLE_BAT(, 25250) +HANDLE_BAT(, 25251) +HANDLE_BAT(, 25252) +HANDLE_BAT(, 25253) +HANDLE_BAT(, 25254) +HANDLE_BAT(, 25255) +HANDLE_BAT(, 25256) +HANDLE_BAT(, 25257) +HANDLE_BAT(, 25258) +HANDLE_BAT(, 25259) +HANDLE_BAT(, 25260) +HANDLE_BAT(, 25261) +HANDLE_BAT(, 25262) +HANDLE_BAT(, 25263) +HANDLE_BAT(, 25264) +HANDLE_BAT(, 25265) +HANDLE_BAT(, 25266) +HANDLE_BAT(, 25267) +HANDLE_BAT(, 25268) +HANDLE_BAT(, 25269) +HANDLE_BAT(, 25270) +HANDLE_BAT(, 25271) +HANDLE_BAT(, 25272) +HANDLE_BAT(, 25273) +HANDLE_BAT(, 25274) +HANDLE_BAT(, 25275) +HANDLE_BAT(, 25276) +HANDLE_BAT(, 25277) +HANDLE_BAT(, 25278) +HANDLE_BAT(, 25279) +HANDLE_BAT(, 25280) +HANDLE_BAT(, 25281) +HANDLE_BAT(, 25282) +HANDLE_BAT(, 25283) +HANDLE_BAT(, 25284) +HANDLE_BAT(, 25285) +HANDLE_BAT(, 25286) +HANDLE_BAT(, 25287) +HANDLE_BAT(, 25288) +HANDLE_BAT(, 25289) +HANDLE_BAT(, 25290) +HANDLE_BAT(, 25291) +HANDLE_BAT(, 25292) +HANDLE_BAT(, 25293) +HANDLE_BAT(, 25294) +HANDLE_BAT(, 25295) +HANDLE_BAT(, 25296) +HANDLE_BAT(, 25297) +HANDLE_BAT(, 25298) +HANDLE_BAT(, 25299) +HANDLE_BAT(, 25300) +HANDLE_BAT(, 25301) +HANDLE_BAT(, 25302) +HANDLE_BAT(, 25303) +HANDLE_BAT(, 25304) +HANDLE_BAT(, 25305) +HANDLE_BAT(, 25306) +HANDLE_BAT(, 25307) +HANDLE_BAT(, 25308) +HANDLE_BAT(, 25309) +HANDLE_BAT(, 25310) +HANDLE_BAT(, 25311) +HANDLE_BAT(, 25312) +HANDLE_BAT(, 25313) +HANDLE_BAT(, 25314) +HANDLE_BAT(, 25315) +HANDLE_BAT(, 25316) +HANDLE_BAT(, 25317) +HANDLE_BAT(, 25318) +HANDLE_BAT(, 25319) +HANDLE_BAT(, 25320) +HANDLE_BAT(, 25321) +HANDLE_BAT(, 25322) +HANDLE_BAT(, 25323) +HANDLE_BAT(, 25324) +HANDLE_BAT(, 25325) +HANDLE_BAT(, 25326) +HANDLE_BAT(, 25327) +HANDLE_BAT(, 25328) +HANDLE_BAT(, 25329) +HANDLE_BAT(, 25330) +HANDLE_BAT(, 25331) +HANDLE_BAT(, 25332) +HANDLE_BAT(, 25333) +HANDLE_BAT(, 25334) +HANDLE_BAT(, 25335) +HANDLE_BAT(, 25336) +HANDLE_BAT(, 25337) +HANDLE_BAT(, 25338) +HANDLE_BAT(, 25339) +HANDLE_BAT(, 25340) +HANDLE_BAT(, 25341) +HANDLE_BAT(, 25342) +HANDLE_BAT(, 25343) +HANDLE_BAT(, 25344) +HANDLE_BAT(, 25345) +HANDLE_BAT(, 25346) +HANDLE_BAT(, 25347) +HANDLE_BAT(, 25348) +HANDLE_BAT(, 25349) +HANDLE_BAT(, 25350) +HANDLE_BAT(, 25351) +HANDLE_BAT(, 25352) +HANDLE_BAT(, 25353) +HANDLE_BAT(, 25354) +HANDLE_BAT(, 25355) +HANDLE_BAT(, 25356) +HANDLE_BAT(, 25357) +HANDLE_BAT(, 25358) +HANDLE_BAT(, 25359) +HANDLE_BAT(, 25360) +HANDLE_BAT(, 25361) +HANDLE_BAT(, 25362) +HANDLE_BAT(, 25363) +HANDLE_BAT(, 25364) +HANDLE_BAT(, 25365) +HANDLE_BAT(, 25366) +HANDLE_BAT(, 25367) +HANDLE_BAT(, 25368) +HANDLE_BAT(, 25369) +HANDLE_BAT(, 25370) +HANDLE_BAT(, 25371) +HANDLE_BAT(, 25372) +HANDLE_BAT(, 25373) +HANDLE_BAT(, 25374) +HANDLE_BAT(, 25375) +HANDLE_BAT(, 25376) +HANDLE_BAT(, 25377) +HANDLE_BAT(, 25378) +HANDLE_BAT(, 25379) +HANDLE_BAT(, 25380) +HANDLE_BAT(, 25381) +HANDLE_BAT(, 25382) +HANDLE_BAT(, 25383) +HANDLE_BAT(, 25384) +HANDLE_BAT(, 25385) +HANDLE_BAT(, 25386) +HANDLE_BAT(, 25387) +HANDLE_BAT(, 25388) +HANDLE_BAT(, 25389) +HANDLE_BAT(, 25390) +HANDLE_BAT(, 25391) +HANDLE_BAT(, 25392) +HANDLE_BAT(, 25393) +HANDLE_BAT(, 25394) +HANDLE_BAT(, 25395) +HANDLE_BAT(, 25396) +HANDLE_BAT(, 25397) +HANDLE_BAT(, 25398) +HANDLE_BAT(, 25399) +HANDLE_BAT(, 25400) +HANDLE_BAT(, 25401) +HANDLE_BAT(, 25402) +HANDLE_BAT(, 25403) +HANDLE_BAT(, 25404) +HANDLE_BAT(, 25405) +HANDLE_BAT(, 25406) +HANDLE_BAT(, 25407) +HANDLE_BAT(, 25408) +HANDLE_BAT(, 25409) +HANDLE_BAT(, 25410) +HANDLE_BAT(, 25411) +HANDLE_BAT(, 25412) +HANDLE_BAT(, 25413) +HANDLE_BAT(, 25414) +HANDLE_BAT(, 25415) +HANDLE_BAT(, 25416) +HANDLE_BAT(, 25417) +HANDLE_BAT(, 25418) +HANDLE_BAT(, 25419) +HANDLE_BAT(, 25420) +HANDLE_BAT(, 25421) +HANDLE_BAT(, 25422) +HANDLE_BAT(, 25423) +HANDLE_BAT(, 25424) +HANDLE_BAT(, 25425) +HANDLE_BAT(, 25426) +HANDLE_BAT(, 25427) +HANDLE_BAT(, 25428) +HANDLE_BAT(, 25429) +HANDLE_BAT(, 25430) +HANDLE_BAT(, 25431) +HANDLE_BAT(, 25432) +HANDLE_BAT(, 25433) +HANDLE_BAT(, 25434) +HANDLE_BAT(, 25435) +HANDLE_BAT(, 25436) +HANDLE_BAT(, 25437) +HANDLE_BAT(, 25438) +HANDLE_BAT(, 25439) +HANDLE_BAT(, 25440) +HANDLE_BAT(, 25441) +HANDLE_BAT(, 25442) +HANDLE_BAT(, 25443) +HANDLE_BAT(, 25444) +HANDLE_BAT(, 25445) +HANDLE_BAT(, 25446) +HANDLE_BAT(, 25447) +HANDLE_BAT(, 25448) +HANDLE_BAT(, 25449) +HANDLE_BAT(, 25450) +HANDLE_BAT(, 25451) +HANDLE_BAT(, 25452) +HANDLE_BAT(, 25453) +HANDLE_BAT(, 25454) +HANDLE_BAT(, 25455) +HANDLE_BAT(, 25456) +HANDLE_BAT(, 25457) +HANDLE_BAT(, 25458) +HANDLE_BAT(, 25459) +HANDLE_BAT(, 25460) +HANDLE_BAT(, 25461) +HANDLE_BAT(, 25462) +HANDLE_BAT(, 25463) +HANDLE_BAT(, 25464) +HANDLE_BAT(, 25465) +HANDLE_BAT(, 25466) +HANDLE_BAT(, 25467) +HANDLE_BAT(, 25468) +HANDLE_BAT(, 25469) +HANDLE_BAT(, 25470) +HANDLE_BAT(, 25471) +HANDLE_BAT(, 25472) +HANDLE_BAT(, 25473) +HANDLE_BAT(, 25474) +HANDLE_BAT(, 25475) +HANDLE_BAT(, 25476) +HANDLE_BAT(, 25477) +HANDLE_BAT(, 25478) +HANDLE_BAT(, 25479) +HANDLE_BAT(, 25480) +HANDLE_BAT(, 25481) +HANDLE_BAT(, 25482) +HANDLE_BAT(, 25483) +HANDLE_BAT(, 25484) +HANDLE_BAT(, 25485) +HANDLE_BAT(, 25486) +HANDLE_BAT(, 25487) +HANDLE_BAT(, 25488) +HANDLE_BAT(, 25489) +HANDLE_BAT(, 25490) +HANDLE_BAT(, 25491) +HANDLE_BAT(, 25492) +HANDLE_BAT(, 25493) +HANDLE_BAT(, 25494) +HANDLE_BAT(, 25495) +HANDLE_BAT(, 25496) +HANDLE_BAT(, 25497) +HANDLE_BAT(, 25498) +HANDLE_BAT(, 25499) +HANDLE_BAT(, 25500) +HANDLE_BAT(, 25501) +HANDLE_BAT(, 25502) +HANDLE_BAT(, 25503) +HANDLE_BAT(, 25504) +HANDLE_BAT(, 25505) +HANDLE_BAT(, 25506) +HANDLE_BAT(, 25507) +HANDLE_BAT(, 25508) +HANDLE_BAT(, 25509) +HANDLE_BAT(, 25510) +HANDLE_BAT(, 25511) +HANDLE_BAT(, 25512) +HANDLE_BAT(, 25513) +HANDLE_BAT(, 25514) +HANDLE_BAT(, 25515) +HANDLE_BAT(, 25516) +HANDLE_BAT(, 25517) +HANDLE_BAT(, 25518) +HANDLE_BAT(, 25519) +HANDLE_BAT(, 25520) +HANDLE_BAT(, 25521) +HANDLE_BAT(, 25522) +HANDLE_BAT(, 25523) +HANDLE_BAT(, 25524) +HANDLE_BAT(, 25525) +HANDLE_BAT(, 25526) +HANDLE_BAT(, 25527) +HANDLE_BAT(, 25528) +HANDLE_BAT(, 25529) +HANDLE_BAT(, 25530) +HANDLE_BAT(, 25531) +HANDLE_BAT(, 25532) +HANDLE_BAT(, 25533) +HANDLE_BAT(, 25534) +HANDLE_BAT(, 25535) +HANDLE_BAT(, 25536) +HANDLE_BAT(, 25537) +HANDLE_BAT(, 25538) +HANDLE_BAT(, 25539) +HANDLE_BAT(, 25540) +HANDLE_BAT(, 25541) +HANDLE_BAT(, 25542) +HANDLE_BAT(, 25543) +HANDLE_BAT(, 25544) +HANDLE_BAT(, 25545) +HANDLE_BAT(, 25546) +HANDLE_BAT(, 25547) +HANDLE_BAT(, 25548) +HANDLE_BAT(, 25549) +HANDLE_BAT(, 25550) +HANDLE_BAT(, 25551) +HANDLE_BAT(, 25552) +HANDLE_BAT(, 25553) +HANDLE_BAT(, 25554) +HANDLE_BAT(, 25555) +HANDLE_BAT(, 25556) +HANDLE_BAT(, 25557) +HANDLE_BAT(, 25558) +HANDLE_BAT(, 25559) +HANDLE_BAT(, 25560) +HANDLE_BAT(, 25561) +HANDLE_BAT(, 25562) +HANDLE_BAT(, 25563) +HANDLE_BAT(, 25564) +HANDLE_BAT(, 25565) +HANDLE_BAT(, 25566) +HANDLE_BAT(, 25567) +HANDLE_BAT(, 25568) +HANDLE_BAT(, 25569) +HANDLE_BAT(, 25570) +HANDLE_BAT(, 25571) +HANDLE_BAT(, 25572) +HANDLE_BAT(, 25573) +HANDLE_BAT(, 25574) +HANDLE_BAT(, 25575) +HANDLE_BAT(, 25576) +HANDLE_BAT(, 25577) +HANDLE_BAT(, 25578) +HANDLE_BAT(, 25579) +HANDLE_BAT(, 25580) +HANDLE_BAT(, 25581) +HANDLE_BAT(, 25582) +HANDLE_BAT(, 25583) +HANDLE_BAT(, 25584) +HANDLE_BAT(, 25585) +HANDLE_BAT(, 25586) +HANDLE_BAT(, 25587) +HANDLE_BAT(, 25588) +HANDLE_BAT(, 25589) +HANDLE_BAT(, 25590) +HANDLE_BAT(, 25591) +HANDLE_BAT(, 25592) +HANDLE_BAT(, 25593) +HANDLE_BAT(, 25594) +HANDLE_BAT(, 25595) +HANDLE_BAT(, 25596) +HANDLE_BAT(, 25597) +HANDLE_BAT(, 25598) +HANDLE_BAT(, 25599) +HANDLE_BAT(, 25600) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 24577) +HANDLE_BAT(APINT_TYPE_PREFIX, 24578) +HANDLE_BAT(APINT_TYPE_PREFIX, 24579) +HANDLE_BAT(APINT_TYPE_PREFIX, 24580) +HANDLE_BAT(APINT_TYPE_PREFIX, 24581) +HANDLE_BAT(APINT_TYPE_PREFIX, 24582) +HANDLE_BAT(APINT_TYPE_PREFIX, 24583) +HANDLE_BAT(APINT_TYPE_PREFIX, 24584) +HANDLE_BAT(APINT_TYPE_PREFIX, 24585) +HANDLE_BAT(APINT_TYPE_PREFIX, 24586) +HANDLE_BAT(APINT_TYPE_PREFIX, 24587) +HANDLE_BAT(APINT_TYPE_PREFIX, 24588) +HANDLE_BAT(APINT_TYPE_PREFIX, 24589) +HANDLE_BAT(APINT_TYPE_PREFIX, 24590) +HANDLE_BAT(APINT_TYPE_PREFIX, 24591) +HANDLE_BAT(APINT_TYPE_PREFIX, 24592) +HANDLE_BAT(APINT_TYPE_PREFIX, 24593) +HANDLE_BAT(APINT_TYPE_PREFIX, 24594) +HANDLE_BAT(APINT_TYPE_PREFIX, 24595) +HANDLE_BAT(APINT_TYPE_PREFIX, 24596) +HANDLE_BAT(APINT_TYPE_PREFIX, 24597) +HANDLE_BAT(APINT_TYPE_PREFIX, 24598) +HANDLE_BAT(APINT_TYPE_PREFIX, 24599) +HANDLE_BAT(APINT_TYPE_PREFIX, 24600) +HANDLE_BAT(APINT_TYPE_PREFIX, 24601) +HANDLE_BAT(APINT_TYPE_PREFIX, 24602) +HANDLE_BAT(APINT_TYPE_PREFIX, 24603) +HANDLE_BAT(APINT_TYPE_PREFIX, 24604) +HANDLE_BAT(APINT_TYPE_PREFIX, 24605) +HANDLE_BAT(APINT_TYPE_PREFIX, 24606) +HANDLE_BAT(APINT_TYPE_PREFIX, 24607) +HANDLE_BAT(APINT_TYPE_PREFIX, 24608) +HANDLE_BAT(APINT_TYPE_PREFIX, 24609) +HANDLE_BAT(APINT_TYPE_PREFIX, 24610) +HANDLE_BAT(APINT_TYPE_PREFIX, 24611) +HANDLE_BAT(APINT_TYPE_PREFIX, 24612) +HANDLE_BAT(APINT_TYPE_PREFIX, 24613) +HANDLE_BAT(APINT_TYPE_PREFIX, 24614) +HANDLE_BAT(APINT_TYPE_PREFIX, 24615) +HANDLE_BAT(APINT_TYPE_PREFIX, 24616) +HANDLE_BAT(APINT_TYPE_PREFIX, 24617) +HANDLE_BAT(APINT_TYPE_PREFIX, 24618) +HANDLE_BAT(APINT_TYPE_PREFIX, 24619) +HANDLE_BAT(APINT_TYPE_PREFIX, 24620) +HANDLE_BAT(APINT_TYPE_PREFIX, 24621) +HANDLE_BAT(APINT_TYPE_PREFIX, 24622) +HANDLE_BAT(APINT_TYPE_PREFIX, 24623) +HANDLE_BAT(APINT_TYPE_PREFIX, 24624) +HANDLE_BAT(APINT_TYPE_PREFIX, 24625) +HANDLE_BAT(APINT_TYPE_PREFIX, 24626) +HANDLE_BAT(APINT_TYPE_PREFIX, 24627) +HANDLE_BAT(APINT_TYPE_PREFIX, 24628) +HANDLE_BAT(APINT_TYPE_PREFIX, 24629) +HANDLE_BAT(APINT_TYPE_PREFIX, 24630) +HANDLE_BAT(APINT_TYPE_PREFIX, 24631) +HANDLE_BAT(APINT_TYPE_PREFIX, 24632) +HANDLE_BAT(APINT_TYPE_PREFIX, 24633) +HANDLE_BAT(APINT_TYPE_PREFIX, 24634) +HANDLE_BAT(APINT_TYPE_PREFIX, 24635) +HANDLE_BAT(APINT_TYPE_PREFIX, 24636) +HANDLE_BAT(APINT_TYPE_PREFIX, 24637) +HANDLE_BAT(APINT_TYPE_PREFIX, 24638) +HANDLE_BAT(APINT_TYPE_PREFIX, 24639) +HANDLE_BAT(APINT_TYPE_PREFIX, 24640) +HANDLE_BAT(APINT_TYPE_PREFIX, 24641) +HANDLE_BAT(APINT_TYPE_PREFIX, 24642) +HANDLE_BAT(APINT_TYPE_PREFIX, 24643) +HANDLE_BAT(APINT_TYPE_PREFIX, 24644) +HANDLE_BAT(APINT_TYPE_PREFIX, 24645) +HANDLE_BAT(APINT_TYPE_PREFIX, 24646) +HANDLE_BAT(APINT_TYPE_PREFIX, 24647) +HANDLE_BAT(APINT_TYPE_PREFIX, 24648) +HANDLE_BAT(APINT_TYPE_PREFIX, 24649) +HANDLE_BAT(APINT_TYPE_PREFIX, 24650) +HANDLE_BAT(APINT_TYPE_PREFIX, 24651) +HANDLE_BAT(APINT_TYPE_PREFIX, 24652) +HANDLE_BAT(APINT_TYPE_PREFIX, 24653) +HANDLE_BAT(APINT_TYPE_PREFIX, 24654) +HANDLE_BAT(APINT_TYPE_PREFIX, 24655) +HANDLE_BAT(APINT_TYPE_PREFIX, 24656) +HANDLE_BAT(APINT_TYPE_PREFIX, 24657) +HANDLE_BAT(APINT_TYPE_PREFIX, 24658) +HANDLE_BAT(APINT_TYPE_PREFIX, 24659) +HANDLE_BAT(APINT_TYPE_PREFIX, 24660) +HANDLE_BAT(APINT_TYPE_PREFIX, 24661) +HANDLE_BAT(APINT_TYPE_PREFIX, 24662) +HANDLE_BAT(APINT_TYPE_PREFIX, 24663) +HANDLE_BAT(APINT_TYPE_PREFIX, 24664) +HANDLE_BAT(APINT_TYPE_PREFIX, 24665) +HANDLE_BAT(APINT_TYPE_PREFIX, 24666) +HANDLE_BAT(APINT_TYPE_PREFIX, 24667) +HANDLE_BAT(APINT_TYPE_PREFIX, 24668) +HANDLE_BAT(APINT_TYPE_PREFIX, 24669) +HANDLE_BAT(APINT_TYPE_PREFIX, 24670) +HANDLE_BAT(APINT_TYPE_PREFIX, 24671) +HANDLE_BAT(APINT_TYPE_PREFIX, 24672) +HANDLE_BAT(APINT_TYPE_PREFIX, 24673) +HANDLE_BAT(APINT_TYPE_PREFIX, 24674) +HANDLE_BAT(APINT_TYPE_PREFIX, 24675) +HANDLE_BAT(APINT_TYPE_PREFIX, 24676) +HANDLE_BAT(APINT_TYPE_PREFIX, 24677) +HANDLE_BAT(APINT_TYPE_PREFIX, 24678) +HANDLE_BAT(APINT_TYPE_PREFIX, 24679) +HANDLE_BAT(APINT_TYPE_PREFIX, 24680) +HANDLE_BAT(APINT_TYPE_PREFIX, 24681) +HANDLE_BAT(APINT_TYPE_PREFIX, 24682) +HANDLE_BAT(APINT_TYPE_PREFIX, 24683) +HANDLE_BAT(APINT_TYPE_PREFIX, 24684) +HANDLE_BAT(APINT_TYPE_PREFIX, 24685) +HANDLE_BAT(APINT_TYPE_PREFIX, 24686) +HANDLE_BAT(APINT_TYPE_PREFIX, 24687) +HANDLE_BAT(APINT_TYPE_PREFIX, 24688) +HANDLE_BAT(APINT_TYPE_PREFIX, 24689) +HANDLE_BAT(APINT_TYPE_PREFIX, 24690) +HANDLE_BAT(APINT_TYPE_PREFIX, 24691) +HANDLE_BAT(APINT_TYPE_PREFIX, 24692) +HANDLE_BAT(APINT_TYPE_PREFIX, 24693) +HANDLE_BAT(APINT_TYPE_PREFIX, 24694) +HANDLE_BAT(APINT_TYPE_PREFIX, 24695) +HANDLE_BAT(APINT_TYPE_PREFIX, 24696) +HANDLE_BAT(APINT_TYPE_PREFIX, 24697) +HANDLE_BAT(APINT_TYPE_PREFIX, 24698) +HANDLE_BAT(APINT_TYPE_PREFIX, 24699) +HANDLE_BAT(APINT_TYPE_PREFIX, 24700) +HANDLE_BAT(APINT_TYPE_PREFIX, 24701) +HANDLE_BAT(APINT_TYPE_PREFIX, 24702) +HANDLE_BAT(APINT_TYPE_PREFIX, 24703) +HANDLE_BAT(APINT_TYPE_PREFIX, 24704) +HANDLE_BAT(APINT_TYPE_PREFIX, 24705) +HANDLE_BAT(APINT_TYPE_PREFIX, 24706) +HANDLE_BAT(APINT_TYPE_PREFIX, 24707) +HANDLE_BAT(APINT_TYPE_PREFIX, 24708) +HANDLE_BAT(APINT_TYPE_PREFIX, 24709) +HANDLE_BAT(APINT_TYPE_PREFIX, 24710) +HANDLE_BAT(APINT_TYPE_PREFIX, 24711) +HANDLE_BAT(APINT_TYPE_PREFIX, 24712) +HANDLE_BAT(APINT_TYPE_PREFIX, 24713) +HANDLE_BAT(APINT_TYPE_PREFIX, 24714) +HANDLE_BAT(APINT_TYPE_PREFIX, 24715) +HANDLE_BAT(APINT_TYPE_PREFIX, 24716) +HANDLE_BAT(APINT_TYPE_PREFIX, 24717) +HANDLE_BAT(APINT_TYPE_PREFIX, 24718) +HANDLE_BAT(APINT_TYPE_PREFIX, 24719) +HANDLE_BAT(APINT_TYPE_PREFIX, 24720) +HANDLE_BAT(APINT_TYPE_PREFIX, 24721) +HANDLE_BAT(APINT_TYPE_PREFIX, 24722) +HANDLE_BAT(APINT_TYPE_PREFIX, 24723) +HANDLE_BAT(APINT_TYPE_PREFIX, 24724) +HANDLE_BAT(APINT_TYPE_PREFIX, 24725) +HANDLE_BAT(APINT_TYPE_PREFIX, 24726) +HANDLE_BAT(APINT_TYPE_PREFIX, 24727) +HANDLE_BAT(APINT_TYPE_PREFIX, 24728) +HANDLE_BAT(APINT_TYPE_PREFIX, 24729) +HANDLE_BAT(APINT_TYPE_PREFIX, 24730) +HANDLE_BAT(APINT_TYPE_PREFIX, 24731) +HANDLE_BAT(APINT_TYPE_PREFIX, 24732) +HANDLE_BAT(APINT_TYPE_PREFIX, 24733) +HANDLE_BAT(APINT_TYPE_PREFIX, 24734) +HANDLE_BAT(APINT_TYPE_PREFIX, 24735) +HANDLE_BAT(APINT_TYPE_PREFIX, 24736) +HANDLE_BAT(APINT_TYPE_PREFIX, 24737) +HANDLE_BAT(APINT_TYPE_PREFIX, 24738) +HANDLE_BAT(APINT_TYPE_PREFIX, 24739) +HANDLE_BAT(APINT_TYPE_PREFIX, 24740) +HANDLE_BAT(APINT_TYPE_PREFIX, 24741) +HANDLE_BAT(APINT_TYPE_PREFIX, 24742) +HANDLE_BAT(APINT_TYPE_PREFIX, 24743) +HANDLE_BAT(APINT_TYPE_PREFIX, 24744) +HANDLE_BAT(APINT_TYPE_PREFIX, 24745) +HANDLE_BAT(APINT_TYPE_PREFIX, 24746) +HANDLE_BAT(APINT_TYPE_PREFIX, 24747) +HANDLE_BAT(APINT_TYPE_PREFIX, 24748) +HANDLE_BAT(APINT_TYPE_PREFIX, 24749) +HANDLE_BAT(APINT_TYPE_PREFIX, 24750) +HANDLE_BAT(APINT_TYPE_PREFIX, 24751) +HANDLE_BAT(APINT_TYPE_PREFIX, 24752) +HANDLE_BAT(APINT_TYPE_PREFIX, 24753) +HANDLE_BAT(APINT_TYPE_PREFIX, 24754) +HANDLE_BAT(APINT_TYPE_PREFIX, 24755) +HANDLE_BAT(APINT_TYPE_PREFIX, 24756) +HANDLE_BAT(APINT_TYPE_PREFIX, 24757) +HANDLE_BAT(APINT_TYPE_PREFIX, 24758) +HANDLE_BAT(APINT_TYPE_PREFIX, 24759) +HANDLE_BAT(APINT_TYPE_PREFIX, 24760) +HANDLE_BAT(APINT_TYPE_PREFIX, 24761) +HANDLE_BAT(APINT_TYPE_PREFIX, 24762) +HANDLE_BAT(APINT_TYPE_PREFIX, 24763) +HANDLE_BAT(APINT_TYPE_PREFIX, 24764) +HANDLE_BAT(APINT_TYPE_PREFIX, 24765) +HANDLE_BAT(APINT_TYPE_PREFIX, 24766) +HANDLE_BAT(APINT_TYPE_PREFIX, 24767) +HANDLE_BAT(APINT_TYPE_PREFIX, 24768) +HANDLE_BAT(APINT_TYPE_PREFIX, 24769) +HANDLE_BAT(APINT_TYPE_PREFIX, 24770) +HANDLE_BAT(APINT_TYPE_PREFIX, 24771) +HANDLE_BAT(APINT_TYPE_PREFIX, 24772) +HANDLE_BAT(APINT_TYPE_PREFIX, 24773) +HANDLE_BAT(APINT_TYPE_PREFIX, 24774) +HANDLE_BAT(APINT_TYPE_PREFIX, 24775) +HANDLE_BAT(APINT_TYPE_PREFIX, 24776) +HANDLE_BAT(APINT_TYPE_PREFIX, 24777) +HANDLE_BAT(APINT_TYPE_PREFIX, 24778) +HANDLE_BAT(APINT_TYPE_PREFIX, 24779) +HANDLE_BAT(APINT_TYPE_PREFIX, 24780) +HANDLE_BAT(APINT_TYPE_PREFIX, 24781) +HANDLE_BAT(APINT_TYPE_PREFIX, 24782) +HANDLE_BAT(APINT_TYPE_PREFIX, 24783) +HANDLE_BAT(APINT_TYPE_PREFIX, 24784) +HANDLE_BAT(APINT_TYPE_PREFIX, 24785) +HANDLE_BAT(APINT_TYPE_PREFIX, 24786) +HANDLE_BAT(APINT_TYPE_PREFIX, 24787) +HANDLE_BAT(APINT_TYPE_PREFIX, 24788) +HANDLE_BAT(APINT_TYPE_PREFIX, 24789) +HANDLE_BAT(APINT_TYPE_PREFIX, 24790) +HANDLE_BAT(APINT_TYPE_PREFIX, 24791) +HANDLE_BAT(APINT_TYPE_PREFIX, 24792) +HANDLE_BAT(APINT_TYPE_PREFIX, 24793) +HANDLE_BAT(APINT_TYPE_PREFIX, 24794) +HANDLE_BAT(APINT_TYPE_PREFIX, 24795) +HANDLE_BAT(APINT_TYPE_PREFIX, 24796) +HANDLE_BAT(APINT_TYPE_PREFIX, 24797) +HANDLE_BAT(APINT_TYPE_PREFIX, 24798) +HANDLE_BAT(APINT_TYPE_PREFIX, 24799) +HANDLE_BAT(APINT_TYPE_PREFIX, 24800) +HANDLE_BAT(APINT_TYPE_PREFIX, 24801) +HANDLE_BAT(APINT_TYPE_PREFIX, 24802) +HANDLE_BAT(APINT_TYPE_PREFIX, 24803) +HANDLE_BAT(APINT_TYPE_PREFIX, 24804) +HANDLE_BAT(APINT_TYPE_PREFIX, 24805) +HANDLE_BAT(APINT_TYPE_PREFIX, 24806) +HANDLE_BAT(APINT_TYPE_PREFIX, 24807) +HANDLE_BAT(APINT_TYPE_PREFIX, 24808) +HANDLE_BAT(APINT_TYPE_PREFIX, 24809) +HANDLE_BAT(APINT_TYPE_PREFIX, 24810) +HANDLE_BAT(APINT_TYPE_PREFIX, 24811) +HANDLE_BAT(APINT_TYPE_PREFIX, 24812) +HANDLE_BAT(APINT_TYPE_PREFIX, 24813) +HANDLE_BAT(APINT_TYPE_PREFIX, 24814) +HANDLE_BAT(APINT_TYPE_PREFIX, 24815) +HANDLE_BAT(APINT_TYPE_PREFIX, 24816) +HANDLE_BAT(APINT_TYPE_PREFIX, 24817) +HANDLE_BAT(APINT_TYPE_PREFIX, 24818) +HANDLE_BAT(APINT_TYPE_PREFIX, 24819) +HANDLE_BAT(APINT_TYPE_PREFIX, 24820) +HANDLE_BAT(APINT_TYPE_PREFIX, 24821) +HANDLE_BAT(APINT_TYPE_PREFIX, 24822) +HANDLE_BAT(APINT_TYPE_PREFIX, 24823) +HANDLE_BAT(APINT_TYPE_PREFIX, 24824) +HANDLE_BAT(APINT_TYPE_PREFIX, 24825) +HANDLE_BAT(APINT_TYPE_PREFIX, 24826) +HANDLE_BAT(APINT_TYPE_PREFIX, 24827) +HANDLE_BAT(APINT_TYPE_PREFIX, 24828) +HANDLE_BAT(APINT_TYPE_PREFIX, 24829) +HANDLE_BAT(APINT_TYPE_PREFIX, 24830) +HANDLE_BAT(APINT_TYPE_PREFIX, 24831) +HANDLE_BAT(APINT_TYPE_PREFIX, 24832) +HANDLE_BAT(APINT_TYPE_PREFIX, 24833) +HANDLE_BAT(APINT_TYPE_PREFIX, 24834) +HANDLE_BAT(APINT_TYPE_PREFIX, 24835) +HANDLE_BAT(APINT_TYPE_PREFIX, 24836) +HANDLE_BAT(APINT_TYPE_PREFIX, 24837) +HANDLE_BAT(APINT_TYPE_PREFIX, 24838) +HANDLE_BAT(APINT_TYPE_PREFIX, 24839) +HANDLE_BAT(APINT_TYPE_PREFIX, 24840) +HANDLE_BAT(APINT_TYPE_PREFIX, 24841) +HANDLE_BAT(APINT_TYPE_PREFIX, 24842) +HANDLE_BAT(APINT_TYPE_PREFIX, 24843) +HANDLE_BAT(APINT_TYPE_PREFIX, 24844) +HANDLE_BAT(APINT_TYPE_PREFIX, 24845) +HANDLE_BAT(APINT_TYPE_PREFIX, 24846) +HANDLE_BAT(APINT_TYPE_PREFIX, 24847) +HANDLE_BAT(APINT_TYPE_PREFIX, 24848) +HANDLE_BAT(APINT_TYPE_PREFIX, 24849) +HANDLE_BAT(APINT_TYPE_PREFIX, 24850) +HANDLE_BAT(APINT_TYPE_PREFIX, 24851) +HANDLE_BAT(APINT_TYPE_PREFIX, 24852) +HANDLE_BAT(APINT_TYPE_PREFIX, 24853) +HANDLE_BAT(APINT_TYPE_PREFIX, 24854) +HANDLE_BAT(APINT_TYPE_PREFIX, 24855) +HANDLE_BAT(APINT_TYPE_PREFIX, 24856) +HANDLE_BAT(APINT_TYPE_PREFIX, 24857) +HANDLE_BAT(APINT_TYPE_PREFIX, 24858) +HANDLE_BAT(APINT_TYPE_PREFIX, 24859) +HANDLE_BAT(APINT_TYPE_PREFIX, 24860) +HANDLE_BAT(APINT_TYPE_PREFIX, 24861) +HANDLE_BAT(APINT_TYPE_PREFIX, 24862) +HANDLE_BAT(APINT_TYPE_PREFIX, 24863) +HANDLE_BAT(APINT_TYPE_PREFIX, 24864) +HANDLE_BAT(APINT_TYPE_PREFIX, 24865) +HANDLE_BAT(APINT_TYPE_PREFIX, 24866) +HANDLE_BAT(APINT_TYPE_PREFIX, 24867) +HANDLE_BAT(APINT_TYPE_PREFIX, 24868) +HANDLE_BAT(APINT_TYPE_PREFIX, 24869) +HANDLE_BAT(APINT_TYPE_PREFIX, 24870) +HANDLE_BAT(APINT_TYPE_PREFIX, 24871) +HANDLE_BAT(APINT_TYPE_PREFIX, 24872) +HANDLE_BAT(APINT_TYPE_PREFIX, 24873) +HANDLE_BAT(APINT_TYPE_PREFIX, 24874) +HANDLE_BAT(APINT_TYPE_PREFIX, 24875) +HANDLE_BAT(APINT_TYPE_PREFIX, 24876) +HANDLE_BAT(APINT_TYPE_PREFIX, 24877) +HANDLE_BAT(APINT_TYPE_PREFIX, 24878) +HANDLE_BAT(APINT_TYPE_PREFIX, 24879) +HANDLE_BAT(APINT_TYPE_PREFIX, 24880) +HANDLE_BAT(APINT_TYPE_PREFIX, 24881) +HANDLE_BAT(APINT_TYPE_PREFIX, 24882) +HANDLE_BAT(APINT_TYPE_PREFIX, 24883) +HANDLE_BAT(APINT_TYPE_PREFIX, 24884) +HANDLE_BAT(APINT_TYPE_PREFIX, 24885) +HANDLE_BAT(APINT_TYPE_PREFIX, 24886) +HANDLE_BAT(APINT_TYPE_PREFIX, 24887) +HANDLE_BAT(APINT_TYPE_PREFIX, 24888) +HANDLE_BAT(APINT_TYPE_PREFIX, 24889) +HANDLE_BAT(APINT_TYPE_PREFIX, 24890) +HANDLE_BAT(APINT_TYPE_PREFIX, 24891) +HANDLE_BAT(APINT_TYPE_PREFIX, 24892) +HANDLE_BAT(APINT_TYPE_PREFIX, 24893) +HANDLE_BAT(APINT_TYPE_PREFIX, 24894) +HANDLE_BAT(APINT_TYPE_PREFIX, 24895) +HANDLE_BAT(APINT_TYPE_PREFIX, 24896) +HANDLE_BAT(APINT_TYPE_PREFIX, 24897) +HANDLE_BAT(APINT_TYPE_PREFIX, 24898) +HANDLE_BAT(APINT_TYPE_PREFIX, 24899) +HANDLE_BAT(APINT_TYPE_PREFIX, 24900) +HANDLE_BAT(APINT_TYPE_PREFIX, 24901) +HANDLE_BAT(APINT_TYPE_PREFIX, 24902) +HANDLE_BAT(APINT_TYPE_PREFIX, 24903) +HANDLE_BAT(APINT_TYPE_PREFIX, 24904) +HANDLE_BAT(APINT_TYPE_PREFIX, 24905) +HANDLE_BAT(APINT_TYPE_PREFIX, 24906) +HANDLE_BAT(APINT_TYPE_PREFIX, 24907) +HANDLE_BAT(APINT_TYPE_PREFIX, 24908) +HANDLE_BAT(APINT_TYPE_PREFIX, 24909) +HANDLE_BAT(APINT_TYPE_PREFIX, 24910) +HANDLE_BAT(APINT_TYPE_PREFIX, 24911) +HANDLE_BAT(APINT_TYPE_PREFIX, 24912) +HANDLE_BAT(APINT_TYPE_PREFIX, 24913) +HANDLE_BAT(APINT_TYPE_PREFIX, 24914) +HANDLE_BAT(APINT_TYPE_PREFIX, 24915) +HANDLE_BAT(APINT_TYPE_PREFIX, 24916) +HANDLE_BAT(APINT_TYPE_PREFIX, 24917) +HANDLE_BAT(APINT_TYPE_PREFIX, 24918) +HANDLE_BAT(APINT_TYPE_PREFIX, 24919) +HANDLE_BAT(APINT_TYPE_PREFIX, 24920) +HANDLE_BAT(APINT_TYPE_PREFIX, 24921) +HANDLE_BAT(APINT_TYPE_PREFIX, 24922) +HANDLE_BAT(APINT_TYPE_PREFIX, 24923) +HANDLE_BAT(APINT_TYPE_PREFIX, 24924) +HANDLE_BAT(APINT_TYPE_PREFIX, 24925) +HANDLE_BAT(APINT_TYPE_PREFIX, 24926) +HANDLE_BAT(APINT_TYPE_PREFIX, 24927) +HANDLE_BAT(APINT_TYPE_PREFIX, 24928) +HANDLE_BAT(APINT_TYPE_PREFIX, 24929) +HANDLE_BAT(APINT_TYPE_PREFIX, 24930) +HANDLE_BAT(APINT_TYPE_PREFIX, 24931) +HANDLE_BAT(APINT_TYPE_PREFIX, 24932) +HANDLE_BAT(APINT_TYPE_PREFIX, 24933) +HANDLE_BAT(APINT_TYPE_PREFIX, 24934) +HANDLE_BAT(APINT_TYPE_PREFIX, 24935) +HANDLE_BAT(APINT_TYPE_PREFIX, 24936) +HANDLE_BAT(APINT_TYPE_PREFIX, 24937) +HANDLE_BAT(APINT_TYPE_PREFIX, 24938) +HANDLE_BAT(APINT_TYPE_PREFIX, 24939) +HANDLE_BAT(APINT_TYPE_PREFIX, 24940) +HANDLE_BAT(APINT_TYPE_PREFIX, 24941) +HANDLE_BAT(APINT_TYPE_PREFIX, 24942) +HANDLE_BAT(APINT_TYPE_PREFIX, 24943) +HANDLE_BAT(APINT_TYPE_PREFIX, 24944) +HANDLE_BAT(APINT_TYPE_PREFIX, 24945) +HANDLE_BAT(APINT_TYPE_PREFIX, 24946) +HANDLE_BAT(APINT_TYPE_PREFIX, 24947) +HANDLE_BAT(APINT_TYPE_PREFIX, 24948) +HANDLE_BAT(APINT_TYPE_PREFIX, 24949) +HANDLE_BAT(APINT_TYPE_PREFIX, 24950) +HANDLE_BAT(APINT_TYPE_PREFIX, 24951) +HANDLE_BAT(APINT_TYPE_PREFIX, 24952) +HANDLE_BAT(APINT_TYPE_PREFIX, 24953) +HANDLE_BAT(APINT_TYPE_PREFIX, 24954) +HANDLE_BAT(APINT_TYPE_PREFIX, 24955) +HANDLE_BAT(APINT_TYPE_PREFIX, 24956) +HANDLE_BAT(APINT_TYPE_PREFIX, 24957) +HANDLE_BAT(APINT_TYPE_PREFIX, 24958) +HANDLE_BAT(APINT_TYPE_PREFIX, 24959) +HANDLE_BAT(APINT_TYPE_PREFIX, 24960) +HANDLE_BAT(APINT_TYPE_PREFIX, 24961) +HANDLE_BAT(APINT_TYPE_PREFIX, 24962) +HANDLE_BAT(APINT_TYPE_PREFIX, 24963) +HANDLE_BAT(APINT_TYPE_PREFIX, 24964) +HANDLE_BAT(APINT_TYPE_PREFIX, 24965) +HANDLE_BAT(APINT_TYPE_PREFIX, 24966) +HANDLE_BAT(APINT_TYPE_PREFIX, 24967) +HANDLE_BAT(APINT_TYPE_PREFIX, 24968) +HANDLE_BAT(APINT_TYPE_PREFIX, 24969) +HANDLE_BAT(APINT_TYPE_PREFIX, 24970) +HANDLE_BAT(APINT_TYPE_PREFIX, 24971) +HANDLE_BAT(APINT_TYPE_PREFIX, 24972) +HANDLE_BAT(APINT_TYPE_PREFIX, 24973) +HANDLE_BAT(APINT_TYPE_PREFIX, 24974) +HANDLE_BAT(APINT_TYPE_PREFIX, 24975) +HANDLE_BAT(APINT_TYPE_PREFIX, 24976) +HANDLE_BAT(APINT_TYPE_PREFIX, 24977) +HANDLE_BAT(APINT_TYPE_PREFIX, 24978) +HANDLE_BAT(APINT_TYPE_PREFIX, 24979) +HANDLE_BAT(APINT_TYPE_PREFIX, 24980) +HANDLE_BAT(APINT_TYPE_PREFIX, 24981) +HANDLE_BAT(APINT_TYPE_PREFIX, 24982) +HANDLE_BAT(APINT_TYPE_PREFIX, 24983) +HANDLE_BAT(APINT_TYPE_PREFIX, 24984) +HANDLE_BAT(APINT_TYPE_PREFIX, 24985) +HANDLE_BAT(APINT_TYPE_PREFIX, 24986) +HANDLE_BAT(APINT_TYPE_PREFIX, 24987) +HANDLE_BAT(APINT_TYPE_PREFIX, 24988) +HANDLE_BAT(APINT_TYPE_PREFIX, 24989) +HANDLE_BAT(APINT_TYPE_PREFIX, 24990) +HANDLE_BAT(APINT_TYPE_PREFIX, 24991) +HANDLE_BAT(APINT_TYPE_PREFIX, 24992) +HANDLE_BAT(APINT_TYPE_PREFIX, 24993) +HANDLE_BAT(APINT_TYPE_PREFIX, 24994) +HANDLE_BAT(APINT_TYPE_PREFIX, 24995) +HANDLE_BAT(APINT_TYPE_PREFIX, 24996) +HANDLE_BAT(APINT_TYPE_PREFIX, 24997) +HANDLE_BAT(APINT_TYPE_PREFIX, 24998) +HANDLE_BAT(APINT_TYPE_PREFIX, 24999) +HANDLE_BAT(APINT_TYPE_PREFIX, 25000) +HANDLE_BAT(APINT_TYPE_PREFIX, 25001) +HANDLE_BAT(APINT_TYPE_PREFIX, 25002) +HANDLE_BAT(APINT_TYPE_PREFIX, 25003) +HANDLE_BAT(APINT_TYPE_PREFIX, 25004) +HANDLE_BAT(APINT_TYPE_PREFIX, 25005) +HANDLE_BAT(APINT_TYPE_PREFIX, 25006) +HANDLE_BAT(APINT_TYPE_PREFIX, 25007) +HANDLE_BAT(APINT_TYPE_PREFIX, 25008) +HANDLE_BAT(APINT_TYPE_PREFIX, 25009) +HANDLE_BAT(APINT_TYPE_PREFIX, 25010) +HANDLE_BAT(APINT_TYPE_PREFIX, 25011) +HANDLE_BAT(APINT_TYPE_PREFIX, 25012) +HANDLE_BAT(APINT_TYPE_PREFIX, 25013) +HANDLE_BAT(APINT_TYPE_PREFIX, 25014) +HANDLE_BAT(APINT_TYPE_PREFIX, 25015) +HANDLE_BAT(APINT_TYPE_PREFIX, 25016) +HANDLE_BAT(APINT_TYPE_PREFIX, 25017) +HANDLE_BAT(APINT_TYPE_PREFIX, 25018) +HANDLE_BAT(APINT_TYPE_PREFIX, 25019) +HANDLE_BAT(APINT_TYPE_PREFIX, 25020) +HANDLE_BAT(APINT_TYPE_PREFIX, 25021) +HANDLE_BAT(APINT_TYPE_PREFIX, 25022) +HANDLE_BAT(APINT_TYPE_PREFIX, 25023) +HANDLE_BAT(APINT_TYPE_PREFIX, 25024) +HANDLE_BAT(APINT_TYPE_PREFIX, 25025) +HANDLE_BAT(APINT_TYPE_PREFIX, 25026) +HANDLE_BAT(APINT_TYPE_PREFIX, 25027) +HANDLE_BAT(APINT_TYPE_PREFIX, 25028) +HANDLE_BAT(APINT_TYPE_PREFIX, 25029) +HANDLE_BAT(APINT_TYPE_PREFIX, 25030) +HANDLE_BAT(APINT_TYPE_PREFIX, 25031) +HANDLE_BAT(APINT_TYPE_PREFIX, 25032) +HANDLE_BAT(APINT_TYPE_PREFIX, 25033) +HANDLE_BAT(APINT_TYPE_PREFIX, 25034) +HANDLE_BAT(APINT_TYPE_PREFIX, 25035) +HANDLE_BAT(APINT_TYPE_PREFIX, 25036) +HANDLE_BAT(APINT_TYPE_PREFIX, 25037) +HANDLE_BAT(APINT_TYPE_PREFIX, 25038) +HANDLE_BAT(APINT_TYPE_PREFIX, 25039) +HANDLE_BAT(APINT_TYPE_PREFIX, 25040) +HANDLE_BAT(APINT_TYPE_PREFIX, 25041) +HANDLE_BAT(APINT_TYPE_PREFIX, 25042) +HANDLE_BAT(APINT_TYPE_PREFIX, 25043) +HANDLE_BAT(APINT_TYPE_PREFIX, 25044) +HANDLE_BAT(APINT_TYPE_PREFIX, 25045) +HANDLE_BAT(APINT_TYPE_PREFIX, 25046) +HANDLE_BAT(APINT_TYPE_PREFIX, 25047) +HANDLE_BAT(APINT_TYPE_PREFIX, 25048) +HANDLE_BAT(APINT_TYPE_PREFIX, 25049) +HANDLE_BAT(APINT_TYPE_PREFIX, 25050) +HANDLE_BAT(APINT_TYPE_PREFIX, 25051) +HANDLE_BAT(APINT_TYPE_PREFIX, 25052) +HANDLE_BAT(APINT_TYPE_PREFIX, 25053) +HANDLE_BAT(APINT_TYPE_PREFIX, 25054) +HANDLE_BAT(APINT_TYPE_PREFIX, 25055) +HANDLE_BAT(APINT_TYPE_PREFIX, 25056) +HANDLE_BAT(APINT_TYPE_PREFIX, 25057) +HANDLE_BAT(APINT_TYPE_PREFIX, 25058) +HANDLE_BAT(APINT_TYPE_PREFIX, 25059) +HANDLE_BAT(APINT_TYPE_PREFIX, 25060) +HANDLE_BAT(APINT_TYPE_PREFIX, 25061) +HANDLE_BAT(APINT_TYPE_PREFIX, 25062) +HANDLE_BAT(APINT_TYPE_PREFIX, 25063) +HANDLE_BAT(APINT_TYPE_PREFIX, 25064) +HANDLE_BAT(APINT_TYPE_PREFIX, 25065) +HANDLE_BAT(APINT_TYPE_PREFIX, 25066) +HANDLE_BAT(APINT_TYPE_PREFIX, 25067) +HANDLE_BAT(APINT_TYPE_PREFIX, 25068) +HANDLE_BAT(APINT_TYPE_PREFIX, 25069) +HANDLE_BAT(APINT_TYPE_PREFIX, 25070) +HANDLE_BAT(APINT_TYPE_PREFIX, 25071) +HANDLE_BAT(APINT_TYPE_PREFIX, 25072) +HANDLE_BAT(APINT_TYPE_PREFIX, 25073) +HANDLE_BAT(APINT_TYPE_PREFIX, 25074) +HANDLE_BAT(APINT_TYPE_PREFIX, 25075) +HANDLE_BAT(APINT_TYPE_PREFIX, 25076) +HANDLE_BAT(APINT_TYPE_PREFIX, 25077) +HANDLE_BAT(APINT_TYPE_PREFIX, 25078) +HANDLE_BAT(APINT_TYPE_PREFIX, 25079) +HANDLE_BAT(APINT_TYPE_PREFIX, 25080) +HANDLE_BAT(APINT_TYPE_PREFIX, 25081) +HANDLE_BAT(APINT_TYPE_PREFIX, 25082) +HANDLE_BAT(APINT_TYPE_PREFIX, 25083) +HANDLE_BAT(APINT_TYPE_PREFIX, 25084) +HANDLE_BAT(APINT_TYPE_PREFIX, 25085) +HANDLE_BAT(APINT_TYPE_PREFIX, 25086) +HANDLE_BAT(APINT_TYPE_PREFIX, 25087) +HANDLE_BAT(APINT_TYPE_PREFIX, 25088) +HANDLE_BAT(APINT_TYPE_PREFIX, 25089) +HANDLE_BAT(APINT_TYPE_PREFIX, 25090) +HANDLE_BAT(APINT_TYPE_PREFIX, 25091) +HANDLE_BAT(APINT_TYPE_PREFIX, 25092) +HANDLE_BAT(APINT_TYPE_PREFIX, 25093) +HANDLE_BAT(APINT_TYPE_PREFIX, 25094) +HANDLE_BAT(APINT_TYPE_PREFIX, 25095) +HANDLE_BAT(APINT_TYPE_PREFIX, 25096) +HANDLE_BAT(APINT_TYPE_PREFIX, 25097) +HANDLE_BAT(APINT_TYPE_PREFIX, 25098) +HANDLE_BAT(APINT_TYPE_PREFIX, 25099) +HANDLE_BAT(APINT_TYPE_PREFIX, 25100) +HANDLE_BAT(APINT_TYPE_PREFIX, 25101) +HANDLE_BAT(APINT_TYPE_PREFIX, 25102) +HANDLE_BAT(APINT_TYPE_PREFIX, 25103) +HANDLE_BAT(APINT_TYPE_PREFIX, 25104) +HANDLE_BAT(APINT_TYPE_PREFIX, 25105) +HANDLE_BAT(APINT_TYPE_PREFIX, 25106) +HANDLE_BAT(APINT_TYPE_PREFIX, 25107) +HANDLE_BAT(APINT_TYPE_PREFIX, 25108) +HANDLE_BAT(APINT_TYPE_PREFIX, 25109) +HANDLE_BAT(APINT_TYPE_PREFIX, 25110) +HANDLE_BAT(APINT_TYPE_PREFIX, 25111) +HANDLE_BAT(APINT_TYPE_PREFIX, 25112) +HANDLE_BAT(APINT_TYPE_PREFIX, 25113) +HANDLE_BAT(APINT_TYPE_PREFIX, 25114) +HANDLE_BAT(APINT_TYPE_PREFIX, 25115) +HANDLE_BAT(APINT_TYPE_PREFIX, 25116) +HANDLE_BAT(APINT_TYPE_PREFIX, 25117) +HANDLE_BAT(APINT_TYPE_PREFIX, 25118) +HANDLE_BAT(APINT_TYPE_PREFIX, 25119) +HANDLE_BAT(APINT_TYPE_PREFIX, 25120) +HANDLE_BAT(APINT_TYPE_PREFIX, 25121) +HANDLE_BAT(APINT_TYPE_PREFIX, 25122) +HANDLE_BAT(APINT_TYPE_PREFIX, 25123) +HANDLE_BAT(APINT_TYPE_PREFIX, 25124) +HANDLE_BAT(APINT_TYPE_PREFIX, 25125) +HANDLE_BAT(APINT_TYPE_PREFIX, 25126) +HANDLE_BAT(APINT_TYPE_PREFIX, 25127) +HANDLE_BAT(APINT_TYPE_PREFIX, 25128) +HANDLE_BAT(APINT_TYPE_PREFIX, 25129) +HANDLE_BAT(APINT_TYPE_PREFIX, 25130) +HANDLE_BAT(APINT_TYPE_PREFIX, 25131) +HANDLE_BAT(APINT_TYPE_PREFIX, 25132) +HANDLE_BAT(APINT_TYPE_PREFIX, 25133) +HANDLE_BAT(APINT_TYPE_PREFIX, 25134) +HANDLE_BAT(APINT_TYPE_PREFIX, 25135) +HANDLE_BAT(APINT_TYPE_PREFIX, 25136) +HANDLE_BAT(APINT_TYPE_PREFIX, 25137) +HANDLE_BAT(APINT_TYPE_PREFIX, 25138) +HANDLE_BAT(APINT_TYPE_PREFIX, 25139) +HANDLE_BAT(APINT_TYPE_PREFIX, 25140) +HANDLE_BAT(APINT_TYPE_PREFIX, 25141) +HANDLE_BAT(APINT_TYPE_PREFIX, 25142) +HANDLE_BAT(APINT_TYPE_PREFIX, 25143) +HANDLE_BAT(APINT_TYPE_PREFIX, 25144) +HANDLE_BAT(APINT_TYPE_PREFIX, 25145) +HANDLE_BAT(APINT_TYPE_PREFIX, 25146) +HANDLE_BAT(APINT_TYPE_PREFIX, 25147) +HANDLE_BAT(APINT_TYPE_PREFIX, 25148) +HANDLE_BAT(APINT_TYPE_PREFIX, 25149) +HANDLE_BAT(APINT_TYPE_PREFIX, 25150) +HANDLE_BAT(APINT_TYPE_PREFIX, 25151) +HANDLE_BAT(APINT_TYPE_PREFIX, 25152) +HANDLE_BAT(APINT_TYPE_PREFIX, 25153) +HANDLE_BAT(APINT_TYPE_PREFIX, 25154) +HANDLE_BAT(APINT_TYPE_PREFIX, 25155) +HANDLE_BAT(APINT_TYPE_PREFIX, 25156) +HANDLE_BAT(APINT_TYPE_PREFIX, 25157) +HANDLE_BAT(APINT_TYPE_PREFIX, 25158) +HANDLE_BAT(APINT_TYPE_PREFIX, 25159) +HANDLE_BAT(APINT_TYPE_PREFIX, 25160) +HANDLE_BAT(APINT_TYPE_PREFIX, 25161) +HANDLE_BAT(APINT_TYPE_PREFIX, 25162) +HANDLE_BAT(APINT_TYPE_PREFIX, 25163) +HANDLE_BAT(APINT_TYPE_PREFIX, 25164) +HANDLE_BAT(APINT_TYPE_PREFIX, 25165) +HANDLE_BAT(APINT_TYPE_PREFIX, 25166) +HANDLE_BAT(APINT_TYPE_PREFIX, 25167) +HANDLE_BAT(APINT_TYPE_PREFIX, 25168) +HANDLE_BAT(APINT_TYPE_PREFIX, 25169) +HANDLE_BAT(APINT_TYPE_PREFIX, 25170) +HANDLE_BAT(APINT_TYPE_PREFIX, 25171) +HANDLE_BAT(APINT_TYPE_PREFIX, 25172) +HANDLE_BAT(APINT_TYPE_PREFIX, 25173) +HANDLE_BAT(APINT_TYPE_PREFIX, 25174) +HANDLE_BAT(APINT_TYPE_PREFIX, 25175) +HANDLE_BAT(APINT_TYPE_PREFIX, 25176) +HANDLE_BAT(APINT_TYPE_PREFIX, 25177) +HANDLE_BAT(APINT_TYPE_PREFIX, 25178) +HANDLE_BAT(APINT_TYPE_PREFIX, 25179) +HANDLE_BAT(APINT_TYPE_PREFIX, 25180) +HANDLE_BAT(APINT_TYPE_PREFIX, 25181) +HANDLE_BAT(APINT_TYPE_PREFIX, 25182) +HANDLE_BAT(APINT_TYPE_PREFIX, 25183) +HANDLE_BAT(APINT_TYPE_PREFIX, 25184) +HANDLE_BAT(APINT_TYPE_PREFIX, 25185) +HANDLE_BAT(APINT_TYPE_PREFIX, 25186) +HANDLE_BAT(APINT_TYPE_PREFIX, 25187) +HANDLE_BAT(APINT_TYPE_PREFIX, 25188) +HANDLE_BAT(APINT_TYPE_PREFIX, 25189) +HANDLE_BAT(APINT_TYPE_PREFIX, 25190) +HANDLE_BAT(APINT_TYPE_PREFIX, 25191) +HANDLE_BAT(APINT_TYPE_PREFIX, 25192) +HANDLE_BAT(APINT_TYPE_PREFIX, 25193) +HANDLE_BAT(APINT_TYPE_PREFIX, 25194) +HANDLE_BAT(APINT_TYPE_PREFIX, 25195) +HANDLE_BAT(APINT_TYPE_PREFIX, 25196) +HANDLE_BAT(APINT_TYPE_PREFIX, 25197) +HANDLE_BAT(APINT_TYPE_PREFIX, 25198) +HANDLE_BAT(APINT_TYPE_PREFIX, 25199) +HANDLE_BAT(APINT_TYPE_PREFIX, 25200) +HANDLE_BAT(APINT_TYPE_PREFIX, 25201) +HANDLE_BAT(APINT_TYPE_PREFIX, 25202) +HANDLE_BAT(APINT_TYPE_PREFIX, 25203) +HANDLE_BAT(APINT_TYPE_PREFIX, 25204) +HANDLE_BAT(APINT_TYPE_PREFIX, 25205) +HANDLE_BAT(APINT_TYPE_PREFIX, 25206) +HANDLE_BAT(APINT_TYPE_PREFIX, 25207) +HANDLE_BAT(APINT_TYPE_PREFIX, 25208) +HANDLE_BAT(APINT_TYPE_PREFIX, 25209) +HANDLE_BAT(APINT_TYPE_PREFIX, 25210) +HANDLE_BAT(APINT_TYPE_PREFIX, 25211) +HANDLE_BAT(APINT_TYPE_PREFIX, 25212) +HANDLE_BAT(APINT_TYPE_PREFIX, 25213) +HANDLE_BAT(APINT_TYPE_PREFIX, 25214) +HANDLE_BAT(APINT_TYPE_PREFIX, 25215) +HANDLE_BAT(APINT_TYPE_PREFIX, 25216) +HANDLE_BAT(APINT_TYPE_PREFIX, 25217) +HANDLE_BAT(APINT_TYPE_PREFIX, 25218) +HANDLE_BAT(APINT_TYPE_PREFIX, 25219) +HANDLE_BAT(APINT_TYPE_PREFIX, 25220) +HANDLE_BAT(APINT_TYPE_PREFIX, 25221) +HANDLE_BAT(APINT_TYPE_PREFIX, 25222) +HANDLE_BAT(APINT_TYPE_PREFIX, 25223) +HANDLE_BAT(APINT_TYPE_PREFIX, 25224) +HANDLE_BAT(APINT_TYPE_PREFIX, 25225) +HANDLE_BAT(APINT_TYPE_PREFIX, 25226) +HANDLE_BAT(APINT_TYPE_PREFIX, 25227) +HANDLE_BAT(APINT_TYPE_PREFIX, 25228) +HANDLE_BAT(APINT_TYPE_PREFIX, 25229) +HANDLE_BAT(APINT_TYPE_PREFIX, 25230) +HANDLE_BAT(APINT_TYPE_PREFIX, 25231) +HANDLE_BAT(APINT_TYPE_PREFIX, 25232) +HANDLE_BAT(APINT_TYPE_PREFIX, 25233) +HANDLE_BAT(APINT_TYPE_PREFIX, 25234) +HANDLE_BAT(APINT_TYPE_PREFIX, 25235) +HANDLE_BAT(APINT_TYPE_PREFIX, 25236) +HANDLE_BAT(APINT_TYPE_PREFIX, 25237) +HANDLE_BAT(APINT_TYPE_PREFIX, 25238) +HANDLE_BAT(APINT_TYPE_PREFIX, 25239) +HANDLE_BAT(APINT_TYPE_PREFIX, 25240) +HANDLE_BAT(APINT_TYPE_PREFIX, 25241) +HANDLE_BAT(APINT_TYPE_PREFIX, 25242) +HANDLE_BAT(APINT_TYPE_PREFIX, 25243) +HANDLE_BAT(APINT_TYPE_PREFIX, 25244) +HANDLE_BAT(APINT_TYPE_PREFIX, 25245) +HANDLE_BAT(APINT_TYPE_PREFIX, 25246) +HANDLE_BAT(APINT_TYPE_PREFIX, 25247) +HANDLE_BAT(APINT_TYPE_PREFIX, 25248) +HANDLE_BAT(APINT_TYPE_PREFIX, 25249) +HANDLE_BAT(APINT_TYPE_PREFIX, 25250) +HANDLE_BAT(APINT_TYPE_PREFIX, 25251) +HANDLE_BAT(APINT_TYPE_PREFIX, 25252) +HANDLE_BAT(APINT_TYPE_PREFIX, 25253) +HANDLE_BAT(APINT_TYPE_PREFIX, 25254) +HANDLE_BAT(APINT_TYPE_PREFIX, 25255) +HANDLE_BAT(APINT_TYPE_PREFIX, 25256) +HANDLE_BAT(APINT_TYPE_PREFIX, 25257) +HANDLE_BAT(APINT_TYPE_PREFIX, 25258) +HANDLE_BAT(APINT_TYPE_PREFIX, 25259) +HANDLE_BAT(APINT_TYPE_PREFIX, 25260) +HANDLE_BAT(APINT_TYPE_PREFIX, 25261) +HANDLE_BAT(APINT_TYPE_PREFIX, 25262) +HANDLE_BAT(APINT_TYPE_PREFIX, 25263) +HANDLE_BAT(APINT_TYPE_PREFIX, 25264) +HANDLE_BAT(APINT_TYPE_PREFIX, 25265) +HANDLE_BAT(APINT_TYPE_PREFIX, 25266) +HANDLE_BAT(APINT_TYPE_PREFIX, 25267) +HANDLE_BAT(APINT_TYPE_PREFIX, 25268) +HANDLE_BAT(APINT_TYPE_PREFIX, 25269) +HANDLE_BAT(APINT_TYPE_PREFIX, 25270) +HANDLE_BAT(APINT_TYPE_PREFIX, 25271) +HANDLE_BAT(APINT_TYPE_PREFIX, 25272) +HANDLE_BAT(APINT_TYPE_PREFIX, 25273) +HANDLE_BAT(APINT_TYPE_PREFIX, 25274) +HANDLE_BAT(APINT_TYPE_PREFIX, 25275) +HANDLE_BAT(APINT_TYPE_PREFIX, 25276) +HANDLE_BAT(APINT_TYPE_PREFIX, 25277) +HANDLE_BAT(APINT_TYPE_PREFIX, 25278) +HANDLE_BAT(APINT_TYPE_PREFIX, 25279) +HANDLE_BAT(APINT_TYPE_PREFIX, 25280) +HANDLE_BAT(APINT_TYPE_PREFIX, 25281) +HANDLE_BAT(APINT_TYPE_PREFIX, 25282) +HANDLE_BAT(APINT_TYPE_PREFIX, 25283) +HANDLE_BAT(APINT_TYPE_PREFIX, 25284) +HANDLE_BAT(APINT_TYPE_PREFIX, 25285) +HANDLE_BAT(APINT_TYPE_PREFIX, 25286) +HANDLE_BAT(APINT_TYPE_PREFIX, 25287) +HANDLE_BAT(APINT_TYPE_PREFIX, 25288) +HANDLE_BAT(APINT_TYPE_PREFIX, 25289) +HANDLE_BAT(APINT_TYPE_PREFIX, 25290) +HANDLE_BAT(APINT_TYPE_PREFIX, 25291) +HANDLE_BAT(APINT_TYPE_PREFIX, 25292) +HANDLE_BAT(APINT_TYPE_PREFIX, 25293) +HANDLE_BAT(APINT_TYPE_PREFIX, 25294) +HANDLE_BAT(APINT_TYPE_PREFIX, 25295) +HANDLE_BAT(APINT_TYPE_PREFIX, 25296) +HANDLE_BAT(APINT_TYPE_PREFIX, 25297) +HANDLE_BAT(APINT_TYPE_PREFIX, 25298) +HANDLE_BAT(APINT_TYPE_PREFIX, 25299) +HANDLE_BAT(APINT_TYPE_PREFIX, 25300) +HANDLE_BAT(APINT_TYPE_PREFIX, 25301) +HANDLE_BAT(APINT_TYPE_PREFIX, 25302) +HANDLE_BAT(APINT_TYPE_PREFIX, 25303) +HANDLE_BAT(APINT_TYPE_PREFIX, 25304) +HANDLE_BAT(APINT_TYPE_PREFIX, 25305) +HANDLE_BAT(APINT_TYPE_PREFIX, 25306) +HANDLE_BAT(APINT_TYPE_PREFIX, 25307) +HANDLE_BAT(APINT_TYPE_PREFIX, 25308) +HANDLE_BAT(APINT_TYPE_PREFIX, 25309) +HANDLE_BAT(APINT_TYPE_PREFIX, 25310) +HANDLE_BAT(APINT_TYPE_PREFIX, 25311) +HANDLE_BAT(APINT_TYPE_PREFIX, 25312) +HANDLE_BAT(APINT_TYPE_PREFIX, 25313) +HANDLE_BAT(APINT_TYPE_PREFIX, 25314) +HANDLE_BAT(APINT_TYPE_PREFIX, 25315) +HANDLE_BAT(APINT_TYPE_PREFIX, 25316) +HANDLE_BAT(APINT_TYPE_PREFIX, 25317) +HANDLE_BAT(APINT_TYPE_PREFIX, 25318) +HANDLE_BAT(APINT_TYPE_PREFIX, 25319) +HANDLE_BAT(APINT_TYPE_PREFIX, 25320) +HANDLE_BAT(APINT_TYPE_PREFIX, 25321) +HANDLE_BAT(APINT_TYPE_PREFIX, 25322) +HANDLE_BAT(APINT_TYPE_PREFIX, 25323) +HANDLE_BAT(APINT_TYPE_PREFIX, 25324) +HANDLE_BAT(APINT_TYPE_PREFIX, 25325) +HANDLE_BAT(APINT_TYPE_PREFIX, 25326) +HANDLE_BAT(APINT_TYPE_PREFIX, 25327) +HANDLE_BAT(APINT_TYPE_PREFIX, 25328) +HANDLE_BAT(APINT_TYPE_PREFIX, 25329) +HANDLE_BAT(APINT_TYPE_PREFIX, 25330) +HANDLE_BAT(APINT_TYPE_PREFIX, 25331) +HANDLE_BAT(APINT_TYPE_PREFIX, 25332) +HANDLE_BAT(APINT_TYPE_PREFIX, 25333) +HANDLE_BAT(APINT_TYPE_PREFIX, 25334) +HANDLE_BAT(APINT_TYPE_PREFIX, 25335) +HANDLE_BAT(APINT_TYPE_PREFIX, 25336) +HANDLE_BAT(APINT_TYPE_PREFIX, 25337) +HANDLE_BAT(APINT_TYPE_PREFIX, 25338) +HANDLE_BAT(APINT_TYPE_PREFIX, 25339) +HANDLE_BAT(APINT_TYPE_PREFIX, 25340) +HANDLE_BAT(APINT_TYPE_PREFIX, 25341) +HANDLE_BAT(APINT_TYPE_PREFIX, 25342) +HANDLE_BAT(APINT_TYPE_PREFIX, 25343) +HANDLE_BAT(APINT_TYPE_PREFIX, 25344) +HANDLE_BAT(APINT_TYPE_PREFIX, 25345) +HANDLE_BAT(APINT_TYPE_PREFIX, 25346) +HANDLE_BAT(APINT_TYPE_PREFIX, 25347) +HANDLE_BAT(APINT_TYPE_PREFIX, 25348) +HANDLE_BAT(APINT_TYPE_PREFIX, 25349) +HANDLE_BAT(APINT_TYPE_PREFIX, 25350) +HANDLE_BAT(APINT_TYPE_PREFIX, 25351) +HANDLE_BAT(APINT_TYPE_PREFIX, 25352) +HANDLE_BAT(APINT_TYPE_PREFIX, 25353) +HANDLE_BAT(APINT_TYPE_PREFIX, 25354) +HANDLE_BAT(APINT_TYPE_PREFIX, 25355) +HANDLE_BAT(APINT_TYPE_PREFIX, 25356) +HANDLE_BAT(APINT_TYPE_PREFIX, 25357) +HANDLE_BAT(APINT_TYPE_PREFIX, 25358) +HANDLE_BAT(APINT_TYPE_PREFIX, 25359) +HANDLE_BAT(APINT_TYPE_PREFIX, 25360) +HANDLE_BAT(APINT_TYPE_PREFIX, 25361) +HANDLE_BAT(APINT_TYPE_PREFIX, 25362) +HANDLE_BAT(APINT_TYPE_PREFIX, 25363) +HANDLE_BAT(APINT_TYPE_PREFIX, 25364) +HANDLE_BAT(APINT_TYPE_PREFIX, 25365) +HANDLE_BAT(APINT_TYPE_PREFIX, 25366) +HANDLE_BAT(APINT_TYPE_PREFIX, 25367) +HANDLE_BAT(APINT_TYPE_PREFIX, 25368) +HANDLE_BAT(APINT_TYPE_PREFIX, 25369) +HANDLE_BAT(APINT_TYPE_PREFIX, 25370) +HANDLE_BAT(APINT_TYPE_PREFIX, 25371) +HANDLE_BAT(APINT_TYPE_PREFIX, 25372) +HANDLE_BAT(APINT_TYPE_PREFIX, 25373) +HANDLE_BAT(APINT_TYPE_PREFIX, 25374) +HANDLE_BAT(APINT_TYPE_PREFIX, 25375) +HANDLE_BAT(APINT_TYPE_PREFIX, 25376) +HANDLE_BAT(APINT_TYPE_PREFIX, 25377) +HANDLE_BAT(APINT_TYPE_PREFIX, 25378) +HANDLE_BAT(APINT_TYPE_PREFIX, 25379) +HANDLE_BAT(APINT_TYPE_PREFIX, 25380) +HANDLE_BAT(APINT_TYPE_PREFIX, 25381) +HANDLE_BAT(APINT_TYPE_PREFIX, 25382) +HANDLE_BAT(APINT_TYPE_PREFIX, 25383) +HANDLE_BAT(APINT_TYPE_PREFIX, 25384) +HANDLE_BAT(APINT_TYPE_PREFIX, 25385) +HANDLE_BAT(APINT_TYPE_PREFIX, 25386) +HANDLE_BAT(APINT_TYPE_PREFIX, 25387) +HANDLE_BAT(APINT_TYPE_PREFIX, 25388) +HANDLE_BAT(APINT_TYPE_PREFIX, 25389) +HANDLE_BAT(APINT_TYPE_PREFIX, 25390) +HANDLE_BAT(APINT_TYPE_PREFIX, 25391) +HANDLE_BAT(APINT_TYPE_PREFIX, 25392) +HANDLE_BAT(APINT_TYPE_PREFIX, 25393) +HANDLE_BAT(APINT_TYPE_PREFIX, 25394) +HANDLE_BAT(APINT_TYPE_PREFIX, 25395) +HANDLE_BAT(APINT_TYPE_PREFIX, 25396) +HANDLE_BAT(APINT_TYPE_PREFIX, 25397) +HANDLE_BAT(APINT_TYPE_PREFIX, 25398) +HANDLE_BAT(APINT_TYPE_PREFIX, 25399) +HANDLE_BAT(APINT_TYPE_PREFIX, 25400) +HANDLE_BAT(APINT_TYPE_PREFIX, 25401) +HANDLE_BAT(APINT_TYPE_PREFIX, 25402) +HANDLE_BAT(APINT_TYPE_PREFIX, 25403) +HANDLE_BAT(APINT_TYPE_PREFIX, 25404) +HANDLE_BAT(APINT_TYPE_PREFIX, 25405) +HANDLE_BAT(APINT_TYPE_PREFIX, 25406) +HANDLE_BAT(APINT_TYPE_PREFIX, 25407) +HANDLE_BAT(APINT_TYPE_PREFIX, 25408) +HANDLE_BAT(APINT_TYPE_PREFIX, 25409) +HANDLE_BAT(APINT_TYPE_PREFIX, 25410) +HANDLE_BAT(APINT_TYPE_PREFIX, 25411) +HANDLE_BAT(APINT_TYPE_PREFIX, 25412) +HANDLE_BAT(APINT_TYPE_PREFIX, 25413) +HANDLE_BAT(APINT_TYPE_PREFIX, 25414) +HANDLE_BAT(APINT_TYPE_PREFIX, 25415) +HANDLE_BAT(APINT_TYPE_PREFIX, 25416) +HANDLE_BAT(APINT_TYPE_PREFIX, 25417) +HANDLE_BAT(APINT_TYPE_PREFIX, 25418) +HANDLE_BAT(APINT_TYPE_PREFIX, 25419) +HANDLE_BAT(APINT_TYPE_PREFIX, 25420) +HANDLE_BAT(APINT_TYPE_PREFIX, 25421) +HANDLE_BAT(APINT_TYPE_PREFIX, 25422) +HANDLE_BAT(APINT_TYPE_PREFIX, 25423) +HANDLE_BAT(APINT_TYPE_PREFIX, 25424) +HANDLE_BAT(APINT_TYPE_PREFIX, 25425) +HANDLE_BAT(APINT_TYPE_PREFIX, 25426) +HANDLE_BAT(APINT_TYPE_PREFIX, 25427) +HANDLE_BAT(APINT_TYPE_PREFIX, 25428) +HANDLE_BAT(APINT_TYPE_PREFIX, 25429) +HANDLE_BAT(APINT_TYPE_PREFIX, 25430) +HANDLE_BAT(APINT_TYPE_PREFIX, 25431) +HANDLE_BAT(APINT_TYPE_PREFIX, 25432) +HANDLE_BAT(APINT_TYPE_PREFIX, 25433) +HANDLE_BAT(APINT_TYPE_PREFIX, 25434) +HANDLE_BAT(APINT_TYPE_PREFIX, 25435) +HANDLE_BAT(APINT_TYPE_PREFIX, 25436) +HANDLE_BAT(APINT_TYPE_PREFIX, 25437) +HANDLE_BAT(APINT_TYPE_PREFIX, 25438) +HANDLE_BAT(APINT_TYPE_PREFIX, 25439) +HANDLE_BAT(APINT_TYPE_PREFIX, 25440) +HANDLE_BAT(APINT_TYPE_PREFIX, 25441) +HANDLE_BAT(APINT_TYPE_PREFIX, 25442) +HANDLE_BAT(APINT_TYPE_PREFIX, 25443) +HANDLE_BAT(APINT_TYPE_PREFIX, 25444) +HANDLE_BAT(APINT_TYPE_PREFIX, 25445) +HANDLE_BAT(APINT_TYPE_PREFIX, 25446) +HANDLE_BAT(APINT_TYPE_PREFIX, 25447) +HANDLE_BAT(APINT_TYPE_PREFIX, 25448) +HANDLE_BAT(APINT_TYPE_PREFIX, 25449) +HANDLE_BAT(APINT_TYPE_PREFIX, 25450) +HANDLE_BAT(APINT_TYPE_PREFIX, 25451) +HANDLE_BAT(APINT_TYPE_PREFIX, 25452) +HANDLE_BAT(APINT_TYPE_PREFIX, 25453) +HANDLE_BAT(APINT_TYPE_PREFIX, 25454) +HANDLE_BAT(APINT_TYPE_PREFIX, 25455) +HANDLE_BAT(APINT_TYPE_PREFIX, 25456) +HANDLE_BAT(APINT_TYPE_PREFIX, 25457) +HANDLE_BAT(APINT_TYPE_PREFIX, 25458) +HANDLE_BAT(APINT_TYPE_PREFIX, 25459) +HANDLE_BAT(APINT_TYPE_PREFIX, 25460) +HANDLE_BAT(APINT_TYPE_PREFIX, 25461) +HANDLE_BAT(APINT_TYPE_PREFIX, 25462) +HANDLE_BAT(APINT_TYPE_PREFIX, 25463) +HANDLE_BAT(APINT_TYPE_PREFIX, 25464) +HANDLE_BAT(APINT_TYPE_PREFIX, 25465) +HANDLE_BAT(APINT_TYPE_PREFIX, 25466) +HANDLE_BAT(APINT_TYPE_PREFIX, 25467) +HANDLE_BAT(APINT_TYPE_PREFIX, 25468) +HANDLE_BAT(APINT_TYPE_PREFIX, 25469) +HANDLE_BAT(APINT_TYPE_PREFIX, 25470) +HANDLE_BAT(APINT_TYPE_PREFIX, 25471) +HANDLE_BAT(APINT_TYPE_PREFIX, 25472) +HANDLE_BAT(APINT_TYPE_PREFIX, 25473) +HANDLE_BAT(APINT_TYPE_PREFIX, 25474) +HANDLE_BAT(APINT_TYPE_PREFIX, 25475) +HANDLE_BAT(APINT_TYPE_PREFIX, 25476) +HANDLE_BAT(APINT_TYPE_PREFIX, 25477) +HANDLE_BAT(APINT_TYPE_PREFIX, 25478) +HANDLE_BAT(APINT_TYPE_PREFIX, 25479) +HANDLE_BAT(APINT_TYPE_PREFIX, 25480) +HANDLE_BAT(APINT_TYPE_PREFIX, 25481) +HANDLE_BAT(APINT_TYPE_PREFIX, 25482) +HANDLE_BAT(APINT_TYPE_PREFIX, 25483) +HANDLE_BAT(APINT_TYPE_PREFIX, 25484) +HANDLE_BAT(APINT_TYPE_PREFIX, 25485) +HANDLE_BAT(APINT_TYPE_PREFIX, 25486) +HANDLE_BAT(APINT_TYPE_PREFIX, 25487) +HANDLE_BAT(APINT_TYPE_PREFIX, 25488) +HANDLE_BAT(APINT_TYPE_PREFIX, 25489) +HANDLE_BAT(APINT_TYPE_PREFIX, 25490) +HANDLE_BAT(APINT_TYPE_PREFIX, 25491) +HANDLE_BAT(APINT_TYPE_PREFIX, 25492) +HANDLE_BAT(APINT_TYPE_PREFIX, 25493) +HANDLE_BAT(APINT_TYPE_PREFIX, 25494) +HANDLE_BAT(APINT_TYPE_PREFIX, 25495) +HANDLE_BAT(APINT_TYPE_PREFIX, 25496) +HANDLE_BAT(APINT_TYPE_PREFIX, 25497) +HANDLE_BAT(APINT_TYPE_PREFIX, 25498) +HANDLE_BAT(APINT_TYPE_PREFIX, 25499) +HANDLE_BAT(APINT_TYPE_PREFIX, 25500) +HANDLE_BAT(APINT_TYPE_PREFIX, 25501) +HANDLE_BAT(APINT_TYPE_PREFIX, 25502) +HANDLE_BAT(APINT_TYPE_PREFIX, 25503) +HANDLE_BAT(APINT_TYPE_PREFIX, 25504) +HANDLE_BAT(APINT_TYPE_PREFIX, 25505) +HANDLE_BAT(APINT_TYPE_PREFIX, 25506) +HANDLE_BAT(APINT_TYPE_PREFIX, 25507) +HANDLE_BAT(APINT_TYPE_PREFIX, 25508) +HANDLE_BAT(APINT_TYPE_PREFIX, 25509) +HANDLE_BAT(APINT_TYPE_PREFIX, 25510) +HANDLE_BAT(APINT_TYPE_PREFIX, 25511) +HANDLE_BAT(APINT_TYPE_PREFIX, 25512) +HANDLE_BAT(APINT_TYPE_PREFIX, 25513) +HANDLE_BAT(APINT_TYPE_PREFIX, 25514) +HANDLE_BAT(APINT_TYPE_PREFIX, 25515) +HANDLE_BAT(APINT_TYPE_PREFIX, 25516) +HANDLE_BAT(APINT_TYPE_PREFIX, 25517) +HANDLE_BAT(APINT_TYPE_PREFIX, 25518) +HANDLE_BAT(APINT_TYPE_PREFIX, 25519) +HANDLE_BAT(APINT_TYPE_PREFIX, 25520) +HANDLE_BAT(APINT_TYPE_PREFIX, 25521) +HANDLE_BAT(APINT_TYPE_PREFIX, 25522) +HANDLE_BAT(APINT_TYPE_PREFIX, 25523) +HANDLE_BAT(APINT_TYPE_PREFIX, 25524) +HANDLE_BAT(APINT_TYPE_PREFIX, 25525) +HANDLE_BAT(APINT_TYPE_PREFIX, 25526) +HANDLE_BAT(APINT_TYPE_PREFIX, 25527) +HANDLE_BAT(APINT_TYPE_PREFIX, 25528) +HANDLE_BAT(APINT_TYPE_PREFIX, 25529) +HANDLE_BAT(APINT_TYPE_PREFIX, 25530) +HANDLE_BAT(APINT_TYPE_PREFIX, 25531) +HANDLE_BAT(APINT_TYPE_PREFIX, 25532) +HANDLE_BAT(APINT_TYPE_PREFIX, 25533) +HANDLE_BAT(APINT_TYPE_PREFIX, 25534) +HANDLE_BAT(APINT_TYPE_PREFIX, 25535) +HANDLE_BAT(APINT_TYPE_PREFIX, 25536) +HANDLE_BAT(APINT_TYPE_PREFIX, 25537) +HANDLE_BAT(APINT_TYPE_PREFIX, 25538) +HANDLE_BAT(APINT_TYPE_PREFIX, 25539) +HANDLE_BAT(APINT_TYPE_PREFIX, 25540) +HANDLE_BAT(APINT_TYPE_PREFIX, 25541) +HANDLE_BAT(APINT_TYPE_PREFIX, 25542) +HANDLE_BAT(APINT_TYPE_PREFIX, 25543) +HANDLE_BAT(APINT_TYPE_PREFIX, 25544) +HANDLE_BAT(APINT_TYPE_PREFIX, 25545) +HANDLE_BAT(APINT_TYPE_PREFIX, 25546) +HANDLE_BAT(APINT_TYPE_PREFIX, 25547) +HANDLE_BAT(APINT_TYPE_PREFIX, 25548) +HANDLE_BAT(APINT_TYPE_PREFIX, 25549) +HANDLE_BAT(APINT_TYPE_PREFIX, 25550) +HANDLE_BAT(APINT_TYPE_PREFIX, 25551) +HANDLE_BAT(APINT_TYPE_PREFIX, 25552) +HANDLE_BAT(APINT_TYPE_PREFIX, 25553) +HANDLE_BAT(APINT_TYPE_PREFIX, 25554) +HANDLE_BAT(APINT_TYPE_PREFIX, 25555) +HANDLE_BAT(APINT_TYPE_PREFIX, 25556) +HANDLE_BAT(APINT_TYPE_PREFIX, 25557) +HANDLE_BAT(APINT_TYPE_PREFIX, 25558) +HANDLE_BAT(APINT_TYPE_PREFIX, 25559) +HANDLE_BAT(APINT_TYPE_PREFIX, 25560) +HANDLE_BAT(APINT_TYPE_PREFIX, 25561) +HANDLE_BAT(APINT_TYPE_PREFIX, 25562) +HANDLE_BAT(APINT_TYPE_PREFIX, 25563) +HANDLE_BAT(APINT_TYPE_PREFIX, 25564) +HANDLE_BAT(APINT_TYPE_PREFIX, 25565) +HANDLE_BAT(APINT_TYPE_PREFIX, 25566) +HANDLE_BAT(APINT_TYPE_PREFIX, 25567) +HANDLE_BAT(APINT_TYPE_PREFIX, 25568) +HANDLE_BAT(APINT_TYPE_PREFIX, 25569) +HANDLE_BAT(APINT_TYPE_PREFIX, 25570) +HANDLE_BAT(APINT_TYPE_PREFIX, 25571) +HANDLE_BAT(APINT_TYPE_PREFIX, 25572) +HANDLE_BAT(APINT_TYPE_PREFIX, 25573) +HANDLE_BAT(APINT_TYPE_PREFIX, 25574) +HANDLE_BAT(APINT_TYPE_PREFIX, 25575) +HANDLE_BAT(APINT_TYPE_PREFIX, 25576) +HANDLE_BAT(APINT_TYPE_PREFIX, 25577) +HANDLE_BAT(APINT_TYPE_PREFIX, 25578) +HANDLE_BAT(APINT_TYPE_PREFIX, 25579) +HANDLE_BAT(APINT_TYPE_PREFIX, 25580) +HANDLE_BAT(APINT_TYPE_PREFIX, 25581) +HANDLE_BAT(APINT_TYPE_PREFIX, 25582) +HANDLE_BAT(APINT_TYPE_PREFIX, 25583) +HANDLE_BAT(APINT_TYPE_PREFIX, 25584) +HANDLE_BAT(APINT_TYPE_PREFIX, 25585) +HANDLE_BAT(APINT_TYPE_PREFIX, 25586) +HANDLE_BAT(APINT_TYPE_PREFIX, 25587) +HANDLE_BAT(APINT_TYPE_PREFIX, 25588) +HANDLE_BAT(APINT_TYPE_PREFIX, 25589) +HANDLE_BAT(APINT_TYPE_PREFIX, 25590) +HANDLE_BAT(APINT_TYPE_PREFIX, 25591) +HANDLE_BAT(APINT_TYPE_PREFIX, 25592) +HANDLE_BAT(APINT_TYPE_PREFIX, 25593) +HANDLE_BAT(APINT_TYPE_PREFIX, 25594) +HANDLE_BAT(APINT_TYPE_PREFIX, 25595) +HANDLE_BAT(APINT_TYPE_PREFIX, 25596) +HANDLE_BAT(APINT_TYPE_PREFIX, 25597) +HANDLE_BAT(APINT_TYPE_PREFIX, 25598) +HANDLE_BAT(APINT_TYPE_PREFIX, 25599) +HANDLE_BAT(APINT_TYPE_PREFIX, 25600) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 25 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 25601) +HANDLE_BAT(, 25602) +HANDLE_BAT(, 25603) +HANDLE_BAT(, 25604) +HANDLE_BAT(, 25605) +HANDLE_BAT(, 25606) +HANDLE_BAT(, 25607) +HANDLE_BAT(, 25608) +HANDLE_BAT(, 25609) +HANDLE_BAT(, 25610) +HANDLE_BAT(, 25611) +HANDLE_BAT(, 25612) +HANDLE_BAT(, 25613) +HANDLE_BAT(, 25614) +HANDLE_BAT(, 25615) +HANDLE_BAT(, 25616) +HANDLE_BAT(, 25617) +HANDLE_BAT(, 25618) +HANDLE_BAT(, 25619) +HANDLE_BAT(, 25620) +HANDLE_BAT(, 25621) +HANDLE_BAT(, 25622) +HANDLE_BAT(, 25623) +HANDLE_BAT(, 25624) +HANDLE_BAT(, 25625) +HANDLE_BAT(, 25626) +HANDLE_BAT(, 25627) +HANDLE_BAT(, 25628) +HANDLE_BAT(, 25629) +HANDLE_BAT(, 25630) +HANDLE_BAT(, 25631) +HANDLE_BAT(, 25632) +HANDLE_BAT(, 25633) +HANDLE_BAT(, 25634) +HANDLE_BAT(, 25635) +HANDLE_BAT(, 25636) +HANDLE_BAT(, 25637) +HANDLE_BAT(, 25638) +HANDLE_BAT(, 25639) +HANDLE_BAT(, 25640) +HANDLE_BAT(, 25641) +HANDLE_BAT(, 25642) +HANDLE_BAT(, 25643) +HANDLE_BAT(, 25644) +HANDLE_BAT(, 25645) +HANDLE_BAT(, 25646) +HANDLE_BAT(, 25647) +HANDLE_BAT(, 25648) +HANDLE_BAT(, 25649) +HANDLE_BAT(, 25650) +HANDLE_BAT(, 25651) +HANDLE_BAT(, 25652) +HANDLE_BAT(, 25653) +HANDLE_BAT(, 25654) +HANDLE_BAT(, 25655) +HANDLE_BAT(, 25656) +HANDLE_BAT(, 25657) +HANDLE_BAT(, 25658) +HANDLE_BAT(, 25659) +HANDLE_BAT(, 25660) +HANDLE_BAT(, 25661) +HANDLE_BAT(, 25662) +HANDLE_BAT(, 25663) +HANDLE_BAT(, 25664) +HANDLE_BAT(, 25665) +HANDLE_BAT(, 25666) +HANDLE_BAT(, 25667) +HANDLE_BAT(, 25668) +HANDLE_BAT(, 25669) +HANDLE_BAT(, 25670) +HANDLE_BAT(, 25671) +HANDLE_BAT(, 25672) +HANDLE_BAT(, 25673) +HANDLE_BAT(, 25674) +HANDLE_BAT(, 25675) +HANDLE_BAT(, 25676) +HANDLE_BAT(, 25677) +HANDLE_BAT(, 25678) +HANDLE_BAT(, 25679) +HANDLE_BAT(, 25680) +HANDLE_BAT(, 25681) +HANDLE_BAT(, 25682) +HANDLE_BAT(, 25683) +HANDLE_BAT(, 25684) +HANDLE_BAT(, 25685) +HANDLE_BAT(, 25686) +HANDLE_BAT(, 25687) +HANDLE_BAT(, 25688) +HANDLE_BAT(, 25689) +HANDLE_BAT(, 25690) +HANDLE_BAT(, 25691) +HANDLE_BAT(, 25692) +HANDLE_BAT(, 25693) +HANDLE_BAT(, 25694) +HANDLE_BAT(, 25695) +HANDLE_BAT(, 25696) +HANDLE_BAT(, 25697) +HANDLE_BAT(, 25698) +HANDLE_BAT(, 25699) +HANDLE_BAT(, 25700) +HANDLE_BAT(, 25701) +HANDLE_BAT(, 25702) +HANDLE_BAT(, 25703) +HANDLE_BAT(, 25704) +HANDLE_BAT(, 25705) +HANDLE_BAT(, 25706) +HANDLE_BAT(, 25707) +HANDLE_BAT(, 25708) +HANDLE_BAT(, 25709) +HANDLE_BAT(, 25710) +HANDLE_BAT(, 25711) +HANDLE_BAT(, 25712) +HANDLE_BAT(, 25713) +HANDLE_BAT(, 25714) +HANDLE_BAT(, 25715) +HANDLE_BAT(, 25716) +HANDLE_BAT(, 25717) +HANDLE_BAT(, 25718) +HANDLE_BAT(, 25719) +HANDLE_BAT(, 25720) +HANDLE_BAT(, 25721) +HANDLE_BAT(, 25722) +HANDLE_BAT(, 25723) +HANDLE_BAT(, 25724) +HANDLE_BAT(, 25725) +HANDLE_BAT(, 25726) +HANDLE_BAT(, 25727) +HANDLE_BAT(, 25728) +HANDLE_BAT(, 25729) +HANDLE_BAT(, 25730) +HANDLE_BAT(, 25731) +HANDLE_BAT(, 25732) +HANDLE_BAT(, 25733) +HANDLE_BAT(, 25734) +HANDLE_BAT(, 25735) +HANDLE_BAT(, 25736) +HANDLE_BAT(, 25737) +HANDLE_BAT(, 25738) +HANDLE_BAT(, 25739) +HANDLE_BAT(, 25740) +HANDLE_BAT(, 25741) +HANDLE_BAT(, 25742) +HANDLE_BAT(, 25743) +HANDLE_BAT(, 25744) +HANDLE_BAT(, 25745) +HANDLE_BAT(, 25746) +HANDLE_BAT(, 25747) +HANDLE_BAT(, 25748) +HANDLE_BAT(, 25749) +HANDLE_BAT(, 25750) +HANDLE_BAT(, 25751) +HANDLE_BAT(, 25752) +HANDLE_BAT(, 25753) +HANDLE_BAT(, 25754) +HANDLE_BAT(, 25755) +HANDLE_BAT(, 25756) +HANDLE_BAT(, 25757) +HANDLE_BAT(, 25758) +HANDLE_BAT(, 25759) +HANDLE_BAT(, 25760) +HANDLE_BAT(, 25761) +HANDLE_BAT(, 25762) +HANDLE_BAT(, 25763) +HANDLE_BAT(, 25764) +HANDLE_BAT(, 25765) +HANDLE_BAT(, 25766) +HANDLE_BAT(, 25767) +HANDLE_BAT(, 25768) +HANDLE_BAT(, 25769) +HANDLE_BAT(, 25770) +HANDLE_BAT(, 25771) +HANDLE_BAT(, 25772) +HANDLE_BAT(, 25773) +HANDLE_BAT(, 25774) +HANDLE_BAT(, 25775) +HANDLE_BAT(, 25776) +HANDLE_BAT(, 25777) +HANDLE_BAT(, 25778) +HANDLE_BAT(, 25779) +HANDLE_BAT(, 25780) +HANDLE_BAT(, 25781) +HANDLE_BAT(, 25782) +HANDLE_BAT(, 25783) +HANDLE_BAT(, 25784) +HANDLE_BAT(, 25785) +HANDLE_BAT(, 25786) +HANDLE_BAT(, 25787) +HANDLE_BAT(, 25788) +HANDLE_BAT(, 25789) +HANDLE_BAT(, 25790) +HANDLE_BAT(, 25791) +HANDLE_BAT(, 25792) +HANDLE_BAT(, 25793) +HANDLE_BAT(, 25794) +HANDLE_BAT(, 25795) +HANDLE_BAT(, 25796) +HANDLE_BAT(, 25797) +HANDLE_BAT(, 25798) +HANDLE_BAT(, 25799) +HANDLE_BAT(, 25800) +HANDLE_BAT(, 25801) +HANDLE_BAT(, 25802) +HANDLE_BAT(, 25803) +HANDLE_BAT(, 25804) +HANDLE_BAT(, 25805) +HANDLE_BAT(, 25806) +HANDLE_BAT(, 25807) +HANDLE_BAT(, 25808) +HANDLE_BAT(, 25809) +HANDLE_BAT(, 25810) +HANDLE_BAT(, 25811) +HANDLE_BAT(, 25812) +HANDLE_BAT(, 25813) +HANDLE_BAT(, 25814) +HANDLE_BAT(, 25815) +HANDLE_BAT(, 25816) +HANDLE_BAT(, 25817) +HANDLE_BAT(, 25818) +HANDLE_BAT(, 25819) +HANDLE_BAT(, 25820) +HANDLE_BAT(, 25821) +HANDLE_BAT(, 25822) +HANDLE_BAT(, 25823) +HANDLE_BAT(, 25824) +HANDLE_BAT(, 25825) +HANDLE_BAT(, 25826) +HANDLE_BAT(, 25827) +HANDLE_BAT(, 25828) +HANDLE_BAT(, 25829) +HANDLE_BAT(, 25830) +HANDLE_BAT(, 25831) +HANDLE_BAT(, 25832) +HANDLE_BAT(, 25833) +HANDLE_BAT(, 25834) +HANDLE_BAT(, 25835) +HANDLE_BAT(, 25836) +HANDLE_BAT(, 25837) +HANDLE_BAT(, 25838) +HANDLE_BAT(, 25839) +HANDLE_BAT(, 25840) +HANDLE_BAT(, 25841) +HANDLE_BAT(, 25842) +HANDLE_BAT(, 25843) +HANDLE_BAT(, 25844) +HANDLE_BAT(, 25845) +HANDLE_BAT(, 25846) +HANDLE_BAT(, 25847) +HANDLE_BAT(, 25848) +HANDLE_BAT(, 25849) +HANDLE_BAT(, 25850) +HANDLE_BAT(, 25851) +HANDLE_BAT(, 25852) +HANDLE_BAT(, 25853) +HANDLE_BAT(, 25854) +HANDLE_BAT(, 25855) +HANDLE_BAT(, 25856) +HANDLE_BAT(, 25857) +HANDLE_BAT(, 25858) +HANDLE_BAT(, 25859) +HANDLE_BAT(, 25860) +HANDLE_BAT(, 25861) +HANDLE_BAT(, 25862) +HANDLE_BAT(, 25863) +HANDLE_BAT(, 25864) +HANDLE_BAT(, 25865) +HANDLE_BAT(, 25866) +HANDLE_BAT(, 25867) +HANDLE_BAT(, 25868) +HANDLE_BAT(, 25869) +HANDLE_BAT(, 25870) +HANDLE_BAT(, 25871) +HANDLE_BAT(, 25872) +HANDLE_BAT(, 25873) +HANDLE_BAT(, 25874) +HANDLE_BAT(, 25875) +HANDLE_BAT(, 25876) +HANDLE_BAT(, 25877) +HANDLE_BAT(, 25878) +HANDLE_BAT(, 25879) +HANDLE_BAT(, 25880) +HANDLE_BAT(, 25881) +HANDLE_BAT(, 25882) +HANDLE_BAT(, 25883) +HANDLE_BAT(, 25884) +HANDLE_BAT(, 25885) +HANDLE_BAT(, 25886) +HANDLE_BAT(, 25887) +HANDLE_BAT(, 25888) +HANDLE_BAT(, 25889) +HANDLE_BAT(, 25890) +HANDLE_BAT(, 25891) +HANDLE_BAT(, 25892) +HANDLE_BAT(, 25893) +HANDLE_BAT(, 25894) +HANDLE_BAT(, 25895) +HANDLE_BAT(, 25896) +HANDLE_BAT(, 25897) +HANDLE_BAT(, 25898) +HANDLE_BAT(, 25899) +HANDLE_BAT(, 25900) +HANDLE_BAT(, 25901) +HANDLE_BAT(, 25902) +HANDLE_BAT(, 25903) +HANDLE_BAT(, 25904) +HANDLE_BAT(, 25905) +HANDLE_BAT(, 25906) +HANDLE_BAT(, 25907) +HANDLE_BAT(, 25908) +HANDLE_BAT(, 25909) +HANDLE_BAT(, 25910) +HANDLE_BAT(, 25911) +HANDLE_BAT(, 25912) +HANDLE_BAT(, 25913) +HANDLE_BAT(, 25914) +HANDLE_BAT(, 25915) +HANDLE_BAT(, 25916) +HANDLE_BAT(, 25917) +HANDLE_BAT(, 25918) +HANDLE_BAT(, 25919) +HANDLE_BAT(, 25920) +HANDLE_BAT(, 25921) +HANDLE_BAT(, 25922) +HANDLE_BAT(, 25923) +HANDLE_BAT(, 25924) +HANDLE_BAT(, 25925) +HANDLE_BAT(, 25926) +HANDLE_BAT(, 25927) +HANDLE_BAT(, 25928) +HANDLE_BAT(, 25929) +HANDLE_BAT(, 25930) +HANDLE_BAT(, 25931) +HANDLE_BAT(, 25932) +HANDLE_BAT(, 25933) +HANDLE_BAT(, 25934) +HANDLE_BAT(, 25935) +HANDLE_BAT(, 25936) +HANDLE_BAT(, 25937) +HANDLE_BAT(, 25938) +HANDLE_BAT(, 25939) +HANDLE_BAT(, 25940) +HANDLE_BAT(, 25941) +HANDLE_BAT(, 25942) +HANDLE_BAT(, 25943) +HANDLE_BAT(, 25944) +HANDLE_BAT(, 25945) +HANDLE_BAT(, 25946) +HANDLE_BAT(, 25947) +HANDLE_BAT(, 25948) +HANDLE_BAT(, 25949) +HANDLE_BAT(, 25950) +HANDLE_BAT(, 25951) +HANDLE_BAT(, 25952) +HANDLE_BAT(, 25953) +HANDLE_BAT(, 25954) +HANDLE_BAT(, 25955) +HANDLE_BAT(, 25956) +HANDLE_BAT(, 25957) +HANDLE_BAT(, 25958) +HANDLE_BAT(, 25959) +HANDLE_BAT(, 25960) +HANDLE_BAT(, 25961) +HANDLE_BAT(, 25962) +HANDLE_BAT(, 25963) +HANDLE_BAT(, 25964) +HANDLE_BAT(, 25965) +HANDLE_BAT(, 25966) +HANDLE_BAT(, 25967) +HANDLE_BAT(, 25968) +HANDLE_BAT(, 25969) +HANDLE_BAT(, 25970) +HANDLE_BAT(, 25971) +HANDLE_BAT(, 25972) +HANDLE_BAT(, 25973) +HANDLE_BAT(, 25974) +HANDLE_BAT(, 25975) +HANDLE_BAT(, 25976) +HANDLE_BAT(, 25977) +HANDLE_BAT(, 25978) +HANDLE_BAT(, 25979) +HANDLE_BAT(, 25980) +HANDLE_BAT(, 25981) +HANDLE_BAT(, 25982) +HANDLE_BAT(, 25983) +HANDLE_BAT(, 25984) +HANDLE_BAT(, 25985) +HANDLE_BAT(, 25986) +HANDLE_BAT(, 25987) +HANDLE_BAT(, 25988) +HANDLE_BAT(, 25989) +HANDLE_BAT(, 25990) +HANDLE_BAT(, 25991) +HANDLE_BAT(, 25992) +HANDLE_BAT(, 25993) +HANDLE_BAT(, 25994) +HANDLE_BAT(, 25995) +HANDLE_BAT(, 25996) +HANDLE_BAT(, 25997) +HANDLE_BAT(, 25998) +HANDLE_BAT(, 25999) +HANDLE_BAT(, 26000) +HANDLE_BAT(, 26001) +HANDLE_BAT(, 26002) +HANDLE_BAT(, 26003) +HANDLE_BAT(, 26004) +HANDLE_BAT(, 26005) +HANDLE_BAT(, 26006) +HANDLE_BAT(, 26007) +HANDLE_BAT(, 26008) +HANDLE_BAT(, 26009) +HANDLE_BAT(, 26010) +HANDLE_BAT(, 26011) +HANDLE_BAT(, 26012) +HANDLE_BAT(, 26013) +HANDLE_BAT(, 26014) +HANDLE_BAT(, 26015) +HANDLE_BAT(, 26016) +HANDLE_BAT(, 26017) +HANDLE_BAT(, 26018) +HANDLE_BAT(, 26019) +HANDLE_BAT(, 26020) +HANDLE_BAT(, 26021) +HANDLE_BAT(, 26022) +HANDLE_BAT(, 26023) +HANDLE_BAT(, 26024) +HANDLE_BAT(, 26025) +HANDLE_BAT(, 26026) +HANDLE_BAT(, 26027) +HANDLE_BAT(, 26028) +HANDLE_BAT(, 26029) +HANDLE_BAT(, 26030) +HANDLE_BAT(, 26031) +HANDLE_BAT(, 26032) +HANDLE_BAT(, 26033) +HANDLE_BAT(, 26034) +HANDLE_BAT(, 26035) +HANDLE_BAT(, 26036) +HANDLE_BAT(, 26037) +HANDLE_BAT(, 26038) +HANDLE_BAT(, 26039) +HANDLE_BAT(, 26040) +HANDLE_BAT(, 26041) +HANDLE_BAT(, 26042) +HANDLE_BAT(, 26043) +HANDLE_BAT(, 26044) +HANDLE_BAT(, 26045) +HANDLE_BAT(, 26046) +HANDLE_BAT(, 26047) +HANDLE_BAT(, 26048) +HANDLE_BAT(, 26049) +HANDLE_BAT(, 26050) +HANDLE_BAT(, 26051) +HANDLE_BAT(, 26052) +HANDLE_BAT(, 26053) +HANDLE_BAT(, 26054) +HANDLE_BAT(, 26055) +HANDLE_BAT(, 26056) +HANDLE_BAT(, 26057) +HANDLE_BAT(, 26058) +HANDLE_BAT(, 26059) +HANDLE_BAT(, 26060) +HANDLE_BAT(, 26061) +HANDLE_BAT(, 26062) +HANDLE_BAT(, 26063) +HANDLE_BAT(, 26064) +HANDLE_BAT(, 26065) +HANDLE_BAT(, 26066) +HANDLE_BAT(, 26067) +HANDLE_BAT(, 26068) +HANDLE_BAT(, 26069) +HANDLE_BAT(, 26070) +HANDLE_BAT(, 26071) +HANDLE_BAT(, 26072) +HANDLE_BAT(, 26073) +HANDLE_BAT(, 26074) +HANDLE_BAT(, 26075) +HANDLE_BAT(, 26076) +HANDLE_BAT(, 26077) +HANDLE_BAT(, 26078) +HANDLE_BAT(, 26079) +HANDLE_BAT(, 26080) +HANDLE_BAT(, 26081) +HANDLE_BAT(, 26082) +HANDLE_BAT(, 26083) +HANDLE_BAT(, 26084) +HANDLE_BAT(, 26085) +HANDLE_BAT(, 26086) +HANDLE_BAT(, 26087) +HANDLE_BAT(, 26088) +HANDLE_BAT(, 26089) +HANDLE_BAT(, 26090) +HANDLE_BAT(, 26091) +HANDLE_BAT(, 26092) +HANDLE_BAT(, 26093) +HANDLE_BAT(, 26094) +HANDLE_BAT(, 26095) +HANDLE_BAT(, 26096) +HANDLE_BAT(, 26097) +HANDLE_BAT(, 26098) +HANDLE_BAT(, 26099) +HANDLE_BAT(, 26100) +HANDLE_BAT(, 26101) +HANDLE_BAT(, 26102) +HANDLE_BAT(, 26103) +HANDLE_BAT(, 26104) +HANDLE_BAT(, 26105) +HANDLE_BAT(, 26106) +HANDLE_BAT(, 26107) +HANDLE_BAT(, 26108) +HANDLE_BAT(, 26109) +HANDLE_BAT(, 26110) +HANDLE_BAT(, 26111) +HANDLE_BAT(, 26112) +HANDLE_BAT(, 26113) +HANDLE_BAT(, 26114) +HANDLE_BAT(, 26115) +HANDLE_BAT(, 26116) +HANDLE_BAT(, 26117) +HANDLE_BAT(, 26118) +HANDLE_BAT(, 26119) +HANDLE_BAT(, 26120) +HANDLE_BAT(, 26121) +HANDLE_BAT(, 26122) +HANDLE_BAT(, 26123) +HANDLE_BAT(, 26124) +HANDLE_BAT(, 26125) +HANDLE_BAT(, 26126) +HANDLE_BAT(, 26127) +HANDLE_BAT(, 26128) +HANDLE_BAT(, 26129) +HANDLE_BAT(, 26130) +HANDLE_BAT(, 26131) +HANDLE_BAT(, 26132) +HANDLE_BAT(, 26133) +HANDLE_BAT(, 26134) +HANDLE_BAT(, 26135) +HANDLE_BAT(, 26136) +HANDLE_BAT(, 26137) +HANDLE_BAT(, 26138) +HANDLE_BAT(, 26139) +HANDLE_BAT(, 26140) +HANDLE_BAT(, 26141) +HANDLE_BAT(, 26142) +HANDLE_BAT(, 26143) +HANDLE_BAT(, 26144) +HANDLE_BAT(, 26145) +HANDLE_BAT(, 26146) +HANDLE_BAT(, 26147) +HANDLE_BAT(, 26148) +HANDLE_BAT(, 26149) +HANDLE_BAT(, 26150) +HANDLE_BAT(, 26151) +HANDLE_BAT(, 26152) +HANDLE_BAT(, 26153) +HANDLE_BAT(, 26154) +HANDLE_BAT(, 26155) +HANDLE_BAT(, 26156) +HANDLE_BAT(, 26157) +HANDLE_BAT(, 26158) +HANDLE_BAT(, 26159) +HANDLE_BAT(, 26160) +HANDLE_BAT(, 26161) +HANDLE_BAT(, 26162) +HANDLE_BAT(, 26163) +HANDLE_BAT(, 26164) +HANDLE_BAT(, 26165) +HANDLE_BAT(, 26166) +HANDLE_BAT(, 26167) +HANDLE_BAT(, 26168) +HANDLE_BAT(, 26169) +HANDLE_BAT(, 26170) +HANDLE_BAT(, 26171) +HANDLE_BAT(, 26172) +HANDLE_BAT(, 26173) +HANDLE_BAT(, 26174) +HANDLE_BAT(, 26175) +HANDLE_BAT(, 26176) +HANDLE_BAT(, 26177) +HANDLE_BAT(, 26178) +HANDLE_BAT(, 26179) +HANDLE_BAT(, 26180) +HANDLE_BAT(, 26181) +HANDLE_BAT(, 26182) +HANDLE_BAT(, 26183) +HANDLE_BAT(, 26184) +HANDLE_BAT(, 26185) +HANDLE_BAT(, 26186) +HANDLE_BAT(, 26187) +HANDLE_BAT(, 26188) +HANDLE_BAT(, 26189) +HANDLE_BAT(, 26190) +HANDLE_BAT(, 26191) +HANDLE_BAT(, 26192) +HANDLE_BAT(, 26193) +HANDLE_BAT(, 26194) +HANDLE_BAT(, 26195) +HANDLE_BAT(, 26196) +HANDLE_BAT(, 26197) +HANDLE_BAT(, 26198) +HANDLE_BAT(, 26199) +HANDLE_BAT(, 26200) +HANDLE_BAT(, 26201) +HANDLE_BAT(, 26202) +HANDLE_BAT(, 26203) +HANDLE_BAT(, 26204) +HANDLE_BAT(, 26205) +HANDLE_BAT(, 26206) +HANDLE_BAT(, 26207) +HANDLE_BAT(, 26208) +HANDLE_BAT(, 26209) +HANDLE_BAT(, 26210) +HANDLE_BAT(, 26211) +HANDLE_BAT(, 26212) +HANDLE_BAT(, 26213) +HANDLE_BAT(, 26214) +HANDLE_BAT(, 26215) +HANDLE_BAT(, 26216) +HANDLE_BAT(, 26217) +HANDLE_BAT(, 26218) +HANDLE_BAT(, 26219) +HANDLE_BAT(, 26220) +HANDLE_BAT(, 26221) +HANDLE_BAT(, 26222) +HANDLE_BAT(, 26223) +HANDLE_BAT(, 26224) +HANDLE_BAT(, 26225) +HANDLE_BAT(, 26226) +HANDLE_BAT(, 26227) +HANDLE_BAT(, 26228) +HANDLE_BAT(, 26229) +HANDLE_BAT(, 26230) +HANDLE_BAT(, 26231) +HANDLE_BAT(, 26232) +HANDLE_BAT(, 26233) +HANDLE_BAT(, 26234) +HANDLE_BAT(, 26235) +HANDLE_BAT(, 26236) +HANDLE_BAT(, 26237) +HANDLE_BAT(, 26238) +HANDLE_BAT(, 26239) +HANDLE_BAT(, 26240) +HANDLE_BAT(, 26241) +HANDLE_BAT(, 26242) +HANDLE_BAT(, 26243) +HANDLE_BAT(, 26244) +HANDLE_BAT(, 26245) +HANDLE_BAT(, 26246) +HANDLE_BAT(, 26247) +HANDLE_BAT(, 26248) +HANDLE_BAT(, 26249) +HANDLE_BAT(, 26250) +HANDLE_BAT(, 26251) +HANDLE_BAT(, 26252) +HANDLE_BAT(, 26253) +HANDLE_BAT(, 26254) +HANDLE_BAT(, 26255) +HANDLE_BAT(, 26256) +HANDLE_BAT(, 26257) +HANDLE_BAT(, 26258) +HANDLE_BAT(, 26259) +HANDLE_BAT(, 26260) +HANDLE_BAT(, 26261) +HANDLE_BAT(, 26262) +HANDLE_BAT(, 26263) +HANDLE_BAT(, 26264) +HANDLE_BAT(, 26265) +HANDLE_BAT(, 26266) +HANDLE_BAT(, 26267) +HANDLE_BAT(, 26268) +HANDLE_BAT(, 26269) +HANDLE_BAT(, 26270) +HANDLE_BAT(, 26271) +HANDLE_BAT(, 26272) +HANDLE_BAT(, 26273) +HANDLE_BAT(, 26274) +HANDLE_BAT(, 26275) +HANDLE_BAT(, 26276) +HANDLE_BAT(, 26277) +HANDLE_BAT(, 26278) +HANDLE_BAT(, 26279) +HANDLE_BAT(, 26280) +HANDLE_BAT(, 26281) +HANDLE_BAT(, 26282) +HANDLE_BAT(, 26283) +HANDLE_BAT(, 26284) +HANDLE_BAT(, 26285) +HANDLE_BAT(, 26286) +HANDLE_BAT(, 26287) +HANDLE_BAT(, 26288) +HANDLE_BAT(, 26289) +HANDLE_BAT(, 26290) +HANDLE_BAT(, 26291) +HANDLE_BAT(, 26292) +HANDLE_BAT(, 26293) +HANDLE_BAT(, 26294) +HANDLE_BAT(, 26295) +HANDLE_BAT(, 26296) +HANDLE_BAT(, 26297) +HANDLE_BAT(, 26298) +HANDLE_BAT(, 26299) +HANDLE_BAT(, 26300) +HANDLE_BAT(, 26301) +HANDLE_BAT(, 26302) +HANDLE_BAT(, 26303) +HANDLE_BAT(, 26304) +HANDLE_BAT(, 26305) +HANDLE_BAT(, 26306) +HANDLE_BAT(, 26307) +HANDLE_BAT(, 26308) +HANDLE_BAT(, 26309) +HANDLE_BAT(, 26310) +HANDLE_BAT(, 26311) +HANDLE_BAT(, 26312) +HANDLE_BAT(, 26313) +HANDLE_BAT(, 26314) +HANDLE_BAT(, 26315) +HANDLE_BAT(, 26316) +HANDLE_BAT(, 26317) +HANDLE_BAT(, 26318) +HANDLE_BAT(, 26319) +HANDLE_BAT(, 26320) +HANDLE_BAT(, 26321) +HANDLE_BAT(, 26322) +HANDLE_BAT(, 26323) +HANDLE_BAT(, 26324) +HANDLE_BAT(, 26325) +HANDLE_BAT(, 26326) +HANDLE_BAT(, 26327) +HANDLE_BAT(, 26328) +HANDLE_BAT(, 26329) +HANDLE_BAT(, 26330) +HANDLE_BAT(, 26331) +HANDLE_BAT(, 26332) +HANDLE_BAT(, 26333) +HANDLE_BAT(, 26334) +HANDLE_BAT(, 26335) +HANDLE_BAT(, 26336) +HANDLE_BAT(, 26337) +HANDLE_BAT(, 26338) +HANDLE_BAT(, 26339) +HANDLE_BAT(, 26340) +HANDLE_BAT(, 26341) +HANDLE_BAT(, 26342) +HANDLE_BAT(, 26343) +HANDLE_BAT(, 26344) +HANDLE_BAT(, 26345) +HANDLE_BAT(, 26346) +HANDLE_BAT(, 26347) +HANDLE_BAT(, 26348) +HANDLE_BAT(, 26349) +HANDLE_BAT(, 26350) +HANDLE_BAT(, 26351) +HANDLE_BAT(, 26352) +HANDLE_BAT(, 26353) +HANDLE_BAT(, 26354) +HANDLE_BAT(, 26355) +HANDLE_BAT(, 26356) +HANDLE_BAT(, 26357) +HANDLE_BAT(, 26358) +HANDLE_BAT(, 26359) +HANDLE_BAT(, 26360) +HANDLE_BAT(, 26361) +HANDLE_BAT(, 26362) +HANDLE_BAT(, 26363) +HANDLE_BAT(, 26364) +HANDLE_BAT(, 26365) +HANDLE_BAT(, 26366) +HANDLE_BAT(, 26367) +HANDLE_BAT(, 26368) +HANDLE_BAT(, 26369) +HANDLE_BAT(, 26370) +HANDLE_BAT(, 26371) +HANDLE_BAT(, 26372) +HANDLE_BAT(, 26373) +HANDLE_BAT(, 26374) +HANDLE_BAT(, 26375) +HANDLE_BAT(, 26376) +HANDLE_BAT(, 26377) +HANDLE_BAT(, 26378) +HANDLE_BAT(, 26379) +HANDLE_BAT(, 26380) +HANDLE_BAT(, 26381) +HANDLE_BAT(, 26382) +HANDLE_BAT(, 26383) +HANDLE_BAT(, 26384) +HANDLE_BAT(, 26385) +HANDLE_BAT(, 26386) +HANDLE_BAT(, 26387) +HANDLE_BAT(, 26388) +HANDLE_BAT(, 26389) +HANDLE_BAT(, 26390) +HANDLE_BAT(, 26391) +HANDLE_BAT(, 26392) +HANDLE_BAT(, 26393) +HANDLE_BAT(, 26394) +HANDLE_BAT(, 26395) +HANDLE_BAT(, 26396) +HANDLE_BAT(, 26397) +HANDLE_BAT(, 26398) +HANDLE_BAT(, 26399) +HANDLE_BAT(, 26400) +HANDLE_BAT(, 26401) +HANDLE_BAT(, 26402) +HANDLE_BAT(, 26403) +HANDLE_BAT(, 26404) +HANDLE_BAT(, 26405) +HANDLE_BAT(, 26406) +HANDLE_BAT(, 26407) +HANDLE_BAT(, 26408) +HANDLE_BAT(, 26409) +HANDLE_BAT(, 26410) +HANDLE_BAT(, 26411) +HANDLE_BAT(, 26412) +HANDLE_BAT(, 26413) +HANDLE_BAT(, 26414) +HANDLE_BAT(, 26415) +HANDLE_BAT(, 26416) +HANDLE_BAT(, 26417) +HANDLE_BAT(, 26418) +HANDLE_BAT(, 26419) +HANDLE_BAT(, 26420) +HANDLE_BAT(, 26421) +HANDLE_BAT(, 26422) +HANDLE_BAT(, 26423) +HANDLE_BAT(, 26424) +HANDLE_BAT(, 26425) +HANDLE_BAT(, 26426) +HANDLE_BAT(, 26427) +HANDLE_BAT(, 26428) +HANDLE_BAT(, 26429) +HANDLE_BAT(, 26430) +HANDLE_BAT(, 26431) +HANDLE_BAT(, 26432) +HANDLE_BAT(, 26433) +HANDLE_BAT(, 26434) +HANDLE_BAT(, 26435) +HANDLE_BAT(, 26436) +HANDLE_BAT(, 26437) +HANDLE_BAT(, 26438) +HANDLE_BAT(, 26439) +HANDLE_BAT(, 26440) +HANDLE_BAT(, 26441) +HANDLE_BAT(, 26442) +HANDLE_BAT(, 26443) +HANDLE_BAT(, 26444) +HANDLE_BAT(, 26445) +HANDLE_BAT(, 26446) +HANDLE_BAT(, 26447) +HANDLE_BAT(, 26448) +HANDLE_BAT(, 26449) +HANDLE_BAT(, 26450) +HANDLE_BAT(, 26451) +HANDLE_BAT(, 26452) +HANDLE_BAT(, 26453) +HANDLE_BAT(, 26454) +HANDLE_BAT(, 26455) +HANDLE_BAT(, 26456) +HANDLE_BAT(, 26457) +HANDLE_BAT(, 26458) +HANDLE_BAT(, 26459) +HANDLE_BAT(, 26460) +HANDLE_BAT(, 26461) +HANDLE_BAT(, 26462) +HANDLE_BAT(, 26463) +HANDLE_BAT(, 26464) +HANDLE_BAT(, 26465) +HANDLE_BAT(, 26466) +HANDLE_BAT(, 26467) +HANDLE_BAT(, 26468) +HANDLE_BAT(, 26469) +HANDLE_BAT(, 26470) +HANDLE_BAT(, 26471) +HANDLE_BAT(, 26472) +HANDLE_BAT(, 26473) +HANDLE_BAT(, 26474) +HANDLE_BAT(, 26475) +HANDLE_BAT(, 26476) +HANDLE_BAT(, 26477) +HANDLE_BAT(, 26478) +HANDLE_BAT(, 26479) +HANDLE_BAT(, 26480) +HANDLE_BAT(, 26481) +HANDLE_BAT(, 26482) +HANDLE_BAT(, 26483) +HANDLE_BAT(, 26484) +HANDLE_BAT(, 26485) +HANDLE_BAT(, 26486) +HANDLE_BAT(, 26487) +HANDLE_BAT(, 26488) +HANDLE_BAT(, 26489) +HANDLE_BAT(, 26490) +HANDLE_BAT(, 26491) +HANDLE_BAT(, 26492) +HANDLE_BAT(, 26493) +HANDLE_BAT(, 26494) +HANDLE_BAT(, 26495) +HANDLE_BAT(, 26496) +HANDLE_BAT(, 26497) +HANDLE_BAT(, 26498) +HANDLE_BAT(, 26499) +HANDLE_BAT(, 26500) +HANDLE_BAT(, 26501) +HANDLE_BAT(, 26502) +HANDLE_BAT(, 26503) +HANDLE_BAT(, 26504) +HANDLE_BAT(, 26505) +HANDLE_BAT(, 26506) +HANDLE_BAT(, 26507) +HANDLE_BAT(, 26508) +HANDLE_BAT(, 26509) +HANDLE_BAT(, 26510) +HANDLE_BAT(, 26511) +HANDLE_BAT(, 26512) +HANDLE_BAT(, 26513) +HANDLE_BAT(, 26514) +HANDLE_BAT(, 26515) +HANDLE_BAT(, 26516) +HANDLE_BAT(, 26517) +HANDLE_BAT(, 26518) +HANDLE_BAT(, 26519) +HANDLE_BAT(, 26520) +HANDLE_BAT(, 26521) +HANDLE_BAT(, 26522) +HANDLE_BAT(, 26523) +HANDLE_BAT(, 26524) +HANDLE_BAT(, 26525) +HANDLE_BAT(, 26526) +HANDLE_BAT(, 26527) +HANDLE_BAT(, 26528) +HANDLE_BAT(, 26529) +HANDLE_BAT(, 26530) +HANDLE_BAT(, 26531) +HANDLE_BAT(, 26532) +HANDLE_BAT(, 26533) +HANDLE_BAT(, 26534) +HANDLE_BAT(, 26535) +HANDLE_BAT(, 26536) +HANDLE_BAT(, 26537) +HANDLE_BAT(, 26538) +HANDLE_BAT(, 26539) +HANDLE_BAT(, 26540) +HANDLE_BAT(, 26541) +HANDLE_BAT(, 26542) +HANDLE_BAT(, 26543) +HANDLE_BAT(, 26544) +HANDLE_BAT(, 26545) +HANDLE_BAT(, 26546) +HANDLE_BAT(, 26547) +HANDLE_BAT(, 26548) +HANDLE_BAT(, 26549) +HANDLE_BAT(, 26550) +HANDLE_BAT(, 26551) +HANDLE_BAT(, 26552) +HANDLE_BAT(, 26553) +HANDLE_BAT(, 26554) +HANDLE_BAT(, 26555) +HANDLE_BAT(, 26556) +HANDLE_BAT(, 26557) +HANDLE_BAT(, 26558) +HANDLE_BAT(, 26559) +HANDLE_BAT(, 26560) +HANDLE_BAT(, 26561) +HANDLE_BAT(, 26562) +HANDLE_BAT(, 26563) +HANDLE_BAT(, 26564) +HANDLE_BAT(, 26565) +HANDLE_BAT(, 26566) +HANDLE_BAT(, 26567) +HANDLE_BAT(, 26568) +HANDLE_BAT(, 26569) +HANDLE_BAT(, 26570) +HANDLE_BAT(, 26571) +HANDLE_BAT(, 26572) +HANDLE_BAT(, 26573) +HANDLE_BAT(, 26574) +HANDLE_BAT(, 26575) +HANDLE_BAT(, 26576) +HANDLE_BAT(, 26577) +HANDLE_BAT(, 26578) +HANDLE_BAT(, 26579) +HANDLE_BAT(, 26580) +HANDLE_BAT(, 26581) +HANDLE_BAT(, 26582) +HANDLE_BAT(, 26583) +HANDLE_BAT(, 26584) +HANDLE_BAT(, 26585) +HANDLE_BAT(, 26586) +HANDLE_BAT(, 26587) +HANDLE_BAT(, 26588) +HANDLE_BAT(, 26589) +HANDLE_BAT(, 26590) +HANDLE_BAT(, 26591) +HANDLE_BAT(, 26592) +HANDLE_BAT(, 26593) +HANDLE_BAT(, 26594) +HANDLE_BAT(, 26595) +HANDLE_BAT(, 26596) +HANDLE_BAT(, 26597) +HANDLE_BAT(, 26598) +HANDLE_BAT(, 26599) +HANDLE_BAT(, 26600) +HANDLE_BAT(, 26601) +HANDLE_BAT(, 26602) +HANDLE_BAT(, 26603) +HANDLE_BAT(, 26604) +HANDLE_BAT(, 26605) +HANDLE_BAT(, 26606) +HANDLE_BAT(, 26607) +HANDLE_BAT(, 26608) +HANDLE_BAT(, 26609) +HANDLE_BAT(, 26610) +HANDLE_BAT(, 26611) +HANDLE_BAT(, 26612) +HANDLE_BAT(, 26613) +HANDLE_BAT(, 26614) +HANDLE_BAT(, 26615) +HANDLE_BAT(, 26616) +HANDLE_BAT(, 26617) +HANDLE_BAT(, 26618) +HANDLE_BAT(, 26619) +HANDLE_BAT(, 26620) +HANDLE_BAT(, 26621) +HANDLE_BAT(, 26622) +HANDLE_BAT(, 26623) +HANDLE_BAT(, 26624) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 25601) +HANDLE_BAT(APINT_TYPE_PREFIX, 25602) +HANDLE_BAT(APINT_TYPE_PREFIX, 25603) +HANDLE_BAT(APINT_TYPE_PREFIX, 25604) +HANDLE_BAT(APINT_TYPE_PREFIX, 25605) +HANDLE_BAT(APINT_TYPE_PREFIX, 25606) +HANDLE_BAT(APINT_TYPE_PREFIX, 25607) +HANDLE_BAT(APINT_TYPE_PREFIX, 25608) +HANDLE_BAT(APINT_TYPE_PREFIX, 25609) +HANDLE_BAT(APINT_TYPE_PREFIX, 25610) +HANDLE_BAT(APINT_TYPE_PREFIX, 25611) +HANDLE_BAT(APINT_TYPE_PREFIX, 25612) +HANDLE_BAT(APINT_TYPE_PREFIX, 25613) +HANDLE_BAT(APINT_TYPE_PREFIX, 25614) +HANDLE_BAT(APINT_TYPE_PREFIX, 25615) +HANDLE_BAT(APINT_TYPE_PREFIX, 25616) +HANDLE_BAT(APINT_TYPE_PREFIX, 25617) +HANDLE_BAT(APINT_TYPE_PREFIX, 25618) +HANDLE_BAT(APINT_TYPE_PREFIX, 25619) +HANDLE_BAT(APINT_TYPE_PREFIX, 25620) +HANDLE_BAT(APINT_TYPE_PREFIX, 25621) +HANDLE_BAT(APINT_TYPE_PREFIX, 25622) +HANDLE_BAT(APINT_TYPE_PREFIX, 25623) +HANDLE_BAT(APINT_TYPE_PREFIX, 25624) +HANDLE_BAT(APINT_TYPE_PREFIX, 25625) +HANDLE_BAT(APINT_TYPE_PREFIX, 25626) +HANDLE_BAT(APINT_TYPE_PREFIX, 25627) +HANDLE_BAT(APINT_TYPE_PREFIX, 25628) +HANDLE_BAT(APINT_TYPE_PREFIX, 25629) +HANDLE_BAT(APINT_TYPE_PREFIX, 25630) +HANDLE_BAT(APINT_TYPE_PREFIX, 25631) +HANDLE_BAT(APINT_TYPE_PREFIX, 25632) +HANDLE_BAT(APINT_TYPE_PREFIX, 25633) +HANDLE_BAT(APINT_TYPE_PREFIX, 25634) +HANDLE_BAT(APINT_TYPE_PREFIX, 25635) +HANDLE_BAT(APINT_TYPE_PREFIX, 25636) +HANDLE_BAT(APINT_TYPE_PREFIX, 25637) +HANDLE_BAT(APINT_TYPE_PREFIX, 25638) +HANDLE_BAT(APINT_TYPE_PREFIX, 25639) +HANDLE_BAT(APINT_TYPE_PREFIX, 25640) +HANDLE_BAT(APINT_TYPE_PREFIX, 25641) +HANDLE_BAT(APINT_TYPE_PREFIX, 25642) +HANDLE_BAT(APINT_TYPE_PREFIX, 25643) +HANDLE_BAT(APINT_TYPE_PREFIX, 25644) +HANDLE_BAT(APINT_TYPE_PREFIX, 25645) +HANDLE_BAT(APINT_TYPE_PREFIX, 25646) +HANDLE_BAT(APINT_TYPE_PREFIX, 25647) +HANDLE_BAT(APINT_TYPE_PREFIX, 25648) +HANDLE_BAT(APINT_TYPE_PREFIX, 25649) +HANDLE_BAT(APINT_TYPE_PREFIX, 25650) +HANDLE_BAT(APINT_TYPE_PREFIX, 25651) +HANDLE_BAT(APINT_TYPE_PREFIX, 25652) +HANDLE_BAT(APINT_TYPE_PREFIX, 25653) +HANDLE_BAT(APINT_TYPE_PREFIX, 25654) +HANDLE_BAT(APINT_TYPE_PREFIX, 25655) +HANDLE_BAT(APINT_TYPE_PREFIX, 25656) +HANDLE_BAT(APINT_TYPE_PREFIX, 25657) +HANDLE_BAT(APINT_TYPE_PREFIX, 25658) +HANDLE_BAT(APINT_TYPE_PREFIX, 25659) +HANDLE_BAT(APINT_TYPE_PREFIX, 25660) +HANDLE_BAT(APINT_TYPE_PREFIX, 25661) +HANDLE_BAT(APINT_TYPE_PREFIX, 25662) +HANDLE_BAT(APINT_TYPE_PREFIX, 25663) +HANDLE_BAT(APINT_TYPE_PREFIX, 25664) +HANDLE_BAT(APINT_TYPE_PREFIX, 25665) +HANDLE_BAT(APINT_TYPE_PREFIX, 25666) +HANDLE_BAT(APINT_TYPE_PREFIX, 25667) +HANDLE_BAT(APINT_TYPE_PREFIX, 25668) +HANDLE_BAT(APINT_TYPE_PREFIX, 25669) +HANDLE_BAT(APINT_TYPE_PREFIX, 25670) +HANDLE_BAT(APINT_TYPE_PREFIX, 25671) +HANDLE_BAT(APINT_TYPE_PREFIX, 25672) +HANDLE_BAT(APINT_TYPE_PREFIX, 25673) +HANDLE_BAT(APINT_TYPE_PREFIX, 25674) +HANDLE_BAT(APINT_TYPE_PREFIX, 25675) +HANDLE_BAT(APINT_TYPE_PREFIX, 25676) +HANDLE_BAT(APINT_TYPE_PREFIX, 25677) +HANDLE_BAT(APINT_TYPE_PREFIX, 25678) +HANDLE_BAT(APINT_TYPE_PREFIX, 25679) +HANDLE_BAT(APINT_TYPE_PREFIX, 25680) +HANDLE_BAT(APINT_TYPE_PREFIX, 25681) +HANDLE_BAT(APINT_TYPE_PREFIX, 25682) +HANDLE_BAT(APINT_TYPE_PREFIX, 25683) +HANDLE_BAT(APINT_TYPE_PREFIX, 25684) +HANDLE_BAT(APINT_TYPE_PREFIX, 25685) +HANDLE_BAT(APINT_TYPE_PREFIX, 25686) +HANDLE_BAT(APINT_TYPE_PREFIX, 25687) +HANDLE_BAT(APINT_TYPE_PREFIX, 25688) +HANDLE_BAT(APINT_TYPE_PREFIX, 25689) +HANDLE_BAT(APINT_TYPE_PREFIX, 25690) +HANDLE_BAT(APINT_TYPE_PREFIX, 25691) +HANDLE_BAT(APINT_TYPE_PREFIX, 25692) +HANDLE_BAT(APINT_TYPE_PREFIX, 25693) +HANDLE_BAT(APINT_TYPE_PREFIX, 25694) +HANDLE_BAT(APINT_TYPE_PREFIX, 25695) +HANDLE_BAT(APINT_TYPE_PREFIX, 25696) +HANDLE_BAT(APINT_TYPE_PREFIX, 25697) +HANDLE_BAT(APINT_TYPE_PREFIX, 25698) +HANDLE_BAT(APINT_TYPE_PREFIX, 25699) +HANDLE_BAT(APINT_TYPE_PREFIX, 25700) +HANDLE_BAT(APINT_TYPE_PREFIX, 25701) +HANDLE_BAT(APINT_TYPE_PREFIX, 25702) +HANDLE_BAT(APINT_TYPE_PREFIX, 25703) +HANDLE_BAT(APINT_TYPE_PREFIX, 25704) +HANDLE_BAT(APINT_TYPE_PREFIX, 25705) +HANDLE_BAT(APINT_TYPE_PREFIX, 25706) +HANDLE_BAT(APINT_TYPE_PREFIX, 25707) +HANDLE_BAT(APINT_TYPE_PREFIX, 25708) +HANDLE_BAT(APINT_TYPE_PREFIX, 25709) +HANDLE_BAT(APINT_TYPE_PREFIX, 25710) +HANDLE_BAT(APINT_TYPE_PREFIX, 25711) +HANDLE_BAT(APINT_TYPE_PREFIX, 25712) +HANDLE_BAT(APINT_TYPE_PREFIX, 25713) +HANDLE_BAT(APINT_TYPE_PREFIX, 25714) +HANDLE_BAT(APINT_TYPE_PREFIX, 25715) +HANDLE_BAT(APINT_TYPE_PREFIX, 25716) +HANDLE_BAT(APINT_TYPE_PREFIX, 25717) +HANDLE_BAT(APINT_TYPE_PREFIX, 25718) +HANDLE_BAT(APINT_TYPE_PREFIX, 25719) +HANDLE_BAT(APINT_TYPE_PREFIX, 25720) +HANDLE_BAT(APINT_TYPE_PREFIX, 25721) +HANDLE_BAT(APINT_TYPE_PREFIX, 25722) +HANDLE_BAT(APINT_TYPE_PREFIX, 25723) +HANDLE_BAT(APINT_TYPE_PREFIX, 25724) +HANDLE_BAT(APINT_TYPE_PREFIX, 25725) +HANDLE_BAT(APINT_TYPE_PREFIX, 25726) +HANDLE_BAT(APINT_TYPE_PREFIX, 25727) +HANDLE_BAT(APINT_TYPE_PREFIX, 25728) +HANDLE_BAT(APINT_TYPE_PREFIX, 25729) +HANDLE_BAT(APINT_TYPE_PREFIX, 25730) +HANDLE_BAT(APINT_TYPE_PREFIX, 25731) +HANDLE_BAT(APINT_TYPE_PREFIX, 25732) +HANDLE_BAT(APINT_TYPE_PREFIX, 25733) +HANDLE_BAT(APINT_TYPE_PREFIX, 25734) +HANDLE_BAT(APINT_TYPE_PREFIX, 25735) +HANDLE_BAT(APINT_TYPE_PREFIX, 25736) +HANDLE_BAT(APINT_TYPE_PREFIX, 25737) +HANDLE_BAT(APINT_TYPE_PREFIX, 25738) +HANDLE_BAT(APINT_TYPE_PREFIX, 25739) +HANDLE_BAT(APINT_TYPE_PREFIX, 25740) +HANDLE_BAT(APINT_TYPE_PREFIX, 25741) +HANDLE_BAT(APINT_TYPE_PREFIX, 25742) +HANDLE_BAT(APINT_TYPE_PREFIX, 25743) +HANDLE_BAT(APINT_TYPE_PREFIX, 25744) +HANDLE_BAT(APINT_TYPE_PREFIX, 25745) +HANDLE_BAT(APINT_TYPE_PREFIX, 25746) +HANDLE_BAT(APINT_TYPE_PREFIX, 25747) +HANDLE_BAT(APINT_TYPE_PREFIX, 25748) +HANDLE_BAT(APINT_TYPE_PREFIX, 25749) +HANDLE_BAT(APINT_TYPE_PREFIX, 25750) +HANDLE_BAT(APINT_TYPE_PREFIX, 25751) +HANDLE_BAT(APINT_TYPE_PREFIX, 25752) +HANDLE_BAT(APINT_TYPE_PREFIX, 25753) +HANDLE_BAT(APINT_TYPE_PREFIX, 25754) +HANDLE_BAT(APINT_TYPE_PREFIX, 25755) +HANDLE_BAT(APINT_TYPE_PREFIX, 25756) +HANDLE_BAT(APINT_TYPE_PREFIX, 25757) +HANDLE_BAT(APINT_TYPE_PREFIX, 25758) +HANDLE_BAT(APINT_TYPE_PREFIX, 25759) +HANDLE_BAT(APINT_TYPE_PREFIX, 25760) +HANDLE_BAT(APINT_TYPE_PREFIX, 25761) +HANDLE_BAT(APINT_TYPE_PREFIX, 25762) +HANDLE_BAT(APINT_TYPE_PREFIX, 25763) +HANDLE_BAT(APINT_TYPE_PREFIX, 25764) +HANDLE_BAT(APINT_TYPE_PREFIX, 25765) +HANDLE_BAT(APINT_TYPE_PREFIX, 25766) +HANDLE_BAT(APINT_TYPE_PREFIX, 25767) +HANDLE_BAT(APINT_TYPE_PREFIX, 25768) +HANDLE_BAT(APINT_TYPE_PREFIX, 25769) +HANDLE_BAT(APINT_TYPE_PREFIX, 25770) +HANDLE_BAT(APINT_TYPE_PREFIX, 25771) +HANDLE_BAT(APINT_TYPE_PREFIX, 25772) +HANDLE_BAT(APINT_TYPE_PREFIX, 25773) +HANDLE_BAT(APINT_TYPE_PREFIX, 25774) +HANDLE_BAT(APINT_TYPE_PREFIX, 25775) +HANDLE_BAT(APINT_TYPE_PREFIX, 25776) +HANDLE_BAT(APINT_TYPE_PREFIX, 25777) +HANDLE_BAT(APINT_TYPE_PREFIX, 25778) +HANDLE_BAT(APINT_TYPE_PREFIX, 25779) +HANDLE_BAT(APINT_TYPE_PREFIX, 25780) +HANDLE_BAT(APINT_TYPE_PREFIX, 25781) +HANDLE_BAT(APINT_TYPE_PREFIX, 25782) +HANDLE_BAT(APINT_TYPE_PREFIX, 25783) +HANDLE_BAT(APINT_TYPE_PREFIX, 25784) +HANDLE_BAT(APINT_TYPE_PREFIX, 25785) +HANDLE_BAT(APINT_TYPE_PREFIX, 25786) +HANDLE_BAT(APINT_TYPE_PREFIX, 25787) +HANDLE_BAT(APINT_TYPE_PREFIX, 25788) +HANDLE_BAT(APINT_TYPE_PREFIX, 25789) +HANDLE_BAT(APINT_TYPE_PREFIX, 25790) +HANDLE_BAT(APINT_TYPE_PREFIX, 25791) +HANDLE_BAT(APINT_TYPE_PREFIX, 25792) +HANDLE_BAT(APINT_TYPE_PREFIX, 25793) +HANDLE_BAT(APINT_TYPE_PREFIX, 25794) +HANDLE_BAT(APINT_TYPE_PREFIX, 25795) +HANDLE_BAT(APINT_TYPE_PREFIX, 25796) +HANDLE_BAT(APINT_TYPE_PREFIX, 25797) +HANDLE_BAT(APINT_TYPE_PREFIX, 25798) +HANDLE_BAT(APINT_TYPE_PREFIX, 25799) +HANDLE_BAT(APINT_TYPE_PREFIX, 25800) +HANDLE_BAT(APINT_TYPE_PREFIX, 25801) +HANDLE_BAT(APINT_TYPE_PREFIX, 25802) +HANDLE_BAT(APINT_TYPE_PREFIX, 25803) +HANDLE_BAT(APINT_TYPE_PREFIX, 25804) +HANDLE_BAT(APINT_TYPE_PREFIX, 25805) +HANDLE_BAT(APINT_TYPE_PREFIX, 25806) +HANDLE_BAT(APINT_TYPE_PREFIX, 25807) +HANDLE_BAT(APINT_TYPE_PREFIX, 25808) +HANDLE_BAT(APINT_TYPE_PREFIX, 25809) +HANDLE_BAT(APINT_TYPE_PREFIX, 25810) +HANDLE_BAT(APINT_TYPE_PREFIX, 25811) +HANDLE_BAT(APINT_TYPE_PREFIX, 25812) +HANDLE_BAT(APINT_TYPE_PREFIX, 25813) +HANDLE_BAT(APINT_TYPE_PREFIX, 25814) +HANDLE_BAT(APINT_TYPE_PREFIX, 25815) +HANDLE_BAT(APINT_TYPE_PREFIX, 25816) +HANDLE_BAT(APINT_TYPE_PREFIX, 25817) +HANDLE_BAT(APINT_TYPE_PREFIX, 25818) +HANDLE_BAT(APINT_TYPE_PREFIX, 25819) +HANDLE_BAT(APINT_TYPE_PREFIX, 25820) +HANDLE_BAT(APINT_TYPE_PREFIX, 25821) +HANDLE_BAT(APINT_TYPE_PREFIX, 25822) +HANDLE_BAT(APINT_TYPE_PREFIX, 25823) +HANDLE_BAT(APINT_TYPE_PREFIX, 25824) +HANDLE_BAT(APINT_TYPE_PREFIX, 25825) +HANDLE_BAT(APINT_TYPE_PREFIX, 25826) +HANDLE_BAT(APINT_TYPE_PREFIX, 25827) +HANDLE_BAT(APINT_TYPE_PREFIX, 25828) +HANDLE_BAT(APINT_TYPE_PREFIX, 25829) +HANDLE_BAT(APINT_TYPE_PREFIX, 25830) +HANDLE_BAT(APINT_TYPE_PREFIX, 25831) +HANDLE_BAT(APINT_TYPE_PREFIX, 25832) +HANDLE_BAT(APINT_TYPE_PREFIX, 25833) +HANDLE_BAT(APINT_TYPE_PREFIX, 25834) +HANDLE_BAT(APINT_TYPE_PREFIX, 25835) +HANDLE_BAT(APINT_TYPE_PREFIX, 25836) +HANDLE_BAT(APINT_TYPE_PREFIX, 25837) +HANDLE_BAT(APINT_TYPE_PREFIX, 25838) +HANDLE_BAT(APINT_TYPE_PREFIX, 25839) +HANDLE_BAT(APINT_TYPE_PREFIX, 25840) +HANDLE_BAT(APINT_TYPE_PREFIX, 25841) +HANDLE_BAT(APINT_TYPE_PREFIX, 25842) +HANDLE_BAT(APINT_TYPE_PREFIX, 25843) +HANDLE_BAT(APINT_TYPE_PREFIX, 25844) +HANDLE_BAT(APINT_TYPE_PREFIX, 25845) +HANDLE_BAT(APINT_TYPE_PREFIX, 25846) +HANDLE_BAT(APINT_TYPE_PREFIX, 25847) +HANDLE_BAT(APINT_TYPE_PREFIX, 25848) +HANDLE_BAT(APINT_TYPE_PREFIX, 25849) +HANDLE_BAT(APINT_TYPE_PREFIX, 25850) +HANDLE_BAT(APINT_TYPE_PREFIX, 25851) +HANDLE_BAT(APINT_TYPE_PREFIX, 25852) +HANDLE_BAT(APINT_TYPE_PREFIX, 25853) +HANDLE_BAT(APINT_TYPE_PREFIX, 25854) +HANDLE_BAT(APINT_TYPE_PREFIX, 25855) +HANDLE_BAT(APINT_TYPE_PREFIX, 25856) +HANDLE_BAT(APINT_TYPE_PREFIX, 25857) +HANDLE_BAT(APINT_TYPE_PREFIX, 25858) +HANDLE_BAT(APINT_TYPE_PREFIX, 25859) +HANDLE_BAT(APINT_TYPE_PREFIX, 25860) +HANDLE_BAT(APINT_TYPE_PREFIX, 25861) +HANDLE_BAT(APINT_TYPE_PREFIX, 25862) +HANDLE_BAT(APINT_TYPE_PREFIX, 25863) +HANDLE_BAT(APINT_TYPE_PREFIX, 25864) +HANDLE_BAT(APINT_TYPE_PREFIX, 25865) +HANDLE_BAT(APINT_TYPE_PREFIX, 25866) +HANDLE_BAT(APINT_TYPE_PREFIX, 25867) +HANDLE_BAT(APINT_TYPE_PREFIX, 25868) +HANDLE_BAT(APINT_TYPE_PREFIX, 25869) +HANDLE_BAT(APINT_TYPE_PREFIX, 25870) +HANDLE_BAT(APINT_TYPE_PREFIX, 25871) +HANDLE_BAT(APINT_TYPE_PREFIX, 25872) +HANDLE_BAT(APINT_TYPE_PREFIX, 25873) +HANDLE_BAT(APINT_TYPE_PREFIX, 25874) +HANDLE_BAT(APINT_TYPE_PREFIX, 25875) +HANDLE_BAT(APINT_TYPE_PREFIX, 25876) +HANDLE_BAT(APINT_TYPE_PREFIX, 25877) +HANDLE_BAT(APINT_TYPE_PREFIX, 25878) +HANDLE_BAT(APINT_TYPE_PREFIX, 25879) +HANDLE_BAT(APINT_TYPE_PREFIX, 25880) +HANDLE_BAT(APINT_TYPE_PREFIX, 25881) +HANDLE_BAT(APINT_TYPE_PREFIX, 25882) +HANDLE_BAT(APINT_TYPE_PREFIX, 25883) +HANDLE_BAT(APINT_TYPE_PREFIX, 25884) +HANDLE_BAT(APINT_TYPE_PREFIX, 25885) +HANDLE_BAT(APINT_TYPE_PREFIX, 25886) +HANDLE_BAT(APINT_TYPE_PREFIX, 25887) +HANDLE_BAT(APINT_TYPE_PREFIX, 25888) +HANDLE_BAT(APINT_TYPE_PREFIX, 25889) +HANDLE_BAT(APINT_TYPE_PREFIX, 25890) +HANDLE_BAT(APINT_TYPE_PREFIX, 25891) +HANDLE_BAT(APINT_TYPE_PREFIX, 25892) +HANDLE_BAT(APINT_TYPE_PREFIX, 25893) +HANDLE_BAT(APINT_TYPE_PREFIX, 25894) +HANDLE_BAT(APINT_TYPE_PREFIX, 25895) +HANDLE_BAT(APINT_TYPE_PREFIX, 25896) +HANDLE_BAT(APINT_TYPE_PREFIX, 25897) +HANDLE_BAT(APINT_TYPE_PREFIX, 25898) +HANDLE_BAT(APINT_TYPE_PREFIX, 25899) +HANDLE_BAT(APINT_TYPE_PREFIX, 25900) +HANDLE_BAT(APINT_TYPE_PREFIX, 25901) +HANDLE_BAT(APINT_TYPE_PREFIX, 25902) +HANDLE_BAT(APINT_TYPE_PREFIX, 25903) +HANDLE_BAT(APINT_TYPE_PREFIX, 25904) +HANDLE_BAT(APINT_TYPE_PREFIX, 25905) +HANDLE_BAT(APINT_TYPE_PREFIX, 25906) +HANDLE_BAT(APINT_TYPE_PREFIX, 25907) +HANDLE_BAT(APINT_TYPE_PREFIX, 25908) +HANDLE_BAT(APINT_TYPE_PREFIX, 25909) +HANDLE_BAT(APINT_TYPE_PREFIX, 25910) +HANDLE_BAT(APINT_TYPE_PREFIX, 25911) +HANDLE_BAT(APINT_TYPE_PREFIX, 25912) +HANDLE_BAT(APINT_TYPE_PREFIX, 25913) +HANDLE_BAT(APINT_TYPE_PREFIX, 25914) +HANDLE_BAT(APINT_TYPE_PREFIX, 25915) +HANDLE_BAT(APINT_TYPE_PREFIX, 25916) +HANDLE_BAT(APINT_TYPE_PREFIX, 25917) +HANDLE_BAT(APINT_TYPE_PREFIX, 25918) +HANDLE_BAT(APINT_TYPE_PREFIX, 25919) +HANDLE_BAT(APINT_TYPE_PREFIX, 25920) +HANDLE_BAT(APINT_TYPE_PREFIX, 25921) +HANDLE_BAT(APINT_TYPE_PREFIX, 25922) +HANDLE_BAT(APINT_TYPE_PREFIX, 25923) +HANDLE_BAT(APINT_TYPE_PREFIX, 25924) +HANDLE_BAT(APINT_TYPE_PREFIX, 25925) +HANDLE_BAT(APINT_TYPE_PREFIX, 25926) +HANDLE_BAT(APINT_TYPE_PREFIX, 25927) +HANDLE_BAT(APINT_TYPE_PREFIX, 25928) +HANDLE_BAT(APINT_TYPE_PREFIX, 25929) +HANDLE_BAT(APINT_TYPE_PREFIX, 25930) +HANDLE_BAT(APINT_TYPE_PREFIX, 25931) +HANDLE_BAT(APINT_TYPE_PREFIX, 25932) +HANDLE_BAT(APINT_TYPE_PREFIX, 25933) +HANDLE_BAT(APINT_TYPE_PREFIX, 25934) +HANDLE_BAT(APINT_TYPE_PREFIX, 25935) +HANDLE_BAT(APINT_TYPE_PREFIX, 25936) +HANDLE_BAT(APINT_TYPE_PREFIX, 25937) +HANDLE_BAT(APINT_TYPE_PREFIX, 25938) +HANDLE_BAT(APINT_TYPE_PREFIX, 25939) +HANDLE_BAT(APINT_TYPE_PREFIX, 25940) +HANDLE_BAT(APINT_TYPE_PREFIX, 25941) +HANDLE_BAT(APINT_TYPE_PREFIX, 25942) +HANDLE_BAT(APINT_TYPE_PREFIX, 25943) +HANDLE_BAT(APINT_TYPE_PREFIX, 25944) +HANDLE_BAT(APINT_TYPE_PREFIX, 25945) +HANDLE_BAT(APINT_TYPE_PREFIX, 25946) +HANDLE_BAT(APINT_TYPE_PREFIX, 25947) +HANDLE_BAT(APINT_TYPE_PREFIX, 25948) +HANDLE_BAT(APINT_TYPE_PREFIX, 25949) +HANDLE_BAT(APINT_TYPE_PREFIX, 25950) +HANDLE_BAT(APINT_TYPE_PREFIX, 25951) +HANDLE_BAT(APINT_TYPE_PREFIX, 25952) +HANDLE_BAT(APINT_TYPE_PREFIX, 25953) +HANDLE_BAT(APINT_TYPE_PREFIX, 25954) +HANDLE_BAT(APINT_TYPE_PREFIX, 25955) +HANDLE_BAT(APINT_TYPE_PREFIX, 25956) +HANDLE_BAT(APINT_TYPE_PREFIX, 25957) +HANDLE_BAT(APINT_TYPE_PREFIX, 25958) +HANDLE_BAT(APINT_TYPE_PREFIX, 25959) +HANDLE_BAT(APINT_TYPE_PREFIX, 25960) +HANDLE_BAT(APINT_TYPE_PREFIX, 25961) +HANDLE_BAT(APINT_TYPE_PREFIX, 25962) +HANDLE_BAT(APINT_TYPE_PREFIX, 25963) +HANDLE_BAT(APINT_TYPE_PREFIX, 25964) +HANDLE_BAT(APINT_TYPE_PREFIX, 25965) +HANDLE_BAT(APINT_TYPE_PREFIX, 25966) +HANDLE_BAT(APINT_TYPE_PREFIX, 25967) +HANDLE_BAT(APINT_TYPE_PREFIX, 25968) +HANDLE_BAT(APINT_TYPE_PREFIX, 25969) +HANDLE_BAT(APINT_TYPE_PREFIX, 25970) +HANDLE_BAT(APINT_TYPE_PREFIX, 25971) +HANDLE_BAT(APINT_TYPE_PREFIX, 25972) +HANDLE_BAT(APINT_TYPE_PREFIX, 25973) +HANDLE_BAT(APINT_TYPE_PREFIX, 25974) +HANDLE_BAT(APINT_TYPE_PREFIX, 25975) +HANDLE_BAT(APINT_TYPE_PREFIX, 25976) +HANDLE_BAT(APINT_TYPE_PREFIX, 25977) +HANDLE_BAT(APINT_TYPE_PREFIX, 25978) +HANDLE_BAT(APINT_TYPE_PREFIX, 25979) +HANDLE_BAT(APINT_TYPE_PREFIX, 25980) +HANDLE_BAT(APINT_TYPE_PREFIX, 25981) +HANDLE_BAT(APINT_TYPE_PREFIX, 25982) +HANDLE_BAT(APINT_TYPE_PREFIX, 25983) +HANDLE_BAT(APINT_TYPE_PREFIX, 25984) +HANDLE_BAT(APINT_TYPE_PREFIX, 25985) +HANDLE_BAT(APINT_TYPE_PREFIX, 25986) +HANDLE_BAT(APINT_TYPE_PREFIX, 25987) +HANDLE_BAT(APINT_TYPE_PREFIX, 25988) +HANDLE_BAT(APINT_TYPE_PREFIX, 25989) +HANDLE_BAT(APINT_TYPE_PREFIX, 25990) +HANDLE_BAT(APINT_TYPE_PREFIX, 25991) +HANDLE_BAT(APINT_TYPE_PREFIX, 25992) +HANDLE_BAT(APINT_TYPE_PREFIX, 25993) +HANDLE_BAT(APINT_TYPE_PREFIX, 25994) +HANDLE_BAT(APINT_TYPE_PREFIX, 25995) +HANDLE_BAT(APINT_TYPE_PREFIX, 25996) +HANDLE_BAT(APINT_TYPE_PREFIX, 25997) +HANDLE_BAT(APINT_TYPE_PREFIX, 25998) +HANDLE_BAT(APINT_TYPE_PREFIX, 25999) +HANDLE_BAT(APINT_TYPE_PREFIX, 26000) +HANDLE_BAT(APINT_TYPE_PREFIX, 26001) +HANDLE_BAT(APINT_TYPE_PREFIX, 26002) +HANDLE_BAT(APINT_TYPE_PREFIX, 26003) +HANDLE_BAT(APINT_TYPE_PREFIX, 26004) +HANDLE_BAT(APINT_TYPE_PREFIX, 26005) +HANDLE_BAT(APINT_TYPE_PREFIX, 26006) +HANDLE_BAT(APINT_TYPE_PREFIX, 26007) +HANDLE_BAT(APINT_TYPE_PREFIX, 26008) +HANDLE_BAT(APINT_TYPE_PREFIX, 26009) +HANDLE_BAT(APINT_TYPE_PREFIX, 26010) +HANDLE_BAT(APINT_TYPE_PREFIX, 26011) +HANDLE_BAT(APINT_TYPE_PREFIX, 26012) +HANDLE_BAT(APINT_TYPE_PREFIX, 26013) +HANDLE_BAT(APINT_TYPE_PREFIX, 26014) +HANDLE_BAT(APINT_TYPE_PREFIX, 26015) +HANDLE_BAT(APINT_TYPE_PREFIX, 26016) +HANDLE_BAT(APINT_TYPE_PREFIX, 26017) +HANDLE_BAT(APINT_TYPE_PREFIX, 26018) +HANDLE_BAT(APINT_TYPE_PREFIX, 26019) +HANDLE_BAT(APINT_TYPE_PREFIX, 26020) +HANDLE_BAT(APINT_TYPE_PREFIX, 26021) +HANDLE_BAT(APINT_TYPE_PREFIX, 26022) +HANDLE_BAT(APINT_TYPE_PREFIX, 26023) +HANDLE_BAT(APINT_TYPE_PREFIX, 26024) +HANDLE_BAT(APINT_TYPE_PREFIX, 26025) +HANDLE_BAT(APINT_TYPE_PREFIX, 26026) +HANDLE_BAT(APINT_TYPE_PREFIX, 26027) +HANDLE_BAT(APINT_TYPE_PREFIX, 26028) +HANDLE_BAT(APINT_TYPE_PREFIX, 26029) +HANDLE_BAT(APINT_TYPE_PREFIX, 26030) +HANDLE_BAT(APINT_TYPE_PREFIX, 26031) +HANDLE_BAT(APINT_TYPE_PREFIX, 26032) +HANDLE_BAT(APINT_TYPE_PREFIX, 26033) +HANDLE_BAT(APINT_TYPE_PREFIX, 26034) +HANDLE_BAT(APINT_TYPE_PREFIX, 26035) +HANDLE_BAT(APINT_TYPE_PREFIX, 26036) +HANDLE_BAT(APINT_TYPE_PREFIX, 26037) +HANDLE_BAT(APINT_TYPE_PREFIX, 26038) +HANDLE_BAT(APINT_TYPE_PREFIX, 26039) +HANDLE_BAT(APINT_TYPE_PREFIX, 26040) +HANDLE_BAT(APINT_TYPE_PREFIX, 26041) +HANDLE_BAT(APINT_TYPE_PREFIX, 26042) +HANDLE_BAT(APINT_TYPE_PREFIX, 26043) +HANDLE_BAT(APINT_TYPE_PREFIX, 26044) +HANDLE_BAT(APINT_TYPE_PREFIX, 26045) +HANDLE_BAT(APINT_TYPE_PREFIX, 26046) +HANDLE_BAT(APINT_TYPE_PREFIX, 26047) +HANDLE_BAT(APINT_TYPE_PREFIX, 26048) +HANDLE_BAT(APINT_TYPE_PREFIX, 26049) +HANDLE_BAT(APINT_TYPE_PREFIX, 26050) +HANDLE_BAT(APINT_TYPE_PREFIX, 26051) +HANDLE_BAT(APINT_TYPE_PREFIX, 26052) +HANDLE_BAT(APINT_TYPE_PREFIX, 26053) +HANDLE_BAT(APINT_TYPE_PREFIX, 26054) +HANDLE_BAT(APINT_TYPE_PREFIX, 26055) +HANDLE_BAT(APINT_TYPE_PREFIX, 26056) +HANDLE_BAT(APINT_TYPE_PREFIX, 26057) +HANDLE_BAT(APINT_TYPE_PREFIX, 26058) +HANDLE_BAT(APINT_TYPE_PREFIX, 26059) +HANDLE_BAT(APINT_TYPE_PREFIX, 26060) +HANDLE_BAT(APINT_TYPE_PREFIX, 26061) +HANDLE_BAT(APINT_TYPE_PREFIX, 26062) +HANDLE_BAT(APINT_TYPE_PREFIX, 26063) +HANDLE_BAT(APINT_TYPE_PREFIX, 26064) +HANDLE_BAT(APINT_TYPE_PREFIX, 26065) +HANDLE_BAT(APINT_TYPE_PREFIX, 26066) +HANDLE_BAT(APINT_TYPE_PREFIX, 26067) +HANDLE_BAT(APINT_TYPE_PREFIX, 26068) +HANDLE_BAT(APINT_TYPE_PREFIX, 26069) +HANDLE_BAT(APINT_TYPE_PREFIX, 26070) +HANDLE_BAT(APINT_TYPE_PREFIX, 26071) +HANDLE_BAT(APINT_TYPE_PREFIX, 26072) +HANDLE_BAT(APINT_TYPE_PREFIX, 26073) +HANDLE_BAT(APINT_TYPE_PREFIX, 26074) +HANDLE_BAT(APINT_TYPE_PREFIX, 26075) +HANDLE_BAT(APINT_TYPE_PREFIX, 26076) +HANDLE_BAT(APINT_TYPE_PREFIX, 26077) +HANDLE_BAT(APINT_TYPE_PREFIX, 26078) +HANDLE_BAT(APINT_TYPE_PREFIX, 26079) +HANDLE_BAT(APINT_TYPE_PREFIX, 26080) +HANDLE_BAT(APINT_TYPE_PREFIX, 26081) +HANDLE_BAT(APINT_TYPE_PREFIX, 26082) +HANDLE_BAT(APINT_TYPE_PREFIX, 26083) +HANDLE_BAT(APINT_TYPE_PREFIX, 26084) +HANDLE_BAT(APINT_TYPE_PREFIX, 26085) +HANDLE_BAT(APINT_TYPE_PREFIX, 26086) +HANDLE_BAT(APINT_TYPE_PREFIX, 26087) +HANDLE_BAT(APINT_TYPE_PREFIX, 26088) +HANDLE_BAT(APINT_TYPE_PREFIX, 26089) +HANDLE_BAT(APINT_TYPE_PREFIX, 26090) +HANDLE_BAT(APINT_TYPE_PREFIX, 26091) +HANDLE_BAT(APINT_TYPE_PREFIX, 26092) +HANDLE_BAT(APINT_TYPE_PREFIX, 26093) +HANDLE_BAT(APINT_TYPE_PREFIX, 26094) +HANDLE_BAT(APINT_TYPE_PREFIX, 26095) +HANDLE_BAT(APINT_TYPE_PREFIX, 26096) +HANDLE_BAT(APINT_TYPE_PREFIX, 26097) +HANDLE_BAT(APINT_TYPE_PREFIX, 26098) +HANDLE_BAT(APINT_TYPE_PREFIX, 26099) +HANDLE_BAT(APINT_TYPE_PREFIX, 26100) +HANDLE_BAT(APINT_TYPE_PREFIX, 26101) +HANDLE_BAT(APINT_TYPE_PREFIX, 26102) +HANDLE_BAT(APINT_TYPE_PREFIX, 26103) +HANDLE_BAT(APINT_TYPE_PREFIX, 26104) +HANDLE_BAT(APINT_TYPE_PREFIX, 26105) +HANDLE_BAT(APINT_TYPE_PREFIX, 26106) +HANDLE_BAT(APINT_TYPE_PREFIX, 26107) +HANDLE_BAT(APINT_TYPE_PREFIX, 26108) +HANDLE_BAT(APINT_TYPE_PREFIX, 26109) +HANDLE_BAT(APINT_TYPE_PREFIX, 26110) +HANDLE_BAT(APINT_TYPE_PREFIX, 26111) +HANDLE_BAT(APINT_TYPE_PREFIX, 26112) +HANDLE_BAT(APINT_TYPE_PREFIX, 26113) +HANDLE_BAT(APINT_TYPE_PREFIX, 26114) +HANDLE_BAT(APINT_TYPE_PREFIX, 26115) +HANDLE_BAT(APINT_TYPE_PREFIX, 26116) +HANDLE_BAT(APINT_TYPE_PREFIX, 26117) +HANDLE_BAT(APINT_TYPE_PREFIX, 26118) +HANDLE_BAT(APINT_TYPE_PREFIX, 26119) +HANDLE_BAT(APINT_TYPE_PREFIX, 26120) +HANDLE_BAT(APINT_TYPE_PREFIX, 26121) +HANDLE_BAT(APINT_TYPE_PREFIX, 26122) +HANDLE_BAT(APINT_TYPE_PREFIX, 26123) +HANDLE_BAT(APINT_TYPE_PREFIX, 26124) +HANDLE_BAT(APINT_TYPE_PREFIX, 26125) +HANDLE_BAT(APINT_TYPE_PREFIX, 26126) +HANDLE_BAT(APINT_TYPE_PREFIX, 26127) +HANDLE_BAT(APINT_TYPE_PREFIX, 26128) +HANDLE_BAT(APINT_TYPE_PREFIX, 26129) +HANDLE_BAT(APINT_TYPE_PREFIX, 26130) +HANDLE_BAT(APINT_TYPE_PREFIX, 26131) +HANDLE_BAT(APINT_TYPE_PREFIX, 26132) +HANDLE_BAT(APINT_TYPE_PREFIX, 26133) +HANDLE_BAT(APINT_TYPE_PREFIX, 26134) +HANDLE_BAT(APINT_TYPE_PREFIX, 26135) +HANDLE_BAT(APINT_TYPE_PREFIX, 26136) +HANDLE_BAT(APINT_TYPE_PREFIX, 26137) +HANDLE_BAT(APINT_TYPE_PREFIX, 26138) +HANDLE_BAT(APINT_TYPE_PREFIX, 26139) +HANDLE_BAT(APINT_TYPE_PREFIX, 26140) +HANDLE_BAT(APINT_TYPE_PREFIX, 26141) +HANDLE_BAT(APINT_TYPE_PREFIX, 26142) +HANDLE_BAT(APINT_TYPE_PREFIX, 26143) +HANDLE_BAT(APINT_TYPE_PREFIX, 26144) +HANDLE_BAT(APINT_TYPE_PREFIX, 26145) +HANDLE_BAT(APINT_TYPE_PREFIX, 26146) +HANDLE_BAT(APINT_TYPE_PREFIX, 26147) +HANDLE_BAT(APINT_TYPE_PREFIX, 26148) +HANDLE_BAT(APINT_TYPE_PREFIX, 26149) +HANDLE_BAT(APINT_TYPE_PREFIX, 26150) +HANDLE_BAT(APINT_TYPE_PREFIX, 26151) +HANDLE_BAT(APINT_TYPE_PREFIX, 26152) +HANDLE_BAT(APINT_TYPE_PREFIX, 26153) +HANDLE_BAT(APINT_TYPE_PREFIX, 26154) +HANDLE_BAT(APINT_TYPE_PREFIX, 26155) +HANDLE_BAT(APINT_TYPE_PREFIX, 26156) +HANDLE_BAT(APINT_TYPE_PREFIX, 26157) +HANDLE_BAT(APINT_TYPE_PREFIX, 26158) +HANDLE_BAT(APINT_TYPE_PREFIX, 26159) +HANDLE_BAT(APINT_TYPE_PREFIX, 26160) +HANDLE_BAT(APINT_TYPE_PREFIX, 26161) +HANDLE_BAT(APINT_TYPE_PREFIX, 26162) +HANDLE_BAT(APINT_TYPE_PREFIX, 26163) +HANDLE_BAT(APINT_TYPE_PREFIX, 26164) +HANDLE_BAT(APINT_TYPE_PREFIX, 26165) +HANDLE_BAT(APINT_TYPE_PREFIX, 26166) +HANDLE_BAT(APINT_TYPE_PREFIX, 26167) +HANDLE_BAT(APINT_TYPE_PREFIX, 26168) +HANDLE_BAT(APINT_TYPE_PREFIX, 26169) +HANDLE_BAT(APINT_TYPE_PREFIX, 26170) +HANDLE_BAT(APINT_TYPE_PREFIX, 26171) +HANDLE_BAT(APINT_TYPE_PREFIX, 26172) +HANDLE_BAT(APINT_TYPE_PREFIX, 26173) +HANDLE_BAT(APINT_TYPE_PREFIX, 26174) +HANDLE_BAT(APINT_TYPE_PREFIX, 26175) +HANDLE_BAT(APINT_TYPE_PREFIX, 26176) +HANDLE_BAT(APINT_TYPE_PREFIX, 26177) +HANDLE_BAT(APINT_TYPE_PREFIX, 26178) +HANDLE_BAT(APINT_TYPE_PREFIX, 26179) +HANDLE_BAT(APINT_TYPE_PREFIX, 26180) +HANDLE_BAT(APINT_TYPE_PREFIX, 26181) +HANDLE_BAT(APINT_TYPE_PREFIX, 26182) +HANDLE_BAT(APINT_TYPE_PREFIX, 26183) +HANDLE_BAT(APINT_TYPE_PREFIX, 26184) +HANDLE_BAT(APINT_TYPE_PREFIX, 26185) +HANDLE_BAT(APINT_TYPE_PREFIX, 26186) +HANDLE_BAT(APINT_TYPE_PREFIX, 26187) +HANDLE_BAT(APINT_TYPE_PREFIX, 26188) +HANDLE_BAT(APINT_TYPE_PREFIX, 26189) +HANDLE_BAT(APINT_TYPE_PREFIX, 26190) +HANDLE_BAT(APINT_TYPE_PREFIX, 26191) +HANDLE_BAT(APINT_TYPE_PREFIX, 26192) +HANDLE_BAT(APINT_TYPE_PREFIX, 26193) +HANDLE_BAT(APINT_TYPE_PREFIX, 26194) +HANDLE_BAT(APINT_TYPE_PREFIX, 26195) +HANDLE_BAT(APINT_TYPE_PREFIX, 26196) +HANDLE_BAT(APINT_TYPE_PREFIX, 26197) +HANDLE_BAT(APINT_TYPE_PREFIX, 26198) +HANDLE_BAT(APINT_TYPE_PREFIX, 26199) +HANDLE_BAT(APINT_TYPE_PREFIX, 26200) +HANDLE_BAT(APINT_TYPE_PREFIX, 26201) +HANDLE_BAT(APINT_TYPE_PREFIX, 26202) +HANDLE_BAT(APINT_TYPE_PREFIX, 26203) +HANDLE_BAT(APINT_TYPE_PREFIX, 26204) +HANDLE_BAT(APINT_TYPE_PREFIX, 26205) +HANDLE_BAT(APINT_TYPE_PREFIX, 26206) +HANDLE_BAT(APINT_TYPE_PREFIX, 26207) +HANDLE_BAT(APINT_TYPE_PREFIX, 26208) +HANDLE_BAT(APINT_TYPE_PREFIX, 26209) +HANDLE_BAT(APINT_TYPE_PREFIX, 26210) +HANDLE_BAT(APINT_TYPE_PREFIX, 26211) +HANDLE_BAT(APINT_TYPE_PREFIX, 26212) +HANDLE_BAT(APINT_TYPE_PREFIX, 26213) +HANDLE_BAT(APINT_TYPE_PREFIX, 26214) +HANDLE_BAT(APINT_TYPE_PREFIX, 26215) +HANDLE_BAT(APINT_TYPE_PREFIX, 26216) +HANDLE_BAT(APINT_TYPE_PREFIX, 26217) +HANDLE_BAT(APINT_TYPE_PREFIX, 26218) +HANDLE_BAT(APINT_TYPE_PREFIX, 26219) +HANDLE_BAT(APINT_TYPE_PREFIX, 26220) +HANDLE_BAT(APINT_TYPE_PREFIX, 26221) +HANDLE_BAT(APINT_TYPE_PREFIX, 26222) +HANDLE_BAT(APINT_TYPE_PREFIX, 26223) +HANDLE_BAT(APINT_TYPE_PREFIX, 26224) +HANDLE_BAT(APINT_TYPE_PREFIX, 26225) +HANDLE_BAT(APINT_TYPE_PREFIX, 26226) +HANDLE_BAT(APINT_TYPE_PREFIX, 26227) +HANDLE_BAT(APINT_TYPE_PREFIX, 26228) +HANDLE_BAT(APINT_TYPE_PREFIX, 26229) +HANDLE_BAT(APINT_TYPE_PREFIX, 26230) +HANDLE_BAT(APINT_TYPE_PREFIX, 26231) +HANDLE_BAT(APINT_TYPE_PREFIX, 26232) +HANDLE_BAT(APINT_TYPE_PREFIX, 26233) +HANDLE_BAT(APINT_TYPE_PREFIX, 26234) +HANDLE_BAT(APINT_TYPE_PREFIX, 26235) +HANDLE_BAT(APINT_TYPE_PREFIX, 26236) +HANDLE_BAT(APINT_TYPE_PREFIX, 26237) +HANDLE_BAT(APINT_TYPE_PREFIX, 26238) +HANDLE_BAT(APINT_TYPE_PREFIX, 26239) +HANDLE_BAT(APINT_TYPE_PREFIX, 26240) +HANDLE_BAT(APINT_TYPE_PREFIX, 26241) +HANDLE_BAT(APINT_TYPE_PREFIX, 26242) +HANDLE_BAT(APINT_TYPE_PREFIX, 26243) +HANDLE_BAT(APINT_TYPE_PREFIX, 26244) +HANDLE_BAT(APINT_TYPE_PREFIX, 26245) +HANDLE_BAT(APINT_TYPE_PREFIX, 26246) +HANDLE_BAT(APINT_TYPE_PREFIX, 26247) +HANDLE_BAT(APINT_TYPE_PREFIX, 26248) +HANDLE_BAT(APINT_TYPE_PREFIX, 26249) +HANDLE_BAT(APINT_TYPE_PREFIX, 26250) +HANDLE_BAT(APINT_TYPE_PREFIX, 26251) +HANDLE_BAT(APINT_TYPE_PREFIX, 26252) +HANDLE_BAT(APINT_TYPE_PREFIX, 26253) +HANDLE_BAT(APINT_TYPE_PREFIX, 26254) +HANDLE_BAT(APINT_TYPE_PREFIX, 26255) +HANDLE_BAT(APINT_TYPE_PREFIX, 26256) +HANDLE_BAT(APINT_TYPE_PREFIX, 26257) +HANDLE_BAT(APINT_TYPE_PREFIX, 26258) +HANDLE_BAT(APINT_TYPE_PREFIX, 26259) +HANDLE_BAT(APINT_TYPE_PREFIX, 26260) +HANDLE_BAT(APINT_TYPE_PREFIX, 26261) +HANDLE_BAT(APINT_TYPE_PREFIX, 26262) +HANDLE_BAT(APINT_TYPE_PREFIX, 26263) +HANDLE_BAT(APINT_TYPE_PREFIX, 26264) +HANDLE_BAT(APINT_TYPE_PREFIX, 26265) +HANDLE_BAT(APINT_TYPE_PREFIX, 26266) +HANDLE_BAT(APINT_TYPE_PREFIX, 26267) +HANDLE_BAT(APINT_TYPE_PREFIX, 26268) +HANDLE_BAT(APINT_TYPE_PREFIX, 26269) +HANDLE_BAT(APINT_TYPE_PREFIX, 26270) +HANDLE_BAT(APINT_TYPE_PREFIX, 26271) +HANDLE_BAT(APINT_TYPE_PREFIX, 26272) +HANDLE_BAT(APINT_TYPE_PREFIX, 26273) +HANDLE_BAT(APINT_TYPE_PREFIX, 26274) +HANDLE_BAT(APINT_TYPE_PREFIX, 26275) +HANDLE_BAT(APINT_TYPE_PREFIX, 26276) +HANDLE_BAT(APINT_TYPE_PREFIX, 26277) +HANDLE_BAT(APINT_TYPE_PREFIX, 26278) +HANDLE_BAT(APINT_TYPE_PREFIX, 26279) +HANDLE_BAT(APINT_TYPE_PREFIX, 26280) +HANDLE_BAT(APINT_TYPE_PREFIX, 26281) +HANDLE_BAT(APINT_TYPE_PREFIX, 26282) +HANDLE_BAT(APINT_TYPE_PREFIX, 26283) +HANDLE_BAT(APINT_TYPE_PREFIX, 26284) +HANDLE_BAT(APINT_TYPE_PREFIX, 26285) +HANDLE_BAT(APINT_TYPE_PREFIX, 26286) +HANDLE_BAT(APINT_TYPE_PREFIX, 26287) +HANDLE_BAT(APINT_TYPE_PREFIX, 26288) +HANDLE_BAT(APINT_TYPE_PREFIX, 26289) +HANDLE_BAT(APINT_TYPE_PREFIX, 26290) +HANDLE_BAT(APINT_TYPE_PREFIX, 26291) +HANDLE_BAT(APINT_TYPE_PREFIX, 26292) +HANDLE_BAT(APINT_TYPE_PREFIX, 26293) +HANDLE_BAT(APINT_TYPE_PREFIX, 26294) +HANDLE_BAT(APINT_TYPE_PREFIX, 26295) +HANDLE_BAT(APINT_TYPE_PREFIX, 26296) +HANDLE_BAT(APINT_TYPE_PREFIX, 26297) +HANDLE_BAT(APINT_TYPE_PREFIX, 26298) +HANDLE_BAT(APINT_TYPE_PREFIX, 26299) +HANDLE_BAT(APINT_TYPE_PREFIX, 26300) +HANDLE_BAT(APINT_TYPE_PREFIX, 26301) +HANDLE_BAT(APINT_TYPE_PREFIX, 26302) +HANDLE_BAT(APINT_TYPE_PREFIX, 26303) +HANDLE_BAT(APINT_TYPE_PREFIX, 26304) +HANDLE_BAT(APINT_TYPE_PREFIX, 26305) +HANDLE_BAT(APINT_TYPE_PREFIX, 26306) +HANDLE_BAT(APINT_TYPE_PREFIX, 26307) +HANDLE_BAT(APINT_TYPE_PREFIX, 26308) +HANDLE_BAT(APINT_TYPE_PREFIX, 26309) +HANDLE_BAT(APINT_TYPE_PREFIX, 26310) +HANDLE_BAT(APINT_TYPE_PREFIX, 26311) +HANDLE_BAT(APINT_TYPE_PREFIX, 26312) +HANDLE_BAT(APINT_TYPE_PREFIX, 26313) +HANDLE_BAT(APINT_TYPE_PREFIX, 26314) +HANDLE_BAT(APINT_TYPE_PREFIX, 26315) +HANDLE_BAT(APINT_TYPE_PREFIX, 26316) +HANDLE_BAT(APINT_TYPE_PREFIX, 26317) +HANDLE_BAT(APINT_TYPE_PREFIX, 26318) +HANDLE_BAT(APINT_TYPE_PREFIX, 26319) +HANDLE_BAT(APINT_TYPE_PREFIX, 26320) +HANDLE_BAT(APINT_TYPE_PREFIX, 26321) +HANDLE_BAT(APINT_TYPE_PREFIX, 26322) +HANDLE_BAT(APINT_TYPE_PREFIX, 26323) +HANDLE_BAT(APINT_TYPE_PREFIX, 26324) +HANDLE_BAT(APINT_TYPE_PREFIX, 26325) +HANDLE_BAT(APINT_TYPE_PREFIX, 26326) +HANDLE_BAT(APINT_TYPE_PREFIX, 26327) +HANDLE_BAT(APINT_TYPE_PREFIX, 26328) +HANDLE_BAT(APINT_TYPE_PREFIX, 26329) +HANDLE_BAT(APINT_TYPE_PREFIX, 26330) +HANDLE_BAT(APINT_TYPE_PREFIX, 26331) +HANDLE_BAT(APINT_TYPE_PREFIX, 26332) +HANDLE_BAT(APINT_TYPE_PREFIX, 26333) +HANDLE_BAT(APINT_TYPE_PREFIX, 26334) +HANDLE_BAT(APINT_TYPE_PREFIX, 26335) +HANDLE_BAT(APINT_TYPE_PREFIX, 26336) +HANDLE_BAT(APINT_TYPE_PREFIX, 26337) +HANDLE_BAT(APINT_TYPE_PREFIX, 26338) +HANDLE_BAT(APINT_TYPE_PREFIX, 26339) +HANDLE_BAT(APINT_TYPE_PREFIX, 26340) +HANDLE_BAT(APINT_TYPE_PREFIX, 26341) +HANDLE_BAT(APINT_TYPE_PREFIX, 26342) +HANDLE_BAT(APINT_TYPE_PREFIX, 26343) +HANDLE_BAT(APINT_TYPE_PREFIX, 26344) +HANDLE_BAT(APINT_TYPE_PREFIX, 26345) +HANDLE_BAT(APINT_TYPE_PREFIX, 26346) +HANDLE_BAT(APINT_TYPE_PREFIX, 26347) +HANDLE_BAT(APINT_TYPE_PREFIX, 26348) +HANDLE_BAT(APINT_TYPE_PREFIX, 26349) +HANDLE_BAT(APINT_TYPE_PREFIX, 26350) +HANDLE_BAT(APINT_TYPE_PREFIX, 26351) +HANDLE_BAT(APINT_TYPE_PREFIX, 26352) +HANDLE_BAT(APINT_TYPE_PREFIX, 26353) +HANDLE_BAT(APINT_TYPE_PREFIX, 26354) +HANDLE_BAT(APINT_TYPE_PREFIX, 26355) +HANDLE_BAT(APINT_TYPE_PREFIX, 26356) +HANDLE_BAT(APINT_TYPE_PREFIX, 26357) +HANDLE_BAT(APINT_TYPE_PREFIX, 26358) +HANDLE_BAT(APINT_TYPE_PREFIX, 26359) +HANDLE_BAT(APINT_TYPE_PREFIX, 26360) +HANDLE_BAT(APINT_TYPE_PREFIX, 26361) +HANDLE_BAT(APINT_TYPE_PREFIX, 26362) +HANDLE_BAT(APINT_TYPE_PREFIX, 26363) +HANDLE_BAT(APINT_TYPE_PREFIX, 26364) +HANDLE_BAT(APINT_TYPE_PREFIX, 26365) +HANDLE_BAT(APINT_TYPE_PREFIX, 26366) +HANDLE_BAT(APINT_TYPE_PREFIX, 26367) +HANDLE_BAT(APINT_TYPE_PREFIX, 26368) +HANDLE_BAT(APINT_TYPE_PREFIX, 26369) +HANDLE_BAT(APINT_TYPE_PREFIX, 26370) +HANDLE_BAT(APINT_TYPE_PREFIX, 26371) +HANDLE_BAT(APINT_TYPE_PREFIX, 26372) +HANDLE_BAT(APINT_TYPE_PREFIX, 26373) +HANDLE_BAT(APINT_TYPE_PREFIX, 26374) +HANDLE_BAT(APINT_TYPE_PREFIX, 26375) +HANDLE_BAT(APINT_TYPE_PREFIX, 26376) +HANDLE_BAT(APINT_TYPE_PREFIX, 26377) +HANDLE_BAT(APINT_TYPE_PREFIX, 26378) +HANDLE_BAT(APINT_TYPE_PREFIX, 26379) +HANDLE_BAT(APINT_TYPE_PREFIX, 26380) +HANDLE_BAT(APINT_TYPE_PREFIX, 26381) +HANDLE_BAT(APINT_TYPE_PREFIX, 26382) +HANDLE_BAT(APINT_TYPE_PREFIX, 26383) +HANDLE_BAT(APINT_TYPE_PREFIX, 26384) +HANDLE_BAT(APINT_TYPE_PREFIX, 26385) +HANDLE_BAT(APINT_TYPE_PREFIX, 26386) +HANDLE_BAT(APINT_TYPE_PREFIX, 26387) +HANDLE_BAT(APINT_TYPE_PREFIX, 26388) +HANDLE_BAT(APINT_TYPE_PREFIX, 26389) +HANDLE_BAT(APINT_TYPE_PREFIX, 26390) +HANDLE_BAT(APINT_TYPE_PREFIX, 26391) +HANDLE_BAT(APINT_TYPE_PREFIX, 26392) +HANDLE_BAT(APINT_TYPE_PREFIX, 26393) +HANDLE_BAT(APINT_TYPE_PREFIX, 26394) +HANDLE_BAT(APINT_TYPE_PREFIX, 26395) +HANDLE_BAT(APINT_TYPE_PREFIX, 26396) +HANDLE_BAT(APINT_TYPE_PREFIX, 26397) +HANDLE_BAT(APINT_TYPE_PREFIX, 26398) +HANDLE_BAT(APINT_TYPE_PREFIX, 26399) +HANDLE_BAT(APINT_TYPE_PREFIX, 26400) +HANDLE_BAT(APINT_TYPE_PREFIX, 26401) +HANDLE_BAT(APINT_TYPE_PREFIX, 26402) +HANDLE_BAT(APINT_TYPE_PREFIX, 26403) +HANDLE_BAT(APINT_TYPE_PREFIX, 26404) +HANDLE_BAT(APINT_TYPE_PREFIX, 26405) +HANDLE_BAT(APINT_TYPE_PREFIX, 26406) +HANDLE_BAT(APINT_TYPE_PREFIX, 26407) +HANDLE_BAT(APINT_TYPE_PREFIX, 26408) +HANDLE_BAT(APINT_TYPE_PREFIX, 26409) +HANDLE_BAT(APINT_TYPE_PREFIX, 26410) +HANDLE_BAT(APINT_TYPE_PREFIX, 26411) +HANDLE_BAT(APINT_TYPE_PREFIX, 26412) +HANDLE_BAT(APINT_TYPE_PREFIX, 26413) +HANDLE_BAT(APINT_TYPE_PREFIX, 26414) +HANDLE_BAT(APINT_TYPE_PREFIX, 26415) +HANDLE_BAT(APINT_TYPE_PREFIX, 26416) +HANDLE_BAT(APINT_TYPE_PREFIX, 26417) +HANDLE_BAT(APINT_TYPE_PREFIX, 26418) +HANDLE_BAT(APINT_TYPE_PREFIX, 26419) +HANDLE_BAT(APINT_TYPE_PREFIX, 26420) +HANDLE_BAT(APINT_TYPE_PREFIX, 26421) +HANDLE_BAT(APINT_TYPE_PREFIX, 26422) +HANDLE_BAT(APINT_TYPE_PREFIX, 26423) +HANDLE_BAT(APINT_TYPE_PREFIX, 26424) +HANDLE_BAT(APINT_TYPE_PREFIX, 26425) +HANDLE_BAT(APINT_TYPE_PREFIX, 26426) +HANDLE_BAT(APINT_TYPE_PREFIX, 26427) +HANDLE_BAT(APINT_TYPE_PREFIX, 26428) +HANDLE_BAT(APINT_TYPE_PREFIX, 26429) +HANDLE_BAT(APINT_TYPE_PREFIX, 26430) +HANDLE_BAT(APINT_TYPE_PREFIX, 26431) +HANDLE_BAT(APINT_TYPE_PREFIX, 26432) +HANDLE_BAT(APINT_TYPE_PREFIX, 26433) +HANDLE_BAT(APINT_TYPE_PREFIX, 26434) +HANDLE_BAT(APINT_TYPE_PREFIX, 26435) +HANDLE_BAT(APINT_TYPE_PREFIX, 26436) +HANDLE_BAT(APINT_TYPE_PREFIX, 26437) +HANDLE_BAT(APINT_TYPE_PREFIX, 26438) +HANDLE_BAT(APINT_TYPE_PREFIX, 26439) +HANDLE_BAT(APINT_TYPE_PREFIX, 26440) +HANDLE_BAT(APINT_TYPE_PREFIX, 26441) +HANDLE_BAT(APINT_TYPE_PREFIX, 26442) +HANDLE_BAT(APINT_TYPE_PREFIX, 26443) +HANDLE_BAT(APINT_TYPE_PREFIX, 26444) +HANDLE_BAT(APINT_TYPE_PREFIX, 26445) +HANDLE_BAT(APINT_TYPE_PREFIX, 26446) +HANDLE_BAT(APINT_TYPE_PREFIX, 26447) +HANDLE_BAT(APINT_TYPE_PREFIX, 26448) +HANDLE_BAT(APINT_TYPE_PREFIX, 26449) +HANDLE_BAT(APINT_TYPE_PREFIX, 26450) +HANDLE_BAT(APINT_TYPE_PREFIX, 26451) +HANDLE_BAT(APINT_TYPE_PREFIX, 26452) +HANDLE_BAT(APINT_TYPE_PREFIX, 26453) +HANDLE_BAT(APINT_TYPE_PREFIX, 26454) +HANDLE_BAT(APINT_TYPE_PREFIX, 26455) +HANDLE_BAT(APINT_TYPE_PREFIX, 26456) +HANDLE_BAT(APINT_TYPE_PREFIX, 26457) +HANDLE_BAT(APINT_TYPE_PREFIX, 26458) +HANDLE_BAT(APINT_TYPE_PREFIX, 26459) +HANDLE_BAT(APINT_TYPE_PREFIX, 26460) +HANDLE_BAT(APINT_TYPE_PREFIX, 26461) +HANDLE_BAT(APINT_TYPE_PREFIX, 26462) +HANDLE_BAT(APINT_TYPE_PREFIX, 26463) +HANDLE_BAT(APINT_TYPE_PREFIX, 26464) +HANDLE_BAT(APINT_TYPE_PREFIX, 26465) +HANDLE_BAT(APINT_TYPE_PREFIX, 26466) +HANDLE_BAT(APINT_TYPE_PREFIX, 26467) +HANDLE_BAT(APINT_TYPE_PREFIX, 26468) +HANDLE_BAT(APINT_TYPE_PREFIX, 26469) +HANDLE_BAT(APINT_TYPE_PREFIX, 26470) +HANDLE_BAT(APINT_TYPE_PREFIX, 26471) +HANDLE_BAT(APINT_TYPE_PREFIX, 26472) +HANDLE_BAT(APINT_TYPE_PREFIX, 26473) +HANDLE_BAT(APINT_TYPE_PREFIX, 26474) +HANDLE_BAT(APINT_TYPE_PREFIX, 26475) +HANDLE_BAT(APINT_TYPE_PREFIX, 26476) +HANDLE_BAT(APINT_TYPE_PREFIX, 26477) +HANDLE_BAT(APINT_TYPE_PREFIX, 26478) +HANDLE_BAT(APINT_TYPE_PREFIX, 26479) +HANDLE_BAT(APINT_TYPE_PREFIX, 26480) +HANDLE_BAT(APINT_TYPE_PREFIX, 26481) +HANDLE_BAT(APINT_TYPE_PREFIX, 26482) +HANDLE_BAT(APINT_TYPE_PREFIX, 26483) +HANDLE_BAT(APINT_TYPE_PREFIX, 26484) +HANDLE_BAT(APINT_TYPE_PREFIX, 26485) +HANDLE_BAT(APINT_TYPE_PREFIX, 26486) +HANDLE_BAT(APINT_TYPE_PREFIX, 26487) +HANDLE_BAT(APINT_TYPE_PREFIX, 26488) +HANDLE_BAT(APINT_TYPE_PREFIX, 26489) +HANDLE_BAT(APINT_TYPE_PREFIX, 26490) +HANDLE_BAT(APINT_TYPE_PREFIX, 26491) +HANDLE_BAT(APINT_TYPE_PREFIX, 26492) +HANDLE_BAT(APINT_TYPE_PREFIX, 26493) +HANDLE_BAT(APINT_TYPE_PREFIX, 26494) +HANDLE_BAT(APINT_TYPE_PREFIX, 26495) +HANDLE_BAT(APINT_TYPE_PREFIX, 26496) +HANDLE_BAT(APINT_TYPE_PREFIX, 26497) +HANDLE_BAT(APINT_TYPE_PREFIX, 26498) +HANDLE_BAT(APINT_TYPE_PREFIX, 26499) +HANDLE_BAT(APINT_TYPE_PREFIX, 26500) +HANDLE_BAT(APINT_TYPE_PREFIX, 26501) +HANDLE_BAT(APINT_TYPE_PREFIX, 26502) +HANDLE_BAT(APINT_TYPE_PREFIX, 26503) +HANDLE_BAT(APINT_TYPE_PREFIX, 26504) +HANDLE_BAT(APINT_TYPE_PREFIX, 26505) +HANDLE_BAT(APINT_TYPE_PREFIX, 26506) +HANDLE_BAT(APINT_TYPE_PREFIX, 26507) +HANDLE_BAT(APINT_TYPE_PREFIX, 26508) +HANDLE_BAT(APINT_TYPE_PREFIX, 26509) +HANDLE_BAT(APINT_TYPE_PREFIX, 26510) +HANDLE_BAT(APINT_TYPE_PREFIX, 26511) +HANDLE_BAT(APINT_TYPE_PREFIX, 26512) +HANDLE_BAT(APINT_TYPE_PREFIX, 26513) +HANDLE_BAT(APINT_TYPE_PREFIX, 26514) +HANDLE_BAT(APINT_TYPE_PREFIX, 26515) +HANDLE_BAT(APINT_TYPE_PREFIX, 26516) +HANDLE_BAT(APINT_TYPE_PREFIX, 26517) +HANDLE_BAT(APINT_TYPE_PREFIX, 26518) +HANDLE_BAT(APINT_TYPE_PREFIX, 26519) +HANDLE_BAT(APINT_TYPE_PREFIX, 26520) +HANDLE_BAT(APINT_TYPE_PREFIX, 26521) +HANDLE_BAT(APINT_TYPE_PREFIX, 26522) +HANDLE_BAT(APINT_TYPE_PREFIX, 26523) +HANDLE_BAT(APINT_TYPE_PREFIX, 26524) +HANDLE_BAT(APINT_TYPE_PREFIX, 26525) +HANDLE_BAT(APINT_TYPE_PREFIX, 26526) +HANDLE_BAT(APINT_TYPE_PREFIX, 26527) +HANDLE_BAT(APINT_TYPE_PREFIX, 26528) +HANDLE_BAT(APINT_TYPE_PREFIX, 26529) +HANDLE_BAT(APINT_TYPE_PREFIX, 26530) +HANDLE_BAT(APINT_TYPE_PREFIX, 26531) +HANDLE_BAT(APINT_TYPE_PREFIX, 26532) +HANDLE_BAT(APINT_TYPE_PREFIX, 26533) +HANDLE_BAT(APINT_TYPE_PREFIX, 26534) +HANDLE_BAT(APINT_TYPE_PREFIX, 26535) +HANDLE_BAT(APINT_TYPE_PREFIX, 26536) +HANDLE_BAT(APINT_TYPE_PREFIX, 26537) +HANDLE_BAT(APINT_TYPE_PREFIX, 26538) +HANDLE_BAT(APINT_TYPE_PREFIX, 26539) +HANDLE_BAT(APINT_TYPE_PREFIX, 26540) +HANDLE_BAT(APINT_TYPE_PREFIX, 26541) +HANDLE_BAT(APINT_TYPE_PREFIX, 26542) +HANDLE_BAT(APINT_TYPE_PREFIX, 26543) +HANDLE_BAT(APINT_TYPE_PREFIX, 26544) +HANDLE_BAT(APINT_TYPE_PREFIX, 26545) +HANDLE_BAT(APINT_TYPE_PREFIX, 26546) +HANDLE_BAT(APINT_TYPE_PREFIX, 26547) +HANDLE_BAT(APINT_TYPE_PREFIX, 26548) +HANDLE_BAT(APINT_TYPE_PREFIX, 26549) +HANDLE_BAT(APINT_TYPE_PREFIX, 26550) +HANDLE_BAT(APINT_TYPE_PREFIX, 26551) +HANDLE_BAT(APINT_TYPE_PREFIX, 26552) +HANDLE_BAT(APINT_TYPE_PREFIX, 26553) +HANDLE_BAT(APINT_TYPE_PREFIX, 26554) +HANDLE_BAT(APINT_TYPE_PREFIX, 26555) +HANDLE_BAT(APINT_TYPE_PREFIX, 26556) +HANDLE_BAT(APINT_TYPE_PREFIX, 26557) +HANDLE_BAT(APINT_TYPE_PREFIX, 26558) +HANDLE_BAT(APINT_TYPE_PREFIX, 26559) +HANDLE_BAT(APINT_TYPE_PREFIX, 26560) +HANDLE_BAT(APINT_TYPE_PREFIX, 26561) +HANDLE_BAT(APINT_TYPE_PREFIX, 26562) +HANDLE_BAT(APINT_TYPE_PREFIX, 26563) +HANDLE_BAT(APINT_TYPE_PREFIX, 26564) +HANDLE_BAT(APINT_TYPE_PREFIX, 26565) +HANDLE_BAT(APINT_TYPE_PREFIX, 26566) +HANDLE_BAT(APINT_TYPE_PREFIX, 26567) +HANDLE_BAT(APINT_TYPE_PREFIX, 26568) +HANDLE_BAT(APINT_TYPE_PREFIX, 26569) +HANDLE_BAT(APINT_TYPE_PREFIX, 26570) +HANDLE_BAT(APINT_TYPE_PREFIX, 26571) +HANDLE_BAT(APINT_TYPE_PREFIX, 26572) +HANDLE_BAT(APINT_TYPE_PREFIX, 26573) +HANDLE_BAT(APINT_TYPE_PREFIX, 26574) +HANDLE_BAT(APINT_TYPE_PREFIX, 26575) +HANDLE_BAT(APINT_TYPE_PREFIX, 26576) +HANDLE_BAT(APINT_TYPE_PREFIX, 26577) +HANDLE_BAT(APINT_TYPE_PREFIX, 26578) +HANDLE_BAT(APINT_TYPE_PREFIX, 26579) +HANDLE_BAT(APINT_TYPE_PREFIX, 26580) +HANDLE_BAT(APINT_TYPE_PREFIX, 26581) +HANDLE_BAT(APINT_TYPE_PREFIX, 26582) +HANDLE_BAT(APINT_TYPE_PREFIX, 26583) +HANDLE_BAT(APINT_TYPE_PREFIX, 26584) +HANDLE_BAT(APINT_TYPE_PREFIX, 26585) +HANDLE_BAT(APINT_TYPE_PREFIX, 26586) +HANDLE_BAT(APINT_TYPE_PREFIX, 26587) +HANDLE_BAT(APINT_TYPE_PREFIX, 26588) +HANDLE_BAT(APINT_TYPE_PREFIX, 26589) +HANDLE_BAT(APINT_TYPE_PREFIX, 26590) +HANDLE_BAT(APINT_TYPE_PREFIX, 26591) +HANDLE_BAT(APINT_TYPE_PREFIX, 26592) +HANDLE_BAT(APINT_TYPE_PREFIX, 26593) +HANDLE_BAT(APINT_TYPE_PREFIX, 26594) +HANDLE_BAT(APINT_TYPE_PREFIX, 26595) +HANDLE_BAT(APINT_TYPE_PREFIX, 26596) +HANDLE_BAT(APINT_TYPE_PREFIX, 26597) +HANDLE_BAT(APINT_TYPE_PREFIX, 26598) +HANDLE_BAT(APINT_TYPE_PREFIX, 26599) +HANDLE_BAT(APINT_TYPE_PREFIX, 26600) +HANDLE_BAT(APINT_TYPE_PREFIX, 26601) +HANDLE_BAT(APINT_TYPE_PREFIX, 26602) +HANDLE_BAT(APINT_TYPE_PREFIX, 26603) +HANDLE_BAT(APINT_TYPE_PREFIX, 26604) +HANDLE_BAT(APINT_TYPE_PREFIX, 26605) +HANDLE_BAT(APINT_TYPE_PREFIX, 26606) +HANDLE_BAT(APINT_TYPE_PREFIX, 26607) +HANDLE_BAT(APINT_TYPE_PREFIX, 26608) +HANDLE_BAT(APINT_TYPE_PREFIX, 26609) +HANDLE_BAT(APINT_TYPE_PREFIX, 26610) +HANDLE_BAT(APINT_TYPE_PREFIX, 26611) +HANDLE_BAT(APINT_TYPE_PREFIX, 26612) +HANDLE_BAT(APINT_TYPE_PREFIX, 26613) +HANDLE_BAT(APINT_TYPE_PREFIX, 26614) +HANDLE_BAT(APINT_TYPE_PREFIX, 26615) +HANDLE_BAT(APINT_TYPE_PREFIX, 26616) +HANDLE_BAT(APINT_TYPE_PREFIX, 26617) +HANDLE_BAT(APINT_TYPE_PREFIX, 26618) +HANDLE_BAT(APINT_TYPE_PREFIX, 26619) +HANDLE_BAT(APINT_TYPE_PREFIX, 26620) +HANDLE_BAT(APINT_TYPE_PREFIX, 26621) +HANDLE_BAT(APINT_TYPE_PREFIX, 26622) +HANDLE_BAT(APINT_TYPE_PREFIX, 26623) +HANDLE_BAT(APINT_TYPE_PREFIX, 26624) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 26 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 26625) +HANDLE_BAT(, 26626) +HANDLE_BAT(, 26627) +HANDLE_BAT(, 26628) +HANDLE_BAT(, 26629) +HANDLE_BAT(, 26630) +HANDLE_BAT(, 26631) +HANDLE_BAT(, 26632) +HANDLE_BAT(, 26633) +HANDLE_BAT(, 26634) +HANDLE_BAT(, 26635) +HANDLE_BAT(, 26636) +HANDLE_BAT(, 26637) +HANDLE_BAT(, 26638) +HANDLE_BAT(, 26639) +HANDLE_BAT(, 26640) +HANDLE_BAT(, 26641) +HANDLE_BAT(, 26642) +HANDLE_BAT(, 26643) +HANDLE_BAT(, 26644) +HANDLE_BAT(, 26645) +HANDLE_BAT(, 26646) +HANDLE_BAT(, 26647) +HANDLE_BAT(, 26648) +HANDLE_BAT(, 26649) +HANDLE_BAT(, 26650) +HANDLE_BAT(, 26651) +HANDLE_BAT(, 26652) +HANDLE_BAT(, 26653) +HANDLE_BAT(, 26654) +HANDLE_BAT(, 26655) +HANDLE_BAT(, 26656) +HANDLE_BAT(, 26657) +HANDLE_BAT(, 26658) +HANDLE_BAT(, 26659) +HANDLE_BAT(, 26660) +HANDLE_BAT(, 26661) +HANDLE_BAT(, 26662) +HANDLE_BAT(, 26663) +HANDLE_BAT(, 26664) +HANDLE_BAT(, 26665) +HANDLE_BAT(, 26666) +HANDLE_BAT(, 26667) +HANDLE_BAT(, 26668) +HANDLE_BAT(, 26669) +HANDLE_BAT(, 26670) +HANDLE_BAT(, 26671) +HANDLE_BAT(, 26672) +HANDLE_BAT(, 26673) +HANDLE_BAT(, 26674) +HANDLE_BAT(, 26675) +HANDLE_BAT(, 26676) +HANDLE_BAT(, 26677) +HANDLE_BAT(, 26678) +HANDLE_BAT(, 26679) +HANDLE_BAT(, 26680) +HANDLE_BAT(, 26681) +HANDLE_BAT(, 26682) +HANDLE_BAT(, 26683) +HANDLE_BAT(, 26684) +HANDLE_BAT(, 26685) +HANDLE_BAT(, 26686) +HANDLE_BAT(, 26687) +HANDLE_BAT(, 26688) +HANDLE_BAT(, 26689) +HANDLE_BAT(, 26690) +HANDLE_BAT(, 26691) +HANDLE_BAT(, 26692) +HANDLE_BAT(, 26693) +HANDLE_BAT(, 26694) +HANDLE_BAT(, 26695) +HANDLE_BAT(, 26696) +HANDLE_BAT(, 26697) +HANDLE_BAT(, 26698) +HANDLE_BAT(, 26699) +HANDLE_BAT(, 26700) +HANDLE_BAT(, 26701) +HANDLE_BAT(, 26702) +HANDLE_BAT(, 26703) +HANDLE_BAT(, 26704) +HANDLE_BAT(, 26705) +HANDLE_BAT(, 26706) +HANDLE_BAT(, 26707) +HANDLE_BAT(, 26708) +HANDLE_BAT(, 26709) +HANDLE_BAT(, 26710) +HANDLE_BAT(, 26711) +HANDLE_BAT(, 26712) +HANDLE_BAT(, 26713) +HANDLE_BAT(, 26714) +HANDLE_BAT(, 26715) +HANDLE_BAT(, 26716) +HANDLE_BAT(, 26717) +HANDLE_BAT(, 26718) +HANDLE_BAT(, 26719) +HANDLE_BAT(, 26720) +HANDLE_BAT(, 26721) +HANDLE_BAT(, 26722) +HANDLE_BAT(, 26723) +HANDLE_BAT(, 26724) +HANDLE_BAT(, 26725) +HANDLE_BAT(, 26726) +HANDLE_BAT(, 26727) +HANDLE_BAT(, 26728) +HANDLE_BAT(, 26729) +HANDLE_BAT(, 26730) +HANDLE_BAT(, 26731) +HANDLE_BAT(, 26732) +HANDLE_BAT(, 26733) +HANDLE_BAT(, 26734) +HANDLE_BAT(, 26735) +HANDLE_BAT(, 26736) +HANDLE_BAT(, 26737) +HANDLE_BAT(, 26738) +HANDLE_BAT(, 26739) +HANDLE_BAT(, 26740) +HANDLE_BAT(, 26741) +HANDLE_BAT(, 26742) +HANDLE_BAT(, 26743) +HANDLE_BAT(, 26744) +HANDLE_BAT(, 26745) +HANDLE_BAT(, 26746) +HANDLE_BAT(, 26747) +HANDLE_BAT(, 26748) +HANDLE_BAT(, 26749) +HANDLE_BAT(, 26750) +HANDLE_BAT(, 26751) +HANDLE_BAT(, 26752) +HANDLE_BAT(, 26753) +HANDLE_BAT(, 26754) +HANDLE_BAT(, 26755) +HANDLE_BAT(, 26756) +HANDLE_BAT(, 26757) +HANDLE_BAT(, 26758) +HANDLE_BAT(, 26759) +HANDLE_BAT(, 26760) +HANDLE_BAT(, 26761) +HANDLE_BAT(, 26762) +HANDLE_BAT(, 26763) +HANDLE_BAT(, 26764) +HANDLE_BAT(, 26765) +HANDLE_BAT(, 26766) +HANDLE_BAT(, 26767) +HANDLE_BAT(, 26768) +HANDLE_BAT(, 26769) +HANDLE_BAT(, 26770) +HANDLE_BAT(, 26771) +HANDLE_BAT(, 26772) +HANDLE_BAT(, 26773) +HANDLE_BAT(, 26774) +HANDLE_BAT(, 26775) +HANDLE_BAT(, 26776) +HANDLE_BAT(, 26777) +HANDLE_BAT(, 26778) +HANDLE_BAT(, 26779) +HANDLE_BAT(, 26780) +HANDLE_BAT(, 26781) +HANDLE_BAT(, 26782) +HANDLE_BAT(, 26783) +HANDLE_BAT(, 26784) +HANDLE_BAT(, 26785) +HANDLE_BAT(, 26786) +HANDLE_BAT(, 26787) +HANDLE_BAT(, 26788) +HANDLE_BAT(, 26789) +HANDLE_BAT(, 26790) +HANDLE_BAT(, 26791) +HANDLE_BAT(, 26792) +HANDLE_BAT(, 26793) +HANDLE_BAT(, 26794) +HANDLE_BAT(, 26795) +HANDLE_BAT(, 26796) +HANDLE_BAT(, 26797) +HANDLE_BAT(, 26798) +HANDLE_BAT(, 26799) +HANDLE_BAT(, 26800) +HANDLE_BAT(, 26801) +HANDLE_BAT(, 26802) +HANDLE_BAT(, 26803) +HANDLE_BAT(, 26804) +HANDLE_BAT(, 26805) +HANDLE_BAT(, 26806) +HANDLE_BAT(, 26807) +HANDLE_BAT(, 26808) +HANDLE_BAT(, 26809) +HANDLE_BAT(, 26810) +HANDLE_BAT(, 26811) +HANDLE_BAT(, 26812) +HANDLE_BAT(, 26813) +HANDLE_BAT(, 26814) +HANDLE_BAT(, 26815) +HANDLE_BAT(, 26816) +HANDLE_BAT(, 26817) +HANDLE_BAT(, 26818) +HANDLE_BAT(, 26819) +HANDLE_BAT(, 26820) +HANDLE_BAT(, 26821) +HANDLE_BAT(, 26822) +HANDLE_BAT(, 26823) +HANDLE_BAT(, 26824) +HANDLE_BAT(, 26825) +HANDLE_BAT(, 26826) +HANDLE_BAT(, 26827) +HANDLE_BAT(, 26828) +HANDLE_BAT(, 26829) +HANDLE_BAT(, 26830) +HANDLE_BAT(, 26831) +HANDLE_BAT(, 26832) +HANDLE_BAT(, 26833) +HANDLE_BAT(, 26834) +HANDLE_BAT(, 26835) +HANDLE_BAT(, 26836) +HANDLE_BAT(, 26837) +HANDLE_BAT(, 26838) +HANDLE_BAT(, 26839) +HANDLE_BAT(, 26840) +HANDLE_BAT(, 26841) +HANDLE_BAT(, 26842) +HANDLE_BAT(, 26843) +HANDLE_BAT(, 26844) +HANDLE_BAT(, 26845) +HANDLE_BAT(, 26846) +HANDLE_BAT(, 26847) +HANDLE_BAT(, 26848) +HANDLE_BAT(, 26849) +HANDLE_BAT(, 26850) +HANDLE_BAT(, 26851) +HANDLE_BAT(, 26852) +HANDLE_BAT(, 26853) +HANDLE_BAT(, 26854) +HANDLE_BAT(, 26855) +HANDLE_BAT(, 26856) +HANDLE_BAT(, 26857) +HANDLE_BAT(, 26858) +HANDLE_BAT(, 26859) +HANDLE_BAT(, 26860) +HANDLE_BAT(, 26861) +HANDLE_BAT(, 26862) +HANDLE_BAT(, 26863) +HANDLE_BAT(, 26864) +HANDLE_BAT(, 26865) +HANDLE_BAT(, 26866) +HANDLE_BAT(, 26867) +HANDLE_BAT(, 26868) +HANDLE_BAT(, 26869) +HANDLE_BAT(, 26870) +HANDLE_BAT(, 26871) +HANDLE_BAT(, 26872) +HANDLE_BAT(, 26873) +HANDLE_BAT(, 26874) +HANDLE_BAT(, 26875) +HANDLE_BAT(, 26876) +HANDLE_BAT(, 26877) +HANDLE_BAT(, 26878) +HANDLE_BAT(, 26879) +HANDLE_BAT(, 26880) +HANDLE_BAT(, 26881) +HANDLE_BAT(, 26882) +HANDLE_BAT(, 26883) +HANDLE_BAT(, 26884) +HANDLE_BAT(, 26885) +HANDLE_BAT(, 26886) +HANDLE_BAT(, 26887) +HANDLE_BAT(, 26888) +HANDLE_BAT(, 26889) +HANDLE_BAT(, 26890) +HANDLE_BAT(, 26891) +HANDLE_BAT(, 26892) +HANDLE_BAT(, 26893) +HANDLE_BAT(, 26894) +HANDLE_BAT(, 26895) +HANDLE_BAT(, 26896) +HANDLE_BAT(, 26897) +HANDLE_BAT(, 26898) +HANDLE_BAT(, 26899) +HANDLE_BAT(, 26900) +HANDLE_BAT(, 26901) +HANDLE_BAT(, 26902) +HANDLE_BAT(, 26903) +HANDLE_BAT(, 26904) +HANDLE_BAT(, 26905) +HANDLE_BAT(, 26906) +HANDLE_BAT(, 26907) +HANDLE_BAT(, 26908) +HANDLE_BAT(, 26909) +HANDLE_BAT(, 26910) +HANDLE_BAT(, 26911) +HANDLE_BAT(, 26912) +HANDLE_BAT(, 26913) +HANDLE_BAT(, 26914) +HANDLE_BAT(, 26915) +HANDLE_BAT(, 26916) +HANDLE_BAT(, 26917) +HANDLE_BAT(, 26918) +HANDLE_BAT(, 26919) +HANDLE_BAT(, 26920) +HANDLE_BAT(, 26921) +HANDLE_BAT(, 26922) +HANDLE_BAT(, 26923) +HANDLE_BAT(, 26924) +HANDLE_BAT(, 26925) +HANDLE_BAT(, 26926) +HANDLE_BAT(, 26927) +HANDLE_BAT(, 26928) +HANDLE_BAT(, 26929) +HANDLE_BAT(, 26930) +HANDLE_BAT(, 26931) +HANDLE_BAT(, 26932) +HANDLE_BAT(, 26933) +HANDLE_BAT(, 26934) +HANDLE_BAT(, 26935) +HANDLE_BAT(, 26936) +HANDLE_BAT(, 26937) +HANDLE_BAT(, 26938) +HANDLE_BAT(, 26939) +HANDLE_BAT(, 26940) +HANDLE_BAT(, 26941) +HANDLE_BAT(, 26942) +HANDLE_BAT(, 26943) +HANDLE_BAT(, 26944) +HANDLE_BAT(, 26945) +HANDLE_BAT(, 26946) +HANDLE_BAT(, 26947) +HANDLE_BAT(, 26948) +HANDLE_BAT(, 26949) +HANDLE_BAT(, 26950) +HANDLE_BAT(, 26951) +HANDLE_BAT(, 26952) +HANDLE_BAT(, 26953) +HANDLE_BAT(, 26954) +HANDLE_BAT(, 26955) +HANDLE_BAT(, 26956) +HANDLE_BAT(, 26957) +HANDLE_BAT(, 26958) +HANDLE_BAT(, 26959) +HANDLE_BAT(, 26960) +HANDLE_BAT(, 26961) +HANDLE_BAT(, 26962) +HANDLE_BAT(, 26963) +HANDLE_BAT(, 26964) +HANDLE_BAT(, 26965) +HANDLE_BAT(, 26966) +HANDLE_BAT(, 26967) +HANDLE_BAT(, 26968) +HANDLE_BAT(, 26969) +HANDLE_BAT(, 26970) +HANDLE_BAT(, 26971) +HANDLE_BAT(, 26972) +HANDLE_BAT(, 26973) +HANDLE_BAT(, 26974) +HANDLE_BAT(, 26975) +HANDLE_BAT(, 26976) +HANDLE_BAT(, 26977) +HANDLE_BAT(, 26978) +HANDLE_BAT(, 26979) +HANDLE_BAT(, 26980) +HANDLE_BAT(, 26981) +HANDLE_BAT(, 26982) +HANDLE_BAT(, 26983) +HANDLE_BAT(, 26984) +HANDLE_BAT(, 26985) +HANDLE_BAT(, 26986) +HANDLE_BAT(, 26987) +HANDLE_BAT(, 26988) +HANDLE_BAT(, 26989) +HANDLE_BAT(, 26990) +HANDLE_BAT(, 26991) +HANDLE_BAT(, 26992) +HANDLE_BAT(, 26993) +HANDLE_BAT(, 26994) +HANDLE_BAT(, 26995) +HANDLE_BAT(, 26996) +HANDLE_BAT(, 26997) +HANDLE_BAT(, 26998) +HANDLE_BAT(, 26999) +HANDLE_BAT(, 27000) +HANDLE_BAT(, 27001) +HANDLE_BAT(, 27002) +HANDLE_BAT(, 27003) +HANDLE_BAT(, 27004) +HANDLE_BAT(, 27005) +HANDLE_BAT(, 27006) +HANDLE_BAT(, 27007) +HANDLE_BAT(, 27008) +HANDLE_BAT(, 27009) +HANDLE_BAT(, 27010) +HANDLE_BAT(, 27011) +HANDLE_BAT(, 27012) +HANDLE_BAT(, 27013) +HANDLE_BAT(, 27014) +HANDLE_BAT(, 27015) +HANDLE_BAT(, 27016) +HANDLE_BAT(, 27017) +HANDLE_BAT(, 27018) +HANDLE_BAT(, 27019) +HANDLE_BAT(, 27020) +HANDLE_BAT(, 27021) +HANDLE_BAT(, 27022) +HANDLE_BAT(, 27023) +HANDLE_BAT(, 27024) +HANDLE_BAT(, 27025) +HANDLE_BAT(, 27026) +HANDLE_BAT(, 27027) +HANDLE_BAT(, 27028) +HANDLE_BAT(, 27029) +HANDLE_BAT(, 27030) +HANDLE_BAT(, 27031) +HANDLE_BAT(, 27032) +HANDLE_BAT(, 27033) +HANDLE_BAT(, 27034) +HANDLE_BAT(, 27035) +HANDLE_BAT(, 27036) +HANDLE_BAT(, 27037) +HANDLE_BAT(, 27038) +HANDLE_BAT(, 27039) +HANDLE_BAT(, 27040) +HANDLE_BAT(, 27041) +HANDLE_BAT(, 27042) +HANDLE_BAT(, 27043) +HANDLE_BAT(, 27044) +HANDLE_BAT(, 27045) +HANDLE_BAT(, 27046) +HANDLE_BAT(, 27047) +HANDLE_BAT(, 27048) +HANDLE_BAT(, 27049) +HANDLE_BAT(, 27050) +HANDLE_BAT(, 27051) +HANDLE_BAT(, 27052) +HANDLE_BAT(, 27053) +HANDLE_BAT(, 27054) +HANDLE_BAT(, 27055) +HANDLE_BAT(, 27056) +HANDLE_BAT(, 27057) +HANDLE_BAT(, 27058) +HANDLE_BAT(, 27059) +HANDLE_BAT(, 27060) +HANDLE_BAT(, 27061) +HANDLE_BAT(, 27062) +HANDLE_BAT(, 27063) +HANDLE_BAT(, 27064) +HANDLE_BAT(, 27065) +HANDLE_BAT(, 27066) +HANDLE_BAT(, 27067) +HANDLE_BAT(, 27068) +HANDLE_BAT(, 27069) +HANDLE_BAT(, 27070) +HANDLE_BAT(, 27071) +HANDLE_BAT(, 27072) +HANDLE_BAT(, 27073) +HANDLE_BAT(, 27074) +HANDLE_BAT(, 27075) +HANDLE_BAT(, 27076) +HANDLE_BAT(, 27077) +HANDLE_BAT(, 27078) +HANDLE_BAT(, 27079) +HANDLE_BAT(, 27080) +HANDLE_BAT(, 27081) +HANDLE_BAT(, 27082) +HANDLE_BAT(, 27083) +HANDLE_BAT(, 27084) +HANDLE_BAT(, 27085) +HANDLE_BAT(, 27086) +HANDLE_BAT(, 27087) +HANDLE_BAT(, 27088) +HANDLE_BAT(, 27089) +HANDLE_BAT(, 27090) +HANDLE_BAT(, 27091) +HANDLE_BAT(, 27092) +HANDLE_BAT(, 27093) +HANDLE_BAT(, 27094) +HANDLE_BAT(, 27095) +HANDLE_BAT(, 27096) +HANDLE_BAT(, 27097) +HANDLE_BAT(, 27098) +HANDLE_BAT(, 27099) +HANDLE_BAT(, 27100) +HANDLE_BAT(, 27101) +HANDLE_BAT(, 27102) +HANDLE_BAT(, 27103) +HANDLE_BAT(, 27104) +HANDLE_BAT(, 27105) +HANDLE_BAT(, 27106) +HANDLE_BAT(, 27107) +HANDLE_BAT(, 27108) +HANDLE_BAT(, 27109) +HANDLE_BAT(, 27110) +HANDLE_BAT(, 27111) +HANDLE_BAT(, 27112) +HANDLE_BAT(, 27113) +HANDLE_BAT(, 27114) +HANDLE_BAT(, 27115) +HANDLE_BAT(, 27116) +HANDLE_BAT(, 27117) +HANDLE_BAT(, 27118) +HANDLE_BAT(, 27119) +HANDLE_BAT(, 27120) +HANDLE_BAT(, 27121) +HANDLE_BAT(, 27122) +HANDLE_BAT(, 27123) +HANDLE_BAT(, 27124) +HANDLE_BAT(, 27125) +HANDLE_BAT(, 27126) +HANDLE_BAT(, 27127) +HANDLE_BAT(, 27128) +HANDLE_BAT(, 27129) +HANDLE_BAT(, 27130) +HANDLE_BAT(, 27131) +HANDLE_BAT(, 27132) +HANDLE_BAT(, 27133) +HANDLE_BAT(, 27134) +HANDLE_BAT(, 27135) +HANDLE_BAT(, 27136) +HANDLE_BAT(, 27137) +HANDLE_BAT(, 27138) +HANDLE_BAT(, 27139) +HANDLE_BAT(, 27140) +HANDLE_BAT(, 27141) +HANDLE_BAT(, 27142) +HANDLE_BAT(, 27143) +HANDLE_BAT(, 27144) +HANDLE_BAT(, 27145) +HANDLE_BAT(, 27146) +HANDLE_BAT(, 27147) +HANDLE_BAT(, 27148) +HANDLE_BAT(, 27149) +HANDLE_BAT(, 27150) +HANDLE_BAT(, 27151) +HANDLE_BAT(, 27152) +HANDLE_BAT(, 27153) +HANDLE_BAT(, 27154) +HANDLE_BAT(, 27155) +HANDLE_BAT(, 27156) +HANDLE_BAT(, 27157) +HANDLE_BAT(, 27158) +HANDLE_BAT(, 27159) +HANDLE_BAT(, 27160) +HANDLE_BAT(, 27161) +HANDLE_BAT(, 27162) +HANDLE_BAT(, 27163) +HANDLE_BAT(, 27164) +HANDLE_BAT(, 27165) +HANDLE_BAT(, 27166) +HANDLE_BAT(, 27167) +HANDLE_BAT(, 27168) +HANDLE_BAT(, 27169) +HANDLE_BAT(, 27170) +HANDLE_BAT(, 27171) +HANDLE_BAT(, 27172) +HANDLE_BAT(, 27173) +HANDLE_BAT(, 27174) +HANDLE_BAT(, 27175) +HANDLE_BAT(, 27176) +HANDLE_BAT(, 27177) +HANDLE_BAT(, 27178) +HANDLE_BAT(, 27179) +HANDLE_BAT(, 27180) +HANDLE_BAT(, 27181) +HANDLE_BAT(, 27182) +HANDLE_BAT(, 27183) +HANDLE_BAT(, 27184) +HANDLE_BAT(, 27185) +HANDLE_BAT(, 27186) +HANDLE_BAT(, 27187) +HANDLE_BAT(, 27188) +HANDLE_BAT(, 27189) +HANDLE_BAT(, 27190) +HANDLE_BAT(, 27191) +HANDLE_BAT(, 27192) +HANDLE_BAT(, 27193) +HANDLE_BAT(, 27194) +HANDLE_BAT(, 27195) +HANDLE_BAT(, 27196) +HANDLE_BAT(, 27197) +HANDLE_BAT(, 27198) +HANDLE_BAT(, 27199) +HANDLE_BAT(, 27200) +HANDLE_BAT(, 27201) +HANDLE_BAT(, 27202) +HANDLE_BAT(, 27203) +HANDLE_BAT(, 27204) +HANDLE_BAT(, 27205) +HANDLE_BAT(, 27206) +HANDLE_BAT(, 27207) +HANDLE_BAT(, 27208) +HANDLE_BAT(, 27209) +HANDLE_BAT(, 27210) +HANDLE_BAT(, 27211) +HANDLE_BAT(, 27212) +HANDLE_BAT(, 27213) +HANDLE_BAT(, 27214) +HANDLE_BAT(, 27215) +HANDLE_BAT(, 27216) +HANDLE_BAT(, 27217) +HANDLE_BAT(, 27218) +HANDLE_BAT(, 27219) +HANDLE_BAT(, 27220) +HANDLE_BAT(, 27221) +HANDLE_BAT(, 27222) +HANDLE_BAT(, 27223) +HANDLE_BAT(, 27224) +HANDLE_BAT(, 27225) +HANDLE_BAT(, 27226) +HANDLE_BAT(, 27227) +HANDLE_BAT(, 27228) +HANDLE_BAT(, 27229) +HANDLE_BAT(, 27230) +HANDLE_BAT(, 27231) +HANDLE_BAT(, 27232) +HANDLE_BAT(, 27233) +HANDLE_BAT(, 27234) +HANDLE_BAT(, 27235) +HANDLE_BAT(, 27236) +HANDLE_BAT(, 27237) +HANDLE_BAT(, 27238) +HANDLE_BAT(, 27239) +HANDLE_BAT(, 27240) +HANDLE_BAT(, 27241) +HANDLE_BAT(, 27242) +HANDLE_BAT(, 27243) +HANDLE_BAT(, 27244) +HANDLE_BAT(, 27245) +HANDLE_BAT(, 27246) +HANDLE_BAT(, 27247) +HANDLE_BAT(, 27248) +HANDLE_BAT(, 27249) +HANDLE_BAT(, 27250) +HANDLE_BAT(, 27251) +HANDLE_BAT(, 27252) +HANDLE_BAT(, 27253) +HANDLE_BAT(, 27254) +HANDLE_BAT(, 27255) +HANDLE_BAT(, 27256) +HANDLE_BAT(, 27257) +HANDLE_BAT(, 27258) +HANDLE_BAT(, 27259) +HANDLE_BAT(, 27260) +HANDLE_BAT(, 27261) +HANDLE_BAT(, 27262) +HANDLE_BAT(, 27263) +HANDLE_BAT(, 27264) +HANDLE_BAT(, 27265) +HANDLE_BAT(, 27266) +HANDLE_BAT(, 27267) +HANDLE_BAT(, 27268) +HANDLE_BAT(, 27269) +HANDLE_BAT(, 27270) +HANDLE_BAT(, 27271) +HANDLE_BAT(, 27272) +HANDLE_BAT(, 27273) +HANDLE_BAT(, 27274) +HANDLE_BAT(, 27275) +HANDLE_BAT(, 27276) +HANDLE_BAT(, 27277) +HANDLE_BAT(, 27278) +HANDLE_BAT(, 27279) +HANDLE_BAT(, 27280) +HANDLE_BAT(, 27281) +HANDLE_BAT(, 27282) +HANDLE_BAT(, 27283) +HANDLE_BAT(, 27284) +HANDLE_BAT(, 27285) +HANDLE_BAT(, 27286) +HANDLE_BAT(, 27287) +HANDLE_BAT(, 27288) +HANDLE_BAT(, 27289) +HANDLE_BAT(, 27290) +HANDLE_BAT(, 27291) +HANDLE_BAT(, 27292) +HANDLE_BAT(, 27293) +HANDLE_BAT(, 27294) +HANDLE_BAT(, 27295) +HANDLE_BAT(, 27296) +HANDLE_BAT(, 27297) +HANDLE_BAT(, 27298) +HANDLE_BAT(, 27299) +HANDLE_BAT(, 27300) +HANDLE_BAT(, 27301) +HANDLE_BAT(, 27302) +HANDLE_BAT(, 27303) +HANDLE_BAT(, 27304) +HANDLE_BAT(, 27305) +HANDLE_BAT(, 27306) +HANDLE_BAT(, 27307) +HANDLE_BAT(, 27308) +HANDLE_BAT(, 27309) +HANDLE_BAT(, 27310) +HANDLE_BAT(, 27311) +HANDLE_BAT(, 27312) +HANDLE_BAT(, 27313) +HANDLE_BAT(, 27314) +HANDLE_BAT(, 27315) +HANDLE_BAT(, 27316) +HANDLE_BAT(, 27317) +HANDLE_BAT(, 27318) +HANDLE_BAT(, 27319) +HANDLE_BAT(, 27320) +HANDLE_BAT(, 27321) +HANDLE_BAT(, 27322) +HANDLE_BAT(, 27323) +HANDLE_BAT(, 27324) +HANDLE_BAT(, 27325) +HANDLE_BAT(, 27326) +HANDLE_BAT(, 27327) +HANDLE_BAT(, 27328) +HANDLE_BAT(, 27329) +HANDLE_BAT(, 27330) +HANDLE_BAT(, 27331) +HANDLE_BAT(, 27332) +HANDLE_BAT(, 27333) +HANDLE_BAT(, 27334) +HANDLE_BAT(, 27335) +HANDLE_BAT(, 27336) +HANDLE_BAT(, 27337) +HANDLE_BAT(, 27338) +HANDLE_BAT(, 27339) +HANDLE_BAT(, 27340) +HANDLE_BAT(, 27341) +HANDLE_BAT(, 27342) +HANDLE_BAT(, 27343) +HANDLE_BAT(, 27344) +HANDLE_BAT(, 27345) +HANDLE_BAT(, 27346) +HANDLE_BAT(, 27347) +HANDLE_BAT(, 27348) +HANDLE_BAT(, 27349) +HANDLE_BAT(, 27350) +HANDLE_BAT(, 27351) +HANDLE_BAT(, 27352) +HANDLE_BAT(, 27353) +HANDLE_BAT(, 27354) +HANDLE_BAT(, 27355) +HANDLE_BAT(, 27356) +HANDLE_BAT(, 27357) +HANDLE_BAT(, 27358) +HANDLE_BAT(, 27359) +HANDLE_BAT(, 27360) +HANDLE_BAT(, 27361) +HANDLE_BAT(, 27362) +HANDLE_BAT(, 27363) +HANDLE_BAT(, 27364) +HANDLE_BAT(, 27365) +HANDLE_BAT(, 27366) +HANDLE_BAT(, 27367) +HANDLE_BAT(, 27368) +HANDLE_BAT(, 27369) +HANDLE_BAT(, 27370) +HANDLE_BAT(, 27371) +HANDLE_BAT(, 27372) +HANDLE_BAT(, 27373) +HANDLE_BAT(, 27374) +HANDLE_BAT(, 27375) +HANDLE_BAT(, 27376) +HANDLE_BAT(, 27377) +HANDLE_BAT(, 27378) +HANDLE_BAT(, 27379) +HANDLE_BAT(, 27380) +HANDLE_BAT(, 27381) +HANDLE_BAT(, 27382) +HANDLE_BAT(, 27383) +HANDLE_BAT(, 27384) +HANDLE_BAT(, 27385) +HANDLE_BAT(, 27386) +HANDLE_BAT(, 27387) +HANDLE_BAT(, 27388) +HANDLE_BAT(, 27389) +HANDLE_BAT(, 27390) +HANDLE_BAT(, 27391) +HANDLE_BAT(, 27392) +HANDLE_BAT(, 27393) +HANDLE_BAT(, 27394) +HANDLE_BAT(, 27395) +HANDLE_BAT(, 27396) +HANDLE_BAT(, 27397) +HANDLE_BAT(, 27398) +HANDLE_BAT(, 27399) +HANDLE_BAT(, 27400) +HANDLE_BAT(, 27401) +HANDLE_BAT(, 27402) +HANDLE_BAT(, 27403) +HANDLE_BAT(, 27404) +HANDLE_BAT(, 27405) +HANDLE_BAT(, 27406) +HANDLE_BAT(, 27407) +HANDLE_BAT(, 27408) +HANDLE_BAT(, 27409) +HANDLE_BAT(, 27410) +HANDLE_BAT(, 27411) +HANDLE_BAT(, 27412) +HANDLE_BAT(, 27413) +HANDLE_BAT(, 27414) +HANDLE_BAT(, 27415) +HANDLE_BAT(, 27416) +HANDLE_BAT(, 27417) +HANDLE_BAT(, 27418) +HANDLE_BAT(, 27419) +HANDLE_BAT(, 27420) +HANDLE_BAT(, 27421) +HANDLE_BAT(, 27422) +HANDLE_BAT(, 27423) +HANDLE_BAT(, 27424) +HANDLE_BAT(, 27425) +HANDLE_BAT(, 27426) +HANDLE_BAT(, 27427) +HANDLE_BAT(, 27428) +HANDLE_BAT(, 27429) +HANDLE_BAT(, 27430) +HANDLE_BAT(, 27431) +HANDLE_BAT(, 27432) +HANDLE_BAT(, 27433) +HANDLE_BAT(, 27434) +HANDLE_BAT(, 27435) +HANDLE_BAT(, 27436) +HANDLE_BAT(, 27437) +HANDLE_BAT(, 27438) +HANDLE_BAT(, 27439) +HANDLE_BAT(, 27440) +HANDLE_BAT(, 27441) +HANDLE_BAT(, 27442) +HANDLE_BAT(, 27443) +HANDLE_BAT(, 27444) +HANDLE_BAT(, 27445) +HANDLE_BAT(, 27446) +HANDLE_BAT(, 27447) +HANDLE_BAT(, 27448) +HANDLE_BAT(, 27449) +HANDLE_BAT(, 27450) +HANDLE_BAT(, 27451) +HANDLE_BAT(, 27452) +HANDLE_BAT(, 27453) +HANDLE_BAT(, 27454) +HANDLE_BAT(, 27455) +HANDLE_BAT(, 27456) +HANDLE_BAT(, 27457) +HANDLE_BAT(, 27458) +HANDLE_BAT(, 27459) +HANDLE_BAT(, 27460) +HANDLE_BAT(, 27461) +HANDLE_BAT(, 27462) +HANDLE_BAT(, 27463) +HANDLE_BAT(, 27464) +HANDLE_BAT(, 27465) +HANDLE_BAT(, 27466) +HANDLE_BAT(, 27467) +HANDLE_BAT(, 27468) +HANDLE_BAT(, 27469) +HANDLE_BAT(, 27470) +HANDLE_BAT(, 27471) +HANDLE_BAT(, 27472) +HANDLE_BAT(, 27473) +HANDLE_BAT(, 27474) +HANDLE_BAT(, 27475) +HANDLE_BAT(, 27476) +HANDLE_BAT(, 27477) +HANDLE_BAT(, 27478) +HANDLE_BAT(, 27479) +HANDLE_BAT(, 27480) +HANDLE_BAT(, 27481) +HANDLE_BAT(, 27482) +HANDLE_BAT(, 27483) +HANDLE_BAT(, 27484) +HANDLE_BAT(, 27485) +HANDLE_BAT(, 27486) +HANDLE_BAT(, 27487) +HANDLE_BAT(, 27488) +HANDLE_BAT(, 27489) +HANDLE_BAT(, 27490) +HANDLE_BAT(, 27491) +HANDLE_BAT(, 27492) +HANDLE_BAT(, 27493) +HANDLE_BAT(, 27494) +HANDLE_BAT(, 27495) +HANDLE_BAT(, 27496) +HANDLE_BAT(, 27497) +HANDLE_BAT(, 27498) +HANDLE_BAT(, 27499) +HANDLE_BAT(, 27500) +HANDLE_BAT(, 27501) +HANDLE_BAT(, 27502) +HANDLE_BAT(, 27503) +HANDLE_BAT(, 27504) +HANDLE_BAT(, 27505) +HANDLE_BAT(, 27506) +HANDLE_BAT(, 27507) +HANDLE_BAT(, 27508) +HANDLE_BAT(, 27509) +HANDLE_BAT(, 27510) +HANDLE_BAT(, 27511) +HANDLE_BAT(, 27512) +HANDLE_BAT(, 27513) +HANDLE_BAT(, 27514) +HANDLE_BAT(, 27515) +HANDLE_BAT(, 27516) +HANDLE_BAT(, 27517) +HANDLE_BAT(, 27518) +HANDLE_BAT(, 27519) +HANDLE_BAT(, 27520) +HANDLE_BAT(, 27521) +HANDLE_BAT(, 27522) +HANDLE_BAT(, 27523) +HANDLE_BAT(, 27524) +HANDLE_BAT(, 27525) +HANDLE_BAT(, 27526) +HANDLE_BAT(, 27527) +HANDLE_BAT(, 27528) +HANDLE_BAT(, 27529) +HANDLE_BAT(, 27530) +HANDLE_BAT(, 27531) +HANDLE_BAT(, 27532) +HANDLE_BAT(, 27533) +HANDLE_BAT(, 27534) +HANDLE_BAT(, 27535) +HANDLE_BAT(, 27536) +HANDLE_BAT(, 27537) +HANDLE_BAT(, 27538) +HANDLE_BAT(, 27539) +HANDLE_BAT(, 27540) +HANDLE_BAT(, 27541) +HANDLE_BAT(, 27542) +HANDLE_BAT(, 27543) +HANDLE_BAT(, 27544) +HANDLE_BAT(, 27545) +HANDLE_BAT(, 27546) +HANDLE_BAT(, 27547) +HANDLE_BAT(, 27548) +HANDLE_BAT(, 27549) +HANDLE_BAT(, 27550) +HANDLE_BAT(, 27551) +HANDLE_BAT(, 27552) +HANDLE_BAT(, 27553) +HANDLE_BAT(, 27554) +HANDLE_BAT(, 27555) +HANDLE_BAT(, 27556) +HANDLE_BAT(, 27557) +HANDLE_BAT(, 27558) +HANDLE_BAT(, 27559) +HANDLE_BAT(, 27560) +HANDLE_BAT(, 27561) +HANDLE_BAT(, 27562) +HANDLE_BAT(, 27563) +HANDLE_BAT(, 27564) +HANDLE_BAT(, 27565) +HANDLE_BAT(, 27566) +HANDLE_BAT(, 27567) +HANDLE_BAT(, 27568) +HANDLE_BAT(, 27569) +HANDLE_BAT(, 27570) +HANDLE_BAT(, 27571) +HANDLE_BAT(, 27572) +HANDLE_BAT(, 27573) +HANDLE_BAT(, 27574) +HANDLE_BAT(, 27575) +HANDLE_BAT(, 27576) +HANDLE_BAT(, 27577) +HANDLE_BAT(, 27578) +HANDLE_BAT(, 27579) +HANDLE_BAT(, 27580) +HANDLE_BAT(, 27581) +HANDLE_BAT(, 27582) +HANDLE_BAT(, 27583) +HANDLE_BAT(, 27584) +HANDLE_BAT(, 27585) +HANDLE_BAT(, 27586) +HANDLE_BAT(, 27587) +HANDLE_BAT(, 27588) +HANDLE_BAT(, 27589) +HANDLE_BAT(, 27590) +HANDLE_BAT(, 27591) +HANDLE_BAT(, 27592) +HANDLE_BAT(, 27593) +HANDLE_BAT(, 27594) +HANDLE_BAT(, 27595) +HANDLE_BAT(, 27596) +HANDLE_BAT(, 27597) +HANDLE_BAT(, 27598) +HANDLE_BAT(, 27599) +HANDLE_BAT(, 27600) +HANDLE_BAT(, 27601) +HANDLE_BAT(, 27602) +HANDLE_BAT(, 27603) +HANDLE_BAT(, 27604) +HANDLE_BAT(, 27605) +HANDLE_BAT(, 27606) +HANDLE_BAT(, 27607) +HANDLE_BAT(, 27608) +HANDLE_BAT(, 27609) +HANDLE_BAT(, 27610) +HANDLE_BAT(, 27611) +HANDLE_BAT(, 27612) +HANDLE_BAT(, 27613) +HANDLE_BAT(, 27614) +HANDLE_BAT(, 27615) +HANDLE_BAT(, 27616) +HANDLE_BAT(, 27617) +HANDLE_BAT(, 27618) +HANDLE_BAT(, 27619) +HANDLE_BAT(, 27620) +HANDLE_BAT(, 27621) +HANDLE_BAT(, 27622) +HANDLE_BAT(, 27623) +HANDLE_BAT(, 27624) +HANDLE_BAT(, 27625) +HANDLE_BAT(, 27626) +HANDLE_BAT(, 27627) +HANDLE_BAT(, 27628) +HANDLE_BAT(, 27629) +HANDLE_BAT(, 27630) +HANDLE_BAT(, 27631) +HANDLE_BAT(, 27632) +HANDLE_BAT(, 27633) +HANDLE_BAT(, 27634) +HANDLE_BAT(, 27635) +HANDLE_BAT(, 27636) +HANDLE_BAT(, 27637) +HANDLE_BAT(, 27638) +HANDLE_BAT(, 27639) +HANDLE_BAT(, 27640) +HANDLE_BAT(, 27641) +HANDLE_BAT(, 27642) +HANDLE_BAT(, 27643) +HANDLE_BAT(, 27644) +HANDLE_BAT(, 27645) +HANDLE_BAT(, 27646) +HANDLE_BAT(, 27647) +HANDLE_BAT(, 27648) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 26625) +HANDLE_BAT(APINT_TYPE_PREFIX, 26626) +HANDLE_BAT(APINT_TYPE_PREFIX, 26627) +HANDLE_BAT(APINT_TYPE_PREFIX, 26628) +HANDLE_BAT(APINT_TYPE_PREFIX, 26629) +HANDLE_BAT(APINT_TYPE_PREFIX, 26630) +HANDLE_BAT(APINT_TYPE_PREFIX, 26631) +HANDLE_BAT(APINT_TYPE_PREFIX, 26632) +HANDLE_BAT(APINT_TYPE_PREFIX, 26633) +HANDLE_BAT(APINT_TYPE_PREFIX, 26634) +HANDLE_BAT(APINT_TYPE_PREFIX, 26635) +HANDLE_BAT(APINT_TYPE_PREFIX, 26636) +HANDLE_BAT(APINT_TYPE_PREFIX, 26637) +HANDLE_BAT(APINT_TYPE_PREFIX, 26638) +HANDLE_BAT(APINT_TYPE_PREFIX, 26639) +HANDLE_BAT(APINT_TYPE_PREFIX, 26640) +HANDLE_BAT(APINT_TYPE_PREFIX, 26641) +HANDLE_BAT(APINT_TYPE_PREFIX, 26642) +HANDLE_BAT(APINT_TYPE_PREFIX, 26643) +HANDLE_BAT(APINT_TYPE_PREFIX, 26644) +HANDLE_BAT(APINT_TYPE_PREFIX, 26645) +HANDLE_BAT(APINT_TYPE_PREFIX, 26646) +HANDLE_BAT(APINT_TYPE_PREFIX, 26647) +HANDLE_BAT(APINT_TYPE_PREFIX, 26648) +HANDLE_BAT(APINT_TYPE_PREFIX, 26649) +HANDLE_BAT(APINT_TYPE_PREFIX, 26650) +HANDLE_BAT(APINT_TYPE_PREFIX, 26651) +HANDLE_BAT(APINT_TYPE_PREFIX, 26652) +HANDLE_BAT(APINT_TYPE_PREFIX, 26653) +HANDLE_BAT(APINT_TYPE_PREFIX, 26654) +HANDLE_BAT(APINT_TYPE_PREFIX, 26655) +HANDLE_BAT(APINT_TYPE_PREFIX, 26656) +HANDLE_BAT(APINT_TYPE_PREFIX, 26657) +HANDLE_BAT(APINT_TYPE_PREFIX, 26658) +HANDLE_BAT(APINT_TYPE_PREFIX, 26659) +HANDLE_BAT(APINT_TYPE_PREFIX, 26660) +HANDLE_BAT(APINT_TYPE_PREFIX, 26661) +HANDLE_BAT(APINT_TYPE_PREFIX, 26662) +HANDLE_BAT(APINT_TYPE_PREFIX, 26663) +HANDLE_BAT(APINT_TYPE_PREFIX, 26664) +HANDLE_BAT(APINT_TYPE_PREFIX, 26665) +HANDLE_BAT(APINT_TYPE_PREFIX, 26666) +HANDLE_BAT(APINT_TYPE_PREFIX, 26667) +HANDLE_BAT(APINT_TYPE_PREFIX, 26668) +HANDLE_BAT(APINT_TYPE_PREFIX, 26669) +HANDLE_BAT(APINT_TYPE_PREFIX, 26670) +HANDLE_BAT(APINT_TYPE_PREFIX, 26671) +HANDLE_BAT(APINT_TYPE_PREFIX, 26672) +HANDLE_BAT(APINT_TYPE_PREFIX, 26673) +HANDLE_BAT(APINT_TYPE_PREFIX, 26674) +HANDLE_BAT(APINT_TYPE_PREFIX, 26675) +HANDLE_BAT(APINT_TYPE_PREFIX, 26676) +HANDLE_BAT(APINT_TYPE_PREFIX, 26677) +HANDLE_BAT(APINT_TYPE_PREFIX, 26678) +HANDLE_BAT(APINT_TYPE_PREFIX, 26679) +HANDLE_BAT(APINT_TYPE_PREFIX, 26680) +HANDLE_BAT(APINT_TYPE_PREFIX, 26681) +HANDLE_BAT(APINT_TYPE_PREFIX, 26682) +HANDLE_BAT(APINT_TYPE_PREFIX, 26683) +HANDLE_BAT(APINT_TYPE_PREFIX, 26684) +HANDLE_BAT(APINT_TYPE_PREFIX, 26685) +HANDLE_BAT(APINT_TYPE_PREFIX, 26686) +HANDLE_BAT(APINT_TYPE_PREFIX, 26687) +HANDLE_BAT(APINT_TYPE_PREFIX, 26688) +HANDLE_BAT(APINT_TYPE_PREFIX, 26689) +HANDLE_BAT(APINT_TYPE_PREFIX, 26690) +HANDLE_BAT(APINT_TYPE_PREFIX, 26691) +HANDLE_BAT(APINT_TYPE_PREFIX, 26692) +HANDLE_BAT(APINT_TYPE_PREFIX, 26693) +HANDLE_BAT(APINT_TYPE_PREFIX, 26694) +HANDLE_BAT(APINT_TYPE_PREFIX, 26695) +HANDLE_BAT(APINT_TYPE_PREFIX, 26696) +HANDLE_BAT(APINT_TYPE_PREFIX, 26697) +HANDLE_BAT(APINT_TYPE_PREFIX, 26698) +HANDLE_BAT(APINT_TYPE_PREFIX, 26699) +HANDLE_BAT(APINT_TYPE_PREFIX, 26700) +HANDLE_BAT(APINT_TYPE_PREFIX, 26701) +HANDLE_BAT(APINT_TYPE_PREFIX, 26702) +HANDLE_BAT(APINT_TYPE_PREFIX, 26703) +HANDLE_BAT(APINT_TYPE_PREFIX, 26704) +HANDLE_BAT(APINT_TYPE_PREFIX, 26705) +HANDLE_BAT(APINT_TYPE_PREFIX, 26706) +HANDLE_BAT(APINT_TYPE_PREFIX, 26707) +HANDLE_BAT(APINT_TYPE_PREFIX, 26708) +HANDLE_BAT(APINT_TYPE_PREFIX, 26709) +HANDLE_BAT(APINT_TYPE_PREFIX, 26710) +HANDLE_BAT(APINT_TYPE_PREFIX, 26711) +HANDLE_BAT(APINT_TYPE_PREFIX, 26712) +HANDLE_BAT(APINT_TYPE_PREFIX, 26713) +HANDLE_BAT(APINT_TYPE_PREFIX, 26714) +HANDLE_BAT(APINT_TYPE_PREFIX, 26715) +HANDLE_BAT(APINT_TYPE_PREFIX, 26716) +HANDLE_BAT(APINT_TYPE_PREFIX, 26717) +HANDLE_BAT(APINT_TYPE_PREFIX, 26718) +HANDLE_BAT(APINT_TYPE_PREFIX, 26719) +HANDLE_BAT(APINT_TYPE_PREFIX, 26720) +HANDLE_BAT(APINT_TYPE_PREFIX, 26721) +HANDLE_BAT(APINT_TYPE_PREFIX, 26722) +HANDLE_BAT(APINT_TYPE_PREFIX, 26723) +HANDLE_BAT(APINT_TYPE_PREFIX, 26724) +HANDLE_BAT(APINT_TYPE_PREFIX, 26725) +HANDLE_BAT(APINT_TYPE_PREFIX, 26726) +HANDLE_BAT(APINT_TYPE_PREFIX, 26727) +HANDLE_BAT(APINT_TYPE_PREFIX, 26728) +HANDLE_BAT(APINT_TYPE_PREFIX, 26729) +HANDLE_BAT(APINT_TYPE_PREFIX, 26730) +HANDLE_BAT(APINT_TYPE_PREFIX, 26731) +HANDLE_BAT(APINT_TYPE_PREFIX, 26732) +HANDLE_BAT(APINT_TYPE_PREFIX, 26733) +HANDLE_BAT(APINT_TYPE_PREFIX, 26734) +HANDLE_BAT(APINT_TYPE_PREFIX, 26735) +HANDLE_BAT(APINT_TYPE_PREFIX, 26736) +HANDLE_BAT(APINT_TYPE_PREFIX, 26737) +HANDLE_BAT(APINT_TYPE_PREFIX, 26738) +HANDLE_BAT(APINT_TYPE_PREFIX, 26739) +HANDLE_BAT(APINT_TYPE_PREFIX, 26740) +HANDLE_BAT(APINT_TYPE_PREFIX, 26741) +HANDLE_BAT(APINT_TYPE_PREFIX, 26742) +HANDLE_BAT(APINT_TYPE_PREFIX, 26743) +HANDLE_BAT(APINT_TYPE_PREFIX, 26744) +HANDLE_BAT(APINT_TYPE_PREFIX, 26745) +HANDLE_BAT(APINT_TYPE_PREFIX, 26746) +HANDLE_BAT(APINT_TYPE_PREFIX, 26747) +HANDLE_BAT(APINT_TYPE_PREFIX, 26748) +HANDLE_BAT(APINT_TYPE_PREFIX, 26749) +HANDLE_BAT(APINT_TYPE_PREFIX, 26750) +HANDLE_BAT(APINT_TYPE_PREFIX, 26751) +HANDLE_BAT(APINT_TYPE_PREFIX, 26752) +HANDLE_BAT(APINT_TYPE_PREFIX, 26753) +HANDLE_BAT(APINT_TYPE_PREFIX, 26754) +HANDLE_BAT(APINT_TYPE_PREFIX, 26755) +HANDLE_BAT(APINT_TYPE_PREFIX, 26756) +HANDLE_BAT(APINT_TYPE_PREFIX, 26757) +HANDLE_BAT(APINT_TYPE_PREFIX, 26758) +HANDLE_BAT(APINT_TYPE_PREFIX, 26759) +HANDLE_BAT(APINT_TYPE_PREFIX, 26760) +HANDLE_BAT(APINT_TYPE_PREFIX, 26761) +HANDLE_BAT(APINT_TYPE_PREFIX, 26762) +HANDLE_BAT(APINT_TYPE_PREFIX, 26763) +HANDLE_BAT(APINT_TYPE_PREFIX, 26764) +HANDLE_BAT(APINT_TYPE_PREFIX, 26765) +HANDLE_BAT(APINT_TYPE_PREFIX, 26766) +HANDLE_BAT(APINT_TYPE_PREFIX, 26767) +HANDLE_BAT(APINT_TYPE_PREFIX, 26768) +HANDLE_BAT(APINT_TYPE_PREFIX, 26769) +HANDLE_BAT(APINT_TYPE_PREFIX, 26770) +HANDLE_BAT(APINT_TYPE_PREFIX, 26771) +HANDLE_BAT(APINT_TYPE_PREFIX, 26772) +HANDLE_BAT(APINT_TYPE_PREFIX, 26773) +HANDLE_BAT(APINT_TYPE_PREFIX, 26774) +HANDLE_BAT(APINT_TYPE_PREFIX, 26775) +HANDLE_BAT(APINT_TYPE_PREFIX, 26776) +HANDLE_BAT(APINT_TYPE_PREFIX, 26777) +HANDLE_BAT(APINT_TYPE_PREFIX, 26778) +HANDLE_BAT(APINT_TYPE_PREFIX, 26779) +HANDLE_BAT(APINT_TYPE_PREFIX, 26780) +HANDLE_BAT(APINT_TYPE_PREFIX, 26781) +HANDLE_BAT(APINT_TYPE_PREFIX, 26782) +HANDLE_BAT(APINT_TYPE_PREFIX, 26783) +HANDLE_BAT(APINT_TYPE_PREFIX, 26784) +HANDLE_BAT(APINT_TYPE_PREFIX, 26785) +HANDLE_BAT(APINT_TYPE_PREFIX, 26786) +HANDLE_BAT(APINT_TYPE_PREFIX, 26787) +HANDLE_BAT(APINT_TYPE_PREFIX, 26788) +HANDLE_BAT(APINT_TYPE_PREFIX, 26789) +HANDLE_BAT(APINT_TYPE_PREFIX, 26790) +HANDLE_BAT(APINT_TYPE_PREFIX, 26791) +HANDLE_BAT(APINT_TYPE_PREFIX, 26792) +HANDLE_BAT(APINT_TYPE_PREFIX, 26793) +HANDLE_BAT(APINT_TYPE_PREFIX, 26794) +HANDLE_BAT(APINT_TYPE_PREFIX, 26795) +HANDLE_BAT(APINT_TYPE_PREFIX, 26796) +HANDLE_BAT(APINT_TYPE_PREFIX, 26797) +HANDLE_BAT(APINT_TYPE_PREFIX, 26798) +HANDLE_BAT(APINT_TYPE_PREFIX, 26799) +HANDLE_BAT(APINT_TYPE_PREFIX, 26800) +HANDLE_BAT(APINT_TYPE_PREFIX, 26801) +HANDLE_BAT(APINT_TYPE_PREFIX, 26802) +HANDLE_BAT(APINT_TYPE_PREFIX, 26803) +HANDLE_BAT(APINT_TYPE_PREFIX, 26804) +HANDLE_BAT(APINT_TYPE_PREFIX, 26805) +HANDLE_BAT(APINT_TYPE_PREFIX, 26806) +HANDLE_BAT(APINT_TYPE_PREFIX, 26807) +HANDLE_BAT(APINT_TYPE_PREFIX, 26808) +HANDLE_BAT(APINT_TYPE_PREFIX, 26809) +HANDLE_BAT(APINT_TYPE_PREFIX, 26810) +HANDLE_BAT(APINT_TYPE_PREFIX, 26811) +HANDLE_BAT(APINT_TYPE_PREFIX, 26812) +HANDLE_BAT(APINT_TYPE_PREFIX, 26813) +HANDLE_BAT(APINT_TYPE_PREFIX, 26814) +HANDLE_BAT(APINT_TYPE_PREFIX, 26815) +HANDLE_BAT(APINT_TYPE_PREFIX, 26816) +HANDLE_BAT(APINT_TYPE_PREFIX, 26817) +HANDLE_BAT(APINT_TYPE_PREFIX, 26818) +HANDLE_BAT(APINT_TYPE_PREFIX, 26819) +HANDLE_BAT(APINT_TYPE_PREFIX, 26820) +HANDLE_BAT(APINT_TYPE_PREFIX, 26821) +HANDLE_BAT(APINT_TYPE_PREFIX, 26822) +HANDLE_BAT(APINT_TYPE_PREFIX, 26823) +HANDLE_BAT(APINT_TYPE_PREFIX, 26824) +HANDLE_BAT(APINT_TYPE_PREFIX, 26825) +HANDLE_BAT(APINT_TYPE_PREFIX, 26826) +HANDLE_BAT(APINT_TYPE_PREFIX, 26827) +HANDLE_BAT(APINT_TYPE_PREFIX, 26828) +HANDLE_BAT(APINT_TYPE_PREFIX, 26829) +HANDLE_BAT(APINT_TYPE_PREFIX, 26830) +HANDLE_BAT(APINT_TYPE_PREFIX, 26831) +HANDLE_BAT(APINT_TYPE_PREFIX, 26832) +HANDLE_BAT(APINT_TYPE_PREFIX, 26833) +HANDLE_BAT(APINT_TYPE_PREFIX, 26834) +HANDLE_BAT(APINT_TYPE_PREFIX, 26835) +HANDLE_BAT(APINT_TYPE_PREFIX, 26836) +HANDLE_BAT(APINT_TYPE_PREFIX, 26837) +HANDLE_BAT(APINT_TYPE_PREFIX, 26838) +HANDLE_BAT(APINT_TYPE_PREFIX, 26839) +HANDLE_BAT(APINT_TYPE_PREFIX, 26840) +HANDLE_BAT(APINT_TYPE_PREFIX, 26841) +HANDLE_BAT(APINT_TYPE_PREFIX, 26842) +HANDLE_BAT(APINT_TYPE_PREFIX, 26843) +HANDLE_BAT(APINT_TYPE_PREFIX, 26844) +HANDLE_BAT(APINT_TYPE_PREFIX, 26845) +HANDLE_BAT(APINT_TYPE_PREFIX, 26846) +HANDLE_BAT(APINT_TYPE_PREFIX, 26847) +HANDLE_BAT(APINT_TYPE_PREFIX, 26848) +HANDLE_BAT(APINT_TYPE_PREFIX, 26849) +HANDLE_BAT(APINT_TYPE_PREFIX, 26850) +HANDLE_BAT(APINT_TYPE_PREFIX, 26851) +HANDLE_BAT(APINT_TYPE_PREFIX, 26852) +HANDLE_BAT(APINT_TYPE_PREFIX, 26853) +HANDLE_BAT(APINT_TYPE_PREFIX, 26854) +HANDLE_BAT(APINT_TYPE_PREFIX, 26855) +HANDLE_BAT(APINT_TYPE_PREFIX, 26856) +HANDLE_BAT(APINT_TYPE_PREFIX, 26857) +HANDLE_BAT(APINT_TYPE_PREFIX, 26858) +HANDLE_BAT(APINT_TYPE_PREFIX, 26859) +HANDLE_BAT(APINT_TYPE_PREFIX, 26860) +HANDLE_BAT(APINT_TYPE_PREFIX, 26861) +HANDLE_BAT(APINT_TYPE_PREFIX, 26862) +HANDLE_BAT(APINT_TYPE_PREFIX, 26863) +HANDLE_BAT(APINT_TYPE_PREFIX, 26864) +HANDLE_BAT(APINT_TYPE_PREFIX, 26865) +HANDLE_BAT(APINT_TYPE_PREFIX, 26866) +HANDLE_BAT(APINT_TYPE_PREFIX, 26867) +HANDLE_BAT(APINT_TYPE_PREFIX, 26868) +HANDLE_BAT(APINT_TYPE_PREFIX, 26869) +HANDLE_BAT(APINT_TYPE_PREFIX, 26870) +HANDLE_BAT(APINT_TYPE_PREFIX, 26871) +HANDLE_BAT(APINT_TYPE_PREFIX, 26872) +HANDLE_BAT(APINT_TYPE_PREFIX, 26873) +HANDLE_BAT(APINT_TYPE_PREFIX, 26874) +HANDLE_BAT(APINT_TYPE_PREFIX, 26875) +HANDLE_BAT(APINT_TYPE_PREFIX, 26876) +HANDLE_BAT(APINT_TYPE_PREFIX, 26877) +HANDLE_BAT(APINT_TYPE_PREFIX, 26878) +HANDLE_BAT(APINT_TYPE_PREFIX, 26879) +HANDLE_BAT(APINT_TYPE_PREFIX, 26880) +HANDLE_BAT(APINT_TYPE_PREFIX, 26881) +HANDLE_BAT(APINT_TYPE_PREFIX, 26882) +HANDLE_BAT(APINT_TYPE_PREFIX, 26883) +HANDLE_BAT(APINT_TYPE_PREFIX, 26884) +HANDLE_BAT(APINT_TYPE_PREFIX, 26885) +HANDLE_BAT(APINT_TYPE_PREFIX, 26886) +HANDLE_BAT(APINT_TYPE_PREFIX, 26887) +HANDLE_BAT(APINT_TYPE_PREFIX, 26888) +HANDLE_BAT(APINT_TYPE_PREFIX, 26889) +HANDLE_BAT(APINT_TYPE_PREFIX, 26890) +HANDLE_BAT(APINT_TYPE_PREFIX, 26891) +HANDLE_BAT(APINT_TYPE_PREFIX, 26892) +HANDLE_BAT(APINT_TYPE_PREFIX, 26893) +HANDLE_BAT(APINT_TYPE_PREFIX, 26894) +HANDLE_BAT(APINT_TYPE_PREFIX, 26895) +HANDLE_BAT(APINT_TYPE_PREFIX, 26896) +HANDLE_BAT(APINT_TYPE_PREFIX, 26897) +HANDLE_BAT(APINT_TYPE_PREFIX, 26898) +HANDLE_BAT(APINT_TYPE_PREFIX, 26899) +HANDLE_BAT(APINT_TYPE_PREFIX, 26900) +HANDLE_BAT(APINT_TYPE_PREFIX, 26901) +HANDLE_BAT(APINT_TYPE_PREFIX, 26902) +HANDLE_BAT(APINT_TYPE_PREFIX, 26903) +HANDLE_BAT(APINT_TYPE_PREFIX, 26904) +HANDLE_BAT(APINT_TYPE_PREFIX, 26905) +HANDLE_BAT(APINT_TYPE_PREFIX, 26906) +HANDLE_BAT(APINT_TYPE_PREFIX, 26907) +HANDLE_BAT(APINT_TYPE_PREFIX, 26908) +HANDLE_BAT(APINT_TYPE_PREFIX, 26909) +HANDLE_BAT(APINT_TYPE_PREFIX, 26910) +HANDLE_BAT(APINT_TYPE_PREFIX, 26911) +HANDLE_BAT(APINT_TYPE_PREFIX, 26912) +HANDLE_BAT(APINT_TYPE_PREFIX, 26913) +HANDLE_BAT(APINT_TYPE_PREFIX, 26914) +HANDLE_BAT(APINT_TYPE_PREFIX, 26915) +HANDLE_BAT(APINT_TYPE_PREFIX, 26916) +HANDLE_BAT(APINT_TYPE_PREFIX, 26917) +HANDLE_BAT(APINT_TYPE_PREFIX, 26918) +HANDLE_BAT(APINT_TYPE_PREFIX, 26919) +HANDLE_BAT(APINT_TYPE_PREFIX, 26920) +HANDLE_BAT(APINT_TYPE_PREFIX, 26921) +HANDLE_BAT(APINT_TYPE_PREFIX, 26922) +HANDLE_BAT(APINT_TYPE_PREFIX, 26923) +HANDLE_BAT(APINT_TYPE_PREFIX, 26924) +HANDLE_BAT(APINT_TYPE_PREFIX, 26925) +HANDLE_BAT(APINT_TYPE_PREFIX, 26926) +HANDLE_BAT(APINT_TYPE_PREFIX, 26927) +HANDLE_BAT(APINT_TYPE_PREFIX, 26928) +HANDLE_BAT(APINT_TYPE_PREFIX, 26929) +HANDLE_BAT(APINT_TYPE_PREFIX, 26930) +HANDLE_BAT(APINT_TYPE_PREFIX, 26931) +HANDLE_BAT(APINT_TYPE_PREFIX, 26932) +HANDLE_BAT(APINT_TYPE_PREFIX, 26933) +HANDLE_BAT(APINT_TYPE_PREFIX, 26934) +HANDLE_BAT(APINT_TYPE_PREFIX, 26935) +HANDLE_BAT(APINT_TYPE_PREFIX, 26936) +HANDLE_BAT(APINT_TYPE_PREFIX, 26937) +HANDLE_BAT(APINT_TYPE_PREFIX, 26938) +HANDLE_BAT(APINT_TYPE_PREFIX, 26939) +HANDLE_BAT(APINT_TYPE_PREFIX, 26940) +HANDLE_BAT(APINT_TYPE_PREFIX, 26941) +HANDLE_BAT(APINT_TYPE_PREFIX, 26942) +HANDLE_BAT(APINT_TYPE_PREFIX, 26943) +HANDLE_BAT(APINT_TYPE_PREFIX, 26944) +HANDLE_BAT(APINT_TYPE_PREFIX, 26945) +HANDLE_BAT(APINT_TYPE_PREFIX, 26946) +HANDLE_BAT(APINT_TYPE_PREFIX, 26947) +HANDLE_BAT(APINT_TYPE_PREFIX, 26948) +HANDLE_BAT(APINT_TYPE_PREFIX, 26949) +HANDLE_BAT(APINT_TYPE_PREFIX, 26950) +HANDLE_BAT(APINT_TYPE_PREFIX, 26951) +HANDLE_BAT(APINT_TYPE_PREFIX, 26952) +HANDLE_BAT(APINT_TYPE_PREFIX, 26953) +HANDLE_BAT(APINT_TYPE_PREFIX, 26954) +HANDLE_BAT(APINT_TYPE_PREFIX, 26955) +HANDLE_BAT(APINT_TYPE_PREFIX, 26956) +HANDLE_BAT(APINT_TYPE_PREFIX, 26957) +HANDLE_BAT(APINT_TYPE_PREFIX, 26958) +HANDLE_BAT(APINT_TYPE_PREFIX, 26959) +HANDLE_BAT(APINT_TYPE_PREFIX, 26960) +HANDLE_BAT(APINT_TYPE_PREFIX, 26961) +HANDLE_BAT(APINT_TYPE_PREFIX, 26962) +HANDLE_BAT(APINT_TYPE_PREFIX, 26963) +HANDLE_BAT(APINT_TYPE_PREFIX, 26964) +HANDLE_BAT(APINT_TYPE_PREFIX, 26965) +HANDLE_BAT(APINT_TYPE_PREFIX, 26966) +HANDLE_BAT(APINT_TYPE_PREFIX, 26967) +HANDLE_BAT(APINT_TYPE_PREFIX, 26968) +HANDLE_BAT(APINT_TYPE_PREFIX, 26969) +HANDLE_BAT(APINT_TYPE_PREFIX, 26970) +HANDLE_BAT(APINT_TYPE_PREFIX, 26971) +HANDLE_BAT(APINT_TYPE_PREFIX, 26972) +HANDLE_BAT(APINT_TYPE_PREFIX, 26973) +HANDLE_BAT(APINT_TYPE_PREFIX, 26974) +HANDLE_BAT(APINT_TYPE_PREFIX, 26975) +HANDLE_BAT(APINT_TYPE_PREFIX, 26976) +HANDLE_BAT(APINT_TYPE_PREFIX, 26977) +HANDLE_BAT(APINT_TYPE_PREFIX, 26978) +HANDLE_BAT(APINT_TYPE_PREFIX, 26979) +HANDLE_BAT(APINT_TYPE_PREFIX, 26980) +HANDLE_BAT(APINT_TYPE_PREFIX, 26981) +HANDLE_BAT(APINT_TYPE_PREFIX, 26982) +HANDLE_BAT(APINT_TYPE_PREFIX, 26983) +HANDLE_BAT(APINT_TYPE_PREFIX, 26984) +HANDLE_BAT(APINT_TYPE_PREFIX, 26985) +HANDLE_BAT(APINT_TYPE_PREFIX, 26986) +HANDLE_BAT(APINT_TYPE_PREFIX, 26987) +HANDLE_BAT(APINT_TYPE_PREFIX, 26988) +HANDLE_BAT(APINT_TYPE_PREFIX, 26989) +HANDLE_BAT(APINT_TYPE_PREFIX, 26990) +HANDLE_BAT(APINT_TYPE_PREFIX, 26991) +HANDLE_BAT(APINT_TYPE_PREFIX, 26992) +HANDLE_BAT(APINT_TYPE_PREFIX, 26993) +HANDLE_BAT(APINT_TYPE_PREFIX, 26994) +HANDLE_BAT(APINT_TYPE_PREFIX, 26995) +HANDLE_BAT(APINT_TYPE_PREFIX, 26996) +HANDLE_BAT(APINT_TYPE_PREFIX, 26997) +HANDLE_BAT(APINT_TYPE_PREFIX, 26998) +HANDLE_BAT(APINT_TYPE_PREFIX, 26999) +HANDLE_BAT(APINT_TYPE_PREFIX, 27000) +HANDLE_BAT(APINT_TYPE_PREFIX, 27001) +HANDLE_BAT(APINT_TYPE_PREFIX, 27002) +HANDLE_BAT(APINT_TYPE_PREFIX, 27003) +HANDLE_BAT(APINT_TYPE_PREFIX, 27004) +HANDLE_BAT(APINT_TYPE_PREFIX, 27005) +HANDLE_BAT(APINT_TYPE_PREFIX, 27006) +HANDLE_BAT(APINT_TYPE_PREFIX, 27007) +HANDLE_BAT(APINT_TYPE_PREFIX, 27008) +HANDLE_BAT(APINT_TYPE_PREFIX, 27009) +HANDLE_BAT(APINT_TYPE_PREFIX, 27010) +HANDLE_BAT(APINT_TYPE_PREFIX, 27011) +HANDLE_BAT(APINT_TYPE_PREFIX, 27012) +HANDLE_BAT(APINT_TYPE_PREFIX, 27013) +HANDLE_BAT(APINT_TYPE_PREFIX, 27014) +HANDLE_BAT(APINT_TYPE_PREFIX, 27015) +HANDLE_BAT(APINT_TYPE_PREFIX, 27016) +HANDLE_BAT(APINT_TYPE_PREFIX, 27017) +HANDLE_BAT(APINT_TYPE_PREFIX, 27018) +HANDLE_BAT(APINT_TYPE_PREFIX, 27019) +HANDLE_BAT(APINT_TYPE_PREFIX, 27020) +HANDLE_BAT(APINT_TYPE_PREFIX, 27021) +HANDLE_BAT(APINT_TYPE_PREFIX, 27022) +HANDLE_BAT(APINT_TYPE_PREFIX, 27023) +HANDLE_BAT(APINT_TYPE_PREFIX, 27024) +HANDLE_BAT(APINT_TYPE_PREFIX, 27025) +HANDLE_BAT(APINT_TYPE_PREFIX, 27026) +HANDLE_BAT(APINT_TYPE_PREFIX, 27027) +HANDLE_BAT(APINT_TYPE_PREFIX, 27028) +HANDLE_BAT(APINT_TYPE_PREFIX, 27029) +HANDLE_BAT(APINT_TYPE_PREFIX, 27030) +HANDLE_BAT(APINT_TYPE_PREFIX, 27031) +HANDLE_BAT(APINT_TYPE_PREFIX, 27032) +HANDLE_BAT(APINT_TYPE_PREFIX, 27033) +HANDLE_BAT(APINT_TYPE_PREFIX, 27034) +HANDLE_BAT(APINT_TYPE_PREFIX, 27035) +HANDLE_BAT(APINT_TYPE_PREFIX, 27036) +HANDLE_BAT(APINT_TYPE_PREFIX, 27037) +HANDLE_BAT(APINT_TYPE_PREFIX, 27038) +HANDLE_BAT(APINT_TYPE_PREFIX, 27039) +HANDLE_BAT(APINT_TYPE_PREFIX, 27040) +HANDLE_BAT(APINT_TYPE_PREFIX, 27041) +HANDLE_BAT(APINT_TYPE_PREFIX, 27042) +HANDLE_BAT(APINT_TYPE_PREFIX, 27043) +HANDLE_BAT(APINT_TYPE_PREFIX, 27044) +HANDLE_BAT(APINT_TYPE_PREFIX, 27045) +HANDLE_BAT(APINT_TYPE_PREFIX, 27046) +HANDLE_BAT(APINT_TYPE_PREFIX, 27047) +HANDLE_BAT(APINT_TYPE_PREFIX, 27048) +HANDLE_BAT(APINT_TYPE_PREFIX, 27049) +HANDLE_BAT(APINT_TYPE_PREFIX, 27050) +HANDLE_BAT(APINT_TYPE_PREFIX, 27051) +HANDLE_BAT(APINT_TYPE_PREFIX, 27052) +HANDLE_BAT(APINT_TYPE_PREFIX, 27053) +HANDLE_BAT(APINT_TYPE_PREFIX, 27054) +HANDLE_BAT(APINT_TYPE_PREFIX, 27055) +HANDLE_BAT(APINT_TYPE_PREFIX, 27056) +HANDLE_BAT(APINT_TYPE_PREFIX, 27057) +HANDLE_BAT(APINT_TYPE_PREFIX, 27058) +HANDLE_BAT(APINT_TYPE_PREFIX, 27059) +HANDLE_BAT(APINT_TYPE_PREFIX, 27060) +HANDLE_BAT(APINT_TYPE_PREFIX, 27061) +HANDLE_BAT(APINT_TYPE_PREFIX, 27062) +HANDLE_BAT(APINT_TYPE_PREFIX, 27063) +HANDLE_BAT(APINT_TYPE_PREFIX, 27064) +HANDLE_BAT(APINT_TYPE_PREFIX, 27065) +HANDLE_BAT(APINT_TYPE_PREFIX, 27066) +HANDLE_BAT(APINT_TYPE_PREFIX, 27067) +HANDLE_BAT(APINT_TYPE_PREFIX, 27068) +HANDLE_BAT(APINT_TYPE_PREFIX, 27069) +HANDLE_BAT(APINT_TYPE_PREFIX, 27070) +HANDLE_BAT(APINT_TYPE_PREFIX, 27071) +HANDLE_BAT(APINT_TYPE_PREFIX, 27072) +HANDLE_BAT(APINT_TYPE_PREFIX, 27073) +HANDLE_BAT(APINT_TYPE_PREFIX, 27074) +HANDLE_BAT(APINT_TYPE_PREFIX, 27075) +HANDLE_BAT(APINT_TYPE_PREFIX, 27076) +HANDLE_BAT(APINT_TYPE_PREFIX, 27077) +HANDLE_BAT(APINT_TYPE_PREFIX, 27078) +HANDLE_BAT(APINT_TYPE_PREFIX, 27079) +HANDLE_BAT(APINT_TYPE_PREFIX, 27080) +HANDLE_BAT(APINT_TYPE_PREFIX, 27081) +HANDLE_BAT(APINT_TYPE_PREFIX, 27082) +HANDLE_BAT(APINT_TYPE_PREFIX, 27083) +HANDLE_BAT(APINT_TYPE_PREFIX, 27084) +HANDLE_BAT(APINT_TYPE_PREFIX, 27085) +HANDLE_BAT(APINT_TYPE_PREFIX, 27086) +HANDLE_BAT(APINT_TYPE_PREFIX, 27087) +HANDLE_BAT(APINT_TYPE_PREFIX, 27088) +HANDLE_BAT(APINT_TYPE_PREFIX, 27089) +HANDLE_BAT(APINT_TYPE_PREFIX, 27090) +HANDLE_BAT(APINT_TYPE_PREFIX, 27091) +HANDLE_BAT(APINT_TYPE_PREFIX, 27092) +HANDLE_BAT(APINT_TYPE_PREFIX, 27093) +HANDLE_BAT(APINT_TYPE_PREFIX, 27094) +HANDLE_BAT(APINT_TYPE_PREFIX, 27095) +HANDLE_BAT(APINT_TYPE_PREFIX, 27096) +HANDLE_BAT(APINT_TYPE_PREFIX, 27097) +HANDLE_BAT(APINT_TYPE_PREFIX, 27098) +HANDLE_BAT(APINT_TYPE_PREFIX, 27099) +HANDLE_BAT(APINT_TYPE_PREFIX, 27100) +HANDLE_BAT(APINT_TYPE_PREFIX, 27101) +HANDLE_BAT(APINT_TYPE_PREFIX, 27102) +HANDLE_BAT(APINT_TYPE_PREFIX, 27103) +HANDLE_BAT(APINT_TYPE_PREFIX, 27104) +HANDLE_BAT(APINT_TYPE_PREFIX, 27105) +HANDLE_BAT(APINT_TYPE_PREFIX, 27106) +HANDLE_BAT(APINT_TYPE_PREFIX, 27107) +HANDLE_BAT(APINT_TYPE_PREFIX, 27108) +HANDLE_BAT(APINT_TYPE_PREFIX, 27109) +HANDLE_BAT(APINT_TYPE_PREFIX, 27110) +HANDLE_BAT(APINT_TYPE_PREFIX, 27111) +HANDLE_BAT(APINT_TYPE_PREFIX, 27112) +HANDLE_BAT(APINT_TYPE_PREFIX, 27113) +HANDLE_BAT(APINT_TYPE_PREFIX, 27114) +HANDLE_BAT(APINT_TYPE_PREFIX, 27115) +HANDLE_BAT(APINT_TYPE_PREFIX, 27116) +HANDLE_BAT(APINT_TYPE_PREFIX, 27117) +HANDLE_BAT(APINT_TYPE_PREFIX, 27118) +HANDLE_BAT(APINT_TYPE_PREFIX, 27119) +HANDLE_BAT(APINT_TYPE_PREFIX, 27120) +HANDLE_BAT(APINT_TYPE_PREFIX, 27121) +HANDLE_BAT(APINT_TYPE_PREFIX, 27122) +HANDLE_BAT(APINT_TYPE_PREFIX, 27123) +HANDLE_BAT(APINT_TYPE_PREFIX, 27124) +HANDLE_BAT(APINT_TYPE_PREFIX, 27125) +HANDLE_BAT(APINT_TYPE_PREFIX, 27126) +HANDLE_BAT(APINT_TYPE_PREFIX, 27127) +HANDLE_BAT(APINT_TYPE_PREFIX, 27128) +HANDLE_BAT(APINT_TYPE_PREFIX, 27129) +HANDLE_BAT(APINT_TYPE_PREFIX, 27130) +HANDLE_BAT(APINT_TYPE_PREFIX, 27131) +HANDLE_BAT(APINT_TYPE_PREFIX, 27132) +HANDLE_BAT(APINT_TYPE_PREFIX, 27133) +HANDLE_BAT(APINT_TYPE_PREFIX, 27134) +HANDLE_BAT(APINT_TYPE_PREFIX, 27135) +HANDLE_BAT(APINT_TYPE_PREFIX, 27136) +HANDLE_BAT(APINT_TYPE_PREFIX, 27137) +HANDLE_BAT(APINT_TYPE_PREFIX, 27138) +HANDLE_BAT(APINT_TYPE_PREFIX, 27139) +HANDLE_BAT(APINT_TYPE_PREFIX, 27140) +HANDLE_BAT(APINT_TYPE_PREFIX, 27141) +HANDLE_BAT(APINT_TYPE_PREFIX, 27142) +HANDLE_BAT(APINT_TYPE_PREFIX, 27143) +HANDLE_BAT(APINT_TYPE_PREFIX, 27144) +HANDLE_BAT(APINT_TYPE_PREFIX, 27145) +HANDLE_BAT(APINT_TYPE_PREFIX, 27146) +HANDLE_BAT(APINT_TYPE_PREFIX, 27147) +HANDLE_BAT(APINT_TYPE_PREFIX, 27148) +HANDLE_BAT(APINT_TYPE_PREFIX, 27149) +HANDLE_BAT(APINT_TYPE_PREFIX, 27150) +HANDLE_BAT(APINT_TYPE_PREFIX, 27151) +HANDLE_BAT(APINT_TYPE_PREFIX, 27152) +HANDLE_BAT(APINT_TYPE_PREFIX, 27153) +HANDLE_BAT(APINT_TYPE_PREFIX, 27154) +HANDLE_BAT(APINT_TYPE_PREFIX, 27155) +HANDLE_BAT(APINT_TYPE_PREFIX, 27156) +HANDLE_BAT(APINT_TYPE_PREFIX, 27157) +HANDLE_BAT(APINT_TYPE_PREFIX, 27158) +HANDLE_BAT(APINT_TYPE_PREFIX, 27159) +HANDLE_BAT(APINT_TYPE_PREFIX, 27160) +HANDLE_BAT(APINT_TYPE_PREFIX, 27161) +HANDLE_BAT(APINT_TYPE_PREFIX, 27162) +HANDLE_BAT(APINT_TYPE_PREFIX, 27163) +HANDLE_BAT(APINT_TYPE_PREFIX, 27164) +HANDLE_BAT(APINT_TYPE_PREFIX, 27165) +HANDLE_BAT(APINT_TYPE_PREFIX, 27166) +HANDLE_BAT(APINT_TYPE_PREFIX, 27167) +HANDLE_BAT(APINT_TYPE_PREFIX, 27168) +HANDLE_BAT(APINT_TYPE_PREFIX, 27169) +HANDLE_BAT(APINT_TYPE_PREFIX, 27170) +HANDLE_BAT(APINT_TYPE_PREFIX, 27171) +HANDLE_BAT(APINT_TYPE_PREFIX, 27172) +HANDLE_BAT(APINT_TYPE_PREFIX, 27173) +HANDLE_BAT(APINT_TYPE_PREFIX, 27174) +HANDLE_BAT(APINT_TYPE_PREFIX, 27175) +HANDLE_BAT(APINT_TYPE_PREFIX, 27176) +HANDLE_BAT(APINT_TYPE_PREFIX, 27177) +HANDLE_BAT(APINT_TYPE_PREFIX, 27178) +HANDLE_BAT(APINT_TYPE_PREFIX, 27179) +HANDLE_BAT(APINT_TYPE_PREFIX, 27180) +HANDLE_BAT(APINT_TYPE_PREFIX, 27181) +HANDLE_BAT(APINT_TYPE_PREFIX, 27182) +HANDLE_BAT(APINT_TYPE_PREFIX, 27183) +HANDLE_BAT(APINT_TYPE_PREFIX, 27184) +HANDLE_BAT(APINT_TYPE_PREFIX, 27185) +HANDLE_BAT(APINT_TYPE_PREFIX, 27186) +HANDLE_BAT(APINT_TYPE_PREFIX, 27187) +HANDLE_BAT(APINT_TYPE_PREFIX, 27188) +HANDLE_BAT(APINT_TYPE_PREFIX, 27189) +HANDLE_BAT(APINT_TYPE_PREFIX, 27190) +HANDLE_BAT(APINT_TYPE_PREFIX, 27191) +HANDLE_BAT(APINT_TYPE_PREFIX, 27192) +HANDLE_BAT(APINT_TYPE_PREFIX, 27193) +HANDLE_BAT(APINT_TYPE_PREFIX, 27194) +HANDLE_BAT(APINT_TYPE_PREFIX, 27195) +HANDLE_BAT(APINT_TYPE_PREFIX, 27196) +HANDLE_BAT(APINT_TYPE_PREFIX, 27197) +HANDLE_BAT(APINT_TYPE_PREFIX, 27198) +HANDLE_BAT(APINT_TYPE_PREFIX, 27199) +HANDLE_BAT(APINT_TYPE_PREFIX, 27200) +HANDLE_BAT(APINT_TYPE_PREFIX, 27201) +HANDLE_BAT(APINT_TYPE_PREFIX, 27202) +HANDLE_BAT(APINT_TYPE_PREFIX, 27203) +HANDLE_BAT(APINT_TYPE_PREFIX, 27204) +HANDLE_BAT(APINT_TYPE_PREFIX, 27205) +HANDLE_BAT(APINT_TYPE_PREFIX, 27206) +HANDLE_BAT(APINT_TYPE_PREFIX, 27207) +HANDLE_BAT(APINT_TYPE_PREFIX, 27208) +HANDLE_BAT(APINT_TYPE_PREFIX, 27209) +HANDLE_BAT(APINT_TYPE_PREFIX, 27210) +HANDLE_BAT(APINT_TYPE_PREFIX, 27211) +HANDLE_BAT(APINT_TYPE_PREFIX, 27212) +HANDLE_BAT(APINT_TYPE_PREFIX, 27213) +HANDLE_BAT(APINT_TYPE_PREFIX, 27214) +HANDLE_BAT(APINT_TYPE_PREFIX, 27215) +HANDLE_BAT(APINT_TYPE_PREFIX, 27216) +HANDLE_BAT(APINT_TYPE_PREFIX, 27217) +HANDLE_BAT(APINT_TYPE_PREFIX, 27218) +HANDLE_BAT(APINT_TYPE_PREFIX, 27219) +HANDLE_BAT(APINT_TYPE_PREFIX, 27220) +HANDLE_BAT(APINT_TYPE_PREFIX, 27221) +HANDLE_BAT(APINT_TYPE_PREFIX, 27222) +HANDLE_BAT(APINT_TYPE_PREFIX, 27223) +HANDLE_BAT(APINT_TYPE_PREFIX, 27224) +HANDLE_BAT(APINT_TYPE_PREFIX, 27225) +HANDLE_BAT(APINT_TYPE_PREFIX, 27226) +HANDLE_BAT(APINT_TYPE_PREFIX, 27227) +HANDLE_BAT(APINT_TYPE_PREFIX, 27228) +HANDLE_BAT(APINT_TYPE_PREFIX, 27229) +HANDLE_BAT(APINT_TYPE_PREFIX, 27230) +HANDLE_BAT(APINT_TYPE_PREFIX, 27231) +HANDLE_BAT(APINT_TYPE_PREFIX, 27232) +HANDLE_BAT(APINT_TYPE_PREFIX, 27233) +HANDLE_BAT(APINT_TYPE_PREFIX, 27234) +HANDLE_BAT(APINT_TYPE_PREFIX, 27235) +HANDLE_BAT(APINT_TYPE_PREFIX, 27236) +HANDLE_BAT(APINT_TYPE_PREFIX, 27237) +HANDLE_BAT(APINT_TYPE_PREFIX, 27238) +HANDLE_BAT(APINT_TYPE_PREFIX, 27239) +HANDLE_BAT(APINT_TYPE_PREFIX, 27240) +HANDLE_BAT(APINT_TYPE_PREFIX, 27241) +HANDLE_BAT(APINT_TYPE_PREFIX, 27242) +HANDLE_BAT(APINT_TYPE_PREFIX, 27243) +HANDLE_BAT(APINT_TYPE_PREFIX, 27244) +HANDLE_BAT(APINT_TYPE_PREFIX, 27245) +HANDLE_BAT(APINT_TYPE_PREFIX, 27246) +HANDLE_BAT(APINT_TYPE_PREFIX, 27247) +HANDLE_BAT(APINT_TYPE_PREFIX, 27248) +HANDLE_BAT(APINT_TYPE_PREFIX, 27249) +HANDLE_BAT(APINT_TYPE_PREFIX, 27250) +HANDLE_BAT(APINT_TYPE_PREFIX, 27251) +HANDLE_BAT(APINT_TYPE_PREFIX, 27252) +HANDLE_BAT(APINT_TYPE_PREFIX, 27253) +HANDLE_BAT(APINT_TYPE_PREFIX, 27254) +HANDLE_BAT(APINT_TYPE_PREFIX, 27255) +HANDLE_BAT(APINT_TYPE_PREFIX, 27256) +HANDLE_BAT(APINT_TYPE_PREFIX, 27257) +HANDLE_BAT(APINT_TYPE_PREFIX, 27258) +HANDLE_BAT(APINT_TYPE_PREFIX, 27259) +HANDLE_BAT(APINT_TYPE_PREFIX, 27260) +HANDLE_BAT(APINT_TYPE_PREFIX, 27261) +HANDLE_BAT(APINT_TYPE_PREFIX, 27262) +HANDLE_BAT(APINT_TYPE_PREFIX, 27263) +HANDLE_BAT(APINT_TYPE_PREFIX, 27264) +HANDLE_BAT(APINT_TYPE_PREFIX, 27265) +HANDLE_BAT(APINT_TYPE_PREFIX, 27266) +HANDLE_BAT(APINT_TYPE_PREFIX, 27267) +HANDLE_BAT(APINT_TYPE_PREFIX, 27268) +HANDLE_BAT(APINT_TYPE_PREFIX, 27269) +HANDLE_BAT(APINT_TYPE_PREFIX, 27270) +HANDLE_BAT(APINT_TYPE_PREFIX, 27271) +HANDLE_BAT(APINT_TYPE_PREFIX, 27272) +HANDLE_BAT(APINT_TYPE_PREFIX, 27273) +HANDLE_BAT(APINT_TYPE_PREFIX, 27274) +HANDLE_BAT(APINT_TYPE_PREFIX, 27275) +HANDLE_BAT(APINT_TYPE_PREFIX, 27276) +HANDLE_BAT(APINT_TYPE_PREFIX, 27277) +HANDLE_BAT(APINT_TYPE_PREFIX, 27278) +HANDLE_BAT(APINT_TYPE_PREFIX, 27279) +HANDLE_BAT(APINT_TYPE_PREFIX, 27280) +HANDLE_BAT(APINT_TYPE_PREFIX, 27281) +HANDLE_BAT(APINT_TYPE_PREFIX, 27282) +HANDLE_BAT(APINT_TYPE_PREFIX, 27283) +HANDLE_BAT(APINT_TYPE_PREFIX, 27284) +HANDLE_BAT(APINT_TYPE_PREFIX, 27285) +HANDLE_BAT(APINT_TYPE_PREFIX, 27286) +HANDLE_BAT(APINT_TYPE_PREFIX, 27287) +HANDLE_BAT(APINT_TYPE_PREFIX, 27288) +HANDLE_BAT(APINT_TYPE_PREFIX, 27289) +HANDLE_BAT(APINT_TYPE_PREFIX, 27290) +HANDLE_BAT(APINT_TYPE_PREFIX, 27291) +HANDLE_BAT(APINT_TYPE_PREFIX, 27292) +HANDLE_BAT(APINT_TYPE_PREFIX, 27293) +HANDLE_BAT(APINT_TYPE_PREFIX, 27294) +HANDLE_BAT(APINT_TYPE_PREFIX, 27295) +HANDLE_BAT(APINT_TYPE_PREFIX, 27296) +HANDLE_BAT(APINT_TYPE_PREFIX, 27297) +HANDLE_BAT(APINT_TYPE_PREFIX, 27298) +HANDLE_BAT(APINT_TYPE_PREFIX, 27299) +HANDLE_BAT(APINT_TYPE_PREFIX, 27300) +HANDLE_BAT(APINT_TYPE_PREFIX, 27301) +HANDLE_BAT(APINT_TYPE_PREFIX, 27302) +HANDLE_BAT(APINT_TYPE_PREFIX, 27303) +HANDLE_BAT(APINT_TYPE_PREFIX, 27304) +HANDLE_BAT(APINT_TYPE_PREFIX, 27305) +HANDLE_BAT(APINT_TYPE_PREFIX, 27306) +HANDLE_BAT(APINT_TYPE_PREFIX, 27307) +HANDLE_BAT(APINT_TYPE_PREFIX, 27308) +HANDLE_BAT(APINT_TYPE_PREFIX, 27309) +HANDLE_BAT(APINT_TYPE_PREFIX, 27310) +HANDLE_BAT(APINT_TYPE_PREFIX, 27311) +HANDLE_BAT(APINT_TYPE_PREFIX, 27312) +HANDLE_BAT(APINT_TYPE_PREFIX, 27313) +HANDLE_BAT(APINT_TYPE_PREFIX, 27314) +HANDLE_BAT(APINT_TYPE_PREFIX, 27315) +HANDLE_BAT(APINT_TYPE_PREFIX, 27316) +HANDLE_BAT(APINT_TYPE_PREFIX, 27317) +HANDLE_BAT(APINT_TYPE_PREFIX, 27318) +HANDLE_BAT(APINT_TYPE_PREFIX, 27319) +HANDLE_BAT(APINT_TYPE_PREFIX, 27320) +HANDLE_BAT(APINT_TYPE_PREFIX, 27321) +HANDLE_BAT(APINT_TYPE_PREFIX, 27322) +HANDLE_BAT(APINT_TYPE_PREFIX, 27323) +HANDLE_BAT(APINT_TYPE_PREFIX, 27324) +HANDLE_BAT(APINT_TYPE_PREFIX, 27325) +HANDLE_BAT(APINT_TYPE_PREFIX, 27326) +HANDLE_BAT(APINT_TYPE_PREFIX, 27327) +HANDLE_BAT(APINT_TYPE_PREFIX, 27328) +HANDLE_BAT(APINT_TYPE_PREFIX, 27329) +HANDLE_BAT(APINT_TYPE_PREFIX, 27330) +HANDLE_BAT(APINT_TYPE_PREFIX, 27331) +HANDLE_BAT(APINT_TYPE_PREFIX, 27332) +HANDLE_BAT(APINT_TYPE_PREFIX, 27333) +HANDLE_BAT(APINT_TYPE_PREFIX, 27334) +HANDLE_BAT(APINT_TYPE_PREFIX, 27335) +HANDLE_BAT(APINT_TYPE_PREFIX, 27336) +HANDLE_BAT(APINT_TYPE_PREFIX, 27337) +HANDLE_BAT(APINT_TYPE_PREFIX, 27338) +HANDLE_BAT(APINT_TYPE_PREFIX, 27339) +HANDLE_BAT(APINT_TYPE_PREFIX, 27340) +HANDLE_BAT(APINT_TYPE_PREFIX, 27341) +HANDLE_BAT(APINT_TYPE_PREFIX, 27342) +HANDLE_BAT(APINT_TYPE_PREFIX, 27343) +HANDLE_BAT(APINT_TYPE_PREFIX, 27344) +HANDLE_BAT(APINT_TYPE_PREFIX, 27345) +HANDLE_BAT(APINT_TYPE_PREFIX, 27346) +HANDLE_BAT(APINT_TYPE_PREFIX, 27347) +HANDLE_BAT(APINT_TYPE_PREFIX, 27348) +HANDLE_BAT(APINT_TYPE_PREFIX, 27349) +HANDLE_BAT(APINT_TYPE_PREFIX, 27350) +HANDLE_BAT(APINT_TYPE_PREFIX, 27351) +HANDLE_BAT(APINT_TYPE_PREFIX, 27352) +HANDLE_BAT(APINT_TYPE_PREFIX, 27353) +HANDLE_BAT(APINT_TYPE_PREFIX, 27354) +HANDLE_BAT(APINT_TYPE_PREFIX, 27355) +HANDLE_BAT(APINT_TYPE_PREFIX, 27356) +HANDLE_BAT(APINT_TYPE_PREFIX, 27357) +HANDLE_BAT(APINT_TYPE_PREFIX, 27358) +HANDLE_BAT(APINT_TYPE_PREFIX, 27359) +HANDLE_BAT(APINT_TYPE_PREFIX, 27360) +HANDLE_BAT(APINT_TYPE_PREFIX, 27361) +HANDLE_BAT(APINT_TYPE_PREFIX, 27362) +HANDLE_BAT(APINT_TYPE_PREFIX, 27363) +HANDLE_BAT(APINT_TYPE_PREFIX, 27364) +HANDLE_BAT(APINT_TYPE_PREFIX, 27365) +HANDLE_BAT(APINT_TYPE_PREFIX, 27366) +HANDLE_BAT(APINT_TYPE_PREFIX, 27367) +HANDLE_BAT(APINT_TYPE_PREFIX, 27368) +HANDLE_BAT(APINT_TYPE_PREFIX, 27369) +HANDLE_BAT(APINT_TYPE_PREFIX, 27370) +HANDLE_BAT(APINT_TYPE_PREFIX, 27371) +HANDLE_BAT(APINT_TYPE_PREFIX, 27372) +HANDLE_BAT(APINT_TYPE_PREFIX, 27373) +HANDLE_BAT(APINT_TYPE_PREFIX, 27374) +HANDLE_BAT(APINT_TYPE_PREFIX, 27375) +HANDLE_BAT(APINT_TYPE_PREFIX, 27376) +HANDLE_BAT(APINT_TYPE_PREFIX, 27377) +HANDLE_BAT(APINT_TYPE_PREFIX, 27378) +HANDLE_BAT(APINT_TYPE_PREFIX, 27379) +HANDLE_BAT(APINT_TYPE_PREFIX, 27380) +HANDLE_BAT(APINT_TYPE_PREFIX, 27381) +HANDLE_BAT(APINT_TYPE_PREFIX, 27382) +HANDLE_BAT(APINT_TYPE_PREFIX, 27383) +HANDLE_BAT(APINT_TYPE_PREFIX, 27384) +HANDLE_BAT(APINT_TYPE_PREFIX, 27385) +HANDLE_BAT(APINT_TYPE_PREFIX, 27386) +HANDLE_BAT(APINT_TYPE_PREFIX, 27387) +HANDLE_BAT(APINT_TYPE_PREFIX, 27388) +HANDLE_BAT(APINT_TYPE_PREFIX, 27389) +HANDLE_BAT(APINT_TYPE_PREFIX, 27390) +HANDLE_BAT(APINT_TYPE_PREFIX, 27391) +HANDLE_BAT(APINT_TYPE_PREFIX, 27392) +HANDLE_BAT(APINT_TYPE_PREFIX, 27393) +HANDLE_BAT(APINT_TYPE_PREFIX, 27394) +HANDLE_BAT(APINT_TYPE_PREFIX, 27395) +HANDLE_BAT(APINT_TYPE_PREFIX, 27396) +HANDLE_BAT(APINT_TYPE_PREFIX, 27397) +HANDLE_BAT(APINT_TYPE_PREFIX, 27398) +HANDLE_BAT(APINT_TYPE_PREFIX, 27399) +HANDLE_BAT(APINT_TYPE_PREFIX, 27400) +HANDLE_BAT(APINT_TYPE_PREFIX, 27401) +HANDLE_BAT(APINT_TYPE_PREFIX, 27402) +HANDLE_BAT(APINT_TYPE_PREFIX, 27403) +HANDLE_BAT(APINT_TYPE_PREFIX, 27404) +HANDLE_BAT(APINT_TYPE_PREFIX, 27405) +HANDLE_BAT(APINT_TYPE_PREFIX, 27406) +HANDLE_BAT(APINT_TYPE_PREFIX, 27407) +HANDLE_BAT(APINT_TYPE_PREFIX, 27408) +HANDLE_BAT(APINT_TYPE_PREFIX, 27409) +HANDLE_BAT(APINT_TYPE_PREFIX, 27410) +HANDLE_BAT(APINT_TYPE_PREFIX, 27411) +HANDLE_BAT(APINT_TYPE_PREFIX, 27412) +HANDLE_BAT(APINT_TYPE_PREFIX, 27413) +HANDLE_BAT(APINT_TYPE_PREFIX, 27414) +HANDLE_BAT(APINT_TYPE_PREFIX, 27415) +HANDLE_BAT(APINT_TYPE_PREFIX, 27416) +HANDLE_BAT(APINT_TYPE_PREFIX, 27417) +HANDLE_BAT(APINT_TYPE_PREFIX, 27418) +HANDLE_BAT(APINT_TYPE_PREFIX, 27419) +HANDLE_BAT(APINT_TYPE_PREFIX, 27420) +HANDLE_BAT(APINT_TYPE_PREFIX, 27421) +HANDLE_BAT(APINT_TYPE_PREFIX, 27422) +HANDLE_BAT(APINT_TYPE_PREFIX, 27423) +HANDLE_BAT(APINT_TYPE_PREFIX, 27424) +HANDLE_BAT(APINT_TYPE_PREFIX, 27425) +HANDLE_BAT(APINT_TYPE_PREFIX, 27426) +HANDLE_BAT(APINT_TYPE_PREFIX, 27427) +HANDLE_BAT(APINT_TYPE_PREFIX, 27428) +HANDLE_BAT(APINT_TYPE_PREFIX, 27429) +HANDLE_BAT(APINT_TYPE_PREFIX, 27430) +HANDLE_BAT(APINT_TYPE_PREFIX, 27431) +HANDLE_BAT(APINT_TYPE_PREFIX, 27432) +HANDLE_BAT(APINT_TYPE_PREFIX, 27433) +HANDLE_BAT(APINT_TYPE_PREFIX, 27434) +HANDLE_BAT(APINT_TYPE_PREFIX, 27435) +HANDLE_BAT(APINT_TYPE_PREFIX, 27436) +HANDLE_BAT(APINT_TYPE_PREFIX, 27437) +HANDLE_BAT(APINT_TYPE_PREFIX, 27438) +HANDLE_BAT(APINT_TYPE_PREFIX, 27439) +HANDLE_BAT(APINT_TYPE_PREFIX, 27440) +HANDLE_BAT(APINT_TYPE_PREFIX, 27441) +HANDLE_BAT(APINT_TYPE_PREFIX, 27442) +HANDLE_BAT(APINT_TYPE_PREFIX, 27443) +HANDLE_BAT(APINT_TYPE_PREFIX, 27444) +HANDLE_BAT(APINT_TYPE_PREFIX, 27445) +HANDLE_BAT(APINT_TYPE_PREFIX, 27446) +HANDLE_BAT(APINT_TYPE_PREFIX, 27447) +HANDLE_BAT(APINT_TYPE_PREFIX, 27448) +HANDLE_BAT(APINT_TYPE_PREFIX, 27449) +HANDLE_BAT(APINT_TYPE_PREFIX, 27450) +HANDLE_BAT(APINT_TYPE_PREFIX, 27451) +HANDLE_BAT(APINT_TYPE_PREFIX, 27452) +HANDLE_BAT(APINT_TYPE_PREFIX, 27453) +HANDLE_BAT(APINT_TYPE_PREFIX, 27454) +HANDLE_BAT(APINT_TYPE_PREFIX, 27455) +HANDLE_BAT(APINT_TYPE_PREFIX, 27456) +HANDLE_BAT(APINT_TYPE_PREFIX, 27457) +HANDLE_BAT(APINT_TYPE_PREFIX, 27458) +HANDLE_BAT(APINT_TYPE_PREFIX, 27459) +HANDLE_BAT(APINT_TYPE_PREFIX, 27460) +HANDLE_BAT(APINT_TYPE_PREFIX, 27461) +HANDLE_BAT(APINT_TYPE_PREFIX, 27462) +HANDLE_BAT(APINT_TYPE_PREFIX, 27463) +HANDLE_BAT(APINT_TYPE_PREFIX, 27464) +HANDLE_BAT(APINT_TYPE_PREFIX, 27465) +HANDLE_BAT(APINT_TYPE_PREFIX, 27466) +HANDLE_BAT(APINT_TYPE_PREFIX, 27467) +HANDLE_BAT(APINT_TYPE_PREFIX, 27468) +HANDLE_BAT(APINT_TYPE_PREFIX, 27469) +HANDLE_BAT(APINT_TYPE_PREFIX, 27470) +HANDLE_BAT(APINT_TYPE_PREFIX, 27471) +HANDLE_BAT(APINT_TYPE_PREFIX, 27472) +HANDLE_BAT(APINT_TYPE_PREFIX, 27473) +HANDLE_BAT(APINT_TYPE_PREFIX, 27474) +HANDLE_BAT(APINT_TYPE_PREFIX, 27475) +HANDLE_BAT(APINT_TYPE_PREFIX, 27476) +HANDLE_BAT(APINT_TYPE_PREFIX, 27477) +HANDLE_BAT(APINT_TYPE_PREFIX, 27478) +HANDLE_BAT(APINT_TYPE_PREFIX, 27479) +HANDLE_BAT(APINT_TYPE_PREFIX, 27480) +HANDLE_BAT(APINT_TYPE_PREFIX, 27481) +HANDLE_BAT(APINT_TYPE_PREFIX, 27482) +HANDLE_BAT(APINT_TYPE_PREFIX, 27483) +HANDLE_BAT(APINT_TYPE_PREFIX, 27484) +HANDLE_BAT(APINT_TYPE_PREFIX, 27485) +HANDLE_BAT(APINT_TYPE_PREFIX, 27486) +HANDLE_BAT(APINT_TYPE_PREFIX, 27487) +HANDLE_BAT(APINT_TYPE_PREFIX, 27488) +HANDLE_BAT(APINT_TYPE_PREFIX, 27489) +HANDLE_BAT(APINT_TYPE_PREFIX, 27490) +HANDLE_BAT(APINT_TYPE_PREFIX, 27491) +HANDLE_BAT(APINT_TYPE_PREFIX, 27492) +HANDLE_BAT(APINT_TYPE_PREFIX, 27493) +HANDLE_BAT(APINT_TYPE_PREFIX, 27494) +HANDLE_BAT(APINT_TYPE_PREFIX, 27495) +HANDLE_BAT(APINT_TYPE_PREFIX, 27496) +HANDLE_BAT(APINT_TYPE_PREFIX, 27497) +HANDLE_BAT(APINT_TYPE_PREFIX, 27498) +HANDLE_BAT(APINT_TYPE_PREFIX, 27499) +HANDLE_BAT(APINT_TYPE_PREFIX, 27500) +HANDLE_BAT(APINT_TYPE_PREFIX, 27501) +HANDLE_BAT(APINT_TYPE_PREFIX, 27502) +HANDLE_BAT(APINT_TYPE_PREFIX, 27503) +HANDLE_BAT(APINT_TYPE_PREFIX, 27504) +HANDLE_BAT(APINT_TYPE_PREFIX, 27505) +HANDLE_BAT(APINT_TYPE_PREFIX, 27506) +HANDLE_BAT(APINT_TYPE_PREFIX, 27507) +HANDLE_BAT(APINT_TYPE_PREFIX, 27508) +HANDLE_BAT(APINT_TYPE_PREFIX, 27509) +HANDLE_BAT(APINT_TYPE_PREFIX, 27510) +HANDLE_BAT(APINT_TYPE_PREFIX, 27511) +HANDLE_BAT(APINT_TYPE_PREFIX, 27512) +HANDLE_BAT(APINT_TYPE_PREFIX, 27513) +HANDLE_BAT(APINT_TYPE_PREFIX, 27514) +HANDLE_BAT(APINT_TYPE_PREFIX, 27515) +HANDLE_BAT(APINT_TYPE_PREFIX, 27516) +HANDLE_BAT(APINT_TYPE_PREFIX, 27517) +HANDLE_BAT(APINT_TYPE_PREFIX, 27518) +HANDLE_BAT(APINT_TYPE_PREFIX, 27519) +HANDLE_BAT(APINT_TYPE_PREFIX, 27520) +HANDLE_BAT(APINT_TYPE_PREFIX, 27521) +HANDLE_BAT(APINT_TYPE_PREFIX, 27522) +HANDLE_BAT(APINT_TYPE_PREFIX, 27523) +HANDLE_BAT(APINT_TYPE_PREFIX, 27524) +HANDLE_BAT(APINT_TYPE_PREFIX, 27525) +HANDLE_BAT(APINT_TYPE_PREFIX, 27526) +HANDLE_BAT(APINT_TYPE_PREFIX, 27527) +HANDLE_BAT(APINT_TYPE_PREFIX, 27528) +HANDLE_BAT(APINT_TYPE_PREFIX, 27529) +HANDLE_BAT(APINT_TYPE_PREFIX, 27530) +HANDLE_BAT(APINT_TYPE_PREFIX, 27531) +HANDLE_BAT(APINT_TYPE_PREFIX, 27532) +HANDLE_BAT(APINT_TYPE_PREFIX, 27533) +HANDLE_BAT(APINT_TYPE_PREFIX, 27534) +HANDLE_BAT(APINT_TYPE_PREFIX, 27535) +HANDLE_BAT(APINT_TYPE_PREFIX, 27536) +HANDLE_BAT(APINT_TYPE_PREFIX, 27537) +HANDLE_BAT(APINT_TYPE_PREFIX, 27538) +HANDLE_BAT(APINT_TYPE_PREFIX, 27539) +HANDLE_BAT(APINT_TYPE_PREFIX, 27540) +HANDLE_BAT(APINT_TYPE_PREFIX, 27541) +HANDLE_BAT(APINT_TYPE_PREFIX, 27542) +HANDLE_BAT(APINT_TYPE_PREFIX, 27543) +HANDLE_BAT(APINT_TYPE_PREFIX, 27544) +HANDLE_BAT(APINT_TYPE_PREFIX, 27545) +HANDLE_BAT(APINT_TYPE_PREFIX, 27546) +HANDLE_BAT(APINT_TYPE_PREFIX, 27547) +HANDLE_BAT(APINT_TYPE_PREFIX, 27548) +HANDLE_BAT(APINT_TYPE_PREFIX, 27549) +HANDLE_BAT(APINT_TYPE_PREFIX, 27550) +HANDLE_BAT(APINT_TYPE_PREFIX, 27551) +HANDLE_BAT(APINT_TYPE_PREFIX, 27552) +HANDLE_BAT(APINT_TYPE_PREFIX, 27553) +HANDLE_BAT(APINT_TYPE_PREFIX, 27554) +HANDLE_BAT(APINT_TYPE_PREFIX, 27555) +HANDLE_BAT(APINT_TYPE_PREFIX, 27556) +HANDLE_BAT(APINT_TYPE_PREFIX, 27557) +HANDLE_BAT(APINT_TYPE_PREFIX, 27558) +HANDLE_BAT(APINT_TYPE_PREFIX, 27559) +HANDLE_BAT(APINT_TYPE_PREFIX, 27560) +HANDLE_BAT(APINT_TYPE_PREFIX, 27561) +HANDLE_BAT(APINT_TYPE_PREFIX, 27562) +HANDLE_BAT(APINT_TYPE_PREFIX, 27563) +HANDLE_BAT(APINT_TYPE_PREFIX, 27564) +HANDLE_BAT(APINT_TYPE_PREFIX, 27565) +HANDLE_BAT(APINT_TYPE_PREFIX, 27566) +HANDLE_BAT(APINT_TYPE_PREFIX, 27567) +HANDLE_BAT(APINT_TYPE_PREFIX, 27568) +HANDLE_BAT(APINT_TYPE_PREFIX, 27569) +HANDLE_BAT(APINT_TYPE_PREFIX, 27570) +HANDLE_BAT(APINT_TYPE_PREFIX, 27571) +HANDLE_BAT(APINT_TYPE_PREFIX, 27572) +HANDLE_BAT(APINT_TYPE_PREFIX, 27573) +HANDLE_BAT(APINT_TYPE_PREFIX, 27574) +HANDLE_BAT(APINT_TYPE_PREFIX, 27575) +HANDLE_BAT(APINT_TYPE_PREFIX, 27576) +HANDLE_BAT(APINT_TYPE_PREFIX, 27577) +HANDLE_BAT(APINT_TYPE_PREFIX, 27578) +HANDLE_BAT(APINT_TYPE_PREFIX, 27579) +HANDLE_BAT(APINT_TYPE_PREFIX, 27580) +HANDLE_BAT(APINT_TYPE_PREFIX, 27581) +HANDLE_BAT(APINT_TYPE_PREFIX, 27582) +HANDLE_BAT(APINT_TYPE_PREFIX, 27583) +HANDLE_BAT(APINT_TYPE_PREFIX, 27584) +HANDLE_BAT(APINT_TYPE_PREFIX, 27585) +HANDLE_BAT(APINT_TYPE_PREFIX, 27586) +HANDLE_BAT(APINT_TYPE_PREFIX, 27587) +HANDLE_BAT(APINT_TYPE_PREFIX, 27588) +HANDLE_BAT(APINT_TYPE_PREFIX, 27589) +HANDLE_BAT(APINT_TYPE_PREFIX, 27590) +HANDLE_BAT(APINT_TYPE_PREFIX, 27591) +HANDLE_BAT(APINT_TYPE_PREFIX, 27592) +HANDLE_BAT(APINT_TYPE_PREFIX, 27593) +HANDLE_BAT(APINT_TYPE_PREFIX, 27594) +HANDLE_BAT(APINT_TYPE_PREFIX, 27595) +HANDLE_BAT(APINT_TYPE_PREFIX, 27596) +HANDLE_BAT(APINT_TYPE_PREFIX, 27597) +HANDLE_BAT(APINT_TYPE_PREFIX, 27598) +HANDLE_BAT(APINT_TYPE_PREFIX, 27599) +HANDLE_BAT(APINT_TYPE_PREFIX, 27600) +HANDLE_BAT(APINT_TYPE_PREFIX, 27601) +HANDLE_BAT(APINT_TYPE_PREFIX, 27602) +HANDLE_BAT(APINT_TYPE_PREFIX, 27603) +HANDLE_BAT(APINT_TYPE_PREFIX, 27604) +HANDLE_BAT(APINT_TYPE_PREFIX, 27605) +HANDLE_BAT(APINT_TYPE_PREFIX, 27606) +HANDLE_BAT(APINT_TYPE_PREFIX, 27607) +HANDLE_BAT(APINT_TYPE_PREFIX, 27608) +HANDLE_BAT(APINT_TYPE_PREFIX, 27609) +HANDLE_BAT(APINT_TYPE_PREFIX, 27610) +HANDLE_BAT(APINT_TYPE_PREFIX, 27611) +HANDLE_BAT(APINT_TYPE_PREFIX, 27612) +HANDLE_BAT(APINT_TYPE_PREFIX, 27613) +HANDLE_BAT(APINT_TYPE_PREFIX, 27614) +HANDLE_BAT(APINT_TYPE_PREFIX, 27615) +HANDLE_BAT(APINT_TYPE_PREFIX, 27616) +HANDLE_BAT(APINT_TYPE_PREFIX, 27617) +HANDLE_BAT(APINT_TYPE_PREFIX, 27618) +HANDLE_BAT(APINT_TYPE_PREFIX, 27619) +HANDLE_BAT(APINT_TYPE_PREFIX, 27620) +HANDLE_BAT(APINT_TYPE_PREFIX, 27621) +HANDLE_BAT(APINT_TYPE_PREFIX, 27622) +HANDLE_BAT(APINT_TYPE_PREFIX, 27623) +HANDLE_BAT(APINT_TYPE_PREFIX, 27624) +HANDLE_BAT(APINT_TYPE_PREFIX, 27625) +HANDLE_BAT(APINT_TYPE_PREFIX, 27626) +HANDLE_BAT(APINT_TYPE_PREFIX, 27627) +HANDLE_BAT(APINT_TYPE_PREFIX, 27628) +HANDLE_BAT(APINT_TYPE_PREFIX, 27629) +HANDLE_BAT(APINT_TYPE_PREFIX, 27630) +HANDLE_BAT(APINT_TYPE_PREFIX, 27631) +HANDLE_BAT(APINT_TYPE_PREFIX, 27632) +HANDLE_BAT(APINT_TYPE_PREFIX, 27633) +HANDLE_BAT(APINT_TYPE_PREFIX, 27634) +HANDLE_BAT(APINT_TYPE_PREFIX, 27635) +HANDLE_BAT(APINT_TYPE_PREFIX, 27636) +HANDLE_BAT(APINT_TYPE_PREFIX, 27637) +HANDLE_BAT(APINT_TYPE_PREFIX, 27638) +HANDLE_BAT(APINT_TYPE_PREFIX, 27639) +HANDLE_BAT(APINT_TYPE_PREFIX, 27640) +HANDLE_BAT(APINT_TYPE_PREFIX, 27641) +HANDLE_BAT(APINT_TYPE_PREFIX, 27642) +HANDLE_BAT(APINT_TYPE_PREFIX, 27643) +HANDLE_BAT(APINT_TYPE_PREFIX, 27644) +HANDLE_BAT(APINT_TYPE_PREFIX, 27645) +HANDLE_BAT(APINT_TYPE_PREFIX, 27646) +HANDLE_BAT(APINT_TYPE_PREFIX, 27647) +HANDLE_BAT(APINT_TYPE_PREFIX, 27648) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 27 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 27649) +HANDLE_BAT(, 27650) +HANDLE_BAT(, 27651) +HANDLE_BAT(, 27652) +HANDLE_BAT(, 27653) +HANDLE_BAT(, 27654) +HANDLE_BAT(, 27655) +HANDLE_BAT(, 27656) +HANDLE_BAT(, 27657) +HANDLE_BAT(, 27658) +HANDLE_BAT(, 27659) +HANDLE_BAT(, 27660) +HANDLE_BAT(, 27661) +HANDLE_BAT(, 27662) +HANDLE_BAT(, 27663) +HANDLE_BAT(, 27664) +HANDLE_BAT(, 27665) +HANDLE_BAT(, 27666) +HANDLE_BAT(, 27667) +HANDLE_BAT(, 27668) +HANDLE_BAT(, 27669) +HANDLE_BAT(, 27670) +HANDLE_BAT(, 27671) +HANDLE_BAT(, 27672) +HANDLE_BAT(, 27673) +HANDLE_BAT(, 27674) +HANDLE_BAT(, 27675) +HANDLE_BAT(, 27676) +HANDLE_BAT(, 27677) +HANDLE_BAT(, 27678) +HANDLE_BAT(, 27679) +HANDLE_BAT(, 27680) +HANDLE_BAT(, 27681) +HANDLE_BAT(, 27682) +HANDLE_BAT(, 27683) +HANDLE_BAT(, 27684) +HANDLE_BAT(, 27685) +HANDLE_BAT(, 27686) +HANDLE_BAT(, 27687) +HANDLE_BAT(, 27688) +HANDLE_BAT(, 27689) +HANDLE_BAT(, 27690) +HANDLE_BAT(, 27691) +HANDLE_BAT(, 27692) +HANDLE_BAT(, 27693) +HANDLE_BAT(, 27694) +HANDLE_BAT(, 27695) +HANDLE_BAT(, 27696) +HANDLE_BAT(, 27697) +HANDLE_BAT(, 27698) +HANDLE_BAT(, 27699) +HANDLE_BAT(, 27700) +HANDLE_BAT(, 27701) +HANDLE_BAT(, 27702) +HANDLE_BAT(, 27703) +HANDLE_BAT(, 27704) +HANDLE_BAT(, 27705) +HANDLE_BAT(, 27706) +HANDLE_BAT(, 27707) +HANDLE_BAT(, 27708) +HANDLE_BAT(, 27709) +HANDLE_BAT(, 27710) +HANDLE_BAT(, 27711) +HANDLE_BAT(, 27712) +HANDLE_BAT(, 27713) +HANDLE_BAT(, 27714) +HANDLE_BAT(, 27715) +HANDLE_BAT(, 27716) +HANDLE_BAT(, 27717) +HANDLE_BAT(, 27718) +HANDLE_BAT(, 27719) +HANDLE_BAT(, 27720) +HANDLE_BAT(, 27721) +HANDLE_BAT(, 27722) +HANDLE_BAT(, 27723) +HANDLE_BAT(, 27724) +HANDLE_BAT(, 27725) +HANDLE_BAT(, 27726) +HANDLE_BAT(, 27727) +HANDLE_BAT(, 27728) +HANDLE_BAT(, 27729) +HANDLE_BAT(, 27730) +HANDLE_BAT(, 27731) +HANDLE_BAT(, 27732) +HANDLE_BAT(, 27733) +HANDLE_BAT(, 27734) +HANDLE_BAT(, 27735) +HANDLE_BAT(, 27736) +HANDLE_BAT(, 27737) +HANDLE_BAT(, 27738) +HANDLE_BAT(, 27739) +HANDLE_BAT(, 27740) +HANDLE_BAT(, 27741) +HANDLE_BAT(, 27742) +HANDLE_BAT(, 27743) +HANDLE_BAT(, 27744) +HANDLE_BAT(, 27745) +HANDLE_BAT(, 27746) +HANDLE_BAT(, 27747) +HANDLE_BAT(, 27748) +HANDLE_BAT(, 27749) +HANDLE_BAT(, 27750) +HANDLE_BAT(, 27751) +HANDLE_BAT(, 27752) +HANDLE_BAT(, 27753) +HANDLE_BAT(, 27754) +HANDLE_BAT(, 27755) +HANDLE_BAT(, 27756) +HANDLE_BAT(, 27757) +HANDLE_BAT(, 27758) +HANDLE_BAT(, 27759) +HANDLE_BAT(, 27760) +HANDLE_BAT(, 27761) +HANDLE_BAT(, 27762) +HANDLE_BAT(, 27763) +HANDLE_BAT(, 27764) +HANDLE_BAT(, 27765) +HANDLE_BAT(, 27766) +HANDLE_BAT(, 27767) +HANDLE_BAT(, 27768) +HANDLE_BAT(, 27769) +HANDLE_BAT(, 27770) +HANDLE_BAT(, 27771) +HANDLE_BAT(, 27772) +HANDLE_BAT(, 27773) +HANDLE_BAT(, 27774) +HANDLE_BAT(, 27775) +HANDLE_BAT(, 27776) +HANDLE_BAT(, 27777) +HANDLE_BAT(, 27778) +HANDLE_BAT(, 27779) +HANDLE_BAT(, 27780) +HANDLE_BAT(, 27781) +HANDLE_BAT(, 27782) +HANDLE_BAT(, 27783) +HANDLE_BAT(, 27784) +HANDLE_BAT(, 27785) +HANDLE_BAT(, 27786) +HANDLE_BAT(, 27787) +HANDLE_BAT(, 27788) +HANDLE_BAT(, 27789) +HANDLE_BAT(, 27790) +HANDLE_BAT(, 27791) +HANDLE_BAT(, 27792) +HANDLE_BAT(, 27793) +HANDLE_BAT(, 27794) +HANDLE_BAT(, 27795) +HANDLE_BAT(, 27796) +HANDLE_BAT(, 27797) +HANDLE_BAT(, 27798) +HANDLE_BAT(, 27799) +HANDLE_BAT(, 27800) +HANDLE_BAT(, 27801) +HANDLE_BAT(, 27802) +HANDLE_BAT(, 27803) +HANDLE_BAT(, 27804) +HANDLE_BAT(, 27805) +HANDLE_BAT(, 27806) +HANDLE_BAT(, 27807) +HANDLE_BAT(, 27808) +HANDLE_BAT(, 27809) +HANDLE_BAT(, 27810) +HANDLE_BAT(, 27811) +HANDLE_BAT(, 27812) +HANDLE_BAT(, 27813) +HANDLE_BAT(, 27814) +HANDLE_BAT(, 27815) +HANDLE_BAT(, 27816) +HANDLE_BAT(, 27817) +HANDLE_BAT(, 27818) +HANDLE_BAT(, 27819) +HANDLE_BAT(, 27820) +HANDLE_BAT(, 27821) +HANDLE_BAT(, 27822) +HANDLE_BAT(, 27823) +HANDLE_BAT(, 27824) +HANDLE_BAT(, 27825) +HANDLE_BAT(, 27826) +HANDLE_BAT(, 27827) +HANDLE_BAT(, 27828) +HANDLE_BAT(, 27829) +HANDLE_BAT(, 27830) +HANDLE_BAT(, 27831) +HANDLE_BAT(, 27832) +HANDLE_BAT(, 27833) +HANDLE_BAT(, 27834) +HANDLE_BAT(, 27835) +HANDLE_BAT(, 27836) +HANDLE_BAT(, 27837) +HANDLE_BAT(, 27838) +HANDLE_BAT(, 27839) +HANDLE_BAT(, 27840) +HANDLE_BAT(, 27841) +HANDLE_BAT(, 27842) +HANDLE_BAT(, 27843) +HANDLE_BAT(, 27844) +HANDLE_BAT(, 27845) +HANDLE_BAT(, 27846) +HANDLE_BAT(, 27847) +HANDLE_BAT(, 27848) +HANDLE_BAT(, 27849) +HANDLE_BAT(, 27850) +HANDLE_BAT(, 27851) +HANDLE_BAT(, 27852) +HANDLE_BAT(, 27853) +HANDLE_BAT(, 27854) +HANDLE_BAT(, 27855) +HANDLE_BAT(, 27856) +HANDLE_BAT(, 27857) +HANDLE_BAT(, 27858) +HANDLE_BAT(, 27859) +HANDLE_BAT(, 27860) +HANDLE_BAT(, 27861) +HANDLE_BAT(, 27862) +HANDLE_BAT(, 27863) +HANDLE_BAT(, 27864) +HANDLE_BAT(, 27865) +HANDLE_BAT(, 27866) +HANDLE_BAT(, 27867) +HANDLE_BAT(, 27868) +HANDLE_BAT(, 27869) +HANDLE_BAT(, 27870) +HANDLE_BAT(, 27871) +HANDLE_BAT(, 27872) +HANDLE_BAT(, 27873) +HANDLE_BAT(, 27874) +HANDLE_BAT(, 27875) +HANDLE_BAT(, 27876) +HANDLE_BAT(, 27877) +HANDLE_BAT(, 27878) +HANDLE_BAT(, 27879) +HANDLE_BAT(, 27880) +HANDLE_BAT(, 27881) +HANDLE_BAT(, 27882) +HANDLE_BAT(, 27883) +HANDLE_BAT(, 27884) +HANDLE_BAT(, 27885) +HANDLE_BAT(, 27886) +HANDLE_BAT(, 27887) +HANDLE_BAT(, 27888) +HANDLE_BAT(, 27889) +HANDLE_BAT(, 27890) +HANDLE_BAT(, 27891) +HANDLE_BAT(, 27892) +HANDLE_BAT(, 27893) +HANDLE_BAT(, 27894) +HANDLE_BAT(, 27895) +HANDLE_BAT(, 27896) +HANDLE_BAT(, 27897) +HANDLE_BAT(, 27898) +HANDLE_BAT(, 27899) +HANDLE_BAT(, 27900) +HANDLE_BAT(, 27901) +HANDLE_BAT(, 27902) +HANDLE_BAT(, 27903) +HANDLE_BAT(, 27904) +HANDLE_BAT(, 27905) +HANDLE_BAT(, 27906) +HANDLE_BAT(, 27907) +HANDLE_BAT(, 27908) +HANDLE_BAT(, 27909) +HANDLE_BAT(, 27910) +HANDLE_BAT(, 27911) +HANDLE_BAT(, 27912) +HANDLE_BAT(, 27913) +HANDLE_BAT(, 27914) +HANDLE_BAT(, 27915) +HANDLE_BAT(, 27916) +HANDLE_BAT(, 27917) +HANDLE_BAT(, 27918) +HANDLE_BAT(, 27919) +HANDLE_BAT(, 27920) +HANDLE_BAT(, 27921) +HANDLE_BAT(, 27922) +HANDLE_BAT(, 27923) +HANDLE_BAT(, 27924) +HANDLE_BAT(, 27925) +HANDLE_BAT(, 27926) +HANDLE_BAT(, 27927) +HANDLE_BAT(, 27928) +HANDLE_BAT(, 27929) +HANDLE_BAT(, 27930) +HANDLE_BAT(, 27931) +HANDLE_BAT(, 27932) +HANDLE_BAT(, 27933) +HANDLE_BAT(, 27934) +HANDLE_BAT(, 27935) +HANDLE_BAT(, 27936) +HANDLE_BAT(, 27937) +HANDLE_BAT(, 27938) +HANDLE_BAT(, 27939) +HANDLE_BAT(, 27940) +HANDLE_BAT(, 27941) +HANDLE_BAT(, 27942) +HANDLE_BAT(, 27943) +HANDLE_BAT(, 27944) +HANDLE_BAT(, 27945) +HANDLE_BAT(, 27946) +HANDLE_BAT(, 27947) +HANDLE_BAT(, 27948) +HANDLE_BAT(, 27949) +HANDLE_BAT(, 27950) +HANDLE_BAT(, 27951) +HANDLE_BAT(, 27952) +HANDLE_BAT(, 27953) +HANDLE_BAT(, 27954) +HANDLE_BAT(, 27955) +HANDLE_BAT(, 27956) +HANDLE_BAT(, 27957) +HANDLE_BAT(, 27958) +HANDLE_BAT(, 27959) +HANDLE_BAT(, 27960) +HANDLE_BAT(, 27961) +HANDLE_BAT(, 27962) +HANDLE_BAT(, 27963) +HANDLE_BAT(, 27964) +HANDLE_BAT(, 27965) +HANDLE_BAT(, 27966) +HANDLE_BAT(, 27967) +HANDLE_BAT(, 27968) +HANDLE_BAT(, 27969) +HANDLE_BAT(, 27970) +HANDLE_BAT(, 27971) +HANDLE_BAT(, 27972) +HANDLE_BAT(, 27973) +HANDLE_BAT(, 27974) +HANDLE_BAT(, 27975) +HANDLE_BAT(, 27976) +HANDLE_BAT(, 27977) +HANDLE_BAT(, 27978) +HANDLE_BAT(, 27979) +HANDLE_BAT(, 27980) +HANDLE_BAT(, 27981) +HANDLE_BAT(, 27982) +HANDLE_BAT(, 27983) +HANDLE_BAT(, 27984) +HANDLE_BAT(, 27985) +HANDLE_BAT(, 27986) +HANDLE_BAT(, 27987) +HANDLE_BAT(, 27988) +HANDLE_BAT(, 27989) +HANDLE_BAT(, 27990) +HANDLE_BAT(, 27991) +HANDLE_BAT(, 27992) +HANDLE_BAT(, 27993) +HANDLE_BAT(, 27994) +HANDLE_BAT(, 27995) +HANDLE_BAT(, 27996) +HANDLE_BAT(, 27997) +HANDLE_BAT(, 27998) +HANDLE_BAT(, 27999) +HANDLE_BAT(, 28000) +HANDLE_BAT(, 28001) +HANDLE_BAT(, 28002) +HANDLE_BAT(, 28003) +HANDLE_BAT(, 28004) +HANDLE_BAT(, 28005) +HANDLE_BAT(, 28006) +HANDLE_BAT(, 28007) +HANDLE_BAT(, 28008) +HANDLE_BAT(, 28009) +HANDLE_BAT(, 28010) +HANDLE_BAT(, 28011) +HANDLE_BAT(, 28012) +HANDLE_BAT(, 28013) +HANDLE_BAT(, 28014) +HANDLE_BAT(, 28015) +HANDLE_BAT(, 28016) +HANDLE_BAT(, 28017) +HANDLE_BAT(, 28018) +HANDLE_BAT(, 28019) +HANDLE_BAT(, 28020) +HANDLE_BAT(, 28021) +HANDLE_BAT(, 28022) +HANDLE_BAT(, 28023) +HANDLE_BAT(, 28024) +HANDLE_BAT(, 28025) +HANDLE_BAT(, 28026) +HANDLE_BAT(, 28027) +HANDLE_BAT(, 28028) +HANDLE_BAT(, 28029) +HANDLE_BAT(, 28030) +HANDLE_BAT(, 28031) +HANDLE_BAT(, 28032) +HANDLE_BAT(, 28033) +HANDLE_BAT(, 28034) +HANDLE_BAT(, 28035) +HANDLE_BAT(, 28036) +HANDLE_BAT(, 28037) +HANDLE_BAT(, 28038) +HANDLE_BAT(, 28039) +HANDLE_BAT(, 28040) +HANDLE_BAT(, 28041) +HANDLE_BAT(, 28042) +HANDLE_BAT(, 28043) +HANDLE_BAT(, 28044) +HANDLE_BAT(, 28045) +HANDLE_BAT(, 28046) +HANDLE_BAT(, 28047) +HANDLE_BAT(, 28048) +HANDLE_BAT(, 28049) +HANDLE_BAT(, 28050) +HANDLE_BAT(, 28051) +HANDLE_BAT(, 28052) +HANDLE_BAT(, 28053) +HANDLE_BAT(, 28054) +HANDLE_BAT(, 28055) +HANDLE_BAT(, 28056) +HANDLE_BAT(, 28057) +HANDLE_BAT(, 28058) +HANDLE_BAT(, 28059) +HANDLE_BAT(, 28060) +HANDLE_BAT(, 28061) +HANDLE_BAT(, 28062) +HANDLE_BAT(, 28063) +HANDLE_BAT(, 28064) +HANDLE_BAT(, 28065) +HANDLE_BAT(, 28066) +HANDLE_BAT(, 28067) +HANDLE_BAT(, 28068) +HANDLE_BAT(, 28069) +HANDLE_BAT(, 28070) +HANDLE_BAT(, 28071) +HANDLE_BAT(, 28072) +HANDLE_BAT(, 28073) +HANDLE_BAT(, 28074) +HANDLE_BAT(, 28075) +HANDLE_BAT(, 28076) +HANDLE_BAT(, 28077) +HANDLE_BAT(, 28078) +HANDLE_BAT(, 28079) +HANDLE_BAT(, 28080) +HANDLE_BAT(, 28081) +HANDLE_BAT(, 28082) +HANDLE_BAT(, 28083) +HANDLE_BAT(, 28084) +HANDLE_BAT(, 28085) +HANDLE_BAT(, 28086) +HANDLE_BAT(, 28087) +HANDLE_BAT(, 28088) +HANDLE_BAT(, 28089) +HANDLE_BAT(, 28090) +HANDLE_BAT(, 28091) +HANDLE_BAT(, 28092) +HANDLE_BAT(, 28093) +HANDLE_BAT(, 28094) +HANDLE_BAT(, 28095) +HANDLE_BAT(, 28096) +HANDLE_BAT(, 28097) +HANDLE_BAT(, 28098) +HANDLE_BAT(, 28099) +HANDLE_BAT(, 28100) +HANDLE_BAT(, 28101) +HANDLE_BAT(, 28102) +HANDLE_BAT(, 28103) +HANDLE_BAT(, 28104) +HANDLE_BAT(, 28105) +HANDLE_BAT(, 28106) +HANDLE_BAT(, 28107) +HANDLE_BAT(, 28108) +HANDLE_BAT(, 28109) +HANDLE_BAT(, 28110) +HANDLE_BAT(, 28111) +HANDLE_BAT(, 28112) +HANDLE_BAT(, 28113) +HANDLE_BAT(, 28114) +HANDLE_BAT(, 28115) +HANDLE_BAT(, 28116) +HANDLE_BAT(, 28117) +HANDLE_BAT(, 28118) +HANDLE_BAT(, 28119) +HANDLE_BAT(, 28120) +HANDLE_BAT(, 28121) +HANDLE_BAT(, 28122) +HANDLE_BAT(, 28123) +HANDLE_BAT(, 28124) +HANDLE_BAT(, 28125) +HANDLE_BAT(, 28126) +HANDLE_BAT(, 28127) +HANDLE_BAT(, 28128) +HANDLE_BAT(, 28129) +HANDLE_BAT(, 28130) +HANDLE_BAT(, 28131) +HANDLE_BAT(, 28132) +HANDLE_BAT(, 28133) +HANDLE_BAT(, 28134) +HANDLE_BAT(, 28135) +HANDLE_BAT(, 28136) +HANDLE_BAT(, 28137) +HANDLE_BAT(, 28138) +HANDLE_BAT(, 28139) +HANDLE_BAT(, 28140) +HANDLE_BAT(, 28141) +HANDLE_BAT(, 28142) +HANDLE_BAT(, 28143) +HANDLE_BAT(, 28144) +HANDLE_BAT(, 28145) +HANDLE_BAT(, 28146) +HANDLE_BAT(, 28147) +HANDLE_BAT(, 28148) +HANDLE_BAT(, 28149) +HANDLE_BAT(, 28150) +HANDLE_BAT(, 28151) +HANDLE_BAT(, 28152) +HANDLE_BAT(, 28153) +HANDLE_BAT(, 28154) +HANDLE_BAT(, 28155) +HANDLE_BAT(, 28156) +HANDLE_BAT(, 28157) +HANDLE_BAT(, 28158) +HANDLE_BAT(, 28159) +HANDLE_BAT(, 28160) +HANDLE_BAT(, 28161) +HANDLE_BAT(, 28162) +HANDLE_BAT(, 28163) +HANDLE_BAT(, 28164) +HANDLE_BAT(, 28165) +HANDLE_BAT(, 28166) +HANDLE_BAT(, 28167) +HANDLE_BAT(, 28168) +HANDLE_BAT(, 28169) +HANDLE_BAT(, 28170) +HANDLE_BAT(, 28171) +HANDLE_BAT(, 28172) +HANDLE_BAT(, 28173) +HANDLE_BAT(, 28174) +HANDLE_BAT(, 28175) +HANDLE_BAT(, 28176) +HANDLE_BAT(, 28177) +HANDLE_BAT(, 28178) +HANDLE_BAT(, 28179) +HANDLE_BAT(, 28180) +HANDLE_BAT(, 28181) +HANDLE_BAT(, 28182) +HANDLE_BAT(, 28183) +HANDLE_BAT(, 28184) +HANDLE_BAT(, 28185) +HANDLE_BAT(, 28186) +HANDLE_BAT(, 28187) +HANDLE_BAT(, 28188) +HANDLE_BAT(, 28189) +HANDLE_BAT(, 28190) +HANDLE_BAT(, 28191) +HANDLE_BAT(, 28192) +HANDLE_BAT(, 28193) +HANDLE_BAT(, 28194) +HANDLE_BAT(, 28195) +HANDLE_BAT(, 28196) +HANDLE_BAT(, 28197) +HANDLE_BAT(, 28198) +HANDLE_BAT(, 28199) +HANDLE_BAT(, 28200) +HANDLE_BAT(, 28201) +HANDLE_BAT(, 28202) +HANDLE_BAT(, 28203) +HANDLE_BAT(, 28204) +HANDLE_BAT(, 28205) +HANDLE_BAT(, 28206) +HANDLE_BAT(, 28207) +HANDLE_BAT(, 28208) +HANDLE_BAT(, 28209) +HANDLE_BAT(, 28210) +HANDLE_BAT(, 28211) +HANDLE_BAT(, 28212) +HANDLE_BAT(, 28213) +HANDLE_BAT(, 28214) +HANDLE_BAT(, 28215) +HANDLE_BAT(, 28216) +HANDLE_BAT(, 28217) +HANDLE_BAT(, 28218) +HANDLE_BAT(, 28219) +HANDLE_BAT(, 28220) +HANDLE_BAT(, 28221) +HANDLE_BAT(, 28222) +HANDLE_BAT(, 28223) +HANDLE_BAT(, 28224) +HANDLE_BAT(, 28225) +HANDLE_BAT(, 28226) +HANDLE_BAT(, 28227) +HANDLE_BAT(, 28228) +HANDLE_BAT(, 28229) +HANDLE_BAT(, 28230) +HANDLE_BAT(, 28231) +HANDLE_BAT(, 28232) +HANDLE_BAT(, 28233) +HANDLE_BAT(, 28234) +HANDLE_BAT(, 28235) +HANDLE_BAT(, 28236) +HANDLE_BAT(, 28237) +HANDLE_BAT(, 28238) +HANDLE_BAT(, 28239) +HANDLE_BAT(, 28240) +HANDLE_BAT(, 28241) +HANDLE_BAT(, 28242) +HANDLE_BAT(, 28243) +HANDLE_BAT(, 28244) +HANDLE_BAT(, 28245) +HANDLE_BAT(, 28246) +HANDLE_BAT(, 28247) +HANDLE_BAT(, 28248) +HANDLE_BAT(, 28249) +HANDLE_BAT(, 28250) +HANDLE_BAT(, 28251) +HANDLE_BAT(, 28252) +HANDLE_BAT(, 28253) +HANDLE_BAT(, 28254) +HANDLE_BAT(, 28255) +HANDLE_BAT(, 28256) +HANDLE_BAT(, 28257) +HANDLE_BAT(, 28258) +HANDLE_BAT(, 28259) +HANDLE_BAT(, 28260) +HANDLE_BAT(, 28261) +HANDLE_BAT(, 28262) +HANDLE_BAT(, 28263) +HANDLE_BAT(, 28264) +HANDLE_BAT(, 28265) +HANDLE_BAT(, 28266) +HANDLE_BAT(, 28267) +HANDLE_BAT(, 28268) +HANDLE_BAT(, 28269) +HANDLE_BAT(, 28270) +HANDLE_BAT(, 28271) +HANDLE_BAT(, 28272) +HANDLE_BAT(, 28273) +HANDLE_BAT(, 28274) +HANDLE_BAT(, 28275) +HANDLE_BAT(, 28276) +HANDLE_BAT(, 28277) +HANDLE_BAT(, 28278) +HANDLE_BAT(, 28279) +HANDLE_BAT(, 28280) +HANDLE_BAT(, 28281) +HANDLE_BAT(, 28282) +HANDLE_BAT(, 28283) +HANDLE_BAT(, 28284) +HANDLE_BAT(, 28285) +HANDLE_BAT(, 28286) +HANDLE_BAT(, 28287) +HANDLE_BAT(, 28288) +HANDLE_BAT(, 28289) +HANDLE_BAT(, 28290) +HANDLE_BAT(, 28291) +HANDLE_BAT(, 28292) +HANDLE_BAT(, 28293) +HANDLE_BAT(, 28294) +HANDLE_BAT(, 28295) +HANDLE_BAT(, 28296) +HANDLE_BAT(, 28297) +HANDLE_BAT(, 28298) +HANDLE_BAT(, 28299) +HANDLE_BAT(, 28300) +HANDLE_BAT(, 28301) +HANDLE_BAT(, 28302) +HANDLE_BAT(, 28303) +HANDLE_BAT(, 28304) +HANDLE_BAT(, 28305) +HANDLE_BAT(, 28306) +HANDLE_BAT(, 28307) +HANDLE_BAT(, 28308) +HANDLE_BAT(, 28309) +HANDLE_BAT(, 28310) +HANDLE_BAT(, 28311) +HANDLE_BAT(, 28312) +HANDLE_BAT(, 28313) +HANDLE_BAT(, 28314) +HANDLE_BAT(, 28315) +HANDLE_BAT(, 28316) +HANDLE_BAT(, 28317) +HANDLE_BAT(, 28318) +HANDLE_BAT(, 28319) +HANDLE_BAT(, 28320) +HANDLE_BAT(, 28321) +HANDLE_BAT(, 28322) +HANDLE_BAT(, 28323) +HANDLE_BAT(, 28324) +HANDLE_BAT(, 28325) +HANDLE_BAT(, 28326) +HANDLE_BAT(, 28327) +HANDLE_BAT(, 28328) +HANDLE_BAT(, 28329) +HANDLE_BAT(, 28330) +HANDLE_BAT(, 28331) +HANDLE_BAT(, 28332) +HANDLE_BAT(, 28333) +HANDLE_BAT(, 28334) +HANDLE_BAT(, 28335) +HANDLE_BAT(, 28336) +HANDLE_BAT(, 28337) +HANDLE_BAT(, 28338) +HANDLE_BAT(, 28339) +HANDLE_BAT(, 28340) +HANDLE_BAT(, 28341) +HANDLE_BAT(, 28342) +HANDLE_BAT(, 28343) +HANDLE_BAT(, 28344) +HANDLE_BAT(, 28345) +HANDLE_BAT(, 28346) +HANDLE_BAT(, 28347) +HANDLE_BAT(, 28348) +HANDLE_BAT(, 28349) +HANDLE_BAT(, 28350) +HANDLE_BAT(, 28351) +HANDLE_BAT(, 28352) +HANDLE_BAT(, 28353) +HANDLE_BAT(, 28354) +HANDLE_BAT(, 28355) +HANDLE_BAT(, 28356) +HANDLE_BAT(, 28357) +HANDLE_BAT(, 28358) +HANDLE_BAT(, 28359) +HANDLE_BAT(, 28360) +HANDLE_BAT(, 28361) +HANDLE_BAT(, 28362) +HANDLE_BAT(, 28363) +HANDLE_BAT(, 28364) +HANDLE_BAT(, 28365) +HANDLE_BAT(, 28366) +HANDLE_BAT(, 28367) +HANDLE_BAT(, 28368) +HANDLE_BAT(, 28369) +HANDLE_BAT(, 28370) +HANDLE_BAT(, 28371) +HANDLE_BAT(, 28372) +HANDLE_BAT(, 28373) +HANDLE_BAT(, 28374) +HANDLE_BAT(, 28375) +HANDLE_BAT(, 28376) +HANDLE_BAT(, 28377) +HANDLE_BAT(, 28378) +HANDLE_BAT(, 28379) +HANDLE_BAT(, 28380) +HANDLE_BAT(, 28381) +HANDLE_BAT(, 28382) +HANDLE_BAT(, 28383) +HANDLE_BAT(, 28384) +HANDLE_BAT(, 28385) +HANDLE_BAT(, 28386) +HANDLE_BAT(, 28387) +HANDLE_BAT(, 28388) +HANDLE_BAT(, 28389) +HANDLE_BAT(, 28390) +HANDLE_BAT(, 28391) +HANDLE_BAT(, 28392) +HANDLE_BAT(, 28393) +HANDLE_BAT(, 28394) +HANDLE_BAT(, 28395) +HANDLE_BAT(, 28396) +HANDLE_BAT(, 28397) +HANDLE_BAT(, 28398) +HANDLE_BAT(, 28399) +HANDLE_BAT(, 28400) +HANDLE_BAT(, 28401) +HANDLE_BAT(, 28402) +HANDLE_BAT(, 28403) +HANDLE_BAT(, 28404) +HANDLE_BAT(, 28405) +HANDLE_BAT(, 28406) +HANDLE_BAT(, 28407) +HANDLE_BAT(, 28408) +HANDLE_BAT(, 28409) +HANDLE_BAT(, 28410) +HANDLE_BAT(, 28411) +HANDLE_BAT(, 28412) +HANDLE_BAT(, 28413) +HANDLE_BAT(, 28414) +HANDLE_BAT(, 28415) +HANDLE_BAT(, 28416) +HANDLE_BAT(, 28417) +HANDLE_BAT(, 28418) +HANDLE_BAT(, 28419) +HANDLE_BAT(, 28420) +HANDLE_BAT(, 28421) +HANDLE_BAT(, 28422) +HANDLE_BAT(, 28423) +HANDLE_BAT(, 28424) +HANDLE_BAT(, 28425) +HANDLE_BAT(, 28426) +HANDLE_BAT(, 28427) +HANDLE_BAT(, 28428) +HANDLE_BAT(, 28429) +HANDLE_BAT(, 28430) +HANDLE_BAT(, 28431) +HANDLE_BAT(, 28432) +HANDLE_BAT(, 28433) +HANDLE_BAT(, 28434) +HANDLE_BAT(, 28435) +HANDLE_BAT(, 28436) +HANDLE_BAT(, 28437) +HANDLE_BAT(, 28438) +HANDLE_BAT(, 28439) +HANDLE_BAT(, 28440) +HANDLE_BAT(, 28441) +HANDLE_BAT(, 28442) +HANDLE_BAT(, 28443) +HANDLE_BAT(, 28444) +HANDLE_BAT(, 28445) +HANDLE_BAT(, 28446) +HANDLE_BAT(, 28447) +HANDLE_BAT(, 28448) +HANDLE_BAT(, 28449) +HANDLE_BAT(, 28450) +HANDLE_BAT(, 28451) +HANDLE_BAT(, 28452) +HANDLE_BAT(, 28453) +HANDLE_BAT(, 28454) +HANDLE_BAT(, 28455) +HANDLE_BAT(, 28456) +HANDLE_BAT(, 28457) +HANDLE_BAT(, 28458) +HANDLE_BAT(, 28459) +HANDLE_BAT(, 28460) +HANDLE_BAT(, 28461) +HANDLE_BAT(, 28462) +HANDLE_BAT(, 28463) +HANDLE_BAT(, 28464) +HANDLE_BAT(, 28465) +HANDLE_BAT(, 28466) +HANDLE_BAT(, 28467) +HANDLE_BAT(, 28468) +HANDLE_BAT(, 28469) +HANDLE_BAT(, 28470) +HANDLE_BAT(, 28471) +HANDLE_BAT(, 28472) +HANDLE_BAT(, 28473) +HANDLE_BAT(, 28474) +HANDLE_BAT(, 28475) +HANDLE_BAT(, 28476) +HANDLE_BAT(, 28477) +HANDLE_BAT(, 28478) +HANDLE_BAT(, 28479) +HANDLE_BAT(, 28480) +HANDLE_BAT(, 28481) +HANDLE_BAT(, 28482) +HANDLE_BAT(, 28483) +HANDLE_BAT(, 28484) +HANDLE_BAT(, 28485) +HANDLE_BAT(, 28486) +HANDLE_BAT(, 28487) +HANDLE_BAT(, 28488) +HANDLE_BAT(, 28489) +HANDLE_BAT(, 28490) +HANDLE_BAT(, 28491) +HANDLE_BAT(, 28492) +HANDLE_BAT(, 28493) +HANDLE_BAT(, 28494) +HANDLE_BAT(, 28495) +HANDLE_BAT(, 28496) +HANDLE_BAT(, 28497) +HANDLE_BAT(, 28498) +HANDLE_BAT(, 28499) +HANDLE_BAT(, 28500) +HANDLE_BAT(, 28501) +HANDLE_BAT(, 28502) +HANDLE_BAT(, 28503) +HANDLE_BAT(, 28504) +HANDLE_BAT(, 28505) +HANDLE_BAT(, 28506) +HANDLE_BAT(, 28507) +HANDLE_BAT(, 28508) +HANDLE_BAT(, 28509) +HANDLE_BAT(, 28510) +HANDLE_BAT(, 28511) +HANDLE_BAT(, 28512) +HANDLE_BAT(, 28513) +HANDLE_BAT(, 28514) +HANDLE_BAT(, 28515) +HANDLE_BAT(, 28516) +HANDLE_BAT(, 28517) +HANDLE_BAT(, 28518) +HANDLE_BAT(, 28519) +HANDLE_BAT(, 28520) +HANDLE_BAT(, 28521) +HANDLE_BAT(, 28522) +HANDLE_BAT(, 28523) +HANDLE_BAT(, 28524) +HANDLE_BAT(, 28525) +HANDLE_BAT(, 28526) +HANDLE_BAT(, 28527) +HANDLE_BAT(, 28528) +HANDLE_BAT(, 28529) +HANDLE_BAT(, 28530) +HANDLE_BAT(, 28531) +HANDLE_BAT(, 28532) +HANDLE_BAT(, 28533) +HANDLE_BAT(, 28534) +HANDLE_BAT(, 28535) +HANDLE_BAT(, 28536) +HANDLE_BAT(, 28537) +HANDLE_BAT(, 28538) +HANDLE_BAT(, 28539) +HANDLE_BAT(, 28540) +HANDLE_BAT(, 28541) +HANDLE_BAT(, 28542) +HANDLE_BAT(, 28543) +HANDLE_BAT(, 28544) +HANDLE_BAT(, 28545) +HANDLE_BAT(, 28546) +HANDLE_BAT(, 28547) +HANDLE_BAT(, 28548) +HANDLE_BAT(, 28549) +HANDLE_BAT(, 28550) +HANDLE_BAT(, 28551) +HANDLE_BAT(, 28552) +HANDLE_BAT(, 28553) +HANDLE_BAT(, 28554) +HANDLE_BAT(, 28555) +HANDLE_BAT(, 28556) +HANDLE_BAT(, 28557) +HANDLE_BAT(, 28558) +HANDLE_BAT(, 28559) +HANDLE_BAT(, 28560) +HANDLE_BAT(, 28561) +HANDLE_BAT(, 28562) +HANDLE_BAT(, 28563) +HANDLE_BAT(, 28564) +HANDLE_BAT(, 28565) +HANDLE_BAT(, 28566) +HANDLE_BAT(, 28567) +HANDLE_BAT(, 28568) +HANDLE_BAT(, 28569) +HANDLE_BAT(, 28570) +HANDLE_BAT(, 28571) +HANDLE_BAT(, 28572) +HANDLE_BAT(, 28573) +HANDLE_BAT(, 28574) +HANDLE_BAT(, 28575) +HANDLE_BAT(, 28576) +HANDLE_BAT(, 28577) +HANDLE_BAT(, 28578) +HANDLE_BAT(, 28579) +HANDLE_BAT(, 28580) +HANDLE_BAT(, 28581) +HANDLE_BAT(, 28582) +HANDLE_BAT(, 28583) +HANDLE_BAT(, 28584) +HANDLE_BAT(, 28585) +HANDLE_BAT(, 28586) +HANDLE_BAT(, 28587) +HANDLE_BAT(, 28588) +HANDLE_BAT(, 28589) +HANDLE_BAT(, 28590) +HANDLE_BAT(, 28591) +HANDLE_BAT(, 28592) +HANDLE_BAT(, 28593) +HANDLE_BAT(, 28594) +HANDLE_BAT(, 28595) +HANDLE_BAT(, 28596) +HANDLE_BAT(, 28597) +HANDLE_BAT(, 28598) +HANDLE_BAT(, 28599) +HANDLE_BAT(, 28600) +HANDLE_BAT(, 28601) +HANDLE_BAT(, 28602) +HANDLE_BAT(, 28603) +HANDLE_BAT(, 28604) +HANDLE_BAT(, 28605) +HANDLE_BAT(, 28606) +HANDLE_BAT(, 28607) +HANDLE_BAT(, 28608) +HANDLE_BAT(, 28609) +HANDLE_BAT(, 28610) +HANDLE_BAT(, 28611) +HANDLE_BAT(, 28612) +HANDLE_BAT(, 28613) +HANDLE_BAT(, 28614) +HANDLE_BAT(, 28615) +HANDLE_BAT(, 28616) +HANDLE_BAT(, 28617) +HANDLE_BAT(, 28618) +HANDLE_BAT(, 28619) +HANDLE_BAT(, 28620) +HANDLE_BAT(, 28621) +HANDLE_BAT(, 28622) +HANDLE_BAT(, 28623) +HANDLE_BAT(, 28624) +HANDLE_BAT(, 28625) +HANDLE_BAT(, 28626) +HANDLE_BAT(, 28627) +HANDLE_BAT(, 28628) +HANDLE_BAT(, 28629) +HANDLE_BAT(, 28630) +HANDLE_BAT(, 28631) +HANDLE_BAT(, 28632) +HANDLE_BAT(, 28633) +HANDLE_BAT(, 28634) +HANDLE_BAT(, 28635) +HANDLE_BAT(, 28636) +HANDLE_BAT(, 28637) +HANDLE_BAT(, 28638) +HANDLE_BAT(, 28639) +HANDLE_BAT(, 28640) +HANDLE_BAT(, 28641) +HANDLE_BAT(, 28642) +HANDLE_BAT(, 28643) +HANDLE_BAT(, 28644) +HANDLE_BAT(, 28645) +HANDLE_BAT(, 28646) +HANDLE_BAT(, 28647) +HANDLE_BAT(, 28648) +HANDLE_BAT(, 28649) +HANDLE_BAT(, 28650) +HANDLE_BAT(, 28651) +HANDLE_BAT(, 28652) +HANDLE_BAT(, 28653) +HANDLE_BAT(, 28654) +HANDLE_BAT(, 28655) +HANDLE_BAT(, 28656) +HANDLE_BAT(, 28657) +HANDLE_BAT(, 28658) +HANDLE_BAT(, 28659) +HANDLE_BAT(, 28660) +HANDLE_BAT(, 28661) +HANDLE_BAT(, 28662) +HANDLE_BAT(, 28663) +HANDLE_BAT(, 28664) +HANDLE_BAT(, 28665) +HANDLE_BAT(, 28666) +HANDLE_BAT(, 28667) +HANDLE_BAT(, 28668) +HANDLE_BAT(, 28669) +HANDLE_BAT(, 28670) +HANDLE_BAT(, 28671) +HANDLE_BAT(, 28672) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 27649) +HANDLE_BAT(APINT_TYPE_PREFIX, 27650) +HANDLE_BAT(APINT_TYPE_PREFIX, 27651) +HANDLE_BAT(APINT_TYPE_PREFIX, 27652) +HANDLE_BAT(APINT_TYPE_PREFIX, 27653) +HANDLE_BAT(APINT_TYPE_PREFIX, 27654) +HANDLE_BAT(APINT_TYPE_PREFIX, 27655) +HANDLE_BAT(APINT_TYPE_PREFIX, 27656) +HANDLE_BAT(APINT_TYPE_PREFIX, 27657) +HANDLE_BAT(APINT_TYPE_PREFIX, 27658) +HANDLE_BAT(APINT_TYPE_PREFIX, 27659) +HANDLE_BAT(APINT_TYPE_PREFIX, 27660) +HANDLE_BAT(APINT_TYPE_PREFIX, 27661) +HANDLE_BAT(APINT_TYPE_PREFIX, 27662) +HANDLE_BAT(APINT_TYPE_PREFIX, 27663) +HANDLE_BAT(APINT_TYPE_PREFIX, 27664) +HANDLE_BAT(APINT_TYPE_PREFIX, 27665) +HANDLE_BAT(APINT_TYPE_PREFIX, 27666) +HANDLE_BAT(APINT_TYPE_PREFIX, 27667) +HANDLE_BAT(APINT_TYPE_PREFIX, 27668) +HANDLE_BAT(APINT_TYPE_PREFIX, 27669) +HANDLE_BAT(APINT_TYPE_PREFIX, 27670) +HANDLE_BAT(APINT_TYPE_PREFIX, 27671) +HANDLE_BAT(APINT_TYPE_PREFIX, 27672) +HANDLE_BAT(APINT_TYPE_PREFIX, 27673) +HANDLE_BAT(APINT_TYPE_PREFIX, 27674) +HANDLE_BAT(APINT_TYPE_PREFIX, 27675) +HANDLE_BAT(APINT_TYPE_PREFIX, 27676) +HANDLE_BAT(APINT_TYPE_PREFIX, 27677) +HANDLE_BAT(APINT_TYPE_PREFIX, 27678) +HANDLE_BAT(APINT_TYPE_PREFIX, 27679) +HANDLE_BAT(APINT_TYPE_PREFIX, 27680) +HANDLE_BAT(APINT_TYPE_PREFIX, 27681) +HANDLE_BAT(APINT_TYPE_PREFIX, 27682) +HANDLE_BAT(APINT_TYPE_PREFIX, 27683) +HANDLE_BAT(APINT_TYPE_PREFIX, 27684) +HANDLE_BAT(APINT_TYPE_PREFIX, 27685) +HANDLE_BAT(APINT_TYPE_PREFIX, 27686) +HANDLE_BAT(APINT_TYPE_PREFIX, 27687) +HANDLE_BAT(APINT_TYPE_PREFIX, 27688) +HANDLE_BAT(APINT_TYPE_PREFIX, 27689) +HANDLE_BAT(APINT_TYPE_PREFIX, 27690) +HANDLE_BAT(APINT_TYPE_PREFIX, 27691) +HANDLE_BAT(APINT_TYPE_PREFIX, 27692) +HANDLE_BAT(APINT_TYPE_PREFIX, 27693) +HANDLE_BAT(APINT_TYPE_PREFIX, 27694) +HANDLE_BAT(APINT_TYPE_PREFIX, 27695) +HANDLE_BAT(APINT_TYPE_PREFIX, 27696) +HANDLE_BAT(APINT_TYPE_PREFIX, 27697) +HANDLE_BAT(APINT_TYPE_PREFIX, 27698) +HANDLE_BAT(APINT_TYPE_PREFIX, 27699) +HANDLE_BAT(APINT_TYPE_PREFIX, 27700) +HANDLE_BAT(APINT_TYPE_PREFIX, 27701) +HANDLE_BAT(APINT_TYPE_PREFIX, 27702) +HANDLE_BAT(APINT_TYPE_PREFIX, 27703) +HANDLE_BAT(APINT_TYPE_PREFIX, 27704) +HANDLE_BAT(APINT_TYPE_PREFIX, 27705) +HANDLE_BAT(APINT_TYPE_PREFIX, 27706) +HANDLE_BAT(APINT_TYPE_PREFIX, 27707) +HANDLE_BAT(APINT_TYPE_PREFIX, 27708) +HANDLE_BAT(APINT_TYPE_PREFIX, 27709) +HANDLE_BAT(APINT_TYPE_PREFIX, 27710) +HANDLE_BAT(APINT_TYPE_PREFIX, 27711) +HANDLE_BAT(APINT_TYPE_PREFIX, 27712) +HANDLE_BAT(APINT_TYPE_PREFIX, 27713) +HANDLE_BAT(APINT_TYPE_PREFIX, 27714) +HANDLE_BAT(APINT_TYPE_PREFIX, 27715) +HANDLE_BAT(APINT_TYPE_PREFIX, 27716) +HANDLE_BAT(APINT_TYPE_PREFIX, 27717) +HANDLE_BAT(APINT_TYPE_PREFIX, 27718) +HANDLE_BAT(APINT_TYPE_PREFIX, 27719) +HANDLE_BAT(APINT_TYPE_PREFIX, 27720) +HANDLE_BAT(APINT_TYPE_PREFIX, 27721) +HANDLE_BAT(APINT_TYPE_PREFIX, 27722) +HANDLE_BAT(APINT_TYPE_PREFIX, 27723) +HANDLE_BAT(APINT_TYPE_PREFIX, 27724) +HANDLE_BAT(APINT_TYPE_PREFIX, 27725) +HANDLE_BAT(APINT_TYPE_PREFIX, 27726) +HANDLE_BAT(APINT_TYPE_PREFIX, 27727) +HANDLE_BAT(APINT_TYPE_PREFIX, 27728) +HANDLE_BAT(APINT_TYPE_PREFIX, 27729) +HANDLE_BAT(APINT_TYPE_PREFIX, 27730) +HANDLE_BAT(APINT_TYPE_PREFIX, 27731) +HANDLE_BAT(APINT_TYPE_PREFIX, 27732) +HANDLE_BAT(APINT_TYPE_PREFIX, 27733) +HANDLE_BAT(APINT_TYPE_PREFIX, 27734) +HANDLE_BAT(APINT_TYPE_PREFIX, 27735) +HANDLE_BAT(APINT_TYPE_PREFIX, 27736) +HANDLE_BAT(APINT_TYPE_PREFIX, 27737) +HANDLE_BAT(APINT_TYPE_PREFIX, 27738) +HANDLE_BAT(APINT_TYPE_PREFIX, 27739) +HANDLE_BAT(APINT_TYPE_PREFIX, 27740) +HANDLE_BAT(APINT_TYPE_PREFIX, 27741) +HANDLE_BAT(APINT_TYPE_PREFIX, 27742) +HANDLE_BAT(APINT_TYPE_PREFIX, 27743) +HANDLE_BAT(APINT_TYPE_PREFIX, 27744) +HANDLE_BAT(APINT_TYPE_PREFIX, 27745) +HANDLE_BAT(APINT_TYPE_PREFIX, 27746) +HANDLE_BAT(APINT_TYPE_PREFIX, 27747) +HANDLE_BAT(APINT_TYPE_PREFIX, 27748) +HANDLE_BAT(APINT_TYPE_PREFIX, 27749) +HANDLE_BAT(APINT_TYPE_PREFIX, 27750) +HANDLE_BAT(APINT_TYPE_PREFIX, 27751) +HANDLE_BAT(APINT_TYPE_PREFIX, 27752) +HANDLE_BAT(APINT_TYPE_PREFIX, 27753) +HANDLE_BAT(APINT_TYPE_PREFIX, 27754) +HANDLE_BAT(APINT_TYPE_PREFIX, 27755) +HANDLE_BAT(APINT_TYPE_PREFIX, 27756) +HANDLE_BAT(APINT_TYPE_PREFIX, 27757) +HANDLE_BAT(APINT_TYPE_PREFIX, 27758) +HANDLE_BAT(APINT_TYPE_PREFIX, 27759) +HANDLE_BAT(APINT_TYPE_PREFIX, 27760) +HANDLE_BAT(APINT_TYPE_PREFIX, 27761) +HANDLE_BAT(APINT_TYPE_PREFIX, 27762) +HANDLE_BAT(APINT_TYPE_PREFIX, 27763) +HANDLE_BAT(APINT_TYPE_PREFIX, 27764) +HANDLE_BAT(APINT_TYPE_PREFIX, 27765) +HANDLE_BAT(APINT_TYPE_PREFIX, 27766) +HANDLE_BAT(APINT_TYPE_PREFIX, 27767) +HANDLE_BAT(APINT_TYPE_PREFIX, 27768) +HANDLE_BAT(APINT_TYPE_PREFIX, 27769) +HANDLE_BAT(APINT_TYPE_PREFIX, 27770) +HANDLE_BAT(APINT_TYPE_PREFIX, 27771) +HANDLE_BAT(APINT_TYPE_PREFIX, 27772) +HANDLE_BAT(APINT_TYPE_PREFIX, 27773) +HANDLE_BAT(APINT_TYPE_PREFIX, 27774) +HANDLE_BAT(APINT_TYPE_PREFIX, 27775) +HANDLE_BAT(APINT_TYPE_PREFIX, 27776) +HANDLE_BAT(APINT_TYPE_PREFIX, 27777) +HANDLE_BAT(APINT_TYPE_PREFIX, 27778) +HANDLE_BAT(APINT_TYPE_PREFIX, 27779) +HANDLE_BAT(APINT_TYPE_PREFIX, 27780) +HANDLE_BAT(APINT_TYPE_PREFIX, 27781) +HANDLE_BAT(APINT_TYPE_PREFIX, 27782) +HANDLE_BAT(APINT_TYPE_PREFIX, 27783) +HANDLE_BAT(APINT_TYPE_PREFIX, 27784) +HANDLE_BAT(APINT_TYPE_PREFIX, 27785) +HANDLE_BAT(APINT_TYPE_PREFIX, 27786) +HANDLE_BAT(APINT_TYPE_PREFIX, 27787) +HANDLE_BAT(APINT_TYPE_PREFIX, 27788) +HANDLE_BAT(APINT_TYPE_PREFIX, 27789) +HANDLE_BAT(APINT_TYPE_PREFIX, 27790) +HANDLE_BAT(APINT_TYPE_PREFIX, 27791) +HANDLE_BAT(APINT_TYPE_PREFIX, 27792) +HANDLE_BAT(APINT_TYPE_PREFIX, 27793) +HANDLE_BAT(APINT_TYPE_PREFIX, 27794) +HANDLE_BAT(APINT_TYPE_PREFIX, 27795) +HANDLE_BAT(APINT_TYPE_PREFIX, 27796) +HANDLE_BAT(APINT_TYPE_PREFIX, 27797) +HANDLE_BAT(APINT_TYPE_PREFIX, 27798) +HANDLE_BAT(APINT_TYPE_PREFIX, 27799) +HANDLE_BAT(APINT_TYPE_PREFIX, 27800) +HANDLE_BAT(APINT_TYPE_PREFIX, 27801) +HANDLE_BAT(APINT_TYPE_PREFIX, 27802) +HANDLE_BAT(APINT_TYPE_PREFIX, 27803) +HANDLE_BAT(APINT_TYPE_PREFIX, 27804) +HANDLE_BAT(APINT_TYPE_PREFIX, 27805) +HANDLE_BAT(APINT_TYPE_PREFIX, 27806) +HANDLE_BAT(APINT_TYPE_PREFIX, 27807) +HANDLE_BAT(APINT_TYPE_PREFIX, 27808) +HANDLE_BAT(APINT_TYPE_PREFIX, 27809) +HANDLE_BAT(APINT_TYPE_PREFIX, 27810) +HANDLE_BAT(APINT_TYPE_PREFIX, 27811) +HANDLE_BAT(APINT_TYPE_PREFIX, 27812) +HANDLE_BAT(APINT_TYPE_PREFIX, 27813) +HANDLE_BAT(APINT_TYPE_PREFIX, 27814) +HANDLE_BAT(APINT_TYPE_PREFIX, 27815) +HANDLE_BAT(APINT_TYPE_PREFIX, 27816) +HANDLE_BAT(APINT_TYPE_PREFIX, 27817) +HANDLE_BAT(APINT_TYPE_PREFIX, 27818) +HANDLE_BAT(APINT_TYPE_PREFIX, 27819) +HANDLE_BAT(APINT_TYPE_PREFIX, 27820) +HANDLE_BAT(APINT_TYPE_PREFIX, 27821) +HANDLE_BAT(APINT_TYPE_PREFIX, 27822) +HANDLE_BAT(APINT_TYPE_PREFIX, 27823) +HANDLE_BAT(APINT_TYPE_PREFIX, 27824) +HANDLE_BAT(APINT_TYPE_PREFIX, 27825) +HANDLE_BAT(APINT_TYPE_PREFIX, 27826) +HANDLE_BAT(APINT_TYPE_PREFIX, 27827) +HANDLE_BAT(APINT_TYPE_PREFIX, 27828) +HANDLE_BAT(APINT_TYPE_PREFIX, 27829) +HANDLE_BAT(APINT_TYPE_PREFIX, 27830) +HANDLE_BAT(APINT_TYPE_PREFIX, 27831) +HANDLE_BAT(APINT_TYPE_PREFIX, 27832) +HANDLE_BAT(APINT_TYPE_PREFIX, 27833) +HANDLE_BAT(APINT_TYPE_PREFIX, 27834) +HANDLE_BAT(APINT_TYPE_PREFIX, 27835) +HANDLE_BAT(APINT_TYPE_PREFIX, 27836) +HANDLE_BAT(APINT_TYPE_PREFIX, 27837) +HANDLE_BAT(APINT_TYPE_PREFIX, 27838) +HANDLE_BAT(APINT_TYPE_PREFIX, 27839) +HANDLE_BAT(APINT_TYPE_PREFIX, 27840) +HANDLE_BAT(APINT_TYPE_PREFIX, 27841) +HANDLE_BAT(APINT_TYPE_PREFIX, 27842) +HANDLE_BAT(APINT_TYPE_PREFIX, 27843) +HANDLE_BAT(APINT_TYPE_PREFIX, 27844) +HANDLE_BAT(APINT_TYPE_PREFIX, 27845) +HANDLE_BAT(APINT_TYPE_PREFIX, 27846) +HANDLE_BAT(APINT_TYPE_PREFIX, 27847) +HANDLE_BAT(APINT_TYPE_PREFIX, 27848) +HANDLE_BAT(APINT_TYPE_PREFIX, 27849) +HANDLE_BAT(APINT_TYPE_PREFIX, 27850) +HANDLE_BAT(APINT_TYPE_PREFIX, 27851) +HANDLE_BAT(APINT_TYPE_PREFIX, 27852) +HANDLE_BAT(APINT_TYPE_PREFIX, 27853) +HANDLE_BAT(APINT_TYPE_PREFIX, 27854) +HANDLE_BAT(APINT_TYPE_PREFIX, 27855) +HANDLE_BAT(APINT_TYPE_PREFIX, 27856) +HANDLE_BAT(APINT_TYPE_PREFIX, 27857) +HANDLE_BAT(APINT_TYPE_PREFIX, 27858) +HANDLE_BAT(APINT_TYPE_PREFIX, 27859) +HANDLE_BAT(APINT_TYPE_PREFIX, 27860) +HANDLE_BAT(APINT_TYPE_PREFIX, 27861) +HANDLE_BAT(APINT_TYPE_PREFIX, 27862) +HANDLE_BAT(APINT_TYPE_PREFIX, 27863) +HANDLE_BAT(APINT_TYPE_PREFIX, 27864) +HANDLE_BAT(APINT_TYPE_PREFIX, 27865) +HANDLE_BAT(APINT_TYPE_PREFIX, 27866) +HANDLE_BAT(APINT_TYPE_PREFIX, 27867) +HANDLE_BAT(APINT_TYPE_PREFIX, 27868) +HANDLE_BAT(APINT_TYPE_PREFIX, 27869) +HANDLE_BAT(APINT_TYPE_PREFIX, 27870) +HANDLE_BAT(APINT_TYPE_PREFIX, 27871) +HANDLE_BAT(APINT_TYPE_PREFIX, 27872) +HANDLE_BAT(APINT_TYPE_PREFIX, 27873) +HANDLE_BAT(APINT_TYPE_PREFIX, 27874) +HANDLE_BAT(APINT_TYPE_PREFIX, 27875) +HANDLE_BAT(APINT_TYPE_PREFIX, 27876) +HANDLE_BAT(APINT_TYPE_PREFIX, 27877) +HANDLE_BAT(APINT_TYPE_PREFIX, 27878) +HANDLE_BAT(APINT_TYPE_PREFIX, 27879) +HANDLE_BAT(APINT_TYPE_PREFIX, 27880) +HANDLE_BAT(APINT_TYPE_PREFIX, 27881) +HANDLE_BAT(APINT_TYPE_PREFIX, 27882) +HANDLE_BAT(APINT_TYPE_PREFIX, 27883) +HANDLE_BAT(APINT_TYPE_PREFIX, 27884) +HANDLE_BAT(APINT_TYPE_PREFIX, 27885) +HANDLE_BAT(APINT_TYPE_PREFIX, 27886) +HANDLE_BAT(APINT_TYPE_PREFIX, 27887) +HANDLE_BAT(APINT_TYPE_PREFIX, 27888) +HANDLE_BAT(APINT_TYPE_PREFIX, 27889) +HANDLE_BAT(APINT_TYPE_PREFIX, 27890) +HANDLE_BAT(APINT_TYPE_PREFIX, 27891) +HANDLE_BAT(APINT_TYPE_PREFIX, 27892) +HANDLE_BAT(APINT_TYPE_PREFIX, 27893) +HANDLE_BAT(APINT_TYPE_PREFIX, 27894) +HANDLE_BAT(APINT_TYPE_PREFIX, 27895) +HANDLE_BAT(APINT_TYPE_PREFIX, 27896) +HANDLE_BAT(APINT_TYPE_PREFIX, 27897) +HANDLE_BAT(APINT_TYPE_PREFIX, 27898) +HANDLE_BAT(APINT_TYPE_PREFIX, 27899) +HANDLE_BAT(APINT_TYPE_PREFIX, 27900) +HANDLE_BAT(APINT_TYPE_PREFIX, 27901) +HANDLE_BAT(APINT_TYPE_PREFIX, 27902) +HANDLE_BAT(APINT_TYPE_PREFIX, 27903) +HANDLE_BAT(APINT_TYPE_PREFIX, 27904) +HANDLE_BAT(APINT_TYPE_PREFIX, 27905) +HANDLE_BAT(APINT_TYPE_PREFIX, 27906) +HANDLE_BAT(APINT_TYPE_PREFIX, 27907) +HANDLE_BAT(APINT_TYPE_PREFIX, 27908) +HANDLE_BAT(APINT_TYPE_PREFIX, 27909) +HANDLE_BAT(APINT_TYPE_PREFIX, 27910) +HANDLE_BAT(APINT_TYPE_PREFIX, 27911) +HANDLE_BAT(APINT_TYPE_PREFIX, 27912) +HANDLE_BAT(APINT_TYPE_PREFIX, 27913) +HANDLE_BAT(APINT_TYPE_PREFIX, 27914) +HANDLE_BAT(APINT_TYPE_PREFIX, 27915) +HANDLE_BAT(APINT_TYPE_PREFIX, 27916) +HANDLE_BAT(APINT_TYPE_PREFIX, 27917) +HANDLE_BAT(APINT_TYPE_PREFIX, 27918) +HANDLE_BAT(APINT_TYPE_PREFIX, 27919) +HANDLE_BAT(APINT_TYPE_PREFIX, 27920) +HANDLE_BAT(APINT_TYPE_PREFIX, 27921) +HANDLE_BAT(APINT_TYPE_PREFIX, 27922) +HANDLE_BAT(APINT_TYPE_PREFIX, 27923) +HANDLE_BAT(APINT_TYPE_PREFIX, 27924) +HANDLE_BAT(APINT_TYPE_PREFIX, 27925) +HANDLE_BAT(APINT_TYPE_PREFIX, 27926) +HANDLE_BAT(APINT_TYPE_PREFIX, 27927) +HANDLE_BAT(APINT_TYPE_PREFIX, 27928) +HANDLE_BAT(APINT_TYPE_PREFIX, 27929) +HANDLE_BAT(APINT_TYPE_PREFIX, 27930) +HANDLE_BAT(APINT_TYPE_PREFIX, 27931) +HANDLE_BAT(APINT_TYPE_PREFIX, 27932) +HANDLE_BAT(APINT_TYPE_PREFIX, 27933) +HANDLE_BAT(APINT_TYPE_PREFIX, 27934) +HANDLE_BAT(APINT_TYPE_PREFIX, 27935) +HANDLE_BAT(APINT_TYPE_PREFIX, 27936) +HANDLE_BAT(APINT_TYPE_PREFIX, 27937) +HANDLE_BAT(APINT_TYPE_PREFIX, 27938) +HANDLE_BAT(APINT_TYPE_PREFIX, 27939) +HANDLE_BAT(APINT_TYPE_PREFIX, 27940) +HANDLE_BAT(APINT_TYPE_PREFIX, 27941) +HANDLE_BAT(APINT_TYPE_PREFIX, 27942) +HANDLE_BAT(APINT_TYPE_PREFIX, 27943) +HANDLE_BAT(APINT_TYPE_PREFIX, 27944) +HANDLE_BAT(APINT_TYPE_PREFIX, 27945) +HANDLE_BAT(APINT_TYPE_PREFIX, 27946) +HANDLE_BAT(APINT_TYPE_PREFIX, 27947) +HANDLE_BAT(APINT_TYPE_PREFIX, 27948) +HANDLE_BAT(APINT_TYPE_PREFIX, 27949) +HANDLE_BAT(APINT_TYPE_PREFIX, 27950) +HANDLE_BAT(APINT_TYPE_PREFIX, 27951) +HANDLE_BAT(APINT_TYPE_PREFIX, 27952) +HANDLE_BAT(APINT_TYPE_PREFIX, 27953) +HANDLE_BAT(APINT_TYPE_PREFIX, 27954) +HANDLE_BAT(APINT_TYPE_PREFIX, 27955) +HANDLE_BAT(APINT_TYPE_PREFIX, 27956) +HANDLE_BAT(APINT_TYPE_PREFIX, 27957) +HANDLE_BAT(APINT_TYPE_PREFIX, 27958) +HANDLE_BAT(APINT_TYPE_PREFIX, 27959) +HANDLE_BAT(APINT_TYPE_PREFIX, 27960) +HANDLE_BAT(APINT_TYPE_PREFIX, 27961) +HANDLE_BAT(APINT_TYPE_PREFIX, 27962) +HANDLE_BAT(APINT_TYPE_PREFIX, 27963) +HANDLE_BAT(APINT_TYPE_PREFIX, 27964) +HANDLE_BAT(APINT_TYPE_PREFIX, 27965) +HANDLE_BAT(APINT_TYPE_PREFIX, 27966) +HANDLE_BAT(APINT_TYPE_PREFIX, 27967) +HANDLE_BAT(APINT_TYPE_PREFIX, 27968) +HANDLE_BAT(APINT_TYPE_PREFIX, 27969) +HANDLE_BAT(APINT_TYPE_PREFIX, 27970) +HANDLE_BAT(APINT_TYPE_PREFIX, 27971) +HANDLE_BAT(APINT_TYPE_PREFIX, 27972) +HANDLE_BAT(APINT_TYPE_PREFIX, 27973) +HANDLE_BAT(APINT_TYPE_PREFIX, 27974) +HANDLE_BAT(APINT_TYPE_PREFIX, 27975) +HANDLE_BAT(APINT_TYPE_PREFIX, 27976) +HANDLE_BAT(APINT_TYPE_PREFIX, 27977) +HANDLE_BAT(APINT_TYPE_PREFIX, 27978) +HANDLE_BAT(APINT_TYPE_PREFIX, 27979) +HANDLE_BAT(APINT_TYPE_PREFIX, 27980) +HANDLE_BAT(APINT_TYPE_PREFIX, 27981) +HANDLE_BAT(APINT_TYPE_PREFIX, 27982) +HANDLE_BAT(APINT_TYPE_PREFIX, 27983) +HANDLE_BAT(APINT_TYPE_PREFIX, 27984) +HANDLE_BAT(APINT_TYPE_PREFIX, 27985) +HANDLE_BAT(APINT_TYPE_PREFIX, 27986) +HANDLE_BAT(APINT_TYPE_PREFIX, 27987) +HANDLE_BAT(APINT_TYPE_PREFIX, 27988) +HANDLE_BAT(APINT_TYPE_PREFIX, 27989) +HANDLE_BAT(APINT_TYPE_PREFIX, 27990) +HANDLE_BAT(APINT_TYPE_PREFIX, 27991) +HANDLE_BAT(APINT_TYPE_PREFIX, 27992) +HANDLE_BAT(APINT_TYPE_PREFIX, 27993) +HANDLE_BAT(APINT_TYPE_PREFIX, 27994) +HANDLE_BAT(APINT_TYPE_PREFIX, 27995) +HANDLE_BAT(APINT_TYPE_PREFIX, 27996) +HANDLE_BAT(APINT_TYPE_PREFIX, 27997) +HANDLE_BAT(APINT_TYPE_PREFIX, 27998) +HANDLE_BAT(APINT_TYPE_PREFIX, 27999) +HANDLE_BAT(APINT_TYPE_PREFIX, 28000) +HANDLE_BAT(APINT_TYPE_PREFIX, 28001) +HANDLE_BAT(APINT_TYPE_PREFIX, 28002) +HANDLE_BAT(APINT_TYPE_PREFIX, 28003) +HANDLE_BAT(APINT_TYPE_PREFIX, 28004) +HANDLE_BAT(APINT_TYPE_PREFIX, 28005) +HANDLE_BAT(APINT_TYPE_PREFIX, 28006) +HANDLE_BAT(APINT_TYPE_PREFIX, 28007) +HANDLE_BAT(APINT_TYPE_PREFIX, 28008) +HANDLE_BAT(APINT_TYPE_PREFIX, 28009) +HANDLE_BAT(APINT_TYPE_PREFIX, 28010) +HANDLE_BAT(APINT_TYPE_PREFIX, 28011) +HANDLE_BAT(APINT_TYPE_PREFIX, 28012) +HANDLE_BAT(APINT_TYPE_PREFIX, 28013) +HANDLE_BAT(APINT_TYPE_PREFIX, 28014) +HANDLE_BAT(APINT_TYPE_PREFIX, 28015) +HANDLE_BAT(APINT_TYPE_PREFIX, 28016) +HANDLE_BAT(APINT_TYPE_PREFIX, 28017) +HANDLE_BAT(APINT_TYPE_PREFIX, 28018) +HANDLE_BAT(APINT_TYPE_PREFIX, 28019) +HANDLE_BAT(APINT_TYPE_PREFIX, 28020) +HANDLE_BAT(APINT_TYPE_PREFIX, 28021) +HANDLE_BAT(APINT_TYPE_PREFIX, 28022) +HANDLE_BAT(APINT_TYPE_PREFIX, 28023) +HANDLE_BAT(APINT_TYPE_PREFIX, 28024) +HANDLE_BAT(APINT_TYPE_PREFIX, 28025) +HANDLE_BAT(APINT_TYPE_PREFIX, 28026) +HANDLE_BAT(APINT_TYPE_PREFIX, 28027) +HANDLE_BAT(APINT_TYPE_PREFIX, 28028) +HANDLE_BAT(APINT_TYPE_PREFIX, 28029) +HANDLE_BAT(APINT_TYPE_PREFIX, 28030) +HANDLE_BAT(APINT_TYPE_PREFIX, 28031) +HANDLE_BAT(APINT_TYPE_PREFIX, 28032) +HANDLE_BAT(APINT_TYPE_PREFIX, 28033) +HANDLE_BAT(APINT_TYPE_PREFIX, 28034) +HANDLE_BAT(APINT_TYPE_PREFIX, 28035) +HANDLE_BAT(APINT_TYPE_PREFIX, 28036) +HANDLE_BAT(APINT_TYPE_PREFIX, 28037) +HANDLE_BAT(APINT_TYPE_PREFIX, 28038) +HANDLE_BAT(APINT_TYPE_PREFIX, 28039) +HANDLE_BAT(APINT_TYPE_PREFIX, 28040) +HANDLE_BAT(APINT_TYPE_PREFIX, 28041) +HANDLE_BAT(APINT_TYPE_PREFIX, 28042) +HANDLE_BAT(APINT_TYPE_PREFIX, 28043) +HANDLE_BAT(APINT_TYPE_PREFIX, 28044) +HANDLE_BAT(APINT_TYPE_PREFIX, 28045) +HANDLE_BAT(APINT_TYPE_PREFIX, 28046) +HANDLE_BAT(APINT_TYPE_PREFIX, 28047) +HANDLE_BAT(APINT_TYPE_PREFIX, 28048) +HANDLE_BAT(APINT_TYPE_PREFIX, 28049) +HANDLE_BAT(APINT_TYPE_PREFIX, 28050) +HANDLE_BAT(APINT_TYPE_PREFIX, 28051) +HANDLE_BAT(APINT_TYPE_PREFIX, 28052) +HANDLE_BAT(APINT_TYPE_PREFIX, 28053) +HANDLE_BAT(APINT_TYPE_PREFIX, 28054) +HANDLE_BAT(APINT_TYPE_PREFIX, 28055) +HANDLE_BAT(APINT_TYPE_PREFIX, 28056) +HANDLE_BAT(APINT_TYPE_PREFIX, 28057) +HANDLE_BAT(APINT_TYPE_PREFIX, 28058) +HANDLE_BAT(APINT_TYPE_PREFIX, 28059) +HANDLE_BAT(APINT_TYPE_PREFIX, 28060) +HANDLE_BAT(APINT_TYPE_PREFIX, 28061) +HANDLE_BAT(APINT_TYPE_PREFIX, 28062) +HANDLE_BAT(APINT_TYPE_PREFIX, 28063) +HANDLE_BAT(APINT_TYPE_PREFIX, 28064) +HANDLE_BAT(APINT_TYPE_PREFIX, 28065) +HANDLE_BAT(APINT_TYPE_PREFIX, 28066) +HANDLE_BAT(APINT_TYPE_PREFIX, 28067) +HANDLE_BAT(APINT_TYPE_PREFIX, 28068) +HANDLE_BAT(APINT_TYPE_PREFIX, 28069) +HANDLE_BAT(APINT_TYPE_PREFIX, 28070) +HANDLE_BAT(APINT_TYPE_PREFIX, 28071) +HANDLE_BAT(APINT_TYPE_PREFIX, 28072) +HANDLE_BAT(APINT_TYPE_PREFIX, 28073) +HANDLE_BAT(APINT_TYPE_PREFIX, 28074) +HANDLE_BAT(APINT_TYPE_PREFIX, 28075) +HANDLE_BAT(APINT_TYPE_PREFIX, 28076) +HANDLE_BAT(APINT_TYPE_PREFIX, 28077) +HANDLE_BAT(APINT_TYPE_PREFIX, 28078) +HANDLE_BAT(APINT_TYPE_PREFIX, 28079) +HANDLE_BAT(APINT_TYPE_PREFIX, 28080) +HANDLE_BAT(APINT_TYPE_PREFIX, 28081) +HANDLE_BAT(APINT_TYPE_PREFIX, 28082) +HANDLE_BAT(APINT_TYPE_PREFIX, 28083) +HANDLE_BAT(APINT_TYPE_PREFIX, 28084) +HANDLE_BAT(APINT_TYPE_PREFIX, 28085) +HANDLE_BAT(APINT_TYPE_PREFIX, 28086) +HANDLE_BAT(APINT_TYPE_PREFIX, 28087) +HANDLE_BAT(APINT_TYPE_PREFIX, 28088) +HANDLE_BAT(APINT_TYPE_PREFIX, 28089) +HANDLE_BAT(APINT_TYPE_PREFIX, 28090) +HANDLE_BAT(APINT_TYPE_PREFIX, 28091) +HANDLE_BAT(APINT_TYPE_PREFIX, 28092) +HANDLE_BAT(APINT_TYPE_PREFIX, 28093) +HANDLE_BAT(APINT_TYPE_PREFIX, 28094) +HANDLE_BAT(APINT_TYPE_PREFIX, 28095) +HANDLE_BAT(APINT_TYPE_PREFIX, 28096) +HANDLE_BAT(APINT_TYPE_PREFIX, 28097) +HANDLE_BAT(APINT_TYPE_PREFIX, 28098) +HANDLE_BAT(APINT_TYPE_PREFIX, 28099) +HANDLE_BAT(APINT_TYPE_PREFIX, 28100) +HANDLE_BAT(APINT_TYPE_PREFIX, 28101) +HANDLE_BAT(APINT_TYPE_PREFIX, 28102) +HANDLE_BAT(APINT_TYPE_PREFIX, 28103) +HANDLE_BAT(APINT_TYPE_PREFIX, 28104) +HANDLE_BAT(APINT_TYPE_PREFIX, 28105) +HANDLE_BAT(APINT_TYPE_PREFIX, 28106) +HANDLE_BAT(APINT_TYPE_PREFIX, 28107) +HANDLE_BAT(APINT_TYPE_PREFIX, 28108) +HANDLE_BAT(APINT_TYPE_PREFIX, 28109) +HANDLE_BAT(APINT_TYPE_PREFIX, 28110) +HANDLE_BAT(APINT_TYPE_PREFIX, 28111) +HANDLE_BAT(APINT_TYPE_PREFIX, 28112) +HANDLE_BAT(APINT_TYPE_PREFIX, 28113) +HANDLE_BAT(APINT_TYPE_PREFIX, 28114) +HANDLE_BAT(APINT_TYPE_PREFIX, 28115) +HANDLE_BAT(APINT_TYPE_PREFIX, 28116) +HANDLE_BAT(APINT_TYPE_PREFIX, 28117) +HANDLE_BAT(APINT_TYPE_PREFIX, 28118) +HANDLE_BAT(APINT_TYPE_PREFIX, 28119) +HANDLE_BAT(APINT_TYPE_PREFIX, 28120) +HANDLE_BAT(APINT_TYPE_PREFIX, 28121) +HANDLE_BAT(APINT_TYPE_PREFIX, 28122) +HANDLE_BAT(APINT_TYPE_PREFIX, 28123) +HANDLE_BAT(APINT_TYPE_PREFIX, 28124) +HANDLE_BAT(APINT_TYPE_PREFIX, 28125) +HANDLE_BAT(APINT_TYPE_PREFIX, 28126) +HANDLE_BAT(APINT_TYPE_PREFIX, 28127) +HANDLE_BAT(APINT_TYPE_PREFIX, 28128) +HANDLE_BAT(APINT_TYPE_PREFIX, 28129) +HANDLE_BAT(APINT_TYPE_PREFIX, 28130) +HANDLE_BAT(APINT_TYPE_PREFIX, 28131) +HANDLE_BAT(APINT_TYPE_PREFIX, 28132) +HANDLE_BAT(APINT_TYPE_PREFIX, 28133) +HANDLE_BAT(APINT_TYPE_PREFIX, 28134) +HANDLE_BAT(APINT_TYPE_PREFIX, 28135) +HANDLE_BAT(APINT_TYPE_PREFIX, 28136) +HANDLE_BAT(APINT_TYPE_PREFIX, 28137) +HANDLE_BAT(APINT_TYPE_PREFIX, 28138) +HANDLE_BAT(APINT_TYPE_PREFIX, 28139) +HANDLE_BAT(APINT_TYPE_PREFIX, 28140) +HANDLE_BAT(APINT_TYPE_PREFIX, 28141) +HANDLE_BAT(APINT_TYPE_PREFIX, 28142) +HANDLE_BAT(APINT_TYPE_PREFIX, 28143) +HANDLE_BAT(APINT_TYPE_PREFIX, 28144) +HANDLE_BAT(APINT_TYPE_PREFIX, 28145) +HANDLE_BAT(APINT_TYPE_PREFIX, 28146) +HANDLE_BAT(APINT_TYPE_PREFIX, 28147) +HANDLE_BAT(APINT_TYPE_PREFIX, 28148) +HANDLE_BAT(APINT_TYPE_PREFIX, 28149) +HANDLE_BAT(APINT_TYPE_PREFIX, 28150) +HANDLE_BAT(APINT_TYPE_PREFIX, 28151) +HANDLE_BAT(APINT_TYPE_PREFIX, 28152) +HANDLE_BAT(APINT_TYPE_PREFIX, 28153) +HANDLE_BAT(APINT_TYPE_PREFIX, 28154) +HANDLE_BAT(APINT_TYPE_PREFIX, 28155) +HANDLE_BAT(APINT_TYPE_PREFIX, 28156) +HANDLE_BAT(APINT_TYPE_PREFIX, 28157) +HANDLE_BAT(APINT_TYPE_PREFIX, 28158) +HANDLE_BAT(APINT_TYPE_PREFIX, 28159) +HANDLE_BAT(APINT_TYPE_PREFIX, 28160) +HANDLE_BAT(APINT_TYPE_PREFIX, 28161) +HANDLE_BAT(APINT_TYPE_PREFIX, 28162) +HANDLE_BAT(APINT_TYPE_PREFIX, 28163) +HANDLE_BAT(APINT_TYPE_PREFIX, 28164) +HANDLE_BAT(APINT_TYPE_PREFIX, 28165) +HANDLE_BAT(APINT_TYPE_PREFIX, 28166) +HANDLE_BAT(APINT_TYPE_PREFIX, 28167) +HANDLE_BAT(APINT_TYPE_PREFIX, 28168) +HANDLE_BAT(APINT_TYPE_PREFIX, 28169) +HANDLE_BAT(APINT_TYPE_PREFIX, 28170) +HANDLE_BAT(APINT_TYPE_PREFIX, 28171) +HANDLE_BAT(APINT_TYPE_PREFIX, 28172) +HANDLE_BAT(APINT_TYPE_PREFIX, 28173) +HANDLE_BAT(APINT_TYPE_PREFIX, 28174) +HANDLE_BAT(APINT_TYPE_PREFIX, 28175) +HANDLE_BAT(APINT_TYPE_PREFIX, 28176) +HANDLE_BAT(APINT_TYPE_PREFIX, 28177) +HANDLE_BAT(APINT_TYPE_PREFIX, 28178) +HANDLE_BAT(APINT_TYPE_PREFIX, 28179) +HANDLE_BAT(APINT_TYPE_PREFIX, 28180) +HANDLE_BAT(APINT_TYPE_PREFIX, 28181) +HANDLE_BAT(APINT_TYPE_PREFIX, 28182) +HANDLE_BAT(APINT_TYPE_PREFIX, 28183) +HANDLE_BAT(APINT_TYPE_PREFIX, 28184) +HANDLE_BAT(APINT_TYPE_PREFIX, 28185) +HANDLE_BAT(APINT_TYPE_PREFIX, 28186) +HANDLE_BAT(APINT_TYPE_PREFIX, 28187) +HANDLE_BAT(APINT_TYPE_PREFIX, 28188) +HANDLE_BAT(APINT_TYPE_PREFIX, 28189) +HANDLE_BAT(APINT_TYPE_PREFIX, 28190) +HANDLE_BAT(APINT_TYPE_PREFIX, 28191) +HANDLE_BAT(APINT_TYPE_PREFIX, 28192) +HANDLE_BAT(APINT_TYPE_PREFIX, 28193) +HANDLE_BAT(APINT_TYPE_PREFIX, 28194) +HANDLE_BAT(APINT_TYPE_PREFIX, 28195) +HANDLE_BAT(APINT_TYPE_PREFIX, 28196) +HANDLE_BAT(APINT_TYPE_PREFIX, 28197) +HANDLE_BAT(APINT_TYPE_PREFIX, 28198) +HANDLE_BAT(APINT_TYPE_PREFIX, 28199) +HANDLE_BAT(APINT_TYPE_PREFIX, 28200) +HANDLE_BAT(APINT_TYPE_PREFIX, 28201) +HANDLE_BAT(APINT_TYPE_PREFIX, 28202) +HANDLE_BAT(APINT_TYPE_PREFIX, 28203) +HANDLE_BAT(APINT_TYPE_PREFIX, 28204) +HANDLE_BAT(APINT_TYPE_PREFIX, 28205) +HANDLE_BAT(APINT_TYPE_PREFIX, 28206) +HANDLE_BAT(APINT_TYPE_PREFIX, 28207) +HANDLE_BAT(APINT_TYPE_PREFIX, 28208) +HANDLE_BAT(APINT_TYPE_PREFIX, 28209) +HANDLE_BAT(APINT_TYPE_PREFIX, 28210) +HANDLE_BAT(APINT_TYPE_PREFIX, 28211) +HANDLE_BAT(APINT_TYPE_PREFIX, 28212) +HANDLE_BAT(APINT_TYPE_PREFIX, 28213) +HANDLE_BAT(APINT_TYPE_PREFIX, 28214) +HANDLE_BAT(APINT_TYPE_PREFIX, 28215) +HANDLE_BAT(APINT_TYPE_PREFIX, 28216) +HANDLE_BAT(APINT_TYPE_PREFIX, 28217) +HANDLE_BAT(APINT_TYPE_PREFIX, 28218) +HANDLE_BAT(APINT_TYPE_PREFIX, 28219) +HANDLE_BAT(APINT_TYPE_PREFIX, 28220) +HANDLE_BAT(APINT_TYPE_PREFIX, 28221) +HANDLE_BAT(APINT_TYPE_PREFIX, 28222) +HANDLE_BAT(APINT_TYPE_PREFIX, 28223) +HANDLE_BAT(APINT_TYPE_PREFIX, 28224) +HANDLE_BAT(APINT_TYPE_PREFIX, 28225) +HANDLE_BAT(APINT_TYPE_PREFIX, 28226) +HANDLE_BAT(APINT_TYPE_PREFIX, 28227) +HANDLE_BAT(APINT_TYPE_PREFIX, 28228) +HANDLE_BAT(APINT_TYPE_PREFIX, 28229) +HANDLE_BAT(APINT_TYPE_PREFIX, 28230) +HANDLE_BAT(APINT_TYPE_PREFIX, 28231) +HANDLE_BAT(APINT_TYPE_PREFIX, 28232) +HANDLE_BAT(APINT_TYPE_PREFIX, 28233) +HANDLE_BAT(APINT_TYPE_PREFIX, 28234) +HANDLE_BAT(APINT_TYPE_PREFIX, 28235) +HANDLE_BAT(APINT_TYPE_PREFIX, 28236) +HANDLE_BAT(APINT_TYPE_PREFIX, 28237) +HANDLE_BAT(APINT_TYPE_PREFIX, 28238) +HANDLE_BAT(APINT_TYPE_PREFIX, 28239) +HANDLE_BAT(APINT_TYPE_PREFIX, 28240) +HANDLE_BAT(APINT_TYPE_PREFIX, 28241) +HANDLE_BAT(APINT_TYPE_PREFIX, 28242) +HANDLE_BAT(APINT_TYPE_PREFIX, 28243) +HANDLE_BAT(APINT_TYPE_PREFIX, 28244) +HANDLE_BAT(APINT_TYPE_PREFIX, 28245) +HANDLE_BAT(APINT_TYPE_PREFIX, 28246) +HANDLE_BAT(APINT_TYPE_PREFIX, 28247) +HANDLE_BAT(APINT_TYPE_PREFIX, 28248) +HANDLE_BAT(APINT_TYPE_PREFIX, 28249) +HANDLE_BAT(APINT_TYPE_PREFIX, 28250) +HANDLE_BAT(APINT_TYPE_PREFIX, 28251) +HANDLE_BAT(APINT_TYPE_PREFIX, 28252) +HANDLE_BAT(APINT_TYPE_PREFIX, 28253) +HANDLE_BAT(APINT_TYPE_PREFIX, 28254) +HANDLE_BAT(APINT_TYPE_PREFIX, 28255) +HANDLE_BAT(APINT_TYPE_PREFIX, 28256) +HANDLE_BAT(APINT_TYPE_PREFIX, 28257) +HANDLE_BAT(APINT_TYPE_PREFIX, 28258) +HANDLE_BAT(APINT_TYPE_PREFIX, 28259) +HANDLE_BAT(APINT_TYPE_PREFIX, 28260) +HANDLE_BAT(APINT_TYPE_PREFIX, 28261) +HANDLE_BAT(APINT_TYPE_PREFIX, 28262) +HANDLE_BAT(APINT_TYPE_PREFIX, 28263) +HANDLE_BAT(APINT_TYPE_PREFIX, 28264) +HANDLE_BAT(APINT_TYPE_PREFIX, 28265) +HANDLE_BAT(APINT_TYPE_PREFIX, 28266) +HANDLE_BAT(APINT_TYPE_PREFIX, 28267) +HANDLE_BAT(APINT_TYPE_PREFIX, 28268) +HANDLE_BAT(APINT_TYPE_PREFIX, 28269) +HANDLE_BAT(APINT_TYPE_PREFIX, 28270) +HANDLE_BAT(APINT_TYPE_PREFIX, 28271) +HANDLE_BAT(APINT_TYPE_PREFIX, 28272) +HANDLE_BAT(APINT_TYPE_PREFIX, 28273) +HANDLE_BAT(APINT_TYPE_PREFIX, 28274) +HANDLE_BAT(APINT_TYPE_PREFIX, 28275) +HANDLE_BAT(APINT_TYPE_PREFIX, 28276) +HANDLE_BAT(APINT_TYPE_PREFIX, 28277) +HANDLE_BAT(APINT_TYPE_PREFIX, 28278) +HANDLE_BAT(APINT_TYPE_PREFIX, 28279) +HANDLE_BAT(APINT_TYPE_PREFIX, 28280) +HANDLE_BAT(APINT_TYPE_PREFIX, 28281) +HANDLE_BAT(APINT_TYPE_PREFIX, 28282) +HANDLE_BAT(APINT_TYPE_PREFIX, 28283) +HANDLE_BAT(APINT_TYPE_PREFIX, 28284) +HANDLE_BAT(APINT_TYPE_PREFIX, 28285) +HANDLE_BAT(APINT_TYPE_PREFIX, 28286) +HANDLE_BAT(APINT_TYPE_PREFIX, 28287) +HANDLE_BAT(APINT_TYPE_PREFIX, 28288) +HANDLE_BAT(APINT_TYPE_PREFIX, 28289) +HANDLE_BAT(APINT_TYPE_PREFIX, 28290) +HANDLE_BAT(APINT_TYPE_PREFIX, 28291) +HANDLE_BAT(APINT_TYPE_PREFIX, 28292) +HANDLE_BAT(APINT_TYPE_PREFIX, 28293) +HANDLE_BAT(APINT_TYPE_PREFIX, 28294) +HANDLE_BAT(APINT_TYPE_PREFIX, 28295) +HANDLE_BAT(APINT_TYPE_PREFIX, 28296) +HANDLE_BAT(APINT_TYPE_PREFIX, 28297) +HANDLE_BAT(APINT_TYPE_PREFIX, 28298) +HANDLE_BAT(APINT_TYPE_PREFIX, 28299) +HANDLE_BAT(APINT_TYPE_PREFIX, 28300) +HANDLE_BAT(APINT_TYPE_PREFIX, 28301) +HANDLE_BAT(APINT_TYPE_PREFIX, 28302) +HANDLE_BAT(APINT_TYPE_PREFIX, 28303) +HANDLE_BAT(APINT_TYPE_PREFIX, 28304) +HANDLE_BAT(APINT_TYPE_PREFIX, 28305) +HANDLE_BAT(APINT_TYPE_PREFIX, 28306) +HANDLE_BAT(APINT_TYPE_PREFIX, 28307) +HANDLE_BAT(APINT_TYPE_PREFIX, 28308) +HANDLE_BAT(APINT_TYPE_PREFIX, 28309) +HANDLE_BAT(APINT_TYPE_PREFIX, 28310) +HANDLE_BAT(APINT_TYPE_PREFIX, 28311) +HANDLE_BAT(APINT_TYPE_PREFIX, 28312) +HANDLE_BAT(APINT_TYPE_PREFIX, 28313) +HANDLE_BAT(APINT_TYPE_PREFIX, 28314) +HANDLE_BAT(APINT_TYPE_PREFIX, 28315) +HANDLE_BAT(APINT_TYPE_PREFIX, 28316) +HANDLE_BAT(APINT_TYPE_PREFIX, 28317) +HANDLE_BAT(APINT_TYPE_PREFIX, 28318) +HANDLE_BAT(APINT_TYPE_PREFIX, 28319) +HANDLE_BAT(APINT_TYPE_PREFIX, 28320) +HANDLE_BAT(APINT_TYPE_PREFIX, 28321) +HANDLE_BAT(APINT_TYPE_PREFIX, 28322) +HANDLE_BAT(APINT_TYPE_PREFIX, 28323) +HANDLE_BAT(APINT_TYPE_PREFIX, 28324) +HANDLE_BAT(APINT_TYPE_PREFIX, 28325) +HANDLE_BAT(APINT_TYPE_PREFIX, 28326) +HANDLE_BAT(APINT_TYPE_PREFIX, 28327) +HANDLE_BAT(APINT_TYPE_PREFIX, 28328) +HANDLE_BAT(APINT_TYPE_PREFIX, 28329) +HANDLE_BAT(APINT_TYPE_PREFIX, 28330) +HANDLE_BAT(APINT_TYPE_PREFIX, 28331) +HANDLE_BAT(APINT_TYPE_PREFIX, 28332) +HANDLE_BAT(APINT_TYPE_PREFIX, 28333) +HANDLE_BAT(APINT_TYPE_PREFIX, 28334) +HANDLE_BAT(APINT_TYPE_PREFIX, 28335) +HANDLE_BAT(APINT_TYPE_PREFIX, 28336) +HANDLE_BAT(APINT_TYPE_PREFIX, 28337) +HANDLE_BAT(APINT_TYPE_PREFIX, 28338) +HANDLE_BAT(APINT_TYPE_PREFIX, 28339) +HANDLE_BAT(APINT_TYPE_PREFIX, 28340) +HANDLE_BAT(APINT_TYPE_PREFIX, 28341) +HANDLE_BAT(APINT_TYPE_PREFIX, 28342) +HANDLE_BAT(APINT_TYPE_PREFIX, 28343) +HANDLE_BAT(APINT_TYPE_PREFIX, 28344) +HANDLE_BAT(APINT_TYPE_PREFIX, 28345) +HANDLE_BAT(APINT_TYPE_PREFIX, 28346) +HANDLE_BAT(APINT_TYPE_PREFIX, 28347) +HANDLE_BAT(APINT_TYPE_PREFIX, 28348) +HANDLE_BAT(APINT_TYPE_PREFIX, 28349) +HANDLE_BAT(APINT_TYPE_PREFIX, 28350) +HANDLE_BAT(APINT_TYPE_PREFIX, 28351) +HANDLE_BAT(APINT_TYPE_PREFIX, 28352) +HANDLE_BAT(APINT_TYPE_PREFIX, 28353) +HANDLE_BAT(APINT_TYPE_PREFIX, 28354) +HANDLE_BAT(APINT_TYPE_PREFIX, 28355) +HANDLE_BAT(APINT_TYPE_PREFIX, 28356) +HANDLE_BAT(APINT_TYPE_PREFIX, 28357) +HANDLE_BAT(APINT_TYPE_PREFIX, 28358) +HANDLE_BAT(APINT_TYPE_PREFIX, 28359) +HANDLE_BAT(APINT_TYPE_PREFIX, 28360) +HANDLE_BAT(APINT_TYPE_PREFIX, 28361) +HANDLE_BAT(APINT_TYPE_PREFIX, 28362) +HANDLE_BAT(APINT_TYPE_PREFIX, 28363) +HANDLE_BAT(APINT_TYPE_PREFIX, 28364) +HANDLE_BAT(APINT_TYPE_PREFIX, 28365) +HANDLE_BAT(APINT_TYPE_PREFIX, 28366) +HANDLE_BAT(APINT_TYPE_PREFIX, 28367) +HANDLE_BAT(APINT_TYPE_PREFIX, 28368) +HANDLE_BAT(APINT_TYPE_PREFIX, 28369) +HANDLE_BAT(APINT_TYPE_PREFIX, 28370) +HANDLE_BAT(APINT_TYPE_PREFIX, 28371) +HANDLE_BAT(APINT_TYPE_PREFIX, 28372) +HANDLE_BAT(APINT_TYPE_PREFIX, 28373) +HANDLE_BAT(APINT_TYPE_PREFIX, 28374) +HANDLE_BAT(APINT_TYPE_PREFIX, 28375) +HANDLE_BAT(APINT_TYPE_PREFIX, 28376) +HANDLE_BAT(APINT_TYPE_PREFIX, 28377) +HANDLE_BAT(APINT_TYPE_PREFIX, 28378) +HANDLE_BAT(APINT_TYPE_PREFIX, 28379) +HANDLE_BAT(APINT_TYPE_PREFIX, 28380) +HANDLE_BAT(APINT_TYPE_PREFIX, 28381) +HANDLE_BAT(APINT_TYPE_PREFIX, 28382) +HANDLE_BAT(APINT_TYPE_PREFIX, 28383) +HANDLE_BAT(APINT_TYPE_PREFIX, 28384) +HANDLE_BAT(APINT_TYPE_PREFIX, 28385) +HANDLE_BAT(APINT_TYPE_PREFIX, 28386) +HANDLE_BAT(APINT_TYPE_PREFIX, 28387) +HANDLE_BAT(APINT_TYPE_PREFIX, 28388) +HANDLE_BAT(APINT_TYPE_PREFIX, 28389) +HANDLE_BAT(APINT_TYPE_PREFIX, 28390) +HANDLE_BAT(APINT_TYPE_PREFIX, 28391) +HANDLE_BAT(APINT_TYPE_PREFIX, 28392) +HANDLE_BAT(APINT_TYPE_PREFIX, 28393) +HANDLE_BAT(APINT_TYPE_PREFIX, 28394) +HANDLE_BAT(APINT_TYPE_PREFIX, 28395) +HANDLE_BAT(APINT_TYPE_PREFIX, 28396) +HANDLE_BAT(APINT_TYPE_PREFIX, 28397) +HANDLE_BAT(APINT_TYPE_PREFIX, 28398) +HANDLE_BAT(APINT_TYPE_PREFIX, 28399) +HANDLE_BAT(APINT_TYPE_PREFIX, 28400) +HANDLE_BAT(APINT_TYPE_PREFIX, 28401) +HANDLE_BAT(APINT_TYPE_PREFIX, 28402) +HANDLE_BAT(APINT_TYPE_PREFIX, 28403) +HANDLE_BAT(APINT_TYPE_PREFIX, 28404) +HANDLE_BAT(APINT_TYPE_PREFIX, 28405) +HANDLE_BAT(APINT_TYPE_PREFIX, 28406) +HANDLE_BAT(APINT_TYPE_PREFIX, 28407) +HANDLE_BAT(APINT_TYPE_PREFIX, 28408) +HANDLE_BAT(APINT_TYPE_PREFIX, 28409) +HANDLE_BAT(APINT_TYPE_PREFIX, 28410) +HANDLE_BAT(APINT_TYPE_PREFIX, 28411) +HANDLE_BAT(APINT_TYPE_PREFIX, 28412) +HANDLE_BAT(APINT_TYPE_PREFIX, 28413) +HANDLE_BAT(APINT_TYPE_PREFIX, 28414) +HANDLE_BAT(APINT_TYPE_PREFIX, 28415) +HANDLE_BAT(APINT_TYPE_PREFIX, 28416) +HANDLE_BAT(APINT_TYPE_PREFIX, 28417) +HANDLE_BAT(APINT_TYPE_PREFIX, 28418) +HANDLE_BAT(APINT_TYPE_PREFIX, 28419) +HANDLE_BAT(APINT_TYPE_PREFIX, 28420) +HANDLE_BAT(APINT_TYPE_PREFIX, 28421) +HANDLE_BAT(APINT_TYPE_PREFIX, 28422) +HANDLE_BAT(APINT_TYPE_PREFIX, 28423) +HANDLE_BAT(APINT_TYPE_PREFIX, 28424) +HANDLE_BAT(APINT_TYPE_PREFIX, 28425) +HANDLE_BAT(APINT_TYPE_PREFIX, 28426) +HANDLE_BAT(APINT_TYPE_PREFIX, 28427) +HANDLE_BAT(APINT_TYPE_PREFIX, 28428) +HANDLE_BAT(APINT_TYPE_PREFIX, 28429) +HANDLE_BAT(APINT_TYPE_PREFIX, 28430) +HANDLE_BAT(APINT_TYPE_PREFIX, 28431) +HANDLE_BAT(APINT_TYPE_PREFIX, 28432) +HANDLE_BAT(APINT_TYPE_PREFIX, 28433) +HANDLE_BAT(APINT_TYPE_PREFIX, 28434) +HANDLE_BAT(APINT_TYPE_PREFIX, 28435) +HANDLE_BAT(APINT_TYPE_PREFIX, 28436) +HANDLE_BAT(APINT_TYPE_PREFIX, 28437) +HANDLE_BAT(APINT_TYPE_PREFIX, 28438) +HANDLE_BAT(APINT_TYPE_PREFIX, 28439) +HANDLE_BAT(APINT_TYPE_PREFIX, 28440) +HANDLE_BAT(APINT_TYPE_PREFIX, 28441) +HANDLE_BAT(APINT_TYPE_PREFIX, 28442) +HANDLE_BAT(APINT_TYPE_PREFIX, 28443) +HANDLE_BAT(APINT_TYPE_PREFIX, 28444) +HANDLE_BAT(APINT_TYPE_PREFIX, 28445) +HANDLE_BAT(APINT_TYPE_PREFIX, 28446) +HANDLE_BAT(APINT_TYPE_PREFIX, 28447) +HANDLE_BAT(APINT_TYPE_PREFIX, 28448) +HANDLE_BAT(APINT_TYPE_PREFIX, 28449) +HANDLE_BAT(APINT_TYPE_PREFIX, 28450) +HANDLE_BAT(APINT_TYPE_PREFIX, 28451) +HANDLE_BAT(APINT_TYPE_PREFIX, 28452) +HANDLE_BAT(APINT_TYPE_PREFIX, 28453) +HANDLE_BAT(APINT_TYPE_PREFIX, 28454) +HANDLE_BAT(APINT_TYPE_PREFIX, 28455) +HANDLE_BAT(APINT_TYPE_PREFIX, 28456) +HANDLE_BAT(APINT_TYPE_PREFIX, 28457) +HANDLE_BAT(APINT_TYPE_PREFIX, 28458) +HANDLE_BAT(APINT_TYPE_PREFIX, 28459) +HANDLE_BAT(APINT_TYPE_PREFIX, 28460) +HANDLE_BAT(APINT_TYPE_PREFIX, 28461) +HANDLE_BAT(APINT_TYPE_PREFIX, 28462) +HANDLE_BAT(APINT_TYPE_PREFIX, 28463) +HANDLE_BAT(APINT_TYPE_PREFIX, 28464) +HANDLE_BAT(APINT_TYPE_PREFIX, 28465) +HANDLE_BAT(APINT_TYPE_PREFIX, 28466) +HANDLE_BAT(APINT_TYPE_PREFIX, 28467) +HANDLE_BAT(APINT_TYPE_PREFIX, 28468) +HANDLE_BAT(APINT_TYPE_PREFIX, 28469) +HANDLE_BAT(APINT_TYPE_PREFIX, 28470) +HANDLE_BAT(APINT_TYPE_PREFIX, 28471) +HANDLE_BAT(APINT_TYPE_PREFIX, 28472) +HANDLE_BAT(APINT_TYPE_PREFIX, 28473) +HANDLE_BAT(APINT_TYPE_PREFIX, 28474) +HANDLE_BAT(APINT_TYPE_PREFIX, 28475) +HANDLE_BAT(APINT_TYPE_PREFIX, 28476) +HANDLE_BAT(APINT_TYPE_PREFIX, 28477) +HANDLE_BAT(APINT_TYPE_PREFIX, 28478) +HANDLE_BAT(APINT_TYPE_PREFIX, 28479) +HANDLE_BAT(APINT_TYPE_PREFIX, 28480) +HANDLE_BAT(APINT_TYPE_PREFIX, 28481) +HANDLE_BAT(APINT_TYPE_PREFIX, 28482) +HANDLE_BAT(APINT_TYPE_PREFIX, 28483) +HANDLE_BAT(APINT_TYPE_PREFIX, 28484) +HANDLE_BAT(APINT_TYPE_PREFIX, 28485) +HANDLE_BAT(APINT_TYPE_PREFIX, 28486) +HANDLE_BAT(APINT_TYPE_PREFIX, 28487) +HANDLE_BAT(APINT_TYPE_PREFIX, 28488) +HANDLE_BAT(APINT_TYPE_PREFIX, 28489) +HANDLE_BAT(APINT_TYPE_PREFIX, 28490) +HANDLE_BAT(APINT_TYPE_PREFIX, 28491) +HANDLE_BAT(APINT_TYPE_PREFIX, 28492) +HANDLE_BAT(APINT_TYPE_PREFIX, 28493) +HANDLE_BAT(APINT_TYPE_PREFIX, 28494) +HANDLE_BAT(APINT_TYPE_PREFIX, 28495) +HANDLE_BAT(APINT_TYPE_PREFIX, 28496) +HANDLE_BAT(APINT_TYPE_PREFIX, 28497) +HANDLE_BAT(APINT_TYPE_PREFIX, 28498) +HANDLE_BAT(APINT_TYPE_PREFIX, 28499) +HANDLE_BAT(APINT_TYPE_PREFIX, 28500) +HANDLE_BAT(APINT_TYPE_PREFIX, 28501) +HANDLE_BAT(APINT_TYPE_PREFIX, 28502) +HANDLE_BAT(APINT_TYPE_PREFIX, 28503) +HANDLE_BAT(APINT_TYPE_PREFIX, 28504) +HANDLE_BAT(APINT_TYPE_PREFIX, 28505) +HANDLE_BAT(APINT_TYPE_PREFIX, 28506) +HANDLE_BAT(APINT_TYPE_PREFIX, 28507) +HANDLE_BAT(APINT_TYPE_PREFIX, 28508) +HANDLE_BAT(APINT_TYPE_PREFIX, 28509) +HANDLE_BAT(APINT_TYPE_PREFIX, 28510) +HANDLE_BAT(APINT_TYPE_PREFIX, 28511) +HANDLE_BAT(APINT_TYPE_PREFIX, 28512) +HANDLE_BAT(APINT_TYPE_PREFIX, 28513) +HANDLE_BAT(APINT_TYPE_PREFIX, 28514) +HANDLE_BAT(APINT_TYPE_PREFIX, 28515) +HANDLE_BAT(APINT_TYPE_PREFIX, 28516) +HANDLE_BAT(APINT_TYPE_PREFIX, 28517) +HANDLE_BAT(APINT_TYPE_PREFIX, 28518) +HANDLE_BAT(APINT_TYPE_PREFIX, 28519) +HANDLE_BAT(APINT_TYPE_PREFIX, 28520) +HANDLE_BAT(APINT_TYPE_PREFIX, 28521) +HANDLE_BAT(APINT_TYPE_PREFIX, 28522) +HANDLE_BAT(APINT_TYPE_PREFIX, 28523) +HANDLE_BAT(APINT_TYPE_PREFIX, 28524) +HANDLE_BAT(APINT_TYPE_PREFIX, 28525) +HANDLE_BAT(APINT_TYPE_PREFIX, 28526) +HANDLE_BAT(APINT_TYPE_PREFIX, 28527) +HANDLE_BAT(APINT_TYPE_PREFIX, 28528) +HANDLE_BAT(APINT_TYPE_PREFIX, 28529) +HANDLE_BAT(APINT_TYPE_PREFIX, 28530) +HANDLE_BAT(APINT_TYPE_PREFIX, 28531) +HANDLE_BAT(APINT_TYPE_PREFIX, 28532) +HANDLE_BAT(APINT_TYPE_PREFIX, 28533) +HANDLE_BAT(APINT_TYPE_PREFIX, 28534) +HANDLE_BAT(APINT_TYPE_PREFIX, 28535) +HANDLE_BAT(APINT_TYPE_PREFIX, 28536) +HANDLE_BAT(APINT_TYPE_PREFIX, 28537) +HANDLE_BAT(APINT_TYPE_PREFIX, 28538) +HANDLE_BAT(APINT_TYPE_PREFIX, 28539) +HANDLE_BAT(APINT_TYPE_PREFIX, 28540) +HANDLE_BAT(APINT_TYPE_PREFIX, 28541) +HANDLE_BAT(APINT_TYPE_PREFIX, 28542) +HANDLE_BAT(APINT_TYPE_PREFIX, 28543) +HANDLE_BAT(APINT_TYPE_PREFIX, 28544) +HANDLE_BAT(APINT_TYPE_PREFIX, 28545) +HANDLE_BAT(APINT_TYPE_PREFIX, 28546) +HANDLE_BAT(APINT_TYPE_PREFIX, 28547) +HANDLE_BAT(APINT_TYPE_PREFIX, 28548) +HANDLE_BAT(APINT_TYPE_PREFIX, 28549) +HANDLE_BAT(APINT_TYPE_PREFIX, 28550) +HANDLE_BAT(APINT_TYPE_PREFIX, 28551) +HANDLE_BAT(APINT_TYPE_PREFIX, 28552) +HANDLE_BAT(APINT_TYPE_PREFIX, 28553) +HANDLE_BAT(APINT_TYPE_PREFIX, 28554) +HANDLE_BAT(APINT_TYPE_PREFIX, 28555) +HANDLE_BAT(APINT_TYPE_PREFIX, 28556) +HANDLE_BAT(APINT_TYPE_PREFIX, 28557) +HANDLE_BAT(APINT_TYPE_PREFIX, 28558) +HANDLE_BAT(APINT_TYPE_PREFIX, 28559) +HANDLE_BAT(APINT_TYPE_PREFIX, 28560) +HANDLE_BAT(APINT_TYPE_PREFIX, 28561) +HANDLE_BAT(APINT_TYPE_PREFIX, 28562) +HANDLE_BAT(APINT_TYPE_PREFIX, 28563) +HANDLE_BAT(APINT_TYPE_PREFIX, 28564) +HANDLE_BAT(APINT_TYPE_PREFIX, 28565) +HANDLE_BAT(APINT_TYPE_PREFIX, 28566) +HANDLE_BAT(APINT_TYPE_PREFIX, 28567) +HANDLE_BAT(APINT_TYPE_PREFIX, 28568) +HANDLE_BAT(APINT_TYPE_PREFIX, 28569) +HANDLE_BAT(APINT_TYPE_PREFIX, 28570) +HANDLE_BAT(APINT_TYPE_PREFIX, 28571) +HANDLE_BAT(APINT_TYPE_PREFIX, 28572) +HANDLE_BAT(APINT_TYPE_PREFIX, 28573) +HANDLE_BAT(APINT_TYPE_PREFIX, 28574) +HANDLE_BAT(APINT_TYPE_PREFIX, 28575) +HANDLE_BAT(APINT_TYPE_PREFIX, 28576) +HANDLE_BAT(APINT_TYPE_PREFIX, 28577) +HANDLE_BAT(APINT_TYPE_PREFIX, 28578) +HANDLE_BAT(APINT_TYPE_PREFIX, 28579) +HANDLE_BAT(APINT_TYPE_PREFIX, 28580) +HANDLE_BAT(APINT_TYPE_PREFIX, 28581) +HANDLE_BAT(APINT_TYPE_PREFIX, 28582) +HANDLE_BAT(APINT_TYPE_PREFIX, 28583) +HANDLE_BAT(APINT_TYPE_PREFIX, 28584) +HANDLE_BAT(APINT_TYPE_PREFIX, 28585) +HANDLE_BAT(APINT_TYPE_PREFIX, 28586) +HANDLE_BAT(APINT_TYPE_PREFIX, 28587) +HANDLE_BAT(APINT_TYPE_PREFIX, 28588) +HANDLE_BAT(APINT_TYPE_PREFIX, 28589) +HANDLE_BAT(APINT_TYPE_PREFIX, 28590) +HANDLE_BAT(APINT_TYPE_PREFIX, 28591) +HANDLE_BAT(APINT_TYPE_PREFIX, 28592) +HANDLE_BAT(APINT_TYPE_PREFIX, 28593) +HANDLE_BAT(APINT_TYPE_PREFIX, 28594) +HANDLE_BAT(APINT_TYPE_PREFIX, 28595) +HANDLE_BAT(APINT_TYPE_PREFIX, 28596) +HANDLE_BAT(APINT_TYPE_PREFIX, 28597) +HANDLE_BAT(APINT_TYPE_PREFIX, 28598) +HANDLE_BAT(APINT_TYPE_PREFIX, 28599) +HANDLE_BAT(APINT_TYPE_PREFIX, 28600) +HANDLE_BAT(APINT_TYPE_PREFIX, 28601) +HANDLE_BAT(APINT_TYPE_PREFIX, 28602) +HANDLE_BAT(APINT_TYPE_PREFIX, 28603) +HANDLE_BAT(APINT_TYPE_PREFIX, 28604) +HANDLE_BAT(APINT_TYPE_PREFIX, 28605) +HANDLE_BAT(APINT_TYPE_PREFIX, 28606) +HANDLE_BAT(APINT_TYPE_PREFIX, 28607) +HANDLE_BAT(APINT_TYPE_PREFIX, 28608) +HANDLE_BAT(APINT_TYPE_PREFIX, 28609) +HANDLE_BAT(APINT_TYPE_PREFIX, 28610) +HANDLE_BAT(APINT_TYPE_PREFIX, 28611) +HANDLE_BAT(APINT_TYPE_PREFIX, 28612) +HANDLE_BAT(APINT_TYPE_PREFIX, 28613) +HANDLE_BAT(APINT_TYPE_PREFIX, 28614) +HANDLE_BAT(APINT_TYPE_PREFIX, 28615) +HANDLE_BAT(APINT_TYPE_PREFIX, 28616) +HANDLE_BAT(APINT_TYPE_PREFIX, 28617) +HANDLE_BAT(APINT_TYPE_PREFIX, 28618) +HANDLE_BAT(APINT_TYPE_PREFIX, 28619) +HANDLE_BAT(APINT_TYPE_PREFIX, 28620) +HANDLE_BAT(APINT_TYPE_PREFIX, 28621) +HANDLE_BAT(APINT_TYPE_PREFIX, 28622) +HANDLE_BAT(APINT_TYPE_PREFIX, 28623) +HANDLE_BAT(APINT_TYPE_PREFIX, 28624) +HANDLE_BAT(APINT_TYPE_PREFIX, 28625) +HANDLE_BAT(APINT_TYPE_PREFIX, 28626) +HANDLE_BAT(APINT_TYPE_PREFIX, 28627) +HANDLE_BAT(APINT_TYPE_PREFIX, 28628) +HANDLE_BAT(APINT_TYPE_PREFIX, 28629) +HANDLE_BAT(APINT_TYPE_PREFIX, 28630) +HANDLE_BAT(APINT_TYPE_PREFIX, 28631) +HANDLE_BAT(APINT_TYPE_PREFIX, 28632) +HANDLE_BAT(APINT_TYPE_PREFIX, 28633) +HANDLE_BAT(APINT_TYPE_PREFIX, 28634) +HANDLE_BAT(APINT_TYPE_PREFIX, 28635) +HANDLE_BAT(APINT_TYPE_PREFIX, 28636) +HANDLE_BAT(APINT_TYPE_PREFIX, 28637) +HANDLE_BAT(APINT_TYPE_PREFIX, 28638) +HANDLE_BAT(APINT_TYPE_PREFIX, 28639) +HANDLE_BAT(APINT_TYPE_PREFIX, 28640) +HANDLE_BAT(APINT_TYPE_PREFIX, 28641) +HANDLE_BAT(APINT_TYPE_PREFIX, 28642) +HANDLE_BAT(APINT_TYPE_PREFIX, 28643) +HANDLE_BAT(APINT_TYPE_PREFIX, 28644) +HANDLE_BAT(APINT_TYPE_PREFIX, 28645) +HANDLE_BAT(APINT_TYPE_PREFIX, 28646) +HANDLE_BAT(APINT_TYPE_PREFIX, 28647) +HANDLE_BAT(APINT_TYPE_PREFIX, 28648) +HANDLE_BAT(APINT_TYPE_PREFIX, 28649) +HANDLE_BAT(APINT_TYPE_PREFIX, 28650) +HANDLE_BAT(APINT_TYPE_PREFIX, 28651) +HANDLE_BAT(APINT_TYPE_PREFIX, 28652) +HANDLE_BAT(APINT_TYPE_PREFIX, 28653) +HANDLE_BAT(APINT_TYPE_PREFIX, 28654) +HANDLE_BAT(APINT_TYPE_PREFIX, 28655) +HANDLE_BAT(APINT_TYPE_PREFIX, 28656) +HANDLE_BAT(APINT_TYPE_PREFIX, 28657) +HANDLE_BAT(APINT_TYPE_PREFIX, 28658) +HANDLE_BAT(APINT_TYPE_PREFIX, 28659) +HANDLE_BAT(APINT_TYPE_PREFIX, 28660) +HANDLE_BAT(APINT_TYPE_PREFIX, 28661) +HANDLE_BAT(APINT_TYPE_PREFIX, 28662) +HANDLE_BAT(APINT_TYPE_PREFIX, 28663) +HANDLE_BAT(APINT_TYPE_PREFIX, 28664) +HANDLE_BAT(APINT_TYPE_PREFIX, 28665) +HANDLE_BAT(APINT_TYPE_PREFIX, 28666) +HANDLE_BAT(APINT_TYPE_PREFIX, 28667) +HANDLE_BAT(APINT_TYPE_PREFIX, 28668) +HANDLE_BAT(APINT_TYPE_PREFIX, 28669) +HANDLE_BAT(APINT_TYPE_PREFIX, 28670) +HANDLE_BAT(APINT_TYPE_PREFIX, 28671) +HANDLE_BAT(APINT_TYPE_PREFIX, 28672) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 28 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 28673) +HANDLE_BAT(, 28674) +HANDLE_BAT(, 28675) +HANDLE_BAT(, 28676) +HANDLE_BAT(, 28677) +HANDLE_BAT(, 28678) +HANDLE_BAT(, 28679) +HANDLE_BAT(, 28680) +HANDLE_BAT(, 28681) +HANDLE_BAT(, 28682) +HANDLE_BAT(, 28683) +HANDLE_BAT(, 28684) +HANDLE_BAT(, 28685) +HANDLE_BAT(, 28686) +HANDLE_BAT(, 28687) +HANDLE_BAT(, 28688) +HANDLE_BAT(, 28689) +HANDLE_BAT(, 28690) +HANDLE_BAT(, 28691) +HANDLE_BAT(, 28692) +HANDLE_BAT(, 28693) +HANDLE_BAT(, 28694) +HANDLE_BAT(, 28695) +HANDLE_BAT(, 28696) +HANDLE_BAT(, 28697) +HANDLE_BAT(, 28698) +HANDLE_BAT(, 28699) +HANDLE_BAT(, 28700) +HANDLE_BAT(, 28701) +HANDLE_BAT(, 28702) +HANDLE_BAT(, 28703) +HANDLE_BAT(, 28704) +HANDLE_BAT(, 28705) +HANDLE_BAT(, 28706) +HANDLE_BAT(, 28707) +HANDLE_BAT(, 28708) +HANDLE_BAT(, 28709) +HANDLE_BAT(, 28710) +HANDLE_BAT(, 28711) +HANDLE_BAT(, 28712) +HANDLE_BAT(, 28713) +HANDLE_BAT(, 28714) +HANDLE_BAT(, 28715) +HANDLE_BAT(, 28716) +HANDLE_BAT(, 28717) +HANDLE_BAT(, 28718) +HANDLE_BAT(, 28719) +HANDLE_BAT(, 28720) +HANDLE_BAT(, 28721) +HANDLE_BAT(, 28722) +HANDLE_BAT(, 28723) +HANDLE_BAT(, 28724) +HANDLE_BAT(, 28725) +HANDLE_BAT(, 28726) +HANDLE_BAT(, 28727) +HANDLE_BAT(, 28728) +HANDLE_BAT(, 28729) +HANDLE_BAT(, 28730) +HANDLE_BAT(, 28731) +HANDLE_BAT(, 28732) +HANDLE_BAT(, 28733) +HANDLE_BAT(, 28734) +HANDLE_BAT(, 28735) +HANDLE_BAT(, 28736) +HANDLE_BAT(, 28737) +HANDLE_BAT(, 28738) +HANDLE_BAT(, 28739) +HANDLE_BAT(, 28740) +HANDLE_BAT(, 28741) +HANDLE_BAT(, 28742) +HANDLE_BAT(, 28743) +HANDLE_BAT(, 28744) +HANDLE_BAT(, 28745) +HANDLE_BAT(, 28746) +HANDLE_BAT(, 28747) +HANDLE_BAT(, 28748) +HANDLE_BAT(, 28749) +HANDLE_BAT(, 28750) +HANDLE_BAT(, 28751) +HANDLE_BAT(, 28752) +HANDLE_BAT(, 28753) +HANDLE_BAT(, 28754) +HANDLE_BAT(, 28755) +HANDLE_BAT(, 28756) +HANDLE_BAT(, 28757) +HANDLE_BAT(, 28758) +HANDLE_BAT(, 28759) +HANDLE_BAT(, 28760) +HANDLE_BAT(, 28761) +HANDLE_BAT(, 28762) +HANDLE_BAT(, 28763) +HANDLE_BAT(, 28764) +HANDLE_BAT(, 28765) +HANDLE_BAT(, 28766) +HANDLE_BAT(, 28767) +HANDLE_BAT(, 28768) +HANDLE_BAT(, 28769) +HANDLE_BAT(, 28770) +HANDLE_BAT(, 28771) +HANDLE_BAT(, 28772) +HANDLE_BAT(, 28773) +HANDLE_BAT(, 28774) +HANDLE_BAT(, 28775) +HANDLE_BAT(, 28776) +HANDLE_BAT(, 28777) +HANDLE_BAT(, 28778) +HANDLE_BAT(, 28779) +HANDLE_BAT(, 28780) +HANDLE_BAT(, 28781) +HANDLE_BAT(, 28782) +HANDLE_BAT(, 28783) +HANDLE_BAT(, 28784) +HANDLE_BAT(, 28785) +HANDLE_BAT(, 28786) +HANDLE_BAT(, 28787) +HANDLE_BAT(, 28788) +HANDLE_BAT(, 28789) +HANDLE_BAT(, 28790) +HANDLE_BAT(, 28791) +HANDLE_BAT(, 28792) +HANDLE_BAT(, 28793) +HANDLE_BAT(, 28794) +HANDLE_BAT(, 28795) +HANDLE_BAT(, 28796) +HANDLE_BAT(, 28797) +HANDLE_BAT(, 28798) +HANDLE_BAT(, 28799) +HANDLE_BAT(, 28800) +HANDLE_BAT(, 28801) +HANDLE_BAT(, 28802) +HANDLE_BAT(, 28803) +HANDLE_BAT(, 28804) +HANDLE_BAT(, 28805) +HANDLE_BAT(, 28806) +HANDLE_BAT(, 28807) +HANDLE_BAT(, 28808) +HANDLE_BAT(, 28809) +HANDLE_BAT(, 28810) +HANDLE_BAT(, 28811) +HANDLE_BAT(, 28812) +HANDLE_BAT(, 28813) +HANDLE_BAT(, 28814) +HANDLE_BAT(, 28815) +HANDLE_BAT(, 28816) +HANDLE_BAT(, 28817) +HANDLE_BAT(, 28818) +HANDLE_BAT(, 28819) +HANDLE_BAT(, 28820) +HANDLE_BAT(, 28821) +HANDLE_BAT(, 28822) +HANDLE_BAT(, 28823) +HANDLE_BAT(, 28824) +HANDLE_BAT(, 28825) +HANDLE_BAT(, 28826) +HANDLE_BAT(, 28827) +HANDLE_BAT(, 28828) +HANDLE_BAT(, 28829) +HANDLE_BAT(, 28830) +HANDLE_BAT(, 28831) +HANDLE_BAT(, 28832) +HANDLE_BAT(, 28833) +HANDLE_BAT(, 28834) +HANDLE_BAT(, 28835) +HANDLE_BAT(, 28836) +HANDLE_BAT(, 28837) +HANDLE_BAT(, 28838) +HANDLE_BAT(, 28839) +HANDLE_BAT(, 28840) +HANDLE_BAT(, 28841) +HANDLE_BAT(, 28842) +HANDLE_BAT(, 28843) +HANDLE_BAT(, 28844) +HANDLE_BAT(, 28845) +HANDLE_BAT(, 28846) +HANDLE_BAT(, 28847) +HANDLE_BAT(, 28848) +HANDLE_BAT(, 28849) +HANDLE_BAT(, 28850) +HANDLE_BAT(, 28851) +HANDLE_BAT(, 28852) +HANDLE_BAT(, 28853) +HANDLE_BAT(, 28854) +HANDLE_BAT(, 28855) +HANDLE_BAT(, 28856) +HANDLE_BAT(, 28857) +HANDLE_BAT(, 28858) +HANDLE_BAT(, 28859) +HANDLE_BAT(, 28860) +HANDLE_BAT(, 28861) +HANDLE_BAT(, 28862) +HANDLE_BAT(, 28863) +HANDLE_BAT(, 28864) +HANDLE_BAT(, 28865) +HANDLE_BAT(, 28866) +HANDLE_BAT(, 28867) +HANDLE_BAT(, 28868) +HANDLE_BAT(, 28869) +HANDLE_BAT(, 28870) +HANDLE_BAT(, 28871) +HANDLE_BAT(, 28872) +HANDLE_BAT(, 28873) +HANDLE_BAT(, 28874) +HANDLE_BAT(, 28875) +HANDLE_BAT(, 28876) +HANDLE_BAT(, 28877) +HANDLE_BAT(, 28878) +HANDLE_BAT(, 28879) +HANDLE_BAT(, 28880) +HANDLE_BAT(, 28881) +HANDLE_BAT(, 28882) +HANDLE_BAT(, 28883) +HANDLE_BAT(, 28884) +HANDLE_BAT(, 28885) +HANDLE_BAT(, 28886) +HANDLE_BAT(, 28887) +HANDLE_BAT(, 28888) +HANDLE_BAT(, 28889) +HANDLE_BAT(, 28890) +HANDLE_BAT(, 28891) +HANDLE_BAT(, 28892) +HANDLE_BAT(, 28893) +HANDLE_BAT(, 28894) +HANDLE_BAT(, 28895) +HANDLE_BAT(, 28896) +HANDLE_BAT(, 28897) +HANDLE_BAT(, 28898) +HANDLE_BAT(, 28899) +HANDLE_BAT(, 28900) +HANDLE_BAT(, 28901) +HANDLE_BAT(, 28902) +HANDLE_BAT(, 28903) +HANDLE_BAT(, 28904) +HANDLE_BAT(, 28905) +HANDLE_BAT(, 28906) +HANDLE_BAT(, 28907) +HANDLE_BAT(, 28908) +HANDLE_BAT(, 28909) +HANDLE_BAT(, 28910) +HANDLE_BAT(, 28911) +HANDLE_BAT(, 28912) +HANDLE_BAT(, 28913) +HANDLE_BAT(, 28914) +HANDLE_BAT(, 28915) +HANDLE_BAT(, 28916) +HANDLE_BAT(, 28917) +HANDLE_BAT(, 28918) +HANDLE_BAT(, 28919) +HANDLE_BAT(, 28920) +HANDLE_BAT(, 28921) +HANDLE_BAT(, 28922) +HANDLE_BAT(, 28923) +HANDLE_BAT(, 28924) +HANDLE_BAT(, 28925) +HANDLE_BAT(, 28926) +HANDLE_BAT(, 28927) +HANDLE_BAT(, 28928) +HANDLE_BAT(, 28929) +HANDLE_BAT(, 28930) +HANDLE_BAT(, 28931) +HANDLE_BAT(, 28932) +HANDLE_BAT(, 28933) +HANDLE_BAT(, 28934) +HANDLE_BAT(, 28935) +HANDLE_BAT(, 28936) +HANDLE_BAT(, 28937) +HANDLE_BAT(, 28938) +HANDLE_BAT(, 28939) +HANDLE_BAT(, 28940) +HANDLE_BAT(, 28941) +HANDLE_BAT(, 28942) +HANDLE_BAT(, 28943) +HANDLE_BAT(, 28944) +HANDLE_BAT(, 28945) +HANDLE_BAT(, 28946) +HANDLE_BAT(, 28947) +HANDLE_BAT(, 28948) +HANDLE_BAT(, 28949) +HANDLE_BAT(, 28950) +HANDLE_BAT(, 28951) +HANDLE_BAT(, 28952) +HANDLE_BAT(, 28953) +HANDLE_BAT(, 28954) +HANDLE_BAT(, 28955) +HANDLE_BAT(, 28956) +HANDLE_BAT(, 28957) +HANDLE_BAT(, 28958) +HANDLE_BAT(, 28959) +HANDLE_BAT(, 28960) +HANDLE_BAT(, 28961) +HANDLE_BAT(, 28962) +HANDLE_BAT(, 28963) +HANDLE_BAT(, 28964) +HANDLE_BAT(, 28965) +HANDLE_BAT(, 28966) +HANDLE_BAT(, 28967) +HANDLE_BAT(, 28968) +HANDLE_BAT(, 28969) +HANDLE_BAT(, 28970) +HANDLE_BAT(, 28971) +HANDLE_BAT(, 28972) +HANDLE_BAT(, 28973) +HANDLE_BAT(, 28974) +HANDLE_BAT(, 28975) +HANDLE_BAT(, 28976) +HANDLE_BAT(, 28977) +HANDLE_BAT(, 28978) +HANDLE_BAT(, 28979) +HANDLE_BAT(, 28980) +HANDLE_BAT(, 28981) +HANDLE_BAT(, 28982) +HANDLE_BAT(, 28983) +HANDLE_BAT(, 28984) +HANDLE_BAT(, 28985) +HANDLE_BAT(, 28986) +HANDLE_BAT(, 28987) +HANDLE_BAT(, 28988) +HANDLE_BAT(, 28989) +HANDLE_BAT(, 28990) +HANDLE_BAT(, 28991) +HANDLE_BAT(, 28992) +HANDLE_BAT(, 28993) +HANDLE_BAT(, 28994) +HANDLE_BAT(, 28995) +HANDLE_BAT(, 28996) +HANDLE_BAT(, 28997) +HANDLE_BAT(, 28998) +HANDLE_BAT(, 28999) +HANDLE_BAT(, 29000) +HANDLE_BAT(, 29001) +HANDLE_BAT(, 29002) +HANDLE_BAT(, 29003) +HANDLE_BAT(, 29004) +HANDLE_BAT(, 29005) +HANDLE_BAT(, 29006) +HANDLE_BAT(, 29007) +HANDLE_BAT(, 29008) +HANDLE_BAT(, 29009) +HANDLE_BAT(, 29010) +HANDLE_BAT(, 29011) +HANDLE_BAT(, 29012) +HANDLE_BAT(, 29013) +HANDLE_BAT(, 29014) +HANDLE_BAT(, 29015) +HANDLE_BAT(, 29016) +HANDLE_BAT(, 29017) +HANDLE_BAT(, 29018) +HANDLE_BAT(, 29019) +HANDLE_BAT(, 29020) +HANDLE_BAT(, 29021) +HANDLE_BAT(, 29022) +HANDLE_BAT(, 29023) +HANDLE_BAT(, 29024) +HANDLE_BAT(, 29025) +HANDLE_BAT(, 29026) +HANDLE_BAT(, 29027) +HANDLE_BAT(, 29028) +HANDLE_BAT(, 29029) +HANDLE_BAT(, 29030) +HANDLE_BAT(, 29031) +HANDLE_BAT(, 29032) +HANDLE_BAT(, 29033) +HANDLE_BAT(, 29034) +HANDLE_BAT(, 29035) +HANDLE_BAT(, 29036) +HANDLE_BAT(, 29037) +HANDLE_BAT(, 29038) +HANDLE_BAT(, 29039) +HANDLE_BAT(, 29040) +HANDLE_BAT(, 29041) +HANDLE_BAT(, 29042) +HANDLE_BAT(, 29043) +HANDLE_BAT(, 29044) +HANDLE_BAT(, 29045) +HANDLE_BAT(, 29046) +HANDLE_BAT(, 29047) +HANDLE_BAT(, 29048) +HANDLE_BAT(, 29049) +HANDLE_BAT(, 29050) +HANDLE_BAT(, 29051) +HANDLE_BAT(, 29052) +HANDLE_BAT(, 29053) +HANDLE_BAT(, 29054) +HANDLE_BAT(, 29055) +HANDLE_BAT(, 29056) +HANDLE_BAT(, 29057) +HANDLE_BAT(, 29058) +HANDLE_BAT(, 29059) +HANDLE_BAT(, 29060) +HANDLE_BAT(, 29061) +HANDLE_BAT(, 29062) +HANDLE_BAT(, 29063) +HANDLE_BAT(, 29064) +HANDLE_BAT(, 29065) +HANDLE_BAT(, 29066) +HANDLE_BAT(, 29067) +HANDLE_BAT(, 29068) +HANDLE_BAT(, 29069) +HANDLE_BAT(, 29070) +HANDLE_BAT(, 29071) +HANDLE_BAT(, 29072) +HANDLE_BAT(, 29073) +HANDLE_BAT(, 29074) +HANDLE_BAT(, 29075) +HANDLE_BAT(, 29076) +HANDLE_BAT(, 29077) +HANDLE_BAT(, 29078) +HANDLE_BAT(, 29079) +HANDLE_BAT(, 29080) +HANDLE_BAT(, 29081) +HANDLE_BAT(, 29082) +HANDLE_BAT(, 29083) +HANDLE_BAT(, 29084) +HANDLE_BAT(, 29085) +HANDLE_BAT(, 29086) +HANDLE_BAT(, 29087) +HANDLE_BAT(, 29088) +HANDLE_BAT(, 29089) +HANDLE_BAT(, 29090) +HANDLE_BAT(, 29091) +HANDLE_BAT(, 29092) +HANDLE_BAT(, 29093) +HANDLE_BAT(, 29094) +HANDLE_BAT(, 29095) +HANDLE_BAT(, 29096) +HANDLE_BAT(, 29097) +HANDLE_BAT(, 29098) +HANDLE_BAT(, 29099) +HANDLE_BAT(, 29100) +HANDLE_BAT(, 29101) +HANDLE_BAT(, 29102) +HANDLE_BAT(, 29103) +HANDLE_BAT(, 29104) +HANDLE_BAT(, 29105) +HANDLE_BAT(, 29106) +HANDLE_BAT(, 29107) +HANDLE_BAT(, 29108) +HANDLE_BAT(, 29109) +HANDLE_BAT(, 29110) +HANDLE_BAT(, 29111) +HANDLE_BAT(, 29112) +HANDLE_BAT(, 29113) +HANDLE_BAT(, 29114) +HANDLE_BAT(, 29115) +HANDLE_BAT(, 29116) +HANDLE_BAT(, 29117) +HANDLE_BAT(, 29118) +HANDLE_BAT(, 29119) +HANDLE_BAT(, 29120) +HANDLE_BAT(, 29121) +HANDLE_BAT(, 29122) +HANDLE_BAT(, 29123) +HANDLE_BAT(, 29124) +HANDLE_BAT(, 29125) +HANDLE_BAT(, 29126) +HANDLE_BAT(, 29127) +HANDLE_BAT(, 29128) +HANDLE_BAT(, 29129) +HANDLE_BAT(, 29130) +HANDLE_BAT(, 29131) +HANDLE_BAT(, 29132) +HANDLE_BAT(, 29133) +HANDLE_BAT(, 29134) +HANDLE_BAT(, 29135) +HANDLE_BAT(, 29136) +HANDLE_BAT(, 29137) +HANDLE_BAT(, 29138) +HANDLE_BAT(, 29139) +HANDLE_BAT(, 29140) +HANDLE_BAT(, 29141) +HANDLE_BAT(, 29142) +HANDLE_BAT(, 29143) +HANDLE_BAT(, 29144) +HANDLE_BAT(, 29145) +HANDLE_BAT(, 29146) +HANDLE_BAT(, 29147) +HANDLE_BAT(, 29148) +HANDLE_BAT(, 29149) +HANDLE_BAT(, 29150) +HANDLE_BAT(, 29151) +HANDLE_BAT(, 29152) +HANDLE_BAT(, 29153) +HANDLE_BAT(, 29154) +HANDLE_BAT(, 29155) +HANDLE_BAT(, 29156) +HANDLE_BAT(, 29157) +HANDLE_BAT(, 29158) +HANDLE_BAT(, 29159) +HANDLE_BAT(, 29160) +HANDLE_BAT(, 29161) +HANDLE_BAT(, 29162) +HANDLE_BAT(, 29163) +HANDLE_BAT(, 29164) +HANDLE_BAT(, 29165) +HANDLE_BAT(, 29166) +HANDLE_BAT(, 29167) +HANDLE_BAT(, 29168) +HANDLE_BAT(, 29169) +HANDLE_BAT(, 29170) +HANDLE_BAT(, 29171) +HANDLE_BAT(, 29172) +HANDLE_BAT(, 29173) +HANDLE_BAT(, 29174) +HANDLE_BAT(, 29175) +HANDLE_BAT(, 29176) +HANDLE_BAT(, 29177) +HANDLE_BAT(, 29178) +HANDLE_BAT(, 29179) +HANDLE_BAT(, 29180) +HANDLE_BAT(, 29181) +HANDLE_BAT(, 29182) +HANDLE_BAT(, 29183) +HANDLE_BAT(, 29184) +HANDLE_BAT(, 29185) +HANDLE_BAT(, 29186) +HANDLE_BAT(, 29187) +HANDLE_BAT(, 29188) +HANDLE_BAT(, 29189) +HANDLE_BAT(, 29190) +HANDLE_BAT(, 29191) +HANDLE_BAT(, 29192) +HANDLE_BAT(, 29193) +HANDLE_BAT(, 29194) +HANDLE_BAT(, 29195) +HANDLE_BAT(, 29196) +HANDLE_BAT(, 29197) +HANDLE_BAT(, 29198) +HANDLE_BAT(, 29199) +HANDLE_BAT(, 29200) +HANDLE_BAT(, 29201) +HANDLE_BAT(, 29202) +HANDLE_BAT(, 29203) +HANDLE_BAT(, 29204) +HANDLE_BAT(, 29205) +HANDLE_BAT(, 29206) +HANDLE_BAT(, 29207) +HANDLE_BAT(, 29208) +HANDLE_BAT(, 29209) +HANDLE_BAT(, 29210) +HANDLE_BAT(, 29211) +HANDLE_BAT(, 29212) +HANDLE_BAT(, 29213) +HANDLE_BAT(, 29214) +HANDLE_BAT(, 29215) +HANDLE_BAT(, 29216) +HANDLE_BAT(, 29217) +HANDLE_BAT(, 29218) +HANDLE_BAT(, 29219) +HANDLE_BAT(, 29220) +HANDLE_BAT(, 29221) +HANDLE_BAT(, 29222) +HANDLE_BAT(, 29223) +HANDLE_BAT(, 29224) +HANDLE_BAT(, 29225) +HANDLE_BAT(, 29226) +HANDLE_BAT(, 29227) +HANDLE_BAT(, 29228) +HANDLE_BAT(, 29229) +HANDLE_BAT(, 29230) +HANDLE_BAT(, 29231) +HANDLE_BAT(, 29232) +HANDLE_BAT(, 29233) +HANDLE_BAT(, 29234) +HANDLE_BAT(, 29235) +HANDLE_BAT(, 29236) +HANDLE_BAT(, 29237) +HANDLE_BAT(, 29238) +HANDLE_BAT(, 29239) +HANDLE_BAT(, 29240) +HANDLE_BAT(, 29241) +HANDLE_BAT(, 29242) +HANDLE_BAT(, 29243) +HANDLE_BAT(, 29244) +HANDLE_BAT(, 29245) +HANDLE_BAT(, 29246) +HANDLE_BAT(, 29247) +HANDLE_BAT(, 29248) +HANDLE_BAT(, 29249) +HANDLE_BAT(, 29250) +HANDLE_BAT(, 29251) +HANDLE_BAT(, 29252) +HANDLE_BAT(, 29253) +HANDLE_BAT(, 29254) +HANDLE_BAT(, 29255) +HANDLE_BAT(, 29256) +HANDLE_BAT(, 29257) +HANDLE_BAT(, 29258) +HANDLE_BAT(, 29259) +HANDLE_BAT(, 29260) +HANDLE_BAT(, 29261) +HANDLE_BAT(, 29262) +HANDLE_BAT(, 29263) +HANDLE_BAT(, 29264) +HANDLE_BAT(, 29265) +HANDLE_BAT(, 29266) +HANDLE_BAT(, 29267) +HANDLE_BAT(, 29268) +HANDLE_BAT(, 29269) +HANDLE_BAT(, 29270) +HANDLE_BAT(, 29271) +HANDLE_BAT(, 29272) +HANDLE_BAT(, 29273) +HANDLE_BAT(, 29274) +HANDLE_BAT(, 29275) +HANDLE_BAT(, 29276) +HANDLE_BAT(, 29277) +HANDLE_BAT(, 29278) +HANDLE_BAT(, 29279) +HANDLE_BAT(, 29280) +HANDLE_BAT(, 29281) +HANDLE_BAT(, 29282) +HANDLE_BAT(, 29283) +HANDLE_BAT(, 29284) +HANDLE_BAT(, 29285) +HANDLE_BAT(, 29286) +HANDLE_BAT(, 29287) +HANDLE_BAT(, 29288) +HANDLE_BAT(, 29289) +HANDLE_BAT(, 29290) +HANDLE_BAT(, 29291) +HANDLE_BAT(, 29292) +HANDLE_BAT(, 29293) +HANDLE_BAT(, 29294) +HANDLE_BAT(, 29295) +HANDLE_BAT(, 29296) +HANDLE_BAT(, 29297) +HANDLE_BAT(, 29298) +HANDLE_BAT(, 29299) +HANDLE_BAT(, 29300) +HANDLE_BAT(, 29301) +HANDLE_BAT(, 29302) +HANDLE_BAT(, 29303) +HANDLE_BAT(, 29304) +HANDLE_BAT(, 29305) +HANDLE_BAT(, 29306) +HANDLE_BAT(, 29307) +HANDLE_BAT(, 29308) +HANDLE_BAT(, 29309) +HANDLE_BAT(, 29310) +HANDLE_BAT(, 29311) +HANDLE_BAT(, 29312) +HANDLE_BAT(, 29313) +HANDLE_BAT(, 29314) +HANDLE_BAT(, 29315) +HANDLE_BAT(, 29316) +HANDLE_BAT(, 29317) +HANDLE_BAT(, 29318) +HANDLE_BAT(, 29319) +HANDLE_BAT(, 29320) +HANDLE_BAT(, 29321) +HANDLE_BAT(, 29322) +HANDLE_BAT(, 29323) +HANDLE_BAT(, 29324) +HANDLE_BAT(, 29325) +HANDLE_BAT(, 29326) +HANDLE_BAT(, 29327) +HANDLE_BAT(, 29328) +HANDLE_BAT(, 29329) +HANDLE_BAT(, 29330) +HANDLE_BAT(, 29331) +HANDLE_BAT(, 29332) +HANDLE_BAT(, 29333) +HANDLE_BAT(, 29334) +HANDLE_BAT(, 29335) +HANDLE_BAT(, 29336) +HANDLE_BAT(, 29337) +HANDLE_BAT(, 29338) +HANDLE_BAT(, 29339) +HANDLE_BAT(, 29340) +HANDLE_BAT(, 29341) +HANDLE_BAT(, 29342) +HANDLE_BAT(, 29343) +HANDLE_BAT(, 29344) +HANDLE_BAT(, 29345) +HANDLE_BAT(, 29346) +HANDLE_BAT(, 29347) +HANDLE_BAT(, 29348) +HANDLE_BAT(, 29349) +HANDLE_BAT(, 29350) +HANDLE_BAT(, 29351) +HANDLE_BAT(, 29352) +HANDLE_BAT(, 29353) +HANDLE_BAT(, 29354) +HANDLE_BAT(, 29355) +HANDLE_BAT(, 29356) +HANDLE_BAT(, 29357) +HANDLE_BAT(, 29358) +HANDLE_BAT(, 29359) +HANDLE_BAT(, 29360) +HANDLE_BAT(, 29361) +HANDLE_BAT(, 29362) +HANDLE_BAT(, 29363) +HANDLE_BAT(, 29364) +HANDLE_BAT(, 29365) +HANDLE_BAT(, 29366) +HANDLE_BAT(, 29367) +HANDLE_BAT(, 29368) +HANDLE_BAT(, 29369) +HANDLE_BAT(, 29370) +HANDLE_BAT(, 29371) +HANDLE_BAT(, 29372) +HANDLE_BAT(, 29373) +HANDLE_BAT(, 29374) +HANDLE_BAT(, 29375) +HANDLE_BAT(, 29376) +HANDLE_BAT(, 29377) +HANDLE_BAT(, 29378) +HANDLE_BAT(, 29379) +HANDLE_BAT(, 29380) +HANDLE_BAT(, 29381) +HANDLE_BAT(, 29382) +HANDLE_BAT(, 29383) +HANDLE_BAT(, 29384) +HANDLE_BAT(, 29385) +HANDLE_BAT(, 29386) +HANDLE_BAT(, 29387) +HANDLE_BAT(, 29388) +HANDLE_BAT(, 29389) +HANDLE_BAT(, 29390) +HANDLE_BAT(, 29391) +HANDLE_BAT(, 29392) +HANDLE_BAT(, 29393) +HANDLE_BAT(, 29394) +HANDLE_BAT(, 29395) +HANDLE_BAT(, 29396) +HANDLE_BAT(, 29397) +HANDLE_BAT(, 29398) +HANDLE_BAT(, 29399) +HANDLE_BAT(, 29400) +HANDLE_BAT(, 29401) +HANDLE_BAT(, 29402) +HANDLE_BAT(, 29403) +HANDLE_BAT(, 29404) +HANDLE_BAT(, 29405) +HANDLE_BAT(, 29406) +HANDLE_BAT(, 29407) +HANDLE_BAT(, 29408) +HANDLE_BAT(, 29409) +HANDLE_BAT(, 29410) +HANDLE_BAT(, 29411) +HANDLE_BAT(, 29412) +HANDLE_BAT(, 29413) +HANDLE_BAT(, 29414) +HANDLE_BAT(, 29415) +HANDLE_BAT(, 29416) +HANDLE_BAT(, 29417) +HANDLE_BAT(, 29418) +HANDLE_BAT(, 29419) +HANDLE_BAT(, 29420) +HANDLE_BAT(, 29421) +HANDLE_BAT(, 29422) +HANDLE_BAT(, 29423) +HANDLE_BAT(, 29424) +HANDLE_BAT(, 29425) +HANDLE_BAT(, 29426) +HANDLE_BAT(, 29427) +HANDLE_BAT(, 29428) +HANDLE_BAT(, 29429) +HANDLE_BAT(, 29430) +HANDLE_BAT(, 29431) +HANDLE_BAT(, 29432) +HANDLE_BAT(, 29433) +HANDLE_BAT(, 29434) +HANDLE_BAT(, 29435) +HANDLE_BAT(, 29436) +HANDLE_BAT(, 29437) +HANDLE_BAT(, 29438) +HANDLE_BAT(, 29439) +HANDLE_BAT(, 29440) +HANDLE_BAT(, 29441) +HANDLE_BAT(, 29442) +HANDLE_BAT(, 29443) +HANDLE_BAT(, 29444) +HANDLE_BAT(, 29445) +HANDLE_BAT(, 29446) +HANDLE_BAT(, 29447) +HANDLE_BAT(, 29448) +HANDLE_BAT(, 29449) +HANDLE_BAT(, 29450) +HANDLE_BAT(, 29451) +HANDLE_BAT(, 29452) +HANDLE_BAT(, 29453) +HANDLE_BAT(, 29454) +HANDLE_BAT(, 29455) +HANDLE_BAT(, 29456) +HANDLE_BAT(, 29457) +HANDLE_BAT(, 29458) +HANDLE_BAT(, 29459) +HANDLE_BAT(, 29460) +HANDLE_BAT(, 29461) +HANDLE_BAT(, 29462) +HANDLE_BAT(, 29463) +HANDLE_BAT(, 29464) +HANDLE_BAT(, 29465) +HANDLE_BAT(, 29466) +HANDLE_BAT(, 29467) +HANDLE_BAT(, 29468) +HANDLE_BAT(, 29469) +HANDLE_BAT(, 29470) +HANDLE_BAT(, 29471) +HANDLE_BAT(, 29472) +HANDLE_BAT(, 29473) +HANDLE_BAT(, 29474) +HANDLE_BAT(, 29475) +HANDLE_BAT(, 29476) +HANDLE_BAT(, 29477) +HANDLE_BAT(, 29478) +HANDLE_BAT(, 29479) +HANDLE_BAT(, 29480) +HANDLE_BAT(, 29481) +HANDLE_BAT(, 29482) +HANDLE_BAT(, 29483) +HANDLE_BAT(, 29484) +HANDLE_BAT(, 29485) +HANDLE_BAT(, 29486) +HANDLE_BAT(, 29487) +HANDLE_BAT(, 29488) +HANDLE_BAT(, 29489) +HANDLE_BAT(, 29490) +HANDLE_BAT(, 29491) +HANDLE_BAT(, 29492) +HANDLE_BAT(, 29493) +HANDLE_BAT(, 29494) +HANDLE_BAT(, 29495) +HANDLE_BAT(, 29496) +HANDLE_BAT(, 29497) +HANDLE_BAT(, 29498) +HANDLE_BAT(, 29499) +HANDLE_BAT(, 29500) +HANDLE_BAT(, 29501) +HANDLE_BAT(, 29502) +HANDLE_BAT(, 29503) +HANDLE_BAT(, 29504) +HANDLE_BAT(, 29505) +HANDLE_BAT(, 29506) +HANDLE_BAT(, 29507) +HANDLE_BAT(, 29508) +HANDLE_BAT(, 29509) +HANDLE_BAT(, 29510) +HANDLE_BAT(, 29511) +HANDLE_BAT(, 29512) +HANDLE_BAT(, 29513) +HANDLE_BAT(, 29514) +HANDLE_BAT(, 29515) +HANDLE_BAT(, 29516) +HANDLE_BAT(, 29517) +HANDLE_BAT(, 29518) +HANDLE_BAT(, 29519) +HANDLE_BAT(, 29520) +HANDLE_BAT(, 29521) +HANDLE_BAT(, 29522) +HANDLE_BAT(, 29523) +HANDLE_BAT(, 29524) +HANDLE_BAT(, 29525) +HANDLE_BAT(, 29526) +HANDLE_BAT(, 29527) +HANDLE_BAT(, 29528) +HANDLE_BAT(, 29529) +HANDLE_BAT(, 29530) +HANDLE_BAT(, 29531) +HANDLE_BAT(, 29532) +HANDLE_BAT(, 29533) +HANDLE_BAT(, 29534) +HANDLE_BAT(, 29535) +HANDLE_BAT(, 29536) +HANDLE_BAT(, 29537) +HANDLE_BAT(, 29538) +HANDLE_BAT(, 29539) +HANDLE_BAT(, 29540) +HANDLE_BAT(, 29541) +HANDLE_BAT(, 29542) +HANDLE_BAT(, 29543) +HANDLE_BAT(, 29544) +HANDLE_BAT(, 29545) +HANDLE_BAT(, 29546) +HANDLE_BAT(, 29547) +HANDLE_BAT(, 29548) +HANDLE_BAT(, 29549) +HANDLE_BAT(, 29550) +HANDLE_BAT(, 29551) +HANDLE_BAT(, 29552) +HANDLE_BAT(, 29553) +HANDLE_BAT(, 29554) +HANDLE_BAT(, 29555) +HANDLE_BAT(, 29556) +HANDLE_BAT(, 29557) +HANDLE_BAT(, 29558) +HANDLE_BAT(, 29559) +HANDLE_BAT(, 29560) +HANDLE_BAT(, 29561) +HANDLE_BAT(, 29562) +HANDLE_BAT(, 29563) +HANDLE_BAT(, 29564) +HANDLE_BAT(, 29565) +HANDLE_BAT(, 29566) +HANDLE_BAT(, 29567) +HANDLE_BAT(, 29568) +HANDLE_BAT(, 29569) +HANDLE_BAT(, 29570) +HANDLE_BAT(, 29571) +HANDLE_BAT(, 29572) +HANDLE_BAT(, 29573) +HANDLE_BAT(, 29574) +HANDLE_BAT(, 29575) +HANDLE_BAT(, 29576) +HANDLE_BAT(, 29577) +HANDLE_BAT(, 29578) +HANDLE_BAT(, 29579) +HANDLE_BAT(, 29580) +HANDLE_BAT(, 29581) +HANDLE_BAT(, 29582) +HANDLE_BAT(, 29583) +HANDLE_BAT(, 29584) +HANDLE_BAT(, 29585) +HANDLE_BAT(, 29586) +HANDLE_BAT(, 29587) +HANDLE_BAT(, 29588) +HANDLE_BAT(, 29589) +HANDLE_BAT(, 29590) +HANDLE_BAT(, 29591) +HANDLE_BAT(, 29592) +HANDLE_BAT(, 29593) +HANDLE_BAT(, 29594) +HANDLE_BAT(, 29595) +HANDLE_BAT(, 29596) +HANDLE_BAT(, 29597) +HANDLE_BAT(, 29598) +HANDLE_BAT(, 29599) +HANDLE_BAT(, 29600) +HANDLE_BAT(, 29601) +HANDLE_BAT(, 29602) +HANDLE_BAT(, 29603) +HANDLE_BAT(, 29604) +HANDLE_BAT(, 29605) +HANDLE_BAT(, 29606) +HANDLE_BAT(, 29607) +HANDLE_BAT(, 29608) +HANDLE_BAT(, 29609) +HANDLE_BAT(, 29610) +HANDLE_BAT(, 29611) +HANDLE_BAT(, 29612) +HANDLE_BAT(, 29613) +HANDLE_BAT(, 29614) +HANDLE_BAT(, 29615) +HANDLE_BAT(, 29616) +HANDLE_BAT(, 29617) +HANDLE_BAT(, 29618) +HANDLE_BAT(, 29619) +HANDLE_BAT(, 29620) +HANDLE_BAT(, 29621) +HANDLE_BAT(, 29622) +HANDLE_BAT(, 29623) +HANDLE_BAT(, 29624) +HANDLE_BAT(, 29625) +HANDLE_BAT(, 29626) +HANDLE_BAT(, 29627) +HANDLE_BAT(, 29628) +HANDLE_BAT(, 29629) +HANDLE_BAT(, 29630) +HANDLE_BAT(, 29631) +HANDLE_BAT(, 29632) +HANDLE_BAT(, 29633) +HANDLE_BAT(, 29634) +HANDLE_BAT(, 29635) +HANDLE_BAT(, 29636) +HANDLE_BAT(, 29637) +HANDLE_BAT(, 29638) +HANDLE_BAT(, 29639) +HANDLE_BAT(, 29640) +HANDLE_BAT(, 29641) +HANDLE_BAT(, 29642) +HANDLE_BAT(, 29643) +HANDLE_BAT(, 29644) +HANDLE_BAT(, 29645) +HANDLE_BAT(, 29646) +HANDLE_BAT(, 29647) +HANDLE_BAT(, 29648) +HANDLE_BAT(, 29649) +HANDLE_BAT(, 29650) +HANDLE_BAT(, 29651) +HANDLE_BAT(, 29652) +HANDLE_BAT(, 29653) +HANDLE_BAT(, 29654) +HANDLE_BAT(, 29655) +HANDLE_BAT(, 29656) +HANDLE_BAT(, 29657) +HANDLE_BAT(, 29658) +HANDLE_BAT(, 29659) +HANDLE_BAT(, 29660) +HANDLE_BAT(, 29661) +HANDLE_BAT(, 29662) +HANDLE_BAT(, 29663) +HANDLE_BAT(, 29664) +HANDLE_BAT(, 29665) +HANDLE_BAT(, 29666) +HANDLE_BAT(, 29667) +HANDLE_BAT(, 29668) +HANDLE_BAT(, 29669) +HANDLE_BAT(, 29670) +HANDLE_BAT(, 29671) +HANDLE_BAT(, 29672) +HANDLE_BAT(, 29673) +HANDLE_BAT(, 29674) +HANDLE_BAT(, 29675) +HANDLE_BAT(, 29676) +HANDLE_BAT(, 29677) +HANDLE_BAT(, 29678) +HANDLE_BAT(, 29679) +HANDLE_BAT(, 29680) +HANDLE_BAT(, 29681) +HANDLE_BAT(, 29682) +HANDLE_BAT(, 29683) +HANDLE_BAT(, 29684) +HANDLE_BAT(, 29685) +HANDLE_BAT(, 29686) +HANDLE_BAT(, 29687) +HANDLE_BAT(, 29688) +HANDLE_BAT(, 29689) +HANDLE_BAT(, 29690) +HANDLE_BAT(, 29691) +HANDLE_BAT(, 29692) +HANDLE_BAT(, 29693) +HANDLE_BAT(, 29694) +HANDLE_BAT(, 29695) +HANDLE_BAT(, 29696) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 28673) +HANDLE_BAT(APINT_TYPE_PREFIX, 28674) +HANDLE_BAT(APINT_TYPE_PREFIX, 28675) +HANDLE_BAT(APINT_TYPE_PREFIX, 28676) +HANDLE_BAT(APINT_TYPE_PREFIX, 28677) +HANDLE_BAT(APINT_TYPE_PREFIX, 28678) +HANDLE_BAT(APINT_TYPE_PREFIX, 28679) +HANDLE_BAT(APINT_TYPE_PREFIX, 28680) +HANDLE_BAT(APINT_TYPE_PREFIX, 28681) +HANDLE_BAT(APINT_TYPE_PREFIX, 28682) +HANDLE_BAT(APINT_TYPE_PREFIX, 28683) +HANDLE_BAT(APINT_TYPE_PREFIX, 28684) +HANDLE_BAT(APINT_TYPE_PREFIX, 28685) +HANDLE_BAT(APINT_TYPE_PREFIX, 28686) +HANDLE_BAT(APINT_TYPE_PREFIX, 28687) +HANDLE_BAT(APINT_TYPE_PREFIX, 28688) +HANDLE_BAT(APINT_TYPE_PREFIX, 28689) +HANDLE_BAT(APINT_TYPE_PREFIX, 28690) +HANDLE_BAT(APINT_TYPE_PREFIX, 28691) +HANDLE_BAT(APINT_TYPE_PREFIX, 28692) +HANDLE_BAT(APINT_TYPE_PREFIX, 28693) +HANDLE_BAT(APINT_TYPE_PREFIX, 28694) +HANDLE_BAT(APINT_TYPE_PREFIX, 28695) +HANDLE_BAT(APINT_TYPE_PREFIX, 28696) +HANDLE_BAT(APINT_TYPE_PREFIX, 28697) +HANDLE_BAT(APINT_TYPE_PREFIX, 28698) +HANDLE_BAT(APINT_TYPE_PREFIX, 28699) +HANDLE_BAT(APINT_TYPE_PREFIX, 28700) +HANDLE_BAT(APINT_TYPE_PREFIX, 28701) +HANDLE_BAT(APINT_TYPE_PREFIX, 28702) +HANDLE_BAT(APINT_TYPE_PREFIX, 28703) +HANDLE_BAT(APINT_TYPE_PREFIX, 28704) +HANDLE_BAT(APINT_TYPE_PREFIX, 28705) +HANDLE_BAT(APINT_TYPE_PREFIX, 28706) +HANDLE_BAT(APINT_TYPE_PREFIX, 28707) +HANDLE_BAT(APINT_TYPE_PREFIX, 28708) +HANDLE_BAT(APINT_TYPE_PREFIX, 28709) +HANDLE_BAT(APINT_TYPE_PREFIX, 28710) +HANDLE_BAT(APINT_TYPE_PREFIX, 28711) +HANDLE_BAT(APINT_TYPE_PREFIX, 28712) +HANDLE_BAT(APINT_TYPE_PREFIX, 28713) +HANDLE_BAT(APINT_TYPE_PREFIX, 28714) +HANDLE_BAT(APINT_TYPE_PREFIX, 28715) +HANDLE_BAT(APINT_TYPE_PREFIX, 28716) +HANDLE_BAT(APINT_TYPE_PREFIX, 28717) +HANDLE_BAT(APINT_TYPE_PREFIX, 28718) +HANDLE_BAT(APINT_TYPE_PREFIX, 28719) +HANDLE_BAT(APINT_TYPE_PREFIX, 28720) +HANDLE_BAT(APINT_TYPE_PREFIX, 28721) +HANDLE_BAT(APINT_TYPE_PREFIX, 28722) +HANDLE_BAT(APINT_TYPE_PREFIX, 28723) +HANDLE_BAT(APINT_TYPE_PREFIX, 28724) +HANDLE_BAT(APINT_TYPE_PREFIX, 28725) +HANDLE_BAT(APINT_TYPE_PREFIX, 28726) +HANDLE_BAT(APINT_TYPE_PREFIX, 28727) +HANDLE_BAT(APINT_TYPE_PREFIX, 28728) +HANDLE_BAT(APINT_TYPE_PREFIX, 28729) +HANDLE_BAT(APINT_TYPE_PREFIX, 28730) +HANDLE_BAT(APINT_TYPE_PREFIX, 28731) +HANDLE_BAT(APINT_TYPE_PREFIX, 28732) +HANDLE_BAT(APINT_TYPE_PREFIX, 28733) +HANDLE_BAT(APINT_TYPE_PREFIX, 28734) +HANDLE_BAT(APINT_TYPE_PREFIX, 28735) +HANDLE_BAT(APINT_TYPE_PREFIX, 28736) +HANDLE_BAT(APINT_TYPE_PREFIX, 28737) +HANDLE_BAT(APINT_TYPE_PREFIX, 28738) +HANDLE_BAT(APINT_TYPE_PREFIX, 28739) +HANDLE_BAT(APINT_TYPE_PREFIX, 28740) +HANDLE_BAT(APINT_TYPE_PREFIX, 28741) +HANDLE_BAT(APINT_TYPE_PREFIX, 28742) +HANDLE_BAT(APINT_TYPE_PREFIX, 28743) +HANDLE_BAT(APINT_TYPE_PREFIX, 28744) +HANDLE_BAT(APINT_TYPE_PREFIX, 28745) +HANDLE_BAT(APINT_TYPE_PREFIX, 28746) +HANDLE_BAT(APINT_TYPE_PREFIX, 28747) +HANDLE_BAT(APINT_TYPE_PREFIX, 28748) +HANDLE_BAT(APINT_TYPE_PREFIX, 28749) +HANDLE_BAT(APINT_TYPE_PREFIX, 28750) +HANDLE_BAT(APINT_TYPE_PREFIX, 28751) +HANDLE_BAT(APINT_TYPE_PREFIX, 28752) +HANDLE_BAT(APINT_TYPE_PREFIX, 28753) +HANDLE_BAT(APINT_TYPE_PREFIX, 28754) +HANDLE_BAT(APINT_TYPE_PREFIX, 28755) +HANDLE_BAT(APINT_TYPE_PREFIX, 28756) +HANDLE_BAT(APINT_TYPE_PREFIX, 28757) +HANDLE_BAT(APINT_TYPE_PREFIX, 28758) +HANDLE_BAT(APINT_TYPE_PREFIX, 28759) +HANDLE_BAT(APINT_TYPE_PREFIX, 28760) +HANDLE_BAT(APINT_TYPE_PREFIX, 28761) +HANDLE_BAT(APINT_TYPE_PREFIX, 28762) +HANDLE_BAT(APINT_TYPE_PREFIX, 28763) +HANDLE_BAT(APINT_TYPE_PREFIX, 28764) +HANDLE_BAT(APINT_TYPE_PREFIX, 28765) +HANDLE_BAT(APINT_TYPE_PREFIX, 28766) +HANDLE_BAT(APINT_TYPE_PREFIX, 28767) +HANDLE_BAT(APINT_TYPE_PREFIX, 28768) +HANDLE_BAT(APINT_TYPE_PREFIX, 28769) +HANDLE_BAT(APINT_TYPE_PREFIX, 28770) +HANDLE_BAT(APINT_TYPE_PREFIX, 28771) +HANDLE_BAT(APINT_TYPE_PREFIX, 28772) +HANDLE_BAT(APINT_TYPE_PREFIX, 28773) +HANDLE_BAT(APINT_TYPE_PREFIX, 28774) +HANDLE_BAT(APINT_TYPE_PREFIX, 28775) +HANDLE_BAT(APINT_TYPE_PREFIX, 28776) +HANDLE_BAT(APINT_TYPE_PREFIX, 28777) +HANDLE_BAT(APINT_TYPE_PREFIX, 28778) +HANDLE_BAT(APINT_TYPE_PREFIX, 28779) +HANDLE_BAT(APINT_TYPE_PREFIX, 28780) +HANDLE_BAT(APINT_TYPE_PREFIX, 28781) +HANDLE_BAT(APINT_TYPE_PREFIX, 28782) +HANDLE_BAT(APINT_TYPE_PREFIX, 28783) +HANDLE_BAT(APINT_TYPE_PREFIX, 28784) +HANDLE_BAT(APINT_TYPE_PREFIX, 28785) +HANDLE_BAT(APINT_TYPE_PREFIX, 28786) +HANDLE_BAT(APINT_TYPE_PREFIX, 28787) +HANDLE_BAT(APINT_TYPE_PREFIX, 28788) +HANDLE_BAT(APINT_TYPE_PREFIX, 28789) +HANDLE_BAT(APINT_TYPE_PREFIX, 28790) +HANDLE_BAT(APINT_TYPE_PREFIX, 28791) +HANDLE_BAT(APINT_TYPE_PREFIX, 28792) +HANDLE_BAT(APINT_TYPE_PREFIX, 28793) +HANDLE_BAT(APINT_TYPE_PREFIX, 28794) +HANDLE_BAT(APINT_TYPE_PREFIX, 28795) +HANDLE_BAT(APINT_TYPE_PREFIX, 28796) +HANDLE_BAT(APINT_TYPE_PREFIX, 28797) +HANDLE_BAT(APINT_TYPE_PREFIX, 28798) +HANDLE_BAT(APINT_TYPE_PREFIX, 28799) +HANDLE_BAT(APINT_TYPE_PREFIX, 28800) +HANDLE_BAT(APINT_TYPE_PREFIX, 28801) +HANDLE_BAT(APINT_TYPE_PREFIX, 28802) +HANDLE_BAT(APINT_TYPE_PREFIX, 28803) +HANDLE_BAT(APINT_TYPE_PREFIX, 28804) +HANDLE_BAT(APINT_TYPE_PREFIX, 28805) +HANDLE_BAT(APINT_TYPE_PREFIX, 28806) +HANDLE_BAT(APINT_TYPE_PREFIX, 28807) +HANDLE_BAT(APINT_TYPE_PREFIX, 28808) +HANDLE_BAT(APINT_TYPE_PREFIX, 28809) +HANDLE_BAT(APINT_TYPE_PREFIX, 28810) +HANDLE_BAT(APINT_TYPE_PREFIX, 28811) +HANDLE_BAT(APINT_TYPE_PREFIX, 28812) +HANDLE_BAT(APINT_TYPE_PREFIX, 28813) +HANDLE_BAT(APINT_TYPE_PREFIX, 28814) +HANDLE_BAT(APINT_TYPE_PREFIX, 28815) +HANDLE_BAT(APINT_TYPE_PREFIX, 28816) +HANDLE_BAT(APINT_TYPE_PREFIX, 28817) +HANDLE_BAT(APINT_TYPE_PREFIX, 28818) +HANDLE_BAT(APINT_TYPE_PREFIX, 28819) +HANDLE_BAT(APINT_TYPE_PREFIX, 28820) +HANDLE_BAT(APINT_TYPE_PREFIX, 28821) +HANDLE_BAT(APINT_TYPE_PREFIX, 28822) +HANDLE_BAT(APINT_TYPE_PREFIX, 28823) +HANDLE_BAT(APINT_TYPE_PREFIX, 28824) +HANDLE_BAT(APINT_TYPE_PREFIX, 28825) +HANDLE_BAT(APINT_TYPE_PREFIX, 28826) +HANDLE_BAT(APINT_TYPE_PREFIX, 28827) +HANDLE_BAT(APINT_TYPE_PREFIX, 28828) +HANDLE_BAT(APINT_TYPE_PREFIX, 28829) +HANDLE_BAT(APINT_TYPE_PREFIX, 28830) +HANDLE_BAT(APINT_TYPE_PREFIX, 28831) +HANDLE_BAT(APINT_TYPE_PREFIX, 28832) +HANDLE_BAT(APINT_TYPE_PREFIX, 28833) +HANDLE_BAT(APINT_TYPE_PREFIX, 28834) +HANDLE_BAT(APINT_TYPE_PREFIX, 28835) +HANDLE_BAT(APINT_TYPE_PREFIX, 28836) +HANDLE_BAT(APINT_TYPE_PREFIX, 28837) +HANDLE_BAT(APINT_TYPE_PREFIX, 28838) +HANDLE_BAT(APINT_TYPE_PREFIX, 28839) +HANDLE_BAT(APINT_TYPE_PREFIX, 28840) +HANDLE_BAT(APINT_TYPE_PREFIX, 28841) +HANDLE_BAT(APINT_TYPE_PREFIX, 28842) +HANDLE_BAT(APINT_TYPE_PREFIX, 28843) +HANDLE_BAT(APINT_TYPE_PREFIX, 28844) +HANDLE_BAT(APINT_TYPE_PREFIX, 28845) +HANDLE_BAT(APINT_TYPE_PREFIX, 28846) +HANDLE_BAT(APINT_TYPE_PREFIX, 28847) +HANDLE_BAT(APINT_TYPE_PREFIX, 28848) +HANDLE_BAT(APINT_TYPE_PREFIX, 28849) +HANDLE_BAT(APINT_TYPE_PREFIX, 28850) +HANDLE_BAT(APINT_TYPE_PREFIX, 28851) +HANDLE_BAT(APINT_TYPE_PREFIX, 28852) +HANDLE_BAT(APINT_TYPE_PREFIX, 28853) +HANDLE_BAT(APINT_TYPE_PREFIX, 28854) +HANDLE_BAT(APINT_TYPE_PREFIX, 28855) +HANDLE_BAT(APINT_TYPE_PREFIX, 28856) +HANDLE_BAT(APINT_TYPE_PREFIX, 28857) +HANDLE_BAT(APINT_TYPE_PREFIX, 28858) +HANDLE_BAT(APINT_TYPE_PREFIX, 28859) +HANDLE_BAT(APINT_TYPE_PREFIX, 28860) +HANDLE_BAT(APINT_TYPE_PREFIX, 28861) +HANDLE_BAT(APINT_TYPE_PREFIX, 28862) +HANDLE_BAT(APINT_TYPE_PREFIX, 28863) +HANDLE_BAT(APINT_TYPE_PREFIX, 28864) +HANDLE_BAT(APINT_TYPE_PREFIX, 28865) +HANDLE_BAT(APINT_TYPE_PREFIX, 28866) +HANDLE_BAT(APINT_TYPE_PREFIX, 28867) +HANDLE_BAT(APINT_TYPE_PREFIX, 28868) +HANDLE_BAT(APINT_TYPE_PREFIX, 28869) +HANDLE_BAT(APINT_TYPE_PREFIX, 28870) +HANDLE_BAT(APINT_TYPE_PREFIX, 28871) +HANDLE_BAT(APINT_TYPE_PREFIX, 28872) +HANDLE_BAT(APINT_TYPE_PREFIX, 28873) +HANDLE_BAT(APINT_TYPE_PREFIX, 28874) +HANDLE_BAT(APINT_TYPE_PREFIX, 28875) +HANDLE_BAT(APINT_TYPE_PREFIX, 28876) +HANDLE_BAT(APINT_TYPE_PREFIX, 28877) +HANDLE_BAT(APINT_TYPE_PREFIX, 28878) +HANDLE_BAT(APINT_TYPE_PREFIX, 28879) +HANDLE_BAT(APINT_TYPE_PREFIX, 28880) +HANDLE_BAT(APINT_TYPE_PREFIX, 28881) +HANDLE_BAT(APINT_TYPE_PREFIX, 28882) +HANDLE_BAT(APINT_TYPE_PREFIX, 28883) +HANDLE_BAT(APINT_TYPE_PREFIX, 28884) +HANDLE_BAT(APINT_TYPE_PREFIX, 28885) +HANDLE_BAT(APINT_TYPE_PREFIX, 28886) +HANDLE_BAT(APINT_TYPE_PREFIX, 28887) +HANDLE_BAT(APINT_TYPE_PREFIX, 28888) +HANDLE_BAT(APINT_TYPE_PREFIX, 28889) +HANDLE_BAT(APINT_TYPE_PREFIX, 28890) +HANDLE_BAT(APINT_TYPE_PREFIX, 28891) +HANDLE_BAT(APINT_TYPE_PREFIX, 28892) +HANDLE_BAT(APINT_TYPE_PREFIX, 28893) +HANDLE_BAT(APINT_TYPE_PREFIX, 28894) +HANDLE_BAT(APINT_TYPE_PREFIX, 28895) +HANDLE_BAT(APINT_TYPE_PREFIX, 28896) +HANDLE_BAT(APINT_TYPE_PREFIX, 28897) +HANDLE_BAT(APINT_TYPE_PREFIX, 28898) +HANDLE_BAT(APINT_TYPE_PREFIX, 28899) +HANDLE_BAT(APINT_TYPE_PREFIX, 28900) +HANDLE_BAT(APINT_TYPE_PREFIX, 28901) +HANDLE_BAT(APINT_TYPE_PREFIX, 28902) +HANDLE_BAT(APINT_TYPE_PREFIX, 28903) +HANDLE_BAT(APINT_TYPE_PREFIX, 28904) +HANDLE_BAT(APINT_TYPE_PREFIX, 28905) +HANDLE_BAT(APINT_TYPE_PREFIX, 28906) +HANDLE_BAT(APINT_TYPE_PREFIX, 28907) +HANDLE_BAT(APINT_TYPE_PREFIX, 28908) +HANDLE_BAT(APINT_TYPE_PREFIX, 28909) +HANDLE_BAT(APINT_TYPE_PREFIX, 28910) +HANDLE_BAT(APINT_TYPE_PREFIX, 28911) +HANDLE_BAT(APINT_TYPE_PREFIX, 28912) +HANDLE_BAT(APINT_TYPE_PREFIX, 28913) +HANDLE_BAT(APINT_TYPE_PREFIX, 28914) +HANDLE_BAT(APINT_TYPE_PREFIX, 28915) +HANDLE_BAT(APINT_TYPE_PREFIX, 28916) +HANDLE_BAT(APINT_TYPE_PREFIX, 28917) +HANDLE_BAT(APINT_TYPE_PREFIX, 28918) +HANDLE_BAT(APINT_TYPE_PREFIX, 28919) +HANDLE_BAT(APINT_TYPE_PREFIX, 28920) +HANDLE_BAT(APINT_TYPE_PREFIX, 28921) +HANDLE_BAT(APINT_TYPE_PREFIX, 28922) +HANDLE_BAT(APINT_TYPE_PREFIX, 28923) +HANDLE_BAT(APINT_TYPE_PREFIX, 28924) +HANDLE_BAT(APINT_TYPE_PREFIX, 28925) +HANDLE_BAT(APINT_TYPE_PREFIX, 28926) +HANDLE_BAT(APINT_TYPE_PREFIX, 28927) +HANDLE_BAT(APINT_TYPE_PREFIX, 28928) +HANDLE_BAT(APINT_TYPE_PREFIX, 28929) +HANDLE_BAT(APINT_TYPE_PREFIX, 28930) +HANDLE_BAT(APINT_TYPE_PREFIX, 28931) +HANDLE_BAT(APINT_TYPE_PREFIX, 28932) +HANDLE_BAT(APINT_TYPE_PREFIX, 28933) +HANDLE_BAT(APINT_TYPE_PREFIX, 28934) +HANDLE_BAT(APINT_TYPE_PREFIX, 28935) +HANDLE_BAT(APINT_TYPE_PREFIX, 28936) +HANDLE_BAT(APINT_TYPE_PREFIX, 28937) +HANDLE_BAT(APINT_TYPE_PREFIX, 28938) +HANDLE_BAT(APINT_TYPE_PREFIX, 28939) +HANDLE_BAT(APINT_TYPE_PREFIX, 28940) +HANDLE_BAT(APINT_TYPE_PREFIX, 28941) +HANDLE_BAT(APINT_TYPE_PREFIX, 28942) +HANDLE_BAT(APINT_TYPE_PREFIX, 28943) +HANDLE_BAT(APINT_TYPE_PREFIX, 28944) +HANDLE_BAT(APINT_TYPE_PREFIX, 28945) +HANDLE_BAT(APINT_TYPE_PREFIX, 28946) +HANDLE_BAT(APINT_TYPE_PREFIX, 28947) +HANDLE_BAT(APINT_TYPE_PREFIX, 28948) +HANDLE_BAT(APINT_TYPE_PREFIX, 28949) +HANDLE_BAT(APINT_TYPE_PREFIX, 28950) +HANDLE_BAT(APINT_TYPE_PREFIX, 28951) +HANDLE_BAT(APINT_TYPE_PREFIX, 28952) +HANDLE_BAT(APINT_TYPE_PREFIX, 28953) +HANDLE_BAT(APINT_TYPE_PREFIX, 28954) +HANDLE_BAT(APINT_TYPE_PREFIX, 28955) +HANDLE_BAT(APINT_TYPE_PREFIX, 28956) +HANDLE_BAT(APINT_TYPE_PREFIX, 28957) +HANDLE_BAT(APINT_TYPE_PREFIX, 28958) +HANDLE_BAT(APINT_TYPE_PREFIX, 28959) +HANDLE_BAT(APINT_TYPE_PREFIX, 28960) +HANDLE_BAT(APINT_TYPE_PREFIX, 28961) +HANDLE_BAT(APINT_TYPE_PREFIX, 28962) +HANDLE_BAT(APINT_TYPE_PREFIX, 28963) +HANDLE_BAT(APINT_TYPE_PREFIX, 28964) +HANDLE_BAT(APINT_TYPE_PREFIX, 28965) +HANDLE_BAT(APINT_TYPE_PREFIX, 28966) +HANDLE_BAT(APINT_TYPE_PREFIX, 28967) +HANDLE_BAT(APINT_TYPE_PREFIX, 28968) +HANDLE_BAT(APINT_TYPE_PREFIX, 28969) +HANDLE_BAT(APINT_TYPE_PREFIX, 28970) +HANDLE_BAT(APINT_TYPE_PREFIX, 28971) +HANDLE_BAT(APINT_TYPE_PREFIX, 28972) +HANDLE_BAT(APINT_TYPE_PREFIX, 28973) +HANDLE_BAT(APINT_TYPE_PREFIX, 28974) +HANDLE_BAT(APINT_TYPE_PREFIX, 28975) +HANDLE_BAT(APINT_TYPE_PREFIX, 28976) +HANDLE_BAT(APINT_TYPE_PREFIX, 28977) +HANDLE_BAT(APINT_TYPE_PREFIX, 28978) +HANDLE_BAT(APINT_TYPE_PREFIX, 28979) +HANDLE_BAT(APINT_TYPE_PREFIX, 28980) +HANDLE_BAT(APINT_TYPE_PREFIX, 28981) +HANDLE_BAT(APINT_TYPE_PREFIX, 28982) +HANDLE_BAT(APINT_TYPE_PREFIX, 28983) +HANDLE_BAT(APINT_TYPE_PREFIX, 28984) +HANDLE_BAT(APINT_TYPE_PREFIX, 28985) +HANDLE_BAT(APINT_TYPE_PREFIX, 28986) +HANDLE_BAT(APINT_TYPE_PREFIX, 28987) +HANDLE_BAT(APINT_TYPE_PREFIX, 28988) +HANDLE_BAT(APINT_TYPE_PREFIX, 28989) +HANDLE_BAT(APINT_TYPE_PREFIX, 28990) +HANDLE_BAT(APINT_TYPE_PREFIX, 28991) +HANDLE_BAT(APINT_TYPE_PREFIX, 28992) +HANDLE_BAT(APINT_TYPE_PREFIX, 28993) +HANDLE_BAT(APINT_TYPE_PREFIX, 28994) +HANDLE_BAT(APINT_TYPE_PREFIX, 28995) +HANDLE_BAT(APINT_TYPE_PREFIX, 28996) +HANDLE_BAT(APINT_TYPE_PREFIX, 28997) +HANDLE_BAT(APINT_TYPE_PREFIX, 28998) +HANDLE_BAT(APINT_TYPE_PREFIX, 28999) +HANDLE_BAT(APINT_TYPE_PREFIX, 29000) +HANDLE_BAT(APINT_TYPE_PREFIX, 29001) +HANDLE_BAT(APINT_TYPE_PREFIX, 29002) +HANDLE_BAT(APINT_TYPE_PREFIX, 29003) +HANDLE_BAT(APINT_TYPE_PREFIX, 29004) +HANDLE_BAT(APINT_TYPE_PREFIX, 29005) +HANDLE_BAT(APINT_TYPE_PREFIX, 29006) +HANDLE_BAT(APINT_TYPE_PREFIX, 29007) +HANDLE_BAT(APINT_TYPE_PREFIX, 29008) +HANDLE_BAT(APINT_TYPE_PREFIX, 29009) +HANDLE_BAT(APINT_TYPE_PREFIX, 29010) +HANDLE_BAT(APINT_TYPE_PREFIX, 29011) +HANDLE_BAT(APINT_TYPE_PREFIX, 29012) +HANDLE_BAT(APINT_TYPE_PREFIX, 29013) +HANDLE_BAT(APINT_TYPE_PREFIX, 29014) +HANDLE_BAT(APINT_TYPE_PREFIX, 29015) +HANDLE_BAT(APINT_TYPE_PREFIX, 29016) +HANDLE_BAT(APINT_TYPE_PREFIX, 29017) +HANDLE_BAT(APINT_TYPE_PREFIX, 29018) +HANDLE_BAT(APINT_TYPE_PREFIX, 29019) +HANDLE_BAT(APINT_TYPE_PREFIX, 29020) +HANDLE_BAT(APINT_TYPE_PREFIX, 29021) +HANDLE_BAT(APINT_TYPE_PREFIX, 29022) +HANDLE_BAT(APINT_TYPE_PREFIX, 29023) +HANDLE_BAT(APINT_TYPE_PREFIX, 29024) +HANDLE_BAT(APINT_TYPE_PREFIX, 29025) +HANDLE_BAT(APINT_TYPE_PREFIX, 29026) +HANDLE_BAT(APINT_TYPE_PREFIX, 29027) +HANDLE_BAT(APINT_TYPE_PREFIX, 29028) +HANDLE_BAT(APINT_TYPE_PREFIX, 29029) +HANDLE_BAT(APINT_TYPE_PREFIX, 29030) +HANDLE_BAT(APINT_TYPE_PREFIX, 29031) +HANDLE_BAT(APINT_TYPE_PREFIX, 29032) +HANDLE_BAT(APINT_TYPE_PREFIX, 29033) +HANDLE_BAT(APINT_TYPE_PREFIX, 29034) +HANDLE_BAT(APINT_TYPE_PREFIX, 29035) +HANDLE_BAT(APINT_TYPE_PREFIX, 29036) +HANDLE_BAT(APINT_TYPE_PREFIX, 29037) +HANDLE_BAT(APINT_TYPE_PREFIX, 29038) +HANDLE_BAT(APINT_TYPE_PREFIX, 29039) +HANDLE_BAT(APINT_TYPE_PREFIX, 29040) +HANDLE_BAT(APINT_TYPE_PREFIX, 29041) +HANDLE_BAT(APINT_TYPE_PREFIX, 29042) +HANDLE_BAT(APINT_TYPE_PREFIX, 29043) +HANDLE_BAT(APINT_TYPE_PREFIX, 29044) +HANDLE_BAT(APINT_TYPE_PREFIX, 29045) +HANDLE_BAT(APINT_TYPE_PREFIX, 29046) +HANDLE_BAT(APINT_TYPE_PREFIX, 29047) +HANDLE_BAT(APINT_TYPE_PREFIX, 29048) +HANDLE_BAT(APINT_TYPE_PREFIX, 29049) +HANDLE_BAT(APINT_TYPE_PREFIX, 29050) +HANDLE_BAT(APINT_TYPE_PREFIX, 29051) +HANDLE_BAT(APINT_TYPE_PREFIX, 29052) +HANDLE_BAT(APINT_TYPE_PREFIX, 29053) +HANDLE_BAT(APINT_TYPE_PREFIX, 29054) +HANDLE_BAT(APINT_TYPE_PREFIX, 29055) +HANDLE_BAT(APINT_TYPE_PREFIX, 29056) +HANDLE_BAT(APINT_TYPE_PREFIX, 29057) +HANDLE_BAT(APINT_TYPE_PREFIX, 29058) +HANDLE_BAT(APINT_TYPE_PREFIX, 29059) +HANDLE_BAT(APINT_TYPE_PREFIX, 29060) +HANDLE_BAT(APINT_TYPE_PREFIX, 29061) +HANDLE_BAT(APINT_TYPE_PREFIX, 29062) +HANDLE_BAT(APINT_TYPE_PREFIX, 29063) +HANDLE_BAT(APINT_TYPE_PREFIX, 29064) +HANDLE_BAT(APINT_TYPE_PREFIX, 29065) +HANDLE_BAT(APINT_TYPE_PREFIX, 29066) +HANDLE_BAT(APINT_TYPE_PREFIX, 29067) +HANDLE_BAT(APINT_TYPE_PREFIX, 29068) +HANDLE_BAT(APINT_TYPE_PREFIX, 29069) +HANDLE_BAT(APINT_TYPE_PREFIX, 29070) +HANDLE_BAT(APINT_TYPE_PREFIX, 29071) +HANDLE_BAT(APINT_TYPE_PREFIX, 29072) +HANDLE_BAT(APINT_TYPE_PREFIX, 29073) +HANDLE_BAT(APINT_TYPE_PREFIX, 29074) +HANDLE_BAT(APINT_TYPE_PREFIX, 29075) +HANDLE_BAT(APINT_TYPE_PREFIX, 29076) +HANDLE_BAT(APINT_TYPE_PREFIX, 29077) +HANDLE_BAT(APINT_TYPE_PREFIX, 29078) +HANDLE_BAT(APINT_TYPE_PREFIX, 29079) +HANDLE_BAT(APINT_TYPE_PREFIX, 29080) +HANDLE_BAT(APINT_TYPE_PREFIX, 29081) +HANDLE_BAT(APINT_TYPE_PREFIX, 29082) +HANDLE_BAT(APINT_TYPE_PREFIX, 29083) +HANDLE_BAT(APINT_TYPE_PREFIX, 29084) +HANDLE_BAT(APINT_TYPE_PREFIX, 29085) +HANDLE_BAT(APINT_TYPE_PREFIX, 29086) +HANDLE_BAT(APINT_TYPE_PREFIX, 29087) +HANDLE_BAT(APINT_TYPE_PREFIX, 29088) +HANDLE_BAT(APINT_TYPE_PREFIX, 29089) +HANDLE_BAT(APINT_TYPE_PREFIX, 29090) +HANDLE_BAT(APINT_TYPE_PREFIX, 29091) +HANDLE_BAT(APINT_TYPE_PREFIX, 29092) +HANDLE_BAT(APINT_TYPE_PREFIX, 29093) +HANDLE_BAT(APINT_TYPE_PREFIX, 29094) +HANDLE_BAT(APINT_TYPE_PREFIX, 29095) +HANDLE_BAT(APINT_TYPE_PREFIX, 29096) +HANDLE_BAT(APINT_TYPE_PREFIX, 29097) +HANDLE_BAT(APINT_TYPE_PREFIX, 29098) +HANDLE_BAT(APINT_TYPE_PREFIX, 29099) +HANDLE_BAT(APINT_TYPE_PREFIX, 29100) +HANDLE_BAT(APINT_TYPE_PREFIX, 29101) +HANDLE_BAT(APINT_TYPE_PREFIX, 29102) +HANDLE_BAT(APINT_TYPE_PREFIX, 29103) +HANDLE_BAT(APINT_TYPE_PREFIX, 29104) +HANDLE_BAT(APINT_TYPE_PREFIX, 29105) +HANDLE_BAT(APINT_TYPE_PREFIX, 29106) +HANDLE_BAT(APINT_TYPE_PREFIX, 29107) +HANDLE_BAT(APINT_TYPE_PREFIX, 29108) +HANDLE_BAT(APINT_TYPE_PREFIX, 29109) +HANDLE_BAT(APINT_TYPE_PREFIX, 29110) +HANDLE_BAT(APINT_TYPE_PREFIX, 29111) +HANDLE_BAT(APINT_TYPE_PREFIX, 29112) +HANDLE_BAT(APINT_TYPE_PREFIX, 29113) +HANDLE_BAT(APINT_TYPE_PREFIX, 29114) +HANDLE_BAT(APINT_TYPE_PREFIX, 29115) +HANDLE_BAT(APINT_TYPE_PREFIX, 29116) +HANDLE_BAT(APINT_TYPE_PREFIX, 29117) +HANDLE_BAT(APINT_TYPE_PREFIX, 29118) +HANDLE_BAT(APINT_TYPE_PREFIX, 29119) +HANDLE_BAT(APINT_TYPE_PREFIX, 29120) +HANDLE_BAT(APINT_TYPE_PREFIX, 29121) +HANDLE_BAT(APINT_TYPE_PREFIX, 29122) +HANDLE_BAT(APINT_TYPE_PREFIX, 29123) +HANDLE_BAT(APINT_TYPE_PREFIX, 29124) +HANDLE_BAT(APINT_TYPE_PREFIX, 29125) +HANDLE_BAT(APINT_TYPE_PREFIX, 29126) +HANDLE_BAT(APINT_TYPE_PREFIX, 29127) +HANDLE_BAT(APINT_TYPE_PREFIX, 29128) +HANDLE_BAT(APINT_TYPE_PREFIX, 29129) +HANDLE_BAT(APINT_TYPE_PREFIX, 29130) +HANDLE_BAT(APINT_TYPE_PREFIX, 29131) +HANDLE_BAT(APINT_TYPE_PREFIX, 29132) +HANDLE_BAT(APINT_TYPE_PREFIX, 29133) +HANDLE_BAT(APINT_TYPE_PREFIX, 29134) +HANDLE_BAT(APINT_TYPE_PREFIX, 29135) +HANDLE_BAT(APINT_TYPE_PREFIX, 29136) +HANDLE_BAT(APINT_TYPE_PREFIX, 29137) +HANDLE_BAT(APINT_TYPE_PREFIX, 29138) +HANDLE_BAT(APINT_TYPE_PREFIX, 29139) +HANDLE_BAT(APINT_TYPE_PREFIX, 29140) +HANDLE_BAT(APINT_TYPE_PREFIX, 29141) +HANDLE_BAT(APINT_TYPE_PREFIX, 29142) +HANDLE_BAT(APINT_TYPE_PREFIX, 29143) +HANDLE_BAT(APINT_TYPE_PREFIX, 29144) +HANDLE_BAT(APINT_TYPE_PREFIX, 29145) +HANDLE_BAT(APINT_TYPE_PREFIX, 29146) +HANDLE_BAT(APINT_TYPE_PREFIX, 29147) +HANDLE_BAT(APINT_TYPE_PREFIX, 29148) +HANDLE_BAT(APINT_TYPE_PREFIX, 29149) +HANDLE_BAT(APINT_TYPE_PREFIX, 29150) +HANDLE_BAT(APINT_TYPE_PREFIX, 29151) +HANDLE_BAT(APINT_TYPE_PREFIX, 29152) +HANDLE_BAT(APINT_TYPE_PREFIX, 29153) +HANDLE_BAT(APINT_TYPE_PREFIX, 29154) +HANDLE_BAT(APINT_TYPE_PREFIX, 29155) +HANDLE_BAT(APINT_TYPE_PREFIX, 29156) +HANDLE_BAT(APINT_TYPE_PREFIX, 29157) +HANDLE_BAT(APINT_TYPE_PREFIX, 29158) +HANDLE_BAT(APINT_TYPE_PREFIX, 29159) +HANDLE_BAT(APINT_TYPE_PREFIX, 29160) +HANDLE_BAT(APINT_TYPE_PREFIX, 29161) +HANDLE_BAT(APINT_TYPE_PREFIX, 29162) +HANDLE_BAT(APINT_TYPE_PREFIX, 29163) +HANDLE_BAT(APINT_TYPE_PREFIX, 29164) +HANDLE_BAT(APINT_TYPE_PREFIX, 29165) +HANDLE_BAT(APINT_TYPE_PREFIX, 29166) +HANDLE_BAT(APINT_TYPE_PREFIX, 29167) +HANDLE_BAT(APINT_TYPE_PREFIX, 29168) +HANDLE_BAT(APINT_TYPE_PREFIX, 29169) +HANDLE_BAT(APINT_TYPE_PREFIX, 29170) +HANDLE_BAT(APINT_TYPE_PREFIX, 29171) +HANDLE_BAT(APINT_TYPE_PREFIX, 29172) +HANDLE_BAT(APINT_TYPE_PREFIX, 29173) +HANDLE_BAT(APINT_TYPE_PREFIX, 29174) +HANDLE_BAT(APINT_TYPE_PREFIX, 29175) +HANDLE_BAT(APINT_TYPE_PREFIX, 29176) +HANDLE_BAT(APINT_TYPE_PREFIX, 29177) +HANDLE_BAT(APINT_TYPE_PREFIX, 29178) +HANDLE_BAT(APINT_TYPE_PREFIX, 29179) +HANDLE_BAT(APINT_TYPE_PREFIX, 29180) +HANDLE_BAT(APINT_TYPE_PREFIX, 29181) +HANDLE_BAT(APINT_TYPE_PREFIX, 29182) +HANDLE_BAT(APINT_TYPE_PREFIX, 29183) +HANDLE_BAT(APINT_TYPE_PREFIX, 29184) +HANDLE_BAT(APINT_TYPE_PREFIX, 29185) +HANDLE_BAT(APINT_TYPE_PREFIX, 29186) +HANDLE_BAT(APINT_TYPE_PREFIX, 29187) +HANDLE_BAT(APINT_TYPE_PREFIX, 29188) +HANDLE_BAT(APINT_TYPE_PREFIX, 29189) +HANDLE_BAT(APINT_TYPE_PREFIX, 29190) +HANDLE_BAT(APINT_TYPE_PREFIX, 29191) +HANDLE_BAT(APINT_TYPE_PREFIX, 29192) +HANDLE_BAT(APINT_TYPE_PREFIX, 29193) +HANDLE_BAT(APINT_TYPE_PREFIX, 29194) +HANDLE_BAT(APINT_TYPE_PREFIX, 29195) +HANDLE_BAT(APINT_TYPE_PREFIX, 29196) +HANDLE_BAT(APINT_TYPE_PREFIX, 29197) +HANDLE_BAT(APINT_TYPE_PREFIX, 29198) +HANDLE_BAT(APINT_TYPE_PREFIX, 29199) +HANDLE_BAT(APINT_TYPE_PREFIX, 29200) +HANDLE_BAT(APINT_TYPE_PREFIX, 29201) +HANDLE_BAT(APINT_TYPE_PREFIX, 29202) +HANDLE_BAT(APINT_TYPE_PREFIX, 29203) +HANDLE_BAT(APINT_TYPE_PREFIX, 29204) +HANDLE_BAT(APINT_TYPE_PREFIX, 29205) +HANDLE_BAT(APINT_TYPE_PREFIX, 29206) +HANDLE_BAT(APINT_TYPE_PREFIX, 29207) +HANDLE_BAT(APINT_TYPE_PREFIX, 29208) +HANDLE_BAT(APINT_TYPE_PREFIX, 29209) +HANDLE_BAT(APINT_TYPE_PREFIX, 29210) +HANDLE_BAT(APINT_TYPE_PREFIX, 29211) +HANDLE_BAT(APINT_TYPE_PREFIX, 29212) +HANDLE_BAT(APINT_TYPE_PREFIX, 29213) +HANDLE_BAT(APINT_TYPE_PREFIX, 29214) +HANDLE_BAT(APINT_TYPE_PREFIX, 29215) +HANDLE_BAT(APINT_TYPE_PREFIX, 29216) +HANDLE_BAT(APINT_TYPE_PREFIX, 29217) +HANDLE_BAT(APINT_TYPE_PREFIX, 29218) +HANDLE_BAT(APINT_TYPE_PREFIX, 29219) +HANDLE_BAT(APINT_TYPE_PREFIX, 29220) +HANDLE_BAT(APINT_TYPE_PREFIX, 29221) +HANDLE_BAT(APINT_TYPE_PREFIX, 29222) +HANDLE_BAT(APINT_TYPE_PREFIX, 29223) +HANDLE_BAT(APINT_TYPE_PREFIX, 29224) +HANDLE_BAT(APINT_TYPE_PREFIX, 29225) +HANDLE_BAT(APINT_TYPE_PREFIX, 29226) +HANDLE_BAT(APINT_TYPE_PREFIX, 29227) +HANDLE_BAT(APINT_TYPE_PREFIX, 29228) +HANDLE_BAT(APINT_TYPE_PREFIX, 29229) +HANDLE_BAT(APINT_TYPE_PREFIX, 29230) +HANDLE_BAT(APINT_TYPE_PREFIX, 29231) +HANDLE_BAT(APINT_TYPE_PREFIX, 29232) +HANDLE_BAT(APINT_TYPE_PREFIX, 29233) +HANDLE_BAT(APINT_TYPE_PREFIX, 29234) +HANDLE_BAT(APINT_TYPE_PREFIX, 29235) +HANDLE_BAT(APINT_TYPE_PREFIX, 29236) +HANDLE_BAT(APINT_TYPE_PREFIX, 29237) +HANDLE_BAT(APINT_TYPE_PREFIX, 29238) +HANDLE_BAT(APINT_TYPE_PREFIX, 29239) +HANDLE_BAT(APINT_TYPE_PREFIX, 29240) +HANDLE_BAT(APINT_TYPE_PREFIX, 29241) +HANDLE_BAT(APINT_TYPE_PREFIX, 29242) +HANDLE_BAT(APINT_TYPE_PREFIX, 29243) +HANDLE_BAT(APINT_TYPE_PREFIX, 29244) +HANDLE_BAT(APINT_TYPE_PREFIX, 29245) +HANDLE_BAT(APINT_TYPE_PREFIX, 29246) +HANDLE_BAT(APINT_TYPE_PREFIX, 29247) +HANDLE_BAT(APINT_TYPE_PREFIX, 29248) +HANDLE_BAT(APINT_TYPE_PREFIX, 29249) +HANDLE_BAT(APINT_TYPE_PREFIX, 29250) +HANDLE_BAT(APINT_TYPE_PREFIX, 29251) +HANDLE_BAT(APINT_TYPE_PREFIX, 29252) +HANDLE_BAT(APINT_TYPE_PREFIX, 29253) +HANDLE_BAT(APINT_TYPE_PREFIX, 29254) +HANDLE_BAT(APINT_TYPE_PREFIX, 29255) +HANDLE_BAT(APINT_TYPE_PREFIX, 29256) +HANDLE_BAT(APINT_TYPE_PREFIX, 29257) +HANDLE_BAT(APINT_TYPE_PREFIX, 29258) +HANDLE_BAT(APINT_TYPE_PREFIX, 29259) +HANDLE_BAT(APINT_TYPE_PREFIX, 29260) +HANDLE_BAT(APINT_TYPE_PREFIX, 29261) +HANDLE_BAT(APINT_TYPE_PREFIX, 29262) +HANDLE_BAT(APINT_TYPE_PREFIX, 29263) +HANDLE_BAT(APINT_TYPE_PREFIX, 29264) +HANDLE_BAT(APINT_TYPE_PREFIX, 29265) +HANDLE_BAT(APINT_TYPE_PREFIX, 29266) +HANDLE_BAT(APINT_TYPE_PREFIX, 29267) +HANDLE_BAT(APINT_TYPE_PREFIX, 29268) +HANDLE_BAT(APINT_TYPE_PREFIX, 29269) +HANDLE_BAT(APINT_TYPE_PREFIX, 29270) +HANDLE_BAT(APINT_TYPE_PREFIX, 29271) +HANDLE_BAT(APINT_TYPE_PREFIX, 29272) +HANDLE_BAT(APINT_TYPE_PREFIX, 29273) +HANDLE_BAT(APINT_TYPE_PREFIX, 29274) +HANDLE_BAT(APINT_TYPE_PREFIX, 29275) +HANDLE_BAT(APINT_TYPE_PREFIX, 29276) +HANDLE_BAT(APINT_TYPE_PREFIX, 29277) +HANDLE_BAT(APINT_TYPE_PREFIX, 29278) +HANDLE_BAT(APINT_TYPE_PREFIX, 29279) +HANDLE_BAT(APINT_TYPE_PREFIX, 29280) +HANDLE_BAT(APINT_TYPE_PREFIX, 29281) +HANDLE_BAT(APINT_TYPE_PREFIX, 29282) +HANDLE_BAT(APINT_TYPE_PREFIX, 29283) +HANDLE_BAT(APINT_TYPE_PREFIX, 29284) +HANDLE_BAT(APINT_TYPE_PREFIX, 29285) +HANDLE_BAT(APINT_TYPE_PREFIX, 29286) +HANDLE_BAT(APINT_TYPE_PREFIX, 29287) +HANDLE_BAT(APINT_TYPE_PREFIX, 29288) +HANDLE_BAT(APINT_TYPE_PREFIX, 29289) +HANDLE_BAT(APINT_TYPE_PREFIX, 29290) +HANDLE_BAT(APINT_TYPE_PREFIX, 29291) +HANDLE_BAT(APINT_TYPE_PREFIX, 29292) +HANDLE_BAT(APINT_TYPE_PREFIX, 29293) +HANDLE_BAT(APINT_TYPE_PREFIX, 29294) +HANDLE_BAT(APINT_TYPE_PREFIX, 29295) +HANDLE_BAT(APINT_TYPE_PREFIX, 29296) +HANDLE_BAT(APINT_TYPE_PREFIX, 29297) +HANDLE_BAT(APINT_TYPE_PREFIX, 29298) +HANDLE_BAT(APINT_TYPE_PREFIX, 29299) +HANDLE_BAT(APINT_TYPE_PREFIX, 29300) +HANDLE_BAT(APINT_TYPE_PREFIX, 29301) +HANDLE_BAT(APINT_TYPE_PREFIX, 29302) +HANDLE_BAT(APINT_TYPE_PREFIX, 29303) +HANDLE_BAT(APINT_TYPE_PREFIX, 29304) +HANDLE_BAT(APINT_TYPE_PREFIX, 29305) +HANDLE_BAT(APINT_TYPE_PREFIX, 29306) +HANDLE_BAT(APINT_TYPE_PREFIX, 29307) +HANDLE_BAT(APINT_TYPE_PREFIX, 29308) +HANDLE_BAT(APINT_TYPE_PREFIX, 29309) +HANDLE_BAT(APINT_TYPE_PREFIX, 29310) +HANDLE_BAT(APINT_TYPE_PREFIX, 29311) +HANDLE_BAT(APINT_TYPE_PREFIX, 29312) +HANDLE_BAT(APINT_TYPE_PREFIX, 29313) +HANDLE_BAT(APINT_TYPE_PREFIX, 29314) +HANDLE_BAT(APINT_TYPE_PREFIX, 29315) +HANDLE_BAT(APINT_TYPE_PREFIX, 29316) +HANDLE_BAT(APINT_TYPE_PREFIX, 29317) +HANDLE_BAT(APINT_TYPE_PREFIX, 29318) +HANDLE_BAT(APINT_TYPE_PREFIX, 29319) +HANDLE_BAT(APINT_TYPE_PREFIX, 29320) +HANDLE_BAT(APINT_TYPE_PREFIX, 29321) +HANDLE_BAT(APINT_TYPE_PREFIX, 29322) +HANDLE_BAT(APINT_TYPE_PREFIX, 29323) +HANDLE_BAT(APINT_TYPE_PREFIX, 29324) +HANDLE_BAT(APINT_TYPE_PREFIX, 29325) +HANDLE_BAT(APINT_TYPE_PREFIX, 29326) +HANDLE_BAT(APINT_TYPE_PREFIX, 29327) +HANDLE_BAT(APINT_TYPE_PREFIX, 29328) +HANDLE_BAT(APINT_TYPE_PREFIX, 29329) +HANDLE_BAT(APINT_TYPE_PREFIX, 29330) +HANDLE_BAT(APINT_TYPE_PREFIX, 29331) +HANDLE_BAT(APINT_TYPE_PREFIX, 29332) +HANDLE_BAT(APINT_TYPE_PREFIX, 29333) +HANDLE_BAT(APINT_TYPE_PREFIX, 29334) +HANDLE_BAT(APINT_TYPE_PREFIX, 29335) +HANDLE_BAT(APINT_TYPE_PREFIX, 29336) +HANDLE_BAT(APINT_TYPE_PREFIX, 29337) +HANDLE_BAT(APINT_TYPE_PREFIX, 29338) +HANDLE_BAT(APINT_TYPE_PREFIX, 29339) +HANDLE_BAT(APINT_TYPE_PREFIX, 29340) +HANDLE_BAT(APINT_TYPE_PREFIX, 29341) +HANDLE_BAT(APINT_TYPE_PREFIX, 29342) +HANDLE_BAT(APINT_TYPE_PREFIX, 29343) +HANDLE_BAT(APINT_TYPE_PREFIX, 29344) +HANDLE_BAT(APINT_TYPE_PREFIX, 29345) +HANDLE_BAT(APINT_TYPE_PREFIX, 29346) +HANDLE_BAT(APINT_TYPE_PREFIX, 29347) +HANDLE_BAT(APINT_TYPE_PREFIX, 29348) +HANDLE_BAT(APINT_TYPE_PREFIX, 29349) +HANDLE_BAT(APINT_TYPE_PREFIX, 29350) +HANDLE_BAT(APINT_TYPE_PREFIX, 29351) +HANDLE_BAT(APINT_TYPE_PREFIX, 29352) +HANDLE_BAT(APINT_TYPE_PREFIX, 29353) +HANDLE_BAT(APINT_TYPE_PREFIX, 29354) +HANDLE_BAT(APINT_TYPE_PREFIX, 29355) +HANDLE_BAT(APINT_TYPE_PREFIX, 29356) +HANDLE_BAT(APINT_TYPE_PREFIX, 29357) +HANDLE_BAT(APINT_TYPE_PREFIX, 29358) +HANDLE_BAT(APINT_TYPE_PREFIX, 29359) +HANDLE_BAT(APINT_TYPE_PREFIX, 29360) +HANDLE_BAT(APINT_TYPE_PREFIX, 29361) +HANDLE_BAT(APINT_TYPE_PREFIX, 29362) +HANDLE_BAT(APINT_TYPE_PREFIX, 29363) +HANDLE_BAT(APINT_TYPE_PREFIX, 29364) +HANDLE_BAT(APINT_TYPE_PREFIX, 29365) +HANDLE_BAT(APINT_TYPE_PREFIX, 29366) +HANDLE_BAT(APINT_TYPE_PREFIX, 29367) +HANDLE_BAT(APINT_TYPE_PREFIX, 29368) +HANDLE_BAT(APINT_TYPE_PREFIX, 29369) +HANDLE_BAT(APINT_TYPE_PREFIX, 29370) +HANDLE_BAT(APINT_TYPE_PREFIX, 29371) +HANDLE_BAT(APINT_TYPE_PREFIX, 29372) +HANDLE_BAT(APINT_TYPE_PREFIX, 29373) +HANDLE_BAT(APINT_TYPE_PREFIX, 29374) +HANDLE_BAT(APINT_TYPE_PREFIX, 29375) +HANDLE_BAT(APINT_TYPE_PREFIX, 29376) +HANDLE_BAT(APINT_TYPE_PREFIX, 29377) +HANDLE_BAT(APINT_TYPE_PREFIX, 29378) +HANDLE_BAT(APINT_TYPE_PREFIX, 29379) +HANDLE_BAT(APINT_TYPE_PREFIX, 29380) +HANDLE_BAT(APINT_TYPE_PREFIX, 29381) +HANDLE_BAT(APINT_TYPE_PREFIX, 29382) +HANDLE_BAT(APINT_TYPE_PREFIX, 29383) +HANDLE_BAT(APINT_TYPE_PREFIX, 29384) +HANDLE_BAT(APINT_TYPE_PREFIX, 29385) +HANDLE_BAT(APINT_TYPE_PREFIX, 29386) +HANDLE_BAT(APINT_TYPE_PREFIX, 29387) +HANDLE_BAT(APINT_TYPE_PREFIX, 29388) +HANDLE_BAT(APINT_TYPE_PREFIX, 29389) +HANDLE_BAT(APINT_TYPE_PREFIX, 29390) +HANDLE_BAT(APINT_TYPE_PREFIX, 29391) +HANDLE_BAT(APINT_TYPE_PREFIX, 29392) +HANDLE_BAT(APINT_TYPE_PREFIX, 29393) +HANDLE_BAT(APINT_TYPE_PREFIX, 29394) +HANDLE_BAT(APINT_TYPE_PREFIX, 29395) +HANDLE_BAT(APINT_TYPE_PREFIX, 29396) +HANDLE_BAT(APINT_TYPE_PREFIX, 29397) +HANDLE_BAT(APINT_TYPE_PREFIX, 29398) +HANDLE_BAT(APINT_TYPE_PREFIX, 29399) +HANDLE_BAT(APINT_TYPE_PREFIX, 29400) +HANDLE_BAT(APINT_TYPE_PREFIX, 29401) +HANDLE_BAT(APINT_TYPE_PREFIX, 29402) +HANDLE_BAT(APINT_TYPE_PREFIX, 29403) +HANDLE_BAT(APINT_TYPE_PREFIX, 29404) +HANDLE_BAT(APINT_TYPE_PREFIX, 29405) +HANDLE_BAT(APINT_TYPE_PREFIX, 29406) +HANDLE_BAT(APINT_TYPE_PREFIX, 29407) +HANDLE_BAT(APINT_TYPE_PREFIX, 29408) +HANDLE_BAT(APINT_TYPE_PREFIX, 29409) +HANDLE_BAT(APINT_TYPE_PREFIX, 29410) +HANDLE_BAT(APINT_TYPE_PREFIX, 29411) +HANDLE_BAT(APINT_TYPE_PREFIX, 29412) +HANDLE_BAT(APINT_TYPE_PREFIX, 29413) +HANDLE_BAT(APINT_TYPE_PREFIX, 29414) +HANDLE_BAT(APINT_TYPE_PREFIX, 29415) +HANDLE_BAT(APINT_TYPE_PREFIX, 29416) +HANDLE_BAT(APINT_TYPE_PREFIX, 29417) +HANDLE_BAT(APINT_TYPE_PREFIX, 29418) +HANDLE_BAT(APINT_TYPE_PREFIX, 29419) +HANDLE_BAT(APINT_TYPE_PREFIX, 29420) +HANDLE_BAT(APINT_TYPE_PREFIX, 29421) +HANDLE_BAT(APINT_TYPE_PREFIX, 29422) +HANDLE_BAT(APINT_TYPE_PREFIX, 29423) +HANDLE_BAT(APINT_TYPE_PREFIX, 29424) +HANDLE_BAT(APINT_TYPE_PREFIX, 29425) +HANDLE_BAT(APINT_TYPE_PREFIX, 29426) +HANDLE_BAT(APINT_TYPE_PREFIX, 29427) +HANDLE_BAT(APINT_TYPE_PREFIX, 29428) +HANDLE_BAT(APINT_TYPE_PREFIX, 29429) +HANDLE_BAT(APINT_TYPE_PREFIX, 29430) +HANDLE_BAT(APINT_TYPE_PREFIX, 29431) +HANDLE_BAT(APINT_TYPE_PREFIX, 29432) +HANDLE_BAT(APINT_TYPE_PREFIX, 29433) +HANDLE_BAT(APINT_TYPE_PREFIX, 29434) +HANDLE_BAT(APINT_TYPE_PREFIX, 29435) +HANDLE_BAT(APINT_TYPE_PREFIX, 29436) +HANDLE_BAT(APINT_TYPE_PREFIX, 29437) +HANDLE_BAT(APINT_TYPE_PREFIX, 29438) +HANDLE_BAT(APINT_TYPE_PREFIX, 29439) +HANDLE_BAT(APINT_TYPE_PREFIX, 29440) +HANDLE_BAT(APINT_TYPE_PREFIX, 29441) +HANDLE_BAT(APINT_TYPE_PREFIX, 29442) +HANDLE_BAT(APINT_TYPE_PREFIX, 29443) +HANDLE_BAT(APINT_TYPE_PREFIX, 29444) +HANDLE_BAT(APINT_TYPE_PREFIX, 29445) +HANDLE_BAT(APINT_TYPE_PREFIX, 29446) +HANDLE_BAT(APINT_TYPE_PREFIX, 29447) +HANDLE_BAT(APINT_TYPE_PREFIX, 29448) +HANDLE_BAT(APINT_TYPE_PREFIX, 29449) +HANDLE_BAT(APINT_TYPE_PREFIX, 29450) +HANDLE_BAT(APINT_TYPE_PREFIX, 29451) +HANDLE_BAT(APINT_TYPE_PREFIX, 29452) +HANDLE_BAT(APINT_TYPE_PREFIX, 29453) +HANDLE_BAT(APINT_TYPE_PREFIX, 29454) +HANDLE_BAT(APINT_TYPE_PREFIX, 29455) +HANDLE_BAT(APINT_TYPE_PREFIX, 29456) +HANDLE_BAT(APINT_TYPE_PREFIX, 29457) +HANDLE_BAT(APINT_TYPE_PREFIX, 29458) +HANDLE_BAT(APINT_TYPE_PREFIX, 29459) +HANDLE_BAT(APINT_TYPE_PREFIX, 29460) +HANDLE_BAT(APINT_TYPE_PREFIX, 29461) +HANDLE_BAT(APINT_TYPE_PREFIX, 29462) +HANDLE_BAT(APINT_TYPE_PREFIX, 29463) +HANDLE_BAT(APINT_TYPE_PREFIX, 29464) +HANDLE_BAT(APINT_TYPE_PREFIX, 29465) +HANDLE_BAT(APINT_TYPE_PREFIX, 29466) +HANDLE_BAT(APINT_TYPE_PREFIX, 29467) +HANDLE_BAT(APINT_TYPE_PREFIX, 29468) +HANDLE_BAT(APINT_TYPE_PREFIX, 29469) +HANDLE_BAT(APINT_TYPE_PREFIX, 29470) +HANDLE_BAT(APINT_TYPE_PREFIX, 29471) +HANDLE_BAT(APINT_TYPE_PREFIX, 29472) +HANDLE_BAT(APINT_TYPE_PREFIX, 29473) +HANDLE_BAT(APINT_TYPE_PREFIX, 29474) +HANDLE_BAT(APINT_TYPE_PREFIX, 29475) +HANDLE_BAT(APINT_TYPE_PREFIX, 29476) +HANDLE_BAT(APINT_TYPE_PREFIX, 29477) +HANDLE_BAT(APINT_TYPE_PREFIX, 29478) +HANDLE_BAT(APINT_TYPE_PREFIX, 29479) +HANDLE_BAT(APINT_TYPE_PREFIX, 29480) +HANDLE_BAT(APINT_TYPE_PREFIX, 29481) +HANDLE_BAT(APINT_TYPE_PREFIX, 29482) +HANDLE_BAT(APINT_TYPE_PREFIX, 29483) +HANDLE_BAT(APINT_TYPE_PREFIX, 29484) +HANDLE_BAT(APINT_TYPE_PREFIX, 29485) +HANDLE_BAT(APINT_TYPE_PREFIX, 29486) +HANDLE_BAT(APINT_TYPE_PREFIX, 29487) +HANDLE_BAT(APINT_TYPE_PREFIX, 29488) +HANDLE_BAT(APINT_TYPE_PREFIX, 29489) +HANDLE_BAT(APINT_TYPE_PREFIX, 29490) +HANDLE_BAT(APINT_TYPE_PREFIX, 29491) +HANDLE_BAT(APINT_TYPE_PREFIX, 29492) +HANDLE_BAT(APINT_TYPE_PREFIX, 29493) +HANDLE_BAT(APINT_TYPE_PREFIX, 29494) +HANDLE_BAT(APINT_TYPE_PREFIX, 29495) +HANDLE_BAT(APINT_TYPE_PREFIX, 29496) +HANDLE_BAT(APINT_TYPE_PREFIX, 29497) +HANDLE_BAT(APINT_TYPE_PREFIX, 29498) +HANDLE_BAT(APINT_TYPE_PREFIX, 29499) +HANDLE_BAT(APINT_TYPE_PREFIX, 29500) +HANDLE_BAT(APINT_TYPE_PREFIX, 29501) +HANDLE_BAT(APINT_TYPE_PREFIX, 29502) +HANDLE_BAT(APINT_TYPE_PREFIX, 29503) +HANDLE_BAT(APINT_TYPE_PREFIX, 29504) +HANDLE_BAT(APINT_TYPE_PREFIX, 29505) +HANDLE_BAT(APINT_TYPE_PREFIX, 29506) +HANDLE_BAT(APINT_TYPE_PREFIX, 29507) +HANDLE_BAT(APINT_TYPE_PREFIX, 29508) +HANDLE_BAT(APINT_TYPE_PREFIX, 29509) +HANDLE_BAT(APINT_TYPE_PREFIX, 29510) +HANDLE_BAT(APINT_TYPE_PREFIX, 29511) +HANDLE_BAT(APINT_TYPE_PREFIX, 29512) +HANDLE_BAT(APINT_TYPE_PREFIX, 29513) +HANDLE_BAT(APINT_TYPE_PREFIX, 29514) +HANDLE_BAT(APINT_TYPE_PREFIX, 29515) +HANDLE_BAT(APINT_TYPE_PREFIX, 29516) +HANDLE_BAT(APINT_TYPE_PREFIX, 29517) +HANDLE_BAT(APINT_TYPE_PREFIX, 29518) +HANDLE_BAT(APINT_TYPE_PREFIX, 29519) +HANDLE_BAT(APINT_TYPE_PREFIX, 29520) +HANDLE_BAT(APINT_TYPE_PREFIX, 29521) +HANDLE_BAT(APINT_TYPE_PREFIX, 29522) +HANDLE_BAT(APINT_TYPE_PREFIX, 29523) +HANDLE_BAT(APINT_TYPE_PREFIX, 29524) +HANDLE_BAT(APINT_TYPE_PREFIX, 29525) +HANDLE_BAT(APINT_TYPE_PREFIX, 29526) +HANDLE_BAT(APINT_TYPE_PREFIX, 29527) +HANDLE_BAT(APINT_TYPE_PREFIX, 29528) +HANDLE_BAT(APINT_TYPE_PREFIX, 29529) +HANDLE_BAT(APINT_TYPE_PREFIX, 29530) +HANDLE_BAT(APINT_TYPE_PREFIX, 29531) +HANDLE_BAT(APINT_TYPE_PREFIX, 29532) +HANDLE_BAT(APINT_TYPE_PREFIX, 29533) +HANDLE_BAT(APINT_TYPE_PREFIX, 29534) +HANDLE_BAT(APINT_TYPE_PREFIX, 29535) +HANDLE_BAT(APINT_TYPE_PREFIX, 29536) +HANDLE_BAT(APINT_TYPE_PREFIX, 29537) +HANDLE_BAT(APINT_TYPE_PREFIX, 29538) +HANDLE_BAT(APINT_TYPE_PREFIX, 29539) +HANDLE_BAT(APINT_TYPE_PREFIX, 29540) +HANDLE_BAT(APINT_TYPE_PREFIX, 29541) +HANDLE_BAT(APINT_TYPE_PREFIX, 29542) +HANDLE_BAT(APINT_TYPE_PREFIX, 29543) +HANDLE_BAT(APINT_TYPE_PREFIX, 29544) +HANDLE_BAT(APINT_TYPE_PREFIX, 29545) +HANDLE_BAT(APINT_TYPE_PREFIX, 29546) +HANDLE_BAT(APINT_TYPE_PREFIX, 29547) +HANDLE_BAT(APINT_TYPE_PREFIX, 29548) +HANDLE_BAT(APINT_TYPE_PREFIX, 29549) +HANDLE_BAT(APINT_TYPE_PREFIX, 29550) +HANDLE_BAT(APINT_TYPE_PREFIX, 29551) +HANDLE_BAT(APINT_TYPE_PREFIX, 29552) +HANDLE_BAT(APINT_TYPE_PREFIX, 29553) +HANDLE_BAT(APINT_TYPE_PREFIX, 29554) +HANDLE_BAT(APINT_TYPE_PREFIX, 29555) +HANDLE_BAT(APINT_TYPE_PREFIX, 29556) +HANDLE_BAT(APINT_TYPE_PREFIX, 29557) +HANDLE_BAT(APINT_TYPE_PREFIX, 29558) +HANDLE_BAT(APINT_TYPE_PREFIX, 29559) +HANDLE_BAT(APINT_TYPE_PREFIX, 29560) +HANDLE_BAT(APINT_TYPE_PREFIX, 29561) +HANDLE_BAT(APINT_TYPE_PREFIX, 29562) +HANDLE_BAT(APINT_TYPE_PREFIX, 29563) +HANDLE_BAT(APINT_TYPE_PREFIX, 29564) +HANDLE_BAT(APINT_TYPE_PREFIX, 29565) +HANDLE_BAT(APINT_TYPE_PREFIX, 29566) +HANDLE_BAT(APINT_TYPE_PREFIX, 29567) +HANDLE_BAT(APINT_TYPE_PREFIX, 29568) +HANDLE_BAT(APINT_TYPE_PREFIX, 29569) +HANDLE_BAT(APINT_TYPE_PREFIX, 29570) +HANDLE_BAT(APINT_TYPE_PREFIX, 29571) +HANDLE_BAT(APINT_TYPE_PREFIX, 29572) +HANDLE_BAT(APINT_TYPE_PREFIX, 29573) +HANDLE_BAT(APINT_TYPE_PREFIX, 29574) +HANDLE_BAT(APINT_TYPE_PREFIX, 29575) +HANDLE_BAT(APINT_TYPE_PREFIX, 29576) +HANDLE_BAT(APINT_TYPE_PREFIX, 29577) +HANDLE_BAT(APINT_TYPE_PREFIX, 29578) +HANDLE_BAT(APINT_TYPE_PREFIX, 29579) +HANDLE_BAT(APINT_TYPE_PREFIX, 29580) +HANDLE_BAT(APINT_TYPE_PREFIX, 29581) +HANDLE_BAT(APINT_TYPE_PREFIX, 29582) +HANDLE_BAT(APINT_TYPE_PREFIX, 29583) +HANDLE_BAT(APINT_TYPE_PREFIX, 29584) +HANDLE_BAT(APINT_TYPE_PREFIX, 29585) +HANDLE_BAT(APINT_TYPE_PREFIX, 29586) +HANDLE_BAT(APINT_TYPE_PREFIX, 29587) +HANDLE_BAT(APINT_TYPE_PREFIX, 29588) +HANDLE_BAT(APINT_TYPE_PREFIX, 29589) +HANDLE_BAT(APINT_TYPE_PREFIX, 29590) +HANDLE_BAT(APINT_TYPE_PREFIX, 29591) +HANDLE_BAT(APINT_TYPE_PREFIX, 29592) +HANDLE_BAT(APINT_TYPE_PREFIX, 29593) +HANDLE_BAT(APINT_TYPE_PREFIX, 29594) +HANDLE_BAT(APINT_TYPE_PREFIX, 29595) +HANDLE_BAT(APINT_TYPE_PREFIX, 29596) +HANDLE_BAT(APINT_TYPE_PREFIX, 29597) +HANDLE_BAT(APINT_TYPE_PREFIX, 29598) +HANDLE_BAT(APINT_TYPE_PREFIX, 29599) +HANDLE_BAT(APINT_TYPE_PREFIX, 29600) +HANDLE_BAT(APINT_TYPE_PREFIX, 29601) +HANDLE_BAT(APINT_TYPE_PREFIX, 29602) +HANDLE_BAT(APINT_TYPE_PREFIX, 29603) +HANDLE_BAT(APINT_TYPE_PREFIX, 29604) +HANDLE_BAT(APINT_TYPE_PREFIX, 29605) +HANDLE_BAT(APINT_TYPE_PREFIX, 29606) +HANDLE_BAT(APINT_TYPE_PREFIX, 29607) +HANDLE_BAT(APINT_TYPE_PREFIX, 29608) +HANDLE_BAT(APINT_TYPE_PREFIX, 29609) +HANDLE_BAT(APINT_TYPE_PREFIX, 29610) +HANDLE_BAT(APINT_TYPE_PREFIX, 29611) +HANDLE_BAT(APINT_TYPE_PREFIX, 29612) +HANDLE_BAT(APINT_TYPE_PREFIX, 29613) +HANDLE_BAT(APINT_TYPE_PREFIX, 29614) +HANDLE_BAT(APINT_TYPE_PREFIX, 29615) +HANDLE_BAT(APINT_TYPE_PREFIX, 29616) +HANDLE_BAT(APINT_TYPE_PREFIX, 29617) +HANDLE_BAT(APINT_TYPE_PREFIX, 29618) +HANDLE_BAT(APINT_TYPE_PREFIX, 29619) +HANDLE_BAT(APINT_TYPE_PREFIX, 29620) +HANDLE_BAT(APINT_TYPE_PREFIX, 29621) +HANDLE_BAT(APINT_TYPE_PREFIX, 29622) +HANDLE_BAT(APINT_TYPE_PREFIX, 29623) +HANDLE_BAT(APINT_TYPE_PREFIX, 29624) +HANDLE_BAT(APINT_TYPE_PREFIX, 29625) +HANDLE_BAT(APINT_TYPE_PREFIX, 29626) +HANDLE_BAT(APINT_TYPE_PREFIX, 29627) +HANDLE_BAT(APINT_TYPE_PREFIX, 29628) +HANDLE_BAT(APINT_TYPE_PREFIX, 29629) +HANDLE_BAT(APINT_TYPE_PREFIX, 29630) +HANDLE_BAT(APINT_TYPE_PREFIX, 29631) +HANDLE_BAT(APINT_TYPE_PREFIX, 29632) +HANDLE_BAT(APINT_TYPE_PREFIX, 29633) +HANDLE_BAT(APINT_TYPE_PREFIX, 29634) +HANDLE_BAT(APINT_TYPE_PREFIX, 29635) +HANDLE_BAT(APINT_TYPE_PREFIX, 29636) +HANDLE_BAT(APINT_TYPE_PREFIX, 29637) +HANDLE_BAT(APINT_TYPE_PREFIX, 29638) +HANDLE_BAT(APINT_TYPE_PREFIX, 29639) +HANDLE_BAT(APINT_TYPE_PREFIX, 29640) +HANDLE_BAT(APINT_TYPE_PREFIX, 29641) +HANDLE_BAT(APINT_TYPE_PREFIX, 29642) +HANDLE_BAT(APINT_TYPE_PREFIX, 29643) +HANDLE_BAT(APINT_TYPE_PREFIX, 29644) +HANDLE_BAT(APINT_TYPE_PREFIX, 29645) +HANDLE_BAT(APINT_TYPE_PREFIX, 29646) +HANDLE_BAT(APINT_TYPE_PREFIX, 29647) +HANDLE_BAT(APINT_TYPE_PREFIX, 29648) +HANDLE_BAT(APINT_TYPE_PREFIX, 29649) +HANDLE_BAT(APINT_TYPE_PREFIX, 29650) +HANDLE_BAT(APINT_TYPE_PREFIX, 29651) +HANDLE_BAT(APINT_TYPE_PREFIX, 29652) +HANDLE_BAT(APINT_TYPE_PREFIX, 29653) +HANDLE_BAT(APINT_TYPE_PREFIX, 29654) +HANDLE_BAT(APINT_TYPE_PREFIX, 29655) +HANDLE_BAT(APINT_TYPE_PREFIX, 29656) +HANDLE_BAT(APINT_TYPE_PREFIX, 29657) +HANDLE_BAT(APINT_TYPE_PREFIX, 29658) +HANDLE_BAT(APINT_TYPE_PREFIX, 29659) +HANDLE_BAT(APINT_TYPE_PREFIX, 29660) +HANDLE_BAT(APINT_TYPE_PREFIX, 29661) +HANDLE_BAT(APINT_TYPE_PREFIX, 29662) +HANDLE_BAT(APINT_TYPE_PREFIX, 29663) +HANDLE_BAT(APINT_TYPE_PREFIX, 29664) +HANDLE_BAT(APINT_TYPE_PREFIX, 29665) +HANDLE_BAT(APINT_TYPE_PREFIX, 29666) +HANDLE_BAT(APINT_TYPE_PREFIX, 29667) +HANDLE_BAT(APINT_TYPE_PREFIX, 29668) +HANDLE_BAT(APINT_TYPE_PREFIX, 29669) +HANDLE_BAT(APINT_TYPE_PREFIX, 29670) +HANDLE_BAT(APINT_TYPE_PREFIX, 29671) +HANDLE_BAT(APINT_TYPE_PREFIX, 29672) +HANDLE_BAT(APINT_TYPE_PREFIX, 29673) +HANDLE_BAT(APINT_TYPE_PREFIX, 29674) +HANDLE_BAT(APINT_TYPE_PREFIX, 29675) +HANDLE_BAT(APINT_TYPE_PREFIX, 29676) +HANDLE_BAT(APINT_TYPE_PREFIX, 29677) +HANDLE_BAT(APINT_TYPE_PREFIX, 29678) +HANDLE_BAT(APINT_TYPE_PREFIX, 29679) +HANDLE_BAT(APINT_TYPE_PREFIX, 29680) +HANDLE_BAT(APINT_TYPE_PREFIX, 29681) +HANDLE_BAT(APINT_TYPE_PREFIX, 29682) +HANDLE_BAT(APINT_TYPE_PREFIX, 29683) +HANDLE_BAT(APINT_TYPE_PREFIX, 29684) +HANDLE_BAT(APINT_TYPE_PREFIX, 29685) +HANDLE_BAT(APINT_TYPE_PREFIX, 29686) +HANDLE_BAT(APINT_TYPE_PREFIX, 29687) +HANDLE_BAT(APINT_TYPE_PREFIX, 29688) +HANDLE_BAT(APINT_TYPE_PREFIX, 29689) +HANDLE_BAT(APINT_TYPE_PREFIX, 29690) +HANDLE_BAT(APINT_TYPE_PREFIX, 29691) +HANDLE_BAT(APINT_TYPE_PREFIX, 29692) +HANDLE_BAT(APINT_TYPE_PREFIX, 29693) +HANDLE_BAT(APINT_TYPE_PREFIX, 29694) +HANDLE_BAT(APINT_TYPE_PREFIX, 29695) +HANDLE_BAT(APINT_TYPE_PREFIX, 29696) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 29 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 29697) +HANDLE_BAT(, 29698) +HANDLE_BAT(, 29699) +HANDLE_BAT(, 29700) +HANDLE_BAT(, 29701) +HANDLE_BAT(, 29702) +HANDLE_BAT(, 29703) +HANDLE_BAT(, 29704) +HANDLE_BAT(, 29705) +HANDLE_BAT(, 29706) +HANDLE_BAT(, 29707) +HANDLE_BAT(, 29708) +HANDLE_BAT(, 29709) +HANDLE_BAT(, 29710) +HANDLE_BAT(, 29711) +HANDLE_BAT(, 29712) +HANDLE_BAT(, 29713) +HANDLE_BAT(, 29714) +HANDLE_BAT(, 29715) +HANDLE_BAT(, 29716) +HANDLE_BAT(, 29717) +HANDLE_BAT(, 29718) +HANDLE_BAT(, 29719) +HANDLE_BAT(, 29720) +HANDLE_BAT(, 29721) +HANDLE_BAT(, 29722) +HANDLE_BAT(, 29723) +HANDLE_BAT(, 29724) +HANDLE_BAT(, 29725) +HANDLE_BAT(, 29726) +HANDLE_BAT(, 29727) +HANDLE_BAT(, 29728) +HANDLE_BAT(, 29729) +HANDLE_BAT(, 29730) +HANDLE_BAT(, 29731) +HANDLE_BAT(, 29732) +HANDLE_BAT(, 29733) +HANDLE_BAT(, 29734) +HANDLE_BAT(, 29735) +HANDLE_BAT(, 29736) +HANDLE_BAT(, 29737) +HANDLE_BAT(, 29738) +HANDLE_BAT(, 29739) +HANDLE_BAT(, 29740) +HANDLE_BAT(, 29741) +HANDLE_BAT(, 29742) +HANDLE_BAT(, 29743) +HANDLE_BAT(, 29744) +HANDLE_BAT(, 29745) +HANDLE_BAT(, 29746) +HANDLE_BAT(, 29747) +HANDLE_BAT(, 29748) +HANDLE_BAT(, 29749) +HANDLE_BAT(, 29750) +HANDLE_BAT(, 29751) +HANDLE_BAT(, 29752) +HANDLE_BAT(, 29753) +HANDLE_BAT(, 29754) +HANDLE_BAT(, 29755) +HANDLE_BAT(, 29756) +HANDLE_BAT(, 29757) +HANDLE_BAT(, 29758) +HANDLE_BAT(, 29759) +HANDLE_BAT(, 29760) +HANDLE_BAT(, 29761) +HANDLE_BAT(, 29762) +HANDLE_BAT(, 29763) +HANDLE_BAT(, 29764) +HANDLE_BAT(, 29765) +HANDLE_BAT(, 29766) +HANDLE_BAT(, 29767) +HANDLE_BAT(, 29768) +HANDLE_BAT(, 29769) +HANDLE_BAT(, 29770) +HANDLE_BAT(, 29771) +HANDLE_BAT(, 29772) +HANDLE_BAT(, 29773) +HANDLE_BAT(, 29774) +HANDLE_BAT(, 29775) +HANDLE_BAT(, 29776) +HANDLE_BAT(, 29777) +HANDLE_BAT(, 29778) +HANDLE_BAT(, 29779) +HANDLE_BAT(, 29780) +HANDLE_BAT(, 29781) +HANDLE_BAT(, 29782) +HANDLE_BAT(, 29783) +HANDLE_BAT(, 29784) +HANDLE_BAT(, 29785) +HANDLE_BAT(, 29786) +HANDLE_BAT(, 29787) +HANDLE_BAT(, 29788) +HANDLE_BAT(, 29789) +HANDLE_BAT(, 29790) +HANDLE_BAT(, 29791) +HANDLE_BAT(, 29792) +HANDLE_BAT(, 29793) +HANDLE_BAT(, 29794) +HANDLE_BAT(, 29795) +HANDLE_BAT(, 29796) +HANDLE_BAT(, 29797) +HANDLE_BAT(, 29798) +HANDLE_BAT(, 29799) +HANDLE_BAT(, 29800) +HANDLE_BAT(, 29801) +HANDLE_BAT(, 29802) +HANDLE_BAT(, 29803) +HANDLE_BAT(, 29804) +HANDLE_BAT(, 29805) +HANDLE_BAT(, 29806) +HANDLE_BAT(, 29807) +HANDLE_BAT(, 29808) +HANDLE_BAT(, 29809) +HANDLE_BAT(, 29810) +HANDLE_BAT(, 29811) +HANDLE_BAT(, 29812) +HANDLE_BAT(, 29813) +HANDLE_BAT(, 29814) +HANDLE_BAT(, 29815) +HANDLE_BAT(, 29816) +HANDLE_BAT(, 29817) +HANDLE_BAT(, 29818) +HANDLE_BAT(, 29819) +HANDLE_BAT(, 29820) +HANDLE_BAT(, 29821) +HANDLE_BAT(, 29822) +HANDLE_BAT(, 29823) +HANDLE_BAT(, 29824) +HANDLE_BAT(, 29825) +HANDLE_BAT(, 29826) +HANDLE_BAT(, 29827) +HANDLE_BAT(, 29828) +HANDLE_BAT(, 29829) +HANDLE_BAT(, 29830) +HANDLE_BAT(, 29831) +HANDLE_BAT(, 29832) +HANDLE_BAT(, 29833) +HANDLE_BAT(, 29834) +HANDLE_BAT(, 29835) +HANDLE_BAT(, 29836) +HANDLE_BAT(, 29837) +HANDLE_BAT(, 29838) +HANDLE_BAT(, 29839) +HANDLE_BAT(, 29840) +HANDLE_BAT(, 29841) +HANDLE_BAT(, 29842) +HANDLE_BAT(, 29843) +HANDLE_BAT(, 29844) +HANDLE_BAT(, 29845) +HANDLE_BAT(, 29846) +HANDLE_BAT(, 29847) +HANDLE_BAT(, 29848) +HANDLE_BAT(, 29849) +HANDLE_BAT(, 29850) +HANDLE_BAT(, 29851) +HANDLE_BAT(, 29852) +HANDLE_BAT(, 29853) +HANDLE_BAT(, 29854) +HANDLE_BAT(, 29855) +HANDLE_BAT(, 29856) +HANDLE_BAT(, 29857) +HANDLE_BAT(, 29858) +HANDLE_BAT(, 29859) +HANDLE_BAT(, 29860) +HANDLE_BAT(, 29861) +HANDLE_BAT(, 29862) +HANDLE_BAT(, 29863) +HANDLE_BAT(, 29864) +HANDLE_BAT(, 29865) +HANDLE_BAT(, 29866) +HANDLE_BAT(, 29867) +HANDLE_BAT(, 29868) +HANDLE_BAT(, 29869) +HANDLE_BAT(, 29870) +HANDLE_BAT(, 29871) +HANDLE_BAT(, 29872) +HANDLE_BAT(, 29873) +HANDLE_BAT(, 29874) +HANDLE_BAT(, 29875) +HANDLE_BAT(, 29876) +HANDLE_BAT(, 29877) +HANDLE_BAT(, 29878) +HANDLE_BAT(, 29879) +HANDLE_BAT(, 29880) +HANDLE_BAT(, 29881) +HANDLE_BAT(, 29882) +HANDLE_BAT(, 29883) +HANDLE_BAT(, 29884) +HANDLE_BAT(, 29885) +HANDLE_BAT(, 29886) +HANDLE_BAT(, 29887) +HANDLE_BAT(, 29888) +HANDLE_BAT(, 29889) +HANDLE_BAT(, 29890) +HANDLE_BAT(, 29891) +HANDLE_BAT(, 29892) +HANDLE_BAT(, 29893) +HANDLE_BAT(, 29894) +HANDLE_BAT(, 29895) +HANDLE_BAT(, 29896) +HANDLE_BAT(, 29897) +HANDLE_BAT(, 29898) +HANDLE_BAT(, 29899) +HANDLE_BAT(, 29900) +HANDLE_BAT(, 29901) +HANDLE_BAT(, 29902) +HANDLE_BAT(, 29903) +HANDLE_BAT(, 29904) +HANDLE_BAT(, 29905) +HANDLE_BAT(, 29906) +HANDLE_BAT(, 29907) +HANDLE_BAT(, 29908) +HANDLE_BAT(, 29909) +HANDLE_BAT(, 29910) +HANDLE_BAT(, 29911) +HANDLE_BAT(, 29912) +HANDLE_BAT(, 29913) +HANDLE_BAT(, 29914) +HANDLE_BAT(, 29915) +HANDLE_BAT(, 29916) +HANDLE_BAT(, 29917) +HANDLE_BAT(, 29918) +HANDLE_BAT(, 29919) +HANDLE_BAT(, 29920) +HANDLE_BAT(, 29921) +HANDLE_BAT(, 29922) +HANDLE_BAT(, 29923) +HANDLE_BAT(, 29924) +HANDLE_BAT(, 29925) +HANDLE_BAT(, 29926) +HANDLE_BAT(, 29927) +HANDLE_BAT(, 29928) +HANDLE_BAT(, 29929) +HANDLE_BAT(, 29930) +HANDLE_BAT(, 29931) +HANDLE_BAT(, 29932) +HANDLE_BAT(, 29933) +HANDLE_BAT(, 29934) +HANDLE_BAT(, 29935) +HANDLE_BAT(, 29936) +HANDLE_BAT(, 29937) +HANDLE_BAT(, 29938) +HANDLE_BAT(, 29939) +HANDLE_BAT(, 29940) +HANDLE_BAT(, 29941) +HANDLE_BAT(, 29942) +HANDLE_BAT(, 29943) +HANDLE_BAT(, 29944) +HANDLE_BAT(, 29945) +HANDLE_BAT(, 29946) +HANDLE_BAT(, 29947) +HANDLE_BAT(, 29948) +HANDLE_BAT(, 29949) +HANDLE_BAT(, 29950) +HANDLE_BAT(, 29951) +HANDLE_BAT(, 29952) +HANDLE_BAT(, 29953) +HANDLE_BAT(, 29954) +HANDLE_BAT(, 29955) +HANDLE_BAT(, 29956) +HANDLE_BAT(, 29957) +HANDLE_BAT(, 29958) +HANDLE_BAT(, 29959) +HANDLE_BAT(, 29960) +HANDLE_BAT(, 29961) +HANDLE_BAT(, 29962) +HANDLE_BAT(, 29963) +HANDLE_BAT(, 29964) +HANDLE_BAT(, 29965) +HANDLE_BAT(, 29966) +HANDLE_BAT(, 29967) +HANDLE_BAT(, 29968) +HANDLE_BAT(, 29969) +HANDLE_BAT(, 29970) +HANDLE_BAT(, 29971) +HANDLE_BAT(, 29972) +HANDLE_BAT(, 29973) +HANDLE_BAT(, 29974) +HANDLE_BAT(, 29975) +HANDLE_BAT(, 29976) +HANDLE_BAT(, 29977) +HANDLE_BAT(, 29978) +HANDLE_BAT(, 29979) +HANDLE_BAT(, 29980) +HANDLE_BAT(, 29981) +HANDLE_BAT(, 29982) +HANDLE_BAT(, 29983) +HANDLE_BAT(, 29984) +HANDLE_BAT(, 29985) +HANDLE_BAT(, 29986) +HANDLE_BAT(, 29987) +HANDLE_BAT(, 29988) +HANDLE_BAT(, 29989) +HANDLE_BAT(, 29990) +HANDLE_BAT(, 29991) +HANDLE_BAT(, 29992) +HANDLE_BAT(, 29993) +HANDLE_BAT(, 29994) +HANDLE_BAT(, 29995) +HANDLE_BAT(, 29996) +HANDLE_BAT(, 29997) +HANDLE_BAT(, 29998) +HANDLE_BAT(, 29999) +HANDLE_BAT(, 30000) +HANDLE_BAT(, 30001) +HANDLE_BAT(, 30002) +HANDLE_BAT(, 30003) +HANDLE_BAT(, 30004) +HANDLE_BAT(, 30005) +HANDLE_BAT(, 30006) +HANDLE_BAT(, 30007) +HANDLE_BAT(, 30008) +HANDLE_BAT(, 30009) +HANDLE_BAT(, 30010) +HANDLE_BAT(, 30011) +HANDLE_BAT(, 30012) +HANDLE_BAT(, 30013) +HANDLE_BAT(, 30014) +HANDLE_BAT(, 30015) +HANDLE_BAT(, 30016) +HANDLE_BAT(, 30017) +HANDLE_BAT(, 30018) +HANDLE_BAT(, 30019) +HANDLE_BAT(, 30020) +HANDLE_BAT(, 30021) +HANDLE_BAT(, 30022) +HANDLE_BAT(, 30023) +HANDLE_BAT(, 30024) +HANDLE_BAT(, 30025) +HANDLE_BAT(, 30026) +HANDLE_BAT(, 30027) +HANDLE_BAT(, 30028) +HANDLE_BAT(, 30029) +HANDLE_BAT(, 30030) +HANDLE_BAT(, 30031) +HANDLE_BAT(, 30032) +HANDLE_BAT(, 30033) +HANDLE_BAT(, 30034) +HANDLE_BAT(, 30035) +HANDLE_BAT(, 30036) +HANDLE_BAT(, 30037) +HANDLE_BAT(, 30038) +HANDLE_BAT(, 30039) +HANDLE_BAT(, 30040) +HANDLE_BAT(, 30041) +HANDLE_BAT(, 30042) +HANDLE_BAT(, 30043) +HANDLE_BAT(, 30044) +HANDLE_BAT(, 30045) +HANDLE_BAT(, 30046) +HANDLE_BAT(, 30047) +HANDLE_BAT(, 30048) +HANDLE_BAT(, 30049) +HANDLE_BAT(, 30050) +HANDLE_BAT(, 30051) +HANDLE_BAT(, 30052) +HANDLE_BAT(, 30053) +HANDLE_BAT(, 30054) +HANDLE_BAT(, 30055) +HANDLE_BAT(, 30056) +HANDLE_BAT(, 30057) +HANDLE_BAT(, 30058) +HANDLE_BAT(, 30059) +HANDLE_BAT(, 30060) +HANDLE_BAT(, 30061) +HANDLE_BAT(, 30062) +HANDLE_BAT(, 30063) +HANDLE_BAT(, 30064) +HANDLE_BAT(, 30065) +HANDLE_BAT(, 30066) +HANDLE_BAT(, 30067) +HANDLE_BAT(, 30068) +HANDLE_BAT(, 30069) +HANDLE_BAT(, 30070) +HANDLE_BAT(, 30071) +HANDLE_BAT(, 30072) +HANDLE_BAT(, 30073) +HANDLE_BAT(, 30074) +HANDLE_BAT(, 30075) +HANDLE_BAT(, 30076) +HANDLE_BAT(, 30077) +HANDLE_BAT(, 30078) +HANDLE_BAT(, 30079) +HANDLE_BAT(, 30080) +HANDLE_BAT(, 30081) +HANDLE_BAT(, 30082) +HANDLE_BAT(, 30083) +HANDLE_BAT(, 30084) +HANDLE_BAT(, 30085) +HANDLE_BAT(, 30086) +HANDLE_BAT(, 30087) +HANDLE_BAT(, 30088) +HANDLE_BAT(, 30089) +HANDLE_BAT(, 30090) +HANDLE_BAT(, 30091) +HANDLE_BAT(, 30092) +HANDLE_BAT(, 30093) +HANDLE_BAT(, 30094) +HANDLE_BAT(, 30095) +HANDLE_BAT(, 30096) +HANDLE_BAT(, 30097) +HANDLE_BAT(, 30098) +HANDLE_BAT(, 30099) +HANDLE_BAT(, 30100) +HANDLE_BAT(, 30101) +HANDLE_BAT(, 30102) +HANDLE_BAT(, 30103) +HANDLE_BAT(, 30104) +HANDLE_BAT(, 30105) +HANDLE_BAT(, 30106) +HANDLE_BAT(, 30107) +HANDLE_BAT(, 30108) +HANDLE_BAT(, 30109) +HANDLE_BAT(, 30110) +HANDLE_BAT(, 30111) +HANDLE_BAT(, 30112) +HANDLE_BAT(, 30113) +HANDLE_BAT(, 30114) +HANDLE_BAT(, 30115) +HANDLE_BAT(, 30116) +HANDLE_BAT(, 30117) +HANDLE_BAT(, 30118) +HANDLE_BAT(, 30119) +HANDLE_BAT(, 30120) +HANDLE_BAT(, 30121) +HANDLE_BAT(, 30122) +HANDLE_BAT(, 30123) +HANDLE_BAT(, 30124) +HANDLE_BAT(, 30125) +HANDLE_BAT(, 30126) +HANDLE_BAT(, 30127) +HANDLE_BAT(, 30128) +HANDLE_BAT(, 30129) +HANDLE_BAT(, 30130) +HANDLE_BAT(, 30131) +HANDLE_BAT(, 30132) +HANDLE_BAT(, 30133) +HANDLE_BAT(, 30134) +HANDLE_BAT(, 30135) +HANDLE_BAT(, 30136) +HANDLE_BAT(, 30137) +HANDLE_BAT(, 30138) +HANDLE_BAT(, 30139) +HANDLE_BAT(, 30140) +HANDLE_BAT(, 30141) +HANDLE_BAT(, 30142) +HANDLE_BAT(, 30143) +HANDLE_BAT(, 30144) +HANDLE_BAT(, 30145) +HANDLE_BAT(, 30146) +HANDLE_BAT(, 30147) +HANDLE_BAT(, 30148) +HANDLE_BAT(, 30149) +HANDLE_BAT(, 30150) +HANDLE_BAT(, 30151) +HANDLE_BAT(, 30152) +HANDLE_BAT(, 30153) +HANDLE_BAT(, 30154) +HANDLE_BAT(, 30155) +HANDLE_BAT(, 30156) +HANDLE_BAT(, 30157) +HANDLE_BAT(, 30158) +HANDLE_BAT(, 30159) +HANDLE_BAT(, 30160) +HANDLE_BAT(, 30161) +HANDLE_BAT(, 30162) +HANDLE_BAT(, 30163) +HANDLE_BAT(, 30164) +HANDLE_BAT(, 30165) +HANDLE_BAT(, 30166) +HANDLE_BAT(, 30167) +HANDLE_BAT(, 30168) +HANDLE_BAT(, 30169) +HANDLE_BAT(, 30170) +HANDLE_BAT(, 30171) +HANDLE_BAT(, 30172) +HANDLE_BAT(, 30173) +HANDLE_BAT(, 30174) +HANDLE_BAT(, 30175) +HANDLE_BAT(, 30176) +HANDLE_BAT(, 30177) +HANDLE_BAT(, 30178) +HANDLE_BAT(, 30179) +HANDLE_BAT(, 30180) +HANDLE_BAT(, 30181) +HANDLE_BAT(, 30182) +HANDLE_BAT(, 30183) +HANDLE_BAT(, 30184) +HANDLE_BAT(, 30185) +HANDLE_BAT(, 30186) +HANDLE_BAT(, 30187) +HANDLE_BAT(, 30188) +HANDLE_BAT(, 30189) +HANDLE_BAT(, 30190) +HANDLE_BAT(, 30191) +HANDLE_BAT(, 30192) +HANDLE_BAT(, 30193) +HANDLE_BAT(, 30194) +HANDLE_BAT(, 30195) +HANDLE_BAT(, 30196) +HANDLE_BAT(, 30197) +HANDLE_BAT(, 30198) +HANDLE_BAT(, 30199) +HANDLE_BAT(, 30200) +HANDLE_BAT(, 30201) +HANDLE_BAT(, 30202) +HANDLE_BAT(, 30203) +HANDLE_BAT(, 30204) +HANDLE_BAT(, 30205) +HANDLE_BAT(, 30206) +HANDLE_BAT(, 30207) +HANDLE_BAT(, 30208) +HANDLE_BAT(, 30209) +HANDLE_BAT(, 30210) +HANDLE_BAT(, 30211) +HANDLE_BAT(, 30212) +HANDLE_BAT(, 30213) +HANDLE_BAT(, 30214) +HANDLE_BAT(, 30215) +HANDLE_BAT(, 30216) +HANDLE_BAT(, 30217) +HANDLE_BAT(, 30218) +HANDLE_BAT(, 30219) +HANDLE_BAT(, 30220) +HANDLE_BAT(, 30221) +HANDLE_BAT(, 30222) +HANDLE_BAT(, 30223) +HANDLE_BAT(, 30224) +HANDLE_BAT(, 30225) +HANDLE_BAT(, 30226) +HANDLE_BAT(, 30227) +HANDLE_BAT(, 30228) +HANDLE_BAT(, 30229) +HANDLE_BAT(, 30230) +HANDLE_BAT(, 30231) +HANDLE_BAT(, 30232) +HANDLE_BAT(, 30233) +HANDLE_BAT(, 30234) +HANDLE_BAT(, 30235) +HANDLE_BAT(, 30236) +HANDLE_BAT(, 30237) +HANDLE_BAT(, 30238) +HANDLE_BAT(, 30239) +HANDLE_BAT(, 30240) +HANDLE_BAT(, 30241) +HANDLE_BAT(, 30242) +HANDLE_BAT(, 30243) +HANDLE_BAT(, 30244) +HANDLE_BAT(, 30245) +HANDLE_BAT(, 30246) +HANDLE_BAT(, 30247) +HANDLE_BAT(, 30248) +HANDLE_BAT(, 30249) +HANDLE_BAT(, 30250) +HANDLE_BAT(, 30251) +HANDLE_BAT(, 30252) +HANDLE_BAT(, 30253) +HANDLE_BAT(, 30254) +HANDLE_BAT(, 30255) +HANDLE_BAT(, 30256) +HANDLE_BAT(, 30257) +HANDLE_BAT(, 30258) +HANDLE_BAT(, 30259) +HANDLE_BAT(, 30260) +HANDLE_BAT(, 30261) +HANDLE_BAT(, 30262) +HANDLE_BAT(, 30263) +HANDLE_BAT(, 30264) +HANDLE_BAT(, 30265) +HANDLE_BAT(, 30266) +HANDLE_BAT(, 30267) +HANDLE_BAT(, 30268) +HANDLE_BAT(, 30269) +HANDLE_BAT(, 30270) +HANDLE_BAT(, 30271) +HANDLE_BAT(, 30272) +HANDLE_BAT(, 30273) +HANDLE_BAT(, 30274) +HANDLE_BAT(, 30275) +HANDLE_BAT(, 30276) +HANDLE_BAT(, 30277) +HANDLE_BAT(, 30278) +HANDLE_BAT(, 30279) +HANDLE_BAT(, 30280) +HANDLE_BAT(, 30281) +HANDLE_BAT(, 30282) +HANDLE_BAT(, 30283) +HANDLE_BAT(, 30284) +HANDLE_BAT(, 30285) +HANDLE_BAT(, 30286) +HANDLE_BAT(, 30287) +HANDLE_BAT(, 30288) +HANDLE_BAT(, 30289) +HANDLE_BAT(, 30290) +HANDLE_BAT(, 30291) +HANDLE_BAT(, 30292) +HANDLE_BAT(, 30293) +HANDLE_BAT(, 30294) +HANDLE_BAT(, 30295) +HANDLE_BAT(, 30296) +HANDLE_BAT(, 30297) +HANDLE_BAT(, 30298) +HANDLE_BAT(, 30299) +HANDLE_BAT(, 30300) +HANDLE_BAT(, 30301) +HANDLE_BAT(, 30302) +HANDLE_BAT(, 30303) +HANDLE_BAT(, 30304) +HANDLE_BAT(, 30305) +HANDLE_BAT(, 30306) +HANDLE_BAT(, 30307) +HANDLE_BAT(, 30308) +HANDLE_BAT(, 30309) +HANDLE_BAT(, 30310) +HANDLE_BAT(, 30311) +HANDLE_BAT(, 30312) +HANDLE_BAT(, 30313) +HANDLE_BAT(, 30314) +HANDLE_BAT(, 30315) +HANDLE_BAT(, 30316) +HANDLE_BAT(, 30317) +HANDLE_BAT(, 30318) +HANDLE_BAT(, 30319) +HANDLE_BAT(, 30320) +HANDLE_BAT(, 30321) +HANDLE_BAT(, 30322) +HANDLE_BAT(, 30323) +HANDLE_BAT(, 30324) +HANDLE_BAT(, 30325) +HANDLE_BAT(, 30326) +HANDLE_BAT(, 30327) +HANDLE_BAT(, 30328) +HANDLE_BAT(, 30329) +HANDLE_BAT(, 30330) +HANDLE_BAT(, 30331) +HANDLE_BAT(, 30332) +HANDLE_BAT(, 30333) +HANDLE_BAT(, 30334) +HANDLE_BAT(, 30335) +HANDLE_BAT(, 30336) +HANDLE_BAT(, 30337) +HANDLE_BAT(, 30338) +HANDLE_BAT(, 30339) +HANDLE_BAT(, 30340) +HANDLE_BAT(, 30341) +HANDLE_BAT(, 30342) +HANDLE_BAT(, 30343) +HANDLE_BAT(, 30344) +HANDLE_BAT(, 30345) +HANDLE_BAT(, 30346) +HANDLE_BAT(, 30347) +HANDLE_BAT(, 30348) +HANDLE_BAT(, 30349) +HANDLE_BAT(, 30350) +HANDLE_BAT(, 30351) +HANDLE_BAT(, 30352) +HANDLE_BAT(, 30353) +HANDLE_BAT(, 30354) +HANDLE_BAT(, 30355) +HANDLE_BAT(, 30356) +HANDLE_BAT(, 30357) +HANDLE_BAT(, 30358) +HANDLE_BAT(, 30359) +HANDLE_BAT(, 30360) +HANDLE_BAT(, 30361) +HANDLE_BAT(, 30362) +HANDLE_BAT(, 30363) +HANDLE_BAT(, 30364) +HANDLE_BAT(, 30365) +HANDLE_BAT(, 30366) +HANDLE_BAT(, 30367) +HANDLE_BAT(, 30368) +HANDLE_BAT(, 30369) +HANDLE_BAT(, 30370) +HANDLE_BAT(, 30371) +HANDLE_BAT(, 30372) +HANDLE_BAT(, 30373) +HANDLE_BAT(, 30374) +HANDLE_BAT(, 30375) +HANDLE_BAT(, 30376) +HANDLE_BAT(, 30377) +HANDLE_BAT(, 30378) +HANDLE_BAT(, 30379) +HANDLE_BAT(, 30380) +HANDLE_BAT(, 30381) +HANDLE_BAT(, 30382) +HANDLE_BAT(, 30383) +HANDLE_BAT(, 30384) +HANDLE_BAT(, 30385) +HANDLE_BAT(, 30386) +HANDLE_BAT(, 30387) +HANDLE_BAT(, 30388) +HANDLE_BAT(, 30389) +HANDLE_BAT(, 30390) +HANDLE_BAT(, 30391) +HANDLE_BAT(, 30392) +HANDLE_BAT(, 30393) +HANDLE_BAT(, 30394) +HANDLE_BAT(, 30395) +HANDLE_BAT(, 30396) +HANDLE_BAT(, 30397) +HANDLE_BAT(, 30398) +HANDLE_BAT(, 30399) +HANDLE_BAT(, 30400) +HANDLE_BAT(, 30401) +HANDLE_BAT(, 30402) +HANDLE_BAT(, 30403) +HANDLE_BAT(, 30404) +HANDLE_BAT(, 30405) +HANDLE_BAT(, 30406) +HANDLE_BAT(, 30407) +HANDLE_BAT(, 30408) +HANDLE_BAT(, 30409) +HANDLE_BAT(, 30410) +HANDLE_BAT(, 30411) +HANDLE_BAT(, 30412) +HANDLE_BAT(, 30413) +HANDLE_BAT(, 30414) +HANDLE_BAT(, 30415) +HANDLE_BAT(, 30416) +HANDLE_BAT(, 30417) +HANDLE_BAT(, 30418) +HANDLE_BAT(, 30419) +HANDLE_BAT(, 30420) +HANDLE_BAT(, 30421) +HANDLE_BAT(, 30422) +HANDLE_BAT(, 30423) +HANDLE_BAT(, 30424) +HANDLE_BAT(, 30425) +HANDLE_BAT(, 30426) +HANDLE_BAT(, 30427) +HANDLE_BAT(, 30428) +HANDLE_BAT(, 30429) +HANDLE_BAT(, 30430) +HANDLE_BAT(, 30431) +HANDLE_BAT(, 30432) +HANDLE_BAT(, 30433) +HANDLE_BAT(, 30434) +HANDLE_BAT(, 30435) +HANDLE_BAT(, 30436) +HANDLE_BAT(, 30437) +HANDLE_BAT(, 30438) +HANDLE_BAT(, 30439) +HANDLE_BAT(, 30440) +HANDLE_BAT(, 30441) +HANDLE_BAT(, 30442) +HANDLE_BAT(, 30443) +HANDLE_BAT(, 30444) +HANDLE_BAT(, 30445) +HANDLE_BAT(, 30446) +HANDLE_BAT(, 30447) +HANDLE_BAT(, 30448) +HANDLE_BAT(, 30449) +HANDLE_BAT(, 30450) +HANDLE_BAT(, 30451) +HANDLE_BAT(, 30452) +HANDLE_BAT(, 30453) +HANDLE_BAT(, 30454) +HANDLE_BAT(, 30455) +HANDLE_BAT(, 30456) +HANDLE_BAT(, 30457) +HANDLE_BAT(, 30458) +HANDLE_BAT(, 30459) +HANDLE_BAT(, 30460) +HANDLE_BAT(, 30461) +HANDLE_BAT(, 30462) +HANDLE_BAT(, 30463) +HANDLE_BAT(, 30464) +HANDLE_BAT(, 30465) +HANDLE_BAT(, 30466) +HANDLE_BAT(, 30467) +HANDLE_BAT(, 30468) +HANDLE_BAT(, 30469) +HANDLE_BAT(, 30470) +HANDLE_BAT(, 30471) +HANDLE_BAT(, 30472) +HANDLE_BAT(, 30473) +HANDLE_BAT(, 30474) +HANDLE_BAT(, 30475) +HANDLE_BAT(, 30476) +HANDLE_BAT(, 30477) +HANDLE_BAT(, 30478) +HANDLE_BAT(, 30479) +HANDLE_BAT(, 30480) +HANDLE_BAT(, 30481) +HANDLE_BAT(, 30482) +HANDLE_BAT(, 30483) +HANDLE_BAT(, 30484) +HANDLE_BAT(, 30485) +HANDLE_BAT(, 30486) +HANDLE_BAT(, 30487) +HANDLE_BAT(, 30488) +HANDLE_BAT(, 30489) +HANDLE_BAT(, 30490) +HANDLE_BAT(, 30491) +HANDLE_BAT(, 30492) +HANDLE_BAT(, 30493) +HANDLE_BAT(, 30494) +HANDLE_BAT(, 30495) +HANDLE_BAT(, 30496) +HANDLE_BAT(, 30497) +HANDLE_BAT(, 30498) +HANDLE_BAT(, 30499) +HANDLE_BAT(, 30500) +HANDLE_BAT(, 30501) +HANDLE_BAT(, 30502) +HANDLE_BAT(, 30503) +HANDLE_BAT(, 30504) +HANDLE_BAT(, 30505) +HANDLE_BAT(, 30506) +HANDLE_BAT(, 30507) +HANDLE_BAT(, 30508) +HANDLE_BAT(, 30509) +HANDLE_BAT(, 30510) +HANDLE_BAT(, 30511) +HANDLE_BAT(, 30512) +HANDLE_BAT(, 30513) +HANDLE_BAT(, 30514) +HANDLE_BAT(, 30515) +HANDLE_BAT(, 30516) +HANDLE_BAT(, 30517) +HANDLE_BAT(, 30518) +HANDLE_BAT(, 30519) +HANDLE_BAT(, 30520) +HANDLE_BAT(, 30521) +HANDLE_BAT(, 30522) +HANDLE_BAT(, 30523) +HANDLE_BAT(, 30524) +HANDLE_BAT(, 30525) +HANDLE_BAT(, 30526) +HANDLE_BAT(, 30527) +HANDLE_BAT(, 30528) +HANDLE_BAT(, 30529) +HANDLE_BAT(, 30530) +HANDLE_BAT(, 30531) +HANDLE_BAT(, 30532) +HANDLE_BAT(, 30533) +HANDLE_BAT(, 30534) +HANDLE_BAT(, 30535) +HANDLE_BAT(, 30536) +HANDLE_BAT(, 30537) +HANDLE_BAT(, 30538) +HANDLE_BAT(, 30539) +HANDLE_BAT(, 30540) +HANDLE_BAT(, 30541) +HANDLE_BAT(, 30542) +HANDLE_BAT(, 30543) +HANDLE_BAT(, 30544) +HANDLE_BAT(, 30545) +HANDLE_BAT(, 30546) +HANDLE_BAT(, 30547) +HANDLE_BAT(, 30548) +HANDLE_BAT(, 30549) +HANDLE_BAT(, 30550) +HANDLE_BAT(, 30551) +HANDLE_BAT(, 30552) +HANDLE_BAT(, 30553) +HANDLE_BAT(, 30554) +HANDLE_BAT(, 30555) +HANDLE_BAT(, 30556) +HANDLE_BAT(, 30557) +HANDLE_BAT(, 30558) +HANDLE_BAT(, 30559) +HANDLE_BAT(, 30560) +HANDLE_BAT(, 30561) +HANDLE_BAT(, 30562) +HANDLE_BAT(, 30563) +HANDLE_BAT(, 30564) +HANDLE_BAT(, 30565) +HANDLE_BAT(, 30566) +HANDLE_BAT(, 30567) +HANDLE_BAT(, 30568) +HANDLE_BAT(, 30569) +HANDLE_BAT(, 30570) +HANDLE_BAT(, 30571) +HANDLE_BAT(, 30572) +HANDLE_BAT(, 30573) +HANDLE_BAT(, 30574) +HANDLE_BAT(, 30575) +HANDLE_BAT(, 30576) +HANDLE_BAT(, 30577) +HANDLE_BAT(, 30578) +HANDLE_BAT(, 30579) +HANDLE_BAT(, 30580) +HANDLE_BAT(, 30581) +HANDLE_BAT(, 30582) +HANDLE_BAT(, 30583) +HANDLE_BAT(, 30584) +HANDLE_BAT(, 30585) +HANDLE_BAT(, 30586) +HANDLE_BAT(, 30587) +HANDLE_BAT(, 30588) +HANDLE_BAT(, 30589) +HANDLE_BAT(, 30590) +HANDLE_BAT(, 30591) +HANDLE_BAT(, 30592) +HANDLE_BAT(, 30593) +HANDLE_BAT(, 30594) +HANDLE_BAT(, 30595) +HANDLE_BAT(, 30596) +HANDLE_BAT(, 30597) +HANDLE_BAT(, 30598) +HANDLE_BAT(, 30599) +HANDLE_BAT(, 30600) +HANDLE_BAT(, 30601) +HANDLE_BAT(, 30602) +HANDLE_BAT(, 30603) +HANDLE_BAT(, 30604) +HANDLE_BAT(, 30605) +HANDLE_BAT(, 30606) +HANDLE_BAT(, 30607) +HANDLE_BAT(, 30608) +HANDLE_BAT(, 30609) +HANDLE_BAT(, 30610) +HANDLE_BAT(, 30611) +HANDLE_BAT(, 30612) +HANDLE_BAT(, 30613) +HANDLE_BAT(, 30614) +HANDLE_BAT(, 30615) +HANDLE_BAT(, 30616) +HANDLE_BAT(, 30617) +HANDLE_BAT(, 30618) +HANDLE_BAT(, 30619) +HANDLE_BAT(, 30620) +HANDLE_BAT(, 30621) +HANDLE_BAT(, 30622) +HANDLE_BAT(, 30623) +HANDLE_BAT(, 30624) +HANDLE_BAT(, 30625) +HANDLE_BAT(, 30626) +HANDLE_BAT(, 30627) +HANDLE_BAT(, 30628) +HANDLE_BAT(, 30629) +HANDLE_BAT(, 30630) +HANDLE_BAT(, 30631) +HANDLE_BAT(, 30632) +HANDLE_BAT(, 30633) +HANDLE_BAT(, 30634) +HANDLE_BAT(, 30635) +HANDLE_BAT(, 30636) +HANDLE_BAT(, 30637) +HANDLE_BAT(, 30638) +HANDLE_BAT(, 30639) +HANDLE_BAT(, 30640) +HANDLE_BAT(, 30641) +HANDLE_BAT(, 30642) +HANDLE_BAT(, 30643) +HANDLE_BAT(, 30644) +HANDLE_BAT(, 30645) +HANDLE_BAT(, 30646) +HANDLE_BAT(, 30647) +HANDLE_BAT(, 30648) +HANDLE_BAT(, 30649) +HANDLE_BAT(, 30650) +HANDLE_BAT(, 30651) +HANDLE_BAT(, 30652) +HANDLE_BAT(, 30653) +HANDLE_BAT(, 30654) +HANDLE_BAT(, 30655) +HANDLE_BAT(, 30656) +HANDLE_BAT(, 30657) +HANDLE_BAT(, 30658) +HANDLE_BAT(, 30659) +HANDLE_BAT(, 30660) +HANDLE_BAT(, 30661) +HANDLE_BAT(, 30662) +HANDLE_BAT(, 30663) +HANDLE_BAT(, 30664) +HANDLE_BAT(, 30665) +HANDLE_BAT(, 30666) +HANDLE_BAT(, 30667) +HANDLE_BAT(, 30668) +HANDLE_BAT(, 30669) +HANDLE_BAT(, 30670) +HANDLE_BAT(, 30671) +HANDLE_BAT(, 30672) +HANDLE_BAT(, 30673) +HANDLE_BAT(, 30674) +HANDLE_BAT(, 30675) +HANDLE_BAT(, 30676) +HANDLE_BAT(, 30677) +HANDLE_BAT(, 30678) +HANDLE_BAT(, 30679) +HANDLE_BAT(, 30680) +HANDLE_BAT(, 30681) +HANDLE_BAT(, 30682) +HANDLE_BAT(, 30683) +HANDLE_BAT(, 30684) +HANDLE_BAT(, 30685) +HANDLE_BAT(, 30686) +HANDLE_BAT(, 30687) +HANDLE_BAT(, 30688) +HANDLE_BAT(, 30689) +HANDLE_BAT(, 30690) +HANDLE_BAT(, 30691) +HANDLE_BAT(, 30692) +HANDLE_BAT(, 30693) +HANDLE_BAT(, 30694) +HANDLE_BAT(, 30695) +HANDLE_BAT(, 30696) +HANDLE_BAT(, 30697) +HANDLE_BAT(, 30698) +HANDLE_BAT(, 30699) +HANDLE_BAT(, 30700) +HANDLE_BAT(, 30701) +HANDLE_BAT(, 30702) +HANDLE_BAT(, 30703) +HANDLE_BAT(, 30704) +HANDLE_BAT(, 30705) +HANDLE_BAT(, 30706) +HANDLE_BAT(, 30707) +HANDLE_BAT(, 30708) +HANDLE_BAT(, 30709) +HANDLE_BAT(, 30710) +HANDLE_BAT(, 30711) +HANDLE_BAT(, 30712) +HANDLE_BAT(, 30713) +HANDLE_BAT(, 30714) +HANDLE_BAT(, 30715) +HANDLE_BAT(, 30716) +HANDLE_BAT(, 30717) +HANDLE_BAT(, 30718) +HANDLE_BAT(, 30719) +HANDLE_BAT(, 30720) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 29697) +HANDLE_BAT(APINT_TYPE_PREFIX, 29698) +HANDLE_BAT(APINT_TYPE_PREFIX, 29699) +HANDLE_BAT(APINT_TYPE_PREFIX, 29700) +HANDLE_BAT(APINT_TYPE_PREFIX, 29701) +HANDLE_BAT(APINT_TYPE_PREFIX, 29702) +HANDLE_BAT(APINT_TYPE_PREFIX, 29703) +HANDLE_BAT(APINT_TYPE_PREFIX, 29704) +HANDLE_BAT(APINT_TYPE_PREFIX, 29705) +HANDLE_BAT(APINT_TYPE_PREFIX, 29706) +HANDLE_BAT(APINT_TYPE_PREFIX, 29707) +HANDLE_BAT(APINT_TYPE_PREFIX, 29708) +HANDLE_BAT(APINT_TYPE_PREFIX, 29709) +HANDLE_BAT(APINT_TYPE_PREFIX, 29710) +HANDLE_BAT(APINT_TYPE_PREFIX, 29711) +HANDLE_BAT(APINT_TYPE_PREFIX, 29712) +HANDLE_BAT(APINT_TYPE_PREFIX, 29713) +HANDLE_BAT(APINT_TYPE_PREFIX, 29714) +HANDLE_BAT(APINT_TYPE_PREFIX, 29715) +HANDLE_BAT(APINT_TYPE_PREFIX, 29716) +HANDLE_BAT(APINT_TYPE_PREFIX, 29717) +HANDLE_BAT(APINT_TYPE_PREFIX, 29718) +HANDLE_BAT(APINT_TYPE_PREFIX, 29719) +HANDLE_BAT(APINT_TYPE_PREFIX, 29720) +HANDLE_BAT(APINT_TYPE_PREFIX, 29721) +HANDLE_BAT(APINT_TYPE_PREFIX, 29722) +HANDLE_BAT(APINT_TYPE_PREFIX, 29723) +HANDLE_BAT(APINT_TYPE_PREFIX, 29724) +HANDLE_BAT(APINT_TYPE_PREFIX, 29725) +HANDLE_BAT(APINT_TYPE_PREFIX, 29726) +HANDLE_BAT(APINT_TYPE_PREFIX, 29727) +HANDLE_BAT(APINT_TYPE_PREFIX, 29728) +HANDLE_BAT(APINT_TYPE_PREFIX, 29729) +HANDLE_BAT(APINT_TYPE_PREFIX, 29730) +HANDLE_BAT(APINT_TYPE_PREFIX, 29731) +HANDLE_BAT(APINT_TYPE_PREFIX, 29732) +HANDLE_BAT(APINT_TYPE_PREFIX, 29733) +HANDLE_BAT(APINT_TYPE_PREFIX, 29734) +HANDLE_BAT(APINT_TYPE_PREFIX, 29735) +HANDLE_BAT(APINT_TYPE_PREFIX, 29736) +HANDLE_BAT(APINT_TYPE_PREFIX, 29737) +HANDLE_BAT(APINT_TYPE_PREFIX, 29738) +HANDLE_BAT(APINT_TYPE_PREFIX, 29739) +HANDLE_BAT(APINT_TYPE_PREFIX, 29740) +HANDLE_BAT(APINT_TYPE_PREFIX, 29741) +HANDLE_BAT(APINT_TYPE_PREFIX, 29742) +HANDLE_BAT(APINT_TYPE_PREFIX, 29743) +HANDLE_BAT(APINT_TYPE_PREFIX, 29744) +HANDLE_BAT(APINT_TYPE_PREFIX, 29745) +HANDLE_BAT(APINT_TYPE_PREFIX, 29746) +HANDLE_BAT(APINT_TYPE_PREFIX, 29747) +HANDLE_BAT(APINT_TYPE_PREFIX, 29748) +HANDLE_BAT(APINT_TYPE_PREFIX, 29749) +HANDLE_BAT(APINT_TYPE_PREFIX, 29750) +HANDLE_BAT(APINT_TYPE_PREFIX, 29751) +HANDLE_BAT(APINT_TYPE_PREFIX, 29752) +HANDLE_BAT(APINT_TYPE_PREFIX, 29753) +HANDLE_BAT(APINT_TYPE_PREFIX, 29754) +HANDLE_BAT(APINT_TYPE_PREFIX, 29755) +HANDLE_BAT(APINT_TYPE_PREFIX, 29756) +HANDLE_BAT(APINT_TYPE_PREFIX, 29757) +HANDLE_BAT(APINT_TYPE_PREFIX, 29758) +HANDLE_BAT(APINT_TYPE_PREFIX, 29759) +HANDLE_BAT(APINT_TYPE_PREFIX, 29760) +HANDLE_BAT(APINT_TYPE_PREFIX, 29761) +HANDLE_BAT(APINT_TYPE_PREFIX, 29762) +HANDLE_BAT(APINT_TYPE_PREFIX, 29763) +HANDLE_BAT(APINT_TYPE_PREFIX, 29764) +HANDLE_BAT(APINT_TYPE_PREFIX, 29765) +HANDLE_BAT(APINT_TYPE_PREFIX, 29766) +HANDLE_BAT(APINT_TYPE_PREFIX, 29767) +HANDLE_BAT(APINT_TYPE_PREFIX, 29768) +HANDLE_BAT(APINT_TYPE_PREFIX, 29769) +HANDLE_BAT(APINT_TYPE_PREFIX, 29770) +HANDLE_BAT(APINT_TYPE_PREFIX, 29771) +HANDLE_BAT(APINT_TYPE_PREFIX, 29772) +HANDLE_BAT(APINT_TYPE_PREFIX, 29773) +HANDLE_BAT(APINT_TYPE_PREFIX, 29774) +HANDLE_BAT(APINT_TYPE_PREFIX, 29775) +HANDLE_BAT(APINT_TYPE_PREFIX, 29776) +HANDLE_BAT(APINT_TYPE_PREFIX, 29777) +HANDLE_BAT(APINT_TYPE_PREFIX, 29778) +HANDLE_BAT(APINT_TYPE_PREFIX, 29779) +HANDLE_BAT(APINT_TYPE_PREFIX, 29780) +HANDLE_BAT(APINT_TYPE_PREFIX, 29781) +HANDLE_BAT(APINT_TYPE_PREFIX, 29782) +HANDLE_BAT(APINT_TYPE_PREFIX, 29783) +HANDLE_BAT(APINT_TYPE_PREFIX, 29784) +HANDLE_BAT(APINT_TYPE_PREFIX, 29785) +HANDLE_BAT(APINT_TYPE_PREFIX, 29786) +HANDLE_BAT(APINT_TYPE_PREFIX, 29787) +HANDLE_BAT(APINT_TYPE_PREFIX, 29788) +HANDLE_BAT(APINT_TYPE_PREFIX, 29789) +HANDLE_BAT(APINT_TYPE_PREFIX, 29790) +HANDLE_BAT(APINT_TYPE_PREFIX, 29791) +HANDLE_BAT(APINT_TYPE_PREFIX, 29792) +HANDLE_BAT(APINT_TYPE_PREFIX, 29793) +HANDLE_BAT(APINT_TYPE_PREFIX, 29794) +HANDLE_BAT(APINT_TYPE_PREFIX, 29795) +HANDLE_BAT(APINT_TYPE_PREFIX, 29796) +HANDLE_BAT(APINT_TYPE_PREFIX, 29797) +HANDLE_BAT(APINT_TYPE_PREFIX, 29798) +HANDLE_BAT(APINT_TYPE_PREFIX, 29799) +HANDLE_BAT(APINT_TYPE_PREFIX, 29800) +HANDLE_BAT(APINT_TYPE_PREFIX, 29801) +HANDLE_BAT(APINT_TYPE_PREFIX, 29802) +HANDLE_BAT(APINT_TYPE_PREFIX, 29803) +HANDLE_BAT(APINT_TYPE_PREFIX, 29804) +HANDLE_BAT(APINT_TYPE_PREFIX, 29805) +HANDLE_BAT(APINT_TYPE_PREFIX, 29806) +HANDLE_BAT(APINT_TYPE_PREFIX, 29807) +HANDLE_BAT(APINT_TYPE_PREFIX, 29808) +HANDLE_BAT(APINT_TYPE_PREFIX, 29809) +HANDLE_BAT(APINT_TYPE_PREFIX, 29810) +HANDLE_BAT(APINT_TYPE_PREFIX, 29811) +HANDLE_BAT(APINT_TYPE_PREFIX, 29812) +HANDLE_BAT(APINT_TYPE_PREFIX, 29813) +HANDLE_BAT(APINT_TYPE_PREFIX, 29814) +HANDLE_BAT(APINT_TYPE_PREFIX, 29815) +HANDLE_BAT(APINT_TYPE_PREFIX, 29816) +HANDLE_BAT(APINT_TYPE_PREFIX, 29817) +HANDLE_BAT(APINT_TYPE_PREFIX, 29818) +HANDLE_BAT(APINT_TYPE_PREFIX, 29819) +HANDLE_BAT(APINT_TYPE_PREFIX, 29820) +HANDLE_BAT(APINT_TYPE_PREFIX, 29821) +HANDLE_BAT(APINT_TYPE_PREFIX, 29822) +HANDLE_BAT(APINT_TYPE_PREFIX, 29823) +HANDLE_BAT(APINT_TYPE_PREFIX, 29824) +HANDLE_BAT(APINT_TYPE_PREFIX, 29825) +HANDLE_BAT(APINT_TYPE_PREFIX, 29826) +HANDLE_BAT(APINT_TYPE_PREFIX, 29827) +HANDLE_BAT(APINT_TYPE_PREFIX, 29828) +HANDLE_BAT(APINT_TYPE_PREFIX, 29829) +HANDLE_BAT(APINT_TYPE_PREFIX, 29830) +HANDLE_BAT(APINT_TYPE_PREFIX, 29831) +HANDLE_BAT(APINT_TYPE_PREFIX, 29832) +HANDLE_BAT(APINT_TYPE_PREFIX, 29833) +HANDLE_BAT(APINT_TYPE_PREFIX, 29834) +HANDLE_BAT(APINT_TYPE_PREFIX, 29835) +HANDLE_BAT(APINT_TYPE_PREFIX, 29836) +HANDLE_BAT(APINT_TYPE_PREFIX, 29837) +HANDLE_BAT(APINT_TYPE_PREFIX, 29838) +HANDLE_BAT(APINT_TYPE_PREFIX, 29839) +HANDLE_BAT(APINT_TYPE_PREFIX, 29840) +HANDLE_BAT(APINT_TYPE_PREFIX, 29841) +HANDLE_BAT(APINT_TYPE_PREFIX, 29842) +HANDLE_BAT(APINT_TYPE_PREFIX, 29843) +HANDLE_BAT(APINT_TYPE_PREFIX, 29844) +HANDLE_BAT(APINT_TYPE_PREFIX, 29845) +HANDLE_BAT(APINT_TYPE_PREFIX, 29846) +HANDLE_BAT(APINT_TYPE_PREFIX, 29847) +HANDLE_BAT(APINT_TYPE_PREFIX, 29848) +HANDLE_BAT(APINT_TYPE_PREFIX, 29849) +HANDLE_BAT(APINT_TYPE_PREFIX, 29850) +HANDLE_BAT(APINT_TYPE_PREFIX, 29851) +HANDLE_BAT(APINT_TYPE_PREFIX, 29852) +HANDLE_BAT(APINT_TYPE_PREFIX, 29853) +HANDLE_BAT(APINT_TYPE_PREFIX, 29854) +HANDLE_BAT(APINT_TYPE_PREFIX, 29855) +HANDLE_BAT(APINT_TYPE_PREFIX, 29856) +HANDLE_BAT(APINT_TYPE_PREFIX, 29857) +HANDLE_BAT(APINT_TYPE_PREFIX, 29858) +HANDLE_BAT(APINT_TYPE_PREFIX, 29859) +HANDLE_BAT(APINT_TYPE_PREFIX, 29860) +HANDLE_BAT(APINT_TYPE_PREFIX, 29861) +HANDLE_BAT(APINT_TYPE_PREFIX, 29862) +HANDLE_BAT(APINT_TYPE_PREFIX, 29863) +HANDLE_BAT(APINT_TYPE_PREFIX, 29864) +HANDLE_BAT(APINT_TYPE_PREFIX, 29865) +HANDLE_BAT(APINT_TYPE_PREFIX, 29866) +HANDLE_BAT(APINT_TYPE_PREFIX, 29867) +HANDLE_BAT(APINT_TYPE_PREFIX, 29868) +HANDLE_BAT(APINT_TYPE_PREFIX, 29869) +HANDLE_BAT(APINT_TYPE_PREFIX, 29870) +HANDLE_BAT(APINT_TYPE_PREFIX, 29871) +HANDLE_BAT(APINT_TYPE_PREFIX, 29872) +HANDLE_BAT(APINT_TYPE_PREFIX, 29873) +HANDLE_BAT(APINT_TYPE_PREFIX, 29874) +HANDLE_BAT(APINT_TYPE_PREFIX, 29875) +HANDLE_BAT(APINT_TYPE_PREFIX, 29876) +HANDLE_BAT(APINT_TYPE_PREFIX, 29877) +HANDLE_BAT(APINT_TYPE_PREFIX, 29878) +HANDLE_BAT(APINT_TYPE_PREFIX, 29879) +HANDLE_BAT(APINT_TYPE_PREFIX, 29880) +HANDLE_BAT(APINT_TYPE_PREFIX, 29881) +HANDLE_BAT(APINT_TYPE_PREFIX, 29882) +HANDLE_BAT(APINT_TYPE_PREFIX, 29883) +HANDLE_BAT(APINT_TYPE_PREFIX, 29884) +HANDLE_BAT(APINT_TYPE_PREFIX, 29885) +HANDLE_BAT(APINT_TYPE_PREFIX, 29886) +HANDLE_BAT(APINT_TYPE_PREFIX, 29887) +HANDLE_BAT(APINT_TYPE_PREFIX, 29888) +HANDLE_BAT(APINT_TYPE_PREFIX, 29889) +HANDLE_BAT(APINT_TYPE_PREFIX, 29890) +HANDLE_BAT(APINT_TYPE_PREFIX, 29891) +HANDLE_BAT(APINT_TYPE_PREFIX, 29892) +HANDLE_BAT(APINT_TYPE_PREFIX, 29893) +HANDLE_BAT(APINT_TYPE_PREFIX, 29894) +HANDLE_BAT(APINT_TYPE_PREFIX, 29895) +HANDLE_BAT(APINT_TYPE_PREFIX, 29896) +HANDLE_BAT(APINT_TYPE_PREFIX, 29897) +HANDLE_BAT(APINT_TYPE_PREFIX, 29898) +HANDLE_BAT(APINT_TYPE_PREFIX, 29899) +HANDLE_BAT(APINT_TYPE_PREFIX, 29900) +HANDLE_BAT(APINT_TYPE_PREFIX, 29901) +HANDLE_BAT(APINT_TYPE_PREFIX, 29902) +HANDLE_BAT(APINT_TYPE_PREFIX, 29903) +HANDLE_BAT(APINT_TYPE_PREFIX, 29904) +HANDLE_BAT(APINT_TYPE_PREFIX, 29905) +HANDLE_BAT(APINT_TYPE_PREFIX, 29906) +HANDLE_BAT(APINT_TYPE_PREFIX, 29907) +HANDLE_BAT(APINT_TYPE_PREFIX, 29908) +HANDLE_BAT(APINT_TYPE_PREFIX, 29909) +HANDLE_BAT(APINT_TYPE_PREFIX, 29910) +HANDLE_BAT(APINT_TYPE_PREFIX, 29911) +HANDLE_BAT(APINT_TYPE_PREFIX, 29912) +HANDLE_BAT(APINT_TYPE_PREFIX, 29913) +HANDLE_BAT(APINT_TYPE_PREFIX, 29914) +HANDLE_BAT(APINT_TYPE_PREFIX, 29915) +HANDLE_BAT(APINT_TYPE_PREFIX, 29916) +HANDLE_BAT(APINT_TYPE_PREFIX, 29917) +HANDLE_BAT(APINT_TYPE_PREFIX, 29918) +HANDLE_BAT(APINT_TYPE_PREFIX, 29919) +HANDLE_BAT(APINT_TYPE_PREFIX, 29920) +HANDLE_BAT(APINT_TYPE_PREFIX, 29921) +HANDLE_BAT(APINT_TYPE_PREFIX, 29922) +HANDLE_BAT(APINT_TYPE_PREFIX, 29923) +HANDLE_BAT(APINT_TYPE_PREFIX, 29924) +HANDLE_BAT(APINT_TYPE_PREFIX, 29925) +HANDLE_BAT(APINT_TYPE_PREFIX, 29926) +HANDLE_BAT(APINT_TYPE_PREFIX, 29927) +HANDLE_BAT(APINT_TYPE_PREFIX, 29928) +HANDLE_BAT(APINT_TYPE_PREFIX, 29929) +HANDLE_BAT(APINT_TYPE_PREFIX, 29930) +HANDLE_BAT(APINT_TYPE_PREFIX, 29931) +HANDLE_BAT(APINT_TYPE_PREFIX, 29932) +HANDLE_BAT(APINT_TYPE_PREFIX, 29933) +HANDLE_BAT(APINT_TYPE_PREFIX, 29934) +HANDLE_BAT(APINT_TYPE_PREFIX, 29935) +HANDLE_BAT(APINT_TYPE_PREFIX, 29936) +HANDLE_BAT(APINT_TYPE_PREFIX, 29937) +HANDLE_BAT(APINT_TYPE_PREFIX, 29938) +HANDLE_BAT(APINT_TYPE_PREFIX, 29939) +HANDLE_BAT(APINT_TYPE_PREFIX, 29940) +HANDLE_BAT(APINT_TYPE_PREFIX, 29941) +HANDLE_BAT(APINT_TYPE_PREFIX, 29942) +HANDLE_BAT(APINT_TYPE_PREFIX, 29943) +HANDLE_BAT(APINT_TYPE_PREFIX, 29944) +HANDLE_BAT(APINT_TYPE_PREFIX, 29945) +HANDLE_BAT(APINT_TYPE_PREFIX, 29946) +HANDLE_BAT(APINT_TYPE_PREFIX, 29947) +HANDLE_BAT(APINT_TYPE_PREFIX, 29948) +HANDLE_BAT(APINT_TYPE_PREFIX, 29949) +HANDLE_BAT(APINT_TYPE_PREFIX, 29950) +HANDLE_BAT(APINT_TYPE_PREFIX, 29951) +HANDLE_BAT(APINT_TYPE_PREFIX, 29952) +HANDLE_BAT(APINT_TYPE_PREFIX, 29953) +HANDLE_BAT(APINT_TYPE_PREFIX, 29954) +HANDLE_BAT(APINT_TYPE_PREFIX, 29955) +HANDLE_BAT(APINT_TYPE_PREFIX, 29956) +HANDLE_BAT(APINT_TYPE_PREFIX, 29957) +HANDLE_BAT(APINT_TYPE_PREFIX, 29958) +HANDLE_BAT(APINT_TYPE_PREFIX, 29959) +HANDLE_BAT(APINT_TYPE_PREFIX, 29960) +HANDLE_BAT(APINT_TYPE_PREFIX, 29961) +HANDLE_BAT(APINT_TYPE_PREFIX, 29962) +HANDLE_BAT(APINT_TYPE_PREFIX, 29963) +HANDLE_BAT(APINT_TYPE_PREFIX, 29964) +HANDLE_BAT(APINT_TYPE_PREFIX, 29965) +HANDLE_BAT(APINT_TYPE_PREFIX, 29966) +HANDLE_BAT(APINT_TYPE_PREFIX, 29967) +HANDLE_BAT(APINT_TYPE_PREFIX, 29968) +HANDLE_BAT(APINT_TYPE_PREFIX, 29969) +HANDLE_BAT(APINT_TYPE_PREFIX, 29970) +HANDLE_BAT(APINT_TYPE_PREFIX, 29971) +HANDLE_BAT(APINT_TYPE_PREFIX, 29972) +HANDLE_BAT(APINT_TYPE_PREFIX, 29973) +HANDLE_BAT(APINT_TYPE_PREFIX, 29974) +HANDLE_BAT(APINT_TYPE_PREFIX, 29975) +HANDLE_BAT(APINT_TYPE_PREFIX, 29976) +HANDLE_BAT(APINT_TYPE_PREFIX, 29977) +HANDLE_BAT(APINT_TYPE_PREFIX, 29978) +HANDLE_BAT(APINT_TYPE_PREFIX, 29979) +HANDLE_BAT(APINT_TYPE_PREFIX, 29980) +HANDLE_BAT(APINT_TYPE_PREFIX, 29981) +HANDLE_BAT(APINT_TYPE_PREFIX, 29982) +HANDLE_BAT(APINT_TYPE_PREFIX, 29983) +HANDLE_BAT(APINT_TYPE_PREFIX, 29984) +HANDLE_BAT(APINT_TYPE_PREFIX, 29985) +HANDLE_BAT(APINT_TYPE_PREFIX, 29986) +HANDLE_BAT(APINT_TYPE_PREFIX, 29987) +HANDLE_BAT(APINT_TYPE_PREFIX, 29988) +HANDLE_BAT(APINT_TYPE_PREFIX, 29989) +HANDLE_BAT(APINT_TYPE_PREFIX, 29990) +HANDLE_BAT(APINT_TYPE_PREFIX, 29991) +HANDLE_BAT(APINT_TYPE_PREFIX, 29992) +HANDLE_BAT(APINT_TYPE_PREFIX, 29993) +HANDLE_BAT(APINT_TYPE_PREFIX, 29994) +HANDLE_BAT(APINT_TYPE_PREFIX, 29995) +HANDLE_BAT(APINT_TYPE_PREFIX, 29996) +HANDLE_BAT(APINT_TYPE_PREFIX, 29997) +HANDLE_BAT(APINT_TYPE_PREFIX, 29998) +HANDLE_BAT(APINT_TYPE_PREFIX, 29999) +HANDLE_BAT(APINT_TYPE_PREFIX, 30000) +HANDLE_BAT(APINT_TYPE_PREFIX, 30001) +HANDLE_BAT(APINT_TYPE_PREFIX, 30002) +HANDLE_BAT(APINT_TYPE_PREFIX, 30003) +HANDLE_BAT(APINT_TYPE_PREFIX, 30004) +HANDLE_BAT(APINT_TYPE_PREFIX, 30005) +HANDLE_BAT(APINT_TYPE_PREFIX, 30006) +HANDLE_BAT(APINT_TYPE_PREFIX, 30007) +HANDLE_BAT(APINT_TYPE_PREFIX, 30008) +HANDLE_BAT(APINT_TYPE_PREFIX, 30009) +HANDLE_BAT(APINT_TYPE_PREFIX, 30010) +HANDLE_BAT(APINT_TYPE_PREFIX, 30011) +HANDLE_BAT(APINT_TYPE_PREFIX, 30012) +HANDLE_BAT(APINT_TYPE_PREFIX, 30013) +HANDLE_BAT(APINT_TYPE_PREFIX, 30014) +HANDLE_BAT(APINT_TYPE_PREFIX, 30015) +HANDLE_BAT(APINT_TYPE_PREFIX, 30016) +HANDLE_BAT(APINT_TYPE_PREFIX, 30017) +HANDLE_BAT(APINT_TYPE_PREFIX, 30018) +HANDLE_BAT(APINT_TYPE_PREFIX, 30019) +HANDLE_BAT(APINT_TYPE_PREFIX, 30020) +HANDLE_BAT(APINT_TYPE_PREFIX, 30021) +HANDLE_BAT(APINT_TYPE_PREFIX, 30022) +HANDLE_BAT(APINT_TYPE_PREFIX, 30023) +HANDLE_BAT(APINT_TYPE_PREFIX, 30024) +HANDLE_BAT(APINT_TYPE_PREFIX, 30025) +HANDLE_BAT(APINT_TYPE_PREFIX, 30026) +HANDLE_BAT(APINT_TYPE_PREFIX, 30027) +HANDLE_BAT(APINT_TYPE_PREFIX, 30028) +HANDLE_BAT(APINT_TYPE_PREFIX, 30029) +HANDLE_BAT(APINT_TYPE_PREFIX, 30030) +HANDLE_BAT(APINT_TYPE_PREFIX, 30031) +HANDLE_BAT(APINT_TYPE_PREFIX, 30032) +HANDLE_BAT(APINT_TYPE_PREFIX, 30033) +HANDLE_BAT(APINT_TYPE_PREFIX, 30034) +HANDLE_BAT(APINT_TYPE_PREFIX, 30035) +HANDLE_BAT(APINT_TYPE_PREFIX, 30036) +HANDLE_BAT(APINT_TYPE_PREFIX, 30037) +HANDLE_BAT(APINT_TYPE_PREFIX, 30038) +HANDLE_BAT(APINT_TYPE_PREFIX, 30039) +HANDLE_BAT(APINT_TYPE_PREFIX, 30040) +HANDLE_BAT(APINT_TYPE_PREFIX, 30041) +HANDLE_BAT(APINT_TYPE_PREFIX, 30042) +HANDLE_BAT(APINT_TYPE_PREFIX, 30043) +HANDLE_BAT(APINT_TYPE_PREFIX, 30044) +HANDLE_BAT(APINT_TYPE_PREFIX, 30045) +HANDLE_BAT(APINT_TYPE_PREFIX, 30046) +HANDLE_BAT(APINT_TYPE_PREFIX, 30047) +HANDLE_BAT(APINT_TYPE_PREFIX, 30048) +HANDLE_BAT(APINT_TYPE_PREFIX, 30049) +HANDLE_BAT(APINT_TYPE_PREFIX, 30050) +HANDLE_BAT(APINT_TYPE_PREFIX, 30051) +HANDLE_BAT(APINT_TYPE_PREFIX, 30052) +HANDLE_BAT(APINT_TYPE_PREFIX, 30053) +HANDLE_BAT(APINT_TYPE_PREFIX, 30054) +HANDLE_BAT(APINT_TYPE_PREFIX, 30055) +HANDLE_BAT(APINT_TYPE_PREFIX, 30056) +HANDLE_BAT(APINT_TYPE_PREFIX, 30057) +HANDLE_BAT(APINT_TYPE_PREFIX, 30058) +HANDLE_BAT(APINT_TYPE_PREFIX, 30059) +HANDLE_BAT(APINT_TYPE_PREFIX, 30060) +HANDLE_BAT(APINT_TYPE_PREFIX, 30061) +HANDLE_BAT(APINT_TYPE_PREFIX, 30062) +HANDLE_BAT(APINT_TYPE_PREFIX, 30063) +HANDLE_BAT(APINT_TYPE_PREFIX, 30064) +HANDLE_BAT(APINT_TYPE_PREFIX, 30065) +HANDLE_BAT(APINT_TYPE_PREFIX, 30066) +HANDLE_BAT(APINT_TYPE_PREFIX, 30067) +HANDLE_BAT(APINT_TYPE_PREFIX, 30068) +HANDLE_BAT(APINT_TYPE_PREFIX, 30069) +HANDLE_BAT(APINT_TYPE_PREFIX, 30070) +HANDLE_BAT(APINT_TYPE_PREFIX, 30071) +HANDLE_BAT(APINT_TYPE_PREFIX, 30072) +HANDLE_BAT(APINT_TYPE_PREFIX, 30073) +HANDLE_BAT(APINT_TYPE_PREFIX, 30074) +HANDLE_BAT(APINT_TYPE_PREFIX, 30075) +HANDLE_BAT(APINT_TYPE_PREFIX, 30076) +HANDLE_BAT(APINT_TYPE_PREFIX, 30077) +HANDLE_BAT(APINT_TYPE_PREFIX, 30078) +HANDLE_BAT(APINT_TYPE_PREFIX, 30079) +HANDLE_BAT(APINT_TYPE_PREFIX, 30080) +HANDLE_BAT(APINT_TYPE_PREFIX, 30081) +HANDLE_BAT(APINT_TYPE_PREFIX, 30082) +HANDLE_BAT(APINT_TYPE_PREFIX, 30083) +HANDLE_BAT(APINT_TYPE_PREFIX, 30084) +HANDLE_BAT(APINT_TYPE_PREFIX, 30085) +HANDLE_BAT(APINT_TYPE_PREFIX, 30086) +HANDLE_BAT(APINT_TYPE_PREFIX, 30087) +HANDLE_BAT(APINT_TYPE_PREFIX, 30088) +HANDLE_BAT(APINT_TYPE_PREFIX, 30089) +HANDLE_BAT(APINT_TYPE_PREFIX, 30090) +HANDLE_BAT(APINT_TYPE_PREFIX, 30091) +HANDLE_BAT(APINT_TYPE_PREFIX, 30092) +HANDLE_BAT(APINT_TYPE_PREFIX, 30093) +HANDLE_BAT(APINT_TYPE_PREFIX, 30094) +HANDLE_BAT(APINT_TYPE_PREFIX, 30095) +HANDLE_BAT(APINT_TYPE_PREFIX, 30096) +HANDLE_BAT(APINT_TYPE_PREFIX, 30097) +HANDLE_BAT(APINT_TYPE_PREFIX, 30098) +HANDLE_BAT(APINT_TYPE_PREFIX, 30099) +HANDLE_BAT(APINT_TYPE_PREFIX, 30100) +HANDLE_BAT(APINT_TYPE_PREFIX, 30101) +HANDLE_BAT(APINT_TYPE_PREFIX, 30102) +HANDLE_BAT(APINT_TYPE_PREFIX, 30103) +HANDLE_BAT(APINT_TYPE_PREFIX, 30104) +HANDLE_BAT(APINT_TYPE_PREFIX, 30105) +HANDLE_BAT(APINT_TYPE_PREFIX, 30106) +HANDLE_BAT(APINT_TYPE_PREFIX, 30107) +HANDLE_BAT(APINT_TYPE_PREFIX, 30108) +HANDLE_BAT(APINT_TYPE_PREFIX, 30109) +HANDLE_BAT(APINT_TYPE_PREFIX, 30110) +HANDLE_BAT(APINT_TYPE_PREFIX, 30111) +HANDLE_BAT(APINT_TYPE_PREFIX, 30112) +HANDLE_BAT(APINT_TYPE_PREFIX, 30113) +HANDLE_BAT(APINT_TYPE_PREFIX, 30114) +HANDLE_BAT(APINT_TYPE_PREFIX, 30115) +HANDLE_BAT(APINT_TYPE_PREFIX, 30116) +HANDLE_BAT(APINT_TYPE_PREFIX, 30117) +HANDLE_BAT(APINT_TYPE_PREFIX, 30118) +HANDLE_BAT(APINT_TYPE_PREFIX, 30119) +HANDLE_BAT(APINT_TYPE_PREFIX, 30120) +HANDLE_BAT(APINT_TYPE_PREFIX, 30121) +HANDLE_BAT(APINT_TYPE_PREFIX, 30122) +HANDLE_BAT(APINT_TYPE_PREFIX, 30123) +HANDLE_BAT(APINT_TYPE_PREFIX, 30124) +HANDLE_BAT(APINT_TYPE_PREFIX, 30125) +HANDLE_BAT(APINT_TYPE_PREFIX, 30126) +HANDLE_BAT(APINT_TYPE_PREFIX, 30127) +HANDLE_BAT(APINT_TYPE_PREFIX, 30128) +HANDLE_BAT(APINT_TYPE_PREFIX, 30129) +HANDLE_BAT(APINT_TYPE_PREFIX, 30130) +HANDLE_BAT(APINT_TYPE_PREFIX, 30131) +HANDLE_BAT(APINT_TYPE_PREFIX, 30132) +HANDLE_BAT(APINT_TYPE_PREFIX, 30133) +HANDLE_BAT(APINT_TYPE_PREFIX, 30134) +HANDLE_BAT(APINT_TYPE_PREFIX, 30135) +HANDLE_BAT(APINT_TYPE_PREFIX, 30136) +HANDLE_BAT(APINT_TYPE_PREFIX, 30137) +HANDLE_BAT(APINT_TYPE_PREFIX, 30138) +HANDLE_BAT(APINT_TYPE_PREFIX, 30139) +HANDLE_BAT(APINT_TYPE_PREFIX, 30140) +HANDLE_BAT(APINT_TYPE_PREFIX, 30141) +HANDLE_BAT(APINT_TYPE_PREFIX, 30142) +HANDLE_BAT(APINT_TYPE_PREFIX, 30143) +HANDLE_BAT(APINT_TYPE_PREFIX, 30144) +HANDLE_BAT(APINT_TYPE_PREFIX, 30145) +HANDLE_BAT(APINT_TYPE_PREFIX, 30146) +HANDLE_BAT(APINT_TYPE_PREFIX, 30147) +HANDLE_BAT(APINT_TYPE_PREFIX, 30148) +HANDLE_BAT(APINT_TYPE_PREFIX, 30149) +HANDLE_BAT(APINT_TYPE_PREFIX, 30150) +HANDLE_BAT(APINT_TYPE_PREFIX, 30151) +HANDLE_BAT(APINT_TYPE_PREFIX, 30152) +HANDLE_BAT(APINT_TYPE_PREFIX, 30153) +HANDLE_BAT(APINT_TYPE_PREFIX, 30154) +HANDLE_BAT(APINT_TYPE_PREFIX, 30155) +HANDLE_BAT(APINT_TYPE_PREFIX, 30156) +HANDLE_BAT(APINT_TYPE_PREFIX, 30157) +HANDLE_BAT(APINT_TYPE_PREFIX, 30158) +HANDLE_BAT(APINT_TYPE_PREFIX, 30159) +HANDLE_BAT(APINT_TYPE_PREFIX, 30160) +HANDLE_BAT(APINT_TYPE_PREFIX, 30161) +HANDLE_BAT(APINT_TYPE_PREFIX, 30162) +HANDLE_BAT(APINT_TYPE_PREFIX, 30163) +HANDLE_BAT(APINT_TYPE_PREFIX, 30164) +HANDLE_BAT(APINT_TYPE_PREFIX, 30165) +HANDLE_BAT(APINT_TYPE_PREFIX, 30166) +HANDLE_BAT(APINT_TYPE_PREFIX, 30167) +HANDLE_BAT(APINT_TYPE_PREFIX, 30168) +HANDLE_BAT(APINT_TYPE_PREFIX, 30169) +HANDLE_BAT(APINT_TYPE_PREFIX, 30170) +HANDLE_BAT(APINT_TYPE_PREFIX, 30171) +HANDLE_BAT(APINT_TYPE_PREFIX, 30172) +HANDLE_BAT(APINT_TYPE_PREFIX, 30173) +HANDLE_BAT(APINT_TYPE_PREFIX, 30174) +HANDLE_BAT(APINT_TYPE_PREFIX, 30175) +HANDLE_BAT(APINT_TYPE_PREFIX, 30176) +HANDLE_BAT(APINT_TYPE_PREFIX, 30177) +HANDLE_BAT(APINT_TYPE_PREFIX, 30178) +HANDLE_BAT(APINT_TYPE_PREFIX, 30179) +HANDLE_BAT(APINT_TYPE_PREFIX, 30180) +HANDLE_BAT(APINT_TYPE_PREFIX, 30181) +HANDLE_BAT(APINT_TYPE_PREFIX, 30182) +HANDLE_BAT(APINT_TYPE_PREFIX, 30183) +HANDLE_BAT(APINT_TYPE_PREFIX, 30184) +HANDLE_BAT(APINT_TYPE_PREFIX, 30185) +HANDLE_BAT(APINT_TYPE_PREFIX, 30186) +HANDLE_BAT(APINT_TYPE_PREFIX, 30187) +HANDLE_BAT(APINT_TYPE_PREFIX, 30188) +HANDLE_BAT(APINT_TYPE_PREFIX, 30189) +HANDLE_BAT(APINT_TYPE_PREFIX, 30190) +HANDLE_BAT(APINT_TYPE_PREFIX, 30191) +HANDLE_BAT(APINT_TYPE_PREFIX, 30192) +HANDLE_BAT(APINT_TYPE_PREFIX, 30193) +HANDLE_BAT(APINT_TYPE_PREFIX, 30194) +HANDLE_BAT(APINT_TYPE_PREFIX, 30195) +HANDLE_BAT(APINT_TYPE_PREFIX, 30196) +HANDLE_BAT(APINT_TYPE_PREFIX, 30197) +HANDLE_BAT(APINT_TYPE_PREFIX, 30198) +HANDLE_BAT(APINT_TYPE_PREFIX, 30199) +HANDLE_BAT(APINT_TYPE_PREFIX, 30200) +HANDLE_BAT(APINT_TYPE_PREFIX, 30201) +HANDLE_BAT(APINT_TYPE_PREFIX, 30202) +HANDLE_BAT(APINT_TYPE_PREFIX, 30203) +HANDLE_BAT(APINT_TYPE_PREFIX, 30204) +HANDLE_BAT(APINT_TYPE_PREFIX, 30205) +HANDLE_BAT(APINT_TYPE_PREFIX, 30206) +HANDLE_BAT(APINT_TYPE_PREFIX, 30207) +HANDLE_BAT(APINT_TYPE_PREFIX, 30208) +HANDLE_BAT(APINT_TYPE_PREFIX, 30209) +HANDLE_BAT(APINT_TYPE_PREFIX, 30210) +HANDLE_BAT(APINT_TYPE_PREFIX, 30211) +HANDLE_BAT(APINT_TYPE_PREFIX, 30212) +HANDLE_BAT(APINT_TYPE_PREFIX, 30213) +HANDLE_BAT(APINT_TYPE_PREFIX, 30214) +HANDLE_BAT(APINT_TYPE_PREFIX, 30215) +HANDLE_BAT(APINT_TYPE_PREFIX, 30216) +HANDLE_BAT(APINT_TYPE_PREFIX, 30217) +HANDLE_BAT(APINT_TYPE_PREFIX, 30218) +HANDLE_BAT(APINT_TYPE_PREFIX, 30219) +HANDLE_BAT(APINT_TYPE_PREFIX, 30220) +HANDLE_BAT(APINT_TYPE_PREFIX, 30221) +HANDLE_BAT(APINT_TYPE_PREFIX, 30222) +HANDLE_BAT(APINT_TYPE_PREFIX, 30223) +HANDLE_BAT(APINT_TYPE_PREFIX, 30224) +HANDLE_BAT(APINT_TYPE_PREFIX, 30225) +HANDLE_BAT(APINT_TYPE_PREFIX, 30226) +HANDLE_BAT(APINT_TYPE_PREFIX, 30227) +HANDLE_BAT(APINT_TYPE_PREFIX, 30228) +HANDLE_BAT(APINT_TYPE_PREFIX, 30229) +HANDLE_BAT(APINT_TYPE_PREFIX, 30230) +HANDLE_BAT(APINT_TYPE_PREFIX, 30231) +HANDLE_BAT(APINT_TYPE_PREFIX, 30232) +HANDLE_BAT(APINT_TYPE_PREFIX, 30233) +HANDLE_BAT(APINT_TYPE_PREFIX, 30234) +HANDLE_BAT(APINT_TYPE_PREFIX, 30235) +HANDLE_BAT(APINT_TYPE_PREFIX, 30236) +HANDLE_BAT(APINT_TYPE_PREFIX, 30237) +HANDLE_BAT(APINT_TYPE_PREFIX, 30238) +HANDLE_BAT(APINT_TYPE_PREFIX, 30239) +HANDLE_BAT(APINT_TYPE_PREFIX, 30240) +HANDLE_BAT(APINT_TYPE_PREFIX, 30241) +HANDLE_BAT(APINT_TYPE_PREFIX, 30242) +HANDLE_BAT(APINT_TYPE_PREFIX, 30243) +HANDLE_BAT(APINT_TYPE_PREFIX, 30244) +HANDLE_BAT(APINT_TYPE_PREFIX, 30245) +HANDLE_BAT(APINT_TYPE_PREFIX, 30246) +HANDLE_BAT(APINT_TYPE_PREFIX, 30247) +HANDLE_BAT(APINT_TYPE_PREFIX, 30248) +HANDLE_BAT(APINT_TYPE_PREFIX, 30249) +HANDLE_BAT(APINT_TYPE_PREFIX, 30250) +HANDLE_BAT(APINT_TYPE_PREFIX, 30251) +HANDLE_BAT(APINT_TYPE_PREFIX, 30252) +HANDLE_BAT(APINT_TYPE_PREFIX, 30253) +HANDLE_BAT(APINT_TYPE_PREFIX, 30254) +HANDLE_BAT(APINT_TYPE_PREFIX, 30255) +HANDLE_BAT(APINT_TYPE_PREFIX, 30256) +HANDLE_BAT(APINT_TYPE_PREFIX, 30257) +HANDLE_BAT(APINT_TYPE_PREFIX, 30258) +HANDLE_BAT(APINT_TYPE_PREFIX, 30259) +HANDLE_BAT(APINT_TYPE_PREFIX, 30260) +HANDLE_BAT(APINT_TYPE_PREFIX, 30261) +HANDLE_BAT(APINT_TYPE_PREFIX, 30262) +HANDLE_BAT(APINT_TYPE_PREFIX, 30263) +HANDLE_BAT(APINT_TYPE_PREFIX, 30264) +HANDLE_BAT(APINT_TYPE_PREFIX, 30265) +HANDLE_BAT(APINT_TYPE_PREFIX, 30266) +HANDLE_BAT(APINT_TYPE_PREFIX, 30267) +HANDLE_BAT(APINT_TYPE_PREFIX, 30268) +HANDLE_BAT(APINT_TYPE_PREFIX, 30269) +HANDLE_BAT(APINT_TYPE_PREFIX, 30270) +HANDLE_BAT(APINT_TYPE_PREFIX, 30271) +HANDLE_BAT(APINT_TYPE_PREFIX, 30272) +HANDLE_BAT(APINT_TYPE_PREFIX, 30273) +HANDLE_BAT(APINT_TYPE_PREFIX, 30274) +HANDLE_BAT(APINT_TYPE_PREFIX, 30275) +HANDLE_BAT(APINT_TYPE_PREFIX, 30276) +HANDLE_BAT(APINT_TYPE_PREFIX, 30277) +HANDLE_BAT(APINT_TYPE_PREFIX, 30278) +HANDLE_BAT(APINT_TYPE_PREFIX, 30279) +HANDLE_BAT(APINT_TYPE_PREFIX, 30280) +HANDLE_BAT(APINT_TYPE_PREFIX, 30281) +HANDLE_BAT(APINT_TYPE_PREFIX, 30282) +HANDLE_BAT(APINT_TYPE_PREFIX, 30283) +HANDLE_BAT(APINT_TYPE_PREFIX, 30284) +HANDLE_BAT(APINT_TYPE_PREFIX, 30285) +HANDLE_BAT(APINT_TYPE_PREFIX, 30286) +HANDLE_BAT(APINT_TYPE_PREFIX, 30287) +HANDLE_BAT(APINT_TYPE_PREFIX, 30288) +HANDLE_BAT(APINT_TYPE_PREFIX, 30289) +HANDLE_BAT(APINT_TYPE_PREFIX, 30290) +HANDLE_BAT(APINT_TYPE_PREFIX, 30291) +HANDLE_BAT(APINT_TYPE_PREFIX, 30292) +HANDLE_BAT(APINT_TYPE_PREFIX, 30293) +HANDLE_BAT(APINT_TYPE_PREFIX, 30294) +HANDLE_BAT(APINT_TYPE_PREFIX, 30295) +HANDLE_BAT(APINT_TYPE_PREFIX, 30296) +HANDLE_BAT(APINT_TYPE_PREFIX, 30297) +HANDLE_BAT(APINT_TYPE_PREFIX, 30298) +HANDLE_BAT(APINT_TYPE_PREFIX, 30299) +HANDLE_BAT(APINT_TYPE_PREFIX, 30300) +HANDLE_BAT(APINT_TYPE_PREFIX, 30301) +HANDLE_BAT(APINT_TYPE_PREFIX, 30302) +HANDLE_BAT(APINT_TYPE_PREFIX, 30303) +HANDLE_BAT(APINT_TYPE_PREFIX, 30304) +HANDLE_BAT(APINT_TYPE_PREFIX, 30305) +HANDLE_BAT(APINT_TYPE_PREFIX, 30306) +HANDLE_BAT(APINT_TYPE_PREFIX, 30307) +HANDLE_BAT(APINT_TYPE_PREFIX, 30308) +HANDLE_BAT(APINT_TYPE_PREFIX, 30309) +HANDLE_BAT(APINT_TYPE_PREFIX, 30310) +HANDLE_BAT(APINT_TYPE_PREFIX, 30311) +HANDLE_BAT(APINT_TYPE_PREFIX, 30312) +HANDLE_BAT(APINT_TYPE_PREFIX, 30313) +HANDLE_BAT(APINT_TYPE_PREFIX, 30314) +HANDLE_BAT(APINT_TYPE_PREFIX, 30315) +HANDLE_BAT(APINT_TYPE_PREFIX, 30316) +HANDLE_BAT(APINT_TYPE_PREFIX, 30317) +HANDLE_BAT(APINT_TYPE_PREFIX, 30318) +HANDLE_BAT(APINT_TYPE_PREFIX, 30319) +HANDLE_BAT(APINT_TYPE_PREFIX, 30320) +HANDLE_BAT(APINT_TYPE_PREFIX, 30321) +HANDLE_BAT(APINT_TYPE_PREFIX, 30322) +HANDLE_BAT(APINT_TYPE_PREFIX, 30323) +HANDLE_BAT(APINT_TYPE_PREFIX, 30324) +HANDLE_BAT(APINT_TYPE_PREFIX, 30325) +HANDLE_BAT(APINT_TYPE_PREFIX, 30326) +HANDLE_BAT(APINT_TYPE_PREFIX, 30327) +HANDLE_BAT(APINT_TYPE_PREFIX, 30328) +HANDLE_BAT(APINT_TYPE_PREFIX, 30329) +HANDLE_BAT(APINT_TYPE_PREFIX, 30330) +HANDLE_BAT(APINT_TYPE_PREFIX, 30331) +HANDLE_BAT(APINT_TYPE_PREFIX, 30332) +HANDLE_BAT(APINT_TYPE_PREFIX, 30333) +HANDLE_BAT(APINT_TYPE_PREFIX, 30334) +HANDLE_BAT(APINT_TYPE_PREFIX, 30335) +HANDLE_BAT(APINT_TYPE_PREFIX, 30336) +HANDLE_BAT(APINT_TYPE_PREFIX, 30337) +HANDLE_BAT(APINT_TYPE_PREFIX, 30338) +HANDLE_BAT(APINT_TYPE_PREFIX, 30339) +HANDLE_BAT(APINT_TYPE_PREFIX, 30340) +HANDLE_BAT(APINT_TYPE_PREFIX, 30341) +HANDLE_BAT(APINT_TYPE_PREFIX, 30342) +HANDLE_BAT(APINT_TYPE_PREFIX, 30343) +HANDLE_BAT(APINT_TYPE_PREFIX, 30344) +HANDLE_BAT(APINT_TYPE_PREFIX, 30345) +HANDLE_BAT(APINT_TYPE_PREFIX, 30346) +HANDLE_BAT(APINT_TYPE_PREFIX, 30347) +HANDLE_BAT(APINT_TYPE_PREFIX, 30348) +HANDLE_BAT(APINT_TYPE_PREFIX, 30349) +HANDLE_BAT(APINT_TYPE_PREFIX, 30350) +HANDLE_BAT(APINT_TYPE_PREFIX, 30351) +HANDLE_BAT(APINT_TYPE_PREFIX, 30352) +HANDLE_BAT(APINT_TYPE_PREFIX, 30353) +HANDLE_BAT(APINT_TYPE_PREFIX, 30354) +HANDLE_BAT(APINT_TYPE_PREFIX, 30355) +HANDLE_BAT(APINT_TYPE_PREFIX, 30356) +HANDLE_BAT(APINT_TYPE_PREFIX, 30357) +HANDLE_BAT(APINT_TYPE_PREFIX, 30358) +HANDLE_BAT(APINT_TYPE_PREFIX, 30359) +HANDLE_BAT(APINT_TYPE_PREFIX, 30360) +HANDLE_BAT(APINT_TYPE_PREFIX, 30361) +HANDLE_BAT(APINT_TYPE_PREFIX, 30362) +HANDLE_BAT(APINT_TYPE_PREFIX, 30363) +HANDLE_BAT(APINT_TYPE_PREFIX, 30364) +HANDLE_BAT(APINT_TYPE_PREFIX, 30365) +HANDLE_BAT(APINT_TYPE_PREFIX, 30366) +HANDLE_BAT(APINT_TYPE_PREFIX, 30367) +HANDLE_BAT(APINT_TYPE_PREFIX, 30368) +HANDLE_BAT(APINT_TYPE_PREFIX, 30369) +HANDLE_BAT(APINT_TYPE_PREFIX, 30370) +HANDLE_BAT(APINT_TYPE_PREFIX, 30371) +HANDLE_BAT(APINT_TYPE_PREFIX, 30372) +HANDLE_BAT(APINT_TYPE_PREFIX, 30373) +HANDLE_BAT(APINT_TYPE_PREFIX, 30374) +HANDLE_BAT(APINT_TYPE_PREFIX, 30375) +HANDLE_BAT(APINT_TYPE_PREFIX, 30376) +HANDLE_BAT(APINT_TYPE_PREFIX, 30377) +HANDLE_BAT(APINT_TYPE_PREFIX, 30378) +HANDLE_BAT(APINT_TYPE_PREFIX, 30379) +HANDLE_BAT(APINT_TYPE_PREFIX, 30380) +HANDLE_BAT(APINT_TYPE_PREFIX, 30381) +HANDLE_BAT(APINT_TYPE_PREFIX, 30382) +HANDLE_BAT(APINT_TYPE_PREFIX, 30383) +HANDLE_BAT(APINT_TYPE_PREFIX, 30384) +HANDLE_BAT(APINT_TYPE_PREFIX, 30385) +HANDLE_BAT(APINT_TYPE_PREFIX, 30386) +HANDLE_BAT(APINT_TYPE_PREFIX, 30387) +HANDLE_BAT(APINT_TYPE_PREFIX, 30388) +HANDLE_BAT(APINT_TYPE_PREFIX, 30389) +HANDLE_BAT(APINT_TYPE_PREFIX, 30390) +HANDLE_BAT(APINT_TYPE_PREFIX, 30391) +HANDLE_BAT(APINT_TYPE_PREFIX, 30392) +HANDLE_BAT(APINT_TYPE_PREFIX, 30393) +HANDLE_BAT(APINT_TYPE_PREFIX, 30394) +HANDLE_BAT(APINT_TYPE_PREFIX, 30395) +HANDLE_BAT(APINT_TYPE_PREFIX, 30396) +HANDLE_BAT(APINT_TYPE_PREFIX, 30397) +HANDLE_BAT(APINT_TYPE_PREFIX, 30398) +HANDLE_BAT(APINT_TYPE_PREFIX, 30399) +HANDLE_BAT(APINT_TYPE_PREFIX, 30400) +HANDLE_BAT(APINT_TYPE_PREFIX, 30401) +HANDLE_BAT(APINT_TYPE_PREFIX, 30402) +HANDLE_BAT(APINT_TYPE_PREFIX, 30403) +HANDLE_BAT(APINT_TYPE_PREFIX, 30404) +HANDLE_BAT(APINT_TYPE_PREFIX, 30405) +HANDLE_BAT(APINT_TYPE_PREFIX, 30406) +HANDLE_BAT(APINT_TYPE_PREFIX, 30407) +HANDLE_BAT(APINT_TYPE_PREFIX, 30408) +HANDLE_BAT(APINT_TYPE_PREFIX, 30409) +HANDLE_BAT(APINT_TYPE_PREFIX, 30410) +HANDLE_BAT(APINT_TYPE_PREFIX, 30411) +HANDLE_BAT(APINT_TYPE_PREFIX, 30412) +HANDLE_BAT(APINT_TYPE_PREFIX, 30413) +HANDLE_BAT(APINT_TYPE_PREFIX, 30414) +HANDLE_BAT(APINT_TYPE_PREFIX, 30415) +HANDLE_BAT(APINT_TYPE_PREFIX, 30416) +HANDLE_BAT(APINT_TYPE_PREFIX, 30417) +HANDLE_BAT(APINT_TYPE_PREFIX, 30418) +HANDLE_BAT(APINT_TYPE_PREFIX, 30419) +HANDLE_BAT(APINT_TYPE_PREFIX, 30420) +HANDLE_BAT(APINT_TYPE_PREFIX, 30421) +HANDLE_BAT(APINT_TYPE_PREFIX, 30422) +HANDLE_BAT(APINT_TYPE_PREFIX, 30423) +HANDLE_BAT(APINT_TYPE_PREFIX, 30424) +HANDLE_BAT(APINT_TYPE_PREFIX, 30425) +HANDLE_BAT(APINT_TYPE_PREFIX, 30426) +HANDLE_BAT(APINT_TYPE_PREFIX, 30427) +HANDLE_BAT(APINT_TYPE_PREFIX, 30428) +HANDLE_BAT(APINT_TYPE_PREFIX, 30429) +HANDLE_BAT(APINT_TYPE_PREFIX, 30430) +HANDLE_BAT(APINT_TYPE_PREFIX, 30431) +HANDLE_BAT(APINT_TYPE_PREFIX, 30432) +HANDLE_BAT(APINT_TYPE_PREFIX, 30433) +HANDLE_BAT(APINT_TYPE_PREFIX, 30434) +HANDLE_BAT(APINT_TYPE_PREFIX, 30435) +HANDLE_BAT(APINT_TYPE_PREFIX, 30436) +HANDLE_BAT(APINT_TYPE_PREFIX, 30437) +HANDLE_BAT(APINT_TYPE_PREFIX, 30438) +HANDLE_BAT(APINT_TYPE_PREFIX, 30439) +HANDLE_BAT(APINT_TYPE_PREFIX, 30440) +HANDLE_BAT(APINT_TYPE_PREFIX, 30441) +HANDLE_BAT(APINT_TYPE_PREFIX, 30442) +HANDLE_BAT(APINT_TYPE_PREFIX, 30443) +HANDLE_BAT(APINT_TYPE_PREFIX, 30444) +HANDLE_BAT(APINT_TYPE_PREFIX, 30445) +HANDLE_BAT(APINT_TYPE_PREFIX, 30446) +HANDLE_BAT(APINT_TYPE_PREFIX, 30447) +HANDLE_BAT(APINT_TYPE_PREFIX, 30448) +HANDLE_BAT(APINT_TYPE_PREFIX, 30449) +HANDLE_BAT(APINT_TYPE_PREFIX, 30450) +HANDLE_BAT(APINT_TYPE_PREFIX, 30451) +HANDLE_BAT(APINT_TYPE_PREFIX, 30452) +HANDLE_BAT(APINT_TYPE_PREFIX, 30453) +HANDLE_BAT(APINT_TYPE_PREFIX, 30454) +HANDLE_BAT(APINT_TYPE_PREFIX, 30455) +HANDLE_BAT(APINT_TYPE_PREFIX, 30456) +HANDLE_BAT(APINT_TYPE_PREFIX, 30457) +HANDLE_BAT(APINT_TYPE_PREFIX, 30458) +HANDLE_BAT(APINT_TYPE_PREFIX, 30459) +HANDLE_BAT(APINT_TYPE_PREFIX, 30460) +HANDLE_BAT(APINT_TYPE_PREFIX, 30461) +HANDLE_BAT(APINT_TYPE_PREFIX, 30462) +HANDLE_BAT(APINT_TYPE_PREFIX, 30463) +HANDLE_BAT(APINT_TYPE_PREFIX, 30464) +HANDLE_BAT(APINT_TYPE_PREFIX, 30465) +HANDLE_BAT(APINT_TYPE_PREFIX, 30466) +HANDLE_BAT(APINT_TYPE_PREFIX, 30467) +HANDLE_BAT(APINT_TYPE_PREFIX, 30468) +HANDLE_BAT(APINT_TYPE_PREFIX, 30469) +HANDLE_BAT(APINT_TYPE_PREFIX, 30470) +HANDLE_BAT(APINT_TYPE_PREFIX, 30471) +HANDLE_BAT(APINT_TYPE_PREFIX, 30472) +HANDLE_BAT(APINT_TYPE_PREFIX, 30473) +HANDLE_BAT(APINT_TYPE_PREFIX, 30474) +HANDLE_BAT(APINT_TYPE_PREFIX, 30475) +HANDLE_BAT(APINT_TYPE_PREFIX, 30476) +HANDLE_BAT(APINT_TYPE_PREFIX, 30477) +HANDLE_BAT(APINT_TYPE_PREFIX, 30478) +HANDLE_BAT(APINT_TYPE_PREFIX, 30479) +HANDLE_BAT(APINT_TYPE_PREFIX, 30480) +HANDLE_BAT(APINT_TYPE_PREFIX, 30481) +HANDLE_BAT(APINT_TYPE_PREFIX, 30482) +HANDLE_BAT(APINT_TYPE_PREFIX, 30483) +HANDLE_BAT(APINT_TYPE_PREFIX, 30484) +HANDLE_BAT(APINT_TYPE_PREFIX, 30485) +HANDLE_BAT(APINT_TYPE_PREFIX, 30486) +HANDLE_BAT(APINT_TYPE_PREFIX, 30487) +HANDLE_BAT(APINT_TYPE_PREFIX, 30488) +HANDLE_BAT(APINT_TYPE_PREFIX, 30489) +HANDLE_BAT(APINT_TYPE_PREFIX, 30490) +HANDLE_BAT(APINT_TYPE_PREFIX, 30491) +HANDLE_BAT(APINT_TYPE_PREFIX, 30492) +HANDLE_BAT(APINT_TYPE_PREFIX, 30493) +HANDLE_BAT(APINT_TYPE_PREFIX, 30494) +HANDLE_BAT(APINT_TYPE_PREFIX, 30495) +HANDLE_BAT(APINT_TYPE_PREFIX, 30496) +HANDLE_BAT(APINT_TYPE_PREFIX, 30497) +HANDLE_BAT(APINT_TYPE_PREFIX, 30498) +HANDLE_BAT(APINT_TYPE_PREFIX, 30499) +HANDLE_BAT(APINT_TYPE_PREFIX, 30500) +HANDLE_BAT(APINT_TYPE_PREFIX, 30501) +HANDLE_BAT(APINT_TYPE_PREFIX, 30502) +HANDLE_BAT(APINT_TYPE_PREFIX, 30503) +HANDLE_BAT(APINT_TYPE_PREFIX, 30504) +HANDLE_BAT(APINT_TYPE_PREFIX, 30505) +HANDLE_BAT(APINT_TYPE_PREFIX, 30506) +HANDLE_BAT(APINT_TYPE_PREFIX, 30507) +HANDLE_BAT(APINT_TYPE_PREFIX, 30508) +HANDLE_BAT(APINT_TYPE_PREFIX, 30509) +HANDLE_BAT(APINT_TYPE_PREFIX, 30510) +HANDLE_BAT(APINT_TYPE_PREFIX, 30511) +HANDLE_BAT(APINT_TYPE_PREFIX, 30512) +HANDLE_BAT(APINT_TYPE_PREFIX, 30513) +HANDLE_BAT(APINT_TYPE_PREFIX, 30514) +HANDLE_BAT(APINT_TYPE_PREFIX, 30515) +HANDLE_BAT(APINT_TYPE_PREFIX, 30516) +HANDLE_BAT(APINT_TYPE_PREFIX, 30517) +HANDLE_BAT(APINT_TYPE_PREFIX, 30518) +HANDLE_BAT(APINT_TYPE_PREFIX, 30519) +HANDLE_BAT(APINT_TYPE_PREFIX, 30520) +HANDLE_BAT(APINT_TYPE_PREFIX, 30521) +HANDLE_BAT(APINT_TYPE_PREFIX, 30522) +HANDLE_BAT(APINT_TYPE_PREFIX, 30523) +HANDLE_BAT(APINT_TYPE_PREFIX, 30524) +HANDLE_BAT(APINT_TYPE_PREFIX, 30525) +HANDLE_BAT(APINT_TYPE_PREFIX, 30526) +HANDLE_BAT(APINT_TYPE_PREFIX, 30527) +HANDLE_BAT(APINT_TYPE_PREFIX, 30528) +HANDLE_BAT(APINT_TYPE_PREFIX, 30529) +HANDLE_BAT(APINT_TYPE_PREFIX, 30530) +HANDLE_BAT(APINT_TYPE_PREFIX, 30531) +HANDLE_BAT(APINT_TYPE_PREFIX, 30532) +HANDLE_BAT(APINT_TYPE_PREFIX, 30533) +HANDLE_BAT(APINT_TYPE_PREFIX, 30534) +HANDLE_BAT(APINT_TYPE_PREFIX, 30535) +HANDLE_BAT(APINT_TYPE_PREFIX, 30536) +HANDLE_BAT(APINT_TYPE_PREFIX, 30537) +HANDLE_BAT(APINT_TYPE_PREFIX, 30538) +HANDLE_BAT(APINT_TYPE_PREFIX, 30539) +HANDLE_BAT(APINT_TYPE_PREFIX, 30540) +HANDLE_BAT(APINT_TYPE_PREFIX, 30541) +HANDLE_BAT(APINT_TYPE_PREFIX, 30542) +HANDLE_BAT(APINT_TYPE_PREFIX, 30543) +HANDLE_BAT(APINT_TYPE_PREFIX, 30544) +HANDLE_BAT(APINT_TYPE_PREFIX, 30545) +HANDLE_BAT(APINT_TYPE_PREFIX, 30546) +HANDLE_BAT(APINT_TYPE_PREFIX, 30547) +HANDLE_BAT(APINT_TYPE_PREFIX, 30548) +HANDLE_BAT(APINT_TYPE_PREFIX, 30549) +HANDLE_BAT(APINT_TYPE_PREFIX, 30550) +HANDLE_BAT(APINT_TYPE_PREFIX, 30551) +HANDLE_BAT(APINT_TYPE_PREFIX, 30552) +HANDLE_BAT(APINT_TYPE_PREFIX, 30553) +HANDLE_BAT(APINT_TYPE_PREFIX, 30554) +HANDLE_BAT(APINT_TYPE_PREFIX, 30555) +HANDLE_BAT(APINT_TYPE_PREFIX, 30556) +HANDLE_BAT(APINT_TYPE_PREFIX, 30557) +HANDLE_BAT(APINT_TYPE_PREFIX, 30558) +HANDLE_BAT(APINT_TYPE_PREFIX, 30559) +HANDLE_BAT(APINT_TYPE_PREFIX, 30560) +HANDLE_BAT(APINT_TYPE_PREFIX, 30561) +HANDLE_BAT(APINT_TYPE_PREFIX, 30562) +HANDLE_BAT(APINT_TYPE_PREFIX, 30563) +HANDLE_BAT(APINT_TYPE_PREFIX, 30564) +HANDLE_BAT(APINT_TYPE_PREFIX, 30565) +HANDLE_BAT(APINT_TYPE_PREFIX, 30566) +HANDLE_BAT(APINT_TYPE_PREFIX, 30567) +HANDLE_BAT(APINT_TYPE_PREFIX, 30568) +HANDLE_BAT(APINT_TYPE_PREFIX, 30569) +HANDLE_BAT(APINT_TYPE_PREFIX, 30570) +HANDLE_BAT(APINT_TYPE_PREFIX, 30571) +HANDLE_BAT(APINT_TYPE_PREFIX, 30572) +HANDLE_BAT(APINT_TYPE_PREFIX, 30573) +HANDLE_BAT(APINT_TYPE_PREFIX, 30574) +HANDLE_BAT(APINT_TYPE_PREFIX, 30575) +HANDLE_BAT(APINT_TYPE_PREFIX, 30576) +HANDLE_BAT(APINT_TYPE_PREFIX, 30577) +HANDLE_BAT(APINT_TYPE_PREFIX, 30578) +HANDLE_BAT(APINT_TYPE_PREFIX, 30579) +HANDLE_BAT(APINT_TYPE_PREFIX, 30580) +HANDLE_BAT(APINT_TYPE_PREFIX, 30581) +HANDLE_BAT(APINT_TYPE_PREFIX, 30582) +HANDLE_BAT(APINT_TYPE_PREFIX, 30583) +HANDLE_BAT(APINT_TYPE_PREFIX, 30584) +HANDLE_BAT(APINT_TYPE_PREFIX, 30585) +HANDLE_BAT(APINT_TYPE_PREFIX, 30586) +HANDLE_BAT(APINT_TYPE_PREFIX, 30587) +HANDLE_BAT(APINT_TYPE_PREFIX, 30588) +HANDLE_BAT(APINT_TYPE_PREFIX, 30589) +HANDLE_BAT(APINT_TYPE_PREFIX, 30590) +HANDLE_BAT(APINT_TYPE_PREFIX, 30591) +HANDLE_BAT(APINT_TYPE_PREFIX, 30592) +HANDLE_BAT(APINT_TYPE_PREFIX, 30593) +HANDLE_BAT(APINT_TYPE_PREFIX, 30594) +HANDLE_BAT(APINT_TYPE_PREFIX, 30595) +HANDLE_BAT(APINT_TYPE_PREFIX, 30596) +HANDLE_BAT(APINT_TYPE_PREFIX, 30597) +HANDLE_BAT(APINT_TYPE_PREFIX, 30598) +HANDLE_BAT(APINT_TYPE_PREFIX, 30599) +HANDLE_BAT(APINT_TYPE_PREFIX, 30600) +HANDLE_BAT(APINT_TYPE_PREFIX, 30601) +HANDLE_BAT(APINT_TYPE_PREFIX, 30602) +HANDLE_BAT(APINT_TYPE_PREFIX, 30603) +HANDLE_BAT(APINT_TYPE_PREFIX, 30604) +HANDLE_BAT(APINT_TYPE_PREFIX, 30605) +HANDLE_BAT(APINT_TYPE_PREFIX, 30606) +HANDLE_BAT(APINT_TYPE_PREFIX, 30607) +HANDLE_BAT(APINT_TYPE_PREFIX, 30608) +HANDLE_BAT(APINT_TYPE_PREFIX, 30609) +HANDLE_BAT(APINT_TYPE_PREFIX, 30610) +HANDLE_BAT(APINT_TYPE_PREFIX, 30611) +HANDLE_BAT(APINT_TYPE_PREFIX, 30612) +HANDLE_BAT(APINT_TYPE_PREFIX, 30613) +HANDLE_BAT(APINT_TYPE_PREFIX, 30614) +HANDLE_BAT(APINT_TYPE_PREFIX, 30615) +HANDLE_BAT(APINT_TYPE_PREFIX, 30616) +HANDLE_BAT(APINT_TYPE_PREFIX, 30617) +HANDLE_BAT(APINT_TYPE_PREFIX, 30618) +HANDLE_BAT(APINT_TYPE_PREFIX, 30619) +HANDLE_BAT(APINT_TYPE_PREFIX, 30620) +HANDLE_BAT(APINT_TYPE_PREFIX, 30621) +HANDLE_BAT(APINT_TYPE_PREFIX, 30622) +HANDLE_BAT(APINT_TYPE_PREFIX, 30623) +HANDLE_BAT(APINT_TYPE_PREFIX, 30624) +HANDLE_BAT(APINT_TYPE_PREFIX, 30625) +HANDLE_BAT(APINT_TYPE_PREFIX, 30626) +HANDLE_BAT(APINT_TYPE_PREFIX, 30627) +HANDLE_BAT(APINT_TYPE_PREFIX, 30628) +HANDLE_BAT(APINT_TYPE_PREFIX, 30629) +HANDLE_BAT(APINT_TYPE_PREFIX, 30630) +HANDLE_BAT(APINT_TYPE_PREFIX, 30631) +HANDLE_BAT(APINT_TYPE_PREFIX, 30632) +HANDLE_BAT(APINT_TYPE_PREFIX, 30633) +HANDLE_BAT(APINT_TYPE_PREFIX, 30634) +HANDLE_BAT(APINT_TYPE_PREFIX, 30635) +HANDLE_BAT(APINT_TYPE_PREFIX, 30636) +HANDLE_BAT(APINT_TYPE_PREFIX, 30637) +HANDLE_BAT(APINT_TYPE_PREFIX, 30638) +HANDLE_BAT(APINT_TYPE_PREFIX, 30639) +HANDLE_BAT(APINT_TYPE_PREFIX, 30640) +HANDLE_BAT(APINT_TYPE_PREFIX, 30641) +HANDLE_BAT(APINT_TYPE_PREFIX, 30642) +HANDLE_BAT(APINT_TYPE_PREFIX, 30643) +HANDLE_BAT(APINT_TYPE_PREFIX, 30644) +HANDLE_BAT(APINT_TYPE_PREFIX, 30645) +HANDLE_BAT(APINT_TYPE_PREFIX, 30646) +HANDLE_BAT(APINT_TYPE_PREFIX, 30647) +HANDLE_BAT(APINT_TYPE_PREFIX, 30648) +HANDLE_BAT(APINT_TYPE_PREFIX, 30649) +HANDLE_BAT(APINT_TYPE_PREFIX, 30650) +HANDLE_BAT(APINT_TYPE_PREFIX, 30651) +HANDLE_BAT(APINT_TYPE_PREFIX, 30652) +HANDLE_BAT(APINT_TYPE_PREFIX, 30653) +HANDLE_BAT(APINT_TYPE_PREFIX, 30654) +HANDLE_BAT(APINT_TYPE_PREFIX, 30655) +HANDLE_BAT(APINT_TYPE_PREFIX, 30656) +HANDLE_BAT(APINT_TYPE_PREFIX, 30657) +HANDLE_BAT(APINT_TYPE_PREFIX, 30658) +HANDLE_BAT(APINT_TYPE_PREFIX, 30659) +HANDLE_BAT(APINT_TYPE_PREFIX, 30660) +HANDLE_BAT(APINT_TYPE_PREFIX, 30661) +HANDLE_BAT(APINT_TYPE_PREFIX, 30662) +HANDLE_BAT(APINT_TYPE_PREFIX, 30663) +HANDLE_BAT(APINT_TYPE_PREFIX, 30664) +HANDLE_BAT(APINT_TYPE_PREFIX, 30665) +HANDLE_BAT(APINT_TYPE_PREFIX, 30666) +HANDLE_BAT(APINT_TYPE_PREFIX, 30667) +HANDLE_BAT(APINT_TYPE_PREFIX, 30668) +HANDLE_BAT(APINT_TYPE_PREFIX, 30669) +HANDLE_BAT(APINT_TYPE_PREFIX, 30670) +HANDLE_BAT(APINT_TYPE_PREFIX, 30671) +HANDLE_BAT(APINT_TYPE_PREFIX, 30672) +HANDLE_BAT(APINT_TYPE_PREFIX, 30673) +HANDLE_BAT(APINT_TYPE_PREFIX, 30674) +HANDLE_BAT(APINT_TYPE_PREFIX, 30675) +HANDLE_BAT(APINT_TYPE_PREFIX, 30676) +HANDLE_BAT(APINT_TYPE_PREFIX, 30677) +HANDLE_BAT(APINT_TYPE_PREFIX, 30678) +HANDLE_BAT(APINT_TYPE_PREFIX, 30679) +HANDLE_BAT(APINT_TYPE_PREFIX, 30680) +HANDLE_BAT(APINT_TYPE_PREFIX, 30681) +HANDLE_BAT(APINT_TYPE_PREFIX, 30682) +HANDLE_BAT(APINT_TYPE_PREFIX, 30683) +HANDLE_BAT(APINT_TYPE_PREFIX, 30684) +HANDLE_BAT(APINT_TYPE_PREFIX, 30685) +HANDLE_BAT(APINT_TYPE_PREFIX, 30686) +HANDLE_BAT(APINT_TYPE_PREFIX, 30687) +HANDLE_BAT(APINT_TYPE_PREFIX, 30688) +HANDLE_BAT(APINT_TYPE_PREFIX, 30689) +HANDLE_BAT(APINT_TYPE_PREFIX, 30690) +HANDLE_BAT(APINT_TYPE_PREFIX, 30691) +HANDLE_BAT(APINT_TYPE_PREFIX, 30692) +HANDLE_BAT(APINT_TYPE_PREFIX, 30693) +HANDLE_BAT(APINT_TYPE_PREFIX, 30694) +HANDLE_BAT(APINT_TYPE_PREFIX, 30695) +HANDLE_BAT(APINT_TYPE_PREFIX, 30696) +HANDLE_BAT(APINT_TYPE_PREFIX, 30697) +HANDLE_BAT(APINT_TYPE_PREFIX, 30698) +HANDLE_BAT(APINT_TYPE_PREFIX, 30699) +HANDLE_BAT(APINT_TYPE_PREFIX, 30700) +HANDLE_BAT(APINT_TYPE_PREFIX, 30701) +HANDLE_BAT(APINT_TYPE_PREFIX, 30702) +HANDLE_BAT(APINT_TYPE_PREFIX, 30703) +HANDLE_BAT(APINT_TYPE_PREFIX, 30704) +HANDLE_BAT(APINT_TYPE_PREFIX, 30705) +HANDLE_BAT(APINT_TYPE_PREFIX, 30706) +HANDLE_BAT(APINT_TYPE_PREFIX, 30707) +HANDLE_BAT(APINT_TYPE_PREFIX, 30708) +HANDLE_BAT(APINT_TYPE_PREFIX, 30709) +HANDLE_BAT(APINT_TYPE_PREFIX, 30710) +HANDLE_BAT(APINT_TYPE_PREFIX, 30711) +HANDLE_BAT(APINT_TYPE_PREFIX, 30712) +HANDLE_BAT(APINT_TYPE_PREFIX, 30713) +HANDLE_BAT(APINT_TYPE_PREFIX, 30714) +HANDLE_BAT(APINT_TYPE_PREFIX, 30715) +HANDLE_BAT(APINT_TYPE_PREFIX, 30716) +HANDLE_BAT(APINT_TYPE_PREFIX, 30717) +HANDLE_BAT(APINT_TYPE_PREFIX, 30718) +HANDLE_BAT(APINT_TYPE_PREFIX, 30719) +HANDLE_BAT(APINT_TYPE_PREFIX, 30720) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 30 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 30721) +HANDLE_BAT(, 30722) +HANDLE_BAT(, 30723) +HANDLE_BAT(, 30724) +HANDLE_BAT(, 30725) +HANDLE_BAT(, 30726) +HANDLE_BAT(, 30727) +HANDLE_BAT(, 30728) +HANDLE_BAT(, 30729) +HANDLE_BAT(, 30730) +HANDLE_BAT(, 30731) +HANDLE_BAT(, 30732) +HANDLE_BAT(, 30733) +HANDLE_BAT(, 30734) +HANDLE_BAT(, 30735) +HANDLE_BAT(, 30736) +HANDLE_BAT(, 30737) +HANDLE_BAT(, 30738) +HANDLE_BAT(, 30739) +HANDLE_BAT(, 30740) +HANDLE_BAT(, 30741) +HANDLE_BAT(, 30742) +HANDLE_BAT(, 30743) +HANDLE_BAT(, 30744) +HANDLE_BAT(, 30745) +HANDLE_BAT(, 30746) +HANDLE_BAT(, 30747) +HANDLE_BAT(, 30748) +HANDLE_BAT(, 30749) +HANDLE_BAT(, 30750) +HANDLE_BAT(, 30751) +HANDLE_BAT(, 30752) +HANDLE_BAT(, 30753) +HANDLE_BAT(, 30754) +HANDLE_BAT(, 30755) +HANDLE_BAT(, 30756) +HANDLE_BAT(, 30757) +HANDLE_BAT(, 30758) +HANDLE_BAT(, 30759) +HANDLE_BAT(, 30760) +HANDLE_BAT(, 30761) +HANDLE_BAT(, 30762) +HANDLE_BAT(, 30763) +HANDLE_BAT(, 30764) +HANDLE_BAT(, 30765) +HANDLE_BAT(, 30766) +HANDLE_BAT(, 30767) +HANDLE_BAT(, 30768) +HANDLE_BAT(, 30769) +HANDLE_BAT(, 30770) +HANDLE_BAT(, 30771) +HANDLE_BAT(, 30772) +HANDLE_BAT(, 30773) +HANDLE_BAT(, 30774) +HANDLE_BAT(, 30775) +HANDLE_BAT(, 30776) +HANDLE_BAT(, 30777) +HANDLE_BAT(, 30778) +HANDLE_BAT(, 30779) +HANDLE_BAT(, 30780) +HANDLE_BAT(, 30781) +HANDLE_BAT(, 30782) +HANDLE_BAT(, 30783) +HANDLE_BAT(, 30784) +HANDLE_BAT(, 30785) +HANDLE_BAT(, 30786) +HANDLE_BAT(, 30787) +HANDLE_BAT(, 30788) +HANDLE_BAT(, 30789) +HANDLE_BAT(, 30790) +HANDLE_BAT(, 30791) +HANDLE_BAT(, 30792) +HANDLE_BAT(, 30793) +HANDLE_BAT(, 30794) +HANDLE_BAT(, 30795) +HANDLE_BAT(, 30796) +HANDLE_BAT(, 30797) +HANDLE_BAT(, 30798) +HANDLE_BAT(, 30799) +HANDLE_BAT(, 30800) +HANDLE_BAT(, 30801) +HANDLE_BAT(, 30802) +HANDLE_BAT(, 30803) +HANDLE_BAT(, 30804) +HANDLE_BAT(, 30805) +HANDLE_BAT(, 30806) +HANDLE_BAT(, 30807) +HANDLE_BAT(, 30808) +HANDLE_BAT(, 30809) +HANDLE_BAT(, 30810) +HANDLE_BAT(, 30811) +HANDLE_BAT(, 30812) +HANDLE_BAT(, 30813) +HANDLE_BAT(, 30814) +HANDLE_BAT(, 30815) +HANDLE_BAT(, 30816) +HANDLE_BAT(, 30817) +HANDLE_BAT(, 30818) +HANDLE_BAT(, 30819) +HANDLE_BAT(, 30820) +HANDLE_BAT(, 30821) +HANDLE_BAT(, 30822) +HANDLE_BAT(, 30823) +HANDLE_BAT(, 30824) +HANDLE_BAT(, 30825) +HANDLE_BAT(, 30826) +HANDLE_BAT(, 30827) +HANDLE_BAT(, 30828) +HANDLE_BAT(, 30829) +HANDLE_BAT(, 30830) +HANDLE_BAT(, 30831) +HANDLE_BAT(, 30832) +HANDLE_BAT(, 30833) +HANDLE_BAT(, 30834) +HANDLE_BAT(, 30835) +HANDLE_BAT(, 30836) +HANDLE_BAT(, 30837) +HANDLE_BAT(, 30838) +HANDLE_BAT(, 30839) +HANDLE_BAT(, 30840) +HANDLE_BAT(, 30841) +HANDLE_BAT(, 30842) +HANDLE_BAT(, 30843) +HANDLE_BAT(, 30844) +HANDLE_BAT(, 30845) +HANDLE_BAT(, 30846) +HANDLE_BAT(, 30847) +HANDLE_BAT(, 30848) +HANDLE_BAT(, 30849) +HANDLE_BAT(, 30850) +HANDLE_BAT(, 30851) +HANDLE_BAT(, 30852) +HANDLE_BAT(, 30853) +HANDLE_BAT(, 30854) +HANDLE_BAT(, 30855) +HANDLE_BAT(, 30856) +HANDLE_BAT(, 30857) +HANDLE_BAT(, 30858) +HANDLE_BAT(, 30859) +HANDLE_BAT(, 30860) +HANDLE_BAT(, 30861) +HANDLE_BAT(, 30862) +HANDLE_BAT(, 30863) +HANDLE_BAT(, 30864) +HANDLE_BAT(, 30865) +HANDLE_BAT(, 30866) +HANDLE_BAT(, 30867) +HANDLE_BAT(, 30868) +HANDLE_BAT(, 30869) +HANDLE_BAT(, 30870) +HANDLE_BAT(, 30871) +HANDLE_BAT(, 30872) +HANDLE_BAT(, 30873) +HANDLE_BAT(, 30874) +HANDLE_BAT(, 30875) +HANDLE_BAT(, 30876) +HANDLE_BAT(, 30877) +HANDLE_BAT(, 30878) +HANDLE_BAT(, 30879) +HANDLE_BAT(, 30880) +HANDLE_BAT(, 30881) +HANDLE_BAT(, 30882) +HANDLE_BAT(, 30883) +HANDLE_BAT(, 30884) +HANDLE_BAT(, 30885) +HANDLE_BAT(, 30886) +HANDLE_BAT(, 30887) +HANDLE_BAT(, 30888) +HANDLE_BAT(, 30889) +HANDLE_BAT(, 30890) +HANDLE_BAT(, 30891) +HANDLE_BAT(, 30892) +HANDLE_BAT(, 30893) +HANDLE_BAT(, 30894) +HANDLE_BAT(, 30895) +HANDLE_BAT(, 30896) +HANDLE_BAT(, 30897) +HANDLE_BAT(, 30898) +HANDLE_BAT(, 30899) +HANDLE_BAT(, 30900) +HANDLE_BAT(, 30901) +HANDLE_BAT(, 30902) +HANDLE_BAT(, 30903) +HANDLE_BAT(, 30904) +HANDLE_BAT(, 30905) +HANDLE_BAT(, 30906) +HANDLE_BAT(, 30907) +HANDLE_BAT(, 30908) +HANDLE_BAT(, 30909) +HANDLE_BAT(, 30910) +HANDLE_BAT(, 30911) +HANDLE_BAT(, 30912) +HANDLE_BAT(, 30913) +HANDLE_BAT(, 30914) +HANDLE_BAT(, 30915) +HANDLE_BAT(, 30916) +HANDLE_BAT(, 30917) +HANDLE_BAT(, 30918) +HANDLE_BAT(, 30919) +HANDLE_BAT(, 30920) +HANDLE_BAT(, 30921) +HANDLE_BAT(, 30922) +HANDLE_BAT(, 30923) +HANDLE_BAT(, 30924) +HANDLE_BAT(, 30925) +HANDLE_BAT(, 30926) +HANDLE_BAT(, 30927) +HANDLE_BAT(, 30928) +HANDLE_BAT(, 30929) +HANDLE_BAT(, 30930) +HANDLE_BAT(, 30931) +HANDLE_BAT(, 30932) +HANDLE_BAT(, 30933) +HANDLE_BAT(, 30934) +HANDLE_BAT(, 30935) +HANDLE_BAT(, 30936) +HANDLE_BAT(, 30937) +HANDLE_BAT(, 30938) +HANDLE_BAT(, 30939) +HANDLE_BAT(, 30940) +HANDLE_BAT(, 30941) +HANDLE_BAT(, 30942) +HANDLE_BAT(, 30943) +HANDLE_BAT(, 30944) +HANDLE_BAT(, 30945) +HANDLE_BAT(, 30946) +HANDLE_BAT(, 30947) +HANDLE_BAT(, 30948) +HANDLE_BAT(, 30949) +HANDLE_BAT(, 30950) +HANDLE_BAT(, 30951) +HANDLE_BAT(, 30952) +HANDLE_BAT(, 30953) +HANDLE_BAT(, 30954) +HANDLE_BAT(, 30955) +HANDLE_BAT(, 30956) +HANDLE_BAT(, 30957) +HANDLE_BAT(, 30958) +HANDLE_BAT(, 30959) +HANDLE_BAT(, 30960) +HANDLE_BAT(, 30961) +HANDLE_BAT(, 30962) +HANDLE_BAT(, 30963) +HANDLE_BAT(, 30964) +HANDLE_BAT(, 30965) +HANDLE_BAT(, 30966) +HANDLE_BAT(, 30967) +HANDLE_BAT(, 30968) +HANDLE_BAT(, 30969) +HANDLE_BAT(, 30970) +HANDLE_BAT(, 30971) +HANDLE_BAT(, 30972) +HANDLE_BAT(, 30973) +HANDLE_BAT(, 30974) +HANDLE_BAT(, 30975) +HANDLE_BAT(, 30976) +HANDLE_BAT(, 30977) +HANDLE_BAT(, 30978) +HANDLE_BAT(, 30979) +HANDLE_BAT(, 30980) +HANDLE_BAT(, 30981) +HANDLE_BAT(, 30982) +HANDLE_BAT(, 30983) +HANDLE_BAT(, 30984) +HANDLE_BAT(, 30985) +HANDLE_BAT(, 30986) +HANDLE_BAT(, 30987) +HANDLE_BAT(, 30988) +HANDLE_BAT(, 30989) +HANDLE_BAT(, 30990) +HANDLE_BAT(, 30991) +HANDLE_BAT(, 30992) +HANDLE_BAT(, 30993) +HANDLE_BAT(, 30994) +HANDLE_BAT(, 30995) +HANDLE_BAT(, 30996) +HANDLE_BAT(, 30997) +HANDLE_BAT(, 30998) +HANDLE_BAT(, 30999) +HANDLE_BAT(, 31000) +HANDLE_BAT(, 31001) +HANDLE_BAT(, 31002) +HANDLE_BAT(, 31003) +HANDLE_BAT(, 31004) +HANDLE_BAT(, 31005) +HANDLE_BAT(, 31006) +HANDLE_BAT(, 31007) +HANDLE_BAT(, 31008) +HANDLE_BAT(, 31009) +HANDLE_BAT(, 31010) +HANDLE_BAT(, 31011) +HANDLE_BAT(, 31012) +HANDLE_BAT(, 31013) +HANDLE_BAT(, 31014) +HANDLE_BAT(, 31015) +HANDLE_BAT(, 31016) +HANDLE_BAT(, 31017) +HANDLE_BAT(, 31018) +HANDLE_BAT(, 31019) +HANDLE_BAT(, 31020) +HANDLE_BAT(, 31021) +HANDLE_BAT(, 31022) +HANDLE_BAT(, 31023) +HANDLE_BAT(, 31024) +HANDLE_BAT(, 31025) +HANDLE_BAT(, 31026) +HANDLE_BAT(, 31027) +HANDLE_BAT(, 31028) +HANDLE_BAT(, 31029) +HANDLE_BAT(, 31030) +HANDLE_BAT(, 31031) +HANDLE_BAT(, 31032) +HANDLE_BAT(, 31033) +HANDLE_BAT(, 31034) +HANDLE_BAT(, 31035) +HANDLE_BAT(, 31036) +HANDLE_BAT(, 31037) +HANDLE_BAT(, 31038) +HANDLE_BAT(, 31039) +HANDLE_BAT(, 31040) +HANDLE_BAT(, 31041) +HANDLE_BAT(, 31042) +HANDLE_BAT(, 31043) +HANDLE_BAT(, 31044) +HANDLE_BAT(, 31045) +HANDLE_BAT(, 31046) +HANDLE_BAT(, 31047) +HANDLE_BAT(, 31048) +HANDLE_BAT(, 31049) +HANDLE_BAT(, 31050) +HANDLE_BAT(, 31051) +HANDLE_BAT(, 31052) +HANDLE_BAT(, 31053) +HANDLE_BAT(, 31054) +HANDLE_BAT(, 31055) +HANDLE_BAT(, 31056) +HANDLE_BAT(, 31057) +HANDLE_BAT(, 31058) +HANDLE_BAT(, 31059) +HANDLE_BAT(, 31060) +HANDLE_BAT(, 31061) +HANDLE_BAT(, 31062) +HANDLE_BAT(, 31063) +HANDLE_BAT(, 31064) +HANDLE_BAT(, 31065) +HANDLE_BAT(, 31066) +HANDLE_BAT(, 31067) +HANDLE_BAT(, 31068) +HANDLE_BAT(, 31069) +HANDLE_BAT(, 31070) +HANDLE_BAT(, 31071) +HANDLE_BAT(, 31072) +HANDLE_BAT(, 31073) +HANDLE_BAT(, 31074) +HANDLE_BAT(, 31075) +HANDLE_BAT(, 31076) +HANDLE_BAT(, 31077) +HANDLE_BAT(, 31078) +HANDLE_BAT(, 31079) +HANDLE_BAT(, 31080) +HANDLE_BAT(, 31081) +HANDLE_BAT(, 31082) +HANDLE_BAT(, 31083) +HANDLE_BAT(, 31084) +HANDLE_BAT(, 31085) +HANDLE_BAT(, 31086) +HANDLE_BAT(, 31087) +HANDLE_BAT(, 31088) +HANDLE_BAT(, 31089) +HANDLE_BAT(, 31090) +HANDLE_BAT(, 31091) +HANDLE_BAT(, 31092) +HANDLE_BAT(, 31093) +HANDLE_BAT(, 31094) +HANDLE_BAT(, 31095) +HANDLE_BAT(, 31096) +HANDLE_BAT(, 31097) +HANDLE_BAT(, 31098) +HANDLE_BAT(, 31099) +HANDLE_BAT(, 31100) +HANDLE_BAT(, 31101) +HANDLE_BAT(, 31102) +HANDLE_BAT(, 31103) +HANDLE_BAT(, 31104) +HANDLE_BAT(, 31105) +HANDLE_BAT(, 31106) +HANDLE_BAT(, 31107) +HANDLE_BAT(, 31108) +HANDLE_BAT(, 31109) +HANDLE_BAT(, 31110) +HANDLE_BAT(, 31111) +HANDLE_BAT(, 31112) +HANDLE_BAT(, 31113) +HANDLE_BAT(, 31114) +HANDLE_BAT(, 31115) +HANDLE_BAT(, 31116) +HANDLE_BAT(, 31117) +HANDLE_BAT(, 31118) +HANDLE_BAT(, 31119) +HANDLE_BAT(, 31120) +HANDLE_BAT(, 31121) +HANDLE_BAT(, 31122) +HANDLE_BAT(, 31123) +HANDLE_BAT(, 31124) +HANDLE_BAT(, 31125) +HANDLE_BAT(, 31126) +HANDLE_BAT(, 31127) +HANDLE_BAT(, 31128) +HANDLE_BAT(, 31129) +HANDLE_BAT(, 31130) +HANDLE_BAT(, 31131) +HANDLE_BAT(, 31132) +HANDLE_BAT(, 31133) +HANDLE_BAT(, 31134) +HANDLE_BAT(, 31135) +HANDLE_BAT(, 31136) +HANDLE_BAT(, 31137) +HANDLE_BAT(, 31138) +HANDLE_BAT(, 31139) +HANDLE_BAT(, 31140) +HANDLE_BAT(, 31141) +HANDLE_BAT(, 31142) +HANDLE_BAT(, 31143) +HANDLE_BAT(, 31144) +HANDLE_BAT(, 31145) +HANDLE_BAT(, 31146) +HANDLE_BAT(, 31147) +HANDLE_BAT(, 31148) +HANDLE_BAT(, 31149) +HANDLE_BAT(, 31150) +HANDLE_BAT(, 31151) +HANDLE_BAT(, 31152) +HANDLE_BAT(, 31153) +HANDLE_BAT(, 31154) +HANDLE_BAT(, 31155) +HANDLE_BAT(, 31156) +HANDLE_BAT(, 31157) +HANDLE_BAT(, 31158) +HANDLE_BAT(, 31159) +HANDLE_BAT(, 31160) +HANDLE_BAT(, 31161) +HANDLE_BAT(, 31162) +HANDLE_BAT(, 31163) +HANDLE_BAT(, 31164) +HANDLE_BAT(, 31165) +HANDLE_BAT(, 31166) +HANDLE_BAT(, 31167) +HANDLE_BAT(, 31168) +HANDLE_BAT(, 31169) +HANDLE_BAT(, 31170) +HANDLE_BAT(, 31171) +HANDLE_BAT(, 31172) +HANDLE_BAT(, 31173) +HANDLE_BAT(, 31174) +HANDLE_BAT(, 31175) +HANDLE_BAT(, 31176) +HANDLE_BAT(, 31177) +HANDLE_BAT(, 31178) +HANDLE_BAT(, 31179) +HANDLE_BAT(, 31180) +HANDLE_BAT(, 31181) +HANDLE_BAT(, 31182) +HANDLE_BAT(, 31183) +HANDLE_BAT(, 31184) +HANDLE_BAT(, 31185) +HANDLE_BAT(, 31186) +HANDLE_BAT(, 31187) +HANDLE_BAT(, 31188) +HANDLE_BAT(, 31189) +HANDLE_BAT(, 31190) +HANDLE_BAT(, 31191) +HANDLE_BAT(, 31192) +HANDLE_BAT(, 31193) +HANDLE_BAT(, 31194) +HANDLE_BAT(, 31195) +HANDLE_BAT(, 31196) +HANDLE_BAT(, 31197) +HANDLE_BAT(, 31198) +HANDLE_BAT(, 31199) +HANDLE_BAT(, 31200) +HANDLE_BAT(, 31201) +HANDLE_BAT(, 31202) +HANDLE_BAT(, 31203) +HANDLE_BAT(, 31204) +HANDLE_BAT(, 31205) +HANDLE_BAT(, 31206) +HANDLE_BAT(, 31207) +HANDLE_BAT(, 31208) +HANDLE_BAT(, 31209) +HANDLE_BAT(, 31210) +HANDLE_BAT(, 31211) +HANDLE_BAT(, 31212) +HANDLE_BAT(, 31213) +HANDLE_BAT(, 31214) +HANDLE_BAT(, 31215) +HANDLE_BAT(, 31216) +HANDLE_BAT(, 31217) +HANDLE_BAT(, 31218) +HANDLE_BAT(, 31219) +HANDLE_BAT(, 31220) +HANDLE_BAT(, 31221) +HANDLE_BAT(, 31222) +HANDLE_BAT(, 31223) +HANDLE_BAT(, 31224) +HANDLE_BAT(, 31225) +HANDLE_BAT(, 31226) +HANDLE_BAT(, 31227) +HANDLE_BAT(, 31228) +HANDLE_BAT(, 31229) +HANDLE_BAT(, 31230) +HANDLE_BAT(, 31231) +HANDLE_BAT(, 31232) +HANDLE_BAT(, 31233) +HANDLE_BAT(, 31234) +HANDLE_BAT(, 31235) +HANDLE_BAT(, 31236) +HANDLE_BAT(, 31237) +HANDLE_BAT(, 31238) +HANDLE_BAT(, 31239) +HANDLE_BAT(, 31240) +HANDLE_BAT(, 31241) +HANDLE_BAT(, 31242) +HANDLE_BAT(, 31243) +HANDLE_BAT(, 31244) +HANDLE_BAT(, 31245) +HANDLE_BAT(, 31246) +HANDLE_BAT(, 31247) +HANDLE_BAT(, 31248) +HANDLE_BAT(, 31249) +HANDLE_BAT(, 31250) +HANDLE_BAT(, 31251) +HANDLE_BAT(, 31252) +HANDLE_BAT(, 31253) +HANDLE_BAT(, 31254) +HANDLE_BAT(, 31255) +HANDLE_BAT(, 31256) +HANDLE_BAT(, 31257) +HANDLE_BAT(, 31258) +HANDLE_BAT(, 31259) +HANDLE_BAT(, 31260) +HANDLE_BAT(, 31261) +HANDLE_BAT(, 31262) +HANDLE_BAT(, 31263) +HANDLE_BAT(, 31264) +HANDLE_BAT(, 31265) +HANDLE_BAT(, 31266) +HANDLE_BAT(, 31267) +HANDLE_BAT(, 31268) +HANDLE_BAT(, 31269) +HANDLE_BAT(, 31270) +HANDLE_BAT(, 31271) +HANDLE_BAT(, 31272) +HANDLE_BAT(, 31273) +HANDLE_BAT(, 31274) +HANDLE_BAT(, 31275) +HANDLE_BAT(, 31276) +HANDLE_BAT(, 31277) +HANDLE_BAT(, 31278) +HANDLE_BAT(, 31279) +HANDLE_BAT(, 31280) +HANDLE_BAT(, 31281) +HANDLE_BAT(, 31282) +HANDLE_BAT(, 31283) +HANDLE_BAT(, 31284) +HANDLE_BAT(, 31285) +HANDLE_BAT(, 31286) +HANDLE_BAT(, 31287) +HANDLE_BAT(, 31288) +HANDLE_BAT(, 31289) +HANDLE_BAT(, 31290) +HANDLE_BAT(, 31291) +HANDLE_BAT(, 31292) +HANDLE_BAT(, 31293) +HANDLE_BAT(, 31294) +HANDLE_BAT(, 31295) +HANDLE_BAT(, 31296) +HANDLE_BAT(, 31297) +HANDLE_BAT(, 31298) +HANDLE_BAT(, 31299) +HANDLE_BAT(, 31300) +HANDLE_BAT(, 31301) +HANDLE_BAT(, 31302) +HANDLE_BAT(, 31303) +HANDLE_BAT(, 31304) +HANDLE_BAT(, 31305) +HANDLE_BAT(, 31306) +HANDLE_BAT(, 31307) +HANDLE_BAT(, 31308) +HANDLE_BAT(, 31309) +HANDLE_BAT(, 31310) +HANDLE_BAT(, 31311) +HANDLE_BAT(, 31312) +HANDLE_BAT(, 31313) +HANDLE_BAT(, 31314) +HANDLE_BAT(, 31315) +HANDLE_BAT(, 31316) +HANDLE_BAT(, 31317) +HANDLE_BAT(, 31318) +HANDLE_BAT(, 31319) +HANDLE_BAT(, 31320) +HANDLE_BAT(, 31321) +HANDLE_BAT(, 31322) +HANDLE_BAT(, 31323) +HANDLE_BAT(, 31324) +HANDLE_BAT(, 31325) +HANDLE_BAT(, 31326) +HANDLE_BAT(, 31327) +HANDLE_BAT(, 31328) +HANDLE_BAT(, 31329) +HANDLE_BAT(, 31330) +HANDLE_BAT(, 31331) +HANDLE_BAT(, 31332) +HANDLE_BAT(, 31333) +HANDLE_BAT(, 31334) +HANDLE_BAT(, 31335) +HANDLE_BAT(, 31336) +HANDLE_BAT(, 31337) +HANDLE_BAT(, 31338) +HANDLE_BAT(, 31339) +HANDLE_BAT(, 31340) +HANDLE_BAT(, 31341) +HANDLE_BAT(, 31342) +HANDLE_BAT(, 31343) +HANDLE_BAT(, 31344) +HANDLE_BAT(, 31345) +HANDLE_BAT(, 31346) +HANDLE_BAT(, 31347) +HANDLE_BAT(, 31348) +HANDLE_BAT(, 31349) +HANDLE_BAT(, 31350) +HANDLE_BAT(, 31351) +HANDLE_BAT(, 31352) +HANDLE_BAT(, 31353) +HANDLE_BAT(, 31354) +HANDLE_BAT(, 31355) +HANDLE_BAT(, 31356) +HANDLE_BAT(, 31357) +HANDLE_BAT(, 31358) +HANDLE_BAT(, 31359) +HANDLE_BAT(, 31360) +HANDLE_BAT(, 31361) +HANDLE_BAT(, 31362) +HANDLE_BAT(, 31363) +HANDLE_BAT(, 31364) +HANDLE_BAT(, 31365) +HANDLE_BAT(, 31366) +HANDLE_BAT(, 31367) +HANDLE_BAT(, 31368) +HANDLE_BAT(, 31369) +HANDLE_BAT(, 31370) +HANDLE_BAT(, 31371) +HANDLE_BAT(, 31372) +HANDLE_BAT(, 31373) +HANDLE_BAT(, 31374) +HANDLE_BAT(, 31375) +HANDLE_BAT(, 31376) +HANDLE_BAT(, 31377) +HANDLE_BAT(, 31378) +HANDLE_BAT(, 31379) +HANDLE_BAT(, 31380) +HANDLE_BAT(, 31381) +HANDLE_BAT(, 31382) +HANDLE_BAT(, 31383) +HANDLE_BAT(, 31384) +HANDLE_BAT(, 31385) +HANDLE_BAT(, 31386) +HANDLE_BAT(, 31387) +HANDLE_BAT(, 31388) +HANDLE_BAT(, 31389) +HANDLE_BAT(, 31390) +HANDLE_BAT(, 31391) +HANDLE_BAT(, 31392) +HANDLE_BAT(, 31393) +HANDLE_BAT(, 31394) +HANDLE_BAT(, 31395) +HANDLE_BAT(, 31396) +HANDLE_BAT(, 31397) +HANDLE_BAT(, 31398) +HANDLE_BAT(, 31399) +HANDLE_BAT(, 31400) +HANDLE_BAT(, 31401) +HANDLE_BAT(, 31402) +HANDLE_BAT(, 31403) +HANDLE_BAT(, 31404) +HANDLE_BAT(, 31405) +HANDLE_BAT(, 31406) +HANDLE_BAT(, 31407) +HANDLE_BAT(, 31408) +HANDLE_BAT(, 31409) +HANDLE_BAT(, 31410) +HANDLE_BAT(, 31411) +HANDLE_BAT(, 31412) +HANDLE_BAT(, 31413) +HANDLE_BAT(, 31414) +HANDLE_BAT(, 31415) +HANDLE_BAT(, 31416) +HANDLE_BAT(, 31417) +HANDLE_BAT(, 31418) +HANDLE_BAT(, 31419) +HANDLE_BAT(, 31420) +HANDLE_BAT(, 31421) +HANDLE_BAT(, 31422) +HANDLE_BAT(, 31423) +HANDLE_BAT(, 31424) +HANDLE_BAT(, 31425) +HANDLE_BAT(, 31426) +HANDLE_BAT(, 31427) +HANDLE_BAT(, 31428) +HANDLE_BAT(, 31429) +HANDLE_BAT(, 31430) +HANDLE_BAT(, 31431) +HANDLE_BAT(, 31432) +HANDLE_BAT(, 31433) +HANDLE_BAT(, 31434) +HANDLE_BAT(, 31435) +HANDLE_BAT(, 31436) +HANDLE_BAT(, 31437) +HANDLE_BAT(, 31438) +HANDLE_BAT(, 31439) +HANDLE_BAT(, 31440) +HANDLE_BAT(, 31441) +HANDLE_BAT(, 31442) +HANDLE_BAT(, 31443) +HANDLE_BAT(, 31444) +HANDLE_BAT(, 31445) +HANDLE_BAT(, 31446) +HANDLE_BAT(, 31447) +HANDLE_BAT(, 31448) +HANDLE_BAT(, 31449) +HANDLE_BAT(, 31450) +HANDLE_BAT(, 31451) +HANDLE_BAT(, 31452) +HANDLE_BAT(, 31453) +HANDLE_BAT(, 31454) +HANDLE_BAT(, 31455) +HANDLE_BAT(, 31456) +HANDLE_BAT(, 31457) +HANDLE_BAT(, 31458) +HANDLE_BAT(, 31459) +HANDLE_BAT(, 31460) +HANDLE_BAT(, 31461) +HANDLE_BAT(, 31462) +HANDLE_BAT(, 31463) +HANDLE_BAT(, 31464) +HANDLE_BAT(, 31465) +HANDLE_BAT(, 31466) +HANDLE_BAT(, 31467) +HANDLE_BAT(, 31468) +HANDLE_BAT(, 31469) +HANDLE_BAT(, 31470) +HANDLE_BAT(, 31471) +HANDLE_BAT(, 31472) +HANDLE_BAT(, 31473) +HANDLE_BAT(, 31474) +HANDLE_BAT(, 31475) +HANDLE_BAT(, 31476) +HANDLE_BAT(, 31477) +HANDLE_BAT(, 31478) +HANDLE_BAT(, 31479) +HANDLE_BAT(, 31480) +HANDLE_BAT(, 31481) +HANDLE_BAT(, 31482) +HANDLE_BAT(, 31483) +HANDLE_BAT(, 31484) +HANDLE_BAT(, 31485) +HANDLE_BAT(, 31486) +HANDLE_BAT(, 31487) +HANDLE_BAT(, 31488) +HANDLE_BAT(, 31489) +HANDLE_BAT(, 31490) +HANDLE_BAT(, 31491) +HANDLE_BAT(, 31492) +HANDLE_BAT(, 31493) +HANDLE_BAT(, 31494) +HANDLE_BAT(, 31495) +HANDLE_BAT(, 31496) +HANDLE_BAT(, 31497) +HANDLE_BAT(, 31498) +HANDLE_BAT(, 31499) +HANDLE_BAT(, 31500) +HANDLE_BAT(, 31501) +HANDLE_BAT(, 31502) +HANDLE_BAT(, 31503) +HANDLE_BAT(, 31504) +HANDLE_BAT(, 31505) +HANDLE_BAT(, 31506) +HANDLE_BAT(, 31507) +HANDLE_BAT(, 31508) +HANDLE_BAT(, 31509) +HANDLE_BAT(, 31510) +HANDLE_BAT(, 31511) +HANDLE_BAT(, 31512) +HANDLE_BAT(, 31513) +HANDLE_BAT(, 31514) +HANDLE_BAT(, 31515) +HANDLE_BAT(, 31516) +HANDLE_BAT(, 31517) +HANDLE_BAT(, 31518) +HANDLE_BAT(, 31519) +HANDLE_BAT(, 31520) +HANDLE_BAT(, 31521) +HANDLE_BAT(, 31522) +HANDLE_BAT(, 31523) +HANDLE_BAT(, 31524) +HANDLE_BAT(, 31525) +HANDLE_BAT(, 31526) +HANDLE_BAT(, 31527) +HANDLE_BAT(, 31528) +HANDLE_BAT(, 31529) +HANDLE_BAT(, 31530) +HANDLE_BAT(, 31531) +HANDLE_BAT(, 31532) +HANDLE_BAT(, 31533) +HANDLE_BAT(, 31534) +HANDLE_BAT(, 31535) +HANDLE_BAT(, 31536) +HANDLE_BAT(, 31537) +HANDLE_BAT(, 31538) +HANDLE_BAT(, 31539) +HANDLE_BAT(, 31540) +HANDLE_BAT(, 31541) +HANDLE_BAT(, 31542) +HANDLE_BAT(, 31543) +HANDLE_BAT(, 31544) +HANDLE_BAT(, 31545) +HANDLE_BAT(, 31546) +HANDLE_BAT(, 31547) +HANDLE_BAT(, 31548) +HANDLE_BAT(, 31549) +HANDLE_BAT(, 31550) +HANDLE_BAT(, 31551) +HANDLE_BAT(, 31552) +HANDLE_BAT(, 31553) +HANDLE_BAT(, 31554) +HANDLE_BAT(, 31555) +HANDLE_BAT(, 31556) +HANDLE_BAT(, 31557) +HANDLE_BAT(, 31558) +HANDLE_BAT(, 31559) +HANDLE_BAT(, 31560) +HANDLE_BAT(, 31561) +HANDLE_BAT(, 31562) +HANDLE_BAT(, 31563) +HANDLE_BAT(, 31564) +HANDLE_BAT(, 31565) +HANDLE_BAT(, 31566) +HANDLE_BAT(, 31567) +HANDLE_BAT(, 31568) +HANDLE_BAT(, 31569) +HANDLE_BAT(, 31570) +HANDLE_BAT(, 31571) +HANDLE_BAT(, 31572) +HANDLE_BAT(, 31573) +HANDLE_BAT(, 31574) +HANDLE_BAT(, 31575) +HANDLE_BAT(, 31576) +HANDLE_BAT(, 31577) +HANDLE_BAT(, 31578) +HANDLE_BAT(, 31579) +HANDLE_BAT(, 31580) +HANDLE_BAT(, 31581) +HANDLE_BAT(, 31582) +HANDLE_BAT(, 31583) +HANDLE_BAT(, 31584) +HANDLE_BAT(, 31585) +HANDLE_BAT(, 31586) +HANDLE_BAT(, 31587) +HANDLE_BAT(, 31588) +HANDLE_BAT(, 31589) +HANDLE_BAT(, 31590) +HANDLE_BAT(, 31591) +HANDLE_BAT(, 31592) +HANDLE_BAT(, 31593) +HANDLE_BAT(, 31594) +HANDLE_BAT(, 31595) +HANDLE_BAT(, 31596) +HANDLE_BAT(, 31597) +HANDLE_BAT(, 31598) +HANDLE_BAT(, 31599) +HANDLE_BAT(, 31600) +HANDLE_BAT(, 31601) +HANDLE_BAT(, 31602) +HANDLE_BAT(, 31603) +HANDLE_BAT(, 31604) +HANDLE_BAT(, 31605) +HANDLE_BAT(, 31606) +HANDLE_BAT(, 31607) +HANDLE_BAT(, 31608) +HANDLE_BAT(, 31609) +HANDLE_BAT(, 31610) +HANDLE_BAT(, 31611) +HANDLE_BAT(, 31612) +HANDLE_BAT(, 31613) +HANDLE_BAT(, 31614) +HANDLE_BAT(, 31615) +HANDLE_BAT(, 31616) +HANDLE_BAT(, 31617) +HANDLE_BAT(, 31618) +HANDLE_BAT(, 31619) +HANDLE_BAT(, 31620) +HANDLE_BAT(, 31621) +HANDLE_BAT(, 31622) +HANDLE_BAT(, 31623) +HANDLE_BAT(, 31624) +HANDLE_BAT(, 31625) +HANDLE_BAT(, 31626) +HANDLE_BAT(, 31627) +HANDLE_BAT(, 31628) +HANDLE_BAT(, 31629) +HANDLE_BAT(, 31630) +HANDLE_BAT(, 31631) +HANDLE_BAT(, 31632) +HANDLE_BAT(, 31633) +HANDLE_BAT(, 31634) +HANDLE_BAT(, 31635) +HANDLE_BAT(, 31636) +HANDLE_BAT(, 31637) +HANDLE_BAT(, 31638) +HANDLE_BAT(, 31639) +HANDLE_BAT(, 31640) +HANDLE_BAT(, 31641) +HANDLE_BAT(, 31642) +HANDLE_BAT(, 31643) +HANDLE_BAT(, 31644) +HANDLE_BAT(, 31645) +HANDLE_BAT(, 31646) +HANDLE_BAT(, 31647) +HANDLE_BAT(, 31648) +HANDLE_BAT(, 31649) +HANDLE_BAT(, 31650) +HANDLE_BAT(, 31651) +HANDLE_BAT(, 31652) +HANDLE_BAT(, 31653) +HANDLE_BAT(, 31654) +HANDLE_BAT(, 31655) +HANDLE_BAT(, 31656) +HANDLE_BAT(, 31657) +HANDLE_BAT(, 31658) +HANDLE_BAT(, 31659) +HANDLE_BAT(, 31660) +HANDLE_BAT(, 31661) +HANDLE_BAT(, 31662) +HANDLE_BAT(, 31663) +HANDLE_BAT(, 31664) +HANDLE_BAT(, 31665) +HANDLE_BAT(, 31666) +HANDLE_BAT(, 31667) +HANDLE_BAT(, 31668) +HANDLE_BAT(, 31669) +HANDLE_BAT(, 31670) +HANDLE_BAT(, 31671) +HANDLE_BAT(, 31672) +HANDLE_BAT(, 31673) +HANDLE_BAT(, 31674) +HANDLE_BAT(, 31675) +HANDLE_BAT(, 31676) +HANDLE_BAT(, 31677) +HANDLE_BAT(, 31678) +HANDLE_BAT(, 31679) +HANDLE_BAT(, 31680) +HANDLE_BAT(, 31681) +HANDLE_BAT(, 31682) +HANDLE_BAT(, 31683) +HANDLE_BAT(, 31684) +HANDLE_BAT(, 31685) +HANDLE_BAT(, 31686) +HANDLE_BAT(, 31687) +HANDLE_BAT(, 31688) +HANDLE_BAT(, 31689) +HANDLE_BAT(, 31690) +HANDLE_BAT(, 31691) +HANDLE_BAT(, 31692) +HANDLE_BAT(, 31693) +HANDLE_BAT(, 31694) +HANDLE_BAT(, 31695) +HANDLE_BAT(, 31696) +HANDLE_BAT(, 31697) +HANDLE_BAT(, 31698) +HANDLE_BAT(, 31699) +HANDLE_BAT(, 31700) +HANDLE_BAT(, 31701) +HANDLE_BAT(, 31702) +HANDLE_BAT(, 31703) +HANDLE_BAT(, 31704) +HANDLE_BAT(, 31705) +HANDLE_BAT(, 31706) +HANDLE_BAT(, 31707) +HANDLE_BAT(, 31708) +HANDLE_BAT(, 31709) +HANDLE_BAT(, 31710) +HANDLE_BAT(, 31711) +HANDLE_BAT(, 31712) +HANDLE_BAT(, 31713) +HANDLE_BAT(, 31714) +HANDLE_BAT(, 31715) +HANDLE_BAT(, 31716) +HANDLE_BAT(, 31717) +HANDLE_BAT(, 31718) +HANDLE_BAT(, 31719) +HANDLE_BAT(, 31720) +HANDLE_BAT(, 31721) +HANDLE_BAT(, 31722) +HANDLE_BAT(, 31723) +HANDLE_BAT(, 31724) +HANDLE_BAT(, 31725) +HANDLE_BAT(, 31726) +HANDLE_BAT(, 31727) +HANDLE_BAT(, 31728) +HANDLE_BAT(, 31729) +HANDLE_BAT(, 31730) +HANDLE_BAT(, 31731) +HANDLE_BAT(, 31732) +HANDLE_BAT(, 31733) +HANDLE_BAT(, 31734) +HANDLE_BAT(, 31735) +HANDLE_BAT(, 31736) +HANDLE_BAT(, 31737) +HANDLE_BAT(, 31738) +HANDLE_BAT(, 31739) +HANDLE_BAT(, 31740) +HANDLE_BAT(, 31741) +HANDLE_BAT(, 31742) +HANDLE_BAT(, 31743) +HANDLE_BAT(, 31744) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 30721) +HANDLE_BAT(APINT_TYPE_PREFIX, 30722) +HANDLE_BAT(APINT_TYPE_PREFIX, 30723) +HANDLE_BAT(APINT_TYPE_PREFIX, 30724) +HANDLE_BAT(APINT_TYPE_PREFIX, 30725) +HANDLE_BAT(APINT_TYPE_PREFIX, 30726) +HANDLE_BAT(APINT_TYPE_PREFIX, 30727) +HANDLE_BAT(APINT_TYPE_PREFIX, 30728) +HANDLE_BAT(APINT_TYPE_PREFIX, 30729) +HANDLE_BAT(APINT_TYPE_PREFIX, 30730) +HANDLE_BAT(APINT_TYPE_PREFIX, 30731) +HANDLE_BAT(APINT_TYPE_PREFIX, 30732) +HANDLE_BAT(APINT_TYPE_PREFIX, 30733) +HANDLE_BAT(APINT_TYPE_PREFIX, 30734) +HANDLE_BAT(APINT_TYPE_PREFIX, 30735) +HANDLE_BAT(APINT_TYPE_PREFIX, 30736) +HANDLE_BAT(APINT_TYPE_PREFIX, 30737) +HANDLE_BAT(APINT_TYPE_PREFIX, 30738) +HANDLE_BAT(APINT_TYPE_PREFIX, 30739) +HANDLE_BAT(APINT_TYPE_PREFIX, 30740) +HANDLE_BAT(APINT_TYPE_PREFIX, 30741) +HANDLE_BAT(APINT_TYPE_PREFIX, 30742) +HANDLE_BAT(APINT_TYPE_PREFIX, 30743) +HANDLE_BAT(APINT_TYPE_PREFIX, 30744) +HANDLE_BAT(APINT_TYPE_PREFIX, 30745) +HANDLE_BAT(APINT_TYPE_PREFIX, 30746) +HANDLE_BAT(APINT_TYPE_PREFIX, 30747) +HANDLE_BAT(APINT_TYPE_PREFIX, 30748) +HANDLE_BAT(APINT_TYPE_PREFIX, 30749) +HANDLE_BAT(APINT_TYPE_PREFIX, 30750) +HANDLE_BAT(APINT_TYPE_PREFIX, 30751) +HANDLE_BAT(APINT_TYPE_PREFIX, 30752) +HANDLE_BAT(APINT_TYPE_PREFIX, 30753) +HANDLE_BAT(APINT_TYPE_PREFIX, 30754) +HANDLE_BAT(APINT_TYPE_PREFIX, 30755) +HANDLE_BAT(APINT_TYPE_PREFIX, 30756) +HANDLE_BAT(APINT_TYPE_PREFIX, 30757) +HANDLE_BAT(APINT_TYPE_PREFIX, 30758) +HANDLE_BAT(APINT_TYPE_PREFIX, 30759) +HANDLE_BAT(APINT_TYPE_PREFIX, 30760) +HANDLE_BAT(APINT_TYPE_PREFIX, 30761) +HANDLE_BAT(APINT_TYPE_PREFIX, 30762) +HANDLE_BAT(APINT_TYPE_PREFIX, 30763) +HANDLE_BAT(APINT_TYPE_PREFIX, 30764) +HANDLE_BAT(APINT_TYPE_PREFIX, 30765) +HANDLE_BAT(APINT_TYPE_PREFIX, 30766) +HANDLE_BAT(APINT_TYPE_PREFIX, 30767) +HANDLE_BAT(APINT_TYPE_PREFIX, 30768) +HANDLE_BAT(APINT_TYPE_PREFIX, 30769) +HANDLE_BAT(APINT_TYPE_PREFIX, 30770) +HANDLE_BAT(APINT_TYPE_PREFIX, 30771) +HANDLE_BAT(APINT_TYPE_PREFIX, 30772) +HANDLE_BAT(APINT_TYPE_PREFIX, 30773) +HANDLE_BAT(APINT_TYPE_PREFIX, 30774) +HANDLE_BAT(APINT_TYPE_PREFIX, 30775) +HANDLE_BAT(APINT_TYPE_PREFIX, 30776) +HANDLE_BAT(APINT_TYPE_PREFIX, 30777) +HANDLE_BAT(APINT_TYPE_PREFIX, 30778) +HANDLE_BAT(APINT_TYPE_PREFIX, 30779) +HANDLE_BAT(APINT_TYPE_PREFIX, 30780) +HANDLE_BAT(APINT_TYPE_PREFIX, 30781) +HANDLE_BAT(APINT_TYPE_PREFIX, 30782) +HANDLE_BAT(APINT_TYPE_PREFIX, 30783) +HANDLE_BAT(APINT_TYPE_PREFIX, 30784) +HANDLE_BAT(APINT_TYPE_PREFIX, 30785) +HANDLE_BAT(APINT_TYPE_PREFIX, 30786) +HANDLE_BAT(APINT_TYPE_PREFIX, 30787) +HANDLE_BAT(APINT_TYPE_PREFIX, 30788) +HANDLE_BAT(APINT_TYPE_PREFIX, 30789) +HANDLE_BAT(APINT_TYPE_PREFIX, 30790) +HANDLE_BAT(APINT_TYPE_PREFIX, 30791) +HANDLE_BAT(APINT_TYPE_PREFIX, 30792) +HANDLE_BAT(APINT_TYPE_PREFIX, 30793) +HANDLE_BAT(APINT_TYPE_PREFIX, 30794) +HANDLE_BAT(APINT_TYPE_PREFIX, 30795) +HANDLE_BAT(APINT_TYPE_PREFIX, 30796) +HANDLE_BAT(APINT_TYPE_PREFIX, 30797) +HANDLE_BAT(APINT_TYPE_PREFIX, 30798) +HANDLE_BAT(APINT_TYPE_PREFIX, 30799) +HANDLE_BAT(APINT_TYPE_PREFIX, 30800) +HANDLE_BAT(APINT_TYPE_PREFIX, 30801) +HANDLE_BAT(APINT_TYPE_PREFIX, 30802) +HANDLE_BAT(APINT_TYPE_PREFIX, 30803) +HANDLE_BAT(APINT_TYPE_PREFIX, 30804) +HANDLE_BAT(APINT_TYPE_PREFIX, 30805) +HANDLE_BAT(APINT_TYPE_PREFIX, 30806) +HANDLE_BAT(APINT_TYPE_PREFIX, 30807) +HANDLE_BAT(APINT_TYPE_PREFIX, 30808) +HANDLE_BAT(APINT_TYPE_PREFIX, 30809) +HANDLE_BAT(APINT_TYPE_PREFIX, 30810) +HANDLE_BAT(APINT_TYPE_PREFIX, 30811) +HANDLE_BAT(APINT_TYPE_PREFIX, 30812) +HANDLE_BAT(APINT_TYPE_PREFIX, 30813) +HANDLE_BAT(APINT_TYPE_PREFIX, 30814) +HANDLE_BAT(APINT_TYPE_PREFIX, 30815) +HANDLE_BAT(APINT_TYPE_PREFIX, 30816) +HANDLE_BAT(APINT_TYPE_PREFIX, 30817) +HANDLE_BAT(APINT_TYPE_PREFIX, 30818) +HANDLE_BAT(APINT_TYPE_PREFIX, 30819) +HANDLE_BAT(APINT_TYPE_PREFIX, 30820) +HANDLE_BAT(APINT_TYPE_PREFIX, 30821) +HANDLE_BAT(APINT_TYPE_PREFIX, 30822) +HANDLE_BAT(APINT_TYPE_PREFIX, 30823) +HANDLE_BAT(APINT_TYPE_PREFIX, 30824) +HANDLE_BAT(APINT_TYPE_PREFIX, 30825) +HANDLE_BAT(APINT_TYPE_PREFIX, 30826) +HANDLE_BAT(APINT_TYPE_PREFIX, 30827) +HANDLE_BAT(APINT_TYPE_PREFIX, 30828) +HANDLE_BAT(APINT_TYPE_PREFIX, 30829) +HANDLE_BAT(APINT_TYPE_PREFIX, 30830) +HANDLE_BAT(APINT_TYPE_PREFIX, 30831) +HANDLE_BAT(APINT_TYPE_PREFIX, 30832) +HANDLE_BAT(APINT_TYPE_PREFIX, 30833) +HANDLE_BAT(APINT_TYPE_PREFIX, 30834) +HANDLE_BAT(APINT_TYPE_PREFIX, 30835) +HANDLE_BAT(APINT_TYPE_PREFIX, 30836) +HANDLE_BAT(APINT_TYPE_PREFIX, 30837) +HANDLE_BAT(APINT_TYPE_PREFIX, 30838) +HANDLE_BAT(APINT_TYPE_PREFIX, 30839) +HANDLE_BAT(APINT_TYPE_PREFIX, 30840) +HANDLE_BAT(APINT_TYPE_PREFIX, 30841) +HANDLE_BAT(APINT_TYPE_PREFIX, 30842) +HANDLE_BAT(APINT_TYPE_PREFIX, 30843) +HANDLE_BAT(APINT_TYPE_PREFIX, 30844) +HANDLE_BAT(APINT_TYPE_PREFIX, 30845) +HANDLE_BAT(APINT_TYPE_PREFIX, 30846) +HANDLE_BAT(APINT_TYPE_PREFIX, 30847) +HANDLE_BAT(APINT_TYPE_PREFIX, 30848) +HANDLE_BAT(APINT_TYPE_PREFIX, 30849) +HANDLE_BAT(APINT_TYPE_PREFIX, 30850) +HANDLE_BAT(APINT_TYPE_PREFIX, 30851) +HANDLE_BAT(APINT_TYPE_PREFIX, 30852) +HANDLE_BAT(APINT_TYPE_PREFIX, 30853) +HANDLE_BAT(APINT_TYPE_PREFIX, 30854) +HANDLE_BAT(APINT_TYPE_PREFIX, 30855) +HANDLE_BAT(APINT_TYPE_PREFIX, 30856) +HANDLE_BAT(APINT_TYPE_PREFIX, 30857) +HANDLE_BAT(APINT_TYPE_PREFIX, 30858) +HANDLE_BAT(APINT_TYPE_PREFIX, 30859) +HANDLE_BAT(APINT_TYPE_PREFIX, 30860) +HANDLE_BAT(APINT_TYPE_PREFIX, 30861) +HANDLE_BAT(APINT_TYPE_PREFIX, 30862) +HANDLE_BAT(APINT_TYPE_PREFIX, 30863) +HANDLE_BAT(APINT_TYPE_PREFIX, 30864) +HANDLE_BAT(APINT_TYPE_PREFIX, 30865) +HANDLE_BAT(APINT_TYPE_PREFIX, 30866) +HANDLE_BAT(APINT_TYPE_PREFIX, 30867) +HANDLE_BAT(APINT_TYPE_PREFIX, 30868) +HANDLE_BAT(APINT_TYPE_PREFIX, 30869) +HANDLE_BAT(APINT_TYPE_PREFIX, 30870) +HANDLE_BAT(APINT_TYPE_PREFIX, 30871) +HANDLE_BAT(APINT_TYPE_PREFIX, 30872) +HANDLE_BAT(APINT_TYPE_PREFIX, 30873) +HANDLE_BAT(APINT_TYPE_PREFIX, 30874) +HANDLE_BAT(APINT_TYPE_PREFIX, 30875) +HANDLE_BAT(APINT_TYPE_PREFIX, 30876) +HANDLE_BAT(APINT_TYPE_PREFIX, 30877) +HANDLE_BAT(APINT_TYPE_PREFIX, 30878) +HANDLE_BAT(APINT_TYPE_PREFIX, 30879) +HANDLE_BAT(APINT_TYPE_PREFIX, 30880) +HANDLE_BAT(APINT_TYPE_PREFIX, 30881) +HANDLE_BAT(APINT_TYPE_PREFIX, 30882) +HANDLE_BAT(APINT_TYPE_PREFIX, 30883) +HANDLE_BAT(APINT_TYPE_PREFIX, 30884) +HANDLE_BAT(APINT_TYPE_PREFIX, 30885) +HANDLE_BAT(APINT_TYPE_PREFIX, 30886) +HANDLE_BAT(APINT_TYPE_PREFIX, 30887) +HANDLE_BAT(APINT_TYPE_PREFIX, 30888) +HANDLE_BAT(APINT_TYPE_PREFIX, 30889) +HANDLE_BAT(APINT_TYPE_PREFIX, 30890) +HANDLE_BAT(APINT_TYPE_PREFIX, 30891) +HANDLE_BAT(APINT_TYPE_PREFIX, 30892) +HANDLE_BAT(APINT_TYPE_PREFIX, 30893) +HANDLE_BAT(APINT_TYPE_PREFIX, 30894) +HANDLE_BAT(APINT_TYPE_PREFIX, 30895) +HANDLE_BAT(APINT_TYPE_PREFIX, 30896) +HANDLE_BAT(APINT_TYPE_PREFIX, 30897) +HANDLE_BAT(APINT_TYPE_PREFIX, 30898) +HANDLE_BAT(APINT_TYPE_PREFIX, 30899) +HANDLE_BAT(APINT_TYPE_PREFIX, 30900) +HANDLE_BAT(APINT_TYPE_PREFIX, 30901) +HANDLE_BAT(APINT_TYPE_PREFIX, 30902) +HANDLE_BAT(APINT_TYPE_PREFIX, 30903) +HANDLE_BAT(APINT_TYPE_PREFIX, 30904) +HANDLE_BAT(APINT_TYPE_PREFIX, 30905) +HANDLE_BAT(APINT_TYPE_PREFIX, 30906) +HANDLE_BAT(APINT_TYPE_PREFIX, 30907) +HANDLE_BAT(APINT_TYPE_PREFIX, 30908) +HANDLE_BAT(APINT_TYPE_PREFIX, 30909) +HANDLE_BAT(APINT_TYPE_PREFIX, 30910) +HANDLE_BAT(APINT_TYPE_PREFIX, 30911) +HANDLE_BAT(APINT_TYPE_PREFIX, 30912) +HANDLE_BAT(APINT_TYPE_PREFIX, 30913) +HANDLE_BAT(APINT_TYPE_PREFIX, 30914) +HANDLE_BAT(APINT_TYPE_PREFIX, 30915) +HANDLE_BAT(APINT_TYPE_PREFIX, 30916) +HANDLE_BAT(APINT_TYPE_PREFIX, 30917) +HANDLE_BAT(APINT_TYPE_PREFIX, 30918) +HANDLE_BAT(APINT_TYPE_PREFIX, 30919) +HANDLE_BAT(APINT_TYPE_PREFIX, 30920) +HANDLE_BAT(APINT_TYPE_PREFIX, 30921) +HANDLE_BAT(APINT_TYPE_PREFIX, 30922) +HANDLE_BAT(APINT_TYPE_PREFIX, 30923) +HANDLE_BAT(APINT_TYPE_PREFIX, 30924) +HANDLE_BAT(APINT_TYPE_PREFIX, 30925) +HANDLE_BAT(APINT_TYPE_PREFIX, 30926) +HANDLE_BAT(APINT_TYPE_PREFIX, 30927) +HANDLE_BAT(APINT_TYPE_PREFIX, 30928) +HANDLE_BAT(APINT_TYPE_PREFIX, 30929) +HANDLE_BAT(APINT_TYPE_PREFIX, 30930) +HANDLE_BAT(APINT_TYPE_PREFIX, 30931) +HANDLE_BAT(APINT_TYPE_PREFIX, 30932) +HANDLE_BAT(APINT_TYPE_PREFIX, 30933) +HANDLE_BAT(APINT_TYPE_PREFIX, 30934) +HANDLE_BAT(APINT_TYPE_PREFIX, 30935) +HANDLE_BAT(APINT_TYPE_PREFIX, 30936) +HANDLE_BAT(APINT_TYPE_PREFIX, 30937) +HANDLE_BAT(APINT_TYPE_PREFIX, 30938) +HANDLE_BAT(APINT_TYPE_PREFIX, 30939) +HANDLE_BAT(APINT_TYPE_PREFIX, 30940) +HANDLE_BAT(APINT_TYPE_PREFIX, 30941) +HANDLE_BAT(APINT_TYPE_PREFIX, 30942) +HANDLE_BAT(APINT_TYPE_PREFIX, 30943) +HANDLE_BAT(APINT_TYPE_PREFIX, 30944) +HANDLE_BAT(APINT_TYPE_PREFIX, 30945) +HANDLE_BAT(APINT_TYPE_PREFIX, 30946) +HANDLE_BAT(APINT_TYPE_PREFIX, 30947) +HANDLE_BAT(APINT_TYPE_PREFIX, 30948) +HANDLE_BAT(APINT_TYPE_PREFIX, 30949) +HANDLE_BAT(APINT_TYPE_PREFIX, 30950) +HANDLE_BAT(APINT_TYPE_PREFIX, 30951) +HANDLE_BAT(APINT_TYPE_PREFIX, 30952) +HANDLE_BAT(APINT_TYPE_PREFIX, 30953) +HANDLE_BAT(APINT_TYPE_PREFIX, 30954) +HANDLE_BAT(APINT_TYPE_PREFIX, 30955) +HANDLE_BAT(APINT_TYPE_PREFIX, 30956) +HANDLE_BAT(APINT_TYPE_PREFIX, 30957) +HANDLE_BAT(APINT_TYPE_PREFIX, 30958) +HANDLE_BAT(APINT_TYPE_PREFIX, 30959) +HANDLE_BAT(APINT_TYPE_PREFIX, 30960) +HANDLE_BAT(APINT_TYPE_PREFIX, 30961) +HANDLE_BAT(APINT_TYPE_PREFIX, 30962) +HANDLE_BAT(APINT_TYPE_PREFIX, 30963) +HANDLE_BAT(APINT_TYPE_PREFIX, 30964) +HANDLE_BAT(APINT_TYPE_PREFIX, 30965) +HANDLE_BAT(APINT_TYPE_PREFIX, 30966) +HANDLE_BAT(APINT_TYPE_PREFIX, 30967) +HANDLE_BAT(APINT_TYPE_PREFIX, 30968) +HANDLE_BAT(APINT_TYPE_PREFIX, 30969) +HANDLE_BAT(APINT_TYPE_PREFIX, 30970) +HANDLE_BAT(APINT_TYPE_PREFIX, 30971) +HANDLE_BAT(APINT_TYPE_PREFIX, 30972) +HANDLE_BAT(APINT_TYPE_PREFIX, 30973) +HANDLE_BAT(APINT_TYPE_PREFIX, 30974) +HANDLE_BAT(APINT_TYPE_PREFIX, 30975) +HANDLE_BAT(APINT_TYPE_PREFIX, 30976) +HANDLE_BAT(APINT_TYPE_PREFIX, 30977) +HANDLE_BAT(APINT_TYPE_PREFIX, 30978) +HANDLE_BAT(APINT_TYPE_PREFIX, 30979) +HANDLE_BAT(APINT_TYPE_PREFIX, 30980) +HANDLE_BAT(APINT_TYPE_PREFIX, 30981) +HANDLE_BAT(APINT_TYPE_PREFIX, 30982) +HANDLE_BAT(APINT_TYPE_PREFIX, 30983) +HANDLE_BAT(APINT_TYPE_PREFIX, 30984) +HANDLE_BAT(APINT_TYPE_PREFIX, 30985) +HANDLE_BAT(APINT_TYPE_PREFIX, 30986) +HANDLE_BAT(APINT_TYPE_PREFIX, 30987) +HANDLE_BAT(APINT_TYPE_PREFIX, 30988) +HANDLE_BAT(APINT_TYPE_PREFIX, 30989) +HANDLE_BAT(APINT_TYPE_PREFIX, 30990) +HANDLE_BAT(APINT_TYPE_PREFIX, 30991) +HANDLE_BAT(APINT_TYPE_PREFIX, 30992) +HANDLE_BAT(APINT_TYPE_PREFIX, 30993) +HANDLE_BAT(APINT_TYPE_PREFIX, 30994) +HANDLE_BAT(APINT_TYPE_PREFIX, 30995) +HANDLE_BAT(APINT_TYPE_PREFIX, 30996) +HANDLE_BAT(APINT_TYPE_PREFIX, 30997) +HANDLE_BAT(APINT_TYPE_PREFIX, 30998) +HANDLE_BAT(APINT_TYPE_PREFIX, 30999) +HANDLE_BAT(APINT_TYPE_PREFIX, 31000) +HANDLE_BAT(APINT_TYPE_PREFIX, 31001) +HANDLE_BAT(APINT_TYPE_PREFIX, 31002) +HANDLE_BAT(APINT_TYPE_PREFIX, 31003) +HANDLE_BAT(APINT_TYPE_PREFIX, 31004) +HANDLE_BAT(APINT_TYPE_PREFIX, 31005) +HANDLE_BAT(APINT_TYPE_PREFIX, 31006) +HANDLE_BAT(APINT_TYPE_PREFIX, 31007) +HANDLE_BAT(APINT_TYPE_PREFIX, 31008) +HANDLE_BAT(APINT_TYPE_PREFIX, 31009) +HANDLE_BAT(APINT_TYPE_PREFIX, 31010) +HANDLE_BAT(APINT_TYPE_PREFIX, 31011) +HANDLE_BAT(APINT_TYPE_PREFIX, 31012) +HANDLE_BAT(APINT_TYPE_PREFIX, 31013) +HANDLE_BAT(APINT_TYPE_PREFIX, 31014) +HANDLE_BAT(APINT_TYPE_PREFIX, 31015) +HANDLE_BAT(APINT_TYPE_PREFIX, 31016) +HANDLE_BAT(APINT_TYPE_PREFIX, 31017) +HANDLE_BAT(APINT_TYPE_PREFIX, 31018) +HANDLE_BAT(APINT_TYPE_PREFIX, 31019) +HANDLE_BAT(APINT_TYPE_PREFIX, 31020) +HANDLE_BAT(APINT_TYPE_PREFIX, 31021) +HANDLE_BAT(APINT_TYPE_PREFIX, 31022) +HANDLE_BAT(APINT_TYPE_PREFIX, 31023) +HANDLE_BAT(APINT_TYPE_PREFIX, 31024) +HANDLE_BAT(APINT_TYPE_PREFIX, 31025) +HANDLE_BAT(APINT_TYPE_PREFIX, 31026) +HANDLE_BAT(APINT_TYPE_PREFIX, 31027) +HANDLE_BAT(APINT_TYPE_PREFIX, 31028) +HANDLE_BAT(APINT_TYPE_PREFIX, 31029) +HANDLE_BAT(APINT_TYPE_PREFIX, 31030) +HANDLE_BAT(APINT_TYPE_PREFIX, 31031) +HANDLE_BAT(APINT_TYPE_PREFIX, 31032) +HANDLE_BAT(APINT_TYPE_PREFIX, 31033) +HANDLE_BAT(APINT_TYPE_PREFIX, 31034) +HANDLE_BAT(APINT_TYPE_PREFIX, 31035) +HANDLE_BAT(APINT_TYPE_PREFIX, 31036) +HANDLE_BAT(APINT_TYPE_PREFIX, 31037) +HANDLE_BAT(APINT_TYPE_PREFIX, 31038) +HANDLE_BAT(APINT_TYPE_PREFIX, 31039) +HANDLE_BAT(APINT_TYPE_PREFIX, 31040) +HANDLE_BAT(APINT_TYPE_PREFIX, 31041) +HANDLE_BAT(APINT_TYPE_PREFIX, 31042) +HANDLE_BAT(APINT_TYPE_PREFIX, 31043) +HANDLE_BAT(APINT_TYPE_PREFIX, 31044) +HANDLE_BAT(APINT_TYPE_PREFIX, 31045) +HANDLE_BAT(APINT_TYPE_PREFIX, 31046) +HANDLE_BAT(APINT_TYPE_PREFIX, 31047) +HANDLE_BAT(APINT_TYPE_PREFIX, 31048) +HANDLE_BAT(APINT_TYPE_PREFIX, 31049) +HANDLE_BAT(APINT_TYPE_PREFIX, 31050) +HANDLE_BAT(APINT_TYPE_PREFIX, 31051) +HANDLE_BAT(APINT_TYPE_PREFIX, 31052) +HANDLE_BAT(APINT_TYPE_PREFIX, 31053) +HANDLE_BAT(APINT_TYPE_PREFIX, 31054) +HANDLE_BAT(APINT_TYPE_PREFIX, 31055) +HANDLE_BAT(APINT_TYPE_PREFIX, 31056) +HANDLE_BAT(APINT_TYPE_PREFIX, 31057) +HANDLE_BAT(APINT_TYPE_PREFIX, 31058) +HANDLE_BAT(APINT_TYPE_PREFIX, 31059) +HANDLE_BAT(APINT_TYPE_PREFIX, 31060) +HANDLE_BAT(APINT_TYPE_PREFIX, 31061) +HANDLE_BAT(APINT_TYPE_PREFIX, 31062) +HANDLE_BAT(APINT_TYPE_PREFIX, 31063) +HANDLE_BAT(APINT_TYPE_PREFIX, 31064) +HANDLE_BAT(APINT_TYPE_PREFIX, 31065) +HANDLE_BAT(APINT_TYPE_PREFIX, 31066) +HANDLE_BAT(APINT_TYPE_PREFIX, 31067) +HANDLE_BAT(APINT_TYPE_PREFIX, 31068) +HANDLE_BAT(APINT_TYPE_PREFIX, 31069) +HANDLE_BAT(APINT_TYPE_PREFIX, 31070) +HANDLE_BAT(APINT_TYPE_PREFIX, 31071) +HANDLE_BAT(APINT_TYPE_PREFIX, 31072) +HANDLE_BAT(APINT_TYPE_PREFIX, 31073) +HANDLE_BAT(APINT_TYPE_PREFIX, 31074) +HANDLE_BAT(APINT_TYPE_PREFIX, 31075) +HANDLE_BAT(APINT_TYPE_PREFIX, 31076) +HANDLE_BAT(APINT_TYPE_PREFIX, 31077) +HANDLE_BAT(APINT_TYPE_PREFIX, 31078) +HANDLE_BAT(APINT_TYPE_PREFIX, 31079) +HANDLE_BAT(APINT_TYPE_PREFIX, 31080) +HANDLE_BAT(APINT_TYPE_PREFIX, 31081) +HANDLE_BAT(APINT_TYPE_PREFIX, 31082) +HANDLE_BAT(APINT_TYPE_PREFIX, 31083) +HANDLE_BAT(APINT_TYPE_PREFIX, 31084) +HANDLE_BAT(APINT_TYPE_PREFIX, 31085) +HANDLE_BAT(APINT_TYPE_PREFIX, 31086) +HANDLE_BAT(APINT_TYPE_PREFIX, 31087) +HANDLE_BAT(APINT_TYPE_PREFIX, 31088) +HANDLE_BAT(APINT_TYPE_PREFIX, 31089) +HANDLE_BAT(APINT_TYPE_PREFIX, 31090) +HANDLE_BAT(APINT_TYPE_PREFIX, 31091) +HANDLE_BAT(APINT_TYPE_PREFIX, 31092) +HANDLE_BAT(APINT_TYPE_PREFIX, 31093) +HANDLE_BAT(APINT_TYPE_PREFIX, 31094) +HANDLE_BAT(APINT_TYPE_PREFIX, 31095) +HANDLE_BAT(APINT_TYPE_PREFIX, 31096) +HANDLE_BAT(APINT_TYPE_PREFIX, 31097) +HANDLE_BAT(APINT_TYPE_PREFIX, 31098) +HANDLE_BAT(APINT_TYPE_PREFIX, 31099) +HANDLE_BAT(APINT_TYPE_PREFIX, 31100) +HANDLE_BAT(APINT_TYPE_PREFIX, 31101) +HANDLE_BAT(APINT_TYPE_PREFIX, 31102) +HANDLE_BAT(APINT_TYPE_PREFIX, 31103) +HANDLE_BAT(APINT_TYPE_PREFIX, 31104) +HANDLE_BAT(APINT_TYPE_PREFIX, 31105) +HANDLE_BAT(APINT_TYPE_PREFIX, 31106) +HANDLE_BAT(APINT_TYPE_PREFIX, 31107) +HANDLE_BAT(APINT_TYPE_PREFIX, 31108) +HANDLE_BAT(APINT_TYPE_PREFIX, 31109) +HANDLE_BAT(APINT_TYPE_PREFIX, 31110) +HANDLE_BAT(APINT_TYPE_PREFIX, 31111) +HANDLE_BAT(APINT_TYPE_PREFIX, 31112) +HANDLE_BAT(APINT_TYPE_PREFIX, 31113) +HANDLE_BAT(APINT_TYPE_PREFIX, 31114) +HANDLE_BAT(APINT_TYPE_PREFIX, 31115) +HANDLE_BAT(APINT_TYPE_PREFIX, 31116) +HANDLE_BAT(APINT_TYPE_PREFIX, 31117) +HANDLE_BAT(APINT_TYPE_PREFIX, 31118) +HANDLE_BAT(APINT_TYPE_PREFIX, 31119) +HANDLE_BAT(APINT_TYPE_PREFIX, 31120) +HANDLE_BAT(APINT_TYPE_PREFIX, 31121) +HANDLE_BAT(APINT_TYPE_PREFIX, 31122) +HANDLE_BAT(APINT_TYPE_PREFIX, 31123) +HANDLE_BAT(APINT_TYPE_PREFIX, 31124) +HANDLE_BAT(APINT_TYPE_PREFIX, 31125) +HANDLE_BAT(APINT_TYPE_PREFIX, 31126) +HANDLE_BAT(APINT_TYPE_PREFIX, 31127) +HANDLE_BAT(APINT_TYPE_PREFIX, 31128) +HANDLE_BAT(APINT_TYPE_PREFIX, 31129) +HANDLE_BAT(APINT_TYPE_PREFIX, 31130) +HANDLE_BAT(APINT_TYPE_PREFIX, 31131) +HANDLE_BAT(APINT_TYPE_PREFIX, 31132) +HANDLE_BAT(APINT_TYPE_PREFIX, 31133) +HANDLE_BAT(APINT_TYPE_PREFIX, 31134) +HANDLE_BAT(APINT_TYPE_PREFIX, 31135) +HANDLE_BAT(APINT_TYPE_PREFIX, 31136) +HANDLE_BAT(APINT_TYPE_PREFIX, 31137) +HANDLE_BAT(APINT_TYPE_PREFIX, 31138) +HANDLE_BAT(APINT_TYPE_PREFIX, 31139) +HANDLE_BAT(APINT_TYPE_PREFIX, 31140) +HANDLE_BAT(APINT_TYPE_PREFIX, 31141) +HANDLE_BAT(APINT_TYPE_PREFIX, 31142) +HANDLE_BAT(APINT_TYPE_PREFIX, 31143) +HANDLE_BAT(APINT_TYPE_PREFIX, 31144) +HANDLE_BAT(APINT_TYPE_PREFIX, 31145) +HANDLE_BAT(APINT_TYPE_PREFIX, 31146) +HANDLE_BAT(APINT_TYPE_PREFIX, 31147) +HANDLE_BAT(APINT_TYPE_PREFIX, 31148) +HANDLE_BAT(APINT_TYPE_PREFIX, 31149) +HANDLE_BAT(APINT_TYPE_PREFIX, 31150) +HANDLE_BAT(APINT_TYPE_PREFIX, 31151) +HANDLE_BAT(APINT_TYPE_PREFIX, 31152) +HANDLE_BAT(APINT_TYPE_PREFIX, 31153) +HANDLE_BAT(APINT_TYPE_PREFIX, 31154) +HANDLE_BAT(APINT_TYPE_PREFIX, 31155) +HANDLE_BAT(APINT_TYPE_PREFIX, 31156) +HANDLE_BAT(APINT_TYPE_PREFIX, 31157) +HANDLE_BAT(APINT_TYPE_PREFIX, 31158) +HANDLE_BAT(APINT_TYPE_PREFIX, 31159) +HANDLE_BAT(APINT_TYPE_PREFIX, 31160) +HANDLE_BAT(APINT_TYPE_PREFIX, 31161) +HANDLE_BAT(APINT_TYPE_PREFIX, 31162) +HANDLE_BAT(APINT_TYPE_PREFIX, 31163) +HANDLE_BAT(APINT_TYPE_PREFIX, 31164) +HANDLE_BAT(APINT_TYPE_PREFIX, 31165) +HANDLE_BAT(APINT_TYPE_PREFIX, 31166) +HANDLE_BAT(APINT_TYPE_PREFIX, 31167) +HANDLE_BAT(APINT_TYPE_PREFIX, 31168) +HANDLE_BAT(APINT_TYPE_PREFIX, 31169) +HANDLE_BAT(APINT_TYPE_PREFIX, 31170) +HANDLE_BAT(APINT_TYPE_PREFIX, 31171) +HANDLE_BAT(APINT_TYPE_PREFIX, 31172) +HANDLE_BAT(APINT_TYPE_PREFIX, 31173) +HANDLE_BAT(APINT_TYPE_PREFIX, 31174) +HANDLE_BAT(APINT_TYPE_PREFIX, 31175) +HANDLE_BAT(APINT_TYPE_PREFIX, 31176) +HANDLE_BAT(APINT_TYPE_PREFIX, 31177) +HANDLE_BAT(APINT_TYPE_PREFIX, 31178) +HANDLE_BAT(APINT_TYPE_PREFIX, 31179) +HANDLE_BAT(APINT_TYPE_PREFIX, 31180) +HANDLE_BAT(APINT_TYPE_PREFIX, 31181) +HANDLE_BAT(APINT_TYPE_PREFIX, 31182) +HANDLE_BAT(APINT_TYPE_PREFIX, 31183) +HANDLE_BAT(APINT_TYPE_PREFIX, 31184) +HANDLE_BAT(APINT_TYPE_PREFIX, 31185) +HANDLE_BAT(APINT_TYPE_PREFIX, 31186) +HANDLE_BAT(APINT_TYPE_PREFIX, 31187) +HANDLE_BAT(APINT_TYPE_PREFIX, 31188) +HANDLE_BAT(APINT_TYPE_PREFIX, 31189) +HANDLE_BAT(APINT_TYPE_PREFIX, 31190) +HANDLE_BAT(APINT_TYPE_PREFIX, 31191) +HANDLE_BAT(APINT_TYPE_PREFIX, 31192) +HANDLE_BAT(APINT_TYPE_PREFIX, 31193) +HANDLE_BAT(APINT_TYPE_PREFIX, 31194) +HANDLE_BAT(APINT_TYPE_PREFIX, 31195) +HANDLE_BAT(APINT_TYPE_PREFIX, 31196) +HANDLE_BAT(APINT_TYPE_PREFIX, 31197) +HANDLE_BAT(APINT_TYPE_PREFIX, 31198) +HANDLE_BAT(APINT_TYPE_PREFIX, 31199) +HANDLE_BAT(APINT_TYPE_PREFIX, 31200) +HANDLE_BAT(APINT_TYPE_PREFIX, 31201) +HANDLE_BAT(APINT_TYPE_PREFIX, 31202) +HANDLE_BAT(APINT_TYPE_PREFIX, 31203) +HANDLE_BAT(APINT_TYPE_PREFIX, 31204) +HANDLE_BAT(APINT_TYPE_PREFIX, 31205) +HANDLE_BAT(APINT_TYPE_PREFIX, 31206) +HANDLE_BAT(APINT_TYPE_PREFIX, 31207) +HANDLE_BAT(APINT_TYPE_PREFIX, 31208) +HANDLE_BAT(APINT_TYPE_PREFIX, 31209) +HANDLE_BAT(APINT_TYPE_PREFIX, 31210) +HANDLE_BAT(APINT_TYPE_PREFIX, 31211) +HANDLE_BAT(APINT_TYPE_PREFIX, 31212) +HANDLE_BAT(APINT_TYPE_PREFIX, 31213) +HANDLE_BAT(APINT_TYPE_PREFIX, 31214) +HANDLE_BAT(APINT_TYPE_PREFIX, 31215) +HANDLE_BAT(APINT_TYPE_PREFIX, 31216) +HANDLE_BAT(APINT_TYPE_PREFIX, 31217) +HANDLE_BAT(APINT_TYPE_PREFIX, 31218) +HANDLE_BAT(APINT_TYPE_PREFIX, 31219) +HANDLE_BAT(APINT_TYPE_PREFIX, 31220) +HANDLE_BAT(APINT_TYPE_PREFIX, 31221) +HANDLE_BAT(APINT_TYPE_PREFIX, 31222) +HANDLE_BAT(APINT_TYPE_PREFIX, 31223) +HANDLE_BAT(APINT_TYPE_PREFIX, 31224) +HANDLE_BAT(APINT_TYPE_PREFIX, 31225) +HANDLE_BAT(APINT_TYPE_PREFIX, 31226) +HANDLE_BAT(APINT_TYPE_PREFIX, 31227) +HANDLE_BAT(APINT_TYPE_PREFIX, 31228) +HANDLE_BAT(APINT_TYPE_PREFIX, 31229) +HANDLE_BAT(APINT_TYPE_PREFIX, 31230) +HANDLE_BAT(APINT_TYPE_PREFIX, 31231) +HANDLE_BAT(APINT_TYPE_PREFIX, 31232) +HANDLE_BAT(APINT_TYPE_PREFIX, 31233) +HANDLE_BAT(APINT_TYPE_PREFIX, 31234) +HANDLE_BAT(APINT_TYPE_PREFIX, 31235) +HANDLE_BAT(APINT_TYPE_PREFIX, 31236) +HANDLE_BAT(APINT_TYPE_PREFIX, 31237) +HANDLE_BAT(APINT_TYPE_PREFIX, 31238) +HANDLE_BAT(APINT_TYPE_PREFIX, 31239) +HANDLE_BAT(APINT_TYPE_PREFIX, 31240) +HANDLE_BAT(APINT_TYPE_PREFIX, 31241) +HANDLE_BAT(APINT_TYPE_PREFIX, 31242) +HANDLE_BAT(APINT_TYPE_PREFIX, 31243) +HANDLE_BAT(APINT_TYPE_PREFIX, 31244) +HANDLE_BAT(APINT_TYPE_PREFIX, 31245) +HANDLE_BAT(APINT_TYPE_PREFIX, 31246) +HANDLE_BAT(APINT_TYPE_PREFIX, 31247) +HANDLE_BAT(APINT_TYPE_PREFIX, 31248) +HANDLE_BAT(APINT_TYPE_PREFIX, 31249) +HANDLE_BAT(APINT_TYPE_PREFIX, 31250) +HANDLE_BAT(APINT_TYPE_PREFIX, 31251) +HANDLE_BAT(APINT_TYPE_PREFIX, 31252) +HANDLE_BAT(APINT_TYPE_PREFIX, 31253) +HANDLE_BAT(APINT_TYPE_PREFIX, 31254) +HANDLE_BAT(APINT_TYPE_PREFIX, 31255) +HANDLE_BAT(APINT_TYPE_PREFIX, 31256) +HANDLE_BAT(APINT_TYPE_PREFIX, 31257) +HANDLE_BAT(APINT_TYPE_PREFIX, 31258) +HANDLE_BAT(APINT_TYPE_PREFIX, 31259) +HANDLE_BAT(APINT_TYPE_PREFIX, 31260) +HANDLE_BAT(APINT_TYPE_PREFIX, 31261) +HANDLE_BAT(APINT_TYPE_PREFIX, 31262) +HANDLE_BAT(APINT_TYPE_PREFIX, 31263) +HANDLE_BAT(APINT_TYPE_PREFIX, 31264) +HANDLE_BAT(APINT_TYPE_PREFIX, 31265) +HANDLE_BAT(APINT_TYPE_PREFIX, 31266) +HANDLE_BAT(APINT_TYPE_PREFIX, 31267) +HANDLE_BAT(APINT_TYPE_PREFIX, 31268) +HANDLE_BAT(APINT_TYPE_PREFIX, 31269) +HANDLE_BAT(APINT_TYPE_PREFIX, 31270) +HANDLE_BAT(APINT_TYPE_PREFIX, 31271) +HANDLE_BAT(APINT_TYPE_PREFIX, 31272) +HANDLE_BAT(APINT_TYPE_PREFIX, 31273) +HANDLE_BAT(APINT_TYPE_PREFIX, 31274) +HANDLE_BAT(APINT_TYPE_PREFIX, 31275) +HANDLE_BAT(APINT_TYPE_PREFIX, 31276) +HANDLE_BAT(APINT_TYPE_PREFIX, 31277) +HANDLE_BAT(APINT_TYPE_PREFIX, 31278) +HANDLE_BAT(APINT_TYPE_PREFIX, 31279) +HANDLE_BAT(APINT_TYPE_PREFIX, 31280) +HANDLE_BAT(APINT_TYPE_PREFIX, 31281) +HANDLE_BAT(APINT_TYPE_PREFIX, 31282) +HANDLE_BAT(APINT_TYPE_PREFIX, 31283) +HANDLE_BAT(APINT_TYPE_PREFIX, 31284) +HANDLE_BAT(APINT_TYPE_PREFIX, 31285) +HANDLE_BAT(APINT_TYPE_PREFIX, 31286) +HANDLE_BAT(APINT_TYPE_PREFIX, 31287) +HANDLE_BAT(APINT_TYPE_PREFIX, 31288) +HANDLE_BAT(APINT_TYPE_PREFIX, 31289) +HANDLE_BAT(APINT_TYPE_PREFIX, 31290) +HANDLE_BAT(APINT_TYPE_PREFIX, 31291) +HANDLE_BAT(APINT_TYPE_PREFIX, 31292) +HANDLE_BAT(APINT_TYPE_PREFIX, 31293) +HANDLE_BAT(APINT_TYPE_PREFIX, 31294) +HANDLE_BAT(APINT_TYPE_PREFIX, 31295) +HANDLE_BAT(APINT_TYPE_PREFIX, 31296) +HANDLE_BAT(APINT_TYPE_PREFIX, 31297) +HANDLE_BAT(APINT_TYPE_PREFIX, 31298) +HANDLE_BAT(APINT_TYPE_PREFIX, 31299) +HANDLE_BAT(APINT_TYPE_PREFIX, 31300) +HANDLE_BAT(APINT_TYPE_PREFIX, 31301) +HANDLE_BAT(APINT_TYPE_PREFIX, 31302) +HANDLE_BAT(APINT_TYPE_PREFIX, 31303) +HANDLE_BAT(APINT_TYPE_PREFIX, 31304) +HANDLE_BAT(APINT_TYPE_PREFIX, 31305) +HANDLE_BAT(APINT_TYPE_PREFIX, 31306) +HANDLE_BAT(APINT_TYPE_PREFIX, 31307) +HANDLE_BAT(APINT_TYPE_PREFIX, 31308) +HANDLE_BAT(APINT_TYPE_PREFIX, 31309) +HANDLE_BAT(APINT_TYPE_PREFIX, 31310) +HANDLE_BAT(APINT_TYPE_PREFIX, 31311) +HANDLE_BAT(APINT_TYPE_PREFIX, 31312) +HANDLE_BAT(APINT_TYPE_PREFIX, 31313) +HANDLE_BAT(APINT_TYPE_PREFIX, 31314) +HANDLE_BAT(APINT_TYPE_PREFIX, 31315) +HANDLE_BAT(APINT_TYPE_PREFIX, 31316) +HANDLE_BAT(APINT_TYPE_PREFIX, 31317) +HANDLE_BAT(APINT_TYPE_PREFIX, 31318) +HANDLE_BAT(APINT_TYPE_PREFIX, 31319) +HANDLE_BAT(APINT_TYPE_PREFIX, 31320) +HANDLE_BAT(APINT_TYPE_PREFIX, 31321) +HANDLE_BAT(APINT_TYPE_PREFIX, 31322) +HANDLE_BAT(APINT_TYPE_PREFIX, 31323) +HANDLE_BAT(APINT_TYPE_PREFIX, 31324) +HANDLE_BAT(APINT_TYPE_PREFIX, 31325) +HANDLE_BAT(APINT_TYPE_PREFIX, 31326) +HANDLE_BAT(APINT_TYPE_PREFIX, 31327) +HANDLE_BAT(APINT_TYPE_PREFIX, 31328) +HANDLE_BAT(APINT_TYPE_PREFIX, 31329) +HANDLE_BAT(APINT_TYPE_PREFIX, 31330) +HANDLE_BAT(APINT_TYPE_PREFIX, 31331) +HANDLE_BAT(APINT_TYPE_PREFIX, 31332) +HANDLE_BAT(APINT_TYPE_PREFIX, 31333) +HANDLE_BAT(APINT_TYPE_PREFIX, 31334) +HANDLE_BAT(APINT_TYPE_PREFIX, 31335) +HANDLE_BAT(APINT_TYPE_PREFIX, 31336) +HANDLE_BAT(APINT_TYPE_PREFIX, 31337) +HANDLE_BAT(APINT_TYPE_PREFIX, 31338) +HANDLE_BAT(APINT_TYPE_PREFIX, 31339) +HANDLE_BAT(APINT_TYPE_PREFIX, 31340) +HANDLE_BAT(APINT_TYPE_PREFIX, 31341) +HANDLE_BAT(APINT_TYPE_PREFIX, 31342) +HANDLE_BAT(APINT_TYPE_PREFIX, 31343) +HANDLE_BAT(APINT_TYPE_PREFIX, 31344) +HANDLE_BAT(APINT_TYPE_PREFIX, 31345) +HANDLE_BAT(APINT_TYPE_PREFIX, 31346) +HANDLE_BAT(APINT_TYPE_PREFIX, 31347) +HANDLE_BAT(APINT_TYPE_PREFIX, 31348) +HANDLE_BAT(APINT_TYPE_PREFIX, 31349) +HANDLE_BAT(APINT_TYPE_PREFIX, 31350) +HANDLE_BAT(APINT_TYPE_PREFIX, 31351) +HANDLE_BAT(APINT_TYPE_PREFIX, 31352) +HANDLE_BAT(APINT_TYPE_PREFIX, 31353) +HANDLE_BAT(APINT_TYPE_PREFIX, 31354) +HANDLE_BAT(APINT_TYPE_PREFIX, 31355) +HANDLE_BAT(APINT_TYPE_PREFIX, 31356) +HANDLE_BAT(APINT_TYPE_PREFIX, 31357) +HANDLE_BAT(APINT_TYPE_PREFIX, 31358) +HANDLE_BAT(APINT_TYPE_PREFIX, 31359) +HANDLE_BAT(APINT_TYPE_PREFIX, 31360) +HANDLE_BAT(APINT_TYPE_PREFIX, 31361) +HANDLE_BAT(APINT_TYPE_PREFIX, 31362) +HANDLE_BAT(APINT_TYPE_PREFIX, 31363) +HANDLE_BAT(APINT_TYPE_PREFIX, 31364) +HANDLE_BAT(APINT_TYPE_PREFIX, 31365) +HANDLE_BAT(APINT_TYPE_PREFIX, 31366) +HANDLE_BAT(APINT_TYPE_PREFIX, 31367) +HANDLE_BAT(APINT_TYPE_PREFIX, 31368) +HANDLE_BAT(APINT_TYPE_PREFIX, 31369) +HANDLE_BAT(APINT_TYPE_PREFIX, 31370) +HANDLE_BAT(APINT_TYPE_PREFIX, 31371) +HANDLE_BAT(APINT_TYPE_PREFIX, 31372) +HANDLE_BAT(APINT_TYPE_PREFIX, 31373) +HANDLE_BAT(APINT_TYPE_PREFIX, 31374) +HANDLE_BAT(APINT_TYPE_PREFIX, 31375) +HANDLE_BAT(APINT_TYPE_PREFIX, 31376) +HANDLE_BAT(APINT_TYPE_PREFIX, 31377) +HANDLE_BAT(APINT_TYPE_PREFIX, 31378) +HANDLE_BAT(APINT_TYPE_PREFIX, 31379) +HANDLE_BAT(APINT_TYPE_PREFIX, 31380) +HANDLE_BAT(APINT_TYPE_PREFIX, 31381) +HANDLE_BAT(APINT_TYPE_PREFIX, 31382) +HANDLE_BAT(APINT_TYPE_PREFIX, 31383) +HANDLE_BAT(APINT_TYPE_PREFIX, 31384) +HANDLE_BAT(APINT_TYPE_PREFIX, 31385) +HANDLE_BAT(APINT_TYPE_PREFIX, 31386) +HANDLE_BAT(APINT_TYPE_PREFIX, 31387) +HANDLE_BAT(APINT_TYPE_PREFIX, 31388) +HANDLE_BAT(APINT_TYPE_PREFIX, 31389) +HANDLE_BAT(APINT_TYPE_PREFIX, 31390) +HANDLE_BAT(APINT_TYPE_PREFIX, 31391) +HANDLE_BAT(APINT_TYPE_PREFIX, 31392) +HANDLE_BAT(APINT_TYPE_PREFIX, 31393) +HANDLE_BAT(APINT_TYPE_PREFIX, 31394) +HANDLE_BAT(APINT_TYPE_PREFIX, 31395) +HANDLE_BAT(APINT_TYPE_PREFIX, 31396) +HANDLE_BAT(APINT_TYPE_PREFIX, 31397) +HANDLE_BAT(APINT_TYPE_PREFIX, 31398) +HANDLE_BAT(APINT_TYPE_PREFIX, 31399) +HANDLE_BAT(APINT_TYPE_PREFIX, 31400) +HANDLE_BAT(APINT_TYPE_PREFIX, 31401) +HANDLE_BAT(APINT_TYPE_PREFIX, 31402) +HANDLE_BAT(APINT_TYPE_PREFIX, 31403) +HANDLE_BAT(APINT_TYPE_PREFIX, 31404) +HANDLE_BAT(APINT_TYPE_PREFIX, 31405) +HANDLE_BAT(APINT_TYPE_PREFIX, 31406) +HANDLE_BAT(APINT_TYPE_PREFIX, 31407) +HANDLE_BAT(APINT_TYPE_PREFIX, 31408) +HANDLE_BAT(APINT_TYPE_PREFIX, 31409) +HANDLE_BAT(APINT_TYPE_PREFIX, 31410) +HANDLE_BAT(APINT_TYPE_PREFIX, 31411) +HANDLE_BAT(APINT_TYPE_PREFIX, 31412) +HANDLE_BAT(APINT_TYPE_PREFIX, 31413) +HANDLE_BAT(APINT_TYPE_PREFIX, 31414) +HANDLE_BAT(APINT_TYPE_PREFIX, 31415) +HANDLE_BAT(APINT_TYPE_PREFIX, 31416) +HANDLE_BAT(APINT_TYPE_PREFIX, 31417) +HANDLE_BAT(APINT_TYPE_PREFIX, 31418) +HANDLE_BAT(APINT_TYPE_PREFIX, 31419) +HANDLE_BAT(APINT_TYPE_PREFIX, 31420) +HANDLE_BAT(APINT_TYPE_PREFIX, 31421) +HANDLE_BAT(APINT_TYPE_PREFIX, 31422) +HANDLE_BAT(APINT_TYPE_PREFIX, 31423) +HANDLE_BAT(APINT_TYPE_PREFIX, 31424) +HANDLE_BAT(APINT_TYPE_PREFIX, 31425) +HANDLE_BAT(APINT_TYPE_PREFIX, 31426) +HANDLE_BAT(APINT_TYPE_PREFIX, 31427) +HANDLE_BAT(APINT_TYPE_PREFIX, 31428) +HANDLE_BAT(APINT_TYPE_PREFIX, 31429) +HANDLE_BAT(APINT_TYPE_PREFIX, 31430) +HANDLE_BAT(APINT_TYPE_PREFIX, 31431) +HANDLE_BAT(APINT_TYPE_PREFIX, 31432) +HANDLE_BAT(APINT_TYPE_PREFIX, 31433) +HANDLE_BAT(APINT_TYPE_PREFIX, 31434) +HANDLE_BAT(APINT_TYPE_PREFIX, 31435) +HANDLE_BAT(APINT_TYPE_PREFIX, 31436) +HANDLE_BAT(APINT_TYPE_PREFIX, 31437) +HANDLE_BAT(APINT_TYPE_PREFIX, 31438) +HANDLE_BAT(APINT_TYPE_PREFIX, 31439) +HANDLE_BAT(APINT_TYPE_PREFIX, 31440) +HANDLE_BAT(APINT_TYPE_PREFIX, 31441) +HANDLE_BAT(APINT_TYPE_PREFIX, 31442) +HANDLE_BAT(APINT_TYPE_PREFIX, 31443) +HANDLE_BAT(APINT_TYPE_PREFIX, 31444) +HANDLE_BAT(APINT_TYPE_PREFIX, 31445) +HANDLE_BAT(APINT_TYPE_PREFIX, 31446) +HANDLE_BAT(APINT_TYPE_PREFIX, 31447) +HANDLE_BAT(APINT_TYPE_PREFIX, 31448) +HANDLE_BAT(APINT_TYPE_PREFIX, 31449) +HANDLE_BAT(APINT_TYPE_PREFIX, 31450) +HANDLE_BAT(APINT_TYPE_PREFIX, 31451) +HANDLE_BAT(APINT_TYPE_PREFIX, 31452) +HANDLE_BAT(APINT_TYPE_PREFIX, 31453) +HANDLE_BAT(APINT_TYPE_PREFIX, 31454) +HANDLE_BAT(APINT_TYPE_PREFIX, 31455) +HANDLE_BAT(APINT_TYPE_PREFIX, 31456) +HANDLE_BAT(APINT_TYPE_PREFIX, 31457) +HANDLE_BAT(APINT_TYPE_PREFIX, 31458) +HANDLE_BAT(APINT_TYPE_PREFIX, 31459) +HANDLE_BAT(APINT_TYPE_PREFIX, 31460) +HANDLE_BAT(APINT_TYPE_PREFIX, 31461) +HANDLE_BAT(APINT_TYPE_PREFIX, 31462) +HANDLE_BAT(APINT_TYPE_PREFIX, 31463) +HANDLE_BAT(APINT_TYPE_PREFIX, 31464) +HANDLE_BAT(APINT_TYPE_PREFIX, 31465) +HANDLE_BAT(APINT_TYPE_PREFIX, 31466) +HANDLE_BAT(APINT_TYPE_PREFIX, 31467) +HANDLE_BAT(APINT_TYPE_PREFIX, 31468) +HANDLE_BAT(APINT_TYPE_PREFIX, 31469) +HANDLE_BAT(APINT_TYPE_PREFIX, 31470) +HANDLE_BAT(APINT_TYPE_PREFIX, 31471) +HANDLE_BAT(APINT_TYPE_PREFIX, 31472) +HANDLE_BAT(APINT_TYPE_PREFIX, 31473) +HANDLE_BAT(APINT_TYPE_PREFIX, 31474) +HANDLE_BAT(APINT_TYPE_PREFIX, 31475) +HANDLE_BAT(APINT_TYPE_PREFIX, 31476) +HANDLE_BAT(APINT_TYPE_PREFIX, 31477) +HANDLE_BAT(APINT_TYPE_PREFIX, 31478) +HANDLE_BAT(APINT_TYPE_PREFIX, 31479) +HANDLE_BAT(APINT_TYPE_PREFIX, 31480) +HANDLE_BAT(APINT_TYPE_PREFIX, 31481) +HANDLE_BAT(APINT_TYPE_PREFIX, 31482) +HANDLE_BAT(APINT_TYPE_PREFIX, 31483) +HANDLE_BAT(APINT_TYPE_PREFIX, 31484) +HANDLE_BAT(APINT_TYPE_PREFIX, 31485) +HANDLE_BAT(APINT_TYPE_PREFIX, 31486) +HANDLE_BAT(APINT_TYPE_PREFIX, 31487) +HANDLE_BAT(APINT_TYPE_PREFIX, 31488) +HANDLE_BAT(APINT_TYPE_PREFIX, 31489) +HANDLE_BAT(APINT_TYPE_PREFIX, 31490) +HANDLE_BAT(APINT_TYPE_PREFIX, 31491) +HANDLE_BAT(APINT_TYPE_PREFIX, 31492) +HANDLE_BAT(APINT_TYPE_PREFIX, 31493) +HANDLE_BAT(APINT_TYPE_PREFIX, 31494) +HANDLE_BAT(APINT_TYPE_PREFIX, 31495) +HANDLE_BAT(APINT_TYPE_PREFIX, 31496) +HANDLE_BAT(APINT_TYPE_PREFIX, 31497) +HANDLE_BAT(APINT_TYPE_PREFIX, 31498) +HANDLE_BAT(APINT_TYPE_PREFIX, 31499) +HANDLE_BAT(APINT_TYPE_PREFIX, 31500) +HANDLE_BAT(APINT_TYPE_PREFIX, 31501) +HANDLE_BAT(APINT_TYPE_PREFIX, 31502) +HANDLE_BAT(APINT_TYPE_PREFIX, 31503) +HANDLE_BAT(APINT_TYPE_PREFIX, 31504) +HANDLE_BAT(APINT_TYPE_PREFIX, 31505) +HANDLE_BAT(APINT_TYPE_PREFIX, 31506) +HANDLE_BAT(APINT_TYPE_PREFIX, 31507) +HANDLE_BAT(APINT_TYPE_PREFIX, 31508) +HANDLE_BAT(APINT_TYPE_PREFIX, 31509) +HANDLE_BAT(APINT_TYPE_PREFIX, 31510) +HANDLE_BAT(APINT_TYPE_PREFIX, 31511) +HANDLE_BAT(APINT_TYPE_PREFIX, 31512) +HANDLE_BAT(APINT_TYPE_PREFIX, 31513) +HANDLE_BAT(APINT_TYPE_PREFIX, 31514) +HANDLE_BAT(APINT_TYPE_PREFIX, 31515) +HANDLE_BAT(APINT_TYPE_PREFIX, 31516) +HANDLE_BAT(APINT_TYPE_PREFIX, 31517) +HANDLE_BAT(APINT_TYPE_PREFIX, 31518) +HANDLE_BAT(APINT_TYPE_PREFIX, 31519) +HANDLE_BAT(APINT_TYPE_PREFIX, 31520) +HANDLE_BAT(APINT_TYPE_PREFIX, 31521) +HANDLE_BAT(APINT_TYPE_PREFIX, 31522) +HANDLE_BAT(APINT_TYPE_PREFIX, 31523) +HANDLE_BAT(APINT_TYPE_PREFIX, 31524) +HANDLE_BAT(APINT_TYPE_PREFIX, 31525) +HANDLE_BAT(APINT_TYPE_PREFIX, 31526) +HANDLE_BAT(APINT_TYPE_PREFIX, 31527) +HANDLE_BAT(APINT_TYPE_PREFIX, 31528) +HANDLE_BAT(APINT_TYPE_PREFIX, 31529) +HANDLE_BAT(APINT_TYPE_PREFIX, 31530) +HANDLE_BAT(APINT_TYPE_PREFIX, 31531) +HANDLE_BAT(APINT_TYPE_PREFIX, 31532) +HANDLE_BAT(APINT_TYPE_PREFIX, 31533) +HANDLE_BAT(APINT_TYPE_PREFIX, 31534) +HANDLE_BAT(APINT_TYPE_PREFIX, 31535) +HANDLE_BAT(APINT_TYPE_PREFIX, 31536) +HANDLE_BAT(APINT_TYPE_PREFIX, 31537) +HANDLE_BAT(APINT_TYPE_PREFIX, 31538) +HANDLE_BAT(APINT_TYPE_PREFIX, 31539) +HANDLE_BAT(APINT_TYPE_PREFIX, 31540) +HANDLE_BAT(APINT_TYPE_PREFIX, 31541) +HANDLE_BAT(APINT_TYPE_PREFIX, 31542) +HANDLE_BAT(APINT_TYPE_PREFIX, 31543) +HANDLE_BAT(APINT_TYPE_PREFIX, 31544) +HANDLE_BAT(APINT_TYPE_PREFIX, 31545) +HANDLE_BAT(APINT_TYPE_PREFIX, 31546) +HANDLE_BAT(APINT_TYPE_PREFIX, 31547) +HANDLE_BAT(APINT_TYPE_PREFIX, 31548) +HANDLE_BAT(APINT_TYPE_PREFIX, 31549) +HANDLE_BAT(APINT_TYPE_PREFIX, 31550) +HANDLE_BAT(APINT_TYPE_PREFIX, 31551) +HANDLE_BAT(APINT_TYPE_PREFIX, 31552) +HANDLE_BAT(APINT_TYPE_PREFIX, 31553) +HANDLE_BAT(APINT_TYPE_PREFIX, 31554) +HANDLE_BAT(APINT_TYPE_PREFIX, 31555) +HANDLE_BAT(APINT_TYPE_PREFIX, 31556) +HANDLE_BAT(APINT_TYPE_PREFIX, 31557) +HANDLE_BAT(APINT_TYPE_PREFIX, 31558) +HANDLE_BAT(APINT_TYPE_PREFIX, 31559) +HANDLE_BAT(APINT_TYPE_PREFIX, 31560) +HANDLE_BAT(APINT_TYPE_PREFIX, 31561) +HANDLE_BAT(APINT_TYPE_PREFIX, 31562) +HANDLE_BAT(APINT_TYPE_PREFIX, 31563) +HANDLE_BAT(APINT_TYPE_PREFIX, 31564) +HANDLE_BAT(APINT_TYPE_PREFIX, 31565) +HANDLE_BAT(APINT_TYPE_PREFIX, 31566) +HANDLE_BAT(APINT_TYPE_PREFIX, 31567) +HANDLE_BAT(APINT_TYPE_PREFIX, 31568) +HANDLE_BAT(APINT_TYPE_PREFIX, 31569) +HANDLE_BAT(APINT_TYPE_PREFIX, 31570) +HANDLE_BAT(APINT_TYPE_PREFIX, 31571) +HANDLE_BAT(APINT_TYPE_PREFIX, 31572) +HANDLE_BAT(APINT_TYPE_PREFIX, 31573) +HANDLE_BAT(APINT_TYPE_PREFIX, 31574) +HANDLE_BAT(APINT_TYPE_PREFIX, 31575) +HANDLE_BAT(APINT_TYPE_PREFIX, 31576) +HANDLE_BAT(APINT_TYPE_PREFIX, 31577) +HANDLE_BAT(APINT_TYPE_PREFIX, 31578) +HANDLE_BAT(APINT_TYPE_PREFIX, 31579) +HANDLE_BAT(APINT_TYPE_PREFIX, 31580) +HANDLE_BAT(APINT_TYPE_PREFIX, 31581) +HANDLE_BAT(APINT_TYPE_PREFIX, 31582) +HANDLE_BAT(APINT_TYPE_PREFIX, 31583) +HANDLE_BAT(APINT_TYPE_PREFIX, 31584) +HANDLE_BAT(APINT_TYPE_PREFIX, 31585) +HANDLE_BAT(APINT_TYPE_PREFIX, 31586) +HANDLE_BAT(APINT_TYPE_PREFIX, 31587) +HANDLE_BAT(APINT_TYPE_PREFIX, 31588) +HANDLE_BAT(APINT_TYPE_PREFIX, 31589) +HANDLE_BAT(APINT_TYPE_PREFIX, 31590) +HANDLE_BAT(APINT_TYPE_PREFIX, 31591) +HANDLE_BAT(APINT_TYPE_PREFIX, 31592) +HANDLE_BAT(APINT_TYPE_PREFIX, 31593) +HANDLE_BAT(APINT_TYPE_PREFIX, 31594) +HANDLE_BAT(APINT_TYPE_PREFIX, 31595) +HANDLE_BAT(APINT_TYPE_PREFIX, 31596) +HANDLE_BAT(APINT_TYPE_PREFIX, 31597) +HANDLE_BAT(APINT_TYPE_PREFIX, 31598) +HANDLE_BAT(APINT_TYPE_PREFIX, 31599) +HANDLE_BAT(APINT_TYPE_PREFIX, 31600) +HANDLE_BAT(APINT_TYPE_PREFIX, 31601) +HANDLE_BAT(APINT_TYPE_PREFIX, 31602) +HANDLE_BAT(APINT_TYPE_PREFIX, 31603) +HANDLE_BAT(APINT_TYPE_PREFIX, 31604) +HANDLE_BAT(APINT_TYPE_PREFIX, 31605) +HANDLE_BAT(APINT_TYPE_PREFIX, 31606) +HANDLE_BAT(APINT_TYPE_PREFIX, 31607) +HANDLE_BAT(APINT_TYPE_PREFIX, 31608) +HANDLE_BAT(APINT_TYPE_PREFIX, 31609) +HANDLE_BAT(APINT_TYPE_PREFIX, 31610) +HANDLE_BAT(APINT_TYPE_PREFIX, 31611) +HANDLE_BAT(APINT_TYPE_PREFIX, 31612) +HANDLE_BAT(APINT_TYPE_PREFIX, 31613) +HANDLE_BAT(APINT_TYPE_PREFIX, 31614) +HANDLE_BAT(APINT_TYPE_PREFIX, 31615) +HANDLE_BAT(APINT_TYPE_PREFIX, 31616) +HANDLE_BAT(APINT_TYPE_PREFIX, 31617) +HANDLE_BAT(APINT_TYPE_PREFIX, 31618) +HANDLE_BAT(APINT_TYPE_PREFIX, 31619) +HANDLE_BAT(APINT_TYPE_PREFIX, 31620) +HANDLE_BAT(APINT_TYPE_PREFIX, 31621) +HANDLE_BAT(APINT_TYPE_PREFIX, 31622) +HANDLE_BAT(APINT_TYPE_PREFIX, 31623) +HANDLE_BAT(APINT_TYPE_PREFIX, 31624) +HANDLE_BAT(APINT_TYPE_PREFIX, 31625) +HANDLE_BAT(APINT_TYPE_PREFIX, 31626) +HANDLE_BAT(APINT_TYPE_PREFIX, 31627) +HANDLE_BAT(APINT_TYPE_PREFIX, 31628) +HANDLE_BAT(APINT_TYPE_PREFIX, 31629) +HANDLE_BAT(APINT_TYPE_PREFIX, 31630) +HANDLE_BAT(APINT_TYPE_PREFIX, 31631) +HANDLE_BAT(APINT_TYPE_PREFIX, 31632) +HANDLE_BAT(APINT_TYPE_PREFIX, 31633) +HANDLE_BAT(APINT_TYPE_PREFIX, 31634) +HANDLE_BAT(APINT_TYPE_PREFIX, 31635) +HANDLE_BAT(APINT_TYPE_PREFIX, 31636) +HANDLE_BAT(APINT_TYPE_PREFIX, 31637) +HANDLE_BAT(APINT_TYPE_PREFIX, 31638) +HANDLE_BAT(APINT_TYPE_PREFIX, 31639) +HANDLE_BAT(APINT_TYPE_PREFIX, 31640) +HANDLE_BAT(APINT_TYPE_PREFIX, 31641) +HANDLE_BAT(APINT_TYPE_PREFIX, 31642) +HANDLE_BAT(APINT_TYPE_PREFIX, 31643) +HANDLE_BAT(APINT_TYPE_PREFIX, 31644) +HANDLE_BAT(APINT_TYPE_PREFIX, 31645) +HANDLE_BAT(APINT_TYPE_PREFIX, 31646) +HANDLE_BAT(APINT_TYPE_PREFIX, 31647) +HANDLE_BAT(APINT_TYPE_PREFIX, 31648) +HANDLE_BAT(APINT_TYPE_PREFIX, 31649) +HANDLE_BAT(APINT_TYPE_PREFIX, 31650) +HANDLE_BAT(APINT_TYPE_PREFIX, 31651) +HANDLE_BAT(APINT_TYPE_PREFIX, 31652) +HANDLE_BAT(APINT_TYPE_PREFIX, 31653) +HANDLE_BAT(APINT_TYPE_PREFIX, 31654) +HANDLE_BAT(APINT_TYPE_PREFIX, 31655) +HANDLE_BAT(APINT_TYPE_PREFIX, 31656) +HANDLE_BAT(APINT_TYPE_PREFIX, 31657) +HANDLE_BAT(APINT_TYPE_PREFIX, 31658) +HANDLE_BAT(APINT_TYPE_PREFIX, 31659) +HANDLE_BAT(APINT_TYPE_PREFIX, 31660) +HANDLE_BAT(APINT_TYPE_PREFIX, 31661) +HANDLE_BAT(APINT_TYPE_PREFIX, 31662) +HANDLE_BAT(APINT_TYPE_PREFIX, 31663) +HANDLE_BAT(APINT_TYPE_PREFIX, 31664) +HANDLE_BAT(APINT_TYPE_PREFIX, 31665) +HANDLE_BAT(APINT_TYPE_PREFIX, 31666) +HANDLE_BAT(APINT_TYPE_PREFIX, 31667) +HANDLE_BAT(APINT_TYPE_PREFIX, 31668) +HANDLE_BAT(APINT_TYPE_PREFIX, 31669) +HANDLE_BAT(APINT_TYPE_PREFIX, 31670) +HANDLE_BAT(APINT_TYPE_PREFIX, 31671) +HANDLE_BAT(APINT_TYPE_PREFIX, 31672) +HANDLE_BAT(APINT_TYPE_PREFIX, 31673) +HANDLE_BAT(APINT_TYPE_PREFIX, 31674) +HANDLE_BAT(APINT_TYPE_PREFIX, 31675) +HANDLE_BAT(APINT_TYPE_PREFIX, 31676) +HANDLE_BAT(APINT_TYPE_PREFIX, 31677) +HANDLE_BAT(APINT_TYPE_PREFIX, 31678) +HANDLE_BAT(APINT_TYPE_PREFIX, 31679) +HANDLE_BAT(APINT_TYPE_PREFIX, 31680) +HANDLE_BAT(APINT_TYPE_PREFIX, 31681) +HANDLE_BAT(APINT_TYPE_PREFIX, 31682) +HANDLE_BAT(APINT_TYPE_PREFIX, 31683) +HANDLE_BAT(APINT_TYPE_PREFIX, 31684) +HANDLE_BAT(APINT_TYPE_PREFIX, 31685) +HANDLE_BAT(APINT_TYPE_PREFIX, 31686) +HANDLE_BAT(APINT_TYPE_PREFIX, 31687) +HANDLE_BAT(APINT_TYPE_PREFIX, 31688) +HANDLE_BAT(APINT_TYPE_PREFIX, 31689) +HANDLE_BAT(APINT_TYPE_PREFIX, 31690) +HANDLE_BAT(APINT_TYPE_PREFIX, 31691) +HANDLE_BAT(APINT_TYPE_PREFIX, 31692) +HANDLE_BAT(APINT_TYPE_PREFIX, 31693) +HANDLE_BAT(APINT_TYPE_PREFIX, 31694) +HANDLE_BAT(APINT_TYPE_PREFIX, 31695) +HANDLE_BAT(APINT_TYPE_PREFIX, 31696) +HANDLE_BAT(APINT_TYPE_PREFIX, 31697) +HANDLE_BAT(APINT_TYPE_PREFIX, 31698) +HANDLE_BAT(APINT_TYPE_PREFIX, 31699) +HANDLE_BAT(APINT_TYPE_PREFIX, 31700) +HANDLE_BAT(APINT_TYPE_PREFIX, 31701) +HANDLE_BAT(APINT_TYPE_PREFIX, 31702) +HANDLE_BAT(APINT_TYPE_PREFIX, 31703) +HANDLE_BAT(APINT_TYPE_PREFIX, 31704) +HANDLE_BAT(APINT_TYPE_PREFIX, 31705) +HANDLE_BAT(APINT_TYPE_PREFIX, 31706) +HANDLE_BAT(APINT_TYPE_PREFIX, 31707) +HANDLE_BAT(APINT_TYPE_PREFIX, 31708) +HANDLE_BAT(APINT_TYPE_PREFIX, 31709) +HANDLE_BAT(APINT_TYPE_PREFIX, 31710) +HANDLE_BAT(APINT_TYPE_PREFIX, 31711) +HANDLE_BAT(APINT_TYPE_PREFIX, 31712) +HANDLE_BAT(APINT_TYPE_PREFIX, 31713) +HANDLE_BAT(APINT_TYPE_PREFIX, 31714) +HANDLE_BAT(APINT_TYPE_PREFIX, 31715) +HANDLE_BAT(APINT_TYPE_PREFIX, 31716) +HANDLE_BAT(APINT_TYPE_PREFIX, 31717) +HANDLE_BAT(APINT_TYPE_PREFIX, 31718) +HANDLE_BAT(APINT_TYPE_PREFIX, 31719) +HANDLE_BAT(APINT_TYPE_PREFIX, 31720) +HANDLE_BAT(APINT_TYPE_PREFIX, 31721) +HANDLE_BAT(APINT_TYPE_PREFIX, 31722) +HANDLE_BAT(APINT_TYPE_PREFIX, 31723) +HANDLE_BAT(APINT_TYPE_PREFIX, 31724) +HANDLE_BAT(APINT_TYPE_PREFIX, 31725) +HANDLE_BAT(APINT_TYPE_PREFIX, 31726) +HANDLE_BAT(APINT_TYPE_PREFIX, 31727) +HANDLE_BAT(APINT_TYPE_PREFIX, 31728) +HANDLE_BAT(APINT_TYPE_PREFIX, 31729) +HANDLE_BAT(APINT_TYPE_PREFIX, 31730) +HANDLE_BAT(APINT_TYPE_PREFIX, 31731) +HANDLE_BAT(APINT_TYPE_PREFIX, 31732) +HANDLE_BAT(APINT_TYPE_PREFIX, 31733) +HANDLE_BAT(APINT_TYPE_PREFIX, 31734) +HANDLE_BAT(APINT_TYPE_PREFIX, 31735) +HANDLE_BAT(APINT_TYPE_PREFIX, 31736) +HANDLE_BAT(APINT_TYPE_PREFIX, 31737) +HANDLE_BAT(APINT_TYPE_PREFIX, 31738) +HANDLE_BAT(APINT_TYPE_PREFIX, 31739) +HANDLE_BAT(APINT_TYPE_PREFIX, 31740) +HANDLE_BAT(APINT_TYPE_PREFIX, 31741) +HANDLE_BAT(APINT_TYPE_PREFIX, 31742) +HANDLE_BAT(APINT_TYPE_PREFIX, 31743) +HANDLE_BAT(APINT_TYPE_PREFIX, 31744) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 31 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 31745) +HANDLE_BAT(, 31746) +HANDLE_BAT(, 31747) +HANDLE_BAT(, 31748) +HANDLE_BAT(, 31749) +HANDLE_BAT(, 31750) +HANDLE_BAT(, 31751) +HANDLE_BAT(, 31752) +HANDLE_BAT(, 31753) +HANDLE_BAT(, 31754) +HANDLE_BAT(, 31755) +HANDLE_BAT(, 31756) +HANDLE_BAT(, 31757) +HANDLE_BAT(, 31758) +HANDLE_BAT(, 31759) +HANDLE_BAT(, 31760) +HANDLE_BAT(, 31761) +HANDLE_BAT(, 31762) +HANDLE_BAT(, 31763) +HANDLE_BAT(, 31764) +HANDLE_BAT(, 31765) +HANDLE_BAT(, 31766) +HANDLE_BAT(, 31767) +HANDLE_BAT(, 31768) +HANDLE_BAT(, 31769) +HANDLE_BAT(, 31770) +HANDLE_BAT(, 31771) +HANDLE_BAT(, 31772) +HANDLE_BAT(, 31773) +HANDLE_BAT(, 31774) +HANDLE_BAT(, 31775) +HANDLE_BAT(, 31776) +HANDLE_BAT(, 31777) +HANDLE_BAT(, 31778) +HANDLE_BAT(, 31779) +HANDLE_BAT(, 31780) +HANDLE_BAT(, 31781) +HANDLE_BAT(, 31782) +HANDLE_BAT(, 31783) +HANDLE_BAT(, 31784) +HANDLE_BAT(, 31785) +HANDLE_BAT(, 31786) +HANDLE_BAT(, 31787) +HANDLE_BAT(, 31788) +HANDLE_BAT(, 31789) +HANDLE_BAT(, 31790) +HANDLE_BAT(, 31791) +HANDLE_BAT(, 31792) +HANDLE_BAT(, 31793) +HANDLE_BAT(, 31794) +HANDLE_BAT(, 31795) +HANDLE_BAT(, 31796) +HANDLE_BAT(, 31797) +HANDLE_BAT(, 31798) +HANDLE_BAT(, 31799) +HANDLE_BAT(, 31800) +HANDLE_BAT(, 31801) +HANDLE_BAT(, 31802) +HANDLE_BAT(, 31803) +HANDLE_BAT(, 31804) +HANDLE_BAT(, 31805) +HANDLE_BAT(, 31806) +HANDLE_BAT(, 31807) +HANDLE_BAT(, 31808) +HANDLE_BAT(, 31809) +HANDLE_BAT(, 31810) +HANDLE_BAT(, 31811) +HANDLE_BAT(, 31812) +HANDLE_BAT(, 31813) +HANDLE_BAT(, 31814) +HANDLE_BAT(, 31815) +HANDLE_BAT(, 31816) +HANDLE_BAT(, 31817) +HANDLE_BAT(, 31818) +HANDLE_BAT(, 31819) +HANDLE_BAT(, 31820) +HANDLE_BAT(, 31821) +HANDLE_BAT(, 31822) +HANDLE_BAT(, 31823) +HANDLE_BAT(, 31824) +HANDLE_BAT(, 31825) +HANDLE_BAT(, 31826) +HANDLE_BAT(, 31827) +HANDLE_BAT(, 31828) +HANDLE_BAT(, 31829) +HANDLE_BAT(, 31830) +HANDLE_BAT(, 31831) +HANDLE_BAT(, 31832) +HANDLE_BAT(, 31833) +HANDLE_BAT(, 31834) +HANDLE_BAT(, 31835) +HANDLE_BAT(, 31836) +HANDLE_BAT(, 31837) +HANDLE_BAT(, 31838) +HANDLE_BAT(, 31839) +HANDLE_BAT(, 31840) +HANDLE_BAT(, 31841) +HANDLE_BAT(, 31842) +HANDLE_BAT(, 31843) +HANDLE_BAT(, 31844) +HANDLE_BAT(, 31845) +HANDLE_BAT(, 31846) +HANDLE_BAT(, 31847) +HANDLE_BAT(, 31848) +HANDLE_BAT(, 31849) +HANDLE_BAT(, 31850) +HANDLE_BAT(, 31851) +HANDLE_BAT(, 31852) +HANDLE_BAT(, 31853) +HANDLE_BAT(, 31854) +HANDLE_BAT(, 31855) +HANDLE_BAT(, 31856) +HANDLE_BAT(, 31857) +HANDLE_BAT(, 31858) +HANDLE_BAT(, 31859) +HANDLE_BAT(, 31860) +HANDLE_BAT(, 31861) +HANDLE_BAT(, 31862) +HANDLE_BAT(, 31863) +HANDLE_BAT(, 31864) +HANDLE_BAT(, 31865) +HANDLE_BAT(, 31866) +HANDLE_BAT(, 31867) +HANDLE_BAT(, 31868) +HANDLE_BAT(, 31869) +HANDLE_BAT(, 31870) +HANDLE_BAT(, 31871) +HANDLE_BAT(, 31872) +HANDLE_BAT(, 31873) +HANDLE_BAT(, 31874) +HANDLE_BAT(, 31875) +HANDLE_BAT(, 31876) +HANDLE_BAT(, 31877) +HANDLE_BAT(, 31878) +HANDLE_BAT(, 31879) +HANDLE_BAT(, 31880) +HANDLE_BAT(, 31881) +HANDLE_BAT(, 31882) +HANDLE_BAT(, 31883) +HANDLE_BAT(, 31884) +HANDLE_BAT(, 31885) +HANDLE_BAT(, 31886) +HANDLE_BAT(, 31887) +HANDLE_BAT(, 31888) +HANDLE_BAT(, 31889) +HANDLE_BAT(, 31890) +HANDLE_BAT(, 31891) +HANDLE_BAT(, 31892) +HANDLE_BAT(, 31893) +HANDLE_BAT(, 31894) +HANDLE_BAT(, 31895) +HANDLE_BAT(, 31896) +HANDLE_BAT(, 31897) +HANDLE_BAT(, 31898) +HANDLE_BAT(, 31899) +HANDLE_BAT(, 31900) +HANDLE_BAT(, 31901) +HANDLE_BAT(, 31902) +HANDLE_BAT(, 31903) +HANDLE_BAT(, 31904) +HANDLE_BAT(, 31905) +HANDLE_BAT(, 31906) +HANDLE_BAT(, 31907) +HANDLE_BAT(, 31908) +HANDLE_BAT(, 31909) +HANDLE_BAT(, 31910) +HANDLE_BAT(, 31911) +HANDLE_BAT(, 31912) +HANDLE_BAT(, 31913) +HANDLE_BAT(, 31914) +HANDLE_BAT(, 31915) +HANDLE_BAT(, 31916) +HANDLE_BAT(, 31917) +HANDLE_BAT(, 31918) +HANDLE_BAT(, 31919) +HANDLE_BAT(, 31920) +HANDLE_BAT(, 31921) +HANDLE_BAT(, 31922) +HANDLE_BAT(, 31923) +HANDLE_BAT(, 31924) +HANDLE_BAT(, 31925) +HANDLE_BAT(, 31926) +HANDLE_BAT(, 31927) +HANDLE_BAT(, 31928) +HANDLE_BAT(, 31929) +HANDLE_BAT(, 31930) +HANDLE_BAT(, 31931) +HANDLE_BAT(, 31932) +HANDLE_BAT(, 31933) +HANDLE_BAT(, 31934) +HANDLE_BAT(, 31935) +HANDLE_BAT(, 31936) +HANDLE_BAT(, 31937) +HANDLE_BAT(, 31938) +HANDLE_BAT(, 31939) +HANDLE_BAT(, 31940) +HANDLE_BAT(, 31941) +HANDLE_BAT(, 31942) +HANDLE_BAT(, 31943) +HANDLE_BAT(, 31944) +HANDLE_BAT(, 31945) +HANDLE_BAT(, 31946) +HANDLE_BAT(, 31947) +HANDLE_BAT(, 31948) +HANDLE_BAT(, 31949) +HANDLE_BAT(, 31950) +HANDLE_BAT(, 31951) +HANDLE_BAT(, 31952) +HANDLE_BAT(, 31953) +HANDLE_BAT(, 31954) +HANDLE_BAT(, 31955) +HANDLE_BAT(, 31956) +HANDLE_BAT(, 31957) +HANDLE_BAT(, 31958) +HANDLE_BAT(, 31959) +HANDLE_BAT(, 31960) +HANDLE_BAT(, 31961) +HANDLE_BAT(, 31962) +HANDLE_BAT(, 31963) +HANDLE_BAT(, 31964) +HANDLE_BAT(, 31965) +HANDLE_BAT(, 31966) +HANDLE_BAT(, 31967) +HANDLE_BAT(, 31968) +HANDLE_BAT(, 31969) +HANDLE_BAT(, 31970) +HANDLE_BAT(, 31971) +HANDLE_BAT(, 31972) +HANDLE_BAT(, 31973) +HANDLE_BAT(, 31974) +HANDLE_BAT(, 31975) +HANDLE_BAT(, 31976) +HANDLE_BAT(, 31977) +HANDLE_BAT(, 31978) +HANDLE_BAT(, 31979) +HANDLE_BAT(, 31980) +HANDLE_BAT(, 31981) +HANDLE_BAT(, 31982) +HANDLE_BAT(, 31983) +HANDLE_BAT(, 31984) +HANDLE_BAT(, 31985) +HANDLE_BAT(, 31986) +HANDLE_BAT(, 31987) +HANDLE_BAT(, 31988) +HANDLE_BAT(, 31989) +HANDLE_BAT(, 31990) +HANDLE_BAT(, 31991) +HANDLE_BAT(, 31992) +HANDLE_BAT(, 31993) +HANDLE_BAT(, 31994) +HANDLE_BAT(, 31995) +HANDLE_BAT(, 31996) +HANDLE_BAT(, 31997) +HANDLE_BAT(, 31998) +HANDLE_BAT(, 31999) +HANDLE_BAT(, 32000) +HANDLE_BAT(, 32001) +HANDLE_BAT(, 32002) +HANDLE_BAT(, 32003) +HANDLE_BAT(, 32004) +HANDLE_BAT(, 32005) +HANDLE_BAT(, 32006) +HANDLE_BAT(, 32007) +HANDLE_BAT(, 32008) +HANDLE_BAT(, 32009) +HANDLE_BAT(, 32010) +HANDLE_BAT(, 32011) +HANDLE_BAT(, 32012) +HANDLE_BAT(, 32013) +HANDLE_BAT(, 32014) +HANDLE_BAT(, 32015) +HANDLE_BAT(, 32016) +HANDLE_BAT(, 32017) +HANDLE_BAT(, 32018) +HANDLE_BAT(, 32019) +HANDLE_BAT(, 32020) +HANDLE_BAT(, 32021) +HANDLE_BAT(, 32022) +HANDLE_BAT(, 32023) +HANDLE_BAT(, 32024) +HANDLE_BAT(, 32025) +HANDLE_BAT(, 32026) +HANDLE_BAT(, 32027) +HANDLE_BAT(, 32028) +HANDLE_BAT(, 32029) +HANDLE_BAT(, 32030) +HANDLE_BAT(, 32031) +HANDLE_BAT(, 32032) +HANDLE_BAT(, 32033) +HANDLE_BAT(, 32034) +HANDLE_BAT(, 32035) +HANDLE_BAT(, 32036) +HANDLE_BAT(, 32037) +HANDLE_BAT(, 32038) +HANDLE_BAT(, 32039) +HANDLE_BAT(, 32040) +HANDLE_BAT(, 32041) +HANDLE_BAT(, 32042) +HANDLE_BAT(, 32043) +HANDLE_BAT(, 32044) +HANDLE_BAT(, 32045) +HANDLE_BAT(, 32046) +HANDLE_BAT(, 32047) +HANDLE_BAT(, 32048) +HANDLE_BAT(, 32049) +HANDLE_BAT(, 32050) +HANDLE_BAT(, 32051) +HANDLE_BAT(, 32052) +HANDLE_BAT(, 32053) +HANDLE_BAT(, 32054) +HANDLE_BAT(, 32055) +HANDLE_BAT(, 32056) +HANDLE_BAT(, 32057) +HANDLE_BAT(, 32058) +HANDLE_BAT(, 32059) +HANDLE_BAT(, 32060) +HANDLE_BAT(, 32061) +HANDLE_BAT(, 32062) +HANDLE_BAT(, 32063) +HANDLE_BAT(, 32064) +HANDLE_BAT(, 32065) +HANDLE_BAT(, 32066) +HANDLE_BAT(, 32067) +HANDLE_BAT(, 32068) +HANDLE_BAT(, 32069) +HANDLE_BAT(, 32070) +HANDLE_BAT(, 32071) +HANDLE_BAT(, 32072) +HANDLE_BAT(, 32073) +HANDLE_BAT(, 32074) +HANDLE_BAT(, 32075) +HANDLE_BAT(, 32076) +HANDLE_BAT(, 32077) +HANDLE_BAT(, 32078) +HANDLE_BAT(, 32079) +HANDLE_BAT(, 32080) +HANDLE_BAT(, 32081) +HANDLE_BAT(, 32082) +HANDLE_BAT(, 32083) +HANDLE_BAT(, 32084) +HANDLE_BAT(, 32085) +HANDLE_BAT(, 32086) +HANDLE_BAT(, 32087) +HANDLE_BAT(, 32088) +HANDLE_BAT(, 32089) +HANDLE_BAT(, 32090) +HANDLE_BAT(, 32091) +HANDLE_BAT(, 32092) +HANDLE_BAT(, 32093) +HANDLE_BAT(, 32094) +HANDLE_BAT(, 32095) +HANDLE_BAT(, 32096) +HANDLE_BAT(, 32097) +HANDLE_BAT(, 32098) +HANDLE_BAT(, 32099) +HANDLE_BAT(, 32100) +HANDLE_BAT(, 32101) +HANDLE_BAT(, 32102) +HANDLE_BAT(, 32103) +HANDLE_BAT(, 32104) +HANDLE_BAT(, 32105) +HANDLE_BAT(, 32106) +HANDLE_BAT(, 32107) +HANDLE_BAT(, 32108) +HANDLE_BAT(, 32109) +HANDLE_BAT(, 32110) +HANDLE_BAT(, 32111) +HANDLE_BAT(, 32112) +HANDLE_BAT(, 32113) +HANDLE_BAT(, 32114) +HANDLE_BAT(, 32115) +HANDLE_BAT(, 32116) +HANDLE_BAT(, 32117) +HANDLE_BAT(, 32118) +HANDLE_BAT(, 32119) +HANDLE_BAT(, 32120) +HANDLE_BAT(, 32121) +HANDLE_BAT(, 32122) +HANDLE_BAT(, 32123) +HANDLE_BAT(, 32124) +HANDLE_BAT(, 32125) +HANDLE_BAT(, 32126) +HANDLE_BAT(, 32127) +HANDLE_BAT(, 32128) +HANDLE_BAT(, 32129) +HANDLE_BAT(, 32130) +HANDLE_BAT(, 32131) +HANDLE_BAT(, 32132) +HANDLE_BAT(, 32133) +HANDLE_BAT(, 32134) +HANDLE_BAT(, 32135) +HANDLE_BAT(, 32136) +HANDLE_BAT(, 32137) +HANDLE_BAT(, 32138) +HANDLE_BAT(, 32139) +HANDLE_BAT(, 32140) +HANDLE_BAT(, 32141) +HANDLE_BAT(, 32142) +HANDLE_BAT(, 32143) +HANDLE_BAT(, 32144) +HANDLE_BAT(, 32145) +HANDLE_BAT(, 32146) +HANDLE_BAT(, 32147) +HANDLE_BAT(, 32148) +HANDLE_BAT(, 32149) +HANDLE_BAT(, 32150) +HANDLE_BAT(, 32151) +HANDLE_BAT(, 32152) +HANDLE_BAT(, 32153) +HANDLE_BAT(, 32154) +HANDLE_BAT(, 32155) +HANDLE_BAT(, 32156) +HANDLE_BAT(, 32157) +HANDLE_BAT(, 32158) +HANDLE_BAT(, 32159) +HANDLE_BAT(, 32160) +HANDLE_BAT(, 32161) +HANDLE_BAT(, 32162) +HANDLE_BAT(, 32163) +HANDLE_BAT(, 32164) +HANDLE_BAT(, 32165) +HANDLE_BAT(, 32166) +HANDLE_BAT(, 32167) +HANDLE_BAT(, 32168) +HANDLE_BAT(, 32169) +HANDLE_BAT(, 32170) +HANDLE_BAT(, 32171) +HANDLE_BAT(, 32172) +HANDLE_BAT(, 32173) +HANDLE_BAT(, 32174) +HANDLE_BAT(, 32175) +HANDLE_BAT(, 32176) +HANDLE_BAT(, 32177) +HANDLE_BAT(, 32178) +HANDLE_BAT(, 32179) +HANDLE_BAT(, 32180) +HANDLE_BAT(, 32181) +HANDLE_BAT(, 32182) +HANDLE_BAT(, 32183) +HANDLE_BAT(, 32184) +HANDLE_BAT(, 32185) +HANDLE_BAT(, 32186) +HANDLE_BAT(, 32187) +HANDLE_BAT(, 32188) +HANDLE_BAT(, 32189) +HANDLE_BAT(, 32190) +HANDLE_BAT(, 32191) +HANDLE_BAT(, 32192) +HANDLE_BAT(, 32193) +HANDLE_BAT(, 32194) +HANDLE_BAT(, 32195) +HANDLE_BAT(, 32196) +HANDLE_BAT(, 32197) +HANDLE_BAT(, 32198) +HANDLE_BAT(, 32199) +HANDLE_BAT(, 32200) +HANDLE_BAT(, 32201) +HANDLE_BAT(, 32202) +HANDLE_BAT(, 32203) +HANDLE_BAT(, 32204) +HANDLE_BAT(, 32205) +HANDLE_BAT(, 32206) +HANDLE_BAT(, 32207) +HANDLE_BAT(, 32208) +HANDLE_BAT(, 32209) +HANDLE_BAT(, 32210) +HANDLE_BAT(, 32211) +HANDLE_BAT(, 32212) +HANDLE_BAT(, 32213) +HANDLE_BAT(, 32214) +HANDLE_BAT(, 32215) +HANDLE_BAT(, 32216) +HANDLE_BAT(, 32217) +HANDLE_BAT(, 32218) +HANDLE_BAT(, 32219) +HANDLE_BAT(, 32220) +HANDLE_BAT(, 32221) +HANDLE_BAT(, 32222) +HANDLE_BAT(, 32223) +HANDLE_BAT(, 32224) +HANDLE_BAT(, 32225) +HANDLE_BAT(, 32226) +HANDLE_BAT(, 32227) +HANDLE_BAT(, 32228) +HANDLE_BAT(, 32229) +HANDLE_BAT(, 32230) +HANDLE_BAT(, 32231) +HANDLE_BAT(, 32232) +HANDLE_BAT(, 32233) +HANDLE_BAT(, 32234) +HANDLE_BAT(, 32235) +HANDLE_BAT(, 32236) +HANDLE_BAT(, 32237) +HANDLE_BAT(, 32238) +HANDLE_BAT(, 32239) +HANDLE_BAT(, 32240) +HANDLE_BAT(, 32241) +HANDLE_BAT(, 32242) +HANDLE_BAT(, 32243) +HANDLE_BAT(, 32244) +HANDLE_BAT(, 32245) +HANDLE_BAT(, 32246) +HANDLE_BAT(, 32247) +HANDLE_BAT(, 32248) +HANDLE_BAT(, 32249) +HANDLE_BAT(, 32250) +HANDLE_BAT(, 32251) +HANDLE_BAT(, 32252) +HANDLE_BAT(, 32253) +HANDLE_BAT(, 32254) +HANDLE_BAT(, 32255) +HANDLE_BAT(, 32256) +HANDLE_BAT(, 32257) +HANDLE_BAT(, 32258) +HANDLE_BAT(, 32259) +HANDLE_BAT(, 32260) +HANDLE_BAT(, 32261) +HANDLE_BAT(, 32262) +HANDLE_BAT(, 32263) +HANDLE_BAT(, 32264) +HANDLE_BAT(, 32265) +HANDLE_BAT(, 32266) +HANDLE_BAT(, 32267) +HANDLE_BAT(, 32268) +HANDLE_BAT(, 32269) +HANDLE_BAT(, 32270) +HANDLE_BAT(, 32271) +HANDLE_BAT(, 32272) +HANDLE_BAT(, 32273) +HANDLE_BAT(, 32274) +HANDLE_BAT(, 32275) +HANDLE_BAT(, 32276) +HANDLE_BAT(, 32277) +HANDLE_BAT(, 32278) +HANDLE_BAT(, 32279) +HANDLE_BAT(, 32280) +HANDLE_BAT(, 32281) +HANDLE_BAT(, 32282) +HANDLE_BAT(, 32283) +HANDLE_BAT(, 32284) +HANDLE_BAT(, 32285) +HANDLE_BAT(, 32286) +HANDLE_BAT(, 32287) +HANDLE_BAT(, 32288) +HANDLE_BAT(, 32289) +HANDLE_BAT(, 32290) +HANDLE_BAT(, 32291) +HANDLE_BAT(, 32292) +HANDLE_BAT(, 32293) +HANDLE_BAT(, 32294) +HANDLE_BAT(, 32295) +HANDLE_BAT(, 32296) +HANDLE_BAT(, 32297) +HANDLE_BAT(, 32298) +HANDLE_BAT(, 32299) +HANDLE_BAT(, 32300) +HANDLE_BAT(, 32301) +HANDLE_BAT(, 32302) +HANDLE_BAT(, 32303) +HANDLE_BAT(, 32304) +HANDLE_BAT(, 32305) +HANDLE_BAT(, 32306) +HANDLE_BAT(, 32307) +HANDLE_BAT(, 32308) +HANDLE_BAT(, 32309) +HANDLE_BAT(, 32310) +HANDLE_BAT(, 32311) +HANDLE_BAT(, 32312) +HANDLE_BAT(, 32313) +HANDLE_BAT(, 32314) +HANDLE_BAT(, 32315) +HANDLE_BAT(, 32316) +HANDLE_BAT(, 32317) +HANDLE_BAT(, 32318) +HANDLE_BAT(, 32319) +HANDLE_BAT(, 32320) +HANDLE_BAT(, 32321) +HANDLE_BAT(, 32322) +HANDLE_BAT(, 32323) +HANDLE_BAT(, 32324) +HANDLE_BAT(, 32325) +HANDLE_BAT(, 32326) +HANDLE_BAT(, 32327) +HANDLE_BAT(, 32328) +HANDLE_BAT(, 32329) +HANDLE_BAT(, 32330) +HANDLE_BAT(, 32331) +HANDLE_BAT(, 32332) +HANDLE_BAT(, 32333) +HANDLE_BAT(, 32334) +HANDLE_BAT(, 32335) +HANDLE_BAT(, 32336) +HANDLE_BAT(, 32337) +HANDLE_BAT(, 32338) +HANDLE_BAT(, 32339) +HANDLE_BAT(, 32340) +HANDLE_BAT(, 32341) +HANDLE_BAT(, 32342) +HANDLE_BAT(, 32343) +HANDLE_BAT(, 32344) +HANDLE_BAT(, 32345) +HANDLE_BAT(, 32346) +HANDLE_BAT(, 32347) +HANDLE_BAT(, 32348) +HANDLE_BAT(, 32349) +HANDLE_BAT(, 32350) +HANDLE_BAT(, 32351) +HANDLE_BAT(, 32352) +HANDLE_BAT(, 32353) +HANDLE_BAT(, 32354) +HANDLE_BAT(, 32355) +HANDLE_BAT(, 32356) +HANDLE_BAT(, 32357) +HANDLE_BAT(, 32358) +HANDLE_BAT(, 32359) +HANDLE_BAT(, 32360) +HANDLE_BAT(, 32361) +HANDLE_BAT(, 32362) +HANDLE_BAT(, 32363) +HANDLE_BAT(, 32364) +HANDLE_BAT(, 32365) +HANDLE_BAT(, 32366) +HANDLE_BAT(, 32367) +HANDLE_BAT(, 32368) +HANDLE_BAT(, 32369) +HANDLE_BAT(, 32370) +HANDLE_BAT(, 32371) +HANDLE_BAT(, 32372) +HANDLE_BAT(, 32373) +HANDLE_BAT(, 32374) +HANDLE_BAT(, 32375) +HANDLE_BAT(, 32376) +HANDLE_BAT(, 32377) +HANDLE_BAT(, 32378) +HANDLE_BAT(, 32379) +HANDLE_BAT(, 32380) +HANDLE_BAT(, 32381) +HANDLE_BAT(, 32382) +HANDLE_BAT(, 32383) +HANDLE_BAT(, 32384) +HANDLE_BAT(, 32385) +HANDLE_BAT(, 32386) +HANDLE_BAT(, 32387) +HANDLE_BAT(, 32388) +HANDLE_BAT(, 32389) +HANDLE_BAT(, 32390) +HANDLE_BAT(, 32391) +HANDLE_BAT(, 32392) +HANDLE_BAT(, 32393) +HANDLE_BAT(, 32394) +HANDLE_BAT(, 32395) +HANDLE_BAT(, 32396) +HANDLE_BAT(, 32397) +HANDLE_BAT(, 32398) +HANDLE_BAT(, 32399) +HANDLE_BAT(, 32400) +HANDLE_BAT(, 32401) +HANDLE_BAT(, 32402) +HANDLE_BAT(, 32403) +HANDLE_BAT(, 32404) +HANDLE_BAT(, 32405) +HANDLE_BAT(, 32406) +HANDLE_BAT(, 32407) +HANDLE_BAT(, 32408) +HANDLE_BAT(, 32409) +HANDLE_BAT(, 32410) +HANDLE_BAT(, 32411) +HANDLE_BAT(, 32412) +HANDLE_BAT(, 32413) +HANDLE_BAT(, 32414) +HANDLE_BAT(, 32415) +HANDLE_BAT(, 32416) +HANDLE_BAT(, 32417) +HANDLE_BAT(, 32418) +HANDLE_BAT(, 32419) +HANDLE_BAT(, 32420) +HANDLE_BAT(, 32421) +HANDLE_BAT(, 32422) +HANDLE_BAT(, 32423) +HANDLE_BAT(, 32424) +HANDLE_BAT(, 32425) +HANDLE_BAT(, 32426) +HANDLE_BAT(, 32427) +HANDLE_BAT(, 32428) +HANDLE_BAT(, 32429) +HANDLE_BAT(, 32430) +HANDLE_BAT(, 32431) +HANDLE_BAT(, 32432) +HANDLE_BAT(, 32433) +HANDLE_BAT(, 32434) +HANDLE_BAT(, 32435) +HANDLE_BAT(, 32436) +HANDLE_BAT(, 32437) +HANDLE_BAT(, 32438) +HANDLE_BAT(, 32439) +HANDLE_BAT(, 32440) +HANDLE_BAT(, 32441) +HANDLE_BAT(, 32442) +HANDLE_BAT(, 32443) +HANDLE_BAT(, 32444) +HANDLE_BAT(, 32445) +HANDLE_BAT(, 32446) +HANDLE_BAT(, 32447) +HANDLE_BAT(, 32448) +HANDLE_BAT(, 32449) +HANDLE_BAT(, 32450) +HANDLE_BAT(, 32451) +HANDLE_BAT(, 32452) +HANDLE_BAT(, 32453) +HANDLE_BAT(, 32454) +HANDLE_BAT(, 32455) +HANDLE_BAT(, 32456) +HANDLE_BAT(, 32457) +HANDLE_BAT(, 32458) +HANDLE_BAT(, 32459) +HANDLE_BAT(, 32460) +HANDLE_BAT(, 32461) +HANDLE_BAT(, 32462) +HANDLE_BAT(, 32463) +HANDLE_BAT(, 32464) +HANDLE_BAT(, 32465) +HANDLE_BAT(, 32466) +HANDLE_BAT(, 32467) +HANDLE_BAT(, 32468) +HANDLE_BAT(, 32469) +HANDLE_BAT(, 32470) +HANDLE_BAT(, 32471) +HANDLE_BAT(, 32472) +HANDLE_BAT(, 32473) +HANDLE_BAT(, 32474) +HANDLE_BAT(, 32475) +HANDLE_BAT(, 32476) +HANDLE_BAT(, 32477) +HANDLE_BAT(, 32478) +HANDLE_BAT(, 32479) +HANDLE_BAT(, 32480) +HANDLE_BAT(, 32481) +HANDLE_BAT(, 32482) +HANDLE_BAT(, 32483) +HANDLE_BAT(, 32484) +HANDLE_BAT(, 32485) +HANDLE_BAT(, 32486) +HANDLE_BAT(, 32487) +HANDLE_BAT(, 32488) +HANDLE_BAT(, 32489) +HANDLE_BAT(, 32490) +HANDLE_BAT(, 32491) +HANDLE_BAT(, 32492) +HANDLE_BAT(, 32493) +HANDLE_BAT(, 32494) +HANDLE_BAT(, 32495) +HANDLE_BAT(, 32496) +HANDLE_BAT(, 32497) +HANDLE_BAT(, 32498) +HANDLE_BAT(, 32499) +HANDLE_BAT(, 32500) +HANDLE_BAT(, 32501) +HANDLE_BAT(, 32502) +HANDLE_BAT(, 32503) +HANDLE_BAT(, 32504) +HANDLE_BAT(, 32505) +HANDLE_BAT(, 32506) +HANDLE_BAT(, 32507) +HANDLE_BAT(, 32508) +HANDLE_BAT(, 32509) +HANDLE_BAT(, 32510) +HANDLE_BAT(, 32511) +HANDLE_BAT(, 32512) +HANDLE_BAT(, 32513) +HANDLE_BAT(, 32514) +HANDLE_BAT(, 32515) +HANDLE_BAT(, 32516) +HANDLE_BAT(, 32517) +HANDLE_BAT(, 32518) +HANDLE_BAT(, 32519) +HANDLE_BAT(, 32520) +HANDLE_BAT(, 32521) +HANDLE_BAT(, 32522) +HANDLE_BAT(, 32523) +HANDLE_BAT(, 32524) +HANDLE_BAT(, 32525) +HANDLE_BAT(, 32526) +HANDLE_BAT(, 32527) +HANDLE_BAT(, 32528) +HANDLE_BAT(, 32529) +HANDLE_BAT(, 32530) +HANDLE_BAT(, 32531) +HANDLE_BAT(, 32532) +HANDLE_BAT(, 32533) +HANDLE_BAT(, 32534) +HANDLE_BAT(, 32535) +HANDLE_BAT(, 32536) +HANDLE_BAT(, 32537) +HANDLE_BAT(, 32538) +HANDLE_BAT(, 32539) +HANDLE_BAT(, 32540) +HANDLE_BAT(, 32541) +HANDLE_BAT(, 32542) +HANDLE_BAT(, 32543) +HANDLE_BAT(, 32544) +HANDLE_BAT(, 32545) +HANDLE_BAT(, 32546) +HANDLE_BAT(, 32547) +HANDLE_BAT(, 32548) +HANDLE_BAT(, 32549) +HANDLE_BAT(, 32550) +HANDLE_BAT(, 32551) +HANDLE_BAT(, 32552) +HANDLE_BAT(, 32553) +HANDLE_BAT(, 32554) +HANDLE_BAT(, 32555) +HANDLE_BAT(, 32556) +HANDLE_BAT(, 32557) +HANDLE_BAT(, 32558) +HANDLE_BAT(, 32559) +HANDLE_BAT(, 32560) +HANDLE_BAT(, 32561) +HANDLE_BAT(, 32562) +HANDLE_BAT(, 32563) +HANDLE_BAT(, 32564) +HANDLE_BAT(, 32565) +HANDLE_BAT(, 32566) +HANDLE_BAT(, 32567) +HANDLE_BAT(, 32568) +HANDLE_BAT(, 32569) +HANDLE_BAT(, 32570) +HANDLE_BAT(, 32571) +HANDLE_BAT(, 32572) +HANDLE_BAT(, 32573) +HANDLE_BAT(, 32574) +HANDLE_BAT(, 32575) +HANDLE_BAT(, 32576) +HANDLE_BAT(, 32577) +HANDLE_BAT(, 32578) +HANDLE_BAT(, 32579) +HANDLE_BAT(, 32580) +HANDLE_BAT(, 32581) +HANDLE_BAT(, 32582) +HANDLE_BAT(, 32583) +HANDLE_BAT(, 32584) +HANDLE_BAT(, 32585) +HANDLE_BAT(, 32586) +HANDLE_BAT(, 32587) +HANDLE_BAT(, 32588) +HANDLE_BAT(, 32589) +HANDLE_BAT(, 32590) +HANDLE_BAT(, 32591) +HANDLE_BAT(, 32592) +HANDLE_BAT(, 32593) +HANDLE_BAT(, 32594) +HANDLE_BAT(, 32595) +HANDLE_BAT(, 32596) +HANDLE_BAT(, 32597) +HANDLE_BAT(, 32598) +HANDLE_BAT(, 32599) +HANDLE_BAT(, 32600) +HANDLE_BAT(, 32601) +HANDLE_BAT(, 32602) +HANDLE_BAT(, 32603) +HANDLE_BAT(, 32604) +HANDLE_BAT(, 32605) +HANDLE_BAT(, 32606) +HANDLE_BAT(, 32607) +HANDLE_BAT(, 32608) +HANDLE_BAT(, 32609) +HANDLE_BAT(, 32610) +HANDLE_BAT(, 32611) +HANDLE_BAT(, 32612) +HANDLE_BAT(, 32613) +HANDLE_BAT(, 32614) +HANDLE_BAT(, 32615) +HANDLE_BAT(, 32616) +HANDLE_BAT(, 32617) +HANDLE_BAT(, 32618) +HANDLE_BAT(, 32619) +HANDLE_BAT(, 32620) +HANDLE_BAT(, 32621) +HANDLE_BAT(, 32622) +HANDLE_BAT(, 32623) +HANDLE_BAT(, 32624) +HANDLE_BAT(, 32625) +HANDLE_BAT(, 32626) +HANDLE_BAT(, 32627) +HANDLE_BAT(, 32628) +HANDLE_BAT(, 32629) +HANDLE_BAT(, 32630) +HANDLE_BAT(, 32631) +HANDLE_BAT(, 32632) +HANDLE_BAT(, 32633) +HANDLE_BAT(, 32634) +HANDLE_BAT(, 32635) +HANDLE_BAT(, 32636) +HANDLE_BAT(, 32637) +HANDLE_BAT(, 32638) +HANDLE_BAT(, 32639) +HANDLE_BAT(, 32640) +HANDLE_BAT(, 32641) +HANDLE_BAT(, 32642) +HANDLE_BAT(, 32643) +HANDLE_BAT(, 32644) +HANDLE_BAT(, 32645) +HANDLE_BAT(, 32646) +HANDLE_BAT(, 32647) +HANDLE_BAT(, 32648) +HANDLE_BAT(, 32649) +HANDLE_BAT(, 32650) +HANDLE_BAT(, 32651) +HANDLE_BAT(, 32652) +HANDLE_BAT(, 32653) +HANDLE_BAT(, 32654) +HANDLE_BAT(, 32655) +HANDLE_BAT(, 32656) +HANDLE_BAT(, 32657) +HANDLE_BAT(, 32658) +HANDLE_BAT(, 32659) +HANDLE_BAT(, 32660) +HANDLE_BAT(, 32661) +HANDLE_BAT(, 32662) +HANDLE_BAT(, 32663) +HANDLE_BAT(, 32664) +HANDLE_BAT(, 32665) +HANDLE_BAT(, 32666) +HANDLE_BAT(, 32667) +HANDLE_BAT(, 32668) +HANDLE_BAT(, 32669) +HANDLE_BAT(, 32670) +HANDLE_BAT(, 32671) +HANDLE_BAT(, 32672) +HANDLE_BAT(, 32673) +HANDLE_BAT(, 32674) +HANDLE_BAT(, 32675) +HANDLE_BAT(, 32676) +HANDLE_BAT(, 32677) +HANDLE_BAT(, 32678) +HANDLE_BAT(, 32679) +HANDLE_BAT(, 32680) +HANDLE_BAT(, 32681) +HANDLE_BAT(, 32682) +HANDLE_BAT(, 32683) +HANDLE_BAT(, 32684) +HANDLE_BAT(, 32685) +HANDLE_BAT(, 32686) +HANDLE_BAT(, 32687) +HANDLE_BAT(, 32688) +HANDLE_BAT(, 32689) +HANDLE_BAT(, 32690) +HANDLE_BAT(, 32691) +HANDLE_BAT(, 32692) +HANDLE_BAT(, 32693) +HANDLE_BAT(, 32694) +HANDLE_BAT(, 32695) +HANDLE_BAT(, 32696) +HANDLE_BAT(, 32697) +HANDLE_BAT(, 32698) +HANDLE_BAT(, 32699) +HANDLE_BAT(, 32700) +HANDLE_BAT(, 32701) +HANDLE_BAT(, 32702) +HANDLE_BAT(, 32703) +HANDLE_BAT(, 32704) +HANDLE_BAT(, 32705) +HANDLE_BAT(, 32706) +HANDLE_BAT(, 32707) +HANDLE_BAT(, 32708) +HANDLE_BAT(, 32709) +HANDLE_BAT(, 32710) +HANDLE_BAT(, 32711) +HANDLE_BAT(, 32712) +HANDLE_BAT(, 32713) +HANDLE_BAT(, 32714) +HANDLE_BAT(, 32715) +HANDLE_BAT(, 32716) +HANDLE_BAT(, 32717) +HANDLE_BAT(, 32718) +HANDLE_BAT(, 32719) +HANDLE_BAT(, 32720) +HANDLE_BAT(, 32721) +HANDLE_BAT(, 32722) +HANDLE_BAT(, 32723) +HANDLE_BAT(, 32724) +HANDLE_BAT(, 32725) +HANDLE_BAT(, 32726) +HANDLE_BAT(, 32727) +HANDLE_BAT(, 32728) +HANDLE_BAT(, 32729) +HANDLE_BAT(, 32730) +HANDLE_BAT(, 32731) +HANDLE_BAT(, 32732) +HANDLE_BAT(, 32733) +HANDLE_BAT(, 32734) +HANDLE_BAT(, 32735) +HANDLE_BAT(, 32736) +HANDLE_BAT(, 32737) +HANDLE_BAT(, 32738) +HANDLE_BAT(, 32739) +HANDLE_BAT(, 32740) +HANDLE_BAT(, 32741) +HANDLE_BAT(, 32742) +HANDLE_BAT(, 32743) +HANDLE_BAT(, 32744) +HANDLE_BAT(, 32745) +HANDLE_BAT(, 32746) +HANDLE_BAT(, 32747) +HANDLE_BAT(, 32748) +HANDLE_BAT(, 32749) +HANDLE_BAT(, 32750) +HANDLE_BAT(, 32751) +HANDLE_BAT(, 32752) +HANDLE_BAT(, 32753) +HANDLE_BAT(, 32754) +HANDLE_BAT(, 32755) +HANDLE_BAT(, 32756) +HANDLE_BAT(, 32757) +HANDLE_BAT(, 32758) +HANDLE_BAT(, 32759) +HANDLE_BAT(, 32760) +HANDLE_BAT(, 32761) +HANDLE_BAT(, 32762) +HANDLE_BAT(, 32763) +HANDLE_BAT(, 32764) +HANDLE_BAT(, 32765) +HANDLE_BAT(, 32766) +HANDLE_BAT(, 32767) +HANDLE_BAT(, 32768) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 31745) +HANDLE_BAT(APINT_TYPE_PREFIX, 31746) +HANDLE_BAT(APINT_TYPE_PREFIX, 31747) +HANDLE_BAT(APINT_TYPE_PREFIX, 31748) +HANDLE_BAT(APINT_TYPE_PREFIX, 31749) +HANDLE_BAT(APINT_TYPE_PREFIX, 31750) +HANDLE_BAT(APINT_TYPE_PREFIX, 31751) +HANDLE_BAT(APINT_TYPE_PREFIX, 31752) +HANDLE_BAT(APINT_TYPE_PREFIX, 31753) +HANDLE_BAT(APINT_TYPE_PREFIX, 31754) +HANDLE_BAT(APINT_TYPE_PREFIX, 31755) +HANDLE_BAT(APINT_TYPE_PREFIX, 31756) +HANDLE_BAT(APINT_TYPE_PREFIX, 31757) +HANDLE_BAT(APINT_TYPE_PREFIX, 31758) +HANDLE_BAT(APINT_TYPE_PREFIX, 31759) +HANDLE_BAT(APINT_TYPE_PREFIX, 31760) +HANDLE_BAT(APINT_TYPE_PREFIX, 31761) +HANDLE_BAT(APINT_TYPE_PREFIX, 31762) +HANDLE_BAT(APINT_TYPE_PREFIX, 31763) +HANDLE_BAT(APINT_TYPE_PREFIX, 31764) +HANDLE_BAT(APINT_TYPE_PREFIX, 31765) +HANDLE_BAT(APINT_TYPE_PREFIX, 31766) +HANDLE_BAT(APINT_TYPE_PREFIX, 31767) +HANDLE_BAT(APINT_TYPE_PREFIX, 31768) +HANDLE_BAT(APINT_TYPE_PREFIX, 31769) +HANDLE_BAT(APINT_TYPE_PREFIX, 31770) +HANDLE_BAT(APINT_TYPE_PREFIX, 31771) +HANDLE_BAT(APINT_TYPE_PREFIX, 31772) +HANDLE_BAT(APINT_TYPE_PREFIX, 31773) +HANDLE_BAT(APINT_TYPE_PREFIX, 31774) +HANDLE_BAT(APINT_TYPE_PREFIX, 31775) +HANDLE_BAT(APINT_TYPE_PREFIX, 31776) +HANDLE_BAT(APINT_TYPE_PREFIX, 31777) +HANDLE_BAT(APINT_TYPE_PREFIX, 31778) +HANDLE_BAT(APINT_TYPE_PREFIX, 31779) +HANDLE_BAT(APINT_TYPE_PREFIX, 31780) +HANDLE_BAT(APINT_TYPE_PREFIX, 31781) +HANDLE_BAT(APINT_TYPE_PREFIX, 31782) +HANDLE_BAT(APINT_TYPE_PREFIX, 31783) +HANDLE_BAT(APINT_TYPE_PREFIX, 31784) +HANDLE_BAT(APINT_TYPE_PREFIX, 31785) +HANDLE_BAT(APINT_TYPE_PREFIX, 31786) +HANDLE_BAT(APINT_TYPE_PREFIX, 31787) +HANDLE_BAT(APINT_TYPE_PREFIX, 31788) +HANDLE_BAT(APINT_TYPE_PREFIX, 31789) +HANDLE_BAT(APINT_TYPE_PREFIX, 31790) +HANDLE_BAT(APINT_TYPE_PREFIX, 31791) +HANDLE_BAT(APINT_TYPE_PREFIX, 31792) +HANDLE_BAT(APINT_TYPE_PREFIX, 31793) +HANDLE_BAT(APINT_TYPE_PREFIX, 31794) +HANDLE_BAT(APINT_TYPE_PREFIX, 31795) +HANDLE_BAT(APINT_TYPE_PREFIX, 31796) +HANDLE_BAT(APINT_TYPE_PREFIX, 31797) +HANDLE_BAT(APINT_TYPE_PREFIX, 31798) +HANDLE_BAT(APINT_TYPE_PREFIX, 31799) +HANDLE_BAT(APINT_TYPE_PREFIX, 31800) +HANDLE_BAT(APINT_TYPE_PREFIX, 31801) +HANDLE_BAT(APINT_TYPE_PREFIX, 31802) +HANDLE_BAT(APINT_TYPE_PREFIX, 31803) +HANDLE_BAT(APINT_TYPE_PREFIX, 31804) +HANDLE_BAT(APINT_TYPE_PREFIX, 31805) +HANDLE_BAT(APINT_TYPE_PREFIX, 31806) +HANDLE_BAT(APINT_TYPE_PREFIX, 31807) +HANDLE_BAT(APINT_TYPE_PREFIX, 31808) +HANDLE_BAT(APINT_TYPE_PREFIX, 31809) +HANDLE_BAT(APINT_TYPE_PREFIX, 31810) +HANDLE_BAT(APINT_TYPE_PREFIX, 31811) +HANDLE_BAT(APINT_TYPE_PREFIX, 31812) +HANDLE_BAT(APINT_TYPE_PREFIX, 31813) +HANDLE_BAT(APINT_TYPE_PREFIX, 31814) +HANDLE_BAT(APINT_TYPE_PREFIX, 31815) +HANDLE_BAT(APINT_TYPE_PREFIX, 31816) +HANDLE_BAT(APINT_TYPE_PREFIX, 31817) +HANDLE_BAT(APINT_TYPE_PREFIX, 31818) +HANDLE_BAT(APINT_TYPE_PREFIX, 31819) +HANDLE_BAT(APINT_TYPE_PREFIX, 31820) +HANDLE_BAT(APINT_TYPE_PREFIX, 31821) +HANDLE_BAT(APINT_TYPE_PREFIX, 31822) +HANDLE_BAT(APINT_TYPE_PREFIX, 31823) +HANDLE_BAT(APINT_TYPE_PREFIX, 31824) +HANDLE_BAT(APINT_TYPE_PREFIX, 31825) +HANDLE_BAT(APINT_TYPE_PREFIX, 31826) +HANDLE_BAT(APINT_TYPE_PREFIX, 31827) +HANDLE_BAT(APINT_TYPE_PREFIX, 31828) +HANDLE_BAT(APINT_TYPE_PREFIX, 31829) +HANDLE_BAT(APINT_TYPE_PREFIX, 31830) +HANDLE_BAT(APINT_TYPE_PREFIX, 31831) +HANDLE_BAT(APINT_TYPE_PREFIX, 31832) +HANDLE_BAT(APINT_TYPE_PREFIX, 31833) +HANDLE_BAT(APINT_TYPE_PREFIX, 31834) +HANDLE_BAT(APINT_TYPE_PREFIX, 31835) +HANDLE_BAT(APINT_TYPE_PREFIX, 31836) +HANDLE_BAT(APINT_TYPE_PREFIX, 31837) +HANDLE_BAT(APINT_TYPE_PREFIX, 31838) +HANDLE_BAT(APINT_TYPE_PREFIX, 31839) +HANDLE_BAT(APINT_TYPE_PREFIX, 31840) +HANDLE_BAT(APINT_TYPE_PREFIX, 31841) +HANDLE_BAT(APINT_TYPE_PREFIX, 31842) +HANDLE_BAT(APINT_TYPE_PREFIX, 31843) +HANDLE_BAT(APINT_TYPE_PREFIX, 31844) +HANDLE_BAT(APINT_TYPE_PREFIX, 31845) +HANDLE_BAT(APINT_TYPE_PREFIX, 31846) +HANDLE_BAT(APINT_TYPE_PREFIX, 31847) +HANDLE_BAT(APINT_TYPE_PREFIX, 31848) +HANDLE_BAT(APINT_TYPE_PREFIX, 31849) +HANDLE_BAT(APINT_TYPE_PREFIX, 31850) +HANDLE_BAT(APINT_TYPE_PREFIX, 31851) +HANDLE_BAT(APINT_TYPE_PREFIX, 31852) +HANDLE_BAT(APINT_TYPE_PREFIX, 31853) +HANDLE_BAT(APINT_TYPE_PREFIX, 31854) +HANDLE_BAT(APINT_TYPE_PREFIX, 31855) +HANDLE_BAT(APINT_TYPE_PREFIX, 31856) +HANDLE_BAT(APINT_TYPE_PREFIX, 31857) +HANDLE_BAT(APINT_TYPE_PREFIX, 31858) +HANDLE_BAT(APINT_TYPE_PREFIX, 31859) +HANDLE_BAT(APINT_TYPE_PREFIX, 31860) +HANDLE_BAT(APINT_TYPE_PREFIX, 31861) +HANDLE_BAT(APINT_TYPE_PREFIX, 31862) +HANDLE_BAT(APINT_TYPE_PREFIX, 31863) +HANDLE_BAT(APINT_TYPE_PREFIX, 31864) +HANDLE_BAT(APINT_TYPE_PREFIX, 31865) +HANDLE_BAT(APINT_TYPE_PREFIX, 31866) +HANDLE_BAT(APINT_TYPE_PREFIX, 31867) +HANDLE_BAT(APINT_TYPE_PREFIX, 31868) +HANDLE_BAT(APINT_TYPE_PREFIX, 31869) +HANDLE_BAT(APINT_TYPE_PREFIX, 31870) +HANDLE_BAT(APINT_TYPE_PREFIX, 31871) +HANDLE_BAT(APINT_TYPE_PREFIX, 31872) +HANDLE_BAT(APINT_TYPE_PREFIX, 31873) +HANDLE_BAT(APINT_TYPE_PREFIX, 31874) +HANDLE_BAT(APINT_TYPE_PREFIX, 31875) +HANDLE_BAT(APINT_TYPE_PREFIX, 31876) +HANDLE_BAT(APINT_TYPE_PREFIX, 31877) +HANDLE_BAT(APINT_TYPE_PREFIX, 31878) +HANDLE_BAT(APINT_TYPE_PREFIX, 31879) +HANDLE_BAT(APINT_TYPE_PREFIX, 31880) +HANDLE_BAT(APINT_TYPE_PREFIX, 31881) +HANDLE_BAT(APINT_TYPE_PREFIX, 31882) +HANDLE_BAT(APINT_TYPE_PREFIX, 31883) +HANDLE_BAT(APINT_TYPE_PREFIX, 31884) +HANDLE_BAT(APINT_TYPE_PREFIX, 31885) +HANDLE_BAT(APINT_TYPE_PREFIX, 31886) +HANDLE_BAT(APINT_TYPE_PREFIX, 31887) +HANDLE_BAT(APINT_TYPE_PREFIX, 31888) +HANDLE_BAT(APINT_TYPE_PREFIX, 31889) +HANDLE_BAT(APINT_TYPE_PREFIX, 31890) +HANDLE_BAT(APINT_TYPE_PREFIX, 31891) +HANDLE_BAT(APINT_TYPE_PREFIX, 31892) +HANDLE_BAT(APINT_TYPE_PREFIX, 31893) +HANDLE_BAT(APINT_TYPE_PREFIX, 31894) +HANDLE_BAT(APINT_TYPE_PREFIX, 31895) +HANDLE_BAT(APINT_TYPE_PREFIX, 31896) +HANDLE_BAT(APINT_TYPE_PREFIX, 31897) +HANDLE_BAT(APINT_TYPE_PREFIX, 31898) +HANDLE_BAT(APINT_TYPE_PREFIX, 31899) +HANDLE_BAT(APINT_TYPE_PREFIX, 31900) +HANDLE_BAT(APINT_TYPE_PREFIX, 31901) +HANDLE_BAT(APINT_TYPE_PREFIX, 31902) +HANDLE_BAT(APINT_TYPE_PREFIX, 31903) +HANDLE_BAT(APINT_TYPE_PREFIX, 31904) +HANDLE_BAT(APINT_TYPE_PREFIX, 31905) +HANDLE_BAT(APINT_TYPE_PREFIX, 31906) +HANDLE_BAT(APINT_TYPE_PREFIX, 31907) +HANDLE_BAT(APINT_TYPE_PREFIX, 31908) +HANDLE_BAT(APINT_TYPE_PREFIX, 31909) +HANDLE_BAT(APINT_TYPE_PREFIX, 31910) +HANDLE_BAT(APINT_TYPE_PREFIX, 31911) +HANDLE_BAT(APINT_TYPE_PREFIX, 31912) +HANDLE_BAT(APINT_TYPE_PREFIX, 31913) +HANDLE_BAT(APINT_TYPE_PREFIX, 31914) +HANDLE_BAT(APINT_TYPE_PREFIX, 31915) +HANDLE_BAT(APINT_TYPE_PREFIX, 31916) +HANDLE_BAT(APINT_TYPE_PREFIX, 31917) +HANDLE_BAT(APINT_TYPE_PREFIX, 31918) +HANDLE_BAT(APINT_TYPE_PREFIX, 31919) +HANDLE_BAT(APINT_TYPE_PREFIX, 31920) +HANDLE_BAT(APINT_TYPE_PREFIX, 31921) +HANDLE_BAT(APINT_TYPE_PREFIX, 31922) +HANDLE_BAT(APINT_TYPE_PREFIX, 31923) +HANDLE_BAT(APINT_TYPE_PREFIX, 31924) +HANDLE_BAT(APINT_TYPE_PREFIX, 31925) +HANDLE_BAT(APINT_TYPE_PREFIX, 31926) +HANDLE_BAT(APINT_TYPE_PREFIX, 31927) +HANDLE_BAT(APINT_TYPE_PREFIX, 31928) +HANDLE_BAT(APINT_TYPE_PREFIX, 31929) +HANDLE_BAT(APINT_TYPE_PREFIX, 31930) +HANDLE_BAT(APINT_TYPE_PREFIX, 31931) +HANDLE_BAT(APINT_TYPE_PREFIX, 31932) +HANDLE_BAT(APINT_TYPE_PREFIX, 31933) +HANDLE_BAT(APINT_TYPE_PREFIX, 31934) +HANDLE_BAT(APINT_TYPE_PREFIX, 31935) +HANDLE_BAT(APINT_TYPE_PREFIX, 31936) +HANDLE_BAT(APINT_TYPE_PREFIX, 31937) +HANDLE_BAT(APINT_TYPE_PREFIX, 31938) +HANDLE_BAT(APINT_TYPE_PREFIX, 31939) +HANDLE_BAT(APINT_TYPE_PREFIX, 31940) +HANDLE_BAT(APINT_TYPE_PREFIX, 31941) +HANDLE_BAT(APINT_TYPE_PREFIX, 31942) +HANDLE_BAT(APINT_TYPE_PREFIX, 31943) +HANDLE_BAT(APINT_TYPE_PREFIX, 31944) +HANDLE_BAT(APINT_TYPE_PREFIX, 31945) +HANDLE_BAT(APINT_TYPE_PREFIX, 31946) +HANDLE_BAT(APINT_TYPE_PREFIX, 31947) +HANDLE_BAT(APINT_TYPE_PREFIX, 31948) +HANDLE_BAT(APINT_TYPE_PREFIX, 31949) +HANDLE_BAT(APINT_TYPE_PREFIX, 31950) +HANDLE_BAT(APINT_TYPE_PREFIX, 31951) +HANDLE_BAT(APINT_TYPE_PREFIX, 31952) +HANDLE_BAT(APINT_TYPE_PREFIX, 31953) +HANDLE_BAT(APINT_TYPE_PREFIX, 31954) +HANDLE_BAT(APINT_TYPE_PREFIX, 31955) +HANDLE_BAT(APINT_TYPE_PREFIX, 31956) +HANDLE_BAT(APINT_TYPE_PREFIX, 31957) +HANDLE_BAT(APINT_TYPE_PREFIX, 31958) +HANDLE_BAT(APINT_TYPE_PREFIX, 31959) +HANDLE_BAT(APINT_TYPE_PREFIX, 31960) +HANDLE_BAT(APINT_TYPE_PREFIX, 31961) +HANDLE_BAT(APINT_TYPE_PREFIX, 31962) +HANDLE_BAT(APINT_TYPE_PREFIX, 31963) +HANDLE_BAT(APINT_TYPE_PREFIX, 31964) +HANDLE_BAT(APINT_TYPE_PREFIX, 31965) +HANDLE_BAT(APINT_TYPE_PREFIX, 31966) +HANDLE_BAT(APINT_TYPE_PREFIX, 31967) +HANDLE_BAT(APINT_TYPE_PREFIX, 31968) +HANDLE_BAT(APINT_TYPE_PREFIX, 31969) +HANDLE_BAT(APINT_TYPE_PREFIX, 31970) +HANDLE_BAT(APINT_TYPE_PREFIX, 31971) +HANDLE_BAT(APINT_TYPE_PREFIX, 31972) +HANDLE_BAT(APINT_TYPE_PREFIX, 31973) +HANDLE_BAT(APINT_TYPE_PREFIX, 31974) +HANDLE_BAT(APINT_TYPE_PREFIX, 31975) +HANDLE_BAT(APINT_TYPE_PREFIX, 31976) +HANDLE_BAT(APINT_TYPE_PREFIX, 31977) +HANDLE_BAT(APINT_TYPE_PREFIX, 31978) +HANDLE_BAT(APINT_TYPE_PREFIX, 31979) +HANDLE_BAT(APINT_TYPE_PREFIX, 31980) +HANDLE_BAT(APINT_TYPE_PREFIX, 31981) +HANDLE_BAT(APINT_TYPE_PREFIX, 31982) +HANDLE_BAT(APINT_TYPE_PREFIX, 31983) +HANDLE_BAT(APINT_TYPE_PREFIX, 31984) +HANDLE_BAT(APINT_TYPE_PREFIX, 31985) +HANDLE_BAT(APINT_TYPE_PREFIX, 31986) +HANDLE_BAT(APINT_TYPE_PREFIX, 31987) +HANDLE_BAT(APINT_TYPE_PREFIX, 31988) +HANDLE_BAT(APINT_TYPE_PREFIX, 31989) +HANDLE_BAT(APINT_TYPE_PREFIX, 31990) +HANDLE_BAT(APINT_TYPE_PREFIX, 31991) +HANDLE_BAT(APINT_TYPE_PREFIX, 31992) +HANDLE_BAT(APINT_TYPE_PREFIX, 31993) +HANDLE_BAT(APINT_TYPE_PREFIX, 31994) +HANDLE_BAT(APINT_TYPE_PREFIX, 31995) +HANDLE_BAT(APINT_TYPE_PREFIX, 31996) +HANDLE_BAT(APINT_TYPE_PREFIX, 31997) +HANDLE_BAT(APINT_TYPE_PREFIX, 31998) +HANDLE_BAT(APINT_TYPE_PREFIX, 31999) +HANDLE_BAT(APINT_TYPE_PREFIX, 32000) +HANDLE_BAT(APINT_TYPE_PREFIX, 32001) +HANDLE_BAT(APINT_TYPE_PREFIX, 32002) +HANDLE_BAT(APINT_TYPE_PREFIX, 32003) +HANDLE_BAT(APINT_TYPE_PREFIX, 32004) +HANDLE_BAT(APINT_TYPE_PREFIX, 32005) +HANDLE_BAT(APINT_TYPE_PREFIX, 32006) +HANDLE_BAT(APINT_TYPE_PREFIX, 32007) +HANDLE_BAT(APINT_TYPE_PREFIX, 32008) +HANDLE_BAT(APINT_TYPE_PREFIX, 32009) +HANDLE_BAT(APINT_TYPE_PREFIX, 32010) +HANDLE_BAT(APINT_TYPE_PREFIX, 32011) +HANDLE_BAT(APINT_TYPE_PREFIX, 32012) +HANDLE_BAT(APINT_TYPE_PREFIX, 32013) +HANDLE_BAT(APINT_TYPE_PREFIX, 32014) +HANDLE_BAT(APINT_TYPE_PREFIX, 32015) +HANDLE_BAT(APINT_TYPE_PREFIX, 32016) +HANDLE_BAT(APINT_TYPE_PREFIX, 32017) +HANDLE_BAT(APINT_TYPE_PREFIX, 32018) +HANDLE_BAT(APINT_TYPE_PREFIX, 32019) +HANDLE_BAT(APINT_TYPE_PREFIX, 32020) +HANDLE_BAT(APINT_TYPE_PREFIX, 32021) +HANDLE_BAT(APINT_TYPE_PREFIX, 32022) +HANDLE_BAT(APINT_TYPE_PREFIX, 32023) +HANDLE_BAT(APINT_TYPE_PREFIX, 32024) +HANDLE_BAT(APINT_TYPE_PREFIX, 32025) +HANDLE_BAT(APINT_TYPE_PREFIX, 32026) +HANDLE_BAT(APINT_TYPE_PREFIX, 32027) +HANDLE_BAT(APINT_TYPE_PREFIX, 32028) +HANDLE_BAT(APINT_TYPE_PREFIX, 32029) +HANDLE_BAT(APINT_TYPE_PREFIX, 32030) +HANDLE_BAT(APINT_TYPE_PREFIX, 32031) +HANDLE_BAT(APINT_TYPE_PREFIX, 32032) +HANDLE_BAT(APINT_TYPE_PREFIX, 32033) +HANDLE_BAT(APINT_TYPE_PREFIX, 32034) +HANDLE_BAT(APINT_TYPE_PREFIX, 32035) +HANDLE_BAT(APINT_TYPE_PREFIX, 32036) +HANDLE_BAT(APINT_TYPE_PREFIX, 32037) +HANDLE_BAT(APINT_TYPE_PREFIX, 32038) +HANDLE_BAT(APINT_TYPE_PREFIX, 32039) +HANDLE_BAT(APINT_TYPE_PREFIX, 32040) +HANDLE_BAT(APINT_TYPE_PREFIX, 32041) +HANDLE_BAT(APINT_TYPE_PREFIX, 32042) +HANDLE_BAT(APINT_TYPE_PREFIX, 32043) +HANDLE_BAT(APINT_TYPE_PREFIX, 32044) +HANDLE_BAT(APINT_TYPE_PREFIX, 32045) +HANDLE_BAT(APINT_TYPE_PREFIX, 32046) +HANDLE_BAT(APINT_TYPE_PREFIX, 32047) +HANDLE_BAT(APINT_TYPE_PREFIX, 32048) +HANDLE_BAT(APINT_TYPE_PREFIX, 32049) +HANDLE_BAT(APINT_TYPE_PREFIX, 32050) +HANDLE_BAT(APINT_TYPE_PREFIX, 32051) +HANDLE_BAT(APINT_TYPE_PREFIX, 32052) +HANDLE_BAT(APINT_TYPE_PREFIX, 32053) +HANDLE_BAT(APINT_TYPE_PREFIX, 32054) +HANDLE_BAT(APINT_TYPE_PREFIX, 32055) +HANDLE_BAT(APINT_TYPE_PREFIX, 32056) +HANDLE_BAT(APINT_TYPE_PREFIX, 32057) +HANDLE_BAT(APINT_TYPE_PREFIX, 32058) +HANDLE_BAT(APINT_TYPE_PREFIX, 32059) +HANDLE_BAT(APINT_TYPE_PREFIX, 32060) +HANDLE_BAT(APINT_TYPE_PREFIX, 32061) +HANDLE_BAT(APINT_TYPE_PREFIX, 32062) +HANDLE_BAT(APINT_TYPE_PREFIX, 32063) +HANDLE_BAT(APINT_TYPE_PREFIX, 32064) +HANDLE_BAT(APINT_TYPE_PREFIX, 32065) +HANDLE_BAT(APINT_TYPE_PREFIX, 32066) +HANDLE_BAT(APINT_TYPE_PREFIX, 32067) +HANDLE_BAT(APINT_TYPE_PREFIX, 32068) +HANDLE_BAT(APINT_TYPE_PREFIX, 32069) +HANDLE_BAT(APINT_TYPE_PREFIX, 32070) +HANDLE_BAT(APINT_TYPE_PREFIX, 32071) +HANDLE_BAT(APINT_TYPE_PREFIX, 32072) +HANDLE_BAT(APINT_TYPE_PREFIX, 32073) +HANDLE_BAT(APINT_TYPE_PREFIX, 32074) +HANDLE_BAT(APINT_TYPE_PREFIX, 32075) +HANDLE_BAT(APINT_TYPE_PREFIX, 32076) +HANDLE_BAT(APINT_TYPE_PREFIX, 32077) +HANDLE_BAT(APINT_TYPE_PREFIX, 32078) +HANDLE_BAT(APINT_TYPE_PREFIX, 32079) +HANDLE_BAT(APINT_TYPE_PREFIX, 32080) +HANDLE_BAT(APINT_TYPE_PREFIX, 32081) +HANDLE_BAT(APINT_TYPE_PREFIX, 32082) +HANDLE_BAT(APINT_TYPE_PREFIX, 32083) +HANDLE_BAT(APINT_TYPE_PREFIX, 32084) +HANDLE_BAT(APINT_TYPE_PREFIX, 32085) +HANDLE_BAT(APINT_TYPE_PREFIX, 32086) +HANDLE_BAT(APINT_TYPE_PREFIX, 32087) +HANDLE_BAT(APINT_TYPE_PREFIX, 32088) +HANDLE_BAT(APINT_TYPE_PREFIX, 32089) +HANDLE_BAT(APINT_TYPE_PREFIX, 32090) +HANDLE_BAT(APINT_TYPE_PREFIX, 32091) +HANDLE_BAT(APINT_TYPE_PREFIX, 32092) +HANDLE_BAT(APINT_TYPE_PREFIX, 32093) +HANDLE_BAT(APINT_TYPE_PREFIX, 32094) +HANDLE_BAT(APINT_TYPE_PREFIX, 32095) +HANDLE_BAT(APINT_TYPE_PREFIX, 32096) +HANDLE_BAT(APINT_TYPE_PREFIX, 32097) +HANDLE_BAT(APINT_TYPE_PREFIX, 32098) +HANDLE_BAT(APINT_TYPE_PREFIX, 32099) +HANDLE_BAT(APINT_TYPE_PREFIX, 32100) +HANDLE_BAT(APINT_TYPE_PREFIX, 32101) +HANDLE_BAT(APINT_TYPE_PREFIX, 32102) +HANDLE_BAT(APINT_TYPE_PREFIX, 32103) +HANDLE_BAT(APINT_TYPE_PREFIX, 32104) +HANDLE_BAT(APINT_TYPE_PREFIX, 32105) +HANDLE_BAT(APINT_TYPE_PREFIX, 32106) +HANDLE_BAT(APINT_TYPE_PREFIX, 32107) +HANDLE_BAT(APINT_TYPE_PREFIX, 32108) +HANDLE_BAT(APINT_TYPE_PREFIX, 32109) +HANDLE_BAT(APINT_TYPE_PREFIX, 32110) +HANDLE_BAT(APINT_TYPE_PREFIX, 32111) +HANDLE_BAT(APINT_TYPE_PREFIX, 32112) +HANDLE_BAT(APINT_TYPE_PREFIX, 32113) +HANDLE_BAT(APINT_TYPE_PREFIX, 32114) +HANDLE_BAT(APINT_TYPE_PREFIX, 32115) +HANDLE_BAT(APINT_TYPE_PREFIX, 32116) +HANDLE_BAT(APINT_TYPE_PREFIX, 32117) +HANDLE_BAT(APINT_TYPE_PREFIX, 32118) +HANDLE_BAT(APINT_TYPE_PREFIX, 32119) +HANDLE_BAT(APINT_TYPE_PREFIX, 32120) +HANDLE_BAT(APINT_TYPE_PREFIX, 32121) +HANDLE_BAT(APINT_TYPE_PREFIX, 32122) +HANDLE_BAT(APINT_TYPE_PREFIX, 32123) +HANDLE_BAT(APINT_TYPE_PREFIX, 32124) +HANDLE_BAT(APINT_TYPE_PREFIX, 32125) +HANDLE_BAT(APINT_TYPE_PREFIX, 32126) +HANDLE_BAT(APINT_TYPE_PREFIX, 32127) +HANDLE_BAT(APINT_TYPE_PREFIX, 32128) +HANDLE_BAT(APINT_TYPE_PREFIX, 32129) +HANDLE_BAT(APINT_TYPE_PREFIX, 32130) +HANDLE_BAT(APINT_TYPE_PREFIX, 32131) +HANDLE_BAT(APINT_TYPE_PREFIX, 32132) +HANDLE_BAT(APINT_TYPE_PREFIX, 32133) +HANDLE_BAT(APINT_TYPE_PREFIX, 32134) +HANDLE_BAT(APINT_TYPE_PREFIX, 32135) +HANDLE_BAT(APINT_TYPE_PREFIX, 32136) +HANDLE_BAT(APINT_TYPE_PREFIX, 32137) +HANDLE_BAT(APINT_TYPE_PREFIX, 32138) +HANDLE_BAT(APINT_TYPE_PREFIX, 32139) +HANDLE_BAT(APINT_TYPE_PREFIX, 32140) +HANDLE_BAT(APINT_TYPE_PREFIX, 32141) +HANDLE_BAT(APINT_TYPE_PREFIX, 32142) +HANDLE_BAT(APINT_TYPE_PREFIX, 32143) +HANDLE_BAT(APINT_TYPE_PREFIX, 32144) +HANDLE_BAT(APINT_TYPE_PREFIX, 32145) +HANDLE_BAT(APINT_TYPE_PREFIX, 32146) +HANDLE_BAT(APINT_TYPE_PREFIX, 32147) +HANDLE_BAT(APINT_TYPE_PREFIX, 32148) +HANDLE_BAT(APINT_TYPE_PREFIX, 32149) +HANDLE_BAT(APINT_TYPE_PREFIX, 32150) +HANDLE_BAT(APINT_TYPE_PREFIX, 32151) +HANDLE_BAT(APINT_TYPE_PREFIX, 32152) +HANDLE_BAT(APINT_TYPE_PREFIX, 32153) +HANDLE_BAT(APINT_TYPE_PREFIX, 32154) +HANDLE_BAT(APINT_TYPE_PREFIX, 32155) +HANDLE_BAT(APINT_TYPE_PREFIX, 32156) +HANDLE_BAT(APINT_TYPE_PREFIX, 32157) +HANDLE_BAT(APINT_TYPE_PREFIX, 32158) +HANDLE_BAT(APINT_TYPE_PREFIX, 32159) +HANDLE_BAT(APINT_TYPE_PREFIX, 32160) +HANDLE_BAT(APINT_TYPE_PREFIX, 32161) +HANDLE_BAT(APINT_TYPE_PREFIX, 32162) +HANDLE_BAT(APINT_TYPE_PREFIX, 32163) +HANDLE_BAT(APINT_TYPE_PREFIX, 32164) +HANDLE_BAT(APINT_TYPE_PREFIX, 32165) +HANDLE_BAT(APINT_TYPE_PREFIX, 32166) +HANDLE_BAT(APINT_TYPE_PREFIX, 32167) +HANDLE_BAT(APINT_TYPE_PREFIX, 32168) +HANDLE_BAT(APINT_TYPE_PREFIX, 32169) +HANDLE_BAT(APINT_TYPE_PREFIX, 32170) +HANDLE_BAT(APINT_TYPE_PREFIX, 32171) +HANDLE_BAT(APINT_TYPE_PREFIX, 32172) +HANDLE_BAT(APINT_TYPE_PREFIX, 32173) +HANDLE_BAT(APINT_TYPE_PREFIX, 32174) +HANDLE_BAT(APINT_TYPE_PREFIX, 32175) +HANDLE_BAT(APINT_TYPE_PREFIX, 32176) +HANDLE_BAT(APINT_TYPE_PREFIX, 32177) +HANDLE_BAT(APINT_TYPE_PREFIX, 32178) +HANDLE_BAT(APINT_TYPE_PREFIX, 32179) +HANDLE_BAT(APINT_TYPE_PREFIX, 32180) +HANDLE_BAT(APINT_TYPE_PREFIX, 32181) +HANDLE_BAT(APINT_TYPE_PREFIX, 32182) +HANDLE_BAT(APINT_TYPE_PREFIX, 32183) +HANDLE_BAT(APINT_TYPE_PREFIX, 32184) +HANDLE_BAT(APINT_TYPE_PREFIX, 32185) +HANDLE_BAT(APINT_TYPE_PREFIX, 32186) +HANDLE_BAT(APINT_TYPE_PREFIX, 32187) +HANDLE_BAT(APINT_TYPE_PREFIX, 32188) +HANDLE_BAT(APINT_TYPE_PREFIX, 32189) +HANDLE_BAT(APINT_TYPE_PREFIX, 32190) +HANDLE_BAT(APINT_TYPE_PREFIX, 32191) +HANDLE_BAT(APINT_TYPE_PREFIX, 32192) +HANDLE_BAT(APINT_TYPE_PREFIX, 32193) +HANDLE_BAT(APINT_TYPE_PREFIX, 32194) +HANDLE_BAT(APINT_TYPE_PREFIX, 32195) +HANDLE_BAT(APINT_TYPE_PREFIX, 32196) +HANDLE_BAT(APINT_TYPE_PREFIX, 32197) +HANDLE_BAT(APINT_TYPE_PREFIX, 32198) +HANDLE_BAT(APINT_TYPE_PREFIX, 32199) +HANDLE_BAT(APINT_TYPE_PREFIX, 32200) +HANDLE_BAT(APINT_TYPE_PREFIX, 32201) +HANDLE_BAT(APINT_TYPE_PREFIX, 32202) +HANDLE_BAT(APINT_TYPE_PREFIX, 32203) +HANDLE_BAT(APINT_TYPE_PREFIX, 32204) +HANDLE_BAT(APINT_TYPE_PREFIX, 32205) +HANDLE_BAT(APINT_TYPE_PREFIX, 32206) +HANDLE_BAT(APINT_TYPE_PREFIX, 32207) +HANDLE_BAT(APINT_TYPE_PREFIX, 32208) +HANDLE_BAT(APINT_TYPE_PREFIX, 32209) +HANDLE_BAT(APINT_TYPE_PREFIX, 32210) +HANDLE_BAT(APINT_TYPE_PREFIX, 32211) +HANDLE_BAT(APINT_TYPE_PREFIX, 32212) +HANDLE_BAT(APINT_TYPE_PREFIX, 32213) +HANDLE_BAT(APINT_TYPE_PREFIX, 32214) +HANDLE_BAT(APINT_TYPE_PREFIX, 32215) +HANDLE_BAT(APINT_TYPE_PREFIX, 32216) +HANDLE_BAT(APINT_TYPE_PREFIX, 32217) +HANDLE_BAT(APINT_TYPE_PREFIX, 32218) +HANDLE_BAT(APINT_TYPE_PREFIX, 32219) +HANDLE_BAT(APINT_TYPE_PREFIX, 32220) +HANDLE_BAT(APINT_TYPE_PREFIX, 32221) +HANDLE_BAT(APINT_TYPE_PREFIX, 32222) +HANDLE_BAT(APINT_TYPE_PREFIX, 32223) +HANDLE_BAT(APINT_TYPE_PREFIX, 32224) +HANDLE_BAT(APINT_TYPE_PREFIX, 32225) +HANDLE_BAT(APINT_TYPE_PREFIX, 32226) +HANDLE_BAT(APINT_TYPE_PREFIX, 32227) +HANDLE_BAT(APINT_TYPE_PREFIX, 32228) +HANDLE_BAT(APINT_TYPE_PREFIX, 32229) +HANDLE_BAT(APINT_TYPE_PREFIX, 32230) +HANDLE_BAT(APINT_TYPE_PREFIX, 32231) +HANDLE_BAT(APINT_TYPE_PREFIX, 32232) +HANDLE_BAT(APINT_TYPE_PREFIX, 32233) +HANDLE_BAT(APINT_TYPE_PREFIX, 32234) +HANDLE_BAT(APINT_TYPE_PREFIX, 32235) +HANDLE_BAT(APINT_TYPE_PREFIX, 32236) +HANDLE_BAT(APINT_TYPE_PREFIX, 32237) +HANDLE_BAT(APINT_TYPE_PREFIX, 32238) +HANDLE_BAT(APINT_TYPE_PREFIX, 32239) +HANDLE_BAT(APINT_TYPE_PREFIX, 32240) +HANDLE_BAT(APINT_TYPE_PREFIX, 32241) +HANDLE_BAT(APINT_TYPE_PREFIX, 32242) +HANDLE_BAT(APINT_TYPE_PREFIX, 32243) +HANDLE_BAT(APINT_TYPE_PREFIX, 32244) +HANDLE_BAT(APINT_TYPE_PREFIX, 32245) +HANDLE_BAT(APINT_TYPE_PREFIX, 32246) +HANDLE_BAT(APINT_TYPE_PREFIX, 32247) +HANDLE_BAT(APINT_TYPE_PREFIX, 32248) +HANDLE_BAT(APINT_TYPE_PREFIX, 32249) +HANDLE_BAT(APINT_TYPE_PREFIX, 32250) +HANDLE_BAT(APINT_TYPE_PREFIX, 32251) +HANDLE_BAT(APINT_TYPE_PREFIX, 32252) +HANDLE_BAT(APINT_TYPE_PREFIX, 32253) +HANDLE_BAT(APINT_TYPE_PREFIX, 32254) +HANDLE_BAT(APINT_TYPE_PREFIX, 32255) +HANDLE_BAT(APINT_TYPE_PREFIX, 32256) +HANDLE_BAT(APINT_TYPE_PREFIX, 32257) +HANDLE_BAT(APINT_TYPE_PREFIX, 32258) +HANDLE_BAT(APINT_TYPE_PREFIX, 32259) +HANDLE_BAT(APINT_TYPE_PREFIX, 32260) +HANDLE_BAT(APINT_TYPE_PREFIX, 32261) +HANDLE_BAT(APINT_TYPE_PREFIX, 32262) +HANDLE_BAT(APINT_TYPE_PREFIX, 32263) +HANDLE_BAT(APINT_TYPE_PREFIX, 32264) +HANDLE_BAT(APINT_TYPE_PREFIX, 32265) +HANDLE_BAT(APINT_TYPE_PREFIX, 32266) +HANDLE_BAT(APINT_TYPE_PREFIX, 32267) +HANDLE_BAT(APINT_TYPE_PREFIX, 32268) +HANDLE_BAT(APINT_TYPE_PREFIX, 32269) +HANDLE_BAT(APINT_TYPE_PREFIX, 32270) +HANDLE_BAT(APINT_TYPE_PREFIX, 32271) +HANDLE_BAT(APINT_TYPE_PREFIX, 32272) +HANDLE_BAT(APINT_TYPE_PREFIX, 32273) +HANDLE_BAT(APINT_TYPE_PREFIX, 32274) +HANDLE_BAT(APINT_TYPE_PREFIX, 32275) +HANDLE_BAT(APINT_TYPE_PREFIX, 32276) +HANDLE_BAT(APINT_TYPE_PREFIX, 32277) +HANDLE_BAT(APINT_TYPE_PREFIX, 32278) +HANDLE_BAT(APINT_TYPE_PREFIX, 32279) +HANDLE_BAT(APINT_TYPE_PREFIX, 32280) +HANDLE_BAT(APINT_TYPE_PREFIX, 32281) +HANDLE_BAT(APINT_TYPE_PREFIX, 32282) +HANDLE_BAT(APINT_TYPE_PREFIX, 32283) +HANDLE_BAT(APINT_TYPE_PREFIX, 32284) +HANDLE_BAT(APINT_TYPE_PREFIX, 32285) +HANDLE_BAT(APINT_TYPE_PREFIX, 32286) +HANDLE_BAT(APINT_TYPE_PREFIX, 32287) +HANDLE_BAT(APINT_TYPE_PREFIX, 32288) +HANDLE_BAT(APINT_TYPE_PREFIX, 32289) +HANDLE_BAT(APINT_TYPE_PREFIX, 32290) +HANDLE_BAT(APINT_TYPE_PREFIX, 32291) +HANDLE_BAT(APINT_TYPE_PREFIX, 32292) +HANDLE_BAT(APINT_TYPE_PREFIX, 32293) +HANDLE_BAT(APINT_TYPE_PREFIX, 32294) +HANDLE_BAT(APINT_TYPE_PREFIX, 32295) +HANDLE_BAT(APINT_TYPE_PREFIX, 32296) +HANDLE_BAT(APINT_TYPE_PREFIX, 32297) +HANDLE_BAT(APINT_TYPE_PREFIX, 32298) +HANDLE_BAT(APINT_TYPE_PREFIX, 32299) +HANDLE_BAT(APINT_TYPE_PREFIX, 32300) +HANDLE_BAT(APINT_TYPE_PREFIX, 32301) +HANDLE_BAT(APINT_TYPE_PREFIX, 32302) +HANDLE_BAT(APINT_TYPE_PREFIX, 32303) +HANDLE_BAT(APINT_TYPE_PREFIX, 32304) +HANDLE_BAT(APINT_TYPE_PREFIX, 32305) +HANDLE_BAT(APINT_TYPE_PREFIX, 32306) +HANDLE_BAT(APINT_TYPE_PREFIX, 32307) +HANDLE_BAT(APINT_TYPE_PREFIX, 32308) +HANDLE_BAT(APINT_TYPE_PREFIX, 32309) +HANDLE_BAT(APINT_TYPE_PREFIX, 32310) +HANDLE_BAT(APINT_TYPE_PREFIX, 32311) +HANDLE_BAT(APINT_TYPE_PREFIX, 32312) +HANDLE_BAT(APINT_TYPE_PREFIX, 32313) +HANDLE_BAT(APINT_TYPE_PREFIX, 32314) +HANDLE_BAT(APINT_TYPE_PREFIX, 32315) +HANDLE_BAT(APINT_TYPE_PREFIX, 32316) +HANDLE_BAT(APINT_TYPE_PREFIX, 32317) +HANDLE_BAT(APINT_TYPE_PREFIX, 32318) +HANDLE_BAT(APINT_TYPE_PREFIX, 32319) +HANDLE_BAT(APINT_TYPE_PREFIX, 32320) +HANDLE_BAT(APINT_TYPE_PREFIX, 32321) +HANDLE_BAT(APINT_TYPE_PREFIX, 32322) +HANDLE_BAT(APINT_TYPE_PREFIX, 32323) +HANDLE_BAT(APINT_TYPE_PREFIX, 32324) +HANDLE_BAT(APINT_TYPE_PREFIX, 32325) +HANDLE_BAT(APINT_TYPE_PREFIX, 32326) +HANDLE_BAT(APINT_TYPE_PREFIX, 32327) +HANDLE_BAT(APINT_TYPE_PREFIX, 32328) +HANDLE_BAT(APINT_TYPE_PREFIX, 32329) +HANDLE_BAT(APINT_TYPE_PREFIX, 32330) +HANDLE_BAT(APINT_TYPE_PREFIX, 32331) +HANDLE_BAT(APINT_TYPE_PREFIX, 32332) +HANDLE_BAT(APINT_TYPE_PREFIX, 32333) +HANDLE_BAT(APINT_TYPE_PREFIX, 32334) +HANDLE_BAT(APINT_TYPE_PREFIX, 32335) +HANDLE_BAT(APINT_TYPE_PREFIX, 32336) +HANDLE_BAT(APINT_TYPE_PREFIX, 32337) +HANDLE_BAT(APINT_TYPE_PREFIX, 32338) +HANDLE_BAT(APINT_TYPE_PREFIX, 32339) +HANDLE_BAT(APINT_TYPE_PREFIX, 32340) +HANDLE_BAT(APINT_TYPE_PREFIX, 32341) +HANDLE_BAT(APINT_TYPE_PREFIX, 32342) +HANDLE_BAT(APINT_TYPE_PREFIX, 32343) +HANDLE_BAT(APINT_TYPE_PREFIX, 32344) +HANDLE_BAT(APINT_TYPE_PREFIX, 32345) +HANDLE_BAT(APINT_TYPE_PREFIX, 32346) +HANDLE_BAT(APINT_TYPE_PREFIX, 32347) +HANDLE_BAT(APINT_TYPE_PREFIX, 32348) +HANDLE_BAT(APINT_TYPE_PREFIX, 32349) +HANDLE_BAT(APINT_TYPE_PREFIX, 32350) +HANDLE_BAT(APINT_TYPE_PREFIX, 32351) +HANDLE_BAT(APINT_TYPE_PREFIX, 32352) +HANDLE_BAT(APINT_TYPE_PREFIX, 32353) +HANDLE_BAT(APINT_TYPE_PREFIX, 32354) +HANDLE_BAT(APINT_TYPE_PREFIX, 32355) +HANDLE_BAT(APINT_TYPE_PREFIX, 32356) +HANDLE_BAT(APINT_TYPE_PREFIX, 32357) +HANDLE_BAT(APINT_TYPE_PREFIX, 32358) +HANDLE_BAT(APINT_TYPE_PREFIX, 32359) +HANDLE_BAT(APINT_TYPE_PREFIX, 32360) +HANDLE_BAT(APINT_TYPE_PREFIX, 32361) +HANDLE_BAT(APINT_TYPE_PREFIX, 32362) +HANDLE_BAT(APINT_TYPE_PREFIX, 32363) +HANDLE_BAT(APINT_TYPE_PREFIX, 32364) +HANDLE_BAT(APINT_TYPE_PREFIX, 32365) +HANDLE_BAT(APINT_TYPE_PREFIX, 32366) +HANDLE_BAT(APINT_TYPE_PREFIX, 32367) +HANDLE_BAT(APINT_TYPE_PREFIX, 32368) +HANDLE_BAT(APINT_TYPE_PREFIX, 32369) +HANDLE_BAT(APINT_TYPE_PREFIX, 32370) +HANDLE_BAT(APINT_TYPE_PREFIX, 32371) +HANDLE_BAT(APINT_TYPE_PREFIX, 32372) +HANDLE_BAT(APINT_TYPE_PREFIX, 32373) +HANDLE_BAT(APINT_TYPE_PREFIX, 32374) +HANDLE_BAT(APINT_TYPE_PREFIX, 32375) +HANDLE_BAT(APINT_TYPE_PREFIX, 32376) +HANDLE_BAT(APINT_TYPE_PREFIX, 32377) +HANDLE_BAT(APINT_TYPE_PREFIX, 32378) +HANDLE_BAT(APINT_TYPE_PREFIX, 32379) +HANDLE_BAT(APINT_TYPE_PREFIX, 32380) +HANDLE_BAT(APINT_TYPE_PREFIX, 32381) +HANDLE_BAT(APINT_TYPE_PREFIX, 32382) +HANDLE_BAT(APINT_TYPE_PREFIX, 32383) +HANDLE_BAT(APINT_TYPE_PREFIX, 32384) +HANDLE_BAT(APINT_TYPE_PREFIX, 32385) +HANDLE_BAT(APINT_TYPE_PREFIX, 32386) +HANDLE_BAT(APINT_TYPE_PREFIX, 32387) +HANDLE_BAT(APINT_TYPE_PREFIX, 32388) +HANDLE_BAT(APINT_TYPE_PREFIX, 32389) +HANDLE_BAT(APINT_TYPE_PREFIX, 32390) +HANDLE_BAT(APINT_TYPE_PREFIX, 32391) +HANDLE_BAT(APINT_TYPE_PREFIX, 32392) +HANDLE_BAT(APINT_TYPE_PREFIX, 32393) +HANDLE_BAT(APINT_TYPE_PREFIX, 32394) +HANDLE_BAT(APINT_TYPE_PREFIX, 32395) +HANDLE_BAT(APINT_TYPE_PREFIX, 32396) +HANDLE_BAT(APINT_TYPE_PREFIX, 32397) +HANDLE_BAT(APINT_TYPE_PREFIX, 32398) +HANDLE_BAT(APINT_TYPE_PREFIX, 32399) +HANDLE_BAT(APINT_TYPE_PREFIX, 32400) +HANDLE_BAT(APINT_TYPE_PREFIX, 32401) +HANDLE_BAT(APINT_TYPE_PREFIX, 32402) +HANDLE_BAT(APINT_TYPE_PREFIX, 32403) +HANDLE_BAT(APINT_TYPE_PREFIX, 32404) +HANDLE_BAT(APINT_TYPE_PREFIX, 32405) +HANDLE_BAT(APINT_TYPE_PREFIX, 32406) +HANDLE_BAT(APINT_TYPE_PREFIX, 32407) +HANDLE_BAT(APINT_TYPE_PREFIX, 32408) +HANDLE_BAT(APINT_TYPE_PREFIX, 32409) +HANDLE_BAT(APINT_TYPE_PREFIX, 32410) +HANDLE_BAT(APINT_TYPE_PREFIX, 32411) +HANDLE_BAT(APINT_TYPE_PREFIX, 32412) +HANDLE_BAT(APINT_TYPE_PREFIX, 32413) +HANDLE_BAT(APINT_TYPE_PREFIX, 32414) +HANDLE_BAT(APINT_TYPE_PREFIX, 32415) +HANDLE_BAT(APINT_TYPE_PREFIX, 32416) +HANDLE_BAT(APINT_TYPE_PREFIX, 32417) +HANDLE_BAT(APINT_TYPE_PREFIX, 32418) +HANDLE_BAT(APINT_TYPE_PREFIX, 32419) +HANDLE_BAT(APINT_TYPE_PREFIX, 32420) +HANDLE_BAT(APINT_TYPE_PREFIX, 32421) +HANDLE_BAT(APINT_TYPE_PREFIX, 32422) +HANDLE_BAT(APINT_TYPE_PREFIX, 32423) +HANDLE_BAT(APINT_TYPE_PREFIX, 32424) +HANDLE_BAT(APINT_TYPE_PREFIX, 32425) +HANDLE_BAT(APINT_TYPE_PREFIX, 32426) +HANDLE_BAT(APINT_TYPE_PREFIX, 32427) +HANDLE_BAT(APINT_TYPE_PREFIX, 32428) +HANDLE_BAT(APINT_TYPE_PREFIX, 32429) +HANDLE_BAT(APINT_TYPE_PREFIX, 32430) +HANDLE_BAT(APINT_TYPE_PREFIX, 32431) +HANDLE_BAT(APINT_TYPE_PREFIX, 32432) +HANDLE_BAT(APINT_TYPE_PREFIX, 32433) +HANDLE_BAT(APINT_TYPE_PREFIX, 32434) +HANDLE_BAT(APINT_TYPE_PREFIX, 32435) +HANDLE_BAT(APINT_TYPE_PREFIX, 32436) +HANDLE_BAT(APINT_TYPE_PREFIX, 32437) +HANDLE_BAT(APINT_TYPE_PREFIX, 32438) +HANDLE_BAT(APINT_TYPE_PREFIX, 32439) +HANDLE_BAT(APINT_TYPE_PREFIX, 32440) +HANDLE_BAT(APINT_TYPE_PREFIX, 32441) +HANDLE_BAT(APINT_TYPE_PREFIX, 32442) +HANDLE_BAT(APINT_TYPE_PREFIX, 32443) +HANDLE_BAT(APINT_TYPE_PREFIX, 32444) +HANDLE_BAT(APINT_TYPE_PREFIX, 32445) +HANDLE_BAT(APINT_TYPE_PREFIX, 32446) +HANDLE_BAT(APINT_TYPE_PREFIX, 32447) +HANDLE_BAT(APINT_TYPE_PREFIX, 32448) +HANDLE_BAT(APINT_TYPE_PREFIX, 32449) +HANDLE_BAT(APINT_TYPE_PREFIX, 32450) +HANDLE_BAT(APINT_TYPE_PREFIX, 32451) +HANDLE_BAT(APINT_TYPE_PREFIX, 32452) +HANDLE_BAT(APINT_TYPE_PREFIX, 32453) +HANDLE_BAT(APINT_TYPE_PREFIX, 32454) +HANDLE_BAT(APINT_TYPE_PREFIX, 32455) +HANDLE_BAT(APINT_TYPE_PREFIX, 32456) +HANDLE_BAT(APINT_TYPE_PREFIX, 32457) +HANDLE_BAT(APINT_TYPE_PREFIX, 32458) +HANDLE_BAT(APINT_TYPE_PREFIX, 32459) +HANDLE_BAT(APINT_TYPE_PREFIX, 32460) +HANDLE_BAT(APINT_TYPE_PREFIX, 32461) +HANDLE_BAT(APINT_TYPE_PREFIX, 32462) +HANDLE_BAT(APINT_TYPE_PREFIX, 32463) +HANDLE_BAT(APINT_TYPE_PREFIX, 32464) +HANDLE_BAT(APINT_TYPE_PREFIX, 32465) +HANDLE_BAT(APINT_TYPE_PREFIX, 32466) +HANDLE_BAT(APINT_TYPE_PREFIX, 32467) +HANDLE_BAT(APINT_TYPE_PREFIX, 32468) +HANDLE_BAT(APINT_TYPE_PREFIX, 32469) +HANDLE_BAT(APINT_TYPE_PREFIX, 32470) +HANDLE_BAT(APINT_TYPE_PREFIX, 32471) +HANDLE_BAT(APINT_TYPE_PREFIX, 32472) +HANDLE_BAT(APINT_TYPE_PREFIX, 32473) +HANDLE_BAT(APINT_TYPE_PREFIX, 32474) +HANDLE_BAT(APINT_TYPE_PREFIX, 32475) +HANDLE_BAT(APINT_TYPE_PREFIX, 32476) +HANDLE_BAT(APINT_TYPE_PREFIX, 32477) +HANDLE_BAT(APINT_TYPE_PREFIX, 32478) +HANDLE_BAT(APINT_TYPE_PREFIX, 32479) +HANDLE_BAT(APINT_TYPE_PREFIX, 32480) +HANDLE_BAT(APINT_TYPE_PREFIX, 32481) +HANDLE_BAT(APINT_TYPE_PREFIX, 32482) +HANDLE_BAT(APINT_TYPE_PREFIX, 32483) +HANDLE_BAT(APINT_TYPE_PREFIX, 32484) +HANDLE_BAT(APINT_TYPE_PREFIX, 32485) +HANDLE_BAT(APINT_TYPE_PREFIX, 32486) +HANDLE_BAT(APINT_TYPE_PREFIX, 32487) +HANDLE_BAT(APINT_TYPE_PREFIX, 32488) +HANDLE_BAT(APINT_TYPE_PREFIX, 32489) +HANDLE_BAT(APINT_TYPE_PREFIX, 32490) +HANDLE_BAT(APINT_TYPE_PREFIX, 32491) +HANDLE_BAT(APINT_TYPE_PREFIX, 32492) +HANDLE_BAT(APINT_TYPE_PREFIX, 32493) +HANDLE_BAT(APINT_TYPE_PREFIX, 32494) +HANDLE_BAT(APINT_TYPE_PREFIX, 32495) +HANDLE_BAT(APINT_TYPE_PREFIX, 32496) +HANDLE_BAT(APINT_TYPE_PREFIX, 32497) +HANDLE_BAT(APINT_TYPE_PREFIX, 32498) +HANDLE_BAT(APINT_TYPE_PREFIX, 32499) +HANDLE_BAT(APINT_TYPE_PREFIX, 32500) +HANDLE_BAT(APINT_TYPE_PREFIX, 32501) +HANDLE_BAT(APINT_TYPE_PREFIX, 32502) +HANDLE_BAT(APINT_TYPE_PREFIX, 32503) +HANDLE_BAT(APINT_TYPE_PREFIX, 32504) +HANDLE_BAT(APINT_TYPE_PREFIX, 32505) +HANDLE_BAT(APINT_TYPE_PREFIX, 32506) +HANDLE_BAT(APINT_TYPE_PREFIX, 32507) +HANDLE_BAT(APINT_TYPE_PREFIX, 32508) +HANDLE_BAT(APINT_TYPE_PREFIX, 32509) +HANDLE_BAT(APINT_TYPE_PREFIX, 32510) +HANDLE_BAT(APINT_TYPE_PREFIX, 32511) +HANDLE_BAT(APINT_TYPE_PREFIX, 32512) +HANDLE_BAT(APINT_TYPE_PREFIX, 32513) +HANDLE_BAT(APINT_TYPE_PREFIX, 32514) +HANDLE_BAT(APINT_TYPE_PREFIX, 32515) +HANDLE_BAT(APINT_TYPE_PREFIX, 32516) +HANDLE_BAT(APINT_TYPE_PREFIX, 32517) +HANDLE_BAT(APINT_TYPE_PREFIX, 32518) +HANDLE_BAT(APINT_TYPE_PREFIX, 32519) +HANDLE_BAT(APINT_TYPE_PREFIX, 32520) +HANDLE_BAT(APINT_TYPE_PREFIX, 32521) +HANDLE_BAT(APINT_TYPE_PREFIX, 32522) +HANDLE_BAT(APINT_TYPE_PREFIX, 32523) +HANDLE_BAT(APINT_TYPE_PREFIX, 32524) +HANDLE_BAT(APINT_TYPE_PREFIX, 32525) +HANDLE_BAT(APINT_TYPE_PREFIX, 32526) +HANDLE_BAT(APINT_TYPE_PREFIX, 32527) +HANDLE_BAT(APINT_TYPE_PREFIX, 32528) +HANDLE_BAT(APINT_TYPE_PREFIX, 32529) +HANDLE_BAT(APINT_TYPE_PREFIX, 32530) +HANDLE_BAT(APINT_TYPE_PREFIX, 32531) +HANDLE_BAT(APINT_TYPE_PREFIX, 32532) +HANDLE_BAT(APINT_TYPE_PREFIX, 32533) +HANDLE_BAT(APINT_TYPE_PREFIX, 32534) +HANDLE_BAT(APINT_TYPE_PREFIX, 32535) +HANDLE_BAT(APINT_TYPE_PREFIX, 32536) +HANDLE_BAT(APINT_TYPE_PREFIX, 32537) +HANDLE_BAT(APINT_TYPE_PREFIX, 32538) +HANDLE_BAT(APINT_TYPE_PREFIX, 32539) +HANDLE_BAT(APINT_TYPE_PREFIX, 32540) +HANDLE_BAT(APINT_TYPE_PREFIX, 32541) +HANDLE_BAT(APINT_TYPE_PREFIX, 32542) +HANDLE_BAT(APINT_TYPE_PREFIX, 32543) +HANDLE_BAT(APINT_TYPE_PREFIX, 32544) +HANDLE_BAT(APINT_TYPE_PREFIX, 32545) +HANDLE_BAT(APINT_TYPE_PREFIX, 32546) +HANDLE_BAT(APINT_TYPE_PREFIX, 32547) +HANDLE_BAT(APINT_TYPE_PREFIX, 32548) +HANDLE_BAT(APINT_TYPE_PREFIX, 32549) +HANDLE_BAT(APINT_TYPE_PREFIX, 32550) +HANDLE_BAT(APINT_TYPE_PREFIX, 32551) +HANDLE_BAT(APINT_TYPE_PREFIX, 32552) +HANDLE_BAT(APINT_TYPE_PREFIX, 32553) +HANDLE_BAT(APINT_TYPE_PREFIX, 32554) +HANDLE_BAT(APINT_TYPE_PREFIX, 32555) +HANDLE_BAT(APINT_TYPE_PREFIX, 32556) +HANDLE_BAT(APINT_TYPE_PREFIX, 32557) +HANDLE_BAT(APINT_TYPE_PREFIX, 32558) +HANDLE_BAT(APINT_TYPE_PREFIX, 32559) +HANDLE_BAT(APINT_TYPE_PREFIX, 32560) +HANDLE_BAT(APINT_TYPE_PREFIX, 32561) +HANDLE_BAT(APINT_TYPE_PREFIX, 32562) +HANDLE_BAT(APINT_TYPE_PREFIX, 32563) +HANDLE_BAT(APINT_TYPE_PREFIX, 32564) +HANDLE_BAT(APINT_TYPE_PREFIX, 32565) +HANDLE_BAT(APINT_TYPE_PREFIX, 32566) +HANDLE_BAT(APINT_TYPE_PREFIX, 32567) +HANDLE_BAT(APINT_TYPE_PREFIX, 32568) +HANDLE_BAT(APINT_TYPE_PREFIX, 32569) +HANDLE_BAT(APINT_TYPE_PREFIX, 32570) +HANDLE_BAT(APINT_TYPE_PREFIX, 32571) +HANDLE_BAT(APINT_TYPE_PREFIX, 32572) +HANDLE_BAT(APINT_TYPE_PREFIX, 32573) +HANDLE_BAT(APINT_TYPE_PREFIX, 32574) +HANDLE_BAT(APINT_TYPE_PREFIX, 32575) +HANDLE_BAT(APINT_TYPE_PREFIX, 32576) +HANDLE_BAT(APINT_TYPE_PREFIX, 32577) +HANDLE_BAT(APINT_TYPE_PREFIX, 32578) +HANDLE_BAT(APINT_TYPE_PREFIX, 32579) +HANDLE_BAT(APINT_TYPE_PREFIX, 32580) +HANDLE_BAT(APINT_TYPE_PREFIX, 32581) +HANDLE_BAT(APINT_TYPE_PREFIX, 32582) +HANDLE_BAT(APINT_TYPE_PREFIX, 32583) +HANDLE_BAT(APINT_TYPE_PREFIX, 32584) +HANDLE_BAT(APINT_TYPE_PREFIX, 32585) +HANDLE_BAT(APINT_TYPE_PREFIX, 32586) +HANDLE_BAT(APINT_TYPE_PREFIX, 32587) +HANDLE_BAT(APINT_TYPE_PREFIX, 32588) +HANDLE_BAT(APINT_TYPE_PREFIX, 32589) +HANDLE_BAT(APINT_TYPE_PREFIX, 32590) +HANDLE_BAT(APINT_TYPE_PREFIX, 32591) +HANDLE_BAT(APINT_TYPE_PREFIX, 32592) +HANDLE_BAT(APINT_TYPE_PREFIX, 32593) +HANDLE_BAT(APINT_TYPE_PREFIX, 32594) +HANDLE_BAT(APINT_TYPE_PREFIX, 32595) +HANDLE_BAT(APINT_TYPE_PREFIX, 32596) +HANDLE_BAT(APINT_TYPE_PREFIX, 32597) +HANDLE_BAT(APINT_TYPE_PREFIX, 32598) +HANDLE_BAT(APINT_TYPE_PREFIX, 32599) +HANDLE_BAT(APINT_TYPE_PREFIX, 32600) +HANDLE_BAT(APINT_TYPE_PREFIX, 32601) +HANDLE_BAT(APINT_TYPE_PREFIX, 32602) +HANDLE_BAT(APINT_TYPE_PREFIX, 32603) +HANDLE_BAT(APINT_TYPE_PREFIX, 32604) +HANDLE_BAT(APINT_TYPE_PREFIX, 32605) +HANDLE_BAT(APINT_TYPE_PREFIX, 32606) +HANDLE_BAT(APINT_TYPE_PREFIX, 32607) +HANDLE_BAT(APINT_TYPE_PREFIX, 32608) +HANDLE_BAT(APINT_TYPE_PREFIX, 32609) +HANDLE_BAT(APINT_TYPE_PREFIX, 32610) +HANDLE_BAT(APINT_TYPE_PREFIX, 32611) +HANDLE_BAT(APINT_TYPE_PREFIX, 32612) +HANDLE_BAT(APINT_TYPE_PREFIX, 32613) +HANDLE_BAT(APINT_TYPE_PREFIX, 32614) +HANDLE_BAT(APINT_TYPE_PREFIX, 32615) +HANDLE_BAT(APINT_TYPE_PREFIX, 32616) +HANDLE_BAT(APINT_TYPE_PREFIX, 32617) +HANDLE_BAT(APINT_TYPE_PREFIX, 32618) +HANDLE_BAT(APINT_TYPE_PREFIX, 32619) +HANDLE_BAT(APINT_TYPE_PREFIX, 32620) +HANDLE_BAT(APINT_TYPE_PREFIX, 32621) +HANDLE_BAT(APINT_TYPE_PREFIX, 32622) +HANDLE_BAT(APINT_TYPE_PREFIX, 32623) +HANDLE_BAT(APINT_TYPE_PREFIX, 32624) +HANDLE_BAT(APINT_TYPE_PREFIX, 32625) +HANDLE_BAT(APINT_TYPE_PREFIX, 32626) +HANDLE_BAT(APINT_TYPE_PREFIX, 32627) +HANDLE_BAT(APINT_TYPE_PREFIX, 32628) +HANDLE_BAT(APINT_TYPE_PREFIX, 32629) +HANDLE_BAT(APINT_TYPE_PREFIX, 32630) +HANDLE_BAT(APINT_TYPE_PREFIX, 32631) +HANDLE_BAT(APINT_TYPE_PREFIX, 32632) +HANDLE_BAT(APINT_TYPE_PREFIX, 32633) +HANDLE_BAT(APINT_TYPE_PREFIX, 32634) +HANDLE_BAT(APINT_TYPE_PREFIX, 32635) +HANDLE_BAT(APINT_TYPE_PREFIX, 32636) +HANDLE_BAT(APINT_TYPE_PREFIX, 32637) +HANDLE_BAT(APINT_TYPE_PREFIX, 32638) +HANDLE_BAT(APINT_TYPE_PREFIX, 32639) +HANDLE_BAT(APINT_TYPE_PREFIX, 32640) +HANDLE_BAT(APINT_TYPE_PREFIX, 32641) +HANDLE_BAT(APINT_TYPE_PREFIX, 32642) +HANDLE_BAT(APINT_TYPE_PREFIX, 32643) +HANDLE_BAT(APINT_TYPE_PREFIX, 32644) +HANDLE_BAT(APINT_TYPE_PREFIX, 32645) +HANDLE_BAT(APINT_TYPE_PREFIX, 32646) +HANDLE_BAT(APINT_TYPE_PREFIX, 32647) +HANDLE_BAT(APINT_TYPE_PREFIX, 32648) +HANDLE_BAT(APINT_TYPE_PREFIX, 32649) +HANDLE_BAT(APINT_TYPE_PREFIX, 32650) +HANDLE_BAT(APINT_TYPE_PREFIX, 32651) +HANDLE_BAT(APINT_TYPE_PREFIX, 32652) +HANDLE_BAT(APINT_TYPE_PREFIX, 32653) +HANDLE_BAT(APINT_TYPE_PREFIX, 32654) +HANDLE_BAT(APINT_TYPE_PREFIX, 32655) +HANDLE_BAT(APINT_TYPE_PREFIX, 32656) +HANDLE_BAT(APINT_TYPE_PREFIX, 32657) +HANDLE_BAT(APINT_TYPE_PREFIX, 32658) +HANDLE_BAT(APINT_TYPE_PREFIX, 32659) +HANDLE_BAT(APINT_TYPE_PREFIX, 32660) +HANDLE_BAT(APINT_TYPE_PREFIX, 32661) +HANDLE_BAT(APINT_TYPE_PREFIX, 32662) +HANDLE_BAT(APINT_TYPE_PREFIX, 32663) +HANDLE_BAT(APINT_TYPE_PREFIX, 32664) +HANDLE_BAT(APINT_TYPE_PREFIX, 32665) +HANDLE_BAT(APINT_TYPE_PREFIX, 32666) +HANDLE_BAT(APINT_TYPE_PREFIX, 32667) +HANDLE_BAT(APINT_TYPE_PREFIX, 32668) +HANDLE_BAT(APINT_TYPE_PREFIX, 32669) +HANDLE_BAT(APINT_TYPE_PREFIX, 32670) +HANDLE_BAT(APINT_TYPE_PREFIX, 32671) +HANDLE_BAT(APINT_TYPE_PREFIX, 32672) +HANDLE_BAT(APINT_TYPE_PREFIX, 32673) +HANDLE_BAT(APINT_TYPE_PREFIX, 32674) +HANDLE_BAT(APINT_TYPE_PREFIX, 32675) +HANDLE_BAT(APINT_TYPE_PREFIX, 32676) +HANDLE_BAT(APINT_TYPE_PREFIX, 32677) +HANDLE_BAT(APINT_TYPE_PREFIX, 32678) +HANDLE_BAT(APINT_TYPE_PREFIX, 32679) +HANDLE_BAT(APINT_TYPE_PREFIX, 32680) +HANDLE_BAT(APINT_TYPE_PREFIX, 32681) +HANDLE_BAT(APINT_TYPE_PREFIX, 32682) +HANDLE_BAT(APINT_TYPE_PREFIX, 32683) +HANDLE_BAT(APINT_TYPE_PREFIX, 32684) +HANDLE_BAT(APINT_TYPE_PREFIX, 32685) +HANDLE_BAT(APINT_TYPE_PREFIX, 32686) +HANDLE_BAT(APINT_TYPE_PREFIX, 32687) +HANDLE_BAT(APINT_TYPE_PREFIX, 32688) +HANDLE_BAT(APINT_TYPE_PREFIX, 32689) +HANDLE_BAT(APINT_TYPE_PREFIX, 32690) +HANDLE_BAT(APINT_TYPE_PREFIX, 32691) +HANDLE_BAT(APINT_TYPE_PREFIX, 32692) +HANDLE_BAT(APINT_TYPE_PREFIX, 32693) +HANDLE_BAT(APINT_TYPE_PREFIX, 32694) +HANDLE_BAT(APINT_TYPE_PREFIX, 32695) +HANDLE_BAT(APINT_TYPE_PREFIX, 32696) +HANDLE_BAT(APINT_TYPE_PREFIX, 32697) +HANDLE_BAT(APINT_TYPE_PREFIX, 32698) +HANDLE_BAT(APINT_TYPE_PREFIX, 32699) +HANDLE_BAT(APINT_TYPE_PREFIX, 32700) +HANDLE_BAT(APINT_TYPE_PREFIX, 32701) +HANDLE_BAT(APINT_TYPE_PREFIX, 32702) +HANDLE_BAT(APINT_TYPE_PREFIX, 32703) +HANDLE_BAT(APINT_TYPE_PREFIX, 32704) +HANDLE_BAT(APINT_TYPE_PREFIX, 32705) +HANDLE_BAT(APINT_TYPE_PREFIX, 32706) +HANDLE_BAT(APINT_TYPE_PREFIX, 32707) +HANDLE_BAT(APINT_TYPE_PREFIX, 32708) +HANDLE_BAT(APINT_TYPE_PREFIX, 32709) +HANDLE_BAT(APINT_TYPE_PREFIX, 32710) +HANDLE_BAT(APINT_TYPE_PREFIX, 32711) +HANDLE_BAT(APINT_TYPE_PREFIX, 32712) +HANDLE_BAT(APINT_TYPE_PREFIX, 32713) +HANDLE_BAT(APINT_TYPE_PREFIX, 32714) +HANDLE_BAT(APINT_TYPE_PREFIX, 32715) +HANDLE_BAT(APINT_TYPE_PREFIX, 32716) +HANDLE_BAT(APINT_TYPE_PREFIX, 32717) +HANDLE_BAT(APINT_TYPE_PREFIX, 32718) +HANDLE_BAT(APINT_TYPE_PREFIX, 32719) +HANDLE_BAT(APINT_TYPE_PREFIX, 32720) +HANDLE_BAT(APINT_TYPE_PREFIX, 32721) +HANDLE_BAT(APINT_TYPE_PREFIX, 32722) +HANDLE_BAT(APINT_TYPE_PREFIX, 32723) +HANDLE_BAT(APINT_TYPE_PREFIX, 32724) +HANDLE_BAT(APINT_TYPE_PREFIX, 32725) +HANDLE_BAT(APINT_TYPE_PREFIX, 32726) +HANDLE_BAT(APINT_TYPE_PREFIX, 32727) +HANDLE_BAT(APINT_TYPE_PREFIX, 32728) +HANDLE_BAT(APINT_TYPE_PREFIX, 32729) +HANDLE_BAT(APINT_TYPE_PREFIX, 32730) +HANDLE_BAT(APINT_TYPE_PREFIX, 32731) +HANDLE_BAT(APINT_TYPE_PREFIX, 32732) +HANDLE_BAT(APINT_TYPE_PREFIX, 32733) +HANDLE_BAT(APINT_TYPE_PREFIX, 32734) +HANDLE_BAT(APINT_TYPE_PREFIX, 32735) +HANDLE_BAT(APINT_TYPE_PREFIX, 32736) +HANDLE_BAT(APINT_TYPE_PREFIX, 32737) +HANDLE_BAT(APINT_TYPE_PREFIX, 32738) +HANDLE_BAT(APINT_TYPE_PREFIX, 32739) +HANDLE_BAT(APINT_TYPE_PREFIX, 32740) +HANDLE_BAT(APINT_TYPE_PREFIX, 32741) +HANDLE_BAT(APINT_TYPE_PREFIX, 32742) +HANDLE_BAT(APINT_TYPE_PREFIX, 32743) +HANDLE_BAT(APINT_TYPE_PREFIX, 32744) +HANDLE_BAT(APINT_TYPE_PREFIX, 32745) +HANDLE_BAT(APINT_TYPE_PREFIX, 32746) +HANDLE_BAT(APINT_TYPE_PREFIX, 32747) +HANDLE_BAT(APINT_TYPE_PREFIX, 32748) +HANDLE_BAT(APINT_TYPE_PREFIX, 32749) +HANDLE_BAT(APINT_TYPE_PREFIX, 32750) +HANDLE_BAT(APINT_TYPE_PREFIX, 32751) +HANDLE_BAT(APINT_TYPE_PREFIX, 32752) +HANDLE_BAT(APINT_TYPE_PREFIX, 32753) +HANDLE_BAT(APINT_TYPE_PREFIX, 32754) +HANDLE_BAT(APINT_TYPE_PREFIX, 32755) +HANDLE_BAT(APINT_TYPE_PREFIX, 32756) +HANDLE_BAT(APINT_TYPE_PREFIX, 32757) +HANDLE_BAT(APINT_TYPE_PREFIX, 32758) +HANDLE_BAT(APINT_TYPE_PREFIX, 32759) +HANDLE_BAT(APINT_TYPE_PREFIX, 32760) +HANDLE_BAT(APINT_TYPE_PREFIX, 32761) +HANDLE_BAT(APINT_TYPE_PREFIX, 32762) +HANDLE_BAT(APINT_TYPE_PREFIX, 32763) +HANDLE_BAT(APINT_TYPE_PREFIX, 32764) +HANDLE_BAT(APINT_TYPE_PREFIX, 32765) +HANDLE_BAT(APINT_TYPE_PREFIX, 32766) +HANDLE_BAT(APINT_TYPE_PREFIX, 32767) +HANDLE_BAT(APINT_TYPE_PREFIX, 32768) +#endif +#endif + diff --git a/vitis/v2020_1/etc/autopilot_enum.h b/vitis/v2020_1/etc/autopilot_enum.h new file mode 100644 index 00000000..de126fc5 --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_enum.h @@ -0,0 +1,134 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_ENUM_H_ +#define _AUTOPILOT_ENUM_H_ + +/* Data Types */ +enum SsdmDataTypes { + _ssdm_sc_int = 0, + _ssdm_c_int = _ssdm_sc_int, + _ssdm_sc_uint = 1, + _ssdm_c_uint = _ssdm_sc_uint, + _ssdm_sc_bigint = 2, + _ssdm_sc_biguint = 3, +}; + + +/* Ports */ +enum SsdmPortTypes { + _ssdm_sc_in = 0, + _ssdm_sc_out = 1, + _ssdm_sc_inout = 2, + _ssdm_sc_in_clk, + + _ssdm_fifo_in, + _ssdm_sc_fifo_in = _ssdm_fifo_in, + _ssdm_tlm_fifo_in = _ssdm_fifo_in, + _ssdm_fifo_out, + _ssdm_sc_fifo_out = _ssdm_fifo_out, + _ssdm_tlm_fifo_out = _ssdm_fifo_out, + _ssdm_fifo_inout, + _ssdm_sc_fifo_inout = _ssdm_fifo_inout, + _ssdm_tlm_fifo_inout = _ssdm_fifo_inout, + _ssdm_sc_bus, + _ssdm_hls_bus_port = _ssdm_sc_bus, + _ssdm_AXI4M_bus_port = _ssdm_sc_bus, + _ssdm_port_end, +}; + + +/* Threads (Processes) */ +enum SsdmProcessTypes { + _ssdm_method = 0, + _ssdm_sc_method = _ssdm_method, + _ssdm_thread = 1, + _ssdm_sc_thread = _ssdm_thread, + _ssdm_cthread = 2, + _ssdm_sc_cthread = _ssdm_cthread, + _ssdm_process_end, +}; + + +/* Threads (Processes) */ +enum SsdmSensitiveTypes { + _ssdm_sensitive = 0, + _ssdm_sensitive_pos, + _ssdm_sensitive_neg, + _ssdm_sensitive_reset0, /* Level = High*/ + _ssdm_sensitive_reset1, /* Level = Low*/ + _ssdm_sensitive_end, +}; + + +/* Channels */ +enum SsdmChannelTypes { + _ssdm_sc_sig, + _ssdm_fifo, + _ssdm_sc_fifo = _ssdm_fifo, + _ssdm_mem_fifo, + _ssdm_sc_mem_fifo = _ssdm_mem_fifo, +}; + +/* Regions */ +enum SsdmRegionTypes { + _ssdm_region_reset, + _ssdm_region_protocol, + _ssdm_region_pipeline, + _ssdm_region_parallel, +}; + + +#endif + + diff --git a/vitis/v2020_1/etc/autopilot_ssdm_bits.h b/vitis/v2020_1/etc/autopilot_ssdm_bits.h new file mode 100644 index 00000000..deb6a827 --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_ssdm_bits.h @@ -0,0 +1,358 @@ +/* autopilot_ssdm_bits.h */ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_SSDM_BITS_H_ +#define _AUTOPILOT_SSDM_BITS_H_ + +#ifdef __STRICT_ANSI__ +#define typeof __typeof__ +#endif + +#ifndef AP_ASSERT +#ifndef AESL_SYN +# include +# define AP_ASSERT(cond, msg) assert(cond && msg) +#else +# define AP_ASSERT(cond, msg) +#endif +#endif + +#ifndef AESL_SYN +#include +#endif + +#ifdef __USE_AP_INT__ +# define _ssdm_op_SetBit(X, Bit, Repl) X[Bit] = Repl +# define _ssdm_op_GetBit(X, Bit) X[Bit] +# define _ssdm_op_GET_RANGE(V, u, l) (V.range(u, l)) +# define _ssdm_op_SET_RANGE(V, u, l, x) (V.range(u, l) = x) + +#else + + +# define _ssdm_op_GET_RANGE(V, u, l) _ssdm_op_GetRange(V, u, l) +# define _ssdm_op_SET_RANGE(V, u, l, x) _ssdm_op_SetRange(V, u, l, x) + + +#ifdef USE_SSDM_BITOP +# define __builtin_bit_concat _ssdm_op_bit_concat +# define __builtin_bit_select _ssdm_op_bit_select +# define __builtin_bit_set _ssdm_op_bit_set +# define __builtin_bit_part_select _ssdm_op_bit_part_select +# define __builtin_bit_part_set _ssdm_op_bit_part_set +#endif + +#define _ssdm_op_bitwidthof(TORV) (__bitwidthof__(typeof(TORV))) + +/* -- Concatination ----------------*/ +#define _ssdm_op_Concat(X, Y) ({ \ + unsigned int __attribute__((bitwidth(__bitwidthof__(X)+__bitwidthof__(Y)))) __R__; \ + unsigned int __attribute__((bitwidth(__bitwidthof__(X)))) __X2__ = X; \ + unsigned int __attribute__((bitwidth(__bitwidthof__(Y)))) __Y2__ = Y; \ + __builtin_bit_concat((void*)(&__R__), (void*)(&__X2__), (void*)(&__Y2__)); \ + __R__; \ +}) + + +/* -- Bit get/set ----------------*/ +#define _ssdm_op_GetBit(Val, Bit) ({ \ + AP_ASSERT((Bit >= 0 && Bit <(_ssdm_op_bitwidthof(Val))), \ + "Bit select out of range"); \ + typeof(Val) __Val2__ = Val; \ + typeof(Val) __Result__ = 0; \ + __builtin_bit_part_select((void*)(&__Result__), (void*)(&__Val2__), Bit, Bit); \ + !!__Result__; \ +}) + +#define _ssdm_op_SetBit(Val, Bit, Repl) ({ \ + AP_ASSERT((Bit >= 0 && Bit < (_ssdm_op_bitwidthof(Val))),\ + "Bit select out of range"); \ + typeof(Val) __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = !!Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), (void*)(&__Repl2__), Bit, Bit); \ + __Result__; \ +}) + + +/* -- Part get/set ----------------*/ + +/* GetRange: Notice that the order of the range indices comply with SystemC + standards. */ +#define _ssdm_op_GetRange(Val, Hi, Lo) ({ \ + AP_ASSERT((Hi >= 0 && Hi < _ssdm_op_bitwidthof(Val) && \ + Lo < _ssdm_op_bitwidthof(Val) && Lo >= 0), \ + "Part select out of range"); \ + unsigned int __attribute__((bitwidth(__bitwidthof__(Val)))) __Result__ = 0; \ + unsigned int __attribute__((bitwidth(__bitwidthof__(Val)))) __Val2__ = Val; \ + __builtin_bit_part_select((void*)(&__Result__), (void*)(&__Val2__), Lo, Hi); \ + __Result__; \ +}) + +/* SetRange: Notice that the order of the range indices comply with SystemC + standards. */ +#define _ssdm_op_SetRange(Val, Hi, Lo, Repl) ({ \ + AP_ASSERT((Hi >= 0 && Hi < _ssdm_op_bitwidthof(Val) && \ + Lo < _ssdm_op_bitwidthof(Val) && Lo >= 0), \ + "Part select out of range"); \ + typeof(Val) __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), (void*)(&__Repl2__), Lo, Hi); \ + __Result__; \ +}) + +/* -- Reduce operations ----------------*/ +#ifndef USE_SSDM_BITOP + +# define _ssdm_op_reduce(how, what) ({ \ + typeof(what) __what2__ = what; \ + __builtin_bit_ ## how ## _reduce((void*)(&__what2__)); \ + }) + +#else + +# define _ssdm_op_reduce(how, what) ({ \ + typeof(what) __what2__ = what; \ + _ssdm_op_reduce_ ## how((void*)(&__what2__)); \ + }) + +#endif + +#define _ssdm_op_AndReduce(X) _ssdm_op_reduce(and, X) + +#define _ssdm_op_NAndReduce(X) _ssdm_op_reduce(nand, X) +#define _ssdm_op_NandReduce(X) _ssdm_op_reduce(nand, X) + +#define _ssdm_op_OrReduce(X) _ssdm_op_reduce(or, X) + +#define _ssdm_op_NOrReduce(X) _ssdm_op_reduce(nor, X) +#define _ssdm_op_NorReduce(X) _ssdm_op_reduce(nor, X) + +#define _ssdm_op_XorReduce(X) _ssdm_op_reduce(xor, X) + +#define _ssdm_op_NXorReduce(X) _ssdm_op_reduce(nxor, X) +#define _ssdm_op_NxorReduce(X) _ssdm_op_reduce(nxor, X) + +#define _ssdm_op_XNorReduce(X) _ssdm_op_reduce(nxor, X) +#define _ssdm_op_XnorReduce(X) _ssdm_op_reduce(nxor, X) + + +/* -- String-Integer conversions ----------------*/ +#define _ssdm_op_printBits(val) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + for ( ; __bit__ > 0; --__bit__) { \ + if (_ssdm_op_GetBit(val, __bit__-1)) \ + printf("%c", '1'); \ + else \ + printf("%c", '0'); \ + } \ +} + +#define _ssdm_op_print_apint(val, radix) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + if (radix == 2) { \ + _ssdm_op_printBits(val); \ + } else if (radix != 10) { \ + unsigned char __radix_bit__ = (radix == 16) ? 4 : 3; \ + int __digits__ = __bit__ / __radix_bit__; \ + int __r_bit__ = __bit__ - __digits__ * __radix_bit__; \ + unsigned char __mask__ = radix - 1; \ + unsigned char __no_remainder__ = __r_bit__ == 0; \ + unsigned char __r_mask__ = __mask__ >> (__radix_bit__ - __r_bit__); \ + if (__no_remainder__) __r_mask__ = __mask__; \ + __digits__ -= __no_remainder__; \ + printf("%X", (uint4) ((val >> (__digits__* __radix_bit__)) & __r_mask__)); \ + --__digits__; \ + while (__digits__ >= 0) { \ + printf("%X", (uint4) ((val >> (__digits__* __radix_bit__)) & __mask__)); \ + --__digits__; \ + } \ + } else { \ + char *__buf__ = (char*) malloc(sizeof(char) * __bit__); \ + int __i__ = 0; \ + typeof(val) __X__ = val; \ + if (__X__ < 0) { \ + printf("-"); \ + __X__ = -__X__; \ + } \ + if (__X__ == 0) \ + printf("0"); \ + else { \ + while (__X__) { \ + __buf__[__i__] = __X__ % 10; \ + __X__ /= 10; \ + ++__i__; \ + } \ + while (--__i__ >= 0) { \ + printf("%d", __buf__[__i__]); \ + } \ + } \ + free(__buf__); \ + } \ +} + +#define _ssdm_op_fprintBits(fileout, val) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + for ( ; __bit__ > 0; --__bit__) { \ + if (_ssdm_op_GetBit(val, __bit__-1)) \ + fprintf(fileout, "%c", (unsigned char)'1'); \ + else \ + fprintf(fileout, "%c", (unsigned char)'0'); \ + } \ +} + +#define _ssdm_op_fprint_apint(fileout, val, radix) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + if (radix == 2) { \ + _ssdm_op_fprintBits(fileout, val); \ + } else if (radix != 10) { \ + unsigned char __radix_bit__ = (radix == 16) ? 4 : 3; \ + int __digits__ = __bit__ / __radix_bit__; \ + int __r_bit__ = __bit__ - __digits__ * __radix_bit__; \ + unsigned char __mask__ = radix - 1; \ + unsigned char __no_remainder__ = __r_bit__ == 0; \ + unsigned char __r_mask__ = __mask__ >> (__radix_bit__ - __r_bit__); \ + if (__no_remainder__) __r_mask__ = __mask__; \ + __digits__ -= __no_remainder__; \ + fprintf(fileout, "%X", (uint4) ((val >> (__digits__ * __radix_bit__))& __r_mask__)); \ + --__digits__; \ + while (__digits__ >= 0) { \ + fprintf(fileout, "%X", (uint4) ((val >> (__digits__* __radix_bit__)) & __mask__)); \ + --__digits__; \ + } \ + } else { \ + char *__buf__ = (char*) malloc(sizeof(char) * __bit__); \ + int __i__ = 0; \ + typeof(val) __X__ = val; \ + if (__X__ < 0) { \ + __X__ = -__X__; \ + fprintf(fileout,"-"); \ + } \ + if (__X__ == 0) \ + fprintf(fileout, "0");\ + else { \ + while (__X__) { \ + __buf__[__i__] = __X__ % 10; \ + __X__ /= 10; \ + ++__i__; \ + } \ + while (--__i__ >= 0) { \ + fprintf(fileout, "%d", __buf__[__i__]); \ + } \ + } \ + free(__buf__); \ + } \ +} + +#define _ssdm_op_sscan_hex_apint(str, bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__ = 0; \ + int __base__ = 0, __len__ = (bits + 3) / 4; \ + int __real_len__; \ + if (str[0] == '-') __base__ += 1; \ + if (str[__base__] == '0' && (str[__base__ + 1] == 'x' || str[__base__ + 1] == 'X')) __base__ += 2; \ + __real_len__ = __base__; \ + while (str[__real_len__] != '\0') ++__real_len__; \ + if (__real_len__ > __base__+__len__+1) { \ + __base__ = __real_len__ - __len__; \ + } \ + __len__ += __base__; \ + while (__base__ < __len__) { \ + int __num__ = 0; \ + if (str[__base__] == '\0') break; \ + if (str[__base__] >= '0' && str[__base__] <= '9') \ + __num__ = str[__base__] - '0'; \ + else if (str[__base__] >= 'A' && str[__base__] <= 'Z') \ + __num__ = str[__base__] - 'A' + 10 ; \ + else if (str[__base__] >= 'a' && str[__base__] <= 'z') \ + __num__ = str[__base__] - 'a' + 10; \ + __Result__ += __num__; \ + if ((__base__ != __len__-1) && (str[__base__ + 1] != '\0')) \ + __Result__ <<= 4; \ + ++__base__; \ + } \ + if (str[0] == '-') __Result__ = -__Result__; \ + __Result__; \ +}) + + +#define _ssdm_op_bitsFromString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 10); \ + __Result__; \ +}) + +#define _ssdm_op_bitsFromHexString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 16); \ + __Result__; \ +}) + +#define _ssdm_op_bitsFromOctalString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 8); \ + __Result__; \ +}) + +#define _ssdm_op_bitsFromBinaryString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 2); \ + __Result__; \ +}) + +#endif + +#endif + + diff --git a/vitis/v2020_1/etc/autopilot_ssdm_op.h b/vitis/v2020_1/etc/autopilot_ssdm_op.h new file mode 100644 index 00000000..afc13dc7 --- /dev/null +++ b/vitis/v2020_1/etc/autopilot_ssdm_op.h @@ -0,0 +1,447 @@ +/* autopilot_ssdm_op.h*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _AUTOPILOT_SSDM_OP_H_ +#define _AUTOPILOT_SSDM_OP_H_ +#if !defined(__OPENCL_C_VERSION__) || ((__clang_major__ == 3) && (__clang_minor__ == 1)) + +#ifdef AESL_SYN +#define ap_wait() _ssdm_op_Wait(1) +#define ap_wait_n(X) { \ + for(unsigned __i__=0; __i__ int1; +typedef ap_int_base<2,true> int2; +typedef ap_int_base<3,true> int3; +typedef ap_int_base<4,true> int4; +typedef ap_int_base<5,true> int5; +typedef ap_int_base<6,true> int6; +typedef ap_int_base<7,true> int7; +typedef ap_int_base<8,true> int8; +typedef ap_int_base<9,true> int9; +typedef ap_int_base<10,true> int10; +typedef ap_int_base<11,true> int11; +typedef ap_int_base<12,true> int12; +typedef ap_int_base<13,true> int13; +typedef ap_int_base<14,true> int14; +typedef ap_int_base<15,true> int15; +typedef ap_int_base<16,true> int16; +typedef ap_int_base<17,true> int17; +typedef ap_int_base<18,true> int18; +typedef ap_int_base<19,true> int19; +typedef ap_int_base<20,true> int20; +typedef ap_int_base<21,true> int21; +typedef ap_int_base<22,true> int22; +typedef ap_int_base<23,true> int23; +typedef ap_int_base<24,true> int24; +typedef ap_int_base<25,true> int25; +typedef ap_int_base<26,true> int26; +typedef ap_int_base<27,true> int27; +typedef ap_int_base<28,true> int28; +typedef ap_int_base<29,true> int29; +typedef ap_int_base<30,true> int30; +typedef ap_int_base<31,true> int31; +typedef ap_int_base<32,true> int32; +typedef ap_int_base<33,true> int33; +typedef ap_int_base<34,true> int34; +typedef ap_int_base<35,true> int35; +typedef ap_int_base<36,true> int36; +typedef ap_int_base<37,true> int37; +typedef ap_int_base<38,true> int38; +typedef ap_int_base<39,true> int39; +typedef ap_int_base<40,true> int40; +typedef ap_int_base<41,true> int41; +typedef ap_int_base<42,true> int42; +typedef ap_int_base<43,true> int43; +typedef ap_int_base<44,true> int44; +typedef ap_int_base<45,true> int45; +typedef ap_int_base<46,true> int46; +typedef ap_int_base<47,true> int47; +typedef ap_int_base<48,true> int48; +typedef ap_int_base<49,true> int49; +typedef ap_int_base<50,true> int50; +typedef ap_int_base<51,true> int51; +typedef ap_int_base<52,true> int52; +typedef ap_int_base<53,true> int53; +typedef ap_int_base<54,true> int54; +typedef ap_int_base<55,true> int55; +typedef ap_int_base<56,true> int56; +typedef ap_int_base<57,true> int57; +typedef ap_int_base<58,true> int58; +typedef ap_int_base<59,true> int59; +typedef ap_int_base<60,true> int60; +typedef ap_int_base<61,true> int61; +typedef ap_int_base<62,true> int62; +typedef ap_int_base<63,true> int63; +typedef ap_int_base<64,true> int64; +typedef ap_int_base<65,true> int65; +typedef ap_int_base<66,true> int66; +typedef ap_int_base<67,true> int67; +typedef ap_int_base<68,true> int68; +typedef ap_int_base<69,true> int69; +typedef ap_int_base<70,true> int70; +typedef ap_int_base<71,true> int71; +typedef ap_int_base<72,true> int72; +typedef ap_int_base<73,true> int73; +typedef ap_int_base<74,true> int74; +typedef ap_int_base<75,true> int75; +typedef ap_int_base<76,true> int76; +typedef ap_int_base<77,true> int77; +typedef ap_int_base<78,true> int78; +typedef ap_int_base<79,true> int79; +typedef ap_int_base<80,true> int80; +typedef ap_int_base<81,true> int81; +typedef ap_int_base<82,true> int82; +typedef ap_int_base<83,true> int83; +typedef ap_int_base<84,true> int84; +typedef ap_int_base<85,true> int85; +typedef ap_int_base<86,true> int86; +typedef ap_int_base<87,true> int87; +typedef ap_int_base<88,true> int88; +typedef ap_int_base<89,true> int89; +typedef ap_int_base<90,true> int90; +typedef ap_int_base<91,true> int91; +typedef ap_int_base<92,true> int92; +typedef ap_int_base<93,true> int93; +typedef ap_int_base<94,true> int94; +typedef ap_int_base<95,true> int95; +typedef ap_int_base<96,true> int96; +typedef ap_int_base<97,true> int97; +typedef ap_int_base<98,true> int98; +typedef ap_int_base<99,true> int99; +typedef ap_int_base<100,true> int100; +typedef ap_int_base<101,true> int101; +typedef ap_int_base<102,true> int102; +typedef ap_int_base<103,true> int103; +typedef ap_int_base<104,true> int104; +typedef ap_int_base<105,true> int105; +typedef ap_int_base<106,true> int106; +typedef ap_int_base<107,true> int107; +typedef ap_int_base<108,true> int108; +typedef ap_int_base<109,true> int109; +typedef ap_int_base<110,true> int110; +typedef ap_int_base<111,true> int111; +typedef ap_int_base<112,true> int112; +typedef ap_int_base<113,true> int113; +typedef ap_int_base<114,true> int114; +typedef ap_int_base<115,true> int115; +typedef ap_int_base<116,true> int116; +typedef ap_int_base<117,true> int117; +typedef ap_int_base<118,true> int118; +typedef ap_int_base<119,true> int119; +typedef ap_int_base<120,true> int120; +typedef ap_int_base<121,true> int121; +typedef ap_int_base<122,true> int122; +typedef ap_int_base<123,true> int123; +typedef ap_int_base<124,true> int124; +typedef ap_int_base<125,true> int125; +typedef ap_int_base<126,true> int126; +typedef ap_int_base<127,true> int127; +typedef ap_int_base<128,true> int128; +typedef ap_int_base<129,true> int129; +typedef ap_int_base<130,true> int130; +typedef ap_int_base<131,true> int131; +typedef ap_int_base<132,true> int132; +typedef ap_int_base<133,true> int133; +typedef ap_int_base<134,true> int134; +typedef ap_int_base<135,true> int135; +typedef ap_int_base<136,true> int136; +typedef ap_int_base<137,true> int137; +typedef ap_int_base<138,true> int138; +typedef ap_int_base<139,true> int139; +typedef ap_int_base<140,true> int140; +typedef ap_int_base<141,true> int141; +typedef ap_int_base<142,true> int142; +typedef ap_int_base<143,true> int143; +typedef ap_int_base<144,true> int144; +typedef ap_int_base<145,true> int145; +typedef ap_int_base<146,true> int146; +typedef ap_int_base<147,true> int147; +typedef ap_int_base<148,true> int148; +typedef ap_int_base<149,true> int149; +typedef ap_int_base<150,true> int150; +typedef ap_int_base<151,true> int151; +typedef ap_int_base<152,true> int152; +typedef ap_int_base<153,true> int153; +typedef ap_int_base<154,true> int154; +typedef ap_int_base<155,true> int155; +typedef ap_int_base<156,true> int156; +typedef ap_int_base<157,true> int157; +typedef ap_int_base<158,true> int158; +typedef ap_int_base<159,true> int159; +typedef ap_int_base<160,true> int160; +typedef ap_int_base<161,true> int161; +typedef ap_int_base<162,true> int162; +typedef ap_int_base<163,true> int163; +typedef ap_int_base<164,true> int164; +typedef ap_int_base<165,true> int165; +typedef ap_int_base<166,true> int166; +typedef ap_int_base<167,true> int167; +typedef ap_int_base<168,true> int168; +typedef ap_int_base<169,true> int169; +typedef ap_int_base<170,true> int170; +typedef ap_int_base<171,true> int171; +typedef ap_int_base<172,true> int172; +typedef ap_int_base<173,true> int173; +typedef ap_int_base<174,true> int174; +typedef ap_int_base<175,true> int175; +typedef ap_int_base<176,true> int176; +typedef ap_int_base<177,true> int177; +typedef ap_int_base<178,true> int178; +typedef ap_int_base<179,true> int179; +typedef ap_int_base<180,true> int180; +typedef ap_int_base<181,true> int181; +typedef ap_int_base<182,true> int182; +typedef ap_int_base<183,true> int183; +typedef ap_int_base<184,true> int184; +typedef ap_int_base<185,true> int185; +typedef ap_int_base<186,true> int186; +typedef ap_int_base<187,true> int187; +typedef ap_int_base<188,true> int188; +typedef ap_int_base<189,true> int189; +typedef ap_int_base<190,true> int190; +typedef ap_int_base<191,true> int191; +typedef ap_int_base<192,true> int192; +typedef ap_int_base<193,true> int193; +typedef ap_int_base<194,true> int194; +typedef ap_int_base<195,true> int195; +typedef ap_int_base<196,true> int196; +typedef ap_int_base<197,true> int197; +typedef ap_int_base<198,true> int198; +typedef ap_int_base<199,true> int199; +typedef ap_int_base<200,true> int200; +typedef ap_int_base<201,true> int201; +typedef ap_int_base<202,true> int202; +typedef ap_int_base<203,true> int203; +typedef ap_int_base<204,true> int204; +typedef ap_int_base<205,true> int205; +typedef ap_int_base<206,true> int206; +typedef ap_int_base<207,true> int207; +typedef ap_int_base<208,true> int208; +typedef ap_int_base<209,true> int209; +typedef ap_int_base<210,true> int210; +typedef ap_int_base<211,true> int211; +typedef ap_int_base<212,true> int212; +typedef ap_int_base<213,true> int213; +typedef ap_int_base<214,true> int214; +typedef ap_int_base<215,true> int215; +typedef ap_int_base<216,true> int216; +typedef ap_int_base<217,true> int217; +typedef ap_int_base<218,true> int218; +typedef ap_int_base<219,true> int219; +typedef ap_int_base<220,true> int220; +typedef ap_int_base<221,true> int221; +typedef ap_int_base<222,true> int222; +typedef ap_int_base<223,true> int223; +typedef ap_int_base<224,true> int224; +typedef ap_int_base<225,true> int225; +typedef ap_int_base<226,true> int226; +typedef ap_int_base<227,true> int227; +typedef ap_int_base<228,true> int228; +typedef ap_int_base<229,true> int229; +typedef ap_int_base<230,true> int230; +typedef ap_int_base<231,true> int231; +typedef ap_int_base<232,true> int232; +typedef ap_int_base<233,true> int233; +typedef ap_int_base<234,true> int234; +typedef ap_int_base<235,true> int235; +typedef ap_int_base<236,true> int236; +typedef ap_int_base<237,true> int237; +typedef ap_int_base<238,true> int238; +typedef ap_int_base<239,true> int239; +typedef ap_int_base<240,true> int240; +typedef ap_int_base<241,true> int241; +typedef ap_int_base<242,true> int242; +typedef ap_int_base<243,true> int243; +typedef ap_int_base<244,true> int244; +typedef ap_int_base<245,true> int245; +typedef ap_int_base<246,true> int246; +typedef ap_int_base<247,true> int247; +typedef ap_int_base<248,true> int248; +typedef ap_int_base<249,true> int249; +typedef ap_int_base<250,true> int250; +typedef ap_int_base<251,true> int251; +typedef ap_int_base<252,true> int252; +typedef ap_int_base<253,true> int253; +typedef ap_int_base<254,true> int254; +typedef ap_int_base<255,true> int255; +typedef ap_int_base<256,true> int256; +typedef ap_int_base<257,true> int257; +typedef ap_int_base<258,true> int258; +typedef ap_int_base<259,true> int259; +typedef ap_int_base<260,true> int260; +typedef ap_int_base<261,true> int261; +typedef ap_int_base<262,true> int262; +typedef ap_int_base<263,true> int263; +typedef ap_int_base<264,true> int264; +typedef ap_int_base<265,true> int265; +typedef ap_int_base<266,true> int266; +typedef ap_int_base<267,true> int267; +typedef ap_int_base<268,true> int268; +typedef ap_int_base<269,true> int269; +typedef ap_int_base<270,true> int270; +typedef ap_int_base<271,true> int271; +typedef ap_int_base<272,true> int272; +typedef ap_int_base<273,true> int273; +typedef ap_int_base<274,true> int274; +typedef ap_int_base<275,true> int275; +typedef ap_int_base<276,true> int276; +typedef ap_int_base<277,true> int277; +typedef ap_int_base<278,true> int278; +typedef ap_int_base<279,true> int279; +typedef ap_int_base<280,true> int280; +typedef ap_int_base<281,true> int281; +typedef ap_int_base<282,true> int282; +typedef ap_int_base<283,true> int283; +typedef ap_int_base<284,true> int284; +typedef ap_int_base<285,true> int285; +typedef ap_int_base<286,true> int286; +typedef ap_int_base<287,true> int287; +typedef ap_int_base<288,true> int288; +typedef ap_int_base<289,true> int289; +typedef ap_int_base<290,true> int290; +typedef ap_int_base<291,true> int291; +typedef ap_int_base<292,true> int292; +typedef ap_int_base<293,true> int293; +typedef ap_int_base<294,true> int294; +typedef ap_int_base<295,true> int295; +typedef ap_int_base<296,true> int296; +typedef ap_int_base<297,true> int297; +typedef ap_int_base<298,true> int298; +typedef ap_int_base<299,true> int299; +typedef ap_int_base<300,true> int300; +typedef ap_int_base<301,true> int301; +typedef ap_int_base<302,true> int302; +typedef ap_int_base<303,true> int303; +typedef ap_int_base<304,true> int304; +typedef ap_int_base<305,true> int305; +typedef ap_int_base<306,true> int306; +typedef ap_int_base<307,true> int307; +typedef ap_int_base<308,true> int308; +typedef ap_int_base<309,true> int309; +typedef ap_int_base<310,true> int310; +typedef ap_int_base<311,true> int311; +typedef ap_int_base<312,true> int312; +typedef ap_int_base<313,true> int313; +typedef ap_int_base<314,true> int314; +typedef ap_int_base<315,true> int315; +typedef ap_int_base<316,true> int316; +typedef ap_int_base<317,true> int317; +typedef ap_int_base<318,true> int318; +typedef ap_int_base<319,true> int319; +typedef ap_int_base<320,true> int320; +typedef ap_int_base<321,true> int321; +typedef ap_int_base<322,true> int322; +typedef ap_int_base<323,true> int323; +typedef ap_int_base<324,true> int324; +typedef ap_int_base<325,true> int325; +typedef ap_int_base<326,true> int326; +typedef ap_int_base<327,true> int327; +typedef ap_int_base<328,true> int328; +typedef ap_int_base<329,true> int329; +typedef ap_int_base<330,true> int330; +typedef ap_int_base<331,true> int331; +typedef ap_int_base<332,true> int332; +typedef ap_int_base<333,true> int333; +typedef ap_int_base<334,true> int334; +typedef ap_int_base<335,true> int335; +typedef ap_int_base<336,true> int336; +typedef ap_int_base<337,true> int337; +typedef ap_int_base<338,true> int338; +typedef ap_int_base<339,true> int339; +typedef ap_int_base<340,true> int340; +typedef ap_int_base<341,true> int341; +typedef ap_int_base<342,true> int342; +typedef ap_int_base<343,true> int343; +typedef ap_int_base<344,true> int344; +typedef ap_int_base<345,true> int345; +typedef ap_int_base<346,true> int346; +typedef ap_int_base<347,true> int347; +typedef ap_int_base<348,true> int348; +typedef ap_int_base<349,true> int349; +typedef ap_int_base<350,true> int350; +typedef ap_int_base<351,true> int351; +typedef ap_int_base<352,true> int352; +typedef ap_int_base<353,true> int353; +typedef ap_int_base<354,true> int354; +typedef ap_int_base<355,true> int355; +typedef ap_int_base<356,true> int356; +typedef ap_int_base<357,true> int357; +typedef ap_int_base<358,true> int358; +typedef ap_int_base<359,true> int359; +typedef ap_int_base<360,true> int360; +typedef ap_int_base<361,true> int361; +typedef ap_int_base<362,true> int362; +typedef ap_int_base<363,true> int363; +typedef ap_int_base<364,true> int364; +typedef ap_int_base<365,true> int365; +typedef ap_int_base<366,true> int366; +typedef ap_int_base<367,true> int367; +typedef ap_int_base<368,true> int368; +typedef ap_int_base<369,true> int369; +typedef ap_int_base<370,true> int370; +typedef ap_int_base<371,true> int371; +typedef ap_int_base<372,true> int372; +typedef ap_int_base<373,true> int373; +typedef ap_int_base<374,true> int374; +typedef ap_int_base<375,true> int375; +typedef ap_int_base<376,true> int376; +typedef ap_int_base<377,true> int377; +typedef ap_int_base<378,true> int378; +typedef ap_int_base<379,true> int379; +typedef ap_int_base<380,true> int380; +typedef ap_int_base<381,true> int381; +typedef ap_int_base<382,true> int382; +typedef ap_int_base<383,true> int383; +typedef ap_int_base<384,true> int384; +typedef ap_int_base<385,true> int385; +typedef ap_int_base<386,true> int386; +typedef ap_int_base<387,true> int387; +typedef ap_int_base<388,true> int388; +typedef ap_int_base<389,true> int389; +typedef ap_int_base<390,true> int390; +typedef ap_int_base<391,true> int391; +typedef ap_int_base<392,true> int392; +typedef ap_int_base<393,true> int393; +typedef ap_int_base<394,true> int394; +typedef ap_int_base<395,true> int395; +typedef ap_int_base<396,true> int396; +typedef ap_int_base<397,true> int397; +typedef ap_int_base<398,true> int398; +typedef ap_int_base<399,true> int399; +typedef ap_int_base<400,true> int400; +typedef ap_int_base<401,true> int401; +typedef ap_int_base<402,true> int402; +typedef ap_int_base<403,true> int403; +typedef ap_int_base<404,true> int404; +typedef ap_int_base<405,true> int405; +typedef ap_int_base<406,true> int406; +typedef ap_int_base<407,true> int407; +typedef ap_int_base<408,true> int408; +typedef ap_int_base<409,true> int409; +typedef ap_int_base<410,true> int410; +typedef ap_int_base<411,true> int411; +typedef ap_int_base<412,true> int412; +typedef ap_int_base<413,true> int413; +typedef ap_int_base<414,true> int414; +typedef ap_int_base<415,true> int415; +typedef ap_int_base<416,true> int416; +typedef ap_int_base<417,true> int417; +typedef ap_int_base<418,true> int418; +typedef ap_int_base<419,true> int419; +typedef ap_int_base<420,true> int420; +typedef ap_int_base<421,true> int421; +typedef ap_int_base<422,true> int422; +typedef ap_int_base<423,true> int423; +typedef ap_int_base<424,true> int424; +typedef ap_int_base<425,true> int425; +typedef ap_int_base<426,true> int426; +typedef ap_int_base<427,true> int427; +typedef ap_int_base<428,true> int428; +typedef ap_int_base<429,true> int429; +typedef ap_int_base<430,true> int430; +typedef ap_int_base<431,true> int431; +typedef ap_int_base<432,true> int432; +typedef ap_int_base<433,true> int433; +typedef ap_int_base<434,true> int434; +typedef ap_int_base<435,true> int435; +typedef ap_int_base<436,true> int436; +typedef ap_int_base<437,true> int437; +typedef ap_int_base<438,true> int438; +typedef ap_int_base<439,true> int439; +typedef ap_int_base<440,true> int440; +typedef ap_int_base<441,true> int441; +typedef ap_int_base<442,true> int442; +typedef ap_int_base<443,true> int443; +typedef ap_int_base<444,true> int444; +typedef ap_int_base<445,true> int445; +typedef ap_int_base<446,true> int446; +typedef ap_int_base<447,true> int447; +typedef ap_int_base<448,true> int448; +typedef ap_int_base<449,true> int449; +typedef ap_int_base<450,true> int450; +typedef ap_int_base<451,true> int451; +typedef ap_int_base<452,true> int452; +typedef ap_int_base<453,true> int453; +typedef ap_int_base<454,true> int454; +typedef ap_int_base<455,true> int455; +typedef ap_int_base<456,true> int456; +typedef ap_int_base<457,true> int457; +typedef ap_int_base<458,true> int458; +typedef ap_int_base<459,true> int459; +typedef ap_int_base<460,true> int460; +typedef ap_int_base<461,true> int461; +typedef ap_int_base<462,true> int462; +typedef ap_int_base<463,true> int463; +typedef ap_int_base<464,true> int464; +typedef ap_int_base<465,true> int465; +typedef ap_int_base<466,true> int466; +typedef ap_int_base<467,true> int467; +typedef ap_int_base<468,true> int468; +typedef ap_int_base<469,true> int469; +typedef ap_int_base<470,true> int470; +typedef ap_int_base<471,true> int471; +typedef ap_int_base<472,true> int472; +typedef ap_int_base<473,true> int473; +typedef ap_int_base<474,true> int474; +typedef ap_int_base<475,true> int475; +typedef ap_int_base<476,true> int476; +typedef ap_int_base<477,true> int477; +typedef ap_int_base<478,true> int478; +typedef ap_int_base<479,true> int479; +typedef ap_int_base<480,true> int480; +typedef ap_int_base<481,true> int481; +typedef ap_int_base<482,true> int482; +typedef ap_int_base<483,true> int483; +typedef ap_int_base<484,true> int484; +typedef ap_int_base<485,true> int485; +typedef ap_int_base<486,true> int486; +typedef ap_int_base<487,true> int487; +typedef ap_int_base<488,true> int488; +typedef ap_int_base<489,true> int489; +typedef ap_int_base<490,true> int490; +typedef ap_int_base<491,true> int491; +typedef ap_int_base<492,true> int492; +typedef ap_int_base<493,true> int493; +typedef ap_int_base<494,true> int494; +typedef ap_int_base<495,true> int495; +typedef ap_int_base<496,true> int496; +typedef ap_int_base<497,true> int497; +typedef ap_int_base<498,true> int498; +typedef ap_int_base<499,true> int499; +typedef ap_int_base<500,true> int500; +typedef ap_int_base<501,true> int501; +typedef ap_int_base<502,true> int502; +typedef ap_int_base<503,true> int503; +typedef ap_int_base<504,true> int504; +typedef ap_int_base<505,true> int505; +typedef ap_int_base<506,true> int506; +typedef ap_int_base<507,true> int507; +typedef ap_int_base<508,true> int508; +typedef ap_int_base<509,true> int509; +typedef ap_int_base<510,true> int510; +typedef ap_int_base<511,true> int511; +typedef ap_int_base<512,true> int512; +typedef ap_int_base<513,true> int513; +typedef ap_int_base<514,true> int514; +typedef ap_int_base<515,true> int515; +typedef ap_int_base<516,true> int516; +typedef ap_int_base<517,true> int517; +typedef ap_int_base<518,true> int518; +typedef ap_int_base<519,true> int519; +typedef ap_int_base<520,true> int520; +typedef ap_int_base<521,true> int521; +typedef ap_int_base<522,true> int522; +typedef ap_int_base<523,true> int523; +typedef ap_int_base<524,true> int524; +typedef ap_int_base<525,true> int525; +typedef ap_int_base<526,true> int526; +typedef ap_int_base<527,true> int527; +typedef ap_int_base<528,true> int528; +typedef ap_int_base<529,true> int529; +typedef ap_int_base<530,true> int530; +typedef ap_int_base<531,true> int531; +typedef ap_int_base<532,true> int532; +typedef ap_int_base<533,true> int533; +typedef ap_int_base<534,true> int534; +typedef ap_int_base<535,true> int535; +typedef ap_int_base<536,true> int536; +typedef ap_int_base<537,true> int537; +typedef ap_int_base<538,true> int538; +typedef ap_int_base<539,true> int539; +typedef ap_int_base<540,true> int540; +typedef ap_int_base<541,true> int541; +typedef ap_int_base<542,true> int542; +typedef ap_int_base<543,true> int543; +typedef ap_int_base<544,true> int544; +typedef ap_int_base<545,true> int545; +typedef ap_int_base<546,true> int546; +typedef ap_int_base<547,true> int547; +typedef ap_int_base<548,true> int548; +typedef ap_int_base<549,true> int549; +typedef ap_int_base<550,true> int550; +typedef ap_int_base<551,true> int551; +typedef ap_int_base<552,true> int552; +typedef ap_int_base<553,true> int553; +typedef ap_int_base<554,true> int554; +typedef ap_int_base<555,true> int555; +typedef ap_int_base<556,true> int556; +typedef ap_int_base<557,true> int557; +typedef ap_int_base<558,true> int558; +typedef ap_int_base<559,true> int559; +typedef ap_int_base<560,true> int560; +typedef ap_int_base<561,true> int561; +typedef ap_int_base<562,true> int562; +typedef ap_int_base<563,true> int563; +typedef ap_int_base<564,true> int564; +typedef ap_int_base<565,true> int565; +typedef ap_int_base<566,true> int566; +typedef ap_int_base<567,true> int567; +typedef ap_int_base<568,true> int568; +typedef ap_int_base<569,true> int569; +typedef ap_int_base<570,true> int570; +typedef ap_int_base<571,true> int571; +typedef ap_int_base<572,true> int572; +typedef ap_int_base<573,true> int573; +typedef ap_int_base<574,true> int574; +typedef ap_int_base<575,true> int575; +typedef ap_int_base<576,true> int576; +typedef ap_int_base<577,true> int577; +typedef ap_int_base<578,true> int578; +typedef ap_int_base<579,true> int579; +typedef ap_int_base<580,true> int580; +typedef ap_int_base<581,true> int581; +typedef ap_int_base<582,true> int582; +typedef ap_int_base<583,true> int583; +typedef ap_int_base<584,true> int584; +typedef ap_int_base<585,true> int585; +typedef ap_int_base<586,true> int586; +typedef ap_int_base<587,true> int587; +typedef ap_int_base<588,true> int588; +typedef ap_int_base<589,true> int589; +typedef ap_int_base<590,true> int590; +typedef ap_int_base<591,true> int591; +typedef ap_int_base<592,true> int592; +typedef ap_int_base<593,true> int593; +typedef ap_int_base<594,true> int594; +typedef ap_int_base<595,true> int595; +typedef ap_int_base<596,true> int596; +typedef ap_int_base<597,true> int597; +typedef ap_int_base<598,true> int598; +typedef ap_int_base<599,true> int599; +typedef ap_int_base<600,true> int600; +typedef ap_int_base<601,true> int601; +typedef ap_int_base<602,true> int602; +typedef ap_int_base<603,true> int603; +typedef ap_int_base<604,true> int604; +typedef ap_int_base<605,true> int605; +typedef ap_int_base<606,true> int606; +typedef ap_int_base<607,true> int607; +typedef ap_int_base<608,true> int608; +typedef ap_int_base<609,true> int609; +typedef ap_int_base<610,true> int610; +typedef ap_int_base<611,true> int611; +typedef ap_int_base<612,true> int612; +typedef ap_int_base<613,true> int613; +typedef ap_int_base<614,true> int614; +typedef ap_int_base<615,true> int615; +typedef ap_int_base<616,true> int616; +typedef ap_int_base<617,true> int617; +typedef ap_int_base<618,true> int618; +typedef ap_int_base<619,true> int619; +typedef ap_int_base<620,true> int620; +typedef ap_int_base<621,true> int621; +typedef ap_int_base<622,true> int622; +typedef ap_int_base<623,true> int623; +typedef ap_int_base<624,true> int624; +typedef ap_int_base<625,true> int625; +typedef ap_int_base<626,true> int626; +typedef ap_int_base<627,true> int627; +typedef ap_int_base<628,true> int628; +typedef ap_int_base<629,true> int629; +typedef ap_int_base<630,true> int630; +typedef ap_int_base<631,true> int631; +typedef ap_int_base<632,true> int632; +typedef ap_int_base<633,true> int633; +typedef ap_int_base<634,true> int634; +typedef ap_int_base<635,true> int635; +typedef ap_int_base<636,true> int636; +typedef ap_int_base<637,true> int637; +typedef ap_int_base<638,true> int638; +typedef ap_int_base<639,true> int639; +typedef ap_int_base<640,true> int640; +typedef ap_int_base<641,true> int641; +typedef ap_int_base<642,true> int642; +typedef ap_int_base<643,true> int643; +typedef ap_int_base<644,true> int644; +typedef ap_int_base<645,true> int645; +typedef ap_int_base<646,true> int646; +typedef ap_int_base<647,true> int647; +typedef ap_int_base<648,true> int648; +typedef ap_int_base<649,true> int649; +typedef ap_int_base<650,true> int650; +typedef ap_int_base<651,true> int651; +typedef ap_int_base<652,true> int652; +typedef ap_int_base<653,true> int653; +typedef ap_int_base<654,true> int654; +typedef ap_int_base<655,true> int655; +typedef ap_int_base<656,true> int656; +typedef ap_int_base<657,true> int657; +typedef ap_int_base<658,true> int658; +typedef ap_int_base<659,true> int659; +typedef ap_int_base<660,true> int660; +typedef ap_int_base<661,true> int661; +typedef ap_int_base<662,true> int662; +typedef ap_int_base<663,true> int663; +typedef ap_int_base<664,true> int664; +typedef ap_int_base<665,true> int665; +typedef ap_int_base<666,true> int666; +typedef ap_int_base<667,true> int667; +typedef ap_int_base<668,true> int668; +typedef ap_int_base<669,true> int669; +typedef ap_int_base<670,true> int670; +typedef ap_int_base<671,true> int671; +typedef ap_int_base<672,true> int672; +typedef ap_int_base<673,true> int673; +typedef ap_int_base<674,true> int674; +typedef ap_int_base<675,true> int675; +typedef ap_int_base<676,true> int676; +typedef ap_int_base<677,true> int677; +typedef ap_int_base<678,true> int678; +typedef ap_int_base<679,true> int679; +typedef ap_int_base<680,true> int680; +typedef ap_int_base<681,true> int681; +typedef ap_int_base<682,true> int682; +typedef ap_int_base<683,true> int683; +typedef ap_int_base<684,true> int684; +typedef ap_int_base<685,true> int685; +typedef ap_int_base<686,true> int686; +typedef ap_int_base<687,true> int687; +typedef ap_int_base<688,true> int688; +typedef ap_int_base<689,true> int689; +typedef ap_int_base<690,true> int690; +typedef ap_int_base<691,true> int691; +typedef ap_int_base<692,true> int692; +typedef ap_int_base<693,true> int693; +typedef ap_int_base<694,true> int694; +typedef ap_int_base<695,true> int695; +typedef ap_int_base<696,true> int696; +typedef ap_int_base<697,true> int697; +typedef ap_int_base<698,true> int698; +typedef ap_int_base<699,true> int699; +typedef ap_int_base<700,true> int700; +typedef ap_int_base<701,true> int701; +typedef ap_int_base<702,true> int702; +typedef ap_int_base<703,true> int703; +typedef ap_int_base<704,true> int704; +typedef ap_int_base<705,true> int705; +typedef ap_int_base<706,true> int706; +typedef ap_int_base<707,true> int707; +typedef ap_int_base<708,true> int708; +typedef ap_int_base<709,true> int709; +typedef ap_int_base<710,true> int710; +typedef ap_int_base<711,true> int711; +typedef ap_int_base<712,true> int712; +typedef ap_int_base<713,true> int713; +typedef ap_int_base<714,true> int714; +typedef ap_int_base<715,true> int715; +typedef ap_int_base<716,true> int716; +typedef ap_int_base<717,true> int717; +typedef ap_int_base<718,true> int718; +typedef ap_int_base<719,true> int719; +typedef ap_int_base<720,true> int720; +typedef ap_int_base<721,true> int721; +typedef ap_int_base<722,true> int722; +typedef ap_int_base<723,true> int723; +typedef ap_int_base<724,true> int724; +typedef ap_int_base<725,true> int725; +typedef ap_int_base<726,true> int726; +typedef ap_int_base<727,true> int727; +typedef ap_int_base<728,true> int728; +typedef ap_int_base<729,true> int729; +typedef ap_int_base<730,true> int730; +typedef ap_int_base<731,true> int731; +typedef ap_int_base<732,true> int732; +typedef ap_int_base<733,true> int733; +typedef ap_int_base<734,true> int734; +typedef ap_int_base<735,true> int735; +typedef ap_int_base<736,true> int736; +typedef ap_int_base<737,true> int737; +typedef ap_int_base<738,true> int738; +typedef ap_int_base<739,true> int739; +typedef ap_int_base<740,true> int740; +typedef ap_int_base<741,true> int741; +typedef ap_int_base<742,true> int742; +typedef ap_int_base<743,true> int743; +typedef ap_int_base<744,true> int744; +typedef ap_int_base<745,true> int745; +typedef ap_int_base<746,true> int746; +typedef ap_int_base<747,true> int747; +typedef ap_int_base<748,true> int748; +typedef ap_int_base<749,true> int749; +typedef ap_int_base<750,true> int750; +typedef ap_int_base<751,true> int751; +typedef ap_int_base<752,true> int752; +typedef ap_int_base<753,true> int753; +typedef ap_int_base<754,true> int754; +typedef ap_int_base<755,true> int755; +typedef ap_int_base<756,true> int756; +typedef ap_int_base<757,true> int757; +typedef ap_int_base<758,true> int758; +typedef ap_int_base<759,true> int759; +typedef ap_int_base<760,true> int760; +typedef ap_int_base<761,true> int761; +typedef ap_int_base<762,true> int762; +typedef ap_int_base<763,true> int763; +typedef ap_int_base<764,true> int764; +typedef ap_int_base<765,true> int765; +typedef ap_int_base<766,true> int766; +typedef ap_int_base<767,true> int767; +typedef ap_int_base<768,true> int768; +typedef ap_int_base<769,true> int769; +typedef ap_int_base<770,true> int770; +typedef ap_int_base<771,true> int771; +typedef ap_int_base<772,true> int772; +typedef ap_int_base<773,true> int773; +typedef ap_int_base<774,true> int774; +typedef ap_int_base<775,true> int775; +typedef ap_int_base<776,true> int776; +typedef ap_int_base<777,true> int777; +typedef ap_int_base<778,true> int778; +typedef ap_int_base<779,true> int779; +typedef ap_int_base<780,true> int780; +typedef ap_int_base<781,true> int781; +typedef ap_int_base<782,true> int782; +typedef ap_int_base<783,true> int783; +typedef ap_int_base<784,true> int784; +typedef ap_int_base<785,true> int785; +typedef ap_int_base<786,true> int786; +typedef ap_int_base<787,true> int787; +typedef ap_int_base<788,true> int788; +typedef ap_int_base<789,true> int789; +typedef ap_int_base<790,true> int790; +typedef ap_int_base<791,true> int791; +typedef ap_int_base<792,true> int792; +typedef ap_int_base<793,true> int793; +typedef ap_int_base<794,true> int794; +typedef ap_int_base<795,true> int795; +typedef ap_int_base<796,true> int796; +typedef ap_int_base<797,true> int797; +typedef ap_int_base<798,true> int798; +typedef ap_int_base<799,true> int799; +typedef ap_int_base<800,true> int800; +typedef ap_int_base<801,true> int801; +typedef ap_int_base<802,true> int802; +typedef ap_int_base<803,true> int803; +typedef ap_int_base<804,true> int804; +typedef ap_int_base<805,true> int805; +typedef ap_int_base<806,true> int806; +typedef ap_int_base<807,true> int807; +typedef ap_int_base<808,true> int808; +typedef ap_int_base<809,true> int809; +typedef ap_int_base<810,true> int810; +typedef ap_int_base<811,true> int811; +typedef ap_int_base<812,true> int812; +typedef ap_int_base<813,true> int813; +typedef ap_int_base<814,true> int814; +typedef ap_int_base<815,true> int815; +typedef ap_int_base<816,true> int816; +typedef ap_int_base<817,true> int817; +typedef ap_int_base<818,true> int818; +typedef ap_int_base<819,true> int819; +typedef ap_int_base<820,true> int820; +typedef ap_int_base<821,true> int821; +typedef ap_int_base<822,true> int822; +typedef ap_int_base<823,true> int823; +typedef ap_int_base<824,true> int824; +typedef ap_int_base<825,true> int825; +typedef ap_int_base<826,true> int826; +typedef ap_int_base<827,true> int827; +typedef ap_int_base<828,true> int828; +typedef ap_int_base<829,true> int829; +typedef ap_int_base<830,true> int830; +typedef ap_int_base<831,true> int831; +typedef ap_int_base<832,true> int832; +typedef ap_int_base<833,true> int833; +typedef ap_int_base<834,true> int834; +typedef ap_int_base<835,true> int835; +typedef ap_int_base<836,true> int836; +typedef ap_int_base<837,true> int837; +typedef ap_int_base<838,true> int838; +typedef ap_int_base<839,true> int839; +typedef ap_int_base<840,true> int840; +typedef ap_int_base<841,true> int841; +typedef ap_int_base<842,true> int842; +typedef ap_int_base<843,true> int843; +typedef ap_int_base<844,true> int844; +typedef ap_int_base<845,true> int845; +typedef ap_int_base<846,true> int846; +typedef ap_int_base<847,true> int847; +typedef ap_int_base<848,true> int848; +typedef ap_int_base<849,true> int849; +typedef ap_int_base<850,true> int850; +typedef ap_int_base<851,true> int851; +typedef ap_int_base<852,true> int852; +typedef ap_int_base<853,true> int853; +typedef ap_int_base<854,true> int854; +typedef ap_int_base<855,true> int855; +typedef ap_int_base<856,true> int856; +typedef ap_int_base<857,true> int857; +typedef ap_int_base<858,true> int858; +typedef ap_int_base<859,true> int859; +typedef ap_int_base<860,true> int860; +typedef ap_int_base<861,true> int861; +typedef ap_int_base<862,true> int862; +typedef ap_int_base<863,true> int863; +typedef ap_int_base<864,true> int864; +typedef ap_int_base<865,true> int865; +typedef ap_int_base<866,true> int866; +typedef ap_int_base<867,true> int867; +typedef ap_int_base<868,true> int868; +typedef ap_int_base<869,true> int869; +typedef ap_int_base<870,true> int870; +typedef ap_int_base<871,true> int871; +typedef ap_int_base<872,true> int872; +typedef ap_int_base<873,true> int873; +typedef ap_int_base<874,true> int874; +typedef ap_int_base<875,true> int875; +typedef ap_int_base<876,true> int876; +typedef ap_int_base<877,true> int877; +typedef ap_int_base<878,true> int878; +typedef ap_int_base<879,true> int879; +typedef ap_int_base<880,true> int880; +typedef ap_int_base<881,true> int881; +typedef ap_int_base<882,true> int882; +typedef ap_int_base<883,true> int883; +typedef ap_int_base<884,true> int884; +typedef ap_int_base<885,true> int885; +typedef ap_int_base<886,true> int886; +typedef ap_int_base<887,true> int887; +typedef ap_int_base<888,true> int888; +typedef ap_int_base<889,true> int889; +typedef ap_int_base<890,true> int890; +typedef ap_int_base<891,true> int891; +typedef ap_int_base<892,true> int892; +typedef ap_int_base<893,true> int893; +typedef ap_int_base<894,true> int894; +typedef ap_int_base<895,true> int895; +typedef ap_int_base<896,true> int896; +typedef ap_int_base<897,true> int897; +typedef ap_int_base<898,true> int898; +typedef ap_int_base<899,true> int899; +typedef ap_int_base<900,true> int900; +typedef ap_int_base<901,true> int901; +typedef ap_int_base<902,true> int902; +typedef ap_int_base<903,true> int903; +typedef ap_int_base<904,true> int904; +typedef ap_int_base<905,true> int905; +typedef ap_int_base<906,true> int906; +typedef ap_int_base<907,true> int907; +typedef ap_int_base<908,true> int908; +typedef ap_int_base<909,true> int909; +typedef ap_int_base<910,true> int910; +typedef ap_int_base<911,true> int911; +typedef ap_int_base<912,true> int912; +typedef ap_int_base<913,true> int913; +typedef ap_int_base<914,true> int914; +typedef ap_int_base<915,true> int915; +typedef ap_int_base<916,true> int916; +typedef ap_int_base<917,true> int917; +typedef ap_int_base<918,true> int918; +typedef ap_int_base<919,true> int919; +typedef ap_int_base<920,true> int920; +typedef ap_int_base<921,true> int921; +typedef ap_int_base<922,true> int922; +typedef ap_int_base<923,true> int923; +typedef ap_int_base<924,true> int924; +typedef ap_int_base<925,true> int925; +typedef ap_int_base<926,true> int926; +typedef ap_int_base<927,true> int927; +typedef ap_int_base<928,true> int928; +typedef ap_int_base<929,true> int929; +typedef ap_int_base<930,true> int930; +typedef ap_int_base<931,true> int931; +typedef ap_int_base<932,true> int932; +typedef ap_int_base<933,true> int933; +typedef ap_int_base<934,true> int934; +typedef ap_int_base<935,true> int935; +typedef ap_int_base<936,true> int936; +typedef ap_int_base<937,true> int937; +typedef ap_int_base<938,true> int938; +typedef ap_int_base<939,true> int939; +typedef ap_int_base<940,true> int940; +typedef ap_int_base<941,true> int941; +typedef ap_int_base<942,true> int942; +typedef ap_int_base<943,true> int943; +typedef ap_int_base<944,true> int944; +typedef ap_int_base<945,true> int945; +typedef ap_int_base<946,true> int946; +typedef ap_int_base<947,true> int947; +typedef ap_int_base<948,true> int948; +typedef ap_int_base<949,true> int949; +typedef ap_int_base<950,true> int950; +typedef ap_int_base<951,true> int951; +typedef ap_int_base<952,true> int952; +typedef ap_int_base<953,true> int953; +typedef ap_int_base<954,true> int954; +typedef ap_int_base<955,true> int955; +typedef ap_int_base<956,true> int956; +typedef ap_int_base<957,true> int957; +typedef ap_int_base<958,true> int958; +typedef ap_int_base<959,true> int959; +typedef ap_int_base<960,true> int960; +typedef ap_int_base<961,true> int961; +typedef ap_int_base<962,true> int962; +typedef ap_int_base<963,true> int963; +typedef ap_int_base<964,true> int964; +typedef ap_int_base<965,true> int965; +typedef ap_int_base<966,true> int966; +typedef ap_int_base<967,true> int967; +typedef ap_int_base<968,true> int968; +typedef ap_int_base<969,true> int969; +typedef ap_int_base<970,true> int970; +typedef ap_int_base<971,true> int971; +typedef ap_int_base<972,true> int972; +typedef ap_int_base<973,true> int973; +typedef ap_int_base<974,true> int974; +typedef ap_int_base<975,true> int975; +typedef ap_int_base<976,true> int976; +typedef ap_int_base<977,true> int977; +typedef ap_int_base<978,true> int978; +typedef ap_int_base<979,true> int979; +typedef ap_int_base<980,true> int980; +typedef ap_int_base<981,true> int981; +typedef ap_int_base<982,true> int982; +typedef ap_int_base<983,true> int983; +typedef ap_int_base<984,true> int984; +typedef ap_int_base<985,true> int985; +typedef ap_int_base<986,true> int986; +typedef ap_int_base<987,true> int987; +typedef ap_int_base<988,true> int988; +typedef ap_int_base<989,true> int989; +typedef ap_int_base<990,true> int990; +typedef ap_int_base<991,true> int991; +typedef ap_int_base<992,true> int992; +typedef ap_int_base<993,true> int993; +typedef ap_int_base<994,true> int994; +typedef ap_int_base<995,true> int995; +typedef ap_int_base<996,true> int996; +typedef ap_int_base<997,true> int997; +typedef ap_int_base<998,true> int998; +typedef ap_int_base<999,true> int999; +typedef ap_int_base<1000,true> int1000; +typedef ap_int_base<1001,true> int1001; +typedef ap_int_base<1002,true> int1002; +typedef ap_int_base<1003,true> int1003; +typedef ap_int_base<1004,true> int1004; +typedef ap_int_base<1005,true> int1005; +typedef ap_int_base<1006,true> int1006; +typedef ap_int_base<1007,true> int1007; +typedef ap_int_base<1008,true> int1008; +typedef ap_int_base<1009,true> int1009; +typedef ap_int_base<1010,true> int1010; +typedef ap_int_base<1011,true> int1011; +typedef ap_int_base<1012,true> int1012; +typedef ap_int_base<1013,true> int1013; +typedef ap_int_base<1014,true> int1014; +typedef ap_int_base<1015,true> int1015; +typedef ap_int_base<1016,true> int1016; +typedef ap_int_base<1017,true> int1017; +typedef ap_int_base<1018,true> int1018; +typedef ap_int_base<1019,true> int1019; +typedef ap_int_base<1020,true> int1020; +typedef ap_int_base<1021,true> int1021; +typedef ap_int_base<1022,true> int1022; +typedef ap_int_base<1023,true> int1023; +typedef ap_int_base<1024,true> int1024; +typedef ap_int_base<1,false> uint1; +typedef ap_int_base<2,false> uint2; +typedef ap_int_base<3,false> uint3; +typedef ap_int_base<4,false> uint4; +typedef ap_int_base<5,false> uint5; +typedef ap_int_base<6,false> uint6; +typedef ap_int_base<7,false> uint7; +typedef ap_int_base<8,false> uint8; +typedef ap_int_base<9,false> uint9; +typedef ap_int_base<10,false> uint10; +typedef ap_int_base<11,false> uint11; +typedef ap_int_base<12,false> uint12; +typedef ap_int_base<13,false> uint13; +typedef ap_int_base<14,false> uint14; +typedef ap_int_base<15,false> uint15; +typedef ap_int_base<16,false> uint16; +typedef ap_int_base<17,false> uint17; +typedef ap_int_base<18,false> uint18; +typedef ap_int_base<19,false> uint19; +typedef ap_int_base<20,false> uint20; +typedef ap_int_base<21,false> uint21; +typedef ap_int_base<22,false> uint22; +typedef ap_int_base<23,false> uint23; +typedef ap_int_base<24,false> uint24; +typedef ap_int_base<25,false> uint25; +typedef ap_int_base<26,false> uint26; +typedef ap_int_base<27,false> uint27; +typedef ap_int_base<28,false> uint28; +typedef ap_int_base<29,false> uint29; +typedef ap_int_base<30,false> uint30; +typedef ap_int_base<31,false> uint31; +typedef ap_int_base<32,false> uint32; +typedef ap_int_base<33,false> uint33; +typedef ap_int_base<34,false> uint34; +typedef ap_int_base<35,false> uint35; +typedef ap_int_base<36,false> uint36; +typedef ap_int_base<37,false> uint37; +typedef ap_int_base<38,false> uint38; +typedef ap_int_base<39,false> uint39; +typedef ap_int_base<40,false> uint40; +typedef ap_int_base<41,false> uint41; +typedef ap_int_base<42,false> uint42; +typedef ap_int_base<43,false> uint43; +typedef ap_int_base<44,false> uint44; +typedef ap_int_base<45,false> uint45; +typedef ap_int_base<46,false> uint46; +typedef ap_int_base<47,false> uint47; +typedef ap_int_base<48,false> uint48; +typedef ap_int_base<49,false> uint49; +typedef ap_int_base<50,false> uint50; +typedef ap_int_base<51,false> uint51; +typedef ap_int_base<52,false> uint52; +typedef ap_int_base<53,false> uint53; +typedef ap_int_base<54,false> uint54; +typedef ap_int_base<55,false> uint55; +typedef ap_int_base<56,false> uint56; +typedef ap_int_base<57,false> uint57; +typedef ap_int_base<58,false> uint58; +typedef ap_int_base<59,false> uint59; +typedef ap_int_base<60,false> uint60; +typedef ap_int_base<61,false> uint61; +typedef ap_int_base<62,false> uint62; +typedef ap_int_base<63,false> uint63; +typedef ap_int_base<64,false> uint64; +typedef ap_int_base<65,false> uint65; +typedef ap_int_base<66,false> uint66; +typedef ap_int_base<67,false> uint67; +typedef ap_int_base<68,false> uint68; +typedef ap_int_base<69,false> uint69; +typedef ap_int_base<70,false> uint70; +typedef ap_int_base<71,false> uint71; +typedef ap_int_base<72,false> uint72; +typedef ap_int_base<73,false> uint73; +typedef ap_int_base<74,false> uint74; +typedef ap_int_base<75,false> uint75; +typedef ap_int_base<76,false> uint76; +typedef ap_int_base<77,false> uint77; +typedef ap_int_base<78,false> uint78; +typedef ap_int_base<79,false> uint79; +typedef ap_int_base<80,false> uint80; +typedef ap_int_base<81,false> uint81; +typedef ap_int_base<82,false> uint82; +typedef ap_int_base<83,false> uint83; +typedef ap_int_base<84,false> uint84; +typedef ap_int_base<85,false> uint85; +typedef ap_int_base<86,false> uint86; +typedef ap_int_base<87,false> uint87; +typedef ap_int_base<88,false> uint88; +typedef ap_int_base<89,false> uint89; +typedef ap_int_base<90,false> uint90; +typedef ap_int_base<91,false> uint91; +typedef ap_int_base<92,false> uint92; +typedef ap_int_base<93,false> uint93; +typedef ap_int_base<94,false> uint94; +typedef ap_int_base<95,false> uint95; +typedef ap_int_base<96,false> uint96; +typedef ap_int_base<97,false> uint97; +typedef ap_int_base<98,false> uint98; +typedef ap_int_base<99,false> uint99; +typedef ap_int_base<100,false> uint100; +typedef ap_int_base<101,false> uint101; +typedef ap_int_base<102,false> uint102; +typedef ap_int_base<103,false> uint103; +typedef ap_int_base<104,false> uint104; +typedef ap_int_base<105,false> uint105; +typedef ap_int_base<106,false> uint106; +typedef ap_int_base<107,false> uint107; +typedef ap_int_base<108,false> uint108; +typedef ap_int_base<109,false> uint109; +typedef ap_int_base<110,false> uint110; +typedef ap_int_base<111,false> uint111; +typedef ap_int_base<112,false> uint112; +typedef ap_int_base<113,false> uint113; +typedef ap_int_base<114,false> uint114; +typedef ap_int_base<115,false> uint115; +typedef ap_int_base<116,false> uint116; +typedef ap_int_base<117,false> uint117; +typedef ap_int_base<118,false> uint118; +typedef ap_int_base<119,false> uint119; +typedef ap_int_base<120,false> uint120; +typedef ap_int_base<121,false> uint121; +typedef ap_int_base<122,false> uint122; +typedef ap_int_base<123,false> uint123; +typedef ap_int_base<124,false> uint124; +typedef ap_int_base<125,false> uint125; +typedef ap_int_base<126,false> uint126; +typedef ap_int_base<127,false> uint127; +typedef ap_int_base<128,false> uint128; +typedef ap_int_base<129,false> uint129; +typedef ap_int_base<130,false> uint130; +typedef ap_int_base<131,false> uint131; +typedef ap_int_base<132,false> uint132; +typedef ap_int_base<133,false> uint133; +typedef ap_int_base<134,false> uint134; +typedef ap_int_base<135,false> uint135; +typedef ap_int_base<136,false> uint136; +typedef ap_int_base<137,false> uint137; +typedef ap_int_base<138,false> uint138; +typedef ap_int_base<139,false> uint139; +typedef ap_int_base<140,false> uint140; +typedef ap_int_base<141,false> uint141; +typedef ap_int_base<142,false> uint142; +typedef ap_int_base<143,false> uint143; +typedef ap_int_base<144,false> uint144; +typedef ap_int_base<145,false> uint145; +typedef ap_int_base<146,false> uint146; +typedef ap_int_base<147,false> uint147; +typedef ap_int_base<148,false> uint148; +typedef ap_int_base<149,false> uint149; +typedef ap_int_base<150,false> uint150; +typedef ap_int_base<151,false> uint151; +typedef ap_int_base<152,false> uint152; +typedef ap_int_base<153,false> uint153; +typedef ap_int_base<154,false> uint154; +typedef ap_int_base<155,false> uint155; +typedef ap_int_base<156,false> uint156; +typedef ap_int_base<157,false> uint157; +typedef ap_int_base<158,false> uint158; +typedef ap_int_base<159,false> uint159; +typedef ap_int_base<160,false> uint160; +typedef ap_int_base<161,false> uint161; +typedef ap_int_base<162,false> uint162; +typedef ap_int_base<163,false> uint163; +typedef ap_int_base<164,false> uint164; +typedef ap_int_base<165,false> uint165; +typedef ap_int_base<166,false> uint166; +typedef ap_int_base<167,false> uint167; +typedef ap_int_base<168,false> uint168; +typedef ap_int_base<169,false> uint169; +typedef ap_int_base<170,false> uint170; +typedef ap_int_base<171,false> uint171; +typedef ap_int_base<172,false> uint172; +typedef ap_int_base<173,false> uint173; +typedef ap_int_base<174,false> uint174; +typedef ap_int_base<175,false> uint175; +typedef ap_int_base<176,false> uint176; +typedef ap_int_base<177,false> uint177; +typedef ap_int_base<178,false> uint178; +typedef ap_int_base<179,false> uint179; +typedef ap_int_base<180,false> uint180; +typedef ap_int_base<181,false> uint181; +typedef ap_int_base<182,false> uint182; +typedef ap_int_base<183,false> uint183; +typedef ap_int_base<184,false> uint184; +typedef ap_int_base<185,false> uint185; +typedef ap_int_base<186,false> uint186; +typedef ap_int_base<187,false> uint187; +typedef ap_int_base<188,false> uint188; +typedef ap_int_base<189,false> uint189; +typedef ap_int_base<190,false> uint190; +typedef ap_int_base<191,false> uint191; +typedef ap_int_base<192,false> uint192; +typedef ap_int_base<193,false> uint193; +typedef ap_int_base<194,false> uint194; +typedef ap_int_base<195,false> uint195; +typedef ap_int_base<196,false> uint196; +typedef ap_int_base<197,false> uint197; +typedef ap_int_base<198,false> uint198; +typedef ap_int_base<199,false> uint199; +typedef ap_int_base<200,false> uint200; +typedef ap_int_base<201,false> uint201; +typedef ap_int_base<202,false> uint202; +typedef ap_int_base<203,false> uint203; +typedef ap_int_base<204,false> uint204; +typedef ap_int_base<205,false> uint205; +typedef ap_int_base<206,false> uint206; +typedef ap_int_base<207,false> uint207; +typedef ap_int_base<208,false> uint208; +typedef ap_int_base<209,false> uint209; +typedef ap_int_base<210,false> uint210; +typedef ap_int_base<211,false> uint211; +typedef ap_int_base<212,false> uint212; +typedef ap_int_base<213,false> uint213; +typedef ap_int_base<214,false> uint214; +typedef ap_int_base<215,false> uint215; +typedef ap_int_base<216,false> uint216; +typedef ap_int_base<217,false> uint217; +typedef ap_int_base<218,false> uint218; +typedef ap_int_base<219,false> uint219; +typedef ap_int_base<220,false> uint220; +typedef ap_int_base<221,false> uint221; +typedef ap_int_base<222,false> uint222; +typedef ap_int_base<223,false> uint223; +typedef ap_int_base<224,false> uint224; +typedef ap_int_base<225,false> uint225; +typedef ap_int_base<226,false> uint226; +typedef ap_int_base<227,false> uint227; +typedef ap_int_base<228,false> uint228; +typedef ap_int_base<229,false> uint229; +typedef ap_int_base<230,false> uint230; +typedef ap_int_base<231,false> uint231; +typedef ap_int_base<232,false> uint232; +typedef ap_int_base<233,false> uint233; +typedef ap_int_base<234,false> uint234; +typedef ap_int_base<235,false> uint235; +typedef ap_int_base<236,false> uint236; +typedef ap_int_base<237,false> uint237; +typedef ap_int_base<238,false> uint238; +typedef ap_int_base<239,false> uint239; +typedef ap_int_base<240,false> uint240; +typedef ap_int_base<241,false> uint241; +typedef ap_int_base<242,false> uint242; +typedef ap_int_base<243,false> uint243; +typedef ap_int_base<244,false> uint244; +typedef ap_int_base<245,false> uint245; +typedef ap_int_base<246,false> uint246; +typedef ap_int_base<247,false> uint247; +typedef ap_int_base<248,false> uint248; +typedef ap_int_base<249,false> uint249; +typedef ap_int_base<250,false> uint250; +typedef ap_int_base<251,false> uint251; +typedef ap_int_base<252,false> uint252; +typedef ap_int_base<253,false> uint253; +typedef ap_int_base<254,false> uint254; +typedef ap_int_base<255,false> uint255; +typedef ap_int_base<256,false> uint256; +typedef ap_int_base<257,false> uint257; +typedef ap_int_base<258,false> uint258; +typedef ap_int_base<259,false> uint259; +typedef ap_int_base<260,false> uint260; +typedef ap_int_base<261,false> uint261; +typedef ap_int_base<262,false> uint262; +typedef ap_int_base<263,false> uint263; +typedef ap_int_base<264,false> uint264; +typedef ap_int_base<265,false> uint265; +typedef ap_int_base<266,false> uint266; +typedef ap_int_base<267,false> uint267; +typedef ap_int_base<268,false> uint268; +typedef ap_int_base<269,false> uint269; +typedef ap_int_base<270,false> uint270; +typedef ap_int_base<271,false> uint271; +typedef ap_int_base<272,false> uint272; +typedef ap_int_base<273,false> uint273; +typedef ap_int_base<274,false> uint274; +typedef ap_int_base<275,false> uint275; +typedef ap_int_base<276,false> uint276; +typedef ap_int_base<277,false> uint277; +typedef ap_int_base<278,false> uint278; +typedef ap_int_base<279,false> uint279; +typedef ap_int_base<280,false> uint280; +typedef ap_int_base<281,false> uint281; +typedef ap_int_base<282,false> uint282; +typedef ap_int_base<283,false> uint283; +typedef ap_int_base<284,false> uint284; +typedef ap_int_base<285,false> uint285; +typedef ap_int_base<286,false> uint286; +typedef ap_int_base<287,false> uint287; +typedef ap_int_base<288,false> uint288; +typedef ap_int_base<289,false> uint289; +typedef ap_int_base<290,false> uint290; +typedef ap_int_base<291,false> uint291; +typedef ap_int_base<292,false> uint292; +typedef ap_int_base<293,false> uint293; +typedef ap_int_base<294,false> uint294; +typedef ap_int_base<295,false> uint295; +typedef ap_int_base<296,false> uint296; +typedef ap_int_base<297,false> uint297; +typedef ap_int_base<298,false> uint298; +typedef ap_int_base<299,false> uint299; +typedef ap_int_base<300,false> uint300; +typedef ap_int_base<301,false> uint301; +typedef ap_int_base<302,false> uint302; +typedef ap_int_base<303,false> uint303; +typedef ap_int_base<304,false> uint304; +typedef ap_int_base<305,false> uint305; +typedef ap_int_base<306,false> uint306; +typedef ap_int_base<307,false> uint307; +typedef ap_int_base<308,false> uint308; +typedef ap_int_base<309,false> uint309; +typedef ap_int_base<310,false> uint310; +typedef ap_int_base<311,false> uint311; +typedef ap_int_base<312,false> uint312; +typedef ap_int_base<313,false> uint313; +typedef ap_int_base<314,false> uint314; +typedef ap_int_base<315,false> uint315; +typedef ap_int_base<316,false> uint316; +typedef ap_int_base<317,false> uint317; +typedef ap_int_base<318,false> uint318; +typedef ap_int_base<319,false> uint319; +typedef ap_int_base<320,false> uint320; +typedef ap_int_base<321,false> uint321; +typedef ap_int_base<322,false> uint322; +typedef ap_int_base<323,false> uint323; +typedef ap_int_base<324,false> uint324; +typedef ap_int_base<325,false> uint325; +typedef ap_int_base<326,false> uint326; +typedef ap_int_base<327,false> uint327; +typedef ap_int_base<328,false> uint328; +typedef ap_int_base<329,false> uint329; +typedef ap_int_base<330,false> uint330; +typedef ap_int_base<331,false> uint331; +typedef ap_int_base<332,false> uint332; +typedef ap_int_base<333,false> uint333; +typedef ap_int_base<334,false> uint334; +typedef ap_int_base<335,false> uint335; +typedef ap_int_base<336,false> uint336; +typedef ap_int_base<337,false> uint337; +typedef ap_int_base<338,false> uint338; +typedef ap_int_base<339,false> uint339; +typedef ap_int_base<340,false> uint340; +typedef ap_int_base<341,false> uint341; +typedef ap_int_base<342,false> uint342; +typedef ap_int_base<343,false> uint343; +typedef ap_int_base<344,false> uint344; +typedef ap_int_base<345,false> uint345; +typedef ap_int_base<346,false> uint346; +typedef ap_int_base<347,false> uint347; +typedef ap_int_base<348,false> uint348; +typedef ap_int_base<349,false> uint349; +typedef ap_int_base<350,false> uint350; +typedef ap_int_base<351,false> uint351; +typedef ap_int_base<352,false> uint352; +typedef ap_int_base<353,false> uint353; +typedef ap_int_base<354,false> uint354; +typedef ap_int_base<355,false> uint355; +typedef ap_int_base<356,false> uint356; +typedef ap_int_base<357,false> uint357; +typedef ap_int_base<358,false> uint358; +typedef ap_int_base<359,false> uint359; +typedef ap_int_base<360,false> uint360; +typedef ap_int_base<361,false> uint361; +typedef ap_int_base<362,false> uint362; +typedef ap_int_base<363,false> uint363; +typedef ap_int_base<364,false> uint364; +typedef ap_int_base<365,false> uint365; +typedef ap_int_base<366,false> uint366; +typedef ap_int_base<367,false> uint367; +typedef ap_int_base<368,false> uint368; +typedef ap_int_base<369,false> uint369; +typedef ap_int_base<370,false> uint370; +typedef ap_int_base<371,false> uint371; +typedef ap_int_base<372,false> uint372; +typedef ap_int_base<373,false> uint373; +typedef ap_int_base<374,false> uint374; +typedef ap_int_base<375,false> uint375; +typedef ap_int_base<376,false> uint376; +typedef ap_int_base<377,false> uint377; +typedef ap_int_base<378,false> uint378; +typedef ap_int_base<379,false> uint379; +typedef ap_int_base<380,false> uint380; +typedef ap_int_base<381,false> uint381; +typedef ap_int_base<382,false> uint382; +typedef ap_int_base<383,false> uint383; +typedef ap_int_base<384,false> uint384; +typedef ap_int_base<385,false> uint385; +typedef ap_int_base<386,false> uint386; +typedef ap_int_base<387,false> uint387; +typedef ap_int_base<388,false> uint388; +typedef ap_int_base<389,false> uint389; +typedef ap_int_base<390,false> uint390; +typedef ap_int_base<391,false> uint391; +typedef ap_int_base<392,false> uint392; +typedef ap_int_base<393,false> uint393; +typedef ap_int_base<394,false> uint394; +typedef ap_int_base<395,false> uint395; +typedef ap_int_base<396,false> uint396; +typedef ap_int_base<397,false> uint397; +typedef ap_int_base<398,false> uint398; +typedef ap_int_base<399,false> uint399; +typedef ap_int_base<400,false> uint400; +typedef ap_int_base<401,false> uint401; +typedef ap_int_base<402,false> uint402; +typedef ap_int_base<403,false> uint403; +typedef ap_int_base<404,false> uint404; +typedef ap_int_base<405,false> uint405; +typedef ap_int_base<406,false> uint406; +typedef ap_int_base<407,false> uint407; +typedef ap_int_base<408,false> uint408; +typedef ap_int_base<409,false> uint409; +typedef ap_int_base<410,false> uint410; +typedef ap_int_base<411,false> uint411; +typedef ap_int_base<412,false> uint412; +typedef ap_int_base<413,false> uint413; +typedef ap_int_base<414,false> uint414; +typedef ap_int_base<415,false> uint415; +typedef ap_int_base<416,false> uint416; +typedef ap_int_base<417,false> uint417; +typedef ap_int_base<418,false> uint418; +typedef ap_int_base<419,false> uint419; +typedef ap_int_base<420,false> uint420; +typedef ap_int_base<421,false> uint421; +typedef ap_int_base<422,false> uint422; +typedef ap_int_base<423,false> uint423; +typedef ap_int_base<424,false> uint424; +typedef ap_int_base<425,false> uint425; +typedef ap_int_base<426,false> uint426; +typedef ap_int_base<427,false> uint427; +typedef ap_int_base<428,false> uint428; +typedef ap_int_base<429,false> uint429; +typedef ap_int_base<430,false> uint430; +typedef ap_int_base<431,false> uint431; +typedef ap_int_base<432,false> uint432; +typedef ap_int_base<433,false> uint433; +typedef ap_int_base<434,false> uint434; +typedef ap_int_base<435,false> uint435; +typedef ap_int_base<436,false> uint436; +typedef ap_int_base<437,false> uint437; +typedef ap_int_base<438,false> uint438; +typedef ap_int_base<439,false> uint439; +typedef ap_int_base<440,false> uint440; +typedef ap_int_base<441,false> uint441; +typedef ap_int_base<442,false> uint442; +typedef ap_int_base<443,false> uint443; +typedef ap_int_base<444,false> uint444; +typedef ap_int_base<445,false> uint445; +typedef ap_int_base<446,false> uint446; +typedef ap_int_base<447,false> uint447; +typedef ap_int_base<448,false> uint448; +typedef ap_int_base<449,false> uint449; +typedef ap_int_base<450,false> uint450; +typedef ap_int_base<451,false> uint451; +typedef ap_int_base<452,false> uint452; +typedef ap_int_base<453,false> uint453; +typedef ap_int_base<454,false> uint454; +typedef ap_int_base<455,false> uint455; +typedef ap_int_base<456,false> uint456; +typedef ap_int_base<457,false> uint457; +typedef ap_int_base<458,false> uint458; +typedef ap_int_base<459,false> uint459; +typedef ap_int_base<460,false> uint460; +typedef ap_int_base<461,false> uint461; +typedef ap_int_base<462,false> uint462; +typedef ap_int_base<463,false> uint463; +typedef ap_int_base<464,false> uint464; +typedef ap_int_base<465,false> uint465; +typedef ap_int_base<466,false> uint466; +typedef ap_int_base<467,false> uint467; +typedef ap_int_base<468,false> uint468; +typedef ap_int_base<469,false> uint469; +typedef ap_int_base<470,false> uint470; +typedef ap_int_base<471,false> uint471; +typedef ap_int_base<472,false> uint472; +typedef ap_int_base<473,false> uint473; +typedef ap_int_base<474,false> uint474; +typedef ap_int_base<475,false> uint475; +typedef ap_int_base<476,false> uint476; +typedef ap_int_base<477,false> uint477; +typedef ap_int_base<478,false> uint478; +typedef ap_int_base<479,false> uint479; +typedef ap_int_base<480,false> uint480; +typedef ap_int_base<481,false> uint481; +typedef ap_int_base<482,false> uint482; +typedef ap_int_base<483,false> uint483; +typedef ap_int_base<484,false> uint484; +typedef ap_int_base<485,false> uint485; +typedef ap_int_base<486,false> uint486; +typedef ap_int_base<487,false> uint487; +typedef ap_int_base<488,false> uint488; +typedef ap_int_base<489,false> uint489; +typedef ap_int_base<490,false> uint490; +typedef ap_int_base<491,false> uint491; +typedef ap_int_base<492,false> uint492; +typedef ap_int_base<493,false> uint493; +typedef ap_int_base<494,false> uint494; +typedef ap_int_base<495,false> uint495; +typedef ap_int_base<496,false> uint496; +typedef ap_int_base<497,false> uint497; +typedef ap_int_base<498,false> uint498; +typedef ap_int_base<499,false> uint499; +typedef ap_int_base<500,false> uint500; +typedef ap_int_base<501,false> uint501; +typedef ap_int_base<502,false> uint502; +typedef ap_int_base<503,false> uint503; +typedef ap_int_base<504,false> uint504; +typedef ap_int_base<505,false> uint505; +typedef ap_int_base<506,false> uint506; +typedef ap_int_base<507,false> uint507; +typedef ap_int_base<508,false> uint508; +typedef ap_int_base<509,false> uint509; +typedef ap_int_base<510,false> uint510; +typedef ap_int_base<511,false> uint511; +typedef ap_int_base<512,false> uint512; +typedef ap_int_base<513,false> uint513; +typedef ap_int_base<514,false> uint514; +typedef ap_int_base<515,false> uint515; +typedef ap_int_base<516,false> uint516; +typedef ap_int_base<517,false> uint517; +typedef ap_int_base<518,false> uint518; +typedef ap_int_base<519,false> uint519; +typedef ap_int_base<520,false> uint520; +typedef ap_int_base<521,false> uint521; +typedef ap_int_base<522,false> uint522; +typedef ap_int_base<523,false> uint523; +typedef ap_int_base<524,false> uint524; +typedef ap_int_base<525,false> uint525; +typedef ap_int_base<526,false> uint526; +typedef ap_int_base<527,false> uint527; +typedef ap_int_base<528,false> uint528; +typedef ap_int_base<529,false> uint529; +typedef ap_int_base<530,false> uint530; +typedef ap_int_base<531,false> uint531; +typedef ap_int_base<532,false> uint532; +typedef ap_int_base<533,false> uint533; +typedef ap_int_base<534,false> uint534; +typedef ap_int_base<535,false> uint535; +typedef ap_int_base<536,false> uint536; +typedef ap_int_base<537,false> uint537; +typedef ap_int_base<538,false> uint538; +typedef ap_int_base<539,false> uint539; +typedef ap_int_base<540,false> uint540; +typedef ap_int_base<541,false> uint541; +typedef ap_int_base<542,false> uint542; +typedef ap_int_base<543,false> uint543; +typedef ap_int_base<544,false> uint544; +typedef ap_int_base<545,false> uint545; +typedef ap_int_base<546,false> uint546; +typedef ap_int_base<547,false> uint547; +typedef ap_int_base<548,false> uint548; +typedef ap_int_base<549,false> uint549; +typedef ap_int_base<550,false> uint550; +typedef ap_int_base<551,false> uint551; +typedef ap_int_base<552,false> uint552; +typedef ap_int_base<553,false> uint553; +typedef ap_int_base<554,false> uint554; +typedef ap_int_base<555,false> uint555; +typedef ap_int_base<556,false> uint556; +typedef ap_int_base<557,false> uint557; +typedef ap_int_base<558,false> uint558; +typedef ap_int_base<559,false> uint559; +typedef ap_int_base<560,false> uint560; +typedef ap_int_base<561,false> uint561; +typedef ap_int_base<562,false> uint562; +typedef ap_int_base<563,false> uint563; +typedef ap_int_base<564,false> uint564; +typedef ap_int_base<565,false> uint565; +typedef ap_int_base<566,false> uint566; +typedef ap_int_base<567,false> uint567; +typedef ap_int_base<568,false> uint568; +typedef ap_int_base<569,false> uint569; +typedef ap_int_base<570,false> uint570; +typedef ap_int_base<571,false> uint571; +typedef ap_int_base<572,false> uint572; +typedef ap_int_base<573,false> uint573; +typedef ap_int_base<574,false> uint574; +typedef ap_int_base<575,false> uint575; +typedef ap_int_base<576,false> uint576; +typedef ap_int_base<577,false> uint577; +typedef ap_int_base<578,false> uint578; +typedef ap_int_base<579,false> uint579; +typedef ap_int_base<580,false> uint580; +typedef ap_int_base<581,false> uint581; +typedef ap_int_base<582,false> uint582; +typedef ap_int_base<583,false> uint583; +typedef ap_int_base<584,false> uint584; +typedef ap_int_base<585,false> uint585; +typedef ap_int_base<586,false> uint586; +typedef ap_int_base<587,false> uint587; +typedef ap_int_base<588,false> uint588; +typedef ap_int_base<589,false> uint589; +typedef ap_int_base<590,false> uint590; +typedef ap_int_base<591,false> uint591; +typedef ap_int_base<592,false> uint592; +typedef ap_int_base<593,false> uint593; +typedef ap_int_base<594,false> uint594; +typedef ap_int_base<595,false> uint595; +typedef ap_int_base<596,false> uint596; +typedef ap_int_base<597,false> uint597; +typedef ap_int_base<598,false> uint598; +typedef ap_int_base<599,false> uint599; +typedef ap_int_base<600,false> uint600; +typedef ap_int_base<601,false> uint601; +typedef ap_int_base<602,false> uint602; +typedef ap_int_base<603,false> uint603; +typedef ap_int_base<604,false> uint604; +typedef ap_int_base<605,false> uint605; +typedef ap_int_base<606,false> uint606; +typedef ap_int_base<607,false> uint607; +typedef ap_int_base<608,false> uint608; +typedef ap_int_base<609,false> uint609; +typedef ap_int_base<610,false> uint610; +typedef ap_int_base<611,false> uint611; +typedef ap_int_base<612,false> uint612; +typedef ap_int_base<613,false> uint613; +typedef ap_int_base<614,false> uint614; +typedef ap_int_base<615,false> uint615; +typedef ap_int_base<616,false> uint616; +typedef ap_int_base<617,false> uint617; +typedef ap_int_base<618,false> uint618; +typedef ap_int_base<619,false> uint619; +typedef ap_int_base<620,false> uint620; +typedef ap_int_base<621,false> uint621; +typedef ap_int_base<622,false> uint622; +typedef ap_int_base<623,false> uint623; +typedef ap_int_base<624,false> uint624; +typedef ap_int_base<625,false> uint625; +typedef ap_int_base<626,false> uint626; +typedef ap_int_base<627,false> uint627; +typedef ap_int_base<628,false> uint628; +typedef ap_int_base<629,false> uint629; +typedef ap_int_base<630,false> uint630; +typedef ap_int_base<631,false> uint631; +typedef ap_int_base<632,false> uint632; +typedef ap_int_base<633,false> uint633; +typedef ap_int_base<634,false> uint634; +typedef ap_int_base<635,false> uint635; +typedef ap_int_base<636,false> uint636; +typedef ap_int_base<637,false> uint637; +typedef ap_int_base<638,false> uint638; +typedef ap_int_base<639,false> uint639; +typedef ap_int_base<640,false> uint640; +typedef ap_int_base<641,false> uint641; +typedef ap_int_base<642,false> uint642; +typedef ap_int_base<643,false> uint643; +typedef ap_int_base<644,false> uint644; +typedef ap_int_base<645,false> uint645; +typedef ap_int_base<646,false> uint646; +typedef ap_int_base<647,false> uint647; +typedef ap_int_base<648,false> uint648; +typedef ap_int_base<649,false> uint649; +typedef ap_int_base<650,false> uint650; +typedef ap_int_base<651,false> uint651; +typedef ap_int_base<652,false> uint652; +typedef ap_int_base<653,false> uint653; +typedef ap_int_base<654,false> uint654; +typedef ap_int_base<655,false> uint655; +typedef ap_int_base<656,false> uint656; +typedef ap_int_base<657,false> uint657; +typedef ap_int_base<658,false> uint658; +typedef ap_int_base<659,false> uint659; +typedef ap_int_base<660,false> uint660; +typedef ap_int_base<661,false> uint661; +typedef ap_int_base<662,false> uint662; +typedef ap_int_base<663,false> uint663; +typedef ap_int_base<664,false> uint664; +typedef ap_int_base<665,false> uint665; +typedef ap_int_base<666,false> uint666; +typedef ap_int_base<667,false> uint667; +typedef ap_int_base<668,false> uint668; +typedef ap_int_base<669,false> uint669; +typedef ap_int_base<670,false> uint670; +typedef ap_int_base<671,false> uint671; +typedef ap_int_base<672,false> uint672; +typedef ap_int_base<673,false> uint673; +typedef ap_int_base<674,false> uint674; +typedef ap_int_base<675,false> uint675; +typedef ap_int_base<676,false> uint676; +typedef ap_int_base<677,false> uint677; +typedef ap_int_base<678,false> uint678; +typedef ap_int_base<679,false> uint679; +typedef ap_int_base<680,false> uint680; +typedef ap_int_base<681,false> uint681; +typedef ap_int_base<682,false> uint682; +typedef ap_int_base<683,false> uint683; +typedef ap_int_base<684,false> uint684; +typedef ap_int_base<685,false> uint685; +typedef ap_int_base<686,false> uint686; +typedef ap_int_base<687,false> uint687; +typedef ap_int_base<688,false> uint688; +typedef ap_int_base<689,false> uint689; +typedef ap_int_base<690,false> uint690; +typedef ap_int_base<691,false> uint691; +typedef ap_int_base<692,false> uint692; +typedef ap_int_base<693,false> uint693; +typedef ap_int_base<694,false> uint694; +typedef ap_int_base<695,false> uint695; +typedef ap_int_base<696,false> uint696; +typedef ap_int_base<697,false> uint697; +typedef ap_int_base<698,false> uint698; +typedef ap_int_base<699,false> uint699; +typedef ap_int_base<700,false> uint700; +typedef ap_int_base<701,false> uint701; +typedef ap_int_base<702,false> uint702; +typedef ap_int_base<703,false> uint703; +typedef ap_int_base<704,false> uint704; +typedef ap_int_base<705,false> uint705; +typedef ap_int_base<706,false> uint706; +typedef ap_int_base<707,false> uint707; +typedef ap_int_base<708,false> uint708; +typedef ap_int_base<709,false> uint709; +typedef ap_int_base<710,false> uint710; +typedef ap_int_base<711,false> uint711; +typedef ap_int_base<712,false> uint712; +typedef ap_int_base<713,false> uint713; +typedef ap_int_base<714,false> uint714; +typedef ap_int_base<715,false> uint715; +typedef ap_int_base<716,false> uint716; +typedef ap_int_base<717,false> uint717; +typedef ap_int_base<718,false> uint718; +typedef ap_int_base<719,false> uint719; +typedef ap_int_base<720,false> uint720; +typedef ap_int_base<721,false> uint721; +typedef ap_int_base<722,false> uint722; +typedef ap_int_base<723,false> uint723; +typedef ap_int_base<724,false> uint724; +typedef ap_int_base<725,false> uint725; +typedef ap_int_base<726,false> uint726; +typedef ap_int_base<727,false> uint727; +typedef ap_int_base<728,false> uint728; +typedef ap_int_base<729,false> uint729; +typedef ap_int_base<730,false> uint730; +typedef ap_int_base<731,false> uint731; +typedef ap_int_base<732,false> uint732; +typedef ap_int_base<733,false> uint733; +typedef ap_int_base<734,false> uint734; +typedef ap_int_base<735,false> uint735; +typedef ap_int_base<736,false> uint736; +typedef ap_int_base<737,false> uint737; +typedef ap_int_base<738,false> uint738; +typedef ap_int_base<739,false> uint739; +typedef ap_int_base<740,false> uint740; +typedef ap_int_base<741,false> uint741; +typedef ap_int_base<742,false> uint742; +typedef ap_int_base<743,false> uint743; +typedef ap_int_base<744,false> uint744; +typedef ap_int_base<745,false> uint745; +typedef ap_int_base<746,false> uint746; +typedef ap_int_base<747,false> uint747; +typedef ap_int_base<748,false> uint748; +typedef ap_int_base<749,false> uint749; +typedef ap_int_base<750,false> uint750; +typedef ap_int_base<751,false> uint751; +typedef ap_int_base<752,false> uint752; +typedef ap_int_base<753,false> uint753; +typedef ap_int_base<754,false> uint754; +typedef ap_int_base<755,false> uint755; +typedef ap_int_base<756,false> uint756; +typedef ap_int_base<757,false> uint757; +typedef ap_int_base<758,false> uint758; +typedef ap_int_base<759,false> uint759; +typedef ap_int_base<760,false> uint760; +typedef ap_int_base<761,false> uint761; +typedef ap_int_base<762,false> uint762; +typedef ap_int_base<763,false> uint763; +typedef ap_int_base<764,false> uint764; +typedef ap_int_base<765,false> uint765; +typedef ap_int_base<766,false> uint766; +typedef ap_int_base<767,false> uint767; +typedef ap_int_base<768,false> uint768; +typedef ap_int_base<769,false> uint769; +typedef ap_int_base<770,false> uint770; +typedef ap_int_base<771,false> uint771; +typedef ap_int_base<772,false> uint772; +typedef ap_int_base<773,false> uint773; +typedef ap_int_base<774,false> uint774; +typedef ap_int_base<775,false> uint775; +typedef ap_int_base<776,false> uint776; +typedef ap_int_base<777,false> uint777; +typedef ap_int_base<778,false> uint778; +typedef ap_int_base<779,false> uint779; +typedef ap_int_base<780,false> uint780; +typedef ap_int_base<781,false> uint781; +typedef ap_int_base<782,false> uint782; +typedef ap_int_base<783,false> uint783; +typedef ap_int_base<784,false> uint784; +typedef ap_int_base<785,false> uint785; +typedef ap_int_base<786,false> uint786; +typedef ap_int_base<787,false> uint787; +typedef ap_int_base<788,false> uint788; +typedef ap_int_base<789,false> uint789; +typedef ap_int_base<790,false> uint790; +typedef ap_int_base<791,false> uint791; +typedef ap_int_base<792,false> uint792; +typedef ap_int_base<793,false> uint793; +typedef ap_int_base<794,false> uint794; +typedef ap_int_base<795,false> uint795; +typedef ap_int_base<796,false> uint796; +typedef ap_int_base<797,false> uint797; +typedef ap_int_base<798,false> uint798; +typedef ap_int_base<799,false> uint799; +typedef ap_int_base<800,false> uint800; +typedef ap_int_base<801,false> uint801; +typedef ap_int_base<802,false> uint802; +typedef ap_int_base<803,false> uint803; +typedef ap_int_base<804,false> uint804; +typedef ap_int_base<805,false> uint805; +typedef ap_int_base<806,false> uint806; +typedef ap_int_base<807,false> uint807; +typedef ap_int_base<808,false> uint808; +typedef ap_int_base<809,false> uint809; +typedef ap_int_base<810,false> uint810; +typedef ap_int_base<811,false> uint811; +typedef ap_int_base<812,false> uint812; +typedef ap_int_base<813,false> uint813; +typedef ap_int_base<814,false> uint814; +typedef ap_int_base<815,false> uint815; +typedef ap_int_base<816,false> uint816; +typedef ap_int_base<817,false> uint817; +typedef ap_int_base<818,false> uint818; +typedef ap_int_base<819,false> uint819; +typedef ap_int_base<820,false> uint820; +typedef ap_int_base<821,false> uint821; +typedef ap_int_base<822,false> uint822; +typedef ap_int_base<823,false> uint823; +typedef ap_int_base<824,false> uint824; +typedef ap_int_base<825,false> uint825; +typedef ap_int_base<826,false> uint826; +typedef ap_int_base<827,false> uint827; +typedef ap_int_base<828,false> uint828; +typedef ap_int_base<829,false> uint829; +typedef ap_int_base<830,false> uint830; +typedef ap_int_base<831,false> uint831; +typedef ap_int_base<832,false> uint832; +typedef ap_int_base<833,false> uint833; +typedef ap_int_base<834,false> uint834; +typedef ap_int_base<835,false> uint835; +typedef ap_int_base<836,false> uint836; +typedef ap_int_base<837,false> uint837; +typedef ap_int_base<838,false> uint838; +typedef ap_int_base<839,false> uint839; +typedef ap_int_base<840,false> uint840; +typedef ap_int_base<841,false> uint841; +typedef ap_int_base<842,false> uint842; +typedef ap_int_base<843,false> uint843; +typedef ap_int_base<844,false> uint844; +typedef ap_int_base<845,false> uint845; +typedef ap_int_base<846,false> uint846; +typedef ap_int_base<847,false> uint847; +typedef ap_int_base<848,false> uint848; +typedef ap_int_base<849,false> uint849; +typedef ap_int_base<850,false> uint850; +typedef ap_int_base<851,false> uint851; +typedef ap_int_base<852,false> uint852; +typedef ap_int_base<853,false> uint853; +typedef ap_int_base<854,false> uint854; +typedef ap_int_base<855,false> uint855; +typedef ap_int_base<856,false> uint856; +typedef ap_int_base<857,false> uint857; +typedef ap_int_base<858,false> uint858; +typedef ap_int_base<859,false> uint859; +typedef ap_int_base<860,false> uint860; +typedef ap_int_base<861,false> uint861; +typedef ap_int_base<862,false> uint862; +typedef ap_int_base<863,false> uint863; +typedef ap_int_base<864,false> uint864; +typedef ap_int_base<865,false> uint865; +typedef ap_int_base<866,false> uint866; +typedef ap_int_base<867,false> uint867; +typedef ap_int_base<868,false> uint868; +typedef ap_int_base<869,false> uint869; +typedef ap_int_base<870,false> uint870; +typedef ap_int_base<871,false> uint871; +typedef ap_int_base<872,false> uint872; +typedef ap_int_base<873,false> uint873; +typedef ap_int_base<874,false> uint874; +typedef ap_int_base<875,false> uint875; +typedef ap_int_base<876,false> uint876; +typedef ap_int_base<877,false> uint877; +typedef ap_int_base<878,false> uint878; +typedef ap_int_base<879,false> uint879; +typedef ap_int_base<880,false> uint880; +typedef ap_int_base<881,false> uint881; +typedef ap_int_base<882,false> uint882; +typedef ap_int_base<883,false> uint883; +typedef ap_int_base<884,false> uint884; +typedef ap_int_base<885,false> uint885; +typedef ap_int_base<886,false> uint886; +typedef ap_int_base<887,false> uint887; +typedef ap_int_base<888,false> uint888; +typedef ap_int_base<889,false> uint889; +typedef ap_int_base<890,false> uint890; +typedef ap_int_base<891,false> uint891; +typedef ap_int_base<892,false> uint892; +typedef ap_int_base<893,false> uint893; +typedef ap_int_base<894,false> uint894; +typedef ap_int_base<895,false> uint895; +typedef ap_int_base<896,false> uint896; +typedef ap_int_base<897,false> uint897; +typedef ap_int_base<898,false> uint898; +typedef ap_int_base<899,false> uint899; +typedef ap_int_base<900,false> uint900; +typedef ap_int_base<901,false> uint901; +typedef ap_int_base<902,false> uint902; +typedef ap_int_base<903,false> uint903; +typedef ap_int_base<904,false> uint904; +typedef ap_int_base<905,false> uint905; +typedef ap_int_base<906,false> uint906; +typedef ap_int_base<907,false> uint907; +typedef ap_int_base<908,false> uint908; +typedef ap_int_base<909,false> uint909; +typedef ap_int_base<910,false> uint910; +typedef ap_int_base<911,false> uint911; +typedef ap_int_base<912,false> uint912; +typedef ap_int_base<913,false> uint913; +typedef ap_int_base<914,false> uint914; +typedef ap_int_base<915,false> uint915; +typedef ap_int_base<916,false> uint916; +typedef ap_int_base<917,false> uint917; +typedef ap_int_base<918,false> uint918; +typedef ap_int_base<919,false> uint919; +typedef ap_int_base<920,false> uint920; +typedef ap_int_base<921,false> uint921; +typedef ap_int_base<922,false> uint922; +typedef ap_int_base<923,false> uint923; +typedef ap_int_base<924,false> uint924; +typedef ap_int_base<925,false> uint925; +typedef ap_int_base<926,false> uint926; +typedef ap_int_base<927,false> uint927; +typedef ap_int_base<928,false> uint928; +typedef ap_int_base<929,false> uint929; +typedef ap_int_base<930,false> uint930; +typedef ap_int_base<931,false> uint931; +typedef ap_int_base<932,false> uint932; +typedef ap_int_base<933,false> uint933; +typedef ap_int_base<934,false> uint934; +typedef ap_int_base<935,false> uint935; +typedef ap_int_base<936,false> uint936; +typedef ap_int_base<937,false> uint937; +typedef ap_int_base<938,false> uint938; +typedef ap_int_base<939,false> uint939; +typedef ap_int_base<940,false> uint940; +typedef ap_int_base<941,false> uint941; +typedef ap_int_base<942,false> uint942; +typedef ap_int_base<943,false> uint943; +typedef ap_int_base<944,false> uint944; +typedef ap_int_base<945,false> uint945; +typedef ap_int_base<946,false> uint946; +typedef ap_int_base<947,false> uint947; +typedef ap_int_base<948,false> uint948; +typedef ap_int_base<949,false> uint949; +typedef ap_int_base<950,false> uint950; +typedef ap_int_base<951,false> uint951; +typedef ap_int_base<952,false> uint952; +typedef ap_int_base<953,false> uint953; +typedef ap_int_base<954,false> uint954; +typedef ap_int_base<955,false> uint955; +typedef ap_int_base<956,false> uint956; +typedef ap_int_base<957,false> uint957; +typedef ap_int_base<958,false> uint958; +typedef ap_int_base<959,false> uint959; +typedef ap_int_base<960,false> uint960; +typedef ap_int_base<961,false> uint961; +typedef ap_int_base<962,false> uint962; +typedef ap_int_base<963,false> uint963; +typedef ap_int_base<964,false> uint964; +typedef ap_int_base<965,false> uint965; +typedef ap_int_base<966,false> uint966; +typedef ap_int_base<967,false> uint967; +typedef ap_int_base<968,false> uint968; +typedef ap_int_base<969,false> uint969; +typedef ap_int_base<970,false> uint970; +typedef ap_int_base<971,false> uint971; +typedef ap_int_base<972,false> uint972; +typedef ap_int_base<973,false> uint973; +typedef ap_int_base<974,false> uint974; +typedef ap_int_base<975,false> uint975; +typedef ap_int_base<976,false> uint976; +typedef ap_int_base<977,false> uint977; +typedef ap_int_base<978,false> uint978; +typedef ap_int_base<979,false> uint979; +typedef ap_int_base<980,false> uint980; +typedef ap_int_base<981,false> uint981; +typedef ap_int_base<982,false> uint982; +typedef ap_int_base<983,false> uint983; +typedef ap_int_base<984,false> uint984; +typedef ap_int_base<985,false> uint985; +typedef ap_int_base<986,false> uint986; +typedef ap_int_base<987,false> uint987; +typedef ap_int_base<988,false> uint988; +typedef ap_int_base<989,false> uint989; +typedef ap_int_base<990,false> uint990; +typedef ap_int_base<991,false> uint991; +typedef ap_int_base<992,false> uint992; +typedef ap_int_base<993,false> uint993; +typedef ap_int_base<994,false> uint994; +typedef ap_int_base<995,false> uint995; +typedef ap_int_base<996,false> uint996; +typedef ap_int_base<997,false> uint997; +typedef ap_int_base<998,false> uint998; +typedef ap_int_base<999,false> uint999; +typedef ap_int_base<1000,false> uint1000; +typedef ap_int_base<1001,false> uint1001; +typedef ap_int_base<1002,false> uint1002; +typedef ap_int_base<1003,false> uint1003; +typedef ap_int_base<1004,false> uint1004; +typedef ap_int_base<1005,false> uint1005; +typedef ap_int_base<1006,false> uint1006; +typedef ap_int_base<1007,false> uint1007; +typedef ap_int_base<1008,false> uint1008; +typedef ap_int_base<1009,false> uint1009; +typedef ap_int_base<1010,false> uint1010; +typedef ap_int_base<1011,false> uint1011; +typedef ap_int_base<1012,false> uint1012; +typedef ap_int_base<1013,false> uint1013; +typedef ap_int_base<1014,false> uint1014; +typedef ap_int_base<1015,false> uint1015; +typedef ap_int_base<1016,false> uint1016; +typedef ap_int_base<1017,false> uint1017; +typedef ap_int_base<1018,false> uint1018; +typedef ap_int_base<1019,false> uint1019; +typedef ap_int_base<1020,false> uint1020; +typedef ap_int_base<1021,false> uint1021; +typedef ap_int_base<1022,false> uint1022; +typedef ap_int_base<1023,false> uint1023; +typedef ap_int_base<1024,false> uint1024; +#endif + + diff --git a/vitis/v2020_1/etc/dsp48_builtins.h b/vitis/v2020_1/etc/dsp48_builtins.h new file mode 100644 index 00000000..b2153f9d --- /dev/null +++ b/vitis/v2020_1/etc/dsp48_builtins.h @@ -0,0 +1,63 @@ +/* dsp48_builtins.h*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _DSP48_BUILTINS_H_ +#define _DSP48_BUILTINS_H_ +#ifdef __DSP48E1__ +#include "etc/dsp48e1_builtins.h" +#elif __DSP48E2__ +#include "etc/dsp48e2_builtins.h" +#else +#error Please select a proper device to use dsp builtins. +#endif +#endif diff --git a/vitis/v2020_1/etc/dsp48e1_builtins.h b/vitis/v2020_1/etc/dsp48e1_builtins.h new file mode 100644 index 00000000..7b2b7b84 --- /dev/null +++ b/vitis/v2020_1/etc/dsp48e1_builtins.h @@ -0,0 +1,298 @@ +// This header file is generated by script. Don't modify it manully + +#ifndef _DSP48E1_BUILTINS_H_ +#define _DSP48E1_BUILTINS_H_ + +// Flags +#define DSP_REGISTER_DEFAULT 0x00000000 +#define DSP_REGISTER_A1 0x00000001 +#define DSP_REGISTER_A2 0x00000002 +#define DSP_REGISTER_B1 0x00000004 +#define DSP_REGISTER_B2 0x00000008 +#define DSP_REGISTER_D 0x00000010 +#define DSP_REGISTER_AD 0x00000020 +#define DSP_REGISTER_M 0x00000040 +#define DSP_REGISTER_C 0x00000080 +#define DSP_REGISTER_P 0x00000100 +#define DSP_REGISTER_NO 0x00000200 + +// DSP builtin wrapper functions + +static inline __dsp48_t +__builtin_madd( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msub( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msubed( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amadd( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amsub( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + + +#ifdef __HLS_SYN__ +// DSP state type +typedef __dsp48_t __xilinx_dsp_state; +#ifdef __cplusplus +extern "C" { +#endif + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int32_t __attribute__((bitwidth(25))) d, + int32_t __attribute__((bitwidth(30))) a, + int32_t __attribute__((bitwidth(18))) b, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(30))) acin, + int32_t __attribute__((bitwidth(18))) bcin, + int64_t __attribute__((bitwidth(48))) pcin, + int32_t __attribute__((bitwidth(1))) carrycascin, + int32_t __attribute__((bitwidth(1))) multsignin, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(1)))* multsignout, + int32_t __attribute__((bitwidth(1)))* carrycasCout, + int32_t __attribute__((bitwidth(4)))* carryout); + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP_AB( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int64_t __attribute__((bitwidth(48))) ab, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(4)))* carryout); +#ifdef __cplusplus +} +#endif +#endif +__dsp48_t +__builtin_madd( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 0, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msub( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 1, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msubed( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return c - ((__dsp48_t)a) * ((__dsp48_t)b); +#else + return (int64_t)_ssdm_op_DSP(0, 2, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p3 = a3 + b3; + p4 = a4 + b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 3, flags, a, b, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p3 = a3 - b3; + p4 = a4 - b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 4, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 5, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 6, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amadd( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 7, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amsub( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 8, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +#endif diff --git a/vitis/v2020_1/etc/dsp48e2_builtins.h b/vitis/v2020_1/etc/dsp48e2_builtins.h new file mode 100644 index 00000000..d1c34a4f --- /dev/null +++ b/vitis/v2020_1/etc/dsp48e2_builtins.h @@ -0,0 +1,340 @@ +// This header file is generated by script. Don't modify it manully + +#ifndef _DSP48E2_BUILTINS_H_ +#define _DSP48E2_BUILTINS_H_ + +// Flags +#define DSP_REGISTER_DEFAULT 0x00000000 +#define DSP_REGISTER_A1 0x00000001 +#define DSP_REGISTER_A2 0x00000002 +#define DSP_REGISTER_B1 0x00000004 +#define DSP_REGISTER_B2 0x00000008 +#define DSP_REGISTER_D 0x00000010 +#define DSP_REGISTER_AD 0x00000020 +#define DSP_REGISTER_M 0x00000040 +#define DSP_REGISTER_C 0x00000080 +#define DSP_REGISTER_P 0x00000100 +#define DSP_REGISTER_NO 0x00000200 + +// DSP builtin wrapper functions + +static inline __dsp48_t +__builtin_madd( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msub( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msubed( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amadd( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amsub( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_square_sub_add( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_square_add_subed( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) __attribute__((always_inline)); + + +#ifdef __HLS_SYN__ +// DSP state type +typedef __dsp48_t __xilinx_dsp_state; +#ifdef __cplusplus +extern "C" { +#endif + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int32_t __attribute__((bitwidth(27))) d, + int32_t __attribute__((bitwidth(30))) a, + int32_t __attribute__((bitwidth(18))) b, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(30))) acin, + int32_t __attribute__((bitwidth(18))) bcin, + int64_t __attribute__((bitwidth(48))) pcin, + int32_t __attribute__((bitwidth(1))) carrycascin, + int32_t __attribute__((bitwidth(1))) multsignin, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(1)))* multsignout, + int32_t __attribute__((bitwidth(1)))* carrycasCout, + int32_t __attribute__((bitwidth(4)))* carryout); + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP_AB( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int64_t __attribute__((bitwidth(48))) ab, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(4)))* carryout); +#ifdef __cplusplus +} +#endif +#endif +__dsp48_t +__builtin_madd( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 0, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msub( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 1, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msubed( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return c - ((__dsp48_t)a) * ((__dsp48_t)b); +#else + return (int64_t)_ssdm_op_DSP(0, 2, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p3 = a3 + b3; + p4 = a4 + b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 3, flags, a, b, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p3 = a3 - b3; + p4 = a4 - b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 4, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 5, flags, a, b, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 6, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amadd( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 7, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amsub( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 8, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_square_sub_add( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)d - (__dsp48_t)a) * ((__dsp48_t)d - (__dsp48_t)a) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 11, flags, d, a, 0, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_square_add_subed( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return c - ((__dsp48_t)d + (__dsp48_t)a) * ((__dsp48_t)d + (__dsp48_t)a); +#else + return (int64_t)_ssdm_op_DSP(0, 12, flags, d, a, 0, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +#endif diff --git a/vitis/v2020_1/etc/dsp_dp_builtins.h b/vitis/v2020_1/etc/dsp_dp_builtins.h new file mode 100644 index 00000000..c536a534 --- /dev/null +++ b/vitis/v2020_1/etc/dsp_dp_builtins.h @@ -0,0 +1,104 @@ +#ifndef X_DSP_DP_BUILTINS_H +#define X_DSP_DP_BUILTINS_H + +// User interfaces. +// Result += A1in * B1in + A2in * B2in + (clear ? 0 : Accum); +static inline int32_t __builtin_mac16x2( + int16_t A1in, + int16_t A2in, + int16_t B1in, + int16_t B2in, + int32_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) __attribute__((always_inline)); + +// This builtin is only used for speicial cases. +// Result = ((A1in << 21) + signed_ext_to_27bit(B1in)) * C1in + +// ((A2in << 21) + signed_ext_to 27bit(B2in)) * C2in + (clear ? 0 : Accum); +static inline __dsp48_t __builtin_mac6x2_mac8x1( + __dsp6_t A1in, + __dsp6_t A2in, + int8_t B1in, + int8_t B2in, + int8_t C1in, + int8_t C2in, + __dsp48_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) __attribute__((always_inline)); + +// HLS Internal functions, don't use them directly. +#ifdef __HLS_SYN__ +#ifdef __cplusplus +extern "C" { +#endif + +int32_t _ssdm_op_Mac16_Clockx2( + int __attribute__((bitwidth(1))) clockx2, + int16_t A1in, + int16_t A2in, + int16_t B1in, + int16_t B2in, + int32_t Accum, + int __attribute__((bitwidth(1))) clear); + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_Mac6_Mac8_Clockx2( + int __attribute__((bitwidth(1))) clockx2, + int32_t __attribute__((bitwidth(6))) A1in, + int32_t __attribute__((bitwidth(6))) A2in, + int8_t B1in, + int8_t B2in, + int8_t C1in, + int8_t C2in, + int64_t __attribute__((bitwidth(48))) Accum, + int __attribute__((bitwidth(1))) clear); + +#ifdef __cplusplus +} +#endif +#endif + +int32_t __builtin_mac16x2( + int16_t A1in, + int16_t A2in, + int16_t B1in, + int16_t B2in, + int32_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) { +#ifdef __HLS_SYN__ + return _ssdm_op_Mac16_Clockx2(ap_clk_div2, A1in, A2in, B1in, B2in, 0, clear); +#else + return A1in * B1in + A2in * B2in + (clear ? 0 : Accum); +#endif +} + +__dsp48_t __builtin_mac6x2_mac8x1( + __dsp6_t A1in, + __dsp6_t A2in, + int8_t B1in, + int8_t B2in, + int8_t C1in, + int8_t C2in, + __dsp48_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) { +#ifdef __HLS_SYN__ + return (long long)_ssdm_op_Mac6_Mac8_Clockx2(ap_clk_div2, A1in, A2in, B1in, B2in, C1in, C2in, 0, clear); +#else + int64_t A1 = A1in; + int64_t A2 = A2in; + int64_t B1 = B1in; + int64_t B2 = B2in; + int64_t C1 = C1in; + int64_t C2 = C2in; + A1 = A1 << 20; + A2 = A2 << 20; + int64_t AccumN = Accum; + int64_t Result = (A1 + B1) * C1 + (A2 + B2) * C2 + (clear ? 0 : AccumN); + return Result; +#endif +} + +#endif + diff --git a/vitis/v2020_1/etc/hlslib_headers.h b/vitis/v2020_1/etc/hlslib_headers.h new file mode 100644 index 00000000..95b3d784 --- /dev/null +++ b/vitis/v2020_1/etc/hlslib_headers.h @@ -0,0 +1,6 @@ +// Fixed CR#735958 per Steve's requirement +const STL_STRING hlslib_sysheader_files[] = { +"" +}; + + diff --git a/vitis/v2020_1/fft/xfft_v9_0_bitacc_cmodel.h b/vitis/v2020_1/fft/xfft_v9_0_bitacc_cmodel.h new file mode 100644 index 00000000..bae96d7e --- /dev/null +++ b/vitis/v2020_1/fft/xfft_v9_0_bitacc_cmodel.h @@ -0,0 +1,239 @@ +// $RCSfile: xfft_v9_0_bitacc_cmodel.h,v $ $Revision: 1.2 $ $Date: 2010/09/08 12:33:19 $ +// +// (c) Copyright 2008-2009 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//------------------------------------------------------------------- + +#ifndef xfft_v9_0_bitacc_cmodel_h +#define xfft_v9_0_bitacc_cmodel_h + +#ifdef NT +#define DLLIMPORT __declspec(dllimport) +#else +#define DLLIMPORT +#endif + +#ifndef Ip_xilinx_ip_xfft_v9_0_DLL +#define Ip_xilinx_ip_xfft_v9_0_DLL DLLIMPORT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct xilinx_ip_xfft_v9_0_generics +{ + /** + * XFFT v7.1 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + * Note: C_CHANNELS is not part of the generics structure - this is an error in the datasheet. + * To model a multichannel FFT, run this single channel model on each channel in turn. + */ + int C_NFFT_MAX; //@- log2(maximum transform length): 3-16 + int C_ARCH; //@- Architecture: 1=radix-4, 2=radix-2, 3=pipelined, 4=radix-2 Lite + int C_HAS_NFFT; //@- Run-time configurable transform length: 0=no, 1=yes + int C_USE_FLT_PT; //@- Input and output data format: 0=fixed-point, 1=single-precision floating point + int C_INPUT_WIDTH; //@- Input data width: 8-34 bits (32 if C_USE_FLT_PT = 1) + int C_TWIDDLE_WIDTH; //@- Twiddle factor width: 8-34 bits (24-25 if C_USE_FLT_PT = 1) + int C_HAS_SCALING; //@- Data is scaled after the butterfly: 0=no, 1=yes + int C_HAS_BFP; //@- Type of scaling if C_HAS_SCALING=1: 0=fixed scaling, 1=block floating point + int C_HAS_ROUNDING; //@- Type of data rounding: 0=truncation, 1=convergent rounding +}; // xilinx_ip_xfft_v9_0_generics + + +/** + * Get list of default generics. + * + * @returns xilinx_ip_xfft_v9_0_generics Default generics. + */ +Ip_xilinx_ip_xfft_v9_0_DLL +struct xilinx_ip_xfft_v9_0_generics +xilinx_ip_xfft_v9_0_get_default_generics(); + + +/** + * Structure containing the state of this C-Model. + * + * NOTE: State may persist between simulations. + */ +struct xilinx_ip_xfft_v9_0_state; + + +/** + * Create a new state structure for this C-Model. + * + * IMPORTANT: Client is responsible for calling xilinx_ip_xfft_v9_0_destroy_state() + * to free state memory. + * + * @param generics Generics to be used to configure C-Model state. + * + * @returns xilinx_ip_xfft_v9_0_state* Pointer to the internal state. + */ +Ip_xilinx_ip_xfft_v9_0_DLL +struct xilinx_ip_xfft_v9_0_state* +xilinx_ip_xfft_v9_0_create_state(struct xilinx_ip_xfft_v9_0_generics generics); + + +/** + * Destroy a state structure. + * + * @param state State structure to be destroyed (freed in memory). + */ +Ip_xilinx_ip_xfft_v9_0_DLL +void xilinx_ip_xfft_v9_0_destroy_state(struct xilinx_ip_xfft_v9_0_state* state); + + +/** + * Structure to capture all inputs to the XFFT v7.1 C-Model. + * + * @param nfft log2(transform length) for this transform. Maximum value is + * C_NFFT_MAX. Minimum value is 6 for Radix-4 architecture + * or 3 for other architectures. Only used for run-time + * configurable transform length (C_HAS_NFFT=1). + * @param xn_re Input data (real component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_re_size Size of xn_re array. Must be 2^nfft. + * @param xn_im Input data (imaginary component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_im_size Size of xn_im array. Must be 2^nfft. + * @param scaling_sch Array of integer values size S = number of stages. + * For Radix-4 and Streaming architectures, S = nfft/2, + * rounded up to the next integer. For Radix-2 and Radix-2 + * Lite architectures, S = nfft. Each value corresponds to + * scaling to be performed by the corresponding stage (so + * scaling in stage 0 is in scaling_sch[0]), and must be + * in the range 0 to 3. Only used for fixed scaling (if + * C_HAS_SCALING=1 and C_HAS_BFP=0). + * @param scaling_sch_size Size of scaling_sch array. Must be S. + * @param direction Transform direction: 1=forward FFT, 0=inverse FFT (IFFT). + */ +struct xilinx_ip_xfft_v9_0_inputs +{ + int nfft; //@- log2(point size) + + double* xn_re; //@- Input data (real) + int xn_re_size; + + double* xn_im; //@- Input data (imaginary) + int xn_im_size; + + int* scaling_sch; //@- Scaling schedule + int scaling_sch_size; + + int direction; //@- Transform direction +}; // end xilinx_ip_xfft_v9_0_inputs + + +/** + * Structure to capture all outputs from the XFFT v7.1 C-Model. + * + * Before using this structure the user is responsible for allocating enough memory + * for each output array, and specifying the number of array elements allocated in + * the _size parameters. If the _size values are too small, the model will fail with + * an error. It is OK to allocate more memory than is required and specify a larger + * number of array elements than required in the _size parameters. The model will set + * the _size parameters to indicate the number of array elements that contain valid + * output data. + * + * @param xk_re Output data (real component). + * @param xk_re_size Size of xk_re array. Must be at least 2^nfft. + * @param xk_im Output data (imaginary component). + * @param xk_im_size Size of xk_im array. Must be at least 2^nfft. + * @param blk_exp Block exponent. Only valid if using block floating point (if + * C_HAS_SCALING=1 and C_HAS_BFP=1). + * @param overflow Overflow: 1 indicates overflow occurred, 0 indicates no overflow + * occurred. Only valid if using fixed scaling (if C_HAS_SCALING=1 + * and C_HAS_BFP=0). + */ +struct xilinx_ip_xfft_v9_0_outputs +{ + double* xk_re; //@- Output data (real) + int xk_re_size; + + double* xk_im; //@- Output data (imaginary) + int xk_im_size; + + int blk_exp; //@- Block exponent + + int overflow; //@- Overflow occurred +}; // xilinx_ip_xfft_v9_0_outputs + + +/** + * Simulate this bit-accurate C-Model. + * + * @param state Internal state of this C-Model. State + * may span multiple simulations. + * @param inputs Inputs to this C-Model. + * @param outputs Outputs from this C-Model. + * + * @returns Exit code Zero for SUCCESS, Non-zero otherwise. + */ +Ip_xilinx_ip_xfft_v9_0_DLL +int xilinx_ip_xfft_v9_0_bitacc_simulate +( + struct xilinx_ip_xfft_v9_0_state* state, + struct xilinx_ip_xfft_v9_0_inputs inputs, + struct xilinx_ip_xfft_v9_0_outputs* outputs + ); + + +#ifdef __cplusplus +} +#endif + + +#endif // xfft_v9_0_bitacc_cmodel_h + diff --git a/vitis/v2020_1/fft/xfft_v9_1_bitacc_cmodel.h b/vitis/v2020_1/fft/xfft_v9_1_bitacc_cmodel.h new file mode 100644 index 00000000..09b5494e --- /dev/null +++ b/vitis/v2020_1/fft/xfft_v9_1_bitacc_cmodel.h @@ -0,0 +1,238 @@ +// $RCSfile: xfft_v9_1_bitacc_cmodel.h,v $ $Revision: 1.2 $ $Date: 2010/09/08 12:33:19 $ +// +// (c) Copyright 2008-2009 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//------------------------------------------------------------------- + +#ifndef xfft_v9_1_bitacc_cmodel_h +#define xfft_v9_1_bitacc_cmodel_h + +#ifdef NT +#define DLLIMPORT __declspec(dllimport) +#else +#define DLLIMPORT +#endif + +#ifndef Ip_xilinx_ip_xfft_v9_1_DLL +#define Ip_xilinx_ip_xfft_v9_1_DLL DLLIMPORT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct xilinx_ip_xfft_v9_1_generics +{ + /** + * XFFT v7.1 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + * Note: C_CHANNELS is not part of the generics structure - this is an error in the datasheet. + * To model a multichannel FFT, run this single channel model on each channel in turn. + */ + int C_NFFT_MAX; //@- log2(maximum transform length): 3-16 + int C_ARCH; //@- Architecture: 1=radix-4, 2=radix-2, 3=pipelined, 4=radix-2 Lite + int C_HAS_NFFT; //@- Run-time configurable transform length: 0=no, 1=yes + int C_USE_FLT_PT; //@- Input and output data format: 0=fixed-point, 1=single-precision floating point + int C_INPUT_WIDTH; //@- Input data width: 8-34 bits (32 if C_USE_FLT_PT = 1) + int C_TWIDDLE_WIDTH; //@- Twiddle factor width: 8-34 bits (24-25 if C_USE_FLT_PT = 1) + int C_HAS_SCALING; //@- Data is scaled after the butterfly: 0=no, 1=yes + int C_HAS_BFP; //@- Type of scaling if C_HAS_SCALING=1: 0=fixed scaling, 1=block floating point + int C_HAS_ROUNDING; //@- Type of data rounding: 0=truncation, 1=convergent rounding +}; // xilinx_ip_xfft_v9_1_generics + + +/** + * Get list of default generics. + * + * @returns xilinx_ip_xfft_v9_1_generics Default generics. + */ +Ip_xilinx_ip_xfft_v9_1_DLL +struct xilinx_ip_xfft_v9_1_generics +xilinx_ip_xfft_v9_1_get_default_generics(); + + +/** + * Structure containing the state of this C-Model. + * + * NOTE: State may persist between simulations. + */ +struct xilinx_ip_xfft_v9_1_state; + + +/** + * Create a new state structure for this C-Model. + * + * IMPORTANT: Client is responsible for calling xilinx_ip_xfft_v9_1_destroy_state() + * to free state memory. + * + * @param generics Generics to be used to configure C-Model state. + * + * @returns xilinx_ip_xfft_v9_1_state* Pointer to the internal state. + */ +Ip_xilinx_ip_xfft_v9_1_DLL +struct xilinx_ip_xfft_v9_1_state* +xilinx_ip_xfft_v9_1_create_state(struct xilinx_ip_xfft_v9_1_generics generics); + + +/** + * Destroy a state structure. + * + * @param state State structure to be destroyed (freed in memory). + */ +Ip_xilinx_ip_xfft_v9_1_DLL +void xilinx_ip_xfft_v9_1_destroy_state(struct xilinx_ip_xfft_v9_1_state* state); + + +/** + * Structure to capture all inputs to the XFFT v7.1 C-Model. + * + * @param nfft log2(transform length) for this transform. Maximum value is + * C_NFFT_MAX. Minimum value is 6 for Radix-4 architecture + * or 3 for other architectures. Only used for run-time + * configurable transform length (C_HAS_NFFT=1). + * @param xn_re Input data (real component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_re_size Size of xn_re array. Must be 2^nfft. + * @param xn_im Input data (imaginary component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_im_size Size of xn_im array. Must be 2^nfft. + * @param scaling_sch Array of integer values size S = number of stages. + * For Radix-4 and Streaming architectures, S = nfft/2, + * rounded up to the next integer. For Radix-2 and Radix-2 + * Lite architectures, S = nfft. Each value corresponds to + * scaling to be performed by the corresponding stage (so + * scaling in stage 0 is in scaling_sch[0]), and must be + * in the range 0 to 3. Only used for fixed scaling (if + * C_HAS_SCALING=1 and C_HAS_BFP=0). + * @param scaling_sch_size Size of scaling_sch array. Must be S. + * @param direction Transform direction: 1=forward FFT, 0=inverse FFT (IFFT). + */ +struct xilinx_ip_xfft_v9_1_inputs +{ + int nfft; //@- log2(point size) + + double* xn_re; //@- Input data (real) + int xn_re_size; + + double* xn_im; //@- Input data (imaginary) + int xn_im_size; + + int* scaling_sch; //@- Scaling schedule + int scaling_sch_size; + + int direction; //@- Transform direction +}; // end xilinx_ip_xfft_v9_1_inputs + + +/** + * Structure to capture all outputs from the XFFT v7.1 C-Model. + * + * Before using this structure the user is responsible for allocating enough memory + * for each output array, and specifying the number of array elements allocated in + * the _size parameters. If the _size values are too small, the model will fail with + * an error. It is OK to allocate more memory than is required and specify a larger + * number of array elements than required in the _size parameters. The model will set + * the _size parameters to indicate the number of array elements that contain valid + * output data. + * + * @param xk_re Output data (real component). + * @param xk_re_size Size of xk_re array. Must be at least 2^nfft. + * @param xk_im Output data (imaginary component). + * @param xk_im_size Size of xk_im array. Must be at least 2^nfft. + * @param blk_exp Block exponent. Only valid if using block floating point (if + * C_HAS_SCALING=1 and C_HAS_BFP=1). + * @param overflow Overflow: 1 indicates overflow occurred, 0 indicates no overflow + * occurred. Only valid if using fixed scaling (if C_HAS_SCALING=1 + * and C_HAS_BFP=0). + */ +struct xilinx_ip_xfft_v9_1_outputs +{ + double* xk_re; //@- Output data (real) + int xk_re_size; + + double* xk_im; //@- Output data (imaginary) + int xk_im_size; + + int blk_exp; //@- Block exponent + + int overflow; //@- Overflow occurred +}; // xilinx_ip_xfft_v9_1_outputs + + +/** + * Simulate this bit-accurate C-Model. + * + * @param state Internal state of this C-Model. State + * may span multiple simulations. + * @param inputs Inputs to this C-Model. + * @param outputs Outputs from this C-Model. + * + * @returns Exit code Zero for SUCCESS, Non-zero otherwise. + */ +Ip_xilinx_ip_xfft_v9_1_DLL +int xilinx_ip_xfft_v9_1_bitacc_simulate +( + struct xilinx_ip_xfft_v9_1_state* state, + struct xilinx_ip_xfft_v9_1_inputs inputs, + struct xilinx_ip_xfft_v9_1_outputs* outputs + ); + + +#ifdef __cplusplus +} +#endif + + +#endif // xfft_v9_1_bitacc_cmodel_h diff --git a/vitis/v2020_1/file_agent/file_agent_pkg.sv b/vitis/v2020_1/file_agent/file_agent_pkg.sv new file mode 100755 index 00000000..774f98b5 --- /dev/null +++ b/vitis/v2020_1/file_agent/file_agent_pkg.sv @@ -0,0 +1,12 @@ +`ifndef FILE_AGENT_PKG__SV + `define FILE_AGENT_PKG__SV + + package file_agent_pkg; + + import uvm_pkg::*; + `include "uvm_macros.svh" + `include "file_read_agent.sv" + `include "file_write_agent.sv" + endpackage + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/file_agent/file_read_agent.sv b/vitis/v2020_1/file_agent/file_read_agent.sv new file mode 100755 index 00000000..bc566ba6 --- /dev/null +++ b/vitis/v2020_1/file_agent/file_read_agent.sv @@ -0,0 +1,480 @@ +`ifndef FILE_READ_AGENT__SV + `define FILE_READ_AGENT__SV + + `define ISNAMELETTER(x) (x>="a"&&x<="z"||x>="A"&&x<="Z"||x=="_") + //`define ISDIGIT(x) (x>="0"&&x<="9"||x>="a"&&x<="f"||x>="A"&&x<="F") + `define ISDIGIT(x) (x>="0"&&x<="9") + `define ISSPACE(x) (x==" "||x=="\t"||x=="\n"||x==13||x==14) + + class file_read_agent#(int DATA_WIDTH = 32) extends uvm_object; + + typedef bit [DATA_WIDTH - 1: 0] DATA_QUEUE_TYPE [$]; + typedef bit [DATA_WIDTH - 1: 0] DATA_TYPE; + typedef enum {DEFAULTV=0, RNDMODE=1 } CFGM_e; + + string TV_FILE = ""; + string TV_FILE_queue [$]; + integer fp; + integer fp_queue [$]; + integer TV_FILE_num; + integer TV_bitwidth_queue [$]; + string token; + string token_queue [$]; + int HEX_read; + int DEC_read; + + DATA_QUEUE_TYPE TV_Queue[$]; + + `uvm_object_param_utils_begin(file_read_agent#(DATA_WIDTH)) + `uvm_field_string(TV_FILE, UVM_DEFAULT) + `uvm_field_int(fp, UVM_DEFAULT) + `uvm_field_int(TV_FILE_num, UVM_DEFAULT) + `uvm_field_int(HEX_read, UVM_DEFAULT) + `uvm_field_int(DEC_read, UVM_DEFAULT) + `uvm_object_utils_end + + function new (string name = "file_read_agent"); + super.new(name); + TV_FILE_num = 0; + endfunction + + extern virtual local function void set_file_path(string path); + extern virtual local function string get_file_path(); + extern virtual local function void set_file_queue(string file_queue [$]); + extern virtual local function string get_file_path_from_file_queue(integer i); + extern virtual local function void set_fp_queue(string file_queue [$]); + extern virtual local function integer get_file_handle_from_fp_queue(integer i); + extern virtual local function void set_file_number(string file_queue [$]); + extern virtual local function integer get_file_number(); + extern virtual local function void set_bitwidth_queue(integer bitwidth_queue [$]); + extern virtual local function integer get_bitwidth_from_queue(integer i); + extern virtual local function void open_read_file(); + extern virtual local function integer get_fp(); + extern virtual local function void set_fp(integer file_handle); + extern virtual local function void set_token(string token_in); + extern virtual local function string get_token_from_queue(integer i); + extern virtual local function int is_read_string(string item); + extern virtual local function void read_token(); + extern virtual local function DATA_TYPE load_data(); + extern virtual local function string rm_0x (); + extern virtual local function void reset_HEX_read(); + extern virtual local function void reset_DEC_read(); + extern virtual local function void set_HEX_read(); + extern virtual local function void set_DEC_read(); + extern virtual local function int is_HEX_read(); + extern virtual local function int is_DEC_read(); + extern virtual function void read_TVIN_file(); + extern virtual function void config_file(string file_queue [$], integer bitwidth_queue [$]); + extern virtual function int vectfileread(input string filename, ref int data[string][$],ref string varname[$]); + extern virtual function int matchstrchk(string longstr, string str); + + endclass + + function void file_read_agent::set_file_path (string path); + TV_FILE = path; + endfunction + + function string file_read_agent::get_file_path(); + return TV_FILE; + endfunction + + function void file_read_agent::set_file_queue(string file_queue [$]); + TV_FILE_queue.delete(); + TV_FILE_queue = file_queue; + endfunction + + function string file_read_agent::get_file_path_from_file_queue(integer i); + if (i >= TV_FILE_queue.size()) begin + `uvm_fatal(this.get_full_name(), "access data out of TV_FILE_queue boundary") + end + + return TV_FILE_queue[i]; + endfunction + + function void file_read_agent::set_file_number(string file_queue [$]); + TV_FILE_num = file_queue.size(); + endfunction + + function integer file_read_agent::get_file_number(); + return TV_FILE_num; + endfunction + + function void file_read_agent::set_fp_queue(string file_queue [$]); + integer i; + set_file_number(file_queue); + set_file_queue(file_queue); + + fp_queue.delete(); + for (i = 0; i < get_file_number(); i++) begin + set_file_path(get_file_path_from_file_queue(i)); + open_read_file(); + fp_queue.push_back(get_fp()); + end + endfunction + + function integer file_read_agent::get_file_handle_from_fp_queue(integer i); + if (i >= fp_queue.size()) begin + `uvm_fatal(this.get_full_name(), "access data out of fp_queue boundary") + end + + return fp_queue[i]; + endfunction + + function void file_read_agent::set_bitwidth_queue(integer bitwidth_queue [$]); + TV_bitwidth_queue.delete(); + TV_bitwidth_queue = bitwidth_queue; + endfunction + + function integer file_read_agent::get_bitwidth_from_queue(integer i); + if (i >= TV_bitwidth_queue.size()) begin + `uvm_fatal(this.get_full_name(), "access data out of TV_bitwidth_queue boundary"); + end + + return TV_bitwidth_queue[i]; + endfunction + + function void file_read_agent::open_read_file(); + set_fp($fopen(TV_FILE, "r")); + `uvm_info(this.get_full_name(), $sformatf("open file %s for read", get_file_path()), UVM_LOW) + endfunction + + function integer file_read_agent::get_fp(); + return fp; + endfunction + + function void file_read_agent::set_fp(integer file_handle); + fp = file_handle; + endfunction + + function void file_read_agent::set_token(string token_in); + token = token_in; + endfunction + + function string file_read_agent::get_token_from_queue(integer i); + if (i >= token_queue.size()) begin + `uvm_fatal(this.get_full_name(), "access data out of token_queue boundary") + end + + return token_queue[i]; + endfunction + + function int file_read_agent::is_read_string(string item); + integer i; + string token_tmp; + + for (i = 0; i < get_file_number(); i++) begin + token_tmp = get_token_from_queue(i); + if (string'(token_tmp) != item) + return 0; + end + + return 1; + endfunction + + function file_read_agent::DATA_TYPE file_read_agent::load_data(); + integer ret; + integer i; + integer j; + integer bitwidth; + integer LSB; + integer MSB; + integer shift_bit; + string rm_0x_token; + DATA_TYPE data_integer; + DATA_TYPE data_integer_tmp; + DATA_TYPE MASK; + + LSB = 0; + MSB = 0; + data_integer = {DATA_WIDTH{1'b0}}; + shift_bit = 0; + for (i = 0; i < get_file_number(); i++) begin + set_token(get_token_from_queue(i)); + rm_0x_token = rm_0x(); + if (is_HEX_read()) begin + ret = $sscanf(rm_0x_token, "%x", data_integer_tmp); + end + else if (is_DEC_read()) begin + ret = $sscanf(rm_0x_token, "%d", data_integer_tmp); + end + else begin + `uvm_fatal(this.get_full_name(), "TVIN data format wrong"); + end + + if (ret == 0) + `uvm_fatal(this.get_full_name(), "load data from TVIN FAIL!!!") + bitwidth = get_bitwidth_from_queue(i); + MSB = LSB + bitwidth - 1; + if (MSB < LSB) + `uvm_fatal(this.get_full_name(), "load error bitwidth!!!") + + MASK = {DATA_WIDTH{1'b0}}; + for (j = 0; j < bitwidth; j++) begin + MASK[j] = 1'b1; + end + + data_integer = data_integer | ((data_integer_tmp & MASK) << shift_bit); + LSB = MSB + 1; + shift_bit = shift_bit + bitwidth; + end + + if (MSB != (DATA_WIDTH - 1)) + `uvm_fatal(this.get_full_name(), "load error bitwidth!!!") + + return data_integer; + endfunction + + function string file_read_agent::rm_0x(); + string token_tmp = token; + integer i; + begin + reset_HEX_read(); + reset_DEC_read(); + + for (i = 0; i < token.len(); i++) begin + if (token[i] == "x") begin + if (i == 0) + `uvm_fatal(this.get_full_name(), "TV file data format error!!!") + else if (token[i - 1] == "0") begin + break; + end + else + `uvm_fatal(this.get_full_name(), "TV file data format error!!!") + end + end + + token_tmp[i] = "0"; + + if (i == token.len()) begin + set_DEC_read(); + end + else begin + set_HEX_read(); + end + + return token_tmp; + end + endfunction + + function void file_read_agent::reset_HEX_read(); + HEX_read = 0; + endfunction + + function void file_read_agent::reset_DEC_read(); + DEC_read = 0; + endfunction + + function void file_read_agent::set_HEX_read(); + HEX_read = 1; + endfunction + + function void file_read_agent::set_DEC_read(); + DEC_read = 1; + endfunction + + function int file_read_agent::is_HEX_read(); + return HEX_read == 1; + endfunction + + function int file_read_agent::is_DEC_read(); + return DEC_read == 1; + endfunction + + function void file_read_agent::read_token(); + integer ret; + integer i; + integer fp_tmp; + + token_queue.delete(); // reset token_queue + + for (i = 0; i < get_file_number(); i++) begin + ret = 0; + fp_tmp = get_file_handle_from_fp_queue(i); + ret = $fscanf(fp_tmp,"%s",token); + if (ret == 0) + `uvm_fatal(this.get_full_name(), "read token FAIL!!!") + + token_queue.push_back(token); + end + endfunction + + function void file_read_agent::read_TVIN_file(); + reg [DATA_WIDTH - 1: 0] data; + integer ret; + DATA_QUEUE_TYPE TV; + + TV_Queue.delete(); // reset transaction queue before read TVIN file + + read_token(); + if (!is_read_string("[[[runtime]]]")) begin + `uvm_fatal(this.get_full_name(), "ERROR: Simulation using HLS TB failed."); + end + + read_token(); + while (!is_read_string("[[[/runtime]]]")) begin + if (!is_read_string("[[transaction]]")) begin + `uvm_fatal(this.get_full_name(), "ERROR: Simulation using HLS TB failed."); + end + + read_token(); // skip transaction number + + read_token(); + while (!is_read_string("[[/transaction]]")) begin + + data = load_data(); + TV.push_back(data); + read_token(); + `uvm_info(this.get_full_name(), $sformatf("read data: %0d", data), UVM_DEBUG) + end + + TV_Queue.push_back(TV); + + `uvm_info(this.get_full_name(), $sformatf("transaction size: %0d", TV.size()), UVM_DEBUG) + // clear transaction queue to recored next transaction read from TV_FILE + TV.delete(); + + read_token(); + end + + `uvm_info(this.get_full_name(), $sformatf("TV_Queue size: %0d", TV_Queue.size()), UVM_DEBUG) + `uvm_info(this.get_full_name(), "read file done", UVM_LOW) + + endfunction + + function void file_read_agent::config_file(string file_queue [$], integer bitwidth_queue [$]); + if (file_queue.size() != bitwidth_queue.size()) + `uvm_fatal(this.get_full_name(), "ERROR: size of file_queue and bitwidth_queue are different!!!"); + + set_fp_queue(file_queue); + set_bitwidth_queue(bitwidth_queue); + endfunction + + function int file_read_agent::vectfileread(input string filename, ref int data[string][$],ref string varname[$]); + string vectname; + int fd; + string line; + bit varfound=0; + int linenum=0; + bit isvectfile = 0; + bit firstelem=1; + string field=""; + + vectfileread = 0; + fd = $fopen(filename, "r"); + assert(fd!=0) begin + end else begin + $info("file %s can't be opened, SVUVM autotb will use default configuration. I.E. interface delay will use default randomization ", filename); + return 0; + end + + while($fgets(line, fd)) begin + int onedata; + string lineproc; + string value; + int state=0; + + int i=matchstrchk(line, "//"); + if(i==-1) lineproc = line; + if(i==0) continue; + if(i>1) lineproc = line.substr(0, i-1); + + for(i=0; i=33&&lineproc[i]<=126) begin + assert(0) begin + end else begin + $error("file %s has unknown letter at line %d", filename, linenum); + return 0; + end + end + end 11: begin //digital continue + if(`ISSPACE(lineproc[i])) begin + state=0; + varfound=0; + void'($sscanf(value, "%d", onedata)); + vectfileread++; + assert(field!="") begin + end else begin + $error("file %s can't get the matched field at line %d", filename, linenum); + return 0; + end + //$display("line360: field:%s, state:%d, onedata:%d", field, state, onedata); + data[field].push_back(onedata); + end else if(`ISDIGIT(lineproc[i])) begin + value = {value, string'(lineproc[i])}; + end else if( `ISNAMELETTER(lineproc[i])) begin + state = 21; + field = {value, string'(lineproc[i])}; + value=""; + end else if(lineproc[i]>=33&&lineproc[i]<=126) begin + assert(0) begin + end else begin + $error("file %s has unknown letter at line %d", filename, linenum); + return 0; + end + end + end 21: begin //field continue + if(`ISSPACE(lineproc[i])) begin + state=0; + varname.push_back(field); + if(varfound) begin + assert(0) begin + end else begin + $error("file %s has consecutive variable label at line %d", filename, linenum); + return 0; + end + end + varfound = 1; + end else if(`ISDIGIT(lineproc[i])||`ISNAMELETTER(lineproc[i])) begin + field={field, string'(lineproc[i])}; + //$display("line387: field:%s, state:%d", field, state); + end else if(lineproc[i]>=33&&lineproc[i]<=126) begin + assert(0) begin + end else begin + $error("file %s has unknown letter at line %d", filename, linenum); + return 0; + end + end + end + endcase + end //end of one line process + end //end of while + $fclose(fd); + endfunction + + function int file_read_agent::matchstrchk(string longstr, string str); + matchstrchk = -1; + for(int i=0; i<=longstr.len - str.len; i++) + if(longstr.substr(i, i+str.len-1) == str) begin + matchstrchk = i; + break; + end + endfunction + +`endif diff --git a/vitis/v2020_1/file_agent/file_write_agent.sv b/vitis/v2020_1/file_agent/file_write_agent.sv new file mode 100755 index 00000000..45c1f290 --- /dev/null +++ b/vitis/v2020_1/file_agent/file_write_agent.sv @@ -0,0 +1,350 @@ +`ifndef FILE_WRITE_AGENT__SV + `define FILE_WRITE_AGENT__SV + + class file_write_agent#(int DATA_WIDTH = 32) extends uvm_object; + + typedef logic [DATA_WIDTH - 1: 0] DATA_TYPE; + + string TV_FILE = ""; + integer fp; + integer file_open; + integer write_file_done; + integer write_section_done; + integer TRANSACTION_NUM; + integer transaction_num_idx; + integer TRANSACTION_DEPTH; + integer TRANSACTION_DEPTH_queue [$]; + integer TRANSACTION_DEPTH_queue_for_depth_check [$]; + integer transaction_depth_idx; + integer ap_done_num_idx; + + `uvm_object_param_utils_begin(file_write_agent#(DATA_WIDTH)) + `uvm_field_string(TV_FILE, UVM_DEFAULT) + `uvm_field_int(fp, UVM_DEFAULT) + `uvm_field_int(file_open, UVM_DEFAULT) + `uvm_field_int(write_file_done, UVM_DEFAULT) + `uvm_field_int(write_section_done, UVM_DEFAULT) + `uvm_field_int(TRANSACTION_NUM, UVM_DEFAULT) + `uvm_field_int(transaction_num_idx, UVM_DEFAULT) + `uvm_field_int(TRANSACTION_DEPTH, UVM_DEFAULT) + `uvm_field_queue_int(TRANSACTION_DEPTH_queue, UVM_DEFAULT) + `uvm_field_queue_int(TRANSACTION_DEPTH_queue_for_depth_check, UVM_DEFAULT) + `uvm_field_int(transaction_depth_idx, UVM_DEFAULT) + `uvm_field_int(ap_done_num_idx, UVM_DEFAULT) + `uvm_object_utils_end + + function new (string name = "file_write_agent"); + super.new(name); + file_open = 0; + write_file_done = 0; + write_section_done = 0; + TRANSACTION_NUM = 0; + transaction_num_idx = 0; + TRANSACTION_DEPTH = 0; + transaction_depth_idx = 0; + ap_done_num_idx = 0; + endfunction + + extern virtual local function void set_file_open(); + extern virtual local function void set_file_close(); + extern virtual local function void increase_transaction_num_idx(); + extern virtual local function void increase_transaction_depth_idx(); + extern virtual local function void increase_ap_done_num_idx(); + extern virtual local function int get_transaction_num_idx(); + extern virtual local function int get_ap_done_num_idx(); + + extern virtual local function void set_file_path (string path); + extern virtual local function string get_file_path(); + extern virtual local function void open_write_file(); + extern virtual local function void close_file(); + extern virtual local function int is_file_open(); + extern virtual local function void reset_write_file_done(); + extern virtual local function void set_write_file_done(); + extern virtual function int is_write_file_done(); + extern virtual task wait_write_file_done(); + extern virtual local function void reset_write_section_done(); + extern virtual local function void set_write_section_done(); + extern virtual function int is_write_section_done(); + + extern virtual local function void set_transaction_depth(integer depth); + extern virtual local function int get_transaction_depth(); + extern virtual local function void set_transaction_num(integer num); + extern virtual local function void set_transaction_depth_queue(integer trans_depth_queue [$]); + extern virtual local function void reset_transaction_depth_queue(); + extern virtual local function void set_transaction_depth_queue_for_depth_check(integer trans_depth_queue [$]); + extern virtual local function void reset_transaction_depth_queue_for_depth_check(); + extern virtual function int get_next_transaction_depth(); + extern virtual local function void reset_transaction_depth(); + extern virtual local function void reset_transaction_num(); + extern virtual local function void reset_transaction_depth_idx(); + extern virtual local function void reset_transaction_num_idx(); + extern virtual local function void reset_ap_done_num_idx(); + extern virtual local function int is_reset_transaction_depth_idx(); + extern virtual local function int is_reach_transaction_depth(); + extern virtual local function int is_exceed_transaction_depth(); + extern virtual local function int is_reach_transaction_num(); + extern virtual local function int retrieve_transaction_depth_from_queue(); + + extern virtual local function void dump_start_runtime(); + extern virtual local function void dump_stop_runtime(); + extern virtual local function void dump_start_transaction(); + extern virtual local function void dump_stop_transaction(); + extern virtual local function void dump_data(DATA_TYPE data); + extern virtual local function void dump_dummy_bits(); + extern virtual local function void prepare_next_transaction_write(); + extern virtual function void config_file(string path, integer trans_depth_queue [$]); + extern virtual function void write_TVOUT_data(DATA_TYPE data); + extern virtual function void receive_ap_done(); + endclass + + function void file_write_agent::close_file(); + $fclose(fp); + set_file_close(); + set_write_file_done(); + endfunction + + function int file_write_agent::is_file_open(); + return file_open; + endfunction + + function void file_write_agent::reset_write_file_done(); + write_file_done = 0; + endfunction + + function void file_write_agent::set_write_file_done(); + write_file_done = 1; + endfunction + + function int file_write_agent::is_write_file_done(); + return write_file_done == 1; + endfunction + + function void file_write_agent::reset_write_section_done(); + write_section_done = 0; + endfunction + + task file_write_agent::wait_write_file_done(); + wait (write_file_done == 1); + endtask + + function void file_write_agent::set_write_section_done(); + write_section_done = 1; + endfunction + + function int file_write_agent::is_write_section_done(); + return write_section_done == 1; + endfunction + + function void file_write_agent::set_file_open(); + file_open = 1; + endfunction + + function void file_write_agent::set_file_close(); + file_open = 0; + endfunction + + function void file_write_agent::increase_transaction_num_idx(); + transaction_num_idx++; + endfunction + + function void file_write_agent::increase_ap_done_num_idx(); + ap_done_num_idx++; + endfunction + + function int file_write_agent::get_transaction_num_idx(); + return transaction_num_idx; + endfunction + + function int file_write_agent::get_ap_done_num_idx(); + return ap_done_num_idx; + endfunction + + function void file_write_agent::increase_transaction_depth_idx(); + transaction_depth_idx++; + endfunction + + function void file_write_agent::set_file_path(string path); + TV_FILE = path; + endfunction + + function string file_write_agent::get_file_path(); + return TV_FILE; + endfunction + + function void file_write_agent::set_transaction_depth(integer depth); + TRANSACTION_DEPTH = depth; + endfunction + + function int file_write_agent::get_transaction_depth(); + return TRANSACTION_DEPTH; + endfunction + + function void file_write_agent::set_transaction_num(integer num); + TRANSACTION_NUM = num; + endfunction + + function void file_write_agent::set_transaction_depth_queue(integer trans_depth_queue [$]); + reset_transaction_depth_queue(); + TRANSACTION_DEPTH_queue = trans_depth_queue; + endfunction + + function void file_write_agent::reset_transaction_depth_queue(); + TRANSACTION_DEPTH_queue.delete(); + endfunction + + function void file_write_agent::set_transaction_depth_queue_for_depth_check(integer trans_depth_queue [$]); + reset_transaction_depth_queue_for_depth_check(); + TRANSACTION_DEPTH_queue_for_depth_check = trans_depth_queue; + endfunction + + function void file_write_agent::reset_transaction_depth_queue_for_depth_check(); + TRANSACTION_DEPTH_queue_for_depth_check.delete(); + endfunction + + function int file_write_agent::get_next_transaction_depth(); + return TRANSACTION_DEPTH_queue_for_depth_check.pop_front(); + endfunction + + function void file_write_agent::reset_transaction_depth(); + TRANSACTION_DEPTH = 0; + endfunction + + function void file_write_agent::reset_transaction_num(); + TRANSACTION_NUM = 0; + endfunction + + function void file_write_agent::reset_transaction_depth_idx(); + transaction_depth_idx = 0; + endfunction + + function void file_write_agent::reset_transaction_num_idx(); + transaction_num_idx = 0; + endfunction + + function void file_write_agent::reset_ap_done_num_idx(); + ap_done_num_idx = 0; + endfunction + + function int file_write_agent::is_reset_transaction_depth_idx(); + return transaction_depth_idx == 0; + endfunction + + function int file_write_agent::is_reach_transaction_depth(); + return transaction_depth_idx == TRANSACTION_DEPTH; + endfunction + + function int file_write_agent::is_exceed_transaction_depth(); + return transaction_depth_idx > TRANSACTION_DEPTH; + endfunction + + function int file_write_agent::is_reach_transaction_num(); + return transaction_num_idx == TRANSACTION_NUM; + endfunction + + function int file_write_agent::retrieve_transaction_depth_from_queue(); + return TRANSACTION_DEPTH_queue.pop_front(); + endfunction + + function void file_write_agent::open_write_file(); + fp = $fopen(TV_FILE, "w"); + set_file_open(); + reset_write_file_done(); + `uvm_info(this.get_full_name(), $sformatf("open file %s for write", get_file_path()), UVM_LOW); + endfunction + + function void file_write_agent::dump_start_runtime(); + $fdisplay(fp,"[[[runtime]]]"); + endfunction + + function void file_write_agent::dump_stop_runtime(); + $fdisplay(fp,"[[[/runtime]]]"); + endfunction + + function void file_write_agent::dump_start_transaction(); + $fdisplay(fp,"[[transaction]] %d", transaction_num_idx); + endfunction + + function void file_write_agent::dump_stop_transaction(); + $fdisplay(fp,"[[/transaction]]"); + endfunction + + function void file_write_agent::dump_data(DATA_TYPE data); + $fdisplay(fp,"0x%x",data); + endfunction + + function void file_write_agent::dump_dummy_bits(); + $fdisplay(fp, "0x0"); + endfunction + + function void file_write_agent::config_file(string path, integer trans_depth_queue [$]); + int i; + set_file_path(path); + set_transaction_num(trans_depth_queue.size()); + set_transaction_depth_queue(trans_depth_queue); + set_transaction_depth_queue_for_depth_check(trans_depth_queue); + reset_transaction_depth(); + reset_transaction_depth_idx(); + reset_transaction_num_idx(); + reset_ap_done_num_idx(); + open_write_file(); + dump_start_runtime(); + `uvm_info(this.get_full_name(), $sformatf("config write file with transaction number %0d", trans_depth_queue.size()), UVM_LOW) + prepare_next_transaction_write(); + endfunction + + function void file_write_agent::prepare_next_transaction_write(); + if (is_reach_transaction_num()) begin + dump_stop_runtime(); + close_file(); + return; + end + + set_transaction_depth(retrieve_transaction_depth_from_queue()); + dump_start_transaction(); + reset_transaction_depth_idx(); + + while (get_transaction_depth() == 0) begin + dump_stop_transaction(); + reset_transaction_depth_idx(); + increase_transaction_num_idx(); + set_write_section_done(); + + if (is_reach_transaction_num()) begin + dump_stop_runtime(); + close_file(); + return; + end + + set_transaction_depth(retrieve_transaction_depth_from_queue()); + dump_start_transaction(); + end + endfunction + + + function void file_write_agent::write_TVOUT_data(DATA_TYPE data); + if (is_file_open()) begin + dump_data(data); + increase_transaction_depth_idx(); + reset_write_section_done(); + if (is_reach_transaction_depth()) begin + dump_stop_transaction(); + increase_transaction_num_idx(); + set_write_section_done(); + prepare_next_transaction_write(); + end + end + endfunction + + function void file_write_agent::receive_ap_done(); + if (is_file_open()) begin + increase_ap_done_num_idx(); + if (get_ap_done_num_idx() > get_transaction_num_idx()) begin + dump_stop_transaction(); + increase_transaction_num_idx(); + set_write_section_done(); + prepare_next_transaction_write(); + end + end + endfunction + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/fir/fir_compiler_v7_2_bitacc_cmodel.h b/vitis/v2020_1/fir/fir_compiler_v7_2_bitacc_cmodel.h new file mode 100644 index 00000000..5beb2b55 --- /dev/null +++ b/vitis/v2020_1/fir/fir_compiler_v7_2_bitacc_cmodel.h @@ -0,0 +1,448 @@ +//----------------------------------------------------------------------------- +// (c) Copyright 2011 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// Purpose : Header file for bit accurate C model + +#ifndef XIP_FIR_COMPILER_v7_2_BITACC_CMODEL_H +#define XIP_FIR_COMPILER_v7_2_BITACC_CMODEL_H + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models +#undef XIP_XILINX_XIP_TARGET +#define XIP_XILINX_XIP_TARGET fir_v7_2 +#include "xip_common_bitacc_cmodel.h" +#include "xip_mpz_bitacc_cmodel.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//Depreciated; these functions now defined within model +#define DEFINE_FIR_XIP_ARRAY(TYPE) + +/** + * Filter Types + */ +#define XIP_FIR_SINGLE_RATE 0 +#define XIP_FIR_INTERPOLATION 1 +#define XIP_FIR_DECIMATION 2 +#define XIP_FIR_HILBERT 3 +#define XIP_FIR_INTERPOLATED 4 + +/** + * Rate Change Type + */ +#define XIP_FIR_INTEGER_RATE 0 +#define XIP_FIR_FRACTIONAL_RATE 1 + +/** + * Channel Sequence Type + */ +#define XIP_FIR_BASIC_CHAN_SEQ 0 +#define XIP_FIR_ADVANCED_CHAN_SEQ 1 + +/** + * Quantization + */ +#define XIP_FIR_INTEGER_COEFF 0 +#define XIP_FIR_QUANTIZED_ONLY 1 +#define XIP_FIR_MAXIMIZE_DYNAMIC_RANGE 2 +#define XIP_FIR_NORMALIZE_TO_CENTRE_COEFFICIENT 3 + +/** + * Output Rounding + */ +#define XIP_FIR_FULL_PRECISION 0 +#define XIP_FIR_TRUNCATE_LSBS 1 +#define XIP_FIR_SYMMETRIC_ZERO 2 +#define XIP_FIR_SYMMETRIC_INF 3 +#define XIP_FIR_CONVERGENT_EVEN 4 +#define XIP_FIR_CONVERGENT_ODD 5 +#define XIP_FIR_NON_SYMMETRIC_DOWN 6 +#define XIP_FIR_NON_SYMMETRIC_UP 7 + +/** + * Configuration Method + */ +#define XIP_FIR_CONFIG_SINGLE 0 +#define XIP_FIR_CONFIG_BY_CHANNEL 1 + +/** + * Advance channel pattern ID + */ +typedef enum +{ + P4_0 = 0, P4_1 = 1, P4_2 = 2, P4_3 = 3, P4_4 = 4, + P6_0 = 5, P6_1 = 6, P6_2 = 7, P6_3 = 8, P6_4 = 9, P6_5 = 10, P6_6 = 11, P6_7 = 12, P6_8 = 13, + P8_0 = 14, P8_1 = 15, P8_2 = 16, P8_3 = 17, P8_4 = 18, P8_5 = 19, P8_6 = 20, P8_7 = 21, P8_8 = 22, P8_9 = 23, P8_10 = 24, P8_11 = 25, P8_12 = 26, + P12_0 = 27, P12_1 = 28, P12_2 = 29, P12_3 = 30, P12_4 = 31, P12_5 = 32, P12_6 = 33, P12_7 = 34, P12_8 = 35, P12_9 = 36, P12_10 = 37, P12_11 = 38, P12_12 = 39, P12_13 = 40, P12_14 = 41, P12_15 = 42, P12_16 = 43, P12_17 = 44, P12_18 = 45, P12_19 = 46, P12_20 = 47, P12_21 = 48, P12_22 = 49, P12_23 = 50, P12_24 = 51, P12_25 = 52, P12_26 = 53, + P16_0 = 54, P16_1 = 55, P16_2 = 56, P16_3 = 57, P16_4 = 58, P16_5 = 59, P16_6 = 60, P16_7 = 61, P16_8 = 62, P16_9 = 63, P16_10 = 64, P16_11 = 65, P16_12 = 66, P16_13 = 67, P16_14 = 68, P16_15 = 69, P16_16 = 70, P16_17 = 71, P16_18 = 72, P16_19 = 73, P16_20 = 74, P16_21 = 75, + P24_0 = 76, P24_1 = 77, P24_2 = 78, P24_3 = 79, P24_4 = 80, P24_5 = 81, P24_6 = 82, P24_7 = 83, P24_8 = 84, P24_9 = 85, P24_10 = 86, P24_11 = 87, P24_12 = 88, P24_13 = 89, P24_14 = 90, P24_15 = 91, P24_16 = 92, P24_17 = 93, P24_18 = 94, P24_19 = 95, P24_20 = 96, P24_21 = 97, P24_22 = 98, P24_23 = 99, P24_24 = 100, P24_25 = 101, P24_26 = 102, P24_27 = 103, + P32_0 = 104, P32_1 = 105, P32_2 = 106, P32_3 = 107, P32_4 = 108, P32_5 = 109, P32_6 = 110, P32_7 = 111, P32_8 = 112, P32_9 = 113, P32_10 = 114, P32_11 = 115, P32_12 = 116, P32_13 = 117, P32_14 = 118, P32_15 = 119, P32_16 = 120, P32_17 = 121, P32_18 = 122, P32_19 = 123, P32_20 = 124, P32_21 = 125, + P48_0 = 126, P48_1 = 127, P48_2 = 128, P48_3 = 129, P48_4 = 130, P48_5 = 131, P48_6 = 132, P48_7 = 133, P48_8 = 134, P48_9 = 135, P48_10 = 136, P48_11 = 137, P48_12 = 138, P48_13 = 139, P48_14 = 140, P48_15 = 141, P48_16 = 142, P48_17 = 143, P48_18 = 144, P48_19 = 145, P48_20 = 146, P48_21 = 147, P48_22 = 148, P48_23 = 149, P48_24 = 150, P48_25 = 151, P48_26 = 152, + P64_0 = 153, P64_1 = 154, P64_2 = 155, P64_3 = 156, P64_4 = 157, P64_5 = 158, P64_6 = 159, P64_7 = 160, P64_8 = 161, P64_9 = 162, P64_10 = 163, P64_11 = 164, P64_12 = 165, P64_13 = 166, P64_14 = 167, P64_15 = 168, P64_16 = 169, P64_17 = 170, P64_18 = 171, P64_19 = 172, P64_20 = 173, P64_21 = 174, + P_MAX = 175, // Dummy max size entry + P_BASIC = 176 // Indicates Basic interleaved channels +} xip_fir_v7_2_pattern; + +#define XIP_FIR_MAX_ADV_CHAN 64 +#define XIP_FIR_MAX_ADV_CHAN_INDEX 24 + +XIP_XILINX_XIP_IMPEXP extern const int xip_fir_v7_2_pattern_map[P_MAX][XIP_FIR_MAX_ADV_CHAN][XIP_FIR_MAX_ADV_CHAN_INDEX+1]; +XIP_XILINX_XIP_IMPEXP extern const int xip_fir_v7_2_pattern_seq[P_MAX][XIP_FIR_MAX_ADV_CHAN]; + +/** + * Core configuration structure. + * + * Must be created and populated in order to instantiate the model. + */ +typedef struct +{ + const char* name; //@- Instance name to use in error/warning reporting + + unsigned int filter_type; //@- Select from: XIP_FIR_SINGLE_RATE, XIP_FIR_INTERPOLATION, XIP_FIR_DECIMATION, XIP_FIR_HILBERT, XIP_FIR_INTERPOLATED + unsigned int rate_change; //@- Select from: XIP_FIR_INTEGER_RATE, XIP_FIR_FRACTIONAL_RATE + unsigned int interp_rate; //@- Specifies the interpolation (or up-sampling) factor + unsigned int decim_rate; //@- Specifies the decimation (or down-sampling) factor + unsigned int zero_pack_factor; //@- Specifies the zero packing factor for Interpolated filters + + const double* coeff; //@- Pointer to coefficient array + unsigned int coeff_padding; //@- Specifies the amount zero padding added to the front of the filter + unsigned int num_coeffs; //@- Specifies the number of coefficients in one filter + unsigned int coeff_sets; //@- Specifies the number of coefficient sets in the coeff array + unsigned int reloadable; //@- Specifies if the coefficients are reloadable; 0 = No, 1 = Yes + unsigned int is_halfband; //@- Specifies if halfband coefficients have been used; 0 = No, 1 = Yes + unsigned int quantization; //@- Specifies how the coeff array should quantized, select from: XIP_FIR_INTEGER_COEFF, XIP_FIR_QUANTIZED_ONLY, XIP_FIR_MAXIMIZE_DYNAMIC_RANGE + unsigned int coeff_width; //@- Used to quantize the supplied coefficients. + unsigned int coeff_fract_width; //@- Used to quantize the supplied coefficients. + + unsigned int chan_seq; //@- Specifies the channel sequence type, select from: XIP_FIR_BASIC_CHAN_SEQ, XIP_FIR_ADVANCED_CHAN_SEQ + unsigned int num_channels; //@- Specifies the number of data channels supported + xip_fir_v7_2_pattern init_pattern; //@- Specifies the initial channel pattern used by the core + unsigned int num_paths; //@- Specifies the number of data paths supported + + unsigned int data_width; //@- Used to quantize the input data + unsigned int data_fract_width; //@- Used to quantize the input data + unsigned int output_rounding_mode; //@- Select from: XIP_FIR_FULL_PRECISION, XIP_FIR_TRUNCATE_LSBS, XIP_FIR_SYMMETRIC_ZERO, XIP_FIR_SYMMETRIC_INF, XIP_FIR_CONVERGENT_EVEN, XIP_FIR_CONVERGENT_ODD, XIP_FIR_NON_SYMMETRIC_DOWN, XIP_FIR_NON_SYMMETRIC_UP + unsigned int output_width; //@- Ignored when XIP_FIR_FULL_PRECISION + unsigned int output_fract_width; //@- READ ONLY: Provides the number of fractional bits present in output word + unsigned int config_method; //@- Specifies the form of the configuration packets, select from: XIP_FIR_CONFIG_SINGLE, XIP_FIR_CONFIG_BY_CHANNEL +} xip_fir_v7_2_config; + +/** + * FIR Configuration packet + */ +typedef struct +{ + xip_fir_v7_2_pattern chanpat; //@- Specifies the Advanced channel pattern to use + xip_array_uint* fsel; //@- Specifies which coefficient set to use for each channel +} xip_fir_v7_2_cnfg_packet; + +/** + * FIR Reload packet + */ +typedef struct +{ + xip_uint fsel; //@- Specifies which coefficient set is to be reloaded + xip_array_real* coeff; //@- Specifies the coefficients to load +} xip_fir_v7_2_rld_packet; + +/** + * FIR handle type (opaque to user). + */ +struct _xip_fir_v7_2; +typedef struct _xip_fir_v7_2 xip_fir_v7_2; + +/** + * Define additional FIR specific xip_array_ helper functions: + * o xip_array__set_chan + * @param p Pointer to xip_array_ to be modified + * @param value xip_ scalar value to assigned to specified channel + * @param path Parallel data path of channel to set + * @param chan Channel to set + * @param index Array index of channel to set, consider each channel as a seperate 1-D array indexed from 0 + * @param pattern Specifies the advanced interleaved pattern to be used, for basic interleaved channels use P_BASIC + * @returns Exit code XIP_STATUS_* + * o xip_array__get_chan + * @param p Pointer to xip_array_ to be modified + * @param value Pointer to xip_ scalar to write to specified channel + * @param path Parallel data path of channel to set + * @param chan Channel to set + * @param index Array index of channel to set, consider each channel as a seperate 1-D array indexed from 0 + * @param pattern Specifies the advanced interleaved pattern to be used, for basic interleaved channels use P_BASIC + * @returns Exit code XIP_STATUS_* + */ + +#define DECLARE_FIR_XIP_ARRAY(TYPE) \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_fir_v7_2_xip_array_##TYPE##_set_chan(xip_array_##TYPE* p, const xip_##TYPE value, size_t path, size_t chan, size_t index, xip_fir_v7_2_pattern pattern); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_fir_v7_2_xip_array_##TYPE##_get_chan(const xip_array_##TYPE* p, xip_##TYPE* value, size_t path, size_t chan, size_t index, xip_fir_v7_2_pattern pattern); \ + +/** + * Declare FIR specific array helper functions for the fundamental types used by the FIR data channels + */ +DECLARE_FIR_XIP_ARRAY(real); +DECLARE_FIR_XIP_ARRAY(complex); +DECLARE_FIR_XIP_ARRAY(mpz); +DECLARE_FIR_XIP_ARRAY(mpz_complex); + +/** + * Get version of model. + * + * @returns String Textual representation of model version + */ +XIP_XILINX_XIP_IMPEXP +const char* xip_fir_v7_2_get_version(void); + +/** + * Fill in a configuration structure with the core's default values. + * + * @param config The configuration structure to be populated + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_default_config( + xip_fir_v7_2_config* config +); + +/** + * Create a new instance of the core based on some configuration values. + * + * @param config Pointer to a xip_fir_v7_2_config structure + * @param msg_handler Callback function for errors and warnings (providing a null + * pointer means no messages are output) + * @param msg_handle Optional argument to be passed back to callback function + * + * @returns model Pointer to xip_fir_v7_2 state structure + */ +XIP_XILINX_XIP_IMPEXP +xip_fir_v7_2* xip_fir_v7_2_create( + const xip_fir_v7_2_config* config, + xip_msg_handler msg_handler, + void* msg_handle +); + +/** + * Fill a configuration structure with the core's current state + * + * @param model Pointer to xip_fir_v7_2 state structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_get_config( + xip_fir_v7_2* model, + xip_fir_v7_2_config* config +); + +/** + * Reset an instance of the core + * + * @param model Pointer to xip_fir_v7_2 state structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_reset(xip_fir_v7_2* model); + +/** + * Destroy an instance of the core and free any resources allocated. + * + * @param model Pointer to xip_fir_v7_2 state structure + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_destroy(xip_fir_v7_2* model); + +/** + * Register an output structure to write model output + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data Pointer to an xip_array_ structure + * @param cmplx_data Pointer to an xip_array_ structure, if data is set this argument will be + * ignored. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_set_data_sink( + xip_fir_v7_2* model, + xip_array_real* data, + xip_array_complex* cmplx_data +); +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_set_data_sink_mpz( + xip_fir_v7_2* model, + xip_array_mpz* data, + xip_array_mpz_complex* cmplx_data +); + +/** + * Register a callback function to process the registered output structure + * Called when the output structure has been filled + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data_handler Callback function to process output array + * @param handle Optional argument to be passed back to callback function + * @param opt_arg Optional argument to be passed back to callback function + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_set_data_handler( + xip_fir_v7_2* model, + xip_array_real_handler data_handler, + void* handle, + void* opt_arg +); + +/** + * Calculate size of output in response to transaction. + * + * The number of input samples is examined and used to compute the number of + * output samples that would be produced if this structure was presented to the + * xip_fir_v7_2_data_send. The dim,dim_size and data_size fields of the output + * data structure are populated + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data_in Pointer to an xip_array_ structure + * @param data_out Pointer to an xip_array_ structure + * @param cmplx_data_out Pointer to an xip_array_ structure, if data_out is set this argument + * will be ignored. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_calc_size( + xip_fir_v7_2* model, + const xip_array_real* data_in, + xip_array_real* data_out, + xip_array_complex* cmplx_data_out +); +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_calc_size_mpz( + xip_fir_v7_2* model, + const xip_array_real* data_in, + xip_array_mpz* data_out, + xip_array_mpz_complex* cmplx_data_out +); + +/** + * Pass a configuration packet to the model + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param cng_packet Pointer to an xip_fir_v7_2_cnfg_packet structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_config_send( + xip_fir_v7_2* model, + const xip_fir_v7_2_cnfg_packet* cnfg_packet +); + +/** + * Pass a reload packet to the model + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param cng_packet Pointer to an xip_fir_v7_2_rld_packet structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_reload_send( + xip_fir_v7_2* model, + const xip_fir_v7_2_rld_packet* rld_packet +); + +/** + * Pass a data packet to the model for processing + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data Pointer to an xip_array_real structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_data_send( + xip_fir_v7_2* model, + const xip_array_real* data +); + +/** + * Callback function used to pass a data packet to the model for processing + * + * @param data Pointer to an xip_array_real structure + * @param model Pointer to xip_fir_v7_2 state structure, cast to void + * @param dummy Pointer for optional callback argument, redundant for fir model. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +int xip_fir_v7_2_data_send_handler( + const xip_array_real* data, + void* model, + void* dummy +); + +/** + * Extract a data packet from the model + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data Pointer to an xip_array_ structure + * @param cmplx_data Pointer to an xip_array_ structure, if data is set this argument will be + * ignored. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_data_get( + xip_fir_v7_2* model, + xip_array_real* data, + xip_array_complex* cmplx_data +); +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_data_get_mpz( + xip_fir_v7_2* model, + xip_array_mpz* data, + xip_array_mpz_complex* cmplx_data +); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_FIR_COMPILER_v7_2_BITACC_CMODEL_H diff --git a/vitis/v2020_1/fir/gmp.h b/vitis/v2020_1/fir/gmp.h new file mode 100644 index 00000000..a222d88e --- /dev/null +++ b/vitis/v2020_1/fir/gmp.h @@ -0,0 +1,2470 @@ +/* Definitions for GNU multiple precision functions. -*- mode: c -*- + +Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, +2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + +Copyright 2008 William Hart, Gonzalo Tornaria + +This file is part of the MPIR Library. + +The MPIR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The MPIR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ + +#ifndef __GMP_H__ + +#if defined (__cplusplus) +#include /* for std::istream, std::ostream, std::string */ +#include +#endif + + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_BITS_PER_MP_LIMB 32 +#define GMP_LIMB_BITS 32 +#define GMP_NAIL_BITS 0 +#endif +#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) +#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) +#define GMP_NUMB_MAX GMP_NUMB_MASK +#define GMP_NAIL_MASK (~ GMP_NUMB_MASK) + + +#ifndef __GNU_MP__ +#define __GNU_MP__ 4 + +#define __need_size_t /* tell gcc stddef.h we only want size_t */ +#if defined (__cplusplus) +#include /* for size_t */ +#else +#include /* for size_t */ +#endif +#undef __need_size_t + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +/* #undef _LONG_LONG_LIMB */ +#define __GMP_LIBGMP_DLL 0 +#endif + +/* #if defined(__GMP_WITHIN_CONFIGURE) && defined(_WIN64) */ +#ifdef __WIN64 +#define _LONG_LONG_LIMB 1 +#endif + +/* __STDC__ - some ANSI compilers define this only to 0, hence the use of + "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 + sets __STDC__ to 0, but requires "##" for token pasting. + + _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but + don't always define __STDC__. + + __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI, + but don't define __STDC__ in their default mode. Don't know if old + versions might have been K&R, but let's not worry about that unless + someone is still using one. + + _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 + mode, but doesn't define __STDC__. + + _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za + option is given (in which case it's 1). + + _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that + all w32 compilers are ansi. + + Note: This same set of tests is used by gen-psqr.c and + demos/expr/expr-impl.h, so if anything needs adding, then be sure to + update those too. */ + +#if defined (__STDC__) \ + || defined (__cplusplus) \ + || defined (_AIX) \ + || defined (__DECC) \ + || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ + || defined (_MSC_VER) \ + || defined (_WIN32) +#define __GMP_HAVE_CONST 1 +#define __GMP_HAVE_PROTOTYPES 1 +#define __GMP_HAVE_TOKEN_PASTE 1 +#else +#define __GMP_HAVE_CONST 0 +#define __GMP_HAVE_PROTOTYPES 0 +#define __GMP_HAVE_TOKEN_PASTE 0 +#endif + + +#if __GMP_HAVE_CONST +#define __gmp_const const +#define __gmp_signed signed +#else +#define __gmp_const +#define __gmp_signed +#endif + + +/* __GMP_DECLSPEC supports Windows DLL versions of libmpir, and is empty in + all other circumstances. + + When compiling objects for libmpir, __GMP_DECLSPEC is an export directive, + or when compiling for an application it's an import directive. The two + cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles + (and not defined from an application). + + __GMP_DECLSPEC_XX is similarly used for libmpirxx. __GMP_WITHIN_GMPXX + indicates when building libmpirxx, and in that case libmpirxx functions are + exports, but libmpir functions which might get called are imports. + + libmp.la uses __GMP_DECLSPEC, just as if it were libmpir.la. libmpir and + libmp don't call each other, so there's no conflict or confusion. + + Libtool DLL_EXPORT define is not used. + + There's no attempt to support GMP built both static and DLL. Doing so + would mean applications would have to tell us which of the two is going + to be used when linking, and that seems very tedious and error prone if + using GMP by hand, and equally tedious from a package since autoconf and + automake don't give much help. + + __GMP_DECLSPEC is required on all documented global functions and + variables, the various internals in gmp-impl.h etc can be left unadorned. + But internals used by the test programs or speed measuring programs + should have __GMP_DECLSPEC, and certainly constants or variables must + have it or the wrong address will be resolved. + + In gcc __declspec can go at either the start or end of a prototype. + + In Microsoft C __declspec must go at the start, or after the type like + void __declspec(...) *foo()". There's no __dllexport or anything to + guard against someone foolish #defining dllexport. _export used to be + available, but no longer. + + In Borland C _export still exists, but needs to go after the type, like + "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to + make use of that. Probably more trouble than it's worth. */ + +#if defined (__GNUC__) +#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) +#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) +#endif +#if defined (_MSC_VER) || defined (__BORLANDC__) +#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) +#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) +#endif +#ifdef __WATCOMC__ +#define __GMP_DECLSPEC_EXPORT __export +#define __GMP_DECLSPEC_IMPORT __import +#endif +#ifdef __IBMC__ +#define __GMP_DECLSPEC_EXPORT _Export +#define __GMP_DECLSPEC_IMPORT _Import +#endif + +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMP +/* compiling to go into a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into an application which will link to a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC +#endif + + +#ifdef __GMP_SHORT_LIMB +typedef unsigned int mp_limb_t; +typedef int mp_limb_signed_t; +#else +#ifdef _LONG_LONG_LIMB +typedef unsigned long long int mp_limb_t; +typedef long long int mp_limb_signed_t; +#else +typedef unsigned long int mp_limb_t; +typedef long int mp_limb_signed_t; +#endif +#endif + +#ifdef _WIN64 +#define BITS_PER_UI BITS_PER_MP_LIMB +typedef mp_limb_t mpir_ui; +typedef mp_limb_signed_t mpir_si; +typedef mpir_ui mp_bitcnt_t; +#else +#define BITS_PER_UI BITS_PER_ULONG +typedef unsigned long mpir_ui; +typedef long mpir_si; +typedef mpir_ui mp_bitcnt_t; +#endif +#define GMP_UI_MAX ((mpir_ui)(~(mpir_ui)0)) +#define GMP_UI_HIBIT (GMP_UI_MAX ^ (GMP_UI_MAX >> 1)) +#define GMP_SI_MAX ((mpir_si)(GMP_UI_MAX ^ GMP_UI_HIBIT)) +#define GMP_SI_MIN ((mpir_si)GMP_UI_HIBIT) +#define __GMP_BITCNT_MAX (~(mp_bitcnt_t)0) + +/* For reference, note that the name __mpz_struct gets into C++ mangled + function names, which means although the "__" suggests an internal, we + must leave this name for binary compatibility. */ +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +#endif /* __GNU_MP__ */ + +typedef __mpz_struct mpz_t[1]; + +typedef mp_limb_t * mp_ptr; +typedef __gmp_const mp_limb_t * mp_srcptr; +#if defined( _WIN64) +#define __GMP_MP_SIZE_T_INT 0 +typedef long long int mp_size_t; +typedef long int mp_exp_t; +#else +#define __GMP_MP_SIZE_T_INT 0 +typedef long int mp_size_t; +typedef long int mp_exp_t; +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct mpq_t[1]; + +typedef struct +{ + int _mp_prec; /* Max precision, in number of `mp_limb_t's. + Set by mpf_init and modified by + mpf_set_prec. The area pointed to by the + _mp_d field contains `prec' + 1 limbs. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpf_struct; + +typedef __mpf_struct mpf_t[1]; + +/* Available random number generation algorithms. */ +typedef enum +{ + GMP_RAND_ALG_DEFAULT = 0, + GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ +} gmp_randalg_t; + +/* Random state struct. */ +typedef struct +{ + mpz_t _mp_seed; /* _mp_d member points to state of the generator. */ + gmp_randalg_t _mp_alg; /* Currently unused. */ + union { + void *_mp_lc; /* Pointer to function pointers structure. */ + } _mp_algdata; +} __gmp_randstate_struct; +typedef __gmp_randstate_struct gmp_randstate_t[1]; + +/* Types for function declarations in gmp files. */ +/* ??? Should not pollute user name space with these ??? */ +typedef __gmp_const __mpz_struct *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __gmp_const __mpf_struct *mpf_srcptr; +typedef __mpf_struct *mpf_ptr; +typedef __gmp_const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; + + +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMPXX +/* compiling to go into a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into a application which will link to a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC_XX +#endif + + +#if __GMP_HAVE_PROTOTYPES +#define __GMP_PROTO(x) x +#else +#define __GMP_PROTO(x) () +#endif + +#ifndef __MPN +#if __GMP_HAVE_TOKEN_PASTE +#define __MPN(x) __gmpn_##x +#else +#define __MPN(x) __gmpn_/**/x +#endif +#endif + +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ +#define _GMP_H_HAVE_FILE 1 +#endif + +/* In ISO C, if a prototype involving "struct obstack *" is given without + that structure defined, then the struct is scoped down to just the + prototype, causing a conflict if it's subsequently defined for real. So + only give prototypes if we've got obstack.h. */ +#if defined (_OBSTACK_H) /* glibc */ +#define _GMP_H_HAVE_OBSTACK 1 +#endif + +/* The prototypes for gmp_vprintf etc are provided only if va_list is + available, via an application having included or . + Usually va_list is a typedef so can't be tested directly, but C99 + specifies that va_start is a macro (and it was normally a macro on past + systems too), so look for that. + + will define some sort of va_list for vprintf and vfprintf, but + let's not bother trying to use that since it's not standard and since + application uses for gmp_vprintf etc will almost certainly require the + whole or anyway. */ + +#ifdef va_start +#define _GMP_H_HAVE_VA_LIST 1 +#endif + +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GMP_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GMP_GNUC_PREREQ(maj, min) 0 +#endif + +/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically + it means a function does nothing but examine its arguments and memory + (global or via arguments) to generate a return value, but changes nothing + and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets + tune/common.c etc turn this off when trying to write timing loops. */ +#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE) +#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +#define __GMP_ATTRIBUTE_PURE +#endif + + +/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean + to "g++ -Wold-style-cast". + + Casts in "extern inline" code within an extern "C" block don't induce + these warnings, so __GMP_CAST only needs to be used on documented + macros. */ + +#ifdef __cplusplus +#define __GMP_CAST(type, expr) (static_cast (expr)) +#else +#define __GMP_CAST(type, expr) ((type) (expr)) +#endif + + +/* An empty "throw ()" means the function doesn't throw any C++ exceptions, + this can save some stack frame info in applications. + + Currently it's given only on functions which never divide-by-zero etc, + don't allocate memory, and are expected to never need to allocate memory. + This leaves open the possibility of a C++ throw from a future GMP + exceptions scheme. + + mpz_set_ui etc are omitted to leave open the lazy allocation scheme + described in doc/tasks.html. mpz_get_d etc are omitted to leave open + exceptions for float overflows. + + Note that __GMP_NOTHROW must be given on any inlines the same as on their + prototypes (for g++ at least, where they're used together). Note also + that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like + __GMP_ATTRIBUTE_PURE. */ + +#if defined (__cplusplus) +#define __GMP_NOTHROW throw () +#else +#define __GMP_NOTHROW +#endif + +/* PORTME: What other compilers have a useful "extern inline"? "static + inline" would be an acceptable substitute if the compiler (or linker) + discards unused statics. */ + +/* gcc has __inline__ in all modes, including strict ansi. Give a prototype + for an inline too, so as to correctly specify "dllimport" on windows, in + case the function is called rather than inlined. */ + +#ifdef __GNUC__ +#if defined(__APPLE_CC__) && (__APPLE_CC__ != 1) /* FSF GCC sets this flag to 1 on Apple machines */ + +#if ! (__APPLE_CC__ >= 5465 && __STDC_VERSION__ >= 199901L) +#define __GMP_EXTERN_INLINE extern __inline__ +#define __GMP_INLINE_PROTOTYPES 1 +#endif + +#else /*GNU CC*/ + +#if defined(__GNUC_STDC_INLINE__) || defined (__GNUC_GNU_INLINE__) +#define __GMP_EXTERN_INLINE extern __inline__ __attribute__((__gnu_inline__)) +#else +#define __GMP_EXTERN_INLINE extern __inline__ +#endif +#define __GMP_INLINE_PROTOTYPES 1 + +#endif +#endif + +/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1 + strict ANSI mode. Inlining is done even when not optimizing (ie. -O0 + mode, which is the default), but an unnecessary local copy of foo is + emitted unless -O is used. "extern __inline" is accepted, but the + "extern" appears to be ignored, ie. it becomes a plain global function + but which is inlined within its file. Don't know if all old versions of + DEC C supported __inline, but as a start let's do the right thing for + current versions. */ +#ifdef __DECC +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict + ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes + place under -O. Without -O "foo" seems to be emitted whether it's used + or not, which is wasteful. "extern inline foo()" isn't useful, the + "extern" is apparently ignored, so foo is inlined if possible but also + emitted as a global, which causes multiple definition errors when + building a shared libmpir. */ +#ifdef __SCO_VERSION__ +#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif +#endif + +#if defined _MSC_VER +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* C++ always has "inline" and since it's a normal feature the linker should + discard duplicate non-inlined copies, or if it doesn't then that's a + problem for everyone, not just GMP. */ +#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Don't do any inlining within a configure run, since if the compiler ends + up emitting copies of the code into the object file it can end up + demanding the various support routines (like mpn_popcount) for linking, + making the "alloca" test and perhaps others fail. And on hppa ia64 a + pre-release gcc 3.2 was seen not respecting the "extern" in "extern + __inline__", triggering this problem too. */ +#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE +#undef __GMP_EXTERN_INLINE +#endif + +/* By default, don't give a prototype when there's going to be an inline + version. Note in particular that Cray C++ objects to the combination of + prototype and inline. */ +#ifdef __GMP_EXTERN_INLINE +#ifndef __GMP_INLINE_PROTOTYPES +#define __GMP_INLINE_PROTOTYPES 0 +#endif +#else +#define __GMP_INLINE_PROTOTYPES 1 +#endif + + +#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) + +/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted + to int by "~". */ +#define __GMP_UINT_MAX (~ (unsigned) 0) +#define __GMP_ULONG_MAX (~ (unsigned long) 0) +#define __GMP_USHRT_MAX ((unsigned short) ~0) + + +/* __builtin_expect is in gcc 3.0, and not in 2.95. */ +#if __GMP_GNUC_PREREQ (3,0) +#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1) +#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0) +#else +#define __GMP_LIKELY(cond) (cond) +#define __GMP_UNLIKELY(cond) (cond) +#endif + +/* Allow direct user access to numerator and denominator of a mpq_t object. */ +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + + +#if defined (__cplusplus) +extern "C" { +using std::FILE; +#endif + +#define mp_set_memory_functions __gmp_set_memory_functions +__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t))) __GMP_NOTHROW; + +#define mp_get_memory_functions __gmp_get_memory_functions +__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t))) __GMP_NOTHROW; + +#define mp_bits_per_limb __gmp_bits_per_limb +__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb; + +#define gmp_errno __gmp_errno +__GMP_DECLSPEC extern int gmp_errno; + +#define gmp_version __gmp_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; + +#define mpir_version __mpir_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const mpir_version; + + +/**************** Random number routines. ****************/ + +#define gmp_randinit_default __gmp_randinit_default +__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp +__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t, + mpz_srcptr, mpir_ui, + mp_bitcnt_t)); + +#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size +__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t)); + +#define gmp_randinit_mt __gmp_randinit_mt +__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_set __gmp_randinit_set +__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *)); + +#define gmp_randseed __gmp_randseed +__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr)); + +#define gmp_randseed_ui __gmp_randseed_ui +__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, mpir_ui)); + +#define gmp_randclear __gmp_randclear +__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_urandomb_ui __gmp_urandomb_ui +__GMP_DECLSPEC mpir_ui gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, mpir_ui)); + +#define gmp_urandomm_ui __gmp_urandomm_ui +__GMP_DECLSPEC mpir_ui gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, mpir_ui)); + + +/**************** Formatted output routines. ****************/ + +#define gmp_asprintf __gmp_asprintf +__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...)); + +#define gmp_fprintf __gmp_fprintf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_printf __gmp_obstack_printf +#if defined (_GMP_H_HAVE_OBSTACK) +__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_vprintf __gmp_obstack_vprintf +#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list)); +#endif + +#define gmp_printf __gmp_printf +__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_snprintf __gmp_snprintf +__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...)); + +#define gmp_sprintf __gmp_sprintf +__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...)); + +#define gmp_vasprintf __gmp_vasprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list)); +#endif + +#define gmp_vfprintf __gmp_vfprintf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vprintf __gmp_vprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsnprintf __gmp_vsnprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list)); +#endif + +#define gmp_vsprintf __gmp_vsprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list)); +#endif + + +/**************** Formatted input routines. ****************/ + +#define gmp_fscanf __gmp_fscanf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_scanf __gmp_scanf +__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_sscanf __gmp_sscanf +__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...)); + +#define gmp_vfscanf __gmp_vfscanf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vscanf __gmp_vscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsscanf __gmp_vsscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list)); +#endif + + +/**************** Integer (i.e. Z) routines. ****************/ + +#define _mpz_realloc __gmpz_realloc +#define mpz_realloc __gmpz_realloc +__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t)); + +#define mpz_abs __gmpz_abs +#define __GMP_MPZ_ABS_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs) +__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define __GMP_MPZ_ADD_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_add __gmpz_add +__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_ADD_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS)+1) +#define mpz_add_ui __gmpz_add_ui +__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_addmul __gmpz_addmul +__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_addmul_ui __gmpz_addmul_ui +__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_and __gmpz_and +__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_array_init __gmpz_array_init +__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t)); + +#define mpz_bin_ui __gmpz_bin_ui +__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_bin_uiui __gmpz_bin_uiui +__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, mpir_ui, mpir_ui)); + +#define mpz_cdiv_q __gmpz_cdiv_q +__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp +__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_cdiv_qr __gmpz_cdiv_qr +__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_cdiv_r __gmpz_cdiv_r +__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp +__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_cdiv_ui __gmpz_cdiv_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_clear __gmpz_clear +__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr)); + +#define mpz_clears __gmpz_clears +__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_clrbit __gmpz_clrbit +__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_cmp __gmpz_cmp +__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmp_d __gmpz_cmp_d +__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_si __gmpz_cmp_si +__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, mpir_si)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_ui __gmpz_cmp_ui +__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs __gmpz_cmpabs +__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_d __gmpz_cmpabs_d +__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_ui __gmpz_cmpabs_ui +__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_com __gmpz_com +__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_combit __gmpz_combit +__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_congruent_p __gmpz_congruent_p +__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p +__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_ui_p __gmpz_congruent_ui_p +__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, mpir_ui, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divexact __gmpz_divexact +__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_divexact_ui __gmpz_divexact_ui +__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_divisible_p __gmpz_divisible_p +__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_ui_p __gmpz_divisible_ui_p +__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p +__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_dump __gmpz_dump +__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr)); + +#define mpz_export __gmpz_export +__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr)); + +#define mpz_fac_ui __gmpz_fac_ui +__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_fdiv_q __gmpz_fdiv_q +__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp +__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_fdiv_qr __gmpz_fdiv_qr +__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_fdiv_r __gmpz_fdiv_r +__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp +__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_fdiv_ui __gmpz_fdiv_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_fib_ui __gmpz_fib_ui +__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_fib2_ui __gmpz_fib2_ui +__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpir_ui)); + +#define mpz_fits_sint_p __gmpz_fits_sint_p +__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_si_p __gmpz_fits_si_p +__GMP_DECLSPEC int mpz_fits_si_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_slong_p __gmpz_fits_slong_p +__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_sshort_p __gmpz_fits_sshort_p +__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_uint_p __gmpz_fits_uint_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ui_p __gmpz_fits_ui_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ui_p) +__GMP_DECLSPEC int mpz_fits_ui_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ulong_p __gmpz_fits_ulong_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ushort_p __gmpz_fits_ushort_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_gcd __gmpz_gcd +__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_gcd_ui __gmpz_gcd_ui +__GMP_DECLSPEC mpir_ui mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_gcdext __gmpz_gcdext +__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_get_d __gmpz_get_d +__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_get_d_2exp __gmpz_get_d_2exp +__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((mpir_si *, mpz_srcptr)); + +#define mpz_get_si __gmpz_get_si +__GMP_DECLSPEC /* signed */ mpir_si mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_get_str __gmpz_get_str +__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr)); + +#define mpz_get_ui __gmpz_get_ui +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui) +__GMP_DECLSPEC mpir_ui mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_getlimbn __gmpz_getlimbn +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn) +__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_hamdist __gmpz_hamdist +__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_import __gmpz_import +__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *)); + +#define mpz_init __gmpz_init +__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr)); + +#define mpz_init2 __gmpz_init2 +__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_inits __gmpz_inits +__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_init_set __gmpz_init_set +__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_init_set_d __gmpz_init_set_d +__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_init_set_si __gmpz_init_set_si +__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, mpir_si)); + +#define mpz_init_set_str __gmpz_init_set_str +__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define mpz_init_set_ui __gmpz_init_set_ui +__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_inp_raw __gmpz_inp_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *)); +#endif + +#define mpz_inp_str __gmpz_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int)); +#endif + +#define mpz_invert __gmpz_invert +__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_ior __gmpz_ior +__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_jacobi __gmpz_jacobi +__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker mpz_jacobi /* alias */ + +#define mpz_kronecker_si __gmpz_kronecker_si +__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, mpir_si)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker_ui __gmpz_kronecker_ui +__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_si_kronecker __gmpz_si_kronecker +__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((mpir_si, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_kronecker __gmpz_ui_kronecker +__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((mpir_ui, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_lcm __gmpz_lcm +__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_lcm_ui __gmpz_lcm_ui +__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_legendre mpz_jacobi /* alias */ + +#define mpz_lucnum_ui __gmpz_lucnum_ui +__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_lucnum2_ui __gmpz_lucnum2_ui +__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpir_ui)); + +#define mpz_millerrabin __gmpz_millerrabin +__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_miller_rabin __gmpz_miller_rabin +__GMP_DECLSPEC int mpz_miller_rabin __GMP_PROTO ((mpz_srcptr, int, gmp_randstate_t)) __GMP_ATTRIBUTE_PURE; + +#define mpz_mod __gmpz_mod +__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */ + +#define __GMP_MPZ_MUL_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+__GMP_ABS(z->_mp_size)+1) +#define mpz_mul __gmpz_mul +__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mul_2exp __gmpz_mul_2exp +__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define __GMP_MPZ_MUL_SI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS+1) +#define mpz_mul_si __gmpz_mul_si +__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_si)); + +#define __GMP_MPZ_MUL_UI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS+1) +#define mpz_mul_ui __gmpz_mul_ui +__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_neg __gmpz_neg +#define __GMP_MPZ_NEG_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg) +__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define mpz_nextprime __gmpz_nextprime +__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_next_likely_prime __gmpz_next_likely_prime +__GMP_DECLSPEC void mpz_next_likely_prime __GMP_PROTO ((mpz_ptr, mpz_srcptr, gmp_randstate_t)); + +#define mpz_out_raw __gmpz_out_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr)); +#endif + +#define mpz_out_str __gmpz_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr)); +#endif + +#define mpz_perfect_power_p __gmpz_perfect_power_p +__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_perfect_square_p __gmpz_perfect_square_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_popcount __gmpz_popcount +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount) +__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_pow_ui __gmpz_pow_ui +__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_powm __gmpz_powm +__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_powm_ui __gmpz_powm_ui +__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui, mpz_srcptr)); + +#define mpz_probab_prime_p __gmpz_probab_prime_p +__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_probable_prime_p __gmpz_probable_prime_p +__GMP_DECLSPEC int mpz_probable_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, int, mpir_ui)); + +#define mpz_likely_prime_p __gmpz_likely_prime_p +__GMP_DECLSPEC int mpz_likely_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, mpir_ui)); + +#define mpz_realloc2 __gmpz_realloc2 +__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_remove __gmpz_remove +__GMP_DECLSPEC mp_bitcnt_t mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_root __gmpz_root +__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_nthroot __gmpz_nthroot +__GMP_DECLSPEC void mpz_nthroot __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_rootrem __gmpz_rootrem +__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_rrandomb __gmpz_rrandomb +__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_scan0 __gmpz_scan0 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_scan1 __gmpz_scan1 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define __GMP_MPZ_SET_MIN_ALLOC(x,y) __GMP_ABS(y->_mp_size) +#define mpz_set __gmpz_set +__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_set_d __gmpz_set_d +__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_set_f __gmpz_set_f +__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr)); + +#define mpz_set_q __gmpz_set_q +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q) +__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr)); +#endif + +#define __GMP_MPZ_SET_SI_MIN_ALLOC(x,y) (1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS) +#define mpz_set_si __gmpz_set_si +__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, mpir_si)); + +#define mpz_set_str __gmpz_set_str +__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define __GMP_MPZ_SET_UI_MIN_ALLOC(x,y) (1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS) +#define mpz_set_ui __gmpz_set_ui +__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_setbit __gmpz_setbit +__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_size __gmpz_size +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size) +__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_sizeinbase __gmpz_sizeinbase +__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_sqrt __gmpz_sqrt +__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_sqrtrem __gmpz_sqrtrem +__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_sub __gmpz_sub +__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS)+1) +#define mpz_sub_ui __gmpz_sub_ui +__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define __GMP_MPZ_UI_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(z->_mp_size),1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS)+1) +#define mpz_ui_sub __gmpz_ui_sub +__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, mpir_ui, mpz_srcptr)); + +#define mpz_submul __gmpz_submul +__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_submul_ui __gmpz_submul_ui +__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_swap __gmpz_swap +__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW; + +#define mpz_tdiv_ui __gmpz_tdiv_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_tdiv_q __gmpz_tdiv_q +__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp +__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_tdiv_qr __gmpz_tdiv_qr +__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_tdiv_r __gmpz_tdiv_r +__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp +__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_tstbit __gmpz_tstbit +__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_pow_ui __gmpz_ui_pow_ui +__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, mpir_ui, mpir_ui)); + +#define mpz_urandomb __gmpz_urandomb +__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_urandomm __gmpz_urandomm +__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); + +#define mpz_xor __gmpz_xor +#define mpz_eor __gmpz_xor +__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + + +/****** Integer (i.e. Z) routines for intmaax_t/uintmax_t types ******/ + +#if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT ) + +#define __GMP_BITS_PER_UINTMAX (8*sizeof(uintmax_t)) + +#define mpz_get_ux __gmpz_get_ux +__GMP_DECLSPEC uintmax_t mpz_get_ux __GMP_PROTO ((mpz_srcptr)); + +#define mpz_get_sx __gmpz_get_sx +__GMP_DECLSPEC intmax_t mpz_get_sx __GMP_PROTO ((mpz_srcptr)); + +#define mpz_set_ux __gmpz_set_ux +__GMP_DECLSPEC void mpz_set_ux __GMP_PROTO ((mpz_ptr, uintmax_t)); + +#define mpz_set_sx __gmpz_set_sx +__GMP_DECLSPEC void mpz_set_sx __GMP_PROTO ((mpz_ptr, intmax_t)); + +#define mpz_init_set_ux __gmpz_init_set_ux +__GMP_DECLSPEC void mpz_init_set_ux __GMP_PROTO ((mpz_ptr, uintmax_t)); + +#define mpz_init_set_sx __gmpz_init_set_sx +__GMP_DECLSPEC void mpz_init_set_sx __GMP_PROTO ((mpz_ptr, intmax_t)); + +#endif + + +/**************** Rational (i.e. Q) routines. ****************/ + +#define mpq_abs __gmpq_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs) +__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_add __gmpq_add +__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_canonicalize __gmpq_canonicalize +__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr)); + +#define mpq_clear __gmpq_clear +__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr)); + +#define mpq_clears __gmpq_clears +__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_cmp __gmpq_cmp +__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_si __gmpq_cmp_si +__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, mpir_si, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_ui __gmpq_cmp_ui +__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, mpir_ui, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpq_div __gmpq_div +__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_div_2exp __gmpq_div_2exp +__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_equal __gmpq_equal +__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpq_get_num __gmpq_get_num +__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_den __gmpq_get_den +__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_d __gmpq_get_d +__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpq_get_str __gmpq_get_str +__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr)); + +#define mpq_init __gmpq_init +__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr)); + +#define mpq_inits __gmpq_inits +__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_inp_str __gmpq_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int)); +#endif + +#define mpq_inv __gmpq_inv +__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_mul __gmpq_mul +__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_mul_2exp __gmpq_mul_2exp +__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_neg __gmpq_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg) +__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_out_str __gmpq_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr)); +#endif + +#define mpq_set __gmpq_set +__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_set_d __gmpq_set_d +__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double)); + +#define mpq_set_den __gmpq_set_den +__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_f __gmpq_set_f +__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr)); + +#define mpq_set_num __gmpq_set_num +__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_si __gmpq_set_si +__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, mpir_si, mpir_ui)); + +#define mpq_set_str __gmpq_set_str +__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int)); + +#define mpq_set_ui __gmpq_set_ui +__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, mpir_ui, mpir_ui)); + +#define mpq_set_z __gmpq_set_z +__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_sub __gmpq_sub +__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_swap __gmpq_swap +__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW; + + +/**************** Float (i.e. F) routines. ****************/ + +#define mpf_abs __gmpf_abs +__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_add __gmpf_add +__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_add_ui __gmpf_add_ui +__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); +#define mpf_ceil __gmpf_ceil +__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_clear __gmpf_clear +__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr)); + +#define mpf_clears __gmpf_clears +__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_cmp __gmpf_cmp +__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_d __gmpf_cmp_d +__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_si __gmpf_cmp_si +__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, mpir_si)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_ui __gmpf_cmp_ui +__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, mpir_ui)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_div __gmpf_div +__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_div_2exp __gmpf_div_2exp +__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_div_ui __gmpf_div_ui +__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_dump __gmpf_dump +__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr)); + +#define mpf_eq __gmpf_eq +__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sint_p __gmpf_fits_sint_p +__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_si_p __gmpf_fits_si_p +__GMP_DECLSPEC int mpf_fits_si_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_slong_p __gmpf_fits_slong_p +__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sshort_p __gmpf_fits_sshort_p +__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_uint_p __gmpf_fits_uint_p +__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ui_p __gmpf_fits_ui_p +__GMP_DECLSPEC int mpf_fits_ui_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ulong_p __gmpf_fits_ulong_p +__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ushort_p __gmpf_fits_ushort_p +__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_floor __gmpf_floor +__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_get_d __gmpf_get_d +__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpf_get_d_2exp __gmpf_get_d_2exp +__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((mpir_si *, mpf_srcptr)); + +#define mpf_get_default_prec __gmpf_get_default_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_prec __gmpf_get_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_si __gmpf_get_si +__GMP_DECLSPEC mpir_si mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_str __gmpf_get_str +__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); + +#define mpf_get_ui __gmpf_get_ui +__GMP_DECLSPEC mpir_ui mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_init __gmpf_init +__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr)); + +#define mpf_init2 __gmpf_init2 +__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_inits __gmpf_inits +__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_init_set __gmpf_init_set +__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_init_set_d __gmpf_init_set_d +__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_init_set_si __gmpf_init_set_si +__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, mpir_si)); + +#define mpf_init_set_str __gmpf_init_set_str +__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_init_set_ui __gmpf_init_set_ui +__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, mpir_ui)); + +#define mpf_inp_str __gmpf_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int)); +#endif + +#define mpf_integer_p __gmpf_integer_p +__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_mul __gmpf_mul +__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_mul_2exp __gmpf_mul_2exp +__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_mul_ui __gmpf_mul_ui +__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_neg __gmpf_neg +__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_out_str __gmpf_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr)); +#endif + +#define mpf_pow_ui __gmpf_pow_ui +__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_random2 __gmpf_random2 +__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); + +#define mpf_rrandomb __gmpf_rrandomb +__GMP_DECLSPEC void mpf_rrandomb __GMP_PROTO ((mpf_ptr, gmp_randstate_t, mp_size_t, mp_exp_t)); + +#define mpf_reldiff __gmpf_reldiff +__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_set __gmpf_set +__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_set_d __gmpf_set_d +__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_set_default_prec __gmpf_set_default_prec +__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_prec __gmpf_set_prec +__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_set_prec_raw __gmpf_set_prec_raw +__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_q __gmpf_set_q +__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr)); + +#define mpf_set_si __gmpf_set_si +__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, mpir_si)); + +#define mpf_set_str __gmpf_set_str +__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_set_ui __gmpf_set_ui +__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, mpir_ui)); + +#define mpf_set_z __gmpf_set_z +__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr)); + +#define mpf_size __gmpf_size +__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_sqrt __gmpf_sqrt +__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_sqrt_ui __gmpf_sqrt_ui +__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, mpir_ui)); + +#define mpf_sub __gmpf_sub +__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_sub_ui __gmpf_sub_ui +__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_swap __gmpf_swap +__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW; + +#define mpf_trunc __gmpf_trunc +__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_ui_div __gmpf_ui_div +__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, mpir_ui, mpf_srcptr)); + +#define mpf_ui_sub __gmpf_ui_sub +__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, mpir_ui, mpf_srcptr)); + +#define mpf_urandomb __gmpf_urandomb +__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t)); + + +/************ Low level positive-integer (i.e. N) routines. ************/ + +/* This is ugly, but we need to make user calls reach the prefixed function. */ + +#define mpn_add __MPN(add) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add) +__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_add_1 __MPN(add_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1) +__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_add_n __MPN(add_n) +__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_addmul_1 __MPN(addmul_1) +__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_bdivmod __MPN(bdivmod) +__GMP_DECLSPEC mp_limb_t mpn_bdivmod __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mpir_ui)); + +#define mpn_divrem __MPN(divrem) +__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mulmod_Bexpp1 __MPN(mulmod_Bexpp1) +__GMP_DECLSPEC int mpn_mulmod_Bexpp1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_ptr)); + +#define mpn_mulmod_2expp1 __MPN(mulmod_2expp1_basecase) +__GMP_DECLSPEC int mpn_mulmod_2expp1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr,int,mpir_ui, mp_ptr)); + +#define mpn_mulmod_2expm1 __MPN(mulmod_2expm1) +__GMP_DECLSPEC void mpn_mulmod_2expm1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_ptr, mpir_ui, mp_ptr)); + +#define mpn_cmp __MPN(cmp) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp) +__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_redc_1 __MPN(redc_1) +__GMP_DECLSPEC void mpn_redc_1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);) + +#define mpn_redc_2 __MPN(redc_2) +__GMP_DECLSPEC void mpn_redc_2 __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr)); +#define mpn_redc_n __MPN(redc_n) +__GMP_DECLSPEC void mpn_redc_n __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr)); + +#define mpn_divexact_by3(dst,src,size) \ + mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0)) + +#define mpn_divexact_by3c __MPN(divexact_by3c) +__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divmod_1(qp,np,nsize,dlimb) \ + mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb) + +#define mpn_divrem_1 __MPN(divrem_1) +__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divrem_2 __MPN(divrem_2) +__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); + +#define mpn_invert __MPN(invert) +__GMP_DECLSPEC void mpn_invert __GMP_PROTO ((mp_ptr xp, mp_srcptr ap, mp_size_t n)); + +#define mpn_sb_divappr_q __MPN(sb_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dip)); + +#define mpn_dc_divappr_q_n __MPN(dc_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dip, mp_ptr tp)); + +#define mpn_dc_bdiv_q_n __MPN(dc_bdiv_q_n) +__GMP_DECLSPEC void mpn_dc_bdiv_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr scratch)); + +#define mpn_inv_divappr_q_n __MPN(inv_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_srcptr dip)); + +#define mpn_dc_divappr_q __MPN(dc_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv)); + +#define mpn_dc_div_q __MPN(dc_div_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_inv_divappr_q __MPN(inv_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_srcptr dinv)); + +#define mpn_inv_div_q __MPN(inv_div_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr __MPN(inv_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr_n __MPN(inv_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_dc_div_qr __MPN(dc_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_div_qr_n __MPN(dc_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_q __MPN(sb_div_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_q __MPN(sb_bdiv_q) +__GMP_DECLSPEC void mpn_sb_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_q __MPN(dc_bdiv_q) +__GMP_DECLSPEC void mpn_dc_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr __MPN(dc_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr_n __MPN(dc_bdiv_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t n, mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_qr __MPN(sb_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_qr __MPN(sb_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_tdiv_q __MPN(tdiv_q) +__GMP_DECLSPEC void mpn_tdiv_q __GMP_PROTO ((mp_ptr qp, mp_srcptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn)); + +#define mpn_divexact __MPN(divexact) +__GMP_DECLSPEC void mpn_divexact __GMP_PROTO ((mp_ptr qp, + mp_srcptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn)); + +#define mpn_gcd __MPN(gcd) +__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_gcd_1 __MPN(gcd_1) +__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcdext_1 __MPN(gcdext_1) +__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 __GMP_PROTO ((mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t)); + +#define mpn_gcdext __MPN(gcdext) +__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_get_str __MPN(get_str) +__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); + +#define mpn_hamdist __MPN(hamdist) +__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_lshift __MPN(lshift) +__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_mod_1 __MPN(mod_1) +__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_mul __MPN(mul) +__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mul_1 __MPN(mul_1) +__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_mul_n __MPN(mul_n) +__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_sqr __MPN(sqr) +__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_neg_n __MPN(neg_n) +#define mpn_neg __MPN(neg_n) +__GMP_DECLSPEC mp_limb_t mpn_neg_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_com_n __MPN(com_n) +#define mpn_com __MPN(com_n) +__GMP_DECLSPEC void mpn_com_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_perfect_square_p __MPN(perfect_square_p) +__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_popcount __MPN(popcount) +__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_pow_1 __MPN(pow_1) +__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr)); + +/* undocumented now, but retained here for upward compatibility */ +#define mpn_preinv_mod_1 __MPN(preinv_mod_1) +__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_random __MPN(random) +__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_random2 __MPN(random2) +__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_urandomb __MPN(urandomb) +__GMP_DECLSPEC void mpn_urandomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, mpir_ui)); + +#define mpn_urandomm __MPN(urandomm) +__GMP_DECLSPEC void mpn_urandomm __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_srcptr, mp_size_t)); + +#define mpn_randomb __MPN(randomb) +__GMP_DECLSPEC void mpn_randomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rrandom __MPN(rrandom) +__GMP_DECLSPEC void mpn_rrandom __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rshift __MPN(rshift) +__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_scan0 __MPN(scan0) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_scan1 __MPN(scan1) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_set_str __MPN(set_str) +__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); + +#define mpn_sqrtrem __MPN(sqrtrem) +__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_sub __MPN(sub) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub) +__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_sub_1 __MPN(sub_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_sub_n __MPN(sub_n) +__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_submul_1 __MPN(submul_1) +__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_tdiv_qr __MPN(tdiv_qr) +__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_and_n __MPN(and_n) +__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_andn_n __MPN(andn_n) +__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nand_n __MPN(nand_n) +__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_ior_n __MPN(ior_n) +__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_iorn_n __MPN(iorn_n) +__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nior_n __MPN(nior_n) +__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xor_n __MPN(xor_n) +__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xnor_n __MPN(xnor_n) +__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_copyi __MPN(copyi) +__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_copyd __MPN(copyd) +__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_zero __MPN(zero) +__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t)); + +#ifndef mpn_sumdiff_n /* if not done with cpuvec in a fat binary of in gmp-impl.h*/ +#define mpn_sumdiff_n __MPN(sumdiff_n) +__GMP_DECLSPEC mp_limb_t mpn_sumdiff_n __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#endif + +/**************** MPN API for FFT ****************/ + +#define mpn_mul_fft_main __MPN(mul_fft_main) +__GMP_DECLSPEC void mpn_mul_fft_main __GMP_PROTO ((mp_ptr r1, mp_srcptr i1, mp_size_t n1, mp_srcptr i2, mp_size_t n2)); + +/**************** mpz inlines ****************/ + +/* The following are provided as inlines where possible, but always exist as + library functions too, for binary compatibility. + + Within gmp itself this inlining generally isn't relied on, since it + doesn't get done for all compilers, whereas if something is worth + inlining then it's worth arranging always. + + There are two styles of inlining here. When the same bit of code is + wanted for the inline as for the library version, then __GMP_FORCE_foo + arranges for that code to be emitted and the __GMP_EXTERN_INLINE + directive suppressed, eg. mpz_fits_uint_p. When a different bit of code + is wanted for the inline than for the library version, then + __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs) +__GMP_EXTERN_INLINE void +mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); +} +#endif + +#if GMP_NAIL_BITS == 0 +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); +#else +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ + || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p) +#if ! defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ui_p) +#if ! defined (__GMP_FORCE_mpz_fits_ui_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ui_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, GMP_UI_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p) +#if ! defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p) +#if ! defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui) +#if ! defined (__GMP_FORCE_mpz_get_ui) +__GMP_EXTERN_INLINE +#endif +mpir_ui +mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + mp_ptr __gmp_p = __gmp_z->_mp_d; + mp_size_t __gmp_n = __gmp_z->_mp_size; + mp_limb_t __gmp_l = __gmp_p[0]; + /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings + about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland + C++ 6.0 warnings about condition always true for something like + "__GMP_ULONG_MAX < GMP_NUMB_MASK". */ +#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB) + /* limb==long and no nails, or limb==longlong, one limb is enough */ + return (mpir_ui)(__gmp_n != 0 ? __gmp_l : 0); +#else + /* limb==long and nails, need two limbs when available */ + __gmp_n = __GMP_ABS (__gmp_n); + if (__gmp_n <= 1) + return (mpir_ui)(__gmp_n != 0 ? __gmp_l : 0); + else + return (mpir_ui)(__gmp_l + (__gmp_p[1] << GMP_NUMB_BITS)); +#endif +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn) +#if ! defined (__GMP_FORCE_mpz_getlimbn) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_result = 0; + if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size))) + __gmp_result = __gmp_z->_mp_d[__gmp_n]; + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg) +__GMP_EXTERN_INLINE void +mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = - __gmp_w->_mp_size; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p) +#if ! defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_perfect_square_p (mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + + __gmp_asize = __gmp_a->_mp_size; + __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */ + if (__GMP_LIKELY (__gmp_asize > 0)) + __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount) +#if ! defined (__GMP_FORCE_mpz_popcount) +__GMP_EXTERN_INLINE +#endif +mp_bitcnt_t +mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW +{ + mp_size_t __gmp_usize; + mp_bitcnt_t __gmp_result; + + __gmp_usize = __gmp_u->_mp_size; + __gmp_result = (__gmp_usize < 0 ? __GMP_BITCNT_MAX : 0); + if (__GMP_LIKELY (__gmp_usize > 0)) + __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q) +#if ! defined (__GMP_FORCE_mpz_set_q) +__GMP_EXTERN_INLINE +#endif +void +mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size) +#if ! defined (__GMP_FORCE_mpz_size) +__GMP_EXTERN_INLINE +#endif +size_t +mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + return __GMP_ABS (__gmp_z->_mp_size); +} +#endif + + +/**************** mpq inlines ****************/ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs) +__GMP_EXTERN_INLINE void +mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg) +__GMP_EXTERN_INLINE void +mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; +} +#endif + + +/**************** mpn inlines ****************/ + +/* The comments with __GMPN_ADD_1 below apply here too. + + The test for FUNCTION returning 0 should predict well. If it's assumed + {yp,ysize} will usually have a random number of bits then the high limb + won't be full and a carry out will occur a good deal less than 50% of the + time. + + ysize==0 isn't a documented feature, but is used internally in a few + places. + + Producing cout last stops it using up a register during the main part of + the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" + doesn't seem able to move the true and false legs of the conditional up + to the two places cout is generated. */ + +#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x; \ + \ + /* ASSERT ((ysize) >= 0); */ \ + /* ASSERT ((xsize) >= (ysize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ + \ + __gmp_i = (ysize); \ + if (__gmp_i != 0) \ + { \ + if (FUNCTION (wp, xp, yp, __gmp_i)) \ + { \ + do \ + { \ + if (__gmp_i >= (xsize)) \ + { \ + (cout) = 1; \ + goto __gmp_done; \ + } \ + __gmp_x = (xp)[__gmp_i]; \ + } \ + while (TEST); \ + } \ + } \ + if ((wp) != (xp)) \ + __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ + (cout) = 0; \ + __gmp_done: \ + ; \ + } while (0) + +#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ + (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) +#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ + (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) + + +/* The use of __gmp_i indexing is designed to ensure a compile time src==dst + remains nice and clear to the compiler, so that __GMPN_COPY_REST can + disappear, and the load/add/store gets a chance to become a + read-modify-write on CISC CPUs. + + Alternatives: + + Using a pair of pointers instead of indexing would be possible, but gcc + isn't able to recognise compile-time src==dst in that case, even when the + pointers are incremented more or less together. Other compilers would + very likely have similar difficulty. + + gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or + similar to detect a compile-time src==dst. This works nicely on gcc + 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems + to be always false, for a pointer p. But the current code form seems + good enough for src==dst anyway. + + gcc on x86 as usual doesn't give particularly good flags handling for the + carry/borrow detection. It's tempting to want some multi instruction asm + blocks to help it, and this was tried, but in truth there's only a few + instructions to save and any gain is all too easily lost by register + juggling setting up for the asm. */ + +#if GMP_NAIL_BITS == 0 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r; \ + if (CB (__gmp_r, __gmp_x, (v))) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r; \ + ++__gmp_i; \ + if (!CB (__gmp_r, __gmp_x, 1)) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#if GMP_NAIL_BITS >= 1 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ + if (__gmp_r >> GMP_NUMB_BITS != 0) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ + ++__gmp_i; \ + if (__gmp_r >> GMP_NUMB_BITS == 0) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#define __GMPN_ADDCB(r,x,y) ((r) < (y)) +#define __GMPN_SUBCB(r,x,y) ((x) < (y)) + +#define __GMPN_ADD_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) +#define __GMPN_SUB_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) + + +/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or + negative. size==0 is allowed. On random data usually only one limb will + need to be examined to get a result, so it's worth having it inline. */ +#define __GMPN_CMP(result, xp, yp, size) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_y; \ + \ + /* ASSERT ((size) >= 0); */ \ + \ + (result) = 0; \ + __gmp_i = (size); \ + while (--__gmp_i >= 0) \ + { \ + __gmp_x = (xp)[__gmp_i]; \ + __gmp_y = (yp)[__gmp_i]; \ + if (__gmp_x != __gmp_y) \ + { \ + /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ + (result) = (__gmp_x > __gmp_y ? 1 : -1); \ + break; \ + } \ + } \ + } while (0) + + +#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ + } while (0) +#endif + +/* Copy {src,size} to {dst,size}, starting at "start". This is designed to + keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, + __GMPN_ADD, etc. */ +#if ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + mp_size_t __gmp_j; \ + /* ASSERT ((size) >= 0); */ \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ + for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ + (dst)[__gmp_j] = (src)[__gmp_j]; \ + } while (0) +#endif + +/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use + mpn_copyi if there's a native version, and if we don't mind demanding + binary compatibility for it (on targets which use it). */ + +#if ! defined (__GMPN_COPY) +#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) +#endif + + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add) +#if ! defined (__GMP_FORCE_mpn_add) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1) +#if ! defined (__GMP_FORCE_mpn_add_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp) +#if ! defined (__GMP_FORCE_mpn_cmp) +__GMP_EXTERN_INLINE +#endif +int +mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW +{ + int __gmp_result; + __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub) +#if ! defined (__GMP_FORCE_mpn_sub) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1) +#if ! defined (__GMP_FORCE_mpn_sub_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__cplusplus) +} +#endif + + +/* Allow faster testing for negative, zero, and positive. */ +#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) +#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) +#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) + +/* When using GCC, optimize certain common comparisons. */ +#if defined (__GNUC__) +#define mpz_cmp_ui(Z,UI) \ + (__builtin_constant_p (UI) && (UI) == 0 \ + ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) +#define mpz_cmp_si(Z,SI) \ + (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ + : __builtin_constant_p (SI) && (SI) > 0 \ + ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI)) \ + : _mpz_cmp_si (Z,SI)) +#define mpq_cmp_ui(Q,NUI,DUI) \ + (__builtin_constant_p (NUI) && (NUI) == 0 \ + ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) +#define mpq_cmp_si(q,n,d) \ + (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ + ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \ + : _mpq_cmp_si (q, n, d)) +#else +#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) +#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) +#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) +#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) +#endif + + +/* Using "&" rather than "&&" means these can come out branch-free. Every + mpz_t has at least one limb allocated, so fetching the low limb is always + allowed. */ +#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0])) +#define mpz_even_p(z) (! mpz_odd_p (z)) + + +/**************** C++ routines ****************/ + +#ifdef __cplusplus +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); +#endif + +/* Source-level compatibility with GMP 1. */ +#define mpz_mdiv mpz_fdiv_q +#define mpz_mdivmod mpz_fdiv_qr +#define mpz_mmod mpz_fdiv_r +#define mpz_mdiv_ui mpz_fdiv_q_ui +#define mpz_mdivmod_ui(q,r,n,d) \ + (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) +#define mpz_mmod_ui(r,n,d) \ + (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) + +#define gmp_randinit(x,y,z) gmp_randinit_lc_2exp_size(x,z) + +typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */ +typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */ + +#define mpz_div mpz_fdiv_q +#define mpz_divmod mpz_fdiv_qr +#define mpz_div_ui mpz_fdiv_q_ui +#define mpz_divmod_ui mpz_fdiv_qr_ui +#define mpz_div_2exp mpz_fdiv_q_2exp +#define mpz_mod_2exp mpz_fdiv_r_2exp + +enum +{ + GMP_ERROR_NONE = 0, + GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, + GMP_ERROR_DIVISION_BY_ZERO = 2, + GMP_ERROR_SQRT_OF_NEGATIVE = 4, + GMP_ERROR_INVALID_ARGUMENT = 8 +}; + +/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ +#define __GNU_MP_VERSION 5 +#define __GNU_MP_VERSION_MINOR 0 +#define __GNU_MP_VERSION_PATCHLEVEL 2 +#define GMP_VERSION "5.0.2" +#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL) + +#define __MPIR_VERSION 2 +#define __MPIR_VERSION_MINOR 6 +#define __MPIR_VERSION_PATCHLEVEL 0 +#if defined( _MSC_VER ) +#define _MSC_MPIR_VERSION "2.6.0" +#endif +#define __MPIR_RELEASE (__MPIR_VERSION * 10000 + __MPIR_VERSION_MINOR * 100 + __MPIR_VERSION_PATCHLEVEL) + +/* These are for programs like MPFR to use the same CC and CFLAGS as MPIR */ + +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_CC __MPIR_CC +#define __GMP_CFLAGS __MPIR_CFLAGS +#define __MPIR_CC "gcc -std=gnu99" +#define __MPIR_CFLAGS "-O2" +#endif + +#define __GMP_H__ +#endif /* __GMP_H__ */ + diff --git a/vitis/v2020_1/fir/xip_common_bitacc_cmodel.h b/vitis/v2020_1/fir/xip_common_bitacc_cmodel.h new file mode 100644 index 00000000..76dca8cd --- /dev/null +++ b/vitis/v2020_1/fir/xip_common_bitacc_cmodel.h @@ -0,0 +1,261 @@ +// (c) Copyright 2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models. +// #include this file inside each C model's exported header file. + +#ifndef XIP_COMMON_BITACC_CMODEL_H +#define XIP_COMMON_BITACC_CMODEL_H + +//Determine shared library import attributes +#ifndef XIP_XILINX_XIP_IMPEXP +#if defined(NT) || defined(NT64) +#define XIP_XILINX_XIP_IMPEXP __declspec(dllimport) +#elif defined(LIN) || defined(LIN64) +#define XIP_XILINX_XIP_IMPEXP +#else +#define XIP_XILINX_XIP_IMPEXP +#endif +#endif + +//Determine best way to approximate inline functions +#ifndef XIP_XILINX_XIP_INLINE +#ifdef __cplusplus +#define XIP_XILINX_XIP_INLINE inline +#elif (__STDC_VERSION__ >= 199901L) +#define XIP_XILINX_XIP_INLINE static inline +#else +#define XIP_XILINX_XIP_INLINE static +#endif +#endif + +//Check we know which model we are being included for +#ifndef XIP_XILINX_XIP_TARGET +#error "XIP_XILINX_XIP_TARGET undefined; must give interface name of model being compiled" +#endif + +#ifdef __cplusplus +#include +using std::size_t; +extern "C" { +#else +#include +#endif + + +/** + * Result code from DLL functions + */ +typedef int xip_status; + +/** + * Error codes + */ +#define XIP_STATUS_OK 0 +#define XIP_STATUS_ERROR 1 + +/** + * Bit type + */ +typedef unsigned char xip_bit; +#define xip_type_trait_bit 0 + +/** + * Real scalar type + */ +typedef double xip_real; +#define xip_type_trait_real 0 + +/** + * Complex scalar type + */ +typedef struct { xip_real re, im; } xip_complex; +#define xip_type_trait_complex 0 + +/** + * Integer type + */ +typedef unsigned int xip_uint; +#define xip_type_trait_uint 0 + +/** + * 32 bit integer type + */ +typedef unsigned int xip_uint32; +#define xip_type_trait_uint32 0 + + +/** + * Declare a xip_array_ structure for holding multi-dimensional arrays of xip_ instances + * Use xip_array__create() to create an array instance + * Use xip_array__create_ex(xip_array__operations* ops) to create an array instance using a given xip_array__operations object + * Use xip_array__reserve_data(xip_array_* array, size_t n) to reserve data elements + * Use xip_array__reserve_dim(xip_array_* array, size_t n) to reserve dimension elements + * Use xip_array__destroy(xip_array_*) to destroy an array instance + * Use xip_array__sub2ind_*(const xip_array_* p, size_t s0...) to obtain an index from a list of subscripts + * Use xip_array__set_element(xip_array_* p, const xip_ value, size_t index) to set a value + * Use xip_array__get_element(const xip_array_* p, xip_* value, size_t index) to get a value + * + * e.g. + * xip_array_real* array = xip_array_real_create(); //Create an empty array + * xip_array_real_reserve_data(array,1000); //Reserve space for 1000 elements + * xip_array_real_reserve_dim(array,10); //Reserve space for 10 dimensions + * array = xip_array_real_destroy(array); //Destroy array + * + */ +#define DECLARE_XIP_ARRAY(TYPE) \ +typedef struct xip_array_##TYPE##_struct xip_array_##TYPE; \ +typedef struct xip_array_##TYPE##_operations_struct xip_array_##TYPE##_operations; \ +struct xip_array_##TYPE##_struct { \ + xip_##TYPE* data; \ + size_t data_size; \ + size_t data_capacity; \ + size_t* dim; \ + size_t dim_size; \ + size_t dim_capacity; \ + unsigned int owner; \ + const xip_array_##TYPE##_operations* ops; \ +}; \ +struct xip_array_##TYPE##_operations_struct { \ + void* const (*ops_realloc )(const xip_array_##TYPE##_operations* ops, void* p, size_t size); \ + void (*ops_free )(const xip_array_##TYPE##_operations* ops, void* p); \ + void (*ops_elem_create )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void (*ops_elem_copy )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* dst, const xip_##TYPE* src); \ + void (*ops_elem_swap )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e1, xip_##TYPE* e2); \ + void (*ops_elem_destroy)(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void* ops_private; \ +} + +/** + * Export xip_array_ functions + */ +#define EXPORT_XIP_ARRAY(TYPE,TARGET) EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) +#define EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_IMPEXP const xip_array_##TYPE##_operations* const xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_destroy(xip_array_##TYPE* p); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) + +/** + * Declare the array type interfaces + * Note: for any given xip_array_* there should be only one DECLARE_XIP_ARRAY_INTERFACE to expose the interface + */ +#define DECLARE_XIP_ARRAY_INTERFACE(TYPE,TARGET) DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) +#define DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_INLINE const xip_array_##TYPE##_operations* const xip_array_##TYPE##_get_default_ops() { return xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create() { return xip_##TARGET##_xip_array_##TYPE##_create(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops) { return xip_##TARGET##_xip_array_##TYPE##_create_ex(ops); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels) { return xip_##TARGET##_xip_array_##TYPE##_reserve_data(p,max_nels); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim) { return xip_##TARGET##_xip_array_##TYPE##_reserve_dim(p,max_ndim); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_destroy(xip_array_##TYPE* p) { return xip_##TARGET##_xip_array_##TYPE##_destroy(p); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(p,s0); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(p,s0,s1); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(p,s0,s1,s2); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(p,s0,s1,s2,s3); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_set_element(p,value,index); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_get_element(p,value,index); } + +/** + * Declare and export the fundamental array types + */ +DECLARE_XIP_ARRAY(bit ); EXPORT_XIP_ARRAY(bit ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(real ); EXPORT_XIP_ARRAY(real ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(complex); EXPORT_XIP_ARRAY(complex,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint ); EXPORT_XIP_ARRAY(uint ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint32 ); EXPORT_XIP_ARRAY(uint32 ,XIP_XILINX_XIP_TARGET); + + +//Exposed interfaces for each xip_array_* type only if a previous Xilinx C model has not already done so +#ifndef XIP_ARRAY_BIT_API +DECLARE_XIP_ARRAY_INTERFACE(bit ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_BIT_API +#endif + +#ifndef XIP_ARRAY_REAL_API +DECLARE_XIP_ARRAY_INTERFACE(real ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_REAL_API +#endif + +#ifndef XIP_ARRAY_COMPLEX_API +DECLARE_XIP_ARRAY_INTERFACE(complex,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_COMPLEX_API +#endif + +#ifndef XIP_ARRAY_UINT_API +DECLARE_XIP_ARRAY_INTERFACE(uint ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT_API +#endif + +#ifndef XIP_ARRAY_UINT32_API +DECLARE_XIP_ARRAY_INTERFACE(uint32 ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT32_API +#endif + +/** + * Error-handling callback type + */ +typedef void (*xip_msg_handler)(void* handle, int error, const char* msg); + +/** + * Data-handling callback type + * Specific to xip_array_real type + */ +typedef int (*xip_array_real_handler)(const xip_array_real* data, void* handle, void* opt_arg); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_COMMON_BITACC_CMODEL_H diff --git a/vitis/v2020_1/fir/xip_mpz_bitacc_cmodel.h b/vitis/v2020_1/fir/xip_mpz_bitacc_cmodel.h new file mode 100644 index 00000000..d4809735 --- /dev/null +++ b/vitis/v2020_1/fir/xip_mpz_bitacc_cmodel.h @@ -0,0 +1,96 @@ +// (c) Copyright 2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models +// which use the Multiple Integer Precision types from GMP / MPIR library. +// #include this file inside each C model's exported header file + +#ifndef XIP_MPZ_BITACC_CMODEL_H +#define XIP_MPZ_BITACC_CMODEL_H + +#include "xip_common_bitacc_cmodel.h" +#include "gmp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Multiple Integer Precision (MPZ) type + */ +typedef mpz_t xip_mpz; +#define xip_type_trait_mpz 1 + +/** + * Multiple Integer Precision (MPZ) complex type + */ +typedef struct { xip_mpz re, im; } xip_mpz_complex; +#define xip_type_trait_mpz_complex 2 + +/** + * Declare and export the mpz array types + */ +DECLARE_XIP_ARRAY(mpz ); EXPORT_XIP_ARRAY(mpz ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(mpz_complex); EXPORT_XIP_ARRAY(mpz_complex,XIP_XILINX_XIP_TARGET); + +//Exposed interfaces for each xip_array_* type only if a previous Xilinx C model has not already done so +#ifndef XIP_ARRAY_MPZ_API +DECLARE_XIP_ARRAY_INTERFACE(mpz ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_MPZ_API +#endif + +#ifndef XIP_ARRAY_MPZ_COMPLEX_API +DECLARE_XIP_ARRAY_INTERFACE(mpz_complex,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_MPZ_COMPLEX_API +#endif + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_MPZ_BITACC_CMODEL_H + diff --git a/vitis/v2020_1/floating_point_v7_0_bitacc_cmodel.h b/vitis/v2020_1/floating_point_v7_0_bitacc_cmodel.h new file mode 100644 index 00000000..395c95c8 --- /dev/null +++ b/vitis/v2020_1/floating_point_v7_0_bitacc_cmodel.h @@ -0,0 +1,371 @@ +//---------------------------------------------------------------------------- +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: 6.0 +// \ \ Filename: $RCSfile: floating_point_v7_0_bitacc_cmodel.h,v $ +// / / Date Last Modified: $Date: 2011/06/15 13:06:43 $ +// /___/ /\ Date Created: 2011 +// +// Device : All +// Library : floating_point_v7_0 +// Purpose : Header file for bit accurate model of Floating Point Operator +// Revision: $Revision: 1.6.6.2 $ +// +//------------------------------------------------------------------------------ +// (c) Copyright 2011-2012 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//------------------------------------------------------------------------------ + +#ifndef __xip_fpo_bitacc_cmodel_h +#define __xip_fpo_bitacc_cmodel_h + +#ifdef NT +#define __XIP_FPO_DLLIMPORT __declspec(dllimport) +#define __XIP_FPO_DLLEXPORT __declspec(dllexport) +#else +#define __XIP_FPO_DLLIMPORT +#define __XIP_FPO_DLLEXPORT +#endif + +// Only define __XIP_FPO_BUILD_DLL when building the C model DLL; do not define it when using the C model +#ifdef __XIP_FPO_BUILD_DLL +#define __XIP_FPO_DLL __XIP_FPO_DLLEXPORT +#else +#define __XIP_FPO_DLL __XIP_FPO_DLLIMPORT +#endif + +/* Extra define for functions with variable numbers of arguments */ +#define __XIP_FPO_SENTINEL_ATTR +#if defined (__GNUC__) +# if __GNUC__ >= 4 +# undef __XIP_FPO_SENTINEL_ATTR +# define __XIP_FPO_SENTINEL_ATTR __attribute__ ((sentinel)) +# endif +#endif + +/* Define Floating Point Operator core version number */ +#define XIP_FPO_VERSION_MAJOR 6 +#define XIP_FPO_VERSION_MINOR 2 +#define XIP_FPO_REVISION 0 +/* Version string does not include revision if revision is 0 (revision >0 reserved for future use) */ +#define XIP_FPO_VERSION_STRING "6.2" + +/* Use C99 exact width integer types for 64-bit integers and *_uj and *_sj functions */ +// For Windows platforms, stdint.h and inttypes.h are not present in Visual Studio 2005/2008 +// Therefore we define the required types ourselves +// For Linux platforms, we need to continue using stdint.h (and not re-define intmax_t, uintmax_t) +// because SysGen already uses this header. +#ifdef NT +typedef signed char xint8; +typedef signed short xint16; +typedef signed int xint32; +typedef signed long long xint64; +typedef unsigned char xuint8; +typedef unsigned short xuint16; +typedef unsigned int xuint32; +typedef unsigned long long xuint64; +typedef xint64 intmax_t; +typedef xuint64 uintmax_t; +#else +#include +typedef int8_t xint8; +typedef int16_t xint16; +typedef int32_t xint32; +typedef int64_t xint64; +typedef uint8_t xuint8; +typedef uint16_t xuint16; +typedef uint32_t xuint32; +typedef uint64_t xuint64; +#endif + +#include + +// REVISIT: included before mpfr.h to permit definition of prototypes for mpfr_printf +#include + +// Force MPFR to use intmax_t and uintmax_t types (the compiled libraries have the functions that use these) +#define MPFR_USE_INTMAX_T + +// Tell MPIR on Windows platforms that it is compiled into a DLL +#ifdef NT +#define __GMP_LIBGMP_DLL 1 +#endif + +/* Check if GMP is included, and try to include it (Works with local GMP) + Note that where MPIR is provided as a compatible alternative to GMP, + it also provides a gmp.h header file to allow MPIR and GMP to be easily interchanged. + Select the correct gmp.h by setting the -I option (includes path) for your compiler. */ +#ifndef __GMP_H__ +#include "gmp.h" +#endif + +/* Check if MPFR is included, and try to include it (Works with local MPFR) */ +#ifndef __MPFR_H +#include "mpfr.h" +#endif + +/* Precision of mantissa or exponent (bits) */ +typedef long xip_fpo_prec_t; + +/* Definition of sign */ +typedef int xip_fpo_sign_t; + +/* Definition of exponent */ +typedef long xip_fpo_exp_t; + +/* The main floating point number structure */ +typedef struct { + xip_fpo_prec_t _xip_fpo_exp_prec; + xip_fpo_prec_t _xip_fpo_mant_prec; + xip_fpo_sign_t _xip_fpo_sign; + xip_fpo_exp_t _xip_fpo_exp; + mp_limb_t *_xip_fpo_d; +} __xip_fpo_struct; + +/* The main fixed point number structure */ +typedef struct { + xip_fpo_prec_t _xip_fpo_i_prec; + xip_fpo_prec_t _xip_fpo_frac_prec; + xint64 _xip_fpo_i; + xint64 _xip_fpo_frac; +} __xip_fpo_fix_struct; + +/* User-visible types for floating point and fixed point numbers */ +typedef __xip_fpo_struct xip_fpo_t[1]; +typedef __xip_fpo_fix_struct xip_fpo_fix_t[1]; + +/* Pointers to floating point and fixed point numbers, for function prototypes */ +typedef __xip_fpo_struct *xip_fpo_ptr; +typedef const __xip_fpo_struct *xip_fpo_srcptr; +typedef __xip_fpo_fix_struct *xip_fpo_fix_ptr; +typedef const __xip_fpo_fix_struct *xip_fpo_fix_srcptr; + +/* Definition of exception flags - return type of most functions + Flags are as follows: + bit 0 : underflow + bit 1 : overflow + bit 2 : invalid operation + bit 3 : divide by zero + bit 4 : operation not supported + bit 5 : Accumulator Input Overflow + bit 6 : Accumulator Overflow + */ +typedef int xip_fpo_exc_t; + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct xil_fpo_accum_state xil_fpo_accum_state; + +/* Information functions */ +__XIP_FPO_DLL const char * xip_fpo_get_version (void); + +/* Initialization functions */ +__XIP_FPO_DLL void xip_fpo_init2 (xip_fpo_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL void xip_fpo_fix_init2 (xip_fpo_fix_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL void xip_fpo_inits2 (xip_fpo_prec_t, xip_fpo_prec_t, xip_fpo_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_fix_inits2 (xip_fpo_prec_t, xip_fpo_prec_t, xip_fpo_fix_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_clear (xip_fpo_ptr); +__XIP_FPO_DLL void xip_fpo_fix_clear (xip_fpo_fix_ptr); +__XIP_FPO_DLL void xip_fpo_clears (xip_fpo_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_fix_clears (xip_fpo_fix_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_set_prec (xip_fpo_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL void xip_fpo_fix_set_prec (xip_fpo_fix_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_get_prec_mant (xip_fpo_ptr); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_get_prec_exp (xip_fpo_ptr); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_fix_get_prec_frac (xip_fpo_fix_ptr); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_fix_get_prec_int (xip_fpo_fix_ptr); + +/* Assignment functions */ +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set (xip_fpo_fix_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_ui (xip_fpo_ptr, unsigned long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_ui (xip_fpo_fix_ptr, unsigned long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_si (xip_fpo_ptr, long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_si (xip_fpo_fix_ptr, long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_uj (xip_fpo_ptr, uintmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_uj (xip_fpo_fix_ptr, uintmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_sj (xip_fpo_ptr, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_sj (xip_fpo_fix_ptr, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_flt (xip_fpo_ptr, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_flt (xip_fpo_fix_ptr, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_d (xip_fpo_ptr, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_d (xip_fpo_fix_ptr, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_z (xip_fpo_ptr, mpz_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_z (xip_fpo_fix_ptr, mpz_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_q (xip_fpo_ptr, mpq_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_q (xip_fpo_fix_ptr, mpq_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_f (xip_fpo_ptr, mpf_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_f (xip_fpo_fix_ptr, mpf_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_fr (xip_fpo_ptr, mpfr_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_fr (xip_fpo_fix_ptr, mpfr_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_ui_2exp (xip_fpo_ptr, unsigned long, xip_fpo_exp_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_si_2exp (xip_fpo_ptr, long, xip_fpo_exp_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_uj_2exp (xip_fpo_ptr, uintmax_t, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_sj_2exp (xip_fpo_ptr, intmax_t, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_str (xip_fpo_ptr, const char *, int); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_str (xip_fpo_fix_ptr, const char *, int); +__XIP_FPO_DLL void xip_fpo_set_nan (xip_fpo_ptr); +__XIP_FPO_DLL void xip_fpo_set_inf (xip_fpo_ptr, int); +__XIP_FPO_DLL void xip_fpo_set_zero (xip_fpo_ptr, int); + +/* Conversion functions */ +__XIP_FPO_DLL unsigned long xip_fpo_get_ui (xip_fpo_srcptr); +__XIP_FPO_DLL unsigned long xip_fpo_fix_get_ui (xip_fpo_fix_srcptr); +__XIP_FPO_DLL long xip_fpo_get_si (xip_fpo_srcptr); +__XIP_FPO_DLL long xip_fpo_fix_get_si (xip_fpo_fix_srcptr); +__XIP_FPO_DLL uintmax_t xip_fpo_get_uj (xip_fpo_srcptr); +__XIP_FPO_DLL uintmax_t xip_fpo_fix_get_uj (xip_fpo_fix_srcptr); +__XIP_FPO_DLL intmax_t xip_fpo_get_sj (xip_fpo_srcptr); +__XIP_FPO_DLL intmax_t xip_fpo_fix_get_sj (xip_fpo_fix_srcptr); +__XIP_FPO_DLL float xip_fpo_get_flt (xip_fpo_srcptr); +__XIP_FPO_DLL float xip_fpo_fix_get_flt (xip_fpo_fix_srcptr); +__XIP_FPO_DLL double xip_fpo_get_d (xip_fpo_srcptr); +__XIP_FPO_DLL double xip_fpo_fix_get_d (xip_fpo_fix_srcptr); +__XIP_FPO_DLL double xip_fpo_get_d_2exp (long *, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_get_z (mpz_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_get_z (mpz_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_get_f (mpf_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_get_f (mpf_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_get_fr (mpfr_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_get_fr (mpfr_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL char * xip_fpo_get_str (char *, xip_fpo_exp_t *, int, int, xip_fpo_srcptr); +__XIP_FPO_DLL char * xip_fpo_fix_get_str (char *, int, xip_fpo_fix_srcptr); +__XIP_FPO_DLL void xip_fpo_free_str (char *); +__XIP_FPO_DLL void xip_fpo_fix_free_str (char *); +__XIP_FPO_DLL int xip_fpo_sizeinbase (xip_fpo_srcptr, int); +__XIP_FPO_DLL int xip_fpo_fix_sizeinbase (xip_fpo_fix_srcptr, int); + +/* Operation functions */ +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_add (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_add_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_add_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sub (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sub_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sub_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_mul (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_mul_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_mul_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fma (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fma_flt (float *, float, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fma_d (double *, double, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fms (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fms_flt (float *, float, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fms_d (double *, double, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_div (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_div_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_div_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_rec (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_rec_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_rec_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_abs (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_abs_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_abs_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_log (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_log_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_log_d (double *, double); +__XIP_FPO_DLL int xip_fpo_exp_array (xip_fpo_t * , xip_fpo_t * , xip_fpo_exc_t *, unsigned long long); +__XIP_FPO_DLL void xip_fpo_exp_flt_array (float * , float * , xip_fpo_exc_t *, unsigned long long); +__XIP_FPO_DLL void xip_fpo_exp_d_array (double * , double * , xip_fpo_exc_t *, unsigned long long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_exp (xip_fpo_ptr , xip_fpo_srcptr ); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_exp_flt (float * , float ); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_exp_d (double * , double ); +__XIP_FPO_DLL struct xil_fpo_accum_state * xip_fpo_accum_create_state (int , int , int , int , int); +__XIP_FPO_DLL void xip_fpo_accum_reset_state (struct xil_fpo_accum_state *); +__XIP_FPO_DLL void xip_fpo_accum_destroy_state (struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_accum_sample (xip_fpo_t, xip_fpo_t, bool, struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_accum_sample_flt (float *, float , bool, struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_accum_sample_d (double *, double , bool, struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sqrt (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sqrt_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sqrt_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_recsqrt (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_recsqrt_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_recsqrt_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_unordered (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_unordered_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_unordered_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_equal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_equal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_equal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_less (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_less_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_less_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_lessequal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_lessequal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_lessequal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greater (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greater_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greater_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greaterequal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greaterequal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greaterequal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_notequal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_notequal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_notequal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_condcode (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_condcode_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_condcode_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttofix (xip_fpo_fix_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttofix_int_flt (int *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttofix_int_d (int *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fixtoflt (xip_fpo_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fixtoflt_flt_int (float *, int); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fixtoflt_d_int (double *, int); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_flt_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_flt_d (float *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_d_flt (double *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_d_d (double *, double); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // __xip_fpo_bitacc_cmodel_h + diff --git a/vitis/v2020_1/gmp.h b/vitis/v2020_1/gmp.h new file mode 100644 index 00000000..b09771c0 --- /dev/null +++ b/vitis/v2020_1/gmp.h @@ -0,0 +1,2391 @@ +/* Definitions for GNU multiple precision functions. -*- mode: c -*- + +Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, +2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + +Copyright 2008 William Hart, Gonzalo Tornaria + +This file is part of the MPIR Library. + +The MPIR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The MPIR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ + +#ifndef __GMP_H__ + +#if defined (__cplusplus) +#include /* for std::istream, std::ostream, std::string */ +#include +#endif + + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_BITS_PER_MP_LIMB 64 +#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 +#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 +#define GMP_LIMB_BITS 64 +#define GMP_NAIL_BITS 0 +#endif +#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) +#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) +#define GMP_NUMB_MAX GMP_NUMB_MASK +#define GMP_NAIL_MASK (~ GMP_NUMB_MASK) + + +/* The following (everything under ifndef __GNU_MP__) must be identical in + mpir.h and mp.h to allow both to be included in an application or during + the library build. */ +#ifndef __GNU_MP__ +#define __GNU_MP__ 4 + +#define __need_size_t /* tell gcc stddef.h we only want size_t */ +#if defined (__cplusplus) +#include /* for size_t */ +#else +#include /* for size_t */ +#endif +#undef __need_size_t + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +/* #undef _LONG_LONG_LIMB */ +#define __GMP_LIBGMP_DLL 0 +#endif + +/* #if defined(__GMP_WITHIN_CONFIGURE) && defined(_WIN64) */ +#ifdef __WIN64 +#define _LONG_LONG_LIMB 1 +#endif + + +/* __STDC__ - some ANSI compilers define this only to 0, hence the use of + "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 + sets __STDC__ to 0, but requires "##" for token pasting. + + _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but + don't always define __STDC__. + + __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI, + but don't define __STDC__ in their default mode. Don't know if old + versions might have been K&R, but let's not worry about that unless + someone is still using one. + + _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 + mode, but doesn't define __STDC__. + + _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za + option is given (in which case it's 1). + + _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that + all w32 compilers are ansi. + + Note: This same set of tests is used by gen-psqr.c and + demos/expr/expr-impl.h, so if anything needs adding, then be sure to + update those too. */ + +#if defined (__STDC__) \ + || defined (__cplusplus) \ + || defined (_AIX) \ + || defined (__DECC) \ + || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ + || defined (_MSC_VER) \ + || defined (_WIN32) +#define __GMP_HAVE_CONST 1 +#define __GMP_HAVE_PROTOTYPES 1 +#define __GMP_HAVE_TOKEN_PASTE 1 +#else +#define __GMP_HAVE_CONST 0 +#define __GMP_HAVE_PROTOTYPES 0 +#define __GMP_HAVE_TOKEN_PASTE 0 +#endif + + +#if __GMP_HAVE_CONST +#define __gmp_const const +#define __gmp_signed signed +#else +#define __gmp_const +#define __gmp_signed +#endif + + +/* __GMP_DECLSPEC supports Windows DLL versions of libmpir, and is empty in + all other circumstances. + + When compiling objects for libmpir, __GMP_DECLSPEC is an export directive, + or when compiling for an application it's an import directive. The two + cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles + (and not defined from an application). + + __GMP_DECLSPEC_XX is similarly used for libmpirxx. __GMP_WITHIN_GMPXX + indicates when building libmpirxx, and in that case libmpirxx functions are + exports, but libmpir functions which might get called are imports. + + libmp.la uses __GMP_DECLSPEC, just as if it were libmpir.la. libmpir and + libmp don't call each other, so there's no conflict or confusion. + + Libtool DLL_EXPORT define is not used. + + There's no attempt to support GMP built both static and DLL. Doing so + would mean applications would have to tell us which of the two is going + to be used when linking, and that seems very tedious and error prone if + using GMP by hand, and equally tedious from a package since autoconf and + automake don't give much help. + + __GMP_DECLSPEC is required on all documented global functions and + variables, the various internals in gmp-impl.h etc can be left unadorned. + But internals used by the test programs or speed measuring programs + should have __GMP_DECLSPEC, and certainly constants or variables must + have it or the wrong address will be resolved. + + In gcc __declspec can go at either the start or end of a prototype. + + In Microsoft C __declspec must go at the start, or after the type like + void __declspec(...) *foo()". There's no __dllexport or anything to + guard against someone foolish #defining dllexport. _export used to be + available, but no longer. + + In Borland C _export still exists, but needs to go after the type, like + "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to + make use of that. Probably more trouble than it's worth. */ + +#if defined (__GNUC__) +#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) +#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) +#endif +#if defined (_MSC_VER) || defined (__BORLANDC__) +#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) +#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) +#endif +#ifdef __WATCOMC__ +#define __GMP_DECLSPEC_EXPORT __export +#define __GMP_DECLSPEC_IMPORT __import +#endif +#ifdef __IBMC__ +#define __GMP_DECLSPEC_EXPORT _Export +#define __GMP_DECLSPEC_IMPORT _Import +#endif + +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMP +/* compiling to go into a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into an application which will link to a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC +#endif + + +#ifdef __GMP_SHORT_LIMB +typedef unsigned int mp_limb_t; +typedef int mp_limb_signed_t; +#else +#ifdef _LONG_LONG_LIMB +typedef unsigned long long int mp_limb_t; +typedef long long int mp_limb_signed_t; +#else +typedef unsigned long int mp_limb_t; +typedef long int mp_limb_signed_t; +#endif +#endif + +#ifdef _WIN64 +typedef unsigned long long int mp_bitcnt_t; +#else +typedef unsigned long int mp_bitcnt_t; +#endif + +/* For reference, note that the name __mpz_struct gets into C++ mangled + function names, which means although the "__" suggests an internal, we + must leave this name for binary compatibility. */ +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +#endif /* __GNU_MP__ */ + +typedef __mpz_struct mpz_t[1]; + +typedef mp_limb_t * mp_ptr; +typedef __gmp_const mp_limb_t * mp_srcptr; +#if defined( _WIN64) +#define __GMP_MP_SIZE_T_INT 0 +typedef long long int mp_size_t; +typedef long int mp_exp_t; +#else +#define __GMP_MP_SIZE_T_INT 0 +typedef long int mp_size_t; +typedef long int mp_exp_t; +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct mpq_t[1]; + +typedef struct +{ + int _mp_prec; /* Max precision, in number of `mp_limb_t's. + Set by mpf_init and modified by + mpf_set_prec. The area pointed to by the + _mp_d field contains `prec' + 1 limbs. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpf_struct; + +typedef __mpf_struct mpf_t[1]; + +/* Available random number generation algorithms. */ +typedef enum +{ + GMP_RAND_ALG_DEFAULT = 0, + GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ +} gmp_randalg_t; + +/* Random state struct. */ +typedef struct +{ + mpz_t _mp_seed; /* _mp_d member points to state of the generator. */ + gmp_randalg_t _mp_alg; /* Currently unused. */ + union { + void *_mp_lc; /* Pointer to function pointers structure. */ + } _mp_algdata; +} __gmp_randstate_struct; +typedef __gmp_randstate_struct gmp_randstate_t[1]; + +/* Types for function declarations in gmp files. */ +/* ??? Should not pollute user name space with these ??? */ +typedef __gmp_const __mpz_struct *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __gmp_const __mpf_struct *mpf_srcptr; +typedef __mpf_struct *mpf_ptr; +typedef __gmp_const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; + + +/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common + section. */ +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMPXX +/* compiling to go into a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into a application which will link to a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC_XX +#endif + + +#if __GMP_HAVE_PROTOTYPES +#define __GMP_PROTO(x) x +#else +#define __GMP_PROTO(x) () +#endif + +#ifndef __MPN +#if __GMP_HAVE_TOKEN_PASTE +#define __MPN(x) __gmpn_##x +#else +#define __MPN(x) __gmpn_/**/x +#endif +#endif + +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ +#define _GMP_H_HAVE_FILE 1 +#endif + +/* In ISO C, if a prototype involving "struct obstack *" is given without + that structure defined, then the struct is scoped down to just the + prototype, causing a conflict if it's subsequently defined for real. So + only give prototypes if we've got obstack.h. */ +#if defined (_OBSTACK_H) /* glibc */ +#define _GMP_H_HAVE_OBSTACK 1 +#endif + +/* The prototypes for gmp_vprintf etc are provided only if va_list is + available, via an application having included or . + Usually va_list is a typedef so can't be tested directly, but C99 + specifies that va_start is a macro (and it was normally a macro on past + systems too), so look for that. + + will define some sort of va_list for vprintf and vfprintf, but + let's not bother trying to use that since it's not standard and since + application uses for gmp_vprintf etc will almost certainly require the + whole or anyway. */ + +#ifdef va_start +#define _GMP_H_HAVE_VA_LIST 1 +#endif + +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GMP_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GMP_GNUC_PREREQ(maj, min) 0 +#endif + +/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically + it means a function does nothing but examine its arguments and memory + (global or via arguments) to generate a return value, but changes nothing + and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets + tune/common.c etc turn this off when trying to write timing loops. */ +#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE) +#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +#define __GMP_ATTRIBUTE_PURE +#endif + + +/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean + to "g++ -Wold-style-cast". + + Casts in "extern inline" code within an extern "C" block don't induce + these warnings, so __GMP_CAST only needs to be used on documented + macros. */ + +#ifdef __cplusplus +#define __GMP_CAST(type, expr) (static_cast (expr)) +#else +#define __GMP_CAST(type, expr) ((type) (expr)) +#endif + + +/* An empty "throw ()" means the function doesn't throw any C++ exceptions, + this can save some stack frame info in applications. + + Currently it's given only on functions which never divide-by-zero etc, + don't allocate memory, and are expected to never need to allocate memory. + This leaves open the possibility of a C++ throw from a future GMP + exceptions scheme. + + mpz_set_ui etc are omitted to leave open the lazy allocation scheme + described in doc/tasks.html. mpz_get_d etc are omitted to leave open + exceptions for float overflows. + + Note that __GMP_NOTHROW must be given on any inlines the same as on their + prototypes (for g++ at least, where they're used together). Note also + that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like + __GMP_ATTRIBUTE_PURE. */ + +#if defined (__cplusplus) +#define __GMP_NOTHROW throw () +#else +#define __GMP_NOTHROW +#endif + +/* PORTME: What other compilers have a useful "extern inline"? "static + inline" would be an acceptable substitute if the compiler (or linker) + discards unused statics. */ + +/* gcc has __inline__ in all modes, including strict ansi. Give a prototype + for an inline too, so as to correctly specify "dllimport" on windows, in + case the function is called rather than inlined. */ + +#ifdef __GNUC__ +#if defined(__APPLE_CC__) && (__APPLE_CC__ != 1) /* FSF GCC sets this flag to 1 on Apple machines */ + +#if ! (__APPLE_CC__ >= 5465 && __STDC_VERSION__ >= 199901L) +#define __GMP_EXTERN_INLINE extern __inline__ +#define __GMP_INLINE_PROTOTYPES 1 +#endif + +#else /*GNU CC*/ + +#if defined(__GNUC_STDC_INLINE__) || defined (__GNUC_GNU_INLINE__) +#define __GMP_EXTERN_INLINE extern __inline__ __attribute__((__gnu_inline__)) +#else +#define __GMP_EXTERN_INLINE extern __inline__ +#endif +#define __GMP_INLINE_PROTOTYPES 1 + +#endif +#endif + +/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1 + strict ANSI mode. Inlining is done even when not optimizing (ie. -O0 + mode, which is the default), but an unnecessary local copy of foo is + emitted unless -O is used. "extern __inline" is accepted, but the + "extern" appears to be ignored, ie. it becomes a plain global function + but which is inlined within its file. Don't know if all old versions of + DEC C supported __inline, but as a start let's do the right thing for + current versions. */ +#ifdef __DECC +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict + ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes + place under -O. Without -O "foo" seems to be emitted whether it's used + or not, which is wasteful. "extern inline foo()" isn't useful, the + "extern" is apparently ignored, so foo is inlined if possible but also + emitted as a global, which causes multiple definition errors when + building a shared libmpir. */ +#ifdef __SCO_VERSION__ +#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif +#endif + +#if defined _MSC_VER +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* C++ always has "inline" and since it's a normal feature the linker should + discard duplicate non-inlined copies, or if it doesn't then that's a + problem for everyone, not just GMP. */ +#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Don't do any inlining within a configure run, since if the compiler ends + up emitting copies of the code into the object file it can end up + demanding the various support routines (like mpn_popcount) for linking, + making the "alloca" test and perhaps others fail. And on hppa ia64 a + pre-release gcc 3.2 was seen not respecting the "extern" in "extern + __inline__", triggering this problem too. */ +#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE +#undef __GMP_EXTERN_INLINE +#endif + +/* By default, don't give a prototype when there's going to be an inline + version. Note in particular that Cray C++ objects to the combination of + prototype and inline. */ +#ifdef __GMP_EXTERN_INLINE +#ifndef __GMP_INLINE_PROTOTYPES +#define __GMP_INLINE_PROTOTYPES 0 +#endif +#else +#define __GMP_INLINE_PROTOTYPES 1 +#endif + + +#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) + +/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted + to int by "~". */ +#define __GMP_UINT_MAX (~ (unsigned) 0) +#define __GMP_ULONG_MAX (~ (unsigned long) 0) +#define __GMP_USHRT_MAX ((unsigned short) ~0) + + +/* __builtin_expect is in gcc 3.0, and not in 2.95. */ +#if __GMP_GNUC_PREREQ (3,0) +#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1) +#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0) +#else +#define __GMP_LIKELY(cond) (cond) +#define __GMP_UNLIKELY(cond) (cond) +#endif + +/* Allow direct user access to numerator and denominator of a mpq_t object. */ +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + + +#if defined (__cplusplus) +extern "C" { +using std::FILE; +#endif + +#define mp_set_memory_functions __gmp_set_memory_functions +__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t))) __GMP_NOTHROW; + +#define mp_get_memory_functions __gmp_get_memory_functions +__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t))) __GMP_NOTHROW; + +#define mp_bits_per_limb __gmp_bits_per_limb +__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb; + +#define gmp_errno __gmp_errno +__GMP_DECLSPEC extern int gmp_errno; + +#define gmp_version __gmp_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; + +#define mpir_version __mpir_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const mpir_version; + + +/**************** Random number routines. ****************/ + +#define gmp_randinit_default __gmp_randinit_default +__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp +__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t, + mpz_srcptr, unsigned long int, + mp_bitcnt_t)); + +#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size +__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t)); + +#define gmp_randinit_mt __gmp_randinit_mt +__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_set __gmp_randinit_set +__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *)); + +#define gmp_randseed __gmp_randseed +__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr)); + +#define gmp_randseed_ui __gmp_randseed_ui +__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int)); + +#define gmp_randclear __gmp_randclear +__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_urandomb_ui __gmp_urandomb_ui +__GMP_DECLSPEC unsigned long gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, unsigned long)); + +#define gmp_urandomm_ui __gmp_urandomm_ui +__GMP_DECLSPEC unsigned long gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, unsigned long)); + + +/**************** Formatted output routines. ****************/ + +#define gmp_asprintf __gmp_asprintf +__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...)); + +#define gmp_fprintf __gmp_fprintf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_printf __gmp_obstack_printf +#if defined (_GMP_H_HAVE_OBSTACK) +__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_vprintf __gmp_obstack_vprintf +#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list)); +#endif + +#define gmp_printf __gmp_printf +__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_snprintf __gmp_snprintf +__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...)); + +#define gmp_sprintf __gmp_sprintf +__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...)); + +#define gmp_vasprintf __gmp_vasprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list)); +#endif + +#define gmp_vfprintf __gmp_vfprintf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vprintf __gmp_vprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsnprintf __gmp_vsnprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list)); +#endif + +#define gmp_vsprintf __gmp_vsprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list)); +#endif + + +/**************** Formatted input routines. ****************/ + +#define gmp_fscanf __gmp_fscanf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_scanf __gmp_scanf +__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_sscanf __gmp_sscanf +__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...)); + +#define gmp_vfscanf __gmp_vfscanf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vscanf __gmp_vscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsscanf __gmp_vsscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list)); +#endif + + +/**************** Integer (i.e. Z) routines. ****************/ + +#define __GMP_BITS_PER_ULONG (8*sizeof(unsigned long)) + +#define _mpz_realloc __gmpz_realloc +#define mpz_realloc __gmpz_realloc +__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t)); + +#define mpz_abs __gmpz_abs +#define __GMP_MPZ_ABS_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs) +__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define __GMP_MPZ_ADD_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_add __gmpz_add +__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_ADD_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS)+1) +#define mpz_add_ui __gmpz_add_ui +__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_addmul __gmpz_addmul +__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_addmul_ui __gmpz_addmul_ui +__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_and __gmpz_and +__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_array_init __gmpz_array_init +__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t)); + +#define mpz_bin_ui __gmpz_bin_ui +__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_bin_uiui __gmpz_bin_uiui +__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); + +#define mpz_cdiv_q __gmpz_cdiv_q +__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp +__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); + +#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_cdiv_qr __gmpz_cdiv_qr +__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_cdiv_r __gmpz_cdiv_r +__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp +__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_cdiv_ui __gmpz_cdiv_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_clear __gmpz_clear +__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr)); + +#define mpz_clears __gmpz_clears +__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_clrbit __gmpz_clrbit +__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_cmp __gmpz_cmp +__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmp_d __gmpz_cmp_d +__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_si __gmpz_cmp_si +__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_ui __gmpz_cmp_ui +__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs __gmpz_cmpabs +__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_d __gmpz_cmpabs_d +__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_ui __gmpz_cmpabs_ui +__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_com __gmpz_com +__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_combit __gmpz_combit +__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_congruent_p __gmpz_congruent_p +__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p +__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_ui_p __gmpz_congruent_ui_p +__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divexact __gmpz_divexact +__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_divexact_ui __gmpz_divexact_ui +__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); + +#define mpz_divisible_p __gmpz_divisible_p +__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_ui_p __gmpz_divisible_ui_p +__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p +__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_dump __gmpz_dump +__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr)); + +#define mpz_export __gmpz_export +__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr)); + +#define mpz_fac_ui __gmpz_fac_ui +__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_fdiv_q __gmpz_fdiv_q +__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp +__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_fdiv_qr __gmpz_fdiv_qr +__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_fdiv_r __gmpz_fdiv_r +__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp +__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_fdiv_ui __gmpz_fdiv_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_fib_ui __gmpz_fib_ui +__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_fib2_ui __gmpz_fib2_ui +__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); + +#define mpz_fits_sint_p __gmpz_fits_sint_p +__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_slong_p __gmpz_fits_slong_p +__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_sshort_p __gmpz_fits_sshort_p +__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_uint_p __gmpz_fits_uint_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ulong_p __gmpz_fits_ulong_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ushort_p __gmpz_fits_ushort_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_gcd __gmpz_gcd +__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_gcd_ui __gmpz_gcd_ui +__GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_gcdext __gmpz_gcdext +__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_get_d __gmpz_get_d +__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_get_d_2exp __gmpz_get_d_2exp +__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr)); + +#define mpz_get_si __gmpz_get_si +__GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_get_str __gmpz_get_str +__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr)); + +#define mpz_get_ui __gmpz_get_ui +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui) +__GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_getlimbn __gmpz_getlimbn +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn) +__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_hamdist __gmpz_hamdist +__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_import __gmpz_import +__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *)); + +#define mpz_init __gmpz_init +__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr)); + +#define mpz_init2 __gmpz_init2 +__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_inits __gmpz_inits +__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_init_set __gmpz_init_set +__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_init_set_d __gmpz_init_set_d +__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_init_set_si __gmpz_init_set_si +__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int)); + +#define mpz_init_set_str __gmpz_init_set_str +__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define mpz_init_set_ui __gmpz_init_set_ui +__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_inp_raw __gmpz_inp_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *)); +#endif + +#define mpz_inp_str __gmpz_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int)); +#endif + +#define mpz_invert __gmpz_invert +__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_ior __gmpz_ior +__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_jacobi __gmpz_jacobi +__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker mpz_jacobi /* alias */ + +#define mpz_kronecker_si __gmpz_kronecker_si +__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker_ui __gmpz_kronecker_ui +__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_si_kronecker __gmpz_si_kronecker +__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_kronecker __gmpz_ui_kronecker +__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_lcm __gmpz_lcm +__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_lcm_ui __gmpz_lcm_ui +__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); + +#define mpz_legendre mpz_jacobi /* alias */ + +#define mpz_lucnum_ui __gmpz_lucnum_ui +__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_lucnum2_ui __gmpz_lucnum2_ui +__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); + +#define mpz_millerrabin __gmpz_millerrabin +__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_mod __gmpz_mod +__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */ + +#define __GMP_MPZ_MUL_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+__GMP_ABS(z->_mp_size)+1) +#define mpz_mul __gmpz_mul +__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mul_2exp __gmpz_mul_2exp +__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define __GMP_MPZ_MUL_SI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS+1) +#define mpz_mul_si __gmpz_mul_si +__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int)); + +#define __GMP_MPZ_MUL_UI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS+1) +#define mpz_mul_ui __gmpz_mul_ui +__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_neg __gmpz_neg +#define __GMP_MPZ_NEG_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg) +__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define mpz_nextprime __gmpz_nextprime +__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_next_likely_prime __gmpz_next_likely_prime +__GMP_DECLSPEC void mpz_next_likely_prime __GMP_PROTO ((mpz_ptr, mpz_srcptr,gmp_randstate_t)); + +#define mpz_out_raw __gmpz_out_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr)); +#endif + +#define mpz_out_str __gmpz_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr)); +#endif + +#define mpz_perfect_power_p __gmpz_perfect_power_p +__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_perfect_square_p __gmpz_perfect_square_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_popcount __gmpz_popcount +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount) +__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_pow_ui __gmpz_pow_ui +__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_powm __gmpz_powm +__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_powm_ui __gmpz_powm_ui +__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr)); + +#define mpz_probab_prime_p __gmpz_probab_prime_p +__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_probable_prime_p __gmpz_probable_prime_p +__GMP_DECLSPEC int mpz_probable_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, int,unsigned long)); + +#define mpz_likely_prime_p __gmpz_likely_prime_p +__GMP_DECLSPEC int mpz_likely_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, unsigned long)); + +#define mpz_realloc2 __gmpz_realloc2 +__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_remove __gmpz_remove +__GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_root __gmpz_root +__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_nthroot __gmpz_nthroot +__GMP_DECLSPEC void mpz_nthroot __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_rootrem __gmpz_rootrem +__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_rrandomb __gmpz_rrandomb +__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_scan0 __gmpz_scan0 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_scan1 __gmpz_scan1 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define __GMP_MPZ_SET_MIN_ALLOC(x,y) __GMP_ABS(y->_mp_size) +#define mpz_set __gmpz_set +__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_set_d __gmpz_set_d +__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_set_f __gmpz_set_f +__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr)); + +#define mpz_set_q __gmpz_set_q +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q) +__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr)); +#endif + +#define __GMP_MPZ_SET_SI_MIN_ALLOC(x,y) (1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS) +#define mpz_set_si __gmpz_set_si +__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int)); + +#define mpz_set_str __gmpz_set_str +__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define __GMP_MPZ_SET_UI_MIN_ALLOC(x,y) (1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS) +#define mpz_set_ui __gmpz_set_ui +__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_setbit __gmpz_setbit +__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_size __gmpz_size +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size) +__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_sizeinbase __gmpz_sizeinbase +__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_sqrt __gmpz_sqrt +__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_sqrtrem __gmpz_sqrtrem +__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_sub __gmpz_sub +__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS)+1) +#define mpz_sub_ui __gmpz_sub_ui +__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define __GMP_MPZ_UI_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(z->_mp_size),1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS)+1) +#define mpz_ui_sub __gmpz_ui_sub +__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr)); + +#define mpz_submul __gmpz_submul +__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_submul_ui __gmpz_submul_ui +__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_swap __gmpz_swap +__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW; + +#define mpz_tdiv_ui __gmpz_tdiv_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_tdiv_q __gmpz_tdiv_q +__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp +__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_tdiv_qr __gmpz_tdiv_qr +__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_tdiv_r __gmpz_tdiv_r +__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp +__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_tstbit __gmpz_tstbit +__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_pow_ui __gmpz_ui_pow_ui +__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); + +#define mpz_urandomb __gmpz_urandomb +__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_urandomm __gmpz_urandomm +__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); + +#define mpz_xor __gmpz_xor +#define mpz_eor __gmpz_xor +__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + + +/**************** Rational (i.e. Q) routines. ****************/ + +#define mpq_abs __gmpq_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs) +__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_add __gmpq_add +__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_canonicalize __gmpq_canonicalize +__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr)); + +#define mpq_clear __gmpq_clear +__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr)); + +#define mpq_clears __gmpq_clears +__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_cmp __gmpq_cmp +__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_si __gmpq_cmp_si +__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_ui __gmpq_cmp_ui +__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpq_div __gmpq_div +__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_div_2exp __gmpq_div_2exp +__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_equal __gmpq_equal +__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpq_get_num __gmpq_get_num +__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_den __gmpq_get_den +__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_d __gmpq_get_d +__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpq_get_str __gmpq_get_str +__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr)); + +#define mpq_init __gmpq_init +__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr)); + +#define mpq_inits __gmpq_inits +__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_inp_str __gmpq_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int)); +#endif + +#define mpq_inv __gmpq_inv +__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_mul __gmpq_mul +__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_mul_2exp __gmpq_mul_2exp +__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_neg __gmpq_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg) +__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_out_str __gmpq_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr)); +#endif + +#define mpq_set __gmpq_set +__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_set_d __gmpq_set_d +__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double)); + +#define mpq_set_den __gmpq_set_den +__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_f __gmpq_set_f +__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr)); + +#define mpq_set_num __gmpq_set_num +__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_si __gmpq_set_si +__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int)); + +#define mpq_set_str __gmpq_set_str +__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int)); + +#define mpq_set_ui __gmpq_set_ui +__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int)); + +#define mpq_set_z __gmpq_set_z +__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_sub __gmpq_sub +__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_swap __gmpq_swap +__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW; + + +/**************** Float (i.e. F) routines. ****************/ + +#define mpf_abs __gmpf_abs +__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_add __gmpf_add +__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_add_ui __gmpf_add_ui +__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); +#define mpf_ceil __gmpf_ceil +__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_clear __gmpf_clear +__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr)); + +#define mpf_clears __gmpf_clears +__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_cmp __gmpf_cmp +__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_d __gmpf_cmp_d +__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_si __gmpf_cmp_si +__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_ui __gmpf_cmp_ui +__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_div __gmpf_div +__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_div_2exp __gmpf_div_2exp +__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_div_ui __gmpf_div_ui +__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_dump __gmpf_dump +__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr)); + +#define mpf_eq __gmpf_eq +__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sint_p __gmpf_fits_sint_p +__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_slong_p __gmpf_fits_slong_p +__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sshort_p __gmpf_fits_sshort_p +__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_uint_p __gmpf_fits_uint_p +__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ulong_p __gmpf_fits_ulong_p +__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ushort_p __gmpf_fits_ushort_p +__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_floor __gmpf_floor +__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_get_d __gmpf_get_d +__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpf_get_d_2exp __gmpf_get_d_2exp +__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr)); + +#define mpf_get_default_prec __gmpf_get_default_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_prec __gmpf_get_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_si __gmpf_get_si +__GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_str __gmpf_get_str +__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); + +#define mpf_get_ui __gmpf_get_ui +__GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_init __gmpf_init +__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr)); + +#define mpf_init2 __gmpf_init2 +__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_inits __gmpf_inits +__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_init_set __gmpf_init_set +__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_init_set_d __gmpf_init_set_d +__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_init_set_si __gmpf_init_set_si +__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int)); + +#define mpf_init_set_str __gmpf_init_set_str +__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_init_set_ui __gmpf_init_set_ui +__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); + +#define mpf_inp_str __gmpf_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int)); +#endif + +#define mpf_integer_p __gmpf_integer_p +__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_mul __gmpf_mul +__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_mul_2exp __gmpf_mul_2exp +__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_mul_ui __gmpf_mul_ui +__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_neg __gmpf_neg +__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_out_str __gmpf_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr)); +#endif + +#define mpf_pow_ui __gmpf_pow_ui +__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_random2 __gmpf_random2 +__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); + +#define mpf_rrandomb __gmpf_rrandomb +__GMP_DECLSPEC void mpf_rrandomb __GMP_PROTO ((mpf_ptr, gmp_randstate_t, mp_size_t, mp_exp_t)); + +#define mpf_reldiff __gmpf_reldiff +__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_set __gmpf_set +__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_set_d __gmpf_set_d +__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_set_default_prec __gmpf_set_default_prec +__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_prec __gmpf_set_prec +__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_set_prec_raw __gmpf_set_prec_raw +__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_q __gmpf_set_q +__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr)); + +#define mpf_set_si __gmpf_set_si +__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int)); + +#define mpf_set_str __gmpf_set_str +__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_set_ui __gmpf_set_ui +__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); + +#define mpf_set_z __gmpf_set_z +__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr)); + +#define mpf_size __gmpf_size +__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_sqrt __gmpf_sqrt +__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_sqrt_ui __gmpf_sqrt_ui +__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); + +#define mpf_sub __gmpf_sub +__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_sub_ui __gmpf_sub_ui +__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_swap __gmpf_swap +__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW; + +#define mpf_trunc __gmpf_trunc +__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_ui_div __gmpf_ui_div +__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); + +#define mpf_ui_sub __gmpf_ui_sub +__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); + +#define mpf_urandomb __gmpf_urandomb +__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t)); + + +/************ Low level positive-integer (i.e. N) routines. ************/ + +/* This is ugly, but we need to make user calls reach the prefixed function. */ + +#define mpn_add __MPN(add) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add) +__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_add_1 __MPN(add_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1) +__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_add_n __MPN(add_n) +__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_addmul_1 __MPN(addmul_1) +__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_bdivmod __MPN(bdivmod) +__GMP_DECLSPEC mp_limb_t mpn_bdivmod __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int)); + +#define mpn_divrem __MPN(divrem) +__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mulmod_2expp1 __MPN(mulmod_2expp1) +__GMP_DECLSPEC int mpn_mulmod_2expp1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr,int,unsigned long, mp_ptr)); + +#define mpn_mulmod_2expm1 __MPN(mulmod_2expm1) +__GMP_DECLSPEC void mpn_mulmod_2expm1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_ptr,unsigned long, mp_ptr)); + +#define mpn_cmp __MPN(cmp) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp) +__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_divexact_by3(dst,src,size) \ + mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0)) + +#define mpn_divexact_by3c __MPN(divexact_by3c) +__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divmod_1(qp,np,nsize,dlimb) \ + mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb) + +#define mpn_divrem_1 __MPN(divrem_1) +__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divrem_2 __MPN(divrem_2) +__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); + +#define mpn_invert __MPN(invert) +__GMP_DECLSPEC void mpn_invert __GMP_PROTO ((mp_ptr xp, mp_srcptr ap, mp_size_t n)); + +#define mpn_sb_divappr_q __MPN(sb_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dip)); + +#define mpn_dc_divappr_q_n __MPN(dc_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dip, mp_ptr tp)); + +#define mpn_dc_bdiv_q_n __MPN(dc_bdiv_q_n) +__GMP_DECLSPEC void mpn_dc_bdiv_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr scratch)); + +#define mpn_inv_divappr_q_n __MPN(inv_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_srcptr dip)); + +#define mpn_dc_divappr_q __MPN(dc_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv)); + +#define mpn_dc_div_q __MPN(dc_div_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_inv_divappr_q __MPN(inv_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_srcptr dinv)); + +#define mpn_inv_div_q __MPN(inv_div_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr __MPN(inv_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr_n __MPN(inv_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_dc_div_qr __MPN(dc_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_div_qr_n __MPN(dc_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_q __MPN(sb_div_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_q __MPN(sb_bdiv_q) +__GMP_DECLSPEC void mpn_sb_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_q __MPN(dc_bdiv_q) +__GMP_DECLSPEC void mpn_dc_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr __MPN(dc_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr_n __MPN(dc_bdiv_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t n, mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_qr __MPN(sb_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_qr __MPN(sb_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_tdiv_q __MPN(tdiv_q) +__GMP_DECLSPEC void mpn_tdiv_q __GMP_PROTO ((mp_ptr qp, mp_srcptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn)); + +#define mpn_divexact __MPN(divexact) +__GMP_DECLSPEC void mpn_divexact __GMP_PROTO ((mp_ptr qp, + mp_srcptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn)); + +#define mpn_redc_1 __MPN(redc_1) +__GMP_DECLSPEC void mpn_redc_1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);) + +#define mpn_gcd __MPN(gcd) +__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_gcd_1 __MPN(gcd_1) +__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcdext __MPN(gcdext) +__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_get_str __MPN(get_str) +__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); + +#define mpn_hamdist __MPN(hamdist) +__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_lshift __MPN(lshift) +__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_mod_1 __MPN(mod_1) +__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_mul __MPN(mul) +__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mul_1 __MPN(mul_1) +__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_mul_n __MPN(mul_n) +__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_sqr __MPN(sqr) +__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_neg_n __MPN(neg_n) +#define mpn_neg __MPN(neg_n) +__GMP_DECLSPEC mp_limb_t mpn_neg_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_com_n __MPN(com_n) +#define mpn_com __MPN(com_n) +__GMP_DECLSPEC void mpn_com_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_perfect_square_p __MPN(perfect_square_p) +__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_popcount __MPN(popcount) +__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_pow_1 __MPN(pow_1) +__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr)); + +/* undocumented now, but retained here for upward compatibility */ +#define mpn_preinv_mod_1 __MPN(preinv_mod_1) +__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_random __MPN(random) +__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_random2 __MPN(random2) +__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_urandomb __MPN(urandomb) +__GMP_DECLSPEC void mpn_urandomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, unsigned long)); + +#define mpn_urandomm __MPN(urandomm) +__GMP_DECLSPEC void mpn_urandomm __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_srcptr, mp_size_t)); + +#define mpn_randomb __MPN(randomb) +__GMP_DECLSPEC void mpn_randomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rrandom __MPN(rrandom) +__GMP_DECLSPEC void mpn_rrandom __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rshift __MPN(rshift) +__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_scan0 __MPN(scan0) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_scan1 __MPN(scan1) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_set_str __MPN(set_str) +__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); + +#define mpn_sqrtrem __MPN(sqrtrem) +__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_sub __MPN(sub) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub) +__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_sub_1 __MPN(sub_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_sub_n __MPN(sub_n) +__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_submul_1 __MPN(submul_1) +__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_tdiv_qr __MPN(tdiv_qr) +__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_and_n __MPN(and_n) +__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_andn_n __MPN(andn_n) +__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nand_n __MPN(nand_n) +__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_ior_n __MPN(ior_n) +__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_iorn_n __MPN(iorn_n) +__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nior_n __MPN(nior_n) +__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xor_n __MPN(xor_n) +__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xnor_n __MPN(xnor_n) +__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_copyi __MPN(copyi) +__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_copyd __MPN(copyd) +__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_zero __MPN(zero) +__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t)); + +/**************** mpz inlines ****************/ + +/* The following are provided as inlines where possible, but always exist as + library functions too, for binary compatibility. + + Within gmp itself this inlining generally isn't relied on, since it + doesn't get done for all compilers, whereas if something is worth + inlining then it's worth arranging always. + + There are two styles of inlining here. When the same bit of code is + wanted for the inline as for the library version, then __GMP_FORCE_foo + arranges for that code to be emitted and the __GMP_EXTERN_INLINE + directive suppressed, eg. mpz_fits_uint_p. When a different bit of code + is wanted for the inline than for the library version, then + __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs) +__GMP_EXTERN_INLINE void +mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); +} +#endif + +#if GMP_NAIL_BITS == 0 +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); +#else +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ + || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p) +#if ! defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p) +#if ! defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p) +#if ! defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui) +#if ! defined (__GMP_FORCE_mpz_get_ui) +__GMP_EXTERN_INLINE +#endif +unsigned long +mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + mp_ptr __gmp_p = __gmp_z->_mp_d; + mp_size_t __gmp_n = __gmp_z->_mp_size; + mp_limb_t __gmp_l = __gmp_p[0]; + /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings + about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland + C++ 6.0 warnings about condition always true for something like + "__GMP_ULONG_MAX < GMP_NUMB_MASK". */ +#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB) + /* limb==long and no nails, or limb==longlong, one limb is enough */ + return (unsigned long)(__gmp_n != 0 ? __gmp_l : 0); +#else + /* limb==long and nails, need two limbs when available */ + __gmp_n = __GMP_ABS (__gmp_n); + if (__gmp_n <= 1) + return (__gmp_n != 0 ? __gmp_l : 0); + else + return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS); +#endif +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn) +#if ! defined (__GMP_FORCE_mpz_getlimbn) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_result = 0; + if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size))) + __gmp_result = __gmp_z->_mp_d[__gmp_n]; + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg) +__GMP_EXTERN_INLINE void +mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = - __gmp_w->_mp_size; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p) +#if ! defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_perfect_square_p (mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + + __gmp_asize = __gmp_a->_mp_size; + __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */ + if (__GMP_LIKELY (__gmp_asize > 0)) + __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount) +#if ! defined (__GMP_FORCE_mpz_popcount) +__GMP_EXTERN_INLINE +#endif +mp_bitcnt_t +mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW +{ + mp_size_t __gmp_usize; + mp_bitcnt_t __gmp_result; + + __gmp_usize = __gmp_u->_mp_size; + __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0); + if (__GMP_LIKELY (__gmp_usize > 0)) + __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q) +#if ! defined (__GMP_FORCE_mpz_set_q) +__GMP_EXTERN_INLINE +#endif +void +mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size) +#if ! defined (__GMP_FORCE_mpz_size) +__GMP_EXTERN_INLINE +#endif +size_t +mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + return __GMP_ABS (__gmp_z->_mp_size); +} +#endif + + +/**************** mpq inlines ****************/ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs) +__GMP_EXTERN_INLINE void +mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg) +__GMP_EXTERN_INLINE void +mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; +} +#endif + + +/**************** mpn inlines ****************/ + +/* The comments with __GMPN_ADD_1 below apply here too. + + The test for FUNCTION returning 0 should predict well. If it's assumed + {yp,ysize} will usually have a random number of bits then the high limb + won't be full and a carry out will occur a good deal less than 50% of the + time. + + ysize==0 isn't a documented feature, but is used internally in a few + places. + + Producing cout last stops it using up a register during the main part of + the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" + doesn't seem able to move the true and false legs of the conditional up + to the two places cout is generated. */ + +#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x; \ + \ + /* ASSERT ((ysize) >= 0); */ \ + /* ASSERT ((xsize) >= (ysize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ + \ + __gmp_i = (ysize); \ + if (__gmp_i != 0) \ + { \ + if (FUNCTION (wp, xp, yp, __gmp_i)) \ + { \ + do \ + { \ + if (__gmp_i >= (xsize)) \ + { \ + (cout) = 1; \ + goto __gmp_done; \ + } \ + __gmp_x = (xp)[__gmp_i]; \ + } \ + while (TEST); \ + } \ + } \ + if ((wp) != (xp)) \ + __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ + (cout) = 0; \ + __gmp_done: \ + ; \ + } while (0) + +#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ + (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) +#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ + (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) + + +/* The use of __gmp_i indexing is designed to ensure a compile time src==dst + remains nice and clear to the compiler, so that __GMPN_COPY_REST can + disappear, and the load/add/store gets a chance to become a + read-modify-write on CISC CPUs. + + Alternatives: + + Using a pair of pointers instead of indexing would be possible, but gcc + isn't able to recognise compile-time src==dst in that case, even when the + pointers are incremented more or less together. Other compilers would + very likely have similar difficulty. + + gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or + similar to detect a compile-time src==dst. This works nicely on gcc + 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems + to be always false, for a pointer p. But the current code form seems + good enough for src==dst anyway. + + gcc on x86 as usual doesn't give particularly good flags handling for the + carry/borrow detection. It's tempting to want some multi instruction asm + blocks to help it, and this was tried, but in truth there's only a few + instructions to save and any gain is all too easily lost by register + juggling setting up for the asm. */ + +#if GMP_NAIL_BITS == 0 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r; \ + if (CB (__gmp_r, __gmp_x, (v))) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r; \ + ++__gmp_i; \ + if (!CB (__gmp_r, __gmp_x, 1)) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#if GMP_NAIL_BITS >= 1 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ + if (__gmp_r >> GMP_NUMB_BITS != 0) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ + ++__gmp_i; \ + if (__gmp_r >> GMP_NUMB_BITS == 0) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#define __GMPN_ADDCB(r,x,y) ((r) < (y)) +#define __GMPN_SUBCB(r,x,y) ((x) < (y)) + +#define __GMPN_ADD_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) +#define __GMPN_SUB_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) + + +/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or + negative. size==0 is allowed. On random data usually only one limb will + need to be examined to get a result, so it's worth having it inline. */ +#define __GMPN_CMP(result, xp, yp, size) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_y; \ + \ + /* ASSERT ((size) >= 0); */ \ + \ + (result) = 0; \ + __gmp_i = (size); \ + while (--__gmp_i >= 0) \ + { \ + __gmp_x = (xp)[__gmp_i]; \ + __gmp_y = (yp)[__gmp_i]; \ + if (__gmp_x != __gmp_y) \ + { \ + /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ + (result) = (__gmp_x > __gmp_y ? 1 : -1); \ + break; \ + } \ + } \ + } while (0) + + +#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ + } while (0) +#endif + +/* Copy {src,size} to {dst,size}, starting at "start". This is designed to + keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, + __GMPN_ADD, etc. */ +#if ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + mp_size_t __gmp_j; \ + /* ASSERT ((size) >= 0); */ \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ + for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ + (dst)[__gmp_j] = (src)[__gmp_j]; \ + } while (0) +#endif + +/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use + mpn_copyi if there's a native version, and if we don't mind demanding + binary compatibility for it (on targets which use it). */ + +#if ! defined (__GMPN_COPY) +#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) +#endif + + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add) +#if ! defined (__GMP_FORCE_mpn_add) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1) +#if ! defined (__GMP_FORCE_mpn_add_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp) +#if ! defined (__GMP_FORCE_mpn_cmp) +__GMP_EXTERN_INLINE +#endif +int +mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW +{ + int __gmp_result; + __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub) +#if ! defined (__GMP_FORCE_mpn_sub) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1) +#if ! defined (__GMP_FORCE_mpn_sub_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__cplusplus) +} +#endif + + +/* Allow faster testing for negative, zero, and positive. */ +#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) +#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) +#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) + +/* When using GCC, optimize certain common comparisons. */ +#if defined (__GNUC__) +#define mpz_cmp_ui(Z,UI) \ + (__builtin_constant_p (UI) && (UI) == 0 \ + ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) +#define mpz_cmp_si(Z,SI) \ + (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ + : __builtin_constant_p (SI) && (SI) > 0 \ + ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI)) \ + : _mpz_cmp_si (Z,SI)) +#define mpq_cmp_ui(Q,NUI,DUI) \ + (__builtin_constant_p (NUI) && (NUI) == 0 \ + ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) +#define mpq_cmp_si(q,n,d) \ + (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ + ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \ + : _mpq_cmp_si (q, n, d)) +#else +#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) +#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) +#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) +#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) +#endif + + +/* Using "&" rather than "&&" means these can come out branch-free. Every + mpz_t has at least one limb allocated, so fetching the low limb is always + allowed. */ +#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0])) +#define mpz_even_p(z) (! mpz_odd_p (z)) + + +/**************** C++ routines ****************/ + +#ifdef __cplusplus +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); +#endif + +/* Source-level compatibility with GMP 1. */ +#define mpz_mdiv mpz_fdiv_q +#define mpz_mdivmod mpz_fdiv_qr +#define mpz_mmod mpz_fdiv_r +#define mpz_mdiv_ui mpz_fdiv_q_ui +#define mpz_mdivmod_ui(q,r,n,d) \ + (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) +#define mpz_mmod_ui(r,n,d) \ + (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) + +#define gmp_randinit(x,y,z) gmp_randinit_lc_2exp_size(x,z) + +typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */ +typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */ + +#define mpz_div mpz_fdiv_q +#define mpz_divmod mpz_fdiv_qr +#define mpz_div_ui mpz_fdiv_q_ui +#define mpz_divmod_ui mpz_fdiv_qr_ui +#define mpz_div_2exp mpz_fdiv_q_2exp +#define mpz_mod_2exp mpz_fdiv_r_2exp + +enum +{ + GMP_ERROR_NONE = 0, + GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, + GMP_ERROR_DIVISION_BY_ZERO = 2, + GMP_ERROR_SQRT_OF_NEGATIVE = 4, + GMP_ERROR_INVALID_ARGUMENT = 8 +}; + +/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ +#define __GNU_MP_VERSION 5 +#define __GNU_MP_VERSION_MINOR 0 +#define __GNU_MP_VERSION_PATCHLEVEL 1 +#define GMP_VERSION "5.0.1" + +#define __MPIR_VERSION 2 +#define __MPIR_VERSION_MINOR 2 +#define __MPIR_VERSION_PATCHLEVEL 1 +#if defined( _MSC_VER ) +#define _MSC_MPIR_VERSION "2.2.1" +#endif + +/* These are for programs like MPFR to use the same CC and CFLAGS as MPIR */ + +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_CC "gcc" +#define __GMP_CFLAGS "-O3" +#define __MPIR_CC "gcc -std=gnu99" +#define __MPIR_CFLAGS "-O3" +#endif + +#define __GMP_H__ +#endif /* __GMP_H__ */ + diff --git a/vitis/v2020_1/hls/dsp/hls_atan2_cordic.h b/vitis/v2020_1/hls/dsp/hls_atan2_cordic.h new file mode 100755 index 00000000..ddba7dba --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_atan2_cordic.h @@ -0,0 +1,88 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_ATAN2_CORDIC_H +#define HLS_ATAN2_CORDIC_H + +#include "hls/dsp/utils/hls_cordic.h" + +namespace hls { + + // =================================================================================================================== + // Input and output interfaces + template struct atan2_input { + typedef cordic_inputs cartesian; + }; + + template struct atan2_output { + typedef cordic_outputs phase; + }; + + // =================================================================================================================== + // ATAN2: Entry point function. + // o Template parameters: + // - PhaseFormat : Selects whether the phase is expressed in radians or scaled radians (pi * 1 radian) + // - InputWidth : Defines overall input data width + // - OutputWidth : Defines overall output data width + // - RoundMode : Selects the rounding mode to apply to the output data + // o Arguments: + // - x : Input data with two integer bits and InputWidth-2 fractional bits, in the range [-1,1] + // - atanX : Four quadrant arctangent of x with three integer bits and OutputWidth-3 fractional bits, in the range [-1,1] + // o The internal CORDIC function applies its own rounding, therefore the interface + // ap_fixed types need not specify rounding and saturation modes + template < + int PhaseFormat, + int InputWidth, + int OutputWidth, + int RoundMode + > void atan2(const typename atan2_input::cartesian &x, + typename atan2_output::phase &atanX) { + + Function_atan2_cordic:; + + cordic_base< + CORDIC_F_ATAN, + CORDIC_TRUE, // CoarseRotate always enabled for atan2 + CORDIC_FORMAT_SIG_FRAC, + PhaseFormat, + InputWidth, + OutputWidth, + CORDIC_ITER_AUTO, + CORDIC_PREC_AUTO, + RoundMode, + CORDIC_SCALE_NONE>(x, atanX); + } + +} // end namespace hls + +#endif // HLS_ATAN2_CORDIC_H + + diff --git a/vitis/v2020_1/hls/dsp/hls_awgn.h b/vitis/v2020_1/hls/dsp/hls_awgn.h new file mode 100755 index 00000000..ab886976 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_awgn.h @@ -0,0 +1,388 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_AWGN_H +#define HLS_AWGN_H + +#include "ap_fixed.h" +#include "ap_int.h" +#include + +namespace hls { +#if (defined(OutputWidth)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // AWGN: Class definition + // o Template parameters: + // - OutputWidth : Selects the number of bits in the output. + template< + int OutputWidth> + class awgn { + + public: + + // AWGN SNR input type definition + typedef ap_ufixed<8,4, AP_RND, AP_SAT> t_input_scale; + + // The following constants are used to define the width of the LFSR seed + static const int LFSR_SECTION_WIDTH = 32; + static const int NUM_NOISE_GENS = 4; + static const int LFSR_WIDTH = LFSR_SECTION_WIDTH*NUM_NOISE_GENS; + + awgn(ap_uint seed) { + check_params(seed, OutputWidth); + // Initialize LFSR state + lfsr128 = seed; + // Ensure state variables are reset + #pragma HLS reset variable=lfsr128 + } //end constructor + + ~awgn() { + } //end destructor + + + // =================================================================================================================== + // AWGN: Entry point function. + // o Arguments: + // - snr : signal to noise ratio desired. + // - outputData : Additive Gaussian white noise output data + void operator()(const t_input_scale &snr, + ap_int &outputData) { + + Function_awgn_operator:; + + //The BRAM contents have been calculated using Excel which has the probit function, + //then exported to csv so as to paste into this file. + + const ap_uint coarseContents[] = { + 131070,125628,122854,121035,119668,118569,117649,116856,116158,115536,114973,114459,113987,113549,113141,112760,112401,112062,111741,111437,111147,110870,110605,110351,110107,109873,109647,109429,109218,109015,108817,108626, + 108441,108261,108086,107915,107750,107588,107431,107277,107127,106980,106837,106697,106560,106426,106295,106166,106040,105916,105795,105675,105559,105444,105331,105220,105111,105004,104898,104795,104692,104592,104493,104395, + 104252,104065,103884,103707,103536,103368,103205,103045,102890,102738,102589,102444,102302,102163,102026,101893,101762,101633,101507,101384,101262,101143,101026,100911,100798,100686,100577,100469,100363,100259,100156,100054, + 99906,99712,99523,99340,99161,98987,98817,98651,98490,98331,98177,98026,97878,97733,97591,97452,97316,97182,97051,96922,96796,96672,96550,96430,96312,96196,96082,95970,95859,95750,95643,95538, + 95383,95180,94984,94793,94606,94425,94248,94075,93906,93741,93580,93422,93268,93117,92969,92823,92681,92542,92405,92270,92138,92008,91881,91756,91632,91511,91392,91275,91159,91045,90933,90823, + 90661,90449,90244,90043,89848,89658,89473,89292,89115,88943,88774,88609,88447,88288,88133,87981,87832,87686,87542,87401,87263,87126,86993,86861,86732,86605,86480,86357,86235,86116,85998,85882, + 85712,85490,85274,85063,84859,84659,84464,84274,84088,83906,83728,83555,83384,83218,83054,82894,82737,82583,82432,82283,82137,81994,81853,81714,81578,81444,81312,81182,81054,80928,80804,80682, + 80502,80267,80039,79817,79601,79389,79183,78982,78786,78594,78406,78222,78042,77865,77692,77523,77356,77193,77033,76875,76721,76569,76419,76272,76128,75985,75845,75708,75572,75438,75306,75177, + 74985,74736,74494,74258,74028,73803,73584,73370,73161,72957,72756,72561,72369,72181,71996,71815,71638,71464,71293,71125,70960,70798,70638,70481,70327,70175,70025,69878,69732,69589,69448,69310, + 69105,68839,68579,68326,68080,67839,67604,67374,67150,66930,66715,66505,66299,66097,65898,65704,65513,65326,65142,64961,64783,64608,64436,64267,64100,63937,63775,63616,63459,63305,63153,63003, + 62782,62494,62213,61939,61672,61412,61157,60908,60665,60426,60193,59965,59740,59521,59305,59094,58886,58682,58482,58284,58091,57900,57712,57528,57346,57167,56991,56817,56646,56477,56310,56146, + 55904,55589,55281,54981,54688,54401,54122,53848,53580,53318,53061,52809,52562,52319,52081,51848,51618,51392,51171,50952,50738,50526,50318,50114,49912,49713,49517,49324,49133,48945,48760,48577, + 48307,47955,47612,47276,46948,46628,46314,46007,45706,45412,45123,44839,44561,44287,44019,43755,43495,43240,42989,42741,42498,42258,42022,41789,41560,41333,41110,40890,40672,40458,40246,40036, + 39728,39324,38930,38544,38167,37797,37435,37080,36732,36390,36055,35725,35401,35082,34769,34460,34156,33857,33562,33272,32985,32703,32424,32149,31878,31610,31345,31083,30825,30569,30317,30067, + 29698,29215,28741,28277,27821,27374,26935,26503,26079,25661,25250,24845,24446,24053,23665,23282,22904,22531,22163,21799,21439,21083,20731,20383,20038,19697,19360,19025,18694,18365,18040,17717, + 17239,16609,15989,15378,14775,14180,13592,13011,12437,11868,11305,10748,10195,9647,9103,8563,8027,7494,6964,6437,5913,5391,4871,4353,3837,3322,2809,2297,1786,1275,765,255 + }; + const ap_uint gradientContents[] = { + 6999,3591,2146,1544,1210,997,849,740,657,590,536,492,454,422,394,370,348,329,312,297,283,271,259,249,239,230,222,214,207,200,194,188, + 183,178,173,168,164,159,156,152,148,145,142,139,136,133,130,127,125,123,120,118,116,114,112,110,108,106,105,103,101,100,98,97, + 189,184,179,174,170,165,161,157,154,150,147,144,141,138,135,132,130,127,125,123,120,118,116,114,112,110,109,107,105,104,102,101, + 197,191,186,181,176,172,168,164,160,156,153,149,146,143,140,138,135,132,130,128,125,123,121,119,117,115,113,111,110,108,106,105, + 205,199,194,189,184,179,175,171,167,163,159,156,153,150,147,144,141,138,136,133,131,129,126,124,122,120,118,116,115,113,111,110, + 214,208,203,197,192,188,183,179,175,171,167,163,160,157,154,151,148,145,142,140,137,135,133,130,128,126,124,122,120,119,117,115, + 225,219,213,208,202,197,193,188,184,180,176,172,168,165,162,159,156,153,150,147,145,142,140,137,135,133,131,129,127,125,123,121, + 238,231,225,219,214,208,204,199,194,190,186,182,178,175,171,168,165,162,159,156,153,151,148,146,143,141,139,137,135,133,131,129, + 252,246,239,233,227,222,217,212,207,202,198,194,190,186,183,179,176,173,169,167,164,161,158,156,153,151,148,146,144,142,140,138, + 270,263,256,250,244,238,232,227,222,217,213,208,204,200,196,193,189,186,182,179,176,173,171,168,165,163,160,158,156,153,151,149, + 292,284,277,270,264,258,252,246,241,236,231,226,222,218,214,210,206,202,199,195,192,189,186,183,180,178,175,173,170,168,165,163, + 320,312,304,297,290,283,277,271,265,260,254,249,245,240,236,232,228,224,220,216,213,210,206,203,200,197,195,192,189,187,184,182, + 357,348,339,332,324,317,310,304,298,292,286,281,276,271,266,262,257,253,249,245,242,238,235,231,228,225,222,219,216,213,211,208, + 408,399,390,381,373,366,358,352,345,339,333,327,321,316,311,306,301,297,293,288,284,281,277,273,270,266,263,260,257,254,251,248, + 489,478,469,460,451,443,435,428,421,414,408,402,396,391,385,380,375,371,366,362,358,354,350,346,343,339,336,333,330,327,324,321, + 635,625,616,607,599,591,584,578,571,566,560,555,550,546,542,538,535,531,528,526,523,521,519,517,515,514,513,512,511,510,510,510 + }; + + // Probit lookup values have been prescaled by 26029.6788 to maximize use of the BRAM. + + const ap_uint scaleLookup[] = { + 116675,115838,115007,114183,113364,112551,111744,110943,110148,109358,108574,107796,107023,106255,105494,104737, + 103986,103241,102501,101766,101036,100312,99592,98878,98169,97466,96767,96073,95384,94700,94021,93347, + 92678,92013,91354,90699,90048,89403,88762,88125,87494,86866,86243,85625,85011,84402,83797,83196, + 82599,82007,81419,80835,80256,79680,79109,78542,77979,77420,76865,76313,75766,75223,74684,74148, + 73617,73089,72565,72045,71528,71015,70506,70000,69499,69000,68506,68014,67527,67043,66562,66085, + 65611,65140,64673,64210,63749,63292,62839,62388,61941,61497,61056,60618,60183,59752,59323,58898, + 58476,58057,57640,57227,56817,56409,56005,55603,55205,54809,54416,54026,53638,53254,52872,52493, + 52117,51743,51372,51004,50638,50275,49914,49557,49201,48848,48498,48151,47805,47463,47122,46784, + 46449,46116,45785,45457,45131,44808,44486,44167,43851,43536,43224,42914,42607,42301,41998,41697, + 41398,41101,40806,40514,40223,39935,39648,39364,39082,38802,38524,38247,37973,37701,37431,37162, + 36896,36631,36369,36108,35849,35592,35337,35083,34832,34582,34334,34088,33844,33601,33360,33121, + 32883,32648,32414,32181,31950,31721,31494,31268,31044,30821,30600,30381,30163,29947,29732,29519, + 29307,29097,28889,28681,28476,28272,28069,27868,27668,27470,27273,27077,26883,26690,26499,26309, + 26120,25933,25747,25562,25379,25197,25016,24837,24659,24482,24307,24132,23959,23788,23617,23448, + 23280,23113,22947,22782,22619,22457,22296,22136,21977,21820,21663,21508,21354,21201,21049,20898, + 20748,20599,20452,20305,20159,20015,19871,19729,19587,19447,19308,19169,19032,18895,18760,18625 + }; + + const ap_int C_MAX_NOISE = ((ap_int)1 << (OutputWidth-1)) -1; + const ap_int C_MIN_NOISE = -C_MAX_NOISE; + const int C_ROUND_POINT = SCALED_NOISE_WIDTH-ROUNDED_NOISE_GUARD - OutputWidth; + + ap_uint scale; + ap_uint scaleAddr; + ap_uint bramChapter[NUM_NOISE_GENS]; + ap_uint bramPage[NUM_NOISE_GENS]; + ap_uint bramAddr[NUM_NOISE_GENS]; + ap_uint<1> signAddr[NUM_NOISE_GENS]; + ap_uint norm[NUM_NOISE_GENS][5]; + ap_uint coarse[NUM_NOISE_GENS]; + ap_uint gradient[NUM_NOISE_GENS]; + ap_int offset[NUM_NOISE_GENS]; + ap_int adjust[NUM_NOISE_GENS]; + ap_int shiftedCoarse[NUM_NOISE_GENS]; + ap_int noiseGen[NUM_NOISE_GENS]; + ap_int centralLimitNoise; + ap_int scaledNoise; + ap_int roundedNoise; + ap_int saturatedNoise; + ap_uint lfsrSplice[NUM_NOISE_GENS];//splices of lfsr128 + + // Default is to have multiple parallel noise generators, hence unroll this loop. + noise_gen_loop: for (int i = 0; i < NUM_NOISE_GENS; i++) { + lfsrSplice[i] = (lfsr128 >> (i*LFSR_SECTION_WIDTH)) & (((ap_uint)1 << LFSR_SECTION_WIDTH)-1); + signAddr[i] = (lfsrSplice[i]>>(LFSR_SECTION_WIDTH-1)) & 1; //sign is top bit of LFSR + //Normalizer + //LFSR_SECTION_WIDTH bits describe the region 0 to 1 as a uniform random variable. + //This uniform range is converted to Gaussian using the probit function. + //Since the probit function is steep close to 0 the use of the BRAM is concentrated + //to those values by companding. + //The 32 bit LFSR is split into the following fields + //sign (bit 31) + //Chapter (bits 29 downto 15) (15 bits). This is normalized to a 4 bit field. + //Page (bits 14 downto 10) + //Offset (bits 9 downto 0) + //The top splice bit determines the region 0 to 0.5 or 0.5 to 1 because + //Probit is negative-Symmetric about the point (0.5, 0) so the BRAM is used only + //for range 0 to 0.5 + //Chapter normalized in order to count the number of leading zeros. + //This determines the 'chapter' of RAM to use. Hence BRAM use is log2 companded. + //Each chapter is composed of 32 pages. These addresses within a chapter. + //The remaining bits are used to linearly interpolate between BRAM-read values. + //This linear interpolation comes from a coarse value lookup, based on chapter&page. + //and a gradient value also looked up using the chapter&page address. + //The coarse part has to be shifted up by the width of the offset field before adding the correction (linear interp) factor. + + //Get the 15 bit field for normalization and conversion to chapter field. + norm[i][0] = (lfsrSplice[i]>>(BRAM_PAGE_WIDTH+OFFSET_WIDTH)) & 0x7FFF; + //norm[i][0] is the field to be normalised. The number of bits it is shifted by gives + //the ram section, the bits after the leading 1 become the interpolation bits. + bramChapter[i] = 0; + normalizer_stage_loop: for (int normStage = 0; normStage < NORM_STAGES; normStage++ ) { + if ((norm[i][normStage] >> ((1<)1<<(NORM_STAGES - 1 - normStage)); + } else { + bramChapter[i] += (ap_uint)1 << (BRAM_ADDR_WIDTH - 1 - normStage); + norm[i][normStage+1] = norm[i][normStage]; + } + } + // Top NORM_STAGES bits of bram should now be set. + // Use next 6 bits of lfsr state + bramPage[i] = (ap_uint)((lfsrSplice[i] >> OFFSET_WIDTH) & 0x1f); + bramAddr[i] = bramChapter[i] + bramPage[i]; + offset[i] = (ap_int)(lfsrSplice[i] & ((1 << OFFSET_WIDTH)-1)); //offset takes the least significant bits of the LFSR. + coarse[i] = coarseContents[bramAddr[i]]; + gradient[i] = gradientContents[bramAddr[i]]; + + // The use of the sign bit is phrased to be sympathetic to DSP48 inference + adjust[i] = gradient[i] * offset[i]; + shiftedCoarse[i] = (ap_int)coarse[i] << OFFSET_WIDTH; + if (signAddr[i]==0) { + noiseGen[i] = shiftedCoarse[i] + adjust[i]; + } else { + noiseGen[i] = adjust[i] - shiftedCoarse[i]; + } + } + // Move the lfsr on one state. + tickLfsr(lfsr128); + + // TIP: Enable the pragma below, or apply a directive, to map addition to DSP Slices + //#pragma HLS RESOURCE variable=centralLimitNoise core=AddSub_DSP + centralLimitNoise = ((ap_int)noiseGen[0]+ + (ap_int)noiseGen[1]+ + (ap_int)noiseGen[2]+ + (ap_int)noiseGen[3]);//Adder tree variant + + scaleAddr = (int)(snr * 16); + scale = scaleLookup[scaleAddr]; + scaledNoise = centralLimitNoise * scale; + roundedNoise = (scaledNoise + ((ap_uint)1 << (C_ROUND_POINT-1))) >> C_ROUND_POINT; + if(roundedNoise > C_MAX_NOISE) { + saturatedNoise = C_MAX_NOISE; + } + else if (roundedNoise < C_MIN_NOISE) { + saturatedNoise = C_MIN_NOISE; + } + else { + saturatedNoise = roundedNoise; + } + outputData = saturatedNoise; + + } // operator() + + + private: + + // Struct to define the LFSR configuration + struct xor_triple { + int width; + int a; + int b; + int c; + }; + + // Shared constants + static const int SCALE_ADDR_WIDTH = 8; + static const int COMPAND_IN = 15; + static const int BRAM_CHAPTER_WIDTH = 4; + static const int BRAM_PAGE_WIDTH = 5; + static const int OFFSET_WIDTH = 10; + static const int LOG2NUMNOISEGENS = 2; // If changing, change the previous one too + static const int NORM_STAGES = 4; + static const int BRAM_ADDR_WIDTH = 9; + static const int BRAM_OUT_WIDTH = 17; + static const int SCALE_WIDTH = 17; + static const int MIN_OUTPUT_WIDTH = 8; + static const int MAX_OUTPUT_WIDTH = 32; + static const int LFSR_FORM = 1; + + // Derived constants + // Noise width is +2 to accommodate arithmetic bit growth + static const int NOISE_WIDTH = (BRAM_OUT_WIDTH + OFFSET_WIDTH + 2); + static const int CL_NOISE_WIDTH = (NOISE_WIDTH + LOG2NUMNOISEGENS ); + static const int SCALED_NOISE_WIDTH = (CL_NOISE_WIDTH + SCALE_WIDTH); + // The maximum noise is ~10 std devs, but the maximum output value is 2root2 std_devs. Hence, so as not to overflow, the rounded noise must accommodate values up to ~5x the maximum noise output. + static const int ROUNDED_NOISE_GUARD = 3; + + // State variables + ap_uint lfsr128; + + void check_params(ap_uint pSeed, int pOutputWidth) { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (pSeed == 0) { + std::cout << "ERROR: " << __FILE__ << ": Seed to LFSR must not be zero" << std::endl; + exit(1); + } + if (pOutputWidth < MIN_OUTPUT_WIDTH || pOutputWidth > MAX_OUTPUT_WIDTH) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be in range " << MIN_OUTPUT_WIDTH << " to " << MAX_OUTPUT_WIDTH << std::endl; + exit(1); + } + #endif + } // check_params + + + // xorShift moves the LFSR on by one state. The LFSR equation depends on y and form. + void xorShift(ap_uint<(LFSR_WIDTH >> 1) > &lfsrVal, + const struct xor_triple &y, + int form) { + switch (form) { + case 0: + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + break; + case 1: + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + break; + case 2: + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + break; + case 3: + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + break; + case 4: + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + break; + case 5: + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + break; + case 6: + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + break; + case 7: + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + break; + default: + #ifndef __SYNTHESIS__ + std::cout << "ERROR: " << __FILE__ << ": Illegal form passed to xorShift\n" << std::endl; + exit(1); + #endif + break; + } + } // xorShift + + void tickLfsr(ap_uint &lfsrState) { + + Function_awgn_tickLfsr:; + + //Ideally, a single LFSR would be used for this application, as that would yield + //the longest sequence. However, very long LFSRs give higher fan-in. Hence a compromise + //of using 2 64-bit LFSRs is used. 2^64 at 1GHz gives a repeat time of >500 years. + //See xorshift on Wikipedia. + const struct xor_triple myLfsrPoly1 = {64,1,35,34}; + const struct xor_triple myLfsrPoly2 = {64,7,13,58}; + + ap_uint<(LFSR_WIDTH >>1) > lfsr1,lfsr2; + + lfsr1 = lfsrState.range(LFSR_WIDTH-1,LFSR_WIDTH/2); + lfsr2 = lfsrState.range(LFSR_WIDTH/2-1,0); + + xorShift(lfsr1, myLfsrPoly1, LFSR_FORM); + xorShift(lfsr2, myLfsrPoly2, LFSR_FORM); + lfsrState = (lfsr1,lfsr2); + + } // tickLfsr + + }; //end class awgn + +} //end namespace hls + +#endif // HLS_AWGN_H + + + + + + diff --git a/vitis/v2020_1/hls/dsp/hls_cmpy.h b/vitis/v2020_1/hls/dsp/hls_cmpy.h new file mode 100755 index 00000000..fb8d8a46 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_cmpy.h @@ -0,0 +1,157 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_CMPY_H +#define HLS_CMPY_H + +#include "ap_fixed.h" +#include + +namespace hls { + + // =================================================================================================================== + // Complex multiplier architecture type definition + struct CmpyThreeMult { + const static int CmpyArchitecture = 3; + }; + struct CmpyFourMult { + const static int CmpyArchitecture = 4; + }; + + // =================================================================================================================== + // CMPY: Entry point function with discrete real/imaginary components + // Template parameters: + // - Architecture : Selects either 3-multiplier or 4-multiplier architecture to implement + // - W1/I1/Q1/O1/N1 : Defines fixed-point properties of ar, ai, br and bi + // - W2/I2/Q2/O2/N2 : Defines fixed-point properties of pr and pi + // Arguments: + // - ar : Multiplicand real component + // - ai : Multiplicand imaginary component + // - br : Multiplier real component + // - bi : Multiplier imaginary component + // - pr : Product real component + // - pi : Product imaginary component + template < + class Architecture, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + void cmpy (const ap_fixed &ar, + const ap_fixed &ai, + const ap_fixed &br, + const ap_fixed &bi, + ap_fixed &pr, + ap_fixed &pi) { + + Function_cmpy_scalar:; + + if (Architecture::CmpyArchitecture == 4) { + + // 4-mult architecture + ap_fixed in[2][2]; + ap_fixed m[2][2]; // multiplier bitgrowth + + in[0][0] = ar; + in[0][1] = br; + in[1][0] = ai; + in[1][1] = bi; + + // TIP: Insert a PIPELINE directive here to implement with 4 DSP Slices (full throughput) + cmpy_4mult_outer_loop : for (int i=0; i<2; i++) { + // TIP: Insert a PIPELINE directive here to implement with 2 DSP Slices + cmpy_4mult_inner_loop : for (int j=0; j<2; j++) { + // TIP: With no directives, only 1 DSP Slice is used + m[i][j] = in[i][0] * in[j][1]; + } + } + + pr = m[0][0] - m[1][1]; + pi = m[1][0] + m[0][1]; + + } else if (Architecture::CmpyArchitecture == 3) { + + // 3-mult architecture + ap_fixed sum0, sum1, sum2; // 1 bit of integer bitgrowth + ap_fixed prod0, prod1, prod2; // carry 1 bit of integer bitgrowth, plus multiplier bitgrowth + + sum0 = (ar + ai); + sum1 = (br + bi); + sum2 = (ai - ar); + + prod0 = sum0 * bi; + prod1 = sum1 * ar; + prod2 = sum2 * br; + + pr = prod1 - prod0; + pi = prod1 + prod2; + + } else { +#ifndef __SYNTHESIS__ + std::cout << "ERROR: " << __FILE__ << ": Unsupported architecture" << std::endl; +#endif + } + + } + + // =================================================================================================================== + // CMPY: Alternative entry point function using std::complex interface + // Template parameters: + // - Architecture : Selects either 3-multiplier or 4-multiplier architecture to implement + // - W1/I1/Q1/O1/N1 : Defines fixed-point properties of a and b + // - W2/I2/Q2/O2/N2 : Defines fixed-point properties of p + // Arguments: + // - a : Multiplicand + // - b : Multiplier + // - p : Product + template < + class Architecture, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + void cmpy (const std::complex< ap_fixed > &a, + const std::complex< ap_fixed > &b, + std::complex< ap_fixed > &p) { + + Function_cmpy_std_complex:; + + // cmpy(&(*a).real(),&(*a).imag(),&(*b).real(),&(*b).imag(),&(*p).real(),&(*p).imag()); + //cmpy(a.real(),a.imag(),b.real(),b.imag(),p.real(),p.imag()); + #if (defined(__cplusplus) && __cplusplus >= 201103L) + cmpy(a.real(),a.imag(),b.real(),b.imag(),reinterpret_cast *>(&p)[0],reinterpret_cast *>(&p)[1]); + #else + cmpy(a.real(),a.imag(),b.real(),b.imag(),p.real(),p.imag()); + #endif + + } + +} //end namespace hls + +#endif // HLS_CMPY_H + + diff --git a/vitis/v2020_1/hls/dsp/hls_convolution_encoder.h b/vitis/v2020_1/hls/dsp/hls_convolution_encoder.h new file mode 100755 index 00000000..d4cbd198 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_convolution_encoder.h @@ -0,0 +1,364 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_CONVOLUTION_ENCODER_H +#define HLS_CONVOLUTION_ENCODER_H + +#include "hls/dsp/utils/hls_dsp_common_utils.h" +#include "ap_int.h" +#include + +namespace hls { + + // =================================================================================================================== + // CONVOLUTION_ENCODER: Class definition + // o Template parameters: + // - OutputWidth : Defines number of bits in the output bus; 1 bit when Punctured=true and DualOutput=false, 2 bits when DualOutput=true, else OutputRate bits + // - Punctured : When true, enables puncturing of data + // - DualOutput : When true, enables dual outputs with punctured data + // - InputRate : Defines numerator of code rate + // - OutputRate : Defines denominator of code rate + // - ConstraintLength : The constraint length, K, is the number of registers in the encoder, plus one + // - PunctureCode0 : When Punctured=true, puncture code for output 0. Length (in binary) must equal the puncture input rate. Total number of 1's in both PunctureCode parameters equals the output rate. + // - PunctureCode1 : When Punctured=true, puncture code for output 1. Length (in binary) must equal the puncture input rate. Total number of 1's in both PunctureCode parameters equals the output rate. + // - ConvolutionCode0 : Convolution code for rates 1/2 to 1/7 - + // - ConvolutionCode1 : Convolution code for rates 1/2 to 1/7 | + // - ConvolutionCode2 : Convolution code for rates 1/3 to 1/7 | + // - ConvolutionCode3 : Convolution code for rates 1/4 to 1/7 | Length (in binary) for all convolution codes (if used) must equal the constraint length value. + // - ConvolutionCode4 : Convolution code for rates 1/5 to 1/7 | + // - ConvolutionCode5 : Convolution code for rates 1/6 to 1/7 | + // - ConvolutionCode6 : Convolution code for rate 1/7 - +template< + int OutputWidth, + bool Punctured, + bool DualOutput, + int InputRate, + int OutputRate, + int ConstraintLength, + int PunctureCode0, + int PunctureCode1, + int ConvolutionCode0, + int ConvolutionCode1, + int ConvolutionCode2, + int ConvolutionCode3, + int ConvolutionCode4, + int ConvolutionCode5, + int ConvolutionCode6> + class convolution_encoder { + + public: + convolution_encoder() { + + // Set initial and reset values + constraint_register = 0; + puncture_count = 0; + output_valid = 0; + output_valid_count = 0; + + // Store convolution codes in an array which may be loop indexed + convolution_codes[0] = ConvolutionCode0; + convolution_codes[1] = ConvolutionCode1; + convolution_codes[2] = ConvolutionCode2; + convolution_codes[3] = ConvolutionCode3; + convolution_codes[4] = ConvolutionCode4; + convolution_codes[5] = ConvolutionCode5; + convolution_codes[6] = ConvolutionCode6; + + // Similarly for puncture codes, store in array + puncture_codes[0] = PunctureCode0; + puncture_codes[1] = PunctureCode1; + + // Verify that template parameters are correct in simulation + check_params(); + + } // end constructor + + ~convolution_encoder() { + } // end destructor + + // =================================================================================================================== + // CONVOLUTION_ENCODER: Entry point function. + // o Arguments: + // - inputData : Single-bit datastream to be encoded + // - outputData : Encoded datastream; OutputRate-bits wide unless Punctured=true (1-bit wide) or DualOutput=true (2-bits wide) + void operator()(stream< ap_uint<1> > &inputData, + stream< ap_uint > &outputData) { + + Function_convolution_encoder_operator:; + + encode(inputData, outputData); + + }; // operator() + + + private: + + // Shared constants + static const int MAX_CONVOLUTION_CODES = 7; + static const int MAX_PUNCTURE_CODES = 2; + + // Utility template functions + struct EncoderOutputWidth { + enum { width = (Punctured ? 2 : OutputWidth) }; + }; + + struct PunctureRegisterStages { + enum { stages = (DualOutput ? 2*InputRate : InputRate) }; + }; + + struct PunctureCountMax { + enum { max = (DualOutput ? (2*InputRate)-1 : OutputRate-1) }; + }; + + // State variables + ap_uint constraint_register; + ap_uint puncture_register[PunctureRegisterStages::stages]; // No reset required + ap_uint output_register[OutputRate]; // No reset required + ap_uint::bits> puncture_count; + ap_uint<1> output_valid; + ap_uint::bits> output_valid_count; + + // These arrays are considered constant, and are initialized in the constructor + ap_uint convolution_codes[MAX_CONVOLUTION_CODES]; + ap_uint puncture_codes[MAX_PUNCTURE_CODES]; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (ConstraintLength < 3 || ConstraintLength > 9) { + std::cout << "ERROR: " << __FILE__ << ": ConstraintLength must be 3 to 9" << std::endl; + exit(1); + } + if (Punctured) { + if (DualOutput && OutputWidth != 2) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be 2 for a punctured encoder with dual output" << std::endl; + exit(1); + } + if (!DualOutput && OutputWidth != 1) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be 1 for a punctured encoder without dual output" << std::endl; + exit(1); + } + if (InputRate < 2 || InputRate > 12) { + std::cout << "ERROR: " << __FILE__ << ": InputRate must be 2 to 12" << std::endl; + exit(1); + } + if (OutputRate < InputRate+1 || OutputRate > (2*InputRate)-1) { + std::cout << "ERROR: " << __FILE__ << ": OutputRate must be InputRate+1 to (2*InputRate)-1" << std::endl; + exit(1); + } + // Check the puncturing codes are valid + int bits_set = 0; + puncture_code_loop: for (int j=0; j 1) { + std::cout << "ERROR: " << __FILE__ << ": InputRate must be 1" << std::endl; + exit(1); + } + if (OutputRate < 2 || OutputRate > 7) { + std::cout << "ERROR: " << __FILE__ << ": OutputRate must be 2 to 7" << std::endl; + exit(1); + } + if (DualOutput) { + std::cout << "ERROR: " << __FILE__ << ": Dual Output is only supported when Puncturing is used" << std::endl; + exit(1); + } + } + #endif + }; // check_params + + // Core function. Performs convolutional encoding of a datastream, with optional puncturing + void encode(stream< ap_uint<1> > &inputData, + stream< ap_uint > &outputData) { + + Function_convolution_encoder_encode:; + + // Optimal resources and throughput are achieved when pipelined + // Estimated resources are slightly lower when the directive is placed here + #pragma HLS PIPELINE II=1 + + // Ensure state variables are reset + #pragma HLS RESET variable=constraint_register + #pragma HLS RESET variable=puncture_count + #pragma HLS RESET variable=output_valid + #pragma HLS RESET variable=output_valid_count + + // Flatten puncture register to achieve II=1 + #pragma HLS ARRAY_PARTITION variable=puncture_register complete + + ap_uint<1> encoder_in; + ap_uint encoded_data; + + if (!Punctured || DualOutput || puncture_count < InputRate) { + encoder_in = inputData.read(); + + // Perform encoding + encode_loop: for (int i=0; i< EncoderOutputWidth::width; i++) { + ap_uint tmpData = (constraint_register,encoder_in); // temporary variable allows use of .reverse() + encoded_data[i] = (tmpData.reverse() & (convolution_codes[i])).xor_reduce(); + } + + if (!Punctured) { + // Output data directly + outputData << encoded_data; + } else { + // Write into puncture register for puncturing operation + puncture_register_loop: for (int i=PunctureRegisterStages::stages-1; i>0; i--) { + puncture_register[i] = puncture_register[i-1]; + } + puncture_register[0] = encoded_data; + } + + // Shift contraint register for next cycle + constraint_register = (constraint_register,encoder_in); + } + + if (Punctured) { + + /* + In the punctured configuration, the basic convolution encoder is always a rate 1/2 encoder, with two bits output for + every one bit input. After the encoding, certain bits of the rate 1/2 encoded data are punctured (or deleted) and not + transmitted. Thus, for a rate 3/4 punctured encoder, for every three input bits, only four of the six encoded bits generated + by the encoder are actually transmitted. + + The single-output puncturing mode outputs more data than was input. The dual-output puncturing mode outputs less + data than was input. In both cases, some rate control is required, which is implemented with the output_valid signal. + */ + + if (!DualOutput) { + + if (puncture_count == InputRate) { + + // Do puncturing + int k=OutputRate-1; + single_punc_outer_loop: for (int i=InputRate-1; i>=0; i--) { + single_punc_inner_loop: for (int j=0; j0; i--) { + output_register[i][0] = output_register[i-1][0]; + } + output_register[0][0] = 0; + } + + if (output_valid == 1) { + outputData << output_register[OutputRate-1][0]; + } + + } else { // DualOutput + + if (puncture_count == PunctureCountMax::max) { + + // Do puncturing + int row = 0; + int col = OutputRate-1; + dual_width_loop: for (int i=OutputWidth-1; i>=0; i--) { + int offset = i*InputRate; + dual_punc_outer_loop: for (int j=InputRate-1; j>=0; j--) { + dual_punc_inner_loop: for (int k=0; k0; i--) { + output_register[i] = output_register[i-1]; + } + output_register[0] = 0; + + } + + } // DualOutput + + // Master counter to track puncturing status + if (puncture_count == PunctureCountMax::max) { + puncture_count = 0; + } else { + puncture_count++; + } + + // Output valid flag controls writes to output FIFO + if (output_valid_count == PunctureRegisterStages::stages-1) { + output_valid_count = PunctureRegisterStages::stages-1; + output_valid = 1; + } else { + output_valid_count++; + } + + } // Punctured + + } // encode + + }; // end class convolution_encoder + +} // end namespace hls + +#endif // HLS_CONVOLUTION_ENCODER_H + + + diff --git a/vitis/v2020_1/hls/dsp/hls_nco.h b/vitis/v2020_1/hls/dsp/hls_nco.h new file mode 100755 index 00000000..8592178d --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_nco.h @@ -0,0 +1,730 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_NCO_H +#define HLS_NCO_H + +#include "ap_fixed.h" +#include "ap_int.h" +//#include +#include "hls_math.h" +#include +#include + +namespace hls { + +#if (defined(AccumWidth) || \ + defined(PhaseAngleWidth) || \ + defined(SuperSampleRate) || \ + defined(OutputWidth)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // NCO output data structure + // Note that this cannot be included within the NCO class as co-simulation will not succeed + template struct t_nco_output_data { + std::complex< ap_int > outputValue[SuperSampleRate]; + }; + + // Classes used to select implementation architectures for complex multiplier structures + struct NcoDualOutputCmpyFiveMult { + const static int Impl = 5; + }; + struct NcoDualOutputCmpyFourMult { + const static int Impl = 4; + }; + + struct NcoSingleOutputCmpyThreeMult { + const static int Impl = 3; + }; + struct NcoSingleOutputCmpyFourMult { + const static int Impl = 4; + }; + + // =================================================================================================================== + // NCO: Class definition + // o Template Parameters: + // - AccumWidth : The number of bits in the phase accumulator. This determines the precision of the frequencies which can be synthesized + // - PhaseAngleWidth : The number of bits from the phase accumulator which are used to access the lookup of sin and cos values. + // - SuperSampleRate : The number of output samples per clock cycle. Here, it means the number of output samples per call. + // - OutputWidth : The number of bits in the output samples. + // - DualOutputCmpyImpl : Select whether to implement dual-output complex multipliers with 5-multiplier (5 DSP48) or 4-multiplier (6 DSP48) architecture + // using classes NcoDualOutputCmpyFiveMult or NcoDualOutputCmpyFourMult + // - SingleOutputCmpyImpl : Select whether to implement single-output complex multipliers with 3-multiplier (3 DSP48) or 4-multiplier (4 DSP48) architecture + // using classes NcoSingleOutputCmpyThreeMult or NcoSingleOutputCmpyFourMult + // - SingleOutputNegCmpyImpl : Select whether to implement single-output negated complex multipliers with 3-multiplier (3 DSP48) or 4-multiplier (4 DSP48) architecture + // using classes NcoSingleOutputCmpyThreeMult or NcoSingleOutputCmpyFourMult + template< + int AccumWidth, + int PhaseAngleWidth, + int SuperSampleRate, + int OutputWidth, + class DualOutputCmpyImpl, + class SingleOutputCmpyImpl, + class SingleOutputNegCmpyImpl + > class nco { + + public: + + nco(const ap_uint InitPinc, + const ap_uint InitPoff) { + + #pragma HLS reset variable=startInterrupt + #pragma HLS reset variable=phaseAcc + + check_params(); + + create_lut(sinLut); + + phaseAcc = 0; + pincReg = 0; + newPinc = InitPinc; + pincSample = InitPinc; + poffSample = InitPoff; + bigTick = 0; + poffReg = InitPoff; + startInterrupt = 1; //effectively kickstarting with an interrupt + }; // end constructor + + ~nco(){ + }; // end destructor + + // =================================================================================================================== + // NCO: Overloaded entry point function for super sample rate NCO + // o Arguments + // - pinc : Phase Increment. This is the amount by which the phase accumulator will count per sample. In terms of degrees this is pinc/2^AccumWidth * 360 + // - poff : Phase Offset. The units of phase offset are the same as for phase increment. + // - outputData : Complex output data + void operator()(stream< ap_uint > &pinc, + stream< ap_uint > &poff, + stream< t_nco_output_data > &outputData) { + + Function_nco_operator:; + + t_nco_output_data outputSample; + + if (SuperSampleRate == 1) { + if (!pinc.empty()) { + pincSample = pinc.read(); + } + if (!poff.empty()) { + poffSample = poff.read(); + } + nco_singlesample(pincSample, poffSample, outputSample); + outputData << outputSample; + } else { + nco_ssr(pinc, poff, outputData); + } + } //end operator() + + private: + + // Template range limits + // These define the 'solution space' + static const int MIN_PHASE_WIDTH = 4; + static const int MAX_PHASE_WIDTH = 16; + static const int MIN_ACCUM_WIDTH = 4; + static const int MAX_ACCUM_WIDTH = 48; + static const int MIN_SUPER_SAMPLE_RATE = 1; + static const int MAX_SUPER_SAMPLE_RATE = 16; //arbitrary limit + static const int MAX_LOG_SUPER_SAMPLE_RATE = 4; + static const int MIN_OUTPUT_WIDTH = 4; + static const int MAX_OUTPUT_WIDTH = 32; + static const int DSP48_B_WIDTH = 18; + static const int DSP48_P_WIDTH = 48; + static const int MY_PI = 102944; //to fit a DSP48 B port (pi *2^15) + static const int MY_PI_SCALE = 15; //the power of 2 to which my_pi is magnified + static const int INTERRUPT_PERIOD = (SuperSampleRate >>1)+1; // 1 to primeChannel for lobes, 0 for proxy/ + static const int TAYLOR_SHIFT = MY_PI_SCALE-1+PhaseAngleWidth; + + // Variables holding state + ap_uint pincSample, poffSample; + //newPinc is register used to capture changed PINC value + //pincReg holds the previous value of PINC, which is still used during transition period (interrupt) to new PINC value + //poffReg holds POFF value - has no implications for interrupt + //bigTick is value primary DDS increments each sample (SuperSampleRate * PINC). + ap_uint newPinc, pincReg, poffReg, bigTick; + //bigTickTemp is intended to be the output of a DSP48 which calculates bigTick during changes of PINC. + ap_uint interruptTimer, lastTime; //countdown to new PINC being adopted. + ap_uint<1> startInterrupt; + ap_uint phaseAcc; //register holding state value of current phase. + ap_int sinLut[1<<(PhaseAngleWidth-2)]; //The sin/cos lookup array/RAM. No cast necessary on '1' because array size will never exceed 2^31! + //Phi is the angle between adjacent channels (i.e. PINC). It is not the difference in angle between samples from a channel. That will be SSR*PINC. + //Phi[0] is the value for the proxy cmpy, 1 thru SSR/2 are symmetrical pair lobes and phi[primeChannel] is the outlier, if there is one. + ap_int sinPhi[SuperSampleRate], cosPhi[SuperSampleRate]; //the phi values in use + ap_int sinPhiPre[SuperSampleRate], cosPhiPre[SuperSampleRate];//shadow phi values to be switch in to phi in an instant. + //sinDel and cosDel are delay lines which hold estimates of the future values of the primevector in case an interrupt should occur. These values are switched in to replace the prime vector during an interrupt. + ap_int sinDel[INTERRUPT_PERIOD+2], cosDel[INTERRUPT_PERIOD+2]; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (AccumWidth < MIN_ACCUM_WIDTH || AccumWidth > MAX_ACCUM_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": AccumWidth is out of range " << MIN_PHASE_WIDTH << " to " << MAX_PHASE_WIDTH << std::endl; + exit(1); + } + if (PhaseAngleWidth < MIN_PHASE_WIDTH || PhaseAngleWidth > MAX_PHASE_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": PhaseAngleWidth is out of range " << MIN_PHASE_WIDTH << " to " << MAX_PHASE_WIDTH << std::endl; + exit(1); + } + if (SuperSampleRate < MIN_SUPER_SAMPLE_RATE || SuperSampleRate > MAX_SUPER_SAMPLE_RATE ) { + std::cout << "ERROR: " << __FILE__ << ": SuperSampleRate is out of range " << MIN_SUPER_SAMPLE_RATE << " to " << MAX_SUPER_SAMPLE_RATE << std::endl; + exit(1); + } + if (OutputWidth < MIN_OUTPUT_WIDTH || OutputWidth > MAX_OUTPUT_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth is out of range " << MIN_OUTPUT_WIDTH << " to " << MAX_OUTPUT_WIDTH << std::endl; + exit(1); + } + if (PhaseAngleWidth > OutputWidth) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be greater than or equal to PhaseAngleWidth" << std::endl; + exit(1); + } + if (PhaseAngleWidth > AccumWidth) { + std::cout << "ERROR: " << __FILE__ << ": AccumWidth must be greater than or equal to PhaseAngleWidth" << std::endl; + exit(1); + } + if (PhaseAngleWidth < 10 && AccumWidth > PhaseAngleWidth) { + std::cout << "ERROR: " << __FILE__ << ": A small PhaseAngleWidth combined with Taylor Correction (AccumWidth > PhaseAngleWidth) can lead to sin/cos overflow" << std::endl; + exit(1); + } + #endif + } //end check_params + + //Function to perform quarter wave based sin/cos lookup + void quarter_table(ap_uint &phaseAngle, + ap_int &sinVal, + ap_int &cosVal) { + Function_nco_quarter_table:; + const int ANGLE_MASK = (1<<(PhaseAngleWidth-2))-1; //no need for cast as PAW always < 32 + ap_uint<2> quadrant; + ap_uint sinAddr; + ap_uint cosAddr; + + quadrant = phaseAngle >> (PhaseAngleWidth-2); + if (quadrant == 0 || quadrant == 2) { + sinAddr = phaseAngle & ANGLE_MASK; + cosAddr = (phaseAngle & ANGLE_MASK)^ANGLE_MASK; + } else { + sinAddr = (phaseAngle & ANGLE_MASK)^ANGLE_MASK; + cosAddr = phaseAngle & ANGLE_MASK; + } + if (quadrant == 0 || quadrant == 1) { + sinVal = sinLut[sinAddr]; + } else { + sinVal = -sinLut[sinAddr]; + } + if (quadrant == 0 or quadrant == 3) { + cosVal = sinLut[cosAddr]; + } else { + cosVal = -sinLut[cosAddr]; + } + } //end of quarter_table + + + //function to multiply a complex vector by a second vector and the conjugate of the second, giving both complex results. + void dual_op_cmpy(ap_int &a, + ap_int &b, + ap_int &c, + ap_int &d, + ap_int &posresreal, + ap_int &posresimag, + ap_int &negresreal, + ap_int &negresimag) { + Function_nco_dual_op_cmpy:; + ap_int common_factor,fullPosReal, fullPosImag, fullNegReal, fullNegImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + #pragma HLS PIPELINE + if (DualOutputCmpyImpl::Impl == 5) { + common_factor = c*(a+b) + rounding_const; + fullPosReal = common_factor - b*(c+d);// ac + bc - bc - bd = ac - bd + fullPosImag = common_factor - a*(c-d);// ac + bc - ac + ad = bc + ad + fullNegReal = common_factor - b*(c-d);// ac + bc - bc + bd = ac + bd + fullNegImag = common_factor - a*(c+d);// ac + bc - ac - ad = bc - ad + posresreal = fullPosReal >> (OutputWidth-1); + posresimag = fullPosImag >> (OutputWidth-1); + negresreal = fullNegReal >> (OutputWidth-1); + negresimag = fullNegImag >> (OutputWidth-1); + } else { + // 4-multiplier, 6 DSP48 + ap_int fullPosReal, fullPosImag, fullNegReal, fullNegImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + fullPosReal =a*c - b*d + rounding_const; + fullPosImag =a*d + b*c + rounding_const; + fullNegReal =a*c + b*d + rounding_const; + fullNegImag =b*c - a*d + rounding_const; + posresreal = (fullPosReal ) >> (OutputWidth-1); + posresimag = (fullPosImag ) >> (OutputWidth-1); + negresreal = (fullNegReal ) >> (OutputWidth-1); + negresimag = (fullNegImag ) >> (OutputWidth-1); + } + } //end of dual_op_cmpy + + void single_op_cmpy(ap_int &a, + ap_int &b, + ap_int &c, + ap_int &d, + ap_int &resreal, + ap_int &resimag) { + Function_nco_single_op_cmpy:; + ap_int common_factor,fullReal, fullImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + + if (SingleOutputCmpyImpl::Impl == 3) { + common_factor = a*(c+d)+rounding_const; + fullReal = common_factor - d*(a+b);// ac+ad-ad-bd= ac-bd + fullImag = common_factor + c*(b-a); + } else { + // 4-multiplier + fullReal = a*c - b*d + rounding_const; + fullImag = a*d + b*c + rounding_const; + } + resreal = fullReal >> (OutputWidth-1); + resimag = fullImag >> (OutputWidth-1); + } //end of single_op_cmpy + + void single_op_neg_cmpy(ap_int &a, + ap_int &b, + ap_int &c, + ap_int &d, + ap_int &resreal, + ap_int &resimag) { + Function_nco_single_op_neg_cmpy:; + ap_int common_factor,fullReal, fullImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + + if (SingleOutputNegCmpyImpl::Impl == 3) { + common_factor = c*(a+b) + rounding_const; + fullReal = common_factor - b*(c-d); + fullImag = common_factor - a*(c+d); + } else { + // 4-multiplier + fullReal = a*c + b*d + rounding_const; + fullImag = b*c - a*d + rounding_const; + } + resreal = fullReal >> (OutputWidth-1); + resimag = fullImag >> (OutputWidth-1); + } //end of single_op_neg_cmpy + + void accum_phase(ap_uint &pinc, + ap_uint &poff, + ap_uint &phaseOutput) { + Function_nco_accum_phase:; + phaseAcc += pinc; + phaseOutput = phaseAcc + poff; + + } // end of accum_phase + + void sin_cos_lookup(ap_uint &phaseOutput, + ap_int &sinVal, + ap_int &cosVal) { + Function_nco_sin_cos_lookup:; + ap_uint phaseAngle = phaseOutput >> (AccumWidth-PhaseAngleWidth); + ap_int delta; + ap_int deltak; + ap_int offsetC, offsetS; + ap_uint mask; + ap_int coarseSinVal; + ap_int coarseCosVal; + ap_int precC, precS, shiftCoarseSin,shiftCoarseCos; + const int ERR_BUS_WIDTH = AccumWidth > PhaseAngleWidth ? AccumWidth - PhaseAngleWidth : 1; + + quarter_table(phaseAngle, coarseSinVal, coarseCosVal); + + if (AccumWidth > PhaseAngleWidth) {//use Taylor correction + if (ERR_BUS_WIDTH <= DSP48_B_WIDTH) { + //Fit delta with MS bits of truncated splice + + delta = ((phaseOutput) & (((ap_uint)1 << (ERR_BUS_WIDTH)) -1)); + delta = delta << (DSP48_B_WIDTH - (ERR_BUS_WIDTH)); + } else { + delta = (phaseOutput >> (ERR_BUS_WIDTH - DSP48_B_WIDTH)) & ((1<<(DSP48_B_WIDTH))-1); + } + delta = delta ^ (1 << (DSP48_B_WIDTH-1)); //invert top bit + shiftCoarseCos = ((ap_int)coarseCosVal << TAYLOR_SHIFT); + shiftCoarseSin = ((ap_int)coarseSinVal << TAYLOR_SHIFT); + deltak = ((ap_int)delta * (ap_int)MY_PI) >> (DSP48_B_WIDTH); + precC = shiftCoarseCos - deltak * coarseSinVal; //offsetC; + precS = shiftCoarseSin + deltak * coarseCosVal; //offsetS; + cosVal = precC >> TAYLOR_SHIFT; + sinVal = precS >> TAYLOR_SHIFT; + } else { + // i.e. if not (AccumWidth > PhaseAngleWidth) + cosVal = coarseCosVal; + sinVal = coarseSinVal; + } // end of if (AccumWidth > PhaseAngleWidth) + } // end of sin_cos_lookup + + void create_lobes(ap_int &a, + ap_int &b, + t_nco_output_data &outputSample) { + Function_nco_create_lobes:; + int lobe; //loop counter for side-lobes. + ap_int c, d; //real and imag for prime, phi and results from dual output cmpy + const int PRIME_CHANNEL = (SuperSampleRate >> 1); + ap_int sinSample[SuperSampleRate], cosSample[SuperSampleRate]; + + if (PRIME_CHANNEL > 1) { + nco_ssr_label1 : for (lobe = 1; lobe < PRIME_CHANNEL; lobe ++) { + c = cosPhi[lobe]; + d = sinPhi[lobe]; + dual_op_cmpy(a, b, //prime vector + c, d, //phi + cosSample[PRIME_CHANNEL+lobe], sinSample[PRIME_CHANNEL+lobe], //positively rotated result + cosSample[PRIME_CHANNEL-lobe], sinSample[PRIME_CHANNEL-lobe]); //negatively rotated result + //complex multiplication grows bit width by 2* +1, but the binary point is the thing to follow here. For +0.XXXX * -0.XXXX the result is -000.XXXXXXXX + } + } + if (SuperSampleRate % 2 == 0) { + //if even , there will be an outlier lobe + c = cosPhi[PRIME_CHANNEL]; + d = sinPhi[PRIME_CHANNEL]; + single_op_neg_cmpy(a, b, //prime vector + c, d, //phi + cosSample[0],sinSample[0]); //negatively rotated result + } else { + c = cosPhi[PRIME_CHANNEL]; + d = sinPhi[PRIME_CHANNEL]; + dual_op_cmpy(a, b, //prime vector + c, d, //phi + cosSample[PRIME_CHANNEL<<1], sinSample[PRIME_CHANNEL<<1], //positively rotated result + cosSample[0], sinSample[0]); //negatively rotated result + } + //Now bring the primary signal down a notch. + //Why? Well, it isn't a unit vector, and it's been used to multiply all the others, + //so it is a tad bigger than them and needs to be shaved. + c = (((ap_uint)1<<(OutputWidth-1))-2); + d = 0; + single_op_cmpy(a, b, //prime vector + c, d, //phi + cosSample[PRIME_CHANNEL],sinSample[PRIME_CHANNEL]); //negatively rotated result + nco_ssr_label2:for (int x = 0; x < SuperSampleRate; x++) { + outputSample.outputValue[x].real(cosSample[x]); + outputSample.outputValue[x].imag(sinSample[x]); + } + } // end of create_lobes + + //Function to choose whether the prime vector is to be taken from the sin/cos + //output or from the proxy. Includes the code for the proxy itself. + void get_prime(ap_int &sinPrime, + ap_int &cosPrime, + ap_int &sinTick, + ap_int &cosTick, + ap_uint &interruptTimer, + ap_int &a, + ap_int &b) { + Function_nco_get_prime:; + ap_int realResult, imagResult; + + delay_line_loop : for (int k = INTERRUPT_PERIOD+1; k > 0; k--) { + cosDel[k] = cosDel[k-1]; + sinDel[k] = sinDel[k-1]; + } + single_op_cmpy(cosPrime, sinPrime, //prime vector + cosTick, sinTick, //phi + cosDel[0],sinDel[0]); + + if (interruptTimer == 0) { // normal operation + a = cosPrime; + b = sinPrime; + } else { + a = cosDel[INTERRUPT_PERIOD]; + b = sinDel[INTERRUPT_PERIOD]; + } //end of if interruptTimer == 0 + } //end of get_prime + + //Function to create SIN values for table using a very small, very accurate starting angle, then + //rotating this by complex multiplication. This avoids any compiler/library/language-specific values from sin(). + void create_lut(ap_int *rom_table) { + Function_nco_create_lut:; + const int ci_sin_address_width = 17; // Starting angle size for sin-cos table construction + + const int p_addr_width = PhaseAngleWidth-2; //-2 because of quarter table required + const int p_scaling_width = OutputWidth-2; + enum {e_quarter, e_half, e_full, e_double}; + const int p_range = e_quarter; + const int p_phase_offset_req = 1; //require 0.5 address offset in ram? 1 = yes. + const int c_eff_bias = (AccumWidth > PhaseAngleWidth) ? 1:0;//get_eff_bias(configuration->resNoise_Shaping, configuration->resOutput_Width); + const int p_eff_bias = c_eff_bias; + + const double delta = 4.7936899621426287e-5; //2.0*MATH_PI*2.0**(-CI_SIN_ADDRESS_WIDTH); + double alpha = 1.1489731724373268e-9; //2.0*sin(delta/2.0)**2; + double beta = 4.7936899603068881e-5; //sin(delta); + double sinda_1 = 0.0, cosda_1 = 0.0, sinda = 0.0, cosda = 0.0, sinda_2 = 0.0, cosda_2 = 0.0, beta_2 = 0.0, alpha_2 = 0.0, sin_r = 0.0, sin_s_r = 0.0, sin_m_r; + double offset = 0; + double beta_1 = beta; + double alpha_1 = alpha; + const int b = 0; //b is the number of bits by which the RAM table exceeds one quadrant i.e. there are 2^B quadrants to fill. + int idx_off = 0, start = 0; + double sin_x = 0.0; + double x1 = 0.0, x2 = 0.0, x3 = 0.0; + + // generate sin(delta) and cos(delta) + sinda_1 = beta; + cosda_1 = 1.0-alpha; + + // Grow rotation in powers of 2. Stop when we have half of table increments. This is because the raw alpha, beta and delta above + // are for 2^17 addresses. For most cases we need fewer addresses, so larger alphas and betas are now calculated. + + alpha_beta_loop : for (int j = 1; j <=(ci_sin_address_width-p_addr_width-3+b); j++) { + sinda = sinda_1; + cosda = cosda_1; + + sinda_1 = sinda -alpha*sinda+beta*cosda; + cosda_1 = cosda -alpha*cosda-beta*sinda; + + // keep beta and alpha for D/2 + beta_1 = sinda_1; + alpha_1 = 2.0*sinda*sinda; + + beta = sinda_1; + alpha = 2.0*sinda*sinda; + } + + // Double angle to that we have an angle that takes + // us from one table entry to the next (table phase increment) + sinda_2 = sinda_1 -alpha_1*sinda_1+beta_1*cosda_1; + cosda_2 = cosda_1 -alpha_1*cosda_1-beta_1*sinda_1; + + beta_2 = sinda_2; + alpha_2 = 2.0*sinda_1*sinda_1; + + if (p_phase_offset_req) { + // Start with half angle (of 0.5 ULP of phase) + sinda = sinda_1; + cosda = cosda_1; + offset = 0.5; + idx_off = 1; + } else { + sinda = 0.0; + cosda = 1.0; + offset = 0.0; + idx_off = 0; + } + + // we need a couple of extra iterations to prime the loop for taylor + // For Taylor the raw values are modified such that when interpolation takes + //place the error is biased around zero rather than always positive as would occur with + //unmodified values. + if (p_eff_bias == 1) { + start = -1; + } else { + start = 0; + } + + p_add_width_loop : for (int i = start; i < (1<= 0) { + double sin_s_r = hls::floor(sin_r * (double)(1<<(OutputWidth-1))+0.5); + rom_table[i] = (ap_int)sin_s_r; + } + + // Rotate by table phase increment + sinda_1 = sinda-alpha_2*sinda+beta_2*cosda; + cosda = cosda-alpha_2*cosda-beta_2*sinda; + sinda = sinda_1; + + } else if (i < (1<<(p_addr_width+1-b))) { + // second quadrant, so just flip first quadrant + rom_table[i] = rom_table[((1<<(p_addr_width+1-b))) -i- idx_off]; + } else if (i < ((1<<(p_addr_width-b))*3)) { + // Third quadrant + // Is first but negated + rom_table[i] = -(rom_table[i-(1<<(p_addr_width+1-b))]); + } else if (i < ((1<<(p_addr_width+2-b)))) { + // Fourth quadrant. + // Is first but fipped and negated + rom_table[i] = -(rom_table[(1<<(p_addr_width+2-b))-i-idx_off]); + } + } + } + + // Simple sample variant + void nco_singlesample(ap_uint &pinc, + ap_uint &poff, + t_nco_output_data &outputSample) { + Function_nco_singlesample:; + ap_uint phaseOutput; + ap_int sinSample, cosSample; + + accum_phase(pinc, poff, phaseOutput); + sin_cos_lookup(phaseOutput, sinSample, cosSample); + outputSample.outputValue[0].real(cosSample); + outputSample.outputValue[0].imag(sinSample); + } //end of nco_singlesample() + + + //Super-sample rate variant. Streams are used because a write to PINC must be detected. + void nco_ssr(stream< ap_uint > &pinc, + stream< ap_uint > &poff, + stream< t_nco_output_data > &outputData) { + Function_nco_ssr:; + + const int hybridFactor1 = (SuperSampleRate - ((SuperSampleRate >> 1)+1)); + const int hybridFactor2 = ((SuperSampleRate >> 1)+1); + + const int primeChannel = (SuperSampleRate >> 1); + ap_uint lobeAngle, phaseOutput, sincosInput; + ap_int a, b; //real and imag for prime, phi and results from dual output cmpy + t_nco_output_data outputSample; + ap_int sinOp, cosOp; //the values output by the sin/cos LUT + ap_int sinNorm, cosNorm; //the values of a single channel. + + //A change to poff does not force a recalculation of the lobe angles, since they are + //derived from the primary output. + if (!poff.empty()) { + poffReg = poff.read(); + } + + lastTime = interruptTimer; + if (!pinc.empty() ) { + newPinc = pinc.read(); + startInterrupt = 1; + } + if (startInterrupt == 1) { + interruptTimer = INTERRUPT_PERIOD; + //Because PINC has changed, all the phi angles must be recalculated. They + //use the sin/cos table to do this, so the sin/cos table isn't available + //for normal output. + startInterrupt = 0; + } else if (interruptTimer != 0) { + interruptTimer--; + }//end of if PINC has changed. + + ap_uint x, y, z; + if (lastTime == 1) { //switch over to new values + //at the end of the interrupt period, PINC is set to a hybrid value of old and new + //PINC values to avoid a phase discontinuity. + bigTick = pincReg * hybridFactor1 + newPinc * hybridFactor2; + } else { + // Set up MADD values + x = pincReg; + y = SuperSampleRate ; + z = 0; + bigTick = x * y + z; + } + + //keep on ticking, regardless of what sin/cos is being used for. + //this keeps the phase accum in sync with the proxy to avoid discontinuities into + //or out of the interrupt period + accum_phase(bigTick, poffReg, phaseOutput); + + //Decide what the SIN/COS lookup table (sin_cos_lookup) is being used for. + if (interruptTimer == 0 ) { + sincosInput = phaseOutput; + } else if (interruptTimer == INTERRUPT_PERIOD) { + //First, read PINC * T * SuperSampleRate which is the phase rotation for the proxy cmpy + sincosInput = newPinc * SuperSampleRate * INTERRUPT_PERIOD; + } else { + sincosInput = interruptTimer * newPinc; + } + sin_cos_lookup(sincosInput, sinOp, cosOp); + sinNorm = sinOp; //always assign, but dont necessarily use. + cosNorm = cosOp; //always assign, but dont necessarily use. + + // Ensure these variables are implemented as registers, not memory, to achieve II=1 when + // the function is pipelined + #pragma HLS ARRAY_PARTITION variable=sinPhiPre complete + #pragma HLS ARRAY_PARTITION variable=cosPhiPre complete + + if (interruptTimer == 0) { + pincReg = newPinc; + for (int i = 0; i < INTERRUPT_PERIOD; i++){ + sinPhi[i] = sinPhiPre[i]; + cosPhi[i] = cosPhiPre[i]; + } + } else { + if (interruptTimer == INTERRUPT_PERIOD) { + sinPhiPre[0] = sinOp; + cosPhiPre[0] = cosOp; + } else { + sinPhiPre[interruptTimer] = sinOp; + cosPhiPre[interruptTimer] = cosOp; + } + } + + //Decide whether to use the primary DDS output or the proxy cmpy + get_prime(sinNorm, cosNorm, //the primary DDS output + sinPhi[0],cosPhi[0], //the rotation step for the proxy + interruptTimer, + a, b); //the output vector to use. + + //create the multiple output vectors + create_lobes(a, b, outputSample); + outputData << outputSample; + + } // end of nco_ssr() - super-sample rate variant + + }; // end class nco + +} //end namespace hls + +#endif // HLS_NCO_H + + diff --git a/vitis/v2020_1/hls/dsp/hls_qam_demod.h b/vitis/v2020_1/hls/dsp/hls_qam_demod.h new file mode 100755 index 00000000..5ba45d05 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_qam_demod.h @@ -0,0 +1,129 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_QAM_DEMOD_H +#define HLS_QAM_DEMOD_H + +#include "ap_int.h" +#include +#include +#include "hls/dsp/utils/hls_dsp_common_utils.h" + +namespace hls { +#if (defined(InputWidth) || \ + defined(Constellation)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // QAM DEMODULATOR: Class definition + // o Template parameters: + // - Constellation : Selects the QAM modulation scheme to be used (QPSK, QAM16, etc) + // - InputWidth : Number of bits in each scalar component of the complex t_in input. + // The qam_mod block performs I/Q to symbol mapping of a hard decision QAM decoder. + template< + class Constellation, + int InputWidth> + class qam_demod { + + public: + + typedef ap_int< InputWidth > t_incomponent; + typedef std::complex< t_incomponent > t_in; + + qam_demod() { + // Verify that template parameters are correct in simulation + check_params(); + }; // end constructor + + ~qam_demod() { + }; //end destructor + + //Utilities + //static function - owned by class not object since return value doesn't vary by object + static int get_symbol_width() { + return Constellation::SYMBOL_WIDTH; + } + + // =================================================================================================================== + // QAM DEMODULATOR: Entry point function + // o Arguments: + // - inputData : type t_in. This is a complex IQ input signal. + // - symbol : type t_symbol. This is an N-bit symbol determined as the closest match to the input IQ signal + void operator()(const t_in &inputData, + typename Constellation::t_symbol &symbol ) { + + Function_qam_demod_operator:; + + //take leading bits of input data + typename Constellation::t_hard_in hardIn; + + const int shift = InputWidth-Constellation::SYMBOL_WIDTH/2; + + hardIn.real(inputData.real() >> shift); + hardIn.imag(inputData.imag() >> shift); + + Constellation::hardDecode(hardIn, symbol); + + } // operator() + + private: + static const int MAX_INPUT_WIDTH = 16; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (InputWidth > MAX_INPUT_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be " << MAX_INPUT_WIDTH << " or less" << std::endl; + exit(1); + } + if (InputWidth < Constellation::STAR_WIDTH && Constellation::QAMTYPE == 0) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be at least " << Constellation::STAR_WIDTH << " for QPSK" << std::endl; + exit(1); + } + if (InputWidth < Constellation::STAR_WIDTH && Constellation::QAMTYPE == 1) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be at least " << Constellation::STAR_WIDTH << " for QAM16" << std::endl; + exit(1); + } + if (InputWidth < Constellation::STAR_WIDTH && Constellation::QAMTYPE == 2) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be at least " << Constellation::STAR_WIDTH << " for QAM64" << std::endl; + exit(1); + } + #endif + } //end of check_params + + }; // qam_demod + +} // end namespace hls + +#endif // HLS_QAM_DEMOD_H + + diff --git a/vitis/v2020_1/hls/dsp/hls_qam_mod.h b/vitis/v2020_1/hls/dsp/hls_qam_mod.h new file mode 100755 index 00000000..a038ff5a --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_qam_mod.h @@ -0,0 +1,113 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_QAM_MOD_H +#define HLS_QAM_MOD_H + +#include "ap_int.h" +#include +#include +#include "hls/dsp/utils/hls_dsp_common_utils.h" + +namespace hls { +#if (defined(OutputWidth) || \ + defined(Constellation)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // QAM MODULATOR: Class definition + // o Template parameters: + // - Constellation : Selects the QAM modulation scheme to be used (QPSK, QAM16, etc) + // - OutputWidth : Number of bits in each scalar component of the complex t_iq output. + // The qam_mod block performs symbol to I/Q mapping as used in a QAM encoder. The output is zero extended up to the OutputWidth template parameter + template< + class Constellation, + int OutputWidth> + class qam_mod { + + public: + + typedef ap_int< OutputWidth > t_outcomponent; + typedef std::complex< t_outcomponent > t_iq; + + qam_mod() { + check_params(); + };//end of constructor + + ~qam_mod() { + }; //end of destructor + + //Utilities + //static function - owned by class not object since return value doesn't vary by object + static int get_symbol_width() { + return Constellation::SymbolWidth; + } + + // =================================================================================================================== + // QAM MODULATOR: Entry point function + // o Arguments: + // - symbol : type t_symbol. This is an N-bit symbol to be iq encoded. N is determined by the choice of QAM modulation scheme. + // - outputData : type t_iq. This is a complex IQ output signal. + void operator()(const typename Constellation::t_symbol &symbol, + t_iq &outputData) { + + Function_qam_mod_operator:; + + typename Constellation::t_star iq; + + Constellation::hardEncode(symbol,iq); + outputData.real((t_outcomponent)iq.real() << (OutputWidth-Constellation::STAR_WIDTH)); + outputData.imag((t_outcomponent)iq.imag() << (OutputWidth-Constellation::STAR_WIDTH)); + } // operator() + + private: + static const int MAX_OUTPUT_WIDTH = 16; + + Constellation asterism; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (OutputWidth < Constellation::STAR_WIDTH || OutputWidth > MAX_OUTPUT_WIDTH) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be between " << Constellation::STAR_WIDTH << " and " << MAX_OUTPUT_WIDTH << std::endl; + exit(1); + } + #endif + } //end of check_params + + }; // qam_mod + +} //end namespace hls + +#endif // HLS_QAM_MOD_H + + diff --git a/vitis/v2020_1/hls/dsp/hls_sqrt_cordic.h b/vitis/v2020_1/hls/dsp/hls_sqrt_cordic.h new file mode 100755 index 00000000..6cd6f254 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_sqrt_cordic.h @@ -0,0 +1,88 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_SQRT_CORDIC_H +#define HLS_SQRT_CORDIC_H + +#include "hls/dsp/utils/hls_cordic.h" + +namespace hls { + + // =================================================================================================================== + // Input and output interfaces + template struct sqrt_input { + typedef cordic_inputs in; + }; + + template struct sqrt_output { + typedef cordic_outputs out; + }; + + // =================================================================================================================== + // SQRT: Entry point function. + // o Template parameters: + // - DataFormat : Selects between unsigned fraction (with integer width of 1 bit) and unsigned integer formats + // - InputWidth : Defines overall input data width + // - OutputWidth : Defines overall output data width + // - RoundMode : Selects the rounding mode to apply to the output data + // o Arguments: + // - x : Input data + // - sqrtX : Square root of input data + // o The internal CORDIC function applies its own rounding, therefore the interface + // ap_fixed types need not specify rounding and saturation modes + template < + int DataFormat, + int InputWidth, + int OutputWidth, + int RoundMode + > void sqrt(const typename sqrt_input::in &x, + typename sqrt_output::out &sqrtX) { + + Function_sqrt_cordic:; + + cordic_base< + CORDIC_F_SQRT, + CORDIC_FALSE, + DataFormat, + CORDIC_FORMAT_RAD, + InputWidth, + OutputWidth, + CORDIC_ITER_AUTO, + CORDIC_PREC_AUTO, + RoundMode, + CORDIC_SCALE_NONE>(x, sqrtX); + } + +} // end namespace hls + +#endif // HLS_SQRT_CORDIC_H + + diff --git a/vitis/v2020_1/hls/dsp/hls_viterbi_decoder.h b/vitis/v2020_1/hls/dsp/hls_viterbi_decoder.h new file mode 100755 index 00000000..2c891f48 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/hls_viterbi_decoder.h @@ -0,0 +1,754 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_VITERBI_DECODER_H +#define HLS_VITERBI_DECODER_H + +#include "hls/dsp/utils/hls_dsp_common_utils.h" +#include "ap_int.h" +#include + +namespace hls { + + // =================================================================================================================== + // Viterbi Decoder input data structure + // + // Base template + template struct viterbi_decoder_input { + ap_uint data; + }; + + // Specialization for soft data with erasures + template struct viterbi_decoder_input { + ap_uint data; + ap_uint erase; + }; + + // Specialization for soft data with no erasures, or hard data + template struct viterbi_decoder_input { + ap_uint data; + }; + + + // =================================================================================================================== + // VITERBI_DECODER: Class definition + // o Template parameters: + // - ConstraintLength : The constraint length, K. Supported range is 3 to 9. + // - TracebackLength : Number of states to trace back through the trellis during decoding. Use at least 6x ConstraintLength, or at least 12x ConstraintLength for punctured codes + // - HasEraseInput : When true, an Erase input is present on the core to flag erasures (null symbols) in a punctured code + // - SoftData : When true, the function accepts soft (multi-bit) input data + // - InputDataWidth : Specifies width of the input data; set to 1 for hard data, 3-5 for soft data + // - SoftDataFormat : Specifies soft data formatting; 0 -> Signed Magnitude, 1 -> Offset Binary + // - OutputRate : Specifies output rate of the matching convolution encoder. Determines number of inputs buses for decoder. + // - ConvolutionCode0 : Convolution code for rates 1/2 to 1/7 - + // - ConvolutionCode1 : Convolution code for rates 1/2 to 1/7 | + // - ConvolutionCode2 : Convolution code for rates 1/3 to 1/7 | + // - ConvolutionCode3 : Convolution code for rates 1/4 to 1/7 | Length (in binary) for all convolution codes (if used) must equal the constraint length value. + // - ConvolutionCode4 : Convolution code for rates 1/5 to 1/7 | + // - ConvolutionCode5 : Convolution code for rates 1/6 to 1/7 | + // - ConvolutionCode6 : Convolution code for rate 1/7 - + template< + int ConstraintLength, + int TracebackLength, + bool HasEraseInput, + bool SoftData, + int InputDataWidth, + int SoftDataFormat, + int OutputRate, + int ConvolutionCode0, + int ConvolutionCode1, + int ConvolutionCode2, + int ConvolutionCode3, + int ConvolutionCode4, + int ConvolutionCode5, + int ConvolutionCode6> + class viterbi_decoder { + + public: + + viterbi_decoder() { + + // Verify that template parameters are correct in simulation + check_params(); + + // Define ACS connectivity + costs_index_outer_loop : for (int state=0; state > &inputData, + stream< ap_uint<1> > &outputData) { + + Function_viterbi_decoder_operator:; + + decode(inputData, outputData); + + }; // operator() + + private: + + // Calculation of internal widths and parameters which are instance-specific + struct bmu_output_width { + enum { width = (SoftData == 1 ? bitstorepresent< ((1 << (InputDataWidth))-1) * OutputRate >::bits : 3) }; + }; + + struct acs_width { + enum { width = InputDataWidth + OutputRate + 3 - 2 + (ConstraintLength >= 8 ? 1 : 0) }; + }; + + struct block_depth_x3 { + enum { depth = 3 * TracebackLength }; + }; + + struct state_bits { + enum { bits = ConstraintLength-1 }; + }; + + struct number_of_states { + enum { states = 1 << state_bits::bits }; + }; + + struct GetBmuCostsMemEntries { + enum { entries = 1 << OutputRate }; + }; + + // Constants for SoftDataFormat + static const int OFFSET_BINARY = 1; + static const int SIGNED_MAGNITUDE = 0; + + static const int BRANCHES = 2; + static const int TOTAL_BLOCKS = 6; // Six addressing blocks are used + + // Thresholds for address generators + static const int WRITE_BLOCK_COUNT_THRESH = 2; + static const int TRACEBACK_BLOCK_COUNT_THRESH = 4; + + // Latency (input samples required) before an output is available + static const int DATA_VALID_LATENCY = (4*TracebackLength)+ConstraintLength-1; + + // These (effectively constant) variables store the indices for connecting the ACS units, and are initialized in the constructor + // The do not generate any logic - they are simply lookups which degenerate to wiring when the ACS units are connected. + int bmu_costs_index[number_of_states::states][BRANCHES]; + int input_costs_index[number_of_states::states][BRANCHES]; + + // State variables + ap_uint< acs_width::width > path_metrics[number_of_states::states]; + ap_uint traceback_memory[1 << bitstorepresent< block_depth_x3::depth >::bits]; + ap_uint lifo_memory[1 << bitstorepresent< block_depth_x3::depth >::bits]; + ap_uint< bitstorepresent::bits > base_count; + ap_uint< bitstorepresent< block_depth_x3::depth >::bits > write_and_output_addr, traceback_addr, reg_write_and_output_addr; + ap_uint< bitstorepresent::bits > block_count; + ap_uint<1> output_valid, decode_bit, traceback_bit, norm_sr[2], norm_reg; + ap_uint traceback_state, decode_state; + ap_uint< bitstorepresent< (4*TracebackLength)+ConstraintLength-1 >::bits > output_valid_count; + ap_uint< number_of_states::states +1 > reg_decode_write, reg_traceback_write; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + + if (ConstraintLength < 3 || ConstraintLength > 9) { + std::cout << "ERROR: " << __FILE__ << ": ConstraintLength must be 3 to 9" << std::endl; + exit(1); + } + if (TracebackLength < 12) { + std::cout << "ERROR: " << __FILE__ << ": TracebackLength must be at least 12" << std::endl; + exit(1); + } + if (HasEraseInput && (SoftData == 0)) { + std::cout << "ERROR: " << __FILE__ << ": Puncturing/Erasure can only be used with soft data" << std::endl; + exit(1); + } + if (OutputRate < 2 || OutputRate > 7) { + std::cout << "ERROR: " << __FILE__ << ": OutputRate must be 3 to 7" << std::endl; + exit(1); + } + if (SoftData > 0) { + if (InputDataWidth < 3 || InputDataWidth > 5) { + std::cout << "ERROR: " << __FILE__ << ": InputDataWidth must be 3 to 5" << std::endl; + exit(1); + } + } + switch (OutputRate) { + case 2: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 3: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 4: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 5: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0 || + ConvolutionCode4 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 6: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0 || + ConvolutionCode4 == 0 || + ConvolutionCode5 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 7: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0 || + ConvolutionCode4 == 0 || + ConvolutionCode5 == 0 || + ConvolutionCode6 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + default: + std::cout << "ERROR: " << __FILE__ << ": OutputRate is out of range" << std::endl; + exit(1); + } + + #endif + }; //end of function check_params + + + // Overloaded templated functions to hide .erase struct member when erasures are not implemented + template ap_uint<1> get_erase_bit(int i, viterbi_decoder_input d) { + Function_viterbi_decoder_erase_bit_has_erase:; + ap_uint<1> e = d.erase[i]; + return e; + } + + template ap_uint<1> get_erase_bit(int i, viterbi_decoder_input d) { + Function_viterbi_decoder_get_erase_bit_no_erase:; + return 0; + } + + // =================================================================================================================== + // Utility functions + + // Count the number of 1's to determine the Hamming distance + template ap_uint count_ones(ap_uint vec) { + Function_viterbi_decoder_count_ones:; + ap_uint sum = 0; + count_ones_loop : for (int i=0; i constraint_reg = 0; + ap_uint<1> output_bit = 0; + int res = 0; + int const_reg = 0; + + // Build array of codes which we can loop over + // Maximally-size this; we'll use just the codes required, and use the LSBs of each + // The user can specify the codes in the radix they require, and store them in the int template parameters + const int MAX_CODES = 7; + ap_uint codes[MAX_CODES] = {ConvolutionCode0,ConvolutionCode1,ConvolutionCode2,ConvolutionCode3,ConvolutionCode4,ConvolutionCode5,ConvolutionCode6}; + + code_reverse_loop : for (int i=0; i > &inputData, + stream< ap_uint<1> > &outputData) { + + Function_viterbi_decoder_decode:; + + // Internal variables not holding state + viterbi_decoder_input decoder_in; + ap_uint din[OutputRate], din_formatted[OutputRate]; + ap_uint erase; + ap_uint< bmu_output_width::width > bmu_costs[GetBmuCostsMemEntries::entries]; + ap_uint< acs_width::width > input_costs[number_of_states::states]; + ap_uint< number_of_states::states > path_from_acs, decode; + ap_uint< number_of_states::states +1 > traceback_write, decode_write, traceback_read, decode_read; + ap_uint< number_of_states::states > traceback; + ap_uint< bitstorepresent< block_depth_x3::depth >::bits > traceback_fbk, traceback_incr, write_fbk, write_incr, offset_wr, offset_traceback; + ap_uint< number_of_states::states > norm_check = 0; + ap_uint<1> lifo_out, output_valid_count_incr, base_count_tc; + ap_uint<1> norm = 0; + ap_uint<1> normalize = 0; + + // Force function pipelining to permit full-throughput streaming operation + #pragma HLS PIPELINE II=1 + + // Ensure state variables are reset to initial values set up in the constructor + #pragma HLS RESET variable=path_metrics + #pragma HLS RESET variable=base_count + #pragma HLS RESET variable=write_and_output_addr + #pragma HLS RESET variable=traceback_addr + #pragma HLS RESET variable=block_count + #pragma HLS RESET variable=decode_state + #pragma HLS RESET variable=traceback_state + #pragma HLS RESET variable=decode_bit + #pragma HLS RESET variable=traceback_bit + #pragma HLS RESET variable=output_valid_count + #pragma HLS RESET variable=output_valid + #pragma HLS RESET variable=norm_reg + #pragma HLS RESET variable=norm_sr + + // Ensure path_metrics array is implemented as 1 register per ACS + // which is relevant when reset is implemented + #pragma HLS ARRAY_PARTITION variable=path_metrics complete + + // Ensure normalization shift register is implemented as registers, rather than a RAM with reset + #pragma HLS ARRAY_PARTITION variable=norm_sr complete + + // Required to achieve II=1 when pipelined + #pragma HLS DEPENDENCE variable=traceback_memory inter false + #pragma HLS DEPENDENCE variable=lifo_memory inter false + + // TIP: Comment-in or set these directives from Tcl to force use of Block RAM for decoder memories + // Small constraint lengths will tend to use distributed memory, larger constraint lengths Block RAM + //#pragma HLS RESOURCE variable=traceback_memory core=RAM_2P_BRAM + //#pragma HLS RESOURCE variable=lifo_memory core=RAM_2P_BRAM + + // Flatten input arrays to achieve II=1 and ensure only a register is synthesized + #pragma HLS ARRAY_PARTITION variable=input_costs complete dim=0 + #pragma HLS ARRAY_PARTITION variable=bmu_costs complete dim=0 + + // Blocking read from FIFO interface + decoder_in = inputData.read(); + + // -------------------------------------------- + // Branch Metric Unit (BMU) + // Format input data and compute branch metrics + // -------------------------------------------- + if (SoftData) { + + // Soft data, decoded using Euclidean metric. Soft decision data offers improved BER + // performance over hard-coded data. + + const int ADDER_COUNT = GetBmuCostsMemEntries::entries; + + ap_uint inv_input[OutputRate]; + ap_uint clean_input[OutputRate]; + ap_uint add_input[ADDER_COUNT][OutputRate]; + ap_uint add_output[ADDER_COUNT][OutputRate]; + + // Ensures II=1 can be met for higher values of OutputRate by forcing a register + #pragma HLS ARRAY_PARTITION variable=add_input complete dim=0 + + soft_data_input_loop : for (int input=0; input do nothing, MSB == 0 => invert LSBs + signed_magnitude_loop : for (int bit=0; bit> bit) % 2; + if (condition != 0) { + add_input[add_type][bit] = inv_input[bit]; + } else { + add_input[add_type][bit] = clean_input[bit]; + } + } + } + + soft_data_add_loop : for (int add_type=0; add_type<(1<<2); add_type++) { + add_output[add_type][1] = add_input[add_type][0] + add_input[add_type][1]; + } + + if (OutputRate >= 3) { // build adder tree structure since more than two inputs + soft_data_bmu_add_outer_loop : for (int i=3; i<=OutputRate; i++) { + soft_data_bmu_add_inner_loop : for (int add_type=0; add_type<(1< hard_input; + hard_data_assign_loop : for (int input=0; input(hard_input ^ ap_uint(i)); + } + } + + + // Connect ACS units + acs_feedback_loop : for (int state=0; state< number_of_states::states; state++) { + input_costs[state] = path_metrics[state]; + norm_check[state] = path_metrics[state][acs_width::width-1]; + } + + // Determine if normalization of the branch metrics is necessary + // Normalization is necessary when the ACS metrics exceed a threshold, in order to avoid internal overflow + ap_uint< number_of_states::states + 1 > norm_check_concat = (~norm_reg,norm_check); // Fold single-cycle behavior into comparison + if (ConstraintLength > 8) { + // To meet HLS timing estimates at 4ns on a 7 Series -1 speedgrade device, it is necessary to distribute the comparator over a number of logic levels + const int TOTAL_BITS = (number_of_states::states + 1); + const int CHUNK1_BITS = TOTAL_BITS / 3; + const int CHUNK2_BITS = CHUNK1_BITS; + const int CHUNK3_BITS = TOTAL_BITS - (CHUNK1_BITS + CHUNK2_BITS); + ap_uint norm_chunk1 = norm_check_concat(CHUNK1_BITS-1,0); + ap_uint norm_chunk2 = norm_check_concat(CHUNK1_BITS+CHUNK2_BITS-1,CHUNK1_BITS); + ap_uint norm_chunk3 = norm_check_concat(TOTAL_BITS-1,CHUNK1_BITS+CHUNK2_BITS); + ap_uint and_chunks = norm_chunk1 & norm_chunk2; + norm = and_chunks.and_reduce() & norm_chunk3.and_reduce(); + } else { + norm = norm_check_concat.and_reduce(); + } + + norm_reg = norm; + norm_sr[1] = norm_sr[0]; // Delay of normalization pulse to align with expected data + norm_sr[0] = norm_reg; + normalize = norm_sr[1]; + + // -------------------------------------------- + // Add-compare-select (ACS) stage + // Optimized to map efficiently to carry chain logic + // -------------------------------------------- + acs_loop : for (int state=0; state< number_of_states::states; state++) { + const int ACS_WIDTH = acs_width::width; + ap_uint cost[BRANCHES]; + + // Add + acs_add_loop : for (int branch=0; branch bmu_in = 0; + bmu_in = bmu_costs[bmu_costs_index[state][branch]]; + bmu_in[ACS_WIDTH-1] = normalize; + cost[branch] = bmu_in + input_costs[input_costs_index[state][branch]]; + + if (~normalize[0] == 0) { + cost[branch][ACS_WIDTH] = 0; + } + } + + // Compare + ap_uint<1> comp_out_lut = (cost[0][ACS_WIDTH] ^ cost[1][ACS_WIDTH]); + comp_out_lut[0] = ~comp_out_lut[0]; + + ap_uint sub = (cost[0]) - (cost[1]); + ap_uint<1> comp_out = ~sub[ACS_WIDTH+1]; + path_from_acs[state] = comp_out; + + ap_uint<1> ovfl = cost[0][ACS_WIDTH] & cost[1][ACS_WIDTH]; + ap_uint<2> sw = (sub[ACS_WIDTH+1],ovfl); + + // Select + switch (sw) { + case 2: + path_metrics[state] = cost[0]; + break; + case 0: + path_metrics[state] = cost[1]; + break; + default: + path_metrics_saturate_loop : for (int bit=0; bit= WRITE_BLOCK_COUNT_THRESH){ + write_fbk = 0; + write_incr = offset_wr; + } else { + write_fbk = write_and_output_addr; + write_incr = (block_count <= WRITE_BLOCK_COUNT_THRESH ? 1 : ~(0)); + } + write_and_output_addr = write_fbk + write_incr; + + // Set up offset for traceback address generator based on current block + switch (block_count) { + case 0: + offset_traceback = TracebackLength-1; + break; + case 1: + offset_traceback = 2*TracebackLength-1; + break; + case 2: + offset_traceback = 3*TracebackLength-1; + break; + default: + offset_traceback = 0; + } + + // Note: This relies on initialization in the constructor to achieve correct initial offset + if (base_count_tc == 1 && block_count < TRACEBACK_BLOCK_COUNT_THRESH) { + traceback_fbk = 0; + traceback_incr = offset_traceback; + } else { + traceback_fbk = traceback_addr; + traceback_incr = (block_count == 0 || block_count >= TRACEBACK_BLOCK_COUNT_THRESH ? 1 : ~(0)); + } + traceback_addr = traceback_fbk + traceback_incr; + + // Traceback block counter + if (base_count_tc == 1) { + if (block_count == TOTAL_BLOCKS-1) { + block_count = 0; + } else { + block_count++; + } + } + + // Master counter + if (base_count == TracebackLength-1) { + base_count = 0; + } else { + base_count++; + } + + if (output_valid){ + outputData << lifo_out; + } + + }; + + }; // end class viterbi_decoder + +} // end namespace hls + +#endif // HLS_VITERBI_DECODER_H + + diff --git a/vitis/v2020_1/hls/dsp/utils/hls_cordic.h b/vitis/v2020_1/hls/dsp/utils/hls_cordic.h new file mode 100755 index 00000000..674efedd --- /dev/null +++ b/vitis/v2020_1/hls/dsp/utils/hls_cordic.h @@ -0,0 +1,688 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_CORDIC_H +#define HLS_CORDIC_H + +#include "hls/dsp/utils/hls_cordic_functions.h" + +namespace hls { + +#if (defined(CordicFunction) || \ + defined(CoarseRotate) || \ + defined(DataFormat) || \ + defined(PhaseFormat) || \ + defined(InputWidth) || \ + defined(OutputWidth) || \ + defined(Iterations) || \ + defined(Precision) || \ + defined(RoundMode) || \ + defined(ScaleComp)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // CORDIC: Entry point function. + // o Template parameters: + // - CordicFunction : Selects the CORDIC function to implement + // - CoarseRotate : When true, extends the input/output range from the first quadrant [-pi/4,+pi/4] to the full circle + // - DataFormat : Selects between unsigned fraction (with integer width of 1 bit) and unsigned integer formats + // - PhaseFormat : Selects whether the phase is expressed in radians or scaled radians (pi * 1 radian) + // - InputWidth : Defines overall input data width + // - OutputWidth : Defines overall output data width + // - Iterations : Overrides automatic calculation of required number of iterations to meet precision requirements + // - Precision : Overrides automatic calculation of internal precision requirements + // - RoundMode : Selects the rounding mode to apply to the output data + // - ScaleComp : Enables compensation of the CORDIC magnitude scale factor at the output, for rotation and translation only + // o Arguments: + // - inputData : Input with format dependent on CordicFunction. See hls_cordic_functions.h for details + // - outputData : Output with format dependent on CordicFunction. See hls_cordic_functions.h for details + // o The CORDIC function applies its own rounding, therefore the interface ap_fixed types need not specify rounding and saturation modes + template < + int CordicFunction, + bool CoarseRotate, + int DataFormat, + int PhaseFormat, + int InputWidth, + int OutputWidth, + int Iterations, + int Precision, + int RoundMode, + int ScaleComp + > void cordic_base(const cordic_inputs &inputData, + cordic_outputs &outputData) { + + Function_cordic_base:; + + #ifndef __SYNTHESIS__ + // Verify template parameters are correct in simulation + + if ((CordicFunction < CORDIC_F_ROTATE) || (CordicFunction > CORDIC_F_SQRT)) { + std::cout << "ERROR: " << __FILE__ << ": CordicFunction must be in range 0 (CORDIC_F_ROTATE) to 6 (CORDIC_F_SQRT)" << std::endl; + exit(1); + } + + if (CordicFunction != CORDIC_F_SQRT && DataFormat != CORDIC_FORMAT_SIG_FRAC) { + std::cout << "ERROR: " << __FILE__ << ": DataFormat must be " << CORDIC_FORMAT_SIG_FRAC << " for this function" << std::endl; + exit(1); + } + + if (CordicFunction == CORDIC_F_SQRT && DataFormat == CORDIC_FORMAT_SIG_FRAC) { + std::cout << "ERROR: " << __FILE__ << ": DataFormat must be " << CORDIC_FORMAT_USIG_INT << " or " << CORDIC_FORMAT_USIG_FRAC << " for square root" << std::endl; + exit(1); + } + + if((PhaseFormat != CORDIC_FORMAT_RAD) && (PhaseFormat != CORDIC_FORMAT_SCA)) { + std::cout << "ERROR: " << __FILE__ << ": PhaseFormat must be " << CORDIC_FORMAT_RAD << " or " << CORDIC_FORMAT_SCA << std::endl; + exit(1); + } + + if((InputWidth < CORDIC_DATA_WIDTH_MIN) || (InputWidth > CORDIC_DATA_WIDTH_MAX)) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be " << CORDIC_DATA_WIDTH_MIN << " to " << CORDIC_DATA_WIDTH_MAX << std::endl; + exit(1); + } + + if ((CordicFunction != CORDIC_F_SQRT) || (DataFormat != CORDIC_FORMAT_USIG_INT)) { + if ( (OutputWidth < CORDIC_DATA_WIDTH_MIN) || (OutputWidth > CORDIC_DATA_WIDTH_MAX)) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be " << CORDIC_DATA_WIDTH_MIN << " to " << CORDIC_DATA_WIDTH_MAX << std::endl; + exit(1); + } + } else { + //Minimum value has to change as output width is fixed to int(input_width/2)+1 then unsigned integer format + if ((InputWidth/2+1) != OutputWidth) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be " << InputWidth/2+1 << " for integer square root with input width " << InputWidth << std::endl; + exit(1); + } + } + + if (( (Precision != 0) && (Precision < OutputWidth) ) || (Precision > CORDIC_DATA_WIDTH_MAX ) || (Precision < 0)) { + std::cout << "ERROR: " << __FILE__ << ": Precision must be >= OutputWidth, <= " << CORDIC_DATA_WIDTH_MAX << " and > 0" << std::endl; + exit(1); + } + + if ((RoundMode < CORDIC_ROUND_TRUNCATE) || (RoundMode > CORDIC_ROUND_NEAREST_EVEN)) { + std::cout << "ERROR: " << __FILE__ << ": RoundMode must be " << CORDIC_ROUND_TRUNCATE << " to " << CORDIC_ROUND_NEAREST_EVEN << std::endl; + exit(1); + } + + if ((ScaleComp < CORDIC_SCALE_NONE) || (ScaleComp > CORDIC_SCALE_EMB_MULT)) { + std::cout << "ERROR: " << __FILE__ << ": ScaleComp must be " << CORDIC_SCALE_NONE << " to " << CORDIC_SCALE_EMB_MULT << std::endl; + exit(1); + } + + #endif + + const int ITERATIONS_INT = c_iterations_int::prec; + const int PRECISION_INT = c_precision_int::prec; + + const ap_int c_neg_pi_1_4_const = (PhaseFormat == CORDIC_FORMAT_RAD ? + c_neg_pi_1_4_rads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) : + c_neg_pi_1_4_jrads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) + ); + + const ap_int c_neg_pi_2_4_const = (PhaseFormat == CORDIC_FORMAT_RAD ? + c_neg_pi_2_4_rads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) : + c_neg_pi_2_4_jrads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) + ); + + const ap_int c_neg_pi_3_4_const = (PhaseFormat == CORDIC_FORMAT_RAD ? + c_neg_pi_3_4_rads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) : + c_neg_pi_3_4_jrads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) + ); + + const ap_int c_neg_pi_const = (PhaseFormat == CORDIC_FORMAT_RAD ? + c_neg_pi_rads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) : + c_neg_pi_jrads_const(CORDIC_MAX_ROM_WIDTH-1,CORDIC_MAX_ROM_WIDTH-PRECISION_INT) + ); + + const ap_uint<1> ENG_MODE = CORDIC_get_eng_mode(CordicFunction); + ap_uint<1> add_nsub_x_int_v, add_nsub_y_int_v, add_nsub_p_int_v; + ap_uint<1> transform_type_v = CORDIC_get_transform_type(CordicFunction); + + const ap_int c_inv_scale = CORDIC_inv_cordic_scale_slv(); + + const int CTRL_WIDTH = gen_ctrl_width::width; + + ap_int x_in, y_in, phase_in; + + ap_int data_x_int, data_x_int_v, data_x_hw_shift_v; + ap_int data_y_int, data_y_int_v, data_y_hw_shift_v; + ap_int phase_int, phase_int_v; + ap_int data_x_init; + ap_int data_y_init; + ap_int phase_init; + + ap_uint<4> inp_data_sign_vect; + + ap_int data_x_init_ext; + ap_int data_y_init_ext; + ap_int inp_x_min_y_ext; + ap_int inp_x_plus_y_ext; + + ap_int inp_data_x_cr_async; + ap_int inp_data_y_cr_async; + ap_int inp_phase_cr_async; + ap_uint<2> inp_data_quad; + ap_uint<3> inp_phase_sign_vect; + ap_int inp_phase_pi_3_rot; + ap_int inp_phase_pi_1_rot; + ap_uint<2> inp_phase_quad; + ap_uint<4> inp_phase_data_quad; + ap_uint inp_ctrl_cr_async; + + ap_int inp_data_x_cr; + ap_int inp_data_y_cr; + ap_int inp_phase_cr ; + ap_uint inp_ctrl_cr ; + + ap_int data_x_inp; + ap_int data_y_inp; + ap_int phase_inp ; + ap_uint ctrl_inp ; + + ap_int data_x_eng; + ap_int data_y_eng; + ap_int phase_eng ; + ap_uint ctrl_eng ; + + ap_int outp_data_x_cr; + ap_int outp_data_y_cr; + ap_int outp_phase_cr ; + ap_uint<2> outp_cr_quad ; + + ap_int outp_data_x_sca; + ap_int outp_data_y_sca; + ap_int outp_phase_sca ; + ap_int<2*PRECISION_INT> outp_data_x_sca_ext; + ap_int<2*PRECISION_INT> outp_data_y_sca_ext; + ap_int<2*PRECISION_INT> outp_phase_sca_ext ; + + ap_int outp_data_x_rnd; + ap_int outp_data_y_rnd; + ap_int outp_phase_rnd ; + + ap_int data_x_outp; + ap_int data_y_outp; + ap_int phase_outp; + + ap_int sqrt_data_trunc_async; + ap_int sqrt_data_trunc_async_ext; + ap_int sqrt_data_round_async; + + ap_int eng_rom_vect[ITERATIONS_INT]; + + // Initialize ROM contents, if required + fn_rom_data_int(eng_rom_vect); + + // Internal variables to hold FIFO read and write contents + cordic_inputs din; + cordic_outputs dout; + + // Input read + din = inputData; + + // Extract subfields, reformat to internal types + get_inputs(din,x_in,y_in,phase_in); + + // Scale inputs to suit internal precision + const int SCALE_UP = (PRECISION_INT - InputWidth); + const int SCALE_DOWN = (InputWidth - PRECISION_INT); + if (PRECISION_INT > InputWidth) { + data_x_int = ap_int(x_in) << SCALE_UP; + data_y_int = ap_int(y_in) << SCALE_UP; + phase_int = ap_int(phase_in) << SCALE_UP; + } else if (PRECISION_INT < InputWidth) { + data_x_int = x_in >> SCALE_DOWN; + data_y_int = y_in >> SCALE_DOWN; + phase_int = phase_in >> SCALE_DOWN; + } else { + data_x_int = x_in; + data_y_int = y_in; + phase_int = phase_in; + } + + // Implicit sign-extension or truncation during assignment + switch (CordicFunction) { + case CORDIC_F_ROTATE: + data_x_init = data_x_int; + data_y_init = data_y_int; + phase_init = phase_int; + break; + case CORDIC_F_TRANSLATE: + case CORDIC_F_ATAN: + case CORDIC_F_ATANH: + data_x_init = data_x_int; + data_y_init = data_y_int; + phase_init = 0; + break; + case CORDIC_F_SIN_COS: + case CORDIC_F_SINH_COSH: + data_x_init = c_inv_scale; + data_y_init = 0; + phase_init = phase_int; + break; + default: // case CORDIC_F_SQRT + data_x_init = data_x_int; + data_y_init = 0; + phase_init = 0; + } + + if (CordicFunction != CORDIC_F_SQRT) { + + if (CoarseRotate) { + + // implicit sign-extend + data_x_init_ext = data_x_init; + data_y_init_ext = data_y_init; + + inp_x_plus_y_ext = data_x_init_ext + data_y_init; + inp_x_min_y_ext = data_x_init_ext - data_y_init; + + inp_data_sign_vect[3] = inp_x_min_y_ext[PRECISION_INT]; + inp_data_sign_vect[2] = inp_x_plus_y_ext[PRECISION_INT]; + inp_data_sign_vect[1] = data_x_init_ext[PRECISION_INT]; + inp_data_sign_vect[0] = data_y_init_ext[PRECISION_INT]; + + inp_data_quad[1] = ~inp_data_sign_vect[3]; + inp_data_quad[0] = ~inp_data_sign_vect[2]; + + ap_int a, b, x, c, d, y; + + a(PRECISION_INT,1) = 0; + a[0] = ap_uint<1>(1); + inp_data_x_cr_async_loop : for (int i=1; i(1); + inp_data_y_cr_async_loop : for (int i=1; i=0) ) + ) && (transform_type_v == 1) ) || + ( ( ( (ENG_MODE == 1) && (data_y_inp>=0) ) || + ( (ENG_MODE == 0) && (phase_inp<0 ) ) + ) && (transform_type_v == 0) ) + ) { + add_nsub_x_int_v = 1; + } else { + add_nsub_x_int_v = 0; + } + + + if ( ( (ENG_MODE == 1) && (data_y_inp<0) ) || + ( (ENG_MODE == 0) && (phase_inp>=0) ) + ) { + add_nsub_y_int_v = 1; + } else { + add_nsub_y_int_v = 0; + } + + if ( ( (ENG_MODE == 1) && (data_y_inp>=0) ) || + ( (ENG_MODE == 0) && (phase_inp<0) ) + ) { + add_nsub_p_int_v = 1; + } else { + add_nsub_p_int_v = 0; + } + + data_x_int_v = data_x_inp; + data_y_int_v = data_y_inp; + phase_int_v = phase_inp; + + iteration_loop : for (int i=0; i < ITERATIONS_INT; i++) { + int i_int_v = CORDIC_get_current_iteration(i,(int)transform_type_v); + + data_x_hw_shift_v = data_x_int_v >> (i_int_v + 1); + data_y_hw_shift_v = data_y_int_v >> (i_int_v + 1); + + // Optimized add/sub + ap_int a, b, x, c, d, y, e, f, z; + + a = (data_x_int_v,ap_uint<1>(1)); + data_x_int_v_loop : for (int i=1; i(1)); + data_y_int_v_loop : for (int i=1; i(1)); + phase_int_v_loop : for (int i=1; i=0) ) + ) && (transform_type_v == 1) ) || + ( ( ( (ENG_MODE == 1) && (data_y_int_v>=0) ) || + ( (ENG_MODE == 0) && (phase_int_v<0 ) ) + ) && (transform_type_v == 0) ) + ) { + add_nsub_x_int_v = 1; + } else { + add_nsub_x_int_v = 0; + } + + if ( ( (ENG_MODE == 1) && (data_y_int_v<0) ) || + ( (ENG_MODE == 0) && (phase_int_v>=0) ) + ) { + add_nsub_y_int_v = 1; + } else { + add_nsub_y_int_v = 0; + } + + if ( ( (ENG_MODE == 1) && (data_y_int_v>=0) ) || + ( (ENG_MODE == 0) && (phase_int_v<0) ) + ) { + add_nsub_p_int_v = 1; + } else { + add_nsub_p_int_v = 0; + } + + } // for i + + data_x_eng = data_x_int_v; + data_y_eng = data_y_int_v; + phase_eng = phase_int_v; + ctrl_eng = ctrl_inp; + + // Apply coarse rotation correction + if (!CoarseRotate) { + outp_data_x_cr = data_x_eng; + outp_data_y_cr = data_y_eng; + outp_phase_cr = phase_eng; + } else { + outp_cr_quad = ctrl_eng >> 1; + if (ENG_MODE == 0){ + + ap_int a, b, x, c, d, y; + + a(PRECISION_INT,1) = 0; + a[0] = ap_uint<1>(1); + outp_data_x_cr_loop : for (int i=1; i(1); + outp_data_y_cr_loop : for (int i=1; i=0) { + outp_phase_cr = phase_eng + c_neg_pi_const; + } else { + outp_phase_cr = phase_eng - c_neg_pi_const; + } + break; + default: + // case 1: + outp_phase_cr = phase_eng - c_neg_pi_2_4_const; + } + } + } + + // Apply Scaling Correction + if (ScaleComp != CORDIC_SCALE_NONE ) { + outp_data_x_sca_ext = c_inv_scale; + outp_data_x_sca_ext = outp_data_x_sca_ext * outp_data_x_cr; + outp_data_x_sca = outp_data_x_sca_ext(2*PRECISION_INT-3,PRECISION_INT-2); + + outp_data_y_sca_ext = c_inv_scale; + outp_data_y_sca_ext = outp_data_y_sca_ext * outp_data_y_cr; + outp_data_y_sca = outp_data_y_sca_ext(2*PRECISION_INT-3,PRECISION_INT-2); + + outp_phase_sca = outp_phase_cr; + } else { + outp_data_x_sca = outp_data_x_cr; + outp_data_y_sca = outp_data_y_cr; + outp_phase_sca = outp_phase_cr; + } + + outp_data_x_rnd = CORDIC_rnd_slv(outp_data_x_sca, + PRECISION_INT, + RoundMode, + OutputWidth); + outp_data_y_rnd = CORDIC_rnd_slv(outp_data_y_sca, + PRECISION_INT, + RoundMode, + OutputWidth); + outp_phase_rnd = CORDIC_rnd_slv(outp_phase_sca, + PRECISION_INT, + RoundMode, + OutputWidth); + + data_x_outp = outp_data_x_rnd; + data_y_outp = outp_data_y_rnd; + phase_outp = outp_phase_rnd; + + } else { // CordicFunction == CORDIC_F_SQRT + + sqrt_data_trunc_async = sqrt_slv(x_in); + + sqrt_data_trunc_async_ext = sqrt_data_trunc_async; + + const int c_rnd_mode_int = rnd_mode_int_v::mode; + + sqrt_data_round_async = CORDIC_rnd_slv< PRECISION_INT , OutputWidth>(sqrt_data_trunc_async_ext, + PRECISION_INT, + c_rnd_mode_int, + OutputWidth); + + data_x_outp = sqrt_data_round_async; + data_y_outp = 0; + phase_outp = 0; + + } // end if (CordicFunction != CORDIC_F_SQRT) + + set_outputs(data_x_outp, data_y_outp, phase_outp, dout); + + outputData = dout; + + } + +} // end namespace hls + +#endif // HLS_CORDIC_H + + diff --git a/vitis/v2020_1/hls/dsp/utils/hls_cordic_functions.h b/vitis/v2020_1/hls/dsp/utils/hls_cordic_functions.h new file mode 100755 index 00000000..62d58284 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/utils/hls_cordic_functions.h @@ -0,0 +1,1297 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_CORDIC_FUNCTIONS_H +#define HLS_CORDIC_FUNCTIONS_H + +#include "ap_int.h" +#include "ap_fixed.h" +#include + +namespace hls { + + // =================================================================================================================== + // Constants for all functions + // + static const int CORDIC_MAX_ROM_WIDTH = 72; + static const int CORDIC_MAX_ROM_LENGTH = 64; + + // Values for CordicFunction + static const int CORDIC_F_ROTATE = 0; + static const int CORDIC_F_TRANSLATE = 1; + static const int CORDIC_F_SIN_COS = 2; + static const int CORDIC_F_ATAN = 3; + static const int CORDIC_F_SINH_COSH = 4; + static const int CORDIC_F_ATANH = 5; + static const int CORDIC_F_SQRT = 6; + + //Definition of presence for boolean parameters + static const int CORDIC_FALSE = 0; + static const int CORDIC_TRUE = 1; + + //Values for DataFormat + static const int CORDIC_FORMAT_SIG_FRAC = 0; + static const int CORDIC_FORMAT_USIG_FRAC = 1; + static const int CORDIC_FORMAT_USIG_INT = 2; + + //Values for PhaseFormat + static const int CORDIC_FORMAT_RAD = 0; + static const int CORDIC_FORMAT_SCA = 1; + + //Limits for InputWidth and OutputWidth + static const int CORDIC_DATA_WIDTH_MIN = 8; + static const int CORDIC_DATA_WIDTH_MAX = 48; + + //Values for RoundMode + static const int CORDIC_ROUND_TRUNCATE = 0; + static const int CORDIC_ROUND_POS_INF = 1; + static const int CORDIC_ROUND_POS_NEG_INF = 2; + static const int CORDIC_ROUND_NEAREST_EVEN = 3; + + //Values for Precision + static const int CORDIC_PREC_AUTO = 0; + + //Values for Iterations + static const int CORDIC_ITER_AUTO = 0; + + //Values for ScaleComp + //Note: Specific implementations are currently not targeted + static const int CORDIC_SCALE_NONE = 0; + static const int CORDIC_SCALE_LUT = 1; + static const int CORDIC_SCALE_BRAM = 2; + static const int CORDIC_SCALE_EMB_MULT = 3; + + static const int CORDIC_TRIG_TRANSFORM = 0; + static const int CORDIC_HYP_TRANSFORM = 1; + + static const ap_uint c_neg_pi_1_4_rads_const("111001101101111000000100101010111011101111010010111001111011100101101000",2); + static const ap_uint c_neg_pi_1_4_jrads_const("111110000000000000000000000000000000000000000000000000000000000000000000",2); + + static const ap_uint c_neg_pi_2_4_rads_const("110011011011110000001001010101110111011110100101110011110111001011001110",2); + static const ap_uint c_neg_pi_2_4_jrads_const("111100000000000000000000000000000000000000000000000000000000000000000000",2); + + static const ap_uint c_neg_pi_3_4_rads_const("101101001001101000001110000000110011001101111000101101110010110000110110",2); + static const ap_uint c_neg_pi_3_4_jrads_const("111010000000000000000000000000000000000000000000000000000000000000000000",2); + + static const ap_uint c_neg_pi_rads_const("100110110111100000010010101011101110111101001011100111101110010110011110",2); + static const ap_uint c_neg_pi_jrads_const("111000000000000000000000000000000000000000000000000000000000000000000000",2); + + // =================================================================================================================== + // Base input data template + template struct cordic_inputs { + std::complex< ap_fixed > cartesian; + ap_fixed phase; + }; + + // Specialization for rotate function + template struct cordic_inputs { + std::complex< ap_fixed > cartesian; + ap_fixed phase; + }; + + // Specialization for translate function + template struct cordic_inputs { + std::complex< ap_fixed > cartesian; + }; + + // Specialization for arctan function + template struct cordic_inputs { + std::complex< ap_fixed > cartesian; + }; + + // Specialization for hyperbolic arctan function + template struct cordic_inputs { + std::complex< ap_fixed > cartesian; + }; + + // Specialization for sine/cosine function + template struct cordic_inputs { + ap_fixed phase; + }; + + // Specialization for hyperbolic sine/cosine function + template struct cordic_inputs { + ap_fixed phase; + }; + + // Specialization for square root function, unsigned integer input data + template struct cordic_inputs { + ap_ufixed in; + }; + + // Specialization for square root function, signed integer input data + template struct cordic_inputs { + ap_uint in; + }; + + // =================================================================================================================== + // Base output data template + template struct cordic_outputs { + std::complex< ap_fixed > cartesian; + ap_fixed phase; + }; + + // Specialization for rotate function + template struct cordic_outputs { + typedef ap_fixed out_type; + std::complex< ap_fixed > cartesian; + }; + + // Specialization for translate function + template struct cordic_outputs { + ap_fixed magnitude; + ap_fixed phase; + }; + + // Specialization for sine/cosine function + template struct cordic_outputs { + typedef ap_fixed out_type; + std::complex< ap_fixed > cartesian; + }; + + // Specialization for hyperbolic sine/cosine function + template struct cordic_outputs { + typedef ap_fixed out_type; + std::complex< ap_fixed > cartesian; + }; + + // Specialization for arctan function + template struct cordic_outputs { + ap_fixed phase; + }; + + // Specialization for hyperbolic arctan function + template struct cordic_outputs { + ap_fixed phase; + }; + + // Specialization for square root function, unsigned integer output + template struct cordic_outputs { + ap_ufixed out; + }; + + // Specialization for square root function, signed integer output + // This is a special case - the user must set OutputWidth correctly (to the value returned by get_sqrt_output_width) + // Mis-configuration is trapped by parameter checking in the main function. This is cleaner than requiring InputWidth + // to be passed to each and every struct, regardless of whether they require it or not. + template struct cordic_outputs { + ap_uint out; + }; + + // =================================================================================================================== + // Cartesian and phase access functions + // Extract data from input structures + template void get_cartesian_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in) { + + Function_cordic_get_cartesian_inputs:; + + cartesian_loop : for (int bit=0; bit void get_phase_inputs(cordic_inputs din, + ap_int< InputWidth > &phase_in) { + + Function_cordic_get_phase_inputs:; + + phase_loop : for (int bit=0; bit void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + get_cartesian_inputs(din, x_in, y_in); + get_phase_inputs(din, phase_in); + }; + // Translate input assignment + template void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + get_cartesian_inputs(din, x_in, y_in); + }; + // Sine/cosine input assignment + template void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + get_phase_inputs(din, phase_in); + }; + // Arctan input assignment + template void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + get_cartesian_inputs(din, x_in, y_in); + }; + // Hyperbolic sine/cosine input assignment + template void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + get_phase_inputs(din, phase_in); + }; + // Hyperbolic arctan input assignment + template void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + get_cartesian_inputs(din, x_in, y_in); + }; + // Square root input assignment + template void get_inputs(cordic_inputs din, + ap_int< InputWidth > &x_in, + ap_int< InputWidth > &y_in, + ap_int< InputWidth > &phase_in) { + for (int bit=0; bit void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + typename cordic_outputs::out_type real_val, img_val; + real_val(OutputWidth-1,0) = data_x_outp(OutputWidth-1,0); + img_val(OutputWidth-1,0) = data_y_outp(OutputWidth-1,0); + dout.cartesian.real(real_val); + dout.cartesian.imag(img_val); + }; + // Translate output assignment + template < + int OutputWidth, + int CordicFunction, + int DataFormat + > void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + for (int bit=0; bit void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + typename cordic_outputs::out_type real_val, img_val; + real_val(OutputWidth-1,0) = data_x_outp(OutputWidth-1,0); + img_val(OutputWidth-1,0) = data_y_outp(OutputWidth-1,0); + dout.cartesian.real(real_val); + dout.cartesian.imag(img_val); + }; + // Hyperbolic sine/cosine output assignment + template < + int OutputWidth, + int CordicFunction, + int DataFormat + > void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + typename cordic_outputs::out_type real_val, img_val; + real_val(OutputWidth-1,0) = data_x_outp(OutputWidth-1,0); + img_val(OutputWidth-1,0) = data_y_outp(OutputWidth-1,0); + dout.cartesian.real(real_val); + dout.cartesian.imag(img_val); + }; + // Arctan output assignment + template < + int OutputWidth, + int CordicFunction, + int DataFormat + > void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + for (int bit=0; bit void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + for (int bit=0; bit void set_outputs(ap_int< OutputWidth > data_x_outp, + ap_int< OutputWidth > data_y_outp, + ap_int< OutputWidth > phase_outp, + cordic_outputs &dout) { + for (int bit=0; bit struct log2roundup { + enum { bits = log2roundup<((a+1)/2),p+1>::bits }; + }; + + template struct log2roundup<0, p> { + enum { bits = p }; + }; + + template struct log2roundup<1, p> { + enum { bits = p }; + }; + + template struct gen_ctrl_width { + enum {width = (CoarseRotate ? 3 : 1) }; + }; + + template struct get_sqrt_output_width { + enum { width = (DataFormat == CORDIC_FORMAT_USIG_INT ? (InputWidth+2)/2 : OutputWidth) }; + }; + + template struct iterations_int { + enum {iterations = (CoarseRotate ? OutputWidth - 2 : OutputWidth) }; + }; + + template struct c_iterations_int_not_sqrt { + enum { prec = ( (CordicFunction == CORDIC_F_ATANH || CordicFunction == CORDIC_F_SINH_COSH) ? (iterations_int::iterations >= 13 ? iterations_int::iterations + 2 : (iterations_int::iterations >= 4 ? iterations_int::iterations + 1 : iterations_int::iterations) ) : iterations_int::iterations ) }; + }; + + template struct rnd_mode_int_v { + enum { mode = ( (CordicFunction == CORDIC_F_SQRT && (RoundMode == CORDIC_ROUND_POS_NEG_INF)) ? CORDIC_ROUND_POS_INF : RoundMode) }; + }; + + template struct get_round_ext { + enum { rnd_mode = (RoundMode == CORDIC_ROUND_TRUNCATE ? 0 : (RoundMode == CORDIC_ROUND_POS_INF ? 1 : 2) ) }; + }; + + template struct c_iterations_int_sqrt { + enum { prec = get_sqrt_output_width::width + get_round_ext< rnd_mode_int_v::mode >::rnd_mode }; + }; + + template struct c_iterations_int { + enum { prec = (Iterations != 0 ? Iterations : (CordicFunction != CORDIC_F_SQRT ? (int) c_iterations_int_not_sqrt::prec : (int) c_iterations_int_sqrt::prec ) ) }; + }; + + template struct c_precision_int_not_sqrt { + enum {prec = log2roundup< c_iterations_int::prec >::bits + OutputWidth}; + }; + + template struct c_precision_int_sqrt { + enum { prec = (RoundMode == CORDIC_ROUND_POS_NEG_INF ? get_sqrt_output_width::width+1 : get_sqrt_output_width::width+RoundMode) }; + }; + + template struct c_precision_int { + enum {prec = (Precision != 0 ? Precision : (CordicFunction == CORDIC_F_SQRT ? (int) c_precision_int_sqrt::prec : (int) c_precision_int_not_sqrt::prec )) }; + }; + + // =================================================================================================================== + // Utility functions + + // Compute rounding mode + static int CORDIC_get_rnd_mode_int(int pFunction, int pRoundMode) { + + Function_CORDIC_get_rnd_mode_int:; + + if ((pFunction == CORDIC_F_SQRT) && (pRoundMode == CORDIC_ROUND_POS_NEG_INF)) { + return CORDIC_ROUND_POS_INF; + } else { + return pRoundMode; + } + } + + // Compute rounding impact on iterations + static int CORDIC_get_round_ext(int pRoundMode) { + + Function_CORDIC_get_round_ext:; + + if (pRoundMode == CORDIC_ROUND_TRUNCATE) { + return 0; + } else if (pRoundMode == CORDIC_ROUND_POS_INF) { + return 1; + } else { + return 2; + } + } + + // Compute iterations required + static int CORDIC_get_iterations_int(int pCoarseRotate, int pFunction, int pIterations, int pOutputWidth, int pRoundMode) { + + Function_CORDIC_get_iterations_int:; + + int iterations_int_v = 0; + int iterations_v = 0; + + if (pIterations != 0) { + return pIterations; + } else { + if (pFunction != CORDIC_F_SQRT) { + if (pCoarseRotate == 1){ + iterations_int_v = pOutputWidth - 2; + } else { + iterations_int_v = pOutputWidth; + } + if ((pFunction == CORDIC_F_ATANH) || (pFunction == CORDIC_F_SINH_COSH)){ + if (iterations_int_v >= 13){ + iterations_v = iterations_int_v + 2; + } else if (iterations_int_v >=4) { + iterations_v = iterations_int_v + 1; + } else { + iterations_v = iterations_int_v; + } + } else { + iterations_v = iterations_int_v; + } + } else { + int rnd_mode_int_v = CORDIC_get_rnd_mode_int(pFunction,pRoundMode); + iterations_v = pOutputWidth + CORDIC_get_round_ext(rnd_mode_int_v); + } + } + return iterations_v; + } + + // Compute log2 + static int CORDIC_log2roundup(int data_value) { + + Function_CORDIC_log2roundup:; + + int width = 0; + int cnt = 1; + if (data_value <= 1) { + width = 0; + } else { + while (cnt < data_value) { + width++; + cnt = cnt*2; + } + } + return width; + } + + // Compute output width of square root function + static int CORDIC_get_sqrt_output_width(int pInputWidth, int pOutputWidth, int pDataFormat) { + + Function_CORDIC_get_sqrt_output_width:; + + int output_width_v; + if (pDataFormat == CORDIC_FORMAT_USIG_INT) { + output_width_v = (pInputWidth+2)/2; + } else { + output_width_v = pOutputWidth; + } + return output_width_v; + } + + // Compute internal precision of CORDIC + static int CORDIC_get_precision_int(int pFunction, int pDataFormat, int pInputWidth, int pIterations, int pOutputWidth, int pPrecision, int pRoundMode) { + + Function_CORDIC_get_precision_int:; + + int precision_v; + int output_width_int_v; + if (pPrecision != 0) { + precision_v = pPrecision; + } else { + if (pFunction != CORDIC_F_SQRT) { + precision_v = CORDIC_log2roundup(pIterations) + pOutputWidth; + } else { + output_width_int_v = CORDIC_get_sqrt_output_width(pInputWidth, pOutputWidth, pDataFormat); + if (pRoundMode == CORDIC_ROUND_TRUNCATE) { + precision_v = output_width_int_v; + } else if ((pRoundMode == CORDIC_ROUND_POS_INF) || (pRoundMode == CORDIC_ROUND_POS_NEG_INF)) { + precision_v = output_width_int_v + 1; + } else { + precision_v = output_width_int_v + 2; + } + } + } + return precision_v; + } + + // Perform rounding + template ap_int CORDIC_rnd_slv(ap_int a, int len, int mode, int precision) { + + Function_CORDIC_rnd_slv:; + + // Bring rounder up to hls_cordic hierarchy level for synthesis + #pragma HLS INLINE + + ap_int ret_val; + ap_int tmp; + + if (len == precision) { + ret_val = a; + } else if (len > precision) { + ap_uint adj_val; + + switch(mode){ + case CORDIC_ROUND_TRUNCATE: + ret_val = a(len-1,len-precision); + break; + case CORDIC_ROUND_POS_NEG_INF: + adj_val = 1; + adj_val = adj_val << (len-precision-1); + if (a < 0) { + adj_val = adj_val - 1; + } + tmp = a + adj_val; + ret_val = tmp(len-1,len-precision); + break; + case CORDIC_ROUND_POS_INF: + adj_val = 1; + adj_val = adj_val << (len-precision-1); + tmp = a + adj_val; + ret_val = tmp(len-1,len-precision); + break; + case CORDIC_ROUND_NEAREST_EVEN: + adj_val = 1; + adj_val = adj_val << (len-precision-1); //adj = 0.5 + if (a>=0) { + if (a[len-precision] == 0) { //even + adj_val = adj_val - 1; //adj = 0.4999 + } + } else { + if (a[len-precision] == 1) { //even + adj_val = adj_val - 1; //adj = 0.4999 + } + } + tmp = a + adj_val; + ret_val = tmp(len-1,len-precision); + break; + default: + break; + } + + } else { +#ifndef __SYNTHESIS__ + std::cout << "ERROR: " << __FILE__ << ": in rnd_slv. Output length of round is greater than input" << std::endl; + exit(1); +#endif + } + return ret_val; + } + + // Select CORDIC engine mode + static ap_uint<1> CORDIC_get_eng_mode(int cordic_func) { + + Function_CORDIC_get_eng_mode:; + + ap_uint<1> ret_val; + + switch(cordic_func){ + case CORDIC_F_TRANSLATE: + case CORDIC_F_ATAN: + case CORDIC_F_ATANH: + ret_val = 1; + break; + default: + ret_val = 0; + } + return ret_val; + } + + // Select CORDIC transformation type + static int CORDIC_get_transform_type(int cordic_func) { + + Function_CORDIC_get_transform_type:; + + int ret_val; + + switch(cordic_func){ + case CORDIC_F_SINH_COSH: + case CORDIC_F_ATANH: + ret_val = CORDIC_HYP_TRANSFORM; + break; + default: + ret_val = CORDIC_TRIG_TRANSFORM; + } + return ret_val; + } + + // Determine current iteration + static int CORDIC_get_current_iteration(int i, int transform_type) { + + Function_CORDIC_get_current_iteration:; + + int iteration_v; + if (transform_type == CORDIC_HYP_TRANSFORM) { + if (i>13) { + iteration_v = i-2; + } else if (i>3) { + iteration_v = i-1; + } else { + iteration_v = i; + } + } else { + iteration_v = i; + } + return iteration_v; + } + + // Perform CORDIC square root + template ap_int sqrt_slv(ap_int data_in) { + + Function_cordic_sqrt_slv:; + + // Bring up to hls_cordic hierarchy level for synthesis + #pragma HLS INLINE + + const int data_width_even = InputWidth + (InputWidth % 2); + ap_int data_even; + ap_int<2*precision_int> data_int; + ap_int<2*precision_int> rem_int = 0; + ap_int<2*precision_int> rem_next = 0; + ap_int<2*precision_int> sqre_diff = 1; + ap_int sqrt_int = 0; + + if (data_format == CORDIC_FORMAT_USIG_INT) { + data_int_int_loop : for (int i=0; i<2*precision_int; i++) { + if (i <= (1-(InputWidth % 2))) { + data_int[2*precision_int-1-i] = 0; + } else if (i <= InputWidth+(1-(InputWidth % 2))) { + data_int[2*precision_int-1-i] = data_in[InputWidth-1-i+2-(InputWidth % 2)]; + } else { + data_int[2*precision_int-1-i] = 0; + } + } + } + + if (data_format == CORDIC_FORMAT_USIG_FRAC) { + data_int_frac_loop : for (int i=0; i<2*precision_int; i++) { + if (i == 0) { + data_int[2*precision_int-1 -i] = 0; + } else if (i <= InputWidth) { + data_int[2*precision_int-1 -i] = data_in[InputWidth-i]; + } else { + data_int[2*precision_int-1 -i] = 0; + } + } + } + + precision_loop : for (int i=precision_int-1; i>=0; i--) { + + rem_loop : for (int j=precision_int-2; j>=0; j--) { + rem_int[j+2] = rem_int[j]; + } + rem_int[1] = data_int[2*i+1]; + rem_int[0] = data_int[2*i]; + + sqre_loop : for (int j=precision_int-3; j>=0; j--) { + sqre_diff[j+2] = sqrt_int[j]; + } + + rem_next = rem_int - sqre_diff; + + sqrt_int_loop : for (int j=precision_int-2; j>=0; j--) { + sqrt_int[j+1] = sqrt_int[j]; + } + sqrt_int[0] = 0; + + if (rem_next[precision_int] == 0) { + rem_int = rem_next; + sqrt_int[0] = 1; + } + + } // end loop + return sqrt_int; + } + + // Select ROM to use for arctan function + static int fn_select_rom_for_atan(int cordic_function, int phase_format) { + + Function_cordic_fn_select_rom_for_atan:; + + if ( ((cordic_function != CORDIC_F_SINH_COSH) && + (cordic_function != CORDIC_F_ATANH)) && + (phase_format == CORDIC_FORMAT_RAD) ) { + return 0; //atan_rads + } + + else if ( ((cordic_function != CORDIC_F_SINH_COSH) && + (cordic_function != CORDIC_F_ATANH)) && + (phase_format == CORDIC_FORMAT_SCA) ) { + return 1; //atan_jrads + } + + else if ( ((cordic_function == CORDIC_F_SINH_COSH) || + (cordic_function == CORDIC_F_ATANH)) && + (phase_format == CORDIC_FORMAT_RAD) ) { + return 2; //atanh_rads + } + + else if ( ((cordic_function == CORDIC_F_SINH_COSH) || + (cordic_function == CORDIC_F_ATANH)) && + (phase_format == CORDIC_FORMAT_SCA) ) { + return 3; //atanh_jrads + } + + else { + #ifndef __SYNTHESIS__ + std::cout << "ERROR: " << __FILE__ << ": in fn_select_rom_for_atan. Invalid cordic_function value." << std::endl; + exit(1); + #else + return -1; //invalid rom table, will direct to default atan table in fn_rom_data_int + #endif + } + } + + // =================================================================================================================== + // ROM tables for trig functions + // + const ap_uint CORDIC_inv_cordic_scale_trig_const_str[CORDIC_MAX_ROM_LENGTH] = { + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011011011",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011100011",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101011111110",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011101101101100",2) , + ap_int("001101101111011001010110110001011001110111110000010011011011110100100011",2) , + ap_int("001101101111011001010110110001011001110111110000010011011100010000000010",2) , + ap_int("001101101111011001010110110001011001110111110000010011011101111101111110",2) , + ap_int("001101101111011001010110110001011001110111110000010011100100110101101010",2) , + ap_int("001101101111011001010110110001011001110111110000010100000000010100011101",2) , + ap_int("001101101111011001010110110001011001110111110000010101101110001111100111",2) , + ap_int("001101101111011001010110110001011001110111110000011100100101111100010011",2) , + ap_int("001101101111011001010110110001011001110111110000111000000100101111000000",2) , + ap_int("001101101111011001010110110001011001110111110010100101111111111001110110",2) , + ap_int("001101101111011001010110110001011001110111111001011101101100100101010001",2) , + ap_int("001101101111011001010110110001011001111000010100111100011111010010110011",2) , + ap_int("001101101111011001010110110001011001111010000010110111101010001000111101",2) , + ap_int("001101101111011001010110110001011010000000111010100100010101100001101011",2) , + ap_int("001101101111011001010110110001011010011100011001010111000011000100011110",2) , + ap_int("001101101111011001010110110001011100001010010100100001111001001111101011",2) , + ap_int("001101101111011001010110110001100011000010000001001101010001111100000011",2) , + ap_int("001101101111011001010110110001111110100000110011111010110100100110101000",2) , + ap_int("001101101111011001010110110011101100011011111110110000111101100011000010",2) , + ap_int("001101101111011001010110111010100100001000101010001001000101110101110110",2) , + ap_int("001101101111011001010111010110000010111011010111100010101111010100011100",2) , + ap_int("001101101111011001011001000011111110000110001011011011011010000100100110",2) , + ap_int("001101101111011001011111111011101010110000111111011111010010111000110000",2) , + ap_int("001101101111011001111011011010011101010101011000000010101011111101111101",2) , + ap_int("001101101111011011101001010101100101111000111111100110100111001110110001",2) , + ap_int("001101101111100010100001000001101100101001001100010101100110100010000101",2) , + ap_int("001101101111111101111111101011010000011110011111100101010100101001000100",2) , + ap_int("001101110001101011111000100100000101110000000001010000111101000101001111",2) , + ap_int("001101111000100011000001001001011101011001100010001100001001011010010001",2) , + ap_int("001110010011111001001011100010110111111111011011101100100110101011001010",2) + }; + + const ap_int CORDIC_inv_cordic_scale_hyp_const_str[CORDIC_MAX_ROM_LENGTH] = { + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001011000",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001010110",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101001001100",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100101000100110",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100100110001100",2) , + ap_int("010011010100011110100001110010000000001110111011000010001100011100100010",2) , + ap_int("010011010100011110100001110010000000001110111011000010001011110101111001",2) , + ap_int("010011010100011110100001110010000000001110111011000010001001011011010100",2) , + ap_int("010011010100011110100001110010000000001110111011000001111111110001000101",2) , + ap_int("010011010100011110100001110010000000001110111011000001011001001000001000",2) , + ap_int("010011010100011110100001110010000000001110111010111110111110100100010100",2) , + ap_int("010011010100011110100001110010000000001110111010110101010100010101000011",2) , + ap_int("010011010100011110100001110010000000001110111010001110101011010111111111",2) , + ap_int("010011010100011110100001110010000000001110110111110100000111100011110000",2) , + ap_int("010011010100011110100001110010000000001110101110001001111000010010111001",2) , + ap_int("010011010100011110100001110010000000001110000111100000111011001111010100",2) , + ap_int("010011010100011110100001110010000000001011101100111101000111000001000101",2) , + ap_int("010011010100011110100001110010000000000010000010101101110110001000000100",2) , + ap_int("010011010100011110100001110001111111011011011001110000110010100100000011",2) , + ap_int("010011010100011110100001110001111101000000110101111100100100010011111110",2) , + ap_int("010011010100011110100001110001110011010110100110101011101011010011000011",2) , + ap_int("010011010100011110100001110001001100101101101001101000000111000101101100",2) , + ap_int("010011010100011110100001101110110010001001110101011001110011110101110000",2) , + ap_int("010011010100011110100001101100010111100110000001001011110011111010010011",2) , + ap_int("010011010100011110100001100010101101010110110000010011001101100011011101",2) , + ap_int("010011010100011110100000111100000100011001101100100111001001111000111001",2) , + ap_int("010011010100011110011110100001100000100101011011011100010111011001101000",2) , + ap_int("010011010100011110010100110111010001010011110000001000001111101010011101",2) , + ap_int("010011010100011101101110001110010100000011011000100111110001001001101101",2) , + ap_int("010011010100011011010011101010011100100111010110000010111100110111101111",2) , + ap_int("010011010100010001101001011010011000001101011111111111100000101111000111",2) , + ap_int("010011010011101011000000010000011011101000001000100111110111011101110110",2) , + ap_int("010011010001010000011001001101010110101001110000111101100001011001111101",2) , + ap_int("010011001110110110000101100000010111100001001110100101101101011111111110",2) , + ap_int("010011000101001100001111011001001010101001111010010000110011100100001110",2) , + ap_int("010010011110011010011101000101100100000011001100011100010011010010000111",2) + }; + + const ap_int CORDIC_atan_rads[CORDIC_MAX_ROM_LENGTH] = { + ap_int("000000000000000000000000000000000000000000000000000000000000000000100000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000001000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000010000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000100000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000001000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000010000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000100000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000001000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000010000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000100000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000001000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000010000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000100000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000001000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000010000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000100000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000001000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000010000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000100000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000001000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000010000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000100000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000001000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000010000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000100000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000001000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000010000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000100000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000001000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000010000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000100000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000001000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000010000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000100000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000001000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000010000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000100000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000001000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000010000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000100000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000001000000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000010000000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000011111111111111111111111111111111111111111111101",2) , + ap_int("000000000000000000000000111111111111111111111111111111111111111111101011",2) , + ap_int("000000000000000000000001111111111111111111111111111111111111111101010101",2) , + ap_int("000000000000000000000011111111111111111111111111111111111111101010101011",2) , + ap_int("000000000000000000000111111111111111111111111111111111111101010101010101",2) , + ap_int("000000000000000000001111111111111111111111111111111111101010101010101011",2) , + ap_int("000000000000000000011111111111111111111111111111111101010101010101010101",2) , + ap_int("000000000000000000111111111111111111111111111111101010101010101010101011",2) , + ap_int("000000000000000001111111111111111111111111111101010101010101010101010101",2) , + ap_int("000000000000000011111111111111111111111111101010101010101010101010101110",2) , + ap_int("000000000000000111111111111111111111111101010101010101010101010110111100",2) , + ap_int("000000000000001111111111111111111111101010101010101010101011011101110111",2) , + ap_int("000000000000011111111111111111111101010101010101010101101110111011101111",2) , + ap_int("000000000000111111111111111111101010101010101010110111011101110111010101",2) , + ap_int("000000000001111111111111111101010101010101011011101110111011011100101001",2) , + ap_int("000000000011111111111111101010101010101101110111011101010010111001011010",2) , + ap_int("000000000111111111111101010101010110111011101101110010100110101011011110",2) , + ap_int("000000001111111111101010101011011101110101001011101100010010010101000010",2) , + ap_int("000000011111111101010101101110110111001011001111110111101001110001101101",2) , + ap_int("000000111111101010110111010100110101010110000101111011011011100011001011",2) , + ap_int("000001111101011011011101011111100100101100100000001101110101100010101011",2) , + ap_int("000011101101011000110011100000101011000011011101101001111100010010000110",2) + }; + + const ap_int CORDIC_atan_jrads[CORDIC_MAX_ROM_LENGTH] = { + ap_int("000000000000000000000000000000000000000000000000000000000000000000001010",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000000010100",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000000101000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000001010001",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000010100011",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000101000110",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000001010001100",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000010100011000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000101000101111",2) , + ap_int("000000000000000000000000000000000000000000000000000000000001010001011111",2) , + ap_int("000000000000000000000000000000000000000000000000000000000010100010111110",2) , + ap_int("000000000000000000000000000000000000000000000000000000000101000101111101",2) , + ap_int("000000000000000000000000000000000000000000000000000000001010001011111001",2) , + ap_int("000000000000000000000000000000000000000000000000000000010100010111110011",2) , + ap_int("000000000000000000000000000000000000000000000000000000101000101111100110",2) , + ap_int("000000000000000000000000000000000000000000000000000001010001011111001100",2) , + ap_int("000000000000000000000000000000000000000000000000000010100010111110011000",2) , + ap_int("000000000000000000000000000000000000000000000000000101000101111100110000",2) , + ap_int("000000000000000000000000000000000000000000000000001010001011111001100001",2) , + ap_int("000000000000000000000000000000000000000000000000010100010111110011000001",2) , + ap_int("000000000000000000000000000000000000000000000000101000101111100110000011",2) , + ap_int("000000000000000000000000000000000000000000000001010001011111001100000111",2) , + ap_int("000000000000000000000000000000000000000000000010100010111110011000001101",2) , + ap_int("000000000000000000000000000000000000000000000101000101111100110000011011",2) , + ap_int("000000000000000000000000000000000000000000001010001011111001100000110111",2) , + ap_int("000000000000000000000000000000000000000000010100010111110011000001101110",2) , + ap_int("000000000000000000000000000000000000000000101000101111100110000011011011",2) , + ap_int("000000000000000000000000000000000000000001010001011111001100000110110111",2) , + ap_int("000000000000000000000000000000000000000010100010111110011000001101101110",2) , + ap_int("000000000000000000000000000000000000000101000101111100110000011011011100",2) , + ap_int("000000000000000000000000000000000000001010001011111001100000110110111001",2) , + ap_int("000000000000000000000000000000000000010100010111110011000001101101110010",2) , + ap_int("000000000000000000000000000000000000101000101111100110000011011011100101",2) , + ap_int("000000000000000000000000000000000001010001011111001100000110110111001010",2) , + ap_int("000000000000000000000000000000000010100010111110011000001101101110010011",2) , + ap_int("000000000000000000000000000000000101000101111100110000011011011100100111",2) , + ap_int("000000000000000000000000000000001010001011111001100000110110111001001110",2) , + ap_int("000000000000000000000000000000010100010111110011000001101101110010011100",2) , + ap_int("000000000000000000000000000000101000101111100110000011011011100100111001",2) , + ap_int("000000000000000000000000000001010001011111001100000110110111001001110010",2) , + ap_int("000000000000000000000000000010100010111110011000001101101110010011100100",2) , + ap_int("000000000000000000000000000101000101111100110000011011011100100111001000",2) , + ap_int("000000000000000000000000001010001011111001100000110110111001001110010000",2) , + ap_int("000000000000000000000000010100010111110011000001101101110010011100011011",2) , + ap_int("000000000000000000000000101000101111100110000011011011100100111000001101",2) , + ap_int("000000000000000000000001010001011111001100000110110111001001101011010101",2) , + ap_int("000000000000000000000010100010111110011000001101101110010010101101111011",2) , + ap_int("000000000000000000000101000101111100110000011011011100100000010101111010",2) , + ap_int("000000000000000000001010001011111001100000110110111000010111111100001110",2) , + ap_int("000000000000000000010100010111110011000001101101101011101001111011101101",2) , + ap_int("000000000000000000101000101111100110000011011010101110100100010001010110",2) , + ap_int("000000000000000001010001011111001100000110110000010111001011110010010001",2) , + ap_int("000000000000000010100010111110011000001100110111111110110001100001100110",2) , + ap_int("000000000000000101000101111100110000010100101010000000110010110111000010",2) , + ap_int("000000000000001010001011111001100000000000100100011011101001111011011010",2) , + ap_int("000000000000010100010111110010111010111011001100001010101100110111101110",2) , + ap_int("000000000000101000101111100101001101000110110100001100001100110110111111",2) , + ap_int("000000000001010001011111000101010100010001110101000100001010101110101000",2) , + ap_int("000000000010100010111101100001111001011100001010000010011000101001100001",2) , + ap_int("000000000101000101110101111110000101011001000001000110001001111000010101",2) , + ap_int("000000001010001011000011010100001100001110010110001001101011101100110000",2) , + ap_int("000000010100010001000100011101010000011101110111011001101000011011100000",2) , + ap_int("000000100111111011001110000101101101011110111000111001111010001101111000",2) , + ap_int("000001001011100100000001010001110110011101111100110000100001111010111100",2) + }; + + const ap_int CORDIC_atanh_rads[CORDIC_MAX_ROM_LENGTH] = { + ap_int("000000000000000000000000000000000000000000000000000000000000000000100000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000001000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000010000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000100000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000001000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000010000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000100000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000001000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000010000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000100000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000001000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000010000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000000100000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000001000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000010000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000000100000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000001000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000010000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000000100000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000001000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000010000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000000100000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000001000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000010000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000000100000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000001000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000010000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000000100000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000001000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000010000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000000100000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000001000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000010000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000000100000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000001000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000010000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000000100000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000001000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000010000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000000100000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000001000000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000010000000000000000000000000000000000000000000000",2) , + ap_int("000000000000000000000000100000000000000000000000000000000000000000000011",2) , + ap_int("000000000000000000000001000000000000000000000000000000000000000000010101",2) , + ap_int("000000000000000000000010000000000000000000000000000000000000000010101011",2) , + ap_int("000000000000000000000100000000000000000000000000000000000000010101010101",2) , + ap_int("000000000000000000001000000000000000000000000000000000000010101010101011",2) , + ap_int("000000000000000000010000000000000000000000000000000000010101010101010101",2) , + ap_int("000000000000000000100000000000000000000000000000000010101010101010101011",2) , + ap_int("000000000000000001000000000000000000000000000000010101010101010101010101",2) , + ap_int("000000000000000010000000000000000000000000000010101010101010101010101011",2) , + ap_int("000000000000000100000000000000000000000000010101010101010101010101011000",2) , + ap_int("000000000000001000000000000000000000000010101010101010101010101100010001",2) , + ap_int("000000000000010000000000000000000000010101010101010101010110001000100010",2) , + ap_int("000000000000100000000000000000000010101010101010101011000100010001000100",2) , + ap_int("000000000001000000000000000000010101010101010101100010001000100010010010",2) , + ap_int("000000000010000000000000000010101010101010110001000100010001010110100011",2) , + ap_int("000000000100000000000000010101010101011000100010001001000110101101001110",2) , + ap_int("000000001000000000000010101010101100010001000101011010001110010011000111",2) , + ap_int("000000010000000000010101010110001000100100011010111011100010010010110100",2) , + ap_int("000000100000000010101011000100010101101001101110101101011001101110010110",2) , + ap_int("000001000000010101100010010001110010011110101011101111011101101001100101",2) , + ap_int("000010000010110001010111011111010100000010001010001010001101001110010100",2) , + ap_int("000100011001001111101010011110101010110100000011000010100111110011111001",2) + }; + + const ap_int CORDIC_atanh_jrads[CORDIC_MAX_ROM_LENGTH] = { + ap_int("000000000000000000000000000000000000000000000000000000000000000000001010",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000000010100",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000000101000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000001010001",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000010100011",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000000101000110",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000001010001100",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000010100011000",2) , + ap_int("000000000000000000000000000000000000000000000000000000000000101000101111",2) , + ap_int("000000000000000000000000000000000000000000000000000000000001010001011111",2) , + ap_int("000000000000000000000000000000000000000000000000000000000010100010111110",2) , + ap_int("000000000000000000000000000000000000000000000000000000000101000101111101",2) , + ap_int("000000000000000000000000000000000000000000000000000000001010001011111001",2) , + ap_int("000000000000000000000000000000000000000000000000000000010100010111110011",2) , + ap_int("000000000000000000000000000000000000000000000000000000101000101111100110",2) , + ap_int("000000000000000000000000000000000000000000000000000001010001011111001100",2) , + ap_int("000000000000000000000000000000000000000000000000000010100010111110011000",2) , + ap_int("000000000000000000000000000000000000000000000000000101000101111100110000",2) , + ap_int("000000000000000000000000000000000000000000000000001010001011111001100000",2) , + ap_int("000000000000000000000000000000000000000000000000010100010111110011000001",2) , + ap_int("000000000000000000000000000000000000000000000000101000101111100110000011",2) , + ap_int("000000000000000000000000000000000000000000000001010001011111001100000111",2) , + ap_int("000000000000000000000000000000000000000000000010100010111110011000001101",2) , + ap_int("000000000000000000000000000000000000000000000101000101111100110000011011",2) , + ap_int("000000000000000000000000000000000000000000001010001011111001100000110111",2) , + ap_int("000000000000000000000000000000000000000000010100010111110011000001101110",2) , + ap_int("000000000000000000000000000000000000000000101000101111100110000011011011",2) , + ap_int("000000000000000000000000000000000000000001010001011111001100000110110111",2) , + ap_int("000000000000000000000000000000000000000010100010111110011000001101101110",2) , + ap_int("000000000000000000000000000000000000000101000101111100110000011011011100",2) , + ap_int("000000000000000000000000000000000000001010001011111001100000110110111001",2) , + ap_int("000000000000000000000000000000000000010100010111110011000001101101110010",2) , + ap_int("000000000000000000000000000000000000101000101111100110000011011011100101",2) , + ap_int("000000000000000000000000000000000001010001011111001100000110110111001010",2) , + ap_int("000000000000000000000000000000000010100010111110011000001101101110010011",2) , + ap_int("000000000000000000000000000000000101000101111100110000011011011100100111",2) , + ap_int("000000000000000000000000000000001010001011111001100000110110111001001110",2) , + ap_int("000000000000000000000000000000010100010111110011000001101101110010011100",2) , + ap_int("000000000000000000000000000000101000101111100110000011011011100100111001",2) , + ap_int("000000000000000000000000000001010001011111001100000110110111001001110010",2) , + ap_int("000000000000000000000000000010100010111110011000001101101110010011100100",2) , + ap_int("000000000000000000000000000101000101111100110000011011011100100111001000",2) , + ap_int("000000000000000000000000001010001011111001100000110110111001001110010010",2) , + ap_int("000000000000000000000000010100010111110011000001101101110010011100101001",2) , + ap_int("000000000000000000000000101000101111100110000011011011100100111001111010",2) , + ap_int("000000000000000000000001010001011111001100000110110111001001111000111010",2) , + ap_int("000000000000000000000010100010111110011000001101101110010100011010100101",2) , + ap_int("000000000000000000000101000101111100110000011011011100101101111011000111",2) , + ap_int("000000000000000000001010001011111001100000110110111010000100100101110100",2) , + ap_int("000000000000000000010100010111110011000001101101111001001111001000011000",2) , + ap_int("000000000000000000101000101111100110000011011100011011001101110110110100",2) , + ap_int("000000000000000001010001011111001100000110111101111100011000011110000101",2) , + ap_int("000000000000000010100010111110011000001110100100101000010111000000000101",2) , + ap_int("000000000000000101000101111100110000100010001111001101011110101010111001",2) , + ap_int("000000000000001010001011111001100001101101001110000001001000011010010001",2) , + ap_int("000000000000010100010111110011001000100000011000110110100000101110110010",2) , + ap_int("000000000000101000101111100110111001110000011001101010101011111010010101",2) , + ap_int("000000000001010001011111010010111001011110100000111000011000111110011000",2) , + ap_int("000000000010100010111111001110100011000001101001001111110100011101111100",2) , + ap_int("000000000101000110000011100011010010000110010010000101010101101000101111",2) , + ap_int("000000001010001100101111111101110100100111000101100100011110011011011100",2) , + ap_int("000000010100011110101001101111110000110110010010110011101110001001010111",2) , + ap_int("000000101001101000000011010110000100100011111110110010011001011000110100",2) , + ap_int("000001011001100001011110001000110111101101011100101111010000001101101110",2) + }; + + // Extract data from ROM table + template void fn_rom_data_int(ap_int< c_precision_int::prec > eng_rom_vect[iterations_int]) { + const int c_atan_rom_select = fn_select_rom_for_atan(CordicFunction,PhaseFormat); + ap_int atan_rom_slice_v; + ap_int rom_val; + + Function_cordic_fn_rom_data_int:; + + iteration_loop : for (int i = 0; i< iterations_int; i++) { + switch(c_atan_rom_select) { + case 0: //atan_rads + atan_rom_slice_v = CORDIC_atan_rads[CORDIC_MAX_ROM_LENGTH -1 -i]; + break; + case 1: //atan_jrads + atan_rom_slice_v = CORDIC_atan_jrads[CORDIC_MAX_ROM_LENGTH -1 -i]; + break; + case 2: //atanh_rads + atan_rom_slice_v = CORDIC_atanh_rads[CORDIC_MAX_ROM_LENGTH -1 -i]; + break; + case 3://atanh_jrads + atan_rom_slice_v = CORDIC_atanh_jrads[CORDIC_MAX_ROM_LENGTH -1 -i]; + break; + default: + atan_rom_slice_v = 0; +#ifndef __SYNTHESIS__ + std::cout << "ERROR: " << __FILE__ << ": Error in read of atan rads tables" << std::endl; + exit(1); +#endif + } + + rom_val = CORDIC_rnd_slv(atan_rom_slice_v, CORDIC_MAX_ROM_WIDTH, CORDIC_ROUND_NEAREST_EVEN, precision_int); + + eng_rom_vect[i] = rom_val; + } + + } + + // Select and apply scaling factor + template ap_int< c_precision_int::prec > CORDIC_inv_cordic_scale_slv() { + const int C_PRECISION_INT = c_precision_int::prec; + const int C_ITERATIONS_INT = c_iterations_int::prec; + ap_int< CORDIC_MAX_ROM_WIDTH > inv_cordic_scale_ext_v; + ap_int< C_PRECISION_INT > inv_cordic_scale_v; + + Function_CORDIC_inv_cordic_scale_slv:; + + if ((CordicFunction != CORDIC_F_SINH_COSH) && (CordicFunction != CORDIC_F_ATANH)) { + inv_cordic_scale_ext_v = CORDIC_inv_cordic_scale_trig_const_str[CORDIC_MAX_ROM_LENGTH-1 -(C_ITERATIONS_INT-1)]; + } else { + inv_cordic_scale_ext_v = CORDIC_inv_cordic_scale_hyp_const_str[CORDIC_MAX_ROM_LENGTH-1-(C_ITERATIONS_INT-1)]; + } + inv_cordic_scale_v = CORDIC_rnd_slv(inv_cordic_scale_ext_v, CORDIC_MAX_ROM_WIDTH, 3, C_PRECISION_INT); + + return inv_cordic_scale_v; + } + +} // end namespace hls + +#endif // HLS_CORDIC_FUNCTIONS_H + + diff --git a/vitis/v2020_1/hls/dsp/utils/hls_dsp_common_utils.h b/vitis/v2020_1/hls/dsp/utils/hls_dsp_common_utils.h new file mode 100755 index 00000000..05b223d2 --- /dev/null +++ b/vitis/v2020_1/hls/dsp/utils/hls_dsp_common_utils.h @@ -0,0 +1,212 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_DSP_COMMON_UTILS_H +#define HLS_DSP_COMMON_UTILS_H + +#include +#include "ap_int.h" + +namespace hls { + + // =================================================================================================================== + // Common utility functions + + // Compute log2 rounded-up at compile time to determine the + // number of bits required to represent a value (typically the + // width of a data bus) + template struct bitstorepresent { + enum { bits = bitstorepresent<(a/2),p+1>::bits }; + }; + template struct bitstorepresent<0, p> { + enum { bits = p }; + }; + template struct bitstorepresent<1, p> { + enum { bits = p+1 }; + }; + + + // =================================================================================================================== + // QAM4: Class definition + // Describes a QAM4/QPSK constellation + class QAM4 { + public: + const static int QAMTYPE = 0; + const static int SYMBOL_WIDTH = 2; + const static int STAR_WIDTH = 2; + typedef ap_uint< SYMBOL_WIDTH > t_symbol; + typedef ap_int< STAR_WIDTH > t_stardim; + typedef std::complex< t_stardim > t_star; + typedef ap_int< SYMBOL_WIDTH/2+1 > t_iq_comp; + typedef std::complex< t_iq_comp > t_hard_in; + + static void hardEncode(const t_symbol &symbol, t_star &iq) { + //QPSK/QAM4 constellation looks like this: + // 10 | 00 + //-----+----- + // 11 | 01 + t_stardim re,im; + re = ((symbol >> 1) &1) <<1; + re += 1; //all stars are offset by 1. + im = ((symbol >> 0) &1) <<1; + im += 1; + + iq.real(re); + iq.imag(im); + } //end of hardEncode + + static void hardDecode(const t_hard_in &hardIn, t_symbol &symbol) { + //QPSK/QAM4 constellation looks like this: + // 10 | 00 + //-----+----- + // 11 | 01 + t_iq_comp re, im; + re = hardIn.real(); + im = hardIn.imag(); + symbol = ( (re >> 0 ) & 1 ) << 1; + symbol += ( (im >> 0 ) & 1 ); + } //end of hardDecode + }; + + // =================================================================================================================== + // QPSK: Class definition + // Describes a QPSK (QAM4) constellation + class QPSK : public QAM4 { + public: + }; + + // =================================================================================================================== + // QAM16: Class definition + // Describes a QAM16 constellation + class QAM16 { + public: + const static int QAMTYPE = 1; + const static int SYMBOL_WIDTH = 4; + const static int STAR_WIDTH = 3; + typedef ap_uint< SYMBOL_WIDTH > t_symbol; + typedef ap_int< STAR_WIDTH > t_stardim; + typedef std::complex< t_stardim > t_star; + typedef ap_int< SYMBOL_WIDTH/2+1 > t_iq_comp; + typedef std::complex< t_iq_comp > t_hard_in; + + static void hardEncode(const t_symbol &symbol, t_star &iq) { + //QAM16 Constellation looks like this + //1011 1001 +3 0001 0011 + // | + //1010 1000 +1 0000 0010 + // -3 -- -1 --+- +1 -- +3 -- + //1110 1100 -1 0100 0110 + // | + //1111 1101 -3 0101 0111 + t_stardim re,im; + re = ((symbol >> 3) &1 ) << 2; + re += ((symbol >> 1) &1 ) << 1; + re += 1; + im = ((symbol >> 2) &1 ) << 2; + im += ((symbol >> 0) &1 ) << 1; + im += 1; + + iq.real(re); + iq.imag(im); + } //end of hardEncode + + static void hardDecode(const t_hard_in &hardIn, t_symbol &symbol) { + //QAM16 Constellation looks like this + //1011 1001 +3 0001 0011 + // | + //1010 1000 +1 0000 0010 + // -3 -- -1 --+- +1 -- +3 -- + //1110 1100 -1 0100 0110 + // | + //1111 1101 -3 0101 0111 + t_iq_comp re, im; + re = hardIn.real(); + im = hardIn.imag(); + symbol = ( (re >> 1) & 1 ) << 3; + symbol += ( (im >> 1) & 1 ) << 2; + symbol += ( ((re >> 0) ^ (re >> 1)) & 1 ) << 1; + symbol += ( ((im >> 0) ^ (im >> 1)) & 1 ); + } //end of hardDecode + }; + + // =================================================================================================================== + // QAM64: Class definition + // Describes a QAM64 constellation + class QAM64 { + public: + const static int QAMTYPE = 2; + const static int SYMBOL_WIDTH = 6; + const static int STAR_WIDTH = 4; + typedef ap_uint< SYMBOL_WIDTH > t_symbol; + typedef ap_int< STAR_WIDTH > t_stardim; + typedef std::complex< t_stardim > t_star; + typedef ap_int< SYMBOL_WIDTH/2+1 > t_iq_comp; + typedef std::complex< t_iq_comp > t_hard_in; + + static void hardEncode(const t_symbol &symbol, t_star &iq) { + t_stardim re,im; + re = (( (symbol >> 5)) & 1) << 3; + re += (( (symbol >> 3) ^ (symbol >> 5)) & 1) << 2; + re += ((~(symbol >> 1) ^ (symbol >> 3) ^ (symbol >> 5)) & 1) << 1; + re += 1; + im = (( (symbol >> 4)) & 1) << 3; + im += (( (symbol >> 2) ^ (symbol >> 4)) & 1) << 2; + im += ((~(symbol >> 0) ^ (symbol >> 2) ^ (symbol >> 4)) & 1) << 1; + im += 1; + +#ifndef __SYNTHESIS__ + std::cout << "point " << symbol << ": x = " << re << " y = " << im << std::endl; +#endif + iq.real(re); + iq.imag(im); + } //end of hardEncode + + static void hardDecode(const t_hard_in &hardIn, t_symbol &symbol) { + t_iq_comp re, im; + re = hardIn.real(); + im = hardIn.imag(); + symbol = ( ( (re >> 2) ) & 1 ) << 5; + symbol += ( ( (im >> 2) ) & 1 ) << 4; + symbol += ( ( (re >> 1) ^ (re >> 2) ) & 1 ) << 3; + symbol += ( ( (im >> 1) ^ (im >> 2) ) & 1 ) << 2; + symbol += ( ( ~(re >> 0) ^ (re >> 1) ) & 1 ) << 1; + symbol += ( ( ~(im >> 0) ^ (im >> 1) ) & 1 ) << 0; +#ifndef __SYNTHESIS__ + std::cout << "re = " << re*2+1 << " im = " << im*2+1 << " symbol = " << symbol << std::endl; +#endif + } //end of hardDecode + }; + +} // end namespace hls + +#endif // HLS_DSP_COMMON_UTILS_H + + diff --git a/vitis/v2020_1/hls/hls_axi_io.h b/vitis/v2020_1/hls/hls_axi_io.h new file mode 100644 index 00000000..c0faed19 --- /dev/null +++ b/vitis/v2020_1/hls/hls_axi_io.h @@ -0,0 +1,107 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2013 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/* + * HLS AXI I/O Function Header File + */ + +#ifndef ___HLS__AXI_IO__ +#define ___HLS__AXI_IO__ + +#include "ap_axi_sdata.h" +#include "utils/x_hls_utils.h" +#include + +namespace hls { + +template +void AXIGetBitFields(ap_uint pix, int start, int w, T& val) { +#pragma HLS inline + assert(start >= 0 && start+w <= W); + val = (T)pix(start+w-1, start); +} + +template +void AXIGetBitFields(ap_uint pix, int start, int w, float& val) { +#pragma HLS inline + assert(w == 32 && start >= 0 && start+w <= W); + fp_struct temp((ap_uint<32>)pix(start+w-1, start)); + val = temp.to_float(); +} + +template +void AXIGetBitFields(ap_uint pix, int start, int w, double& val) { +#pragma HLS inline + assert(w == 64 && start >= 0 && start+w <= W); + fp_struct temp((ap_uint<64>)pix(start+w-1, start)); + val = temp.to_double(); +} + +template +void AXIGetBitFields(ap_axiu axi, int start, int w, T& val) { +#pragma HLS inline + AXIGetBitFields(axi.data, start, w, val); +} + +template +void AXISetBitFields(ap_uint& pix, int start, int w, T val) { +#pragma HLS inline + assert(start >= 0 && start+w <= W); + pix(start+w-1, start) = val; +} + +template +void AXISetBitFields(ap_uint& pix, int start, int w, float val) { +#pragma HLS inline + assert(w == 32 && start >= 0 && start+w <= W); + fp_struct temp(val); + pix(start+w-1, start) = temp.data(); +} + +template +void AXISetBitFields(ap_uint& pix, int start, int w, double val) { +#pragma HLS inline + assert(w == 64 && start >= 0 && start+w <= W); + fp_struct temp(val); + pix(start+w-1, start) = temp.data(); +} + +template +void AXISetBitFields(ap_axiu& axi, int start, int w, T val) { +#pragma HLS inline + AXISetBitFields(axi.data, start, w, val); +} + +} // namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_back_substitute.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_back_substitute.h new file mode 100644 index 00000000..2c867107 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_back_substitute.h @@ -0,0 +1,112 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// Back Substitution functions +// --------------------------- +// BACK_SUBSTITUTE : Entry point function +// BACK_SUBSTITUTE_TOP : Top level function that selects implementation architecture and internal types based on a traits class. +// BACK_SUBSTITUTE_BASIC : Implementation requiring lower resources +// BACK_SUBSTITUTE_ALT : Re-arranged loops to improve dependencies and throughput with increased resources. + +// Change Log +// ---------- +// 2015.3: +// * Change default archtecture +// * Added default inner loop pipelining set via configuration traits class +// * Disabled explicit RESOURCE directive in back_substitute_recip +// +// 2015.1: +// * Linear Algebra Library update. +// * Added 2nd implementation with improved loop dependencies and throughput, selected through the back_substitute_traits class. +// * Function prototype changed to return a is_singular flag. +// +// 2014.1: +// * Initial release + +#ifndef X_COMPLEX_BACK_SUBSTITUTE_H +#define X_COMPLEX_BACK_SUBSTITUTE_H + +#include "ap_fixed.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/hls_back_substitute.h" + +namespace hls { + + + // Further specialization for x_complex + template< + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct back_substitute_traits + >, x_complex< ap_fixed > > { + static const int W = W1+(W1-I1)+(W1-I1); // Fractional growth is denominator fraction width + numerator full width + static const int I = I1+(W1-I1); // Integer growth is denominator int width + numerator fraction width + typedef x_complex< ap_fixed > RECIP_T; + typedef x_complex< ap_fixed<(2*W)+1, (2*I)+1, AP_TRN, AP_WRAP, 0> > MULT_T; + typedef x_complex< ap_fixed<(2*W)+2, (2*I)+2, AP_TRN, AP_WRAP, 0> > ADD_T; + typedef x_complex< ap_fixed<(2*W2)+1,(2*I2)+1, AP_TRN, AP_WRAP, 0> > MULTNEG_T; + static const int ARCH = 1; + static const int INNER_II = 1; + static const int DIAG_II = 1; + }; + + + // All diagonal elements of the factorization (Cholesky or QR) should be real. + // We can therefore use a real-valued divider (or reciprocal operator) to compute the diagonal inverse values. + // + // IMPLEMENTATION TIP: Force the reciprocal to be implemented using a single-precision divider with the resource directive. + // This permits sharing of operators with the factorization function preceding the back-substitution. + template void back_substitute_recip(x_complex x, x_complex &one_over_x) { + // #pragma HLS resource variable=recip core=FDiv + T recip; // intermediate variable to allow directive to be applied + const x_complex ONE = 1.0; + recip = ONE.real()/x.real(); + one_over_x.real() = recip; + one_over_x.imag() = 0.0; + } + + template< + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + void back_substitute_recip(x_complex< ap_fixed > x, + x_complex< ap_fixed > &one_over_x) { + x_complex< ap_fixed > ONE; // Size to the output precision + ONE.real() = 1; + ONE.imag() = 0; + one_over_x.real() = ONE.real()/x.real(); // Infers a real-valued divider + one_over_x.imag() = 0; + } + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky.h new file mode 100755 index 00000000..e47228ba --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky.h @@ -0,0 +1,145 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2013-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +// Cholesky functions +// ------------------ +// CHOLESKY : Entry point function +// CHOLESKY_TOP : Top level function that selects implementation architecture and internal types based on a traits class. +// CHOLESKY_BASIC : Basic implementation requiring lower resource +// CHOLESKY_ALT : Lower latency architecture requiring more resources +// CHOLESKY_ALT2 : Further improved latency architecture requiring higher resource + +// Change Log +// ---------- +// 2015.3: +// * Changed default architecture to CHOLESKY_ALT +// * Added default inner loop pipelining and unrolling factors set via configuration traits class +// * Added additional configuration traits class parameter, LowerTriangularL +// +// 2015.1: +// * Linear Algebra Library update +// * Added a third cholesky implementation with further throughput enhancements. +// +// 2014.1: +// * Initial release. + +#ifndef X_COMPLEX_CHOLESKY_H +#define X_COMPLEX_CHOLESKY_H + +#include "ap_fixed.h" +#include "hls/linear_algebra/hls_cholesky.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/deprecated/x_complex_matrix_utils.h" + +namespace hls { + + + // Specialization for complex + template< + bool LowerTriangularL, + int RowsColsA, + typename InputBaseType, + typename OutputBaseType> + struct cholesky_traits + , x_complex > { + typedef x_complex PROD_T; + typedef x_complex ACCUM_T; + typedef x_complex ADD_T; + typedef x_complex DIAG_T; + typedef InputBaseType RECIP_DIAG_T; + typedef x_complex OFF_DIAG_T; + typedef x_complex L_OUTPUT_T; + static const int ARCH = 1; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + static const int UNROLL_DIM = (LowerTriangularL==true?1:2); + static const int ARCH2_ZERO_LOOP = true; + }; + + + // Further specialization for hls::complex + template< + bool LowerTriangularL, + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct cholesky_traits + >, x_complex< ap_fixed > > { + typedef x_complex< ap_fixed > PROD_T; + typedef x_complex< ap_fixed<(W1+W1)+BitWidth::Value,(I1+I1)+BitWidth::Value, AP_RND_CONV, AP_SAT, 0> > ACCUM_T; + typedef x_complex< ap_fixed > ADD_T ; + typedef x_complex< ap_fixed<(W1+1)*2 , I1+1 , AP_RND_CONV, AP_SAT, 0> > DIAG_T; // Takes result of sqrt + typedef x_complex< ap_fixed<(W1+1)*2 , I1+1 , AP_RND_CONV, AP_SAT, 0> > OFF_DIAG_T; // Takes result of / + typedef ap_fixed<2+(W2-I2)+W2 , 2+(W2-I2) , AP_RND_CONV, AP_SAT, 0> RECIP_DIAG_T; + typedef x_complex< ap_fixed > L_OUTPUT_T; // Takes new L value. Same as L output but saturation set + static const int ARCH = 1; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + static const int UNROLL_DIM = (LowerTriangularL==true?1:2); + static const int ARCH2_ZERO_LOOP = true; + }; + + template int cholesky_sqrt_op(x_complex din, x_complex &dout){ + Function_cholesky_sqrt_op_complex:; + const T_IN ZERO = 0; + T_IN a = din.real(); + dout.imag(ZERO); + + if(a + void cholesky_prod_sum_mult(x_complex A, BType B, x_complex &C) + { + Function_cholesky_prod_sum_mult_complex:; + C.real(A.real()*B); + C.imag(A.imag()*B); + } + + +} +#endif + + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky_inverse.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky_inverse.h new file mode 100755 index 00000000..00bf234e --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_cholesky_inverse.h @@ -0,0 +1,94 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// Cholesky Inverse functions +// -------------------------- +// CHOLESKY_INVERSE : Entry point function +// CHOLESKY_INVERSE_TOP : Top level function that selects implementation architecture and internal types based on a traits class. + +// Change Log +// ---------- +// 2015.3: +// * Updated cholesky_traits instantiation to pass LowerTriangularL template parameter +// +// 2015.1: +// * Linear Algebra Library update. +// * Function prototype changed to return success flag via argument not return value. +// * Updated lower level functions calls to pass the corresponding configuration classes defined in the top-level +// cholesky_inverse_traits class. +// +// 2014.1: +// * Initial release + +#ifndef X_COMPLEX_CHOLESKY_INVERSE_H +#define X_COMPLEX_CHOLESKY_INVERSE_H + +#include "ap_fixed.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/deprecated/x_complex_cholesky.h" +#include "hls/linear_algebra/hls_cholesky_inverse.h" +#include "hls/linear_algebra/deprecated/x_complex_back_substitute.h" +#include "hls/linear_algebra/deprecated/x_complex_matrix_multiply.h" + +namespace hls { + + + // Further specialization for hls::complex + template< + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct cholesky_inverse_traits + >, x_complex< ap_fixed > > { + // Cholesky decomposition output precision + static const int CholeskyOutputW = W1; + static const int CholeskyOutputI = I1; + static const ap_q_mode CholeskyOutputQ = Q1; + static const ap_o_mode CholeskyOutputO = O1; + static const int CholeskyOutputN = N1; + typedef x_complex< ap_fixed > CHOLESKY_OUT; + typedef cholesky_traits< false, RowsColsA, x_complex< ap_fixed >, CHOLESKY_OUT > CHOLESKY_TRAITS; + // Back substitution output precision + static const int BackSubstitutionOutW = W2; + static const int BackSubstitutionOutI = I2; + static const ap_q_mode BackSubstitutionOutQ = Q2; + static const ap_o_mode BackSubstitutionOutO = O2; + static const int BackSubstitutionOutN = N2; + typedef x_complex< ap_fixed > BACK_SUBSTITUTE_OUT; + typedef back_substitute_traits BACK_SUBSTITUTE_TRAITS; + typedef matrix_multiply_traits > > MATRIX_MULTIPLY_TRAITS; + }; + + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_multiply.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_multiply.h new file mode 100755 index 00000000..525b828b --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_multiply.h @@ -0,0 +1,105 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +// Matrix Multiply functions +// ------------------------- +// MATRIX_MULTIPLY : Entry point function. +// MATRIX_MULTIPLY_TOP : Top level function that selects implementation architecture and internal types based on traits class. +// MATRIX_MULTIPLY_DEFAULT : Default architecture. +// MATRIX_MULTIPLY_ALT1 : Improved throughput for rolled floating point implementations at the expense of an additional memory. +// MATRIX_MULTIPLY_ALT2 : Further rolled floating point throughput improvement for small matrix sizes. Requires larger internal memory. +// MATRIX_MULTIPLY_ADD_TREE : Architecture using an adder tree for fully unrolled floating point implementations. +// MATRIX_MULTIPLY_FULL : Default architecture including directives to fully unroll inner loop, fixed point implementations + +// Change Log +// ---------- +// 2015.3: +// * Default architecture selected based on data type +// * Removed default architecture choice macros +// * Added default inner loop pipelining value set via configuration traits class +// * Correction to internal ap_fixed types bit width +// * Added MATRIX_MULTIPLY_FULL architecture +// +// 2015.1: +// * Linear Algebra Library update. +// * No changes +// +// 2014.1: +// * Initial release + +#ifndef X_COMPLEX_MATRIX_MULTIPLY_H +#define X_COMPLEX_MATRIX_MULTIPLY_H + +#include "ap_fixed.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/deprecated/x_complex_matrix_utils.h" +#include "hls/linear_algebra/hls_matrix_multiply.h" + +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { + + + // Further specialization for x_complex + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct matrix_multiply_traits + >, x_complex > > { + static const int RowsATrans = ( TransposeFormA::TransposeType != 0 ? ColsA : RowsA); + static const int ColsATrans = ( TransposeFormA::TransposeType != 0 ? RowsA : ColsA); + static const int RowsBTrans = ( TransposeFormB::TransposeType != 0 ? ColsB : RowsB); + static const int ColsBTrans = ( TransposeFormB::TransposeType != 0 ? RowsB : ColsB); + static const int B_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 1 : 2); + static const int A_FULL_UNROLL_DIM = ( TransposeFormA::TransposeType != 0 ? 1 : 2); + static const int B_FULL_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 2 : 1); + typedef x_complex< ap_fixed > INPUT_T; + typedef x_complex< ap_fixed > MULT_T; + typedef x_complex< ap_fixed::Value, I1+I1+BitWidth::Value, AP_TRN, AP_WRAP, 0> > ACCUM_T; + static const int ARCH = 0; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + }; + +} + +#endif + + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_tb_utils.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_tb_utils.h new file mode 100755 index 00000000..ae68f8ad --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_tb_utils.h @@ -0,0 +1,48 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2013-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_COMPLEX_MATRIX_TB_UTILS_H +#define X_COMPLEX_MATRIX_TB_UTILS_H + +#ifndef __SYNTHESIS__ + +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "utils/x_hls_utils.h" + +template struct tb_traits > { + typedef T BASE_T; +}; + +#endif // __SYNTHESIS__ + +#endif // X_COMPLEX_MATRIX_TB_UTILS_H + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_utils.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_utils.h new file mode 100755 index 00000000..cca00b66 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_matrix_utils.h @@ -0,0 +1,80 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_COMPLEX_MATRIX_UTILS_H +#define X_COMPLEX_MATRIX_UTILS_H + +#include "ap_fixed.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/utils/x_hls_matrix_utils.h" +#include "hls_math.h" + +#ifndef __SYNTHESIS__ +#include +#include +#include +#include +#include +#endif + +namespace hls { + +#ifndef __SYNTHESIS__ + + // Complex data + // ---------------- + // This is used by complex data of any type. A printer is called to print the real and imaginary + // parts, so this just handles the formating of x+jy + template struct xil_printer > { + static std::string to_s(hls::x_complex x, unsigned prec=10){ + + // Use the basic type printer to print the real and imaginary parts + typedef xil_printer printer; + + std::stringstream ss; + // Remember to deal with -0 + bool neg_imag = x.imag() <= -0 ? true : false; + + // Casting to "T" avoids "error: operands to ?: have different types." when using ap_fixed. + T imag = neg_imag ? (T)-x.imag() : (T)x.imag(); + + ss << printer::to_s(x.real(), prec) << (neg_imag ? " - j*":" + j*") << printer::to_s(imag, prec); + return ss.str(); + } + }; + +#endif + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qr_inverse.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qr_inverse.h new file mode 100755 index 00000000..988da2a9 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qr_inverse.h @@ -0,0 +1,78 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// QR Inverse functions +// --------------------- +// QR_INVERSE : Entry point function +// QR_INVERSE_TOP : Top level function that selects implementation architecture and internal types based on a traits class. + +// Change Log +// ---------- +// 2015.3: +// * Updated sub-function traits class definitions to use defaults +// +// 2015.1: +// * Linear Algebra Library update. +// * Function prototype changed to return A_singular flag via argument not return value. +// * Added qr_inverse_traits configuration class containing the sub-function configuration classes to enable customization. +// +// 2014.1: +// * Initial release + +#ifndef X_COMPLEX_QR_INVERSE_H +#define X_COMPLEX_QR_INVERSE_H + +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/deprecated/x_complex_matrix_utils.h" +#include "hls/linear_algebra/deprecated/x_complex_qrf.h" +#include "hls/linear_algebra/hls_qr_inverse.h" +#include "hls/linear_algebra/deprecated/x_complex_back_substitute.h" +#include "hls/linear_algebra/deprecated/x_complex_matrix_multiply.h" + +namespace hls { + + + template< + int RowsColsA, + typename InputType, + typename OutputBaseType> + struct qr_inverse_traits + > { + typedef x_complex InternalType; + typedef qrf_traits QRF_CONFIG; + typedef back_substitute_traits BACK_SUB_CONFIG; + typedef matrix_multiply_traits > MULTIPLIER_CONFIG; + }; + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qrf.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qrf.h new file mode 100755 index 00000000..9a6b525e --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_qrf.h @@ -0,0 +1,220 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2013-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// QRF functions +// ------------------ +// QRF : Entry point function +// QRF_TOP : Top level function that selects implementation architecture and internal types based on a traits class. +// QRF_BASIC : Basic implementation requiring lower resource +// QRF_ALT : Optimized for throughput requiring more resources + +// Change Log +// ---------- +// 2015.3: +// * Changed default architecture to QRF_ALT +// * Added default inner loop pipelining and unrolling factors set via configuration traits class +// +// 2015.2: +// * CONFIG object declaration in the QRF_ALT function changed to "static" to ensure ROM inference. +// +// 2015.1: +// * Linear Algebra Library update +// * Added 2nd implementation optimized for throughput selectable through the qrf_traits configuration class. +// +// 2014.1: +// * Initial release. + +#ifndef X_COMPLEX_QRF_H +#define X_COMPLEX_QRF_H + +#include "hls/linear_algebra/deprecated/x_complex_matrix_utils.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/hls_qrf.h" +#include "hls_stream.h" +#ifndef __SYNTHESIS__ +#include +#include +#endif + +namespace hls { + + + template struct is_cmplx > { + static const bool value = 1; + }; + + + template int qrf_require_extra_pass(const int rows, const int cols, x_complex x) { + qrf_require_extra_pass_complex:; + if (rows == cols) { + // Unitary transformation only required for square matrices + return 1; + } else { + return 0; + } + } + + + // Magnitude computation for complex Givens rotation, avoiding squaring values which have just been square-rooted + // and guarding against under-/overflow + // - Returns real-valued magnitude + template T qrf_magnitude(x_complex a, x_complex b) { + Function_qrf_magnitude_complex:; + + const T ONE = 1.0; + const T ZERO = 0.0; + T ar, ai, br, bi, d1, d2, d3, d3a, d3b, x1, x2, x3; + T a_largest, b_largest, largest; + ar = abs(a.real()); + ai = abs(a.imag()); + br = abs(b.real()); + bi = abs(b.imag()); + + // Lower latency, builds tree structures. + if (ar > ai && ar > br && ar > bi) { + largest = ar; + d1 = ai; + d2 = br; + d3 = bi; + } else if (ai > ar && ai > br && ai > bi) { + largest = ai; + d1 = ar; + d2 = br; + d3 = bi; + } else if (br > ar && br > ai && br > bi) { + largest = br; + d1 = ar; + d2 = ai; + d3 = bi; + } else { + largest = bi; + d1 = ar; + d2 = ai; + d3 = br; + } + + if (largest == ZERO) { // Avoid divide-by-zero + return ZERO; + } else { + x1 = d1/largest; + x2 = d2/largest; + x3 = d3/largest; + T x1_sqd = x1*x1; + T x2_sqd = x2*x2; + T x3_sqd = x3*x3; + + T s1 = ONE + x1_sqd; + T s2 = x2_sqd + x3_sqd; + T s3 = s1 + s2; + + return largest*x_sqrt(s3); + } + } + + + // =================================================================================================================== + // Complex Givens rotation + // + // This implements a modified Givens rotation of the form: + // + // G = | c* s* | + // | -s c | + // + // to produce real diagonal elements suitable for subsquent computation of the inverse of input matrix A. + // + // Returns matrix G = | c s | + // | ss cc | + // + // This implementation does not use the same approach as the version of qrf_givens() for real data, as that + // would require that a divider for complex data be implemented, which is expensive. + // + // When argument 'extra_pass' is set to 1, the function computes a unitary transformation rather than a standard Givens matrix. + // This is required to ensure that the bottom-rightmost element of the R matrix is real. This transformation matrix has the form: + // + // G(trans) = | 1 0 | + // | 0 e^-j*T | + // where T = Theta for the bottom-rightmost element + // + template void qrf_givens(int extra_pass, x_complex a, x_complex b, x_complex &c, x_complex &s, x_complex &ss, x_complex &cc, x_complex &r){ + Function_qrf_givens_complex:; + const T ONE = 1.0; + const T ZERO = 0.0; + const x_complex CZERO = ZERO; + T sqrt_mag_a_mag_b; + x_complex c_tmp, s_tmp; + + if (extra_pass == 0) { + // Standard modified Givens matrix, guarding against over-/underflow + + sqrt_mag_a_mag_b = qrf_magnitude(a, b); + + if (abs(a.real()) == ZERO && abs(a.imag()) == ZERO && abs(b.real()) == ZERO && abs(b.imag()) == ZERO) { // more efficient than "if (sqrt_mag_a_mag_b == ZERO)" + c_tmp = x_copysign(ONE,a.real()); + s_tmp = ZERO; + } else { + c_tmp = a / sqrt_mag_a_mag_b; + s_tmp = b / sqrt_mag_a_mag_b; + } + c = x_conj(c_tmp); + cc = c_tmp; + s = x_conj(s_tmp); + ss = -s_tmp; + + r.real() = sqrt_mag_a_mag_b; + + } else { + // Transformation matrix to ensure real diagonal in R, guarding against over-/underflow + + sqrt_mag_a_mag_b = qrf_magnitude(CZERO, b); + + c_tmp = ONE; + + if (abs(b.real()) == ZERO && abs(b.imag()) == ZERO) { // more efficient than "if (sqrt_mag_a_mag_b == ZERO)" + s_tmp = ONE; + } else { + s_tmp = b / sqrt_mag_a_mag_b; + } + + c = c_tmp; + cc = x_conj(s_tmp); + s = ZERO; + ss = ZERO; + + r.real() = sqrt_mag_a_mag_b; + + } + + } + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_svd.h b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_svd.h new file mode 100755 index 00000000..c0b6cc08 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/deprecated/x_complex_svd.h @@ -0,0 +1,474 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +// SVD functions +// ------------------ +// SVD : Entry point function +// SVD_TOP : Top level function that selects implementation architecture and internal types based on traits class +// SVD_BASIC : Default architecture +// SVD_PAIRS : Alternative architecture + +// Change Log +// ---------- +// 2015.3: +// * Changed default architecture to SVD_PAIRS +// * Added default diagonal and off-diagonal loop pipelining and unrolling factors set via configuration traits class +// * Added additional overloaded forms of vm2x1 to simplify controlling resource utilization for complex data types implementations +// +// 2015.1: +// * Linear Algebra Library update. +// * No changes +// +// 2014.1: +// * Initial release + +#ifndef X_COMPLEX_SVD_H +#define X_COMPLEX_SVD_H + +#include "ap_fixed.h" +#include "hls/linear_algebra/utils/x_hls_complex.h" +#include "hls/linear_algebra/hls_svd.h" +#include "hls/linear_algebra/deprecated/x_complex_matrix_utils.h" +#include "utils/x_hls_utils.h" + +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { + + #ifndef HLS_SVD_SKIP_COMMON_VM2X1 + template + void vm2x1( + T a1, x_complex b1, + T a2, x_complex b2, + x_complex& c) + { + x_complex c_a1,c_a2; + c_a1 = a1; + c_a2 = a2; + vm2x1_base(c_a1,b1,c_a2,b2,c); + } + template + void vm2x1( + x_complex a1, T b1, + x_complex a2, T b2, + x_complex& c) + { + x_complex c_b1,c_b2; + c_b1 = b1; + c_b2 = b2; + vm2x1_base(a1,c_b1,a2,c_b2,c); + } + #endif + + // Calculate the sin and cos of the complex input's phase angle and phase angle divided by 2 + template< + typename InType, + typename CSType> + void calc_angle( + x_complex A, + CSType &cosThetaA, CSType &sinThetaA, + CSType &cosThetaAdiv2, CSType &sinThetaAdiv2, + bool &is_pos_real, bool &is_imag) + { + const InType inZERO = 0; + const CSType csZERO = 0; + const CSType csONE = 1; + // NOTE: Hard single precision floating point value + const float ONE_OVER_ROOT2 = 1.0f / sqrtf(2.0f); + + CSType tanThetaA, cosThetaA_int, sinThetaA_int, tanThetaAdiv2, cosThetaAdiv2_int; + + InType re = A.real(); + InType im = A.imag(); + + // Helpers to avoid testing the sin and cos outputs for particular characteristics. + is_pos_real = false; + is_imag = false; + + // Check for when effectively real only or imag only + if ( !within_precision(re,im) ) { + if ( x_isneg(re) ) { + // 180 degs (half is 90!) + cosThetaA = -csONE; + sinThetaA = csZERO; + cosThetaAdiv2 = csZERO; + sinThetaAdiv2 = csONE; + } else { + // 0 degs + cosThetaA = csONE; + sinThetaA = csZERO; + cosThetaAdiv2 = csONE; + sinThetaAdiv2 = csZERO; + is_pos_real = true; + } + } else if ( !within_precision(im,re) ) { + is_imag = true; + if ( x_isneg(im) ) { + // 270 deg + cosThetaA = csZERO; + sinThetaA = -csONE; + cosThetaAdiv2 = -ONE_OVER_ROOT2; + sinThetaAdiv2 = ONE_OVER_ROOT2; + } else { + // 90 deg + cosThetaA = csZERO; + sinThetaA = csONE; + cosThetaAdiv2 = ONE_OVER_ROOT2; + sinThetaAdiv2 = ONE_OVER_ROOT2; + } + } else { + // Basic + // Full angle values + tanThetaA = im/re; + cosThetaA_int = x_copysign(csONE,re) * x_rsqrt(csONE + tanThetaA * tanThetaA); + cosThetaA = cosThetaA_int; + sinThetaA_int = cosThetaA_int * tanThetaA; + sinThetaA = sinThetaA_int; + + // Half angle values + // o Select the correct expression to minimize error in tan(thetaA/2) + // - Avoid creating near eps values + if ( x_isneg(cosThetaA_int) ) { + tanThetaAdiv2 = (csONE - cosThetaA_int)/ sinThetaA_int; + } else { + tanThetaAdiv2 = sinThetaA_int / (csONE + cosThetaA_int); + } + cosThetaAdiv2_int = x_rsqrt(csONE + tanThetaAdiv2 * tanThetaAdiv2); + + cosThetaAdiv2 = cosThetaAdiv2_int; + sinThetaAdiv2 = cosThetaAdiv2_int * tanThetaAdiv2; + } + } + + // =================================================================================================================== + // Diagonal processing functions + + +// Real 2x2 SVD function + template < + typename AInType, + typename CSType, + typename AOutType> + void svd2x2_x_complex( + AInType w_in, AInType x_in, AInType y_in, AInType z_in, + CSType &uw_out, CSType &ux_out, CSType &uy_out, CSType &uz_out, + CSType &vw_out, CSType &vx_out, CSType &vy_out, CSType &vz_out, + AOutType &w_out, AOutType &x_out, AOutType &y_out, AOutType &z_out) + { + Function_svd2x2_real:; + // Inline to bring common lower level functions to this level of hierarchy to simplify the application + // of resource sharing directives. + #pragma HLS inline + + const AOutType outZERO = 0; + CSType s1, c1, s2, c2; + AInType u1, u2; + x_complex A, B; + CSType cosA_full, sinA_full, cosA_half, sinA_half; + CSType cosB_full, sinB_full, cosB_half, sinB_half; + bool A_is_pos_real, A_is_imag; + bool B_is_pos_real, B_is_imag; + CSType uw_int, ux_int, uy_int, uz_int; + CSType vw_int, vx_int, vy_int, vz_int; + AOutType w_out1, w_out2, z_out1, z_out2, + w_out_int, z_out_int; + + // Determine first half angle required to zero off-diagonal values + u1 = z_in - w_in; + u2 = y_in + x_in; + A.imag(u2); + A.real(u1); + calc_angle(A, cosA_full, sinA_full, cosA_half, sinA_half, A_is_pos_real, A_is_imag); + + // Determine second half angle + u1 = z_in + w_in; + u2 = y_in - x_in; + B.imag(u2); + B.real(u1); + calc_angle(B,cosB_full, sinB_full, cosB_half, sinB_half, B_is_pos_real, B_is_imag); + + // Combine half angles to produce left and right rotations + // IMPLEMENTATION TIP: There are common products in the following calculations. For parallel implementations these should be shared. + // Consider in-lining these function calls. + vm2x1(cosA_half,cosB_half,sinA_half,sinB_half,c1); + vm2x1(sinA_half,cosB_half,-cosA_half,sinB_half,s1); + vm2x1(cosA_half,cosB_half,-sinA_half,sinB_half,c2); + vm2x1(sinA_half,cosB_half,cosA_half,sinB_half,s2); + + // Build full U and V matrix + uw_int = c1; + ux_int = s1; + uy_int = -s1; + uz_int = c1; + + vw_int = c2; + vx_int = s2; + vy_int = -s2; + vz_int = c2; + + // Apply rotation + // - Uses the transpose version of U + // w_out + vm2x1(w_in,vw_int,x_in,vy_int,w_out1); + vm2x1(y_in,vw_int,z_in,vy_int,w_out2); + vm2x1(uw_int,w_out1,uy_int,w_out2,w_out_int); + // z_out + vm2x1(w_in,vx_int,x_in,vz_int,z_out1); + vm2x1(y_in,vx_int,z_in,vz_int,z_out2); + vm2x1(ux_int,z_out1,uz_int,z_out2,z_out_int); + x_out = outZERO; + y_out = outZERO; + + // Ensure singular values are positive + if (x_isneg(w_out_int)) { + w_out = -w_out_int; + vw_int = -c2; + vy_int = s2; + } else { + w_out = w_out_int; + } + if (x_isneg(z_out_int)) { + z_out = -z_out_int; + vx_int = -s2; + vz_int = -c2; + } else { + z_out = z_out_int; + } + + // Assign outputs + uw_out = uw_int; + ux_out = ux_int; + uy_out = uy_int; + uz_out = uz_int; + vw_out = vw_int; + vx_out = vx_int; + vy_out = vy_int; + vz_out = vz_int; + } + + + // Complex 2x2 SVD function + // o Calculates several additional rotations to convert the w,x,y & z values to real only before calling the real 2x2 svd + // function + template < + typename AInType, + typename CSType, + typename AOutType> + void svd2x2( + x_complex w_in, x_complex x_in, x_complex y_in, x_complex z_in, + x_complex &uw_out, x_complex &ux_out, x_complex &uy_out, x_complex &uz_out, + x_complex &vw_out, x_complex &vx_out, x_complex &vy_out, x_complex &vz_out, + x_complex &w_out, x_complex &x_out, x_complex &y_out, x_complex &z_out) + { + Function_svd2x2_complex:; + // Inline to bring common lower level functions to this level of hierarchy to simplify the application + // of resource sharing directives. + #pragma HLS inline + + const x_complex CMPLX_ZERO = 0; + const AInType REAL_ZERO = 0; + const CSType csZERO = 0; + + AInType wMag, xMag, yMag, zMag; + CSType cosThetaW, sinThetaW, cosThetaWdiv2, sinThetaWdiv2, + cosThetaX, sinThetaX, cosThetaXdiv2, sinThetaXdiv2, + cosThetaY, sinThetaY, cosThetaYdiv2, sinThetaYdiv2, + cosThetaZ, sinThetaZ, cosThetaZdiv2, sinThetaZdiv2, + RotL1_w_re, RotL1_w_im, RotR1_w_re, RotR1_w_im, + Rot2_C, Rot2_S, Rot2_Cdiv2, Rot2_Sdiv2, + RotL2_w, RotL2_x, RotL2_y, RotL2_z, + RotL3_w_re, RotL3_w_im, RotR3_w_im, + RotL4_w, RotL4_x, RotL4_y, RotL4_z, + RotR4_w, RotR4_x, RotR4_y, RotR4_z; + + x_complex RotL1_w, RotL1_x, RotL1_y, RotL1_z, + RotR1_w, RotR1_x, RotR1_y, RotR1_z, + RotL12_w, RotL12_x, RotL12_y, RotL12_z, + RotL3_w, RotL3_x, RotL3_y, RotL3_z, + RotR3_w, RotR3_x, RotR3_y, RotR3_z, + Rot2_cmplx, + RotL123_w, RotL123_x, RotL123_y, RotL123_z, + RotR13_w, RotR13_x, RotR13_y, RotR13_z, + uw_int, ux_int, uy_int, uz_int; + + x_complex w_int, x_int, x_int1, y_int, z_int, z_int1; + AInType w_out_re, x_out_re, y_out_re, z_out_re, w_int_re; + + bool w_is_pos_real, w_is_imag, + x_is_pos_real, x_is_imag, + y_is_pos_real, y_is_imag, + z_is_pos_real, z_is_imag, + tmp_is_pos_real, tmp_is_imag; + + // Determine sin and cos values of W and Y phase angles, ThetaW and ThetaY + calc_angle(w_in, cosThetaW, sinThetaW, cosThetaWdiv2, sinThetaWdiv2, w_is_pos_real, w_is_imag); + calc_angle(y_in, cosThetaY, sinThetaY, cosThetaYdiv2, sinThetaYdiv2, y_is_pos_real, y_is_imag); + + // Rotation 1 + // o 2-sided Unitary Complex rotation to make W and Y real + // RotL1 = | exp(j*(ThetaY-ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaY-ThetaW)/2) | + // RotR1 = | exp(-j*(ThetaY+ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaY+ThetaW)/2) | + // o So + // exp(j*(ThetaY-ThetaW)/2) = cos((ThetaY-ThetaW)/2) + j sin((ThetaY-ThetaW)/2) + // = cos(ThetaY/2)cos(ThetaW/2) + sin(ThetaY/2)*sin(ThetaW/2) + j ( sin(ThetaY/2)cos(ThetaW/2) - cos(ThetaY/2)sin(ThetaW/2) ) + // exp(-j*(ThetaY+ThetaW)/2) = cos((ThetaY+ThetaW)/2) - j sin((ThetaY+ThetaW)/2) + // = cos(ThetaY/2)cos(ThetaW/2) - sin(ThetaY/2)*sin(ThetaW/2) - j ( sin(ThetaY/2)cos(ThetaW/2) + cos(ThetaY/2)sin(ThetaW/2) ) + vm2x1(cosThetaYdiv2,cosThetaWdiv2,sinThetaYdiv2,sinThetaWdiv2,RotL1_w_re); + vm2x1(sinThetaYdiv2,cosThetaWdiv2,-cosThetaYdiv2,sinThetaWdiv2,RotL1_w_im); + RotL1_w.real(RotL1_w_re); + RotL1_w.imag(RotL1_w_im); + RotL1_x = 0; // Unused + RotL1_y = 0; // Unused + RotL1_z = x_conj(RotL1_w); + + // IMPLEMENTATION TIP: The following calls duplicate the multiplies also implemented above. For parallel implementations + // these should be optimized/inlined. + vm2x1(cosThetaYdiv2,cosThetaWdiv2,-sinThetaYdiv2,sinThetaWdiv2,RotR1_w_re); + vm2x1(-sinThetaYdiv2,cosThetaWdiv2,-cosThetaYdiv2,sinThetaWdiv2,RotR1_w_im); + RotR1_w.real(RotR1_w_re); + RotR1_w.imag(RotR1_w_im); + RotR1_x = 0; // Unused + RotR1_y = 0; // Unused + RotR1_z = RotR1_w; + + // Rotation 2 + // o 1-sided real Givens rotation to zero Y + // o Use the magnitudes of W and Y and calculate the sin and the cos of the rotation required to zero Y + vm2x1(w_in.real(),cosThetaW,w_in.imag(),sinThetaW,wMag); + vm2x1(y_in.real(),cosThetaY,y_in.imag(),sinThetaY,yMag); + + Rot2_cmplx.real(wMag); + Rot2_cmplx.imag(yMag); + calc_angle(Rot2_cmplx, Rot2_C, Rot2_S, Rot2_Cdiv2, Rot2_Sdiv2, tmp_is_pos_real,tmp_is_imag); + RotL2_w = Rot2_C; + RotL2_x = Rot2_S; + RotL2_y = -Rot2_S; + RotL2_z = Rot2_C; + + // Combine left hand rotations 1 & 2 + // o Using the constant value CMPLX_ZERO to obtain some optimization when the implementation allows. + // o Note that rotation 2 contains real only values + mm2x2(RotL2_w, RotL2_x, RotL2_y, RotL2_z, RotL1_w, CMPLX_ZERO, CMPLX_ZERO, RotL1_z, RotL12_w, RotL12_x, RotL12_y, RotL12_z); + + // Update w,x,y & z values to reflect rotations + w_int.imag(0); + vm2x1(wMag, Rot2_C, yMag, Rot2_S, w_int_re); + w_int.real(w_int_re); + y_int = 0; + vm2x1(x_in, RotL12_w, z_in, RotL12_x, x_int1); + x_int = x_int1 * RotR1_z; + vm2x1(x_in, RotL12_y, z_in, RotL12_z, z_int1); + z_int = z_int1 * RotR1_z; + + // Determine sin and cos values of the updated X and Z phase angles, ThetaX and ThetaZ + calc_angle(x_int, cosThetaX, sinThetaX, cosThetaXdiv2, sinThetaXdiv2, x_is_pos_real, x_is_imag); + calc_angle(z_int, cosThetaZ, sinThetaZ, cosThetaZdiv2, sinThetaZdiv2, z_is_pos_real, z_is_imag); + + // Rotation 3 + // o 2 additional 2-sided complex rotations to turn the updated X and Z into real only values. + // o The 2 rotations are combined into a single 2-sided complex rotation. + // o The first rotation rotates W and X - Rotation 3a: + // RotL3a = | exp(-j*(ThetaX+ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaX+ThetaW)/2) | + // RotR3a = | exp(j*(ThetaX-ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaX-ThetaW)/2) | + // - Note ThetaW already equals 0 so the above simplifies to only use ThetaX + // o The second rotation rotates X and Z - Rotation 3b: + // RotL3b = | exp(j*(ThetaZ-ThetaX)/2) 0 | + // | 0 exp(-j*(ThetaZ-ThetaX)/2) | + // RotR3b = | exp(-j*(ThetaZ+ThetaX)/2) 0 | + // | 0 exp(-j*(ThetaZ+ThetaX)/2) | + // - Note Following rotation 3a ThetaX equals 0 so this rotation simplifies to use only ThetaZ + // o Finally we can then combine these 2 rotations into single left and right unitary matrix giving the final rotation we'll use: + // RotL3 = | exp(j*(ThetaZ/2 - ThetaX)) 0 | + // | 0 exp(j*-(ThetaZ/2)) | + // RotR3 = | exp(j*(ThetaX - ThetaZ/2)) 0 | + // | 0 exp(j*-(ThetaZ/2)) | + // o So + // exp(j*(ThetaZ/2 - ThetaX)) = cos(ThetaZ/2 - ThetaX) + j sin(ThetaZ/2 - ThetaX) + // = cos(ThetaZ/2)cos(ThetaX) + sin(ThetaZ/2)*sin(ThetaX) + j ( sin(ThetaZ/2)cos(ThetaX) - cos(ThetaZ/2)sin(ThetaX) ) + // exp(j*-(ThetaZ/2)) = cos(ThetaZ/2) - j sin(ThetaZ/2) + // exp(j*(ThetaX - ThetaZ/2)) = cos(ThetaX - ThetaZ/2) + j sin(ThetaX - ThetaZ/2) + // = cos(ThetaX)cos(ThetaZ/2) + sin(ThetaX)*sin(ThetaZ/2) + j ( sin(ThetaX)cos(ThetaZ/2) - cos(ThetaX)sin(ThetaZ/2) ) + vm2x1(cosThetaZdiv2,cosThetaX,sinThetaZdiv2,sinThetaX,RotL3_w_re); + vm2x1(sinThetaZdiv2,cosThetaX,-cosThetaZdiv2,sinThetaX,RotL3_w_im); + RotL3_w.real(RotL3_w_re); + RotL3_w.imag(RotL3_w_im); + RotL3_x = 0; // Unused + RotL3_y = 0; // Unused + RotL3_z.real(cosThetaZdiv2); + RotL3_z.imag(-sinThetaZdiv2); + + RotR3_w.real( RotL3_w.real() ); + // IMPLEMENTATION TIP: Below duplicates the multiplies implemented above. For parallel implementations these should be inlined + vm2x1(cosThetaZdiv2,sinThetaX,-sinThetaZdiv2,cosThetaX,RotR3_w_im); + RotR3_w.imag(RotR3_w_im); + RotR3_x = 0; // Unused + RotR3_y = 0; // Unused + RotR3_z = RotL3_z; + + // Combine rotation 3 with 2 & 1 + mm2x2(RotL3_w, CMPLX_ZERO, CMPLX_ZERO, RotL3_z, RotL12_w, RotL12_x, RotL12_y, RotL12_z, RotL123_w, RotL123_x, RotL123_y, RotL123_z); + mm2x2(RotR1_w, CMPLX_ZERO, CMPLX_ZERO, RotR1_z, RotR3_w, CMPLX_ZERO, CMPLX_ZERO, RotR3_z, RotR13_w, RotR13_x, RotR13_y, RotR13_z); + + // Calculate the magnitudes of X and Z for use in real SVD calculation + vm2x1(x_int.real(),cosThetaX,x_int.imag(),sinThetaX,xMag); + vm2x1(z_int.real(),cosThetaZ,z_int.imag(),sinThetaZ,zMag); + + // Call real SVD function + svd2x2_x_complex(w_int.real(), xMag, REAL_ZERO, zMag, RotL4_w, RotL4_x, RotL4_y, RotL4_z, RotR4_w, RotR4_x, RotR4_y, RotR4_z, w_out_re, x_out_re, y_out_re, z_out_re); + + // Generate and assign outputs + // o The combined U values (Left rotations) must be Hermitian Transposed. + // o Note the rotation values output by the SVD function are real only + w_out = w_out_re; + x_out = x_out_re; // Zero'ed by the SVD function + y_out = y_out_re; // Zero'ed by the SVD function + z_out = z_out_re; + + mm2x2(RotL4_w, RotL4_y, RotL4_x, RotL4_z, RotL123_w, RotL123_x, RotL123_y, RotL123_z, uw_int, ux_int, uy_int, uz_int); + uw_out = x_conj(uw_int); + ux_out = x_conj(uy_int); // Transposed + uy_out = x_conj(ux_int); // Transposed + uz_out = x_conj(uz_int); + + mm2x2(RotR13_w, RotR13_x, RotR13_y, RotR13_z, RotR4_w, RotR4_x, RotR4_y, RotR4_z, vw_out, vx_out, vy_out, vz_out); + + } + +} +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_back_substitute.h b/vitis/v2020_1/hls/linear_algebra/hls_back_substitute.h new file mode 100644 index 00000000..8ded8742 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_back_substitute.h @@ -0,0 +1,366 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// Back Substitution functions +// --------------------------- +// BACK_SUBSTITUTE : Entry point function +// BACK_SUBSTITUTE_TOP : Top level function that selects implementation architecture and internal types based on a traits class. +// BACK_SUBSTITUTE_BASIC : Implementation requiring lower resources +// BACK_SUBSTITUTE_ALT : Re-arranged loops to improve dependencies and throughput with increased resources. + +// Change Log +// ---------- +// 2015.3: +// * Change default archtecture +// * Added default inner loop pipelining set via configuration traits class +// * Disabled explicit RESOURCE directive in back_substitute_recip +// +// 2015.1: +// * Linear Algebra Library update. +// * Added 2nd implementation with improved loop dependencies and throughput, selected through the back_substitute_traits class. +// * Function prototype changed to return a is_singular flag. +// +// 2014.1: +// * Initial release + +#ifndef HLS_BACK_SUBSTITUTE_H +#define HLS_BACK_SUBSTITUTE_H + +#include "ap_fixed.h" +#include + +namespace hls { + + // =================================================================================================================== + // Default traits struct defining the internal variable types for the Back Substitution function + template< + int RowsColsA, + typename InputType, + typename OutputType> + struct back_substitute_traits { + typedef InputType RECIP_T; + typedef InputType MULT_T; + typedef InputType ADD_T; + typedef InputType MULTNEG_T; + static const int ARCH = 1; // Select implementation. 0=Basic. 1=Improved throughput. + static const int INNER_II = 1; // Specify the pipelining target for the main inner loop + static const int DIAG_II = 1; // Specify the pipelining target for the diag loop in BACK_SUBSTITUTE_ALT + }; + + // Specialization for ap_fixed + template< + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct back_substitute_traits + , ap_fixed > { + static const int W = W1+(W1-I1)+(W1-I1); // Fractional growth is denominator fraction width + numerator full width + static const int I = I1+(W1-I1); // Integer growth is denominator int width + numerator fraction width + typedef ap_fixed RECIP_T; + typedef ap_fixed<2*W, 2*I, AP_TRN, AP_WRAP, 0> MULT_T; + typedef ap_fixed<(2*W)+1, (2*I)+1, AP_TRN, AP_WRAP, 0> ADD_T; + typedef ap_fixed<2*W2, 2*I2, AP_TRN, AP_WRAP, 0> MULTNEG_T; + static const int ARCH = 1; + static const int INNER_II = 1; + static const int DIAG_II = 1; + }; + + // Further specialization for std::complex + template< + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct back_substitute_traits + >, std::complex< ap_fixed > > { + static const int W = W1+(W1-I1)+(W1-I1); // Fractional growth is denominator fraction width + numerator full width + static const int I = I1+(W1-I1); // Integer growth is denominator int width + numerator fraction width + typedef std::complex< ap_fixed > RECIP_T; + typedef std::complex< ap_fixed<(2*W)+1, (2*I)+1, AP_TRN, AP_WRAP, 0> > MULT_T; + typedef std::complex< ap_fixed<(2*W)+2, (2*I)+2, AP_TRN, AP_WRAP, 0> > ADD_T; + typedef std::complex< ap_fixed<(2*W2)+1,(2*I2)+1, AP_TRN, AP_WRAP, 0> > MULTNEG_T; + static const int ARCH = 1; + static const int INNER_II = 1; + static const int DIAG_II = 1; + }; + + // =================================================================================================================== + // Helper functions + + // IMPLEMENTATION TIP: Force the reciprocal to be implemented using a single-precision divider with the resource directive. + // This permits sharing of operators with the factorization function preceding the back-substitution + template void back_substitute_recip(T x, T &one_over_x) { + // #pragma HLS resource variable=one_over_x core=FDiv + const T ONE = 1.0; + one_over_x = ONE/x; + } + + // All diagonal elements of the factorization (Cholesky or QR) should be real. + // We can therefore use a real-valued divider (or reciprocal operator) to compute the diagonal inverse values. + // + // IMPLEMENTATION TIP: Force the reciprocal to be implemented using a single-precision divider with the resource directive. + // This permits sharing of operators with the factorization function preceding the back-substitution. + template void back_substitute_recip(std::complex x, std::complex &one_over_x) { + // #pragma HLS resource variable=recip core=FDiv + T recip; // intermediate variable to allow directive to be applied + const std::complex ONE = 1.0; + recip = ONE.real()/x.real(); + one_over_x.real(recip); + one_over_x.imag(0.0); + } + + template< + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + void back_substitute_recip(ap_fixed x, + ap_fixed &one_over_x) { + ap_fixed ONE = 1; // Size to the output precision + one_over_x = ONE/x; // Infers a divider + } + + template< + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + void back_substitute_recip(std::complex< ap_fixed > x, + std::complex< ap_fixed > &one_over_x) { + std::complex< ap_fixed > ONE; // Size to the output precision + ONE.real(1); + ONE.imag(0); + one_over_x.real( ONE.real()/x.real()); // Infers a real-valued divider + one_over_x.imag(0); + } + + // =================================================================================================================== + // BACK_SUBSTITUTE_BASIC + // o It is assumed that argument B is an internal buffer created in the calling function + // and not an external interface, since the back substitution process reads and writes + // from/to that buffer. + template< + int RowsColsA, + typename BackSubstituteTraits, + typename InputType, + typename OutputType> + void back_substitute_basic(const InputType A[RowsColsA][RowsColsA], + OutputType B[RowsColsA][RowsColsA], + int& is_singular) { + + typename BackSubstituteTraits::RECIP_T diag_recip, diag_recip_calc; + OutputType subst_prod_m1; + OutputType subst_prod_m2; + typename BackSubstituteTraits::MULT_T subst_prod; + typename BackSubstituteTraits::ADD_T subst_prod_sum; + typename BackSubstituteTraits::ADD_T subst_sum; + typename BackSubstituteTraits::ADD_T diag_recip_low; + typename BackSubstituteTraits::MULTNEG_T neg_diag_prod; + + is_singular = 0; + back_substitute_j : for (int j=0; j= j) { + if (i == j) { + continue; + } else { + B[i][j] = 0; // Sets the lower triangle to zero for the final matrix mult to work + } + } else { + subst_sum = 0; // Equivalent to setting zeros in the upper triangle of the identity matrix we're "inverting against" + back_substitute_k : for (int k=0; k= j) { + continue; + } else { + if (i > k) { + continue; + } else { + subst_prod_m1 = A[k][j]; // For fixed-point, re-size to higher precision of B + subst_prod_m2 = B[i][k]; + subst_prod = subst_prod_m1 * subst_prod_m2; + subst_prod_sum = subst_prod; // Resize + subst_sum += subst_prod_sum; + } + } + diag_recip_low = diag_recip; // For fixed-point, reduce precision to match subst_sum for multiplication + // IMPLEMENTATION TIP: Use last subst_sum value below rather than reading from B to reduce error for fixed-point implementations. + // Implementing as "neg_diag_prod = -B[i][j] * B[j][j];" for fixed-point increases error by ~10%, but halves + // the DSP48 usage. + neg_diag_prod = -subst_sum * diag_recip_low; + B[i][j] = neg_diag_prod; + } // end i>=j + } + } + } + } // end template back_substitute_basic + + // =================================================================================================================== + // BACK_SUBSTITUTE_ALT: Re-arrange loops to improve dependencies and throughput, utilizes additional internal buffers + // for the diagonal and row accumulations. Arguement B is only written to. + template< + int RowsColsA, + typename BackSubstituteTraits, + typename InputType, + typename OutputType> + void back_substitute_alt(const InputType A[RowsColsA][RowsColsA], + OutputType B[RowsColsA][RowsColsA], + int& is_singular) { + + typename BackSubstituteTraits::RECIP_T diag_recip, diag_recip_calc; + typename BackSubstituteTraits::RECIP_T diag[RowsColsA]; + + typename BackSubstituteTraits::MULT_T subst_prod; + typename BackSubstituteTraits::ADD_T subst_prod_sum; + typename BackSubstituteTraits::ADD_T final_sum; + typename BackSubstituteTraits::ADD_T subst_sum; + typename BackSubstituteTraits::ADD_T row_sum[RowsColsA][RowsColsA]; + + typename BackSubstituteTraits::ADD_T diag_recip_low; + typename BackSubstituteTraits::MULTNEG_T neg_diag_prod; + OutputType select_column_multiplier; + OutputType column_multiplier[RowsColsA]; + OutputType subst_prod_m1; + + is_singular = 0; + diag_loop: for (int i=0;i=i) { + b_col_loop: for (int k=0;k + void back_substitute_top(const InputType A[RowsColsA][RowsColsA], + OutputType B[RowsColsA][RowsColsA], + int& is_singular) { + switch(BackSubstituteTraits::ARCH) { + case 0: + back_substitute_basic(A, B, is_singular); + break; + case 1: + back_substitute_alt(A, B, is_singular); + break; + default: + back_substitute_basic(A, B, is_singular); + break; + } + + } + + // =================================================================================================================== + // BACK_SUBSTITUTE: Entry point function + // o Template parameters: + // - RowsColsA : Row and column dimensions + // - InputType : Input data type + // - OutputType : Output data type + // o Arguments: + // - A : Input matrix + // - B : Output matrix. + // - is_singular : Indicates the diagonal of B contains zeros. + template< + int RowsColsA, + typename InputType, + typename OutputType> + void back_substitute(const InputType A[RowsColsA][RowsColsA], + OutputType B[RowsColsA][RowsColsA], + int& is_singular) { + typedef back_substitute_traits DEFAULT_BACK_SUBSTITUTE_TRAITS; + back_substitute_top(A, B, is_singular); + } + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_cholesky.h b/vitis/v2020_1/hls/linear_algebra/hls_cholesky.h new file mode 100755 index 00000000..7805ff4a --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_cholesky.h @@ -0,0 +1,660 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2013-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +// Cholesky functions +// ------------------ +// CHOLESKY : Entry point function +// CHOLESKY_TOP : Top level function that selects implementation architecture and internal types based on a traits class. +// CHOLESKY_BASIC : Basic implementation requiring lower resource +// CHOLESKY_ALT : Lower latency architecture requiring more resources +// CHOLESKY_ALT2 : Further improved latency architecture requiring higher resource + +// Change Log +// ---------- +// 2015.3: +// * Changed default architecture to CHOLESKY_ALT +// * Added default inner loop pipelining and unrolling factors set via configuration traits class +// * Added additional configuration traits class parameter, LowerTriangularL +// +// 2015.1: +// * Linear Algebra Library update +// * Added a third cholesky implementation with further throughput enhancements. +// +// 2014.1: +// * Initial release. + +#ifndef HLS_CHOLESKY_H +#define HLS_CHOLESKY_H + +#include "ap_fixed.h" +#include +#include "hls/linear_algebra/utils/x_hls_matrix_utils.h" + +namespace hls { + + // =================================================================================================================== + // Default traits struct defining the internal variable types for the cholesky function + template< + bool LowerTriangularL, + int RowsColsA, + typename InputType, + typename OutputType> + struct cholesky_traits { + typedef InputType PROD_T; + typedef InputType ACCUM_T; + typedef InputType ADD_T; + typedef InputType DIAG_T; + typedef InputType RECIP_DIAG_T; + typedef InputType OFF_DIAG_T; + typedef OutputType L_OUTPUT_T; + static const int ARCH = 1; // Select implementation: 0=Basic, 1=Lower latency architecture, 2=Further improved latency architecture + static const int INNER_II = 1; // Specify the pipelining target for the inner loop + static const int UNROLL_FACTOR = 1; // Specify the inner loop unrolling factor for the CHOLESKY_ALT2 architecture(2) to increase throughput + static const int UNROLL_DIM = (LowerTriangularL==true?1:2); // Dimension to unroll matrix + static const int ARCH2_ZERO_LOOP = true; // Additional implementation "switch" for the CHOLESKY_ALT2 architecture (2). + }; + + // Specialization for complex + template< + bool LowerTriangularL, + int RowsColsA, + typename InputBaseType, + typename OutputBaseType> + struct cholesky_traits + , std::complex > { + typedef std::complex PROD_T; + typedef std::complex ACCUM_T; + typedef std::complex ADD_T; + typedef std::complex DIAG_T; + typedef InputBaseType RECIP_DIAG_T; + typedef std::complex OFF_DIAG_T; + typedef std::complex L_OUTPUT_T; + static const int ARCH = 1; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + static const int UNROLL_DIM = (LowerTriangularL==true?1:2); + static const int ARCH2_ZERO_LOOP = true; + }; + + // Specialization for ap_fixed + template< + bool LowerTriangularL, + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct cholesky_traits + , ap_fixed > { + typedef ap_fixed PROD_T; + typedef ap_fixed<(W1+W1)+BitWidth::Value,(I1+I1)+BitWidth::Value, AP_RND_CONV, AP_SAT, 0> ACCUM_T; + typedef ap_fixed ADD_T ; + typedef ap_fixed<(W1+1)*2 , I1+1 , AP_RND_CONV, AP_SAT, 0> DIAG_T; // Takes result of sqrt + typedef ap_fixed<(W1+1)*2 , I1+1 , AP_RND_CONV, AP_SAT, 0> OFF_DIAG_T; // Takes result of / + typedef ap_fixed<2+(W2-I2)+W2 , 2+(W2-I2) , AP_RND_CONV, AP_SAT, 0> RECIP_DIAG_T; + typedef ap_fixed L_OUTPUT_T; // Takes new L value. Same as L output but saturation set + static const int ARCH = 1; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + static const int UNROLL_DIM = (LowerTriangularL==true?1:2); + static const int ARCH2_ZERO_LOOP = true; + }; + + // Further specialization for hls::complex + template< + bool LowerTriangularL, + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct cholesky_traits + >, std::complex< ap_fixed > > { + typedef std::complex< ap_fixed > PROD_T; + typedef std::complex< ap_fixed<(W1+W1)+BitWidth::Value,(I1+I1)+BitWidth::Value, AP_RND_CONV, AP_SAT, 0> > ACCUM_T; + typedef std::complex< ap_fixed > ADD_T ; + typedef std::complex< ap_fixed<(W1+1)*2 , I1+1 , AP_RND_CONV, AP_SAT, 0> > DIAG_T; // Takes result of sqrt + typedef std::complex< ap_fixed<(W1+1)*2 , I1+1 , AP_RND_CONV, AP_SAT, 0> > OFF_DIAG_T; // Takes result of / + typedef ap_fixed<2+(W2-I2)+W2 , 2+(W2-I2) , AP_RND_CONV, AP_SAT, 0> RECIP_DIAG_T; + typedef std::complex< ap_fixed > L_OUTPUT_T; // Takes new L value. Same as L output but saturation set + static const int ARCH = 1; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + static const int UNROLL_DIM = (LowerTriangularL==true?1:2); + static const int ARCH2_ZERO_LOOP = true; + }; + + // =================================================================================================================== + // Helper functions + + // Square root + // o Overloaded versions of the sqrt function + // o The square root of a complex number is expensive. However, the diagonal values of a Cholesky decomposition are always + // real so we don't need a full complex square root. + template int cholesky_sqrt_op(T_IN a, T_OUT &b){ + Function_cholesky_sqrt_op_real:; + const T_IN ZERO = 0; + if(a int cholesky_sqrt_op(std::complex din, std::complex &dout){ + Function_cholesky_sqrt_op_complex:; + const T_IN ZERO = 0; + T_IN a = din.real(); + dout.imag(ZERO); + + if(a + void cholesky_rsqrt(InputType x, OutputType &res) { + Function_cholesky_rsqrt_default:; + res = x_rsqrt(x); + } + template < + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + void cholesky_rsqrt(ap_fixed x, ap_fixed &res) { + Function_cholesky_rsqrt_fixed:; + ap_fixed one = 1; + ap_fixed sqrt_res; + ap_fixed sqrt_res_cast; + sqrt_res = x_sqrt(x); + sqrt_res_cast = sqrt_res; + res = one / sqrt_res_cast; + } + + // Local multiplier to handle a complex case currently not supported by the std::complex class + // - Complex multiplied by a real of a different type + // - Required for complex fixed point implementations + template < + typename AType, + typename BType, + typename CType> + void cholesky_prod_sum_mult(AType A, BType B, CType &C) + { + Function_cholesky_prod_sum_mult_real:; + C = A * B; + } + template < + typename AType, + typename BType, + typename CType> + void cholesky_prod_sum_mult(std::complex A, BType B, std::complex &C) + { + Function_cholesky_prod_sum_mult_complex:; + C.real(A.real()*B); + C.imag(A.imag()*B); + } + + // =================================================================================================================== + // CHOLESKY_BASIC + template < + bool LowerTriangularL, + int RowsColsA, + typename CholeskyTraits, + class InputType, + class OutputType> + int cholesky_basic(const InputType A[RowsColsA][RowsColsA], + OutputType L[RowsColsA][RowsColsA]){ + + int return_code = 0; + + // Use the traits struct to specify the correct type for the intermediate variables. This is really only needed for + // fixed point. + typename CholeskyTraits::PROD_T prod; + typename CholeskyTraits::ACCUM_T sum[RowsColsA]; + typename CholeskyTraits::ACCUM_T A_cast_to_sum; // A with the same dimensions as sum. + typename CholeskyTraits::ACCUM_T prod_cast_to_sum; // prod with the same dimensions as sum. + + typename CholeskyTraits::ADD_T A_minus_sum; + typename CholeskyTraits::DIAG_T new_L_diag; // sqrt(A_minus_sum) + typename CholeskyTraits::OFF_DIAG_T new_L_off_diag; // sum/L + typename CholeskyTraits::OFF_DIAG_T L_cast_to_new_L_off_diag; + + typename CholeskyTraits::L_OUTPUT_T new_L; + OutputType retrieved_L; + // Internal memory used to aviod read access from function output argument L. + // NOTE: The internal matrix only needs to be triangular but optimization using a 1-D array it will require addition + // logic to generate the indexes. Refer to the cholesky_alt function. + OutputType L_internal[RowsColsA][RowsColsA]; + + col_loop: for(int j = 0; j < RowsColsA; j++) { + sum[j] = 0; + + // Calculate the diagonal value for this column + diag_loop: for(int k = 0; k < RowsColsA; k++) { + if(k <= (j-1)) { + if(LowerTriangularL == true){ + retrieved_L = L_internal[j][k]; + } else { + retrieved_L = L_internal[k][j]; + } + sum[j] += x_conj_sq(retrieved_L); + } + } + A_cast_to_sum = A[j][j]; + + A_minus_sum = A_cast_to_sum - sum[j]; + + if(cholesky_sqrt_op(A_minus_sum, new_L_diag)){ +#ifndef __SYNTHESIS__ + printf("ERROR: Trying to find the square root of a negative number\n"); +#endif + return_code = 1; + } + + // Round to target format using method specifed by traits defined types. + new_L = new_L_diag; + + if(LowerTriangularL == true){ + L_internal[j][j] = new_L; + L[j][j] = new_L; + } else { + L_internal[j][j] = x_conj(new_L); + L[j][j] = x_conj(new_L); + } + + // Calculate the off diagonal values for this column + off_diag_loop: for(int i = 0; i < RowsColsA; i++) { + + if(i > j) { + if(LowerTriangularL == true){ + sum[j] = A[i][j]; + } else { + sum[j] = x_conj(A[j][i]); + } + + sum_loop: for(int k = 0; k < RowsColsA; k++) { + #pragma HLS PIPELINE II = CholeskyTraits::INNER_II + if(k <= (j - 1)) { + + if(LowerTriangularL == true){ + prod = -L_internal[i][k] * x_conj(L_internal[j][k]); + } else { + prod = -x_conj(L_internal[k][i]) * (L_internal[k][j]); + } + + prod_cast_to_sum = prod; + sum[j]+= prod_cast_to_sum; + } + } + + new_L_off_diag = sum[j]; + + L_cast_to_new_L_off_diag = L_internal[j][j]; + + // Diagonal is always real, avoid complex division + new_L_off_diag = new_L_off_diag / x_real(L_cast_to_new_L_off_diag); + + // Round to target format using method specifed by traits defined types. + new_L = new_L_off_diag; + + if(LowerTriangularL == true){ + L[i][j] = new_L; + L_internal[i][j] = new_L; + } else{ + L[j][i] = x_conj(new_L); + L_internal[j][i] = x_conj(new_L); + } + } else if(i < j){ + if(LowerTriangularL == true){ + L[i][j] = 0; + } else{ + L[j][i] = 0; + } + } + } + } + return(return_code); + } + + // =================================================================================================================== + // CHOLESKY_ALT: Alternative architecture with improved latency at the expense of higher resource + template < + bool LowerTriangularL, + int RowsColsA, + typename CholeskyTraits, + class InputType, + class OutputType> + int cholesky_alt(const InputType A[RowsColsA][RowsColsA], OutputType L[RowsColsA][RowsColsA]) + { + int return_code = 0; + + // Optimize internal memories + // - For complex data types the diagonal will be real only, plus for fixed point it must be stored to a + // higher precision. + // - Requires additional logic to generate the memory indexes + // - For smaller matrix sizes there maybe be an increase in memory usage + OutputType L_internal[(RowsColsA*RowsColsA-RowsColsA)/2]; + typename CholeskyTraits::RECIP_DIAG_T diag_internal[RowsColsA]; + + typename CholeskyTraits::ACCUM_T square_sum; + typename CholeskyTraits::ACCUM_T A_cast_to_sum; + typename CholeskyTraits::ADD_T A_minus_sum; + typename CholeskyTraits::DIAG_T A_minus_sum_cast_diag; + typename CholeskyTraits::DIAG_T new_L_diag; + typename CholeskyTraits::RECIP_DIAG_T new_L_diag_recip; + typename CholeskyTraits::PROD_T prod; + typename CholeskyTraits::ACCUM_T prod_cast_to_sum; + typename CholeskyTraits::ACCUM_T product_sum; + typename CholeskyTraits::OFF_DIAG_T prod_cast_to_off_diag; + typename CholeskyTraits::RECIP_DIAG_T L_diag_recip; + typename CholeskyTraits::OFF_DIAG_T new_L_off_diag; + typename CholeskyTraits::L_OUTPUT_T new_L; + typename CholeskyTraits::L_OUTPUT_T new_L_recip; + + row_loop: for(int i = 0; i < RowsColsA; i++) { + // Index generation for optimized/packed L_internal memory + int i_sub1 = i-1; + int i_off = ((i_sub1*i_sub1-i_sub1)/2)+i_sub1; + + // Off diagonal calculation + square_sum = 0; + col_loop: for(int j = 0; j < i; j++) { + #pragma HLS loop_tripcount max=1+RowsColsA/2 + // Index generation + int j_sub1 = j-1; + int j_off = ((j_sub1*j_sub1-j_sub1)/2)+j_sub1; + // Prime the off-diagonal sum with target elements A value. + if(LowerTriangularL == true){ + product_sum = A[i][j]; + } else { + product_sum = x_conj(A[j][i]); + } + sum_loop: for(int k = 0; k < j; k++) { + #pragma HLS loop_tripcount max=1+RowsColsA/2 + #pragma HLS PIPELINE II = CholeskyTraits::INNER_II + prod = -L_internal[i_off+k] * x_conj(L_internal[j_off+k]); + prod_cast_to_sum = prod; + product_sum+=prod_cast_to_sum; + } + prod_cast_to_off_diag = product_sum; + // Fetch diagonal value + L_diag_recip = diag_internal[j]; + // Diagonal is stored in its reciprocal form so only need to multiply the product sum + cholesky_prod_sum_mult(prod_cast_to_off_diag,L_diag_recip,new_L_off_diag); + // Round to target format using method specifed by traits defined types. + new_L = new_L_off_diag; + // Build sum for use in diagonal calculation for this row. + square_sum += x_conj_sq(new_L); + // Store result + L_internal[i_off+j] = new_L; + if(LowerTriangularL == true){ + L[i][j] = new_L; // store in lower triangle + L[j][i] = 0; // Zero upper + } else{ + L[j][i] = x_conj(new_L); // store in upper triangle + L[i][j] = 0; // Zero lower + } + } + + // Diagonal calculation + A_cast_to_sum = A[i][i]; + A_minus_sum = A_cast_to_sum - square_sum; + if(cholesky_sqrt_op(A_minus_sum, new_L_diag)){ +#ifndef __SYNTHESIS__ + printf("ERROR: Trying to find the square root of a negative number\n"); +#endif + return_code = 1; + } + // Round to target format using method specifed by traits defined types. + new_L = new_L_diag; + // Generate the reciprocal of the diagonal for internal use to aviod the latency of a divide in every off-diagonal calculation + A_minus_sum_cast_diag = A_minus_sum; + cholesky_rsqrt(x_real(A_minus_sum_cast_diag),new_L_diag_recip); + // Store diagonal value + diag_internal[i] = new_L_diag_recip; + if(LowerTriangularL == true){ + L[i][i] = new_L; + } else { + L[i][i] = x_conj(new_L); + } + } + return(return_code); + } + + // =================================================================================================================== + // CHOLESKY_ALT2: Further improved latency architecture requiring higher resource + template < + bool LowerTriangularL, + int RowsColsA, + typename CholeskyTraits, + class InputType, + class OutputType> + int cholesky_alt2(const InputType A[RowsColsA][RowsColsA], OutputType L[RowsColsA][RowsColsA]) + { + int return_code = 0; + + // To avoid array index calculations every iteration this architecture uses a simple 2D array rather than a + // optimized/packed triangular matrix. + OutputType L_internal[RowsColsA][RowsColsA]; + OutputType prod_column_top; + typename CholeskyTraits::ACCUM_T square_sum_array[RowsColsA]; + typename CholeskyTraits::ACCUM_T A_cast_to_sum; + typename CholeskyTraits::ADD_T A_minus_sum; + typename CholeskyTraits::DIAG_T A_minus_sum_cast_diag; + typename CholeskyTraits::DIAG_T new_L_diag; + typename CholeskyTraits::RECIP_DIAG_T new_L_diag_recip; + typename CholeskyTraits::PROD_T prod; + typename CholeskyTraits::ACCUM_T prod_cast_to_sum; + typename CholeskyTraits::ACCUM_T product_sum; + typename CholeskyTraits::ACCUM_T product_sum_array[RowsColsA]; + typename CholeskyTraits::OFF_DIAG_T prod_cast_to_off_diag; + typename CholeskyTraits::OFF_DIAG_T new_L_off_diag; + typename CholeskyTraits::L_OUTPUT_T new_L; + + #pragma HLS ARRAY_PARTITION variable=A cyclic dim=CholeskyTraits::UNROLL_DIM factor=CholeskyTraits::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=L cyclic dim=CholeskyTraits::UNROLL_DIM factor=CholeskyTraits::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=L_internal cyclic dim=CholeskyTraits::UNROLL_DIM factor=CholeskyTraits::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=square_sum_array cyclic dim=1 factor=CholeskyTraits::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=product_sum_array cyclic dim=1 factor=CholeskyTraits::UNROLL_FACTOR + + col_loop: for(int j = 0; j < RowsColsA; j++) { + + // Diagonal calculation + A_cast_to_sum = A[j][j]; + if ( j==0 ) { + A_minus_sum = A_cast_to_sum; + } else { + A_minus_sum = A_cast_to_sum - square_sum_array[j]; + } + if(cholesky_sqrt_op(A_minus_sum, new_L_diag)){ +#ifndef __SYNTHESIS__ + printf("ERROR: Trying to find the square root of a negative number\n"); +#endif + return_code = 1; + } + // Round to target format using method specifed by traits defined types. + new_L = new_L_diag; + // Generate the reciprocal of the diagonal for internal use to aviod the latency of a divide in every off-diagonal calculation + A_minus_sum_cast_diag = A_minus_sum; + cholesky_rsqrt(x_real(A_minus_sum_cast_diag),new_L_diag_recip); + // Store diagonal value + if(LowerTriangularL == true){ + L[j][j] = new_L; + } else { + L[j][j] = x_conj(new_L); + } + + sum_loop: for(int k = 0; k <= j; k++) { + // Define average trip count for reporting, loop reduces in length for every iteration of col_loop + #pragma HLS loop_tripcount max=1+RowsColsA/2 + // Same value used in all calcs + // o Implement -1* here + prod_column_top = -x_conj(L_internal[j][k]); + + // NOTE: Using a fixed loop length combined with a "if" to implement reducing loop length + // o Ensures the inner loop can achieve the maximum II (1) + // o May introduce a small overhead resolving the "if" statement but HLS struggled to schedule when the variable + // loop bound expression was used. + // o Will report inaccurate trip count as it will reduce by one with the col_loop + // o Variable loop bound code: row_loop: for(int i = j+1; i < RowsColsA; i++) { + row_loop: for(int i = 0; i < RowsColsA; i++) { + // IMPORTANT: row_loop must not merge with sum_loop as the merged loop becomes variable length and HLS will struggle with scheduling + #pragma HLS LOOP_FLATTEN off + #pragma HLS PIPELINE II = CholeskyTraits::INNER_II + #pragma HLS UNROLL FACTOR = CholeskyTraits::UNROLL_FACTOR + + if ( i > j ) { + prod = L_internal[i][k] * prod_column_top; + prod_cast_to_sum = prod; + + if (k==0) { + // Prime first sum + if(LowerTriangularL == true){ + A_cast_to_sum = A[i][j]; + } else { + A_cast_to_sum = x_conj(A[j][i]); + } + product_sum = A_cast_to_sum; + } else { + product_sum = product_sum_array[i]; + } + + if (k < j) { + // Accumulate row sum of columns + product_sum_array[i]= product_sum +prod_cast_to_sum; + } else { + // Final calculation for off diagonal value + prod_cast_to_off_diag = product_sum; + // Diagonal is stored in its reciprocal form so only need to multiply the product sum + cholesky_prod_sum_mult(prod_cast_to_off_diag,new_L_diag_recip,new_L_off_diag); + // Round to target format using method specifed by traits defined types. + new_L = new_L_off_diag; + // Build sum for use in diagonal calculation for this row. + if ( k == 0 ) { + square_sum_array[i] = x_conj_sq(new_L); + } else { + square_sum_array[i] += x_conj_sq(new_L); + } + // Store result + L_internal[i][j] = new_L; + // NOTE: Use the upper/lower triangle zeroing in the subsequent loop so the double memory access does not + // become a bottleneck + // o Results in a further increase of DSP resources due to the higher II of this loop. + // o Retaining the zeroing operation here can give this a loop a max II of 2 and HLS will resource share. + if(LowerTriangularL == true){ + L[i][j] = new_L; // Store in lower triangle + if (!CholeskyTraits::ARCH2_ZERO_LOOP) + L[j][i] = 0; // Zero upper + } else{ + L[j][i] = x_conj(new_L); // Store in upper triangle + if (!CholeskyTraits::ARCH2_ZERO_LOOP) + L[i][j] = 0; // Zero lower + } + } + } + } + } + } + // Zero upper/lower triangle + // o Use separate loop to ensure main calcuation can achieve an II of 1 + // o As noted above this may increase the DSP resources. + // o Required when unrolling the inner loop due to array dimension access + if (CholeskyTraits::ARCH2_ZERO_LOOP) { + zero_rows_loop: for(int i = 0; i < RowsColsA-1; i++) { + zero_cols_loop: for(int j = i+1; j < RowsColsA; j++) { + // Define average trip count for reporting, loop reduces in length for every iteration of zero_rows_loop + #pragma HLS loop_tripcount max=1+RowsColsA/2 + #pragma HLS PIPELINE + if(LowerTriangularL == true){ + L[i][j] = 0; // Zero upper + } else{ + L[j][i] = 0; // Zero lower + } + } + } + } + return(return_code); + } + + // =================================================================================================================== + // CHOLESKY_TOP: Top level function that selects implementation architecture and internal types based on the + // traits class provided via the CholeskyTraits template parameter. + // o Call this function directly if you wish to override the default architecture choice or internal types + template < + bool LowerTriangularL, + int RowsColsA, + typename CholeskyTraits, + class InputType, + class OutputType> + int cholesky_top(const InputType A[RowsColsA][RowsColsA], + OutputType L[RowsColsA][RowsColsA]){ + switch(CholeskyTraits::ARCH) { + case 0: + return cholesky_basic(A,L); + case 1: + return cholesky_alt(A,L); + case 2: + return cholesky_alt2(A,L); + default: + return cholesky_basic(A,L); + } + } + // =================================================================================================================== + // CHOLESKY: Entry point function. + // o Template parameters: + // - LowerTriangularL : When false generates the result in the upper triangle + // - RowsColsA : Defines the matrix dimensions + // - InputType : Input data type + // - OutputType : Output data type + // o Arguments: + // - A : Hermitian/symmetric positive definite input matrix + // - L : Lower or upper triangular output matrix + // o Return values: + // - 0 : Success + // - 1 : Failure. The function attempted to find the square root of a negative number i.e. the input + // matrix A was not Hermitian/symmetric positive definite. + template < + bool LowerTriangularL, + int RowsColsA, + class InputType, + class OutputType> + int cholesky(const InputType A[RowsColsA][RowsColsA], OutputType L[RowsColsA][RowsColsA]){ + typedef cholesky_traits DEFAULT_CholeskyTraits; + return cholesky_top(A,L); + } + +} +#endif + + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_cholesky_inverse.h b/vitis/v2020_1/hls/linear_algebra/hls_cholesky_inverse.h new file mode 100755 index 00000000..6b5e6eb7 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_cholesky_inverse.h @@ -0,0 +1,182 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// Cholesky Inverse functions +// -------------------------- +// CHOLESKY_INVERSE : Entry point function +// CHOLESKY_INVERSE_TOP : Top level function that selects implementation architecture and internal types based on a traits class. + +// Change Log +// ---------- +// 2015.3: +// * Updated cholesky_traits instantiation to pass LowerTriangularL template parameter +// +// 2015.1: +// * Linear Algebra Library update. +// * Function prototype changed to return success flag via argument not return value. +// * Updated lower level functions calls to pass the corresponding configuration classes defined in the top-level +// cholesky_inverse_traits class. +// +// 2014.1: +// * Initial release + +#ifndef HLS_CHOLESKY_INVERSE_H +#define HLS_CHOLESKY_INVERSE_H + +#include "ap_fixed.h" +#include +#include "hls/linear_algebra/hls_cholesky.h" +#include "hls/linear_algebra/hls_back_substitute.h" +#include "hls/linear_algebra/hls_matrix_multiply.h" + +namespace hls { + + // =================================================================================================================== + // Default traits struct defining the internal variable types for the Cholesky Inverse function + template< + int RowsColsA, + typename InputType, + typename OutputType> + struct cholesky_inverse_traits { + typedef InputType CHOLESKY_OUT; + typedef cholesky_traits< false,RowsColsA,InputType,InputType> CHOLESKY_TRAITS; + typedef InputType BACK_SUBSTITUTE_OUT; + typedef back_substitute_traits BACK_SUBSTITUTE_TRAITS; + typedef matrix_multiply_traits MATRIX_MULTIPLY_TRAITS; + }; + + // Specialization for ap_fixed + template< + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct cholesky_inverse_traits + , ap_fixed > { + // Cholesky decomposition output precision + static const int CholeskyOutputW = W1; + static const int CholeskyOutputI = I1; + static const ap_q_mode CholeskyOutputQ = Q1; + static const ap_o_mode CholeskyOutputO = O1; + static const int CholeskyOutputN = N1; + typedef ap_fixed CHOLESKY_OUT; + typedef cholesky_traits< false, RowsColsA, ap_fixed, CHOLESKY_OUT> CHOLESKY_TRAITS; + // Back substitution output precision + static const int BackSubstitutionOutW = W2; + static const int BackSubstitutionOutI = I2; + static const ap_q_mode BackSubstitutionOutQ = Q2; + static const ap_o_mode BackSubstitutionOutO = O2; + static const int BackSubstitutionOutN = N2; + typedef ap_fixed BACK_SUBSTITUTE_OUT; + typedef back_substitute_traits BACK_SUBSTITUTE_TRAITS; + typedef matrix_multiply_traits > MATRIX_MULTIPLY_TRAITS; + }; + + // Further specialization for hls::complex + template< + int RowsColsA, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct cholesky_inverse_traits + >, std::complex< ap_fixed > > { + // Cholesky decomposition output precision + static const int CholeskyOutputW = W1; + static const int CholeskyOutputI = I1; + static const ap_q_mode CholeskyOutputQ = Q1; + static const ap_o_mode CholeskyOutputO = O1; + static const int CholeskyOutputN = N1; + typedef std::complex< ap_fixed > CHOLESKY_OUT; + typedef cholesky_traits< false, RowsColsA, std::complex< ap_fixed >, CHOLESKY_OUT > CHOLESKY_TRAITS; + // Back substitution output precision + static const int BackSubstitutionOutW = W2; + static const int BackSubstitutionOutI = I2; + static const ap_q_mode BackSubstitutionOutQ = Q2; + static const ap_o_mode BackSubstitutionOutO = O2; + static const int BackSubstitutionOutN = N2; + typedef std::complex< ap_fixed > BACK_SUBSTITUTE_OUT; + typedef back_substitute_traits BACK_SUBSTITUTE_TRAITS; + typedef matrix_multiply_traits > > MATRIX_MULTIPLY_TRAITS; + }; + + // =================================================================================================================== + // CHOLESKY_INVERSE_TOP: Top level function taking a CholeskyInverseTraits template parameter which defines internal types + template < + int RowsColsA, + typename CholeskyInverseTraits, + typename InputType, + typename OutputType> + void cholesky_inverse_top(const InputType A[RowsColsA][RowsColsA], + OutputType InverseA[RowsColsA][RowsColsA], + int& cholesky_success) { + // Define intermediate buffers + typename CholeskyInverseTraits::CHOLESKY_OUT U[RowsColsA][RowsColsA]; + typename CholeskyInverseTraits::BACK_SUBSTITUTE_OUT U_inv[RowsColsA][RowsColsA]; + int U_singular; + + // Run Cholesky, get upper-triangular result + const bool LOWER_TRIANGULAR = false; + cholesky_success = cholesky_top(A, U); + + // Run back-substitution to compute U^-1 + // This doesn't work in-place, so use an additional array U_inv + back_substitute_top(U, U_inv,U_singular); + + // A^-1 = U^-1*U^-t (equivalent to L-t*L-1) + matrix_multiply_top(U_inv, U_inv, InverseA); + + } + + // =================================================================================================================== + // CHOLESKY_INVERSE: Entry point function. + // o Template parameters: + // - RowsColsA : Defines the matrix dimensions + // - InputType : Input data type + // - OutputType : Output data type + // o Arguments: + // - A : Square Hermitian/symmetric positive definite input matrix + // - InverseA : Inverse of input matrix + // - cholesky_success : Indicates if A was successfully inverted. 0 = Success 1 = Failure. The function attempted to + // find the square root of a negative number i.e. the input matrix A was not Hermitian/symmetric + // positive definite. + template < + int RowsColsA, + typename InputType, + typename OutputType> + void cholesky_inverse(const InputType A[RowsColsA][RowsColsA], + OutputType InverseA[RowsColsA][RowsColsA], + int& cholesky_success) { + typedef cholesky_inverse_traits DEFAULT_CHOLESKY_INVERSE_TRAITS; + cholesky_inverse_top(A, InverseA, cholesky_success); + } + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_matrix_multiply.h b/vitis/v2020_1/hls/linear_algebra/hls_matrix_multiply.h new file mode 100755 index 00000000..cc1e48a1 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_matrix_multiply.h @@ -0,0 +1,567 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +// Matrix Multiply functions +// ------------------------- +// MATRIX_MULTIPLY : Entry point function. +// MATRIX_MULTIPLY_TOP : Top level function that selects implementation architecture and internal types based on traits class. +// MATRIX_MULTIPLY_DEFAULT : Default architecture. +// MATRIX_MULTIPLY_ALT1 : Improved throughput for rolled floating point implementations at the expense of an additional memory. +// MATRIX_MULTIPLY_ALT2 : Further rolled floating point throughput improvement for small matrix sizes. Requires larger internal memory. +// MATRIX_MULTIPLY_ADD_TREE : Architecture using an adder tree for fully unrolled floating point implementations. +// MATRIX_MULTIPLY_FULL : Default architecture including directives to fully unroll inner loop, fixed point implementations + +// Change Log +// ---------- +// 2015.3: +// * Default architecture selected based on data type +// * Removed default architecture choice macros +// * Added default inner loop pipelining value set via configuration traits class +// * Correction to internal ap_fixed types bit width +// * Added MATRIX_MULTIPLY_FULL architecture +// +// 2015.1: +// * Linear Algebra Library update. +// * No changes +// +// 2014.1: +// * Initial release + +#ifndef HLS_MATRIX_MULTIPLY_H +#define HLS_MATRIX_MULTIPLY_H + +#include "ap_fixed.h" +#include +#include "hls/linear_algebra/utils/x_hls_matrix_utils.h" + +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { + + // =================================================================================================================== + // Default traits struct defining variable types and architecture selection + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + typename InputType, + typename OutputType> + struct matrix_multiply_traits { + static const int RowsATrans = ( TransposeFormA::TransposeType != 0 ? ColsA : RowsA); + static const int ColsATrans = ( TransposeFormA::TransposeType != 0 ? RowsA : ColsA); + static const int RowsBTrans = ( TransposeFormB::TransposeType != 0 ? ColsB : RowsB); + static const int ColsBTrans = ( TransposeFormB::TransposeType != 0 ? RowsB : ColsB); + static const int B_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 1 : 2); // Determine B input unroll dimension for MATRIX_MULTIPLY_ADD_ALT 1&2 architectures + static const int A_FULL_UNROLL_DIM = ( TransposeFormA::TransposeType != 0 ? 1 : 2); // Determine A input unroll dimension for MATRIX_MULTIPLY_ADD_TREE and MATRIX_MULTIPLY_FULL architectures + static const int B_FULL_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 2 : 1); // Determine B input unroll dimension for MATRIX_MULTIPLY_ADD_TREE and MATRIX_MULTIPLY_FULL architectures + typedef InputType INPUT_T; + typedef typename x_traits::MULT_T MULT_T; + typedef typename x_traits_d::ACCUM_T ACCUM_T; + static const int ARCH = 2; // Select implementation: + // 0: MATRIX_MULTIPLY_DEFAULT + // 1: MATRIX_MULTIPLY_ALT1 + // 2: MATRIX_MULTIPLY_ALT2 + // 3: MATRIX_MULTIPLY_ADD_TREE + // 4: MATRIX_MULTIPLY_FULL + static const int INNER_II = 1; // Specify the pipelining target for the inner loop + static const int UNROLL_FACTOR = 1; // Specify the inner loop unrolling factor + }; + + // Specialization for ap_fixed + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct matrix_multiply_traits + , ap_fixed > { + static const int RowsATrans = ( TransposeFormA::TransposeType != 0 ? ColsA : RowsA); + static const int ColsATrans = ( TransposeFormA::TransposeType != 0 ? RowsA : ColsA); + static const int RowsBTrans = ( TransposeFormB::TransposeType != 0 ? ColsB : RowsB); + static const int ColsBTrans = ( TransposeFormB::TransposeType != 0 ? RowsB : ColsB); + static const int B_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 1 : 2); + static const int A_FULL_UNROLL_DIM = ( TransposeFormA::TransposeType != 0 ? 1 : 2); + static const int B_FULL_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 2 : 1); + typedef ap_fixed INPUT_T; + typedef ap_fixed MULT_T; + typedef ap_fixed::Value, I1+I1+BitWidth::Value, AP_TRN, AP_WRAP, 0> ACCUM_T; + static const int ARCH = 0; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + }; + + // Further specialization for std::complex + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, + int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2> + struct matrix_multiply_traits + >, std::complex > > { + static const int RowsATrans = ( TransposeFormA::TransposeType != 0 ? ColsA : RowsA); + static const int ColsATrans = ( TransposeFormA::TransposeType != 0 ? RowsA : ColsA); + static const int RowsBTrans = ( TransposeFormB::TransposeType != 0 ? ColsB : RowsB); + static const int ColsBTrans = ( TransposeFormB::TransposeType != 0 ? RowsB : ColsB); + static const int B_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 1 : 2); + static const int A_FULL_UNROLL_DIM = ( TransposeFormA::TransposeType != 0 ? 1 : 2); + static const int B_FULL_UNROLL_DIM = ( TransposeFormB::TransposeType != 0 ? 2 : 1); + typedef std::complex< ap_fixed > INPUT_T; + typedef std::complex< ap_fixed > MULT_T; + typedef std::complex< ap_fixed::Value, I1+I1+BitWidth::Value, AP_TRN, AP_WRAP, 0> > ACCUM_T; + static const int ARCH = 0; + static const int INNER_II = 1; + static const int UNROLL_FACTOR = 1; + }; + + // =================================================================================================================== + // MATRIX_MULTIPLY_DEFAULT: Default architecture + // o Fixed point implementation maps well to DSP48 cascades + // o Floating point adders get used sequentially as an accumulator giving a long latency + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int RowsC, + int ColsC, + typename MULTIPLIER_TRAITS, + typename InputType, + typename OutputType> + void matrix_multiply_default(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + // Check defined array dimensions are compatible + // - The ROWS and COLS value of the traits considers the transpose operation request for A & B +#ifndef __SYNTHESIS__ + assert(MULTIPLIER_TRAITS::ColsATrans == MULTIPLIER_TRAITS::RowsBTrans); + assert(RowsC == MULTIPLIER_TRAITS::RowsATrans); + assert(ColsC == MULTIPLIER_TRAITS::ColsBTrans); +#endif + + // Use the traits struct to specify the correct type for the intermediate variables + typename MULTIPLIER_TRAITS::INPUT_T cast_in_a, cast_in_b; + typename MULTIPLIER_TRAITS::MULT_T mult; + typename MULTIPLIER_TRAITS::ACCUM_T recast_mult, sum_mult; + + a_row_loop: for (int r = 0; r < MULTIPLIER_TRAITS::RowsATrans; r++) { + b_col_loop: for (int c = 0; c < MULTIPLIER_TRAITS::ColsBTrans; c++) { + a_col_loop: for (int k = 0; k < MULTIPLIER_TRAITS::ColsATrans; k++) { + #pragma HLS PIPELINE II = MULTIPLIER_TRAITS::INNER_II + cast_in_a = GetMatrixElement(A, r, k); + cast_in_b = GetMatrixElement(B, k, c); + mult = cast_in_a * cast_in_b; + + // Cast mult to the correct output size before adding. + recast_mult = mult; + if (k==0) + sum_mult = recast_mult; + else + sum_mult += recast_mult; + + // Store result + if (k==MULTIPLIER_TRAITS::ColsATrans-1) C[r][c] = sum_mult; + } + } + } + } + + // =================================================================================================================== + // MATRIX_MULTIPLY_ALT1: Improved throughput for rolled floating point implementations at the expense of an additional + // memory. + // o Moves the inner loop defined in matrix_multiply_default up one level of nesting and uses an internal memory to store + // partial results + // o For matrix sizes where the common dimension (A rows & B cols) is greater than the latency of the accumulation adder + // this implementation will achieve full throughput for the inner loop once it is pipelined. + // o For smaller matrix sizes use matrix_multiply_alt2 to achieve full throughput in the inner loop. + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int RowsC, + int ColsC, + typename MULTIPLIER_TRAITS, + typename InputType, + typename OutputType> + void matrix_multiply_alt1(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + // Check defined array dimensions are compatible + // - The ROWS and COLS value of the traits considers the transpose operation request for A & B +#ifndef __SYNTHESIS__ + assert(MULTIPLIER_TRAITS::ColsATrans == MULTIPLIER_TRAITS::RowsBTrans); + assert(RowsC == MULTIPLIER_TRAITS::RowsATrans); + assert(ColsC == MULTIPLIER_TRAITS::ColsBTrans); +#endif + + // Use the traits struct to specify the correct type for the intermediate variables + typename MULTIPLIER_TRAITS::INPUT_T cast_in_a, cast_in_b; + typename MULTIPLIER_TRAITS::MULT_T mult; + typename MULTIPLIER_TRAITS::ACCUM_T recast_mult; + typename MULTIPLIER_TRAITS::ACCUM_T sum_mult[MULTIPLIER_TRAITS::ColsBTrans]; + + #pragma HLS ARRAY_PARTITION variable=B cyclic dim=MULTIPLIER_TRAITS::B_UNROLL_DIM factor=MULTIPLIER_TRAITS::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=C cyclic dim=2 factor=MULTIPLIER_TRAITS::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=sum_mult cyclic dim=1 factor=MULTIPLIER_TRAITS::UNROLL_FACTOR + + a_row_loop: for (int r = 0; r < MULTIPLIER_TRAITS::RowsATrans; r++) { + a_col_loop: for (int k = 0; k < MULTIPLIER_TRAITS::ColsATrans; k++) { + b_col_loop: for (int c = 0; c < MULTIPLIER_TRAITS::ColsBTrans; c++) { + #pragma HLS PIPELINE II = MULTIPLIER_TRAITS::INNER_II + #pragma HLS UNROLL FACTOR = MULTIPLIER_TRAITS::UNROLL_FACTOR + // Multiply + cast_in_a = GetMatrixElement(A, r, k); + cast_in_b = GetMatrixElement(B, k, c); + mult = cast_in_a * cast_in_b; + // Cast mult to the correct output size before adding. + recast_mult = mult; + // Sum + if (k==0) { + // Initialise + sum_mult[c] = recast_mult; + } else if (k==MULTIPLIER_TRAITS::ColsATrans-1) { + // Store result + C[r][c] = sum_mult[c] + recast_mult; + } else { + // Accumulate + sum_mult[c] = sum_mult[c] + recast_mult; + } + } + } + } + } + + // =================================================================================================================== + // MATRIX_MULTIPLY_ALT2: Further rolled floating point throughput improvement for small matrix sizes. Requires larger + // internal memory. + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int RowsC, + int ColsC, + typename MULTIPLIER_TRAITS, + typename InputType, + typename OutputType> + void matrix_multiply_alt2(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + // Check defined array dimensions are compatible + // - The ROWS and COLS value of the traits considers the transpose operation request for A & B +#ifndef __SYNTHESIS__ + assert(MULTIPLIER_TRAITS::ColsATrans == MULTIPLIER_TRAITS::RowsBTrans); + assert(RowsC == MULTIPLIER_TRAITS::RowsATrans); + assert(ColsC == MULTIPLIER_TRAITS::ColsBTrans); +#endif + + // Use the traits struct to specify the correct type for the intermediate variables + typename MULTIPLIER_TRAITS::INPUT_T cast_in_a, cast_in_b; + typename MULTIPLIER_TRAITS::MULT_T mult; + typename MULTIPLIER_TRAITS::ACCUM_T recast_mult; + typename MULTIPLIER_TRAITS::ACCUM_T sum_mult[MULTIPLIER_TRAITS::RowsATrans][MULTIPLIER_TRAITS::ColsBTrans]; + + #pragma HLS ARRAY_PARTITION variable=B cyclic dim=MULTIPLIER_TRAITS::B_UNROLL_DIM factor=MULTIPLIER_TRAITS::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=C cyclic dim=2 factor=MULTIPLIER_TRAITS::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=sum_mult cyclic dim=2 factor=MULTIPLIER_TRAITS::UNROLL_FACTOR + + a_col_loop: for (int k = 0; k < MULTIPLIER_TRAITS::ColsATrans; k++) { + a_row_loop: for (int r = 0; r < MULTIPLIER_TRAITS::RowsATrans; r++) { + b_col_loop: for (int c = 0; c < MULTIPLIER_TRAITS::ColsBTrans; c++) { + #pragma HLS PIPELINE II = MULTIPLIER_TRAITS::INNER_II + #pragma HLS UNROLL FACTOR = MULTIPLIER_TRAITS::UNROLL_FACTOR + // Multiply + cast_in_a = GetMatrixElement(A, r, k); + cast_in_b = GetMatrixElement(B, k, c); + mult = cast_in_a * cast_in_b; + // Cast mult to the correct output size before adding. + recast_mult = mult; + // Sum + if (k==0) { + // Initialise + sum_mult[r][c] = recast_mult; + } else if (k==MULTIPLIER_TRAITS::ColsATrans-1) { + // Store result + C[r][c] = sum_mult[r][c] + recast_mult; + } else { + // Accumulate + sum_mult[r][c] = sum_mult[r][c] + recast_mult; + } + } + } + } + } + + // =================================================================================================================== + // MATRIX_MULTIPLY_ADD_TREE: Architecture using an adder tree + // o Optimized for unrolled floating-point. In fixed-point, this adds overhead. + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int RowsC, + int ColsC, + typename MULTIPLIER_TRAITS, + typename InputType, + typename OutputType> + void matrix_multiply_add_tree(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + + // Check defined array dimensions are compatible + // - The ROWS and COLS value of the traits considers the transpose operation request for A & B +#ifndef __SYNTHESIS__ + assert(MULTIPLIER_TRAITS::ColsATrans == MULTIPLIER_TRAITS::RowsBTrans); + assert(RowsC == MULTIPLIER_TRAITS::RowsATrans); + assert(ColsC == MULTIPLIER_TRAITS::ColsBTrans); +#endif + + #pragma HLS ARRAY_PARTITION variable=A complete dim=MULTIPLIER_TRAITS::A_FULL_UNROLL_DIM + #pragma HLS ARRAY_PARTITION variable=B complete dim=MULTIPLIER_TRAITS::B_FULL_UNROLL_DIM + + // Use the traits struct to specify the correct type for the intermediate variables + typename MULTIPLIER_TRAITS::INPUT_T cast_in_a, cast_in_b; + typename MULTIPLIER_TRAITS::MULT_T mult; + + // Determine the number of ranks for the adder tree and declare array + // o The adder_tree is larger than required as each rank only needs to be half the size of the previous rank + const unsigned a_cols_log2 = BitWidth::Value; + const unsigned a_cols_sub1_log2 = BitWidth::Value; + const unsigned num_ranks = (a_cols_log2 != a_cols_sub1_log2 ? a_cols_log2 : a_cols_log2 + 1); + + typename MULTIPLIER_TRAITS::ACCUM_T adder_tree[num_ranks][MULTIPLIER_TRAITS::ColsATrans]; + + a_row_loop: for (int i=0; i < MULTIPLIER_TRAITS::RowsATrans; i++) { + b_col_loop: for (int j=0; j < MULTIPLIER_TRAITS::ColsBTrans; j++) { + // Fully unrolled inner loop + #pragma HLS PIPELINE II = 1 + a_col_loop: for (int k=0; k < MULTIPLIER_TRAITS::ColsATrans; k++) { + cast_in_a = GetMatrixElement(A, i, k); + cast_in_b = GetMatrixElement(B, k, j); + mult = cast_in_a * cast_in_b; + // Assign multiplier output to the first rank of the adder tree array + adder_tree[num_ranks-1][k] = mult; + } + + // Build adder tree + unsigned rank_size = MULTIPLIER_TRAITS::ColsATrans; + add_level_loop: for(int adder_tree_rank=num_ranks-2; adder_tree_rank>=0; adder_tree_rank--) { + unsigned prev_rank_is_odd = rank_size % 2; + rank_size = (rank_size+1) / 2; // rank size + // Fixed loop size so it can be unrolled. + add_col_loop: for(int jj=0; jj<((MULTIPLIER_TRAITS::ColsATrans+1)/2); jj++) { + if (jj + void matrix_multiply_full(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + // Check defined array dimensions are compatible + // - The ROWS and COLS value of the traits considers the transpose operation request for A & B +#ifndef __SYNTHESIS__ + assert(MULTIPLIER_TRAITS::ColsATrans == MULTIPLIER_TRAITS::RowsBTrans); + assert(RowsC == MULTIPLIER_TRAITS::RowsATrans); + assert(ColsC == MULTIPLIER_TRAITS::ColsBTrans); +#endif + + // Use the traits struct to specify the correct type for the intermediate variables + typename MULTIPLIER_TRAITS::INPUT_T cast_in_a, cast_in_b; + typename MULTIPLIER_TRAITS::MULT_T mult; + typename MULTIPLIER_TRAITS::ACCUM_T recast_mult, sum_mult; + + #pragma HLS ARRAY_PARTITION variable=A complete dim=MULTIPLIER_TRAITS::A_FULL_UNROLL_DIM + #pragma HLS ARRAY_PARTITION variable=B complete dim=MULTIPLIER_TRAITS::B_FULL_UNROLL_DIM + + a_row_loop: for (int r = 0; r < MULTIPLIER_TRAITS::RowsATrans; r++) { + b_col_loop: for (int c = 0; c < MULTIPLIER_TRAITS::ColsBTrans; c++) { + // Fully unrolled inner loop + #pragma HLS PIPELINE II = 1 + a_col_loop: for (int k = 0; k < MULTIPLIER_TRAITS::ColsATrans; k++) { + + cast_in_a = GetMatrixElement(A, r, k); + cast_in_b = GetMatrixElement(B, k, c); + mult = cast_in_a * cast_in_b; + + // Cast mult to the correct output size before adding. + recast_mult = mult; + if (k==0) + sum_mult = recast_mult; + else + sum_mult += recast_mult; + + // Store result + if (k==MULTIPLIER_TRAITS::ColsATrans-1) C[r][c] = sum_mult; + } + } + } + } + + // =================================================================================================================== + // MATRIX_MULTIPLY_TOP: Top level function that selects implementation architecture and internal types based on the + // traits class provided via the MULTIPLIER_TRAITS template parameter. + // o Call this function directly if you wish to override the default architecture choice or internal types + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int RowsC, + int ColsC, + typename MULTIPLIER_TRAITS, + typename InputType, + typename OutputType> + void matrix_multiply_top(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + + switch(MULTIPLIER_TRAITS::ARCH) { + case 0: + matrix_multiply_default (A, B, C); + break; + case 1: + matrix_multiply_alt1 (A, B, C); + break; + case 2: + matrix_multiply_alt2 (A, B, C); + break; + case 3: + matrix_multiply_add_tree (A, B, C); + break; + case 4: + matrix_multiply_full (A, B, C); + break; + default: + matrix_multiply_default (A, B, C); + } + } + + // =================================================================================================================== + // MATRIX_MULTIPLY: Entry point function. + // o Template parameters: + // - TransposeFormA : Defines if the A matix is transposed before the multiplication. Valid values are: + // NoTranspose, Transpose, ConjugateTranspose + // - TransposeFormB : Defines if the A matix is transposed before the multiplication. + // - RowsA : Defines the number of rows in the A matrix + // - ColsA : Defines the number of columns in the A matrix + // - RowsB : Defines the number of rows in the B matrix + // - ColsB : Defines the number of columns in the B matrix + // - RowsC : Defines the number of rows in the C matrix + // - ColsC : Defines the number of columns in the C matrix + // - InputType : Input data type + // - OutputType : Output data type + // o Arguments: + // - A : First input matrix + // - B : Second input matrix + // - C : AB product output matrix + template< + class TransposeFormA, + class TransposeFormB, + int RowsA, + int ColsA, + int RowsB, + int ColsB, + int RowsC, + int ColsC, + typename InputType, + typename OutputType> + void matrix_multiply(const InputType A [RowsA][ColsA], + const InputType B [RowsB][ColsB], + OutputType C [RowsC][ColsC]) + { + // Define default traits struct for template type + typedef matrix_multiply_traits DEFAULT_MULTIPLIER_TRAITS; + // Call top level function + matrix_multiply_top (A, B, C); + } +} + +#endif + + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_qr_inverse.h b/vitis/v2020_1/hls/linear_algebra/hls_qr_inverse.h new file mode 100755 index 00000000..fa5bfaaa --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_qr_inverse.h @@ -0,0 +1,138 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// QR Inverse functions +// --------------------- +// QR_INVERSE : Entry point function +// QR_INVERSE_TOP : Top level function that selects implementation architecture and internal types based on a traits class. + +// Change Log +// ---------- +// 2015.3: +// * Updated sub-function traits class definitions to use defaults +// +// 2015.1: +// * Linear Algebra Library update. +// * Function prototype changed to return A_singular flag via argument not return value. +// * Added qr_inverse_traits configuration class containing the sub-function configuration classes to enable customization. +// +// 2014.1: +// * Initial release + +#ifndef HLS_QR_INVERSE_H +#define HLS_QR_INVERSE_H + +#include +#include "hls/linear_algebra/utils/x_hls_matrix_utils.h" +#include "hls/linear_algebra/hls_qrf.h" +#include "hls/linear_algebra/hls_back_substitute.h" +#include "hls/linear_algebra/hls_matrix_multiply.h" + +namespace hls { + + template< + int RowsColsA, + typename InputType, + typename OutputType> + struct qr_inverse_traits { + typedef float InternalType; + typedef qrf_traits QRF_CONFIG; + typedef back_substitute_traits BACK_SUB_CONFIG; + typedef matrix_multiply_traits MULTIPLIER_CONFIG; + }; + + template< + int RowsColsA, + typename InputType, + typename OutputBaseType> + struct qr_inverse_traits + > { + typedef std::complex InternalType; + typedef qrf_traits QRF_CONFIG; + typedef back_substitute_traits BACK_SUB_CONFIG; + typedef matrix_multiply_traits > MULTIPLIER_CONFIG; + }; + + // =================================================================================================================== + // QR_INVERSE_TOP: Top level function that selects implementation architecture and internal types based on the + // traits class + // o Call this function directly if you wish to override the default architecture choice or internal types + template < + int RowsColsA, + typename QRInverseTraits, + typename InputType, + typename OutputType> + void qr_inverse_top(const InputType A[RowsColsA][RowsColsA], + OutputType InverseA[RowsColsA][RowsColsA], + int& A_singular) { + + // Define intermediate buffers + typename QRInverseTraits::InternalType Q[RowsColsA][RowsColsA]; + typename QRInverseTraits::InternalType R[RowsColsA][RowsColsA]; + typename QRInverseTraits::InternalType InverseR[RowsColsA][RowsColsA]; + + // Run QR factorization, get upper-triangular result in R, orthogonal/unitary matrix Q + const bool TRANSPOSED_Q = true; // Q is produced in transpose form such that Q*A = R + qrf_top(A, Q, R); + + // Run back-substitution to compute R^-1 + // This doesn't work in-place, so use an additional array InverseR + back_substitute_top(R, InverseR, A_singular); + + // A^-1 = R^-1*Qt + matrix_multiply_top(InverseR, Q, InverseA); + + } // end template qr_inverse + + // =================================================================================================================== + // QR_INVERSE: Entry point function. + // o Template parameters: + // - RowsColsA : Defines the matrix dimensions + // - InputType : Input data type + // - OutputType : Output data type + // o Arguments: + // - A : Input matrix A + // - InverseA : Inverse of input matrix + // - A_singular : Failure, matrix A is singular + template < + int RowsColsA, + typename InputType, + typename OutputType> + void qr_inverse(const InputType A[RowsColsA][RowsColsA], + OutputType InverseA[RowsColsA][RowsColsA], + int& A_singular) { + typedef qr_inverse_traits DEFAULT_QR_INVERSE_TRAITS; + qr_inverse_top(A, InverseA, A_singular); + } +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_qrf.h b/vitis/v2020_1/hls/linear_algebra/hls_qrf.h new file mode 100755 index 00000000..5c4049d0 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_qrf.h @@ -0,0 +1,753 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2013-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +// QRF functions +// ------------------ +// QRF : Entry point function +// QRF_TOP : Top level function that selects implementation architecture and internal types based on a traits class. +// QRF_BASIC : Basic implementation requiring lower resource +// QRF_ALT : Optimized for throughput requiring more resources + +// Change Log +// ---------- +// 2015.3: +// * Changed default architecture to QRF_ALT +// * Added default inner loop pipelining and unrolling factors set via configuration traits class +// +// 2015.2: +// * CONFIG object declaration in the QRF_ALT function changed to "static" to ensure ROM inference. +// +// 2015.1: +// * Linear Algebra Library update +// * Added 2nd implementation optimized for throughput selectable through the qrf_traits configuration class. +// +// 2014.1: +// * Initial release. + +#ifndef HLS_QRF_H +#define HLS_QRF_H + +#include "hls/linear_algebra/utils/x_hls_matrix_utils.h" +#include +#include "hls_stream.h" +#ifndef __SYNTHESIS__ +#include +#include +#endif + +namespace hls { + + // =================================================================================================================== + // Traits struct defining architecture selection + template< + int RowsA, + int ColsA, + typename InputType, + typename OutputType> + struct qrf_traits { + static const int ARCH = 1; // Select implementation. 0=Basic. 1=Lower latency/thoughput architecture. + static const int CALC_ROT_II = 1; // Specify the rotation calculation loop target II of the QRF_ALT architecture(1) + static const int UPDATE_II = 4; // Specify the pipelining target for the Q & R update loops + static const int UNROLL_FACTOR = 1; // Specify the unrolling factor for Q & R update loops of the QRF_ALT architecture(1) + }; + + // =================================================================================================================== + // Helper functions + template struct is_cmplx { + static const bool value = 0; + }; + + template struct is_cmplx > { + static const bool value = 1; + }; + + template int qrf_require_extra_pass(const int rows, const int cols, T x) { + qrf_require_extra_pass_real:; + return 0; + } + + template int qrf_require_extra_pass(const int rows, const int cols, std::complex x) { + qrf_require_extra_pass_complex:; + if (rows == cols) { + // Unitary transformation only required for square matrices + return 1; + } else { + return 0; + } + } + + // Vector multiply + template T qrf_vm(T a, T b, T c, T d) { + return a*c + b*d; + } + + // Matrix-vector multiply + template void qrf_mm(const T G[2][2], T &a, T &b) { + T x, y; + x = qrf_vm(G[0][0], G[0][1], a, b); + y = qrf_vm(G[1][0], G[1][1], a, b); + a = x; + b = y; + } + + // + template void qrf_mm_or_mag(const T G[2][2], T &a, T &b, const T mag, const int use_mag, const int extra_pass) { + T x, y; + x = qrf_vm(G[0][0], G[0][1], a, b); + y = qrf_vm(G[1][0], G[1][1], a, b); + if (use_mag == 0) { + a = x; + b = y; + } else { + if (extra_pass == 1) { + // a = a; + b = x_real(mag); + } else { + a = x_real(mag); + b = 0; + } + } + } + + // Magnitude computation for real Givens rotation, guarding against under-/overflow + // - Returns real-valued magnitude + template T qrf_magnitude(T a, T b) { + Function_qrf_magnitude_real:; + const T ONE = 1.0; + const T ZERO = 0.0; + T abs_a, abs_b; + T y, mag; + + abs_a = abs(a); // declared in x_hls_utils.h + abs_b = abs(b); + if (abs_a > abs_b) { + y = b/a; + mag = a*x_sqrt(ONE+y*y); + + } else if (abs_b == ZERO) { + mag = ZERO; + } else { + y = a/b; + mag = b*x_sqrt(ONE+y*y); + } + return mag; + } + + // Magnitude computation for complex Givens rotation, avoiding squaring values which have just been square-rooted + // and guarding against under-/overflow + // - Returns real-valued magnitude + template T qrf_magnitude(std::complex a, std::complex b) { + Function_qrf_magnitude_complex:; + + const T ONE = 1.0; + const T ZERO = 0.0; + T ar, ai, br, bi, d1, d2, d3, d3a, d3b, x1, x2, x3; + T a_largest, b_largest, largest; + ar = abs(a.real()); + ai = abs(a.imag()); + br = abs(b.real()); + bi = abs(b.imag()); + + // Lower latency, builds tree structures. + if (ar > ai && ar > br && ar > bi) { + largest = ar; + d1 = ai; + d2 = br; + d3 = bi; + } else if (ai > ar && ai > br && ai > bi) { + largest = ai; + d1 = ar; + d2 = br; + d3 = bi; + } else if (br > ar && br > ai && br > bi) { + largest = br; + d1 = ar; + d2 = ai; + d3 = bi; + } else { + largest = bi; + d1 = ar; + d2 = ai; + d3 = br; + } + + if (largest == ZERO) { // Avoid divide-by-zero + return ZERO; + } else { + x1 = d1/largest; + x2 = d2/largest; + x3 = d3/largest; + T x1_sqd = x1*x1; + T x2_sqd = x2*x2; + T x3_sqd = x3*x3; + + T s1 = ONE + x1_sqd; + T s2 = x2_sqd + x3_sqd; + T s3 = s1 + s2; + + return largest*x_sqrt(s3); + } + } + + // =================================================================================================================== + // Real Givens rotation guarding against under-/overflow situations. + // + // Returns matrix G = | c s | + // | ss cc | + // + // Note: argument 'extra_pass' is not used for the real case, but is present only to permit function overloading + // + template void qrf_givens(int extra_pass, T a, T b, T &c, T &s, T &ss, T &cc, T &r){ + Function_qrf_givens_real:; + const T ONE = 1.0; + const T ZERO = 0.0; + T mag; + + mag = qrf_magnitude(a, b); + + if (abs(a) == ZERO && abs(b) == ZERO) { // more efficient than "if (mag == ZERO)" + c = x_copysign(ONE,a); + s = ZERO; + } else { + c = a / mag; + s = b / mag; + } + cc = c; + ss = -s; + + r = mag; + } + + // =================================================================================================================== + // Complex Givens rotation + // + // This implements a modified Givens rotation of the form: + // + // G = | c* s* | + // | -s c | + // + // to produce real diagonal elements suitable for subsquent computation of the inverse of input matrix A. + // + // Returns matrix G = | c s | + // | ss cc | + // + // This implementation does not use the same approach as the version of qrf_givens() for real data, as that + // would require that a divider for complex data be implemented, which is expensive. + // + // When argument 'extra_pass' is set to 1, the function computes a unitary transformation rather than a standard Givens matrix. + // This is required to ensure that the bottom-rightmost element of the R matrix is real. This transformation matrix has the form: + // + // G(trans) = | 1 0 | + // | 0 e^-j*T | + // where T = Theta for the bottom-rightmost element + // + template void qrf_givens(int extra_pass, std::complex a, std::complex b, std::complex &c, std::complex &s, std::complex &ss, std::complex &cc, std::complex &r){ + Function_qrf_givens_complex:; + const T ONE = 1.0; + const T ZERO = 0.0; + const std::complex CZERO = ZERO; + T sqrt_mag_a_mag_b; + std::complex c_tmp, s_tmp; + + if (extra_pass == 0) { + // Standard modified Givens matrix, guarding against over-/underflow + + sqrt_mag_a_mag_b = qrf_magnitude(a, b); + + if (abs(a.real()) == ZERO && abs(a.imag()) == ZERO && abs(b.real()) == ZERO && abs(b.imag()) == ZERO) { // more efficient than "if (sqrt_mag_a_mag_b == ZERO)" + c_tmp = x_copysign(ONE,a.real()); + s_tmp = ZERO; + } else { + c_tmp = a / sqrt_mag_a_mag_b; + s_tmp = b / sqrt_mag_a_mag_b; + } + c = x_conj(c_tmp); + cc = c_tmp; + s = x_conj(s_tmp); + ss = -s_tmp; + + r.real(sqrt_mag_a_mag_b); + + + } else { + // Transformation matrix to ensure real diagonal in R, guarding against over-/underflow + + sqrt_mag_a_mag_b = qrf_magnitude(CZERO, b); + + c_tmp = ONE; + + if (abs(b.real()) == ZERO && abs(b.imag()) == ZERO) { // more efficient than "if (sqrt_mag_a_mag_b == ZERO)" + s_tmp = ONE; + } else { + s_tmp = b / sqrt_mag_a_mag_b; + } + + c = c_tmp; + cc = x_conj(s_tmp); + s = ZERO; + ss = ZERO; + + r.real(sqrt_mag_a_mag_b); + + } + + } + + // =================================================================================================================== + // Configuration class for QRF_ALT implementation + // o Determines the ROM content for the address sequence used to zero the array elements plus the number and size of + // the batches pushed through the inner loop. The batches consist of independent address accesses. + // o Initially calculates a static constant batch estimate which is used to size the look up tables. + // o Then an accurate batch count is generated by calculating the actually processing sequence. + template struct qrf_alt_config { + // Catch for div by 0 and ensure we infer a ROM for the lookup arrays + static const int ROWS_INT = (ROWS < 5 ? 5 : ROWS); + static const int COLS_INT = (COLS < 5 ? 5 : COLS); + + // Intermediate values used to calculate NUM_BATCHES_EST for rectangular cases + static const int SEQ_LEN_FULL_SQ = (ROWS_INT*(ROWS_INT-1)/2); + static const int NUM_BATCHES_FULL_SQ_EST = SEQ_LEN_FULL_SQ * 4 / ROWS_INT; + static const int NUM_BATCHES_RECT_EST = NUM_BATCHES_FULL_SQ_EST - (ROWS_INT - COLS_INT) - (ROWS_INT/COLS_INT); + + // Triangle + square + static const int SEQUENCE_LENGTH = (COLS_INT*(COLS_INT-1)/2)+((ROWS-COLS)*COLS)+(is_cmplx::value && ROWS_INT == COLS_INT?1:0); + static const int NUM_BATCHES_EST = (ROWS_INT == COLS_INT? SEQUENCE_LENGTH * 4/ COLS_INT : NUM_BATCHES_RECT_EST); + + // Actual number of batches calculated in the constructor + int NUM_BATCHES; + // SEQUENCE & BATCH_CNTS should implement as roms. + int BATCH_CNTS[NUM_BATCHES_EST]; + int SEQUENCE[SEQUENCE_LENGTH][3]; + + qrf_alt_config() { + int available[SEQUENCE_LENGTH][COLS]; + int available_cnt[COLS]; + int available_first[COLS]; + int available_last[COLS]; + int zeroed[COLS]; + int a, b, num_avail, tmp; + int cnt = 0; // Counts how many pairs we process in a batch + int seq_cnt = 0; + int actual_num_batches; + + // Initialize first column and counters + init_indices: for (int row=0;row=0;col--) { + num_avail = available_cnt[col]; + if (num_avail > 1) { + read_indices: for(int rows = 0; rows < num_avail/2 ;rows++) { + if ( rows < num_avail/2 ) { + a = available[available_first[col]][col]; + available_first[col]++; + b = available[available_first[col]][col]; + available_first[col]++; + available_cnt[col]=available_cnt[col]-2; + if (b < a) { + tmp = a; + a = b; + b = tmp; + } + // a & b are the row indexes we read from the memory for this rotation + SEQUENCE[seq_cnt][0] = a; + SEQUENCE[seq_cnt][1] = b; + SEQUENCE[seq_cnt][2] = col; + seq_cnt++; + cnt++; + available[available_last[col]][col] = a; // Non-zeroed element so store again + available_cnt[col]++; + available_last[col]++; + zeroed[col]++; + if (col < COLS-1) { + available[available_last[col+1]][col+1]=b; // Zeroed, row available to the next column + available_cnt[col+1]++; + available_last[col+1]++; + } + } + } + } + } + BATCH_CNTS[batch_num] = cnt; + // Check for end condition + if ( (ROWS == COLS && zeroed[COLS-2] == 1) || (ROWS > COLS && zeroed[COLS-1] == ROWS - COLS) ) { + NUM_BATCHES = batch_num+1; + if ( is_cmplx::value && ROWS == COLS ) { + // Add an extra rotation to ensure last element on the diagonal is real + NUM_BATCHES= batch_num+2; + BATCH_CNTS[batch_num+1] = 1; + SEQUENCE[seq_cnt][0] = ROWS-2; + SEQUENCE[seq_cnt][1] = ROWS-1; + SEQUENCE[seq_cnt][2] = ROWS-1; + } + break; + } + } + if ( NUM_BATCHES == 0 ) { +#ifndef __SYNTHESIS__ + printf("ERROR: hls_qrf.h: qrf_alt_config: ERROR: NUM_BATCHES_EST count reached without completing the processing sequence. Increase the NUM_BATCHES_EST value.\n"); + exit(1); +#endif + } + }; + }; + + // =================================================================================================================== + // QRF_BASIC + template < + bool TransposedQ, + int RowsA, + int ColsA, + typename QRF_TRAITS, + typename InputType, + typename OutputType> + void qrf_basic(const InputType A[RowsA][ColsA], + OutputType Q[RowsA][RowsA], + OutputType R[RowsA][ColsA]) { + + // Verify that template parameters are correct in simulation + if (RowsA < ColsA) { +#ifndef __SYNTHESIS__ + printf("ERROR: hls_qrf.h: Template parameter error - RowsA must be greater than ColsA; currently RowsA = %d ColsA = %d\n",RowsA,ColsA); + exit(1); +#endif + } + + // Buffers + OutputType Qi[RowsA][RowsA]; + OutputType Ri[RowsA][ColsA]; + OutputType G[2][2]; + + // Magnitude from Givens computation + OutputType mag = 0; + + // Flags for complex-valued case + const int DO_UNITARY_TF = qrf_require_extra_pass(RowsA, ColsA, mag); + int extra_pass = 0; + + // Initialize Qi and initialize/load Ri + qrf_in_row_assign : for(int r=0; r0; i--) { + if (i<=j-extra_pass) { + continue; + } else { + // Compute Givens values + qrf_givens(extra_pass, Ri[i-1][j], Ri[i][j], G[0][0], G[0][1], G[1][0], G[1][1], mag); + + if (!extra_pass) { + Ri[i-1][j] = x_real(mag); + } else { + Ri[i][j] = x_real(mag); + } + + qrf_r_update : for(int k=0; k + void qrf_alt(const InputType A[RowsA][ColsA], + OutputType Q[RowsA][RowsA], + OutputType R[RowsA][ColsA] ) { + + // Verify that template parameters are correct in simulation + if (RowsA < ColsA) { +#ifndef __SYNTHESIS__ + printf("ERROR: hls_qrf.h: Template parameter error - RowsA must be greater than ColsA; currently RowsA = %d ColsA = %d\n",RowsA,ColsA); + exit(1); +#endif + } + + // Declare the ROMs defining the processing sequence + static const qrf_alt_config CONFIG; + + // Internal array memories + // IMPLEMENTATION TIP: To further increase the throughput of the function partion the q_i and r_i arrays on the column + // dimension and unroll the update_r/q loops by the same amount. + OutputType q_i[RowsA][RowsA]; + OutputType r_i[RowsA][ColsA]; + + #pragma HLS ARRAY_PARTITION variable=q_i cyclic dim=2 factor=QRF_TRAITS::UNROLL_FACTOR + #pragma HLS ARRAY_PARTITION variable=r_i cyclic dim=2 factor=QRF_TRAITS::UNROLL_FACTOR + + hls::stream to_rot[3]; + #pragma HLS STREAM variable=to_rot depth=RowsA/2 + int seq_cnt = 0; + int extra_pass = 0; + int extra_pass2 = 0; + int use_mag = 0; + int px_row1, px_row2, px_col, rot_row1, rot_row2, rot_col; + OutputType G[2][2]; + OutputType mag = 0; + hls::stream rotations[5]; + #pragma HLS STREAM variable=rotations depth=RowsA/2 + OutputType G_delay[2][2]; + OutputType mag_delay; + + // Copy input data to local R memory and initialize Q + row_copy : for(int r=0; r::value && RowsA == ColsA && batch_num == CONFIG.NUM_BATCHES-1) { + extra_pass = 1; + } + qrf_givens(extra_pass, r_i[px_row1][px_col], r_i[px_row2][px_col], G[0][0], G[0][1], G[1][0], G[1][1], mag); + // Pass on rotation to next block to apply rotations + rotations[0].write(G[0][0]); + rotations[1].write(G[0][1]); + rotations[2].write(G[1][0]); + rotations[3].write(G[1][1]); + rotations[4].write(mag); + to_rot[0].write(px_row1); + to_rot[1].write(px_row2); + to_rot[2].write(px_col); + } + + rotate: for(int px_cnt = 0; px_cnt < CONFIG.BATCH_CNTS[batch_num]; px_cnt++) { + #pragma HLS LOOP_TRIPCOUNT min=1 max=RowsA/2 + G_delay[0][0] = rotations[0].read(); + G_delay[0][1] = rotations[1].read(); + G_delay[1][0] = rotations[2].read(); + G_delay[1][1] = rotations[3].read(); + mag_delay = rotations[4].read(); + rot_row1 = to_rot[0].read(); + rot_row2 = to_rot[1].read(); + rot_col = to_rot[2].read(); + + extra_pass2 = 0; + if ( is_cmplx::value && RowsA == ColsA && batch_num == CONFIG.NUM_BATCHES-1) { + extra_pass2 = 1; + } + + // Merge the loops to maximize throughput, otherwise HLS will execute them sequentially and + // share hardware. + #pragma HLS LOOP_MERGE force + update_r : for(int k=0; k + void qrf_top(const InputType A[RowsA][ColsA], + OutputType Q[RowsA][RowsA], + OutputType R[RowsA][ColsA]) { + switch(QRF_TRAITS::ARCH) { + case 0: + qrf_basic(A,Q,R); + break; + case 1: + qrf_alt(A,Q,R); + break; + default: + qrf_basic(A,Q,R); + break; + } + } + + // =================================================================================================================== + // QRF: Entry point function. + // o Template parameters: + // - TransposedQ : Selects whether Q is output in transposed form + // - RowsA : Number of rows in input matrix A + // - ColsA : Number of columns in input matrix A + // - InputType : Input data type + // - OutputType : Output data type + // o Arguments: + // - A : Input matrix + // - Q : Orthogonal output matrix + // - R : Upper triangular output matrix + template < + bool TransposedQ, + int RowsA, + int ColsA, + typename InputType, + typename OutputType> + void qrf(const InputType A[RowsA][ColsA], + OutputType Q[RowsA][RowsA], + OutputType R[RowsA][ColsA]) { + typedef qrf_traits DEFAULT_QRF_TRAITS; + qrf_top(A,Q,R); + } +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/hls_svd.h b/vitis/v2020_1/hls/linear_algebra/hls_svd.h new file mode 100755 index 00000000..aa5cca93 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/hls_svd.h @@ -0,0 +1,1300 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014-2015 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +// SVD functions +// ------------------ +// SVD : Entry point function +// SVD_TOP : Top level function that selects implementation architecture and internal types based on traits class +// SVD_BASIC : Default architecture +// SVD_PAIRS : Alternative architecture + +// Change Log +// ---------- +// 2015.3: +// * Changed default architecture to SVD_PAIRS +// * Added default diagonal and off-diagonal loop pipelining and unrolling factors set via configuration traits class +// * Added additional overloaded forms of vm2x1 to simplify controlling resource utilization for complex data types implementations +// +// 2015.1: +// * Linear Algebra Library update. +// * No changes +// +// 2014.1: +// * Initial release + +#ifndef HLS_SVD_H +#define HLS_SVD_H + +#include "ap_fixed.h" +#include +#include "hls/linear_algebra/utils/x_hls_matrix_utils.h" +#include "utils/x_hls_utils.h" + +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { + + // =================================================================================================================== + // Default traits struct + template< + int RowsA, + int ColsA, + typename InputType, + typename OutputType> + struct svd_traits { + typedef OutputType SIntType; + typedef OutputType UIntType; + typedef OutputType VIntType; + typedef OutputType CSIntType; + static const int NUM_SWEEPS = 10; // Literature typically suggestions 6 to 10 iterations to successfully converge + static const int MIN_DIM = ( RowsA < ColsA ? RowsA : ColsA ); + static const int ARCH = 1; // Select implementation. 0 = Basic loop engine. 1 = Pairs based engine + static const int OFF_DIAG_II = 8; // Specify the pipelining target for the off diagonal loop. Upto 4 memory accesses on single array in one iteration, use mulitple + static const int DIAG_II = 8; // Specify the pipelining target for the diagonal loop. >1 enables reuse of operators. + // IMPLEMENTATION TIP: Potential additional configuration parameters to fully unroll the "Pairs" based engine + // static const int UNROLL_FACTOR = (MIN_DIM + 1) / 2; // Specify off-diagonal loop unrolling factor + // static const int DIAG_UNROLL_FACTOR = (MIN_DIM + 1) / 2; // Specify diagonal loop unrolling factor + }; + + // =================================================================================================================== + // Helper functions + + // Compare 2 values relative magnitude + // - Replaces a test using EPS as a scaling factor: + // abs(b) <= (e*abs(a)) where e = hls::numeric_limits::epsilon()/2; + // - b is within/just outside the representable precision of a + template bool within_precision(T a, T b) { + fp_struct fs_a = a; + fp_struct fs_b = b; + if ( (fs_b.exp + fs_a.SIG_BITS+1) < fs_a.exp || fs_b.exp == 0 ) { + return false; + } else { + return true; + } + } + + // 2x1 vector dot product + // o Used throughout the code for non-vector operations to ease the application of resource sharing directives + // o When complex data type is used multiple version of this function will be created with a mix of complex and real + // argument types. + #ifdef HLS_SVD_SKIP_COMMON_VM2X1 + template< + typename AType, + typename BType, + typename CType> + void vm2x1( + AType a1, BType b1, + AType a2, BType b2, + CType &c) + { + c = a1*b1 + a2*b2; + } + #endif + + // Define additional overloaded forms of vm2x1 + // o Simplifies controlling resource utilization for complex data types implementations + // o Maps all forms of complex vm2x1 to a single complex only input + #ifndef HLS_SVD_SKIP_COMMON_VM2X1 + template< + typename AType, + typename BType, + typename CType> + void vm2x1_base( + AType a1, BType b1, + AType a2, BType b2, + CType &c) + { + // Disable the inlining of the base vm2x1 function and limit instances using the ALLOCATION directive + // #pragma HLS inline off + c = a1*b1 + a2*b2; + } + template + void vm2x1( + T a1, std::complex b1, + T a2, std::complex b2, + std::complex& c) + { + std::complex c_a1,c_a2; + c_a1 = a1; + c_a2 = a2; + vm2x1_base(c_a1,b1,c_a2,b2,c); + } + template + void vm2x1( + std::complex a1, T b1, + std::complex a2, T b2, + std::complex& c) + { + std::complex c_b1,c_b2; + c_b1 = b1; + c_b2 = b2; + vm2x1_base(a1,c_b1,a2,c_b2,c); + } + template + void vm2x1( + T a1, T b1, + T a2, T b2, + T& c) + { + vm2x1_base(a1,b1,a2,b2,c); + } + #endif + + // 2x2 matrix multiply + template< + typename AType, + typename BType, + typename CType> + void mm2x2( + AType a1, AType a2, AType a3, AType a4, + BType b1, BType b2, BType b3, BType b4, + CType &c1, CType &c2, CType &c3, CType &c4) + { + vm2x1(a1,b1,a2,b3,c1); + vm2x1(a1,b2,a2,b4,c2); + vm2x1(a3,b1,a4,b3,c3); + vm2x1(a3,b2,a4,b4,c4); + } + + // Calculate the sin and cos of the complex input's phase angle and phase angle divided by 2 + template< + typename InType, + typename CSType> + void calc_angle( + std::complex A, + CSType &cosThetaA, CSType &sinThetaA, + CSType &cosThetaAdiv2, CSType &sinThetaAdiv2, + bool &is_pos_real, bool &is_imag) + { + const InType inZERO = 0; + const CSType csZERO = 0; + const CSType csONE = 1; + // NOTE: Hard single precision floating point value + const float ONE_OVER_ROOT2 = 1.0f / sqrtf(2.0f); + + CSType tanThetaA, cosThetaA_int, sinThetaA_int, tanThetaAdiv2, cosThetaAdiv2_int; + + InType re = A.real(); + InType im = A.imag(); + + // Helpers to avoid testing the sin and cos outputs for particular characteristics. + is_pos_real = false; + is_imag = false; + + // Check for when effectively real only or imag only + if ( !within_precision(re,im) ) { + if ( x_isneg(re) ) { + // 180 degs (half is 90!) + cosThetaA = -csONE; + sinThetaA = csZERO; + cosThetaAdiv2 = csZERO; + sinThetaAdiv2 = csONE; + } else { + // 0 degs + cosThetaA = csONE; + sinThetaA = csZERO; + cosThetaAdiv2 = csONE; + sinThetaAdiv2 = csZERO; + is_pos_real = true; + } + } else if ( !within_precision(im,re) ) { + is_imag = true; + if ( x_isneg(im) ) { + // 270 deg + cosThetaA = csZERO; + sinThetaA = -csONE; + cosThetaAdiv2 = -ONE_OVER_ROOT2; + sinThetaAdiv2 = ONE_OVER_ROOT2; + } else { + // 90 deg + cosThetaA = csZERO; + sinThetaA = csONE; + cosThetaAdiv2 = ONE_OVER_ROOT2; + sinThetaAdiv2 = ONE_OVER_ROOT2; + } + } else { + // Basic + // Full angle values + tanThetaA = im/re; + cosThetaA_int = x_copysign(csONE,re) * x_rsqrt(csONE + tanThetaA * tanThetaA); + cosThetaA = cosThetaA_int; + sinThetaA_int = cosThetaA_int * tanThetaA; + sinThetaA = sinThetaA_int; + + // Half angle values + // o Select the correct expression to minimize error in tan(thetaA/2) + // - Avoid creating near eps values + if ( x_isneg(cosThetaA_int) ) { + tanThetaAdiv2 = (csONE - cosThetaA_int)/ sinThetaA_int; + } else { + tanThetaAdiv2 = sinThetaA_int / (csONE + cosThetaA_int); + } + cosThetaAdiv2_int = x_rsqrt(csONE + tanThetaAdiv2 * tanThetaAdiv2); + + cosThetaAdiv2 = cosThetaAdiv2_int; + sinThetaAdiv2 = cosThetaAdiv2_int * tanThetaAdiv2; + } + } + + // =================================================================================================================== + // Diagonal processing functions + + // Real 2x2 SVD function + template < + typename AInType, + typename CSType, + typename AOutType> + void svd2x2( + AInType w_in, AInType x_in, AInType y_in, AInType z_in, + CSType &uw_out, CSType &ux_out, CSType &uy_out, CSType &uz_out, + CSType &vw_out, CSType &vx_out, CSType &vy_out, CSType &vz_out, + AOutType &w_out, AOutType &x_out, AOutType &y_out, AOutType &z_out) + { + Function_svd2x2_real:; + // Inline to bring common lower level functions to this level of hierarchy to simplify the application + // of resource sharing directives. + #pragma HLS inline + + const AOutType outZERO = 0; + CSType s1, c1, s2, c2; + AInType u1, u2; + std::complex A, B; + CSType cosA_full, sinA_full, cosA_half, sinA_half; + CSType cosB_full, sinB_full, cosB_half, sinB_half; + bool A_is_pos_real, A_is_imag; + bool B_is_pos_real, B_is_imag; + CSType uw_int, ux_int, uy_int, uz_int; + CSType vw_int, vx_int, vy_int, vz_int; + AOutType w_out1, w_out2, z_out1, z_out2, + w_out_int, z_out_int; + + // Determine first half angle required to zero off-diagonal values + u1 = z_in - w_in; + u2 = y_in + x_in; + A.imag(u2); + A.real(u1); + calc_angle(A, cosA_full, sinA_full, cosA_half, sinA_half, A_is_pos_real, A_is_imag); + + // Determine second half angle + u1 = z_in + w_in; + u2 = y_in - x_in; + B.imag(u2); + B.real(u1); + calc_angle(B,cosB_full, sinB_full, cosB_half, sinB_half, B_is_pos_real, B_is_imag); + + // Combine half angles to produce left and right rotations + // IMPLEMENTATION TIP: There are common products in the following calculations. For parallel implementations these should be shared. + // Consider in-lining these function calls. + vm2x1(cosA_half,cosB_half,sinA_half,sinB_half,c1); + vm2x1(sinA_half,cosB_half,-cosA_half,sinB_half,s1); + vm2x1(cosA_half,cosB_half,-sinA_half,sinB_half,c2); + vm2x1(sinA_half,cosB_half,cosA_half,sinB_half,s2); + + // Build full U and V matrix + uw_int = c1; + ux_int = s1; + uy_int = -s1; + uz_int = c1; + + vw_int = c2; + vx_int = s2; + vy_int = -s2; + vz_int = c2; + + // Apply rotation + // - Uses the transpose version of U + // w_out + vm2x1(w_in,vw_int,x_in,vy_int,w_out1); + vm2x1(y_in,vw_int,z_in,vy_int,w_out2); + vm2x1(uw_int,w_out1,uy_int,w_out2,w_out_int); + // z_out + vm2x1(w_in,vx_int,x_in,vz_int,z_out1); + vm2x1(y_in,vx_int,z_in,vz_int,z_out2); + vm2x1(ux_int,z_out1,uz_int,z_out2,z_out_int); + x_out = outZERO; + y_out = outZERO; + + // Ensure singular values are positive + if (x_isneg(w_out_int)) { + w_out = -w_out_int; + vw_int = -c2; + vy_int = s2; + } else { + w_out = w_out_int; + } + if (x_isneg(z_out_int)) { + z_out = -z_out_int; + vx_int = -s2; + vz_int = -c2; + } else { + z_out = z_out_int; + } + + // Assign outputs + uw_out = uw_int; + ux_out = ux_int; + uy_out = uy_int; + uz_out = uz_int; + vw_out = vw_int; + vx_out = vx_int; + vy_out = vy_int; + vz_out = vz_int; + } + + // Complex 2x2 SVD function + // o Calculates several additional rotations to convert the w,x,y & z values to real only before calling the real 2x2 svd + // function + template < + typename AInType, + typename CSType, + typename AOutType> + void svd2x2( + std::complex w_in, std::complex x_in, std::complex y_in, std::complex z_in, + std::complex &uw_out, std::complex &ux_out, std::complex &uy_out, std::complex &uz_out, + std::complex &vw_out, std::complex &vx_out, std::complex &vy_out, std::complex &vz_out, + std::complex &w_out, std::complex &x_out, std::complex &y_out, std::complex &z_out) + { + Function_svd2x2_complex:; + // Inline to bring common lower level functions to this level of hierarchy to simplify the application + // of resource sharing directives. + #pragma HLS inline + + const std::complex CMPLX_ZERO = 0; + const AInType REAL_ZERO = 0; + const CSType csZERO = 0; + + AInType wMag, xMag, yMag, zMag; + CSType cosThetaW, sinThetaW, cosThetaWdiv2, sinThetaWdiv2, + cosThetaX, sinThetaX, cosThetaXdiv2, sinThetaXdiv2, + cosThetaY, sinThetaY, cosThetaYdiv2, sinThetaYdiv2, + cosThetaZ, sinThetaZ, cosThetaZdiv2, sinThetaZdiv2, + RotL1_w_re, RotL1_w_im, RotR1_w_re, RotR1_w_im, + Rot2_C, Rot2_S, Rot2_Cdiv2, Rot2_Sdiv2, + RotL2_w, RotL2_x, RotL2_y, RotL2_z, + RotL3_w_re, RotL3_w_im, RotR3_w_im, + RotL4_w, RotL4_x, RotL4_y, RotL4_z, + RotR4_w, RotR4_x, RotR4_y, RotR4_z; + + std::complex RotL1_w, RotL1_x, RotL1_y, RotL1_z, + RotR1_w, RotR1_x, RotR1_y, RotR1_z, + RotL12_w, RotL12_x, RotL12_y, RotL12_z, + RotL3_w, RotL3_x, RotL3_y, RotL3_z, + RotR3_w, RotR3_x, RotR3_y, RotR3_z, + Rot2_cmplx, + RotL123_w, RotL123_x, RotL123_y, RotL123_z, + RotR13_w, RotR13_x, RotR13_y, RotR13_z, + uw_int, ux_int, uy_int, uz_int; + + std::complex w_int, x_int, x_int1, y_int, z_int, z_int1; + AInType w_out_re, x_out_re, y_out_re, z_out_re, w_int_re; + + bool w_is_pos_real, w_is_imag, + x_is_pos_real, x_is_imag, + y_is_pos_real, y_is_imag, + z_is_pos_real, z_is_imag, + tmp_is_pos_real, tmp_is_imag; + + // Determine sin and cos values of W and Y phase angles, ThetaW and ThetaY + calc_angle(w_in, cosThetaW, sinThetaW, cosThetaWdiv2, sinThetaWdiv2, w_is_pos_real, w_is_imag); + calc_angle(y_in, cosThetaY, sinThetaY, cosThetaYdiv2, sinThetaYdiv2, y_is_pos_real, y_is_imag); + + // Rotation 1 + // o 2-sided Unitary Complex rotation to make W and Y real + // RotL1 = | exp(j*(ThetaY-ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaY-ThetaW)/2) | + // RotR1 = | exp(-j*(ThetaY+ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaY+ThetaW)/2) | + // o So + // exp(j*(ThetaY-ThetaW)/2) = cos((ThetaY-ThetaW)/2) + j sin((ThetaY-ThetaW)/2) + // = cos(ThetaY/2)cos(ThetaW/2) + sin(ThetaY/2)*sin(ThetaW/2) + j ( sin(ThetaY/2)cos(ThetaW/2) - cos(ThetaY/2)sin(ThetaW/2) ) + // exp(-j*(ThetaY+ThetaW)/2) = cos((ThetaY+ThetaW)/2) - j sin((ThetaY+ThetaW)/2) + // = cos(ThetaY/2)cos(ThetaW/2) - sin(ThetaY/2)*sin(ThetaW/2) - j ( sin(ThetaY/2)cos(ThetaW/2) + cos(ThetaY/2)sin(ThetaW/2) ) + vm2x1(cosThetaYdiv2,cosThetaWdiv2,sinThetaYdiv2,sinThetaWdiv2,RotL1_w_re); + vm2x1(sinThetaYdiv2,cosThetaWdiv2,-cosThetaYdiv2,sinThetaWdiv2,RotL1_w_im); + RotL1_w.real(RotL1_w_re); + RotL1_w.imag(RotL1_w_im); + RotL1_x = 0; // Unused + RotL1_y = 0; // Unused + RotL1_z = x_conj(RotL1_w); + + // IMPLEMENTATION TIP: The following calls duplicate the multiplies also implemented above. For parallel implementations + // these should be optimized/inlined. + vm2x1(cosThetaYdiv2,cosThetaWdiv2,-sinThetaYdiv2,sinThetaWdiv2,RotR1_w_re); + vm2x1(-sinThetaYdiv2,cosThetaWdiv2,-cosThetaYdiv2,sinThetaWdiv2,RotR1_w_im); + RotR1_w.real(RotR1_w_re); + RotR1_w.imag(RotR1_w_im); + RotR1_x = 0; // Unused + RotR1_y = 0; // Unused + RotR1_z = RotR1_w; + + // Rotation 2 + // o 1-sided real Givens rotation to zero Y + // o Use the magnitudes of W and Y and calculate the sin and the cos of the rotation required to zero Y + vm2x1(w_in.real(),cosThetaW,w_in.imag(),sinThetaW,wMag); + vm2x1(y_in.real(),cosThetaY,y_in.imag(),sinThetaY,yMag); + + Rot2_cmplx.real(wMag); + Rot2_cmplx.imag(yMag); + calc_angle(Rot2_cmplx, Rot2_C, Rot2_S, Rot2_Cdiv2, Rot2_Sdiv2, tmp_is_pos_real,tmp_is_imag); + RotL2_w = Rot2_C; + RotL2_x = Rot2_S; + RotL2_y = -Rot2_S; + RotL2_z = Rot2_C; + + // Combine left hand rotations 1 & 2 + // o Using the constant value CMPLX_ZERO to obtain some optimization when the implementation allows. + // o Note that rotation 2 contains real only values + mm2x2(RotL2_w, RotL2_x, RotL2_y, RotL2_z, RotL1_w, CMPLX_ZERO, CMPLX_ZERO, RotL1_z, RotL12_w, RotL12_x, RotL12_y, RotL12_z); + + // Update w,x,y & z values to reflect rotations + w_int.imag(0); + vm2x1(wMag, Rot2_C, yMag, Rot2_S, w_int_re); + w_int.real(w_int_re); + y_int = 0; + vm2x1(x_in, RotL12_w, z_in, RotL12_x, x_int1); + x_int = x_int1 * RotR1_z; + vm2x1(x_in, RotL12_y, z_in, RotL12_z, z_int1); + z_int = z_int1 * RotR1_z; + + // Determine sin and cos values of the updated X and Z phase angles, ThetaX and ThetaZ + calc_angle(x_int, cosThetaX, sinThetaX, cosThetaXdiv2, sinThetaXdiv2, x_is_pos_real, x_is_imag); + calc_angle(z_int, cosThetaZ, sinThetaZ, cosThetaZdiv2, sinThetaZdiv2, z_is_pos_real, z_is_imag); + + // Rotation 3 + // o 2 additional 2-sided complex rotations to turn the updated X and Z into real only values. + // o The 2 rotations are combined into a single 2-sided complex rotation. + // o The first rotation rotates W and X - Rotation 3a: + // RotL3a = | exp(-j*(ThetaX+ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaX+ThetaW)/2) | + // RotR3a = | exp(j*(ThetaX-ThetaW)/2) 0 | + // | 0 exp(-j*(ThetaX-ThetaW)/2) | + // - Note ThetaW already equals 0 so the above simplifies to only use ThetaX + // o The second rotation rotates X and Z - Rotation 3b: + // RotL3b = | exp(j*(ThetaZ-ThetaX)/2) 0 | + // | 0 exp(-j*(ThetaZ-ThetaX)/2) | + // RotR3b = | exp(-j*(ThetaZ+ThetaX)/2) 0 | + // | 0 exp(-j*(ThetaZ+ThetaX)/2) | + // - Note Following rotation 3a ThetaX equals 0 so this rotation simplifies to use only ThetaZ + // o Finally we can then combine these 2 rotations into single left and right unitary matrix giving the final rotation we'll use: + // RotL3 = | exp(j*(ThetaZ/2 - ThetaX)) 0 | + // | 0 exp(j*-(ThetaZ/2)) | + // RotR3 = | exp(j*(ThetaX - ThetaZ/2)) 0 | + // | 0 exp(j*-(ThetaZ/2)) | + // o So + // exp(j*(ThetaZ/2 - ThetaX)) = cos(ThetaZ/2 - ThetaX) + j sin(ThetaZ/2 - ThetaX) + // = cos(ThetaZ/2)cos(ThetaX) + sin(ThetaZ/2)*sin(ThetaX) + j ( sin(ThetaZ/2)cos(ThetaX) - cos(ThetaZ/2)sin(ThetaX) ) + // exp(j*-(ThetaZ/2)) = cos(ThetaZ/2) - j sin(ThetaZ/2) + // exp(j*(ThetaX - ThetaZ/2)) = cos(ThetaX - ThetaZ/2) + j sin(ThetaX - ThetaZ/2) + // = cos(ThetaX)cos(ThetaZ/2) + sin(ThetaX)*sin(ThetaZ/2) + j ( sin(ThetaX)cos(ThetaZ/2) - cos(ThetaX)sin(ThetaZ/2) ) + vm2x1(cosThetaZdiv2,cosThetaX,sinThetaZdiv2,sinThetaX,RotL3_w_re); + vm2x1(sinThetaZdiv2,cosThetaX,-cosThetaZdiv2,sinThetaX,RotL3_w_im); + RotL3_w.real(RotL3_w_re); + RotL3_w.imag(RotL3_w_im); + RotL3_x = 0; // Unused + RotL3_y = 0; // Unused + RotL3_z.real(cosThetaZdiv2); + RotL3_z.imag(-sinThetaZdiv2); + + RotR3_w.real( RotL3_w.real() ); + // IMPLEMENTATION TIP: Below duplicates the multiplies implemented above. For parallel implementations these should be inlined + vm2x1(cosThetaZdiv2,sinThetaX,-sinThetaZdiv2,cosThetaX,RotR3_w_im); + RotR3_w.imag(RotR3_w_im); + RotR3_x = 0; // Unused + RotR3_y = 0; // Unused + RotR3_z = RotL3_z; + + // Combine rotation 3 with 2 & 1 + mm2x2(RotL3_w, CMPLX_ZERO, CMPLX_ZERO, RotL3_z, RotL12_w, RotL12_x, RotL12_y, RotL12_z, RotL123_w, RotL123_x, RotL123_y, RotL123_z); + mm2x2(RotR1_w, CMPLX_ZERO, CMPLX_ZERO, RotR1_z, RotR3_w, CMPLX_ZERO, CMPLX_ZERO, RotR3_z, RotR13_w, RotR13_x, RotR13_y, RotR13_z); + + // Calculate the magnitudes of X and Z for use in real SVD calculation + vm2x1(x_int.real(),cosThetaX,x_int.imag(),sinThetaX,xMag); + vm2x1(z_int.real(),cosThetaZ,z_int.imag(),sinThetaZ,zMag); + + // Call real SVD function + svd2x2(w_int.real(), xMag, REAL_ZERO, zMag, RotL4_w, RotL4_x, RotL4_y, RotL4_z, RotR4_w, RotR4_x, RotR4_y, RotR4_z, w_out_re, x_out_re, y_out_re, z_out_re); + + // Generate and assign outputs + // o The combined U values (Left rotations) must be Hermitian Transposed. + // o Note the rotation values output by the SVD function are real only + w_out = w_out_re; + x_out = x_out_re; // Zero'ed by the SVD function + y_out = y_out_re; // Zero'ed by the SVD function + z_out = z_out_re; + + mm2x2(RotL4_w, RotL4_y, RotL4_x, RotL4_z, RotL123_w, RotL123_x, RotL123_y, RotL123_z, uw_int, ux_int, uy_int, uz_int); + uw_out = x_conj(uw_int); + ux_out = x_conj(uy_int); // Transposed + uy_out = x_conj(ux_int); // Transposed + uz_out = x_conj(uz_int); + + mm2x2(RotR13_w, RotR13_x, RotR13_y, RotR13_z, RotR4_w, RotR4_x, RotR4_y, RotR4_z, vw_out, vx_out, vy_out, vz_out); + + } + + // =================================================================================================================== + // SVD_BASIC: Top level function taking a SVDTraits template parameter to defines internal types + template< + int RowsA, + int ColsA, + class SVDTraits, + typename InputType, + typename OutputType> + void svd_basic( const InputType A[RowsA][ColsA], + OutputType S[RowsA][ColsA], + OutputType U[RowsA][RowsA], + OutputType V[ColsA][ColsA] ) + { + // Initially only supporting square matrix +#ifndef __SYNTHESIS__ + assert(RowsA==ColsA); +#endif + + // Internal memories for partial results + typename SVDTraits::SIntType s_in[RowsA][ColsA]; + typename SVDTraits::UIntType u_in[RowsA][ColsA]; + typename SVDTraits::VIntType v_in[RowsA][ColsA]; + + // Current S,U,V values being worked on + typename SVDTraits::SIntType w_in, x_in, y_in, z_in; + typename SVDTraits::SIntType w_out, x_out, y_out, z_out; + typename SVDTraits::UIntType uw_in, ux_in, uy_in, uz_in; + typename SVDTraits::UIntType uw_out, ux_out, uy_out, uz_out; + typename SVDTraits::VIntType vw_in, vx_in, vy_in, vz_in; + typename SVDTraits::VIntType vw_out, vx_out, vy_out, vz_out; + + // 2x2 Rotation values + typename SVDTraits::CSIntType uw_new, ux_new, uy_new, uz_new; + typename SVDTraits::CSIntType vw_new, vx_new, vy_new, vz_new; + + sweep_loop: for(int sweepnum = 0; sweepnum < SVDTraits::NUM_SWEEPS; sweepnum++) { + // NOTE: Using the minimum dimension. i.e. will process a square matrix + row_loop: for(int top_left = 0; top_left < SVDTraits::MIN_DIM; top_left++) { + col_loop: for(int bottom_right = top_left+1; bottom_right< SVDTraits::MIN_DIM; bottom_right++) { + // Fetch w,x,y,z values + if (sweepnum == 0 && top_left == 0) { + if (bottom_right == 1) { + w_in =A[top_left] [top_left]; + x_in =A[top_left] [bottom_right]; + y_in =A[bottom_right][top_left]; + } else { + // Now revist values already updated in first diagonal pass + w_in =s_in[top_left] [top_left]; + x_in =s_in[top_left] [bottom_right]; + y_in =s_in[bottom_right][top_left]; + } + z_in =A[bottom_right][bottom_right]; + } else { + w_in =s_in[top_left] [top_left]; + x_in =s_in[top_left] [bottom_right]; + y_in =s_in[bottom_right][top_left]; + z_in =s_in[bottom_right][bottom_right]; + } + + // Diagonal + svd2x2(w_in, x_in, y_in, z_in, uw_new, ux_new, uy_new, uz_new, vw_new, vx_new, vy_new, vz_new, w_out, x_out, y_out, z_out); + + // Update S on diagonal + s_in[top_left] [top_left] = w_out; + s_in[top_left] [bottom_right] = x_out; + s_in[bottom_right][top_left] = y_out; + s_in[bottom_right][bottom_right] = z_out; + if (sweepnum == SVDTraits::NUM_SWEEPS-1) { + S[top_left] [top_left] = w_out; + S[top_left] [bottom_right] = x_out; + S[bottom_right][top_left] = y_out; + S[bottom_right][bottom_right] = z_out; + } + + // Update U & V + // o On the diagonal use a 2x2 as per the sigma + // o Need to create the indentity in U & V at the start + if (sweepnum == 0 && top_left == 0) { + if (bottom_right==1) { + uw_in = 1; + vw_in = 1; + } else { + // Now re-visiting diagonal values where I has been set + uw_in = u_in[top_left][top_left]; + vw_in = v_in[top_left][top_left]; + } + + ux_in = 0; + uy_in = 0; + uz_in = 1; + + vx_in = 0; + vy_in = 0; + vz_in = 1; + } else { + uw_in = u_in[top_left] [top_left]; + ux_in = u_in[top_left] [bottom_right]; + uy_in = u_in[bottom_right][top_left]; + uz_in = u_in[bottom_right][bottom_right]; + vw_in = v_in[top_left] [top_left]; + vx_in = v_in[top_left] [bottom_right]; + vy_in = v_in[bottom_right][top_left]; + vz_in = v_in[bottom_right][bottom_right]; + } + + mm2x2(uw_in, ux_in, uy_in, uz_in, uw_new, ux_new, uy_new, uz_new, uw_out, ux_out, uy_out, uz_out); + mm2x2(vw_in, vx_in, vy_in, vz_in, vw_new, vx_new, vy_new, vz_new, vw_out, vx_out, vy_out, vz_out); + + u_in[top_left] [top_left] = uw_out; + u_in[top_left] [bottom_right] = ux_out; + u_in[bottom_right][top_left] = uy_out; + u_in[bottom_right][bottom_right] = uz_out; + v_in[top_left] [top_left] = vw_out; + v_in[top_left] [bottom_right] = vx_out; + v_in[bottom_right][top_left] = vy_out; + v_in[bottom_right][bottom_right] = vz_out; + if (sweepnum == SVDTraits::NUM_SWEEPS-1) { + U[top_left] [top_left] = uw_out; + U[top_left] [bottom_right] = ux_out; + U[bottom_right][top_left] = uy_out; + U[bottom_right][bottom_right] = uz_out; + V[top_left] [top_left] = vw_out; + V[top_left] [bottom_right] = vx_out; + V[bottom_right][top_left] = vy_out; + V[bottom_right][bottom_right] = vz_out; + } + + // Off-diagonal + // Col updates + off_col: for (int off_col = 0; off_col < SVDTraits::MIN_DIM; off_col++) { + #pragma HLS PIPELINE II = SVDTraits::OFF_DIAG_II + if (off_col != bottom_right && off_col != top_left) { + if (sweepnum == 0 && top_left == 0 && bottom_right == 1) { + w_in =A[top_left][off_col]; + } else { + w_in =s_in[top_left][off_col]; + } + if (sweepnum == 0 && top_left == 0 && off_col > bottom_right) { + y_in =A[bottom_right][off_col]; + } else { + y_in =s_in[bottom_right][off_col]; + } + + // U must be Hermitian transposed before it is applied to A + vm2x1(x_conj(uw_new),w_in,x_conj(uy_new),y_in,w_out); + vm2x1(x_conj(ux_new),w_in,x_conj(uz_new),y_in,y_out); + + //Store off-diagonal updates + s_in[top_left] [off_col] = w_out; + s_in[bottom_right][off_col] = y_out; + if (sweepnum == SVDTraits::NUM_SWEEPS-1) { + S[top_left] [off_col] = w_out; + S[bottom_right][off_col] = y_out; + } + } + } + // Row update + off_row: for (int off_row = 0; off_row < SVDTraits::MIN_DIM; off_row++) { + #pragma HLS PIPELINE II = SVDTraits::OFF_DIAG_II + if (off_row != bottom_right && off_row != top_left) { + if (sweepnum == 0 && top_left== 0 && bottom_right == 1) { + w_in =A[off_row][top_left]; + vw_in = 0; + uw_in = 0; + } else { + w_in = s_in[off_row][top_left]; + vw_in = v_in[off_row][top_left]; + uw_in = u_in[off_row][top_left]; + } + if (sweepnum == 0 && top_left == 0 && off_row > bottom_right) { + x_in = A[off_row][bottom_right]; + } else { + x_in = s_in[off_row][bottom_right]; + } + if (sweepnum == 0 && top_left == 0) { + vx_in = 0; + ux_in = 0; + } else { + vx_in = v_in[off_row][bottom_right]; + ux_in = u_in[off_row][bottom_right]; + } + + vm2x1(w_in,vw_new,x_in,vy_new,w_out); + vm2x1(w_in,vx_new,x_in,vz_new,x_out); + + vm2x1(vw_in,vw_new,vx_in,vy_new,vw_out); + vm2x1(vw_in,vx_new,vx_in,vz_new,vx_out); + + vm2x1(uw_in,uw_new,ux_in,uy_new,uw_out); + vm2x1(uw_in,ux_new,ux_in,uz_new,ux_out); + + //Store off-diagonal updates + s_in[off_row][top_left] = w_out; + s_in[off_row][bottom_right] = x_out; + v_in[off_row][top_left] = vw_out; + v_in[off_row][bottom_right] = vx_out; + u_in[off_row][top_left] = uw_out; + u_in[off_row][bottom_right] = ux_out; + if (sweepnum==SVDTraits::NUM_SWEEPS-1) { + S[off_row][top_left] = w_out; + S[off_row][bottom_right] = x_out; + V[off_row][top_left] = vw_out; + V[off_row][bottom_right] = vx_out; + U[off_row][top_left] = uw_out; + U[off_row][bottom_right] = ux_out; + } + } + } + } + } + } + + } + + // =================================================================================================================== + // SVD_PAIRS: Alternative architecture with improved parallelization/pipelining at the expense of higher resource + // requirements. + // - Processes the input matrix by pairs of columns. + // - IMPLEMENTATION TIP: If a fully unrolled implementation is required partion the function's input/output argument arrays on the column + // dimension. + template< + int RowsA, + int ColsA, + class SVDTraits, + typename InputType, + typename OutputType> + void svd_pairs( const InputType A[RowsA][ColsA], + OutputType S[RowsA][ColsA], + OutputType U[RowsA][RowsA], + OutputType V[ColsA][ColsA] ) + { + // Initially only supporting square matrix +#ifndef __SYNTHESIS__ + assert(RowsA==ColsA); +#endif + + const int ODD_DIM = (SVDTraits::MIN_DIM % 2 == 1 ? 1 : 0); + + // The number of diagonal/column processors used in one step. In a single step all rows/columns of the input array + // will be processed. + const int NUM_PROCESSORS = (SVDTraits::MIN_DIM + 1) / 2; + + // The number of steps required to process the whole input matrix for one sweep iteration. + const int NUM_STEPS = SVDTraits::MIN_DIM+ODD_DIM-1; + + // Defines the number of banks (or pages) of the internal memory. + // - The step_loop reads from one page and writes to the other, ping pongs between two pages for each iteration/step. + const int BANKS = 2; + + // Stores the current indexes being process by each columns/diagonal processor. The "pairs". + int diag1_i[BANKS][NUM_PROCESSORS]; + int diag2_i[BANKS][NUM_PROCESSORS]; + + int d1_i, d2_i, c1_i, c2_i; + bool col_swap = false; + + // Internal memories for partial results + typename SVDTraits::SIntType s_col1[NUM_PROCESSORS][BANKS][RowsA+ODD_DIM]; + typename SVDTraits::SIntType s_col2[NUM_PROCESSORS][BANKS][RowsA+ODD_DIM]; + typename SVDTraits::UIntType u_col1[NUM_PROCESSORS][BANKS][RowsA+ODD_DIM]; + typename SVDTraits::UIntType u_col2[NUM_PROCESSORS][BANKS][RowsA+ODD_DIM]; + typename SVDTraits::UIntType v_col1[NUM_PROCESSORS][BANKS][RowsA+ODD_DIM]; + typename SVDTraits::UIntType v_col2[NUM_PROCESSORS][BANKS][RowsA+ODD_DIM]; + + // Current S,U,V values being worked on, used in each column processor + typename SVDTraits::SIntType w_in, x_in, y_in, z_in; + typename SVDTraits::SIntType w_int1, x_int1, y_int1, z_int1; + typename SVDTraits::SIntType w_int2, x_int2, y_int2, z_int2; + typename SVDTraits::SIntType w_out, x_out, y_out, z_out; + typename SVDTraits::UIntType uw_in, ux_in, uy_in, uz_in; + typename SVDTraits::UIntType uw_out, ux_out, uy_out, uz_out; + typename SVDTraits::VIntType vw_in, vx_in, vy_in, vz_in; + typename SVDTraits::VIntType vw_out, vx_out, vy_out, vz_out; + + typename SVDTraits::SIntType w_out_sel, x_out_sel, y_out_sel, z_out_sel; + typename SVDTraits::UIntType uw_out_sel, ux_out_sel, uy_out_sel, uz_out_sel; + typename SVDTraits::VIntType vw_out_sel, vx_out_sel, vy_out_sel, vz_out_sel; + + // Diagonal processor results - 2x2 Rotation values (U &V) and S + typename SVDTraits::SIntType diag_w_out[NUM_PROCESSORS]; + typename SVDTraits::SIntType diag_x_out[NUM_PROCESSORS]; + typename SVDTraits::SIntType diag_y_out[NUM_PROCESSORS]; + typename SVDTraits::SIntType diag_z_out[NUM_PROCESSORS]; + typename SVDTraits::CSIntType uw_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType ux_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType uy_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType uz_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType vw_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType vx_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType vy_new[NUM_PROCESSORS]; + typename SVDTraits::CSIntType vz_new[NUM_PROCESSORS]; + // Local copies to avoid multiple reads + typename SVDTraits::CSIntType uw_new_px, ux_new_px, uy_new_px, uz_new_px; + typename SVDTraits::CSIntType vw_new_px, vx_new_px, vy_new_px, vz_new_px; + + // IMPLEMENTATION TIP: Additional directives for fully unrolling + // #pragma HLS ARRAY_PARTITION variable=diag1_i cyclic dim=2 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=diag2_i cyclic dim=2 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=s_col1 cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=s_col2 cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=u_col1 cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=u_col2 cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=v_col1 cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=v_col2 cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=diag_w_out cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=diag_x_out cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=diag_y_out cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=diag_z_out cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=uw_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=ux_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=uy_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=uz_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=vw_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=vx_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=vy_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + // #pragma HLS ARRAY_PARTITION variable=vz_new cyclic dim=1 factor=SVDTraits::UNROLL_FACTOR + + // Load column memories + // - Up-front transfer but can be pipeled/data flow + col_load: for(int col=0;col < NUM_PROCESSORS;col++){ + diag1_i[0][col] = 2*col; + diag2_i[0][col] = 2*col+1; + row_load: for(int row=0;row < RowsA+ODD_DIM; row++) { + #pragma HLS PIPELINE + if (ODD_DIM) { + // When odd dimensions the first column of the first processor is padded with 0's + if (row==0) { + s_col1[col][0][row] = 0; + s_col2[col][0][row] = 0; + } else { + if ( col == 0 ) { + s_col1[col][0][row] = 0; + } else { + s_col1[col][0][row] = A[row-1][2*col-1]; + } + s_col2[col][0][row] = A[row-1][2*col]; + } + } else { + s_col1[col][0][row] = A[row][2*col]; + s_col2[col][0][row] = A[row][2*col+1]; + } + } + } + + sweep_loop: for(int sweepnum = 0; sweepnum < SVDTraits::NUM_SWEEPS; sweepnum++) { + step_loop: for(int step = 0; step < NUM_STEPS; step++) { + const int INPUT_BANK = ((sweepnum*NUM_STEPS)+step) % BANKS; + const int OUTPUT_BANK = ((sweepnum*NUM_STEPS)+step+1) % BANKS; + + // Indepent loop to remove any dependency on the processor loops + diag_index_update: for(int px = 0; px < NUM_PROCESSORS; px++) { + // #pragma HLS UNROLL FACTOR = SVDTraits::UNROLL_FACTOR + if (px==0) { + diag1_i[OUTPUT_BANK][px] = diag1_i[INPUT_BANK][px]; // Unchanged + diag1_i[OUTPUT_BANK][px+1] = diag2_i[INPUT_BANK][px]; + } else if (px==NUM_PROCESSORS-1) { + diag2_i[OUTPUT_BANK][px] = diag1_i[INPUT_BANK][px]; + diag2_i[OUTPUT_BANK][px-1] = diag2_i[INPUT_BANK][px]; + } else { + diag1_i[OUTPUT_BANK][px+1] = diag1_i[INPUT_BANK][px]; + diag2_i[OUTPUT_BANK][px-1] = diag2_i[INPUT_BANK][px]; + } + } + + // Diagonal processor loop + // - In a separeate loop as we need the rotations from each diagonal processor before updating the + // off diagonal values + diag_px: for(int px = 0; px < NUM_PROCESSORS; px++) { + // IMPLEMENTATION TIP: Additional directives for fully unrolling + // #pragma HLS UNROLL FACTOR = SVDTraits::DIAG_UNROLL_FACTOR + #pragma HLS PIPELINE II = SVDTraits::DIAG_II + if (diag1_i[INPUT_BANK][px] < diag2_i[INPUT_BANK][px]) { + d1_i = diag1_i[INPUT_BANK][px]; + d2_i = diag2_i[INPUT_BANK][px]; + col_swap = false; + } else { + d2_i = diag1_i[INPUT_BANK][px]; + d1_i = diag2_i[INPUT_BANK][px]; + col_swap = true; + } + // Fetch diagonal inputs; w, x, y, z + if ( !col_swap ) { + w_in = s_col1[px][INPUT_BANK][d1_i]; + x_in = s_col2[px][INPUT_BANK][d1_i]; + y_in = s_col1[px][INPUT_BANK][d2_i]; + z_in = s_col2[px][INPUT_BANK][d2_i]; + } else { + w_in = s_col2[px][INPUT_BANK][d1_i]; + x_in = s_col1[px][INPUT_BANK][d1_i]; + y_in = s_col2[px][INPUT_BANK][d2_i]; + z_in = s_col1[px][INPUT_BANK][d2_i]; + } + // Diagonal processor + if ( ODD_DIM && px == 0 ) { + // Column 0 is padded with zeros. w and y for this diagonal group will be 0 so pass through + diag_w_out[px] = w_in; + diag_x_out[px] = x_in; + diag_y_out[px] = y_in; + diag_z_out[px] = z_in; + uw_new[px] = 1; + ux_new[px] = 0; + uy_new[px] = 0; + uz_new[px] = 1; + vw_new[px] = 1; + vx_new[px] = 0; + vy_new[px] = 0; + vz_new[px] = 1; + } else { + svd2x2(w_in, x_in, y_in, z_in, + uw_new[px], ux_new[px], uy_new[px], uz_new[px], + vw_new[px], vx_new[px], vy_new[px], vz_new[px], + diag_w_out[px], diag_x_out[px], diag_y_out[px], diag_z_out[px]); + } + } + + // Off-diagonal processors + off_diag_px: for(int px = 0; px < NUM_PROCESSORS; px++) { + // IMPLEMENTATION TIP: Additional directives for fully unrolling + // #pragma HLS UNROLL FACTOR = SVDTraits::UNROLL_FACTOR + if (diag1_i[INPUT_BANK][px] < diag2_i[INPUT_BANK][px]) { + c1_i = diag1_i[INPUT_BANK][px]; + c2_i = diag2_i[INPUT_BANK][px]; + col_swap = false; + } else { + c2_i = diag1_i[INPUT_BANK][px]; + c1_i = diag2_i[INPUT_BANK][px]; + col_swap = true; + } + // Fetch new U rotations for this column to avoid multiple access to the uX_new arrays + uw_new_px = uw_new[px]; + ux_new_px = ux_new[px]; + uy_new_px = uy_new[px]; + uz_new_px = uz_new[px]; + off_diag_loop: for(int off_px = 0; off_px < NUM_PROCESSORS; off_px++) { + #pragma HLS PIPELINE II = SVDTraits::OFF_DIAG_II + // Inline mm2x2 function to enable resource sharing + #pragma HLS INLINE recursive + // Additional pragmas sometime required when HLS is unable to identifiy that there are no inter loop dependencies. + // o HLS can identify false dependencies on the column memories between loops. All the outputs in the + // loop are written to a different memory "bank"/region using the INPUT_BANK and OUTPUT_BANK indices + // #pragma HLS dependence variable=s_col1 inter false + // #pragma HLS dependence variable=s_col2 inter false + // #pragma HLS dependence variable=u_col1 inter false + // #pragma HLS dependence variable=u_col2 inter false + // #pragma HLS dependence variable=v_col1 inter false + // #pragma HLS dependence variable=v_col2 inter false + + // Determine index to use + if (diag1_i[INPUT_BANK][off_px] < diag2_i[INPUT_BANK][off_px]) { + d1_i = diag1_i[INPUT_BANK][off_px]; + d2_i = diag2_i[INPUT_BANK][off_px]; + } else { + d2_i = diag1_i[INPUT_BANK][off_px]; + d1_i = diag2_i[INPUT_BANK][off_px]; + } + // Fetch stored U and V values + if (sweepnum == 0 && step == 0) { + // First sweep construct identity + if (px == off_px) { + uw_in = 1; + ux_in = 0; + uy_in = 0; + uz_in = 1; + vw_in = 1; + vx_in = 0; + vy_in = 0; + vz_in = 1; + } else { + uw_in = 0; + ux_in = 0; + uy_in = 0; + uz_in = 0; + vw_in = 0; + vx_in = 0; + vy_in = 0; + vz_in = 0; + } + } else { + // Using the diagonal indexes of the other column processors + if ( !col_swap ) { + uw_in = u_col1[px][INPUT_BANK][d1_i]; + ux_in = u_col2[px][INPUT_BANK][d1_i]; + uy_in = u_col1[px][INPUT_BANK][d2_i]; + uz_in = u_col2[px][INPUT_BANK][d2_i]; + vw_in = v_col1[px][INPUT_BANK][d1_i]; + vx_in = v_col2[px][INPUT_BANK][d1_i]; + vy_in = v_col1[px][INPUT_BANK][d2_i]; + vz_in = v_col2[px][INPUT_BANK][d2_i]; + } else { + uw_in = u_col2[px][INPUT_BANK][d1_i]; + ux_in = u_col1[px][INPUT_BANK][d1_i]; + uy_in = u_col2[px][INPUT_BANK][d2_i]; + uz_in = u_col1[px][INPUT_BANK][d2_i]; + vw_in = v_col2[px][INPUT_BANK][d1_i]; + vx_in = v_col1[px][INPUT_BANK][d1_i]; + vy_in = v_col2[px][INPUT_BANK][d2_i]; + vz_in = v_col1[px][INPUT_BANK][d2_i]; + } + } + // Fetch S values when not overlapping with this columns diagonal + if ( off_px != px ) { + if ( !col_swap ) { + w_in = s_col1[px][INPUT_BANK][d1_i]; + x_in = s_col2[px][INPUT_BANK][d1_i]; + y_in = s_col1[px][INPUT_BANK][d2_i]; + z_in = s_col2[px][INPUT_BANK][d2_i]; + } else { + w_in = s_col2[px][INPUT_BANK][d1_i]; + x_in = s_col1[px][INPUT_BANK][d1_i]; + y_in = s_col2[px][INPUT_BANK][d2_i]; + z_in = s_col1[px][INPUT_BANK][d2_i]; + } + } else { + // Otherwise use values output by diagonal processor + w_in = diag_w_out[px]; + x_in = diag_x_out[px]; + y_in = diag_y_out[px]; + z_in = diag_z_out[px]; + } + + // Update S values + if ( off_px < px ) { + // S values must be pre-multiplied with earlier columns new U rotation values before + // the V rotations due to this columns processor are applied + + // U must be Hermitian transposed before it is applied to S + mm2x2(x_conj(uw_new[off_px]), x_conj(uy_new[off_px]), x_conj(ux_new[off_px]), x_conj(uz_new[off_px]), + w_in, x_in, y_in, z_in, + w_int1, x_int1, y_int1, z_int1); + } else { + w_int1 = w_in; + x_int1 = x_in; + y_int1 = y_in; + z_int1 = z_in; + } + + if ( off_px != px ) { + // Non-diagonal S values must be post-multiplied with V rotations + mm2x2(w_int1, x_int1, y_int1, z_int1, + vw_new[px], vx_new[px], vy_new[px], vz_new[px], + w_int2, x_int2, y_int2, z_int2); + } else { + w_int2 = w_int1; + x_int2 = x_int1; + y_int2 = y_int1; + z_int2 = z_int1; + } + + if ( off_px > px ) { + // S values must be post-multiplied with subsequent columns new U rotation values after + // the V rotations due to this columns processor are applied + + // U must be Hermitian transposed before it is applied to S + mm2x2(x_conj(uw_new[off_px]), x_conj(uy_new[off_px]), x_conj(ux_new[off_px]), x_conj(uz_new[off_px]), + w_int2, x_int2, y_int2, z_int2, + w_out, x_out, y_out, z_out); + } else { + w_out = w_int2; + x_out = x_int2; + y_out = y_int2; + z_out = z_int2; + } + + // Update U and V values + mm2x2(uw_in, ux_in, uy_in, uz_in, + uw_new_px, ux_new_px, uy_new_px, uz_new_px, + uw_out, ux_out, uy_out, uz_out); + mm2x2(vw_in, vx_in, vy_in, vz_in, + vw_new[px], vx_new[px], vy_new[px], vz_new[px], + vw_out, vx_out, vy_out, vz_out); + + // If the current indices for this column have required the column sources to be swapped we need to do the + // same on the output + if ( !col_swap ) { + w_out_sel = w_out; + x_out_sel = x_out; + y_out_sel = y_out; + z_out_sel = z_out; + + uw_out_sel = uw_out; + ux_out_sel = ux_out; + uy_out_sel = uy_out; + uz_out_sel = uz_out; + + vw_out_sel = vw_out; + vx_out_sel = vx_out; + vy_out_sel = vy_out; + vz_out_sel = vz_out; + } else { + w_out_sel = x_out; + x_out_sel = w_out; + y_out_sel = z_out; + z_out_sel = y_out; + + uw_out_sel = ux_out; + ux_out_sel = uw_out; + uy_out_sel = uz_out; + uz_out_sel = uy_out; + + vw_out_sel = vx_out; + vx_out_sel = vw_out; + vy_out_sel = vz_out; + vz_out_sel = vy_out; + } + + // Store updated values in the correct column memory + if (px==0) { + s_col1[px] [OUTPUT_BANK][d1_i] = w_out_sel; + s_col1[px+1][OUTPUT_BANK][d1_i] = x_out_sel; + s_col1[px] [OUTPUT_BANK][d2_i] = y_out_sel; + s_col1[px+1][OUTPUT_BANK][d2_i] = z_out_sel; + + u_col1[px] [OUTPUT_BANK][d1_i] = uw_out_sel; + u_col1[px+1][OUTPUT_BANK][d1_i] = ux_out_sel; + u_col1[px] [OUTPUT_BANK][d2_i] = uy_out_sel; + u_col1[px+1][OUTPUT_BANK][d2_i] = uz_out_sel; + + v_col1[px] [OUTPUT_BANK][d1_i] = vw_out_sel; + v_col1[px+1][OUTPUT_BANK][d1_i] = vx_out_sel; + v_col1[px] [OUTPUT_BANK][d2_i] = vy_out_sel; + v_col1[px+1][OUTPUT_BANK][d2_i] = vz_out_sel; + } else if (px==NUM_PROCESSORS-1) { + s_col2[px] [OUTPUT_BANK][d1_i] = w_out_sel; + s_col2[px-1][OUTPUT_BANK][d1_i] = x_out_sel; + s_col2[px] [OUTPUT_BANK][d2_i] = y_out_sel; + s_col2[px-1][OUTPUT_BANK][d2_i] = z_out_sel; + + u_col2[px] [OUTPUT_BANK][d1_i] = uw_out_sel; + u_col2[px-1][OUTPUT_BANK][d1_i] = ux_out_sel; + u_col2[px] [OUTPUT_BANK][d2_i] = uy_out_sel; + u_col2[px-1][OUTPUT_BANK][d2_i] = uz_out_sel; + + v_col2[px] [OUTPUT_BANK][d1_i] = vw_out_sel; + v_col2[px-1][OUTPUT_BANK][d1_i] = vx_out_sel; + v_col2[px] [OUTPUT_BANK][d2_i] = vy_out_sel; + v_col2[px-1][OUTPUT_BANK][d2_i] = vz_out_sel; + } else { + s_col1[px+1][OUTPUT_BANK][d1_i] = w_out_sel; + s_col2[px-1][OUTPUT_BANK][d1_i] = x_out_sel; + s_col1[px+1][OUTPUT_BANK][d2_i] = y_out_sel; + s_col2[px-1][OUTPUT_BANK][d2_i] = z_out_sel; + + u_col1[px+1][OUTPUT_BANK][d1_i] = uw_out_sel; + u_col2[px-1][OUTPUT_BANK][d1_i] = ux_out_sel; + u_col1[px+1][OUTPUT_BANK][d2_i] = uy_out_sel; + u_col2[px-1][OUTPUT_BANK][d2_i] = uz_out_sel; + + v_col1[px+1][OUTPUT_BANK][d1_i] = vw_out_sel; + v_col2[px-1][OUTPUT_BANK][d1_i] = vx_out_sel; + v_col1[px+1][OUTPUT_BANK][d2_i] = vy_out_sel; + v_col2[px-1][OUTPUT_BANK][d2_i] = vz_out_sel; + } + } + } + } + } + // Transfer results + col_store: for(int col=0;col < NUM_PROCESSORS;col++){ + row_store: for(int row=0;row < RowsA; row++) { + #pragma HLS PIPELINE + if (ODD_DIM) { + if ( col != 0 ) { + S[row][2*col-1] = s_col1[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row+1]; + U[row][2*col-1] = u_col1[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row+1]; + V[row][2*col-1] = v_col1[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row+1]; + } + S[row][2*col] = s_col2[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row+1]; + U[row][2*col] = u_col2[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row+1]; + V[row][2*col] = v_col2[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row+1]; + } else { + S[row][2*col] = s_col1[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row]; + S[row][2*col+1] = s_col2[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row]; + U[row][2*col] = u_col1[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row]; + U[row][2*col+1] = u_col2[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row]; + V[row][2*col] = v_col1[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row]; + V[row][2*col+1] = v_col2[col][(SVDTraits::NUM_SWEEPS*(NUM_STEPS)) % BANKS][row]; + } + } + } + } + + // =================================================================================================================== + // SVD_TOP: Top level function that selects implementation architecture and internal types based on the + // traits class provided via the SVDTraits template parameter. + // o Call this function directly if you wish to override the default architecture choice or internal types + template< + int RowsA, + int ColsA, + class SVDTraits, + typename InputType, + typename OutputType> + void svd_top( const InputType A[RowsA][ColsA], + OutputType S[RowsA][ColsA], + OutputType U[RowsA][RowsA], + OutputType V[ColsA][ColsA] ) { + switch(SVDTraits::ARCH) { + case 0: + svd_basic(A,S,U,V); + break; + case 1: + svd_pairs(A,S,U,V); + break; + default: + svd_basic(A,S,U,V); + break; + } + } + + // =================================================================================================================== + // SVD: Entry point function + // Template parameters: + // - RowsA : Row dimension + // - ColsA : Column dimension + // - InputType : Input data type + // - OutputType : Output data type + // Arguments: + // - A : Input matrix + // - S : Singular values of input matrix + // - U : Left singular vectors of input matrix + // - V : Right singular vectors of input matrix + template< + int RowsA, + int ColsA, + typename InputType, + typename OutputType> + void svd( const InputType A[RowsA][ColsA], + OutputType S[RowsA][ColsA], + OutputType U[RowsA][RowsA], + OutputType V[ColsA][ColsA] ) { + typedef svd_traits DEFAULT_SVD_TRAITS; + svd_top(A,S,U,V); + } +} +#endif + + diff --git a/vitis/v2020_1/hls/linear_algebra/utils/std_complex_utils.h b/vitis/v2020_1/hls/linear_algebra/utils/std_complex_utils.h new file mode 100755 index 00000000..3c78d839 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/utils/std_complex_utils.h @@ -0,0 +1,194 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef STD_HLS_COMPLEX_UTILS_H +#define STD_HLS_COMPLEX_UTILS_H + +#include +#include "ap_fixed.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_traits.h" +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { +/* +******************************************************************************* +* Vivado HLS complex data type +* ---------------------------- +* +* std::complex +* x_traits for std::complex +* set_to_one +* +******************************************************************************* +*/ + + + template + struct x_traits,std::complex > { + typedef std::complex ADD_T; + typedef std::complex SAT_T; + typedef std::complex MULT_T; + typedef std::complex MADD_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + +#define X_COMPLEX_MAX(a, b) ((a) > (b) ? (a) : (b)) + + template + struct x_traits >,std::complex > > { + typedef std::complex > ADD_T; + typedef std::complex > SAT_T; + typedef std::complex > MULT_T; + typedef std::complex > MADD_T; + typedef std::complex > CONJ_SQ_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + + template + struct x_traits >,std::complex > > { + typedef std::complex > ADD_T; + typedef std::complex > SAT_T; + typedef std::complex > MULT_T; + typedef std::complex > MADD_T; + typedef std::complex > CONJ_SQ_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + +#undef X_COMPLEX_MAX + + template + struct x_traits_d ,DIM> { + typedef std::complex ACCUM_T; + typedef std::complex ACCUM2_T; + typedef std::complex > ADD_TREE_T; + }; + + template + struct x_traits_d >,DIM> { + typedef std::complex::Value,I+BitWidth::Value> > ACCUM_T; + typedef std::complex::Value,(2*I)+BitWidth::Value> > ACCUM2_T; + }; + + template T x_neg(T &din) { + return -din; + } + + static float x_neg(float din) { + float dout = 0; + if(din > 0) + dout = -din; + else + dout = din; + return dout; + } + + static double x_neg(double din) { + double dout = 0; + if(din > 0) + dout = -din; + else + dout = din; + return dout; + } + + template std::complex x_neg(std::complex &din) { + std::complex tmp; + tmp.real(-din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + + template typename x_traits::MULT_T x_conj_sq(T &din) { + x_conj_sq:; + return (din * din); + } + + template typename x_traits::MADD_T x_conj_sq(std::complex &din) { + x_conj_sq_complex:; + return ( (din.real()*din.real()) + (din.imag()*din.imag())); + } + + template T x_conj(T &din) { + x_conj_real:; + return din; + } + + template std::complex x_conj(const std::complex &din) { + x_conj_complex:; + std::complex tmp; + tmp.real(din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + // This function is called when a non-const std::complex is conjugated. It calls the + // version of x_conj() which takes a constant parameter + template std::complex x_conj(std::complex &din) { + const std::complex tmp = din; + return(x_conj(tmp)); + } + + template void set_to_one(std::complex > &a) { + ap_int tmp_sat = ((ap_int)1<<(W-I)) - 1; + ap_fixed tmp; + tmp.range() = tmp_sat; + a = tmp; + } + + // Functions to extract real and imaginary components + template T x_real(const T &din) { + return din; + } + template T x_real(const std::complex &din) { + return(din.real()); + } + template T x_imag(const T &din) { + T tmp = 0; + return tmp; + } + template T x_imag(const std::complex &din) { + return(din.imag()); + } + +} // end namespace hls + +#endif + + + + diff --git a/vitis/v2020_1/hls/linear_algebra/utils/x_hls_complex.h b/vitis/v2020_1/hls/linear_algebra/utils/x_hls_complex.h new file mode 100755 index 00000000..8054560c --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/utils/x_hls_complex.h @@ -0,0 +1,359 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_COMPLEX_H +#define X_HLS_COMPLEX_H + +#include "ap_fixed.h" +#include "utils/x_hls_defines.h" +#include "utils/std_complex_utils.h" +#include "utils/x_hls_traits.h" +#ifndef __SYNTHESIS__ +#include +#endif + +#pragma message("hls::x_complex library will be replaced in 2019.2 with a new implementation that does not provide automatic bit width expansion. Please avoid relying on this feature.") +namespace hls { + +/* +******************************************************************************* +* Vivado HLS complex data type +* ---------------------------- +* +* x_complex +* x_traits for x_complex +* set_to_one +* +******************************************************************************* +*/ + + +/* +******************************************************************************* +* Complex class +* +* This is used over std:: for the following reasons. +* 1. auto initializes all variables which forces an auto-initialization +* loop to be inserted for every declaration of an array of complex data +* 2. Using std:: as base class leads to compilation errors. +******************************************************************************* +*/ + + template class x_complex { + + private: + T re, im; + + public: + // Multiply return type + // o Only supports lhs and rhs of the same type + typedef x_complex< typename x_traits::MADD_T > MULT_RT; + + // Constructors + x_complex() {}; + x_complex(const T& r, const T& i) { re = r; im = i; }; + x_complex(const T& r) { re = r; im = 0; }; + + // Data access + inline T real() const { return(re); }; + inline T& real() { return(re); }; + inline void real(const T& r) { re = r; }; + inline T imag() const { return(im); }; + inline T& imag() { return(im); }; + inline void imag(const T& i) { im = i; }; + + // Operator = + inline x_complex& operator= (const T& rhs) { + re = rhs; im = 0; return *this; }; + template + inline x_complex& operator= (const x_complex& rhs) { + re = rhs.real(); im = rhs.imag(); return *this; }; + + // Operator *=, * + template + inline x_complex& operator*= (const T2& rhs) { + re *= rhs; im *= rhs; return *this; }; + template + inline x_complex& operator*= (const x_complex& rhs) { + T tmp1 = re*rhs.real(); + T tmp2 = im*rhs.imag(); + T tmp3 = re*rhs.imag(); + T tmp4 = im*rhs.real(); + re = tmp1 - tmp2; + im = tmp3 + tmp4; + return *this; }; + inline MULT_RT operator* (const x_complex& rhs) { + x_complex_mult_complex:; + typename x_traits::MULT_T m1, m2, m3, m4; + typename x_traits::MADD_T sum_re, sum_im; + MULT_RT res; + m1 = re*rhs.real(); + m2 = im*rhs.imag(); + m3 = re*rhs.imag(); + m4 = im*rhs.real(); + sum_re = m1 - m2; + sum_im = m3 + m4; + res.real(sum_re); + res.imag(sum_im); + return res; + }; + inline MULT_RT operator* (const T& rhs) { + x_complex_mult_real:; + typename x_traits::MULT_T m1, m2; + typename x_traits::MADD_T sum_re, sum_im; + MULT_RT res; + m1 = re*rhs; + m2 = im*rhs; + sum_re = m1; + sum_im = m2; + res.real(sum_re); + res.imag(sum_im); + return res; + }; + + // Operator /=, / + inline x_complex& operator/= (const T& rhs) {; + re /= rhs; im /= rhs; return *this; }; + inline x_complex operator/ (const T& rhs) { + x_complex tmp(*this); tmp /= rhs; return tmp; }; + inline x_complex& operator/= (const x_complex& rhs) { + // Complex division: + // Get conjugate of rhs + // a = *this x conjugate + // b = rhs x conjugate + // re = a.re / b.re + // im = a.im / b.re + x_complex conj = x_conj(rhs); + x_complex a = (*this)*conj; + x_complex b = conj*rhs; + re = a.real() / b.real(); + im = a.imag() / b.real(); + return *this; + }; + inline x_complex operator/ (const x_complex& rhs) { + x_complex tmp(*this); + tmp /= rhs; + return tmp; + }; + + // Operator +=, + + inline x_complex& operator+= (const T& rhs) { + re += rhs; return *this; }; + inline x_complex operator+= (const x_complex& rhs) { + re += rhs.real(); im += rhs.imag(); return *this; }; + template + inline x_complex operator+= (const x_complex& rhs) { + re += rhs.real(); im += rhs.imag(); return *this; }; + inline typename x_traits,x_complex >::ADD_T operator+ (const T& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + inline typename x_traits,x_complex >::ADD_T operator+ (const x_complex& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + + + // Operator -=, - + inline x_complex& operator-= (const T& rhs) { + re -= rhs; return *this; } + inline x_complex& operator-= (const x_complex& rhs) { + re -= rhs.real(); im -= rhs.imag(); return *this; }; + template + inline x_complex& operator-= (const x_complex& rhs) { + re -= rhs.real(); im -= rhs.imag(); return *this; }; + inline typename x_traits,x_complex >::ADD_T operator- (const T& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + inline typename x_traits,x_complex >::ADD_T operator- (const x_complex& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + inline x_complex operator- () { + x_complex tmp(*this); + tmp.real(-real()); + tmp.imag(-imag()); + return tmp; + }; + +#ifndef __SYNTHESIS__ + // Operator << + friend std::ostream &operator<<(std::ostream &out, const x_complex &c) { + bool neg_imag = c.imag() <= -0 ? true : false; + T imag = neg_imag ? (T)-c.imag() : (T)c.imag(); + + out << c.real() << (neg_imag ? " - j*":" + j*") << imag; + return out; + } +#endif + + }; // x_complex + + // Non-member Operator ==, != for x_complex + template + inline bool operator== (const T& lhs, const x_complex& rhs) { + return (lhs == rhs.real()) && (0 == rhs.imag()); + } + template + inline bool operator== (const x_complex& lhs, const T& rhs) { + return (lhs.real() == rhs) && (lhs.imag() == 0); + } + template + inline bool operator== (const x_complex& lhs, const x_complex& rhs) { + return (lhs.real() == rhs.real()) && (lhs.imag() == rhs.imag()); + } + + template + inline bool operator!= (const T& lhs, const x_complex& rhs) { + return (lhs != rhs.real()) || (0 != rhs.imag()); + } + template + inline bool operator!= (const x_complex& lhs, const T& rhs) { + return (lhs.real() != rhs) || (lhs.imag() != 0); + } + template + inline bool operator!= (const x_complex& lhs, const x_complex& rhs) { + return (lhs.real() != rhs.real()) || (lhs.imag() != rhs.imag()); + } + + template typename x_complex::MULT_RT operator* (const T1& lhs, x_complex& rhs) { + return (rhs*lhs); // Flip direction and re-use complex class defined operator + } + + template + struct x_traits,x_complex > { + typedef x_complex ADD_T; + typedef x_complex SAT_T; + typedef x_complex MULT_T; + typedef x_complex MADD_T; + typedef x_complex INT_T; + typedef x_complex > FLOAT_STRUCT_T; + }; + +#define X_COMPLEX_MAX(a, b) ((a) > (b) ? (a) : (b)) + + template + struct x_traits >,x_complex > > { + typedef x_complex > ADD_T; + typedef x_complex > SAT_T; + typedef x_complex > MULT_T; + typedef x_complex > MADD_T; + typedef x_complex > CONJ_SQ_T; + typedef x_complex INT_T; + typedef x_complex > FLOAT_STRUCT_T; + }; + + template + struct x_traits >,x_complex > > { + typedef x_complex > ADD_T; + typedef x_complex > SAT_T; + typedef x_complex > MULT_T; + typedef x_complex > MADD_T; + typedef x_complex > CONJ_SQ_T; + typedef x_complex INT_T; + typedef x_complex > FLOAT_STRUCT_T; + }; + +#undef X_COMPLEX_MAX + + template + struct x_traits_d ,DIM> { + typedef x_complex ACCUM_T; + typedef x_complex ACCUM2_T; + typedef x_complex > ADD_TREE_T; + }; + + template + struct x_traits_d >,DIM> { + typedef x_complex::Value,I+BitWidth::Value> > ACCUM_T; + typedef x_complex::Value,(2*I)+BitWidth::Value> > ACCUM2_T; + }; + + + + template x_complex x_neg(x_complex &din) { + x_complex tmp; + tmp.real(-din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + + template typename x_traits::MADD_T x_conj_sq(x_complex &din) { + x_conj_sq_complex:; + return ( (din.real()*din.real()) + (din.imag()*din.imag())); + } + + + template x_complex x_conj(const x_complex &din) { + x_conj_complex:; + x_complex tmp; + tmp.real(din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + // This function is called when a non-const x_complex is conjugated. It calls the + // version of x_conj() which takes a constant parameter + template x_complex x_conj(x_complex &din) { + const x_complex tmp = din; + return(x_conj(tmp)); + } + + template void set_to_one(x_complex > &a) { + ap_int tmp_sat = ((ap_int)1<<(W-I)) - 1; + ap_fixed tmp; + tmp.range() = tmp_sat; + a = tmp; + } + + template T x_real(const x_complex &din) { + return(din.real()); + } + template T x_imag(const x_complex &din) { + return(din.imag()); + } + +} // end namespace hls + +#endif + + + diff --git a/vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_tb_utils.h b/vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_tb_utils.h new file mode 100755 index 00000000..ad17631b --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_tb_utils.h @@ -0,0 +1,141 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2013-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_MATRIX_TB_UTILS_H +#define X_HLS_MATRIX_TB_UTILS_H + +#ifndef __SYNTHESIS__ + +#include "hls/linear_algebra/utils/std_complex_utils.h" +#include "utils/x_hls_utils.h" + +template double norm1_abs(T x) { + const double ONE = 1.0; + const double ZERO = 0.0; + double t, re, im; + + re = abs((double)hls::x_real(x)); + im = abs((double)hls::x_imag(x)); + if (re > im) { + t = im/re; + return re*sqrt(ONE+t*t); + } else { + if (im == ZERO) { + return ZERO; + } + t = re/im; + return im*sqrt(ONE+t*t); + } +} + +// Compute 1-norm of a matrix directly +template double norm1(T in[ROWS][COLS]) { + + double norm = 0; + double norm_cols[COLS]; + + // Initialise + for (int c = 0; c < COLS; c++) { + norm_cols[c] = 0; + } + + // Sum column absolute values + for (int r=0; r < ROWS; r++) { + for (int c=0; c < COLS; c++) { + norm_cols[c] += norm1_abs(in[r][c]); + } + } + + // Find largest column sum + for (int c=0; c < COLS; c++) { + if (norm_cols[c] > norm) { + norm = norm_cols[c]; + } + } + + return norm; + +} + +template +int msub( + const T_IN A[ROWS][COLS], + const T_IN B[ROWS][COLS], + T_OUT C [ROWS][COLS] ) +{ + T_IN tmp; + for (int row = 0; row < ROWS; row++) { + for (int col = 0; col < COLS; col++) { + tmp = A[row][col]; + C[row][col] = tmp - B[row][col]; + } + } + return 0; +}; + +// Helper struct to determine base type +template struct tb_traits { + typedef T BASE_T; +}; +template struct tb_traits > { + typedef T BASE_T; +}; + +// Generate a difference ratio between a matrix and a reference matrix +// - LAPACK error measurement method +// - Scaled by matrix size and data type precision. +template double difference_ratio(T in[ROWS][COLS], T ref[ROWS][COLS]) { + const int MAX_DIM = (ROWS > COLS ? ROWS : COLS); + typedef typename tb_traits::BASE_T IN_BASE_T; + const IN_BASE_T eps_base_t = hls::numeric_limits::epsilon(); + const double eps = (double)eps_base_t; + + T diff[ROWS][COLS]; + double diff_norm, ref_norm; + + // Calculate difference between matrix and reference + msub(in,ref,diff); + // Calculate norm-1s of the difference and the reference + diff_norm = norm1(diff); + ref_norm = norm1(ref); + // Return difference ratio + return (diff_norm / (ref_norm * MAX_DIM * eps)); +}; + + +//TO DO : remove it when retire x_complex +#include "hls/linear_algebra/deprecated/x_complex_matrix_tb_utils.h" + +#endif // __SYNTHESIS__ + +#endif // X_HLS_MATRIX_TB_UTILS_H + + diff --git a/vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_utils.h b/vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_utils.h new file mode 100755 index 00000000..ef6ebc69 --- /dev/null +++ b/vitis/v2020_1/hls/linear_algebra/utils/x_hls_matrix_utils.h @@ -0,0 +1,292 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_MATRIX_UTILS_H +#define X_HLS_MATRIX_UTILS_H + +#include "ap_fixed.h" +#include "std_complex_utils.h" +#include "hls_math.h" +#include +#ifndef __SYNTHESIS__ +#include +#include +#include +#include +#include +#endif + +namespace hls { + + // =================================================================================================================== + // Transpose Types & Operation + struct NoTranspose { + const static int TransposeType = 0; + template < + int RowsA, + int ColsA, + typename InputType> + static InputType GetElement(const InputType A [RowsA][ColsA], unsigned Row, unsigned Col) + { + // No transpose, default + return A[Row][Col]; + } + }; + + struct Transpose { + const static int TransposeType = 1; + template < + int RowsA, + int ColsA, + typename InputType> + static InputType GetElement(const InputType A [RowsA][ColsA], unsigned Row, unsigned Col) + { + // Transpose, no conjugate + return A[Col][Row]; + } + }; + + struct ConjugateTranspose { + const static int TransposeType = 2; + template < + int RowsA, + int ColsA, + typename InputType> + static InputType GetElement(const InputType A [RowsA][ColsA], unsigned Row, unsigned Col) + { + // Complex conjugate transpose. + // o For non std::complex types this function will return an unaltered value. + return x_conj(A[Col][Row]); + } + }; + + template < + class TransposeForm, + int RowsA, + int ColsA, + typename InputType> + InputType GetMatrixElement(const InputType A [RowsA][ColsA], unsigned Row, unsigned Col) + { + // Need to help the compiler identify that the GetElement member function is a template + return TransposeForm::template GetElement(A,Row,Col); + } + + // =================================================================================================================== + // Common math operations and constants. Wrappers/templates to select the correct function based on type. + + // sqrt + static half x_sqrt(half x) { + return hls::half_sqrt(x); + } + static float x_sqrt(float x) { + return sqrtf(x); + } + static double x_sqrt(double x) { + return sqrt(x); + } + template < + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1> + ap_fixed x_sqrt(ap_fixed x) { + return hls::sqrt((double)x); + } + + + // copysign + static float x_copysign(float a, float b){ + return copysignf(a, b); + } + static double x_copysign(double a, double b){ + return copysign(a, b); + } + + + // sign + static float x_sign(float x) { + if ( x == 0.0f ) { + return 0.0f; + } else { + return copysignf(1.0f,x); + } + } + static double x_sign(double x) { + if ( x == 0.0 ) { + return 0.0; + } else { + return copysign(1.0,x); + } + } + template < + int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1> + ap_fixed x_sign(ap_fixed x) { + ap_fixed tmp = 0; + if ( x > 0 ) { + tmp = 1; + } else { + tmp = -1; + } + return tmp; + } + + + // reciprocal sqrt + static half x_rsqrt(half x) { + return hls::half_rsqrt(x); + } + static float x_rsqrt(float x) { + return rsqrtf(x); + } + static double x_rsqrt(double x) { + return rsqrt(x); + } + + + // isneg + static int x_isneg(float x) { + fp_struct fs = x; + return fs.__signbit(); + } + static int x_isneg(double x) { + fp_struct fs = x; + return fs.__signbit(); + } + +#ifndef __SYNTHESIS__ + // Matrix Display + // ============================================================================ + + // Non-specific data + // ----------------- + // This can be used by PoD or any class supporting "<<" + // setprecision may fail on non floating point types + template struct xil_printer { + static std::string to_s(T x, unsigned prec=10){ + + std::stringstream ss; + ss << std::setiosflags(std::ios::fixed) << std::setprecision(prec) << x; + + return ss.str(); + } + }; + + + // Complex data + // ---------------- + // This is used by complex data of any type. A printer is called to print the real and imaginary + // parts, so this just handles the formating of x+jy + template struct xil_printer > { + static std::string to_s(std::complex x, unsigned prec=10){ + + // Use the basic type printer to print the real and imaginary parts + typedef xil_printer printer; + + std::stringstream ss; + // Remember to deal with -0 + bool neg_imag = x.imag() <= -0 ? true : false; + + // Casting to "T" avoids "error: operands to ?: have different types." when using ap_fixed. + T imag = neg_imag ? (T)-x.imag() : (T)x.imag(); + + ss << printer::to_s(x.real(), prec) << (neg_imag ? " - j*":" + j*") << printer::to_s(imag, prec); + return ss.str(); + } + }; + + template void print_matrix(T a[ROWS][COLS], std::string prefix = "", unsigned prec=10, unsigned matlab_format=0){ + typedef xil_printer printer; + + std::string res[ROWS][COLS]; + unsigned widest_entry = 0; + + // Get the individual fields + for(int r = 0; r < ROWS; r++){ + for(int c = 0; c < COLS; c++){ + T tmp; + + tmp = hls::GetMatrixElement(a, r, c); + + res[r][c] = printer::to_s(tmp, prec); + if(res[r][c].length() > widest_entry){ + widest_entry = res[r][c].length(); + } + } + } + + // Print fields. Each column should be "widest_entry" chars wide + char col_gap_str[5] = " "; + unsigned col_width = widest_entry; + + for(int r = 0; r < ROWS; r++){ + if ( !matlab_format ) { + printf("%s|", prefix.c_str()); + } else { + if (r==0) { + printf("%s[", prefix.c_str()); + } else { + printf("%s ", prefix.c_str()); + } + } + for(int c = 0; c < COLS; c++){ + + unsigned num_spaces_needed = col_width - res[r][c].length(); + for(int x = 0; x< num_spaces_needed; x++){ + printf(" "); + } + if ( !matlab_format ) { + printf( "(%s)", res[r][c].c_str()); + } else { + printf( "%s", res[r][c].c_str()); + } + + if(c!=COLS-1){ + printf("%s", col_gap_str); + if ( matlab_format ) { + printf(","); + } + } + } + if ( !matlab_format ) { + printf(" |\n"); + } else { + if (r==ROWS-1) { + printf(" ];\n"); + } else { + printf(" ;\n"); + } + } + } + } +#endif + +} // end namespace hls + +#endif + + diff --git a/vitis/v2020_1/hls_alg.h b/vitis/v2020_1/hls_alg.h new file mode 100644 index 00000000..df28ebf7 --- /dev/null +++ b/vitis/v2020_1/hls_alg.h @@ -0,0 +1,54 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_alg.h + * @brief Top-level header for HLS Algorithm Library. + */ + +#ifndef _X_HLS_ALG_H_ +#define _X_HLS_ALG_H_ + +// shared infrastructure +#include "hls_alg/types.h" +#include "hls_alg/utils.h" + +// function modules +#include "hls_alg/hash.h" +#include "hls_alg/sort.h" + +#endif // ifndef _X_HLS_ALG_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/hls_alg/bitonicsort.h b/vitis/v2020_1/hls_alg/bitonicsort.h new file mode 100644 index 00000000..82da22ae --- /dev/null +++ b/vitis/v2020_1/hls_alg/bitonicsort.h @@ -0,0 +1,336 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file bitonicsort.h + * @brief bitonic sort template function implementation. + * + * This file is part of HLS Algorithm Library. + */ + +#ifndef _X_HLS_ALG_SORT_H_ +#error \ + "hls_alg/sort.h should not be inlcuded directly, use top-level hls_alg.h instead!" +#endif + +#ifndef _X_HLS_ALG_SORT_BITONIC_H_ +#define _X_HLS_ALG_SORT_BITONIC_H_ + +#ifndef __cplusplus +#error "hls_alg::sort uses hls::stream<> interface, and thus requires C++" +#endif + +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls_alg_internal { + + template + inline void swap(T& in1, T& in2, T& out1, T& out2){ + + if(updown==0){ + if(in1 > in2){ + out1 = in2; + out2 = in1; + } + else{ + out1 = in1; + out2 = in2; + } + } + else{ + if(in1 < in2){ + out1 = in2; + out2 = in1; + } + else{ + out1 = in1; + out2 = in2; + } + }; + }; + + template + inline void swap(T& in1, T& in2, T& out1, T& out2){ + + if(in1 > in2){ + out1 = in2; + out2 = in1; + } + else{ + out1 = in1; + out2 = in2; + } + }; + + template + inline void swap(T& in1, T& in2){ + + if(updown==0){ + if(in1 > in2){ + T tmp = in1; + in1 = in2; + in2 = tmp; + }; + } + else{ + if(in1 < in2){ + T tmp = in1; + in1 = in2; + in2 = tmp; + }; + }; + }; + + + template + void BitonicSortStage(T in[N], T out[N]){ + +// #pragma HLS array_partition variable=in complete +// #pragma HLS array_partition variable=out complete + + for(int s=0;s<(N>>1);s++){ + const int S = 1 << (Stage+1); + const int M = S >> SubStage; + const int idxtmp1 = int(2*s/M) * M + s%(M/2); + const int idxtmp2 = idxtmp1 + (M/2); + const int updown = int((s%S)/(S>>1)); // up or down + const int idx1 = (updown==0) ? idxtmp1: idxtmp2; + const int idx2 = (updown==0) ? idxtmp2: idxtmp1; + + swap(in[idx1],in[idx2],out[idx1],out[idx2]); + }; + }; + + + template + void BitonicSortSlave(T in[NS], T out[NS]){ + + T tmp1[NS], tmp2[NS]; + +// #pragma HLS array_partition variable=tmp1 complete +// #pragma HLS array_partition variable=tmp2 complete +// #pragma HLS array_partition variable=in complete +// #pragma HLS array_partition variable=out complete + + for(int i=0;i=2){ + BitonicSortStage(tmp1,tmp2); + } + if(NS>=4){ + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + } + if(NS>=8){ + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + } + if(NS>=16){ + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + } + if(NS>=32){ + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + } + if(NS>=64){ + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + } + + if(NS==2 or NS==4 or NS==32 or NS==64){ + for(int i=0;i + void BitonicMergeSlave(T in1[N], T in2[N], + T out1[N], T out2[N]){ + + const int logN = 31 - __builtin_clz(N); + const int N2 = 2*N; + + T inout[N2]; + +// #pragma HLS array_partition variable=inout complete +// #pragma HLS array_partition variable=in1 complete +// #pragma HLS array_partition variable=in2 complete +// #pragma HLS array_partition variable=out1 complete +// #pragma HLS array_partition variable=out2 complete + + for(int i=0;i> i; + const int idx1 = int(2*s/M) * M + s%(M/2); + const int idx2 = idx1 + (M/2); + swap(inout[idx1],inout[idx2]); + }; + }; + + for(int i=0;i + void BitonicSortGlobal(T in[NG], T out[NG]){ + + const int NP = NG / NS; + const int logNP = 31 - __builtin_clz(NP); + + T tmp1[NG/NS][NS]; + T tmp2[NG/NS][NS]; + + // slave step + for(int i=0;i(in+i*NS,tmp1[i]); + }; + + // block merge step + for(int i=0;i> j; + const int idxtmp1 = int(2*s/M) * M + s%(M/2); + const int idxtmp2 = idxtmp1 + (M/2); + const int updown = int((s%S)/(S>>1)); // up or down + const int idx1 = (updown==0) ? idxtmp1: idxtmp2; + const int idx2 = (updown==0) ? idxtmp2: idxtmp1; + + BitonicMergeSlave(tmp1[idx1],tmp1[idx2], + tmp2[idx1],tmp2[idx2]); + }; + + for(int m=0;m + void BitonicSort(hls::stream& in_stm, hls::stream& out_stm){ + +#pragma HLS stream variable=in_stm depth=len +#pragma HLS stream variable=out_stm depth=len + +#ifdef __SYNTHESIS__ + T in[len]; + T out[len]; +#else + T* in = new T[len]; + T* out = new T[len]; +#endif + + +#ifndef __SYNTHESIS__ + if(len<=2){ + fprintf(stderr, "Error: size of array to sort should not be less than 2.\n"); + exit (EXIT_FAILURE); + } + else if((len & (len-1)) != 0){ + fprintf(stderr, "Error: size of array to sort should be power of 2.\n"); + exit (EXIT_FAILURE); + }; +#endif + + for(int i=0;i(in, out); + + for(int i=0;i interface, and thus requires C++" +#endif + +#include "hls_stream.h" + +// For debug +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) +#include +#define _DEBUG_PRINT(msg...) \ + do { \ + printf(msg); \ + } while (0) +#else +#define _DEBUG_PRINT(msg...) (static_cast(0)) +#endif + +// for wide output +#include "ap_int.h" + +#define ROTR(n, x) ((x >> n) | (x << (32 - n))) +#define ROTL(n, x) ((x << n) | (x >> (32 - n))) +#define SHR(n, x) (x >> n) +#define CH(x, y, z) ((x & y) ^ ((~x) & z)) +#define MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) +#define BSIG0(x) (ROTR(2, x) ^ ROTR(13, x) ^ ROTR(22, x)) +#define BSIG1(x) (ROTR(6, x) ^ ROTR(11, x) ^ ROTR(25, x)) +#define SSIG0(x) (ROTR(7, x) ^ ROTR(18, x) ^ SHR(3, x)) +#define SSIG1(x) (ROTR(17, x) ^ ROTR(19, x) ^ SHR(10, x)) + +// XXX HLS currently does not support cross-compilation, and assumes the target +// to have same endianness as build host. HLS is only available on X86 machines, +// and thus the code is always little-endian. +#if !defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \ + __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#error "HLS only supports little endian systems!" +#endif + +namespace hls_alg_internal { + +/// Processing block +struct SHA256Block { + uint32_t M[16]; +}; + +/// @brief Generate 512bit processing blocks for SHA224/SHA256. +/// @tparam msg_T the input stream type. +/// @param msg_strm the message being hashed. +/// @param blk_strm the output block. +/// @param len the message size in byte. +template +void sha256_generate(hls::stream& msg_strm, + hls::stream& blk_strm, uint64_t len) { + + /// message length in bit. + const uint64_t L = len * 8; + + // message stream width in bit. + const unsigned int iw = sizeof(msg_T) * 8; + HLS_ALG_STATIC_ASSERT((iw == 8), "Unsupportted stream width"); + + /// number of bytes not in blocks yet. + int64_t n; + +LOOP_SHA256_PAD_PHASE1_MAIN: + for (n = len; n > 64; n -= 64) { +#ifdef __SYNTHESIS__ +#pragma HLS LOOP_TRIPCOUNT min = 1 max = 1 +#endif + /// message block. + SHA256Block B; + + // this block will hold 64 byte of message. + if (iw == 8) { + LOOP_SHA256_PAD_PHASE1_IW8: + for (int i = 0; i < 16; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l; + l = 0xff000000UL & (((uint8_t)msg_strm.read()) << 24); + l |= 0x00ff0000UL & (((uint8_t)msg_strm.read()) << 16); + l |= 0x0000ff00UL & (((uint8_t)msg_strm.read()) << 8); + l |= 0x000000ffUL & (((uint8_t)msg_strm.read())); + B.M[i] = l; + _DEBUG_PRINT("DEBUG: M[%d] =\t%08x (32bx16)\n", i, B.M[i]); + } + } else { + // TODO + } + // send block + blk_strm.write(B); + _DEBUG_PRINT("DEBUG: block sent\n"); + } + + // new block to handle remaining message, pad 1 and L. + + /// message block. + SHA256Block B; + +LOOP_SHA256_PAD_CLEAR_1: + for (int i = 0; i < 16; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + B.M[i] = 0UL; + } + + // fill in message. + if (iw == 8) { + /// buffer for bytes to long. + uint32_t wbuf; + LOOP_SHA256_PAD_PHASE2_IW8: + for (int64_t i = 0; i < n; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS LOOP_TRIPCOUNT min = 1 max = 63 +#endif + short nb = i & 0x3; + uint8_t b = msg_strm.read(); + if (nb == 0) { + wbuf = ((uint32_t)b << 24); + } else if (nb == 1) { + wbuf |= ((uint32_t)b << 16); + } else if (nb == 2) { + wbuf |= ((uint32_t)b << 8); + } else { + wbuf |= ((uint32_t)b); + B.M[i >> 2] = wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (32b)\n", i >> 2, wbuf); + } + } + // pad 1 + if ((n & 0x3) == 0) { + if (n != 64) { + B.M[n >> 2] = 0x80000000UL; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } + } else if ((n & 0x3) == 1) { + B.M[n >> 2] = 0x00800000UL | wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } else if ((n & 0x3) == 2) { + B.M[n >> 2] = 0x00008000UL | wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } else { + B.M[n >> 2] = 0x00000080UL | wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } + } else { + // TODO + } + + // test space left for length. + if (n >= 56) { + // can not fit in the length, send it. + blk_strm.write(B); + _DEBUG_PRINT("DEBUG: block sent\n"); + // create new + if (n == 64) { + B.M[0] = 0x80000000UL; + _DEBUG_PRINT("DEBUG: M[0] =\t%08x (pad 1)\n", B.M[0]); + } else { + B.M[0] = 0UL; + _DEBUG_PRINT("DEBUG: M[0] =\t%08x (zero)\n", B.M[0]); + } + LOOP_SHA256_PAD_CLEAR_2: + for (int i = 1; i < 14; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + B.M[i] = 0UL; + } + } + + // append length + // XXX due to big-endian assumption, write MSB at lower address. + B.M[14] = (uint32_t)(0xffffffffUL & (L >> 32)); + B.M[15] = (uint32_t)(0xffffffffUL & (L)); + _DEBUG_PRINT("DEBUG: M[%d] =\t%08x (L)\n", 14, B.M[14]); + _DEBUG_PRINT("DEBUG: M[%d] =\t%08x (L)\n", 15, B.M[15]); + + // send and done. + blk_strm.write(B); + _DEBUG_PRINT("DEBUG: block sent\n"); + +} // sha256_generate + +/// @brief Static config for SHA224 and SHA256. +template +struct sha256_digest_config; + +template <> +struct sha256_digest_config { + static const short numH = 7; +}; + +template <> +struct sha256_digest_config { + static const short numH = 8; +}; + +/// @brief Digest message blocks and emit final hash. +/// @tparam do_sha224 the flag to calculate SHA224 instead of SHA256 +/// @tparam hash_T the input hash stream content type. +/// @param blk_strm the message block. +/// @param len the message size in byte. +/// @param hash_strm the hash result stream. +template +inline void sha256_digest(hls::stream& blk_strm, + hls::stream& hash_strm, uint64_t len) { + /// constant K + static const uint32_t K[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL, + 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL, + 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, + 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL, + 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL, + 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, + 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL, + 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL, + 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, + 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL}; +#ifdef __SYNTHESIS__ +#pragma HLS array_partition variable = K complete +#endif // __SYNTHESIS__ + + /// total number blocks to digest. + uint64_t blk_num = (len >> 6) + 1 + ((len & 0x3f) > 55); + // _DEBUG_PRINT("expect %ld blocks.\n", blk_num); + + /// internal states + uint32_t H[8]; +#ifdef __SYNTHESIS__ +#pragma HLS array_partition variable = H complete +#endif // __SYNTHESIS__ + + // initialize + if (do_sha224) { + H[0] = 0xc1059ed8UL; + H[1] = 0x367cd507UL; + H[2] = 0x3070dd17UL; + H[3] = 0xf70e5939UL; + H[4] = 0xffc00b31UL; + H[5] = 0x68581511UL; + H[6] = 0x64f98fa7UL; + H[7] = 0xbefa4fa4UL; + } else { + H[0] = 0x6a09e667UL; + H[1] = 0xbb67ae85UL; + H[2] = 0x3c6ef372UL; + H[3] = 0xa54ff53aUL; + H[4] = 0x510e527fUL; + H[5] = 0x9b05688cUL; + H[6] = 0x1f83d9abUL; + H[7] = 0x5be0cd19UL; + } + +LOOP_SHA256_DIGEST_MAIN: + for (uint64_t n = 0; n < blk_num; ++n) { +#ifdef __SYNTHESIS__ +#pragma HLS LOOP_TRIPCOUNT min = 1 max = 1 +#endif + /// Input block. + SHA256Block blk = blk_strm.read(); + + _DEBUG_PRINT("DEBUG: block =\n"); + for (int i = 0; i < 16; ++i) { + _DEBUG_PRINT("\tM[%d] =\t%08x\n", i, blk.M[i]); + } + _DEBUG_PRINT("\n"); + + /// working variables. + uint32_t a, b, c, d, e, f, g, h; + + // loading working variables. + a = H[0]; + b = H[1]; + c = H[2]; + d = H[3]; + e = H[4]; + f = H[5]; + g = H[6]; + h = H[7]; + + /// message schedule W, from message or + uint32_t W[64]; +#ifdef __SYNTHESIS__ +#pragma HLS array_partition variable = W complete +#endif // __SYNTHESIS__ + + uint32_t Kt = K[0]; + uint32_t Wt = blk.M[0]; + W[0] = blk.M[0]; + LOOP_SHA256_UPDATE_64_ROUNDS: + for (short t = 0; t < 64; ++t) { +#ifdef __SYNTHESIS__ +#pragma HLS pipeline II = 1 +#endif // __SYNTHESIS__ + + /// temporal variables + uint32_t T1, T2; + T1 = h + BSIG1(e) + CH(e, f, g) + Kt + Wt; + T2 = BSIG0(a) + MAJ(a, b, c); + + // update working variables. + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + _DEBUG_PRINT( + "DEBUG: Kt=%08x, Wt=%08x\n" + "\ta=%08x, b=%08x, c=%08x, d=%08x\n" + "\te=%08x, f=%08x, g=%08x, h=%08x\n", + Kt, Wt, a, b, c, d, e, f, g, h); + + // for next cycle + Kt = K[(t + 1) & 63]; + if (t < 15) { + Wt = blk.M[(t + 1) & 63]; + W[t + 1] = Wt; + } else { + Wt = SSIG1(W[t - 1]) + W[t - 6] + SSIG0(W[t - 14]) + W[t - 15]; + W[(t + 1) & 63] = Wt; + } + } + + // store working variables to internal states. + H[0] = a + H[0]; + H[1] = b + H[1]; + H[2] = c + H[2]; + H[3] = d + H[3]; + H[4] = e + H[4]; + H[5] = f + H[5]; + H[6] = g + H[6]; + H[7] = h + H[7]; + } + + /// output hash stream width in bit. + const unsigned int ow = sizeof(hash_T) * 8; + HLS_ALG_STATIC_ASSERT( + (ow == 8) || (ow == 32) || (ow == 256) || (ow == 224 && do_sha224), + "Unsupportted stream width"); + + // Emit digest + if (ow == 8) { + LOOP_SHA256_EMIT_OW8: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX due to big-endian assumption, write MSB first. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + hash_strm.write(t0); + hash_strm.write(t1); + hash_strm.write(t2); + hash_strm.write(t3); + } + } else if (ow == 32) { + LOOP_SHA256_EMIT_OW32: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX shift big endian to little endian. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + uint32_t l_little = ((uint32_t)t0) | (((uint32_t)t1) << 8) | + (((uint32_t)t2) << 16) | (((uint32_t)t3) << 24); + hash_strm.write(l_little); + } + } else if (ow == 224) { + ap_uint<224> w224; + LOOP_SHA256_EMIT_OW224: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX shift algorithm's big endian to HLS's little endian. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + uint32_t l_little = ((uint32_t)t0) | (((uint32_t)t1) << 8) | + (((uint32_t)t2) << 16) | (((uint32_t)t3) << 24); + w224.range(32 * i + 31, 32 * i) = l_little; + } + hash_strm.write(w224); + } else if (ow == 256) { + ap_uint<256> w256; + LOOP_SHA256_EMIT_OW256: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX shift algorithm's big endian to HLS's little endian. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + uint32_t l_little = ((uint32_t)t0) | (((uint32_t)t1) << 8) | + (((uint32_t)t2) << 16) | (((uint32_t)t3) << 24); + w256.range(32 * i + 31, 32 * i) = l_little; + } + hash_strm.write(w256); + } else { + // TODO + } +} // sha256_digest + +/// @brief SHA-256/224 implementation top. +/// @tparam do_sha224 the flag to calculate SHA224 instead of SHA256 +/// @tparam msg_T the input message stream content type. +/// @tparam hash_T the input hash stream content type. +/// @param msg_strm the message being hashed. +/// @param len the message size in byte. +/// @param hash_strm the result. +template +void sha256_top(hls::stream& msg_strm, uint64_t len, + hls::stream& hash_strm) { +#ifdef __SYNTHESIS__ +#pragma HLS DATAFLOW +#endif + /// 512-bit Block stream + hls::stream blk_strm; +#ifdef __SYNTHESIS__ +#pragma HLS STREAM variable = blk_strm depth = 4 +#endif // __SYNTHESIS__ + + // Generate block stream + sha256_generate(msg_strm, blk_strm, len); + + // Digest block stream, and write hash stream. + sha256_digest(blk_strm, hash_strm, len); +} // sha256_top + +} // namespace hls_alg_internal + +namespace hls_alg { +/// @brief SHA-256 algorithm. +/// @tparam msg_T the input message stream content type. +/// @tparam hash_T the input hash stream content type. +/// @param msg_strm the message being hashed. +/// @param len the message size in byte. +/// @param hash_strm the result. +template +void sha256(hls::stream& msg_strm, uint64_t len, + hls::stream& hash_strm) { + hls_alg_internal::sha256_top(msg_strm, len, hash_strm); +} + +/// @brief SHA-224 algorithm. +/// @tparam msg_T the input message stream content type. +/// @tparam hash_T the input hash stream content type. +/// @param msg_strm the message being hashed. +/// @param len the message size in byte. +/// @param hash_strm the result. +template +void sha224(hls::stream& msg_strm, uint64_t len, + hls::stream& hash_strm) { + hls_alg_internal::sha256_top(msg_strm, len, hash_strm); +} +} // namespace hls_alg + +// Clean up macros. +#undef ROTR +#undef ROTL +#undef SHR +#undef CH +#undef MAJ +#undef BSIG0 +#undef BSIG1 +#undef SSIG0 +#undef SSIG1 + +#undef _DEBUG_PRINT + +#endif // ifndef _X_HLS_ALG_HASH_SHA224_SHA256_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/hls_alg/sort.h b/vitis/v2020_1/hls_alg/sort.h new file mode 100644 index 00000000..82a98e46 --- /dev/null +++ b/vitis/v2020_1/hls_alg/sort.h @@ -0,0 +1,62 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file sort.h + * @brief This file is part of HLS Algorithm Library, contains declarations of + * all supported sort funcitons. + */ + +#ifndef _X_HLS_ALG_H_ +#error "hls_alg/sort.h should not be inlcuded directly, use top-level hls_alg.h instead!" +#endif + +#ifndef _X_HLS_ALG_SORT_H_ +#define _X_HLS_ALG_SORT_H_ + +#include "hls_alg/bitonicsort.h" + +namespace hls_alg { + + template + void sort(hls::stream& in_stm, hls::stream& out_stm){ + hls_alg_internal::BitonicSort(in_stm, out_stm); + }; + +} // end of namespace hls_alg + +#endif // ifndef _X_HLS_ALG_SORT_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/hls_alg/types.h b/vitis/v2020_1/hls_alg/types.h new file mode 100644 index 00000000..f3f16942 --- /dev/null +++ b/vitis/v2020_1/hls_alg/types.h @@ -0,0 +1,81 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file types.h + * @brief This file is part of HLS Algorithm Library, contains type definitions. + */ + +#ifndef _X_HLS_ALG_TYPES_H_ +#define _X_HLS_ALG_TYPES_H_ + +#if 0 +#include "ap_int.h" +#include "ap_fixed.h" +#endif + +// Fixed width integers +#if defined(__cplusplus) && __cplusplus >= 201103L +#include +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +#else +// Signed. +// avoid conflict with +#ifndef __int8_t_defined +# define __int8_t_defined +typedef signed char int8_t; +typedef short int int16_t; +typedef int int32_t; +#if defined(__LP64__) && __LP64__ +typedef long int int64_t; +#else +typedef long long int int64_t; +#endif // __LP64__ +#endif // __int8_t_defined +// Unsigned. +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +#if defined(__LP64__) && __LP64__ +typedef unsigned long int uint64_t; +#else +typedef unsigned long long int uint64_t; +#endif // __LP64__ +#endif + +#endif // ifndef _X_HLS_ALG_TYPES_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/hls_alg/utils.h b/vitis/v2020_1/hls_alg/utils.h new file mode 100644 index 00000000..20063350 --- /dev/null +++ b/vitis/v2020_1/hls_alg/utils.h @@ -0,0 +1,63 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file utils.h + * @brief This file is part of HLS Algorithm Library, contains utilities. + */ + +#ifndef _X_HLS_ALG_UTILS_H_ +#define _X_HLS_ALG_UTILS_H_ + +#if __cplusplus >= 201103L +#define HLS_ALG_STATIC_ASSERT(b, m) static_assert((b), m) +#else +#define HLS_ALG_STATIC_ASSERT(b, m) ((void)0) +#endif + +#ifndef __SYNTHESIS__ +// for assert function. +#include +#define HLS_ALG_ASSERT(b) assert((b)) +#else +#define HLS_ALG_ASSERT(b) ((void)0) +#endif + +#endif // _X_HLS_ALG_UTILS_H_ + +#define HLS_ALG_MACRO_QUOTE(s) #s +#define HLS_ALG_MACRO_STR(s) HLS_ALG_MACRO_QUOTE(s) + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/hls_all_any_apfixed.h b/vitis/v2020_1/hls_all_any_apfixed.h new file mode 100644 index 00000000..cca75dda --- /dev/null +++ b/vitis/v2020_1/hls_all_any_apfixed.h @@ -0,0 +1,128 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_ALL_ANY_APFIXED_H_ +#define _X_HLS_ALL_ANY_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" + +///hls_all ap_fixed +template +bool generic_all(ap_fixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_all(ap_ufixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_all(ap_int x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_all(ap_uint x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_fixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_ufixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_int x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_uint x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +ap_fixed cbrt_fixed(ap_fixed x) { +#ifndef __SYNTHESIS__ + #ifdef HLS_DEBUG + std::cout<<"W="< +bool isgreater_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} +template +bool isgreater_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} +template +bool isgreater_fixed(ap_int x1, ap_int x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} +template +bool isgreater_fixed(ap_uint x1, ap_uint x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} + +//isgreaterequal(ap_fixed) +template +bool isgreaterequal_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} +template +bool isgreaterequal_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} +template +bool isgreaterequal_fixed(ap_int x1, ap_int x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} +template +bool isgreaterequal_fixed(ap_uint x1, ap_uint x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} + +//isless(ap_fixed) +template +bool isless_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} +template +bool isless_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} +template +bool isless_fixed(ap_int x1, ap_int x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} +template +bool isless_fixed(ap_uint x1, ap_uint x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} + +//islessequal(ap_fixed) +template +bool islessequal_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} +template +bool islessequal_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} +template +bool islessequal_fixed(ap_int x1, ap_int x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} +template +bool islessequal_fixed(ap_uint x1, ap_uint x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} + +//islessgreater(ap_fixed) +template +bool islessgreater_fixed(ap_fixed x1, ap_fixed x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} +template +bool islessgreater_fixed(ap_ufixed x1, ap_ufixed x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} +template +bool islessgreater_fixed(ap_int x1, ap_int x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} +template +bool islessgreater_fixed(ap_uint x1, ap_uint x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} + + + + +#endif + + diff --git a/vitis/v2020_1/hls_cordic_apfixed.h b/vitis/v2020_1/hls_cordic_apfixed.h new file mode 100644 index 00000000..9814d22e --- /dev/null +++ b/vitis/v2020_1/hls_cordic_apfixed.h @@ -0,0 +1,1626 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef _X_HLS_CORDIC_APFIXED_H_ +#define _X_HLS_CORDIC_APFIXED_H_ + +#if !defined(__SYNTHESIS__) && defined(_MSC_VER) +#include +#endif + +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_fpo.h" +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) +#include +#endif + +namespace cordic_apfixed { + + extern const ap_ufixed<128,2> circ_table_arctan_128[128]; + extern const int hyperb_table_tau_128[128]; + extern const ap_ufixed<128,4> hyperb_table_arctanh_128[128]; + + /* + * Range reduces input to between 0 and pi/2 by + * solving for k and r in x = k*(pi/2) + r + */ + template + void circ_range_redux( ap_ufixed x, + ap_uint<2> &k, + ap_ufixed &r) { + + ap_ufixed<(Wo+I),0> inv_pi2("0x0.A2F9836E4E43FC715BBF"); // 2/pi + ap_ufixed pi2("1.5707963267948966192313216916397514420985846996876"); // pi/2 + ap_ufixed prod = x * inv_pi2; + ap_uint kint = prod; + + k = kint; + r = x - kint * pi2; + }; + + /* + * Main CORDIC sub-function + * MODE 0: 'Rotation' : rotate by angle z. x' <- K*(x*cos(z) - y*sin(z)), y' <- K*(x*sin(z) + y*cos(z)) + * MODE 1: 'Vectoring': rotate y to zero. x' <- sqrt(x^2 + y^2) , z' <- atan(y/x) + */ + template + void cordic_circ_apfixed( ap_fixed &x, + ap_fixed &y, + ap_fixed &z) { + + const int Nmax = W; + + ap_fixed tx, ty, tz; + ap_fixed x_s, y_s, z_s; + ap_uint<1> d; + + for (int n=0; n> n; + y_s = y >> n; + z_s = circ_table_arctan_128[n]; + + if(d){ // y[n-1] is positive + tx = x + y_s; + ty = y - x_s; + tz = z + z_s; + } + else{ + tx = x - y_s; + ty = y + x_s; + tz = z - z_s; + } + + x = tx; + y = ty; + z = tz; + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << " x_s: " << x_s + << " y_s: " << y_s + << " z_s: " << z_s + << " x : " << x + << " y : " << y + << " z : " << z << std::endl; +#endif +#endif + } + }; + + + /* + * Main double-CORDIC sub-function + * MODE 0: asin + * MODE 1: acos + */ + template + void doublecordic_apfixed( ap_fixed &x, + ap_fixed &y, + ap_fixed &z, + ap_fixed &t) { + + const int Nmax = W - I + 1; + + for (int n=0; n d; + if(MODE == 0) { // asin + if(y<=t){ + d = x[W-1]; + } + else{ + d = ~x[W-1]; + } + } + else { // acos + if(x>=t){ + d = y[W-1]; + } + else{ + d = ~y[W-1]; + } + } + + ap_fixed x_s = x >> (n-1); + ap_fixed y_s = y >> (n-1); + ap_fixed x_s2 = x_s >> (n+1); + ap_fixed y_s2 = y_s >> (n+1); + + x = x - x_s2; + y = y - y_s2; + if(d){ // d==1, negtive + x = x + y_s; + y = y - x_s; + } + else{ // d==0, positive + x = x - y_s; + y = y + x_s; + } + + // t + ap_fixed t_s; + int n2 = (n << 1); // 2*n + if(n2> n2); + t = t + t_s; + } + + // z + ap_fixed ca = circ_table_arctan_128[n]; + ap_fixed z_s = (ca << 1); + ap_fixed tz; + if(d){ // d==1, negtive + tz = z - z_s; + } + else{ // d==0, positive + tz = z + z_s; + } + z = tz; + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << " x : " << x + << " y : " << y + << " z : " << z + << " t : " << t + << std::endl; +#endif +#endif + } + }; + + + // sin cos + template + void generic_sincos(ap_fixed in, + ap_fixed & outsin, ap_fixed & outcos){ + + ap_uint<1> sign0 = (in > 0) ? 1: 0; + + // abs(in) + ap_ufixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + // inabs = k * (pi/2) + r + const int Fr = (W - I) + I + 1; + ap_uint<2> k; + ap_ufixed r; + circ_range_redux(inabs, k, r); + + ap_fixed x, y, z; + + const ap_fixed K1("0x0.9B74EDA8435E47F277F7"); + x = K1; + y = 0; + + if(k==1 or k==3){ + ap_ufixed pi2("0x1.921FB54442D1846"); + // ap_ufixed pi2("1.5707963267948966192313216916397514420985846996876"); + z = pi2 - r; + } + else{ + z = r; + } + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + cordic_circ_apfixed(x,y,z); + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + if(k==0){ + outsin = y; + outcos = x; + } + else if(k==1){ + outsin = y; + outcos = -x; + } + else if(k==2){ + outsin = -y; + outcos = -x; + } + else{ + outsin = -y; + outcos = x; + } + + if(sign0==0) + outsin = -outsin; + }; + + // tan + template + ap_fixed generic_tan(ap_fixed x){ + + const int Ix = I; + const int Fx = (((W-I)>(I-1)) ? (W-I): (I-1)) + I; + const int Wx = I + Fx; + + ap_fixed xs = x; + + ap_fixed outsin; + ap_fixed outcos; + generic_sincos(xs, outsin, outcos); + + ap_fixed out = outsin / outcos; + + // overflow tan + if(I==1){ + if(out[W-1]==1){ + out[W-1] = 0; + for(int i=0;i + ap_ufixed generic_tan(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_tan(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // tan(ap_int) + template + ap_int generic_tan(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_tan(fin); + ap_int out = fout; + return out; + }; + + // tan(ap_uint) + template + ap_uint generic_tan(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_tan(fin); + ap_uint out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + }; + + /* + * for tanpi + */ + + /* + * Range reduces input to between 0 and pi/2 by + * solving for k and r in pi*x = k*(pi/2) + r + */ + template + void circ_range_redux_pi( ap_ufixed x, + ap_uint<2> &k, + ap_ufixed &r) { + //ap_ufixed<(Wo+I),2> v_2("2.000000000000000000"); + ap_ufixed pi2("1.5707963267948966192313216916397514420985846996876"); + ap_ufixed prod = x << 1;//mul_2; + ap_uint kint = prod; + + k = kint; + r = (prod - kint) * pi2; + }; + // sinpi cospi + template + void generic_sincospi(ap_fixed in, + ap_fixed & outsin, ap_fixed & outcos){ + + ap_uint<1> sign0 = (in > 0) ? 1: 0; + + // abs(in) + ap_ufixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + // inabs = k * (pi/2) + r + const int Fr = (W - I) + I + 1; + ap_uint<2> k; + ap_ufixed r; + circ_range_redux_pi(inabs, k, r); + + ap_fixed x, y, z; + + const ap_fixed K1("0x0.9B74EDA8435E47F277F7"); + x = K1; + y = 0; + + if(k==1 or k==3){ + ap_ufixed pi2("0x1.921FB54442D1846"); + z = pi2 - r; + } + else{ + z = r; + } + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + cordic_circ_apfixed(x,y,z); + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + if(k==0){ + outsin = y; + outcos = x; + } + else if(k==1){ + outsin = y; + outcos = -x; + } + else if(k==2){ + outsin = -y; + outcos = -x; + } + else{ + outsin = -y; + outcos = x; + } + + if(sign0==0) + outsin = -outsin; + }; + + // tanpi + template + ap_fixed generic_tanpi(ap_fixed x){ + + const int Ix = I; + const int Fx = (((W-I)>(I-1)) ? (W-I): (I-1)) + I; + const int Wx = I + Fx; + + ap_fixed xs = x; + + ap_fixed outsin; + ap_fixed outcos; + generic_sincospi(xs, outsin, outcos); + + ap_fixed out; + ap_int<1> bpoint=0; + if(!outcos){ + bpoint = 1; + }else{ + out = outsin / outcos; + } + //ap_fixed out = outsin / outcos; + + // overflow tan + // overflow in I ==1 and value< 0 + if(I==1||bpoint){ + if( out[W-1]==1 ){// + out[W-1] = 0; + for(int i=0;i + ap_ufixed generic_tanpi(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanpi(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // tanpi(ap_int) + template + ap_int generic_tanpi(ap_int in) { + return ap_int(0); + }; + + // tanpi(ap_uint) + template + ap_uint generic_tanpi(ap_uint in) { + return ap_uint(0); + }; + + // atan + template + ap_fixed generic_atan(ap_fixed in){ + + ap_uint<1> sign0 = (in > 0) ? 1: 0; + + // abs(in) + ap_fixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + // sign1 + ap_uint<1> sign1 = (inabs > 1) ? 1: 0; + + ap_fixed x, y, z; + if(sign1){ + x = 1; + // y = ap_fixed("0x1.0") / inabs; + y = 1.0 / inabs.to_double(); + z = 0; + } + else{ + x = 1; + y = inabs; + z = 0; + } + cordic_circ_apfixed(x,y,z); + + ap_fixed out; + if(sign1){ + const ap_fixed pi2("0x1.921FB54442D1846"); // pi/2 + out = pi2 - z; + } + else{ + out = z; + } + + // return + if(sign0){ + return out; + } + else{ + return -out; + } + }; + + // atan(ap_ufixed) + template + ap_ufixed generic_atan(ap_ufixed in){ + ap_fixed fin = in; + ap_fixed fout = generic_atan(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // atan(ap_int) + template + ap_int<2> generic_atan(ap_int in){ + if(in<-1) + return ap_int<2>(-1); + else if(in>1) + return ap_int<2>(1); + else + return ap_int<2>(0); + }; + + // atan(ap_uint) + template + ap_uint<1> generic_atan(ap_uint in){ + if(in>1) + return ap_uint<1>(1); + else + return ap_uint<1>(0); + }; + + // atan2 + template + ap_fixed generic_atan2(ap_fixed in1, + ap_fixed in2){ + + const ap_fixed pi("0x3.243F6A8885A308D3"); // pi + const ap_fixed pi2("0x1.921FB54442D1846"); // pi/2 + const ap_fixed pi4("0x0.C90FDAA22168C23"); // pi/4 + const ap_fixed pi3_("-0x2.5B2F8FE6643A469");// -pi*(3/4) + + ap_uint<2> signin1 = (in1 > 0) ? 2: (in1==0) ? 1: 0; + ap_uint<2> signin2 = (in2 > 0) ? 2: (in2==0) ? 1: 0; + + ap_fixed out; // output + + // 1. corner cases + + if(signin1==1 and signin2==2){ + out = 0; + return out; + } + else if(signin1==1 and signin2==0){ + out = pi; + return out; + } + else if(signin1==2 and signin2==1){ + out = pi2; + return out; + } + else if(signin1==0 and signin2==1){ + out = -pi2; + return out; + } + else if(in1==in2){ + if(signin1==2){ + out = pi4; + return out; + } + else if(signin1==1){ + out = 0; + return out; + } + else{ + out = pi3_; + return out; + } + } + + // 2. non-corner cases + + ap_fixed in1abs; // abs(in1) + if(signin1==0) + in1abs = -in1; + else + in1abs = in1; + + ap_fixed in2abs; // abs(in2) + if(signin2==0) + in2abs = -in2; + else + in2abs = in2; + + ap_fixed in1abs_sft; // shift + ap_fixed in2abs_sft; + for(int i=0;i x, y, z; + if(in1abs > in2abs){ + x = in1abs_sft; + y = in2abs_sft; + z = 0; + } + else{ + x = in2abs_sft; + y = in1abs_sft; + z = 0; + } + cordic_circ_apfixed(x,y,z); + + if(in1abs > in2abs){ + z = pi2 - z; + } + + if(signin2==0 and signin1==2){ + out = pi - z; + } + else if(signin2==0 and signin1==0){ + out = z - pi; + } + else if(signin2==2 and signin1==0){ + out = -z; + } + else{ + out = z; + } + + return out; + }; + + // atan2(ap_fixed) + template + ap_ufixed generic_atan2(ap_ufixed in1, + ap_ufixed in2){ + ap_fixed fin1 = in1; + ap_fixed fin2 = in2; + ap_fixed fout = generic_atan2(fin1, fin2); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + } + + // atan2(ap_int) + template + ap_int<3> generic_atan2(ap_int in1, + ap_int in2){ + ap_fixed fin1 = in1; + ap_fixed fin2 = in2; + ap_fixed fout = generic_atan2(fin1, fin2); + ap_int<3> out = fout; + return out; + } + + // atan2(ap_uint) + template + ap_uint<2> generic_atan2(ap_uint in1, + ap_uint in2){ + ap_fixed fin1 = in1; + ap_fixed fin2 = in2; + ap_fixed fout = generic_atan2(fin1, fin2); + ap_uint<2> out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + } + + /* + * Range reduces input to between 0 and ln2 by + * solving for k and r in x = k*ln2 + r + */ + template + void hyperb_range_redux( ap_ufixed x, + ap_uint &k, + ap_ufixed &r) { + + ap_ufixed<(Wo+I)+1,1> inv_ln2("0x1.71547652b82fe1777d0ffda0d23a7d11d6aef551cp0"); // 1.0/log(2) + ap_ufixed ln2("0xb.17217f7d1cf79abc9e3b39803f2f6af40f343267p-4"); // log(2) + ap_ufixed prod = x * inv_ln2; + ap_ufixed prod_dec = prod; + k = prod; + r = prod_dec * ln2; + }; + + /* + * Main hyperbolic CORDIC sub-function + * MODE 0: 'Rotation' : rotate by angle z. x' = K*(x*cosh(z) + y*sinh(z)), y' = x*sinh(z) + y*cosh(z) + * MODE 1: 'Vectoring': rotate y to zero. x' = K*sqrt(x^2 - y^2) , z' = z+atanh(y/x) + */ + template + void cordic_hyperb_apfixed( ap_fixed &x, + ap_fixed &y, + ap_fixed &z) { + + const int Nmax = W + 1; + + ap_fixed tx, ty, tz; + ap_fixed x_s, y_s, z_s; + ap_uint<1> d; + + for (int n=0; n> k; + y_s = y >> k; + z_s = hyperb_table_arctanh_128[k-1]; + + if(d){ // z[n-1] is negative + tx = x - y_s; + ty = y - x_s; + tz = z + z_s; + } + else{ + tx = x + y_s; + ty = y + x_s; + tz = z - z_s; + } + + x = tx; + y = ty; + z = tz; + + // std::cout << " x_s: " << x_s + // << " y_s: " << y_s + // << " z_s: " << z_s + // << " x : " << x + // << " y : " << y + // << " z : " << z << std::endl; + + } + } + + // Cordic method with range reduce for sinh and cosh + template + void sinh_cosh_range_redux_cordic( ap_fixed in, + ap_fixed &s_out, + ap_fixed &c_out){ + + ap_uint<1> sign0 = in[W-1]; + + ap_ufixed inabs; + if(sign0 == 0) + inabs = in; + else + inabs = -in; + + const int Fr = (W - I) + I; + + if(in==0){ + s_out = 0; + c_out = 1; + return; + } + + // inabs = k * ln(2) + r + ap_uint k; + ap_ufixed r; + hyperb_range_redux(inabs, k, r); + + ap_fixed x("1.20749706776307212887772"); + ap_fixed y(0); + ap_fixed z(r); + + // std::cout << x << " " << y << " " << z << std::endl; + + // compute x = sinh(r) and y = cosh(r) + cordic_hyperb_apfixed(x,y,z); + + // std::cout << x << " " << y << " " << z << std::endl; + + ap_fixed er, e_r; + er = x + y; // e^r + e_r = x - y; // e^{-r} + + // std::cout << er << " " << e_r << std::endl; + + er <<= (k-1); // (e^k * 2^k) / 2 + e_r >>= (k+1); // (e^{-k} * 2^{-k})/2 + + // std::cout << er << " " << e_r << std::endl; + + ap_fixed s_out_tmp = er - e_r; + ap_fixed c_out_tmp = er + e_r; + + // std::cout << "out_tmp: "<< " " << c_out_tmp << std::endl; + + // overflow sinh + if(s_out_tmp[W-1]==1){ + s_out_tmp[W-1] = 0; + for(int i=0;i + void tanh_range_redux_cordic(ap_fixed in, ap_fixed &tan_out) { + //For detail comment, please take sinh_range_redux_cordix for example + ap_uint<1> sign0 = in[W-1]; + + ap_ufixed inabs; + if(sign0 == 0) + inabs = in; + else + inabs = -in; + + const int Fr = (W - I) + I; + + if(in==0){ + tan_out = 0; + return; + } + + ap_uint k; + ap_ufixed r; + hyperb_range_redux(inabs, k, r); + + ap_fixed x("1.20749706776307212887772"); + ap_fixed y(0); + ap_fixed z(r); + + cordic_hyperb_apfixed(x,y,z); + ap_fixed er, e_r; + er = x + y; + e_r = x - y; + er <<= k; + e_r >>= k; + tan_out = (er/(er+e_r))*2 - 1; + } + + template + ap_fixed generic_tanh(ap_fixed in) { + ap_fixed tan_out; + tanh_range_redux_cordic(in, tan_out); + return tan_out; + } + + template + ap_ufixed generic_tanh(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanh(fin); + ap_ufixed tan_out = fout; + return tan_out; + } + + template + ap_int generic_tanh(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanh(fin); + ap_int tan_out = fout; + return tan_out; + } + + template + ap_uint generic_tanh(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanh(fin); + ap_uint tan_out = fout; + return tan_out; + } + // sinh(ap_fixed) + template + ap_fixed generic_sinh(ap_fixed in) { + ap_fixed s_out, c_out; + sinh_cosh_range_redux_cordic(in,s_out,c_out); + return s_out; + } + + // sinh(ap_ufixed) + template + ap_ufixed generic_sinh(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_sinh(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // sinh(ap_int) + template + ap_int generic_sinh(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_sinh(fin); + ap_int out = fout; + return out; + }; + + // sinh(ap_uint) + template + ap_uint generic_sinh(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_sinh(fin); + ap_uint out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + }; + + // cosh(ap_fixed) + template + ap_fixed generic_cosh(ap_fixed in) { + ap_fixed s_out, c_out; + sinh_cosh_range_redux_cordic(in,s_out,c_out); + return c_out; + } + + // cosh(ap_ufixed) + template + ap_ufixed generic_cosh(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_cosh(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // cosh(ap_int) + template + ap_int generic_cosh(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_cosh(fin); + ap_int out = fout; + return out; + }; + + // cosh(ap_uint) + template + ap_uint generic_cosh(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_cosh(fin); + ap_uint out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + }; + + + // asin + template + ap_fixed generic_asin(ap_fixed in){ + + const int I0 = 3; + const int W0 = W - I + I0 + 6; + + const ap_fixed cst1("0x1"); + const ap_fixed cst0("0x0"); + const ap_fixed cst_1("-0x1"); + + // input value should be between -1 and 1 +#ifndef __SYNTHESIS__ + if(I>=2){ + if((in>cst1) or (in out; // output + + // special case + if(in==cst1){ + out = ap_fixed("0x1.921FB54442D1846"); + return out; + } + else if(in==cst_1){ + out = ap_fixed("-0x1.921FB54442D1846"); + return out; + } + else if(in==cst0){ + out = ap_fixed("0x0"); + return out; + } + + // sign + ap_uint<1> sign0 = (in >= 0) ? 1: 0; + + // abs(in) + ap_fixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + ap_fixed absout; + + // double cordic algorithm + if(inabs[W-I-1]==0){ + ap_fixed x("0x1"); + ap_fixed y("0x0"); + ap_fixed z("0x0"); + ap_fixed t = inabs; + doublecordic_apfixed(x,y,z,t); + absout = z; + } + else{ + const int F1 = W - I; + const int W1 = F1 + F1 + I; + ap_fixed one("0x1"); + ap_fixed onex = one - inabs * inabs; + ap_fixed sqrtonex = ::HLS_FPO_SQRT(onex.to_double()); + ap_fixed xsqrtonex = inabs / (one + sqrtonex); + absout = generic_atan(xsqrtonex) << 1; + } + + // return + if(sign0) + out = absout; + else + out = -absout; + + return out; + } + + + // acos + template + ap_fixed generic_acos(ap_fixed in){ + + const int I0 = 3; + const int W0 = W - I + I0; + + // input value should be between -1 and 1 +#ifndef __SYNTHESIS__ + if(I>=2){ + const ap_fixed cst1("0x1"); + const ap_fixed cst_1("-0x1"); + + if((in>cst1) or (in pi2("0x1.921FB54442D1846"); // pi/2 + ap_fixed out = pi2 - generic_asin(in); + + if(out[W0-1]==1){ + out = -out; + } + + return out; + } + + template + void cordic_semi_recovery_asinh(ap_fixed in_top, ap_fixed& out) { + + if(in_top == 0) { + out = 0; + return; + } + + ap_fixed in; + if(in_top >= 0) { + in = in_top; + } + else { + in = -in_top; + } + + int m = in.countLeadingZeros(); + int k = I-m; + + if(W-I-2 >= k) { + + ap_fixed boundk = 1.0; + ap_fixed bound_k_2 = 1.0; + boundk <<= k; + bound_k_2 >>= k; + bound_k_2 >>= 2; + + if(in >= (boundk - bound_k_2)) { + k+=1; + } + + } + + if(k < 0) { + k = 0; + } + + const int Nmax = W - I + 1; + int tau; + ap_fixed x_r(1); + ap_fixed y_r(0); + ap_fixed z_r(0); + ap_fixed x1_tau, x_2tau, y1_tau, y_2tau, z_s; + ap_fixed xk, x_k, yk, y_k; + ap_fixed y_semi_recovery; + ap_fixed in_s; + + for(int i=0; i> k; + yk = y_r << k; + y_k = y_r >> k; + + y_semi_recovery = (xk - x_k + yk + y_k) >> 1; + + tau = hyperb_table_tau_128[i+1]; + z_s = hyperb_table_arctanh_128[tau-1] << 1; + + x1_tau = ((x_r >> tau) << 1); + x_2tau = (x_r >> (tau << 1)); + y1_tau = ((y_r >> tau) << 1); + y_2tau = (y_r >> (tau << 1)); + + if(y_semi_recovery <= in) { + x_r += x_2tau + y1_tau; + y_r += y_2tau + x1_tau; + z_r += z_s; + } + else { + x_r += x_2tau - y1_tau; + y_r += y_2tau - x1_tau; + z_r -= z_s; + } + + in_s = in >> (tau << 1); + in -= in_s; + } + + ap_ufixed ln2("0xb.17217f7d1cf79abc9e3b39803f2f6af40f343267p-4"); + if(in_top >= 0) { + out = z_r + k*ln2; + } + else { + out = -z_r - k*ln2; + } + } + + template + void cordic_semi_recovery_acosh(ap_fixed in, ap_fixed& out) { + +#ifndef __SYNTHESIS__ + if(in < 1) { + std::cout<<"Input should be equal or greater than 1.0."< boundk = 1.0; + ap_fixed bound_k_1 = 1.0; + boundk <<= k; + boundk >>= 1; + bound_k_1 >>= k; + bound_k_1 >>= 1; + + if(in < (boundk - bound_k_1)) { + k-=1; + } + + if(k < 0) { + k = 0; + } + + const int Nmax = W - I + 1; + int tau; + ap_fixed x_r(1); + ap_fixed y_r(0); + ap_fixed z_r(0); + ap_fixed x1_tau, x_2tau, y1_tau, y_2tau, z_s; + ap_fixed xk, x_k, yk, y_k; + ap_fixed x_semi_recovery; + ap_fixed in_s; + + for(int i=0; i> k; + yk = y_r << k; + y_k = y_r >> k; + + x_semi_recovery = (xk + x_k + yk - y_k) >> 1; + + tau = hyperb_table_tau_128[i+1]; + z_s = hyperb_table_arctanh_128[tau-1] << 1; + + x1_tau = ((x_r >> tau) << 1); + x_2tau = (x_r >> (tau << 1)); + y1_tau = ((y_r >> tau) << 1); + y_2tau = (y_r >> (tau << 1)); + + if(x_semi_recovery <= in) { + x_r += x_2tau + y1_tau; + y_r += y_2tau + x1_tau; + z_r += z_s; + } + else { + x_r += x_2tau - y1_tau; + y_r += y_2tau - x1_tau; + z_r -= z_s; + } + + in_s = in >> (tau << 1); + in -= in_s; + } + + ap_ufixed ln2("0xb.17217f7d1cf79abc9e3b39803f2f6af40f343267p-4"); + out = z_r + k*ln2; + } + + // asinh(ap_fixed) + template + ap_fixed generic_asinh(ap_fixed in) { + ap_fixed input, output; input = in; + cordic_semi_recovery_asinh(input, output); + return output; + } + + // asinh(ap_ufixed) + template + ap_ufixed generic_asinh(ap_ufixed in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_asinh(input, output); + return output; + }; + + // asinh(ap_int) + template + ap_int generic_asinh(ap_int in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_asinh(input, output); + return output; + }; + + // asinh(ap_uint) + template + ap_uint generic_asinh(ap_uint in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_asinh(input, output); + return output; + }; + + // acosh(ap_fixed) + template + ap_fixed generic_acosh(ap_fixed in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + } + + // acosh(ap_ufixed) + template + ap_ufixed generic_acosh(ap_ufixed in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + }; + + // acosh(ap_int) + template + ap_int generic_acosh(ap_int in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + }; + + // acosh(ap_uint) + template + ap_uint generic_acosh(ap_uint in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + }; + + //asinpi(ap_fixed) + template + ap_fixed generic_asinpi(ap_fixed x) { + const static int we = I < 3? 3: I; + ap_fixed xi = x; + ap_fixed asin_x = generic_asin(xi); + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"W="< + ap_uint generic_asinpi(ap_uint x) { + //asinpi(x) inside [0, 0.5] + if(x==0){ + return 0; + //rounding 0.5 to 1 + } else if(x==1){ + return 1; + } else{ + #ifndef __SYNTHESIS__ + printf("Error: input value %d (for asinpi) is not between -1 and 1.\n", x.to_int()); + assert(0); + #endif + return 0; + }; + } + //acospi(ap_fixed) + template + ap_fixed generic_acospi(ap_fixed x) { + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"W="< + ap_uint generic_acospi(ap_uint x) { + //acospi(x) inside [0,0.5] + if(x==0){ + return 1; + } else if(x==1){ + return 0; + } else{ + #ifndef __SYNTHESIS__ + printf("Error: input value %d (for acospi) is not between -1 and 1.\n", x.to_int()); + assert(0); + #endif + return 0; + }; + } + //atanpi(ap_fixed) + template + ap_fixed generic_atanpi(ap_fixed x) { + ap_fixed atan_x = generic_atan(x); + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"atan_x="< pi = 3.14159265358979323846; + ap_fixed r = atan_x/pi; + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"r="< + ap_ufixed generic_atanpi(ap_ufixed x) { + ap_fixed xi = x; + return generic_atanpi(xi); + } + template + ap_int generic_atanpi(ap_int x) { + //atanpi(x) inside (0.5,0.5) + return 0; + } + template + ap_uint generic_atanpi(ap_uint x) { + //atanpi(x) inside [0,0.5) + return 0; + } + //atan2pi(ap_fixed) + template + ap_fixed generic_atan2pi(ap_fixed y, ap_fixed x) { + ap_fixed atan2_x = generic_atan2(y, x); + static const int F = W - I; + //atan2 inside (-pi,pi] + //atan2pi inside (-1,1] + //to make the precision is 1ulp + //E-R=R*2^(-ulp)/Pi<1/2^F + //ulp=F + static const int wf = F; + ap_ufixed<2+wf,2> pi = 3.14159265358979323846; + ap_fixed r = atan2_x/pi; + return r; + } + template + ap_ufixed generic_atan2pi(ap_ufixed y, ap_ufixed x) { + ap_fixed xi = x; + ap_fixed yi = y; + return generic_atan2pi(yi, xi); + } + template + ap_int generic_atan2pi(ap_int y, ap_int x) { + //atan2pi inside (-1, 1] + bool x_sig = x[I-1]; + bool y_sig = y[I-1]; + if(y==0 && x==0) return 0; + //rounding -0.5 to 1 + //y<0, x ==0 + else if(y_sig && x==0) return -1; + //rounding 0.5 to 1, y >0, x == 0 + else if(!y_sig && x==0) return 1; + //y>0 && x < 0 + else if(!y_sig && x_sig) return 1; + //y<0, x < 0 + else if(y_sig && x_sig) return -1; + else return 0; + } + template + ap_uint generic_atan2pi(ap_uint y, ap_uint x) { + //atan2pi inside (0, 1] + //rounding 0.5 to 1, y >0, x == 0 + if(y!=0 && x==0) return 1; + else return 0; + } + +} // namespace + +#endif + + diff --git a/vitis/v2020_1/hls_dds.h b/vitis/v2020_1/hls_dds.h new file mode 100644 index 00000000..e2972b92 --- /dev/null +++ b/vitis/v2020_1/hls_dds.h @@ -0,0 +1,1158 @@ +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2014 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_DDS_H +#define X_HLS_DDS_H + +/* + * This file contains a C++ model of hls::dds. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#include "ap_int.h" +#include +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#include +#include "hls_stream.h" +//#include "dds/gmp.h" +#include "dds/dds_compiler_v6_0_bitacc_cmodel.h" +#else + +/** + * Core Specific Constants + */ +/* PartsPresent values */ +#define XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT 0 +#define XIP_DDS_PHASE_GEN_ONLY 1 +#define XIP_DDS_SIN_COS_LUT_ONLY 2 + + /* DDS_Clock_Rate limits */ +#define XIP_DDS_CLOCK_RATE_MIN 0.01 +#define XIP_DDS_CLOCK_RATE_MAX 1000 + + /* Channels limits */ +#define XIP_DDS_CHANNELS_MIN 1 +#define XIP_DDS_CHANNELS_MAX 16 + + /* Mode of Operation values */ +#define XIP_DDS_MOO_CONVENTIONAL 0 +#define XIP_DDS_MOO_RASTERIZED 1 + + /* Modulus limits */ +#define XIP_DDS_MODULUS_MIN 9 +#define XIP_DDS_MODULUS_MAX 16384 + + /* ParameterEntry values */ +#define XIP_DDS_SYSTEM_PARAMS 0 +#define XIP_DDS_HARDWARE_PARAMS 1 + + /* Spurious Free Dynamic Range SFDR limits */ +#define XIP_DDS_SFDR_MIN 18 +#define XIP_DDS_SFDR_MAX 150 + + /* Frequency_Resolution SFDR limits */ +#define XIP_DDS_FREQ_RES_MIN 0.000000001 +#define XIP_DDS_FREQ_RES_MAX 125000000 + + /* Noise_Shaping values */ +#define XIP_DDS_NS_NONE 0 +#define XIP_DDS_NS_DITHER 1 +#define XIP_DDS_NS_TAYLOR 2 +#define XIP_DDS_NS_AUTO 3 + + /* Phase_Increment and Phase_Offset values */ +#define XIP_DDS_PINCPOFF_NONE 0 +#define XIP_DDS_PINCPOFF_PROG 1 +#define XIP_DDS_PINCPOFF_FIXED 2 +#define XIP_DDS_PINCPOFF_STREAM 3 + + /* Output_Selection values */ +#define XIP_DDS_OUT_SIN_ONLY 0 +#define XIP_DDS_OUT_COS_ONLY 1 +#define XIP_DDS_OUT_SIN_AND_COS 2 + + /* Present/absent values */ +#define XIP_DDS_ABSENT 0 +#define XIP_DDS_PRESENT 1 + + /* Amplitude_Mode values */ +#define XIP_DDS_FULL_RANGE 0 +#define XIP_DDS_UNIT_CIRCLE 1 + + /* Output_Form */ +#define XIP_DDS_OUTPUT_TWOS 0 +#define XIP_DDS_OUTPUT_SIGN_MAG 1 + + /* Memory_Type values */ +#define XIP_DDS_MEM_AUTO 0 +#define XIP_DDS_MEM_BLOCK 1 +#define XIP_DDS_MEM_DIST 2 + + /* Optimization_Goal values */ +#define XIP_DDS_OPTGOAL_AUTO 0 +#define XIP_DDS_OPTGOAL_AREA 1 +#define XIP_DDS_OPTGOAL_SPEED 2 + + /* Resolved Optimization_Goal values */ +#define XIP_DDS_RESOPTGOAL_AREA 0 +#define XIP_DDS_RESOPTGOAL_SPEED 1 + + /* DSP48_use values */ +#define XIP_DDS_DSP_MIN 0 +#define XIP_DDS_DSP_MAX 1 + + /* Latency_configuration values */ +#define XIP_DDS_LATENCY_AUTO 0 +#define XIP_DDS_LATENCY_MANUAL 1 + + /* S_CONFIG_Sync_Mode values */ +#define XIP_DDS_CONFIG_SYNC_VECTOR 0 +#define XIP_DDS_CONFIG_SYNC_PACKET 1 + +#define ci_max_pipe_stages 13 +#define ci_quad_sym_thresh 2048 + +typedef double xip_dds_v6_0_data; +#endif + +using namespace std; + +namespace hls { + +#ifdef AESL_SYN +#include "etc/autopilot_ssdm_op.h" +#endif + +namespace ip_dds { + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + +static const char* ddsErrChkHead = "ERROR:hls::dds "; + +template +struct in_config_pinc{ + phase_t pinc; +}; + +template +struct in_config_poff{ + phase_t poff; +}; + +template +struct in_config_pinc_poff{ +static const unsigned __HLS_DDS_CONFIG_N_ = (CONFIG_T::Phase_Increment%2 + CONFIG_T::Phase_Offset%2); +static const unsigned input_axi_width = (CONFIG_T::Phase_Width%8) ? (CONFIG_T::Phase_Width/8+1)*8 : CONFIG_T::Phase_Width; +static const unsigned output_axi_width = (CONFIG_T::Output_Width%8) ? (CONFIG_T::Output_Width/8+1)*8 : CONFIG_T::Output_Width; + +typedef ap_ufixed out_phase_t; + + out_phase_t data[__HLS_DDS_CONFIG_N_]; + in_config_pinc_poff() + { + #pragma HLS array partition variable=data + } + in_config_pinc_poff(const in_config_pinc_poff &tmp) + { + #pragma HLS array partition variable=data + data[0] = tmp.data[0]; +if(__HLS_DDS_CONFIG_N_>1) + data[1] = tmp.data[1]; + } + + inline void operator = (const in_config_pinc_poff &tmp) + { + data[0] = tmp.data[0]; +if(__HLS_DDS_CONFIG_N_>1) + data[1] = tmp.data[1]; + } + + void set_pinc(out_phase_t &tmp) + { +#pragma HLS inline +#ifndef AESL_SYN + if(CONFIG_T::Phase_Increment%2 == 0) + { + std::cout<<"error found"< +struct out_data_sin{ + data_t sin; +}; + +template +struct out_data_cos{ + data_t cos; +}; + +template +struct out_data_sin_cos{ +static const unsigned __HLS_DDS_OUT_N_ = (CONFIG_T::Output_Selection/2 + 1); +static const unsigned input_axi_width = (CONFIG_T::Phase_Width%8) ? (CONFIG_T::Phase_Width/8+1)*8 : CONFIG_T::Phase_Width; +static const unsigned output_axi_width = (CONFIG_T::Output_Width%8) ? (CONFIG_T::Output_Width/8+1)*8 : CONFIG_T::Output_Width; + +typedef ap_uint config_t; +typedef ap_ufixed out_phase_t; +typedef ap_fixed out_data_t; + + out_data_t data[__HLS_DDS_OUT_N_]; + out_data_sin_cos() + { + #pragma HLS array partition variable=data + } + out_data_sin_cos(const out_data_sin_cos &tmp) + { + #pragma HLS array partition variable=data + data[0] = tmp.data[0]; +if(__HLS_DDS_OUT_N_>1) + data[1] = tmp.data[1]; + } + + inline void operator = (const out_data_sin_cos &tmp) + { + data[0] = tmp.data[0]; +if(__HLS_DDS_OUT_N_>1) + data[1] = tmp.data[1]; + } + + out_data_t & get_sin() + { +#ifndef AESL_SYN + if(CONFIG_T::Output_Selection == 1) + { + std::cerr << ddsErrChkHead + << "Please do NOT use get_sin() when set Output_Selection to XIP_DDS_OUT_COS_ONLY." + << std::endl; + //assert(0&&"Output_Selection is set to COS_ONLY"); + exit(1); + } +#endif + if(CONFIG_T::Output_Selection%2 == 0) + return data[__HLS_DDS_OUT_N_-1]; + } + + out_data_t &get_cos() + { +#ifndef AESL_SYN + if(CONFIG_T::Output_Selection == 0) + { + std::cerr << ddsErrChkHead + << "Please do NOT use get_cos() when set Output_Selection to XIP_DDS_OUT_SIN_ONLY." + << std::endl; + //assert(0&&"Output_Selection is set to SIN_ONLY"); + exit(1); + } +#endif + if(CONFIG_T::Output_Selection > 0) + return data[0]; + } +}; + +enum filter_type {single_rate = 0, interpolation, decimation, hibert, interpolated}; +static const char* dds_filter_type_str[] = { + "single_rate", "interpolation", + "decimation", "hilbert", "interpolated" +}; + +enum rate_change_type {integer = 0, fixed_fractional}; +static const char* dds_rate_change_type_str[] = { + "integer", "fixed_fractional" +}; + +enum chan_seq {basic = 0, advanced}; +static const char* dds_channel_sequence_str[] = { + "basic", "advanced" +}; + +enum rate_specification {frequency = 0, period}; +static const char* dds_ratespecification_str[] = { + "frequency_specification", "sample_period" +}; + +enum value_sign {value_signed = 0, value_unsigned}; +static const char* dds_value_sign_str[] = {"signed", "unsigned"}; + +enum quantization {integer_coefficients = 0, quantize_only, maximize_dynamic_range}; +static const char* dds_quantization_str[] = { + "integer_coefficients", "quantize_only", "maximize_dynamic_range" +}; + +enum coeff_structure {inferred = 0, non_symmetric, symmetric, negative_symmetric, half_band, hilbert}; +static const char* dds_coeff_struct_str[] = { + "inferred", "non_symmetric", "symmetric", + "negative_symmetric", "half_band", "hilbert" +}; + +enum output_rounding_mode {full_precision = 0, truncate_lsbs, non_symmetric_rounding_down, + non_symmetric_rounding_up, symmetric_rounding_to_zero, + symmetric_rounding_to_infinity, convergent_rounding_to_even, + convergent_rounding_to_odd}; +static const char* dds_output_rounding_mode_str[] = { + "full_precision", "truncate_lsbs", "non_symmetric_rounding_down", + "non_symmetric_rounding_up", "symmetric_rounding_to_zero", + "symmetric_rounding_to_infinity", "convergent_rounding_to_even", + "convergent_rounding_to_odd" +}; + +enum filter_arch {systolic_multiply_accumulate = 0, transpose_multiply_accumulate}; +static const char* dds_filter_arch_str[] = { + "systolic_multiply_accumulate", "transpose_multiply_accumulate" +}; + +enum optimization_goal {area = 0, speed}; +static const char* dds_opt_goal_str[] = {"area", "speed"}; + +enum config_sync_mode {on_vector = 0, on_packet}; +static const char* dds_s_config_sync_mode_str[] = {"on_vector", "on_packet"}; + +enum config_method {single = 0, by_channel}; +static const char* dds_s_config_method_str[] = {"single", "by_channel"}; + +struct params_t { + static const unsigned Phase_Width = 16; + static const unsigned Output_Width = 16; + static const unsigned phase_fractional_bits = 0; + static const unsigned output_fractional_bits = 0; + static const unsigned num_channels = 1; + static const unsigned input_length = 128; + + /** + * dds_compiler_v6_0 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + */ + static const unsigned int PartsPresent = XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT; +#ifndef __GXX_EXPERIMENTAL_CXX0X__ + static const double DDS_Clock_Rate = 20.0; +#else + static constexpr double DDS_Clock_Rate = 20.0; +#endif + static const unsigned int Channels = 1; + static const unsigned int Mode_of_Operation = XIP_DDS_MOO_CONVENTIONAL; + static const unsigned int Modulus = 200; + static const unsigned int ParameterEntry = XIP_DDS_HARDWARE_PARAMS; +#ifndef __GXX_EXPERIMENTAL_CXX0X__ + static const double Spurious_Free_Dynamic_Range = 20.0; + static const double Frequency_Resolution = 10.0; +#else + static constexpr double Spurious_Free_Dynamic_Range = 20.0; + static constexpr double Frequency_Resolution = 10.0; +#endif + static const unsigned int Noise_Shaping = XIP_DDS_NS_NONE; + static const unsigned int Phase_Increment = XIP_DDS_PINCPOFF_FIXED; + static const unsigned int Phase_Offset = XIP_DDS_PINCPOFF_NONE; + static const unsigned int Resync = XIP_DDS_ABSENT; + static const unsigned int Output_Selection = XIP_DDS_OUT_SIN_AND_COS; + static const unsigned int Negative_Sine = XIP_DDS_ABSENT; + static const unsigned int Negative_Cosine = XIP_DDS_ABSENT; + static const unsigned int Amplitude_Mode = XIP_DDS_FULL_RANGE; + static const unsigned int Memory_Type = XIP_DDS_MEM_AUTO; + static const unsigned int Optimization_Goal = XIP_DDS_OPTGOAL_AUTO; + static const unsigned int DSP48_Use = XIP_DDS_DSP_MIN; + static const unsigned int Has_TREADY = XIP_DDS_ABSENT; + static const unsigned int S_CONFIG_Sync_Mode = XIP_DDS_CONFIG_SYNC_VECTOR; + static const unsigned int Output_Form = XIP_DDS_OUTPUT_TWOS; + static const unsigned int Latency_Configuration = XIP_DDS_LATENCY_AUTO; + static const unsigned int Latency = 5; + static const xip_dds_v6_0_data PINC[XIP_DDS_CHANNELS_MAX]; + static const xip_dds_v6_0_data POFF[XIP_DDS_CHANNELS_MAX]; + + /* The following parameters are the results of resolution fns. They are included here so that they are in + the return structure of get_config */ + + static const double resSFDR; + static const double resFrequency_Resolution; + static const unsigned int resNoise_Shaping; + static const unsigned int resMemory_Type; + static const unsigned int resOptimization_Goal; + static const signed int resLatency; + static const unsigned int resPhase_Width; + static const unsigned int resOutput_Width; + static const unsigned int resPhaseAngleWidth; + static const unsigned int resPhaseErrWidth; + //static const xip_uint resLatencyPipe[ci_max_pipe_stages+1]; //100 is much bigger than max possible latency +}; + +#ifndef AESL_SYN +//--------------------------------------------------------------------------------------------------------------------- +// Example message handler +static void msg_print(void* handle, int error, const char* msg) +{ + printf("%s\n",msg); +} +#endif +} // namespace hls::ip_dds + + +template +class DDS { +public: + static const unsigned input_axi_width = (CONFIG_T::Phase_Width%8) ? (CONFIG_T::Phase_Width/8+1)*8 : CONFIG_T::Phase_Width; + static const unsigned output_axi_width = (CONFIG_T::Output_Width%8) ? (CONFIG_T::Output_Width/8+1)*8 : CONFIG_T::Output_Width; + + typedef ap_uint config_t; + typedef ap_ufixed out_phase_t; + + typedef ap_fixed out_data_t; +private: + +#ifndef AESL_SYN + //// Define array helper functions for types used + //DEFINE_XIP_ARRAY(real); + //DEFINE_XIP_ARRAY(complex); + //DEFINE_XIP_ARRAY(uint); + //DEFINE_XIP_ARRAY(mpz); + //DEFINE_XIP_ARRAY(mpz_complex); + + //DEFINE_DDS_XIP_ARRAY(real); + //DEFINE_DDS_XIP_ARRAY(mpz); + //DEFINE_DDS_XIP_ARRAY(mpz_complex); + + xip_dds_v6_0* mDDS; +#endif + +#ifndef AESL_SYN + void printConfig(const xip_dds_v6_0_config* cfg) + { + printf("Configuration of %s:\n",cfg->name); + printf("\tDDS : "); +#if 0 + if (cfg->filter_type == hls::ip_dds::single_rate || + cfg->filter_type == hls::ip_dds::hilbert ) { + printf("%s\n",hls::ip_dds::dds_filter_type_str[cfg->filter_type]); + } else if ( cfg->filter_type == hls::ip_dds::interpolation ) { + printf("%s by %d\n",hls::ip_dds::dds_filter_type_str[cfg->filter_type],cfg->zero_pack_factor); + } else { + printf("%s up by %d down by %d\n",hls::ip_dds::dds_filter_type_str[cfg->filter_type],cfg->interp_rate,cfg->decim_rate); + } + printf("\tCoefficients : %d ",cfg->coeff_sets); + if ( cfg->is_halfband ) { + printf("Halfband "); + } + if (cfg->reloadable) { + printf("Reloadable "); + } + printf("coefficient set(s) of %d taps\n",cfg->num_coeffs); + printf("\tData : %d path(s) of %d %s channel(s)\n",cfg->num_paths,cfg->num_channels,hls::ip_dds::dds_channel_sequence_str[cfg->chan_seq]); +#endif + } + + void checkModulus () { + if (CONFIG_T::Mode_of_Operation == XIP_DDS_MOO_RASTERIZED && (CONFIG_T::Modulus < 129 || CONFIG_T::Modulus > 225)) { + std::cerr << ip_dds::ddsErrChkHead << "Validation failed for parameter Modulus for DDS Compiler. Value \"" + << CONFIG_T::Modulus << "\" is out of the range [129, 256] supported by Vivado HLS." + << std::endl; + exit(1); + } + } + + void checkParamEntry () { + if (CONFIG_T::ParameterEntry == XIP_DDS_SYSTEM_PARAMS) { + std::cerr << ip_dds::ddsErrChkHead << "PrameterEntry is not supported for setting XIP_DDS_SYSTEM_PARAMS in Vivado HLS." + << std::endl; + exit(1); + } + } + + void checkPartsPresent () { + if (CONFIG_T::PartsPresent != XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT) { + std::cerr << ip_dds::ddsErrChkHead << "PartsPresent is only supported for setting XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT in Vivado HLS." + << std::endl; + exit(1); + } + } + + void gen_ip_inst() + { + + xip_dds_v6_0_config dds_cnfg; + xip_status status = xip_dds_v6_0_default_config(&dds_cnfg); + dds_cnfg.name = "dds_compiler"; + + dds_cnfg.PartsPresent = CONFIG_T::PartsPresent; + dds_cnfg.DDS_Clock_Rate = CONFIG_T::DDS_Clock_Rate; + dds_cnfg.Channels = CONFIG_T::Channels; + dds_cnfg.Mode_of_Operation = CONFIG_T::Mode_of_Operation; + dds_cnfg.Modulus = CONFIG_T::Modulus; + dds_cnfg.ParameterEntry = CONFIG_T::ParameterEntry; + dds_cnfg.Spurious_Free_Dynamic_Range = CONFIG_T::Spurious_Free_Dynamic_Range; + dds_cnfg.Frequency_Resolution = CONFIG_T::Frequency_Resolution; + dds_cnfg.Noise_Shaping = CONFIG_T::Noise_Shaping; + dds_cnfg.Phase_Increment = CONFIG_T::Phase_Increment; + dds_cnfg.Resync = CONFIG_T::Resync; + dds_cnfg.Phase_Offset = CONFIG_T::Phase_Offset; + dds_cnfg.Output_Selection = CONFIG_T::Output_Selection; + dds_cnfg.Negative_Sine = CONFIG_T::Negative_Sine; + dds_cnfg.Negative_Cosine = CONFIG_T::Negative_Cosine; + dds_cnfg.Amplitude_Mode = CONFIG_T::Amplitude_Mode; + dds_cnfg.Memory_Type = CONFIG_T::Memory_Type; + dds_cnfg.Optimization_Goal = CONFIG_T::Optimization_Goal; + dds_cnfg.DSP48_Use = CONFIG_T::DSP48_Use; + dds_cnfg.Has_TREADY = CONFIG_T::Has_TREADY; + dds_cnfg.S_CONFIG_Sync_Mode = CONFIG_T::S_CONFIG_Sync_Mode; + dds_cnfg.Output_Form = CONFIG_T::Output_Form; + dds_cnfg.Latency_Configuration = CONFIG_T::Latency_Configuration; + for(int mi=0; mi config[CONFIG_T::input_length*CONFIG_T::num_channels], + ip_dds::out_data_sin_cos data[CONFIG_T::input_length*CONFIG_T::num_channels], + out_phase_t phase[CONFIG_T::input_length*CONFIG_T::num_channels] + ) + { + ////////////////////////////////////////////// + // C level simulation models for hls::dds + ////////////////////////////////////////////// + const int number_of_samples = CONFIG_T::input_length; + + xip_dds_v6_0_config config_ret; + xip_dds_v6_0_config_pkt* pinc_poff_config; + + // Can we read back the updated configuration correctly? + if (xip_dds_v6_0_get_config(mDDS, &config_ret) != XIP_STATUS_OK) { + std::cerr << "ERROR: Could not retrieve C model configuration" << std::endl; + } + + // Set up some arrays to hold values for programmable phase increment and phase offset + xip_dds_v6_0_data pinc[XIP_DDS_CHANNELS_MAX]; + xip_dds_v6_0_data poff[XIP_DDS_CHANNELS_MAX]; + + //------------------------------------------------------------------------------------ + // Set up fields and reserve memory for data and config packets, for this configuration + //------------------------------------------------------------------------------------ + + //Calculate the number of input fields + xip_uint no_of_input_fields = 0; + if (config_ret.PartsPresent == XIP_DDS_SIN_COS_LUT_ONLY) { + no_of_input_fields++; //Phase_In + assert(0 && "DDS IP doesn't support SIN_COS_LUT_ONLY mode"); + } else { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_STREAM) { + no_of_input_fields++; //PINC + if (config_ret.Resync == XIP_DDS_PRESENT) { + no_of_input_fields++; //RESYNC + } + } + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_STREAM) { + no_of_input_fields++; //POFF + } + } + + //Calculate the number of output fields + xip_uint no_of_output_fields = 0; //phase output is not optional in the c model. + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + no_of_output_fields = 1; //PHASE_OUT + } + if (config_ret.PartsPresent != XIP_DDS_PHASE_GEN_ONLY) { + if (config_ret.Output_Selection == XIP_DDS_OUT_SIN_ONLY) no_of_output_fields++; //SIN + if (config_ret.Output_Selection == XIP_DDS_OUT_COS_ONLY) no_of_output_fields++; //COS + if (config_ret.Output_Selection == XIP_DDS_OUT_SIN_AND_COS) no_of_output_fields += 2; //SIN and COS + } + + // Create and allocate memory for I/O structures + // Create request and response structures + + // Create config packet - pass pointer by reference + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY && (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG || config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG)) { + if (xip_dds_v6_0_alloc_config_pkt(&pinc_poff_config, config_ret.Channels, config_ret.Channels) == XIP_STATUS_OK) { + std::cout << "INFO: Reserved memory for config packet" << std::endl; + } else { + std::cerr << "ERROR: Unable to reserve memory for config packet" << std::endl; + exit(1); + } + } + + // Create input data packet + xip_array_real* din = xip_array_real_create(); + xip_array_real_reserve_dim(din,3); //dimensions are (Number of samples, channels, PINC/POFF/Phase) + din->dim_size = 3; + din->dim[0] = number_of_samples; //FIXME: number of sample + din->dim[1] = config_ret.Channels; + din->dim[2] = no_of_input_fields; + din->data_size = din->dim[0] * din->dim[1] * din->dim[2]; + if (xip_array_real_reserve_data(din,din->data_size) == XIP_STATUS_OK) { + std::cout << "INFO: Reserved memory for request as [" << number_of_samples << "," << config_ret.Channels << "," << no_of_input_fields << "] array " << std::endl; + } else { + std::cout << "ERROR: Unable to reserve memory for input data packet!" << std::endl; + exit(2); + } + + // Request memory for output data + xip_array_real* dout = xip_array_real_create(); + xip_array_real_reserve_dim(dout,3); //dimensions are (Number of samples, channels, PINC/POFF/Phase) + dout->dim_size = 3; + dout->dim[0] = number_of_samples; + dout->dim[1] = config_ret.Channels; + dout->dim[2] = no_of_output_fields; + dout->data_size = dout->dim[0] * dout->dim[1] * dout->dim[2]; + if (xip_array_real_reserve_data(dout,dout->data_size) == XIP_STATUS_OK) { + std::cout << "INFO: Reserved memory for response as [" << number_of_samples << "," << config_ret.Channels << "," << no_of_output_fields << "] array " << std::endl; + } else { + std::cout << "ERROR: Unable to reserve memory for output data packet!" << std::endl; + exit(3); + } + + + //--------------------------------------------------- + // Populate the input structure with example data + //--------------------------------------------------- + size_t sample = 0; + size_t field = 0; + xip_dds_v6_0_data value = 0.0; + + // Set up pinc and poff, and call config routine, if either phase increment or phase offset is programmable + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG || config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG) { + + for (int channel = 0; channel < config_ret.Channels; channel++) { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG) { + //field is PINC + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // pinc[channel] = rand() % (config_ret.Modulus); // Allow zero too + //} else { + // pinc[channel] = rand() % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + pinc[channel] = config[channel].get_pinc(); //FIXME ?: CONFIG_T::PINC[channel]; + } + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG) { + //field is POFF + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // poff[channel] = (channel + 1) % (config_ret.Modulus); + //} else { + // poff[channel] = (channel + 1) % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + poff[channel] = config[channel].get_poff(); //FIXME ?: CONFIG_T::POFF[channel]; + } + } + + // Copy our local pinc/poff data into the memory we allocated in the config structure + // If not present, leave the initial values + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG) { + memcpy(pinc_poff_config->din_pinc, pinc, config_ret.Channels*sizeof(xip_dds_v6_0_data)); + } + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG) { + memcpy(pinc_poff_config->din_poff, poff, config_ret.Channels*sizeof(xip_dds_v6_0_data)); + } + + // Run the config routine + if (xip_dds_v6_0_config_do(mDDS, pinc_poff_config) == XIP_STATUS_OK) { + std::cout << "INFO: config_do was successful" << std::endl; + } else { + std::cerr << "ERROR: config_packet failed" << std::endl; + exit(4); + } + } + } + + //------------------------------------------------------ + //transforming data + //int resync_sample = rand() % (number_of_samples-2) + 1; // Do a resync randomly in the frame between 2nd and 2nd-last sample + for(sample = 0; sample < number_of_samples; sample++) { + for (int channel = 0; channel < config_ret.Channels; channel++) { + + field = 0; + + // Phase_In input, for Sin/Cos LUT configuration only + if (config_ret.PartsPresent == XIP_DDS_SIN_COS_LUT_ONLY) { + //field is PHASE_IN + assert(0 && "DDS IP doesn't support SIN_COS_LUT_ONLY mode"); + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // value = rand() % (config_ret.Modulus); // Allow zero too + //} else { + // value = rand() % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + //xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + //field++; + } + + // Streaming phase increment + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_STREAM) { + ////field is PINC + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // value = rand() % (config_ret.Modulus); // Allow zero too + //} else { + // value = rand() % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + value = config[sample*config_ret.Channels+channel].get_pinc(); + xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + field++; + } + } + + // Streaming phase offset + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_STREAM) { + ////field is POFF + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // value = (channel + 1 + sample) % (config_ret.Modulus); + //} else { + // value = (channel + 1 + sample) % (1ULL << (config_ret.resPhase_Width)); + //} + value = config[sample*config_ret.Channels+channel].get_poff(); + xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + field++; + } + } + +#if 0 + // Finally do resync, if required + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if ((config_ret.Phase_Increment == XIP_DDS_PINCPOFF_STREAM) && (config_ret.Resync == XIP_DDS_PRESENT)){ + //field is Resync + if (sample == resync_sample) { + value = 1; + } else { + value = 0; + } + xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + field++; + } + } +#endif + + } + } + + //------------------ + // Simulate the core + //------------------ + std::cout << "INFO: Running the C model..." << std::endl; + + if (xip_dds_v6_0_data_do(mDDS, //pointer to c model instance + din, //pointer to input data structure + dout, //pointer to output structure + number_of_samples, //first dimension of either data structure + config_ret.Channels, //2nd dimension of either data structure + no_of_input_fields, //3rd dimension of input + no_of_output_fields //3rd dimension of output + ) != XIP_STATUS_OK) { + std::cerr << "ERROR: C model did not complete successfully" << std::endl; + xip_array_real_destroy(din); + xip_array_real_destroy(dout); + xip_dds_v6_0_destroy(mDDS); + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY && (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG || config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG)) { + xip_dds_v6_0_free_config_pkt(&pinc_poff_config); + } + exit(5); + } + else { + std::cout << "INFO: C model transaction completed successfully" << std::endl; + } + + // When enabled, this will print the result data to stdout + const int SCALE_FACTOR = sizeof(int)*CHAR_BIT - config_ret.Output_Width; + for(int sample = 0;sample< number_of_samples;sample++) { + std::cout << std::endl << "Sample " << sample; + for(int chan = 0; chan < config_ret.Channels; chan++) { + std::cout << std::endl << "Channel " << chan; + field = 0; + xip_dds_v6_0_xip_array_real_get_data(dout, &value, sample, chan, field); + std::cout << ": out phase = " << value; + phase[sample*config_ret.Channels+chan] = value; + field++; + ip_dds::out_data_sin_cos tmp; + if(config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY ) { + if (config_ret.Output_Selection != XIP_DDS_OUT_COS_ONLY) { + xip_dds_v6_0_xip_array_real_get_data(dout, &value, sample, chan, field); + std::cout << " out sin = " << (((int)value << SCALE_FACTOR) >> SCALE_FACTOR); + //std::cout << " out sin = " << (out_data_t)value; + tmp.get_sin() = value; + field++; + } + if (config_ret.Output_Selection != XIP_DDS_OUT_SIN_ONLY) { + xip_dds_v6_0_xip_array_real_get_data(dout, &value, sample, chan, field); + std::cout << " out cos = " << (((int)value << SCALE_FACTOR) >> SCALE_FACTOR); + //std::cout << " out cos = " << (out_data_t)value; + tmp.get_cos() = value; + } + } + data[sample*config_ret.Channels+chan] = tmp; + std::cout << std::endl; + } + } + + //----------------- + // Reset the core + // This will clear the phase accumulator state, and any resync input, + // but leave any programmed phase increment/phase offset values + // unchanged. + //----------------- + if (xip_dds_v6_0_reset(mDDS) == XIP_STATUS_OK) { + std::cout << "INFO: C model reset successfully" << std::endl; + } else { + std::cout << "ERROR: C model reset did not complete successfully" << std::endl; + exit(6); + } + + } //end of run_sim +#endif + + public: + DDS() +#ifndef AESL_SYN + : mDDS(0) +#endif + { +#ifndef AESL_SYN + rule_check(); + ///////////// IP parameters legality checking ///////////// + // Check CONFIG_T::ParameterEntry + checkParamEntry(); + + // Check CONFIG_T::PartsPresent + checkPartsPresent(); + + // Check CONFIG_T::Mode_of_Operation and CONFIG_T::Modulus + checkModulus(); + + gen_ip_inst(); +#endif + } + + ~DDS() + { + #ifdef AESL_SYN + #pragma HLS inline + #else + xip_dds_v6_0_destroy(mDDS); + #endif + } + + void run( + ip_dds::in_config_pinc_poff config[CONFIG_T::input_length*CONFIG_T::num_channels], + ip_dds::out_data_sin_cos data[CONFIG_T::input_length*CONFIG_T::num_channels], + out_phase_t phase[CONFIG_T::input_length*CONFIG_T::num_channels] + ) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::dds + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_DDS" variable=return metadata="parameterizable" + //#pragma HLS function INSTANTIATE variable=mConfigParams + #pragma HLS interface ap_fifo port=config + #pragma HLS interface ap_fifo port=data + #pragma HLS interface ap_fifo port=phase + #pragma HLS data_pack variable=config + #pragma HLS data_pack variable=data + + insert_spec(); + for (int i = 0; i < CONFIG_T::input_length; ++i) + { + ip_dds::in_config_pinc_poff tmp = config[i]; + ip_dds::out_data_sin_cos outtmp; + outtmp.data[0] = tmp.get_pinc(); + if(CONFIG_T::Output_Selection>1) + outtmp.data[1] = tmp.get_poff(); + data[i] = outtmp; + phase[i]= tmp.get_poff(); + } + + #else + //coeff_t reload_coeff[CONFIG_T::num_coeffs]; + //for (unsigned int i = 0; i < CONFIG_T::num_coeffs; i++) + // reload_coeff[i] = 0; + //config_t config[CONFIG_T::num_channels] = {0}; + run_sim(config, data, phase); + #endif + } + + //void run( + // ip_dds::in_config_pinc_poff_resync config[CONFIG_T::input_length*CONFIG_T::num_channels], + // ip_dds::out_data_sin_cos data[CONFIG_T::input_length*CONFIG_T::num_channels], + // out_phase_t phase[CONFIG_T::input_length*CONFIG_T::num_channels] + // ) + +#ifndef AESL_SYN + void rule_check() + { + std::cout<<"Channel number: "< 16) { + assert(0 && "Channel number > 16"); + } + } +#endif + + void run( + ip_dds::out_data_sin_cos data[CONFIG_T::input_length*CONFIG_T::num_channels], + out_phase_t phase[CONFIG_T::input_length*CONFIG_T::num_channels] + ) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::dds + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_DDS" variable=return metadata="parameterizable" + //#pragma HLS function INSTANTIATE variable=mConfigParams + #pragma HLS interface ap_fifo port=data + #pragma HLS interface ap_fifo port=phase + #pragma HLS data_pack variable=data + + insert_spec(); + + static ip_dds::out_data_sin_cos lut[CONFIG_T::input_length*CONFIG_T::num_channels]; + for(int i=0; i<(CONFIG_T::input_length*CONFIG_T::num_channels);i++) + { + lut[i].data[0] = i*i + 3; +if(CONFIG_T::Output_Selection>1) + lut[i].data[1] = i*i - 69; + } + + for (int i = 0; i < CONFIG_T::input_length*CONFIG_T::num_channels; ++i) + { +#if 0 + data[i].data[0] = lut[i].data[0]; +if(CONFIG_T::Output_Selection>1) + data[i].data[1] = lut[i].data[1]; +#else + data[i] = lut[i]; +#endif + phase[i]= i;//lut[i].data + lut[i].data; + } + + #else + assert((CONFIG_T::Phase_Increment==0 || CONFIG_T::Phase_Increment==2) && "Phase_Increment set error"); + ip_dds::in_config_pinc_poff config[CONFIG_T::input_length*CONFIG_T::num_channels]; + run_sim (config, data, phase); + #endif + } + + +}; +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_DDS_H + + diff --git a/vitis/v2020_1/hls_diff_apfixed.h b/vitis/v2020_1/hls_diff_apfixed.h new file mode 100644 index 00000000..5b07496f --- /dev/null +++ b/vitis/v2020_1/hls_diff_apfixed.h @@ -0,0 +1,308 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_DIFF_APFIXED_H_ +#define _X_HLS_DIFF_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" + +//1. fdim_fixed + /* + * ============================================ + * || x y || fdim_fixed(x,y) + * || (x-y) Normally || (x - y) + * || (x-y) overflow || max + * || x < y || 0 + * ============================================ + */ +template +ap_fixed fdim_fixed(ap_fixed x, ap_fixed y ) +{ + #pragma HLS PIPELINE II=1 + ap_fixed x_overf = 0; + ap_fixed xs = 0; + bool overf = 0; + + if(x > y) + { + x_overf = x - y; + overf = x_overf[W_-1]; + if(overf) { + #pragma UNROLL + for (int i = 0; i < W_-1; i++){ + xs[i] = 1; + } + xs[W_-1] = 0; + } + else{ + x_overf[W_] = 0; + xs = x_overf; + } + } + return xs; +} +template +ap_ufixed fdim_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x > y){ xs = x - y; } + return xs; +} +template +ap_int fdim_fixed(ap_int x, ap_int y) +{ + ap_fixed xs = x; + ap_fixed ys = y; + return fdim_fixed(xs, ys); +} +template +ap_uint fdim_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x > y) { xs = x - y; } + return xs; +} + +//2. fmax_fixed + /* + * ============================================ + * || x y || fmax_fixed(x,y) + * || x >= y || x + * || x < y || y + * ============================================ + */ +template +ap_fixed fmax_fixed(ap_fixed x, ap_fixed y ) +{ + ap_fixed xs = 0; + if(x >= y) xs = x ; + else xs = y ; + return xs; +} +template +ap_ufixed fmax_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int fmax_fixed(ap_int x, ap_int y) +{ + ap_int xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} +template +ap_uint fmax_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} + +//3. fmin_fixed + /* + * ============================================ + * || x y || fmin_fixed(x,y) + * || x > y || y + * || x <= y || x + * ============================================ + */ +template +ap_fixed fmin_fixed(ap_fixed x, ap_fixed y ) +{ + ap_fixed xs = 0; + if(x <= y) xs = x ; + else xs = y ; + return xs; +} +template +ap_ufixed fmin_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int fmin_fixed(ap_int x, ap_int y) +{ + ap_int xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +template +ap_uint fmin_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} + +// TODO DEBUG +//4. maxmag_fixed + /* + * ============================================ + * || x y || maxmag_fixed(x,y) + * || max{|x|,|y|} overflow || max + * || |x| >= |y| || x + * || |x| < |y| || y + * ============================================ + */ +template +ap_fixed maxmag_fixed(ap_fixed x, ap_fixed y ) +{ + #pragma HLS PIPELINE II=1 + ap_fixed xm = -x; + ap_fixed ym = -y; + ap_fixed x_fabs = ( x[W_-1] ) ? xm : ap_fixed(x); + ap_fixed y_fabs = ( y[W_-1] ) ? ym : ap_fixed(y); + + ap_fixed xs_t = 0; + ap_fixed xs = 0; + if(x_fabs >= y_fabs) + { + xs_t = x_fabs ; + xs = x; + } + else{ + xs_t = y_fabs ; + xs = y; + } + //case overflow + if(xs_t[W_-1]) + { + #pragma UNROLL + for (int i = 0; i < W_-1; i++){ + xs[i] = 1; + } + xs[W_-1] = 0; + } + + return xs; +} +template +ap_ufixed maxmag_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int maxmag_fixed(ap_int x, ap_int y) +{ + ap_fixed xs = x; + ap_fixed ys = y; + return maxmag_fixed(xs, ys); +} +template +ap_uint maxmag_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} + + +//5. minmag_fixed + /* + * ============================================ + * || x y || minmag_fixed(x,y) + * || min{|x|,|y|} overflow || max + * || |x| > |y| || y + * || |x| <= |y| || x + * ============================================ + */ +template +ap_fixed minmag_fixed(ap_fixed x, ap_fixed y ) +{ + #pragma HLS PIPELINE II=1 + ap_fixed xm = -x; + ap_fixed ym = -y; + ap_fixed x_fabs = ( x[W_-1] ) ? xm : ap_fixed(x); + ap_fixed y_fabs = ( y[W_-1] ) ? ym : ap_fixed(y); + + ap_fixed xs_t = 0; + ap_fixed xs = 0; + if(x_fabs <= y_fabs) + { + xs_t = x_fabs ; + xs = x; + } + else{ + xs_t = y_fabs ; + xs = y; + } + if(xs_t[W_-1]) + { + #pragma UNROLL + for (int i = 0; i < W_-1; i++){ + xs[i] = 1; + } + xs[W_-1] = 0; + } + + return xs; +} +template +ap_ufixed minmag_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int minmag_fixed(ap_int x, ap_int y) +{ + ap_fixed xs = x; + ap_fixed ys = y; + return minmag_fixed(xs, ys); +} +template +ap_uint minmag_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +#endif + + diff --git a/vitis/v2020_1/hls_dsp.h b/vitis/v2020_1/hls_dsp.h new file mode 100755 index 00000000..7f5088ba --- /dev/null +++ b/vitis/v2020_1/hls_dsp.h @@ -0,0 +1,58 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/* + * HLS DSP Library Header File + */ + +#ifndef HLS_DSP_H +#define HLS_DSP_H + +#ifndef __cplusplus +#error C++ is required to include this header file +#endif + +#include "hls/dsp/utils/hls_dsp_common_utils.h" +#include "hls/dsp/utils/hls_cordic_functions.h" +#include "hls/dsp/utils/hls_cordic.h" +#include "hls/dsp/hls_atan2_cordic.h" +#include "hls/dsp/hls_awgn.h" +#include "hls/dsp/hls_convolution_encoder.h" +#include "hls/dsp/hls_cmpy.h" +#include "hls/dsp/hls_nco.h" +#include "hls/dsp/hls_qam_demod.h" +#include "hls/dsp/hls_qam_mod.h" +#include "hls/dsp/hls_sqrt_cordic.h" +#include "hls/dsp/hls_viterbi_decoder.h" + +#endif + + diff --git a/vitis/v2020_1/hls_erf_apfixed.h b/vitis/v2020_1/hls_erf_apfixed.h new file mode 100644 index 00000000..e236b4fa --- /dev/null +++ b/vitis/v2020_1/hls_erf_apfixed.h @@ -0,0 +1,686 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_ERF_APFIXED_H_ +#define _X_HLS_ERF_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_exp_apfixed.h" +#include "utils/x_hls_utils.h" + +namespace erf_erfc_fixed { + + namespace { + template class coeff { }; + + template <> class coeff { + //class coeff { + public: + static const double tiny; + static const double one_over_two; + static const double one; + static const double two; + static const double erx; + static const double efx; + static const double efx8; + static const double pp[5]; + static const double qq[6]; + static const double pa[7]; + static const double qa[7]; + static const double ra[8]; + static const double sa[9]; + static const double rb[7]; + static const double sb[8]; + }; + const double coeff::tiny = 1e-300; + const double coeff::one_over_two= 5.00000000000000000000e-01; /* 0x3FE00000, 0x00000000 */ + const double coeff::one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */ + const double coeff::two = 2.00000000000000000000e+00; /* 0x40000000, 0x00000000 */ + /* c = (float)0.84506291151 */ + const double coeff::erx = 8.45062911510467529297e-01; /* 0x3FEB0AC1, 0x60000000 */ + /* + * Coefficients for approximation to erf on [0,0.84375] + */ + const double coeff::efx = 1.28379167095512586316e-01; /* 0x3FC06EBA, 0x8214DB69 */ + const double coeff::efx8= 1.02703333676410069053e+00; /* 0x3FF06EBA, 0x8214DB69 */ + const double coeff::pp[] = + {1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */ + -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */ + -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */ + -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */ + -2.37630166566501626084e-05}; /* 0xBEF8EAD6, 0x120016AC */ + const double coeff::qq[] = + {0.0, 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */ + 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */ + 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */ + 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */ + -3.96022827877536812320e-06}; /* 0xBED09C43, 0x42A26120 */ + /* + * Coefficients for approximation to erf in [0.84375,1.25] + */ + const double coeff::pa[] = + {-2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */ + 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */ + -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */ + 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */ + -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */ + 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */ + -2.16637559486879084300e-03}; /* 0xBF61BF38, 0x0A96073F */ + const double coeff::qa[] = + {0.0, 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */ + 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */ + 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */ + 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */ + 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */ + 1.19844998467991074170e-02}; /* 0x3F888B54, 0x5735151D */ + /* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ + const double coeff::ra[] = + {-9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */ + -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */ + -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */ + -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */ + -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */ + -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */ + -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */ + -9.81432934416914548592e+00}; /* 0xC023A0EF, 0xC69AC25C */ + const double coeff::sa[] = + {0.0,1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */ + 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */ + 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */ + 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */ + 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */ + 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */ + 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */ + -6.04244152148580987438e-02}; /* 0xBFAEEFF2, 0xEE749A62 */ + /* + * Coefficients for approximation to erfc in [1/.35,28] + */ + const double coeff::rb[] = + {-9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */ + -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */ + -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */ + -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */ + -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */ + -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */ + -4.83519191608651397019e+02}; /* 0xC07E384E, 0x9BDC383F */ + const double coeff::sb[] = + {0.0,3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */ + 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */ + 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */ + 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */ + 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */ + 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */ + -2.24409524465858183362e+01}; /* 0xC03670E2, 0x42712D62 */ +#if 0 + template <> class coeff { + public: + static const float tiny; + static const float one_over_two; + static const float one; + static const float two; + static const float erx; + static const float efx; + static const float efx8; + static const float pp[5]; + static const float qq[6]; + static const float pa[7]; + static const float qa[7]; + static const float ra[8]; + static const float sa[9]; + static const float rb[7]; + static const float sb[8]; + }; + const float coeff::tiny = 1e-30; + const float coeff::one_over_two= 5.0000000000e-01; /* 0x3F000000 */ + const float coeff::one = 1.0000000000e+00; /* 0x3F800000 */ + const float coeff::two = 2.0000000000e+00; /* 0x40000000 */ + /* c = (float)0.84506291151 */ + const float coeff::erx = 8.4506291151e-01; /* 0x3f58560b */ + /* + * Coefficients for approximation to erf on [0,0.84375] + */ + const float coeff::efx = 1.2837916613e-01; /* 0x3e0375d4 */ + const float coeff::efx8= 1.0270333290e+00; /* 0x3f8375d4 */ + const float coeff::pp[] = + {1.2837916613e-01, /* 0x3e0375d4 */ + -3.2504209876e-01, /* 0xbea66beb */ + -2.8481749818e-02, /* 0xbce9528f */ + -5.7702702470e-03, /* 0xbbbd1489 */ + -2.3763017452e-05}; /* 0xb7c756b1 */ + const float coeff::qq[] = + {0.0, 3.9791721106e-01, /* 0x3ecbbbce */ + 6.5022252500e-02, /* 0x3d852a63 */ + 5.0813062117e-03, /* 0x3ba68116 */ + 1.3249473704e-04, /* 0x390aee49 */ + -3.9602282413e-06}; /* 0xb684e21a */ + /* + * Coefficients for approximation to erf in [0.84375,1.25] + */ + const float coeff::pa[] = + {-2.3621185683e-03, /* 0xbb1acdc6 */ + 4.1485610604e-01, /* 0x3ed46805 */ + -3.7220788002e-01, /* 0xbebe9208 */ + 3.1834661961e-01, /* 0x3ea2fe54 */ + -1.1089469492e-01, /* 0xbde31cc2 */ + 3.5478305072e-02, /* 0x3d1151b3 */ + -2.1663755178e-03}; /* 0xbb0df9c0 */ + const float coeff::qa[] = + {0.0, 1.0642088205e-01, /* 0x3dd9f331 */ + 5.4039794207e-01, /* 0x3f0a5785 */ + 7.1828655899e-02, /* 0x3d931ae7 */ + 1.2617121637e-01, /* 0x3e013307 */ + 1.3637083583e-02, /* 0x3c5f6e13 */ + 1.1984500103e-02}; /* 0x3c445aa3 */ + /* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ + const float coeff::ra[] = + {-9.8649440333e-03, /* 0xbc21a093 */ + -6.9385856390e-01, /* 0xbf31a0b7 */ + -1.0558626175e+01, /* 0xc128f022 */ + -6.2375331879e+01, /* 0xc2798057 */ + -1.6239666748e+02, /* 0xc322658c */ + -1.8460508728e+02, /* 0xc3389ae7 */ + -8.1287437439e+01, /* 0xc2a2932b */ + -9.8143291473e+00}; /* 0xc11d077e */ + const float coeff::sa[] = + {0.0, 1.9651271820e+01, /* 0x419d35ce */ + 1.3765776062e+02, /* 0x4309a863 */ + 4.3456588745e+02, /* 0x43d9486f */ + 6.4538726807e+02, /* 0x442158c9 */ + 4.2900814819e+02, /* 0x43d6810b */ + 1.0863500214e+02, /* 0x42d9451f */ + 6.5702495575e+00, /* 0x40d23f7c */ + -6.0424413532e-02}; /* 0xbd777f97 */ + /* + * Coefficients for approximation to erfc in [1/.35,28] + */ + const float coeff::rb[] = + {-9.8649431020e-03, /* 0xbc21a092 */ + -7.9928326607e-01, /* 0xbf4c9dd4 */ + -1.7757955551e+01, /* 0xc18e104b */ + -1.6063638306e+02, /* 0xc320a2ea */ + -6.3756646729e+02, /* 0xc41f6441 */ + -1.0250950928e+03, /* 0xc480230b */ + -4.8351919556e+02}; /* 0xc3f1c275 */ + const float coeff::sb[] = + {0.0, 3.0338060379e+01, /* 0x41f2b459 */ + 3.2579251099e+02, /* 0x43a2e571 */ + 1.5367296143e+03, /* 0x44c01759 */ + 3.1998581543e+03, /* 0x4547fdbb */ + 2.5530502930e+03, /* 0x451f90ce */ + 4.7452853394e+02, /* 0x43ed43a7 */ + -2.2440952301e+01}; /* 0xc1b38712 */ +#endif + template class erf_traits{ }; +#if 0 + template<> class erf_traits { + public: + static const uint32_t mask; + static const uint32_t segment[10]; + }; + const uint32_t erf_traits::mask = 0xfffff000; + const uint32_t erf_traits::segment[10] = + { + 0x7fffffff, + 0x7f800000, + 0x3f580000, + 0x31800000, + 0x04000000, + 0x3fa00000, + 0x40c00000, + 0x4036DB6E, + 31, + 0 + }; +#endif + template<> class erf_traits { + public: + static const uint64_t mask; + static const uint32_t segment[10]; + }; + const uint64_t erf_traits::mask = 0xffffffff00000000; + const uint32_t erf_traits::segment[10] = + { + 0x7fffffff, + 0x7ff00000, + 0x3feb0000, + 0x3e300000, + 0x00800000, + 0x3ff40000, + 0x40180000, + 0x4006DB6E, + 63, + 32 + }; + + template class erfc_traits{}; +#if 0 + template<> class erfc_traits{ + public: + static const uint32_t segment[11]; + }; + const uint32_t erfc_traits::segment[11] = + { + 0x7fffffff, + 0x7f800000, + 0x3f580000, + 0x23800000, + 0x3e800000, + 0x3fa00000, + 0x41e00000, + 0x4036DB6D, + 0x40c00000, + 31, + 0 + }; +#endif + template<> class erfc_traits{ + public: + static const uint32_t segment[11]; + }; + const uint32_t erfc_traits::segment[11] = + { + 0x7fffffff, + 0x7ff00000, + 0x3feb0000, + 0x3c700000, + 0x3fd00000, + 0x3ff40000, + 0x403c0000, + 0x4006DB6D, + 0x40180000, + 63, + 32 + }; + } // anonymous namespace +// + +/* erf_fixed(x) or erfc_fixed(x) :Input and Output is same width */ +//1. erf_fixed + /* + *erf(0) = 0 + *erf(2) ~ 1 + *erf(-2) ~ 1 + *erf(+infinity) = 1 but in std and hls =0 + */ + /* + * ============================================ + * x + * 2 |\ + * erf(x) = --------- | exp(-t*t)dt + * sqrt(pi) \| + * 0 + * ============================================ + */ +template +ap_fixed erf(ap_fixed x_fixed ) +{ + int F_ = W_ - I_; + + if (I_>33) return 0; + else if (F_>32) return 0; + + double x = x_fixed.to_double(); + int32_t hx; + uint32_t ix; + double R,S,P,Q,s,y,z,r; + //GET_HIGH_WORD(hx,x); + fp_struct fp_abs(x); + fp_abs.sign=0; + fp_struct fp_x(x); + ap_uint<32> tmp = fp_x.data()(erf_traits::segment[8],erf_traits::segment[9]); + hx = tmp.to_int(); + ix = hx & erf_traits::segment[0]; + + #if 0 + ///if(FP_SUBNORMAL == generic_fpclassify(x)) { + /// return 0; + ///} + #endif + if(fp_x.exp == 0x0 && fp_x.sign!= 0x0){ + return 0; + } + + if(ix>=erf_traits::segment[1]) { /* erf(nan)=nan */ + //i = ((uint32_t)hx>>31)<<1; + if(hx>0) + return ap_fixed((double)1.0 +coeff::one/x); /* erf(+-inf)=+-1 */ + else + return ap_fixed(coeff::one/x-(double)1.0); + } + + if(ix < erf_traits::segment[2]) { /* |x|<0.84375 */ + double r1,r2,s1,s2,s3,z2,z4; + if(ix < erf_traits::segment[3]) { /* |x|<2**-28 */ + if (ix < erf_traits::segment[2]) + return ap_fixed(((double)0.125)*((double)8.0*x+coeff::efx8*x)); /*avoid underflow */ + return ap_fixed(x + coeff::efx*x); + } + z = x*x; +#ifdef DO_NOT_USE_THIS + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = coeff::one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); +#else + r1 = coeff::pp[0]+z*coeff::pp[1]; z2=z*z; + r2 = coeff::pp[2]+z*coeff::pp[3]; z4=z2*z2; + s1 = coeff::one+z* coeff::qq[1]; + s2 = coeff::qq[2]+z*coeff::qq[3]; + s3 = coeff::qq[4]+z*coeff::qq[5]; + r = r1 + z2*r2 + z4*coeff::pp[4]; + s = s1 + z2*s2 + z4*s3; +#endif + y = r/s; + return ap_fixed(x + x*y); + } + if(ix < erf_traits::segment[5]) { /* 0.84375 <= |x| < 1.25 */ + double s2,s4,s6,P1,P2,P3,P4,Q1,Q2,Q3,Q4; + //s = generic_fabs_d(x)-coeff::one; + s = fp_abs.to_ieee()-coeff::one; +#ifdef DO_NOT_USE_THIS + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + Q = coeff::one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); +#else + P1 = coeff::pa[0]+s*coeff::pa[1]; s2=s*s; + Q1 = coeff::one+s*coeff::qa[1]; s4=s2*s2; + P2 = coeff::pa[2]+s*coeff::pa[3]; s6=s4*s2; + Q2 = coeff::qa[2]+s*coeff::qa[3]; + P3 = coeff::pa[4]+s*coeff::pa[5]; + Q3 = coeff::qa[4]+s*coeff::qa[5]; + P4 = coeff::pa[6]; + Q4 = coeff::qa[6]; + P = P1 + s2*P2 + s4*P3 + s6*P4; + Q = Q1 + s2*Q2 + s4*Q3 + s6*Q4; +#endif + if(hx>=0) return ap_fixed(coeff::erx + P/Q); + else return ap_fixed(-coeff::erx - P/Q); + } + if (ix >= erf_traits::segment[6]) { /* inf>|x|>=6 */ + if(hx>=0) return ap_fixed(coeff::one-coeff::tiny); + else return ap_fixed(coeff::tiny-coeff::one); + } + x = fp_abs.to_ieee(); + s = coeff::one/(x*x); + if(ix< erf_traits::segment[7]) { /* |x| < 1/0.35 */ +#ifdef DO_NOT_USE_THIS + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))); + S=coeff::one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))); +#else + double R1,R2,R3,R4,S1,S2,S3,S4,s2,s4,s6,s8; + R1 = coeff::ra[0]+s*coeff::ra[1];s2 = s*s; + S1 = coeff::one+ s*coeff::sa[1]; s4 = s2*s2; + R2 = coeff::ra[2]+s*coeff::ra[3];s6 = s4*s2; + S2 = coeff::sa[2]+s*coeff::sa[3];s8 = s4*s4; + R3 = coeff::ra[4]+s*coeff::ra[5]; + S3 = coeff::sa[4]+s*coeff::sa[5]; + R4 = coeff::ra[6]+s*coeff::ra[7]; + S4 = coeff::sa[6]+s*coeff::sa[7]; + R = R1 + s2*R2 + s4*R3 + s6*R4; + S = S1 + s2*S2 + s4*S3 + s6*S4 + s8*coeff::sa[8]; +#endif + } else { /* |x| >= 1/0.35 */ +#ifdef DO_NOT_USE_THIS + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))); + S=coeff::one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))); +#else + double R1,R2,R3,S1,S2,S3,S4,s2,s4,s6; + R1 = coeff::rb[0]+s*coeff::rb[1];s2 = s*s; + S1 = coeff::one+ s*coeff::sb[1]; s4 = s2*s2; + R2 = coeff::rb[2]+s*coeff::rb[3];s6 = s4*s2; + S2 = coeff::sb[2]+s*coeff::sb[3]; + R3 = coeff::rb[4]+s*coeff::rb[5]; + S3 = coeff::sb[4]+s*coeff::sb[5]; + S4 = coeff::sb[6]+s*coeff::sb[7]; + R = R1 + s2*R2 + s4*R3 + s6*coeff::rb[6]; + S = S1 + s2*S2 + s4*S3 + s6*S4; +#endif + } + z = x; + //SET_LOW_WORD(z,0); + fp_struct fp_z(z); + ap_uint::Value> data = fp_z.data() & erf_traits::mask; + fp_struct fp_z_new(data); + z = fp_z_new.to_ieee(); + //r = __ieee754_exp(-z*z-0.5625)*__ieee754_exp((z-x)*(z+x)+R/S); + //r = exp_reduce_::exp(-z*z-(double)0.5625)*exp_reduce_::exp((z-x)*(z+x)+R/S); + ap_fixed r_fixed = exp_reduce::exp(ap_fixed(-z*z-(double)0.5625))*exp_reduce::exp(ap_fixed((z-x)*(z+x)+R/S)); + r = r_fixed.to_double(); + //r = exp_reduce_::exp(-x*x-(T)0.5625+R/S); // also work + if(hx>=0) return ap_fixed(coeff::one-r/x); + else return ap_fixed(r/x-coeff::one); + } + + +template +ap_ufixed erf(ap_ufixed x) { + ap_fixed xs = x; + return erf(xs); +} + +template +ap_int erf(ap_int x) { + ap_fixed xs = x; + return erf(xs); +} + +template +ap_uint erf(ap_uint x) { + ap_fixed xs = x; + return erf(xs); +} + + +//2. erfc_fixed + /* + * ============================================ + * erfc(x) = 1 - erf(x) + * ============================================ + */ +template +ap_fixed erfc(ap_fixed x_fixed) +{ + #pragma HLS PIPELINE II=1 + int F_ = W_ - I_; + + if (I_>33) return 0; + else if (F_>32) return 0; + + double x = x_fixed.to_double(); + int32_t hx; + uint32_t ix; + double R,S,P,Q,s,y,z,r; + //GET_HIGH_WORD(hx,x); + fp_struct fp_abs(x); + fp_abs.sign=0; + fp_struct fp_x(x); + ap_uint<32> tmp = fp_x.data()(erfc_traits::segment[9],erfc_traits::segment[10]); + hx = tmp.to_int(); + ix = hx & erfc_traits::segment[0]; + if(ix>=erfc_traits::segment[1]) { /* erfc(nan)=nan */ + /* erfc(+-inf)=0,2 */ + if(hx>0) + return ap_fixed(coeff::one/x); + else + return ap_fixed(coeff::two + coeff::one/x); + //return (T)(((uint32_t)hx>>31)<<1)+coeff::one/x; + } + + if(ix < erfc_traits::segment[2]) { /* |x|<0.84375 */ + double r1,r2,s1,s2,s3,z2,z4; + if(ix < erfc_traits::segment[3]) /* |x|<2**-56 */ + return ap_fixed(coeff::one-x); + z = x*x; +#ifdef DO_NOT_USE_THIS + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = coeff::one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); +#else + r1 = coeff::pp[0]+z*coeff::pp[1]; z2=z*z; + r2 = coeff::pp[2]+z*coeff::pp[3]; z4=z2*z2; + s1 = coeff::one+z*coeff::qq[1]; + s2 = coeff::qq[2]+z*coeff::qq[3]; + s3 = coeff::qq[4]+z*coeff::qq[5]; + r = r1 + z2*r2 + z4*coeff::pp[4]; + s = s1 + z2*s2 + z4*s3; +#endif + y = r/s; + if(ix < erfc_traits::segment[4]) { /* x<1/4 */ + return ap_fixed(coeff::one-(x+x*y)); + } else { + r = x*y; + r += (x-coeff::one_over_two); + return ap_fixed(coeff::one_over_two - r) ; + } + } + if(ix < erfc_traits::segment[5]) { /* 0.84375 <= |x| < 1.25 */ + double s2,s4,s6,P1,P2,P3,P4,Q1,Q2,Q3,Q4; + s =fp_abs.to_ieee()-coeff::one; +#ifdef DO_NOT_USE_THIS + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + Q = coeff::one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); +#else + P1 = coeff::pa[0]+s*coeff::pa[1]; s2=s*s; + Q1 = coeff::one+s*coeff::qa[1]; s4=s2*s2; + P2 = coeff::pa[2]+s*coeff::pa[3]; s6=s4*s2; + Q2 = coeff::qa[2]+s*coeff::qa[3]; + P3 = coeff::pa[4]+s*coeff::pa[5]; + Q3 = coeff::qa[4]+s*coeff::qa[5]; + P4 = coeff::pa[6]; + Q4 = coeff::qa[6]; + P = P1 + s2*P2 + s4*P3 + s6*P4; + Q = Q1 + s2*Q2 + s4*Q3 + s6*Q4; +#endif + if(hx>=0) { + z = coeff::one-coeff::erx; + return ap_fixed(z - P/Q); + } else { + z = coeff::erx+P/Q; return ap_fixed(coeff::one+z); + } + } + if (ix < erfc_traits::segment[6]) { /* |x|<28 */ + x = fp_abs.to_ieee(); + s = coeff::one/(x*x); + if(ix< erfc_traits::segment[7]) { /* |x| < 1/.35 ~ 2.857143*/ +#ifdef DO_NOT_USE_THIS + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))); + S=coeff::one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))); +#else + double R1,R2,R3,R4,S1,S2,S3,S4,s2,s4,s6,s8; + R1 = coeff::ra[0]+s*coeff::ra[1];s2 = s*s; + S1 = coeff::one+s*coeff::sa[1]; s4 = s2*s2; + R2 = coeff::ra[2]+s*coeff::ra[3];s6 = s4*s2; + S2 = coeff::sa[2]+s*coeff::sa[3];s8 = s4*s4; + R3 = coeff::ra[4]+s*coeff::ra[5]; + S3 = coeff::sa[4]+s*coeff::sa[5]; + R4 = coeff::ra[6]+s*coeff::ra[7]; + S4 = coeff::sa[6]+s*coeff::sa[7]; + R = R1 + s2*R2 + s4*R3 + s6*R4; + S = S1 + s2*S2 + s4*S3 + s6*S4 + s8*coeff::sa[8]; +#endif + } else { /* |x| >= 1/.35 ~ 2.857143 */ + double R1,R2,R3,S1,S2,S3,S4,s2,s4,s6; + if(hx<0&&ix>=erfc_traits::segment[8]) return ap_fixed(coeff::two-coeff::tiny);/* x < -6 */ +#ifdef DO_NOT_USE_THIS + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))); + S=coeff::one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))); +#else + R1 = coeff::rb[0]+s*coeff::rb[1];s2 = s*s; + S1 = coeff::one+s*coeff::sb[1]; s4 = s2*s2; + R2 = coeff::rb[2]+s*coeff::rb[3];s6 = s4*s2; + S2 = coeff::sb[2]+s*coeff::sb[3]; + R3 = coeff::rb[4]+s*coeff::rb[5]; + S3 = coeff::sb[4]+s*coeff::sb[5]; + S4 = coeff::sb[6]+s*coeff::sb[7]; + R = R1 + s2*R2 + s4*R3 + s6*coeff::rb[6]; + S = S1 + s2*S2 + s4*S3 + s6*S4; +#endif + } + z = x; + //SET_LOW_WORD(z,0); + fp_struct fp_z(z); + ap_uint::Value> data = fp_z.data() & erf_traits::mask; + fp_struct fp_z_new(data); + z = fp_z_new.to_ieee(); + //r = __ieee754_exp(-z*z-0.5625)* + // __ieee754_exp((z-x)*(z+x)+R/S); + ap_fixed r_fixed = exp_reduce::exp((ap_fixed)(-z*z-(double)0.5625))*exp_reduce::exp((ap_fixed)((z-x)*(z+x)+R/S)); + double r = r_fixed.to_double(); + double r_x = r/x; + if(hx>0) { + #if 0 + if(FP_SUBNORMAL == generic_fpclassify(r_x)) { + return 0; + } + #endif + if(fp_x.exp == 0x0 && fp_x.sign!= 0x0){ + return 0; + } + return ap_fixed(r_x); + } else + return ap_fixed(coeff::two-r_x); + } else { + if(hx>0) return ap_fixed(coeff::tiny*coeff::tiny); + else return ap_fixed(coeff::two-coeff::tiny); + } + +} +template +ap_ufixed erfc(ap_ufixed x) { + ap_fixed xs = x; + return erfc(xs); +} + +template +ap_int erfc(ap_int x) { + ap_fixed xs = x; + return erfc(xs); +} + +template +ap_uint erfc(ap_uint x) { + ap_fixed xs = x; + return erfc(xs); +} + +}//erf_erfc_fixed + +#endif + + diff --git a/vitis/v2020_1/hls_exp_apfixed.h b/vitis/v2020_1/hls_exp_apfixed.h new file mode 100644 index 00000000..f8d33ce2 --- /dev/null +++ b/vitis/v2020_1/hls_exp_apfixed.h @@ -0,0 +1,3433 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_EXP_APFIXED_H_ +#define _X_HLS_EXP_APFIXED_H_ +#include "ap_fixed.h" + +namespace exp_reduce { +/* exp(x):Input and Output is same width */ +template +ap_fixed exp(ap_fixed x) +{ +#pragma HLS pipeline + + int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + // I_s_ is the number of integer bits we need to calculate + // I_s_ = ceil( ln2 * max ( I_-1 , F_ ) ) + // I_s_ = [1..6] + int I_s_; + int M_ = (I_-1>F_) ? (I_-1) : F_; + if (M_==1) I_s_ = 1; + else if (M_==2) I_s_ = 2; + else if (M_<6) I_s_ = 3; + else if (M_<12) I_s_ = 4; + else if (M_<24) I_s_ = 5; + else I_s_ = 6; + + ap_fixed r; + if (I_s_==1) { // I_s_ = 1, M_ = 1, I_ <= 2, F_ <= 1, W <= 3 + ap_fixed<3,2> x_l = x; + ap_ufixed<2,1> y = 0; + if (x_l[2]!=x_l[1]) { // overflow + if (!x_l[2]) y = "0x1.8p0"; + } else { + if (!x_l[2]) y[1] = 1; + if (x_l[2]|x_l[0]) y[0] = 1; + } + if (I_<2) { // overflow + if (y[1]) { + y[1] = 0; + y[0] = 1; + } + } + r = y; + } else if (I_s_==2) { // I_s_ = 2, M_ = 2, I_ <= 3, F_ <= 2, W <= 5 + ap_fixed<5,3> x_l = x; + ap_ufixed<4,2> y = 0; + ap_fixed<2,2> x_l_int; + x_l_int(1,0) = x_l(3,2); + ap_ufixed<2,0> x_l_fract; + x_l_fract(1,0) = x_l(1,0); + //if ((x_l[4]!=x_l[3])||(x_l>="0x1.8p0")) { // overflow + if ((x_l[4]!=x_l[3])||((x_l_int==1)&&(x_l_fract>=ap_ufixed<2,0>("0x0.8p0")))) { // overflow + if (!x_l[4]) y = "0x3.cp0"; + } else { + if (!x_l[4]&((x_l[1]&x_l[0])|x_l[2])) y[3] = 1; + if (!x_l[4]&((!x_l[2]&!x_l[0])|(!x_l[1]&x_l[0]))) y[2] = 1; + if ((!x_l[4]&x_l[1]&!x_l[0])|(!x_l[4]&x_l[2])|(x_l[2]&x_l[0])|(x_l[2]&x_l[1])) y[1] = 1; + if ((!x_l[2]&!x_l[1]&x_l[0])|(!x_l[2]&x_l[1]&!x_l[0])|(x_l[2]&!x_l[1]&!x_l[0])|(x_l[2]&x_l[1]&x_l[0])|(x_l[4]&!x_l[3])) y[0] = 1; + } + if (I_<3) { // overflow + bool overf = 0; + #pragma unroll + for (int j = 3; j >= I_+1; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 3; j >= I_+1; j--) + y[j] = 0; + #pragma unroll + for (int j = I_; j >= 0; j--) + y[j] = 1; + } + } + r = y; + } else if (I_s_==3) { // I_s_ = 3, M_ = 3..5, I_ <= 6, F_ <= 5, W <= 11 + ap_fixed<11,6> x_l = x; + ap_ufixed<10,5> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(7,5); + ap_ufixed<5,0> x_l_fract; + x_l_fract(4,0) = x_l(4,0); + //if ((x_l[10]!=x_l[9])||(x_l[10]!=x_l[8])||(x_l[10]!=x_l[7])||(x_l>"0x3.7p0")) { // overflow + if ((x_l[10]!=x_l[9])||(x_l[10]!=x_l[8])||(x_l[10]!=x_l[7])||((x_l_int==3)&&(x_l_fract>ap_fixed<5,0>("0x0.7p0")))) { // overflow + if (!x_l[10]) y = "0x1f.f8p0"; + } else { +// ap_uint<6> x_msb_ind; +// x_msb_ind[5] = x_l[10]; +// x_msb_ind(4,0) = x_l(6,2); +// ap_ufixed<2,-3> x_lsb = x_l; + + ap_uint<4> x_msb_ind; + x_msb_ind[3] = x_l[10]; + x_msb_ind(2,0) = x_l(6,4); + ap_uint<4> x_lsb_ind; + x_lsb_ind(3,0) = x_l(3,0); + ap_ufixed<4,-1> x_lsb = x_l; + +// const ap_ufixed<11,5> exp_x_msb_table[64] = { +//// 0, 0, 0, 0, 29.21875, 25.796875, 22.765625, 20.078125, +//// 17.71875, 15.640625, 13.796875, 12.1875, 10.75, 9.484375, 8.375, 7.390625, +//// 6.515625, 5.75, 5.078125, 4.484375, 3.953125, 3.484375, 3.078125, 2.71875, +//// 2.40625, 2.109375, 1.875, 1.65625, 1.453125, 1.28125, 1.140625, 1, +//// 0.015625, 0.015625, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.046875, +//// 0.046875, 0.0625, 0.0625, 0.078125, 0.078125, 0.09375, 0.109375, 0.125, +//// 0.140625, 0.15625, 0.171875, 0.203125, 0.21875, 0.25, 0.28125, 0.328125, +//// 0.375, 0.421875, 0.46875, 0.53125, 0.609375, 0.6875, 0.78125, 0.875, +// 1, 1.140625, 1.28125, 1.453125, 1.65625, 1.875, 2.109375, 2.40625, +// 2.71875, 3.078125, 3.484375, 3.953125, 4.484375, 5.078125, 5.75, 6.515625, +// 7.390625, 8.375, 9.484375, 10.75, 12.1875, 13.796875, 15.640625, 17.71875, +// 20.078125, 22.765625, 25.796875, 29.21875, 33.109375, 37.53125, 42.515625, 48.1875, +// 0.015625, 0.015625, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.046875, +// 0.046875, 0.0625, 0.0625, 0.078125, 0.078125, 0.09375, 0.109375, 0.125, +// 0.140625, 0.15625, 0.171875, 0.203125, 0.21875, 0.25, 0.28125, 0.328125, +// 0.375, 0.421875, 0.46875, 0.53125, 0.609375, 0.6875, 0.78125, 0.875, +// }; + + const static ap_ufixed<12,0> exp_x_lsb_m_1_table[16] = { + "0x0.0p0", "0x0.082p0", "0x0.108p0", "0x0.193p0", "0x0.221p0", "0x0.2b5p0", "0x0.34dp0", "0x0.3eap0", + "0x0.48bp0", "0x0.532p0", "0x0.5dfp0", "0x0.69p0", "0x0.748p0", "0x0.805p0", "0x0.8c8p0", "0x0.991p0", + }; + ap_ufixed<12, 0> exp_x_lsb_m_1 = exp_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<12,5> exp_x_msb_table[16] = { + "0x1.0p0", "0x1.a6p0", "0x2.b8p0", "0x4.7cp0", "0x7.64p0", "0xc.2ep0", "0x14.16p0", "0x21.1ep0", + "0x0.04p0", "0x0.08p0", "0x0.0cp0", "0x0.16p0", "0x0.22p0", "0x0.3ap0", "0x0.5ep0", "0x0.9cp0", + }; + ap_ufixed<12,5> exp_x_msb = exp_x_msb_table[x_msb_ind]; + ap_ufixed<24,5> y_lo = exp_x_msb * exp_x_lsb_m_1; + ap_ufixed<12,5> y_lo_s = y_lo; + ap_ufixed<12,5> y_l = y_lo_s + exp_x_msb; + y = y_l; + } + if (I_<6) { // overflow + bool overf = 0; + #pragma unroll + for (int j = 9; j >= I_+4; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 9; j >= I_+4; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+3; j >= 0; j--) + y[j] = 1; + } + } + r = y; + } else if (I_s_==4) { // I_s_ = 4, M_ = 6..11, I_ <= 12, F_ <= 11, W <= 23 + ap_fixed<23,12> x_l = x; + ap_ufixed<22,11> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(14,11); + ap_ufixed<11,0> x_l_fract; + x_l_fract(10,0) = x_l(10,0); + bool overf = 0; + #pragma unroll + for (int j = 14; j < 22; j++) + if (x_l[22]!=x_l[j]) + overf = 1; + //if (overf||(x_l>"0x7.ap0")) { // overflow + if (overf||((x_l_int==7)&&(x_l_fract>ap_ufixed<11,0>("0x0.ap0")))) { // overflow + if (!x_l[22]) { + #pragma unroll + for (int j = 0; j < 22; j++) y[j] = 1; + } + } else { + ap_uint<5> x_msb_ind_1; + x_msb_ind_1[4] = x_l[22]; + x_msb_ind_1(3,0) = x_l(13,10); + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(9,5); + ap_ufixed<5,-1> x_msb_2 = x_l; + ap_uint<5> x_lsb_ind; + x_lsb_ind(4,0) = x_l(4,0); + //ap_ufixed<5,-6> x_lsb = x_l; + + const static ap_ufixed<11,-13> f_x_lsb_table[32] = { + "0x0.0p0", "0x0.000002p0", "0x0.000008p0", "0x0.000012p0", + "0x0.00002p0", "0x0.000032p0", "0x0.000048p0", "0x0.000062p0", + "0x0.00008p0", "0x0.0000a2p0", "0x0.0000c9p0", "0x0.0000f3p0", + "0x0.000121p0", "0x0.000153p0", "0x0.000189p0", "0x0.0001c3p0", + "0x0.000202p0", "0x0.000244p0", "0x0.00028ap0", "0x0.0002d4p0", + "0x0.000323p0", "0x0.000375p0", "0x0.0003ccp0", "0x0.000426p0", + "0x0.000485p0", "0x0.0004e7p0", "0x0.00054ep0", "0x0.0005b9p0", + "0x0.000627p0", "0x0.00069ap0", "0x0.000711p0", "0x0.00078cp0", + }; + ap_ufixed<11,-13> f_x_lsb = f_x_lsb_table[x_lsb_ind]; + ap_ufixed<18, -6> exp_x_lsb_m_1 = 0; + exp_x_lsb_m_1(17,13) = x_lsb_ind(4,0); + exp_x_lsb_m_1(10,0) = f_x_lsb(10,0); + + const static ap_ufixed<25,0> exp_x_msb_2_m_1_table[32] = { + "0x0.0000000p0", "0x0.04080a8p0", "0x0.0820560p0", "0x0.0c49238p0", + "0x0.1082b58p0", "0x0.14cd500p0", "0x0.1929370p0", "0x0.1d96b10p0", + "0x0.2216048p0", "0x0.26a7790p0", "0x0.2b4b588p0", "0x0.3001ed0p0", + "0x0.34cb818p0", "0x0.39a8628p0", "0x0.3e98de8p0", "0x0.439d440p0", + "0x0.48b5e40p0", "0x0.4de30f0p0", "0x0.5325180p0", "0x0.587c540p0", + "0x0.5de9178p0", "0x0.636bb98p0", "0x0.6904930p0", "0x0.6eb3fc8p0", + "0x0.747a510p0", "0x0.7a57ee0p0", "0x0.804d300p0", "0x0.865a778p0", + "0x0.8c80248p0", "0x0.92be998p0", "0x0.99163b0p0", "0x0.9f876e8p0", + }; + ap_ufixed<25, 0> exp_x_msb_2_m_1 = exp_x_msb_2_m_1_table[x_msb_ind_2]; + + ap_ufixed<43,-6> f_x_msb_2_lsb = exp_x_msb_2_m_1 * exp_x_lsb_m_1; + ap_ufixed<19,-6> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<25, 0> exp_x_msb_2_lsb_m_1 = f_x_msb_2_lsb_s + exp_x_lsb_m_1 + exp_x_msb_2_m_1; + + const static ap_ufixed<25,11> exp_x_msb_1_table[32] = { + "0x1.0000p0", "0x1.a614p0", "0x2.b7e0p0", "0x4.7b50p0", + "0x7.6398p0", "0xc.2eb8p0", "0x14.15e4p0", "0x21.1d90p0", + "0x36.9920p0", "0x5a.0464p0", "0x94.69c4p0", "0xf4.b124p0", + "0x193.6dc4p0", "0x299.2444p0", "0x448.a218p0", "0x710.0adcp0", + "0x0.0014p0", "0x0.0024p0", "0x0.003cp0", "0x0.0064p0", + "0x0.00a4p0", "0x0.010cp0", "0x0.01b8p0", "0x0.02d8p0", + "0x0.04b0p0", "0x0.07bcp0", "0x0.0cc0p0", "0x0.1504p0", + "0x0.22a4p0", "0x0.3920p0", "0x0.5e2cp0", "0x0.9b44p0", + }; + ap_ufixed<25,11> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<50,11> y_lo = exp_x_msb_1 * exp_x_msb_2_lsb_m_1; + ap_ufixed<25,11> y_lo_s = y_lo; + ap_ufixed<25,11> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + if (I_<12) { // overflow + bool overf = 0; + #pragma unroll + for (int j = 21; j >= I_+10; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 21; j >= I_+10; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+9; j >= 0; j--) + y[j] = 1; + } + } + r = y; + } else if (I_s_==5) { // I_s_ = 5, M_ = 12..23, I_ <= 24, F_ <= 23, W <= 47 + ap_fixed<47,24> x_l = x; + ap_ufixed<46,23> y = 0; + ap_fixed<5,5> x_l_int; + x_l_int(4,0) = x_l(27,23); + ap_ufixed<23,0> x_l_fract; + x_l_fract(22,0) = x_l(22,0); + bool overf = 0; + #pragma unroll + for (int j = 27; j < 46; j++) + if (x_l[46]!=x_l[j]) + overf = 1; + //if (overf||(x_l>="0xf.f14028p0")) { // overflow + if (overf||((x_l_int==15)&&(x_l_fract>=ap_ufixed<23,0>("0x0.f14028p0")))) { // overflow + if (!x_l[46]) { + #pragma unroll + for (int j = 0; j < 46; j++) y[j] = 1; + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[46]; + x_msb_ind_1(6,0) = x_l(26,20); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(19,12); + ap_uint<5> x_msb_ind_3; + x_msb_ind_3(4,0) = x_l(11,7); + ap_uint<3> x_msb_ind_4; + x_msb_ind_4(2,0) = x_l(6,4); + ap_uint<4> x_lsb_ind; + x_lsb_ind(3,0) = x_l(3,0); + + ap_ufixed<8, -3> x_msb_2 = x_l; + ap_ufixed<5,-11> x_msb_3 = x_l; + ap_ufixed<3,-16> x_msb_4 = x_l; + ap_ufixed<4,-19> x_lsb = x_l; + + const static ap_ufixed< 6,-33> f_x_msb_4_h_table[8] = { +"0x0.0000000000p0", "0x0.0000000002p0", "0x0.0000000008p0", "0x0.0000000012p0", +"0x0.0000000020p0", "0x0.0000000032p0", "0x0.0000000048p0", "0x0.0000000062p0", + }; + const static ap_ufixed< 7,-51> f_x_msb_4_l_table[8] = { +"0x0.000000000000000p0", "0x0.000000000000000p0", "0x0.00000000000000cp0", "0x0.000000000000024p0", +"0x0.000000000000054p0", "0x0.0000000000000a8p0", "0x0.000000000000120p0", "0x0.0000000000001c8p0", + }; + ap_ufixed< 6,-33> f_x_msb_4_h = f_x_msb_4_h_table[x_msb_ind_4]; + ap_ufixed< 7,-51> f_x_msb_4_l = f_x_msb_4_l_table[x_msb_ind_4]; + + const static ap_ufixed< 8,-39> f_x_lsb_table[16] = { +"0x0.000000000000p0", "0x0.000000000002p0", "0x0.000000000008p0", "0x0.000000000012p0", +"0x0.000000000020p0", "0x0.000000000032p0", "0x0.000000000048p0", "0x0.000000000062p0", +"0x0.000000000080p0", "0x0.0000000000a2p0", "0x0.0000000000c8p0", "0x0.0000000000f2p0", +"0x0.000000000120p0", "0x0.000000000152p0", "0x0.000000000188p0", "0x0.0000000001c2p0", + }; + ap_ufixed< 8,-39> f_x_lsb = f_x_lsb_table[x_lsb_ind]; + + ap_ufixed< 7,-35> f_x_msb_4_lsb = x_msb_4 * x_lsb; + + ap_ufixed<10,-32> exp_x_msb_4_lsb_m_1_m = 0; + exp_x_msb_4_lsb_m_1_m(8,3) = f_x_msb_4_h(5,0); + exp_x_msb_4_lsb_m_1_m(2,0) = f_x_lsb(7,5); + exp_x_msb_4_lsb_m_1_m = exp_x_msb_4_lsb_m_1_m + f_x_msb_4_lsb; + + ap_ufixed<42,-16> exp_x_msb_4_lsb_m_1 = 0; + exp_x_msb_4_lsb_m_1(41,35) = x_l(6,0); + exp_x_msb_4_lsb_m_1(25,16) = exp_x_msb_4_lsb_m_1_m(9,0); + exp_x_msb_4_lsb_m_1(15,11) = f_x_lsb(4,0); + exp_x_msb_4_lsb_m_1( 6, 0) = f_x_msb_4_l(6,0); + + + const static ap_ufixed<32,-23> f_x_msb_3_table[32] = { +"0x0.00000000000000p0", "0x0.0000000080002ap0", "0x0.00000002000156p0", "0x0.00000004800480p0", +"0x0.00000008000aaap0", "0x0.0000000c8014d6p0", "0x0.00000012002400p0", "0x0.0000001880392cp0", +"0x0.00000020005556p0", "0x0.00000028807982p0", "0x0.0000003200a6acp0", "0x0.0000003c80ddd8p0", +"0x0.00000048012004p0", "0x0.00000054816e30p0", "0x0.0000006201c95cp0", "0x0.00000070823288p0", +"0x0.0000008002aab6p0", "0x0.000000908332e2p0", "0x0.000000a203cc12p0", "0x0.000000b4847740p0", +"0x0.000000c8053570p0", "0x0.000000dc8607a0p0", "0x0.000000f206eed0p0", "0x0.0000010887ec02p0", +"0x0.00000120090036p0", "0x0.000001388a2c6ap0", "0x0.000001520b71a0p0", "0x0.0000016c8cd0d6p0", +"0x0.000001880e4b0ep0", "0x0.000001a48fe148p0", "0x0.000001c2119484p0", "0x0.000001e09365c0p0", + }; + + ap_ufixed<32,-23> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<44,-11> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(43,39) = x_msb_3(4,0); + exp_x_msb_3_m_1(31, 0) = f_x_msb_3(31,0); + + ap_ufixed<86,-27> f_x_msb_3_4_lsb = exp_x_msb_3_m_1 * exp_x_msb_4_lsb_m_1; + ap_ufixed<31,-27> f_x_msb_3_4_lsb_s = f_x_msb_3_4_lsb; + ap_ufixed<48,-10> exp_x_msb_3_4_lsb_m_1 = f_x_msb_3_4_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_lsb_m_1; + + + const static ap_ufixed<46,-6> f_x_msb_2_table[256] = { +"0x0", "0x0.0000020015560p0", "0x0.00000800AAB55p0", "0x0.0000120240360p0", +"0x0.0000200556001p0", "0x0.0000320A6C4B8p0", "0x0.0000481203608p0", "0x0.0000621C9B971p0", +"0x0.0000802AB5577p0", "0x0.0000A23CD119Dp0", "0x0.0000C8536F668p0", "0x0.0000F26F10D5Dp0", +"0x0.0001209036103p0", "0x0.000152B75FCE3p0", "0x0.000188E50ED86p0", "0x0.0001C319C4077p0", +"0x0.0002015600445p0", "0x0.0002439A4487Ep0", "0x0.000289E711DB3p0", "0x0.0002D43CE9577p0", +"0x0.0003229C4C260p0", "0x0.00037505BB805p0", "0x0.0003CB79B8B01p0", "0x0.000425F8C50F2p0", +"0x0.0004848362076p0", "0x0.0004E71A11131p0", "0x0.00054DBD53BC8p0", "0x0.0005B86DAB9E3p0", +"0x0.0006272B9A630p0", "0x0.000699F7A1C5Dp0", "0x0.000710D24391Ep0", "0x0.00078BBC01A29p0", +"0x0.00080AB55DE39p0", "0x0.00088DBEDA50Bp0", "0x0.000914D8F8F63p0", "0x0.0009A0043BF07p0", +"0x0.000A2F41256C2p0", "0x0.000AC29037A63p0", "0x0.000B59F1F4EBDp0", "0x0.000BF566DF9AAp0", +"0x0.000C94EF7A206p0", "0x0.000D388C46FB4p0", "0x0.000DE03DC8B9Bp0", "0x0.000E8C0481FA7p0", +"0x0.000F3BE0F56CAp0", "0x0.000FEFD3A5CFAp0", "0x0.0010A7DD15F36p0", "0x0.001163FDC8B7Fp0", +"0x0.00122436410DDp0", "0x0.0012E88701F5Ep0", "0x0.0013B0F08E817p0", "0x0.00147D7369D22p0", +"0x0.00154E101719Fp0", "0x0.001622C7199B7p0", "0x0.0016FB98F4A96p0", "0x0.0017D8862BA72p0", +"0x0.0018B98F42084p0", "0x0.00199EB4BB511p0", "0x0.001A87F71B161p0", "0x0.001B7556E4FC4p0", +"0x0.001C66D49CB93p0", "0x0.001D5C70C612Dp0", "0x0.001E562BE4DFAp0", "0x0.001F54067D067p0", +"0x0.00205601127ECp0", "0x0.00215C1C29507p0", "0x0.0022665845940p0", "0x0.002374B5EB724p0", +"0x0.002487359F24Cp0", "0x0.00259DD7E4F57p0", "0x0.0026B89D413EFp0", "0x0.0027D786386C4p0", +"0x0.0028FA934EF90p0", "0x0.002A21C509717p0", "0x0.002B4D1BEC726p0", "0x0.002C7C987CA92p0", +"0x0.002DB03B3ED3Ap0", "0x0.002EE804B7C07p0", "0x0.003023F56C4ECp0", "0x0.0031640DE16E3p0", +"0x0.0032A84E9C1F5p0", "0x0.0033F0B821730p0", "0x0.00353D4AF68B0p0", "0x0.00368E07A0999p0", +"0x0.0037E2EEA4E19p0", "0x0.00393C0088B6Cp0", "0x0.003A993DD17D5p0", "0x0.003BFAA704AA3p0", +"0x0.003D603CA7C32p0", "0x0.003EC9FF405E6p0", "0x0.004037EF54230p0", "0x0.0041AA0D68C8Cp0", +"0x0.0043205A04182p0", "0x0.00449AD5ABEA5p0", "0x0.00461980E6294p0", "0x0.00479C5C38CF9p0", +"0x0.0049236829E8Bp0", "0x0.004AAEA53F90Ep0", "0x0.004C3E13FFF51p0", "0x0.004DD1B4F152Fp0", +"0x0.004F698899F90p0", "0x0.0051058F8046Ap0", "0x0.0052A5CA2AABFp0", "0x0.00544A391FA9Cp0", +"0x0.0055F2DCE5D1Ep0", "0x0.00579FB603C6Ep0", "0x0.005950C5003C2p0", "0x0.005B060A61F5Dp0", +"0x0.005CBF86AFC91p0", "0x0.005E7D3A709BEp0", "0x0.00603F262B650p0", "0x0.0062054A672C2p0", +"0x0.0063CFA7AB09Dp0", "0x0.00659E3E7E278p0", "0x0.0067710F67BFAp0", "0x0.0069481AEF1D5p0", +"0x0.006B23619B9CFp0", "0x0.006D02E3F4AB7p0", "0x0.006EE6A281C6Fp0", "0x0.0070CE9DCA7E6p0", +"0x0.0072BAD65671Bp0", "0x0.0074AB4CAD51Cp0", "0x0.0076A00156E07p0", "0x0.007898F4DAF09p0", +"0x0.007A9627C165Fp0", "0x0.007C979A92356p0", "0x0.007E9D4DD564Ap0", "0x0.0080A742130A8p0", +"0x0.0082B577D34EDp0", "0x0.0084C7EF9E6A7p0", "0x0.0086DEA9FCA73p0", "0x0.0088F9A776601p0", +"0x0.008B18E894010p0", "0x0.008D3C6DDE06Fp0", "0x0.008F6437DD000p0", "0x0.00919047198B6p0", +"0x0.0093C09C1C595p0", "0x0.0095F5376E2B2p0", "0x0.00982E1997D33p0", "0x0.009A6B4322352p0", +"0x0.009CACB496458p0", "0x0.009EF26E7D0A2p0", "0x0.00A13C715F99Ep0", "0x0.00A38ABDC71CEp0", +"0x0.00A5DD543CCC4p0", "0x0.00A8343549F26p0", "0x0.00AA8F6177EADp0", "0x0.00ACEED950222p0", +"0x0.00AF529D5C165p0", "0x0.00B1BAAE25566p0", "0x0.00B4270C3582Ap0", "0x0.00B697B8164C7p0", +"0x0.00B90CB25176Ap0", "0x0.00BB85FB70D50p0", "0x0.00BE0393FE4CCp0", "0x0.00C0857C83D44p0", +"0x0.00C30BB58B732p0", "0x0.00C5963F9F424p0", "0x0.00C8251B496BEp0", "0x0.00CAB849142B5p0", +"0x0.00CD4FC989CD6p0", "0x0.00CFEB9D34B00p0", "0x0.00D28BC49F428p0", "0x0.00D5304054059p0", +"0x0.00D7D910DD8B1p0", "0x0.00DA8636C6764p0", "0x0.00DD37B2997BCp0", "0x0.00DFED84E1618p0", +"0x0.00E2A7AE28FECp0", "0x0.00E5662EFB3C3p0", "0x0.00E82907E313Dp0", "0x0.00EAF0396B910p0", +"0x0.00EDBBC41FD08p0", "0x0.00F08BA88B009p0", "0x0.00F35FE73860Bp0", "0x0.00F63880B341Ep0", +"0x0.00F9157587069p0", "0x0.00FBF6C63F228p0", "0x0.00FEDC73671B0p0", "0x0.0101C67D8A86Cp0", +"0x0.0104B4E5350DFp0", "0x0.0107A7AAF26A2p0", "0x0.010A9ECF4E667p0", "0x0.010D9A52D4DF8p0", +"0x0.01109A3611C34p0", "0x0.01139E7991116p0", "0x0.0116A71DDEDADp0", "0x0.0119B42387423p0", +"0x0.011CC58B167B9p0", "0x0.011FDB5518CCAp0", "0x0.0122F5821A8C7p0", "0x0.01261412A823Cp0", +"0x0.012937074E0CDp0", "0x0.012C5E6098D37p0", "0x0.012F8A1F15151p0", "0x0.0132BA434F80Ap0", +"0x0.0135EECDD4D6Cp0", "0x0.013927BF31E98p0", "0x0.013C6517F39CCp0", "0x0.013FA6D8A6E5Dp0", +"0x0.0142ED01D8CBCp0", "0x0.0146379416673p0", "0x0.0149868FECE26p0", "0x0.014CD9F5E9795p0", +"0x0.015031C699799p0", "0x0.01538E028A426p0", "0x0.0156EEAA4944Bp0", "0x0.015A53BE64033p0", +"0x0.015DBD3F68122p0", "0x0.01612B2DE3178p0", "0x0.01649D8A62CB1p0", "0x0.0168145574F65p0", +"0x0.016B8F8FA7745p0", "0x0.016F0F3988321p0", "0x0.01729353A52E4p0", "0x0.01761BDE8C792p0", +"0x0.0179A8DACC350p0", "0x0.017D3A48F295Dp0", "0x0.0180D0298DE13p0", "0x0.01846A7D2C6ECp0", +"0x0.018809445CA7Bp0", "0x0.018BAC7FAD074p0", "0x0.018F542FAC1A4p0", "0x0.01930054E87F8p0", +"0x0.0196B0EFF0E79p0", "0x0.019A66015414Dp0", "0x0.019E1F89A0DBAp0", "0x0.01A1DD8966221p0", +"0x0.01A5A00132E02p0", "0x0.01A966F1961FCp0", "0x0.01AD325B1EFC9p0", "0x0.01B1023E5CA45p0", +"0x0.01B4D69BDE569p0", "0x0.01B8AF743364Cp0", "0x0.01BC8CC7EB323p0", "0x0.01C06E9795345p0", +"0x0.01C454E3C0F24p0", "0x0.01C83FACFE054p0", "0x0.01CC2EF3DC187p0", "0x0.01D022B8EAE8Fp0", +"0x0.01D41AFCBA45Ep0", "0x0.01D817BFDA104p0", "0x0.01DC1902DA3B1p0", "0x0.01E01EC64ACB7p0", +"0x0.01E4290ABBD87p0", "0x0.01E837D0BD8B2p0", "0x0.01EC4B18E01E9p0", "0x0.01F062E3B3DFEp0", +"0x0.01F47F31C92E4p0", "0x0.01F8A003B07AFp0", "0x0.01FCC559FA492p0", "0x0.0200EF35372E4p0", +"0x0.02051D95F7D1Cp0", "0x0.0209507CCCED1p0", "0x0.020D87EA474BEp0", "0x0.0211C3DEF7CBDp0", + }; + ap_ufixed<46,-6> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 5,-6> f_x_msb_2_h; + f_x_msb_2_h(4,0) = f_x_msb_2(45,41); + ap_ufixed< 9,-2> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<50,-2> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(49,41) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(40, 0) = f_x_msb_2(40,0); + + ap_ufixed<98,-12> f_x_msb_2_3_4_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_lsb_m_1; + ap_ufixed<46,-12> f_x_msb_2_3_4_lsb_s = f_x_msb_2_3_4_lsb; + ap_ufixed<50,-2> exp_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_3_4_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_lsb_m_1; + + const static ap_ufixed<50,23> exp_x_msb_1_table[256] = { +"0x1.0000000p0", "0x1.2216045p0", "0x1.48B5E3Cp0", "0x1.747A513p0", +"0x1.A61298Ep0", "0x1.DE455DFp0", "0x2.1DF3B68p0", "0x2.661CB0Fp0", +"0x2.B7E1516p0", "0x3.1489176p0", "0x3.7D871DBp0", "0x3.F47FE87p0", +"0x4.7B4FF99p0", "0x5.1413452p0", "0x5.C12DA41p0", "0x6.855466Ep0", +"0x7.63992E3p0", "0x8.5F7635Bp0", "0x9.7CDC417p0", "0xA.C042667p0", +"0xC.2EB7EC9p0", "0xD.CDF892Ep0", "0xF.A48385Ep0", "0x11.B9B5652p0", +"0x14.15E5BF6p0", "0x16.C2887C1p0", "0x19.CA53B78p0", "0x1D.396AA97p0", +"0x21.1D8E427p0", "0x25.865441Cp0", "0x2A.8565A14p0", "0x30.2EC550Bp0", +"0x36.99205C4p0", "0x3D.DE28BF3p0", "0x46.1AFC4DBp0", "0x4F.7099532p0", +"0x5A.0462B78p0", "0x66.00B5BC9p0", "0x73.9593ABBp0", "0x82.F9621ADp0", +"0x94.69C4CB8p0", "0xA8.2C948C1p0", "0xBE.90F6F83p0", "0xD7.F09B78Cp0", +"0xF4.B122790p0", "0x115.45B4704p0", "0x13A.30CF1CCp0", "0x164.0650296p0", +"0x193.6DC5690p0", "0x1C9.250BEDCp0", "0x206.03487A3p0", "0x24A.FC4533Cp0", +"0x299.2442102p0", "0x2F1.B447462p0", "0x356.0F0B0F9p0", "0x3C7.C67E5BEp0", +"0x448.A216ABBp0", "0x4DA.A5EE46Ap0", "0x580.1AD754Fp0", "0x63B.9782341p0", +"0x710.0ADBAC7p0", "0x800.C7CC8E3p0", "0x911.9289C39p0", "0xA46.AFAA2ADp0", +"0xBA4.F53EA38p0", "0xD31.DE30C52p0", "0xEF3.A035D57p0", "0x10F1.44ADE60p0", +"0x1332.C4D2B7Cp0", "0x15C1.29A744Cp0", "0x18A6.B027DA0p0", "0x1BEE.F24BB12p0", +"0x1FA7.157C470p0", "0x23DD.FF3C8BAp0", "0x28A4.90D2CCEp0", "0x2E0D.EAE454Bp0", +"0x342F.BA11823p0", "0x3B22.8DC5359p0", "0x4302.3A933EEp0", "0x4BEE.49AFCDCp0", +"0x560A.773E541p0", "0x617F.4171BF9p0", "0x6E7A.8ABB4A8p0", "0x7D30.5191764p0", +"0x8DDB.80AF426p0", "0xA0BE.DB0DB10p0", "0xB626.0748BAEp0", "0xCE66.BE9EAADp0", +"0xE9E2.2447727p0", "0x10906.4A831F8p0", "0x12C4F.EB75B2Ap0", "0x1544C.5CB6133p0", +"0x1819B.C560F61p0", "0x1B4F3.9F8AF64p0", "0x1EF21.8F1B001p0", "0x2310E.996C40Fp0", +"0x27BC2.CA9A6F9p0", "0x2D069.571279Ap0", "0x33055.49F35D9p0", "0x39D06.D2FEF17p0", +"0x41831.49596E9p0", "0x4A3C1.FB2AC39p0", "0x541E7.E56949Dp0", "0x5F51C.72B7532p0", +"0x6C02D.645AB25p0", "0x7A648.0CFF534p0", "0x8AB06.0A3EE9Fp0", "0x9D27B.AFE4CF1p0", +"0xB2148.5EAE56Cp0", "0xC9CA9.07F86EFp0", "0xE4A8D.2881EDBp0", "0x1031AE.8E4996Cp0", +"0x1259AC.48BF05Dp0", "0x14CB29.2F2B31Fp0", "0x178FEE.7792E44p0", "0x1AB312.E89CD0Dp0", +"0x1E4127.437732Bp0", "0x224868.979FC2Ep0", "0x26D8F9.4A204BEp0", "0x2C0521.B4A8E0Bp0", +"0x31E199.5F5A550p0", "0x3885D9.FA89D00p0", "0x400C7D.64D3386p0", "0x4893A8.361032Dp0", +"0x523D82.79EDAEFp0", "0x5D30C0.7DAB686p0", "0x69993D.D4F2D95p0", "0x77A8AD.02A7C71p0", +"0x0.000001Ep0", "0x0.0000022p0", "0x0.0000026p0", "0x0.000002Bp0", +"0x0.0000031p0", "0x0.0000038p0", "0x0.000003Fp0", "0x0.0000048p0", +"0x0.0000052p0", "0x0.000005Dp0", "0x0.0000069p0", "0x0.0000077p0", +"0x0.0000087p0", "0x0.0000099p0", "0x0.00000ADp0", "0x0.00000C4p0", +"0x0.00000DFp0", "0x0.00000FCp0", "0x0.000011Ep0", "0x0.0000144p0", +"0x0.0000170p0", "0x0.00001A1p0", "0x0.00001D8p0", "0x0.0000217p0", +"0x0.000025Ep0", "0x0.00002AFp0", "0x0.000030Bp0", "0x0.0000372p0", +"0x0.00003E8p0", "0x0.000046Dp0", "0x0.0000504p0", "0x0.00005AFp0", +"0x0.0000671p0", "0x0.000074Cp0", "0x0.0000845p0", "0x0.000095Fp0", +"0x0.0000A9Fp0", "0x0.0000C09p0", "0x0.0000DA3p0", "0x0.0000F74p0", +"0x0.0001183p0", "0x0.00013D8p0", "0x0.000167Cp0", "0x0.000197Bp0", +"0x0.0001CDFp0", "0x0.00020B7p0", "0x0.0002513p0", "0x0.0002A02p0", +"0x0.0002F9Ap0", "0x0.00035F1p0", "0x0.0003D20p0", "0x0.0004543p0", +"0x0.0004E7Cp0", "0x0.00058F0p0", "0x0.00064C7p0", "0x0.0007232p0", +"0x0.0008167p0", "0x0.00092A2p0", "0x0.000A628p0", "0x0.000BC48p0", +"0x0.000D55Ap0", "0x0.000F1C2p0", "0x0.00111F3p0", "0x0.001366Cp0", +"0x0.0015FC2p0", "0x0.0018E98p0", "0x0.001C3AAp0", "0x0.001FFCEp0", +"0x0.00243F3p0", "0x0.002912Bp0", "0x0.002E8ABp0", "0x0.0034BD2p0", +"0x0.003BC2Dp0", "0x0.0043B7Dp0", "0x0.004CBC1p0", "0x0.0056F3Ap0", +"0x0.0062878p0", "0x0.006FA5Fp0", "0x0.007E83Ap0", "0x0.008F5C0p0", +"0x0.00A2728p0", "0x0.00B813Bp0", "0x0.00D0963p0", "0x0.00EC5C1p0", +"0x0.010BD4Ap0", "0x0.012F7DEp0", "0x0.0157E6Bp0", "0x0.0185B0Fp0", +"0x0.01B993Fp0", "0x0.01F45F9p0", "0x0.0236FF5p0", "0x0.02827E0p0", +"0x0.02D80A0p0", "0x0.0338F9Fp0", "0x0.03A6D22p0", "0x0.04234A7p0", +"0x0.04B0556p0", "0x0.0550280p0", "0x0.0605424p0", "0x0.06D279Ap0", +"0x0.07BB040p0", "0x0.08C284Cp0", "0x0.09ED1B4p0", "0x0.0B3F736p0", +"0x0.0CBED86p0", "0x0.0E7149Cp0", "0x0.105D938p0", "0x0.128B697p0", +"0x0.150385Cp0", "0x0.17CFCC2p0", "0x0.1AFB718p0", "0x0.1E9328Bp0", +"0x0.22A5554p0", "0x0.2742456p0", "0x0.2C7C72Fp0", "0x0.3268CDBp0", +"0x0.391F0EEp0", "0x0.40BA188p0", "0x0.495860Dp0", "0x0.531C6C9p0", +"0x0.5E2D58Dp0", "0x0.6AB7782p0", "0x0.78ED03Ap0", "0x0.8906E49p0", +"0x0.9B4597Ep0", "0x0.AFF230Ap0", "0x0.C75F7CFp0", "0x0.E1EB512p0", + }; + ap_ufixed<50,23> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<100,21> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_lsb_m_1; + ap_ufixed<48,21> y_lo_s = y_lo; + ap_ufixed<50,23> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + if (I_<24) { // overflow + bool overf = 0; + #pragma unroll + for (int j = 45; j >= I_+22; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 45; j >= I_+22; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+21; j >= 0; j--) + y[j] = 1; + } + } + r = y; + } else { // I_s_ = 6, M_ = 24..32, I_ <= 33, F_ <= 32, W_ <= 65 + //ap_fixed<65,33> x_l = x; + ap_fixed<65,33> x_l = 0; + #pragma unroll + for (int j = 32-F_; j < 32+I_; j++) + x_l[j] = x[j-(32-F_)]; + #pragma unroll + for (int j = 32+I_; j <= 64; j++) + x_l[j] = x[W_-1]; + ap_ufixed<64,32> y = 0; + ap_fixed<6,6> x_l_int; + x_l_int(5,0) = x_l(37,32); + ap_ufixed<32,0> x_l_fract; + x_l_fract(31,0) = x_l(31,0); + bool overf = 0; + #pragma unroll + for (int j = 37; j < 64; j++) + if (x_l[64]!=x_l[j]) + overf = 1; + //if (overf||(x_l>="0x16.2e42fefap0")) { // overflow + if (overf||(x_l_int>22)||((x_l_int==22)&&(x_l_fract>=ap_ufixed<32,0>("0x0.2e42fefap0")))) { // overflow + if (!x_l[64]) { + #pragma unroll + for (int j = 0; j < 64; j++) y[j] = 1; + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[64]; + x_msb_ind_1(6,0) = x_l(36,30); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(29,22); + ap_uint<8> x_msb_ind_3; + x_msb_ind_3(7,0) = x_l(21,14); + ap_uint<8> x_msb_ind_4; + x_msb_ind_4(7,0) = x_l(13,6); + ap_uint<6> x_lsb_ind; + x_lsb_ind(5,0) = x_l(5,0); + + ap_ufixed<8, -2> x_msb_2 = x_l; + ap_ufixed<8,-10> x_msb_3 = x_l; + ap_ufixed<8,-18> x_msb_4 = x_l; + ap_ufixed<6,-26> x_lsb = x_l; + + const static ap_ufixed<31,-37> f_x_msb_4_table[256] = { +"0x0.000000000000000000p0", "0x0.000000000000080000p0", "0x0.000000000000200000p0", "0x0.000000000000480000p0", +"0x0.000000000000800000p0", "0x0.000000000000C80000p0", "0x0.000000000001200000p0", "0x0.000000000001880000p0", +"0x0.000000000002000001p0", "0x0.000000000002880001p0", "0x0.000000000003200002p0", "0x0.000000000003C80003p0", +"0x0.000000000004800004p0", "0x0.000000000005480005p0", "0x0.000000000006200007p0", "0x0.000000000007080008p0", +"0x0.00000000000800000Ap0", "0x0.00000000000908000Cp0", "0x0.00000000000A20000Fp0", "0x0.00000000000B480011p0", +"0x0.00000000000C800014p0", "0x0.00000000000DC80018p0", "0x0.00000000000F20001Bp0", "0x0.00000000001088001Fp0", +"0x0.000000000012000024p0", "0x0.000000000013880028p0", "0x0.00000000001520002Dp0", "0x0.000000000016C80033p0", +"0x0.000000000018800039p0", "0x0.00000000001A48003Fp0", "0x0.00000000001C200046p0", "0x0.00000000001E08004Dp0", +"0x0.000000000020000055p0", "0x0.00000000002208005Dp0", "0x0.000000000024200066p0", "0x0.00000000002648006Fp0", +"0x0.000000000028800079p0", "0x0.00000000002AC80083p0", "0x0.00000000002D20008Ep0", "0x0.00000000002F88009Ap0", +"0x0.0000000000320000A6p0", "0x0.0000000000348800B3p0", "0x0.0000000000372000C0p0", "0x0.000000000039C800CFp0", +"0x0.00000000003C8000DDp0", "0x0.00000000003F4800EDp0", "0x0.0000000000422000FDp0", "0x0.00000000004508010Ep0", +"0x0.000000000048000120p0", "0x0.00000000004B080132p0", "0x0.00000000004E200145p0", "0x0.000000000051480159p0", +"0x0.00000000005480016Ep0", "0x0.000000000057C80183p0", "0x0.00000000005B20019Ap0", "0x0.00000000005E8801B1p0", +"0x0.0000000000620001C9p0", "0x0.0000000000658801E2p0", "0x0.0000000000692001FCp0", "0x0.00000000006CC80216p0", +"0x0.000000000070800232p0", "0x0.00000000007448024Fp0", "0x0.00000000007820026Cp0", "0x0.00000000007C08028Bp0", +"0x0.0000000000800002AAp0", "0x0.0000000000840802CBp0", "0x0.0000000000882002ECp0", "0x0.00000000008C48030Fp0", +"0x0.000000000090800332p0", "0x0.000000000094C80357p0", "0x0.00000000009920037Dp0", "0x0.00000000009D8803A4p0", +"0x0.0000000000A20003CCp0", "0x0.0000000000A68803F5p0", "0x0.0000000000AB20041Fp0", "0x0.0000000000AFC8044Ap0", +"0x0.0000000000B4800477p0", "0x0.0000000000B94804A4p0", "0x0.0000000000BE2004D3p0", "0x0.0000000000C3080503p0", +"0x0.0000000000C8000535p0", "0x0.0000000000CD080567p0", "0x0.0000000000D220059Bp0", "0x0.0000000000D74805D1p0", +"0x0.0000000000DC800607p0", "0x0.0000000000E1C8063Fp0", "0x0.0000000000E7200678p0", "0x0.0000000000EC8806B2p0", +"0x0.0000000000F20006EEp0", "0x0.0000000000F788072Bp0", "0x0.0000000000FD20076Ap0", "0x0.000000000102C807AAp0", +"0x0.0000000001088007EBp0", "0x0.00000000010E48082Ep0", "0x0.000000000114200872p0", "0x0.00000000011A0808B8p0", +"0x0.000000000120000900p0", "0x0.000000000126080948p0", "0x0.00000000012C200993p0", "0x0.0000000001324809DEp0", +"0x0.000000000138800A2Cp0", "0x0.00000000013EC80A7Bp0", "0x0.000000000145200ACBp0", "0x0.00000000014B880B1Dp0", +"0x0.000000000152000B71p0", "0x0.000000000158880BC6p0", "0x0.00000000015F200C1Dp0", "0x0.000000000165C80C76p0", +"0x0.00000000016C800CD0p0", "0x0.000000000173480D2Cp0", "0x0.00000000017A200D8Ap0", "0x0.000000000181080DE9p0", +"0x0.000000000188000E4Ap0", "0x0.00000000018F080EADp0", "0x0.000000000196200F12p0", "0x0.00000000019D480F78p0", +"0x0.0000000001A4800FE0p0", "0x0.0000000001ABC8104Ap0", "0x0.0000000001B32010B6p0", "0x0.0000000001BA881124p0", +"0x0.0000000001C2001194p0", "0x0.0000000001C9881205p0", "0x0.0000000001D1201278p0", "0x0.0000000001D8C812EEp0", +"0x0.0000000001E0801365p0", "0x0.0000000001E84813DEp0", "0x0.0000000001F0201459p0", "0x0.0000000001F80814D6p0", +"0x0.000000000200001555p0", "0x0.0000000002080815D6p0", "0x0.000000000210201659p0", "0x0.0000000002184816DEp0", +"0x0.000000000220801765p0", "0x0.000000000228C817EEp0", "0x0.000000000231201879p0", "0x0.000000000239881907p0", +"0x0.000000000242001996p0", "0x0.00000000024A881A28p0", "0x0.000000000253201ABBp0", "0x0.00000000025BC81B51p0", +"0x0.000000000264801BE9p0", "0x0.00000000026D481C84p0", "0x0.000000000276201D20p0", "0x0.00000000027F081DBFp0", +"0x0.000000000288001E60p0", "0x0.000000000291081F03p0", "0x0.00000000029A201FA8p0", "0x0.0000000002A3482050p0", +"0x0.0000000002AC8020FAp0", "0x0.0000000002B5C821A6p0", "0x0.0000000002BF202255p0", "0x0.0000000002C8882306p0", +"0x0.0000000002D20023B9p0", "0x0.0000000002DB88246Fp0", "0x0.0000000002E5202527p0", "0x0.0000000002EEC825E1p0", +"0x0.0000000002F880269Ep0", "0x0.00000000030248275Dp0", "0x0.00000000030C20281Fp0", "0x0.0000000003160828E3p0", +"0x0.0000000003200029AAp0", "0x0.00000000032A082A73p0", "0x0.000000000334202B3Fp0", "0x0.00000000033E482C0Dp0", +"0x0.000000000348802CDEp0", "0x0.000000000352C82DB2p0", "0x0.00000000035D202E88p0", "0x0.000000000367882F60p0", +"0x0.00000000037200303Cp0", "0x0.00000000037C883119p0", "0x0.0000000003872031FAp0", "0x0.000000000391C832DDp0", +"0x0.00000000039C8033C3p0", "0x0.0000000003A74834ABp0", "0x0.0000000003B2203596p0", "0x0.0000000003BD083684p0", +"0x0.0000000003C8003775p0", "0x0.0000000003D3083868p0", "0x0.0000000003DE20395Ep0", "0x0.0000000003E9483A57p0", +"0x0.0000000003F4803B53p0", "0x0.0000000003FFC83C52p0", "0x0.00000000040B203D53p0", "0x0.000000000416883E57p0", +"0x0.000000000422003F5Ep0", "0x0.00000000042D884068p0", "0x0.000000000439204175p0", "0x0.000000000444C84285p0", +"0x0.000000000450804397p0", "0x0.00000000045C4844ADp0", "0x0.0000000004682045C5p0", "0x0.0000000004740846E1p0", +"0x0.000000000480004800p0", "0x0.00000000048C084921p0", "0x0.000000000498204A46p0", "0x0.0000000004A4484B6Dp0", +"0x0.0000000004B0804C98p0", "0x0.0000000004BCC84DC5p0", "0x0.0000000004C9204EF6p0", "0x0.0000000004D588502Ap0", +"0x0.0000000004E2005161p0", "0x0.0000000004EE88529Bp0", "0x0.0000000004FB2053D8p0", "0x0.000000000507C85518p0", +"0x0.00000000051480565Cp0", "0x0.0000000005214857A3p0", "0x0.00000000052E2058EDp0", "0x0.00000000053B085A3Ap0", +"0x0.000000000548005B8Ap0", "0x0.000000000555085CDEp0", "0x0.000000000562205E35p0", "0x0.00000000056F485F8Fp0", +"0x0.00000000057C8060ECp0", "0x0.000000000589C8624Dp0", "0x0.0000000005972063B1p0", "0x0.0000000005A4886519p0", +"0x0.0000000005B2006684p0", "0x0.0000000005BF8867F2p0", "0x0.0000000005CD206963p0", "0x0.0000000005DAC86AD8p0", +"0x0.0000000005E8806C51p0", "0x0.0000000005F6486DCDp0", "0x0.000000000604206F4Cp0", "0x0.0000000006120870CFp0", +"0x0.000000000620007255p0", "0x0.00000000062E0873DFp0", "0x0.00000000063C20756Cp0", "0x0.00000000064A4876FDp0", +"0x0.000000000658807891p0", "0x0.000000000666C87A29p0", "0x0.000000000675207BC4p0", "0x0.000000000683887D64p0", +"0x0.000000000692007F06p0", "0x0.0000000006A08880ADp0", "0x0.0000000006AF208256p0", "0x0.0000000006BDC88404p0", +"0x0.0000000006CC8085B5p0", "0x0.0000000006DB48876Ap0", "0x0.0000000006EA208923p0", "0x0.0000000006F9088ADFp0", +"0x0.000000000708008CA0p0", "0x0.000000000717088E63p0", "0x0.00000000072620902Bp0", "0x0.0000000007354891F6p0", +"0x0.0000000007448093C6p0", "0x0.000000000753C89599p0", "0x0.000000000763209770p0", "0x0.00000000077288994Ap0", +"0x0.000000000782009B29p0", "0x0.000000000791889D0Bp0", "0x0.0000000007A1209EF2p0", "0x0.0000000007B0C8A0DCp0", +"0x0.0000000007C080A2CAp0", "0x0.0000000007D048A4BCp0", "0x0.0000000007E020A6B2p0", "0x0.0000000007F008A8ACp0", + }; + ap_ufixed<31,-37> f_x_msb_4 = f_x_msb_4_table[x_msb_ind_4]; + + const static ap_ufixed<12,-53> f_x_lsb_table[64] = { +"0x0.00000000000000000p0", "0x0.00000000000000008p0", "0x0.00000000000000020p0", "0x0.00000000000000048p0", +"0x0.00000000000000080p0", "0x0.000000000000000c8p0", "0x0.00000000000000120p0", "0x0.00000000000000188p0", +"0x0.00000000000000200p0", "0x0.00000000000000288p0", "0x0.00000000000000320p0", "0x0.000000000000003c8p0", +"0x0.00000000000000480p0", "0x0.00000000000000548p0", "0x0.00000000000000620p0", "0x0.00000000000000708p0", +"0x0.00000000000000800p0", "0x0.00000000000000908p0", "0x0.00000000000000a20p0", "0x0.00000000000000b48p0", +"0x0.00000000000000c80p0", "0x0.00000000000000dc8p0", "0x0.00000000000000f20p0", "0x0.00000000000001088p0", +"0x0.00000000000001200p0", "0x0.00000000000001388p0", "0x0.00000000000001520p0", "0x0.000000000000016c8p0", +"0x0.00000000000001880p0", "0x0.00000000000001a48p0", "0x0.00000000000001c20p0", "0x0.00000000000001e08p0", +"0x0.00000000000002000p0", "0x0.00000000000002208p0", "0x0.00000000000002420p0", "0x0.00000000000002648p0", +"0x0.00000000000002880p0", "0x0.00000000000002ac8p0", "0x0.00000000000002d20p0", "0x0.00000000000002f88p0", +"0x0.00000000000003200p0", "0x0.00000000000003488p0", "0x0.00000000000003720p0", "0x0.000000000000039c8p0", +"0x0.00000000000003c80p0", "0x0.00000000000003f48p0", "0x0.00000000000004220p0", "0x0.00000000000004508p0", +"0x0.00000000000004800p0", "0x0.00000000000004b08p0", "0x0.00000000000004e20p0", "0x0.00000000000005148p0", +"0x0.00000000000005480p0", "0x0.000000000000057c8p0", "0x0.00000000000005b20p0", "0x0.00000000000005e88p0", +"0x0.00000000000006200p0", "0x0.00000000000006588p0", "0x0.00000000000006920p0", "0x0.00000000000006cc8p0", +"0x0.00000000000007080p0", "0x0.00000000000007448p0", "0x0.00000000000007820p0", "0x0.00000000000007c08p0", + }; + ap_ufixed<12,-53> f_x_lsb = f_x_lsb_table[x_lsb_ind]; + + ap_ufixed<14,-44> f_x_msb_4_lsb = x_msb_4 * x_lsb; + + ap_ufixed<15,-43> exp_x_msb_4_lsb_m_1_m1 = 0; + exp_x_msb_4_lsb_m_1_m1(4,0) = f_x_lsb(11,7); + exp_x_msb_4_lsb_m_1_m1 = exp_x_msb_4_lsb_m_1_m1 + f_x_msb_4_lsb; + + ap_ufixed<22,-43> exp_x_msb_4_lsb_m_1_m2 = exp_x_msb_4_lsb_m_1_m1; + exp_x_msb_4_lsb_m_1_m2(6,0) = f_x_lsb(6,0); + + ap_ufixed<29,-36> exp_x_msb_4_lsb_m_1_m3 = 0; + exp_x_msb_4_lsb_m_1_m3(27,0) = f_x_msb_4(30,3); + exp_x_msb_4_lsb_m_1_m3 = exp_x_msb_4_lsb_m_1_m3 + exp_x_msb_4_lsb_m_1_m2; + + ap_ufixed<32,-36> exp_x_msb_4_lsb_m_1_m = exp_x_msb_4_lsb_m_1_m3; + exp_x_msb_4_lsb_m_1_m(2,0) = f_x_msb_4(2,0); + + ap_ufixed<50,-18> exp_x_msb_4_lsb_m_1 = 0; + exp_x_msb_4_lsb_m_1(49,36) = x_l(13,0); + exp_x_msb_4_lsb_m_1(31, 0) = exp_x_msb_4_lsb_m_1_m(31,0); + + + const static ap_ufixed<51,-21> f_x_msb_3_table[256] = { +"0x0", "0x0.00000000080000AAAAp0", "0x0.000000002000055556p0", "0x0.000000004800120003p0", +"0x0.0000000080002AAAB5p0", "0x0.00000000C80053556Fp0", "0x0.000000012000900036p0", "0x0.000000018800E4AB0Ep0", +"0x0.000000020001555600p0", "0x0.000000028801E60111p0", "0x0.0000000320029AAC4Bp0", "0x0.00000003C8037757B7p0", +"0x0.000000048004800360p0", "0x0.000000054805B8AF50p0", "0x0.000000062007255B96p0", "0x0.000000070808CA083Dp0", +"0x0.00000008000AAAB555p0", "0x0.00000009080CCB62EDp0", "0x0.0000000A200F301116p0", "0x0.0000000B4811DCBFE0p0", +"0x0.0000000C8014D56F60p0", "0x0.0000000DC8181E1FA7p0", "0x0.0000000F201BBAD0CBp0", "0x0.00000010881FAF82E1p0", +"0x0.000000120024003600p0", "0x0.000000138828B0EA3Fp0", "0x0.00000015202DC59FB6p0", "0x0.00000016C83342567Fp0", +"0x0.0000001880392B0EB5p0", "0x0.0000001A483F83C874p0", "0x0.0000001C20465083D6p0", "0x0.0000001E084D9540FBp0", +"0x0.000000200055560001p0", "0x0.00000022085D96C106p0", "0x0.0000002420665B842Cp0", "0x0.00000026486FA84995p0", +"0x0.000000288079811161p0", "0x0.0000002AC883E9DBB6p0", "0x0.0000002D208EE6A8B8p0", "0x0.0000002F889A7B788Cp0", +"0x0.0000003200A6AC4B58p0", "0x0.0000003488B37D2145p0", "0x0.0000003720C0F1FA7Ap0", "0x0.00000039C8CF0ED721p0", +"0x0.0000003C80DDD7B765p0", "0x0.0000003F48ED509B71p0", "0x0.0000004220FD7D8371p0", "0x0.00000045090E626F94p0", +"0x0.000000480120036008p0", "0x0.0000004B09326454FBp0", "0x0.0000004E2145894E9Fp0", "0x0.000000514959764D26p0", +"0x0.00000054816E2F50C1p0", "0x0.00000057C983B859A4p0", "0x0.0000005B219A156804p0", "0x0.0000005E89B14A7C16p0", +"0x0.0000006201C95B9611p0", "0x0.0000006589E24CB62Cp0", "0x0.0000006921FC21DCA0p0", "0x0.0000006CCA16DF09A6p0", +"0x0.000000708232883D78p0", "0x0.000000744A4F217853p0", "0x0.00000078226CAEBA73p0", "0x0.0000007C0A8B340414p0", +"0x0.0000008002AAB55577p0", "0x0.000000840ACB36AEDAp0", "0x0.0000008822ECBC107Dp0", "0x0.0000008C4B0F497AA3p0", +"0x0.000000908332E2ED8Ep0", "0x0.00000094CB578C6981p0", "0x0.00000099237D49EEC0p0", "0x0.0000009D8BA41F7D92p0", +"0x0.000000A203CC11163Dp0", "0x0.000000A68BF522B908p0", "0x0.000000AB241F58663Cp0", "0x0.000000AFCC4AB61E22p0", +"0x0.000000B484773FE105p0", "0x0.000000B94CA4F9AF31p0", "0x0.000000BE24D3E788F1p0", "0x0.000000C30D040D6E94p0", +"0x0.000000C805356F6068p0", "0x0.000000CD0D68115EBCp0", "0x0.000000D2259BF769E1p0", "0x0.000000D74DD1258228p0", +"0x0.000000DC86079FA7E4p0", "0x0.000000E1CE3F69DB69p0", "0x0.000000E72678881D0Bp0", "0x0.000000EC8EB2FE6D1Fp0", +"0x0.000000F206EED0CBFDp0", "0x0.000000F78F2C0339FAp0", "0x0.000000FD276A99B771p0", "0x0.00000102CFAA9844BBp0", +"0x0.0000010887EC02E231p0", "0x0.0000010E502EDD9030p0", "0x0.0000011428732C4F14p0", "0x0.0000011A10B8F31F3Bp0", +"0x0.000001200900360103p0", "0x0.000001261148F8F4CBp0", "0x0.0000012C29933FFAF5p0", "0x0.0000013251DF0F13E1p0", +"0x0.000001388A2C6A3FF3p0", "0x0.0000013ED27B557F8Dp0", "0x0.000001452ACBD4D315p0", "0x0.0000014B931DEC3AEFp0", +"0x0.000001520B719FB782p0", "0x0.0000015893C6F34937p0", "0x0.0000015F2C1DEAF074p0", "0x0.00000165D4768AADA5p0", +"0x0.0000016C8CD0D68133p0", "0x0.00000173552CD26B89p0", "0x0.0000017A2D8A826D16p0", "0x0.0000018115E9EA8645p0", +"0x0.000001880E4B0EB785p0", "0x0.0000018F16ADF30147p0", "0x0.000001962F129B63FAp0", "0x0.0000019D57790BE010p0", +"0x0.000001A48FE14875FBp0", "0x0.000001ABD84B552630p0", "0x0.000001B330B735F122p0", "0x0.000001BA9924EED748p0", +"0x0.000001C2119483D917p0", "0x0.000001C99A05F8F707p0", "0x0.000001D13279523191p0", "0x0.000001D8DAEE93892Ep0", +"0x0.000001E09365C0FE59p0", "0x0.000001E85BDEDE918Dp0", "0x0.000001F03459F04347p0", "0x0.000001F81CD6FA1405p0", +"0x0.000002001556000444p0", "0x0.000002081DD7061485p0", "0x0.00000210365A104547p0", "0x0.000002185EDF22970Dp0", +"0x0.000002209766410A5Ap0", "0x0.00000228DFEF6F9FAFp0", "0x0.00000231387AB25793p0", "0x0.00000239A1080D328Ap0", +"0x0.00000242199784311Cp0", "0x0.0000024AA2291B53CFp0", "0x0.000002533ABCD69B2Dp0", "0x0.0000025BE352BA07BEp0", +"0x0.000002649BEAC99A0Dp0", "0x0.0000026D64850952A7p0", "0x0.000002763D217D3216p0", "0x0.0000027F25C02938EAp0", +"0x0.000002881E611167B0p0", "0x0.00000291270439BEF8p0", "0x0.0000029A3FA9A63F53p0", "0x0.000002A368515AE951p0", +"0x0.000002ACA0FB5BBD86p0", "0x0.000002B5E9A7ACBC86p0", "0x0.000002BF425651E6E4p0", "0x0.000002C8AB074F3D36p0", +"0x0.000002D223BAA8C013p0", "0x0.000002DBAC70627012p0", "0x0.000002E54528804DCDp0", "0x0.000002EEEDE30659DBp0", +"0x0.000002F8A69FF894D9p0", "0x0.000003026F5F5AFF61p0", "0x0.0000030C4821319A10p0", "0x0.0000031630E5806584p0", +"0x0.0000032029AC4B625Bp0", "0x0.0000032A3275969134p0", "0x0.000003344B4165F2B1p0", "0x0.0000033E740FBD8772p0", +"0x0.00000348ACE0A1501Bp0", "0x0.00000352F5B4154D4Fp0", "0x0.0000035D4E8A1D7FB2p0", "0x0.00000367B762BDE7EAp0", +"0x0.00000372303DFA869Ep0", "0x0.0000037CB91BD75C75p0", "0x0.0000038751FC586A18p0", "0x0.00000391FADF81B02Fp0", +"0x0.0000039CB3C5572F67p0", "0x0.000003A77CADDCE86Ap0", "0x0.000003B2559916DBE4p0", "0x0.000003BD3E87090A84p0", +"0x0.000003C83777B774F8p0", "0x0.000003D3406B261BF0p0", "0x0.000003DE596159001Cp0", "0x0.000003E9825A54222Dp0", +"0x0.000003F4BB561B82D7p0", "0x0.000004000454B322CCp0", "0x0.0000040B5D561F02C2p0", "0x0.00000416C65A63236Ep0", +"0x0.000004223F61838586p0", "0x0.0000042DC86B8429C2p0", "0x0.0000043961786910DBp0", "0x0.000004450A88363B8Ap0", +"0x0.00000450C39AEFAA8Ap0", "0x0.0000045C8CB0995E96p0", "0x0.0000046865C937586Bp0", "0x0.000004744EE4CD98C6p0", +"0x0.000004804803602067p0", "0x0.0000048C5124F2F00Cp0", "0x0.000004986A498A0876p0", "0x0.000004A49371296A67p0", +"0x0.000004B0CC9BD516A1p0", "0x0.000004BD15C9910DE8p0", "0x0.000004C96EFA615101p0", "0x0.000004D5D82E49E0B0p0", +"0x0.000004E251654EBDBDp0", "0x0.000004EEDA9F73E8F0p0", "0x0.000004FB73DCBD6310p0", "0x0.000005081D1D2F2CE7p0", +"0x0.00000514D660CD4740p0", "0x0.000005219FA79BB2E7p0", "0x0.0000052E78F19E70A8p0", "0x0.0000053B623ED98150p0", +"0x0.000005485B8F50E5AFp0", "0x0.0000055564E3089E93p0", "0x0.000005627E3A04ACCEp0", "0x0.0000056FA794491131p0", +"0x0.0000057CE0F1D9CC8Ep0", "0x0.0000058A2A52BADFBAp0", "0x0.0000059783B6F04B88p0", "0x0.000005A4ED1E7E10CFp0", +"0x0.000005B26689683064p0", "0x0.000005BFEFF7B2AB20p0", "0x0.000005CD89696181DBp0", "0x0.000005DB32DE78B56Fp0", +"0x0.000005E8EC56FC46B6p0", "0x0.000005F6B5D2F0368Cp0", "0x0.000006048F525885CDp0", "0x0.0000061278D5393558p0", +"0x0.00000620725B96460Ap0", "0x0.0000062E7BE573B8C3p0", "0x0.0000063C9572D58E64p0", "0x0.0000064ABF03BFC7CEp0", +"0x0.00000658F8983665E5p0", "0x0.0000066742303D698Bp0", "0x0.000006759BCBD8D3A5p0", "0x0.00000684056B0CA519p0", +"0x0.000006927F0DDCDECEp0", "0x0.000006A108B44D81AAp0", "0x0.000006AFA25E628E98p0", "0x0.000006BE4C0C20067Fp0", +"0x0.000006CD05BD89EA4Bp0", "0x0.000006DBCF72A43AE8p0", "0x0.000006EAA92B72F942p0", "0x0.000006F992E7FA2646p0", +"0x0.000007088CA83DC2E4p0", "0x0.00000717966C41D00Ap0", "0x0.00000726B0340A4EAAp0", "0x0.00000735D9FF9B3FB6p0", +"0x0.0000074513CEF8A41Ep0", "0x0.000007545DA2267CD9p0", "0x0.00000763B77928CAD9p0", "0x0.000007732154038F14p0", +"0x0.000007829B32BACA82p0", "0x0.000007922515527E1Ap0", "0x0.000007A1BEFBCEAAD4p0", "0x0.000007B168E63351AAp0", +"0x0.000007C122D4847397p0", "0x0.000007D0ECC6C61195p0", "0x0.000007E0C6BCFC2CA3p0", "0x0.000007F0B0B72AC5BEp0", + }; + ap_ufixed<51,-21> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<62,-10> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(61,54) = x_msb_3(7,0); + exp_x_msb_3_m_1(50, 0) = f_x_msb_3(50,0); + + ap_ufixed<50,-10> exp_x_msb_3_m_1_s = exp_x_msb_3_m_1; + ap_ufixed<100,-28> f_x_msb_3_4_lsb = exp_x_msb_3_m_1_s * exp_x_msb_4_lsb_m_1; + ap_ufixed<44,-28> f_x_msb_3_4_lsb_s = f_x_msb_3_4_lsb; + ap_ufixed<63, -9> exp_x_msb_3_4_lsb_m_1 = f_x_msb_3_4_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_lsb_m_1; + + + const static ap_ufixed<64,-4> f_x_msb_2_table[256] = { +"0x0.0p0", "0x0.00000800AAB555DDEp0", "0x0.00002005560011127p0", "0x0.00004812036081A9Cp0", +"0x0.0000802AB55777D28p0", "0x0.0000C8536F6684062p0", "0x0.0001209036103740Dp0", "0x0.000188E50ED8634A0p0", +"0x0.0002015600445B0C3p0", "0x0.000289E711DB32FD7p0", "0x0.0003229C4C260197Ep0", "0x0.0003CB79B8B01FE26p0", +"0x0.0004848362076A08Dp0", "0x0.00054DBD53BC80058p0", "0x0.0006272B9A630659Dp0", "0x0.000710D24391E6D7Ap0", +"0x0.00080AB55DE3917ABp0", "0x0.000914D8F8F63D524p0", "0x0.000A2F41256C297AFp0", "0x0.000B59F1F4EBDE291p0", +"0x0.000C94EF7A206DC2Dp0", "0x0.000DE03DC8B9B60B1p0", "0x0.000F3BE0F56CA15C4p0", "0x0.0010A7DD15F367F40p0", +"0x0.00122436410DD14E5p0", "0x0.0013B0F08E817591Ep0", "0x0.00154E101719FF0C5p0", "0x0.0016FB98F4A96BBEFp0", +"0x0.0018B98F42084EFBDp0", "0x0.001A87F71B1613137p0", "0x0.001C66D49CB93B127p0", "0x0.001E562BE4DFA4904p0", +"0x0.00205601127EC98E0p0", "0x0.00226658459402659p0", "0x0.002487359F24C7C99p0", "0x0.0026B89D413EF4D5Ep0", +"0x0.0028FA934EF909304p0", "0x0.002B4D1BEC726B39Cp0", "0x0.002DB03B3ED3AA50Ep0", "0x0.003023F56C4EC123Fp0", +"0x0.0032A84E9C1F58145p0", "0x0.00353D4AF68B07AA1p0", "0x0.0037E2EEA4E19B185p0", "0x0.003A993DD17D52D25p0", +"0x0.003D603CA7C32730Fp0", "0x0.004037EF54230B293p0", "0x0.0043205A04182F12Fp0", "0x0.00461980E62943810p0", +"0x0.0049236829E8BC292p0", "0x0.004C3E13FFF512DD8p0", "0x0.004F698899F90A966p0", "0x0.0052A5CA2AABF28D0p0", +"0x0.0055F2DCE5D1E966Ep0", "0x0.005950C5003C20723p0", "0x0.005CBF86AFC91EF2Bp0", "0x0.00603F262B65057FCp0", +"0x0.0063CFA7AB09D1732p0", "0x0.0067710F67BFA0687p0", "0x0.006B23619B9CF3CDEp0", "0x0.006EE6A281C6F4857p0", +"0x0.0072BAD65671B6977p0", "0x0.0076A00156E07CF57p0", "0x0.007A9627C165FD4EDp0", "0x0.007E9D4DD564A3F5Ep0", +"0x0.0082B577D34ED7D5Bp0", "0x0.0086DEA9FCA73E799p0", "0x0.008B18E8940100253p0", "0x0.008F6437DD000BFDAp0", +"0x0.0093C09C1C595C43Ep0", "0x0.00982E1997D33A9FCp0", "0x0.009CACB49645847CCp0", "0x0.00A13C715F99EF773p0", +"0x0.00A5DD543CCC4DDAFp0", "0x0.00AA8F6177EAD3336p0", "0x0.00AF529D5C1658EBCp0", "0x0.00B4270C3582A301Dp0", +"0x0.00B90CB25176A4C8Bp0", "0x0.00BE0393FE4CC5BD7p0", "0x0.00C30BB58B73266CAp0", "0x0.00C8251B496BE5696p0", +"0x0.00CD4FC989CD64555p0", "0x0.00D28BC49F428CFA3p0", "0x0.00D7D910DD8B16743p0", "0x0.00DD37B2997BCA6E6p0", +"0x0.00E2A7AE28FECA6FBp0", "0x0.00E82907E313D5399p0", "0x0.00EDBBC41FD08C383p0", "0x0.00F35FE73860B9038p0", +"0x0.00F91575870692F24p0", "0x0.00FEDC73671B04BDFp0", "0x0.0104B4E5350DF2386p0", "0x0.010A9ECF4E667E12Dp0", +"0x0.01109A3611C34FB64p0", "0x0.0116A71DDEDAD92D8p0", "0x0.011CC58B167B9D206p0", "0x0.0122F5821A8C74E0Dp0", +"0x0.012937074E0CD6893p0", "0x0.012F8A1F15151B2C6p0", "0x0.0135EECDD4D6C5172p0", "0x0.013C6517F39CC6233p0", +"0x0.0142ED01D8CBC61C4p0", "0x0.0149868FECE26935Dp0", "0x0.015031C6997996937p0", "0x0.0156EEAA4944BEE23p0", +"0x0.015DBD3F68122303Ep0", "0x0.01649D8A62CB1ACBEp0", "0x0.016B8F8FA7745BCDBp0", "0x0.01729353A52E403D8p0", +"0x0.0179A8DACC350DE1Dp0", "0x0.0180D0298DE13D179p0", "0x0.018809445CA7BFE78p0", "0x0.018F542FAC1A492D6p0", +"0x0.0196B0EFF0E793D15p0", "0x0.019E1F89A0DBAA128p0", "0x0.01A5A00132E02CE42p0", "0x0.01AD325B1EFC9B5BCp0", +"0x0.01B4D69BDE569A322p0", "0x0.01BC8CC7EB323B553p0", "0x0.01C454E3C0F2458C8p0", "0x0.01CC2EF3DC187C2F6p0", +"0x0.01D41AFCBA45E6ED2p0", "0x0.01DC1902DA3B19A6Dp0", "0x0.01E4290ABBD87C5BCp0", "0x0.01EC4B18E01E9326Fp0", +"0x0.01F47F31C92E464FCp0", "0x0.01FCC559FA492A6B6p0", "0x0.02051D95F7D1C8917p0", "0x0.020D87EA474BE6A1Cp0", +"0x0.0216045B6F5CCF9CEp0", "0x0.021E92EDF7CB9C0E4p0", "0x0.022733A669817A88Ap0", "0x0.022FE6894E89F834Cp0", +"0x0.0238AB9B321349722p0", "0x0.024182E0A06E9289Bp0", "0x0.024A6C5E271030733p0", "0x0.02536818549001AC1p0", +"0x0.025C7613B8A9AF215p0", "0x0.02659654E43CF52B1p0", "0x0.026EC8E0694DEC9A9p0", "0x0.02780DBADB0553DA6p0", +"0x0.028164E8CDB0D8211p0", "0x0.028ACE6ED6C35EB5Fp0", "0x0.02944A518CD54E484p0", "0x0.029DD89587A4D858Dp0", +"0x0.02A7793F601642B5Dp0", "0x0.02B12C53B03431090p0", "0x0.02BAF1D7132FEE788p0", "0x0.02C4C9CE2561B759Fp0", +"0x0.02CEB43D844902F7Ap0", "0x0.02D8B129CE8CCD68Fp0", "0x0.02E2C097A3FBE17C9p0", "0x0.02ECE28BA58D22B56p0", +"0x0.02F7170A755FD759Ep0", "0x0.03015E18B6BBF2966p0", "0x0.030BB7BB0E125EB13p0", "0x0.031623F620FD4751Ep0", +"0x0.0320A2CE964063DACp0", "0x0.032B344915C941D54p0", "0x0.0335D86A48AF8F70Cp0", "0x0.03408F36D93566140p0", +"0x0.034B58B372C795013p0", "0x0.035634E4C1FDEC0D0p0", "0x0.036123CF749B8667Cp0", "0x0.036C2578398F157A0p0", +"0x0.037739E3C0F32BD30p0", "0x0.03826116BC0E882ACp0", "0x0.038D9B15DD5460763p0", "0x0.0398E7E5D864AD0E9p0", +"0x0.03A4478B620C73EB5p0", "0x0.03AFBA0B304613EEDp0", "0x0.03BB3F69FA3990464p0", "0x0.03C6D7AC783CDBDBFp0", +"0x0.03D282D763D424DCDp0", "0x0.03DE40EF77B220509p0", "0x0.03EA11F96FB855C4Fp0", "0x0.03F5F5FA08F76B0BBp0", +"0x0.0401ECF601AF700BDp0", "0x0.040DF6F219502AA55p0", "0x0.041A13F3107962A88p0", "0x0.042643FDA8FB2DDFBp0", +"0x0.04328716A5D63C2C4p0", "0x0.043EDD42CB3C23B6Dp0", "0x0.044B4686DE8FAD325p0", "0x0.0457C2E7A66520322p0", +"0x0.04645269EA828F932p0", "0x0.0470F51273E025F89p0", "0x0.047DAAE60CA8725B3p0", "0x0.048A73E98038B4ABFp0", +"0x0.049750219B212A8A0p0", "0x0.04A43F932B255C0B7p0", "0x0.04B14242FF3C689A0p0", "0x0.04BE5835E79153E1Dp0", +"0x0.04CB8170B58352D4Ep0", "0x0.04D8BDF83BA618C04p0", "0x0.04E60DD14DC22475Ep0", "0x0.04F37100C0D50D88Ep0", +"0x0.0500E78B6B11D19D6p0", "0x0.050E717623E121CBAp0", "0x0.051C0EC5C3E1B016Cp0", "0x0.0529BF7F24E87CF6Ap0", +"0x0.053783A7220124F51p0", "0x0.05455B42976E2E5EAp0", "0x0.0553465662A95706Bp0", "0x0.056144E76263E21F4p0", +"0x0.056F56FA7686E623Ep0", "0x0.057D7C9480339AD83p0", "0x0.058BB5BA61C3A75A3p0", "0x0.059A0270FEC97047Ap0", +"0x0.05A862BD3C1065F74p0", "0x0.05B6D6A3FF9D52C58p0", "0x0.05C55E2A30AEA974Ep0", "0x0.05D3F954B7BCD3A1Bp0", +"0x0.05E2A8287E7A8049Ep0", "0x0.05F16AAA6FD4F267Bp0", "0x0.060040DF77F44FA13p0", "0x0.060F2ACC843BEF0A0p0", +"0x0.061E2876834AA7FA4p0", "0x0.062D39E264FB20F7Ep0", "0x0.063C5F151A641EB4Cp0", "0x0.064B981395D8D31FEp0", +"0x0.065AE4E2CAE92C8AAp0", "0x0.066A4587AE6224E1Cp0", "0x0.0679BA07364E10FA3p0", "0x0.0689426659F4EFF1Bp0", +"0x0.0698DEAA11DCBAA37p0", "0x0.06A88ED757C9B3304p0", "0x0.06B852F326BEB49B0p0", "0x0.06C82B027AFD8278Ap0", +"0x0.06D8170A520718B46p0", "0x0.06E8170FAA9BFB67Ep0", "0x0.06F82B1784BC86C72p0", "0x0.07085326E1A93F207p0", +"0x0.07188F42C3E320F0Bp0", "0x0.0728DF702F2BF10B2p0", "0x0.073943B428868CD5Ap0", "0x0.0749BC13B6373A98Fp0", +"0x0.075A4893DFC3F9E4Cp0", "0x0.076AE939ADF4D4083p0", "0x0.077B9E0A2AD42C9E8p0", "0x0.078C670A61AF122F4p0", +"0x0.079D443F5F158EE3Ap0", "0x0.07AE35AE30DAF94F1p0", "0x0.07BF3B5BE616454CBp0", "0x0.07D0554D8F2254F0Cp0", +"0x0.07E183883D9E498E2p0", "0x0.07F2C611046DD4D06p0", "0x0.08041CECF7B989EA2p0", "0x0.081588212CEF2ED73p0", +"0x0.082707B2BAC20DB40p0", "0x0.08389BA6B92B46284p0", "0x0.084A4402416A1EE6Fp0", "0x0.085C00CA6E045741Fp0", +"0x0.086DD2045AC678D2Bp0", "0x0.087FB7B524C42936Cp0", "0x0.0891B1E1EA587BE12p0", "0x0.08A3C08FCB2643FFEp0", + }; + ap_ufixed<64,-4> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 6,-4> f_x_msb_2_h; + f_x_msb_2_h(5,0) = f_x_msb_2(63,58); + ap_ufixed< 9,-1> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<67,-1> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(66,58) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(57, 0) = f_x_msb_2(57,0); + + ap_ufixed<130,-10> f_x_msb_2_3_4_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_lsb_m_1; + ap_ufixed<62,-10> f_x_msb_2_3_4_lsb_s = f_x_msb_2_3_4_lsb; + ap_ufixed<72,0> exp_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_3_4_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_lsb_m_1; + + const static ap_ufixed<68,32> exp_x_msb_1_table[256] = { +"0x1.000000000p0", "0x1.48B5E3C3Ep0", "0x1.A61298E1Ep0", "0x2.1DF3B68CFp0", +"0x2.B7E151628p0", "0x3.7D871DB61p0", "0x4.7B4FF993Fp0", "0x5.C12DA416Ep0", +"0x7.63992E353p0", "0x9.7CDC417A3p0", "0xC.2EB7EC98Fp0", "0xF.A48385EDFp0", +"0x14.15E5BF6FBp0", "0x19.CA53B7811p0", "0x21.1D8E4272Dp0", "0x2A.8565A144Cp0", +"0x36.99205C4E7p0", "0x46.1AFC4DB59p0", "0x5A.0462B7877p0", "0x73.9593ABB7Dp0", +"0x94.69C4CB819p0", "0xBE.90F6F83E9p0", "0xF4.B122790DDp0", "0x13A.30CF1CCBBp0", +"0x193.6DC5690C0p0", "0x206.03487A3B1p0", "0x299.2442102D9p0", "0x356.0F0B0F980p0", +"0x448.A216ABB76p0", "0x580.1AD754FA3p0", "0x710.0ADBAC7DAp0", "0x911.9289C3923p0", +"0xBA4.F53EA3863p0", "0xEF3.A035D5798p0", "0x1332.C4D2B7C4Ap0", "0x18A6.B027DA0A7p0", +"0x1FA7.157C470F8p0", "0x28A4.90D2CCEF1p0", "0x342F.BA11823B8p0", "0x4302.3A933EE5Cp0", +"0x560A.773E54157p0", "0x6E7A.8ABB4A83Cp0", "0x8DDB.80AF4269Dp0", "0xB626.0748BAEC7p0", +"0xE9E2.2447727BFp0", "0x12C4F.EB75B2AB0p0", "0x1819B.C560F6113p0", "0x1EF21.8F1B001A4p0", +"0x27BC2.CA9A6F934p0", "0x33055.49F35D91Fp0", "0x41831.49596E996p0", "0x541E7.E56949D58p0", +"0x6C02D.645AB2554p0", "0x8AB06.0A3EE9FB1p0", "0xB2148.5EAE56C5Bp0", "0xE4A8D.2881EDBE8p0", +"0x1259AC.48BF05D6Ep0", "0x178FEE.7792E44B3p0", "0x1E4127.437732B71p0", "0x26D8F9.4A204BEA5p0", +"0x31E199.5F5A550DDp0", "0x400C7D.64D3386CBp0", "0x523D82.79EDAEF9Cp0", "0x69993D.D4F2D9524p0", +"0x87975E.854001024p0", "0xAE1A47.C38A42CD0p0", "0xDF8D5F.6DCFE5CEAp0", "0x11F0BF8.1E99FDEB6p0", +"0x1709348.C0EA4F8CEp0", "0x1D94295.464477ACCp0", "0x25FAD90.65C78E342p0", "0x30C4623.616ED2BE2p0", +"0x3E9E441.232817A61p0", "0x506744D.3B342FC94p0", "0x673D70B.C00F1F76Dp0", "0x849012B.C127FC962p0", +"0xAA36C7C.F69370B94p0", "0xDA8F202.DD9ACE661p0", "0x118A2AAE.0AA05236Bp0", "0x16857CFA.1AA8A5555p0", +"0x1CEB088B.68E804021p0", "0x2521AEDA.32CD52BE5p0", "0x2FAD89E1.79BAB8EADp0", "0x3D3838C6.BE0F13F06p0", +"0x4E9B87F6.7BB3F5597p0", "0x64EF201B.01109A4A5p0", "0x819A1801.9394C0D96p0", "0xA6698403.CF5D9E663p0", +"0xD5AD6DCE.21AFFC0DDp0", "0x1125E066B.0B19418CCp0", "0x1604B68CF.05F65FAA9p0", "0x1C45AED0A.D0C934CDCp0", +"0x244D5E676.3FB814AF0p0", "0x2E9CEBF49.9C21839C7p0", "0x3BDA2CBD0.9F5AC2146p0", "0x4CDA0FD41.989F004E7p0", +"0x62ADFED51.D7EDCCDE6p0", "0x7EB50B520.76F91D6E8p0", "0xA2B1FD3D9.A57B6C33Cp0", "0xD0E7A50F4.EF0D7447Fp0", +"0x10C3D39209.62C88AAFBp0", "0x1586D0722B.3EEB27301p0", "0x1BA4068AAC.2B6E3EE34p0", "0x237DCBF1E5.709A9F9C1p0", +"0x2D9264D2D4.D6B94153Bp0", "0x3A83F23B18.FE5BD524Ap0", "0x4B22A1B5C3.27A2FD85Ap0", "0x6079C1866C.71A93951Dp0", +"0x7BE08BDFD9.CC72249ABp0", "0x9F0FB7309C.B446D3919p0", "0xCC3D265776.C3D25779Ep0", "0x1063F7612B0.C0831CA6Cp0", +"0x150BBA37963.79A4FB6ADp0", "0x1B05FA9B62E.737D935B8p0", "0x22B2DC5C41D.AD89559EBp0", "0x2C8DD1AB28B.404414BE7p0", +"0x39355C8C638.0AC5631B1p0", "0x49750434675.301B8D0E7p0", "0x5E521E7A16E.51F9CD3C2p0", "0x791C3B06F8B.EA2DEC48Cp0", +"0x9B823857614.764F43E20p0", "0xC7AD559D438.E7C270C30p0", "0x10063F4E687B.A1A43A35Bp0", "0x149363C905BA.3641D0164p0", +"0x1A6B765D8CDF.6CDBF1C63p0", "0x21EC75240E66.E2891CE63p0", "0x2B8F1073A6AF.BA219DB61p0", "0x37EE3FFC0063.E360F931Fp0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000001p0", "0x0.000000001p0", "0x0.000000002p0", +"0x0.000000002p0", "0x0.000000003p0", "0x0.000000004p0", "0x0.000000005p0", +"0x0.000000007p0", "0x0.000000009p0", "0x0.00000000Bp0", "0x0.00000000Ep0", +"0x0.000000013p0", "0x0.000000018p0", "0x0.00000001Fp0", "0x0.000000028p0", +"0x0.000000034p0", "0x0.000000042p0", "0x0.000000055p0", "0x0.00000006Ep0", +"0x0.00000008Dp0", "0x0.0000000B5p0", "0x0.0000000E9p0", "0x0.00000012Bp0", +"0x0.000000181p0", "0x0.0000001EEp0", "0x0.00000027Ap0", "0x0.00000032Fp0", +"0x0.000000416p0", "0x0.00000053Fp0", "0x0.0000006BDp0", "0x0.0000008A7p0", +"0x0.000000B1Cp0", "0x0.000000E44p0", "0x0.000001252p0", "0x0.000001786p0", +"0x0.000001E35p0", "0x0.0000026C9p0", "0x0.0000031CEp0", "0x0.000003FF3p0", +"0x0.00000521Dp0", "0x0.000006970p0", "0x0.000008762p0", "0x0.00000ADD6p0", +"0x0.00000DF36p0", "0x0.000011E9Cp0", "0x0.000017003p0", "0x0.00001D88Ap0", +"0x0.000025EC0p0", "0x0.000030B15p0", "0x0.00003E85Dp0", "0x0.00005047Ep0", +"0x0.000067153p0", "0x0.0000845C6p0", "0x0.0000A9F46p0", "0x0.0000DA39Ep0", +"0x0.000118354p0", "0x0.000167CB5p0", "0x0.0001CDFC2p0", "0x0.000251334p0", +"0x0.0002F9AF3p0", "0x0.0003D205Ap0", "0x0.0004E7CE2p0", "0x0.00064C7C6p0", +"0x0.000816791p0", "0x0.000A628A3p0", "0x0.000D55A1Fp0", "0x0.00111F30Fp0", +"0x0.0015FC210p0", "0x0.001C3AA91p0", "0x0.00243F374p0", "0x0.002E8ABFCp0", +"0x0.003BC2D73p0", "0x0.004CBC19Ap0", "0x0.006287862p0", "0x0.007E83A56p0", +"0x0.00A2728F8p0", "0x0.00D096336p0", "0x0.010BD4A5Ap0", "0x0.0157E6BFEp0", +"0x0.01B993FE0p0", "0x0.0236FF5BFp0", "0x0.02D80A08Dp0", "0x0.03A6D2222p0", +"0x0.04B0556E0p0", "0x0.0605424D5p0", "0x0.07BB04063p0", "0x0.09ED1B429p0", +"0x0.0CBED8666p0", "0x0.105D93892p0", "0x0.150385C09p0", "0x0.1AFB718E8p0", +"0x0.22A555477p0", "0x0.2C7C72FC0p0", "0x0.391F0EE49p0", "0x0.495860DCAp0", +"0x0.5E2D58D8Bp0", "0x0.78ED03AFBp0", "0x0.9B4597E37p0", "0x0.C75F7CF56p0", + }; + ap_ufixed<68,32> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<140,32> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_lsb_m_1; + ap_ufixed<68,32> y_lo_s = y_lo; + ap_ufixed<68,32> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + if (I_<33) { // overflow + bool overf = 0; + #pragma unroll + for (int j = 63; j >= I_+31; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 63; j >= I_+31; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+30; j >= 0; j--) + y[j] = 1; + } + } + r = y; + } + return r; +} +//implement exp() function with Input width larger than output width + +template +ap_fixed exp_core(ap_fixed x) +{ +#pragma HLS pipeline + + const static int FO_ = WO_ - I_; + const static int FI_ = WI_ - I_; + + //only support I_ < 33, FO_ < 32 and FI_ < 100 + if (I_>33) return 0; + else if (FO_>32) return 0; + else if (FI_>100) return 0; + + // I_s_ is the number of integer bits we need to calculate + // I_s_ = ceil( ln2 * max ( I_-1 , FO_ ) ) + // I_s_ = [1..6] + int I_s_; + int M_ = (I_-1>FO_) ? (I_-1) : FO_; + if (M_==1) I_s_ = 1; + else if (M_==2) I_s_ = 2; + else if (M_<6) I_s_ = 3; + else if (M_<12) I_s_ = 4; + else if (M_<24) I_s_ = 5; + else I_s_ = 6; + + ap_fixed r = 0; + + ap_ufixed<1,-FO_> delta = 0; + delta[0] = 1; + + if (I_s_==1) { // I_s_ = 1, M_ = 1, I_ <= 2, FO_ <= 1, WO <=3, WI <= 7 + //00.00000-00.01011 1.0 + //00.01100-01.11111 1.1 + //11.11111-11.01010 0.1 + //11.01001-10.00000 0.0 + //std::cout<<"x="<7 + ap_fixed x_l = x; + ap_ufixed<3,2> y = 0; + ap_ufixed<5,0> x_l_fract=0; + x_l_fract(4,0) = x_l(4,0); + //std::cout<<"[EXP]x_l="< exp_x_msb_table[32] = { + "0x1.00p0", "0x1.48p0", "0x1.A6p0", "0x2.1Dp0", "0x2.B7p0", "0x3.7Dp0", "0x4.7Bp0", "0x5.C1p0", + "0x0.22p0", "0x0.2Cp0", "0x0.39p0", "0x0.49p0", "0x0.5Ep0", "0x0.78p0", "0x0.9Bp0", "0x0.C7p0", + }; + ap_ufixed<5,2> exp_x_msb = exp_x_msb_table[x_msb_ind]; + //std::cout<<"exp_x_msb="< y_lo = x_lsb * exp_x_msb; + //std::cout<<"y_lo="< y_l = y_lo + exp_x_msb; + //std::cout<<"y_l="<= I_+1; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 4; j >= I_+1; j--) + y[j] = 0; + #pragma unroll + for (int j = I_; j >= 0; j--) + y[j] = 1; + } + r = y; + } else if (I_s_==3) { // I_s_ = 3, M_ = 3..5, I_ <= 6, FO_ <= 5/13, WO <=11, WI<=19 + //std::cout<<"[EXP]x="< x_l = x; + ap_ufixed<11,6> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(wf+2,wf); + ap_ufixed x_l_fract; + x_l_fract(wf-1,0) = x_l(wf-1,0); + //std::cout<<"x_l_fract="< x_msb_ind_1; + x_msb_ind_1[3] = x_l[w-1]; + //xx.x + x_msb_ind_1(2,0) = x_l(wf+1,wf-1); + //00.0xxxxx + ap_uint<6> x_msb_ind_2; + x_msb_ind_2(5,0) = x_l(wf-2,wf-7); + ap_ufixed<6,-1> x_msb_2 = x_l; + //00.000000xxxxx + ap_ufixed x_lsb = x_l; + + const static ap_ufixed exp_x_msb_2_m_1_table[64] = { + "0x0.0p0", "0x0.0202p0", "0x0.0408p0", "0x0.0612p0", + "0x0.0820p0", "0x0.0A32p0", "0x0.0C49p0", "0x0.0E63p0", + "0x0.1082p0", "0x0.12A5p0", "0x0.14CDp0", "0x0.16F9p0", + "0x0.1929p0", "0x0.1B5Dp0", "0x0.1D96p0", "0x0.1FD4p0", + "0x0.2216p0", "0x0.245Cp0", "0x0.26A7p0", "0x0.28F7p0", + "0x0.2B4Bp0", "0x0.2DA4p0", "0x0.3001p0", "0x0.3264p0", + "0x0.34CBp0", "0x0.3737p0", "0x0.39A8p0", "0x0.3C1Ep0", + "0x0.3E98p0", "0x0.4118p0", "0x0.439Dp0", "0x0.4627p0", + "0x0.48B5p0", "0x0.4B49p0", "0x0.4DE3p0", "0x0.5081p0", + "0x0.5325p0", "0x0.55CEp0", "0x0.587Cp0", "0x0.5B2Fp0", + "0x0.5DE9p0", "0x0.60A7p0", "0x0.636Bp0", "0x0.6635p0", + "0x0.6904p0", "0x0.6BD9p0", "0x0.6EB3p0", "0x0.7194p0", + "0x0.747Ap0", "0x0.7766p0", "0x0.7A57p0", "0x0.7D4Fp0", + "0x0.804Dp0", "0x0.8350p0", "0x0.865Ap0", "0x0.896Ap0", + "0x0.8C80p0", "0x0.8F9Cp0", "0x0.92BEp0", "0x0.95E7p0", + "0x0.9916p0", "0x0.9C4Bp0", "0x0.9F87p0", "0x0.A2C9p0", + }; + //6*6 + ap_ufixed<5,-8> f_x_msb_2_lsb = x_msb_2 * x_lsb;//Z_5*Z_lsb //1u + //std::cout<<"f_x_msb_2_lsb="< f_x_msb_2_lsb_m_1_m=0; + f_x_msb_2_lsb_m_1_m(5,0) = x_lsb(5,0); + f_x_msb_2_lsb_m_1_m = f_x_msb_2_lsb_m_1_m + f_x_msb_2_lsb;//1u + //std::cout<<"f_x_msb_2_lsb_m_1_m="< exp_x_msb_2_m_1 = exp_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed exp_x_msb_2_lsb_m_1 = f_x_msb_2_lsb_m_1_m + exp_x_msb_2_m_1;//2u + //std::cout<<"exp_x_msb_2_m_1="< exp_x_msb_1_table[16] = { + "0x1.0000p0", "0x1.A612p0", "0x2.B7E1p0", "0x4.7B4Fp0", + "0x7.6399p0", "0xC.2EB7p0", "0x14.15E5p0", "0x21.1D8Ep0", + "0x0.04B0p0", "0x0.07BBp0", "0x0.0CBEp0", "0x0.1503p0", + "0x0.22A5p0", "0x0.391Fp0", "0x0.5E2Dp0", "0x0.9B45p0", + + }; + ap_ufixed exp_x_msb = exp_x_msb_1_table[x_msb_ind_1]; + //13*13--1 DSP + ap_ufixed<2*Maxprecision+1,6> y_lo = exp_x_msb * exp_x_msb_2_lsb_m_1;//1u + ap_ufixed y_lo_s = y_lo; + ap_ufixed y_l = y_lo_s + exp_x_msb;// + y = y_l; + //std::cout<<"[EXP]y="<= I_+4; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 10; j >= I_+4; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+3; j >= 0; j--) + y[j] = 1; + } + //} + r = y; + } else if (I_s_==4) { // I_s_ = 4, M_ = 6..11, I_ <= 12, FO_ <= 11/25, WO <=23, WI <= 37 + //std::cout<<"x="< x_l = x; + ap_ufixed<23,12> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(wf+3,wf); + ap_ufixed x_l_fract; + x_l_fract(wf-1,0) = x_l(wf-1,0); + bool overf = 0; + #pragma unroll + for (int j = wf+3; j < w-1; j++) + if (x_l[w-1]!=x_l[j]) + overf = 1; + if (overf||((x_l_int==7)&&(x_l_fract>ap_ufixed("0x0.9fe7038p0")))) { // overflow + if (!x_l[w-1]) { + #pragma unroll + for (int j = 0; j < 22; j++) y[j] = 1; + } + } else { + const static int g = 2; + const static int Maxprecision = 25;//we+FO_+g=11+12+2=25 + ap_uint<5> x_msb_ind_1; + x_msb_ind_1[4] = x_l[w-1]; + x_msb_ind_1(3,0) = x_l(wf+2,wf-1); + + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(wf-2,wf-6); + ap_ufixed<5,-1> x_msb_2 = x_l; + + ap_uint<7> x_msb_ind_3; + x_msb_ind_3(6,0) = x_l(wf-7,wf-13); + ap_ufixed<7,-6> x_msb_3 = x_l; + + ap_ufixed<7,-13> x_lsb = x_l; + //to 25-bit + const static ap_ufixed<12,-13> f_x_msb_3_m_1_table[128] = { +"0x0.0p0", "0x0.0000002p0", "0x0.0000008p0", "0x0.0000012p0", +"0x0.0000020p0", "0x0.0000032p0", "0x0.0000048p0", "0x0.0000062p0", +"0x0.0000080p0", "0x0.00000A2p0", "0x0.00000C8p0", "0x0.00000F2p0", +"0x0.0000120p0", "0x0.0000152p0", "0x0.0000188p0", "0x0.00001C2p0", +"0x0.0000200p0", "0x0.0000242p0", "0x0.0000288p0", "0x0.00002D2p0", +"0x0.0000320p0", "0x0.0000372p0", "0x0.00003C8p0", "0x0.0000422p0", +"0x0.0000481p0", "0x0.00004E3p0", "0x0.0000549p0", "0x0.00005B3p0", +"0x0.0000621p0", "0x0.0000693p0", "0x0.000070Ap0", "0x0.0000784p0", +"0x0.0000802p0", "0x0.0000884p0", "0x0.000090Bp0", "0x0.0000995p0", +"0x0.0000A23p0", "0x0.0000AB6p0", "0x0.0000B4Cp0", "0x0.0000BE6p0", +"0x0.0000C85p0", "0x0.0000D27p0", "0x0.0000DCEp0", "0x0.0000E78p0", +"0x0.0000F26p0", "0x0.0000FD9p0", "0x0.000108Fp0", "0x0.000114Ap0", +"0x0.0001209p0", "0x0.00012CBp0", "0x0.0001392p0", "0x0.000145Cp0", +"0x0.000152Bp0", "0x0.00015FEp0", "0x0.00016D4p0", "0x0.00017AFp0", +"0x0.000188Ep0", "0x0.0001971p0", "0x0.0001A57p0", "0x0.0001B42p0", +"0x0.0001C31p0", "0x0.0001D24p0", "0x0.0001E1Bp0", "0x0.0001F16p0", +"0x0.0002015p0", "0x0.0002118p0", "0x0.000221Fp0", "0x0.000232Ap0", +"0x0.0002439p0", "0x0.000254Cp0", "0x0.0002663p0", "0x0.000277Fp0", +"0x0.000289Ep0", "0x0.00029C1p0", "0x0.0002AE9p0", "0x0.0002C14p0", +"0x0.0002D43p0", "0x0.0002E77p0", "0x0.0002FAEp0", "0x0.00030EAp0", +"0x0.0003229p0", "0x0.000336Dp0", "0x0.00034B4p0", "0x0.0003600p0", +"0x0.0003750p0", "0x0.00038A4p0", "0x0.00039FBp0", "0x0.0003B57p0", +"0x0.0003CB7p0", "0x0.0003E1Bp0", "0x0.0003F83p0", "0x0.00040EFp0", +"0x0.000425Fp0", "0x0.00043D3p0", "0x0.000454Bp0", "0x0.00046C7p0", +"0x0.0004848p0", "0x0.00049CCp0", "0x0.0004B54p0", "0x0.0004CE1p0", +"0x0.0004E71p0", "0x0.0005006p0", "0x0.000519Ep0", "0x0.000533Bp0", +"0x0.00054DBp0", "0x0.0005680p0", "0x0.0005829p0", "0x0.00059D6p0", +"0x0.0005B86p0", "0x0.0005D3Bp0", "0x0.0005EF4p0", "0x0.00060B1p0", +"0x0.0006272p0", "0x0.0006437p0", "0x0.0006600p0", "0x0.00067CEp0", +"0x0.000699Fp0", "0x0.0006B74p0", "0x0.0006D4Ep0", "0x0.0006F2Bp0", +"0x0.000710Dp0", "0x0.00072F2p0", "0x0.00074DCp0", "0x0.00076CAp0", +"0x0.00078BBp0", "0x0.0007AB1p0", "0x0.0007CABp0", "0x0.0007EA9p0", + }; + //7*7 + ap_ufixed<6,-19> f_x_msb_3_lsb = x_msb_3 * x_lsb;//1u + //std::cout<<"f_x_msb_3_lsb="< f_x_msb_3 = f_x_msb_3_m_1_table[x_msb_ind_3]; + //std::cout<<"f_x_msb_3="< exp_x_msb_3_lsb_m_1_m = 0; + exp_x_msb_3_lsb_m_1_m(11,0) = f_x_msb_3(11,0); + exp_x_msb_3_lsb_m_1_m = exp_x_msb_3_lsb_m_1_m + f_x_msb_3_lsb;//2u + //std::cout<<"exp_x_msb_3_lsb_m_1_m="< x_msb_3_lsb = x_l; + //std::cout<<"x_msb_3_lsb="< exp_x_msb_3_lsb_m_1 = 0;//carry in + exp_x_msb_3_lsb_m_1(18,0) = x_msb_3_lsb(18,0); + exp_x_msb_3_lsb_m_1 = exp_x_msb_3_lsb_m_1+ exp_x_msb_3_lsb_m_1_m;//2u + //std::cout<<"exp_x_msb_3_lsb_m_1_m="< exp_x_msb_2_m_1_table[32] = { + "0x0.0000000p0", "0x0.04080a8p0", "0x0.0820560p0", "0x0.0c49238p0", + "0x0.1082b58p0", "0x0.14cd500p0", "0x0.1929370p0", "0x0.1d96b10p0", + "0x0.2216048p0", "0x0.26a7790p0", "0x0.2b4b588p0", "0x0.3001ed0p0", + "0x0.34cb818p0", "0x0.39a8628p0", "0x0.3e98de8p0", "0x0.439d440p0", + "0x0.48b5e40p0", "0x0.4de30f0p0", "0x0.5325180p0", "0x0.587c540p0", + "0x0.5de9178p0", "0x0.636bb98p0", "0x0.6904930p0", "0x0.6eb3fc8p0", + "0x0.747a510p0", "0x0.7a57ee0p0", "0x0.804d300p0", "0x0.865a778p0", + "0x0.8c80248p0", "0x0.92be998p0", "0x0.99163b0p0", "0x0.9f876e8p0", + }; + ap_ufixed<25, 0> exp_x_msb_2_m_1 = exp_x_msb_2_m_1_table[x_msb_ind_2]; + //25*25 + ap_ufixed<50,-5> f_x_msb_2_3_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_lsb_m_1; + ap_ufixed<20,-5> f_x_msb_2_3_lsb_s = f_x_msb_2_3_lsb; + ap_ufixed<25, 0> exp_x_msb_2_3_lsb_m_1 = f_x_msb_2_3_lsb_s + exp_x_msb_3_lsb_m_1 + exp_x_msb_2_m_1;//3u + //std::cout<<"exp_x_msb_2_3_lsb_m_1="< exp_x_msb_1_table[32] = { + "0x1.0000p0", "0x1.a614p0", "0x2.b7e0p0", "0x4.7b50p0", + "0x7.6398p0", "0xc.2eb8p0", "0x14.15e4p0", "0x21.1d90p0", + "0x36.9920p0", "0x5a.0464p0", "0x94.69c4p0", "0xf4.b124p0", + "0x193.6dc4p0", "0x299.2444p0", "0x448.a218p0", "0x710.0adcp0", + "0x0.0014p0", "0x0.0024p0", "0x0.003cp0", "0x0.0064p0", + "0x0.00a4p0", "0x0.010cp0", "0x0.01b8p0", "0x0.02d8p0", + "0x0.04b0p0", "0x0.07bcp0", "0x0.0cc0p0", "0x0.1504p0", + "0x0.22a4p0", "0x0.3920p0", "0x0.5e2cp0", "0x0.9b44p0", + }; + ap_ufixed<25,11> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + //std::cout<<"exp_x_msb_1="< y_lo = exp_x_msb_1 * exp_x_msb_2_3_lsb_m_1; + //std::cout<<"y_lo="< y_lo_s = y_lo; + //std::cout<<"y_lo_s="< y_l = y_lo_s + exp_x_msb_1; + //std::cout<<"y_l="< x_msb_ind_1; + x_msb_ind_1[7] = x_l[w-1]; + x_msb_ind_1(6,0) = x_l(wf+3,wf-3); + + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(wf-4,wf-11); + ap_uint<5> x_msb_ind_3; + x_msb_ind_3(4,0) = x_l(wf-12,wf-16); + ap_uint<3> x_msb_ind_4; + x_msb_ind_4(2,0) = x_l(wf-17,wf-19); + + ap_uint<6> x_msb_ind_5; + x_msb_ind_5(5,0) = x_l(wf-20,wf-25); + + ap_ufixed<8, -3> x_msb_2 = x_l; + ap_ufixed<5,-11> x_msb_3 = x_l; + ap_ufixed<3,-16> x_msb_4 = x_l; + ap_ufixed<6,-19> x_msb_5 = x_l; + //truncate + ap_ufixed<7,-25> x_lsb = x_l; + + const static ap_ufixed<12,-39> f_x_msb_5_table[64] = { +"0x0.0000000000000p0", "0x0.0000000000002p0", "0x0.0000000000008p0", "0x0.0000000000012p0", +"0x0.0000000000020p0", "0x0.0000000000032p0", "0x0.0000000000048p0", "0x0.0000000000062p0", +"0x0.0000000000080p0", "0x0.00000000000A2p0", "0x0.00000000000C8p0", "0x0.00000000000F2p0", +"0x0.0000000000120p0", "0x0.0000000000152p0", "0x0.0000000000188p0", "0x0.00000000001C2p0", +"0x0.0000000000200p0", "0x0.0000000000242p0", "0x0.0000000000288p0", "0x0.00000000002D2p0", +"0x0.0000000000320p0", "0x0.0000000000372p0", "0x0.00000000003C8p0", "0x0.0000000000422p0", +"0x0.0000000000480p0", "0x0.00000000004E2p0", "0x0.0000000000548p0", "0x0.00000000005B2p0", +"0x0.0000000000620p0", "0x0.0000000000692p0", "0x0.0000000000708p0", "0x0.0000000000782p0", +"0x0.0000000000800p0", "0x0.0000000000882p0", "0x0.0000000000908p0", "0x0.0000000000992p0", +"0x0.0000000000A20p0", "0x0.0000000000AB2p0", "0x0.0000000000B48p0", "0x0.0000000000BE2p0", +"0x0.0000000000C80p0", "0x0.0000000000D22p0", "0x0.0000000000DC8p0", "0x0.0000000000E72p0", +"0x0.0000000000F20p0", "0x0.0000000000FD2p0", "0x0.0000000001088p0", "0x0.0000000001142p0", +"0x0.0000000001200p0", "0x0.00000000012C2p0", "0x0.0000000001388p0", "0x0.0000000001452p0", +"0x0.0000000001520p0", "0x0.00000000015F2p0", "0x0.00000000016C8p0", "0x0.00000000017A2p0", +"0x0.0000000001880p0", "0x0.0000000001962p0", "0x0.0000000001A48p0", "0x0.0000000001B32p0", +"0x0.0000000001C20p0", "0x0.0000000001D12p0", "0x0.0000000001E08p0", "0x0.0000000001F02p0", + + }; + ap_ufixed<12,-39> f_x_msb_5 = f_x_msb_5_table[x_msb_ind_5]; + + const static ap_ufixed<7,-33> f_x_msb_4_table[8] = { +"0x0.0000000000p0", "0x0.0000000002p0", "0x0.0000000008p0", "0x0.0000000012p0", +"0x0.0000000020p0", "0x0.0000000032p0", "0x0.0000000048p0", "0x0.0000000062p0", + }; + ap_ufixed<7,-33> f_x_msb_4 = f_x_msb_4_table[x_msb_ind_4]; + //6*7 + ap_ufixed<7,-44> f_x_msb_5_lsb = x_msb_5 * x_lsb;//Z_lsb*Z_5 //1u + + ap_ufixed<16,-19> x_msb_5_lsb = x_l; + //3*16 + ap_ufixed<19,-35> f_x_msb_4_5_lsb = x_msb_5_lsb * x_msb_4;//(Z_5+Z_lsb)*Z_4 + ap_ufixed<16,-35> f_x_msb_4_5_lsb_s = f_x_msb_4_5_lsb;//1u + + ap_ufixed<13,-38> exp_x_msb_4_5_lsb_m_1_m3 = 0; + exp_x_msb_4_5_lsb_m_1_m3(11,0)=f_x_msb_5(11,0); + exp_x_msb_4_5_lsb_m_1_m3 = exp_x_msb_4_5_lsb_m_1_m3+f_x_msb_5_lsb;//3u + + ap_ufixed<17,-34> exp_x_msb_4_5_lsb_m_1_m4 = 0; + exp_x_msb_4_5_lsb_m_1_m4(15,0)=f_x_msb_4_5_lsb_s(15,0); + exp_x_msb_4_5_lsb_m_1_m4 = exp_x_msb_4_5_lsb_m_1_m4 + f_x_msb_4_5_lsb_s;//4u + + ap_ufixed<8,-32> exp_x_msb_4_5_lsb_m_1_m5_s = 0; + exp_x_msb_4_5_lsb_m_1_m5_s(5,0)=exp_x_msb_4_5_lsb_m_1_m4(16,11); + exp_x_msb_4_5_lsb_m_1_m5_s = f_x_msb_4+exp_x_msb_4_5_lsb_m_1_m5_s;//5u + + ap_ufixed<19,-32> exp_x_msb_4_5_lsb_m_1_m5 = exp_x_msb_4_5_lsb_m_1_m5_s; + exp_x_msb_4_5_lsb_m_1_m5(10,0)=exp_x_msb_4_5_lsb_m_1_m4(10,0); + + ap_ufixed<32,-15> exp_x_msb_4_5_lsb_m_1_m6 = 0; + ap_ufixed x_msb_4_5_lsb = x_l; + exp_x_msb_4_5_lsb_m_1_m6(14,0) = exp_x_msb_4_5_lsb_m_1_m5(18,4); + exp_x_msb_4_5_lsb_m_1_m6 = exp_x_msb_4_5_lsb_m_1_m6 + x_msb_4_5_lsb; + ap_ufixed<36,-15> exp_x_msb_4_5_lsb_m_1 = exp_x_msb_4_5_lsb_m_1_m6; + exp_x_msb_4_5_lsb_m_1(3,0) = exp_x_msb_4_5_lsb_m_1_m5(3,0); + + + const static ap_ufixed<32,-23> f_x_msb_3_table[32] = { +"0x0.00000000000000p0", "0x0.0000000080002ap0", "0x0.00000002000156p0", "0x0.00000004800480p0", +"0x0.00000008000aaap0", "0x0.0000000c8014d6p0", "0x0.00000012002400p0", "0x0.0000001880392cp0", +"0x0.00000020005556p0", "0x0.00000028807982p0", "0x0.0000003200a6acp0", "0x0.0000003c80ddd8p0", +"0x0.00000048012004p0", "0x0.00000054816e30p0", "0x0.0000006201c95cp0", "0x0.00000070823288p0", +"0x0.0000008002aab6p0", "0x0.000000908332e2p0", "0x0.000000a203cc12p0", "0x0.000000b4847740p0", +"0x0.000000c8053570p0", "0x0.000000dc8607a0p0", "0x0.000000f206eed0p0", "0x0.0000010887ec02p0", +"0x0.00000120090036p0", "0x0.000001388a2c6ap0", "0x0.000001520b71a0p0", "0x0.0000016c8cd0d6p0", +"0x0.000001880e4b0ep0", "0x0.000001a48fe148p0", "0x0.000001c2119484p0", "0x0.000001e09365c0p0", + }; + + ap_ufixed<32,-23> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<44,-11> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(43,39) = x_msb_3(4,0); + exp_x_msb_3_m_1(31, 0) = f_x_msb_3(31,0); + + //32*43 = (17+17)*(24+24) + ap_ufixed<80,-26> f_x_msb_3_4_lsb = exp_x_msb_3_m_1 * exp_x_msb_4_5_lsb_m_1;//1u + ap_ufixed<31,-26> f_x_msb_3_4_lsb_s = f_x_msb_3_4_lsb; + ap_ufixed<48,-10> exp_x_msb_3_4_lsb_m_1 = f_x_msb_3_4_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_5_lsb_m_1;//1u+1u+5u=7u + + + const static ap_ufixed<46,-6> f_x_msb_2_table[256] = { +"0x0.0p0", "0x0.0000020015560p0", "0x0.00000800AAB55p0", "0x0.0000120240360p0", +"0x0.0000200556001p0", "0x0.0000320A6C4B8p0", "0x0.0000481203608p0", "0x0.0000621C9B971p0", +"0x0.0000802AB5577p0", "0x0.0000A23CD119Dp0", "0x0.0000C8536F668p0", "0x0.0000F26F10D5Dp0", +"0x0.0001209036103p0", "0x0.000152B75FCE3p0", "0x0.000188E50ED86p0", "0x0.0001C319C4077p0", +"0x0.0002015600445p0", "0x0.0002439A4487Ep0", "0x0.000289E711DB3p0", "0x0.0002D43CE9577p0", +"0x0.0003229C4C260p0", "0x0.00037505BB805p0", "0x0.0003CB79B8B01p0", "0x0.000425F8C50F2p0", +"0x0.0004848362076p0", "0x0.0004E71A11131p0", "0x0.00054DBD53BC8p0", "0x0.0005B86DAB9E3p0", +"0x0.0006272B9A630p0", "0x0.000699F7A1C5Dp0", "0x0.000710D24391Ep0", "0x0.00078BBC01A29p0", +"0x0.00080AB55DE39p0", "0x0.00088DBEDA50Bp0", "0x0.000914D8F8F63p0", "0x0.0009A0043BF07p0", +"0x0.000A2F41256C2p0", "0x0.000AC29037A63p0", "0x0.000B59F1F4EBDp0", "0x0.000BF566DF9AAp0", +"0x0.000C94EF7A206p0", "0x0.000D388C46FB4p0", "0x0.000DE03DC8B9Bp0", "0x0.000E8C0481FA7p0", +"0x0.000F3BE0F56CAp0", "0x0.000FEFD3A5CFAp0", "0x0.0010A7DD15F36p0", "0x0.001163FDC8B7Fp0", +"0x0.00122436410DDp0", "0x0.0012E88701F5Ep0", "0x0.0013B0F08E817p0", "0x0.00147D7369D22p0", +"0x0.00154E101719Fp0", "0x0.001622C7199B7p0", "0x0.0016FB98F4A96p0", "0x0.0017D8862BA72p0", +"0x0.0018B98F42084p0", "0x0.00199EB4BB511p0", "0x0.001A87F71B161p0", "0x0.001B7556E4FC4p0", +"0x0.001C66D49CB93p0", "0x0.001D5C70C612Dp0", "0x0.001E562BE4DFAp0", "0x0.001F54067D067p0", +"0x0.00205601127ECp0", "0x0.00215C1C29507p0", "0x0.0022665845940p0", "0x0.002374B5EB724p0", +"0x0.002487359F24Cp0", "0x0.00259DD7E4F57p0", "0x0.0026B89D413EFp0", "0x0.0027D786386C4p0", +"0x0.0028FA934EF90p0", "0x0.002A21C509717p0", "0x0.002B4D1BEC726p0", "0x0.002C7C987CA92p0", +"0x0.002DB03B3ED3Ap0", "0x0.002EE804B7C07p0", "0x0.003023F56C4ECp0", "0x0.0031640DE16E3p0", +"0x0.0032A84E9C1F5p0", "0x0.0033F0B821730p0", "0x0.00353D4AF68B0p0", "0x0.00368E07A0999p0", +"0x0.0037E2EEA4E19p0", "0x0.00393C0088B6Cp0", "0x0.003A993DD17D5p0", "0x0.003BFAA704AA3p0", +"0x0.003D603CA7C32p0", "0x0.003EC9FF405E6p0", "0x0.004037EF54230p0", "0x0.0041AA0D68C8Cp0", +"0x0.0043205A04182p0", "0x0.00449AD5ABEA5p0", "0x0.00461980E6294p0", "0x0.00479C5C38CF9p0", +"0x0.0049236829E8Bp0", "0x0.004AAEA53F90Ep0", "0x0.004C3E13FFF51p0", "0x0.004DD1B4F152Fp0", +"0x0.004F698899F90p0", "0x0.0051058F8046Ap0", "0x0.0052A5CA2AABFp0", "0x0.00544A391FA9Cp0", +"0x0.0055F2DCE5D1Ep0", "0x0.00579FB603C6Ep0", "0x0.005950C5003C2p0", "0x0.005B060A61F5Dp0", +"0x0.005CBF86AFC91p0", "0x0.005E7D3A709BEp0", "0x0.00603F262B650p0", "0x0.0062054A672C2p0", +"0x0.0063CFA7AB09Dp0", "0x0.00659E3E7E278p0", "0x0.0067710F67BFAp0", "0x0.0069481AEF1D5p0", +"0x0.006B23619B9CFp0", "0x0.006D02E3F4AB7p0", "0x0.006EE6A281C6Fp0", "0x0.0070CE9DCA7E6p0", +"0x0.0072BAD65671Bp0", "0x0.0074AB4CAD51Cp0", "0x0.0076A00156E07p0", "0x0.007898F4DAF09p0", +"0x0.007A9627C165Fp0", "0x0.007C979A92356p0", "0x0.007E9D4DD564Ap0", "0x0.0080A742130A8p0", +"0x0.0082B577D34EDp0", "0x0.0084C7EF9E6A7p0", "0x0.0086DEA9FCA73p0", "0x0.0088F9A776601p0", +"0x0.008B18E894010p0", "0x0.008D3C6DDE06Fp0", "0x0.008F6437DD000p0", "0x0.00919047198B6p0", +"0x0.0093C09C1C595p0", "0x0.0095F5376E2B2p0", "0x0.00982E1997D33p0", "0x0.009A6B4322352p0", +"0x0.009CACB496458p0", "0x0.009EF26E7D0A2p0", "0x0.00A13C715F99Ep0", "0x0.00A38ABDC71CEp0", +"0x0.00A5DD543CCC4p0", "0x0.00A8343549F26p0", "0x0.00AA8F6177EADp0", "0x0.00ACEED950222p0", +"0x0.00AF529D5C165p0", "0x0.00B1BAAE25566p0", "0x0.00B4270C3582Ap0", "0x0.00B697B8164C7p0", +"0x0.00B90CB25176Ap0", "0x0.00BB85FB70D50p0", "0x0.00BE0393FE4CCp0", "0x0.00C0857C83D44p0", +"0x0.00C30BB58B732p0", "0x0.00C5963F9F424p0", "0x0.00C8251B496BEp0", "0x0.00CAB849142B5p0", +"0x0.00CD4FC989CD6p0", "0x0.00CFEB9D34B00p0", "0x0.00D28BC49F428p0", "0x0.00D5304054059p0", +"0x0.00D7D910DD8B1p0", "0x0.00DA8636C6764p0", "0x0.00DD37B2997BCp0", "0x0.00DFED84E1618p0", +"0x0.00E2A7AE28FECp0", "0x0.00E5662EFB3C3p0", "0x0.00E82907E313Dp0", "0x0.00EAF0396B910p0", +"0x0.00EDBBC41FD08p0", "0x0.00F08BA88B009p0", "0x0.00F35FE73860Bp0", "0x0.00F63880B341Ep0", +"0x0.00F9157587069p0", "0x0.00FBF6C63F228p0", "0x0.00FEDC73671B0p0", "0x0.0101C67D8A86Cp0", +"0x0.0104B4E5350DFp0", "0x0.0107A7AAF26A2p0", "0x0.010A9ECF4E667p0", "0x0.010D9A52D4DF8p0", +"0x0.01109A3611C34p0", "0x0.01139E7991116p0", "0x0.0116A71DDEDADp0", "0x0.0119B42387423p0", +"0x0.011CC58B167B9p0", "0x0.011FDB5518CCAp0", "0x0.0122F5821A8C7p0", "0x0.01261412A823Cp0", +"0x0.012937074E0CDp0", "0x0.012C5E6098D37p0", "0x0.012F8A1F15151p0", "0x0.0132BA434F80Ap0", +"0x0.0135EECDD4D6Cp0", "0x0.013927BF31E98p0", "0x0.013C6517F39CCp0", "0x0.013FA6D8A6E5Dp0", +"0x0.0142ED01D8CBCp0", "0x0.0146379416673p0", "0x0.0149868FECE26p0", "0x0.014CD9F5E9795p0", +"0x0.015031C699799p0", "0x0.01538E028A426p0", "0x0.0156EEAA4944Bp0", "0x0.015A53BE64033p0", +"0x0.015DBD3F68122p0", "0x0.01612B2DE3178p0", "0x0.01649D8A62CB1p0", "0x0.0168145574F65p0", +"0x0.016B8F8FA7745p0", "0x0.016F0F3988321p0", "0x0.01729353A52E4p0", "0x0.01761BDE8C792p0", +"0x0.0179A8DACC350p0", "0x0.017D3A48F295Dp0", "0x0.0180D0298DE13p0", "0x0.01846A7D2C6ECp0", +"0x0.018809445CA7Bp0", "0x0.018BAC7FAD074p0", "0x0.018F542FAC1A4p0", "0x0.01930054E87F8p0", +"0x0.0196B0EFF0E79p0", "0x0.019A66015414Dp0", "0x0.019E1F89A0DBAp0", "0x0.01A1DD8966221p0", +"0x0.01A5A00132E02p0", "0x0.01A966F1961FCp0", "0x0.01AD325B1EFC9p0", "0x0.01B1023E5CA45p0", +"0x0.01B4D69BDE569p0", "0x0.01B8AF743364Cp0", "0x0.01BC8CC7EB323p0", "0x0.01C06E9795345p0", +"0x0.01C454E3C0F24p0", "0x0.01C83FACFE054p0", "0x0.01CC2EF3DC187p0", "0x0.01D022B8EAE8Fp0", +"0x0.01D41AFCBA45Ep0", "0x0.01D817BFDA104p0", "0x0.01DC1902DA3B1p0", "0x0.01E01EC64ACB7p0", +"0x0.01E4290ABBD87p0", "0x0.01E837D0BD8B2p0", "0x0.01EC4B18E01E9p0", "0x0.01F062E3B3DFEp0", +"0x0.01F47F31C92E4p0", "0x0.01F8A003B07AFp0", "0x0.01FCC559FA492p0", "0x0.0200EF35372E4p0", +"0x0.02051D95F7D1Cp0", "0x0.0209507CCCED1p0", "0x0.020D87EA474BEp0", "0x0.0211C3DEF7CBDp0", + }; + ap_ufixed<46,-6> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 5,-6> f_x_msb_2_h; + f_x_msb_2_h(4,0) = f_x_msb_2(45,41); + ap_ufixed< 9,-2> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<50,-2> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(49,41) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(40, 0) = f_x_msb_2(40,0); + //50*48=(17+17+17)*(24+24) + ap_ufixed<98,-12> f_x_msb_2_3_4_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_lsb_m_1;//1u + ap_ufixed<46,-12> f_x_msb_2_3_4_lsb_s = f_x_msb_2_3_4_lsb; + ap_ufixed<50,-2> exp_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_3_4_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_lsb_m_1;//9u + + const static ap_ufixed<50,23> exp_x_msb_1_table[256] = { +"0x1.0000000p0", "0x1.2216045p0", "0x1.48B5E3Cp0", "0x1.747A513p0", +"0x1.A61298Ep0", "0x1.DE455DFp0", "0x2.1DF3B68p0", "0x2.661CB0Fp0", +"0x2.B7E1516p0", "0x3.1489176p0", "0x3.7D871DBp0", "0x3.F47FE87p0", +"0x4.7B4FF99p0", "0x5.1413452p0", "0x5.C12DA41p0", "0x6.855466Ep0", +"0x7.63992E3p0", "0x8.5F7635Bp0", "0x9.7CDC417p0", "0xA.C042667p0", +"0xC.2EB7EC9p0", "0xD.CDF892Ep0", "0xF.A48385Ep0", "0x11.B9B5652p0", +"0x14.15E5BF6p0", "0x16.C2887C1p0", "0x19.CA53B78p0", "0x1D.396AA97p0", +"0x21.1D8E427p0", "0x25.865441Cp0", "0x2A.8565A14p0", "0x30.2EC550Bp0", +"0x36.99205C4p0", "0x3D.DE28BF3p0", "0x46.1AFC4DBp0", "0x4F.7099532p0", +"0x5A.0462B78p0", "0x66.00B5BC9p0", "0x73.9593ABBp0", "0x82.F9621ADp0", +"0x94.69C4CB8p0", "0xA8.2C948C1p0", "0xBE.90F6F83p0", "0xD7.F09B78Cp0", +"0xF4.B122790p0", "0x115.45B4704p0", "0x13A.30CF1CCp0", "0x164.0650296p0", +"0x193.6DC5690p0", "0x1C9.250BEDCp0", "0x206.03487A3p0", "0x24A.FC4533Cp0", +"0x299.2442102p0", "0x2F1.B447462p0", "0x356.0F0B0F9p0", "0x3C7.C67E5BEp0", +"0x448.A216ABBp0", "0x4DA.A5EE46Ap0", "0x580.1AD754Fp0", "0x63B.9782341p0", +"0x710.0ADBAC7p0", "0x800.C7CC8E3p0", "0x911.9289C39p0", "0xA46.AFAA2ADp0", +"0xBA4.F53EA38p0", "0xD31.DE30C52p0", "0xEF3.A035D57p0", "0x10F1.44ADE60p0", +"0x1332.C4D2B7Cp0", "0x15C1.29A744Cp0", "0x18A6.B027DA0p0", "0x1BEE.F24BB12p0", +"0x1FA7.157C470p0", "0x23DD.FF3C8BAp0", "0x28A4.90D2CCEp0", "0x2E0D.EAE454Bp0", +"0x342F.BA11823p0", "0x3B22.8DC5359p0", "0x4302.3A933EEp0", "0x4BEE.49AFCDCp0", +"0x560A.773E541p0", "0x617F.4171BF9p0", "0x6E7A.8ABB4A8p0", "0x7D30.5191764p0", +"0x8DDB.80AF426p0", "0xA0BE.DB0DB10p0", "0xB626.0748BAEp0", "0xCE66.BE9EAADp0", +"0xE9E2.2447727p0", "0x10906.4A831F8p0", "0x12C4F.EB75B2Ap0", "0x1544C.5CB6133p0", +"0x1819B.C560F61p0", "0x1B4F3.9F8AF64p0", "0x1EF21.8F1B001p0", "0x2310E.996C40Fp0", +"0x27BC2.CA9A6F9p0", "0x2D069.571279Ap0", "0x33055.49F35D9p0", "0x39D06.D2FEF17p0", +"0x41831.49596E9p0", "0x4A3C1.FB2AC39p0", "0x541E7.E56949Dp0", "0x5F51C.72B7532p0", +"0x6C02D.645AB25p0", "0x7A648.0CFF534p0", "0x8AB06.0A3EE9Fp0", "0x9D27B.AFE4CF1p0", +"0xB2148.5EAE56Cp0", "0xC9CA9.07F86EFp0", "0xE4A8D.2881EDBp0", "0x1031AE.8E4996Cp0", +"0x1259AC.48BF05Dp0", "0x14CB29.2F2B31Fp0", "0x178FEE.7792E44p0", "0x1AB312.E89CD0Dp0", +"0x1E4127.437732Bp0", "0x224868.979FC2Ep0", "0x26D8F9.4A204BEp0", "0x2C0521.B4A8E0Bp0", +"0x31E199.5F5A550p0", "0x3885D9.FA89D00p0", "0x400C7D.64D3386p0", "0x4893A8.361032Dp0", +"0x523D82.79EDAEFp0", "0x5D30C0.7DAB686p0", "0x69993D.D4F2D95p0", "0x77A8AD.02A7C71p0", +"0x0.000001Ep0", "0x0.0000022p0", "0x0.0000026p0", "0x0.000002Bp0", +"0x0.0000031p0", "0x0.0000038p0", "0x0.000003Fp0", "0x0.0000048p0", +"0x0.0000052p0", "0x0.000005Dp0", "0x0.0000069p0", "0x0.0000077p0", +"0x0.0000087p0", "0x0.0000099p0", "0x0.00000ADp0", "0x0.00000C4p0", +"0x0.00000DFp0", "0x0.00000FCp0", "0x0.000011Ep0", "0x0.0000144p0", +"0x0.0000170p0", "0x0.00001A1p0", "0x0.00001D8p0", "0x0.0000217p0", +"0x0.000025Ep0", "0x0.00002AFp0", "0x0.000030Bp0", "0x0.0000372p0", +"0x0.00003E8p0", "0x0.000046Dp0", "0x0.0000504p0", "0x0.00005AFp0", +"0x0.0000671p0", "0x0.000074Cp0", "0x0.0000845p0", "0x0.000095Fp0", +"0x0.0000A9Fp0", "0x0.0000C09p0", "0x0.0000DA3p0", "0x0.0000F74p0", +"0x0.0001183p0", "0x0.00013D8p0", "0x0.000167Cp0", "0x0.000197Bp0", +"0x0.0001CDFp0", "0x0.00020B7p0", "0x0.0002513p0", "0x0.0002A02p0", +"0x0.0002F9Ap0", "0x0.00035F1p0", "0x0.0003D20p0", "0x0.0004543p0", +"0x0.0004E7Cp0", "0x0.00058F0p0", "0x0.00064C7p0", "0x0.0007232p0", +"0x0.0008167p0", "0x0.00092A2p0", "0x0.000A628p0", "0x0.000BC48p0", +"0x0.000D55Ap0", "0x0.000F1C2p0", "0x0.00111F3p0", "0x0.001366Cp0", +"0x0.0015FC2p0", "0x0.0018E98p0", "0x0.001C3AAp0", "0x0.001FFCEp0", +"0x0.00243F3p0", "0x0.002912Bp0", "0x0.002E8ABp0", "0x0.0034BD2p0", +"0x0.003BC2Dp0", "0x0.0043B7Dp0", "0x0.004CBC1p0", "0x0.0056F3Ap0", +"0x0.0062878p0", "0x0.006FA5Fp0", "0x0.007E83Ap0", "0x0.008F5C0p0", +"0x0.00A2728p0", "0x0.00B813Bp0", "0x0.00D0963p0", "0x0.00EC5C1p0", +"0x0.010BD4Ap0", "0x0.012F7DEp0", "0x0.0157E6Bp0", "0x0.0185B0Fp0", +"0x0.01B993Fp0", "0x0.01F45F9p0", "0x0.0236FF5p0", "0x0.02827E0p0", +"0x0.02D80A0p0", "0x0.0338F9Fp0", "0x0.03A6D22p0", "0x0.04234A7p0", +"0x0.04B0556p0", "0x0.0550280p0", "0x0.0605424p0", "0x0.06D279Ap0", +"0x0.07BB040p0", "0x0.08C284Cp0", "0x0.09ED1B4p0", "0x0.0B3F736p0", +"0x0.0CBED86p0", "0x0.0E7149Cp0", "0x0.105D938p0", "0x0.128B697p0", +"0x0.150385Cp0", "0x0.17CFCC2p0", "0x0.1AFB718p0", "0x0.1E9328Bp0", +"0x0.22A5554p0", "0x0.2742456p0", "0x0.2C7C72Fp0", "0x0.3268CDBp0", +"0x0.391F0EEp0", "0x0.40BA188p0", "0x0.495860Dp0", "0x0.531C6C9p0", +"0x0.5E2D58Dp0", "0x0.6AB7782p0", "0x0.78ED03Ap0", "0x0.8906E49p0", +"0x0.9B4597Ep0", "0x0.AFF230Ap0", "0x0.C75F7CFp0", "0x0.E1EB512p0", + }; + ap_ufixed<50,23> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + //55*50=(17+17+17)*(17+17+17) + ap_ufixed<100,21> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_lsb_m_1; + ap_ufixed<48,21> y_lo_s = y_lo; + ap_ufixed<50,23> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + y += delta; + //if (I_<24) { // overflow + overf = 0; + #pragma unroll + for (int j = 46; j >= I_+22; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 46; j >= I_+22; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+21; j >= 0; j--) + y[j] = 1; + } + //} + r = y; + } else { // I_s_ = 6, M_ = 24..32, I_ <= 33, FO_ <= 32/67, WO <= 65, WI <= 100 + const static int wf = 67; + const static int we = 33; + const static int w = 100; + ap_fixed x_l = x; + //std::cout<<"x="< x_msb_ind_1; + x_msb_ind_1[7] = x_l[w-1]; + + x_msb_ind_1(6,0) = x_l(wf+4,wf-2); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(wf-3,wf-10); + ap_uint<8> x_msb_ind_3; + x_msb_ind_3(7,0) = x_l(wf-11,wf-18); + ap_uint<8> x_msb_ind_4; + x_msb_ind_4(7,0) = x_l(wf-19,wf-26); + + ap_uint<8> x_msb_ind_5; + x_msb_ind_5(7,0) = x_l(wf-27,wf-34);//FO_=32 is a special case + + ap_ufixed<8, -2> x_msb_2 = x_l; + ap_ufixed<8,-10> x_msb_3 = x_l; + ap_ufixed<8,-18> x_msb_4 = x_l; + ap_ufixed<8,-26> x_msb_5 = x_l; + ap_ufixed<9,-34> x_lsb = x_l; + + const static ap_ufixed<32,-37> f_x_msb_4_table[256] = { +"0x0.000000000000000000p0", "0x0.000000000000080000p0", "0x0.000000000000200000p0", "0x0.000000000000480000p0", +"0x0.000000000000800000p0", "0x0.000000000000C80000p0", "0x0.000000000001200000p0", "0x0.000000000001880000p0", +"0x0.000000000002000001p0", "0x0.000000000002880001p0", "0x0.000000000003200002p0", "0x0.000000000003C80003p0", +"0x0.000000000004800004p0", "0x0.000000000005480005p0", "0x0.000000000006200007p0", "0x0.000000000007080008p0", +"0x0.00000000000800000Ap0", "0x0.00000000000908000Cp0", "0x0.00000000000A20000Fp0", "0x0.00000000000B480011p0", +"0x0.00000000000C800014p0", "0x0.00000000000DC80018p0", "0x0.00000000000F20001Bp0", "0x0.00000000001088001Fp0", +"0x0.000000000012000024p0", "0x0.000000000013880028p0", "0x0.00000000001520002Dp0", "0x0.000000000016C80033p0", +"0x0.000000000018800039p0", "0x0.00000000001A48003Fp0", "0x0.00000000001C200046p0", "0x0.00000000001E08004Dp0", +"0x0.000000000020000055p0", "0x0.00000000002208005Dp0", "0x0.000000000024200066p0", "0x0.00000000002648006Fp0", +"0x0.000000000028800079p0", "0x0.00000000002AC80083p0", "0x0.00000000002D20008Ep0", "0x0.00000000002F88009Ap0", +"0x0.0000000000320000A6p0", "0x0.0000000000348800B3p0", "0x0.0000000000372000C0p0", "0x0.000000000039C800CFp0", +"0x0.00000000003C8000DDp0", "0x0.00000000003F4800EDp0", "0x0.0000000000422000FDp0", "0x0.00000000004508010Ep0", +"0x0.000000000048000120p0", "0x0.00000000004B080132p0", "0x0.00000000004E200145p0", "0x0.000000000051480159p0", +"0x0.00000000005480016Ep0", "0x0.000000000057C80183p0", "0x0.00000000005B20019Ap0", "0x0.00000000005E8801B1p0", +"0x0.0000000000620001C9p0", "0x0.0000000000658801E2p0", "0x0.0000000000692001FCp0", "0x0.00000000006CC80216p0", +"0x0.000000000070800232p0", "0x0.00000000007448024Fp0", "0x0.00000000007820026Cp0", "0x0.00000000007C08028Bp0", +"0x0.0000000000800002AAp0", "0x0.0000000000840802CBp0", "0x0.0000000000882002ECp0", "0x0.00000000008C48030Fp0", +"0x0.000000000090800332p0", "0x0.000000000094C80357p0", "0x0.00000000009920037Dp0", "0x0.00000000009D8803A4p0", +"0x0.0000000000A20003CCp0", "0x0.0000000000A68803F5p0", "0x0.0000000000AB20041Fp0", "0x0.0000000000AFC8044Ap0", +"0x0.0000000000B4800477p0", "0x0.0000000000B94804A4p0", "0x0.0000000000BE2004D3p0", "0x0.0000000000C3080503p0", +"0x0.0000000000C8000535p0", "0x0.0000000000CD080567p0", "0x0.0000000000D220059Bp0", "0x0.0000000000D74805D1p0", +"0x0.0000000000DC800607p0", "0x0.0000000000E1C8063Fp0", "0x0.0000000000E7200678p0", "0x0.0000000000EC8806B2p0", +"0x0.0000000000F20006EEp0", "0x0.0000000000F788072Bp0", "0x0.0000000000FD20076Ap0", "0x0.000000000102C807AAp0", +"0x0.0000000001088007EBp0", "0x0.00000000010E48082Ep0", "0x0.000000000114200872p0", "0x0.00000000011A0808B8p0", +"0x0.000000000120000900p0", "0x0.000000000126080948p0", "0x0.00000000012C200993p0", "0x0.0000000001324809DEp0", +"0x0.000000000138800A2Cp0", "0x0.00000000013EC80A7Bp0", "0x0.000000000145200ACBp0", "0x0.00000000014B880B1Dp0", +"0x0.000000000152000B71p0", "0x0.000000000158880BC6p0", "0x0.00000000015F200C1Dp0", "0x0.000000000165C80C76p0", +"0x0.00000000016C800CD0p0", "0x0.000000000173480D2Cp0", "0x0.00000000017A200D8Ap0", "0x0.000000000181080DE9p0", +"0x0.000000000188000E4Ap0", "0x0.00000000018F080EADp0", "0x0.000000000196200F12p0", "0x0.00000000019D480F78p0", +"0x0.0000000001A4800FE0p0", "0x0.0000000001ABC8104Ap0", "0x0.0000000001B32010B6p0", "0x0.0000000001BA881124p0", +"0x0.0000000001C2001194p0", "0x0.0000000001C9881205p0", "0x0.0000000001D1201278p0", "0x0.0000000001D8C812EEp0", +"0x0.0000000001E0801365p0", "0x0.0000000001E84813DEp0", "0x0.0000000001F0201459p0", "0x0.0000000001F80814D6p0", +"0x0.000000000200001555p0", "0x0.0000000002080815D6p0", "0x0.000000000210201659p0", "0x0.0000000002184816DEp0", +"0x0.000000000220801765p0", "0x0.000000000228C817EEp0", "0x0.000000000231201879p0", "0x0.000000000239881907p0", +"0x0.000000000242001996p0", "0x0.00000000024A881A28p0", "0x0.000000000253201ABBp0", "0x0.00000000025BC81B51p0", +"0x0.000000000264801BE9p0", "0x0.00000000026D481C84p0", "0x0.000000000276201D20p0", "0x0.00000000027F081DBFp0", +"0x0.000000000288001E60p0", "0x0.000000000291081F03p0", "0x0.00000000029A201FA8p0", "0x0.0000000002A3482050p0", +"0x0.0000000002AC8020FAp0", "0x0.0000000002B5C821A6p0", "0x0.0000000002BF202255p0", "0x0.0000000002C8882306p0", +"0x0.0000000002D20023B9p0", "0x0.0000000002DB88246Fp0", "0x0.0000000002E5202527p0", "0x0.0000000002EEC825E1p0", +"0x0.0000000002F880269Ep0", "0x0.00000000030248275Dp0", "0x0.00000000030C20281Fp0", "0x0.0000000003160828E3p0", +"0x0.0000000003200029AAp0", "0x0.00000000032A082A73p0", "0x0.000000000334202B3Fp0", "0x0.00000000033E482C0Dp0", +"0x0.000000000348802CDEp0", "0x0.000000000352C82DB2p0", "0x0.00000000035D202E88p0", "0x0.000000000367882F60p0", +"0x0.00000000037200303Cp0", "0x0.00000000037C883119p0", "0x0.0000000003872031FAp0", "0x0.000000000391C832DDp0", +"0x0.00000000039C8033C3p0", "0x0.0000000003A74834ABp0", "0x0.0000000003B2203596p0", "0x0.0000000003BD083684p0", +"0x0.0000000003C8003775p0", "0x0.0000000003D3083868p0", "0x0.0000000003DE20395Ep0", "0x0.0000000003E9483A57p0", +"0x0.0000000003F4803B53p0", "0x0.0000000003FFC83C52p0", "0x0.00000000040B203D53p0", "0x0.000000000416883E57p0", +"0x0.000000000422003F5Ep0", "0x0.00000000042D884068p0", "0x0.000000000439204175p0", "0x0.000000000444C84285p0", +"0x0.000000000450804397p0", "0x0.00000000045C4844ADp0", "0x0.0000000004682045C5p0", "0x0.0000000004740846E1p0", +"0x0.000000000480004800p0", "0x0.00000000048C084921p0", "0x0.000000000498204A46p0", "0x0.0000000004A4484B6Dp0", +"0x0.0000000004B0804C98p0", "0x0.0000000004BCC84DC5p0", "0x0.0000000004C9204EF6p0", "0x0.0000000004D588502Ap0", +"0x0.0000000004E2005161p0", "0x0.0000000004EE88529Bp0", "0x0.0000000004FB2053D8p0", "0x0.000000000507C85518p0", +"0x0.00000000051480565Cp0", "0x0.0000000005214857A3p0", "0x0.00000000052E2058EDp0", "0x0.00000000053B085A3Ap0", +"0x0.000000000548005B8Ap0", "0x0.000000000555085CDEp0", "0x0.000000000562205E35p0", "0x0.00000000056F485F8Fp0", +"0x0.00000000057C8060ECp0", "0x0.000000000589C8624Dp0", "0x0.0000000005972063B1p0", "0x0.0000000005A4886519p0", +"0x0.0000000005B2006684p0", "0x0.0000000005BF8867F2p0", "0x0.0000000005CD206963p0", "0x0.0000000005DAC86AD8p0", +"0x0.0000000005E8806C51p0", "0x0.0000000005F6486DCDp0", "0x0.000000000604206F4Cp0", "0x0.0000000006120870CFp0", +"0x0.000000000620007255p0", "0x0.00000000062E0873DFp0", "0x0.00000000063C20756Cp0", "0x0.00000000064A4876FDp0", +"0x0.000000000658807891p0", "0x0.000000000666C87A29p0", "0x0.000000000675207BC4p0", "0x0.000000000683887D64p0", +"0x0.000000000692007F06p0", "0x0.0000000006A08880ADp0", "0x0.0000000006AF208256p0", "0x0.0000000006BDC88404p0", +"0x0.0000000006CC8085B5p0", "0x0.0000000006DB48876Ap0", "0x0.0000000006EA208923p0", "0x0.0000000006F9088ADFp0", +"0x0.000000000708008CA0p0", "0x0.000000000717088E63p0", "0x0.00000000072620902Bp0", "0x0.0000000007354891F6p0", +"0x0.0000000007448093C6p0", "0x0.000000000753C89599p0", "0x0.000000000763209770p0", "0x0.00000000077288994Ap0", +"0x0.000000000782009B29p0", "0x0.000000000791889D0Bp0", "0x0.0000000007A1209EF2p0", "0x0.0000000007B0C8A0DCp0", +"0x0.0000000007C080A2CAp0", "0x0.0000000007D048A4BCp0", "0x0.0000000007E020A6B2p0", "0x0.0000000007F008A8ACp0", + }; + ap_ufixed<32,-37> f_x_msb_4 = f_x_msb_4_table[x_msb_ind_4]; + + const static ap_ufixed<16,-53> f_x_msb_5_table[256] = { +"0x0.000000000000000000p0", "0x0.000000000000000008p0", "0x0.000000000000000020p0", "0x0.000000000000000048p0", +"0x0.000000000000000080p0", "0x0.0000000000000000C8p0", "0x0.000000000000000120p0", "0x0.000000000000000188p0", +"0x0.000000000000000200p0", "0x0.000000000000000288p0", "0x0.000000000000000320p0", "0x0.0000000000000003C8p0", +"0x0.000000000000000480p0", "0x0.000000000000000548p0", "0x0.000000000000000620p0", "0x0.000000000000000708p0", +"0x0.000000000000000800p0", "0x0.000000000000000908p0", "0x0.000000000000000A20p0", "0x0.000000000000000B48p0", +"0x0.000000000000000C80p0", "0x0.000000000000000DC8p0", "0x0.000000000000000F20p0", "0x0.000000000000001088p0", +"0x0.000000000000001200p0", "0x0.000000000000001388p0", "0x0.000000000000001520p0", "0x0.0000000000000016C8p0", +"0x0.000000000000001880p0", "0x0.000000000000001A48p0", "0x0.000000000000001C20p0", "0x0.000000000000001E08p0", +"0x0.000000000000002000p0", "0x0.000000000000002208p0", "0x0.000000000000002420p0", "0x0.000000000000002648p0", +"0x0.000000000000002880p0", "0x0.000000000000002AC8p0", "0x0.000000000000002D20p0", "0x0.000000000000002F88p0", +"0x0.000000000000003200p0", "0x0.000000000000003488p0", "0x0.000000000000003720p0", "0x0.0000000000000039C8p0", +"0x0.000000000000003C80p0", "0x0.000000000000003F48p0", "0x0.000000000000004220p0", "0x0.000000000000004508p0", +"0x0.000000000000004800p0", "0x0.000000000000004B08p0", "0x0.000000000000004E20p0", "0x0.000000000000005148p0", +"0x0.000000000000005480p0", "0x0.0000000000000057C8p0", "0x0.000000000000005B20p0", "0x0.000000000000005E88p0", +"0x0.000000000000006200p0", "0x0.000000000000006588p0", "0x0.000000000000006920p0", "0x0.000000000000006CC8p0", +"0x0.000000000000007080p0", "0x0.000000000000007448p0", "0x0.000000000000007820p0", "0x0.000000000000007C08p0", +"0x0.000000000000008000p0", "0x0.000000000000008408p0", "0x0.000000000000008820p0", "0x0.000000000000008C48p0", +"0x0.000000000000009080p0", "0x0.0000000000000094C8p0", "0x0.000000000000009920p0", "0x0.000000000000009D88p0", +"0x0.00000000000000A200p0", "0x0.00000000000000A688p0", "0x0.00000000000000AB20p0", "0x0.00000000000000AFC8p0", +"0x0.00000000000000B480p0", "0x0.00000000000000B948p0", "0x0.00000000000000BE20p0", "0x0.00000000000000C308p0", +"0x0.00000000000000C800p0", "0x0.00000000000000CD08p0", "0x0.00000000000000D220p0", "0x0.00000000000000D748p0", +"0x0.00000000000000DC80p0", "0x0.00000000000000E1C8p0", "0x0.00000000000000E720p0", "0x0.00000000000000EC88p0", +"0x0.00000000000000F200p0", "0x0.00000000000000F788p0", "0x0.00000000000000FD20p0", "0x0.0000000000000102C8p0", +"0x0.000000000000010880p0", "0x0.000000000000010E48p0", "0x0.000000000000011420p0", "0x0.000000000000011A08p0", +"0x0.000000000000012000p0", "0x0.000000000000012608p0", "0x0.000000000000012C20p0", "0x0.000000000000013248p0", +"0x0.000000000000013880p0", "0x0.000000000000013EC8p0", "0x0.000000000000014520p0", "0x0.000000000000014B88p0", +"0x0.000000000000015200p0", "0x0.000000000000015888p0", "0x0.000000000000015F20p0", "0x0.0000000000000165C8p0", +"0x0.000000000000016C80p0", "0x0.000000000000017348p0", "0x0.000000000000017A20p0", "0x0.000000000000018108p0", +"0x0.000000000000018800p0", "0x0.000000000000018F08p0", "0x0.000000000000019620p0", "0x0.000000000000019D48p0", +"0x0.00000000000001A480p0", "0x0.00000000000001ABC8p0", "0x0.00000000000001B320p0", "0x0.00000000000001BA88p0", +"0x0.00000000000001C200p0", "0x0.00000000000001C988p0", "0x0.00000000000001D120p0", "0x0.00000000000001D8C8p0", +"0x0.00000000000001E080p0", "0x0.00000000000001E848p0", "0x0.00000000000001F020p0", "0x0.00000000000001F808p0", +"0x0.000000000000020000p0", "0x0.000000000000020808p0", "0x0.000000000000021020p0", "0x0.000000000000021848p0", +"0x0.000000000000022080p0", "0x0.0000000000000228C8p0", "0x0.000000000000023120p0", "0x0.000000000000023988p0", +"0x0.000000000000024200p0", "0x0.000000000000024A88p0", "0x0.000000000000025320p0", "0x0.000000000000025BC8p0", +"0x0.000000000000026480p0", "0x0.000000000000026D48p0", "0x0.000000000000027620p0", "0x0.000000000000027F08p0", +"0x0.000000000000028800p0", "0x0.000000000000029108p0", "0x0.000000000000029A20p0", "0x0.00000000000002A348p0", +"0x0.00000000000002AC80p0", "0x0.00000000000002B5C8p0", "0x0.00000000000002BF20p0", "0x0.00000000000002C888p0", +"0x0.00000000000002D200p0", "0x0.00000000000002DB88p0", "0x0.00000000000002E520p0", "0x0.00000000000002EEC8p0", +"0x0.00000000000002F880p0", "0x0.000000000000030248p0", "0x0.000000000000030C20p0", "0x0.000000000000031608p0", +"0x0.000000000000032000p0", "0x0.000000000000032A08p0", "0x0.000000000000033420p0", "0x0.000000000000033E48p0", +"0x0.000000000000034880p0", "0x0.0000000000000352C8p0", "0x0.000000000000035D20p0", "0x0.000000000000036788p0", +"0x0.000000000000037200p0", "0x0.000000000000037C88p0", "0x0.000000000000038720p0", "0x0.0000000000000391C8p0", +"0x0.000000000000039C80p0", "0x0.00000000000003A748p0", "0x0.00000000000003B220p0", "0x0.00000000000003BD08p0", +"0x0.00000000000003C800p0", "0x0.00000000000003D308p0", "0x0.00000000000003DE20p0", "0x0.00000000000003E948p0", +"0x0.00000000000003F480p0", "0x0.00000000000003FFC8p0", "0x0.000000000000040B20p0", "0x0.000000000000041688p0", +"0x0.000000000000042200p0", "0x0.000000000000042D88p0", "0x0.000000000000043920p0", "0x0.0000000000000444C8p0", +"0x0.000000000000045080p0", "0x0.000000000000045C48p0", "0x0.000000000000046820p0", "0x0.000000000000047408p0", +"0x0.000000000000048000p0", "0x0.000000000000048C08p0", "0x0.000000000000049820p0", "0x0.00000000000004A448p0", +"0x0.00000000000004B080p0", "0x0.00000000000004BCC8p0", "0x0.00000000000004C920p0", "0x0.00000000000004D588p0", +"0x0.00000000000004E200p0", "0x0.00000000000004EE88p0", "0x0.00000000000004FB20p0", "0x0.0000000000000507C8p0", +"0x0.000000000000051480p0", "0x0.000000000000052148p0", "0x0.000000000000052E20p0", "0x0.000000000000053B08p0", +"0x0.000000000000054800p0", "0x0.000000000000055508p0", "0x0.000000000000056220p0", "0x0.000000000000056F48p0", +"0x0.000000000000057C80p0", "0x0.0000000000000589C8p0", "0x0.000000000000059720p0", "0x0.00000000000005A488p0", +"0x0.00000000000005B200p0", "0x0.00000000000005BF88p0", "0x0.00000000000005CD20p0", "0x0.00000000000005DAC8p0", +"0x0.00000000000005E880p0", "0x0.00000000000005F648p0", "0x0.000000000000060420p0", "0x0.000000000000061208p0", +"0x0.000000000000062000p0", "0x0.000000000000062E08p0", "0x0.000000000000063C20p0", "0x0.000000000000064A48p0", +"0x0.000000000000065880p0", "0x0.0000000000000666C8p0", "0x0.000000000000067520p0", "0x0.000000000000068388p0", +"0x0.000000000000069200p0", "0x0.00000000000006A088p0", "0x0.00000000000006AF20p0", "0x0.00000000000006BDC8p0", +"0x0.00000000000006CC80p0", "0x0.00000000000006DB48p0", "0x0.00000000000006EA20p0", "0x0.00000000000006F908p0", +"0x0.000000000000070800p0", "0x0.000000000000071708p0", "0x0.000000000000072620p0", "0x0.000000000000073548p0", +"0x0.000000000000074480p0", "0x0.0000000000000753C8p0", "0x0.000000000000076320p0", "0x0.000000000000077288p0", +"0x0.000000000000078200p0", "0x0.000000000000079188p0", "0x0.00000000000007A120p0", "0x0.00000000000007B0C8p0", +"0x0.00000000000007C080p0", "0x0.00000000000007D048p0", "0x0.00000000000007E020p0", "0x0.00000000000007F008p0", + }; + + ap_ufixed<16,-53> f_x_msb_5 = f_x_msb_5_table[x_msb_ind_5]; + //8*9 + ap_ufixed<9,-60> f_x_msb_5_lsb = x_msb_5 * x_lsb;//Z_5*Z_lsb//1u + + ap_ufixed<25,-26> x_msb_5_lsb = x_l; + //8*25 + ap_ufixed<25,-44> f_x_msb_4_5_lsb = x_msb_5_lsb * x_msb_4;//(Z_5+Z_lsb)*Z_4 // 1u + //6*8 + ap_ufixed<6,-37> f_x_msb_4_s = f_x_msb_4; + ap_ufixed<6,-63> exp_x_msb_4_5_lsb_m_1_m1 = x_msb_5 * f_x_msb_4;//Z_5 * f(Z_4) //1u + + ap_ufixed<10,-59> exp_x_msb_4_5_lsb_m_1_m2 = 0; + exp_x_msb_4_5_lsb_m_1_m2(8,0) = f_x_msb_5_lsb(8,0); + exp_x_msb_4_5_lsb_m_1_m2 = exp_x_msb_4_5_lsb_m_1_m1 + exp_x_msb_4_5_lsb_m_1_m2;//2u + + ap_ufixed<17,-52> exp_x_msb_4_5_lsb_m_1_m3 = 0; + exp_x_msb_4_5_lsb_m_1_m3(15,0) = f_x_msb_5(15,0); + exp_x_msb_4_5_lsb_m_1_m3 = exp_x_msb_4_5_lsb_m_1_m2+exp_x_msb_4_5_lsb_m_1_m3;//3u; + + ap_ufixed<26,-43> exp_x_msb_4_5_lsb_m_1_m4 =0; + exp_x_msb_4_5_lsb_m_1_m4(24,0) = f_x_msb_4_5_lsb(24,0); + exp_x_msb_4_5_lsb_m_1_m4 = exp_x_msb_4_5_lsb_m_1_m4 + exp_x_msb_4_5_lsb_m_1_m3;//4u + + ap_ufixed<33,-36> exp_x_msb_4_5_lsb_m_1_m5 = 0; + exp_x_msb_4_5_lsb_m_1_m5(31,0) = f_x_msb_4(31,0); + exp_x_msb_4_5_lsb_m_1_m5 = exp_x_msb_4_5_lsb_m_1_m5 + exp_x_msb_4_5_lsb_m_1_m4;//5u + + ap_ufixed x_msb_4_5_lsb = x_l; + ap_ufixed exp_x_msb_4_5_lsb_m_1_s = 0; + exp_x_msb_4_5_lsb_m_1_s(30,0) = exp_x_msb_4_5_lsb_m_1_m5(32,2); + exp_x_msb_4_5_lsb_m_1_s = exp_x_msb_4_5_lsb_m_1_s + x_msb_4_5_lsb; + + ap_ufixed<52,-17> exp_x_msb_4_5_lsb_m_1 = exp_x_msb_4_5_lsb_m_1_s; + exp_x_msb_4_5_lsb_m_1(1,0) = exp_x_msb_4_5_lsb_m_1_m5(1,0); + + + const static ap_ufixed<51,-21> f_x_msb_3_table[256] = { +"0x0", "0x0.00000000080000AAAAp0", "0x0.000000002000055556p0", "0x0.000000004800120003p0", +"0x0.0000000080002AAAB5p0", "0x0.00000000C80053556Fp0", "0x0.000000012000900036p0", "0x0.000000018800E4AB0Ep0", +"0x0.000000020001555600p0", "0x0.000000028801E60111p0", "0x0.0000000320029AAC4Bp0", "0x0.00000003C8037757B7p0", +"0x0.000000048004800360p0", "0x0.000000054805B8AF50p0", "0x0.000000062007255B96p0", "0x0.000000070808CA083Dp0", +"0x0.00000008000AAAB555p0", "0x0.00000009080CCB62EDp0", "0x0.0000000A200F301116p0", "0x0.0000000B4811DCBFE0p0", +"0x0.0000000C8014D56F60p0", "0x0.0000000DC8181E1FA7p0", "0x0.0000000F201BBAD0CBp0", "0x0.00000010881FAF82E1p0", +"0x0.000000120024003600p0", "0x0.000000138828B0EA3Fp0", "0x0.00000015202DC59FB6p0", "0x0.00000016C83342567Fp0", +"0x0.0000001880392B0EB5p0", "0x0.0000001A483F83C874p0", "0x0.0000001C20465083D6p0", "0x0.0000001E084D9540FBp0", +"0x0.000000200055560001p0", "0x0.00000022085D96C106p0", "0x0.0000002420665B842Cp0", "0x0.00000026486FA84995p0", +"0x0.000000288079811161p0", "0x0.0000002AC883E9DBB6p0", "0x0.0000002D208EE6A8B8p0", "0x0.0000002F889A7B788Cp0", +"0x0.0000003200A6AC4B58p0", "0x0.0000003488B37D2145p0", "0x0.0000003720C0F1FA7Ap0", "0x0.00000039C8CF0ED721p0", +"0x0.0000003C80DDD7B765p0", "0x0.0000003F48ED509B71p0", "0x0.0000004220FD7D8371p0", "0x0.00000045090E626F94p0", +"0x0.000000480120036008p0", "0x0.0000004B09326454FBp0", "0x0.0000004E2145894E9Fp0", "0x0.000000514959764D26p0", +"0x0.00000054816E2F50C1p0", "0x0.00000057C983B859A4p0", "0x0.0000005B219A156804p0", "0x0.0000005E89B14A7C16p0", +"0x0.0000006201C95B9611p0", "0x0.0000006589E24CB62Cp0", "0x0.0000006921FC21DCA0p0", "0x0.0000006CCA16DF09A6p0", +"0x0.000000708232883D78p0", "0x0.000000744A4F217853p0", "0x0.00000078226CAEBA73p0", "0x0.0000007C0A8B340414p0", +"0x0.0000008002AAB55577p0", "0x0.000000840ACB36AEDAp0", "0x0.0000008822ECBC107Dp0", "0x0.0000008C4B0F497AA3p0", +"0x0.000000908332E2ED8Ep0", "0x0.00000094CB578C6981p0", "0x0.00000099237D49EEC0p0", "0x0.0000009D8BA41F7D92p0", +"0x0.000000A203CC11163Dp0", "0x0.000000A68BF522B908p0", "0x0.000000AB241F58663Cp0", "0x0.000000AFCC4AB61E22p0", +"0x0.000000B484773FE105p0", "0x0.000000B94CA4F9AF31p0", "0x0.000000BE24D3E788F1p0", "0x0.000000C30D040D6E94p0", +"0x0.000000C805356F6068p0", "0x0.000000CD0D68115EBCp0", "0x0.000000D2259BF769E1p0", "0x0.000000D74DD1258228p0", +"0x0.000000DC86079FA7E4p0", "0x0.000000E1CE3F69DB69p0", "0x0.000000E72678881D0Bp0", "0x0.000000EC8EB2FE6D1Fp0", +"0x0.000000F206EED0CBFDp0", "0x0.000000F78F2C0339FAp0", "0x0.000000FD276A99B771p0", "0x0.00000102CFAA9844BBp0", +"0x0.0000010887EC02E231p0", "0x0.0000010E502EDD9030p0", "0x0.0000011428732C4F14p0", "0x0.0000011A10B8F31F3Bp0", +"0x0.000001200900360103p0", "0x0.000001261148F8F4CBp0", "0x0.0000012C29933FFAF5p0", "0x0.0000013251DF0F13E1p0", +"0x0.000001388A2C6A3FF3p0", "0x0.0000013ED27B557F8Dp0", "0x0.000001452ACBD4D315p0", "0x0.0000014B931DEC3AEFp0", +"0x0.000001520B719FB782p0", "0x0.0000015893C6F34937p0", "0x0.0000015F2C1DEAF074p0", "0x0.00000165D4768AADA5p0", +"0x0.0000016C8CD0D68133p0", "0x0.00000173552CD26B89p0", "0x0.0000017A2D8A826D16p0", "0x0.0000018115E9EA8645p0", +"0x0.000001880E4B0EB785p0", "0x0.0000018F16ADF30147p0", "0x0.000001962F129B63FAp0", "0x0.0000019D57790BE010p0", +"0x0.000001A48FE14875FBp0", "0x0.000001ABD84B552630p0", "0x0.000001B330B735F122p0", "0x0.000001BA9924EED748p0", +"0x0.000001C2119483D917p0", "0x0.000001C99A05F8F707p0", "0x0.000001D13279523191p0", "0x0.000001D8DAEE93892Ep0", +"0x0.000001E09365C0FE59p0", "0x0.000001E85BDEDE918Dp0", "0x0.000001F03459F04347p0", "0x0.000001F81CD6FA1405p0", +"0x0.000002001556000444p0", "0x0.000002081DD7061485p0", "0x0.00000210365A104547p0", "0x0.000002185EDF22970Dp0", +"0x0.000002209766410A5Ap0", "0x0.00000228DFEF6F9FAFp0", "0x0.00000231387AB25793p0", "0x0.00000239A1080D328Ap0", +"0x0.00000242199784311Cp0", "0x0.0000024AA2291B53CFp0", "0x0.000002533ABCD69B2Dp0", "0x0.0000025BE352BA07BEp0", +"0x0.000002649BEAC99A0Dp0", "0x0.0000026D64850952A7p0", "0x0.000002763D217D3216p0", "0x0.0000027F25C02938EAp0", +"0x0.000002881E611167B0p0", "0x0.00000291270439BEF8p0", "0x0.0000029A3FA9A63F53p0", "0x0.000002A368515AE951p0", +"0x0.000002ACA0FB5BBD86p0", "0x0.000002B5E9A7ACBC86p0", "0x0.000002BF425651E6E4p0", "0x0.000002C8AB074F3D36p0", +"0x0.000002D223BAA8C013p0", "0x0.000002DBAC70627012p0", "0x0.000002E54528804DCDp0", "0x0.000002EEEDE30659DBp0", +"0x0.000002F8A69FF894D9p0", "0x0.000003026F5F5AFF61p0", "0x0.0000030C4821319A10p0", "0x0.0000031630E5806584p0", +"0x0.0000032029AC4B625Bp0", "0x0.0000032A3275969134p0", "0x0.000003344B4165F2B1p0", "0x0.0000033E740FBD8772p0", +"0x0.00000348ACE0A1501Bp0", "0x0.00000352F5B4154D4Fp0", "0x0.0000035D4E8A1D7FB2p0", "0x0.00000367B762BDE7EAp0", +"0x0.00000372303DFA869Ep0", "0x0.0000037CB91BD75C75p0", "0x0.0000038751FC586A18p0", "0x0.00000391FADF81B02Fp0", +"0x0.0000039CB3C5572F67p0", "0x0.000003A77CADDCE86Ap0", "0x0.000003B2559916DBE4p0", "0x0.000003BD3E87090A84p0", +"0x0.000003C83777B774F8p0", "0x0.000003D3406B261BF0p0", "0x0.000003DE596159001Cp0", "0x0.000003E9825A54222Dp0", +"0x0.000003F4BB561B82D7p0", "0x0.000004000454B322CCp0", "0x0.0000040B5D561F02C2p0", "0x0.00000416C65A63236Ep0", +"0x0.000004223F61838586p0", "0x0.0000042DC86B8429C2p0", "0x0.0000043961786910DBp0", "0x0.000004450A88363B8Ap0", +"0x0.00000450C39AEFAA8Ap0", "0x0.0000045C8CB0995E96p0", "0x0.0000046865C937586Bp0", "0x0.000004744EE4CD98C6p0", +"0x0.000004804803602067p0", "0x0.0000048C5124F2F00Cp0", "0x0.000004986A498A0876p0", "0x0.000004A49371296A67p0", +"0x0.000004B0CC9BD516A1p0", "0x0.000004BD15C9910DE8p0", "0x0.000004C96EFA615101p0", "0x0.000004D5D82E49E0B0p0", +"0x0.000004E251654EBDBDp0", "0x0.000004EEDA9F73E8F0p0", "0x0.000004FB73DCBD6310p0", "0x0.000005081D1D2F2CE7p0", +"0x0.00000514D660CD4740p0", "0x0.000005219FA79BB2E7p0", "0x0.0000052E78F19E70A8p0", "0x0.0000053B623ED98150p0", +"0x0.000005485B8F50E5AFp0", "0x0.0000055564E3089E93p0", "0x0.000005627E3A04ACCEp0", "0x0.0000056FA794491131p0", +"0x0.0000057CE0F1D9CC8Ep0", "0x0.0000058A2A52BADFBAp0", "0x0.0000059783B6F04B88p0", "0x0.000005A4ED1E7E10CFp0", +"0x0.000005B26689683064p0", "0x0.000005BFEFF7B2AB20p0", "0x0.000005CD89696181DBp0", "0x0.000005DB32DE78B56Fp0", +"0x0.000005E8EC56FC46B6p0", "0x0.000005F6B5D2F0368Cp0", "0x0.000006048F525885CDp0", "0x0.0000061278D5393558p0", +"0x0.00000620725B96460Ap0", "0x0.0000062E7BE573B8C3p0", "0x0.0000063C9572D58E64p0", "0x0.0000064ABF03BFC7CEp0", +"0x0.00000658F8983665E5p0", "0x0.0000066742303D698Bp0", "0x0.000006759BCBD8D3A5p0", "0x0.00000684056B0CA519p0", +"0x0.000006927F0DDCDECEp0", "0x0.000006A108B44D81AAp0", "0x0.000006AFA25E628E98p0", "0x0.000006BE4C0C20067Fp0", +"0x0.000006CD05BD89EA4Bp0", "0x0.000006DBCF72A43AE8p0", "0x0.000006EAA92B72F942p0", "0x0.000006F992E7FA2646p0", +"0x0.000007088CA83DC2E4p0", "0x0.00000717966C41D00Ap0", "0x0.00000726B0340A4EAAp0", "0x0.00000735D9FF9B3FB6p0", +"0x0.0000074513CEF8A41Ep0", "0x0.000007545DA2267CD9p0", "0x0.00000763B77928CAD9p0", "0x0.000007732154038F14p0", +"0x0.000007829B32BACA82p0", "0x0.000007922515527E1Ap0", "0x0.000007A1BEFBCEAAD4p0", "0x0.000007B168E63351AAp0", +"0x0.000007C122D4847397p0", "0x0.000007D0ECC6C61195p0", "0x0.000007E0C6BCFC2CA3p0", "0x0.000007F0B0B72AC5BEp0", + }; + ap_ufixed<51,-21> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<62,-10> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(61,54) = x_msb_3(7,0); + exp_x_msb_3_m_1(50, 0) = f_x_msb_3(50,0); + + ap_ufixed<50,-10> exp_x_msb_3_m_1_s = exp_x_msb_3_m_1; + //50*51 + ap_ufixed<101,-27> f_x_msb_3_4_5_lsb = exp_x_msb_3_m_1_s * exp_x_msb_4_5_lsb_m_1; + ap_ufixed<45,-27> f_x_msb_3_4_5_lsb_s = f_x_msb_3_4_5_lsb; + ap_ufixed<63, -9> exp_x_msb_3_4_5_lsb_m_1 = f_x_msb_3_4_5_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_5_lsb_m_1; + + //maybe need to extend to 65 + const static ap_ufixed<64,-4> f_x_msb_2_table[256] = { +"0x0.0p0", "0x0.00000800AAB555DDEp0", "0x0.00002005560011127p0", "0x0.00004812036081A9Cp0", +"0x0.0000802AB55777D28p0", "0x0.0000C8536F6684062p0", "0x0.0001209036103740Dp0", "0x0.000188E50ED8634A0p0", +"0x0.0002015600445B0C3p0", "0x0.000289E711DB32FD7p0", "0x0.0003229C4C260197Ep0", "0x0.0003CB79B8B01FE26p0", +"0x0.0004848362076A08Dp0", "0x0.00054DBD53BC80058p0", "0x0.0006272B9A630659Dp0", "0x0.000710D24391E6D7Ap0", +"0x0.00080AB55DE3917ABp0", "0x0.000914D8F8F63D524p0", "0x0.000A2F41256C297AFp0", "0x0.000B59F1F4EBDE291p0", +"0x0.000C94EF7A206DC2Dp0", "0x0.000DE03DC8B9B60B1p0", "0x0.000F3BE0F56CA15C4p0", "0x0.0010A7DD15F367F40p0", +"0x0.00122436410DD14E5p0", "0x0.0013B0F08E817591Ep0", "0x0.00154E101719FF0C5p0", "0x0.0016FB98F4A96BBEFp0", +"0x0.0018B98F42084EFBDp0", "0x0.001A87F71B1613137p0", "0x0.001C66D49CB93B127p0", "0x0.001E562BE4DFA4904p0", +"0x0.00205601127EC98E0p0", "0x0.00226658459402659p0", "0x0.002487359F24C7C99p0", "0x0.0026B89D413EF4D5Ep0", +"0x0.0028FA934EF909304p0", "0x0.002B4D1BEC726B39Cp0", "0x0.002DB03B3ED3AA50Ep0", "0x0.003023F56C4EC123Fp0", +"0x0.0032A84E9C1F58145p0", "0x0.00353D4AF68B07AA1p0", "0x0.0037E2EEA4E19B185p0", "0x0.003A993DD17D52D25p0", +"0x0.003D603CA7C32730Fp0", "0x0.004037EF54230B293p0", "0x0.0043205A04182F12Fp0", "0x0.00461980E62943810p0", +"0x0.0049236829E8BC292p0", "0x0.004C3E13FFF512DD8p0", "0x0.004F698899F90A966p0", "0x0.0052A5CA2AABF28D0p0", +"0x0.0055F2DCE5D1E966Ep0", "0x0.005950C5003C20723p0", "0x0.005CBF86AFC91EF2Bp0", "0x0.00603F262B65057FCp0", +"0x0.0063CFA7AB09D1732p0", "0x0.0067710F67BFA0687p0", "0x0.006B23619B9CF3CDEp0", "0x0.006EE6A281C6F4857p0", +"0x0.0072BAD65671B6977p0", "0x0.0076A00156E07CF57p0", "0x0.007A9627C165FD4EDp0", "0x0.007E9D4DD564A3F5Ep0", +"0x0.0082B577D34ED7D5Bp0", "0x0.0086DEA9FCA73E799p0", "0x0.008B18E8940100253p0", "0x0.008F6437DD000BFDAp0", +"0x0.0093C09C1C595C43Ep0", "0x0.00982E1997D33A9FCp0", "0x0.009CACB49645847CCp0", "0x0.00A13C715F99EF773p0", +"0x0.00A5DD543CCC4DDAFp0", "0x0.00AA8F6177EAD3336p0", "0x0.00AF529D5C1658EBCp0", "0x0.00B4270C3582A301Dp0", +"0x0.00B90CB25176A4C8Bp0", "0x0.00BE0393FE4CC5BD7p0", "0x0.00C30BB58B73266CAp0", "0x0.00C8251B496BE5696p0", +"0x0.00CD4FC989CD64555p0", "0x0.00D28BC49F428CFA3p0", "0x0.00D7D910DD8B16743p0", "0x0.00DD37B2997BCA6E6p0", +"0x0.00E2A7AE28FECA6FBp0", "0x0.00E82907E313D5399p0", "0x0.00EDBBC41FD08C383p0", "0x0.00F35FE73860B9038p0", +"0x0.00F91575870692F24p0", "0x0.00FEDC73671B04BDFp0", "0x0.0104B4E5350DF2386p0", "0x0.010A9ECF4E667E12Dp0", +"0x0.01109A3611C34FB64p0", "0x0.0116A71DDEDAD92D8p0", "0x0.011CC58B167B9D206p0", "0x0.0122F5821A8C74E0Dp0", +"0x0.012937074E0CD6893p0", "0x0.012F8A1F15151B2C6p0", "0x0.0135EECDD4D6C5172p0", "0x0.013C6517F39CC6233p0", +"0x0.0142ED01D8CBC61C4p0", "0x0.0149868FECE26935Dp0", "0x0.015031C6997996937p0", "0x0.0156EEAA4944BEE23p0", +"0x0.015DBD3F68122303Ep0", "0x0.01649D8A62CB1ACBEp0", "0x0.016B8F8FA7745BCDBp0", "0x0.01729353A52E403D8p0", +"0x0.0179A8DACC350DE1Dp0", "0x0.0180D0298DE13D179p0", "0x0.018809445CA7BFE78p0", "0x0.018F542FAC1A492D6p0", +"0x0.0196B0EFF0E793D15p0", "0x0.019E1F89A0DBAA128p0", "0x0.01A5A00132E02CE42p0", "0x0.01AD325B1EFC9B5BCp0", +"0x0.01B4D69BDE569A322p0", "0x0.01BC8CC7EB323B553p0", "0x0.01C454E3C0F2458C8p0", "0x0.01CC2EF3DC187C2F6p0", +"0x0.01D41AFCBA45E6ED2p0", "0x0.01DC1902DA3B19A6Dp0", "0x0.01E4290ABBD87C5BCp0", "0x0.01EC4B18E01E9326Fp0", +"0x0.01F47F31C92E464FCp0", "0x0.01FCC559FA492A6B6p0", "0x0.02051D95F7D1C8917p0", "0x0.020D87EA474BE6A1Cp0", +"0x0.0216045B6F5CCF9CEp0", "0x0.021E92EDF7CB9C0E4p0", "0x0.022733A669817A88Ap0", "0x0.022FE6894E89F834Cp0", +"0x0.0238AB9B321349722p0", "0x0.024182E0A06E9289Bp0", "0x0.024A6C5E271030733p0", "0x0.02536818549001AC1p0", +"0x0.025C7613B8A9AF215p0", "0x0.02659654E43CF52B1p0", "0x0.026EC8E0694DEC9A9p0", "0x0.02780DBADB0553DA6p0", +"0x0.028164E8CDB0D8211p0", "0x0.028ACE6ED6C35EB5Fp0", "0x0.02944A518CD54E484p0", "0x0.029DD89587A4D858Dp0", +"0x0.02A7793F601642B5Dp0", "0x0.02B12C53B03431090p0", "0x0.02BAF1D7132FEE788p0", "0x0.02C4C9CE2561B759Fp0", +"0x0.02CEB43D844902F7Ap0", "0x0.02D8B129CE8CCD68Fp0", "0x0.02E2C097A3FBE17C9p0", "0x0.02ECE28BA58D22B56p0", +"0x0.02F7170A755FD759Ep0", "0x0.03015E18B6BBF2966p0", "0x0.030BB7BB0E125EB13p0", "0x0.031623F620FD4751Ep0", +"0x0.0320A2CE964063DACp0", "0x0.032B344915C941D54p0", "0x0.0335D86A48AF8F70Cp0", "0x0.03408F36D93566140p0", +"0x0.034B58B372C795013p0", "0x0.035634E4C1FDEC0D0p0", "0x0.036123CF749B8667Cp0", "0x0.036C2578398F157A0p0", +"0x0.037739E3C0F32BD30p0", "0x0.03826116BC0E882ACp0", "0x0.038D9B15DD5460763p0", "0x0.0398E7E5D864AD0E9p0", +"0x0.03A4478B620C73EB5p0", "0x0.03AFBA0B304613EEDp0", "0x0.03BB3F69FA3990464p0", "0x0.03C6D7AC783CDBDBFp0", +"0x0.03D282D763D424DCDp0", "0x0.03DE40EF77B220509p0", "0x0.03EA11F96FB855C4Fp0", "0x0.03F5F5FA08F76B0BBp0", +"0x0.0401ECF601AF700BDp0", "0x0.040DF6F219502AA55p0", "0x0.041A13F3107962A88p0", "0x0.042643FDA8FB2DDFBp0", +"0x0.04328716A5D63C2C4p0", "0x0.043EDD42CB3C23B6Dp0", "0x0.044B4686DE8FAD325p0", "0x0.0457C2E7A66520322p0", +"0x0.04645269EA828F932p0", "0x0.0470F51273E025F89p0", "0x0.047DAAE60CA8725B3p0", "0x0.048A73E98038B4ABFp0", +"0x0.049750219B212A8A0p0", "0x0.04A43F932B255C0B7p0", "0x0.04B14242FF3C689A0p0", "0x0.04BE5835E79153E1Dp0", +"0x0.04CB8170B58352D4Ep0", "0x0.04D8BDF83BA618C04p0", "0x0.04E60DD14DC22475Ep0", "0x0.04F37100C0D50D88Ep0", +"0x0.0500E78B6B11D19D6p0", "0x0.050E717623E121CBAp0", "0x0.051C0EC5C3E1B016Cp0", "0x0.0529BF7F24E87CF6Ap0", +"0x0.053783A7220124F51p0", "0x0.05455B42976E2E5EAp0", "0x0.0553465662A95706Bp0", "0x0.056144E76263E21F4p0", +"0x0.056F56FA7686E623Ep0", "0x0.057D7C9480339AD83p0", "0x0.058BB5BA61C3A75A3p0", "0x0.059A0270FEC97047Ap0", +"0x0.05A862BD3C1065F74p0", "0x0.05B6D6A3FF9D52C58p0", "0x0.05C55E2A30AEA974Ep0", "0x0.05D3F954B7BCD3A1Bp0", +"0x0.05E2A8287E7A8049Ep0", "0x0.05F16AAA6FD4F267Bp0", "0x0.060040DF77F44FA13p0", "0x0.060F2ACC843BEF0A0p0", +"0x0.061E2876834AA7FA4p0", "0x0.062D39E264FB20F7Ep0", "0x0.063C5F151A641EB4Cp0", "0x0.064B981395D8D31FEp0", +"0x0.065AE4E2CAE92C8AAp0", "0x0.066A4587AE6224E1Cp0", "0x0.0679BA07364E10FA3p0", "0x0.0689426659F4EFF1Bp0", +"0x0.0698DEAA11DCBAA37p0", "0x0.06A88ED757C9B3304p0", "0x0.06B852F326BEB49B0p0", "0x0.06C82B027AFD8278Ap0", +"0x0.06D8170A520718B46p0", "0x0.06E8170FAA9BFB67Ep0", "0x0.06F82B1784BC86C72p0", "0x0.07085326E1A93F207p0", +"0x0.07188F42C3E320F0Bp0", "0x0.0728DF702F2BF10B2p0", "0x0.073943B428868CD5Ap0", "0x0.0749BC13B6373A98Fp0", +"0x0.075A4893DFC3F9E4Cp0", "0x0.076AE939ADF4D4083p0", "0x0.077B9E0A2AD42C9E8p0", "0x0.078C670A61AF122F4p0", +"0x0.079D443F5F158EE3Ap0", "0x0.07AE35AE30DAF94F1p0", "0x0.07BF3B5BE616454CBp0", "0x0.07D0554D8F2254F0Cp0", +"0x0.07E183883D9E498E2p0", "0x0.07F2C611046DD4D06p0", "0x0.08041CECF7B989EA2p0", "0x0.081588212CEF2ED73p0", +"0x0.082707B2BAC20DB40p0", "0x0.08389BA6B92B46284p0", "0x0.084A4402416A1EE6Fp0", "0x0.085C00CA6E045741Fp0", +"0x0.086DD2045AC678D2Bp0", "0x0.087FB7B524C42936Cp0", "0x0.0891B1E1EA587BE12p0", "0x0.08A3C08FCB2643FFEp0", + }; + ap_ufixed<64,-4> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 6,-4> f_x_msb_2_h; + f_x_msb_2_h(5,0) = f_x_msb_2(63,58); + ap_ufixed< 9,-1> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<67,-1> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(66,58) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(57, 0) = f_x_msb_2(57,0); + //67*63 + ap_ufixed<130,-10> f_x_msb_2_3_4_5_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_5_lsb_m_1; + ap_ufixed<62,-10> f_x_msb_2_3_4_5_lsb_s = f_x_msb_2_3_4_5_lsb; + ap_ufixed<72,0> exp_x_msb_2_3_4_5_lsb_m_1 = f_x_msb_2_3_4_5_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_5_lsb_m_1; + + const static ap_ufixed<68,32> exp_x_msb_1_table[256] = { +"0x1.000000000p0", "0x1.48B5E3C3Ep0", "0x1.A61298E1Ep0", "0x2.1DF3B68CFp0", +"0x2.B7E151628p0", "0x3.7D871DB61p0", "0x4.7B4FF993Fp0", "0x5.C12DA416Ep0", +"0x7.63992E353p0", "0x9.7CDC417A3p0", "0xC.2EB7EC98Fp0", "0xF.A48385EDFp0", +"0x14.15E5BF6FBp0", "0x19.CA53B7811p0", "0x21.1D8E4272Dp0", "0x2A.8565A144Cp0", +"0x36.99205C4E7p0", "0x46.1AFC4DB59p0", "0x5A.0462B7877p0", "0x73.9593ABB7Dp0", +"0x94.69C4CB819p0", "0xBE.90F6F83E9p0", "0xF4.B122790DDp0", "0x13A.30CF1CCBBp0", +"0x193.6DC5690C0p0", "0x206.03487A3B1p0", "0x299.2442102D9p0", "0x356.0F0B0F980p0", +"0x448.A216ABB76p0", "0x580.1AD754FA3p0", "0x710.0ADBAC7DAp0", "0x911.9289C3923p0", +"0xBA4.F53EA3863p0", "0xEF3.A035D5798p0", "0x1332.C4D2B7C4Ap0", "0x18A6.B027DA0A7p0", +"0x1FA7.157C470F8p0", "0x28A4.90D2CCEF1p0", "0x342F.BA11823B8p0", "0x4302.3A933EE5Cp0", +"0x560A.773E54157p0", "0x6E7A.8ABB4A83Cp0", "0x8DDB.80AF4269Dp0", "0xB626.0748BAEC7p0", +"0xE9E2.2447727BFp0", "0x12C4F.EB75B2AB0p0", "0x1819B.C560F6113p0", "0x1EF21.8F1B001A4p0", +"0x27BC2.CA9A6F934p0", "0x33055.49F35D91Fp0", "0x41831.49596E996p0", "0x541E7.E56949D58p0", +"0x6C02D.645AB2554p0", "0x8AB06.0A3EE9FB1p0", "0xB2148.5EAE56C5Bp0", "0xE4A8D.2881EDBE8p0", +"0x1259AC.48BF05D6Ep0", "0x178FEE.7792E44B3p0", "0x1E4127.437732B71p0", "0x26D8F9.4A204BEA5p0", +"0x31E199.5F5A550DDp0", "0x400C7D.64D3386CBp0", "0x523D82.79EDAEF9Cp0", "0x69993D.D4F2D9524p0", +"0x87975E.854001024p0", "0xAE1A47.C38A42CD0p0", "0xDF8D5F.6DCFE5CEAp0", "0x11F0BF8.1E99FDEB6p0", +"0x1709348.C0EA4F8CEp0", "0x1D94295.464477ACCp0", "0x25FAD90.65C78E342p0", "0x30C4623.616ED2BE2p0", +"0x3E9E441.232817A61p0", "0x506744D.3B342FC94p0", "0x673D70B.C00F1F76Dp0", "0x849012B.C127FC962p0", +"0xAA36C7C.F69370B94p0", "0xDA8F202.DD9ACE661p0", "0x118A2AAE.0AA05236Bp0", "0x16857CFA.1AA8A5555p0", +"0x1CEB088B.68E804021p0", "0x2521AEDA.32CD52BE5p0", "0x2FAD89E1.79BAB8EADp0", "0x3D3838C6.BE0F13F06p0", +"0x4E9B87F6.7BB3F5597p0", "0x64EF201B.01109A4A5p0", "0x819A1801.9394C0D96p0", "0xA6698403.CF5D9E663p0", +"0xD5AD6DCE.21AFFC0DDp0", "0x1125E066B.0B19418CCp0", "0x1604B68CF.05F65FAA9p0", "0x1C45AED0A.D0C934CDCp0", +"0x244D5E676.3FB814AF0p0", "0x2E9CEBF49.9C21839C7p0", "0x3BDA2CBD0.9F5AC2146p0", "0x4CDA0FD41.989F004E7p0", +"0x62ADFED51.D7EDCCDE6p0", "0x7EB50B520.76F91D6E8p0", "0xA2B1FD3D9.A57B6C33Cp0", "0xD0E7A50F4.EF0D7447Fp0", +"0x10C3D39209.62C88AAFBp0", "0x1586D0722B.3EEB27301p0", "0x1BA4068AAC.2B6E3EE34p0", "0x237DCBF1E5.709A9F9C1p0", +"0x2D9264D2D4.D6B94153Bp0", "0x3A83F23B18.FE5BD524Ap0", "0x4B22A1B5C3.27A2FD85Ap0", "0x6079C1866C.71A93951Dp0", +"0x7BE08BDFD9.CC72249ABp0", "0x9F0FB7309C.B446D3919p0", "0xCC3D265776.C3D25779Ep0", "0x1063F7612B0.C0831CA6Cp0", +"0x150BBA37963.79A4FB6ADp0", "0x1B05FA9B62E.737D935B8p0", "0x22B2DC5C41D.AD89559EBp0", "0x2C8DD1AB28B.404414BE7p0", +"0x39355C8C638.0AC5631B1p0", "0x49750434675.301B8D0E7p0", "0x5E521E7A16E.51F9CD3C2p0", "0x791C3B06F8B.EA2DEC48Cp0", +"0x9B823857614.764F43E20p0", "0xC7AD559D438.E7C270C30p0", "0x10063F4E687B.A1A43A35Bp0", "0x149363C905BA.3641D0164p0", +"0x1A6B765D8CDF.6CDBF1C63p0", "0x21EC75240E66.E2891CE63p0", "0x2B8F1073A6AF.BA219DB61p0", "0x37EE3FFC0063.E360F931Fp0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000001p0", "0x0.000000001p0", "0x0.000000002p0", +"0x0.000000002p0", "0x0.000000003p0", "0x0.000000004p0", "0x0.000000005p0", +"0x0.000000007p0", "0x0.000000009p0", "0x0.00000000Bp0", "0x0.00000000Ep0", +"0x0.000000013p0", "0x0.000000018p0", "0x0.00000001Fp0", "0x0.000000028p0", +"0x0.000000034p0", "0x0.000000042p0", "0x0.000000055p0", "0x0.00000006Ep0", +"0x0.00000008Dp0", "0x0.0000000B5p0", "0x0.0000000E9p0", "0x0.00000012Bp0", +"0x0.000000181p0", "0x0.0000001EEp0", "0x0.00000027Ap0", "0x0.00000032Fp0", +"0x0.000000416p0", "0x0.00000053Fp0", "0x0.0000006BDp0", "0x0.0000008A7p0", +"0x0.000000B1Cp0", "0x0.000000E44p0", "0x0.000001252p0", "0x0.000001786p0", +"0x0.000001E35p0", "0x0.0000026C9p0", "0x0.0000031CEp0", "0x0.000003FF3p0", +"0x0.00000521Dp0", "0x0.000006970p0", "0x0.000008762p0", "0x0.00000ADD6p0", +"0x0.00000DF36p0", "0x0.000011E9Cp0", "0x0.000017003p0", "0x0.00001D88Ap0", +"0x0.000025EC0p0", "0x0.000030B15p0", "0x0.00003E85Dp0", "0x0.00005047Ep0", +"0x0.000067153p0", "0x0.0000845C6p0", "0x0.0000A9F46p0", "0x0.0000DA39Ep0", +"0x0.000118354p0", "0x0.000167CB5p0", "0x0.0001CDFC2p0", "0x0.000251334p0", +"0x0.0002F9AF3p0", "0x0.0003D205Ap0", "0x0.0004E7CE2p0", "0x0.00064C7C6p0", +"0x0.000816791p0", "0x0.000A628A3p0", "0x0.000D55A1Fp0", "0x0.00111F30Fp0", +"0x0.0015FC210p0", "0x0.001C3AA91p0", "0x0.00243F374p0", "0x0.002E8ABFCp0", +"0x0.003BC2D73p0", "0x0.004CBC19Ap0", "0x0.006287862p0", "0x0.007E83A56p0", +"0x0.00A2728F8p0", "0x0.00D096336p0", "0x0.010BD4A5Ap0", "0x0.0157E6BFEp0", +"0x0.01B993FE0p0", "0x0.0236FF5BFp0", "0x0.02D80A08Dp0", "0x0.03A6D2222p0", +"0x0.04B0556E0p0", "0x0.0605424D5p0", "0x0.07BB04063p0", "0x0.09ED1B429p0", +"0x0.0CBED8666p0", "0x0.105D93892p0", "0x0.150385C09p0", "0x0.1AFB718E8p0", +"0x0.22A555477p0", "0x0.2C7C72FC0p0", "0x0.391F0EE49p0", "0x0.495860DCAp0", +"0x0.5E2D58D8Bp0", "0x0.78ED03AFBp0", "0x0.9B4597E37p0", "0x0.C75F7CF56p0", + }; + ap_ufixed<68,32> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<140,32> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_5_lsb_m_1; + ap_ufixed<68,32> y_lo_s = y_lo; + ap_ufixed<68,32> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + y += delta; + //if (I_<33) { // overflow + overf = 0; + #pragma unroll + for (int j = 64; j >= I_+31; j--) { + if (y[j]) + overf = 1; + } + if (overf) { + #pragma unroll + for (int j = 64; j >= I_+31; j--) + y[j] = 0; + #pragma unroll + for (int j = I_+30; j >= 0; j--) + y[j] = 1; + } + //} + r = y; + } + return r; +} + +template +ap_ufixed exp(ap_ufixed x) { + ap_fixed xf = x; + return exp(xf); +} + +template +ap_int exp(ap_int x) { + ap_fixed xf = x; + return exp(xf); +} + +template +ap_uint exp(ap_uint x) { + ap_fixed xf = x; + return exp(xf); +} + +template +ap_fixed expm1(ap_fixed x) { + ap_fixed result, tmp; + ap_ufixed<1,1> one = 1; + if(I < 1) { + result = 0; + } else { + ap_fixed tmp = exp(x); + ap_ufixed<1,1> one = 1; + result = tmp - one; + } + return result; +} + +template +ap_ufixed expm1(ap_ufixed x) { + ap_fixed xf = x; + return expm1(xf); +} + +template +ap_int expm1(ap_int x) { + ap_fixed xf = x; + return expm1(xf); +} + +template +ap_uint expm1(ap_uint x) { + ap_fixed xf = x; + return expm1(xf); +} + +template +ap_fixed exp2(ap_fixed x) { + + int F = W - I; + if(I > 33 || F > 32) { + return 0; + } + + int I_s; + int M = ((I - 1) > F) ? (I - 1) : F; + + if(M == 1) { + I_s = 1; + } else if(M == 2) { + I_s = 2; + } else if(M <= 4) { + I_s = 3; + } else if(M <= 8) { + I_s = 4; + } else if(M <= 16) { + I_s = 5; + } else { + I_s = 6; + } + + ap_fixed r; + + if(I_s == 1) { + + ap_fixed<3,2> x_l = x; + ap_ufixed<2,1> y = 0; + + if(!x_l[2]) { + y[1] = 1; + } + if(x_l[1]) { + y[0] = 1; + } + + if(I<2) { + if(y[1]) { + y[1]=0; + y[0]=1; + } + } + r = y; + + } else if(I_s == 2) { + + ap_fixed<5,3> x_l = x; + ap_ufixed<4,2> y = 0; + ap_fixed<2,2> x_l_int; + x_l_int(1,0) = x_l(3,2); + ap_ufixed<2,0> x_l_fract; + x_l_fract(1,0) = x_l(1,0); + + if( (x_l[4]&&(!x_l[3])) || ((!x_l[4])&&x_l[3]) ) { + if(!x_l[4]) { + y = "0x3.cp0"; + } + } else { + if((!x_l[3])&(x_l[2])) y[3] = 1; + if(((!x_l[3])&(!x_l[2])) | ((!x_l[3])&x_l[2]&x_l[1]&x_l[0])) y[2] = 1; + if( (x_l[3]&x_l[2]) | ((!x_l[3])&( (x_l[2]&(x_l[1]^x_l[0])) | ((!x_l[2])&x_l[1]&x_l[0] )))) y[1] = 1; + if((x_l[3]&(!x_l[2])) | (x_l[1]&((x_l[0]&x_l[2]) | ((!x_l[0])&(!x_l[3]))))) y[0] =1; + } + + if(I<3) { + bool overf = 0; + #pragma unroll + for(int j=3; j>=I+1; j--) { + if(y[j]) { + overf = 1; + } + } + if (overf) { + #pragma unroll + for(int j=3; j>=I+1; j--) { + y[j] = 0; + } + #pragma unroll + for(int j=I; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + + } else if(I_s == 3) { + + ap_fixed<9,5> x_l = x; + ap_ufixed<8,4> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(6,4); + ap_ufixed<4,0> x_l_fract; + x_l_fract(3,0) = x_l(3,0); + + if((x_l[8]!=x_l[7])||(x_l[8]!=x_l[6])) { + if(!x_l[8]) { + y = "0xf.fp0"; + } + } else { + ap_uint<4> x_msb_ind; + ap_uint<3> x_lsb_ind; + x_msb_ind[3] = x_l[8]; + x_msb_ind(2,0) = x_l(5,3); + x_lsb_ind(2,0) = x_l(2,0); + const static ap_ufixed<10,4> exp2_x_msb_table[16] = { + "0x1.00p0", "0x1.6Cp0", "0x2.00p0", "0x2.D4p0", + "0x4.00p0", "0x5.A8p0", "0x8.00p0", "0xB.50p0", + "0x0.10p0", "0x0.18p0", "0x0.20p0", "0x0.2Cp0", + "0x0.40p0", "0x0.5Cp0", "0x0.80p0", "0x0.B4p0" + }; + const static ap_ufixed<10,0> exp2_x_lsb_m_1_table[8] = { + "0x0.0p0", "0x0.0B4p0", "0x0.174p0", "0x0.238p0", + "0x0.308p0", "0x0.3E0p0", "0x0.4C0p0", "0x0.5ACp0" + }; + ap_ufixed<11,0> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + ap_ufixed<10,4> exp2_x_msb = exp2_x_msb_table[x_msb_ind]; + ap_ufixed<21,4> y_lo = exp2_x_msb * exp2_x_lsb_m_1; + ap_ufixed<10,4> y_lo_s = y_lo; + ap_ufixed<10,4> y_l = y_lo_s + exp2_x_msb; + y = y_l; + } + + if(I < 5) { + bool overf = 0; + #pragma unroll + for(int j=7; j>=3+I; j--) { + if(y[j]) { + overf = 1; + } + } + if(overf) { + #pragma unroll + for(int j=7; j>=3+I; j--) { + y[j] = 0; + } + #pragma unroll + for(int j=I+2; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + + } else if(I_s == 4) { + + ap_fixed<17,9> x_l=x; + ap_ufixed<16,8> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(11,8); + ap_ufixed<8,0> x_l_fract; + x_l_fract(7,0) = x_l(7,0); + + bool overf_1 = 0; + #pragma unroll + for(int j=11; j<16; j++) { + if(x_l[16]!=x_l[j]) { + overf_1 = 1; + } + } + if(overf_1) { + if(!x_l[16]) { + y = "0xff.ffp0"; + } + } else { + + ap_uint<5> x_msb_ind_1; + x_msb_ind_1(4,0) = x_l(11,7); + ap_uint<4> x_msb_ind_2; + x_msb_ind_2(3,0) = x_l(6,3); + ap_uint<3> x_lsb_ind; + x_lsb_ind = x_l(2,0); + + const static ap_ufixed<14,-5> exp2_x_lsb_m_1_table[8] = { + "0x0.0p0", "0x0.00B1Ap0", "0x0.0163Ep0", "0x0.02168p0", + "0x0.02C9Ap0", "0x0.037D4p0", "0x0.04316p0", "0x0.04E60p0" + }; + ap_ufixed<14,-5> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<19,0> exp2_x_msb_2_m_1_table[16] = { + "0x0.0p0,0", "0x0.059B0p0", "0x0.0B558p0", "0x0.11302p0", + "0x0.172B8p0", "0x0.1D488p0", "0x0.2387Ap0", "0x0.29E9Ep0", + "0x0.306FEp0", "0x0.371A8p0", "0x0.3DEA6p0", "0x0.44E08p0", + "0x0.4BFDAp0", "0x0.5342Cp0", "0x0.5AB08p0", "0x0.6247Ep0" + }; + ap_ufixed<19,0> exp2_x_msb_2_m_1 = exp2_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed<33,-5> f_x_msb_2_lsb = exp2_x_msb_2_m_1 * exp2_x_lsb_m_1; + ap_ufixed<19,0> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<19,0> exp2_x_msb_2_lsb_m_1 = f_x_msb_2_lsb_s + exp2_x_msb_2_m_1 + exp2_x_lsb_m_1; + + const static ap_ufixed<19,8> exp2_x_msb_1_table[32] = { + "0x1.000p0", "0x1.6A0p0", "0x2.000p0", "0x2.D42p0", + "0x4.000p0", "0x5.A82p0", "0x8.000p0", "0xB.504p0", + "0x10.000p0", "0x16.A0Ap0", "0x20.000p0", "0x2D.414p0", + "0x40.000p0", "0x5A.828p0", "0x80.000p0", "0xB5.050p0", + "0x0.010p0", "0x0.016p0", "0x0.020p0", "0x0.02Ep0", + "0x0.040p0", "0x0.05Ap0", "0x0.080p0", "0x0.0B6p0", + "0x0.100p0", "0x0.16Ap0", "0x0.200p0", "0x0.2D4p0", + "0x0.400p0", "0x0.5A8p0", "0x0.800p0", "0x0.B50p0" + }; + ap_ufixed<19,8> exp2_x_msb_1 = exp2_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<38,8> y_lo = exp2_x_msb_1 * exp2_x_msb_2_lsb_m_1; + ap_ufixed<19,8> y_lo_s = y_lo; + ap_ufixed<19,8> y_l = y_lo_s + exp2_x_msb_1; + y = y_l; + } + + if(I < 9) { + bool overf_2 = 0; + #pragma unroll + for(int j=15; j>=7+I; j--) { + if(y[j]) { + overf_2 = 1; + } + } + if(overf_2) { + #pragma unroll + for(int j=15; j>=7+I; j--) { + y[j] = 0; + } + #pragma unroll + for(int j=6+I; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + + } else if(I_s == 5) { + + ap_fixed<33,17> x_l = x; + ap_ufixed<32,16> y = 0; + ap_fixed<5,5> x_l_int; + x_l_int(4,0) = x_l(20,16); + ap_ufixed<16,0> x_l_fract; + x_l_fract(15,0) = x_l(15,0); + + bool overf_1 = 0; + #pragma unroll + for(int j=20; j<32; j++) { + if(x_l[32]!=x_l[j]) { + overf_1 = 1; + } + } + if(overf_1) { + if(!x_l[32]) { + y = "0xffff.ffffp0"; + } + } else { + ap_uint<6> x_msb_ind_1; + x_msb_ind_1(5,0) = x_l(20,15); + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(14,10); + ap_uint<5> x_msb_ind_3; + x_msb_ind_3(4,0) = x_l(9,5); + ap_uint<5> x_lsb_ind; + x_lsb_ind = x_l(4,0); + + const static ap_ufixed<25,-11> exp2_x_lsb_m_1_table[32] = { + "0x0.0p0", "0x0.0000B1725p0", "0x0.000162E52p0", "0x0.000214587p0", + "0x0.0002C5CC3p0", "0x0.000377408p0", "0x0.000428B53p0", "0x0.0004DA2A7p0", + "0x0.00058BA02p0", "0x0.00063D165p0", "0x0.0006EE8CFp0", "0x0.0007A0042p0", + "0x0.0008517BBp0", "0x0.000902F3Dp0", "0x0.0009B46C6p0", "0x0.000A65E57p0", + "0x0.000B175F0p0", "0x0.000BC8D90p0", "0x0.000C7A538p0", "0x0.000D2BCE8p0", + "0x0.000DDD4A0p0", "0x0.000E8EC5Fp0", "0x0.000F40425p0", "0x0.000FF1BF4p0", + "0x0.0010A33CAp0", "0x0.001154BA8p0", "0x0.00120638Dp0", "0x0.0012B7B7Bp0", + "0x0.001369370p0", "0x0.00141AB6Cp0", "0x0.0014CC371p0", "0x0.00157DB7Dp0" + }; + ap_ufixed<25,-11> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<30,-6> exp2_x_msb_3_m_1_table[32] = { + "0x0.0p0", "0x0.00162F390p0", "0x0.002C605E3p0", "0x0.0042936FBp0", + "0x0.0058C86DAp0", "0x0.006EFF584p0", "0x0.0085382FBp0", "0x0.009B72F42p0", + "0x0.00B1AFA5Bp0", "0x0.00C7EE449p0", "0x0.00DE2ED0Fp0", "0x0.00F4714AFp0", + "0x0.010AB5B2Dp0", "0x0.0120FC08Ap0", "0x0.0137444CAp0", "0x0.014D8E7EFp0", + "0x0.0163DA9FBp0", "0x0.017A28AF2p0", "0x0.019078AD7p0", "0x0.01A6CA9ABp0", + "0x0.01BD1E771p0", "0x0.01D37442Dp0", "0x0.01E9CBFE1p0", "0x0.020025A8Fp0", + "0x0.02168143Bp0", "0x0.022CDECE7p0", "0x0.02433E495p0", "0x0.02599FB48p0", + "0x0.027003104p0", "0x0.0286685CAp0", "0x0.029CCF99Dp0", "0x0.02B338C81p0" + }; + ap_ufixed<30,-6> exp2_x_msb_3_m_1 = exp2_x_msb_3_m_1_table[x_msb_ind_3]; + ap_ufixed<55,-17> f_x_msb_3_lsb = exp2_x_msb_3_m_1 * exp2_x_lsb_m_1; + ap_ufixed<19,-17> f_x_msb_3_lsb_s = f_x_msb_3_lsb; + ap_ufixed<30,-6> exp2_x_msb_3_lsb_m_1 = f_x_msb_3_lsb_s + exp2_x_msb_3_m_1 + exp2_x_lsb_m_1; + + const static ap_ufixed<36,0> exp2_x_msb_2_m_1_table[32] = { + "0x0.0p0", "0x0.02C9A3E78p0", "0x0.059B0D316p0", "0x0.087451876p0", + "0x0.0B5586CFAp0", "0x0.0E3EC32D4p0", "0x0.11301D012p0", "0x0.1429AAEA9p0", + "0x0.172B83C7Dp0", "0x0.1A35BEB70p0", "0x0.1D4873169p0", "0x0.2063B8863p0", + "0x0.2387A6E75p0", "0x0.26B4565E2p0", "0x0.29E9DF520p0", "0x0.2D285A6E4p0", + "0x0.306FE0A32p0", "0x0.33C08B264p0", "0x0.371A7373Bp0", "0x0.3A7DB34E6p0", + "0x0.3DEA64C12p0", "0x0.4160A21F7p0", "0x0.44E086062p0", "0x0.486A2B5C1p0", + "0x0.4BFDAD536p0", "0x0.4F9B2769Dp0", "0x0.5342B569Dp0", "0x0.56F4736B5p0", + "0x0.5AB07DD48p0", "0x0.5E76F15ADp0", "0x0.6247EB03Ap0", "0x0.662388255p0" + }; + ap_ufixed<36,0> exp2_x_msb_2_m_1 = exp2_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed<66,-6> f_x_msb_2_lsb = exp2_x_msb_2_m_1 * exp2_x_msb_3_lsb_m_1; + ap_ufixed<30,-6> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<36,0> exp2_x_msb_2_3_lsb_m_1 = f_x_msb_2_lsb_s + exp2_x_msb_2_m_1 + exp2_x_msb_3_lsb_m_1; + + const static ap_ufixed<36,16> exp2_x_msb_1_table[64] = { + "0x1.00000p0", "0x1.6A09Ep0", "0x2.00000p0", "0x2.D413Dp0", + "0x4.00000p0", "0x5.A827Ap0", "0x8.00000p0", "0xB.504F3p0", + "0x10.00000p0", "0x16.A09E6p0", "0x20.00000p0", "0x2D.413CDp0", + "0x40.00000p0", "0x5A.8279Ap0", "0x80.00000p0", "0xB5.04F33p0", + "0x100.00000p0", "0x16A.09E66p0", "0x200.00000p0", "0x2D4.13CCDp0", + "0x400.00000p0", "0x5A8.2799Ap0", "0x800.00000p0", "0xB50.4F334p0", + "0x1000.00000p0", "0x16A0.9E668p0", "0x2000.00000p0", "0x2D41.3CCD0p0", + "0x4000.00000p0", "0x5A82.799A0p0", "0x8000.00000p0", "0xB504.F3340p0", + "0x0.00010p0", "0x0.00017p0", "0x0.00020p0", "0x0.0002Dp0", + "0x0.00040p0", "0x0.0005Bp0", "0x0.00080p0", "0x0.000B5p0", + "0x0.00100p0", "0x0.0016Ap0", "0x0.00200p0", "0x0.002D4p0", + "0x0.00400p0", "0x0.005A8p0", "0x0.00800p0", "0x0.00B50p0", + "0x0.01000p0", "0x0.016A1p0", "0x0.02000p0", "0x0.02D41p0", + "0x0.04000p0", "0x0.05A82p0", "0x0.08000p0", "0x0.0B505p0", + "0x0.10000p0", "0x0.16A0Ap0", "0x0.20000p0", "0x0.2D414p0", + "0x0.40000p0", "0x0.5A828p0", "0x0.80000p0", "0x0.B504Fp0" + }; + ap_ufixed<36,16> exp2_x_msb_1 = exp2_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<72,16> y_lo = exp2_x_msb_1 * exp2_x_msb_2_3_lsb_m_1; + ap_ufixed<36,16> y_lo_s = y_lo; + ap_ufixed<36,16> y_l = y_lo_s + exp2_x_msb_1; + y = y_l; + } + + if(I<17) { + bool overf_2 = 0; + #pragma unroll + for(int j=31; j>=I+15; j--) { + if(y[j]) { + overf_2 = 1; + } + } + if(overf_2) { + #pragma unroll + for(int j=31; j>=I+15; j--) { + y[j] = 0; + } + #pragma unroll + for(int j=I+14; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + + } else { + ap_fixed<65,33> x_l = 0; + #pragma unroll + for(int j=32-F; j<32+I; j++) { + x_l[j] = x[j-(32-F)]; + } + #pragma unroll + for(int j=32+I; j<=64; j++) { + x_l[j] = x[W-1]; + } + ap_ufixed<64,32> y = 0; + ap_fixed<6,6> x_l_int; + x_l_int(5,0) = x_l(37,32); + ap_ufixed<32,0> x_l_fract; + x_l_fract(31,0) = x_l(31,0); + + bool overf_1 = 0; + #pragma unroll + for(int j=37; j<64; j++) { + if(x_l[j]!=x_l[64]) { + overf_1 = 1; + } + } + if(overf_1) { + if(!x_l[64]) { + #pragma unroll + for(int j=0; j<64; j++) { + y[j] = 1; + } + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1(7,0) = x_l(37,30); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(29,22); + ap_uint<8> x_msb_ind_3; + x_msb_ind_3(7,0) = x_l(21,14); + ap_uint<8> x_msb_ind_4; + x_msb_ind_4(7,0) = x_l(13,6); + ap_uint<6> x_lsb_ind; + x_lsb_ind(5,0) = x_l(5,0); + + const static ap_ufixed<42,-26> exp2_x_lsb_m_1_table[64] = { + "0x0.0p0", "0x0.00000000B17217F81p0", "0x0.0000000162E42FF0Ap0", "0x0.00000002145647E9Ap0", + "0x0.00000002C5C85FE32p0", "0x0.00000003773A77DD2p0", "0x0.0000000428AC8FD79p0", "0x0.00000004DA1EA7D28p0", + "0x0.000000058B90BFCDFp0", "0x0.000000063D02D7C9Dp0", "0x0.00000006EE74EFC63p0", "0x0.000000079FE707C31p0", + "0x0.0000000851591FC07p0", "0x0.0000000902CB37BE4p0", "0x0.00000009B43D4FBC9p0", "0x0.0000000A65AF67BB6p0", + "0x0.0000000B17217FBAAp0", "0x0.0000000BC89397BA6p0", "0x0.0000000C7A05AFBA9p0", "0x0.0000000D2B77C7BB5p0", + "0x0.0000000DDCE9DFBC8p0", "0x0.0000000E8E5BF7BE2p0", "0x0.0000000F3FCE0FC05p0", "0x0.0000000FF14027C2Fp0", + "0x0.00000010A2B23FC61p0", "0x0.00000011542457C9Ap0", "0x0.0000001205966FCDBp0", "0x0.00000012B70887D24p0", + "0x0.00000013687A9FD75p0", "0x0.0000001419ECB7DCDp0", "0x0.00000014CB5ECFE2Dp0", "0x0.000000157CD0E7E94p0", + "0x0.000000162E42FFF03p0", "0x0.00000016DFB517F7Ap0", "0x0.0000001791272FFF9p0", "0x0.0000001842994807Fp0", + "0x0.00000018F40B6010Dp0", "0x0.00000019A57D781A3p0", "0x0.0000001A56EF90240p0", "0x0.0000001B0861A82E6p0", + "0x0.0000001BB9D3C0392p0", "0x0.0000001C6B45D8447p0", "0x0.0000001D1CB7F0503p0", "0x0.0000001DCE2A085C7p0", + "0x0.0000001E7F9C20692p0", "0x0.0000001F310E38765p0", "0x0.0000001FE28050840p0", "0x0.0000002093F268923p0", + "0x0.00000021456480A0Dp0", "0x0.00000021F6D698AFFp0", "0x0.00000022A848B0BF9p0", "0x0.0000002359BAC8CFAp0", + "0x0.000000240B2CE0E03p0", "0x0.00000024BC9EF8F14p0", "0x0.000000256E111102Cp0", "0x0.000000261F832914Cp0", + "0x0.00000026D0F541274p0", "0x0.000000278267593A3p0", "0x0.0000002833D9714DBp0", "0x0.00000028E54B89619p0", + "0x0.0000002996BDA1760p0", "0x0.0000002A482FB98AEp0", "0x0.0000002AF9A1D1A04p0", "0x0.0000002BAB13E9B61p0" + }; + ap_ufixed<42,-26> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<50,-18> exp2_x_msb_4_m_1_table[256] = { + "0x0.0p0", "0x0.0000002C5C8601CC7p0", "0x0.00000058B90C0B48Cp0", "0x0.0000008515921C751p0", + "0x0.000000B1721835515p0", "0x0.000000DDCE9E55DD7p0", "0x0.0000010A2B247E199p0", "0x0.0000013687AAAE059p0", + "0x0.00000162E430E5A19p0", "0x0.0000018F40B724ED7p0", "0x0.000001BB9D3D6BE95p0", "0x0.000001E7F9C3BA951p0", + "0x0.00000214564A10F0Dp0", "0x0.00000240B2D06EFC7p0", "0x0.0000026D0F56D4B80p0", "0x0.000002996BDD42239p0", + "0x0.000002C5C863B73F0p0", "0x0.000002F224EA340A6p0", "0x0.0000031E8170B885Cp0", "0x0.0000034ADDF744B10p0", + "0x0.000003773A7DD88C3p0", "0x0.000003A3970474175p0", "0x0.000003CFF38B17526p0", "0x0.000003FC5011C23D6p0", + "0x0.00000428AC9874D86p0", "0x0.00000455091F2F234p0", "0x0.0000048165A5F11E1p0", "0x0.000004ADC22CBAC8Dp0", + "0x0.000004DA1EB38C238p0", "0x0.000005067B3A652E2p0", "0x0.00000532D7C145E8Bp0", "0x0.0000055F34482E533p0", + "0x0.0000058B90CF1E6D9p0", "0x0.000005B7ED561637Fp0", "0x0.000005E449DD15B24p0", "0x0.00000610A6641CDC8p0", + "0x0.0000063D02EB2BB6Bp0", "0x0.000006695F724240Dp0", "0x0.00000695BBF9607AEp0", "0x0.000006C218808664Dp0", + "0x0.000006EE7507B3FECp0", "0x0.0000071AD18EE948Ap0", "0x0.000007472E1626427p0", "0x0.000007738A9D6AEC2p0", + "0x0.0000079FE724B745Dp0", "0x0.000007CC43AC0B4F7p0", "0x0.000007F8A0336708Fp0", "0x0.00000824FCBACA727p0", + "0x0.000008515942358BEp0", "0x0.0000087DB5C9A8553p0", "0x0.000008AA125122CE8p0", "0x0.000008D66ED8A4F7Bp0", + "0x0.00000902CB602ED0Ep0", "0x0.0000092F27E7C059Fp0", "0x0.0000095B846F59930p0", "0x0.00000987E0F6FA7C0p0", + "0x0.000009B43D7EA314Ep0", "0x0.000009E09A06535DCp0", "0x0.00000A0CF68E0B568p0", "0x0.00000A395315CAFF3p0", + "0x0.00000A65AF9D9257Ep0", "0x0.00000A920C2561607p0", "0x0.00000ABE68AD38190p0", "0x0.00000AEAC53516817p0", + "0x0.00000B1721BCFC99Ep0", "0x0.00000B437E44EA623p0", "0x0.00000B6FDACCDFDA7p0", "0x0.00000B9C3754DD02Bp0", + "0x0.00000BC893DCE1DADp0", "0x0.00000BF4F064EE62Fp0", "0x0.00000C214CED029AFp0", "0x0.00000C4DA9751E82Ep0", + "0x0.00000C7A05FD421ADp0", "0x0.00000CA662856D62Ap0", "0x0.00000CD2BF0DA05A6p0", "0x0.00000CFF1B95DB022p0", + "0x0.00000D2B781E1D59Cp0", "0x0.00000D57D4A667615p0", "0x0.00000D84312EB918Dp0", "0x0.00000DB08DB712805p0", + "0x0.00000DDCEA3F7397Bp0", "0x0.00000E0946C7DC5F0p0", "0x0.00000E35A3504CD65p0", "0x0.00000E61FFD8C4FD8p0", + "0x0.00000E8E5C6144D4Ap0", "0x0.00000EBAB8E9CC5BBp0", "0x0.00000EE715725B92Cp0", "0x0.00000F1371FAF279Bp0", + "0x0.00000F3FCE8391109p0", "0x0.00000F6C2B0C37576p0", "0x0.00000F988794E54E3p0", "0x0.00000FC4E41D9AF4Ep0", + "0x0.00000FF140A6584B8p0", "0x0.0000101D9D2F1D521p0", "0x0.00001049F9B7EA08Ap0", "0x0.000010765640BE6F1p0", + "0x0.000010A2B2C99A857p0", "0x0.000010CF0F527E4BCp0", "0x0.000010FB6BDB69C21p0", "0x0.00001127C8645CE84p0", + "0x0.0000115424ED57BE6p0", "0x0.0000118081765A447p0", "0x0.000011ACDDFF647A7p0", "0x0.000011D93A8876607p0", + "0x0.0000120597118FF65p0", "0x0.00001231F39AB13C2p0", "0x0.0000125E5023DA31Ep0", "0x0.0000128AACAD0AD7Ap0", + "0x0.000012B70936432D4p0", "0x0.000012E365BF8332Dp0", "0x0.0000130FC248CAE85p0", "0x0.0000133C1ED21A4DDp0", + "0x0.000013687B5B71633p0", "0x0.00001394D7E4D0288p0", "0x0.000013C1346E369DDp0", "0x0.000013ED90F7A4C30p0", + "0x0.00001419ED811A982p0", "0x0.000014464A0A981D4p0", "0x0.00001472A6941D524p0", "0x0.0000149F031DAA373p0", + "0x0.000014CB5FA73ECC1p0", "0x0.000014F7BC30DB10Fp0", "0x0.0000152418BA7F05Bp0", "0x0.0000155075442AAA6p0", + "0x0.0000157CD1CDDDFF1p0", "0x0.000015A92E579903Ap0", "0x0.000015D58AE15BB83p0", "0x0.00001601E76B261CAp0", + "0x0.0000162E43F4F8310p0", "0x0.0000165AA07ED1F56p0", "0x0.00001686FD08B369Ap0", "0x0.000016B359929C8DEp0", + "0x0.000016DFB61C8D620p0", "0x0.0000170C12A685E62p0", "0x0.000017386F30861A2p0", "0x0.00001764CBBA8DFE1p0", + "0x0.0000179128449D920p0", "0x0.000017BD84CEB4D5Dp0", "0x0.000017E9E158D3C9Ap0", "0x0.000018163DE2FA6D6p0", + "0x0.000018429A6D28C10p0", "0x0.0000186EF6F75EC4Ap0", "0x0.0000189B53819C782p0", "0x0.000018C7B00BE1DBAp0", + "0x0.000018F40C962EEF0p0", "0x0.00001920692083B26p0", "0x0.0000194CC5AAE025Bp0", "0x0.0000197922354448Ep0", + "0x0.000019A57EBFB01C1p0", "0x0.000019D1DB4A239F3p0", "0x0.000019FE37D49ED23p0", "0x0.00001A2A945F21B53p0", + "0x0.00001A56F0E9AC482p0", "0x0.00001A834D743E8B0p0", "0x0.00001AAFA9FED87DCp0", "0x0.00001ADC06897A208p0", + "0x0.00001B08631423733p0", "0x0.00001B34BF9ED475Dp0", "0x0.00001B611C298D286p0", "0x0.00001B8D78B44D8ADp0", + "0x0.00001BB9D53F159D4p0", "0x0.00001BE631C9E55FAp0", "0x0.00001C128E54BCD1Fp0", "0x0.00001C3EEADF9BF43p0", + "0x0.00001C6B476A82C66p0", "0x0.00001C97A3F571488p0", "0x0.00001CC40080677A9p0", "0x0.00001CF05D0B655C9p0", + "0x0.00001D1CB9966AEE8p0", "0x0.00001D49162178306p0", "0x0.00001D7572AC8D223p0", "0x0.00001DA1CF37A9C40p0", + "0x0.00001DCE2BC2CE15Bp0", "0x0.00001DFA884DFA175p0", "0x0.00001E26E4D92DC8Ep0", "0x0.00001E534164692A6p0", + "0x0.00001E7F9DEFAC3BEp0", "0x0.00001EABFA7AF6FD4p0", "0x0.00001ED85706496E9p0", "0x0.00001F04B391A38FEp0", + "0x0.00001F31101D05611p0", "0x0.00001F5D6CA86EE23p0", "0x0.00001F89C933E0135p0", "0x0.00001FB625BF58F45p0", + "0x0.00001FE2824AD9855p0", "0x0.0000200EDED661C63p0", "0x0.0000203B3B61F1B71p0", "0x0.0000206797ED8957Dp0", + "0x0.00002093F47928A89p0", "0x0.000020C05104CFA93p0", "0x0.000020ECAD907E59Dp0", "0x0.000021190A1C34BA6p0", + "0x0.0000214566A7F2CAEp0", "0x0.00002171C333B88B4p0", "0x0.0000219E1FBF85FBAp0", "0x0.000021CA7C4B5B1BFp0", + "0x0.000021F6D8D737EC3p0", "0x0.0000222335631C6C6p0", "0x0.0000224F91EF089C7p0", "0x0.0000227BEE7AFC7C8p0", + "0x0.000022A84B06F80C8p0", "0x0.000022D4A792FB4C7p0", "0x0.00002301041F063C5p0", "0x0.0000232D60AB18DC3p0", + "0x0.00002359BD37332BFp0", "0x0.0000238619C3552BAp0", "0x0.000023B2764F7EDB4p0", "0x0.000023DED2DBB03ADp0", + "0x0.0000240B2F67E94A5p0", "0x0.000024378BF42A09Dp0", "0x0.00002463E88072793p0", "0x0.00002490450CC2988p0", + "0x0.000024BCA1991A67Dp0", "0x0.000024E8FE2579E70p0", "0x0.000025155AB1E1163p0", "0x0.00002541B73E4FF54p0", + "0x0.0000256E13CAC6845p0", "0x0.0000259A705744C34p0", "0x0.000025C6CCE3CAB23p0", "0x0.000025F3297058511p0", + "0x0.0000261F85FCED9FDp0", "0x0.0000264BE2898A9E9p0", "0x0.000026783F162F4D4p0", "0x0.000026A49BA2DBABEp0", + "0x0.000026D0F82F8FBA7p0", "0x0.000026FD54BC4B78Fp0", "0x0.00002729B1490EE75p0", "0x0.000027560DD5DA05Bp0", + "0x0.000027826A62ACD41p0", "0x0.000027AEC6EF87525p0", "0x0.000027DB237C69808p0", "0x0.000028078009535EAp0", + "0x0.00002833DC9644ECBp0", "0x0.0000286039233E2ABp0", "0x0.0000288C95B03F18Bp0", "0x0.000028B8F23D47B69p0", + "0x0.000028E54ECA58046p0", "0x0.00002911AB5770023p0", "0x0.0000293E07E48FAFEp0", "0x0.0000296A6471B70D9p0", + "0x0.00002996C0FEE61B2p0", "0x0.000029C31D8C1CD8Bp0", "0x0.000029EF7A195B463p0", "0x0.00002A1BD6A6A1639p0", + "0x0.00002A483333EF30Fp0", "0x0.00002A748FC144AE4p0", "0x0.00002AA0EC4EA1DB8p0", "0x0.00002ACD48DC06B8Bp0", + "0x0.00002AF9A5697345Dp0", "0x0.00002B2601F6E782Ep0", "0x0.00002B525E84636FEp0", "0x0.00002B7EBB11E70CDp0", + "0x0.00002BAB179F7259Bp0", "0x0.00002BD7742D05568p0", "0x0.00002C03D0BAA0035p0", "0x0.00002C302D4842600p0" + }; + ap_ufixed<50,-18> exp2_x_msb_4_m_1 = exp2_x_msb_4_m_1_table[x_msb_ind_4]; + ap_ufixed<92,-44> f_x_msb_4_lsb = exp2_x_lsb_m_1 * exp2_x_msb_4_m_1; + ap_ufixed<24,-44> f_x_msb_4_lsb_s = f_x_msb_4_lsb; + ap_ufixed<50,-18> exp2_x_msb_4_lsb_m_1 = f_x_msb_4_lsb_s + exp2_x_msb_4_m_1 + exp2_x_lsb_m_1; + + const static ap_ufixed<58,-10> exp2_x_msb_3_m_1_table[256] = { + "0x0.0p0", "0x0.00002C5C89D5EC6CAp0", "0x0.000058B91B5BC9AE3p0", "0x0.00008515B4919919Ap0", + "0x0.0000B17255775C040p0", "0x0.0000DDCEFE0D13C26p0", "0x0.00010A2BAE52C1A9Bp0", "0x0.000136886648670F0p0", + "0x0.000162E525EE05475p0", "0x0.00018F41ED439DA7Bp0", "0x0.0001BB9EBC4931853p0", "0x0.0001E7FB92FEC234Bp0", + "0x0.000214587164510B6p0", "0x0.000240B55779DF5E3p0", "0x0.00026D12453F6E823p0", "0x0.0002996F3AB4FFCC6p0", + "0x0.0002C5CC37DA9491Dp0", "0x0.0002F2293CB02E278p0", "0x0.00031E864935CDE29p0", "0x0.00034AE35D6B7517Ep0", + "0x0.000377407951251C9p0", "0x0.0003A39D9CE6DF45Bp0", "0x0.0003CFFAC82CA4E84p0", "0x0.0003FC57FB2277595p0", + "0x0.000428B535C857EDDp0", "0x0.00045512781E47FAFp0", "0x0.0004816FC22448D5Ap0", "0x0.0004ADCD13DA5BD2Fp0", + "0x0.0004DA2A6D408247Ep0", "0x0.00050687CE56BD89Ap0", "0x0.000532E5371D0EED1p0", "0x0.00055F42A79377C75p0", + "0x0.00058BA01FB9F96D7p0", "0x0.0005B7FD9F9095347p0", "0x0.0005E45B27174C716p0", "0x0.000610B8B64E20794p0", + "0x0.00063D164D3512A14p0", "0x0.00066973EBCC243E4p0", "0x0.000695D1921356A57p0", "0x0.0006C22F400AAB2BCp0", + "0x0.0006EE8CF5B223266p0", "0x0.00071AEAB309BFEA4p0", "0x0.00074748781182CC7p0", "0x0.000773A644C96D221p0", + "0x0.0007A004193180402p0", "0x0.0007CC61F549BD7BCp0", "0x0.0007F8BFD9122629Ep0", "0x0.0008251DC48ABB9FAp0", + "0x0.0008517BB7B37F322p0", "0x0.00087DD9B28C72365p0", "0x0.0008AA37B51596015p0", "0x0.0008D695BF4EEBE83p0", + "0x0.000902F3D13875400p0", "0x0.00092F51EAD2335DCp0", "0x0.00095BB00C1C2796Ap0", "0x0.0009880E3516533FAp0", + "0x0.0009B46C65C0B7ADCp0", "0x0.0009E0CA9E1B56363p0", "0x0.000A0D28DE26302DFp0", "0x0.000A398725E146EA2p0", + "0x0.000A65E5754C9BBFBp0", "0x0.000A9243CC683003Ep0", "0x0.000ABEA22B34050BAp0", "0x0.000AEB0091B01C2C1p0", + "0x0.000B175EFFDC76BA4p0", "0x0.000B43BD75B9160B4p0", "0x0.000B701BF345FB742p0", "0x0.000B9C7A7883284A1p0", + "0x0.000BC8D905709DE20p0", "0x0.000BF5379A0E5D912p0", "0x0.000C2196365C68AC6p0", "0x0.000C4DF4DA5AC0890p0", + "0x0.000C7A538609667C0p0", "0x0.000CA6B239685BDA6p0", "0x0.000CD310F477A1F96p0", "0x0.000CFF6FB7373A2DFp0", + "0x0.000D2BCE81A725CD4p0", "0x0.000D582D53C7662C6p0", "0x0.000D848C2D97FCA05p0", "0x0.000DB0EB0F18EA7E4p0", + "0x0.000DDD49F84A311B4p0", "0x0.000E09A8E92BD1CC6p0", "0x0.000E3607E1BDCDE6Cp0", "0x0.000E6266E20026BF7p0", + "0x0.000E8EC5E9F2DDAB9p0", "0x0.000EBB24F995F4003p0", "0x0.000EE78410E96B126p0", "0x0.000F13E32FED44375p0", + "0x0.000F404256A180C40p0", "0x0.000F6CA18506220D9p0", "0x0.000F9900BB1B29692p0", "0x0.000FC55FF8E0982BDp0", + "0x0.000FF1BF3E566FAAAp0", "0x0.00101E1E8B7CB13ACp0", "0x0.00104A7DE0535E314p0", "0x0.001076DD3CDA77E34p0", + "0x0.0010A33CA111FFA5Dp0", "0x0.0010CF9C0CF9F6CE1p0", "0x0.0010FBFB80925EB11p0", "0x0.0011285AFBDB38A40p0", + "0x0.001154BA7ED485FC0p0", "0x0.0011811A097E480E0p0", "0x0.0011AD799BD8802F5p0", "0x0.0011D9D935E32FB4Fp0", + "0x0.00120638D79E57F3Fp0", "0x0.001232988109FA419p0", "0x0.00125EF8322617F2Dp0", "0x0.00128B57EAF2B25CDp0", + "0x0.0012B7B7AB6FCAD4Bp0", "0x0.0012E417739D62AFAp0", "0x0.00131077437B7B42Ap0", "0x0.00133CD71B0A15E2Ep0", + "0x0.00136936FA4933E58p0", "0x0.00139596E138D69F9p0", "0x0.0013C1F6CFD8FF663p0", "0x0.0013EE56C629AF8E9p0", + "0x0.00141AB6C42AE86DBp0", "0x0.00144716C9DCAB58Dp0", "0x0.00147376D73EF9A50p0", "0x0.00149FD6EC51D4A76p0", + "0x0.0014CC3709153DB51p0", "0x0.0014F8972D8936234p0", "0x0.001524F759ADBF46Fp0", "0x0.001551578D82DA755p0", + "0x0.00157DB7C90889038p0", "0x0.0015AA180C3ECC46Bp0", "0x0.0015D6785725A593Fp0", "0x0.001602D8A9BD16406p0", + "0x0.00162F3904051FA13p0", "0x0.00165B9965FDC30B7p0", "0x0.001687F9CFA701D45p0", "0x0.0016B45A4100DD50Ep0", + "0x0.0016E0BABA0B56D66p0", "0x0.00170D1B3AC66FB9Ep0", "0x0.0017397BC33229508p0", "0x0.001765DC534E84EF7p0", + "0x0.0017923CEB1B83EBCp0", "0x0.0017BE9D8A99279ABp0", "0x0.0017EAFE31C771515p0", "0x0.0018175EE0A66264Cp0", + "0x0.001843BF9735FC2A3p0", "0x0.0018702055763FF6Cp0", "0x0.00189C811B672F1FAp0", "0x0.0018C8E1E908CAF9Ep0", + "0x0.0018F542BE5B14DABp0", "0x0.001921A39B5E0E174p0", "0x0.00194E048011B804Ap0", "0x0.00197A656C7613F81p0", + "0x0.0019A6C6608B2346Ap0", "0x0.0019D3275C50E7458p0", "0x0.0019FF885FC76149Dp0", "0x0.001A2BE96AEE92A8Cp0", + "0x0.001A584A7DC67CB77p0", "0x0.001A84AB984F20CB1p0", "0x0.001AB10CBA888038Cp0", "0x0.001ADD6DE4729C55Ap0", + "0x0.001B09CF160D7676Fp0", "0x0.001B36304F590FF1Dp0", "0x0.001B629190556A1B5p0", "0x0.001B8EF2D9028648Cp0", + "0x0.001BBB54296065CF2p0", "0x0.001BE7B5816F0A03Cp0", "0x0.001C1416E12E743BBp0", "0x0.001C4078489EA5CC2p0", + "0x0.001C6CD9B7BFA00A4p0", "0x0.001C993B2E91644B3p0", "0x0.001CC59CAD13F3E42p0", "0x0.001CF1FE3347502A4p0", + "0x0.001D1E5FC12B7A72Bp0", "0x0.001D4AC156C07412Ap0", "0x0.001D7722F4063E5F4p0", "0x0.001DA38498FCDAADBp0", + "0x0.001DCFE645A44A533p0", "0x0.001DFC47F9FC8EA4Dp0", "0x0.001E28A9B605A8F7Dp0", "0x0.001E550B79BF9AA16p0", + "0x0.001E816D452A64F6Ap0", "0x0.001EADCF1846094CCp0", "0x0.001EDA30F31288F8Ep0", "0x0.001F0692D58FE5505p0", + "0x0.001F32F4BFBE1FA82p0", "0x0.001F5F56B19D39559p0", "0x0.001F8BB8AB2D33ADCp0", "0x0.001FB81AAC6E1005Ep0", + "0x0.001FE47CB55FCFB33p0", "0x0.002010DEC602740ACp0", "0x0.00203D40DE55FE61Ep0", "0x0.002069A2FE5A700DAp0", + "0x0.00209605260FCA635p0", "0x0.0020C26755760EB80p0", "0x0.0020EEC98C8D3E60Fp0", "0x0.00211B2BCB555AB35p0", + "0x0.0021478E11CE65045p0", "0x0.002173F05FF85EA93p0", "0x0.0021A052B5D348F70p0", "0x0.0021CCB5135F25430p0", + "0x0.0021F917789BF4E26p0", "0x0.00222579E589B92A6p0", "0x0.002251DC5A2873702p0", "0x0.00227E3ED6782508Ep0", + "0x0.0022AAA15A78CF49Cp0", "0x0.0022D703E62A73880p0", "0x0.00230366798D1318Dp0", "0x0.00232FC914A0AF516p0", + "0x0.00235C2BB7654986Fp0", "0x0.0023888E61DAE30EAp0", "0x0.0023B4F114017D3DBp0", "0x0.0023E153CDD919695p0", + "0x0.00240DB68F61B8E6Cp0", "0x0.00243A19589B5D0B2p0", "0x0.0024667C2986072BAp0", "0x0.002492DF0221B89D9p0", + "0x0.0024BF41E26E72B62p0", "0x0.0024EBA4CA6C36CA7p0", "0x0.00251807BA1B062FDp0", "0x0.0025446AB17AE23B5p0", + "0x0.002570CDB08BCC425p0", "0x0.00259D30B74DC599Fp0", "0x0.0025C993C5C0CF977p0", "0x0.0025F5F6DBE4EB900p0", + "0x0.00262259F9BA1AD8Dp0", "0x0.00264EBD1F405EC72p0", "0x0.00267B204C77B8B03p0", "0x0.0026A783816029E92p0", + "0x0.0026D3E6BDF9B3C74p0", "0x0.0027004A0244579FCp0", "0x0.00272CAD4E4016C7Dp0", "0x0.00275910A1ECF294Bp0", + "0x0.00278573FD4AEC5BAp0", "0x0.0027B1D7605A0571Cp0", "0x0.0027DE3ACB1A3F2C6p0", "0x0.00280A9E3D8B9AE0Cp0", + "0x0.00283701B7AE19E40p0", "0x0.002863653981BD8B6p0", "0x0.00288FC8C306872C3p0", "0x0.0028BC2C543C781B9p0", + "0x0.0028E88FED2391AECp0", "0x0.002914F38DBBD53B1p0", "0x0.0029415736054415Ap0", "0x0.00296DBAE5FFDF93Cp0", + "0x0.00299A1E9DABA90A9p0", "0x0.0029C6825D08A1CF7p0", "0x0.0029F2E62416CB378p0", "0x0.002A1F49F2D626981p0", + "0x0.002A4BADC946B5464p0", "0x0.002A7811A76878977p0", "0x0.002AA4758D3B71E0Cp0", "0x0.002AD0D97ABFA2778p0", + "0x0.002AFD3D6FF50BB0Ep0", "0x0.002B29A16CDBAEE23p0", "0x0.002B560571738D609p0", "0x0.002B82697DBCA8816p0", + "0x0.002BAECD91B70199Cp0", "0x0.002BDB31AD6299FF0p0", "0x0.002C0795D0BF73066p0", "0x0.002C33F9FBCD8E052p0" + }; + ap_ufixed<58,-10> exp2_x_msb_3_m_1 = exp2_x_msb_3_m_1_table[x_msb_ind_3]; + ap_ufixed<108,-28> f_x_msb_3_lsb = exp2_x_msb_3_m_1 * exp2_x_msb_4_lsb_m_1; + ap_ufixed<40, -28> f_x_msb_3_lsb_s = f_x_msb_3_lsb; + ap_ufixed<58, -10> exp2_x_msb_3_4_lsb_m_1 = f_x_msb_3_lsb_s + exp2_x_msb_3_m_1 + exp2_x_msb_4_lsb_m_1; + + const static ap_ufixed<68,0> exp2_x_msb_2_m_1_table[256] = { + "0x0.0p0", "0x0.002C605E2E8CEC507p0", "0x0.0058C86DA1C09EA20p0", "0x0.0085382FAEF831DA9p0", + "0x0.00B1AFA5ABCBED613p0", "0x0.00DE2ED0EE0F4F5FDp0", "0x0.010AB5B2CBD117074p0", "0x0.0137444C9B5B4ED49p0", + "0x0.0163DA9FB33356D85p0", "0x0.019078AD6A19EEFF7p0", "0x0.01BD1E77170B415E7p0", "0x0.01E9CBFE113EEC7DCp0", + "0x0.02168143B0280DA82p0", "0x0.02433E494B754B3ADp0", "0x0.027003103B10DEF7Dp0", "0x0.029CCF99D720A0593p0", + "0x0.02C9A3E778060EE6Fp0", "0x0.02F67FFA765E5C8E5p0", "0x0.032363D42B0277FAAp0", "0x0.03504F75EF0716F0Cp0", + "0x0.037D42E11BBCC0AB4p0", "0x0.03AA3E170AAFD8396p0", "0x0.03D7411915A8A6DF0p0", "0x0.04044BE896AB66771p0", + "0x0.04315E86E7F84BD74p0", "0x0.045E78F5640B9135Cp0", "0x0.048B9B35659D8090Ep0", "0x0.04B8C54847A27E186p0", + "0x0.04E5F72F654B12987p0", "0x0.051330EC1A03F5E6Ap0", "0x0.0540727FC1761950Dp0", "0x0.056DBBEBB786B20D9p0", + "0x0.059B0D31585743AE8p0", "0x0.05C866520045AA948p0", "0x0.05F5C74F0BEC2665Bp0", "0x0.06233029D82164855p0", + "0x0.0650A0E3C1F88A8D2p0", "0x0.067E197E26C140C90p0", "0x0.06AB99FA6407BCB43p0", "0x0.06D92259D794CB783p0", + "0x0.0706B29DDF6DDC6DCp0", "0x0.07344AC7D9D50B9FCp0", "0x0.0761EAD925492C4F5p0", "0x0.078F92D32085D37A9p0", + "0x0.07BD42B72A8362646p0", "0x0.07EAFA86A277111EFp0", "0x0.0818BA42E7D2F916Ep0", "0x0.084681ED5A461FA1Ap0", + "0x0.0874518759BC808C3p0", "0x0.08A22912465F18AD3p0", "0x0.08D0088F8093F0774p0", "0x0.08FDF00068FE268ECp0", + "0x0.092BDF66607DFA5FEp0", "0x0.0959D6C2C830D6B7Fp0", "0x0.0987D61701715C5F5p0", "0x0.09B5DD646DD76CB61p0", + "0x0.09E3ECAC6F3834522p0", "0x0.0A1203F067A6359F1p0", "0x0.0A402331B97153804p0", "0x0.0A6E4A71C726DBF42p0", + "0x0.0A9C79B1F39192BA3p0", "0x0.0ACAB0F3A1B9BBF9Fp0", "0x0.0AF8F03834E526EC8p0", "0x0.0B273781109738876p0", + "0x0.0B5586CF9890F6299p0", "0x0.0B83DE2530D1104A2p0", "0x0.0BB23D833D93ED290p0", "0x0.0BE0A4EB2353B3818p0", + "0x0.0C0F145E46C8553E6p0", "0x0.0C3D8BDE0CE79A306p0", "0x0.0C6C0B6BDAE52AC5Dp0", "0x0.0C9A930916329AC51p0", + "0x0.0CC922B7247F7407Bp0", "0x0.0CF7BA776BB94138Ap0", "0x0.0D265A4B520B98932p0", "0x0.0D5502343DE026A4Bp0", + "0x0.0D83B23395DEB90FBp0", "0x0.0DB26A4AC0ED4950Dp0", "0x0.0DE12A7B263007860p0", "0x0.0E0FF2C62D0965371p0", + "0x0.0E3EC32D3D1A20207p0", "0x0.0E6D9BB1BE414CFFDp0", "0x0.0E9C7C55189C62628p0", "0x0.0ECB6518B4874375Bp0", + "0x0.0EFA55FDFA9C4AD89p0", "0x0.0F294F0653B45570Ap0", "0x0.0F58503328E6CD3F5p0", "0x0.0F875985E389B439Ep0", + "0x0.0FB66AFFED31AF232p0", "0x0.0FE584A2AFB210670p0", "0x0.1014A66F951CE2F7Ep0", "0x0.1043D06807C2F52E1p0", + "0x0.1073028D7233E3A8Ep0", "0x0.10A23CE13F3E2431Dp0", "0x0.10D17F64D9EF10A19p0", "0x0.1100CA19AD92F1C6Bp0", + "0x0.11301D0125B50A4ECp0", "0x0.115F781CAE1FA1B08p0", "0x0.118EDB6DB2DC0F18Dp0", "0x0.11BE46F5A032C458Fp0", + "0x0.11EDBAB5E2AB58D6Fp0", "0x0.121D36AFE70C947FBp0", "0x0.124CBAE51A5C7ABB5p0", "0x0.127C4756E9E055631p0", + "0x0.12ABDC06C31CBFB93p0", "0x0.12DB78F613D5B162Dp0", "0x0.130B1E264A0E8963Cp0", "0x0.133ACB98D40A191C1p0", + "0x0.136A814F204AAF478p0", "0x0.139A3F4A9D9222FF2p0", "0x0.13CA058CBAE1DEBC9p0", "0x0.13F9D416E77AEB5F6p0", + "0x0.1429AAEA92DDFB341p0", "0x0.14598A092CCB74FD3p0", "0x0.1489717425437EFE9p0", "0x0.14B9612CEC860A09Ep0", + "0x0.14E95934F312DC8DCp0", "0x0.1519598DA9A99DA67p0", "0x0.154962388149E0304p0", "0x0.15797336EB332DDCAp0", + "0x0.15A98C8A58E512481p0", "0x0.15D9AE343C1F26130p0", "0x0.1609D83606E119FBFp0", "0x0.163A0A912B6AC1FBBp0", + "0x0.166A45471C3C2063Dp0", "0x0.169A88594C1570FE6p0", "0x0.16CAD3C92DF734306p0", "0x0.16FB279835223A1D7p0", + "0x0.172B83C7D517ADCDFp0", "0x0.175BE85981992056Cp0", "0x0.178C554EAEA894030p0", "0x0.17BCCAA8D088877FCp0", + "0x0.17ED48695BBC0109Ep0", "0x0.181DCE91C506999D8p0", "0x0.184E5D23816C88275p0", "0x0.187EF4200632ACB89p0", + "0x0.18AF9388C8DE9BBBFp0", "0x0.18E03B5F3F36A92D4p0", "0x0.1910EBA4DF41F3D2Ap0", "0x0.1941A45B1F487077Ap0", + "0x0.1972658375D2F52ABp0", "0x0.19A32F1F59AB447C4p0", "0x0.19D4013041DC18BF8p0", "0x0.1A04DBB7A5B12F4DCp0", + "0x0.1A35BEB6FCB753CB7p0", "0x0.1A66AA2FBEBC6B6ECp0", "0x0.1A979E2363CF8048Fp0", "0x0.1AC89A936440CC90Dp0", + "0x0.1AF99F8138A1C5EFEp0", "0x0.1B2AACEE59C528D0Dp0", "0x0.1B5BC2DC40BF03B07p0", "0x0.1B8CE14C66E4C2704p0", + "0x0.1BBE084045CD39AB2p0", "0x0.1BEF37B95750B20C0p0", "0x0.1C206FB91588F3A67p0", "0x0.1C51B040FAD151512p0", + "0x0.1C82F95281C6B4026p0", "0x0.1CB44AEF2547A62ECp0", "0x0.1CE5A51860745F298p0", "0x0.1D1707CFAEAECE86Cp0", + "0x0.1D4873168B9AA7806p0", "0x0.1D79E6EE731D6C5BDp0", "0x0.1DAB6358E15E79D2Fp0", "0x0.1DDCE85752C7127E2p0", + "0x0.1E0E75EB44026A409p0", "0x0.1E400C1631FDB1B6Ap0", "0x0.1E71AAD999E821A64p0", "0x0.1EA35236F9330670Ep0", + "0x0.1ED5022FCD91CB882p0", "0x0.1F06BAC594FA06E38p0", "0x0.1F387BF9CDA384793p0", "0x0.1F6A45CDF60851B7Cp0", + "0x0.1F9C18438CE4C902Bp0", "0x0.1FCDF35C11379D307p0", "0x0.1FFFD7190241E50A9p0", "0x0.2031C37BDF8726CFFp0", + "0x0.2063B88628CD63B8Fp0", "0x0.2095B6395E1D237DAp0", "0x0.20C7BC96FFC17FDDEp0", "0x0.20F9CBA08E48302B7p0", + "0x0.212BE3578A8194D65p0", "0x0.215E03BD7580C2FABp0", "0x0.21902CD3D09B8FF15p0", "0x0.21C25E9C1D6A9CE17p0", + "0x0.21F49917DDC962553p0", "0x0.2226DC4893D63BCFAp0", "0x0.2259282FC1F273650p0", "0x0.228B7CCEEAC24D54Fp0", + "0x0.22BDDA27912D13A6Ap0", "0x0.22F0403B385D21C70p0", "0x0.2322AF0B63BFF0291p0", "0x0.2355269997061FE83p0", + "0x0.2387A6E75623866C2p0", "0x0.23BA2FF6254F390FBp0", "0x0.23ECC1C7890398C8Ap0", "0x0.241F5C5D05FE5DD26p0", + "0x0.2451FFB82140A35A0p0", "0x0.2484ABDA600EF32CEp0", "0x0.24B760C547F15168Fp0", "0x0.24EA1E7A5EB3482F4p0", + "0x0.251CE4FB2A63F3583p0", "0x0.254FB44931560C2A2p0", "0x0.25828C65FA1FF511Fp0", "0x0.25B56D530B9BC55D9p0", + "0x0.25E85711ECE754F87p0", "0x0.261B49A42564482A2p0", "0x0.264E450B3CB81B573p0", "0x0.26814948BACC2EC3Ap0", + "0x0.26B4565E27CDD257Ap0", "0x0.26E76C4D0C2E51669p0", "0x0.271A8B16F0A2FE778p0", "0x0.274DB2BD5E253F101p0", + "0x0.2780E341DDF29781Ap0", "0x0.27B41CA5F98CB6B7Ep0", "0x0.27E75EEB3AB9820A2p0", "0x0.281AAA132B83210E1p0", + "0x0.284DFE1F5638096CFp0", "0x0.28815B11456B0ABADp0", "0x0.28B4C0EA83F35A4FAp0", "0x0.28E82FAC9CEC9F225p0", + "0x0.291BA7591BB6FDA67p0", "0x0.294F27F18BF723AB3p0", "0x0.2982B1777996543D0p0", "0x0.29B643EC70C273890p0", + "0x0.29E9DF51FDEE12C26p0", "0x0.2A1D83A9ADD07C0A3p0", "0x0.2A5130F50D65BE58Dp0", "0x0.2A84E735A9EEB96A0p0", + "0x0.2AB8A66D10F129AA3p0", "0x0.2AEC6E9CD037B426Bp0", "0x0.2B203FC675D1F27F9p0", "0x0.2B5419EB90147EDB7p0", + "0x0.2B87FD0DAD98FFDDFp0", "0x0.2BBBE92E5D3E349F5p0", "0x0.2BEFDE4F2E2800A73p0", "0x0.2C23DC71AFBF77E86p0", + "0x0.2C57E39771B2EABFBp0", "0x0.2C8BF3C203F5F1F3Fp0", "0x0.2CC00CF2F6C17AB8Dp0", "0x0.2CF42F2BDA93D2B35p0", + "0x0.2D285A6E4030B4009p0", "0x0.2D5C8EBBB8A1513E7p0", "0x0.2D90CC15D53461967p0", "0x0.2DC5127E277E2CCAFp0", + "0x0.2DF961F641589745Bp0", "0x0.2E2DBA7FB4E32E298p0", "0x0.2E621C1C148333651p0", "0x0.2E9686CCF2E3A9C88p0", + "0x0.2ECAFA93E2F5611CAp0", "0x0.2EFF777277EF023C8p0", "0x0.2F33FD6A454D1B313p0", "0x0.2F688C7CDED22B4F1p0", + "0x0.2F9D24ABD886AF562p0", "0x0.2FD1C5F8C6B92D937p0", "0x0.300670653DFE42058p0", "0x0.303B23F2D330AA821p0" + }; + ap_ufixed<68,0> exp2_x_msb_2_m_1 = exp2_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed<126,-10> f_x_msb_2_lsb = exp2_x_msb_2_m_1 * exp2_x_msb_3_4_lsb_m_1; + ap_ufixed<58, -10> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<68,0> exp2_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_lsb_s + exp2_x_msb_2_m_1 + exp2_x_msb_3_4_lsb_m_1; + + const static ap_ufixed<68,32> exp2_x_msb_1_table[256] = { + "0x1.000000000p0", "0x1.306FE0A32p0", "0x1.6A09E667Fp0", "0x1.AE89F995Bp0", + "0x2.000000000p0", "0x2.60DFC1463p0", "0x2.D413CCCFEp0", "0x3.5D13F32B6p0", + "0x4.000000000p0", "0x4.C1BF828C7p0", "0x5.A827999FDp0", "0x6.BA27E656Bp0", + "0x8.000000000p0", "0x9.837F0518Ep0", "0xB.504F333FAp0", "0xD.744FCCAD7p0", + "0x10.000000000p0", "0x13.06FE0A31Bp0", "0x16.A09E667F4p0", "0x1A.E89F995ADp0", + "0x20.000000000p0", "0x26.0DFC14637p0", "0x2D.413CCCFE7p0", "0x35.D13F32B5Ap0", + "0x40.000000000p0", "0x4C.1BF828C6Ep0", "0x5A.827999FCFp0", "0x6B.A27E656B5p0", + "0x80.000000000p0", "0x98.37F0518DCp0", "0xB5.04F333F9Ep0", "0xD7.44FCCAD6Ap0", + "0x100.000000000p0", "0x130.6FE0A31B7p0", "0x16A.09E667F3Cp0", "0x1AE.89F995AD4p0", + "0x200.000000000p0", "0x260.DFC14636Ep0", "0x2D4.13CCCFE78p0", "0x35D.13F32B5A7p0", + "0x400.000000000p0", "0x4C1.BF828C6DCp0", "0x5A8.27999FCEFp0", "0x6BA.27E656B4Fp0", + "0x800.000000000p0", "0x983.7F0518DB9p0", "0xB50.4F333F9DEp0", "0xD74.4FCCAD69Dp0", + "0x1000.000000000p0", "0x1306.FE0A31B71p0", "0x16A0.9E667F3BDp0", "0x1AE8.9F995AD3Bp0", + "0x2000.000000000p0", "0x260D.FC14636E3p0", "0x2D41.3CCCFE77Ap0", "0x35D1.3F32B5A76p0", + "0x4000.000000000p0", "0x4C1B.F828C6DC5p0", "0x5A82.7999FCEF3p0", "0x6BA2.7E656B4EBp0", + "0x8000.000000000p0", "0x9837.F0518DB8Bp0", "0xB504.F333F9DE6p0", "0xD744.FCCAD69D7p0", + "0x10000.000000000p0", "0x1306F.E0A31B715p0", "0x16A09.E667F3BCDp0", "0x1AE89.F995AD3ADp0", + "0x20000.000000000p0", "0x260DF.C14636E2Ap0", "0x2D413.CCCFE7799p0", "0x35D13.F32B5A75Bp0", + "0x40000.000000000p0", "0x4C1BF.828C6DC55p0", "0x5A827.999FCEF32p0", "0x6BA27.E656B4EB5p0", + "0x80000.000000000p0", "0x9837F.0518DB8A9p0", "0xB504F.333F9DE65p0", "0xD744F.CCAD69D6Bp0", + "0x100000.000000000p0", "0x1306FE.0A31B7153p0", "0x16A09E.667F3BCC9p0", "0x1AE89F.995AD3AD6p0", + "0x200000.000000000p0", "0x260DFC.14636E2A6p0", "0x2D413C.CCFE77992p0", "0x35D13F.32B5A75ACp0", + "0x400000.000000000p0", "0x4C1BF8.28C6DC54Bp0", "0x5A8279.99FCEF324p0", "0x6BA27E.656B4EB58p0", + "0x800000.000000000p0", "0x9837F0.518DB8A97p0", "0xB504F3.33F9DE648p0", "0xD744FC.CAD69D6AFp0", + "0x1000000.000000000p0", "0x1306FE0.A31B7152Ep0", "0x16A09E6.67F3BCC91p0", "0x1AE89F9.95AD3AD5Fp0", + "0x2000000.000000000p0", "0x260DFC1.4636E2A5Cp0", "0x2D413CC.CFE779921p0", "0x35D13F3.2B5A75ABDp0", + "0x4000000.000000000p0", "0x4C1BF82.8C6DC54B8p0", "0x5A82799.9FCEF3242p0", "0x6BA27E6.56B4EB57Ap0", + "0x8000000.000000000p0", "0x9837F05.18DB8A96Fp0", "0xB504F33.3F9DE6484p0", "0xD744FCC.AD69D6AF4p0", + "0x10000000.000000000p0", "0x1306FE0A.31B7152DFp0", "0x16A09E66.7F3BCC909p0", "0x1AE89F99.5AD3AD5E8p0", + "0x20000000.000000000p0", "0x260DFC14.636E2A5BDp0", "0x2D413CCC.FE7799211p0", "0x35D13F32.B5A75ABD1p0", + "0x40000000.000000000p0", "0x4C1BF828.C6DC54B7Ap0", "0x5A827999.FCEF32423p0", "0x6BA27E65.6B4EB57A2p0", + "0x80000000.000000000p0", "0x9837F051.8DB8A96F4p0", "0xB504F333.F9DE64846p0", "0xD744FCCA.D69D6AF44p0", + "0x0.000000010p0", "0x0.000000013p0", "0x0.000000017p0", "0x0.00000001Bp0", + "0x0.000000020p0", "0x0.000000026p0", "0x0.00000002Dp0", "0x0.000000036p0", + "0x0.000000040p0", "0x0.00000004Cp0", "0x0.00000005Bp0", "0x0.00000006Cp0", + "0x0.000000080p0", "0x0.000000098p0", "0x0.0000000B5p0", "0x0.0000000D7p0", + "0x0.000000100p0", "0x0.000000130p0", "0x0.00000016Ap0", "0x0.0000001AFp0", + "0x0.000000200p0", "0x0.000000261p0", "0x0.0000002D4p0", "0x0.00000035Dp0", + "0x0.000000400p0", "0x0.0000004C2p0", "0x0.0000005A8p0", "0x0.0000006BAp0", + "0x0.000000800p0", "0x0.000000983p0", "0x0.000000B50p0", "0x0.000000D74p0", + "0x0.000001000p0", "0x0.000001307p0", "0x0.0000016A1p0", "0x0.000001AE9p0", + "0x0.000002000p0", "0x0.00000260Ep0", "0x0.000002D41p0", "0x0.0000035D1p0", + "0x0.000004000p0", "0x0.000004C1Cp0", "0x0.000005A82p0", "0x0.000006BA2p0", + "0x0.000008000p0", "0x0.000009838p0", "0x0.00000B505p0", "0x0.00000D745p0", + "0x0.000010000p0", "0x0.000013070p0", "0x0.000016A0Ap0", "0x0.00001AE8Ap0", + "0x0.000020000p0", "0x0.0000260E0p0", "0x0.00002D414p0", "0x0.000035D14p0", + "0x0.000040000p0", "0x0.00004C1C0p0", "0x0.00005A828p0", "0x0.00006BA28p0", + "0x0.000080000p0", "0x0.00009837Fp0", "0x0.0000B504Fp0", "0x0.0000D7450p0", + "0x0.000100000p0", "0x0.0001306FEp0", "0x0.00016A09Ep0", "0x0.0001AE8A0p0", + "0x0.000200000p0", "0x0.000260DFCp0", "0x0.0002D413Dp0", "0x0.00035D13Fp0", + "0x0.000400000p0", "0x0.0004C1BF8p0", "0x0.0005A827Ap0", "0x0.0006BA27Ep0", + "0x0.000800000p0", "0x0.0009837F0p0", "0x0.000B504F3p0", "0x0.000D744FDp0", + "0x0.001000000p0", "0x0.001306FE1p0", "0x0.0016A09E6p0", "0x0.001AE89FAp0", + "0x0.002000000p0", "0x0.00260DFC1p0", "0x0.002D413CDp0", "0x0.0035D13F3p0", + "0x0.004000000p0", "0x0.004C1BF83p0", "0x0.005A8279Ap0", "0x0.006BA27E6p0", + "0x0.008000000p0", "0x0.009837F05p0", "0x0.00B504F33p0", "0x0.00D744FCDp0", + "0x0.010000000p0", "0x0.01306FE0Ap0", "0x0.016A09E66p0", "0x0.01AE89F99p0", + "0x0.020000000p0", "0x0.0260DFC14p0", "0x0.02D413CCDp0", "0x0.035D13F33p0", + "0x0.040000000p0", "0x0.04C1BF829p0", "0x0.05A82799Ap0", "0x0.06BA27E65p0", + "0x0.080000000p0", "0x0.09837F052p0", "0x0.0B504F334p0", "0x0.0D744FCCBp0", + "0x0.100000000p0", "0x0.1306FE0A3p0", "0x0.16A09E668p0", "0x0.1AE89F996p0", + "0x0.200000000p0", "0x0.260DFC146p0", "0x0.2D413CCD0p0", "0x0.35D13F32Bp0", + "0x0.400000000p0", "0x0.4C1BF828Cp0", "0x0.5A82799A0p0", "0x0.6BA27E657p0", + "0x0.800000000p0", "0x0.9837F0519p0", "0x0.B504F3340p0", "0x0.D744FCCADp0" + }; + ap_ufixed<68,32> exp2_x_msb_1 = exp2_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<136,32> y_lo = exp2_x_msb_1 * exp2_x_msb_2_3_4_lsb_m_1; + ap_ufixed<68,32> y_lo_s = y_lo; + ap_ufixed<68,32> y_l = y_lo_s + exp2_x_msb_1; + y = y_l; + } + + if(I<33) { + bool overf_2 = 0; + #pragma unroll + for(int j=63; j>=I+31; j--) { + if(y[j]) { + overf_2 = 1; + } + } + if(overf_2) { + #pragma unroll + for(int j=63; j>=I+31; j--) { + y[j] = 0; + } + #pragma unroll + for(int j=I+30; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + } + return r; +} + +template +ap_ufixed exp2(ap_ufixed x) { + ap_fixed xf = x; + return exp2(xf); +} + +template +ap_int exp2(ap_int x) { + ap_fixed xf = x; + return exp2(xf); +} + +template +ap_uint exp2(ap_uint x) { + ap_fixed xf = x; + return exp2(xf); +} + + +template +ap_fixed exp10(ap_fixed x) { + + int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + int I_s_; + int M_ = (I_-1>F_) ? (I_-1) : F_; + if (M_==1) I_s_ = 0; + else if (M_<4) I_s_ = 1; + else if (M_<7) I_s_ = 2; + else if (M_<14) I_s_ = 3; + else if (M_<27) I_s_ = 4; + else I_s_ = 5; + + ap_fixed r; + if(I_s_==0) { //I_s_ = 0, M_ = 1, I_ <= 2, F_ <= 1, W <= 3 + ap_fixed<3,2> x_l = x; + ap_ufixed<2,1> y = 0; + if(x_l[2]) { + if(x_l[1]&x_l[0]) { + y = ap_ufixed<2,1>("0x0.8p0"); + } + } else { + if(x_l[1]|x_l[0]) { + y = ap_ufixed<2,1>("0x1.8p0"); + } else { + y = ap_ufixed<2,1>("0x1.0p0"); + } + } + if(I_<2) { + bool overf = 0; + if(y[1]) { + y[1] = 0; + y[0] = 1; + } + } + r = y; + } else if (I_s_==1) {// I_s_ = 1, M_ = 2..3, I_ <= 4, F_ <= 3, W <= 7 + ap_fixed<7,4> x_l = x; + ap_ufixed<6,3> y = 0; + if((x_l[6]!=x_l[5])||(x_l[5]!=x_l[4])||(x_l[4]!=x_l[3])) { + if(!x_l[6]) { + y = ap_ufixed<6,3>("0x7.Ep0"); + } + } else { + ap_uint<4> x_ind; + x_ind[3] = x_l[6]; + x_ind(2,0) = x_l(2,0); + const static ap_ufixed<6,3> exp_x_ind_table[16] = { + "0x1.000p0", "0x1.600p0", "0x1.C00p0", "0x2.600p0", "0x3.200p0", "0x4.400p0", "0x5.A00p0", "0x7.800p0", + "0x0.200p0", "0x0.200p0", "0x0.200p0", "0x0.400p0", "0x0.600p0", "0x0.600p0", "0x0.800p0", "0x0.C00p0" + }; + y = exp_x_ind_table[x_ind]; + } + if(I_<4){ + bool overf = 0; + #pragma unroll + for(int j = 5; j>=I_+2; j--) { + if(y[j]) { + overf = 1; + } + } + if(overf) { + #pragma unroll + for(int j = 5; j>=I_+2; j--) { + y[j] = 0; + } + for(int j = I_+1; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==2) {// I_s_ = 2, M_ = 4..6, I_ <= 7, F_ <= 6, W <= 13 + ap_fixed<13,7> x_l = x; + ap_ufixed<12,6> y = 0; + ap_fixed<2,2> x_l_int; + x_l_int(1,0) = x_l(7,6); + ap_ufixed<6,0> x_l_fract; + x_l_fract(5,0) = x_l(5,0); + bool overf = 0; + #pragma unroll + for(int j = 11; j >=7; j--) { + if(x_l[12]!=x_l[j]) { + overf = 1; + } + } + if(overf||((x_l_int==1)&&(x_l_fract>ap_ufixed<5,0>("0x.D0p0")))) { + if(!x_l[12]) { + y = ap_ufixed<12,6>("0x3F.FCp0"); + } + } else { + ap_uint<4> x_msb_ind; + x_msb_ind(3,0) = x_l(7,4); + ap_uint<4> x_lsb_ind; + x_lsb_ind(3,0) = x_l(3,0); + const static ap_ufixed<14,6> exp_x_msb_table[16] = { + "0x1.00p0", "0x1.C7p0", "0x3.2Ap0", "0x5.A0p0", "0xA.00p0", "0x11.C8p0", "0x1F.9Fp0", "0x38.3Cp0", + "0x0.03p0", "0x0.05p0", "0x0.08p0", "0x0.0Ep0", "0x0.1Ap0", "0x0.2Ep0", "0x0.51p0", "0x0.90p0" + }; + const static ap_ufixed<14,0> exp_x_lsb_m_1_table[16] = { + "0x0.0p0", "0x0.0960p0", "0x0.1318p0", "0x0.1D2Cp0", "0x0.27A0p0", "0x0.3274p0", "0x0.3DB0p0", "0x0.4950p0", + "0x0.5560p0", "0x0.61E4p0", "0x0.6ED8p0", "0x0.7C4Cp0", "0x0.8A38p0", "0x0.98A8p0", "0x0.A7A4p0", "0x0.B728p0" + }; + ap_ufixed<14,6> exp_x_msb = exp_x_msb_table[x_msb_ind]; + ap_ufixed<14,0> exp_x_lsb_m_1 = exp_x_lsb_m_1_table[x_lsb_ind]; + ap_ufixed<28,6> y_lo = exp_x_msb * exp_x_lsb_m_1; + ap_ufixed<14,6> y_lo_s = y_lo; + ap_ufixed<14,6> y_l = y_lo_s + exp_x_msb; + y = y_l; + } + if(I_<7) { + bool overf = 0; + #pragma unroll + for(int j = 11; j >= I_+5; j--) { + if(y[j]) { + overf = 1; + } + } + if(overf) { + #pragma unroll + for(int j = 11; j>= I_+5; j--) { + y[j] = 0; + } + #pragma unroll + for(int j = I_+4; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==3) {// I_s_ = 3, M_ = 7..13, I_ <= 14, F_ <= 13, W <= 27 + ap_fixed<27,14> x_l = x; + ap_ufixed<26,13> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(15,13); + ap_ufixed<13,0> x_l_fract; + x_l_fract(12,0) = x_l(12,0); + bool overf = 0; + #pragma unroll + for(int j = 25; j>=15; j--) { + if(x_l[26]!=x_l[j]) { + overf = 1; + } + } + if(overf||((x_l_int==3)&&(x_l_fract>ap_ufixed<12,0>("0x3.E9D0p0")))) { + if(!x_l[26]) { + y = ap_ufixed<26,13>("0x1FFF.FFF8p0"); + } + } else { + ap_uint<6> x_msb_ind_1; + x_msb_ind_1[5] = x_l[26]; + x_msb_ind_1(4,0) = x_l(14,10); + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(9,5); + ap_uint<5> x_lsb_ind; + x_lsb_ind(4,0) = x_l(4,0); + const static ap_ufixed<24,-6> exp_lsb_ind_m_1_table[32] = { + "0x0p0", "0x0.00126C5Cp0", "0x0.0024DA0Cp0", "0x0.0037490Cp0", "0x0.0049B964p0", "0x0.005C2B0Cp0", "0x0.006E9E08p0", "0x0.0081125Cp0", + "0x0.00938800p0", "0x0.00A5FEF8p0", "0x0.00B87748p0", "0x0.00CAF0E8p0", "0x0.00DD6BE0p0", "0x0.00EFE82Cp0", "0x0.010265C8p0", "0x0.0114E4BCp0", + "0x0.01276508p0", "0x0.0139E6A4p0", "0x0.014C6998p0", "0x0.015EEDDCp0", "0x0.0171737Cp0", "0x0.0183FA6Cp0", "0x0.019682B4p0", "0x0.01A90C50p0", + "0x0.01BB9744p0", "0x0.01CE238Cp0", "0x0.01E0B128p0", "0x0.01F3401Cp0", "0x0.0205D064p0", "0x0.02186204p0", "0x0.022AF4F8p0", "0x0.023D8944p0" + }; + ap_ufixed<24,-6> exp_lsb_ind_m_1 = exp_lsb_ind_m_1_table[x_lsb_ind]; + const static ap_ufixed<29,-1> exp_msb_ind_2_m_1_table[32] = { + "0x0p0", "0x0.02501EE8p0", "0x0.04A5975Cp0", "0x0.070075C0p0", "0x0.0960C68Cp0", "0x0.0BC69660p0", "0x0.0E31F1F0p0", "0x0.10A2E60Cp0", + "0x0.13197FA8p0", "0x0.1595CBD4p0", "0x0.1817D7BCp0", "0x0.1A9FB0ACp0", "0x0.1D2D6410p0", "0x0.1FC0FF74p0", "0x0.225A9080p0", "0x0.24FA24F8p0", + "0x0.279FCACCp0", "0x0.2A4B8FFCp0", "0x0.2CFD82BCp0", "0x0.2FB5B150p0", "0x0.32742A20p0", "0x0.3538FBC0p0", "0x0.380434D8p0", "0x0.3AD5E43Cp0", + "0x0.3DAE18DCp0", "0x0.408CE1CCp0", "0x0.43724E48p0", "0x0.465E6DA8p0", "0x0.49514F68p0", "0x0.4C4B0330p0", "0x0.4F4B98C4p0", "0x0.5253200Cp0" + }; + ap_ufixed<29,-1> exp_msb_ind_2_m1 = exp_msb_ind_2_m_1_table[x_msb_ind_2]; + ap_ufixed<53,-7> f_x_msb_2_lsb = exp_lsb_ind_m_1 * exp_msb_ind_2_m1; + ap_ufixed<27,-1> exp_msb_2_lsb_m_1 = f_x_msb_2_lsb + exp_msb_ind_2_m1 + exp_lsb_ind_m_1; + const static ap_ufixed<28,13> exp_msb_ind_1_table[64] = { + "0x1.0000p0", "0x1.5562p0", "0x1.C73Ep0", "0x2.5F12p0", "0x3.298Cp0", "0x4.378Cp0", "0x5.9F98p0", "0x7.7FBAp0", + "0xA.0000p0", "0xD.55D0p0", "0x11.C866p0", "0x17.B6B8p0", "0x1F.9F6Ep0", "0x2A.2B6Ep0", "0x38.3BF0p0", "0x4A.FD4Ap0", + "0x64.0000p0", "0x85.5A26p0", "0xB1.D3F4p0", "0xED.232Ap0", "0x13C.3A4Ep0", "0x1A5.B24Ep0", "0x232.5762p0", "0x2ED.E4EAp0", + "0x3E8.0000p0", "0x535.857Cp0", "0x6F2.4788p0", "0x943.5FACp0", "0xC5A.4714p0", "0x1078.F70Cp0", "0x15F7.69CAp0", "0x1D4A.F12Ep0", + "0x0.0006p0", "0x0.0008p0", "0x0.000Cp0", "0x0.0010p0", "0x0.0014p0", "0x0.001Cp0", "0x0.0024p0", "0x0.0032p0", + "0x0.0042p0", "0x0.0058p0", "0x0.0074p0", "0x0.009Cp0", "0x0.00D0p0", "0x0.0114p0", "0x0.0170p0", "0x0.01ECp0", + "0x0.0290p0", "0x0.036Ap0", "0x0.048Ep0", "0x0.0612p0", "0x0.0818p0", "0x0.0ACCp0", "0x0.0E66p0", "0x0.1332p0", + "0x0.199Ap0", "0x0.2224p0", "0x0.2D86p0", "0x0.3CB6p0", "0x0.50F4p0", "0x0.6BF4p0", "0x0.8FF6p0", "0x0.BFFAp0" + }; + ap_ufixed<28,13> exp_msb_ind_1 = exp_msb_ind_1_table[x_msb_ind_1]; + ap_ufixed<28,13> f_x_msb_1_msb_2_lsb_l = exp_msb_ind_1 * exp_msb_2_lsb_m_1; + y = f_x_msb_1_msb_2_lsb_l + exp_msb_ind_1; + } + if(I_<14) { + bool overf = 0; + #pragma unroll + for(int j = 25; j>= I_+12; j--) { + if(y[j]) { + overf = 1; + } + } + if(overf) { + #pragma unroll + for(int j = 25; j>=I_+12; j--) { + y[j] = 0; + } + #pragma unroll + for(int j = I_+11; j>=0; j--) { + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==4) {// I_s_ = 4, M_ = 14..26, I_ <= 27, F_ <= 26, W <= 53 + ap_fixed<53,27> x_l = x; + ap_ufixed<52,26> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(29,26); + ap_ufixed<26,0> x_l_fract; + x_l_fract(25,0) = x_l(25,0); + bool overf = 0; + #pragma unroll + for(int j = 51; j >= 29; j--) { + if(x_l[52]!=x_l[j]) { + overf = 1; + } + } + if(overf||((x_l_int==7)&&(x_l_fract>ap_ufixed<26,0>("0x0.D3A7D8C")))) { + if(!x_l[52]) { + y = ap_ufixed<52,26>("0x3FFFFFF.FFFFFFCp0"); + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[52]; + x_msb_ind_1(6,0) = x_l(28,22); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(21,14); + ap_uint<7> x_msb_ind_3; + x_msb_ind_3(6,0) = x_l(13,7); + ap_uint<7> x_lsb_ind; + x_lsb_ind(6,0) = x_l(6,0); + const static ap_ufixed<41,-17> exp_lsb_ind_m_1_table[128] = { + "0x0.0p0", "0x0.000000935D8E080p0", "0x0.00000126BB1C650p0", "0x0.000001BA18AB16Cp0", "0x0.0000024D763A1D4p0", "0x0.000002E0D3C978Cp0", "0x0.000003743159290p0", "0x0.000004078EE92E0p0", + "0x0.0000049AEC79880p0", "0x0.0000052E4A0A368p0", "0x0.000005C1A79B3A4p0", "0x0.00000655052C928p0", "0x0.000006E862BE3FCp0", "0x0.0000077BC05041Cp0", "0x0.0000080F1DE298Cp0", "0x0.000008A27B75448p0", + "0x0.00000935D908450p0", "0x0.000009C9369B9A4p0", "0x0.00000A5C942F448p0", "0x0.00000AEFF1C3438p0", "0x0.00000B834F57978p0", "0x0.00000C16ACEC400p0", "0x0.00000CAA0A813D8p0", "0x0.00000D3D6816900p0", + "0x0.00000DD0C5AC370p0", "0x0.00000E642342334p0", "0x0.00000EF780D8840p0", "0x0.00000F8ADE6F29Cp0", "0x0.0000101E3C06244p0", "0x0.000010B1999D738p0", "0x0.00001144F73517Cp0", "0x0.000011D854CD10Cp0", + "0x0.0000126BB2655E8p0", "0x0.000012FF0FFE010p0", "0x0.000013926D96F88p0", "0x0.00001425CB30450p0", "0x0.000014B928C9E60p0", "0x0.0000154C8663DC0p0", "0x0.000015DFE3FE26Cp0", "0x0.000016734198C68p0", + "0x0.000017069F33BB0p0", "0x0.00001799FCCF044p0", "0x0.0000182D5A6AA24p0", "0x0.000018C0B806954p0", "0x0.0000195415A2DD0p0", "0x0.000019E7733F79Cp0", "0x0.00001A7AD0DC6B4p0", "0x0.00001B0E2E79B18p0", + "0x0.00001BA18C174C8p0", "0x0.00001C34E9B53C8p0", "0x0.00001CC84753814p0", "0x0.00001D5BA4F21B0p0", "0x0.00001DEF0291094p0", "0x0.00001E8260304C8p0", "0x0.00001F15BDCFE4Cp0", "0x0.00001FA91B6FD18p0", + "0x0.0000203C7910134p0", "0x0.000020CFD6B0AA0p0", "0x0.000021633451954p0", "0x0.000021F691F2D58p0", "0x0.00002289EF946ACp0", "0x0.0000231D4D36548p0", "0x0.000023B0AAD8934p0", "0x0.00002444087B270p0", + "0x0.000024D7661E0F4p0", "0x0.0000256AC3C14C8p0", "0x0.000025FE2164DE8p0", "0x0.000026917F08C58p0", "0x0.00002724DCAD014p0", "0x0.000027B83A5191Cp0", "0x0.0000284B97F6774p0", "0x0.000028DEF59BB14p0", + "0x0.000029725341408p0", "0x0.00002A05B0E7244p0", "0x0.00002A990E8D5D0p0", "0x0.00002B2C6C33EA8p0", "0x0.00002BBFC9DACD0p0", "0x0.00002C532782040p0", "0x0.00002CE68529900p0", "0x0.00002D79E2D1710p0", + "0x0.00002E0D4079A6Cp0", "0x0.00002EA09E22314p0", "0x0.00002F33FBCB108p0", "0x0.00002FC7597444Cp0", "0x0.0000305AB71DCDCp0", "0x0.000030EE14C7AB8p0", "0x0.000031817271DE4p0", "0x0.00003214D01C65Cp0", + "0x0.000032A82DC7420p0", "0x0.0000333B8B72734p0", "0x0.000033CEE91DF94p0", "0x0.0000346246C9D40p0", "0x0.000034F5A47603Cp0", "0x0.000035890222884p0", "0x0.0000361C5FCF618p0", "0x0.000036AFBD7C8FCp0", + "0x0.000037431B2A12Cp0", "0x0.000037D678D7EA8p0", "0x0.00003869D686170p0", "0x0.000038FD3434988p0", "0x0.0000399091E36ECp0", "0x0.00003A23EF929A0p0", "0x0.00003AB74D421A0p0", "0x0.00003B4AAAF1EECp0", + "0x0.00003BDE08A2188p0", "0x0.00003C71665296Cp0", "0x0.00003D04C4036A0p0", "0x0.00003D9821B4924p0", "0x0.00003E2B7F660F4p0", "0x0.00003EBEDD17E10p0", "0x0.00003F523ACA078p0", "0x0.00003FE5987C830p0", + "0x0.00004078F62F534p0", "0x0.0000410C53E2788p0", "0x0.0000419FB195F24p0", "0x0.000042330F49C10p0", "0x0.000042C66CFDE4Cp0", "0x0.00004359CAB25D0p0", "0x0.000043ED28672A4p0", "0x0.00004480861C4C8p0", + "0x0.00004513E3D1C34p0", "0x0.000045A741878F0p0", "0x0.0000463A9F3DAFCp0", "0x0.000046CDFCF4250p0", "0x0.000047615AAAEF4p0", "0x0.000047F4B8620E8p0", "0x0.000048881619824p0", "0x0.0000491B73D14B0p0" + }; + ap_ufixed<41,-17> exp_lsb_ind_m_1 = exp_lsb_ind_m_1_table[x_lsb_ind]; + const static ap_ufixed<48,-10> exp_msb_ind_3_m_1_table[128] = { + "0x0.0p0", "0x0.000049AED18968Cp0", "0x0.0000935DB847FC4p0", "0x0.0000DD0CB43BC10p0", "0x0.000126BBC564BCCp0", "0x0.0001706AEBC2F58p0", "0x0.0001BA1A275671Cp0", "0x0.000203C9781F374p0", + "0x0.00024D78DE1D4C8p0", "0x0.000297285950B74p0", "0x0.0002E0D7E9B97D8p0", "0x0.00032A878F57A5Cp0", "0x0.000374374A2B360p0", "0x0.0003BDE71A34344p0", "0x0.00040796FF72A68p0", "0x0.00045146F9E6930p0", + "0x0.00049AF70990000p0", "0x0.0004E4A72E6EF34p0", "0x0.00052E576883734p0", "0x0.00057807B7CD85Cp0", "0x0.0005C1B81C4D314p0", "0x0.00060B6896027B4p0", "0x0.0006551924ED6A8p0", "0x0.00069EC9C90E04Cp0", + "0x0.0006E87A8264500p0", "0x0.0007322B50F052Cp0", "0x0.00077BDC34B2130p0", "0x0.0007C58D2DA9968p0", "0x0.00080F3E3BD6E3Cp0", "0x0.000858EF5F3A008p0", "0x0.0008A2A097D2F34p0", "0x0.0008EC51E5A1C1Cp0", + "0x0.0009360348A6724p0", "0x0.00097FB4C0E10B0p0", "0x0.0009C9664E51920p0", "0x0.000A1317F0F80D4p0", "0x0.000A5CC9A8D4830p0", "0x0.000AA67B75E6F94p0", "0x0.000AF02D582F764p0", "0x0.000B39DF4FADFFCp0", + "0x0.000B83915C629C4p0", "0x0.000BCD437E4D51Cp0", "0x0.000C16F5B56E268p0", "0x0.000C60A801C5200p0", "0x0.000CAA5A6352450p0", "0x0.000CF40CDA159B8p0", "0x0.000D3DBF660F294p0", "0x0.000D8772073EF4Cp0", + "0x0.000DD124BDA5040p0", "0x0.000E1AD789415CCp0", "0x0.000E648A6A1405Cp0", "0x0.000EAE3D601D048p0", "0x0.000EF7F06B5C5F8p0", "0x0.000F41A38BD21CCp0", "0x0.000F8B56C17E424p0", "0x0.000FD50A0C60D64p0", + "0x0.00101EBD6C79DECp0", "0x0.00106870E1C9620p0", "0x0.0010B2246C4F660p0", "0x0.0010FBD80C0BF0Cp0", "0x0.0011458BC0FF088p0", "0x0.00118F3F8B28B34p0", "0x0.0011D8F36A88F74p0", "0x0.001222A75F1FDA8p0", + "0x0.00126C5B68ED630p0", "0x0.0012B60F87F1974p0", "0x0.0012FFC3BC2C7D0p0", "0x0.00134978059E1A8p0", "0x0.0013932C644675Cp0", "0x0.0013DCE0D82594Cp0", "0x0.00142695613B7E0p0", "0x0.00147049FF88374p0", + "0x0.0014B9FEB30BC70p0", "0x0.001503B37BC632Cp0", "0x0.00154D6859B7810p0", "0x0.0015971D4CDFB80p0", "0x0.0015E0D2553EDD8p0", "0x0.00162A8772D4F7Cp0", "0x0.0016743CA5A20D0p0", "0x0.0016BDF1EDA6230p0", + "0x0.001707A74AE1404p0", "0x0.0017515CBD536ACp0", "0x0.00179B1244FCA88p0", "0x0.0017E4C7E1DCFF8p0", "0x0.00182E7D93F4760p0", "0x0.001878335B43124p0", "0x0.0018C1E937C8DA4p0", "0x0.00190B9F2985D40p0", + "0x0.00195555307A05Cp0", "0x0.00199F0B4CA5758p0", "0x0.0019E8C17E08294p0", "0x0.001A3277C4A2278p0", "0x0.001A7C2E2073760p0", "0x0.001AC5E4917C1ACp0", "0x0.001B0F9B17BC1C4p0", "0x0.001B5951B333808p0", + "0x0.001BA30863E24D8p0", "0x0.001BECBF29C8894p0", "0x0.001C367604E63A4p0", "0x0.001C802CF53B664p0", "0x0.001CC9E3FAC8134p0", "0x0.001D139B158C47Cp0", "0x0.001D5D52458809Cp0", "0x0.001DA7098ABB5F4p0", + "0x0.001DF0C0E5264E4p0", "0x0.001E3A7854C8DD0p0", "0x0.001E842FD9A311Cp0", "0x0.001ECDE773B4F24p0", "0x0.001F179F22FE850p0", "0x0.001F6156E77FCFCp0", "0x0.001FAB0EC138D90p0", "0x0.001FF4C6B029A68p0", + "0x0.00203E7EB4523E8p0", "0x0.00208836CDB2A70p0", "0x0.0020D1EEFC4AE68p0", "0x0.00211BA7401B028p0", "0x0.0021655F9923018p0", "0x0.0021AF180762E98p0", "0x0.0021F8D08ADAC0Cp0", "0x0.00224289238A8D4p0", + "0x0.00228C41D172550p0", "0x0.0022D5FA94921E4p0", "0x0.00231FB36CE9EF0p0", "0x0.0023696C5A79CD8p0", "0x0.0023B3255D41BFCp0", "0x0.0023FCDE7541CC0p0", "0x0.00244697A279F80p0", "0x0.00249050E4EA4A4p0" + }; + ap_ufixed<48,-10> exp_msb_ind_3_m_1 = exp_msb_ind_3_m_1_table[x_msb_ind_3]; + ap_ufixed<89,-27> f_x_msb_ind_3_lsb = exp_lsb_ind_m_1 * exp_msb_ind_3_m_1; + ap_ufixed<46,-10> exp_msb_ind_3_lsb_ind_m_1 = f_x_msb_ind_3_lsb + exp_lsb_ind_m_1 + exp_msb_ind_3_m_1; + const static ap_ufixed<54,-2> exp_msb_ind_2_m_1_table[256] = { + "0x0.0p0", "0x0.0024DA0A3C92C9p0", "0x0.0049B96285BC0Ap0", "0x0.006E9E099EFA37p0", "0x0.009388004BE7E5p0", "0x0.00B87747503BD4p0", "0x0.00DD6BDF6FC8EEp0", "0x0.010265C96E7E4Fp0", + "0x0.01276506106748p0", "0x0.014C699619AB60p0", "0x0.0171737A4E8E5Ep0", "0x0.019682B3737048p0", "0x0.01BB97424CCD67p0", "0x0.01E0B1279F3E51p0", "0x0.0205D0642F77E5p0", "0x0.022AF4F8C24B54p0", + "0x0.02501EE61CA626p0", "0x0.02754E2D03923Bp0", "0x0.029A82CE3C35CEp0", "0x0.02BFBCCA8BD37Fp0", "0x0.02E4FC22B7CA50p0", "0x0.030A40D78595AFp0", "0x0.032F8AE9BACD76p0", "0x0.0354DA5A1D25F2p0", + "0x0.037A2F29726FE5p0", "0x0.039F895880988Ap0", "0x0.03C4E8E80DA99Bp0", "0x0.03EA4DD8DFC955p0", "0x0.040FB82BBD3A78p0", "0x0.043527E16C5C51p0", "0x0.045A9CFAB3AABBp0", "0x0.0480177859BE22p0", + "0x0.04A5975B254B8Bp0", "0x0.04CB1CA3DD2493p0", "0x0.04F0A753483778p0", "0x0.0516376A2D8F1Ap0", "0x0.053BCCE95452FFp0", "0x0.056167D183C75Bp0", "0x0.05870823834D0Ep0", "0x0.05ACADE01A61AEp0", + "0x0.05D25908109F88p0", "0x0.05F8099C2DBDA3p0", "0x0.061DBF9D398FC8p0", "0x0.06437B0BFC0683p0", "0x0.06693BE93D2F28p0", "0x0.068F0235C533D7p0", "0x0.06B4CDF25C5B83p0", "0x0.06DA9F1FCB09EFp0", + "0x0.070075BED9BFBBp0", "0x0.072651D0511A61p0", "0x0.074C3354F9D43Dp0", "0x0.07721A4D9CC491p0", "0x0.079806BB02DF87p0", "0x0.07BDF89DF53637p0", "0x0.07E3EFF73CF6ACp0", "0x0.0809ECC7A36BE3p0", + "0x0.082FEF0FF1FDD7p0", "0x0.0855F6D0F23180p0", "0x0.087C040B6DA8D8p0", "0x0.08A216C02E22DFp0", "0x0.08C82EEFFD7BA0p0", "0x0.08EE4C9BA5AC35p0", "0x0.09146FC3F0CACCp0", "0x0.093A9869A90AA9p0", + "0x0.0960C68D98BC2Cp0", "0x0.0986FA308A4CD4p0", "0x0.09AD3353484744p0", "0x0.09D371F69D5348p0", "0x0.09F9B61B5435D7p0", "0x0.0A1FFFC237D119p0", "0x0.0A464EEC13246Bp0", "0x0.0A6CA399B14C61p0", + "0x0.0A92FDCBDD82CEp0", "0x0.0AB95D83631EC5p0", "0x0.0ADFC2C10D94A0p0", "0x0.0B062D85A87601p0", "0x0.0B2C9DD1FF71D8p0", "0x0.0B5313A6DE5467p0", "0x0.0B798F05110749p0", "0x0.0BA00FED63916Fp0", + "0x0.0BC69660A2172Dp0", "0x0.0BED225F98DA36p0", "0x0.0C13B3EB1439A8p0", "0x0.0C3A4B03E0B20Ap0", "0x0.0C60E7AACADD54p0", "0x0.0C8789E09F72F1p0", "0x0.0CAE31A62B47C4p0", "0x0.0CD4DEFC3B4E2Dp0", + "0x0.0CFB91E39C960Dp0", "0x0.0D224A5D1C4CC9p0", "0x0.0D49086987BD4Fp0", "0x0.0D6FCC09AC501Cp0", "0x0.0D96953E578B3Ep0", "0x0.0DBD6408571257p0", "0x0.0DE4386878A6A5p0", "0x0.0E0B125F8A2704p0", + "0x0.0E31F1EE598FF3p0", "0x0.0E58D715B4FB98p0", "0x0.0E7FC1D66AA1C4p0", "0x0.0EA6B23148D7F6p0", "0x0.0ECDA8271E1164p0", "0x0.0EF4A3B8B8DEF8p0", "0x0.0F1BA4E6E7EF5Dp0", "0x0.0F42ABB27A0EFAp0", + "0x0.0F69B81C3E27FEp0", "0x0.0F90CA25034260p0", "0x0.0FB7E1CD9883E5p0", "0x0.0FDEFF16CD3022p0", "0x0.1006220170A885p0", "0x0.102D4A8E526C53p0", "0x0.105478BE4218B3p0", "0x0.107BAC920F68ACp0", + "0x0.10A2E60A8A352Ep0", "0x0.10CA2528827515p0", "0x0.10F169ECC83D2Ap0", "0x0.1118B4582BC02Dp0", "0x0.1140046B7D4ED5p0", "0x0.11675A278D57D7p0", "0x0.118EB58D2C67E8p0", "0x0.11B6169D2B29C2p0", + "0x0.11DD7D585A662Bp0", "0x0.1204E9BF8B03F4p0", "0x0.122C5BD38E0803p0", "0x0.1253D395349553p0", "0x0.127B51054FECFBp0", "0x0.12A2D424B16E31p0", "0x0.12CA5CF42A964Fp0", "0x0.12F1EB748D00D7p0", + "0x0.13197FA6AA6777p0", "0x0.1341198B54A20Dp0", "0x0.1368B9235DA6AEp0", "0x0.13905E6F9789A8p0", "0x0.13B80970D47D86p0", "0x0.13DFBA27E6D314p0", "0x0.14077095A0F967p0", "0x0.142F2CBAD57DDEp0", + "0x0.1456EE98570C27p0", "0x0.147EB62EF86E43p0", "0x0.14A6837F8C8C8Cp0", "0x0.14CE568AE66DB7p0", "0x0.14F62F51D936DBp0", "0x0.151E0DD5382B74p0", "0x0.1545F215D6AD66p0", "0x0.156DDC14883D04p0", + "0x0.1595CBD2207913p0", "0x0.15BDC14F731ECFp0", "0x0.15E5BC8D5409EEp0", "0x0.160DBD8C9734A6p0", "0x0.1635C44E10B7B0p0", "0x0.165DD0D294CA4Ep0", "0x0.1685E31AF7C24Ep0", "0x0.16ADFB280E140Fp0", + "0x0.16D618FAAC5286p0", "0x0.16FE3C93A72F41p0", "0x0.172665F3D37A6Cp0", "0x0.174E951C0622D6p0", "0x0.1776CA0D1435F4p0", "0x0.179F04C7D2DFE7p0", "0x0.17C7454D176B81p0", "0x0.17EF8B9DB74247p0", + "0x0.1817D7BA87EC75p0", "0x0.184029A45F1107p0", "0x0.1868815C1275B9p0", "0x0.1890DEE277FF0Dp0", "0x0.18B9423865B04Fp0", "0x0.18E1AB5EB1AB9Ap0", "0x0.190A1A563231DCp0", "0x0.19328F1FBDA2DCp0", + "0x0.195B09BC2A7D3Ap0", "0x0.19838A2C4F5E7Ap0", "0x0.19AC1071030303p0", "0x0.19D49C8B1C4625p0", "0x0.19FD2E7B722220p0", "0x0.1A25C642DBB023p0", "0x0.1A4E63E2302857p0", "0x0.1A77075A46E1DEp0", + "0x0.1A9FB0ABF752DBp0", "0x0.1AC85FD8191074p0", "0x0.1AF114DF83CED8p0", "0x0.1B19CFC30F6145p0", "0x0.1B42908393BA07p0", "0x0.1B6B5721E8EA82p0", "0x0.1B94239EE72334p0", "0x0.1BBCF5FB66B3BCp0", + "0x0.1BE5CE38400AD8p0", "0x0.1C0EAC564BB672p0", "0x0.1C37905662639Fp0", "0x0.1C607A395CDEA5p0", "0x0.1C896A001412FEp0", "0x0.1CB25FAB610B61p0", "0x0.1CDB5B3C1CF1BFp0", "0x0.1D045CB3210F50p0", + "0x0.1D2D641146CC91p0", "0x0.1D56715767B14Cp0", "0x0.1D7F84865D649Ap0", "0x0.1DA89D9F01ACEBp0", "0x0.1DD1BCA22E7006p0", "0x0.1DFAE190BDB311p0", "0x0.1E240C6B899A96p0", "0x0.1E4D3D336C6A83p0", + "0x0.1E7673E9408633p0", "0x0.1E9FB08DE07072p0", "0x0.1EC8F32226CB7Ep0", "0x0.1EF23BA6EE590Fp0", "0x0.1F1B8A1D11FA5Cp0", "0x0.1F44DE856CB01Dp0", "0x0.1F6E38E0D99A90p0", "0x0.1F97993033F980p0", + "0x0.1FC0FF74572C45p0", "0x0.1FEA6BAE1EB1CEp0", "0x0.2013DDDE6628A0p0", "0x0.203D5606094EE1p0", "0x0.2066D425E40256p0", "0x0.2090583ED2406Ap0", "0x0.20B9E251B02636p0", "0x0.20E3725F59F080p0", + "0x0.210D0868ABFBC3p0", "0x0.2136A46E82C433p0", "0x0.21604671BAE5C1p0", "0x0.2189EE73311C20p0", "0x0.21B39C73C242C8p0", "0x0.21DD50744B54FDp0", "0x0.22070A75A96DD4p0", "0x0.2230CA78B9C835p0", + "0x0.225A907E59BEDFp0", "0x0.22845C8766CC70p0", "0x0.22AE2E94BE8B69p0", "0x0.22D806A73EB62Fp0", "0x0.2301E4BFC52713p0", "0x0.232BC8DF2FD857p0", "0x0.2355B3065CE42Fp0", "0x0.237FA3362A84CAp0", + "0x0.23A9996F771453p0", "0x0.23D395B3210CF7p0", "0x0.23FD98020708EAp0", "0x0.2427A05D07C26Dp0", "0x0.2451AEC50213CEp0", "0x0.247BC33AD4F771p0", "0x0.24A5DDBF5F87D3p0", "0x0.24CFFE5380FF8Fp0", + "0x0.24FA24F818B962p0", "0x0.252451AE063030p0", "0x0.254E847628FF09p0", "0x0.2578BD5160E12Cp0", "0x0.25A2FC408DB20Fp0", "0x0.25CD41448F6D5Fp0", "0x0.25F78C5E462F0Ap0", "0x0.2621DD8E92333Fp0", + "0x0.264C34D653D674p0", "0x0.267692366B956Dp0", "0x0.26A0F5AFBA0D3Cp0", "0x0.26CB5F431FFB4Cp0", "0x0.26F5CEF17E3D5Fp0", "0x0.272044BBB5D196p0", "0x0.274AC0A2A7D678p0", "0x0.277542A7358AF1p0" + }; + ap_ufixed<54,-2> exp_msb_ind_2_m_1 = exp_msb_ind_2_m_1_table[x_msb_ind_2]; + ap_ufixed<100,-12> f_x_msb_ind_2_msb_ind3_lsb = exp_msb_ind_3_lsb_ind_m_1 * exp_msb_ind_2_m_1; + ap_ufixed<52,-2> exp_msb_ind2_msb_ind3_lsb_ind_m_1 = f_x_msb_ind_2_msb_ind3_lsb + exp_msb_ind_3_lsb_ind_m_1 + exp_msb_ind_2_m_1; + const static ap_ufixed<54,26> exp_msb_ind_1_table[256] = { + "0x1.0000000p0", "0x1.279FCADp0", "0x1.5561A92p0", "0x1.8A389FFp0", "0x1.C73D51Cp0", "0x2.0DB3D0Fp0", "0x2.5F1258Ep0", "0x2.BD0911Bp0", + "0x3.298B076p0", "0x3.A6D8842p0", "0x4.378B054p0", "0x4.DEA3099p0", "0x5.9F9802Dp0", "0x6.7E6ABF0p0", "0x7.7FBAAB4p0", "0x8.A8DE610p0", + "0xA.0000000p0", "0xB.8C3DEBEp0", "0xD.55D09B1p0", "0xF.66363F8p0", "0x11.C86531Bp0", "0x14.8906295p0", "0x17.B6B778Cp0", "0x1B.625AB10p0", + "0x1F.9F6E499p0", "0x24.8475291p0", "0x2A.2B6E347p0", "0x30.B25E5F8p0", "0x38.3BF01BEp0", "0x40.F02B75Fp0", "0x4A.FD4AB0Bp0", "0x56.98AFCA2p0", + "0x64.0000000p0", "0x73.7A6B370p0", "0x85.5A260EDp0", "0x99.FE1E7B3p0", "0xB1.D3F3F11p0", "0xCD.5A3D9D0p0", "0xED.232AB7Bp0", "0x111.D78AEA4p0", + "0x13C.3A4EDFBp0", "0x16D.2C939A9p0", "0x1A5.B24E0C7p0", "0x1E6.F7AFBABp0", "0x232.5761167p0", "0x289.61B29B6p0", "0x2ED.E4EAE72p0", "0x361.F6DDE55p0", + "0x3E8.0000000p0", "0x482.C830261p0", "0x535.857C941p0", "0x603.ED30CFDp0", "0x6F2.47876A9p0", "0x805.8668224p0", "0x943.5FAB2CAp0", "0xAB2.6B6D26Bp0", + "0xC5A.4714BCAp0", "0xE43.BDC409Bp0", "0x1078.F70C7CBp0", "0x1305.ACDD4AFp0", "0x15F7.69CAE07p0", "0x195D.D0FA11Ep0", "0x1D4A.F12D073p0", "0x21D3.A4AAF51p0", + "0x2710.0000000p0", "0x2D1B.D1E17C7p0", "0x3417.36DDC85p0", "0x3C27.43E81E5p0", "0x4576.CB4A29Cp0", "0x5037.401156Cp0", "0x5CA1.BCAFBE1p0", "0x6AF8.324382Fp0", + "0x7B86.C6CF5E3p0", "0x8EA5.69A8609p0", "0xA4B9.A67CDEAp0", "0xBE38.C0A4ED5p0", "0xDBAA.21ECC48p0", "0xFDAA.29C4B2Ap0", "0x124ED.6BC2480p0", "0x15244.6EAD929p0", + "0x186A0.0000000p0", "0x1C316.32CEDC6p0", "0x208E8.24A9D35p0", "0x25988.A7112F0p0", "0x2B6A3.F0E5A19p0", "0x32228.80AD63Cp0", "0x39E51.5EDD6CAp0", "0x42DB1.F6A31D7p0", + "0x4D343.C419ADFp0", "0x59276.2093C5Ep0", "0x66F40.80E0B21p0", "0x76E37.8671452p0", "0x894A5.533FACCp0", "0x9E8A5.A1AEFA8p0", "0xB7146.3596CFDp0", "0xD36AC.52C7B9Bp0", + "0xF4240.0000000p0", "0x119EDD.FC149BCp0", "0x145911.6EA2417p0", "0x177F56.86ABD5Cp0", "0x1B2267.68F84F9p0", "0x1F5595.06C5E54p0", "0x242F2D.B4A63E0p0", "0x29C8F3.A25F263p0", + "0x3040A5.A900CB8p0", "0x37B89D.45C5BB0p0", "0x405885.08C6F4Ap0", "0x4A4E2B.406CB33p0", "0x55CE75.407CBF4p0", "0x631678.50D5C93p0", "0x726CBE.17E41E4p0", "0x8422BB.3BCD40Ap0", + "0x989680.0000000p0", "0xB034AB.D8CE155p0", "0xCB7AAE.52568E6p0", "0xEAF961.42B6594p0", "0x10F580A.19B31BCp0", "0x13957D2.43BAF49p0", "0x169D7C9.0E7E6C2p0", "0x1A1D984.57B77DEp0", + "0x1E28678.9A07F2Fp0", "0x22D3624.B9B94DFp0", "0x2837532.57C58E8p0", "0x2E70DB0.843F002p0", "0x35A1094.84DF78Cp0", "0x3DEE0B3.2859DBCp0", "0x4783F6C.EEE92ECp0", "0x5295B50.5604864p0", + "0x0.0000003p0", "0x0.0000003p0", "0x0.0000004p0", "0x0.0000004p0", "0x0.0000005p0", "0x0.0000006p0", "0x0.0000006p0", "0x0.0000007p0", + "0x0.0000008p0", "0x0.000000Ap0", "0x0.000000Bp0", "0x0.000000Dp0", "0x0.000000Fp0", "0x0.0000011p0", "0x0.0000014p0", "0x0.0000017p0", + "0x0.000001Bp0", "0x0.000001Fp0", "0x0.0000024p0", "0x0.0000029p0", "0x0.0000030p0", "0x0.0000037p0", "0x0.0000040p0", "0x0.000004Ap0", + "0x0.0000055p0", "0x0.0000062p0", "0x0.0000071p0", "0x0.0000083p0", "0x0.0000097p0", "0x0.00000AEp0", "0x0.00000C9p0", "0x0.00000E8p0", + "0x0.000010Cp0", "0x0.0000136p0", "0x0.0000166p0", "0x0.000019Dp0", "0x0.00001DDp0", "0x0.0000227p0", "0x0.000027Dp0", "0x0.00002DFp0", + "0x0.0000351p0", "0x0.00003D4p0", "0x0.000046Cp0", "0x0.000051Bp0", "0x0.00005E6p0", "0x0.00006CFp0", "0x0.00007DDp0", "0x0.0000915p0", + "0x0.0000A7Cp0", "0x0.0000C1Cp0", "0x0.0000DFCp0", "0x0.0001026p0", "0x0.00012A6p0", "0x0.0001588p0", "0x0.00018DEp0", "0x0.0001CB7p0", + "0x0.0002129p0", "0x0.000264Bp0", "0x0.0002C38p0", "0x0.0003310p0", "0x0.0003AF7p0", "0x0.0004418p0", "0x0.0004EA2p0", "0x0.0005ACEp0", + "0x0.00068DCp0", "0x0.0007916p0", "0x0.0008BD4p0", "0x0.000A179p0", "0x0.000BA77p0", "0x0.000D754p0", "0x0.000F8A8p0", "0x0.0011F25p0", + "0x0.0014B97p0", "0x0.0017EEAp0", "0x0.001BA2Ep0", "0x0.001FE9Fp0", "0x0.0024DA8p0", "0x0.002A8EDp0", "0x0.0031252p0", "0x0.0038C08p0", + "0x0.0041893p0", "0x0.004BAE0p0", "0x0.005764Cp0", "0x0.0064EBBp0", "0x0.00748A9p0", "0x0.0086947p0", "0x0.009B691p0", "0x0.00B3771p0", + "0x0.00CF3E3p0", "0x0.00EF521p0", "0x0.01145CFp0", "0x0.013F239p0", "0x0.0170894p0", "0x0.01A9943p0", "0x0.01EB736p0", "0x0.023784Bp0", + "0x0.028F5C3p0", "0x0.02F4CC4p0", "0x0.0369EFCp0", "0x0.03F134Dp0", "0x0.048D69Cp0", "0x0.0541CC5p0", "0x0.06121A8p0", "0x0.0702A69p0", + "0x0.08186E2p0", "0x0.0959348p0", "0x0.0ACBA15p0", "0x0.0C7763Fp0", "0x0.0E655C3p0", "0x0.109FC99p0", "0x0.133281Bp0", "0x0.162B2F1p0", + "0x0.199999Ap0", "0x0.1D8FFABp0", "0x0.22235DBp0", "0x0.276C100p0", "0x0.2D8621Cp0", "0x0.3491FB5p0", "0x0.3CB508Ep0", "0x0.461A81Cp0", + "0x0.50F44D9p0", "0x0.5D7C0D3p0", "0x0.6BF44D5p0", "0x0.7CA9E76p0", "0x0.8FF599Ep0", "0x0.A63DDFEp0", "0x0.BFF9112p0", "0x0.DDAFD68p0" + }; + ap_ufixed<54,26> exp_msb_ind_1 = exp_msb_ind_1_table[x_msb_ind_1]; + ap_ufixed<106,24> f_x_msb_ind_1_ind_2_ind_1_lsb = exp_msb_ind_1 * exp_msb_ind2_msb_ind3_lsb_ind_m_1; + y = f_x_msb_ind_1_ind_2_ind_1_lsb + exp_msb_ind_1; + } + if(I_<27) { + bool overf = 0; + #pragma unroll + for(int j = 51; j >= 25 + I_; j--) { + if(y[j]) { + overf = 1; + } + } + if(overf) { + #pragma unroll + for(int j = 51; j>=25 + I_; j--) { + y[j] = 0; + } + #pragma unroll + for(int j = 24 + I_; j >= 0; j--) { + y[j] = 1; + } + } + } + r = y; + } else {// I_s_ = 5, M_ = 27..32, I_ <= 33, F_ <= 32, W <= 65 + ap_fixed<65,33> x_l = x; + ap_ufixed<64,32> y = 0; + ap_fixed<5,5> x_l_int; + x_l_int(4,0) = x_l(36,32); + ap_ufixed<32,0> x_l_fract; + x_l_fract(31,0) = x_l(31,0); + bool overf = 0; + #pragma unroll + for(int j = 63; j >= 36; j--) { + if(x_l[64]!=x_l[j]) { + overf = 1; + } + } + if(overf||(x_l_int >= 10)||((x_l_int==9)&&(x_l_fract>ap_fixed<32,0>("0x0.A209A84F")))) { + if(!x_l[64]) { + y = ap_ufixed<64,32>("0xFFFFFFFF.FFFFFFFFp0"); + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[64]; + x_msb_ind_1(6,0) = x_l(35,29); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(28,21); + ap_uint<7> x_msb_ind_3; + x_msb_ind_3(6,0) = x_l(20,14); + ap_uint<7> x_msb_ind_4; + x_msb_ind_4(6,0) = x_l(13,7); + ap_uint<7> x_lsb_ind; + x_lsb_ind(6,0) = x_l(6,0); + const static ap_ufixed<49,-23> exp_x_lsb_ind_m_1_table[128] = { + "0x0.0p0", "0x0.000000024D76377927p0", "0x0.000000049AEC6EF79Cp0", "0x0.00000006E862A67B5Dp0", "0x0.0000000935D8DE046Dp0", "0x0.0000000B834F1592C9p0", "0x0.0000000DD0C54D2672p0", "0x0.000000101E3B84BF69p0", + "0x0.000000126BB1BC5DAEp0", "0x0.00000014B927F4013Fp0", "0x0.00000017069E2BAA1Ep0", "0x0.00000019541463584Ap0", "0x0.0000001BA18A9B0BC3p0", "0x0.0000001DEF00D2C48Ap0", "0x0.000000203C770A829Ep0", "0x0.0000002289ED4245FFp0", + "0x0.00000024D7637A0EAEp0", "0x0.0000002724D9B1DCA9p0", "0x0.00000029724FE9AFF2p0", "0x0.0000002BBFC6218889p0", "0x0.0000002E0D3C59666Cp0", "0x0.000000305AB291499Dp0", "0x0.00000032A828C9321Bp0", "0x0.00000034F59F011FE7p0", + "0x0.000000374315391300p0", "0x0.00000039908B710B66p0", "0x0.0000003BDE01A90919p0", "0x0.0000003E2B77E10C1Ap0", "0x0.0000004078EE191468p0", "0x0.00000042C664512203p0", "0x0.0000004513DA8934EBp0", "0x0.000000476150C14D21p0", + "0x0.00000049AEC6F96AA4p0", "0x0.0000004BFC3D318D75p0", "0x0.0000004E49B369B592p0", "0x0.000000509729A1E2FDp0", "0x0.00000052E49FDA15B5p0", "0x0.000000553216124DBBp0", "0x0.000000577F8C4A8B0Ep0", "0x0.00000059CD0282CDAEp0", + "0x0.0000005C1A78BB159Bp0", "0x0.0000005E67EEF362D6p0", "0x0.00000060B5652BB55Ep0", "0x0.0000006302DB640D33p0", "0x0.0000006550519C6A55p0", "0x0.000000679DC7D4CCC5p0", "0x0.00000069EB3E0D3482p0", "0x0.0000006C38B445A18Dp0", + "0x0.0000006E862A7E13E4p0", "0x0.00000070D3A0B68B89p0", "0x0.000000732116EF087Bp0", "0x0.000000756E8D278ABBp0", "0x0.00000077BC03601248p0", "0x0.0000007A0979989F22p0", "0x0.0000007C56EFD13149p0", "0x0.0000007EA46609C8BEp0", + "0x0.00000080F1DC426580p0", "0x0.000000833F527B078Fp0", "0x0.000000858CC8B3AEEBp0", "0x0.00000087DA3EEC5B95p0", "0x0.0000008A27B5250D8Cp0", "0x0.0000008C752B5DC4D1p0", "0x0.0000008EC2A1968162p0", "0x0.000000911017CF4341p0", + "0x0.000000935D8E080A6Dp0", "0x0.00000095AB0440D6E7p0", "0x0.00000097F87A79A8AEp0", "0x0.0000009A45F0B27FC2p0", "0x0.0000009C9366EB5C23p0", "0x0.0000009EE0DD243DD2p0", "0x0.000000A12E535D24CEp0", "0x0.000000A37BC9961117p0", + "0x0.000000A5C93FCF02ADp0", "0x0.000000A816B607F991p0", "0x0.000000AA642C40F5C2p0", "0x0.000000ACB1A279F741p0", "0x0.000000AEFF18B2FE0Cp0", "0x0.000000B14C8EEC0A25p0", "0x0.000000B39A05251B8Bp0", "0x0.000000B5E77B5E323Fp0", + "0x0.000000B834F1974E40p0", "0x0.000000BA8267D06F8Ep0", "0x0.000000BCCFDE099629p0", "0x0.000000BF1D5442C212p0", "0x0.000000C16ACA7BF348p0", "0x0.000000C3B840B529CBp0", "0x0.000000C605B6EE659Bp0", "0x0.000000C8532D27A6B9p0", + "0x0.000000CAA0A360ED24p0", "0x0.000000CCEE199A38DDp0", "0x0.000000CF3B8FD389E2p0", "0x0.000000D189060CE035p0", "0x0.000000D3D67C463BD5p0", "0x0.000000D623F27F9CC3p0", "0x0.000000D87168B902FEp0", "0x0.000000DABEDEF26E86p0", + "0x0.000000DD0C552BDF5Bp0", "0x0.000000DF59CB65557Ep0", "0x0.000000E1A7419ED0EEp0", "0x0.000000E3F4B7D851ABp0", "0x0.000000E6422E11D7B6p0", "0x0.000000E88FA44B630Dp0", "0x0.000000EADD1A84F3B2p0", "0x0.000000ED2A90BE89A5p0", + "0x0.000000EF7806F824E4p0", "0x0.000000F1C57D31C571p0", "0x0.000000F412F36B6B4Cp0", "0x0.000000F66069A51673p0", "0x0.000000F8ADDFDEC6E8p0", "0x0.000000FAFB56187CAAp0", "0x0.000000FD48CC5237B9p0", "0x0.000000FF96428BF816p0", + "0x0.00000101E3B8C5BDC0p0", "0x0.00000104312EFF88B7p0", "0x0.000001067EA53958FCp0", "0x0.00000108CC1B732E8Ep0", "0x0.0000010B1991AD096Dp0", "0x0.0000010D6707E6E999p0", "0x0.0000010FB47E20CF13p0", "0x0.0000011201F45AB9DAp0", + "0x0.000001144F6A94A9EEp0", "0x0.000001169CE0CE9F4Fp0", "0x0.00000118EA570899FEp0", "0x0.0000011B37CD4299FAp0", "0x0.0000011D85437C9F44p0", "0x0.0000011FD2B9B6A9DAp0", "0x0.00000122202FF0B9BEp0", "0x0.000001246DA62ACEEFp0" + }; + ap_ufixed<49,-23> exp_x_lsb_ind_m_1 = exp_x_lsb_ind_m_1_table[x_lsb_ind]; + const static ap_ufixed<56,-16> exp_x_msb_ind_4_m_1_table[128] = { + "0x0.0p0", "0x0.00000126BB1C64FE3Ep0", "0x0.0000024D763A1D4ECAp0", "0x0.00000374315928F1A6p0", "0x0.0000049AEC7987E6D2p0", "0x0.000005C1A79B3A2E51p0", "0x0.000006E862BE3FC825p0", "0x0.0000080F1DE298B44Dp0", + "0x0.00000935D90844F2CDp0", "0x0.00000A5C942F4483A6p0", "0x0.00000B834F579766D9p0", "0x0.00000CAA0A813D9C67p0", "0x0.00000DD0C5AC372453p0", "0x0.00000EF780D883FE9Ep0", "0x0.0000101E3C06242B48p0", "0x0.00001144F73517AA55p0", + "0x0.0000126BB2655E7BC5p0", "0x0.000013926D96F89F9Ap0", "0x0.000014B928C9E615D5p0", "0x0.000015DFE3FE26DE78p0", "0x0.000017069F33BAF985p0", "0x0.0000182D5A6AA266FCp0", "0x0.0000195415A2DD26E0p0", "0x0.00001A7AD0DC6B3932p0", + "0x0.00001BA18C174C9DF4p0", "0x0.00001CC84753815527p0", "0x0.00001DEF0291095ECCp0", "0x0.00001F15BDCFE4BAE6p0", "0x0.0000203C7910136975p0", "0x0.000021633451956A7Bp0", "0x0.00002289EF946ABDFAp0", "0x0.000023B0AAD89363F3p0", + "0x0.000024D7661E0F5C68p0", "0x0.000025FE2164DEA75Ap0", "0x0.00002724DCAD0144CCp0", "0x0.0000284B97F67734BDp0", "0x0.000029725341407730p0", "0x0.00002A990E8D5D0C27p0", "0x0.00002BBFC9DACCF3A2p0", "0x0.00002CE68529902DA4p0", + "0x0.00002E0D4079A6BA2Ep0", "0x0.00002F33FBCB109942p0", "0x0.0000305AB71DCDCAE0p0", "0x0.000031817271DE4F0Bp0", "0x0.000032A82DC74225C5p0", "0x0.000033CEE91DF94F0Dp0", "0x0.000034F5A47603CAE7p0", "0x0.0000361C5FCF619954p0", + "0x0.000037431B2A12BA54p0", "0x0.00003869D686172DEBp0", "0x0.0000399091E36EF418p0", "0x0.00003AB74D421A0CDFp0", "0x0.00003BDE08A218783Fp0", "0x0.00003D04C4036A363Cp0", "0x0.00003E2B7F660F46D5p0", "0x0.00003F523ACA07AA0Ep0", + "0x0.00004078F62F535FE7p0", "0x0.0000419FB195F26862p0", "0x0.000042C66CFDE4C380p0", "0x0.000043ED28672A7144p0", "0x0.00004513E3D1C371ADp0", "0x0.0000463A9F3DAFC4BFp0", "0x0.000047615AAAEF6A7Ap0", "0x0.0000488816198262E1p0", + "0x0.000049AED18968ADF4p0", "0x0.00004AD58CFAA24BB5p0", "0x0.00004BFC486D2F3C26p0", "0x0.00004D2303E10F7F48p0", "0x0.00004E49BF5643151Cp0", "0x0.00004F707ACCC9FDA5p0", "0x0.000050973644A438E4p0", "0x0.000051BDF1BDD1C6DAp0", + "0x0.000052E4AD3852A788p0", "0x0.0000540B68B426DAF1p0", "0x0.0000553224314E6116p0", "0x0.00005658DFAFC939F8p0", "0x0.0000577F9B2F976599p0", "0x0.000058A656B0B8E3FBp0", "0x0.000059CD12332DB51Ep0", "0x0.00005AF3CDB6F5D905p0", + "0x0.00005C1A893C114FB1p0", "0x0.00005D4144C2801924p0", "0x0.00005E68004A42355Fp0", "0x0.00005F8EBBD357A463p0", "0x0.000060B5775DC06632p0", "0x0.000061DC32E97C7ACEp0", "0x0.00006302EE768BE238p0", "0x0.00006429AA04EE9C72p0", + "0x0.000065506594A4A97Dp0", "0x0.000066772125AE095Ap0", "0x0.0000679DDCB80ABC0Cp0", "0x0.000068C4984BBAC194p0", "0x0.000069EB53E0BE19F3p0", "0x0.00006B120F7714C52Bp0", "0x0.00006C38CB0EBEC33Ep0", "0x0.00006D5F86A7BC142Cp0", + "0x0.00006E8642420CB7F8p0", "0x0.00006FACFDDDB0AEA2p0", "0x0.000070D3B97AA7F82Dp0", "0x0.000071FA7518F2949Ap0", "0x0.0000732130B89083EBp0", "0x0.00007447EC5981C621p0", "0x0.0000756EA7FBC65B3Dp0", "0x0.00007695639F5E4341p0", + "0x0.000077BC1F44497E2Fp0", "0x0.000078E2DAEA880C08p0", "0x0.00007A09969219ECCEp0", "0x0.00007B30523AFF2082p0", "0x0.00007C570DE537A726p0", "0x0.00007D7DC990C380BBp0", "0x0.00007EA4853DA2AD43p0", "0x0.00007FCB40EBD52CBFp0", + "0x0.000080F1FC9B5AFF31p0", "0x0.00008218B84C34249Ap0", "0x0.0000833F73FE609CFCp0", "0x0.000084662FB1E06859p0", "0x0.0000858CEB66B386B2p0", "0x0.000086B3A71CD9F808p0", "0x0.000087DA62D453BC5Dp0", "0x0.000089011E8D20D3B2p0", + "0x0.00008A27DA47413E0Ap0", "0x0.00008B4E9602B4FB65p0", "0x0.00008C7551BF7C0BC5p0", "0x0.00008D9C0D7D966F2Cp0", "0x0.00008EC2C93D04259Bp0", "0x0.00008FE984FDC52F14p0", "0x0.0000911040BFD98B98p0", "0x0.00009236FC83413B29p0" + }; + ap_ufixed<56,-16> exp_x_msb_ind_4_m_1 = exp_x_msb_ind_4_m_1_table[x_msb_ind_4]; + ap_ufixed<105,-39> f_x_msb_ind_4_lsb_ind = exp_x_msb_ind_4_m_1 * exp_x_lsb_ind_m_1; + ap_ufixed<54,-16> exp_x_msb_ind_4_lsb_ind_m_1 = f_x_msb_ind_4_lsb_ind + exp_x_msb_ind_4_m_1 + exp_x_lsb_ind_m_1; + const static ap_ufixed<61,-9> exp_x_msb_ind_3_m_1_table[128] = { + "0x0.0p0", "0x0.0000935DB847FC5AA8p0", "0x0.000126BBC564BCA768p0", "0x0.0001BA1A275671BB78p0", "0x0.00024D78DE1D4C6C2Cp0", "0x0.0002E0D7E9B97D8EFCp0", "0x0.000374374A2B35F970p0", "0x0.00040796FF72A6813Cp0", + "0x0.00049AF7098FFFFC24p0", "0x0.00052E57688373400Cp0", "0x0.0005C1B81C4D3122F0p0", "0x0.0006551924ED6A7AF0p0", "0x0.0006E87A8264501E44p0", "0x0.00077BDC34B212E340p0", "0x0.00080F3E3BD6E3A04Cp0", "0x0.0008A2A097D2F32C00p0", + "0x0.0009360348A6725D00p0", "0x0.0009C9664E51920A0Cp0", "0x0.000A5CC9A8D4830A0Cp0", "0x0.000AF02D582F7633F4p0", "0x0.000B83915C629C5EE4p0", "0x0.000C16F5B56E266210p0", "0x0.000CAA5A63524514C8p0", "0x0.000D3DBF660F294E74p0", + "0x0.000DD124BDA503E6A8p0", "0x0.000E648A6A1405B500p0", "0x0.000EF7F06B5C5F9140p0", "0x0.000F8B56C17E425348p0", "0x0.00101EBD6C79DED310p0", "0x0.0010B2246C4F65E8ACp0", "0x0.0011458BC0FF086C50p0", "0x0.0011D8F36A88F7364Cp0", + "0x0.00126C5B68ED631F08p0", "0x0.0012FFC3BC2C7CFF0Cp0", "0x0.0013932C644675AEF4p0", "0x0.00142695613B7E0788p0", "0x0.0014B9FEB30BC6E19Cp0", "0x0.00154D6859B7811628p0", "0x0.0015E0D2553EDD7E44p0", "0x0.0016743CA5A20CF314p0", + "0x0.001707A74AE1404DF0p0", "0x0.00179B1244FCA86834p0", "0x0.00182E7D93F4761B6Cp0", "0x0.0018C1E937C8DA4134p0", "0x0.00195555307A05B348p0", "0x0.0019E8C17E08294B7Cp0", "0x0.001A7C2E207375E3C8p0", "0x0.001B0F9B17BC1C563Cp0", + "0x0.001BA30863E24D7D04p0", "0x0.001C367604E63A3268p0", "0x0.001CC9E3FAC81350CCp0", "0x0.001D5D52458809B2ACp0", "0x0.001DF0C0E5264E32ACp0", "0x0.001E842FD9A311AB84p0", "0x0.001F179F22FE84F804p0", "0x0.001FAB0EC138D8F320p0", + "0x0.00203E7EB4523E77E4p0", "0x0.0020D1EEFC4AE66178p0", "0x0.0021655F9923018B24p0", "0x0.0021F8D08ADAC0D048p0", "0x0.00228C41D172550C64p0", "0x0.00231FB36CE9EF1B0Cp0", "0x0.0023B3255D41BFD7FCp0", "0x0.00244697A279F81F04p0", + "0x0.0024DA0A3C92C8CC10p0", "0x0.00256D7D2B8C62BB2Cp0", "0x0.002600F06F66F6C880p0", "0x0.002694640822B5D04Cp0", "0x0.002727D7F5BFD0AEECp0", "0x0.0027BB4C383E7840E0p0", "0x0.00284EC0CF9EDD62C0p0", "0x0.0028E235BBE130F138p0", + "0x0.002975AAFD05A3C918p0", "0x0.002A0920930C66C754p0", "0x0.002A9C967DF5AAC8E8p0", "0x0.002B300CBDC1A0AB00p0", "0x0.002BC3835270794AD4p0", "0x0.002C56FA3C026585C8p0", "0x0.002CEA717A77963950p0", "0x0.002D7DE90DD03C4300p0", + "0x0.002E1160F60C888084p0", "0x0.002EA4D9332CABCFB0p0", "0x0.002F3851C530D70E68p0", "0x0.002FCBCAAC193B1AB0p0", "0x0.00305F43E7E608D2ACp0", "0x0.0030F2BD7897711494p0", "0x0.003186375E2DA4BEC4p0", "0x0.003219B198A8D4AFB0p0", + "0x0.0032AD2C280931C5ECp0", "0x0.003340A70C4EECE020p0", "0x0.0033D422457A36DD1Cp0", "0x0.0034679DD38B409BBCp0", "0x0.0034FB19B6823AFB0Cp0", "0x0.00358E95EE5F56DA24p0", "0x0.003622127B22C51840p0", "0x0.0036B58F5CCCB694B4p0", + "0x0.0037490C935D5C2EF8p0", "0x0.0037DC8A1ED4E6C690p0", "0x0.00387007FF33873B30p0", "0x0.0039038634796E6C9Cp0", "0x0.00399704BEA6CD3AB4p0", "0x0.003A2A839DBBD48578p0", "0x0.003ABE02D1B8B52D04p0", "0x0.003B51825A9DA01190p0", + "0x0.003BE502386AC6136Cp0", "0x0.003C78826B2058130Cp0", "0x0.003D0C02F2BE86F0F8p0", "0x0.003D9F83CF45838DD8p0", "0x0.003E330500B57ECA74p0", "0x0.003EC686870EA987A4p0", "0x0.003F5A08625134A66Cp0", "0x0.003FED8A927D5107E4p0", + "0x0.0040810D17932F8D38p0", "0x0.0041148FF1930117C0p0", "0x0.0041A813207CF688E8p0", "0x0.00423B96A45140C234p0", "0x0.0042CF1A7D1010A550p0", "0x0.0043629EAAB99713F8p0", "0x0.0043F6232D4E04F00Cp0", "0x0.004489A804CD8B1B80p0", + "0x0.00451D2D31385A7870p0", "0x0.0045B0B2B28EA3E90Cp0", "0x0.0046443888D0984FA0p0", "0x0.0046D7BEB3FE688E98p0", "0x0.00476B453418458878p0", "0x0.0047FECC091E601FE4p0", "0x0.004892533310E93798p0", "0x0.004925DAB1F011B270p0" + }; + ap_ufixed<61,-9> exp_x_msb_ind_3_m_1 = exp_x_msb_ind_3_m_1_table[x_msb_ind_3]; + ap_ufixed<115,-25> f_x_msb_ind_3_msb_ind_4_lsb_ind = exp_x_msb_ind_3_m_1 * exp_x_msb_ind_4_lsb_ind_m_1; + ap_ufixed<59,-9> exp_x_msb_ind_3_msb_ind_4_lsb_ind_m_1 = f_x_msb_ind_3_msb_ind_4_lsb_ind + exp_x_msb_ind_3_m_1 + exp_x_msb_ind_4_lsb_ind_m_1; + const static ap_ufixed<67,-1> exp_x_msb_ind_2_m_1_table[256] = { + "0x0.0p0", "0x0.0049B96285BC0A736p0", "0x0.009388004BE7E5593p0", "0x0.00DD6BDF6FC8EDEABp0", "0x0.01276506106747AA4p0", "0x0.0171737A4E8E5E346p0", "0x0.01BB97424CCD67360p0", "0x0.0205D0642F77E4885p0", + "0x.02501EE61CA62671Ep0", "0x0.029A82CE3C35CE0DBp0", "0x0.02E4FC22B7CA4FD73p0", "0x0.032F8AE9BACD765C6p0", "0x0.037A2F29726FE5154p0", "0x0.03C4E8E80DA99B612p0", "0x0.040FB82BBD3A77A9Ap0", "0x0.045A9CFAB3AABAAB4p0", + "0x.04A5975B254B8AE40p0", "0x0.04F0A75348377827Fp0", "0x0.053BCCE95452FF5B2p0", "0x0.05870823834D0E520p0", "0x0.05D25908109F87D7Ap0", "0x0.061DBF9D398FC7D9Dp0", "0x0.06693BE93D2F27BB7p0", "0x0.06B4CDF25C5B82CCDp0", + "0x.070075BED9BFBAEA4p0", "0x0.074C3354F9D43D40Ap0", "0x0.079806BB02DF8738Ap0", "0x0.07E3EFF73CF6AB87Ap0", "0x0.082FEF0FF1FDD767Bp0", "0x0.087C040B6DA8D7F50p0", "0x0.08C82EEFFD7B9FB28p0", "0x0.09146FC3F0CACC34Cp0", + "0x.0960C68D98BC2BF2Ep0", "0x0.09AD33534847443EAp0", "0x0.09F9B61B5435D762Cp0", "0x0.0A464EEC13246AE7Ep0", "0x0.0A92FDCBDD82CE006p0", "0x0.0ADFC2C10D94A01AAp0", "0x0.0B2C9DD1FF71D79A4p0", "0x0.0B798F05110748B7Fp0", + "0x.0BC69660A2172C887p0", "0x0.0C13B3EB1439A82A1p0", "0x0.0C60E7AACADD54194p0", "0x0.0CAE31A62B47C3AC7p0", "0x0.0CFB91E39C960CB66p0", "0x0.0D49086987BD4F4FEp0", "0x0.0D96953E578B3DC88p0", "0x0.0DE4386878A6A4BEAp0", + "0x.0E31F1EE598FF35E7p0", "0x0.0E7FC1D66AA1C3C87p0", "0x0.0ECDA8271E11639EAp0", "0x0.0F1BA4E6E7EF5CBA0p0", "0x0.0F69B81C3E27FE069p0", "0x0.0FB7E1CD9883E4871p0", "0x0.1006220170A884803p0", "0x0.105478BE4218B2CB7p0", + "0x.10A2E60A8A352E513p0", "0x0.10F169ECC83D29AA6p0", "0x0.1140046B7D4ED4EA6p0", "0x0.118EB58D2C67E78FCp0", "0x0.11DD7D585A662A9D7p0", "0x0.122C5BD38E0802DB1p0", "0x0.127B51054FECFB3DBp0", "0x0.12CA5CF42A964F780p0", + "0x.13197FA6AA6776B28p0", "0x0.1368B9235DA6AE6BAp0", "0x0.13B80970D47D85804p0", "0x0.14077095A0F9675B6p0", "0x0.1456EE98570C274EEp0", "0x0.14A6837F8C8C8C138p0", "0x0.14F62F51D936DB71Dp0", "0x0.1545F215D6AD6612Fp0", + "0x.1595CBD2207913796p0", "0x0.15E5BC8D5409EE22Bp0", "0x0.1635C44E10B7AFD11p0", "0x0.1685E31AF7C24DFD9p0", "0x0.16D618FAAC528672Ap0", "0x0.172665F3D37A6C0F3p0", "0x0.1776CA0D1435F3B24p0", "0x0.17C7454D176B814F4p0", + "0x.1817D7BA87EC752AAp0", "0x0.1868815C1275B93F8p0", "0x0.18B9423865B04ECDCp0", "0x0.190A1A563231DC114p0", "0x0.195B09BC2A7D3A217p0", "0x0.19AC1071030302FA1p0", "0x0.19FD2E7B72221FACBp0", "0x0.1A4E63E2302856BB6p0", + "0x.1A9FB0ABF752DA9BEp0", "0x0.1AF114DF83CED8647p0", "0x0.1B42908393BA06A18p0", "0x0.1B94239EE72334542p0", "0x0.1BE5CE38400AD81A5p0", "0x0.1C37905662639F7FEp0", "0x0.1C896A001412FE793p0", "0x0.1CDB5B3C1CF1BF06Bp0", + "0x.1D2D641146CC91022p0", "0x0.1D7F84865D649A153p0", "0x0.1DD1BCA22E7005D96p0", "0x0.1E240C6B899A96219p0", "0x0.1E7673E94086336D2p0", "0x0.1EC8F32226CB7D849p0", "0x0.1F1B8A1D11FA5C3FAp0", "0x0.1F6E38E0D99A9075Cp0", + "0x.1FC0FF74572C45177p0", "0x0.2013DDDE6628A071Cp0", "0x0.2066D425E402559C1p0", "0x0.20B9E251B026360EFp0", "0x0.210D0868ABFBC3658p0", "0x0.21604671BAE5C1485p0", "0x0.21B39C73C242C7830p0", "0x0.22070A75A96DD4433p0", + "0x.225A907E59BEDE81Cp0", "0x0.22AE2E94BE8B6896Ap0", "0x0.2301E4BFC52712F67p0", "0x0.2355B3065CE42F1A7p0", "0x0.23A9996F77145292Cp0", "0x0.23FD98020708EA434p0", "0x0.2451AEC50213CDCA7p0", "0x0.24A5DDBF5F87D312Ep0", + "0x.24FA24F818B9620F7p0", "0x0.254E847628FF08A1Bp0", "0x0.25A2FC408DB20EAB1p0", "0x0.25F78C5E462F0A48Bp0", "0x0.264C34D653D67439Bp0", "0x0.26A0F5AFBA0D3C70Bp0", "0x0.26F5CEF17E3D5ECF9p0", "0x0.274AC0A2A7D6780E4p0", + "0x.279FCACA404E5ACCBp0", "0x0.27F4ED6F5321A4CF5p0", "0x0.284A2898EDD45466Ap0", "0x0.289F7C4E1FF25E01Ep0", "0x0.28F4E895FB1041ECEp0", "0x0.294A6D7792CBA238Bp0", "0x0.29A00AF9FCCBD8CFCp0", "0x0.29F5C12450C28DB50p0", + "0x.2A4B8FFDA86C4D6E8p0", "0x0.2AA1778D1F911F9B4p0", "0x0.2AF777D9D4051DB44p0", "0x0.2B4D90EAE5A909F93p0", "0x0.2BA3C2C7766AE6888p0", "0x0.2BFA0D76AA468CA2Fp0", "0x0.2C5070FFA746441ACp0", "0x0.2CA6ED6995835AEE4p0", + "0x.2CFD82BB9F26BD0EAp0", "0x0.2D5430FCF0698C518p0", "0x0.2DAAF834B795B88F5p0", "0x0.2E01D86A250697ECCp0", "0x0.2E58D1A46B297F504p0", "0x0.2EAFE3EABE7E5B03Bp0", "0x0.2F070F44559847819p0", "0x0.2F5E53B8691E2A6E5p0", + "0x.2FB5B14E33CB4BBE3p0", "0x0.300D280CF26FEF065p0", "0x0.3064B7FBE3F1ECFAEp0", "0x0.30BC6122494D4D18Bp0", "0x0.311423876594DF7B7p0", "0x0.316BFF327DF2D6E06p0", "0x0.31C3F42AD9A962D4Ep0", "0x0.321C0277C2134A11Dp0", + "0x.32742A2082A485035p0", "0x0.32CC6B2C68EAD87CAp0", "0x0.3324C5A2C48E70995p0", "0x0.337D398AE7527BCA2p0", "0x0.33D5C6EC2515C60F8p0", "0x0.342E6DCDD3D3545FDp0", "0x0.34872E374BA3003AFp0", "0x0.34E0082FE6BA136ADp0", + "0x.3538FBBF016BE3F00p0", "0x0.359208EBFA2A701C4p0", "0x0.35EB2FBE3186FAD90p0", "0x0.3644703D0A32A81BDp0", "0x0.369DCA6FE8FF1986Fp0", "0x0.36F73E5E34DF0B37Bp0", "0x0.3750CC0F56E6F0C1Ep0", "0x0.37AA738ABA4D92580p0", + "0x.380434D7CC6CAA213p0", "0x0.385E0FFDFCC181BC3p0", "0x0.38B80504BCED8FF00p0", "0x0.391213F380B716895p0", "0x0.396C3CD1BE09C0665p0", "0x0.39C67FA6ECF73FAF1p0", "0x0.3A20DC7A87B7EC3C5p0", "0x0.3A7B53540AAB622AFp0", + "0x.3AD5E43AF459209E5p0", "0x0.3B308F36C57128AF1p0", "0x0.3B8B544F00CC9C88Ap0", "0x0.3BE6338B2B6E5EB41p0", "0x0.3C412CF2CC83B1910p0", "0x0.3C9C408D6D64D6FC5p0", "0x0.3CF76E629995B0251p0", "0x0.3D52B679DEC65D8F1p0", + "0x.3DAE18DACCD3DF440p0", "0x0.3E09958CF5C8B5321p0", "0x0.3E652C97EDDD7FB9Bp0", "0x0.3EC0DE034B79A0686p0", "0x0.3F1CA9D6A733DAE2Ep0", "0x0.3F7890199BD2F5FCFp0", "0x0.3FD490D3C64E5D001p0", "0x0.4030AC0CC5CEC11FFp0", + "0x.408CE1CC3BAEBB1E6p0", "0x0.40E93219CB7B6D1CCp0", "0x0.41459CFD1AF5249CFp0", "0x0.41A2227DD20FFCB02p0", "0x0.41FEC2A39AF480553p0", "0x0.425B7D7622004D04Dp0", "0x0.42B852FD15C6B56D6p0", "0x0.431543402711645D2p0", + "0x.43724E4708E0FFDB7p0", "0x0.43CF7419706DCC711p0", "0x0.442CB4BF1528509F4p0", "0x0.448A103FB0B9F8866p0", "0x0.44E786A2FF05B9BB0p0", "0x0.454517F0BE28B74ACp0", "0x0.45A2C430AE7AE5F03p0", "0x0.46008B6A928FB075Ep0", + "0x.465E6DA62F369C48Ep0", "0x0.46BC6AEB4B7BEE3AAp0", "0x0.471A8341B0A94F727p0", "0x0.4778B6B12A46728E1p0", "0x0.47D705418619B8F25p0", "0x0.48356EFA9428D84B1p0", "0x0.4893F3E426B9803ABp0", "0x0.48F2940612520039Ap0", + "0x.49514F682DB9EDA59p0", "0x0.49B0261251FACA004p0", "0x0.4A0F180C5A60A95E7p0", "0x0.4A6E255E247AD906Ap0", "0x0.4ACD4E0F901C863FEp0", "0x0.4B2C92287F5D65507p0", "0x0.4B8BF1B0D69A58AD0p0", "0x0.4BEB6CB07C7618574p0", + "0x.4C4B032F59D9D96D8p0", "0x0.4CAAB53559F5F5E9Fp0", "0x0.4D0A82CA6A429492Bp0", "0x0.4D6A6BF67A8051199p0", "0x0.4DCA70C17CB8E46D2p0", "0x0.4E2A9133653FCD395p0", "0x0.4E8ACD542AB2F8995p0", "0x0.4EEB252BC5FB6AF99p0", + "0x.4F4B98C2324DE92ACp0", "0x0.4FAC281F6D2BA1A4Fp0", "0x0.500CD34B7662D5FC3p0", "0x0.506D9A4E500F84855p0", "0x0.50CE7D2FFE9C122BEp0", "0x0.512F7BF888C1F4791p0", "0x0.519096AFF78A5BCB5p0", "0x0.51F1CD5E564EDDBF2p0", + "0x.5253200BB2BA1FC90p0", "0x0.52B48EC01CC882005p0", "0x0.53161983A6C8CA1BBp0", "0x0.5377C05E655CCE9E1p0", "0x0.53D983586F7A2235Ep0", "0x0.543B6279DE6ABF4CAp0", "0x0.549D5DCACDCDB3C8Dp0", "0x0.54FF75535B97CD007p0" + }; + ap_ufixed<67,-1> exp_x_msb_ind_2_m_1 = exp_x_msb_ind_2_m_1_table[x_msb_ind_2]; + ap_ufixed<126,-10> f_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind = exp_x_msb_ind_2_m_1 * exp_x_msb_ind_3_msb_ind_4_lsb_ind_m_1; + ap_ufixed<65,-1> exp_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind_m_1 = f_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind + exp_x_msb_ind_2_m_1 + exp_x_msb_ind_3_msb_ind_4_lsb_ind_m_1; + const static ap_ufixed<66,32> exp_x_msb_ind_1_table[256] = { + "0x1.000000000p0", "0x1.5561A91BCp0", "0x1.C73D51C54p0", "0x2.5F1258E08p0", "0x3.298B075B4p0", "0x4.378B053ECp0", "0x5.9F9802C8Cp0", "0x7.7FBAAB458p0", + "0xA.000000000p0", "0xD.55D09B148p0", "0x11.C86531B4Cp0", "0x17.B6B778C40p0", "0x1F.9F6E49910p0", "0x2A.2B6E34724p0", "0x38.3BF01BD84p0", "0x4A.FD4AB0B64p0", + "0x64.000000000p0", "0x85.5A260ECDCp0", "0xB1.D3F3F10ECp0", "0xED.232AB7A90p0", "0x13C.3A4EDFA98p0", "0x1A5.B24E0C774p0", "0x232.57611671Cp0", "0x2ED.E4EAE71ECp0", + "0x3E8.000000000p0", "0x535.857C94088p0", "0x6F2.47876A934p0", "0x943.5FAB2C9B4p0", "0xC5A.4714BC9E8p0", "0x1078.F70C7CA94p0", "0x15F7.69CAE0728p0", "0x1D4A.F12D0732Cp0", + "0x2710.000000000p0", "0x3417.36DDC8558p0", "0x4576.CB4A29C18p0", "0x5CA1.BCAFBE0F8p0", "0x7B86.C6CF5E320p0", "0xA4B9.A67CDE9B4p0", "0xDBAA.21ECC4790p0", "0x124ED.6BC247FB8p0", + "0x186A0.000000000p0", "0x208E8.24A9D3580p0", "0x2B6A3.F0E5A18ECp0", "0x39E51.5EDD6C9A0p0", "0x4D343.C419ADF30p0", "0x66F40.80E0B210Cp0", "0x894A5.533FACBA4p0", "0xB7146.3596CFD3Cp0", + "0xF4240.000000000p0", "0x145911.6EA2416F4p0", "0x1B2267.68F84F938p0", "0x242F2D.B4A63E038p0", "0x3040A5.A900CB7F0p0", "0x405885.08C6F4A64p0", "0x55CE75.407CBF46Cp0", "0x726CBE.17E41E45Cp0", + "0x989680.000000000p0", "0xCB7AAE.52568E584p0", "0x10F580A.19B31BC34p0", "0x169D7C9.0E7E6C220p0", "0x1E28678.9A07F2F6Cp0", "0x2837532.57C58E7F0p0", "0x35A1094.84DF78C38p0", "0x4783F6C.EEE92EB90p0", + "0x5F5E100.000000000p0", "0x7F2CACF.37618F720p0", "0xA997065.00FF159FCp0", "0xE226DDA.90F039530p0", "0x12D940B6.044F7DA48p0", "0x192293F7.6DB790F54p0", "0x2184A5CD.30BAB7A30p0", "0x2CB27A41.551BD339Cp0", + "0x3B9ACA00.000000000p0", "0x4F7BEC18.29CF9A750p0", "0x69FE63F2.09F6D83E4p0", "0x8D584A89.A9623D3E0p0", "0xBC7C871C.2B1AE86C4p0", "0xFB59C7AA.492BA9948p0", "0x14F2E7A03.E74B2C5F4p0", "0x1BEF8C68D.531640404p0", + "0x2540BE400.000000000p0", "0x31AD738F1.A21C08914p0", "0x423EFE774.63A4726F4p0", "0x58572E960.9DD6646C4p0", "0x75CDD4719.AF0D143A8p0", "0x9D181CCA6.DBB49FCD0p0", "0xD17D0C427.08EFBBB80p0", "0x1175B7C185.3EDE8282Cp0", + "0x174876E800.000000000p0", "0x1F0C683970.551855AD0p0", "0x29675F0A8B.E46C78594p0", "0x37367D1DC6.2A5FEC3A0p0", "0x49A0A4C700.D682CA49Cp0", "0x622F11FE84.950E3E020p0", "0x82EE27A986.595D55300p0", "0xAE992D8F34.74B1191B8p0", + "0xE8D4A51000.000000000p0", "0x1367C123E63.52F358C14p0", "0x19E09B66976.EC3CB37C0p0", "0x22820E329BD.A7BF3A448p0", "0x2E0466FC608.611BE6E18p0", "0x3D5D6B3F12D.D28E6C148p0", "0x51D4D8C9F3F.7DA553E00p0", "0x6D1FBC7980C.8EEAFB130p0", + "0x9184E72A000.000000000p0", "0xC20D8B66FE1.3D81778C0p0", "0x102C61201EA5.3A5F02D70p0", "0x159148DFA168.8D7846AE0p0", "0x1CC2C05DBC53.CB1704CFCp0", "0x265A63076BCA.399038CD8p0", "0x3325077E387A.E87546BF0p0", "0x4433D5CBF07D.952DCEBE8p0", + "0x5AF3107A4000.000000000p0", "0x794877205ECC.670EAB770p0", "0xA1BBCB413274.47B61C654p0", "0xD7ACD8BC4E15.86B2C2CC0p0", "0x11F9B83A95B45.EEE6301D8p0", "0x17F87DE4A35E6.3FA238074p0", "0x1FF724AEE34CD.1494C3758p0", "0x2AA0659F764E7.D3CA13714p0", + "0x38D7EA4C68000.000000000p0", "0x4BCD4A743B3FC.0692B2A70p0", "0x65155F08BF88A.CD1D1BF4Cp0", "0x86CC0775B0CD7.42FB9BF90p0", "0xB3C13249D90BB.54FDE1260p0", "0xEFB4EAEE61AFE.7C563047Cp0", "0x13FA76ED4E1002.CDCFA296Cp0", "0x1AA43F83A9F10E.45E4C26DCp0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x.000000004p0", "0x.000000004p0", "0x.000000004p0", "0x.000000004p0", + "0x0.000000008p0", "0x.000000008p0", "0x.00000000Cp0", "0x.000000010p0", "0x.000000014p0", "0x.00000001Cp0", "0x.000000028p0", "0x.000000034p0", + "0x0.000000044p0", "0x.00000005Cp0", "0x.00000007Cp0", "0x.0000000A4p0", "0x.0000000D8p0", "0x.000000120p0", "0x.000000184p0", "0x.000000204p0", + "0x0.0000002B0p0", "0x.000000394p0", "0x.0000004C8p0", "0x.00000065Cp0", "0x.00000087Cp0", "0x.000000B50p0", "0x.000000F18p0", "0x.000001420p0", + "0x0.000001AD8p0", "0x.0000023CCp0", "0x.000002FBCp0", "0x.000003FA8p0", "0x.0000054E4p0", "0x.000007134p0", "0x.0000096F4p0", "0x.00000C94Cp0", + "0x0.000010C70p0", "0x.0000165F8p0", "0x.00001DD5Cp0", "0x.000027C90p0", "0x.0000350E0p0", "0x.000046BFCp0", "0x.00005E588p0", "0x.00007DCFCp0", + "0x0.0000A7C5Cp0", "0x.0000DFBA4p0", "0x.00012A588p0", "0x.00018DD9Cp0", "0x.0002128ACp0", "0x.0002C37D4p0", "0x.0003AF73Cp0", "0x.0004EA1D0p0", + "0x0.00068DB8Cp0", "0x.0008BD470p0", "0x.000BA7754p0", "0x.000F8A814p0", "0x.0014B96C0p0", "0x.001BA2E4Cp0", "0x.0024DA858p0", "0x.003125230p0", + "0x0.004189374p0", "0x.005764C70p0", "0x.00748A940p0", "0x.009B690C8p0", "0x.00CF3E374p0", "0x.01145CEF0p0", "0x.017089380p0", "0x.01EB735F0p0", + "0x0.028F5C290p0", "0x.0369EFC58p0", "0x.048D69C70p0", "0x.06121A7D0p0", "0x.08186E274p0", "0x.0ACBA1550p0", "0x.0E655C300p0", "0x.133281B68p0", + "0x0.199999998p0", "0x.22235DB60p0", "0x.2D8621C70p0", "0x.3CB508E34p0", "0x.50F44D894p0", "0x.6BF44D530p0", "0x.8FF599E10p0", "0x.BFF911208p0" + }; + ap_ufixed<66,32> exp_x_msb_ind_1 = exp_x_msb_ind_1_table[x_msb_ind_1]; + ap_ufixed<131,31> f_x_msb_ind_1_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind = exp_x_msb_ind_1 * exp_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind_m_1; + y = f_x_msb_ind_1_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind + exp_x_msb_ind_1; + } + if(I_<33) { + bool overf = 0; + #pragma unroll + for(int j = 63; j >= 31 + I_; j--) { + if(y[j]) { + overf = 1; + } + } + if(overf) { + #pragma unroll + for(int j = 63; j >= 31 + I_; j--) { + y[j] = 0; + } + #pragma unroll + for(int j = 30 + I_; j >= 0; j--) { + y[j] = 1; + } + } + } + r = y; + } + return r; +} + +template +ap_ufixed exp10(ap_ufixed x) { + ap_fixed xf = x; + return exp10(xf); +} + +template +ap_int exp10(ap_int x) { + ap_fixed xf = x; + return exp10(xf); +} + +template +ap_uint exp10(ap_uint x) { + ap_fixed xf = x; + return exp10(xf); +} + +} +#endif + + diff --git a/vitis/v2020_1/hls_fft.h b/vitis/v2020_1/hls_fft.h new file mode 100644 index 00000000..f28a1329 --- /dev/null +++ b/vitis/v2020_1/hls_fft.h @@ -0,0 +1,915 @@ +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_FFT_H +#define X_HLS_FFT_H + +/* + * This file contains a C++ model of hls::fft. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + + +#include "ap_int.h" +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#include +#include "hls_stream.h" +#include "fft/xfft_v9_1_bitacc_cmodel.h" +#endif + +namespace hls { + +#ifdef AESL_SYN +#include "etc/autopilot_ssdm_op.h" +#endif + + namespace ip_fft { + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + + static const char* fftErrChkHead = "ERROR:hls::fft "; + + enum ordering {bit_reversed_order = 0, natural_order}; + enum scaling {scaled = 0, unscaled, block_floating_point}; + enum arch { + radix_4_burst_io = 1, radix_2_burst_io, + pipelined_streaming_io, radix_2_lite_burst_io + }; + enum rounding {truncation = 0, convergent_rounding}; + enum mem { block_ram = 0, distributed_ram }; + enum opt { + use_luts = 0, use_mults_resources, + use_mults_performance, use_xtremedsp_slices + }; + enum type { fixed_point = 0, floating_point }; + static const char* fft_data_format_str[] = {"fixed_point", "floating_point"}; + + struct params_t + { + static const unsigned input_width = 16; + static const unsigned output_width = 16; + static const unsigned status_width = 8; + static const unsigned config_width = 16; + static const unsigned max_nfft = 10; + + static const bool has_nfft = false; + static const unsigned channels = 1; + static const unsigned arch_opt = pipelined_streaming_io; + static const unsigned phase_factor_width = 16; + static const unsigned ordering_opt = bit_reversed_order; + static const bool ovflo = true; + static const unsigned scaling_opt = scaled; + static const unsigned rounding_opt = truncation; + static const unsigned mem_data = block_ram; + static const unsigned mem_phase_factors = block_ram; + static const unsigned mem_reorder = block_ram; + static const unsigned stages_block_ram = (max_nfft < 10) ? 0 : (max_nfft - 9); + static const bool mem_hybrid = false; + static const unsigned complex_mult_type = use_mults_resources; + static const unsigned butterfly_type = use_luts; + + //not supported params: + static const bool xk_index = false; + static const bool cyclic_prefix_insertion = false; + }; + + template + struct config_t + { + config_t() { + + } + + ap_uint data; + // Check CONFIG_T::config_width + INLINE void checkBitWidth(ip_fft::type data_type = ip_fft::fixed_point) + { +#ifndef AESL_SYN + const unsigned max_nfft = CONFIG_T::max_nfft; + const unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + const unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + const unsigned ch_bits = CONFIG_T::channels; + const unsigned arch = CONFIG_T::arch_opt; + const unsigned tmp_bits = (arch == unsigned(ip_fft::pipelined_streaming_io) || arch == unsigned(ip_fft::radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + //Temporarily set floating point type to always generate scaling due to bugs in FFT IP + const bool need_scaling = (data_type == ip_fft::floating_point) ? true : (CONFIG_T::scaling_opt == unsigned(ip_fft::scaled)); + const unsigned sch_bits = need_scaling ? tmp_bits : 0; + const unsigned config_bits = (sch_bits + ch_bits) * CONFIG_T::channels + cp_len_bits + nfft_bits; + const unsigned config_width = ((config_bits + 7) >> 3) << 3; // padding + if (CONFIG_T::config_width != config_width) + { + std::cerr << ip_fft::fftErrChkHead << "Config channel width = " << (int)CONFIG_T::config_width + << " is illegal." << std::endl; + std::cerr << "Correct width is " << config_width << ". Please refer to FFT IP in Vivado GUI for details" << std::endl; + exit(1); + } +#endif + } + + + INLINE void checkNfft(bool has_nfft) + { +#ifndef AESL_SYN + if (has_nfft == 0) + { + std::cerr << fftErrChkHead << "FFT_HAS_NFFT = false." + << " It's invalid to access NFFT field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void checkCpLen(bool cp_len_enable) + { +#ifndef AESL_SYN + if (cp_len_enable == 0) + { + std::cerr << fftErrChkHead << "FFT_CYCLIC_PREFIX_INSERTION = false." + << " It's invalid to access cp_len field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void checkSch(unsigned scaling_opt) + { +#ifndef AESL_SYN + if (scaling_opt != unsigned(scaled)) + { + std::cerr << fftErrChkHead << "FFT_SCALING != scaled." + << " It's invalid to access scaling_sch field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void setNfft(unsigned nfft) + { + //checkBitWidth(); + checkNfft(CONFIG_T::has_nfft); + data.range(7, 0) = nfft; + } + INLINE unsigned getNfft() + { + //checkBitWidth(); + checkNfft(CONFIG_T::has_nfft); + return data.range(7, 0); + } + INLINE unsigned getNfft() const + { + //checkBitWidth(); + checkNfft(CONFIG_T::has_nfft); + return data.range(7, 0); + } + + INLINE void setCpLen(unsigned cp_len) + { + //checkBitWidth(); + checkCpLen(CONFIG_T::cyclic_prefix_insertion); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + data.range(cp_len_bits+nfft_bits-1, nfft_bits) = cp_len; + } + INLINE unsigned getCpLen() + { + //checkBitWidth(); + checkCpLen(CONFIG_T::cyclic_prefix_insertion); + unsigned ret = 0; + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + ret = data.range(cp_len_bits+nfft_bits-1, nfft_bits); + return 0; + } + INLINE unsigned getCpLen() const + { + //checkBitWidth(); + checkCpLen(CONFIG_T::cyclic_prefix_insertion); + unsigned ret = 0; + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + ret = data.range(cp_len_bits+nfft_bits-1, nfft_bits); + return 0; + } + + INLINE void setDir(bool dir, unsigned ch = 0) + { + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + data.range(ch_bits*(ch+1)+ch_lo-1, ch_bits*ch+ch_lo) = dir; + } + INLINE unsigned getDir(unsigned ch = 0) + { + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + return data.range(ch_bits*(ch+1)+ch_lo-1, ch_bits*ch+ch_lo); + } + INLINE unsigned getDir(unsigned ch = 0) const + { + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + return data.range(ch_bits*(ch+1)+ch_lo-1, ch_bits*ch+ch_lo); + } + + INLINE void setSch(unsigned sch, unsigned ch = 0) + { + //checkBitWidth(); + checkSch(CONFIG_T::scaling_opt); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + unsigned arch = CONFIG_T::arch_opt; + unsigned tmp_bits = (arch == unsigned(pipelined_streaming_io) || arch == unsigned(radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + unsigned sch_bits = (CONFIG_T::scaling_opt == unsigned(scaled)) ? tmp_bits : 0; + unsigned sch_lo = ch_lo + CONFIG_T::channels * ch_bits; + data.range(sch_bits*(ch+1)+sch_lo-1, sch_bits*ch+sch_lo) = sch; + } + INLINE unsigned getSch(unsigned ch = 0) + { + //checkBitWidth(); + checkSch(CONFIG_T::scaling_opt); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + unsigned arch = CONFIG_T::arch_opt; + unsigned tmp_bits = (arch == unsigned(pipelined_streaming_io) || arch == unsigned(radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + unsigned sch_bits = (CONFIG_T::scaling_opt == unsigned(scaled)) ? tmp_bits : 0; + unsigned sch_lo = ch_lo + CONFIG_T::channels * ch_bits; + return data.range(sch_bits*(ch+1)+sch_lo-1, sch_bits*ch+sch_lo); + } + INLINE unsigned getSch(unsigned ch = 0) const + { + //checkBitWidth(); + checkSch(CONFIG_T::scaling_opt); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + unsigned arch = CONFIG_T::arch_opt; + unsigned tmp_bits = (arch == unsigned(pipelined_streaming_io) || arch == unsigned(radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + unsigned sch_bits = (CONFIG_T::scaling_opt == unsigned(scaled)) ? tmp_bits : 0; + unsigned sch_lo = ch_lo + CONFIG_T::channels * ch_bits; + return data.range(sch_bits*(ch+1)+sch_lo-1, sch_bits*ch+sch_lo); + } + }; + + template + struct status_t + { + typedef ap_uint status_data_t; + status_data_t data; + + + // Check CONFIG_T::status_width + INLINE void checkBitWidth() + { +#ifndef AESL_SYN + const bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(ip_fft::scaled)); + const unsigned blk_exp_bits = (CONFIG_T::scaling_opt == unsigned(ip_fft::block_floating_point)) ? 8 : 0; // padding to 8 bits + const unsigned ovflo_bits = has_ovflo ? 1 : 0; + const unsigned status_bits = (blk_exp_bits + ovflo_bits) * CONFIG_T::channels; + const unsigned status_width = (status_bits == 0) ? 8 : ((status_bits + 7) >> 3) << 3; // padding + if (CONFIG_T::status_width != status_width) + { + std::cerr << ip_fft::fftErrChkHead << "Status channel width = " << (int)CONFIG_T::status_width + << " is illegal." << std::endl; + exit(1); + } +#endif + } + + INLINE void checkBlkExp(unsigned scaling_opt) + { +#ifndef AESL_SYN + if (scaling_opt != unsigned(block_floating_point)) + { + std::cerr << fftErrChkHead << "FFT_SCALING != block_floating_point." + << " It's invalid to access BLK_EXP field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void checkOvflo(bool has_ovflo) + { +#ifndef AESL_SYN + if (!has_ovflo) + { + std::cerr << fftErrChkHead + << "Current configuration disables over flow field," + << " it's invalid to access OVFLO field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void setBlkExp(status_data_t exp) + { + checkBitWidth(); + checkBlkExp(CONFIG_T::scaling_opt); + data = exp; + } + INLINE unsigned getBlkExp(unsigned ch = 0) + { + checkBitWidth(); + unsigned blk_exp_bits = (CONFIG_T::scaling_opt == unsigned(block_floating_point)) ? 8 : 0; // padding to 8 bits + checkBlkExp(CONFIG_T::scaling_opt); + return data.range(blk_exp_bits*(ch+1)-1, blk_exp_bits*ch); + } + INLINE unsigned getBlkExp(unsigned ch = 0) const + { + checkBitWidth(); + unsigned blk_exp_bits = (CONFIG_T::scaling_opt == unsigned(block_floating_point)) ? 8 : 0; // padding to 8 bits + checkBlkExp(CONFIG_T::scaling_opt); + return data.range(blk_exp_bits*(ch+1)-1, blk_exp_bits*ch); + } + + INLINE void setOvflo(status_data_t ovflo) + { + checkBitWidth(); + bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(scaled)); + checkOvflo(has_ovflo); + data = ovflo; + } + INLINE unsigned getOvflo(unsigned ch = 0) + { + checkBitWidth(); + bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(scaled)); + unsigned ovflo_bits = has_ovflo ? 1 : 0; + checkOvflo(has_ovflo); + return data.range(ovflo_bits*(ch+1)-1, ovflo_bits*ch); + } + INLINE unsigned getOvflo(unsigned ch = 0) const + { + checkBitWidth(); + bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(scaled)); + unsigned ovflo_bits = has_ovflo ? 1 : 0; + checkOvflo(has_ovflo); + return data.range(ovflo_bits*(ch+1)-1, ovflo_bits*ch); + } + }; + + } // namespace hls::ip_fft + + using namespace std; + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + complex xn[FFT_CHANNELS][FFT_LENGTH], + complex xk[FFT_CHANNELS][FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN + + ////////////////////////////////////////////// + // C level synthesis models for hls::fft + ////////////////////////////////////////////// +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", 1 << CONFIG_T::max_nfft, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + for (int c = 0; c < FFT_CHANNELS; ++c) + { +#pragma HLS unroll complete + xk[c][i] = xn[c][i]; + } + } + + status->data = config_ch->getDir(); + +#else + + ////////////////////////////////////////////// + // C level simulation models for hls::fft + ////////////////////////////////////////////// + + // Declare the C model IO structures + xilinx_ip_xfft_v9_1_generics generics; + xilinx_ip_xfft_v9_1_state *state; + xilinx_ip_xfft_v9_1_inputs inputs; + xilinx_ip_xfft_v9_1_outputs outputs; + + // Log2 of FFT length + int fft_length = FFT_LENGTH; + int NFFT = 0; + if (CONFIG_T::has_nfft) + NFFT = config_ch->getNfft(); + else + NFFT = CONFIG_T::max_nfft; + + const int samples = 1 << NFFT; + + ///////////// IP parameters legality checking ///////////// + + // Check CONFIG_T::config_width + config_ch->checkBitWidth(FFT_DATA_FORMAT); + + // Check CONFIG_T::status_width + status->checkBitWidth(); + + // Check ip parameters + if (CONFIG_T::channels < 1 || CONFIG_T::channels > 12) + { + std::cerr << ip_fft::fftErrChkHead << "Channels = " << (int)CONFIG_T::channels + << " is illegal. It should be from 1 to 12." + << std::endl; + exit(1); + } + + if (CONFIG_T::max_nfft < 3 || CONFIG_T::max_nfft > 16) + { + std::cerr << ip_fft::fftErrChkHead << "NFFT_MAX = " << (int)CONFIG_T::max_nfft + << " is illegal. It should be from 3 to 16." + << std::endl; + exit(1); + } + + unsigned length = FFT_LENGTH; + if (!CONFIG_T::has_nfft) + { + if (FFT_LENGTH != (1 << CONFIG_T::max_nfft)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT_MAX when run-time configurable length is disabled." + << std::endl; + exit(1); + } + } + else if (length & (length - 1)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. It should be the integer power of 2." + << std::endl; + exit(1); + } + else if (NFFT < 3 || NFFT > 16) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should be from 3 to 16." + << std::endl; + exit(1); + } + else if (NFFT > CONFIG_T::max_nfft) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should be less than or equal to NFFT_MAX." + << std::endl; + exit(1); + } +#if 0 + else if (NFFT != config_ch->getNfft()) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT field of configure channel." + << std::endl; + exit(1); + } +#endif + + if ((FFT_INPUT_WIDTH < 8) || (FFT_INPUT_WIDTH > 40)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_INPUT_WIDTH = " << (int)FFT_INPUT_WIDTH + << " is illegal. It should be 8,16,24,32,40." + << std::endl; + exit(1); + } + + if (CONFIG_T::scaling_opt == ip_fft::unscaled && FFT_DATA_FORMAT != ip_fft::floating_point) + { + unsigned golden = FFT_INPUT_WIDTH + CONFIG_T::max_nfft + 1; + golden = ((golden + 7) >> 3) << 3; + if (FFT_OUTPUT_WIDTH != golden) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal with unscaled arithmetic. It should be input_width+nfft_max+1." + << std::endl; + exit(1); + } + } + else if (FFT_OUTPUT_WIDTH != FFT_INPUT_WIDTH) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal. It should be the same as input_width." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && CONFIG_T::arch_opt == ip_fft::pipelined_streaming_io) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels << " and FFT_ARCH = pipelined_streaming_io" + << " is illegal. pipelined_streaming_io architecture is not supported when channels is bigger than 1." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && FFT_DATA_FORMAT == ip_fft::floating_point) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels + << " is illegal with floating point data format. Floating point data format only supports 1 channel." + << std::endl; + exit(1); + } + + if (FFT_DATA_FORMAT == ip_fft::floating_point) + { + if (CONFIG_T::phase_factor_width != 24 && CONFIG_T::phase_factor_width != 25) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal with floating point data format. It should be 24 or 25." + << std::endl; + exit(1); + } + } + else if (CONFIG_T::phase_factor_width < 8 || CONFIG_T::phase_factor_width > 34) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal. It should be from 8 to 34." + << std::endl; + exit(1); + } + + ////////////////////////////////////////////////////////// + + // Build up the C model generics structure + generics.C_NFFT_MAX = CONFIG_T::max_nfft; + generics.C_ARCH = CONFIG_T::arch_opt; + generics.C_HAS_NFFT = CONFIG_T::has_nfft; + generics.C_INPUT_WIDTH = FFT_INPUT_WIDTH; + generics.C_TWIDDLE_WIDTH = CONFIG_T::phase_factor_width; + generics.C_HAS_SCALING = CONFIG_T::scaling_opt == ip_fft::unscaled ? 0 : 1; + generics.C_HAS_BFP = CONFIG_T::scaling_opt == ip_fft::block_floating_point ? 1 : 0; + generics.C_HAS_ROUNDING = CONFIG_T::rounding_opt; + generics.C_USE_FLT_PT = FFT_DATA_FORMAT == ip_fft::floating_point ? 1 : 0; + + // Create an FFT state object + state = xilinx_ip_xfft_v9_1_create_state(generics); + + int stages = 0; + if ((generics.C_ARCH == 2) || (generics.C_ARCH == 4)) // radix-2 + stages = NFFT; + else // radix-4 or radix-22 + stages = (NFFT+1)/2; + + double* xn_re = (double*) malloc(samples * sizeof(double)); + double* xn_im = (double*) malloc(samples * sizeof(double)); + int* scaling_sch = (int*) malloc(stages * sizeof(int)); + double* xk_re = (double*) malloc(samples * sizeof(double)); + double* xk_im = (double*) malloc(samples * sizeof(double)); + + // Check the memory was allocated successfully for all arrays + if (xn_re == NULL || xn_im == NULL || scaling_sch == NULL || xk_re == NULL || xk_im == NULL) + { + std::cerr << "Couldn't allocate memory for input and output data arrays - dying" << std::endl; + exit(3); + } + + ap_uint overflow = 0; + ap_uint blkexp = 0; + for (int c = 0; c < FFT_CHANNELS; ++c) + { + // Set pointers in input and output structures + inputs.xn_re = xn_re; + inputs.xn_im = xn_im; + inputs.scaling_sch = scaling_sch; + outputs.xk_re = xk_re; + outputs.xk_im = xk_im; + + // Store in inputs structure + inputs.nfft = NFFT; + // config data + inputs.direction = config_ch->getDir(c); + unsigned scaling = 0; + if (CONFIG_T::scaling_opt == ip_fft::scaled) + scaling = config_ch->getSch(c); + for (int i = 0; i < stages; i++) + { + inputs.scaling_sch[i] = scaling & 0x3; + scaling >>= 2; + } + inputs.scaling_sch_size = stages; + for (int i = 0; i < samples ; i++) + { + complex din = xn[c][i]; + inputs.xn_re[i] = (double)din.real(); + inputs.xn_im[i] = (double)din.imag(); +#ifdef _HLSCLIB_DEBUG_ + std::cout << "xn[" << c "][" << i << ": xn_re = " << inputs .xn_re[i] << + " xk_im = " << inputs.xn_im[i] << endl; +#endif + } + inputs.xn_re_size = samples; + inputs.xn_im_size = samples; + + // Set sizes of output structure arrays + outputs.xk_re_size = samples; + outputs.xk_im_size = samples; + + //#define DEBUG +#ifdef _HLSCLIB_DEBUG_ + /////////////////////////////////////////////////////////////////////////////// + /// Debug + std::cout << "About to call the C model with:" << std::endl; + std::cout << "Generics:" << std::endl; + std::cout << " C_NFFT_MAX = " << generics.C_NFFT_MAX << std::endl; + std::cout << " C_ARCH = " << generics.C_ARCH << std::endl; + std::cout << " C_HAS_NFFT = " << generics.C_HAS_NFFT << std::endl; + std::cout << " C_INPUT_WIDTH = " << generics.C_INPUT_WIDTH << std::endl; + std::cout << " C_TWIDDLE_WIDTH = " << generics.C_TWIDDLE_WIDTH << std::endl; + std::cout << " C_HAS_SCALING = " << generics.C_HAS_SCALING << std::endl; + std::cout << " C_HAS_BFP = " << generics.C_HAS_BFP << std::endl; + std::cout << " C_HAS_ROUNDING = " << generics.C_HAS_ROUNDING << std::endl; + std::cout << " C_USE_FLT_PT = " << generics.C_USE_FLT_PT << std::endl; + + std::cout << "Inputs structure:" << std::endl; + std::cout << " nfft = " << inputs.nfft << std::endl; + printf(" xn_re[0] = %e\n",inputs.xn_re[0]); + std::cout << " xn_re_size = " << inputs.xn_re_size << std::endl; + printf(" xn_im[0] = %e\n",inputs.xn_im[0]); + std::cout << " xn_im_size = " << inputs.xn_im_size << std::endl; + + for (int i = stages - 1; i >= 0; --i) + std::cout << " scaling_sch[" << i << "] = " << inputs.scaling_sch[i] << std::endl; + + std::cout << " scaling_sch_size = " << inputs.scaling_sch_size << std::endl; + std::cout << " direction = " << inputs.direction << std::endl; + + std::cout << "Outputs structure:" << std::endl; + std::cout << " xk_re_size = " << outputs.xk_re_size << std::endl; + std::cout << " xk_im_size = " << outputs.xk_im_size << std::endl; + + // Run the C model to generate output data + std::cout << "Running the C model..." << std::endl; + /////////////////////////////////////////////////////////////////////////////// +#endif + + int result = 0; + result = xilinx_ip_xfft_v9_1_bitacc_simulate(state, inputs, &outputs); + if (result != 0) + { + std::cerr << "An error occurred when simulating the FFT core: return code " << result << std::endl; + exit(4); + } + + // Output data + for (int i = 0; i < samples; i++) + { + complex dout; + unsigned addr_reverse = 0; + for (int k = 0; k < NFFT; ++k) + { + addr_reverse <<= 1; + addr_reverse |= (i >> k) & 0x1; + } + unsigned addr = i; + if (CONFIG_T::ordering_opt == ip_fft::bit_reversed_order) + addr = addr_reverse; + dout = complex (outputs.xk_re[addr], outputs.xk_im[addr]); + xk[c][i] = dout; +#ifdef _HLSCLIB_DEBUG_ + cout << "xk[" << c "][" << i << ": xk_re = " << outputs.xk_re[addr] << + " xk_im = " << outputs.xk_im[addr] << endl; +#endif + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + blkexp.range(c*8+7, c*8) = outputs.blk_exp; + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + overflow.range(c, c) = outputs.overflow; + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + status->setBlkExp(blkexp); + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + status->setOvflo(overflow); + + // Release memory used for input and output arrays + free(xn_re); + free(xn_im); + free(scaling_sch); + free(xk_re); + free(xk_im); + + // Destroy FFT state to free up memory + xilinx_ip_xfft_v9_1_destroy_state(state); +#endif + + } // End of fft_core + + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + complex xn[FFT_LENGTH], + complex xk[FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", FFT_LENGTH, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + xk[i] = xn[i]; + } + + status->data = config_ch->getDir(); + +#else + complex xn_multi_chan [1][FFT_LENGTH]; + complex xk_multi_chan [1][FFT_LENGTH]; + + for(int i=0; i< FFT_LENGTH; i++) + xn_multi_chan[0][i] = xn[i]; + + fft_core< + CONFIG_T, + FFT_INPUT_WIDTH, + FFT_OUTPUT_WIDTH, + FFT_INPUT_T, + FFT_OUTPUT_T, + FFT_LENGTH, + 1, + FFT_DATA_FORMAT + >(xn_multi_chan, xk_multi_chan, status, config_ch); + + for(int i=0; i< FFT_LENGTH; i++) + xk[i] = xk_multi_chan[0][i]; +#endif + } + + +} // namespace hls +#endif // __cplusplus + + +#include "hls_fft_x_complex.h" +#endif // X_HLS_FFT_H + + diff --git a/vitis/v2020_1/hls_fft_x_complex.h b/vitis/v2020_1/hls_fft_x_complex.h new file mode 100644 index 00000000..8006a71d --- /dev/null +++ b/vitis/v2020_1/hls_fft_x_complex.h @@ -0,0 +1,770 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_FFT_X_COMPLEX_H +#define X_HLS_FFT_X_COMPLEX_H + +/* + * This file contains a C++ model of hls::fft. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + + +#include "ap_int.h" +#include "hls_x_complex.h" +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#include +#include "hls_stream.h" +#include "fft/xfft_v9_1_bitacc_cmodel.h" +#endif + +namespace hls { + + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + hls::x_complex xn[FFT_CHANNELS][FFT_LENGTH], + hls::x_complex xk[FFT_CHANNELS][FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN + + ////////////////////////////////////////////// + // C level synthesis models for hls::fft + ////////////////////////////////////////////// +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", 1 << CONFIG_T::max_nfft, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + for (int c = 0; c < FFT_CHANNELS; ++c) + { +#pragma HLS unroll complete + xk[c][i] = xn[c][i]; + } + } + + status->data = config_ch->getDir(); + +#else + + ////////////////////////////////////////////// + // C level simulation models for hls::fft + ////////////////////////////////////////////// + + // Declare the C model IO structures + xilinx_ip_xfft_v9_1_generics generics; + xilinx_ip_xfft_v9_1_state *state; + xilinx_ip_xfft_v9_1_inputs inputs; + xilinx_ip_xfft_v9_1_outputs outputs; + + // Log2 of FFT length + int fft_length = FFT_LENGTH; + int NFFT = 0; + if (CONFIG_T::has_nfft) + NFFT = config_ch->getNfft(); + else + NFFT = CONFIG_T::max_nfft; + + const int samples = 1 << NFFT; + + ///////////// IP parameters legality checking ///////////// + + // Check CONFIG_T::config_width + config_ch->checkBitWidth(FFT_DATA_FORMAT); + + // Check CONFIG_T::status_width + status->checkBitWidth(); + + // Check ip parameters + if (CONFIG_T::channels < 1 || CONFIG_T::channels > 12) + { + std::cerr << ip_fft::fftErrChkHead << "Channels = " << (int)CONFIG_T::channels + << " is illegal. It should be from 1 to 12." + << std::endl; + exit(1); + } + + if (CONFIG_T::max_nfft < 3 || CONFIG_T::max_nfft > 16) + { + std::cerr << ip_fft::fftErrChkHead << "NFFT_MAX = " << (int)CONFIG_T::max_nfft + << " is illegal. It should be from 3 to 16." + << std::endl; + exit(1); + } + + unsigned length = FFT_LENGTH; + if (!CONFIG_T::has_nfft) + { + if (FFT_LENGTH != (1 << CONFIG_T::max_nfft)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT_MAX when run-time configurable length is disabled." + << std::endl; + exit(1); + } + } + else if (length & (length - 1)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. It should be the integer power of 2." + << std::endl; + exit(1); + } + else if (NFFT < 3 || NFFT > 16) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should be from 3 to 16." + << std::endl; + exit(1); + } + else if (NFFT > CONFIG_T::max_nfft) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should be less than or equal to NFFT_MAX." + << std::endl; + exit(1); + } +#if 0 + else if (NFFT != config_ch->getNfft()) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT field of configure channel." + << std::endl; + exit(1); + } +#endif + + if ((FFT_INPUT_WIDTH < 8) || (FFT_INPUT_WIDTH > 40)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_INPUT_WIDTH = " << (int)FFT_INPUT_WIDTH + << " is illegal. It should be 8,16,24,32,40." + << std::endl; + exit(1); + } + + if (CONFIG_T::scaling_opt == ip_fft::unscaled && FFT_DATA_FORMAT != ip_fft::floating_point) + { + unsigned golden = FFT_INPUT_WIDTH + CONFIG_T::max_nfft + 1; + golden = ((golden + 7) >> 3) << 3; + if (FFT_OUTPUT_WIDTH != golden) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal with unscaled arithmetic. It should be input_width+nfft_max+1." + << std::endl; + exit(1); + } + } + else if (FFT_OUTPUT_WIDTH != FFT_INPUT_WIDTH) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal. It should be the same as input_width." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && CONFIG_T::arch_opt == ip_fft::pipelined_streaming_io) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels << " and FFT_ARCH = pipelined_streaming_io" + << " is illegal. pipelined_streaming_io architecture is not supported when channels is bigger than 1." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && FFT_DATA_FORMAT == ip_fft::floating_point) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels + << " is illegal with floating point data format. Floating point data format only supports 1 channel." + << std::endl; + exit(1); + } + + if (FFT_DATA_FORMAT == ip_fft::floating_point) + { + if (CONFIG_T::phase_factor_width != 24 && CONFIG_T::phase_factor_width != 25) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal with floating point data format. It should be 24 or 25." + << std::endl; + exit(1); + } + } + else if (CONFIG_T::phase_factor_width < 8 || CONFIG_T::phase_factor_width > 34) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal. It should be from 8 to 34." + << std::endl; + exit(1); + } + + ////////////////////////////////////////////////////////// + + // Build up the C model generics structure + generics.C_NFFT_MAX = CONFIG_T::max_nfft; + generics.C_ARCH = CONFIG_T::arch_opt; + generics.C_HAS_NFFT = CONFIG_T::has_nfft; + generics.C_INPUT_WIDTH = FFT_INPUT_WIDTH; + generics.C_TWIDDLE_WIDTH = CONFIG_T::phase_factor_width; + generics.C_HAS_SCALING = CONFIG_T::scaling_opt == ip_fft::unscaled ? 0 : 1; + generics.C_HAS_BFP = CONFIG_T::scaling_opt == ip_fft::block_floating_point ? 1 : 0; + generics.C_HAS_ROUNDING = CONFIG_T::rounding_opt; + generics.C_USE_FLT_PT = FFT_DATA_FORMAT == ip_fft::floating_point ? 1 : 0; + + // Create an FFT state object + state = xilinx_ip_xfft_v9_1_create_state(generics); + + int stages = 0; + if ((generics.C_ARCH == 2) || (generics.C_ARCH == 4)) // radix-2 + stages = NFFT; + else // radix-4 or radix-22 + stages = (NFFT+1)/2; + + double* xn_re = (double*) malloc(samples * sizeof(double)); + double* xn_im = (double*) malloc(samples * sizeof(double)); + int* scaling_sch = (int*) malloc(stages * sizeof(int)); + double* xk_re = (double*) malloc(samples * sizeof(double)); + double* xk_im = (double*) malloc(samples * sizeof(double)); + + // Check the memory was allocated successfully for all arrays + if (xn_re == NULL || xn_im == NULL || scaling_sch == NULL || xk_re == NULL || xk_im == NULL) + { + std::cerr << "Couldn't allocate memory for input and output data arrays - dying" << std::endl; + exit(3); + } + + ap_uint overflow = 0; + ap_uint blkexp = 0; + for (int c = 0; c < FFT_CHANNELS; ++c) + { + // Set pointers in input and output structures + inputs.xn_re = xn_re; + inputs.xn_im = xn_im; + inputs.scaling_sch = scaling_sch; + outputs.xk_re = xk_re; + outputs.xk_im = xk_im; + + // Store in inputs structure + inputs.nfft = NFFT; + // config data + inputs.direction = config_ch->getDir(c); + unsigned scaling = 0; + if (CONFIG_T::scaling_opt == ip_fft::scaled) + scaling = config_ch->getSch(c); + for (int i = 0; i < stages; i++) + { + inputs.scaling_sch[i] = scaling & 0x3; + scaling >>= 2; + } + inputs.scaling_sch_size = stages; + for (int i = 0; i < samples ; i++) + { + hls::x_complex din = xn[c][i]; + inputs.xn_re[i] = (double)din.real(); + inputs.xn_im[i] = (double)din.imag(); +#ifdef _HLSCLIB_DEBUG_ + std::cout << "xn[" << c "][" << i << ": xn_re = " << inputs .xn_re[i] << + " xk_im = " << inputs.xn_im[i] << endl; +#endif + } + inputs.xn_re_size = samples; + inputs.xn_im_size = samples; + + // Set sizes of output structure arrays + outputs.xk_re_size = samples; + outputs.xk_im_size = samples; + + //#define DEBUG +#ifdef _HLSCLIB_DEBUG_ + /////////////////////////////////////////////////////////////////////////////// + /// Debug + std::cout << "About to call the C model with:" << std::endl; + std::cout << "Generics:" << std::endl; + std::cout << " C_NFFT_MAX = " << generics.C_NFFT_MAX << std::endl; + std::cout << " C_ARCH = " << generics.C_ARCH << std::endl; + std::cout << " C_HAS_NFFT = " << generics.C_HAS_NFFT << std::endl; + std::cout << " C_INPUT_WIDTH = " << generics.C_INPUT_WIDTH << std::endl; + std::cout << " C_TWIDDLE_WIDTH = " << generics.C_TWIDDLE_WIDTH << std::endl; + std::cout << " C_HAS_SCALING = " << generics.C_HAS_SCALING << std::endl; + std::cout << " C_HAS_BFP = " << generics.C_HAS_BFP << std::endl; + std::cout << " C_HAS_ROUNDING = " << generics.C_HAS_ROUNDING << std::endl; + std::cout << " C_USE_FLT_PT = " << generics.C_USE_FLT_PT << std::endl; + + std::cout << "Inputs structure:" << std::endl; + std::cout << " nfft = " << inputs.nfft << std::endl; + printf(" xn_re[0] = %e\n",inputs.xn_re[0]); + std::cout << " xn_re_size = " << inputs.xn_re_size << std::endl; + printf(" xn_im[0] = %e\n",inputs.xn_im[0]); + std::cout << " xn_im_size = " << inputs.xn_im_size << std::endl; + + for (int i = stages - 1; i >= 0; --i) + std::cout << " scaling_sch[" << i << "] = " << inputs.scaling_sch[i] << std::endl; + + std::cout << " scaling_sch_size = " << inputs.scaling_sch_size << std::endl; + std::cout << " direction = " << inputs.direction << std::endl; + + std::cout << "Outputs structure:" << std::endl; + std::cout << " xk_re_size = " << outputs.xk_re_size << std::endl; + std::cout << " xk_im_size = " << outputs.xk_im_size << std::endl; + + // Run the C model to generate output data + std::cout << "Running the C model..." << std::endl; + /////////////////////////////////////////////////////////////////////////////// +#endif + + int result = 0; + result = xilinx_ip_xfft_v9_1_bitacc_simulate(state, inputs, &outputs); + if (result != 0) + { + std::cerr << "An error occurred when simulating the FFT core: return code " << result << std::endl; + exit(4); + } + + // Output data + for (int i = 0; i < samples; i++) + { + hls::x_complex dout; + unsigned addr_reverse = 0; + for (int k = 0; k < NFFT; ++k) + { + addr_reverse <<= 1; + addr_reverse |= (i >> k) & 0x1; + } + unsigned addr = i; + if (CONFIG_T::ordering_opt == ip_fft::bit_reversed_order) + addr = addr_reverse; + dout = hls::x_complex (outputs.xk_re[addr], outputs.xk_im[addr]); + xk[c][i] = dout; +#ifdef _HLSCLIB_DEBUG_ + cout << "xk[" << c "][" << i << ": xk_re = " << outputs.xk_re[addr] << + " xk_im = " << outputs.xk_im[addr] << endl; +#endif + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + blkexp.range(c*8+7, c*8) = outputs.blk_exp; + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + overflow.range(c, c) = outputs.overflow; + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + status->setBlkExp(blkexp); + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + status->setOvflo(overflow); + + // Release memory used for input and output arrays + free(xn_re); + free(xn_im); + free(scaling_sch); + free(xk_re); + free(xk_im); + + // Destroy FFT state to free up memory + xilinx_ip_xfft_v9_1_destroy_state(state); +#endif + + } // End of fft_core + + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + hls::x_complex xn[FFT_LENGTH], + hls::x_complex xk[FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", FFT_LENGTH, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + xk[i] = xn[i]; + } + + status->data = config_ch->getDir(); + +#else + hls::x_complex xn_multi_chan [1][FFT_LENGTH]; + hls::x_complex xk_multi_chan [1][FFT_LENGTH]; + + for(int i=0; i< FFT_LENGTH; i++) + xn_multi_chan[0][i] = xn[i]; + + fft_core< + CONFIG_T, + FFT_INPUT_WIDTH, + FFT_OUTPUT_WIDTH, + FFT_INPUT_T, + FFT_OUTPUT_T, + FFT_LENGTH, + 1, + FFT_DATA_FORMAT + >(xn_multi_chan, xk_multi_chan, status, config_ch); + + for(int i=0; i< FFT_LENGTH; i++) + xk[i] = xk_multi_chan[0][i]; +#endif + } + + // 1-channel, fixed-point + template< + typename CONFIG_T + > + void fft( + complex > xn[1 << CONFIG_T::max_nfft], + complex > xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + + } // End of 1-channel, fixed-point + + // Multi-channels, fixed-point + template< + typename CONFIG_T + > + void fft( + complex > xn[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + complex > xk[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + //#if (FFT_CHANNELS > 1) +#pragma HLS array_reshape dim=1 variable=xn +#pragma HLS array_reshape dim=1 variable=xk + //#endif + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + CONFIG_T::channels, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + } // End of multi-channels, fixed-point + + // 1-channel, floating-point + template< + typename CONFIG_T + > + void fft( + complex xn[1 << CONFIG_T::max_nfft], + complex xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk +#pragma HLS data_pack variable=config_ch +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + fft_core< + CONFIG_T, + 32, + 32, + float, + float, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::floating_point + >(xn, xk, status, config_ch); + } // End of 1-channel, floating-point + + + + // 1-channel, fixed-point + template< + typename CONFIG_T + > + void fft( + hls::x_complex > xn[1 << CONFIG_T::max_nfft], + hls::x_complex > xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + + } // End of 1-channel, fixed-point + + // Multi-channels, fixed-point + template< + typename CONFIG_T + > + void fft( + hls::x_complex > xn[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + hls::x_complex > xk[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + //#if (FFT_CHANNELS > 1) +#pragma HLS array_reshape dim=1 variable=xn +#pragma HLS array_reshape dim=1 variable=xk + //#endif + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + CONFIG_T::channels, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + } // End of multi-channels, fixed-point + + // 1-channel, floating-point + template< + typename CONFIG_T + > + void fft( + hls::x_complex xn[1 << CONFIG_T::max_nfft], + hls::x_complex xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk +#pragma HLS data_pack variable=config_ch +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + fft_core< + CONFIG_T, + 32, + 32, + float, + float, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::floating_point + >(xn, xk, status, config_ch); + } // End of 1-channel, floating-point + +} // namespace hls +#endif // __cplusplus +#endif // X_HLS_FFT_X_COMPLEX_H + + diff --git a/vitis/v2020_1/hls_fir.h b/vitis/v2020_1/hls_fir.h new file mode 100644 index 00000000..45557449 --- /dev/null +++ b/vitis/v2020_1/hls_fir.h @@ -0,0 +1,683 @@ +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_FIR_H +#define X_HLS_FIR_H + +/* + * This file contains a C++ model of hls::fir. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#include "ap_int.h" +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#ifndef __SYNTHESIS__ +#include +#include "fir/fir_compiler_v7_2_bitacc_cmodel.h" +#endif +#endif + +#include + +namespace hls { + +#ifdef AESL_SYN +#include "etc/autopilot_ssdm_op.h" +#endif + +namespace ip_fir { + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + +static const char* firErrChkHead = "ERROR:hls::fir "; + +enum filter_type {single_rate = 0, interpolation, decimation, hilbert_filter, interpolated}; +static const char* fir_filter_type_str[] = { + "single_rate", "interpolation", + "decimation", "hilbert", "interpolated" +}; + +enum rate_change_type {integer = 0, fixed_fractional}; +static const char* fir_rate_change_type_str[] = { + "integer", "fixed_fractional" +}; + +enum chan_seq {basic = 0, advanced}; +static const char* fir_channel_sequence_str[] = { + "basic", "advanced" +}; + +enum rate_specification {frequency = 0, input_period, output_period}; +static const char* fir_ratespecification_str[] = { + "frequency_specification", "input_sample_period", "output_sample_period" +}; + +enum value_sign {value_signed = 0, value_unsigned}; +static const char* fir_value_sign_str[] = {"signed", "unsigned"}; + +enum quantization {integer_coefficients = 0, quantize_only, maximize_dynamic_range}; +static const char* fir_quantization_str[] = { + "integer_coefficients", "quantize_only", "maximize_dynamic_range" +}; + +enum coeff_structure {inferred = 0, non_symmetric, symmetric, negative_symmetric, half_band, hilbert}; +static const char* fir_coeff_struct_str[] = { + "inferred", "non_symmetric", "symmetric", + "negative_symmetric", "half_band", "hilbert" +}; + +enum output_rounding_mode {full_precision = 0, truncate_lsbs, non_symmetric_rounding_down, + non_symmetric_rounding_up, symmetric_rounding_to_zero, + symmetric_rounding_to_infinity, convergent_rounding_to_even, + convergent_rounding_to_odd}; +static const char* fir_output_rounding_mode_str[] = { + "full_precision", "truncate_lsbs", "non_symmetric_rounding_down", + "non_symmetric_rounding_up", "symmetric_rounding_to_zero", + "symmetric_rounding_to_infinity", "convergent_rounding_to_even", + "convergent_rounding_to_odd" +}; + +enum filter_arch {systolic_multiply_accumulate = 0, transpose_multiply_accumulate}; +static const char* fir_filter_arch_str[] = { + "systolic_multiply_accumulate", "transpose_multiply_accumulate" +}; + +enum optimization_goal {area = 0, speed}; +static const char* fir_opt_goal_str[] = {"area", "speed"}; + +enum config_sync_mode {on_vector = 0, on_packet}; +static const char* fir_s_config_sync_mode_str[] = {"on_vector", "on_packet"}; + +enum config_method {single = 0, by_channel}; +static const char* fir_s_config_method_str[] = {"single", "by_channel"}; + +struct params_t { + static const unsigned input_width = 16; + static const unsigned input_fractional_bits = 0; + static const unsigned output_width = 24; + static const unsigned output_fractional_bits = 0; + static const unsigned coeff_width = 16; + static const unsigned coeff_fractional_bits = 0; + static const unsigned config_width = 8; + static const unsigned num_coeffs = 21; + static const unsigned coeff_sets = 1; + static const unsigned input_length = num_coeffs; + static const unsigned output_length = num_coeffs; + static const unsigned num_channels = 1; + + static const unsigned total_num_coeff = num_coeffs * coeff_sets; + static const double coeff_vec[total_num_coeff]; + static const bool reloadable = false; + static const unsigned filter_type = single_rate; + static const unsigned rate_change = integer; + static const unsigned interp_rate = 1; + static const unsigned decim_rate = 1; + static const unsigned zero_pack_factor = 1; + static const unsigned chan_seq = basic; + static const unsigned rate_specification = input_period; + static const unsigned sample_period = 1; +#ifndef __GXX_EXPERIMENTAL_CXX0X__ + static const double sample_frequency = 0.001; +#else + static constexpr double sample_frequency = 0.001; +#endif + static const unsigned quantization = integer_coefficients; + static const bool best_precision = false; + static const unsigned coeff_structure = non_symmetric; + static const unsigned output_rounding_mode = full_precision; + static const unsigned filter_arch = systolic_multiply_accumulate; + static const unsigned optimization_goal = area; + static const unsigned inter_column_pipe_length = 4; + static const unsigned column_config = 1; + static const unsigned config_sync_mode = on_vector; + static const unsigned config_method = single; + static const unsigned coeff_padding = 0; + + static const unsigned num_paths = 1; + static const unsigned data_sign = value_signed; + static const unsigned coeff_sign = value_signed; +}; + +#ifndef AESL_SYN +//--------------------------------------------------------------------------------------------------------------------- +// Example message handler +static void msg_print(void* handle, int error, const char* msg) +{ + printf("%s\n",msg); +} +#endif +} // namespace hls::ip_fir + +using namespace std; + +template +class FIR { +private: + static const unsigned input_axi_width = ((CONFIG_T::input_width+7)>>3)<<3; + static const unsigned output_axi_width = ((CONFIG_T::output_width+7)>>3)<<3; + static const unsigned coeff_axi_width = ((CONFIG_T::coeff_width+7)>>3)<<3; + + typedef ap_fixed in_data_t; + typedef ap_fixed out_data_t; + typedef ap_uint config_t; + typedef ap_fixed coeff_t; + +#ifndef AESL_SYN + //// Define array helper functions for types used + //DEFINE_XIP_ARRAY(real); + //DEFINE_XIP_ARRAY(complex); + //DEFINE_XIP_ARRAY(uint); + //DEFINE_XIP_ARRAY(mpz); + //DEFINE_XIP_ARRAY(mpz_complex); + + //DEFINE_FIR_XIP_ARRAY(real); + //DEFINE_FIR_XIP_ARRAY(mpz); + //DEFINE_FIR_XIP_ARRAY(mpz_complex); + + xip_fir_v7_2* mFIR; +#endif + +#ifndef AESL_SYN + void printConfig(const xip_fir_v7_2_config* cfg) + { + printf("Configuration of %s:\n",cfg->name); + printf("\tFilter : "); + if (cfg->filter_type == hls::ip_fir::single_rate || + cfg->filter_type == hls::ip_fir::hilbert_filter ) { + printf("%s\n",hls::ip_fir::fir_filter_type_str[cfg->filter_type]); + } else if ( cfg->filter_type == hls::ip_fir::interpolation ) { + printf("%s by %d\n",hls::ip_fir::fir_filter_type_str[cfg->filter_type],cfg->zero_pack_factor); + } else { + printf("%s up by %d down by %d\n",hls::ip_fir::fir_filter_type_str[cfg->filter_type],cfg->interp_rate,cfg->decim_rate); + } + printf("\tCoefficients : %d ",cfg->coeff_sets); + if ( cfg->is_halfband ) { + printf("Halfband "); + } + if (cfg->reloadable) { + printf("Reloadable "); + } + printf("coefficient set(s) of %d taps\n",cfg->num_coeffs); + printf("\tData : %d path(s) of %d %s channel(s)\n",cfg->num_paths,cfg->num_channels,hls::ip_fir::fir_channel_sequence_str[cfg->chan_seq]); + } + + void gen_ip_inst() + { + + xip_fir_v7_2_config fir_cnfg; + fir_cnfg.name = "fir_compiler"; + + fir_cnfg.coeff = &CONFIG_T::coeff_vec[0]; + fir_cnfg.filter_type = CONFIG_T::filter_type; + fir_cnfg.rate_change = CONFIG_T::rate_change; + fir_cnfg.interp_rate = CONFIG_T::interp_rate; + fir_cnfg.decim_rate = CONFIG_T::decim_rate; + fir_cnfg.zero_pack_factor = CONFIG_T::zero_pack_factor; + fir_cnfg.num_channels = CONFIG_T::num_channels; + fir_cnfg.coeff_sets = CONFIG_T::coeff_sets; + fir_cnfg.num_coeffs = CONFIG_T::num_coeffs; + fir_cnfg.reloadable = CONFIG_T::reloadable; + fir_cnfg.quantization = CONFIG_T::quantization; + fir_cnfg.coeff_width = CONFIG_T::coeff_width; + fir_cnfg.coeff_fract_width = CONFIG_T::coeff_fractional_bits; + fir_cnfg.chan_seq = CONFIG_T::chan_seq; + fir_cnfg.data_width = CONFIG_T::input_width; + fir_cnfg.data_fract_width = CONFIG_T::input_fractional_bits; + fir_cnfg.output_rounding_mode = CONFIG_T::output_rounding_mode; + fir_cnfg.output_width = CONFIG_T::output_width; + fir_cnfg.output_fract_width = CONFIG_T::output_fractional_bits; + fir_cnfg.config_method = CONFIG_T::config_method; + fir_cnfg.coeff_padding = CONFIG_T::coeff_padding; + fir_cnfg.is_halfband = (CONFIG_T::coeff_structure == ip_fir::half_band); + + //FIXME: doesn't support the following params + fir_cnfg.init_pattern = P4_3; + fir_cnfg.num_paths = 1; + + //Create filter instances + mFIR = xip_fir_v7_2_create(&fir_cnfg, &ip_fir::msg_print, 0); + if (!mFIR) { + printf("Error creating instance %s\n",fir_cnfg.name); + return; + } + + #ifdef _HLSCLIB_DEBUG_ + printConfig(&fir_cnfg); + #endif + } +#endif + + void insert_spec() { +#ifdef AESL_SYN + #pragma HLS inline + _ssdm_op_SpecKeepValue( + //"component_name", "fir_compiler_0", + "gui_behaviour", "Coregen", + "coefficientsource", "Vector", + "coefficientvector", CONFIG_T::coeff_vec, + "coefficient_file", "no_coe_file_loaded", + "coefficient_sets", CONFIG_T::coeff_sets, + "coefficient_reload", CONFIG_T::reloadable, + "filter_type", CONFIG_T::filter_type, + "rate_change_type", CONFIG_T::rate_change, + "interpolation_rate", CONFIG_T::interp_rate, + "decimation_rate", CONFIG_T::decim_rate, + "zero_pack_factor", CONFIG_T::zero_pack_factor, + "channel_sequence", CONFIG_T::chan_seq, + "number_channels", CONFIG_T::num_channels, + "select_pattern", "All", + "pattern_list", "P4-0,P4-1,P4-2,P4-3,P4-4", + "number_paths", CONFIG_T::num_paths, + "ratespecification", CONFIG_T::rate_specification, + "sampleperiod", CONFIG_T::sample_period, + "sample_frequency", CONFIG_T::sample_frequency, + "clock_frequency", "300.0", + "coefficient_sign", CONFIG_T::coeff_sign, + "quantization", CONFIG_T::quantization, + "coefficient_width", CONFIG_T::coeff_width, + "bestprecision", CONFIG_T::best_precision, + "coefficient_fractional_bits", CONFIG_T::coeff_fractional_bits, + "coefficient_structure", CONFIG_T::coeff_structure, + "data_sign", CONFIG_T::data_sign, + "data_width", CONFIG_T::input_width, + "data_fractional_bits", CONFIG_T::input_fractional_bits, + "output_rounding_mode", CONFIG_T::output_rounding_mode, + "output_width", CONFIG_T::output_width, + "filter_architecture", CONFIG_T::filter_arch, + "optimization_goal", CONFIG_T::optimization_goal, + "optimization_selection", "None", + "optimization_list", "None", + "data_buffer_type", "Automatic", + "coefficient_buffer_type", "Automatic", + "input_buffer_type", "Automatic", + "output_buffer_type", "Automatic", + "preference_for_other_storage", "Automatic", + "multi_column_support", "Automatic", + "inter_column_pipe_length", CONFIG_T::inter_column_pipe_length, + "columnconfig", CONFIG_T::column_config, + "data_has_tlast", "Packet_Framing", + "m_data_has_tready", "true", + "s_data_has_fifo", "true", + "s_data_has_tuser", "Not_Required", + "m_data_has_tuser", "Not_Required", + "data_tuser_width", "1", + "s_config_sync_mode", CONFIG_T::config_sync_mode, + "s_config_method", CONFIG_T::config_method, + "num_reload_slots", "1", + "has_aclken", "true", + "has_aresetn", "true", + "reset_data_vector", "true", + "gen_mif_from_spec", "false", + "gen_mif_from_coe", "false", + "reload_file", "no_coe_file_loaded", + "gen_mif_files", "false", + "displayreloadorder", "false", + "passband_min", "0.0", + "passband_max", "0.5", + "stopband_min", "0.5", + "stopband_max", "1.0", + "filter_selection", "1" + ); +#endif + } + + +#ifndef AESL_SYN + enum sim_mode_t {dataonly, configonly, reloadable}; + + void run_sim ( + in_data_t in[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config[CONFIG_T::num_channels], + coeff_t reload[CONFIG_T::num_coeffs + ((CONFIG_T::coeff_sets == 1) ? 0 : 1)], + sim_mode_t mode) + { + ////////////////////////////////////////////// + // C level simulation models for hls::fir + ////////////////////////////////////////////// + // Create input data packet + xip_array_real* din = xip_array_real_create(); + xip_array_real_reserve_dim(din,3); + din->dim_size = 3; // 3D array + din->dim[0] = 1; + din->dim[1] = CONFIG_T::num_channels; + din->dim[2] = CONFIG_T::input_length; + din->data_size = din->dim[0] * din->dim[1] * din->dim[2]; + if (xip_array_real_reserve_data(din,din->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve data!\n"); + return; + } + + // Create output data packet + // - Automatically sized using xip_fir_v7_2_calc_size + xip_array_real* fir_out = xip_array_real_create(); + xip_array_real_reserve_dim(fir_out,3); + fir_out->dim_size = 3; // 3D array + + if(xip_fir_v7_2_calc_size(mFIR,din,fir_out,0)== XIP_STATUS_OK) { + if (xip_array_real_reserve_data(fir_out,fir_out->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve data!\n"); + return; + } + } else { + printf("Unable to calculate output date size\n"); + return; + } + + //FIXME: check and promote msg + assert(fir_out->data_size == CONFIG_T::output_length * CONFIG_T::num_channels); + + // Populate data in with an impulse + // FIXME: assume path=1 and chan = 1 + for (unsigned idx = 0; idx < CONFIG_T::input_length; ++idx) + { + for (unsigned chan = 0; chan < CONFIG_T::num_channels; ++chan) + xip_fir_v7_2_xip_array_real_set_chan(din, in[idx * CONFIG_T::num_channels + chan], 0, chan, idx, P_BASIC); + } + + //#define DEBUG + #ifdef _HLSCLIB_DEBUG_ + std::cout << "s_sata" << std::endl; + for (int i=0; i< din->data_size; i++) + std::cout << " " << din->data[i] ; + std::cout << std::endl; + #endif + + // send new configuration + xip_array_uint* fsel = 0; + if ((mode == configonly) || (mode == reloadable)) + { + assert(CONFIG_T::coeff_sets > 1 || CONFIG_T::reloadable); + // Create config packet + xip_array_uint* fsel = xip_array_uint_create(); + xip_array_uint_reserve_dim(fsel,1); + fsel->dim_size = 1; + fsel->dim[0] = CONFIG_T::num_channels; + fsel->data_size = fsel->dim[0]; + if (xip_array_uint_reserve_data(fsel,fsel->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve data!\n"); + return; + } + + xip_fir_v7_2_cnfg_packet cnfg; + cnfg.fsel = fsel; + for (unsigned i = 0; i < cnfg.fsel->data_size; ++i) + cnfg.fsel->data[i] = config[i].to_int(); + + // Send config data + if (xip_fir_v7_2_config_send(mFIR, &cnfg) != XIP_STATUS_OK) { + printf("Error sending config packet\n"); + return; + } + + #ifdef _HLSCLIB_DEBUG_ + std::cout << "Config packet: " ; + for (int i = 0; i < cnfg.fsel->data_size; ++i) + std::cout << " " << cnfg.fsel->data[i]; + std::cout << std::endl; + #endif + } + + xip_fir_v7_2_rld_packet rld; + // send reloaded coefficients + if (mode == reloadable) + { + assert(CONFIG_T::reloadable); + if (CONFIG_T::coeff_sets == 1) + rld.fsel = 0; + else + rld.fsel = reload[0]; + rld.coeff = xip_array_real_create(); + xip_array_real_reserve_dim(rld.coeff,1); + rld.coeff->dim_size=1; + rld.coeff->dim[0]=CONFIG_T::num_coeffs; + rld.coeff->data_size = rld.coeff->dim[0]; + if (xip_array_real_reserve_data(rld.coeff,rld.coeff->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve coeff!\n"); + return; + } + + // Copy coefficients into reload packet + int coeff_i; + bool isAllZero = true; + int coeff_offset = (CONFIG_T::coeff_sets == 1) ? 0 : 1; + for (coeff_i= 0; coeff_i < CONFIG_T::num_coeffs; coeff_i++) { + rld.coeff->data[coeff_i] = (xip_real)(reload[coeff_i + coeff_offset]); + isAllZero &= (reload[coeff_i] == 0); + } + + // Send reload data + if (!isAllZero) { + if ( xip_fir_v7_2_reload_send(mFIR, &rld) != XIP_STATUS_OK) { + printf("Error sending reload packet\n"); + return; + } + + #ifdef _HLSCLIB_DEBUG_ + std::cout << "Reload packet: "; + if (CONFIG_T::coeff_sets > 1) + std::cout << "fsel = " << rld.fsel << "\t; new coeff : "; + for (int i = 0; i < rld.coeff->data_size; ++i) + std::cout << " " << rld.coeff->data[i]; + std::cout << std::endl; + #endif + } + } + + // Send input data and filter + if ( xip_fir_v7_2_data_send(mFIR,din)!= XIP_STATUS_OK) { + printf("Error sending data\n"); + return; + } + + // Retrieve filtered data + if (xip_fir_v7_2_data_get(mFIR,fir_out,0) != XIP_STATUS_OK) { + printf("Error getting data\n"); + return; + } + + // FIXME: assume path=1 and chan = 1 + for (unsigned idx = 0; idx < CONFIG_T::output_length; ++idx) + { + for (unsigned chan = 0; chan < CONFIG_T::num_channels; ++chan) + { + xip_real val; + xip_fir_v7_2_xip_array_real_get_chan(fir_out, &val, 0, chan, idx, P_BASIC); + out[idx * CONFIG_T::num_channels+ chan] = (out_data_t)val; + } + } + + //DEBUG + #ifdef _HLSCLIB_DEBUG_ + std::cout << "m_sata" << std::endl; + for (int i=0; i< fir_out->data_size; i++) + std::cout << " " << fir_out->data[i] ; + std::cout << std::endl; + #endif + + xip_array_real_destroy(din); + xip_array_real_destroy(fir_out); + if (fsel) xip_array_uint_destroy(fsel); + if (mode == reloadable) xip_array_real_destroy(rld.coeff); + } +#endif + + public: + FIR() +#ifndef AESL_SYN + : mFIR(0) +#endif + { +#ifndef AESL_SYN + gen_ip_inst(); +#endif + } + + ~FIR() + { + #ifdef AESL_SYN + #pragma HLS inline + #else + xip_fir_v7_2_destroy(mFIR); + #endif + } + + void run( + in_data_t in[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out[CONFIG_T::output_length * CONFIG_T::num_channels] + ) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::fir + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_FIR" variable=return metadata="parameterizable" + //#pragma HLS function INSTANTIATE variable=mConfigParams + #pragma HLS interface ap_fifo port=in + #pragma HLS interface ap_fifo port=out + #pragma HLS data_pack variable=in + #pragma HLS data_pack variable=out + + insert_spec(); + for (int i = 0; i < CONFIG_T::input_length; ++i) + out[i] = in[i]; + + #else + coeff_t reload_coeff[CONFIG_T::num_coeffs]; + for (unsigned int i = 0; i < CONFIG_T::num_coeffs; i++) + reload_coeff[i] = 0; + config_t config[CONFIG_T::num_channels] = {0}; + run_sim(in, out, config, reload_coeff, dataonly); + #endif + } + + void run( + in_data_t in[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config[CONFIG_T::num_channels]) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::fir + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_FIR" variable=return metadata="parameterizable" + //#pragma HLS function INSTANTIATE variable=mConfigParams + #pragma HLS interface ap_fifo port=in + #pragma HLS interface ap_fifo port=out + #pragma HLS interface ap_fifo port=config + #pragma HLS data_pack variable=in + #pragma HLS data_pack variable=out + + insert_spec(); + if (*config) + for (int i = 0; i < CONFIG_T::input_length; ++i) + out[i] = in[i]; + + #else + coeff_t reload_coeff[CONFIG_T::num_coeffs]; + for (unsigned int i = 0; i < CONFIG_T::num_coeffs; i++) + reload_coeff[i] = 0; + run_sim(in, out, config, reload_coeff, configonly); + #endif + } + + + void run( + in_data_t in[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config[CONFIG_T::num_channels], + coeff_t reload[CONFIG_T::num_coeffs + ((CONFIG_T::coeff_sets == 1) ? 0 : 1)]) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::fir + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_FIR" variable=return metadata="parameterizable" + //#pragma HLS function INSTANTIATE variable=mConfigParams + #pragma HLS interface ap_fifo port=in + #pragma HLS interface ap_fifo port=out + #pragma HLS interface ap_fifo port=config + #pragma HLS interface ap_fifo port=reload + #pragma HLS data_pack variable=in + #pragma HLS data_pack variable=out + + insert_spec(); + if (*config) + for (int i = 0; i < CONFIG_T::input_length; ++i) + out[i] = in[i] + reload[i & CONFIG_T::num_coeffs]; + #else + run_sim(in, out, config, reload, reloadable); + #endif + } + + +}; +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_FIR_H + + diff --git a/vitis/v2020_1/hls_fmod_rem_quo_remainder_divide_apfixed.h b/vitis/v2020_1/hls_fmod_rem_quo_remainder_divide_apfixed.h new file mode 100644 index 00000000..ceccbc1f --- /dev/null +++ b/vitis/v2020_1/hls_fmod_rem_quo_remainder_divide_apfixed.h @@ -0,0 +1,230 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2016 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_fmod_rem_quo.h + * + */ +#ifndef _X_HLS_FMOD_REM_QUO_H_ +#define _X_HLS_FMOD_REM_QUO_H_ + +#include "ap_int.h" +#include "ap_fixed.h" +#include "hls_round_copysign_apfixed.h" + +namespace hls_internal{ + //divide for ap_fixed numerator and denominator + template + ap_fixed generic_divide(ap_fixed x, ap_fixed y){ + if(y==0){//case y==0, return error and stop + #ifndef __SYNTHESIS__ + printf("ERROR:hls_math.h:divisor cannot be zero"); + exit(1); + #else + return 0; + #endif + } else{ + return(x/y); + } + } + //divide for ap_ufixed numerator and denominator + template + ap_ufixed generic_divide(ap_ufixed x, ap_ufixed y){ + ap_fixed x1 = x; + ap_fixed y1 = y; + return generic_divide(x1,y1); + } + //divide for ap_int + template + ap_int generic_divide(ap_int x, ap_int y){ + ap_fixed x1 = x; + ap_fixed y1 = y; + return generic_divide(x1,y1); + } + //divide for ap_uint + template + ap_uint generic_divide(ap_uint x, ap_uint y){ + ap_ufixed x1 = x; + ap_ufixed y1 = y; + return generic_divide(x1,y1); + } + //fmod for ap_fixed + template + ap_fixed generic_fmod(ap_fixed x, ap_fixed y){ + ap_ufixed x_pos = fabs_fixed((ap_fixed)x); + ap_ufixed y_pos = fabs_fixed((ap_fixed)y); + //std::cout<<"x_pos"< x_int = 0; + ap_uint y_int = 0; + x_int(W_-1,0) = x_pos(W_-1,0); + y_int(W_-1,0) = y_pos(W_-1,0); + //use less resource + //for(int i = 0; i < W_; ++i) { + // if(x_int > y_int) { + // x_int -= y_int; + // } + //} + ap_uint d = x_int/y_int; + //std::cout<<"d="< rem = x_int - d*y_int; + //std::cout<<"rem="< r = 0; + r(W_-1,0) = rem(W_-1,0); + if(x[W_-1]) return -r; + else return r; + } + } + + //fmod for ap_ufixed + template + ap_ufixed generic_fmod(ap_ufixed x, ap_ufixed y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_fmod(xi,yi); + } + //fmod for ap_int + template + ap_int generic_fmod(ap_int x, ap_int y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_fmod(xi,yi); + } + //fmod for ap_uint + template + ap_uint generic_fmod(ap_uint x, ap_uint y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_fmod(xi,yi); + } + + //remquo for ap_fixed + template + ap_fixed generic_remquo(ap_fixed x, ap_fixed y, int* quo){ + ap_ufixed x_pos = fabs_fixed((ap_fixed)x); + ap_ufixed y_pos = fabs_fixed((ap_fixed)y); + if(x_pos==0 || y_pos==0) { + *quo = 0; + return 0; + } else if(x_pos == y_pos) { + if(x[W_-1]==y[W_-1]) *quo = 1; + else *quo = -1; + return 0; + } + //else if(x_pos < y_pos) return x; + else { + ap_uint x_int = 0; + ap_uint y_int = 0; + x_int(W_-1,0) = x_pos(W_-1,0); + y_int(W_-1,0) = y_pos(W_-1,0); + //for(int i = 0; i < W_; ++i) { + // if(x_int > y_int) { + // x_int -= y_int; + // } + //} + ap_uint d = x_int/y_int; + ap_uint rem = x_int - d*y_int; + //adjust the result + ap_uint y_half = 0; + y_half(W_-2,0) = y_int(W_-1,1); + ap_uint<1> r_sig = x[W_-1]; + if(rem > y_half) { + rem = y_int - rem; + d++; + if(x[W_-1]) r_sig = 0; + else r_sig = 1; + } + //return the results + if(x[W_-1]==y[W_-1]) *quo = d; + else *quo = -d; + ap_fixed r = 0; + r(W_-1,0) = rem(W_-1,0); + if(r_sig) return -r; + else return r; + } + } + //, y, quoremquo for ap_ufixed + template + ap_ufixed generic_remquo(ap_ufixed x, ap_ufixed y, int* quo){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remquo(xi,yi,quo); + } + //remquo for ap_int + template + ap_int generic_remquo(ap_int x, ap_int y, int* quo){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remquo(xi,yi,quo); + } + //remquo for ap_uint + template + ap_uint generic_remquo(ap_uint x, ap_uint y, int* quo){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remquo(xi,yi,quo); + } + + //remainder for ap_fixed + template + ap_fixed generic_remainder(ap_fixed x, ap_fixed y){ + int quo = 0; + return generic_remquo(x, y, &quo); + } + //remainder for ap_ufixed + template + ap_ufixed generic_remainder(ap_ufixed x, ap_ufixed y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remainder(xi,yi); + } + //remainder for ap_int + template + ap_int generic_remainder(ap_int x, ap_int y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remainder(xi,yi); + } + //remainder for ap_uint + template + ap_uint generic_remainder(ap_uint x, ap_uint y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remainder(xi,yi); + } +} +#endif // entire file + diff --git a/vitis/v2020_1/hls_fpo.h b/vitis/v2020_1/hls_fpo.h new file mode 100644 index 00000000..80b7ed35 --- /dev/null +++ b/vitis/v2020_1/hls_fpo.h @@ -0,0 +1,665 @@ +/* -*- c -*-*/ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + + +#ifndef __AESL_FPO_H__ +#define __AESL_FPO_H__ + +#ifndef __SYNTHESIS__ +#include +#endif + +#include + +#if defined __arm__ && !(defined HLS_NO_XIL_FPO_LIB) +#warning "Xilinx Floating Point Operator IP core does not provide simulation models for ARM architecture. Automatically defining HLS_NO_XIL_FPO_LIB in order to avoid this library dependency, although bit-accurate simulation of some functions is no longer possible. You can make this warning go away by adding this define yourself before including any other files." +#define HLS_NO_XIL_FPO_LIB +#endif + +#ifdef __SYNTHESIS__ +#define HLS_FPO_SQRTF(a) __builtin_sqrtf(a) +#define HLS_FPO_SQRT(a) __builtin_sqrt(a) +#define HLS_FPO_RECSQRTF(a) (1.0f/__builtin_sqrtf(a)) +#define HLS_FPO_RECSQRT(a) (1.0/__builtin_sqrt(a)) +#define HLS_FPO_ABSF(a) __builtin_fabsf(a) +#define HLS_FPO_ABS(a) __builtin_fabs(a) +#define HLS_FPO_LOGF(a) __builtin_logf(a) +#define HLS_FPO_LOG(a) __builtin_log(a) +#define HLS_FPO_EXPF(a) __builtin_expf(a) +#define HLS_FPO_EXP(a) __builtin_exp(a) +#else// csim +#ifdef HLS_NO_XIL_FPO_LIB +#define HLS_FPO_SQRTF(a) sqrtf(a) +#define HLS_FPO_SQRT(a) sqrt(a) +#define HLS_FPO_RECSQRTF(a) (1.0f/sqrtf(a)) +#define HLS_FPO_RECSQRT(a) (1.0/sqrt(a)) +#define HLS_FPO_ABSF(a) fabsf(a) +#define HLS_FPO_ABS(a) fabs(a) +#define HLS_FPO_LOGF(a) logf(a) +#define HLS_FPO_LOG(a) log(a) +#define HLS_FPO_EXPF(a) expf(a) +#define HLS_FPO_EXP(a) exp(a) +#else +#define HLS_FPO_SQRTF(a) xil_fpo_sqrt_flt(a) +#define HLS_FPO_SQRT(a) xil_fpo_sqrt_d(a) +#define HLS_FPO_RECSQRTF(a) xil_fpo_recsqrt_flt(a) +#define HLS_FPO_RECSQRT(a) xil_fpo_recsqrt_d(a) +#define HLS_FPO_ABSF(a) xil_fpo_abs_flt(a) +#define HLS_FPO_ABS(a) xil_fpo_abs_d(a) +#define HLS_FPO_LOGF(a) xil_fpo_log_flt(a) +#define HLS_FPO_LOG(a) xil_fpo_log_d(a) +#define HLS_FPO_EXPF(a) xil_fpo_exp_flt(a) +#define HLS_FPO_EXP(a) xil_fpo_exp_d(a) +#endif //HLS_NO_XIL_FPO_LIB +#endif //__SYNTHESIS__ + +#if (defined __SYNTHESIS__ || defined HLS_NO_XIL_FPO_LIB) +#define HLS_FPO_ADDF(a,b) ((a) + (b)) +#define HLS_FPO_ADD(a,b) ((a) + (b)) +#define HLS_FPO_SUBF(a,b) ((a) - (b)) +#define HLS_FPO_SUB(a,b) ((a) - (b)) +#define HLS_FPO_MULF(a,b) ((a) * (b)) +#define HLS_FPO_MUL(a,b) ((a) * (b)) +#define HLS_FPO_DIVF(a,b) ((a)/(b)) +#define HLS_FPO_DIV(a,b) ((a)/(b)) +#define HLS_FPO_RECF(a) (1.0f/(a)) +#define HLS_FPO_RECIPF(a) HLS_FPO_RECF(a) +#define HLS_FPO_REC(a) (1.0/(a)) +#define HLS_FPO_RECIP(a) HLS_FPO_REC(a) +#define HLS_FPO_RSQRTF(a) HLS_FPO_RECSQRTF(a) +#define HLS_FPO_RSQRT(a) HLS_FPO_RECSQRT(a) +//#define HLS_FPO_UNORDEREDF(a,b) +//#define HLS_FPO_UNORDERED(a,b) +#define HLS_FPO_EQUALF(a,b) ((a) == (b)) +#define HLS_FPO_EQUAL(a,b) ((a) == (b)) +#define HLS_FPO_LESSF(a,b) ((a) < (b)) +#define HLS_FPO_LESS(a,b) ((a) < (b)) +#define HLS_FPO_LESSEQUALF(a,b) ((a) <= (b)) +#define HLS_FPO_LESSEQUAL(a,b) ((a) <= (b)) +#define HLS_FPO_GREATERF(a,b) ((a) > (b)) +#define HLS_FPO_GREATER(a,b) ((a) > (b)) +#define HLS_FPO_GREATEREQUALF(a,b) ((a) >= (b)) +#define HLS_FPO_GREATEREQUAL(a,b) ((a) >= (b)) +#define HLS_FPO_NOTEQUALF(a,b) ((a) != (b)) +#define HLS_FPO_NOTEQUAL(a,b) ((a) != (b)) +//#define HLS_FPO_CONDCODEF(a,b) +//#define HLS_FPO_CONDCODE(a,b) +#define HLS_FPO_FTOI(a) ((int)(a)) +#define HLS_FPO_DTOI(a) ((int)(a)) +#define HLS_FPO_ITOF(a) ((float)(a)) +#define HLS_FPO_ITOD(a) ((double)(a)) +#define HLS_FPO_FTOF(a) ((float)(a)) +#define HLS_FPO_DTOF(a) ((float)(a)) +#define HLS_FPO_FTOD(a) ((double)(a)) +#define HLS_FPO_DTOD(a) ((double)(a)) +#else +#define HLS_FPO_ADDF(a,b) xil_fpo_add_flt(a,b) +#define HLS_FPO_ADD(a,b) xil_fpo_add_d(a,b) +#define HLS_FPO_SUBF(a,b) xil_fpo_sub_flt(a,b) +#define HLS_FPO_SUB(a,b) xil_fpo_sub_d(a,b) +#define HLS_FPO_MULF(a,b) xil_fpo_mul_flt(a,b) +#define HLS_FPO_MUL(a,b) xil_fpo_mul_d(a,b) +#define HLS_FPO_DIVF(a,b) xil_fpo_div_flt(a,b) +#define HLS_FPO_DIV(a,b) xil_fpo_div_d(a,b) +#define HLS_FPO_RECF(a) xil_fpo_rec_flt(a) +#define HLS_FPO_RECIPF(a) HLS_FPO_RECF(a) +#define HLS_FPO_REC(a) xil_fpo_rec_d(a) +#define HLS_FPO_RECIP(a) HLS_FPO_REC(a) +#define HLS_FPO_RSQRTF(a) HLS_FPO_RECSQRTF(a) +#define HLS_FPO_RSQRT(a) HLS_FPO_RECSQRT(a) +#define HLS_FPO_UNORDEREDF(a,b) xil_fpo_unordered_flt(a,b) +#define HLS_FPO_UNORDERED(a,b) xil_fpo_unordered_d(a,b) +#define HLS_FPO_EQUALF(a,b) xil_fpo_equal_flt(a,b) +#define HLS_FPO_EQUAL(a,b) xil_fpo_equal_d(a,b) +#define HLS_FPO_LESSF(a,b) xil_fpo_less_flt(a,b) +#define HLS_FPO_LESS(a,b) xil_fpo_less_d(a,b) +#define HLS_FPO_LESSEQUALF(a,b) xil_fpo_lessequal_flt(a,b) +#define HLS_FPO_LESSEQUAL(a,b) xil_fpo_lessequal_d(a,b) +#define HLS_FPO_GREATERF(a,b) xil_fpo_greater_flt(a,b) +#define HLS_FPO_GREATER(a,b) xil_fpo_greater_d(a,b) +#define HLS_FPO_GREATEREQUALF(a,b) xil_fpo_greaterequal_flt(a,b) +#define HLS_FPO_GREATEREQUAL(a,b) xil_fpo_greaterequal_d(a,b) +#define HLS_FPO_NOTEQUALF(a,b) xil_fpo_notequal_flt(a,b) +#define HLS_FPO_NOTEQUAL(a,b) xil_fpo_notequal_d(a,b) +#define HLS_FPO_CONDCODEF(a,b) xil_fpo_condcode_flt(a,b) +#define HLS_FPO_CONDCODE(a,b) xil_fpo_condcode_d(a,b) +#define HLS_FPO_FTOI(a) xil_fpo_flttofix_int_flt(a) +#define HLS_FPO_DTOI(a) xil_fpo_flttofix_int_d(a) +#define HLS_FPO_ITOF(a) xil_fpo_fixtoflt_flt_int(a) +#define HLS_FPO_ITOD(a) xil_fpo_fixtoflt_d_int(a) +#define HLS_FPO_FTOF(a) xil_fpo_flttoflt_flt_flt(a) +#define HLS_FPO_DTOF(a) xil_fpo_flttoflt_flt_d(a) +#define HLS_FPO_FTOD(a) xil_fpo_flttoflt_d_flt(a) +#define HLS_FPO_DTOD(a) xil_fpo_flttoflt_d_d(a) + + +#include "floating_point_v7_0_bitacc_cmodel.h" // Must include before GMP and MPFR +#include "gmp.h" +#include "mpfr.h" + + //////////////////////////////////////////////////////////////////////// + // Operation functions: add + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_add_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_add_flt + xip_fpo_add_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_add_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_add_d + xip_fpo_add_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: subtract + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_sub_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_sub_flt + xip_fpo_sub_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_sub_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_sub_d + xip_fpo_sub_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: multiply + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_mul_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_mul_flt + xip_fpo_mul_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_mul_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_mul_d + xip_fpo_mul_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: divide + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_div_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_div_flt + xip_fpo_div_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_div_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_div_d + xip_fpo_div_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: reciprocal + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_rec_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_rec_flt + xip_fpo_rec_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_rec_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_rec_d + xip_fpo_rec_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: square root + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_sqrt_flt(float a) +{ +// printf("Testing operation functions: square root\n"); + float res_flt = 0.0f; + + // xip_fpo_sqrt_flt + xip_fpo_sqrt_flt(&res_flt, a); // normal operation +// printf("float = sqrtf(a), and got res_flt=%f\n", res_flt); + return res_flt; +} + +inline double xil_fpo_sqrt_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_sqrt_d + xip_fpo_sqrt_d(&res_d, a); // normal operation +// printf("double = sqrt(a), and got res_d=%f\n", res_d); + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: reciprocal square root + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_recsqrt_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_recsqrt_flt + xip_fpo_recsqrt_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_recsqrt_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_recsqrt_d + xip_fpo_recsqrt_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: absolute value + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_abs_flt(float a) +{ + float res_flt = 0.0f; + + xip_fpo_abs_flt(&res_flt, a); + return res_flt; +} + +inline double xil_fpo_abs_d(double a) +{ + double res_d = 0.0; + + xip_fpo_abs_d(&res_d, a); + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: logarithm + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_log_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_log_flt + xip_fpo_log_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_log_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_log_d + xip_fpo_log_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: Exponential + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_exp_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_exp_flt + xip_fpo_exp_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_exp_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_exp_d + xip_fpo_exp_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare unordered + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_unordered_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_unordered_flt + xip_fpo_unordered_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_unordered_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_unordered_d + xip_fpo_unordered_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare equal + //////////////////////////////////////////////////////////////////////// + + +inline int xil_fpo_equal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_equal_flt + xip_fpo_equal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_equal_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_equal_d + xip_fpo_equal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare less than + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_less_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_less_flt + xip_fpo_less_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_less_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_less_d + xip_fpo_less_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare less than or equal + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_lessequal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_lessequal_flt + xip_fpo_lessequal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_lessequal_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_lessequal_d + xip_fpo_lessequal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare greater than + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_greater_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_greater_flt + xip_fpo_greater_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_greater_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_greater_d + xip_fpo_greater_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare greater than or equal + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_greaterequal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_greaterequal_flt + xip_fpo_greaterequal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_greaterequal_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_greaterequal_d + xip_fpo_greaterequal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare not equal + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_notequal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_notequal_flt + xip_fpo_notequal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_notequal_d(double a, double b) +{ + int res_int = 0; + + xip_fpo_notequal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare condition code + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_condcode_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_condcode_flt + xip_fpo_condcode_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_condcode_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_condcode_d + xip_fpo_condcode_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Conversion functions: conversion code + //////////////////////////////////////////////////////////////////////// +inline int xil_fpo_flttofix_int_flt(float a) +{ + int res_int = 0; + + // xip_fpo_flttofix_int_flt + xip_fpo_flttofix_int_flt(&res_int, a); // normal operation + return res_int; +} + +inline int xil_fpo_flttofix_int_d(double a) +{ + int res_int = 0; + + // xip_fpo_flttofix_int_d + xip_fpo_flttofix_int_d(&res_int, a); // normal operation + return res_int; +} + +inline float xil_fpo_fixtoflt_flt_int(int a) +{ + float res_flt = 0.0f; + + // xip_fpo_fixtoflt_flt_int + xip_fpo_fixtoflt_flt_int(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_fixtoflt_d_int(int a) +{ + double res_d = 0.0; + + // xip_fpo_fixtoflt_d_int + xip_fpo_fixtoflt_d_int(&res_d, a); // normal operation + return res_d; +} + +inline float xil_fpo_flttoflt_flt_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_flttoflt_flt_flt + xip_fpo_flttoflt_flt_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline float xil_fpo_flttoflt_flt_d(double a) +{ + float res_flt = 0.0f; + + // xip_fpo_flttoflt_flt_d + xip_fpo_flttoflt_flt_d(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_flttoflt_d_flt(float a) +{ + double res_d = 0.0; + + // xip_fpo_flttoflt_d_flt + xip_fpo_flttoflt_d_flt(&res_d, a); // normal operation + return res_d; +} + +inline double xil_fpo_flttoflt_d_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_flttoflt_d_d + xip_fpo_flttoflt_d_d(&res_d, a); // normal operation + return res_d; +} + +#endif +#endif /* #ifndef __AESL_FPO_H__*/ + + diff --git a/vitis/v2020_1/hls_fract_apfixed.h b/vitis/v2020_1/hls_fract_apfixed.h new file mode 100644 index 00000000..5ba97b8e --- /dev/null +++ b/vitis/v2020_1/hls_fract_apfixed.h @@ -0,0 +1,39 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef _X_HLS_GENERIC_FRACT_H_ +#define _X_HLS_GENERIC_FRACT_H_ + +#include "utils/x_hls_defines.h" +#include "utils/x_hls_utils.h" +#include "utils/x_hls_traits.h" + +namespace hls_fract { +//fract for ap_fixed +template +ap_fixed generic_fract(ap_fixed x){ + if (W_==I_)return 0; + ap_fixed x1=x; + ap_fixed x2=x1+ap_int<2>(1); + return x[W_-1]?x2:x1; +} +//fract for ap_ufixed +template +ap_ufixed generic_fract(ap_ufixed x){ + ap_fixed x1=x; + return generic_fract(x1); +} +//fract for ap_int +template +ap_int generic_fract(ap_int x){ + ap_fixed x1 = x; + return generic_fract(x1); +} +//fract for ap_uint +template +ap_uint generic_fract(ap_uint x){ + ap_ufixed x1 = x; + return generic_fract(x1); +} +} +#endif + + diff --git a/vitis/v2020_1/hls_frexp_apfixed.h b/vitis/v2020_1/hls_frexp_apfixed.h new file mode 100644 index 00000000..6a6a615d --- /dev/null +++ b/vitis/v2020_1/hls_frexp_apfixed.h @@ -0,0 +1,130 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 + +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +/** + * @file hls_frexp_ap_fixed.h + * @brief implement frexp function for ap_fixed data type. + */ +#ifndef _X_HLS_FREXP_APFIXED_H_ +#define _X_HLS_FREXP_APFIXED_H_ +#include "ap_fixed.h" +#include "hls_round_copysign_apfixed.h" +namespace frexp_internal { + +template +ap_fixed frexp(ap_fixed x, + ap_fixed* exp){ + if(I<0) { + *exp = 0; + return x; + } + static const int F = W - I; + static const int we = W > 5 ? W/2 : 3;//width of exp, should be log2(W) + 1; + + ap_int e = 0; + ap_ufixed r_p = 0; + + ap_fixed xi = x; + ap_ufixed x_p = fabs_fixed(xi); + + static const ap_uint<3> clz_table_6bit[64] = {7, 6, 5, 5, 4, 4, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1}; + int pos = 0;//should be log(mqx(I,F)); + //use clz_table to reduce the loop_tripcount + static const int loop_nm = W > 6 ? (W + 5)/6 : 1; + CLZ_LOOP: + for(int l = loop_nm; l > 0; --l){ + #pragma HLS pipeline II=1 + ap_uint<6> t = 0; + if(l*6 > W) t = x_p(W - 1, (l - 1) * 6); + else t = x_p(l * 6 - 1, (l - 1) * 6); + if((t & 0x3f) != 0) { + pos = l * 6 - clz_table_6bit[t]; + break; + } + } + if(pos >= 0) { + e = pos + 1 - F; + if(F > 0) { + ap_uint w_f = (pos + 1) < F ? (pos + 1) : F; + r_p(F - 1,F - w_f) = x_p(pos, pos + 1 - w_f); + } + } else { + e = 0; + r_p = 0; + } + ap_fixed r = 0; + if(xi[W-1]) r = -r_p; + else r = r_p; + #ifndef __SYNTHESIS__ + assert(r > -1 && r < 1); + #endif + *exp = e; + return r; +} +template +ap_ufixed frexp(ap_ufixed x, + ap_ufixed* exp){ + ap_fixed xe = x; + ap_fixed ee = 0; + ap_fixed r = frexp(xe,&ee); + *exp = ee; + return r; +} +template +ap_uint frexp(ap_uint x, + ap_uint* exp) { + ap_fixed xe = x; + ap_fixed ee = 0; + ap_fixed r = frexp(xe,&ee); + *exp = ee; + return r; +} +template +ap_int frexp(ap_int x, + ap_int* exp) { + ap_fixed xe = x; + ap_fixed ee = 0; + ap_fixed r = frexp(xe,&ee); + *exp = ee; + return r; +} +} +#endif//define _X_HLS_FREXP_APFIXED_H_ + + diff --git a/vitis/v2020_1/hls_half.h b/vitis/v2020_1/hls_half.h new file mode 100644 index 00000000..0c175681 --- /dev/null +++ b/vitis/v2020_1/hls_half.h @@ -0,0 +1,3348 @@ +// half - IEEE 754-based half-precision floating point library. +// +// Copyright (c) 2012-2013 Christian Rau +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Version 1.11.0 + +/// \file +/// Main header file for half precision functionality. + +#ifndef __HLS_HALF_H__ +#define __HLS_HALF_H__ + +#ifndef __cplusplus +#ifndef __SYNTHESIS__ +#error C++ is required to include this header file +#endif +#endif +#ifndef __SYNTHESIS__ +#include +#endif + +#ifdef __SYNTHESIS__ + +#ifndef _HLS_HALF_DEFINED_ +typedef __fp16 half; +#endif + +#else // AESL_SYN + +// XXX work-around old version of GMP with C++11 used by fpo. +#include +#include "hls_fpo.h" + +//Forward declaration of ap_fixed_base. +#include "ap_decl.h" + +#ifdef HLS_NO_XIL_FPO_LIB +//#warning "Xilinx Floating Point Operator IP core does not provide simulation models for ARM architecture. Then there may be mismatch between simulation model and FPGA implementation" + +#else + +// Fiddle an MPFR variable to contain the same information as an xip_fpo_t variable without allocating memory +// m is the mpfr_t variable (destination), x is the xip_fpo_t variable (source) +// First variant: copy all information +#define XIP_FPO_2_MPFR(m, x) \ +(m)->_mpfr_prec = (x)->_xip_fpo_mant_prec; \ +(m)->_mpfr_sign = (x)->_xip_fpo_sign; \ +(m)->_mpfr_exp = (x)->_xip_fpo_exp; \ +(m)->_mpfr_d = (x)->_xip_fpo_d; + +#endif + +/// Combined gcc version number. +#define HALF_GNUC_VERSION (__GNUC__*100+__GNUC_MINOR__) + +//check C++11 language features +#if defined(__clang__) //clang + #if __has_feature(cxx_static_assert) && !defined(HALF_ENABLE_CPP11_STATIC_ASSERT) + #define HALF_ENABLE_CPP11_STATIC_ASSERT 1 + #endif + #if __has_feature(cxx_constexpr) && !defined(HALF_ENABLE_CPP11_CONSTEXPR) + #define HALF_ENABLE_CPP11_CONSTEXPR 1 + #endif + #if __has_feature(cxx_noexcept) && !defined(HALF_ENABLE_CPP11_NOEXCEPT) + #define HALF_ENABLE_CPP11_NOEXCEPT 1 + #endif + #if __has_feature(cxx_user_literals) && !defined(HALF_ENABLE_CPP11_USER_LITERALS) + #define HALF_ENABLE_CPP11_USER_LITERALS 1 + #endif + #if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) && !defined(HALF_ENABLE_CPP11_LONG_LONG) + #define HALF_ENABLE_CPP11_LONG_LONG 1 + #endif +/*#elif defined(__INTEL_COMPILER) //Intel C++ + #if __INTEL_COMPILER >= 1100 && !defined(HALF_ENABLE_CPP11_STATIC_ASSERT) ???????? + #define HALF_ENABLE_CPP11_STATIC_ASSERT 1 + #endif + #if __INTEL_COMPILER >= 1300 && !defined(HALF_ENABLE_CPP11_CONSTEXPR) ???????? + #define HALF_ENABLE_CPP11_CONSTEXPR 1 + #endif + #if __INTEL_COMPILER >= 1300 && !defined(HALF_ENABLE_CPP11_NOEXCEPT) ???????? + #define HALF_ENABLE_CPP11_NOEXCEPT 1 + #endif + #if __INTEL_COMPILER >= 1100 && !defined(HALF_ENABLE_CPP11_LONG_LONG) ???????? + #define HALF_ENABLE_CPP11_LONG_LONG 1 + #endif*/ +#elif defined(__GNUC__) //gcc + #if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L + #if HALF_GNUC_VERSION >= 403 && !defined(HALF_ENABLE_CPP11_STATIC_ASSERT) + #define HALF_ENABLE_CPP11_STATIC_ASSERT 1 + #endif + #if HALF_GNUC_VERSION >= 406 && !defined(HALF_ENABLE_CPP11_CONSTEXPR) + #define HALF_ENABLE_CPP11_CONSTEXPR 1 + #endif + #if HALF_GNUC_VERSION >= 406 && !defined(HALF_ENABLE_CPP11_NOEXCEPT) + #define HALF_ENABLE_CPP11_NOEXCEPT 1 + #endif + #if HALF_GNUC_VERSION >= 407 && !defined(HALF_ENABLE_CPP11_USER_LITERALS) + #define HALF_ENABLE_CPP11_USER_LITERALS 1 + #endif + #if !defined(HALF_ENABLE_CPP11_LONG_LONG) + #define HALF_ENABLE_CPP11_LONG_LONG 1 + #endif + #endif +#elif defined(_MSC_VER) //Visual C++ + #if _MSC_VER >= 1600 && !defined(HALF_ENABLE_CPP11_STATIC_ASSERT) + #define HALF_ENABLE_CPP11_STATIC_ASSERT 1 + #endif + #if _MSC_VER >= 1310 && !defined(HALF_ENABLE_CPP11_LONG_LONG) + #define HALF_ENABLE_CPP11_LONG_LONG 1 + #endif + #define HALF_POP_WARNINGS 1 + #pragma warning(push) + #pragma warning(disable : 4099 4127 4146) //struct vs class, constant in if, negative unsigned +#endif + +//check C++11 library features +#include +#if defined(_LIBCPP_VERSION) //libc++ + #if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103 + #ifndef HALF_ENABLE_CPP11_TYPE_TRAITS + #define HALF_ENABLE_CPP11_TYPE_TRAITS 1 + #endif + #ifndef HALF_ENABLE_CPP11_CSTDINT + #define HALF_ENABLE_CPP11_CSTDINT 1 + #endif + #ifndef HALF_ENABLE_CPP11_CMATH + #define HALF_ENABLE_CPP11_CMATH 1 + #endif + #ifndef HALF_ENABLE_CPP11_HASH + #define HALF_ENABLE_CPP11_HASH 1 + #endif + #endif +#elif defined(__GLIBCXX__) //libstdc++ + #if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103 + #ifdef __clang__ + #if __GLIBCXX__ >= 20080606 && !defined(HALF_ENABLE_CPP11_TYPE_TRAITS) + #define HALF_ENABLE_CPP11_TYPE_TRAITS 1 + #endif + #if __GLIBCXX__ >= 20080606 && !defined(HALF_ENABLE_CPP11_CSTDINT) + #define HALF_ENABLE_CPP11_CSTDINT 1 + #endif + #if __GLIBCXX__ >= 20080606 && !defined(HALF_ENABLE_CPP11_CMATH) + #define HALF_ENABLE_CPP11_CMATH 1 + #endif + #if __GLIBCXX__ >= 20080606 && !defined(HALF_ENABLE_CPP11_HASH) + #define HALF_ENABLE_CPP11_HASH 1 + #endif + #else + #if HALF_GNUC_VERSION >= 403 && !defined(HALF_ENABLE_CPP11_CSTDINT) + #define HALF_ENABLE_CPP11_CSTDINT 1 + #endif + #if HALF_GNUC_VERSION >= 403 && !defined(HALF_ENABLE_CPP11_CMATH) + #define HALF_ENABLE_CPP11_CMATH 1 + #endif + #if HALF_GNUC_VERSION >= 403 && !defined(HALF_ENABLE_CPP11_HASH) + #define HALF_ENABLE_CPP11_HASH 1 + #endif + #endif + #endif +#elif defined(_CPPLIB_VER) //Dinkumware/Visual C++ + #if _CPPLIB_VER >= 520 + #ifndef HALF_ENABLE_CPP11_TYPE_TRAITS + #define HALF_ENABLE_CPP11_TYPE_TRAITS 1 + #endif + #ifndef HALF_ENABLE_CPP11_CSTDINT + #define HALF_ENABLE_CPP11_CSTDINT 1 + #endif + #ifndef HALF_ENABLE_CPP11_HASH + #define HALF_ENABLE_CPP11_HASH 1 + #endif + #endif + #if _CPPLIB_VER >= 610 + #ifndef HALF_ENABLE_CPP11_CMATH + #define HALF_ENABLE_CPP11_CMATH 1 + #endif + #endif +#endif +#undef HALF_GNUC_VERSION + +//support constexpr +#if HALF_ENABLE_CPP11_CONSTEXPR + #define HALF_CONSTEXPR constexpr + #define HALF_CONSTEXPR_CONST constexpr +#else + #define HALF_CONSTEXPR + #define HALF_CONSTEXPR_CONST const +#endif + +//support noexcept +#if HALF_ENABLE_CPP11_NOEXCEPT + #define HALF_NOEXCEPT noexcept + #define HALF_NOTHROW noexcept +#else + #define HALF_NOEXCEPT + #define HALF_NOTHROW throw() +#endif + +#include +#include +#include +#include +//#include +#include +#if HALF_ENABLE_CPP11_TYPE_TRAITS + #include +#endif +#if HALF_ENABLE_CPP11_CSTDINT + #include +#endif +#if HALF_ENABLE_CPP11_HASH + #include +#endif + + +/// Default rounding mode. +/// This specifies the rounding mode used for all conversions between [half](\ref half)s and `float`s as well as +/// for the half_cast() if not specifying a rounding mode explicitly. It can be redefined (before including half.hpp) to one +/// of the standard rounding modes using their respective constants or the equivalent values of `std::float_round_style`: +/// +/// `std::float_round_style` | value | rounding +/// ---------------------------------|-------|------------------------- +/// `std::round_indeterminate` | -1 | fastest (default) +/// `std::round_toward_zero` | 0 | toward zero +/// `std::round_to_nearest` | 1 | to nearest +/// `std::round_toward_infinity` | 2 | toward positive infinity +/// `std::round_toward_neg_infinity` | 3 | toward negative infinity +/// +/// By default this is set to `-1` (`std::round_indeterminate`), which uses truncation (round toward zero, but with overflows +/// set to infinity) and is the fastest rounding mode possible. It can even be set to `std::numeric_limits::round_style` +/// to synchronize the rounding mode with that of the underlying single-precision implementation. +#ifndef HALF_ROUND_STYLE + #define HALF_ROUND_STYLE 1 // = std::round_indeterminate +#endif + +/// Tie-breaking behaviour for round to nearest. +/// This specifies if ties in round to nearest should be resolved by rounding to the nearest even value. By default this is +/// defined to `0` resulting in the faster but slightly more biased behaviour of rounding away from zero in half-way cases (and +/// thus equal to the round() function), but can be redefined to `1` (before including half.hpp) if more IEEE-conformant +/// behaviour is needed. +#ifndef HALF_ROUND_TIES_TO_EVEN + #define HALF_ROUND_TIES_TO_EVEN 1 // ties away from zero +#endif + +/// Value signaling overflow. +/// In correspondence with `HUGE_VAL[F|L]` from `` this symbol expands to a positive value signaling the overflow of an +/// operation, in particular it just evaluates to positive infinity. +#define HUGE_VALH std::numeric_limits::infinity() + +/// Fast half-precision fma function. +/// This symbol is only defined if the fma() function generally executes as fast as, or faster than, a separate +/// half-precision multiplication followed by an addition. Due to the internal single-precision implementation of all +/// arithmetic operations, this is in fact always the case. +#define FP_FAST_FMAH 1 + +#ifndef FP_ILOGB0 + #define FP_ILOGB0 INT_MIN +#endif +#ifndef FP_ILOGBNAN + #define FP_ILOGBNAN INT_MAX +#endif +#ifndef FP_SUBNORMAL + #define FP_SUBNORMAL 0 +#endif +#ifndef FP_ZERO + #define FP_ZERO 1 +#endif +#ifndef FP_NAN + #define FP_NAN 2 +#endif +#ifndef FP_INFINITE + #define FP_INFINITE 3 +#endif +#ifndef FP_NORMAL + #define FP_NORMAL 4 +#endif + + +/// Main namespace for half precision functionality. +/// This namespace contains all the functionality provided by the library. + class half; + + /// \internal + /// \brief Implementation details. + namespace detail + { + #if HALF_ENABLE_CPP11_TYPE_TRAITS + /// Conditional type. + template struct conditional : std::conditional {}; + + /// Helper for tag dispatching. + template struct bool_type : std::integral_constant {}; + using std::true_type; + using std::false_type; + + /// Type traits for floating point types. + template struct is_float : std::is_floating_point {}; + #else + /// Conditional type. + template struct conditional { typedef T type; }; + template struct conditional { typedef F type; }; + + /// Helper for tag dispatching. + template struct bool_type {}; + typedef bool_type true_type; + typedef bool_type false_type; + + /// Type traits for floating point types. + template struct is_float : false_type {}; + template struct is_float : is_float {}; + template struct is_float : is_float {}; + template struct is_float : is_float {}; + template<> struct is_float : true_type {}; + template<> struct is_float : true_type {}; + template<> struct is_float : true_type {}; + #endif + + #if HALF_ENABLE_CPP11_CSTDINT + /// Unsigned integer of (at least) 16 bits width. + typedef std::uint_least16_t uint16; + + /// Unsigned integer of (at least) 32 bits width. + typedef std::uint_least32_t uint32; + + /// Fastest signed integer capable of holding all values of type uint16. + typedef std::int_fast32_t int17; + #else + /// Unsigned integer of (at least) 16 bits width. + typedef unsigned short uint16; + + /// Unsigned integer of (at least) 32 bits width. + typedef conditional::digits>=32,unsigned int,unsigned long>::type uint32; + + /// Fastest signed integer capable of holding all values of type uint16. + typedef conditional::digits>=16,int,long>::type int17; + #endif + + /// Tag type for binary construction. + struct binary_t {}; + + /// Tag for binary construction. + HALF_CONSTEXPR_CONST binary_t binary = binary_t(); + + /// Temporary half-precision expression. + /// This class represents a half-precision expression which just stores a single-precision value internally. + struct expr + { + /// Conversion constructor. + /// \param f single-precision value to convert + explicit HALF_CONSTEXPR expr(float f) : value_(f) {} + + /// Conversion to single-precision. + /// \return single precision value representing expression value + HALF_CONSTEXPR operator float() const { return value_; } + + private: + /// Internal expression value stored in single-precision. + float value_; + }; + + /// SFINAE helper for generic half-precision functions. + /// This class template has to be specialized for each valid combination of argument types to provide a corresponding + /// `type` member equivalent to \a T. + /// \tparam T type to return + template struct enable {}; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef float type; }; + template struct enable { typedef float type; }; + template struct enable { typedef double type; }; + template struct enable { typedef double type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + template struct enable { typedef T type; }; + + /// Return type for specialized generic 2-argument half-precision functions. + /// This class template has to be specialized for each valid combination of argument types to provide a corresponding + /// `type` member denoting the appropriate return type. + /// \tparam T first argument type + /// \tparam U first argument type + template struct result : enable {}; + template<> struct result { typedef half type; }; + + /// \name Classification helpers + /// \{ + + /// Check for infinity. + /// \tparam T argument type (builtin floating point type) + /// \param arg value to query + /// \retval true if infinity + /// \retval false else + template bool builtin_isinf(T arg) + { + #if HALF_ENABLE_CPP11_CMATH + return std::isinf(arg); + #elif defined(_MSC_VER) + return !_finite(static_cast(arg)) && !_isnan(static_cast(arg)); + #else + return arg == std::numeric_limits::infinity() || arg == -std::numeric_limits::infinity(); + #endif + } + + /// Check for NaN. + /// \tparam T argument type (builtin floating point type) + /// \param arg value to query + /// \retval true if not a number + /// \retval false else + template bool builtin_isnan(T arg) + { + #if HALF_ENABLE_CPP11_CMATH + return std::isnan(arg); + #elif defined(_MSC_VER) + return _isnan(static_cast(arg)) != 0; + #else + return arg != arg; + #endif + } + + /// Check sign. + /// \tparam T argument type (builtin floating point type) + /// \param arg value to query + /// \retval true if signbit set + /// \retval false else + template bool builtin_signbit(T arg) + { + #if HALF_ENABLE_CPP11_CMATH + return std::signbit(arg); + #else + return arg < T() || (arg == T() && T(1)/arg < T()); + #endif + } + + /// \} + /// \name Conversion + /// \{ + + /// Convert IEEE single-precision to half-precision. + /// Credit for this goes to [Jeroen van der Zijp](ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf). + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \param value single-precision value + /// \return binary representation of half-precision value + template uint16 float2half_impl(float value, true_type) + { + #if HALF_ENABLE_CPP11_STATIC_ASSERT + static_assert(std::numeric_limits::is_iec559, "float to half conversion needs IEEE 754 conformant 'float' type"); + static_assert(sizeof(uint32)==sizeof(float), "float to half conversion needs unsigned integer type of exactly the size of a 'float'"); + #endif + static const uint16 base_table[512] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, + 0x0200, 0x0400, 0x0800, 0x0C00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x2400, 0x2800, 0x2C00, 0x3000, 0x3400, 0x3800, 0x3C00, + 0x4000, 0x4400, 0x4800, 0x4C00, 0x5000, 0x5400, 0x5800, 0x5C00, 0x6000, 0x6400, 0x6800, 0x6C00, 0x7000, 0x7400, 0x7800, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, 0x7C00, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8002, 0x8004, 0x8008, 0x8010, 0x8020, 0x8040, 0x8080, 0x8100, + 0x8200, 0x8400, 0x8800, 0x8C00, 0x9000, 0x9400, 0x9800, 0x9C00, 0xA000, 0xA400, 0xA800, 0xAC00, 0xB000, 0xB400, 0xB800, 0xBC00, + 0xC000, 0xC400, 0xC800, 0xCC00, 0xD000, 0xD400, 0xD800, 0xDC00, 0xE000, 0xE400, 0xE800, 0xEC00, 0xF000, 0xF400, 0xF800, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, + 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00, 0xFC00 }; + static const unsigned char shift_table[512] = { + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 13, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 13 }; + uint32 bits;// = *reinterpret_cast(&value); //violating strict aliasing! + std::memcpy(&bits, &value, sizeof(float)); + uint16 hbits = base_table[bits>>23] + static_cast((bits&0x7FFFFF)>>shift_table[bits>>23]); + if(R == std::round_to_nearest) + hbits += (((bits&0x7FFFFF)>>(shift_table[bits>>23]-1))|(((bits>>23)&0xFF)==102)) & ((hbits&0x7C00)!=0x7C00) + #if HALF_ROUND_TIES_TO_EVEN + & (((((static_cast(1)<<(shift_table[bits>>23]-1))-1)&bits)!=0)|hbits) + #endif + ; + else if(R == std::round_toward_zero) + hbits -= ((hbits&0x7FFF)==0x7C00) & ~shift_table[bits>>23]; + else if(R == std::round_toward_infinity) + hbits += ((((bits&0x7FFFFF&((static_cast(1)<<(shift_table[bits>>23]))-1))!=0)|(((bits>>23)<=102)& + ((bits>>23)!=0)))&(hbits<0x7C00)) - ((hbits==0xFC00)&((bits>>23)!=511)); + else if(R == std::round_toward_neg_infinity) + hbits += ((((bits&0x7FFFFF&((static_cast(1)<<(shift_table[bits>>23]))-1))!=0)|(((bits>>23)<=358)& + ((bits>>23)!=256)))&(hbits<0xFC00)&(hbits>>15)) - ((hbits==0x7C00)&((bits>>23)!=255)); + return hbits; + } + + /// Convert non-IEEE single-precision to half-precision. + /// \param value single-precision value + /// \return binary representation of half-precision value + template uint16 float2half_impl(float value, false_type) + { + uint16 hbits = builtin_signbit(value) << 15; + if(value == 0.0f) + return hbits; + if(builtin_isnan(value)) + return hbits | 0x7FFF; + if(builtin_isinf(value)) + return hbits | 0x7C00; + int exp; + std::frexp(value, &exp); + if(exp > 16) + { + if(R == std::round_toward_zero) + return hbits | 0x7BFF; + else if(R == std::round_toward_infinity) + return hbits | 0x7C00 - (hbits>>15); + else if(R == std::round_toward_neg_infinity) + return hbits | 0x7BFF + (hbits>>15); + return hbits | 0x7C00; + } + if(exp < -13) + value = std::ldexp(value, 24); + else + { + value = std::ldexp(value, 11-exp); + hbits |= ((exp+14)<<10); + } + int ival = static_cast(value); + hbits |= static_cast(std::abs(ival)&0x3FF); + if(R == std::round_to_nearest) + { + float diff = std::abs(value-static_cast(ival)); + #if HALF_ROUND_TIES_TO_EVEN + hbits += (diff>0.5f) | ((diff==0.5f)&hbits); + #else + hbits += diff >= 0.5f; + #endif + } + else if(R == std::round_toward_infinity) + hbits += value > static_cast(ival); + else if(R == std::round_toward_neg_infinity) + hbits += value < static_cast(ival); + return hbits; + } + + /// Convert single-precision to half-precision. + /// \param value single-precision value + /// \return binary representation of half-precision value + template uint16 float2half(float value) + { + return float2half_impl(value, bool_type::is_iec559&&sizeof(uint32)==sizeof(float)>()); + } + + /// Convert integer to half-precision floating point. + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \tparam S `true` if value negative, `false` else + /// \tparam T type to convert (builtin integer type) + /// \param value non-negative integral value + /// \return binary representation of half-precision value + template uint16 int2half_impl(T value) + { + if(S) + value = -value; + uint16 bits = S << 15; + if(value > 65504) + { + if(R == std::round_toward_infinity) + bits |= 0x7C00 - S; + else if(R == std::round_toward_neg_infinity) + bits |= 0x7BFF + S; + else + bits |= 0x7BFF + (R!=std::round_toward_zero); + } + else if(value) + { + unsigned int m = value, exp = 25; + for(; m<0x400; m<<=1,--exp) ; + for(; m>0x7FF; m>>=1,++exp) ; + bits |= (exp<<10) | (m&0x3FF); + if(exp > 25) + { + if(R == std::round_to_nearest) + bits += (value>>(exp-26)) & 1 + #if HALF_ROUND_TIES_TO_EVEN + & (((((1<<(exp-26))-1)&value)!=0)|bits) + #endif + ; + else if(R == std::round_toward_infinity) + bits += ((value&((1<<(exp-25))-1))!=0) & !S; + else if(R == std::round_toward_neg_infinity) + bits += ((value&((1<<(exp-25))-1))!=0) & S; + } + } + return bits; + } + + /// Convert integer to half-precision floating point. + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \tparam T type to convert (builtin integer type) + /// \param value integral value + /// \return binary representation of half-precision value + template uint16 int2half(T value) + { + return (value<0) ? int2half_impl(value) : int2half_impl(value); + } + + /// Convert half-precision to IEEE single-precision. + /// Credit for this goes to [Jeroen van der Zijp](ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf). + /// \param value binary representation of half-precision value + /// \return single-precision value + inline float half2float_impl(uint16 value, true_type) + { + #if HALF_ENABLE_CPP11_STATIC_ASSERT + static_assert(std::numeric_limits::is_iec559, "half to float conversion needs IEEE 754 conformant 'float' type"); + static_assert(sizeof(uint32)==sizeof(float), "half to float conversion needs unsigned integer type of exactly the size of a 'float'"); + #endif + static const uint32 mantissa_table[2048] = { + 0x00000000, 0x33800000, 0x34000000, 0x34400000, 0x34800000, 0x34A00000, 0x34C00000, 0x34E00000, 0x35000000, 0x35100000, 0x35200000, 0x35300000, 0x35400000, 0x35500000, 0x35600000, 0x35700000, + 0x35800000, 0x35880000, 0x35900000, 0x35980000, 0x35A00000, 0x35A80000, 0x35B00000, 0x35B80000, 0x35C00000, 0x35C80000, 0x35D00000, 0x35D80000, 0x35E00000, 0x35E80000, 0x35F00000, 0x35F80000, + 0x36000000, 0x36040000, 0x36080000, 0x360C0000, 0x36100000, 0x36140000, 0x36180000, 0x361C0000, 0x36200000, 0x36240000, 0x36280000, 0x362C0000, 0x36300000, 0x36340000, 0x36380000, 0x363C0000, + 0x36400000, 0x36440000, 0x36480000, 0x364C0000, 0x36500000, 0x36540000, 0x36580000, 0x365C0000, 0x36600000, 0x36640000, 0x36680000, 0x366C0000, 0x36700000, 0x36740000, 0x36780000, 0x367C0000, + 0x36800000, 0x36820000, 0x36840000, 0x36860000, 0x36880000, 0x368A0000, 0x368C0000, 0x368E0000, 0x36900000, 0x36920000, 0x36940000, 0x36960000, 0x36980000, 0x369A0000, 0x369C0000, 0x369E0000, + 0x36A00000, 0x36A20000, 0x36A40000, 0x36A60000, 0x36A80000, 0x36AA0000, 0x36AC0000, 0x36AE0000, 0x36B00000, 0x36B20000, 0x36B40000, 0x36B60000, 0x36B80000, 0x36BA0000, 0x36BC0000, 0x36BE0000, + 0x36C00000, 0x36C20000, 0x36C40000, 0x36C60000, 0x36C80000, 0x36CA0000, 0x36CC0000, 0x36CE0000, 0x36D00000, 0x36D20000, 0x36D40000, 0x36D60000, 0x36D80000, 0x36DA0000, 0x36DC0000, 0x36DE0000, + 0x36E00000, 0x36E20000, 0x36E40000, 0x36E60000, 0x36E80000, 0x36EA0000, 0x36EC0000, 0x36EE0000, 0x36F00000, 0x36F20000, 0x36F40000, 0x36F60000, 0x36F80000, 0x36FA0000, 0x36FC0000, 0x36FE0000, + 0x37000000, 0x37010000, 0x37020000, 0x37030000, 0x37040000, 0x37050000, 0x37060000, 0x37070000, 0x37080000, 0x37090000, 0x370A0000, 0x370B0000, 0x370C0000, 0x370D0000, 0x370E0000, 0x370F0000, + 0x37100000, 0x37110000, 0x37120000, 0x37130000, 0x37140000, 0x37150000, 0x37160000, 0x37170000, 0x37180000, 0x37190000, 0x371A0000, 0x371B0000, 0x371C0000, 0x371D0000, 0x371E0000, 0x371F0000, + 0x37200000, 0x37210000, 0x37220000, 0x37230000, 0x37240000, 0x37250000, 0x37260000, 0x37270000, 0x37280000, 0x37290000, 0x372A0000, 0x372B0000, 0x372C0000, 0x372D0000, 0x372E0000, 0x372F0000, + 0x37300000, 0x37310000, 0x37320000, 0x37330000, 0x37340000, 0x37350000, 0x37360000, 0x37370000, 0x37380000, 0x37390000, 0x373A0000, 0x373B0000, 0x373C0000, 0x373D0000, 0x373E0000, 0x373F0000, + 0x37400000, 0x37410000, 0x37420000, 0x37430000, 0x37440000, 0x37450000, 0x37460000, 0x37470000, 0x37480000, 0x37490000, 0x374A0000, 0x374B0000, 0x374C0000, 0x374D0000, 0x374E0000, 0x374F0000, + 0x37500000, 0x37510000, 0x37520000, 0x37530000, 0x37540000, 0x37550000, 0x37560000, 0x37570000, 0x37580000, 0x37590000, 0x375A0000, 0x375B0000, 0x375C0000, 0x375D0000, 0x375E0000, 0x375F0000, + 0x37600000, 0x37610000, 0x37620000, 0x37630000, 0x37640000, 0x37650000, 0x37660000, 0x37670000, 0x37680000, 0x37690000, 0x376A0000, 0x376B0000, 0x376C0000, 0x376D0000, 0x376E0000, 0x376F0000, + 0x37700000, 0x37710000, 0x37720000, 0x37730000, 0x37740000, 0x37750000, 0x37760000, 0x37770000, 0x37780000, 0x37790000, 0x377A0000, 0x377B0000, 0x377C0000, 0x377D0000, 0x377E0000, 0x377F0000, + 0x37800000, 0x37808000, 0x37810000, 0x37818000, 0x37820000, 0x37828000, 0x37830000, 0x37838000, 0x37840000, 0x37848000, 0x37850000, 0x37858000, 0x37860000, 0x37868000, 0x37870000, 0x37878000, + 0x37880000, 0x37888000, 0x37890000, 0x37898000, 0x378A0000, 0x378A8000, 0x378B0000, 0x378B8000, 0x378C0000, 0x378C8000, 0x378D0000, 0x378D8000, 0x378E0000, 0x378E8000, 0x378F0000, 0x378F8000, + 0x37900000, 0x37908000, 0x37910000, 0x37918000, 0x37920000, 0x37928000, 0x37930000, 0x37938000, 0x37940000, 0x37948000, 0x37950000, 0x37958000, 0x37960000, 0x37968000, 0x37970000, 0x37978000, + 0x37980000, 0x37988000, 0x37990000, 0x37998000, 0x379A0000, 0x379A8000, 0x379B0000, 0x379B8000, 0x379C0000, 0x379C8000, 0x379D0000, 0x379D8000, 0x379E0000, 0x379E8000, 0x379F0000, 0x379F8000, + 0x37A00000, 0x37A08000, 0x37A10000, 0x37A18000, 0x37A20000, 0x37A28000, 0x37A30000, 0x37A38000, 0x37A40000, 0x37A48000, 0x37A50000, 0x37A58000, 0x37A60000, 0x37A68000, 0x37A70000, 0x37A78000, + 0x37A80000, 0x37A88000, 0x37A90000, 0x37A98000, 0x37AA0000, 0x37AA8000, 0x37AB0000, 0x37AB8000, 0x37AC0000, 0x37AC8000, 0x37AD0000, 0x37AD8000, 0x37AE0000, 0x37AE8000, 0x37AF0000, 0x37AF8000, + 0x37B00000, 0x37B08000, 0x37B10000, 0x37B18000, 0x37B20000, 0x37B28000, 0x37B30000, 0x37B38000, 0x37B40000, 0x37B48000, 0x37B50000, 0x37B58000, 0x37B60000, 0x37B68000, 0x37B70000, 0x37B78000, + 0x37B80000, 0x37B88000, 0x37B90000, 0x37B98000, 0x37BA0000, 0x37BA8000, 0x37BB0000, 0x37BB8000, 0x37BC0000, 0x37BC8000, 0x37BD0000, 0x37BD8000, 0x37BE0000, 0x37BE8000, 0x37BF0000, 0x37BF8000, + 0x37C00000, 0x37C08000, 0x37C10000, 0x37C18000, 0x37C20000, 0x37C28000, 0x37C30000, 0x37C38000, 0x37C40000, 0x37C48000, 0x37C50000, 0x37C58000, 0x37C60000, 0x37C68000, 0x37C70000, 0x37C78000, + 0x37C80000, 0x37C88000, 0x37C90000, 0x37C98000, 0x37CA0000, 0x37CA8000, 0x37CB0000, 0x37CB8000, 0x37CC0000, 0x37CC8000, 0x37CD0000, 0x37CD8000, 0x37CE0000, 0x37CE8000, 0x37CF0000, 0x37CF8000, + 0x37D00000, 0x37D08000, 0x37D10000, 0x37D18000, 0x37D20000, 0x37D28000, 0x37D30000, 0x37D38000, 0x37D40000, 0x37D48000, 0x37D50000, 0x37D58000, 0x37D60000, 0x37D68000, 0x37D70000, 0x37D78000, + 0x37D80000, 0x37D88000, 0x37D90000, 0x37D98000, 0x37DA0000, 0x37DA8000, 0x37DB0000, 0x37DB8000, 0x37DC0000, 0x37DC8000, 0x37DD0000, 0x37DD8000, 0x37DE0000, 0x37DE8000, 0x37DF0000, 0x37DF8000, + 0x37E00000, 0x37E08000, 0x37E10000, 0x37E18000, 0x37E20000, 0x37E28000, 0x37E30000, 0x37E38000, 0x37E40000, 0x37E48000, 0x37E50000, 0x37E58000, 0x37E60000, 0x37E68000, 0x37E70000, 0x37E78000, + 0x37E80000, 0x37E88000, 0x37E90000, 0x37E98000, 0x37EA0000, 0x37EA8000, 0x37EB0000, 0x37EB8000, 0x37EC0000, 0x37EC8000, 0x37ED0000, 0x37ED8000, 0x37EE0000, 0x37EE8000, 0x37EF0000, 0x37EF8000, + 0x37F00000, 0x37F08000, 0x37F10000, 0x37F18000, 0x37F20000, 0x37F28000, 0x37F30000, 0x37F38000, 0x37F40000, 0x37F48000, 0x37F50000, 0x37F58000, 0x37F60000, 0x37F68000, 0x37F70000, 0x37F78000, + 0x37F80000, 0x37F88000, 0x37F90000, 0x37F98000, 0x37FA0000, 0x37FA8000, 0x37FB0000, 0x37FB8000, 0x37FC0000, 0x37FC8000, 0x37FD0000, 0x37FD8000, 0x37FE0000, 0x37FE8000, 0x37FF0000, 0x37FF8000, + 0x38000000, 0x38004000, 0x38008000, 0x3800C000, 0x38010000, 0x38014000, 0x38018000, 0x3801C000, 0x38020000, 0x38024000, 0x38028000, 0x3802C000, 0x38030000, 0x38034000, 0x38038000, 0x3803C000, + 0x38040000, 0x38044000, 0x38048000, 0x3804C000, 0x38050000, 0x38054000, 0x38058000, 0x3805C000, 0x38060000, 0x38064000, 0x38068000, 0x3806C000, 0x38070000, 0x38074000, 0x38078000, 0x3807C000, + 0x38080000, 0x38084000, 0x38088000, 0x3808C000, 0x38090000, 0x38094000, 0x38098000, 0x3809C000, 0x380A0000, 0x380A4000, 0x380A8000, 0x380AC000, 0x380B0000, 0x380B4000, 0x380B8000, 0x380BC000, + 0x380C0000, 0x380C4000, 0x380C8000, 0x380CC000, 0x380D0000, 0x380D4000, 0x380D8000, 0x380DC000, 0x380E0000, 0x380E4000, 0x380E8000, 0x380EC000, 0x380F0000, 0x380F4000, 0x380F8000, 0x380FC000, + 0x38100000, 0x38104000, 0x38108000, 0x3810C000, 0x38110000, 0x38114000, 0x38118000, 0x3811C000, 0x38120000, 0x38124000, 0x38128000, 0x3812C000, 0x38130000, 0x38134000, 0x38138000, 0x3813C000, + 0x38140000, 0x38144000, 0x38148000, 0x3814C000, 0x38150000, 0x38154000, 0x38158000, 0x3815C000, 0x38160000, 0x38164000, 0x38168000, 0x3816C000, 0x38170000, 0x38174000, 0x38178000, 0x3817C000, + 0x38180000, 0x38184000, 0x38188000, 0x3818C000, 0x38190000, 0x38194000, 0x38198000, 0x3819C000, 0x381A0000, 0x381A4000, 0x381A8000, 0x381AC000, 0x381B0000, 0x381B4000, 0x381B8000, 0x381BC000, + 0x381C0000, 0x381C4000, 0x381C8000, 0x381CC000, 0x381D0000, 0x381D4000, 0x381D8000, 0x381DC000, 0x381E0000, 0x381E4000, 0x381E8000, 0x381EC000, 0x381F0000, 0x381F4000, 0x381F8000, 0x381FC000, + 0x38200000, 0x38204000, 0x38208000, 0x3820C000, 0x38210000, 0x38214000, 0x38218000, 0x3821C000, 0x38220000, 0x38224000, 0x38228000, 0x3822C000, 0x38230000, 0x38234000, 0x38238000, 0x3823C000, + 0x38240000, 0x38244000, 0x38248000, 0x3824C000, 0x38250000, 0x38254000, 0x38258000, 0x3825C000, 0x38260000, 0x38264000, 0x38268000, 0x3826C000, 0x38270000, 0x38274000, 0x38278000, 0x3827C000, + 0x38280000, 0x38284000, 0x38288000, 0x3828C000, 0x38290000, 0x38294000, 0x38298000, 0x3829C000, 0x382A0000, 0x382A4000, 0x382A8000, 0x382AC000, 0x382B0000, 0x382B4000, 0x382B8000, 0x382BC000, + 0x382C0000, 0x382C4000, 0x382C8000, 0x382CC000, 0x382D0000, 0x382D4000, 0x382D8000, 0x382DC000, 0x382E0000, 0x382E4000, 0x382E8000, 0x382EC000, 0x382F0000, 0x382F4000, 0x382F8000, 0x382FC000, + 0x38300000, 0x38304000, 0x38308000, 0x3830C000, 0x38310000, 0x38314000, 0x38318000, 0x3831C000, 0x38320000, 0x38324000, 0x38328000, 0x3832C000, 0x38330000, 0x38334000, 0x38338000, 0x3833C000, + 0x38340000, 0x38344000, 0x38348000, 0x3834C000, 0x38350000, 0x38354000, 0x38358000, 0x3835C000, 0x38360000, 0x38364000, 0x38368000, 0x3836C000, 0x38370000, 0x38374000, 0x38378000, 0x3837C000, + 0x38380000, 0x38384000, 0x38388000, 0x3838C000, 0x38390000, 0x38394000, 0x38398000, 0x3839C000, 0x383A0000, 0x383A4000, 0x383A8000, 0x383AC000, 0x383B0000, 0x383B4000, 0x383B8000, 0x383BC000, + 0x383C0000, 0x383C4000, 0x383C8000, 0x383CC000, 0x383D0000, 0x383D4000, 0x383D8000, 0x383DC000, 0x383E0000, 0x383E4000, 0x383E8000, 0x383EC000, 0x383F0000, 0x383F4000, 0x383F8000, 0x383FC000, + 0x38400000, 0x38404000, 0x38408000, 0x3840C000, 0x38410000, 0x38414000, 0x38418000, 0x3841C000, 0x38420000, 0x38424000, 0x38428000, 0x3842C000, 0x38430000, 0x38434000, 0x38438000, 0x3843C000, + 0x38440000, 0x38444000, 0x38448000, 0x3844C000, 0x38450000, 0x38454000, 0x38458000, 0x3845C000, 0x38460000, 0x38464000, 0x38468000, 0x3846C000, 0x38470000, 0x38474000, 0x38478000, 0x3847C000, + 0x38480000, 0x38484000, 0x38488000, 0x3848C000, 0x38490000, 0x38494000, 0x38498000, 0x3849C000, 0x384A0000, 0x384A4000, 0x384A8000, 0x384AC000, 0x384B0000, 0x384B4000, 0x384B8000, 0x384BC000, + 0x384C0000, 0x384C4000, 0x384C8000, 0x384CC000, 0x384D0000, 0x384D4000, 0x384D8000, 0x384DC000, 0x384E0000, 0x384E4000, 0x384E8000, 0x384EC000, 0x384F0000, 0x384F4000, 0x384F8000, 0x384FC000, + 0x38500000, 0x38504000, 0x38508000, 0x3850C000, 0x38510000, 0x38514000, 0x38518000, 0x3851C000, 0x38520000, 0x38524000, 0x38528000, 0x3852C000, 0x38530000, 0x38534000, 0x38538000, 0x3853C000, + 0x38540000, 0x38544000, 0x38548000, 0x3854C000, 0x38550000, 0x38554000, 0x38558000, 0x3855C000, 0x38560000, 0x38564000, 0x38568000, 0x3856C000, 0x38570000, 0x38574000, 0x38578000, 0x3857C000, + 0x38580000, 0x38584000, 0x38588000, 0x3858C000, 0x38590000, 0x38594000, 0x38598000, 0x3859C000, 0x385A0000, 0x385A4000, 0x385A8000, 0x385AC000, 0x385B0000, 0x385B4000, 0x385B8000, 0x385BC000, + 0x385C0000, 0x385C4000, 0x385C8000, 0x385CC000, 0x385D0000, 0x385D4000, 0x385D8000, 0x385DC000, 0x385E0000, 0x385E4000, 0x385E8000, 0x385EC000, 0x385F0000, 0x385F4000, 0x385F8000, 0x385FC000, + 0x38600000, 0x38604000, 0x38608000, 0x3860C000, 0x38610000, 0x38614000, 0x38618000, 0x3861C000, 0x38620000, 0x38624000, 0x38628000, 0x3862C000, 0x38630000, 0x38634000, 0x38638000, 0x3863C000, + 0x38640000, 0x38644000, 0x38648000, 0x3864C000, 0x38650000, 0x38654000, 0x38658000, 0x3865C000, 0x38660000, 0x38664000, 0x38668000, 0x3866C000, 0x38670000, 0x38674000, 0x38678000, 0x3867C000, + 0x38680000, 0x38684000, 0x38688000, 0x3868C000, 0x38690000, 0x38694000, 0x38698000, 0x3869C000, 0x386A0000, 0x386A4000, 0x386A8000, 0x386AC000, 0x386B0000, 0x386B4000, 0x386B8000, 0x386BC000, + 0x386C0000, 0x386C4000, 0x386C8000, 0x386CC000, 0x386D0000, 0x386D4000, 0x386D8000, 0x386DC000, 0x386E0000, 0x386E4000, 0x386E8000, 0x386EC000, 0x386F0000, 0x386F4000, 0x386F8000, 0x386FC000, + 0x38700000, 0x38704000, 0x38708000, 0x3870C000, 0x38710000, 0x38714000, 0x38718000, 0x3871C000, 0x38720000, 0x38724000, 0x38728000, 0x3872C000, 0x38730000, 0x38734000, 0x38738000, 0x3873C000, + 0x38740000, 0x38744000, 0x38748000, 0x3874C000, 0x38750000, 0x38754000, 0x38758000, 0x3875C000, 0x38760000, 0x38764000, 0x38768000, 0x3876C000, 0x38770000, 0x38774000, 0x38778000, 0x3877C000, + 0x38780000, 0x38784000, 0x38788000, 0x3878C000, 0x38790000, 0x38794000, 0x38798000, 0x3879C000, 0x387A0000, 0x387A4000, 0x387A8000, 0x387AC000, 0x387B0000, 0x387B4000, 0x387B8000, 0x387BC000, + 0x387C0000, 0x387C4000, 0x387C8000, 0x387CC000, 0x387D0000, 0x387D4000, 0x387D8000, 0x387DC000, 0x387E0000, 0x387E4000, 0x387E8000, 0x387EC000, 0x387F0000, 0x387F4000, 0x387F8000, 0x387FC000, + 0x38000000, 0x38002000, 0x38004000, 0x38006000, 0x38008000, 0x3800A000, 0x3800C000, 0x3800E000, 0x38010000, 0x38012000, 0x38014000, 0x38016000, 0x38018000, 0x3801A000, 0x3801C000, 0x3801E000, + 0x38020000, 0x38022000, 0x38024000, 0x38026000, 0x38028000, 0x3802A000, 0x3802C000, 0x3802E000, 0x38030000, 0x38032000, 0x38034000, 0x38036000, 0x38038000, 0x3803A000, 0x3803C000, 0x3803E000, + 0x38040000, 0x38042000, 0x38044000, 0x38046000, 0x38048000, 0x3804A000, 0x3804C000, 0x3804E000, 0x38050000, 0x38052000, 0x38054000, 0x38056000, 0x38058000, 0x3805A000, 0x3805C000, 0x3805E000, + 0x38060000, 0x38062000, 0x38064000, 0x38066000, 0x38068000, 0x3806A000, 0x3806C000, 0x3806E000, 0x38070000, 0x38072000, 0x38074000, 0x38076000, 0x38078000, 0x3807A000, 0x3807C000, 0x3807E000, + 0x38080000, 0x38082000, 0x38084000, 0x38086000, 0x38088000, 0x3808A000, 0x3808C000, 0x3808E000, 0x38090000, 0x38092000, 0x38094000, 0x38096000, 0x38098000, 0x3809A000, 0x3809C000, 0x3809E000, + 0x380A0000, 0x380A2000, 0x380A4000, 0x380A6000, 0x380A8000, 0x380AA000, 0x380AC000, 0x380AE000, 0x380B0000, 0x380B2000, 0x380B4000, 0x380B6000, 0x380B8000, 0x380BA000, 0x380BC000, 0x380BE000, + 0x380C0000, 0x380C2000, 0x380C4000, 0x380C6000, 0x380C8000, 0x380CA000, 0x380CC000, 0x380CE000, 0x380D0000, 0x380D2000, 0x380D4000, 0x380D6000, 0x380D8000, 0x380DA000, 0x380DC000, 0x380DE000, + 0x380E0000, 0x380E2000, 0x380E4000, 0x380E6000, 0x380E8000, 0x380EA000, 0x380EC000, 0x380EE000, 0x380F0000, 0x380F2000, 0x380F4000, 0x380F6000, 0x380F8000, 0x380FA000, 0x380FC000, 0x380FE000, + 0x38100000, 0x38102000, 0x38104000, 0x38106000, 0x38108000, 0x3810A000, 0x3810C000, 0x3810E000, 0x38110000, 0x38112000, 0x38114000, 0x38116000, 0x38118000, 0x3811A000, 0x3811C000, 0x3811E000, + 0x38120000, 0x38122000, 0x38124000, 0x38126000, 0x38128000, 0x3812A000, 0x3812C000, 0x3812E000, 0x38130000, 0x38132000, 0x38134000, 0x38136000, 0x38138000, 0x3813A000, 0x3813C000, 0x3813E000, + 0x38140000, 0x38142000, 0x38144000, 0x38146000, 0x38148000, 0x3814A000, 0x3814C000, 0x3814E000, 0x38150000, 0x38152000, 0x38154000, 0x38156000, 0x38158000, 0x3815A000, 0x3815C000, 0x3815E000, + 0x38160000, 0x38162000, 0x38164000, 0x38166000, 0x38168000, 0x3816A000, 0x3816C000, 0x3816E000, 0x38170000, 0x38172000, 0x38174000, 0x38176000, 0x38178000, 0x3817A000, 0x3817C000, 0x3817E000, + 0x38180000, 0x38182000, 0x38184000, 0x38186000, 0x38188000, 0x3818A000, 0x3818C000, 0x3818E000, 0x38190000, 0x38192000, 0x38194000, 0x38196000, 0x38198000, 0x3819A000, 0x3819C000, 0x3819E000, + 0x381A0000, 0x381A2000, 0x381A4000, 0x381A6000, 0x381A8000, 0x381AA000, 0x381AC000, 0x381AE000, 0x381B0000, 0x381B2000, 0x381B4000, 0x381B6000, 0x381B8000, 0x381BA000, 0x381BC000, 0x381BE000, + 0x381C0000, 0x381C2000, 0x381C4000, 0x381C6000, 0x381C8000, 0x381CA000, 0x381CC000, 0x381CE000, 0x381D0000, 0x381D2000, 0x381D4000, 0x381D6000, 0x381D8000, 0x381DA000, 0x381DC000, 0x381DE000, + 0x381E0000, 0x381E2000, 0x381E4000, 0x381E6000, 0x381E8000, 0x381EA000, 0x381EC000, 0x381EE000, 0x381F0000, 0x381F2000, 0x381F4000, 0x381F6000, 0x381F8000, 0x381FA000, 0x381FC000, 0x381FE000, + 0x38200000, 0x38202000, 0x38204000, 0x38206000, 0x38208000, 0x3820A000, 0x3820C000, 0x3820E000, 0x38210000, 0x38212000, 0x38214000, 0x38216000, 0x38218000, 0x3821A000, 0x3821C000, 0x3821E000, + 0x38220000, 0x38222000, 0x38224000, 0x38226000, 0x38228000, 0x3822A000, 0x3822C000, 0x3822E000, 0x38230000, 0x38232000, 0x38234000, 0x38236000, 0x38238000, 0x3823A000, 0x3823C000, 0x3823E000, + 0x38240000, 0x38242000, 0x38244000, 0x38246000, 0x38248000, 0x3824A000, 0x3824C000, 0x3824E000, 0x38250000, 0x38252000, 0x38254000, 0x38256000, 0x38258000, 0x3825A000, 0x3825C000, 0x3825E000, + 0x38260000, 0x38262000, 0x38264000, 0x38266000, 0x38268000, 0x3826A000, 0x3826C000, 0x3826E000, 0x38270000, 0x38272000, 0x38274000, 0x38276000, 0x38278000, 0x3827A000, 0x3827C000, 0x3827E000, + 0x38280000, 0x38282000, 0x38284000, 0x38286000, 0x38288000, 0x3828A000, 0x3828C000, 0x3828E000, 0x38290000, 0x38292000, 0x38294000, 0x38296000, 0x38298000, 0x3829A000, 0x3829C000, 0x3829E000, + 0x382A0000, 0x382A2000, 0x382A4000, 0x382A6000, 0x382A8000, 0x382AA000, 0x382AC000, 0x382AE000, 0x382B0000, 0x382B2000, 0x382B4000, 0x382B6000, 0x382B8000, 0x382BA000, 0x382BC000, 0x382BE000, + 0x382C0000, 0x382C2000, 0x382C4000, 0x382C6000, 0x382C8000, 0x382CA000, 0x382CC000, 0x382CE000, 0x382D0000, 0x382D2000, 0x382D4000, 0x382D6000, 0x382D8000, 0x382DA000, 0x382DC000, 0x382DE000, + 0x382E0000, 0x382E2000, 0x382E4000, 0x382E6000, 0x382E8000, 0x382EA000, 0x382EC000, 0x382EE000, 0x382F0000, 0x382F2000, 0x382F4000, 0x382F6000, 0x382F8000, 0x382FA000, 0x382FC000, 0x382FE000, + 0x38300000, 0x38302000, 0x38304000, 0x38306000, 0x38308000, 0x3830A000, 0x3830C000, 0x3830E000, 0x38310000, 0x38312000, 0x38314000, 0x38316000, 0x38318000, 0x3831A000, 0x3831C000, 0x3831E000, + 0x38320000, 0x38322000, 0x38324000, 0x38326000, 0x38328000, 0x3832A000, 0x3832C000, 0x3832E000, 0x38330000, 0x38332000, 0x38334000, 0x38336000, 0x38338000, 0x3833A000, 0x3833C000, 0x3833E000, + 0x38340000, 0x38342000, 0x38344000, 0x38346000, 0x38348000, 0x3834A000, 0x3834C000, 0x3834E000, 0x38350000, 0x38352000, 0x38354000, 0x38356000, 0x38358000, 0x3835A000, 0x3835C000, 0x3835E000, + 0x38360000, 0x38362000, 0x38364000, 0x38366000, 0x38368000, 0x3836A000, 0x3836C000, 0x3836E000, 0x38370000, 0x38372000, 0x38374000, 0x38376000, 0x38378000, 0x3837A000, 0x3837C000, 0x3837E000, + 0x38380000, 0x38382000, 0x38384000, 0x38386000, 0x38388000, 0x3838A000, 0x3838C000, 0x3838E000, 0x38390000, 0x38392000, 0x38394000, 0x38396000, 0x38398000, 0x3839A000, 0x3839C000, 0x3839E000, + 0x383A0000, 0x383A2000, 0x383A4000, 0x383A6000, 0x383A8000, 0x383AA000, 0x383AC000, 0x383AE000, 0x383B0000, 0x383B2000, 0x383B4000, 0x383B6000, 0x383B8000, 0x383BA000, 0x383BC000, 0x383BE000, + 0x383C0000, 0x383C2000, 0x383C4000, 0x383C6000, 0x383C8000, 0x383CA000, 0x383CC000, 0x383CE000, 0x383D0000, 0x383D2000, 0x383D4000, 0x383D6000, 0x383D8000, 0x383DA000, 0x383DC000, 0x383DE000, + 0x383E0000, 0x383E2000, 0x383E4000, 0x383E6000, 0x383E8000, 0x383EA000, 0x383EC000, 0x383EE000, 0x383F0000, 0x383F2000, 0x383F4000, 0x383F6000, 0x383F8000, 0x383FA000, 0x383FC000, 0x383FE000, + 0x38400000, 0x38402000, 0x38404000, 0x38406000, 0x38408000, 0x3840A000, 0x3840C000, 0x3840E000, 0x38410000, 0x38412000, 0x38414000, 0x38416000, 0x38418000, 0x3841A000, 0x3841C000, 0x3841E000, + 0x38420000, 0x38422000, 0x38424000, 0x38426000, 0x38428000, 0x3842A000, 0x3842C000, 0x3842E000, 0x38430000, 0x38432000, 0x38434000, 0x38436000, 0x38438000, 0x3843A000, 0x3843C000, 0x3843E000, + 0x38440000, 0x38442000, 0x38444000, 0x38446000, 0x38448000, 0x3844A000, 0x3844C000, 0x3844E000, 0x38450000, 0x38452000, 0x38454000, 0x38456000, 0x38458000, 0x3845A000, 0x3845C000, 0x3845E000, + 0x38460000, 0x38462000, 0x38464000, 0x38466000, 0x38468000, 0x3846A000, 0x3846C000, 0x3846E000, 0x38470000, 0x38472000, 0x38474000, 0x38476000, 0x38478000, 0x3847A000, 0x3847C000, 0x3847E000, + 0x38480000, 0x38482000, 0x38484000, 0x38486000, 0x38488000, 0x3848A000, 0x3848C000, 0x3848E000, 0x38490000, 0x38492000, 0x38494000, 0x38496000, 0x38498000, 0x3849A000, 0x3849C000, 0x3849E000, + 0x384A0000, 0x384A2000, 0x384A4000, 0x384A6000, 0x384A8000, 0x384AA000, 0x384AC000, 0x384AE000, 0x384B0000, 0x384B2000, 0x384B4000, 0x384B6000, 0x384B8000, 0x384BA000, 0x384BC000, 0x384BE000, + 0x384C0000, 0x384C2000, 0x384C4000, 0x384C6000, 0x384C8000, 0x384CA000, 0x384CC000, 0x384CE000, 0x384D0000, 0x384D2000, 0x384D4000, 0x384D6000, 0x384D8000, 0x384DA000, 0x384DC000, 0x384DE000, + 0x384E0000, 0x384E2000, 0x384E4000, 0x384E6000, 0x384E8000, 0x384EA000, 0x384EC000, 0x384EE000, 0x384F0000, 0x384F2000, 0x384F4000, 0x384F6000, 0x384F8000, 0x384FA000, 0x384FC000, 0x384FE000, + 0x38500000, 0x38502000, 0x38504000, 0x38506000, 0x38508000, 0x3850A000, 0x3850C000, 0x3850E000, 0x38510000, 0x38512000, 0x38514000, 0x38516000, 0x38518000, 0x3851A000, 0x3851C000, 0x3851E000, + 0x38520000, 0x38522000, 0x38524000, 0x38526000, 0x38528000, 0x3852A000, 0x3852C000, 0x3852E000, 0x38530000, 0x38532000, 0x38534000, 0x38536000, 0x38538000, 0x3853A000, 0x3853C000, 0x3853E000, + 0x38540000, 0x38542000, 0x38544000, 0x38546000, 0x38548000, 0x3854A000, 0x3854C000, 0x3854E000, 0x38550000, 0x38552000, 0x38554000, 0x38556000, 0x38558000, 0x3855A000, 0x3855C000, 0x3855E000, + 0x38560000, 0x38562000, 0x38564000, 0x38566000, 0x38568000, 0x3856A000, 0x3856C000, 0x3856E000, 0x38570000, 0x38572000, 0x38574000, 0x38576000, 0x38578000, 0x3857A000, 0x3857C000, 0x3857E000, + 0x38580000, 0x38582000, 0x38584000, 0x38586000, 0x38588000, 0x3858A000, 0x3858C000, 0x3858E000, 0x38590000, 0x38592000, 0x38594000, 0x38596000, 0x38598000, 0x3859A000, 0x3859C000, 0x3859E000, + 0x385A0000, 0x385A2000, 0x385A4000, 0x385A6000, 0x385A8000, 0x385AA000, 0x385AC000, 0x385AE000, 0x385B0000, 0x385B2000, 0x385B4000, 0x385B6000, 0x385B8000, 0x385BA000, 0x385BC000, 0x385BE000, + 0x385C0000, 0x385C2000, 0x385C4000, 0x385C6000, 0x385C8000, 0x385CA000, 0x385CC000, 0x385CE000, 0x385D0000, 0x385D2000, 0x385D4000, 0x385D6000, 0x385D8000, 0x385DA000, 0x385DC000, 0x385DE000, + 0x385E0000, 0x385E2000, 0x385E4000, 0x385E6000, 0x385E8000, 0x385EA000, 0x385EC000, 0x385EE000, 0x385F0000, 0x385F2000, 0x385F4000, 0x385F6000, 0x385F8000, 0x385FA000, 0x385FC000, 0x385FE000, + 0x38600000, 0x38602000, 0x38604000, 0x38606000, 0x38608000, 0x3860A000, 0x3860C000, 0x3860E000, 0x38610000, 0x38612000, 0x38614000, 0x38616000, 0x38618000, 0x3861A000, 0x3861C000, 0x3861E000, + 0x38620000, 0x38622000, 0x38624000, 0x38626000, 0x38628000, 0x3862A000, 0x3862C000, 0x3862E000, 0x38630000, 0x38632000, 0x38634000, 0x38636000, 0x38638000, 0x3863A000, 0x3863C000, 0x3863E000, + 0x38640000, 0x38642000, 0x38644000, 0x38646000, 0x38648000, 0x3864A000, 0x3864C000, 0x3864E000, 0x38650000, 0x38652000, 0x38654000, 0x38656000, 0x38658000, 0x3865A000, 0x3865C000, 0x3865E000, + 0x38660000, 0x38662000, 0x38664000, 0x38666000, 0x38668000, 0x3866A000, 0x3866C000, 0x3866E000, 0x38670000, 0x38672000, 0x38674000, 0x38676000, 0x38678000, 0x3867A000, 0x3867C000, 0x3867E000, + 0x38680000, 0x38682000, 0x38684000, 0x38686000, 0x38688000, 0x3868A000, 0x3868C000, 0x3868E000, 0x38690000, 0x38692000, 0x38694000, 0x38696000, 0x38698000, 0x3869A000, 0x3869C000, 0x3869E000, + 0x386A0000, 0x386A2000, 0x386A4000, 0x386A6000, 0x386A8000, 0x386AA000, 0x386AC000, 0x386AE000, 0x386B0000, 0x386B2000, 0x386B4000, 0x386B6000, 0x386B8000, 0x386BA000, 0x386BC000, 0x386BE000, + 0x386C0000, 0x386C2000, 0x386C4000, 0x386C6000, 0x386C8000, 0x386CA000, 0x386CC000, 0x386CE000, 0x386D0000, 0x386D2000, 0x386D4000, 0x386D6000, 0x386D8000, 0x386DA000, 0x386DC000, 0x386DE000, + 0x386E0000, 0x386E2000, 0x386E4000, 0x386E6000, 0x386E8000, 0x386EA000, 0x386EC000, 0x386EE000, 0x386F0000, 0x386F2000, 0x386F4000, 0x386F6000, 0x386F8000, 0x386FA000, 0x386FC000, 0x386FE000, + 0x38700000, 0x38702000, 0x38704000, 0x38706000, 0x38708000, 0x3870A000, 0x3870C000, 0x3870E000, 0x38710000, 0x38712000, 0x38714000, 0x38716000, 0x38718000, 0x3871A000, 0x3871C000, 0x3871E000, + 0x38720000, 0x38722000, 0x38724000, 0x38726000, 0x38728000, 0x3872A000, 0x3872C000, 0x3872E000, 0x38730000, 0x38732000, 0x38734000, 0x38736000, 0x38738000, 0x3873A000, 0x3873C000, 0x3873E000, + 0x38740000, 0x38742000, 0x38744000, 0x38746000, 0x38748000, 0x3874A000, 0x3874C000, 0x3874E000, 0x38750000, 0x38752000, 0x38754000, 0x38756000, 0x38758000, 0x3875A000, 0x3875C000, 0x3875E000, + 0x38760000, 0x38762000, 0x38764000, 0x38766000, 0x38768000, 0x3876A000, 0x3876C000, 0x3876E000, 0x38770000, 0x38772000, 0x38774000, 0x38776000, 0x38778000, 0x3877A000, 0x3877C000, 0x3877E000, + 0x38780000, 0x38782000, 0x38784000, 0x38786000, 0x38788000, 0x3878A000, 0x3878C000, 0x3878E000, 0x38790000, 0x38792000, 0x38794000, 0x38796000, 0x38798000, 0x3879A000, 0x3879C000, 0x3879E000, + 0x387A0000, 0x387A2000, 0x387A4000, 0x387A6000, 0x387A8000, 0x387AA000, 0x387AC000, 0x387AE000, 0x387B0000, 0x387B2000, 0x387B4000, 0x387B6000, 0x387B8000, 0x387BA000, 0x387BC000, 0x387BE000, + 0x387C0000, 0x387C2000, 0x387C4000, 0x387C6000, 0x387C8000, 0x387CA000, 0x387CC000, 0x387CE000, 0x387D0000, 0x387D2000, 0x387D4000, 0x387D6000, 0x387D8000, 0x387DA000, 0x387DC000, 0x387DE000, + 0x387E0000, 0x387E2000, 0x387E4000, 0x387E6000, 0x387E8000, 0x387EA000, 0x387EC000, 0x387EE000, 0x387F0000, 0x387F2000, 0x387F4000, 0x387F6000, 0x387F8000, 0x387FA000, 0x387FC000, 0x387FE000 }; + static const uint32 exponent_table[64] = { + 0x00000000, 0x00800000, 0x01000000, 0x01800000, 0x02000000, 0x02800000, 0x03000000, 0x03800000, 0x04000000, 0x04800000, 0x05000000, 0x05800000, 0x06000000, 0x06800000, 0x07000000, 0x07800000, + 0x08000000, 0x08800000, 0x09000000, 0x09800000, 0x0A000000, 0x0A800000, 0x0B000000, 0x0B800000, 0x0C000000, 0x0C800000, 0x0D000000, 0x0D800000, 0x0E000000, 0x0E800000, 0x0F000000, 0x47800000, + 0x80000000, 0x80800000, 0x81000000, 0x81800000, 0x82000000, 0x82800000, 0x83000000, 0x83800000, 0x84000000, 0x84800000, 0x85000000, 0x85800000, 0x86000000, 0x86800000, 0x87000000, 0x87800000, + 0x88000000, 0x88800000, 0x89000000, 0x89800000, 0x8A000000, 0x8A800000, 0x8B000000, 0x8B800000, 0x8C000000, 0x8C800000, 0x8D000000, 0x8D800000, 0x8E000000, 0x8E800000, 0x8F000000, 0xC7800000 }; + static const unsigned short offset_table[64] = { + 0, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 0, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 }; + uint32 bits = mantissa_table[offset_table[value>>10]+(value&0x3FF)] + exponent_table[value>>10]; +// uint32 bits = mantissa_table[(((value&0x7C00)!=0)<<10)+(value&0x3FF)] + exponent_table[value>>10]; +// return *reinterpret_cast(&bits); //violating strict aliasing! + float out; + std::memcpy(&out, &bits, sizeof(float)); + return out; + } + + /// Convert half-precision to non-IEEE single-precision. + /// \param value binary representation of half-precision value + /// \return single-precision value + inline float half2float_impl(uint16 value, false_type) + { + float out; + int abs = value & 0x7FFF; + if(abs > 0x7C00) + out = std::numeric_limits::has_quiet_NaN ? std::numeric_limits::quiet_NaN() : 0.0f; + else if(abs == 0x7C00) + out = std::numeric_limits::has_infinity ? std::numeric_limits::infinity() : std::numeric_limits::max(); + else if(abs > 0x3FF) + out = std::ldexp(static_cast((value&0x3FF)|0x400), (abs>>10)-25); + else + out = std::ldexp(static_cast(abs), -24); + return (value&0x8000) ? -out : out; + } + + /// Convert half-precision to single-precision. + /// \param value binary representation of half-precision value + /// \return single-precision value + inline float half2float(uint16 value) + { + return half2float_impl(value, bool_type::is_iec559&&sizeof(uint32)==sizeof(float)>()); + } + + /// Convert half-precision floating point to integer. + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \tparam E `true` for round to even, `false` for round away from zero + /// \tparam T type to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits) + /// \param value binary representation of half-precision value + /// \return integral value + template T half2int_impl(uint16 value) + { + unsigned int e = value & 0x7FFF; + if(e >= 0x7C00) + return (value&0x8000) ? std::numeric_limits::min() : std::numeric_limits::max(); + if(e < 0x3800) + { + if(R == std::round_toward_infinity) + return T(~(value>>15)&(e!=0)); + else if(R == std::round_toward_neg_infinity) + return -T(value>0x8000); + return T(); + } + int17 m = (value&0x3FF) | 0x400; + e >>= 10; + if(e < 25) + { + if(R == std::round_indeterminate || R == std::round_toward_zero) + m >>= 25 - e; + else + { + if(R == std::round_to_nearest) + m += (1<<(24-e)) - (~(m>>(25-e))&E); + else if(R == std::round_toward_infinity) + m += ((value>>15)-1) & ((1<<(25-e))-1U); + else if(R == std::round_toward_neg_infinity) + m += -(value>>15) & ((1<<(25-e))-1U); + m >>= 25 - e; + } + } + else + m <<= e - 25; +// if(std::numeric_limits::digits < 16) +// return std::min(std::max(m, static_cast(std::numeric_limits::min())), static_cast(std::numeric_limits::max())); + return static_cast((value&0x8000) ? -m : m); + } + + /// Convert half-precision floating point to integer. + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \tparam T type to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits) + /// \param value binary representation of half-precision value + /// \return integral value + template T half2int(uint16 value) { return half2int_impl(value); } + + /// Convert half-precision floating point to integer using round-to-nearest-away-from-zero. + /// \tparam T type to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign bits) + /// \param value binary representation of half-precision value + /// \return integral value + template T half2int_up(uint16 value) { return half2int_impl(value); } + + /// Round half-precision number to nearest integer value. + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \tparam E `true` for round to even, `false` for round away from zero + /// \param value binary representation of half-precision value + /// \return half-precision bits for nearest integral value + template uint16 round_half_impl(uint16 value) + { + unsigned int e = value & 0x7FFF; + uint16 result = value; + if(e < 0x3C00) + { + result &= 0x8000; + if(R == std::round_to_nearest) + result |= 0x3C00U & -(e>=(0x3800+E)); + else if(R == std::round_toward_infinity) + result |= 0x3C00U & -(~(value>>15)&(e!=0)); + else if(R == std::round_toward_neg_infinity) + result |= 0x3C00U & -(value>0x8000); + } + else if(e < 0x6400) + { + e = 25 - (e>>10); + unsigned int mask = (1<>e)&E); + else if(R == std::round_toward_infinity) + result += mask & ((value>>15)-1); + else if(R == std::round_toward_neg_infinity) + result += mask & -(value>>15); + result &= ~mask; + } + return result; + } + + /// Round half-precision number to nearest integer value. + /// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding + /// \param value binary representation of half-precision value + /// \return half-precision bits for nearest integral value + template uint16 round_half(uint16 value) { return round_half_impl(value); } + + /// Round half-precision number to nearest integer value using round-to-nearest-away-from-zero. + /// \param value binary representation of half-precision value + /// \return half-precision bits for nearest integral value + inline uint16 round_half_up(uint16 value) { return round_half_impl(value); } + /// \} + + struct functions; + template struct unary_specialized; + template struct binary_specialized; + template struct half_caster; + } + + /// Half-precision floating point type. + /// This class implements an IEEE-conformant half-precision floating point type with the usual arithmetic operators and + /// conversions. It is implicitly convertible to single-precision floating point, which makes artihmetic expressions and + /// functions with mixed-type operands to be of the most precise operand type. Additionally all arithmetic operations + /// (and many mathematical functions) are carried out in single-precision internally. All conversions from single- to + /// half-precision are done using truncation (round towards zero), but temporary results inside chained arithmetic + /// expressions are kept in single-precision as long as possible (while of course still maintaining a strong half-precision type). + /// + /// According to the C++98/03 definition, the half type is not a POD type. But according to C++11's less strict and + /// extended definitions it is both a standard layout type and a trivially copyable type (even if not a POD type), which + /// means it can be standard-conformantly copied using raw binary copies. But in this context some more words about the + /// actual size of the type. Although the half is representing an IEEE 16-bit type, it does not neccessarily have to be of + /// exactly 16-bits size. But on any reasonable implementation the actual binary representation of this type will most + /// probably not ivolve any additional "magic" or padding beyond the simple binary representation of the underlying 16-bit + /// IEEE number, even if not strictly guaranteed by the standard. But even then it only has an actual size of 16 bits if + /// your C++ implementation supports an unsigned integer type of exactly 16 bits width. But this should be the case on + /// nearly any reasonable platform. + /// + /// So if your C++ implementation is not totally exotic or imposes special alignment requirements, it is a reasonable + /// assumption that the data of a half is just comprised of the 2 bytes of the underlying IEEE representation. + class half + { + friend struct detail::functions; + friend struct detail::unary_specialized; + friend struct detail::binary_specialized; + template friend struct detail::half_caster; + friend struct std::numeric_limits; + #if HALF_ENABLE_CPP11_HASH + friend struct std::hash; + #endif + + public: + /// Default constructor. + /// This initializes the half to 0. Although this does not match the builtin types' default-initialization semantics + /// and may be less efficient than no initialization, it is needed to provide proper value-initialization semantics. + HALF_CONSTEXPR half() : data_() {} + + /// Copy constructor. + /// \tparam T type of concrete half expression + /// \param rhs half expression to copy from + half(detail::expr rhs) : data_(detail::float2half(rhs)) { +#ifndef HLS_NO_XIL_FPO_LIB + xip_fpo_half_set_flt(rhs); +#endif + } + + /// Conversion constructor. + /// \param rhs float to convert + half(float rhs) : data_(detail::float2half(rhs)) { +#ifndef HLS_NO_XIL_FPO_LIB + xip_fpo_half_set_flt(rhs); +#endif + } + + /// Conversion constructor from AP types. + template + half(const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& rhs) { + std::cout << "WARNING: explicit method ap_fixed::to_half() should be used to convert ap_fixed to half." << std::endl; + *this = rhs.to_half(); + } + + /// Conversion to single-precision. + /// \return single precision value representing expression value + operator float() const { +#ifdef HLS_NO_XIL_FPO_LIB + return detail::half2float(data_); +#else + return xip_fpo_half_get_flt(); +#endif + } + + /// Assignment operator. + /// \tparam T type of concrete half expression + /// \param rhs half expression to copy from + /// \return reference to this half + half& operator=(detail::expr rhs) { return *this = static_cast(rhs); } + + /// Arithmetic assignment. + /// \tparam T type of concrete half expression + /// \param rhs half expression to add + /// \return reference to this half + template typename detail::enable::type operator+=(T rhs) { return *this = *this + rhs; } + + /// Arithmetic assignment. + /// \tparam T type of concrete half expression + /// \param rhs half expression to subtract + /// \return reference to this half + template typename detail::enable::type operator-=(T rhs) { return *this = *this - rhs; } + + /// Arithmetic assignment. + /// \tparam T type of concrete half expression + /// \param rhs half expression to multiply with + /// \return reference to this half + template typename detail::enable::type operator*=(T rhs) { return *this = *this * rhs; } + + /// Arithmetic assignment. + /// \tparam T type of concrete half expression + /// \param rhs half expression to divide by + /// \return reference to this half + template typename detail::enable::type operator/=(T rhs) { return *this = *this / rhs; } + +#if 0 + /* disable to avoid ambiguous overload. */ + /// Assignment operator. + /// \param rhs single-precision value to copy from + /// \return reference to this half + half& operator=(float rhs) { +#ifdef HLS_NO_XIL_FPO_LIB + data_ = detail::float2half(rhs); +#else + xip_fpo_half_set_flt(rhs); +#endif + return *this; + } +#endif + + /// Arithmetic assignment. + /// \param rhs single-precision value to add + /// \return reference to this half + //half& operator+=(float rhs) { data_ = detail::float2half(detail::half2float(data_)+rhs); return *this; } + + /// Arithmetic assignment. + /// \param rhs single-precision value to subtract + /// \return reference to this half + //half& operator-=(float rhs) { data_ = detail::float2half(detail::half2float(data_)-rhs); return *this; } + + /// Arithmetic assignment. + /// \param rhs single-precision value to multiply with + /// \return reference to this half + //half& operator*=(float rhs) { data_ = detail::float2half(detail::half2float(data_)*rhs); return *this; } + + /// Arithmetic assignment. + /// \param rhs single-precision value to divide by + /// \return reference to this half + //half& operator/=(float rhs) { data_ = detail::float2half(detail::half2float(data_)/rhs); return *this; } + + /// Prefix increment. + /// \return incremented half value + half& operator++() { return *this += 1.0f; } + + /// Prefix decrement. + /// \return decremented half value + half& operator--() { return *this -= 1.0f; } + + /// Postfix increment. + /// \return non-incremented half value + half operator++(int) { half out(*this); ++*this; return out; } + + /// Postfix decrement. + /// \return non-decremented half value + half operator--(int) { half out(*this); --*this; return out; } + + /// Get half internal uint16 representation + /// \return packed uint16 data + detail::uint16 get_bits() { return data_; } + + /// Set half internal uint16 representation + /// \return + void set_bits(detail::uint16 bits) { data_ = bits; } + + +#ifndef HLS_NO_XIL_FPO_LIB + /// Assign value from half data to xip_fpo struct + /// \return xip_fpo exceptions + xip_fpo_exc_t xip_fpo_get_data(xip_fpo_ptr op) const { + int exc = 0; + op->_xip_fpo_sign = ((data_ & 0x8000) ? -1 : 1); + op->_xip_fpo_exp = ((data_ & 0x7C00) >> 10) - 14; + *(op->_xip_fpo_d) = ((mp_limb_t)(data_ & 0x3FF) + (mp_limb_t)(0x400)) << (8*sizeof(*(op->_xip_fpo_d)) - 11); + if ((data_ & 0x7C00) == 0) { // subnormal + exc |= 0x1; + xip_fpo_set_zero(op, op->_xip_fpo_sign); + } else if ((data_ & 0x7FFF) == 0x7C00) { // infinity + exc |= 0x2; + xip_fpo_set_inf(op, op->_xip_fpo_sign); + } else if ((data_ & 0x7FFF) > 0x7C00) { // NaN + exc |= 0x4; + xip_fpo_set_nan(op); + } + return exc; + } + + /// Convert + float xip_fpo_half_get_flt() const { + xip_fpo_t op; + xip_fpo_init2(op, 5, 11); + xip_fpo_exc_t exc = xip_fpo_get_data(op); + float res; + if (exc & 0x1) { + res = (op->_xip_fpo_sign > 0 ? 0.0f : -0.0f); + } else if (exc & 0x2) { + res = (op->_xip_fpo_sign > 0 ? std::numeric_limits::infinity() : -std::numeric_limits::infinity()); + } else if (exc & 0x4) { + res = std::numeric_limits::quiet_NaN(); + } else { + res = xip_fpo_get_flt(op); + } + xip_fpo_clear(op); + return res; + } + + /// Assign value from xip_fpo struct to half data + /// \return void + void xip_fpo_set_data(xip_fpo_ptr op) { + mpfr_t fr; + XIP_FPO_2_MPFR(fr, op); + data_ = 0; + data_ |= (op->_xip_fpo_sign == 1 ? 0 : 1) << 15; + if (mpfr_zero_p(fr)) { + data_ &= 0x8000; + } else if (mpfr_inf_p(fr)) { + data_ |= 0x7C00; + } else if (mpfr_nan_p(fr)) { + data_ |= 0x7E00; + } else { + data_ |= (op->_xip_fpo_exp + 14) << 10; + data_ |= (*(op->_xip_fpo_d) << 1) >> (8*sizeof(*(op->_xip_fpo_d)) - 10); + } + } + + /// Assignment + void xip_fpo_half_set_flt(float rhs) { + xip_fpo_t op; + xip_fpo_init2(op, 5, 11); + xip_fpo_set_flt(op, rhs); + xip_fpo_set_data(op); + xip_fpo_clear(op); + } +#endif + + private: + /// Rounding mode to use (always `std::round_indeterminate`) + static const std::float_round_style round_style = (std::float_round_style)(HALF_ROUND_STYLE); + + /// Constructor. + /// \param bits binary representation to set half to + HALF_CONSTEXPR half(detail::binary_t, detail::uint16 bits) : data_(bits) {} + + /// Internal binary representation + detail::uint16 data_; + }; + + // half simulation model with Xilinx Floating Point Operator IP core +#ifndef HLS_NO_XIL_FPO_LIB + template + half math_function_1arg(F f, half x) { + half res; + xip_fpo_t rop, xop; + xip_fpo_inits2(5, 11, rop, xop, (xip_fpo_ptr)0); + x.xip_fpo_get_data(xop); + f(rop, xop); + res.xip_fpo_set_data(rop); + xip_fpo_clears(rop, xop, (xip_fpo_ptr)0); + return res; + } + + template + half binary_operator(F f, half x, half y) { + half res; + xip_fpo_t op, xop, yop; + xip_fpo_inits2(5, 11, op, xop, yop, (xip_fpo_ptr)0); + x.xip_fpo_get_data(xop); + y.xip_fpo_get_data(yop); + f(op, xop, yop); + res.xip_fpo_set_data(op); + xip_fpo_clears(op, xop, yop, (xip_fpo_ptr)0); + return res; + } + // perform comparison + template + bool binary_operator_compare(F f, half x, half y) { + int res; + xip_fpo_t xop, yop; + xip_fpo_inits2(5, 11, xop, yop, (xip_fpo_ptr)0); + x.xip_fpo_get_data(xop); + y.xip_fpo_get_data(yop); + f(&res, xop, yop); + xip_fpo_clears(xop, yop, (xip_fpo_ptr)0); + return res; + } +#endif + +#if HALF_ENABLE_CPP11_USER_LITERALS + /// Library-defined half-precision literals. + /// Import this namespace to enable half-precision floating point literals: + /// ~~~~{.cpp} + /// using namespace literal; + /// half = 4.2_h; + /// ~~~~ + namespace literal + { + /// Half literal. + /// While this returns an actual half-precision value, half literals can unfortunately not be constant expressions due + /// to rather involved single-to-half conversion. + /// \param value literal value + /// \return half with given value (if representable) + inline half operator "" _h(long double value) { return half(static_cast(value)); } + } +#endif + + + namespace detail + { + /// Wrapper implementing unspecialized half-precision functions. + struct functions + { + /// Addition implementation. + /// \param x first operand + /// \param y second operand + /// \return Half-precision sum +#ifdef HLS_NO_XIL_FPO_LIB + /// \return Half-precision sum stored in single-precision + static expr plus(float x, float y) { return expr(x+y); } +#else + template + static half plus(T1 x, T2 y) { return binary_operator(xip_fpo_add, x, y); } + static float plus(float x, half y) { return HLS_FPO_ADDF(x,y); } + static float plus(half x, float y) { return HLS_FPO_ADDF(x,y); } + static double plus(double x, half y) { return HLS_FPO_ADD(x,y); } + static double plus(half x, double y) { return HLS_FPO_ADD(x,y); } +#endif + + /// Subtraction implementation. + /// \param x first operand + /// \param y second operand + /// \return Half-precision difference +#ifdef HLS_NO_XIL_FPO_LIB + /// \return Half-precision sum stored in single-precision + static expr minus(float x, float y) { return expr(x-y); } +#else + template + static half minus(T1 x, T2 y) { return binary_operator(xip_fpo_sub, x, y); } + static float minus(float x, half y) { return HLS_FPO_SUBF(x,y); } + static float minus(half x, float y) { return HLS_FPO_SUBF(x,y); } + static double minus(double x, half y) { return HLS_FPO_SUB(x,y); } + static double minus(half x, double y) { return HLS_FPO_SUB(x,y); } +#endif + + /// Multiplication implementation. + /// \param x first operand + /// \param y second operand + /// \return Half-precision product +#ifdef HLS_NO_XIL_FPO_LIB + /// \return Half-precision sum stored in single-precision + static expr multiplies(float x, float y) { return expr(x*y); } +#else + template + static half multiplies(T1 x, T2 y) { return binary_operator(xip_fpo_mul, x, y); } + static float multiplies(float x, half y) { return HLS_FPO_MULF(x,y); } + static float multiplies(half x, float y) { return HLS_FPO_MULF(x,y); } + static double multiplies(double x, half y) { return HLS_FPO_MUL(x,y); } + static double multiplies(half x, double y) { return HLS_FPO_MUL(x,y); } +#endif + + /// Division implementation. + /// \param x first operand + /// \param y second operand + /// \return Half-precision quotient +#ifdef HLS_NO_XIL_FPO_LIB + /// \return Half-precision sum stored in single-precision + static expr divides(float x, float y) { return expr(x/y); } +#else + template + static half divides(T1 x, T2 y) { return binary_operator(xip_fpo_div, x, y); } + static float divides(float x, half y) { return HLS_FPO_DIVF(x,y); } + static float divides(half x, float y) { return HLS_FPO_DIVF(x,y); } + static double divides(double x, half y) { return HLS_FPO_DIV(x,y); } + static double divides(half x, double y) { return HLS_FPO_DIV(x,y); } +#endif + + /// Output implementation. + /// \param out stream to write to + /// \param arg value to write + /// \return reference to stream + template static std::basic_ostream& write(std::basic_ostream &out, float arg) { return out << arg; } + + /// Input implementation. + /// \param in stream to read from + /// \param arg half to read into + /// \return reference to stream + template static std::basic_istream& read(std::basic_istream &in, half &arg) + { + float f; + if(in >> f) + arg = f; + return in; + } + + /// Modulo implementation. + /// \param x first operand + /// \param y second operand + /// \return Half-precision division remainder stored in single-precision + static expr fmod(float x, float y) { return expr(std::fmod(x, y)); } + + /// Remainder implementation. + /// \param x first operand + /// \param y second operand + /// \return Half-precision division remainder stored in single-precision + static expr remainder(float x, float y) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::remainder(x, y)); + #else + if(builtin_isnan(x) || builtin_isnan(y)) + return expr(std::numeric_limits::quiet_NaN()); + float ax = std::fabs(x), ay = std::fabs(y); + if(ax >= 65536.0f || ay < std::ldexp(1.0f, -24)) + return expr(std::numeric_limits::quiet_NaN()); + if(ay >= 65536.0f) + return expr(x); + if(ax == ay) + return expr(builtin_signbit(x) ? -0.0f : 0.0f); + ax = std::fmod(ax, ay+ay); + float y2 = 0.5f * ay; + if(ax > y2) + { + ax -= ay; + if(ax >= y2) + ax -= ay; + } + return expr(builtin_signbit(x) ? -ax : ax); + #endif + } + + /// Remainder implementation. + /// \param x first operand + /// \param y second operand + /// \param quo address to store quotient bits at + /// \return Half-precision division remainder stored in single-precision + static expr remquo(float x, float y, int *quo) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::remquo(x, y, quo)); + #else + if(builtin_isnan(x) || builtin_isnan(y)) + return expr(std::numeric_limits::quiet_NaN()); + bool sign = builtin_signbit(x), qsign = static_cast(sign^builtin_signbit(y)); + float ax = std::fabs(x), ay = std::fabs(y); + if(ax >= 65536.0f || ay < std::ldexp(1.0f, -24)) + return expr(std::numeric_limits::quiet_NaN()); + if(ay >= 65536.0f) + return expr(x); + if(ax == ay) + return *quo = qsign ? -1 : 1, expr(sign ? -0.0f : 0.0f); + ax = std::fmod(ax, 8.0f*ay); + int cquo = 0; + if(ax >= 4.0f * ay) + { + ax -= 4.0f * ay; + cquo += 4; + } + if(ax >= 2.0f * ay) + { + ax -= 2.0f * ay; + cquo += 2; + } + float y2 = 0.5f * ay; + if(ax > y2) + { + ax -= ay; + ++cquo; + if(ax >= y2) + { + ax -= ay; + ++cquo; + } + } + return *quo = qsign ? -cquo : cquo, expr(sign ? -ax : ax); + #endif + } + + /// Positive difference implementation. + /// \param x first operand + /// \param y second operand + /// \return Positive difference stored in single-precision + static expr fdim(float x, float y) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::fdim(x, y)); + #else + return expr((x<=y) ? 0.0f : (x-y)); + #endif + } + + static expr maxmag(float x, float y) + { + if (fabs(y)>fabs(x)) return expr(y); + else return expr(x); + } + + static expr minmag(float x, float y) + { + if (fabs(y)(std::exp(static_cast(arg))-1.0)); + #endif + } + + /// Binary exponential implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr exp2(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::exp2(arg)); + #else + return expr(static_cast(std::exp(arg*0.69314718055994530941723212145818))); + #endif + } + + /// Logarithm implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr log(float arg) { return expr(std::log(arg)); } + + /// Common logarithm implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr log10(float arg) { return expr(std::log10(arg)); } + + /// Logarithm implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr log1p(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::log1p(arg)); + #else + return expr(static_cast(std::log(1.0+arg))); + #endif + } + + /// Binary logarithm implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr log2(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::log2(arg)); + #else + return expr(static_cast(std::log(static_cast(arg))*1.4426950408889634073599246810019)); + #endif + } + + static expr logb(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::logb(arg)); + #else + return expr(static_cast(std::log(static_cast(fabs(arg)))*1.4426950408889634073599246810019)); + #endif + } + + /// Square root implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr sqrt(float arg) { return expr(std::sqrt(arg)); } + + /// Cubic root implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr cbrt(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::cbrt(arg)); + #else + if(builtin_isnan(arg) || builtin_isinf(arg)) + return expr(arg); + return expr(builtin_signbit(arg) ? -static_cast(std::pow(std::fabs(static_cast(arg)), 1.0/3.0)) : + static_cast(std::pow(static_cast(arg), 1.0/3.0))); + #endif + } + + /// Hypotenuse implementation. + /// \param x first argument + /// \param y second argument + /// \return function value stored in single-preicision + static expr hypot(float x, float y) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::hypot(x, y)); + #else + return expr((builtin_isinf(x) || builtin_isinf(y)) ? std::numeric_limits::infinity() : + static_cast(std::sqrt(static_cast(x)*x+static_cast(y)*y))); + #endif + } + + /// Power implementation. + /// \param base value to exponentiate + /// \param exp power to expontiate to + /// \return function value stored in single-preicision + static expr pow(float base, float exp) { return expr(std::pow(base, exp)); } + static expr powr(float base, float exp) { return expr(std::pow(base, exp)); } + static expr pown(float base, int exp) { return expr(std::pow(base, exp)); } + static expr rootn(float base, int exp) { return expr(std::pow(base, float(float(1)/float(exp)))); } + + /// Sine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr sin(float arg) { return expr(std::sin(arg)); } + + /// Cosine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr cos(float arg) { return expr(std::cos(arg)); } + + /// Tan implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr tan(float arg) { return expr(std::tan(arg)); } + + /// Arc sine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr asin(float arg) { return expr(std::asin(arg)); } + + /// Arc cosine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr acos(float arg) { return expr(std::acos(arg)); } + + /// Arc tangent implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr atan(float arg) { return expr(std::atan(arg)); } + + /// Arc tangent implementation. + /// \param x first argument + /// \param y second argument + /// \return function value stored in single-preicision + static expr atan2(float x, float y) { return expr(std::atan2(x, y)); } + + /// Hyperbolic sine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr sinh(float arg) { return expr(std::sinh(arg)); } + + /// Hyperbolic cosine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr cosh(float arg) { return expr(std::cosh(arg)); } + + /// Hyperbolic tangent implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr tanh(float arg) { return expr(std::tanh(arg)); } + + /// Hyperbolic area sine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr asinh(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::asinh(arg)); + #else + return expr((arg==-std::numeric_limits::infinity()) ? arg : static_cast(std::log(arg+std::sqrt(arg*arg+1.0)))); + #endif + } + + /// Hyperbolic area cosine implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr acosh(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::acosh(arg)); + #else + return expr((arg<-1.0f) ? std::numeric_limits::quiet_NaN() : static_cast(std::log(arg+std::sqrt(arg*arg-1.0)))); + #endif + } + + /// Hyperbolic area tangent implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr atanh(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::atanh(arg)); + #else + return expr(static_cast(0.5*std::log((1.0+arg)/(1.0-arg)))); + #endif + } + + /// Error function implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr erf(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::erf(arg)); + #else + return expr(static_cast(erf(static_cast(arg)))); + #endif + } + + /// Complementary implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr erfc(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::erfc(arg)); + #else + return expr(static_cast(1.0-erf(static_cast(arg)))); + #endif + } + + /// Gamma logarithm implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr lgamma(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::lgamma(arg)); + #else + if(builtin_isinf(arg)) + return expr(std::numeric_limits::infinity()); + double z = static_cast(arg); + if(z < 0) + { + double i, f = std::modf(-z, &i); + if(f == 0.0) + return expr(std::numeric_limits::infinity()); + return expr(static_cast(1.1447298858494001741434273513531-std::log(std::abs(std::sin(3.1415926535897932384626433832795*f)))-lgamma(1.0-z))); + } +// if(z < 8.0) + return expr(static_cast(lgamma(static_cast(arg)))); + return expr(static_cast(0.5*(1.8378770664093454835606594728112-std::log(z))+z*(std::log(z+1.0/(12.0*z-1.0/(10.0*z)-1.0))-1.0))); + #endif + } + + /// Gamma implementation. + /// \param arg function argument + /// \return function value stored in single-preicision + static expr tgamma(float arg) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::tgamma(arg)); + #else + double z = static_cast(arg); + if(z == 0.0) + return builtin_signbit(z) ? expr(-std::numeric_limits::infinity()) : expr(std::numeric_limits::infinity()); + if(z < 0.0) + { + double i, f = std::modf(-z, &i); + if(f == 0.0) + return expr(std::numeric_limits::quiet_NaN()); + double sign = (std::fmod(i, 2.0)==0.0) ? -1.0 : 1.0; + return expr(static_cast(sign*3.1415926535897932384626433832795/(std::sin(3.1415926535897932384626433832795*f)*std::exp(lgamma(1.0-z))))); + } + if(builtin_isinf(arg)) + return expr(arg); +// if(arg < 8.0f) + return expr(static_cast(std::exp(lgamma(z)))); + return expr(static_cast(std::sqrt(6.283185307179586476925286766559/z)*std::pow(0.36787944117144232159552377016146*(z+1.0/(12.0*z-1.0/(10.0*z))), z))); + #endif + } + + /// Floor implementation. + /// \param arg value to round + /// \return rounded value + static half floor(half arg) { return half(binary, round_half(arg.data_)); } + + /// Ceiling implementation. + /// \param arg value to round + /// \return rounded value + static half ceil(half arg) { return half(binary, round_half(arg.data_)); } + + /// Truncation implementation. + /// \param arg value to round + /// \return rounded value + static half trunc(half arg) { return half(binary, round_half(arg.data_)); } + + /// Nearest integer implementation. + /// \param arg value to round + /// \return rounded value + static half round(half arg) { return half(binary, round_half_up(arg.data_)); } + + /// Nearest integer implementation. + /// \param arg value to round + /// \return rounded value + static long lround(half arg) { return detail::half2int_up(arg.data_); } + + /// Nearest integer implementation. + /// \param arg value to round + /// \return rounded value + static half rint(half arg) { return half(binary, round_half(arg.data_)); } + + /// Nearest integer implementation. + /// \param arg value to round + /// \return rounded value + static long lrint(half arg) { return detail::half2int(arg.data_); } + + #if HALF_ENABLE_CPP11_LONG_LONG + /// Nearest integer implementation. + /// \param arg value to round + /// \return rounded value + static long long llround(half arg) { return detail::half2int_up(arg.data_); } + + /// Nearest integer implementation. + /// \param arg value to round + /// \return rounded value + static long long llrint(half arg) { return detail::half2int(arg.data_); } + #endif + + /// Decompression implementation. + /// \param arg number to decompress + /// \param exp address to store exponent at + /// \return normalized significant + static half frexp(half arg, int *exp) + { + unsigned int m = arg.data_ & 0x7FFF; + if(m >= 0x7C00 || !m) + return *exp = 0, arg; + int e = m >> 10; + if(!e) + for(m<<=1; m<0x400; m<<=1,--e) ; + return *exp = e-14, half(binary, static_cast((arg.data_&0x8000)|0x3800|(m&0x3FF))); + } + + /// Decompression implementation. + /// \param arg number to decompress + /// \param iptr address to store integer part at + /// \return fractional part + static half modf(half arg, half *iptr) + { + unsigned int e = arg.data_ & 0x7C00; + if(e > 0x6000) + return *iptr = arg, (e==0x7C00&&(arg.data_&0x3FF)) ? arg : half(binary, arg.data_&0x8000); + if(e < 0x3C00) + return iptr->data_ = arg.data_ & 0x8000, arg; + e >>= 10; + unsigned int mask = (1<<(25-e)) - 1, m = arg.data_ & mask; + iptr->data_ = arg.data_ & ~mask; + if(!m) + return half(binary, arg.data_&0x8000); + for(; m<0x400; m<<=1,--e) ; + return half(binary, static_cast((arg.data_&0x8000)|(e<<10)|(m&0x3FF))); + } + + /// Scaling implementation. + /// \param arg number to scale + /// \param exp power of two to scale by + /// \return scaled number + static half scalbln(half arg, long exp) + { + long e = arg.data_ & 0x7C00; + if(e == 0x7C00) + return arg; + unsigned int m = arg.data_ & 0x3FF; + if(e >>= 10) + m |= 0x400; + else + { + if(!m) + return arg; + for(m<<=1; m<0x400; m<<=1,--e) ; + } + e += exp; + uint16 value = arg.data_ & 0x8000; + if(e > 30) + { + if(half::round_style == std::round_toward_zero) + value |= 0x7BFF; + else if(half::round_style == std::round_toward_infinity) + value |= 0x7C00 - (value>>15); + else if(half::round_style == std::round_toward_neg_infinity) + value |= 0x7BFF + (value>>15); + else + value |= 0x7C00; + } + else if(e > 0) + value |= (e<<10) | (m&0x3FF); + else if(e > -11) + { + if(half::round_style == std::round_to_nearest) + { + m += 1 << -e; + #if HALF_ROUND_TIES_TO_EVEN + m -= (m>>(1-e)) & 1; + #endif + } + else if(half::round_style == std::round_toward_infinity) + m += ((value>>15)-1) & ((1<<(1-e))-1U); + else if(half::round_style == std::round_toward_neg_infinity) + m += -(value>>15) & ((1<<(1-e))-1U); + value |= m >> (1-e); + } + else if(half::round_style == std::round_toward_infinity) + value |= ((value>>15)-1) & 1; + else if(half::round_style == std::round_toward_neg_infinity) + value |= value >> 15; + return half(binary, value); + } + + /// Exponent implementation. + /// \param arg number to query + /// \return floating point exponent + static int ilogb(half arg) + { + int exp = arg.data_ & 0x7FFF; + if(!exp) + return FP_ILOGB0; + if(exp < 0x7C00) + { + if(!(exp>>=10)) + for(unsigned int m=(arg.data_&0x3FF); m<0x200; m<<=1,--exp) ; + return exp - 15; + } + if(exp > 0x7C00) + return FP_ILOGBNAN; + return INT_MAX; + } + + /// \param from number to increase/decrease + /// \param to direction to enumerate into + /// \return next representable number + static half nextafter(half from, half to) + { + uint16 fabs = from.data_ & 0x7FFF, tabs = to.data_ & 0x7FFF; + if(fabs > 0x7C00) + return from; + if(tabs > 0x7C00 || from.data_ == to.data_ || !(fabs|tabs)) + return to; + if(!fabs) + return half(binary, (to.data_&0x8000)+1); + bool lt = (signbit(from) ? (static_cast(0x8000)-from.data_) : static_cast(from.data_)) < + (signbit(to) ? (static_cast(0x8000)-to.data_) : static_cast(to.data_)); + return half(binary, from.data_+(((from.data_>>15)^static_cast(lt))<<1)-1); + } + + /// Enumeration implementation. + /// \param from number to increase/decrease + /// \param to direction to enumerate into + /// \return next representable number + static half nexttoward(half from, long double to) + { + if(isnan(from)) + return from; + long double lfrom = static_cast(from); + if(builtin_isnan(to) || lfrom == to) + return half(static_cast(to)); + if(!(from.data_&0x7FFF)) + return half(binary, (static_cast(builtin_signbit(to))<<15)+1); + return half(binary, from.data_+(((from.data_>>15)^static_cast(lfrom 0x7C00) + return FP_NAN; + if(abs == 0x7C00) + return FP_INFINITE; + if(abs > 0x3FF) + return FP_NORMAL; + return abs ? FP_SUBNORMAL : FP_ZERO; + } + + /// Classification implementation. + /// \param arg value to classify + /// \retval true if finite number + /// \retval false else + static bool isfinite(half arg) { return (arg.data_&0x7C00) != 0x7C00; } + + /// Classification implementation. + /// \param arg value to classify + /// \retval true if infinite number + /// \retval false else + static bool isinf(half arg) { return (arg.data_&0x7FFF) == 0x7C00; } + + /// Classification implementation. + /// \param arg value to classify + /// \retval true if not a number + /// \retval false else + static bool isnan(half arg) { return (arg.data_&0x7FFF) > 0x7C00; } + + /// Classification implementation. + /// \param arg value to classify + /// \retval true if normal number + /// \retval false else + static bool isnormal(half arg) { return ((arg.data_&0x7C00)!=0) & ((arg.data_&0x7C00)!=0x7C00); } + + /// Sign bit implementation. + /// \param arg value to check + /// \retval true if signed + /// \retval false if unsigned + static bool signbit(half arg) { return (arg.data_&0x8000) != 0; } + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if operands equal + /// \retval false else +#ifdef HLS_NO_XIL_FPO_LIB + static bool isequal(half x, half y) { return (x.data_==y.data_ || !((x.data_|y.data_)&0x7FFF)) && !isnan(x); } +#else + template + static bool isequal(T1 x, T2 y) { return binary_operator_compare(xip_fpo_equal, x, y); } + static bool isequal(float x, half y) { return HLS_FPO_EQUALF(x,y); } + static bool isequal(half x, float y) { return HLS_FPO_EQUALF(x,y); } + static bool isequal(double x, half y) { return HLS_FPO_EQUAL(x,y); } + static bool isequal(half x, double y) { return HLS_FPO_EQUAL(x,y); } +#endif + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if operands not equal + /// \retval false else +#ifdef HLS_NO_XIL_FPO_LIB + static bool isnotequal(half x, half y) { return (x.data_!=y.data_ && ((x.data_|y.data_)&0x7FFF)) || isnan(x); } +#else + template + static bool isnotequal(T1 x, T2 y) { return binary_operator_compare(xip_fpo_notequal, x, y); } + static bool isnotequal(float x, half y) { return HLS_FPO_NOTEQUALF(x,y); } + static bool isnotequal(half x, float y) { return HLS_FPO_NOTEQUALF(x,y); } + static bool isnotequal(double x, half y) { return HLS_FPO_NOTEQUAL(x,y); } + static bool isnotequal(half x, double y) { return HLS_FPO_NOTEQUAL(x,y); } +#endif + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x > \a y + /// \retval false else +#ifdef HLS_NO_XIL_FPO_LIB + static bool isgreater(half x, half y) { return !isnan(x) && !isnan(y) && ((signbit(x) ? (static_cast(0x8000)-x.data_) : + static_cast(x.data_)) > (signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_))); } +#else + template + static bool isgreater(T1 x, T2 y) { return binary_operator_compare(xip_fpo_greater, x, y); } + static bool isgreater(float x, half y) { return HLS_FPO_GREATERF(x,y); } + static bool isgreater(half x, float y) { return HLS_FPO_GREATERF(x,y); } + static bool isgreater(double x, half y) { return HLS_FPO_GREATER(x,y); } + static bool isgreater(half x, double y) { return HLS_FPO_GREATER(x,y); } +#endif + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x >= \a y + /// \retval false else +#ifdef HLS_NO_XIL_FPO_LIB + static bool isgreaterequal(half x, half y) { return !isnan(x) && !isnan(y) && ((signbit(x) ? (static_cast(0x8000)-x.data_) : + static_cast(x.data_)) >= (signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_))); } +#else + template + static bool isgreaterequal(T1 x, T2 y) { return binary_operator_compare(xip_fpo_greaterequal, x, y); } + static bool isgreaterequal(float x, half y) { return HLS_FPO_GREATEREQUALF(x,y); } + static bool isgreaterequal(half x, float y) { return HLS_FPO_GREATEREQUALF(x,y); } + static bool isgreaterequal(double x, half y) { return HLS_FPO_GREATEREQUAL(x,y); } + static bool isgreaterequal(half x, double y) { return HLS_FPO_GREATEREQUAL(x,y); } +#endif + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x < \a y + /// \retval false else +#ifdef HLS_NO_XIL_FPO_LIB + static bool isless(half x, half y) { return !isnan(x) && !isnan(y) && ((signbit(x) ? (static_cast(0x8000)-x.data_) : + static_cast(x.data_)) < (signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_))); } +#else + template + static bool isless(T1 x, T2 y) { return binary_operator_compare(xip_fpo_less, x, y); } + static bool isless(float x, half y) { return HLS_FPO_LESSF(x,y); } + static bool isless(half x, float y) { return HLS_FPO_LESSF(x,y); } + static bool isless(double x, half y) { return HLS_FPO_LESS(x,y); } + static bool isless(half x, double y) { return HLS_FPO_LESS(x,y); } +#endif + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x <= \a y + /// \retval false else +#ifdef HLS_NO_XIL_FPO_LIB + static bool islessequal(half x, half y) { return !isnan(x) && !isnan(y) && ((signbit(x) ? (static_cast(0x8000)-x.data_) : + static_cast(x.data_)) <= (signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_))); } +#else + template + static bool islessequal(T1 x, T2 y) { return binary_operator_compare(xip_fpo_lessequal, x, y); } + static bool islessequal(float x, half y) { return HLS_FPO_LESSEQUALF(x,y); } + static bool islessequal(half x, float y) { return HLS_FPO_LESSEQUALF(x,y); } + static bool islessequal(double x, half y) { return HLS_FPO_LESSEQUAL(x,y); } + static bool islessequal(half x, double y) { return HLS_FPO_LESSEQUAL(x,y); } +#endif + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true neither \a x > \a y nor \a x < \a y + /// \retval false else + static bool islessgreater(half x, half y) + { + if(isnan(x) || isnan(y)) + return false; + //int17 a = signbit(x) ? (static_cast(0x8000)-x.data_) : static_cast(x.data_); + //int17 b = signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_); + //return a < b || a > b; + return isless(x, y) || isgreater(x, y); + } + + /// Comparison implementation. + /// \param x first operand + /// \param y second operand + /// \retval true if operand unordered + /// \retval false else + static bool isunordered(half x, half y) { return isnan(x) || isnan(y); } + + private: + static double erf(double arg) + { + if(builtin_isinf(arg)) + return (arg<0.0) ? -1.0 : 1.0; + double x2 = static_cast(arg) * static_cast(arg), ax2 = 0.147 * x2; + double value = std::sqrt(1.0-std::exp(-x2*(1.2732395447351626861510701069801+ax2)/(1.0+ax2))); + return builtin_signbit(arg) ? -value : value; + } + + static double lgamma(double arg) + { + double v = 1.0; + for(; arg<8.0; ++arg) v *= arg; + double w = 1.0 / (arg * arg); + return (((((((-0.02955065359477124183006535947712*w+0.00641025641025641025641025641026)*w+ + -0.00191752691752691752691752691753)*w+8.4175084175084175084175084175084e-4)*w+ + -5.952380952380952380952380952381e-4)*w+7.9365079365079365079365079365079e-4)*w+ + -0.00277777777777777777777777777778)*w+0.08333333333333333333333333333333)/arg + + 0.91893853320467274178032973640562 - std::log(v) - arg + (arg-0.5) * std::log(arg); + } + }; + + /// Wrapper for unary half-precision functions needing specialization for individual argument types. + /// \tparam T argument type + template struct unary_specialized + { + /// Negation implementation. + /// \param arg value to negate + /// \return negated value + static HALF_CONSTEXPR half negate(half arg) { return half(binary, arg.data_^0x8000); } + + /// Absolute value implementation. + /// \param arg function argument + /// \return absolute value + static half fabs(half arg) { return half(binary, arg.data_&0x7FFF); } + }; + template<> struct unary_specialized + { + static HALF_CONSTEXPR expr negate(float arg) { return expr(-arg); } + static expr fabs(float arg) { return expr(std::fabs(arg)); } + }; + + /// Wrapper for binary half-precision functions needing specialization for individual argument types. + /// \tparam T first argument type + /// \tparam U first argument type + template struct binary_specialized + { + /// Minimum implementation. + /// \param x first operand + /// \param y second operand + /// \return minimum value + static expr fmin(float x, float y) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::fmin(x, y)); + #else + if(builtin_isnan(x)) + return expr(y); + if(builtin_isnan(y)) + return expr(x); + return expr(std::min(x, y)); + #endif + } + + /// Maximum implementation. + /// \param x first operand + /// \param y second operand + /// \return maximum value + static expr fmax(float x, float y) + { + #if HALF_ENABLE_CPP11_CMATH + return expr(std::fmax(x, y)); + #else + if(builtin_isnan(x)) + return expr(y); + if(builtin_isnan(y)) + return expr(x); + return expr(std::max(x, y)); + #endif + } + }; + template<> struct binary_specialized + { + static half fmin(half x, half y) + { + if(functions::isnan(x)) + return y; + if(functions::isnan(y)) + return x; + return ((functions::signbit(x) ? (static_cast(0x8000)-x.data_) : static_cast(x.data_)) > + (functions::signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_))) ? y : x; + } + static half fmax(half x, half y) + { + if(functions::isnan(x)) + return y; + if(functions::isnan(y)) + return x; + return ((functions::signbit(x) ? (static_cast(0x8000)-x.data_) : static_cast(x.data_)) < + (functions::signbit(y) ? (static_cast(0x8000)-y.data_) : static_cast(y.data_))) ? y : x; + } + }; + + /// Helper class for half casts. + /// This class template has to be specialized for all valid cast argument to define an appropriate static `cast` member + /// function and a corresponding `type` member denoting its return type. + /// \tparam T destination type + /// \tparam U source type + /// \tparam R rounding mode to use + template struct half_caster {}; + template struct half_caster + { + #if HALF_ENABLE_CPP11_STATIC_ASSERT && HALF_ENABLE_CPP11_TYPE_TRAITS + static_assert(std::is_arithmetic::value, "half_cast from non-arithmetic type unsupported"); + #endif + + typedef half type; + static half cast(U arg) { return cast_impl(arg, is_float()); }; + + private: + static half cast_impl(U arg, true_type) { return half(binary, float2half(static_cast(arg))); } + static half cast_impl(U arg, false_type) { return half(binary, int2half(arg)); } + }; + template struct half_caster + { + #if HALF_ENABLE_CPP11_STATIC_ASSERT && HALF_ENABLE_CPP11_TYPE_TRAITS + static_assert(std::is_arithmetic::value, "half_cast to non-arithmetic type unsupported"); + #endif + + typedef T type; + template static T cast(U arg) { return cast_impl(arg, is_float()); } + + private: + static T cast_impl(float arg, true_type) { return static_cast(arg); } + static T cast_impl(half arg, false_type) { return half2int(arg.data_); } + }; + template struct half_caster : public half_caster {}; + template struct half_caster + { + typedef half type; + static half cast(half arg) { return arg; } + }; + template struct half_caster : public half_caster {}; + + /// \name Comparison operators + /// \{ + + /// the behavior of comparison operators' simulation model is same with STD/following implmentation + /// so no need to call FPO model + + /// Comparison for equality. + /// \param x first operand + /// \param y second operand + /// \retval true if operands equal + /// \retval false else + template typename enable::type operator==(T x, U y) { return functions::isequal(x, y); } + + /// Comparison for inequality. + /// \param x first operand + /// \param y second operand + /// \retval true if operands not equal + /// \retval false else + template typename enable::type operator!=(T x, U y) { return functions::isnotequal(x, y); } + + /// Comparison for less than. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x less than \a y + /// \retval false else + template typename enable::type operator<(T x, U y) { return functions::isless(x, y); } + + /// Comparison for greater than. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x greater than \a y + /// \retval false else + template typename enable::type operator>(T x, U y) { return functions::isgreater(x, y); } + + /// Comparison for less equal. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x less equal \a y + /// \retval false else + template typename enable::type operator<=(T x, U y) { return functions::islessequal(x, y); } + + /// Comparison for greater equal. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x greater equal \a y + /// \retval false else + template typename enable::type operator>=(T x, U y) { return functions::isgreaterequal(x, y); } + + /// \} + /// \name Arithmetic operators + /// \{ + + /// Add halfs. + /// \param x left operand + /// \param y right operand + /// \return sum of half expressions +#ifdef HLS_NO_XIL_FPO_LIB + template typename enable::type operator+(T x, U y) { return functions::plus(x, y); } +#else + template typename enable::type operator+(T x, U y) { return functions::plus(x, y); } +#endif + + /// Subtract halfs. + /// \param x left operand + /// \param y right operand + /// \return difference of half expressions +#ifdef HLS_NO_XIL_FPO_LIB + template typename enable::type operator-(T x, U y) { return functions::minus(x, y); } +#else + template typename enable::type operator-(T x, U y) { return functions::minus(x, y); } +#endif + + /// Multiply halfs. + /// \param x left operand + /// \param y right operand + /// \return product of half expressions +#ifdef HLS_NO_XIL_FPO_LIB + template typename enable::type operator*(T x, U y) { return functions::multiplies(x, y); } +#else + template typename enable::type operator*(T x, U y) { return functions::multiplies(x, y); } +#endif + + /// Divide halfs. + /// \param x left operand + /// \param y right operand + /// \return quotient of half expressions +#ifdef HLS_NO_XIL_FPO_LIB + template typename enable::type operator/(T x, U y) { return functions::divides(x, y); } +#else + template typename enable::type operator/(T x, U y) { return functions::divides(x, y); } +#endif + + /// Identity. + /// \param arg operand + /// \return uncahnged operand + template HALF_CONSTEXPR typename enable::type operator+(T arg) { return arg; } + + /// Negation. + /// \param arg operand + /// \return negated operand + template HALF_CONSTEXPR typename enable::type operator-(T arg) { return unary_specialized::negate(arg); } + + /// \} + /// \name Input and output + /// \{ + + /// Output operator. + /// \param out output stream to write into + /// \param arg half expression to write + /// \return reference to output stream + template typename enable&,T>::type + operator<<(std::basic_ostream &out, T arg) { return functions::write(out, arg); } + + /// Input operator. + /// \param in input stream to read from + /// \param arg half to read into + /// \return reference to input stream + template std::basic_istream& + operator>>(std::basic_istream &in, half &arg) { return functions::read(in, arg); } + + /// \} + /// \name Basic mathematical operations + /// \{ + + /// Absolute value. + /// \param arg operand + /// \return absolute value of \a arg +// template typename enable::type abs(T arg) { return unary_specialized::fabs(arg); } + inline half abs(half arg) { return unary_specialized::fabs(arg); } + inline expr abs(expr arg) { return unary_specialized::fabs(arg); } + + /// Absolute value. + /// \param arg operand + /// \return absolute value of \a arg +// template typename enable::type fabs(T arg) { return unary_specialized::fabs(arg); } + inline half fabs(half arg) { return unary_specialized::fabs(arg); } + inline expr fabs(expr arg) { return unary_specialized::fabs(arg); } + + /// Remainder of division. + /// \param x first operand + /// \param y second operand + /// \return remainder of floating point division. +// template typename enable::type fmod(T x, U y) { return functions::fmod(x, y); } + inline expr fmod(half x, half y) { return functions::fmod(x, y); } + inline expr fmod(half x, expr y) { return functions::fmod(x, y); } + inline expr fmod(expr x, half y) { return functions::fmod(x, y); } + inline expr fmod(expr x, expr y) { return functions::fmod(x, y); } + + /// Remainder of division. + /// \param x first operand + /// \param y second operand + /// \return remainder of floating point division. +// template typename enable::type remainder(T x, U y) { return functions::remainder(x, y); } + inline expr remainder(half x, half y) { return functions::remainder(x, y); } + inline expr remainder(half x, expr y) { return functions::remainder(x, y); } + inline expr remainder(expr x, half y) { return functions::remainder(x, y); } + inline expr remainder(expr x, expr y) { return functions::remainder(x, y); } + + /// Remainder of division. + /// \param x first operand + /// \param y second operand + /// \param quo address to store some bits of quotient at + /// \return remainder of floating point division. +// template typename enable::type remquo(T x, U y, int *quo) { return functions::remquo(x, y, quo); } + inline expr remquo(half x, half y, int *quo) { return functions::remquo(x, y, quo); } + inline expr remquo(half x, expr y, int *quo) { return functions::remquo(x, y, quo); } + inline expr remquo(expr x, half y, int *quo) { return functions::remquo(x, y, quo); } + inline expr remquo(expr x, expr y, int *quo) { return functions::remquo(x, y, quo); } + + /// Fused multiply add. + /// \param x first operand + /// \param y second operand + /// \param z third operand + /// \return ( \a x * \a y ) + \a z rounded as one operation. +// template typename enable::type fma(T x, U y, V z) { return functions::fma(x, y, z); } + inline expr fma(half x, half y, half z) { return functions::fma(x, y, z); } + inline expr fma(half x, half y, expr z) { return functions::fma(x, y, z); } + inline expr fma(half x, expr y, half z) { return functions::fma(x, y, z); } + inline expr fma(half x, expr y, expr z) { return functions::fma(x, y, z); } + inline expr fma(expr x, half y, half z) { return functions::fma(x, y, z); } + inline expr fma(expr x, half y, expr z) { return functions::fma(x, y, z); } + inline expr fma(expr x, expr y, half z) { return functions::fma(x, y, z); } + inline expr fma(expr x, expr y, expr z) { return functions::fma(x, y, z); } + + inline expr mad(half x, half y, half z) { return functions::fma(x, y, z); } + inline expr mad(half x, half y, expr z) { return functions::fma(x, y, z); } + inline expr mad(half x, expr y, half z) { return functions::fma(x, y, z); } + inline expr mad(half x, expr y, expr z) { return functions::fma(x, y, z); } + inline expr mad(expr x, half y, half z) { return functions::fma(x, y, z); } + inline expr mad(expr x, half y, expr z) { return functions::fma(x, y, z); } + inline expr mad(expr x, expr y, half z) { return functions::fma(x, y, z); } + inline expr mad(expr x, expr y, expr z) { return functions::fma(x, y, z); } + + /// Maximum of half expressions. + /// \param x first operand + /// \param y second operand + /// \return maximum of operands +// template typename result::type fmax(T x, U y) { return binary_specialized::fmax(x, y); } + inline half fmax(half x, half y) { return binary_specialized::fmax(x, y); } + inline expr fmax(half x, expr y) { return binary_specialized::fmax(x, y); } + inline expr fmax(expr x, half y) { return binary_specialized::fmax(x, y); } + inline expr fmax(expr x, expr y) { return binary_specialized::fmax(x, y); } + + /// Minimum of half expressions. + /// \param x first operand + /// \param y second operand + /// \return minimum of operands +// template typename result::type fmin(T x, U y) { return binary_specialized::fmin(x, y); } + inline half fmin(half x, half y) { return binary_specialized::fmin(x, y); } + inline expr fmin(half x, expr y) { return binary_specialized::fmin(x, y); } + inline expr fmin(expr x, half y) { return binary_specialized::fmin(x, y); } + inline expr fmin(expr x, expr y) { return binary_specialized::fmin(x, y); } + + /// Positive difference. + /// \param x first operand + /// \param y second operand + /// \return \a x - \a y or 0 if difference negative +// template typename enable::type fdim(T x, U y) { return functions::fdim(x, y); } + inline expr fdim(half x, half y) { return functions::fdim(x, y); } + inline expr fdim(half x, expr y) { return functions::fdim(x, y); } + inline expr fdim(expr x, half y) { return functions::fdim(x, y); } + inline expr fdim(expr x, expr y) { return functions::fdim(x, y); } + + inline expr maxmag(half x, half y) { return functions::maxmag(x, y); } + inline expr maxmag(half x, expr y) { return functions::maxmag(x, y); } + inline expr maxmag(expr x, half y) { return functions::maxmag(x, y); } + inline expr maxmag(expr x, expr y) { return functions::maxmag(x, y); } + + inline expr minmag(half x, half y) { return functions::minmag(x, y); } + inline expr minmag(half x, expr y) { return functions::minmag(x, y); } + inline expr minmag(expr x, half y) { return functions::minmag(x, y); } + inline expr minmag(expr x, expr y) { return functions::minmag(x, y); } + + /// Get NaN value. + /// \param arg descriptive string (ignored) + /// \return quiet NaN + inline half nanh(const char *arg) { return functions::nanh(arg); } + + /// \} + /// \name Exponential functions + /// \{ + + /// Exponential function. + /// \param arg function argument + /// \return e raised to \a arg +// template typename enable::type exp(T arg) { return functions::exp(arg); } + inline expr exp(half arg) { return functions::exp(arg); } + inline expr exp(expr arg) { return functions::exp(arg); } + + /// Exponential minus one. + /// \param arg function argument + /// \return e raised to \a arg subtracted by 1 +// template typename enable::type expm1(T arg) { return functions::expm1(arg); } + inline expr expm1(half arg) { return functions::expm1(arg); } + inline expr expm1(expr arg) { return functions::expm1(arg); } + + /// Binary exponential. + /// \param arg function argument + /// \return 2 raised to \a arg +// template typename enable::type exp2(T arg) { return functions::exp2(arg); } + inline expr exp2(half arg) { return functions::exp2(arg); } + inline expr exp2(expr arg) { return functions::exp2(arg); } + + /// Natural logorithm. + /// \param arg function argument + /// \return logarithm of \a arg to base e +// template typename enable::type log(T arg) { return functions::log(arg); } + inline expr log(half arg) { return functions::log(arg); } + inline expr log(expr arg) { return functions::log(arg); } + + /// Common logorithm. + /// \param arg function argument + /// \return logarithm of \a arg to base 10 +// template typename enable::type log10(T arg) { return functions::log10(arg); } + inline expr log10(half arg) { return functions::log10(arg); } + inline expr log10(expr arg) { return functions::log10(arg); } + + /// Natural logorithm. + /// \param arg function argument + /// \return logarithm of \a arg plus 1 to base e +// template typename enable::type log1p(T arg) { return functions::log1p(arg); } + inline expr log1p(half arg) { return functions::log1p(arg); } + inline expr log1p(expr arg) { return functions::log1p(arg); } + + /// Binary logorithm. + /// \param arg function argument + /// \return logarithm of \a arg to base 2 +// template typename enable::type log2(T arg) { return functions::log2(arg); } + inline expr log2(half arg) { return functions::log2(arg); } + inline expr log2(expr arg) { return functions::log2(arg); } + + /// \} + /// \name Power functions + /// \{ + + /// Square root. + /// \param arg function argument + /// \return square root of \a arg +// template typename enable::type sqrt(T arg) { return functions::sqrt(arg); } +#ifdef HLS_NO_XIL_FPO_LIB + inline expr sqrt(half arg) { return functions::sqrt(arg); } +#else + inline half sqrt(half arg) { return math_function_1arg(xip_fpo_sqrt, arg); } +#endif + inline expr sqrt(expr arg) { return functions::sqrt(arg); } + + /// Cubic root. + /// \param arg function argument + /// \return cubic root of \a arg +// template typename enable::type cbrt(T arg) { return functions::cbrt(arg); } + inline expr cbrt(half arg) { return functions::cbrt(arg); } + inline expr cbrt(expr arg) { return functions::cbrt(arg); } + + /// Hypotenuse function. + /// \param x first argument + /// \param y second argument + /// \return square root of sum of squares without internal over- or underflows +// template typename enable::type hypot(T x, U y) { return functions::hypot(x, y); } + inline expr hypot(half x, half y) { return functions::hypot(x, y); } + inline expr hypot(half x, expr y) { return functions::hypot(x, y); } + inline expr hypot(expr x, half y) { return functions::hypot(x, y); } + inline expr hypot(expr x, expr y) { return functions::hypot(x, y); } + + /// Power function. + /// \param base first argument + /// \param exp second argument + /// \return \a base raised to \a exp +// template typename enable::type pow(T base, U exp) { return functions::pow(base, exp); } + inline expr pow(half base, half exp) { return functions::pow(base, exp); } + inline expr pow(half base, expr exp) { return functions::pow(base, exp); } + inline expr pow(expr base, half exp) { return functions::pow(base, exp); } + inline expr pow(expr base, expr exp) { return functions::pow(base, exp); } + inline expr powr(half base, half exp) { return functions::powr(base, exp); } + inline expr powr(half base, expr exp) { return functions::powr(base, exp); } + inline expr powr(expr base, half exp) { return functions::powr(base, exp); } + inline expr powr(expr base, expr exp) { return functions::powr(base, exp); } + inline expr pown(half base, int exp) { return functions::pown(base, exp); } + inline expr pown(expr base, int exp) { return functions::pown(base, exp); } + + /// \} + /// \name Trigonometric functions + /// \{ + + /// Sine function. + /// \param arg function argument + /// \return sine value of \a arg +// template typename enable::type sin(T arg) { return functions::sin(arg); } + inline expr sin(half arg) { return functions::sin(arg); } + inline expr sin(expr arg) { return functions::sin(arg); } + + /// Cosine function. + /// \param arg function argument + /// \return cosine value of \a arg +// template typename enable::type cos(T arg) { return functions::cos(arg); } + inline expr cos(half arg) { return functions::cos(arg); } + inline expr cos(expr arg) { return functions::cos(arg); } + + /// Tangent function. + /// \param arg function argument + /// \return tangent value of \a arg +// template typename enable::type tan(T arg) { return functions::tan(arg); } + inline expr tan(half arg) { return functions::tan(arg); } + inline expr tan(expr arg) { return functions::tan(arg); } + + /// Arc sine. + /// \param arg function argument + /// \return arc sine value of \a arg +// template typename enable::type asin(T arg) { return functions::asin(arg); } + inline expr asin(half arg) { return functions::asin(arg); } + inline expr asin(expr arg) { return functions::asin(arg); } + + /// Arc cosine function. + /// \param arg function argument + /// \return arc cosine value of \a arg +// template typename enable::type acos(T arg) { return functions::acos(arg); } + inline expr acos(half arg) { return functions::acos(arg); } + inline expr acos(expr arg) { return functions::acos(arg); } + + /// Arc tangent function. + /// \param arg function argument + /// \return arc tangent value of \a arg +// template typename enable::type atan(T arg) { return functions::atan(arg); } + inline expr atan(half arg) { return functions::atan(arg); } + inline expr atan(expr arg) { return functions::atan(arg); } + + /// Arc tangent function. + /// \param x first argument + /// \param y second argument + /// \return arc tangent value +// template typename enable::type atan2(T x, U y) { return functions::atan2(x, y); } + inline expr atan2(half x, half y) { return functions::atan2(x, y); } + inline expr atan2(half x, expr y) { return functions::atan2(x, y); } + inline expr atan2(expr x, half y) { return functions::atan2(x, y); } + inline expr atan2(expr x, expr y) { return functions::atan2(x, y); } + + /// \} + /// \name Hyperbolic functions + /// \{ + + /// Hyperbolic sine. + /// \param arg function argument + /// \return hyperbolic sine value of \a arg +// template typename enable::type sinh(T arg) { return functions::sinh(arg); } + inline expr sinh(half arg) { return functions::sinh(arg); } + inline expr sinh(expr arg) { return functions::sinh(arg); } + + /// Hyperbolic cosine. + /// \param arg function argument + /// \return hyperbolic cosine value of \a arg +// template typename enable::type cosh(T arg) { return functions::cosh(arg); } + inline expr cosh(half arg) { return functions::cosh(arg); } + inline expr cosh(expr arg) { return functions::cosh(arg); } + + /// Hyperbolic tangent. + /// \param arg function argument + /// \return hyperbolic tangent value of \a arg +// template typename enable::type tanh(T arg) { return functions::tanh(arg); } + inline expr tanh(half arg) { return functions::tanh(arg); } + inline expr tanh(expr arg) { return functions::tanh(arg); } + + /// Hyperbolic area sine. + /// \param arg function argument + /// \return area sine value of \a arg +// template typename enable::type asinh(T arg) { return functions::asinh(arg); } + inline expr asinh(half arg) { return functions::asinh(arg); } + inline expr asinh(expr arg) { return functions::asinh(arg); } + + /// Hyperbolic area cosine. + /// \param arg function argument + /// \return area cosine value of \a arg +// template typename enable::type acosh(T arg) { return functions::acosh(arg); } + inline expr acosh(half arg) { return functions::acosh(arg); } + inline expr acosh(expr arg) { return functions::acosh(arg); } + + /// Hyperbolic area tangent. + /// \param arg function argument + /// \return area tangent value of \a arg +// template typename enable::type atanh(T arg) { return functions::atanh(arg); } + inline expr atanh(half arg) { return functions::atanh(arg); } + inline expr atanh(expr arg) { return functions::atanh(arg); } + + /// \} + /// \name Error and gamma functions + /// \{ + + /// Error function. + /// \param arg function argument + /// \return error function value of \a arg +// template typename enable::type erf(T arg) { return functions::erf(arg); } + inline expr erf(half arg) { return functions::erf(arg); } + inline expr erf(expr arg) { return functions::erf(arg); } + + /// Complementary error function. + /// \param arg function argument + /// \return 1 minus error function value of \a arg +// template typename enable::type erfc(T arg) { return functions::erfc(arg); } + inline expr erfc(half arg) { return functions::erfc(arg); } + inline expr erfc(expr arg) { return functions::erfc(arg); } + + /// Natural logarithm of gamma function. + /// \param arg function argument + /// \return natural logarith of gamma function for \a arg +// template typename enable::type lgamma(T arg) { return functions::lgamma(arg); } + inline expr lgamma_r(half arg, int *signgamp) { return functions::lgamma(arg); } + inline expr lgamma_r(expr arg, int *signgamp) { return functions::lgamma(arg); } + inline expr lgamma(half arg) { return functions::lgamma(arg); } + inline expr lgamma(expr arg) { return functions::lgamma(arg); } + + /// Gamma function. + /// \param arg function argument + /// \return gamma function value of \a arg +// template typename enable::type tgamma(T arg) { return functions::tgamma(arg); } + inline expr tgamma(half arg) { return functions::tgamma(arg); } + inline expr tgamma(expr arg) { return functions::tgamma(arg); } + + /// \} + /// \name Rounding + /// \{ + + /// Nearest integer not less than half value. + /// \param arg half to round + /// \return nearest integer not less than \a arg +// template typename enable::type ceil(T arg) { return functions::ceil(arg); } + inline half ceil(half arg) { return functions::ceil(arg); } + inline half ceil(expr arg) { return functions::ceil(arg); } + + /// Nearest integer not greater than half value. + /// \param arg half to round + /// \return nearest integer not greater than \a arg +// template typename enable::type floor(T arg) { return functions::floor(arg); } + inline half floor(half arg) { return functions::floor(arg); } + inline half floor(expr arg) { return functions::floor(arg); } + + /// Nearest integer not greater in magnitude than half value. + /// \param arg half to round + /// \return nearest integer not greater in magnitude than \a arg +// template typename enable::type trunc(T arg) { return functions::trunc(arg); } + inline half trunc(half arg) { return functions::trunc(arg); } + inline half trunc(expr arg) { return functions::trunc(arg); } + + /// Nearest integer. + /// \param arg half to round + /// \return nearest integer, rounded away from zero in half-way cases +// template typename enable::type round(T arg) { return functions::round(arg); } + inline half round(half arg) { return functions::round(arg); } + inline half round(expr arg) { return functions::round(arg); } + + /// Nearest integer. + /// \param arg half to round + /// \return nearest integer, rounded away from zero in half-way cases +// template typename enable::type lround(T arg) { return functions::lround(arg); } + inline long lround(half arg) { return functions::lround(arg); } + inline long lround(expr arg) { return functions::lround(arg); } + + /// Nearest integer using half's internal rounding mode. + /// \param arg half expression to round + /// \return nearest integer using default rounding mode +// template typename enable::type nearbyint(T arg) { return functions::nearbyint(arg); } + inline half nearbyint(half arg) { return functions::rint(arg); } + inline half nearbyint(expr arg) { return functions::rint(arg); } + + /// Nearest integer using half's internal rounding mode. + /// \param arg half expression to round + /// \return nearest integer using default rounding mode +// template typename enable::type rint(T arg) { return functions::rint(arg); } + inline half rint(half arg) { return functions::rint(arg); } + inline half rint(expr arg) { return functions::rint(arg); } + + /// Nearest integer using half's internal rounding mode. + /// \param arg half expression to round + /// \return nearest integer using default rounding mode +// template typename enable::type lrint(T arg) { return functions::lrint(arg); } + inline long lrint(half arg) { return functions::lrint(arg); } + inline long lrint(expr arg) { return functions::lrint(arg); } + #if HALF_ENABLE_CPP11_LONG_LONG + /// Nearest integer. + /// \param arg half to round + /// \return nearest integer, rounded away from zero in half-way cases +// template typename enable::type llround(T arg) { return functions::llround(arg); } + inline long long llround(half arg) { return functions::llround(arg); } + inline long long llround(expr arg) { return functions::llround(arg); } + + /// Nearest integer using half's internal rounding mode. + /// \param arg half expression to round + /// \return nearest integer using default rounding mode +// template typename enable::type llrint(T arg) { return functions::llrint(arg); } + inline long long llrint(half arg) { return functions::llrint(arg); } + inline long long llrint(expr arg) { return functions::llrint(arg); } + #endif + + /// \} + /// \name Floating point manipulation + /// \{ + + /// Decompress floating point number. + /// \param arg number to decompress + /// \param exp address to store exponent at + /// \return significant in range [0.5, 1) +// template typename enable::type frexp(T arg, int *exp) { return functions::frexp(arg, exp); } + inline half frexp(half arg, int *exp) { return functions::frexp(arg, exp); } + inline half frexp(expr arg, int *exp) { return functions::frexp(arg, exp); } + + /// Multiply by power of two. + /// \param arg number to modify + /// \param exp power of two to multiply with + /// \return \a arg multplied by 2 raised to \a exp +// template typename enable::type ldexp(T arg, int exp) { return functions::scalbln(arg, exp); } + inline half ldexp(half arg, int exp) { return functions::scalbln(arg, exp); } + inline half ldexp(expr arg, int exp) { return functions::scalbln(arg, exp); } + + /// Extract integer and fractional parts. + /// \param arg number to decompress + /// \param iptr address to store integer part at + /// \return fractional part +// template typename enable::type modf(T arg, half *iptr) { return functions::modf(arg, iptr); } + inline half modf(half arg, half *iptr) { return functions::modf(arg, iptr); } + inline half modf(expr arg, half *iptr) { return functions::modf(arg, iptr); } + + /// Multiply by power of two. + /// \param arg number to modify + /// \param exp power of two to multiply with + /// \return \a arg multplied by 2 raised to \a exp +// template typename enable::type scalbn(T arg, int exp) { return functions::scalbln(arg, exp); } + inline half scalbn(half arg, int exp) { return functions::scalbln(arg, exp); } + inline half scalbn(expr arg, int exp) { return functions::scalbln(arg, exp); } + + /// Multiply by power of two. + /// \param arg number to modify + /// \param exp power of two to multiply with + /// \return \a arg multplied by 2 raised to \a exp +// template typename enable::type scalbln(T arg, long exp) { return functions::scalbln(arg, exp); } + inline half scalbln(half arg, long exp) { return functions::scalbln(arg, exp); } + inline half scalbln(expr arg, long exp) { return functions::scalbln(arg, exp); } + + /// Extract exponent. + /// \param arg number to query + /// \return floating point exponent + /// \retval FP_ILOGB0 for zero + /// \retval FP_ILOGBNAN for NaN + /// \retval MAX_INT for infinity +// template typename enable::type ilogb(T arg) { return functions::ilogb(arg); } + inline int ilogb(half arg) { return functions::ilogb(arg); } + inline int ilogb(expr arg) { return functions::ilogb(arg); } + + /// Extract exponent. + /// \param arg number to query + /// \return floating point exponent +// template typename enable::type logb(T arg) { return functions::logb(arg); } + inline half logb(half arg) { return functions::logb(arg); } + inline half logb(expr arg) { return functions::logb(arg); } + + /// Next representable value. + /// \param from value to compute next representable value for + /// \param to direction towards which to compute next value + /// \return next representable value after \a from in direction towards \a to +// template typename enable::type nextafter(T from, U to) { return functions::nextafter(from, to); } + inline half nextafter(half from, half to) { return functions::nextafter(from, to); } + inline half nextafter(half from, expr to) { return functions::nextafter(from, to); } + inline half nextafter(expr from, half to) { return functions::nextafter(from, to); } + inline half nextafter(expr from, expr to) { return functions::nextafter(from, to); } + + /// Next representable value. + /// \param from value to compute next representable value for + /// \param to direction towards which to compute next value + /// \return next representable value after \a from in direction towards \a to +// template typename enable::type nexttoward(T from, long double to) { return functions::nexttoward(from, to); } + inline half nexttoward(half from, long double to) { return functions::nexttoward(from, to); } + inline half nexttoward(expr from, long double to) { return functions::nexttoward(from, to); } + + /// Take sign. + /// \param x value to change sign for + /// \param y value to take sign from + /// \return value equal to \a x in magnitude and to \a y in sign +// template typename enable::type copysign(T x, U y) { return functions::copysign(x, y); } + inline half copysign(half x, half y) { return functions::copysign(x, y); } + inline half copysign(half x, expr y) { return functions::copysign(x, y); } + inline half copysign(expr x, half y) { return functions::copysign(x, y); } + inline half copysign(expr x, expr y) { return functions::copysign(x, y); } + + /// \} + /// \name Floating point classification + /// \{ + + + /// Classify floating point value. + /// \param arg number to classify + /// \retval FP_ZERO for positive and negative zero + /// \retval FP_SUBNORMAL for subnormal numbers + /// \retval FP_INFINITY for positive and negative infinity + /// \retval FP_NAN for NaNs + /// \retval FP_NORMAL for all other (normal) values +// template typename enable::type fpclassify(T arg) { return functions::fpclassify(arg); } + inline int fpclassify(half arg) { return functions::fpclassify(arg); } + inline int fpclassify(expr arg) { return functions::fpclassify(arg); } + + /// Check if finite number. + /// \param arg number to check + /// \retval true if neither infinity nor NaN + /// \retval false else +// template typename enable::type isfinite(T arg) { return functions::isfinite(arg); } + inline bool isfinite(half arg) { return functions::isfinite(arg); } + inline bool isfinite(expr arg) { return functions::isfinite(arg); } + + /// Check for infinity. + /// \param arg number to check + /// \retval true for positive or negative infinity + /// \retval false else +// template typename enable::type isinf(T arg) { return functions::isinf(arg); } + inline bool isinf(half arg) { return functions::isinf(arg); } + inline bool isinf(expr arg) { return functions::isinf(arg); } + + /// Check for NaN. + /// \param arg number to check + /// \retval true for NaNs + /// \retval false else +// template typename enable::type isnan(T arg) { return functions::isnan(arg); } + inline bool isnan(half arg) { return functions::isnan(arg); } + inline bool isnan(expr arg) { return functions::isnan(arg); } + + /// Check if normal number. + /// \param arg number to check + /// \retval true if normal number + /// \retval false if either subnormal, zero, infinity or NaN +// template typename enable::type isnormal(T arg) { return functions::isnormal(arg); } + inline bool isnormal(half arg) { return functions::isnormal(arg); } + inline bool isnormal(expr arg) { return functions::isnormal(arg); } + + /// Check sign. + /// \param arg number to check + /// \retval true for negative number + /// \retval false for positive number +// template typename enable::type signbit(T arg) { return functions::signbit(arg); } + inline bool signbit(half arg) { return functions::signbit(arg); } + inline bool signbit(expr arg) { return functions::signbit(arg); } + + /// \} + /// \name Comparison + /// \{ + + /// Comparison for greater than. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x greater than \a y + /// \retval false else +// template typename enable::type isgreater(T x, U y) { return functions::isgreater(x, y); } + inline bool isgreater(half x, half y) { return functions::isgreater(x, y); } + inline bool isgreater(half x, expr y) { return functions::isgreater(x, y); } + inline bool isgreater(expr x, half y) { return functions::isgreater(x, y); } + inline bool isgreater(expr x, expr y) { return functions::isgreater(x, y); } + + /// Comparison for greater equal. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x greater equal \a y + /// \retval false else +// template typename enable::type isgreaterequal(T x, U y) { return functions::isgreaterequal(x, y); } + inline bool isgreaterequal(half x, half y) { return functions::isgreaterequal(x, y); } + inline bool isgreaterequal(half x, expr y) { return functions::isgreaterequal(x, y); } + inline bool isgreaterequal(expr x, half y) { return functions::isgreaterequal(x, y); } + inline bool isgreaterequal(expr x, expr y) { return functions::isgreaterequal(x, y); } + + /// Comparison for less than. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x less than \a y + /// \retval false else +// template typename enable::type isless(T x, U y) { return functions::isless(x, y); } + inline bool isless(half x, half y) { return functions::isless(x, y); } + inline bool isless(half x, expr y) { return functions::isless(x, y); } + inline bool isless(expr x, half y) { return functions::isless(x, y); } + inline bool isless(expr x, expr y) { return functions::isless(x, y); } + + /// Comparison for less equal. + /// \param x first operand + /// \param y second operand + /// \retval true if \a x less equal \a y + /// \retval false else +// template typename enable::type islessequal(T x, U y) { return functions::islessequal(x, y); } + inline bool islessequal(half x, half y) { return functions::islessequal(x, y); } + inline bool islessequal(half x, expr y) { return functions::islessequal(x, y); } + inline bool islessequal(expr x, half y) { return functions::islessequal(x, y); } + inline bool islessequal(expr x, expr y) { return functions::islessequal(x, y); } + + /// Comarison for less or greater. + /// \param x first operand + /// \param y second operand + /// \retval true if either less or greater + /// \retval false else +// template typename enable::type islessgreater(T x, U y) { return functions::islessgreater(x, y); } + inline bool islessgreater(half x, half y) { return functions::islessgreater(x, y); } + inline bool islessgreater(half x, expr y) { return functions::islessgreater(x, y); } + inline bool islessgreater(expr x, half y) { return functions::islessgreater(x, y); } + inline bool islessgreater(expr x, expr y) { return functions::islessgreater(x, y); } + + /// Check if unordered. + /// \param x first operand + /// \param y second operand + /// \retval true if unordered (one or two NaN operands) + /// \retval false else +// template typename enable::type isunordered(T x, U y) { return functions::isunordered(x, y); } + inline bool isunordered(half x, half y) { return functions::isunordered(x, y); } + inline bool isunordered(half x, expr y) { return functions::isunordered(x, y); } + inline bool isunordered(expr x, half y) { return functions::isunordered(x, y); } + inline bool isunordered(expr x, expr y) { return functions::isunordered(x, y); } + + /// \name Casting + /// \{ + + /// Cast to or from half-precision floating point number. + /// This casts between [half](\ref half) and any built-in arithmetic type. Floating point types are + /// converted via an explicit cast to/from `float` (using the rounding mode of the built-in single precision + /// implementation) and thus any possible warnings due to an otherwise implicit conversion to/from `float` will be + /// suppressed. Integer types are converted directly using the given rounding mode, without any roundtrip over `float` + /// that a `static_cast` would otherwise do. It uses the default rounding mode. + /// + /// Using this cast with neither of the two types being a [half](\ref half) or with any of the two types + /// not being a built-in arithmetic type (apart from [half](\ref half), of course) results in a compiler + /// error and casting between [half](\ref half)s is just a no-op. + /// \tparam T destination type (half or built-in arithmetic type) + /// \tparam U source type (half or built-in arithmetic type) + /// \param arg value to cast + /// \return \a arg converted to destination type + template typename half_caster::type half_cast(U arg) { return half_caster::cast(arg); } + + /// Cast to or from half-precision floating point number. + /// This casts between [half](\ref half) and any built-in arithmetic type. Floating point types are + /// converted via an explicit cast to/from `float` (using the rounding mode of the built-in single precision + /// implementation) and thus any possible warnings due to an otherwise implicit conversion to/from `float` will be + /// suppressed. Integer types are converted directly using the given rounding mode, without any roundtrip over `float` + /// that a `static_cast` would otherwise do. + /// + /// Using this cast with neither of the two types being a [half](\ref half) or with any of the two types + /// not being a built-in arithmetic type (apart from [half](\ref half), of course) results in a compiler + /// error and casting between [half](\ref half)s is just a no-op. + /// \tparam T destination type (half or built-in arithmetic type) + /// \tparam R rounding mode to use. + /// \tparam U source type (half or built-in arithmetic type) + /// \param arg value to cast + /// \return \a arg converted to destination type + template typename half_caster::type half_cast(U arg) + { return half_caster::cast(arg); } + /// \} + } + + using detail::operator==; + using detail::operator!=; + using detail::operator<; + using detail::operator>; + using detail::operator<=; + using detail::operator>=; + using detail::operator+; + using detail::operator-; + using detail::operator*; + using detail::operator/; + using detail::operator<<; + using detail::operator>>; + +// using detail::abs; +// using detail::fabs; +// using detail::fmod; +// using detail::remainder; +// using detail::remquo; +// using detail::fma; +// using detail::fmax; +// using detail::fmin; +// using detail::fdim; +// using detail::nanh; +// using detail::exp; +// using detail::expm1; +// using detail::exp2; +// using detail::log; +// using detail::log10; +// using detail::log1p; +// using detail::log2; +// using detail::sqrt; +// using detail::cbrt; +// using detail::hypot; +// //using detail::pow; +// using detail::sin; +// using detail::cos; +// using detail::tan; +// using detail::asin; +// using detail::acos; +// using detail::atan; +// using detail::atan2; +// using detail::sinh; +// using detail::cosh; +// using detail::tanh; +// using detail::asinh; +// using detail::acosh; +// using detail::atanh; +// using detail::erf; +// using detail::erfc; +// using detail::lgamma; +// using detail::tgamma; +// using detail::ceil; +// using detail::floor; +// using detail::trunc; +// using detail::round; +// using detail::lround; +// using detail::nearbyint; +// using detail::rint; +// using detail::lrint; +// #if HALF_ENABLE_CPP11_LONG_LONG +// using detail::llround; +// using detail::llrint; +// #endif +// using detail::frexp; +// using detail::ldexp; +// using detail::modf; +// using detail::scalbn; +// using detail::scalbln; +// using detail::ilogb; +// using detail::logb; +// using detail::nextafter; +// using detail::nexttoward; +// using detail::copysign; + using detail::fpclassify; + using detail::isfinite; + using detail::isinf; + using detail::isnan; + using detail::isnormal; + using detail::signbit; + using detail::isgreater; + using detail::isgreaterequal; + using detail::isless; + using detail::islessequal; + using detail::islessgreater; + using detail::isunordered; + + using detail::half_cast; + +/// Extensions to the C++ standard library. +namespace std +{ + /// Numeric limits for half-precision floats. + /// Because of the underlying single-precision implementation of many operations, it inherits some properties from + /// `std::numeric_limits`. + template<> struct numeric_limits : public numeric_limits + { + public: + /// Supports signed values. + static HALF_CONSTEXPR_CONST bool is_signed = true; + + /// Is not exact. + static HALF_CONSTEXPR_CONST bool is_exact = false; + + /// Doesn't provide modulo arithmetic. + static HALF_CONSTEXPR_CONST bool is_modulo = false; + + /// IEEE conformant. + static HALF_CONSTEXPR_CONST bool is_iec559 = true; + + /// Supports infinity. + static HALF_CONSTEXPR_CONST bool has_infinity = true; + + /// Supports quiet NaNs. + static HALF_CONSTEXPR_CONST bool has_quiet_NaN = true; + + /// Supports subnormal values. + static HALF_CONSTEXPR_CONST float_denorm_style has_denorm = denorm_present; + + /// Rounding mode. + /// Due to the mix of internal single-precision computations (using the rounding mode of the underlying + /// single-precision implementation) with explicit truncation of the single-to-half conversions, the actual rounding + /// mode is indeterminate. + static HALF_CONSTEXPR_CONST float_round_style round_style = (std::numeric_limits::round_style== + half::round_style) ? half::round_style : round_indeterminate; + + /// Significant digits. + static HALF_CONSTEXPR_CONST int digits = 11; + + /// Significant decimal digits. + static HALF_CONSTEXPR_CONST int digits10 = 3; + + /// Required decimal digits to represent all possible values. + static HALF_CONSTEXPR_CONST int max_digits10 = 5; + + /// Number base. + static HALF_CONSTEXPR_CONST int radix = 2; + + /// One more than smallest exponent. + static HALF_CONSTEXPR_CONST int min_exponent = -13; + + /// Smallest normalized representable power of 10. + static HALF_CONSTEXPR_CONST int min_exponent10 = -4; + + /// One more than largest exponent + static HALF_CONSTEXPR_CONST int max_exponent = 16; + + /// Largest finitely representable power of 10. + static HALF_CONSTEXPR_CONST int max_exponent10 = 4; + + /// Smallest positive normal value. + static HALF_CONSTEXPR half min() HALF_NOTHROW { return half(detail::binary, 0x0400); } + + /// Smallest finite value. + static HALF_CONSTEXPR half lowest() HALF_NOTHROW { return half(detail::binary, 0xFBFF); } + + /// Largest finite value. + static HALF_CONSTEXPR half max() HALF_NOTHROW { return half(detail::binary, 0x7BFF); } + + /// Difference between one and next representable value. + static HALF_CONSTEXPR half epsilon() HALF_NOTHROW { return half(detail::binary, 0x1400); } + + /// Maximum rounding error. + static HALF_CONSTEXPR half round_error() HALF_NOTHROW + { return half(detail::binary, (round_style==std::round_to_nearest) ? 0x3800 : 0x3C00); } + + /// Positive infinity. + static HALF_CONSTEXPR half infinity() HALF_NOTHROW { return half(detail::binary, 0x7C00); } + + /// Quiet NaN. + static HALF_CONSTEXPR half quiet_NaN() HALF_NOTHROW { return half(detail::binary, 0x7FFF); } + + /// Signalling NaN. + static HALF_CONSTEXPR half signaling_NaN() HALF_NOTHROW { return half(detail::binary, 0x7DFF); } + + /// Smallest positive subnormal value. + static HALF_CONSTEXPR half denorm_min() HALF_NOTHROW { return half(detail::binary, 0x0001); } + }; + +#if HALF_ENABLE_CPP11_HASH + /// Hash function for half-precision floats. + /// This is only defined if C++11 `std::hash` is supported and enabled. + template<> struct hash //: unary_function + { + /// Type of function argument. + typedef half argument_type; + + /// Function return type. + typedef size_t result_type; + + /// Compute hash function. + /// \param arg half to hash + /// \return hash value + result_type operator()(argument_type arg) const + { return hash()(static_cast(arg.data_)&-(arg.data_!=0x8000)); } + }; +#endif +} + + +#undef HALF_CONSTEXPR +#undef HALF_CONSTEXPR_CONST +#undef HALF_NOEXCEPT +#undef HALF_NOTHROW +#ifdef HALF_POP_WARNINGS + #pragma warning(pop) + #undef HALF_POP_WARNINGS +#endif + +#endif // AESL_SYN + +// implemented in lib_hlsm.cpp +//extern int __signbit(half a_re); +extern half half_nan(const char *tagp); +// extern int __isfinite(half t_in); +// extern int __isinf(half t_in); +// extern int __isnan(half t_in); +// extern int __isnormal(half t_in); +// extern int __fpclassify(half t_in); +extern half half_atan(half t); +extern half half_atan2(half y, half x); +extern half half_copysign(half x, half y); +//extern half copysign(half x, half y); +extern half half_fabs(half x); +//extern half fabs(half x); +extern half half_abs(half x); +extern half half_fma(half x, half y, half z); +extern half half_mad(half x, half y, half z); +extern half half_frexp (half x, int* exp); +extern half half_ldexp (half x, int exp); +extern half half_fmax(half x, half y); +//extern half fmax(half x, half y); +extern half half_fmin(half x, half y); +//extern half fmin(half x, half y); +extern half half_asin(half t_in); +extern half half_acos(half t_in); +extern half half_sin(half t_in); +extern half half_cos(half t_in); +extern void half_sincos(half x, half *sin, half *cos); +extern half half_sinh(half t_in); +extern half half_cosh(half t_in); +extern half half_sinpi(half t_in); +extern half half_cospi(half t_in); +extern half half_recip(half x); +extern half half_sqrt(half x); +extern half half_rsqrt(half x); +extern half half_cbrt(half x); +extern half half_hypot(half x, half y); +extern half half_log(half x); +extern half half_log10(half x); +extern half half_log2(half x); +extern half half_logb(half x); +extern half half_log1p(half x); +extern int half_ilogb(half x); +extern half half_exp(half x); +extern half half_exp10(half x); +extern half half_exp2(half x); +extern half half_expm1(half x); +extern half half_pow(half x, half y); +extern half half_powr(half x, half y); +extern half half_pown(half x, int y); +extern half half_rootn(half x, int y); +extern half half_floor(half x); +//half floor(half x) +extern half half_ceil(half x); +//half ceil(half x) +extern half half_trunc(half x); +// half trunc(half x) +extern half half_round(half x); +//half round(half x) +extern half half_nearbyint(half x); +extern half half_rint(half x); +extern long int half_lrint(half x); +extern long long int half_llrint(half x); +extern long int half_lround(half x); +extern long long int half_llround(half x); +extern half half_modf(half x, half *intpart); +// half modf(half x, half *intpart) +extern half half_fract(half x, half *intpart); +extern half half_nextafter(half x, half y); +extern half half_fmod(half x, half y); +extern half half_remainder(half x, half y); +extern half half_remquo(half x, half y, int* quo); +extern half half_divide(half x, half y); +#endif + +// vim: ts=4:sw=4:tw=4:noexpandtab: + diff --git a/vitis/v2020_1/hls_hotbm_apfixed.h b/vitis/v2020_1/hls_hotbm_apfixed.h new file mode 100644 index 00000000..da3a7d73 --- /dev/null +++ b/vitis/v2020_1/hls_hotbm_apfixed.h @@ -0,0 +1,497 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_hotbm_apfixed.h + * An implementation of sin/cos, based on the HOTBM method published by + * Detrey and deDinechin, "Floating-point Trigonometric Functions for FPGAs" + */ + +#ifndef _X_HLS_HOTBM_APFIXED_H_ +#define _X_HLS_HOTBM_APFIXED_H_ + +#include "ap_fixed.h" +#include "ap_int.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_utils.h" + +#ifndef M_PI +// Some compilers are stingy about giving us all these constants that are usually in the C library. +#define M_PI 3.14159265358979323846 +#endif + +namespace hotbm_apfixed +{ + + namespace first_order_fixed_16{ + extern const ap_fixed<19,2> sin_cos_K0[256]; + extern const ap_fixed<11,2> sin_cos_K1[256]; + }; + + namespace second_order_float{ + extern const ap_fixed<29,0> cos_K0[128]; + extern const ap_fixed<23,1> cos_K1[128]; + extern const ap_fixed<15,0> cos_K2[128]; + extern const ap_fixed<30,1> sin_K0[128]; + extern const ap_fixed<21,-1> sin_K1[128]; + extern const ap_fixed<13,-2> sin_K2[128]; + extern const ap_ufixed<30,1> sin_cos_K0[256]; + extern const ap_fixed<23,1> sin_cos_K1[256]; + extern const ap_fixed<15,0> sin_cos_K2[256]; + }; + + namespace fourth_order_double{ + extern const ap_fixed<59,0> cos_K0[128]; + extern const ap_fixed<53,1> cos_K1[128]; + extern const ap_fixed<45,0> cos_K2[128]; + extern const ap_fixed<35,-3> cos_K3[128]; + extern const ap_fixed<27,-4> cos_K4[128]; + extern const ap_fixed<60,1> sin_K0[128]; + extern const ap_fixed<51,-1> sin_K1[128]; + extern const ap_fixed<43,-2> sin_K2[128]; + extern const ap_fixed<33,-5> sin_K3[128]; + extern const ap_fixed<24,-7> sin_K4[128]; + extern const ap_fixed<59,1> sin_cos_K0[256]; + extern const ap_fixed<52,1> sin_cos_K1[256]; + extern const ap_fixed<44,0> sin_cos_K2[256]; + extern const ap_fixed<34,-3> sin_cos_K3[256]; + extern const ap_fixed<26,-4> sin_cos_K4[256]; + }; + + template + struct value_list{ + }; + + template<> + struct value_list{ + typedef double T; + static const int g = 10; // guard bits during core approx + static const int p1 = 61; // padding bits during range reduction + static const int alpha = 7; + // The number of bits of B that are not used in the K1 computation + static const int beta1 = 0; + // The number of bits of B that are not used in the K2 computation + static const int beta2 = alpha; + + static const int W_dout = fp_struct::SIG_BITS+1+g; + static const int W_Mx = fp_struct::SIG_BITS+1+g; + + template + static ap_ufixed sin_or_cos_approximation(bool do_cos, + ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed &Mx, + ap_int::EXP_BITS> &Ex){ + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; +#pragma HLS array_partition variable=swap_table complete +#pragma HLS RESOURCE variable=fourth_order_double::sin_cos_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_cos_K1 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_cos_K2 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_cos_K3 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_cos_K4 core=ROM_1P_LUTRAM + + ap_uint A = x(x.wl()-x.iwl()-1,x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + ap_ufixed B_third_power = B_trunc*B_squared; + ap_ufixed B_fourth_power = B_squared*B_squared; + + bool sin_basis = do_cos? swap_table[k]:!swap_table[k]; + A[alpha] = sin_basis; // cos and sin are concatentated. + + ap_fixed t1 = fourth_order_double::sin_cos_K0[A]; + ap_fixed t2 = B*fourth_order_double::sin_cos_K1[A]; + ap_fixed t3 = B_squared*fourth_order_double::sin_cos_K2[A]; + ap_fixed t4 = B_third_power*fourth_order_double::sin_cos_K3[A]; + ap_fixed t5 = B_fourth_power*fourth_order_double::sin_cos_K4[A]; + ap_ufixed result = Mx*(t1+t2+t3+t4+t5); + return result; + } + + template + static void sincos_approximation(ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed Mx, + ap_int::EXP_BITS> Ex, + ap_ufixed &sin_result, + ap_ufixed &cos_result + ) { +#pragma HLS RESOURCE variable=fourth_order_double::cos_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::cos_K1 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::cos_K2 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::cos_K3 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::cos_K4 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_K1 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_K2 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_K3 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=fourth_order_double::sin_K4 core=ROM_1P_LUTRAM + + ap_uint A = x(x.wl()-x.iwl()-1, + x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + ap_ufixed B_third_power = B_trunc*B_squared; + ap_ufixed B_fourth_power = B_squared*B_squared; + + ap_fixed cos_t1 = fourth_order_double::cos_K0[A]; + ap_fixed cos_t2 = B*fourth_order_double::cos_K1[A]; + ap_fixed cos_t3 = B_squared*fourth_order_double::cos_K2[A]; + ap_fixed cos_t4 = B_third_power*fourth_order_double::cos_K3[A]; + ap_fixed cos_t5 = B_fourth_power*fourth_order_double::cos_K4[A]; + cos_result = 1 - (cos_t1 + cos_t2 + cos_t3 + cos_t4 + cos_t5); + + ap_fixed sin_t1 = fourth_order_double::sin_K0[A]; + ap_fixed sin_t2 = B*fourth_order_double::sin_K1[A]; + ap_fixed sin_t3 = B_squared*fourth_order_double::sin_K2[A]; + ap_fixed sin_t4 = B_third_power*fourth_order_double::sin_K3[A]; + ap_fixed sin_t5 = B_fourth_power*fourth_order_double::sin_K4[A]; + sin_result = Mx * (sin_t1 + sin_t2 + sin_t3 + sin_t4 + sin_t5); + } + }; + + template<> + struct value_list { + typedef float T; + static const int g = 5; + static const int p1 = 29; + static const int alpha = 7; + static const int beta1 = 0; + static const int beta2 = 7; + + static const int W_dout = fp_struct::SIG_BITS+1+g; + static const int W_Mx = fp_struct::SIG_BITS+1+g; + + template + static ap_ufixed sin_or_cos_approximation(bool do_cos, + ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed &Mx, + ap_int::EXP_BITS> &Ex){ + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; + +#pragma HLS array_partition variable=swap_table complete +#pragma HLS RESOURCE variable=second_order_float::sin_cos_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::sin_cos_K1 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::sin_cos_K2 core=ROM_1P_LUTRAM + + ap_uint A = x(x.wl()-x.iwl()-1,x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + + bool sin_basis = do_cos? swap_table[k]:!swap_table[k]; + A[alpha] = sin_basis; // cos and sin are concatentated. + + ap_fixed t1 = second_order_float::sin_cos_K0[A]; + ap_fixed t2 = B*second_order_float::sin_cos_K1[A]; + ap_fixed t3 = B_squared*second_order_float::sin_cos_K2[A]; + ap_ufixed result = (t1+t2+t3) * Mx; + + return result; + } + + template + static void sincos_approximation(ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed &Mx, + ap_int::EXP_BITS> &Ex, + ap_ufixed &sin_result, + ap_ufixed &cos_result + ) { +#pragma HLS RESOURCE variable=second_order_float::cos_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::cos_K1 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::cos_K2 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::sin_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::sin_K1 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=second_order_float::sin_K2 core=ROM_1P_LUTRAM + + ap_uint A = x(x.wl()-x.iwl()-1, + x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + + // TABLES tables; + ap_ufixed cos_t1 = second_order_float::cos_K0[A]; + ap_ufixed cos_t2 = B*second_order_float::cos_K1[A]; + ap_ufixed cos_t3 = B_squared*second_order_float::cos_K2[A]; + cos_result = 1 - (cos_t1 + cos_t2 + cos_t3); + + ap_fixed sin_t1 = second_order_float::sin_K0[A]; + ap_fixed sin_t2 = B*second_order_float::sin_K1[A]; + ap_fixed sin_t3 = B_squared*second_order_float::sin_K2[A]; + sin_result = Mx * (sin_t1 + sin_t2 + sin_t3); + } + }; + + struct sin_cos_fixed_16 { + + typedef half T; + static const int g = 3; + static const int p1 = 12; + static const int alpha = 8; + static const int beta1 = 4; + + template + static ap_ufixed sin_or_cos_approximation(bool do_cos, + ap_uint<2> &k, + ap_ufixed &x){ + +#pragma HLS RESOURCE variable=first_order_fixed_16::sin_cos_K0 core=ROM_1P_LUTRAM +#pragma HLS RESOURCE variable=first_order_fixed_16::sin_cos_K1 core=ROM_1P_LUTRAM + + ap_uint A = x(x.wl()-x.iwl()-1,x.wl()-x.iwl()-alpha); + + const int BW = (W_dout-alpha-beta1)>1 ? W_dout-alpha-beta1 : 2; + ap_ufixed B = x; + + ap_fixed t1 = first_order_fixed_16::sin_cos_K0[A]; + ap_fixed t2 = B*first_order_fixed_16::sin_cos_K1[A]; + ap_ufixed result = (t1+t2); + + return result; + }; + }; + + template + ap_fixed + sinf_or_cosf(ap_fixed t_in, bool do_cos, bool do_pi, + typename hls::enable_if<(W > 16) && (W <= 32), bool>::type dummy = true) + { + const int WO = W; + const int g = 3; + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; + const bool neg_sin_table[16] = {0,0,1,0,1,1,0,1, 1,0,1,1,0,1,0,0}; + const bool neg_cos_table[16] = {0,0,0,1,1,1,1,0, 0,1,1,1,1,0,0,0}; + +#pragma HLS array_partition variable=swap_table complete +#pragma HLS array_partition variable=neg_sin_table complete +#pragma HLS array_partition variable=neg_cos_table complete + + ap_uint<3> k; + ap_ufixed x; + ap_ufixed Mx; + ap_int::EXP_BITS> Ex = 0; + + int exactly_pi_over_4 = 0; + bool is_negative = t_in[t_in.wl()-1]; + ap_ufixed din = is_negative ? ap_fixed(-t_in) : t_in; + + if(do_pi) { + k = din*4; + x = din*4; + ap_ufixed Mx_bits_extended = din*4; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: Mx_bits_extended = " << Mx_bits_extended.to_string(2) << "\n"; +#endif + exactly_pi_over_4 = (Mx_bits_extended == 1); + } else { + ap_ufixed Wx = din * ap_ufixed(4/M_PI); + k = Wx; + x = Wx; + } +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: k = " << k.to_string(2) << "\n"; +#endif + // If we're in an odd quadrant, then the base functions need to be flipped. + if(k[0] == 1) { + x = 1-x; + } + Mx = x; + + bool cos_basis = do_cos?!swap_table[k]: swap_table[k]; + if(cos_basis) { + // In this case, we are using cos() as the basis, so we don't + // multiply by Mx*2^Ex. + Mx = ap_ufixed::W_dout, 0, AP_RND, AP_SAT>(1); + Ex = 0; + } + + ap_ufixed result = value_list::sin_or_cos_approximation(do_cos,k,x,Mx,Ex); + + if(exactly_pi_over_4) { + result = 0.7071067811865475244008443; + } + + ap_uint<4> index = k; + index[3] = is_negative; + + if(cos_basis ? neg_cos_table[index] : neg_sin_table[index]) { + return -result; + } else { + return result; + } + } + + + template + ap_fixed + sinf_or_cosf(ap_fixed t_in, bool do_cos, bool do_pi, + typename hls::enable_if<(W > 32) && (W <= 64), bool>::type dummy = true) + { + const int WO = W; + const int g = 3; + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; + const bool neg_sin_table[16] = {0,0,1,0,1,1,0,1, 1,0,1,1,0,1,0,0}; + const bool neg_cos_table[16] = {0,0,0,1,1,1,1,0, 0,1,1,1,1,0,0,0}; +#pragma HLS array_partition variable=swap_table complete +#pragma HLS array_partition variable=neg_sin_table complete +#pragma HLS array_partition variable=neg_cos_table complete + + ap_uint<3> k; + ap_ufixed x; + ap_ufixed Mx; + ap_int::EXP_BITS> Ex = 0; + + int exactly_pi_over_4 = 0; + bool is_negative = t_in[t_in.wl()-1]; + ap_ufixed din = is_negative ? ap_fixed(-t_in) : t_in; + + if(do_pi) { + k = din*4; + x = din*4; + ap_ufixed Mx_bits_extended = din*4; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: Mx_bits_extended = " << Mx_bits_extended.to_string(2) << "\n"; +#endif + exactly_pi_over_4 = (Mx_bits_extended == 1); + } else { + ap_ufixed Wx = din * ap_ufixed(4/M_PI); + k = Wx; + x = Wx; + } +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: k = " << k.to_string(2) << "\n"; +#endif + // If we're in an odd quadrant, then the base functions need to be flipped. + if(k[0] == 1) { + x = 1-x; + } + Mx = x; + + bool cos_basis = do_cos?!swap_table[k]: swap_table[k]; + if(cos_basis) { + // In this case, we are using cos() as the basis, so we don't + // multiply by Mx*2^Ex. + Mx = ap_ufixed::W_dout, 0, AP_RND, AP_SAT>(1); + Ex = 0; + } + + ap_ufixed result = value_list::sin_or_cos_approximation(do_cos,k,x,Mx,Ex); + + if(exactly_pi_over_4) { + result = 0.7071067811865475244008443; + } + + ap_uint<4> index = k; + index[3] = is_negative; + + if(cos_basis ? neg_cos_table[index] : neg_sin_table[index]) { + return -result; + } else { + return result; + } + }; + + + template + ap_fixed // Result has same number of fractional bits as the input. + sinf_or_cosf(ap_fixed t_in, bool do_cos, bool do_pi, + typename hls::enable_if::type dummy = true) + { + const int WO = W; + const int g = 4; + + const bool neg_sin_table[8] = {0,0,1,1, 1,1,0,0}; + const bool neg_cos_table[8] = {0,1,1,0, 0,1,1,0}; +#pragma HLS array_partition variable=neg_sin_table complete +#pragma HLS array_partition variable=neg_cos_table complete + + ap_uint<2> k; + ap_ufixed x; + + bool is_negative = t_in[t_in.wl()-1]; + ap_ufixed din = is_negative ? ap_fixed(-t_in) : t_in; + + if(do_pi) { + k = din*2; + x = din*2; + ap_ufixed Mx_bits_extended = din*2; + } + else { + ap_ufixed Wx = din * ap_ufixed(2/M_PI); + k = Wx; + x = Wx; + } + + bool is_special_case = false; + + if((k[0] == 1) ^ !do_cos) { + ap_ufixed Wx = 1-x; + x = Wx; + is_special_case = (Wx[Wx.wl()-1] == 1); + } + + ap_ufixed result = sin_cos_fixed_16::sin_or_cos_approximation(do_cos,k,x); + + if(is_special_case) { + ap_uint<3> index = k; + index[2] = do_cos; + const bool special_case_table[8] = {0,1,0,1,1,0,1,0}; + result(result.wl()-2,0) = 0; + result[result.wl()-1] = special_case_table[index]; + } + + { + ap_uint<3> index = k; + index[2] = is_negative; + + if(do_cos ? neg_cos_table[index] : neg_sin_table[index]) { + return -result; + } else { + return result; + } + } + }; + +}; + +#endif + + diff --git a/vitis/v2020_1/hls_hypot_apfixed.h b/vitis/v2020_1/hls_hypot_apfixed.h new file mode 100644 index 00000000..46d94001 --- /dev/null +++ b/vitis/v2020_1/hls_hypot_apfixed.h @@ -0,0 +1,232 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +/** + * @file hls_hypot_apfixed.h" + * @brief Implemenation of hypot for ap_fixed data type. + */ +#ifndef _X_HLS_HYPOT_FIXED_H_ +#define _X_HLS_HYPOT_FIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_round_copysign_apfixed.h" +namespace hypot_internal { +template +ap_fixed hypot_fixed(ap_fixed x, ap_fixed y) { + const static int F = W - I; + if(I > 33) return 0; + else if(F > 32) return 0; + +#ifndef __SYNTHESIS__ +#ifdef HLS_DEBUG + std::cout<<"W="< +bool generic_isequal(ap_fixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal apfixed a & apfixed b +template +bool generic_isnotequal(ap_fixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_ufixed a & ap_fixed b +template +bool generic_isequal(ap_ufixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_ufixed a & ap_fixed b +template +bool generic_isnotequal(ap_ufixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_fixed a & ap_ufixed b +template +bool generic_isequal(ap_fixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_fixed a & ap_ufixed b +template +bool generic_isnotequal(ap_fixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_ufixed a & ap_ufixed b +template +bool generic_isequal(ap_ufixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_ufixed a & ap_ufixed b +template +bool generic_isnotequal(ap_ufixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + + +///isequal apint a & apint b +template +bool generic_isequal(ap_int x,ap_int y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal apint a & apint b +template +bool generic_isnotequal(ap_int x,ap_int y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_uint a & ap_int b +template +bool generic_isequal(ap_uint x,ap_int y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_uint a & ap_int b +template +bool generic_isnotequal(ap_uint x,ap_int y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_int a & ap_uint b +template +bool generic_isequal(ap_int x,ap_uint y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_int a & ap_uint b +template +bool generic_isnotequal(ap_int x,ap_uint y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_uint a & ap_uint b +template +bool generic_isequal(ap_uint x,ap_uint y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_uint a & ap_uint b +template +bool generic_isnotequal(ap_uint x,ap_uint y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +#endif + + + diff --git a/vitis/v2020_1/hls_ldexp_apfixed.h b/vitis/v2020_1/hls_ldexp_apfixed.h new file mode 100644 index 00000000..13758b9e --- /dev/null +++ b/vitis/v2020_1/hls_ldexp_apfixed.h @@ -0,0 +1,127 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_LDEXP_APFIXED_H_ +#define _X_HLS_LDEXP_APFIXED_H_ +#include "ap_fixed.h" + +namespace hls_ldexp { + +template +ap_fixed ldexp(ap_fixed x, int exp) { + ap_fixed result; + if(exp >= W || exp <= -W) { + result = 0; + } else { + result = x << exp; + } + return result; +} + +template +ap_ufixed ldexp(ap_ufixed x, int exp) { + ap_fixed xf = x; + return ldexp(xf, exp); +} + +template +ap_int ldexp(ap_int x, int exp) { + ap_fixed xf = x; + return ldexp(xf, exp); +} + +template +ap_uint ldexp(ap_uint x, int exp) { + ap_fixed xf = x; + return ldexp(xf, exp); +} + +template +ap_fixed scalbn(ap_fixed x, int n) { + ap_fixed result; + if(n >= W || n <= -W) { + result = 0; + } else { + result = x << n; + } + return result; +} + +template +ap_ufixed scalbn(ap_ufixed x, int n) { + ap_fixed xf = x; + return scalbn(xf, n); +} + +template +ap_int scalbn(ap_int x, int n) { + ap_fixed xf = x; + return scalbn(xf, n); +} + +template +ap_uint scalbn(ap_uint x, int n) { + ap_fixed xf = x; + return scalbn(xf, n); +} + +template +ap_fixed scalbln(ap_fixed x, long int n) { + ap_fixed result; + if(n >= W || n <= -W) { + result = 0; + } else { + result = x << n; + } + return result; +} + +template +ap_ufixed scalbln(ap_ufixed x, long int n) { + ap_fixed xf = x; + return scalbln(xf, n); +} + +template +ap_int scalbln(ap_int x, long int n) { + ap_fixed xf = x; + return scalbln(xf, n); +} + +template +ap_uint scalbln(ap_uint x, long int n) { + ap_fixed xf = x; + return scalbln(xf, n); +} + +} + +#endif diff --git a/vitis/v2020_1/hls_lgamma_apfixed.h b/vitis/v2020_1/hls_lgamma_apfixed.h new file mode 100644 index 00000000..6a0e43b1 --- /dev/null +++ b/vitis/v2020_1/hls_lgamma_apfixed.h @@ -0,0 +1,385 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_LGAMMA_APFIXED_H_ +#define _X_HLS_LGAMMA_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_exp_apfixed.h" +#include "hls_log_apfixed.h" +#include "hls_hotbm_apfixed.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_utils.h" +#include "utils/x_hls_traits.h" + + double lgamma_neg_apfixed (double x, int *signgamp); + +namespace lgamma_fixed{ + + template + int generic_isinf(T x) { + fp_struct fs = x; + int ret = ((fs.exp == fp_struct::EXP_INFNAN) && (fs.sig == 0x0)) ? 1 : 0; + return ret; + } + + template + int generic_isnan(T x) { + fp_struct fs = x; + int ret = ((fs.exp == fp_struct::EXP_INFNAN) && (fs.sig != 0x0)) ? 1 : 0; + return ret; + } + + template + ap_fixed lgamma_r_generic (ap_fixed x_fixed, int *signgamp) + { + #pragma HLS pipeline + + double x = x_fixed.to_double(); + fp_struct xs(x); + fp_struct out; + fp_struct fp_abs(x); + fp_abs.sign=0; + out.sign[0] = 0; + out.sig = 0; + out.exp = fp_struct::EXP_INFNAN; + +// *signgamp = 1;//to improve accuracy + //double ix = fabs(x); + if ( generic_isinf(x) )// to improve accuracy + return ap_fixed( out.to_ieee()); + if ( generic_isnan(x) ) { + out.sig = -1; + return ap_fixed( out.to_ieee()); + } + if ( xs.exp==0 ) { + if ( xs.sign[0] ) + *signgamp = -1; + out.sig = -1; + return ap_fixed( out.to_ieee()); + } + if ( xs.exp<953 ) { + if ( xs.sign[0] ) + *signgamp = -1; + return -log_apfixed_reduce::log(ap_fixed(fp_abs.to_ieee())); + } + double nadj = 0; + if ( xs.sign[0] ) { + if ( xs.exp>=1075 ) { + out.sig = -1; + return ap_fixed( out.to_ieee()); + } + if ( (xs.exp>1 && xs.exp<4) || (xs.exp==1 && (xs.sig!=0)) || (xs.exp==4 && !(xs.sig[51] && xs.sig[50])) )//if ( (x<-2)&&(x>-28) ) + return ap_fixed( lgamma_neg_apfixed(x,signgamp)); + const double pi = 3.14159265358979311600e+00; + //double t = hotbm_::sin(pi*x); + ap_fixed<1 - 1 + 52, 1 - 1> pix=(pi*x); + ap_fixed<1 - 1 + 52, 2> t_fixed = hotbm_apfixed::sinf_or_cosf<52,0>(pix, 0, 0); + double t = t_fixed.to_double(); + fp_struct ts(t); + fp_struct tabs(t); + if ( ts.exp==0 ) { + out.sig = -1; + return ap_fixed( out.to_ieee()); + } + ap_fixed nadj_fixed = pi/(tabs.to_ieee()*fp_abs.to_ieee()); + nadj = log_apfixed_reduce::log(nadj_fixed); + if ( ts.sign[0] ) + *signgamp = -1; + x = -x; + xs.sign[0] = 0; + } + double r; + if ( (xs.sig==0) && ((xs.exp==1023)||(xs.exp==1024)) ) { + r = 0; + } else if ( xs.exp<1024 ) {//x<2 + double y,z,p,p1,p2,p3; + int i; + const double tc = 1.46163214496836224576e+00; + const double tc_m1 = 0.46163214496836224576e+00; + ap_uint<20> x_sig_hi = (xs.sig>>32); + if ( (xs.exp<1022) || ((xs.exp==1022)&&(x_sig_hi<=838860)) ) { + //r = -log_apfixed_reduce::log(x); + r = -log_apfixed_reduce::log(x_fixed); + if ( (xs.exp>1022) || ((xs.exp==1022)&&(x_sig_hi>=485700)) ) { + y = 1-x; + i = 0; + } else if ( (xs.exp>1020) || ((xs.exp==1020)&&(x_sig_hi>=894561)) ) { + y = x-tc_m1; + i = 1; + } else { + y = x; + i = 2; + } + } else { + r = 0; + if ( (xs.exp>1023) || ((xs.exp==1023)&&(x_sig_hi>=767171)) ) { + y = 2-x; + i = 0; + } else if ( (xs.exp>1023) || ((xs.exp==1023)&&(x_sig_hi>=242884)) ) { + y = x-tc; + i = 1; + } else { + y = x-1; + i = 2; + } + } + switch(i) { + + case 0: + { + const double a0 = 7.72156649015328655494e-02; /* 0x3FB3C467, 0xE37DB0C8 */ + const double a1 = 3.22467033424113591611e-01; /* 0x3FD4A34C, 0xC4A60FAD */ + const double a2 = 6.73523010531292681824e-02; /* 0x3FB13E00, 0x1A5562A7 */ + const double a3 = 2.05808084325167332806e-02; /* 0x3F951322, 0xAC92547B */ + const double a4 = 7.38555086081402883957e-03; /* 0x3F7E404F, 0xB68FEFE8 */ + const double a5 = 2.89051383673415629091e-03; /* 0x3F67ADD8, 0xCCB7926B */ + const double a6 = 1.19270763183362067845e-03; /* 0x3F538A94, 0x116F3F5D */ + const double a7 = 5.10069792153511336608e-04; /* 0x3F40B6C6, 0x89B99C00 */ + const double a8 = 2.20862790713908385557e-04; /* 0x3F2CF2EC, 0xED10E54D */ + const double a9 = 1.08011567247583939954e-04; /* 0x3F1C5088, 0x987DFB07 */ + const double a10 = 2.52144565451257326939e-05; /* 0x3EFA7074, 0x428CFA52 */ + const double a11 = 4.48640949618915160150e-05; /* 0x3F07858E, 0x90A45837 */ + + z = y*y; + p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))); + p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))); + p = y*p1+p2; + r += (p-0.5*y); break; + } + case 1: + { + const double tf = -1.21486290535849611461e-01; /* 0xBFBF19B9, 0xBCC38A42 */ + const double tt = -3.63867699703950536541e-18; /* 0xBC50C7CA, 0xA48A971F */ + const double t0 = 4.83836122723810047042e-01; /* 0x3FDEF72B, 0xC8EE38A2 */ + const double t1 = -1.47587722994593911752e-01; /* 0xBFC2E427, 0x8DC6C509 */ + const double t2 = 6.46249402391333854778e-02; /* 0x3FB08B42, 0x94D5419B */ + const double t3 = -3.27885410759859649565e-02; /* 0xBFA0C9A8, 0xDF35B713 */ + const double t4 = 1.79706750811820387126e-02; /* 0x3F9266E7, 0x970AF9EC */ + const double t5 = -1.03142241298341437450e-02; /* 0xBF851F9F, 0xBA91EC6A */ + const double t6 = 6.10053870246291332635e-03; /* 0x3F78FCE0, 0xE370E344 */ + const double t7 = -3.68452016781138256760e-03; /* 0xBF6E2EFF, 0xB3E914D7 */ + const double t8 = 2.25964780900612472250e-03; /* 0x3F6282D3, 0x2E15C915 */ + const double t9 = -1.40346469989232843813e-03; /* 0xBF56FE8E, 0xBF2D1AF1 */ + const double t10 = 8.81081882437654011382e-04; /* 0x3F4CDF0C, 0xEF61A8E9 */ + const double t11 = -5.38595305356740546715e-04; /* 0xBF41A610, 0x9C73E0EC */ + const double t12 = 3.15632070903625950361e-04; /* 0x3F34AF6D, 0x6C0EBBF7 */ + const double t13 = -3.12754168375120860518e-04; /* 0xBF347F24, 0xECC38C38 */ + const double t14 = 3.35529192635519073543e-04; /* 0x3F35FD3E, 0xE8C2D3F4 */ + + z = y*y; + double w = z*y; + p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12))); + p2 = t1+w*(t4+w*(t7+w*(t10+w*t13))); + p3 = t2+w*(t5+w*(t8+w*(t11+w*t14))); + p = z*p1-(tt-w*(p2+y*p3)); + r += (tf + p); break; + } + case 2: + { + const double u0 = -7.72156649015328655494e-02; /* 0xBFB3C467, 0xE37DB0C8 */ + const double u1 = 6.32827064025093366517e-01; /* 0x3FE4401E, 0x8B005DFF */ + const double u2 = 1.45492250137234768737e+00; /* 0x3FF7475C, 0xD119BD6F */ + const double u3 = 9.77717527963372745603e-01; /* 0x3FEF4976, 0x44EA8450 */ + const double u4 = 2.28963728064692451092e-01; /* 0x3FCD4EAE, 0xF6010924 */ + const double u5 = 1.33810918536787660377e-02; /* 0x3F8B678B, 0xBF2BAB09 */ + const double v1 = 2.45597793713041134822e+00; /* 0x4003A5D7, 0xC2BD619C */ + const double v2 = 2.12848976379893395361e+00; /* 0x40010725, 0xA42B18F5 */ + const double v3 = 7.69285150456672783825e-01; /* 0x3FE89DFB, 0xE45050AF */ + const double v4 = 1.04222645593369134254e-01; /* 0x3FBAAE55, 0xD6537C88 */ + const double v5 = 3.21709242282423911810e-03; /* 0x3F6A5ABB, 0x57D0CF61 */ + + p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))); + p2 = 1+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))); + r += (-0.5*y + p1/p2); + } + } + } + else if ( xs.exp<1026 ) {// x<8 + + const double s0 = -7.72156649015328655494e-02; /* 0xBFB3C467, 0xE37DB0C8 */ + const double s1 = 2.14982415960608852501e-01; /* 0x3FCB848B, 0x36E20878 */ + const double s2 = 3.25778796408930981787e-01; /* 0x3FD4D98F, 0x4F139F59 */ + const double s3 = 1.46350472652464452805e-01; /* 0x3FC2BB9C, 0xBEE5F2F7 */ + const double s4 = 2.66422703033638609560e-02; /* 0x3F9B481C, 0x7E939961 */ + const double s5 = 1.84028451407337715652e-03; /* 0x3F5E26B6, 0x7368F239 */ + const double s6 = 3.19475326584100867617e-05; /* 0x3F00BFEC, 0xDD17E945 */ + const double r1 = 1.39200533467621045958e+00; /* 0x3FF645A7, 0x62C4AB74 */ + const double r2 = 7.21935547567138069525e-01; /* 0x3FE71A18, 0x93D3DCDC */ + const double r3 = 1.71933865632803078993e-01; /* 0x3FC601ED, 0xCCFBDF27 */ + const double r4 = 1.86459191715652901344e-02; /* 0x3F9317EA, 0x742ED475 */ + const double r5 = 7.77942496381893596434e-04; /* 0x3F497DDA, 0xCA41A95B */ + const double r6 = 7.32668430744625636189e-06; /* 0x3EDEBAF7, 0xA5B38140 */ + + ap_uint<3> i; + ap_uint<51> x_frac = 0; + if (~xs.exp[0]) { + i[2] = 0; + i[1] = 1; + i[0] = xs.sig[51]; + x_frac(50,0) = xs.sig(50,0); + } else { + i[2] = 1; + i[1] = xs.sig[51]; + i[0] = xs.sig[50]; + x_frac(50,1) = xs.sig(49,0); + } + fp_struct ys(double(0)); + #pragma unroll + for ( ap_uint<6> pos = 50; pos >=0; pos-- ) { + if ( x_frac[pos] ) { + ys.exp = pos - 51; + ys.sig(51,51-pos) = x_frac(pos,0); + break; + } + } + double y = ys.to_ieee(); + //int i = (int)x; + //double t = 0; + //double y = x-(double)i; + double p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))); + double q = 1+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))); + r = 0.5*y+p/q; + double z = 1; + switch(i) { + case 7: z *= (y+6.0); /* FALLTHRU */ + case 6: z *= (y+5.0); /* FALLTHRU */ + case 5: z *= (y+4.0); /* FALLTHRU */ + case 4: z *= (y+3.0); /* FALLTHRU */ + case 3: z *= (y+2.0); /* FALLTHRU */ + r =r + log_apfixed_reduce::log(ap_fixed(z)).to_double(); break; + } + + } else if ( xs.exp<1081 ) { + + const double w0 = 4.18938533204672725052e-01; /* 0x3FDACFE3, 0x90C97D69 */ + const double w1 = 8.33333333333329678849e-02; /* 0x3FB55555, 0x5555553B */ + const double w2 = -2.77777777728775536470e-03; /* 0xBF66C16C, 0x16B02E5C */ + const double w3 = 7.93650558643019558500e-04; /* 0x3F4A019F, 0x98CF38B6 */ + const double w4 = -5.95187557450339963135e-04; /* 0xBF4380CB, 0x8C0FE741 */ + const double w5 = 8.36339918996282139126e-04; /* 0x3F4B67BA, 0x4CDAD5D1 */ + const double w6 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */ + + double t = log_apfixed_reduce::log(x_fixed); + double z = 1/x; + double y = z*z; + double w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))); + r = (x-0.5)*(t-1)+w; + + } else{ + ap_fixed logx = log_apfixed_reduce::log(x_fixed); + r = x*((double)logx-1); + } + if ( x<0 ) + r = nadj-r; + return ap_fixed( r); + } + + template + ap_fixed lgamma_generic (ap_fixed x) { + int *signgamp = 0; + return lgamma_r_generic(x,signgamp); + } + + template + ap_ufixed lgamma_generic (ap_ufixed x) { + ap_fixed xf = x; + return lgamma_generic(xf); + } + template + ap_int lgamma_generic(ap_int x) { + ap_fixed xf = x; + return lgamma_generic(xf); + } + template + ap_uint lgamma_generic(ap_uint x) { + ap_fixed xf = x; + return lgamma_generic(xf); + } + + template + ap_ufixed lgamma_r_generic (ap_ufixed x, int *signgamp) { + ap_fixed xf = x; + return lgamma_r_generic(xf, signgamp); + } + template + ap_int lgamma_r_generic(ap_int x, int *signgamp) { + ap_fixed xf = x; + return lgamma_r_generic(xf, signgamp); + } + template + ap_uint lgamma_r_generic(ap_uint x, int *signgamp) { + ap_fixed xf = x; + return lgamma_r_generic(xf, signgamp); + } +}//lgamma_fixed + + +#if 0 +namespace hls{ + template + ap_fixed lgamma_r(ap_fixed x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_ufixed lgamma_r(ap_ufixed x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_int lgamma_r(ap_int x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_uint lgamma_r(ap_uint x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + //lgamma(ap_fixed) + template + ap_fixed lgamma(ap_fixed x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_ufixed lgamma(ap_ufixed x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_int lgamma(ap_int x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_uint lgamma(ap_uint x){ + return lgamma_fixed::lgamma_generic(x); + } +} +#endif + +#endif + diff --git a/vitis/v2020_1/hls_linear_algebra.h b/vitis/v2020_1/hls_linear_algebra.h new file mode 100644 index 00000000..5c2085c9 --- /dev/null +++ b/vitis/v2020_1/hls_linear_algebra.h @@ -0,0 +1,62 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2011-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/* + * HLS Linear Algebra Library Header File + */ + +#ifndef HLS_LINEAR_ALGEBRA_H +#define HLS_LINEAR_ALGEBRA_H + +#ifndef __cplusplus +#error C++ is required to include this header file +#endif +// support std::complex +#include "hls/linear_algebra/hls_matrix_multiply.h" +#include "hls/linear_algebra/hls_cholesky.h" +#include "hls/linear_algebra/hls_qrf.h" +#include "hls/linear_algebra/hls_back_substitute.h" +#include "hls/linear_algebra/hls_qr_inverse.h" +#include "hls/linear_algebra/hls_cholesky_inverse.h" +#include "hls/linear_algebra/hls_svd.h" + +// support x_complex but will be derecated +#include "hls/linear_algebra/deprecated/x_complex_matrix_multiply.h" +#include "hls/linear_algebra/deprecated/x_complex_cholesky.h" +#include "hls/linear_algebra/deprecated/x_complex_qrf.h" +#include "hls/linear_algebra/deprecated/x_complex_back_substitute.h" +#include "hls/linear_algebra/deprecated/x_complex_qr_inverse.h" +#include "hls/linear_algebra/deprecated/x_complex_cholesky_inverse.h" +#include "hls/linear_algebra/deprecated/x_complex_svd.h" + +#endif + + diff --git a/vitis/v2020_1/hls_log_apfixed.h b/vitis/v2020_1/hls_log_apfixed.h new file mode 100644 index 00000000..f89cb704 --- /dev/null +++ b/vitis/v2020_1/hls_log_apfixed.h @@ -0,0 +1,1473 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_LOG_APFIXED_H_ +#define _X_HLS_LOG_APFIXED_H_ +#include "ap_fixed.h" +#ifndef __SYNTHESIS__ +#include +#endif + +namespace log_apfixed_reduce { + +//#include "hls_log_apfixed_tables.h" +template class log_lut_table { public: +log_lut_table(); +static const T array [size];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<29, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<44, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; + +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<44, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,22,6,64> { public: +log_lut_table,22,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,22,6,64> { public: +log_lut_table,22,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,22,6,64> { public: +log_lut_table,22,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,27,6,64> { public: +log_lut_table,27,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,27,6,64> { public: +log_lut_table,27,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,32,6,64> { public: +log_lut_table,32,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template class log0_lut_table { public: +log0_lut_table(); +static const T array[size];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); + +static const ap_fixed<20, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<29, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<44, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +class log_inverse_lut_table { public: +log_inverse_lut_table(); +static const ap_ufixed<6, 1, (ap_q_mode)5, (ap_o_mode)3, 0> array[64];}; + + +template +void range_reduce(ap_ufixed zN, LOG_TYPE &log, ap_ufixed &zN1) +{ + //#pragma HLS inline off + const int T1size = 1 << alpha; // The size of the first table +#define log_lut log_lut_table::array + + //#pragma HLS RESOURCE variable=log_lut core=ROM_1P_LUTRAM + + ap_ufixed a = zN; // Extract alpha MSBs from z1. + ap_ufixed b = zN; // Extract the LSBs from z1. + ap_ufixed zNext = 1+zN; // Extend z1 for shift + int e_shift = (p!=4 || a[a.wl()-1]==1) ? 2*p : 2*p+1; // Stage dependent? + ap_ufixed eZ = zNext >> e_shift; + + zN1 = ((b + eZ) - a*zN); + ap_uint index = a(alpha-1,0); + log = log_lut[index]; + +#undef log_lut +} + +// i 0 1 2 3 4 5 6 7 8 +// ===================================== +// pi 0 4 7 12 17 22 27 32 37 +const int p0 = 0; // We start with zero zeroed bits +const int alpha0 = 5; // 1+alpha0 = number of bits considered by stage 0. +const int p1 = (alpha0 == 5) ? 4 : (alpha0-2); // The number of bits zeroed in y1. +const int alpha1 = 4; +const int p2 = p1 + alpha1 - 1; +const int alpha2 = 6; +const int p3 = p2 + alpha2 - 1; +const int alpha3 = 6; +const int p4 = p3 + alpha3 - 1; +const int alpha4 = 6; +const int p5 = p4 + alpha4 - 1; +const int alpha5 = 6; +const int p6 = p5 + alpha5 - 1; +const int alpha6 = 6; +const int p7 = p6 + alpha6 - 1; +const int alpha7 = 6; +const int p8 = p7 + alpha7 - 1; + +template class log_traits{}; + +template <> +class log_traits<1>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 11; // round to F_ + const static int org_wf = wf; + + const static int gbits = 1; + const static int p_generic = p1; + const static int MaxPrecision = wf+gbits+1;//11+1=12; + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<19,7> + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + return z1; + } +}; + +template <> +class log_traits<2>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 19; // round to F_ + const static int org_wf = wf; + + const static int gbits = 2; + const static int p_generic = p2; + const static int MaxPrecision =wf+gbits+1;//19+2=21 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<28,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + return z2; + } +}; + +template <> +class log_traits<3>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 33; // round to F_ + const static int org_wf = wf; + + const static int gbits = 3; + const static int p_generic = p3; + const static int MaxPrecision = wf+gbits+1;//33+3=36 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<43,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + return z3; + } +}; + +template <> +class log_traits<4>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 48; // round to F_ + const static int org_wf = wf; + + const static int gbits = 3; + const static int p_generic = p4; + const static int MaxPrecision = wf+gbits+1;//3+48=51 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<58,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + return z4; + } +}; + +template <> +class log_traits<5>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 63; // round to (W_-1) + const static int org_wf = wf; + + const static int gbits = 3; + const static int p_generic = p5; + const static int MaxPrecision = wf+gbits+1;//3+63=66; + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<73,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + return z5; + } +}; + +template <> +class log_traits<6>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 76; // round to F_ + const static int org_wf = wf; + + const static int gbits = 4; + const static int p_generic = p6; + const static int MaxPrecision = wf+gbits+2;//76+4=80 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<87,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + const static int w6 = w5+2*p5+1-(alpha5-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + ap_ufixed<(w6 < MaxPrecision-p6) ? w6 : (MaxPrecision-p6), -p6> z6; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + range_reduce (z5, logn, z6); + log_sum += logn; + return z6; + } +}; + +template <> +class log_traits<7>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 91; // round to (W_-1) + const static int org_wf = wf; + + const static int gbits = 4; + const static int p_generic = p7; + const static int MaxPrecision = wf+gbits+2;//91+4=95 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<102,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + const static int w6 = w5+2*p5+1-(alpha5-1); + const static int w7 = w6+2*p6+1-(alpha6-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + ap_ufixed<(w6 < MaxPrecision-p6) ? w6 : (MaxPrecision-p6), -p6> z6; + ap_ufixed<(w7 < MaxPrecision-p7) ? w7 : (MaxPrecision-p7), -p7> z7; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + range_reduce (z5, logn, z6); + log_sum += logn; + range_reduce (z6, logn, z7); + log_sum += logn; + return z7; + } +}; + +template <> +class log_traits<8>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 106; // round to F_ + const static int org_wf = wf; + + const static int gbits = 4; + const static int p_generic = p8;//37 + const static int MaxPrecision = wf+gbits+2;//106+4=110 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<117,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + const static int w6 = w5+2*p5+1-(alpha5-1); + const static int w7 = w6+2*p6+1-(alpha6-1); + const static int w8 = w7+2*p7+1-(alpha7-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + ap_ufixed<(w6 < MaxPrecision-p6) ? w6 : (MaxPrecision-p6), -p6> z6; + ap_ufixed<(w7 < MaxPrecision-p7) ? w7 : (MaxPrecision-p7), -p7> z7; + ap_ufixed<(w8 < MaxPrecision-p8) ? w8 : (MaxPrecision-p8), -p8> z8; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + range_reduce (z5, logn, z6); + log_sum += logn; + range_reduce (z6, logn, z7); + log_sum += logn; + range_reduce (z7, logn, z8); + log_sum += logn; + return z8; + } +}; +template +ap_fixed log(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const static int F_ = W_ - I_; + if (I_>34) return 0; + else if (F_>100) return 0; + + // return ap_fixed value + ap_fixed r = 0; + ap_ufixed x_s = x; + + if (F_==0) { + if (I_<=7) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else r = 4; + } else if (I_<=10) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else r = 6; + } else if (I_<=13) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else r = 8; + } else if (I_<=17) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else r = 11; + } else if (I_<=19) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else r = 12; + } else if (I_<=26) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else if (x_s<=ap_ufixed("0x41831p0")) r = 12; + else if (x_s<=ap_ufixed("0xb2148p0")) r = 13; + else if (x_s<=ap_ufixed("0x1e4127p0")) r = 14; + else if (x_s<=ap_ufixed("0x523d82p0")) r = 15; + else if (x_s<=ap_ufixed("0xdf8d5fp0")) r = 16; + else r = 17; + } else if (I_<=32) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else if (x_s<=ap_ufixed("0x41831p0")) r = 12; + else if (x_s<=ap_ufixed("0xb2148p0")) r = 13; + else if (x_s<=ap_ufixed("0x1e4127p0")) r = 14; + else if (x_s<=ap_ufixed("0x523d82p0")) r = 15; + else if (x_s<=ap_ufixed("0xdf8d5fp0")) r = 16; + else if (x_s<=ap_ufixed("0x25fad90p0")) r = 17; + else if (x_s<=ap_ufixed("0x673d70bp0")) r = 18; + else if (x_s<=ap_ufixed("0x118a2aaep0")) r = 19; + else if (x_s<=ap_ufixed("0x2fad89e1p0")) r = 20; + else r = 21; + } else { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else if (x_s<=ap_ufixed("0x41831p0")) r = 12; + else if (x_s<=ap_ufixed("0xb2148p0")) r = 13; + else if (x_s<=ap_ufixed("0x1e4127p0")) r = 14; + else if (x_s<=ap_ufixed("0x523d82p0")) r = 15; + else if (x_s<=ap_ufixed("0xdf8d5fp0")) r = 16; + else if (x_s<=ap_ufixed("0x25fad90p0")) r = 17; + else if (x_s<=ap_ufixed("0x673d70bp0")) r = 18; + else if (x_s<=ap_ufixed("0x118a2aaep0")) r = 19; + else if (x_s<=ap_ufixed("0x2fad89e1p0")) r = 20; + else if (x_s<=ap_ufixed("0x819a1801p0")) r = 21; + else r = 22; + } + } else if (F_<=4 && I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s==ap_ufixed("0x0.1p0")) r = "-0x2.cp0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "-0x2.1p0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "-0x1.bp0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "-0x1.6p0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "-0x1.3p0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "-0x1p0"; + else if (x_s==ap_ufixed("0x0.7p0")) r = "-0x0.dp0"; + else if (x_s==ap_ufixed("0x0.8p0")) r = "-0x0.bp0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "-0x0.9p0"; + else if (x_s==ap_ufixed("0x0.ap0")) r = "-0x0.8p0"; + else if (x_s==ap_ufixed("0x0.bp0")) r = "-0x0.6p0"; + else if (x_s==ap_ufixed("0x0.cp0")) r = "-0x0.5p0"; + else if (x_s==ap_ufixed("0x0.dp0")) r = "-0x0.3p0"; + else if (x_s==ap_ufixed("0x0.ep0")) r = "-0x0.2p0"; + else if (x_s==ap_ufixed("0x0.fp0")) r = "-0x0.1p0"; + else if (x_s==ap_ufixed("0x1p0")) r = "0x0p0"; + else if (x_s==ap_ufixed("0x1.1p0")) r = "0x0.1p0"; + else if (x_s==ap_ufixed("0x1.2p0")) r = "0x0.2p0"; + else if (x_s==ap_ufixed("0x1.3p0")) r = "0x0.3p0"; + else if (x_s<=ap_ufixed("0x1.5p0")) r = "0x0.4p0"; + else if (x_s<=ap_ufixed("0x1.6p0")) r = "0x0.5p0"; + else if (x_s<=ap_ufixed("0x1.8p0")) r = "0x0.6p0"; + else if (x_s<=ap_ufixed("0x1.9p0")) r = "0x0.7p0"; + else if (x_s<=ap_ufixed("0x1.bp0")) r = "0x0.8p0"; + else if (x_s<=ap_ufixed("0x1.cp0")) r = "0x0.9p0"; + else if (x_s<=ap_ufixed("0x1.ep0")) r = "0x0.ap0"; + else if (x_s<=ap_ufixed("0x2p0")) r = "0x0.bp0"; + else if (x_s<=ap_ufixed("0x2.2p0")) r = "0x0.cp0"; + else if (x_s<=ap_ufixed("0x2.5p0")) r = "0x0.dp0"; + else if (x_s<=ap_ufixed("0x2.7p0")) r = "0x0.ep0"; + else if (x_s<=ap_ufixed("0x2.ap0")) r = "0x0.fp0"; + else if (x_s<=ap_ufixed("0x2.cp0")) r = "0x1p0"; + else if (x_s<=ap_ufixed("0x2.fp0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0x3.2p0")) r = "0x1.2p0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x1.3p0"; + else if (x_s<=ap_ufixed("0x3.9p0")) r = "0x1.4p0"; + else if (x_s<=ap_ufixed("0x3.dp0")) r = "0x1.5p0"; + else if (x_s<=ap_ufixed("0x4.1p0")) r = "0x1.6p0"; + else if (x_s<=ap_ufixed("0x4.5p0")) r = "0x1.7p0"; + else if (x_s<=ap_ufixed("0x4.9p0")) r = "0x1.8p0"; + else if (x_s<=ap_ufixed("0x4.ep0")) r = "0x1.9p0"; + else if (x_s<=ap_ufixed("0x5.3p0")) r = "0x1.ap0"; + else if (x_s<=ap_ufixed("0x5.9p0")) r = "0x1.bp0"; + else if (x_s<=ap_ufixed("0x5.ep0")) r = "0x1.cp0"; + else if (x_s<=ap_ufixed("0x6.5p0")) r = "0x1.dp0"; + else if (x_s<=ap_ufixed("0x6.bp0")) r = "0x1.ep0"; + else if (x_s<=ap_ufixed("0x7.2p0")) r = "0x1.fp0"; + else if (x_s<=ap_ufixed("0x7.9p0")) r = "0x2p0"; + else if (x_s<=ap_ufixed("0x8.1p0")) r = "0x2.1p0"; + else if (x_s<=ap_ufixed("0x8.ap0")) r = "0x2.2p0"; + else if (x_s<=ap_ufixed("0x9.3p0")) r = "0x2.3p0"; + else if (x_s<=ap_ufixed("0x9.cp0")) r = "0x2.4p0"; + else if (x_s<=ap_ufixed("0xa.6p0")) r = "0x2.5p0"; + else if (x_s<=ap_ufixed("0xb.1p0")) r = "0x2.6p0"; + else if (x_s<=ap_ufixed("0xb.cp0")) r = "0x2.7p0"; + else if (x_s<=ap_ufixed("0xc.9p0")) r = "0x2.8p0"; + else if (x_s<=ap_ufixed("0xd.6p0")) r = "0x2.9p0"; + else if (x_s<=ap_ufixed("0xe.3p0")) r = "0x2.ap0"; + else if (x_s<=ap_ufixed("0xf.2p0")) r = "0x2.bp0"; + else r = "0x2.cp0"; + } else { + + if (x<=0) {r[W_-1] = 1;} + else { + + //std::cout<<"[LOG]x="<::wf; + const static int I_s= I_>0? I_:-I_; + const static int org_wf = log_traits::org_wf+I_s; + const static int MaxPrecision = log_traits::MaxPrecision; + + // x = b_frac * (2 ^ b_exp) + // .75 <= b_frac < 1.5 + // -F_ <= b_exp <= I_-1 + ap_int<7> b_exp; + ap_ufixed<1 + org_wf,1> b_frac=0; + b_frac[org_wf] = 0; + b_frac(org_wf-1,org_wf-W_+1) = x(W_-2,0); + #pragma unroll + for (b_exp = I_-1; b_exp >= -F_; b_exp--) { + if ((!b_frac[org_wf]&b_frac[org_wf-1]&b_frac[org_wf-2])|(b_frac[org_wf]&!b_frac[org_wf-1])) + break; + b_frac <<= 1; + } + //std::cout<<"[LOG]b_exp="< Elog2 = LOG2 * b_exp; + //maybe need to extend ???? + + + typedef typename log_traits::LOG_TYPE LOG_TYPE; + const static int bypass_threshold = log_traits::p_generic; + + //std::cout<<"[LOG]b_frac="< index0; // ap_uint<6> + if (b_frac[org_wf]) index0 = b_frac(org_wf-1,org_wf-6); + else index0 = b_frac(org_wf-2,org_wf-7); + + const int T0size = 1 << (1+alpha0); // The size of the first table + +#define inverse_lut log_inverse_lut_table::array +#define log_lut log0_lut_table::array + + ap_ufixed<1 + alpha0, 1> b_frac_tilde_inverse = inverse_lut[index0]; + + //std::cout<<"[LOG]b_frac_tilde_inverse="< b_frac1 = b_frac * b_frac_tilde_inverse; + //std::cout<<"[LOG]b_frac1="< z1 = b_frac1; // Extract a1+b1 from y1. + //std::cout<<"[LOG]z1="< zk; + zk = log_traits::range_reduction(z1,log_sum); + //std::cout<<"[LOG]zk="< zk_trunc = zk; + LOG_TYPE sum = zk-(zk_trunc*zk_trunc/2); + + LOG_TYPE log_base; + log_base = Elog2 + log_sum + sum; +#undef log_lut +#undef inverse_lut + + ap_fixed<2 + F_, 1> delta = 0; + delta[delta.wl()-1] = log_base[log_base.wl()-1]; + delta[delta.wl()-delta.iwl()-1] = 1; + log_base = log_base + ( delta >> F_ ); + + r = log_base; + } + + } + + return r; +} + +template +ap_ufixed log(ap_ufixed x) { + ap_fixed xf = x; + return log(xf); +} + +template +ap_int log(ap_int x) { + ap_fixed xf = x; + return log(xf); +} + +template +ap_uint log(ap_uint x) { + ap_fixed xf = x; + return log(xf); +} + + +template +ap_fixed log10(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const static int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + // return ap_fixed value + ap_fixed r = 0; + ap_ufixed x_s = x; + + if (F_==0) { + if (I_<=9) { + if (x<=0) {r[W_-1] = 1;} + else { + ap_ufixed<8,8> x_s_l = x_s; + if (x_s_l(7,2)==0) r = 0; + else if (x_s_l(7,5)==0) r = 1; + else r = 2; + } + } else if (I_<=15) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else r = 4; + } else if (I_<=19) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else r = 5; + } else if (I_<=25) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else if (x_s<=ap_ufixed("0x4d343p0")) r = 5; + else if (x_s<=ap_ufixed("0x3040a5p0")) r = 6; + else r = 7; + } else if (I_<=32) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else if (x_s<=ap_ufixed("0x4d343p0")) r = 5; + else if (x_s<=ap_ufixed("0x3040a5p0")) r = 6; + else if (x_s<=ap_ufixed("0x1e28678p0")) r = 7; + else if (x_s<=ap_ufixed("0x12d940b6p0")) r = 8; + else r = 9; + } else { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else if (x_s<=ap_ufixed("0x4d343p0")) r = 5; + else if (x_s<=ap_ufixed("0x3040a5p0")) r = 6; + else if (x_s<=ap_ufixed("0x1e28678p0")) r = 7; + else if (x_s<=ap_ufixed("0x12d940b6p0")) r = 8; + else if (x_s<=ap_ufixed("0xbc7c871cp0")) r = 9; + else r = 10; + } + } else if (F_<=4 && I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s==ap_ufixed("0x0.1p0")) r = "-0x1.3p0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "-0x0.ep0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "-0x0.cp0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "-0x0.ap0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "-0x0.8p0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "-0x0.7p0"; + else if (x_s==ap_ufixed("0x0.7p0")) r = "-0x0.6p0"; + else if (x_s==ap_ufixed("0x0.8p0")) r = "-0x0.5p0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "-0x0.4p0"; + else if (x_s<=ap_ufixed("0x0.bp0")) r = "-0x0.3p0"; + else if (x_s==ap_ufixed("0x0.cp0")) r = "-0x0.2p0"; + else if (x_s<=ap_ufixed("0x0.ep0")) r = "-0x0.1p0"; + else if (x_s<=ap_ufixed("0x1.1p0")) r = "0x0p0"; + else if (x_s<=ap_ufixed("0x1.3p0")) r = "0x0.1p0"; + else if (x_s<=ap_ufixed("0x1.6p0")) r = "0x0.2p0"; + else if (x_s<=ap_ufixed("0x1.ap0")) r = "0x0.3p0"; + else if (x_s<=ap_ufixed("0x1.ep0")) r = "0x0.4p0"; + else if (x_s<=ap_ufixed("0x2.3p0")) r = "0x0.5p0"; + else if (x_s<=ap_ufixed("0x2.8p0")) r = "0x0.6p0"; + else if (x_s<=ap_ufixed("0x2.fp0")) r = "0x0.7p0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x0.8p0"; + else if (x_s<=ap_ufixed("0x3.ep0")) r = "0x0.9p0"; + else if (x_s<=ap_ufixed("0x4.8p0")) r = "0x0.ap0"; + else if (x_s<=ap_ufixed("0x5.3p0")) r = "0x0.bp0"; + else if (x_s<=ap_ufixed("0x6p0")) r = "0x0.cp0"; + else if (x_s<=ap_ufixed("0x6.fp0")) r = "0x0.dp0"; + else if (x_s<=ap_ufixed("0x8p0")) r = "0x0.ep0"; + else if (x_s<=ap_ufixed("0x9.4p0")) r = "0x0.fp0"; + else if (x_s<=ap_ufixed("0xa.bp0")) r = "0x1p0"; + else if (x_s<=ap_ufixed("0xc.6p0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0xe.5p0")) r = "0x1.2p0"; + else r = "0x1.3p0"; + } else { // I was here! + + if (x<=0) {r[W_-1] = 1;} + else { + const static int W_s_= (F_+F_/77*2+12)/15-(100+F_)/133+(99+F_)/133-(100+F_)/118+(98+F_)/118+1; + //if (W_<=11) W_s_ = 1; + //else if (W_<=19) W_s_ = 2; + //else if (W_<=33) W_s_ = 3; + //else if (W_<=48) W_s_ = 4; + //else if (W_<=63) W_s_ = 5; + //else if (W_<=76) W_s_ = 6; + const static int wf = log_traits::wf; + const static int I_s= I_>0? I_:-I_; + const static int org_wf = log_traits::org_wf+I_s; + const static int MaxPrecision = log_traits::MaxPrecision; + + // x = b_frac * (2 ^ b_exp) + // .75 <= b_frac < 1.5 + // -F_ <= b_exp <= I_-1 + + ap_int<7> b_exp=0; + ap_ufixed<1 + org_wf,1> b_frac=0; + b_frac[org_wf] = 0; + b_frac(org_wf-1,org_wf-W_+1) = x(W_-2,0); + #pragma unroll + for (b_exp = I_-1; b_exp >= -F_; b_exp--) { + if ((!b_frac[org_wf]&b_frac[org_wf-1]&b_frac[org_wf-2])|(b_frac[org_wf]&!b_frac[org_wf-1])) + break; + b_frac <<= 1; + } + + const ap_ufixed<25,0> LOG1_35_s = 0.3010300099849700927734375;//0.693147182464599609375; + const ap_ufixed<43,0> LOG1_35_l = 0.30102999566395283181918784976006;//0.69314718055989033018704503774643; + ap_fixed<30,5> Elog2_s = LOG1_35_s * b_exp; + ap_fixed<48,5> Elog2_l = LOG1_35_l * b_exp; + + + typedef typename log_traits::LOG_TYPE LOG_TYPE; + const static int bypass_threshold = log_traits::p_generic; + + ap_uint<1+alpha0> index0; // ap_uint<6> + if (b_frac[org_wf]) index0 = b_frac(org_wf-1,org_wf-6); + else index0 = b_frac(org_wf-2,org_wf-7); + + const int T0size = 1 << (1+alpha0); // The size of the first table + +#define inverse_lut log_inverse_lut_table::array +#define log_lut log0_lut_table::array + + ap_ufixed<1 + alpha0, 1> b_frac_tilde_inverse = inverse_lut[index0]; + + LOG_TYPE log_sum = log_lut[index0]; + + ap_ufixed<1 + org_wf+1+(1+alpha0), 1> b_frac1 = b_frac * b_frac_tilde_inverse; + +#ifndef __SYNTHESIS__ + assert(b_frac1( b_frac1.wl()-b_frac1.iwl()-1, b_frac1.wl()-b_frac1.iwl()-p1) == 0); +#endif + const int z1_width = 1+wf+1+(1+alpha0)-p1+1; + ap_ufixed z1 = b_frac1; // Extract a1+b1 from y1. + + ap_fixed<1-bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk; + zk = log_traits::range_reduction(z1,log_sum); + + ap_fixed<1-2*bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk_trunc = zk; + LOG_TYPE sum = zk-(zk_trunc*zk_trunc/2); + + LOG_TYPE log_base = log_sum + sum; + + const ap_ufixed<25,0> LOG1_54_s = 0.4342944920063018798828125;//0.693147182464599609375; + const ap_ufixed<43,0> LOG1_54_l = 0.43429448190329367207596078515053;//0.69314718055989033018704503774643; + + if (F_<=16) log_base = Elog2_s + log_base * LOG1_54_s; + else log_base = Elog2_l + log_base * LOG1_54_l; +#undef log_lut +#undef inverse_lut + +// ap_fixed<1 + 33, 1> delta = 0; +// delta[delta.wl()-1] = log_base[log_base.wl()-1]; +// delta[delta.wl()-delta.iwl()-1] = 1; +// log_base = log_base + ( delta >> F_ ); + + r = log_base; + } + + } + + return r; +} + +template +ap_ufixed log10(ap_ufixed x) { + ap_fixed xf = x; + return log10(xf); +} + +template +ap_int log10(ap_int x) { + ap_fixed xf = x; + return log10(xf); +} + +template +ap_uint log10(ap_uint x) { + ap_fixed xf = x; + return log10(xf); +} + +template +ap_fixed log1p(ap_fixed x) { + ap_ufixed<1,1> inc = 1; + ap_fixed xp1 = x + inc; + return log(xp1); +} + +template +ap_ufixed log1p(ap_ufixed x) { + ap_fixed xf = x; + return log1p(xf); +} + +template +ap_int log1p(ap_int x) { + ap_fixed xf = x; + return log1p(xf); +} + +template +ap_uint log1p(ap_uint x) { + ap_fixed xf = x; + return log1p(xf); +} + +template +ap_fixed ilogb(ap_fixed x) { + int F = W - I; + if(F>32 || I>33) { + return 0; + } + ap_fixed xf; + if(x>0) { + xf = x; + } + else { + xf = -x; + } + return I + 1 - xf.countLeadingZeros() - 1; +} + +template +ap_ufixed ilogb(ap_ufixed x) { + ap_fixed xf = x; + return ilogb(xf); +} + +template +ap_int ilogb(ap_int x) { + ap_fixed xf = x; + return ilogb(xf); +} + +template +ap_uint ilogb(ap_uint x) { + ap_fixed xf = x; + return ilogb(xf); +} + + +template +ap_fixed log2(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const static int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + // return ap_fixed value + ap_fixed r = 0; + ap_ufixed x_s = x; + + if (F_==0) { + if (I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else r = 4; + } else if (I_<=9) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else r = 8; + } else if (I_<=13) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else r = 12; + } else if (I_<=17) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else r = 16; + } else if (I_<=21) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else r = 20; + } else if (I_<=25) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else if (x_s<=ap_ufixed("0x16A09Ep0")) r = 20; + else if (x_s<=ap_ufixed("0x2D413Cp0")) r = 21; + else if (x_s<=ap_ufixed("0x5A8279p0")) r = 22; + else if (x_s<=ap_ufixed("0xB504F3p0")) r = 23; + else r = 24; + } else if (I_<=29) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else if (x_s<=ap_ufixed("0x16A09Ep0")) r = 20; + else if (x_s<=ap_ufixed("0x2D413Cp0")) r = 21; + else if (x_s<=ap_ufixed("0x5A8279p0")) r = 22; + else if (x_s<=ap_ufixed("0xB504F3p0")) r = 23; + else if (x_s<=ap_ufixed("0x16A09E6p0")) r = 24; + else if (x_s<=ap_ufixed("0x2D413CCp0")) r = 25; + else if (x_s<=ap_ufixed("0x5A82799p0")) r = 26; + else if (x_s<=ap_ufixed("0xB504F33p0")) r = 27; + else r = 28; + } else { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else if (x_s<=ap_ufixed("0x16A09Ep0")) r = 20; + else if (x_s<=ap_ufixed("0x2D413Cp0")) r = 21; + else if (x_s<=ap_ufixed("0x5A8279p0")) r = 22; + else if (x_s<=ap_ufixed("0xB504F3p0")) r = 23; + else if (x_s<=ap_ufixed("0x16A09E6p0")) r = 24; + else if (x_s<=ap_ufixed("0x2D413CCp0")) r = 25; + else if (x_s<=ap_ufixed("0x5A82799p0")) r = 26; + else if (x_s<=ap_ufixed("0xB504F33p0")) r = 27; + else if (x_s<=ap_ufixed("0x16A09E66p0")) r = 28; + else if (x_s<=ap_ufixed("0x2D413CCCp0")) r = 29; + else if (x_s<=ap_ufixed("0x5A827999p0")) r = 30; + else if (x_s<=ap_ufixed("0xB504F333p0")) r = 31; + else r = 32; + } + } else if (F_<=4 && I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s==ap_ufixed("0x0.1p0")) r = "-0x4.0p0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "-0x3.0p0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "-0x2.7p0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "-0x2.0p0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "-0x1.Bp0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "-0x1.7p0"; + else if (x_s==ap_ufixed("0x0.7p0")) r = "-0x1.3p0"; + else if (x_s==ap_ufixed("0x0.8p0")) r = "-0x1.0p0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "-0x0.Dp0"; + else if (x_s<=ap_ufixed("0x0.Ap0")) r = "-0x0.Bp0"; + else if (x_s==ap_ufixed("0x0.Bp0")) r = "-0x0.9p0"; + else if (x_s==ap_ufixed("0x0.Cp0")) r = "-0x0.7p0"; + else if (x_s==ap_ufixed("0x0.Dp0")) r = "-0x0.5p0"; + else if (x_s==ap_ufixed("0x0.Ep0")) r = "-0x0.3p0"; + else if (x_s==ap_ufixed("0x0.Fp0")) r = "-0x0.1p0"; + else if (x_s==ap_ufixed("0x1.0p0")) r = "0x0.0p0"; + else if (x_s==ap_ufixed("0x1.1p0")) r = "0x0.1p0"; + else if (x_s==ap_ufixed("0x1.2p0")) r = "0x0.3p0"; + else if (x_s==ap_ufixed("0x1.3p0")) r = "0x0.4p0"; + else if (x_s==ap_ufixed("0x1.4p0")) r = "0x0.5p0"; + else if (x_s==ap_ufixed("0x1.5p0")) r = "0x0.6p0"; + else if (x_s==ap_ufixed("0x1.6p0")) r = "0x0.7p0"; + else if (x_s==ap_ufixed("0x1.7p0")) r = "0x0.8p0"; + else if (x_s<=ap_ufixed("0x1.8p0")) r = "0x0.9p0"; + else if (x_s<=ap_ufixed("0x1.9p0")) r = "0x0.Ap0"; + else if (x_s<=ap_ufixed("0x1.Ap0")) r = "0x0.Bp0"; + else if (x_s<=ap_ufixed("0x1.Bp0")) r = "0x0.Cp0"; + else if (x_s<=ap_ufixed("0x1.Cp0")) r = "0x0.Dp0"; + else if (x_s<=ap_ufixed("0x1.Dp0")) r = "0x0.Ep0"; + else if (x_s<=ap_ufixed("0x1.Fp0")) r = "0x0.Fp0"; + else if (x_s<=ap_ufixed("0x2.0p0")) r = "0x1.0p0"; + else if (x_s<=ap_ufixed("0x2.2p0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0x2.3p0")) r = "0x1.2p0"; + else if (x_s<=ap_ufixed("0x2.5p0")) r = "0x1.3p0"; + else if (x_s<=ap_ufixed("0x2.6p0")) r = "0x1.4p0"; + else if (x_s<=ap_ufixed("0x2.8p0")) r = "0x1.5p0"; + else if (x_s<=ap_ufixed("0x2.Ap0")) r = "0x1.6p0"; + else if (x_s<=ap_ufixed("0x2.Cp0")) r = "0x1.7p0"; + else if (x_s<=ap_ufixed("0x2.Ep0")) r = "0x1.8p0"; + else if (x_s<=ap_ufixed("0x3.0p0")) r = "0x1.9p0"; + else if (x_s<=ap_ufixed("0x3.2p0")) r = "0x1.Ap0"; + else if (x_s<=ap_ufixed("0x3.4p0")) r = "0x1.Bp0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x1.Cp0"; + else if (x_s<=ap_ufixed("0x3.9p0")) r = "0x1.Dp0"; + else if (x_s<=ap_ufixed("0x3.Bp0")) r = "0x1.Ep0"; + else if (x_s<=ap_ufixed("0x3.Ep0")) r = "0x1.Fp0"; + else if (x_s<=ap_ufixed("0x4.1p0")) r = "0x2.0p0"; + else if (x_s<=ap_ufixed("0x4.4p0")) r = "0x2.1p0"; + else if (x_s<=ap_ufixed("0x4.7p0")) r = "0x2.2p0"; + else if (x_s<=ap_ufixed("0x4.Ap0")) r = "0x2.3p0"; + else if (x_s<=ap_ufixed("0x4.Dp0")) r = "0x2.4p0"; + else if (x_s<=ap_ufixed("0x5.1p0")) r = "0x2.5p0"; + else if (x_s<=ap_ufixed("0x5.4p0")) r = "0x2.6p0"; + else if (x_s<=ap_ufixed("0x5.8p0")) r = "0x2.7p0"; + else if (x_s<=ap_ufixed("0x5.Cp0")) r = "0x2.8p0"; + else if (x_s<=ap_ufixed("0x6.0p0")) r = "0x2.9p0"; + else if (x_s<=ap_ufixed("0x6.4p0")) r = "0x2.Ap0"; + else if (x_s<=ap_ufixed("0x6.9p0")) r = "0x2.Bp0"; + else if (x_s<=ap_ufixed("0x6.Dp0")) r = "0x2.Cp0"; + else if (x_s<=ap_ufixed("0x7.2p0")) r = "0x2.Dp0"; + else if (x_s<=ap_ufixed("0x7.7p0")) r = "0x2.Ep0"; + else if (x_s<=ap_ufixed("0x7.Dp0")) r = "0x2.Fp0"; + else if (x_s<=ap_ufixed("0x8.2p0")) r = "0x3.0p0"; + else if (x_s<=ap_ufixed("0x8.8p0")) r = "0x3.1p0"; + else if (x_s<=ap_ufixed("0x8.Ep0")) r = "0x3.2p0"; + else if (x_s<=ap_ufixed("0x9.4p0")) r = "0x3.3p0"; + else if (x_s<=ap_ufixed("0x9.Bp0")) r = "0x3.4p0"; + else if (x_s<=ap_ufixed("0xA.2p0")) r = "0x3.5p0"; + else if (x_s<=ap_ufixed("0xA.9p0")) r = "0x3.6p0"; + else if (x_s<=ap_ufixed("0xB.1p0")) r = "0x3.7p0"; + else if (x_s<=ap_ufixed("0xB.8p0")) r = "0x3.8p0"; + else if (x_s<=ap_ufixed("0xC.1p0")) r = "0x3.9p0"; + else if (x_s<=ap_ufixed("0xC.9p0")) r = "0x3.Ap0"; + else if (x_s<=ap_ufixed("0xD.2p0")) r = "0x3.Bp0"; + else if (x_s<=ap_ufixed("0xD.Bp0")) r = "0x3.Cp0"; + else if (x_s<=ap_ufixed("0xE.5p0")) r = "0x3.Dp0"; + else if (x_s<=ap_ufixed("0xE.Fp0")) r = "0x3.Ep0"; + else if (x_s<=ap_ufixed("0xF.Ap0")) r = "0x3.Fp0"; + else r = "0x4.0p0"; + } else { + + if (x<=0) {r[W_-1] = 1;} + else { + const static int W_s_= (F_+F_/77*2+12)/15-(100+F_)/133+(99+F_)/133-(100+F_)/118+(98+F_)/118+1; + + const static int wf = log_traits::wf; + const static int I_s= I_>0? I_:-I_; + const static int org_wf = log_traits::org_wf+I_s; + const static int MaxPrecision = log_traits::MaxPrecision; + + ap_int<7> b_exp=0; + ap_ufixed<1 + org_wf,1> b_frac=0; + b_frac[org_wf] = 0; + b_frac(org_wf-1,org_wf-W_+1) = x(W_-2,0); + #pragma unroll + for (b_exp = I_-1; b_exp >= -F_; b_exp--) { + if ((!b_frac[org_wf]&b_frac[org_wf-1]&b_frac[org_wf-2])|(b_frac[org_wf]&!b_frac[org_wf-1])) + break; + b_frac <<= 1; + } + + ap_fixed<30,5> Elog2_s = b_exp; + ap_fixed<48,5> Elog2_l = b_exp; + + + typedef typename log_traits::LOG_TYPE LOG_TYPE; + const static int bypass_threshold = log_traits::p_generic; + + ap_uint<1+alpha0> index0; // ap_uint<6> + if (b_frac[org_wf]) index0 = b_frac(org_wf-1,org_wf-6); + else index0 = b_frac(org_wf-2,org_wf-7); + + const int T0size = 1 << (1+alpha0); + +#define inverse_lut log_inverse_lut_table::array +#define log_lut log0_lut_table::array + + ap_ufixed<1 + alpha0, 1> b_frac_tilde_inverse = inverse_lut[index0]; + + LOG_TYPE log_sum = log_lut[index0]; + + ap_ufixed<1 + org_wf+1+(1+alpha0), 1> b_frac1 = b_frac * b_frac_tilde_inverse; + +#ifndef __SYNTHESIS__ + assert(b_frac1( b_frac1.wl()-b_frac1.iwl()-1, b_frac1.wl()-b_frac1.iwl()-p1) == 0); +#endif + const int z1_width = 1+wf+1+(1+alpha0)-p1+1; + ap_ufixed z1 = b_frac1; + + ap_fixed<1-bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk; + zk = log_traits::range_reduction(z1,log_sum); + + ap_fixed<1-2*bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk_trunc = zk; + LOG_TYPE sum = zk-(zk_trunc*zk_trunc/2); + + LOG_TYPE log_base = log_sum + sum; + + const ap_ufixed<26,1> LOG1_54_s = "0x1.7154765p0"; + const ap_ufixed<44,1> LOG1_54_l = "0x1.71547652B82Fp0"; + + if (F_<=16) log_base = Elog2_s + log_base * LOG1_54_s; + else log_base = Elog2_l + log_base * LOG1_54_l; +#undef log_lut +#undef inverse_lut + + r = log_base; + } + + } + + return r; +} + +template +ap_ufixed log2(ap_ufixed x) { + ap_fixed xf = x; + return log2(xf); +} + +template +ap_int log2(ap_int x) { + ap_fixed xf = x; + return log2(xf); +} + +template +ap_uint log2(ap_uint x) { + ap_fixed xf = x; + return log2(xf); +} + +template +ap_fixed logb(ap_fixed x) { + return log2(x); +} + +template +ap_ufixed logb(ap_ufixed x) { + ap_fixed xf = x; + return logb(xf); +} + +template +ap_int logb(ap_int x) { + ap_fixed xf = x; + return logb(xf); +} + +template +ap_uint logb(ap_uint x) { + ap_fixed xf = x; + return logb(xf); +} + +} +#endif + + diff --git a/vitis/v2020_1/hls_mac_pack.h b/vitis/v2020_1/hls_mac_pack.h new file mode 100644 index 00000000..e2ab2ad1 --- /dev/null +++ b/vitis/v2020_1/hls_mac_pack.h @@ -0,0 +1,82 @@ +#ifndef HLS_MAC_PACK_H_ +#define HLS_MAC_PACK_H_ + +#include "ap_int.h" +//#include + + +#define PORT_A_WIDTH 8 //8 +#define PORT_B_WIDTH 8 //8 + +#define ACC_EXT 1 +#define MARGIN 2 +#define RSHFT PORT_A_WIDTH + PORT_B_WIDTH + MARGIN +#define MASK18L 0x3FFFF +#define MASK18H 0xFFFFFFFC0000 +#define MASKL MASK18L +#define MASKH MASK18H +#define RND 1< typeDSPPortA; /// A +typedef ap_int typeDSPPortB; /// W +typedef ap_int typeDSPPortD; /// B +typedef ap_int typeDSPPortC; +typedef ap_int typeDSPPortP; +typedef ap_uint<1> typeDSPOpMode_bit; + +typedef ap_int typeOpA; +typedef ap_int typeOpB; +typedef ap_int typeOpD; +typedef ap_int typeP; +typedef ap_int<24> typeAccL; +typedef ap_int<24> typeAccH; + + +template +static void mac_pack(ap_int A,ap_int B, ap_int W,ap_int &Accum_in, bool rst) +{ + +#pragma HLS INLINE + typeDSPPortA Ap = A; + typeDSPPortB Wp = W; + typeDSPPortD Bp = B; + typeDSPPortC Cmac; + Cmac(RSHFT-1,0)= 0; + if(rst) + Cmac(DSP48_MACW-1,RSHFT)=0; //Cmac((TP_ACCUM_WB/2)+RSHFT-1,RSHFT)=0; + else + Cmac(DSP48_MACW-1,RSHFT)= Accum_in(TP_ACCUM_WB-1,TP_ACCUM_WB/2); + Bp = Bp<0 && Wp<0) || (Ap<0 && Wp>0)) + Cmac = Cmac + typeDSPPortP (RND); + Cmac = Cmac +W * O_preAdd; // W * O_preAdd; + Accum_in(TP_ACCUM_WB/2 -1 ,0) = (ap_int)Accum_in(TP_ACCUM_WB/2 -1 ,0) + (ap_int)Cmac(TP_A_BW+TP_B_BW-1,0) ;// (ap_int<18>)(Cmac & MASKL); + Accum_in(TP_ACCUM_WB-1,TP_ACCUM_WB/2)= (ap_int)Cmac((TP_ACCUM_WB/2)+RSHFT-1,RSHFT);//(typeAccH)(Cmac>>18); + } + +template +static ap_int dot2(ap_int A[VECTOR_LENGTH], ap_int B[VECTOR_LENGTH],ap_int W[VECTOR_LENGTH]) + { +#pragma HLS INLINE + ap_int Accum; + vector_dot2_label0:for (int i = 0; i < VECTOR_LENGTH; ++i) + { +#pragma HLS PIPELINE II=1 + mac_pack(A[i],B[i],W[i],Accum,i==0); + } + return Accum; + } + +#endif //HLS_MAC_PACK_H_ + + diff --git a/vitis/v2020_1/hls_mad_apfixed.h b/vitis/v2020_1/hls_mad_apfixed.h new file mode 100644 index 00000000..0318143f --- /dev/null +++ b/vitis/v2020_1/hls_mad_apfixed.h @@ -0,0 +1,61 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef _X_HLS_GENERIC_MAD_H_ +#define _X_HLS_GENERIC_MAD_H_ +#include "ap_fixed.h" +namespace hls_mad { + //mad for ap_fixed + template + ap_fixed generic_mad(ap_fixed x, ap_fixed y, ap_fixed z){ + const unsigned int F_ = W_ - I_; + ap_fixed<2*W_, 2*I_> mul = x * y; + //rounding + ap_fixed<2, -F_> delta = 0; + delta[0] = 1; + delta[1] = mul[2*W_-1]; + //add delta or subtract delta + mul += delta; + //if overflow + ap_fixed mul_s = mul; + ap_fixed sum = mul_s + z; + ap_fixed r = 0; + //overflow + if(sum[W_-1]!=sum[W_]) { + for(int i = 0; i < W_-1; ++i) { + #pragma HLS unroll + r[i] = !sum[W_]; + } + r[W_-1] = sum[W_]; + } else { + r = sum; + } + return r; + } + //mad for ap_ufixed + template + ap_ufixed generic_mad(ap_ufixed x, ap_ufixed y, ap_ufixed z){ + ap_fixed xi = x; + ap_fixed yi = y; + ap_fixed zi = z; + return generic_mad(xi, yi, zi); + } + //mad for ap_int + template + ap_int generic_mad(ap_int x, ap_int y, ap_int z){ + ap_fixed xi = x; + ap_fixed yi = y; + ap_fixed zi = z; + return generic_mad(xi, yi, zi); + } + //mad for ap_uint + template + ap_uint generic_mad(ap_uint x, ap_uint y, ap_uint z){ + ap_fixed xi = x; + ap_fixed yi = y; + ap_fixed zi = z; + return generic_mad(xi,yi,zi); + } +} + +#endif + + diff --git a/vitis/v2020_1/hls_math.h b/vitis/v2020_1/hls_math.h new file mode 100644 index 00000000..5240872f --- /dev/null +++ b/vitis/v2020_1/hls_math.h @@ -0,0 +1,3205 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef _X_HLSTMP_MATH__ +#define _X_HLSTMP_MATH__ + +#include +#include "vivado/v2020_1/hls_half.h" +#include "hls_fpo.h" +#include + +namespace hls { + + // signbit + int signbit(double); + int signbit(float); + int signbit(half); + int signbitf(float); + int half_signbit(half); + + // nan + double nan(const char*); + float nanf(const char*); + half half_nan(const char *); + + // isfinite + int isfinite(double); + int isfinite(float); + int isfinite(half); + int isfinitef(float); + int half_isfinite(half); + + // __isfinite + int __isfinite(double); + int __isfinite(float); + int __isfinite(half); + int __isfinitef(float); + + // isinf + int isinf(double); + int isinf(float); + int isinf(half); + int isinff(float); + int half_isinf(half); + + // __isinf + int __isinf(double); + int __isinf(float); + int __isinf(half); + int __isinff(float); + + // isnan + int isnan(double); + int isnan(float); + int isnan(half); + int isnanf(float); + int half_isnan(half); + + // __isnan + int __isnan(double); + int __isnan(float); + int __isnan(half); + int __isnanf(float); + + // isnormal + int isnormal(double); + int isnormal(float); + int isnormal(half); + int isnormalf(float); + int half_isnormal(half); + + // __isnormal + int __isnormal(double); + int __isnormal(float); + int __isnormal(half); + int __isnormalf(float); + + // fpclassify + int fpclassify(double); + int fpclassify(float); + int fpclassify(half); + int fpclassifyf(float); + int half_fpclassify(half); + + // __fpclassify + int __fpclassify(double); + int __fpclassify(float); + int __fpclassify(half); + int __fpclassifyf(float); + + // copysign + double copysign(double, double); + float copysign(float, float); + half copysign(half, half); + float copysignf(float, float); + half half_copysign(half, half); + int8_t copysign(int8_t, int8_t); + uint8_t copysign(uint8_t, uint8_t); + int16_t copysign(int16_t, int16_t); + uint16_t copysign(uint16_t, uint16_t); + int32_t copysign(int32_t, int32_t); + uint32_t copysign(uint32_t, uint32_t); + + // fabs + double fabs(double); + float fabs(float); + half fabs(half); + float fabsf(float); + half half_fabs(half); + int8_t fabs(int8_t); + uint8_t fabs(uint8_t); + int16_t fabs(int16_t); + uint16_t fabs(uint16_t); + int32_t fabs(int32_t); + uint32_t fabs(uint32_t); + + // abs + double abs(double); + float abs(float); + half abs(half); + float absf(float); + half half_abs(half); + int8_t abs(int8_t); + uint8_t abs(uint8_t); + int16_t abs(int16_t); + uint16_t abs(uint16_t); + int32_t abs(int32_t); + uint32_t abs(uint32_t); + + // fma + double fma(double, double, double); + float fma(float, float, float); + half fma(half, half, half); + float fmaf(float, float, float); + half half_fma(half, half, half); + + // mad + double mad(double, double, double); + float mad(float, float, float); + half mad(half, half, half); + float madf(float, float, float); + half half_mad(half, half, half); + + // isequal + int isequal(double, double); + int isequal(float, float); + int isequal(half, half); + int isequalf(float, float); + int half_isequal(half, half); + + // isgreater + int isgreater(double, double); + int isgreater(float, float); + int isgreater(half, half); + int isgreaterf(float, float); + int half_isgreater(half, half); + + // isgreaterequal + int isgreaterequal(double, double); + int isgreaterequal(float, float); + int isgreaterequal(half, half); + int isgreaterequalf(float, float); + int half_isgreaterequal(half, half); + + // isless + int isless(double, double); + int isless(float, float); + int isless(half, half); + int islessf(float, float); + int half_isless(half, half); + + // islessequal + int islessequal(double, double); + int islessequal(float, float); + int islessequal(half, half); + int islessequalf(float, float); + int half_islessequal(half, half); + + // islessgreater + int islessgreater(double, double); + int islessgreater(float, float); + int islessgreater(half, half); + int islessgreaterf(float, float); + int half_islessgreater(half, half); + + // isnotequal + int isnotequal(double, double); + int isnotequal(float, float); + int isnotequal(half, half); + int isnotequalf(float, float); + int half_isnotequal(half, half); + + // fmax + double fmax(double, double); + float fmax(float, float); + half fmax(half, half); + float fmaxf(float, float); + half half_fmax(half, half); + int8_t fmax(int8_t,int8_t); + uint8_t fmax(uint8_t, uint8_t); + int16_t fmax(int16_t, int16_t); + uint16_t fmax(uint16_t, uint16_t); + int32_t fmax(int32_t, int32_t); + uint32_t fmax(uint32_t, uint32_t); + + // fmin + double fmin(double, double); + float fmin(float, float); + half fmin(half, half); + float fminf(float, float); + half half_fmin(half, half); + int8_t fmin(int8_t,int8_t); + uint8_t fmin(uint8_t, uint8_t); + int16_t fmin(int16_t, int16_t); + uint16_t fmin(uint16_t, uint16_t); + int32_t fmin(int32_t, int32_t); + uint32_t fmin(uint32_t, uint32_t); + + // max + template + T max(T x, T y){ + return (x > y) ? x : y; + } + + // min + template + T min(T x, T y){ + return (x < y) ? x : y; + } + + // fdim + double fdim(double, double); + float fdim(float, float); + half fdim(half, half); + float fdimf(float, float); + half half_fdim(half, half); + int8_t fdim(int8_t,int8_t); + uint8_t fdim(uint8_t, uint8_t); + int16_t fdim(int16_t, int16_t); + uint16_t fdim(uint16_t, uint16_t); + int32_t fdim(int32_t, int32_t); + uint32_t fdim(uint32_t, uint32_t); + + // maxmag + double maxmag(double, double); + float maxmag(float, float); + half maxmag(half, half); + float maxmagf(float, float); + half half_maxmag(half, half); + int8_t maxmag(int8_t,int8_t); + uint8_t maxmag(uint8_t, uint8_t); + int16_t maxmag(int16_t, int16_t); + uint16_t maxmag(uint16_t, uint16_t); + int32_t maxmag(int32_t, int32_t); + uint32_t maxmag(uint32_t, uint32_t); + + // minmag + double minmag(double, double); + float minmag(float, float); + half minmag(half, half); + float minmagf(float, float); + half half_minmag(half, half); + int8_t minmag(int8_t,int8_t); + uint8_t minmag(uint8_t, uint8_t); + int16_t minmag(int16_t, int16_t); + uint16_t minmag(uint16_t, uint16_t); + int32_t minmag(int32_t, int32_t); + uint32_t minmag(uint32_t, uint32_t); + + + // frexp + double frexp(double, int*); + float frexp(float, int*); + half frexp(half, int*); + float frexpf(float, int*); + half half_frexp(half, int*); + + // ldexp + double ldexp(double, int); + float ldexp(float, int); + half ldexp(half, int); + float ldexpf(float, int); + half half_ldexp(half, int); + + // ilogb + int ilogb(double); + int ilogb(float); + int ilogb(half); + int ilogbf(float); + int half_ilogb(half); + + // scalbn + double scalbn(double, int); + float scalbn(float, int); + half scalbn(half, int); + float scalbnf(float, int); + half half_scalbn(half, int); + + // scalbln + double scalbln(double, long int); + float scalbln(float, long int); + half scalbln(half, long int); + float scalblnf(float, long int); + half half_scalbln(half, long int); + + // ceil + double ceil(double); + float ceil(float); + half ceil(half); + float ceilf(float); + half half_ceil(half); + + // floor + double floor(double); + float floor(float); + half floor(half); + float floorf(float); + half half_floor(half); + + // trunc + double trunc(double); + float trunc(float); + half trunc(half); + float truncf(float); + half half_trunc(half); + + // round + double round(double); + float round(float); + half round(half); + float roundf(float); + half half_round(half); + + // rint + double rint(double); + float rint(float); + half rint(half); + float rintf(float); + half half_rint(half); + + // lround + long int lround(double); + long int lround(float); + long int lround(half); + long int lroundf(float); + long int half_lround(half); + + // llround + long long int llround(double); + long long int llround(float); + long long int llround(half); + long long int llroundf(float); + long long int half_llround(half); + + // lrint + long int lrint(double); + long int lrint(float); + long int lrint(half); + long int lrintf(float); + long int half_lrint(half); + + // llrint + long long int llrint(double); + long long int llrint(float); + long long int llrint(half); + long long int llrintf(float); + long long int half_llrint(half); + + // cast_IEEE754 + template + T cast_IEEE754(double, bool); + template + T cast_IEEE754(float, bool); + template + T cast_IEEE754(half, bool); + + template + T cast_IEEE754(double); + template + T cast_IEEE754(float); + template + T cast_IEEE754(half); + + + // cast_IEEE754 + template<> + char cast_IEEE754(double, bool); + template<> + char cast_IEEE754(float, bool); + template<> + char cast_IEEE754(half, bool); + template<> + char cast_IEEE754(double); + template<> + char cast_IEEE754(float); + template<> + char cast_IEEE754(half); + + // cast_IEEE754 + template<> + int8_t cast_IEEE754(double, bool); + template<> + int8_t cast_IEEE754(float, bool); + template<> + int8_t cast_IEEE754(half, bool); + template<> + int8_t cast_IEEE754(double); + template<> + int8_t cast_IEEE754(float); + template<> + int8_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint8_t cast_IEEE754(double, bool); + template<> + uint8_t cast_IEEE754(float, bool); + template<> + uint8_t cast_IEEE754(half, bool); + template<> + uint8_t cast_IEEE754(double); + template<> + uint8_t cast_IEEE754(float); + template<> + uint8_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + int16_t cast_IEEE754(double, bool); + template<> + int16_t cast_IEEE754(float, bool); + template<> + int16_t cast_IEEE754(half, bool); + template<> + int16_t cast_IEEE754(double); + template<> + int16_t cast_IEEE754(float); + template<> + int16_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint16_t cast_IEEE754(double, bool); + template<> + uint16_t cast_IEEE754(float, bool); + template<> + uint16_t cast_IEEE754(half, bool); + template<> + uint16_t cast_IEEE754(double); + template<> + uint16_t cast_IEEE754(float); + template<> + uint16_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + int32_t cast_IEEE754(double, bool); + template<> + int32_t cast_IEEE754(float, bool); + template<> + int32_t cast_IEEE754(half, bool); + template<> + int32_t cast_IEEE754(double); + template<> + int32_t cast_IEEE754(float); + template<> + int32_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint32_t cast_IEEE754(double, bool); + template<> + uint32_t cast_IEEE754(float, bool); + template<> + uint32_t cast_IEEE754(half, bool); + template<> + uint32_t cast_IEEE754(double); + template<> + uint32_t cast_IEEE754(float); + template<> + uint32_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + int64_t cast_IEEE754(double, bool); + template<> + int64_t cast_IEEE754(float, bool); + template<> + int64_t cast_IEEE754(half, bool); + template<> + int64_t cast_IEEE754(double); + template<> + int64_t cast_IEEE754(float); + template<> + int64_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint64_t cast_IEEE754(double, bool); + template<> + uint64_t cast_IEEE754(float, bool); + template<> + uint64_t cast_IEEE754(half, bool); + template<> + uint64_t cast_IEEE754(double); + template<> + uint64_t cast_IEEE754(float); + template<> + uint64_t cast_IEEE754(half); + + + // nearbyint + double nearbyint(double); + float nearbyint(float); + half nearbyint(half); + float nearbyintf(float); + half half_nearbyint(half); + + // modf + double modf(double, double*); + float modf(float, float*); + half modf(half, half*); + float modff(float, float*); + half half_modf(half, half*); + + // fract + double fract(double, double*); + float fract(float, float*); + half fract(half, half*); + float fractf(float, float*); + half half_fract(half, half*); + + // isordered + int isordered(double, double); + int isordered(float, float); + int isordered(half, half); + int isorderedf(float, float); + int half_isordered(half, half); + + // isunordered + int isunordered(double, double); + int isunordered(float, float); + int isunordered(half, half); + int isunorderedf(float, float); + int half_isunordered(half, half); + + // bitselect + double bitselect(double, double, double); + float bitselect(float, float, float); + int bitselect(int, int, int); + uint32_t bitselect(uint32_t, uint32_t, uint32_t); + half bitselect(half, half, half); + float bitselectf(float, float, float); + half half_bitselect(half, half, half); + + // sin cos implemented with hotbm method + namespace hotbm { + double sin(double); + float sin(float); + half sin(half); + float sinf(float); + half half_sin(half); + + double cos(double); + float cos(float); + half cos(half); + float cosf(float); + half half_cos(half); + + void sincos(double, double*, double*); + void sincos(float, float*, float*); + void sincos(half, half*, half*); + void sincosf(float, float*, float*); + void half_sincos(half, half*, half*); + } + + // sin cos implemented with cordic method + namespace cordic { + double sin(double); + float sin(float); + half sin(half); + float sinf(float); + half half_sin(half); + + double cos(double); + float cos(float); + half cos(half); + float cosf(float); + half half_cos(half); + + void sincos(double, double*, double*); + void sincos(float, float*, float*); + void sincos(half, half*, half*); + void sincosf(float, float*, float*); + void half_sincos(half, half*, half*); + } + + // sin cos implemented with hotbm method + double sin(double); + float sin(float); + half sin(half); + float sinf(float); + half half_sin(half); + + double cos(double); + float cos(float); + half cos(half); + float cosf(float); + half half_cos(half); + + // sincos + void sincos(double, double*, double*); + void sincos(float, float*, float*); + void sincos(half, half*, half*); + void sincosf(float, float*, float*); + void half_sincos(half, half*, half*); + + // sinpi + double sinpi(double); + float sinpi(float); + half sinpi(half); + float sinpif(float); + half half_sinpi(half); + + // cospi + double cospi(double); + float cospi(float); + half cospi(half); + float cospif(float); + half half_cospi(half); + + // tanpi + double tanpi(double); + float tanpi(float); + half tanpi(half); + float tanpif(float); + half half_tanpi(half); + + // atan + double atan(double); + float atan(float); + half atan(half); + float atanf(float); + half half_atan(half); + + // atan2 + double atan2(double, double); + float atan2(float, float); + half atan2(half, half); + float atan2f(float, float); + half half_atan2(half, half); + + // tan + double tan(double); + float tan(float); + half tan(half); + float tanf(float); + half half_tan(half); + + // sinh + double sinh(double); + float sinh(float); + half sinh(half); + float sinhf(float); + half half_sinh(half); + + // cosh + double cosh(double); + float cosh(float); + half cosh(half); + float coshf(float); + half half_cosh(half); + + // exp + double exp(double); + float exp(float); + half exp(half); + float expf(float); + half half_exp(half); + int8_t exp(int8_t); + uint8_t exp(uint8_t); + int16_t exp(int16_t); + uint16_t exp(uint16_t); + int32_t exp(int32_t); + uint32_t exp(uint32_t); + + // exp2 + double exp2(double); + float exp2(float); + half exp2(half); + float exp2f(float); + half half_exp2(half); + + // exp10 + double exp10(double); + float exp10(float); + half exp10(half); + float exp10f(float); + half half_exp10(half); + + // expm1 + double expm1(double); + float expm1(float); + half expm1(half); + float expm1f(float); + half half_expm1(half); + + // log + double log(double); + float log(float); + half log(half); + float logf(float); + half half_log(half); + int8_t log(int8_t); + uint8_t log(uint8_t); + int16_t log(int16_t); + uint16_t log(uint16_t); + int32_t log(int32_t); + uint32_t log(uint32_t); + + // log2 + double log2(double); + float log2(float); + half log2(half); + float log2f(float); + half half_log2(half); + + // log10 + double log10(double); + float log10(float); + half log10(half); + float log10f(float); + half half_log10(half); + int8_t log10(int8_t); + uint8_t log10(uint8_t); + int16_t log10(int16_t); + uint16_t log10(uint16_t); + int32_t log10(int32_t); + uint32_t log10(uint32_t); + + // logb + double logb(double); + float logb(float); + half logb(half); + float logbf(float); + half half_logb(half); + // log1p + double log1p(double); + float log1p(float); + half log1p(half); + float log1pf(float); + half half_log1p(half); + + // pow + half pow(half, half); + float pow(float, float); + double pow(double, double); + float powf(float, float); + half half_pow(half, half); + int8_t pow(int8_t, int8_t); + uint8_t pow(uint8_t, uint8_t); + int16_t pow(int16_t, int16_t); + uint16_t pow(uint16_t, uint16_t); + int32_t pow(int32_t, int32_t); + uint32_t pow(uint32_t, uint32_t); + int8_t powr(int8_t, int8_t); + uint8_t powr(uint8_t, uint8_t); + int16_t powr(int16_t, int16_t); + uint16_t powr(uint16_t, uint16_t); + int32_t powr(int32_t, int32_t); + uint32_t powr(uint32_t, uint32_t); + + // powr + half powr(half, half); + float powr(float, float); + double powr(double, double); + float powrf(float, float); + half half_powr(half, half); + + // pown + half pown(half, int); + float pown(float, int); + double pown(double, int); + float pownf(float, int); + half half_pown(half, int); + + // rootn + half rootn(half, int); + float rootn(float, int); + double rootn(double, int); + float rootnf(float, int); + half half_rootn(half, int); + + // sqrt + double sqrt(double); + float sqrt(float); + half sqrt(half); + float sqrtf(float); + half half_sqrt(half); + int8_t sqrt(int8_t); + uint8_t sqrt(uint8_t); + int16_t sqrt(int16_t); + uint16_t sqrt(uint16_t); + int32_t sqrt(int32_t); + uint32_t sqrt(uint32_t); + + // template + // ap_fixed sqrt(ap_fixed x){ + // return sqrt_fixed(x); + // }; + // template + // ap_ufixed sqrt(ap_ufixed x){ + // return sqrt_fixed(x); + // } + // template + // ap_int sqrt(ap_int x){ + // return sqrt_fixed(x); + // } + // template + // ap_uint sqrt(ap_uint x){ + // return sqrt_fixed(x); + // } + + // recip + double recip(double); + float recip(float); + half recip(half); + float recipf(float); + half half_recip(half); + int8_t recip(int8_t); + uint8_t recip(uint8_t); + int16_t recip(int16_t); + uint16_t recip(uint16_t); + int32_t recip(int32_t); + uint32_t recip(uint32_t); + + // rsqrt + double rsqrt(double); + float rsqrt(float); + half rsqrt(half); + float rsqrtf(float); + half half_rsqrt(half); + int8_t rsqrt(int8_t); + uint8_t rsqrt(uint8_t); + int16_t rsqrt(int16_t); + uint16_t rsqrt(uint16_t); + int32_t rsqrt(int32_t); + uint32_t rsqrt(uint32_t); + + // cbrt + double cbrt(double); + float cbrt(float); + half cbrt(half); + float cbrtf(float); + half half_cbrt(half); + + // hypot + double hypot(double, double); + float hypot(float, float); + half hypot(half, half); + float hypotf(float, float); + half half_hypot(half, half); + + // erf + double erf(double); + float erf(float); + half erf(half); + float erff(float); + half half_erf(half); + int8_t erf(int8_t); + uint8_t erf(uint8_t); + int16_t erf(int16_t); + uint16_t erf(uint16_t); + int32_t erf(int32_t); + uint32_t erf(uint32_t); + + // erfc + double erfc(double); + float erfc(float); + half erfc(half); + float erfcf(float); + half half_erfc(half); + int8_t erfc(int8_t); + uint8_t erfc(uint8_t); + int16_t erfc(int16_t); + uint16_t erfc(uint16_t); + int32_t erfc(int32_t); + uint32_t erfc(uint32_t); + + // lgamma + double lgamma(double); + float lgamma(float); + half lgamma(half); + float lgammaf(float); + half half_lgamma(half); + int8_t lgamma(int8_t); + uint8_t lgamma(uint8_t); + int16_t lgamma(int16_t); + uint16_t lgamma(uint16_t); + int32_t lgamma(int32_t); + uint32_t lgamma(uint32_t); + + // lgamma_r + double lgamma_r(double, int*); + float lgamma_r(float, int*); + half lgamma_r(half, int*); + float lgamma_rf(float, int*); + half half_lgamma_r(half, int*); + int8_t lgamma_r(int8_t); + uint8_t lgamma_r(uint8_t); + int16_t lgamma_r(int16_t); + uint16_t lgamma_r(uint16_t); + int32_t lgamma_r(int32_t); + uint32_t lgamma_r(uint32_t); + + // cbrt + double tgamma(double); + float tgamma(float); + half tgamma(half); + float tgammaf(float); + half half_tgamma(half); + int8_t tgamma(int8_t); + uint8_t tgamma(uint8_t); + int16_t tgamma(int16_t); + uint16_t tgamma(uint16_t); + int32_t tgamma(int32_t); + uint32_t tgamma(uint32_t); + + // fmod + double fmod(double, double); + float fmod(float, float); + half fmod(half, half); + float fmodf(float, float); + half half_fmod(half, half); + + // remainder + double remainder(double, double); + float remainder(float, float); + half remainder(half, half); + float remainderf(float, float); + half half_remainder(half, half); + + // remquo + double remquo(double, double, int*); + float remquo(float, float, int*); + half remquo(half, half, int*); + float remquof(float, float, int*); + half half_remquo(half, half, int*); + + // divide + double divide(double, double); + float divide(float, float); + half divide(half, half); + float dividef(float, float); + half half_divide(half, half); + + // nextafter + double nextafter(double, double); + float nextafter(float, float); + half nextafter(half, half); + float nextafterf(float, float); + half half_nextafter(half, half); + + // tanh + double tanh(double); + float tanh(float); + half tanh(half); + float tanhf(float); + half half_tanh(half); + + // atanh + double atanh(double); + float atanh(float); + half atanh(half); + float atanhf(float); + half half_atanh(half); + + // asinh + double asinh(double); + float asinh(float); + half asinh(half); + float asinhf(float); + half half_asinh(half); + + // acosh + double acosh(double); + float acosh(float); + half acosh(half); + float acoshf(float); + half half_acosh(half); + + // asin + double asin(double); + float asin(float); + half asin(half); + float asinf(float); + half half_asin(half); + + // acos + double acos(double); + float acos(float); + half acos(half); + float acosf(float); + half half_acos(half); + + // asinpi + double asinpi(double); + float asinpi(float); + half asinpi(half); + float asinpif(float); + half half_asinpi(half); + + // acospi + double acospi(double); + float acospi(float); + half acospi(half); + float acospif(float); + half half_acospi(half); + + // tanpi + double atanpi(double); + float atanpi(float); + half atanpi(half); + float atanpif(float); + half half_atanpi(half); +} + +#include "hls_hotbm_apfixed.h" +#include "hls_cordic_apfixed.h" +#include "hls_exp_apfixed.h" +#include "hls_log_apfixed.h" +#include "hls_sqrt_apfixed.h" +#include "hls_round_copysign_apfixed.h" +#include "hls_pow_apfixed.h" +#include "hls_diff_apfixed.h" +#include "hls_comparison_apfixed.h" +#include "hls_frexp_apfixed.h" +#include "hls_modf_apfixed.h" +#include "hls_isequal_isnotequal_apfixed.h" +#include "hls_all_any_apfixed.h" +#include "hls_select_bitselect_apfixed.h" +#include "hls_erf_apfixed.h" +#include "hls_fmod_rem_quo_remainder_divide_apfixed.h" +#include "hls_lgamma_apfixed.h" +#include "hls_tgamma_apfixed.h" +#include "hls_fract_apfixed.h" +#include "hls_mad_apfixed.h" +#include "hls_cbrt_apfixed.h" +#include "hls_hypot_apfixed.h" +#include "hls_ldexp_apfixed.h" + +namespace hls { + + // // sin(ap_fixed) + // template + // ap_fixed sin(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 0, 0); + // } + // template + // ap_fixed sinf(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 0, 0); + // } + + // // cos(ap_fixed) + // template + // ap_fixed cos(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 1, 0); + // } + // template + // ap_fixed cosf(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 1, 0); + // } + + // sinpi(ap_fixed), cospi(ap_fixed) + template + ap_fixed sinpi(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 0, 1); + } +/* template + ap_fixed sinpif(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 0, 1); + }*/ + template + ap_ufixed sinpi(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::sinpi(x); + ap_ufixed out = 0; + if(xout[W]==0){ + out = xout; + } + return out; + } + + template + ap_fixed cospi(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 1, 1); + } + template + ap_ufixed cospi(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::cospi(x); + ap_ufixed out = 0; + if(xout[W]==0){ + out = xout; + } + return out; + } + /* template + ap_fixed cospif(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 1, 1); + }*/ + //ap_int sinpi + template + ap_int sinpi(ap_int in){ + return ap_int(0); + } + //ap_int cospi + template + ap_int cospi(ap_int in){ + return ap_int(0); + } + //ap_uint sinpi + template + ap_uint sinpi(ap_uint in){ + return ap_uint(0); + } + //ap_uint cospi + template + ap_uint cospi(ap_uint in){ + return ap_uint(0); + } + int8_t sinpi(int8_t); + uint8_t sinpi(uint8_t); + int16_t sinpi(int16_t); + uint16_t sinpi(uint16_t); + int32_t sinpi(int32_t); + uint32_t sinpi(uint32_t); + + int8_t cospi(int8_t); + uint8_t cospi(uint8_t); + int16_t cospi(int16_t); + uint16_t cospi(uint16_t); + int32_t cospi(int32_t); + uint32_t cospi(uint32_t); + + // exp(ap_fixed) + template + ap_fixed exp(ap_fixed x){ + return exp_reduce::exp(x); + } + template + ap_ufixed exp(ap_ufixed x){ + return exp_reduce::exp(x); + } + template + ap_int exp(ap_int x){ + return exp_reduce::exp(x); + } + template + ap_uint exp(ap_uint x){ + return exp_reduce::exp(x); + } + + // log(ap_fixed) + template + ap_fixed log(ap_fixed x){ + return log_apfixed_reduce::log(x); + } + template + ap_ufixed log(ap_ufixed x){ + return log_apfixed_reduce::log(x); + } + template + ap_int log(ap_int x){ + return log_apfixed_reduce::log(x); + } + template + ap_uint log(ap_uint x){ + return log_apfixed_reduce::log(x); + } + + // log10(ap_fixed) + template + ap_fixed log10(ap_fixed x){ + return log_apfixed_reduce::log10(x); + } + template + ap_ufixed log10(ap_ufixed x){ + return log_apfixed_reduce::log10(x); + } + template + ap_int log10(ap_int x){ + return log_apfixed_reduce::log10(x); + } + template + ap_uint log10(ap_uint x){ + return log_apfixed_reduce::log10(x); + } + + // log2(ap_fixed) + template + ap_fixed log2(ap_fixed x){ + return log_apfixed_reduce::log2(x); + } + template + ap_ufixed log2(ap_ufixed x){ + return log_apfixed_reduce::log2(x); + } + template + ap_int log2(ap_int x){ + return log_apfixed_reduce::log2(x); + } + template + ap_uint log2(ap_uint x){ + return log_apfixed_reduce::log2(x); + } + + // logb(ap_fixed) + template + ap_fixed logb(ap_fixed x){ + return log_apfixed_reduce::logb(x); + } + template + ap_ufixed logb(ap_ufixed x){ + return log_apfixed_reduce::logb(x); + } + template + ap_int logb(ap_int x){ + return log_apfixed_reduce::logb(x); + } + template + ap_uint logb(ap_uint x){ + return log_apfixed_reduce::logb(x); + } + + // sqrt(ap_fixed) + template + ap_fixed sqrt(ap_fixed x){ + return sqrt_fixed(x); + } + template + ap_ufixed sqrt(ap_ufixed x){ + return sqrt_fixed(x); + } + template + ap_int sqrt(ap_int x){ + return sqrt_fixed(x); + } + template + ap_uint sqrt(ap_uint x){ + return sqrt_fixed(x); + } + + // rsqrt(ap_fixed) + template + ap_fixed rsqrt(ap_fixed x){ + return rsqrt_fixed(x); + } + template + ap_ufixed rsqrt(ap_ufixed x){ + return rsqrt_fixed(x); + } + template + ap_int rsqrt(ap_int x){ + return rsqrt_fixed(x); + } + template + ap_uint rsqrt(ap_uint x){ + return rsqrt_fixed(x); + } + + // recip(ap_fixed) + template + ap_fixed recip(ap_fixed x){ + return recip_fixed(x); + } + template + ap_ufixed recip(ap_ufixed x){ + return recip_fixed(x); + } + template + ap_int recip(ap_int x){ + return recip_fixed(x); + } + template + ap_uint recip(ap_uint x){ + return recip_fixed(x); + } + + // ceil(ap_fixed) + template + ap_fixed ceil(ap_fixed x){ + return ceil_fixed(x); + } + template + ap_ufixed ceil(ap_ufixed x){ + return ceil_fixed(x); + } + template + ap_int ceil(ap_int x){ + return ceil_fixed(x); + } + template + ap_uint ceil(ap_uint x){ + return ceil_fixed(x); + } + + // floor(ap_fixed) + template + ap_fixed floor(ap_fixed x){ + return floor_fixed(x); + } + template + ap_ufixed floor(ap_ufixed x){ + return floor_fixed(x); + } + template + ap_int floor(ap_int x){ + return floor_fixed(x); + } + template + ap_uint floor(ap_uint x){ + return floor_fixed(x); + } + + template + ap_fixed trunc(ap_fixed x){ + return trunc_fixed(x); + } + template + ap_ufixed trunc(ap_ufixed x){ + return trunc_fixed(x); + } + template + ap_int trunc(ap_int x){ + return trunc_fixed(x); + } + template + ap_uint trunc(ap_uint x){ + return trunc_fixed(x); + } + + // copysign(ap_fixed) + template + ap_fixed copysign(ap_fixed x, ap_fixed y){ + return copysign_fixed(x,y); + } + template + ap_ufixed copysign(ap_ufixed x, ap_ufixed y){ + return copysign_fixed(x,y); + } + template + ap_int copysign(ap_int x, ap_int y){ + return copysign_fixed(x,y); + } + template + ap_uint copysign(ap_uint x, ap_uint y){ + return copysign_fixed(x,y); + } + + // fabs(ap_fixed) + template + ap_fixed fabs(ap_fixed x){ + return fabs_fixed(x); + } + template + ap_ufixed fabs(ap_ufixed x){ + return fabs_fixed(x); + } + template + ap_int fabs(ap_int x){ + return fabs_fixed(x); + } + template + ap_uint fabs(ap_uint x){ + return fabs_fixed(x); + } + // abs(ap_fixed) + template + ap_fixed abs(ap_fixed x){ + return fabs_fixed(x); + } + template + ap_ufixed abs(ap_ufixed x){ + return fabs_fixed(x); + } + template + ap_int abs(ap_int x){ + return fabs_fixed(x); + } + template + ap_uint abs(ap_uint x){ + return fabs_fixed(x); + } + + // fdim(ap_fixed) + template + ap_fixed fdim(ap_fixed x, ap_fixed y){ + return fdim_fixed(x,y); + } + template + ap_ufixed fdim(ap_ufixed x, ap_ufixed y){ + return fdim_fixed(x,y); + } + template + ap_int fdim(ap_int x, ap_int y){ + return fdim_fixed(x,y); + } + template + ap_uint fdim(ap_uint x, ap_uint y){ + return fdim_fixed(x,y); + } + // fmax(ap_fixed) + template + ap_fixed fmax(ap_fixed x, ap_fixed y){ + return fmax_fixed(x,y); + } + template + ap_ufixed fmax(ap_ufixed x, ap_ufixed y){ + return fmax_fixed(x,y); + } + template + ap_int fmax(ap_int x, ap_int y){ + return fmax_fixed(x,y); + } + template + ap_uint fmax(ap_uint x, ap_uint y){ + return fmax_fixed(x,y); + } + // fmin(ap_fixed) + template + ap_fixed fmin(ap_fixed x, ap_fixed y){ + return fmin_fixed(x,y); + } + template + ap_ufixed fmin(ap_ufixed x, ap_ufixed y){ + return fmin_fixed(x,y); + } + template + ap_int fmin(ap_int x, ap_int y){ + return fmin_fixed(x,y); + } + template + ap_uint fmin(ap_uint x, ap_uint y){ + return fmin_fixed(x,y); + } + // maxmag(ap_fixed) + template + ap_fixed maxmag(ap_fixed x, ap_fixed y){ + return maxmag_fixed(x,y); + } + template + ap_ufixed maxmag(ap_ufixed x, ap_ufixed y){ + return maxmag_fixed(x,y); + } + template + ap_int maxmag(ap_int x, ap_int y){ + return maxmag_fixed(x,y); + } + template + ap_uint maxmag(ap_uint x, ap_uint y){ + return maxmag_fixed(x,y); + } + // minmag(ap_fixed) + template + ap_fixed minmag(ap_fixed x, ap_fixed y){ + return minmag_fixed(x,y); + } + template + ap_ufixed minmag(ap_ufixed x, ap_ufixed y){ + return minmag_fixed(x,y); + } + template + ap_int minmag(ap_int x, ap_int y){ + return minmag_fixed(x,y); + } + template + ap_uint minmag(ap_uint x, ap_uint y){ + return minmag_fixed(x,y); + } + + + // sinh(ap_fixed) + template + ap_fixed sinh(ap_fixed x){ + return cordic_apfixed::generic_sinh(x); + } + + // sinh(ap_ufixed) + template + ap_ufixed sinh(ap_ufixed x){ + return cordic_apfixed::generic_sinh(x); + } + + // sinh(ap_int) + template + ap_int sinh(ap_int x){ + return cordic_apfixed::generic_sinh(x); + } + + // sinh(ap_uint) + template + ap_uint sinh(ap_uint x){ + return cordic_apfixed::generic_sinh(x); + } + + // cosh(ap_fixed) + template + ap_fixed cosh(ap_fixed x){ + return cordic_apfixed::generic_cosh(x); + } + + // cosh(ap_ufixed) + template + ap_ufixed cosh(ap_ufixed x){ + return cordic_apfixed::generic_cosh(x); + } + + // cosh(ap_int) + template + ap_int cosh(ap_int x){ + return cordic_apfixed::generic_cosh(x); + } + + // cosh(ap_uint) + template + ap_uint cosh(ap_uint x){ + return cordic_apfixed::generic_cosh(x); + } + + // tanh(ap_fixed) + template + ap_fixed tanh(ap_fixed x){ + return cordic_apfixed::generic_tanh(x); + } + + // tanh(ap_ufixed) + template + ap_ufixed tanh(ap_ufixed x){ + return cordic_apfixed::generic_tanh(x); + } + + // tanh(ap_int) + template + ap_int tanh(ap_int x){ + return cordic_apfixed::generic_tanh(x); + } + + // tanh(ap_uint) + template + ap_uint tanh(ap_uint x){ + return cordic_apfixed::generic_tanh(x); + } + + // atanh(ap_fixed) + template + ap_fixed atanh(ap_fixed x){ + ap_fixed one_plus_x = 1 + x; + ap_fixed one_minus_x = 1 - x; + ap_fixed input = one_plus_x / one_minus_x ; + ap_fixed result = log_apfixed_reduce::log(input); + result >>= 1; + return result; + } + + // atanh(ap_ufixed) + template + ap_ufixed atanh(ap_ufixed x){ + ap_fixed input = x; + ap_fixed result = hls::atanh(input); + return result; + } + + // atanh(ap_int) + template + ap_int atanh(ap_int x){ + ap_fixed input = x; + ap_fixed result = hls::atanh(input); + return result; + } + + // atanh(ap_uint) + template + ap_uint atanh(ap_uint x){ + ap_fixed input = x; + ap_fixed result = hls::atanh(input); + return result; + } + + // asinh(ap_fixed) + template + ap_fixed asinh(ap_fixed x){ + return cordic_apfixed::generic_asinh(x); + } + + // asinh(ap_ufixed) + template + ap_ufixed asinh(ap_ufixed x){ + return cordic_apfixed::generic_asinh(x); + } + + // asinh(ap_int) + template + ap_int asinh(ap_int x){ + return cordic_apfixed::generic_asinh(x); + } + + // asinh(ap_uint) + template + ap_uint asinh(ap_uint x){ + return cordic_apfixed::generic_asinh(x); + } + + // acosh(ap_fixed) + template + ap_fixed acosh(ap_fixed x){ + return cordic_apfixed::generic_acosh(x); + } + + // acosh(ap_ufixed) + template + ap_ufixed acosh(ap_ufixed x){ + return cordic_apfixed::generic_acosh(x); + } + + // acosh(ap_int) + template + ap_int acosh(ap_int x){ + return cordic_apfixed::generic_acosh(x); + } + + // acosh(ap_uint) + template + ap_uint acosh(ap_uint x){ + return cordic_apfixed::generic_acosh(x); + } + + int8_t sinh(int8_t); + uint8_t sinh(uint8_t); + int16_t sinh(int16_t); + uint16_t sinh(uint16_t); + int32_t sinh(int32_t); + uint32_t sinh(uint32_t); + + int8_t cosh(int8_t); + uint8_t cosh(uint8_t); + int16_t cosh(int16_t); + uint16_t cosh(uint16_t); + int32_t cosh(int32_t); + uint32_t cosh(uint32_t); + + int8_t tanh(int8_t); + uint8_t tanh(uint8_t); + int16_t tanh(int16_t); + uint16_t tanh(uint16_t); + int32_t tanh(int32_t); + uint32_t tanh(uint32_t); + + int8_t atanh(int8_t); + uint8_t atanh(uint8_t); + int16_t atanh(int16_t); + uint16_t atanh(uint16_t); + int32_t atanh(int32_t); + uint32_t atanh(uint32_t); + + int8_t asinh(int8_t); + uint8_t asinh(uint8_t); + int16_t asinh(int16_t); + uint16_t asinh(uint16_t); + int32_t asinh(int32_t); + uint32_t asinh(uint32_t); + + int8_t acosh(int8_t); + uint8_t acosh(uint8_t); + int16_t acosh(int16_t); + uint16_t acosh(uint16_t); + int32_t acosh(int32_t); + uint32_t acosh(uint32_t); + + // asin(ap_fixed) + template + ap_fixed asin(ap_fixed x){ + return cordic_apfixed::generic_asin(x); + } + + // acos(ap_fixed) + template + ap_fixed acos(ap_fixed x){ + return cordic_apfixed::generic_acos(x); + } + + // atan(ap_fixed) + template + ap_fixed atan(ap_fixed x){ + return cordic_apfixed::generic_atan(x); + } + + // atan(ap_ufixed) + template + ap_ufixed atan(ap_ufixed x){ + return cordic_apfixed::generic_atan(x); + } + + // atan(ap_int) + template + ap_int<2> atan(ap_int x){ + return cordic_apfixed::generic_atan(x); + } + + // atan(ap_uint) + template + ap_uint<1> atan(ap_uint x){ + return cordic_apfixed::generic_atan(x); + } + + int8_t asin(int8_t); + uint8_t asin(uint8_t); + int16_t asin(int16_t); + uint16_t asin(uint16_t); + int32_t asin(int32_t); + uint32_t asin(uint32_t); + + int8_t acos(int8_t); + uint8_t acos(uint8_t); + int16_t acos(int16_t); + uint16_t acos(uint16_t); + int32_t acos(int32_t); + uint32_t acos(uint32_t); + + int8_t atan(int8_t); + uint8_t atan(uint8_t); + int16_t atan(int16_t); + uint16_t atan(uint16_t); + int32_t atan(int32_t); + uint32_t atan(uint32_t); + + // asinpi(ap_fixed) + template + ap_fixed asinpi(ap_fixed x){ + return cordic_apfixed::generic_asinpi(x); + } + // asinpi(ap_fixed) + template + ap_ufixed asinpi(ap_ufixed x){ + return cordic_apfixed::generic_asinpi(x); + } + // asinpi(ap_fixed) + template + ap_int asinpi(ap_int x){ + return cordic_apfixed::generic_asinpi(x); + } + // asinpi(ap_fixed) + template + ap_uint asinpi(ap_uint x){ + return cordic_apfixed::generic_asinpi(x); + } + + + int8_t asinpi(int8_t); + uint8_t asinpi(uint8_t); + int16_t asinpi(int16_t); + uint16_t asinpi(uint16_t); + int32_t asinpi(int32_t); + uint32_t asinpi(uint32_t); + + // acospi(ap_fixed) + template + ap_fixed acospi(ap_fixed x){ + return cordic_apfixed::generic_acospi(x); + } + // acospi(ap_fixed) + template + ap_ufixed acospi(ap_ufixed x){ + return cordic_apfixed::generic_acospi(x); + } + // acospi(ap_fixed) + template + ap_int acospi(ap_int x){ + return cordic_apfixed::generic_acospi(x); + } + // acospi(ap_fixed) + template + ap_uint acospi(ap_uint x){ + return cordic_apfixed::generic_acospi(x); + } + + int8_t acospi(int8_t); + uint8_t acospi(uint8_t); + int16_t acospi(int16_t); + uint16_t acospi(uint16_t); + int32_t acospi(int32_t); + uint32_t acospi(uint32_t); + + // atanpi(ap_fixed) + template + ap_fixed atanpi(ap_fixed x){ + return cordic_apfixed::generic_atanpi(x); + } + + // atanpi(ap_ufixed) + template + ap_ufixed atanpi(ap_ufixed x){ + return cordic_apfixed::generic_atanpi(x); + } + + // atanpi(ap_int) + template + ap_int<2> atanpi(ap_int x){ + return cordic_apfixed::generic_atanpi(x); + } + + // atanpi(ap_uint) + template + ap_uint<1> atanpi(ap_uint x){ + return cordic_apfixed::generic_atanpi(x); + } + + int8_t atanpi(int8_t); + uint8_t atanpi(uint8_t); + int16_t atanpi(int16_t); + uint16_t atanpi(uint16_t); + int32_t atanpi(int32_t); + uint32_t atanpi(uint32_t); + + // atan2(ap_fixed) + template + ap_fixed atan2(ap_fixed x, ap_fixed y){ + return cordic_apfixed::generic_atan2(x,y); + } + + // atan2(ap_ufixed) + template + ap_ufixed atan2(ap_ufixed x, ap_ufixed y){ + return cordic_apfixed::generic_atan2(x,y); + } + + // atan2(ap_int) + template + ap_int<3> atan2(ap_int x, ap_int y){ + return cordic_apfixed::generic_atan2(x,y); + } + + // atan2(ap_uint) + template + ap_uint<2> atan2(ap_uint x, ap_uint y){ + return cordic_apfixed::generic_atan2(x,y); + } + + int8_t atan2(int8_t, int8_t); + uint8_t atan2(uint8_t, uint8_t); + int16_t atan2(int16_t, int16_t); + uint16_t atan2(uint16_t, uint16_t); + int32_t atan2(int32_t, int32_t); + uint32_t atan2(uint32_t, uint32_t); + + // atan2pi(ap_fixed) + template + ap_fixed atan2pi(ap_fixed x, ap_fixed y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + // atan2pi(ap_ufixed) + template + ap_ufixed atan2pi(ap_ufixed x, ap_ufixed y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + // atanpi(ap_int) + template + ap_int atan2pi(ap_int x, ap_int y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + // atan2(ap_uint) + template + ap_uint atan2pi(ap_uint x, ap_uint y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + int8_t atan2pi(int8_t, int8_t); + uint8_t atan2pi(uint8_t, uint8_t); + int16_t atan2pi(int16_t, int16_t); + uint16_t atan2pi(uint16_t, uint16_t); + int32_t atan2pi(int32_t, int32_t); + uint32_t atan2pi(uint32_t, uint32_t); + template + void sincos(ap_fixed in, + ap_fixed* outsin, ap_fixed* outcos){ + cordic_apfixed::generic_sincos(in, *outsin, *outcos); + } + + template + ap_fixed sin(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outsin; + } + + template + ap_ufixed sin(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::sin(x); + ap_fixed out = 0; + if(xout[W-I+2]==0){ + out=xout; + } + return out; + } + + template + ap_fixed cos(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outcos; + } + + template + ap_ufixed cos(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::cos(x); + ap_fixed out = 0; + if(xout[W-I+2]==0){ + out=xout; + } + return out; + } + +/* template + ap_fixed sinf(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outsin; + } + + template + ap_fixed cosf(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outcos; + } +*/ + // sin cos(ap_int) + template + ap_int sin(ap_int in) { + return ap_int(0); + }; + template + ap_int cos(ap_int in) { + return ap_int(0); + }; + + // sin cos(ap_uint) + template + ap_uint sin(ap_uint in) { + return ap_uint(0); + }; + template + ap_uint cos(ap_uint in) { + return ap_uint(0); + }; + + void sincos(int8_t, int8_t*, int8_t*); + void sincos(uint8_t, uint8_t*, uint8_t*); + void sincos(int16_t, int16_t*, int16_t*); + void sincos(uint16_t, uint16_t*, uint16_t*); + void sincos(int32_t, int32_t*, int32_t*); + void sincos(uint32_t, uint32_t*, uint32_t*); + + int8_t sin(int8_t); + uint8_t sin(uint8_t); + int16_t sin(int16_t); + uint16_t sin(uint16_t); + int32_t sin(int32_t); + uint32_t sin(uint32_t); + + int8_t cos(int8_t); + uint8_t cos(uint8_t); + int16_t cos(int16_t); + uint16_t cos(uint16_t); + int32_t cos(int32_t); + uint32_t cos(uint32_t); + + // tan + template + ap_fixed tan(ap_fixed x){ + return cordic_apfixed::generic_tan(x); + } + template + ap_ufixed tan(ap_ufixed x){ + return cordic_apfixed::generic_tan(x); + } + template + ap_int tan(ap_int x){ + return cordic_apfixed::generic_tan(x); + } + template + ap_uint tan(ap_uint x){ + return cordic_apfixed::generic_tan(x); + } + + int8_t tan(int8_t); + uint8_t tan(uint8_t); + int16_t tan(int16_t); + uint16_t tan(uint16_t); + int32_t tan(int32_t); + uint32_t tan(uint32_t); + + // tanpi + template + ap_fixed tanpi(ap_fixed x){ + return cordic_apfixed::generic_tanpi(x); + } + template + ap_ufixed tanpi(ap_ufixed x){ + return cordic_apfixed::generic_tanpi(x); + } + template + ap_int tanpi(ap_int x){ + return cordic_apfixed::generic_tanpi(x); + } + template + ap_uint tanpi(ap_uint x){ + return cordic_apfixed::generic_tanpi(x); + } + + int8_t tanpi(int8_t); + uint8_t tanpi(uint8_t); + int16_t tanpi(int16_t); + uint16_t tanpi(uint16_t); + int32_t tanpi(int32_t); + uint32_t tanpi(uint32_t); + + //pow(ap_fixed) + template + ap_fixed pow(ap_fixed x, ap_fixed y) { + return pow_apfixed_reduce::pow(x,y); + } + + template + ap_ufixed pow(ap_ufixed x, ap_ufixed y){ + return pow_apfixed_reduce::pow(x,y); + } + template + ap_int pow(ap_int x, ap_int y){ + return pow_apfixed_reduce::pow(x,y); + } + template + ap_uint pow(ap_uint x,ap_uint y){ + return pow_apfixed_reduce::pow(x,y); + } + //pown(ap_fixed) + template + ap_fixed pown(ap_fixed x, int n) { + return pow_apfixed_reduce::pown(x,n); + } + + template + ap_ufixed pown(ap_ufixed x, int n){ + return pow_apfixed_reduce::pown(x,n); + } + template + ap_int pown(ap_int x, int n){ + return pow_apfixed_reduce::pown(x,n); + } + template + ap_uint pown(ap_uint x, int n){ + return pow_apfixed_reduce::pown(x,n); + } + int8_t pown(int8_t, int n); + uint8_t pown(uint8_t, int n); + int16_t pown(int16_t, int n); + uint16_t pown(uint16_t, int n); + int32_t pown(int32_t, int n); + uint32_t pown(uint32_t, int n); + //rootn(ap_fixed) + template + ap_fixed rootn(ap_fixed x, int n) { + return pow_apfixed_reduce::rootn(x,n); + } + + template + ap_ufixed rootn(ap_ufixed x, int n){ + return pow_apfixed_reduce::rootn(x,n); + } + template + ap_int rootn(ap_int x, int n){ + return pow_apfixed_reduce::rootn(x,n); + } + template + ap_uint rootn(ap_uint x, int n){ + return pow_apfixed_reduce::rootn(x,n); + } + int8_t rootn(int8_t, int n); + uint8_t rootn(uint8_t, int n); + int16_t rootn(int16_t, int n); + uint16_t rootn(uint16_t, int n); + int32_t rootn(int32_t, int n); + uint32_t rootn(uint32_t, int n); + //powr(ap_fixed) + template + ap_fixed powr(ap_fixed x, ap_fixed y) { + return pow_apfixed_reduce::powr(x,y); + } + + template + ap_ufixed powr(ap_ufixed x, ap_ufixed y){ + return pow_apfixed_reduce::powr(x,y); + } + template + ap_int powr(ap_int x, ap_int y){ + return pow_apfixed_reduce::powr(x,y); + } + template + ap_uint powr(ap_uint x,ap_uint y){ + return pow_apfixed_reduce::powr(x,y); + } + + + // round(ap_fixed) + template + ap_fixed round(ap_fixed x){ + return round_fixed(x); + } + template + ap_ufixed round(ap_ufixed x){ + return round_fixed(x); + } + template + ap_int round(ap_int x){ + return round_fixed(x); + } + template + ap_uint round(ap_uint x){ + return round_fixed(x); + } + int8_t round(int8_t); + uint8_t round(uint8_t); + int16_t round(int16_t); + uint16_t round(uint16_t); + int32_t round(int32_t); + uint32_t round(uint32_t); + + // rint(ap_fixed) + template + ap_fixed rint(ap_fixed x){ + return rint_fixed(x); + } + template + ap_ufixed rint(ap_ufixed x){ + return rint_fixed(x); + } + template + ap_int rint(ap_int x){ + return rint_fixed(x); + } + template + ap_uint rint(ap_uint x){ + return rint_fixed(x); + } + int8_t rint(int8_t); + uint8_t rint(uint8_t); + int16_t rint(int16_t); + uint16_t rint(uint16_t); + int32_t rint(int32_t); + uint32_t rint(uint32_t); + + // nearbyint(ap_fixed) + template + ap_fixed nearbyint(ap_fixed x){ + return nearbyint_fixed(x); + } + template + ap_ufixed nearbyint(ap_ufixed x){ + return nearbyint_fixed(x); + } + template + ap_int nearbyint(ap_int x){ + return nearbyint_fixed(x); + } + template + ap_uint nearbyint(ap_uint x){ + return nearbyint_fixed(x); + } + int8_t nearbyint(int8_t); + uint8_t nearbyint(uint8_t); + int16_t nearbyint(int16_t); + uint16_t nearbyint(uint16_t); + int32_t nearbyint(int32_t); + uint32_t nearbyint(uint32_t); + + //llround(ap_fixed) + template + long long int llround(ap_fixed x){ + return llround_fixed(x); + } + template + long long int llround(ap_ufixed x){ + return llround_fixed(x); + } + template + long long int llround(ap_int x){ + return llround_fixed(x); + } + template + long long int llround(ap_uint x){ + return llround_fixed(x); + } + + //llround(int) + long long int llround(int8_t); + long long int llround(uint8_t); + long long int llround(int16_t); + long long int llround(uint16_t); + long long int llround(int32_t); + long long int llround(uint32_t); + + // lround(ap_fixed) + template + long int lround(ap_fixed x){ + return lround_fixed(x); + } + template + long int lround(ap_ufixed x){ + return lround_fixed(x); + } + template + long int lround(ap_int x){ + return lround_fixed(x); + } + template + long int lround(ap_uint x){ + return lround_fixed(x); + } + + //lround(int) + long int lround(int8_t); + long int lround(uint8_t); + long int lround(int16_t); + long int lround(uint16_t); + long int lround(int32_t); + long int lround(uint32_t); + + // llrint(ap_fixed) + template + long long int llrint(ap_fixed x){ + return llrint_fixed(x); + } + template + long long int llrint(ap_ufixed x){ + return llrint_fixed(x); + } + template + long long int llrint(ap_int x){ + return llrint_fixed(x); + } + template + long long int llrint(ap_uint x){ + return llrint_fixed(x); + } + + //llrint(int) + long long int llrint(int8_t); + long long int llrint(uint8_t); + long long int llrint(int16_t); + long long int llrint(uint16_t); + long long int llrint(int32_t); + long long int llrint(uint32_t); + + // lrint(ap_fixed) + template + long int lrint(ap_fixed x){ + return lrint_fixed(x); + } + template + long int lrint(ap_ufixed x){ + return lrint_fixed(x); + } + template + long int lrint(ap_int x){ + return lrint_fixed(x); + } + template + long int lrint(ap_uint x){ + return lrint_fixed(x); + } + + //lrint(int) + long int lrint(int8_t); + long int lrint(uint8_t); + long int lrint(int16_t); + long int lrint(uint16_t); + long int lrint(int32_t); + long int lrint(uint32_t); + + //isgreater(ap_fixed) + template + bool isgreater(ap_fixed x1, ap_fixed x2){ + return isgreater_fixed(x1, x2); + } + template + bool isgreater(ap_ufixed x1, ap_ufixed x2){ + return isgreater_fixed(x1, x2); + } + template + bool isgreater(ap_int x1, ap_int x2){ + return isgreater_fixed(x1, x2); + } + template + bool isgreater(ap_uint x1, ap_uint x2){ + return isgreater_fixed(x1, x2); + } + bool isgreater(int8_t, int8_t); + bool isgreater(uint8_t, uint8_t); + bool isgreater(int16_t, int16_t); + bool isgreater(uint16_t, uint16_t); + bool isgreater(int32_t, int32_t); + bool isgreater(uint32_t, uint32_t); + + //isgreaterequal(ap_fixed) + template + bool isgreaterequal(ap_fixed x1, ap_fixed x2){ + return isgreaterequal_fixed(x1, x2); + } + template + bool isgreaterequal(ap_ufixed x1, ap_ufixed x2){ + return isgreaterequal_fixed(x1, x2); + } + template + bool isgreaterequal(ap_int x1, ap_int x2){ + return isgreaterequal_int(x1, x2); + } + template + bool isgreaterequal(ap_uint x1, ap_uint x2){ + return isgreaterequal_fixed(x1, x2); + } + bool isgreaterequal(int8_t, int8_t); + bool isgreaterequal(uint8_t, uint8_t); + bool isgreaterequal(int16_t, int16_t); + bool isgreaterequal(uint16_t, uint16_t); + bool isgreaterequal(int32_t, int32_t); + bool isgreaterequal(uint32_t, uint32_t); + + //isless(ap_fixed) + template + bool isless(ap_fixed x1, ap_fixed x2){ + return isless_fixed(x1, x2); + } + template + bool isless(ap_ufixed x1, ap_ufixed x2){ + return isless_fixed(x1, x2); + } + template + bool isless(ap_int x1, ap_int x2){ + return isless_fixed(x1, x2); + } + template + bool isless(ap_uint x1, ap_uint x2){ + return isless_fixed(x1, x2); + } + bool isless(int8_t, int8_t); + bool isless(uint8_t, uint8_t); + bool isless(int16_t, int16_t); + bool isless(uint16_t, uint16_t); + bool isless(int32_t, int32_t); + bool isless(uint32_t, uint32_t); + + //islessequal(ap_fixed) + template + bool islessequal(ap_fixed x1, ap_fixed x2){ + return islessequal_fixed(x1, x2); + } + template + bool islessequal(ap_ufixed x1, ap_ufixed x2){ + return islessequal_fixed(x1, x2); + } + template + bool islessequal(ap_int x1, ap_int x2){ + return islessequal_fixed(x1, x2); + } + template + bool islessequal(ap_uint x1, ap_uint x2){ + return islessequal_fixed(x1, x2); + } + bool islessequal(int8_t, int8_t); + bool islessequal(uint8_t, uint8_t); + bool islessequal(int16_t, int16_t); + bool islessequal(uint16_t, uint16_t); + bool islessequal(int32_t, int32_t); + bool islessequal(uint32_t, uint32_t); + + //islessgreater(ap_fixed) + template + bool islessgreater(ap_fixed x1, ap_fixed x2){ + return islessgreater_fixed(x1, x2); + } + template + bool islessgreater(ap_ufixed x1, ap_ufixed x2){ + return islessgreater_fixed(x1, x2); + } + template + bool islessgreater(ap_int x1, ap_int x2){ + return islessgreater_fixed(x1, x2); + } + template + bool islessgreater(ap_uint x1, ap_uint x2){ + return islessgreater_fixed(x1, x2); + } + + bool islessgreater(int8_t, int8_t); + bool islessgreater(uint8_t, uint8_t); + bool islessgreater(int16_t, int16_t); + bool islessgreater(uint16_t, uint16_t); + bool islessgreater(int32_t, int32_t); + bool islessgreater(uint32_t, uint32_t); + + int8_t frexp(int8_t,int8_t*); + uint8_t frexp(uint8_t, uint8_t*); + int16_t frexp(int16_t, int16_t*); + uint16_t frexp(uint16_t, uint16_t*); + int32_t frexp(int32_t, int32_t*); + uint32_t frexp(uint32_t, uint32_t*); + //frexp(ap_fixed) + template + ap_fixed frexp(ap_fixed x, ap_fixed* exp) { + return frexp_internal::frexp(x,exp); + } + + template + ap_ufixed frexp(ap_ufixed x, ap_ufixed* exp){ + return frexp_internal::frexp(x,exp); + } + template + ap_int frexp(ap_int x, ap_int* exp){ + return frexp_internal::frexp(x,exp); + } + template + ap_uint frexp(ap_uint x,ap_uint* exp){ + return frexp_internal::frexp(x,exp); + } + + int8_t modf(int8_t, int8_t*); + uint8_t modf(uint8_t, uint8_t*); + int16_t modf(int16_t, int16_t*); + uint16_t modf(uint16_t, uint16_t*); + int32_t modf(int32_t, int32_t*); + uint32_t modf(uint32_t, uint32_t*); + //modf(ap_fixed) + template + ap_fixed modf(ap_fixed x, ap_fixed* intpart) { + return modf_internal::modf(x,intpart); + } + + template + ap_ufixed modf(ap_ufixed x, ap_ufixed* intpart){ + return modf_internal::modf(x,exp); + } + template + ap_int modf(ap_int x, ap_int* intpart){ + return modf_internal::modf(x,intpart); + } + template + ap_uint modf(ap_uint x,ap_uint* intpart){ + return modf_internal::modf(x,intpart); + } + + // isequal(int) + bool isequal(int8_t,int8_t); + bool isequal(uint8_t,uint8_t); + bool isequal(int16_t,int16_t); + bool isequal(uint16_t,uint16_t); + bool isequal(int32_t,int32_t); + bool isequal(uint32_t,uint32_t); + //////////////////////////////////// + bool isnotequal(int8_t,int8_t); + bool isnotequal(uint8_t,uint8_t); + bool isnotequal(int16_t,int16_t); + bool isnotequal(uint16_t,uint16_t); + bool isnotequal(int32_t,int32_t); + bool isnotequal(uint32_t,uint32_t); + // isequal(ap_fixed) + template + bool isequal(ap_fixed x,ap_fixed y){ + return generic_isequal(x,y); + }; + template + bool isequal(ap_ufixed x,ap_ufixed y){ + return generic_isequal(x,y); + }; + template + bool isequal(ap_int x,ap_int y){ + return generic_isequal(x,y); + }; + template + bool isequal(ap_uint x,ap_uint y){ + return generic_isequal(x,y); + }; + // isnotequal(ap_fixed) + template + bool isnotequal(ap_fixed x,ap_fixed y){ + return generic_isnotequal(x,y); + }; + template + bool isnotequal(ap_ufixed x,ap_ufixed y){ + return generic_isnotequal(x,y); + }; + template + bool isnotequal(ap_int x,ap_int y){ + return generic_isnotequal(x,y); + }; + template + bool isnotequal(ap_uint x,ap_uint y){ + return generic_isnotequal(x,y); + }; + // any(ap_fixed) + template + bool any(ap_fixed x){ + return generic_any(x); + }; + template + bool any(ap_ufixed x){ + return generic_any(x); + }; + template + bool any(ap_int x){ + return generic_any(x); + }; + template + bool any(ap_uint x){ + return generic_any(x); + }; + // all(ap_fixed) + template + bool all(ap_fixed x){ + return generic_all(x); + }; + template + bool all(ap_ufixed x){ + return generic_all(x); + }; + template + bool all(ap_int x){ + return generic_all(x); + }; + template + bool all(ap_uint x){ + return generic_all(x); + }; + //bitselect(ap_fixed) + template + ap_fixed bitselect(ap_fixed x,ap_fixed y, ap_fixed z){ + return generic_bitselect(x,y,z); + }; + template + ap_ufixed bitselect(ap_ufixed x,ap_ufixed y,ap_ufixed z){ + return generic_bitselect(x,y,z); + }; + template + ap_int bitselect(ap_int x,ap_int y,ap_int z){ + return generic_bitselect(x,y,z); + }; + template + ap_uint bitselect(ap_uint x,ap_uint y,ap_uint z){ + return generic_bitselect(x,y,z); + }; + //erf(ap_fixed) + template + ap_fixed erf(ap_fixed x){ + return erf_erfc_fixed::erf(x); + } + template + ap_ufixed erf(ap_ufixed x){ + return erf_erfc_fixed::erf(x); + } + template + ap_int erf(ap_int x){ + return erf_erfc_fixed::erf(x); + } + template + ap_uint erf(ap_uint x){ + return erf_erfc_fixed::erf(x); + } + //erfc(ap_fixed) + template + ap_fixed erfc(ap_fixed x){ + return erf_erfc_fixed::erfc(x); + } + template + ap_ufixed erfc(ap_ufixed x){ + return erf_erfc_fixed::erfc(x); + } + template + ap_int erfc(ap_int x){ + return erf_erfc_fixed::erfc(x); + } + template + ap_uint erfc(ap_uint x){ + return erf_erfc_fixed::erfc(x); + } + // divide (int) + int8_t divide(int8_t,int8_t); + int16_t divide(int16_t,int16_t); + int32_t divide(int32_t,int32_t); + uint8_t divide(uint8_t,uint8_t); + uint16_t divide(uint16_t,uint16_t); + uint32_t divide(uint32_t,uint32_t); + //divide(ap_fixed) + template + ap_fixed divide(ap_fixed x, ap_fixed y){ + return hls_internal::generic_divide(x, y); + } + template + ap_ufixed divide(ap_ufixed x, ap_ufixed y){ + return hls_internal::generic_divide(x, y); + } + template + ap_int divide(ap_int x, ap_int y){ + return hls_internal::generic_divide(x, y); + } + template + ap_uint divide(ap_uint x, ap_uint y){ + return hls_internal::generic_divide(x, y); + } + //fmod(int) + int8_t fmod(int8_t,int8_t); + int16_t fmod(int16_t,int16_t); + int32_t fmod(int32_t,int32_t); + uint8_t fmod(uint8_t,uint8_t); + uint16_t fmod(uint16_t,uint16_t); + uint32_t fmod(uint32_t,uint32_t); + //fmod(ap_fixed) + template + ap_fixed fmod(ap_fixed x, ap_fixed y){ + return hls_internal::generic_fmod(x, y); + } + template + ap_ufixed fmod(ap_ufixed x, ap_ufixed y){ + return hls_internal::generic_fmod(x, y); + } + template + ap_int fmod(ap_int x, ap_int y){ + return hls_internal::generic_fmod(x, y); + } + template + ap_uint fmod(ap_uint x, ap_uint y){ + return hls_internal::generic_fmod(x, y); + } + //remainder (int) + int8_t remainder(int8_t,int8_t); + int16_t remainder(int16_t,int16_t); + int32_t remainder(int32_t,int32_t); + uint8_t remainder(uint8_t,uint8_t); + uint16_t remainder(uint16_t,uint16_t); + uint32_t remainder(uint32_t,uint32_t); + //remainder(ap_fixed) + template + ap_fixed remainder(ap_fixed x, ap_fixed y){ + return hls_internal::generic_remainder(x, y); + } + template + ap_ufixed remainder(ap_ufixed x, ap_ufixed y){ + return hls_internal::generic_remainder(x, y); + } + template + ap_int remainder(ap_int x, ap_int y){ + return hls_internal::generic_remainder(x, y); + } + template + ap_uint remainder(ap_uint x, ap_uint y){ + return hls_internal::generic_remainder(x, y); + } + //remquo (int) + int8_t remquo(int8_t,int8_t,int*); + int16_t remquo(int16_t,int16_t,int*); + int32_t remquo(int32_t,int32_t,int*); + uint8_t remquo(uint8_t,uint8_t,int*); + uint16_t remquo(uint16_t,uint16_t,int*); + uint32_t remquo(uint32_t,uint32_t,int*); + //remquo(ap_fixed) + template + ap_fixed remquo(ap_fixed x, ap_fixed y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + template + ap_ufixed remquo(ap_ufixed x, ap_ufixed y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + template + ap_int remquo(ap_int x, ap_int y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + template + ap_uint remquo(ap_uint x, ap_uint y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + //signbit(ap_fixed) + template + bool signbit(ap_fixed x) { + return signbit_fixed(x); + } + template + bool signbit(ap_ufixed x) { + return signbit_fixed(x); + } + template + bool signbit(ap_int x) { + return signbit_fixed(x); + } + template + bool signbit(ap_uint x) { + return signbit_fixed(x); + } + bool signbit(int8_t); + bool signbit(uint8_t); + bool signbit(int16_t); + bool signbit(uint16_t); + bool signbit(int32_t); + bool signbit(uint32_t); + + //lgamma_r(ap_fixed) + template + ap_fixed lgamma_r(ap_fixed x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_ufixed lgamma_r(ap_ufixed x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_int lgamma_r(ap_int x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_uint lgamma_r(ap_uint x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + //lgamma(ap_fixed) + template + ap_fixed lgamma(ap_fixed x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_ufixed lgamma(ap_ufixed x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_int lgamma(ap_int x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_uint lgamma(ap_uint x){ + return lgamma_fixed::lgamma_generic(x); + } + //mad (int) + int8_t mad(int8_t,int8_t,int8_t); + int16_t mad(int16_t,int16_t,int16_t); + int32_t mad(int32_t,int32_t,int32_t); + uint8_t mad(uint8_t,uint8_t,uint8_t); + uint16_t mad(uint16_t,uint16_t,uint16_t); + uint32_t mad(uint32_t,uint32_t,uint32_t); + //mad (ap_fixed) + template + ap_fixed mad(ap_fixed x,ap_fixed y,ap_fixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_ufixed mad(ap_ufixed x,ap_ufixed y,ap_ufixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_int mad(ap_int x,ap_int y,ap_int z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_uint mad(ap_uint x,ap_uint y,ap_uint z){ + return hls_mad::generic_mad(x,y,z); + } + //fma (int) + int8_t fma(int8_t,int8_t,int8_t); + int16_t fma(int16_t,int16_t,int16_t); + int32_t fma(int32_t,int32_t,int32_t); + uint8_t fma(uint8_t,uint8_t,uint8_t); + uint16_t fma(uint16_t,uint16_t,uint16_t); + uint32_t fma(uint32_t,uint32_t,uint32_t); + //fma (ap_fixed) + template + ap_fixed fma(ap_fixed x,ap_fixed y,ap_fixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_ufixed fma(ap_ufixed x,ap_ufixed y,ap_ufixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_int fma(ap_int x,ap_int y,ap_int z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_uint fma(ap_uint x,ap_uint y,ap_uint z){ + return hls_mad::generic_mad(x,y,z); + } + //fract (int) + int8_t fract(int8_t); + int16_t fract(int16_t); + int32_t fract(int32_t); + uint8_t fract(uint8_t); + uint16_t fract(uint16_t); + uint32_t fract(uint32_t); + //fract(ap_fixed) + template + ap_fixed fract(ap_fixed x){ + return hls_fract::generic_fract(x); + } + template + ap_ufixed fract(ap_ufixed x){ + return hls_fract::generic_fract(x); + } + template + ap_int fract(ap_int x){ + return hls_fract::generic_fract(x); + } + template + ap_uint fract(ap_uint x){ + return hls_fract::generic_fract(x); + } + //cbrt for fixed data type + template + ap_fixed cbrt(ap_fixed x) { + return cbrt_internal::cbrt_fixed(x); + } + template + ap_ufixed cbrt(ap_ufixed x) { + return cbrt_internal::cbrt_fixed(x); + } + template + ap_int cbrt(ap_int x) { + return cbrt_internal::cbrt_fixed(x); + } + template + ap_uint cbrt(ap_uint x) { + return cbrt_internal::cbrt_fixed(x); + } + int8_t cbrt(int8_t); + uint8_t cbrt(uint8_t); + int16_t cbrt(int16_t); + uint16_t cbrt(uint16_t); + int32_t cbrt(int32_t); + uint32_t cbrt(uint32_t); + + //tgamma(ap_fixed) + template + ap_fixed tgamma(ap_fixed x){ + return tgamma_fixed::tgamma_generic(x); + } + template + ap_ufixed tgamma(ap_ufixed x){ + return tgamma_fixed::tgamma_generic(x); + } + template + ap_int tgamma(ap_int x){ + return tgamma_fixed::tgamma_generic(x); + } + template + ap_uint tgamma(ap_uint x){ + return tgamma_fixed::tgamma_generic(x); + } + + //nextafter(ap_fixed) + template + ap_fixed nextafter(ap_fixed x, ap_fixed y) { + return fp_internal::nextafter(x, y); + } + template + ap_ufixed nextafter(ap_ufixed x, ap_ufixed y) { + return fp_internal::nextafter(x, y); + } + template + ap_int nextafter(ap_int x, ap_int y) { + return fp_internal::nextafter(x, y); + } + template + ap_uint nextafter(ap_uint x, ap_uint y) { + return fp_internal::nextafter(x, y); + } + int8_t nextafter(int8_t, int8_t); + uint8_t nextafter(uint8_t, uint8_t); + int16_t nextafter(int16_t, int16_t); + uint16_t nextafter(uint16_t, uint16_t); + int32_t nextafter(int32_t, int32_t); + uint32_t nextafter(uint32_t, uint32_t); + + //nexttoward(ap_fixed) + template + ap_fixed nexttoward(ap_fixed x, ap_fixed y) { + return fp_internal::nexttoward(x, y); + } + template + ap_ufixed nexttoward(ap_ufixed x, ap_ufixed y) { + return fp_internal::nexttoward(x, y); + } + template + ap_int nexttoward(ap_int x, ap_int y) { + return fp_internal::nexttoward(x, y); + } + template + ap_uint nexttoward(ap_uint x, ap_uint y) { + return fp_internal::nexttoward(x, y); + } + int8_t nexttoward(int8_t, int8_t); + uint8_t nexttoward(uint8_t, uint8_t); + int16_t nexttoward(int16_t, int16_t); + uint16_t nexttoward(uint16_t, uint16_t); + int32_t nexttoward(int32_t, int32_t); + uint32_t nexttoward(uint32_t, uint32_t); + + //hypot for fixed data type + template + ap_fixed hypot(ap_fixed x, ap_fixed y) { + return hypot_internal::hypot_fixed(x,y); + } + template + ap_ufixed hypot(ap_ufixed x, ap_ufixed y) { + return hypot_internal::hypot_fixed(x,y); + } + template + ap_int hypot(ap_int x, ap_int y) { + return hypot_internal::hypot_fixed(x,y); + } + template + ap_uint hypot(ap_uint x, ap_uint y) { + return hypot_internal::hypot_fixed(x,y); + } + int8_t hypot(int8_t, int8_t); + uint8_t hypot(uint8_t, uint8_t); + int16_t hypot(int16_t, int16_t); + uint16_t hypot(uint16_t, uint16_t); + int32_t hypot(int32_t, int32_t); + uint32_t hypot(uint32_t, uint32_t); + + template + ap_fixed exp2(ap_fixed x) { + return exp_reduce::exp2(x); + } + + template + ap_ufixed exp2(ap_ufixed x) { + return exp_reduce::exp2(x); + } + + template + ap_int exp2(ap_int x) { + return exp_reduce::exp2(x); + } + + template + ap_uint exp2(ap_uint x) { + return exp_reduce::exp2(x); + } + + template + ap_fixed exp10(ap_fixed x) { + return exp_reduce::exp10(x); + } + + template + ap_ufixed exp10(ap_ufixed x) { + return exp_reduce::exp10(x); + } + + template + ap_int exp10(ap_int x) { + return exp_reduce::exp10(x); + } + + template + ap_uint exp10(ap_uint x) { + return exp_reduce::exp10(x); + } + + template + ap_fixed expm1(ap_fixed x) { + return exp_reduce::expm1(x); + } + + template + ap_ufixed expm1(ap_ufixed x) { + return exp_reduce::expm1(x); + } + + template + ap_int expm1(ap_int x) { + return exp_reduce::expm1(x); + } + + template + ap_uint expm1(ap_uint x) { + return exp_reduce::expm1(x); + } + + template + ap_fixed log1p(ap_fixed x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_ufixed log1p(ap_ufixed x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_int log1p(ap_int x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_uint log1p(ap_uint x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_fixed ilogb(ap_fixed x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_ufixed ilogb(ap_ufixed x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_int ilogb(ap_int x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_uint ilogb(ap_uint x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_fixed ldexp(ap_fixed x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_ufixed ldexp(ap_ufixed x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_int ldexp(ap_int x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_uint ldexp(ap_uint x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_fixed scalbn(ap_fixed x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_ufixed scalbn(ap_ufixed x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_int scalbn(ap_int x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_uint scalbn(ap_uint x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_fixed scalbln(ap_fixed x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + template + ap_ufixed scalbln(ap_ufixed x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + template + ap_int scalbln(ap_int x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + template + ap_uint scalbln(ap_uint x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + int8_t ldexp(int8_t x, int exp); + int16_t ldexp(int16_t x, int exp); + int32_t ldexp(int32_t x, int exp); + uint8_t ldexp(uint8_t x, int exp); + uint16_t ldexp(uint16_t x, int exp); + uint32_t ldexp(uint32_t x, int exp); + + int8_t scalbn(int8_t x, int n); + int16_t scalbn(int16_t x, int n); + int32_t scalbn(int32_t x, int n); + uint8_t scalbn(uint8_t x, int n); + uint16_t scalbn(uint16_t x, int n); + uint32_t scalbn(uint32_t x, int n); + + int8_t scalbln(int8_t x, int n); + int16_t scalbln(int16_t x, int n); + int32_t scalbln(int32_t x, int n); + uint8_t scalbln(uint8_t x, int n); + uint16_t scalbln(uint16_t x, int n); + uint32_t scalbln(uint32_t x, int n); + + int8_t exp2(int8_t x); + int16_t exp2(int16_t x); + int32_t exp2(int32_t x); + uint8_t exp2(uint8_t x); + uint16_t exp2(uint16_t x); + uint32_t exp2(uint32_t x); + + int8_t exp10(int8_t x); + int16_t exp10(int16_t x); + int32_t exp10(int32_t x); + uint8_t exp10(uint8_t x); + uint16_t exp10(uint16_t x); + uint32_t exp10(uint32_t x); + + int8_t expm1(int8_t x); + int16_t expm1(int16_t x); + int32_t expm1(int32_t x); + uint8_t expm1(uint8_t x); + uint16_t expm1(uint16_t x); + uint32_t expm1(uint32_t x); + + int8_t ilogb(int8_t x); + int16_t ilogb(int16_t x); + int32_t ilogb(int32_t x); + uint8_t ilogb(uint8_t x); + uint16_t ilogb(uint16_t x); + uint32_t ilogb(uint32_t x); + + int8_t log1p(int8_t x); + int16_t log1p(int16_t x); + int32_t log1p(int32_t x); + uint8_t log1p(uint8_t x); + uint16_t log1p(uint16_t x); + uint32_t log1p(uint32_t x); + + int8_t log2(int8_t); + uint8_t log2(uint8_t); + int16_t log2(int16_t); + uint16_t log2(uint16_t); + int32_t log2(int32_t); + uint32_t log2(uint32_t); + + int8_t logb(int8_t); + uint8_t logb(uint8_t); + int16_t logb(int16_t); + uint16_t logb(uint16_t); + int32_t logb(int32_t); + uint32_t logb(uint32_t); + +}; +#endif + + diff --git a/vitis/v2020_1/hls_modf_apfixed.h b/vitis/v2020_1/hls_modf_apfixed.h new file mode 100644 index 00000000..c30ce961 --- /dev/null +++ b/vitis/v2020_1/hls_modf_apfixed.h @@ -0,0 +1,85 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_modf_ap_fixed.h + * @brief implement modf function for ap_fixed data type. + */ +#ifndef _X_HLS_MODF_APFIXED_H_ +#define _X_HLS_MODF_APFIXED_H_ +#include "hls_round_copysign_apfixed.h" +namespace modf_internal { +template +ap_fixed modf(ap_fixed x, + ap_fixed* int_part){ + ap_fixed frac_part = 0; + if(W == I) { + *int_part = x; + frac_part = 0; + } else if(I > 0) { + ap_fixed xi = x; + ap_ufixed x_p = fabs_fixed(xi); + frac_part(W - I - 1,0) = x_p(W - I - 1,0); + if(xi[W-1]) frac_part = - frac_part; + *int_part = x_p(W-1, W-I); + if(xi[W-1]) *int_part = -*int_part; + } else { + *int_part = 0; + frac_part = x; + } + return frac_part; +} +template +ap_ufixed modf(ap_ufixed x, + ap_ufixed* int_part){ + ap_fixed xi = x; + ap_fixed ii = 0; + ap_fixed r = modf(xi, &ii); + *int_part = ii; + return r; +} +template +ap_int modf(ap_int x, + ap_int* int_part){ + *int_part = x; + return 0; +} +template +ap_uint modf(ap_uint x, + ap_uint* int_part){ + *int_part = x; + return 0; +} +} +#endif//ifndef _X_HLS_MODF_APFIXED_H_ + + diff --git a/vitis/v2020_1/hls_pow_apfixed.h b/vitis/v2020_1/hls_pow_apfixed.h new file mode 100644 index 00000000..df7b657b --- /dev/null +++ b/vitis/v2020_1/hls_pow_apfixed.h @@ -0,0 +1,565 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_POW_APFIXED_H_ +#define _X_HLS_POW_APFIXED_H_ +#include "ap_fixed.h" +#include "hls_log_apfixed.h" +#include "hls_exp_apfixed.h" +#include "hls_round_copysign_apfixed.h" +namespace pow_apfixed_reduce{ +/* + * Normally, pow(x,y) = exp(ylog(|x|))*sig(x)^y. + * To make sure the result has 1ulp relative error, the relative error of log(|x|) is 2^(-W-I-2) and the relative error of ylog(|x|) is 2^(-W-2). + * Exception handling. (Note: if 1 > Max, then return Max) + * ============================================ + * || x || y || pow(x,y) + * || 0 || 0 || 1 + * || 0 || <0 || Max + * || 0 || >0 || 0 + * || 1 || Random || 1 + * || Random || 0 || 1 + * || <0 ||Not Integer|| 0 + * ============================================ + */ +template +ap_fixed pow(ap_fixed x, ap_fixed y) { + const static int F_ = W_ - I_; + //only support ap_fixed with I < 34 and F < 33 + if (I_>34) return 0; + else if (F_>33) return 0; + ap_fixed r = 0; + + bool r_is_neg = 0; + bool y_is_frac = 0; + //y is fraction or not + if (F_>0&&y(F_-1,0)>0) + y_is_frac =1; + if (x==0) { + //x==0, y==0, return 0 + if (y==0&&I_>1) { + return 1; + //x==0, y==0, return 0 + } else if (y>0) { + return 0; + } else { + //x==0, y<0, return the Max + #pragma unroll + for (int j = 0; j < W_-1; j++) r[j] = 1; + r[W_-1] = 0; + return r; + } + } else if (x<0) { + //x<0 and y is fractoin, return 0(NaN) + if (y_is_frac) return 0; + //x<0 and y is integer, if y is odd, r is positive otherwise r is negative. + else { + if (y==0||(I_>1&&y[F_]==0)) + r_is_neg = 0; + else + r_is_neg = 1; + } + } + //|x| + ap_fixed x_e_1 = x; + //avoid overflow after abs + ap_fixed x_p = 0; + x_p = fabs_fixed(x_e_1); + //ln(|x|) + //extend width of fraction + const static int E_l = I_+2; + const static int F_l = W_+E_l; + //The output of log shouble be less then 2^5 + const static int I_l = I_+1>6?I_+1:6; + const static int W_l = F_l + I_l; + //std::cout<<"[POW]x_p="< x_l = x_p; + //------------------------------------------------------- + //std::cout<<"[POW]x_l="< ln_x = log_apfixed_reduce::log(x_l); + //std::cout<<"[POW]ln_x="< ln_x_s = ln_x; + //--------------------------------------------------------- + //y*ln(|x|)--Maxprecision=2^(-W-2) + const static int FI_m = W_+2; + //The input of exp should be less then 2^5. If it > 2^5, i will definitely overflow. + const static int I_m = I_>6 ? I_ : 6;//add 1 due to min value is -2^I; + const static int WI_m = FI_m + I_m; + const static int WO_m = F_ + I_m; + ap_fixed mul_y_ln = ln_x_s * y; + //std::cout<<"[POW]mul_y_ln="< delta = 0; + //delta[delta.wl()-1] = mul_e[mul_e.wl()-1]; + //delta[delta.wl()-delta.iwl()-1] = 1; + //mul_e = mul_e + ( delta >> wf_m ); + //std::cout<<"mul_e="< exp_r = 0; + ap_fixed r_1 = 0; + bool m_overf = 0; + bool e_overf = 0; + bool overf = 0; + //check overflow or underflow after multiply + #pragma unroll + for (int j = F_l+F_+I_m-1; j < F_l+W_+5; j++) + if (mul_y_ln[F_l+W_+5]!=mul_y_ln[j]) + m_overf = 1; + + if (!m_overf) { + //truncate multiply result + ap_fixed mul_y_ln_s = mul_y_ln; + //std::cout<<"[POW]mul_y_ln_s="<(mul_y_ln_s);// + //std::cout<<"[POW]exp_r="<= W_-1; j--) { + if (exp_r[j]) + e_overf=1; + } + } + r_1 = exp_r; + } + //overflow when exp reulst overflow or multiply result is positive and oveflow + if (e_overf||(m_overf&&!mul_y_ln[F_l+W_+5])) { + overf = 1; + } + //sig(x)^y = -1 + if (r_is_neg) { + //overflow, return MIN + if (overf) { + r=0; + r[W_-1]=1; + //return -exp(y*log(|x|)) + } else { + if (r_1!=0) { + r = -r_1; + r[W_-1] = 1; + } + } + //sig(x)^y =1 + } else { + // return MAX + if(overf) { + r[W_-1] = 0; + #pragma unroll + for (int j = W_-2; j >= 0; j--) + r[j] = 1; + //return exp(y*log(|x|) + } else { + r = r_1; + } + } + //std::cout<<"[OWW]r="< Max, then return Max) + * ============================================ + * || x || n || pown(x,n) + * || 0 || 0 || 1 + * || 0 || any || 0 + * || 1 || any || 1 + * || -1 || any || +1/-1 + * || any || 0 || 1 + * || any || 1 || x + * || any || -1 || 1/x + * || x!=0 || n!=0,1,-1 || exp(log|x|*n)*sig(x)^n + * ============================================ + * + * optimization: implement the exp for input I<5, W<32+5 and output W<65, I<32 + */ +template +ap_fixed pown(ap_fixed x, int n) { + #ifndef __SYNTHESIS__ + #ifdef HLS_DEBUG + std::cout<<"[POWN]x="< +ap_fixed ceil_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } else { + if(I_<0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) { + x(W_-I_-1,0) = 0; + x += 1; + } + return x; + } + } +} +template +ap_ufixed ceil_fixed(ap_ufixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_ < 0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) { + x(W_-I_-1,0) = 0; + x += 1; + } + return x; + } + } +} +template +ap_int ceil_fixed(ap_int x) +{ + return x; +} +template +ap_uint ceil_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed floor_fixed(ap_fixed x) +{ + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) x(W_-I_-1,0) = 0; + return x; + } + } +} +template +ap_ufixed floor_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return floor_fixed(xi); +} +template +ap_int floor_fixed(ap_int x) +{ + return x; +} +template +ap_uint floor_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed trunc_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) { + x(W_-I_-1,0) = 0; + if ( x[W_-1] ) + x += 1; + } + return x; + } + } +} +template +ap_ufixed trunc_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return trunc_fixed(xi); +} +template +ap_int trunc_fixed(ap_int x) +{ + return x; +} +template +ap_uint trunc_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed copysign_fixed(ap_fixed x, ap_fixed y) +{ + x[W_-1] = y[W_-1]; + return x; +} +template +ap_ufixed copysign_fixed(ap_ufixed x, ap_ufixed y) +{ + return x; +} +template +ap_int copysign_fixed(ap_int x, ap_int y) +{ + x[I_-1] = y[I_-1]; + return x; +} +template +ap_uint copysign_fixed(ap_uint x, ap_uint y) +{ + return x; +} + +template +ap_fixed fabs_fixed(ap_fixed x) +{ + ap_fixed xs = -x; + xs[W_-1] = 0; + return ( ( x[W_-1] ) ? xs : x ); +} +template +ap_ufixed fabs_fixed(ap_ufixed x) +{ + return x; +} +template +ap_int fabs_fixed(ap_int x) +{ + ap_int xs = -x; + xs[I_-1] = 0; + return ( ( x[I_-1] ) ? xs : x ); +} +template +ap_uint fabs_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed round_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + ap_ufixed<1, 0> half_val = 0.5; + ap_ufixed x_pos = fabs_fixed(x); + ap_ufixed r = x_pos + half_val; + r(W_-I_-1,0) = 0; + if(x[W_-1]) return -r; + else return r; + } + } +} +template +ap_ufixed round_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return round_fixed(xi); +} +template +ap_int round_fixed(ap_int x) +{ + return x; +} +template +ap_uint round_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed rint_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + ap_ufixed x_p = fabs_fixed((ap_fixed)x); + ap_ufixed<1,0> half_val = 0.5; + ap_ufixed xUp = x_p + half_val; + + if(xUp(W_-I_-1,0) == 0) { + //round to even + xUp[W_-I_] = 0; + } else { + xUp(W_-I_-1,0) = 0; + } + if(x[W_-1]) return -xUp; + else return xUp; + } + //if ( x(W_-I_-1,0) != 0 ) { + // ap_fixed xs = 0; + // ap_fixed tmp=0; + // ap_fixed<2, 1> half_val = 0.5; + + // if(x[W_-1]) { + // xs = -x; + // xs = xs + half_val; + // tmp= xs; + // if (tmp(W_-I_-1,0) != 0) { + // xs(W_-I_-1,0) = 0; + // } + // else { + // xs[W_-I_] = 0; + // } + // x = -xs; + // } + // else { + // xs = x + half_val; + // tmp= xs; + // if (tmp(W_-I_-1,0) != 0) { + // xs(W_-I_-1,0) = 0; + // } + // else { + // xs[W_-I_] = 0; + // } + // x = xs; + // } + //} + //return x; + } +} +template +ap_ufixed rint_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return rint_fixed(xi); +} +template +ap_int rint_fixed(ap_int x) +{ + return x; +} +template +ap_uint rint_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed nearbyint_fixed(ap_fixed x) +{ + //for ap_fixed, there is no difference between rint and nearbyint. + return rint_fixed(x); +} +template +ap_ufixed nearbyint_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return nearbyint_fixed(xi); +} +template +ap_int nearbyint_fixed(ap_int x) +{ + return x; +} +template +ap_uint nearbyint_fixed(ap_uint x) +{ + return x; +} + +template +bool signbit_fixed(ap_fixed x){ + if(x[W_-1]) return true; + else return false; +} +template +bool signbit_fixed(ap_ufixed x){ + return false; +} + +template +bool signbit_fixed(ap_int x){ + if(x[I_-1]) return true; + else return false; +} + +template +bool signbit_fixed(ap_uint x){ + return false; +} +namespace fp_internal { + template + ap_fixed nextafter(ap_fixed x, ap_fixed y){ + const static int F = W - I; + ap_ufixed<1, -F+1> ulp = 0; + ulp[0] = 1; + ap_fixed r = 0; + if(x == y) r = y; + else if(x < y) r = x + ulp; + else r = x - ulp; + return r; + } + template + ap_ufixed nextafter(ap_ufixed x, ap_ufixed y) { + ap_fixed xi = x; + ap_fixed yi = y; + return nextafter(xi, yi); + + } + template + ap_int nextafter(ap_int x, ap_int y) { + ap_fixed xi = x; + ap_fixed yi = y; + return nextafter(xi, yi); + } + template + ap_uint nextafter(ap_uint x, ap_uint y) { + ap_fixed xi = x; + ap_fixed yi = y; + return nextafter(xi, yi); + } + template + ap_fixed nexttoward(ap_fixed x, ap_fixed y){ + return nextafter(x,y); + } + template + ap_ufixed nexttoward(ap_ufixed x, ap_ufixed y){ + return nextafter(x,y); + } + template + ap_int nexttoward(ap_int x, ap_int y){ + return nextafter(x,y); + } + template + ap_uint nexttoward(ap_uint x, ap_uint y){ + return nextafter(x,y); + } +} + +//llround(ap_fixed) +template +long long int llround_fixed(ap_fixed x){ + return round_fixed(ap_fixed (x)); +} + +//llround(ap_ufixed) +template +long long int llround_fixed(ap_ufixed x){ + return round_fixed(ap_ufixed (x)); +} + +//llround(ap_int) +template +long long int llround_fixed(ap_int x){ + return x; +} + +//llround(ap_uint) +template +long long int llround_fixed(ap_uint x){ + return x; +} + +// lround(ap_fixed) +template +long int lround_fixed(ap_fixed x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x(ap_fixed (x)); + } +} + +// lround(ap_ufixed) +template +long int lround_fixed(ap_ufixed x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) ) { + return maxval; + } + else { + return round_fixed(ap_ufixed (x)); + } +} + +// lround(ap_int) +template +long int lround_fixed(ap_int x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x +long int lround_fixed(ap_uint x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) ) { + return maxval; + } + else { + return x; + } +} + +// llrint_fixed(ap_fixed) +template +long long int llrint_fixed(ap_fixed x){ + return rint_fixed(ap_fixed (x)); +} + +// llrint_fixed(ap_ufixed) +template +long long int llrint_fixed(ap_ufixed x){ + return rint_fixed(ap_ufixed (x)); +} + +// llrint_fixed(ap_int) +template +long long int llrint_fixed(ap_int x){ + return x; +} + +// llrint_fixed(ap_uint) +template +long long int llrint_fixed(ap_uint x){ + return x; +} + +// lrint_fixed(ap_fixed) +template +long int lrint_fixed(ap_fixed x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x(ap_fixed (x)); + } +} + + +// lrint_fixed(ap_ufixed) +template +long int lrint_fixed(ap_ufixed x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if(x>maxval){ + return maxval; + } + else { + return rint_fixed(ap_ufixed (x)); + } +} + +// lrint_fixed(ap_int) +template +long int lrint_fixed(ap_int x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x>minval)) { + return (x[I-1])? minval : maxval; + } + else { + return x; + } +} + +// lrint_fixed(ap_uint) +template +long int lrint_fixed(ap_uint x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if(x>maxval) { + return maxval; + } + else { + return x; + } +} + + +#endif + + diff --git a/vitis/v2020_1/hls_select_bitselect_apfixed.h b/vitis/v2020_1/hls_select_bitselect_apfixed.h new file mode 100644 index 00000000..1a732f34 --- /dev/null +++ b/vitis/v2020_1/hls_select_bitselect_apfixed.h @@ -0,0 +1,105 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_SELECT_BITSELECT_APFIXED_H_ +#define _X_HLS_SELECT_BITSELECT_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +//#include + +/* +///select ap_fixed +template +ap_fixed generic_select(ap_fixed x,ap_fixed y, ap_fixed z) +{ +#pragma HLS pipeline + ap_fixed result; + //for (int i=0; i +ap_ufixed generic_select(ap_ufixed x,ap_ufixed y, ap_ufixed z) +{ +#pragma HLS pipeline + ap_ufixed result; + //for (int i=0; i +ap_fixed generic_bitselect(ap_fixed x,ap_fixed y, ap_fixed z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} + +///bitselect ap_ufixed +template +ap_ufixed generic_bitselect(ap_ufixed x,ap_ufixed y, ap_ufixed z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} + +///bitselect ap_int +template +ap_int generic_bitselect(ap_int x,ap_int y, ap_int z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} +///bitselect ap_uint +template +ap_uint generic_bitselect(ap_uint x,ap_uint y, ap_uint z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} + +/* +///select ap_ufixed +template +void hls_select(ap_ufixed x[J_],ap_ufixed y[J_], ap_ufixed z[J_],ap_ufixed result[J_]) +{ + //ap_ufixed result[J_]; + for (int i=0; i +#include +#include + +enum CodeStateE {ENTER_WRAPC, DUMP_INPUTS, CALL_C_DUT, DUMP_OUTPUTS, DELETE_CHAR_BUFFERS, ENTER_WRAPC_PC} CodeState; +string CodeStateS[] = {"ENTER_WRAPC", "DUMP_INPUTS", "CALL_C_DUT", "DUMP_OUTPUTS", "DELETE_CHAR_BUFFERS", "ENTER_WRAPC_PC"}; + +void message_handler (int sig) +{ + if (sig == SIGFPE) + { + cout << "ERROR: System recieved a signal named SIGFPE and the program has to stop immediately!" << endl + << "This signal was generated due to a fatal arithmetic error." << endl + << "Possible cause of this problem may be: division by zero, overflow etc." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } + if (sig == SIGSEGV) + { + cout << "ERROR: System recieved a signal named SIGSEGV and the program has to stop immediately!" << endl + << "This signal was generated when a program tries to read or write outside the memory that is allocated for it, or to write memory that can only be read." << endl + << "Possible cause of this problem may be: 1) the depth setting of pointer type argument is much larger than it needed; 2)insufficient depth of array argument; 3)null pointer etc." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } + if (sig == SIGTERM) + { + cout << "ERROR: System recieved a signal named SIGTERM and the program has to stop immediately!" << endl + << "This signal was caused by the shell command kill." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } + if (sig == SIGINT) + { + cout << "ERROR: System recieved a signal named SIGINT and the program has to stop immediately!" << endl + << "This signal was generated when the user types the INTR character (normally C-c)." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } +//#ifdef _MINGW32_ +//#else +// if (sig == SIGKILL) +// { +// cout << "ERROR: System recieved a signal named SIGKILL and the program has to stop immediately!" << endl +// << "The system generated SIGKILL for a process itself under some unusual conditions where the program cannot possibly continue to run." << endl +// << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl +// << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl +// << endl; +// } +// if (sig == SIGQUIT) +// { +// cout << "ERROR: System recieved a signal named SIGQUIT and the program has to stop immediately!" << endl +// << "This signal was generated when the user types the QUIT character and produces a core dump." << endl +// << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl +// << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl +// << endl; +// } +//#endif + signal(sig, SIG_DFL); +} + +void refine_signal_handler () +{ + signal(SIGFPE, message_handler); + signal(SIGSEGV, message_handler); + signal(SIGTERM, message_handler); + signal(SIGINT, message_handler); +//#ifdef _MINGW32_ +//#else +// signal(SIGKILL, message_handler); +// signal(SIGQUIT, message_handler); +//#endif +} diff --git a/vitis/v2020_1/hls_sqrt_apfixed.h b/vitis/v2020_1/hls_sqrt_apfixed.h new file mode 100644 index 00000000..f9cfdbdc --- /dev/null +++ b/vitis/v2020_1/hls_sqrt_apfixed.h @@ -0,0 +1,461 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_SQRT_APFIXED_H_ +#define _X_HLS_SQRT_APFIXED_H_ +#include "ap_int.h" +#include "ap_fixed.h" + +#ifndef __SYNTHESIS__ +#include "assert.h" +#endif + +template +ap_fixed sqrt_fixed(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const int F_ = W_ - I_; + if (I_>34) return 0; + else if (F_>32) return 0; + + // return ap_fixed value + ap_ufixed r; + ap_ufixed x_s = x; + + if ((F_==0)&&(I_==2)) { + r = x_s; + } else if ((F_==0)&&(I_<=13)) { + ap_ufixed x_s_l = x_s + 1; + ap_ufixed x_s_1; + x_s_1(W_-2,0) = x_s_l(W_-1,1); + if (I_<=8) { + if (x_s_1==ap_ufixed("0x0p0")) r = 0; + else if (x_s_1<=ap_ufixed("0x1p0")) r = 1; + else if (x_s_1<=ap_ufixed("0x3p0")) r = 2; + else if (x_s_1<=ap_ufixed("0x6p0")) r = 3; + else if (x_s_1<=ap_ufixed("0xap0")) r = 4; + else if (x_s_1<=ap_ufixed("0xfp0")) r = 5; + else if (x_s_1<=ap_ufixed("0x15p0")) r = 6; + else if (x_s_1<=ap_ufixed("0x1cp0")) r = 7; + else if (x_s_1<=ap_ufixed("0x24p0")) r = 8; + else if (x_s_1<=ap_ufixed("0x2dp0")) r = 9; + else if (x_s_1<=ap_ufixed("0x37p0")) r = 10; + else r = 11; + } else if (I_<=9) { + if (x_s_1==ap_ufixed("0x0p0")) r = 0; + else if (x_s_1==ap_ufixed("0x1p0")) r = 1; + else if (x_s_1<=ap_ufixed("0x3p0")) r = 2; + else if (x_s_1<=ap_ufixed("0x6p0")) r = 3; + else if (x_s_1<=ap_ufixed("0xap0")) r = 4; + else if (x_s_1<=ap_ufixed("0xfp0")) r = 5; + else if (x_s_1<=ap_ufixed("0x15p0")) r = 6; + else if (x_s_1<=ap_ufixed("0x1cp0")) r = 7; + else if (x_s_1<=ap_ufixed("0x24p0")) r = 8; + else if (x_s_1<=ap_ufixed("0x2dp0")) r = 9; + else if (x_s_1<=ap_ufixed("0x37p0")) r = 10; + else if (x_s_1<=ap_ufixed("0x42p0")) r = 11; + else if (x_s_1<=ap_ufixed("0x4ep0")) r = 12; + else if (x_s_1<=ap_ufixed("0x5bp0")) r = 13; + else if (x_s_1<=ap_ufixed("0x69p0")) r = 14; + else if (x_s_1<=ap_ufixed("0x78p0")) r = 15; + else r = 16; + } else { + if (x_s_1==ap_ufixed("0x0p0")) r = 0; + else if (x_s_1==ap_ufixed("0x1p0")) r = 1; + else if (x_s_1<=ap_ufixed("0x3p0")) r = 2; + else if (x_s_1<=ap_ufixed("0x6p0")) r = 3; + else if (x_s_1<=ap_ufixed("0xap0")) r = 4; + else if (x_s_1<=ap_ufixed("0xfp0")) r = 5; + else if (x_s_1<=ap_ufixed("0x15p0")) r = 6; + else if (x_s_1<=ap_ufixed("0x1cp0")) r = 7; + else if (x_s_1<=ap_ufixed("0x24p0")) r = 8; + else if (x_s_1<=ap_ufixed("0x2dp0")) r = 9; + else if (x_s_1<=ap_ufixed("0x37p0")) r = 10; + else if (x_s_1<=ap_ufixed("0x42p0")) r = 11; + else if (x_s_1<=ap_ufixed("0x4ep0")) r = 12; + else if (x_s_1<=ap_ufixed("0x5bp0")) r = 13; + else if (x_s_1<=ap_ufixed("0x69p0")) r = 14; + else if (x_s_1<=ap_ufixed("0x78p0")) r = 15; + else if (x_s_1<=ap_ufixed("0x88p0")) r = 16; + else if (x_s_1<=ap_ufixed("0x99p0")) r = 17; + else if (x_s_1<=ap_ufixed("0xabp0")) r = 18; + else if (x_s_1<=ap_ufixed("0xbep0")) r = 19; + else if (x_s_1<=ap_ufixed("0xd2p0")) r = 20; + else if (x_s_1<=ap_ufixed("0xe7p0")) r = 21; + else if (x_s_1<=ap_ufixed("0xfdp0")) r = 22; + else if (x_s_1<=ap_ufixed("0x114p0")) r = 23; + else if (x_s_1<=ap_ufixed("0x12cp0")) r = 24; + else if (x_s_1<=ap_ufixed("0x145p0")) r = 25; + else if (x_s_1<=ap_ufixed("0x15fp0")) r = 26; + else if (x_s_1<=ap_ufixed("0x17ap0")) r = 27; + else if (x_s_1<=ap_ufixed("0x196p0")) r = 28; + else if (x_s_1<=ap_ufixed("0x1b3p0")) r = 29; + else if (x_s_1<=ap_ufixed("0x1d1p0")) r = 30; + else if (x_s_1<=ap_ufixed("0x1f0p0")) r = 31; + else if (x_s_1<=ap_ufixed("0x210p0")) r = 32; + else if (x_s_1<=ap_ufixed("0x231p0")) r = 33; + else if (x_s_1<=ap_ufixed("0x253p0")) r = 34; + else if (x_s_1<=ap_ufixed("0x276p0")) r = 35; + else if (x_s_1<=ap_ufixed("0x29ap0")) r = 36; + else if (x_s_1<=ap_ufixed("0x2bfp0")) r = 37; + else if (x_s_1<=ap_ufixed("0x2e5p0")) r = 38; + else if (x_s_1<=ap_ufixed("0x30cp0")) r = 39; + else if (x_s_1<=ap_ufixed("0x334p0")) r = 40; + else if (x_s_1<=ap_ufixed("0x35dp0")) r = 41; + else if (x_s_1<=ap_ufixed("0x387p0")) r = 42; + else if (x_s_1<=ap_ufixed("0x3b2p0")) r = 43; + else if (x_s_1<=ap_ufixed("0x3dep0")) r = 44; + else if (x_s_1<=ap_ufixed("0x40bp0")) r = 45; + else if (x_s_1<=ap_ufixed("0x439p0")) r = 46; + else if (x_s_1<=ap_ufixed("0x468p0")) r = 47; + else if (x_s_1<=ap_ufixed("0x498p0")) r = 48; + else if (x_s_1<=ap_ufixed("0x4c9p0")) r = 49; + else if (x_s_1<=ap_ufixed("0x4fbp0")) r = 50; + else if (x_s_1<=ap_ufixed("0x52ep0")) r = 51; + else if (x_s_1<=ap_ufixed("0x562p0")) r = 52; + else if (x_s_1<=ap_ufixed("0x597p0")) r = 53; + else if (x_s_1<=ap_ufixed("0x5cdp0")) r = 54; + else if (x_s_1<=ap_ufixed("0x604p0")) r = 55; + else if (x_s_1<=ap_ufixed("0x63cp0")) r = 56; + else if (x_s_1<=ap_ufixed("0x675p0")) r = 57; + else if (x_s_1<=ap_ufixed("0x6afp0")) r = 58; + else if (x_s_1<=ap_ufixed("0x6eap0")) r = 59; + else if (x_s_1<=ap_ufixed("0x726p0")) r = 60; + else if (x_s_1<=ap_ufixed("0x763p0")) r = 61; + else if (x_s_1<=ap_ufixed("0x7a1p0")) r = 62; + else if (x_s_1<=ap_ufixed("0x7e0p0")) r = 63; + else r = 64; + } + } else if (F_<=4 && I_<=5) { + if (x_s==ap_ufixed("0x0.0p0")) r = "0x0.0p0"; + else if (x_s==ap_ufixed("0x0.1p0")) r = "0x0.4p0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "0x0.6p0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "0x0.7p0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "0x0.8p0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "0x0.9p0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "0x0.ap0"; + else if (x_s<=ap_ufixed("0x0.8p0")) r = "0x0.bp0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "0x0.cp0"; + else if (x_s<=ap_ufixed("0x0.bp0")) r = "0x0.dp0"; + else if (x_s<=ap_ufixed("0x0.dp0")) r = "0x0.ep0"; + else if (x_s<=ap_ufixed("0x0.fp0")) r = "0x0.fp0"; + else if (x_s<=ap_ufixed("0x1.1p0")) r = "0x1.0p0"; + else if (x_s<=ap_ufixed("0x1.3p0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0x1.5p0")) r = "0x1.2p0"; + else if (x_s<=ap_ufixed("0x1.7p0")) r = "0x1.3p0"; + else if (x_s<=ap_ufixed("0x1.ap0")) r = "0x1.4p0"; + else if (x_s<=ap_ufixed("0x1.cp0")) r = "0x1.5p0"; + else if (x_s<=ap_ufixed("0x1.fp0")) r = "0x1.6p0"; + else if (x_s<=ap_ufixed("0x2.2p0")) r = "0x1.7p0"; + else if (x_s<=ap_ufixed("0x2.5p0")) r = "0x1.8p0"; + else if (x_s<=ap_ufixed("0x2.8p0")) r = "0x1.9p0"; + else if (x_s<=ap_ufixed("0x2.bp0")) r = "0x1.ap0"; + else if (x_s<=ap_ufixed("0x2.fp0")) r = "0x1.bp0"; + else if (x_s<=ap_ufixed("0x3.2p0")) r = "0x1.cp0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x1.dp0"; + else if (x_s<=ap_ufixed("0x3.ap0")) r = "0x1.ep0"; + else if (x_s<=ap_ufixed("0x3.ep0")) r = "0x1.fp0"; + else if (x_s<=ap_ufixed("0x4.2p0")) r = "0x2.0p0"; + else if (x_s<=ap_ufixed("0x4.6p0")) r = "0x2.1p0"; + else if (x_s<=ap_ufixed("0x4.ap0")) r = "0x2.2p0"; + else if (x_s<=ap_ufixed("0x4.ep0")) r = "0x2.3p0"; + else if (x_s<=ap_ufixed("0x5.3p0")) r = "0x2.4p0"; + else if (x_s<=ap_ufixed("0x5.7p0")) r = "0x2.5p0"; + else if (x_s<=ap_ufixed("0x5.cp0")) r = "0x2.6p0"; + else if (x_s<=ap_ufixed("0x6.1p0")) r = "0x2.7p0"; + else if (x_s<=ap_ufixed("0x6.6p0")) r = "0x2.8p0"; + else if (x_s<=ap_ufixed("0x6.bp0")) r = "0x2.9p0"; + else if (x_s<=ap_ufixed("0x7.0p0")) r = "0x2.ap0"; + else if (x_s<=ap_ufixed("0x7.6p0")) r = "0x2.bp0"; + else if (x_s<=ap_ufixed("0x7.bp0")) r = "0x2.cp0"; + else if (x_s<=ap_ufixed("0x8.1p0")) r = "0x2.dp0"; + else if (x_s<=ap_ufixed("0x8.7p0")) r = "0x2.ep0"; + else if (x_s<=ap_ufixed("0x8.dp0")) r = "0x2.fp0"; + else if (x_s<=ap_ufixed("0x9.3p0")) r = "0x3.0p0"; + else if (x_s<=ap_ufixed("0x9.9p0")) r = "0x3.1p0"; + else if (x_s<=ap_ufixed("0x9.fp0")) r = "0x3.2p0"; + else if (x_s<=ap_ufixed("0xa.5p0")) r = "0x3.3p0"; + else if (x_s<=ap_ufixed("0xa.cp0")) r = "0x3.4p0"; + else if (x_s<=ap_ufixed("0xb.2p0")) r = "0x3.5p0"; + else if (x_s<=ap_ufixed("0xb.9p0")) r = "0x3.6p0"; + else if (x_s<=ap_ufixed("0xc.0p0")) r = "0x3.7p0"; + else if (x_s<=ap_ufixed("0xc.7p0")) r = "0x3.8p0"; + else if (x_s<=ap_ufixed("0xc.ep0")) r = "0x3.9p0"; + else if (x_s<=ap_ufixed("0xd.5p0")) r = "0x3.ap0"; + else if (x_s<=ap_ufixed("0xd.dp0")) r = "0x3.bp0"; + else if (x_s<=ap_ufixed("0xe.4p0")) r = "0x3.cp0"; + else if (x_s<=ap_ufixed("0xe.cp0")) r = "0x3.dp0"; + else if (x_s<=ap_ufixed("0xf.4p0")) r = "0x3.ep0"; + else if (x_s<=ap_ufixed("0xf.cp0")) r = "0x3.fp0"; + else r = "0x4.0p0"; + } else { + + if (x[W_-1]) return 0; + if (I_<=0) { + const static int lsbx = (-I_+2<=W_) ? (W_+I_-2) : 0; + if ( x(W_-1,lsbx) != 0 ) return 0; + } + + const static int prcs = (F_+1)*2; // max precision + const static int msbr = (I_>0) ? (I_+1)/2 : 1; // msb of result + const static int msbx = (I_>0) ? I_+3 : 4; + const static int msbm = (I_>0) ? I_+1 : 2; + +// ap_ufixed x_l = x; + ap_ufixed x_l_I = x; + ap_ufixed< prcs/2, 0> x_l_FH = x; + ap_ufixed< prcs/2, -prcs/2> x_l_FL = 0; + ap_ufixed res = 0; // result to return + ap_ufixed res_I = 0; + ap_ufixed< prcs/2, 0> res_FH = 0; + //ap_ufixed< prcs/2, -prcs/2> res_FL = 0; + +// #pragma unroll +// // each iteration calculate 1 bit of result, starting from MSB +// // bit is used to store the current bit under calculation +// // if accepted bit will be added to result +// for ( int pos = msbr-1; pos >= -F_-1; pos-- ) { +// ap_ufixed mul = 0; // 2 * res * bit + bit^2 +// assert ( res(pos+prcs,0)==0 ); +// mul ( msbr+pos + prcs , pos*2+1 + prcs ) = res ( msbr-1 + prcs , pos + prcs ); +// assert ( !mul[I_-1+prcs] ); +// mul [ pos*2 + prcs ] = 1; +// +// +// assert ( x_l(I_+2+prcs,msbr+pos+2+prcs)==0 ); +// if ( x_l ( msbr+pos + prcs , pos*2 + prcs ) >= mul ( msbr+pos + prcs , pos*2 + prcs ) ) { +// assert ( x_l >= mul ); +// ap_ufixed x_l_ = x_l; // just for assert +// x_l ( msbr+pos + prcs , pos*2 + prcs ) = x_l ( msbr+pos + prcs , pos*2 + prcs ) - mul ( msbr+pos + prcs , pos*2 + prcs ); +// assert ( x_l == x_l_ - mul ); +// +// res [ pos + prcs ] = 1; +// } +// } + if (I_>0) + #pragma unroll + for ( int pos = msbr-1; pos >= 0; pos-- ) { + ap_ufixed mul_I = 0; +#ifndef __SYNTHESIS__ + assert ( res_I(pos,0)==0 ); +#endif + mul_I ( msbr+pos , pos*2+1 ) = res_I ( msbr-1 , pos ); +#ifndef __SYNTHESIS__ + assert ( !mul_I[I_-1] ); +#endif + mul_I [ pos*2 ] = 1; + +#ifndef __SYNTHESIS__ + assert ( x_l_I(I_+2,msbr+pos+2)==0 ); +#endif + if ( x_l_I ( msbr+pos+1 , pos*2 ) >= mul_I ( msbr+pos , pos*2 ) ) { +#ifndef __SYNTHESIS__ + assert ( x_l_I >= mul_I ); +#endif + ap_ufixed x_l_I_ = x_l_I; + x_l_I ( msbr+pos+1 , pos*2 ) = x_l_I ( msbr+pos+1 , pos*2 ) - mul_I ( msbr+pos , pos*2 ); +#ifndef __SYNTHESIS__ + assert ( x_l_I == x_l_I_ - mul_I ); +#endif + + res_I [ pos ] = 1; + } + } + #pragma unroll + for ( int pos = -1; pos >= -F_-1; pos-- ) { + ap_ufixed mul = 0; +#ifndef __SYNTHESIS__ + assert ( res_FH(pos+prcs/2,0)==0 ); +#endif + //assert ( res_FL ==0 ); + mul ( msbr+pos + prcs , pos +1 + prcs ) = res_I ( msbr-1 , 0 ); + mul ( pos + prcs , pos*2+1 + prcs ) = res_FH ( -1+prcs/2 , pos+prcs/2 ); +#ifndef __SYNTHESIS__ + assert ( !mul[I_-1+prcs] ); +#endif + mul [ pos*2 + prcs ] = 1; + ap_ufixed mul_I = mul; + ap_ufixed< prcs/2, 0> mul_FH = mul; + ap_ufixed< prcs/2, -prcs/2> mul_FL = mul; + + ap_ufixed x_l; + x_l ( -1+msbx + prcs , prcs ) = x_l_I ( -1+msbx , 0 ); + x_l ( -1 + prcs , prcs/2 ) = x_l_FH ( -1+prcs/2 , 0 ); + x_l ( -1 + prcs/2 , 0 ) = x_l_FL ( -1+prcs/2 , 0 ); +#ifndef __SYNTHESIS__ + assert ( x_l(I_+2+prcs,msbr+pos+2+prcs)==0 ); +#endif + if ( (x_l_I>mul_I) || ((x_l_I==mul_I)&&(x_l_FH>mul_FH)) || ((x_l_I==mul_I)&&(x_l_FH==mul_FH)&&(x_l_FL>=mul_FL)) ) { +#ifndef __SYNTHESIS__ + assert ( x_l >= mul ); +#endif + + ap_ufixed< prcs/2+1 , -prcs/2+1 > x_l_FL_l = x_l_FL; + if ( x_l_FL < mul_FL ) x_l_FL_l[prcs/2] = 1; + x_l_FL_l -= mul_FL; +#ifndef __SYNTHESIS__ + assert ( !x_l_FL_l[prcs/2] ); +#endif + + ap_ufixed< prcs/2+1 , 1 > x_l_FH_l = x_l_FH; + if ( (x_l_FH delta = 0; + if ( x_l_FL < mul_FL ) delta[0] = 1; + x_l_FH_l -= delta; + x_l_FH_l -= mul_FH; +#ifndef __SYNTHESIS__ + assert ( !x_l_FH_l[prcs/2] ); +#endif + if ( (x_l_FH x_l_ = x_l; + x_l ( -1+msbx + prcs , prcs ) = x_l_I ( -1+msbx , 0 ); + x_l ( -1 + prcs , prcs/2 ) = x_l_FH ( -1+prcs/2 , 0 ); + x_l ( -1 + prcs/2 , 0 ) = x_l_FL ( -1+prcs/2 , 0 ); +#ifndef __SYNTHESIS__ + assert ( x_l == x_l_ - mul ); +#endif + res_FH [ pos+prcs/2 ] = 1; + } + } + +// r = res + ( delta >> F_ ); + + ap_ufixed< prcs/2+1 , 1 > res_FH_l = res_FH; + ap_ufixed< prcs/2 , 0 > delta; + delta[delta.wl()-1] = 1; + res_FH_l += ( delta >> F_ ); + res_FH = res_FH_l; + if (res_FH_l[prcs/2]) res_I ++; + + res ( msbr-1 + prcs , prcs ) = res_I ( msbr-1 , 0 ); + res ( -1 + prcs , prcs/2 ) = res_FH ( -1+prcs/2 , 0 ); + + r = res; + } + + return r; +} +template +ap_ufixed sqrt_fixed(ap_ufixed x) { + ap_fixed xf = x; + return sqrt_fixed(xf); +} +template +ap_int sqrt_fixed(ap_int x) { + ap_fixed xf = x; + return sqrt_fixed(xf); +} +template +ap_uint sqrt_fixed(ap_uint x) { + ap_fixed xf = x; + return sqrt_fixed(xf); +} + + +template +ap_fixed rsqrt_fixed(ap_fixed x) +{ +#pragma HLS pipeline + ap_ufixed xs = x; + const int Ix = ( I_ > 1 )? I_-1 : 1; + ap_ufixed xs_I = xs; + ap_ufixed r; + const int I = ( I_-1 > W_-I_+1 ) ? I_-1 : W_-I_+1; + ap_ufixed y1; + ap_ufixed y2; + if ( xs == 0 ) { + return 0; + } else if ( xs_I != 0 ) { + y1 = xs; + } else { + y1 = 1; + y1 = y1/xs; + } + y2 = sqrt_fixed(y1); + if ( y2 == 0 ) { + return 0; + } else if ( xs_I != 0 ) { + r = 1; + r = r/y2; + } else { + r = y2; + } + return r; +} +template +ap_ufixed rsqrt_fixed(ap_ufixed x) { + ap_fixed xf = x; + return rsqrt_fixed(xf); +} +template +ap_int rsqrt_fixed(ap_int x) { + ap_fixed xf = x; + return rsqrt_fixed(xf); +} +template +ap_uint rsqrt_fixed(ap_uint x) { + ap_fixed xf = x; + return rsqrt_fixed(xf); +} + + +template +ap_fixed recip_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if ( x == 0 ) return 0; + ap_fixed r = 1; + return r/x; +} +template +ap_ufixed recip_fixed(ap_ufixed x) { + ap_fixed xf = x; + return recip_fixed(xf); +} +template +ap_int recip_fixed(ap_int x) { + ap_fixed xf = x; + return recip_fixed(xf); +} +template +ap_uint recip_fixed(ap_uint x) { + ap_fixed xf = x; + return recip_fixed(xf); +} + +#endif diff --git a/vitis/v2020_1/hls_stream.h b/vitis/v2020_1/hls_stream.h new file mode 100644 index 00000000..bab72a38 --- /dev/null +++ b/vitis/v2020_1/hls_stream.h @@ -0,0 +1,273 @@ +/* +#- (c) Copyright 2011-2019 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef X_HLS_STREAM_SIM_H +#define X_HLS_STREAM_SIM_H + +/* + * This file contains a C++ model of hls::stream. + * It defines C simulation model. + */ +#ifndef __cplusplus + +#error C++ is required to include this header file + +#else + +////////////////////////////////////////////// +// C level simulation models for hls::stream +////////////////////////////////////////////// +#include +#include +#include +#include +#include + +#ifdef HLS_STREAM_THREAD_SAFE +#include +#include +#endif + +#ifndef _MSC_VER +#include +#include +#endif + +namespace hls { + +template +class stream; +template +class stream<__STREAM_T__, 0> +{ + protected: + std::string _name; + std::deque<__STREAM_T__> _data; // container for the elements +#ifdef HLS_STREAM_THREAD_SAFE + std::mutex _mutex; + std::condition_variable _condition_var; +#endif + + public: + /// Constructors + // Keep consistent with the synthesis model's constructors + stream() { + static unsigned _counter = 1; + std::stringstream ss; +#ifndef _MSC_VER + char* _demangle_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, 0); + if (_demangle_name) { + _name = _demangle_name; + free(_demangle_name); + } + else { + _name = "hls_stream"; + } +#else + _name = typeid(*this).name(); +#endif + + ss << _counter++; + _name += "." + ss.str(); + } + + stream(const std::string name) { + // default constructor, + // capacity set to predefined maximum + _name = name; + } + + /// Make copy constructor and assignment operator private + private: + stream(const stream< __STREAM_T__ >& chn): + _name(chn._name), _data(chn._data) { + } + + stream& operator = (const stream< __STREAM_T__ >& chn) { + _name = chn._name; + _data = chn._data; + return *this; + } + + public: + /// Overload >> and << operators to implement read() and write() + void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + + public: + /// Destructor + /// Check status of the queue + virtual ~stream() { + if (!_data.empty()) + { + std::cout << "WARNING: Hls::stream '" + << _name + << "' contains leftover data," + << " which may result in RTL simulation hanging." + << std::endl; + } + } + + /// Status of the queue + bool empty() { +#ifdef HLS_STREAM_THREAD_SAFE + std::lock_guard lg(_mutex); +#endif + return _data.empty(); + } + + bool full() const { return false; } + + /// Blocking read + void read(__STREAM_T__& head) { + head = read(); + } + +#ifdef HLS_STREAM_THREAD_SAFE + __STREAM_T__ read() { + std::unique_lock ul(_mutex); + while (_data.empty()) { + _condition_var.wait(ul); + } + + __STREAM_T__ elem; + elem = _data.front(); + _data.pop_front(); + return elem; + } +#else + __STREAM_T__ read() { + __STREAM_T__ elem; +#ifdef HLS_STREAM_WAIT_FOR_DATA_IN_BLOCKING_READ + while(_data.empty()) + ; +#endif + if (_data.empty()) { + std::cout << "WARNING: Hls::stream '" + << _name + << "' is read while empty," + << " which may result in RTL simulation hanging." + << std::endl; + elem = __STREAM_T__(); + } else { + elem = _data.front(); + _data.pop_front(); + } + return elem; + } +#endif + + /// Blocking write + void write(const __STREAM_T__& tail) { +#ifdef HLS_STREAM_THREAD_SAFE + std::unique_lock ul(_mutex); +#endif + _data.push_back(tail); +#ifdef HLS_STREAM_THREAD_SAFE + _condition_var.notify_one(); +#endif + } + + /// Nonblocking read + bool read_nb(__STREAM_T__& head) { +#ifdef HLS_STREAM_THREAD_SAFE + std::lock_guard lg(_mutex); +#endif + bool is_empty = _data.empty(); + if (is_empty) { + head = __STREAM_T__(); + } else { + __STREAM_T__ elem(_data.front()); + _data.pop_front(); + head = elem; + } + return !is_empty; + } + + /// Nonblocking write + bool write_nb(const __STREAM_T__& tail) { + bool is_full = full(); + write(tail); + return !is_full; + } + + /// Fifo size + size_t size() { + return _data.size(); + } +}; + +template +class stream : public stream<__STREAM_T__, 0> { +public: + stream(){ + } +}; +} // namespace hls +#endif // __cplusplus +#endif // X_HLS_STREAM_SIM_H diff --git a/vitis/v2020_1/hls_tgamma_apfixed.h b/vitis/v2020_1/hls_tgamma_apfixed.h new file mode 100644 index 00000000..0318e8d9 --- /dev/null +++ b/vitis/v2020_1/hls_tgamma_apfixed.h @@ -0,0 +1,290 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_TGAMMA_APFIXED_H_ +#define _X_HLS_TGAMMA_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_sqrt_apfixed.h" +#include "hls_pow_apfixed.h" +#include "hls_log_apfixed.h" +#include "hls_hotbm_apfixed.h" +#include "hls_lgamma_apfixed.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_utils.h" +#include "utils/x_hls_traits.h" + +ap_fixed<20 + 52, 20> gamma_product_fixed (ap_ufixed<4 + 52, 4> x/*, double x_eps*/, ap_uint<3> n/*, double *eps*/); + +namespace tgamma_fixed { +template +int generic_isinf(T x) { + fp_struct fs = x; + int ret = ((fs.exp == fp_struct::EXP_INFNAN) && (fs.sig == 0x0)) ? 1 : 0; + return ret; +} + +template +int generic_isnan(T x) { + fp_struct fs = x; + int ret = ((fs.exp == fp_struct::EXP_INFNAN) && (fs.sig != 0x0)) ? 1 : 0; + return ret; +} + +template +double gamma_positive_fixed (ap_fixed x_fixed, int *exp2_adj) +{ +#pragma HLS pipeline + + double x = x_fixed.to_double(); + fp_struct xs(x); + ap_ufixed<8 + 52, 8> x_fix = 1; + x_fix(51,0) = xs.sig(51,0); + ap_uint<3> shl; + shl(2,0) = xs.exp(2,0); + shl++; + x_fix <<= shl; + + if ( xs.exp<126 ) + { + *exp2_adj = 0; + //return exp_reduce::exp(lgamma_fixed::lgamma_generic(x+1))/x; + ap_fixed x_1 = x_fixed+1; + double logx1 = exp_reduce::exp(lgamma_fixed::lgamma_generic(x_1)); + return logx1/x; + } + else if ( (xs.exp<127)||((xs.exp==127)&&(xs.sig[51]==0)) ) + { + *exp2_adj = 0; + //return exp_reduce::exp(lgamma_fixed::lgamma_generic(x)); + return exp_reduce::exp(lgamma_fixed::lgamma_generic(x_fixed)); + } + else if ( (xs.exp<129)||((xs.exp==129)&&(xs.sig(51,49)<5)) ) + { + *exp2_adj = 0; + ap_uint<4> nl; + nl(3,0) = x_fix(54,51); + nl -= 3; + ap_uint<3> n; + n(2,0) = nl(3,1); + ap_ufixed<2 + 52, 2> x_adj; + x_adj(51,0) = x_fix(51,0); + x_adj[52] = x_fix[51]; + x_adj[53] = ~x_fix[51]; + //double n = ceil(x-1.5); + //double x_adj = x-n; + //double eps; + double prod = gamma_product_fixed(x_adj/*,0*/,n/*,&eps*/); + //return (exp_reduce::exp(lgamma_fixed::lgamma_generic(double(x_adj)))*prod/**(1+eps)*/); + double rt = exp_reduce::exp(lgamma_fixed::lgamma_generic(x_adj)); + return (rt)*prod/**(1+eps)*/; + } + else + { + ap_ufixed<8 + 52, 8> x_adj = x_fix; + //double eps = 0; + //double x_eps = 0; + //double x_adj = x; + double prod = 1; + if ( (xs.exp<130)||((xs.exp==130)&&(xs.sig(51,50)<3)) ) + { + ap_uint<4> xi = x_fix(55,52); + ap_uint<3> n = 11-xi; + x_adj[52] = 1; + x_adj[53] = 1; + x_adj[54] = 0; + x_adj[55] = 1; + if (x_fix(51,0)==0) { + n++; + x_adj[52] = 0; + x_adj[53] = 0; + x_adj[54] = 1; + } + //double n = ceil(12-x); + //x_adj = x+n; + //x_eps = (x-(x_adj-n)); + prod = gamma_product_fixed(x_fix,n); + //prod = gamma_product(x_adj-n,x_eps,n,&eps); + } + ap_uint<8> x_adj_int; + x_adj_int(7,0) = x_adj(59,52) + x_adj[51]; + ap_fixed<1 - 1 + 52, 1 - 1> x_adj_frac; + x_adj_frac(51,0) = x_adj(51,0); + //double exp_adj = -eps; + //double x_adj_int = round(x_adj); + //double x_adj_frac = x_adj-x_adj_int; + ap_uint<3> x_adj_log2; + ap_ufixed<1 + 52, 1> x_adj_mant; +#pragma unroll + for ( ap_uint<3> pos = 6; pos >= 2; pos-- ) { + ap_uint<9> x_adj_hi; + x_adj_hi(8,0) = x_adj(53+pos,45+pos); + if ( x_adj_hi > 181 ) { + x_adj_log2 = pos; + x_adj_mant(52,0) = x_adj(53+pos,1+pos); + } + } + //int x_adj_log2; + //double x_adj_mant = frexp(x_adj,&x_adj_log2); + //if ( x_adj_mant x_sq =((ap_fixed<3 + 52, 3>(M_PI)<<1)/x_adj); + ap_ufixed<8 + 52, 8> x_adjn = -x_adj; + ///To improve accuracy exp2 + double ret_1 = ( pow_apfixed_reduce::pow(ap_ufixed<8 + 52, 8>(x_adj_mant),(x_adj)) \ + * exp_reduce::exp(ap_ufixed<65,33>(double(x_adj_log2*x_adj_frac))) \ + * exp_reduce::exp((x_adjn)) \ + * sqrt_fixed(x_sq) \ + \ + ); + double ret = ret_1 / prod; + //exp_adj += x_eps*log(x_adj); + const ap_fixed<1 - 3 + 52, 1 - 3> gamma_coeff[6] = { "0x1.5555555555555p-4", "-0xb.60b60b60b60b8p-12", "0x3.4034034034034p-12", + "-0x2.7027027027028p-12", "0x3.72a3c5631fe46p-12", "-0x7.daac36664f1f4p-12", + }; + ap_fixed<1 - 3 + 52, 1 - 3> bsum = gamma_coeff[5]; + ap_fixed<16 + 52, 16> x_adj2 = x_adj*x_adj; + for ( ap_uint<3> i = 1; i <= 5; i++ ) + bsum = bsum/x_adj2+gamma_coeff[5-i]; + ap_fixed<1 - 3 + 52, 1 - 3> exp_adj = bsum/x_adj; + //return ret+ret*exp_reduce_::expm1(double(exp_adj)); + double rout = exp_reduce::exp(exp_adj); + return ret*rout; + } +} + +template +ap_fixed tgamma_generic (ap_fixed x_fixed) +{ +#pragma HLS pipeline + + double x = x_fixed.to_double(); + fp_struct xs(x); + fp_struct out; + out.sign[0] = 0; + out.sig = 0; + out.exp = fp_struct::EXP_INFNAN; + + ap_ufixed<1 + 52, 1> x_sig = 1; + x_sig(51,0) = xs.sig(51,0); + int x_exp = xs.expv(); + if ( x_exp>0 ) x_sig <<= x_exp; + + if ( (xs.exp==0) || ((xs.sign[0])&(generic_isinf(x))) || (generic_isnan(x)) || ((xs.sign[0]==1)&&(x_exp>=0)&&(x_sig==0)) ) + { + out.sig = -1; + return out.to_ieee(); + } + if ( (generic_isinf(x)) || ((xs.sign[0]==0)&&((xs.exp>7)||((xs.exp==7)&&(xs.sig(51,47)>=11)))) ) + { + return out.to_ieee(); + } + else + { + double ret; + double rt; + if ( ~xs.sign[0] ) + { + int exp2_adj; + double tret = gamma_positive_fixed(x_fixed,&exp2_adj); + //ret = generic_scalbn(tret,exp2_adj);//To improve accuracy exp2 + rt = exp_reduce::exp(ap_fixed<65,0>(exp2_adj)); + ret = rt*tret; + } + // else if ( x>=-DBL_EPSILON/4 ) + // { + // out.sig = -1; + // return out.to_ieee(); + // } + else + { + fp_struct xs(x); + ap_ufixed<8 + 52, 8> x_fix = 1; + x_fix(51,0) = xs.sig(51,0); + ap_uint<3> shl; + shl(2,0) = xs.exp(2,0); + shl++; + x_fix <<= shl; + + //double tx = trunc(x); + if ( (xs.sign[0]==1)&&((xs.exp>7)||((xs.exp==7)&&(xs.sig(51,48)>=7))) ) + ret = 0; + else + { + ap_ufixed<0 + 52, 0> frac; + frac(51,0) = x_fix(51,0); + //double frac = tx-x; + if ( frac[51] ) + frac = 1-frac; + ap_fixed<64,32> hot1 = ((ap_fixed<2 + 52, 2>)M_PI*frac); + ap_fixed<64,32> hot2 = ((ap_fixed<2 + 52, 2>)M_PI*((ap_ufixed<0 + 52, 0>)0.5-frac)); + ap_fixed<64,4> sin1 = hotbm_apfixed::sinf_or_cosf(hot1,0,0); + ap_fixed<64,4> sin2 = hotbm_apfixed::sinf_or_cosf(hot2,1,0); + double sinpix = ((~frac[51])&(~frac[50])) ? sin1 : sin2; + int exp2_adj; + ap_fixed x_fixedn = -x_fixed; + double tret = M_PI/(-x*sinpix*gamma_positive_fixed(x_fixedn,&exp2_adj)); + //ret = generic_scalbn(tret,-exp2_adj);////To improve accuracy exp2 + rt = exp_reduce::exp(ap_fixed<65,0>(-exp2_adj)); + ret = rt*tret; + + } + } + return ap_fixed(ret); + } +} + + template + ap_ufixed tgamma_generic (ap_ufixed x) { + ap_fixed xf = x; + return tgamma_generic(xf); + } + template + ap_int tgamma_generic(ap_int x) { + ap_fixed xf = x; + return tgamma_generic(xf); + } + template + ap_uint tgamma_generic(ap_uint x) { + ap_fixed xf = x; + return tgamma_generic(xf); + } + + +}//tgamma_fixed + +#endif + + diff --git a/vitis/v2020_1/hls_x_complex.h b/vitis/v2020_1/hls_x_complex.h new file mode 100755 index 00000000..8054560c --- /dev/null +++ b/vitis/v2020_1/hls_x_complex.h @@ -0,0 +1,359 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_COMPLEX_H +#define X_HLS_COMPLEX_H + +#include "ap_fixed.h" +#include "utils/x_hls_defines.h" +#include "utils/std_complex_utils.h" +#include "utils/x_hls_traits.h" +#ifndef __SYNTHESIS__ +#include +#endif + +#pragma message("hls::x_complex library will be replaced in 2019.2 with a new implementation that does not provide automatic bit width expansion. Please avoid relying on this feature.") +namespace hls { + +/* +******************************************************************************* +* Vivado HLS complex data type +* ---------------------------- +* +* x_complex +* x_traits for x_complex +* set_to_one +* +******************************************************************************* +*/ + + +/* +******************************************************************************* +* Complex class +* +* This is used over std:: for the following reasons. +* 1. auto initializes all variables which forces an auto-initialization +* loop to be inserted for every declaration of an array of complex data +* 2. Using std:: as base class leads to compilation errors. +******************************************************************************* +*/ + + template class x_complex { + + private: + T re, im; + + public: + // Multiply return type + // o Only supports lhs and rhs of the same type + typedef x_complex< typename x_traits::MADD_T > MULT_RT; + + // Constructors + x_complex() {}; + x_complex(const T& r, const T& i) { re = r; im = i; }; + x_complex(const T& r) { re = r; im = 0; }; + + // Data access + inline T real() const { return(re); }; + inline T& real() { return(re); }; + inline void real(const T& r) { re = r; }; + inline T imag() const { return(im); }; + inline T& imag() { return(im); }; + inline void imag(const T& i) { im = i; }; + + // Operator = + inline x_complex& operator= (const T& rhs) { + re = rhs; im = 0; return *this; }; + template + inline x_complex& operator= (const x_complex& rhs) { + re = rhs.real(); im = rhs.imag(); return *this; }; + + // Operator *=, * + template + inline x_complex& operator*= (const T2& rhs) { + re *= rhs; im *= rhs; return *this; }; + template + inline x_complex& operator*= (const x_complex& rhs) { + T tmp1 = re*rhs.real(); + T tmp2 = im*rhs.imag(); + T tmp3 = re*rhs.imag(); + T tmp4 = im*rhs.real(); + re = tmp1 - tmp2; + im = tmp3 + tmp4; + return *this; }; + inline MULT_RT operator* (const x_complex& rhs) { + x_complex_mult_complex:; + typename x_traits::MULT_T m1, m2, m3, m4; + typename x_traits::MADD_T sum_re, sum_im; + MULT_RT res; + m1 = re*rhs.real(); + m2 = im*rhs.imag(); + m3 = re*rhs.imag(); + m4 = im*rhs.real(); + sum_re = m1 - m2; + sum_im = m3 + m4; + res.real(sum_re); + res.imag(sum_im); + return res; + }; + inline MULT_RT operator* (const T& rhs) { + x_complex_mult_real:; + typename x_traits::MULT_T m1, m2; + typename x_traits::MADD_T sum_re, sum_im; + MULT_RT res; + m1 = re*rhs; + m2 = im*rhs; + sum_re = m1; + sum_im = m2; + res.real(sum_re); + res.imag(sum_im); + return res; + }; + + // Operator /=, / + inline x_complex& operator/= (const T& rhs) {; + re /= rhs; im /= rhs; return *this; }; + inline x_complex operator/ (const T& rhs) { + x_complex tmp(*this); tmp /= rhs; return tmp; }; + inline x_complex& operator/= (const x_complex& rhs) { + // Complex division: + // Get conjugate of rhs + // a = *this x conjugate + // b = rhs x conjugate + // re = a.re / b.re + // im = a.im / b.re + x_complex conj = x_conj(rhs); + x_complex a = (*this)*conj; + x_complex b = conj*rhs; + re = a.real() / b.real(); + im = a.imag() / b.real(); + return *this; + }; + inline x_complex operator/ (const x_complex& rhs) { + x_complex tmp(*this); + tmp /= rhs; + return tmp; + }; + + // Operator +=, + + inline x_complex& operator+= (const T& rhs) { + re += rhs; return *this; }; + inline x_complex operator+= (const x_complex& rhs) { + re += rhs.real(); im += rhs.imag(); return *this; }; + template + inline x_complex operator+= (const x_complex& rhs) { + re += rhs.real(); im += rhs.imag(); return *this; }; + inline typename x_traits,x_complex >::ADD_T operator+ (const T& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + inline typename x_traits,x_complex >::ADD_T operator+ (const x_complex& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + + + // Operator -=, - + inline x_complex& operator-= (const T& rhs) { + re -= rhs; return *this; } + inline x_complex& operator-= (const x_complex& rhs) { + re -= rhs.real(); im -= rhs.imag(); return *this; }; + template + inline x_complex& operator-= (const x_complex& rhs) { + re -= rhs.real(); im -= rhs.imag(); return *this; }; + inline typename x_traits,x_complex >::ADD_T operator- (const T& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + inline typename x_traits,x_complex >::ADD_T operator- (const x_complex& rhs) { + typename x_traits,x_complex >::ADD_T tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + inline x_complex operator- () { + x_complex tmp(*this); + tmp.real(-real()); + tmp.imag(-imag()); + return tmp; + }; + +#ifndef __SYNTHESIS__ + // Operator << + friend std::ostream &operator<<(std::ostream &out, const x_complex &c) { + bool neg_imag = c.imag() <= -0 ? true : false; + T imag = neg_imag ? (T)-c.imag() : (T)c.imag(); + + out << c.real() << (neg_imag ? " - j*":" + j*") << imag; + return out; + } +#endif + + }; // x_complex + + // Non-member Operator ==, != for x_complex + template + inline bool operator== (const T& lhs, const x_complex& rhs) { + return (lhs == rhs.real()) && (0 == rhs.imag()); + } + template + inline bool operator== (const x_complex& lhs, const T& rhs) { + return (lhs.real() == rhs) && (lhs.imag() == 0); + } + template + inline bool operator== (const x_complex& lhs, const x_complex& rhs) { + return (lhs.real() == rhs.real()) && (lhs.imag() == rhs.imag()); + } + + template + inline bool operator!= (const T& lhs, const x_complex& rhs) { + return (lhs != rhs.real()) || (0 != rhs.imag()); + } + template + inline bool operator!= (const x_complex& lhs, const T& rhs) { + return (lhs.real() != rhs) || (lhs.imag() != 0); + } + template + inline bool operator!= (const x_complex& lhs, const x_complex& rhs) { + return (lhs.real() != rhs.real()) || (lhs.imag() != rhs.imag()); + } + + template typename x_complex::MULT_RT operator* (const T1& lhs, x_complex& rhs) { + return (rhs*lhs); // Flip direction and re-use complex class defined operator + } + + template + struct x_traits,x_complex > { + typedef x_complex ADD_T; + typedef x_complex SAT_T; + typedef x_complex MULT_T; + typedef x_complex MADD_T; + typedef x_complex INT_T; + typedef x_complex > FLOAT_STRUCT_T; + }; + +#define X_COMPLEX_MAX(a, b) ((a) > (b) ? (a) : (b)) + + template + struct x_traits >,x_complex > > { + typedef x_complex > ADD_T; + typedef x_complex > SAT_T; + typedef x_complex > MULT_T; + typedef x_complex > MADD_T; + typedef x_complex > CONJ_SQ_T; + typedef x_complex INT_T; + typedef x_complex > FLOAT_STRUCT_T; + }; + + template + struct x_traits >,x_complex > > { + typedef x_complex > ADD_T; + typedef x_complex > SAT_T; + typedef x_complex > MULT_T; + typedef x_complex > MADD_T; + typedef x_complex > CONJ_SQ_T; + typedef x_complex INT_T; + typedef x_complex > FLOAT_STRUCT_T; + }; + +#undef X_COMPLEX_MAX + + template + struct x_traits_d ,DIM> { + typedef x_complex ACCUM_T; + typedef x_complex ACCUM2_T; + typedef x_complex > ADD_TREE_T; + }; + + template + struct x_traits_d >,DIM> { + typedef x_complex::Value,I+BitWidth::Value> > ACCUM_T; + typedef x_complex::Value,(2*I)+BitWidth::Value> > ACCUM2_T; + }; + + + + template x_complex x_neg(x_complex &din) { + x_complex tmp; + tmp.real(-din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + + template typename x_traits::MADD_T x_conj_sq(x_complex &din) { + x_conj_sq_complex:; + return ( (din.real()*din.real()) + (din.imag()*din.imag())); + } + + + template x_complex x_conj(const x_complex &din) { + x_conj_complex:; + x_complex tmp; + tmp.real(din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + // This function is called when a non-const x_complex is conjugated. It calls the + // version of x_conj() which takes a constant parameter + template x_complex x_conj(x_complex &din) { + const x_complex tmp = din; + return(x_conj(tmp)); + } + + template void set_to_one(x_complex > &a) { + ap_int tmp_sat = ((ap_int)1<<(W-I)) - 1; + ap_fixed tmp; + tmp.range() = tmp_sat; + a = tmp; + } + + template T x_real(const x_complex &din) { + return(din.real()); + } + template T x_imag(const x_complex &din) { + return(din.imag()); + } + +} // end namespace hls + +#endif + + + diff --git a/vitis/v2020_1/hlsgraph.h b/vitis/v2020_1/hlsgraph.h new file mode 100644 index 00000000..1f5fd6b4 --- /dev/null +++ b/vitis/v2020_1/hlsgraph.h @@ -0,0 +1,54 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hlsgraph.h + * @brief Top-level header for HLS graph library. + */ + +#ifndef _X_HLSGRAPH_H_ +#define _X_HLSGRAPH_H_ + +// shared infrastructure +//#include "hls_db/types.h" +#include "hlsgraph/utils.h" + +// function modules +#include "hlsgraph/PageRank.h" +#include "hlsgraph/ConnectedComponents.h" + +#endif // ifndef _X_HLSGRAPH_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/hlsgraph/ConnectedComponents.h b/vitis/v2020_1/hlsgraph/ConnectedComponents.h new file mode 100644 index 00000000..b631946f --- /dev/null +++ b/vitis/v2020_1/hlsgraph/ConnectedComponents.h @@ -0,0 +1,60 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file ConnectedComponent.h + * @brief Connected Component function implementation. + * + * This file is part of HLS graph library. + */ + +#ifndef _X_HLSGRAPH_H_ +#error \ + "hlsgraph/ConnectedComponent.h should not be inlcuded directly, use top-level hlsgraph.h instead!" +#endif + +// ConnectedComponent.h +#ifndef _X_HLSGRAPH_CONNECTEDCOMPONENT_H_ +#define _X_HLSGRAPH_CONNECTEDCOMPONENT_H_ + +namespace hlsgraph { + +void ConnectedComponent( + edge_t edges[NUM_EDGES], // a set of non-directional edges between edges[e].src and edges[e].dst + unsigned int comp_out[NUM_VERTICES] // pagerank output +) + +} // namespace hlsgraph + +#endif // ifndef _HLSGRAPH_CONNECTEDCOMPONENT_H_ + + diff --git a/vitis/v2020_1/hlsgraph/PageRank.h b/vitis/v2020_1/hlsgraph/PageRank.h new file mode 100644 index 00000000..2fb7e831 --- /dev/null +++ b/vitis/v2020_1/hlsgraph/PageRank.h @@ -0,0 +1,65 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file PageRank.h + * @brief PageRank function implementation. + * + * This file is part of HLS graph library. + */ + +#ifndef _X_HLSGRAPH_H_ +#error \ + "hlsgraph/PageRank.h should not be inlcuded directly, use top-level hlsgraph.h instead!" +#endif + +// PageRank.h +#ifndef _X_HLSGRAPH_PAGERANK_H_ +#define _X_HLSGRAPH_PAGERANK_H_ + +#define ALPHA 0.85 // default alpha, the pagerank damping factor +#define CONVERGENCE 0.00001 // default convergence +#define MAX_ITERATIONS 10000 // default max iterations +#define SOURCE 0 // source vertex for a personalized PageRank + +namespace hlsgraph { + +void PageRank( + edge_t edges[NUM_EDGES], // a set of directional edges from edges[e].src to edges[e].dst + double pr_out[NUM_VERTICES] // pagerank output +); + +} // namespace hlsgraph + +#endif // ifndef _HLSGRAPH_PAGERANK_H_ + + diff --git a/vitis/v2020_1/hlsgraph/utils.h b/vitis/v2020_1/hlsgraph/utils.h new file mode 100644 index 00000000..8c292129 --- /dev/null +++ b/vitis/v2020_1/hlsgraph/utils.h @@ -0,0 +1,62 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file utils.h + * @brief This file is part of HLS graph library, contains utilities. + */ + +#ifndef _X_HLSGRAPH_H_ +#error "hlsgraph/utils.h should not be inlcuded directly, use top-level hlsgraph.h instead!" +#endif + +#ifndef _X_HLSGRAPH_UTILS_H_ +#define _X_HLSGRAPH_UTILS_H_ + +#define NUM_VERTICES 5 +#define NUM_EDGES 5 + +namespace hlsgraph { + +struct edge_t { + unsigned int src; + unsigned int dst; +}; + +} // namespace hlsgraph + +#endif // ifndef _HLSGRAPH_PAGERANK_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2020_1/mpfr.h b/vitis/v2020_1/mpfr.h new file mode 100644 index 00000000..c12955a2 --- /dev/null +++ b/vitis/v2020_1/mpfr.h @@ -0,0 +1,945 @@ +/* mpfr.h -- Include file for mpfr. + +Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Contributed by the Arenaire and Cacao projects, INRIA. + +This file is part of the GNU MPFR Library. + +The GNU MPFR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The GNU MPFR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see +http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef __MPFR_H +#define __MPFR_H + +/* Define MPFR version number */ +#define MPFR_VERSION_MAJOR 3 +#define MPFR_VERSION_MINOR 0 +#define MPFR_VERSION_PATCHLEVEL 1 +#define MPFR_VERSION_STRING "3.0.1-p4" + +/* Macros dealing with MPFR VERSION */ +#define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +#define MPFR_VERSION \ +MPFR_VERSION_NUM(MPFR_VERSION_MAJOR,MPFR_VERSION_MINOR,MPFR_VERSION_PATCHLEVEL) + +/* Check if GMP is included, and try to include it (Works with local GMP) */ +#ifndef __GMP_H__ +# include "gmp.h" +#endif + +/* Check if stdio.h is included or if the user wants FILE */ +#if defined (_GMP_H_HAVE_FILE) || defined (MPFR_USE_FILE) +# define _MPFR_H_HAVE_FILE 1 +#endif + +#if defined (_GMP_H_HAVE_VA_LIST) +# define _MPFR_H_HAVE_VA_LIST 1 +#endif + +/* Check if / is included or if the user + explicitly wants intmax_t. Automatical detection is done by + checking: + - INTMAX_C and UINTMAX_C, but not if the compiler is a C++ one + (as suggested by Patrick Pelissier) because the test does not + work well in this case. See: + http://websympa.loria.fr/wwsympa/arc/mpfr/2010-02/msg00025.html + We do not check INTMAX_MAX and UINTMAX_MAX because under Solaris, + these macros are always defined by (i.e. even when + and are not included). + - _STDINT_H (defined by the glibc) and _STDINT_H_ (defined under + Mac OS X), but this test may not work with all implementations. + Portable software should not rely on these tests. +*/ +#if (defined (INTMAX_C) && defined (UINTMAX_C) && !defined(__cplusplus)) || \ + defined (MPFR_USE_INTMAX_T) || defined (_STDINT_H) || defined (_STDINT_H_) +# define _MPFR_H_HAVE_INTMAX_T 1 +#endif + +/* Avoid some problems with macro expansion if the user defines macros + with the same name as keywords. By convention, identifiers and macro + names starting with mpfr_ are reserved by MPFR. */ +typedef void mpfr_void; +typedef int mpfr_int; +typedef unsigned int mpfr_uint; +typedef long mpfr_long; +typedef unsigned long mpfr_ulong; +typedef size_t mpfr_size_t; + +/* Definition of rounding modes (DON'T USE MPFR_RNDNA!). + Warning! Changing the contents of this enum should be seen as an + interface change since the old and the new types are not compatible + (the integer type compatible with the enumerated type can even change, + see ISO C99, 6.7.2.2#4), and in Makefile.am, AGE should be set to 0. + + MPFR_RNDU must appear just before MPFR_RNDD (see + MPFR_IS_RNDUTEST_OR_RNDDNOTTEST in mpfr-impl.h). + + MPFR_RNDF has been added, though not implemented yet, in order to avoid + to break the ABI once faithful rounding gets implemented. + + If you change the order of the rounding modes, please update the routines + in texceptions.c which assume 0=RNDN, 1=RNDZ, 2=RNDU, 3=RNDD, 4=RNDA. +*/ +typedef enum { + MPFR_RNDN=0, /* round to nearest, with ties to even */ + MPFR_RNDZ, /* round toward zero */ + MPFR_RNDU, /* round toward +Inf */ + MPFR_RNDD, /* round toward -Inf */ + MPFR_RNDA, /* round away from zero */ + MPFR_RNDF, /* faithful rounding (not implemented yet) */ + MPFR_RNDNA=-1 /* round to nearest, with ties away from zero (mpfr_round) */ +} mpfr_rnd_t; + +/* kept for compatibility with MPFR 2.4.x and before */ +#define GMP_RNDN MPFR_RNDN +#define GMP_RNDZ MPFR_RNDZ +#define GMP_RNDU MPFR_RNDU +#define GMP_RNDD MPFR_RNDD + +/* Define precision : 1 (short), 2 (int) or 3 (long) (DON'T USE IT!)*/ +#ifndef _MPFR_PREC_FORMAT +# if __GMP_MP_SIZE_T_INT == 1 +# define _MPFR_PREC_FORMAT 2 +# else +# define _MPFR_PREC_FORMAT 3 +# endif +#endif + +/* Let's make mpfr_prec_t signed in order to avoid problems due to the + usual arithmetic conversions when mixing mpfr_prec_t and mpfr_exp_t + in an expression (for error analysis) if casts are forgotten. */ +#if _MPFR_PREC_FORMAT == 1 +typedef short mpfr_prec_t; +typedef unsigned short mpfr_uprec_t; +#elif _MPFR_PREC_FORMAT == 2 +typedef int mpfr_prec_t; +typedef unsigned int mpfr_uprec_t; +#elif _MPFR_PREC_FORMAT == 3 +typedef long mpfr_prec_t; +typedef unsigned long mpfr_uprec_t; +#else +# error "Invalid MPFR Prec format" +#endif + +/* Definition of precision limits without needing */ +/* Note: the casts allows the expression to yield the wanted behavior + for _MPFR_PREC_FORMAT == 1 (due to integer promotion rules). */ +#define MPFR_PREC_MIN 2 +#define MPFR_PREC_MAX ((mpfr_prec_t)((mpfr_uprec_t)(~(mpfr_uprec_t)0)>>1)) + +/* Definition of sign */ +typedef int mpfr_sign_t; + +/* Definition of the exponent: same as in GMP. */ +typedef mp_exp_t mpfr_exp_t; + +/* Definition of the standard exponent limits */ +#define MPFR_EMAX_DEFAULT ((mpfr_exp_t) (((mpfr_ulong) 1 << 30) - 1)) +#define MPFR_EMIN_DEFAULT (-(MPFR_EMAX_DEFAULT)) + +/* Definition of the main structure */ +typedef struct { + mpfr_prec_t _mpfr_prec; + mpfr_sign_t _mpfr_sign; + mpfr_exp_t _mpfr_exp; + mp_limb_t *_mpfr_d; +} __mpfr_struct; + +/* Compatibility with previous types of MPFR */ +#ifndef mp_rnd_t +# define mp_rnd_t mpfr_rnd_t +#endif +#ifndef mp_prec_t +# define mp_prec_t mpfr_prec_t +#endif + +/* + The represented number is + _sign*(_d[k-1]/B+_d[k-2]/B^2+...+_d[0]/B^k)*2^_exp + where k=ceil(_mp_prec/GMP_NUMB_BITS) and B=2^GMP_NUMB_BITS. + + For the msb (most significant bit) normalized representation, we must have + _d[k-1]>=B/2, unless the number is singular. + + We must also have the last k*GMP_NUMB_BITS-_prec bits set to zero. +*/ + +typedef __mpfr_struct mpfr_t[1]; +typedef __mpfr_struct *mpfr_ptr; +typedef __gmp_const __mpfr_struct *mpfr_srcptr; + +/* For those who need a direct and fast access to the sign field. + However it is not in the API, thus use it at your own risk: it might + not be supported, or change name, in further versions! + Unfortunately, it must be defined here (instead of MPFR's internal + header file mpfr-impl.h) because it is used by some macros below. +*/ +#define MPFR_SIGN(x) ((x)->_mpfr_sign) + +/* Stack interface */ +typedef enum { + MPFR_NAN_KIND = 0, + MPFR_INF_KIND = 1, MPFR_ZERO_KIND = 2, MPFR_REGULAR_KIND = 3 +} mpfr_kind_t; + +/* GMP defines: + + size_t: Standard size_t + + __GMP_ATTRIBUTE_PURE Attribute for math functions. + + __GMP_NOTHROW For C++: can't throw . + + __GMP_EXTERN_INLINE Attribute for inline function. + * __gmp_const const (Supports for K&R compiler only for mpfr.h). + + __GMP_DECLSPEC_EXPORT compiling to go into a DLL + + __GMP_DECLSPEC_IMPORT compiling to go into a application +*/ +/* Extra MPFR defines */ +#define __MPFR_SENTINEL_ATTR +#if defined (__GNUC__) +# if __GNUC__ >= 4 +# undef __MPFR_SENTINEL_ATTR +# define __MPFR_SENTINEL_ATTR __attribute__ ((sentinel)) +# endif +#endif + +/* Prototypes: Support of K&R compiler */ +#if defined (__GMP_PROTO) +# define _MPFR_PROTO __GMP_PROTO +#elif defined (__STDC__) || defined (__cplusplus) +# define _MPFR_PROTO(x) x +#else +# define _MPFR_PROTO(x) () +#endif +/* Support for WINDOWS Dll: + Check if we are inside a MPFR build, and if so export the functions. + Otherwise does the same thing as GMP */ +#if defined(__MPFR_WITHIN_MPFR) && __GMP_LIBGMP_DLL +# define __MPFR_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +# define __MPFR_DECLSPEC __GMP_DECLSPEC +#endif + +/* Note: In order to be declared, some functions need a specific + system header to be included *before* "mpfr.h". If the user + forgets to include the header, the MPFR function prototype in + the user object file is not correct. To avoid wrong results, + we raise a linker error in that case by changing their internal + name in the library (prefixed by __gmpfr instead of mpfr). See + the lines of the form "#define mpfr_xxx __gmpfr_xxx" below. */ + +#if defined (__cplusplus) +extern "C" { +#endif + +__MPFR_DECLSPEC __gmp_const char * mpfr_get_version _MPFR_PROTO ((void)); +__MPFR_DECLSPEC __gmp_const char * mpfr_get_patches _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_buildopt_tls_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_buildopt_decimal_p _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_set_emin _MPFR_PROTO ((mpfr_exp_t)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_min _MPFR_PROTO ((void)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_max _MPFR_PROTO ((void)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_set_emax _MPFR_PROTO ((mpfr_exp_t)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_min _MPFR_PROTO ((void)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_max _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC void mpfr_set_default_rounding_mode _MPFR_PROTO((mpfr_rnd_t)); +__MPFR_DECLSPEC mpfr_rnd_t mpfr_get_default_rounding_mode _MPFR_PROTO((void)); +__MPFR_DECLSPEC __gmp_const char * + mpfr_print_rnd_mode _MPFR_PROTO((mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_clear_flags _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_underflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_overflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_nanflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_inexflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_erangeflag _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC void mpfr_set_underflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_overflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_nanflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_inexflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_erangeflag _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC int mpfr_underflow_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_overflow_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_nanflag_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_inexflag_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_erangeflag_p _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC int + mpfr_check_range _MPFR_PROTO ((mpfr_ptr, int, mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_init2 _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_init _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_clear _MPFR_PROTO ((mpfr_ptr)); + +__MPFR_DECLSPEC void + mpfr_inits2 _MPFR_PROTO ((mpfr_prec_t, mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR; +__MPFR_DECLSPEC void + mpfr_inits _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR; +__MPFR_DECLSPEC void + mpfr_clears _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR; + +__MPFR_DECLSPEC int + mpfr_prec_round _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_can_round _MPFR_PROTO ((mpfr_srcptr, mpfr_exp_t, mpfr_rnd_t, mpfr_rnd_t, + mpfr_prec_t)); +__MPFR_DECLSPEC mpfr_prec_t mpfr_min_prec _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_exp _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_set_exp _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t)); +__MPFR_DECLSPEC mpfr_prec_t mpfr_get_prec _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC void mpfr_set_prec _MPFR_PROTO((mpfr_ptr, mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_set_prec_raw _MPFR_PROTO((mpfr_ptr, mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_set_default_prec _MPFR_PROTO((mpfr_prec_t)); +__MPFR_DECLSPEC mpfr_prec_t mpfr_get_default_prec _MPFR_PROTO((void)); + +__MPFR_DECLSPEC int mpfr_set_d _MPFR_PROTO ((mpfr_ptr, double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_set_flt _MPFR_PROTO ((mpfr_ptr, float, mpfr_rnd_t)); +#ifdef MPFR_WANT_DECIMAL_FLOATS +__MPFR_DECLSPEC int mpfr_set_decimal64 _MPFR_PROTO ((mpfr_ptr, _Decimal64, + mpfr_rnd_t)); +#endif +__MPFR_DECLSPEC int + mpfr_set_ld _MPFR_PROTO ((mpfr_ptr, long double, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_z _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_z_2exp _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_exp_t, mpfr_rnd_t)); +__MPFR_DECLSPEC void mpfr_set_nan _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_set_inf _MPFR_PROTO ((mpfr_ptr, int)); +__MPFR_DECLSPEC void mpfr_set_zero _MPFR_PROTO ((mpfr_ptr, int)); +__MPFR_DECLSPEC int + mpfr_set_f _MPFR_PROTO ((mpfr_ptr, mpf_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_get_f _MPFR_PROTO ((mpf_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_set_si _MPFR_PROTO ((mpfr_ptr, long, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_si_2exp _MPFR_PROTO ((mpfr_ptr, long, mpfr_exp_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_ui_2exp _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_exp_t,mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_q _MPFR_PROTO ((mpfr_ptr, mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_init_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, + mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set4 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t, int)); +__MPFR_DECLSPEC int + mpfr_abs _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_neg _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_signbit _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int + mpfr_setsign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, int, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_copysign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t)); + +#ifdef _MPFR_H_HAVE_INTMAX_T +#define mpfr_set_sj __gmpfr_set_sj +#define mpfr_set_sj_2exp __gmpfr_set_sj_2exp +#define mpfr_set_uj __gmpfr_set_uj +#define mpfr_set_uj_2exp __gmpfr_set_uj_2exp +#define mpfr_get_sj __gmpfr_mpfr_get_sj +#define mpfr_get_uj __gmpfr_mpfr_get_uj +__MPFR_DECLSPEC int mpfr_set_sj _MPFR_PROTO ((mpfr_t, intmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_sj_2exp _MPFR_PROTO ((mpfr_t, intmax_t, intmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_set_uj _MPFR_PROTO ((mpfr_t, uintmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_uj_2exp _MPFR_PROTO ((mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC intmax_t mpfr_get_sj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC uintmax_t mpfr_get_uj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +#endif + +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_z_2exp _MPFR_PROTO ((mpz_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC float mpfr_get_flt _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC double mpfr_get_d _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +#ifdef MPFR_WANT_DECIMAL_FLOATS +__MPFR_DECLSPEC _Decimal64 mpfr_get_decimal64 _MPFR_PROTO ((mpfr_srcptr, + mpfr_rnd_t)); +#endif +__MPFR_DECLSPEC long double mpfr_get_ld _MPFR_PROTO ((mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC double mpfr_get_d1 _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC double mpfr_get_d_2exp _MPFR_PROTO ((long*, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC long double mpfr_get_ld_2exp _MPFR_PROTO ((long*, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC long mpfr_get_si _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC unsigned long mpfr_get_ui _MPFR_PROTO ((mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC char*mpfr_get_str _MPFR_PROTO ((char*, mpfr_exp_t*, int, size_t, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_get_z _MPFR_PROTO ((mpz_ptr z, mpfr_srcptr f, + mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_free_str _MPFR_PROTO ((char *)); + +__MPFR_DECLSPEC int mpfr_urandom _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_urandomb _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t)); + +__MPFR_DECLSPEC void mpfr_nextabove _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_nextbelow _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_nexttoward _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr)); + +#ifdef _MPFR_H_HAVE_FILE +#define mpfr_inp_str __gmpfr_inp_str +#define mpfr_out_str __gmpfr_out_str +__MPFR_DECLSPEC size_t mpfr_inp_str _MPFR_PROTO ((mpfr_ptr, FILE*, int, + mpfr_rnd_t)); +__MPFR_DECLSPEC size_t mpfr_out_str _MPFR_PROTO ((FILE*, int, size_t, + mpfr_srcptr, mpfr_rnd_t)); +#define mpfr_fprintf __gmpfr_fprintf +__MPFR_DECLSPEC int mpfr_fprintf _MPFR_PROTO ((FILE*, __gmp_const char*, + ...)); +#endif +__MPFR_DECLSPEC int mpfr_printf _MPFR_PROTO ((__gmp_const char*, ...)); +__MPFR_DECLSPEC int mpfr_asprintf _MPFR_PROTO ((char**, __gmp_const char*, + ...)); +__MPFR_DECLSPEC int mpfr_sprintf _MPFR_PROTO ((char*, __gmp_const char*, + ...)); +__MPFR_DECLSPEC int mpfr_snprintf _MPFR_PROTO ((char*, size_t, + __gmp_const char*, ...)); + +#ifdef _MPFR_H_HAVE_VA_LIST +#ifdef _MPFR_H_HAVE_FILE +#define mpfr_vfprintf __gmpfr_vfprintf +__MPFR_DECLSPEC int mpfr_vfprintf _MPFR_PROTO ((FILE*, __gmp_const char*, + va_list)); +#endif /* _MPFR_H_HAVE_FILE */ +#define mpfr_vprintf __gmpfr_vprintf +#define mpfr_vasprintf __gmpfr_vasprintf +#define mpfr_vsprintf __gmpfr_vsprintf +#define mpfr_vsnprintf __gmpfr_vsnprintf +__MPFR_DECLSPEC int mpfr_vprintf _MPFR_PROTO ((__gmp_const char*, va_list)); +__MPFR_DECLSPEC int mpfr_vasprintf _MPFR_PROTO ((char**, __gmp_const char*, + va_list)); +__MPFR_DECLSPEC int mpfr_vsprintf _MPFR_PROTO ((char*, __gmp_const char*, + va_list)); +__MPFR_DECLSPEC int mpfr_vsnprintf _MPFR_PROTO ((char*, size_t, + __gmp_const char*, va_list)); +#endif /* _MPFR_H_HAVE_VA_LIST */ + +__MPFR_DECLSPEC int mpfr_pow _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_pow_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_pow_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_pow_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int, + unsigned long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_pow _MPFR_PROTO ((mpfr_ptr, unsigned long int, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_pow_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sqrt_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rec_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_sub _MPFR_PROTO ((mpfr_ptr, unsigned long, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_div _MPFR_PROTO ((mpfr_ptr, unsigned long, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_si_sub _MPFR_PROTO ((mpfr_ptr, long int, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_si_div _MPFR_PROTO ((mpfr_ptr, long int, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_d_sub _MPFR_PROTO ((mpfr_ptr, double, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_d_div _MPFR_PROTO ((mpfr_ptr, double, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_sqr _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_const_pi _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_const_log2 _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_const_euler _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_const_catalan _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_agm _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_log _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_log2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_log10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_log1p _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_exp2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_exp10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_expm1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_eint _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_li2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_cmp _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_cmp3 _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr, int)); +__MPFR_DECLSPEC int mpfr_cmp_d _MPFR_PROTO ((mpfr_srcptr, double)); +__MPFR_DECLSPEC int mpfr_cmp_ld _MPFR_PROTO ((mpfr_srcptr, long double)); +__MPFR_DECLSPEC int mpfr_cmpabs _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_cmp_ui _MPFR_PROTO ((mpfr_srcptr, unsigned long)); +__MPFR_DECLSPEC int mpfr_cmp_si _MPFR_PROTO ((mpfr_srcptr, long)); +__MPFR_DECLSPEC int mpfr_cmp_ui_2exp _MPFR_PROTO ((mpfr_srcptr, unsigned long, + mpfr_exp_t)); +__MPFR_DECLSPEC int mpfr_cmp_si_2exp _MPFR_PROTO ((mpfr_srcptr, long, + mpfr_exp_t)); +__MPFR_DECLSPEC void mpfr_reldiff _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_eq _MPFR_PROTO((mpfr_srcptr, mpfr_srcptr, + unsigned long)); +__MPFR_DECLSPEC int mpfr_sgn _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_mul_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_rint _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_round _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_trunc _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_ceil _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_floor _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_rint_round _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rint_trunc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rint_ceil _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rint_floor _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_frac _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_modf _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_remquo _MPFR_PROTO ((mpfr_ptr, long*, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_remainder _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fmod _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_fits_ulong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_slong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_uint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_sint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_ushort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_sshort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_uintmax_p _MPFR_PROTO((mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_intmax_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_extract _MPFR_PROTO ((mpz_ptr, mpfr_srcptr, + unsigned int)); +__MPFR_DECLSPEC void mpfr_swap _MPFR_PROTO ((mpfr_ptr, mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_dump _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_nan_p _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_inf_p _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_number_p _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_integer_p _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_zero_p _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_regular_p _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_greater_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_greaterequal_p _MPFR_PROTO ((mpfr_srcptr, + mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_less_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_lessequal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_lessgreater_p _MPFR_PROTO((mpfr_srcptr,mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_equal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_unordered_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_atanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_acosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_asinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_tanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sinh_cosh _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_sech _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_csch _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_coth _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_acos _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_asin _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_atan _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sin _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sin_cos _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cos _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_tan _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_atan2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sec _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_csc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_hypot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_erf _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_erfc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cbrt _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_root _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,unsigned long,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_gamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_lngamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_lgamma _MPFR_PROTO((mpfr_ptr,int*,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_digamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_zeta _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_zeta_ui _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fac_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_j0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_j1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_jn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_y0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_y1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_yn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_ai _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_min _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_max _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_dim _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_mul_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_add_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cmp_z _MPFR_PROTO ((mpfr_srcptr, mpz_srcptr)); + +__MPFR_DECLSPEC int mpfr_mul_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_add_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cmp_q _MPFR_PROTO ((mpfr_srcptr, mpq_srcptr)); + +__MPFR_DECLSPEC int mpfr_cmp_f _MPFR_PROTO ((mpfr_srcptr, mpf_srcptr)); + +__MPFR_DECLSPEC int mpfr_fma _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fms _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sum _MPFR_PROTO ((mpfr_ptr, mpfr_ptr *__gmp_const, + unsigned long, mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_free_cache _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC int mpfr_subnormalize _MPFR_PROTO ((mpfr_ptr, int, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_strtofr _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, + char **, int, mpfr_rnd_t)); + +__MPFR_DECLSPEC size_t mpfr_custom_get_size _MPFR_PROTO ((mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_custom_init _MPFR_PROTO ((void *, mpfr_prec_t)); +__MPFR_DECLSPEC void * mpfr_custom_get_significand _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_custom_get_exp _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC void mpfr_custom_move _MPFR_PROTO ((mpfr_ptr, void *)); +__MPFR_DECLSPEC void mpfr_custom_init_set _MPFR_PROTO ((mpfr_ptr, int, + mpfr_exp_t, mpfr_prec_t, void *)); +__MPFR_DECLSPEC int mpfr_custom_get_kind _MPFR_PROTO ((mpfr_srcptr)); + +#if defined (__cplusplus) +} +#endif + +/* DON'T USE THIS! (For MPFR-public macros only, see below.) + The mpfr_sgn macro uses the fact that __MPFR_EXP_NAN and __MPFR_EXP_ZERO + are the smallest values. + FIXME: In the following macros, the cast of an unsigned type with MSB set + to the signed type mpfr_exp_t yields an integer overflow, which can give + unexpected results with future compilers and aggressive optimisations. + Why not working only with signed types, using INT_MIN and LONG_MIN? */ +#if __GMP_MP_SIZE_T_INT +#define __MPFR_EXP_NAN ((mpfr_exp_t)((~((~(mpfr_uint)0)>>1))+2)) +#define __MPFR_EXP_ZERO ((mpfr_exp_t)((~((~(mpfr_uint)0)>>1))+1)) +#define __MPFR_EXP_INF ((mpfr_exp_t)((~((~(mpfr_uint)0)>>1))+3)) +#else +#define __MPFR_EXP_NAN ((mpfr_exp_t)((~((~(mpfr_ulong)0)>>1))+2)) +#define __MPFR_EXP_ZERO ((mpfr_exp_t)((~((~(mpfr_ulong)0)>>1))+1)) +#define __MPFR_EXP_INF ((mpfr_exp_t)((~((~(mpfr_ulong)0)>>1))+3)) +#endif + +/* Define MPFR_USE_EXTENSION to avoid "gcc -pedantic" warnings. */ +#ifndef MPFR_EXTENSION +# if defined(MPFR_USE_EXTENSION) +# define MPFR_EXTENSION __extension__ +# else +# define MPFR_EXTENSION +# endif +#endif + +/* Warning! This macro doesn't work with K&R C (e.g., compare the "gcc -E" + output with and without -traditional) and shouldn't be used internally. + For public use only, but see the MPFR manual. */ +#define MPFR_DECL_INIT(_x, _p) \ + MPFR_EXTENSION mp_limb_t __gmpfr_local_tab_##_x[((_p)-1)/GMP_NUMB_BITS+1]; \ + MPFR_EXTENSION mpfr_t _x = {{(_p),1,__MPFR_EXP_NAN,__gmpfr_local_tab_##_x}} + +/* Fast access macros to replace function interface. + If the USER don't want to use the macro interface, let him make happy + even if it produces faster and smaller code. */ +#ifndef MPFR_USE_NO_MACRO + +/* Inlining theses functions is both faster and smaller */ +#define mpfr_nan_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_NAN) +#define mpfr_inf_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_INF) +#define mpfr_zero_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_ZERO) +#define mpfr_regular_p(_x) ((_x)->_mpfr_exp > __MPFR_EXP_INF) +#define mpfr_sgn(_x) \ + ((_x)->_mpfr_exp < __MPFR_EXP_INF ? \ + (mpfr_nan_p (_x) ? mpfr_set_erangeflag () : (mpfr_void) 0), 0 : \ + MPFR_SIGN (_x)) + +/* Prevent them from using as lvalues */ +#define MPFR_VALUE_OF(x) (0 ? (x) : (x)) +#define mpfr_get_prec(_x) MPFR_VALUE_OF((_x)->_mpfr_prec) +#define mpfr_get_exp(_x) MPFR_VALUE_OF((_x)->_mpfr_exp) +/* Note: if need be, the MPFR_VALUE_OF can be used for other expressions + (of any type). Thanks to Wojtek Lerch and Tim Rentsch for the idea. */ + +#define mpfr_round(a,b) mpfr_rint((a), (b), MPFR_RNDNA) +#define mpfr_trunc(a,b) mpfr_rint((a), (b), MPFR_RNDZ) +#define mpfr_ceil(a,b) mpfr_rint((a), (b), MPFR_RNDU) +#define mpfr_floor(a,b) mpfr_rint((a), (b), MPFR_RNDD) + +#define mpfr_cmp_ui(b,i) mpfr_cmp_ui_2exp((b),(i),0) +#define mpfr_cmp_si(b,i) mpfr_cmp_si_2exp((b),(i),0) +#define mpfr_set(a,b,r) mpfr_set4(a,b,r,MPFR_SIGN(b)) +#define mpfr_abs(a,b,r) mpfr_set4(a,b,r,1) +#define mpfr_copysign(a,b,c,r) mpfr_set4(a,b,r,MPFR_SIGN(c)) +#define mpfr_setsign(a,b,s,r) mpfr_set4(a,b,r,(s) ? -1 : 1) +#define mpfr_signbit(x) (MPFR_SIGN(x) < 0) +#define mpfr_cmp(b, c) mpfr_cmp3(b, c, 1) +#define mpfr_mul_2exp(y,x,n,r) mpfr_mul_2ui((y),(x),(n),(r)) +#define mpfr_div_2exp(y,x,n,r) mpfr_div_2ui((y),(x),(n),(r)) + + +/* When using GCC, optimize certain common comparisons and affectations. + + Remove ICC since it defines __GNUC__ but produces a + huge number of warnings if you use this code. + VL: I couldn't reproduce a single warning when enabling these macros + with icc 10.1 20080212 on Itanium. But with this version, __ICC isn't + defined (__INTEL_COMPILER is, though), so that these macros are enabled + anyway. Checking with other ICC versions is needed. Possibly detect + whether warnings are produced or not with a configure test. + + Remove C++ too, since it complains too much. */ +/* Added casts to improve robustness in case of undefined behavior and + compiler extensions based on UB (in particular -fwrapv). MPFR doesn't + use such extensions, but these macros will be used by 3rd-party code, + where such extensions may be required. + Moreover casts to unsigned long have been added to avoid warnings in + programs that use MPFR and are compiled with -Wconversion; such casts + are OK since if X is a constant expression, then (unsigned long) X is + also a constant expression, so that the optimizations still work. The + warnings are probably related to the following two bugs: + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210 + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38470 (possibly a variant) + and the casts could be removed once these bugs are fixed. + Casts shouldn't be used on the generic calls (to the ..._2exp functions), + where implicit conversions are performed. Indeed, having at least one + implicit conversion in the macro allows the compiler to emit diagnostics + when normally expected, for instance in the following call: + mpfr_set_ui (x, "foo", MPFR_RNDN); + If this is not possible (for future macros), one of the tricks described + on http://groups.google.com/group/comp.std.c/msg/e92abd24bf9eaf7b could + be used. */ +#if defined (__GNUC__) && !defined(__ICC) && !defined(__cplusplus) +#if (__GNUC__ >= 2) +#undef mpfr_cmp_ui +/* We use the fact that mpfr_sgn on NaN sets the erange flag and returns 0. + But warning! mpfr_sgn is specified as a macro in the API, thus the macro + mustn't be used if side effects are possible, like here. */ +#define mpfr_cmp_ui(_f,_u) \ + (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \ + (mpfr_sgn) (_f) : \ + mpfr_cmp_ui_2exp ((_f), (_u), 0)) +#undef mpfr_cmp_si +#define mpfr_cmp_si(_f,_s) \ + (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \ + mpfr_cmp_ui ((_f), (mpfr_ulong) (mpfr_long) (_s)) : \ + mpfr_cmp_si_2exp ((_f), (_s), 0)) +#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95 +#undef mpfr_set_ui +#define mpfr_set_ui(_f,_u,_r) \ + (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \ + __extension__ ({ \ + mpfr_ptr _p = (_f); \ + _p->_mpfr_sign = 1; \ + _p->_mpfr_exp = __MPFR_EXP_ZERO; \ + (mpfr_void) (_r); 0; }) : \ + mpfr_set_ui_2exp ((_f), (_u), 0, (_r))) +#endif +#undef mpfr_set_si +#define mpfr_set_si(_f,_s,_r) \ + (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \ + mpfr_set_ui ((_f), (mpfr_ulong) (mpfr_long) (_s), (_r)) : \ + mpfr_set_si_2exp ((_f), (_s), 0, (_r))) +#endif +#endif + +/* Macro version of mpfr_stack interface for fast access */ +#define mpfr_custom_get_size(p) ((mpfr_size_t) \ + (((p)+GMP_NUMB_BITS-1)/GMP_NUMB_BITS*sizeof (mp_limb_t))) +#define mpfr_custom_init(m,p) do {} while (0) +#define mpfr_custom_get_significand(x) ((mpfr_void*)((x)->_mpfr_d)) +#define mpfr_custom_get_exp(x) ((x)->_mpfr_exp) +#define mpfr_custom_move(x,m) do { ((x)->_mpfr_d = (mp_limb_t*)(m)); } while (0) +#define mpfr_custom_init_set(x,k,e,p,m) do { \ + mpfr_ptr _x = (x); \ + mpfr_exp_t _e; \ + mpfr_kind_t _t; \ + mpfr_int _s, _k; \ + _k = (k); \ + if (_k >= 0) { \ + _t = (mpfr_kind_t) _k; \ + _s = 1; \ + } else { \ + _t = (mpfr_kind_t) -k; \ + _s = -1; \ + } \ + _e = _t == MPFR_REGULAR_KIND ? (e) : \ + _t == MPFR_NAN_KIND ? __MPFR_EXP_NAN : \ + _t == MPFR_INF_KIND ? __MPFR_EXP_INF : __MPFR_EXP_ZERO; \ + _x->_mpfr_prec = (p); \ + _x->_mpfr_sign = _s; \ + _x->_mpfr_exp = _e; \ + _x->_mpfr_d = (mp_limb_t*) (m); \ + } while (0) +#define mpfr_custom_get_kind(x) \ + ( (x)->_mpfr_exp > __MPFR_EXP_INF ? \ + (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (x) \ + : (x)->_mpfr_exp == __MPFR_EXP_INF ? \ + (mpfr_int) MPFR_INF_KIND * MPFR_SIGN (x) \ + : (x)->_mpfr_exp == __MPFR_EXP_NAN ? (mpfr_int) MPFR_NAN_KIND \ + : (mpfr_int) MPFR_ZERO_KIND * MPFR_SIGN (x) ) + + +#endif /* MPFR_USE_NO_MACRO */ + +/* Theses are defined to be macros */ +#define mpfr_init_set_si(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_si((x), (i), (rnd)) ) +#define mpfr_init_set_ui(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_ui((x), (i), (rnd)) ) +#define mpfr_init_set_d(x, d, rnd) \ + ( mpfr_init(x), mpfr_set_d((x), (d), (rnd)) ) +#define mpfr_init_set_ld(x, d, rnd) \ + ( mpfr_init(x), mpfr_set_ld((x), (d), (rnd)) ) +#define mpfr_init_set_z(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_z((x), (i), (rnd)) ) +#define mpfr_init_set_q(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_q((x), (i), (rnd)) ) +#define mpfr_init_set(x, y, rnd) \ + ( mpfr_init(x), mpfr_set((x), (y), (rnd)) ) +#define mpfr_init_set_f(x, y, rnd) \ + ( mpfr_init(x), mpfr_set_f((x), (y), (rnd)) ) + +/* Compatibility layer -- obsolete functions and macros */ +#define mpfr_cmp_abs mpfr_cmpabs +#define mpfr_round_prec(x,r,p) mpfr_prec_round(x,p,r) +#define __gmp_default_rounding_mode (mpfr_get_default_rounding_mode()) +#define __mpfr_emin (mpfr_get_emin()) +#define __mpfr_emax (mpfr_get_emax()) +#define __mpfr_default_fp_bit_precision (mpfr_get_default_fp_bit_precision()) +#define MPFR_EMIN_MIN mpfr_get_emin_min() +#define MPFR_EMIN_MAX mpfr_get_emin_max() +#define MPFR_EMAX_MIN mpfr_get_emax_min() +#define MPFR_EMAX_MAX mpfr_get_emax_max() +#define mpfr_version (mpfr_get_version()) +#ifndef mpz_set_fr +# define mpz_set_fr mpfr_get_z +#endif +#define mpfr_add_one_ulp(x,r) \ + (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x)) +#define mpfr_sub_one_ulp(x,r) \ + (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x)) +#define mpfr_get_z_exp mpfr_get_z_2exp +#define mpfr_custom_get_mantissa mpfr_custom_get_significand + +#endif /* __MPFR_H*/ + diff --git a/vitis/v2020_1/multimediaIps/xf_axi_io.hpp b/vitis/v2020_1/multimediaIps/xf_axi_io.hpp new file mode 100644 index 00000000..7ba3289f --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_axi_io.hpp @@ -0,0 +1,104 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ___XF__AXI_IO__ +#define ___XF__AXI_IO__ +#include "utils/x_hls_utils.h" +#include +#include "xf_axi_sdata.hpp" + +namespace xf { +namespace cv { + +template +void AXIGetBitFields(ap_uint pix, int start, int w, T& val) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(start >= 0 && start + w <= W); + val = (T)pix(start + w - 1, start); +} + +template +void AXIGetBitFields(ap_uint pix, int start, int w, float& val) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(w == 32 && start >= 0 && start + w <= W); + fp_struct temp((ap_uint<32>)pix(start + w - 1, start)); + val = temp.to_float(); +} + +template +void AXIGetBitFields(ap_uint pix, int start, int w, double& val) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(w == 64 && start >= 0 && start + w <= W); + fp_struct temp((ap_uint<64>)pix(start + w - 1, start)); + val = temp.to_double(); +} + +template +void AXIGetBitFields(ap_axiu axi, int start, int w, T& val) { +// clang-format off + #pragma HLS inline + // clang-format on + AXIGetBitFields(axi.data, start, w, val); +} + +template +void AXISetBitFields(ap_uint& pix, int start, int w, T val) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(start >= 0 && start + w <= W); + pix(start + w - 1, start) = val; +} + +template +void AXISetBitFields(ap_uint& pix, int start, int w, float val) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(w == 32 && start >= 0 && start + w <= W); + fp_struct temp(val); + pix(start + w - 1, start) = temp.data(); +} + +template +void AXISetBitFields(ap_uint& pix, int start, int w, double val) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(w == 64 && start >= 0 && start + w <= W); + fp_struct temp(val); + pix(start + w - 1, start) = temp.data(); +} + +template +void AXISetBitFields(ap_axiu& axi, int start, int w, T val) { +// clang-format off + #pragma HLS inline + // clang-format on + AXISetBitFields(axi.data, start, w, val); +} + +} // namespace cv +}; // namespace xf + +#endif diff --git a/vitis/v2020_1/multimediaIps/xf_axi_sdata.hpp b/vitis/v2020_1/multimediaIps/xf_axi_sdata.hpp new file mode 100644 index 00000000..527ddbef --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_axi_sdata.hpp @@ -0,0 +1,57 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This file contains the definition of the data types for AXI streaming. + * ap_axi_s is a signed interpretation of the AXI stream + * ap_axi_u is an unsigned interpretation of the AXI stream + */ + +#ifndef __XF__AXI_SDATA__ +#define __XF__AXI_SDATA__ + +#include "ap_int.h" + +namespace xf { +namespace cv { + +template +struct ap_axis { + ap_int data; + ap_uint<(D + 7) / 8> keep; + ap_uint<(D + 7) / 8> strb; + ap_uint user; + ap_uint<1> last; + ap_uint id; + ap_uint dest; +}; + +template +struct ap_axiu { + ap_uint data; + ap_uint<(D + 7) / 8> keep; + ap_uint<(D + 7) / 8> strb; + ap_uint user; + ap_uint<1> last; + ap_uint id; + ap_uint dest; +}; + +// typedef ap_axis ap_axis_unsigned; +} // namespace xf +} // namespace cv +#endif diff --git a/vitis/v2020_1/multimediaIps/xf_common.hpp b/vitis/v2020_1/multimediaIps/xf_common.hpp new file mode 100644 index 00000000..fcc25229 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_common.hpp @@ -0,0 +1,26 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _XF_COMMON_H_ +#define _XF_COMMON_H_ + +#include "xf_structs.hpp" +#include "xf_params.hpp" +#include "xf_types.hpp" + +using namespace xf::cv; +#endif diff --git a/vitis/v2020_1/multimediaIps/xf_infra.hpp b/vitis/v2020_1/multimediaIps/xf_infra.hpp new file mode 100644 index 00000000..fb4dcac8 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_infra.hpp @@ -0,0 +1,230 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _XF_INFRA_H_ +#define _XF_INFRA_H_ + +#ifndef __cplusplus +#error C++ is needed to use this file! +#endif + +#include +#include +#include "xf_types.hpp" +#include "hls_stream.h" +#include "xf_axi_sdata.hpp" +#include "xf_axi_io.hpp" + +namespace xf { +namespace cv { +/* reading data from scalar and write into img*/ +template +void write(xf::cv::Mat& img, + xf::cv::Scalar s, + int ind) { +// clang-format off + #pragma HLS inline + // clang-format on + + img.write(ind, s.val[0]); +} +/* reading data from scalar and write into img*/ +template +void fetchingmatdata(xf::cv::Mat& img, + xf::cv::Scalar s, + int val) { +// clang-format off + #pragma HLS inline + // clang-format on + write(img, s, val); +} +/* reading data from img and writing onto scalar variable*/ +template +xf::cv::Scalar read(xf::cv::Mat& img, + int index) { +// clang-format off + #pragma HLS inline + // clang-format on + + xf::cv::Scalar scl; + scl.val[0] = img.read(index); + + return scl; +} +/* reading data from img and writing onto scalar variable*/ +template +void fillingdata(xf::cv::Mat& img, + xf::cv::Scalar& s, + int index) { +// clang-format off + #pragma HLS inline + // clang-format on + + s = read(img, index); +} + +#define HLS_CN_MAX 512 +#define HLS_CN_SHIFT 11 +#define HLS_DEPTH_MAX (1 << HLS_CN_SHIFT) + +#define HLS_MAT_CN_MASK ((HLS_CN_MAX - 1) << HLS_CN_SHIFT) +#define HLS_MAT_CN(flags) ((((flags)&HLS_MAT_CN_MASK) >> HLS_CN_SHIFT) + 1) +#define HLS_MAT_TYPE_MASK (HLS_DEPTH_MAX * HLS_CN_MAX - 1) +#define HLS_MAT_TYPE(flags) ((flags)&HLS_MAT_TYPE_MASK) + +#define ERROR_IO_EOL_EARLY (1 << 0) +#define ERROR_IO_EOL_LATE (1 << 1) +#define ERROR_IO_SOF_EARLY (1 << 0) +#define ERROR_IO_SOF_LATE (1 << 1) + +/* +Unpack a AXI video stream into a xf::cv::Mat<> object + *input: AXI_video_strm + *output: img + */ + +template +int AXIvideo2xfMat(hls::stream >& AXI_video_strm, xf::cv::Mat& img) { +// clang-format off + #pragma HLS inline + // clang-format on + + int res = 0, val = 0, depth; + ap_axiu axi; + xf::cv::Scalar pix; + depth = XF_WORDDEPTH(XF_WORDWIDTH(T, NPC)); + // HLS_SIZE_T rows = img.rows; + // HLS_SIZE_T cols = img.cols; + int rows = img.rows; + int cols = img.cols; + assert(rows <= ROWS); + assert(cols <= COLS); + bool sof = 0; +loop_wait_for_start: + while (!sof) { // checking starting of frame + // clang-format off + #pragma HLS pipeline II=1 + #pragma HLS loop_tripcount avg=0 max=0 + // clang-format on + AXI_video_strm >> axi; + sof = axi.user.to_int(); + } +loop_height: + for (int i = 0; i < rows; i++) { + bool eol = 0; + loop_width: + for (int j = 0; j < (cols / NPC); j++) { +// clang-format off + #pragma HLS loop_flatten off + #pragma HLS pipeline II=1 + // clang-format on + if (sof || eol) { + sof = 0; + eol = axi.last.to_int(); + } else { + AXI_video_strm >> axi; // If we didn't reach EOL, then read the next pixel + + eol = axi.last.to_int(); + bool user = axi.user.to_int(); + if (user) { + res |= ERROR_IO_SOF_EARLY; + } + } + if (eol && (j != cols - 1)) { // checking end of each row + res |= ERROR_IO_EOL_EARLY; + } + // All channels are merged in cvMat2AXIVideoxf function + xf::cv::AXIGetBitFields(axi, 0, depth, pix.val[0]); + + fetchingmatdata(img, pix, val); + val++; + } + loop_wait_for_eol: + while (!eol) { +// clang-format off + #pragma HLS pipeline II=1 + #pragma HLS loop_tripcount avg=0 max=0 + // clang-format on + // Keep reading until we get to EOL + AXI_video_strm >> axi; + eol = axi.last.to_int(); + res |= ERROR_IO_EOL_LATE; + } + } + return res; +} + +// Pack the data of a xf::cv::Mat<> object into an AXI Video stream +/* + * input: img + * output: AXI_video_stream + */ +template +int xfMat2AXIvideo(xf::cv::Mat& img, hls::stream >& AXI_video_strm) { +// clang-format off + #pragma HLS inline + // clang-format on + int res = 0, index = 0, depth; + xf::cv::Scalar pix; + ap_axiu axi; + depth = XF_WORDDEPTH(XF_WORDWIDTH(T, NPC)); // 8;// HLS_TBITDEPTH(T); + + // std::cout << W << " " << depth << " " << HLS_MAT_CN(T) << "\n"; + assert(W >= depth * HLS_MAT_CN(T) && + "Bit-Width of AXI stream must be greater than the total number of bits in a pixel"); + // HLS_SIZE_T rows = img.rows; + // HLS_SIZE_T cols = img.cols; + int rows = img.rows; + int cols = img.cols; + assert(rows <= ROWS); + assert(cols <= COLS); + bool sof = 1; +loop_height: + for (int i = 0; i < rows; i++) { + loop_width: + for (int j = 0; j < (cols / NPC); j++) { +// clang-format off + #pragma HLS loop_flatten off + #pragma HLS pipeline II=1 + // clang-format on + if (sof) { // checking the start of frame + axi.user = 1; + sof = 0; + + } else { + axi.user = 0; + } + if (j == (cols - 1)) { // enabling the last signat at end each row + axi.last = 1; + } else { + axi.last = 0; + } + fillingdata(img, pix, index); // reading data from img writing into scalar pix + index++; + axi.data = -1; + + xf::cv::AXISetBitFields(axi, 0, depth, pix.val[0]); // assigning the pix value to AXI data structure + axi.keep = -1; + AXI_video_strm << axi; // writing axi data into AXI stream + } + } + return res; +} +} // namespace cv +} // namespace xf + +#endif diff --git a/vitis/v2020_1/multimediaIps/xf_params.hpp b/vitis/v2020_1/multimediaIps/xf_params.hpp new file mode 100644 index 00000000..b83a241d --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_params.hpp @@ -0,0 +1,317 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _XF_PARAMS_H_ +#define _XF_PARAMS_H_ + +#ifndef __cplusplus +#error C++ is needed to use this file! +#endif + +#include "ap_int.h" + +#define __ABS(X) ((X) < 0 ? (-(X)) : (X)) + +// Channels of an image +enum _channel_extract { + XF_EXTRACT_CH_0, // Used by formats with unknown channel types + XF_EXTRACT_CH_1, // Used by formats with unknown channel types + XF_EXTRACT_CH_2, // Used by formats with unknown channel types + XF_EXTRACT_CH_3, // Used by formats with unknown channel types + XF_EXTRACT_CH_R, // Used to extract the RED channel + XF_EXTRACT_CH_G, // Used to extract the GREEN channel + XF_EXTRACT_CH_B, // Used to extract the BLUE channel + XF_EXTRACT_CH_A, // Used to extract the ALPHA channel + XF_EXTRACT_CH_Y, // Used to extract the LUMA channel + XF_EXTRACT_CH_U, // Used to extract the Cb/U channel + XF_EXTRACT_CH_V // Used to extract the Cr/V/Value channel +}; +typedef _channel_extract XF_channel_extract_e; + +// Conversion Policy for fixed point arithmetic +enum _convert_policy { XF_CONVERT_POLICY_SATURATE, XF_CONVERT_POLICY_TRUNCATE }; +typedef _convert_policy XF_convert_policy_e; + +// Bit-depth conversion types +enum _convert_bit_depth { + // Down-convert + XF_CONVERT_16U_TO_8U, + XF_CONVERT_16S_TO_8U, + XF_CONVERT_32S_TO_8U, + XF_CONVERT_32S_TO_16U, + XF_CONVERT_32S_TO_16S, + // Up-convert + XF_CONVERT_8U_TO_16U, + XF_CONVERT_8U_TO_16S, + XF_CONVERT_8U_TO_32S, + XF_CONVERT_16U_TO_32S, + XF_CONVERT_16S_TO_32S +}; +typedef _convert_bit_depth XF_convert_bit_depth_e; + +// Thresholding types +enum _threshold_type { + XF_THRESHOLD_TYPE_BINARY = 0, + XF_THRESHOLD_TYPE_BINARY_INV = 1, + XF_THRESHOLD_TYPE_TRUNC = 2, + XF_THRESHOLD_TYPE_TOZERO = 3, + XF_THRESHOLD_TYPE_TOZERO_INV = 4, +}; +typedef _threshold_type XF_threshold_type_e; + +// Comparision types +enum _comparison_op { XF_CMP_EQ = 0, XF_CMP_GT = 1, XF_CMP_GE = 2, XF_CMP_LT = 3, XF_CMP_LE = 4, XF_CMP_NE = 5 }; +typedef _comparison_op _comparison_op_e; + +// Comparision types +enum _reduction_op { REDUCE_SUM = 0, REDUCE_AVG = 1, REDUCE_MAX = 2, REDUCE_MIN = 3 }; +typedef _reduction_op _reduction_op_e; + +// Pixel Per Cycle +enum _pixel_per_cycle { + XF_NPPC1 = 1, + XF_NPPC2 = 2, + XF_NPPC4 = 4, + XF_NPPC8 = 8, + XF_NPPC16 = 16, + XF_NPPC32 = 32, + XF_NPPC64 = 64 +}; +typedef _pixel_per_cycle XF_nppc_e; + +// Pixel types +enum _pixel_type { + XF_8UP = 0, + XF_8SP = 1, + XF_16UP = 2, + XF_16SP = 3, + XF_32UP = 4, + XF_32SP = 5, + XF_19SP = 6, + XF_32FP = 7, + XF_35SP = 8, + XF_24SP = 9, + XF_20SP = 10, + XF_48SP = 11, + XF_2UP = 12, + XF_9SP = 13, + XF_9UP = 14, + XF_24UP = 15, + XF_64UP = 16, + XF_10UP = 17, + XF_12UP = 18, + XF_40UP = 19, + XF_48UP = 20, + XF_30UP = 21, + XF_36UP = 22 +}; +typedef _pixel_type XF_pixel_type_e; + +// Word width +enum _word_width { + XF_2UW = 0, + XF_8UW = 1, + XF_9UW = 2, + XF_10UW = 3, + XF_12UW = 4, + XF_16UW = 5, + XF_19SW = 6, + XF_20UW = 7, + XF_22UW = 8, + XF_24UW = 9, + XF_24SW = 10, + XF_30UW = 11, + XF_32UW = 12, + XF_32FW = 13, + XF_35SW = 14, + XF_36UW = 15, + XF_40UW = 16, + XF_48UW = 17, + XF_48SW = 18, + XF_60UW = 19, + XF_64UW = 20, + XF_72UW = 21, + XF_80UW = 22, + XF_96UW = 23, + XF_96SW = 24, + XF_120UW = 25, + XF_128UW = 26, + XF_144UW = 27, + XF_152SW = 28, + XF_160UW = 29, + XF_160SW = 30, + XF_176UW = 31, + XF_192UW = 32, + XF_192SW = 33, + XF_240UW = 34, + XF_256UW = 35, + XF_280SW = 36, + XF_288UW = 37, + XF_304SW = 38, + XF_320UW = 39, + XF_352UW = 40, + XF_384UW = 41, + XF_384SW = 42, + XF_512UW = 43, + XF_560SW = 44, + XF_576UW = 45 +}; +typedef _word_width XF_word_width_e; + +// Filter size +enum _filter_size { XF_FILTER_3X3 = 3, XF_FILTER_5X5 = 5, XF_FILTER_7X7 = 7 }; +typedef _filter_size XF_filter_size_e; + +// Radius size for Non Maximum Suppression +enum _nms_radius { XF_NMS_RADIUS_1 = 1, XF_NMS_RADIUS_2 = 2, XF_NMS_RADIUS_3 = 3 }; +typedef _nms_radius XF_nms_radius_e; + +// Image Pyramid Parameters +enum _image_pyramid_params { + XF_PYRAMID_TYPE_GXFSSIAN = 0, + XF_PYRAMID_TYPE_LAPLACIAN = 1, + XF_PYRAMID_SCALE_HALF = 2, + XF_PYRAMID_SCALE_ORB = 3, + XF_PYRAMID_SCALE_DOUBLE = 4 +}; +typedef _image_pyramid_params XF_image_pyramid_params_e; + +// Magnitude computation +enum _normalisation_params { XF_L1NORM = 0, XF_L2NORM = 1 }; +typedef _normalisation_params XF_normalisation_params_e; + +enum _border_type { + XF_BORDER_CONSTANT = 0, + XF_BORDER_REPLICATE = 1, + XF_BORDER_REFLECT = 2, + XF_BORDER_WRAP = 3, + XF_BORDER_REFLECT_101 = 4, + XF_BORDER_TRANSPARENT = 5, + XF_BORDER_REFLECT101 = XF_BORDER_REFLECT_101, + XF_BORDER_DEFAULT = XF_BORDER_REFLECT_101, + XF_BORDER_ISOLATED = 16, +}; +typedef _border_type XF_border_type_e; + +enum _structuring_element_shape { + XF_SHAPE_RECT = 0, + XF_SHAPE_ELLIPSE = 1, + XF_SHAPE_CROSS = 2, + +}; +enum _wb_type { + XF_WB_GRAY = 0, + XF_WB_SIMPLE = 1, +}; + +// Phase computation +enum _phase_params { XF_RADIANS = 0, XF_DEGREES = 1 }; +typedef _phase_params XF_phase_params_e; + +// Types of Interpolaton techniques used in resize, affine and perspective +enum _interpolation_types { XF_INTERPOLATION_NN = 0, XF_INTERPOLATION_BILINEAR = 1, XF_INTERPOLATION_AREA = 2 }; +typedef _interpolation_types _interpolation_types_e; + +// loop dependent variables used in image pyramid +enum _loop_dependent_vars { XF_GXFSSIANLOOP = 8, XF_BUFSIZE = 12 }; +typedef _loop_dependent_vars loop_dependent_vars_e; + +// loop dependent variables used in image pyramid +enum _image_size { XF_SDIMAGE = 0, XF_HDIMAGE = 1 }; +typedef _image_size image_size_e; + +// enumerations for HOG feature descriptor +enum _input_image_type { XF_GRAY = 1, XF_RGB = 3 }; +typedef _input_image_type input_image_type_e; + +// enumerations for HOG feature descriptor +enum _HOG_output_type { XF_HOG_RB = 0, XF_HOG_NRB = 1 }; +typedef _HOG_output_type HOG_output_type_e; + +enum use_model { XF_STANDALONE = 0, XF_PIPELINE = 1 }; +typedef use_model use_model_e; + +// enumerations for HOG feature descriptor +enum _HOG_type { XF_DHOG = 0, XF_SHOG = 1 }; +typedef _HOG_type HOG_type_e; + +// enumerations for Stereo BM +enum XF_stereo_prefilter_type { XF_STEREO_PREFILTER_SOBEL_TYPE, XF_STEREO_PREFILTER_NORM_TYPE }; +/****************************new************************/ +// enumerations for Demosaicing +enum XF_demosaicing { + XF_BAYER_BG, + XF_BAYER_GB, + XF_BAYER_GR, + XF_BAYER_RG, +}; +// typedef XF_stereo_prefilter_type XF_stereo_pre_filter_type_e; +// enum _pixel_percycle +//{ +// XF_NPPC1 = 0, +// XF_NPPC8 = 3, +// XF_NPPC16 = 4 +//}; +// typedef _pixel_percycle XF_nppc_e; + +// enumerations for Architecture +enum _ARCH_type { + XF_STREAM = 0, + XF_MEMORYMAPPED = 1 + +}; +typedef _ARCH_type _ARCH_type_e; + +enum _pixeltype { + XF_8UC1 = 0, + XF_16UC1 = 1, + XF_16SC1 = 2, + XF_32UC1 = 3, + XF_32FC1 = 4, + XF_32SC1 = 5, + XF_8UC2 = 6, + XF_8UC4 = 7, + XF_2UC1 = 8, + XF_8UC3 = 9, + XF_16UC3 = 10, + XF_16SC3 = 11, + XF_16UC4 = 12, + XF_10UC1 = 13, + XF_10UC4 = 14, + XF_12UC1 = 15, + XF_12UC4 = 16, + XF_10UC3 = 17, + XF_12UC3 = 18 +}; +typedef _pixeltype XF_npt_e; + +enum _ramtype { + RAM_1P_BRAM = 0, + RAM_1P_LUTRAM = 1, + RAM_1P_URAM = 2, + RAM_2P_BRAM = 3, + RAM_2P_LUTRAM = 4, + RAM_2P_URAM = 5, + RAM_S2P_BRAM = 6, + RAM_S2P_LUTRAM = 7, + RAM_S2P_URAM = 8, + RAM_T2P_BRAM = 9, + RAM_T2P_URAM = 10 +}; +typedef _ramtype XF_ramtype_e; + +#endif //_XF_PARAMS_H_ diff --git a/vitis/v2020_1/multimediaIps/xf_structs.hpp b/vitis/v2020_1/multimediaIps/xf_structs.hpp new file mode 100644 index 00000000..de3eeea5 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_structs.hpp @@ -0,0 +1,957 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _XF_STRUCTS_H_ +#define _XF_STRUCTS_H_ + +#ifndef __cplusplus +#error C++ is needed to use this file! +#endif + +#ifndef __SYNTHESIS__ +#include +#endif +#include +#include +#include +#include "xf_types.hpp" +#include "hls_stream.h" + +#if __SDSCC__ +#include "sds_lib.h" +#endif + +namespace xf { +namespace cv { + +template +T float2ap_uint(float val) { + T* val_out = (T*)(&val); + return *val_out; +} + +template +float ap_uint2float(T val) { + float* val_out = (float*)(&val); + return *val_out; +} + +//----------------------------------------------------------------------------------------------------// +// LOCAL STEREO BLOCK MATCHING UTILITY +//----------------------------------------------------------------------------------------------------// +template +class xFSBMState { + public: + // pre-filtering (normalization of input images) + int preFilterType; // =HLS_STEREO_BM_XSOBEL_TEST + int preFilterSize; // averaging window size: ~5x5..21x21 + int preFilterCap; // the output of pre-filtering is clipped by [-preFilterCap,preFilterCap] + + // correspondence using Sum of Absolute Difference (SAD) + int SADWindowSize; // ~5x5..21x21 // defined in macro + int minDisparity; // minimum disparity (can be negative) + int numberOfDisparities; // maximum disparity - minimum disparity (> 0) + + // post-filtering + int textureThreshold; // the disparity is only computed for pixels + + // with textured enough neighborhood + int uniquenessRatio; // accept the computed disparity d* only if + // SAD(d) >= SAD(d*)*(1 + uniquenessRatio/100.) + // for any d != d*+/-1 within the search range. + + // int speckleWindowSize; // disparity variation window + // int speckleRange; // acceptable range of variation in window + + int ndisp_unit; + int sweepFactor; + int remainder; + + xFSBMState() { + preFilterType = XF_STEREO_PREFILTER_SOBEL_TYPE; // Default Sobel filter + preFilterSize = WSIZE; + preFilterCap = 31; + SADWindowSize = WSIZE; + minDisparity = 0; + numberOfDisparities = NDISP; + textureThreshold = 10; + uniquenessRatio = 15; + sweepFactor = (NDISP / NDISP_UNIT) + ((NDISP % NDISP_UNIT) != 0); + ndisp_unit = NDISP_UNIT; + remainder = NDISP_UNIT * sweepFactor - NDISP; + } +}; +//----------------------------------------------------------------------------------------------------// + +//----------------------------------------------------------------------------------------------------// +// Template class of Point_ +//----------------------------------------------------------------------------------------------------// +template +class Point_ { + public: + Point_(); + Point_(T _x, T _y); + Point_(const Point_& pt); + ~Point_(); + + T x, y; +}; + +/* Member functions of Point_ class */ +template +inline Point_::Point_() {} +template +inline Point_::Point_(T _x, T _y) : x(_x), y(_y) {} +template +inline Point_::Point_(const Point_& pt) : x(pt.x), y(pt.y) {} +template +inline Point_::~Point_() {} + +typedef Point_ Point; +//----------------------------------------------------------------------------------------------------// + +//----------------------------------------------------------------------------------------------------// +// Template class of Size_ +//----------------------------------------------------------------------------------------------------// +template +class Size_ { + public: + Size_(); + Size_(T _width, T _height); + Size_(const Size_& sz); + Size_(const Point_& pt); + T area(); + ~Size_(); + + T width, height; +}; + +/* Member functions of Size_ class */ +template +inline Size_::Size_() {} +template +inline Size_::Size_(T _width, T _height) : width(_width), height(_height) {} +template +inline Size_::Size_(const Size_& sz) : width(sz.width), height(sz.height) {} +template +inline Size_::Size_(const Point_& pt) : width(pt.x), height(pt.y) {} +template +inline T Size_::area() { + return width * height; +} +template +inline Size_::~Size_() {} + +typedef Size_ Size; +//----------------------------------------------------------------------------------------------------// + +//----------------------------------------------------------------------------------------------------// +// Template class of Rect_ +//----------------------------------------------------------------------------------------------------// +template +class Rect_ { + public: + Rect_(); + Rect_(T _x, T _y, T _width, T _height); + Rect_(const Rect_& rect); + Rect_(const Point_& pt, const Size_& sz); + T area(); + Size_ size(); + Point_ tl(); // top-left point(inside); + Point_ tr(); // top-right point(outside); + Point_ bl(); // bottom-left point(outside); + Point_ br(); // bottom-right point(outside); + bool bContains(const Point_& pt); + ~Rect_(); + + T x, y, width, height; +}; + +/* Member functions of Rect_ class */ +template +inline Rect_::Rect_() {} +template +inline Rect_::Rect_(T _x, T _y, T _width, T _height) : x(_x), y(_y), width(_width), height(_height) {} +template +inline Rect_::Rect_(const Rect_& rect) : x(rect.x), y(rect.y), width(rect.width), height(rect.height) {} +template +inline Rect_::Rect_(const Point_& pt, const Size_& sz) + : x(pt.x), y(pt.y), width(sz.width), height(sz.height) {} +template +inline T Rect_::area() { + return width * height; +} +template +inline Size_ Rect_::size() { + return Size_(width, height); +} +template +inline Point_ Rect_::tl() { + return Point_(x, y); +} +template +inline Point_ Rect_::tr() { + return Point_(x + width, y); +} +template +inline Point_ Rect_::bl() { + return Point_(x, y + height); +} +template +inline Point_ Rect_::br() { + return Point_(x + width, y + height); +} +template +inline bool Rect_::bContains(const Point_& pt) { + return (pt.x >= x && pt.x < x + width && pt.y >= y && pt.y < y + height); +} +template +inline Rect_::~Rect_() {} + +typedef Rect_ Rect; +//----------------------------------------------------------------------------------------------------// + +//----------------------------------------------------------------------------------------------------// +// Template class of Scalar +//----------------------------------------------------------------------------------------------------// +template +class Scalar { + public: + Scalar() { +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val dim=1 complete + // clang-format on + assert(N > 0); + } + Scalar(T v0) { +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val dim=1 complete + // clang-format on + assert(N >= 1 && "Scalar must have enough channels for constructor."); + val[0] = v0; + } + Scalar(T v0, T v1) { +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val dim=1 complete + // clang-format on + assert(N >= 2 && "Scalar must have enough channels for constructor."); + val[0] = v0; + val[1] = v1; + } + Scalar(T v0, T v1, T v2) { +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val dim=1 complete + // clang-format on + assert(N >= 3 && "Scalar must have enough channels for constructor."); + val[0] = v0; + val[1] = v1; + val[2] = v2; + } + Scalar(T v0, T v1, T v2, T v3) { +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val dim=1 complete + // clang-format on + assert(N >= 4 && "Scalar must have enough channels for constructor."); + val[0] = v0; + val[1] = v1; + val[2] = v2; + val[3] = v3; + } + + void operator=(T value); + Scalar operator+(T value); + Scalar operator+(Scalar s); + Scalar operator-(T value); + Scalar operator-(Scalar s); + Scalar operator*(T value); + Scalar operator*(Scalar s); + Scalar operator/(T value); + Scalar operator/(Scalar s); + + T val[N]; +}; + +template +void Scalar::operator=(T value) { +// clang-format off + #pragma HLS inline + // clang-format on + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[k] = value; + } +} + +template +Scalar Scalar::operator+(T value) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] + value; + } + return res; +} + +template +Scalar Scalar::operator+(Scalar s) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] + s.val[k]; + } + return res; +} + +template +Scalar Scalar::operator-(T value) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] - value; + } + return res; +} + +template +Scalar Scalar::operator-(Scalar s) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] - s.val[k]; + } + return res; +} + +template +Scalar Scalar::operator*(T value) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] * value; + } + return res; +} + +template +Scalar Scalar::operator*(Scalar s) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] * s.val[k]; + } + return res; +} + +template +Scalar Scalar::operator/(T value) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] / value; + } + return res; +} + +template +Scalar Scalar::operator/(Scalar s) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar res; + for (int k = 0; k < N; k++) { +// clang-format off + #pragma HLS unroll + // clang-format on + res.val[k] = val[k] / s.val[k]; + } + return res; +} +//----------------------------------------------------------------------------------------------------// + +//----------------------------------------------------------------------------------------------------// +// Template class of Mat +//----------------------------------------------------------------------------------------------------// +template +class Mat { + public: + unsigned char allocatedFlag; // flag to mark memory allocation in this class + int rows, cols, size; // actual image size + // int cols_align_npc; // cols multiple of NPC + +#ifdef __SDSVHLS__ + typedef XF_TNAME(T, NPC) DATATYPE; +#else // When not being built for V-HLS + typedef struct { + XF_CTUNAME(T, NPC) chnl[XF_NPIXPERCYCLE(NPC)][XF_CHANNELS(T, NPC)]; + } __attribute__((packed)) DATATYPE; +#endif + +#if defined(__SYNTHESIS__) && !defined(__SDA_MEM_MAP__) + DATATYPE* data __attribute((xcl_array_geometry( + (ROWS) * ((COLS + NPC - 1) >> (XF_BITSHIFT(NPC)))))); // data[ ROWS * ( COLS >> ( XF_BITSHIFT ( NPC ) ) ) ]; +#else + DATATYPE* data; +#endif + + Mat(); // default constructor + Mat(Size _sz); + Mat(int _rows, int _cols); + Mat(int _size, int _rows, int _cols); + Mat(int _rows, int _cols, void* _data); + Mat(const Mat&); // copy constructor + + ~Mat(); + + Mat& operator=(const Mat&); // Assignment operator + // XF_TNAME(T, XF_NPPC1) operator() (unsigned int r, unsigned int c); + // XF_CTUNAME(T, NPC) operator() (unsigned int r, unsigned int c, unsigned int ch); + XF_TNAME(T, NPC) read(int index); + float read_float(int index); + void write(int index, XF_TNAME(T, NPC) val); + void write_float(int index, float val); + + void init(int _rows, int _cols, bool allocate = true); + void copyTo(void* fromData); + unsigned char* copyFrom(); + + const int type() const; + const int depth() const; + const int channels() const; + + template + void convertTo(Mat& dst, int otype, double alpha = 1, double beta = 0); +}; + +template +const int Mat::type() const { +// clang-format off + #pragma HLS inline + // clang-format on + return (T); +} + +template +const int Mat::depth() const { +// clang-format off + #pragma HLS inline + // clang-format on + return XF_DTPIXELDEPTH(T, NPC); +} +template +const int Mat::channels() const { +// clang-format off + #pragma HLS inline + // clang-format on + return XF_CHANNELS(T, NPC); +} + +template +inline void Mat::init(int _rows, int _cols, bool allocate) { +// clang-format off + #pragma HLS inline + // clang-format on + + assert((_rows > 0) && (_rows <= ROWS) && (_cols > 0) && (_cols <= COLS) && + "The number of rows and columns must be less than the template arguments."); + + rows = _rows; + cols = _cols; + // size = _rows * (_cols >> (XF_BITSHIFT(NPPC))); + // size = _rows * ((_cols + NPPC-1) >> XF_BITSHIFT(NPPC)); + size = _rows * ((_cols + NPPC - 1) >> XF_BITSHIFT(NPPC)); + // size = ( (ROWS * COLS) + (NPPC-1)) >> XF_BITSHIFT(NPPC); + // cols_align_npc = ((_cols + (NPPC-1)) >> XF_BITSHIFT(NPPC) ) << XF_BITSHIFT(NPPC); + + if (allocate) { +#ifndef __SYNTHESIS__ + data = (DATATYPE*)malloc(size * sizeof(DATATYPE)); + + if (data == NULL) { + fprintf(stderr, "\nFailed to allocate memory\n"); + } else { + allocatedFlag = 1; + } +#else +#ifndef __SDA_MEM_MAP__ + void _ssdm_op_alloc(DATATYPE*&); + _ssdm_op_alloc(data); +#endif +#endif + } +} + +/* +template +inline XF_TNAME(T, XF_NPPC1) Mat::operator() (unsigned int r, unsigned int c) { + + XF_TNAME(T, XF_NPPC1) pix_val; + + unsigned int mask = 0xFFFFFFFF; + unsigned int npc_c = c >> (XF_BITSHIFT(NPC)); + unsigned int npc_cols = cols >> (XF_BITSHIFT(NPC)); + unsigned int pix_idx = c & ~(mask << (XF_BITSHIFT(NPC))); + +#ifdef __SDSVHLS__ + unsigned int bit_width= XF_DTPIXELDEPTH(T, NPC); + + pix_val = data[(r*npc_cols) + npc_c].range((pix_idx+1)*bit_width-1, pix_idx*bit_width); +#else + unsigned int pix_depth = XF_DTPIXELDEPTH(T, NPC) / XF_CHANNELS(T,NPC); + + for (int ch=0; ch < XF_CHANNELS(T,NPC); ch++) { + pix_val.range((ch+1)*pix_depth-1, ch*pix_depth) = data[r*npc_cols + +npc_c].chnl[ch].range((pix_idx+1)*pix_depth-1, pix_idx*pix_depth); + } +#endif + + return pix_val; +} + +template +inline XF_CTUNAME(T, NPC) Mat::operator() (unsigned int r, unsigned int c, unsigned int ch) { + + XF_CTUNAME(T, NPC) pix_val; + + unsigned int mask = 0xFFFFFFFF; + unsigned int npc_c = c >> (XF_BITSHIFT(NPC)); + unsigned int npc_cols = cols >> (XF_BITSHIFT(NPC)); + unsigned int pix_idx = c & ~(mask << (XF_BITSHIFT(NPC))); + +#ifdef __SDSVHLS__ + unsigned int bit_width = XF_DTPIXELDEPTH(T, NPC); + unsigned int pix_depth = XF_DTPIXELDEPTH(T, NPC) / XF_CHANNELS(T, NPC); + + pix_val = data[(r*npc_cols) + npc_c].range(pix_idx*bit_width + (ch+1)*pix_depth - 1, pix_idx*bit_width + +ch*pix_depth); #else unsigned int pix_depth = XF_DTPIXELDEPTH(T, NPC) / XF_CHANNELS(T, NPC); + + pix_val = data[r*npc_cols + npc_c].chnl[ch].range((pix_idx+1)*pix_depth-1, pix_idx*pix_depth); +#endif + + return pix_val; +} + */ +/*Copy constructor definition*/ +template +inline Mat::Mat(const Mat& src) { + init(src.rows, src.cols); + + // for(int i =0; i< (rows*(cols>>(XF_BITSHIFT(NPC))));++i){ + for (int i = 0; i < (rows * ((cols + NPC - 1) >> XF_BITSHIFT(NPC))); ++i) { + data[i] = src.data[i]; + } +} + +/*Assignment operator definition*/ +template +inline Mat& Mat::operator=(const Mat& src) { + if (this == &src) { + return *this; // For self-assignment cases + } + + // Cleaning up old data memory if any + if (data != NULL) { +#ifndef __SYNTHESIS__ + free(data); +#endif + } + + allocatedFlag = 0; + + init(src.rows, src.cols); + + // for(int i =0; i< (rows*(cols>>(XF_BITSHIFT(NPC))));++i){ + for (int i = 0; i < (rows * ((cols + NPC - 1) >> XF_BITSHIFT(NPC))); ++i) { + data[i] = src.data[i]; + } + + return *this; +} + +template +inline Mat::Mat() { +// clang-format off + #pragma HLS inline + // clang-format on + + init(ROWS, COLS); +} + +template +inline Mat::Mat(int _rows, int _cols, void* _data) { +// clang-format off + #pragma HLS inline +// clang-format on + +#if defined __SDA_MEM_MAP__ //(__SDSCC__) && defined (__SYNTHESIS__) + init(_rows, _cols, false); + data = (DATATYPE*)_data; +#else + init(_rows, _cols); + copyTo(_data); +#endif +} + +template +inline Mat::Mat(int _rows, int _cols) { +// clang-format off + #pragma HLS inline + // clang-format on + + init(_rows, _cols); +} + +template +inline Mat::Mat(Size _sz) { +// clang-format off + #pragma HLS inline + // clang-format on + + init(_sz.height, _sz.width); +} + +template +inline XF_TNAME(T, NPPC) Mat::read(int index) { +#ifdef __SDSVHLS__ + return data[index]; +#else + int pixdepth = XF_PIXELWIDTH(T, NPPC); // Total bits that make up the pixel + int bitdepth = pixdepth / XF_CHANNELS(T, NPPC); // Total bits that make up each channel of the pixel + DATATYPE tmp_val = data[index]; + XF_TNAME(T, NPPC) pack_val; + + // Packing data + for (int i = 0; i < NPPC; ++i) { +// clang-format off + #pragma HLS UNROLL + // clang-format on + for (int j = 0; j < XF_CHANNELS(T, NPPC); ++j) { + pack_val.range((i * pixdepth + j * bitdepth) + bitdepth - 1, (i * pixdepth + j * bitdepth)) = + tmp_val.chnl[i][j]; + } + } + + return pack_val; +#endif +} +template +inline float Mat::read_float(int index) { + ap_uint<32> val = read(index); + float* val_out = (float*)(&val); + return *val_out; +} +template +inline void Mat::write(int index, XF_TNAME(T, NPPC) val) { +#ifdef __SDSVHLS__ + data[index] = val; +#else + int pixdepth = XF_PIXELWIDTH(T, NPPC); // Total bits that make up the pixel + int bitdepth = pixdepth / XF_CHANNELS(T, NPPC); // Total bits that make up each channel of the pixel + DATATYPE tmp_val; + + // Unpacking data + for (int i = 0; i < NPPC; ++i) { + for (int j = 0; j < XF_CHANNELS(T, NPPC); ++j) { + tmp_val.chnl[i][j] = val.range((i * pixdepth + j * bitdepth) + bitdepth - 1, (i * pixdepth + j * bitdepth)); + } + } + data[index] = tmp_val; +#endif +} + +template +inline void Mat::write_float(int index, float float_val) { + float val = float_val; + ap_uint<32>* val_out = (ap_uint<32>*)(&val); + write(index, *val_out); +} + +// template +// inline void Mat::copyTo(void* _input) { +// #pragma HLS inline +// +// XF_PTSNAME(T, NPPC)* input = (XF_PTSNAME(T, NPPC)*)_input; +// XF_CTUNAME(T, NPPC) in_val; +// +// // int packcols = cols >> XF_BITSHIFT(NPPC); //Total columns after considering parallelism +// int pixdepth = XF_PIXELWIDTH(T, NPPC); // Total bits that make up the pixel +// int bitdepth = pixdepth / XF_CHANNELS(T, NPPC); // Total bits that make up each channel of the pixel +// int nppc = XF_NPIXPERCYCLE(NPPC); +// +// /* for (int r=0; r < rows; r++) { +// for (int c=0; c < packcols; c++) { +// for (int p=0; p < nppc; p++) { +// for (int ch=0; ch < XF_CHANNELS(T,NPPC); ch++) { +// +// if (T == XF_32FC1) { +// in_val = float2ap_uint< ap_uint<32> >(input[XF_CHANNELS(T, +// NPPC)*((r*packcols + c)*nppc + p) + ch]); } else { in_val = input[XF_CHANNELS(T, NPPC)*((r*packcols + c)*nppc + p) + +// ch]; +// } +//#ifdef __SDSVHLS__ +// data[r*packcols + c].range((p*pixdepth)+(ch+1)*bitdepth-1, +// (p*pixdepth)+ch*bitdepth) +//= in_val; #else data[r*packcols + c].chnl[p][ch] = in_val; #endif +// } +// } +// } +// } +// */ +// int ncpr = ((cols + NPPC - 1) >> XF_BITSHIFT(NPPC)); +// for (int r = 0; r < rows; r++) { +// for (int c = 0; c < ncpr; c++) { +// for (int p = 0; p < nppc; p++) { +// for (int ch = 0; ch < XF_CHANNELS(T, NPPC); ch++) { +// if ((c << XF_BITSHIFT(NPPC) + p) < cols) { +// if (T == XF_32FC1) { +// in_val = float2ap_uint >( +// input[XF_CHANNELS(T, NPPC) * ((r * cols + c) * nppc + p) + ch]); +// } else { +// in_val = input[XF_CHANNELS(T, NPPC) * ((r * cols + c) * nppc + p) + ch]; +// } +// } else { +// in_val = 0; +// } +// +//#ifdef __SDSVHLS__ +// data[r * ncpr + c].range((p * pixdepth) + (ch + 1) * bitdepth - 1, (p * pixdepth) + ch * bitdepth) +// = +// in_val; +//#else +// data[r * ncpr + c].chnl[p][ch] = in_val; +//#endif +// } +// } +// } // c +// } // r +//} + +template +inline void Mat::copyTo(void* _input) { +// clang-format off +#pragma HLS inline + // clang-format on + + XF_PTSNAME(T, NPPC)* input = (XF_PTSNAME(T, NPPC)*)_input; + XF_CTUNAME(T, NPPC) in_val; + + int packcols = cols >> XF_BITSHIFT(NPPC); // Total columns after considering parallelism + int pixdepth = XF_PIXELWIDTH(T, NPPC); // Total bits that make up the pixel + int bitdepth = pixdepth / XF_CHANNELS(T, NPPC); // Total bits that make up each channel of the pixel + int nppc = XF_NPIXPERCYCLE(NPPC); + + for (int r = 0; r < rows; r++) { + for (int c = 0; c < packcols; c++) { + for (int p = 0; p < nppc; p++) { + for (int ch = 0; ch < XF_CHANNELS(T, NPPC); ch++) { + if (T == XF_32FC1) { + in_val = float2ap_uint >( + input[XF_CHANNELS(T, NPPC) * ((r * packcols + c) * nppc + p) + ch]); + } else { + in_val = input[XF_CHANNELS(T, NPPC) * ((r * packcols + c) * nppc + p) + ch]; + } +#ifdef __SDSVHLS__ + data[r * packcols + c].range((p * pixdepth) + (ch + 1) * bitdepth - 1, + (p * pixdepth) + ch * bitdepth) = in_val; +#else + data[r * packcols + c].chnl[p][ch] = in_val; +#endif + } + } + } + } +} + +template +inline unsigned char* Mat::copyFrom() { +// clang-format off + #pragma HLS inline + // clang-format on + + // int packcols = cols >> XF_BITSHIFT(NPPC); //Total columns after considering parallelism + int pixdepth = XF_PIXELWIDTH(T, NPPC); // Total bits that make up the pixel + int bitdepth = pixdepth / XF_CHANNELS(T, NPPC); // Total bits that make up each channel of the pixel + int nppc = XF_NPIXPERCYCLE(NPPC); + + int cv_nbytes = bitdepth / 8; + + unsigned char* value = + (unsigned char*)malloc(rows * cols * (XF_CHANNELS(T, NPPC)) * (sizeof(unsigned char)) * cv_nbytes); + + int xf_npc_idx = 0; + int diff_ptr = 0; + int xf_ptr = 0; + int cv_ptr = 0; + + for (int r = 0; r < rows; r++) { + for (int c = 0; c < cols; c++) { + for (int ch = 0; ch < XF_CHANNELS(T, NPPC); ch++) { + for (int b = 0; b < cv_nbytes; ++b) { +#ifdef __SDSVHLS__ + value[cv_ptr++] = data[xf_ptr].range((xf_npc_idx * pixdepth) + (ch * bitdepth) + (b + 1) * 8 - 1, + (xf_npc_idx * pixdepth) + (ch * bitdepth) + b * 8); +#else + value[cv_ptr++] = data[xf_ptr].chnl[xf_npc_idx][ch].range((b + 1) * 8 - 1, b * 8); +#endif + } + } + if (xf_npc_idx == nppc - 1) { + xf_npc_idx = 0; + xf_ptr++; + } else { + xf_npc_idx++; + } + } + } + + return (unsigned char*)value; +} + +/* Member functions of Mat class */ +template +template +inline void Mat::convertTo(Mat& dst, + int otype, + double alpha, + double beta) { + assert((XF_CHANNELS(T, NPPC) == 1) && "Multi-channel images not supported"); + + XF_TNAME(T, NPPC) tmp_in_pix; + XF_TNAME(DST_T, NPPC) tmp_out_pix; + + XF_CTUNAME(T, NPPC) in_pix; + XF_CTUNAME(DST_T, NPPC) out_pix; + + int min, max; + + if (DST_T == XF_8UC1) { + min = 0; + max = 255; + } else if (DST_T == XF_16UC1) { + min = 0; + max = 65535; + } else if (DST_T == XF_16SC1) { + min = -32768; + max = 32767; + } else if (DST_T == XF_32SC1) { + min = -2147483648; + max = 2147483647; + } else { + assert(1 && "Output image type not supoorted. XF_8UC1, XF_16UC1, XF_16SC1 and XF_32SC1 are valid"); + } + +#define __SATCAST(X) (X >= max ? max : (X < 0 ? 0 : lround(X))) + + for (int i = 0; i < rows; i++) { + for (int j = 0; j> (XF_BITSHIFT(NPPC)); j++) { + int IN_STEP = XF_PIXELDEPTH(XF_DEPTH(T, NPPC)); + int OUT_STEP = XF_PIXELDEPTH(XF_DEPTH(DST_T, NPPC)); + int in_shift = 0; + int out_shift = 0; + + for (int k = 0; k < (1 << (XF_BITSHIFT(NPPC))); k++) { +#ifdef __SDSVHLS__ + in_pix = data[(i * cols >> (XF_BITSHIFT(NPPC))) + j].range(in_shift + IN_STEP - 1, in_shift); +#else + in_pix = data[(i * cols >> (XF_BITSHIFT(NPPC))) + j].chnl[k][0]; +#endif + + if (otype == XF_CONVERT_16U_TO_8U || otype == XF_CONVERT_16S_TO_8U || otype == XF_CONVERT_32S_TO_8U || + otype == XF_CONVERT_32S_TO_16U || otype == XF_CONVERT_32S_TO_16S) { + float tmp = (float)(in_pix * alpha + beta); + in_pix = __SATCAST(tmp); + + if (in_pix < min) in_pix = min; + if (in_pix > max) in_pix = max; + + tmp_out_pix.range(out_shift + OUT_STEP - 1, out_shift) = in_pix; + } else { + if ((((XF_PTNAME(XF_DEPTH(DST_T, NPPC)))in_pix * alpha) + beta) > max) { + tmp_out_pix.range(out_shift + OUT_STEP - 1, out_shift) = max; + + } else if ((((XF_PTNAME(XF_DEPTH(DST_T, NPPC)))in_pix * alpha) + beta) < min) { + tmp_out_pix.range(out_shift + OUT_STEP - 1, out_shift) = min; + + } else { + tmp_out_pix.range(out_shift + OUT_STEP - 1, out_shift) = __SATCAST(in_pix * alpha + beta); + } + } + + out_pix = tmp_out_pix.range(out_shift + OUT_STEP - 1, out_shift); +#ifdef __SDSVHLS__ + dst.data[(i * cols >> (XF_BITSHIFT(NPPC))) + j].range(out_shift + OUT_STEP - 1, out_shift) = out_pix; +#else + dst.data[(i * cols >> (XF_BITSHIFT(NPPC))) + j].chnl[k][0] = out_pix; +#endif + + in_shift = in_shift + IN_STEP; + out_shift = out_shift + OUT_STEP; + } + } + } +} + +template +Mat::~Mat() { +#ifndef __SYNTHESIS__ + if (data != NULL && allocatedFlag == 1) { + free(data); + } +#endif +} +//----------------------------------------------------------------------------------------------------// + +} // namespace cv +} // namespace xf + +#endif // _XF_STRUCTS_H_ diff --git a/vitis/v2020_1/multimediaIps/xf_types.hpp b/vitis/v2020_1/multimediaIps/xf_types.hpp new file mode 100644 index 00000000..05016e76 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_types.hpp @@ -0,0 +1,1652 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _XF_TYPES_H_ +#define _XF_TYPES_H_ + +#ifndef __cplusplus +#error C++ is needed to use this file! +#endif + +#include "ap_int.h" +#include "xf_params.hpp" +#include + +template +struct StreamType {}; +template <> +struct StreamType { + typedef ap_uint<2> name; + static const int bitdepth = 2; +}; +template <> +struct StreamType { + typedef ap_uint<8> name; + static const int bitdepth = 8; +}; +template <> +struct StreamType { + typedef ap_uint<9> name; + static const int bitdepth = 9; +}; +template <> +struct StreamType { + typedef ap_uint<10> name; + static const int bitdepth = 10; +}; +template <> +struct StreamType { + typedef ap_uint<12> name; + static const int bitdepth = 12; +}; +template <> +struct StreamType { + typedef ap_uint<16> name; + static const int bitdepth = 16; +}; +template <> +struct StreamType { + typedef ap_int<19> name; + static const int bitdepth = 19; +}; +template <> +struct StreamType { + typedef ap_uint<20> name; + static const int bitdepth = 20; +}; +template <> +struct StreamType { + typedef ap_uint<22> name; + static const int bitdepth = 22; +}; +template <> +struct StreamType { + typedef ap_uint<24> name; + static const int bitdepth = 24; +}; +template <> +struct StreamType { + typedef ap_int<24> name; + static const int bitdepth = 24; +}; +template <> +struct StreamType { + typedef ap_uint<30> name; + static const int bitdepth = 30; +}; +template <> +struct StreamType { + typedef ap_uint<32> name; + static const int bitdepth = 32; +}; +template <> +struct StreamType { + typedef float name; + static const int bitdepth = 32; +}; +template <> +struct StreamType { + typedef ap_int<35> name; + static const int bitdepth = 35; +}; +template <> +struct StreamType { + typedef ap_uint<36> name; + static const int bitdepth = 36; +}; +template <> +struct StreamType { + typedef ap_uint<40> name; + static const int bitdepth = 40; +}; +template <> +struct StreamType { + typedef ap_uint<48> name; + static const int bitdepth = 48; +}; +template <> +struct StreamType { + typedef ap_int<48> name; + static const int bitdepth = 48; +}; +template <> +struct StreamType { + typedef ap_uint<60> name; + static const int bitdepth = 60; +}; +template <> +struct StreamType { + typedef ap_uint<64> name; + static const int bitdepth = 64; +}; +template <> +struct StreamType { + typedef ap_uint<72> name; + static const int bitdepth = 72; +}; +template <> +struct StreamType { + typedef ap_uint<80> name; + static const int bitdepth = 80; +}; +template <> +struct StreamType { + typedef ap_uint<96> name; + static const int bitdepth = 96; +}; +template <> +struct StreamType { + typedef ap_int<96> name; + static const int bitdepth = 96; +}; +template <> +struct StreamType { + typedef ap_uint<120> name; + static const int bitdepth = 120; +}; +template <> +struct StreamType { + typedef ap_uint<128> name; + static const int bitdepth = 128; +}; +template <> +struct StreamType { + typedef ap_uint<144> name; + static const int bitdepth = 144; +}; +template <> +struct StreamType { + typedef ap_int<152> name; + static const int bitdepth = 152; +}; +template <> +struct StreamType { + typedef ap_uint<160> name; + static const int bitdepth = 160; +}; +template <> +struct StreamType { + typedef ap_int<160> name; + static const int bitdepth = 160; +}; +template <> +struct StreamType { + typedef ap_uint<176> name; + static const int bitdepth = 176; +}; +template <> +struct StreamType { + typedef ap_uint<192> name; + static const int bitdepth = 192; +}; +template <> +struct StreamType { + typedef ap_int<192> name; + static const int bitdepth = 192; +}; +template <> +struct StreamType { + typedef ap_uint<256> name; + static const int bitdepth = 256; +}; +template <> +struct StreamType { + typedef ap_int<280> name; + static const int bitdepth = 280; +}; +template <> +struct StreamType { + typedef ap_uint<288> name; + static const int bitdepth = 288; +}; +template <> +struct StreamType { + typedef ap_int<304> name; + static const int bitdepth = 304; +}; +template <> +struct StreamType { + typedef ap_int<320> name; + static const int bitdepth = 320; +}; +template <> +struct StreamType { + typedef ap_uint<352> name; + static const int bitdepth = 352; +}; +template <> +struct StreamType { + typedef ap_uint<384> name; + static const int bitdepth = 384; +}; +template <> +struct StreamType { + typedef ap_int<384> name; + static const int bitdepth = 384; +}; +template <> +struct StreamType { + typedef ap_uint<512> name; + static const int bitdepth = 512; +}; +template <> +struct StreamType { + typedef ap_int<560> name; + static const int bitdepth = 560; +}; +template <> +struct StreamType { + typedef ap_uint<576> name; + static const int bitdepth = 576; +}; + +template +struct PixelType {}; +template <> +struct PixelType { + typedef ap_uint<8> name; + typedef ap_uint<8> uname; + typedef unsigned char name2; + static const int bitdepth = 8; +}; +template <> +struct PixelType { + typedef ap_int<8> name; + typedef ap_uint<8> uname; + static const int bitdepth = 8; +}; +template <> +struct PixelType { + typedef ap_uint<9> name; + typedef ap_uint<9> uname; + static const int bitdepth = 9; +}; +template <> +struct PixelType { + typedef ap_int<9> name; + typedef ap_uint<9> uname; + static const int bitdepth = 9; +}; +template <> +struct PixelType { + typedef ap_uint<16> name; + typedef ap_uint<16> uname; + static const int bitdepth = 16; +}; +template <> +struct PixelType { + typedef ap_int<16> name; + typedef ap_uint<16> uname; + static const int bitdepth = 16; +}; +template <> +struct PixelType { + typedef ap_uint<32> name; + typedef ap_uint<32> uname; + static const int bitdepth = 32; +}; +template <> +struct PixelType { + typedef ap_int<32> name; + typedef ap_uint<32> uname; + static const int bitdepth = 32; +}; +template <> +struct PixelType { + typedef ap_int<19> name; + typedef ap_uint<19> uname; + static const int bitdepth = 19; +}; +template <> +struct PixelType { + typedef ap_int<35> name; + typedef ap_uint<35> uname; + static const int bitdepth = 35; +}; +template <> +struct PixelType { + typedef float name; + static const int bitdepth = 32; +}; +template <> +struct PixelType { + typedef ap_int<24> name; + typedef ap_uint<24> uname; + static const int bitdepth = 24; +}; +template <> +struct PixelType { + typedef ap_int<20> name; + typedef ap_uint<20> uname; + static const int bitdepth = 20; +}; +template <> +struct PixelType { + typedef ap_int<48> name; + typedef ap_uint<48> uname; + static const int bitdepth = 48; +}; +template <> +struct PixelType { + typedef ap_uint<2> name; + static const int bitdepth = 2; +}; +template <> +struct PixelType { + typedef ap_uint<24> name; + typedef ap_uint<24> uname; + static const int bitdepth = 24; +}; + +#define XF_NPIXPERCYCLE(flags) xfNPixelsPerCycle::nppc + +#define XF_BITSHIFT(flags) xfNPixelsPerCycle::datashift + +template +struct xfNPixelsPerCycle {}; +template <> +struct xfNPixelsPerCycle { + static const int datashift = 0; + static const int nppc = 1; +}; +template <> +struct xfNPixelsPerCycle { + static const int datashift = 1; + static const int nppc = 2; +}; +template <> +struct xfNPixelsPerCycle { + static const int datashift = 2; + static const int nppc = 4; +}; +template <> +struct xfNPixelsPerCycle { + static const int datashift = 3; + static const int nppc = 8; +}; +template <> +struct xfNPixelsPerCycle { + static const int datashift = 4; + static const int nppc = 16; +}; +template <> +struct xfNPixelsPerCycle { + static const int datashift = 5; + static const int nppc = 32; +}; + +template +struct DataType {}; + +// One channel data types +template <> +struct DataType { + typedef ap_uint<2> name; + typedef ap_uint<2> uname; + typedef ap_uint<2> cname; + typedef unsigned char sname; + static const int bitdepth = 2; + static const int pixelwidth = 2; + static const int pixeldepth = XF_2UP; + static const int wordwidth = XF_2UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<2> uname; + typedef ap_uint<2> cname; + typedef unsigned char sname; + static const int bitdepth = 2; + static const int pixelwidth = 2; + static const int pixeldepth = XF_2UP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<8> name; + typedef ap_uint<2> uname; + typedef ap_uint<2> cname; + typedef unsigned char sname; + static const int bitdepth = 2; + static const int pixelwidth = 2; + static const int pixeldepth = XF_2UP; + static const int wordwidth = XF_8UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<16> name; + typedef ap_uint<2> uname; + typedef ap_uint<2> cname; + typedef unsigned char sname; + static const int bitdepth = 2; + static const int pixelwidth = 2; + static const int pixeldepth = XF_2UP; + static const int wordwidth = XF_16UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<8> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned char wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_8UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<16> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned short wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_16UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned int wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_32UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_128UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_256UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<512> name; + typedef ap_uint<8> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long wname; + static const int bitdepth = 8; + static const int pixelwidth = 8; + static const int pixeldepth = XF_8UP; + static const int wordwidth = XF_512UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<10> name; + typedef ap_uint<10> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 10; + static const int pixelwidth = 10; + static const int pixeldepth = XF_10UP; + static const int wordwidth = XF_10UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<20> name; + typedef ap_uint<10> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 10; + static const int pixelwidth = 10; + static const int pixeldepth = XF_10UP; + static const int wordwidth = XF_20UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<40> name; + typedef ap_uint<10> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 10; + static const int pixelwidth = 10; + static const int pixeldepth = XF_10UP; + static const int wordwidth = XF_40UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<80> name; + typedef ap_uint<10> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 10; + static const int pixelwidth = 10; + static const int pixeldepth = XF_10UP; + static const int wordwidth = XF_80UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<160> name; + typedef ap_uint<10> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 10; + static const int pixelwidth = 10; + static const int pixeldepth = XF_10UP; + static const int wordwidth = XF_160UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<12> name; + typedef ap_uint<12> uname; + typedef ap_uint<12> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 12; + static const int pixelwidth = 12; + static const int pixeldepth = XF_12UP; + static const int wordwidth = XF_12UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<24> name; + typedef ap_uint<12> uname; + typedef ap_uint<12> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 12; + static const int pixelwidth = 12; + static const int pixeldepth = XF_12UP; + static const int wordwidth = XF_24UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<48> name; + typedef ap_uint<12> uname; + typedef ap_uint<12> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 12; + static const int pixelwidth = 12; + static const int pixeldepth = XF_12UP; + static const int wordwidth = XF_48UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<96> name; + typedef ap_uint<12> uname; + typedef ap_uint<12> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 12; + static const int pixelwidth = 12; + static const int pixeldepth = XF_12UP; + static const int wordwidth = XF_96UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<192> name; + typedef ap_uint<12> uname; + typedef ap_uint<12> cname; + typedef unsigned short int sname; + typedef unsigned short wname; + static const int bitdepth = 12; + static const int pixelwidth = 12; + static const int pixeldepth = XF_12UP; + static const int wordwidth = XF_192UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<16> name; + typedef ap_uint<16> uname; + typedef ap_int<16> cname; + typedef short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16SP; + static const int wordwidth = XF_16UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<16> uname; + typedef ap_int<16> cname; + typedef short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16SP; + static const int wordwidth = XF_32UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<16> uname; + typedef ap_int<16> cname; + typedef short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16SP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<16> uname; + typedef ap_int<16> cname; + typedef short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16SP; + static const int wordwidth = XF_128UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<16> uname; + typedef ap_int<16> cname; + typedef short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16SP; + static const int wordwidth = XF_256UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<16> name; + typedef ap_uint<16> uname; + typedef ap_uint<16> cname; + typedef unsigned short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_16UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<16> uname; + typedef ap_uint<16> cname; + typedef unsigned short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_32UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<16> uname; + typedef ap_uint<16> cname; + typedef unsigned short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<16> uname; + typedef ap_uint<16> cname; + typedef unsigned short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_128UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<16> uname; + typedef ap_uint<16> cname; + typedef unsigned short sname; + static const int bitdepth = 16; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_256UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef unsigned int sname; + typedef unsigned int wname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_32UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef unsigned int sname; + typedef unsigned long long wname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef unsigned int sname; + typedef unsigned long long wname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_128UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef unsigned int sname; + typedef unsigned long long wname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_256UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<512> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef unsigned int sname; + typedef unsigned long long wname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_512UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef float sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32FP; + static const int wordwidth = XF_32FW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef float sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32FP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef float sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32FP; + static const int wordwidth = XF_128UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef float sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32FP; + static const int wordwidth = XF_256UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<512> name; + typedef ap_uint<32> uname; + typedef ap_uint<32> cname; + typedef float sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32FP; + static const int wordwidth = XF_512UW; + static const int channel = 1; +}; + +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<32> uname; + typedef ap_int<32> cname; + typedef int sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32SP; + static const int wordwidth = XF_32UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<32> uname; + typedef ap_int<32> cname; + typedef int sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32SP; + static const int wordwidth = XF_64UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<32> uname; + typedef ap_int<32> cname; + typedef int sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32SP; + static const int wordwidth = XF_128UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<32> uname; + typedef ap_int<32> cname; + typedef int sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32SP; + static const int wordwidth = XF_256UW; + static const int channel = 1; +}; +template <> +struct DataType { + typedef ap_uint<512> name; + typedef ap_uint<32> uname; + typedef ap_int<32> cname; + typedef int sname; + static const int bitdepth = 32; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32SP; + static const int wordwidth = XF_512UW; + static const int channel = 1; +}; + +// Two channels data types +template <> +struct DataType { + typedef ap_uint<16> name; + typedef ap_uint<16> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned short int wname; + static const int bitdepth = 8; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_16UW; + static const int channel = 2; +}; +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<16> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned short int wname; + static const int bitdepth = 8; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_32UW; + static const int channel = 2; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<16> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_64UW; + static const int channel = 2; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<16> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_128UW; + static const int channel = 2; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<16> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 16; + static const int pixeldepth = XF_16UP; + static const int wordwidth = XF_256UW; + static const int channel = 2; +}; + +// template<> struct DataType { typedef ap_uint<40> name; typedef ap_uint<40> uname; +// typedef ap_uint<10> cname; typedef unsigned short int sname; typedef unsigned long long int wname; static const int +// bitdepth = 10; static const int pixeldepth = XF_40UP;static const int wordwidth = XF_40UW; static const int channel = +// 4;}; template<> struct DataType { typedef ap_uint<80> name; typedef ap_uint<40> uname; +// typedef ap_uint<10> cname; static const int bitdepth = 10; static const int pixeldepth = XF_40UP;static const int +// wordwidth = XF_80UW; static const int channel = 4;}; + +// Three channels data types (TODO: Pixeldepth of XF_16U3 needs correction) +template <> +struct DataType { + typedef ap_uint<24> name; + typedef ap_uint<24> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned int wname; + static const int bitdepth = 8; + static const int pixelwidth = 24; + static const int pixeldepth = XF_24UP; + static const int wordwidth = XF_24UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<48> name; + typedef ap_uint<24> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 24; + static const int pixeldepth = XF_24UP; + static const int wordwidth = XF_48UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<96> name; + typedef ap_uint<24> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 24; + static const int pixeldepth = XF_24UP; + static const int wordwidth = XF_96UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<192> name; + typedef ap_uint<24> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 24; + static const int pixeldepth = XF_24UP; + static const int wordwidth = XF_192UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<384> name; + typedef ap_uint<24> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 24; + static const int pixeldepth = XF_24UP; + static const int wordwidth = XF_384UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<30> name; + typedef ap_uint<30> uname; + typedef ap_uint<10> cname; + typedef unsigned short sname; + typedef unsigned int wname; + static const int bitdepth = 10; + static const int pixelwidth = 30; + static const int pixeldepth = XF_30UP; + static const int wordwidth = XF_30UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<60> name; + typedef ap_uint<30> uname; + typedef ap_uint<10> cname; + typedef unsigned short sname; + typedef unsigned long long int wname; + static const int bitdepth = 10; + static const int pixelwidth = 30; + static const int pixeldepth = XF_30UP; + static const int wordwidth = XF_60UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<120> name; + typedef ap_uint<30> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 10; + static const int pixelwidth = 30; + static const int pixeldepth = XF_30UP; + static const int wordwidth = XF_120UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<240> name; + typedef ap_uint<30> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 10; + static const int pixelwidth = 30; + static const int pixeldepth = XF_30UP; + static const int wordwidth = XF_240UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<36> name; + typedef ap_uint<36> uname; + typedef ap_uint<12> cname; + typedef unsigned short sname; + typedef unsigned long int wname; + static const int bitdepth = 12; + static const int pixelwidth = 36; + static const int pixeldepth = XF_36UP; + static const int wordwidth = XF_36UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<72> name; + typedef ap_uint<36> uname; + typedef ap_uint<12> cname; + typedef unsigned short sname; + typedef unsigned long int wname; + static const int bitdepth = 12; + static const int pixelwidth = 36; + static const int pixeldepth = XF_36UP; + static const int wordwidth = XF_72UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<144> name; + typedef ap_uint<36> uname; + typedef ap_uint<12> cname; + typedef unsigned short sname; + typedef unsigned long int wname; + static const int bitdepth = 12; + static const int pixelwidth = 36; + static const int pixeldepth = XF_36UP; + static const int wordwidth = XF_144UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<288> name; + typedef ap_uint<36> uname; + typedef ap_uint<12> cname; + typedef unsigned short sname; + typedef unsigned long int wname; + static const int bitdepth = 12; + static const int pixelwidth = 36; + static const int pixeldepth = XF_36UP; + static const int wordwidth = XF_288UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<48> name; + typedef ap_uint<48> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_48UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<96> name; + typedef ap_uint<48> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_96UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<192> name; + typedef ap_uint<48> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_192UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<384> name; + typedef ap_uint<48> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_384UW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<48> name; + typedef ap_uint<48> uname; + typedef ap_int<16> cname; + typedef short int sname; + typedef short int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48SP; + static const int wordwidth = XF_48SW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<96> name; + typedef ap_uint<48> uname; + typedef ap_int<16> cname; + typedef short int sname; + typedef short int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48SP; + static const int wordwidth = XF_96SW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<192> name; + typedef ap_uint<48> uname; + typedef ap_int<16> cname; + typedef short int sname; + typedef short int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48SP; + static const int wordwidth = XF_192SW; + static const int channel = 3; +}; +template <> +struct DataType { + typedef ap_uint<384> name; + typedef ap_uint<48> uname; + typedef ap_int<16> cname; + typedef short int sname; + typedef short int wname; + static const int bitdepth = 16; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48SP; + static const int wordwidth = XF_384SW; + static const int channel = 3; +}; + +// Four channels data types +template <> +struct DataType { + typedef ap_uint<32> name; + typedef ap_uint<32> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned int wname; + static const int bitdepth = 8; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_32UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<32> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + typedef unsigned long long int wname; + static const int bitdepth = 8; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_64UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<32> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + static const int bitdepth = 8; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_128UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<32> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + static const int bitdepth = 8; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_256UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<512> name; + typedef ap_uint<32> uname; + typedef ap_uint<8> cname; + typedef unsigned char sname; + static const int bitdepth = 8; + static const int pixelwidth = 32; + static const int pixeldepth = XF_32UP; + static const int wordwidth = XF_512UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<40> name; + typedef ap_uint<40> uname; + typedef ap_uint<10> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 10; + static const int pixelwidth = 40; + static const int pixeldepth = XF_40UP; + static const int wordwidth = XF_40UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<80> name; + typedef ap_uint<40> uname; + typedef ap_uint<10> cname; + static const int bitdepth = 10; + static const int pixelwidth = 40; + static const int pixeldepth = XF_40UP; + static const int wordwidth = XF_80UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<160> name; + typedef ap_uint<40> uname; + typedef ap_uint<10> cname; + static const int bitdepth = 10; + static const int pixelwidth = 40; + static const int pixeldepth = XF_40UP; + static const int wordwidth = XF_160UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<320> name; + typedef ap_uint<40> uname; + typedef ap_uint<10> cname; + static const int bitdepth = 10; + static const int pixelwidth = 40; + static const int pixeldepth = XF_40UP; + static const int wordwidth = XF_320UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<48> name; + typedef ap_uint<48> uname; + typedef ap_uint<12> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 12; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_48UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<96> name; + typedef ap_uint<48> uname; + typedef ap_uint<12> cname; + static const int bitdepth = 12; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_96UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<192> name; + typedef ap_uint<48> uname; + typedef ap_uint<12> cname; + static const int bitdepth = 12; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_192UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<384> name; + typedef ap_uint<48> uname; + typedef ap_uint<12> cname; + static const int bitdepth = 12; + static const int pixelwidth = 48; + static const int pixeldepth = XF_48UP; + static const int wordwidth = XF_384UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<64> name; + typedef ap_uint<64> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 64; + static const int pixeldepth = XF_64UP; + static const int wordwidth = XF_64UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<128> name; + typedef ap_uint<64> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 64; + static const int pixeldepth = XF_64UP; + static const int wordwidth = XF_128UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<256> name; + typedef ap_uint<64> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 64; + static const int pixeldepth = XF_64UP; + static const int wordwidth = XF_256UW; + static const int channel = 4; +}; +template <> +struct DataType { + typedef ap_uint<512> name; + typedef ap_uint<64> uname; + typedef ap_uint<16> cname; + typedef unsigned short int sname; + typedef unsigned long long int wname; + static const int bitdepth = 16; + static const int pixelwidth = 64; + static const int pixeldepth = XF_64UP; + static const int wordwidth = XF_512UW; + static const int channel = 4; +}; + +#define TC(TYPE) TC##TYPE + +#define XF_TNAME(flags, npc) typename DataType::name + +#define XF_DTUNAME(flags, npc) typename DataType::uname + +#define XF_CTUNAME(flags, npc) typename DataType::cname + +#define XF_PTSNAME(flags, npc) typename DataType::sname + +#define XF_WTNAME(flags, npc) typename DataType::wname + +#define XF_DTPIXELDEPTH(flags, npc) DataType::bitdepth + +#define XF_DEPTH(flags, npc) DataType::pixeldepth + +#define XF_WORDWIDTH(flags, npc) DataType::wordwidth + +#define XF_CHANNELS(flags, npc) DataType::channel + +#define XF_PIXELWIDTH(flags, npc) DataType::pixelwidth + +#define XF_PTNAME(flags) typename PixelType::name + +#define XF_PIXELDEPTH(flags) PixelType::bitdepth + +#define XF_PTUNAME(flags) typename PixelType::uname + +#define XF_PTNAME2(flags) typename PixelType::name2 + +#define XF_SNAME(flags) typename StreamType::name +#define XF_WORDDEPTH(flags) StreamType::bitdepth + +#define XF_NAME(flags, npc) ap_uint<(XF_DTPIXELDEPTH(flags, npc) / XF_CHANNELS(flags, npc)) * XF_NPIXPERCYCLE(npc)> + +// find image width in terms of the number of words used to represent the data +//#define IM_WIDTH(W,S) ((W)>>(S)) + +// Xilinx headers +#include "ap_int.h" +#include "ap_fixed.h" +#include +// Native types +// typedef unsigned long uint64_t; +typedef unsigned int uint32_t; +typedef unsigned short uint16_t; +// typedef long int int64_t; +typedef int int32_t; +typedef short int int16_t; +typedef unsigned char uchar_t; +typedef unsigned char uint8_t; +typedef signed char int8_t; + +// Arbitrary Precision integer types +typedef ap_uint<1> ap_uint1_t; +typedef ap_uint<2> ap_uint2_t; +typedef ap_uint<4> ap_uint4_t; +typedef ap_uint<5> ap_uint5_t; +typedef ap_uint<8> ap_uint8_t; +typedef ap_uint<9> ap_uint9_t; +typedef ap_uint<16> ap_uint16_t; +typedef ap_uint<17> ap_uint17_t; +typedef ap_uint<18> ap_uint18_t; +typedef ap_uint<20> ap_uint20_t; +typedef ap_uint<22> ap_uint22_t; +typedef ap_uint<23> ap_uint23_t; +typedef ap_uint<24> ap_uint24_t; +typedef ap_uint<32> ap_uint32_t; +typedef ap_uint<33> ap_uint33_t; +typedef ap_uint<34> ap_uint34_t; +typedef ap_uint<35> ap_uint35_t; +typedef ap_uint<38> ap_uint38_t; +typedef ap_uint<45> ap_uint45_t; +typedef ap_uint<48> ap_uint48_t; +typedef ap_uint<51> ap_uint51_t; +typedef ap_uint<64> ap_uint64_t; +typedef ap_uint<66> ap_uint66_t; +typedef ap_uint<72> ap_uint72_t; +typedef ap_uint<97> ap_uint97_t; +typedef ap_uint<101> ap_uint101_t; +typedef ap_uint<128> ap_uint128_t; +typedef ap_uint<144> ap_uint144_t; +typedef ap_uint<176> ap_uint176_t; +typedef ap_uint<192> ap_uint192_t; +typedef ap_uint<256> ap_uint256_t; +typedef ap_uint<352> ap_uint352_t; +typedef ap_uint<384> ap_uint384_t; +typedef ap_uint<512> ap_uint512_t; +typedef ap_uint<576> ap_uint576_t; + +typedef ap_int<8> ap_int8_t; +typedef ap_int<9> ap_int9_t; +typedef ap_int<12> ap_int12_t; +typedef ap_int<15> ap_int15_t; +typedef ap_int<16> ap_int16_t; +typedef ap_int<18> ap_int18_t; +typedef ap_int<19> ap_int19_t; +typedef ap_int<20> ap_int20_t; +typedef ap_int<24> ap_int24_t; +typedef ap_int<32> ap_int32_t; +typedef ap_int<35> ap_int35_t; +typedef ap_int<36> ap_int36_t; +typedef ap_int<42> ap_int42_t; +typedef ap_int<48> ap_int48_t; +typedef ap_int<64> ap_int64_t; +typedef ap_int<152> ap_int152_t; +typedef ap_int<304> ap_int304_t; +typedef ap_int<280> ap_int280_t; +typedef ap_int<560> ap_int560_t; + +// Arbitrary Precision fixed-point types +typedef ap_ufixed<12, 12> uint12_q0; +typedef ap_ufixed<16, 16> uint16_q0; // 16-bit unsigned with 0 fractional bits +typedef ap_ufixed<32, 32> uint32_q0; // 32-bit unsigned with 0 fractional bits +typedef ap_ufixed<8, 8> uint8_q0; // 8-bit unsigned with 0 fractional bits + +#endif //_XF_TYPES_H_ diff --git a/vitis/v2020_1/multimediaIps/xf_utility.hpp b/vitis/v2020_1/multimediaIps/xf_utility.hpp new file mode 100644 index 00000000..46a521dc --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_utility.hpp @@ -0,0 +1,527 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _XF_UTILITY_H_ +#define _XF_UTILITY_H_ + +#include +#include +#include "xf_common.hpp" +#include "xf_axi_sdata.hpp" + +namespace xf { +namespace cv { + +/** + * Extract Pixels from a packed word into an array from the index pos. + * The number of pixels to be extracted is determined by the NPC. + */ + +template +void xfPackPixels( + XF_PTNAME(PIXELDEPTH) * tmp_buf, XF_SNAME(WORDWIDTH) & val, uint16_t pos, int16_t loopIter, uint16_t& shift) { +// clang-format off + #pragma HLS INLINE + // clang-format on + ap_uint<8> STEP = XF_PIXELDEPTH(PIXELDEPTH); + + for (ap_int<9> i = 0; i < loopIter; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + XF_PTUNAME(PIXELDEPTH) tmp = tmp_buf[pos]; + val = val | (((XF_SNAME(WORDWIDTH))tmp) << (shift * STEP)); + pos++; + shift++; + } +} + +template +void xfExtractPixels(XF_PTNAME(PIXELDEPTH) * tmp_buf, XF_SNAME(WORDWIDTH) & val1, int pos) { +// clang-format off + #pragma HLS inline off + // clang-format on + XF_SNAME(WORDWIDTH) v = val1; + + int shift = 0; + int STEP = XF_PIXELDEPTH(PIXELDEPTH); +Extract_pixels_loop: + for (int i = 0; i < (1 << (XF_BITSHIFT(NPC))); i++) { +// clang-format off + #pragma HLS UNROLL + // clang-format on + tmp_buf[pos + i] = v.range(shift + STEP - 1, shift); + shift = shift + STEP; + } +} + +template +void xfExtractData(XF_PTNAME(DEPTH_SRC) * src_buf1, + XF_PTNAME(DEPTH_SRC) * src_buf2, + XF_PTNAME(DEPTH_SRC) * src_buf3, + XF_PTNAME(DEPTH_SRC) * src_buf4, + XF_PTNAME(DEPTH_SRC) * src_buf5, + XF_PTNAME(DEPTH_SRC) * src_buf6, + XF_PTNAME(DEPTH_SRC) * src_buf7, + XF_SNAME(WORDWIDTH_SRC) buf0, + XF_SNAME(WORDWIDTH_SRC) buf1, + XF_SNAME(WORDWIDTH_SRC) buf2, + XF_SNAME(WORDWIDTH_SRC) buf3, + XF_SNAME(WORDWIDTH_SRC) buf4, + XF_SNAME(WORDWIDTH_SRC) buf5, + XF_SNAME(WORDWIDTH_SRC) buf6) { +// clang-format off + #pragma HLS INLINE + // clang-format on + xfExtractPixels(&src_buf1[6], buf0, 0); + xfExtractPixels(&src_buf2[6], buf1, 0); + xfExtractPixels(&src_buf3[6], buf2, 0); + xfExtractPixels(&src_buf4[6], buf3, 0); + xfExtractPixels(&src_buf5[6], buf4, 0); + xfExtractPixels(&src_buf6[6], buf5, 0); + xfExtractPixels(&src_buf7[6], buf6, 0); +} + +template +void xfCopyData(XF_PTNAME(DEPTH_SRC) src_buf1[XF_NPIXPERCYCLE(NPC) + 6], + XF_PTNAME(DEPTH_SRC) src_buf2[XF_NPIXPERCYCLE(NPC) + 6], + XF_PTNAME(DEPTH_SRC) src_buf3[XF_NPIXPERCYCLE(NPC) + 6], + XF_PTNAME(DEPTH_SRC) src_buf4[XF_NPIXPERCYCLE(NPC) + 6], + XF_PTNAME(DEPTH_SRC) src_buf5[XF_NPIXPERCYCLE(NPC) + 6], + XF_PTNAME(DEPTH_SRC) src_buf6[XF_NPIXPERCYCLE(NPC) + 6], + XF_PTNAME(DEPTH_SRC) src_buf7[XF_NPIXPERCYCLE(NPC) + 6]) { +// clang-format off + #pragma HLS INLINE + // clang-format on + ap_uint<5> buf_size = (XF_NPIXPERCYCLE(NPC) + 6); + ap_uint<4> i = 0; + ap_uint<4> ind = buf_size - 6; + + for (i = 0; i < 6; i++, ind++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=6 max=6 + #pragma HLS unroll + // clang-format on + src_buf1[i] = src_buf1[ind]; + src_buf2[i] = src_buf2[ind]; + src_buf3[i] = src_buf3[ind]; + src_buf4[i] = src_buf4[ind]; + src_buf5[i] = src_buf5[ind]; + src_buf6[i] = src_buf6[ind]; + src_buf7[i] = src_buf7[ind]; + } +} + +/** + * CopyMemoryOut: Copies memory from BRAM to DDR + */ +template +void xFCopyBlockMemoryOut1(XF_SNAME(WORDWIDTH) * _src, unsigned long long int* _dst, int nbytes) { +#if _XF_SYNTHESIS_ + memcpy((unsigned long long int*)_dst, (unsigned long long int*)_src, SIZE); +#else + if (nbytes) memcpy((unsigned long long int*)_dst, (unsigned long long int*)_src, nbytes); +#endif +} + +/** + * CopyMemoryIn: Copies memory from DDR to BRAM if y_offset and x_offset is provided + */ +template +void xFCopyBlockMemoryIn1(unsigned long long int* _src, XF_SNAME(WORDWIDTH) * _dst, int nbytes) { +#if _XF_SYNTHESIS_ + memcpy((XF_SNAME(WORDWIDTH)*)_dst, (XF_SNAME(WORDWIDTH)*)_src, SIZE); +#else + memcpy((XF_SNAME(WORDWIDTH)*)_dst, (XF_SNAME(WORDWIDTH)*)_src, nbytes); +#endif +} + +/** + * CopyMemoryIn: Copies memory from DDR to BRAM if y_offset and x_offset is provided + */ +template +void xFCopyBlockMemoryIn(XF_SNAME(WORDWIDTH) * _src, XF_SNAME(WORDWIDTH) * _dst, int nbytes) { +#if _XF_SYNTHESIS_ + memcpy((AU_TNAME(WORDWIDTH)*)_dst, (AU_TNAME(WORDWIDTH)*)_src, SIZE); +#else + memcpy((XF_SNAME(WORDWIDTH)*)_dst, (XF_SNAME(WORDWIDTH)*)_src, nbytes); +#endif +} + +/** + * CopyMemoryOut: Copies memory from BRAM to DDR + */ +template +void xFCopyBlockMemoryOut(XF_SNAME(WORDWIDTH) * _src, XF_SNAME(WORDWIDTH) * _dst, int nbytes) { +#if _XF_SYNTHESIS_ + memcpy((XF_SNAME(WORDWIDTH)*)_dst, (XF_SNAME(WORDWIDTH)*)_src, SIZE); +#else + memcpy((XF_SNAME(WORDWIDTH)*)_dst, (XF_SNAME(WORDWIDTH)*)_src, nbytes); +#endif +} + +template +void xFDuplicateStream(hls::stream& in_strm, + hls::stream& out_strm1, + hls::stream& out_strm2, + int imwidth, + int imheight) { + for (int i = 0; i < imheight; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=IN_BH max=IN_BH + #pragma HLS LOOP_FLATTEN off + // clang-format on + for (int j = 0; j < (imwidth >> NPC); j++) { +// clang-format off + #pragma HLS pipeline + #pragma HLS LOOP_TRIPCOUNT min=IN_BW max=IN_BW + // clang-format on + XF_SNAME(WORDWIDTH) tmp = in_strm.read(); + out_strm1.write(tmp); + out_strm2.write(tmp); + } + } +} + +// ============================================================================== +// Class contains funcitons requried for accel file (top wrapper file) +// ============================================================================== +class accel_utils { + public: + // ============================================================================== + // Read module(s) to handle data transfer from AXI/HLS stream to xfMat + // ------------------------------------------------------------------------------ + + template + void Array2hlsStrm(ap_uint* srcPtr, hls::stream >& dstStrm, int rows, int cols) { + int pixel_width = COLOR_T * CH_WIDTH; + int loop_count = (((rows * cols * pixel_width) + PTR_WIDTH - 1) / PTR_WIDTH); + + for (int i = 0; i < loop_count; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=TRIPCOUNT + #pragma HLS PIPELINE + // clang-format on + dstStrm.write(srcPtr[i]); + } + } + + template + void hlsStrm2xfMat(hls::stream >& srcStrm, + xf::cv::Mat& dstMat, + int dstMat_cols_align_npc) { + int rows = dstMat.rows; + int cols = dstMat.cols; + int loop_count = (rows * dstMat_cols_align_npc) / XF_NPIXPERCYCLE(NPC); + int pad = dstMat_cols_align_npc - cols; + int in_size_bits = XF_PIXELWIDTH(MAT_T, NPC) * rows * dstMat_cols_align_npc; // channels + int ddr_read_cycles = (((in_size_bits) + (PTR_WIDTH)-1) / (PTR_WIDTH)); + int ddr_read_cnt = 0; + + int valid_bits = 0; + const int N_size = XF_PIXELWIDTH(MAT_T, NPC) * XF_NPIXPERCYCLE(NPC); + const int last_N_size = XF_PIXELWIDTH(MAT_T, NPC) * (XF_NPIXPERCYCLE(NPC) - pad); + const int PTR_WIDTH_min_N = PTR_WIDTH - N_size; + const int PTR_WIDTH_min_last_N = PTR_WIDTH - last_N_size; + const int PTR_WIDTH_plus_N = PTR_WIDTH + N_size; + const int PTR_WIDTH_plus_last_N = PTR_WIDTH + last_N_size; + + int K_size; + ap_uint r; + XF_TNAME(MAT_T, NPC) out; + int ncpr = dstMat_cols_align_npc / XF_NPIXPERCYCLE(NPC); // number of clock per row + int clk_cnt = 0; // clock counter. reset at the start of every row + int strm_cnt_disply = 0; + L1: + for (int i = 0; i < loop_count; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=TRIPCOUNT + #pragma HLS PIPELINE + // clang-format on + + int PTR_WIDTH_min_Ksize; + int PTR_WIDTH_plus_Ksize; + + if (clk_cnt == ncpr - 1) { + clk_cnt = 0; + K_size = last_N_size; + PTR_WIDTH_min_Ksize = PTR_WIDTH_min_last_N; + PTR_WIDTH_plus_Ksize = PTR_WIDTH_plus_last_N; + } else { + clk_cnt++; + K_size = N_size; + PTR_WIDTH_min_Ksize = PTR_WIDTH_min_N; + PTR_WIDTH_plus_Ksize = PTR_WIDTH_plus_N; + } + + int valid_bits_update; + int valid_bits_tmp = valid_bits - K_size; + XF_TNAME(MAT_T, NPC) out = 0; + + if (valid_bits < K_size) { + if (valid_bits != 0) { + out.range(valid_bits - 1, 0) = r.range(PTR_WIDTH - 1, PTR_WIDTH - valid_bits); + } + if (ddr_read_cnt < ddr_read_cycles) { + r = srcStrm.read(); + ddr_read_cnt++; + } else { + r = 0; + } + out.range(K_size - 1, valid_bits) = r.range(K_size - valid_bits - 1, 0); + valid_bits = PTR_WIDTH_min_Ksize + valid_bits; + } else { + out = r.range(PTR_WIDTH_plus_Ksize - valid_bits - 1, PTR_WIDTH - valid_bits); + valid_bits = valid_bits - K_size; + } + + dstMat.write(i, out); + } + int stop = 0; + } + + template + void Array2xfMat(ap_uint* srcPtr, xf::cv::Mat& dstMat) { +// clang-format off + #pragma HLS DATAFLOW + // clang-format on + assert((PTR_WIDTH >= XF_WORDDEPTH(XF_WORDWIDTH(MAT_T, NPC))) && + "The PTR_WIDTH must be always greater than or equal to the minimum width for the corresponding " + "configuration"); + const int ch_width = XF_DTPIXELDEPTH(MAT_T, NPC); + + hls::stream > strm; + int rows = dstMat.rows; + int cols = dstMat.cols; + int dstMat_cols_align_npc = ((dstMat.cols + (NPC - 1)) >> XF_BITSHIFT(NPC)) << XF_BITSHIFT(NPC); + Array2hlsStrm(srcPtr, strm, rows, cols); + hlsStrm2xfMat(strm, dstMat, dstMat_cols_align_npc); + } + + template + void axiStrm2hlsStrm(hls::stream >& srcPtr, + hls::stream >& dstStrm, + int rows, + int cols) { + int pixel_width = COLOR_T * CH_WIDTH; + int loop_count = (((rows * cols * pixel_width) + PTR_WIDTH - 1) / PTR_WIDTH); + + for (int i = 0; i < loop_count; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=TRIPCOUNT + #pragma HLS PIPELINE + // clang-format on + ap_axiu v = srcPtr.read(); + dstStrm.write(v.data); + } + } + + template + void axiStrm2xfMat(hls::stream >& srcPtr, xf::cv::Mat& dstMat) { +// clang-format off + #pragma HLS DATAFLOW + // clang-format on + assert((PTR_WIDTH >= XF_WORDDEPTH(XF_WORDWIDTH(MAT_T, NPC))) && + "The PTR_WIDTH must be always greater than or equal to the minimum width for the corresponding " + "configuration"); + const int ch_width = XF_DTPIXELDEPTH(MAT_T, NPC); + + hls::stream > strm; + int rows = dstMat.rows; + int cols = dstMat.cols; + int dstMat_cols_align_npc = ((dstMat.cols + (NPC - 1)) >> XF_BITSHIFT(NPC)) << XF_BITSHIFT(NPC); + axiStrm2hlsStrm(srcPtr, strm, rows, cols); + hlsStrm2xfMat(strm, dstMat, dstMat_cols_align_npc); + } + + // ============================================================================== + // Write module(s) to handle data transfer from xfMat to AXI/HLS stream + // ------------------------------------------------------------------------------ + + template + void xfMat2hlsStrm(xf::cv::Mat& srcMat, + hls::stream >& dstStrm, + int srcMat_cols_align_npc) { + int rows = srcMat.rows; + int cols = srcMat.cols; + int loop_count = (rows * srcMat_cols_align_npc) / XF_NPIXPERCYCLE(NPC); + int pad = srcMat_cols_align_npc - cols; + int out_size_bits = XF_PIXELWIDTH(MAT_T, NPC) * rows * srcMat_cols_align_npc; // channels + int ddr_write_cycles = (((out_size_bits) + (PTR_WIDTH)-1) / (PTR_WIDTH)); + int ddr_write_cnt = 0; + + int bits_to_add = PTR_WIDTH; + const int N_size = XF_PIXELWIDTH(MAT_T, NPC) * XF_NPIXPERCYCLE(NPC); + const int last_N_size = XF_PIXELWIDTH(MAT_T, NPC) * (XF_NPIXPERCYCLE(NPC) - pad); + const int PTR_WIDTH_min_N = PTR_WIDTH - N_size; + const int PTR_WIDTH_min_last_N = PTR_WIDTH - last_N_size; + const int PTR_WIDTH_plus_N = PTR_WIDTH + N_size; + const int PTR_WIDTH_plus_last_N = PTR_WIDTH + last_N_size; + + ap_uint r; + XF_TNAME(MAT_T, NPC) in; + int ncpr = srcMat_cols_align_npc / XF_NPIXPERCYCLE(NPC); // number of clock per row + int clk_cnt = 0; // clock counter. reset at the start of every row + + L1: + for (int i = 0; i < loop_count; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=TRIPCOUNT + #pragma HLS PIPELINE + // clang-format on + int K_size; + int PTR_WIDTH_min_Ksize; + int PTR_WIDTH_plus_Ksize; + if (clk_cnt == ncpr - 1) { + clk_cnt = 0; + K_size = last_N_size; + PTR_WIDTH_min_Ksize = PTR_WIDTH_min_last_N; + PTR_WIDTH_plus_Ksize = PTR_WIDTH_plus_last_N; + } else { + clk_cnt++; + K_size = N_size; + PTR_WIDTH_min_Ksize = PTR_WIDTH_min_N; + PTR_WIDTH_plus_Ksize = PTR_WIDTH_plus_N; + } + + in = srcMat.read(i); + + if (bits_to_add <= K_size) { + r.range(PTR_WIDTH - 1, PTR_WIDTH - bits_to_add) = in.range(bits_to_add - 1, 0); + dstStrm.write(r); + + if (bits_to_add != K_size) { + r.range(K_size - bits_to_add - 1, 0) = in.range(K_size - 1, bits_to_add); + } + bits_to_add = PTR_WIDTH_min_Ksize + bits_to_add; + } else { + r.range(PTR_WIDTH_plus_Ksize - bits_to_add - 1, PTR_WIDTH - bits_to_add) = in; + bits_to_add -= K_size; + } + } + + if (bits_to_add != PTR_WIDTH) { + dstStrm.write(r); + } + } + + template + void hlsStrm2Array(hls::stream >& srcStrm, ap_uint* dstPtr, int rows, int cols) { + int pixel_width = COLOR_T * CH_WIDTH; + int loop_count = (((rows * cols * pixel_width) + PTR_WIDTH - 1) / PTR_WIDTH); + + for (int i = 0; i < loop_count; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=TRIPCOUNT + #pragma HLS PIPELINE + // clang-format on + dstPtr[i] = srcStrm.read(); + } + } + + template + void xfMat2Array(xf::cv::Mat& srcMat, ap_uint* dstPtr) { +// clang-format off + #pragma HLS DATAFLOW + // clang-format on + assert((PTR_WIDTH >= XF_WORDDEPTH(XF_WORDWIDTH(MAT_T, NPC))) && + "The PTR_WIDTH must be always greater than or equal to the minimum width for the corresponding " + "configuration"); + const int ch_width = XF_DTPIXELDEPTH(MAT_T, NPC); + + hls::stream > strm; + int rows = srcMat.rows; + int cols = srcMat.cols; + int srcMat_cols_align_npc = ((srcMat.cols + (NPC - 1)) >> XF_BITSHIFT(NPC)) << XF_BITSHIFT(NPC); + + xfMat2hlsStrm(srcMat, strm, + srcMat_cols_align_npc); + hlsStrm2Array(strm, dstPtr, rows, cols); + } + + template + void hlsStrm2axiStrm(hls::stream >& srcStrm, + hls::stream >& dstPtr, + int rows, + int cols) { + int pixel_width = COLOR_T * CH_WIDTH; + int loop_count = (((rows * cols * pixel_width) + PTR_WIDTH - 1) / PTR_WIDTH); + + for (int i = 0; i < loop_count; i++) { +// clang-format off + #pragma HLS LOOP_TRIPCOUNT min=1 max=TRIPCOUNT + #pragma HLS PIPELINE + // clang-format on + ap_axiu v; + v.data = srcStrm.read(); + dstPtr.write(v); + } + } + + template + void xfMat2axiStrm(xf::cv::Mat& srcMat, hls::stream >& dstPtr) { +// clang-format off + #pragma HLS DATAFLOW + // clang-format on + assert((PTR_WIDTH >= XF_WORDDEPTH(XF_WORDWIDTH(MAT_T, NPC))) && + "The PTR_WIDTH must be always greater than or equal to the minimum width for the corresponding " + "configuration"); + const int ch_width = XF_DTPIXELDEPTH(MAT_T, NPC); + + hls::stream > strm; + int rows = srcMat.rows; + int cols = srcMat.cols; + int srcMat_cols_align_npc = ((srcMat.cols + (NPC - 1)) >> XF_BITSHIFT(NPC)) << XF_BITSHIFT(NPC); + + xfMat2hlsStrm(srcMat, strm, + srcMat_cols_align_npc); + hlsStrm2axiStrm(strm, dstPtr, rows, cols); + } +}; + +template +void xfMat2Array(xf::cv::Mat& srcMat, ap_uint* dstPtr) { + accel_utils au; + au.xfMat2Array(srcMat, dstPtr); +} + +template +void Array2xfMat(ap_uint* srcPtr, xf::cv::Mat& dstMat) { + accel_utils au; + au.Array2xfMat(srcPtr, dstMat); +} + +template +void xfMat2axiStrm(xf::cv::Mat& srcMat, hls::stream >& dstPtr) { + accel_utils au; + au.xfMat2axiStrm(srcMat, dstPtr); +} + +template +void axiStrm2xfMat(hls::stream >& srcPtr, xf::cv::Mat& dstMat) { + accel_utils au; + au.axiStrm2xfMat(srcPtr, dstMat); +} + +} // namespace cv +} // namespace xf + +#endif //_XF_UTILITY_H_ diff --git a/vitis/v2020_1/multimediaIps/xf_video_core.hpp b/vitis/v2020_1/multimediaIps/xf_video_core.hpp new file mode 100644 index 00000000..53598b76 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_video_core.hpp @@ -0,0 +1,432 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This code is partially derived from OpenCV: +// opencv/modules/core/include/opencv2/core/core.hpp + +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +/* + * HLS Video Core Structures Header File + */ + +#ifndef ___XF__VIDEO_CORE__ +#define ___XF__VIDEO_CORE__ + +namespace xf { +namespace cv { + +/* Video Format Types defined on 8-bit boundaries */ +typedef struct { + unsigned char Y; + char UV; +} yuv422_8; + +typedef struct { + unsigned char Y; + char U; + char V; +} yuv444_8; + +typedef struct { + unsigned char R; + unsigned char G; + unsigned char B; +} rgb_8; + +typedef yuv422_8 yuv420_8; + +typedef struct { + char A; + unsigned char Y; + char UV; +} yuva422_8; + +typedef struct { + char A; + unsigned char Y; + char U; + char V; +} yuva444_8; + +typedef struct { + char A; + unsigned char R; + unsigned char G; + unsigned char B; +} rgba_8; + +typedef struct { + char AUV; + unsigned char Y; +} yuva420_8; + +typedef struct { + unsigned char D; + unsigned char Y; + char UV; +} yuvd422_8; + +typedef struct { + unsigned char D; + unsigned char Y; + char U; + char V; +} yuvd444_8; + +typedef struct { + unsigned char D; + unsigned char R; + unsigned char G; + unsigned char B; +} rgbd_8; + +typedef yuvd422_8 yuvd420_8; + +typedef struct { unsigned char CMY; } bayer_8; + +typedef struct { unsigned char Y; } luma_8; +/* convertors for different pixel types*/ + +/* yuv422_8 and yuv420_8 */ +template +yuv422_8 Scalar_to_yuv422_8(Scalar<2, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuv422_8 pix; + pix.Y = (unsigned char)scl.val[0]; + pix.UV = (char)scl.val[1]; + return pix; +} +template +Scalar<2, T> yuv422_8_to_Scalar(yuv422_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<2, T> scl; + scl.val[0] = (T)pix.Y; + scl.val[1] = (T)pix.UV; + return scl; +} + +/* yuv444_8 */ +template +yuv444_8 Scalar_to_yuv444_8(Scalar<3, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuv444_8 pix; + pix.Y = (unsigned char)scl.val[0]; + pix.U = (char)scl.val[1]; + pix.V = (char)scl.val[2]; + return pix; +} +template +Scalar<3, T> yuv444_8_to_Scalar(yuv444_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<3, T> scl; + scl.val[0] = (T)pix.Y; + scl.val[1] = (T)pix.U; + scl.val[2] = (T)pix.V; + return scl; +} + +/* rgb_8 */ +template +rgb_8 Scalar_to_rgb_8(Scalar<3, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + rgb_8 pix; + pix.R = (unsigned char)scl.val[0]; + pix.G = (unsigned char)scl.val[1]; + pix.B = (unsigned char)scl.val[2]; + return pix; +} +template +Scalar<3, T> rgb_8_to_Scalar(rgb_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<3, T> scl; + scl.val[0] = (T)pix.R; + scl.val[1] = (T)pix.G; + scl.val[2] = (T)pix.B; + return scl; +} + +/* yuva422_8 */ +template +yuva422_8 Scalar_to_yuva422_8(Scalar<3, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuva422_8 pix; + pix.A = (char)scl.val[0]; + pix.Y = (unsigned char)scl.val[1]; + pix.UV = (char)scl.val[2]; + return pix; +} +template +Scalar<3, T> yuva422_8_to_Scalar(yuva422_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<3, T> scl; + scl.val[0] = (T)pix.A; + scl.val[1] = (T)pix.Y; + scl.val[2] = (T)pix.UV; + return scl; +} + +/* yuva444_8 */ +template +yuva444_8 Scalar_to_yuva444_8(Scalar<4, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuva444_8 pix; + pix.A = (char)scl.val[0]; + pix.Y = (unsigned char)scl.val[1]; + pix.U = (char)scl.val[2]; + pix.V = (char)scl.val[3]; + return pix; +} +template +Scalar<4, T> yuva444_8_to_Scalar(yuva444_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<4, T> scl; + scl.val[0] = (T)pix.A; + scl.val[1] = (T)pix.Y; + scl.val[2] = (T)pix.U; + scl.val[3] = (T)pix.V; + return scl; +} + +/* rgba_8 */ +template +rgba_8 Scalar_to_rgba_8(Scalar<4, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + rgba_8 pix; + pix.A = (char)scl.val[0]; + pix.R = (unsigned char)scl.val[1]; + pix.G = (unsigned char)scl.val[2]; + pix.B = (unsigned char)scl.val[3]; + return pix; +} +template +Scalar<4, T> rgba_8_to_Scalar(rgba_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<4, T> scl; + scl.val[0] = (T)pix.A; + scl.val[1] = (T)pix.R; + scl.val[2] = (T)pix.G; + scl.val[3] = (T)pix.B; + return scl; +} + +/* yuva420_8 */ +template +yuva420_8 Scalar_to_yuva420_8(Scalar<2, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuva420_8 pix; + pix.AUV = (char)scl.val[0]; + pix.Y = (unsigned char)scl.val[1]; + return pix; +} +template +Scalar<2, T> yuva420_8_to_Scalar(yuva420_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<2, T> scl; + scl.val[0] = (T)pix.AUV; + scl.val[1] = (T)pix.Y; + return scl; +} + +/* yuvd422_8 and yuvd420_8*/ +template +yuvd422_8 Scalar_to_yuvd422_8(Scalar<3, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuvd422_8 pix; + pix.D = (unsigned char)scl.val[0]; + pix.Y = (unsigned char)scl.val[1]; + pix.UV = (char)scl.val[2]; + return pix; +} +template +Scalar<3, T> yuvd422_8_to_Scalar(yuvd422_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<3, T> scl; + scl.val[0] = (T)pix.D; + scl.val[1] = (T)pix.Y; + scl.val[2] = (T)pix.UV; + return scl; +} + +/* yuvd444_8 */ +template +yuvd444_8 Scalar_to_yuvd444_8(Scalar<4, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + yuvd444_8 pix; + pix.D = (unsigned char)scl.val[0]; + pix.Y = (unsigned char)scl.val[1]; + pix.U = (char)scl.val[2]; + pix.V = (char)scl.val[3]; + return pix; +} +template +Scalar<4, T> yuvd444_8_to_Scalar(yuvd444_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<4, T> scl; + scl.val[0] = (T)pix.D; + scl.val[1] = (T)pix.Y; + scl.val[2] = (T)pix.U; + scl.val[3] = (T)pix.V; + return scl; +} + +/* rgbd_8 */ +template +rgbd_8 Scalar_to_rgbd_8(Scalar<4, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + rgbd_8 pix; + pix.D = (unsigned char)scl.val[0]; + pix.R = (unsigned char)scl.val[1]; + pix.G = (unsigned char)scl.val[2]; + pix.B = (unsigned char)scl.val[3]; + return pix; +} +template +Scalar<4, T> rgbd_8_to_Scalar(rgbd_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<4, T> scl; + scl.val[0] = (T)pix.D; + scl.val[1] = (T)pix.R; + scl.val[2] = (T)pix.G; + scl.val[3] = (T)pix.B; + return scl; +} + +/* bayer_8 */ +template +bayer_8 Scalar_to_bayer_8(Scalar<1, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + bayer_8 pix; + pix.CMY = (unsigned char)scl.val[0]; + return pix; +} +template +Scalar<1, T> bayer_8_to_Scalar(bayer_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<1, T> scl; + scl.val[0] = (T)pix.CMY; + return scl; +} + +/* luma_8 */ +template +luma_8 Scalar_to_luma_8(Scalar<1, T> scl) { +// clang-format off + #pragma HLS inline + // clang-format on + luma_8 pix; + pix.Y = (unsigned char)scl.val[0]; + return pix; +} +template +Scalar<1, T> luma_8_to_Scalar(luma_8 pix) { +// clang-format off + #pragma HLS inline + // clang-format on + Scalar<1, T> scl; + scl.val[0] = (T)pix.Y; + return scl; +} + +} // namespace cv +} // namespace xf + +#endif diff --git a/vitis/v2020_1/multimediaIps/xf_video_mem.hpp b/vitis/v2020_1/multimediaIps/xf_video_mem.hpp new file mode 100644 index 00000000..16a73f5d --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_video_mem.hpp @@ -0,0 +1,1071 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * HLS Video Memory Partition Header File + */ + +#ifndef ___XF__VIDEO_MEM__ +#define ___XF__VIDEO_MEM__ + +//#define __DEBUG__ + +#ifdef AESL_SYN +#undef __DEBUG__ +#endif + +#include "string.h" +#include "xf_params.hpp" + +typedef ap_uint<32> XF_SIZE_T; + +namespace xf { +namespace cv { + +//-------------------------------------------------------------------------------------- +// Template class of Window +//-------------------------------------------------------------------------------------- +template +class Window { + public: + Window(){ +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val dim=1 complete + #pragma HLS ARRAY_PARTITION variable=val dim=2 complete + // clang-format on + }; + + /* Window main APIs */ + void shift_pixels_left(); + void shift_pixels_right(); + void shift_pixels_up(); + void shift_pixels_down(); + void insert_pixel(T value, int row, int col); + void insert_row(T value[COLS], int row); + void insert_top_row(T value[COLS]); + void insert_bottom_row(T value[COLS]); + void insert_col(T value[ROWS], int col); + void insert_left_col(T value[ROWS]); + void insert_right_col(T value[ROWS]); + T& getval(int row, int col); + T& operator()(int row, int col); + + /* Back compatible APIs */ + void shift_left(); + void shift_right(); + void shift_up(); + void shift_down(); + void insert(T value, int row, int col); + void insert_top(T value[COLS]); + void insert_bottom(T value[COLS]); + void insert_left(T value[ROWS]); + void insert_right(T value[ROWS]); + // T& getval(int row, int col); + // T& operator ()(int row, int col); + + T val[ROWS][COLS]; +#ifdef __DEBUG__ + void restore_val(); + void window_print(); + T val_t[ROWS][COLS]; +#endif +}; + +/* Member functions of Window class */ +/* Origin in upper-left point */ +/* 0 1 C-2 C-1 + * +---+---+-...-+---+---+ + * 0 | | | | | | + * +---+---+-...-+---+---+ + * 1 | | | | | | + * +---+---+-...-+---+---+ + * ... ... ... + * +---+---+-...-+---+---+ + * R-2 | | | | | | + * +---+---+-...-+---+---+ + * R-1 | | | | | | + * +---+---+-...-+---+---+ + * + */ + +/* + * Window content shift left + * Assumes new values will be placed in right column = COLS-1 + */ +template +void Window::shift_pixels_left() { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + for (j = 0; j < COLS - 1; j++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][j] = val[i][j + 1]; + } + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j == COLS - 1) + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_left mismatch! ***"); + else + assert(val_t[i][j + 1] == val[i][j] && "*** window shift_pixels_left mismatch! ***"); + } + } +#endif +} + +/* + * Window content shift right + * Assumes new values will be placed in left column = 0 + */ +template +void Window::shift_pixels_right() { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + for (j = COLS - 1; j > 0; j--) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][j] = val[i][j - 1]; + } + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j == 0) + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_right mismatch! ***"); + else + assert(val_t[i][j - 1] == val[i][j] && "*** window shift_pixels_right mismatch! ***"); + } + } +#endif +} + +/* + * Window content shift up + * Assumes new values will be placed in bottom row = ROWS-1 + */ +template +void Window::shift_pixels_up() { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + XF_SIZE_T i, j; + for (i = 0; i < ROWS - 1; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + for (j = 0; j < COLS; j++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][j] = val[i + 1][j]; + } + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (i == ROWS - 1) + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_up mismatch! ***"); + else + assert(val_t[i + 1][j] == val[i][j] && "*** window shift_pixels_up mismatch! ***"); + } + } +#endif +} + +/* + * Window content shift down + * Assumes new values will be placed in top row = 0 + */ +template +void Window::shift_pixels_down() { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + XF_SIZE_T i, j; + for (i = ROWS - 1; i > 0; i--) { +// clang-format off + #pragma HLS unroll + // clang-format on + for (j = 0; j < COLS; j++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][j] = val[i - 1][j]; + } + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (i == 0) + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_down mismatch! ***"); + else + assert(val_t[i - 1][j] == val[i][j] && "*** window shift_pixels_down mismatch! ***"); + } + } +#endif +} + +/* Window insert pixel + * Inserts a new value at any location of the window + */ +template +void Window::insert_pixel(T value, int row, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(row >= 0 && row < ROWS && col >= 0 && col < COLS); + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + val[row][col] = value; + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (i != row && j != col) assert(val_t[i][j] == val[i][j] && "*** window insert_pixel mismatch! ***"); + } + } + val_t[row][col] = value; + assert(val_t[row][col] == val[row][col] && "*** window insert_pixel mismatch! ***"); +#endif +} + +/* Window insert row + * Inserts a set of values in any row of the window + */ +template +void Window::insert_row(T value[COLS], int row) { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + XF_SIZE_T j; + for (j = 0; j < COLS; j++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[row][j] = value[j]; + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T i; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (i != row) + assert(val_t[i][j] == val[i][j] && "*** window insert_row mismatch! ***"); + else + assert(val[i][j] == value[j] && "*** window insert_row mismatch! ***"); + } + } +#endif +} + +/* Window insert top row + * Inserts a set of values in top row = 0 of the window + */ +template +void Window::insert_top_row(T value[COLS]) { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + insert_row(value, 0); + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (i != 0) + assert(val_t[i][j] == val[i][j] && "*** window insert_top_row mismatch! ***"); + else + assert(val[i][j] == value[j] && "*** window insert_top_row mismatch! ***"); + } + } +#endif +} + +/* Window insert bottom row + * Inserts a set of values in bottom row = ROWS-1 of the window + */ +template +void Window::insert_bottom_row(T value[COLS]) { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + insert_row(value, ROWS - 1); + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (i != ROWS - 1) + assert(val_t[i][j] == val[i][j] && "*** window insert_bottom_row mismatch! ***"); + else + assert(val[i][j] == value[j] && "*** window insert_bottom_row mismatch! ***"); + } + } +#endif +} + +/* Window insert column + * Inserts a set of values in any column of the window + */ +template +void Window::insert_col(T value[ROWS], int col) { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + XF_SIZE_T i; + for (i = 0; i < ROWS; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][col] = value[i]; + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j != col) + assert(val_t[i][j] == val[i][j] && "*** window insert_col mismatch! ***"); + else + assert(val[i][j] == value[i] && "*** window insert_col mismatch! ***"); + } + } +#endif +} + +/* Window insert left column + * Inserts a set of values in left column = 0 of the window + */ +template +void Window::insert_left_col(T value[ROWS]) { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + insert_col(value, 0); + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j != 0) + assert(val_t[i][j] == val[i][j] && "*** window insert_left_col mismatch! ***"); + else + assert(val[i][j] == value[i] && "*** window insert_left_col mismatch! ***"); + } + } +#endif +} + +/* Window insert right column + * Inserts a set of values in right column = COLS-1 of the window + */ +template +void Window::insert_right_col(T value[ROWS]) { +// clang-format off + #pragma HLS inline +// clang-format on + +#ifdef __DEBUG__ + std::cout << "Window Elements: "; + window_print(); + restore_val(); +#endif + + insert_col(value, COLS - 1); + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "Window Elements Update: "; + window_print(); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j != COLS - 1) + assert(val_t[i][j] == val[i][j] && "*** window insert_right_col mismatch! ***"); + else + assert(val[i][j] == value[i] && "*** window insert_right_col mismatch! ***"); + } + } +#endif +} + +/* Window getval + * Returns the data value in the window at position (row,col) + */ +template +T& Window::getval(int row, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(row >= 0 && row < ROWS && col >= 0 && col < COLS); + return val[row][col]; +} + +/* Window getval + * Returns the data value in the window at position (row,col) + */ +template +T& Window::operator()(int row, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + return getval(row, col); +} + +#ifdef __DEBUG__ +template +void Window::restore_val() { + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + val_t[i][j] = val[i][j]; + } + } +} + +template +void Window::window_print() { + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + std::cout << "\n"; + for (j = 0; j < COLS; j++) { + std::cout << std::setw(20) << val[i][j]; + } + } + std::cout << "\n\n"; +} +#endif + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window shift left, while contents shift right + * Assumes new values will be placed in left column(=COLS-1) + */ +template +void Window::shift_left() { +// clang-format off + #pragma HLS inline + // clang-format on + shift_pixels_left(); // take upper-left point as origin +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window shift right, while contents shift left + * Assumes new values will be placed in right column(=0) + */ +template +void Window::shift_right() { +// clang-format off + #pragma HLS inline + // clang-format on + shift_pixels_right(); // take upper-left point as origin +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window shift up, while contents shift down + * Assumes new values will be placed in top row(=ROWS-1) + */ +template +void Window::shift_up() { +// clang-format off + #pragma HLS inline + // clang-format on + shift_pixels_up(); // take upper-left point as origin +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window shift down, while contents shift up + * Assumes new values will be placed in bottom row(=0) + */ +template +void Window::shift_down() { +// clang-format off + #pragma HLS inline + // clang-format on + shift_pixels_down(); // take upper-left point as origin +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window insert + * Inserts a new value at any location of the window + */ +template +void Window::insert(T value, int row, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_pixel(value, row, col); +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window insert top + * Inserts a set of values in top row(=ROWS-1) + */ +template +void Window::insert_top(T value[COLS]) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_bottom_row(value); +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window insert bottom + * Inserts a set of values in bottom row(=0) + */ +template +void Window::insert_bottom(T value[COLS]) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_top_row(value); +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window insert left + * Inserts a set of values in left column(=COLS-1) + */ +template +void Window::insert_left(T value[ROWS]) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_right_col(value); +} + +/* NOTE: + * Back compatible APIs, take bottom-right point as the origin + * Window insert right + * Inserts a set of values in right column(=0) + */ +template +void Window::insert_right(T value[ROWS]) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_left_col(value); +} + +//-------------------------------------------------------------------------------------- +// Template class of Line Buffer +//-------------------------------------------------------------------------------------- +#define _LB_TPLT_DEC \ + template +#define _LB_TPLT template +#define _LB_ LineBuffer + +_LB_TPLT_DEC class LineBuffer { + public: + LineBuffer() { +// clang-format off + #pragma HLS dependence variable=val inter false + #pragma HLS dependence variable=val intra false + // clang-format on + + // #pragma HLS RESOURCE variable=val core=RAM_S2P_URAM + //#pragma HLS array reshape variable=val factor=RESHAPE_FACTOR dim=1 + + switch (MEM_TYPE) { + case RAM_1P_BRAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_1P_BRAM + // clang-format on + break; + case RAM_1P_URAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_1P_URAM + // clang-format on + break; + case RAM_2P_BRAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_2P_BRAM + // clang-format on + break; + case RAM_2P_URAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_2P_URAM + // clang-format on + break; + case RAM_S2P_BRAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_S2P_BRAM + // clang-format on + break; + case RAM_S2P_URAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_S2P_URAM + // clang-format on + break; + case RAM_T2P_BRAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_T2P_BRAM + // clang-format on + break; + case RAM_T2P_URAM: +// clang-format off + #pragma HLS RESOURCE variable=val core=RAM_T2P_URAM + // clang-format on + break; + default: + assert("MEM_TYPE should be one of RAM_*_BRAM or RAM_*_URAM (*: 1P, 2P, S2P, T2P)"); + } + + if (RESHAPE_FACTOR == 1) { +// clang-format off + #pragma HLS ARRAY_PARTITION variable=val complete dim=1 + // clang-format on + } else { +// clang-format off + #pragma HLS array reshape variable=val factor=RESHAPE_FACTOR dim=1 + // clang-format on + } + }; + + /* LineBuffer main APIs */ + void shift_pixels_up(int col); + void shift_pixels_down(int col); + void insert_bottom_row(T value, int col); + void insert_top_row(T value, int col); + void get_col(T value[ROWS], int col); + T& getval(int row, int col); + T& operator()(int row, int col); + + /* Back compatible APIs */ + void shift_up(int col); + void shift_down(int col); + void insert_bottom(T value, int col); + void insert_top(T value, int col); + // T& getval(int row, int col); + // T& operator ()(int row, int col); + + T val[ROWS][COLS]; +#ifdef __DEBUG__ + void restore_val(); + void linebuffer_print(int col); + T val_t[ROWS][COLS]; +#endif +}; +/* Member functions of LineBuffer class */ +/* Origin in upper-left point */ +/* 0 1 C-2 C-1 + * +---+---+-... ...-+---+---+ + * 0 | | | | | | + * +---+---+-... ...-+---+---+ + * 1 | | | | | | + * +---+---+-... ...-+---+---+ + * ... ... ... ... + * +---+---+-... ...-+---+---+ + * R-2 | | | | | | + * +---+---+-... ...-+---+---+ + * R-1 | | | | | | + * +---+---+-... ...-+---+---+ + * + */ + +/* Member functions of LineBuffer class */ + +/* + * LineBuffer content shift down + * Assumes new values will be placed in top row = 0 + */ +_LB_TPLT void _LB_::shift_pixels_down(int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(col >= 0 && col < COLS); + +#ifdef __DEBUG__ + std::cout << "LineBuffer Elements in col=" << col << ":"; + linebuffer_print(col); + restore_val(); +#endif + + XF_SIZE_T i; + for (i = ROWS - 1; i > 0; i--) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][col] = val[i - 1][col]; + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "LineBuffer Elements Update in col=" << col << ":"; + linebuffer_print(col); + XF_SIZE_T j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j == col) + if (i == 0) + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_down mismatch! ***"); + else + assert(val_t[i - 1][j] == val[i][j] && "*** window shift_pixels_down mismatch! ***"); + else + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_down mismatch! ***"); + } + } +#endif +} + +/* + * LineBuffer content shift up + * Assumes new values will be placed in top row = ROWS-1 + */ +_LB_TPLT void _LB_::shift_pixels_up(int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(col >= 0 && col < COLS); + +#ifdef __DEBUG__ + std::cout << "LineBuffer Elements in col=" << col << ":"; + linebuffer_print(col); + restore_val(); +#endif + + XF_SIZE_T i; + for (i = 0; i < ROWS - 1; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + val[i][col] = val[i + 1][col]; + } + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "LineBuffer Elements Update in col=" << col << ":"; + linebuffer_print(col); + XF_SIZE_T j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j == col) + if (i == ROWS - 1) + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_up mismatch! ***"); + else + assert(val_t[i + 1][j] == val[i][j] && "*** window shift_pixels_up mismatch! ***"); + else + assert(val_t[i][j] == val[i][j] && "*** window shift_pixels_up mismatch! ***"); + } + } +#endif +} + +/* LineBuffer insert bottom row + * Inserts a new value in bottom row= ROWS-1 of the linebuffer + */ +_LB_TPLT void _LB_::insert_bottom_row(T value, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(col >= 0 && col < COLS); + +#ifdef __DEBUG__ + std::cout << "LineBuffer Elements in col=" << col << ":"; + linebuffer_print(col); + restore_val(); +#endif + + val[ROWS - 1][col] = value; + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "LineBuffer Elements Update in col=" << col << ":"; + linebuffer_print(col); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j == col && i == ROWS - 1) + assert(val[i][j] == value && "*** window insert_bottom_row mismatch! ***"); + else + assert(val_t[i][j] == val[i][j] && "*** window insert_bottom_row mismatch! ***"); + } + } +#endif +} + +/* LineBuffer insert top row + * Inserts a new value in top row=0 of the linebuffer + */ +_LB_TPLT void _LB_::insert_top_row(T value, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(col >= 0 && col < COLS); + +#ifdef __DEBUG__ + std::cout << "LineBuffer Elements in col=" << col << ":"; + linebuffer_print(col); + restore_val(); +#endif + + val[0][col] = value; + +#ifdef __DEBUG__ + std::cout << "=== After " << __FUNCTION__ << ": ===\n\n"; + std::cout << "LineBuffer Elements Update in col=" << col << ":"; + linebuffer_print(col); + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + if (j == col && i == 0) + assert(val[i][j] == value && "*** window insert_top_row mismatch! ***"); + else + assert(val_t[i][j] == val[i][j] && "*** window insert_top_row mismatch! ***"); + } + } +#endif +} + +/* LineBuffer get a column + * Get a column value of the linebuffer + */ +_LB_TPLT void _LB_::get_col(T value[ROWS], int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(col >= 0 && col < COLS); + XF_SIZE_T i; + for (i = 0; i < ROWS; i++) { +// clang-format off + #pragma HLS unroll + // clang-format on + value[i] = val[i][col]; + } +} + +/* Line buffer getval + * Returns the data value in the line buffer at position row, col + */ +_LB_TPLT T& _LB_::getval(int row, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + assert(row >= 0 && row < ROWS && col >= 0 && col < COLS); + return val[row][col]; +} + +/* Line buffer getval + * Returns the data value in the line buffer at position row, col + */ +_LB_TPLT T& _LB_::operator()(int row, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + return getval(row, col); +} + +/* NOTE: + * Back compatible APIs, take bottom-left point as the origin + * LineBuffer shift down, while contents shift up + * Assumes new values will be placed in bottom row(=0) + */ +_LB_TPLT void _LB_::shift_down(int col) { +// clang-format off + #pragma HLS inline + // clang-format on + shift_pixels_down(col); +} + +/* NOTE: + * Back compatible APIs, take bottom-left point as the origin + * LineBuffer shift up, while contents shift down + * Assumes new values will be placed in top row(=ROWS-1) + */ +_LB_TPLT void _LB_::shift_up(int col) { +// clang-format off + #pragma HLS inline + // clang-format on + shift_pixels_up(col); +} + +/* NOTE: + * Back compatible APIs, take bottom-left point as the origin + * LineBuffer insert + * Inserts a new value in bottom row(=0) + */ +_LB_TPLT void _LB_::insert_bottom(T value, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_top_row(value, col); +} + +/* NOTE: + * Back compatible APIs, take bottom-left point as the origin + * LineBuffer insert + * Inserts a new value in top row(=ROWS-1) + */ +_LB_TPLT void _LB_::insert_top(T value, int col) { +// clang-format off + #pragma HLS inline + // clang-format on + insert_bottom_row(value, col); +} + +#ifdef __DEBUG__ +_LB_TPLT void _LB_::restore_val() { + XF_SIZE_T i, j; + for (i = 0; i < ROWS; i++) { + for (j = 0; j < COLS; j++) { + val_t[i][j] = val[i][j]; + } + } +} + +_LB_TPLT void _LB_::linebuffer_print(int col) { + XF_SIZE_T i; + for (i = 0; i < ROWS; i++) { + std::cout << "\n"; + std::cout << std::setw(20) << val[i][col]; + } + std::cout << "\n\n"; +} +#endif + +#undef _LB_TPLT_DEC +#undef _LB_TPLT +#undef _LB_ + +} // namespace cv +} // namespace xf + +#endif diff --git a/vitis/v2020_1/multimediaIps/xf_video_top.hpp b/vitis/v2020_1/multimediaIps/xf_video_top.hpp new file mode 100644 index 00000000..ecdb6419 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_video_top.hpp @@ -0,0 +1,29 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "xf_axi_io.hpp" +#include "xf_axi_sdata.hpp" +#include "xf_common.hpp" +#include "xf_infra.hpp" +#include "xf_params.hpp" +#include "xf_structs.hpp" +#include "xf_types.hpp" +#include "xf_utility.hpp" +#include "xf_video_core.hpp" +#include "xf_video_mem.hpp" +#include "xf_video_types.hpp" diff --git a/vitis/v2020_1/multimediaIps/xf_video_types.hpp b/vitis/v2020_1/multimediaIps/xf_video_types.hpp new file mode 100644 index 00000000..aded6c67 --- /dev/null +++ b/vitis/v2020_1/multimediaIps/xf_video_types.hpp @@ -0,0 +1,557 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* + * Copyright 2019 Xilinx, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This code is derived from OpenCV: +// opencv/modules/core/include/opencv2/core/types_c.h + +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +/* + * HLS Video Types Header File + */ + +#ifndef ___XF__VIDEO_TYPES__ +#define ___XF__VIDEO_TYPES__ +#include +//#define __INTERVAL(LB,x,RB) ( ( (x) > RB ) ? RB : ( (x) < LB ) ? LB : (x) ) + +//#define XF_CN_MAX 512 +//#define XF_CN_SHIFT 11 +//#define XF_DEPTH_MAX (1 << HLS_CN_SHIFT) +// +#define XF_8U 0 +#define XF_8S 1 +#define XF_16U 2 +#define XF_16S 3 +#define XF_32S 4 +#define XF_32F 5 +#define XF_64F 6 +#define XF_USRTYPE1 7 +#define XF_10U 8 +#define XF_10S 9 +#define XF_12U 10 +#define XF_12S 11 +// +//#define XF_MAT_DEPTH_MASK (XF_DEPTH_MAX - 1) +//#define XF_MAT_DEPTH(flags) ((flags) & XF_MAT_DEPTH_MASK) +// +//#define XF_MAKETYPE(depth,cn) (XF_MAT_DEPTH(depth) + (((cn)-1) << XF_CN_SHIFT)) +//#define XF_MAKE_TYPE XF_MAKETYPE +// +//#define HLS_8UC1 HLS_MAKETYPE(HLS_8U,1) +//#define HLS_8UC2 HLS_MAKETYPE(HLS_8U,2) +//#define HLS_8UC3 HLS_MAKETYPE(HLS_8U,3) +//#define HLS_8UC4 HLS_MAKETYPE(HLS_8U,4) +// +//#define HLS_8SC1 HLS_MAKETYPE(HLS_8S,1) +//#define HLS_8SC2 HLS_MAKETYPE(HLS_8S,2) +//#define HLS_8SC3 HLS_MAKETYPE(HLS_8S,3) +//#define HLS_8SC4 HLS_MAKETYPE(HLS_8S,4) +// +//#define HLS_10UC1 HLS_MAKETYPE(HLS_10U,1) +//#define HLS_10UC2 HLS_MAKETYPE(HLS_10U,2) +//#define HLS_10UC3 HLS_MAKETYPE(HLS_10U,3) +//#define HLS_10UC4 HLS_MAKETYPE(HLS_10U,4) +// +//#define HLS_10SC1 HLS_MAKETYPE(HLS_10S,1) +//#define HLS_10SC2 HLS_MAKETYPE(HLS_10S,2) +//#define HLS_10SC3 HLS_MAKETYPE(HLS_10S,3) +//#define HLS_10SC4 HLS_MAKETYPE(HLS_10S,4) +// +//#define HLS_12UC1 HLS_MAKETYPE(HLS_12U,1) +//#define HLS_12UC2 HLS_MAKETYPE(HLS_12U,2) +//#define HLS_12UC3 HLS_MAKETYPE(HLS_12U,3) +//#define HLS_12UC4 HLS_MAKETYPE(HLS_12U,4) +// +//#define HLS_12SC1 HLS_MAKETYPE(HLS_12S,1) +//#define HLS_12SC2 HLS_MAKETYPE(HLS_12S,2) +//#define HLS_12SC3 HLS_MAKETYPE(HLS_12S,3) +//#define HLS_12SC4 HLS_MAKETYPE(HLS_12S,4) +// +//#define HLS_16UC1 HLS_MAKETYPE(HLS_16U,1) +//#define HLS_16UC2 HLS_MAKETYPE(HLS_16U,2) +//#define HLS_16UC3 HLS_MAKETYPE(HLS_16U,3) +//#define HLS_16UC4 HLS_MAKETYPE(HLS_16U,4) +// +//#define HLS_16SC1 HLS_MAKETYPE(HLS_16S,1) +//#define HLS_16SC2 HLS_MAKETYPE(HLS_16S,2) +//#define HLS_16SC3 HLS_MAKETYPE(HLS_16S,3) +//#define HLS_16SC4 HLS_MAKETYPE(HLS_16S,4) +// +//#define HLS_32SC1 HLS_MAKETYPE(HLS_32S,1) +//#define HLS_32SC2 HLS_MAKETYPE(HLS_32S,2) +//#define HLS_32SC3 HLS_MAKETYPE(HLS_32S,3) +//#define HLS_32SC4 HLS_MAKETYPE(HLS_32S,4) +// +//#define HLS_32FC1 HLS_MAKETYPE(HLS_32F,1) +//#define HLS_32FC2 HLS_MAKETYPE(HLS_32F,2) +//#define HLS_32FC3 HLS_MAKETYPE(HLS_32F,3) +//#define HLS_32FC4 HLS_MAKETYPE(HLS_32F,4) +// +//#define HLS_64FC1 HLS_MAKETYPE(HLS_64F,1) +//#define HLS_64FC2 HLS_MAKETYPE(HLS_64F,2) +//#define HLS_64FC3 HLS_MAKETYPE(HLS_64F,3) +//#define HLS_64FC4 HLS_MAKETYPE(HLS_64F,4) +// +//#define HLS_SC(BITDEPTH,CN) HLS_MAKETYPE(BITDEPTH+12,CN) +// +//#define HLS_MAT_CN_MASK ((HLS_CN_MAX - 1) << HLS_CN_SHIFT) +//#define HLS_MAT_CN(flags) ((((flags) & HLS_MAT_CN_MASK) >> HLS_CN_SHIFT) + 1) +//#define HLS_MAT_TYPE_MASK (HLS_DEPTH_MAX*HLS_CN_MAX - 1) +//#define HLS_MAT_TYPE(flags) ((flags) & HLS_MAT_TYPE_MASK) +// +//#define HLS_ARE_TYPES_EQ(type1, type2) \ +// (((type1 ^ type2) & HLS_MAT_TYPE_MASK) == 0) +// +//#define HLS_ARE_SIZES_EQ(mat1, mat2) \ +// ((mat1).rows == (mat2).rows && (mat1).cols == (mat2).cols) + +template +struct Type { + typedef ap_int name; + static const int bitdepth = T - 12; +}; +template <> +struct Type { + typedef unsigned char name; + static const int bitdepth = 8; +}; +template <> +struct Type { + typedef char name; + static const int bitdepth = 8; +}; +template <> +struct Type { + typedef ap_uint<10> name; + static const int bitdepth = 10; +}; +template <> +struct Type { + typedef ap_int<10> name; + static const int bitdepth = 10; +}; +template <> +struct Type { + typedef ap_uint<12> name; + static const int bitdepth = 12; +}; +template <> +struct Type { + typedef ap_int<12> name; + static const int bitdepth = 12; +}; +template <> +struct Type { + typedef unsigned short name; + static const int bitdepth = 16; +}; +template <> +struct Type { + typedef short name; + static const int bitdepth = 16; +}; +template <> +struct Type { + typedef int name; + static const int bitdepth = 32; +}; +template <> +struct Type { + typedef float name; + static const int bitdepth = 32; +}; +template <> +struct Type { + typedef double name; + static const int bitdepth = 64; +}; + +template +struct pixel_op_type { + typedef PIXEL_T T; +}; +template <> +struct pixel_op_type { + typedef ap_uint<8> T; +}; +template <> +struct pixel_op_type { + typedef ap_int<8> T; +}; +template <> +struct pixel_op_type { + typedef ap_uint<16> T; +}; +template <> +struct pixel_op_type { + typedef ap_int<16> T; +}; +template <> +struct pixel_op_type { + typedef ap_uint<32> T; +}; +template <> +struct pixel_op_type { + typedef ap_int<32> T; +}; +template +struct pixel_op_type > { + typedef ap_int T; +}; +template +struct pixel_op_type > { + typedef ap_uint T; +}; + +#define HLS_TNAME(flags) typename Type::name + +#define HLS_TBITDEPTH(flags) Type::bitdepth + +#define XF_8U_MIN 0 +#define XF_8U_MAX 255 +#define XF_8S_MIN -127 +#define XF_8S_MAX 127 +#define XF_10U_MIN 0 +#define XF_10U_MAX 1023 +#define XF_10S_MIN -511 +#define XF_10S_MAX 511 +#define XF_12U_MIN 0 +#define XF_12U_MAX 4095 +#define XF_12S_MIN -2047 +#define XF_12S_MAX 2047 +#define XF_16U_MIN 0 +#define XF_16U_MAX 65535 +#define XF_16S_MIN -32767 +#define XF_16S_MAX 32767 +#define XF_32S_MIN -2147483647 +#define XF_32S_MAX 2147483647 + +template +struct Name { + static const int _min = XF_32S_MIN; + static const int _max = XF_32S_MAX; +}; +template <> +struct Name { + static const int _min = XF_8U_MIN; + static const int _max = XF_8U_MAX; +}; +template <> +struct Name { + static const int _min = XF_8S_MIN; + static const int _max = XF_8S_MAX; +}; +template <> +struct Name { + static const int _min = XF_16U_MIN; + static const int _max = XF_16U_MAX; +}; +template <> +struct Name { + static const int _min = XF_16S_MIN; + static const int _max = XF_16S_MAX; +}; +template <> +struct Name { + static const int _min = XF_32S_MIN; + static const int _max = XF_32S_MAX; +}; + +template +unsigned char Convert2uchar(T v) { + unsigned char result = XF_8U_MIN; + if (v >= XF_8U_MAX) { + result = XF_8U_MAX; + } else if (v >= XF_8U_MIN && v < XF_8U_MAX) { + ap_fixed<9, 9, AP_RND> temp = v; + result = temp; + } + return result; +} +template +char Convert2char(T v) { + char result = XF_8S_MIN; + if (v >= XF_8S_MAX) { + result = XF_8S_MAX; + } else if (v >= XF_8S_MIN && v < XF_8S_MAX) { + ap_fixed<9, 9, AP_RND> temp = v; + result = temp; + } + return result; +} +template +unsigned short Convert2ushort(T v) { + unsigned short result = XF_16U_MIN; + if (v >= XF_16U_MAX) { + result = XF_16U_MAX; + } else if (v >= XF_16U_MIN && v < XF_16U_MAX) { + ap_fixed<17, 17, AP_RND> temp = v; + result = temp; + } + return result; +} +template +short Convert2short(T v) { + short result = XF_16S_MIN; + if (v >= XF_16S_MAX) { + result = XF_16S_MAX; + } else if (v >= XF_16S_MIN && v < XF_16S_MAX) { + ap_fixed<17, 17, AP_RND> temp = v; + result = temp; + } + return result; +} +template +int Convert2int(T v) { + int result = XF_32S_MIN; + if (v >= XF_32S_MAX) { + result = XF_32S_MAX; + } else if (v >= XF_32S_MIN && v < XF_32S_MAX) { + ap_fixed<32, 32, AP_RND> temp = v; + result = temp; + } + return result; +} +// The type is redefined, in previous versions it was ap_int<12> +typedef ap_uint<32> XF_SIZE_T; +typedef ap_uint<5> XF_CHANNEL_T; + +namespace xf { +namespace cv { + +/* sr_cast: saturate and round cast: T1 -> T2 */ + +template +class sr_cast_class {}; + +template <> +class sr_cast_class { + public: + template + inline float operator()(T1 v) { + return v; + } + inline float operator()(double v) { return HLS_FPO_DTOF(v); } +}; + +template <> +class sr_cast_class { + public: + template + inline double operator()(T1 v) { + return v; + } + inline double operator()(float v) { return HLS_FPO_FTOD(v); } +}; + +template +class sr_cast_class > { + public: + template + inline ap_int operator()(ap_int v) { + return ap_fixed(v); + } + template + inline ap_int operator()(ap_uint v) { + return ap_fixed(v); + } + template + inline ap_int operator()(ap_fixed v) { + return ap_fixed(v); + } + template + inline ap_int operator()(ap_ufixed v) { + return ap_fixed(v); + } + template + inline ap_int operator()(ap_fixed_base v) { + return ap_fixed(v); + } + template + inline ap_int operator()(ap_fixed_base v) { + return ap_fixed(v); + } + inline ap_int operator()(float v) { + if (::hls::__isnan(v)) + return 0; + else + return ap_fixed(v); + } + inline ap_int operator()(double v) { + if (::hls::__isnan(v)) + return 0; + else + return ap_fixed(v); + } + inline ap_int operator()(unsigned char v) { return operator()(ap_uint<8>(v)); } + inline ap_int operator()(char v) { return operator()(ap_int<8>(v)); } + inline ap_int operator()(unsigned short v) { return operator()(ap_uint<16>(v)); } + inline ap_int operator()(short v) { return operator()(ap_int<16>(v)); } + inline ap_int operator()(unsigned int v) { return operator()(ap_uint<32>(v)); } + inline ap_int operator()(int v) { return operator()(ap_int<32>(v)); } + inline ap_int operator()(unsigned long long v) { return operator()(ap_uint<64>(v)); } + inline ap_int operator()(long long v) { return operator()(ap_int<64>(v)); } +}; + +template +class sr_cast_class > { + public: + template + inline ap_uint operator()(ap_int v) { + return ap_ufixed(v); + } + template + inline ap_uint operator()(ap_uint v) { + return ap_ufixed(v); + } + template + inline ap_uint operator()(ap_fixed v) { + return ap_ufixed(v); + } + template + inline ap_uint operator()(ap_ufixed v) { + return ap_ufixed(v); + } + template + inline ap_uint operator()(ap_fixed_base v) { + return ap_ufixed(v); + } + template + inline ap_uint operator()(ap_fixed_base v) { + return ap_ufixed(v); + } + inline ap_uint operator()(float v) { + if (::hls::__isnan(v)) + return 0; + else + return ap_ufixed(v); + } + inline ap_uint operator()(double v) { + if (::hls::__isnan(v)) + return 0; + else + return ap_ufixed(v); + } + inline ap_uint operator()(unsigned char v) { return operator()(ap_uint<8>(v)); } + inline ap_uint operator()(char v) { return operator()(ap_int<8>(v)); } + inline ap_uint operator()(unsigned short v) { return operator()(ap_uint<16>(v)); } + inline ap_uint operator()(short v) { return operator()(ap_int<16>(v)); } + inline ap_uint operator()(unsigned int v) { return operator()(ap_uint<32>(v)); } + inline ap_uint operator()(int v) { return operator()(ap_int<32>(v)); } + inline ap_uint operator()(unsigned long long v) { return operator()(ap_uint<64>(v)); } + inline ap_uint operator()(long long v) { return operator()(ap_int<64>(v)); } +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template <> +class sr_cast_class : public sr_cast_class > { + public: + using sr_cast_class >::operator(); +}; + +template +inline T2 sr_cast(T1 v) { + ::xf::cv::sr_cast_class V; + return V(v); +} + +} // namespace cv +} // namespace xf + +#endif diff --git a/vitis/v2020_1/svr/svr_base_sequence.sv b/vitis/v2020_1/svr/svr_base_sequence.sv new file mode 100755 index 00000000..98a607a2 --- /dev/null +++ b/vitis/v2020_1/svr/svr_base_sequence.sv @@ -0,0 +1,133 @@ +`ifndef SVR_BASE_SEQUENCE__SV + `define SVR_BASE_SEQUENCE__SV + + class svr_base_sequence#(int DATA_WIDTH = 32) extends uvm_sequence #(svr_transfer#(DATA_WIDTH)); + + uvm_event svr_evt_ap_done; + uvm_event svr_evt_ap_ready; + uvm_event svr_evt_ap_start; + uvm_event svr_evt_finish; + string received_event; + svr_info info; + file_read_agent#(DATA_WIDTH) file_rd; + int ii; + int latency; + virtual interface misc_interface misc_if; + int usr_delay[$]; + svr_delay_enum isusr_delay = NO_DELAY; + + + + typedef bit [DATA_WIDTH - 1: 0] DATA_QUEUE_TYPE [$]; + typedef bit [DATA_WIDTH - 1: 0] DATA_TYPE; + + protected DATA_QUEUE_TYPE TV_Queue[$]; + protected DATA_QUEUE_TYPE TV; + + `uvm_object_param_utils_begin (svr_base_sequence#(DATA_WIDTH)) + `uvm_object_utils_end + + function new (string name = "svr_base_sequence"); + super.new(name); + svr_evt_ap_done = new("svr_evt_ap_done"); + svr_evt_ap_ready = new("svr_evt_ap_ready"); + svr_evt_ap_start = new("svr_evt_ap_start"); + svr_evt_finish = new("svr_evt_finish"); + file_rd = new("file_rd"); + received_event = ""; + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + extern virtual protected task parse_trigger(); + + extern virtual protected function void read_file(); + extern virtual protected function int get_TestVector_num(); + extern virtual protected function int get_TestVector_size(); + extern virtual local function void push_TestVector(DATA_QUEUE_TYPE TV); + extern virtual protected function void pop_TestVector(); + extern virtual local function void push_data(DATA_TYPE data); + extern virtual protected function DATA_TYPE pop_data(); + + extern virtual protected function int is_event_AP_START(); + extern virtual protected function int is_event_AP_READY(); + extern virtual protected function int is_event_AP_DONE(); + extern virtual protected function int is_event_FINAL_AP_DONE(); + extern virtual protected function int is_event_FINISH(); + + endclass + + task svr_base_sequence::parse_trigger(); + //uvm_object data; + //svr_evt.wait_trigger_data(data); + // + //$cast(info, data); + //assert($cast(info, data)) else + // `uvm_error(this.get_full_name(), "Dynamic cast failed!") + //if (info.dutevt == AP_START) + // received_event = "AP_START"; + //else if (info.dutevt == AP_READY) + // received_event = "AP_READY"; + //else if (info.dutevt == AP_DONE) + // received_event = "AP_DONE"; + //else if (info.dutevt == FINAL_AP_DONE) + // received_event = "FINAL_AP_DONE"; + //else if (info.dutevt == FINISH) + // received_event = "FINISH"; + //else + // `uvm_fatal(this.get_full_name(), "unkown event received"); + // + //`uvm_info(this.get_full_name(), $sformatf("receive event: %s", received_event), UVM_FULL) + endtask + + + function int svr_base_sequence::get_TestVector_num(); + return TV_Queue.size(); + endfunction + + function int svr_base_sequence::get_TestVector_size(); + return TV.size(); + endfunction + + function void svr_base_sequence::push_TestVector(DATA_QUEUE_TYPE TV); + TV_Queue.push_back(TV); + endfunction + + function void svr_base_sequence::pop_TestVector(); + TV = TV_Queue.pop_front(); + endfunction + + function void svr_base_sequence::push_data(DATA_TYPE data); + TV.push_back(data); + endfunction + + function svr_base_sequence::DATA_TYPE svr_base_sequence::pop_data(); + return TV.pop_front(); + endfunction + + function void svr_base_sequence::read_file(); + file_rd.read_TVIN_file(); + TV_Queue = file_rd.TV_Queue; + endfunction + + function int svr_base_sequence::is_event_AP_START(); + return received_event == "AP_START"; + endfunction + + function int svr_base_sequence::is_event_AP_READY(); + return received_event == "AP_READY"; + endfunction + + function int svr_base_sequence::is_event_AP_DONE(); + return received_event == "AP_DONE"; + endfunction + + function int svr_base_sequence::is_event_FINAL_AP_DONE(); + return received_event == "FINAL_AP_DONE"; + endfunction + + function int svr_base_sequence::is_event_FINISH(); + return received_event == "FINISH"; + endfunction + +`endif + diff --git a/vitis/v2020_1/svr/svr_config.sv b/vitis/v2020_1/svr/svr_config.sv new file mode 100755 index 00000000..ca144ff1 --- /dev/null +++ b/vitis/v2020_1/svr/svr_config.sv @@ -0,0 +1,22 @@ +`ifndef SVR_CONFIG__SV + `define SVR_CONFIG__SV + + class svr_config extends uvm_object; + svr_inst_type svr_type; + svr_protocol_type prt_type; + svr_active_passive_enum is_active; + svr_reset_level_enum reset_level; + + `uvm_object_utils_begin(svr_config) + `uvm_field_enum(svr_inst_type , svr_type , UVM_DEFAULT) + `uvm_field_enum(svr_protocol_type , prt_type , UVM_DEFAULT) + `uvm_field_enum(svr_active_passive_enum, is_active , UVM_DEFAULT) + `uvm_field_enum(svr_reset_level_enum , reset_level, UVM_DEFAULT) + `uvm_object_utils_end + + function new (string name = "svr_config"); + super.new(name); + endfunction + endclass + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/svr/svr_env.sv b/vitis/v2020_1/svr/svr_env.sv new file mode 100755 index 00000000..b8681c14 --- /dev/null +++ b/vitis/v2020_1/svr/svr_env.sv @@ -0,0 +1,36 @@ +`ifndef SVR_ENV__SV + `define SVR_ENV__SV + + class svr_env#(int DATA_WIDTH = 32) extends uvm_env; + + svr_master_agent#(DATA_WIDTH) m_agt; + svr_slave_agent #(DATA_WIDTH) s_agt; + svr_config cfg ; + + function new (string name = "svr_env", uvm_component parent); + super.new(name, parent); + //`uvm_info (this.get_full_name(), "new is called", UVM_LOW) + endfunction + + extern virtual function void build_phase (uvm_phase phase); + + `uvm_component_param_utils_begin(svr_env#(DATA_WIDTH)) + `uvm_component_utils_end + endclass + + function void svr_env::build_phase (uvm_phase phase); + super.build_phase(phase); + `uvm_info (this.get_full_name(), "build_phase is called", UVM_LOW) + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + if (cfg.svr_type == SVR_MASTER) begin + m_agt = svr_master_agent#(DATA_WIDTH)::type_id::create("m_agt", this); + //`uvm_info (this.get_full_name(), "env initialized as master", UVM_LOW) + end else if (cfg.svr_type == SVR_SLAVE) begin + s_agt = svr_slave_agent#(DATA_WIDTH)::type_id::create("s_agt", this); + //`uvm_info (this.get_full_name(), "env initialized as slave", UVM_LOW) + end else + `uvm_fatal(this.get_full_name(), "invalid svr_config received!!!") + endfunction + +`endif diff --git a/vitis/v2020_1/svr/svr_info.sv b/vitis/v2020_1/svr/svr_info.sv new file mode 100755 index 00000000..e0e669e6 --- /dev/null +++ b/vitis/v2020_1/svr/svr_info.sv @@ -0,0 +1,18 @@ +`ifndef SVR_INFO__SV + `define SVR_INFO__SV + + class svr_info extends uvm_object; + hs_event dutevt; + int trans_size; + + `uvm_object_utils_begin(svr_info) + `uvm_field_enum(hs_event, dutevt, UVM_DEFAULT); + `uvm_field_int(trans_size, UVM_DEFAULT); + `uvm_object_utils_end + + function new (string name = "svr_info"); + super.new(name); + endfunction + endclass + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/svr/svr_master_agent.sv b/vitis/v2020_1/svr/svr_master_agent.sv new file mode 100755 index 00000000..e902342b --- /dev/null +++ b/vitis/v2020_1/svr/svr_master_agent.sv @@ -0,0 +1,49 @@ +`ifndef SVR_MASTER_AGENT__SV + `define SVR_MASTER_AGENT__SV + + class svr_master_agent#(int DATA_WIDTH = 32) extends uvm_agent; + svr_master_sequencer#(DATA_WIDTH) sqr; + svr_master_driver#(DATA_WIDTH) drv; + svr_master_monitor#(DATA_WIDTH) mon; + uvm_analysis_port #(svr_transfer#(DATA_WIDTH)) item_collect_port; + + svr_config cfg ; + + function new (string name, uvm_component parent); + super.new(name, parent); + //`uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + extern virtual function void build_phase (uvm_phase phase); + extern virtual function void connect_phase (uvm_phase phase); + + `uvm_component_param_utils_begin(svr_master_agent#(DATA_WIDTH)) + `uvm_component_utils_end + endclass + + function void svr_master_agent::build_phase(uvm_phase phase); + super.build_phase(phase); + //`uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + + if (cfg.is_active == SVR_ACTIVE) begin + sqr = svr_master_sequencer#(DATA_WIDTH)::type_id::create("sqr", this); + drv = svr_master_driver#(DATA_WIDTH)::type_id::create("drv", this); + end + + mon = svr_master_monitor#(DATA_WIDTH)::type_id::create("mon", this); + endfunction + + function void svr_master_agent::connect_phase(uvm_phase phase); + super.connect_phase(phase); + if (cfg.is_active == SVR_ACTIVE) begin + drv.seq_item_port.connect(sqr.seq_item_export); + end + item_collect_port = mon.item_collect_port; + //`uvm_info(this.get_full_name(), "connect_phase is called", UVM_LOW); + endfunction + +`endif + diff --git a/vitis/v2020_1/svr/svr_master_driver.sv b/vitis/v2020_1/svr/svr_master_driver.sv new file mode 100755 index 00000000..3368b8bc --- /dev/null +++ b/vitis/v2020_1/svr/svr_master_driver.sv @@ -0,0 +1,120 @@ +`ifndef SVR_MASTER_DRIVER__SV + `define SVR_MASTER_DRIVER__SV + class svr_master_driver#(int DATA_WIDTH = 32) extends uvm_driver#(svr_transfer#(DATA_WIDTH)); + virtual svr_if#(DATA_WIDTH) vif; + svr_config cfg; + + `uvm_component_param_utils_begin (svr_master_driver#(DATA_WIDTH)) + `uvm_component_utils_end + function new (string name = "svr_master_driver", uvm_component parent = null); + super.new (name, parent); + `uvm_info (this.get_full_name(), "new is called", UVM_LOW) + endfunction + + extern virtual task run_phase (uvm_phase phase); + extern virtual function void build_phase (uvm_phase phase); + extern virtual task get_and_drive(svr_transfer#(DATA_WIDTH) tr); + endclass + + function void svr_master_driver::build_phase(uvm_phase phase); + super.build_phase(phase); + `uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + if(!uvm_config_db #(virtual svr_if#(DATA_WIDTH))::get(this, "", "vif", vif)) + `uvm_fatal(this.get_full_name(), "virtual interface must be set for vif!!!") + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + + endfunction + + task svr_master_driver::run_phase (uvm_phase phase); + `uvm_info (this.get_full_name(), "run_phase is called", UVM_LOW) + + vif.data <= {DATA_WIDTH{1'b0}}; + vif.valid <= 1'b0; + if (cfg.prt_type == AP_VLD || cfg.prt_type==AP_NONE) begin + vif.ready <= 1'b0; + end + + //reduce one clock waiting after reset is de-asserted + //better timing for ap_none input + if (cfg.reset_level == RESET_LEVEL_LOW) begin + wait(vif.rst===1'b1); + //while (!vif.rst) + // @(posedge vif.clk); + end + else if (cfg.reset_level == RESET_LEVEL_HIGH) begin + wait(vif.rst===1'b0); + //while (vif.rst) + // @(posedge vif.clk); + end + else begin + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported reset level!!!") + end + + while (1) begin + seq_item_port.get_next_item(req); + get_and_drive(req); + seq_item_port.item_done(); + end + endtask + + task svr_master_driver::get_and_drive(svr_transfer#(DATA_WIDTH) tr); + + `uvm_info (this.get_full_name(), "begin to drive data", UVM_FULL) + `uvm_info (this.get_full_name(), $sformatf("receive data: %0d, delay: %0d", tr.data, tr.delay), UVM_HIGH) + + //reduce one clock waiting after reset is de-asserted + //better timing for ap_none input + if (cfg.reset_level == RESET_LEVEL_LOW) begin + wait(vif.rst===1'b1); + //while (!vif.rst) + // @(posedge vif.clk); + end + else if (cfg.reset_level == RESET_LEVEL_HIGH) begin + wait(vif.rst===1'b0); + //while (vif.rst) + // @(posedge vif.clk); + end + else begin + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported reset level!!!") + end + + if ((cfg.prt_type == AXIS) || (cfg.prt_type == AP_FIFO) || (cfg.prt_type == AP_HS)) begin + if (tr.delay > 0) begin + repeat (tr.delay) @(posedge vif.clk); + end + end + else if ((cfg.prt_type == AP_VLD )|| (cfg.prt_type == AP_NONE)) begin + // AP_VLD and AP_NONE no delay + vif.ready = 1'b1; + end + else if (cfg.prt_type == AP_ACK) begin + // AP_ACK no delay + end + else + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported port protocol!!!") + + #0; + vif.data = tr.data; + vif.valid = 1'b1; + + `uvm_info (this.get_full_name(), "set vif.valid = 1", UVM_HIGH) + forever begin + @(posedge vif.clk); + if ((vif.ready == 1) && (vif.valid == 1)) begin + vif.valid <= 1'b0; + if (cfg.prt_type == AP_VLD || cfg.prt_type==AP_NONE) begin + vif.ready = 1'b0; + end + `uvm_info (this.get_full_name(), "get vif.ready = 1", UVM_HIGH) + `uvm_info (this.get_full_name(), "set vif.valid = 0", UVM_HIGH) + break; + end + end + + `uvm_info (this.get_full_name(), "data is drived", UVM_FULL) + + endtask + +`endif diff --git a/vitis/v2020_1/svr/svr_master_monitor.sv b/vitis/v2020_1/svr/svr_master_monitor.sv new file mode 100755 index 00000000..96709e64 --- /dev/null +++ b/vitis/v2020_1/svr/svr_master_monitor.sv @@ -0,0 +1,192 @@ +`ifndef SVR_MASTER_MONITOR__SV + `define SVR_MASTER_MONITOR__SV + + class svr_master_monitor#(int DATA_WIDTH = 32) extends uvm_monitor; + + virtual svr_if#(DATA_WIDTH) vif; + uvm_analysis_port #(svr_transfer#(DATA_WIDTH)) item_collect_port; + + svr_config cfg; + + int delay; + int state; + int state_d1; + + covergroup master_v2rdelay; + option.per_instance = 1; + v2rdelay: coverpoint delay + { + bins min = {-1}; + bins zero = {0}; + bins norm[] = {[1: 20]}; + } + endgroup + + `uvm_component_param_utils_begin(svr_master_monitor#(DATA_WIDTH)); + `uvm_component_utils_end + + function new(string name = "svr_master_monitor", uvm_component parent = null); + super.new(name, parent); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + master_v2rdelay = new; + master_v2rdelay.option.name = this.get_full_name(); + endfunction + + virtual function void build_phase(uvm_phase phase); + super.build_phase(phase); + `uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + + item_collect_port = new("item_collect_port", this); + + if(!uvm_config_db#(virtual svr_if#(DATA_WIDTH))::get(this, "", "vif", vif)) + `uvm_fatal(this.get_full_name(), "virtual interface must be set for vif!!!") + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + if (cfg.svr_type != SVR_MASTER) + `uvm_fatal(this.get_full_name(), "invalid svr_config received!!!") + + endfunction + + extern task run_phase(uvm_phase phase); + extern task collect_one_pkt(svr_transfer#(DATA_WIDTH) tr); + extern task calculate_delay(); + endclass + + task svr_master_monitor::run_phase(uvm_phase phase); + svr_transfer#(DATA_WIDTH) tr; + fork + while (1) begin + tr = new("tr"); + collect_one_pkt(tr); + item_collect_port.write(tr); + end + + calculate_delay(); + join + endtask + + task svr_master_monitor::collect_one_pkt(svr_transfer#(DATA_WIDTH) tr); + forever begin + @(posedge vif.clk); + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + tr.data = vif.data; + break; + end + end + + `uvm_info(this.get_full_name(), "collected one pkt", UVM_DEBUG); + endtask + + task svr_master_monitor::calculate_delay(); + parameter STATE_IDLE = 1; + parameter STATE_WAIT_READY = 2; + parameter STATE_WAIT_VALID = 4; + parameter STATE_COLLECT_DATA = 8; + + delay = 0; + state = STATE_IDLE; + state_d1 = STATE_IDLE; + + if (cfg.reset_level == RESET_LEVEL_LOW) begin + while (!vif.rst) + @(posedge vif.clk); + end + else if (cfg.reset_level == RESET_LEVEL_HIGH) begin + while (vif.rst) + @(posedge vif.clk); + end + else begin + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported reset level!!!") + end + + fork + forever begin + @(posedge vif.clk); + case (state) + STATE_IDLE : begin + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + state <= STATE_COLLECT_DATA; + end + else if (vif.valid == 1'b1) begin + state <= STATE_WAIT_READY; + end + else if (vif.ready == 1'b1) begin + state <= STATE_WAIT_VALID; + end + else begin + state <= STATE_IDLE; + end + end + + STATE_WAIT_READY : begin + if (vif.ready == 1'b1) begin + state <= STATE_COLLECT_DATA; + end + else begin + state <= STATE_WAIT_READY; + end + end + + STATE_WAIT_VALID : begin + if (vif.valid == 1'b1) begin + state <= STATE_COLLECT_DATA; + end + else begin + state <= STATE_WAIT_VALID; + end + end + + STATE_COLLECT_DATA : begin + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + state <= STATE_COLLECT_DATA; + end + else if (vif.valid == 1'b1) begin + state <= STATE_WAIT_READY; + end + else if (vif.ready == 1'b1) begin + state <= STATE_WAIT_VALID; + end + else begin + state <= STATE_IDLE; + end + end + + default: begin + state <= STATE_IDLE; + end + endcase + + state_d1 <= state; + + `uvm_info(this.get_full_name(), $sformatf("state: %0d, state_d1: %0d", state, state_d1), UVM_DEBUG); + end + + forever begin + @(posedge vif.clk); + if (state == STATE_COLLECT_DATA) begin + delay <= 0; + end + else begin + delay <= delay + 1; + end + + `uvm_info(this.get_full_name(), $sformatf("delay: %0d", delay), UVM_DEBUG); + end + + forever begin + @(posedge vif.clk); + if (((state == STATE_WAIT_READY) && (state_d1 == STATE_IDLE)) || + ((state == STATE_COLLECT_DATA) && (state_d1 == STATE_WAIT_VALID)) || + ((state == STATE_COLLECT_DATA) && (state_d1 == STATE_COLLECT_DATA)) || + ((state == STATE_WAIT_READY) && (state_d1 == STATE_COLLECT_DATA)) || + ((state == STATE_COLLECT_DATA) && (state_d1 == STATE_IDLE))) begin + `uvm_info(this.get_full_name(), $sformatf("calculate delay: %0d, state: %0d, state_d1: %0d", delay, state, state_d1), UVM_DEBUG); + master_v2rdelay.sample; + end + end + join + + endtask + +`endif diff --git a/vitis/v2020_1/svr/svr_master_sequence.sv b/vitis/v2020_1/svr/svr_master_sequence.sv new file mode 100755 index 00000000..5d160657 --- /dev/null +++ b/vitis/v2020_1/svr/svr_master_sequence.sv @@ -0,0 +1,74 @@ +`ifndef SVR_MASTER_SEQUENCE__SV + `define SVR_MASTER_SEQUENCE__SV + + class svr_master_sequence#(int DATA_WIDTH = 32) extends svr_base_sequence#(DATA_WIDTH); + + svr_transfer#(DATA_WIDTH) svr_trans; + svr_config cfg; + DATA_TYPE data; + int one_sect_read; + + `uvm_object_param_utils_begin (svr_master_sequence#(DATA_WIDTH)) + `uvm_object_utils_end + + function new (string name = "svr_master_sequence"); + super.new(name); + one_sect_read = 0; + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + virtual task body(); + uvm_object evtdata; + int delayidx = 0; + `uvm_info(this.get_full_name(), "body is called", UVM_LOW) + if(!uvm_config_db #(svr_config)::get(m_sequencer, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + + read_file(); + while (get_TestVector_num() > 0) begin + + pop_TestVector(); + `uvm_info(this.get_full_name(), $sformatf("switch to new transaction with size %0d", get_TestVector_size()), UVM_MEDIUM) + + while (get_TestVector_size() > 0) begin + int delay; + data = pop_data(); + `uvm_create(svr_trans); + + if(isusr_delay==NO_DELAY) svr_trans.delay = 0; + else if(usr_delay.size==0) begin + void'(std::randomize(delay) with { + delay dist {1:=4, 0:=4, ii:=1, latency:=1, [0:latency]:/5}; + delay inside {[0:latency]}; + }); + svr_trans.delay = delay; + end else begin + svr_trans.delay = usr_delay.pop_front(); + if(isusr_delay==LEFT_ROUND_DELAY) usr_delay.push_back(svr_trans.delay); + end + + svr_trans.data = data; + `uvm_info(this.get_full_name(), {"send trans:", svr_trans.sprint}, UVM_MEDIUM) + `uvm_send(svr_trans); + if(cfg.prt_type==AP_HS||cfg.prt_type==AP_FIFO) begin + if(svr_evt_ap_ready.is_on()&&get_TestVector_size()>0) begin + `uvm_error(this.get_full_name(), $sformatf("DUT needs less data than vector provide, left data number:%0d", get_TestVector_size())) + end + end + end + one_sect_read = 1; + case( cfg.prt_type ) + AP_VLD, AP_NONE, AP_HS, AP_FIFO, AXIS: begin + `uvm_info(this.get_full_name(), $sformatf("wait for ap_ready"), UVM_MEDIUM) + svr_evt_ap_ready.wait_on(); + evtdata = svr_evt_ap_ready.get_trigger_data(); + svr_evt_ap_ready.reset(); + end + endcase + end + `uvm_info(this.get_full_name(), "send all TVs done", UVM_LOW) + endtask + + endclass + +`endif diff --git a/vitis/v2020_1/svr/svr_master_sequencer.sv b/vitis/v2020_1/svr/svr_master_sequencer.sv new file mode 100755 index 00000000..de23eb75 --- /dev/null +++ b/vitis/v2020_1/svr/svr_master_sequencer.sv @@ -0,0 +1,15 @@ +`ifndef SVR_MASTER_SEQUENCER__SV + `define SVR_MASTER_SEQUENCER__SV + + class svr_master_sequencer#(int DATA_WIDTH = 32) extends uvm_sequencer #(svr_transfer#(DATA_WIDTH)); + + function new (string name, uvm_component parent); + super.new (name, parent); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + `uvm_component_param_utils_begin(svr_master_sequencer#(DATA_WIDTH)) + `uvm_component_utils_end + endclass + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/svr/svr_monitor.sv b/vitis/v2020_1/svr/svr_monitor.sv new file mode 100755 index 00000000..300b4800 --- /dev/null +++ b/vitis/v2020_1/svr/svr_monitor.sv @@ -0,0 +1,210 @@ +`ifndef SVR_MONITOR__SV + `define SVR_MONITOR__SV + + class svr_monitor#(int DATA_WIDTH = 32) extends uvm_monitor; + + virtual svr_if#(DATA_WIDTH) vif; + uvm_analysis_port #(svr_transfer#(DATA_WIDTH)) item_collect_port; + + svr_config cfg; + + covergroup master_v2rdelay; + option.per_instance = 1; + v2rdelay: coverpoint delay + { + bins min = {-1}; + bins zero = {0}; + bins norm[] = {[1: 20]}; + } + endgroup + + covergroup slave_v2rdelay; + option.per_instance = 1; + v2rdelay: coverpoint delay + { + bins norm[] = {[-20: -1]}; + bins zero = {0}; + bins max = {1}; + } + endgroup + + int delay; + int state; + + `uvm_component_param_utils_begin(svr_monitor#(DATA_WIDTH)); + `uvm_component_utils_end + + function new(string name = "svr_monitor", uvm_component parent = null); + super.new(name, parent); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + master_v2rdelay = new; + master_v2rdelay.option.name = this.get_full_name(); + slave_v2rdelay = new; + endfunction + + virtual function void build_phase(uvm_phase phase); + super.build_phase(phase); + `uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + + item_collect_port = new("item_collect_port", this); + + if(!uvm_config_db#(virtual svr_if#(DATA_WIDTH))::get(this, "", "vif", vif)) + `uvm_fatal(this.get_full_name(), "virtual interface must be set for vif!!!") + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + if (cfg.svr_type == SVR_MASTER) begin + + `uvm_info (this.get_full_name(), "monitor initialized to analyze master valid to ready delay", UVM_LOW) + end + else if (cfg.svr_type == SVR_SLAVE) begin + + `uvm_info (this.get_full_name(), "monitor initialized to analyze slave valid to ready delay", UVM_LOW) + end + else + `uvm_fatal(this.get_full_name(), "invalid svr_config received!!!") + endfunction + + extern task run_phase(uvm_phase phase); + extern task collect_one_pkt(svr_transfer#(DATA_WIDTH) tr); + extern task calculate_delay(); + endclass + + task svr_monitor::run_phase(uvm_phase phase); + svr_transfer#(DATA_WIDTH) tr; + fork + while (1) begin + tr = new("tr"); + collect_one_pkt(tr); + item_collect_port.write(tr); + end + + calculate_delay(); + join + endtask + + task svr_monitor::collect_one_pkt(svr_transfer#(DATA_WIDTH) tr); + forever begin + @(posedge vif.clk); + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + tr.data = vif.data; + break; + end + end + + `uvm_info(this.get_full_name(), "collected one pkt", UVM_DEBUG); + endtask + + task svr_monitor::calculate_delay(); + parameter STATE_IDLE = 1; + parameter STATE_WAIT_READY = 2; + parameter STATE_WAIT_VALID = 4; + parameter STATE_DUMP_DELAY = 8; + + delay = 0; + state = STATE_IDLE; + + fork + forever begin + @(posedge vif.clk); + case (state) + STATE_IDLE : begin + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + state <= STATE_DUMP_DELAY; + end + else if (vif.valid == 1'b1) begin + state <= STATE_WAIT_READY; + end + else if (vif.ready == 1'b1) begin + state <= STATE_WAIT_VALID; + end + else begin + state <= STATE_IDLE; + end + end + + STATE_WAIT_READY : begin + if (vif.ready == 1'b1) begin + state <= STATE_DUMP_DELAY; + end + else begin + state <= STATE_WAIT_READY; + end + end + + STATE_WAIT_VALID : begin + if (vif.valid == 1'b1) begin + state <= STATE_DUMP_DELAY; + end + else begin + state <= STATE_WAIT_VALID; + end + end + + STATE_DUMP_DELAY : begin + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + state <= STATE_DUMP_DELAY; + end + else if (vif.valid == 1'b1) begin + state <= STATE_WAIT_READY; + end + else if (vif.ready == 1'b1) begin + state <= STATE_WAIT_VALID; + end + else begin + state <= STATE_IDLE; + end + end + + default: begin + state <= STATE_IDLE; + end + endcase + + `uvm_info(this.get_full_name(), $sformatf("state: %0d", state), UVM_DEBUG); + end + + forever begin + @(posedge vif.clk); + if (state == STATE_WAIT_READY) begin + // state is WAIT_READY, means valid is captured, delay is a negative value + delay <= delay - 1; + end + else if (state == STATE_WAIT_VALID) begin + // state is WAIT_VALID, means ready is captured, delay is a positive value + delay <= delay + 1; + end + else if (state == STATE_DUMP_DELAY) begin + delay <= 0; + end + else if (state == STATE_IDLE) begin + delay <= 0; + end + else begin + delay <= delay; + end + `uvm_info(this.get_full_name(), $sformatf("delay: %0d", delay), UVM_DEBUG); + end + + forever begin + @(posedge vif.clk); + if (state == STATE_DUMP_DELAY) begin + `uvm_info(this.get_full_name(), $sformatf("calculate delay: %0d", delay), UVM_HIGH); + + if (cfg.svr_type == SVR_MASTER) begin + master_v2rdelay.sample; + `uvm_info (this.get_full_name(), "monitor initialized to analyze master valid to ready delay", UVM_LOW) + end + else if (cfg.svr_type == SVR_SLAVE) begin + slave_v2rdelay.sample; + `uvm_info (this.get_full_name(), "monitor initialized to analyze slave valid to ready delay", UVM_LOW) + end + else + `uvm_fatal(this.get_full_name(), "invalid svr_config received!!!") + end + end + join + + endtask + +`endif diff --git a/vitis/v2020_1/svr/svr_object_global.svh b/vitis/v2020_1/svr/svr_object_global.svh new file mode 100755 index 00000000..f09fa980 --- /dev/null +++ b/vitis/v2020_1/svr/svr_object_global.svh @@ -0,0 +1,44 @@ +typedef enum + { + AP_START, + AP_READY, + AP_DONE, + FINAL_AP_DONE, + FINISH, + EVENT_NUM +} hs_event; + +typedef enum + { + SVR_MASTER, + SVR_SLAVE +} svr_inst_type; + +typedef enum + { + AXIS, + AP_FIFO, + AP_HS, + AP_VLD, + AP_ACK, + AP_NONE +} svr_protocol_type; + +typedef enum bit + { + SVR_ACTIVE, + SVR_PASSIVE +} svr_active_passive_enum; + +typedef enum bit + { + RESET_LEVEL_LOW, + RESET_LEVEL_HIGH +} svr_reset_level_enum; + +typedef enum + { + NO_DELAY, + LEFT_ROUND_DELAY, + LEFT_RND_DELAY +} svr_delay_enum; diff --git a/vitis/v2020_1/svr/svr_pkg.sv b/vitis/v2020_1/svr/svr_pkg.sv new file mode 100755 index 00000000..4e78b1ec --- /dev/null +++ b/vitis/v2020_1/svr/svr_pkg.sv @@ -0,0 +1,30 @@ +`ifndef SVR_PKG__SV + `define SVR_PKG__SV + + package svr_pkg; + + import uvm_pkg::*; + import file_agent_pkg::*; + + `include "uvm_macros.svh" + + `include "svr_object_global.svh" + `include "svr_info.sv" + `include "svr_config.sv" + `include "svr_transfer.sv" + `include "svr_base_sequence.sv" + `include "svr_random_sequence.sv" + `include "svr_master_sequence.sv" + `include "svr_master_sequencer.sv" + `include "svr_master_driver.sv" + `include "svr_master_monitor.sv" + `include "svr_master_agent.sv" + `include "svr_slave_sequence.sv" + `include "svr_slave_sequencer.sv" + `include "svr_slave_driver.sv" + `include "svr_slave_monitor.sv" + `include "svr_slave_agent.sv" + `include "svr_env.sv" + endpackage + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/svr/svr_random_sequence.sv b/vitis/v2020_1/svr/svr_random_sequence.sv new file mode 100755 index 00000000..549b9df7 --- /dev/null +++ b/vitis/v2020_1/svr/svr_random_sequence.sv @@ -0,0 +1,42 @@ +`ifndef SVR_RANDOM_SEQUENCE__SV + `define SVR_RANDOM_SEQUENCE__SV + + class svr_random_sequence#(int DATA_WIDTH = 32) extends svr_base_sequence#(DATA_WIDTH); + + svr_transfer#(DATA_WIDTH) svr_trans; + + DATA_TYPE data; + + `uvm_object_param_utils_begin (svr_random_sequence#(DATA_WIDTH)) + `uvm_object_utils_end + + function new (string name = "svr_random_sequence"); + super.new(name); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + virtual task body(); + int delay; + `uvm_info(this.get_full_name(), "begin to send random data", UVM_LOW) + + while (1) begin + `uvm_create(svr_trans); + void'(svr_trans.randomize()); + if(isusr_delay==NO_DELAY) svr_trans.delay = 0; + else if(usr_delay.size==0) begin + void'(std::randomize(delay) with { + delay dist {1:=4, 0:=4, ii:=1, latency:=1, [0:latency]:/5}; + delay inside {[0:latency]}; + }); + svr_trans.delay = delay; + end else begin + svr_trans.delay = usr_delay.pop_front(); + if(isusr_delay==LEFT_ROUND_DELAY) usr_delay.push_back(svr_trans.delay); + end + `uvm_send(svr_trans); + end + endtask + + endclass + +`endif diff --git a/vitis/v2020_1/svr/svr_slave_agent.sv b/vitis/v2020_1/svr/svr_slave_agent.sv new file mode 100755 index 00000000..7701f2e7 --- /dev/null +++ b/vitis/v2020_1/svr/svr_slave_agent.sv @@ -0,0 +1,49 @@ +`ifndef SVR_SLAVE_AGENT__SV + `define SVR_SLAVE_AGENT__SV + + class svr_slave_agent#(int DATA_WIDTH = 32) extends uvm_agent; + svr_slave_sequencer#(DATA_WIDTH) sqr; + svr_slave_driver#(DATA_WIDTH) drv; + svr_slave_monitor#(DATA_WIDTH) mon; + uvm_analysis_port #(svr_transfer#(DATA_WIDTH)) item_collect_port; + + svr_config cfg ; + + function new (string name, uvm_component parent); + super.new(name, parent); + //`uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + extern virtual function void build_phase (uvm_phase phase); + extern virtual function void connect_phase (uvm_phase phase); + + `uvm_component_param_utils_begin(svr_slave_agent#(DATA_WIDTH)) + `uvm_component_utils_end + endclass + + function void svr_slave_agent::build_phase(uvm_phase phase); + super.build_phase(phase); + //`uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + + if (cfg.is_active == SVR_ACTIVE) begin + sqr = svr_slave_sequencer#(DATA_WIDTH)::type_id::create("sqr", this); + drv = svr_slave_driver#(DATA_WIDTH)::type_id::create("drv", this); + end + + mon = svr_slave_monitor#(DATA_WIDTH)::type_id::create("mon", this); + endfunction + + function void svr_slave_agent::connect_phase(uvm_phase phase); + super.connect_phase(phase); + if (cfg.is_active == SVR_ACTIVE) begin + drv.seq_item_port.connect(sqr.seq_item_export); + end + item_collect_port = mon.item_collect_port; + //`uvm_info(this.get_full_name(), "connect_phase is called", UVM_LOW); + endfunction + +`endif + diff --git a/vitis/v2020_1/svr/svr_slave_driver.sv b/vitis/v2020_1/svr/svr_slave_driver.sv new file mode 100755 index 00000000..c1d7f01e --- /dev/null +++ b/vitis/v2020_1/svr/svr_slave_driver.sv @@ -0,0 +1,109 @@ +`ifndef SVR_SLAVE_DRIVER__SV + `define SVR_SLAVE_DRIVER__SV + class svr_slave_driver#(int DATA_WIDTH = 32) extends uvm_driver#(svr_transfer#(DATA_WIDTH)); + virtual svr_if#(DATA_WIDTH) vif; + svr_config cfg; + + `uvm_component_param_utils_begin (svr_slave_driver#(DATA_WIDTH)) + `uvm_component_utils_end + function new (string name = "svr_slave_driver", uvm_component parent = null); + super.new (name, parent); + `uvm_info (this.get_full_name(), "new is called", UVM_LOW) + endfunction + + extern virtual task run_phase (uvm_phase phase); + extern virtual function void build_phase (uvm_phase phase); + extern virtual task get_and_drive(svr_transfer#(DATA_WIDTH) tr); + endclass + + function void svr_slave_driver::build_phase(uvm_phase phase); + super.build_phase(phase); + `uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + if(!uvm_config_db #(virtual svr_if#(DATA_WIDTH))::get(this, "", "vif", vif)) + `uvm_fatal(this.get_full_name(), "virtual interface must be set for vif!!!") + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + endfunction + + task svr_slave_driver::run_phase (uvm_phase phase); + `uvm_info (this.get_full_name(), "run_phase is called", UVM_LOW) + + if ((cfg.prt_type == AP_NONE) || (cfg.prt_type == AP_ACK)) begin //for ap_none/ap_ack, don't know when data is valid or ready + //use AESL_done as valid and ready + wait(0); + end + + vif.ready <= 1'b0; + + //reduce one clock waiting after reset is de-asserted + //better timing for ap_none output + if (cfg.reset_level == RESET_LEVEL_LOW) begin + wait(vif.rst===1'b1); + //while (!vif.rst) + // @(posedge vif.clk); + end + else if (cfg.reset_level == RESET_LEVEL_HIGH) begin + wait(vif.rst===1'b0); + //while (vif.rst) + // @(posedge vif.clk); + end + else begin + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported reset level!!!") + end + + while (1) begin + seq_item_port.get_next_item(req); + get_and_drive(req); + seq_item_port.item_done(); + end + endtask + + task svr_slave_driver::get_and_drive(svr_transfer#(DATA_WIDTH) tr); + + `uvm_info (this.get_full_name(), "begin to drive data", UVM_FULL) + `uvm_info (this.get_full_name(), $sformatf("receive delay: %0d", tr.delay), UVM_HIGH) + + //reduce one clock waiting after reset is de-asserted + //better timing for ap_none output + if (cfg.reset_level == RESET_LEVEL_LOW) begin + wait(vif.rst===1'b1); + //while (!vif.rst) + // @(posedge vif.clk); + end + else if (cfg.reset_level == RESET_LEVEL_HIGH) begin + wait(vif.rst===1'b0); + //while (vif.rst) + // @(posedge vif.clk); + end + else begin + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported reset level!!!") + end + + if ((cfg.prt_type == AXIS) || (cfg.prt_type == AP_HS) || (cfg.prt_type == AP_FIFO)) begin + if (tr.delay > 0) begin + repeat (tr.delay) @(posedge vif.clk); + end + end + else if (cfg.prt_type == AP_VLD) begin + end + else + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported port protocol!!!") + + #0 + vif.ready = 1'b1; + `uvm_info (this.get_full_name(), "set vif.ready = 1", UVM_HIGH) + + + forever begin + @(posedge vif.clk); + if ((vif.valid == 1) && (vif.ready == 1'b1)) begin + vif.ready <= 1'b0; + `uvm_info (this.get_full_name(), "set vif.ready = 0", UVM_HIGH) + break; + end + end + `uvm_info (this.get_full_name(), "data is drived", UVM_FULL) + endtask + +`endif diff --git a/vitis/v2020_1/svr/svr_slave_monitor.sv b/vitis/v2020_1/svr/svr_slave_monitor.sv new file mode 100755 index 00000000..d6b8b512 --- /dev/null +++ b/vitis/v2020_1/svr/svr_slave_monitor.sv @@ -0,0 +1,193 @@ +`ifndef SVR_SLAVE_MONITOR__SV + `define SVR_SLAVE_MONITOR__SV + + class svr_slave_monitor#(int DATA_WIDTH = 32) extends uvm_monitor; + + virtual svr_if#(DATA_WIDTH) vif; + uvm_analysis_port #(svr_transfer#(DATA_WIDTH)) item_collect_port; + + svr_config cfg; + + int delay; + int state; + int state_d1; + + covergroup slave_v2rdelay; + option.per_instance = 1; + v2rdelay: coverpoint delay + { + bins norm[] = {[-20: -1]}; + bins zero = {0}; + bins max[] = {[1: 200]}; + } + endgroup + + `uvm_component_param_utils_begin(svr_slave_monitor#(DATA_WIDTH)); + `uvm_component_utils_end + + function new(string name = "svr_slave_monitor", uvm_component parent = null); + super.new(name, parent); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + slave_v2rdelay = new; + slave_v2rdelay.option.name = this.get_full_name(); + endfunction + + virtual function void build_phase(uvm_phase phase); + super.build_phase(phase); + `uvm_info(this.get_full_name(), "build_phase is called", UVM_LOW); + + item_collect_port = new("item_collect_port", this); + + if(!uvm_config_db#(virtual svr_if#(DATA_WIDTH))::get(this, "", "vif", vif)) + `uvm_fatal(this.get_full_name(), "virtual interface must be set for vif!!!") + + if(!uvm_config_db #(svr_config)::get(this, "", "cfg", cfg)) + `uvm_fatal(this.get_full_name(), "svr config must be set for cfg!!!") + if (cfg.svr_type != SVR_SLAVE) + `uvm_fatal(this.get_full_name(), "invalid svr_config received!!!") + + endfunction + + extern task run_phase(uvm_phase phase); + extern task collect_one_pkt(svr_transfer#(DATA_WIDTH) tr); + extern task calculate_delay(); + endclass + + task svr_slave_monitor::run_phase(uvm_phase phase); + svr_transfer#(DATA_WIDTH) tr; + `uvm_info(this.get_full_name(), "run_phase is called", UVM_LOW); + fork + while (1) begin + tr = new("tr"); + collect_one_pkt(tr); + item_collect_port.write(tr); + end + + calculate_delay(); + join + endtask + + task svr_slave_monitor::collect_one_pkt(svr_transfer#(DATA_WIDTH) tr); + forever begin + @(posedge vif.clk); + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + tr.data = vif.data; + break; + end + end + + `uvm_info(this.get_full_name(), "collected one pkt", UVM_DEBUG); + endtask + + task svr_slave_monitor::calculate_delay(); + parameter STATE_IDLE = 1; + parameter STATE_WAIT_READY = 2; + parameter STATE_WAIT_VALID = 4; + parameter STATE_COLLECT_DATA = 8; + + delay = 0; + state = STATE_IDLE; + state_d1 = STATE_IDLE; + + if (cfg.reset_level == RESET_LEVEL_LOW) begin + while (!vif.rst) + @(posedge vif.clk); + end + else if (cfg.reset_level == RESET_LEVEL_HIGH) begin + while (vif.rst) + @(posedge vif.clk); + end + else begin + `uvm_fatal(this.get_full_name(), "invalid svr_config received, unsupported reset level!!!") + end + + fork + forever begin + @(posedge vif.clk); + case (state) + STATE_IDLE : begin + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + state <= STATE_COLLECT_DATA; + end + else if (vif.valid == 1'b1) begin + state <= STATE_WAIT_READY; + end + else if (vif.ready == 1'b1) begin + state <= STATE_WAIT_VALID; + end + else begin + state <= STATE_IDLE; + end + end + + STATE_WAIT_READY : begin + if (vif.ready == 1'b1) begin + state <= STATE_COLLECT_DATA; + end + else begin + state <= STATE_WAIT_READY; + end + end + + STATE_WAIT_VALID : begin + if (vif.valid == 1'b1) begin + state <= STATE_COLLECT_DATA; + end + else begin + state <= STATE_WAIT_VALID; + end + end + + STATE_COLLECT_DATA : begin + if ((vif.valid == 1'b1) && (vif.ready == 1'b1)) begin + state <= STATE_COLLECT_DATA; + end + else if (vif.valid == 1'b1) begin + state <= STATE_WAIT_READY; + end + else if (vif.ready == 1'b1) begin + state <= STATE_WAIT_VALID; + end + else begin + state <= STATE_IDLE; + end + end + + default: begin + state <= STATE_IDLE; + end + endcase + + state_d1 <= state; + + `uvm_info(this.get_full_name(), $sformatf("state: %0d, state_d1: %0d", state, state_d1), UVM_DEBUG); + end + + forever begin + @(posedge vif.clk); + if (state == STATE_COLLECT_DATA) begin + delay <= 0; + end + else begin + delay <= delay + 1; + end + + `uvm_info(this.get_full_name(), $sformatf("delay: %0d", delay), UVM_DEBUG); + end + + forever begin + @(posedge vif.clk); + if (((state == STATE_WAIT_VALID) && (state_d1 == STATE_IDLE)) || + ((state == STATE_COLLECT_DATA) && (state_d1 == STATE_WAIT_READY)) || + ((state == STATE_COLLECT_DATA) && (state_d1 == STATE_COLLECT_DATA)) || + ((state == STATE_WAIT_VALID) && (state_d1 == STATE_COLLECT_DATA)) || + ((state == STATE_COLLECT_DATA) && (state_d1 == STATE_IDLE))) begin + `uvm_info(this.get_full_name(), $sformatf("calculate delay: %0d, state: %0d, state_d1: %0d", delay, state, state_d1), UVM_DEBUG); + slave_v2rdelay.sample; + end + end + join + + endtask + +`endif diff --git a/vitis/v2020_1/svr/svr_slave_sequence.sv b/vitis/v2020_1/svr/svr_slave_sequence.sv new file mode 100755 index 00000000..1c568cda --- /dev/null +++ b/vitis/v2020_1/svr/svr_slave_sequence.sv @@ -0,0 +1,65 @@ +`ifndef SVR_SLAVE_SEQUENCE__SV + `define SVR_SLAVE_SEQUENCE__SV + + class svr_slave_sequence#(int DATA_WIDTH = 32) extends svr_base_sequence#(DATA_WIDTH); + + svr_transfer#(DATA_WIDTH) svr_trans; + + `uvm_object_param_utils_begin (svr_slave_sequence#(DATA_WIDTH)) + `uvm_object_utils_end + + function new (string name = "svr_slave_sequence"); + super.new(name); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + virtual task body(); + svr_info info; + uvm_object data; + `uvm_info(this.get_full_name(), "body is called", UVM_LOW) + + fork + begin + forever begin + int delay; + `uvm_info(this.get_full_name(), "receive data", UVM_DEBUG) + `uvm_create(svr_trans); + + if(isusr_delay==NO_DELAY) svr_trans.delay = 0; + else if(usr_delay.size==0) begin + void'(std::randomize(delay) with { + delay dist {1:=4, 0:=4, ii:=1, latency:=1, [0:latency]:/5}; + delay inside {[0:latency]}; + }); + svr_trans.delay = delay; + end else begin + svr_trans.delay = usr_delay.pop_front(); + if(isusr_delay==LEFT_ROUND_DELAY) usr_delay.push_back(svr_trans.delay); + end + `uvm_info(this.get_full_name(), {"send trans:", svr_trans.sprint}, UVM_MEDIUM) + `uvm_send(svr_trans); + //if (is_event_FINAL_AP_DONE()) begin + // `uvm_info (this.get_full_name(), "received final AP_DONE", UVM_LOW) + // break; + //end + end + + end + forever begin + svr_evt_ap_done.wait_trigger_data(data); + $cast(info, data); + if(info.dutevt == FINAL_AP_DONE) break; + end + + //begin + // forever begin + // parse_trigger(); + // end + //end + join_any + disable fork; + endtask + + endclass + +`endif diff --git a/vitis/v2020_1/svr/svr_slave_sequencer.sv b/vitis/v2020_1/svr/svr_slave_sequencer.sv new file mode 100755 index 00000000..e64f9605 --- /dev/null +++ b/vitis/v2020_1/svr/svr_slave_sequencer.sv @@ -0,0 +1,15 @@ +`ifndef SVR_SLAVE_SEQUENCER__SV + `define SVR_SLAVE_SEQUENCER__SV + + class svr_slave_sequencer#(int DATA_WIDTH = 32) extends uvm_sequencer #(svr_transfer#(DATA_WIDTH)); + + function new (string name, uvm_component parent); + super.new (name, parent); + `uvm_info(this.get_full_name(), "new is called", UVM_LOW) + endfunction + + `uvm_component_param_utils_begin(svr_slave_sequencer#(DATA_WIDTH)) + `uvm_component_utils_end + endclass + +`endif \ No newline at end of file diff --git a/vitis/v2020_1/svr/svr_transfer.sv b/vitis/v2020_1/svr/svr_transfer.sv new file mode 100755 index 00000000..226a9a4a --- /dev/null +++ b/vitis/v2020_1/svr/svr_transfer.sv @@ -0,0 +1,28 @@ +`ifndef SVR_TRANSFER__SV + `define SVR_TRANSFER__SV + + class svr_transfer#(int DATA_WIDTH = 32) extends uvm_sequence_item; + rand logic [DATA_WIDTH - 1: 0] data; + rand int delay; + + constraint data_range { + data >= 0; + data <= 1000; + } + + constraint delay_range { + delay >= -30; + delay <= 30; + } + + `uvm_object_param_utils_begin (svr_transfer#(DATA_WIDTH)) + `uvm_field_int(data , UVM_ALL_ON) + `uvm_field_int(delay, UVM_ALL_ON|UVM_DEC) + `uvm_object_utils_end + + function new (string name = "svr_transfer"); + super.new(); + endfunction + + endclass +`endif diff --git a/vitis/v2020_1/svtb/misc_interface.sv b/vitis/v2020_1/svtb/misc_interface.sv new file mode 100755 index 00000000..611f6da6 --- /dev/null +++ b/vitis/v2020_1/svtb/misc_interface.sv @@ -0,0 +1,77 @@ +`ifndef MISC_INTERFACE__SV + `define MISC_INTERFACE__SV + `timescale 1ns/1ps + interface misc_interface (input clock, input reset); + + logic ap_start ; + logic ap_done ; + logic ap_idle ; + logic ap_ready ; + logic ap_continue ; + logic finished; + logic svuvm_done; + logic autotbdone_vld; + logic autotb_done; + logic autotb_done_level; + + logic svuvm_ready; + logic autotbready_vld; + logic autotb_ready; + logic autotb_ready_level; + + clocking pclk @(posedge clock); + default input #0.1ns output #0.1ns; + endclocking + + clocking nclk @(negedge clock); + default input #0.1ns output #0.1ns; + endclocking + + initial begin + //wait(reset); + #1; + svuvm_done = 1'b0; + if(autotbdone_vld) begin + forever begin + @(posedge autotb_done); + autotb_done_level = 1; + wait(autotb_done==1'b0&& autotb_done_level==1'b0); + end + end + end + task svuvm_done_gen(); + if(autotbdone_vld==1'b1) begin + wait(autotb_done_level); + end + #0; + svuvm_done = 1'b1; + @(posedge clock); + autotb_done_level = 1'b0; + svuvm_done = 1'b0; + endtask + + initial begin + //wait(reset); + svuvm_ready = 1'b0; + #1; + if(autotbready_vld) begin + forever begin + @(posedge autotb_ready); + autotb_ready_level = 1; + wait(autotb_ready==1'b0&& autotb_ready_level==1'b0); + end + end + end + task svuvm_ready_gen(); + if(autotbready_vld==1'b1) begin + wait(autotb_ready_level); + end + #0; + svuvm_ready = 1'b1; + @(posedge clock); + autotb_ready_level = 1'b0; + svuvm_ready = 1'b0; + endtask + + endinterface +`endif diff --git a/vitis/v2020_1/svtb/svr_if.sv b/vitis/v2020_1/svtb/svr_if.sv new file mode 100755 index 00000000..68b9caa0 --- /dev/null +++ b/vitis/v2020_1/svtb/svr_if.sv @@ -0,0 +1,36 @@ +`ifndef SVR_IF__SV + `define SVR_IF__SV + + interface svr_if#(int DATA_WIDTH = 32)(input clk, input rst); + + logic [DATA_WIDTH -1: 0] data ; + logic valid; + logic ready; + + property noxwhenh(logic x, logic y); + disable iff(!rst) + @(posedge clk) + (x&y)===1'b0 | (x===1'b1 && (y===1'b0|y==='h1)) | (y==='b1 && (x===1'b0|x==='b1)); + endproperty + + property nodatax(logic x, logic y, logic [DATA_WIDTH - 1: 0] data); + disable iff(!rst) + @(posedge clk) + (x&y)===1'b0 | ((x === 1'b1) && (y === 1'b1) && (|data === 1'b0) | (|data === 1'b1)) | (x === 1'bx) | (y === 1'bx); + endproperty + + validh_readxy: assert property(noxwhenh(valid, ready)) + else $error("invalid X state when valid/ready is asserted time:%0t valid:%0d, ready:%0d", $time, valid, ready); + + validh_data: assert property(nodatax(valid, ready, data)) + else $error("data is in X state when valid and ready are asserted time:%0t", $time); + + stable_when_valid: assert property( + @(posedge clk) disable iff(!rst) + ready===1'b0 && $rose(valid) | ($fell(ready) && valid===1'b1) | ($fell(ready) && $rose(valid)) |=> + ($stable(data) [*0:$] ##1 ready===1'b1 & $stable(data)) or (ready===1'b1 & $stable(data)) + ) + else $error("data is not stable when valid is asserted time:%0t", $time); + endinterface + +`endif diff --git a/vitis/v2020_1/utils/std_complex_utils.h b/vitis/v2020_1/utils/std_complex_utils.h new file mode 100755 index 00000000..3c78d839 --- /dev/null +++ b/vitis/v2020_1/utils/std_complex_utils.h @@ -0,0 +1,194 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef STD_HLS_COMPLEX_UTILS_H +#define STD_HLS_COMPLEX_UTILS_H + +#include +#include "ap_fixed.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_traits.h" +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { +/* +******************************************************************************* +* Vivado HLS complex data type +* ---------------------------- +* +* std::complex +* x_traits for std::complex +* set_to_one +* +******************************************************************************* +*/ + + + template + struct x_traits,std::complex > { + typedef std::complex ADD_T; + typedef std::complex SAT_T; + typedef std::complex MULT_T; + typedef std::complex MADD_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + +#define X_COMPLEX_MAX(a, b) ((a) > (b) ? (a) : (b)) + + template + struct x_traits >,std::complex > > { + typedef std::complex > ADD_T; + typedef std::complex > SAT_T; + typedef std::complex > MULT_T; + typedef std::complex > MADD_T; + typedef std::complex > CONJ_SQ_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + + template + struct x_traits >,std::complex > > { + typedef std::complex > ADD_T; + typedef std::complex > SAT_T; + typedef std::complex > MULT_T; + typedef std::complex > MADD_T; + typedef std::complex > CONJ_SQ_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + +#undef X_COMPLEX_MAX + + template + struct x_traits_d ,DIM> { + typedef std::complex ACCUM_T; + typedef std::complex ACCUM2_T; + typedef std::complex > ADD_TREE_T; + }; + + template + struct x_traits_d >,DIM> { + typedef std::complex::Value,I+BitWidth::Value> > ACCUM_T; + typedef std::complex::Value,(2*I)+BitWidth::Value> > ACCUM2_T; + }; + + template T x_neg(T &din) { + return -din; + } + + static float x_neg(float din) { + float dout = 0; + if(din > 0) + dout = -din; + else + dout = din; + return dout; + } + + static double x_neg(double din) { + double dout = 0; + if(din > 0) + dout = -din; + else + dout = din; + return dout; + } + + template std::complex x_neg(std::complex &din) { + std::complex tmp; + tmp.real(-din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + + template typename x_traits::MULT_T x_conj_sq(T &din) { + x_conj_sq:; + return (din * din); + } + + template typename x_traits::MADD_T x_conj_sq(std::complex &din) { + x_conj_sq_complex:; + return ( (din.real()*din.real()) + (din.imag()*din.imag())); + } + + template T x_conj(T &din) { + x_conj_real:; + return din; + } + + template std::complex x_conj(const std::complex &din) { + x_conj_complex:; + std::complex tmp; + tmp.real(din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + // This function is called when a non-const std::complex is conjugated. It calls the + // version of x_conj() which takes a constant parameter + template std::complex x_conj(std::complex &din) { + const std::complex tmp = din; + return(x_conj(tmp)); + } + + template void set_to_one(std::complex > &a) { + ap_int tmp_sat = ((ap_int)1<<(W-I)) - 1; + ap_fixed tmp; + tmp.range() = tmp_sat; + a = tmp; + } + + // Functions to extract real and imaginary components + template T x_real(const T &din) { + return din; + } + template T x_real(const std::complex &din) { + return(din.real()); + } + template T x_imag(const T &din) { + T tmp = 0; + return tmp; + } + template T x_imag(const std::complex &din) { + return(din.imag()); + } + +} // end namespace hls + +#endif + + + + diff --git a/vitis/v2020_1/utils/x_hls_defines.h b/vitis/v2020_1/utils/x_hls_defines.h new file mode 100644 index 00000000..10114e9e --- /dev/null +++ b/vitis/v2020_1/utils/x_hls_defines.h @@ -0,0 +1,127 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file x_hls_defines.h + */ + +#ifndef X_HLS_DEFINES_H +#define X_HLS_DEFINES_H + +#include "ap_int.h" + +/* +******************************************************************************* +* +* Contains global defines, macos, and structs. +* +******************************************************************************* +*/ + +#define PRAGMA(x) _Pragma(#x) +/*#define X_PIPELINE(ii) {\ + PRAGMA(AP PIPELINE II=ii)\ + } +*/ +//#define NO_FORCING + +//#define X_AP_Q_MODE AP_TRN +//#define X_AP_O_MODE AP_WRAP + +/* +* May be used to specify all intantiated ap_fixed to have different options. +* Currently unused. + + + +#define COMPARE_APPROX_SGEMM_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CGEMM_BASE_FLOAT 0.01 +#define COMPARE_APPROX_SGEQRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CGEQRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_SBSUT_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CBSUT_BASE_FLOAT 0.01 +#define COMPARE_APPROX_SGETRI_BASE_FLOAT 10.0 +#define COMPARE_APPROX_CGETRI_BASE_FLOAT 10.0 +#define COMPARE_APPROX_SPBTRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CPBTRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CPBTRI_BASE_FLOAT 100.0 +#define COMPARE_APPROX_SGESVD_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CGESVD_BASE_FLOAT 1.00 +#define COMPARE_APPROX_CPOSV_BASE_FLOAT 200.00 + +#define COMPARE_APPROX_SGEMM_BASE_FIXED 0.01 +#define COMPARE_APPROX_CGEMM_BASE_FIXED 0.01 +#define COMPARE_APPROX_SGEQRF_BASE_FIXED 0.01 +#define COMPARE_APPROX_CGEQRF_BASE_FIXED 0.01 +#define COMPARE_APPROX_SBSUT_BASE_FIXED 0.01 +#define COMPARE_APPROX_CBSUT_BASE_FIXED 0.01 +#define COMPARE_APPROX_SGETRI_BASE_FIXED 10.0 +#define COMPARE_APPROX_CGETRI_BASE_FIXED 10.0 +#define COMPARE_APPROX_SPBTRF_BASE_FIXED 0.01 +#define COMPARE_APPROX_CPBTRF_BASE_FIXED 100.00 +#define COMPARE_APPROX_SGESVD_BASE_FIXED 0.01 +#define COMPARE_APPROX_CGESVD_BASE_FIXED 1.00 + +#define COMPARE_APPROX_ERROR_FLOAT 0.10 // in percentage + +#define COMPARE_APPROX_ERROR_FIXED 40.00 +*/ + +/* +* Macros +*/ +//#define __HLS_MAX(x,y) ((x) > (y) ? (x) : (y)) +//#define __HLS_MIN(x,y) ((x) < (y) ? (x) : (y)) + +/* +* Floating point data structure (with unsigned mantissa) +*/ +template +struct float_struct { + ap_uint mant; // 23 + ap_uint exp; // 8 + ap_uint<1> sign; +}; + +/* +* Floating point data structure (with signed mantissa) +*/ +template +struct float_struct2 { + ap_int mant; // 24 + ap_uint exp; // 8 +}; + + +#endif + + + diff --git a/vitis/v2020_1/utils/x_hls_float_utils.h b/vitis/v2020_1/utils/x_hls_float_utils.h new file mode 100644 index 00000000..17c2ebd0 --- /dev/null +++ b/vitis/v2020_1/utils/x_hls_float_utils.h @@ -0,0 +1,474 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_FLOAT_UTILS_H +#define X_HLS_FLOAT_UTILS_H +#include + +static const ap_uint<100> ref_cordic("9b74eda8435e5a67f5f9092c6",16); + +//Q115.397 +static const ap_uint<512> ref_4oPi_512("000000000000000000000000000028BE60DB9391054A7F09D5F47D4D377036D8A5664F10E4107F9458EAF7AEF1586DC91B8E909374B801924BBA827464873FBF",16); + +/* +* Double-precision calculations +* hi: 400-1-2+( 53-e1+1) = 451-e1 = 399 (e1=52) +* lo: 400-1-2+(-53-e1-1-p1) = 343-e1-p1 = 281 (e1=52,p1=10) +* +* left-justified alignment +* e1 hi lo i << +* ---- --- --- --- ------- +* 52 399 281 1 0 +* 53 398 281 1 1 +* 61 1 9 +* 179 1 127 +* 180 2 0 +* +*------------------------------------------------------------------- +* Need to select 119-bits from ~1024 bits. +* 256 bits allows 128-bit selection shifted 128 bits. +* 128-bits is bigger than 119 which we need in the double-precision +* range reduction payne-hanek. +* 128-bits * 10 = 1280 which is > 1024 bits +*------------------------------------------------------------------- +*/ +static const ap_uint<256> ref_4oPi_table_256[10] = { + "0x0000000000000000000000000000000028be60db9391054a7f09d5f47d4d3770", + "0x28be60db9391054a7f09d5f47d4d377036d8a5664f10e4107f9458eaf7aef158", + "0x36d8a5664f10e4107f9458eaf7aef1586dc91b8e909374b801924bba82746487", + "0x6dc91b8e909374b801924bba827464873f877ac72c4a69cfba208d7d4baed121", + "0x3f877ac72c4a69cfba208d7d4baed1213a671c09ad17df904e64758e60d4ce7d", + "0x3a671c09ad17df904e64758e60d4ce7d272117e2ef7e4a0ec7fe25fff7816603", + "0x272117e2ef7e4a0ec7fe25fff7816603fbcbc462d6829b47db4d9fb3c9f2c26d", + "0xfbcbc462d6829b47db4d9fb3c9f2c26dd3d18fd9a797fa8b5d49eeb1faf97c5e", + "0xd3d18fd9a797fa8b5d49eeb1faf97c5ecf41ce7de294a4ba9afed7ec47e35742", + "0xcf41ce7de294a4ba9afed7ec47e357421580cc11bf1edaeafc33ef0826bd0d87", +}; + +static const ap_uint<100> ref_4oPi_table_100[13] = { + "0x000000000000000000000028B", // -4 + "0x00000000000000000028BE60D", // -3 + "0x0000000000000028BE60DB939", // -2 + "0x000000000028BE60DB9391054", // -1 + "0x00000028BE60DB9391054A7F0", // 0 + "0x0028BE60DB9391054A7F09D5F", // 1 + "0xBE60DB9391054A7F09D5F47D4", // 2 + "0xDB9391054A7F09D5F47D4D377", // 3 + "0x91054A7F09D5F47D4D377036D", // 4 + "0x4A7F09D5F47D4D377036D8A56", // 5 + "0x09D5F47D4D377036D8A5664F1", // 6 + "0xF47D4D377036D8A5664F10E41", // 7 + "0x4D377036D8A5664F10E417F94", // 8 +}; + +static const ap_uint<80> ref_4oPi_table_80[9] = { + "0x00000028BE60DB939105", // 0 + "0x0028BE60DB9391054A7F", // 1 + "0xBE60DB9391054A7F09D5", // 2 + "0xDB9391054A7F09D5F47D", // 3 + "0x91054A7F09D5F47D4D37", // 4 + "0x4A7F09D5F47D4D377036", // 5 + "0x09D5F47D4D377036D8A5", // 6 + "0xF47D4D377036D8A5664F", // 7 + "0x4D377036D8A5664F10E4", // 8 +}; + + +// Q2.398 +static const ap_uint<400> ref_Pio4_400("3243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89452821E638D01377BE5466CF34E90C6CC0A",16); + +static const ap_uint<256> ref_Pio4_table[10] = { + "0x000000000000000000000000000000003243f6a8885a308d313198a2e0370734", + "0x3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8", + "0x4a4093822299f31d0082efa98ec4e6c89452821e638d01377be5466cf34e90c6", + "0x9452821e638d01377be5466cf34e90c6cc0ac29b7c97c50dd3f84d5b5b547091", + "0xcc0ac29b7c97c50dd3f84d5b5b54709179216d5d98979fb1bd1310ba698dfb5a", + "0x79216d5d98979fb1bd1310ba698dfb5ac2ffd72dbd01adfb7b8e1afed6a267e9", + "0xc2ffd72dbd01adfb7b8e1afed6a267e96ba7c9045f12c7f9924a19947b3916cf", + "0x6ba7c9045f12c7f9924a19947b3916cf70801f2e2858efc16636920d871574e6", + "0x70801f2e2858efc16636920d871574e69a458fea3f4933d7e0d95748f728eb65", + "0x9a458fea3f4933d7e0d95748f728eb658718bcd5882154aee7b54a41dc25a59b", +}; + + +template +void scaled_fixed2ieee(ap_fixed in, half &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = in[in.wl()-1]; + + // Note that when we chop off the sign bit, we don't loose any + // bits to allow for -MAX to be converted correctly. + ap_ufixed ain = in; + if(out.__signbit()) { + ain = -in; + } + + // Count the leading zeros and shift + int shift = ain.countLeadingZeros(); + ap_ufixed in_shift = ain << shift; + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + + result = out.to_ieee(); +} + +template +void scaled_fixed2ieee(ap_ufixed in, half &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = 0; + + ap_ufixed ain = in; + + // Count the leading zeros and shift + int shift = ain.countLeadingZeros(); + ap_ufixed in_shift = ain << shift; + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + +#define __hls_parts ((W+15)/16) +#define __hls_rem (W - (__hls_parts-1)*16) +template +void scaled_fixed2ieee(ap_fixed in, float &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = in[in.wl()-1]; + + // Note that when we chop off the sign bit, we don't loose any + // bits to allow for -MAX to be converted correctly. + ap_ufixed ain = in; + + if(out.__signbit()) { + ain = -in; + } + + //const int __hls_parts = (W+15)/16; + //const int __hls_rem = W - (__hls_parts-1)*16; + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_ufixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "c[" << i << "] = " << c[i] << " "; + std::cout << "in_shift = " << in_shift << "\n"; +#endif + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = ((int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift); +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + + +template +void scaled_fixed2ieee(ap_ufixed in, float &result, int prescale) +{ + //#pragma HLS inline off + + fp_struct out; + out.sign[0] = 0; + ap_ufixed ain = in; + + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. out_bits[0] includes the MSBs. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_ufixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + +template +void scaled_fixed2ieee(ap_fixed in, double &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = in[in.wl()-1]; + + // Note that when we chop off the sign bit, we don't loose any + // bits to allow for -MAX to be converted correctly. + ap_ufixed ain = in; + + if(out.__signbit()) { + ain = -in; + } + + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_ufixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + +template +void scaled_fixed2ieee(ap_ufixed in, double &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = 0; + ap_ufixed ain = in; + + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_fixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + + result = out.to_ieee(); +} +#undef __hls_parts +#undef __hls_rem + +#endif + + + diff --git a/vitis/v2020_1/utils/x_hls_traits.h b/vitis/v2020_1/utils/x_hls_traits.h new file mode 100644 index 00000000..f1a38725 --- /dev/null +++ b/vitis/v2020_1/utils/x_hls_traits.h @@ -0,0 +1,1121 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2013 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_TRAITS_H +#define X_HLS_TRAITS_H + +#include "ap_fixed.h" +#include "ap_int.h" +#include "vivado/v2020_1/hls_half.h" +#include "x_hls_utils.h" +#include "x_hls_defines.h" +#include + +namespace hls +{ + +template +struct x_traits_default { + typedef T ADD_T; + typedef T SUB_T; + typedef T SAT_T; + typedef T MULT_T; + typedef T MADD_T; +}; + +template +struct x_traits { +// typedef T1 ADD_T; +// typedef T1 SAT_T; +// typedef T1 MULT_T; +// typedef T1 MADD_T; +// typedef T1 CMADD_T; +// typedef T1 CONJ_SQ_T; +// typedef T1 CONJ_SQ_2_T; +// typedef int INT_T; +// typedef T1 INV_T; +// typedef float_struct<24,8> FLOAT_STRUCT_T; + +}; +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +//------------------------------------------------------------------------------------// +/* enumeration c data types: + * char, signed char, unsigned char, + * short , unsigned short, + * int, unsigned int, + * long, unsigned long, + * ap_slong, ap_ulong, + * half, + * float, + * double + */ + + + +template<> +struct x_traits< char , char > : public x_traits_default< char > {}; + +template<> +struct x_traits< char , signed char > : public x_traits_default< signed char > {}; + +template<> +struct x_traits< char , unsigned char > : public x_traits_default< unsigned char > {}; + +template<> +struct x_traits< char , short > : public x_traits_default< short > {}; + +template<> +struct x_traits< char , unsigned short > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< char , int > : public x_traits_default< int > {}; + +template<> +struct x_traits< char , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< char , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< char , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< char , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< char , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< char , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< char , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< char , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< signed char , char > : public x_traits_default< signed char > {}; + +template<> +struct x_traits< signed char , signed char > : public x_traits_default< signed char > {}; + +template<> +struct x_traits< signed char , unsigned char > : public x_traits_default< unsigned char > {}; + +template<> +struct x_traits< signed char , short > : public x_traits_default< short > {}; + +template<> +struct x_traits< signed char , unsigned short > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< signed char , int > : public x_traits_default< int > {}; + +template<> +struct x_traits< signed char , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< signed char , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< signed char , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< signed char , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< signed char , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< signed char , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< signed char , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< signed char , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< unsigned char , char > : public x_traits_default< unsigned char > {}; + +template<> +struct x_traits< unsigned char , signed char > : public x_traits_default< unsigned char > {}; + +template<> +struct x_traits< unsigned char , unsigned char > : public x_traits_default< unsigned char > {}; + +template<> +struct x_traits< unsigned char , short > : public x_traits_default< short > {}; + +template<> +struct x_traits< unsigned char , unsigned short > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< unsigned char , int > : public x_traits_default< int > {}; + +template<> +struct x_traits< unsigned char , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned char , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< unsigned char , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned char , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< unsigned char , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< unsigned char , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned char , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned char , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< short , char > : public x_traits_default< short > {}; + +template<> +struct x_traits< short , signed char > : public x_traits_default< short > {}; + +template<> +struct x_traits< short , unsigned char > : public x_traits_default< short > {}; + +template<> +struct x_traits< short , short > : public x_traits_default< short > {}; + +template<> +struct x_traits< short , unsigned short > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< short , int > : public x_traits_default< int > {}; + +template<> +struct x_traits< short , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< short , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< short , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< short , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< short , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< short , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< short , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< short , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< unsigned short , char > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< unsigned short , signed char > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< unsigned short , unsigned char > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< unsigned short , short > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< unsigned short , unsigned short > : public x_traits_default< unsigned short > {}; + +template<> +struct x_traits< unsigned short , int > : public x_traits_default< int > {}; + +template<> +struct x_traits< unsigned short , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned short , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< unsigned short , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned short , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< unsigned short , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< unsigned short , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned short , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned short , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< int , char > : public x_traits_default< int > {}; + +template<> +struct x_traits< int , signed char > : public x_traits_default< int > {}; + +template<> +struct x_traits< int , unsigned char > : public x_traits_default< int > {}; + +template<> +struct x_traits< int , short > : public x_traits_default< int > {}; + +template<> +struct x_traits< int , unsigned short > : public x_traits_default< int > {}; + +template<> +struct x_traits< int , int > : public x_traits_default< int > {}; + +template<> +struct x_traits< int , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< int , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< int , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< int , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< int , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< int , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< int , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< int , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< unsigned int , char > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , signed char > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , unsigned char > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , short > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , unsigned short > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , unsigned int > : public x_traits_default< unsigned int > {}; + +template<> +struct x_traits< unsigned int , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< unsigned int , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned int , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< unsigned int , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< unsigned int , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned int , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned int , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< long , char > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , signed char > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , unsigned char > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , short > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , unsigned short > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , int > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , unsigned int > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , long > : public x_traits_default< long > {}; + +template<> +struct x_traits< long , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< long , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< long , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< long , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< long , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< long , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< unsigned long , char > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , signed char > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , unsigned char > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , short > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , unsigned short > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , int > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , unsigned int > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , unsigned long > : public x_traits_default< unsigned long > {}; + +template<> +struct x_traits< unsigned long , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< unsigned long , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< unsigned long , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned long , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< unsigned long , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< ap_slong , char > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , signed char > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , unsigned char > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , short > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , unsigned short > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , int > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , unsigned int > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , long > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , unsigned long > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , ap_slong > : public x_traits_default< ap_slong > {}; + +template<> +struct x_traits< ap_slong , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_slong , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< ap_slong , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< ap_slong , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< ap_ulong , char > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , signed char > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , unsigned char > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , short > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , unsigned short > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , int > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , unsigned int > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , long > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , unsigned long > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , ap_slong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , ap_ulong > : public x_traits_default< ap_ulong > {}; + +template<> +struct x_traits< ap_ulong , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< ap_ulong , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< ap_ulong , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< half , char > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , signed char > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , unsigned char > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , short > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , unsigned short > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , int > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , unsigned int > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , long > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , unsigned long > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , ap_slong > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , ap_ulong > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , half > : public x_traits_default< half > {}; + +template<> +struct x_traits< half , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< half , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< float , char > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , signed char > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , unsigned char > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , short > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , unsigned short > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , int > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , unsigned int > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , long > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , unsigned long > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , ap_slong > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , ap_ulong > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , half > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , float > : public x_traits_default< float > {}; + +template<> +struct x_traits< float , double > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , char > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , signed char > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , unsigned char > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , short > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , unsigned short > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , int > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , unsigned int > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , long > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , unsigned long > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , ap_slong > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , ap_ulong > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , half > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , float > : public x_traits_default< double > {}; + +template<> +struct x_traits< double , double > : public x_traits_default< double > {}; + + + +//-------------------------------------------------------------------------------// + +template class MAX{ + public: + const static int value = (A > B) ? A : B; +}; + +template +struct x_traits,ap_fixed > { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; + typedef ap_fixed SAT_T; + typedef ap_fixed MADD_T; + typedef ap_fixed CMADD_T; + typedef ap_fixed<(2*W1)+1,(2*I1)> CONJ_SQ_T; + typedef ap_fixed<(2*W1)+2,(2*I1)+1> CONJ_SQ_2_T; + typedef ap_fixed<2*(MAX::value+1),(MAX::value+1)> INV_T; + typedef int INT_T; + typedef float_struct<24,8> FLOAT_STRUCT_T; +}; + +template +struct x_traits,ap_ufixed > { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits,ap_fixed > { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits,ap_ufixed > { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_ufixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_ufixed MULT_T; + typedef ap_ufixed SAT_T; + typedef ap_ufixed MADD_T; + typedef ap_ufixed CMADD_T; + typedef ap_ufixed<(2*W1)+1,(2*I1)> CONJ_SQ_T; + typedef ap_ufixed<(2*W1)+2,(2*I1)+1> CONJ_SQ_2_T; + typedef ap_ufixed<2*(MAX::value+1),(MAX::value+1)> INV_T; + typedef int INT_T; + typedef float_struct<24,8> FLOAT_STRUCT_T; +}; + +template +struct x_traits,ap_int > { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; + typedef ap_int<(W1 > W2)? W1:W2> MADD_T; +}; + +template +struct x_traits,ap_uint > { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template +struct x_traits,ap_int > { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template +struct x_traits,ap_uint > { + typedef ap_uint::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_uint MULT_T; +}; + +template +struct x_traits,ap_int > : public x_traits, ap_fixed > {}; + +template +struct x_traits,ap_uint > : public x_traits, ap_ufixed > {}; + +template +struct x_traits,ap_int > : public x_traits, ap_fixed > {}; + +template +struct x_traits,ap_uint > : public x_traits, ap_ufixed > {}; + +template +struct x_traits, ap_fixed > : public x_traits, ap_fixed > {}; + +template +struct x_traits, ap_ufixed > : public x_traits, ap_ufixed > {}; + +template +struct x_traits, ap_fixed > : public x_traits, ap_fixed > {}; + +template +struct x_traits, ap_ufixed > : public x_traits, ap_ufixed > {}; + +// fixed_type::T is the smallest ap_fixed/ap_ufixed type that can losslessly contain X +// e.g. X x; fixed_type::T y(x); is sensible; + + template struct fixed_type { }; + template<> struct fixed_type { typedef ap_fixed<8,8> T; }; + template<> struct fixed_type { typedef ap_ufixed<8,8> T; }; + template<> struct fixed_type { typedef ap_fixed<16,16> T; }; + template<> struct fixed_type { typedef ap_ufixed<16,16> T; }; + template<> struct fixed_type { typedef ap_fixed<32,32> T; }; + template<> struct fixed_type { typedef ap_ufixed<32,32> T; }; + template<> struct fixed_type { typedef ap_ufixed<64,32> T; }; + template struct fixed_type > { typedef ap_fixed T; }; + template struct fixed_type > { typedef ap_ufixed T; }; + template struct fixed_type > { typedef ap_fixed T; }; + template struct fixed_type > { typedef ap_ufixed T; }; + +template +struct x_traits_d_default { + typedef T1 ACCUM_T; + typedef T1 ACCUM2_T; + typedef T1 ADD_TREE_T; +}; + +template +struct x_traits_d {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d ,DIM> { + typedef ap_int ACCUM_T; + typedef ap_int<2*W> ACCUM2_T; + typedef ap_int<25+W> ADD_TREE_T; +}; + +template +struct x_traits_d ,DIM> { + typedef ap_uint ACCUM_T; + typedef ap_uint<2*W> ACCUM2_T; + typedef ap_uint<25+W> ADD_TREE_T; +}; + +template +struct x_traits_d ,DIM> { + typedef ap_fixed::Value,I+BitWidth::Value,Q,O> ACCUM_T; + typedef ap_fixed<(2*W)+BitWidth::Value,(2*I)+BitWidth::Value,Q,O> ACCUM2_T; + typedef ap_fixed<25+W+BitWidth::Value,25+I+BitWidth::Value,Q,O> ADD_TREE_T; // TODO placeholder +}; + +template +struct x_traits_d ,DIM> { + typedef ap_ufixed::Value,I+BitWidth::Value,Q,O> ACCUM_T; + typedef ap_ufixed<(2*W)+BitWidth::Value,(2*I)+BitWidth::Value,Q,O> ACCUM2_T; + typedef ap_ufixed<25+W+BitWidth::Value,25+I+BitWidth::Value,Q,O> ADD_TREE_T; // TODO placeholder +}; + +} + + + +namespace hlstmp +{ + +template +struct x_traits_default { + typedef T ADD_T; + typedef T SUB_T; + typedef T SAT_T; + typedef T MULT_T; + typedef T MADD_T; +}; + +template +struct x_traits { +// typedef T1 ADD_T; +// typedef T1 SAT_T; +// typedef T1 MULT_T; +// typedef T1 MADD_T; +// typedef T1 CMADD_T; +// typedef T1 CONJ_SQ_T; +// typedef T1 CONJ_SQ_2_T; +// typedef int INT_T; +// typedef T1 INV_T; +// typedef float_struct<24,8> FLOAT_STRUCT_T; + +}; + +template<> +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template<> +struct x_traits : public x_traits_default { }; + +template class MAX{ + public: + const static int value = (A > B) ? A : B; +}; + +template +struct x_traits,ap_fixed > { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; + typedef ap_fixed SAT_T; + typedef ap_fixed MADD_T; + typedef ap_fixed CMADD_T; + typedef ap_fixed<(2*W1)+1,(2*I1)> CONJ_SQ_T; + typedef ap_fixed<(2*W1)+2,(2*I1)+1> CONJ_SQ_2_T; + typedef ap_fixed<2*(MAX::value+1),(MAX::value+1)> INV_T; + typedef int INT_T; + typedef float_struct<24,8> FLOAT_STRUCT_T; +}; + +template +struct x_traits,ap_ufixed > { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits,ap_fixed > { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits,ap_ufixed > { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_ufixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_ufixed MULT_T; + typedef ap_ufixed SAT_T; + typedef ap_ufixed MADD_T; + typedef ap_ufixed CMADD_T; + typedef ap_ufixed<(2*W1)+1,(2*I1)> CONJ_SQ_T; + typedef ap_ufixed<(2*W1)+2,(2*I1)+1> CONJ_SQ_2_T; + typedef ap_ufixed<2*(MAX::value+1),(MAX::value+1)> INV_T; + typedef int INT_T; + typedef float_struct<24,8> FLOAT_STRUCT_T; +}; + +template +struct x_traits,ap_int > { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; + typedef ap_int<(W1 > W2)? W1:W2> MADD_T; +}; + +template +struct x_traits,ap_uint > { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template +struct x_traits,ap_int > { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template +struct x_traits,ap_uint > { + typedef ap_uint::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_uint MULT_T; +}; + +template +struct x_traits,ap_int > : public x_traits, ap_fixed > {}; + +template +struct x_traits,ap_uint > : public x_traits, ap_ufixed > {}; + +template +struct x_traits,ap_int > : public x_traits, ap_fixed > {}; + +template +struct x_traits,ap_uint > : public x_traits, ap_ufixed > {}; + +template +struct x_traits, ap_fixed > : public x_traits, ap_fixed > {}; + +template +struct x_traits, ap_ufixed > : public x_traits, ap_ufixed > {}; + +template +struct x_traits, ap_fixed > : public x_traits, ap_fixed > {}; + +template +struct x_traits, ap_ufixed > : public x_traits, ap_ufixed > {}; + +// fixed_type::T is the smallest ap_fixed/ap_ufixed type that can losslessly contain X +// e.g. X x; fixed_type::T y(x); is sensible; + + template struct fixed_type { }; + template<> struct fixed_type { typedef ap_fixed<8,8> T; }; + template<> struct fixed_type { typedef ap_ufixed<8,8> T; }; + template<> struct fixed_type { typedef ap_fixed<16,16> T; }; + template<> struct fixed_type { typedef ap_ufixed<16,16> T; }; + template<> struct fixed_type { typedef ap_fixed<32,32> T; }; + template<> struct fixed_type { typedef ap_ufixed<32,32> T; }; + template<> struct fixed_type { typedef ap_ufixed<64,32> T; }; + template struct fixed_type > { typedef ap_fixed T; }; + template struct fixed_type > { typedef ap_ufixed T; }; + template struct fixed_type > { typedef ap_fixed T; }; + template struct fixed_type > { typedef ap_ufixed T; }; + +template +struct x_traits_d_default { + typedef T1 ACCUM_T; + typedef T1 ACCUM2_T; + typedef T1 ADD_TREE_T; +}; + +template +struct x_traits_d {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d :x_traits_d_default {}; + +template +struct x_traits_d ,DIM> { + typedef ap_int ACCUM_T; + typedef ap_int<2*W> ACCUM2_T; + typedef ap_int<25+W> ADD_TREE_T; +}; + +template +struct x_traits_d ,DIM> { + typedef ap_uint ACCUM_T; + typedef ap_uint<2*W> ACCUM2_T; + typedef ap_uint<25+W> ADD_TREE_T; +}; + +template +struct x_traits_d ,DIM> { + typedef ap_fixed::Value,I+BitWidth::Value,Q,O> ACCUM_T; + typedef ap_fixed<(2*W)+BitWidth::Value,(2*I)+BitWidth::Value,Q,O> ACCUM2_T; + typedef ap_fixed<25+W+BitWidth::Value,25+I+BitWidth::Value,Q,O> ADD_TREE_T; // TODO placeholder +}; + +template +struct x_traits_d ,DIM> { + typedef ap_ufixed::Value,I+BitWidth::Value,Q,O> ACCUM_T; + typedef ap_ufixed<(2*W)+BitWidth::Value,(2*I)+BitWidth::Value,Q,O> ACCUM2_T; + typedef ap_ufixed<25+W+BitWidth::Value,25+I+BitWidth::Value,Q,O> ADD_TREE_T; // TODO placeholder +}; + +} + + +#endif + + + diff --git a/vitis/v2020_1/utils/x_hls_utils.h b/vitis/v2020_1/utils/x_hls_utils.h new file mode 100644 index 00000000..0c29cca8 --- /dev/null +++ b/vitis/v2020_1/utils/x_hls_utils.h @@ -0,0 +1,1020 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_UTILS_H +#define X_HLS_UTILS_H +#include +#include "ap_fixed.h" +#include "vivado/v2020_1/hls_half.h" +#include +#ifndef __SYNTHESIS__ +#include +#include +#endif + +/* +******************************************************************************* +* HLS utilities +* ----------------------- +* +* General utilities usable by all functions. Mainly contains classes to +* generate static values from recursive class declarations. +* +* pow2 +* sqrtf - C declaration +* to_float +* +* fp_struct +* fp_struct +* fp_struct +* dumpDouble +* +* Power - B^N +* BitWidth = calculate minimum # of bits to store given integer value +* +* Table +* +******************************************************************************* +*/ + +namespace hls { + + template + class numeric_limits { + public: + static T max() { return std::numeric_limits::max(); } + static T min() { return std::numeric_limits::min(); } + static T epsilon() { return std::numeric_limits::epsilon(); } + }; + + template + class numeric_limits > { + public: + static ap_fixed max() { + ap_int m = ::hls::numeric_limits >::max(); + ap_fixed x; + x(W-1,0) = m(W-1,0); + return x; + } + static ap_fixed min() { + ap_int m = ::hls::numeric_limits >::min(); + ap_fixed x; + x(W-1,0) = m(W-1,0); + return x; + } + static ap_fixed epsilon() { + ap_fixed x = 0; + x[0] = 1; //One of the definitions is: Machine epsilon is defined as the smallest number that, when added + //to one, yields a result different from one + return x; + } + }; + + template + class numeric_limits > { + public: + static ap_ufixed max() { + ap_uint m = ::hls::numeric_limits >::max(); + ap_ufixed x; + x(W-1,0) = m(W-1,0); + return x; + } + static ap_ufixed min() { return 0; } + static ap_ufixed epsilon() { + ap_ufixed x = 0; + x[0] = 1; + return x; + } + }; + + template + class numeric_limits > { + public: + static ap_int max() { ap_int m = min(); return ~m; } + static ap_int min() { ap_int m = 0; m[W-1] = 1; return m; } + static ap_int epsilon() { + ap_int x = 0; + x[0] = 1; + return x; + } + }; + + template + class numeric_limits > { + public: + static ap_uint max() { ap_uint zero = 0; return ~zero; } + static ap_uint min() { return 0; } + static ap_uint epsilon() { + ap_uint x = 0; + x[0] = 1; + return x; + } + }; +} + + +namespace hlstmp { + + template + class numeric_limits { + public: + static T max() { return std::numeric_limits::max(); } + static T min() { return std::numeric_limits::min(); } + static T epsilon() { return std::numeric_limits::epsilon(); } + }; + + template + class numeric_limits > { + public: + static ap_fixed max() { + ap_int m = ::hlstmp::numeric_limits >::max(); + ap_fixed x; + x(W-1,0) = m(W-1,0); + return x; + } + static ap_fixed min() { + ap_int m = ::hlstmp::numeric_limits >::min(); + ap_fixed x; + x(W-1,0) = m(W-1,0); + return x; + } + static ap_fixed epsilon() { + ap_fixed x = 0; + x[0] = 1; //One of the definitions is: Machine epsilon is defined as the smallest number that, when added + //to one, yields a result different from one + return x; + } + }; + + template + class numeric_limits > { + public: + static ap_ufixed max() { + ap_uint m = ::hlstmp::numeric_limits >::max(); + ap_ufixed x; + x(W-1,0) = m(W-1,0); + return x; + } + static ap_ufixed min() { return 0; } + static ap_ufixed epsilon() { + ap_ufixed x = 0; + x[0] = 1; + return x; + } + }; + + template + class numeric_limits > { + public: + static ap_int max() { ap_int m = min(); return ~m; } + static ap_int min() { ap_int m = 0; m[W-1] = 1; return m; } + static ap_int epsilon() { + ap_int x = 0; + x[0] = 1; + return x; + } + }; + + template + class numeric_limits > { + public: + static ap_uint max() { ap_uint zero = 0; return ~zero; } + static ap_uint min() { return 0; } + static ap_uint epsilon() { + ap_uint x = 0; + x[0] = 1; + return x; + } + }; +} + + +static inline +const +uint32_t pow2(uint32_t e) +{ + switch(e) { + case 0: return 1; break; + case 1: return 2; break; + case 2: return 4; break; + case 3: return 8; break; + case 4: return 16; break; + case 5: return 32; break; + case 6: return 64; break; + case 7: return 128; break; + case 8: return 256; break; + case 9: return 512; break; + case 10: return 1024; break; + case 11: return 2048; break; + default: return 0; + } +} + +template +T reg(T in) +{ + //#ifndef NO_FORCING +#pragma HLS inline off +#pragma HLS INTERFACE ap_none port=return register + //#endif + return in; +} + +/* +*------------------------------------------------------------------------------ +* References C square root function for single precision square root. +* Maps to FPU sqrt core +*------------------------------------------------------------------------------ +*/ +// extern "C" float sqrtf(float); + +/* +*------------------------------------------------------------------------------ +* Converts data to float type +*------------------------------------------------------------------------------ +*/ +static inline +float to_float(float v) +{ + return v; +} + +template +float to_float(ap_fixed<_W, _I> v) +{ + return v.to_float(); +} + + +/* +*------------------------------------------------------------------------------ +* Single-precision floating point union to convert between 32-bit int and float +*------------------------------------------------------------------------------ +*/ + +template +class fp_struct +{ +}; + +union single_cast { + float f; + uint32_t i; +}; + +template <> +class fp_struct +{ +public: + const static int EXP_INFNAN = 255; + const static int EXP_BIAS = 127; + const static int EXP_BITS = 8; + const static int SIG_BITS = 23; + const static int BITS = 32; + + fp_struct() { + } + fp_struct(float f) { +#if 1 + //def __SYNTHESIS__ + union single_cast dc; + dc.f = f; + ap_uint<32> data = dc.i; +#else + uint32_t t; + memcpy(&t, &f, sizeof(uint32_t)); + ap_uint<32> data = t; +#endif + sign[0] = data[31]; + exp(7,0)= data(30,23); + sig(22,0)= data(22,0); + } + fp_struct(ap_uint<32> data) { + sign[0] = data[31]; + exp(7,0)= data(30,23); + sig(22,0)= data(22,0); + } + fp_struct(uint32_t i) { + ap_uint<32> data = i; + sign[0] = data[31]; + exp(7,0)= data(30,23); + sig(22,0)= data(22,0); + } + inline ap_uint<32> data() const { + ap_uint<32> t; + t[31] = sign[0]; + t(30,23) = exp(7,0); + t(22,0) = sig(22,0); + return t; + } + inline int expv() const { + return exp-127; + } + inline int32_t to_int() const { + return data().to_int(); + } + inline float to_float() const { +#if 1 + //def __SYNTHESIS__ + union single_cast ret; + ret.i = data().to_uint(); + return ret.f; +#else + + uint32_t t = data().to_uint(); + float f; + memcpy(&f, &t, sizeof(uint32_t)); + return f; +#endif + } + inline void set_mantissa(ap_ufixed<1+SIG_BITS,1> mantissa) { + ap_ufixed significand = mantissa; + sig = significand(SIG_BITS-1,0); + } + inline ap_ufixed<1+SIG_BITS,1> mantissa() const { + ap_ufixed<1+SIG_BITS,1> y = 0; + y(y.wl()-1,0) = sig(SIG_BITS-1,0); + y[y.wl()-1] = 1; // The implicit '1' in IEEE format. + return y; + } + inline float to_ieee() const { + return to_float(); + } + inline int __signbit() const { + return sign.to_int(); + } + + static float infinity() { + fp_struct x; + x.sign = 0; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + static float minus_infinity() { + fp_struct x; + x.sign = 1; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + typedef uint32_t inttype; + typedef ap_uint<32> data_type; + ap_uint<1> sign; + ap_uint exp; + ap_uint sig; +}; + +#ifndef __SYNTHESIS__ +static inline +std::ostream &operator << (std::ostream &os, const fp_struct &s) +{ +#ifndef __HLS_SYN__ + os << s.to_float(); + os << " (sign: " << s.sign << ", exp: " << s.exp << ", sig: "; + os << s.sig.to_string(8); + os << " " << s.sig.to_string(2); + os << ")"; +#endif + return os; +} +#endif + +static inline +void +castSingle( + float din, + fp_struct &dout) +{ + fp_struct t(din); + dout = t; +} + +static inline +float +castSingle( + fp_struct din) +{ + return din.to_float(); +} + +static inline +void +dumpSingle( + float da, + fp_struct ds) +{ +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << ds << "\n"; + float sigd = ds.sig.to_int(); + sigd = 1.0 + sigd/8388608.0; + sigd = sigd * (pow(2,ds.expv())); + printf("single: %f (sign: %d, exp: %d(%x), sig: %e(%x))\n",da, + ds.sign.to_int(),ds.expv(),ds.exp.to_int(),sigd,ds.sig.to_int()); +#endif +#endif +} + + +/* +*------------------------------------------------------------------------------ +* Double-precision floating point union to convert between 64-bit int and double +*------------------------------------------------------------------------------ +*/ +union double_cast { + double d; + uint64_t i; +}; + +template <> +class fp_struct +{ +public: + const static int EXP_INFNAN = 2047; + const static int EXP_BIAS = 1023; + const static int EXP_BITS = 11; + const static int SIG_BITS = 52; + const static int BITS = 64; + + fp_struct() { + } + fp_struct(double f) { + union double_cast dc; + dc.d = f; + ap_uint<64> data = dc.i; + sign[0] = data[63]; + exp(10,0) = data(62,52); + sig(51,0) = data(51,0); + } + fp_struct(ap_uint<64> data) { + sign[0] = data[63]; + exp(10,0) = data(62,52); + sig(51,0) = data(51,0); + } + fp_struct(uint64_t i) { + ap_uint<64> data = i; + sign[0] = data[EXP_BITS+SIG_BITS+1-1]; + exp(EXP_BITS-1,0) = data(EXP_BITS-1+SIG_BITS,SIG_BITS); + sig(SIG_BITS-1,0) = data(SIG_BITS-1,0); + } + inline ap_uint<64> data() const { + ap_uint<64> t; + t[EXP_BITS+SIG_BITS+1-1] = sign[0]; + t(EXP_BITS-1+SIG_BITS,SIG_BITS) = exp(EXP_BITS-1,0); + t(SIG_BITS-1,0) = sig(SIG_BITS-1,0); + return t; + } + inline int64_t to_int() const { + return data().to_int64(); + } + inline int expv() const { + return exp-1023; + } + inline ap_uint<20> sig_msb() const { + return sig(51,32); + } + inline ap_uint<32> sig_lsb() const { + return sig(31,0); + } + inline double to_double() const { + union double_cast ret; + ret.i = data().to_uint64(); + return ret.d; + } + inline void set_mantissa(ap_ufixed<1+SIG_BITS,1> mantissa) { + ap_ufixed significand = mantissa; + sig = significand(SIG_BITS-1,0); + } + inline ap_ufixed<1+SIG_BITS,1> mantissa() const { + ap_ufixed<1+SIG_BITS,1> y = 0; + y(y.wl()-1,0) = sig(SIG_BITS-1,0); + y[y.wl()-1] = 1; // The implicit '1' in IEEE format. + return y; + } + inline double to_ieee() const { + return to_double(); + } + inline int __signbit() const { + return sign.to_int(); + } + + static double infinity() { + fp_struct x; + x.sign = 0; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + static double minus_infinity() { + fp_struct x; + x.sign = 1; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + typedef uint64_t inttype; + typedef ap_uint<64> data_type; + ap_uint<1> sign; + ap_uint exp; + ap_uint sig; +}; + +#ifndef __SYNTHESIS__ +static inline +std::ostream &operator << (std::ostream &os, const fp_struct &s) +{ +#ifndef __HLS_SYN__ + os << s.to_double() << " (sign: " << s.sign << ", exp: " << s.exp << ", sig: " << s.sig << " " << s.sig.to_string(2,true) << ")"; +#endif + return os; +} +#endif + +static inline +void +castDouble( + double din, + fp_struct &dout) +{ + fp_struct t(din); + dout = t; +} + +static inline +double +castDouble( + fp_struct din) +{ + return din.to_double(); +} + +static inline +void +dumpDouble( + double da, + fp_struct ds) +{ +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << ds << "\n"; + double sigd = (ds.sig_msb().to_int() * 4294967296.0) + ds.sig_lsb().to_int(); + sigd = 1.0 + sigd/4503599627370496.0; + sigd = sigd * (pow(2,ds.expv())); + printf("double: %f (sign: %d, exp: %d(%x), sig: %e(%x:%x))\n",da, + ds.sign.to_int(),ds.expv(),ds.exp.to_int(),sigd,ds.sig_msb().to_int(),ds.sig_lsb().to_int()); +#endif +#endif +} + +/* +*------------------------------------------------------------------------------ +* Half-precision floating point union to convert between 16-bit int and half +*------------------------------------------------------------------------------ +*/ + +#ifndef HAS_NO_HALF_TYPE +#ifdef __SYNTHESIS__ +union half_cast { + half d; + uint16_t i; +}; +#endif + +template <> +class fp_struct +{ +public: + const static int EXP_INFNAN = 31; + const static int EXP_BIAS = 15; + const static int EXP_BITS = 5; + const static int SIG_BITS = 10; + const static int BITS = 16; + + fp_struct() { + } + fp_struct(half f) { +#ifdef __SYNTHESIS__ + union half_cast dc; + dc.d = f; + ap_uint<16> data = dc.i; +#else + ap_uint<16> data = (uint16_t)f.get_bits(); +#endif + sign[0] = data[EXP_BITS+SIG_BITS+1-1]; + exp(EXP_BITS-1,0) = data(EXP_BITS-1+SIG_BITS,SIG_BITS); + sig(SIG_BITS-1,0) = data(SIG_BITS-1,0); + } + fp_struct(ap_uint<16> data) { + sign[0] = data[EXP_BITS+SIG_BITS+1-1]; + exp(EXP_BITS-1,0) = data(EXP_BITS-1+SIG_BITS,SIG_BITS); + sig(SIG_BITS-1,0) = data(SIG_BITS-1,0); + } + fp_struct(uint16_t i) { + ap_uint<16> data = i; + sign[0] = data[EXP_BITS+SIG_BITS+1-1]; + exp(EXP_BITS-1,0) = data(EXP_BITS-1+SIG_BITS,SIG_BITS); + sig(SIG_BITS-1,0) = data(SIG_BITS-1,0); + } + inline ap_uint<16> data() const { + ap_uint<16> t; + t[EXP_BITS+SIG_BITS+1-1] = sign[0]; + t(EXP_BITS-1+SIG_BITS,SIG_BITS) = exp(EXP_BITS-1,0); + t(SIG_BITS-1,0) = sig(SIG_BITS-1,0); + return t; + } + inline int expv() const { + return exp-EXP_BIAS; + } + inline int16_t to_int() const { + return uint16_t(data().to_int()); + } + inline half to_half() const { +#ifdef __SYNTHESIS__ + union half_cast ret; + ret.i = data().to_uint64(); + return ret.d; +#else + half h; + h.set_bits(detail::uint16(data().to_uint())); + return h; +#endif + } + inline void set_mantissa(ap_ufixed<1+SIG_BITS,1> mantissa) { + ap_ufixed significand = mantissa; + sig = significand(SIG_BITS-1,0); + } + inline ap_ufixed<1+SIG_BITS,1> mantissa() const { + ap_ufixed<1+SIG_BITS,1> y = 0; + y(y.wl()-1,0) = sig(SIG_BITS-1,0); + y[y.wl()-1] = 1; // The implicit '1' in IEEE format. + return y; + } + inline half to_ieee() const { + return to_half(); + } + inline int __signbit() const { + return sign.to_int(); + } + + static half infinity() { + fp_struct x; + x.sign = 0; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + static half minus_infinity() { + fp_struct x; + x.sign = 1; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + typedef uint16_t inttype; + typedef ap_uint<16> data_type; + ap_uint<1> sign; + ap_uint exp; + ap_uint sig; +}; + +#ifndef __SYNTHESIS__ +static inline +std::ostream &operator << (std::ostream &os, const fp_struct &s) +{ +#ifndef __HLS_SYN__ + os << s.to_half() << " (sign: " << s.sign << ", exp: " << s.exp << ", sig: " << s.sig << " " << s.sig.to_string(2,true) << ")"; +#endif + return os; +} +#endif + +static inline +void +castHalf( + half din, + fp_struct &dout) +{ + fp_struct t(din); + dout = t; +} + +static inline +half +castHalf( + fp_struct din) +{ + return din.to_half(); +} + +static inline +void +dumpHalf( + half da, + fp_struct ds) +{ +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << ds << "\n"; + half sigd = ds.sig.to_int(); + sigd = 1.0 + sigd/1024.0; + sigd = sigd * (pow(2,ds.expv())); + printf("half: %f (sign: %d, exp: %d(%x), sig: %e(%x))\n",(float)da, + ds.sign.to_int(),ds.expv(),ds.exp.to_int(),(float)sigd,ds.sig.to_int()); +#endif +#endif +} +#endif + + +/* +*------------------------------------------------------------------------------ +* Raise a value to a certain power (B^N). +* +* This class is necessary in template arguments due to its static const nature +* and the fact that it performs the power operation as part of the recursive +* class declaration. A standard recursive power function would not return +* a static const value. +* +*------------------------------------------------------------------------------ +*/ +template < unsigned int _Base, unsigned int _Num > +class Power +{ +public: + static const unsigned int Value = _Base * Power< _Base, _Num - 1 >::Value; +}; + +template < unsigned int _Base > +class Power< _Base, 0 > +{ +public: + static const unsigned int Value = 1; +}; + +/* +*------------------------------------------------------------------------------ +* Calculate the minimum # of bits to store the given integer value. +* UnsignedBitWidth<2>::Value == 3 +* UnsignedBitWidth<3>::Value == 3 +* UnsignedBitWidth<4>::Value == 4 +*------------------------------------------------------------------------------ +*/ +template < unsigned int _Num, unsigned int _I=_Num/2> +class BitWidth +{ +public: + static const unsigned int Value = 1 + BitWidth<_Num,_I/2>::Value; +}; + +template +class BitWidth<_Num, 0> +{ +public: + static const unsigned int Value = 1; +}; + +/* +*------------------------------------------------------------------------------ +* Calculate the minimum # of bits to store the given unsigned integer value. +* UnsignedBitWidth<2>::Value == 2 +* UnsignedBitWidth<3>::Value == 2 +* UnsignedBitWidth<4>::Value == 3 +*------------------------------------------------------------------------------ +*/ +template < unsigned int _Num, unsigned int _I=_Num/2> +class UnsignedBitWidth +{ +public: + static const unsigned int Value = 1 + UnsignedBitWidth<_Num,_I/2>::Value; +}; + +template +class UnsignedBitWidth<_Num, 0> +{ +public: + static const unsigned int Value = 0; +}; + +/* +*------------------------------------------------------------------------------ +* return num of bits of a specific type +* +* This class returns the bitwidth result of a specific type +*------------------------------------------------------------------------------ +*/ +template < typename T > +class Type_BitWidth +{ +public: + static const unsigned int Value = 8*sizeof(T); +}; + +template +class Type_BitWidth< ap_uint > +{ +public: + static const unsigned int Value = W; +}; + +template < int W > +class Type_BitWidth< ap_int > +{ +public: + static const unsigned int Value = W; +}; + +template < int W, int I > +class Type_BitWidth< ap_ufixed > +{ +public: + static const unsigned int Value = W; +}; + +template < int W, int I > +class Type_BitWidth< ap_fixed > +{ +public: + static const unsigned int Value = W; +}; + +/* +******************************************************************************* +* Table class +* +* T: table data type +* N: Depth of table entries +* +* public: +* dummy Table data type +* array[N] Table array +******************************************************************************* +*/ + +template +class Table : public Table<_T, _Num, _I-1> +{ +public: + typedef typename _T::TableType TableType; + static const typename _T::TableType dummy; + static const int size = _Num; + +}; + +template +class Table<_T, _Num, 0> +{ +public: + static const typename _T::TableType dummy; + static typename _T::TableType array[_Num]; +}; + +/* +* Declares the templatized and static Table dummy variable +* +* Assign the global static const Table::dummy variable to the +* associated Table entry by invoking T::apply, assigning it to array[I] +* and adding smaller templates of Table::dummy to it, thereby recursively +* assigning the smaller templates for Tables.. +*/ + +template +const typename _T::TableType Table<_T, _Num, _I>::dummy + = Table<_T, _Num, 0>::array[_I] = _T::apply(_I,_Num) + 0*Table<_T, _Num, _I-1>::dummy; + +template +const typename _T::TableType Table<_T, _Num, 0>::dummy + = Table<_T, _Num, 0>::array[0] = _T::apply(0,_Num); + +/* +* Declares the templatized and static Table array +*/ +template +typename _T::TableType Table<_T, _Num, 0>::array[_Num]; + +// Some standard junk... this is in the new standard and in boost, +// but for a few definitions it's not worth the dependency +template +struct is_fptype { static const bool value = false; }; +template <> struct is_fptype { static const bool value = true; }; +template <> struct is_fptype { static const bool value = true; }; +template <> struct is_fptype { static const bool value = true; }; + +template +struct is_integraltype { static const bool value = false; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { static const bool value = true; }; +template struct is_integraltype > { static const bool value = true; }; +template struct is_integraltype > { static const bool value = true; }; + +template +struct is_fixedtype { static const bool value = false; }; +template struct is_fixedtype > { static const bool value = true; }; +template struct is_fixedtype > { static const bool value = true; }; + +namespace hls { + template + struct enable_if {}; + + template + struct enable_if { typedef T type; }; + template + struct integral_constant + { + static const T value = _v; + typedef T value_type; + typedef integral_constant type; + operator value_type() { return value; } + }; + + typedef integral_constant true_type; + typedef integral_constant false_type; + + template + struct is_same; + + template + struct is_same : public false_type { }; + + template + struct is_same : public true_type { }; + + template + struct is_arithmetic : public integral_constant::value || is_fptype::value)> { }; +} + +template +struct enable_or { static const bool value = T1::value || T2::value; }; + +template +struct enable_and { static const bool value = T1::value && T2::value; }; + + + +template::value> +struct __promote { typedef double type; }; + +template +struct __promote { }; + +template<> +struct __promote { typedef double type; }; + +template<> +struct __promote { typedef float type; }; + +template<> +struct __promote { typedef half type; }; + + + +//End standard junk + + +#endif + + + diff --git a/vitis/v2021_2/ap_axi_sdata.h b/vitis/v2021_2/ap_axi_sdata.h new file mode 100755 index 00000000..767ad2b9 --- /dev/null +++ b/vitis/v2021_2/ap_axi_sdata.h @@ -0,0 +1,441 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + *****************************************************************************/ + +/* + * This file contains the definition of the data types for AXI streaming. + * ap_axi_s is a signed interpretation of the AXI stream + * ap_axi_u is an unsigned interpretation of the AXI stream + */ + +#ifndef __AP__AXI_SDATA__ +#define __AP__AXI_SDATA__ + +#include +#include "ap_int.h" +//#include "ap_fixed.h" +template +struct ap_fixed; +template +struct ap_ufixed; + +namespace hls { + +template constexpr std::size_t bitwidth = sizeof(T) * CHAR_BIT; + +template constexpr std::size_t bitwidth> = W; +template constexpr std::size_t bitwidth> = W; +template +constexpr std::size_t bitwidth> = _AP_W; +template +constexpr std::size_t bitwidth> = _AP_W; + +template +constexpr std::size_t bytewidth = (bitwidth + CHAR_BIT - 1) / CHAR_BIT; + +template struct axis { + static constexpr std::size_t NewWUser = (WUser == 0) ? 1 : WUser; + static constexpr std::size_t NewWId = (WId == 0) ? 1 : WId; + static constexpr std::size_t NewWDest = (WDest == 0) ? 1 : WDest; + T data; + ap_uint> keep; + ap_uint> strb; + ap_uint user; + ap_uint<1> last; + ap_uint id; + ap_uint dest; + + ap_uint *get_user_ptr() { +#pragma HLS inline + return (WUser == 0) ? nullptr : &user; + } + ap_uint *get_id_ptr() { +#pragma HLS inline + return (WId == 0) ? nullptr : &id; + } + ap_uint *get_dest_ptr() { +#pragma HLS inline + return (WDest == 0) ? nullptr : &dest; + } +}; + +} // namespace hls + +template +using ap_axis = hls::axis, WUser, WId, WDest>; + +template +using ap_axiu = hls::axis, WUser, WId, WDest>; + +// Isolate out qdma_axis from hls::axis for special APIs. +template +struct qdma_axis; + +template struct qdma_axis { + // private: + static constexpr std::size_t kBytes = (WData + 7) / 8; + + ap_uint data; + ap_uint keep; + ap_uint<1> strb; + ap_uint<1> user; + ap_uint<1> last; + ap_uint<1> id; + ap_uint<1> dest; + + ap_uint<1> *get_strb_ptr() { +#pragma HLS inline + return nullptr; + } + ap_uint<1> *get_user_ptr() { +#pragma HLS inline + return nullptr; + } + ap_uint<1> *get_id_ptr() { +#pragma HLS inline + return nullptr; + } + ap_uint<1> *get_dest_ptr() { +#pragma HLS inline + return nullptr; + } + + // public: + ap_uint get_data() const { +#pragma HLS inline + return data; + } + ap_uint get_keep() const { +#pragma HLS inline + return keep; + } + ap_uint<1> get_last() const { +#pragma HLS inline + return last; + } + + void set_data(const ap_uint &d) { +#pragma HLS inline + data = d; + } + void set_keep(const ap_uint &k) { +#pragma HLS inline + keep = k; + } + void set_last(const ap_uint<1> &l) { +#pragma HLS inline + last = l; + } + void keep_all() { +#pragma HLS inline + ap_uint k = 0; + keep = ~k; + } + + qdma_axis() { +#pragma HLS inline + ; + } + qdma_axis(ap_uint d) : data(d) { +#pragma HLS inline + ; + } + qdma_axis(ap_uint d, ap_uint k) : data(d), keep(k) { +#pragma HLS inline + ; + } + qdma_axis(ap_uint d, ap_uint k, ap_uint<1> l) + : data(d), keep(k), last(l) { +#pragma HLS inline + ; + } + qdma_axis(const qdma_axis &d) + : data(d.data), keep(d.keep), last(d.last) { +#pragma HLS inline + ; + } + qdma_axis &operator=(const qdma_axis &d) { +#pragma HLS inline + data = d.data; + keep = d.keep; + last = d.last; + return *this; + } +}; + +#ifdef AESL_SYN +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) +#include "hls_stream.h" +namespace hls { + +template +class stream> { + typedef axis __STREAM_T__; + +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char *name) { (void)name; } + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream<__STREAM_T__> &chn) : V(chn.V) {} + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator>>(__STREAM_T__ &rdata) { read(rdata); } + + INLINE void operator<<(const __STREAM_T__ &wdata) { write(wdata); } + + /// empty & full + bool empty() { +#pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, &V.strb, V.get_user_ptr(), + &V.last, V.get_id_ptr(), V.get_dest_ptr()); + return !tmp; + } + + bool full() { +#pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, &V.strb, V.get_user_ptr(), + &V.last, V.get_id_ptr(), V.get_dest_ptr()); + return !tmp; + } + + /// Blocking read + void read(__STREAM_T__ &dout) { +#pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, &V.strb, V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, &tmp.keep, + &tmp.strb, tmp.get_user_ptr(), &tmp.last, tmp.get_id_ptr(), + tmp.get_dest_ptr()); + dout = tmp; + } + + __STREAM_T__ read() { +#pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, &V.strb, V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, &tmp.keep, + &tmp.strb, tmp.get_user_ptr(), &tmp.last, tmp.get_id_ptr(), + tmp.get_dest_ptr()); + return tmp; + } + + /// Blocking write + void write(const __STREAM_T__ &din) { +#pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, &V.strb, V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, &tmp.keep, + &tmp.strb, tmp.get_user_ptr(), &tmp.last, tmp.get_id_ptr(), + tmp.get_dest_ptr()); + } + + /// Non-Blocking read + bool read_nb(__STREAM_T__ &dout) { +#pragma HLS inline + __STREAM_T__ tmp; + if (__fpga_axis_nb_pop(&V.data, &V.keep, &V.strb, V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, + &tmp.keep, &tmp.strb, tmp.get_user_ptr(), + &tmp.last, tmp.get_id_ptr(), tmp.get_dest_ptr())) { + dout = tmp; + return true; + } else { + return false; + } + } + + /// Non-Blocking write + bool write_nb(const __STREAM_T__ &in) { +#pragma HLS inline + __STREAM_T__ tmp = in; + bool full_n = __fpga_axis_nb_push( + &V.data, &V.keep, &V.strb, V.get_user_ptr(), &V.last, V.get_id_ptr(), + V.get_dest_ptr(), &tmp.data, &tmp.keep, &tmp.strb, tmp.get_user_ptr(), + &tmp.last, tmp.get_id_ptr(), tmp.get_dest_ptr()); + return full_n; + } + +private: + __STREAM_T__ V NO_CTOR; +}; + +// specialization for qdma +template +class stream> { + typedef qdma_axis __STREAM_T__; + +public: + /// Constructors + INLINE stream() {} + + INLINE stream(const char *name) { (void)name; } + + /// Make copy constructor and assignment operator private +private: + INLINE stream(const stream<__STREAM_T__> &chn) : V(chn.V) {} + +public: + /// Overload >> and << operators to implement read() and write() + INLINE void operator>>(__STREAM_T__ &rdata) { read(rdata); } + + INLINE void operator<<(const __STREAM_T__ &wdata) { write(wdata); } + + /// empty & full + bool empty() { +#pragma HLS inline + bool tmp = __fpga_axis_valid(&V.data, &V.keep, V.get_strb_ptr(), V.get_user_ptr(), + &V.last, V.get_id_ptr(), V.get_dest_ptr()); + return !tmp; + } + + bool full() { +#pragma HLS inline + bool tmp = __fpga_axis_ready(&V.data, &V.keep, V.get_strb_ptr(), V.get_user_ptr(), + &V.last, V.get_id_ptr(), V.get_dest_ptr()); + return !tmp; + } + + /// Blocking read + void read(__STREAM_T__ &dout) { +#pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, V.get_strb_ptr(), V.get_user_ptr(), + &V.last, V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, + &tmp.keep, tmp.get_strb_ptr(), tmp.get_user_ptr(), + &tmp.last, tmp.get_id_ptr(), tmp.get_dest_ptr()); + dout = tmp; + } + + __STREAM_T__ read() { +#pragma HLS inline + __STREAM_T__ tmp; + __fpga_axis_pop(&V.data, &V.keep, V.get_strb_ptr(), V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, &tmp.keep, + tmp.get_strb_ptr(), tmp.get_user_ptr(), &tmp.last, tmp.get_id_ptr(), + tmp.get_dest_ptr()); + return tmp; + } + + /// Blocking write + void write(const __STREAM_T__ &din) { +#pragma HLS inline + __STREAM_T__ tmp = din; + __fpga_axis_push(&V.data, &V.keep, V.get_strb_ptr(), V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, &tmp.keep, + tmp.get_strb_ptr(), tmp.get_user_ptr(), &tmp.last, tmp.get_id_ptr(), + tmp.get_dest_ptr()); + } + + /// Non-Blocking read + bool read_nb(__STREAM_T__ &dout) { +#pragma HLS inline + __STREAM_T__ tmp; + + if (__fpga_axis_nb_pop(&V.data, &V.keep, &V.strb, V.get_user_ptr(), &V.last, + V.get_id_ptr(), V.get_dest_ptr(), &tmp.data, + &tmp.keep, &tmp.strb, tmp.get_user_ptr(), + &tmp.last, tmp.get_id_ptr(), tmp.get_dest_ptr())) { + dout = tmp; + return true; + } else { + return false; + } + } + + /// Non-Blocking write + bool write_nb(const __STREAM_T__ &in) { +#pragma HLS inline + __STREAM_T__ tmp = in; + bool full_n = __fpga_axis_nb_push( + &V.data, &V.keep, V.get_strb_ptr(), V.get_user_ptr(), &V.last, V.get_id_ptr(), + V.get_dest_ptr(), &tmp.data, &tmp.keep, tmp.get_strb_ptr(), tmp.get_user_ptr(), + &tmp.last, tmp.get_id_ptr(), tmp.get_dest_ptr()); + return full_n; + } + +private: + __STREAM_T__ V NO_CTOR; +}; + +} // namespace hls +#endif +#endif +#endif diff --git a/vitis/v2021_2/ap_cint.h b/vitis/v2021_2/ap_cint.h new file mode 100755 index 00000000..3e73a876 --- /dev/null +++ b/vitis/v2021_2/ap_cint.h @@ -0,0 +1,95 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* ap_cint.h */ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_CINT_H_ +#define _AUTOPILOT_CINT_H_ + +#ifdef __cplusplus +#warning This header file cannot be used in a C++ design. C-synthesis will fail. +#endif + +#if (defined __llvm__) || \ + (defined AESL_TB) || (defined AUTOPILOT_BC_SIM) || (__RTL_SIMULATION__) + +#ifndef __openclc +#ifndef __SYNTHESIS__ +#include +#include +#endif +#endif + +#ifdef __CYGWIN__ +# ifdef feof +# undef feof +# endif + +# ifdef ferror +# undef ferror +# endif +#endif + + +#include "etc/autopilot_apint.h" + +#else +# ifdef __cplusplus +# error This header file cannot be used in a C++ design. +# else +# error This header file does not support debugging. Do not select "Debug" in GUI. +# endif +#endif /* SYN or AUTOCC */ +#endif /* #ifndef _AUTOPILOT_CINT_H_ */ + + diff --git a/vitis/v2021_2/ap_common.h b/vitis/v2021_2/ap_common.h new file mode 100755 index 00000000..e3274b7d --- /dev/null +++ b/vitis/v2021_2/ap_common.h @@ -0,0 +1,781 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_COMMON_H__ +#define __AP_COMMON_H__ + +// ---------------------------------------------------------------------- + +#include "ap_decl.h" + +// Macro functions +#define AP_MAX(a, b) ((a) > (b) ? (a) : (b)) +#define AP_MIN(a, b) ((a) < (b) ? (a) : (b)) +#define AP_ABS(a) ((a) >= 0 ? (a) : -(a)) + +#ifndef AP_ASSERT +#ifndef __SYNTHESIS__ +#include +#define AP_ASSERT(cond, msg) assert((cond) && (msg)) +#else +#define AP_ASSERT(cond, msg) +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_ASSERT + + +#ifndef _AP_UNUSED_PARAM + #define _AP_UNUSED_PARAM(x) (void)(x) +#endif + +#ifndef __SYNTHESIS__ +// for fprintf messages. +#include +// for exit on error. +#include +#endif + +#define AP_WARNING(OVERFLOW_TYPE, VALUE, AP, WIDTH) \ + std::cout << "WARNING: assign " << OVERFLOW_TYPE << " value " \ + << VALUE << " to type " << AP << "<" << WIDTH << ">." \ + << std::endl; \ + std::cout << "Use gdb to diagnose into " << __FILE__ << \ + ":" << __FUNCTION__ << ":" << __LINE__ << std::endl; + +// same disable condition as assert. +#if !defined(__SYNTHESIS__) && !defined(NDEBUG) + +#define _AP_DEBUG(cond, ...) \ + do { \ + if ((cond)) { \ + fprintf(stderr, "DEBUG: " __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + } \ + } while (0) +#define _AP_WARNING(cond, ...) \ + do { \ + if ((cond)) { \ + fprintf(stderr, "WARNING: " __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + } \ + } while (0) +#define _AP_ERROR(cond, ...) \ + do { \ + if ((cond)) { \ + fprintf(stderr, "ERROR: " __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + abort(); \ + } \ + } while (0) + +#else // if !defined(__SYNTHESIS__) && !defined(NDEBUG) + +#define __AP_VOID_CAST static_cast +#define _AP_DEBUG(cond, ...) (__AP_VOID_CAST(0)) +#define _AP_WARNING(cond, ...) (__AP_VOID_CAST(0)) +#define _AP_ERROR(cond, ...) (__AP_VOID_CAST(0)) + +#endif // if !defined(__SYNTHESIS__) && !defined(NDEBUG) else + +// ---------------------------------------------------------------------- + +// Attribute only for synthesis +#ifdef __SYNTHESIS__ +#define INLINE inline __attribute__((always_inline)) +//#define INLINE inline __attribute__((noinline)) +#else +#define INLINE inline +#endif + +#define AP_WEAK +// __attribute__((weak)) + +#ifndef AP_INT_MAX_W +#define AP_INT_MAX_W 1024 +#endif + +#define BIT_WIDTH_UPPER_LIMIT (1 << 15) +#if AP_INT_MAX_W > BIT_WIDTH_UPPER_LIMIT +#error "Bitwidth exceeds 32768 (1 << 15), the maximum allowed value" +#endif + +#define MAX_MODE(BITS) ((BITS + 1023) / 1024) + +// ---------------------------------------------------------------------- + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +// for overload operator<< +#include +#endif +#endif // ifndef AP_AUTOCC + +#ifndef __SYNTHESIS__ +// for string format. +#include +// for string. +#include +#endif + +// for detecting if char is signed. +enum { CHAR_IS_SIGNED = (char)-1 < 0 }; + +// TODO we have similar traits in x_hls_utils.h, should consider unify. +namespace _ap_type { +template +struct is_signed { + static const bool value = _Tp(-1) < _Tp(1); +}; + +template +struct is_integral { + static const bool value = false; +}; +#define DEF_IS_INTEGRAL(CTYPE) \ + template <> \ + struct is_integral { \ + static const bool value = true; \ + }; +DEF_IS_INTEGRAL(bool) +DEF_IS_INTEGRAL(char) +DEF_IS_INTEGRAL(signed char) +DEF_IS_INTEGRAL(unsigned char) +DEF_IS_INTEGRAL(short) +DEF_IS_INTEGRAL(unsigned short) +DEF_IS_INTEGRAL(int) +DEF_IS_INTEGRAL(unsigned int) +DEF_IS_INTEGRAL(long) +DEF_IS_INTEGRAL(unsigned long) +DEF_IS_INTEGRAL(ap_slong) +DEF_IS_INTEGRAL(ap_ulong) +#undef DEF_IS_INTEGRAL + +template +struct enable_if {}; +// partial specialization for true +template +struct enable_if { + typedef _Tp type; +}; + +template +struct remove_const { + typedef _Tp type; +}; + +template +struct remove_const<_Tp const> { + typedef _Tp type; +}; +} // namespace _ap_type + +// ---------------------------------------------------------------------- + +// Define ssdm_int and _ssdm_op. +#ifdef __SYNTHESIS__ + +#if ((__clang_major__ == 3) && (__clang_minor__ == 1)) + +/* HECTOR is a tool for formal system-level to RTL equivalence checking. + * https://www.research.ibm.com/haifa/conferences/hvc2008/present/CarlPixleyHVC08.pdf + * we used to used Hector.h here instead of following ssdm_int definition, + * but now it is deleted. + */ +template +struct ssdm_int; + +#define AP_INT_BASE(_AP_N, mode) \ + template <> \ + struct ssdm_int<_AP_N + 1024 * mode, true> { \ + typedef int __attribute__((bitwidth(_AP_N + 1024 * mode))) DataType; \ + int V __attribute__((bitwidth(_AP_N + 1024 * mode))); \ + INLINE ssdm_int<_AP_N + 1024 * mode, true>(){}; \ + }; \ + template <> \ + struct ssdm_int<_AP_N + 1024 * mode, false> { \ + typedef unsigned __attribute__((bitwidth(_AP_N + 1024 * mode))) DataType; \ + unsigned int V __attribute__((bitwidth(_AP_N + 1024 * mode))); \ + INLINE ssdm_int<_AP_N + 1024 * mode, false>(){}; \ + }; + +#if MAX_MODE(AP_INT_MAX_W) >= 1 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 0) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 2 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 1) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 3 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 2) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 4 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 3) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 5 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 4) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 6 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 5) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 7 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 6) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 8 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 7) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 9 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 8) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 10 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 9) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 11 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 10) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 12 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 11) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 13 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 12) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 14 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 13) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 15 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 14) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 16 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 15) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 17 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 16) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 18 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 17) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 19 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 18) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 20 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 19) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 21 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 20) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 22 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 21) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 23 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 22) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 24 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 23) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 25 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 24) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 26 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 25) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 27 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 26) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 28 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 27) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 29 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 28) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 30 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 29) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 31 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 30) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#if MAX_MODE(AP_INT_MAX_W) >= 32 +#define HANDLE_BAT(TYPE, _AP_N) AP_INT_BASE(_AP_N, 31) +#define APINT_DEFINE_INT64 +#include "etc/autopilot_dt.def" +#undef APINT_DEFINE_INT64 +#undef HANDLE_BAT +#endif + +#undef MAX_MODE +#undef AP_INT_BASE + +#else // HLS clang of higher version than 3.1 + +template +struct ssdm_int; + +template +struct ssdm_int<_AP_N, true> { + typedef int __attribute__((bitwidth(_AP_N))) DataType; + int V __attribute__((bitwidth(_AP_N))); + INLINE ssdm_int<_AP_N, true>(){}; +}; + +template +struct ssdm_int<_AP_N, false> { + typedef unsigned __attribute__((bitwidth(_AP_N))) DataType; + unsigned V __attribute__((bitwidth(_AP_N))); + INLINE ssdm_int<_AP_N, false>(){}; +}; + +#endif // clang 3.1 test + +// FIXME typeof is an compiler extension. +// FIXME use ({}) to return value is GCC extension. + +#define _ssdm_op_concat(Ret, X, Y) \ + ({ \ + typeof(Ret) __Result__ = 0; \ + typeof(X) __X2__ = X; \ + typeof(Y) __Y2__ = Y; \ + __builtin_bit_concat((void*)(&__Result__), (void*)(&__X2__), \ + (void*)(&__Y2__)); \ + __Result__; \ + }) + +#define _ssdm_op_get_bit(Val, Bit) \ + ({ \ + typeof(Val) __Val2__ = Val; \ + bool __Result__ = __builtin_bit_select((void*)(&__Val2__), Bit); \ + __Result__; \ + }) + +#define _ssdm_op_set_bit(Val, Bit, Repl) \ + ({ \ + typename _ap_type::remove_const::type __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = !!Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), \ + (void*)(&__Repl2__), Bit, Bit); \ + __Result__; \ + }) + +#define _ssdm_op_get_range(Val, Lo, Hi) \ + ({ \ + typename _ap_type::remove_const::type __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + __builtin_bit_part_select((void*)(&__Result__), (void*)(&__Val2__), Lo, \ + Hi); \ + __Result__; \ + }) + +#define _ssdm_op_set_range(Val, Lo, Hi, Repl) \ + ({ \ + typename _ap_type::remove_const::type __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), \ + (void*)(&__Repl2__), Lo, Hi); \ + __Result__; \ + }) + +#include "etc/autopilot_ssdm_bits.h" + +extern "C" void _ssdm_string2bits(...); + +#endif // ifdef __SYNTHESIS__ + +#ifndef NON_C99STRING +#define _AP_C99 true +#else +#define _AP_C99 false +#endif + +static inline unsigned char guess_radix(const char* s) { + unsigned char rd = 10; ///< default radix + const char* p = s; + // skip neg sign if it exists + if (p[0] == '-' || p[0] == '+') ++p; + // guess based on following two bits. + if (p[0] == '0') { + if (p[1] == 'b' || p[1] == 'B') { + rd = 2; + } else if (p[1] == 'o' || p[1] == 'O') { + rd = 8; + } else if (p[1] == 'x' || p[1] == 'X') { + rd = 16; + } else if (p[1] == 'd' || p[1] == 'D') { + rd = 10; + } + } + return rd; +} + +// ---------------------------------------------------------------------- + +// Forward declaration of all AP types. +// Before ap_private definition. +#ifdef __SYNTHESIS__ +#define _HLS_HALF_DEFINED_ +typedef __fp16 half; +#else +class half; +#endif + +// FIXME previously, ap_int_syn.h includes hls_half.h, which includes cmath.h +// even during synthesis. Some test cases are spoiled... +#ifdef __cplusplus +#ifndef __SYNTHESIS__ +#include +#endif +#endif + +// ---------------------------------------------------------------------- + +// Basic integral struct upon which ap_int and ap_fixed are defined. +#ifdef __SYNTHESIS__ +// Use ssdm_int, a compiler dependent, attribute constrained integeral type as +// basic data type. +#define _AP_ROOT_TYPE ssdm_int +// Basic ops. +#define _AP_ROOT_op_concat(Ret, X, Y) _ssdm_op_concat(Ret, X, Y) +#define _AP_ROOT_op_get_bit(Val, Bit) _ssdm_op_get_bit(Val, Bit) +#define _AP_ROOT_op_set_bit(Val, Bit, Repl) _ssdm_op_set_bit(Val, Bit, Repl) +#define _AP_ROOT_op_get_range(Val, Lo, Hi) _ssdm_op_get_range(Val, Lo, Hi) +#define _AP_ROOT_op_set_range(Val, Lo, Hi, Repl) \ + _ssdm_op_set_range(Val, Lo, Hi, Repl) +#define _AP_ROOT_op_reduce(Op, Val) _ssdm_op_reduce(Op, Val) +#else // ifdef __SYNTHESIS__ +// Use ap_private for compiler-independent basic data type +template +class ap_private; +/// model ssdm_int in standard C++ for simulation. +template +struct ssdm_int_sim { + /// integral type with template-specified width and signedness. + typedef ap_private<_AP_W, _AP_S> DataType; + ap_private<_AP_W, _AP_S> V; + ssdm_int_sim() {} +}; +#define _AP_ROOT_TYPE ssdm_int_sim +// private's ref uses _AP_ROOT_TYPE. +#include "etc/ap_private.h" +// XXX The C-sim model cannot use GCC-extension +// Basic ops. Ret and Val are ap_private. +template +inline _Tp1 _AP_ROOT_op_concat(const _Tp1& Ret, const _Tp2& X, const _Tp3& Y) { + _Tp1 r = (X).operator,(Y); + return r; +} +#define _AP_ROOT_op_get_bit(Val, Bit) (Val).get_bit((Bit)) +template +inline _Tp1& _AP_ROOT_op_set_bit(_Tp1& Val, const _Tp2& Bit, const _Tp3& Repl) { + (Val).set_bit((Bit), (Repl)); + return Val; +} +// notice the order of high and low index is different in ssdm call and +// ap_private.range()... +#define _AP_ROOT_op_get_range(Val, Lo, Hi) (Val).range((Hi), (Lo)) +template +inline _Tp1& _AP_ROOT_op_set_range(_Tp1& Val, const _Tp2& Lo, const _Tp3& Hi, + const _Tp4& Repl) { + (Val).range((Hi), (Lo)) = Repl; + return (Val); +} +#define _AP_ROOT_op_and_reduce(Val) (Val).and_reduce() +#define _AP_ROOT_op_nand_reduce(Val) (Val).nand_reduce() +#define _AP_ROOT_op_or_reduce(Val) (Val).or_reduce() +#define _AP_ROOT_op_xor_reduce(Val) (Val).xor_reduce() +// ## is the concatenation in preprocessor: +#define _AP_ROOT_op_reduce(Op, Val) _AP_ROOT_op_##Op##_reduce(Val) +#endif // ifdef __SYNTHESIS__ else + +// ---------------------------------------------------------------------- + +// Constants for half, single, double pricision floating points +#define HALF_MAN 10 +#define FLOAT_MAN 23 +#define DOUBLE_MAN 52 + +#define HALF_EXP 5 +#define FLOAT_EXP 8 +#define DOUBLE_EXP 11 + +#define BIAS(e) ((1L << (e - 1L)) - 1L) +#define HALF_BIAS BIAS(HALF_EXP) +#define FLOAT_BIAS BIAS(FLOAT_EXP) +#define DOUBLE_BIAS BIAS(DOUBLE_EXP) + +#define APFX_IEEE_DOUBLE_E_MAX DOUBLE_BIAS +#define APFX_IEEE_DOUBLE_E_MIN (-DOUBLE_BIAS + 1) + +INLINE ap_ulong doubleToRawBits(double pf) { + union { + ap_ulong __L; + double __D; + } LD; + LD.__D = pf; + return LD.__L; +} + +INLINE unsigned int floatToRawBits(float pf) { + union { + unsigned int __L; + float __D; + } LD; + LD.__D = pf; + return LD.__L; +} + +INLINE unsigned short halfToRawBits(half pf) { +#ifdef __SYNTHESIS__ + union { + unsigned short __L; + half __D; + } LD; + LD.__D = pf; + return LD.__L; +#else + return pf.get_bits(); +#endif +} + +// usigned long long is at least 64-bit +INLINE double rawBitsToDouble(ap_ulong pi) { + union { + ap_ulong __L; + double __D; + } LD; + LD.__L = pi; + return LD.__D; +} + +// long is at least 32-bit +INLINE float rawBitsToFloat(unsigned long pi) { + union { + unsigned int __L; + float __D; + } LD; + LD.__L = pi; + return LD.__D; +} + +// short is at least 16-bit +INLINE half rawBitsToHalf(unsigned short pi) { +#ifdef __SYNTHESIS__ + union { + unsigned short __L; + half __D; + } LD; + LD.__L = pi; + return LD.__D; +#else + // sim model of half has a non-trivial constructor + half __D; + __D.set_bits(pi); + return __D; +#endif +} + +#endif // ifndef __AP_COMMON_H__ else + +// -*- cpp -*- +// vim: fdm=marker:foldmarker=#if,#endif:nofoldenable + + diff --git a/vitis/v2021_2/ap_decl.h b/vitis/v2021_2/ap_decl.h new file mode 100755 index 00000000..8617b5ba --- /dev/null +++ b/vitis/v2021_2/ap_decl.h @@ -0,0 +1,247 @@ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + */ + +#ifndef __AP_DECL_H__ +#define __AP_DECL_H__ + +// ---------------------------------------------------------------------- + +#if !defined(__AP_FIXED_H__) && !defined(__AP_INT_H__) && !defined(__AUTOPILOT_CBE_H__) && !defined(__HLS_HALF_H__) +#error "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +// Test __SYNTHESIS__ only for mode +#if !defined(__SYNTHESIS__) && (defined(AESL_SYN) || defined(__HLS_SYN__)) +//#pragma message "AESL_SYN and __HLS_SYN__ should be replaced by __SYNTHESIS__" +#define __SYNTHESIS__ +#endif + +/* for safety*/ +#if (defined(_AP_N) || defined(_AP_C)) +#error One or more of the following is defined: _AP_N, _AP_C. Definition conflicts with their usage as template parameters. +#endif + +/* for safety*/ +#if (defined(_AP_W) || defined(_AP_I) || defined(_AP_S) || defined(_AP_Q) || \ + defined(_AP_O) || defined(_AP_W2) || defined(_AP_I2) || \ + defined(_AP_S2) || defined(_AP_Q2) || defined(_AP_O2) || \ + defined(_AP_N) || defined(_AP_N2)) +#error \ + "One or more of the following is defined: _AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N, _AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2. Definition conflicts with their usage as template parameters." +#endif + +/*for safety*/ +#if (defined(_AP_W3) || defined(_AP_S3) || defined(_AP_W4) || defined(_AP_S4)) +#error \ + "One or more of the following is defined: _AP_W3, _AP_S3, _AP_W4,_AP_S4. Definition conflicts with their usage as template parameters." +#endif + +#if (defined(_AP_W1) || defined(_AP_S1) || defined(_AP_T) || \ + defined(_AP_T1) || defined(_AP_T2) || defined(_AP_T3) || defined(_AP_T4)) +#error \ + "One or more of the following is defined: _AP_W1, _AP_S1, _AP_T, _AP_T1, _AP_T2, _AP_T3, _AP_T4. Definition conflicts with their usage as template parameters." +#endif + +#ifndef __cplusplus +#error "AP data type can only be used in C++" +#endif + +// ---------------------------------------------------------------------- + +#ifndef __SC_COMPATIBLE__ +/// ap_fixed quantification mode +enum ap_q_mode { + AP_RND, //< rounding to plus infinity + AP_RND_ZERO, //< rounding to zero + AP_RND_MIN_INF, //< rounding to minus infinity + AP_RND_INF, //< rounding to infinity + AP_RND_CONV, //< convergent rounding + AP_TRN, //< truncation + AP_TRN_ZERO, //< truncation to zero +}; + +// FIXME for legacy code +#ifndef SYSTEMC_INCLUDED +#define SC_RND AP_RND +#define SC_RND_ZERO AP_RND_ZERO +#define SC_RND_MIN_INF AP_RND_MIN_INF +#define SC_RND_INF AP_RND_INF +#define SC_RND_CONV AP_RND_CONV +#define SC_TRN AP_TRN +#define SC_TRN_ZERO AP_TRN_ZERO +#endif // !defined(SYSTEMC_INCLUDED) + +/// ap_fixed saturation mode +enum ap_o_mode { + AP_SAT, //< saturation + AP_SAT_ZERO, //< saturation to zero + AP_SAT_SYM, //< symmetrical saturation + AP_WRAP, //< wrap-around (*) + AP_WRAP_SM, //< sign magnitude wrap-around (*) +}; + +// FIXME for legacy code +#ifndef SYSTEMC_INCLUDED +#define SC_SAT AP_SAT +#define SC_SAT_ZERO AP_SAT_ZERO +#define SC_SAT_SYM AP_SAT_SYM +#define SC_WRAP AP_WRAP +#define SC_WRAP_SM AP_WRAP_SM +#endif // !defined(SYSTEMC_INCLUDED) + +#else // defined(__SC_COMPATIBLE__) + +// There will not be sc_fxdefs.h, and the emu should be defined by ap_fixed. + +/// ap_fixed quantification mode +enum ap_q_mode { + SC_RND, //< rounding to plus infinity + SC_RND_ZERO, //< rounding to zero + SC_RND_MIN_INF, //< rounding to minus infinity + SC_RND_INF, //< rounding to infinity + SC_RND_CONV, //< convergent rounding + SC_TRN, //< truncation + SC_TRN_ZERO, //< truncation to zero +}; + +#define AP_RND SC_RND +#define AP_RND_ZERO SC_RND_ZERO +#define AP_RND_MIN_INF SC_RND_MIN_INF +#define AP_RND_INF SC_RND_INF +#define AP_RND_CONV SC_RND_CONV +#define AP_TRN SC_TRN +#define AP_TRN_ZERO SC_TRN_ZERO + +/// ap_fixed saturation mode +enum ap_o_mode { + SC_SAT, //< saturation + SC_SAT_ZERO, //< saturation to zero + SC_SAT_SYM, //< symmetrical saturation + SC_WRAP, //< wrap-around (*) + SC_WRAP_SM, //< sign magnitude wrap-around (*) +}; + +#define AP_SAT SC_SAT +#define AP_SAT_ZERO SC_SAT_ZERO +#define AP_SAT_SYM SC_SAT_SYM +#define AP_WRAP SC_WRAP +#define AP_WRAP_SM SC_WRAP_SM + +#endif // defined(__SC_COMPATIBLE__) + +template +struct ap_int_base; + +template +struct ap_int; + +template +struct ap_uint; + +template +struct ap_range_ref; + +template +struct ap_bit_ref; + +template +struct ap_concat_ref; + +template +struct ap_fixed_base; + +template +struct ap_fixed; + +template +struct ap_ufixed; + +template +struct af_range_ref; + +template +struct af_bit_ref; + +/// string base mode +enum BaseMode { AP_BIN = 2, AP_OCT = 8, AP_DEC = 10, AP_HEX = 16 }; + +#ifndef SYSTEMC_INCLUDED +#define SC_BIN 2 +#define SC_OCT 8 +#define SC_DEC 10 +#define SC_HEX 16 +#endif // !defined(SYSTEMC_INCLUDED) + +// Alias C data types +#if defined(_MSC_VER) && _MSC_VER < 1900 +// Legacy tool before Visual Studio 2015 +typedef signed __int64 ap_slong; +typedef unsigned __int64 ap_ulong; +#else +typedef signed long long ap_slong; +typedef unsigned long long ap_ulong; +#endif // _MSC_VER + +enum { + _AP_SIZE_char = 8, + _AP_SIZE_short = sizeof(short) * 8, + _AP_SIZE_int = sizeof(int) * 8, + _AP_SIZE_long = sizeof(long) * 8, + _AP_SIZE_ap_slong = sizeof(ap_slong) * 8 +}; + +#endif // !defined(__AP_DECL_H__) + +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 diff --git a/vitis/v2021_2/ap_fixed.h b/vitis/v2021_2/ap_fixed.h new file mode 100755 index 00000000..7e3de000 --- /dev/null +++ b/vitis/v2021_2/ap_fixed.h @@ -0,0 +1,415 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_FIXED_H__ +#define __AP_FIXED_H__ + +#include "ap_common.h" +#include "ap_fixed_base.h" +#include "ap_fixed_ref.h" + +//--------------------------------------------------------------- + +/// Signed Arbitrary Precision Fixed-Point Type. +// default for _AP_Q, _AP_O and _AP_N set in ap_decl.h +template +struct ap_fixed : ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> { + typedef ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> Base; + // Constructor + /// default ctor + INLINE ap_fixed() : Base() {} + + /// copy ctor from ap_fixed_base. + template + INLINE ap_fixed(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_fixed(const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + //// from ap_fixed + //template + //INLINE ap_fixed( + // const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //template + //INLINE ap_fixed( + // const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //// from ap_ufixed. + //template + //INLINE ap_fixed( + // const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + //template + //INLINE ap_fixed( + // const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + /// copy ctor from ap_int_base. + template + INLINE ap_fixed(const ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_fixed(const volatile ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_fixed(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + _AP_UNUSED_PARAM(raw); + } +#endif +#endif + + //// from ap_int. + //template + //INLINE ap_fixed(const ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //template + //INLINE ap_fixed(const volatile ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //// from ap_uint. + //template + //INLINE ap_fixed(const ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + //template + //INLINE ap_fixed(const volatile ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + // from ap_bit_ref. + template + INLINE ap_fixed(const ap_bit_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + // from ap_range_ref. + template + INLINE ap_fixed(const ap_range_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + // from ap_concat_ref. + template + INLINE ap_fixed(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op) + : Base(op) {} + + // from af_bit_ref. + template + INLINE ap_fixed( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + // from af_range_ref. + template + INLINE ap_fixed( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +// from c types. +#define CTOR(TYPE) \ + INLINE ap_fixed(TYPE v) : Base(v) {} + + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) + CTOR(half) + CTOR(float) + CTOR(double) +#undef CTOR + + INLINE ap_fixed(const char* s) : Base(s) {} + + INLINE ap_fixed(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + // The assignment operator is technically inherited; however, it is always + // hidden by an explicitly or implicitly defined assignment operator for the + // derived class. + /* XXX ctor will be used when right is not of proper type. */ +#ifndef _MSC_VER + ap_fixed & + operator=(const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &op) = default; +#else + INLINE ap_fixed& operator=( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } +#endif + + INLINE void operator=( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) volatile { + Base::V = op.V; + } + + INLINE ap_fixed& operator=( + const volatile ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + + INLINE void operator=( + const volatile ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) volatile { + Base::V = op.V; + } +}; // struct ap_fixed. + +//------------------------------------------------------------------- + +// Unsigned Arbitrary Precision Fixed-Point Type. +// default for _AP_Q, _AP_O and _AP_N set in ap_decl.h +template +struct ap_ufixed : ap_fixed_base<_AP_W, _AP_I, false, _AP_Q, _AP_O, _AP_N> { + typedef ap_fixed_base<_AP_W, _AP_I, false, _AP_Q, _AP_O, _AP_N> Base; + // Constructor + /// default ctor + INLINE ap_ufixed() : Base() {} + + /// copy ctor from ap_fixed_base + template + INLINE ap_ufixed(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + /// copy ctor from ap_fixed_base + template + INLINE ap_ufixed(const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, + _AP_O2, _AP_N2>& op) + : Base(op) {} + + //template + //INLINE ap_ufixed( + // const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //template + //INLINE ap_ufixed( + // const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>(op)) {} + + //template + //INLINE ap_ufixed( + // const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + //template + //INLINE ap_ufixed( + // const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + // : Base(ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>(op)) { + //} + + /// copy ctor from ap_int_base. + template + INLINE ap_ufixed(const ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_ufixed(const volatile ap_int_base<_AP_W2, _AP_S2>& op) : Base(op) {} + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_ufixed(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + _AP_UNUSED_PARAM(raw); + } +#endif +#endif + + //template + //INLINE ap_ufixed(const ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //template + //INLINE ap_ufixed(const volatile ap_int<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, true>(op)) {} + + //template + //INLINE ap_ufixed(const ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + //template + //INLINE ap_ufixed(const volatile ap_uint<_AP_W2>& op) + // : Base(ap_int_base<_AP_W2, false>(op)) {} + + template + INLINE ap_ufixed(const ap_bit_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_ufixed(const ap_range_ref<_AP_W2, _AP_S2>& op) : Base(op) {} + + template + INLINE ap_ufixed(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op) + : Base(op) {} + + template + INLINE ap_ufixed( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_ufixed( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +#define CTOR(TYPE) \ + INLINE ap_ufixed(TYPE v) : Base(v) {} + + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) + CTOR(half) + CTOR(float) + CTOR(double) +#undef CTOR + + INLINE ap_ufixed(const char* s) : Base(s) {} + + INLINE ap_ufixed(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + #ifndef _MSC_VER + ap_ufixed & + operator=(const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &op) = default; +#else + INLINE ap_ufixed& operator=( + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } +#endif + + INLINE void operator=( + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) volatile { + Base::V = op.V; + } + + INLINE ap_ufixed& operator=( + const volatile ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + + INLINE void operator=(const volatile ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, + _AP_N>& op) volatile { + Base::V = op.V; + } +}; // struct ap_ufixed + + +#if !defined(__SYNTHESIS__) && (defined(SYSTEMC_H) || defined(SYSTEMC_INCLUDED)) +// XXX sc_trace overload for ap_fixed is already included in +// "ap_sysc/ap_sc_extras.h", so do not define in synthesis. +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op, + const std::string& name) { + tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} + +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N>& op, + const std::string& name) { + tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} +#endif // System C sim + +// Specialization of std containers, so that std::complex can have its +// image part automatically zero-initialized when only real part is provided. +#include "ap_fixed_special.h" + +#endif // ifndef __AP_FIXED_H__ else + +// -*- cpp -*- diff --git a/vitis/v2021_2/ap_fixed_base.h b/vitis/v2021_2/ap_fixed_base.h new file mode 100755 index 00000000..c3d96aa8 --- /dev/null +++ b/vitis/v2021_2/ap_fixed_base.h @@ -0,0 +1,2440 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_FIXED_BASE_H__ +#define __AP_FIXED_BASE_H__ + +#ifndef __AP_FIXED_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +// for ap_int_base and its reference types. +#include "ap_int.h" +#ifndef __SYNTHESIS__ +// for half type +#include "hls_half.h" +// for std io +#include +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" +#else // __cplusplus + +// for warning on unsupported rounding mode in conversion to float/double. +#if !defined(__SYNTHESIS__) && __cplusplus >= 201103L && \ + (defined(__gnu_linux__) || defined(_WIN32)) +#define AP_FIXED_ENABLE_CPP_FENV 1 +#include +#endif + +// ---------------------------------------------------------------------- + +/* Major TODO + long double support: constructor, assign and other operators. + binary operators with ap_fixed_base and const char*. + return ap_fixed/ap_ufixed when result signedness is known. +*/ + +// Helper function in conversion to floating point types. + +#ifdef __SYNTHESIS__ +#define _AP_ctype_op_get_bit(var, index) _AP_ROOT_op_get_bit(var, index) +#define _AP_ctype_op_set_bit(var, index, x) _AP_ROOT_op_set_bit(var, index, x) +#define _AP_ctype_op_get_range(var, low, high) \ + _AP_ROOT_op_get_range(var, low, high) +#define _AP_ctype_op_set_range(var, low, high, x) \ + _AP_ROOT_op_set_range(var, low, high, x) +#else // ifdef __SYNTHESIS__ +template +inline bool _AP_ctype_op_get_bit(_Tp1& var, const _Tp2& index) { + return !!(var & (1ull << (index))); +} +template +inline _Tp1 _AP_ctype_op_set_bit(_Tp1& var, const _Tp2& index, const _Tp3& x) { + var |= (((x) ? 1ull : 0ull) << (index)); + return var; +} +template +inline _Tp1 _AP_ctype_op_get_range(_Tp1& var, const _Tp2& low, + const _Tp3& high) { + _Tp1 r = var; + ap_ulong mask = -1ll; + mask >>= (sizeof(_Tp1) * 8 - ((high) - (low) + 1)); + r >>= (low); + r &= mask; + return r; +} +template +inline _Tp1 _AP_ctype_op_set_range(_Tp1& var, const _Tp2& low, const _Tp3& high, + const _Tp4& x) { + ap_ulong mask = -1ll; + mask >>= (_AP_SIZE_ap_slong - ((high) - (low) + 1)); + var &= ~(mask << (low)); + var |= ((mask & x) << (low)); + return var; +} +#endif // ifdef __SYNTHESIS__ + + +// trait for letting base class to return derived class. +// Notice that derived class template is incomplete, and we cannot use +// the member of the derived class. +template +struct _ap_fixed_factory; +template +struct _ap_fixed_factory<_AP_W2, _AP_I2, true> { + typedef ap_fixed<_AP_W2, _AP_I2> type; +}; +template +struct _ap_fixed_factory<_AP_W2, _AP_I2, false> { + typedef ap_ufixed<_AP_W2, _AP_I2> type; +}; + +/// ap_fixed_base: AutoPilot fixed point. +/** partial specialization of signed. + @tparam _AP_W width. + @tparam _AP_I integral part width. + @tparam _AP_S signed. + @tparam _AP_Q quantization mode. Default is AP_TRN. + @tparam _AP_O saturation mode. Default is AP_WRAP. + @tparam _AP_N saturation wrap value. Default is 0. + */ +// default for _AP_Q, _AP_O and _AP_N set in ap_decl.h +template +struct ap_fixed_base : _AP_ROOT_TYPE<_AP_W, _AP_S> { + public: + typedef _AP_ROOT_TYPE<_AP_W, _AP_S> Base; + static const int width = _AP_W; + static const int iwidth = _AP_I; + static const ap_q_mode qmode = _AP_Q; + static const ap_o_mode omode = _AP_O; + + /// Return type trait. + template + struct RType { + enum { + _AP_F = _AP_W - _AP_I, + F2 = _AP_W2 - _AP_I2, + mult_w = _AP_W + _AP_W2, + mult_i = _AP_I + _AP_I2, + mult_s = _AP_S || _AP_S2, + plus_w = AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + + 1 + AP_MAX(_AP_F, F2), + plus_i = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + 1 + + AP_MAX(_AP_F, F2), + minus_i = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, +#ifndef __SC_COMPATIBLE__ + div_w = _AP_S2 + _AP_W + AP_MAX(F2, 0), +#else + div_w = _AP_S2 + _AP_W + AP_MAX(F2, 0) + AP_MAX(_AP_I2, 0), +#endif + div_i = _AP_S2 + _AP_I + F2, + div_s = _AP_S || _AP_S2, + logic_w = + AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)) + + AP_MAX(_AP_F, F2), + logic_i = AP_MAX(_AP_I + (_AP_S2 && !_AP_S), _AP_I2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S> lhs; + typedef ap_fixed_base<_AP_W2, _AP_I2, _AP_S2> rhs; + + typedef ap_fixed_base mult_base; + typedef ap_fixed_base plus_base; + typedef ap_fixed_base minus_base; + typedef ap_fixed_base logic_base; + typedef ap_fixed_base div_base; + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S> arg1_base; + + typedef typename _ap_fixed_factory::type mult; + typedef typename _ap_fixed_factory::type plus; + typedef typename _ap_fixed_factory::type minus; + typedef typename _ap_fixed_factory::type logic; + typedef typename _ap_fixed_factory::type div; + typedef typename _ap_fixed_factory<_AP_W, _AP_I, _AP_S>::type arg1; + }; + + private: +#ifndef __SYNTHESIS__ + // This cannot handle hex float format string. + void fromString(const std::string& val, unsigned char radix) { + _AP_ERROR(!(radix == 2 || radix == 8 || radix == 10 || radix == 16), + "ap_fixed_base::fromString(%s, %d)", val.c_str(), radix); + + Base::V = 0; + int startPos = 0; + int endPos = val.length(); + int decPos = val.find("."); + if (decPos == -1) decPos = endPos; + + // handle sign + bool isNegative = false; + if (val[0] == '-') { + isNegative = true; + ++startPos; + } else if (val[0] == '+') + ++startPos; + + // If there are no integer bits, e.g.: + // .0000XXXX, then keep at least one bit. + // If the width is greater than the number of integer bits, e.g.: + // XXXX.XXXX, then we keep the integer bits + // if the number of integer bits is greater than the width, e.g.: + // XXX000 then we keep the integer bits. + // Always keep one bit. + ap_fixed_base + integer_bits = 0; + + // Figure out if we can shift instead of multiply + unsigned shift = (radix == 16 ? 4 : radix == 8 ? 3 : radix == 2 ? 1 : 0); + + //std::cout << "\n\n" << val << "\n"; + //std::cout << startPos << " " << decPos << " " << endPos << "\n"; + + bool sticky_int = false; + + // Traverse the integer digits from the MSD, multiplying by radix as we go. + for (int i = startPos; i < decPos; i++) { + // Get a digit + char cdigit = val[i]; + if (cdigit == '\0') continue; + unsigned digit = ap_private_ops::decode_digit(cdigit, radix); + + sticky_int |= integer_bits[AP_MAX(_AP_I, 4) + 4 - 1] | + integer_bits[AP_MAX(_AP_I, 4) + 4 - 2] | + integer_bits[AP_MAX(_AP_I, 4) + 4 - 3] | + integer_bits[AP_MAX(_AP_I, 4) + 4 - 4]; + // Shift or multiply the value by the radix + if (shift) + integer_bits <<= shift; + else + integer_bits *= radix; + + // Add in the digit we just interpreted + integer_bits += digit; + //std::cout << "idigit = " << digit << " " << integer_bits.to_string() + // << " " << sticky_int << "\n"; + } + integer_bits[AP_MAX(_AP_I, 4) + 4 - 3] = + integer_bits[AP_MAX(_AP_I, 4) + 4 - 3] | sticky_int; + + ap_fixed_base fractional_bits = 0; + bool sticky = false; + + // Traverse the fractional digits from the LSD, dividing by radix as we go. + for (int i = endPos - 1; i >= decPos + 1; i--) { + // Get a digit + char cdigit = val[i]; + if (cdigit == '\0') continue; + unsigned digit = ap_private_ops::decode_digit(cdigit, radix); + // Add in the digit we just interpreted + fractional_bits += digit; + + sticky |= fractional_bits[0] | fractional_bits[1] | fractional_bits[2] | + fractional_bits[3]; + // Shift or divide the value by the radix + if (shift) + fractional_bits >>= shift; + else + fractional_bits /= radix; + + //std::cout << "fdigit = " << digit << " " << fractional_bits.to_string() + // << " " << sticky << "\n"; + } + + //std::cout << "Int =" << integer_bits.to_string() << " " << + // fractional_bits.to_string() << "\n"; + + fractional_bits[0] = fractional_bits[0] | sticky; + + if (isNegative) + *this = -(integer_bits + fractional_bits); + else + *this = integer_bits + fractional_bits; + + //std::cout << "end = " << this->to_string(16) << "\n"; + } + + /// report invalid constrction of ap_fixed_base + INLINE void report() { + if (!_AP_S && _AP_O == AP_WRAP_SM) { + fprintf(stderr, "ap_ufxied<...> cannot support AP_WRAP_SM.\n"); + exit(1); + } + if (_AP_W > MAX_MODE(AP_INT_MAX_W) * 1024) { + fprintf(stderr, + "[E] ap_%sfixed<%d, ...>: Bitwidth exceeds the " + "default max value %d. Please use macro " + "AP_INT_MAX_W to set a larger max value.\n", + _AP_S ? "" : "u", _AP_W, MAX_MODE(AP_INT_MAX_W) * 1024); + exit(1); + } + } +#else + INLINE void report() {} +#endif // ifdef __SYNTHESIS__ + + /// @name helper functions. + // @{ + INLINE void overflow_adjust(bool underflow, bool overflow, bool lD, + bool sign) { + if (!underflow && !overflow) return; + if (_AP_O == AP_WRAP) { + if (_AP_N == 0) return; + if (_AP_S) { + // signed AP_WRAP + // n_bits == 1 + Base::V = _AP_ROOT_op_set_bit(Base::V, _AP_W - 1, sign); + if (_AP_N > 1) { + // n_bits > 1 + ap_int_base<_AP_W, false> mask(-1); + if (sign) mask.V = 0; + Base::V = + _AP_ROOT_op_set_range(Base::V, _AP_W - _AP_N, _AP_W - 2, mask.V); + } + } else { + // unsigned AP_WRAP + ap_int_base<_AP_W, false> mask(-1); + Base::V = + _AP_ROOT_op_set_range(Base::V, _AP_W - _AP_N, _AP_W - 1, mask.V); + } + } else if (_AP_O == AP_SAT_ZERO) { + Base::V = 0; + } else if (_AP_O == AP_WRAP_SM && _AP_S) { + bool Ro = _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + if (_AP_N == 0) { + if (lD != Ro) { + Base::V = ~Base::V; + Base::V = _AP_ROOT_op_set_bit(Base::V, _AP_W - 1, lD); + } + } else { + if (_AP_N == 1 && sign != Ro) { + Base::V = ~Base::V; + } else if (_AP_N > 1) { + bool lNo = _AP_ROOT_op_get_bit(Base::V, _AP_W - _AP_N); + if (lNo == sign) Base::V = ~Base::V; + ap_int_base<_AP_W, false> mask(-1); + if (sign) mask.V = 0; + Base::V = + _AP_ROOT_op_set_range(Base::V, _AP_W - _AP_N, _AP_W - 2, mask.V); + } + Base::V = _AP_ROOT_op_set_bit(Base::V, _AP_W - 1, sign); + } + } else { + if (_AP_S) { + if (overflow) { + Base::V = 1; + Base::V <<= _AP_W - 1; + Base::V = ~Base::V; + } else if (underflow) { + Base::V = 1; + Base::V <<= _AP_W - 1; + if (_AP_O == AP_SAT_SYM) Base::V |= 1; + } + } else { + if (overflow) + Base::V = ~(ap_int_base<_AP_W, false>(0).V); + else if (underflow) + Base::V = 0; + } + } + } + + INLINE bool quantization_adjust(bool qb, bool r, bool s) { + bool carry = (bool)_AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + if (_AP_Q == AP_TRN) return false; + if (_AP_Q == AP_RND_ZERO) + qb &= s || r; + else if (_AP_Q == AP_RND_MIN_INF) + qb &= r; + else if (_AP_Q == AP_RND_INF) + qb &= !s || r; + else if (_AP_Q == AP_RND_CONV) + qb &= _AP_ROOT_op_get_bit(Base::V, 0) || r; + else if (_AP_Q == AP_TRN_ZERO) + qb = s && (qb || r); + Base::V += qb; + return carry && (!(bool)_AP_ROOT_op_get_bit(Base::V, _AP_W - 1)); + } + // @} + + INLINE int countLeadingOnes() const { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + return Base::V.countLeadingOnes(); +#else + // TODO: to be filled for synthesis + return 0; +#endif + } + + public: + /// @name constructors. + // @{ + /// default ctor. + INLINE ap_fixed_base() {} + + /// copy ctor. + template + INLINE ap_fixed_base( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + operator=(op); + report(); + } + + template + INLINE ap_fixed_base( + const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + operator=(op); + report(); + } + + template + INLINE ap_fixed_base(const ap_int_base<_AP_W2, _AP_S2>& op) { + ap_fixed_base<_AP_W2, _AP_W2, _AP_S2> tmp; + tmp.V = op.V; + operator=(tmp); + report(); + } + + template + INLINE ap_fixed_base(const volatile ap_int_base<_AP_W2, _AP_S2>& op) { + ap_fixed_base<_AP_W2, _AP_W2, _AP_S2> tmp; + tmp.V = op.V; + operator=(tmp); + report(); + } + +#ifndef __SYNTHESIS__ +#ifndef NON_C99STRING + INLINE ap_fixed_base(const char* s, signed char rd = 0) { + unsigned char radix = rd; + std::string str = ap_private_ops::parseString(s, radix); // will guess rd, default 10 + _AP_ERROR(radix == 0, "ap_fixed_base(const char* \"%s\", %d), str=%s, radix = %d", + s, rd, str.c_str(), radix); // TODO remove this check + fromString(str, radix); + } +#else + INLINE ap_fixed_base(const char* s, signed char rd = 10) { + ap_int_base<_AP_W, _AP_S> t(s, rd); + Base::V = t.V; + } +#endif // ifndef NON_C99STRING +#else // ifndef __SYNTHESIS__ + // XXX _ssdm_string2bits only takes const string and const radix. + // It seems XFORM will do compile time processing of the string. + INLINE ap_fixed_base(const char* s) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), 10, _AP_I, _AP_S, _AP_Q, + _AP_O, _AP_N, _AP_C99); + Base::V = t; + } + INLINE ap_fixed_base(const char* s, signed char rd) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), rd, _AP_I, _AP_S, _AP_Q, + _AP_O, _AP_N, _AP_C99); + Base::V = t; + } +#endif // ifndef __SYNTHESIS__ else + + template + INLINE ap_fixed_base(const ap_bit_ref<_AP_W2, _AP_S2>& op) { + *this = ((bool)op); + report(); + } + + template + INLINE ap_fixed_base(const ap_range_ref<_AP_W2, _AP_S2>& op) { + *this = (ap_int_base<_AP_W2, false>(op)); + report(); + } + + template + INLINE ap_fixed_base( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op) { + *this = (ap_int_base<_AP_W2 + _AP_W3, false>(op)); + report(); + } + + template + INLINE ap_fixed_base( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + *this = (bool(op)); + report(); + } + + template + INLINE ap_fixed_base( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + *this = (ap_int_base<_AP_W2, false>(op)); + report(); + } + + // ctors from c types. + // make a temp ap_fixed_base first, and use ap_fixed_base.operator= +#define CTOR_FROM_INT(C_TYPE, _AP_W2, _AP_S2) \ + INLINE ap_fixed_base(const C_TYPE x) { \ + ap_fixed_base<(_AP_W2), (_AP_W2), (_AP_S2)> tmp; \ + tmp.V = x; \ + *this = tmp; \ + } + + CTOR_FROM_INT(bool, 1, false) + CTOR_FROM_INT(char, 8, CHAR_IS_SIGNED) + CTOR_FROM_INT(signed char, 8, true) + CTOR_FROM_INT(unsigned char, 8, false) + CTOR_FROM_INT(short, _AP_SIZE_short, true) + CTOR_FROM_INT(unsigned short, _AP_SIZE_short, false) + CTOR_FROM_INT(int, _AP_SIZE_int, true) + CTOR_FROM_INT(unsigned int, _AP_SIZE_int, false) + CTOR_FROM_INT(long, _AP_SIZE_long, true) + CTOR_FROM_INT(unsigned long, _AP_SIZE_long, false) + CTOR_FROM_INT(ap_slong, _AP_SIZE_ap_slong, true) + CTOR_FROM_INT(ap_ulong, _AP_SIZE_ap_slong, false) +#undef CTOR_FROM_INT +/* + * TODO: + *Theere used to be several funtions which were AP_WEAK. + *Now they're all INLINE expect ap_fixed_base(double d) + *Maybe we can use '#pragma HLS inline' instead of INLINE. + */ + AP_WEAK ap_fixed_base(double d) { + ap_int_base<64, false> ireg; + ireg.V = doubleToRawBits(d); + bool isneg = _AP_ROOT_op_get_bit(ireg.V, 63); + + ap_int_base exp; + ap_int_base exp_tmp; + exp_tmp.V = + _AP_ROOT_op_get_range(ireg.V, DOUBLE_MAN, DOUBLE_MAN + DOUBLE_EXP - 1); + exp = exp_tmp - DOUBLE_BIAS; + ap_int_base man; + man.V = _AP_ROOT_op_get_range(ireg.V, 0, DOUBLE_MAN - 1); + // do not support NaN + _AP_WARNING(exp == APFX_IEEE_DOUBLE_E_MAX + 1 && man.V != 0, + "assign NaN to fixed point value"); + man.V = _AP_ROOT_op_set_bit(man.V, DOUBLE_MAN, 1); + if (isneg) man = -man; + if ((ireg.V & 0x7fffffffffffffffLL) == 0) { + Base::V = 0; + } else { + int _AP_W2 = DOUBLE_MAN + 2, _AP_I2 = exp.V + 2, _AP_F = _AP_W - _AP_I, + F2 = _AP_W2 - _AP_I2; + bool _AP_S2 = true, + QUAN_INC = F2 > _AP_F && + !(_AP_Q == AP_TRN || (_AP_Q == AP_TRN_ZERO && !_AP_S2)); + bool carry = false; + // handle quantization + unsigned sh_amt = (F2 > _AP_F) ? F2 - _AP_F : _AP_F - F2; + if (F2 == _AP_F) + Base::V = man.V; + else if (F2 > _AP_F) { + if (sh_amt < DOUBLE_MAN + 2) + Base::V = man.V >> sh_amt; + else { + Base::V = isneg ? -1 : 0; + } + if ((_AP_Q != AP_TRN) && !((_AP_Q == AP_TRN_ZERO) && !_AP_S2)) { + bool qb = (F2 - _AP_F > _AP_W2) ? isneg : (bool)_AP_ROOT_op_get_bit( + man.V, F2 - _AP_F - 1); + bool r = + (F2 > _AP_F + 1) + ? _AP_ROOT_op_get_range(man.V, 0, (F2 - _AP_F - 2 < _AP_W2) + ? (F2 - _AP_F - 2) + : (_AP_W2 - 1)) != 0 + : false; + carry = quantization_adjust(qb, r, isneg); + } + } else { // no quantization + Base::V = man.V; + if (sh_amt < _AP_W) + Base::V = Base::V << sh_amt; + else + Base::V = 0; + } + // handle overflow/underflow + if ((_AP_O != AP_WRAP || _AP_N != 0) && + ((!_AP_S && _AP_S2) || + _AP_I - _AP_S < + _AP_I2 - _AP_S2 + + (QUAN_INC || + (_AP_S2 && (_AP_O == AP_SAT_SYM))))) { // saturation + bool deleted_zeros = _AP_S2 ? true : !carry, deleted_ones = true; + bool neg_src = isneg; + bool lD = false; + int pos1 = F2 - _AP_F + _AP_W; + int pos2 = F2 - _AP_F + _AP_W + 1; + bool newsignbit = _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + if (pos1 < _AP_W2 && pos1 >= 0) + // lD = _AP_ROOT_op_get_bit(man.V, pos1); + lD = (man.V >> pos1) & 1; + if (pos1 < _AP_W2) { + bool Range1_all_ones = true; + bool Range1_all_zeros = true; + bool Range2_all_ones = true; + ap_int_base Range2; + ap_int_base all_ones(-1); + + if (pos2 >= 0 && pos2 < _AP_W2) { + // Range2.V = _AP_ROOT_op_get_range(man.V, + // pos2, _AP_W2 - 1); + Range2.V = man.V; + Range2.V >>= pos2; + Range2_all_ones = Range2 == (all_ones >> pos2); + } else if (pos2 < 0) + Range2_all_ones = false; + if (pos1 >= 0 && pos2 < _AP_W2) { + Range1_all_ones = Range2_all_ones && lD; + Range1_all_zeros = !Range2.V && !lD; + } else if (pos2 == _AP_W2) { + Range1_all_ones = lD; + Range1_all_zeros = !lD; + } else if (pos1 < 0) { + Range1_all_zeros = !man.V; + Range1_all_ones = false; + } + + deleted_zeros = + deleted_zeros && (carry ? Range1_all_ones : Range1_all_zeros); + deleted_ones = + carry ? Range2_all_ones && (pos1 < 0 || !lD) : Range1_all_ones; + neg_src = isneg && !(carry && Range1_all_ones); + } else + neg_src = isneg && newsignbit; + bool neg_trg = _AP_S && newsignbit; + bool overflow = (neg_trg || !deleted_zeros) && !isneg; + bool underflow = (!neg_trg || !deleted_ones) && neg_src; + if ((_AP_O == AP_SAT_SYM) && _AP_S2 && _AP_S) + underflow |= + neg_src && + (_AP_W > 1 ? _AP_ROOT_op_get_range(Base::V, 0, _AP_W - 2) == 0 + : true); + overflow_adjust(underflow, overflow, lD, neg_src); + } + } + report(); + } + + // TODO more optimized implementation. + INLINE ap_fixed_base(float d) { *this = ap_fixed_base(double(d)); } + + // TODO more optimized implementation. + INLINE ap_fixed_base(half d) { *this = ap_fixed_base(double(d)); } + // @} + + /// @name assign operator + /// assign, using another ap_fixed_base of same template parameters. + /* + INLINE ap_fixed_base& operator=( + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { + Base::V = op.V; + return *this; + } + */ + + template + INLINE ap_fixed_base& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + + const int _AP_F = _AP_W - _AP_I; + const int F2 = _AP_W2 - _AP_I2; + const int QUAN_INC = + F2 > _AP_F && !(_AP_Q == AP_TRN || (_AP_Q == AP_TRN_ZERO && !_AP_S2)); + + if (!op) Base::V = 0; + bool carry = false; + bool signbit = _AP_ROOT_op_get_bit(op.V, _AP_W2 - 1); + bool isneg = signbit && _AP_S2; + if (F2 == _AP_F) + Base::V = op.V; + else if (F2 > _AP_F) { + unsigned int sh_amt = F2 - _AP_F; + // moves bits right, handle quantization. + if (sh_amt < _AP_W2) { + Base::V = op.V >> sh_amt; + } else { + Base::V = isneg ? -1 : 0; + } + if (_AP_Q != AP_TRN && !(_AP_Q == AP_TRN_ZERO && !_AP_S2)) { + bool qbit = _AP_ROOT_op_get_bit(op.V, F2 - _AP_F - 1); + // bit after LSB. + bool qb = (F2 - _AP_F > _AP_W2) ? _AP_S2 && signbit : qbit; + enum { hi = ((F2 - _AP_F - 2) < _AP_W2) ? (F2 - _AP_F - 2) : (_AP_W2 - 1) }; + // bits after qb. + bool r = (F2 > _AP_F + 1) ? (_AP_ROOT_op_get_range(op.V, 0, hi) != 0) : false; + carry = quantization_adjust(qb, r, isneg); + } + } else { + unsigned sh_amt = _AP_F - F2; + // moves bits left, no quantization + if (sh_amt < _AP_W) { + if (_AP_W > _AP_W2) { + // extend and then shift, avoid losing bits. + Base::V = op.V; + Base::V <<= sh_amt; + } else { + // shift and truncate. + Base::V = op.V << sh_amt; + } + } else { + Base::V = 0; + } + } + // handle overflow/underflow + if ((_AP_O != AP_WRAP || _AP_N != 0) && + ((!_AP_S && _AP_S2) || + _AP_I - _AP_S < + _AP_I2 - _AP_S2 + + (QUAN_INC || (_AP_S2 && _AP_O == AP_SAT_SYM)))) { // saturation + bool deleted_zeros = _AP_S2 ? true : !carry; + bool deleted_ones = true; + bool neg_src = isneg; + bool newsignbit = _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + enum { pos1 = F2 - _AP_F + _AP_W, pos2 = F2 - _AP_F + _AP_W + 1 }; + bool lD = (pos1 < _AP_W2 && pos1 >= 0) ? _AP_ROOT_op_get_bit(op.V, pos1) + : false; + if (pos1 < _AP_W2) { + bool Range1_all_ones = true; + bool Range1_all_zeros = true; + bool Range2_all_ones = true; + ap_int_base<_AP_W2, false> all_ones(-1); + + if (pos2 < _AP_W2 && pos2 >= 0) { + ap_int_base<_AP_W2, false> Range2; + Range2.V = _AP_ROOT_op_get_range(op.V, pos2, _AP_W2 - 1); + Range2_all_ones = Range2 == (all_ones >> pos2); + } else if (pos2 < 0) { + Range2_all_ones = false; + } + + if (pos1 >= 0 && pos2 < _AP_W2) { + ap_int_base<_AP_W2, false> Range1; + Range1.V = _AP_ROOT_op_get_range(op.V, pos1, _AP_W2 - 1); + Range1_all_ones = Range1 == (all_ones >> pos1); + Range1_all_zeros = !Range1.V; + } else if (pos2 == _AP_W2) { + Range1_all_ones = lD; + Range1_all_zeros = !lD; + } else if (pos1 < 0) { + Range1_all_zeros = !op.V; + Range1_all_ones = false; + } + + deleted_zeros = + deleted_zeros && (carry ? Range1_all_ones : Range1_all_zeros); + deleted_ones = + carry ? Range2_all_ones && (pos1 < 0 || !lD) : Range1_all_ones; + neg_src = isneg && !(carry && Range1_all_ones); + } else + neg_src = isneg && newsignbit; + bool neg_trg = _AP_S && newsignbit; + bool overflow = (neg_trg || !deleted_zeros) && !isneg; + bool underflow = (!neg_trg || !deleted_ones) && neg_src; + if ((_AP_O == AP_SAT_SYM) && _AP_S2 && _AP_S) + underflow |= + neg_src && + (_AP_W > 1 ? _AP_ROOT_op_get_range(Base::V, 0, _AP_W - 2) == 0 + : true); + + overflow_adjust(underflow, overflow, lD, neg_src); + } + return *this; + } // operator= + + template + INLINE ap_fixed_base& operator=( + const volatile ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + operator=(const_cast&>(op)); + return *this; + } + + /// Set this ap_fixed_base with ULL. + INLINE ap_fixed_base& setBits(ap_ulong bv) { + // TODO when ull is not be long enough... + Base::V = bv; + return *this; + } + + /// Return a ap_fixed_base object whose this->V is assigned by bv. + static INLINE ap_fixed_base bitsToFixed(ap_ulong bv) { + // TODO fix when ull is not be long enough... + ap_fixed_base t; +#ifdef __SYNTHESIS__ + t.V = bv; +#else + t.V.set_bits(bv); +#endif + return t; + } + + INLINE void checkOverflowCsimFix(int _ap_w2, bool _ap_s2) const { + #if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + int ap_w_l = _ap_w2; + bool ap_s_l = _ap_s2; + int ap_w_r = _AP_I; + bool ap_s_r = _AP_S; + int i = ap_w_r - 1; + int count = 0; + int valid_width = 0; + int target_width = ap_w_l; + if (ap_s_l == true) { + target_width = ap_w_l - 1; + } + if (ap_s_r == true) { + bool sign = get_bit(i); + if (sign == true && ap_s_l == false) { + AP_WARNING("negative", to_float(), "ap_uint", ap_w_l); + return; + } + if(sign == true) { + count = countLeadingOnes(); + } else { + count = countLeadingZeros(); + } + valid_width = ap_w_r - count; + if(valid_width - target_width > 0) { + AP_WARNING("overflow", to_float(), "ap_int", ap_w_l); + } + } else { + count = countLeadingZeros(); + valid_width = ap_w_r - count; + if(valid_width - target_width > 0) { + AP_WARNING("overflow", to_float(), "ap_uint", ap_w_l); + } + } + #else + (void)_ap_w2; + (void)_ap_s2; + #endif + return; + } + + // Explicit conversion functions to ap_int_base. + /** Captures all integer bits, in truncate mode. + * @param[in] Cnative follow conversion from double to int. + */ + INLINE ap_int_base to_ap_int_base( + bool Cnative = true) const { + ap_int_base ret; + if (_AP_I == 0) { + ret.V = 0; + } else if (_AP_I > 0 && _AP_I <= _AP_W) { + ret.V = _AP_ROOT_op_get_range(Base::V, _AP_W - _AP_I, _AP_W - 1); + } else if (_AP_I > _AP_W) { + ret.V = _AP_ROOT_op_get_range(Base::V, 0, _AP_W - 1); + ret.V <<= (_AP_I - _AP_W); + } + /* Consider the following case + * float f = -7.5f; + * ap_fixed<8,4> t = f; // -8 0 0 0 . 0.5 + * int i = t.to_int(); + * the result should be -7 instead of -8. + * Therefore, after truncation, the value should be increated by 1. + * For (-1, 0), carry to MSB will happen, but result 0 is still correct. + */ + if (Cnative && _AP_I < _AP_W) { + // Follow C native data type, conversion from double to int + if (_AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1) && (_AP_I < _AP_W) && + (_AP_ROOT_op_get_range( + Base::V, 0, _AP_I < 0 ? _AP_W - 1 : _AP_W - _AP_I - 1) != 0)) + ++ret; + } else { + // Follow OSCI library, conversion from sc_fixed to sc_int + } + return ret; + }; + + public: + template + INLINE operator ap_int_base<_AP_W2, _AP_S2>() const { + return ap_int_base<_AP_W2, _AP_S2>(to_ap_int_base()); + } + + // Explicit conversion function to C built-in integral type. + INLINE char to_char() const { return to_ap_int_base().to_char(); } + + INLINE int to_int() const { return to_ap_int_base().to_int(); } + + INLINE unsigned to_uint() const { return to_ap_int_base().to_uint(); } + + INLINE ap_slong to_int64() const { return to_ap_int_base().to_int64(); } + + INLINE ap_ulong to_uint64() const { return to_ap_int_base().to_uint64(); } + + INLINE ap_int<_AP_I> to_ap_int() const { return ap_int<_AP_I>(to_ap_int_base()); } + + /// covert function to double. + /** only round-half-to-even mode supported, does not obey FE env. */ + INLINE double to_double() const { +#if defined(AP_FIXED_ENABLE_CPP_FENV) + _AP_WARNING(std::fegetround() != FE_TONEAREST, + "Only FE_TONEAREST is supported"); +#endif + enum { BITS = DOUBLE_MAN + DOUBLE_EXP + 1 }; + if (!Base::V) return 0.0f; + bool s = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); ///< sign. + ap_int_base<_AP_W, false> tmp; + if (s) + tmp.V = -Base::V; // may truncate one bit extra from neg in sim. + else + tmp.V = Base::V; + int l = tmp.countLeadingZeros(); ///< number of leading zeros. + int e = _AP_I - l - 1 + DOUBLE_BIAS; ///< exponent + int lsb_index = _AP_W - l - 1 - DOUBLE_MAN; + // more than 0.5? + bool a = (lsb_index >=2) ? + (_AP_ROOT_op_get_range(tmp.V, 0, lsb_index - 2) != 0) : 0; + // round to even + a |= (lsb_index >=0) ? _AP_ROOT_op_get_bit(tmp.V, lsb_index) : 0; + // ull is at least 64-bit + ap_ulong m; + // may actually left shift, ensure buffer is wide enough. + if (_AP_W > BITS) { + m = (lsb_index >= 1) ? (ap_ulong)(tmp.V >> (lsb_index - 1)) + : (ap_ulong)(tmp.V << (1 - lsb_index)); + } else { + m = (ap_ulong)tmp.V; + m = (lsb_index >= 1) ? (m >> (lsb_index - 1)) + : (m << (1 - lsb_index)); + } + m += a; + m >>= 1; + //std::cout << '\n' << std::hex << m << '\n'; // TODO delete this + // carry to MSB, increase exponent + if (_AP_ctype_op_get_bit(m, DOUBLE_MAN + 1)) { + e += 1; + } + // set sign and exponent + m = _AP_ctype_op_set_bit(m, BITS - 1, s); + //std::cout << m << '\n'; // TODO delete this + m = _AP_ctype_op_set_range(m, DOUBLE_MAN, DOUBLE_MAN + DOUBLE_EXP - 1, e); + //std::cout << std::hex << m << std::dec << std::endl; // TODO delete this + // cast to fp + return rawBitsToDouble(m); + } + + /// convert function to float. + /** only round-half-to-even mode supported, does not obey FE env. */ + INLINE float to_float() const { +#if defined(AP_FIXED_ENABLE_CPP_FENV) + _AP_WARNING(std::fegetround() != FE_TONEAREST, + "Only FE_TONEAREST is supported"); +#endif + enum { BITS = FLOAT_MAN + FLOAT_EXP + 1 }; + if (!Base::V) return 0.0f; + bool s = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); ///< sign. + ap_int_base<_AP_W, false> tmp; + if (s) + tmp.V = -Base::V; // may truncate one bit extra from neg in sim. + else + tmp.V = Base::V; + int l = tmp.countLeadingZeros(); ///< number of leading zeros. + int e = _AP_I - l - 1 + FLOAT_BIAS; ///< exponent + int lsb_index = _AP_W - l - 1 - FLOAT_MAN; + // more than 0.5? + bool a = (lsb_index >=2) ? + (_AP_ROOT_op_get_range(tmp.V, 0, lsb_index - 2) != 0) : 0; + // round to even + a |= (lsb_index >=0) ? _AP_ROOT_op_get_bit(tmp.V, lsb_index) : 0; + // ul is at least 32-bit + unsigned long m; + // may actually left shift, ensure buffer is wide enough. + if (_AP_W > BITS) { + m = (lsb_index >= 1) ? (unsigned long)(tmp.V >> (lsb_index - 1)) + : (unsigned long)(tmp.V << (1 - lsb_index)); + } else { + m = (unsigned long)tmp.V; + m = (lsb_index >= 1) ? (m >> (lsb_index - 1)) + : (m << (1 - lsb_index)); + } + m += a; + m >>= 1; + // carry to MSB, increase exponent + if (_AP_ctype_op_get_bit(m, FLOAT_MAN + 1)) { + e += 1; + } + // set sign and exponent + m = _AP_ctype_op_set_bit(m, BITS - 1, s); + m = _AP_ctype_op_set_range(m, FLOAT_MAN, FLOAT_MAN + FLOAT_EXP - 1, e); + // cast to fp + return rawBitsToFloat(m); + } + + /// convert function to half. + /** only round-half-to-even mode supported, does not obey FE env. */ + INLINE half to_half() const { +#if defined(AP_FIXED_ENABLE_CPP_FENV) + _AP_WARNING(std::fegetround() != FE_TONEAREST, + "Only FE_TONEAREST is supported"); +#endif + enum { BITS = HALF_MAN + HALF_EXP + 1 }; + if (!Base::V) return 0.0f; + bool s = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); ///< sign. + ap_int_base<_AP_W, false> tmp; + if (s) + tmp.V = -Base::V; // may truncate one bit extra from neg in sim. + else + tmp.V = Base::V; + int l = tmp.countLeadingZeros(); ///< number of leading zeros. + int e = _AP_I - l - 1 + HALF_BIAS; ///< exponent + int lsb_index = _AP_W - l - 1 - HALF_MAN; + // more than 0.5? + bool a = (lsb_index >=2) ? + (_AP_ROOT_op_get_range(tmp.V, 0, lsb_index - 2) != 0) : 0; + // round to even + a |= (lsb_index >=0) ? _AP_ROOT_op_get_bit(tmp.V, lsb_index) : 0; + // short is at least 16-bit + unsigned short m; + // may actually left shift, ensure buffer is wide enough. + if (_AP_W > BITS) { + m = (lsb_index >= 1) ? (unsigned short)(tmp.V >> (lsb_index - 1)) + : (unsigned short)(tmp.V << (1 - lsb_index)); + } else { + m = (unsigned short)tmp.V; + m = (lsb_index >= 1) ? (m >> (lsb_index - 1)) + : (m << (1 - lsb_index)); + } + m += a; + m >>= 1; + // carry to MSB, increase exponent + if (_AP_ctype_op_get_bit(m, HALF_MAN + 1)) { + e += 1; + } + // set sign and exponent + m = _AP_ctype_op_set_bit(m, BITS - 1, s); + m = _AP_ctype_op_set_range(m, HALF_MAN, HALF_MAN + HALF_EXP - 1, e); + // cast to fp + return rawBitsToHalf(m); + } + + // FIXME inherited from old code, this may loose precision! + INLINE operator long double() const { return (long double)to_double(); } + + INLINE operator double() const { return to_double(); } + + INLINE operator float() const { return to_float(); } + + INLINE operator half() const { return to_half(); } + + INLINE operator bool() const { return (bool)Base::V != 0; } + + INLINE operator char() const { return (char)to_int(); } + + INLINE operator signed char() const { return (signed char)to_int(); } + + INLINE operator unsigned char() const { return (unsigned char)to_uint(); } + + INLINE operator short() const { return (short)to_int(); } + + INLINE operator unsigned short() const { return (unsigned short)to_uint(); } + + INLINE operator int() const { return to_int(); } + + INLINE operator unsigned int() const { return to_uint(); } + +// FIXME don't assume data width... +#ifdef __x86_64__ + INLINE operator long() const { return (long)to_int64(); } + + INLINE operator unsigned long() const { return (unsigned long)to_uint64(); } +#else + INLINE operator long() const { return (long)to_int(); } + + INLINE operator unsigned long() const { return (unsigned long)to_uint(); } +#endif // ifdef __x86_64__ else + + INLINE operator ap_ulong() const { return to_uint64(); } + + INLINE operator ap_slong() const { return to_int64(); } + + INLINE int length() const { return _AP_W; }; + + // bits_to_int64 deleted. +#ifndef __SYNTHESIS__ + // Used in autowrap, when _AP_W < 64. + INLINE ap_ulong bits_to_uint64() const { + return (Base::V).to_uint64(); + } +#endif + + // Count the number of zeros from the most significant bit + // to the first one bit. Note this is only for ap_fixed_base whose + // _AP_W <= 64, otherwise will incur assertion. + INLINE int countLeadingZeros() const { +#ifdef __SYNTHESIS__ + // TODO: used llvm.ctlz intrinsic ? + if (_AP_W <= 32) { + ap_int_base<32, false> t(-1ULL); + t.range(_AP_W - 1, 0) = this->range(0, _AP_W - 1); + return __builtin_ctz(t.V); + } else if (_AP_W <= 64) { + ap_int_base<64, false> t(-1ULL); + t.range(_AP_W - 1, 0) = this->range(0, _AP_W - 1); + return __builtin_ctzll(t.V); + } else { + enum {__N = (_AP_W + 63) / 64}; + int NZeros = 0; + int i = 0; + bool hitNonZero = false; + for (i = 0; i < __N - 1; ++i) { + ap_int_base<64, false> t; + t.range(0, 63) = this->range(_AP_W - i * 64 - 64, _AP_W - i * 64 - 1); + NZeros += hitNonZero ? 0 : __builtin_clzll(t.V); + hitNonZero |= (t != 0); + } + if (!hitNonZero) { + ap_int_base<64, false> t(-1ULL); + t.range(63 - (_AP_W - 1) % 64, 63) = this->range(0, (_AP_W - 1) % 64); + NZeros += __builtin_clzll(t.V); + } + return NZeros; + } +#else + return Base::V.countLeadingZeros(); +#endif + } + + // Arithmetic : Binary + // ------------------------------------------------------------------------- + template + INLINE typename RType<_AP_W2, _AP_I2, _AP_S2>::mult operator*( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) + const { + typename RType<_AP_W2, _AP_I2, _AP_S2>::mult_base r, t; + r.V = Base::V; + t.V = op2.V; + r.V *= op2.V; + return r; + } + + // multiply function deleted. + + template + INLINE typename RType<_AP_W2, _AP_I2, _AP_S2>::div operator/( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) + const { + typename RType<_AP_W2, _AP_I2, _AP_S2>::div_base r; +#ifndef __SYNTHESIS__ + enum {F2 = _AP_W2-_AP_I2, + _W1=AP_MAX(_AP_W + AP_MAX(F2, 0) + ((_AP_S2 && !_AP_S) ? 1 : 0), _AP_W2 + ((_AP_S && !_AP_S2) ? 1 : 0))}; + ap_int_base<_W1,_AP_S||_AP_S2> dividend,divisior; + ap_int_base<_W1,_AP_S> tmp1; + ap_int_base<_W1,_AP_S2> tmp2; + tmp1.V = Base::V; + tmp1.V <<= AP_MAX(F2,0); + tmp2.V = op2.V; + dividend = tmp1; + divisior = tmp2; + r.V = ((_AP_S||_AP_S2) ? dividend.V.sdiv(divisior.V): dividend.V.udiv(divisior.V)); +#else + #ifndef __SC_COMPATIBLE__ + ap_fixed_base<_AP_W + AP_MAX(_AP_W2 - _AP_I2, 0),_AP_I, _AP_S> t(*this); + #else + ap_fixed_base<_AP_W + AP_MAX(_AP_W2 - _AP_I2, 0) + AP_MAX(_AP_I2, 0),_AP_I, _AP_S> t(*this); + #endif + r.V = t.V / op2.V; +#endif +/* + enum { + F2 = _AP_W2 - _AP_I2, + shl = AP_MAX(F2, 0) + AP_MAX(_AP_I2, 0), +#ifndef __SC_COMPATIBLE__ + shr = AP_MAX(_AP_I2, 0), +#else + shr = 0, +#endif + W3 = _AP_S2 + _AP_W + shl, + S3 = _AP_S || _AP_S2, + }; + ap_int_base dividend, t; + dividend.V = Base::V; + // multiply both by (1 << F2), and than do integer division. + dividend.V <<= (int) shl; +#ifdef __SYNTHESIS__ + // .V's have right signedness, and will have right extending. + t.V = dividend.V / op2.V; +#else + // XXX op2 may be wider than dividend, and sdiv and udiv takes the same with + // as left hand operand, so data might be truncated by mistake if not + // handled here. + t.V = S3 ? dividend.V.sdiv(op2.V) : dividend.V.udiv(op2.V); +#endif + r.V = t.V >> (int) shr; +*/ + return r; + } + +#define OP_BIN_AF(Sym, Rty) \ + template \ + INLINE typename RType<_AP_W2, _AP_I2, _AP_S2>::Rty operator Sym( \ + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& \ + op2) const { \ + typename RType<_AP_W2, _AP_I2, _AP_S2>::Rty##_base ret, lhs(*this), \ + rhs(op2); \ + ret.V = lhs.V Sym rhs.V; \ + return ret; \ + } + + OP_BIN_AF(+, plus) + OP_BIN_AF(-, minus) + OP_BIN_AF(&, logic) + OP_BIN_AF(|, logic) + OP_BIN_AF(^, logic) + +// Arithmetic : assign +// ------------------------------------------------------------------------- +#define OP_ASSIGN_AF(Sym) \ + template \ + INLINE ap_fixed_base& operator Sym##=( \ + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& \ + op2) { \ + *this = operator Sym(op2); \ + return *this; \ + } + + OP_ASSIGN_AF(*) + OP_ASSIGN_AF(/) + OP_ASSIGN_AF(+) + OP_ASSIGN_AF(-) + OP_ASSIGN_AF(&) + OP_ASSIGN_AF(|) + OP_ASSIGN_AF(^) + + // Prefix and postfix increment and decrement. + // ------------------------------------------------------------------------- + + /// Prefix increment + INLINE ap_fixed_base& operator++() { + operator+=(ap_fixed_base<_AP_W - _AP_I + 1, 1, false>(1)); + return *this; + } + + /// Prefix decrement. + INLINE ap_fixed_base& operator--() { + operator-=(ap_fixed_base<_AP_W - _AP_I + 1, 1, false>(1)); + return *this; + } + + /// Postfix increment + INLINE const ap_fixed_base operator++(int) { + ap_fixed_base r(*this); + operator++(); + return r; + } + + /// Postfix decrement + INLINE const ap_fixed_base operator--(int) { + ap_fixed_base r(*this); + operator--(); + return r; + } + + // Unary arithmetic. + // ------------------------------------------------------------------------- + INLINE ap_fixed_base operator+() { return *this; } + + INLINE ap_fixed_base<_AP_W + 1, _AP_I + 1, true> operator-() const { + ap_fixed_base<_AP_W + 1, _AP_I + 1, true> r(*this); + r.V = -r.V; + return r; + } + + INLINE ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> getNeg() { + ap_fixed_base<_AP_W, _AP_I, true, _AP_Q, _AP_O, _AP_N> r(*this); + r.V = -r.V; + return r; + } + + // Not (!) + // ------------------------------------------------------------------------- + INLINE bool operator!() const { return Base::V == 0; } + + // Bitwise complement + // ------------------------------------------------------------------------- + // XXX different from Mentor's ac_fixed. + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S> operator~() const { + ap_fixed_base<_AP_W, _AP_I, _AP_S> r; + r.V = ~Base::V; + return r; + } + + // Shift + // ------------------------------------------------------------------------- + // left shift is the same as moving point right, i.e. increate I. + template + INLINE ap_fixed_base<_AP_W, _AP_I + _AP_SHIFT, _AP_S> lshift() const { + ap_fixed_base<_AP_W, _AP_I + _AP_SHIFT, _AP_S> r; + r.V = Base::V; + return r; + } + + template + INLINE ap_fixed_base<_AP_W, _AP_I - _AP_SHIFT, _AP_S> rshift() const { + ap_fixed_base<_AP_W, _AP_I - _AP_SHIFT, _AP_S> r; + r.V = Base::V; + return r; + } + + // Because the return type is the type of the the first operand, shift assign + // operators do not carry out any quantization or overflow + // While systemc, shift assigns for sc_fixed/sc_ufixed will result in + // quantization or overflow (depending on the mode of the first operand) + INLINE ap_fixed_base operator<<(unsigned int sh) const { + ap_fixed_base r; + r.V = Base::V << sh; +// TODO check shift overflow? +#ifdef __SC_COMPATIBLE__ + if (sh == 0) return r; + if (_AP_O != AP_WRAP || _AP_N != 0) { + bool neg_src = _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1); + bool allones, allzeros; + ap_int_base<_AP_W, false> ones(-1); + if (sh <= _AP_W) { + ap_int_base<_AP_W, false> range1; + range1.V = _AP_ROOT_op_get_range( + const_cast(this)->Base::V, _AP_W - sh, _AP_W - 1); + allones = range1 == (ones >> (_AP_W - sh)); + allzeros = range1 == 0; + } else { + allones = false; + allzeros = Base::V == 0; + } + bool overflow = !allzeros && !neg_src; + bool underflow = !allones && neg_src; + if ((_AP_O == AP_SAT_SYM) && _AP_S) + underflow |= + neg_src && + (_AP_W > 1 ? _AP_ROOT_op_get_range(r.V, 0, _AP_W - 2) == 0 : true); + bool lD = false; + if (sh < _AP_W) lD = _AP_ROOT_op_get_bit(Base::V, _AP_W - sh - 1); + r.overflow_adjust(underflow, overflow, lD, neg_src); + } +#endif + return r; + } + + INLINE ap_fixed_base operator>>(unsigned int sh) const { + ap_fixed_base r; + r.V = Base::V >> sh; +// TODO check shift overflow? +#ifdef __SC_COMPATIBLE__ + if (sh == 0) return r; + if (_AP_Q != AP_TRN) { + bool qb = false; + if (sh <= _AP_W) qb = _AP_ROOT_op_get_bit(Base::V, sh - 1); + bool rb = false; + if (sh > 1 && sh <= _AP_W) + rb = _AP_ROOT_op_get_range(const_cast(this)->Base::V, 0, + sh - 2) != 0; + else if (sh > _AP_W) + rb = Base::V != 0; + r.quantization_adjust(qb, rb, + _AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1)); + } +#endif + return r; + } + + // left and right shift for int + INLINE ap_fixed_base operator<<(int sh) const { + ap_fixed_base r; + bool isNeg = sh < 0; + unsigned int ush = isNeg ? -sh : sh; + if (isNeg) { + return operator>>(ush); + } else { + return operator<<(ush); + } + } + + INLINE ap_fixed_base operator>>(int sh) const { + bool isNeg = sh < 0; + unsigned int ush = isNeg ? -sh : sh; + if (isNeg) { + return operator<<(ush); + } else { + return operator>>(ush); + } + } + + // left and right shift for ap_int. + template + INLINE ap_fixed_base operator<<(const ap_int_base<_AP_W2, true>& op2) const { + // TODO the code seems not optimal. ap_fixed<8,8> << ap_int<2> needs only a + // small mux, but integer need a big one! + int sh = op2.to_int(); + return operator<<(sh); + } + + template + INLINE ap_fixed_base operator>>(const ap_int_base<_AP_W2, true>& op2) const { + int sh = op2.to_int(); + return operator>>(sh); + } + + // left and right shift for ap_uint. + template + INLINE ap_fixed_base operator<<(const ap_int_base<_AP_W2, false>& op2) const { + unsigned int sh = op2.to_uint(); + return operator<<(sh); + } + + template + INLINE ap_fixed_base operator>>(const ap_int_base<_AP_W2, false>& op2) const { + unsigned int sh = op2.to_uint(); + return operator>>(sh); + } + + // left and right shift for ap_fixed + template + INLINE ap_fixed_base operator<<( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + op2) { + return operator<<(op2.to_ap_int_base()); + } + + template + INLINE ap_fixed_base operator>>( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + op2) { + return operator>>(op2.to_ap_int_base()); + } + + // Shift assign. + // ------------------------------------------------------------------------- + + // left shift assign. + INLINE ap_fixed_base& operator<<=(const int sh) { + *this = operator<<(sh); + return *this; + } + + INLINE ap_fixed_base& operator<<=(const unsigned int sh) { + *this = operator<<(sh); + return *this; + } + + template + INLINE ap_fixed_base& operator<<=(const ap_int_base<_AP_W2, _AP_S2>& sh) { + *this = operator<<(sh.to_int()); + return *this; + } + + template + INLINE ap_fixed_base& operator<<=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + sh) { + *this = operator<<(sh.to_int()); + return *this; + } + + // right shift assign. + INLINE ap_fixed_base& operator>>=(const int sh) { + *this = operator>>(sh); + return *this; + } + + INLINE ap_fixed_base& operator>>=(const unsigned int sh) { + *this = operator>>(sh); + return *this; + } + + template + INLINE ap_fixed_base& operator>>=(const ap_int_base<_AP_W2, _AP_S2>& sh) { + *this = operator>>(sh.to_int()); + return *this; + } + + template + INLINE ap_fixed_base& operator>>=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + sh) { + *this = operator>>(sh.to_int()); + return *this; + } + +// Comparisons. +// ------------------------------------------------------------------------- +#define OP_CMP_AF(Sym) \ + template \ + INLINE bool operator Sym(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, \ + _AP_O2, _AP_N2>& op2) const { \ + enum { _AP_F = _AP_W - _AP_I, F2 = _AP_W2 - _AP_I2 }; \ + if (_AP_F == F2) \ + return Base::V Sym op2.V; \ + else if (_AP_F > F2) \ + return Base::V Sym ap_fixed_base(op2).V; \ + else \ + return ap_fixed_base(*this).V Sym op2.V; \ + return false; \ + } + + OP_CMP_AF(>) + OP_CMP_AF(<) + OP_CMP_AF(>=) + OP_CMP_AF(<=) + OP_CMP_AF(==) + OP_CMP_AF(!=) +// FIXME: Move compare with double out of struct ap_fixed_base defination +// and combine it with compare operator(double, ap_fixed_base) +#define DOUBLE_CMP_AF(Sym) \ + INLINE bool operator Sym(double d) const { return to_double() Sym d; } + + DOUBLE_CMP_AF(>) + DOUBLE_CMP_AF(<) + DOUBLE_CMP_AF(>=) + DOUBLE_CMP_AF(<=) + DOUBLE_CMP_AF(==) + DOUBLE_CMP_AF(!=) + + // Bit and Slice Select + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator[]( + unsigned index) { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, index); + } + + template + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator[]( + const ap_int_base<_AP_W2, _AP_S2>& index) { + _AP_WARNING(index < 0, "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, + index.to_int()); + } + + INLINE bool operator[](unsigned index) const { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, index); + } + + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> bit( + unsigned index) { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, index); + } + + template + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> bit( + const ap_int_base<_AP_W2, _AP_S2>& index) { + _AP_WARNING(index < 0, "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, + index.to_int()); + } + + INLINE bool bit(unsigned index) const { + _AP_WARNING(index >= _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, index); + } + + template + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> get_bit( + const ap_int_base<_AP_W2, true>& index) { + _AP_WARNING(index < _AP_I - _AP_W, + "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>( + this, index.to_int() + _AP_W - _AP_I); + } + + INLINE bool get_bit(int index) const { + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + _AP_WARNING(index < _AP_I - _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, + index + _AP_W - _AP_I); + } +#if 0 + INLINE af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> get_bit( + int index) { + _AP_WARNING(index < _AP_I - _AP_W, + "Attempting to read bit with negative index"); + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + return af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>( + this, index + _AP_W - _AP_I); + } +#endif + + template + INLINE bool get_bit(const ap_int_base<_AP_W2, true>& index) const { + _AP_WARNING(index >= _AP_I, "Attempting to read bit beyond MSB"); + _AP_WARNING(index < _AP_I - _AP_W, "Attempting to read bit beyond MSB"); + return _AP_ROOT_op_get_bit(const_cast(this)->V, + index.to_int() + _AP_W - _AP_I); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range(int Hi, + int Lo) { + _AP_WARNING((Hi >= _AP_W) || (Lo >= _AP_W), "Out of bounds in range()"); + return af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(this, Hi, Lo); + } + + // This is a must to strip constness to produce reference type. + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range( + int Hi, int Lo) const { + _AP_WARNING((Hi >= _AP_W) || (Lo >= _AP_W), "Out of bounds in range()"); + return af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>( + const_cast(this), Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range() { + return this->range(_AP_W - 1, 0); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> range() const { + return this->range(_AP_W - 1, 0); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + int Hi, int Lo) { + return this->range(Hi, Lo); + } + + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + int Hi, int Lo) const { + return this->range(Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE bool is_zero() const { return Base::V == 0; } + + INLINE bool is_neg() const { + if (_AP_S && _AP_ROOT_op_get_bit(Base::V, _AP_W - 1)) return true; + return false; + } + + INLINE int wl() const { return _AP_W; } + + INLINE int iwl() const { return _AP_I; } + + INLINE ap_q_mode q_mode() const { return _AP_Q; } + + INLINE ap_o_mode o_mode() const { return _AP_O; } + + INLINE int n_bits() const { return _AP_N; } + + // print a string representation of this number in the given radix. + // Radix support is 2, 8, 10, or 16. + // The result will include a prefix indicating the radix, except for decimal, + // where no prefix is needed. The default is to output a signed representation + // of signed numbers, or an unsigned representation of unsigned numbers. For + // non-decimal formats, this can be changed by the 'sign' argument. +#ifndef __SYNTHESIS__ + std::string to_string(unsigned char radix = 2, bool sign = _AP_S) const { + // XXX in autosim/autowrap.tcl "(${name}).to_string(2).c_str()" is used to + // initialize sc_lv, which seems incapable of handling format "-0b". + // if (radix == 2) sign = false; + + std::string str; + str.clear(); + char step = 0; + bool isNeg = sign && (Base::V < 0); + + // Extend to take care of the -MAX case. + ap_fixed_base<_AP_W + 1, _AP_I + 1> tmp(*this); + if (isNeg) { + tmp = -tmp; + str += '-'; + } + std::string prefix; + switch (radix) { + case 2: + prefix = "0b"; + step = 1; + break; + case 8: + prefix = "0o"; + step = 3; + break; + case 16: + prefix = "0x"; + step = 4; + break; + default: + break; + } + + if (_AP_I > 0) { + // Note we drop the quantization and rounding flags here. The + // integer part is always in range, and the fractional part we + // want to drop. Also, the number is always positive, because + // of the absolute value above. + ap_int_base int_part; + // [1] [ I ] d [ W - I ] + // | | | + // | W-I 0 + // W + int_part.V = _AP_ROOT_op_get_range( + tmp.V, _AP_W - _AP_I, _AP_W); + str += int_part.to_string(radix, false); + } else { + str += prefix; + str += '0'; + } + + ap_fixed_base frac_part = tmp; + + if (radix == 10) { + if (frac_part != 0) { + str += "."; + while (frac_part != 0) { + char digit = (frac_part * radix).to_char(); + str += static_cast(digit + '0'); + frac_part *= radix; + } + } + } else { + if (frac_part != 0) { + str += "."; + for (signed i = _AP_W - _AP_I - 1; i >= 0; i -= step) { + char digit = frac_part.range(i, AP_MAX(0, i - step + 1)).to_char(); + // If we have a partial bit pattern at the end, then we need + // to put it in the high-order bits of 'digit'. + int offset = AP_MIN(0, i - step + 1); + digit <<= -offset; + str += digit < 10 ? static_cast(digit + '0') + : static_cast(digit - 10 + 'a'); + } + if (radix == 16) + str += "p0"; // C99 Hex constants are required to have an exponent. + } + } + return str; + } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string(unsigned char radix = 2, bool sign = _AP_S) const { + _AP_UNUSED_PARAM(radix); + _AP_UNUSED_PARAM(sign); + return 0; + } +#endif +}; // struct ap_fixed_base. + +template +INLINE void b_not( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { + ret.V = ~op.V; +} + +template +INLINE void b_and( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + ret.V = op1.V & op2.V; +} + +template +INLINE void b_or( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + ret.V = op1.V | op2.V; +} + +template +INLINE void b_xor( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + ret.V = op1.V ^ op2.V; +} + +template +INLINE void neg( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + ap_fixed_base<_AP_W2 + !_AP_S2, _AP_I2 + !_AP_S2, true, _AP_Q2, _AP_O2, + _AP_N2> + t; + t.V = -op.V; + ret = t; +} + +template +INLINE void lshift( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op, + int i) { + enum { + F2 = _AP_W2 - _AP_I2, + _AP_I3 = AP_MAX(_AP_I, _AP_I2), + _AP_W3 = _AP_I3 + F2, + }; + // wide buffer + ap_fixed_base<_AP_W3, _AP_I3, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> t; + t.V = op.V; + t.V <<= i; // FIXME overflow? + // handle quantization and overflow + ret = t; +} + +template +INLINE void rshift( + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ret, + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op, + int i) { + enum { + F = _AP_W - _AP_I, + F2 = _AP_W2 - _AP_I2, + F3 = AP_MAX(F, F2), + _AP_W3 = _AP_I2 + F3, + sh = F - F2, + }; + // wide buffer + ap_fixed_base<_AP_W3, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> t; + t.V = op.V; + if (sh >= 0) + t.V <<= (int) sh; + t.V >>= i; + // handle quantization and overflow + ret = t; +} + +//// FIXME +//// These partial specialization ctors allow code like +//// char c = 'a'; +//// ap_fixed_base<8, 8, true> x(c); +//// but what bout ap_fixed_base<9, 9, true> y(c) ? +// + +#ifndef __SYNTHESIS__ +INLINE std::string scientificFormat(std::string& input) { + if (input.length() == 0) return input; + + size_t decPosition = input.find('.'); + if (decPosition == std::string::npos) decPosition = input.length(); + + size_t firstNonZeroPos = 0; + for (; input[firstNonZeroPos] > '9' || input[firstNonZeroPos] < '1'; + firstNonZeroPos++) + ; + + int exp; + if (firstNonZeroPos > decPosition) + exp = decPosition - firstNonZeroPos; + else + exp = decPosition - firstNonZeroPos - 1; + std::string expString = ""; + if (exp == 0) + ; + else if (exp < 0) { + expString += "e-"; + exp = -exp; + } else + expString += "e+"; + + if (exp < 10 && exp > 0) { + expString += '0'; + expString += (char)('0' + exp); + } else if (exp != 0) { + std::string tmp; + + std::ostringstream oss; + oss << exp; + + tmp = oss.str(); + expString += tmp; + } + + int lastNonZeroPos = (int)(input.length() - 1); + for (; lastNonZeroPos >= 0; --lastNonZeroPos) + if (input[lastNonZeroPos] <= '9' && input[lastNonZeroPos] > '0') break; + + std::string ans = ""; + ans += input[firstNonZeroPos]; + if (firstNonZeroPos != (size_t)lastNonZeroPos) { + ans += '.'; + for (int i = firstNonZeroPos + 1; i <= lastNonZeroPos; i++) + if (input[i] != '.') ans += input[i]; + } + + ans += expString; + return ans; +} + +INLINE std::string reduceToPrecision(std::string& input, int precision) { + bool isZero = true; + size_t inputLen = input.length(); + for (size_t i = 0; i < inputLen && isZero; i++) + if (input[i] != '.' && input[i] != '0') isZero = false; + if (isZero) return "0"; + + // Find the first valid number, skip '-' + int FirstNonZeroPos = 0; + int LastNonZeroPos = (int)inputLen - 1; + int truncBitPosition = 0; + size_t decPosition = input.find('.'); + for (; input[FirstNonZeroPos] < '1' || input[FirstNonZeroPos] > '9'; + FirstNonZeroPos++) + ; + + for (; input[LastNonZeroPos] < '1' || input[LastNonZeroPos] > '9'; + LastNonZeroPos--) + ; + + if (decPosition == std::string::npos) decPosition = inputLen; + // Count the valid number, to decide whether we need to truncate + if ((int)decPosition > LastNonZeroPos) { + if (LastNonZeroPos - FirstNonZeroPos + 1 <= precision) return input; + truncBitPosition = FirstNonZeroPos + precision; + } else if ((int)decPosition < FirstNonZeroPos) { // This is pure decimal + if (LastNonZeroPos - FirstNonZeroPos + 1 <= precision) { + if (FirstNonZeroPos - decPosition - 1 < 4) { + return input; + } else { + if (input[0] == '-') { + std::string tmp = input.substr(1, inputLen - 1); + return std::string("-") + scientificFormat(tmp); + } else + return scientificFormat(input); + } + } + truncBitPosition = FirstNonZeroPos + precision; + } else { + if (LastNonZeroPos - FirstNonZeroPos <= precision) return input; + truncBitPosition = FirstNonZeroPos + precision + 1; + } + + // duplicate the input string, we want to add "0" before the valid numbers + // This is easy for quantization, since we may change 9999 to 10000 + std::string ans = ""; + std::string dupInput = "0"; + if (input[0] == '-') { + ans += '-'; + dupInput += input.substr(1, inputLen - 1); + } else { + dupInput += input.substr(0, inputLen); + ++truncBitPosition; + } + + // Add 'carry' after truncation, if necessary + bool carry = dupInput[truncBitPosition] > '4'; + for (int i = truncBitPosition - 1; i >= 0 && carry; i--) { + if (dupInput[i] == '.') continue; + if (dupInput[i] == '9') + dupInput[i] = '0'; + else { + ++dupInput[i]; + carry = false; + } + } + + // bits outside precision range should be set to 0 + if (dupInput[0] == '1') + FirstNonZeroPos = 0; + else { + FirstNonZeroPos = 0; + while (dupInput[FirstNonZeroPos] < '1' || dupInput[FirstNonZeroPos] > '9') + ++FirstNonZeroPos; + } + + unsigned it = FirstNonZeroPos; + int NValidNumber = 0; + while (it < dupInput.length()) { + if (dupInput[it] == '.') { + ++it; + continue; + } + ++NValidNumber; + if (NValidNumber > precision) dupInput[it] = '0'; + ++it; + } + + // Here we wanted to adjust the truncate position and the value + decPosition = dupInput.find('.'); + if (decPosition == std::string::npos) // When this is integer + truncBitPosition = (int)dupInput.length(); + else + for (truncBitPosition = (int)(dupInput.length() - 1); truncBitPosition >= 0; + --truncBitPosition) { + if (dupInput[truncBitPosition] == '.') break; + if (dupInput[truncBitPosition] != '0') { + truncBitPosition++; + break; + } + } + + if (dupInput[0] == '1') + dupInput = dupInput.substr(0, truncBitPosition); + else + dupInput = dupInput.substr(1, truncBitPosition - 1); + + decPosition = dupInput.find('.'); + if (decPosition != std::string::npos) { + size_t it = 0; + for (it = decPosition + 1; dupInput[it] == '0'; it++) + ; + if (it - decPosition - 1 < 4) { + ans += dupInput; + return ans; + } else { + ans += scientificFormat(dupInput); + return ans; + } + } else if ((int)(dupInput.length()) <= precision) { + ans += dupInput; + return ans; + } + + ans += scientificFormat(dupInput); + return ans; +} + +template +INLINE void print( + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + if (_AP_I > 0) { + ap_int_base<_AP_I, _AP_S> p1; + p1.V = x.V >> (_AP_W - _AP_I); + print(p1.V); // print overlaod for .V should exit + } else { + printf("0"); + } + printf("."); + if (_AP_I < _AP_W) { + ap_int_base<_AP_W - _AP_I, false> p2; + p2.V = _AP_ROOT_op_get_range(x.V, 0, _AP_W - _AP_I); + print(p2.V, false); // print overlaod for .V should exit + } +} +#endif // ifndef __SYNTHESIS__ + +// XXX the following two functions have to exist in synthesis, +// as some old HLS Video Library code uses the ostream overload, +// although HLS will later delete I/O function call. + +/// Output streaming +//----------------------------------------------------------------------------- +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<( + std::ostream& out, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + // TODO support std::ios_base::fmtflags + unsigned width = out.width(); + unsigned precision = out.precision(); + char fill = out.fill(); + std::string str = x.to_string(10, _AP_S); + str = reduceToPrecision(str, precision); + if (width > str.length()) { + for (unsigned i = 0; i < width - str.length(); ++i) + out << fill; + } + out << str; + return out; +} +#endif // ifndef __SYNTHESIS__ + +/// Input streaming +// ----------------------------------------------------------------------------- +#ifndef __SYNTHESIS__ +template +INLINE std::istream& operator>>( + std::istream& in, + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + double d; + in >> d; + x = ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>(d); + return in; +} +#endif +#endif // ifndef AP_AUTOCC + +/// Operators mixing Integers with ap_fixed_base +// ----------------------------------------------------------------------------- +#define AF_BIN_OP_WITH_INT_SF(BIN_OP, C_TYPE, _AP_W2, _AP_S2, RTYPE) \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator BIN_OP(ap_int_base<_AP_W2, _AP_S2>(i_op)); \ + } + +#define AF_BIN_OP_WITH_INT(BIN_OP, C_TYPE, _AP_W2, _AP_S2, RTYPE) \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator BIN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + C_TYPE i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator BIN_OP(op); \ + } + +#define AF_REL_OP_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator REL_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + template \ + INLINE bool operator REL_OP( \ + C_TYPE i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator REL_OP(op); \ + } + +#define AF_ASSIGN_OP_WITH_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& \ + operator ASSIGN_OP( \ + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator ASSIGN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } + +#define AF_ASSIGN_OP_WITH_INT_SF(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& \ + operator ASSIGN_OP( \ + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE i_op) { \ + return op.operator ASSIGN_OP(ap_int_base<_AP_W2, _AP_S2>(i_op)); \ + } + +#define ALL_AF_OP_WITH_INT(C_TYPE, BITS, SIGN) \ + AF_BIN_OP_WITH_INT(+, C_TYPE, (BITS), (SIGN), plus) \ + AF_BIN_OP_WITH_INT(-, C_TYPE, (BITS), (SIGN), minus) \ + AF_BIN_OP_WITH_INT(*, C_TYPE, (BITS), (SIGN), mult) \ + AF_BIN_OP_WITH_INT(/, C_TYPE, (BITS), (SIGN), div) \ + AF_BIN_OP_WITH_INT(&, C_TYPE, (BITS), (SIGN), logic) \ + AF_BIN_OP_WITH_INT(|, C_TYPE, (BITS), (SIGN), logic) \ + AF_BIN_OP_WITH_INT(^, C_TYPE, (BITS), (SIGN), logic) \ + AF_BIN_OP_WITH_INT_SF(>>, C_TYPE, (BITS), (SIGN), lhs) \ + AF_BIN_OP_WITH_INT_SF(<<, C_TYPE, (BITS), (SIGN), lhs) \ + \ + AF_ASSIGN_OP_WITH_INT(+=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(-=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(*=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(/=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(&=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(|=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT(^=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT_SF(>>=, C_TYPE, (BITS), (SIGN)) \ + AF_ASSIGN_OP_WITH_INT_SF(<<=, C_TYPE, (BITS), (SIGN)) \ + \ + AF_REL_OP_WITH_INT(>, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(<, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(>=, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(<=, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(==, C_TYPE, (BITS), (SIGN)) \ + AF_REL_OP_WITH_INT(!=, C_TYPE, (BITS), (SIGN)) + +ALL_AF_OP_WITH_INT(bool, 1, false) +ALL_AF_OP_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_AF_OP_WITH_INT(signed char, 8, true) +ALL_AF_OP_WITH_INT(unsigned char, 8, false) +ALL_AF_OP_WITH_INT(short, _AP_SIZE_short, true) +ALL_AF_OP_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_AF_OP_WITH_INT(int, _AP_SIZE_int, true) +ALL_AF_OP_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_AF_OP_WITH_INT(long, _AP_SIZE_long, true) +ALL_AF_OP_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_AF_OP_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_AF_OP_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef ALL_AF_OP_WITH_INT +#undef AF_BIN_OP_WITH_INT +#undef AF_BIN_OP_WITH_INT_SF +#undef AF_ASSIGN_OP_WITH_INT +#undef AF_ASSIGN_OP_WITH_INT_SF +#undef AF_REL_OP_WITH_INT + +/* + * ********************************************************************** + * TODO + * There is no operator defined with float/double/long double, so that + * code like + * ap_fixed<8,4> a = 1.5f; + * a += 0.5f; + * will fail in compilation. + * Operator with warning about conversion might be wanted. + * ********************************************************************** + */ + +#define AF_BIN_OP_WITH_AP_INT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>::template RType< \ + _AP_W, _AP_I, _AP_S>::RTYPE \ + operator BIN_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator BIN_OP(op); \ + } \ + \ + template \ + INLINE typename ap_fixed_base<_AP_W, _AP_I, _AP_S>::template RType< \ + _AP_W2, _AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& i_op) { \ + return op.operator BIN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } + +#define AF_REL_OP_WITH_AP_INT(REL_OP) \ + template \ + INLINE bool operator REL_OP( \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& i_op) { \ + return op.operator REL_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op).operator REL_OP(op); \ + } + +#define AF_ASSIGN_OP_WITH_AP_INT(ASSIGN_OP) \ + template \ + INLINE ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& \ + operator ASSIGN_OP( \ + ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& i_op) { \ + return op.operator ASSIGN_OP(ap_fixed_base<_AP_W2, _AP_W2, _AP_S2>(i_op)); \ + } \ + \ + template \ + INLINE ap_int_base<_AP_W2, _AP_S2>& operator ASSIGN_OP( \ + ap_int_base<_AP_W2, _AP_S2>& i_op, \ + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return i_op.operator ASSIGN_OP(op.to_ap_int_base()); \ + } + +AF_BIN_OP_WITH_AP_INT(+, plus) +AF_BIN_OP_WITH_AP_INT(-, minus) +AF_BIN_OP_WITH_AP_INT(*, mult) +AF_BIN_OP_WITH_AP_INT(/, div) +AF_BIN_OP_WITH_AP_INT(&, logic) +AF_BIN_OP_WITH_AP_INT(|, logic) +AF_BIN_OP_WITH_AP_INT(^, logic) + +#undef AF_BIN_OP_WITH_AP_INT + +AF_ASSIGN_OP_WITH_AP_INT(+=) +AF_ASSIGN_OP_WITH_AP_INT(-=) +AF_ASSIGN_OP_WITH_AP_INT(*=) +AF_ASSIGN_OP_WITH_AP_INT(/=) +AF_ASSIGN_OP_WITH_AP_INT(&=) +AF_ASSIGN_OP_WITH_AP_INT(|=) +AF_ASSIGN_OP_WITH_AP_INT(^=) + +#undef AF_ASSIGN_OP_WITH_AP_INT + +AF_REL_OP_WITH_AP_INT(==) +AF_REL_OP_WITH_AP_INT(!=) +AF_REL_OP_WITH_AP_INT(>) +AF_REL_OP_WITH_AP_INT(>=) +AF_REL_OP_WITH_AP_INT(<) +AF_REL_OP_WITH_AP_INT(<=) + +#undef AF_REL_OP_WITH_AP_INT + +// Relational Operators with double +template +INLINE bool operator==( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator==(op1); +} + +template +INLINE bool operator!=( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator!=(op1); +} + +template +INLINE bool operator>( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator<(op1); +} + +template +INLINE bool operator>=( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator<=(op1); +} + +template +INLINE bool operator<( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator>(op1); +} + +template +INLINE bool operator<=( + double op1, + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op2) { + return op2.operator>=(op1); +} + +#endif // ifndef __cplusplus else + +#endif // ifndef __AP_FIXED_BASE_H__ else + +// -*- cpp -*- + + diff --git a/vitis/v2021_2/ap_fixed_ref.h b/vitis/v2021_2/ap_fixed_ref.h new file mode 100755 index 00000000..c1cff92d --- /dev/null +++ b/vitis/v2021_2/ap_fixed_ref.h @@ -0,0 +1,784 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_FIXED_REF_H__ +#define __AP_FIXED_REF_H__ + +#ifndef __AP_FIXED_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" + +#else +#ifndef __SYNTHESIS__ +#include +#endif + +/// Proxy class, which allows bit selection to be used as both rvalue (for +/// reading) and lvalue (for writing) +template +struct af_bit_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> ref_type; + ref_type& d_bv; + int d_index; + + public: + INLINE af_bit_ref( + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ref) + : d_bv(ref.d_bv), d_index(ref.d_index) { +#ifndef __SYNTHESIS__ + _AP_WARNING(d_index < 0, "Index of bit vector (%d) cannot be negative.", + d_index); + _AP_WARNING(d_index >= _AP_W, "Index of bit vector (%d) out of range (%d).", + d_index, _AP_W); +#endif + } + + INLINE af_bit_ref(ref_type* bv, int index = 0) : d_bv(*bv), d_index(index) {} + + INLINE af_bit_ref(const ref_type* bv, int index = 0) + : d_bv(*const_cast(bv)), d_index(index) {} + + /// convert operators. + INLINE operator bool() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + /// @name assign operators + // @{ + INLINE af_bit_ref& operator=(bool val) { + d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index, val); + return *this; + } + + // Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE af_bit_ref& operator=(const af_bit_ref& val) { + return operator=(bool(val)); + } + + template + INLINE af_bit_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=(bool(val)); + } + + template + INLINE af_bit_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=(bool(val)); + } + + template + INLINE af_bit_ref& operator=(const ap_int_base<_AP_W2, _AP_S2>& val) { + return operator=(val != 0); + } + + template + INLINE af_bit_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + return operator=(ap_int_base<_AP_W2, false>(val)); + } + + template + INLINE af_bit_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=(ap_int_base<_AP_W2, false>(val)); + } + + template + INLINE af_bit_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + return operator=(ap_int_base<_AP_W2 + _AP_W3, false>(val)); + } + // @} + + /// @name concatenate operators + // @{ + template + INLINE ap_concat_ref<1, af_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<1, af_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > operator,( + const ap_bit_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<1, af_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >(*this, + op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<1, af_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> >( + *this, op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &op) { + return ap_concat_ref<1, af_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >(*this, + op); + } + + template + INLINE ap_concat_ref< + 1, af_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &op) { + return ap_concat_ref< + 1, af_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, + op); + } + + template + INLINE ap_concat_ref<1, af_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &op) { + return ap_concat_ref<1, af_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + op)); + } + // @} + + /// @name comparison + // @{ + template + INLINE bool operator==( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + return get() == op.get(); + } + + template + INLINE bool operator!=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + return get() != op.get(); + } + // @} + + INLINE bool operator~() const { + bool bit = _AP_ROOT_op_get_bit(d_bv.V, d_index); + return bit ? false : true; + } + + INLINE bool get() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + INLINE int length() const { return 1; } + +#ifndef __SYNTHESIS__ + std::string to_string() const { return get() ? "1" : "0"; } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string() const { return 0; } +#endif +}; // struct af_bit_ref + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<( + std::ostream& os, + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + os << x.to_string(); + return os; +} +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_AUTOCC + +/// Range (slice) reference. +template +struct af_range_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + typedef ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> ref_type; + ref_type& d_bv; + int l_index; + int h_index; + + public: + /// copy ctor + INLINE af_range_ref( + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& ref) + : d_bv(ref.d_bv), l_index(ref.l_index), h_index(ref.h_index) {} + + /// ctor from ap_fixed_base, higher and lower bound. + /** if h is less than l, the bits selected will be returned in reverse order. + */ + INLINE af_range_ref(ref_type* bv, int h, int l) + : d_bv(*bv), l_index(l), h_index(h) { +#ifndef __SYNTHESIS__ + _AP_WARNING(h < 0 || l < 0, + "Higher bound(%d) and lower(%d) bound cannot be negative.", h, + l); + _AP_WARNING(h >= _AP_W || l >= _AP_W, + "Higher bound(%d) or lower(%d) bound out of range.", h, l); + _AP_WARNING(h < l, "The bits selected will be returned in reverse order."); +#endif + } + + INLINE af_range_ref(const ref_type* bv, int h, int l) + : d_bv(*const_cast(bv)), l_index(l), h_index(h) { +#ifndef __SYNTHESIS__ + _AP_WARNING(h < 0 || l < 0, + "Higher bound(%d) and lower(%d) bound cannot be negative.", h, + l); + _AP_WARNING(h >= _AP_W || l >= _AP_W, + "Higher bound(%d) or lower(%d) bound out of range.", h, l); + _AP_WARNING(h < l, "The bits selected will be returned in reverse order."); +#endif + } + + /// @name assign operators + // @{ + +#define ASSIGN_CTYPE_TO_AF_RANGE(DATA_TYPE) \ + INLINE af_range_ref& operator=(const DATA_TYPE val) { \ + ap_int_base<_AP_W, false> loc(val); \ + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, loc.V); \ + return *this; \ + } + + ASSIGN_CTYPE_TO_AF_RANGE(bool) + ASSIGN_CTYPE_TO_AF_RANGE(char) + ASSIGN_CTYPE_TO_AF_RANGE(signed char) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned char) + ASSIGN_CTYPE_TO_AF_RANGE(short) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned short) + ASSIGN_CTYPE_TO_AF_RANGE(int) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned int) + ASSIGN_CTYPE_TO_AF_RANGE(long) + ASSIGN_CTYPE_TO_AF_RANGE(unsigned long) + ASSIGN_CTYPE_TO_AF_RANGE(ap_slong) + ASSIGN_CTYPE_TO_AF_RANGE(ap_ulong) + ASSIGN_CTYPE_TO_AF_RANGE(half) + ASSIGN_CTYPE_TO_AF_RANGE(float) + ASSIGN_CTYPE_TO_AF_RANGE(double) +#undef ASSIGN_CTYPE_TO_AF_RANGE + + /// assgin using a string. XXX crucial for cosim. + INLINE af_range_ref& operator=(const char* val) { + const ap_int_base<_AP_W, false> tmp(val); // XXX figure out radix + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + return *this; + } + + /// assign from ap_int_base. + // NOTE Base of other assgin operators. + template + INLINE af_range_ref& operator=(const ap_int_base<_AP_W3, _AP_S3>& val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + return *this; + } + + /// assign from range reference to ap_int_base. + template + INLINE af_range_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + const ap_int_base<_AP_W2, false> tmp(val); + return operator=(tmp); + } + + /// assign from bit reference to ap_int_base.. + template + INLINE af_range_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + const ap_int_base<1, false> tmp((bool)val); + return operator=(tmp); + } + + /// assgin from ap_fixed_base. + template + INLINE af_range_ref& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + return *this; + } + + /// copy assgin. + // XXX This has to be explicit, otherwise it will be deleted, as d_bv is + // of reference type. + INLINE af_range_ref& operator=(const af_range_ref& val) { + ap_int_base<_AP_W, false> tmp(val); + return operator=(tmp); + } + + /// assign from range reference to ap_fixed_base. + template + INLINE af_range_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + ap_int_base<_AP_W2, false> tmp(val); + return operator=(tmp); + } + + /// assign from bit reference to ap_fixed_base. + template + INLINE af_range_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + ap_int_base<1, false> tmp((bool)val); + return operator=(tmp); + } + + /// assign from compound reference. + template + INLINE af_range_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + const ap_int_base<_AP_W2 + _AP_W3, false> tmp(val); + return operator=(tmp); + } + // @} + + /// @name comparison operators with ap_range_ref. + // @{ + template + INLINE bool operator==(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop == rop; + } + + template + INLINE bool operator!=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator==(op2)); + } + + template + INLINE bool operator<(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop < rop; + } + + template + INLINE bool operator>(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop > rop; + } + + template + INLINE bool operator<=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator>(op2)); + } + + template + INLINE bool operator>=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator<(op2)); + } + // @} + + /// @name comparison operators with af_range_ref. + // @{ + template + INLINE bool operator==( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop == rop; + } + + template + INLINE bool operator!=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + return !(operator==(op2)); + } + + template + INLINE bool operator<( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop < rop; + } + + template + INLINE bool operator>( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> rop(op2); + return lop > rop; + } + + template + INLINE bool operator<=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + return !(operator>(op2)); + } + + template + INLINE bool operator>=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op2) { + return !(operator<(op2)); + } + // @} + + /// @name concatenate operators. + /// @{ + /// concatenate with ap_int_base. + template + INLINE + ap_concat_ref<_AP_W, af_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<_AP_W, af_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, op); + } + + /// concatenate with ap_bit_ref. + template + INLINE ap_concat_ref<_AP_W, af_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(const ap_bit_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<_AP_W, af_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + /// concatenate with ap_bit_ref. + template + INLINE ap_concat_ref<_AP_W, af_range_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &op) { + return ap_concat_ref<_AP_W, af_range_ref, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + /// concatenate with ap_concat_ref. + template + INLINE ap_concat_ref<_AP_W, af_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &op) { + return ap_concat_ref<_AP_W, af_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + *this, const_cast&>(op)); + } + + /// concatenate with another af_range_ref. + template + INLINE + ap_concat_ref<_AP_W, af_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &op) { + return ap_concat_ref< + _AP_W, af_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + op)); + } + + /// concatenate with another af_bit_ref. + template + INLINE + ap_concat_ref<_AP_W, af_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &op) { + return ap_concat_ref< + _AP_W, af_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + op)); + } + // @} + + INLINE operator ap_ulong() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret.to_uint64(); + } + + INLINE operator ap_int_base<_AP_W, false>() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + INLINE ap_int_base<_AP_W, false> to_ap_int_base() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + // used in ap_fixed_base::to_string() + INLINE char to_char() const { + return (char)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE int to_int() const { + return (int)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned to_uint() const { + return (unsigned)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE long to_long() const { + return (long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned long to_ulong() const { + return (unsigned long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_slong to_int64() const { + return (ap_slong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_ulong to_uint64() const { + return (ap_ulong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + /// @name unary operators + /// @{ + INLINE ap_int_base<_AP_W, false> operator~() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return (~ret); + } + + INLINE ap_int_base<_AP_W, false> operator!() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return (!ret); + } + + INLINE ap_int_base<_AP_W, false> operator+() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + INLINE ap_int_base<_AP_W, false> operator-() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return (-ret); + } + /// @} + + INLINE ap_int_base<_AP_W, false> get() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + template + INLINE void set(const ap_int_base<_AP_W2, false>& val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + } + + INLINE int length() const { + return h_index >= l_index ? h_index - l_index + 1 : l_index - h_index + 1; + } + +#ifndef __SYNTHESIS__ + std::string to_string(signed char rd = 2) const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret.to_string(rd); + } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string(signed char rd = 2) const { + _AP_UNUSED_PARAM(rd); + return 0; + } +#endif +}; // struct af_range_ref + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<( + std::ostream& os, + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& x) { + os << x.to_string(); + return os; +} +#endif +#endif // ifndef AP_AUTOCC + +#define AF_REF_REL_OP_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP( \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE op2) { \ + return ap_int_base<_AP_W, false>(op) \ + REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + C_TYPE op2, \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(op2) \ + REL_OP ap_int_base<_AP_W, false>(op); \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + C_TYPE op2) { \ + return bool(op) REL_OP op2; \ + } \ + \ + template \ + INLINE bool operator REL_OP( \ + C_TYPE op2, \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return op2 REL_OP bool(op); \ + } + +#define AF_REF_REL_OPS_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + AF_REF_REL_OP_WITH_INT(>, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(<, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(==, C_TYPE, (_AP_W2), (_AP_S2)) \ + AF_REF_REL_OP_WITH_INT(!=, C_TYPE, (_AP_W2), (_AP_S2)) + +AF_REF_REL_OPS_WITH_INT(bool, 1, false) +AF_REF_REL_OPS_WITH_INT(char, 8, CHAR_IS_SIGNED) +AF_REF_REL_OPS_WITH_INT(signed char, 8, true) +AF_REF_REL_OPS_WITH_INT(unsigned char, 8, false) +AF_REF_REL_OPS_WITH_INT(short, _AP_SIZE_short, true) +AF_REF_REL_OPS_WITH_INT(unsigned short, _AP_SIZE_short, false) +AF_REF_REL_OPS_WITH_INT(int, _AP_SIZE_int, true) +AF_REF_REL_OPS_WITH_INT(unsigned int, _AP_SIZE_int, false) +AF_REF_REL_OPS_WITH_INT(long, _AP_SIZE_long, true) +AF_REF_REL_OPS_WITH_INT(unsigned long, _AP_SIZE_long, false) +AF_REF_REL_OPS_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +AF_REF_REL_OPS_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef AF_REF_REL_OP_INT +#undef AF_REF_REL_OPS_WITH_INT + +#define AF_REF_REL_OP_WITH_AP_INT(REL_OP) \ + template \ + INLINE bool operator REL_OP( \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S>& op2) { \ + return ap_int_base<_AP_W, false>(op) REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& op2, \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return op2 REL_OP ap_int_base<_AP_W, false>(op); \ + } \ + template \ + INLINE bool operator REL_OP( \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<1, false>(op) REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W2, _AP_S2>& op2, \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& op) { \ + return op2 REL_OP ap_int_base<1, false>(op); \ + } + +AF_REF_REL_OP_WITH_AP_INT(>) +AF_REF_REL_OP_WITH_AP_INT(<) +AF_REF_REL_OP_WITH_AP_INT(>=) +AF_REF_REL_OP_WITH_AP_INT(<=) +AF_REF_REL_OP_WITH_AP_INT(==) +AF_REF_REL_OP_WITH_AP_INT(!=) + +#endif // ifndef __cplusplus + +#endif // ifndef __AP_FIXED_REF_H__ + +// -*- cpp -*- + + diff --git a/vitis/v2021_2/ap_fixed_special.h b/vitis/v2021_2/ap_fixed_special.h new file mode 100755 index 00000000..979427a8 --- /dev/null +++ b/vitis/v2021_2/ap_fixed_special.h @@ -0,0 +1,437 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef AP_FIXED_SPECIAL_H +#define AP_FIXED_SPECIAL_H +#ifndef __SYNTHESIS__ +#include +#include +#endif +// FIXME AP_AUTOCC cannot handle many standard headers, so declare instead of +// include. +// #include +namespace std { +template class complex; +} + +/* + TODO: Modernize the code using C++11/C++14 + 1. constexpr http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0415r0.html + 2. move constructor +*/ + +namespace std { +/* + Specialize std::complex to zero initialization ap_fixed. + + To reduce the area cost, ap_fixed is not zero initialized, just like basic + types float or double. However, libstdc++ provides specialization for float, + double and long double, initializing image part to 0 when not specified. + + This has become a difficulty in switching legacy code from these C types to + ap_fixed. To ease the tranform of legacy code, we have to implement + specialization of std::complex<> for our type. + + As ap_fixed is a template, it is impossible to specialize only the methods + that causes default initialization of value type in std::complex<>. An + explicit full specialization of the template class has to be done, covering + all the member functions and operators of std::complex<> as specified + in standard 26.2.4 and 26.2.5. +*/ +template +class complex > { + public: + typedef ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> _Tp; + typedef _Tp value_type; + + // 26.2.4/1 + // Constructor without argument + // Default initialize, so that in dataflow, the variable is only written once. + complex() : _M_real(_Tp()), _M_imag(_Tp()) {} + // Constructor with ap_fixed. + // Zero initialize image part when not specified, so that `C(1) == C(1,0)` + complex(const _Tp &__r, const _Tp &__i = _Tp(0)) + : _M_real(__r), _M_imag(__i) {} + + // Constructor with another complex number + template + complex(const complex<_Up> &__z) : _M_real(__z.real()), _M_imag(__z.imag()) {} + +#if __cplusplus >= 201103L + const _Tp& real() const { return _M_real; } + const _Tp& imag() const { return _M_imag; } +#else + _Tp& real() { return _M_real; } + const _Tp& real() const { return _M_real; } + _Tp& imag() { return _M_imag; } + const _Tp& imag() const { return _M_imag; } +#endif + + void real(_Tp __val) { _M_real = __val; } + + void imag(_Tp __val) { _M_imag = __val; } + + // Assign this complex number with ap_fixed. + // Zero initialize image poarrt, so that `C c; c = 1; c == C(1,0);` + complex<_Tp> &operator=(const _Tp __t) { + _M_real = __t; + _M_imag = _Tp(0); + return *this; + } + + // 26.2.5/1 + // Add ap_fixed to this complex number. + complex<_Tp> &operator+=(const _Tp &__t) { + _M_real += __t; + return *this; + } + + // 26.2.5/3 + // Subtract ap_fixed from this complex number. + complex<_Tp> &operator-=(const _Tp &__t) { + _M_real -= __t; + return *this; + } + + // 26.2.5/5 + // Multiply this complex number by ap_fixed. + complex<_Tp> &operator*=(const _Tp &__t) { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + // Divide this complex number by ap_fixed. + complex<_Tp> &operator/=(const _Tp &__t) { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + // Assign complex number to this complex number. + template + complex<_Tp> &operator=(const complex<_Up> &__z) { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + // Add complex number to this. + template + complex<_Tp> &operator+=(const complex<_Up> &__z) { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + // Subtract complex number from this. + template + complex<_Tp> &operator-=(const complex<_Up> &__z) { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // Multiply this by complex number. + template + complex<_Tp> &operator*=(const complex<_Up> &__z) { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // Divide this by complex number. + template + complex<_Tp> &operator/=(const complex<_Up> &__z) { + complex<_Tp> cj (__z.real(), -__z.imag()); + complex<_Tp> a = (*this) * cj; + complex<_Tp> b = cj * __z; + _M_real = a.real() / b.real(); + _M_imag = a.imag() / b.real(); + return *this; + } + + private: + _Tp _M_real; + _Tp _M_imag; + +}; // class complex > +/* + Specialize std::complex to zero initialization ap_ufixed. + + To reduce the area cost, ap_ufixed is not zero initialized, just like basic + types float or double. However, libstdc++ provides specialization for float, + double and long double, initializing image part to 0 when not specified. + + This has become a difficulty in switching legacy code from these C types to + ap_ufixed. To ease the tranform of legacy code, we have to implement + specialization of std::complex<> for our type. + + As ap_ufixed is a template, it is impossible to specialize only the methods + that causes default initialization of value type in std::complex<>. An + explicit full specialization of the template class has to be done, covering + all the member functions and operators of std::complex<> as specified + in standard 26.2.4 and 26.2.5. +*/ +template +class complex > { + public: + typedef ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> _Tp; + typedef _Tp value_type; + + // 26.2.4/1 + // Constructor without argument + // Default initialize, so that in dataflow, the variable is only written once. + complex() : _M_real(_Tp()), _M_imag(_Tp()) {} + // Constructor with ap_ufixed. + // Zero initialize image part when not specified, so that `C(1) == C(1,0)` + complex(const _Tp &__r, const _Tp &__i = _Tp(0)) + : _M_real(__r), _M_imag(__i) {} + + // Constructor with another complex number + template + complex(const complex<_Up> &__z) : _M_real(__z.real()), _M_imag(__z.imag()) {} + +#if __cplusplus >= 201103L + const _Tp& real() const { return _M_real; } + const _Tp& imag() const { return _M_imag; } +#else + _Tp& real() { return _M_real; } + const _Tp& real() const { return _M_real; } + _Tp& imag() { return _M_imag; } + const _Tp& imag() const { return _M_imag; } +#endif + + void real(_Tp __val) { _M_real = __val; } + + void imag(_Tp __val) { _M_imag = __val; } + + // Assign this complex number with ap_ufixed. + // Zero initialize image poarrt, so that `C c; c = 1; c == C(1,0);` + complex<_Tp> &operator=(const _Tp __t) { + _M_real = __t; + _M_imag = _Tp(0); + return *this; + } + + // 26.2.5/1 + // Add ap_ufixed to this complex number. + complex<_Tp> &operator+=(const _Tp &__t) { + _M_real += __t; + return *this; + } + + // 26.2.5/3 + // Subtract ap_ufixed from this complex number. + complex<_Tp> &operator-=(const _Tp &__t) { + _M_real -= __t; + return *this; + } + + // 26.2.5/5 + // Multiply this complex number by ap_ufixed. + complex<_Tp> &operator*=(const _Tp &__t) { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + // Divide this complex number by ap_ufixed. + complex<_Tp> &operator/=(const _Tp &__t) { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + // Assign complex number to this complex number. + template + complex<_Tp> &operator=(const complex<_Up> &__z) { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + // Add complex number to this. + template + complex<_Tp> &operator+=(const complex<_Up> &__z) { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + // Subtract complex number from this. + template + complex<_Tp> &operator-=(const complex<_Up> &__z) { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // Multiply this by complex number. + template + complex<_Tp> &operator*=(const complex<_Up> &__z) { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // Divide this by complex number. + template + complex<_Tp> &operator/=(const complex<_Up> &__z) { + complex<_Tp> cj (__z.real(), -__z.imag()); + complex<_Tp> a = (*this) * cj; + complex<_Tp> b = cj * __z; + _M_real = a.real() / b.real(); + _M_imag = a.imag() / b.real(); + return *this; + } + + private: + _Tp _M_real; + _Tp _M_imag; + +}; // class complex > + +/* + Non-member operations + These operations are not required by standard in 26.2.6, but libstdc++ + defines them for + float, double or long double's specialization. +*/ +// Compare complex number with ap_fixed. +template +inline bool operator==( + const complex > &__x, + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__y) { + return __x.real() == __y && + __x.imag() == 0; +} + +// Compare ap_fixed with complex number. +template +inline bool operator==( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__x, + const complex > &__y) { + return __x == __y.real() && + 0 == __y.imag(); +} + +// Compare complex number with ap_fixed. +template +inline bool operator!=( + const complex > &__x, + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__y) { + return __x.real() != __y || + __x.imag() != 0; +} + +// Compare ap_fixed with complex number. +template +inline bool operator!=( + const ap_fixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__x, + const complex > &__y) { + return __x != __y.real() || + 0 != __y.imag(); +} + +// Compare complex number with ap_ufixed. +template +inline bool operator==( + const complex > &__x, + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__y) { + return __x.real() == __y && + __x.imag() == 0; +} + +// Compare ap_ufixed with complex number. +template +inline bool operator==( + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__x, + const complex > &__y) { + return __x == __y.real() && + 0 == __y.imag(); +} + +// Compare complex number with ap_ufixed. +template +inline bool operator!=( + const complex > &__x, + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__y) { + return __x.real() != __y || + __x.imag() != 0; +} + +// Compare ap_ufixed with complex number. +template +inline bool operator!=( + const ap_ufixed<_AP_W, _AP_I, _AP_Q, _AP_O, _AP_N> &__x, + const complex > &__y) { + return __x != __y.real() || + 0 != __y.imag(); +} + +} // namespace std + +#endif // ifndef AP_FIXED_SPECIAL_H + + diff --git a/vitis/v2021_2/ap_int.h b/vitis/v2021_2/ap_int.h new file mode 100755 index 00000000..9c3b8a23 --- /dev/null +++ b/vitis/v2021_2/ap_int.h @@ -0,0 +1,397 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_INT_H__ +#define __AP_INT_H__ + +#include "ap_common.h" +#include "ap_int_base.h" +#include "ap_int_ref.h" + +//--------------------------------------------------------------- + +/// Sign Arbitrary Precision Type. +template +struct ap_int : ap_int_base<_AP_W, true> { + typedef ap_int_base<_AP_W, true> Base; + // Constructor + INLINE ap_int() : Base() {} + template + INLINE ap_int(const ap_int<_AP_W2>& op) { + op.checkOverflowCsim(_AP_W, true); + Base::V = op.V; + } + + template + INLINE ap_int(const volatile ap_int<_AP_W2>& op) { + const_cast& >(op).checkOverflowCsim(_AP_W, true); + Base::V = op.V; + } + + template + INLINE ap_int(const ap_uint<_AP_W2>& op) { + op.checkOverflowCsim(_AP_W, true); + Base::V = op.V; + } + + template + INLINE ap_int(const volatile ap_uint<_AP_W2>& op) { + const_cast& >(op).checkOverflowCsim(_AP_W, true); + Base::V = op.V; + } + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_int(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + _AP_UNUSED_PARAM(raw); + } +#endif +#endif + + template + INLINE ap_int(const ap_range_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_int(const ap_bit_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_int(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) + : Base(ref) {} + + template + INLINE ap_int(const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_int(const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_int( + const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_int( + const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_int(const ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + + template + INLINE ap_int( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_int( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_int( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +#define CTOR(TYPE) \ + INLINE ap_int(TYPE val) { \ + this->checkOverflowBaseC(val); \ + Base::V = val; } + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) +#undef CTOR + ap_int(double val) : Base(val) {} + ap_int(float val) : Base(val) {} + ap_int(half val) : Base(val) {} + + // ap_int_base will guess radix if radix is not provided. + INLINE ap_int(const char* s) : Base(s) {} + + INLINE ap_int(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + /* ctor will be used when right is not of proper type. */ +#ifndef _MSC_VER + ap_int &operator=(const ap_int<_AP_W> &op2) = default; +#else + INLINE ap_int &operator=(const ap_int<_AP_W> &op2) { + Base::V = op2.V; + return *this; + } +#endif + + /* cannot bind volatile reference to non-volatile type. */ + INLINE ap_int& operator=(const volatile ap_int<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } + + /* cannot return volatile *this. */ + INLINE void operator=(const ap_int<_AP_W>& op2) volatile { + *((volatile typename Base::Base::DataType *)(&(Base::V))) = op2.V; + } + + INLINE void operator=(const volatile ap_int<_AP_W>& op2) volatile { + *((volatile typename Base::Base::DataType *)(&(Base::V))) = op2.V; + } + +}; // struct ap_int. + +//--------------------------------------------------------------- + +/// Unsigned Arbitrary Precision Type. +template +struct ap_uint : ap_int_base<_AP_W, false> { + typedef ap_int_base<_AP_W, false> Base; + // Constructor + INLINE ap_uint() : Base() {} + template + INLINE ap_uint(const ap_uint<_AP_W2>& op) { + op.checkOverflowCsim(_AP_W, false); + Base::V = op.V; + } + + template + INLINE ap_uint(const ap_int<_AP_W2>& op) { + op.checkOverflowCsim(_AP_W, false); + Base::V = op.V; + } + + template + INLINE ap_uint(const volatile ap_uint<_AP_W2>& op) { + const_cast& >(op).checkOverflowCsim(_AP_W, false); + Base::V = op.V; + } + + template + INLINE ap_uint(const volatile ap_int<_AP_W2>& op) { + const_cast& >(op).checkOverflowCsim(_AP_W, false); + Base::V = op.V; + } + +#ifdef __SYNTHESIS__ +#if ((__clang_major__ != 3) || (__clang_minor__ != 1)) + /// ctor from raw val + INLINE ap_uint(unsigned V __attribute__((bitwidth(_AP_W))), bool raw) { + Base::V = V; + _AP_UNUSED_PARAM(raw); + } +#endif +#endif + + template + INLINE ap_uint(const ap_range_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_uint(const ap_bit_ref<_AP_W2, _AP_S2>& ref) : Base(ref) {} + + template + INLINE ap_uint(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) + : Base(ref) {} + + template + INLINE ap_uint(const ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_uint(const ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_uint( + const volatile ap_fixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, true, _AP_Q2, _AP_O2, _AP_N2>)op) {} + + template + INLINE ap_uint( + const volatile ap_ufixed<_AP_W2, _AP_I2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base((ap_fixed_base<_AP_W2, _AP_I2, false, _AP_Q2, _AP_O2, _AP_N2>)op) { + } + + template + INLINE ap_uint(const ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + + template + INLINE ap_uint( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_uint( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + + template + INLINE ap_uint( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) + : Base(op) {} + +#define CTOR(TYPE) \ + INLINE ap_uint(TYPE val) { \ + this->checkOverflowBaseC(val); \ + Base::V = val; } + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) +#undef CTOR + ap_uint(double val) : Base(val) {} + ap_uint(float val) : Base(val) {} + ap_uint(half val) : Base(val) {} + + // ap_int_base will guess radix if radix is not provided. + INLINE ap_uint(const char* s) : Base(s) {} + + INLINE ap_uint(const char* s, signed char rd) : Base(s, rd) {} + + // Assignment + /* XXX ctor will be used when right is not of proper type. */ + +#ifndef _MSC_VER + ap_uint &operator=(const ap_uint<_AP_W> &op2) = default; +#else + INLINE ap_uint& operator=(const ap_uint<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } +#endif + + + /* cannot bind volatile reference to non-volatile type. */ + INLINE ap_uint& operator=(const volatile ap_uint<_AP_W>& op2) { + Base::V = op2.V; + return *this; + } + + /* cannot return volatile *this. */ + INLINE void operator=(const ap_uint<_AP_W>& op2) volatile { + *((volatile typename Base::Base::DataType *)(&(Base::V))) = op2.V; + } + + INLINE void operator=(const volatile ap_uint<_AP_W>& op2) volatile { + *((volatile typename Base::Base::DataType *)(&(Base::V))) = op2.V; + } + +}; // struct ap_uint. + +#define ap_bigint ap_int +#define ap_biguint ap_uint + +#if !defined(__SYNTHESIS__) && (defined(SYSTEMC_H) || defined(SYSTEMC_INCLUDED)) +// XXX sc_trace overload for ap_fixed is already included in +// "ap_sysc/ap_sc_extras.h", so do not define in synthesis. +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, const ap_int<_AP_W>& op, + const std::string& name) { + if (tf) tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} + +template +INLINE void sc_trace(sc_core::sc_trace_file* tf, const ap_uint<_AP_W>& op, + const std::string& name) { + if (tf) tf->trace(sc_dt::sc_lv<_AP_W>(op.to_string(2).c_str()), name); +} +#endif // System C sim + +#include "ap_int_special.h" + +#endif // ifndef __AP_INT_H__ else + +// FIXME user should include ap_fixed.h when using ap_fixed. +// to avoid circular inclusion, must check whether this is required by +// ap_fixed.h +#ifndef __AP_FIXED_H__ +#include "ap_fixed.h" +#endif + +// -*- cpp -*- diff --git a/vitis/v2021_2/ap_int_base.h b/vitis/v2021_2/ap_int_base.h new file mode 100755 index 00000000..07d26311 --- /dev/null +++ b/vitis/v2021_2/ap_int_base.h @@ -0,0 +1,2187 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_INT_BASE_H__ +#define __AP_INT_BASE_H__ + +#ifndef __AP_INT_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" +#else +#include "ap_common.h" +#ifndef __SYNTHESIS__ +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic ignored "-Wint-in-bool-context" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#endif +#include "hls_half.h" +#include +#include +#endif + +/* ---------------------------------------------------------------- + * ap_int_base: AutoPilot integer/Arbitrary precision integer. + * ---------------------------------------------------------------- + */ + +/* helper trait. Selecting the smallest C type that can hold the value, + * return 64 bit C type if not possible. + */ +template +struct retval; + +// at least 64 bit +template +struct retval<_AP_N, true> { + typedef ap_slong Type; +}; + +template +struct retval<_AP_N, false> { + typedef ap_ulong Type; +}; + +// at least 8 bit +template <> +struct retval<1, true> { + typedef signed char Type; +}; + +template <> +struct retval<1, false> { + typedef unsigned char Type; +}; + +// at least 16 bit +template <> +struct retval<2, true> { + typedef short Type; +}; + +template <> +struct retval<2, false> { + typedef unsigned short Type; +}; + +// at least 32 bit +template <> +struct retval<3, true> { + typedef long Type; +}; + +template <> +struct retval<3, false> { + typedef unsigned long Type; +}; + +template <> +struct retval<4, true> { + typedef long Type; +}; + +template <> +struct retval<4, false> { + typedef unsigned long Type; +}; + +// trait for letting base class to return derived class. +// Notice that derived class template is incomplete, and we cannot use +// the member of the derived class. +template +struct _ap_int_factory; +template +struct _ap_int_factory<_AP_W2,true> { typedef ap_int<_AP_W2> type; }; +template +struct _ap_int_factory<_AP_W2,false> { typedef ap_uint<_AP_W2> type; }; + +template +struct ap_int_base : public _AP_ROOT_TYPE<_AP_W, _AP_S> { + private: + INLINE int countLeadingOnes() const { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + return (Base::V).countLeadingOnes(); +#else + // TODO: to be filled for synthesis + return 0; +#endif + } // countLeadingOnes + + public: + typedef _AP_ROOT_TYPE<_AP_W, _AP_S> Base; + + /* ap_int_base<_AP_W, _AP_S, true> + * typedef typename retval<(_AP_W + 7) / 8, _AP_S>::Type RetType; + * + * ap_int_base<_AP_W, _AP_S, false> + * typedef typename retval<8, _AP_S>::Type RetType; + */ + typedef typename retval::Type RetType; + + static const int width = _AP_W; + static const bool sign_flag = _AP_S; + + template + struct RType { + enum { + mult_w = _AP_W + _AP_W2, + mult_s = _AP_S || _AP_S2, + plus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, + div_w = _AP_W + _AP_S2, + div_s = _AP_S || _AP_S2, + mod_w = AP_MIN(_AP_W, _AP_W2 + (!_AP_S2 && _AP_S)), + mod_s = _AP_S, + logic_w = AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + + + typedef ap_int_base mult_base; + typedef ap_int_base plus_base; + typedef ap_int_base minus_base; + typedef ap_int_base logic_base; + typedef ap_int_base div_base; + typedef ap_int_base mod_base; + typedef ap_int_base<_AP_W, _AP_S> arg1_base; + + typedef typename _ap_int_factory::type mult; + typedef typename _ap_int_factory::type plus; + typedef typename _ap_int_factory::type minus; + typedef typename _ap_int_factory::type logic; + typedef typename _ap_int_factory::type div; + typedef typename _ap_int_factory::type mod; + typedef typename _ap_int_factory<_AP_W, _AP_S>::type arg1; + typedef bool reduce; + }; + + /* Constructors. + * ---------------------------------------------------------------- + */ + /// default ctor + INLINE ap_int_base() { + /* + #ifdef __SC_COMPATIBLE__ + Base::V = 0; + #endif + */ + } + + /// copy ctor + template + INLINE ap_int_base(const ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + + /// volatile copy ctor + template + INLINE ap_int_base(const volatile ap_int_base<_AP_W2, _AP_S2>& op) { + Base::V = op.V; + } + +// XXX C++11 feature. +// The explicit specifier specifies that a constructor or conversion function +// (since C++11) doesn't allow implicit conversions or copy-initialization. +// ap_int_base x = 1; +// ap_int_base foo() { return 1; } +// but allows +// ap_int_base x(1); +// ap_int_base y {1}; + +/// from all c types. +#define CTOR_FROM_INT(Type, Size, Signed) \ + INLINE ap_int_base(const Type op) { Base::V = op; } + + CTOR_FROM_INT(bool, 1, false) + CTOR_FROM_INT(char, 8, CHAR_IS_SIGNED) + CTOR_FROM_INT(signed char, 8, true) + CTOR_FROM_INT(unsigned char, 8, false) + CTOR_FROM_INT(short, _AP_SIZE_short, true) + CTOR_FROM_INT(unsigned short, _AP_SIZE_short, false) + CTOR_FROM_INT(int, _AP_SIZE_int, true) + CTOR_FROM_INT(unsigned int, _AP_SIZE_int, false) + CTOR_FROM_INT(long, _AP_SIZE_long, true) + CTOR_FROM_INT(unsigned long, _AP_SIZE_long, false) + CTOR_FROM_INT(ap_slong, _AP_SIZE_ap_slong, true) + CTOR_FROM_INT(ap_ulong, _AP_SIZE_ap_slong, false) +#undef CTOR_FROM_INT + + /// ctor from half. + // TODO optimize + INLINE ap_int_base(half op) { + ap_int_base<_AP_W, _AP_S> t((float)op); + Base::V = t.V; + } + + /// ctor from float. + INLINE ap_int_base(float op) { + const int BITS = FLOAT_MAN + FLOAT_EXP + 1; + ap_int_base reg; + reg.V = floatToRawBits(op); + bool is_neg = _AP_ROOT_op_get_bit(reg.V, BITS - 1); + + ap_int_base exp = 0; + exp.V = _AP_ROOT_op_get_range(reg.V, FLOAT_MAN, BITS - 2); + exp = exp - FLOAT_BIAS; + + ap_int_base man; + man.V = _AP_ROOT_op_get_range(reg.V, 0, FLOAT_MAN - 1); + // check for NaN + _AP_WARNING(exp == ((unsigned char)(FLOAT_BIAS + 1)) && man.V != 0, + "assign NaN to ap integer value"); + // set leading 1. + man.V = _AP_ROOT_op_set_bit(man.V, FLOAT_MAN, 1); + //if (is_neg) man = -man; + + if ((reg.V & 0x7ffffffful) == 0) { + Base::V = 0; + } else { + int sh_amt = FLOAT_MAN - exp.V; + if (sh_amt == 0) { + Base::V = man.V; + } else if (sh_amt > 0) { + if (sh_amt < FLOAT_MAN + 2) { + ap_int_base man_shift; + man_shift.V = (man.V >> sh_amt); +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + bool print = man_shift.checkOverflowCsim(_AP_W, _AP_S, false); + if(print) { + AP_WARNING("overflow", +op, "ap_int", _AP_W); + } +#endif + Base::V = man_shift.V; + } else { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + AP_WARNING("overflow", +op, "ap_int", _AP_W); +#endif + Base::V = 0; + } + } else { + sh_amt = -sh_amt; + if (sh_amt < _AP_W) { + Base::V = man.V; + Base::V <<= sh_amt; + } else { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + AP_WARNING("overflow", +op, "ap_int", _AP_W); +#endif + Base::V = 0; + } + } + } + if (is_neg) *this = -(*this); + } + + /// ctor from double. + INLINE ap_int_base(double op) { + const int BITS = DOUBLE_MAN + DOUBLE_EXP + 1; + ap_int_base reg; + reg.V = doubleToRawBits(op); + bool is_neg = _AP_ROOT_op_get_bit(reg.V, BITS - 1); + + ap_int_base exp = 0; + exp.V = _AP_ROOT_op_get_range(reg.V, DOUBLE_MAN, BITS - 2); + exp = exp - DOUBLE_BIAS; + + ap_int_base man; + man.V = _AP_ROOT_op_get_range(reg.V, 0, DOUBLE_MAN - 1); + // check for NaN + _AP_WARNING(exp == ((unsigned char)(DOUBLE_BIAS + 1)) && man.V != 0, + "assign NaN to ap integer value"); + // set leading 1. + man.V = _AP_ROOT_op_set_bit(man.V, DOUBLE_MAN, 1); + //if (is_neg) man = -man; + + if ((reg.V & 0x7fffffffffffffffull) == 0) { + Base::V = 0; + } else { + int sh_amt = DOUBLE_MAN - exp.V; + if (sh_amt == 0) { + Base::V = man.V; + } else if (sh_amt > 0) { + if (sh_amt < DOUBLE_MAN + 2) { + ap_int_base man_shift; + man_shift.V = (man.V >> sh_amt); +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + bool print = man_shift.checkOverflowCsim(_AP_W, _AP_S, false); + if(print) { + AP_WARNING("overflow", +op, "ap_int", _AP_W); + } +#endif + Base::V = man_shift.V; + } else { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + AP_WARNING("overflow", +op, "ap_int", _AP_W); +#endif + Base::V = 0; + } + } else { + sh_amt = -sh_amt; + if (sh_amt < _AP_W) { + Base::V = man.V; + Base::V <<= sh_amt; + } else { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + AP_WARNING("overflow", +op, "ap_int", _AP_W); +#endif + Base::V = 0; + } + } + } + if (is_neg) *this = -(*this); + } + + /// from higer rank type. + template + INLINE ap_int_base( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + op.checkOverflowCsimFix(_AP_W, _AP_S); + Base::V = op.to_ap_int_base().V; + } + + template + INLINE ap_int_base(const ap_range_ref<_AP_W2, _AP_S2>& ref) { + Base::V = (ref.get()).V; + } + + template + INLINE ap_int_base(const ap_bit_ref<_AP_W2, _AP_S2>& ref) { + Base::V = ref.operator bool(); + } + + template + INLINE ap_int_base(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& ref) { + const ap_int_base::_AP_WR, + false> + tmp = ref.get(); + Base::V = tmp.V; + } + + /* radix has default value in set */ + +#ifndef __SYNTHESIS__ + INLINE ap_int_base(const char* s, signed char rd = 0) { + if (rd == 0) + rd = guess_radix(s); + unsigned int length = strlen(s); + Base::V.fromString(s, length, rd); + } +#else + // XXX __builtin_bit_from_string(...) requires const C string and radix. + INLINE ap_int_base(const char* s) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), 10, _AP_W, _AP_S, + AP_TRN, AP_WRAP, 0, _AP_C99); + Base::V = t; + } + INLINE ap_int_base(const char* s, signed char rd) { + typeof(Base::V) t; + _ssdm_string2bits((void*)(&t), (const char*)(s), rd, _AP_W, _AP_S, + AP_TRN, AP_WRAP, 0, _AP_C99); + Base::V = t; + } +#endif + + template + INLINE ap_int_base( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + Base::V = (val.get()).V; + } + + template + INLINE ap_int_base( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + Base::V = val.operator bool(); + } + + INLINE ap_int_base read() volatile { + /*AP_DEBUG(printf("call read %d\n", Base::V););*/ + ap_int_base ret; + ret.V = Base::V; + return ret; + } + + INLINE void write(const ap_int_base<_AP_W, _AP_S>& op2) volatile { + /*AP_DEBUG(printf("call write %d\n", op2.V););*/ + *((volatile typename Base::DataType *)(&(Base::V))) = op2.V; + } + + /* Another form of "write".*/ + template + INLINE void operator=( + const volatile ap_int_base<_AP_W2, _AP_S2>& op2) volatile { + *((volatile typename Base::DataType *)(&(Base::V))) = op2.V; + } + + INLINE void operator=( + const volatile ap_int_base<_AP_W, _AP_S>& op2) volatile { + *((volatile typename Base::DataType *)(&(Base::V))) = op2.V; + } + + template + INLINE void operator=(const ap_int_base<_AP_W2, _AP_S2>& op2) volatile { + *((volatile typename Base::DataType *)(&(Base::V))) = op2.V; + } + + INLINE void operator=(const ap_int_base<_AP_W, _AP_S>& op2) volatile { + *((volatile typename Base::DataType *)(&(Base::V))) = op2.V; + } + + template + INLINE ap_int_base& operator=( + const volatile ap_int_base<_AP_W2, _AP_S2>& op2) { + Base::V = op2.V; + return *this; + } + + template + INLINE ap_int_base& operator=(const ap_int_base<_AP_W2, _AP_S2>& op2) { + Base::V = op2.V; + return *this; + } + + INLINE ap_int_base& operator=(const volatile ap_int_base<_AP_W, _AP_S>& op2) { + Base::V = op2.V; + return *this; + } + +#ifndef _MSC_VER + ap_int_base& operator=(const ap_int_base<_AP_W, _AP_S>& op2) = default; +#else + INLINE ap_int_base& operator=(const ap_int_base<_AP_W, _AP_S>& op2) { + Base::V = op2.V; + return *this; + } +#endif + +#define ASSIGN_OP_FROM_INT(Type, Size, Signed) \ + INLINE ap_int_base& operator=(Type op) { \ + Base::V = op; \ + return *this; \ + } + + ASSIGN_OP_FROM_INT(bool, 1, false) + ASSIGN_OP_FROM_INT(char, 8, CHAR_IS_SIGNED) + ASSIGN_OP_FROM_INT(signed char, 8, true) + ASSIGN_OP_FROM_INT(unsigned char, 8, false) + ASSIGN_OP_FROM_INT(short, _AP_SIZE_short, true) + ASSIGN_OP_FROM_INT(unsigned short, _AP_SIZE_short, false) + ASSIGN_OP_FROM_INT(int, _AP_SIZE_int, true) + ASSIGN_OP_FROM_INT(unsigned int, _AP_SIZE_int, false) + ASSIGN_OP_FROM_INT(long, _AP_SIZE_long, true) + ASSIGN_OP_FROM_INT(unsigned long, _AP_SIZE_long, false) + ASSIGN_OP_FROM_INT(ap_slong, _AP_SIZE_ap_slong, true) + ASSIGN_OP_FROM_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef ASSIGN_OP_FROM_INT + + template + INLINE ap_int_base& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& op2) { + Base::V = (bool)op2; + return *this; + } + + template + INLINE ap_int_base& operator=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + Base::V = (ap_int_base<_AP_W2, false>(op2)).V; + return *this; + } + + template + INLINE ap_int_base& operator=( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& op2) { + Base::V = op2.get().V; + return *this; + } + + template + INLINE ap_int_base& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = op.to_ap_int_base().V; + return *this; + } + + template + INLINE ap_int_base& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = (bool)op; + return *this; + } + + template + INLINE ap_int_base& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& op) { + Base::V = ((const ap_int_base<_AP_W2, false>)(op)).V; + return *this; + } + + // FIXME: UG902 has clearly required user to use to_int() to convert to built-in + // types, but this implicit conversion is relied on in hls_cordic.h and hls_rsr.h. + // For example: + // int d_exp = fps_x.exp - fps_y.exp; + INLINE operator RetType() const { return (RetType)(Base::V); } + + /* Explicit conversions to C types. + * ---------------------------------------------------------------- + */ + INLINE bool to_bool() const { return (bool)(Base::V); } + INLINE char to_char() const { return (char)(Base::V); } + INLINE signed char to_schar() const { return (signed char)(Base::V); } + INLINE unsigned char to_uchar() const { return (unsigned char)(Base::V); } + INLINE short to_short() const { return (short)(Base::V); } + INLINE unsigned short to_ushort() const { return (unsigned short)(Base::V); } + INLINE int to_int() const { return (int)(Base::V); } + INLINE unsigned to_uint() const { return (unsigned)(Base::V); } + INLINE long to_long() const { return (long)(Base::V); } + INLINE unsigned long to_ulong() const { return (unsigned long)(Base::V); } + INLINE ap_slong to_int64() const { return (ap_slong)(Base::V); } + INLINE ap_ulong to_uint64() const { return (ap_ulong)(Base::V); } + INLINE half to_half() const { return (float)(Base::V); } + INLINE float to_float() const { return (float)(Base::V); } + INLINE double to_double() const { return (double)(Base::V); } + + // TODO decide if user-defined conversion should be provided. +#if 0 + INLINE operator char() const { return (char)(Base::V); } + INLINE operator signed char() const { return (signed char)(Base::V); } + INLINE operator unsigned char() const { return (unsigned char)(Base::V); } + INLINE operator short() const { return (short)(Base::V); } + INLINE operator unsigned short() const { return (unsigned short)(Base::V); } + INLINE operator int() const { return (int)(Base::V); } + INLINE operator unsigned int () const { return (unsigned)(Base::V); } + INLINE operator long () const { return (long)(Base::V); } + INLINE operator unsigned long () const { return (unsigned long)(Base::V); } + INLINE operator ap_slong () { return (ap_slong)(Base::V); } + INLINE operator ap_ulong () { return (ap_ulong)(Base::V); } +#endif + + /* Helper methods. + ---------------------------------------------------------------- + */ + /* we cannot call a non-volatile function on a volatile instance. + * but calling a volatile function is ok. + * XXX deleted non-volatile version. + */ + INLINE int length() const volatile { return _AP_W; } + + /*Return true if the value of ap_int_base instance is zero*/ + INLINE bool iszero() const { return Base::V == 0; } + + /*Return true if the value of ap_int_base instance is zero*/ + INLINE bool is_zero() const { return Base::V == 0; } + + /* x < 0 */ + INLINE bool sign() const { + if (_AP_S && + _AP_ROOT_op_get_bit(Base::V, _AP_W - 1)) + return true; + else + return false; + } + + /* x[i] = 0 */ + INLINE void clear(int i) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 0); + } + + /* x[i] = !x[i]*/ + INLINE void invert(int i) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + bool val = _AP_ROOT_op_get_bit(Base::V, i); + if (val) + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 0); + else + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 1); + } + + INLINE bool test(int i) const { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + return _AP_ROOT_op_get_bit(Base::V, i); + } + + // Get self. For ap_concat_ref expansion. + INLINE ap_int_base& get() { return *this; } + + // Set the ith bit into 1 + INLINE void set(int i) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + Base::V = _AP_ROOT_op_set_bit(Base::V, i, 1); + } + + // Set the ith bit into v + INLINE void set(int i, bool v) { + AP_ASSERT(i >= 0 && i < _AP_W, "position out of range"); + Base::V = _AP_ROOT_op_set_bit(Base::V, i, v); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_int_base object n places to the left + INLINE ap_int_base& lrotate(int n) { + AP_ASSERT(n >= 0 && n < _AP_W, "shift value out of range"); + // TODO unify this. +#ifdef __SYNTHESIS__ + typeof(Base::V) l_p = Base::V << n; + typeof(Base::V) r_p = Base::V >> (_AP_W - n); + Base::V = l_p | r_p; +#else + Base::V.lrotate(n); +#endif + return *this; + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_int_base object n places to the right + INLINE ap_int_base& rrotate(int n) { + AP_ASSERT(n >= 0 && n < _AP_W, "shift value out of range"); + // TODO unify this. +#ifdef __SYNTHESIS__ + typeof(Base::V) l_p = Base::V << (_AP_W - n); + typeof(Base::V) r_p = Base::V >> n; + Base::V = l_p | r_p; +#else + Base::V.rrotate(n); +#endif + return *this; + } + + // Reverse the contents of ap_int_base instance. + // I.e. LSB becomes MSB and vise versa. + INLINE ap_int_base& reverse() { + Base::V = _AP_ROOT_op_get_range(Base::V, _AP_W - 1, 0); + return *this; + } + + // Set the ith bit into v + INLINE void set_bit(int i, bool v) { + Base::V = _AP_ROOT_op_set_bit(Base::V, i, v); + } + + // Get the value of ith bit + INLINE bool get_bit(int i) const { + return (bool)_AP_ROOT_op_get_bit(Base::V, i); + } + + // complements every bit + INLINE void b_not() { Base::V = ~Base::V; } + + template + INLINE void checkOverflowBaseC(T val) { +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + if(val == 0) return; + int byte_size = sizeof(T); + int zeros = 0; + int valid_width = 0; + if(_AP_S) { + if(byte_size <= 4) { + unsigned int tmp = val; + if(val < 0) { + tmp = ~val; + } + zeros = __builtin_clz(tmp); + valid_width = 32 - zeros; + } else { + uint64_t tmp = val; + if(val < 0) { + tmp = ~val + 1; + } + unsigned long tmp1 = tmp >> 32; + zeros = __builtin_clz(tmp1); + valid_width = 32 - zeros; + if(valid_width > 0) { + valid_width += 32; + } else { + tmp1 = tmp; + zeros = __builtin_clz(tmp1); + valid_width = 32 - zeros; + } + } + if(valid_width > _AP_W - 1) { + AP_WARNING("overflow", +val, "ap_int", _AP_W); + } + } else { + if(val < 0) { + AP_WARNING("negative", +val, "ap_uint", _AP_W); + } else { + if(byte_size <= 4) { + unsigned int tmp = val; + if(val < 0) { + tmp = ~val + 1; + } + zeros = __builtin_clz(tmp); + valid_width = 32 - zeros; + } else { + unsigned long tmp = val; + if(val < 0) { + tmp = ~val + 1; + } + unsigned long tmp1 = tmp >> 32; + zeros = __builtin_clz(tmp1); + valid_width = 32 - zeros; + if(valid_width > 0) { + valid_width += 32; + } else { + tmp1 = tmp; + zeros = __builtin_clz(tmp1); + valid_width = 32 - zeros; + } + } + if(valid_width > _AP_W) { + AP_WARNING("overflow", +val, "ap_uint", _AP_W); + } + } + } +#else + (void)val; +#endif + return; + } + + INLINE bool checkOverflowCsim(int _ap_w2, bool _ap_s2, + bool print = true) const { + #if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) + int ap_w_l = _ap_w2; + bool ap_s_l = _ap_s2; + int ap_w_r = _AP_W; + bool ap_s_r = _AP_S; + int i = ap_w_r - 1; + int count = 0; + int valid_width = 0; + int target_width = ap_w_l; + if (ap_s_l == true) { + target_width = ap_w_l - 1; + } + if (ap_s_r == true) { + bool sign = this->V.get_bit(i); + if (sign == true && ap_s_l == false) { + if(print) { + AP_WARNING("negative", this->V.to_int64(), "ap_uint", ap_w_l); + } + return 1; + } + if(sign == 1) { + count = countLeadingOnes() - 1; + } else { + count = countLeadingZeros() - 1; + } + valid_width = ap_w_r - count - 1; + if(valid_width - target_width > 0) { + if(print) { + AP_WARNING("overflow", this->V.to_int64(), "ap_int", ap_w_l); + } + return 1; + } + } else { + count = countLeadingZeros(); + valid_width = ap_w_r - count; + if(valid_width - target_width > 0) { + if(print) { + AP_WARNING("overflow", this->V.to_int64(), "ap_uint", ap_w_l); + } + return 1; + } + } + #else + (void)_ap_w2; + (void)_ap_s2; + (void)print; + #endif + return 0; + } + +#if (defined __AP_INT_WARNING__) && (!defined __SYNTHESIS__) +#define OP_ASSIGN_AP(Sym, Sym2, Rty) \ + template \ + INLINE ap_int_base& operator Sym(const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base lhs(this); \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base rhs(op2); \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base ret; \ + ret.V = Base::V Sym2 op2.V; \ + ret.checkOverflowCsim(_AP_W, _AP_S); \ + Base::V Sym op2.V; \ + return *this; \ + } +#else +#define OP_ASSIGN_AP(Sym, Sym2, Rty) \ + template \ + INLINE ap_int_base& operator Sym(const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + Base::V Sym op2.V; \ + return *this; \ + } +#endif + + /* Arithmetic assign. + * ---------------------------------------------------------------- + */ + OP_ASSIGN_AP(*=, *, mult) + OP_ASSIGN_AP(+=, +, plus) + OP_ASSIGN_AP(-=, -, minus) + OP_ASSIGN_AP(/=, /, div) + OP_ASSIGN_AP(%=, %, mod) +#undef OP_ASSIGN_AP + + /* Bitwise assign: and, or, xor. + * ---------------------------------------------------------------- + */ +#define OP_ASSIGN_AP_CHK(Sym) \ + template \ + INLINE ap_int_base& operator Sym(const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + _AP_WARNING((_AP_W != _AP_W2), \ + "Bitsize mismatch for ap_[u]int" #Sym "ap_[u]int."); \ + Base::V Sym op2.V; \ + return *this; \ + } + OP_ASSIGN_AP_CHK(&=) + OP_ASSIGN_AP_CHK(|=) + OP_ASSIGN_AP_CHK(^=) +#undef OP_ASSIGN_AP_CHK + + /* Prefix increment, decrement. + * ---------------------------------------------------------------- + */ + INLINE ap_int_base& operator++() { + operator+=((ap_int_base<1, false>)1); + return *this; + } + INLINE ap_int_base& operator--() { + operator-=((ap_int_base<1, false>)1); + return *this; + } + + /* Postfix increment, decrement + * ---------------------------------------------------------------- + */ + INLINE const typename RType<_AP_W,_AP_S>::arg1 operator++(int) { + ap_int_base t = *this; + operator+=((ap_int_base<1, false>)1); + return t; + } + INLINE const typename RType<_AP_W,_AP_S>::arg1 operator--(int) { + ap_int_base t = *this; + operator-=((ap_int_base<1, false>)1); + return t; + } + + /* Unary arithmetic. + * ---------------------------------------------------------------- + */ + INLINE typename RType<_AP_W,_AP_S>::arg1 operator+() const { return *this; } + + // TODO used to be W>64 only... need check. + INLINE typename RType<1, false>::minus operator-() const { + return ap_int_base<1, false>(0) - *this; + } + + /* Not (!) + * ---------------------------------------------------------------- + */ + INLINE bool operator!() const { return Base::V == 0; } + + /* Bitwise (arithmetic) unary: complement + ---------------------------------------------------------------- + */ + // XXX different from Mentor's ac_int! + INLINE typename RType<_AP_W,_AP_S>::arg1 operator~() const { + ap_int_base<_AP_W, _AP_S> r; + r.V = ~Base::V; + return r; + } + + /* Shift (result constrained by left operand). + * ---------------------------------------------------------------- + */ + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator<<(const ap_int_base<_AP_W2, true>& op2) const { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator>>(sh); + } else + return operator<<(sh); + } + + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator<<(const ap_int_base<_AP_W2, false>& op2) const { + ap_int_base r; + r.V = Base::V << op2.to_uint(); + return r; + } + + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator>>(const ap_int_base<_AP_W2, true>& op2) const { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator<<(sh); + } + return operator>>(sh); + } + + template + INLINE typename RType<_AP_W,_AP_S>::arg1 operator>>(const ap_int_base<_AP_W2, false>& op2) const { + ap_int_base r; + r.V = Base::V >> op2.to_uint(); + return r; + } + + // FIXME we standalone operator>> for ap_int_base and ap_range_ref. +#if 0 + template + INLINE ap_int_base operator<<(const ap_range_ref<_AP_W2, _AP_S2>& op2) const { + return *this << (op2.operator ap_int_base<_AP_W2, false>()); + } + + template + INLINE ap_int_base operator>>(const ap_range_ref<_AP_W2, _AP_S2>& op2) const { + return *this >> (op2.operator ap_int_base<_AP_W2, false>()); + } +#endif + + /* Shift assign + * ---------------------------------------------------------------- + */ + template + INLINE ap_int_base& operator<<=(const ap_int_base<_AP_W2, true>& op2) { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator>>=(sh); + } else + return operator<<=(sh); + } + + template + INLINE ap_int_base& operator<<=(const ap_int_base<_AP_W2, false>& op2) { + Base::V <<= op2.to_uint(); + return *this; + } + + template + INLINE ap_int_base& operator>>=(const ap_int_base<_AP_W2, true>& op2) { + bool isNeg = _AP_ROOT_op_get_bit(op2.V, _AP_W2 - 1); + ap_int_base<_AP_W2, false> sh = op2; + if (isNeg) { + sh = -op2; + return operator<<=(sh); + } + return operator>>=(sh); + } + + template + INLINE ap_int_base& operator>>=(const ap_int_base<_AP_W2, false>& op2) { + Base::V >>= op2.to_uint(); + return *this; + } + + // FIXME we standalone operator>> for ap_int_base and ap_range_ref. +#if 0 + template + INLINE ap_int_base& operator<<=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return *this <<= (op2.operator ap_int_base<_AP_W2, false>()); + } + template + INLINE ap_int_base& operator>>=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return *this >>= (op2.operator ap_int_base<_AP_W2, false>()); + } +#endif + + /* Equality and Relational. + * ---------------------------------------------------------------- + */ + template + INLINE bool operator==(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V == op2.V; + } + template + INLINE bool operator!=(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return !(Base::V == op2.V); + } + template + INLINE bool operator<(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V < op2.V; + } + template + INLINE bool operator>=(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V >= op2.V; + } + template + INLINE bool operator>(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V > op2.V; + } + template + INLINE bool operator<=(const ap_int_base<_AP_W2, _AP_S2>& op2) const { + return Base::V <= op2.V; + } + + /* Bit and Part Select + * ---------------------------------------------------------------- + */ + INLINE ap_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) { + _AP_ERROR(Hi >= _AP_W, "Hi(%d)out of bound(%d) in range()", Hi, _AP_W); + _AP_ERROR(Lo >= _AP_W, "Lo(%d)out of bound(%d) in range()", Lo, _AP_W); + return ap_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + // This is a must to strip constness to produce reference type. + INLINE ap_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) const { + _AP_ERROR(Hi >= _AP_W, "Hi(%d)out of bound(%d) in range()", Hi, _AP_W); + _AP_ERROR(Lo >= _AP_W, "Lo(%d)out of bound(%d) in range()", Lo, _AP_W); + return ap_range_ref<_AP_W, _AP_S>(const_cast(this), Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> range( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE ap_range_ref<_AP_W, _AP_S> range() { + return this->range(_AP_W - 1, 0); + } + + INLINE ap_range_ref<_AP_W, _AP_S> range() const { + return this->range(_AP_W - 1, 0); + } + + INLINE ap_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) { + return this->range(Hi, Lo); + } + + INLINE ap_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) const { + return this->range(Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S> operator()( + const ap_int_base<_AP_W2, _AP_S2>& HiIdx, + const ap_int_base<_AP_W3, _AP_S3>& LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + +#if 0 + template + INLINE ap_int_base slice() const { + AP_ASSERT(Hi >= Lo && Hi < _AP_W && Lo < _AP_W, "Out of bounds in slice()"); + ap_int_base tmp ; + tmp.V = _AP_ROOT_op_get_range(Base::V, Lo, Hi); + return tmp; + } + + INLINE ap_bit_ref<_AP_W,_AP_S> operator [] ( unsigned int uindex) { + AP_ASSERT(uindex < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W,_AP_S> bvh( this, uindex ); + return bvh; + } +#endif + + INLINE ap_bit_ref<_AP_W, _AP_S> operator[](int index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index); + return bvh; + } + + template + INLINE ap_bit_ref<_AP_W, _AP_S> operator[]( + const ap_int_base<_AP_W2, _AP_S2>& index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index.to_int()); + return bvh; + } + + INLINE bool operator[](int index) const { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> br(this, index); + return br.to_bool(); + } + template + INLINE bool operator[](const ap_int_base<_AP_W2, _AP_S2>& index) const { + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> br(this, index.to_int()); + return br.to_bool(); + } + + INLINE ap_bit_ref<_AP_W, _AP_S> bit(int index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index); + return bvh; + } + template + INLINE ap_bit_ref<_AP_W, _AP_S> bit( + const ap_int_base<_AP_W2, _AP_S2>& index) { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> bvh(this, index.to_int()); + return bvh; + } + + INLINE bool bit(int index) const { + AP_ASSERT(index >= 0, "Attempting to read bit with negative index"); + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W, _AP_S> br(this, index); + return br.to_bool(); + } + + template + INLINE bool bit(const ap_int_base<_AP_W2, _AP_S2>& index) const { + return bit(index.to_int()); + } + +#if 0 + template + INLINE bool operator[](_AP_T index) const { + AP_ASSERT(index < _AP_W, "Attempting to read bit beyond MSB"); + ap_bit_ref<_AP_W,_AP_S> br = operator[](index); + return br.to_bool(); + } +#endif + + // Count the number of zeros from the most significant bit + // to the first one bit. + INLINE int countLeadingZeros() const { +#ifdef __SYNTHESIS__ + if (_AP_W <= 32) { + ap_int_base<32, false> t(-1UL), x; + x.V = _AP_ROOT_op_get_range(this->V, _AP_W - 1, 0); // reverse + t.V = _AP_ROOT_op_set_range(t.V, 0, _AP_W - 1, x.V); + return __builtin_ctz(t.V); // count trailing zeros. + } else if (_AP_W <= 64) { + ap_int_base<64, false> t(-1ULL); + ap_int_base<64, false> x; + x.V = _AP_ROOT_op_get_range(this->V, _AP_W - 1, 0); // reverse + t.V = _AP_ROOT_op_set_range(t.V, 0, _AP_W - 1, x.V); + return __builtin_ctzll(t.V); // count trailing zeros. + } else { + enum { __N = (_AP_W + 63) / 64 }; + int NZeros = 0; + int i = 0; + bool hitNonZero = false; + for (i = 0; i < __N - 1; ++i) { + ap_int_base<64, false> t; + t.V = _AP_ROOT_op_get_range(this->V, _AP_W - i * 64 - 64, _AP_W - i * 64 - 1); + NZeros += hitNonZero ? 0 : __builtin_clzll(t.V); // count leading zeros. + hitNonZero |= (t.V != 0); + } + if (!hitNonZero) { + ap_int_base<64, false> t(-1ULL); + enum { REST = (_AP_W - 1) % 64 }; + ap_int_base<64, false> x; + x.V = _AP_ROOT_op_get_range(this->V, 0, REST); + t.V = _AP_ROOT_op_set_range(t.V, 63 - REST, 63, x.V); + NZeros += __builtin_clzll(t.V); + } + return NZeros; + } +#else + return (Base::V).countLeadingZeros(); +#endif + } // countLeadingZeros + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + concat(const ap_int_base<_AP_W2, _AP_S2>& a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + concat(ap_int_base<_AP_W2, _AP_S2>& a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, a2); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(ap_range_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >(*this, a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + const_cast&>(*this), a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(const ap_bit_ref<_AP_W2, _AP_S2> &a2) const { + return ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(ap_bit_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, a2); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + const_cast&>(*this), + const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<_AP_W, ap_int_base, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >(*this, + a2); + } + + template + INLINE ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &a2) const { + return ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + const_cast&>(*this), + const_cast< + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); + } + + template + INLINE ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref< + _AP_W, ap_int_base, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, + a2); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &a2) const { + return ap_concat_ref< + _AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + const_cast&>(*this), + const_cast&>( + a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref< + _AP_W, ap_int_base, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, a2); + } + + template + INLINE ap_int_base operator&( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + return *this & a2.get(); + } + + template + INLINE ap_int_base operator|( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + return *this | a2.get(); + } + + template + INLINE ap_int_base operator^( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + return *this ^ a2.get(); + } + + template + INLINE void set(const ap_int_base<_AP_W3, false>& val) { + Base::V = val.V; + } + + /* Reduce operations. + * ---------------------------------------------------------------- + */ + // XXX non-const version deleted. + INLINE bool and_reduce() const { return _AP_ROOT_op_reduce(and, Base::V); } + INLINE bool nand_reduce() const { return _AP_ROOT_op_reduce(nand, Base::V); } + INLINE bool or_reduce() const { return _AP_ROOT_op_reduce(or, Base::V); } + INLINE bool nor_reduce() const { return !(_AP_ROOT_op_reduce(or, Base::V)); } + INLINE bool xor_reduce() const { return _AP_ROOT_op_reduce (xor, Base::V); } + INLINE bool xnor_reduce() const { + return !(_AP_ROOT_op_reduce (xor, Base::V)); + } + + /* Output as a string. + * ---------------------------------------------------------------- + */ +#ifndef __SYNTHESIS__ + std::string to_string(signed char rd = 2, bool sign = _AP_S) const { + // XXX in autosim/autowrap.tcl "(${name}).to_string(2).c_str()" is used to + // initialize sc_lv, which seems incapable of handling format "-0b". + if (rd == 2) sign = false; + return (Base::V).to_string(rd, sign); + } +#else + INLINE char* to_string(signed char rd = 2, bool sign = _AP_S) const { + _AP_UNUSED_PARAM(rd); + _AP_UNUSED_PARAM(sign); + return 0; + } +#endif +}; // struct ap_int_base + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<(std::ostream& os, + const ap_int_base<_AP_W, _AP_S>& x) { + std::ios_base::fmtflags ff = std::cout.flags(); + if (ff & std::cout.hex) { + os << x.to_string(16); // don't print sign + } else if (ff & std::cout.oct) { + os << x.to_string(8); // don't print sign + } else { + os << x.to_string(10); + } + return os; +} +#endif // ifndef __SYNTHESIS__ + +#ifndef __SYNTHESIS__ +template +INLINE std::istream& operator>>(std::istream& in, + ap_int_base<_AP_W, _AP_S>& op) { + std::string str; + in >> str; + const std::ios_base::fmtflags basefield = in.flags() & std::ios_base::basefield; + unsigned radix = (basefield == std::ios_base::dec) ? 0 : ( + (basefield == std::ios_base::oct) ? 8 : ( + (basefield == std::ios_base::hex) ? 16 : 0)); + op = ap_int_base<_AP_W, _AP_S>(str.c_str(), radix); + return in; +} +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_AUTOCC + +/* Operators with another ap_int_base. + * ---------------------------------------------------------------- + */ +#define OP_BIN_AP(Sym, Rty) \ + template \ + INLINE \ + typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, _AP_S2>::Rty \ + operator Sym(const ap_int_base<_AP_W, _AP_S>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base lhs(op); \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base rhs(op2); \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base ret; \ + ret.V = lhs.V Sym rhs.V; \ + return ret; \ + } + +OP_BIN_AP(*, mult) +OP_BIN_AP(+, plus) +OP_BIN_AP(-, minus) +OP_BIN_AP(&, logic) +OP_BIN_AP(|, logic) +OP_BIN_AP(^, logic) + +#define OP_BIN_AP2(Sym, Rty) \ + template \ + INLINE \ + typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, _AP_S2>::Rty \ + operator Sym(const ap_int_base<_AP_W, _AP_S>& op, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + typename ap_int_base<_AP_W, _AP_S>::template RType< \ + _AP_W2, _AP_S2>::Rty##_base ret; \ + ret.V = op.V Sym op2.V; \ + return ret; \ + } + +OP_BIN_AP2(/, div) +OP_BIN_AP2(%, mod) + +// shift operators are defined inside class. +// compound assignment operators are defined inside class. + +/* Operators with a pointer type. + * ---------------------------------------------------------------- + * char a[100]; + * char* ptr = a; + * ap_int<2> n = 3; + * char* ptr2 = ptr + n*2; + * avoid ambiguous errors. + */ +#define OP_BIN_WITH_PTR(BIN_OP) \ + template \ + INLINE PTR_TYPE* operator BIN_OP(PTR_TYPE* i_op, \ + const ap_int_base<_AP_W, _AP_S>& op) { \ + ap_slong op2 = op.to_int64(); /* Not all implementation */ \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE PTR_TYPE* operator BIN_OP(const ap_int_base<_AP_W, _AP_S>& op, \ + PTR_TYPE* i_op) { \ + ap_slong op2 = op.to_int64(); /* Not all implementation */ \ + return op2 BIN_OP i_op; \ + } + +OP_BIN_WITH_PTR(+) +OP_BIN_WITH_PTR(-) + +/* Operators with a native floating point types. + * ---------------------------------------------------------------- + */ + +// float OP ap_int +// when ap_int's width > 64, then trunc ap_int to ap_int<64> +#define OP_BIN_WITH_FLOAT(BIN_OP, C_TYPE) \ + template \ + INLINE C_TYPE operator BIN_OP(C_TYPE i_op, \ + const ap_int_base<_AP_W, _AP_S>& op) { \ + typename ap_int_base<_AP_W, _AP_S>::RetType op2 = op; \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE C_TYPE operator BIN_OP(const ap_int_base<_AP_W, _AP_S>& op, \ + C_TYPE i_op) { \ + typename ap_int_base<_AP_W, _AP_S>::RetType op2 = op; \ + return op2 BIN_OP i_op; \ + } + +#define ALL_OP_WITH_FLOAT(C_TYPE) \ + OP_BIN_WITH_FLOAT(*, C_TYPE) \ + OP_BIN_WITH_FLOAT(/, C_TYPE) \ + OP_BIN_WITH_FLOAT(+, C_TYPE) \ + OP_BIN_WITH_FLOAT(-, C_TYPE) + +ALL_OP_WITH_FLOAT(half) +ALL_OP_WITH_FLOAT(float) +ALL_OP_WITH_FLOAT(double) + +// TODO no shift? + +/* Operators with a native integral types. + * ---------------------------------------------------------------- + */ +// arithmetic and bitwise operators. +#define OP_BIN_WITH_INT(BIN_OP, C_TYPE, _AP_W2, _AP_S2, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(C_TYPE i_op, const ap_int_base<_AP_W, _AP_S>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(i_op) BIN_OP(op); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W, _AP_S>& op, C_TYPE i_op) { \ + return op BIN_OP ap_int_base<_AP_W2, _AP_S2>(i_op); \ + } + +#define ALL_OP_BIN_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_BIN_WITH_INT(*, C_TYPE, _AP_W2, _AP_S2, mult) \ + OP_BIN_WITH_INT(+, C_TYPE, _AP_W2, _AP_S2, plus) \ + OP_BIN_WITH_INT(-, C_TYPE, _AP_W2, _AP_S2, minus) \ + OP_BIN_WITH_INT(/, C_TYPE, _AP_W2, _AP_S2, div) \ + OP_BIN_WITH_INT(%, C_TYPE, _AP_W2, _AP_S2, mod) \ + OP_BIN_WITH_INT(&, C_TYPE, _AP_W2, _AP_S2, logic) \ + OP_BIN_WITH_INT(|, C_TYPE, _AP_W2, _AP_S2, logic) \ + OP_BIN_WITH_INT(^, C_TYPE, _AP_W2, _AP_S2, logic) + +ALL_OP_BIN_WITH_INT(bool, 1, false) +ALL_OP_BIN_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_BIN_WITH_INT(signed char, 8, true) +ALL_OP_BIN_WITH_INT(unsigned char, 8, false) +ALL_OP_BIN_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_BIN_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_BIN_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_BIN_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_BIN_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_BIN_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_BIN_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_OP_BIN_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef OP_BIN_WITH_INT +#undef ALL_OP_BIN_WITH_INT + +// shift operators. +#define ALL_OP_SHIFT_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator<<( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + if (_AP_S2) \ + r.V = op2 >= 0 ? (op.V << op2) : (op.V >> (-op2)); \ + else \ + r.V = op.V << op2; \ + return r; \ + } \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator>>( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + if (_AP_S2) \ + r.V = op2 >= 0 ? (op.V >> op2) : (op.V << (-op2)); \ + else \ + r.V = op.V >> op2; \ + return r; \ + } + +ALL_OP_SHIFT_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_SHIFT_WITH_INT(signed char, 8, true) +ALL_OP_SHIFT_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_SHIFT_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_SHIFT_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_SHIFT_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) + +#undef ALL_OP_SHIFT_WITH_INT + +#define ALL_OP_SHIFT_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator<<( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + r.V = op.V << op2; \ + return r; \ + } \ + template \ + INLINE typename ap_int_base<_AP_W, _AP_S>::template RType<_AP_W,_AP_S>::arg1 operator>>( \ + const ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + ap_int_base<_AP_W, _AP_S> r; \ + r.V = op.V >> op2; \ + return r; \ + } +ALL_OP_SHIFT_WITH_INT(bool, 1, false) +ALL_OP_SHIFT_WITH_INT(unsigned char, 8, false) +ALL_OP_SHIFT_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_SHIFT_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_SHIFT_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_SHIFT_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef ALL_OP_SHIFT_WITH_INT + +// compound assign operators. +#define OP_ASSIGN_WITH_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_int_base<_AP_W, _AP_S>& operator ASSIGN_OP( \ + ap_int_base<_AP_W, _AP_S>& op, C_TYPE op2) { \ + return op ASSIGN_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } + +// TODO int a; ap_int<16> b; a += b; + +#define ALL_OP_ASSIGN_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(+=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(-=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(*=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(/=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(%=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(&=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(|=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(^=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(>>=, C_TYPE, _AP_W2, _AP_S2) \ + OP_ASSIGN_WITH_INT(<<=, C_TYPE, _AP_W2, _AP_S2) + +ALL_OP_ASSIGN_WITH_INT(bool, 1, false) +ALL_OP_ASSIGN_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_ASSIGN_WITH_INT(signed char, 8, true) +ALL_OP_ASSIGN_WITH_INT(unsigned char, 8, false) +ALL_OP_ASSIGN_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_ASSIGN_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_ASSIGN_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_ASSIGN_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_ASSIGN_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_ASSIGN_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_ASSIGN_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_OP_ASSIGN_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef OP_ASSIGN_WITH_INT +#undef ALL_OP_ASSIGN_WITH_INT + +// TODO half/float/double a; ap_int<16> b; a += b; + +#define OP_ASSIGN_WITH_FLOAT(ASSIGN_OP, C_TYPE) \ + template \ + INLINE C_TYPE& operator ASSIGN_OP( \ + C_TYPE& op2, ap_int_base<_AP_W, _AP_S>& op) { \ + C_TYPE op_rt = op.to_##C_TYPE(); \ + return op2 ASSIGN_OP op_rt; \ + } + + +#define ALL_OP_ASSIGN_WITH_FLOAT(C_TYPE) \ + OP_ASSIGN_WITH_FLOAT(+=, C_TYPE) \ + OP_ASSIGN_WITH_FLOAT(-=, C_TYPE) \ + OP_ASSIGN_WITH_FLOAT(*=, C_TYPE) \ + OP_ASSIGN_WITH_FLOAT(/=, C_TYPE) + +ALL_OP_ASSIGN_WITH_FLOAT(half) +ALL_OP_ASSIGN_WITH_FLOAT(float) +ALL_OP_ASSIGN_WITH_FLOAT(double) +#undef OP_ASSIGN_WITH_FLOAT +#undef ALL_OP_ASSIGN_WITH_FLOAT + + +// equality and relational operators. +#define OP_REL_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(C_TYPE i_op, \ + const ap_int_base<_AP_W, _AP_S>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(i_op) REL_OP op; \ + } \ + template \ + INLINE bool operator REL_OP(const ap_int_base<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return op REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } + +#define ALL_OP_REL_WITH_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(>, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(<, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(>=, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(<=, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(==, C_TYPE, _AP_W2, _AP_S2) \ + OP_REL_WITH_INT(!=, C_TYPE, _AP_W2, _AP_S2) + +ALL_OP_REL_WITH_INT(bool, 1, false) +ALL_OP_REL_WITH_INT(char, 8, CHAR_IS_SIGNED) +ALL_OP_REL_WITH_INT(signed char, 8, true) +ALL_OP_REL_WITH_INT(unsigned char, 8, false) +ALL_OP_REL_WITH_INT(short, _AP_SIZE_short, true) +ALL_OP_REL_WITH_INT(unsigned short, _AP_SIZE_short, false) +ALL_OP_REL_WITH_INT(int, _AP_SIZE_int, true) +ALL_OP_REL_WITH_INT(unsigned int, _AP_SIZE_int, false) +ALL_OP_REL_WITH_INT(long, _AP_SIZE_long, true) +ALL_OP_REL_WITH_INT(unsigned long, _AP_SIZE_long, false) +ALL_OP_REL_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +ALL_OP_REL_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef OP_REL_WITH_INT +#undef ALL_OP_BIN_WITH_INT + +#define OP_REL_WITH_DOUBLE_OR_FLOAT(Sym) \ + template \ + INLINE bool operator Sym(const ap_int_base<_AP_W, _AP_S>& op1, \ + double op2) { \ + return op1.to_double() Sym op2 ; \ + } \ + template \ + INLINE bool operator Sym(double op1, \ + const ap_int_base<_AP_W, _AP_S>& op2) { \ + return op1 Sym op2.to_double() ; \ + } \ + template \ + INLINE bool operator Sym(const ap_int_base<_AP_W, _AP_S>& op1, \ + float op2) { \ + return op1.to_double() Sym op2 ; \ + } \ + template \ + INLINE bool operator Sym(float op1, \ + const ap_int_base<_AP_W, _AP_S>& op2) { \ + return op1 Sym op2.to_double() ; \ + } + OP_REL_WITH_DOUBLE_OR_FLOAT(>) + OP_REL_WITH_DOUBLE_OR_FLOAT(<) + OP_REL_WITH_DOUBLE_OR_FLOAT(>=) + OP_REL_WITH_DOUBLE_OR_FLOAT(<=) + OP_REL_WITH_DOUBLE_OR_FLOAT(==) + OP_REL_WITH_DOUBLE_OR_FLOAT(!=) + +#undef OP_REL_WITH_DOUBLE_OR_FLOAT + + +/* Operators with ap_bit_ref. + * ------------------------------------------------------------ + */ +// arithmetic, bitwise and shift operators. +#define OP_BIN_WITH_RANGE(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<_AP_W1, false>(op1) BIN_OP op2; \ + } \ + template \ + INLINE typename ap_int_base<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 BIN_OP ap_int_base<_AP_W2, false>(op2); \ + } + +OP_BIN_WITH_RANGE(+, plus) +OP_BIN_WITH_RANGE(-, minus) +OP_BIN_WITH_RANGE(*, mult) +OP_BIN_WITH_RANGE(/, div) +OP_BIN_WITH_RANGE(%, mod) +OP_BIN_WITH_RANGE(&, logic) +OP_BIN_WITH_RANGE(|, logic) +OP_BIN_WITH_RANGE(^, logic) +OP_BIN_WITH_RANGE(>>, arg1) +OP_BIN_WITH_RANGE(<<, arg1) + +#undef OP_BIN_WITH_RANGE + +// compound assignment operators. +#define OP_ASSIGN_WITH_RANGE(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 ASSIGN_OP ap_int_base<_AP_W2, false>(op2); \ + } \ + template \ + INLINE ap_range_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<_AP_W1, false> tmp(op1); \ + tmp ASSIGN_OP op2; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_RANGE(+=) +OP_ASSIGN_WITH_RANGE(-=) +OP_ASSIGN_WITH_RANGE(*=) +OP_ASSIGN_WITH_RANGE(/=) +OP_ASSIGN_WITH_RANGE(%=) +OP_ASSIGN_WITH_RANGE(>>=) +OP_ASSIGN_WITH_RANGE(<<=) + +#undef OP_ASSIGN_WITH_RANGE + +// compound assignment operators +// as range could be dynamic, do not check whether two integers are of same +// width. +#define OP_ASSIGN_WITH_RANGE(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<_AP_W2, false> tmp(op2); \ + op1.V ASSIGN_OP tmp.V; \ + return op1; \ + } \ + template \ + INLINE ap_range_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<_AP_W1, false> tmp(op1); \ + tmp.V ASSIGN_OP op2.V; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_RANGE(&=) +OP_ASSIGN_WITH_RANGE(|=) +OP_ASSIGN_WITH_RANGE(^=) + +#undef OP_ASSIGN_WITH_RANGE + +// equality and relational operators +#define OP_REL_WITH_RANGE(REL_OP) \ + template \ + INLINE bool operator REL_OP(const ap_range_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<_AP_W1, false>(op1).operator REL_OP(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_range_ref<_AP_W2, _AP_S2>& op2) { \ + return op1.operator REL_OP(op2.operator ap_int_base<_AP_W2, false>()); \ + } + +OP_REL_WITH_RANGE(==) +OP_REL_WITH_RANGE(!=) +OP_REL_WITH_RANGE(>) +OP_REL_WITH_RANGE(>=) +OP_REL_WITH_RANGE(<) +OP_REL_WITH_RANGE(<=) + +#undef OP_REL_WITH_RANGE + +/* Operators with ap_bit_ref. + * ------------------------------------------------------------ + */ +// arithmetic, bitwise and shift operators. +#define OP_BIN_WITH_BIT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W1, _AP_S1>::template RType<1, false>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 BIN_OP ap_int_base<1, false>(op2); \ + } \ + template \ + INLINE typename ap_int_base<1, false>::template RType<_AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP(const ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<1, false>(op1) BIN_OP op2; \ + } + +OP_BIN_WITH_BIT(+, plus) +OP_BIN_WITH_BIT(-, minus) +OP_BIN_WITH_BIT(*, mult) +OP_BIN_WITH_BIT(/, div) +OP_BIN_WITH_BIT(%, mod) +OP_BIN_WITH_BIT(&, logic) +OP_BIN_WITH_BIT(|, logic) +OP_BIN_WITH_BIT(^, logic) +OP_BIN_WITH_BIT(>>, arg1) +OP_BIN_WITH_BIT(<<, arg1) + +#undef OP_BIN_WITH_BIT + +// compound assignment operators. +#define OP_ASSIGN_WITH_BIT(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 ASSIGN_OP ap_int_base<1, false>(op2); \ + } \ + template \ + INLINE ap_bit_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<1, false> tmp(op1); \ + tmp ASSIGN_OP op2; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_BIT(+=) +OP_ASSIGN_WITH_BIT(-=) +OP_ASSIGN_WITH_BIT(*=) +OP_ASSIGN_WITH_BIT(/=) +OP_ASSIGN_WITH_BIT(%=) +OP_ASSIGN_WITH_BIT(>>=) +OP_ASSIGN_WITH_BIT(<<=) + +#undef OP_ASSIGN_WITH_BIT + +// compound assignment operators. +// as range could be dynamic, do not check whether two integers are of same +// width. +#define OP_ASSIGN_WITH_BIT(ASSIGN_OP) \ + template \ + INLINE ap_int_base<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<1, false> tmp(op2); \ + op1.V ASSIGN_OP tmp.V; \ + return op1; \ + } \ + template \ + INLINE ap_bit_ref<_AP_W1, _AP_S1>& operator ASSIGN_OP( \ + ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + ap_int_base<1, false> tmp(op1); \ + tmp.V ASSIGN_OP op2.V; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_BIT(&=) +OP_ASSIGN_WITH_BIT(|=) +OP_ASSIGN_WITH_BIT(^=) + +#undef OP_ASSIGN_WITH_BIT + +// equality and relational operators. +#define OP_REL_WITH_BIT(REL_OP) \ + template \ + INLINE bool operator REL_OP(const ap_int_base<_AP_W1, _AP_S1>& op1, \ + const ap_bit_ref<_AP_W2, _AP_S2>& op2) { \ + return op1 REL_OP ap_int_base<1, false>(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_bit_ref<_AP_W1, _AP_S1>& op1, \ + const ap_int_base<_AP_W2, _AP_S2>& op2) { \ + return ap_int_base<1, false>(op1) REL_OP op2; \ + } + +OP_REL_WITH_BIT(==) +OP_REL_WITH_BIT(!=) +OP_REL_WITH_BIT(>) +OP_REL_WITH_BIT(>=) +OP_REL_WITH_BIT(<) +OP_REL_WITH_BIT(<=) + +#undef OP_REL_WITH_BIT + +/* Operators with ap_concat_ref. + * ------------------------------------------------------------ + */ +// arithmetic, bitwise and shift operators. +// bitwise operators are defined in struct. +// TODO specify whether to define arithmetic and bitwise operators. +#if 0 +#define OP_BIN_WITH_CONCAT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_W3, _AP_S3>::template RType<_AP_W1 + _AP_W2, \ + false>::RTYPE \ + operator BIN_OP(const ap_int_base<_AP_W3, _AP_S3>& op1, \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1 BIN_OP op2.get(); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W1 + _AP_W2, \ + false>::template RType<_AP_W3, _AP_S3>::RTYPE \ + operator BIN_OP(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op1, \ + const ap_int_base<_AP_W3, _AP_S3>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1.get() BIN_OP op2; \ + } + +OP_BIN_WITH_CONCAT(+, plus) +OP_BIN_WITH_CONCAT(-, minus) +OP_BIN_WITH_CONCAT(*, mult) +OP_BIN_WITH_CONCAT(/, div) +OP_BIN_WITH_CONCAT(%, mod) +OP_BIN_WITH_CONCAT(&, logic) +OP_BIN_WITH_CONCAT(|, logic) +OP_BIN_WITH_CONCAT(^, logic) +OP_BIN_WITH_CONCAT(>>, arg1) +OP_BIN_WITH_CONCAT(<<, arg1) + +#undef OP_BIN_WITH_CONCAT + +// compound assignment operators. +#define OP_ASSIGN_WITH_CONCAT(ASSIGN_OP) \ + template \ + INLINE typename ap_int_base<_AP_W3, _AP_S3>::template RType<_AP_W1 + _AP_W2, \ + false>::RTYPE \ + operator ASSIGN_OP( \ + const ap_int_base<_AP_W3, _AP_S3>& op1, \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1 ASSIGN_OP op2.get(); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W1 + _AP_W2, \ + false>::template RType<_AP_W3, _AP_S3>::RTYPE \ + operator ASSIGN_OP(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op1, \ + const ap_int_base<_AP_W3, _AP_S3>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + ap_int_base<_AP_W1 + _AP_W2, false> tmp = op1.get(); \ + tmp ASSIGN_OP op2; \ + op1 = tmp; \ + return op1; \ + } + +OP_ASSIGN_WITH_CONCAT(+=) +OP_ASSIGN_WITH_CONCAT(-=) +OP_ASSIGN_WITH_CONCAT(*=) +OP_ASSIGN_WITH_CONCAT(/=) +OP_ASSIGN_WITH_CONCAT(%=) +OP_ASSIGN_WITH_CONCAT(&=) +OP_ASSIGN_WITH_CONCAT(|=) +OP_ASSIGN_WITH_CONCAT(^=) +OP_ASSIGN_WITH_CONCAT(>>=) +OP_ASSIGN_WITH_CONCAT(<<=) + +#undef OP_ASSIGN_WITH_CONCAT +#endif + +// equality and relational operators. +#define OP_REL_WITH_CONCAT(REL_OP) \ + template \ + INLINE bool operator REL_OP( \ + const ap_int_base<_AP_W3, _AP_S3>& op1, \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1 REL_OP op2.get(); \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& op1, \ + const ap_int_base<_AP_W3, _AP_S3>& op2) { \ + /* convert ap_concat_ref to ap_int_base */ \ + return op1.get() REL_OP op2; \ + } + +OP_REL_WITH_CONCAT(==) +OP_REL_WITH_CONCAT(!=) +OP_REL_WITH_CONCAT(>) +OP_REL_WITH_CONCAT(>=) +OP_REL_WITH_CONCAT(<) +OP_REL_WITH_CONCAT(<=) + +#undef OP_REL_WITH_CONCAT + +#ifndef __SYNTHESIS__ +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif +#endif + +#endif // ifndef __cplusplus else +#endif // ifndef __AP_INT_BASE_H__ else + + diff --git a/vitis/v2021_2/ap_int_ref.h b/vitis/v2021_2/ap_int_ref.h new file mode 100755 index 00000000..568d1bbc --- /dev/null +++ b/vitis/v2021_2/ap_int_ref.h @@ -0,0 +1,1407 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_INT_REF_H__ +#define __AP_INT_REF_H__ + +#ifndef __AP_INT_H__ +// TODO make this an error +#pragma message \ + "Only ap_fixed.h and ap_int.h can be included directly in user code." +#endif + +#ifndef __cplusplus +#error "C++ is required to include this header file" + +#else + +#ifndef __SYNTHESIS__ +#include +#endif + +/* Concatination reference. + ---------------------------------------------------------------- +*/ +template +struct ap_concat_ref { + enum { + _AP_WR = _AP_W1 + _AP_W2, + }; + + _AP_T1& mbv1; + _AP_T2& mbv2; + + INLINE ap_concat_ref(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& ref) + : mbv1(ref.mbv1), mbv2(ref.mbv2) {} + + INLINE ap_concat_ref(_AP_T1& bv1, _AP_T2& bv2) : mbv1(bv1), mbv2(bv2) {} + + template + INLINE ap_concat_ref& operator=(const ap_int_base<_AP_W3, _AP_S3>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> vval(val); + int W_ref1 = mbv1.length(); + int W_ref2 = mbv2.length(); + ap_int_base<_AP_W1, false> Part1; + Part1.V = _AP_ROOT_op_get_range(vval.V, W_ref2, W_ref1 + W_ref2 - 1); + mbv1.set(Part1); + ap_int_base<_AP_W2, false> Part2; + Part2.V = _AP_ROOT_op_get_range(vval.V, 0, W_ref2 - 1); + mbv2.set(Part2); + return *this; + } + + // assign op from hls supported C integral types. + // FIXME disabled to support legacy code directly assign from sc_signal + //template + //INLINE typename _ap_type::enable_if<_ap_type::is_integral::value, + // ap_concat_ref&>::type + //operator=(T val) { + // ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + // return operator=(tmpVal); + //} +#define ASSIGN_WITH_CTYPE(_Tp) \ + INLINE ap_concat_ref& operator=(_Tp val) { \ + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); \ + return operator=(tmpVal); \ + } + + ASSIGN_WITH_CTYPE(bool) + ASSIGN_WITH_CTYPE(char) + ASSIGN_WITH_CTYPE(signed char) + ASSIGN_WITH_CTYPE(unsigned char) + ASSIGN_WITH_CTYPE(short) + ASSIGN_WITH_CTYPE(unsigned short) + ASSIGN_WITH_CTYPE(int) + ASSIGN_WITH_CTYPE(unsigned int) + ASSIGN_WITH_CTYPE(long) + ASSIGN_WITH_CTYPE(unsigned long) + ASSIGN_WITH_CTYPE(ap_slong) + ASSIGN_WITH_CTYPE(ap_ulong) + ASSIGN_WITH_CTYPE(half) + ASSIGN_WITH_CTYPE(float) + ASSIGN_WITH_CTYPE(double) + +#undef ASSIGN_WITH_CTYPE + + // Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE ap_concat_ref& operator=( + const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + + template + INLINE ap_concat_ref& operator=( + const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + + template + INLINE ap_concat_ref& operator=(const ap_bit_ref<_AP_W3, _AP_S3>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + template + INLINE ap_concat_ref& operator=(const ap_range_ref<_AP_W3, _AP_S3>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> tmpVal(val); + return operator=(tmpVal); + } + + template + INLINE ap_concat_ref& operator=( + const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) { + return operator=((const ap_int_base<_AP_W3, false>)(val)); + } + + template + INLINE ap_concat_ref& operator=( + const ap_fixed_base<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& + val) { + return operator=(val.to_ap_int_base()); + } + + template + INLINE ap_concat_ref& operator=( + const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) { + return operator=((ap_ulong)(bool)(val)); + } + + INLINE operator ap_int_base<_AP_WR, false>() const { return get(); } + + INLINE operator ap_ulong() const { return get().to_uint64(); } + + template + INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_range_ref<_AP_W3, _AP_S3> > + operator,(const ap_range_ref<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_range_ref<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(ap_int_base<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >(*this, a2); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(volatile ap_int_base<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(const ap_int_base<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_int_base<_AP_W3, _AP_S3> > + operator,(const volatile ap_int_base<_AP_W3, _AP_S3> &a2) { + // FIXME op's life does not seem long enough + ap_int_base<_AP_W3, _AP_S3> op(a2); + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, + ap_int_base<_AP_W3, _AP_S3> >( + *this, const_cast&>(op)); + } + + template + INLINE ap_concat_ref<_AP_WR, ap_concat_ref, 1, ap_bit_ref<_AP_W3, _AP_S3> > + operator,(const ap_bit_ref<_AP_W3, _AP_S3> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, 1, ap_bit_ref<_AP_W3, _AP_S3> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, + ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> > + operator,(const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> &a2) { + return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, + ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref< + _AP_WR, ap_concat_ref, _AP_W3, + af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> > + operator,( + const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> &a2) { + return ap_concat_ref< + _AP_WR, ap_concat_ref, _AP_W3, + af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( + *this, + const_cast< + af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_WR, ap_concat_ref, 1, + af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> > + operator,(const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> + &a2) { + return ap_concat_ref< + _AP_WR, ap_concat_ref, 1, + af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( + *this, + const_cast&>( + a2)); + } + + template + INLINE ap_int_base operator&( + const ap_int_base<_AP_W3, _AP_S3>& a2) { + return get() & a2; + } + + template + INLINE ap_int_base operator|( + const ap_int_base<_AP_W3, _AP_S3>& a2) { + return get() | a2; + } + + template + INLINE ap_int_base operator^( + const ap_int_base<_AP_W3, _AP_S3>& a2) { + return get() ^ a2; + } + +#if 0 + template + INLINE ap_int_base slice() { + ap_int_base<_AP_WR, false> bv = get(); + return bv.slice(); + } +#endif + + INLINE ap_int_base<_AP_WR, false> get() const { + ap_int_base<_AP_WR, false> tmpVal(0); + int W_ref1 = mbv1.length(); + int W_ref2 = mbv2.length(); + ap_int_base<_AP_W2, false> v2(mbv2); + ap_int_base<_AP_W1, false> v1(mbv1); + tmpVal.V = _AP_ROOT_op_set_range(tmpVal.V, 0, W_ref2 - 1, v2.V); + tmpVal.V = + _AP_ROOT_op_set_range(tmpVal.V, W_ref2, W_ref1 + W_ref2 - 1, v1.V); + return tmpVal; + } + + template + INLINE void set(const ap_int_base<_AP_W3, false>& val) { + ap_int_base<_AP_W1 + _AP_W2, false> vval(val); + int W_ref1 = mbv1.length(); + int W_ref2 = mbv2.length(); + ap_int_base<_AP_W1, false> tmpVal1; + tmpVal1.V = _AP_ROOT_op_get_range(vval.V, W_ref2, W_ref1 + W_ref2 - 1); + mbv1.set(tmpVal1); + ap_int_base<_AP_W2, false> tmpVal2; + tmpVal2.V = _AP_ROOT_op_get_range(vval.V, 0, W_ref2 - 1); + mbv2.set(tmpVal2); + } + + INLINE int length() const { return mbv1.length() + mbv2.length(); } +}; // struct ap_concat_ref + +/* Range (slice) reference. + ---------------------------------------------------------------- +*/ +template +struct ap_range_ref { + // struct ssdm_int or its sim model. + // TODO make it possible to reference to ap_fixed_base/ap_fixed/ap_ufixed + // and then we can retire af_range_ref. + typedef ap_int_base<_AP_W, _AP_S> ref_type; + ref_type& d_bv; + int l_index; + int h_index; + + public: + INLINE ap_range_ref(const ap_range_ref<_AP_W, _AP_S>& ref) + : d_bv(ref.d_bv), l_index(ref.l_index), h_index(ref.h_index) {} + + INLINE ap_range_ref(ref_type* bv, int h, int l) + : d_bv(*bv), l_index(l), h_index(h) {} + + INLINE ap_range_ref(const ref_type* bv, int h, int l) + : d_bv(*const_cast(bv)), l_index(l), h_index(h) {} + + INLINE operator ap_int_base<_AP_W, false>() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + INLINE operator ap_ulong() const { return to_uint64(); } + + /// @name assign operators + // @{ + + // FIXME disabled to work-around lagacy code assigning from sc_signal, + // which dependes on implicit type conversion. + // + // /// assign from hls supported C integral types. + // template + // INLINE typename _ap_type::enable_if<_ap_type::is_integral::value, + // ap_range_ref&>::type + // operator=(T val) { + // ap_int_base<_AP_W, false> tmp(val); + // d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + // return *this; + // } +#define ASSIGN_WITH_CTYPE(_Tp) \ + INLINE ap_range_ref& operator=(_Tp val) { \ + ap_int_base<_AP_W, false> tmp(val); \ + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); \ + return *this; \ + } + + ASSIGN_WITH_CTYPE(bool) + ASSIGN_WITH_CTYPE(char) + ASSIGN_WITH_CTYPE(signed char) + ASSIGN_WITH_CTYPE(unsigned char) + ASSIGN_WITH_CTYPE(short) + ASSIGN_WITH_CTYPE(unsigned short) + ASSIGN_WITH_CTYPE(int) + ASSIGN_WITH_CTYPE(unsigned int) + ASSIGN_WITH_CTYPE(long) + ASSIGN_WITH_CTYPE(unsigned long) + ASSIGN_WITH_CTYPE(ap_slong) + ASSIGN_WITH_CTYPE(ap_ulong) + ASSIGN_WITH_CTYPE(half) + ASSIGN_WITH_CTYPE(float) + ASSIGN_WITH_CTYPE(double) + +#undef ASSIGN_WITH_CTYPE + + /// assign using string. XXX crucial for cosim. + INLINE ap_range_ref& operator=(const char* val) { + const ap_int_base<_AP_W, false> tmp(val); // XXX figure out radix + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + return *this; + } + + /// assign from ap_int_base. + template + INLINE ap_range_ref& operator=(const ap_int_base<_AP_W2, _AP_S2>& val) { + ap_int_base<_AP_W, false> tmp(val); + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, tmp.V); + return *this; + } + + /// copy assign operator + // XXX Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE ap_range_ref& operator=(const ap_range_ref& val) { + return operator=((const ap_int_base<_AP_W, false>)val); + } + + /// assign from range reference to ap_int_base. + template + INLINE ap_range_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + return operator=((const ap_int_base<_AP_W2, false>)val); + } + + /// assign from bit reference to ap_int_base. + template + INLINE ap_range_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=((ap_ulong)(bool)(val)); + } + + /// assign from ap_fixed_base. + template + INLINE ap_range_ref& operator=( + const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + val) { + return operator=(val.to_ap_int_base()); + } + + /// assign from range reference to ap_fixed_base. + template + INLINE ap_range_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((const ap_int_base<_AP_W2, false>)val); + } + + /// assign from bit reference to ap_fixed_base. + template + INLINE ap_range_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((ap_ulong)(bool)(val)); + } + + /// assign from compound reference. + template + INLINE ap_range_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& val) { + return operator=((const ap_int_base<_AP_W2 + _AP_W3, false>)(val)); + } + // @} + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_range_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >(*this, a2); + } + + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W, ap_int_base<_AP_W, _AP_S> > + operator,(ap_int_base<_AP_W, _AP_S>& a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W, + ap_int_base<_AP_W, _AP_S> >(*this, a2); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2, + ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > + operator,(const ap_bit_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<_AP_W, ap_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<_AP_W, ap_range_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref< + _AP_W, ap_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> a2) { + return ap_concat_ref< + _AP_W, ap_range_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast< + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); + } + + template + INLINE + ap_concat_ref<_AP_W, ap_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &a2) { + return ap_concat_ref< + _AP_W, ap_range_ref, 1, + af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + a2)); + } + + template + INLINE bool operator==(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> hop(op2); + return lop == hop; + } + + template + INLINE bool operator!=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator==(op2)); + } + + template + INLINE bool operator<(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> hop(op2); + return lop < hop; + } + + template + INLINE bool operator<=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + ap_int_base<_AP_W, false> lop(*this); + ap_int_base<_AP_W2, false> hop(op2); + return lop <= hop; + } + + template + INLINE bool operator>(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator<=(op2)); + } + + template + INLINE bool operator>=(const ap_range_ref<_AP_W2, _AP_S2>& op2) { + return !(operator<(op2)); + } + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator|=( + const ap_range_ref<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V |= (op2.d_bv).V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator|=( + const ap_int_base<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V |= op2.V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator&=( + const ap_range_ref<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V &= (op2.d_bv).V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator&=( + const ap_int_base<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V &= op2.V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator^=( + const ap_range_ref<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V ^= (op2.d_bv).V; + return *this; + }; + + template + INLINE ap_range_ref<_AP_W, _AP_S>& operator^=( + const ap_int_base<_AP_W2, _AP_S2>& op2) { + (this->d_bv).V ^= op2.V; + return *this; + }; + + /// @name unary operators + /// @{ + INLINE ap_int_base<_AP_W, false> operator~() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return (~ret); + } + + INLINE ap_int_base<_AP_W, false> operator!() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return (!ret); + } + + INLINE ap_int_base<_AP_W, false> operator+() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + INLINE ap_int_base<_AP_W, false> operator-() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return (-ret); + } + /// @} + + INLINE ap_int_base<_AP_W, false> get() const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret; + } + + template + INLINE void set(const ap_int_base<_AP_W2, false>& val) { + d_bv.V = _AP_ROOT_op_set_range(d_bv.V, l_index, h_index, val.V); + } + + INLINE int length() const { + return h_index >= l_index ? h_index - l_index + 1 : l_index - h_index + 1; + } + + INLINE int to_int() const { + return (int)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned to_uint() const { + return (unsigned)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE long to_long() const { + return (long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE unsigned long to_ulong() const { + return (unsigned long)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_slong to_int64() const { + return (ap_slong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE ap_ulong to_uint64() const { + return (ap_ulong)(_AP_ROOT_op_get_range(d_bv.V, l_index, h_index)); + } + + INLINE bool and_reduce() const { + bool ret = true; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif + ret &= _AP_ROOT_op_get_bit(d_bv.V, i); + } + return ret; + } + + INLINE bool or_reduce() const { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif + ret |= _AP_ROOT_op_get_bit(d_bv.V, i); + } + return ret; + } + + INLINE bool xor_reduce() const { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif + ret ^= _AP_ROOT_op_get_bit(d_bv.V, i); + } + return ret; + } +#ifndef __SYNTHESIS__ + std::string to_string(signed char radix = 2) const { + ap_int_base<_AP_W, false> ret; + ret.V = _AP_ROOT_op_get_range(d_bv.V, l_index, h_index); + return ret.to_string(radix); + } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string(signed char radix = 2) const { + _AP_UNUSED_PARAM(radix); + return 0; + } +#endif +}; // struct ap_range_ref + +// XXX apcc cannot handle global std::ios_base::Init() brought in by +#ifndef AP_AUTOCC +#ifndef __SYNTHESIS__ +template +INLINE std::ostream& operator<<(std::ostream& os, + const ap_range_ref<_AP_W, _AP_S>& x) { + std::ios_base::fmtflags ff = std::cout.flags(); + if (ff & std::cout.hex) { + os << x.to_string(16); // don't print sign + } else if (ff & std::cout.oct) { + os << x.to_string(8); // don't print sign + } else { + os << x.to_string(10); + } + return os; +} +#endif // ifndef __SYNTHESIS__ + +#ifndef __SYNTHESIS__ +template +INLINE std::istream& operator>>(std::istream& in, + ap_range_ref<_AP_W, _AP_S>& op) { + std::string str; + in >> str; + op = ap_int_base<_AP_W, _AP_S>(str.c_str()); + return in; +} +#endif // ifndef __SYNTHESIS__ +#endif // ifndef AP_AUTOCC + +/* Bit reference. + ---------------------------------------------------------------- +*/ +template +struct ap_bit_ref { + // struct ssdm_int or its sim model. + // TODO make it possible to reference to ap_fixed_base/ap_fixed/ap_ufixed + // and then we can retire af_bit_ref. + typedef ap_int_base<_AP_W, _AP_S> ref_type; + ref_type& d_bv; + int d_index; + + public: + // copy ctor + INLINE ap_bit_ref(const ap_bit_ref<_AP_W, _AP_S>& ref) + : d_bv(ref.d_bv), d_index(ref.d_index) {} + + INLINE ap_bit_ref(ref_type* bv, int index = 0) : d_bv(*bv), d_index(index) {} + + INLINE ap_bit_ref(const ref_type* bv, int index = 0) + : d_bv(*const_cast(bv)), d_index(index) {} + + INLINE operator bool() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + INLINE bool to_bool() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + // assign op from hls supported C integral types. + // FIXME disabled to support sc_signal. + // NOTE this used to be unsigned long long. + //template + //INLINE typename _ap_type::enable_if<_ap_type::is_integral::value, + // ap_bit_ref&>::type + //operator=(T val) { + // d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index, val); + // return *this; + //} +#define ASSIGN_WITH_CTYPE(_Tp) \ + INLINE ap_bit_ref& operator=(_Tp val) { \ + d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index, val); \ + return *this; \ + } + + ASSIGN_WITH_CTYPE(bool) + ASSIGN_WITH_CTYPE(char) + ASSIGN_WITH_CTYPE(signed char) + ASSIGN_WITH_CTYPE(unsigned char) + ASSIGN_WITH_CTYPE(short) + ASSIGN_WITH_CTYPE(unsigned short) + ASSIGN_WITH_CTYPE(int) + ASSIGN_WITH_CTYPE(unsigned int) + ASSIGN_WITH_CTYPE(long) + ASSIGN_WITH_CTYPE(unsigned long) + ASSIGN_WITH_CTYPE(ap_slong) + ASSIGN_WITH_CTYPE(ap_ulong) + +#undef ASSIGN_WITH_CTYPE + +#define ASSIGN_WITH_CTYPE_FP(_Tp) \ + INLINE ap_bit_ref& operator=(_Tp val) { \ + bool tmp_val = val; \ + d_bv.V = _AP_ROOT_op_set_bit(d_bv.V, d_index,tmp_val); \ + return *this; \ + } + + ASSIGN_WITH_CTYPE_FP(half) + ASSIGN_WITH_CTYPE_FP(float) + ASSIGN_WITH_CTYPE_FP(double) + +#undef ASSIGN_WITH_CTYPE_FP + + + template + INLINE ap_bit_ref& operator=(const ap_int_base<_AP_W2, _AP_S2>& val) { + return operator=((ap_ulong)(val.V != 0)); + } + + template + INLINE ap_bit_ref& operator=(const ap_range_ref<_AP_W2, _AP_S2>& val) { + return operator=((ap_int_base<_AP_W2, false>)val); + } + + // Be explicit to prevent it from being deleted, as field d_bv + // is of reference type. + INLINE ap_bit_ref& operator=(const ap_bit_ref& val) { + return operator=((ap_ulong)(bool)val); + } + + template + INLINE ap_bit_ref& operator=(const ap_bit_ref<_AP_W2, _AP_S2>& val) { + return operator=((ap_ulong)(bool)val); + } + + template + INLINE ap_bit_ref& operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((const ap_int_base<_AP_W2, false>)val); + } + + template + INLINE ap_bit_ref& operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) { + return operator=((ap_ulong)(bool)val); + } + + template + INLINE ap_bit_ref& operator=( + const ap_concat_ref<_AP_W2, _AP_T3, _AP_W3, _AP_T3>& val) { + return operator=((const ap_int_base<_AP_W2 + _AP_W3, false>)val); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, a2); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const ap_int_base<_AP_W2, _AP_S2> &a2) { + ap_int_base<_AP_W2, _AP_S2> op(a2); + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> > + operator,(const volatile ap_int_base<_AP_W2, _AP_S2> &a2) { + ap_int_base<_AP_W2, _AP_S2> op(a2); + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_int_base<_AP_W2, _AP_S2> >( + *this, const_cast&>(op)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> > + operator,(const ap_range_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2, ap_range_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> > operator,( + const ap_bit_ref<_AP_W2, _AP_S2> &a2) { + return ap_concat_ref<1, ap_bit_ref, 1, ap_bit_ref<_AP_W2, _AP_S2> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + return ap_concat_ref<1, ap_bit_ref, _AP_W2 + _AP_W3, + ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + *this, const_cast&>(a2)); + } + + template + INLINE ap_concat_ref< + 1, ap_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref< + 1, ap_bit_ref, _AP_W2, + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast< + af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>&>(a2)); + } + + template + INLINE ap_concat_ref<1, ap_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> > + operator,( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + return ap_concat_ref<1, ap_bit_ref, 1, af_bit_ref<_AP_W2, _AP_I2, _AP_S2, + _AP_Q2, _AP_O2, _AP_N2> >( + *this, + const_cast&>( + a2)); + } + + template + INLINE bool operator==(const ap_bit_ref<_AP_W2, _AP_S2>& op) { + return get() == op.get(); + } + + template + INLINE bool operator!=(const ap_bit_ref<_AP_W2, _AP_S2>& op) { + return get() != op.get(); + } + + INLINE bool get() const { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + INLINE bool get() { return _AP_ROOT_op_get_bit(d_bv.V, d_index); } + + template + INLINE void set(const ap_int_base<_AP_W3, false>& val) { + operator=(val); + } + + INLINE bool operator~() const { + bool bit = _AP_ROOT_op_get_bit(d_bv.V, d_index); + return bit ? false : true; + } + + INLINE int length() const { return 1; } + +#ifndef __SYNTHESIS__ + std::string to_string() const { return get() ? "1" : "0"; } +#else + // XXX HLS will delete this in synthesis + INLINE char* to_string() const { return 0; } +#endif +}; // struct ap_bit_ref + +/* ap_range_ref with int. + * ------------------------------------------------------------ + */ +// equality and relational operators. +#define REF_REL_OP_WITH_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(const ap_range_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return ap_int_base<_AP_W, false>(op) \ + REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_bit_ref<_AP_W, _AP_S>& op, \ + C_TYPE op2) { \ + return bool(op) REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const ap_bit_ref<_AP_W, _AP_S>& op) { \ + return op2 REL_OP bool(op); \ + } \ + template \ + INLINE bool operator REL_OP( \ + const ap_concat_ref<_AP_W, _AP_T, _AP_W1, _AP_T1>& op, C_TYPE op2) { \ + return ap_int_base<_AP_W + _AP_W1, false>(op) \ + REL_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } + +// Make the line shorter than 5000 chars +#define REF_REL_WITH_INT_1(C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(>, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(<, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(>=, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(<=, C_TYPE, _AP_WI, _AP_SI) + +REF_REL_WITH_INT_1(bool, 1, false) +REF_REL_WITH_INT_1(char, 8, CHAR_IS_SIGNED) +REF_REL_WITH_INT_1(signed char, 8, true) +REF_REL_WITH_INT_1(unsigned char, 8, false) +REF_REL_WITH_INT_1(short, _AP_SIZE_short, true) +REF_REL_WITH_INT_1(unsigned short, _AP_SIZE_short, false) +REF_REL_WITH_INT_1(int, _AP_SIZE_int, true) +REF_REL_WITH_INT_1(unsigned int, _AP_SIZE_int, false) +REF_REL_WITH_INT_1(long, _AP_SIZE_long, true) +REF_REL_WITH_INT_1(unsigned long, _AP_SIZE_long, false) +REF_REL_WITH_INT_1(ap_slong, _AP_SIZE_ap_slong, true) +REF_REL_WITH_INT_1(ap_ulong, _AP_SIZE_ap_slong, false) + +// Make the line shorter than 5000 chars +#define REF_REL_WITH_INT_2(C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(==, C_TYPE, _AP_WI, _AP_SI) \ + REF_REL_OP_WITH_INT(!=, C_TYPE, _AP_WI, _AP_SI) + +REF_REL_WITH_INT_2(bool, 1, false) +REF_REL_WITH_INT_2(char, 8, CHAR_IS_SIGNED) +REF_REL_WITH_INT_2(signed char, 8, true) +REF_REL_WITH_INT_2(unsigned char, 8, false) +REF_REL_WITH_INT_2(short, _AP_SIZE_short, true) +REF_REL_WITH_INT_2(unsigned short, _AP_SIZE_short, false) +REF_REL_WITH_INT_2(int, _AP_SIZE_int, true) +REF_REL_WITH_INT_2(unsigned int, _AP_SIZE_int, false) +REF_REL_WITH_INT_2(long, _AP_SIZE_long, true) +REF_REL_WITH_INT_2(unsigned long, _AP_SIZE_long, false) +REF_REL_WITH_INT_2(ap_slong, _AP_SIZE_ap_slong, true) +REF_REL_WITH_INT_2(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef REF_REL_OP_WITH_INT +#undef REF_REL_WITH_INT_1 +#undef REF_REL_WITH_INT_2 + +#define REF_BIN_OP_WITH_INT(BIN_OP, RTYPE, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE typename ap_int_base<_AP_W, false>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_range_ref<_AP_W, _AP_S>& op, C_TYPE op2) { \ + return ap_int_base<_AP_W, false>(op) \ + BIN_OP ap_int_base<_AP_W2, _AP_S2>(op2); \ + } \ + template \ + INLINE typename ap_int_base<_AP_W2, _AP_S2>::template RType<_AP_W, \ + false>::RTYPE \ + operator BIN_OP(C_TYPE op2, const ap_range_ref<_AP_W, _AP_S>& op) { \ + return ap_int_base<_AP_W2, _AP_S2>(op2) \ + BIN_OP ap_int_base<_AP_W, false>(op); \ + } + +// arithmetic operators. +#define REF_BIN_OP_WITH_INT_ARITH(C_TYPE, _AP_W2, _AP_S2) \ + REF_BIN_OP_WITH_INT(+, plus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(-, minus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(*, mult, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(/, div, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(%, mod, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_BIN_OP_WITH_INT_ARITH(bool, 1, false) +REF_BIN_OP_WITH_INT_ARITH(char, 8, CHAR_IS_SIGNED) +REF_BIN_OP_WITH_INT_ARITH(signed char, 8, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned char, 8, false) +REF_BIN_OP_WITH_INT_ARITH(short, _AP_SIZE_short, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned short, _AP_SIZE_short, false) +REF_BIN_OP_WITH_INT_ARITH(int, _AP_SIZE_int, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned int, _AP_SIZE_int, false) +REF_BIN_OP_WITH_INT_ARITH(long, _AP_SIZE_long, true) +REF_BIN_OP_WITH_INT_ARITH(unsigned long, _AP_SIZE_long, false) +REF_BIN_OP_WITH_INT_ARITH(ap_slong, _AP_SIZE_ap_slong, true) +REF_BIN_OP_WITH_INT_ARITH(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef REF_BIN_OP_WITH_INT_ARITH + +// bitwise and shift operators +#define REF_BIN_OP_WITH_INT_BITS(C_TYPE, _AP_W2, _AP_S2) \ + REF_BIN_OP_WITH_INT(&, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(|, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(^, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(>>, arg1, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_WITH_INT(<<, arg1, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_BIN_OP_WITH_INT_BITS(bool, 1, false) +REF_BIN_OP_WITH_INT_BITS(char, 8, CHAR_IS_SIGNED) +REF_BIN_OP_WITH_INT_BITS(signed char, 8, true) +REF_BIN_OP_WITH_INT_BITS(unsigned char, 8, false) +REF_BIN_OP_WITH_INT_BITS(short, _AP_SIZE_short, true) +REF_BIN_OP_WITH_INT_BITS(unsigned short, _AP_SIZE_short, false) +REF_BIN_OP_WITH_INT_BITS(int, _AP_SIZE_int, true) +REF_BIN_OP_WITH_INT_BITS(unsigned int, _AP_SIZE_int, false) +REF_BIN_OP_WITH_INT_BITS(long, _AP_SIZE_long, true) +REF_BIN_OP_WITH_INT_BITS(unsigned long, _AP_SIZE_long, false) +REF_BIN_OP_WITH_INT_BITS(ap_slong, _AP_SIZE_ap_slong, true) +REF_BIN_OP_WITH_INT_BITS(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef REF_BIN_OP_WITH_INT_BITS + +/* ap_range_ref with ap_range_ref + * ------------------------------------------------------------ + */ +#define REF_BIN_OP(BIN_OP, RTYPE) \ + template \ + INLINE \ + typename ap_int_base<_AP_W, false>::template RType<_AP_W2, false>::RTYPE \ + operator BIN_OP(const ap_range_ref<_AP_W, _AP_S>& lhs, \ + const ap_range_ref<_AP_W2, _AP_S2>& rhs) { \ + return (lhs.operator ap_int_base<_AP_W, false>())BIN_OP( \ + rhs.operator ap_int_base<_AP_W2, false>()); \ + } + +REF_BIN_OP(+, plus) +REF_BIN_OP(-, minus) +REF_BIN_OP(*, mult) +REF_BIN_OP(/, div) +REF_BIN_OP(%, mod) +REF_BIN_OP(&, logic) +REF_BIN_OP(|, logic) +REF_BIN_OP(^, logic) +REF_BIN_OP(>>, arg1) +REF_BIN_OP(<<, arg1) + +/* ap_concat_ref with ap_concat_ref. + * ------------------------------------------------------------ + */ + +//************************************************************************ +// Implement +// ap_int_base = ap_concat_ref OP ap_concat_ref +// for operators +, -, *, /, %, >>, <<, &, |, ^ +// Without these operators the operands are converted to int64 and +// larger results lose informations (higher order bits). +// +// operand OP +// / | +// left-concat right-concat +// / | / | +// +// +// _AP_LW1, _AP_LT1 (width and type of left-concat's left side) +// _AP_LW2, _AP_LT2 (width and type of left-concat's right side) +// Similarly for RHS of operand OP: _AP_RW1, AP_RW2, _AP_RT1, _AP_RT2 +// +// In Verilog 2001 result of concatenation is always unsigned even +// when both sides are signed. +//************************************************************************ + +#undef SYN_CONCAT_REF_BIN_OP + +#define SYN_CONCAT_REF_BIN_OP(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_int_base<_AP_LW1 + _AP_LW2, false>::template RType< \ + _AP_RW1 + _AP_RW2, false>::RTYPE \ + operator BIN_OP( \ + const ap_concat_ref<_AP_LW1, _AP_LT1, _AP_LW2, _AP_LT2>& lhs, \ + const ap_concat_ref<_AP_RW1, _AP_RT1, _AP_RW2, _AP_RT2>& rhs) { \ + return lhs.get() BIN_OP rhs.get(); \ + } + +SYN_CONCAT_REF_BIN_OP(+, plus) +SYN_CONCAT_REF_BIN_OP(-, minus) +SYN_CONCAT_REF_BIN_OP(*, mult) +SYN_CONCAT_REF_BIN_OP(/, div) +SYN_CONCAT_REF_BIN_OP(%, mod) +SYN_CONCAT_REF_BIN_OP(&, logic) +SYN_CONCAT_REF_BIN_OP(|, logic) +SYN_CONCAT_REF_BIN_OP(^, logic) +SYN_CONCAT_REF_BIN_OP(>>, arg1) +SYN_CONCAT_REF_BIN_OP(<<, arg1) + +#undef SYN_CONCAT_REF_BIN_OP + +#define CONCAT_OP_WITH_INT(C_TYPE, _AP_WI, _AP_SI) \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + const ap_int_base<_AP_W, _AP_S> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op2); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op1); \ + ret <<= _AP_WI; \ + if (_AP_SI) { \ + val <<= _AP_W; \ + val >>= _AP_W; \ + } \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + C_TYPE op1, const ap_int_base<_AP_W, _AP_S> &op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op1); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op2); \ + if (_AP_S) { \ + ret <<= _AP_WI; \ + ret >>= _AP_WI; \ + } \ + ret |= val << _AP_W; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + const ap_range_ref<_AP_W, _AP_S> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op2); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op1); \ + ret <<= _AP_WI; \ + if (_AP_SI) { \ + val <<= _AP_W; \ + val >>= _AP_W; \ + } \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + C_TYPE op1, const ap_range_ref<_AP_W, _AP_S> &op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op1); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op2); \ + int len = op2.length(); \ + val <<= len; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_WI + 1, false> operator,( \ + const ap_bit_ref<_AP_W, _AP_S> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + 1, false> val(op2); \ + val[_AP_WI] = op1; \ + return val; \ + } \ + template \ + INLINE ap_int_base<_AP_WI + 1, false> operator,( \ + C_TYPE op1, const ap_bit_ref<_AP_W, _AP_S> &op2) { \ + ap_int_base<_AP_WI + 1, false> val(op1); \ + val <<= 1; \ + val[0] = op2; \ + return val; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_W2 + _AP_WI, false> operator,( \ + const ap_concat_ref<_AP_W, _AP_T, _AP_W2, _AP_T2> &op1, C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> val(op2); \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> ret(op1); \ + if (_AP_SI) { \ + val <<= _AP_W + _AP_W2; \ + val >>= _AP_W + _AP_W2; \ + } \ + ret <<= _AP_WI; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_W2 + _AP_WI, false> operator,( \ + C_TYPE op1, const ap_concat_ref<_AP_W, _AP_T, _AP_W2, _AP_T2> &op2) { \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> val(op1); \ + ap_int_base<_AP_WI + _AP_W + _AP_W2, _AP_SI> ret(op2); \ + int len = op2.length(); \ + val <<= len; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op1, \ + C_TYPE op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op2); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op1); \ + if (_AP_SI) { \ + val <<= _AP_W; \ + val >>= _AP_W; \ + } \ + ret <<= _AP_WI; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<_AP_W + _AP_WI, false> operator,( \ + C_TYPE op1, \ + const af_range_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op2) { \ + ap_int_base<_AP_WI + _AP_W, false> val(op1); \ + ap_int_base<_AP_WI + _AP_W, false> ret(op2); \ + int len = op2.length(); \ + val <<= len; \ + ret |= val; \ + return ret; \ + } \ + template \ + INLINE ap_int_base<1 + _AP_WI, false> operator,( \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op1, \ + C_TYPE op2) { \ + ap_int_base<_AP_WI + 1, _AP_SI> val(op2); \ + val[_AP_WI] = op1; \ + return val; \ + } \ + template \ + INLINE ap_int_base<1 + _AP_WI, false> operator,( \ + C_TYPE op1, \ + const af_bit_ref<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &op2) { \ + ap_int_base<_AP_WI + 1, _AP_SI> val(op1); \ + val <<= 1; \ + val[0] = op2; \ + return val; \ + } + +CONCAT_OP_WITH_INT(bool, 1, false) +CONCAT_OP_WITH_INT(char, 8, CHAR_IS_SIGNED) +CONCAT_OP_WITH_INT(signed char, 8, true) +CONCAT_OP_WITH_INT(unsigned char, 8, false) +CONCAT_OP_WITH_INT(short, _AP_SIZE_short, true) +CONCAT_OP_WITH_INT(unsigned short, _AP_SIZE_short, false) +CONCAT_OP_WITH_INT(int, _AP_SIZE_int, true) +CONCAT_OP_WITH_INT(unsigned int, _AP_SIZE_int, false) +CONCAT_OP_WITH_INT(long, _AP_SIZE_long, true) +CONCAT_OP_WITH_INT(unsigned long, _AP_SIZE_long, false) +CONCAT_OP_WITH_INT(ap_slong, _AP_SIZE_ap_slong, true) +CONCAT_OP_WITH_INT(ap_ulong, _AP_SIZE_ap_slong, false) + +#undef CONCAT_OP_WITH_INT + +#define CONCAT_SHIFT_WITH_INT(C_TYPE, OP) \ + template \ + INLINE ap_uint<_AP_W + _AP_W1> operator OP( \ + const ap_concat_ref<_AP_W, _AP_T, _AP_W1, _AP_T1> lhs, C_TYPE rhs) { \ + return ap_uint<_AP_W + _AP_W1>(lhs).get() OP int(rhs); \ + } + +// FIXME int(rhs) may loose precision. + +CONCAT_SHIFT_WITH_INT(int, <<) +CONCAT_SHIFT_WITH_INT(unsigned int, <<) +CONCAT_SHIFT_WITH_INT(long, <<) +CONCAT_SHIFT_WITH_INT(unsigned long, <<) +CONCAT_SHIFT_WITH_INT(ap_slong, <<) +CONCAT_SHIFT_WITH_INT(ap_ulong, <<) + +CONCAT_SHIFT_WITH_INT(int, >>) +CONCAT_SHIFT_WITH_INT(unsigned int, >>) +CONCAT_SHIFT_WITH_INT(long, >>) +CONCAT_SHIFT_WITH_INT(unsigned long, >>) +CONCAT_SHIFT_WITH_INT(ap_slong, >>) +CONCAT_SHIFT_WITH_INT(ap_ulong, >>) + +#endif // ifndef __cplusplus else +#endif // ifndef __AP_INT_REF_H__ else + +// -*- cpp -*- + + diff --git a/vitis/v2021_2/ap_int_special.h b/vitis/v2021_2/ap_int_special.h new file mode 100755 index 00000000..1dbd325d --- /dev/null +++ b/vitis/v2021_2/ap_int_special.h @@ -0,0 +1,253 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef AP_INT_SPECIAL_H +#define AP_INT_SPECIAL_H +#ifndef __SYNTHESIS__ +#include +#include +#endif +// FIXME AP_AUTOCC cannot handle many standard headers, so declare instead of +// include. +// #include +namespace std { +template class complex; +} + +/* + TODO: Modernize the code using C++11/C++14 + 1. constexpr http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0415r0.html + 2. move constructor +*/ + +namespace std { +/* + Specialize std::complex to zero initialization ap_int. + + To reduce the area cost, ap_int is not zero initialized, just like basic + types float or double. However, libstdc++ provides specialization for float, + double and long double, initializing image part to 0 when not specified. + + This has become a difficulty in switching legacy code from these C types to + ap_int. To ease the tranform of legacy code, we have to implement + specialization of std::complex<> for our type. + + As ap_int is a template, it is impossible to specialize only the methods + that causes default initialization of value type in std::complex<>. An + explicit full specialization of the template class has to be done, covering + all the member functions and operators of std::complex<> as specified + in standard 26.2.4 and 26.2.5. +*/ +template +class complex > { + public: + typedef ap_int<_AP_W> _Tp; + typedef _Tp value_type; + + // 26.2.4/1 + // Constructor without argument + // Default initialize, so that in dataflow, the variable is only written once. + complex() : _M_real(_Tp()), _M_imag(_Tp()) {} + // Constructor with ap_int. + // Zero initialize image part when not specified, so that `C(1) == C(1,0)` + complex(const _Tp &__r, const _Tp &__i = _Tp(0)) + : _M_real(__r), _M_imag(__i) {} + + // Constructor with another complex number + template + complex(const complex<_Up> &__z) : _M_real(__z.real()), _M_imag(__z.imag()) {} + +#if __cplusplus >= 201103L + const _Tp& real() const { return _M_real; } + const _Tp& imag() const { return _M_imag; } +#else + _Tp& real() { return _M_real; } + const _Tp& real() const { return _M_real; } + _Tp& imag() { return _M_imag; } + const _Tp& imag() const { return _M_imag; } +#endif + + void real(_Tp __val) { _M_real = __val; } + + void imag(_Tp __val) { _M_imag = __val; } + + // Assign this complex number with ap_int. + // Zero initialize image poarrt, so that `C c; c = 1; c == C(1,0);` + complex<_Tp> &operator=(const _Tp __t) { + _M_real = __t; + _M_imag = _Tp(0); + return *this; + } + + // 26.2.5/1 + // Add ap_int to this complex number. + complex<_Tp> &operator+=(const _Tp &__t) { + _M_real += __t; + return *this; + } + + // 26.2.5/3 + // Subtract ap_int from this complex number. + complex<_Tp> &operator-=(const _Tp &__t) { + _M_real -= __t; + return *this; + } + + // 26.2.5/5 + // Multiply this complex number by ap_int. + complex<_Tp> &operator*=(const _Tp &__t) { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + // Divide this complex number by ap_int. + complex<_Tp> &operator/=(const _Tp &__t) { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + // Assign complex number to this complex number. + template + complex<_Tp> &operator=(const complex<_Up> &__z) { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + // Add complex number to this. + template + complex<_Tp> &operator+=(const complex<_Up> &__z) { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + // Subtract complex number from this. + template + complex<_Tp> &operator-=(const complex<_Up> &__z) { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // Multiply this by complex number. + template + complex<_Tp> &operator*=(const complex<_Up> &__z) { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // Divide this by complex number. + template + complex<_Tp> &operator/=(const complex<_Up> &__z) { + complex<_Tp> cj (__z.real(), -__z.imag()); + complex<_Tp> a = (*this) * cj; + complex<_Tp> b = cj * __z; + _M_real = a.real() / b.real(); + _M_imag = a.imag() / b.real(); + return *this; + } + + private: + _Tp _M_real; + _Tp _M_imag; + +}; // class complex > + + +/* + Non-member operations + These operations are not required by standard in 26.2.6, but libstdc++ + defines them for + float, double or long double's specialization. +*/ +// Compare complex number with ap_int. +template +inline bool operator==(const complex > &__x, const ap_int<_AP_W> &__y) { + return __x.real() == __y && + __x.imag() == 0; +} + +// Compare ap_int with complex number. +template +inline bool operator==(const ap_int<_AP_W> &__x, const complex > &__y) { + return __x == __y.real() && + 0 == __y.imag(); +} + +// Compare complex number with ap_int. +template +inline bool operator!=(const complex > &__x, const ap_int<_AP_W> &__y) { + return __x.real() != __y || + __x.imag() != 0; +} + +// Compare ap_int with complex number. +template +inline bool operator!=(const ap_int<_AP_W> &__x, const complex > &__y) { + return __x != __y.real() || + 0 != __y.imag(); +} + +} // namespace std + +#endif // ifndef AP_INT_SPECIAL_H + + diff --git a/vitis/v2021_2/ap_shift_reg.h b/vitis/v2021_2/ap_shift_reg.h new file mode 100755 index 00000000..7f0c844c --- /dev/null +++ b/vitis/v2021_2/ap_shift_reg.h @@ -0,0 +1,134 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + +*/ + +#ifndef __SIM_AP_SHIFT_REG_H__ +#define __SIM_AP_SHIFT_REG_H__ + + +/* + * This file contains a C++ model of shift register. + * It defines C level simulation model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#ifdef __HLS_SYN__ +#error ap_shift_reg simulation header file is not applicable for synthesis +#else + +#include + +////////////////////////////////////////////// +// C level simulation model for ap_shift_reg +////////////////////////////////////////////// +template +class ap_shift_reg +{ + public: + /// Constructors + ap_shift_reg() { } + ap_shift_reg(const char* name) { (void)name; } + /// Destructor + virtual ~ap_shift_reg() { } + + private: + /// Make copy constructor and assignment operator private + ap_shift_reg(const ap_shift_reg< __SHIFT_T__, __SHIFT_DEPTH__ >& shreg) + { + for (unsigned i = 0; i < __SHIFT_DEPTH__; ++i) + Array[i] = shreg.Array[i]; + } + + ap_shift_reg& operator = (const ap_shift_reg< __SHIFT_T__, + __SHIFT_DEPTH__ >& shreg) + { + for (unsigned i = 0; i < __SHIFT_DEPTH__; ++i) + Array[i] = shreg.Array[i]; + return *this; + } + + public: + // Shift the queue, push to back and read from a given address. + __SHIFT_T__ shift(__SHIFT_T__ DataIn, + unsigned int Addr = __SHIFT_DEPTH__ - 1, bool Enable = true) + { + assert(Addr < __SHIFT_DEPTH__ && + "Out-of-bound shift is found in ap_shift_reg."); + __SHIFT_T__ ret = Array[Addr]; + if (Enable) { + for (unsigned int i = __SHIFT_DEPTH__ - 1; i > 0; --i) + Array[i] = Array[i-1]; + Array[0] = DataIn; + } + return ret; + } + + // Read from a given address. + __SHIFT_T__ read(unsigned int Addr = __SHIFT_DEPTH__ - 1) const + { + assert(Addr < __SHIFT_DEPTH__ && + "Out-of-bound read is found in ap_shift_reg."); + return Array[Addr]; + } + + protected: + __SHIFT_T__ Array[__SHIFT_DEPTH__]; +}; + +#endif //__SYNTHESIS__ + +#endif //__cplusplus + +#endif //__SIM_AP_SHIFT_REG_H__ + + diff --git a/vitis/v2021_2/ap_stream.h b/vitis/v2021_2/ap_stream.h new file mode 100755 index 00000000..e7b9eaea --- /dev/null +++ b/vitis/v2021_2/ap_stream.h @@ -0,0 +1,285 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + */ + +#ifndef __SIM_AP_STREAM__ +#define __SIM_AP_STREAM__ + +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#ifdef __HLS_SYN__ +#error ap_stream simulation header file is not applicable for synthesis +#else + +#ifdef _MSC_VER +#define STRINGIZE_HELPER(x) #x +#define STRINGIZE(x) STRINGIZE_HELPER(x) +#define WARNING(desc) message(__FILE__ "(" STRINGIZE(__LINE__) ") : warning: " #desc) +#error WARNING(AP_STREAM macros are deprecated. Please use hls::stream<> from "hls_stream.h" instead.) +#else +#error AP_STREAM macros are deprecated. Please use hls::stream<> from "hls_stream.h" instead. +#endif + +#include +#include +#ifndef AP_STREAM_MAX_QUEUE_SIZE +//#define AP_STREAM_MAX_QUEUE_SIZE (1920*1080) +#define AP_STREAM_MAX_QUEUE_SIZE 0 // MAX_SIZE=0 leads to an elastic stream +#endif + +#define C_EXTERN extern "C" // avoid C++ style name mangling + +#define _paste(F,A) __AP_##F(A) + +// Blocking Read & Write +#define AP_STREAM_READ(N,V) AP_STREAM_READ_FN(N)(V) +#define __AP_STREAM_READ_FN(N) ap_generic_stream_read_##N +#define AP_STREAM_READ_FN(name) _paste(STREAM_READ_FN,name) +#define AP_STREAM_WRITE(N,D) AP_STREAM_WRITE_FN(N)(D) +#define __AP_STREAM_WRITE_FN(N) ap_generic_stream_write_##N +#define AP_STREAM_WRITE_FN(name) _paste(STREAM_WRITE_FN,name) + +// Nonblocking Read & Write +#define AP_STREAM_READ_NB(N,V) AP_STREAM_READ_NB_FN(N)(V) +#define __AP_STREAM_READ_NB_FN(N) ap_generic_stream_read_nb_##N +#define AP_STREAM_READ_NB_FN(name) _paste(STREAM_READ_NB_FN,name) +#define AP_STREAM_WRITE_NB(N,D) AP_STREAM_WRITE_NB_FN(N)(D) +#define __AP_STREAM_WRITE_NB_FN(N) ap_generic_stream_write_nb_##N +#define AP_STREAM_WRITE_NB_FN(name) _paste(STREAM_WRITE_NB_FN,name) + +// Empty & Full +#define AP_STREAM_EMPTY(N) AP_STREAM_EMPTY_FN(N)() +#define __AP_STREAM_EMPTY_FN(N) ap_generic_stream_empty_##N +#define AP_STREAM_EMPTY_FN(name) _paste(STREAM_EMPTY_FN,name) +#define AP_STREAM_FULL(N) AP_STREAM_FULL_FN(N)() +#define __AP_STREAM_FULL_FN(N) ap_generic_stream_full_##N +#define AP_STREAM_FULL_FN(name) _paste(STREAM_FULL_FN,name) + +/* Return signed char to be consistent with syn model, which returns + * signed char for C compatibility. + */ + +#define AP_STREAM_INTERFACE(type, name) \ + C_EXTERN void ap_generic_stream_read_##name(type& value); \ + C_EXTERN void ap_generic_stream_write_##name(type data); \ + C_EXTERN signed char ap_generic_stream_read_nb_##name(type& value); \ + C_EXTERN signed char ap_generic_stream_write_nb_##name(type data); \ + C_EXTERN signed char ap_generic_stream_empty_##name(); \ + C_EXTERN signed char ap_generic_stream_full_##name(); + +#define AP_STREAM_SIZE(type, name, size) \ + ap_stream ap_stream_##name(size, #name); \ + AP_STREAM_INTERFACE_DEF(type, name) + +#define AP_STREAM_INTERFACE_DEF(type, name) \ + C_EXTERN void ap_generic_stream_read_##name(type& value) { \ + value = ap_stream_##name.pop(); \ + } \ + C_EXTERN void ap_generic_stream_write_##name(type data) { \ + ap_stream_##name.push(data); \ + } \ + C_EXTERN signed char ap_generic_stream_read_nb_##name(type& value) { \ + signed char empty_n = ap_stream_##name.read(value); \ + return empty_n; \ + } \ + C_EXTERN signed char ap_generic_stream_write_nb_##name(type data) { \ + signed char full_n = ap_stream_##name.write(data); \ + return full_n; \ + } \ + C_EXTERN signed char ap_generic_stream_empty_##name() { \ + return ap_stream_##name.empty(); \ + } \ + C_EXTERN signed char ap_generic_stream_full_##name() { \ + return ap_stream_##name.full(); \ + } + +// Extern stream +#define EXTERN_AP_STREAM(type, name) \ + extern ap_stream ap_stream_##name; \ + AP_STREAM_INTERFACE(type, name) +#define EXTERN_AP_STREAM_SIZE(type, name, size) EXTERN_AP_STREAM(type, name) + +#ifdef AESL_TB +#define AP_STREAM(type, name) EXTERN_AP_STREAM(type, name) +#else +#define AP_STREAM(type, name) AP_STREAM_SIZE(type, name, 0) +#endif // AESL_TB + +// FIFO stream +#define AP_STREAM_FIFO(type, name) AP_STREAM(type, name) +#define AP_STREAM_FIFO_SIZE(type, name, size) AP_STREAM_SIZE(type, name, size) +#define EXTERN_AP_STREAM_FIFO(type, name) EXTERN_AP_STREAM(type, name) +#define EXTERN_AP_STREAM_FIFO_SIZE(type, name, size) EXTERN_AP_STREAM_SIZE(type, name, size) +// HS stream +#define AP_STREAM_HS(type, name) AP_STREAM(type, name) +#define AP_STREAM_HS_SIZE(type, name, size) AP_STREAM_SIZE(type, name, size) +#define EXTERN_AP_STREAM_HS(type, name) EXTERN_AP_STREAM(type, name) +#define EXTERN_AP_STREAM_HS_SIZE(type, name, size) EXTERN_AP_STREAM_SIZE(type, name, size) + +/////////////// ap_stream class ////////////// +template +class ap_stream { + + protected: + const char* _name; + std::deque _data; // container for the elements + unsigned _capacity; + + public: + // default constructor + ap_stream(const char* name) { + // capacity set to predefined maximum + _capacity = AP_STREAM_MAX_QUEUE_SIZE; + _name = name; + } + + ap_stream(unsigned int max, const char* name) { + _capacity = (max > 0) ? max : AP_STREAM_MAX_QUEUE_SIZE; + _name = name; + } + + /// Destructor + /// Check status of the queue + virtual ~ap_stream() { + if (!empty()) + printf("WARNING: Stream \'%s\' remains non-empty when the program exits.\n", _name); + } + + typename std::deque::size_type size() const { + return _data.size(); + } + + typedef typename std::deque::const_iterator iterator; + + iterator begin() const { return _data.begin(); } + iterator end() const { return _data.end(); } + + bool empty() const { return _data.empty(); } + bool full() const { + if (_capacity > 0) + return (_data.size() >= _capacity); + return false; + } + + bool read(T& head) { + if (empty()) { + head = T(); + return false; + } + head = pop(); + return true; + } + + T read() { return pop(); } + + bool write(const T& tail) { + if (full()) + return false; + push(tail); + return true; + } + + void push(const T& elem) { + if (!full()) + _data.push_back(elem); + else { + //printf("WARNING: Pushing a full FIFO \'%s\'; increasing FIFO capacity from %d to %d.\n", _name, _capacity, _capacity + 1); + //assert(0); + ++_capacity; + _data.push_back(elem); + } + } + + T pop() { + if (_data.empty()) { + printf("WARNING: Popping an empty FIFO \'%s\'.\n", _name); + return T(); + //assert(0); + } + T elem(_data.front()); + _data.pop_front(); + return elem; + } + + T front() { + if (_data.empty()) { + printf("WARNING: Peeking the front of an empty FIFO \'%s\'.\n", _name); + return T(); + //assert(0); + } + return _data.front(); + } + + T back() { + if (_data.empty()) { + printf("WARNING: Peeking the back of an empty FIFO \'%s\'.\n", _name); + return T(); + //assert(0); + } + return _data.back(); + } + + /// Fifo size + size_t size() { + return _data.size(); + } +}; + +#endif //__SYNTHESIS__ + +#endif //__cplusplus + +#endif //__SIM_AP_STREAM__ + + diff --git a/vitis/v2021_2/ap_utils.h b/vitis/v2021_2/ap_utils.h new file mode 100755 index 00000000..35417802 --- /dev/null +++ b/vitis/v2021_2/ap_utils.h @@ -0,0 +1,81 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* ap_utils.h */ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_UTILS_H_ +#define _AUTOPILOT_UTILS_H_ + + +#ifndef __SYNTHESIS__ +#include +#include +#endif + +#ifdef __CYGWIN__ +# ifdef feof +# undef feof +# endif + +# ifdef ferror +# undef ferror +# endif +#endif + + +#include "etc/autopilot_ssdm_op.h" + + +#endif /* #ifndef _AUTOPILOT_UTILS_H_ */ + + diff --git a/vitis/v2021_2/autoesl_tech.h b/vitis/v2021_2/autoesl_tech.h new file mode 100755 index 00000000..524e1668 --- /dev/null +++ b/vitis/v2021_2/autoesl_tech.h @@ -0,0 +1,65 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* autopilot_tech.h */ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_TECH_H_ +#define _AUTOPILOT_TECH_H_ + +#include "ap_cint.h" +#include "ap_utils.h" + +#endif /* #ifndef _AUTOPILOT_TECH_H_ */ + + + diff --git a/vitis/v2021_2/autopilot_tech.h b/vitis/v2021_2/autopilot_tech.h new file mode 100755 index 00000000..2667a519 --- /dev/null +++ b/vitis/v2021_2/autopilot_tech.h @@ -0,0 +1,19 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* autopilot_tech.h */ +/* + * __VIVADO_HLS_COPYRIGHT-INFO__ + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_TECH_H_ +#define _AUTOPILOT_TECH_H_ + +#include "ap_cint.h" +#include "ap_utils.h" + +#endif /* #ifndef _AUTOPILOT_TECH_H_ */ + + + diff --git a/vitis/v2021_2/clc.h b/vitis/v2021_2/clc.h new file mode 100755 index 00000000..ba0ddec7 --- /dev/null +++ b/vitis/v2021_2/clc.h @@ -0,0 +1,7209 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 + +/* + Copyright 2013-2017 Xilinx, Inc. All rights reserved. + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"\). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. +*/ +#ifndef _CLC_H_ +#define _CLC_H_ + + +#define __xilinx__ +#define global __global +#define local __local +#define constant __constant +#define private __private + +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +//typedef image begin +#define image1d_t unsigned char* +#define image1d_buffer_t unsigned char* +#define image1d_array_t unsigned char* +#define image2d_t unsigned int* +#define image2d_array_t unsigned int* +#define image2d_depth_t unsigned int* +#define image2d_array_depth_t unsigned int* +#define image3d_t int* +#define sampler_t unsigned int +#endif + +#define CLK_SNORM_INT8 0x10D0 +#define CLK_SNORM_INT16 0x10D1 +#define CLK_UNORM_INT8 0x10D2 +#define CLK_UNORM_INT16 0x10D3 +#define CLK_UNORM_SHORT_565 0x10D4 +#define CLK_UNORM_SHORT_555 0x10D5 +#define CLK_UNORM_INT_101010 0x10D6 +#define CLK_SIGNED_INT8 0x10D7 +#define CLK_SIGNED_INT16 0x10D8 +#define CLK_SIGNED_INT32 0x10D9 +#define CLK_UNSIGNED_INT8 0x10DA +#define CLK_UNSIGNED_INT16 0x10DB +#define CLK_UNSIGNED_INT32 0x10DC +#define CLK_HALF_FLOAT 0x10DD +#define CLK_FLOAT 0x10DE + +/* get_image_channel_order flags */ +#define CLK_R 0x10B0 +#define CLK_A 0x10B1 +#define CLK_RG 0x10B2 +#define CLK_RA 0x10B3 +#define CLK_RGB 0x10B4 +#define CLK_RGBA 0x10B5 +#define CLK_BGRA 0x10B6 +#define CLK_ARGB 0x10B7 +#define CLK_INTENSITY 0x10B8 +#define CLK_LUMINANCE 0x10B9 +#define CLK_Rx 0x10BA +#define CLK_RGx 0x10BB +#define CLK_RGBx 0x10BC + +/* sampler normalized coords */ +#define CLK_NORMALIZED_COORDS_FALSE 0x0000 +#define CLK_NORMALIZED_COORDS_TRUE 0x0001 + +/* sampler addressing mode */ +#define CLK_ADDRESS_NONE 0x0000 +#define CLK_ADDRESS_CLAMP_TO_EDGE 0x0002 +#define CLK_ADDRESS_CLAMP 0x0004 +#define CLK_ADDRESS_REPEAT 0x0006 +#define CLK_ADDRESS_MIRRORED_REPEAT 0x0008 + +/* sampler filter mode */ +#define CLK_FILTER_NEAREST 0x0000 +#define CLK_FILTER_LINEAR 0x0010 + +//typedef image end +//SPIR Specification +//SPIR section 2.1.1 Built-in Scalar Data Types +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; +//typedef struct spirhalf* spirhalf; //todo +#if defined(__SPIR32__) +typedef unsigned int size_t; +typedef unsigned int ptrdiff_t; +typedef int intptr_t; +typedef unsigned int uintptr_t; +#elif defined(__SPIR64__) +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +typedef unsigned long long size_t; +typedef unsigned long long ptrdiff_t; +typedef long long intptr_t; +typedef unsigned long long uintptr_t; +#else +typedef unsigned long size_t; +typedef unsigned long ptrdiff_t; +typedef long intptr_t; +typedef unsigned long uintptr_t; +#endif +#else +#error "must compile using spir or spir64 target" +#endif +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(char)))) char char2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(char)))) char char3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(char)))) char char4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(char)))) char char8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(char)))) char char16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(uchar)))) uchar uchar2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(uchar)))) uchar uchar3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(uchar)))) uchar uchar4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(uchar)))) uchar uchar8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(uchar)))) uchar uchar16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(short)))) short short2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(short)))) short short3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(short)))) short short4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(short)))) short short8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(short)))) short short16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(ushort)))) ushort ushort2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(ushort)))) ushort ushort3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(ushort)))) ushort ushort4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(ushort)))) ushort ushort8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(ushort)))) ushort ushort16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(int)))) int int2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(int)))) int int3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(int)))) int int4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(int)))) int int8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(int)))) int int16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(uint)))) uint uint2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(uint)))) uint uint3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(uint)))) uint uint4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(uint)))) uint uint8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(uint)))) uint uint16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(long)))) long long2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(long)))) long long3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(long)))) long long4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(long)))) long long8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(long)))) long long16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(ulong)))) ulong ulong2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(ulong)))) ulong ulong3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(ulong)))) ulong ulong4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(ulong)))) ulong ulong8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(ulong)))) ulong ulong16; +typedef __attribute__(( ext_vector_type(2) )) __attribute__ ((aligned(2*sizeof(float)))) float float2; +typedef __attribute__(( ext_vector_type(3) )) __attribute__ ((aligned(4*sizeof(float)))) float float3; +typedef __attribute__(( ext_vector_type(4) )) __attribute__ ((aligned(4*sizeof(float)))) float float4; +typedef __attribute__(( ext_vector_type(8) )) __attribute__ ((aligned(8*sizeof(float)))) float float8; +typedef __attribute__(( ext_vector_type(16) )) __attribute__ ((aligned(16*sizeof(float)))) float float16; +typedef void* reserve_id_t; +//SPIR section 2.10.1.1 Synchronization Functions +#define CLK_LOCAL_MEM_FENCE 0 +#define CLK_GLOBAL_MEM_FENCE 1 +//OpenCL Section 6.10 Preprocessor Directives and Macros +//__FILE__ defined by GNU CPP +//__LINE__ defined by GNU CPP +#define __OPENCL_VERSION__ CL_VERSION_1_2 +#define CL_VERSION_1_0 100 +#define CL_VERSION_1_1 110 +#define CL_VERSION_1_2 120 + +#ifndef __OPENCL_C_VERSION__ +#define __OPENCL_C_VERSION__ CL_VERSION_1_2 +#endif + +#define __ENDIAN_LITTLE__ 1 +#define __kernel_exec(X,typen) __kernel __attribute__((work_group_size_hint(X,1,1)))\ + __attribute__(vec_type_hint(typen)) +#define kernel_exec(X,typen) __kernel_exec(X,typen) +//define __IMAGE_SUPPORT__ unsupported +//define __FAST_RELAXED_MATH__ unsupported +//OpenCL Section 6.12.3 Integer Function numeric constants +#define CHAR_BIT 8 +#define CHAR_MAX SCHAR_MAX +#define CHAR_MIN SCHAR_MIN +#define INT_MAX 2147483647 +#define INT_MIN (-2147483647 - 1) +#define LONG_MAX 0x7fffffffffffffffL +#define LONG_MIN (-0x7fffffffffffffffL -1) +#define SCHAR_MAX 127 +#define SCHAR_MIN (-127 - 1) +#define SHRT_MAX 32767 +#define SHRT_MIN (-32767 -1) +#define UCHAR_MAX 255 +#define USHRT_MAX 65535 +#define UINT_MAX 0xffffffff +#define ULONG_MAX 0xffffffffffffffffUL +//OpenCL Section 6.12.2.1 Floating-point macros and pragmas +#define FLT_DIG 6 +#define FLT_MANT_DIG 24 +#define FLT_MAX_10_EXP +38 +#define FLT_MAX_EXP +128 +#define FLT_MIN_10_EXP -37 +#define FLT_MIN_EXP -125 +#define FLT_RADIX 2 +#define FLT_MAX 0x1.fffffep127f +#define FLT_MIN 0x1.0p-126f +#define FLT_EPSILON 0x1.0p-23f +#define FP_ILOGB0 (-2147483647 - 1) +#define FP_ILOGBNAN (-2147483647 - 1) +//OpenCL Section 6.12.2 Math functions P251 +//The following constants were generated using generateclconstants +#define M_E_F 2.71828174591064f +#define M_LOG2E_F 1.44269502162933f +#define M_LOG10E_F 0.434294492006302f +#define M_LN2_F 0.6931471824646f +#define M_LN10_F 2.30258512496948f +#define M_PI_F 3.14159274101257f +#define M_PI_2_F 1.57079637050629f +#define M_PI_4_F 0.785398185253143f +#define M_1_PI_F 0.318309873342514f +#define M_2_PI_F 0.636619746685028f +#define M_2_SQRTPI_F 1.1283792257309f +#define M_SQRT2_F 1.41421353816986f +#define M_SQRT1_2_F 0.70710676908493f +#define MAXFLOAT 3.40282346638529e+38f +//from include/bits/huge_valf.h +#define HUGE_VALF \ + (__extension__ \ + ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \ + { __l: 0x7f800000UL }).__d) +#define INFINITY HUGE_VALF +//from include/bits/nan.h +# define NAN \ + (__extension__ \ + ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; }) \ + { __l: 0x7fc00000UL }).__d) +//from include/bits/huge_val.h +# define HUGE_VAL \ + ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ + { __l: 0x7ff0000000000000ULL }).__d) + +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +int __attribute__((overloadable)) printf(__constant char *format, ...); +int xilinx_bprintf(__global char *buffer, __constant char *format, ...); +#else +#ifdef __SYNTHESIS__ +#if __OPENCL_C_VERSION__ >= CL_VERSION_1_2 +// OpenCL v1.2 s6.12.13, v2.0 s6.13.13 - printf + +int printf(__constant const char* st, ...); +#endif +#else +__attribute__((noinline)) int __cl_printf(__constant char *__restrict fmt, ...); +#define printf __cl_printf +#endif + +#endif + + +uint __attribute__((overloadable)) get_work_dim(void); +size_t __attribute__((overloadable)) get_global_size(uint dimindx); +size_t __attribute__((overloadable)) get_global_id(uint dimindx); +size_t __attribute__((overloadable)) get_local_size(uint dimindx); +size_t __attribute__((overloadable)) get_local_id(uint dimindx); +size_t __attribute__((overloadable)) get_num_groups(uint dimindx); +size_t __attribute__((overloadable)) get_group_id(uint dimindx); +size_t __attribute__((overloadable)) get_global_offset(uint dimindx); +size_t __attribute__((overloadable)) get_local_linear_id(void); +size_t __attribute__((overloadable)) get_global_linear_id(void); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char3 (char4 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar2 (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar3 (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar3 (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (char16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) as_short (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (char16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (char4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (char8 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (char16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (char4 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (char8 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (char16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (char8 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (char16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (char8 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (char16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (char4 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (char8 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (char16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) as_char (uchar f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char2 (uchar2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char3 (uchar3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char3 (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (uchar4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (uchar8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (uchar16 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar3 (uchar4 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) as_short (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (uchar16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (uchar4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (uchar8 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (uchar16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (uchar4 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (uchar8 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (uchar16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (uchar8 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (uchar16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (uchar8 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (uchar16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (uchar4 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (uchar8 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (uchar16 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char2 (short f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (short2 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (short4 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (short8 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar2 (short f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (short2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (short4 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (short8 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short3 (short4 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort3 (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort3 (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (short16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (short16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (short4 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (short8 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (short16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (short4 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (short8 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (short16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (short16 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char2 (ushort f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (ushort2 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (ushort4 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (ushort8 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar2 (ushort f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (ushort2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (ushort4 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (ushort8 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) as_short (ushort f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (ushort2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short3 (ushort3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short3 (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (ushort4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (ushort8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (ushort16 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort3 (ushort4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (ushort16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (ushort4 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (ushort8 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (ushort16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (ushort4 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (ushort8 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (ushort16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (ushort16 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (int f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (int2 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (int f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (int2 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (int4 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (int f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (int2 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (int4 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (int8 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (int f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (int2 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (int4 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (int8 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (int4 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (int16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (int16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (int16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (int f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (int2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (int3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (int4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (int8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (int16 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (uint f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (uint2 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (uint f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (uint2 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (uint4 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (uint f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (uint2 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (uint4 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (uint8 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (uint f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (uint2 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (uint4 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (uint8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (uint f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (uint2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (uint3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (uint4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (uint8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (uint16 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (uint4 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (uint16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) as_float (uint f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (uint2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (uint3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (uint4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (uint8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (uint16 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (long f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (long2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (long f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (long2 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (long f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (long2 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (long f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (long2 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (long4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (long f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (long2 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (long4 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (long8 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (long f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (long2 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (long4 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (long8 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long3 (long4 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong3 (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong3 (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong16 (long16 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (long f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (long2 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (long4 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (ulong f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (ulong2 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (ulong f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (ulong2 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (ulong f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (ulong2 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (ulong f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (ulong2 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (ulong4 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (ulong f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (ulong2 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (ulong4 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (ulong8 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (ulong f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (ulong2 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (ulong4 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (ulong8 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (ulong f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (ulong2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long3 (ulong3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long3 (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (ulong4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (ulong8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long16 (ulong16 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong3 (ulong4 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float2 (ulong f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (ulong2 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float8 (ulong4 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float16 (ulong8 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char4 (float f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char8 (float2 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_char16 (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar4 (float f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar8 (float2 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uchar16 (float4 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short2 (float f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short4 (float2 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short8 (float4 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_short16 (float8 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort2 (float f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort4 (float2 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort8 (float4 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ushort16 (float8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) as_int (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int2 (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int3 (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int4 (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int8 (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_int16 (float16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint (float f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint2 (float2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (float3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint3 (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint4 (float4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint8 (float8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) as_uint16 (float16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) as_long (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long2 (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long4 (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_long8 (float16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong2 (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong4 (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) as_ulong8 (float16 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float4 (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) as_float3 (float4 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (char16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (char f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (char2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (char3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (char4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (char8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (char16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (char f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (char2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (char3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (char4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (char8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (char f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (char2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (char3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (char4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (char8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (char16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (char f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (char2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (char3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (char4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (char8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (char16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (char f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (char2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (char3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (char4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (char8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (char16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (char f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (char2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (char3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (char4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (char8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (char16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (char f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (char f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (char2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (char2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (char3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (char3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (char4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (char4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (char8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (char8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (char16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (char16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (uchar f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (uchar2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (uchar3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (uchar4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (uchar8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (uchar16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (uchar f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (uchar2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (uchar3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (uchar4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (uchar8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (uchar f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (uchar2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (uchar3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (uchar4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (uchar8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (uchar16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (uchar f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (uchar2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (uchar3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (uchar4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (uchar8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (uchar16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (uchar f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (uchar2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (uchar3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (uchar4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (uchar8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (uchar16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (uchar f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (uchar2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (uchar3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (uchar4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (uchar8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (uchar16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (uchar f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (uchar2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (uchar3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (uchar4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (uchar8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (uchar16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (uchar f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (uchar f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (uchar2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (uchar2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (uchar3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (uchar3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (uchar4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (uchar4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (uchar8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (uchar8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (uchar16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (uchar16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (short f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (short2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (short3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (short4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (short8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (short16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (short f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (short2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (short3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (short4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (short8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (short16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (short f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (short2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (short3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (short4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (short8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (short16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (short f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (short2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (short3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (short4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (short8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (short16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (short f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (short2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (short3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (short4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (short8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (short16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (short f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (short2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (short3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (short4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (short8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (short16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (short f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (short f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (short2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (short2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (short3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (short3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (short4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (short4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (short8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (short8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (short16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (short16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (ushort f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (ushort2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (ushort3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (ushort4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (ushort8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (ushort16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (ushort f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (ushort2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (ushort3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (ushort4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (ushort8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (ushort16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (ushort f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (ushort2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (ushort3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (ushort4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (ushort8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (ushort16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (ushort f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (ushort2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (ushort3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (ushort4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (ushort8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (ushort f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (ushort2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (ushort3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (ushort4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (ushort8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (ushort16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (ushort f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (ushort2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (ushort3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (ushort4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (ushort8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (ushort16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (ushort f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (ushort2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (ushort3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (ushort4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (ushort8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (ushort16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (ushort f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (ushort f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (ushort2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (ushort2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (ushort3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (ushort3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (ushort4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (ushort4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (ushort8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (ushort8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (ushort16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (ushort16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (int f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (int2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (int3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (int4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (int8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (int16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (int f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (int2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (int3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (int4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (int8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (int16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (int f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (int2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (int3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (int4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (int8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (int16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (int f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (int2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (int3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (int4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (int8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (int16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (int f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (int2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (int3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (int4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (int8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (int16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (int f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (int2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (int3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (int4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (int8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (int16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (int f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (int f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (int2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (int2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (int3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (int3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (int4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (int4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (int8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (int8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (int16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (int16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (uint f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (uint2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (uint3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (uint4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (uint8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (uint16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (uint f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (uint2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (uint3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (uint4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (uint8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (uint16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (uint f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (uint2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (uint3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (uint4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (uint8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (uint16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (uint f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (uint2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (uint3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (uint4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (uint8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (uint16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (uint f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (uint2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (uint3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (uint4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (uint8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (uint16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (uint f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (uint2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (uint3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (uint4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (uint8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (uint f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (uint2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (uint3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (uint4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (uint8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (uint16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (uint f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (uint f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (uint2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (uint2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (uint3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (uint3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (uint4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (uint4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (uint8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (uint8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (uint16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (uint16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (long f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (long2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (long3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (long4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (long8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (long16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (long f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (long2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (long3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (long4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (long8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (long16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (long f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (long2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (long3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (long4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (long8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (long16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (long f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (long2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (long3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (long4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (long8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (long16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (long f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (long2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (long3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (long4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (long8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (long16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (long f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (long2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (long3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (long4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (long8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (long16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (long16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (long f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (long f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (long2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (long2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (long3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (long3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (long4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (long4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (long8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (long8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (long16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (long16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (ulong f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (ulong2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (ulong3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (ulong4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (ulong8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (ulong16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (ulong f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (ulong2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (ulong3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (ulong4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (ulong8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (ulong16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (ulong f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (ulong2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (ulong3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (ulong4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (ulong8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (ulong16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (ulong f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (ulong2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (ulong3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (ulong4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (ulong8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (ulong16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (ulong f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (ulong2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (ulong3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (ulong4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (ulong8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (ulong16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (ulong f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (ulong2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (ulong3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (ulong4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (ulong8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (ulong16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (ulong f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (ulong2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (ulong3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (ulong4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (ulong8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (ulong16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (ulong16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (ulong f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (ulong f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (ulong2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (ulong2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (ulong3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (ulong3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (ulong4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (ulong4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (ulong8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (ulong8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (ulong16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (ulong16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rte (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtz (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtp (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_rtn (float f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2 (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rte (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtz (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtp (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_rtn (float2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3 (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rte (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtz (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtp (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_rtn (float3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4 (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rte (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtz (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtp (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_rtn (float4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8 (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rte (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtz (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtp (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_rtn (float8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16 (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rte (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtz (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtp (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_rtn (float16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rte (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtz (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtp (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_rtn (float f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2 (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rte (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtz (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtp (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_rtn (float2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3 (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rte (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtz (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtp (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_rtn (float3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4 (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rte (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtz (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtp (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_rtn (float4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8 (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rte (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtz (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtp (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_rtn (float8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16 (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rte (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtz (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtp (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_rtn (float16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rte (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtz (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtp (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_rtn (float f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2 (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rte (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtz (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtp (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_rtn (float2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3 (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rte (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtz (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtp (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_rtn (float3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4 (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rte (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtz (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtp (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_rtn (float4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8 (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rte (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtz (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtp (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_rtn (float8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16 (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rte (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtz (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtp (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_rtn (float16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rte (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtz (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtp (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_rtn (float f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2 (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rte (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtz (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtp (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_rtn (float2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3 (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rte (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtz (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtp (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_rtn (float3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4 (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rte (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtz (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtp (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_rtn (float4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8 (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rte (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtz (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtp (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_rtn (float8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16 (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rte (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtz (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtp (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_rtn (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rte (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtz (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtp (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_rtn (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2 (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rte (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtz (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtp (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_rtn (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3 (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rte (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtz (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtp (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_rtn (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4 (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rte (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtz (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtp (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_rtn (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8 (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rte (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtz (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtp (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_rtn (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16 (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rte (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtz (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtp (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_rtn (float16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rte (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtz (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtp (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_rtn (float f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2 (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rte (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtz (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtp (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_rtn (float2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3 (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rte (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtz (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtp (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_rtn (float3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4 (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rte (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtz (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtp (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_rtn (float4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8 (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rte (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtz (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtp (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_rtn (float8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16 (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rte (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtz (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtp (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_rtn (float16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rte (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtz (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtp (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_rtn (float f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2 (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rte (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtz (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtp (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_rtn (float2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3 (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rte (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtz (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtp (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_rtn (float3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4 (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rte (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtz (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtp (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_rtn (float4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8 (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rte (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtz (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtp (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_rtn (float8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16 (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rte (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtz (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtp (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_rtn (float16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rte (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtz (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtp (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_rtn (float f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2 (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rte (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtz (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtp (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_rtn (float2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3 (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rte (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtz (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtp (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_rtn (float3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4 (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rte (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtz (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtp (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_rtn (float4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8 (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rte (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtz (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtp (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_rtn (float8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16 (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rte (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtz (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtp (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_rtn (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rte (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtz (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtp (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float_rtn (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2 (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rte (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtz (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtp (float2 f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float2_rtn (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3 (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rte (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtz (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtp (float3 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float3_rtn (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4 (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rte (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtz (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtp (float4 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float4_rtn (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8 (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rte (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtz (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtp (float8 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float8_rtn (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16 (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rte (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtz (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtp (float16 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_float16_rtn (float16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (char f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (char2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (char3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (char4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (char8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (char16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (char f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (char2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (char3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (char4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (char8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (char16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (char16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (char f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (char f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (char2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (char2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (char3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (char3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (char4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (char4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (char8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (char8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (char16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (char16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (char f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (char f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (char2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (char2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (char3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (char3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (char4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (char4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (char8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (char8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (char16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (char f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (char2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (char2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (char3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (char3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (char4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (char4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (char8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (char8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (char16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (char16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (char f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (char f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (char2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (char2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (char3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (char3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (char4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (char4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (char8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (char8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (char16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (char16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (char f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (char f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (char2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (char2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (char3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (char3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (char4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (char4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (char8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (char8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (char16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (char16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (char f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (char f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (char2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (char2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (char3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (char3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (char4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (char4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (char8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (char8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (char16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (char16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (uchar f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (uchar f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (uchar2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (uchar2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (uchar3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (uchar3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (uchar4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (uchar4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (uchar8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (uchar8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (uchar16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (uchar16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (uchar f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (uchar2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (uchar3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (uchar4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (uchar8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (uchar16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (uchar f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (uchar f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (uchar2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (uchar2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (uchar3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (uchar3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (uchar4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (uchar4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (uchar8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (uchar8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (uchar16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (uchar f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (uchar f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (uchar2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (uchar2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (uchar3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (uchar3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (uchar4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (uchar4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (uchar8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (uchar8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (uchar16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (uchar16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (uchar f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (uchar f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (uchar2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (uchar2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (uchar3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (uchar3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (uchar4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (uchar4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (uchar8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (uchar8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (uchar16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (uchar16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (uchar f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (uchar f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (uchar2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (uchar2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (uchar3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (uchar3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (uchar4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (uchar4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (uchar8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (uchar8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (uchar16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (uchar16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (uchar f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (uchar f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (uchar2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (uchar2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (uchar3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (uchar3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (uchar4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (uchar4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (uchar8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (uchar8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (uchar16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (uchar16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (uchar f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (uchar f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (uchar2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (uchar2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (uchar3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (uchar3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (uchar4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (uchar4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (uchar8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (uchar8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (uchar16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (uchar16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (short f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (short f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (short2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (short2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (short3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (short3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (short4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (short4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (short8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (short8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (short16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (short16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (short f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (short f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (short2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (short2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (short3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (short3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (short4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (short4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (short8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (short8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (short16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (short16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (short f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (short2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (short3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (short4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (short8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (short16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (short f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (short2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (short3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (short4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (short8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (short16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (short f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (short2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (short2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (short3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (short3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (short4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (short4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (short8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (short8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (short16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (short16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (short f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (short f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (short2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (short2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (short3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (short3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (short4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (short4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (short8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (short8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (short16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (short16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (short f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (short f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (short2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (short2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (short3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (short3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (short4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (short4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (short8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (short8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (short16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (short16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (short f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (short f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (short2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (short2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (short3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (short3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (short4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (short4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (short8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (short8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (short16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (short16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (ushort f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (ushort f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (ushort2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (ushort2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (ushort3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (ushort3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (ushort4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (ushort4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (ushort8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (ushort8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (ushort16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (ushort16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (ushort f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (ushort f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (ushort2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (ushort2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (ushort3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (ushort3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (ushort4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (ushort4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (ushort8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (ushort8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (ushort16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (ushort16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (ushort f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (ushort f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (ushort2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (ushort2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (ushort3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (ushort3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (ushort4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (ushort4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (ushort8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (ushort8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (ushort16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (ushort16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (ushort f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (ushort2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (ushort3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (ushort4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (ushort8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (ushort16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (ushort f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (ushort f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (ushort2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (ushort2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (ushort3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (ushort3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (ushort4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (ushort4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (ushort8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (ushort8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (ushort16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (ushort f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (ushort f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (ushort2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (ushort2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (ushort3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (ushort3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (ushort4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (ushort4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (ushort8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (ushort8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (ushort16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (ushort16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (ushort f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (ushort f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (ushort2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (ushort2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (ushort3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (ushort3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (ushort4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (ushort4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (ushort8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (ushort8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (ushort16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (ushort16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (ushort f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (ushort f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (ushort2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (ushort2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (ushort3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (ushort3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (ushort4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (ushort4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (ushort8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (ushort8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (ushort16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (ushort16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (int f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (int f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (int2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (int2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (int3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (int3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (int4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (int4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (int8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (int8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (int16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (int16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (int f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (int f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (int2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (int2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (int3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (int3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (int4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (int4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (int8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (int8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (int16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (int16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (int f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (int f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (int2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (int2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (int3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (int3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (int4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (int4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (int8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (int8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (int16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (int16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (int f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (int f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (int2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (int2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (int3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (int3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (int4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (int4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (int8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (int8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (int16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (int2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (int3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (int4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (int8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (int16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (int f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (int2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (int3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (int4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (int8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (int16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (int16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (int f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (int f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (int2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (int2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (int3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (int3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (int4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (int4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (int8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (int8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (int16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (int16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (int f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (int f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (int2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (int2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (int3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (int3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (int4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (int4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (int8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (int8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (int16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (int16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (uint f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (uint f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (uint2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (uint2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (uint3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (uint3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (uint4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (uint4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (uint8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (uint8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (uint16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (uint16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (uint f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (uint f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (uint2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (uint2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (uint3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (uint3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (uint4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (uint4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (uint8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (uint8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (uint16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (uint16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (uint f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (uint f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (uint2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (uint2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (uint3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (uint3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (uint4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (uint4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (uint8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (uint8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (uint16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (uint16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (uint f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (uint f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (uint2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (uint2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (uint3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (uint3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (uint4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (uint4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (uint8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (uint8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (uint16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (uint16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (uint f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (uint f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (uint2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (uint2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (uint3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (uint3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (uint4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (uint4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (uint8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (uint8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (uint16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (uint16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (uint f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (uint2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (uint3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (uint4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (uint8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (uint16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (uint f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (uint f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (uint2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (uint2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (uint3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (uint3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (uint4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (uint4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (uint8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (uint8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (uint16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (uint f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (uint f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (uint2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (uint2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (uint3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (uint3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (uint4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (uint4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (uint8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (uint8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (uint16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (uint16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (long f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (long f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (long2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (long2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (long3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (long3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (long4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (long4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (long8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (long8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (long16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (long16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (long f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (long f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (long2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (long2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (long3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (long3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (long4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (long4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (long8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (long8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (long16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (long16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (long f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (long f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (long2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (long2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (long3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (long3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (long4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (long4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (long8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (long8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (long16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (long16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (long f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (long f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (long2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (long2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (long3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (long3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (long4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (long4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (long8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (long8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (long16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (long16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (long f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (long2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (long2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (long3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (long3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (long4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (long4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (long8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (long8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (long16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (long16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (long f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (long f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (long2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (long2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (long3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (long3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (long4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (long4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (long8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (long8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (long16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (long16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (long f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (long2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (long3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (long4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (long8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (long16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (long f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (long2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (long3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (long4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (long8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (long16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (long16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (ulong f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (ulong f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (ulong2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (ulong2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (ulong3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (ulong3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (ulong4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (ulong4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (ulong8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (ulong8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (ulong16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (ulong16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (ulong f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (ulong f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (ulong2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (ulong2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (ulong3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (ulong3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (ulong4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (ulong4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (ulong8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (ulong8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (ulong16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (ulong16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (ulong f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (ulong f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (ulong2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (ulong2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (ulong3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (ulong3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (ulong4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (ulong4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (ulong8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (ulong8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (ulong16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (ulong16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (ulong f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (ulong f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (ulong2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (ulong2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (ulong3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (ulong3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (ulong4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (ulong4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (ulong8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (ulong8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (ulong16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (ulong16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (ulong f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (ulong f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (ulong2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (ulong2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (ulong3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (ulong3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (ulong4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (ulong4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (ulong8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (ulong8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (ulong16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (ulong16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (ulong f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (ulong f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (ulong2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (ulong2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (ulong3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (ulong3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (ulong4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (ulong4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (ulong8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (ulong8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (ulong16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (ulong16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (ulong f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (ulong f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (ulong2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (ulong2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (ulong3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (ulong3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (ulong4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (ulong4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (ulong8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (ulong8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (ulong16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (ulong16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (ulong f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (ulong2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (ulong3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (ulong4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (ulong8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (ulong16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (ulong16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rte (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtz (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtp (float f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char_sat_rtn (float f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rte (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtz (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtp (float2 f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char2_sat_rtn (float2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rte (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtz (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtp (float3 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char3_sat_rtn (float3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rte (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtz (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtp (float4 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char4_sat_rtn (float4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rte (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtz (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtp (float8 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char8_sat_rtn (float8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rte (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtz (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtp (float16 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_char16_sat_rtn (float16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rte (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtz (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtp (float f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar_sat_rtn (float f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rte (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtz (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtp (float2 f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar2_sat_rtn (float2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rte (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtz (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtp (float3 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar3_sat_rtn (float3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rte (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtz (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtp (float4 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar4_sat_rtn (float4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rte (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtz (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtp (float8 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar8_sat_rtn (float8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rte (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtz (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtp (float16 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uchar16_sat_rtn (float16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rte (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtz (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtp (float f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short_sat_rtn (float f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rte (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtz (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtp (float2 f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short2_sat_rtn (float2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rte (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtz (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtp (float3 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short3_sat_rtn (float3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rte (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtz (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtp (float4 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short4_sat_rtn (float4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rte (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtz (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtp (float8 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short8_sat_rtn (float8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rte (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtz (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtp (float16 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_short16_sat_rtn (float16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rte (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtz (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtp (float f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort_sat_rtn (float f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rte (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtz (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtp (float2 f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort2_sat_rtn (float2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rte (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtz (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtp (float3 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort3_sat_rtn (float3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rte (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtz (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtp (float4 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort4_sat_rtn (float4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rte (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtz (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtp (float8 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort8_sat_rtn (float8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rte (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtz (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtp (float16 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ushort16_sat_rtn (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rte (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtz (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtp (float f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int_sat_rtn (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rte (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtz (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtp (float2 f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int2_sat_rtn (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rte (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtz (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtp (float3 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int3_sat_rtn (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rte (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtz (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtp (float4 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int4_sat_rtn (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rte (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtz (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtp (float8 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int8_sat_rtn (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rte (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtz (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtp (float16 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_int16_sat_rtn (float16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rte (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtz (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtp (float f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint_sat_rtn (float f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rte (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtz (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtp (float2 f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint2_sat_rtn (float2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rte (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtz (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtp (float3 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint3_sat_rtn (float3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rte (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtz (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtp (float4 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint4_sat_rtn (float4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rte (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtz (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtp (float8 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint8_sat_rtn (float8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rte (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtz (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtp (float16 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_uint16_sat_rtn (float16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rte (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtz (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtp (float f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long_sat_rtn (float f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rte (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtz (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtp (float2 f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long2_sat_rtn (float2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rte (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtz (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtp (float3 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long3_sat_rtn (float3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rte (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtz (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtp (float4 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long4_sat_rtn (float4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rte (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtz (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtp (float8 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long8_sat_rtn (float8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rte (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtz (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtp (float16 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_long16_sat_rtn (float16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rte (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtz (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtp (float f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong_sat_rtn (float f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rte (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtz (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtp (float2 f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong2_sat_rtn (float2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rte (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtz (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtp (float3 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong3_sat_rtn (float3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rte (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtz (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtp (float4 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong4_sat_rtn (float4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rte (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtz (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtp (float8 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong8_sat_rtn (float8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rte (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtz (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtp (float16 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) convert_ulong16_sat_rtn (float16 f); +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +//image 2.0 API +//float4 __attribute__ ((always_inline)) __attribute__((overloadable)) read_imagef(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image2d_t image, sampler_t sampler, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image2d_t image, sampler_t sampler, float2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image2d_t image, sampler_t sampler, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image2d_t image, sampler_t sampler, float2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image2d_t image, sampler_t sampler, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image2d_t image, sampler_t sampler, float2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image2d_t image, int2 coord); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagef(__global image2d_t image, int2 coord, float4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagei(__global image2d_t image, int2 coord, int4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imageui(__global image2d_t image, int2 coord, uint4 color); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image1d_t image, sampler_t sampler, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image1d_t image, sampler_t sampler, float coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image1d_t image, sampler_t sampler, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image1d_t image, sampler_t sampler, float coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image1d_t image, sampler_t sampler, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image1d_t image, sampler_t sampler, float coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image1d_t image, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image1d_t image, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image1d_t image, int coord); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagef(__global image1d_t image, int coord, float4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagei(__global image1d_t image, int coord, int4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imageui(__global image1d_t image, int coord, uint4 color); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image3d_t image, sampler_t sampler, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image3d_t image, sampler_t sampler, float4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image3d_t image, sampler_t sampler, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image3d_t image, sampler_t sampler, float4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image3d_t image, sampler_t sampler, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image3d_t image, sampler_t sampler, float4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) float4 read_imagef(__global image3d_t image, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) int4 read_imagei(__global image3d_t image, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) uint4 read_imageui(__global image3d_t image, int4 coord); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagef(__global image3d_t image, int4 coord, float4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imagei(__global image3d_t image, int4 coord, int4 color); +__attribute__((always_inline)) __attribute__((overloadable)) void write_imageui(__global image3d_t image, int4 coord, uint4 color); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_width(__global image1d_t image); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_width(__global image2d_t image); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_width(__global image3d_t image); +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_height(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_height(__global image3d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_depth(__global image3d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int2 get_image_dim(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_data_type(__global image1d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_data_type(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_data_type(__global image3d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_order(__global image1d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_order(__global image2d_t image); + +__attribute__((always_inline)) __attribute__((overloadable)) int get_image_channel_order(__global image3d_t image); +#endif + + //OpenCL 1.2 Section 6.12.2 Math Functions + //Table 6.8 + //"gentype" functions can take + //float, float2, float3, float4, float8, float16 + //double, double2, double3, double4, double8, double16 +float __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) acos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) acosh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) acospi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) asin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) asinh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) asinpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atan (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atanpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2 (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atanh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) atan2pi (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cbrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) ceil (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) copysign (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cosh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) cospi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) erfc (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) erf (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) exp (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) exp2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) exp10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) expm1 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fabs (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fdim (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) floor (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fma (float16 f, float16 g,float16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmax (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmin (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fmod (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float f,__global float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float2 f,__global float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float3 f,__global float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float4 f,__global float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float8 f,__global float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float16 f,__global float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float f,__local float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float2 f,__local float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float3 f,__local float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float4 f,__local float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float8 f,__local float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float16 f,__local float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float f,__private float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float2 f,__private float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float3 f,__private float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float4 f,__private float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float8 f,__private float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fract (float16 f,__private float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float f,__global int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float2 f,__global int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float3 f,__global int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float4 f,__global int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float8 f,__global int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float16 f,__global int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float f,__local int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float2 f,__local int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float3 f,__local int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float4 f,__local int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float8 f,__local int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float16 f,__local int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float f,__private int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float2 f,__private int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float3 f,__private int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float4 f,__private int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float8 f,__private int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) frexp (float16 f,__private int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) hypot (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) ilogb (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float f,int g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float2 f,int2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float3 f,int3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float4 f,int4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float8 f,int8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float16 f,int16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float2 f,int g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float3 f,int g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float4 f,int g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float8 f,int g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) ldexp (float16 f,int g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float f,__global int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float2 f,__global int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float3 f,__global int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float4 f,__global int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float8 f,__global int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float16 f,__global int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float f,__local int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float2 f,__local int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float3 f,__local int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float4 f,__local int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float8 f,__local int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float16 f,__local int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float f,__private int * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float2 f,__private int2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float3 f,__private int3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float4 f,__private int4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float8 f,__private int8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) lgamma_r (float16 f,__private int16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) log1p (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) logb (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad (float16 f, float16 g,float16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) maxmag (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) minmag (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float f,__global float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float2 f,__global float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float3 f,__global float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float4 f,__global float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float8 f,__global float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float16 f,__global float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float f,__local float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float2 f,__local float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float3 f,__local float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float4 f,__local float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float8 f,__local float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float16 f,__local float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float f,__private float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float2 f,__private float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float3 f,__private float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float4 f,__private float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float8 f,__private float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) modf (float16 f,__private float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) nan (uint16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) nextafter (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) pow (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float f,int g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float2 f,int2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float3 f,int3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float4 f,int4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float8 f,int8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) pown (float16 f,int16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) powr (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remainder (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float f, float g,__global int * h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float2 f, float2 g,__global int2 * h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float3 f, float3 g,__global int3 * h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float4 f, float4 g,__global int4 * h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float8 f, float8 g,__global int8 * h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float16 f, float16 g,__global int16 * h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float f, float g,__local int * h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float2 f, float2 g,__local int2 * h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float3 f, float3 g,__local int3 * h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float4 f, float4 g,__local int4 * h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float8 f, float8 g,__local int8 * h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float16 f, float16 g,__local int16 * h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float f, float g,__private int * h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float2 f, float2 g,__private int2 * h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float3 f, float3 g,__private int3 * h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float4 f, float4 g,__private int4 * h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float8 f, float8 g,__private int8 * h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) remquo (float16 f, float16 g,__private int16 * h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) rint (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float f,int g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float2 f,int2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float3 f,int3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float4 f,int4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float8 f,int8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) rootn (float16 f,int16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) round (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) round (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) rsqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float f,__global float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float2 f,__global float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float3 f,__global float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float4 f,__global float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float8 f,__global float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float16 f,__global float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float f,__local float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float2 f,__local float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float3 f,__local float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float4 f,__local float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float8 f,__local float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float16 f,__local float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float f,__private float * g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float2 f,__private float2 * g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float3 f,__private float3 * g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float4 f,__private float4 * g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float8 f,__private float8 * g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sincos (float16 f,__private float16 * g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sinh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sinpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tan (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tanh (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tanpi (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) tgamma (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) trunc (float16 f); +//OpenCL 1.2 Section 6.12.2 Math Functions Half +//Table 6.9 +//"gentype" functions can take +//float, float2, float3, float4, float8, float16 +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_cos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_divide (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_exp10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_log10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_powr (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_recip (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_rsqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_sqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) half_tan (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_cos (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_divide (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_exp10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log2 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_log10 (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_powr (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_recip (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_rsqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sin (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_sqrt (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) native_tan (float16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uchar16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ushort16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (uint16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs (ulong16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char f,char g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char2 f,char2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char3 f,char3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char4 f,char4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char8 f,char8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uchar16 f,uchar16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short f,short g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short2 f,short2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short3 f,short3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short4 f,short4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short8 f,short8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ushort16 f,ushort16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int f,int g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int2 f,int2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int3 f,int3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int4 f,int4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int8 f,int8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (uint16 f,uint16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long f,long g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long2 f,long2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long3 f,long3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long4 f,long4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long8 f,long8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) abs_diff (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) add_sat (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) hadd (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) rhadd (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong16 f, ulong16 g,ulong16 h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char2 f, char g,char h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char3 f, char g,char h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char4 f, char g,char h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char8 f, char g,char h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (char16 f, char g,char h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar2 f, uchar g,uchar h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar3 f, uchar g,uchar h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar4 f, uchar g,uchar h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar8 f, uchar g,uchar h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uchar16 f, uchar g,uchar h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short2 f, short g,short h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short3 f, short g,short h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short4 f, short g,short h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short8 f, short g,short h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (short16 f, short g,short h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort2 f, ushort g,ushort h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort3 f, ushort g,ushort h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort4 f, ushort g,ushort h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort8 f, ushort g,ushort h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ushort16 f, ushort g,ushort h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int2 f, int g,int h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int3 f, int g,int h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int4 f, int g,int h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int8 f, int g,int h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (int16 f, int g,int h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint2 f, uint g,uint h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint3 f, uint g,uint h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint4 f, uint g,uint h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint8 f, uint g,uint h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (uint16 f, uint g,uint h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long2 f, long g,long h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long3 f, long g,long h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long4 f, long g,long h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long8 f, long g,long h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (long16 f, long g,long h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong2 f, ulong g,ulong h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong3 f, ulong g,ulong h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong4 f, ulong g,ulong h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong8 f, ulong g,ulong h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (ulong16 f, ulong g,ulong h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) clz (ulong16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_hi (ulong16 f, ulong16 g,ulong16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad_sat (ulong16 f, ulong16 g,ulong16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) max (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) max (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) max (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) max (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) min (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) min (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) min (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) min (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul_hi (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) rotate (ulong16 f,ulong16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char f,char g); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char2 f,char2 g); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char3 f,char3 g); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char4 f,char4 g); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char8 f,char8 g); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (char16 f,char16 g); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar f,uchar g); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar2 f,uchar2 g); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar3 f,uchar3 g); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar4 f,uchar4 g); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar8 f,uchar8 g); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uchar16 f,uchar16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short f,short g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short2 f,short2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short3 f,short3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short4 f,short4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short8 f,short8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (short16 f,short16 g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort f,ushort g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort2 f,ushort2 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort3 f,ushort3 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort4 f,ushort4 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort8 f,ushort8 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ushort16 f,ushort16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (uint16 f,uint16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long f,long g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long2 f,long2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long3 f,long3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long4 f,long4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long8 f,long8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (long16 f,long16 g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong f,ulong g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong2 f,ulong2 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong3 f,ulong3 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong4 f,ulong4 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong8 f,ulong8 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) sub_sat (ulong16 f,ulong16 g); +short __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char f,uchar g); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar f,uchar g); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char2 f,uchar2 g); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar2 f,uchar2 g); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char3 f,uchar3 g); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar3 f,uchar3 g); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char4 f,uchar4 g); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar4 f,uchar4 g); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char8 f,uchar8 g); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar8 f,uchar8 g); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (char16 f,uchar16 g); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uchar16 f,uchar16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short f,ushort g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort f,ushort g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short2 f,ushort2 g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort2 f,ushort2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short3 f,ushort3 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort3 f,ushort3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short4 f,ushort4 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort4 f,ushort4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short8 f,ushort8 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort8 f,ushort8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (short16 f,ushort16 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (ushort16 f,ushort16 g); +long __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int f,uint g); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint f,uint g); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int2 f,uint2 g); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint2 f,uint2 g); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int3 f,uint3 g); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint3 f,uint3 g); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int4 f,uint4 g); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint4 f,uint4 g); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int8 f,uint8 g); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint8 f,uint8 g); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (int16 f,uint16 g); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) upsample (uint16 f,uint16 g); +char __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char f); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char2 f); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char3 f); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char4 f); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char8 f); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (char16 f); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar f); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar2 f); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar3 f); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar4 f); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar8 f); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uchar16 f); +short __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short f); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short2 f); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short3 f); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short4 f); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short8 f); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (short16 f); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort f); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort2 f); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort3 f); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort4 f); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort8 f); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ushort16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (int16 f); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint f); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint2 f); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint3 f); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint4 f); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint8 f); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (uint16 f); +long __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long f); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long2 f); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long3 f); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long4 f); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long8 f); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (long16 f); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong f); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong2 f); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong3 f); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong4 f); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong8 f); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) popcount (ulong16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mad24 (uint16 f, uint16 g,uint16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int f,int g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int2 f,int2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int3 f,int3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int4 f,int4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int8 f,int8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (int16 f,int16 g); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint f,uint g); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint2 f,uint2 g); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint3 f,uint3 g); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint4 f,uint4 g); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint8 f,uint8 g); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) mul24 (uint16 f,uint16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float16 f, float16 g,float16 h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float2 f, float g,float h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float3 f, float g,float h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float4 f, float g,float h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float8 f, float g,float h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) clamp (float16 f, float g,float h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) degrees (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) max (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) max (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) min (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float2 f,float g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float3 f,float g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float4 f,float g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float8 f,float g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) min (float16 f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float16 f, float16 g,float16 h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float2 f, float2 g,float h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float3 f, float3 g,float h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float4 f, float4 g,float h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float8 f, float8 g,float h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) mix (float16 f, float16 g,float h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) radians (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float2 f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float3 f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float4 f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float8 f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float16 f,float16 g); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float2 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float3 g); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float4 g); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float8 g); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) step (float f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float16 f, float16 g,float16 h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) smoothstep (float f, float g,float16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) sign (float16 f); +//OpenCL 1.2 Section 6.12.5 Geometric Functions + +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) cross (float4 f,float4 g); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) cross (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float2 f,float2 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float4 f,float4 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float8 f,float8 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) dot (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float2 f,float2 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float4 f,float4 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float8 f,float8 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) distance (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float2 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float3 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float4 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float8 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) length (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) normalize (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float f,float g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float2 f,float2 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float3 f,float3 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float4 f,float4 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float8 f,float8 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_distance (float16 f,float16 g); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float2 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float3 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float4 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float8 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_length (float16 f); +float __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float f); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float2 f); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float3 f); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float4 f); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float8 f); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) fast_normalize (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isfinite (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isinf (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isnan (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isnormal (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float f); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float2 f); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float3 f); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float4 f); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float8 f); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) signbit (float16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isnotequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreater (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isgreaterequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isless (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) islessequal (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) islessgreater (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isordered (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float f,float g); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float2 f,float2 g); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float3 f,float3 g); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float4 f,float4 g); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float8 f,float8 g); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) isunordered (float16 f,float16 g); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) any (long16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (char16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (short16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (int16 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long2 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long3 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long4 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long8 f); +int __attribute__ ((always_inline)) __attribute__((overloadable)) all (long16 f); +char __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (ulong16 f, ulong16 g,ulong16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float f, float g,float h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float2 f, float2 g,float2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float3 f, float3 g,float3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float4 f, float4 g,float4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float8 f, float8 g,float8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) bitselect (float16 f, float16 g,float16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) select (char f, char g,char h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char2 f, char2 g,char2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char3 f, char3 g,char3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char4 f, char4 g,char4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char8 f, char8 g,char8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char16 f, char16 g,char16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar f, uchar g,char h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar2 f, uchar2 g,char2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar3 f, uchar3 g,char3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar4 f, uchar4 g,char4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar8 f, uchar8 g,char8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar16 f, uchar16 g,char16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) select (short f, short g,short h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short2 f, short2 g,short2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short3 f, short3 g,short3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short4 f, short4 g,short4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short8 f, short8 g,short8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short16 f, short16 g,short16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort f, ushort g,short h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort2 f, ushort2 g,short2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort3 f, ushort3 g,short3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort4 f, ushort4 g,short4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort8 f, ushort8 g,short8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort16 f, ushort16 g,short16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) select (int f, int g,int h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int2 f, int2 g,int2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int3 f, int3 g,int3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int4 f, int4 g,int4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int8 f, int8 g,int8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int16 f, int16 g,int16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint f, uint g,int h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint2 f, uint2 g,int2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint3 f, uint3 g,int3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint4 f, uint4 g,int4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint8 f, uint8 g,int8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint16 f, uint16 g,int16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) select (long f, long g,long h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long2 f, long2 g,long2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long3 f, long3 g,long3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long4 f, long4 g,long4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long8 f, long8 g,long8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long16 f, long16 g,long16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong f, ulong g,long h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong2 f, ulong2 g,long2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong3 f, ulong3 g,long3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong4 f, ulong4 g,long4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong8 f, ulong8 g,long8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong16 f, ulong16 g,long16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) select (float f, float g,int h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float2 f, float2 g,int2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float3 f, float3 g,int3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float4 f, float4 g,int4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float8 f, float8 g,int8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float16 f, float16 g,int16 h); +char __attribute__ ((always_inline)) __attribute__((overloadable)) select (char f, char g,uchar h); +char2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char2 f, char2 g,uchar2 h); +char3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char3 f, char3 g,uchar3 h); +char4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char4 f, char4 g,uchar4 h); +char8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char8 f, char8 g,uchar8 h); +char16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (char16 f, char16 g,uchar16 h); +uchar __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar f, uchar g,uchar h); +uchar2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar2 f, uchar2 g,uchar2 h); +uchar3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar3 f, uchar3 g,uchar3 h); +uchar4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar4 f, uchar4 g,uchar4 h); +uchar8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar8 f, uchar8 g,uchar8 h); +uchar16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uchar16 f, uchar16 g,uchar16 h); +short __attribute__ ((always_inline)) __attribute__((overloadable)) select (short f, short g,ushort h); +short2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short2 f, short2 g,ushort2 h); +short3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short3 f, short3 g,ushort3 h); +short4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short4 f, short4 g,ushort4 h); +short8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short8 f, short8 g,ushort8 h); +short16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (short16 f, short16 g,ushort16 h); +ushort __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort f, ushort g,ushort h); +ushort2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort2 f, ushort2 g,ushort2 h); +ushort3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort3 f, ushort3 g,ushort3 h); +ushort4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort4 f, ushort4 g,ushort4 h); +ushort8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort8 f, ushort8 g,ushort8 h); +ushort16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ushort16 f, ushort16 g,ushort16 h); +int __attribute__ ((always_inline)) __attribute__((overloadable)) select (int f, int g,uint h); +int2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int2 f, int2 g,uint2 h); +int3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int3 f, int3 g,uint3 h); +int4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int4 f, int4 g,uint4 h); +int8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int8 f, int8 g,uint8 h); +int16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (int16 f, int16 g,uint16 h); +uint __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint f, uint g,uint h); +uint2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint2 f, uint2 g,uint2 h); +uint3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint3 f, uint3 g,uint3 h); +uint4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint4 f, uint4 g,uint4 h); +uint8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint8 f, uint8 g,uint8 h); +uint16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (uint16 f, uint16 g,uint16 h); +long __attribute__ ((always_inline)) __attribute__((overloadable)) select (long f, long g,ulong h); +long2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long2 f, long2 g,ulong2 h); +long3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long3 f, long3 g,ulong3 h); +long4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long4 f, long4 g,ulong4 h); +long8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long8 f, long8 g,ulong8 h); +long16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (long16 f, long16 g,ulong16 h); +ulong __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong f, ulong g,ulong h); +ulong2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong2 f, ulong2 g,ulong2 h); +ulong3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong3 f, ulong3 g,ulong3 h); +ulong4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong4 f, ulong4 g,ulong4 h); +ulong8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong8 f, ulong8 g,ulong8 h); +ulong16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (ulong16 f, ulong16 g,ulong16 h); +float __attribute__ ((always_inline)) __attribute__((overloadable)) select (float f, float g,uint h); +float2 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float2 f, float2 g,uint2 h); +float3 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float3 f, float3 g,uint3 h); +float4 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float4 f, float4 g,uint4 h); +float8 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float8 f, float8 g,uint8 h); +float16 __attribute__ ((always_inline)) __attribute__((overloadable)) select (float16 f, float16 g,uint16 h); +void __attribute__ ((always_inline)) __attribute__((overloadable)) barrier(uint i); +void mem_fence(uint i); +#include "clc.h.inc" +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +void wait_group_events(int i,event_t *j); +#else +void __attribute__ ((always_inline)) __attribute__((overloadable)) wait_group_events(int i,event_t *j); +#endif +#if (__clang_major__ == 3) && (__clang_minor__ == 1) +#define read_pipe __opencl_read_pipe +#define write_pipe __opencl_write_pipe +#define read_pipe_block __opencl_read_pipe_block +#define write_pipe_block __opencl_write_pipe_block +#define reserve_read_pipe __opencl_reserve_read_pipe +#define reserve_write_pipe __opencl_reserve_write_pipe +#define commit_read_pipe __opencl_commit_read_pipe +#define commit_write_pipe __opencl_commit_write_pipe +#define get_pipe_max_packets __opencl_get_pipe_max_packets +#define get_pipe_num_packets __opencl_get_pipe_num_packets +#define work_group_reserve_read_pipe __opencl_work_group_reserve_read_pipe +#define work_group_reserve_write_pipe __opencl_work_group_reserve_write_pipe +#define work_group_commit_read_pipe __opencl_work_group_commit_read_pipe +#define work_group_commit_write_pipe __opencl_work_group_commit_write_pipe +_Bool __attribute__ ((always_inline)) is_valid_reserve_id(reserve_id_t id); +#endif + +#endif // _CLC_H_ + + diff --git a/vitis/v2021_2/clc.h.inc b/vitis/v2021_2/clc.h.inc new file mode 100755 index 00000000..22d907e1 --- /dev/null +++ b/vitis/v2021_2/clc.h.inc @@ -0,0 +1,3909 @@ +// vload[n] and vstore[n] + + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private char *p); + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local char *p); + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global char *p); + +char2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (char2 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (char2 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (char2 data, size_t offset, + __global char *p); + + + + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private uchar *p); + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local uchar *p); + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global uchar *p); + +uchar2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uchar2 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uchar2 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uchar2 data, size_t offset, + __global uchar *p); + + + + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private short *p); + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local short *p); + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global short *p); + +short2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (short2 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (short2 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (short2 data, size_t offset, + __global short *p); + + + + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private ushort *p); + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local ushort *p); + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global ushort *p); + +ushort2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ushort2 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ushort2 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ushort2 data, size_t offset, + __global ushort *p); + + + + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private int *p); + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local int *p); + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global int *p); + +int2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (int2 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (int2 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (int2 data, size_t offset, + __global int *p); + + + + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private uint *p); + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local uint *p); + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global uint *p); + +uint2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uint2 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uint2 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (uint2 data, size_t offset, + __global uint *p); + + + + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private long *p); + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local long *p); + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global long *p); + +long2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (long2 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (long2 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (long2 data, size_t offset, + __global long *p); + + + + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private ulong *p); + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local ulong *p); + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global ulong *p); + +ulong2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ulong2 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ulong2 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (ulong2 data, size_t offset, + __global ulong *p); + + + + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __private float *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __local float *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __global float *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload2 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (float2 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (float2 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore2 (float2 data, size_t offset, + __global float *p); + + + + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private char *p); + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local char *p); + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global char *p); + +char3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (char3 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (char3 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (char3 data, size_t offset, + __global char *p); + + + + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private uchar *p); + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local uchar *p); + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global uchar *p); + +uchar3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uchar3 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uchar3 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uchar3 data, size_t offset, + __global uchar *p); + + + + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private short *p); + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local short *p); + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global short *p); + +short3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (short3 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (short3 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (short3 data, size_t offset, + __global short *p); + + + + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private ushort *p); + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local ushort *p); + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global ushort *p); + +ushort3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ushort3 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ushort3 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ushort3 data, size_t offset, + __global ushort *p); + + + + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private int *p); + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local int *p); + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global int *p); + +int3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (int3 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (int3 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (int3 data, size_t offset, + __global int *p); + + + + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private uint *p); + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local uint *p); + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global uint *p); + +uint3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uint3 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uint3 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (uint3 data, size_t offset, + __global uint *p); + + + + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private long *p); + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local long *p); + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global long *p); + +long3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (long3 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (long3 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (long3 data, size_t offset, + __global long *p); + + + + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private ulong *p); + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local ulong *p); + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global ulong *p); + +ulong3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ulong3 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ulong3 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (ulong3 data, size_t offset, + __global ulong *p); + + + + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __private float *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __local float *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __global float *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload3 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (float3 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (float3 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore3 (float3 data, size_t offset, + __global float *p); + + + + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private char *p); + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local char *p); + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global char *p); + +char4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (char4 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (char4 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (char4 data, size_t offset, + __global char *p); + + + + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private uchar *p); + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local uchar *p); + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global uchar *p); + +uchar4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uchar4 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uchar4 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uchar4 data, size_t offset, + __global uchar *p); + + + + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private short *p); + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local short *p); + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global short *p); + +short4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (short4 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (short4 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (short4 data, size_t offset, + __global short *p); + + + + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private ushort *p); + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local ushort *p); + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global ushort *p); + +ushort4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ushort4 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ushort4 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ushort4 data, size_t offset, + __global ushort *p); + + + + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private int *p); + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local int *p); + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global int *p); + +int4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (int4 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (int4 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (int4 data, size_t offset, + __global int *p); + + + + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private uint *p); + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local uint *p); + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global uint *p); + +uint4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uint4 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uint4 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (uint4 data, size_t offset, + __global uint *p); + + + + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private long *p); + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local long *p); + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global long *p); + +long4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (long4 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (long4 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (long4 data, size_t offset, + __global long *p); + + + + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private ulong *p); + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local ulong *p); + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global ulong *p); + +ulong4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ulong4 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ulong4 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (ulong4 data, size_t offset, + __global ulong *p); + + + + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __private float *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __local float *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __global float *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload4 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (float4 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (float4 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore4 (float4 data, size_t offset, + __global float *p); + + + + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private char *p); + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local char *p); + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global char *p); + +char8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (char8 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (char8 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (char8 data, size_t offset, + __global char *p); + + + + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private uchar *p); + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local uchar *p); + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global uchar *p); + +uchar8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uchar8 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uchar8 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uchar8 data, size_t offset, + __global uchar *p); + + + + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private short *p); + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local short *p); + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global short *p); + +short8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (short8 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (short8 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (short8 data, size_t offset, + __global short *p); + + + + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private ushort *p); + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local ushort *p); + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global ushort *p); + +ushort8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ushort8 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ushort8 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ushort8 data, size_t offset, + __global ushort *p); + + + + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private int *p); + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local int *p); + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global int *p); + +int8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (int8 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (int8 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (int8 data, size_t offset, + __global int *p); + + + + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private uint *p); + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local uint *p); + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global uint *p); + +uint8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uint8 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uint8 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (uint8 data, size_t offset, + __global uint *p); + + + + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private long *p); + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local long *p); + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global long *p); + +long8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (long8 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (long8 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (long8 data, size_t offset, + __global long *p); + + + + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private ulong *p); + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local ulong *p); + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global ulong *p); + +ulong8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ulong8 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ulong8 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (ulong8 data, size_t offset, + __global ulong *p); + + + + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __private float *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __local float *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __global float *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload8 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (float8 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (float8 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore8 (float8 data, size_t offset, + __global float *p); + + + + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private char *p); + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local char *p); + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global char *p); + +char16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant char *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (char16 data, size_t offset, + __private char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (char16 data, size_t offset, + __local char *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (char16 data, size_t offset, + __global char *p); + + + + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private uchar *p); + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local uchar *p); + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global uchar *p); + +uchar16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant uchar *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uchar16 data, size_t offset, + __private uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uchar16 data, size_t offset, + __local uchar *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uchar16 data, size_t offset, + __global uchar *p); + + + + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private short *p); + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local short *p); + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global short *p); + +short16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant short *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (short16 data, size_t offset, + __private short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (short16 data, size_t offset, + __local short *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (short16 data, size_t offset, + __global short *p); + + + + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private ushort *p); + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local ushort *p); + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global ushort *p); + +ushort16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant ushort *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ushort16 data, size_t offset, + __private ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ushort16 data, size_t offset, + __local ushort *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ushort16 data, size_t offset, + __global ushort *p); + + + + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private int *p); + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local int *p); + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global int *p); + +int16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant int *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (int16 data, size_t offset, + __private int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (int16 data, size_t offset, + __local int *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (int16 data, size_t offset, + __global int *p); + + + + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private uint *p); + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local uint *p); + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global uint *p); + +uint16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant uint *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uint16 data, size_t offset, + __private uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uint16 data, size_t offset, + __local uint *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (uint16 data, size_t offset, + __global uint *p); + + + + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private long *p); + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local long *p); + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global long *p); + +long16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant long *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (long16 data, size_t offset, + __private long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (long16 data, size_t offset, + __local long *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (long16 data, size_t offset, + __global long *p); + + + + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private ulong *p); + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local ulong *p); + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global ulong *p); + +ulong16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant ulong *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ulong16 data, size_t offset, + __private ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ulong16 data, size_t offset, + __local ulong *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (ulong16 data, size_t offset, + __global ulong *p); + + + + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __private float *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __local float *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __global float *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload16 (size_t offset, + const __constant float *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (float16 data, size_t offset, + __private float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (float16 data, size_t offset, + __local float *p); + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore16 (float16 data, size_t offset, + __global float *p); + + + + +// vstore[a]_half[n] and vload[a]_half[n] + + + + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __private half *p); + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __local half *p); + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __global half *p); + +float __attribute__((always_inline)) __attribute__((overloadable)) vload_half ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rte ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtz ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtp ( + float data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtn ( + float data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rte ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtz ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtp ( + float data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtn ( + float data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rte ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtz ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtp ( + float data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half_rtn ( + float data, + size_t offset, + __global half *p); + + + + + + + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __private half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __local half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __global half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vload_half2 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2 ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rte ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtz ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtp ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtn ( + float2 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2 ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rte ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtz ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtp ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtn ( + float2 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2 ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rte ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtz ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtp ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half2_rtn ( + float2 data, + size_t offset, + __global half *p); + + + + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __private half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __local half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __global half *p); + +float2 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half2 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2 ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rte ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtz ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtp ( + float2 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtn ( + float2 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2 ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rte ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtz ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtp ( + float2 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtn ( + float2 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2 ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rte ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtz ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtp ( + float2 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half2_rtn ( + float2 data, + size_t offset, + __global half *p); + + + + + + + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __private half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __local half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __global half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vload_half3 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3 ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rte ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtz ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtp ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtn ( + float3 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3 ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rte ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtz ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtp ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtn ( + float3 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3 ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rte ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtz ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtp ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half3_rtn ( + float3 data, + size_t offset, + __global half *p); + + + + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __private half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __local half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __global half *p); + +float3 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half3 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3 ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rte ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtz ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtp ( + float3 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtn ( + float3 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3 ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rte ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtz ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtp ( + float3 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtn ( + float3 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3 ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rte ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtz ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtp ( + float3 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half3_rtn ( + float3 data, + size_t offset, + __global half *p); + + + + + + + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __private half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __local half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __global half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vload_half4 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4 ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rte ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtz ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtp ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtn ( + float4 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4 ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rte ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtz ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtp ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtn ( + float4 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4 ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rte ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtz ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtp ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half4_rtn ( + float4 data, + size_t offset, + __global half *p); + + + + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __private half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __local half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __global half *p); + +float4 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half4 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4 ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rte ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtz ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtp ( + float4 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtn ( + float4 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4 ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rte ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtz ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtp ( + float4 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtn ( + float4 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4 ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rte ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtz ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtp ( + float4 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half4_rtn ( + float4 data, + size_t offset, + __global half *p); + + + + + + + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __private half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __local half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __global half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vload_half8 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8 ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rte ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtz ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtp ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtn ( + float8 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8 ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rte ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtz ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtp ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtn ( + float8 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8 ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rte ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtz ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtp ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half8_rtn ( + float8 data, + size_t offset, + __global half *p); + + + + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __private half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __local half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __global half *p); + +float8 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half8 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8 ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rte ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtz ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtp ( + float8 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtn ( + float8 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8 ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rte ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtz ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtp ( + float8 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtn ( + float8 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8 ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rte ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtz ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtp ( + float8 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half8_rtn ( + float8 data, + size_t offset, + __global half *p); + + + + + + + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __private half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __local half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __global half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vload_half16 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16 ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rte ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtz ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtp ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtn ( + float16 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16 ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rte ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtz ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtp ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtn ( + float16 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16 ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rte ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtz ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtp ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstore_half16_rtn ( + float16 data, + size_t offset, + __global half *p); + + + + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __private half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __local half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __global half *p); + +float16 __attribute__((always_inline)) __attribute__((overloadable)) vloada_half16 ( + size_t offset, + const __constant half *p); + + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16 ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rte ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtz ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtp ( + float16 data, + size_t offset, + __private half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtn ( + float16 data, + size_t offset, + __private half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16 ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rte ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtz ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtp ( + float16 data, + size_t offset, + __local half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtn ( + float16 data, + size_t offset, + __local half *p); + + + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16 ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rte ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtz ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtp ( + float16 data, + size_t offset, + __global half *p); + +void __attribute__((always_inline)) __attribute__((overloadable)) vstorea_half16_rtn ( + float16 data, + size_t offset, + __global half *p); + + + + + +// Async Copy and Prefetch Functions +// async_work_group_copy, async_work_group_strided_copy, prefetch + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char *dst, + const __global char *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char *dst, + const __global char *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char *dst, + const __local char *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char *dst, + const __local char *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar *dst, + const __global uchar *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar *dst, + const __global uchar *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar *dst, + const __local uchar *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar *dst, + const __local uchar *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short *dst, + const __global short *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short *dst, + const __global short *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short *dst, + const __local short *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short *dst, + const __local short *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort *dst, + const __global ushort *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort *dst, + const __global ushort *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort *dst, + const __local ushort *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort *dst, + const __local ushort *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int *dst, + const __global int *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int *dst, + const __global int *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int *dst, + const __local int *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int *dst, + const __local int *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint *dst, + const __global uint *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint *dst, + const __global uint *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint *dst, + const __local uint *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint *dst, + const __local uint *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long *dst, + const __global long *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long *dst, + const __global long *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long *dst, + const __local long *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long *dst, + const __local long *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong *dst, + const __global ulong *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong *dst, + const __global ulong *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong *dst, + const __local ulong *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong *dst, + const __local ulong *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float *dst, + const __global float *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float *dst, + const __global float *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float *dst, + const __local float *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float *dst, + const __local float *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char2 *dst, + const __global char2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char2 *dst, + const __global char2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char2 *dst, + const __local char2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char2 *dst, + const __local char2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar2 *dst, + const __global uchar2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar2 *dst, + const __global uchar2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar2 *dst, + const __local uchar2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar2 *dst, + const __local uchar2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short2 *dst, + const __global short2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short2 *dst, + const __global short2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short2 *dst, + const __local short2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short2 *dst, + const __local short2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort2 *dst, + const __global ushort2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort2 *dst, + const __global ushort2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort2 *dst, + const __local ushort2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort2 *dst, + const __local ushort2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int2 *dst, + const __global int2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int2 *dst, + const __global int2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int2 *dst, + const __local int2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int2 *dst, + const __local int2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint2 *dst, + const __global uint2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint2 *dst, + const __global uint2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint2 *dst, + const __local uint2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint2 *dst, + const __local uint2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long2 *dst, + const __global long2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long2 *dst, + const __global long2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long2 *dst, + const __local long2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long2 *dst, + const __local long2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong2 *dst, + const __global ulong2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong2 *dst, + const __global ulong2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong2 *dst, + const __local ulong2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong2 *dst, + const __local ulong2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float2 *dst, + const __global float2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float2 *dst, + const __global float2 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float2 *dst, + const __local float2 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float2 *dst, + const __local float2 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float2 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char3 *dst, + const __global char3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char3 *dst, + const __global char3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char3 *dst, + const __local char3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char3 *dst, + const __local char3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar3 *dst, + const __global uchar3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar3 *dst, + const __global uchar3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar3 *dst, + const __local uchar3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar3 *dst, + const __local uchar3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short3 *dst, + const __global short3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short3 *dst, + const __global short3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short3 *dst, + const __local short3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short3 *dst, + const __local short3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort3 *dst, + const __global ushort3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort3 *dst, + const __global ushort3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort3 *dst, + const __local ushort3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort3 *dst, + const __local ushort3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int3 *dst, + const __global int3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int3 *dst, + const __global int3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int3 *dst, + const __local int3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int3 *dst, + const __local int3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint3 *dst, + const __global uint3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint3 *dst, + const __global uint3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint3 *dst, + const __local uint3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint3 *dst, + const __local uint3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long3 *dst, + const __global long3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long3 *dst, + const __global long3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long3 *dst, + const __local long3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long3 *dst, + const __local long3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong3 *dst, + const __global ulong3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong3 *dst, + const __global ulong3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong3 *dst, + const __local ulong3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong3 *dst, + const __local ulong3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float3 *dst, + const __global float3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float3 *dst, + const __global float3 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float3 *dst, + const __local float3 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float3 *dst, + const __local float3 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float3 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char4 *dst, + const __global char4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char4 *dst, + const __global char4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char4 *dst, + const __local char4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char4 *dst, + const __local char4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar4 *dst, + const __global uchar4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar4 *dst, + const __global uchar4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar4 *dst, + const __local uchar4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar4 *dst, + const __local uchar4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short4 *dst, + const __global short4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short4 *dst, + const __global short4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short4 *dst, + const __local short4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short4 *dst, + const __local short4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort4 *dst, + const __global ushort4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort4 *dst, + const __global ushort4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort4 *dst, + const __local ushort4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort4 *dst, + const __local ushort4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int4 *dst, + const __global int4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int4 *dst, + const __global int4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int4 *dst, + const __local int4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int4 *dst, + const __local int4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint4 *dst, + const __global uint4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint4 *dst, + const __global uint4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint4 *dst, + const __local uint4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint4 *dst, + const __local uint4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long4 *dst, + const __global long4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long4 *dst, + const __global long4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long4 *dst, + const __local long4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long4 *dst, + const __local long4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong4 *dst, + const __global ulong4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong4 *dst, + const __global ulong4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong4 *dst, + const __local ulong4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong4 *dst, + const __local ulong4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float4 *dst, + const __global float4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float4 *dst, + const __global float4 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float4 *dst, + const __local float4 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float4 *dst, + const __local float4 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float4 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char8 *dst, + const __global char8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char8 *dst, + const __global char8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char8 *dst, + const __local char8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char8 *dst, + const __local char8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar8 *dst, + const __global uchar8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar8 *dst, + const __global uchar8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar8 *dst, + const __local uchar8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar8 *dst, + const __local uchar8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short8 *dst, + const __global short8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short8 *dst, + const __global short8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short8 *dst, + const __local short8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short8 *dst, + const __local short8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort8 *dst, + const __global ushort8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort8 *dst, + const __global ushort8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort8 *dst, + const __local ushort8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort8 *dst, + const __local ushort8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int8 *dst, + const __global int8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int8 *dst, + const __global int8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int8 *dst, + const __local int8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int8 *dst, + const __local int8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint8 *dst, + const __global uint8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint8 *dst, + const __global uint8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint8 *dst, + const __local uint8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint8 *dst, + const __local uint8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long8 *dst, + const __global long8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long8 *dst, + const __global long8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long8 *dst, + const __local long8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long8 *dst, + const __local long8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong8 *dst, + const __global ulong8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong8 *dst, + const __global ulong8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong8 *dst, + const __local ulong8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong8 *dst, + const __local ulong8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float8 *dst, + const __global float8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float8 *dst, + const __global float8 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float8 *dst, + const __local float8 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float8 *dst, + const __local float8 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float8 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local char16 *dst, + const __global char16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local char16 *dst, + const __global char16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global char16 *dst, + const __local char16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global char16 *dst, + const __local char16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global char16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uchar16 *dst, + const __global uchar16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uchar16 *dst, + const __global uchar16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uchar16 *dst, + const __local uchar16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uchar16 *dst, + const __local uchar16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uchar16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local short16 *dst, + const __global short16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local short16 *dst, + const __global short16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global short16 *dst, + const __local short16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global short16 *dst, + const __local short16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global short16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ushort16 *dst, + const __global ushort16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ushort16 *dst, + const __global ushort16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ushort16 *dst, + const __local ushort16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ushort16 *dst, + const __local ushort16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ushort16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local int16 *dst, + const __global int16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local int16 *dst, + const __global int16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global int16 *dst, + const __local int16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global int16 *dst, + const __local int16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global int16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local uint16 *dst, + const __global uint16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local uint16 *dst, + const __global uint16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global uint16 *dst, + const __local uint16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global uint16 *dst, + const __local uint16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global uint16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local long16 *dst, + const __global long16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local long16 *dst, + const __global long16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global long16 *dst, + const __local long16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global long16 *dst, + const __local long16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global long16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local ulong16 *dst, + const __global ulong16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local ulong16 *dst, + const __global ulong16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global ulong16 *dst, + const __local ulong16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global ulong16 *dst, + const __local ulong16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global ulong16 *p, size_t num_elements); + + + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __local float16 *dst, + const __global float16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __local float16 *dst, + const __global float16 *src, + size_t num_elements, + size_t stride, + event_t event); + +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_copy( + __global float16 *dst, + const __local float16 *src, + size_t num_elements, + event_t event); +event_t __attribute__((always_inline)) __attribute__((overloadable)) async_work_group_strided_copy( + __global float16 *dst, + const __local float16 *src, + size_t num_elements, + size_t stride, + event_t event); + +void __attribute__((always_inline)) __attribute__((overloadable)) prefetch (const __global float16 *p, size_t num_elements); diff --git a/vitis/v2021_2/dds/dds_compiler_v6_0_bitacc_cmodel.h b/vitis/v2021_2/dds/dds_compiler_v6_0_bitacc_cmodel.h new file mode 100755 index 00000000..d8845423 --- /dev/null +++ b/vitis/v2021_2/dds/dds_compiler_v6_0_bitacc_cmodel.h @@ -0,0 +1,384 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +//----------------------------------------------------------------------------- +// +// +// Vendor: Xilinx +// Version: 1.0 +// Filename: $RCSfile: example_bitacc_cmodel.h,v $ +// Date Last Modified: $Date: 2010/04/13 09:57:20 $ +// Date Created: 2012 +// +// +// +// Device : All +// Library : dds_compiler_v6_0 +// Purpose : Header file for bit accurate C model +//----------------------------------------------------------------------------- +// (c) Copyright 2012 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +#ifndef XIP_DDS_COMPILER_V6_0_BITACC_CMODEL_H +#define XIP_DDS_COMPILER_V6_0_BITACC_CMODEL_H + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models +#undef XIP_XILINX_XIP_TARGET +#define XIP_XILINX_XIP_TARGET dds_v6_0 +#include "xip_common_bitacc_cmodel.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//Depreciated; these functions now defined within model +#define DEFINE_XIP_ARRAY(TYPE) + +//Depreciated; use xip_status/XIP_STATUS_* instead +typedef xip_status xip_dds_compiler_v6_0_status; +#define XIP_DDS_COMPILER_V6_0_STATUS_OK XIP_STATUS_OK +#define XIP_DDS_COMPILER_V6_0_STATUS_ERROR XIP_STATUS_ERROR + +/** + * Core Specific Constants + */ +/* PartsPresent values */ +#define XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT 0 +#define XIP_DDS_PHASE_GEN_ONLY 1 +#define XIP_DDS_SIN_COS_LUT_ONLY 2 + + /* DDS_Clock_Rate limits */ +#define XIP_DDS_CLOCK_RATE_MIN 0.01 +#define XIP_DDS_CLOCK_RATE_MAX 1000 + + /* Channels limits */ +#define XIP_DDS_CHANNELS_MIN 1 +#define XIP_DDS_CHANNELS_MAX 16 + + /* Mode of Operation values */ +#define XIP_DDS_MOO_CONVENTIONAL 0 +#define XIP_DDS_MOO_RASTERIZED 1 + + /* Modulus limits */ +#define XIP_DDS_MODULUS_MIN 9 +#define XIP_DDS_MODULUS_MAX 16384 + + /* ParameterEntry values */ +#define XIP_DDS_SYSTEM_PARAMS 0 +#define XIP_DDS_HARDWARE_PARAMS 1 + + /* Spurious Free Dynamic Range SFDR limits */ +#define XIP_DDS_SFDR_MIN 18 +#define XIP_DDS_SFDR_MAX 150 + + /* Frequency_Resolution SFDR limits */ +#define XIP_DDS_FREQ_RES_MIN 0.000000001 +#define XIP_DDS_FREQ_RES_MAX 125000000 + + /* Noise_Shaping values */ +#define XIP_DDS_NS_NONE 0 +#define XIP_DDS_NS_DITHER 1 +#define XIP_DDS_NS_TAYLOR 2 +#define XIP_DDS_NS_AUTO 3 + + /* Phase_Increment and Phase_Offset values */ +#define XIP_DDS_PINCPOFF_NONE 0 +#define XIP_DDS_PINCPOFF_PROG 1 +#define XIP_DDS_PINCPOFF_FIXED 2 +#define XIP_DDS_PINCPOFF_STREAM 3 + + /* Output_Selection values */ +#define XIP_DDS_OUT_SIN_ONLY 0 +#define XIP_DDS_OUT_COS_ONLY 1 +#define XIP_DDS_OUT_SIN_AND_COS 2 + + /* Present/absent values */ +#define XIP_DDS_ABSENT 0 +#define XIP_DDS_PRESENT 1 + + /* Amplitude_Mode values */ +#define XIP_DDS_FULL_RANGE 0 +#define XIP_DDS_UNIT_CIRCLE 1 + + /* Output_Form */ +#define XIP_DDS_OUTPUT_TWOS 0 +#define XIP_DDS_OUTPUT_SIGN_MAG 1 + + /* Memory_Type values */ +#define XIP_DDS_MEM_AUTO 0 +#define XIP_DDS_MEM_BLOCK 1 +#define XIP_DDS_MEM_DIST 2 + + /* Optimization_Goal values */ +#define XIP_DDS_OPTGOAL_AUTO 0 +#define XIP_DDS_OPTGOAL_AREA 1 +#define XIP_DDS_OPTGOAL_SPEED 2 + + /* Resolved Optimization_Goal values */ +#define XIP_DDS_RESOPTGOAL_AREA 0 +#define XIP_DDS_RESOPTGOAL_SPEED 1 + + /* DSP48_use values */ +#define XIP_DDS_DSP_MIN 0 +#define XIP_DDS_DSP_MAX 1 + + /* Latency_configuration values */ +#define XIP_DDS_LATENCY_AUTO 0 +#define XIP_DDS_LATENCY_MANUAL 1 + + /* S_CONFIG_Sync_Mode values */ +#define XIP_DDS_CONFIG_SYNC_VECTOR 0 +#define XIP_DDS_CONFIG_SYNC_PACKET 1 + +#define ci_max_pipe_stages 13 +#define ci_quad_sym_thresh 2048 + +typedef double xip_dds_v6_0_data; + +typedef struct +{ + /** + * dds_compiler_v6_0 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + */ + const char *name; //@- Instance name (arbitrary) + unsigned int PartsPresent; + double DDS_Clock_Rate; + unsigned int Channels; + unsigned int Mode_of_Operation; + unsigned int Modulus; + unsigned int ParameterEntry; + double Spurious_Free_Dynamic_Range; + double Frequency_Resolution; + unsigned int Noise_Shaping; + unsigned int Phase_Increment; + unsigned int Resync; + unsigned int Phase_Offset; + unsigned int Output_Selection; + unsigned int Negative_Sine; + unsigned int Negative_Cosine; + unsigned int Amplitude_Mode; + unsigned int Memory_Type; + unsigned int Optimization_Goal; + unsigned int DSP48_Use; + unsigned int Has_TREADY; + unsigned int S_CONFIG_Sync_Mode; + unsigned int Output_Form; + unsigned int Latency_Configuration; + unsigned int Has_ARESETn; + xip_dds_v6_0_data PINC[XIP_DDS_CHANNELS_MAX]; + xip_dds_v6_0_data POFF[XIP_DDS_CHANNELS_MAX]; + unsigned int Latency; + unsigned int Phase_Width; + unsigned int Output_Width; + + /* The following parameters are the results of resolution fns. They are included here so that they are in + the return structure of get_config */ + + double resSFDR; + double resFrequency_Resolution; + unsigned int resNoise_Shaping; + unsigned int resMemory_Type; + unsigned int resOptimization_Goal; + signed int resLatency; + unsigned int resPhase_Width; + unsigned int resOutput_Width; + unsigned int resPhaseAngleWidth; + unsigned int resPhaseErrWidth; + xip_uint resLatencyPipe[ci_max_pipe_stages+1]; //100 is much bigger than max possible latency + + + int debug; //@- Debug information +} xip_dds_v6_0_config; + +typedef struct +{ + /** + * Input data config channel structure. Contains pointers to vectors (arrays) of double parts + * i.e. one array for PhaseINCrement values - one per channel and the other array for PhaseOFFset values. + */ + + xip_dds_v6_0_data *din_pinc; //@- Phase Increment data + xip_dds_v6_0_data *din_poff; //@- Phase Offset data + +} xip_dds_v6_0_config_pkt; + + +/** + * dds_compiler_v6_0 handle type (opaque to user). + */ +struct _xip_dds_v6_0; +typedef struct _xip_dds_v6_0 xip_dds_v6_0; + +//Helpers for accessing data +XIP_XILINX_XIP_IMPEXP const xip_status xip_dds_v6_0_xip_array_real_set_data(xip_array_real* p, const xip_real value, size_t sample, size_t chan, size_t field); +XIP_XILINX_XIP_IMPEXP const xip_status xip_dds_v6_0_xip_array_real_get_data(const xip_array_real* p, xip_real* value, size_t sample, size_t chan, size_t field); + +/** + * Fill in a configuration structure with the core's default values. + * + * @param config The configuration structure to be populated + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_default_config(xip_dds_v6_0_config *config); + + +/** + * Create a new instance of the core based on some configuration values. + * + * @param config Pointer to a xip_dds_v6_0_config structure + * @param handler Callback function for errors and warnings (providing a null + * pointer means no messages are output) + * @param handle Optional argument to be passed back to callback function + * + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_dds_v6_0 *xip_dds_v6_0_create( + const xip_dds_v6_0_config *config, + xip_msg_handler handler, + void *handle +); + +/** + * Destroy an instance of the core and free any resources allocated. + * + * @param s Pointer to xip_dds_v6_0 state structure + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_destroy(xip_dds_v6_0 *s); + +/** + * Get version of model. + * + * @returns String Textual representation of model version + */ +XIP_XILINX_XIP_IMPEXP +const char* xip_dds_v6_0_get_version(void); + +/** + * Reset an instance of the core. + * + * @param s Pointer to xip_dds_v6_0 state structure + * @returns Exit code XIP_STATUS_* + */ + +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_reset(xip_dds_v6_0 *s); + +/** + * Fill a configuration structure with the core's current state + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_get_config(xip_dds_v6_0 *s, + xip_dds_v6_0_config* config); + +/** + * Allocate appropriate buffers in a config pkt structure. + * + * @param r Address of a pointer to request structure to set up + * @param din_pinc_size Number of channels to allocate space for + * @param din_poff_size Number of channels to allocate space for + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_alloc_config_pkt(xip_dds_v6_0_config_pkt **r, + xip_uint din_pinc_size, + xip_uint din_poff_size); + +/** + * Deallocate the buffers in a config pkt structure allocated by xip_dds_v6_0_alloc_config_pkt + * + * @param s Pointer to xip_dds_v6_0 state structure + * @param r Pointer to config_pkt structure to free + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_free_config_pkt(xip_dds_v6_0_config_pkt **r); + +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_config_do(xip_dds_v6_0 *s, + xip_dds_v6_0_config_pkt *req); + + +/** + * Apply a transaction on the data port. + * + * @param s Pointer to xip_dds_v6_0 state structure + * @param req Pointer to xip_array_real request array + * @param resp Pointer to xip_array_real response array + * @param samples, channels, in_fields, out_fields Dimensions of input and output arrays (Sample and channel are common to both) + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_data_do(xip_dds_v6_0 *s, + xip_array_real *req, + xip_array_real *resp, + size_t samples, + size_t channels, + size_t in_fields, + size_t out_fields); + +XIP_XILINX_XIP_IMPEXP +const xip_status xip_dds_v6_0_data_do_signed(xip_dds_v6_0 *s, + xip_array_real *req, + xip_array_real *resp, + size_t samples, + size_t channels, + size_t in_fields, + size_t out_fields, + int form); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vitis/v2021_2/dds/xip_common_bitacc_cmodel.h b/vitis/v2021_2/dds/xip_common_bitacc_cmodel.h new file mode 100755 index 00000000..d0d06b14 --- /dev/null +++ b/vitis/v2021_2/dds/xip_common_bitacc_cmodel.h @@ -0,0 +1,262 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +// (c) Copyright 2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models. +// #include this file inside each C model's exported header file. + +#ifndef XIP_COMMON_BITACC_CMODEL_H +#define XIP_COMMON_BITACC_CMODEL_H + +//Determine shared library import attributes +#ifndef XIP_XILINX_XIP_IMPEXP +#if defined(NT) || defined(NT64) +#define XIP_XILINX_XIP_IMPEXP __declspec(dllimport) +#elif defined(LIN) || defined(LIN64) +#define XIP_XILINX_XIP_IMPEXP +#else +#define XIP_XILINX_XIP_IMPEXP +#endif +#endif + +//Determine best way to approximate inline functions +#ifndef XIP_XILINX_XIP_INLINE +#ifdef __cplusplus +#define XIP_XILINX_XIP_INLINE inline +#elif (__STDC_VERSION__ >= 199901L) +#define XIP_XILINX_XIP_INLINE static inline +#else +#define XIP_XILINX_XIP_INLINE static +#endif +#endif + +//Check we know which model we are being included for +#ifndef XIP_XILINX_XIP_TARGET +#error "XIP_XILINX_XIP_TARGET undefined; must give interface name of model being compiled" +#endif + +#ifdef __cplusplus +#include +using std::size_t; +extern "C" { +#else +#include +#endif + + +/** + * Result code from DLL functions + */ +typedef int xip_status; + +/** + * Error codes + */ +#define XIP_STATUS_OK 0 +#define XIP_STATUS_ERROR 1 + +/** + * Bit type + */ +typedef unsigned char xip_bit; +#define xip_type_trait_bit 0 + +/** + * Real scalar type + */ +typedef double xip_real; +#define xip_type_trait_real 0 + +/** + * Complex scalar type + */ +typedef struct { xip_real re, im; } xip_complex; +#define xip_type_trait_complex 0 + +/** + * Integer type + */ +typedef unsigned int xip_uint; +#define xip_type_trait_uint 0 + +/** + * 32 bit integer type + */ +typedef unsigned int xip_uint32; +#define xip_type_trait_uint32 0 + + +/** + * Declare a xip_array_ structure for holding multi-dimensional arrays of xip_ instances + * Use xip_array__create() to create an array instance + * Use xip_array__create_ex(xip_array__operations* ops) to create an array instance using a given xip_array__operations object + * Use xip_array__reserve_data(xip_array_* array, size_t n) to reserve data elements + * Use xip_array__reserve_dim(xip_array_* array, size_t n) to reserve dimension elements + * Use xip_array__destroy(xip_array_*) to destroy an array instance + * Use xip_array__sub2ind_*(const xip_array_* p, size_t s0...) to obtain an index from a list of subscripts + * Use xip_array__set_element(xip_array_* p, const xip_ value, size_t index) to set a value + * Use xip_array__get_element(const xip_array_* p, xip_* value, size_t index) to get a value + * + * e.g. + * xip_array_real* array = xip_array_real_create(); //Create an empty array + * xip_array_real_reserve_data(array,1000); //Reserve space for 1000 elements + * xip_array_real_reserve_dim(array,10); //Reserve space for 10 dimensions + * array = xip_array_real_destroy(array); //Destroy array + * + */ +#define DECLARE_XIP_ARRAY(TYPE) \ +typedef struct xip_array_##TYPE##_struct xip_array_##TYPE; \ +typedef struct xip_array_##TYPE##_operations_struct xip_array_##TYPE##_operations; \ +struct xip_array_##TYPE##_struct { \ + xip_##TYPE* data; \ + size_t data_size; \ + size_t data_capacity; \ + size_t* dim; \ + size_t dim_size; \ + size_t dim_capacity; \ + unsigned int owner; \ + const xip_array_##TYPE##_operations* ops; \ +}; \ +struct xip_array_##TYPE##_operations_struct { \ + void* const (*ops_realloc )(const xip_array_##TYPE##_operations* ops, void* p, size_t size); \ + void (*ops_free )(const xip_array_##TYPE##_operations* ops, void* p); \ + void (*ops_elem_create )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void (*ops_elem_copy )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* dst, const xip_##TYPE* src); \ + void (*ops_elem_swap )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e1, xip_##TYPE* e2); \ + void (*ops_elem_destroy)(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void* ops_private; \ +} + +/** + * Export xip_array_ functions + */ +#define EXPORT_XIP_ARRAY(TYPE,TARGET) EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) +#define EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_IMPEXP const xip_array_##TYPE##_operations* const xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_destroy(xip_array_##TYPE* p); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) + +/** + * Declare the array type interfaces + * Note: for any given xip_array_* there should be only one DECLARE_XIP_ARRAY_INTERFACE to expose the interface + */ +#define DECLARE_XIP_ARRAY_INTERFACE(TYPE,TARGET) DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) +#define DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_INLINE const xip_array_##TYPE##_operations* const xip_array_##TYPE##_get_default_ops() { return xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create() { return xip_##TARGET##_xip_array_##TYPE##_create(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops) { return xip_##TARGET##_xip_array_##TYPE##_create_ex(ops); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels) { return xip_##TARGET##_xip_array_##TYPE##_reserve_data(p,max_nels); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim) { return xip_##TARGET##_xip_array_##TYPE##_reserve_dim(p,max_ndim); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_destroy(xip_array_##TYPE* p) { return xip_##TARGET##_xip_array_##TYPE##_destroy(p); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(p,s0); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(p,s0,s1); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(p,s0,s1,s2); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(p,s0,s1,s2,s3); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_set_element(p,value,index); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_get_element(p,value,index); } + +/** + * Declare and export the fundamental array types + */ +DECLARE_XIP_ARRAY(bit ); EXPORT_XIP_ARRAY(bit ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(real ); EXPORT_XIP_ARRAY(real ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(complex); EXPORT_XIP_ARRAY(complex,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint ); EXPORT_XIP_ARRAY(uint ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint32 ); EXPORT_XIP_ARRAY(uint32 ,XIP_XILINX_XIP_TARGET); + + +//Exposed interfaces for each xip_array_* type only if a previous Xilinx C model has not already done so +#ifndef XIP_ARRAY_BIT_API +DECLARE_XIP_ARRAY_INTERFACE(bit ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_BIT_API +#endif + +#ifndef XIP_ARRAY_REAL_API +DECLARE_XIP_ARRAY_INTERFACE(real ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_REAL_API +#endif + +#ifndef XIP_ARRAY_COMPLEX_API +DECLARE_XIP_ARRAY_INTERFACE(complex,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_COMPLEX_API +#endif + +#ifndef XIP_ARRAY_UINT_API +DECLARE_XIP_ARRAY_INTERFACE(uint ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT_API +#endif + +#ifndef XIP_ARRAY_UINT32_API +DECLARE_XIP_ARRAY_INTERFACE(uint32 ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT32_API +#endif + +/** + * Error-handling callback type + */ +typedef void (*xip_msg_handler)(void* handle, int error, const char* msg); + +/** + * Data-handling callback type + * Specific to xip_array_real type + */ +typedef int (*xip_array_real_handler)(const xip_array_real* data, void* handle, void* opt_arg); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_COMMON_BITACC_CMODEL_H diff --git a/vitis/v2021_2/dsp_builtins.h b/vitis/v2021_2/dsp_builtins.h new file mode 100755 index 00000000..7183bd23 --- /dev/null +++ b/vitis/v2021_2/dsp_builtins.h @@ -0,0 +1,86 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_DSP_BUILTINS_H +#define X_DSP_BUILTINS_H +#include + +#ifdef __cplusplus +#include "ap_int.h" +typedef ap_int<1> __dsp1_t; +typedef ap_int<6> __dsp6_t; +typedef ap_int<17> __dsp17_t; +typedef ap_int<18> __dsp18_t; +typedef ap_int<25> __dsp25_t; +typedef ap_int<27> __dsp27_t; +typedef ap_int<30> __dsp30_t; +typedef ap_int<48> __dsp48_t; +#else +#include "ap_cint.h" +typedef int1 __dsp1_t; +typedef int6 __dsp6_t; +typedef int17 __dsp17_t; +typedef int18 __dsp18_t; +typedef int25 __dsp25_t; +typedef int27 __dsp27_t; +typedef int30 __dsp30_t; +typedef int48 __dsp48_t; +#endif + +#include "etc/dsp_dp_builtins.h" +#include "etc/dsp48_builtins.h" + +#endif + + + diff --git a/vitis/v2021_2/etc/ap_private.h b/vitis/v2021_2/etc/ap_private.h new file mode 100755 index 00000000..b35abe87 --- /dev/null +++ b/vitis/v2021_2/etc/ap_private.h @@ -0,0 +1,7534 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ + +#ifndef __AP_PRIVATE_H__ +#define __AP_PRIVATE_H__ +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic ignored "-Wint-in-bool-context" +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + +// common macros and type declarations are now defined in ap_common.h, and +// ap_private becomes part of it. +#ifndef __AP_COMMON_H__ +#error "etc/ap_private.h cannot be included directly." +#endif + +// forward declarations +// template +// class ap_private; // moved to ap_common.h +template struct _private_range_ref; +template struct _private_bit_ref; + +// TODO clean up this part. +#ifndef LLVM_SUPPORT_MATHEXTRAS_H +#define LLVM_SUPPORT_MATHEXTRAS_H + +#ifdef _MSC_VER +#if _MSC_VER <= 1500 +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +#include +#endif +#else +#include +#endif + +// FIXME eventually, this should have nothing to do with half. +#include "vitis/v2021_2/hls_half.h" + +#ifndef INLINE +#define INLINE inline +// Enable to debug ap_int/ap_fixed +// #define INLINE __attribute__((weak)) +#endif + +// NOTE: The following support functions use the _32/_64 extensions instead of +// type overloading so that signed and unsigned integers can be used without +// ambiguity. +namespace AESL_std { +template DataType INLINE min(DataType a, DataType b) { + return (a >= b) ? b : a; +} + +template DataType INLINE max(DataType a, DataType b) { + return (a >= b) ? a : b; +} +} // namespace AESL_std + +// TODO clean up included headers. +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ap_private_ops { +/// Hi_32 - This function returns the high 32 bits of a 64 bit value. +static INLINE uint32_t Hi_32(uint64_t Value) { + return static_cast(Value >> 32); +} + +/// Lo_32 - This function returns the low 32 bits of a 64 bit value. +static INLINE uint32_t Lo_32(uint64_t Value) { + return static_cast(Value); +} + +template INLINE bool isNegative(const ap_private<_AP_W, false> &a) { + return false; +} + +template INLINE bool isNegative(const ap_private<_AP_W, true> &a) { + enum { + APINT_BITS_PER_WORD = 64, + _AP_N = (_AP_W + APINT_BITS_PER_WORD - 1) / APINT_BITS_PER_WORD + }; + static const uint64_t sign_mask = 1ULL << ((_AP_W - 1) % APINT_BITS_PER_WORD); + return (sign_mask & a.get_pVal(_AP_N - 1)) != 0; +} + +/// CountLeadingZeros_32 - this function performs the platform optimal form of +/// counting the number of zeros from the most significant bit to the first one +/// bit. Ex. CountLeadingZeros_32(0x00F000FF) == 8. +/// Returns 32 if the word is zero. +static INLINE unsigned CountLeadingZeros_32(uint32_t Value) { + unsigned Count; // result +#if __GNUC__ >= 4 +// PowerPC is defined for __builtin_clz(0) +#if !defined(__ppc__) && !defined(__ppc64__) + if (Value == 0) + return 32; +#endif + Count = __builtin_clz(Value); +#else + if (Value == 0) + return 32; + Count = 0; + // bisecton method for count leading zeros + for (unsigned Shift = 32 >> 1; Shift; Shift >>= 1) { + uint32_t Tmp = (Value) >> (Shift); + if (Tmp) { + Value = Tmp; + } else { + Count |= Shift; + } + } +#endif + return Count; +} + +/// CountLeadingZeros_64 - This function performs the platform optimal form +/// of counting the number of zeros from the most significant bit to the first +/// one bit (64 bit edition.) +/// Returns 64 if the word is zero. +static INLINE unsigned CountLeadingZeros_64(uint64_t Value) { + unsigned Count; // result +#if __GNUC__ >= 4 +// PowerPC is defined for __builtin_clzll(0) +#if !defined(__ppc__) && !defined(__ppc64__) + if (!Value) + return 64; +#endif + Count = __builtin_clzll(Value); +#else + if (sizeof(long) == sizeof(int64_t)) { + if (!Value) + return 64; + Count = 0; + // bisecton method for count leading zeros + for (unsigned Shift = 64 >> 1; Shift; Shift >>= 1) { + uint64_t Tmp = (Value) >> (Shift); + if (Tmp) { + Value = Tmp; + } else { + Count |= Shift; + } + } + } else { + // get hi portion + uint32_t Hi = Hi_32(Value); + + // if some bits in hi portion + if (Hi) { + // leading zeros in hi portion plus all bits in lo portion + Count = CountLeadingZeros_32(Hi); + } else { + // get lo portion + uint32_t Lo = Lo_32(Value); + // same as 32 bit value + Count = CountLeadingZeros_32(Lo) + 32; + } + } +#endif + return Count; +} + +/// CountTrailingZeros_64 - This function performs the platform optimal form +/// of counting the number of zeros from the least significant bit to the first +/// one bit (64 bit edition.) +/// Returns 64 if the word is zero. +static INLINE unsigned CountTrailingZeros_64(uint64_t Value) { +#if __GNUC__ >= 4 + return (Value != 0) ? __builtin_ctzll(Value) : 64; +#else + static const unsigned Mod67Position[] = { + 64, 0, 1, 39, 2, 15, 40, 23, 3, 12, 16, 59, 41, 19, 24, 54, 4, + 64, 13, 10, 17, 62, 60, 28, 42, 30, 20, 51, 25, 44, 55, 47, 5, 32, + 65, 38, 14, 22, 11, 58, 18, 53, 63, 9, 61, 27, 29, 50, 43, 46, 31, + 37, 21, 57, 52, 8, 26, 49, 45, 36, 56, 7, 48, 35, 6, 34, 33, 0}; + return Mod67Position[(uint64_t)(-(int64_t)Value & (int64_t)Value) % 67]; +#endif +} + +/// CountPopulation_64 - this function counts the number of set bits in a value, +/// (64 bit edition.) +static INLINE unsigned CountPopulation_64(uint64_t Value) { +#if __GNUC__ >= 4 + return __builtin_popcountll(Value); +#else + uint64_t v = Value - (((Value) >> 1) & 0x5555555555555555ULL); + v = (v & 0x3333333333333333ULL) + (((v) >> 2) & 0x3333333333333333ULL); + v = (v + ((v) >> 4)) & 0x0F0F0F0F0F0F0F0FULL; + return unsigned((uint64_t)(v * 0x0101010101010101ULL) >> 56); +#endif +} + +static INLINE uint32_t countLeadingOnes_64(uint64_t __V, uint32_t skip) { + uint32_t Count = 0; + if (skip) + (__V) <<= (skip); + while (__V && (__V & (1ULL << 63))) { + Count++; + (__V) <<= 1; + } + return Count; +} + +static INLINE std::string oct2Bin(char oct) { + switch (oct) { + case '\0': { + return ""; + } + case '.': { + return "."; + } + case '0': { + return "000"; + } + case '1': { + return "001"; + } + case '2': { + return "010"; + } + case '3': { + return "011"; + } + case '4': { + return "100"; + } + case '5': { + return "101"; + } + case '6': { + return "110"; + } + case '7': { + return "111"; + } + } + assert(0 && "Invalid character in digit string"); + return ""; +} + +static INLINE std::string hex2Bin(char hex) { + switch (hex) { + case '\0': { + return ""; + } + case '.': { + return "."; + } + case '0': { + return "0000"; + } + case '1': { + return "0001"; + } + case '2': { + return "0010"; + } + case '3': { + return "0011"; + } + case '4': { + return "0100"; + } + case '5': { + return "0101"; + } + case '6': { + return "0110"; + } + case '7': { + return "0111"; + } + case '8': { + return "1000"; + } + case '9': { + return "1001"; + } + case 'A': + case 'a': { + return "1010"; + } + case 'B': + case 'b': { + return "1011"; + } + case 'C': + case 'c': { + return "1100"; + } + case 'D': + case 'd': { + return "1101"; + } + case 'E': + case 'e': { + return "1110"; + } + case 'F': + case 'f': { + return "1111"; + } + } + assert(0 && "Invalid character in digit string"); + return ""; +} + +static INLINE uint32_t decode_digit(char cdigit, int radix) { + uint32_t digit = 0; + if (radix == 16) { +#define isxdigit(c) \ + (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || \ + ((c) >= 'A' && (c) <= 'F')) +#define isdigit(c) ((c) >= '0' && (c) <= '9') + if (!isxdigit(cdigit)) + assert(0 && "Invalid hex digit in string"); + if (isdigit(cdigit)) + digit = cdigit - '0'; + else if (cdigit >= 'a') + digit = cdigit - 'a' + 10; + else if (cdigit >= 'A') + digit = cdigit - 'A' + 10; + else + assert(0 && "huh? we shouldn't get here"); + } else if (isdigit(cdigit)) { + digit = cdigit - '0'; + } else { + assert(0 && "Invalid character in digit string"); + } +#undef isxdigit +#undef isdigit + return digit; +} + +// Determine the radix of "val". +static INLINE std::string parseString(const std::string &input, + unsigned char &radix) { + size_t len = input.length(); + if (len == 0) { + if (radix == 0) + radix = 10; + return input; + } + + size_t startPos = 0; + // Trim whitespace + while (input[startPos] == ' ' && startPos < len) + startPos++; + while (input[len - 1] == ' ' && startPos < len) + len--; + + std::string val = input.substr(startPos, len - startPos); + // std::cout << "val = " << val << "\n"; + len = val.length(); + startPos = 0; + + // If the length of the string is less than 2, then radix + // is decimal and there is no exponent. + if (len < 2) { + if (radix == 0) + radix = 10; + return val; + } + + bool isNegative = false; + std::string ans; + + // First check to see if we start with a sign indicator + if (val[0] == '-') { + ans = "-"; + ++startPos; + isNegative = true; + } else if (val[0] == '+') + ++startPos; + + if (len - startPos < 2) { + if (radix == 0) + radix = 10; + return val; + } + + if (val.substr(startPos, 2) == "0x" || val.substr(startPos, 2) == "0X") { + // If we start with "0x", then the radix is hex. + radix = 16; + startPos += 2; + } else if (val.substr(startPos, 2) == "0b" || + val.substr(startPos, 2) == "0B") { + // If we start with "0b", then the radix is binary. + radix = 2; + startPos += 2; + } else if (val.substr(startPos, 2) == "0o" || + val.substr(startPos, 2) == "0O") { + // If we start with "0o", then the radix is octal. + radix = 8; + startPos += 2; + } else if (radix == 0) { + radix = 10; + } + + int exp = 0; + if (radix == 10) { + // If radix is decimal, then see if there is an + // exponent indicator. + size_t expPos = val.find('e'); + bool has_exponent = true; + if (expPos == std::string::npos) + expPos = val.find('E'); + if (expPos == std::string::npos) { + // No exponent indicator, so the mantissa goes to the end. + expPos = len; + has_exponent = false; + } + // std::cout << "startPos = " << startPos << " " << expPos << "\n"; + + ans += val.substr(startPos, expPos - startPos); + if (has_exponent) { + // Parse the exponent. + std::istringstream iss(val.substr(expPos + 1, len - expPos - 1)); + iss >> exp; + } + } else { + // Check for a binary exponent indicator. + size_t expPos = val.find('p'); + bool has_exponent = true; + if (expPos == std::string::npos) + expPos = val.find('P'); + if (expPos == std::string::npos) { + // No exponent indicator, so the mantissa goes to the end. + expPos = len; + has_exponent = false; + } + + // std::cout << "startPos = " << startPos << " " << expPos << "\n"; + + assert(startPos <= expPos); + // Convert to binary as we go. + for (size_t i = startPos; i < expPos; ++i) { + if (radix == 16) { + ans += hex2Bin(val[i]); + } else if (radix == 8) { + ans += oct2Bin(val[i]); + } else { // radix == 2 + ans += val[i]; + } + } + // End in binary + radix = 2; + if (has_exponent) { + // Parse the exponent. + std::istringstream iss(val.substr(expPos + 1, len - expPos - 1)); + iss >> exp; + } + } + if (exp == 0) + return ans; + + size_t decPos = ans.find('.'); + if (decPos == std::string::npos) + decPos = ans.length(); + if ((int)decPos + exp >= (int)ans.length()) { + int i = decPos; + for (; i < (int)ans.length() - 1; ++i) + ans[i] = ans[i + 1]; + for (; i < (int)ans.length(); ++i) + ans[i] = '0'; + for (; i < (int)decPos + exp; ++i) + ans += '0'; + return ans; + } else if ((int)decPos + exp < (int)isNegative) { + std::string dupAns = "0."; + if (ans[0] == '-') + dupAns = "-0."; + for (int i = 0; i < isNegative - (int)decPos - exp; ++i) + dupAns += '0'; + for (size_t i = isNegative; i < ans.length(); ++i) + if (ans[i] != '.') + dupAns += ans[i]; + return dupAns; + } + + if (exp > 0) + for (size_t i = decPos; i < decPos + exp; ++i) + ans[i] = ans[i + 1]; + else { + if (decPos == ans.length()) + ans += ' '; + for (int i = decPos; i > (int)decPos + exp; --i) + ans[i] = ans[i - 1]; + } + ans[decPos + exp] = '.'; + return ans; +} + +/// sub_1 - This function subtracts a single "digit" (64-bit word), y, from +/// the multi-digit integer array, x[], propagating the borrowed 1 value until +/// no further borrowing is neeeded or it runs out of "digits" in x. The result +/// is 1 if "borrowing" exhausted the digits in x, or 0 if x was not exhausted. +/// In other words, if y > x then this function returns 1, otherwise 0. +/// @returns the borrow out of the subtraction +static INLINE bool sub_1(uint64_t x[], uint32_t len, uint64_t y) { + for (uint32_t i = 0; i < len; ++i) { + uint64_t __X = x[i]; + x[i] -= y; + if (y > __X) + y = 1; // We have to "borrow 1" from next "digit" + else { + y = 0; // No need to borrow + break; // Remaining digits are unchanged so exit early + } + } + return (y != 0); +} + +/// add_1 - This function adds a single "digit" integer, y, to the multiple +/// "digit" integer array, x[]. x[] is modified to reflect the addition and +/// 1 is returned if there is a carry out, otherwise 0 is returned. +/// @returns the carry of the addition. +static INLINE bool add_1(uint64_t dest[], uint64_t x[], uint32_t len, + uint64_t y) { + for (uint32_t i = 0; i < len; ++i) { + dest[i] = y + x[i]; + if (dest[i] < y) + y = 1; // Carry one to next digit. + else { + y = 0; // No need to carry so exit early + break; + } + } + return (y != 0); +} + +/// add - This function adds the integer array x to the integer array Y and +/// places the result in dest. +/// @returns the carry out from the addition +/// @brief General addition of 64-bit integer arrays +static INLINE bool add(uint64_t *dest, const uint64_t *x, const uint64_t *y, + uint32_t destlen, uint32_t xlen, uint32_t ylen, + bool xsigned, bool ysigned) { + bool carry = false; + uint32_t len = AESL_std::min(xlen, ylen); + uint32_t i; + for (i = 0; i < len && i < destlen; ++i) { + uint64_t limit = + AESL_std::min(x[i], y[i]); // must come first in case dest == x + dest[i] = x[i] + y[i] + carry; + carry = dest[i] < limit || (carry && dest[i] == limit); + } + if (xlen > ylen) { + const uint64_t yext = ysigned && int64_t(y[ylen - 1]) < 0 ? -1 : 0; + for (i = ylen; i < xlen && i < destlen; i++) { + uint64_t limit = AESL_std::min(x[i], yext); + dest[i] = x[i] + yext + carry; + carry = (dest[i] < limit) || (carry && dest[i] == limit); + } + } else if (ylen > xlen) { + const uint64_t xext = xsigned && int64_t(x[xlen - 1]) < 0 ? -1 : 0; + for (i = xlen; i < ylen && i < destlen; i++) { + uint64_t limit = AESL_std::min(xext, y[i]); + dest[i] = xext + y[i] + carry; + carry = (dest[i] < limit) || (carry && dest[i] == limit); + } + } + return carry; +} + +/// @returns returns the borrow out. +/// @brief Generalized subtraction of 64-bit integer arrays. +static INLINE bool sub(uint64_t *dest, const uint64_t *x, const uint64_t *y, + uint32_t destlen, uint32_t xlen, uint32_t ylen, + bool xsigned, bool ysigned) { + bool borrow = false; + uint32_t i; + uint32_t len = AESL_std::min(xlen, ylen); + for (i = 0; i < len && i < destlen; ++i) { + uint64_t x_tmp = borrow ? x[i] - 1 : x[i]; + borrow = y[i] > x_tmp || (borrow && x[i] == 0); + dest[i] = x_tmp - y[i]; + } + if (xlen > ylen) { + const uint64_t yext = ysigned && int64_t(y[ylen - 1]) < 0 ? -1 : 0; + for (i = ylen; i < xlen && i < destlen; i++) { + uint64_t x_tmp = borrow ? x[i] - 1 : x[i]; + borrow = yext > x_tmp || (borrow && x[i] == 0); + dest[i] = x_tmp - yext; + } + } else if (ylen > xlen) { + const uint64_t xext = xsigned && int64_t(x[xlen - 1]) < 0 ? -1 : 0; + for (i = xlen; i < ylen && i < destlen; i++) { + uint64_t x_tmp = borrow ? xext - 1 : xext; + borrow = y[i] > x_tmp || (borrow && xext == 0); + dest[i] = x_tmp - y[i]; + } + } + return borrow; +} + +/// Subtracts the RHS ap_private from this ap_private +/// @returns this, after subtraction +/// @brief Subtraction assignment operator. + +/// Multiplies an integer array, x by a a uint64_t integer and places the result +/// into dest. +/// @returns the carry out of the multiplication. +/// @brief Multiply a multi-digit ap_private by a single digit (64-bit) integer. +static INLINE uint64_t mul_1(uint64_t dest[], const uint64_t x[], uint32_t len, + uint64_t y) { + // Split y into high 32-bit part (hy) and low 32-bit part (ly) + uint64_t ly = y & 0xffffffffULL, hy = (y) >> 32; + uint64_t carry = 0; + static const uint64_t two_power_32 = 1ULL << 32; + // For each digit of x. + for (uint32_t i = 0; i < len; ++i) { + // Split x into high and low words + uint64_t lx = x[i] & 0xffffffffULL; + uint64_t hx = (x[i]) >> 32; + // hasCarry - A flag to indicate if there is a carry to the next digit. + // hasCarry == 0, no carry + // hasCarry == 1, has carry + // hasCarry == 2, no carry and the calculation result == 0. + uint8_t hasCarry = 0; + dest[i] = carry + lx * ly; + // Determine if the add above introduces carry. + hasCarry = (dest[i] < carry) ? 1 : 0; + carry = hx * ly + ((dest[i]) >> 32) + (hasCarry ? two_power_32 : 0); + // The upper limit of carry can be (2^32 - 1)(2^32 - 1) + + // (2^32 - 1) + 2^32 = 2^64. + hasCarry = (!carry && hasCarry) ? 1 : (!carry ? 2 : 0); + + carry += (lx * hy) & 0xffffffffULL; + dest[i] = ((carry) << 32) | (dest[i] & 0xffffffffULL); + carry = (((!carry && hasCarry != 2) || hasCarry == 1) ? two_power_32 : 0) + + ((carry) >> 32) + ((lx * hy) >> 32) + hx * hy; + } + return carry; +} + +/// Multiplies integer array x by integer array y and stores the result into +/// the integer array dest. Note that dest's size must be >= xlen + ylen in +/// order to +/// do a full precision computation. If it is not, then only the low-order words +/// are returned. +/// @brief Generalized multiplicate of integer arrays. +static INLINE void mul(uint64_t dest[], const uint64_t x[], uint32_t xlen, + const uint64_t y[], uint32_t ylen, uint32_t destlen) { + assert(xlen > 0); + assert(ylen > 0); + assert(destlen >= xlen + ylen); + if (xlen < destlen) + dest[xlen] = mul_1(dest, x, xlen, y[0]); + for (uint32_t i = 1; i < ylen; ++i) { + uint64_t ly = y[i] & 0xffffffffULL, hy = (y[i]) >> 32; + uint64_t carry = 0, lx = 0, hx = 0; + for (uint32_t j = 0; j < xlen; ++j) { + lx = x[j] & 0xffffffffULL; + hx = (x[j]) >> 32; + // hasCarry - A flag to indicate if has carry. + // hasCarry == 0, no carry + // hasCarry == 1, has carry + // hasCarry == 2, no carry and the calculation result == 0. + uint8_t hasCarry = 0; + uint64_t resul = carry + lx * ly; + hasCarry = (resul < carry) ? 1 : 0; + carry = (hasCarry ? (1ULL << 32) : 0) + hx * ly + ((resul) >> 32); + hasCarry = (!carry && hasCarry) ? 1 : (!carry ? 2 : 0); + carry += (lx * hy) & 0xffffffffULL; + resul = ((carry) << 32) | (resul & 0xffffffffULL); + if (i + j < destlen) + dest[i + j] += resul; + carry = + (((!carry && hasCarry != 2) || hasCarry == 1) ? (1ULL << 32) : 0) + + ((carry) >> 32) + (dest[i + j] < resul ? 1 : 0) + ((lx * hy) >> 32) + + hx * hy; + } + if (i + xlen < destlen) + dest[i + xlen] = carry; + } +} + +/// Implementation of Knuth's Algorithm D (Division of nonnegative integers) +/// from "Art of Computer Programming, Volume 2", section 4.3.1, p. 272. The +/// variables here have the same names as in the algorithm. Comments explain +/// the algorithm and any deviation from it. +static INLINE void KnuthDiv(uint32_t *u, uint32_t *v, uint32_t *q, uint32_t *r, + uint32_t m, uint32_t n) { + assert(u && "Must provide dividend"); + assert(v && "Must provide divisor"); + assert(q && "Must provide quotient"); + assert(u != v && u != q && v != q && "Must us different memory"); + assert(n > 1 && "n must be > 1"); + + // Knuth uses the value b as the base of the number system. In our case b + // is 2^31 so we just set it to -1u. + uint64_t b = uint64_t(1) << 32; + + // DEBUG(cerr << "KnuthDiv: m=" << m << " n=" << n << '\n'); + // DEBUG(cerr << "KnuthDiv: original:"); + // DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << std::setbase(16) << + // u[i]); + // DEBUG(cerr << " by"); + // DEBUG(for (int i = n; i >0; i--) cerr << " " << std::setbase(16) << + // v[i-1]); + // DEBUG(cerr << '\n'); + // D1. [Normalize.] Set d = b / (v[n-1] + 1) and multiply all the digits of + // u and v by d. Note that we have taken Knuth's advice here to use a power + // of 2 value for d such that d * v[n-1] >= b/2 (b is the base). A power of + // 2 allows us to shift instead of multiply and it is easy to determine the + // shift amount from the leading zeros. We are basically normalizing the u + // and v so that its high bits are shifted to the top of v's range without + // overflow. Note that this can require an extra word in u so that u must + // be of length m+n+1. + uint32_t shift = CountLeadingZeros_32(v[n - 1]); + uint32_t v_carry = 0; + uint32_t u_carry = 0; + if (shift) { + for (uint32_t i = 0; i < m + n; ++i) { + uint32_t u_tmp = (u[i]) >> (32 - shift); + u[i] = ((u[i]) << (shift)) | u_carry; + u_carry = u_tmp; + } + for (uint32_t i = 0; i < n; ++i) { + uint32_t v_tmp = (v[i]) >> (32 - shift); + v[i] = ((v[i]) << (shift)) | v_carry; + v_carry = v_tmp; + } + } + u[m + n] = u_carry; + // DEBUG(cerr << "KnuthDiv: normal:"); + // DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << std::setbase(16) << + // u[i]); + // DEBUG(cerr << " by"); + // DEBUG(for (int i = n; i >0; i--) cerr << " " << std::setbase(16) << + // v[i-1]); + // DEBUG(cerr << '\n'); + + // D2. [Initialize j.] Set j to m. This is the loop counter over the places. + int j = m; + do { + // DEBUG(cerr << "KnuthDiv: quotient digit #" << j << '\n'); + // D3. [Calculate q'.]. + // Set qp = (u[j+n]*b + u[j+n-1]) / v[n-1]. (qp=qprime=q') + // Set rp = (u[j+n]*b + u[j+n-1]) % v[n-1]. (rp=rprime=r') + // Now test if qp == b or qp*v[n-2] > b*rp + u[j+n-2]; if so, decrease + // qp by 1, inrease rp by v[n-1], and repeat this test if rp < b. The test + // on v[n-2] determines at high speed most of the cases in which the trial + // value qp is one too large, and it eliminates all cases where qp is two + // too large. + uint64_t dividend = ((uint64_t(u[j + n]) << 32) + u[j + n - 1]); + // DEBUG(cerr << "KnuthDiv: dividend == " << dividend << '\n'); + uint64_t qp = dividend / v[n - 1]; + uint64_t rp = dividend % v[n - 1]; + if (qp == b || qp * v[n - 2] > b * rp + u[j + n - 2]) { + qp--; + rp += v[n - 1]; + if (rp < b && (qp == b || qp * v[n - 2] > b * rp + u[j + n - 2])) + qp--; + } + // DEBUG(cerr << "KnuthDiv: qp == " << qp << ", rp == " << rp << '\n'); + + // D4. [Multiply and subtract.] Replace (u[j+n]u[j+n-1]...u[j]) with + // (u[j+n]u[j+n-1]..u[j]) - qp * (v[n-1]...v[1]v[0]). This computation + // consists of a simple multiplication by a one-place number, combined with + // a subtraction. + bool isNeg = false; + for (uint32_t i = 0; i < n; ++i) { + uint64_t u_tmp = uint64_t(u[j + i]) | ((uint64_t(u[j + i + 1])) << 32); + uint64_t subtrahend = uint64_t(qp) * uint64_t(v[i]); + bool borrow = subtrahend > u_tmp; + /*DEBUG(cerr << "KnuthDiv: u_tmp == " << u_tmp + << ", subtrahend == " << subtrahend + << ", borrow = " << borrow << '\n');*/ + + uint64_t result = u_tmp - subtrahend; + uint32_t k = j + i; + u[k++] = (uint32_t)(result & (b - 1)); // subtract low word + u[k++] = (uint32_t)((result) >> 32); // subtract high word + while (borrow && k <= m + n) { // deal with borrow to the left + borrow = u[k] == 0; + u[k]--; + k++; + } + isNeg |= borrow; + /*DEBUG(cerr << "KnuthDiv: u[j+i] == " << u[j+i] << ", u[j+i+1] == " << + u[j+i+1] << '\n');*/ + } + /*DEBUG(cerr << "KnuthDiv: after subtraction:"); + DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << u[i]); + DEBUG(cerr << '\n');*/ + // The digits (u[j+n]...u[j]) should be kept positive; if the result of + // this step is actually negative, (u[j+n]...u[j]) should be left as the + // true value plus b**(n+1), namely as the b's complement of + // the true value, and a "borrow" to the left should be remembered. + // + if (isNeg) { + bool carry = true; // true because b's complement is "complement + 1" + for (uint32_t i = 0; i <= m + n; ++i) { + u[i] = ~u[i] + carry; // b's complement + carry = carry && u[i] == 0; + } + } + /*DEBUG(cerr << "KnuthDiv: after complement:"); + DEBUG(for (int i = m+n; i >=0; i--) cerr << " " << u[i]); + DEBUG(cerr << '\n');*/ + + // D5. [Test remainder.] Set q[j] = qp. If the result of step D4 was + // negative, go to step D6; otherwise go on to step D7. + q[j] = (uint32_t)qp; + if (isNeg) { + // D6. [Add back]. The probability that this step is necessary is very + // small, on the order of only 2/b. Make sure that test data accounts for + // this possibility. Decrease q[j] by 1 + q[j]--; + // and add (0v[n-1]...v[1]v[0]) to (u[j+n]u[j+n-1]...u[j+1]u[j]). + // A carry will occur to the left of u[j+n], and it should be ignored + // since it cancels with the borrow that occurred in D4. + bool carry = false; + for (uint32_t i = 0; i < n; i++) { + uint32_t limit = AESL_std::min(u[j + i], v[i]); + u[j + i] += v[i] + carry; + carry = u[j + i] < limit || (carry && u[j + i] == limit); + } + u[j + n] += carry; + } + /*DEBUG(cerr << "KnuthDiv: after correction:"); + DEBUG(for (int i = m+n; i >=0; i--) cerr <<" " << u[i]); + DEBUG(cerr << "\nKnuthDiv: digit result = " << q[j] << '\n');*/ + + // D7. [Loop on j.] Decrease j by one. Now if j >= 0, go back to D3. + } while (--j >= 0); + + /*DEBUG(cerr << "KnuthDiv: quotient:"); + DEBUG(for (int i = m; i >=0; i--) cerr <<" " << q[i]); + DEBUG(cerr << '\n');*/ + + // D8. [Unnormalize]. Now q[...] is the desired quotient, and the desired + // remainder may be obtained by dividing u[...] by d. If r is non-null we + // compute the remainder (urem uses this). + if (r) { + // The value d is expressed by the "shift" value above since we avoided + // multiplication by d by using a shift left. So, all we have to do is + // shift right here. In order to mak + if (shift) { + uint32_t carry = 0; + // DEBUG(cerr << "KnuthDiv: remainder:"); + for (int i = n - 1; i >= 0; i--) { + r[i] = ((u[i]) >> (shift)) | carry; + carry = (u[i]) << (32 - shift); + // DEBUG(cerr << " " << r[i]); + } + } else { + for (int i = n - 1; i >= 0; i--) { + r[i] = u[i]; + // DEBUG(cerr << " " << r[i]); + } + } + // DEBUG(cerr << '\n'); + } + // DEBUG(cerr << std::setbase(10) << '\n'); +} + +template +void divide(const ap_private<_AP_W, _AP_S> &LHS, uint32_t lhsWords, + const ap_private<_AP_W, _AP_S> &RHS, uint32_t rhsWords, + ap_private<_AP_W, _AP_S> *Quotient, + ap_private<_AP_W, _AP_S> *Remainder) { + ap_private<_AP_W, _AP_S> LHS_(LHS); + LHS_.clearUnusedBits(); + ap_private<_AP_W, _AP_S> RHS_(RHS); + RHS_.clearUnusedBits(); + + assert(lhsWords >= rhsWords && "Fractional result"); + enum { APINT_BITS_PER_WORD = 64 }; + // First, compose the values into an array of 32-bit words instead of + // 64-bit words. This is a necessity of both the "short division" algorithm + // and the the Knuth "classical algorithm" which requires there to be native + // operations for +, -, and * on an m bit value with an m*2 bit result. We + // can't use 64-bit operands here because we don't have native results of + // 128-bits. Furthremore, casting the 64-bit values to 32-bit values won't + // work on large-endian machines. + uint64_t mask = ~0ull >> (sizeof(uint32_t) * 8); + uint32_t n = rhsWords * 2; + uint32_t m = (lhsWords * 2) - n; + + // Allocate space for the temporary values we need either on the stack, if + // it will fit, or on the heap if it won't. + uint32_t SPACE[128]; + uint32_t *__U = 0; + uint32_t *__V = 0; + uint32_t *__Q = 0; + uint32_t *__R = 0; + if ((Remainder ? 4 : 3) * n + 2 * m + 1 <= 128) { + __U = &SPACE[0]; + __V = &SPACE[m + n + 1]; + __Q = &SPACE[(m + n + 1) + n]; + if (Remainder) + __R = &SPACE[(m + n + 1) + n + (m + n)]; + } else { + __U = new uint32_t[m + n + 1]; + __V = new uint32_t[n]; + __Q = new uint32_t[m + n]; + if (Remainder) + __R = new uint32_t[n]; + } + + // Initialize the dividend + memset(__U, 0, (m + n + 1) * sizeof(uint32_t)); + for (unsigned i = 0; i < lhsWords; ++i) { + uint64_t tmp = LHS_.get_pVal(i); + __U[i * 2] = (uint32_t)(tmp & mask); + __U[i * 2 + 1] = (tmp) >> (sizeof(uint32_t) * 8); + } + __U[m + n] = 0; // this extra word is for "spill" in the Knuth algorithm. + + // Initialize the divisor + memset(__V, 0, (n) * sizeof(uint32_t)); + for (unsigned i = 0; i < rhsWords; ++i) { + uint64_t tmp = RHS_.get_pVal(i); + __V[i * 2] = (uint32_t)(tmp & mask); + __V[i * 2 + 1] = (tmp) >> (sizeof(uint32_t) * 8); + } + + // initialize the quotient and remainder + memset(__Q, 0, (m + n) * sizeof(uint32_t)); + if (Remainder) + memset(__R, 0, n * sizeof(uint32_t)); + + // Now, adjust m and n for the Knuth division. n is the number of words in + // the divisor. m is the number of words by which the dividend exceeds the + // divisor (i.e. m+n is the length of the dividend). These sizes must not + // contain any zero words or the Knuth algorithm fails. + for (unsigned i = n; i > 0 && __V[i - 1] == 0; i--) { + n--; + m++; + } + for (unsigned i = m + n; i > 0 && __U[i - 1] == 0; i--) + m--; + + // If we're left with only a single word for the divisor, Knuth doesn't work + // so we implement the short division algorithm here. This is much simpler + // and faster because we are certain that we can divide a 64-bit quantity + // by a 32-bit quantity at hardware speed and short division is simply a + // series of such operations. This is just like doing short division but we + // are using base 2^32 instead of base 10. + assert(n != 0 && "Divide by zero?"); + if (n == 1) { + uint32_t divisor = __V[0]; + uint32_t remainder = 0; + for (int i = m + n - 1; i >= 0; i--) { + uint64_t partial_dividend = (uint64_t(remainder)) << 32 | __U[i]; + if (partial_dividend == 0) { + __Q[i] = 0; + remainder = 0; + } else if (partial_dividend < divisor) { + __Q[i] = 0; + remainder = (uint32_t)partial_dividend; + } else if (partial_dividend == divisor) { + __Q[i] = 1; + remainder = 0; + } else { + __Q[i] = (uint32_t)(partial_dividend / divisor); + remainder = (uint32_t)(partial_dividend - (__Q[i] * divisor)); + } + } + if (__R) + __R[0] = remainder; + } else { + // Now we're ready to invoke the Knuth classical divide algorithm. In this + // case n > 1. + KnuthDiv(__U, __V, __Q, __R, m, n); + } + + // If the caller wants the quotient + if (Quotient) { + // Set up the Quotient value's memory. + Quotient->clearUnusedBits(); + if (Quotient->BitWidth != LHS_.BitWidth) { + if (Quotient->isSingleWord()) + Quotient->set_VAL(0); + } else + Quotient->clear(); + + // The quotient is in Q. Reconstitute the quotient into Quotient's low + // order words. + if (lhsWords == 1) { + uint64_t tmp = + uint64_t(__Q[0]) | ((uint64_t(__Q[1])) << (APINT_BITS_PER_WORD / 2)); + Quotient->set_VAL(tmp); + } else { + assert(!Quotient->isSingleWord() && + "Quotient ap_private not large enough"); + for (unsigned i = 0; i < lhsWords; ++i) + Quotient->set_pVal( + i, uint64_t(__Q[i * 2]) | + ((uint64_t(__Q[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Quotient->clearUnusedBits(); + } + + // If the caller wants the remainder + if (Remainder) { + // Set up the Remainder value's memory. + Remainder->clearUnusedBits(); + if (Remainder->BitWidth != RHS_.BitWidth) { + if (Remainder->isSingleWord()) + Remainder->set_VAL(0); + } else + Remainder->clear(); + + // The remainder is in R. Reconstitute the remainder into Remainder's low + // order words. + if (rhsWords == 1) { + uint64_t tmp = + uint64_t(__R[0]) | ((uint64_t(__R[1])) << (APINT_BITS_PER_WORD / 2)); + Remainder->set_VAL(tmp); + } else { + assert(!Remainder->isSingleWord() && + "Remainder ap_private not large enough"); + for (unsigned i = 0; i < rhsWords; ++i) + Remainder->set_pVal( + i, uint64_t(__R[i * 2]) | + ((uint64_t(__R[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Remainder->clearUnusedBits(); + } + + // Clean up the memory we allocated. + if (__U != &SPACE[0]) { + delete[] __U; + delete[] __V; + delete[] __Q; + delete[] __R; + } +} + +template +void divide(const ap_private<_AP_W, _AP_S> &LHS, uint32_t lhsWords, + uint64_t RHS, ap_private<_AP_W, _AP_S> *Quotient, + ap_private<_AP_W, _AP_S> *Remainder) { + ap_private<_AP_W, _AP_S> LHS_(LHS); + LHS_.clearUnusedBits(); + + uint32_t rhsWords = 1; + assert(lhsWords >= rhsWords && "Fractional result"); + enum { APINT_BITS_PER_WORD = 64 }; + // First, compose the values into an array of 32-bit words instead of + // 64-bit words. This is a necessity of both the "short division" algorithm + // and the the Knuth "classical algorithm" which requires there to be native + // operations for +, -, and * on an m bit value with an m*2 bit result. We + // can't use 64-bit operands here because we don't have native results of + // 128-bits. Furthremore, casting the 64-bit values to 32-bit values won't + // work on large-endian machines. + uint64_t mask = ~0ull >> (sizeof(uint32_t) * 8); + uint32_t n = 2; + uint32_t m = (lhsWords * 2) - n; + + // Allocate space for the temporary values we need either on the stack, if + // it will fit, or on the heap if it won't. + uint32_t SPACE[128]; + uint32_t *__U = 0; + uint32_t *__V = 0; + uint32_t *__Q = 0; + uint32_t *__R = 0; + if ((Remainder ? 4 : 3) * n + 2 * m + 1 <= 128) { + __U = &SPACE[0]; + __V = &SPACE[m + n + 1]; + __Q = &SPACE[(m + n + 1) + n]; + if (Remainder) + __R = &SPACE[(m + n + 1) + n + (m + n)]; + } else { + __U = new uint32_t[m + n + 1]; + __V = new uint32_t[n]; + __Q = new uint32_t[m + n]; + if (Remainder) + __R = new uint32_t[n]; + } + + // Initialize the dividend + memset(__U, 0, (m + n + 1) * sizeof(uint32_t)); + for (unsigned i = 0; i < lhsWords; ++i) { + uint64_t tmp = LHS_.get_pVal(i); + __U[i * 2] = tmp & mask; + __U[i * 2 + 1] = (tmp) >> (sizeof(uint32_t) * 8); + } + __U[m + n] = 0; // this extra word is for "spill" in the Knuth algorithm. + + // Initialize the divisor + memset(__V, 0, (n) * sizeof(uint32_t)); + __V[0] = RHS & mask; + __V[1] = (RHS) >> (sizeof(uint32_t) * 8); + + // initialize the quotient and remainder + memset(__Q, 0, (m + n) * sizeof(uint32_t)); + if (Remainder) + memset(__R, 0, n * sizeof(uint32_t)); + + // Now, adjust m and n for the Knuth division. n is the number of words in + // the divisor. m is the number of words by which the dividend exceeds the + // divisor (i.e. m+n is the length of the dividend). These sizes must not + // contain any zero words or the Knuth algorithm fails. + for (unsigned i = n; i > 0 && __V[i - 1] == 0; i--) { + n--; + m++; + } + for (unsigned i = m + n; i > 0 && __U[i - 1] == 0; i--) + m--; + + // If we're left with only a single word for the divisor, Knuth doesn't work + // so we implement the short division algorithm here. This is much simpler + // and faster because we are certain that we can divide a 64-bit quantity + // by a 32-bit quantity at hardware speed and short division is simply a + // series of such operations. This is just like doing short division but we + // are using base 2^32 instead of base 10. + assert(n != 0 && "Divide by zero?"); + if (n == 1) { + uint32_t divisor = __V[0]; + uint32_t remainder = 0; + for (int i = m + n - 1; i >= 0; i--) { + uint64_t partial_dividend = (uint64_t(remainder)) << 32 | __U[i]; + if (partial_dividend == 0) { + __Q[i] = 0; + remainder = 0; + } else if (partial_dividend < divisor) { + __Q[i] = 0; + remainder = partial_dividend; + } else if (partial_dividend == divisor) { + __Q[i] = 1; + remainder = 0; + } else { + __Q[i] = partial_dividend / divisor; + remainder = partial_dividend - (__Q[i] * divisor); + } + } + if (__R) + __R[0] = remainder; + } else { + // Now we're ready to invoke the Knuth classical divide algorithm. In this + // case n > 1. + KnuthDiv(__U, __V, __Q, __R, m, n); + } + + // If the caller wants the quotient + if (Quotient) { + // Set up the Quotient value's memory. + Quotient->clearUnusedBits(); + if (Quotient->BitWidth != LHS_.BitWidth) { + if (Quotient->isSingleWord()) + Quotient->set_VAL(0); + } else + Quotient->clear(); + + // The quotient is in Q. Reconstitute the quotient into Quotient's low + // order words. + if (lhsWords == 1) { + uint64_t tmp = + uint64_t(__Q[0]) | ((uint64_t(__Q[1])) << (APINT_BITS_PER_WORD / 2)); + Quotient->set_VAL(tmp); + } else { + assert(!Quotient->isSingleWord() && + "Quotient ap_private not large enough"); + for (unsigned i = 0; i < lhsWords; ++i) + Quotient->set_pVal( + i, uint64_t(__Q[i * 2]) | + ((uint64_t(__Q[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Quotient->clearUnusedBits(); + } + + // If the caller wants the remainder + if (Remainder) { + // Set up the Remainder value's memory. + Remainder->clearUnusedBits(); + if (Remainder->BitWidth != 64 /* RHS.BitWidth */) { + if (Remainder->isSingleWord()) + Remainder->set_VAL(0); + } else + Remainder->clear(); + + // The remainder is in __R. Reconstitute the remainder into Remainder's low + // order words. + if (rhsWords == 1) { + uint64_t tmp = + uint64_t(__R[0]) | ((uint64_t(__R[1])) << (APINT_BITS_PER_WORD / 2)); + Remainder->set_VAL(tmp); + } else { + assert(!Remainder->isSingleWord() && + "Remainder ap_private not large enough"); + for (unsigned i = 0; i < rhsWords; ++i) + Remainder->set_pVal( + i, uint64_t(__R[i * 2]) | + ((uint64_t(__R[i * 2 + 1])) << (APINT_BITS_PER_WORD / 2))); + } + Remainder->clearUnusedBits(); + } + + // Clean up the memory we allocated. + if (__U != &SPACE[0]) { + delete[] __U; + delete[] __V; + delete[] __Q; + delete[] __R; + } +} + +/// @brief Logical right-shift function. +template +INLINE ap_private<_AP_W, _AP_S, _AP_C> +lshr(const ap_private<_AP_W, _AP_S, _AP_C> &LHS, uint32_t shiftAmt) { + return LHS.lshr(shiftAmt); +} + +/// Left-shift the ap_private by shiftAmt. +/// @brief Left-shift function. +template +INLINE ap_private<_AP_W, _AP_S, _AP_C> +shl(const ap_private<_AP_W, _AP_S, _AP_C> &LHS, uint32_t shiftAmt) { + return LHS.shl(shiftAmt); +} + +} // namespace ap_private_ops + +#endif // LLVM_SUPPORT_MATHEXTRAS_H + +/// This enumeration just provides for internal constants used in this +/// translation unit. +enum { + MIN_INT_BITS = 1, ///< Minimum number of bits that can be specified + ///< Note that this must remain synchronized with IntegerType::MIN_INT_BITS + MAX_INT_BITS = (1 << 23) - 1 ///< Maximum number of bits that can be specified + ///< Note that this must remain synchronized with IntegerType::MAX_INT_BITS +}; + +//===----------------------------------------------------------------------===// +// ap_private Class +//===----------------------------------------------------------------------===// + +/// ap_private - This class represents arbitrary precision constant integral +/// values. +/// It is a functional replacement for common case unsigned integer type like +/// "unsigned", "unsigned long" or "uint64_t", but also allows non-byte-width +/// integer sizes and large integer value types such as 3-bits, 15-bits, or more +/// than 64-bits of precision. ap_private provides a variety of arithmetic +/// operators +/// and methods to manipulate integer values of any bit-width. It supports both +/// the typical integer arithmetic and comparison operations as well as bitwise +/// manipulation. +/// +/// The class has several invariants worth noting: +/// * All bit, byte, and word positions are zero-based. +/// * Once the bit width is set, it doesn't change except by the Truncate, +/// SignExtend, or ZeroExtend operations. +/// * All binary operators must be on ap_private instances of the same bit +/// width. +/// Attempting to use these operators on instances with different bit +/// widths will yield an assertion. +/// * The value is stored canonically as an unsigned value. For operations +/// where it makes a difference, there are both signed and unsigned variants +/// of the operation. For example, sdiv and udiv. However, because the bit +/// widths must be the same, operations such as Mul and Add produce the same +/// results regardless of whether the values are interpreted as signed or +/// not. +/// * In general, the class tries to follow the style of computation that LLVM +/// uses in its IR. This simplifies its use for LLVM. +/// +/// @brief Class for arbitrary precision integers. + +#if defined(_MSC_VER) +#if _MSC_VER < 1400 && !defined(for) +#define for \ + if (0) \ + ; \ + else for +#endif +typedef unsigned __int64 ap_ulong; +typedef signed __int64 ap_slong; +#else +typedef unsigned long long ap_ulong; +typedef signed long long ap_slong; +#endif +template struct valtype; + +template struct valtype<_AP_N8, false> { typedef uint64_t Type; }; + +template struct valtype<_AP_N8, true> { typedef int64_t Type; }; + +template <> struct valtype<1, false> { typedef unsigned char Type; }; +template <> struct valtype<2, false> { typedef unsigned short Type; }; +template <> struct valtype<3, false> { typedef unsigned int Type; }; +template <> struct valtype<4, false> { typedef unsigned int Type; }; +template <> struct valtype<1, true> { typedef signed char Type; }; +template <> struct valtype<2, true> { typedef short Type; }; +template <> struct valtype<3, true> { typedef int Type; }; +template <> struct valtype<4, true> { typedef int Type; }; + +template struct ap_private_enable_if {}; +template <> struct ap_private_enable_if { + static const bool isValid = true; +}; + +template struct logceil { + static const int val = logceil<(_WIDTH + 1) / 2>::val + 1; +}; +template <> struct logceil<1> { static const int val = -3; }; +// When bitwidth < 64 +template class ap_private<_AP_W, _AP_S, true> { + // SFINAE pattern. Only consider this class when _AP_W <= 64 + const static bool valid = ap_private_enable_if<_AP_W <= 64>::isValid; + +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif +public: + typedef typename valtype<(_AP_W + 7) / 8, _AP_S>::Type ValType; + typedef ap_private<_AP_W, _AP_S> Type; + template struct RType { + enum { + mult_w = _AP_W + _AP_W2, + mult_s = _AP_S || _AP_S2, + plus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, + div_w = _AP_W + _AP_S2, + div_s = _AP_S || _AP_S2, + mod_w = AP_MIN(_AP_W, _AP_W2 + (!_AP_S2 && _AP_S)), + mod_s = _AP_S, + logic_w = AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + typedef ap_private mult; + typedef ap_private plus; + typedef ap_private minus; + typedef ap_private logic; + typedef ap_private div; + typedef ap_private mod; + typedef ap_private<_AP_W, _AP_S> arg1; + typedef bool reduce; + }; + enum { APINT_BITS_PER_WORD = sizeof(uint64_t) * 8 }; + enum { + excess_bits = (_AP_W % APINT_BITS_PER_WORD) + ? APINT_BITS_PER_WORD - (_AP_W % APINT_BITS_PER_WORD) + : 0 + }; + static const uint64_t mask = ((uint64_t)~0ULL >> (excess_bits)); + static const uint64_t not_mask = ~mask; + static const uint64_t sign_bit_mask = 1ULL << (APINT_BITS_PER_WORD - 1); + template struct sign_ext_mask { + static const uint64_t mask = ~0ULL << _AP_W1; + }; + static const int width = _AP_W; + + enum { + BitWidth = _AP_W, + _AP_N = 1, + }; + ValType VAL; ///< Used to store the <= 64 bits integer value. +#ifdef AP_CANARY + ValType CANARY; + void check_canary() { assert(CANARY == (ValType)0xDEADBEEFDEADBEEF); } + void set_canary() { CANARY = (ValType)0xDEADBEEFDEADBEEF; } +#else + void check_canary() {} + void set_canary() {} +#endif + + INLINE ValType &get_VAL(void) { return VAL; } + INLINE ValType get_VAL(void) const { return VAL; } + INLINE ValType get_VAL(void) const volatile { return VAL; } + + INLINE ValType get_cleared_VAL(void) +// just for clang compiler 3.8 and above +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)) + __attribute__((no_sanitize("undefined"))) +#endif + { + enum { excess_bits = (_AP_W % 64) ? 64 - _AP_W % 64 : 0 }; + VAL = (ValType)(_AP_S ? ((((int64_t)VAL) << (excess_bits)) >> (excess_bits)) + : (excess_bits ? (((uint64_t)VAL) << (excess_bits)) >> + (excess_bits) + : (uint64_t)VAL)); + return VAL; + } + + INLINE ValType get_cleared_VAL(void) const +// just for clang compiler 3.8 and above +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)) + __attribute__((no_sanitize("undefined"))) +#endif + { + enum { excess_bits = (_AP_W % 64) ? 64 - _AP_W % 64 : 0 }; + ValType clearedVAL = (ValType)( + _AP_S + ? ((((int64_t)VAL) << (excess_bits)) >> (excess_bits)) + : (excess_bits ? (((uint64_t)VAL) << (excess_bits)) >> (excess_bits) + : (uint64_t)VAL)); + return clearedVAL; + } + + INLINE void set_VAL(uint64_t value) { VAL = (ValType)value; } + INLINE ValType &get_pVal(int i) { return VAL; } + INLINE ValType get_pVal(int i) const { return VAL; } + INLINE const uint64_t *get_pVal() const { + assert(0 && "invalid usage"); + return 0; + } + INLINE ValType get_pVal(int i) const volatile { return VAL; } + INLINE uint64_t *get_pVal() const volatile { + assert(0 && "invalid usage"); + return 0; + } + INLINE void set_pVal(int i, uint64_t value) { VAL = (ValType)value; } + + INLINE uint32_t getBitWidth() const { return BitWidth; } + + template + ap_private<_AP_W, _AP_S> &operator=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(RHS.get_cleared_VAL()); + clearUnusedBits(); + return *this; + } + + template + ap_private<_AP_W, _AP_S> & + operator=(const volatile ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = + (ValType)(RHS.get_VAL()); // TODO check here about ap_private + clearUnusedBits(); + return *this; + } + + void operator=(const ap_private &RHS) volatile { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + } + + ap_private &operator=(const ap_private &RHS) { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + return *this; + } + + void operator=(const volatile ap_private &RHS) volatile { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + } + + ap_private &operator=(const volatile ap_private &RHS) { + // Don't do anything for X = X + VAL = RHS.get_VAL(); // No need to check because no harm done by copying. + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator=(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + *this = ap_private<_AP_W2, false>(op2); + return *this; + } + +#define ASSIGN_OP_FROM_INT(C_TYPE) \ + INLINE ap_private &operator=(const C_TYPE v) { \ + set_canary(); \ + this->VAL = (ValType)v; \ + clearUnusedBits(); \ + check_canary(); \ + return *this; \ + } + + ASSIGN_OP_FROM_INT(bool) + ASSIGN_OP_FROM_INT(char) + ASSIGN_OP_FROM_INT(signed char) + ASSIGN_OP_FROM_INT(unsigned char) + ASSIGN_OP_FROM_INT(short) + ASSIGN_OP_FROM_INT(unsigned short) + ASSIGN_OP_FROM_INT(int) + ASSIGN_OP_FROM_INT(unsigned int) + ASSIGN_OP_FROM_INT(long) + ASSIGN_OP_FROM_INT(unsigned long) + ASSIGN_OP_FROM_INT(ap_slong) + ASSIGN_OP_FROM_INT(ap_ulong) + ASSIGN_OP_FROM_INT(half) + // FIXME cast half to integer ? + ASSIGN_OP_FROM_INT(float) + ASSIGN_OP_FROM_INT(double) +#undef ASSIGN_OP_FROM_INT + + // XXX This is a must to prevent pointer being converted to bool. + INLINE ap_private &operator=(const char *s) { + ap_private tmp(s); // XXX direct-initialization, as ctor is explicit. + operator=(tmp); + return *this; + } + +private: + explicit INLINE ap_private(uint64_t *val) : VAL(val[0]) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + INLINE bool isSingleWord() const { return true; } + +public: + INLINE void fromString(const char *strStart, uint32_t slen, uint8_t radix) { + bool isNeg = strStart[0] == '-'; + if (isNeg) { + strStart++; + slen--; + } + + if (strStart[0] == '0' && (strStart[1] == 'b' || strStart[1] == 'B')) { + // if(radix == 0) radix = 2; + _AP_WARNING(radix != 2, "%s seems to have base %d, but %d given.", + strStart, 2, radix); + strStart += 2; + slen -= 2; + } else if (strStart[0] == '0' && + (strStart[1] == 'o' || strStart[1] == 'O')) { + // if (radix == 0) radix = 8; + _AP_WARNING(radix != 8, "%s seems to have base %d, but %d given.", + strStart, 8, radix); + strStart += 2; + slen -= 2; + } else if (strStart[0] == '0' && + (strStart[1] == 'x' || strStart[1] == 'X')) { + // if (radix == 0) radix = 16; + _AP_WARNING(radix != 16, "%s seems to have base %d, but %d given.", + strStart, 16, radix); + strStart += 2; + slen -= 2; + } else if (strStart[0] == '0' && + (strStart[1] == 'd' || strStart[1] == 'D')) { + // if (radix == 0) radix = 10; + _AP_WARNING(radix != 10, "%s seems to have base %d, but %d given.", + strStart, 10, radix); + strStart += 2; + slen -= 2; + } else if (radix == 0) { + // radix = 2; // XXX default value + } + + // Check our assumptions here + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + assert(strStart && "String is null?"); + + // Clear bits. + uint64_t tmpVAL = VAL = 0; + + switch (radix) { + case 2: + // sscanf(strStart,"%b",&VAL); + // tmpVAL = *strStart =='1' ? ~0ULL : 0; + for (; *strStart; ++strStart) { + assert((*strStart == '0' || *strStart == '1') && + ("Wrong binary number")); + tmpVAL <<= 1; + tmpVAL |= (*strStart - '0'); + } + break; + case 8: +#ifdef _MSC_VER + sscanf_s(strStart, "%llo", &tmpVAL, slen + 1); +#else +#if defined(__x86_64__) && !defined(__MINGW32__) && !defined(__WIN32__) + sscanf(strStart, "%lo", &tmpVAL); +#else + sscanf(strStart, "%llo", &tmpVAL); +#endif //__x86_64__ +#endif //_MSC_VER + break; + case 10: +#ifdef _MSC_VER + sscanf_s(strStart, "%llu", &tmpVAL, slen + 1); +#else +#if defined(__x86_64__) && !defined(__MINGW32__) && !defined(__WIN32__) + sscanf(strStart, "%lu", &tmpVAL); +#else + sscanf(strStart, "%llu", &tmpVAL); +#endif //__x86_64__ +#endif //_MSC_VER + break; + case 16: +#ifdef _MSC_VER + sscanf_s(strStart, "%llx", &tmpVAL, slen + 1); +#else +#if defined(__x86_64__) && !defined(__MINGW32__) && !defined(__WIN32__) + sscanf(strStart, "%lx", &tmpVAL); +#else + sscanf(strStart, "%llx", &tmpVAL); +#endif //__x86_64__ +#endif //_MSC_VER + break; + default: + assert(true && "Unknown radix"); + // error + } + VAL = isNeg ? (ValType)(-tmpVAL) : (ValType)(tmpVAL); + + clearUnusedBits(); + } + +private: + INLINE ap_private(const std::string &val, uint8_t radix = 2) : VAL(0) { + assert(!val.empty() && "String empty?"); + set_canary(); + fromString(val.c_str(), val.size(), radix); + check_canary(); + } + + INLINE ap_private(const char strStart[], uint32_t slen, uint8_t radix) + : VAL(0) { + set_canary(); + fromString(strStart, slen, radix); + check_canary(); + } + + INLINE ap_private(uint32_t numWords, const uint64_t bigVal[]) + : VAL(bigVal[0]) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + +public: + INLINE ap_private() { + set_canary(); + clearUnusedBits(); + check_canary(); + } + +#define CTOR(TYPE) \ + INLINE ap_private(TYPE v) : VAL((ValType)v) { \ + set_canary(); \ + clearUnusedBits(); \ + check_canary(); \ + } + CTOR(bool) + CTOR(char) + CTOR(signed char) + CTOR(unsigned char) + CTOR(short) + CTOR(unsigned short) + CTOR(int) + CTOR(unsigned int) + CTOR(long) + CTOR(unsigned long) + CTOR(ap_slong) + CTOR(ap_ulong) + CTOR(half) + CTOR(float) + CTOR(double) +#undef CTOR + + template + INLINE ap_private(const ap_private<_AP_W1, _AP_S1, _AP_OPT> &that) + : VAL((ValType)that.get_VAL()) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + template + INLINE ap_private(const volatile ap_private<_AP_W1, _AP_S1, _AP_OPT> &that) + : VAL((ValType)that.get_VAL()) { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + explicit INLINE ap_private(const char *val) { + set_canary(); + unsigned char radix = 10; + std::string str = + ap_private_ops::parseString(val, radix); // will set radix. + std::string::size_type pos = str.find('.'); + // trunc all fraction part + if (pos != std::string::npos) + str = str.substr(pos); + + ap_private<_AP_W, _AP_S> ap_private_val(str, radix); + operator=(ap_private_val); + check_canary(); + } + + INLINE ap_private(const char *val, signed char rd) { + set_canary(); + unsigned char radix = rd; + std::string str = + ap_private_ops::parseString(val, radix); // will set radix. + std::string::size_type pos = str.find('.'); + // trunc all fraction part + if (pos != std::string::npos) + str = str.substr(pos); + + ap_private<_AP_W, _AP_S> ap_private_val(str, radix); + operator=(ap_private_val); + check_canary(); + } + + INLINE ~ap_private() { check_canary(); } + + INLINE bool isNegative() const { + static const uint64_t sign_mask = 1ULL << (_AP_W - 1); + return _AP_S && (sign_mask & VAL); + } + + INLINE bool isPositive() const { return !isNegative(); } + + INLINE bool isStrictlyPositive() const { return !isNegative() && VAL != 0; } + + INLINE bool isAllOnesValue() const { return (mask & VAL) == mask; } + + INLINE bool operator==(const ap_private<_AP_W, _AP_S> &RHS) const { + return get_cleared_VAL() == RHS.get_cleared_VAL(); + } + INLINE bool operator==(const ap_private<_AP_W, !_AP_S> &RHS) const { + return (uint64_t)get_cleared_VAL() == (uint64_t)RHS.get_cleared_VAL(); + } + + INLINE bool operator==(uint64_t Val) const { + return ((uint64_t)get_cleared_VAL() == Val); + } + INLINE bool operator!=(uint64_t Val) const { + return ((uint64_t)get_cleared_VAL() != Val); + } + INLINE bool operator!=(const ap_private<_AP_W, _AP_S> &RHS) const { + return get_cleared_VAL() != RHS.get_cleared_VAL(); + } + INLINE bool operator!=(const ap_private<_AP_W, !_AP_S> &RHS) const { + return (uint64_t)get_cleared_VAL() != (uint64_t)RHS.get_cleared_VAL(); + } + + /// postfix increment. + const ap_private operator++(int) { + ap_private orig(*this); + VAL++; + clearUnusedBits(); + return orig; + } + + /// prefix increment. + const ap_private operator++() { + ++VAL; + clearUnusedBits(); + return *this; + } + + /// postfix decrement. + const ap_private operator--(int) { + ap_private orig(*this); + --VAL; + clearUnusedBits(); + return orig; + } + + /// prefix decrement. + const ap_private operator--() { + --VAL; + clearUnusedBits(); + return *this; + } + + /// one's complement. + INLINE ap_private<_AP_W + !_AP_S, true> operator~() const { + ap_private<_AP_W + !_AP_S, true> Result(*this); + Result.flip(); + return Result; + } + + /// two's complement. + INLINE typename RType<1, false>::minus operator-() const { + return ap_private<1, false>(0) - (*this); + } + + /// logic negation. + INLINE bool operator!() const { return !get_cleared_VAL(); } + + INLINE std::string toString(uint8_t radix, bool wantSigned) const; + INLINE std::string toStringUnsigned(uint8_t radix = 10) const { + return toString(radix, false); + } + INLINE std::string toStringSigned(uint8_t radix = 10) const { + return toString(radix, true); + } + INLINE void clear() { VAL = 0; } + INLINE ap_private &clear(uint32_t bitPosition) { + VAL &= ~(1ULL << (bitPosition)); + clearUnusedBits(); + return *this; + } + + INLINE ap_private ashr(uint32_t shiftAmt) const { + if (_AP_S) + return ap_private((shiftAmt == BitWidth) + ? 0 + : ((int64_t)get_cleared_VAL()) >> (shiftAmt)); + else + return ap_private((shiftAmt == BitWidth) + ? 0 + : ((uint64_t)get_cleared_VAL()) >> (shiftAmt)); + } + + INLINE ap_private lshr(uint32_t shiftAmt) const { + return ap_private( + (shiftAmt == BitWidth) + ? ap_private(0) + : ap_private((get_cleared_VAL() & mask) >> (shiftAmt))); + } + + INLINE ap_private shl(uint32_t shiftAmt) const +// just for clang compiler 3.8 and above +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)) + __attribute__((no_sanitize("undefined"))) +#endif + { + if (shiftAmt > BitWidth) { + if (!isNegative()) + return ap_private(0); + else + return ap_private(-1); + } + if (shiftAmt == BitWidth) + return ap_private(0); + else + return ap_private((get_cleared_VAL()) << (shiftAmt)); + // return ap_private((shiftAmt == BitWidth) ? ap_private(0ULL) : + // ap_private(VAL << shiftAmt)); + } + + INLINE int64_t getSExtValue() const { return get_cleared_VAL(); } + + // XXX XXX this function is used in CBE + INLINE uint64_t getZExtValue() const { return get_cleared_VAL() & mask; } + + template + INLINE ap_private(const _private_range_ref<_AP_W2, _AP_S2> &ref) { + set_canary(); + *this = ref.get(); + check_canary(); + } + + template + INLINE ap_private(const _private_bit_ref<_AP_W2, _AP_S2> &ref) { + set_canary(); + *this = ((uint64_t)(bool)ref); + check_canary(); + } + + // template + // INLINE ap_private(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& + // ref) { + // set_canary(); + // *this = ref.get(); + // check_canary(); + // } + // + // template + // INLINE ap_private( + // const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + // val) { + // set_canary(); + // *this = ((val.operator ap_private<_AP_W2, false>())); + // check_canary(); + // } + // + // template + // INLINE ap_private( + // const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) + // { + // set_canary(); + // *this = (uint64_t)(bool)val; + // check_canary(); + // } + + INLINE void write(const ap_private<_AP_W, _AP_S> &op2) volatile { + *this = (op2); + } + + // Explicit conversions to C interger types + //----------------------------------------------------------- + INLINE operator ValType() const { return get_cleared_VAL(); } + + INLINE int to_uchar() const { return (unsigned char)get_cleared_VAL(); } + + INLINE int to_char() const { return (signed char)get_cleared_VAL(); } + + INLINE int to_ushort() const { return (unsigned short)get_cleared_VAL(); } + + INLINE int to_short() const { return (short)get_cleared_VAL(); } + + INLINE int to_int() const { + // ap_private<64 /* _AP_W */, _AP_S> res(V); + return (int)get_cleared_VAL(); + } + + INLINE unsigned to_uint() const { return (unsigned)get_cleared_VAL(); } + + INLINE long to_long() const { return (long)get_cleared_VAL(); } + + INLINE unsigned long to_ulong() const { + return (unsigned long)get_cleared_VAL(); + } + + INLINE ap_slong to_int64() const { return (ap_slong)get_cleared_VAL(); } + + INLINE ap_ulong to_uint64() const { return (ap_ulong)get_cleared_VAL(); } + + INLINE double to_double() const { + if (isNegative()) + return roundToDouble(true); + else + return roundToDouble(false); + } + + INLINE unsigned length() const { return _AP_W; } + + INLINE bool isMinValue() const { return get_cleared_VAL() == 0; } + template + INLINE ap_private &operator&=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(((uint64_t)VAL) & RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator|=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(((uint64_t)VAL) | RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator^=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(((uint64_t)VAL) ^ RHS.get_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator*=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(((uint64_t)get_cleared_VAL()) * RHS.get_cleared_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator+=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(((uint64_t)get_cleared_VAL()) + RHS.get_cleared_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator-=(const ap_private<_AP_W1, _AP_S1> &RHS) { + VAL = (ValType)(((uint64_t)get_cleared_VAL()) - RHS.get_cleared_VAL()); + clearUnusedBits(); + return *this; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::logic + operator&(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (RType<_AP_W1, _AP_S1>::logic_w <= 64) { + typename RType<_AP_W1, _AP_S1>::logic Ret(((uint64_t)get_cleared_VAL()) & + RHS.get_cleared_VAL()); + return Ret; + } else { + typename RType<_AP_W1, _AP_S1>::logic Ret = *this; + return Ret & RHS; + } + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::logic + operator^(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (RType<_AP_W1, _AP_S1>::logic_w <= 64) { + typename RType<_AP_W1, _AP_S1>::logic Ret(((uint64_t)get_cleared_VAL()) ^ + RHS.get_cleared_VAL()); + return Ret; + } else { + typename RType<_AP_W1, _AP_S1>::logic Ret = *this; + return Ret ^ RHS; + } + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::logic + operator|(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (RType<_AP_W1, _AP_S1>::logic_w <= 64) { + typename RType<_AP_W1, _AP_S1>::logic Ret(((uint64_t)get_cleared_VAL()) | + RHS.get_cleared_VAL()); + return Ret; + } else { + typename RType<_AP_W1, _AP_S1>::logic Ret = *this; + return Ret | RHS; + } + } + + INLINE ap_private And(const ap_private &RHS) const { + return ap_private(get_cleared_VAL() & RHS.get_cleared_VAL()); + } + + INLINE ap_private Or(const ap_private &RHS) const { + return ap_private(get_cleared_VAL() | RHS.get_cleared_VAL()); + } + + INLINE ap_private Xor(const ap_private &RHS) const { + return ap_private(get_cleared_VAL() ^ RHS.get_cleared_VAL()); + } +#if 1 + template + INLINE typename RType<_AP_W1, _AP_S1>::mult + operator*(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (RType<_AP_W1, _AP_S1>::mult_w <= 64) { + typename RType<_AP_W1, _AP_S1>::mult Result(((uint64_t)VAL) * + RHS.get_VAL()); + return Result; + } else { + typename RType<_AP_W1, _AP_S1>::mult Result(*this); + Result *= RHS; + return Result; + } + } +#endif + INLINE ap_private Mul(const ap_private &RHS) const { + return ap_private(VAL * RHS.get_VAL()); + } + + INLINE ap_private Add(const ap_private &RHS) const { + return ap_private(VAL + RHS.get_VAL()); + } + + INLINE ap_private Sub(const ap_private &RHS) const { + return ap_private(VAL - RHS.get_VAL()); + } + + INLINE ap_private &operator&=(uint64_t RHS) { + VAL &= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private &operator|=(uint64_t RHS) { + VAL |= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private &operator^=(uint64_t RHS) { + VAL ^= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private &operator*=(uint64_t RHS) { + VAL *= (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private &operator+=(uint64_t RHS) { + VAL += (ValType)RHS; + clearUnusedBits(); + return *this; + } + INLINE ap_private &operator-=(uint64_t RHS) { + VAL -= (ValType)RHS; + clearUnusedBits(); + return *this; + } + + INLINE bool isMinSignedValue() const { + static const uint64_t min_mask = ~(~0ULL << (_AP_W - 1)); + return BitWidth == 1 ? get_cleared_VAL() == 1 + : (ap_private_ops::isNegative<_AP_W>(*this) && + ((min_mask & get_cleared_VAL()) == 0)); + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::plus + operator+(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (RType<_AP_W1, _AP_S1>::plus_w <= 64) + return typename RType<_AP_W1, _AP_S1>::plus( + RType<_AP_W1, _AP_S1>::plus_s + ? int64_t(((uint64_t)get_cleared_VAL()) + RHS.get_cleared_VAL()) + : uint64_t(((uint64_t)get_cleared_VAL()) + + RHS.get_cleared_VAL())); + typename RType<_AP_W1, _AP_S1>::plus Result = RHS; + Result += get_cleared_VAL(); + return Result; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::minus + operator-(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (RType<_AP_W1, _AP_S1>::minus_w <= 64) + return typename RType<_AP_W1, _AP_S1>::minus( + int64_t(((uint64_t)get_cleared_VAL()) - RHS.get_cleared_VAL())); + typename RType<_AP_W1, _AP_S1>::minus Result = *this; + Result -= RHS; + return Result; + } + + INLINE uint32_t countPopulation() const { + return ap_private_ops::CountPopulation_64(get_cleared_VAL()); + } + INLINE uint32_t countLeadingZeros() const { + int remainder = BitWidth % 64; + int excessBits = (64 - remainder) % 64; + uint32_t Count = ap_private_ops::CountLeadingZeros_64(get_cleared_VAL()); + if (Count) + Count -= excessBits; + return AESL_std::min(Count, (uint32_t)_AP_W); + } + INLINE uint32_t countLeadingOnes() const { + int remainder = BitWidth % 64; + int excessBits = (64 - remainder) % 64; + uint32_t Count = ap_private_ops::countLeadingOnes_64(get_cleared_VAL(), 0); + if (Count) + Count -= excessBits; + return AESL_std::min(Count, (uint32_t)_AP_W); + } + + /// HiBits - This function returns the high "numBits" bits of this ap_private. + INLINE ap_private<_AP_W, _AP_S> getHiBits(uint32_t numBits) const { + ap_private<_AP_W, _AP_S> ret(*this); + ret = (ret) >> (BitWidth - numBits); + return ret; + } + + /// LoBits - This function returns the low "numBits" bits of this ap_private. + INLINE ap_private<_AP_W, _AP_S> getLoBits(uint32_t numBits) const { + ap_private<_AP_W, _AP_S> ret(((uint64_t)VAL) << (BitWidth - numBits)); + ret = (ret) >> (BitWidth - numBits); + return ret; + // return ap_private(numBits, (VAL << (BitWidth - numBits))>> (BitWidth - + // numBits)); + } + + INLINE ap_private<_AP_W, _AP_S> &set(uint32_t bitPosition) { + // clearUnusedBits(); + VAL |= (1ULL << (bitPosition)); + clearUnusedBits(); + return *this; // clearUnusedBits(); + } + + INLINE void set() { + VAL = (ValType)~0ULL; + clearUnusedBits(); + } + + template INLINE void set(const ap_private<_AP_W3, false> &val) { + operator=(ap_private<_AP_W3, _AP_S>(val)); + } + + INLINE void set(const ap_private &val) { operator=(val); } + + INLINE void clearUnusedBits(void) volatile +// just for clang compiler 3.8 and above +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)) + __attribute__((no_sanitize("undefined"))) +#endif + { + enum { excess_bits = (_AP_W % 64) ? 64 - _AP_W % 64 : 0 }; + VAL = (ValType)(_AP_S ? ((((int64_t)VAL) << (excess_bits)) >> (excess_bits)) + : (excess_bits ? (((uint64_t)VAL) << (excess_bits)) >> + (excess_bits) + : (uint64_t)VAL)); + } + + INLINE void clearUnusedBitsToZero(void) { + enum { excess_bits = (_AP_W % 64) ? 64 - _AP_W % 64 : 0 }; + static uint64_t mask = ~0ULL >> (excess_bits); + VAL &= mask; + } + + INLINE ap_private udiv(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + return ap_private((uint64_t)LHS_.get_VAL() / RHS_.get_VAL()); + } + + /// Signed divide this ap_private by ap_private RHS. + /// @brief Signed division function for ap_private. + INLINE ap_private sdiv(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + if (LHS_.isNegative()) + if (RHS_.isNegative()) + return ((uint64_t)(0 - LHS_)) / (uint64_t)(0 - RHS_); + else + return 0 - ((uint64_t)(0 - LHS_) / (uint64_t)(RHS_)); + else if (RHS_.isNegative()) + return 0 - (LHS_.udiv((ap_private)(0 - RHS_))); + return LHS_.udiv(RHS_); + } + + template + INLINE ap_private urem(const ap_private<_AP_W, _AP_S2> &RHS) const { + ap_private<_AP_W, _AP_S> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private<_AP_W, _AP_S2> RHS_(RHS); + RHS_.clearUnusedBits(); + + assert(RHS_.get_VAL() != 0 && "Divide by 0"); + return ap_private(((uint64_t)LHS_.get_VAL()) % ((uint64_t)RHS_.get_VAL())); + } + + /// Signed remainder operation on ap_private. + /// @brief Function for signed remainder operation. + template + INLINE ap_private srem(const ap_private<_AP_W, _AP_S2> &RHS) const { + ap_private<_AP_W, _AP_S> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private<_AP_W, _AP_S2> RHS_(RHS); + RHS_.clearUnusedBits(); + + if (LHS_.isNegative()) { + ap_private lhs = 0 - LHS_; + if (RHS_.isNegative()) { + ap_private rhs = 0 - RHS_; + return 0 - (lhs.urem(rhs)); + } else + return 0 - (lhs.urem(RHS)); + } else if (RHS_.isNegative()) { + ap_private rhs = 0 - RHS_; + return LHS_.urem(rhs); + } + return LHS_.urem(RHS_); + } + + template + INLINE bool eq(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return (*this) == RHS; + } + + template + INLINE bool ne(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return !((*this) == RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the less-than relationship. + /// @returns true if *this < RHS when both are considered unsigned. + /// @brief Unsigned less than comparison + template + INLINE bool ult(const ap_private<_AP_W1, _AP_S1> &RHS) const { + if (_AP_W1 <= 64) { + uint64_t lhsZext = ((uint64_t(VAL)) << (64 - _AP_W)) >> (64 - _AP_W); + uint64_t rhsZext = + ((uint64_t(RHS.get_VAL())) << (64 - _AP_W1)) >> (64 - _AP_W1); + return lhsZext < rhsZext; + } else + return RHS.uge(*this); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the less-than relationship. + /// @returns true if *this < RHS when both are considered signed. + /// @brief Signed less than comparison + template + INLINE bool slt(const ap_private<_AP_W1, _AP_S1> &RHS) const +// just for clang compiler 3.8 and above +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)) + __attribute__((no_sanitize("undefined"))) +#endif + { + if (_AP_W1 <= 64) { + int64_t lhsSext = ((int64_t(VAL)) << (64 - _AP_W)) >> (64 - _AP_W); + int64_t rhsSext = + ((int64_t(RHS.get_VAL())) << (64 - _AP_W1)) >> (64 - _AP_W1); + return lhsSext < rhsSext; + } else + return RHS.sge(*this); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered unsigned. + /// @brief Unsigned less or equal comparison + template + INLINE bool ule(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return ult(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered signed. + /// @brief Signed less or equal comparison + template + INLINE bool sle(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return slt(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered unsigned. + /// @brief Unsigned greather than comparison + template + INLINE bool ugt(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return !ult(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered signed. + /// @brief Signed greather than comparison + template + INLINE bool sgt(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return !slt(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered unsigned. + /// @brief Unsigned greater or equal comparison + template + INLINE bool uge(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return !ult(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered signed. + /// @brief Signed greather or equal comparison + template + INLINE bool sge(const ap_private<_AP_W1, _AP_S1> &RHS) const { + return !slt(RHS); + } + + INLINE ap_private abs() const { + if (isNegative()) + return -(*this); + return *this; + } + + INLINE ap_private<_AP_W, false> get() const { + ap_private<_AP_W, false> ret(*this); + return ret; + } + + INLINE static uint32_t getBitsNeeded(const char *str, uint32_t slen, + uint8_t radix) { + return _AP_W; + } + + INLINE uint32_t getActiveBits() const { + uint32_t bits = _AP_W - countLeadingZeros(); + return bits ? bits : 1; + } + + INLINE double roundToDouble(bool isSigned = false) const { + ValType val = get_cleared_VAL(); + return isSigned ? double((int64_t)val) : double((uint64_t)val); + } + + /*Reverse the contents of ap_private instance. I.e. LSB becomes MSB and vise + * versa*/ + INLINE ap_private &reverse() { + for (int i = 0; i < _AP_W / 2; ++i) { + bool tmp = operator[](i); + if (operator[](_AP_W - 1 - i)) + set(i); + else + clear(i); + if (tmp) + set(_AP_W - 1 - i); + else + clear(_AP_W - 1 - i); + } + clearUnusedBits(); + return *this; + } + + /*Return true if the value of ap_private instance is zero*/ + INLINE bool iszero() const { return isMinValue(); } + + INLINE bool to_bool() const { return !iszero(); } + + /* x < 0 */ + INLINE bool sign() const { + if (isNegative()) + return true; + return false; + } + + /* x[i] = !x[i] */ + INLINE void invert(int i) { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + flip(i); + } + + /* x[i] */ + INLINE bool test(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return operator[](i); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the left + INLINE void lrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(shl(n) | lshr(_AP_W - n)); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the right + INLINE void rrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(lshr(n) | shl(_AP_W - n)); + } + + // Set the ith bit into v + INLINE void set(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // Set the ith bit into v + INLINE void set_bit(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // Get the value of ith bit + INLINE bool get_bit(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return (((1ULL << i) & get_cleared_VAL()) != 0); + } + + /// Toggle all bits. + INLINE ap_private &flip() { + VAL = (ValType)((~0ULL ^ get_cleared_VAL()) & mask); + clearUnusedBits(); + return *this; + } + + /// Toggles a given bit to its opposite value. + INLINE ap_private &flip(uint32_t bitPosition) { + assert(bitPosition < BitWidth && "Out of the bit-width range!"); + set_bit(bitPosition, !get_bit(bitPosition)); + return *this; + } + + // complements every bit + INLINE void b_not() { flip(); } + +// Binary Arithmetic +//----------------------------------------------------------- +#define OP_BIN_AP(Sym, Rty, Fun) \ + template \ + INLINE typename RType<_AP_W2, _AP_S2>::Rty operator Sym( \ + const ap_private<_AP_W2, _AP_S2> &op) const { \ + typename RType<_AP_W2, _AP_S2>::Rty lhs(*this); \ + typename RType<_AP_W2, _AP_S2>::Rty rhs(op); \ + return lhs.Fun(rhs); \ + } + +/// Bitwise and, or, xor +// OP_BIN_AP(&,logic, And) +// OP_BIN_AP(|,logic, Or) +// OP_BIN_AP(^,logic, Xor) +#undef OP_BIN_AP + + template + INLINE typename RType<_AP_W2, _AP_S2>::div + operator/(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + return typename RType<_AP_W2, _AP_S2>::div( + (_AP_S || _AP_S2) ? lhs.sdiv(rhs) : lhs.udiv(rhs)); + } + + template + INLINE typename RType<_AP_W2, _AP_S2>::mod + operator%(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + typename RType<_AP_W2, _AP_S2>::mod res = + typename RType<_AP_W2, _AP_S2>::mod(_AP_S ? lhs.srem(rhs) + : lhs.urem(rhs)); + return res; + } + +#define OP_ASSIGN_AP_2(Sym) \ + template \ + INLINE ap_private<_AP_W, _AP_S> &operator Sym##=( \ + const ap_private<_AP_W2, _AP_S2> &op) { \ + *this = operator Sym(op); \ + return *this; \ + } + + OP_ASSIGN_AP_2(/) + OP_ASSIGN_AP_2(%) +#undef OP_ASSIGN_AP_2 + + /// Bitwise assign: and, or, xor + //------------------------------------------------------------- + // OP_ASSIGN_AP(&) + // OP_ASSIGN_AP(^) + // OP_ASSIGN_AP(|) + +#define OP_LEFT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator<<(const TYPE op) const { \ + if (op >= _AP_W) \ + return ap_private(0); \ + if (SIGNED && op < 0) \ + return *this >> (0 - op); \ + return shl(op); \ + } + + // OP_LEFT_SHIFT_CTYPE(bool, false) + OP_LEFT_SHIFT_CTYPE(char, CHAR_IS_SIGNED) + OP_LEFT_SHIFT_CTYPE(signed char, true) + OP_LEFT_SHIFT_CTYPE(unsigned char, false) + OP_LEFT_SHIFT_CTYPE(short, true) + OP_LEFT_SHIFT_CTYPE(unsigned short, false) + OP_LEFT_SHIFT_CTYPE(int, true) + OP_LEFT_SHIFT_CTYPE(unsigned int, false) + OP_LEFT_SHIFT_CTYPE(long, true) + OP_LEFT_SHIFT_CTYPE(unsigned long, false) + OP_LEFT_SHIFT_CTYPE(long long, true) + OP_LEFT_SHIFT_CTYPE(unsigned long long, false) + OP_LEFT_SHIFT_CTYPE(half, false) + OP_LEFT_SHIFT_CTYPE(float, false) + OP_LEFT_SHIFT_CTYPE(double, false) + +#undef OP_LEFT_SHIFT_CTYPE + + template + INLINE ap_private operator<<(const ap_private<_AP_W2, _AP_S2> &op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this << sh; + } else { + int sh = op2.to_int(); + return *this << sh; + } + } + +#define OP_RIGHT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator>>(const TYPE op) const { \ + if (op >= _AP_W) { \ + if (isNegative()) \ + return ap_private(-1); \ + else \ + return ap_private(0); \ + } \ + if ((SIGNED) && op < 0) \ + return *this << (0 - op); \ + if (_AP_S) \ + return ashr(op); \ + else \ + return lshr(op); \ + } + + // OP_RIGHT_SHIFT_CTYPE(bool, false) + OP_RIGHT_SHIFT_CTYPE(char, CHAR_IS_SIGNED) + OP_RIGHT_SHIFT_CTYPE(signed char, true) + OP_RIGHT_SHIFT_CTYPE(unsigned char, false) + OP_RIGHT_SHIFT_CTYPE(short, true) + OP_RIGHT_SHIFT_CTYPE(unsigned short, false) + OP_RIGHT_SHIFT_CTYPE(int, true) + OP_RIGHT_SHIFT_CTYPE(unsigned int, false) + OP_RIGHT_SHIFT_CTYPE(long, true) + OP_RIGHT_SHIFT_CTYPE(unsigned long, false) + OP_RIGHT_SHIFT_CTYPE(unsigned long long, false) + OP_RIGHT_SHIFT_CTYPE(long long, true) + OP_RIGHT_SHIFT_CTYPE(half, false) + OP_RIGHT_SHIFT_CTYPE(float, false) + OP_RIGHT_SHIFT_CTYPE(double, false) + +#undef OP_RIGHT_SHIFT_CTYPE + + template + INLINE ap_private operator>>(const ap_private<_AP_W2, _AP_S2> &op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this >> sh; + } else { + int sh = op2.to_int(); + return *this >> sh; + } + } + + /// Shift assign + //----------------------------------------------------------------- + + // INLINE const ap_private& operator<<=(uint32_t shiftAmt) { + // VAL <<= shiftAmt; + // clearUnusedBits(); + // return *this; + //} + +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private &operator Sym##=(int op) { \ + clearUnusedBits(); \ + *this = operator Sym(op); \ + return *this; \ + } \ + INLINE ap_private &operator Sym##=(unsigned int op) { \ + clearUnusedBits(); \ + *this = operator Sym(op); \ + return *this; \ + } \ + template \ + INLINE ap_private &operator Sym##=(const ap_private<_AP_W2, _AP_S2> &op) { \ + clearUnusedBits(); \ + *this = operator Sym(op); \ + return *this; \ + } + + OP_ASSIGN_AP(>>) + OP_ASSIGN_AP(<<) +#undef OP_ASSIGN_AP + + /// Comparisons + //----------------------------------------------------------------- + template + INLINE bool operator==(const ap_private<_AP_W1, _AP_S1> &op) const { + ap_private<_AP_W, _AP_S> tmp(*this); + tmp.clearUnusedBits(); + ap_private<_AP_W1, _AP_S1> op_(op); + op_.clearUnusedBits(); + + enum { _AP_MAX_W = AP_MAX(AP_MAX(_AP_W, _AP_W1), 32) }; + ap_private<_AP_MAX_W, false> lhs(tmp); + ap_private<_AP_MAX_W, false> rhs(op_); + if (_AP_MAX_W <= 64) { + return (uint64_t)lhs.get_VAL() == (uint64_t)rhs.get_VAL(); + } else + return lhs == rhs; + } + + template + INLINE bool operator!=(const ap_private<_AP_W2, _AP_S2> &op) const { + return !(*this == op); + } + + template + INLINE bool operator>(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private<_AP_W, _AP_S> tmp(*this); + tmp.clearUnusedBits(); + ap_private<_AP_W2, _AP_S2> op_(op); + op_.clearUnusedBits(); + + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(tmp); + ap_private<_AP_MAX_W, _AP_S2> rhs(op_); + // this will follow gcc rule for comparison + // between different bitwidth and signness + if (_AP_S == _AP_S2) + return _AP_S ? lhs.sgt(rhs) : lhs.ugt(rhs); + else if (_AP_W < 32 && _AP_W2 < 32) + // different signness but both bitwidth is less than 32 + return lhs.sgt(rhs); + else + // different signness but bigger bitwidth + // is greater or equal to 32 + if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + } + + template + INLINE bool operator<=(const ap_private<_AP_W2, _AP_S2> &op) const { + return !(*this > op); + } + + template + INLINE bool operator<(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private<_AP_W, _AP_S> tmp(*this); + tmp.clearUnusedBits(); + ap_private<_AP_W2, _AP_S2> op_(op); + op_.clearUnusedBits(); + + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(tmp); + ap_private<_AP_MAX_W, _AP_S2> rhs(op_); + if (_AP_S == _AP_S2) + return _AP_S ? lhs.slt(rhs) : lhs.ult(rhs); + else if (_AP_W < 32 && _AP_W2 < 32) + return lhs.slt(rhs); + else if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + } + + template + INLINE bool operator>=(const ap_private<_AP_W2, _AP_S2> &op) const { + return !(*this < op); + } + + /// Bit and Part Select + //-------------------------------------------------------------- + // FIXME now _private_range_ref refs to _AP_ROOT_TYPE(struct ssdm_int). + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + const_cast *>(this), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + (const_cast *>(this)), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> operator[](int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> + operator[](const ap_private<_AP_W2, _AP_S2> &index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> operator[](int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> + operator[](const ap_private<_AP_W2, _AP_S2> &index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index.to_int()); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> bit(int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> + bit(const ap_private<_AP_W2, _AP_S2> &index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> bit(int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> + bit(const ap_private<_AP_W2, _AP_S2> &index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index.to_int()); + } + + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> > + // concat(const ap_private<_AP_W2, _AP_S2>& a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> > + // concat(ap_private<_AP_W2, _AP_S2>& a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(const ap_private<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(const ap_private<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // *this, const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(ap_private<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // const_cast&>(*this), a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(ap_private<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> > + // operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> > + // operator,(_private_range_ref<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> > + // operator,(const _private_bit_ref<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> > + // operator,(_private_bit_ref<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + // operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + // const_cast&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + // operator,(ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> + // >(*this, + // a2); + // } + // + // template + // INLINE ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + // operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) const { + // return ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // const_cast&>(*this), + // const_cast< + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + // operator,(af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + // &a2) { + // return ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + // >(*this, + // a2); + // } + // + // template + // INLINE + // ap_concat_ref<_AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> > + // operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) const { + // return ap_concat_ref< + // _AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // const_cast&>(*this), + // const_cast&>( + // a2)); + // } + // + // template + // INLINE + // ap_concat_ref<_AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> > + // operator,( + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + // return ap_concat_ref< + // _AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, + // a2); + // } + // + // template + // INLINE ap_private operator&( + // const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + // return *this & a2.get(); + // } + // + // template + // INLINE ap_private operator|( + // const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + // return *this | a2.get(); + // } + // + // template + // INLINE ap_private operator^( + // const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + // return *this ^ a2.get(); + // } + + // Reduce operation + //----------------------------------------------------------- + INLINE bool and_reduce() const { return (get_cleared_VAL() & mask) == mask; } + + INLINE bool nand_reduce() const { return (get_cleared_VAL() & mask) != mask; } + + INLINE bool or_reduce() const { return (bool)get_cleared_VAL(); } + + INLINE bool nor_reduce() const { return get_cleared_VAL() == 0; } + + INLINE bool xor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? true : false; + } + + INLINE bool xnor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? false : true; + } + + INLINE std::string to_string(uint8_t radix = 2, bool sign = false) const { + return toString(radix, radix == 10 ? _AP_S : sign); + } +}; // End of class ap_private <_AP_W, _AP_S, true> + +template +std::string ap_private<_AP_W, _AP_S, true>::toString(uint8_t radix, + bool wantSigned) const { + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + static const char *digits[] = {"0", "1", "2", "3", "4", "5", "6", "7", + "8", "9", "a", "b", "c", "d", "e", "f"}; + std::string result; + if (radix != 10) { + // For the 2, 8 and 16 bit cases, we can just shift instead of divide + // because the number of bits per digit (1,3 and 4 respectively) divides + // equaly. We just shift until there value is zero. + + // First, check for a zero value and just short circuit the logic below. + if (*this == (uint64_t)(0)) { + // Always generate a radix indicator because fixed-point + // formats require it. + switch (radix) { + case 2: + result = "0b0"; + break; + case 8: + result = "0o0"; + break; + case 16: + result = "0x0"; + break; + default: + assert("invalid radix" && 0); + } + } else { + ap_private<_AP_W, false, true> tmp(*this); + size_t insert_at = 0; + bool leading_zero = true; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + result = "-"; + insert_at = 1; + leading_zero = false; + } + switch (radix) { + case 2: + result += "0b"; + break; + case 8: + result += "0o"; + break; + case 16: + result += "0x"; + break; + default: + assert("invalid radix" && 0); + } + insert_at += 2; + + // Just shift tmp right for each digit width until it becomes zero + uint32_t shift = (radix == 16 ? 4 : (radix == 8 ? 3 : 1)); + uint64_t mask = radix - 1; + ap_private<_AP_W, false, true> zero(0); + unsigned bits = 0; + bool msb = false; + while (tmp.ne(zero)) { + unsigned digit = (unsigned)(tmp.get_VAL() & mask); + result.insert(insert_at, digits[digit]); + tmp = tmp.lshr(shift); + bits++; + msb = (digit >> (shift - 1)) == 1; + } + bits *= shift; + if (bits < _AP_W && leading_zero && msb) + result.insert(insert_at, digits[0]); + } + return result; + } + + ap_private<_AP_W, false, true> tmp(*this); + ap_private<6, false, true> divisor(radix); + ap_private<_AP_W, _AP_S, true> zero(0); + size_t insert_at = 0; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + result = "-"; + insert_at = 1; + } + if (tmp == ap_private<_AP_W, false, true>(0ULL)) + result = "0"; + else + while (tmp.ne(zero)) { + ap_private<_AP_W, false, true> APdigit = tmp % divisor; + ap_private<_AP_W, false, true> tmp2 = tmp / divisor; + uint32_t digit = (uint32_t)(APdigit.getZExtValue()); + assert(digit < radix && "divide failed"); + result.insert(insert_at, digits[digit]); + tmp = tmp2; + } + return result; + +} // End of ap_private<_AP_W, _AP_S, true>::toString() + +// bitwidth > 64 +template class ap_private<_AP_W, _AP_S, false> { + // SFINAE pattern. Only consider this class when _AP_W > 64 + const static bool valid = ap_private_enable_if<(_AP_W > 64)>::isValid; + +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif +public: + enum { BitWidth = _AP_W, _AP_N = (_AP_W + 63) / 64 }; + static const int width = _AP_W; + +private: + /// This constructor is used only internally for speed of construction of + /// temporaries. It is unsafe for general use so it is not public. + + /* Constructors */ + /// Note that numWords can be smaller or larger than the corresponding bit + /// width but any extraneous bits will be dropped. + /// @param numWords the number of words in bigVal + /// @param bigVal a sequence of words to form the initial value of the + /// ap_private + /// @brief Construct an ap_private, initialized as bigVal[]. + INLINE ap_private(uint32_t numWords, const uint64_t bigVal[]) { + set_canary(); + assert(bigVal && "Null pointer detected!"); + { + // Get memory, cleared to 0 + memset(pVal, 0, _AP_N * sizeof(uint64_t)); + + // Calculate the number of words to copy + uint32_t words = AESL_std::min(numWords, _AP_N); + // Copy the words from bigVal to pVal + memcpy(pVal, bigVal, words * APINT_WORD_SIZE); + if (words >= _AP_W) + clearUnusedBits(); + // Make sure unused high bits are cleared + } + check_canary(); + } + + /// This constructor interprets Val as a string in the given radix. The + /// interpretation stops when the first charater that is not suitable for the + /// radix is encountered. Acceptable radix values are 2, 8, 10 and 16. It is + /// an error for the value implied by the string to require more bits than + /// numBits. + /// @param val the string to be interpreted + /// @param radix the radix of Val to use for the intepretation + /// @brief Construct an ap_private from a string representation. + INLINE ap_private(const std::string &val, uint8_t radix = 2) { + set_canary(); + assert(!val.empty() && "The input string is empty."); + const char *c_str = val.c_str(); + fromString(c_str, val.size(), radix); + check_canary(); + } + + /// This constructor interprets the slen characters starting at StrStart as + /// a string in the given radix. The interpretation stops when the first + /// character that is not suitable for the radix is encountered. Acceptable + /// radix values are 2, 8, 10 and 16. It is an error for the value implied by + /// the string to require more bits than numBits. + /// @param strStart the start of the string to be interpreted + /// @param slen the maximum number of characters to interpret + /// @param radix the radix to use for the conversion + /// @brief Construct an ap_private from a string representation. + /// This method does not consider whether it is negative or not. + INLINE ap_private(const char strStart[], uint32_t slen, uint8_t radix) { + set_canary(); + fromString(strStart, slen, radix); + check_canary(); + } + + INLINE void report() { + _AP_ERROR(_AP_W > MAX_MODE(AP_INT_MAX_W) * 1024, + "ap_%sint<%d>: Bitwidth exceeds the " + "default max value %d. Please use macro " + "AP_INT_MAX_W to set a larger max value.", + _AP_S ? "" : "u", _AP_W, MAX_MODE(AP_INT_MAX_W) * 1024); + } + /// This union is used to store the integer value. When the + /// integer bit-width <= 64, it uses VAL, otherwise it uses pVal. + + /// This enum is used to hold the constants we needed for ap_private. + // uint64_t VAL; ///< Used to store the <= 64 bits integer value. +#if defined(_MSC_VER) && _MSC_VER >= 1900 + __declspec(align(1 << logceil<_AP_W>::val)) +#endif + uint64_t pVal[_AP_N] ///< Used to store the >64 bits integer value. +#if defined(__GNUC__) || defined(__clang__) + __attribute__((aligned(1 << logceil<_AP_W>::val))) +#endif + ; +#ifdef AP_CANARY + uint64_t CANARY; + INLINE void check_canary() { assert(CANARY == (uint64_t)0xDEADBEEFDEADBEEF); } + INLINE void set_canary() { CANARY = (uint64_t)0xDEADBEEFDEADBEEF; } +#else + INLINE void check_canary() {} + INLINE void set_canary() {} +#endif + +public: + typedef typename valtype<8, _AP_S>::Type ValType; + typedef ap_private<_AP_W, _AP_S> Type; + // FIXME remove friend type? + template + friend struct ap_fixed_base; + /// return type of variety of operations + //---------------------------------------------------------- + template struct RType { + enum { + mult_w = _AP_W + _AP_W2, + mult_s = _AP_S || _AP_S2, + plus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + plus_s = _AP_S || _AP_S2, + minus_w = + AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)) + 1, + minus_s = true, + div_w = _AP_W + _AP_S2, + div_s = _AP_S || _AP_S2, + mod_w = AP_MIN(_AP_W, _AP_W2 + (!_AP_S2 && _AP_S)), + mod_s = _AP_S, + logic_w = AP_MAX(_AP_W + (_AP_S2 && !_AP_S), _AP_W2 + (_AP_S && !_AP_S2)), + logic_s = _AP_S || _AP_S2 + }; + typedef ap_private mult; + typedef ap_private plus; + typedef ap_private minus; + typedef ap_private logic; + typedef ap_private div; + typedef ap_private mod; + typedef ap_private<_AP_W, _AP_S> arg1; + typedef bool reduce; + }; + + INLINE uint64_t &get_VAL(void) { return pVal[0]; } + INLINE uint64_t get_VAL(void) const { return pVal[0]; } + INLINE uint64_t get_VAL(void) const volatile { return pVal[0]; } + INLINE uint64_t get_cleared_VAL(void) { return pVal[0]; } + INLINE uint64_t get_cleared_VAL(void) const { return pVal[0]; } + INLINE void set_VAL(uint64_t value) { pVal[0] = value; } + INLINE uint64_t &get_pVal(int index) { return pVal[index]; } + INLINE uint64_t *get_pVal() { return pVal; } + INLINE const uint64_t *get_pVal() const { return pVal; } + INLINE uint64_t get_pVal(int index) const { return pVal[index]; } + INLINE uint64_t *get_pVal() const volatile { return pVal; } + INLINE uint64_t get_pVal(int index) const volatile { return pVal[index]; } + INLINE void set_pVal(int i, uint64_t value) { pVal[i] = value; } + + /// This enum is used to hold the constants we needed for ap_private. + enum { + APINT_BITS_PER_WORD = sizeof(uint64_t) * 8, ///< Bits in a word + APINT_WORD_SIZE = sizeof(uint64_t) ///< Byte size of a word + }; + + enum { + excess_bits = (_AP_W % APINT_BITS_PER_WORD) + ? APINT_BITS_PER_WORD - (_AP_W % APINT_BITS_PER_WORD) + : 0 + }; + static const uint64_t mask = ((uint64_t)~0ULL >> (excess_bits)); + +public: + // NOTE changed to explicit to be consistent with ap_private + explicit INLINE ap_private(const char *val) { + set_canary(); + unsigned char radix = 10; + std::string str = + ap_private_ops::parseString(val, radix); // determine radix. + std::string::size_type pos = str.find('.'); + if (pos != std::string::npos) + str = str.substr(pos); + ap_private ap_private_val(str, radix); + operator=(ap_private_val); + report(); + check_canary(); + } + + INLINE ap_private(const char *val, unsigned char rd) { + set_canary(); + unsigned char radix = rd; + std::string str = + ap_private_ops::parseString(val, radix); // determine radix. + std::string::size_type pos = str.find('.'); + if (pos != std::string::npos) + str = str.substr(pos); + ap_private ap_private_val(str, radix); + operator=(ap_private_val); + report(); + + report(); + check_canary(); + } + + template + INLINE ap_private(const _private_range_ref<_AP_W2, _AP_S2> &ref) { + set_canary(); + *this = ref.get(); + report(); + check_canary(); + } + + template + INLINE ap_private(const _private_bit_ref<_AP_W2, _AP_S2> &ref) { + set_canary(); + *this = ((uint64_t)(bool)ref); + report(); + check_canary(); + } + + // template + // INLINE ap_private(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& + // ref) { + // set_canary(); + // *this = ref.get(); + // report(); + // check_canary(); + // } + // + // template + // INLINE ap_private( + // const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& + // val) { + // set_canary(); + // *this = ((val.operator ap_private<_AP_W2, false>())); + // report(); + // check_canary(); + // } + // + // template + // INLINE ap_private( + // const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2>& val) + // { + // set_canary(); + // *this = (uint64_t)(bool)val; + // report(); + // check_canary(); + // } + + /// Simply makes *this a copy of that. + /// @brief Copy Constructor. + INLINE ap_private(const ap_private &that) { + set_canary(); + memcpy(pVal, that.get_pVal(), _AP_N * APINT_WORD_SIZE); + clearUnusedBits(); + check_canary(); + } + + template + INLINE ap_private(const ap_private<_AP_W1, _AP_S1, false> &that) { + set_canary(); + operator=(that); + check_canary(); + } + + template + INLINE ap_private(const volatile ap_private<_AP_W1, _AP_S1, false> &that) { + set_canary(); + operator=(const_cast &>(that)); + check_canary(); + } + + template + INLINE ap_private(const ap_private<_AP_W1, _AP_S1, true> &that) { + set_canary(); + static const uint64_t that_sign_ext_mask = + (_AP_W1 == APINT_BITS_PER_WORD) + ? 0 + : ~0ULL >> (_AP_W1 % APINT_BITS_PER_WORD) + << (_AP_W1 % APINT_BITS_PER_WORD); + if (that.isNegative()) { + pVal[0] = that.get_VAL() | that_sign_ext_mask; + memset(pVal + 1, ~0, sizeof(uint64_t) * (_AP_N - 1)); + } else { + pVal[0] = that.get_VAL(); + memset(pVal + 1, 0, sizeof(uint64_t) * (_AP_N - 1)); + } + clearUnusedBits(); + check_canary(); + } + + template + INLINE ap_private(const volatile ap_private<_AP_W1, _AP_S1, true> &that) { + set_canary(); + operator=(const_cast &>(that)); + check_canary(); + } + + /// @brief Destructor. + // virtual ~ap_private() {} + INLINE ~ap_private() { check_canary(); } + + /// @name Constructors + /// @{ + + /// Default constructor that creates an uninitialized ap_private. This is + /// useful + /// for object deserialization (pair this with the static method Read). + INLINE ap_private() { + set_canary(); + clearUnusedBits(); + check_canary(); + } + + INLINE ap_private(uint64_t *val, uint32_t bits = _AP_W) { assert(0); } + INLINE ap_private(const uint64_t *const val, uint32_t bits) { assert(0); } + +/// If isSigned is true then val is treated as if it were a signed value +/// (i.e. as an int64_t) and the appropriate sign extension to the bit width +/// will be done. Otherwise, no sign extension occurs (high order bits beyond +/// the range of val are zero filled). +/// @param numBits the bit width of the constructed ap_private +/// @param val the initial value of the ap_private +/// @param isSigned how to treat signedness of val +/// @brief Create a new ap_private of numBits width, initialized as val. +#define CTOR(TYPE, SIGNED) \ + INLINE ap_private(TYPE val, bool isSigned = SIGNED) { \ + set_canary(); \ + pVal[0] = (ValType)val; \ + if (isSigned && int64_t(pVal[0]) < 0) { \ + memset(pVal + 1, ~0, sizeof(uint64_t) * (_AP_N - 1)); \ + } else { \ + memset(pVal + 1, 0, sizeof(uint64_t) * (_AP_N - 1)); \ + } \ + clearUnusedBits(); \ + check_canary(); \ + } + + CTOR(bool, false) + CTOR(char, CHAR_IS_SIGNED) + CTOR(signed char, true) + CTOR(unsigned char, false) + CTOR(short, true) + CTOR(unsigned short, false) + CTOR(int, true) + CTOR(unsigned int, false) + CTOR(long, true) + CTOR(unsigned long, false) + CTOR(ap_slong, true) + CTOR(ap_ulong, false) + CTOR(half, false) + CTOR(float, false) + CTOR(double, false) +#undef CTOR + + /// @returns true if the number of bits <= 64, false otherwise. + /// @brief Determine if this ap_private just has one word to store value. + INLINE bool isSingleWord() const { return false; } + + /// @returns the word position for the specified bit position. + /// @brief Determine which word a bit is in. + static INLINE uint32_t whichWord(uint32_t bitPosition) { + // return bitPosition / APINT_BITS_PER_WORD; + return (bitPosition) >> 6; + } + + /// @returns the bit position in a word for the specified bit position + /// in the ap_private. + /// @brief Determine which bit in a word a bit is in. + static INLINE uint32_t whichBit(uint32_t bitPosition) { + // return bitPosition % APINT_BITS_PER_WORD; + return bitPosition & 0x3f; + } + + /// bit at a specific bit position. This is used to mask the bit in the + /// corresponding word. + /// @returns a uint64_t with only bit at "whichBit(bitPosition)" set + /// @brief Get a single bit mask. + static INLINE uint64_t maskBit(uint32_t bitPosition) { + return 1ULL << (whichBit(bitPosition)); + } + + /// @returns the corresponding word for the specified bit position. + /// @brief Get the word corresponding to a bit position + INLINE uint64_t getWord(uint32_t bitPosition) const { + return pVal[whichWord(bitPosition)]; + } + + /// This method is used internally to clear the to "N" bits in the high order + /// word that are not used by the ap_private. This is needed after the most + /// significant word is assigned a value to ensure that those bits are + /// zero'd out. + /// @brief Clear unused high order bits + INLINE void clearUnusedBits(void) volatile +// just for clang compiler 3.8 and above +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)) + __attribute__((no_sanitize("undefined"))) +#endif + { + pVal[_AP_N - 1] = + _AP_S ? ((((int64_t)pVal[_AP_N - 1]) << (excess_bits)) >> excess_bits) + : (excess_bits + ? ((pVal[_AP_N - 1]) << (excess_bits)) >> (excess_bits) + : pVal[_AP_N - 1]); + } + + INLINE void clearUnusedBitsToZero(void) { pVal[_AP_N - 1] &= mask; } + + INLINE void clearUnusedBitsToOne(void) { pVal[_AP_N - 1] |= mask; } + + /// This is used by the constructors that take string arguments. + /// @brief Convert a char array into an ap_private + INLINE void fromString(const char *str, uint32_t slen, uint8_t radix) { + enum { numbits = _AP_W }; + bool isNeg = str[0] == '-'; + if (isNeg) { + str++; + slen--; + } + + if (str[0] == '0' && (str[1] == 'b' || str[1] == 'B')) { + // if(radix == 0) radix = 2; + _AP_WARNING(radix != 2, "%s seems to have base %d, but %d given.", str, 2, + radix); + str += 2; + slen -= 2; + } else if (str[0] == '0' && (str[1] == 'o' || str[1] == 'O')) { + // if (radix == 0) radix = 8; + _AP_WARNING(radix != 8, "%s seems to have base %d, but %d given.", str, 8, + radix); + str += 2; + slen -= 2; + } else if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) { + // if (radix == 0) radix = 16; + _AP_WARNING(radix != 16, "%s seems to have base %d, but %d given.", str, + 16, radix); + str += 2; + slen -= 2; + } else if (str[0] == '0' && (str[1] == 'd' || str[1] == 'D')) { + // if (radix == 0) radix = 10; + _AP_WARNING(radix != 10, "%s seems to have base %d, but %d given.", str, + 10, radix); + str += 2; + slen -= 2; + } else if (radix == 0) { + // radix = 2; // XXX default value + } + + // Check our assumptions here + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + assert(str && "String is null?"); + + // skip any leading zero + while (*str == '0' && *(str + 1) != '\0') { + str++; + slen--; + } + assert((slen <= numbits || radix != 2) && "Insufficient bit width"); + assert(((slen - 1) * 3 <= numbits || radix != 8) && + "Insufficient bit width"); + assert(((slen - 1) * 4 <= numbits || radix != 16) && + "Insufficient bit width"); + assert((((slen - 1) * 64) / 22 <= numbits || radix != 10) && + "Insufficient bit width"); + + // clear bits + memset(pVal, 0, _AP_N * sizeof(uint64_t)); + + // Figure out if we can shift instead of multiply + uint32_t shift = (radix == 16 ? 4 : radix == 8 ? 3 : radix == 2 ? 1 : 0); + + // Set up an ap_private for the digit to add outside the loop so we don't + // constantly construct/destruct it. + uint64_t bigVal[_AP_N]; + memset(bigVal, 0, _AP_N * sizeof(uint64_t)); + ap_private<_AP_W, _AP_S> apdigit(getBitWidth(), bigVal); + ap_private<_AP_W, _AP_S> apradix(radix); + + // Enter digit traversal loop + for (unsigned i = 0; i < slen; i++) { + // Get a digit + uint32_t digit = 0; + char cdigit = str[i]; + if (radix == 16) { +#define isxdigit(c) \ + (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || \ + ((c) >= 'A' && (c) <= 'F')) +#define isdigit(c) ((c) >= '0' && (c) <= '9') + if (!isxdigit(cdigit)) + assert(0 && "Invalid hex digit in string"); + if (isdigit(cdigit)) + digit = cdigit - '0'; + else if (cdigit >= 'a') + digit = cdigit - 'a' + 10; + else if (cdigit >= 'A') + digit = cdigit - 'A' + 10; + else + assert(0 && "huh? we shouldn't get here"); + } else if (isdigit(cdigit)) { + digit = cdigit - '0'; + } else if (cdigit != '\0') { + assert(0 && "Invalid character in digit string"); + } +#undef isxdigit +#undef isdigit + // Shift or multiply the value by the radix + if (shift) + *this <<= shift; + else + *this *= apradix; + + // Add in the digit we just interpreted + apdigit.set_VAL(digit); + *this += apdigit; + } + // If its negative, put it in two's complement form + if (isNeg) { + (*this)--; + this->flip(); + } + clearUnusedBits(); + } + + INLINE ap_private read() volatile { return *this; } + + INLINE void write(const ap_private &op2) volatile { *this = (op2); } + + INLINE operator ValType() const { return get_VAL(); } + + INLINE int to_uchar() const { return (unsigned char)get_VAL(); } + + INLINE int to_char() const { return (signed char)get_VAL(); } + + INLINE int to_ushort() const { return (unsigned short)get_VAL(); } + + INLINE int to_short() const { return (short)get_VAL(); } + + INLINE int to_int() const { return (int)get_VAL(); } + + INLINE unsigned to_uint() const { return (unsigned)get_VAL(); } + + INLINE long to_long() const { return (long)get_VAL(); } + + INLINE unsigned long to_ulong() const { return (unsigned long)get_VAL(); } + + INLINE ap_slong to_int64() const { return (ap_slong)get_VAL(); } + + INLINE ap_ulong to_uint64() const { return (ap_ulong)get_VAL(); } + + INLINE double to_double() const { + if (isNegative()) + return roundToDouble(true); + else + return roundToDouble(false); + } + + INLINE unsigned length() const { return _AP_W; } + + /*Reverse the contents of ap_private instance. I.e. LSB becomes MSB and vise + * versa*/ + INLINE ap_private &reverse() { + for (int i = 0; i < _AP_W / 2; ++i) { + bool tmp = operator[](i); + if (operator[](_AP_W - 1 - i)) + set(i); + else + clear(i); + if (tmp) + set(_AP_W - 1 - i); + else + clear(_AP_W - 1 - i); + } + clearUnusedBits(); + return *this; + } + + /*Return true if the value of ap_private instance is zero*/ + INLINE bool iszero() const { return isMinValue(); } + + INLINE bool to_bool() const { return !iszero(); } + + /* x < 0 */ + INLINE bool sign() const { + if (isNegative()) + return true; + return false; + } + + /* x[i] = !x[i] */ + INLINE void invert(int i) { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + flip(i); + } + + /* x[i] */ + INLINE bool test(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return operator[](i); + } + + // Set the ith bit into v + INLINE void set(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // Set the ith bit into v + INLINE void set_bit(int i, bool v) { + assert(i >= 0 && "Attempting to write bit with negative index"); + assert(i < _AP_W && "Attempting to write bit beyond MSB"); + v ? set(i) : clear(i); + } + + // FIXME different argument for different action? + INLINE ap_private &set(uint32_t bitPosition) { + pVal[whichWord(bitPosition)] |= maskBit(bitPosition); + clearUnusedBits(); + return *this; + } + + INLINE void set() { + for (int i = 0; i < _AP_N; ++i) + pVal[i] = ~0ULL; + clearUnusedBits(); + } + + // Get the value of ith bit + INLINE bool get(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return ((maskBit(i) & (pVal[whichWord(i)])) != 0); + } + + // Get the value of ith bit + INLINE bool get_bit(int i) const { + assert(i >= 0 && "Attempting to read bit with negative index"); + assert(i < _AP_W && "Attempting to read bit beyond MSB"); + return ((maskBit(i) & (pVal[whichWord(i)])) != 0); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the left + INLINE void lrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(shl(n) | lshr(_AP_W - n)); + } + + // This is used for sc_lv and sc_bv, which is implemented by sc_uint + // Rotate an ap_private object n places to the right + INLINE void rrotate(int n) { + assert(n >= 0 && "Attempting to shift negative index"); + assert(n < _AP_W && "Shift value larger than bit width"); + operator=(lshr(n) | shl(_AP_W - n)); + } + + /// Set the given bit to 0 whose position is given as "bitPosition". + /// @brief Set a given bit to 0. + INLINE ap_private &clear(uint32_t bitPosition) { + pVal[whichWord(bitPosition)] &= ~maskBit(bitPosition); + clearUnusedBits(); + return *this; + } + + /// @brief Set every bit to 0. + INLINE void clear() { memset(pVal, 0, _AP_N * APINT_WORD_SIZE); } + + /// @brief Toggle every bit to its opposite value. + ap_private &flip() { + for (int i = 0; i < _AP_N; ++i) + pVal[i] ^= ~0ULL; + clearUnusedBits(); + return *this; + } + + /// @brief Toggles a given bit to its opposite value. + INLINE ap_private &flip(uint32_t bitPosition) { + assert(bitPosition < BitWidth && "Out of the bit-width range!"); + set_bit(bitPosition, !get_bit(bitPosition)); + return *this; + } + + // complements every bit + INLINE void b_not() { flip(); } + + INLINE ap_private getLoBits(uint32_t numBits) const { + return ap_private_ops::lshr(ap_private_ops::shl(*this, _AP_W - numBits), + _AP_W - numBits); + } + + INLINE ap_private getHiBits(uint32_t numBits) const { + return ap_private_ops::lshr(*this, _AP_W - numBits); + } + + // Binary Arithmetic + //----------------------------------------------------------- + + // template + // INLINE ap_private operator&( + // const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + // return *this & a2.get(); + // } + // + // template + // INLINE ap_private operator|( + // const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + // return *this | a2.get(); + // } + // + // template + // INLINE ap_private operator^( + // const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3>& a2) { + // return *this ^ a2.get(); + // } + + /// Arithmetic assign + //------------------------------------------------------------- + +#define OP_BIN_LOGIC_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private &operator Sym(const ap_private<_AP_W1, _AP_S1> &RHS) { \ + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; \ + uint32_t numWords = AESL_std::min((int)_AP_N, _AP_N1); \ + uint32_t i; \ + if (_AP_W != _AP_W1) \ + fprintf(stderr, \ + "Warning! Bitsize mismach for ap_[u]int " #Sym " ap_[u]int.\n"); \ + for (i = 0; i < numWords; ++i) \ + pVal[i] Sym RHS.get_pVal(i); \ + if (_AP_N1 < _AP_N) { \ + uint64_t ext = RHS.isNegative() ? ~0ULL : 0; \ + for (; i < _AP_N; i++) \ + pVal[i] Sym ext; \ + } \ + clearUnusedBits(); \ + return *this; \ + } + + OP_BIN_LOGIC_ASSIGN_AP(&=); + OP_BIN_LOGIC_ASSIGN_AP(|=); + OP_BIN_LOGIC_ASSIGN_AP(^=); +#undef OP_BIN_LOGIC_ASSIGN_AP + + /// Adds the RHS APint to this ap_private. + /// @returns this, after addition of RHS. + /// @brief Addition assignment operator. + template + INLINE ap_private &operator+=(const ap_private<_AP_W1, _AP_S1> &RHS) { + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + uint64_t RHSpVal[_AP_N1]; + for (int i = 0; i < _AP_N1; ++i) + RHSpVal[i] = RHS.get_pVal(i); + ap_private_ops::add(pVal, pVal, RHSpVal, _AP_N, _AP_N, _AP_N1, _AP_S, + _AP_S1); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator-=(const ap_private<_AP_W1, _AP_S1> &RHS) { + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + uint64_t RHSpVal[_AP_N1]; + for (int i = 0; i < _AP_N1; ++i) + RHSpVal[i] = RHS.get_pVal(i); + ap_private_ops::sub(pVal, pVal, RHSpVal, _AP_N, _AP_N, _AP_N1, _AP_S, + _AP_S1); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator*=(const ap_private<_AP_W1, _AP_S1> &RHS) { + // Get some bit facts about LHS and check for zero + uint32_t lhsBits = getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : whichWord(lhsBits - 1) + 1; + if (!lhsWords) { + // 0 * X ===> 0 + return *this; + } + + ap_private dupRHS = RHS; + // Get some bit facts about RHS and check for zero + uint32_t rhsBits = dupRHS.getActiveBits(); + uint32_t rhsWords = !rhsBits ? 0 : whichWord(rhsBits - 1) + 1; + if (!rhsWords) { + // X * 0 ===> 0 + clear(); + return *this; + } + + // Allocate space for the result + uint32_t destWords = rhsWords + lhsWords; + uint64_t *dest = (uint64_t *)malloc(destWords * sizeof(uint64_t)); + + // Perform the long multiply + ap_private_ops::mul(dest, pVal, lhsWords, dupRHS.get_pVal(), rhsWords, + destWords); + + // Copy result back into *this + clear(); + uint32_t wordsToCopy = destWords >= _AP_N ? _AP_N : destWords; + + memcpy(pVal, dest, wordsToCopy * APINT_WORD_SIZE); + + uint64_t ext = (isNegative() ^ RHS.isNegative()) ? ~0ULL : 0ULL; + for (int i = wordsToCopy; i < _AP_N; i++) + pVal[i] = ext; + clearUnusedBits(); + // delete dest array and return + free(dest); + return *this; + } + +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private &operator Sym##=(const ap_private<_AP_W2, _AP_S2> &op) { \ + *this = operator Sym(op); \ + return *this; \ + } + + OP_ASSIGN_AP(/) + OP_ASSIGN_AP(%) +#undef OP_ASSIGN_AP + +#define OP_BIN_LOGIC_AP(Sym) \ + template \ + INLINE typename RType<_AP_W1, _AP_S1>::logic operator Sym( \ + const ap_private<_AP_W1, _AP_S1> &RHS) const { \ + enum { \ + numWords = (RType<_AP_W1, _AP_S1>::logic_w + APINT_BITS_PER_WORD - 1) / \ + APINT_BITS_PER_WORD \ + }; \ + typename RType<_AP_W1, _AP_S1>::logic Result; \ + uint32_t i; \ + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; \ + uint32_t min_N = std::min((int)_AP_N, _AP_N1); \ + uint32_t max_N = std::max((int)_AP_N, _AP_N1); \ + for (i = 0; i < min_N; ++i) \ + Result.set_pVal(i, pVal[i] Sym RHS.get_pVal(i)); \ + if (numWords > i) { \ + uint64_t ext = ((_AP_N < _AP_N1 && isNegative()) || \ + (_AP_N1 < _AP_N && RHS.isNegative())) \ + ? ~0ULL \ + : 0; \ + if (_AP_N > _AP_N1) \ + for (; i < max_N; i++) \ + Result.set_pVal(i, pVal[i] Sym ext); \ + else \ + for (; i < max_N; i++) \ + Result.set_pVal(i, RHS.get_pVal(i) Sym ext); \ + if (numWords > i) { \ + uint64_t ext2 = ((_AP_N > _AP_N1 && isNegative()) || \ + (_AP_N1 > _AP_N && RHS.isNegative())) \ + ? ~0ULL \ + : 0; \ + Result.set_pVal(i, ext Sym ext2); \ + } \ + } \ + Result.clearUnusedBits(); \ + return Result; \ + } + + OP_BIN_LOGIC_AP(|); + OP_BIN_LOGIC_AP(&); + OP_BIN_LOGIC_AP(^); + +#undef OP_BIN_LOGIC_AP + + template + INLINE typename RType<_AP_W1, _AP_S1>::plus + operator+(const ap_private<_AP_W1, _AP_S1> &RHS) const { + typename RType<_AP_W1, _AP_S1>::plus Result, lhs(*this), rhs(RHS); + const int Result_AP_N = (RType<_AP_W1, _AP_S1>::plus_w + 63) / 64; + ap_private_ops::add(Result.get_pVal(), lhs.get_pVal(), rhs.get_pVal(), + Result_AP_N, Result_AP_N, Result_AP_N, _AP_S, _AP_S1); + Result.clearUnusedBits(); + return Result; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::minus + operator-(const ap_private<_AP_W1, _AP_S1> &RHS) const { + typename RType<_AP_W1, _AP_S1>::minus Result, lhs(*this), rhs(RHS); + const int Result_AP_N = (RType<_AP_W1, _AP_S1>::minus_w + 63) / 64; + ap_private_ops::sub(Result.get_pVal(), lhs.get_pVal(), rhs.get_pVal(), + Result_AP_N, Result_AP_N, Result_AP_N, _AP_S, _AP_S1); + Result.clearUnusedBits(); + return Result; + } + + template + INLINE typename RType<_AP_W1, _AP_S1>::mult + operator*(const ap_private<_AP_W1, _AP_S1> &RHS) const { + typename RType<_AP_W1, _AP_S1>::mult temp = *this; + temp *= RHS; + return temp; + } + + template + INLINE typename RType<_AP_W2, _AP_S2>::div + operator/(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + return typename RType<_AP_W2, _AP_S2>::div( + (_AP_S || _AP_S2) ? lhs.sdiv(rhs) : lhs.udiv(rhs)); + } + + template + INLINE typename RType<_AP_W2, _AP_S2>::mod + operator%(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + lhs = *this; + ap_private _AP_W2 ? _AP_S + : (_AP_W2 > _AP_W ? _AP_S2 : _AP_S || _AP_S2))> + rhs = op; + typename RType<_AP_W2, _AP_S2>::mod res = + typename RType<_AP_W2, _AP_S2>::mod(_AP_S ? lhs.srem(rhs) + : lhs.urem(rhs)); + return res; + } + +#define OP_LEFT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator<<(const TYPE op) const { \ + if (op >= _AP_W) \ + return ap_private(0); \ + if (SIGNED && op < 0) \ + return *this >> (0 - op); \ + return shl(op); \ + } + + OP_LEFT_SHIFT_CTYPE(int, true) + // OP_LEFT_SHIFT_CTYPE(bool, false) + OP_LEFT_SHIFT_CTYPE(signed char, true) + OP_LEFT_SHIFT_CTYPE(unsigned char, false) + OP_LEFT_SHIFT_CTYPE(short, true) + OP_LEFT_SHIFT_CTYPE(unsigned short, false) + OP_LEFT_SHIFT_CTYPE(unsigned int, false) + OP_LEFT_SHIFT_CTYPE(long, true) + OP_LEFT_SHIFT_CTYPE(unsigned long, false) + OP_LEFT_SHIFT_CTYPE(unsigned long long, false) + OP_LEFT_SHIFT_CTYPE(long long, true) + OP_LEFT_SHIFT_CTYPE(half, false) + OP_LEFT_SHIFT_CTYPE(float, false) + OP_LEFT_SHIFT_CTYPE(double, false) +#undef OP_LEFT_SHIFT_CTYPE + + template + INLINE ap_private operator<<(const ap_private<_AP_W2, _AP_S2> &op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this << sh; + } else { + int sh = op2.to_int(); + return *this << sh; + } + } + +#define OP_RIGHT_SHIFT_CTYPE(TYPE, SIGNED) \ + INLINE ap_private operator>>(const TYPE op) const { \ + if (op >= _AP_W) { \ + if (isNegative()) \ + return ap_private(-1); \ + else \ + return ap_private(0); \ + } \ + if ((SIGNED) && op < 0) \ + return *this << (0 - op); \ + if (_AP_S) \ + return ashr(op); \ + else \ + return lshr(op); \ + } + + // OP_RIGHT_SHIFT_CTYPE(bool, false) + OP_RIGHT_SHIFT_CTYPE(char, CHAR_IS_SIGNED) + OP_RIGHT_SHIFT_CTYPE(signed char, true) + OP_RIGHT_SHIFT_CTYPE(unsigned char, false) + OP_RIGHT_SHIFT_CTYPE(short, true) + OP_RIGHT_SHIFT_CTYPE(unsigned short, false) + OP_RIGHT_SHIFT_CTYPE(int, true) + OP_RIGHT_SHIFT_CTYPE(unsigned int, false) + OP_RIGHT_SHIFT_CTYPE(long, true) + OP_RIGHT_SHIFT_CTYPE(unsigned long, false) + OP_RIGHT_SHIFT_CTYPE(unsigned long long, false) + OP_RIGHT_SHIFT_CTYPE(long long, true) + OP_RIGHT_SHIFT_CTYPE(half, false) + OP_RIGHT_SHIFT_CTYPE(float, false) + OP_RIGHT_SHIFT_CTYPE(double, false) +#undef OP_RIGHT_SHIFT_CTYPE + + template + INLINE ap_private operator>>(const ap_private<_AP_W2, _AP_S2> &op2) const { + if (_AP_S2 == false) { + uint32_t sh = op2.to_uint(); + return *this >> sh; + } else { + int sh = op2.to_int(); + return *this >> sh; + } + } + + /// Shift assign + //------------------------------------------------------------------ + // TODO call clearUnusedBits ? +#define OP_ASSIGN_AP(Sym) \ + template \ + INLINE ap_private &operator Sym##=(int op) { \ + *this = operator Sym(op); \ + return *this; \ + } \ + INLINE ap_private &operator Sym##=(unsigned int op) { \ + *this = operator Sym(op); \ + return *this; \ + } \ + template \ + INLINE ap_private &operator Sym##=(const ap_private<_AP_W2, _AP_S2> &op) { \ + *this = operator Sym(op); \ + return *this; \ + } + OP_ASSIGN_AP(>>) + OP_ASSIGN_AP(<<) +#undef OP_ASSIGN_AP + + /// Comparisons + //----------------------------------------------------------------- + INLINE bool operator==(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + // Get some facts about the number of bits used in the two operands. + uint32_t n1 = LHS_.getActiveBits(); + uint32_t n2 = RHS_.getActiveBits(); + + // If the number of bits isn't the same, they aren't equal + if (n1 != n2) + return false; + + // If the number of bits fits in a word, we only need to compare the low + // word. + if (n1 <= APINT_BITS_PER_WORD) + return LHS_.get_pVal(0) == RHS_.get_pVal(0); + + // Otherwise, compare everything + for (int i = whichWord(n1 - 1); i >= 0; --i) + if (LHS_.get_pVal(i) != RHS_.get_pVal(i)) + return false; + return true; + } + + template + INLINE bool operator==(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + ap_private<_AP_W2, _AP_S2> RHS_(op); + RHS_.clearUnusedBits(); + + enum { + _AP_MAX_W = AP_MAX(_AP_W, _AP_W2), + }; + ap_private<_AP_MAX_W, false> lhs(LHS_); + ap_private<_AP_MAX_W, false> rhs(RHS_); + return lhs == rhs; + } + + INLINE bool operator==(uint64_t Val) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + uint32_t n = LHS_.getActiveBits(); + if (n <= APINT_BITS_PER_WORD) + return LHS_.get_pVal(0) == Val; + else + return false; + } + + template + INLINE bool operator!=(const ap_private<_AP_W2, _AP_S2> &op) const { + return !(*this == op); + } + + template + INLINE bool operator!=(const ap_private<_AP_W, _AP_S1> &RHS) const { + return !((*this) == RHS); + } + + INLINE bool operator!=(uint64_t Val) const { return !((*this) == Val); } + + template + INLINE bool operator<=(const ap_private<_AP_W2, _AP_S2> &op) const { + return !(*this > op); + } + + INLINE bool operator<(const ap_private &op) const { + return _AP_S ? slt(op) : ult(op); + } + + template + INLINE bool operator<(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + ap_private<_AP_W2, _AP_S2> RHS_(op); + RHS_.clearUnusedBits(); + + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(LHS_); + ap_private<_AP_MAX_W, _AP_S2> rhs(RHS_); + if (_AP_S == _AP_S2) + return _AP_S ? lhs.slt(rhs) : lhs.ult(rhs); + else if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ult(rhs); + else + return lhs.slt(rhs); + } + + template + INLINE bool operator>=(const ap_private<_AP_W2, _AP_S2> &op) const { + return !(*this < op); + } + + INLINE bool operator>(const ap_private &op) const { + return _AP_S ? sgt(op) : ugt(op); + } + + template + INLINE bool operator>(const ap_private<_AP_W2, _AP_S2> &op) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + ap_private<_AP_W2, _AP_S2> RHS_(op); + RHS_.clearUnusedBits(); + + enum { + _AP_MAX_W = AP_MAX(_AP_W + (_AP_S || _AP_S2), _AP_W2 + (_AP_S || _AP_S2)) + }; + ap_private<_AP_MAX_W, _AP_S> lhs(LHS_); + ap_private<_AP_MAX_W, _AP_S2> rhs(RHS_); + if (_AP_S == _AP_S2) + return _AP_S ? lhs.sgt(rhs) : lhs.ugt(rhs); + else if (_AP_S) + if (_AP_W2 >= _AP_W) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + else if (_AP_W >= _AP_W2) + return lhs.ugt(rhs); + else + return lhs.sgt(rhs); + } + + /// Bit and Part Select + //-------------------------------------------------------------- + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> operator()(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + const_cast *>(this), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) const { + return _private_range_ref<_AP_W, _AP_S>( + (const_cast *>(this)), Hi, Lo); + } + + INLINE _private_range_ref<_AP_W, _AP_S> range(int Hi, int Lo) { + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> + range(const ap_private<_AP_W2, _AP_S2> &HiIdx, + const ap_private<_AP_W3, _AP_S3> &LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> + operator()(const ap_private<_AP_W2, _AP_S2> &HiIdx, + const ap_private<_AP_W3, _AP_S3> &LoIdx) { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return _private_range_ref<_AP_W, _AP_S>(this, Hi, Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> + range(const ap_private<_AP_W2, _AP_S2> &HiIdx, + const ap_private<_AP_W3, _AP_S3> &LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return _private_range_ref<_AP_W, _AP_S>(const_cast(this), Hi, + Lo); + } + + template + INLINE _private_range_ref<_AP_W, _AP_S> + operator()(const ap_private<_AP_W2, _AP_S2> &HiIdx, + const ap_private<_AP_W3, _AP_S3> &LoIdx) const { + int Hi = HiIdx.to_int(); + int Lo = LoIdx.to_int(); + return this->range(Hi, Lo); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> operator[](int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> + operator[](const ap_private<_AP_W2, _AP_S2> &index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> + operator[](const ap_private<_AP_W2, _AP_S2> &index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> operator[](int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index); + } + + INLINE _private_bit_ref<_AP_W, _AP_S> bit(int index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index); + } + + template + INLINE _private_bit_ref<_AP_W, _AP_S> + bit(const ap_private<_AP_W2, _AP_S2> &index) { + return _private_bit_ref<_AP_W, _AP_S>(*this, index.to_int()); + } + + INLINE const _private_bit_ref<_AP_W, _AP_S> bit(int index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index); + } + + template + INLINE const _private_bit_ref<_AP_W, _AP_S> + bit(const ap_private<_AP_W2, _AP_S2> &index) const { + return _private_bit_ref<_AP_W, _AP_S>( + const_cast &>(*this), index.to_int()); + } + + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> > + // concat(ap_private<_AP_W2, _AP_S2>& a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> > + // concat(const ap_private<_AP_W2, _AP_S2>& a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(ap_private<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(ap_private<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // const_cast&>(*this), a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(const ap_private<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // *this, const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private, _AP_W2, ap_private<_AP_W2, _AP_S2> + // > operator,(const ap_private<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> > + // operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> > + // operator,(_private_range_ref<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> > + // operator,(const _private_bit_ref<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> >( + // const_cast&>(*this), + // const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> > + // operator,(_private_bit_ref<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, 1, + // _private_bit_ref<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + // operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) const { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + // const_cast&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + // operator,(ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + // return ap_concat_ref<_AP_W, ap_private<_AP_W, _AP_S>, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> + // >(*this, + // a2); + // } + // + // template + // INLINE ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + // operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) const { + // return ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // const_cast&>(*this), + // const_cast< + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + // operator,(af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + // &a2) { + // return ap_concat_ref< + // _AP_W, ap_private, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + // >(*this, + // a2); + // } + // + // template + // INLINE + // ap_concat_ref<_AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> > + // operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) const { + // return ap_concat_ref< + // _AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // const_cast&>(*this), + // const_cast&>( + // a2)); + // } + // + // template + // INLINE + // ap_concat_ref<_AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> > + // operator,( + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &a2) { + // return ap_concat_ref< + // _AP_W, ap_private, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >(*this, + // a2); + // } + + INLINE ap_private<_AP_W, false> get() const { + ap_private<_AP_W, false> ret(*this); + return ret; + } + + template INLINE void set(const ap_private<_AP_W3, false> &val) { + operator=(ap_private<_AP_W3, _AP_S>(val)); + } + + /// + /// @name Value Tests + /// + /// This tests the high bit of this ap_private to determine if it is set. + /// @returns true if this ap_private is negative, false otherwise + /// @brief Determine sign of this ap_private. + INLINE bool isNegative() const { + // just for get rid of warnings + enum { shift = (_AP_W - APINT_BITS_PER_WORD * (_AP_N - 1) - 1) }; + static const uint64_t mask = 1ULL << (shift); + return _AP_S && (pVal[_AP_N - 1] & mask); + } + + /// This tests the high bit of the ap_private to determine if it is unset. + /// @brief Determine if this ap_private Value is positive (not negative). + INLINE bool isPositive() const { return !isNegative(); } + + /// This tests if the value of this ap_private is strictly positive (> 0). + /// @returns true if this ap_private is Positive and not zero. + /// @brief Determine if this ap_private Value is strictly positive. + INLINE bool isStrictlyPositive() const { + return isPositive() && (*this) != 0; + } + + /// This checks to see if the value has all bits of the ap_private are set or + /// not. + /// @brief Determine if all bits are set + INLINE bool isAllOnesValue() const { return countPopulation() == _AP_W; } + + /// This checks to see if the value of this ap_private is the maximum unsigned + /// value for the ap_private's bit width. + /// @brief Determine if this is the largest unsigned value. + INLINE bool isMaxValue() const { return countPopulation() == _AP_W; } + + /// This checks to see if the value of this ap_private is the maximum signed + /// value for the ap_private's bit width. + /// @brief Determine if this is the largest signed value. + INLINE bool isMaxSignedValue() const { + return !isNegative() && countPopulation() == _AP_W - 1; + } + + /// This checks to see if the value of this ap_private is the minimum unsigned + /// value for the ap_private's bit width. + /// @brief Determine if this is the smallest unsigned value. + INLINE bool isMinValue() const { return countPopulation() == 0; } + + /// This checks to see if the value of this ap_private is the minimum signed + /// value for the ap_private's bit width. + /// @brief Determine if this is the smallest signed value. + INLINE bool isMinSignedValue() const { + return isNegative() && countPopulation() == 1; + } + + /// This function returns a pointer to the internal storage of the ap_private. + /// This is useful for writing out the ap_private in binary form without any + /// conversions. + INLINE const uint64_t *getRawData() const { return &pVal[0]; } + + // Square Root - this method computes and returns the square root of "this". + // Three mechanisms are used for computation. For small values (<= 5 bits), + // a table lookup is done. This gets some performance for common cases. For + // values using less than 52 bits, the value is converted to double and then + // the libc sqrt function is called. The result is rounded and then converted + // back to a uint64_t which is then used to construct the result. Finally, + // the Babylonian method for computing square roots is used. + INLINE ap_private sqrt() const { + // Determine the magnitude of the value. + uint32_t magnitude = getActiveBits(); + + // Use a fast table for some small values. This also gets rid of some + // rounding errors in libc sqrt for small values. + if (magnitude <= 5) { + static const uint8_t results[32] = { + /* 0 */ 0, + /* 1- 2 */ 1, 1, + /* 3- 6 */ 2, 2, 2, 2, + /* 7-12 */ 3, 3, 3, 3, 3, 3, + /* 13-20 */ 4, 4, 4, 4, 4, 4, 4, 4, + /* 21-30 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + /* 31 */ 6}; + return ap_private<_AP_W, _AP_S>(/*BitWidth,*/ results[get_VAL()]); + } + + // If the magnitude of the value fits in less than 52 bits (the precision of + // an IEEE double precision floating point value), then we can use the + // libc sqrt function which will probably use a hardware sqrt computation. + // This should be faster than the algorithm below. + if (magnitude < 52) { +#ifdef _MSC_VER + // Amazingly, VC++ doesn't have round(). + return ap_private<_AP_W, _AP_S>(/*BitWidth,*/ + uint64_t(::sqrt(double(get_VAL()))) + + 0.5); +#else + return ap_private<_AP_W, _AP_S>(/*BitWidth,*/ + uint64_t( + ::round(::sqrt(double(get_VAL()))))); +#endif + } + + // Okay, all the short cuts are exhausted. We must compute it. The following + // is a classical Babylonian method for computing the square root. This code + // was adapted to APINt from a wikipedia article on such computations. + // See http://www.wikipedia.org/ and go to the page named + // Calculate_an_integer_square_root. + uint32_t nbits = BitWidth, i = 4; + ap_private<_AP_W, _AP_S> testy(16); + ap_private<_AP_W, _AP_S> x_old(/*BitWidth,*/ 1); + ap_private<_AP_W, _AP_S> x_new(0); + ap_private<_AP_W, _AP_S> two(/*BitWidth,*/ 2); + + // Select a good starting value using binary logarithms. + for (;; i += 2, testy = testy.shl(2)) + if (i >= nbits || this->ule(testy)) { + x_old = x_old.shl(i / 2); + break; + } + + // Use the Babylonian method to arrive at the integer square root: + for (;;) { + x_new = (this->udiv(x_old) + x_old).udiv(two); + if (x_old.ule(x_new)) + break; + x_old = x_new; + } + + // Make sure we return the closest approximation + // NOTE: The rounding calculation below is correct. It will produce an + // off-by-one discrepancy with results from pari/gp. That discrepancy has + // been + // determined to be a rounding issue with pari/gp as it begins to use a + // floating point representation after 192 bits. There are no discrepancies + // between this algorithm and pari/gp for bit widths < 192 bits. + ap_private<_AP_W, _AP_S> square(x_old * x_old); + ap_private<_AP_W, _AP_S> nextSquare((x_old + 1) * (x_old + 1)); + if (this->ult(square)) + return x_old; + else if (this->ule(nextSquare)) { + ap_private<_AP_W, _AP_S> midpoint((nextSquare - square).udiv(two)); + ap_private<_AP_W, _AP_S> offset(*this - square); + if (offset.ult(midpoint)) + return x_old; + else + return x_old + 1; + } else + assert(0 && "Error in ap_private<_AP_W, _AP_S>::sqrt computation"); + return x_old + 1; + } + + /// + /// @Assignment Operators + /// + /// @returns *this after assignment of RHS. + /// @brief Copy assignment operator. + INLINE ap_private &operator=(const ap_private &RHS) { + if (this != &RHS) + memcpy(pVal, RHS.get_pVal(), _AP_N * APINT_WORD_SIZE); + clearUnusedBits(); + return *this; + } + INLINE ap_private &operator=(const volatile ap_private &RHS) { + if (this != &RHS) + for (int i = 0; i < _AP_N; ++i) + pVal[i] = RHS.get_pVal(i); + clearUnusedBits(); + return *this; + } + INLINE void operator=(const ap_private &RHS) volatile { + if (this != &RHS) + for (int i = 0; i < _AP_N; ++i) + pVal[i] = RHS.get_pVal(i); + clearUnusedBits(); + } + INLINE void operator=(const volatile ap_private &RHS) volatile { + if (this != &RHS) + for (int i = 0; i < _AP_N; ++i) + pVal[i] = RHS.get_pVal(i); + clearUnusedBits(); + } + + template + INLINE ap_private &operator=(const ap_private<_AP_W1, _AP_S1> &RHS) { + if (_AP_S1) + cpSextOrTrunc(RHS); + else + cpZextOrTrunc(RHS); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator=(const volatile ap_private<_AP_W1, _AP_S1> &RHS) { + if (_AP_S1) + cpSextOrTrunc(RHS); + else + cpZextOrTrunc(RHS); + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private &operator=(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + *this = ap_private<_AP_W2, false>(op2); + return *this; + } + +#if 0 + template + INLINE ap_private& operator=(const ap_private<_AP_W1, _AP_S1, true>& RHS) { + static const uint64_t that_sign_ext_mask = (_AP_W1==APINT_BITS_PER_WORD)?0:~0ULL>>(_AP_W1%APINT_BITS_PER_WORD)<<(_AP_W1%APINT_BITS_PER_WORD); + if (RHS.isNegative()) { + pVal[0] = RHS.get_VAL() | that_sign_ext_mask; + memset(pVal+1,~0, APINT_WORD_SIZE*(_AP_N-1)); + } else { + pVal[0] = RHS.get_VAL(); + memset(pVal+1, 0, APINT_WORD_SIZE*(_AP_N-1)); + } + clearUnusedBits(); + return *this; + } + + template + INLINE ap_private& operator=(const volatile ap_private<_AP_W1, _AP_S1, true>& RHS) { + static const uint64_t that_sign_ext_mask = (_AP_W1==APINT_BITS_PER_WORD)?0:~0ULL>>(_AP_W1%APINT_BITS_PER_WORD)<<(_AP_W1%APINT_BITS_PER_WORD); + if (RHS.isNegative()) { + pVal[0] = RHS.get_VAL() | that_sign_ext_mask; + memset(pVal+1,~0, APINT_WORD_SIZE*(_AP_N-1)); + } else { + pVal[0] = RHS.get_VAL(); + memset(pVal+1, 0, APINT_WORD_SIZE*(_AP_N-1)); + } + clearUnusedBits(); + return *this; + } +#endif + +/// from all c types. +#define ASSIGN_OP_FROM_INT(C_TYPE, _AP_W2, _AP_S2) \ + INLINE ap_private &operator=(const C_TYPE rhs) { \ + ap_private<(_AP_W2), (_AP_S2)> tmp = rhs; \ + operator=(tmp); \ + return *this; \ + } + + ASSIGN_OP_FROM_INT(bool, 1, false) + ASSIGN_OP_FROM_INT(char, 8, CHAR_IS_SIGNED) + ASSIGN_OP_FROM_INT(signed char, 8, true) + ASSIGN_OP_FROM_INT(unsigned char, 8, false) + ASSIGN_OP_FROM_INT(short, sizeof(short) * 8, true) + ASSIGN_OP_FROM_INT(unsigned short, sizeof(unsigned short) * 8, false) + ASSIGN_OP_FROM_INT(int, sizeof(int) * 8, true) + ASSIGN_OP_FROM_INT(unsigned int, sizeof(unsigned int) * 8, false) + ASSIGN_OP_FROM_INT(long, sizeof(long) * 8, true) + ASSIGN_OP_FROM_INT(unsigned long, sizeof(unsigned long) * 8, false) + ASSIGN_OP_FROM_INT(ap_slong, sizeof(ap_slong) * 8, true) + ASSIGN_OP_FROM_INT(ap_ulong, sizeof(ap_ulong) * 8, false) +#undef ASSIGN_OP_FROM_INT + + /// from c string. + // XXX this is a must, to prevent pointer being converted to bool. + INLINE ap_private &operator=(const char *s) { + ap_private tmp(s); // XXX direct initialization, as ctor is explicit. + operator=(tmp); + return *this; + } + + /// + /// @name Unary Operators + /// + /// @returns a new ap_private value representing *this incremented by one + /// @brief Postfix increment operator. + INLINE const ap_private operator++(int) { + ap_private API(*this); + ++(*this); + return API; + } + + /// @returns *this incremented by one + /// @brief Prefix increment operator. + INLINE ap_private &operator++() { + ap_private_ops::add_1(pVal, pVal, _AP_N, 1); + clearUnusedBits(); + return *this; + } + + /// @returns a new ap_private representing *this decremented by one. + /// @brief Postfix decrement operator. + INLINE const ap_private operator--(int) { + ap_private API(*this); + --(*this); + return API; + } + + /// @returns *this decremented by one. + /// @brief Prefix decrement operator. + INLINE ap_private &operator--() { + ap_private_ops::sub_1(pVal, _AP_N, 1); + clearUnusedBits(); + return *this; + } + + /// Performs a bitwise complement operation on this ap_private. + /// @returns an ap_private that is the bitwise complement of *this + /// @brief Unary bitwise complement operator. + INLINE ap_private<_AP_W + !_AP_S, true> operator~() const { + ap_private<_AP_W + !_AP_S, true> Result(*this); + Result.flip(); + return Result; + } + + /// Negates *this using two's complement logic. + /// @returns An ap_private value representing the negation of *this. + /// @brief Unary negation operator + INLINE typename RType<1, false>::minus operator-() const { + return ap_private<1, false>(0) - (*this); + } + + /// Performs logical negation operation on this ap_private. + /// @returns true if *this is zero, false otherwise. + /// @brief Logical negation operator. + INLINE bool operator!() const { + for (int i = 0; i < _AP_N; ++i) + if (pVal[i]) + return false; + return true; + } + + template + INLINE ap_private<_AP_W, _AP_S || _AP_S1> + And(const ap_private<_AP_W, _AP_S1> &RHS) const { + return this->operator&(RHS); + } + template + INLINE ap_private Or(const ap_private<_AP_W, _AP_S1> &RHS) const { + return this->operator|(RHS); + } + template + INLINE ap_private Xor(const ap_private<_AP_W, _AP_S1> &RHS) const { + return this->operator^(RHS); + } + + INLINE ap_private Mul(const ap_private &RHS) const { + ap_private Result(*this); + Result *= RHS; + return Result; + } + + INLINE ap_private Add(const ap_private &RHS) const { + ap_private Result(0); + ap_private_ops::add(Result.get_pVal(), pVal, RHS.get_pVal(), _AP_N, _AP_N, + _AP_N, _AP_S, _AP_S); + Result.clearUnusedBits(); + return Result; + } + + INLINE ap_private Sub(const ap_private &RHS) const { + ap_private Result(0); + ap_private_ops::sub(Result.get_pVal(), pVal, RHS.get_pVal(), _AP_N, _AP_N, + _AP_N, _AP_S, _AP_S); + Result.clearUnusedBits(); + return Result; + } + + /// Arithmetic right-shift this ap_private by shiftAmt. + /// @brief Arithmetic right-shift function. + INLINE ap_private ashr(uint32_t shiftAmt) const { + assert(shiftAmt <= BitWidth && "Invalid shift amount, too big"); + // Handle a degenerate case + if (shiftAmt == 0) + return ap_private(*this); + + // If all the bits were shifted out, the result is, technically, undefined. + // We return -1 if it was negative, 0 otherwise. We check this early to + // avoid + // issues in the algorithm below. + if (shiftAmt == BitWidth) { + if (isNegative()) + return ap_private(-1); + else + return ap_private(0); + } + + // Create some space for the result. + ap_private Retval(0); + uint64_t *val = Retval.get_pVal(); + + // Compute some values needed by the following shift algorithms + uint32_t wordShift = + shiftAmt % APINT_BITS_PER_WORD; // bits to shift per word + uint32_t offset = shiftAmt / APINT_BITS_PER_WORD; // word offset for shift + uint32_t breakWord = _AP_N - 1 - offset; // last word affected + uint32_t bitsInWord = whichBit(BitWidth); // how many bits in last word? + if (bitsInWord == 0) + bitsInWord = APINT_BITS_PER_WORD; + + // If we are shifting whole words, just move whole words + if (wordShift == 0) { + // Move the words containing significant bits + for (uint32_t i = 0; i <= breakWord; ++i) + val[i] = pVal[i + offset]; // move whole word + + // Adjust the top significant word for sign bit fill, if negative + if (isNegative()) + if (bitsInWord < APINT_BITS_PER_WORD) + val[breakWord] |= ~0ULL << (bitsInWord); // set high bits + } else { + // Shift the low order words + for (uint32_t i = 0; i < breakWord; ++i) { + // This combines the shifted corresponding word with the low bits from + // the next word (shifted into this word's high bits). + val[i] = ((pVal[i + offset]) >> (wordShift)); + val[i] |= ((pVal[i + offset + 1]) << (APINT_BITS_PER_WORD - wordShift)); + } + + // Shift the break word. In this case there are no bits from the next word + // to include in this word. + val[breakWord] = (pVal[breakWord + offset]) >> (wordShift); + + // Deal with sign extenstion in the break word, and possibly the word + // before + // it. + if (isNegative()) { + if (wordShift > bitsInWord) { + if (breakWord > 0) + val[breakWord - 1] |= + ~0ULL << (APINT_BITS_PER_WORD - (wordShift - bitsInWord)); + val[breakWord] |= ~0ULL; + } else + val[breakWord] |= (~0ULL << (bitsInWord - wordShift)); + } + } + + // Remaining words are 0 or -1, just assign them. + uint64_t fillValue = (isNegative() ? ~0ULL : 0); + for (int i = breakWord + 1; i < _AP_N; ++i) + val[i] = fillValue; + Retval.clearUnusedBits(); + return Retval; + } + + /// Logical right-shift this ap_private by shiftAmt. + /// @brief Logical right-shift function. + INLINE ap_private lshr(uint32_t shiftAmt) const { + // If all the bits were shifted out, the result is 0. This avoids issues + // with shifting by the size of the integer type, which produces undefined + // results. We define these "undefined results" to always be 0. + if (shiftAmt == BitWidth) + return ap_private(0); + + // If none of the bits are shifted out, the result is *this. This avoids + // issues with shifting byt he size of the integer type, which produces + // undefined results in the code below. This is also an optimization. + if (shiftAmt == 0) + return ap_private(*this); + + // Create some space for the result. + ap_private Retval(0); + uint64_t *val = Retval.get_pVal(); + + // If we are shifting less than a word, compute the shift with a simple + // carry + if (shiftAmt < APINT_BITS_PER_WORD) { + uint64_t carry = 0; + for (int i = _AP_N - 1; i >= 0; --i) { + val[i] = ((pVal[i]) >> (shiftAmt)) | carry; + carry = (pVal[i]) << (APINT_BITS_PER_WORD - shiftAmt); + } + Retval.clearUnusedBits(); + return Retval; + } + + // Compute some values needed by the remaining shift algorithms + uint32_t wordShift = shiftAmt % APINT_BITS_PER_WORD; + uint32_t offset = shiftAmt / APINT_BITS_PER_WORD; + + // If we are shifting whole words, just move whole words + if (wordShift == 0) { + for (uint32_t i = 0; i < _AP_N - offset; ++i) + val[i] = pVal[i + offset]; + for (uint32_t i = _AP_N - offset; i < _AP_N; i++) + val[i] = 0; + Retval.clearUnusedBits(); + return Retval; + } + + // Shift the low order words + uint32_t breakWord = _AP_N - offset - 1; + for (uint32_t i = 0; i < breakWord; ++i) + val[i] = ((pVal[i + offset]) >> (wordShift)) | + ((pVal[i + offset + 1]) << (APINT_BITS_PER_WORD - wordShift)); + // Shift the break word. + val[breakWord] = (pVal[breakWord + offset]) >> (wordShift); + + // Remaining words are 0 + for (int i = breakWord + 1; i < _AP_N; ++i) + val[i] = 0; + Retval.clearUnusedBits(); + return Retval; + } + + /// Left-shift this ap_private by shiftAmt. + /// @brief Left-shift function. + INLINE ap_private shl(uint32_t shiftAmt) const { + assert(shiftAmt <= BitWidth && "Invalid shift amount, too big"); + // If all the bits were shifted out, the result is 0. This avoids issues + // with shifting by the size of the integer type, which produces undefined + // results. We define these "undefined results" to always be 0. + if (shiftAmt == BitWidth) + return ap_private(0); + + // If none of the bits are shifted out, the result is *this. This avoids a + // lshr by the words size in the loop below which can produce incorrect + // results. It also avoids the expensive computation below for a common + // case. + if (shiftAmt == 0) + return ap_private(*this); + + // Create some space for the result. + ap_private Retval(0); + uint64_t *val = Retval.get_pVal(); + // If we are shifting less than a word, do it the easy way + if (shiftAmt < APINT_BITS_PER_WORD) { + uint64_t carry = 0; + for (int i = 0; i < _AP_N; i++) { + val[i] = ((pVal[i]) << (shiftAmt)) | carry; + carry = (pVal[i]) >> (APINT_BITS_PER_WORD - shiftAmt); + } + Retval.clearUnusedBits(); + return Retval; + } + + // Compute some values needed by the remaining shift algorithms + uint32_t wordShift = shiftAmt % APINT_BITS_PER_WORD; + uint32_t offset = shiftAmt / APINT_BITS_PER_WORD; + + // If we are shifting whole words, just move whole words + if (wordShift == 0) { + for (uint32_t i = 0; i < offset; i++) + val[i] = 0; + for (int i = offset; i < _AP_N; i++) + val[i] = pVal[i - offset]; + Retval.clearUnusedBits(); + return Retval; + } + + // Copy whole words from this to Result. + uint32_t i = _AP_N - 1; + for (; i > offset; --i) + val[i] = (pVal[i - offset]) << (wordShift) | + (pVal[i - offset - 1]) >> (APINT_BITS_PER_WORD - wordShift); + val[offset] = (pVal[0]) << (wordShift); + for (i = 0; i < offset; ++i) + val[i] = 0; + Retval.clearUnusedBits(); + return Retval; + } + + INLINE ap_private rotl(uint32_t rotateAmt) const { + if (rotateAmt == 0) + return ap_private(*this); + // Don't get too fancy, just use existing shift/or facilities + ap_private hi(*this); + ap_private lo(*this); + hi.shl(rotateAmt); + lo.lshr(BitWidth - rotateAmt); + return hi | lo; + } + + INLINE ap_private rotr(uint32_t rotateAmt) const { + if (rotateAmt == 0) + return ap_private(*this); + // Don't get too fancy, just use existing shift/or facilities + ap_private hi(*this); + ap_private lo(*this); + lo.lshr(rotateAmt); + hi.shl(BitWidth - rotateAmt); + return hi | lo; + } + + /// Perform an unsigned divide operation on this ap_private by RHS. Both this + /// and + /// RHS are treated as unsigned quantities for purposes of this division. + /// @returns a new ap_private value containing the division result + /// @brief Unsigned division operation. + INLINE ap_private udiv(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + // Get some facts about the LHS and RHS number of bits and words + uint32_t rhsBits = RHS_.getActiveBits(); + uint32_t rhsWords = !rhsBits ? 0 : (whichWord(rhsBits - 1) + 1); + assert(rhsWords && "Divided by zero???"); + uint32_t lhsBits = LHS_.getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : (whichWord(lhsBits - 1) + 1); + + // Deal with some degenerate cases + if (!lhsWords) + // 0 / X ===> 0 + return ap_private(0); + else if (lhsWords < rhsWords || LHS_.ult(RHS_)) { + // X / Y ===> 0, iff X < Y + return ap_private(0); + } else if (LHS_ == RHS_) { + // X / X ===> 1 + return ap_private(1); + } else if (lhsWords == 1 && rhsWords == 1) { + // All high words are zero, just use native divide + return ap_private(LHS_.get_pVal(0) / RHS_.get_pVal(0)); + } + + // We have to compute it the hard way. Invoke the Knuth divide algorithm. + ap_private Quotient(0); // to hold result. + ap_private_ops::divide(LHS_, lhsWords, RHS_, rhsWords, &Quotient, + (ap_private *)0); + return Quotient; + } + + /// Signed divide this ap_private by ap_private RHS. + /// @brief Signed division function for ap_private. + INLINE ap_private sdiv(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + if (LHS_.isNegative()) + if (RHS_.isNegative()) + return (-LHS_).udiv(-RHS_); + else + return -((-LHS_).udiv(RHS_)); + else if (RHS_.isNegative()) + return -(LHS_.udiv((ap_private)(-RHS_))); + return LHS_.udiv(RHS_); + } + + /// Perform an unsigned remainder operation on this ap_private with RHS being + /// the + /// divisor. Both this and RHS are treated as unsigned quantities for purposes + /// of this operation. Note that this is a true remainder operation and not + /// a modulo operation because the sign follows the sign of the dividend + /// which is *this. + /// @returns a new ap_private value containing the remainder result + /// @brief Unsigned remainder operation. + INLINE ap_private urem(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + // Get some facts about the LHS + uint32_t lhsBits = LHS_.getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : (whichWord(lhsBits - 1) + 1); + + // Get some facts about the RHS + uint32_t rhsBits = RHS_.getActiveBits(); + uint32_t rhsWords = !rhsBits ? 0 : (whichWord(rhsBits - 1) + 1); + assert(rhsWords && "Performing remainder operation by zero ???"); + + // Check the degenerate cases + if (lhsWords == 0) { + // 0 % Y ===> 0 + return ap_private(0); + } else if (lhsWords < rhsWords || LHS_.ult(RHS_)) { + // X % Y ===> X, iff X < Y + return LHS_; + } else if (LHS_ == RHS_) { + // X % X == 0; + return ap_private(0); + } else if (lhsWords == 1) { + // All high words are zero, just use native remainder + return ap_private(LHS_.get_pVal(0) % RHS_.get_pVal(0)); + } + + // We have to compute it the hard way. Invoke the Knuth divide algorithm. + ap_private Remainder(0); + ap_private_ops::divide(LHS_, lhsWords, RHS_, rhsWords, (ap_private *)(0), + &Remainder); + return Remainder; + } + + INLINE ap_private urem(uint64_t RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + // Get some facts about the LHS + uint32_t lhsBits = LHS_.getActiveBits(); + uint32_t lhsWords = !lhsBits ? 0 : (whichWord(lhsBits - 1) + 1); + // Get some facts about the RHS + uint32_t rhsWords = 1; //! rhsBits ? 0 : (ap_private<_AP_W, + //! _AP_S>::whichWord(rhsBits - 1) + 1); + assert(rhsWords && "Performing remainder operation by zero ???"); + // Check the degenerate cases + if (lhsWords == 0) { + // 0 % Y ===> 0 + return ap_private(0); + } else if (lhsWords < rhsWords || LHS_.ult(RHS)) { + // X % Y ===> X, iff X < Y + return *this; + } else if (LHS_ == RHS) { + // X % X == 0; + return ap_private(0); + } else if (lhsWords == 1) { + // All high words are zero, just use native remainder + return ap_private(LHS_.get_pVal(0) % RHS); + } + + // We have to compute it the hard way. Invoke the Knuth divide algorithm. + ap_private Remainder(0); + divide(LHS_, lhsWords, RHS, (ap_private *)(0), &Remainder); + return Remainder; + } + + /// Signed remainder operation on ap_private. + /// @brief Function for signed remainder operation. + INLINE ap_private srem(const ap_private &RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private RHS_(RHS); + RHS_.clearUnusedBits(); + + if (LHS_.isNegative()) { + ap_private lhs = -LHS_; + if (RHS_.isNegative()) { + ap_private rhs = -RHS_; + return -(lhs.urem(rhs)); + } else + return -(lhs.urem(RHS_)); + } else if (RHS_.isNegative()) { + ap_private rhs = -RHS_; + return LHS_.urem(rhs); + } + return LHS_.urem(RHS); + } + + /// Signed remainder operation on ap_private. + /// @brief Function for signed remainder operation. + INLINE ap_private srem(int64_t RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + if (LHS_.isNegative()) + if (RHS < 0) + return -((-LHS_).urem(-RHS)); + else + return -((-LHS_).urem(RHS)); + else if (RHS < 0) + return LHS_.urem(-RHS); + return LHS_.urem(RHS); + } + + /// Compares this ap_private with RHS for the validity of the equality + /// relationship. + /// @returns true if *this == Val + /// @brief Equality comparison. + template + INLINE bool eq(const ap_private<_AP_W, _AP_S1> &RHS) const { + return (*this) == RHS; + } + + /// Compares this ap_private with RHS for the validity of the inequality + /// relationship. + /// @returns true if *this != Val + /// @brief Inequality comparison + template + INLINE bool ne(const ap_private<_AP_W, _AP_S1> &RHS) const { + return !((*this) == RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the less-than relationship. + /// @returns true if *this < RHS when both are considered unsigned. + /// @brief Unsigned less than comparison + template + INLINE bool ult(const ap_private<_AP_W, _AP_S1> &RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + ap_private<_AP_W, _AP_S1> RHS_(RHS); + RHS_.clearUnusedBits(); + + // Get active bit length of both operands + uint32_t n1 = LHS_.getActiveBits(); + uint32_t n2 = RHS_.getActiveBits(); + + // If magnitude of LHS is less than RHS, return true. + if (n1 < n2) + return true; + + // If magnitude of RHS is greather than LHS, return false. + if (n2 < n1) + return false; + + // If they bot fit in a word, just compare the low order word + if (n1 <= APINT_BITS_PER_WORD && n2 <= APINT_BITS_PER_WORD) + return LHS_.get_pVal(0) < RHS_.get_pVal(0); + + // Otherwise, compare all words + uint32_t topWord = whichWord(AESL_std::max(n1, n2) - 1); + for (int i = topWord; i >= 0; --i) { + if (LHS_.get_pVal(i) > RHS_.get_pVal(i)) + return false; + if (LHS_.get_pVal(i) < RHS_.get_pVal(i)) + return true; + } + return false; + } + + INLINE bool ult(uint64_t RHS) const { + ap_private<_AP_W, _AP_S, false> LHS_(*this); + LHS_.clearUnusedBits(); + + // Get active bit length of both operands + uint32_t n1 = LHS_.getActiveBits(); + uint32_t n2 = + 64 - ap_private_ops::CountLeadingZeros_64(RHS); // RHS.getActiveBits(); + + // If magnitude of LHS is less than RHS, return true. + if (n1 < n2) + return true; + + // If magnitude of RHS is greather than LHS, return false. + if (n2 < n1) + return false; + + // If they bot fit in a word, just compare the low order word + if (n1 <= APINT_BITS_PER_WORD && n2 <= APINT_BITS_PER_WORD) + return LHS_.get_pVal(0) < RHS; + assert(0); + } + + template + INLINE bool slt(const ap_private<_AP_W, _AP_S1> &RHS) const { + ap_private lhs(*this); + ap_private<_AP_W, _AP_S1> rhs(RHS); + bool lhsNeg = isNegative(); + bool rhsNeg = rhs.isNegative(); + if (lhsNeg) { + // Sign bit is set so perform two's complement to make it positive + lhs.flip(); + lhs++; + } + if (rhsNeg) { + // Sign bit is set so perform two's complement to make it positive + rhs.flip(); + rhs++; + } + + // Now we have unsigned values to compare so do the comparison if necessary + // based on the negativeness of the values. + if (lhsNeg) + if (rhsNeg) + return lhs.ugt(rhs); + else + return true; + else if (rhsNeg) + return false; + else + return lhs.ult(rhs); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered unsigned. + /// @brief Unsigned less or equal comparison + template + INLINE bool ule(const ap_private<_AP_W, _AP_S1> &RHS) const { + return ult(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the less-or-equal relationship. + /// @returns true if *this <= RHS when both are considered signed. + /// @brief Signed less or equal comparison + template + INLINE bool sle(const ap_private<_AP_W, _AP_S1> &RHS) const { + return slt(RHS) || eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered unsigned. + /// @brief Unsigned greather than comparison + template + INLINE bool ugt(const ap_private<_AP_W, _AP_S1> &RHS) const { + return !ult(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// the validity of the greater-than relationship. + /// @returns true if *this > RHS when both are considered signed. + /// @brief Signed greather than comparison + template + INLINE bool sgt(const ap_private<_AP_W, _AP_S1> &RHS) const { + return !slt(RHS) && !eq(RHS); + } + + /// Regards both *this and RHS as unsigned quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered unsigned. + /// @brief Unsigned greater or equal comparison + template + INLINE bool uge(const ap_private<_AP_W, _AP_S> &RHS) const { + return !ult(RHS); + } + + /// Regards both *this and RHS as signed quantities and compares them for + /// validity of the greater-or-equal relationship. + /// @returns true if *this >= RHS when both are considered signed. + /// @brief Signed greather or equal comparison + template + INLINE bool sge(const ap_private<_AP_W, _AP_S1> &RHS) const { + return !slt(RHS); + } + + // Sign extend to a new width. + template + INLINE void cpSext(const ap_private<_AP_W1, _AP_S1> &that) { + assert(_AP_W1 < BitWidth && "Invalid ap_private SignExtend request"); + assert(_AP_W1 <= MAX_INT_BITS && "Too many bits"); + // If the sign bit isn't set, this is the same as zext. + if (!that.isNegative()) { + cpZext(that); + return; + } + + // The sign bit is set. First, get some facts + enum { wordBits = _AP_W1 % APINT_BITS_PER_WORD }; + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + // Mask the high order word appropriately + if (_AP_N1 == _AP_N) { + enum { newWordBits = _AP_W % APINT_BITS_PER_WORD }; + // The extension is contained to the wordsBefore-1th word. + static const uint64_t mask = wordBits ? (~0ULL << (wordBits)) : 0ULL; + for (int i = 0; i < _AP_N; ++i) + pVal[i] = that.get_pVal(i); + pVal[_AP_N - 1] |= mask; + return; + } + + enum { newWordBits = _AP_W % APINT_BITS_PER_WORD }; + // The extension is contained to the wordsBefore-1th word. + static const uint64_t mask = wordBits ? (~0ULL << (wordBits)) : 0ULL; + int i; + for (i = 0; i < _AP_N1; ++i) + pVal[i] = that.get_pVal(i); + pVal[i - 1] |= mask; + for (; i < _AP_N - 1; i++) + pVal[i] = ~0ULL; + pVal[i] = ~0ULL; + clearUnusedBits(); + return; + } + + // Zero extend to a new width. + template + INLINE void cpZext(const ap_private<_AP_W1, _AP_S1> &that) { + assert(_AP_W1 < BitWidth && "Invalid ap_private ZeroExtend request"); + assert(_AP_W1 <= MAX_INT_BITS && "Too many bits"); + const int _AP_N1 = ap_private<_AP_W1, _AP_S1>::_AP_N; + const uint64_t mask = ap_private<_AP_W1, _AP_S1>::mask; + int i = 0; + for (; i < _AP_N1; ++i) + pVal[i] = that.get_pVal(i); + pVal[i - 1] &= mask; + for (; i < _AP_N; ++i) + pVal[i] = 0; + clearUnusedBits(); + } + + template + INLINE void cpZextOrTrunc(const ap_private<_AP_W1, _AP_S1> &that) { + if (BitWidth > _AP_W1) + cpZext(that); + else { + for (int i = 0; i < _AP_N; ++i) + pVal[i] = that.get_pVal(i); + clearUnusedBits(); + } + } + + template + INLINE void cpSextOrTrunc(const ap_private<_AP_W1, _AP_S1> &that) { + if (BitWidth > _AP_W1) + cpSext(that); + else { + for (int i = 0; i < _AP_N; ++i) + pVal[i] = that.get_pVal(i); + clearUnusedBits(); + } + } + + /// @} + /// @name Value Characterization Functions + /// @{ + + /// @returns the total number of bits. + INLINE uint32_t getBitWidth() const { return BitWidth; } + + /// Here one word's bitwidth equals to that of uint64_t. + /// @returns the number of words to hold the integer value of this ap_private. + /// @brief Get the number of words. + INLINE uint32_t getNumWords() const { + return (BitWidth + APINT_BITS_PER_WORD - 1) / APINT_BITS_PER_WORD; + } + + /// This function returns the number of active bits which is defined as the + /// bit width minus the number of leading zeros. This is used in several + /// computations to see how "wide" the value is. + /// @brief Compute the number of active bits in the value + INLINE uint32_t getActiveBits() const { + uint32_t bits = BitWidth - countLeadingZeros(); + return bits ? bits : 1; + } + + /// This method attempts to return the value of this ap_private as a zero + /// extended + /// uint64_t. The bitwidth must be <= 64 or the value must fit within a + /// uint64_t. Otherwise an assertion will result. + /// @brief Get zero extended value + INLINE uint64_t getZExtValue() const { + assert(getActiveBits() <= 64 && "Too many bits for uint64_t"); + return *pVal; + } + + /// This method attempts to return the value of this ap_private as a sign + /// extended + /// int64_t. The bit width must be <= 64 or the value must fit within an + /// int64_t. Otherwise an assertion will result. + /// @brief Get sign extended value + INLINE int64_t getSExtValue() const { + assert(getActiveBits() <= 64 && "Too many bits for int64_t"); + return int64_t(pVal[0]); + } + + /// This method determines how many bits are required to hold the ap_private + /// equivalent of the string given by \p str of length \p slen. + /// @brief Get bits required for string value. + INLINE static uint32_t getBitsNeeded(const char *str, uint32_t slen, + uint8_t radix) { + assert(str != 0 && "Invalid value string"); + assert(slen > 0 && "Invalid string length"); + + // Each computation below needs to know if its negative + uint32_t isNegative = str[0] == '-'; + if (isNegative) { + slen--; + str++; + } + // For radixes of power-of-two values, the bits required is accurately and + // easily computed + if (radix == 2) + return slen + isNegative; + if (radix == 8) + return slen * 3 + isNegative; + if (radix == 16) + return slen * 4 + isNegative; + + // Otherwise it must be radix == 10, the hard case + assert(radix == 10 && "Invalid radix"); + + // Convert to the actual binary value. + // ap_private<_AP_W, _AP_S> tmp(sufficient, str, slen, radix); + + // Compute how many bits are required. + // return isNegative + tmp.logBase2() + 1; + return isNegative + slen * 4; + } + + /// countLeadingZeros - This function is an ap_private version of the + /// countLeadingZeros_{32,64} functions in MathExtras.h. It counts the number + /// of zeros from the most significant bit to the first one bit. + /// @returns BitWidth if the value is zero. + /// @returns the number of zeros from the most significant bit to the first + /// one bits. + INLINE uint32_t countLeadingZeros() const { + enum { + msw_bits = (BitWidth % APINT_BITS_PER_WORD) + ? (BitWidth % APINT_BITS_PER_WORD) + : APINT_BITS_PER_WORD, + excessBits = APINT_BITS_PER_WORD - msw_bits + }; + uint32_t Count = ap_private_ops::CountLeadingZeros_64(pVal[_AP_N - 1]); + if (Count >= excessBits) + Count -= excessBits; + if (!pVal[_AP_N - 1]) { + for (int i = _AP_N - 1; i; --i) { + if (!pVal[i - 1]) + Count += APINT_BITS_PER_WORD; + else { + Count += ap_private_ops::CountLeadingZeros_64(pVal[i - 1]); + break; + } + } + } + return Count; + } + + /// countLeadingOnes - This function counts the number of contiguous 1 bits + /// in the high order bits. The count stops when the first 0 bit is reached. + /// @returns 0 if the high order bit is not set + /// @returns the number of 1 bits from the most significant to the least + /// @brief Count the number of leading one bits. + INLINE uint32_t countLeadingOnes() const { + if (isSingleWord()) + return countLeadingOnes_64(get_VAL(), APINT_BITS_PER_WORD - BitWidth); + + uint32_t highWordBits = BitWidth % APINT_BITS_PER_WORD; + uint32_t shift = + (highWordBits == 0 ? 0 : APINT_BITS_PER_WORD - highWordBits); + int i = _AP_N - 1; + uint32_t Count = countLeadingOnes_64(get_pVal(i), shift); + if (Count == highWordBits) { + for (i--; i >= 0; --i) { + if (get_pVal(i) == ~0ULL) + Count += APINT_BITS_PER_WORD; + else { + Count += countLeadingOnes_64(get_pVal(i), 0); + break; + } + } + } + return Count; + } + + /// countTrailingZeros - This function is an ap_private version of the + /// countTrailingZoers_{32,64} functions in MathExtras.h. It counts + /// the number of zeros from the least significant bit to the first set bit. + /// @returns BitWidth if the value is zero. + /// @returns the number of zeros from the least significant bit to the first + /// one bit. + /// @brief Count the number of trailing zero bits. + INLINE uint32_t countTrailingZeros() const { + uint32_t Count = 0; + uint32_t i = 0; + for (; i < _AP_N && get_pVal(i) == 0; ++i) + Count += APINT_BITS_PER_WORD; + if (i < _AP_N) + Count += ap_private_ops::CountTrailingZeros_64(get_pVal(i)); + return AESL_std::min(Count, BitWidth); + } + /// countPopulation - This function is an ap_private version of the + /// countPopulation_{32,64} functions in MathExtras.h. It counts the number + /// of 1 bits in the ap_private value. + /// @returns 0 if the value is zero. + /// @returns the number of set bits. + /// @brief Count the number of bits set. + INLINE uint32_t countPopulation() const { + uint32_t Count = 0; + for (int i = 0; i < _AP_N - 1; ++i) + Count += ap_private_ops::CountPopulation_64(pVal[i]); + Count += ap_private_ops::CountPopulation_64(pVal[_AP_N - 1] & mask); + return Count; + } + + /// @} + /// @name Conversion Functions + /// @ + + /// This is used internally to convert an ap_private to a string. + /// @brief Converts an ap_private to a std::string + INLINE std::string toString(uint8_t radix, bool wantSigned) const; + + /// Considers the ap_private to be unsigned and converts it into a string in + /// the + /// radix given. The radix can be 2, 8, 10 or 16. + /// @returns a character interpretation of the ap_private + /// @brief Convert unsigned ap_private to string representation. + INLINE std::string toStringUnsigned(uint8_t radix = 10) const { + return toString(radix, false); + } + + /// Considers the ap_private to be unsigned and converts it into a string in + /// the + /// radix given. The radix can be 2, 8, 10 or 16. + /// @returns a character interpretation of the ap_private + /// @brief Convert unsigned ap_private to string representation. + INLINE std::string toStringSigned(uint8_t radix = 10) const { + return toString(radix, true); + } + + /// @brief Converts this ap_private to a double value. + INLINE double roundToDouble(bool isSigned) const { + // Handle the simple case where the value is contained in one uint64_t. + if (isSingleWord() || getActiveBits() <= APINT_BITS_PER_WORD) { + uint64_t val = pVal[0]; + if (isSigned) { + int64_t sext = ((int64_t(val)) << (64 - BitWidth)) >> (64 - BitWidth); + return double(sext); + } else + return double(val); + } + + // Determine if the value is negative. + bool isNeg = isSigned ? (*this)[BitWidth - 1] : false; + + // Construct the absolute value if we're negative. + ap_private<_AP_W, _AP_S> Tmp(isNeg ? -(*this) : (*this)); + + // Figure out how many bits we're using. + uint32_t n = Tmp.getActiveBits(); + + // The exponent (without bias normalization) is just the number of bits + // we are using. Note that the sign bit is gone since we constructed the + // absolute value. + uint64_t exp = n; + + // Return infinity for exponent overflow + if (exp > 1023) { + if (!isSigned || !isNeg) + return std::numeric_limits::infinity(); + else + return -std::numeric_limits::infinity(); + } + exp += 1023; // Increment for 1023 bias + + // Number of bits in mantissa is 52. To obtain the mantissa value, we must + // extract the high 52 bits from the correct words in pVal. + uint64_t mantissa; + unsigned hiWord = whichWord(n - 1); + if (hiWord == 0) { + mantissa = Tmp.get_pVal(0); + if (n > 52) + (mantissa) >>= (n - 52); // shift down, we want the top 52 bits. + } else { + assert(hiWord > 0 && "High word is negative?"); + uint64_t hibits = (Tmp.get_pVal(hiWord)) + << (52 - n % APINT_BITS_PER_WORD); + uint64_t lobits = + (Tmp.get_pVal(hiWord - 1)) >> (11 + n % APINT_BITS_PER_WORD); + mantissa = hibits | lobits; + } + + // The leading bit of mantissa is implicit, so get rid of it. + uint64_t sign = isNeg ? (1ULL << (APINT_BITS_PER_WORD - 1)) : 0; + union { + double __D; + uint64_t __I; + } __T; + __T.__I = sign | ((exp) << 52) | mantissa; + return __T.__D; + } + + /// @brief Converts this unsigned ap_private to a double value. + INLINE double roundToDouble() const { return roundToDouble(false); } + + /// @brief Converts this signed ap_private to a double value. + INLINE double signedRoundToDouble() const { return roundToDouble(true); } + + /// The conversion does not do a translation from integer to double, it just + /// re-interprets the bits as a double. Note that it is valid to do this on + /// any bit width. Exactly 64 bits will be translated. + /// @brief Converts ap_private bits to a double + INLINE double bitsToDouble() const { + union { + uint64_t __I; + double __D; + } __T; + __T.__I = pVal[0]; + return __T.__D; + } + + /// The conversion does not do a translation from integer to float, it just + /// re-interprets the bits as a float. Note that it is valid to do this on + /// any bit width. Exactly 32 bits will be translated. + /// @brief Converts ap_private bits to a double + INLINE float bitsToFloat() const { + union { + uint32_t __I; + float __F; + } __T; + __T.__I = uint32_t(pVal[0]); + return __T.__F; + } + + /// The conversion does not do a translation from double to integer, it just + /// re-interprets the bits of the double. Note that it is valid to do this on + /// any bit width but bits from V may get truncated. + /// @brief Converts a double to ap_private bits. + INLINE ap_private &doubleToBits(double __V) { + union { + uint64_t __I; + double __D; + } __T; + __T.__D = __V; + pVal[0] = __T.__I; + return *this; + } + + /// The conversion does not do a translation from float to integer, it just + /// re-interprets the bits of the float. Note that it is valid to do this on + /// any bit width but bits from V may get truncated. + /// @brief Converts a float to ap_private bits. + INLINE ap_private &floatToBits(float __V) { + union { + uint32_t __I; + float __F; + } __T; + __T.__F = __V; + pVal[0] = __T.__I; + } + + // Reduce operation + //----------------------------------------------------------- + INLINE bool and_reduce() const { return isMaxValue(); } + + INLINE bool nand_reduce() const { return isMinValue(); } + + INLINE bool or_reduce() const { return (bool)countPopulation(); } + + INLINE bool nor_reduce() const { return countPopulation() == 0; } + + INLINE bool xor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? true : false; + } + + INLINE bool xnor_reduce() const { + unsigned int i = countPopulation(); + return (i % 2) ? false : true; + } + INLINE std::string to_string(uint8_t radix = 16, bool sign = false) const { + return toString(radix, radix == 10 ? _AP_S : sign); + } +}; // End of class ap_private <_AP_W, _AP_S, false> + +namespace ap_private_ops { + +enum { APINT_BITS_PER_WORD = 64 }; +template +INLINE bool operator==(uint64_t V1, const ap_private<_AP_W, _AP_S> &V2) { + return V2 == V1; +} + +template +INLINE bool operator!=(uint64_t V1, const ap_private<_AP_W, _AP_S> &V2) { + return V2 != V1; +} + +template +INLINE bool get(const ap_private<_AP_W, _AP_S> &a) { + static const uint64_t mask = 1ULL << (index & 0x3f); + return ((mask & a.get_pVal((index) >> 6)) != 0); +} + +template +INLINE void set(ap_private<_AP_W, _AP_S> &a, + const ap_private &mark1 = 0, + const ap_private &mark2 = 0) { + enum { + APINT_BITS_PER_WORD = 64, + lsb_word = lsb_index / APINT_BITS_PER_WORD, + msb_word = msb_index / APINT_BITS_PER_WORD, + msb = msb_index % APINT_BITS_PER_WORD, + lsb = lsb_index % APINT_BITS_PER_WORD + }; + if (msb_word == lsb_word) { + const uint64_t mask = ~0ULL >> + (lsb) << (APINT_BITS_PER_WORD - msb + lsb - 1) >> + (APINT_BITS_PER_WORD - msb - 1); + // a.set_pVal(msb_word, a.get_pVal(msb_word) | mask); + a.get_pVal(msb_word) |= mask; + } else { + const uint64_t lsb_mask = ~0ULL >> (lsb) << (lsb); + const uint64_t msb_mask = ~0ULL << (APINT_BITS_PER_WORD - msb - 1) >> + (APINT_BITS_PER_WORD - msb - 1); + // a.set_pVal(lsb_word, a.get_pVal(lsb_word) | lsb_mask); + a.get_pVal(lsb_word) |= lsb_mask; + for (int i = lsb_word + 1; i < msb_word; i++) { + a.set_pVal(i, ~0ULL); + // a.get_pVal(i)=0; + } + // a.set_pVal(msb_word, a.get_pVal(msb_word) | msb_mask); + + a.get_pVal(msb_word) |= msb_mask; + } + a.clearUnusedBits(); +} + +template +INLINE void clear(ap_private<_AP_W, _AP_S> &a, + const ap_private &mark1 = 0, + const ap_private &mark2 = 0) { + enum { + APINT_BITS_PER_WORD = 64, + lsb_word = lsb_index / APINT_BITS_PER_WORD, + msb_word = msb_index / APINT_BITS_PER_WORD, + msb = msb_index % APINT_BITS_PER_WORD, + lsb = lsb_index % APINT_BITS_PER_WORD + }; + if (msb_word == lsb_word) { + const uint64_t mask = + ~(~0ULL >> (lsb) << (APINT_BITS_PER_WORD - msb + lsb - 1) >> + (APINT_BITS_PER_WORD - msb - 1)); + // a.set_pVal(msb_word, a.get_pVal(msb_word) & mask); + a.get_pVal(msb_word) &= mask; + } else { + const uint64_t lsb_mask = ~(~0ULL >> (lsb) << (lsb)); + const uint64_t msb_mask = ~(~0ULL << (APINT_BITS_PER_WORD - msb - 1) >> + (APINT_BITS_PER_WORD - msb - 1)); + // a.set_pVal(lsb_word, a.get_pVal(lsb_word) & lsb_mask); + a.get_pVal(lsb_word) &= lsb_mask; + for (int i = lsb_word + 1; i < msb_word; i++) { + // a.set_pVal(i, 0); + a.get_pVal(i) = 0; + } + // a.set_pVal(msb_word, a.get_pVal(msb_word) & msb_mask); + a.get_pVal(msb_word) &= msb_mask; + } + a.clearUnusedBits(); +} + +template +INLINE void set(ap_private<_AP_W, _AP_S> &a, + const ap_private &mark = 0) { + enum { APINT_BITS_PER_WORD = 64, word = index / APINT_BITS_PER_WORD }; + static const uint64_t mask = 1ULL << (index % APINT_BITS_PER_WORD); + // a.set_pVal(word, a.get_pVal(word) | mask); + a.get_pVal(word) |= mask; + a.clearUnusedBits(); +} + +template +INLINE void clear(ap_private<_AP_W, _AP_S> &a, + const ap_private &mark = 0) { + enum { APINT_BITS_PER_WORD = 64, word = index / APINT_BITS_PER_WORD }; + static const uint64_t mask = ~(1ULL << (index % APINT_BITS_PER_WORD)); + // a.set_pVal(word, a.get_pVal(word) & mask); + a.get_pVal(word) &= mask; + a.clearUnusedBits(); +} + +} // namespace ap_private_ops + +template +INLINE std::string +ap_private<_AP_W, _AP_S, false>::toString(uint8_t radix, + bool wantSigned) const { + assert((radix == 10 || radix == 8 || radix == 16 || radix == 2) && + "Radix should be 2, 8, 10, or 16!"); + static const char *digits[] = {"0", "1", "2", "3", "4", "5", "6", "7", + "8", "9", "A", "B", "C", "D", "E", "F"}; + std::string result; + + if (radix != 10) { + // For the 2, 8 and 16 bit cases, we can just shift instead of divide + // because the number of bits per digit (1,3 and 4 respectively) divides + // equaly. We just shift until there value is zero. + + // First, check for a zero value and just short circuit the logic below. + if (*this == (uint64_t)(0)) + result = "0"; + else { + ap_private<_AP_W, false> tmp(*this); + size_t insert_at = 0; + bool leading_zero = true; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + tmp.clearUnusedBitsToZero(); + result = "-"; + insert_at = 1; + leading_zero = false; + } + switch (radix) { + case 2: + result += "0b"; + break; + case 8: + result += "0o"; + break; + case 16: + result += "0x"; + break; + default: + assert("invalid radix" && 0); + } + insert_at += 2; + // Just shift tmp right for each digit width until it becomes zero + uint32_t shift = (radix == 16 ? 4 : (radix == 8 ? 3 : 1)); + uint64_t mask = radix - 1; + ap_private<_AP_W, false> zero(0); + unsigned bits = 0; + while (tmp.ne(zero)) { + uint64_t digit = tmp.get_VAL() & mask; + result.insert(insert_at, digits[digit]); + tmp = tmp.lshr(shift); + ++bits; + } + bits *= shift; + if (bits < _AP_W && leading_zero) + result.insert(insert_at, digits[0]); + } + return result; + } + + ap_private<_AP_W, false> tmp(*this); + ap_private<_AP_W, false> divisor(radix); + ap_private<_AP_W, false> zero(0); + size_t insert_at = 0; + if (wantSigned && isNegative()) { + // They want to print the signed version and it is a negative value + // Flip the bits and add one to turn it into the equivalent positive + // value and put a '-' in the result. + tmp.flip(); + tmp++; + tmp.clearUnusedBitsToZero(); + result = "-"; + insert_at = 1; + } + if (tmp == ap_private<_AP_W, false>(0)) + result = "0"; + else + while (tmp.ne(zero)) { + ap_private<_AP_W, false> APdigit(0); + ap_private<_AP_W, false> tmp2(0); + ap_private_ops::divide(tmp, tmp.getNumWords(), divisor, + divisor.getNumWords(), &tmp2, &APdigit); + uint64_t digit = APdigit.getZExtValue(); + assert(digit < radix && "divide failed"); + result.insert(insert_at, digits[digit]); + tmp = tmp2; + } + + return result; +} // End of ap_private<_AP_W, _AP_S, false>::toString() + +template +std::ostream &operator<<(std::ostream &os, const ap_private<_AP_W, _AP_S> &x) { + std::ios_base::fmtflags ff = std::cout.flags(); + if (ff & std::cout.hex) { + os << x.toString(16, false); // don't print sign + } else if (ff & std::cout.oct) { + os << x.toString(8, false); // don't print sign + } else { + os << x.toString(10, _AP_S); + } + return os; +} + +// ------------------------------------------------------------ // +// XXX moved here from ap_int_sim.h XXX // +// ------------------------------------------------------------ // + +/// Concatination reference. +/// Proxy class which allows concatination to be used as rvalue(for reading) and +/// lvalue(for writing) +// ---------------------------------------------------------------- +// template +// struct ap_concat_ref { +//#ifdef _MSC_VER +//#pragma warning(disable : 4521 4522) +//#endif +// enum { +// _AP_WR = _AP_W1 + _AP_W2, +// }; +// _AP_T1& mbv1; +// _AP_T2& mbv2; +// +// INLINE ap_concat_ref(const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& +// ref) +// : mbv1(ref.mbv1), mbv2(ref.mbv2) {} +// +// INLINE ap_concat_ref(_AP_T1& bv1, _AP_T2& bv2) : mbv1(bv1), mbv2(bv2) {} +// +// template +// INLINE ap_concat_ref& operator=(const ap_private<_AP_W3, _AP_S3>& val) { +// ap_private<_AP_W1 + _AP_W2, false> vval(val); +// int W_ref1 = mbv1.length(); +// int W_ref2 = mbv2.length(); +// ap_private<_AP_W1, false> mask1(-1); +// mask1 >>= _AP_W1 - W_ref1; +// ap_private<_AP_W2, false> mask2(-1); +// mask2 >>= _AP_W2 - W_ref2; +// mbv1.set(ap_private<_AP_W1, false>((vval >> W_ref2) & mask1)); +// mbv2.set(ap_private<_AP_W2, false>(vval & mask2)); +// return *this; +// } +// +// INLINE ap_concat_ref& operator=(unsigned long long val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4>& val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// INLINE ap_concat_ref& operator=( +// const ap_concat_ref<_AP_W1, _AP_T1, _AP_W2, _AP_T2>& val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=(const _private_bit_ref<_AP_W3, _AP_S3>& +// val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=(const _private_range_ref<_AP_W3, _AP_S3>& +// val) { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal(val); +// return operator=(tmpVal); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) +// { +// return operator=((const ap_private<_AP_W3, false>)(val)); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const ap_fixed_base<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& +// val) { +// return operator=(val.to_ap_private()); +// } +// +// template +// INLINE ap_concat_ref& operator=( +// const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3>& val) { +// return operator=((unsigned long long)(bool)(val)); +// } +// +// INLINE operator ap_private<_AP_WR, false>() const { return get(); } +// +// INLINE operator unsigned long long() const { return get().to_uint64(); } +// +// template +// INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// _private_range_ref<_AP_W3, _AP_S3> > +// operator,(const _private_range_ref<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// _private_range_ref<_AP_W3, _AP_S3> >( +// *this, const_cast<_private_range_ref<_AP_W3, _AP_S3>&>(a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_private<_AP_W3, _AP_S3> +// > +// operator,(ap_private<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// ap_private<_AP_W3, _AP_S3> >(*this, a2); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, ap_private<_AP_W3, _AP_S3> +// > +// operator,(const ap_private<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3, +// ap_private<_AP_W3, _AP_S3> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_WR, ap_concat_ref, 1, _private_bit_ref<_AP_W3, +// _AP_S3> > +// operator,(const _private_bit_ref<_AP_W3, _AP_S3> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, 1, _private_bit_ref<_AP_W3, +// _AP_S3> >( +// *this, const_cast<_private_bit_ref<_AP_W3, _AP_S3>&>(a2)); +// } +// +// template +// INLINE ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, +// ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> > +// operator,(const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> &a2) { +// return ap_concat_ref<_AP_WR, ap_concat_ref, _AP_W3 + _AP_W4, +// ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4> >( +// *this, const_cast&>(a2)); +// } +// +// template +// INLINE ap_concat_ref< +// _AP_WR, ap_concat_ref, _AP_W3, +// af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> > +// operator,( +// const af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> &a2) +// { +// return ap_concat_ref< +// _AP_WR, ap_concat_ref, _AP_W3, +// af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( +// *this, +// const_cast< +// af_range_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, +// _AP_N3>&>(a2)); +// } +// +// template +// INLINE +// ap_concat_ref<_AP_WR, ap_concat_ref, 1, +// af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> +// > +// operator,(const af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, +// _AP_N3> +// &a2) { +// return ap_concat_ref< +// _AP_WR, ap_concat_ref, 1, +// af_bit_ref<_AP_W3, _AP_I3, _AP_S3, _AP_Q3, _AP_O3, _AP_N3> >( +// *this, +// const_cast&>( +// a2)); +// } +// +// template +// INLINE ap_private operator&( +// const ap_private<_AP_W3, _AP_S3>& a2) { +// return get() & a2; +// } +// +// template +// INLINE ap_private operator|( +// const ap_private<_AP_W3, _AP_S3>& a2) { +// return get() | a2; +// } +// +// template +// INLINE ap_private operator^( +// const ap_private<_AP_W3, _AP_S3>& a2) { +// return ap_private(get() ^ a2); +// } +// +// INLINE const ap_private<_AP_WR, false> get() const { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal = +// ap_private<_AP_W1 + _AP_W2, false>(mbv1.get()); +// ap_private<_AP_W1 + _AP_W2, false> tmpVal2 = +// ap_private<_AP_W1 + _AP_W2, false>(mbv2.get()); +// int W_ref2 = mbv2.length(); +// tmpVal <<= W_ref2; +// tmpVal |= tmpVal2; +// return tmpVal; +// } +// +// INLINE const ap_private<_AP_WR, false> get() { +// ap_private<_AP_W1 + _AP_W2, false> tmpVal = +// ap_private<_AP_W1 + _AP_W2, false>(mbv1.get()); +// ap_private<_AP_W1 + _AP_W2, false> tmpVal2 = +// ap_private<_AP_W1 + _AP_W2, false>(mbv2.get()); +// int W_ref2 = mbv2.length(); +// tmpVal <<= W_ref2; +// tmpVal |= tmpVal2; +// return tmpVal; +// } +// +// template +// INLINE void set(const ap_private<_AP_W3, false>& val) { +// ap_private<_AP_W1 + _AP_W2, false> vval(val); +// int W_ref1 = mbv1.length(); +// int W_ref2 = mbv2.length(); +// ap_private<_AP_W1, false> mask1(-1); +// mask1 >>= _AP_W1 - W_ref1; +// ap_private<_AP_W2, false> mask2(-1); +// mask2 >>= _AP_W2 - W_ref2; +// mbv1.set(ap_private<_AP_W1, false>((vval >> W_ref2) & mask1)); +// mbv2.set(ap_private<_AP_W2, false>(vval & mask2)); +// } +// +// INLINE int length() const { return mbv1.length() + mbv2.length(); } +// +// INLINE std::string to_string(uint8_t radix = 2) const { +// return get().to_string(radix); +// } +//}; // struct ap_concat_ref. + +/// Range(slice) reference +/// Proxy class, which allows part selection to be used as rvalue(for reading) +/// and lvalue(for writing) +//------------------------------------------------------------ +template struct _private_range_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + ap_private<_AP_W, _AP_S> &d_bv; + int l_index; + int h_index; + +public: + /// copy ctor. + INLINE _private_range_ref(const _private_range_ref<_AP_W, _AP_S> &ref) + : d_bv(ref.d_bv), l_index(ref.l_index), h_index(ref.h_index) {} + + /// direct ctor. + INLINE _private_range_ref(ap_private<_AP_W, _AP_S> *bv, int h, int l) + : d_bv(*bv), l_index(l), h_index(h) { + _AP_WARNING(h < 0 || l < 0, + "Higher bound (%d) and lower bound (%d) cannot be " + "negative.", + h, l); + _AP_WARNING(h >= _AP_W || l >= _AP_W, + "Higher bound (%d) or lower bound (%d) out of range (%d).", h, + l, _AP_W); + } + + /// compound or assignment. + template + INLINE _private_range_ref<_AP_W, _AP_S> & + operator|=(const _private_range_ref<_AP_W2, _AP_S2> &ref) { + _AP_WARNING((h_index - l_index) != (ref.h_index - ref.l_index), + "Bitsize mismach for ap_private<>.range() &= " + "ap_private<>.range()."); + this->d_bv |= ref.d_bv; + return *this; + } + + /// compound or assignment with root type. + template + INLINE _private_range_ref<_AP_W, _AP_S> & + operator|=(const _AP_ROOT_TYPE<_AP_W2, _AP_S2> &ref) { + _AP_WARNING((h_index - l_index + 1) != _AP_W2, + "Bitsize mismach for ap_private<>.range() |= _AP_ROOT_TYPE<>."); + this->d_bv |= ref.V; + return *this; + } + + /// compound and assignment. + template + INLINE _private_range_ref<_AP_W, _AP_S> & + operator&=(const _private_range_ref<_AP_W2, _AP_S2> &ref) { + _AP_WARNING((h_index - l_index) != (ref.h_index - ref.l_index), + "Bitsize mismach for ap_private<>.range() &= " + "ap_private<>.range()."); + this->d_bv &= ref.d_bv; + return *this; + }; + + /// compound and assignment with root type. + template + INLINE _private_range_ref<_AP_W, _AP_S> & + operator&=(const _AP_ROOT_TYPE<_AP_W2, _AP_S2> &ref) { + _AP_WARNING((h_index - l_index + 1) != _AP_W2, + "Bitsize mismach for ap_private<>.range() &= _AP_ROOT_TYPE<>."); + this->d_bv &= ref.V; + return *this; + } + + /// compound xor assignment. + template + INLINE _private_range_ref<_AP_W, _AP_S> & + operator^=(const _private_range_ref<_AP_W2, _AP_S2> &ref) { + _AP_WARNING((h_index - l_index) != (ref.h_index - ref.l_index), + "Bitsize mismach for ap_private<>.range() ^= " + "ap_private<>.range()."); + this->d_bv ^= ref.d_bv; + return *this; + }; + + /// compound xor assignment with root type. + template + INLINE _private_range_ref<_AP_W, _AP_S> & + operator^=(const _AP_ROOT_TYPE<_AP_W2, _AP_S2> &ref) { + _AP_WARNING((h_index - l_index + 1) != _AP_W2, + "Bitsize mismach for ap_private<>.range() ^= _AP_ROOT_TYPE<>."); + this->d_bv ^= ref.V; + return *this; + } + + /// @name convertors. + // @{ + INLINE operator ap_private<_AP_W, false>() const { + ap_private<_AP_W, false> val(0); + if (h_index >= l_index) { + if (_AP_W > 64) { + val = d_bv; + ap_private<_AP_W, false> mask(-1); + mask >>= _AP_W - (h_index - l_index + 1); + val >>= l_index; + val &= mask; + } else { + const static uint64_t mask = (~0ULL >> (64 > _AP_W ? (64 - _AP_W) : 0)); + val = (d_bv >> l_index) & (mask >> (_AP_W - (h_index - l_index + 1))); + } + } else { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + if ((d_bv)[j]) + val.set(i); + } + return val; + } + + INLINE operator unsigned long long() const { return to_uint64(); } + // @} + + template + INLINE _private_range_ref &operator=(const ap_private<_AP_W2, _AP_S2> &val) { + ap_private<_AP_W, false> vval = ap_private<_AP_W, false>(val); + if (l_index > h_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + (vval)[i] ? d_bv.set(j) : d_bv.clear(j); + } else { + if (_AP_W > 64) { + ap_private<_AP_W, false> mask(-1); + if (l_index > 0) { + mask <<= l_index; + vval <<= l_index; + } + if (h_index < _AP_W - 1) { + ap_private<_AP_W, false> mask2(-1); + mask2 >>= _AP_W - h_index - 1; + mask &= mask2; + vval &= mask2; + } + mask.flip(); + d_bv &= mask; + d_bv |= vval; + } else { + unsigned shift = 64 - _AP_W; + uint64_t mask = ~0ULL >> (shift); + if (l_index > 0) { + vval = mask & vval << l_index; + mask = mask & mask << l_index; + } + if (h_index < _AP_W - 1) { + uint64_t mask2 = mask; + mask2 >>= (_AP_W - h_index - 1); + mask &= mask2; + vval &= mask2; + } + mask = ~mask; + d_bv &= mask; + d_bv |= vval; + } + } + return *this; + } // operator=(const ap_private<>&) + + INLINE _private_range_ref &operator=(unsigned long long val) { + const ap_private<_AP_W, _AP_S> vval = val; + return operator=(vval); + } + + template + INLINE _private_range_ref & + operator=(const _private_bit_ref<_AP_W2, _AP_S2> &val) { + return operator=((unsigned long long)(bool)val); + } + + template + INLINE _private_range_ref & + operator=(const _private_range_ref<_AP_W2, _AP_S2> &val) { + const ap_private<_AP_W, false> tmpVal(val); + return operator=(tmpVal); + } + + // template + // INLINE _private_range_ref& operator=( + // const ap_concat_ref<_AP_W3, _AP_T3, _AP_W4, _AP_T4>& val) { + // const ap_private<_AP_W, false> tmpVal(val); + // return operator=(tmpVal); + // } + + // TODO from ap_int_base, ap_bit_ref and ap_range_ref. + + template + INLINE _private_range_ref & + operator=(const ap_fixed_base<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + &val) { + return operator=(val.to_ap_int_base().V); + } + + template + INLINE _private_range_ref &operator=( + const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &val) { + return operator=(val.operator ap_int_base<_AP_W2, false>().V); + } + + template + INLINE _private_range_ref &operator=( + const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> &val) { + return operator=((unsigned long long)(bool)val); + } + + // template + // INLINE ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> > + // operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, + // _private_range_ref<_AP_W2, _AP_S2> >( + // *this, const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, + // ap_private<_AP_W2, _AP_S2> > + // operator,(ap_private<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, _private_range_ref, _AP_W2, + // ap_private<_AP_W2, _AP_S2> >(*this, a2); + // } + // + // INLINE + // ap_concat_ref<_AP_W, _private_range_ref, _AP_W, ap_private<_AP_W, _AP_S> > + // operator,(ap_private<_AP_W, _AP_S>& a2) { + // return ap_concat_ref<_AP_W, _private_range_ref, _AP_W, + // ap_private<_AP_W, _AP_S> >(*this, a2); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, _private_range_ref, 1, + // _private_bit_ref<_AP_W2, _AP_S2> > + // operator,(const _private_bit_ref<_AP_W2, _AP_S2> &a2) { + // return ap_concat_ref<_AP_W, _private_range_ref, 1, + // _private_bit_ref<_AP_W2, _AP_S2> >( + // *this, const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<_AP_W, _private_range_ref, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + // operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) { + // return ap_concat_ref<_AP_W, _private_range_ref, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + // *this, const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref< + // _AP_W, _private_range_ref, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + // operator,( + // const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> + // &a2) { + // return ap_concat_ref< + // _AP_W, _private_range_ref, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // *this, + // const_cast< + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2>&>(a2)); + // } + // + // template + // INLINE + // ap_concat_ref<_AP_W, _private_range_ref, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> > + // operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) { + // return ap_concat_ref< + // _AP_W, _private_range_ref, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // *this, + // const_cast&>( + // a2)); + // } + + template + INLINE bool operator==(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs == rhs; + } + + template + INLINE bool operator!=(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs != rhs; + } + + template + INLINE bool operator>(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs > rhs; + } + + template + INLINE bool operator>=(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs >= rhs; + } + + template + INLINE bool operator<(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs < rhs; + } + + template + INLINE bool operator<=(const _private_range_ref<_AP_W2, _AP_S2> &op2) { + ap_private<_AP_W, false> lhs = get(); + ap_private<_AP_W2, false> rhs = op2.get(); + return lhs <= rhs; + } + + template INLINE void set(const ap_private<_AP_W2, false> &val) { + ap_private<_AP_W, _AP_S> vval = val; + if (l_index > h_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + (vval)[i] ? d_bv.set(j) : d_bv.clear(j); + } else { + if (_AP_W > 64) { + ap_private<_AP_W, _AP_S> mask(-1); + if (l_index > 0) { + ap_private<_AP_W, false> mask1(-1); + mask1 >>= _AP_W - l_index; + mask1.flip(); + mask = mask1; + // vval&=mask1; + vval <<= l_index; + } + if (h_index < _AP_W - 1) { + ap_private<_AP_W, false> mask2(-1); + mask2 <<= h_index + 1; + mask2.flip(); + mask &= mask2; + vval &= mask2; + } + mask.flip(); + d_bv &= mask; + d_bv |= vval; + } else { + uint64_t mask = ~0ULL >> (64 - _AP_W); + if (l_index > 0) { + uint64_t mask1 = mask; + mask1 = mask & (mask1 >> (_AP_W - l_index)); + vval = mask & (vval << l_index); + mask = ~mask1 & mask; + // vval&=mask1; + } + if (h_index < _AP_W - 1) { + uint64_t mask2 = ~0ULL >> (64 - _AP_W); + mask2 = mask & (mask2 << (h_index + 1)); + mask &= ~mask2; + vval &= ~mask2; + } + d_bv &= (~mask & (~0ULL >> (64 - _AP_W))); + d_bv |= vval; + } + } + } + + INLINE ap_private<_AP_W, false> get() const { + ap_private<_AP_W, false> val(0); + if (h_index < l_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + if ((d_bv)[j]) + val.set(i); + } else { + val = d_bv; + val >>= l_index; + if (h_index < _AP_W - 1) { + if (_AP_W <= 64) { + const static uint64_t mask = + (~0ULL >> (64 > _AP_W ? (64 - _AP_W) : 0)); + val &= (mask >> (_AP_W - (h_index - l_index + 1))); + } else { + ap_private<_AP_W, false> mask(-1); + mask >>= _AP_W - (h_index - l_index + 1); + val &= mask; + } + } + } + return val; + } + + INLINE ap_private<_AP_W, false> get() { + ap_private<_AP_W, false> val(0); + if (h_index < l_index) { + for (int i = 0, j = l_index; j >= 0 && j >= h_index; j--, i++) + if ((d_bv)[j]) + val.set(i); + } else { + val = d_bv; + val >>= l_index; + if (h_index < _AP_W - 1) { + if (_AP_W <= 64) { + static const uint64_t mask = ~0ULL >> (64 > _AP_W ? (64 - _AP_W) : 0); + return val &= ((mask) >> (_AP_W - (h_index - l_index + 1))); + } else { + ap_private<_AP_W, false> mask(-1); + mask >>= _AP_W - (h_index - l_index + 1); + val &= mask; + } + } + } + return val; + } + + INLINE int length() const { + return h_index >= l_index ? h_index - l_index + 1 : l_index - h_index + 1; + } + + INLINE int to_int() const { + ap_private<_AP_W, false> val = get(); + return val.to_int(); + } + + INLINE unsigned int to_uint() const { + ap_private<_AP_W, false> val = get(); + return val.to_uint(); + } + + INLINE long to_long() const { + ap_private<_AP_W, false> val = get(); + return val.to_long(); + } + + INLINE unsigned long to_ulong() const { + ap_private<_AP_W, false> val = get(); + return val.to_ulong(); + } + + INLINE ap_slong to_int64() const { + ap_private<_AP_W, false> val = get(); + return val.to_int64(); + } + + INLINE ap_ulong to_uint64() const { + ap_private<_AP_W, false> val = get(); + return val.to_uint64(); + } + + INLINE std::string to_string(uint8_t radix = 2) const { + return get().to_string(radix); + } + + INLINE bool and_reduce() { + bool ret = true; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) + ret &= d_bv[i]; + return ret; + } + + INLINE bool or_reduce() { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) + ret |= d_bv[i]; + return ret; + } + + INLINE bool xor_reduce() { + bool ret = false; + bool reverse = l_index > h_index; + unsigned low = reverse ? h_index : l_index; + unsigned high = reverse ? l_index : h_index; + for (unsigned i = low; i != high; ++i) + ret ^= d_bv[i]; + return ret; + } +}; // struct _private_range_ref. + +/// Bit reference +/// Proxy class, which allows bit selection to be used as rvalue(for reading) +/// and lvalue(for writing) +//-------------------------------------------------------------- +template struct _private_bit_ref { +#ifdef _MSC_VER +#pragma warning(disable : 4521 4522) +#endif + ap_private<_AP_W, _AP_S> &d_bv; + int d_index; + +public: + // copy ctor. + INLINE _private_bit_ref(const _private_bit_ref<_AP_W, _AP_S> &ref) + : d_bv(ref.d_bv), d_index(ref.d_index) {} + + // director ctor. + INLINE _private_bit_ref(ap_private<_AP_W, _AP_S> &bv, int index = 0) + : d_bv(bv), d_index(index) { + _AP_WARNING(d_index < 0, "Index of bit vector (%d) cannot be negative.\n", + d_index); + _AP_WARNING(d_index >= _AP_W, + "Index of bit vector (%d) out of range (%d).\n", d_index, + _AP_W); + } + + INLINE operator bool() const { return d_bv.get_bit(d_index); } + + INLINE bool to_bool() const { return operator bool(); } + + template INLINE _private_bit_ref &operator=(const T &val) { + if (!!val) + d_bv.set(d_index); + else + d_bv.clear(d_index); + return *this; + } + + // template + // INLINE ap_concat_ref<1, _private_bit_ref, _AP_W2, ap_private<_AP_W2, + // _AP_S2> > + // operator,(ap_private<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<1, _private_bit_ref, _AP_W2, ap_private<_AP_W2, + // _AP_S2> >( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), a2); + // } + // + // template + // INLINE ap_concat_ref<1, _private_bit_ref, _AP_W2, + // _private_range_ref<_AP_W2, + // _AP_S2> > + // operator,(const _private_range_ref<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<1, _private_bit_ref, _AP_W2, + // _private_range_ref<_AP_W2, + // _AP_S2> >( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), + // const_cast<_private_range_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<1, _private_bit_ref, 1, _private_bit_ref<_AP_W2, + // _AP_S2> > operator,( + // const _private_bit_ref<_AP_W2, _AP_S2> &a2) const { + // return ap_concat_ref<1, _private_bit_ref, 1, + // _private_bit_ref<_AP_W2, _AP_S2> >( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), + // const_cast<_private_bit_ref<_AP_W2, _AP_S2>&>(a2)); + // } + // + // INLINE ap_concat_ref<1, _private_bit_ref, 1, _private_bit_ref> + // operator,( + // const _private_bit_ref &a2) const { + // return ap_concat_ref<1, _private_bit_ref, 1, _private_bit_ref>( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), + // const_cast<_private_bit_ref&>(a2)); + // } + // + // template + // INLINE ap_concat_ref<1, _private_bit_ref, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> > + // operator,(const ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> &a2) const { + // return ap_concat_ref<1, _private_bit_ref, _AP_W2 + _AP_W3, + // ap_concat_ref<_AP_W2, _AP_T2, _AP_W3, _AP_T3> >( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), + // const_cast&>(a2)); + // } + // + // template + // INLINE ap_concat_ref< + // 1, _private_bit_ref, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> > + // operator,(const af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) const { + // return ap_concat_ref< + // 1, _private_bit_ref, _AP_W2, + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, _AP_N2> >( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), + // const_cast< + // af_range_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2>&>(a2)); + // } + // + // template + // INLINE + // ap_concat_ref<1, _private_bit_ref, 1, + // af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> > + // operator,(const af_bit_ref<_AP_W2, _AP_I2, _AP_S2, _AP_Q2, _AP_O2, + // _AP_N2> + // &a2) const { + // return ap_concat_ref<1, _private_bit_ref, 1, af_bit_ref<_AP_W2, + // _AP_I2, _AP_S2, + // _AP_Q2, _AP_O2, + // _AP_N2> >( + // const_cast<_private_bit_ref<_AP_W, _AP_S>&>(*this), + // const_cast&>( + // a2)); + // } + + template + INLINE bool operator==(const _private_bit_ref<_AP_W2, _AP_S2> &op) const { + return get() == op.get(); + } + + template + INLINE bool operator!=(const _private_bit_ref<_AP_W2, _AP_S2> &op) const { + return get() != op.get(); + } + + INLINE bool get() const { return operator bool(); } + + // template + // INLINE void set(const ap_private<_AP_W3, false>& val) { + // operator=(val); + // } + + // INLINE bool operator~() const { + // bool bit = (d_bv)[d_index]; + // return bit ? false : true; + // } + + INLINE int length() const { return 1; } + + // INLINE std::string to_string() const { + // bool val = get(); + // return val ? "1" : "0"; + // } + +}; // struct _private_bit_ref. + +// char a[100]; +// char* ptr = a; +// ap_int<2> n = 3; +// char* ptr2 = ptr + n*2; +// avoid ambiguous errors +#define OP_BIN_MIX_PTR(BIN_OP) \ + template \ + INLINE PTR_TYPE *operator BIN_OP(PTR_TYPE *i_op, \ + const ap_private<_AP_W, _AP_S> &op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE PTR_TYPE *operator BIN_OP(const ap_private<_AP_W, _AP_S> &op, \ + PTR_TYPE *i_op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return op2 BIN_OP i_op; \ + } + +OP_BIN_MIX_PTR(+) +OP_BIN_MIX_PTR(-) +#undef OP_BIN_MIX_PTR + +// float OP ap_int +// when ap_int's width > 64, then trunc ap_int to ap_int<64> +#define OP_BIN_MIX_FLOAT(BIN_OP, C_TYPE) \ + template \ + INLINE C_TYPE operator BIN_OP(C_TYPE i_op, \ + const ap_private<_AP_W, _AP_S> &op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return i_op BIN_OP op2; \ + } \ + template \ + INLINE C_TYPE operator BIN_OP(const ap_private<_AP_W, _AP_S> &op, \ + C_TYPE i_op) { \ + typename ap_private<_AP_W, _AP_S>::ValType op2 = op; \ + return op2 BIN_OP i_op; \ + } + +#define OPS_MIX_FLOAT(C_TYPE) \ + OP_BIN_MIX_FLOAT(*, C_TYPE) \ + OP_BIN_MIX_FLOAT(/, C_TYPE) \ + OP_BIN_MIX_FLOAT(+, C_TYPE) \ + OP_BIN_MIX_FLOAT(-, C_TYPE) + +OPS_MIX_FLOAT(float) +OPS_MIX_FLOAT(double) +#undef OP_BIN_MIX_FLOAT +#undef OPS_MIX_FLOAT + +/// Operators mixing Integers with AP_Int +// ---------------------------------------------------------------- + +// partially specialize template argument _AP_C in order that: +// for _AP_W > 64, we will explicitly convert operand with native data type +// into corresponding ap_private +// for _AP_W <= 64, we will implicitly convert operand with ap_private into +// (unsigned) long long +#define OP_BIN_MIX_INT(BIN_OP, C_TYPE, _AP_WI, _AP_SI, RTYPE) \ + template \ + INLINE \ + typename ap_private<_AP_WI, _AP_SI>::template RType<_AP_W, _AP_S>::RTYPE \ + operator BIN_OP(C_TYPE i_op, const ap_private<_AP_W, _AP_S> &op) { \ + return ap_private<_AP_WI, _AP_SI>(i_op).operator BIN_OP(op); \ + } \ + template \ + INLINE \ + typename ap_private<_AP_W, _AP_S>::template RType<_AP_WI, _AP_SI>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W, _AP_S> &op, C_TYPE i_op) { \ + return op.operator BIN_OP(ap_private<_AP_WI, _AP_SI>(i_op)); \ + } + +#define OP_REL_MIX_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(const ap_private<_AP_W, _AP_S> &op, \ + C_TYPE op2) { \ + return op.operator REL_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const ap_private<_AP_W, _AP_S, false> &op) { \ + return ap_private<_AP_W2, _AP_S2>(op2).operator REL_OP(op); \ + } + +#define OP_ASSIGN_MIX_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_private<_AP_W, _AP_S> &operator ASSIGN_OP( \ + ap_private<_AP_W, _AP_S> &op, C_TYPE op2) { \ + return op.operator ASSIGN_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } + +#define OP_BIN_SHIFT_INT(BIN_OP, C_TYPE, _AP_WI, _AP_SI, RTYPE) \ + template \ + C_TYPE operator BIN_OP(C_TYPE i_op, \ + const ap_private<_AP_W, _AP_S, false> &op) { \ + return i_op BIN_OP(op.get_VAL()); \ + } \ + template \ + INLINE \ + typename ap_private<_AP_W, _AP_S>::template RType<_AP_WI, _AP_SI>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W, _AP_S> &op, C_TYPE i_op) { \ + return op.operator BIN_OP(i_op); \ + } + +#define OP_ASSIGN_RSHIFT_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_private<_AP_W, _AP_S> &operator ASSIGN_OP( \ + ap_private<_AP_W, _AP_S> &op, C_TYPE op2) { \ + op = op.operator>>(op2); \ + return op; \ + } + +#define OP_ASSIGN_LSHIFT_INT(ASSIGN_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE ap_private<_AP_W, _AP_S> &operator ASSIGN_OP( \ + ap_private<_AP_W, _AP_S> &op, C_TYPE op2) { \ + op = op.operator<<(op2); \ + return op; \ + } + +#define OPS_MIX_INT(C_TYPE, _AP_W2, _AP_S2) \ + OP_BIN_MIX_INT(*, C_TYPE, (_AP_W2), (_AP_S2), mult) \ + OP_BIN_MIX_INT(+, C_TYPE, (_AP_W2), (_AP_S2), plus) \ + OP_BIN_MIX_INT(-, C_TYPE, (_AP_W2), (_AP_S2), minus) \ + OP_BIN_MIX_INT(/, C_TYPE, (_AP_W2), (_AP_S2), div) \ + OP_BIN_MIX_INT(%, C_TYPE, (_AP_W2), (_AP_S2), mod) \ + OP_BIN_MIX_INT(&, C_TYPE, (_AP_W2), (_AP_S2), logic) \ + OP_BIN_MIX_INT(|, C_TYPE, (_AP_W2), (_AP_S2), logic) \ + OP_BIN_MIX_INT(^, C_TYPE, (_AP_W2), (_AP_S2), logic) \ + OP_BIN_SHIFT_INT(>>, C_TYPE, (_AP_W2), (_AP_S2), arg1) \ + OP_BIN_SHIFT_INT(<<, C_TYPE, (_AP_W2), (_AP_S2), arg1) \ + \ + OP_ASSIGN_MIX_INT(+=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(-=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(*=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(/=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(%=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(&=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(|=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_MIX_INT(^=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_RSHIFT_INT(>>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_ASSIGN_LSHIFT_INT(<<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + \ + OP_REL_MIX_INT(>, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(<, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(==, C_TYPE, (_AP_W2), (_AP_S2)) \ + OP_REL_MIX_INT(!=, C_TYPE, (_AP_W2), (_AP_S2)) + +OPS_MIX_INT(bool, 1, false) +OPS_MIX_INT(char, 8, CHAR_IS_SIGNED) +OPS_MIX_INT(signed char, 8, true) +OPS_MIX_INT(unsigned char, 8, false) +OPS_MIX_INT(short, sizeof(short) * 8, true) +OPS_MIX_INT(unsigned short, sizeof(unsigned short) * 8, false) +OPS_MIX_INT(int, sizeof(int) * 8, true) +OPS_MIX_INT(unsigned int, sizeof(unsigned int) * 8, false) +OPS_MIX_INT(long, sizeof(long) * 8, true) +OPS_MIX_INT(unsigned long, sizeof(unsigned long) * 8, false) +OPS_MIX_INT(ap_slong, sizeof(ap_slong) * 8, true) +OPS_MIX_INT(ap_ulong, sizeof(ap_ulong) * 8, false) + +#undef OP_BIN_MIX_INT +#undef OP_BIN_SHIFT_INT +#undef OP_ASSIGN_MIX_INT +#undef OP_ASSIGN_RSHIFT_INT +#undef OP_ASSIGN_LSHIFT_INT +#undef OP_REL_MIX_INT +#undef OPS_MIX_INT + +#define OP_BIN_MIX_RANGE(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_private<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const _private_range_ref<_AP_W1, _AP_S1> &op1, \ + const ap_private<_AP_W2, _AP_S2> &op2) { \ + return ap_private<_AP_W1, false>(op1).operator BIN_OP(op2); \ + } \ + template \ + INLINE typename ap_private<_AP_W1, _AP_S1>::template RType<_AP_W2, \ + _AP_S2>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W1, _AP_S1> &op1, \ + const _private_range_ref<_AP_W2, _AP_S2> &op2) { \ + return op1.operator BIN_OP(ap_private<_AP_W2, false>(op2)); \ + } + +#define OP_ASSIGN_MIX_RANGE(ASSIGN_OP) \ + template \ + INLINE ap_private<_AP_W1, _AP_S1> &operator ASSIGN_OP( \ + ap_private<_AP_W1, _AP_S1> &op1, \ + const _private_range_ref<_AP_W2, _AP_S2> &op2) { \ + return op1.operator ASSIGN_OP(ap_private<_AP_W2, false>(op2)); \ + } \ + template \ + INLINE _private_range_ref<_AP_W1, _AP_S1> &operator ASSIGN_OP( \ + _private_range_ref<_AP_W1, _AP_S1> &op1, \ + ap_private<_AP_W2, _AP_S2> &op2) { \ + ap_private<_AP_W1, false> tmp(op1); \ + tmp.operator ASSIGN_OP(op2); \ + op1 = tmp; \ + return op1; \ + } + +#define OP_REL_MIX_RANGE(REL_OP) \ + template \ + INLINE bool operator REL_OP(const _private_range_ref<_AP_W1, _AP_S1> &op1, \ + const ap_private<_AP_W2, _AP_S2> &op2) { \ + return ap_private<_AP_W1, false>(op1).operator REL_OP(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_private<_AP_W1, _AP_S1> &op1, \ + const _private_range_ref<_AP_W2, _AP_S2> &op2) { \ + return op1.operator REL_OP(op2.operator ap_private<_AP_W2, false>()); \ + } + +OP_BIN_MIX_RANGE(+, plus) +OP_BIN_MIX_RANGE(-, minus) +OP_BIN_MIX_RANGE(*, mult) +OP_BIN_MIX_RANGE(/, div) +OP_BIN_MIX_RANGE(%, mod) +OP_BIN_MIX_RANGE(&, logic) +OP_BIN_MIX_RANGE(|, logic) +OP_BIN_MIX_RANGE(^, logic) +OP_BIN_MIX_RANGE(>>, arg1) +OP_BIN_MIX_RANGE(<<, arg1) +#undef OP_BIN_MIX_RANGE + +OP_ASSIGN_MIX_RANGE(+=) +OP_ASSIGN_MIX_RANGE(-=) +OP_ASSIGN_MIX_RANGE(*=) +OP_ASSIGN_MIX_RANGE(/=) +OP_ASSIGN_MIX_RANGE(%=) +OP_ASSIGN_MIX_RANGE(&=) +OP_ASSIGN_MIX_RANGE(|=) +OP_ASSIGN_MIX_RANGE(^=) +OP_ASSIGN_MIX_RANGE(>>=) +OP_ASSIGN_MIX_RANGE(<<=) +#undef OP_ASSIGN_MIX_RANGE + +OP_REL_MIX_RANGE(>) +OP_REL_MIX_RANGE(<) +OP_REL_MIX_RANGE(>=) +OP_REL_MIX_RANGE(<=) +OP_REL_MIX_RANGE(==) +OP_REL_MIX_RANGE(!=) +#undef OP_REL_MIX_RANGE + +#define OP_BIN_MIX_BIT(BIN_OP, RTYPE) \ + template \ + INLINE typename ap_private<1, false>::template RType<_AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP(const _private_bit_ref<_AP_W1, _AP_S1> &op1, \ + const ap_private<_AP_W2, _AP_S2> &op2) { \ + return ap_private<1, false>(op1).operator BIN_OP(op2); \ + } \ + template \ + INLINE typename ap_private<_AP_W1, _AP_S1>::template RType<1, false>::RTYPE \ + operator BIN_OP(const ap_private<_AP_W1, _AP_S1> &op1, \ + const _private_bit_ref<_AP_W2, _AP_S2> &op2) { \ + return op1.operator BIN_OP(ap_private<1, false>(op2)); \ + } + +#define OP_ASSIGN_MIX_BIT(ASSIGN_OP) \ + template \ + INLINE ap_private<_AP_W1, _AP_S1> &operator ASSIGN_OP( \ + ap_private<_AP_W1, _AP_S1> &op1, \ + _private_bit_ref<_AP_W2, _AP_S2> &op2) { \ + return op1.operator ASSIGN_OP(ap_private<1, false>(op2)); \ + } \ + template \ + INLINE _private_bit_ref<_AP_W1, _AP_S1> &operator ASSIGN_OP( \ + _private_bit_ref<_AP_W1, _AP_S1> &op1, \ + ap_private<_AP_W2, _AP_S2> &op2) { \ + ap_private<1, false> tmp(op1); \ + tmp.operator ASSIGN_OP(op2); \ + op1 = tmp; \ + return op1; \ + } + +#define OP_REL_MIX_BIT(REL_OP) \ + template \ + INLINE bool operator REL_OP(const _private_bit_ref<_AP_W1, _AP_S1> &op1, \ + const ap_private<_AP_W2, _AP_S2> &op2) { \ + return ap_private<_AP_W1, false>(op1).operator REL_OP(op2); \ + } \ + template \ + INLINE bool operator REL_OP(const ap_private<_AP_W1, _AP_S1> &op1, \ + const _private_bit_ref<_AP_W2, _AP_S2> &op2) { \ + return op1.operator REL_OP(ap_private<1, false>(op2)); \ + } + +OP_ASSIGN_MIX_BIT(+=) +OP_ASSIGN_MIX_BIT(-=) +OP_ASSIGN_MIX_BIT(*=) +OP_ASSIGN_MIX_BIT(/=) +OP_ASSIGN_MIX_BIT(%=) +OP_ASSIGN_MIX_BIT(&=) +OP_ASSIGN_MIX_BIT(|=) +OP_ASSIGN_MIX_BIT(^=) +OP_ASSIGN_MIX_BIT(>>=) +OP_ASSIGN_MIX_BIT(<<=) +#undef OP_ASSIGN_MIX_BIT + +OP_BIN_MIX_BIT(+, plus) +OP_BIN_MIX_BIT(-, minus) +OP_BIN_MIX_BIT(*, mult) +OP_BIN_MIX_BIT(/, div) +OP_BIN_MIX_BIT(%, mod) +OP_BIN_MIX_BIT(&, logic) +OP_BIN_MIX_BIT(|, logic) +OP_BIN_MIX_BIT(^, logic) +OP_BIN_MIX_BIT(>>, arg1) +OP_BIN_MIX_BIT(<<, arg1) +#undef OP_BIN_MIX_BIT + +OP_REL_MIX_BIT(>) +OP_REL_MIX_BIT(<) +OP_REL_MIX_BIT(<=) +OP_REL_MIX_BIT(>=) +OP_REL_MIX_BIT(==) +OP_REL_MIX_BIT(!=) +#undef OP_REL_MIX_BIT + +#define REF_REL_OP_MIX_INT(REL_OP, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE bool operator REL_OP(const _private_range_ref<_AP_W, _AP_S> &op, \ + C_TYPE op2) { \ + return (ap_private<_AP_W, false>(op)) \ + . \ + operator REL_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const _private_range_ref<_AP_W, _AP_S> &op) { \ + return ap_private<_AP_W2, _AP_S2>(op2).operator REL_OP( \ + ap_private<_AP_W, false>(op)); \ + } \ + template \ + INLINE bool operator REL_OP(const _private_bit_ref<_AP_W, _AP_S> &op, \ + C_TYPE op2) { \ + return (bool(op))REL_OP op2; \ + } \ + template \ + INLINE bool operator REL_OP(C_TYPE op2, \ + const _private_bit_ref<_AP_W, _AP_S> &op) { \ + return op2 REL_OP(bool(op)); \ + } + +#define REF_REL_MIX_INT(C_TYPE, _AP_W2, _AP_S2) \ + REF_REL_OP_MIX_INT(>, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(<, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(>=, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(<=, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(==, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_REL_OP_MIX_INT(!=, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_REL_MIX_INT(bool, 1, false) +REF_REL_MIX_INT(char, 8, CHAR_IS_SIGNED) +REF_REL_MIX_INT(signed char, 8, true) +REF_REL_MIX_INT(unsigned char, 8, false) +REF_REL_MIX_INT(short, sizeof(short) * 8, true) +REF_REL_MIX_INT(unsigned short, sizeof(unsigned short) * 8, false) +REF_REL_MIX_INT(int, sizeof(int) * 8, true) +REF_REL_MIX_INT(unsigned int, sizeof(unsigned int) * 8, false) +REF_REL_MIX_INT(long, sizeof(long) * 8, true) +REF_REL_MIX_INT(unsigned long, sizeof(unsigned long) * 8, false) +REF_REL_MIX_INT(ap_slong, sizeof(ap_slong) * 8, true) +REF_REL_MIX_INT(ap_ulong, sizeof(ap_ulong) * 8, false) +#undef REF_REL_OP_MIX_INT +#undef REF_REL_MIX_INT + +#define REF_BIN_OP_MIX_INT(BIN_OP, RTYPE, C_TYPE, _AP_W2, _AP_S2) \ + template \ + INLINE \ + typename ap_private<_AP_W, false>::template RType<_AP_W2, _AP_S2>::RTYPE \ + operator BIN_OP(const _private_range_ref<_AP_W, _AP_S> &op, \ + C_TYPE op2) { \ + return (ap_private<_AP_W, false>(op)) \ + . \ + operator BIN_OP(ap_private<_AP_W2, _AP_S2>(op2)); \ + } \ + template \ + INLINE \ + typename ap_private<_AP_W2, _AP_S2>::template RType<_AP_W, false>::RTYPE \ + operator BIN_OP(C_TYPE op2, \ + const _private_range_ref<_AP_W, _AP_S> &op) { \ + return ap_private<_AP_W2, _AP_S2>(op2).operator BIN_OP( \ + ap_private<_AP_W, false>(op)); \ + } + +#define REF_BIN_MIX_INT(C_TYPE, _AP_W2, _AP_S2) \ + REF_BIN_OP_MIX_INT(+, plus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(-, minus, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(*, mult, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(/, div, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(%, mod, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(&, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(|, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(^, logic, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(>>, arg1, C_TYPE, (_AP_W2), (_AP_S2)) \ + REF_BIN_OP_MIX_INT(<<, arg1, C_TYPE, (_AP_W2), (_AP_S2)) + +REF_BIN_MIX_INT(bool, 1, false) +REF_BIN_MIX_INT(char, 8, CHAR_IS_SIGNED) +REF_BIN_MIX_INT(signed char, 8, true) +REF_BIN_MIX_INT(unsigned char, 8, false) +REF_BIN_MIX_INT(short, sizeof(short) * 8, true) +REF_BIN_MIX_INT(unsigned short, sizeof(unsigned short) * 8, false) +REF_BIN_MIX_INT(int, sizeof(int) * 8, true) +REF_BIN_MIX_INT(unsigned int, sizeof(unsigned int) * 8, false) +REF_BIN_MIX_INT(long, sizeof(long) * 8, true) +REF_BIN_MIX_INT(unsigned long, sizeof(unsigned long) * 8, false) +REF_BIN_MIX_INT(ap_slong, sizeof(ap_slong) * 8, true) +REF_BIN_MIX_INT(ap_ulong, sizeof(ap_ulong) * 8, false) +#undef REF_BIN_OP_MIX_INT +#undef REF_BIN_MIX_INT + +#define REF_BIN_OP(BIN_OP, RTYPE) \ + template \ + INLINE \ + typename ap_private<_AP_W, false>::template RType<_AP_W2, false>::RTYPE \ + operator BIN_OP(const _private_range_ref<_AP_W, _AP_S> &lhs, \ + const _private_range_ref<_AP_W2, _AP_S2> &rhs) { \ + return ap_private<_AP_W, false>(lhs).operator BIN_OP( \ + ap_private<_AP_W2, false>(rhs)); \ + } + +REF_BIN_OP(+, plus) +REF_BIN_OP(-, minus) +REF_BIN_OP(*, mult) +REF_BIN_OP(/, div) +REF_BIN_OP(%, mod) +REF_BIN_OP(&, logic) +REF_BIN_OP(|, logic) +REF_BIN_OP(^, logic) +REF_BIN_OP(>>, arg1) +REF_BIN_OP(<<, arg1) +#undef REF_BIN_OP + +//************************************************************************ +// Implement +// ap_private = ap_concat_ref OP ap_concat_ref +// for operators +, -, *, /, %, >>, <<, &, |, ^ +// Without these operators the operands are converted to int64 and +// larger results lose informations (higher order bits). +// +// operand OP +// / | +// left-concat right-concat +// / | / | +// +// +// _AP_LW1, _AP_LT1 (width and type of left-concat's left side) +// _AP_LW2, _AP_LT2 (width and type of left-concat's right side) +// Similarly for RHS of operand OP: _AP_RW1, AP_RW2, _AP_RT1, _AP_RT2 +// +// In Verilog 2001 result of concatenation is always unsigned even +// when both sides are signed. +//************************************************************************ + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif +#endif // ifndef __AP_PRIVATE_H__ diff --git a/vitis/v2021_2/etc/autopilot_apint.h b/vitis/v2021_2/etc/autopilot_apint.h new file mode 100755 index 00000000..459319a6 --- /dev/null +++ b/vitis/v2021_2/etc/autopilot_apint.h @@ -0,0 +1,115 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* autopilot_apint.h*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _AUTOPILOT_APINT_H_ +#define _AUTOPILOT_APINT_H_ + +#include "vitis/v2021_2/etc/autopilot_dt.h" +#include "vitis/v2021_2/etc/autopilot_ssdm_bits.h" + +#define APInt_BitWidthOf(X) _ssdm_op_bitwidthof(X) + +#define APInt_Concatenate(X, Y) _ssdm_op_Concat(X, Y) +#define APInt_GetBit(Val, Bit) _ssdm_op_GetBit(Val, Bit) +#define APInt_SetBit(Val, Bit, Repl) _ssdm_op_SetBit(Val, Bit, Repl) +#define APInt_GetRange(Val, Hi, Lo) _ssdm_op_GetRange(Val, Hi, Lo) +#define APInt_SetRange(Val, Hi, Lo, Repl) _ssdm_op_SetRange(Val, Hi, Lo, Repl) + +#define APInt_AndReduce(X) _ssdm_op_reduce(and, X) +#define APInt_NandReduce(X) _ssdm_op_reduce(nand, X) +#define APInt_OrReduce(X) _ssdm_op_reduce(or, X) +#define APInt_NorReduce(X) _ssdm_op_reduce(nor, X) +#define APInt_XorReduce(X) _ssdm_op_reduce(xor, X) +#define APInt_XnorReduce(X) _ssdm_op_reduce(nxor, X) + +#define APInt_BitsFromString(Str, Bits) \ + _ssdm_op_bitsFromString(Str, Bits) +#define APInt_BitsFromHexString(Str, Bits) \ + _ssdm_op_bitsFromHexString(Str, Bits) +#define APInt_BitsFromOctalString(Str, Bits) \ + _ssdm_op_bitsFromOctalString(Str, Bits) +#define APInt_BitsFromBinaryString(Str, Bits) \ + _ssdm_op_bitsFromBinaryString(Str, Bits) + + +/************************************************/ + +#define apint_bitwidthof(X) _ssdm_op_bitwidthof(X) + +#define apint_concatenate(X, Y) _ssdm_op_Concat(X, Y) +#define apint_get_bit(Val, Bit) _ssdm_op_GetBit(Val, Bit) +#define apint_set_bit(Val, Bit, Repl) _ssdm_op_SetBit(Val, Bit, Repl) +#define apint_get_range(Val, Hi, Lo) _ssdm_op_GetRange(Val, Hi, Lo) +#define apint_set_range(Val, Hi, Lo, Repl) _ssdm_op_SetRange(Val, Hi, Lo, Repl) + +#define apint_and_reduce(X) _ssdm_op_reduce(and, X) +#define apint_nand_reduce(X) _ssdm_op_reduce(nand, X) +#define apint_or_reduce(X) _ssdm_op_reduce(or, X) +#define apint_nor_reduce(X) _ssdm_op_reduce(nor, X) +#define apint_xor_reduce(X) _ssdm_op_reduce(xor, X) +#define apint_xnor_reduce(X) _ssdm_op_reduce(nxor, X) + +#define apint_print(Val, Radix) _ssdm_op_print_apint(Val, Radix) +#define apint_fprint(FileOut, Val, Radix) _ssdm_op_fprint_apint(FileOut, Val, Radix) + +#define apint_vstring2bits_hex(Str, Bits) _ssdm_op_sscan_hex_apint(Str, Bits) +#define apint_string2bits_dec(Str, Bits) _ssdm_op_bitsFromString(Str, Bits) +#define apint_string2bits_hex(Str, Bits) _ssdm_op_bitsFromHexString(Str, Bits) +#define apint_string2bits_oct(Str, Bits) _ssdm_op_bitsFromOctalString(Str, Bits) +#define apint_string2bits_bin(Str, Bits) _ssdm_op_bitsFromBinaryString(Str, Bits) +#define apint_string2bits(Str, Bits) apint_string2bits_dec(Str, Bits) + +#endif + + diff --git a/vitis/v2021_2/etc/autopilot_dt.h b/vitis/v2021_2/etc/autopilot_dt.h new file mode 100755 index 00000000..53d1d81b --- /dev/null +++ b/vitis/v2021_2/etc/autopilot_dt.h @@ -0,0 +1,148 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/*-*-c++-*-*/ +/* autopilot_dt.h: defines all bit-accurate data types.*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _AUTOPILOT_DT_H_ +#define _AUTOPILOT_DT_H_ +#ifndef AP_INT_MAX_W +#define AP_INT_MAX_W 1024 +#endif +#if AP_INT_MAX_W > (1 << 15) +#error "Bitwidth exceeds 32768 (1 << 15), the maximum allowed value" +#endif +#define AP_INT_MAX_UNIT ((AP_INT_MAX_W + 1023) / 1024) +#define _TY_CONCAT(P, T) P##T + +#if defined(__cplusplus) & defined(C_TEST) +# warning "Using SystemC data types" + +# include "systemc.h" +using namespace sc_dt; + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) typedef sc_dt::sc_int _TY_CONCAT(T, int##N); +#else +# define HANDLE_BAT(T, N) typedef sc_dt::sc_int _TY_CONCAT(, int##N); +#endif +# include "etc/autopilot_dt.def" + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) typedef sc_dt::sc_uint _TY_CONCAT(T, uint##N); +#else +# define HANDLE_BAT(T, N) typedef sc_dt::sc_uint _TY_CONCAT(, uint##N); +#endif +# include "etc/autopilot_dt.def" + +/* No definition for SystemC sc_dt::int64 and uint64.*/ + +#else + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) \ + typedef int __attribute__ ((bitwidth(N))) _TY_CONCAT(T, int##N); +#else +# define HANDLE_BAT(T, N) \ + typedef int __attribute__ ((bitwidth(N))) _TY_CONCAT(, int##N); +#endif +# include "etc/autopilot_dt.def" +# include "etc/autopilot_dt_ext.def" +#undef HANDLE_BAT + +#if defined(APINT_TYPE_PREFIX) +# define HANDLE_BAT(T, N) \ + typedef unsigned int __attribute__ ((bitwidth(N))) _TY_CONCAT(T, uint##N); +#else +# define HANDLE_BAT(T, N) \ + typedef unsigned int __attribute__ ((bitwidth(N))) _TY_CONCAT(, uint##N); +#endif +# include "etc/autopilot_dt.def" +# include "etc/autopilot_dt_ext.def" +#undef HANDLE_BAT + +#undef AP_INT_MAX_UNIT + +# if defined(__cplusplus) +/*# warning "Incomplete C++ data types" +# include "autopilot_dt.hpp" */ +# ifndef __SC_COMPATIBLE__ + typedef int __attribute__ ((bitwidth(64))) ap_int64; + typedef unsigned int __attribute__ ((bitwidth(64))) ap_uint64; +# define int64 ap_int64 +# define uint64 ap_uint64 +# endif + +# else + +#if defined(APINT_TYPE_PREFIX) +typedef int __attribute__ ((bitwidth(64))) APINT_TYPE_PREFIXint64; +typedef unsigned int __attribute__ ((bitwidth(64))) APINT_TYPE_PREFIXuint64; +# define bool APINT_TYPE_PREFIXuint1 +#else +typedef int __attribute__ ((bitwidth(64))) int64; +typedef unsigned int __attribute__ ((bitwidth(64))) uint64; +# define bool uint1 +#endif +# define true 1 +# define false 0 + +# endif + + +#endif /*#ifdef _cplusplus & C_TEST */ + +#undef _TY_CONCAT + +#endif + + diff --git a/vitis/v2021_2/etc/autopilot_dt_def.h b/vitis/v2021_2/etc/autopilot_dt_def.h new file mode 100755 index 00000000..44ca29cf --- /dev/null +++ b/vitis/v2021_2/etc/autopilot_dt_def.h @@ -0,0 +1,2080 @@ +#ifndef APINT_TYPE_PREFIX + +HANDLE_BAT(, 1) +HANDLE_BAT(, 2) +HANDLE_BAT(, 3) +HANDLE_BAT(, 4) +HANDLE_BAT(, 5) +HANDLE_BAT(, 6) +HANDLE_BAT(, 7) +HANDLE_BAT(, 8) +HANDLE_BAT(, 9) +HANDLE_BAT(, 10) +HANDLE_BAT(, 11) +HANDLE_BAT(, 12) +HANDLE_BAT(, 13) +HANDLE_BAT(, 14) +HANDLE_BAT(, 15) +HANDLE_BAT(, 16) +HANDLE_BAT(, 17) +HANDLE_BAT(, 18) +HANDLE_BAT(, 19) +HANDLE_BAT(, 20) +HANDLE_BAT(, 21) +HANDLE_BAT(, 22) +HANDLE_BAT(, 23) +HANDLE_BAT(, 24) +HANDLE_BAT(, 25) +HANDLE_BAT(, 26) +HANDLE_BAT(, 27) +HANDLE_BAT(, 28) +HANDLE_BAT(, 29) +HANDLE_BAT(, 30) +HANDLE_BAT(, 31) +HANDLE_BAT(, 32) +HANDLE_BAT(, 33) +HANDLE_BAT(, 34) +HANDLE_BAT(, 35) +HANDLE_BAT(, 36) +HANDLE_BAT(, 37) +HANDLE_BAT(, 38) +HANDLE_BAT(, 39) +HANDLE_BAT(, 40) +HANDLE_BAT(, 41) +HANDLE_BAT(, 42) +HANDLE_BAT(, 43) +HANDLE_BAT(, 44) +HANDLE_BAT(, 45) +HANDLE_BAT(, 46) +HANDLE_BAT(, 47) +HANDLE_BAT(, 48) +HANDLE_BAT(, 49) +HANDLE_BAT(, 50) +HANDLE_BAT(, 51) +HANDLE_BAT(, 52) +HANDLE_BAT(, 53) +HANDLE_BAT(, 54) +HANDLE_BAT(, 55) +HANDLE_BAT(, 56) +HANDLE_BAT(, 57) +HANDLE_BAT(, 58) +HANDLE_BAT(, 59) +HANDLE_BAT(, 60) +HANDLE_BAT(, 61) +HANDLE_BAT(, 62) +HANDLE_BAT(, 63) + +#ifdef APINT_DEFINE_INT64 +HANDLE_BAT(, 64) +#endif + +/*#if AUTOPILOT_VERSION >= 1 */ + +HANDLE_BAT(, 65) +HANDLE_BAT(, 66) +HANDLE_BAT(, 67) +HANDLE_BAT(, 68) +HANDLE_BAT(, 69) +HANDLE_BAT(, 70) +HANDLE_BAT(, 71) +HANDLE_BAT(, 72) +HANDLE_BAT(, 73) +HANDLE_BAT(, 74) +HANDLE_BAT(, 75) +HANDLE_BAT(, 76) +HANDLE_BAT(, 77) +HANDLE_BAT(, 78) +HANDLE_BAT(, 79) +HANDLE_BAT(, 80) +HANDLE_BAT(, 81) +HANDLE_BAT(, 82) +HANDLE_BAT(, 83) +HANDLE_BAT(, 84) +HANDLE_BAT(, 85) +HANDLE_BAT(, 86) +HANDLE_BAT(, 87) +HANDLE_BAT(, 88) +HANDLE_BAT(, 89) +HANDLE_BAT(, 90) +HANDLE_BAT(, 91) +HANDLE_BAT(, 92) +HANDLE_BAT(, 93) +HANDLE_BAT(, 94) +HANDLE_BAT(, 95) +HANDLE_BAT(, 96) +HANDLE_BAT(, 97) +HANDLE_BAT(, 98) +HANDLE_BAT(, 99) +HANDLE_BAT(, 100) +HANDLE_BAT(, 101) +HANDLE_BAT(, 102) +HANDLE_BAT(, 103) +HANDLE_BAT(, 104) +HANDLE_BAT(, 105) +HANDLE_BAT(, 106) +HANDLE_BAT(, 107) +HANDLE_BAT(, 108) +HANDLE_BAT(, 109) +HANDLE_BAT(, 110) +HANDLE_BAT(, 111) +HANDLE_BAT(, 112) +HANDLE_BAT(, 113) +HANDLE_BAT(, 114) +HANDLE_BAT(, 115) +HANDLE_BAT(, 116) +HANDLE_BAT(, 117) +HANDLE_BAT(, 118) +HANDLE_BAT(, 119) +HANDLE_BAT(, 120) +HANDLE_BAT(, 121) +HANDLE_BAT(, 122) +HANDLE_BAT(, 123) +HANDLE_BAT(, 124) +HANDLE_BAT(, 125) +HANDLE_BAT(, 126) +HANDLE_BAT(, 127) +HANDLE_BAT(, 128) + +/*#endif*/ + + +/*#ifdef EXTENDED_GCC*/ + +HANDLE_BAT(, 129) +HANDLE_BAT(, 130) +HANDLE_BAT(, 131) +HANDLE_BAT(, 132) +HANDLE_BAT(, 133) +HANDLE_BAT(, 134) +HANDLE_BAT(, 135) +HANDLE_BAT(, 136) +HANDLE_BAT(, 137) +HANDLE_BAT(, 138) +HANDLE_BAT(, 139) +HANDLE_BAT(, 140) +HANDLE_BAT(, 141) +HANDLE_BAT(, 142) +HANDLE_BAT(, 143) +HANDLE_BAT(, 144) +HANDLE_BAT(, 145) +HANDLE_BAT(, 146) +HANDLE_BAT(, 147) +HANDLE_BAT(, 148) +HANDLE_BAT(, 149) +HANDLE_BAT(, 150) +HANDLE_BAT(, 151) +HANDLE_BAT(, 152) +HANDLE_BAT(, 153) +HANDLE_BAT(, 154) +HANDLE_BAT(, 155) +HANDLE_BAT(, 156) +HANDLE_BAT(, 157) +HANDLE_BAT(, 158) +HANDLE_BAT(, 159) +HANDLE_BAT(, 160) +HANDLE_BAT(, 161) +HANDLE_BAT(, 162) +HANDLE_BAT(, 163) +HANDLE_BAT(, 164) +HANDLE_BAT(, 165) +HANDLE_BAT(, 166) +HANDLE_BAT(, 167) +HANDLE_BAT(, 168) +HANDLE_BAT(, 169) +HANDLE_BAT(, 170) +HANDLE_BAT(, 171) +HANDLE_BAT(, 172) +HANDLE_BAT(, 173) +HANDLE_BAT(, 174) +HANDLE_BAT(, 175) +HANDLE_BAT(, 176) +HANDLE_BAT(, 177) +HANDLE_BAT(, 178) +HANDLE_BAT(, 179) +HANDLE_BAT(, 180) +HANDLE_BAT(, 181) +HANDLE_BAT(, 182) +HANDLE_BAT(, 183) +HANDLE_BAT(, 184) +HANDLE_BAT(, 185) +HANDLE_BAT(, 186) +HANDLE_BAT(, 187) +HANDLE_BAT(, 188) +HANDLE_BAT(, 189) +HANDLE_BAT(, 190) +HANDLE_BAT(, 191) +HANDLE_BAT(, 192) +HANDLE_BAT(, 193) +HANDLE_BAT(, 194) +HANDLE_BAT(, 195) +HANDLE_BAT(, 196) +HANDLE_BAT(, 197) +HANDLE_BAT(, 198) +HANDLE_BAT(, 199) +HANDLE_BAT(, 200) +HANDLE_BAT(, 201) +HANDLE_BAT(, 202) +HANDLE_BAT(, 203) +HANDLE_BAT(, 204) +HANDLE_BAT(, 205) +HANDLE_BAT(, 206) +HANDLE_BAT(, 207) +HANDLE_BAT(, 208) +HANDLE_BAT(, 209) +HANDLE_BAT(, 210) +HANDLE_BAT(, 211) +HANDLE_BAT(, 212) +HANDLE_BAT(, 213) +HANDLE_BAT(, 214) +HANDLE_BAT(, 215) +HANDLE_BAT(, 216) +HANDLE_BAT(, 217) +HANDLE_BAT(, 218) +HANDLE_BAT(, 219) +HANDLE_BAT(, 220) +HANDLE_BAT(, 221) +HANDLE_BAT(, 222) +HANDLE_BAT(, 223) +HANDLE_BAT(, 224) +HANDLE_BAT(, 225) +HANDLE_BAT(, 226) +HANDLE_BAT(, 227) +HANDLE_BAT(, 228) +HANDLE_BAT(, 229) +HANDLE_BAT(, 230) +HANDLE_BAT(, 231) +HANDLE_BAT(, 232) +HANDLE_BAT(, 233) +HANDLE_BAT(, 234) +HANDLE_BAT(, 235) +HANDLE_BAT(, 236) +HANDLE_BAT(, 237) +HANDLE_BAT(, 238) +HANDLE_BAT(, 239) +HANDLE_BAT(, 240) +HANDLE_BAT(, 241) +HANDLE_BAT(, 242) +HANDLE_BAT(, 243) +HANDLE_BAT(, 244) +HANDLE_BAT(, 245) +HANDLE_BAT(, 246) +HANDLE_BAT(, 247) +HANDLE_BAT(, 248) +HANDLE_BAT(, 249) +HANDLE_BAT(, 250) +HANDLE_BAT(, 251) +HANDLE_BAT(, 252) +HANDLE_BAT(, 253) +HANDLE_BAT(, 254) +HANDLE_BAT(, 255) +HANDLE_BAT(, 256) +HANDLE_BAT(, 257) +HANDLE_BAT(, 258) +HANDLE_BAT(, 259) +HANDLE_BAT(, 260) +HANDLE_BAT(, 261) +HANDLE_BAT(, 262) +HANDLE_BAT(, 263) +HANDLE_BAT(, 264) +HANDLE_BAT(, 265) +HANDLE_BAT(, 266) +HANDLE_BAT(, 267) +HANDLE_BAT(, 268) +HANDLE_BAT(, 269) +HANDLE_BAT(, 270) +HANDLE_BAT(, 271) +HANDLE_BAT(, 272) +HANDLE_BAT(, 273) +HANDLE_BAT(, 274) +HANDLE_BAT(, 275) +HANDLE_BAT(, 276) +HANDLE_BAT(, 277) +HANDLE_BAT(, 278) +HANDLE_BAT(, 279) +HANDLE_BAT(, 280) +HANDLE_BAT(, 281) +HANDLE_BAT(, 282) +HANDLE_BAT(, 283) +HANDLE_BAT(, 284) +HANDLE_BAT(, 285) +HANDLE_BAT(, 286) +HANDLE_BAT(, 287) +HANDLE_BAT(, 288) +HANDLE_BAT(, 289) +HANDLE_BAT(, 290) +HANDLE_BAT(, 291) +HANDLE_BAT(, 292) +HANDLE_BAT(, 293) +HANDLE_BAT(, 294) +HANDLE_BAT(, 295) +HANDLE_BAT(, 296) +HANDLE_BAT(, 297) +HANDLE_BAT(, 298) +HANDLE_BAT(, 299) +HANDLE_BAT(, 300) +HANDLE_BAT(, 301) +HANDLE_BAT(, 302) +HANDLE_BAT(, 303) +HANDLE_BAT(, 304) +HANDLE_BAT(, 305) +HANDLE_BAT(, 306) +HANDLE_BAT(, 307) +HANDLE_BAT(, 308) +HANDLE_BAT(, 309) +HANDLE_BAT(, 310) +HANDLE_BAT(, 311) +HANDLE_BAT(, 312) +HANDLE_BAT(, 313) +HANDLE_BAT(, 314) +HANDLE_BAT(, 315) +HANDLE_BAT(, 316) +HANDLE_BAT(, 317) +HANDLE_BAT(, 318) +HANDLE_BAT(, 319) +HANDLE_BAT(, 320) +HANDLE_BAT(, 321) +HANDLE_BAT(, 322) +HANDLE_BAT(, 323) +HANDLE_BAT(, 324) +HANDLE_BAT(, 325) +HANDLE_BAT(, 326) +HANDLE_BAT(, 327) +HANDLE_BAT(, 328) +HANDLE_BAT(, 329) +HANDLE_BAT(, 330) +HANDLE_BAT(, 331) +HANDLE_BAT(, 332) +HANDLE_BAT(, 333) +HANDLE_BAT(, 334) +HANDLE_BAT(, 335) +HANDLE_BAT(, 336) +HANDLE_BAT(, 337) +HANDLE_BAT(, 338) +HANDLE_BAT(, 339) +HANDLE_BAT(, 340) +HANDLE_BAT(, 341) +HANDLE_BAT(, 342) +HANDLE_BAT(, 343) +HANDLE_BAT(, 344) +HANDLE_BAT(, 345) +HANDLE_BAT(, 346) +HANDLE_BAT(, 347) +HANDLE_BAT(, 348) +HANDLE_BAT(, 349) +HANDLE_BAT(, 350) +HANDLE_BAT(, 351) +HANDLE_BAT(, 352) +HANDLE_BAT(, 353) +HANDLE_BAT(, 354) +HANDLE_BAT(, 355) +HANDLE_BAT(, 356) +HANDLE_BAT(, 357) +HANDLE_BAT(, 358) +HANDLE_BAT(, 359) +HANDLE_BAT(, 360) +HANDLE_BAT(, 361) +HANDLE_BAT(, 362) +HANDLE_BAT(, 363) +HANDLE_BAT(, 364) +HANDLE_BAT(, 365) +HANDLE_BAT(, 366) +HANDLE_BAT(, 367) +HANDLE_BAT(, 368) +HANDLE_BAT(, 369) +HANDLE_BAT(, 370) +HANDLE_BAT(, 371) +HANDLE_BAT(, 372) +HANDLE_BAT(, 373) +HANDLE_BAT(, 374) +HANDLE_BAT(, 375) +HANDLE_BAT(, 376) +HANDLE_BAT(, 377) +HANDLE_BAT(, 378) +HANDLE_BAT(, 379) +HANDLE_BAT(, 380) +HANDLE_BAT(, 381) +HANDLE_BAT(, 382) +HANDLE_BAT(, 383) +HANDLE_BAT(, 384) +HANDLE_BAT(, 385) +HANDLE_BAT(, 386) +HANDLE_BAT(, 387) +HANDLE_BAT(, 388) +HANDLE_BAT(, 389) +HANDLE_BAT(, 390) +HANDLE_BAT(, 391) +HANDLE_BAT(, 392) +HANDLE_BAT(, 393) +HANDLE_BAT(, 394) +HANDLE_BAT(, 395) +HANDLE_BAT(, 396) +HANDLE_BAT(, 397) +HANDLE_BAT(, 398) +HANDLE_BAT(, 399) +HANDLE_BAT(, 400) +HANDLE_BAT(, 401) +HANDLE_BAT(, 402) +HANDLE_BAT(, 403) +HANDLE_BAT(, 404) +HANDLE_BAT(, 405) +HANDLE_BAT(, 406) +HANDLE_BAT(, 407) +HANDLE_BAT(, 408) +HANDLE_BAT(, 409) +HANDLE_BAT(, 410) +HANDLE_BAT(, 411) +HANDLE_BAT(, 412) +HANDLE_BAT(, 413) +HANDLE_BAT(, 414) +HANDLE_BAT(, 415) +HANDLE_BAT(, 416) +HANDLE_BAT(, 417) +HANDLE_BAT(, 418) +HANDLE_BAT(, 419) +HANDLE_BAT(, 420) +HANDLE_BAT(, 421) +HANDLE_BAT(, 422) +HANDLE_BAT(, 423) +HANDLE_BAT(, 424) +HANDLE_BAT(, 425) +HANDLE_BAT(, 426) +HANDLE_BAT(, 427) +HANDLE_BAT(, 428) +HANDLE_BAT(, 429) +HANDLE_BAT(, 430) +HANDLE_BAT(, 431) +HANDLE_BAT(, 432) +HANDLE_BAT(, 433) +HANDLE_BAT(, 434) +HANDLE_BAT(, 435) +HANDLE_BAT(, 436) +HANDLE_BAT(, 437) +HANDLE_BAT(, 438) +HANDLE_BAT(, 439) +HANDLE_BAT(, 440) +HANDLE_BAT(, 441) +HANDLE_BAT(, 442) +HANDLE_BAT(, 443) +HANDLE_BAT(, 444) +HANDLE_BAT(, 445) +HANDLE_BAT(, 446) +HANDLE_BAT(, 447) +HANDLE_BAT(, 448) +HANDLE_BAT(, 449) +HANDLE_BAT(, 450) +HANDLE_BAT(, 451) +HANDLE_BAT(, 452) +HANDLE_BAT(, 453) +HANDLE_BAT(, 454) +HANDLE_BAT(, 455) +HANDLE_BAT(, 456) +HANDLE_BAT(, 457) +HANDLE_BAT(, 458) +HANDLE_BAT(, 459) +HANDLE_BAT(, 460) +HANDLE_BAT(, 461) +HANDLE_BAT(, 462) +HANDLE_BAT(, 463) +HANDLE_BAT(, 464) +HANDLE_BAT(, 465) +HANDLE_BAT(, 466) +HANDLE_BAT(, 467) +HANDLE_BAT(, 468) +HANDLE_BAT(, 469) +HANDLE_BAT(, 470) +HANDLE_BAT(, 471) +HANDLE_BAT(, 472) +HANDLE_BAT(, 473) +HANDLE_BAT(, 474) +HANDLE_BAT(, 475) +HANDLE_BAT(, 476) +HANDLE_BAT(, 477) +HANDLE_BAT(, 478) +HANDLE_BAT(, 479) +HANDLE_BAT(, 480) +HANDLE_BAT(, 481) +HANDLE_BAT(, 482) +HANDLE_BAT(, 483) +HANDLE_BAT(, 484) +HANDLE_BAT(, 485) +HANDLE_BAT(, 486) +HANDLE_BAT(, 487) +HANDLE_BAT(, 488) +HANDLE_BAT(, 489) +HANDLE_BAT(, 490) +HANDLE_BAT(, 491) +HANDLE_BAT(, 492) +HANDLE_BAT(, 493) +HANDLE_BAT(, 494) +HANDLE_BAT(, 495) +HANDLE_BAT(, 496) +HANDLE_BAT(, 497) +HANDLE_BAT(, 498) +HANDLE_BAT(, 499) +HANDLE_BAT(, 500) +HANDLE_BAT(, 501) +HANDLE_BAT(, 502) +HANDLE_BAT(, 503) +HANDLE_BAT(, 504) +HANDLE_BAT(, 505) +HANDLE_BAT(, 506) +HANDLE_BAT(, 507) +HANDLE_BAT(, 508) +HANDLE_BAT(, 509) +HANDLE_BAT(, 510) +HANDLE_BAT(, 511) +HANDLE_BAT(, 512) +HANDLE_BAT(, 513) +HANDLE_BAT(, 514) +HANDLE_BAT(, 515) +HANDLE_BAT(, 516) +HANDLE_BAT(, 517) +HANDLE_BAT(, 518) +HANDLE_BAT(, 519) +HANDLE_BAT(, 520) +HANDLE_BAT(, 521) +HANDLE_BAT(, 522) +HANDLE_BAT(, 523) +HANDLE_BAT(, 524) +HANDLE_BAT(, 525) +HANDLE_BAT(, 526) +HANDLE_BAT(, 527) +HANDLE_BAT(, 528) +HANDLE_BAT(, 529) +HANDLE_BAT(, 530) +HANDLE_BAT(, 531) +HANDLE_BAT(, 532) +HANDLE_BAT(, 533) +HANDLE_BAT(, 534) +HANDLE_BAT(, 535) +HANDLE_BAT(, 536) +HANDLE_BAT(, 537) +HANDLE_BAT(, 538) +HANDLE_BAT(, 539) +HANDLE_BAT(, 540) +HANDLE_BAT(, 541) +HANDLE_BAT(, 542) +HANDLE_BAT(, 543) +HANDLE_BAT(, 544) +HANDLE_BAT(, 545) +HANDLE_BAT(, 546) +HANDLE_BAT(, 547) +HANDLE_BAT(, 548) +HANDLE_BAT(, 549) +HANDLE_BAT(, 550) +HANDLE_BAT(, 551) +HANDLE_BAT(, 552) +HANDLE_BAT(, 553) +HANDLE_BAT(, 554) +HANDLE_BAT(, 555) +HANDLE_BAT(, 556) +HANDLE_BAT(, 557) +HANDLE_BAT(, 558) +HANDLE_BAT(, 559) +HANDLE_BAT(, 560) +HANDLE_BAT(, 561) +HANDLE_BAT(, 562) +HANDLE_BAT(, 563) +HANDLE_BAT(, 564) +HANDLE_BAT(, 565) +HANDLE_BAT(, 566) +HANDLE_BAT(, 567) +HANDLE_BAT(, 568) +HANDLE_BAT(, 569) +HANDLE_BAT(, 570) +HANDLE_BAT(, 571) +HANDLE_BAT(, 572) +HANDLE_BAT(, 573) +HANDLE_BAT(, 574) +HANDLE_BAT(, 575) +HANDLE_BAT(, 576) +HANDLE_BAT(, 577) +HANDLE_BAT(, 578) +HANDLE_BAT(, 579) +HANDLE_BAT(, 580) +HANDLE_BAT(, 581) +HANDLE_BAT(, 582) +HANDLE_BAT(, 583) +HANDLE_BAT(, 584) +HANDLE_BAT(, 585) +HANDLE_BAT(, 586) +HANDLE_BAT(, 587) +HANDLE_BAT(, 588) +HANDLE_BAT(, 589) +HANDLE_BAT(, 590) +HANDLE_BAT(, 591) +HANDLE_BAT(, 592) +HANDLE_BAT(, 593) +HANDLE_BAT(, 594) +HANDLE_BAT(, 595) +HANDLE_BAT(, 596) +HANDLE_BAT(, 597) +HANDLE_BAT(, 598) +HANDLE_BAT(, 599) +HANDLE_BAT(, 600) +HANDLE_BAT(, 601) +HANDLE_BAT(, 602) +HANDLE_BAT(, 603) +HANDLE_BAT(, 604) +HANDLE_BAT(, 605) +HANDLE_BAT(, 606) +HANDLE_BAT(, 607) +HANDLE_BAT(, 608) +HANDLE_BAT(, 609) +HANDLE_BAT(, 610) +HANDLE_BAT(, 611) +HANDLE_BAT(, 612) +HANDLE_BAT(, 613) +HANDLE_BAT(, 614) +HANDLE_BAT(, 615) +HANDLE_BAT(, 616) +HANDLE_BAT(, 617) +HANDLE_BAT(, 618) +HANDLE_BAT(, 619) +HANDLE_BAT(, 620) +HANDLE_BAT(, 621) +HANDLE_BAT(, 622) +HANDLE_BAT(, 623) +HANDLE_BAT(, 624) +HANDLE_BAT(, 625) +HANDLE_BAT(, 626) +HANDLE_BAT(, 627) +HANDLE_BAT(, 628) +HANDLE_BAT(, 629) +HANDLE_BAT(, 630) +HANDLE_BAT(, 631) +HANDLE_BAT(, 632) +HANDLE_BAT(, 633) +HANDLE_BAT(, 634) +HANDLE_BAT(, 635) +HANDLE_BAT(, 636) +HANDLE_BAT(, 637) +HANDLE_BAT(, 638) +HANDLE_BAT(, 639) +HANDLE_BAT(, 640) +HANDLE_BAT(, 641) +HANDLE_BAT(, 642) +HANDLE_BAT(, 643) +HANDLE_BAT(, 644) +HANDLE_BAT(, 645) +HANDLE_BAT(, 646) +HANDLE_BAT(, 647) +HANDLE_BAT(, 648) +HANDLE_BAT(, 649) +HANDLE_BAT(, 650) +HANDLE_BAT(, 651) +HANDLE_BAT(, 652) +HANDLE_BAT(, 653) +HANDLE_BAT(, 654) +HANDLE_BAT(, 655) +HANDLE_BAT(, 656) +HANDLE_BAT(, 657) +HANDLE_BAT(, 658) +HANDLE_BAT(, 659) +HANDLE_BAT(, 660) +HANDLE_BAT(, 661) +HANDLE_BAT(, 662) +HANDLE_BAT(, 663) +HANDLE_BAT(, 664) +HANDLE_BAT(, 665) +HANDLE_BAT(, 666) +HANDLE_BAT(, 667) +HANDLE_BAT(, 668) +HANDLE_BAT(, 669) +HANDLE_BAT(, 670) +HANDLE_BAT(, 671) +HANDLE_BAT(, 672) +HANDLE_BAT(, 673) +HANDLE_BAT(, 674) +HANDLE_BAT(, 675) +HANDLE_BAT(, 676) +HANDLE_BAT(, 677) +HANDLE_BAT(, 678) +HANDLE_BAT(, 679) +HANDLE_BAT(, 680) +HANDLE_BAT(, 681) +HANDLE_BAT(, 682) +HANDLE_BAT(, 683) +HANDLE_BAT(, 684) +HANDLE_BAT(, 685) +HANDLE_BAT(, 686) +HANDLE_BAT(, 687) +HANDLE_BAT(, 688) +HANDLE_BAT(, 689) +HANDLE_BAT(, 690) +HANDLE_BAT(, 691) +HANDLE_BAT(, 692) +HANDLE_BAT(, 693) +HANDLE_BAT(, 694) +HANDLE_BAT(, 695) +HANDLE_BAT(, 696) +HANDLE_BAT(, 697) +HANDLE_BAT(, 698) +HANDLE_BAT(, 699) +HANDLE_BAT(, 700) +HANDLE_BAT(, 701) +HANDLE_BAT(, 702) +HANDLE_BAT(, 703) +HANDLE_BAT(, 704) +HANDLE_BAT(, 705) +HANDLE_BAT(, 706) +HANDLE_BAT(, 707) +HANDLE_BAT(, 708) +HANDLE_BAT(, 709) +HANDLE_BAT(, 710) +HANDLE_BAT(, 711) +HANDLE_BAT(, 712) +HANDLE_BAT(, 713) +HANDLE_BAT(, 714) +HANDLE_BAT(, 715) +HANDLE_BAT(, 716) +HANDLE_BAT(, 717) +HANDLE_BAT(, 718) +HANDLE_BAT(, 719) +HANDLE_BAT(, 720) +HANDLE_BAT(, 721) +HANDLE_BAT(, 722) +HANDLE_BAT(, 723) +HANDLE_BAT(, 724) +HANDLE_BAT(, 725) +HANDLE_BAT(, 726) +HANDLE_BAT(, 727) +HANDLE_BAT(, 728) +HANDLE_BAT(, 729) +HANDLE_BAT(, 730) +HANDLE_BAT(, 731) +HANDLE_BAT(, 732) +HANDLE_BAT(, 733) +HANDLE_BAT(, 734) +HANDLE_BAT(, 735) +HANDLE_BAT(, 736) +HANDLE_BAT(, 737) +HANDLE_BAT(, 738) +HANDLE_BAT(, 739) +HANDLE_BAT(, 740) +HANDLE_BAT(, 741) +HANDLE_BAT(, 742) +HANDLE_BAT(, 743) +HANDLE_BAT(, 744) +HANDLE_BAT(, 745) +HANDLE_BAT(, 746) +HANDLE_BAT(, 747) +HANDLE_BAT(, 748) +HANDLE_BAT(, 749) +HANDLE_BAT(, 750) +HANDLE_BAT(, 751) +HANDLE_BAT(, 752) +HANDLE_BAT(, 753) +HANDLE_BAT(, 754) +HANDLE_BAT(, 755) +HANDLE_BAT(, 756) +HANDLE_BAT(, 757) +HANDLE_BAT(, 758) +HANDLE_BAT(, 759) +HANDLE_BAT(, 760) +HANDLE_BAT(, 761) +HANDLE_BAT(, 762) +HANDLE_BAT(, 763) +HANDLE_BAT(, 764) +HANDLE_BAT(, 765) +HANDLE_BAT(, 766) +HANDLE_BAT(, 767) +HANDLE_BAT(, 768) +HANDLE_BAT(, 769) +HANDLE_BAT(, 770) +HANDLE_BAT(, 771) +HANDLE_BAT(, 772) +HANDLE_BAT(, 773) +HANDLE_BAT(, 774) +HANDLE_BAT(, 775) +HANDLE_BAT(, 776) +HANDLE_BAT(, 777) +HANDLE_BAT(, 778) +HANDLE_BAT(, 779) +HANDLE_BAT(, 780) +HANDLE_BAT(, 781) +HANDLE_BAT(, 782) +HANDLE_BAT(, 783) +HANDLE_BAT(, 784) +HANDLE_BAT(, 785) +HANDLE_BAT(, 786) +HANDLE_BAT(, 787) +HANDLE_BAT(, 788) +HANDLE_BAT(, 789) +HANDLE_BAT(, 790) +HANDLE_BAT(, 791) +HANDLE_BAT(, 792) +HANDLE_BAT(, 793) +HANDLE_BAT(, 794) +HANDLE_BAT(, 795) +HANDLE_BAT(, 796) +HANDLE_BAT(, 797) +HANDLE_BAT(, 798) +HANDLE_BAT(, 799) +HANDLE_BAT(, 800) +HANDLE_BAT(, 801) +HANDLE_BAT(, 802) +HANDLE_BAT(, 803) +HANDLE_BAT(, 804) +HANDLE_BAT(, 805) +HANDLE_BAT(, 806) +HANDLE_BAT(, 807) +HANDLE_BAT(, 808) +HANDLE_BAT(, 809) +HANDLE_BAT(, 810) +HANDLE_BAT(, 811) +HANDLE_BAT(, 812) +HANDLE_BAT(, 813) +HANDLE_BAT(, 814) +HANDLE_BAT(, 815) +HANDLE_BAT(, 816) +HANDLE_BAT(, 817) +HANDLE_BAT(, 818) +HANDLE_BAT(, 819) +HANDLE_BAT(, 820) +HANDLE_BAT(, 821) +HANDLE_BAT(, 822) +HANDLE_BAT(, 823) +HANDLE_BAT(, 824) +HANDLE_BAT(, 825) +HANDLE_BAT(, 826) +HANDLE_BAT(, 827) +HANDLE_BAT(, 828) +HANDLE_BAT(, 829) +HANDLE_BAT(, 830) +HANDLE_BAT(, 831) +HANDLE_BAT(, 832) +HANDLE_BAT(, 833) +HANDLE_BAT(, 834) +HANDLE_BAT(, 835) +HANDLE_BAT(, 836) +HANDLE_BAT(, 837) +HANDLE_BAT(, 838) +HANDLE_BAT(, 839) +HANDLE_BAT(, 840) +HANDLE_BAT(, 841) +HANDLE_BAT(, 842) +HANDLE_BAT(, 843) +HANDLE_BAT(, 844) +HANDLE_BAT(, 845) +HANDLE_BAT(, 846) +HANDLE_BAT(, 847) +HANDLE_BAT(, 848) +HANDLE_BAT(, 849) +HANDLE_BAT(, 850) +HANDLE_BAT(, 851) +HANDLE_BAT(, 852) +HANDLE_BAT(, 853) +HANDLE_BAT(, 854) +HANDLE_BAT(, 855) +HANDLE_BAT(, 856) +HANDLE_BAT(, 857) +HANDLE_BAT(, 858) +HANDLE_BAT(, 859) +HANDLE_BAT(, 860) +HANDLE_BAT(, 861) +HANDLE_BAT(, 862) +HANDLE_BAT(, 863) +HANDLE_BAT(, 864) +HANDLE_BAT(, 865) +HANDLE_BAT(, 866) +HANDLE_BAT(, 867) +HANDLE_BAT(, 868) +HANDLE_BAT(, 869) +HANDLE_BAT(, 870) +HANDLE_BAT(, 871) +HANDLE_BAT(, 872) +HANDLE_BAT(, 873) +HANDLE_BAT(, 874) +HANDLE_BAT(, 875) +HANDLE_BAT(, 876) +HANDLE_BAT(, 877) +HANDLE_BAT(, 878) +HANDLE_BAT(, 879) +HANDLE_BAT(, 880) +HANDLE_BAT(, 881) +HANDLE_BAT(, 882) +HANDLE_BAT(, 883) +HANDLE_BAT(, 884) +HANDLE_BAT(, 885) +HANDLE_BAT(, 886) +HANDLE_BAT(, 887) +HANDLE_BAT(, 888) +HANDLE_BAT(, 889) +HANDLE_BAT(, 890) +HANDLE_BAT(, 891) +HANDLE_BAT(, 892) +HANDLE_BAT(, 893) +HANDLE_BAT(, 894) +HANDLE_BAT(, 895) +HANDLE_BAT(, 896) +HANDLE_BAT(, 897) +HANDLE_BAT(, 898) +HANDLE_BAT(, 899) +HANDLE_BAT(, 900) +HANDLE_BAT(, 901) +HANDLE_BAT(, 902) +HANDLE_BAT(, 903) +HANDLE_BAT(, 904) +HANDLE_BAT(, 905) +HANDLE_BAT(, 906) +HANDLE_BAT(, 907) +HANDLE_BAT(, 908) +HANDLE_BAT(, 909) +HANDLE_BAT(, 910) +HANDLE_BAT(, 911) +HANDLE_BAT(, 912) +HANDLE_BAT(, 913) +HANDLE_BAT(, 914) +HANDLE_BAT(, 915) +HANDLE_BAT(, 916) +HANDLE_BAT(, 917) +HANDLE_BAT(, 918) +HANDLE_BAT(, 919) +HANDLE_BAT(, 920) +HANDLE_BAT(, 921) +HANDLE_BAT(, 922) +HANDLE_BAT(, 923) +HANDLE_BAT(, 924) +HANDLE_BAT(, 925) +HANDLE_BAT(, 926) +HANDLE_BAT(, 927) +HANDLE_BAT(, 928) +HANDLE_BAT(, 929) +HANDLE_BAT(, 930) +HANDLE_BAT(, 931) +HANDLE_BAT(, 932) +HANDLE_BAT(, 933) +HANDLE_BAT(, 934) +HANDLE_BAT(, 935) +HANDLE_BAT(, 936) +HANDLE_BAT(, 937) +HANDLE_BAT(, 938) +HANDLE_BAT(, 939) +HANDLE_BAT(, 940) +HANDLE_BAT(, 941) +HANDLE_BAT(, 942) +HANDLE_BAT(, 943) +HANDLE_BAT(, 944) +HANDLE_BAT(, 945) +HANDLE_BAT(, 946) +HANDLE_BAT(, 947) +HANDLE_BAT(, 948) +HANDLE_BAT(, 949) +HANDLE_BAT(, 950) +HANDLE_BAT(, 951) +HANDLE_BAT(, 952) +HANDLE_BAT(, 953) +HANDLE_BAT(, 954) +HANDLE_BAT(, 955) +HANDLE_BAT(, 956) +HANDLE_BAT(, 957) +HANDLE_BAT(, 958) +HANDLE_BAT(, 959) +HANDLE_BAT(, 960) +HANDLE_BAT(, 961) +HANDLE_BAT(, 962) +HANDLE_BAT(, 963) +HANDLE_BAT(, 964) +HANDLE_BAT(, 965) +HANDLE_BAT(, 966) +HANDLE_BAT(, 967) +HANDLE_BAT(, 968) +HANDLE_BAT(, 969) +HANDLE_BAT(, 970) +HANDLE_BAT(, 971) +HANDLE_BAT(, 972) +HANDLE_BAT(, 973) +HANDLE_BAT(, 974) +HANDLE_BAT(, 975) +HANDLE_BAT(, 976) +HANDLE_BAT(, 977) +HANDLE_BAT(, 978) +HANDLE_BAT(, 979) +HANDLE_BAT(, 980) +HANDLE_BAT(, 981) +HANDLE_BAT(, 982) +HANDLE_BAT(, 983) +HANDLE_BAT(, 984) +HANDLE_BAT(, 985) +HANDLE_BAT(, 986) +HANDLE_BAT(, 987) +HANDLE_BAT(, 988) +HANDLE_BAT(, 989) +HANDLE_BAT(, 990) +HANDLE_BAT(, 991) +HANDLE_BAT(, 992) +HANDLE_BAT(, 993) +HANDLE_BAT(, 994) +HANDLE_BAT(, 995) +HANDLE_BAT(, 996) +HANDLE_BAT(, 997) +HANDLE_BAT(, 998) +HANDLE_BAT(, 999) +HANDLE_BAT(, 1000) +HANDLE_BAT(, 1001) +HANDLE_BAT(, 1002) +HANDLE_BAT(, 1003) +HANDLE_BAT(, 1004) +HANDLE_BAT(, 1005) +HANDLE_BAT(, 1006) +HANDLE_BAT(, 1007) +HANDLE_BAT(, 1008) +HANDLE_BAT(, 1009) +HANDLE_BAT(, 1010) +HANDLE_BAT(, 1011) +HANDLE_BAT(, 1012) +HANDLE_BAT(, 1013) +HANDLE_BAT(, 1014) +HANDLE_BAT(, 1015) +HANDLE_BAT(, 1016) +HANDLE_BAT(, 1017) +HANDLE_BAT(, 1018) +HANDLE_BAT(, 1019) +HANDLE_BAT(, 1020) +HANDLE_BAT(, 1021) +HANDLE_BAT(, 1022) +HANDLE_BAT(, 1023) +HANDLE_BAT(, 1024) + +#else + +HANDLE_BAT(APINT_TYPE_PREFIX, 1) +HANDLE_BAT(APINT_TYPE_PREFIX, 2) +HANDLE_BAT(APINT_TYPE_PREFIX, 3) +HANDLE_BAT(APINT_TYPE_PREFIX, 4) +HANDLE_BAT(APINT_TYPE_PREFIX, 5) +HANDLE_BAT(APINT_TYPE_PREFIX, 6) +HANDLE_BAT(APINT_TYPE_PREFIX, 7) +HANDLE_BAT(APINT_TYPE_PREFIX, 8) +HANDLE_BAT(APINT_TYPE_PREFIX, 9) +HANDLE_BAT(APINT_TYPE_PREFIX, 10) +HANDLE_BAT(APINT_TYPE_PREFIX, 11) +HANDLE_BAT(APINT_TYPE_PREFIX, 12) +HANDLE_BAT(APINT_TYPE_PREFIX, 13) +HANDLE_BAT(APINT_TYPE_PREFIX, 14) +HANDLE_BAT(APINT_TYPE_PREFIX, 15) +HANDLE_BAT(APINT_TYPE_PREFIX, 16) +HANDLE_BAT(APINT_TYPE_PREFIX, 17) +HANDLE_BAT(APINT_TYPE_PREFIX, 18) +HANDLE_BAT(APINT_TYPE_PREFIX, 19) +HANDLE_BAT(APINT_TYPE_PREFIX, 20) +HANDLE_BAT(APINT_TYPE_PREFIX, 21) +HANDLE_BAT(APINT_TYPE_PREFIX, 22) +HANDLE_BAT(APINT_TYPE_PREFIX, 23) +HANDLE_BAT(APINT_TYPE_PREFIX, 24) +HANDLE_BAT(APINT_TYPE_PREFIX, 25) +HANDLE_BAT(APINT_TYPE_PREFIX, 26) +HANDLE_BAT(APINT_TYPE_PREFIX, 27) +HANDLE_BAT(APINT_TYPE_PREFIX, 28) +HANDLE_BAT(APINT_TYPE_PREFIX, 29) +HANDLE_BAT(APINT_TYPE_PREFIX, 30) +HANDLE_BAT(APINT_TYPE_PREFIX, 31) +HANDLE_BAT(APINT_TYPE_PREFIX, 32) +HANDLE_BAT(APINT_TYPE_PREFIX, 33) +HANDLE_BAT(APINT_TYPE_PREFIX, 34) +HANDLE_BAT(APINT_TYPE_PREFIX, 35) +HANDLE_BAT(APINT_TYPE_PREFIX, 36) +HANDLE_BAT(APINT_TYPE_PREFIX, 37) +HANDLE_BAT(APINT_TYPE_PREFIX, 38) +HANDLE_BAT(APINT_TYPE_PREFIX, 39) +HANDLE_BAT(APINT_TYPE_PREFIX, 40) +HANDLE_BAT(APINT_TYPE_PREFIX, 41) +HANDLE_BAT(APINT_TYPE_PREFIX, 42) +HANDLE_BAT(APINT_TYPE_PREFIX, 43) +HANDLE_BAT(APINT_TYPE_PREFIX, 44) +HANDLE_BAT(APINT_TYPE_PREFIX, 45) +HANDLE_BAT(APINT_TYPE_PREFIX, 46) +HANDLE_BAT(APINT_TYPE_PREFIX, 47) +HANDLE_BAT(APINT_TYPE_PREFIX, 48) +HANDLE_BAT(APINT_TYPE_PREFIX, 49) +HANDLE_BAT(APINT_TYPE_PREFIX, 50) +HANDLE_BAT(APINT_TYPE_PREFIX, 51) +HANDLE_BAT(APINT_TYPE_PREFIX, 52) +HANDLE_BAT(APINT_TYPE_PREFIX, 53) +HANDLE_BAT(APINT_TYPE_PREFIX, 54) +HANDLE_BAT(APINT_TYPE_PREFIX, 55) +HANDLE_BAT(APINT_TYPE_PREFIX, 56) +HANDLE_BAT(APINT_TYPE_PREFIX, 57) +HANDLE_BAT(APINT_TYPE_PREFIX, 58) +HANDLE_BAT(APINT_TYPE_PREFIX, 59) +HANDLE_BAT(APINT_TYPE_PREFIX, 60) +HANDLE_BAT(APINT_TYPE_PREFIX, 61) +HANDLE_BAT(APINT_TYPE_PREFIX, 62) +HANDLE_BAT(APINT_TYPE_PREFIX, 63) + +#ifdef APINT_DEFINE_INT64 +HANDLE_BAT(APINT_TYPE_PREFIX, 64) +#endif + +/*#if AUTOPILOT_VERSION >= 1 */ + +HANDLE_BAT(APINT_TYPE_PREFIX, 65) +HANDLE_BAT(APINT_TYPE_PREFIX, 66) +HANDLE_BAT(APINT_TYPE_PREFIX, 67) +HANDLE_BAT(APINT_TYPE_PREFIX, 68) +HANDLE_BAT(APINT_TYPE_PREFIX, 69) +HANDLE_BAT(APINT_TYPE_PREFIX, 70) +HANDLE_BAT(APINT_TYPE_PREFIX, 71) +HANDLE_BAT(APINT_TYPE_PREFIX, 72) +HANDLE_BAT(APINT_TYPE_PREFIX, 73) +HANDLE_BAT(APINT_TYPE_PREFIX, 74) +HANDLE_BAT(APINT_TYPE_PREFIX, 75) +HANDLE_BAT(APINT_TYPE_PREFIX, 76) +HANDLE_BAT(APINT_TYPE_PREFIX, 77) +HANDLE_BAT(APINT_TYPE_PREFIX, 78) +HANDLE_BAT(APINT_TYPE_PREFIX, 79) +HANDLE_BAT(APINT_TYPE_PREFIX, 80) +HANDLE_BAT(APINT_TYPE_PREFIX, 81) +HANDLE_BAT(APINT_TYPE_PREFIX, 82) +HANDLE_BAT(APINT_TYPE_PREFIX, 83) +HANDLE_BAT(APINT_TYPE_PREFIX, 84) +HANDLE_BAT(APINT_TYPE_PREFIX, 85) +HANDLE_BAT(APINT_TYPE_PREFIX, 86) +HANDLE_BAT(APINT_TYPE_PREFIX, 87) +HANDLE_BAT(APINT_TYPE_PREFIX, 88) +HANDLE_BAT(APINT_TYPE_PREFIX, 89) +HANDLE_BAT(APINT_TYPE_PREFIX, 90) +HANDLE_BAT(APINT_TYPE_PREFIX, 91) +HANDLE_BAT(APINT_TYPE_PREFIX, 92) +HANDLE_BAT(APINT_TYPE_PREFIX, 93) +HANDLE_BAT(APINT_TYPE_PREFIX, 94) +HANDLE_BAT(APINT_TYPE_PREFIX, 95) +HANDLE_BAT(APINT_TYPE_PREFIX, 96) +HANDLE_BAT(APINT_TYPE_PREFIX, 97) +HANDLE_BAT(APINT_TYPE_PREFIX, 98) +HANDLE_BAT(APINT_TYPE_PREFIX, 99) +HANDLE_BAT(APINT_TYPE_PREFIX, 100) +HANDLE_BAT(APINT_TYPE_PREFIX, 101) +HANDLE_BAT(APINT_TYPE_PREFIX, 102) +HANDLE_BAT(APINT_TYPE_PREFIX, 103) +HANDLE_BAT(APINT_TYPE_PREFIX, 104) +HANDLE_BAT(APINT_TYPE_PREFIX, 105) +HANDLE_BAT(APINT_TYPE_PREFIX, 106) +HANDLE_BAT(APINT_TYPE_PREFIX, 107) +HANDLE_BAT(APINT_TYPE_PREFIX, 108) +HANDLE_BAT(APINT_TYPE_PREFIX, 109) +HANDLE_BAT(APINT_TYPE_PREFIX, 110) +HANDLE_BAT(APINT_TYPE_PREFIX, 111) +HANDLE_BAT(APINT_TYPE_PREFIX, 112) +HANDLE_BAT(APINT_TYPE_PREFIX, 113) +HANDLE_BAT(APINT_TYPE_PREFIX, 114) +HANDLE_BAT(APINT_TYPE_PREFIX, 115) +HANDLE_BAT(APINT_TYPE_PREFIX, 116) +HANDLE_BAT(APINT_TYPE_PREFIX, 117) +HANDLE_BAT(APINT_TYPE_PREFIX, 118) +HANDLE_BAT(APINT_TYPE_PREFIX, 119) +HANDLE_BAT(APINT_TYPE_PREFIX, 120) +HANDLE_BAT(APINT_TYPE_PREFIX, 121) +HANDLE_BAT(APINT_TYPE_PREFIX, 122) +HANDLE_BAT(APINT_TYPE_PREFIX, 123) +HANDLE_BAT(APINT_TYPE_PREFIX, 124) +HANDLE_BAT(APINT_TYPE_PREFIX, 125) +HANDLE_BAT(APINT_TYPE_PREFIX, 126) +HANDLE_BAT(APINT_TYPE_PREFIX, 127) +HANDLE_BAT(APINT_TYPE_PREFIX, 128) + +/*#endif*/ + + +/*#ifdef EXTENDED_GCC*/ + +HANDLE_BAT(APINT_TYPE_PREFIX, 129) +HANDLE_BAT(APINT_TYPE_PREFIX, 130) +HANDLE_BAT(APINT_TYPE_PREFIX, 131) +HANDLE_BAT(APINT_TYPE_PREFIX, 132) +HANDLE_BAT(APINT_TYPE_PREFIX, 133) +HANDLE_BAT(APINT_TYPE_PREFIX, 134) +HANDLE_BAT(APINT_TYPE_PREFIX, 135) +HANDLE_BAT(APINT_TYPE_PREFIX, 136) +HANDLE_BAT(APINT_TYPE_PREFIX, 137) +HANDLE_BAT(APINT_TYPE_PREFIX, 138) +HANDLE_BAT(APINT_TYPE_PREFIX, 139) +HANDLE_BAT(APINT_TYPE_PREFIX, 140) +HANDLE_BAT(APINT_TYPE_PREFIX, 141) +HANDLE_BAT(APINT_TYPE_PREFIX, 142) +HANDLE_BAT(APINT_TYPE_PREFIX, 143) +HANDLE_BAT(APINT_TYPE_PREFIX, 144) +HANDLE_BAT(APINT_TYPE_PREFIX, 145) +HANDLE_BAT(APINT_TYPE_PREFIX, 146) +HANDLE_BAT(APINT_TYPE_PREFIX, 147) +HANDLE_BAT(APINT_TYPE_PREFIX, 148) +HANDLE_BAT(APINT_TYPE_PREFIX, 149) +HANDLE_BAT(APINT_TYPE_PREFIX, 150) +HANDLE_BAT(APINT_TYPE_PREFIX, 151) +HANDLE_BAT(APINT_TYPE_PREFIX, 152) +HANDLE_BAT(APINT_TYPE_PREFIX, 153) +HANDLE_BAT(APINT_TYPE_PREFIX, 154) +HANDLE_BAT(APINT_TYPE_PREFIX, 155) +HANDLE_BAT(APINT_TYPE_PREFIX, 156) +HANDLE_BAT(APINT_TYPE_PREFIX, 157) +HANDLE_BAT(APINT_TYPE_PREFIX, 158) +HANDLE_BAT(APINT_TYPE_PREFIX, 159) +HANDLE_BAT(APINT_TYPE_PREFIX, 160) +HANDLE_BAT(APINT_TYPE_PREFIX, 161) +HANDLE_BAT(APINT_TYPE_PREFIX, 162) +HANDLE_BAT(APINT_TYPE_PREFIX, 163) +HANDLE_BAT(APINT_TYPE_PREFIX, 164) +HANDLE_BAT(APINT_TYPE_PREFIX, 165) +HANDLE_BAT(APINT_TYPE_PREFIX, 166) +HANDLE_BAT(APINT_TYPE_PREFIX, 167) +HANDLE_BAT(APINT_TYPE_PREFIX, 168) +HANDLE_BAT(APINT_TYPE_PREFIX, 169) +HANDLE_BAT(APINT_TYPE_PREFIX, 170) +HANDLE_BAT(APINT_TYPE_PREFIX, 171) +HANDLE_BAT(APINT_TYPE_PREFIX, 172) +HANDLE_BAT(APINT_TYPE_PREFIX, 173) +HANDLE_BAT(APINT_TYPE_PREFIX, 174) +HANDLE_BAT(APINT_TYPE_PREFIX, 175) +HANDLE_BAT(APINT_TYPE_PREFIX, 176) +HANDLE_BAT(APINT_TYPE_PREFIX, 177) +HANDLE_BAT(APINT_TYPE_PREFIX, 178) +HANDLE_BAT(APINT_TYPE_PREFIX, 179) +HANDLE_BAT(APINT_TYPE_PREFIX, 180) +HANDLE_BAT(APINT_TYPE_PREFIX, 181) +HANDLE_BAT(APINT_TYPE_PREFIX, 182) +HANDLE_BAT(APINT_TYPE_PREFIX, 183) +HANDLE_BAT(APINT_TYPE_PREFIX, 184) +HANDLE_BAT(APINT_TYPE_PREFIX, 185) +HANDLE_BAT(APINT_TYPE_PREFIX, 186) +HANDLE_BAT(APINT_TYPE_PREFIX, 187) +HANDLE_BAT(APINT_TYPE_PREFIX, 188) +HANDLE_BAT(APINT_TYPE_PREFIX, 189) +HANDLE_BAT(APINT_TYPE_PREFIX, 190) +HANDLE_BAT(APINT_TYPE_PREFIX, 191) +HANDLE_BAT(APINT_TYPE_PREFIX, 192) +HANDLE_BAT(APINT_TYPE_PREFIX, 193) +HANDLE_BAT(APINT_TYPE_PREFIX, 194) +HANDLE_BAT(APINT_TYPE_PREFIX, 195) +HANDLE_BAT(APINT_TYPE_PREFIX, 196) +HANDLE_BAT(APINT_TYPE_PREFIX, 197) +HANDLE_BAT(APINT_TYPE_PREFIX, 198) +HANDLE_BAT(APINT_TYPE_PREFIX, 199) +HANDLE_BAT(APINT_TYPE_PREFIX, 200) +HANDLE_BAT(APINT_TYPE_PREFIX, 201) +HANDLE_BAT(APINT_TYPE_PREFIX, 202) +HANDLE_BAT(APINT_TYPE_PREFIX, 203) +HANDLE_BAT(APINT_TYPE_PREFIX, 204) +HANDLE_BAT(APINT_TYPE_PREFIX, 205) +HANDLE_BAT(APINT_TYPE_PREFIX, 206) +HANDLE_BAT(APINT_TYPE_PREFIX, 207) +HANDLE_BAT(APINT_TYPE_PREFIX, 208) +HANDLE_BAT(APINT_TYPE_PREFIX, 209) +HANDLE_BAT(APINT_TYPE_PREFIX, 210) +HANDLE_BAT(APINT_TYPE_PREFIX, 211) +HANDLE_BAT(APINT_TYPE_PREFIX, 212) +HANDLE_BAT(APINT_TYPE_PREFIX, 213) +HANDLE_BAT(APINT_TYPE_PREFIX, 214) +HANDLE_BAT(APINT_TYPE_PREFIX, 215) +HANDLE_BAT(APINT_TYPE_PREFIX, 216) +HANDLE_BAT(APINT_TYPE_PREFIX, 217) +HANDLE_BAT(APINT_TYPE_PREFIX, 218) +HANDLE_BAT(APINT_TYPE_PREFIX, 219) +HANDLE_BAT(APINT_TYPE_PREFIX, 220) +HANDLE_BAT(APINT_TYPE_PREFIX, 221) +HANDLE_BAT(APINT_TYPE_PREFIX, 222) +HANDLE_BAT(APINT_TYPE_PREFIX, 223) +HANDLE_BAT(APINT_TYPE_PREFIX, 224) +HANDLE_BAT(APINT_TYPE_PREFIX, 225) +HANDLE_BAT(APINT_TYPE_PREFIX, 226) +HANDLE_BAT(APINT_TYPE_PREFIX, 227) +HANDLE_BAT(APINT_TYPE_PREFIX, 228) +HANDLE_BAT(APINT_TYPE_PREFIX, 229) +HANDLE_BAT(APINT_TYPE_PREFIX, 230) +HANDLE_BAT(APINT_TYPE_PREFIX, 231) +HANDLE_BAT(APINT_TYPE_PREFIX, 232) +HANDLE_BAT(APINT_TYPE_PREFIX, 233) +HANDLE_BAT(APINT_TYPE_PREFIX, 234) +HANDLE_BAT(APINT_TYPE_PREFIX, 235) +HANDLE_BAT(APINT_TYPE_PREFIX, 236) +HANDLE_BAT(APINT_TYPE_PREFIX, 237) +HANDLE_BAT(APINT_TYPE_PREFIX, 238) +HANDLE_BAT(APINT_TYPE_PREFIX, 239) +HANDLE_BAT(APINT_TYPE_PREFIX, 240) +HANDLE_BAT(APINT_TYPE_PREFIX, 241) +HANDLE_BAT(APINT_TYPE_PREFIX, 242) +HANDLE_BAT(APINT_TYPE_PREFIX, 243) +HANDLE_BAT(APINT_TYPE_PREFIX, 244) +HANDLE_BAT(APINT_TYPE_PREFIX, 245) +HANDLE_BAT(APINT_TYPE_PREFIX, 246) +HANDLE_BAT(APINT_TYPE_PREFIX, 247) +HANDLE_BAT(APINT_TYPE_PREFIX, 248) +HANDLE_BAT(APINT_TYPE_PREFIX, 249) +HANDLE_BAT(APINT_TYPE_PREFIX, 250) +HANDLE_BAT(APINT_TYPE_PREFIX, 251) +HANDLE_BAT(APINT_TYPE_PREFIX, 252) +HANDLE_BAT(APINT_TYPE_PREFIX, 253) +HANDLE_BAT(APINT_TYPE_PREFIX, 254) +HANDLE_BAT(APINT_TYPE_PREFIX, 255) +HANDLE_BAT(APINT_TYPE_PREFIX, 256) +HANDLE_BAT(APINT_TYPE_PREFIX, 257) +HANDLE_BAT(APINT_TYPE_PREFIX, 258) +HANDLE_BAT(APINT_TYPE_PREFIX, 259) +HANDLE_BAT(APINT_TYPE_PREFIX, 260) +HANDLE_BAT(APINT_TYPE_PREFIX, 261) +HANDLE_BAT(APINT_TYPE_PREFIX, 262) +HANDLE_BAT(APINT_TYPE_PREFIX, 263) +HANDLE_BAT(APINT_TYPE_PREFIX, 264) +HANDLE_BAT(APINT_TYPE_PREFIX, 265) +HANDLE_BAT(APINT_TYPE_PREFIX, 266) +HANDLE_BAT(APINT_TYPE_PREFIX, 267) +HANDLE_BAT(APINT_TYPE_PREFIX, 268) +HANDLE_BAT(APINT_TYPE_PREFIX, 269) +HANDLE_BAT(APINT_TYPE_PREFIX, 270) +HANDLE_BAT(APINT_TYPE_PREFIX, 271) +HANDLE_BAT(APINT_TYPE_PREFIX, 272) +HANDLE_BAT(APINT_TYPE_PREFIX, 273) +HANDLE_BAT(APINT_TYPE_PREFIX, 274) +HANDLE_BAT(APINT_TYPE_PREFIX, 275) +HANDLE_BAT(APINT_TYPE_PREFIX, 276) +HANDLE_BAT(APINT_TYPE_PREFIX, 277) +HANDLE_BAT(APINT_TYPE_PREFIX, 278) +HANDLE_BAT(APINT_TYPE_PREFIX, 279) +HANDLE_BAT(APINT_TYPE_PREFIX, 280) +HANDLE_BAT(APINT_TYPE_PREFIX, 281) +HANDLE_BAT(APINT_TYPE_PREFIX, 282) +HANDLE_BAT(APINT_TYPE_PREFIX, 283) +HANDLE_BAT(APINT_TYPE_PREFIX, 284) +HANDLE_BAT(APINT_TYPE_PREFIX, 285) +HANDLE_BAT(APINT_TYPE_PREFIX, 286) +HANDLE_BAT(APINT_TYPE_PREFIX, 287) +HANDLE_BAT(APINT_TYPE_PREFIX, 288) +HANDLE_BAT(APINT_TYPE_PREFIX, 289) +HANDLE_BAT(APINT_TYPE_PREFIX, 290) +HANDLE_BAT(APINT_TYPE_PREFIX, 291) +HANDLE_BAT(APINT_TYPE_PREFIX, 292) +HANDLE_BAT(APINT_TYPE_PREFIX, 293) +HANDLE_BAT(APINT_TYPE_PREFIX, 294) +HANDLE_BAT(APINT_TYPE_PREFIX, 295) +HANDLE_BAT(APINT_TYPE_PREFIX, 296) +HANDLE_BAT(APINT_TYPE_PREFIX, 297) +HANDLE_BAT(APINT_TYPE_PREFIX, 298) +HANDLE_BAT(APINT_TYPE_PREFIX, 299) +HANDLE_BAT(APINT_TYPE_PREFIX, 300) +HANDLE_BAT(APINT_TYPE_PREFIX, 301) +HANDLE_BAT(APINT_TYPE_PREFIX, 302) +HANDLE_BAT(APINT_TYPE_PREFIX, 303) +HANDLE_BAT(APINT_TYPE_PREFIX, 304) +HANDLE_BAT(APINT_TYPE_PREFIX, 305) +HANDLE_BAT(APINT_TYPE_PREFIX, 306) +HANDLE_BAT(APINT_TYPE_PREFIX, 307) +HANDLE_BAT(APINT_TYPE_PREFIX, 308) +HANDLE_BAT(APINT_TYPE_PREFIX, 309) +HANDLE_BAT(APINT_TYPE_PREFIX, 310) +HANDLE_BAT(APINT_TYPE_PREFIX, 311) +HANDLE_BAT(APINT_TYPE_PREFIX, 312) +HANDLE_BAT(APINT_TYPE_PREFIX, 313) +HANDLE_BAT(APINT_TYPE_PREFIX, 314) +HANDLE_BAT(APINT_TYPE_PREFIX, 315) +HANDLE_BAT(APINT_TYPE_PREFIX, 316) +HANDLE_BAT(APINT_TYPE_PREFIX, 317) +HANDLE_BAT(APINT_TYPE_PREFIX, 318) +HANDLE_BAT(APINT_TYPE_PREFIX, 319) +HANDLE_BAT(APINT_TYPE_PREFIX, 320) +HANDLE_BAT(APINT_TYPE_PREFIX, 321) +HANDLE_BAT(APINT_TYPE_PREFIX, 322) +HANDLE_BAT(APINT_TYPE_PREFIX, 323) +HANDLE_BAT(APINT_TYPE_PREFIX, 324) +HANDLE_BAT(APINT_TYPE_PREFIX, 325) +HANDLE_BAT(APINT_TYPE_PREFIX, 326) +HANDLE_BAT(APINT_TYPE_PREFIX, 327) +HANDLE_BAT(APINT_TYPE_PREFIX, 328) +HANDLE_BAT(APINT_TYPE_PREFIX, 329) +HANDLE_BAT(APINT_TYPE_PREFIX, 330) +HANDLE_BAT(APINT_TYPE_PREFIX, 331) +HANDLE_BAT(APINT_TYPE_PREFIX, 332) +HANDLE_BAT(APINT_TYPE_PREFIX, 333) +HANDLE_BAT(APINT_TYPE_PREFIX, 334) +HANDLE_BAT(APINT_TYPE_PREFIX, 335) +HANDLE_BAT(APINT_TYPE_PREFIX, 336) +HANDLE_BAT(APINT_TYPE_PREFIX, 337) +HANDLE_BAT(APINT_TYPE_PREFIX, 338) +HANDLE_BAT(APINT_TYPE_PREFIX, 339) +HANDLE_BAT(APINT_TYPE_PREFIX, 340) +HANDLE_BAT(APINT_TYPE_PREFIX, 341) +HANDLE_BAT(APINT_TYPE_PREFIX, 342) +HANDLE_BAT(APINT_TYPE_PREFIX, 343) +HANDLE_BAT(APINT_TYPE_PREFIX, 344) +HANDLE_BAT(APINT_TYPE_PREFIX, 345) +HANDLE_BAT(APINT_TYPE_PREFIX, 346) +HANDLE_BAT(APINT_TYPE_PREFIX, 347) +HANDLE_BAT(APINT_TYPE_PREFIX, 348) +HANDLE_BAT(APINT_TYPE_PREFIX, 349) +HANDLE_BAT(APINT_TYPE_PREFIX, 350) +HANDLE_BAT(APINT_TYPE_PREFIX, 351) +HANDLE_BAT(APINT_TYPE_PREFIX, 352) +HANDLE_BAT(APINT_TYPE_PREFIX, 353) +HANDLE_BAT(APINT_TYPE_PREFIX, 354) +HANDLE_BAT(APINT_TYPE_PREFIX, 355) +HANDLE_BAT(APINT_TYPE_PREFIX, 356) +HANDLE_BAT(APINT_TYPE_PREFIX, 357) +HANDLE_BAT(APINT_TYPE_PREFIX, 358) +HANDLE_BAT(APINT_TYPE_PREFIX, 359) +HANDLE_BAT(APINT_TYPE_PREFIX, 360) +HANDLE_BAT(APINT_TYPE_PREFIX, 361) +HANDLE_BAT(APINT_TYPE_PREFIX, 362) +HANDLE_BAT(APINT_TYPE_PREFIX, 363) +HANDLE_BAT(APINT_TYPE_PREFIX, 364) +HANDLE_BAT(APINT_TYPE_PREFIX, 365) +HANDLE_BAT(APINT_TYPE_PREFIX, 366) +HANDLE_BAT(APINT_TYPE_PREFIX, 367) +HANDLE_BAT(APINT_TYPE_PREFIX, 368) +HANDLE_BAT(APINT_TYPE_PREFIX, 369) +HANDLE_BAT(APINT_TYPE_PREFIX, 370) +HANDLE_BAT(APINT_TYPE_PREFIX, 371) +HANDLE_BAT(APINT_TYPE_PREFIX, 372) +HANDLE_BAT(APINT_TYPE_PREFIX, 373) +HANDLE_BAT(APINT_TYPE_PREFIX, 374) +HANDLE_BAT(APINT_TYPE_PREFIX, 375) +HANDLE_BAT(APINT_TYPE_PREFIX, 376) +HANDLE_BAT(APINT_TYPE_PREFIX, 377) +HANDLE_BAT(APINT_TYPE_PREFIX, 378) +HANDLE_BAT(APINT_TYPE_PREFIX, 379) +HANDLE_BAT(APINT_TYPE_PREFIX, 380) +HANDLE_BAT(APINT_TYPE_PREFIX, 381) +HANDLE_BAT(APINT_TYPE_PREFIX, 382) +HANDLE_BAT(APINT_TYPE_PREFIX, 383) +HANDLE_BAT(APINT_TYPE_PREFIX, 384) +HANDLE_BAT(APINT_TYPE_PREFIX, 385) +HANDLE_BAT(APINT_TYPE_PREFIX, 386) +HANDLE_BAT(APINT_TYPE_PREFIX, 387) +HANDLE_BAT(APINT_TYPE_PREFIX, 388) +HANDLE_BAT(APINT_TYPE_PREFIX, 389) +HANDLE_BAT(APINT_TYPE_PREFIX, 390) +HANDLE_BAT(APINT_TYPE_PREFIX, 391) +HANDLE_BAT(APINT_TYPE_PREFIX, 392) +HANDLE_BAT(APINT_TYPE_PREFIX, 393) +HANDLE_BAT(APINT_TYPE_PREFIX, 394) +HANDLE_BAT(APINT_TYPE_PREFIX, 395) +HANDLE_BAT(APINT_TYPE_PREFIX, 396) +HANDLE_BAT(APINT_TYPE_PREFIX, 397) +HANDLE_BAT(APINT_TYPE_PREFIX, 398) +HANDLE_BAT(APINT_TYPE_PREFIX, 399) +HANDLE_BAT(APINT_TYPE_PREFIX, 400) +HANDLE_BAT(APINT_TYPE_PREFIX, 401) +HANDLE_BAT(APINT_TYPE_PREFIX, 402) +HANDLE_BAT(APINT_TYPE_PREFIX, 403) +HANDLE_BAT(APINT_TYPE_PREFIX, 404) +HANDLE_BAT(APINT_TYPE_PREFIX, 405) +HANDLE_BAT(APINT_TYPE_PREFIX, 406) +HANDLE_BAT(APINT_TYPE_PREFIX, 407) +HANDLE_BAT(APINT_TYPE_PREFIX, 408) +HANDLE_BAT(APINT_TYPE_PREFIX, 409) +HANDLE_BAT(APINT_TYPE_PREFIX, 410) +HANDLE_BAT(APINT_TYPE_PREFIX, 411) +HANDLE_BAT(APINT_TYPE_PREFIX, 412) +HANDLE_BAT(APINT_TYPE_PREFIX, 413) +HANDLE_BAT(APINT_TYPE_PREFIX, 414) +HANDLE_BAT(APINT_TYPE_PREFIX, 415) +HANDLE_BAT(APINT_TYPE_PREFIX, 416) +HANDLE_BAT(APINT_TYPE_PREFIX, 417) +HANDLE_BAT(APINT_TYPE_PREFIX, 418) +HANDLE_BAT(APINT_TYPE_PREFIX, 419) +HANDLE_BAT(APINT_TYPE_PREFIX, 420) +HANDLE_BAT(APINT_TYPE_PREFIX, 421) +HANDLE_BAT(APINT_TYPE_PREFIX, 422) +HANDLE_BAT(APINT_TYPE_PREFIX, 423) +HANDLE_BAT(APINT_TYPE_PREFIX, 424) +HANDLE_BAT(APINT_TYPE_PREFIX, 425) +HANDLE_BAT(APINT_TYPE_PREFIX, 426) +HANDLE_BAT(APINT_TYPE_PREFIX, 427) +HANDLE_BAT(APINT_TYPE_PREFIX, 428) +HANDLE_BAT(APINT_TYPE_PREFIX, 429) +HANDLE_BAT(APINT_TYPE_PREFIX, 430) +HANDLE_BAT(APINT_TYPE_PREFIX, 431) +HANDLE_BAT(APINT_TYPE_PREFIX, 432) +HANDLE_BAT(APINT_TYPE_PREFIX, 433) +HANDLE_BAT(APINT_TYPE_PREFIX, 434) +HANDLE_BAT(APINT_TYPE_PREFIX, 435) +HANDLE_BAT(APINT_TYPE_PREFIX, 436) +HANDLE_BAT(APINT_TYPE_PREFIX, 437) +HANDLE_BAT(APINT_TYPE_PREFIX, 438) +HANDLE_BAT(APINT_TYPE_PREFIX, 439) +HANDLE_BAT(APINT_TYPE_PREFIX, 440) +HANDLE_BAT(APINT_TYPE_PREFIX, 441) +HANDLE_BAT(APINT_TYPE_PREFIX, 442) +HANDLE_BAT(APINT_TYPE_PREFIX, 443) +HANDLE_BAT(APINT_TYPE_PREFIX, 444) +HANDLE_BAT(APINT_TYPE_PREFIX, 445) +HANDLE_BAT(APINT_TYPE_PREFIX, 446) +HANDLE_BAT(APINT_TYPE_PREFIX, 447) +HANDLE_BAT(APINT_TYPE_PREFIX, 448) +HANDLE_BAT(APINT_TYPE_PREFIX, 449) +HANDLE_BAT(APINT_TYPE_PREFIX, 450) +HANDLE_BAT(APINT_TYPE_PREFIX, 451) +HANDLE_BAT(APINT_TYPE_PREFIX, 452) +HANDLE_BAT(APINT_TYPE_PREFIX, 453) +HANDLE_BAT(APINT_TYPE_PREFIX, 454) +HANDLE_BAT(APINT_TYPE_PREFIX, 455) +HANDLE_BAT(APINT_TYPE_PREFIX, 456) +HANDLE_BAT(APINT_TYPE_PREFIX, 457) +HANDLE_BAT(APINT_TYPE_PREFIX, 458) +HANDLE_BAT(APINT_TYPE_PREFIX, 459) +HANDLE_BAT(APINT_TYPE_PREFIX, 460) +HANDLE_BAT(APINT_TYPE_PREFIX, 461) +HANDLE_BAT(APINT_TYPE_PREFIX, 462) +HANDLE_BAT(APINT_TYPE_PREFIX, 463) +HANDLE_BAT(APINT_TYPE_PREFIX, 464) +HANDLE_BAT(APINT_TYPE_PREFIX, 465) +HANDLE_BAT(APINT_TYPE_PREFIX, 466) +HANDLE_BAT(APINT_TYPE_PREFIX, 467) +HANDLE_BAT(APINT_TYPE_PREFIX, 468) +HANDLE_BAT(APINT_TYPE_PREFIX, 469) +HANDLE_BAT(APINT_TYPE_PREFIX, 470) +HANDLE_BAT(APINT_TYPE_PREFIX, 471) +HANDLE_BAT(APINT_TYPE_PREFIX, 472) +HANDLE_BAT(APINT_TYPE_PREFIX, 473) +HANDLE_BAT(APINT_TYPE_PREFIX, 474) +HANDLE_BAT(APINT_TYPE_PREFIX, 475) +HANDLE_BAT(APINT_TYPE_PREFIX, 476) +HANDLE_BAT(APINT_TYPE_PREFIX, 477) +HANDLE_BAT(APINT_TYPE_PREFIX, 478) +HANDLE_BAT(APINT_TYPE_PREFIX, 479) +HANDLE_BAT(APINT_TYPE_PREFIX, 480) +HANDLE_BAT(APINT_TYPE_PREFIX, 481) +HANDLE_BAT(APINT_TYPE_PREFIX, 482) +HANDLE_BAT(APINT_TYPE_PREFIX, 483) +HANDLE_BAT(APINT_TYPE_PREFIX, 484) +HANDLE_BAT(APINT_TYPE_PREFIX, 485) +HANDLE_BAT(APINT_TYPE_PREFIX, 486) +HANDLE_BAT(APINT_TYPE_PREFIX, 487) +HANDLE_BAT(APINT_TYPE_PREFIX, 488) +HANDLE_BAT(APINT_TYPE_PREFIX, 489) +HANDLE_BAT(APINT_TYPE_PREFIX, 490) +HANDLE_BAT(APINT_TYPE_PREFIX, 491) +HANDLE_BAT(APINT_TYPE_PREFIX, 492) +HANDLE_BAT(APINT_TYPE_PREFIX, 493) +HANDLE_BAT(APINT_TYPE_PREFIX, 494) +HANDLE_BAT(APINT_TYPE_PREFIX, 495) +HANDLE_BAT(APINT_TYPE_PREFIX, 496) +HANDLE_BAT(APINT_TYPE_PREFIX, 497) +HANDLE_BAT(APINT_TYPE_PREFIX, 498) +HANDLE_BAT(APINT_TYPE_PREFIX, 499) +HANDLE_BAT(APINT_TYPE_PREFIX, 500) +HANDLE_BAT(APINT_TYPE_PREFIX, 501) +HANDLE_BAT(APINT_TYPE_PREFIX, 502) +HANDLE_BAT(APINT_TYPE_PREFIX, 503) +HANDLE_BAT(APINT_TYPE_PREFIX, 504) +HANDLE_BAT(APINT_TYPE_PREFIX, 505) +HANDLE_BAT(APINT_TYPE_PREFIX, 506) +HANDLE_BAT(APINT_TYPE_PREFIX, 507) +HANDLE_BAT(APINT_TYPE_PREFIX, 508) +HANDLE_BAT(APINT_TYPE_PREFIX, 509) +HANDLE_BAT(APINT_TYPE_PREFIX, 510) +HANDLE_BAT(APINT_TYPE_PREFIX, 511) +HANDLE_BAT(APINT_TYPE_PREFIX, 512) +HANDLE_BAT(APINT_TYPE_PREFIX, 513) +HANDLE_BAT(APINT_TYPE_PREFIX, 514) +HANDLE_BAT(APINT_TYPE_PREFIX, 515) +HANDLE_BAT(APINT_TYPE_PREFIX, 516) +HANDLE_BAT(APINT_TYPE_PREFIX, 517) +HANDLE_BAT(APINT_TYPE_PREFIX, 518) +HANDLE_BAT(APINT_TYPE_PREFIX, 519) +HANDLE_BAT(APINT_TYPE_PREFIX, 520) +HANDLE_BAT(APINT_TYPE_PREFIX, 521) +HANDLE_BAT(APINT_TYPE_PREFIX, 522) +HANDLE_BAT(APINT_TYPE_PREFIX, 523) +HANDLE_BAT(APINT_TYPE_PREFIX, 524) +HANDLE_BAT(APINT_TYPE_PREFIX, 525) +HANDLE_BAT(APINT_TYPE_PREFIX, 526) +HANDLE_BAT(APINT_TYPE_PREFIX, 527) +HANDLE_BAT(APINT_TYPE_PREFIX, 528) +HANDLE_BAT(APINT_TYPE_PREFIX, 529) +HANDLE_BAT(APINT_TYPE_PREFIX, 530) +HANDLE_BAT(APINT_TYPE_PREFIX, 531) +HANDLE_BAT(APINT_TYPE_PREFIX, 532) +HANDLE_BAT(APINT_TYPE_PREFIX, 533) +HANDLE_BAT(APINT_TYPE_PREFIX, 534) +HANDLE_BAT(APINT_TYPE_PREFIX, 535) +HANDLE_BAT(APINT_TYPE_PREFIX, 536) +HANDLE_BAT(APINT_TYPE_PREFIX, 537) +HANDLE_BAT(APINT_TYPE_PREFIX, 538) +HANDLE_BAT(APINT_TYPE_PREFIX, 539) +HANDLE_BAT(APINT_TYPE_PREFIX, 540) +HANDLE_BAT(APINT_TYPE_PREFIX, 541) +HANDLE_BAT(APINT_TYPE_PREFIX, 542) +HANDLE_BAT(APINT_TYPE_PREFIX, 543) +HANDLE_BAT(APINT_TYPE_PREFIX, 544) +HANDLE_BAT(APINT_TYPE_PREFIX, 545) +HANDLE_BAT(APINT_TYPE_PREFIX, 546) +HANDLE_BAT(APINT_TYPE_PREFIX, 547) +HANDLE_BAT(APINT_TYPE_PREFIX, 548) +HANDLE_BAT(APINT_TYPE_PREFIX, 549) +HANDLE_BAT(APINT_TYPE_PREFIX, 550) +HANDLE_BAT(APINT_TYPE_PREFIX, 551) +HANDLE_BAT(APINT_TYPE_PREFIX, 552) +HANDLE_BAT(APINT_TYPE_PREFIX, 553) +HANDLE_BAT(APINT_TYPE_PREFIX, 554) +HANDLE_BAT(APINT_TYPE_PREFIX, 555) +HANDLE_BAT(APINT_TYPE_PREFIX, 556) +HANDLE_BAT(APINT_TYPE_PREFIX, 557) +HANDLE_BAT(APINT_TYPE_PREFIX, 558) +HANDLE_BAT(APINT_TYPE_PREFIX, 559) +HANDLE_BAT(APINT_TYPE_PREFIX, 560) +HANDLE_BAT(APINT_TYPE_PREFIX, 561) +HANDLE_BAT(APINT_TYPE_PREFIX, 562) +HANDLE_BAT(APINT_TYPE_PREFIX, 563) +HANDLE_BAT(APINT_TYPE_PREFIX, 564) +HANDLE_BAT(APINT_TYPE_PREFIX, 565) +HANDLE_BAT(APINT_TYPE_PREFIX, 566) +HANDLE_BAT(APINT_TYPE_PREFIX, 567) +HANDLE_BAT(APINT_TYPE_PREFIX, 568) +HANDLE_BAT(APINT_TYPE_PREFIX, 569) +HANDLE_BAT(APINT_TYPE_PREFIX, 570) +HANDLE_BAT(APINT_TYPE_PREFIX, 571) +HANDLE_BAT(APINT_TYPE_PREFIX, 572) +HANDLE_BAT(APINT_TYPE_PREFIX, 573) +HANDLE_BAT(APINT_TYPE_PREFIX, 574) +HANDLE_BAT(APINT_TYPE_PREFIX, 575) +HANDLE_BAT(APINT_TYPE_PREFIX, 576) +HANDLE_BAT(APINT_TYPE_PREFIX, 577) +HANDLE_BAT(APINT_TYPE_PREFIX, 578) +HANDLE_BAT(APINT_TYPE_PREFIX, 579) +HANDLE_BAT(APINT_TYPE_PREFIX, 580) +HANDLE_BAT(APINT_TYPE_PREFIX, 581) +HANDLE_BAT(APINT_TYPE_PREFIX, 582) +HANDLE_BAT(APINT_TYPE_PREFIX, 583) +HANDLE_BAT(APINT_TYPE_PREFIX, 584) +HANDLE_BAT(APINT_TYPE_PREFIX, 585) +HANDLE_BAT(APINT_TYPE_PREFIX, 586) +HANDLE_BAT(APINT_TYPE_PREFIX, 587) +HANDLE_BAT(APINT_TYPE_PREFIX, 588) +HANDLE_BAT(APINT_TYPE_PREFIX, 589) +HANDLE_BAT(APINT_TYPE_PREFIX, 590) +HANDLE_BAT(APINT_TYPE_PREFIX, 591) +HANDLE_BAT(APINT_TYPE_PREFIX, 592) +HANDLE_BAT(APINT_TYPE_PREFIX, 593) +HANDLE_BAT(APINT_TYPE_PREFIX, 594) +HANDLE_BAT(APINT_TYPE_PREFIX, 595) +HANDLE_BAT(APINT_TYPE_PREFIX, 596) +HANDLE_BAT(APINT_TYPE_PREFIX, 597) +HANDLE_BAT(APINT_TYPE_PREFIX, 598) +HANDLE_BAT(APINT_TYPE_PREFIX, 599) +HANDLE_BAT(APINT_TYPE_PREFIX, 600) +HANDLE_BAT(APINT_TYPE_PREFIX, 601) +HANDLE_BAT(APINT_TYPE_PREFIX, 602) +HANDLE_BAT(APINT_TYPE_PREFIX, 603) +HANDLE_BAT(APINT_TYPE_PREFIX, 604) +HANDLE_BAT(APINT_TYPE_PREFIX, 605) +HANDLE_BAT(APINT_TYPE_PREFIX, 606) +HANDLE_BAT(APINT_TYPE_PREFIX, 607) +HANDLE_BAT(APINT_TYPE_PREFIX, 608) +HANDLE_BAT(APINT_TYPE_PREFIX, 609) +HANDLE_BAT(APINT_TYPE_PREFIX, 610) +HANDLE_BAT(APINT_TYPE_PREFIX, 611) +HANDLE_BAT(APINT_TYPE_PREFIX, 612) +HANDLE_BAT(APINT_TYPE_PREFIX, 613) +HANDLE_BAT(APINT_TYPE_PREFIX, 614) +HANDLE_BAT(APINT_TYPE_PREFIX, 615) +HANDLE_BAT(APINT_TYPE_PREFIX, 616) +HANDLE_BAT(APINT_TYPE_PREFIX, 617) +HANDLE_BAT(APINT_TYPE_PREFIX, 618) +HANDLE_BAT(APINT_TYPE_PREFIX, 619) +HANDLE_BAT(APINT_TYPE_PREFIX, 620) +HANDLE_BAT(APINT_TYPE_PREFIX, 621) +HANDLE_BAT(APINT_TYPE_PREFIX, 622) +HANDLE_BAT(APINT_TYPE_PREFIX, 623) +HANDLE_BAT(APINT_TYPE_PREFIX, 624) +HANDLE_BAT(APINT_TYPE_PREFIX, 625) +HANDLE_BAT(APINT_TYPE_PREFIX, 626) +HANDLE_BAT(APINT_TYPE_PREFIX, 627) +HANDLE_BAT(APINT_TYPE_PREFIX, 628) +HANDLE_BAT(APINT_TYPE_PREFIX, 629) +HANDLE_BAT(APINT_TYPE_PREFIX, 630) +HANDLE_BAT(APINT_TYPE_PREFIX, 631) +HANDLE_BAT(APINT_TYPE_PREFIX, 632) +HANDLE_BAT(APINT_TYPE_PREFIX, 633) +HANDLE_BAT(APINT_TYPE_PREFIX, 634) +HANDLE_BAT(APINT_TYPE_PREFIX, 635) +HANDLE_BAT(APINT_TYPE_PREFIX, 636) +HANDLE_BAT(APINT_TYPE_PREFIX, 637) +HANDLE_BAT(APINT_TYPE_PREFIX, 638) +HANDLE_BAT(APINT_TYPE_PREFIX, 639) +HANDLE_BAT(APINT_TYPE_PREFIX, 640) +HANDLE_BAT(APINT_TYPE_PREFIX, 641) +HANDLE_BAT(APINT_TYPE_PREFIX, 642) +HANDLE_BAT(APINT_TYPE_PREFIX, 643) +HANDLE_BAT(APINT_TYPE_PREFIX, 644) +HANDLE_BAT(APINT_TYPE_PREFIX, 645) +HANDLE_BAT(APINT_TYPE_PREFIX, 646) +HANDLE_BAT(APINT_TYPE_PREFIX, 647) +HANDLE_BAT(APINT_TYPE_PREFIX, 648) +HANDLE_BAT(APINT_TYPE_PREFIX, 649) +HANDLE_BAT(APINT_TYPE_PREFIX, 650) +HANDLE_BAT(APINT_TYPE_PREFIX, 651) +HANDLE_BAT(APINT_TYPE_PREFIX, 652) +HANDLE_BAT(APINT_TYPE_PREFIX, 653) +HANDLE_BAT(APINT_TYPE_PREFIX, 654) +HANDLE_BAT(APINT_TYPE_PREFIX, 655) +HANDLE_BAT(APINT_TYPE_PREFIX, 656) +HANDLE_BAT(APINT_TYPE_PREFIX, 657) +HANDLE_BAT(APINT_TYPE_PREFIX, 658) +HANDLE_BAT(APINT_TYPE_PREFIX, 659) +HANDLE_BAT(APINT_TYPE_PREFIX, 660) +HANDLE_BAT(APINT_TYPE_PREFIX, 661) +HANDLE_BAT(APINT_TYPE_PREFIX, 662) +HANDLE_BAT(APINT_TYPE_PREFIX, 663) +HANDLE_BAT(APINT_TYPE_PREFIX, 664) +HANDLE_BAT(APINT_TYPE_PREFIX, 665) +HANDLE_BAT(APINT_TYPE_PREFIX, 666) +HANDLE_BAT(APINT_TYPE_PREFIX, 667) +HANDLE_BAT(APINT_TYPE_PREFIX, 668) +HANDLE_BAT(APINT_TYPE_PREFIX, 669) +HANDLE_BAT(APINT_TYPE_PREFIX, 670) +HANDLE_BAT(APINT_TYPE_PREFIX, 671) +HANDLE_BAT(APINT_TYPE_PREFIX, 672) +HANDLE_BAT(APINT_TYPE_PREFIX, 673) +HANDLE_BAT(APINT_TYPE_PREFIX, 674) +HANDLE_BAT(APINT_TYPE_PREFIX, 675) +HANDLE_BAT(APINT_TYPE_PREFIX, 676) +HANDLE_BAT(APINT_TYPE_PREFIX, 677) +HANDLE_BAT(APINT_TYPE_PREFIX, 678) +HANDLE_BAT(APINT_TYPE_PREFIX, 679) +HANDLE_BAT(APINT_TYPE_PREFIX, 680) +HANDLE_BAT(APINT_TYPE_PREFIX, 681) +HANDLE_BAT(APINT_TYPE_PREFIX, 682) +HANDLE_BAT(APINT_TYPE_PREFIX, 683) +HANDLE_BAT(APINT_TYPE_PREFIX, 684) +HANDLE_BAT(APINT_TYPE_PREFIX, 685) +HANDLE_BAT(APINT_TYPE_PREFIX, 686) +HANDLE_BAT(APINT_TYPE_PREFIX, 687) +HANDLE_BAT(APINT_TYPE_PREFIX, 688) +HANDLE_BAT(APINT_TYPE_PREFIX, 689) +HANDLE_BAT(APINT_TYPE_PREFIX, 690) +HANDLE_BAT(APINT_TYPE_PREFIX, 691) +HANDLE_BAT(APINT_TYPE_PREFIX, 692) +HANDLE_BAT(APINT_TYPE_PREFIX, 693) +HANDLE_BAT(APINT_TYPE_PREFIX, 694) +HANDLE_BAT(APINT_TYPE_PREFIX, 695) +HANDLE_BAT(APINT_TYPE_PREFIX, 696) +HANDLE_BAT(APINT_TYPE_PREFIX, 697) +HANDLE_BAT(APINT_TYPE_PREFIX, 698) +HANDLE_BAT(APINT_TYPE_PREFIX, 699) +HANDLE_BAT(APINT_TYPE_PREFIX, 700) +HANDLE_BAT(APINT_TYPE_PREFIX, 701) +HANDLE_BAT(APINT_TYPE_PREFIX, 702) +HANDLE_BAT(APINT_TYPE_PREFIX, 703) +HANDLE_BAT(APINT_TYPE_PREFIX, 704) +HANDLE_BAT(APINT_TYPE_PREFIX, 705) +HANDLE_BAT(APINT_TYPE_PREFIX, 706) +HANDLE_BAT(APINT_TYPE_PREFIX, 707) +HANDLE_BAT(APINT_TYPE_PREFIX, 708) +HANDLE_BAT(APINT_TYPE_PREFIX, 709) +HANDLE_BAT(APINT_TYPE_PREFIX, 710) +HANDLE_BAT(APINT_TYPE_PREFIX, 711) +HANDLE_BAT(APINT_TYPE_PREFIX, 712) +HANDLE_BAT(APINT_TYPE_PREFIX, 713) +HANDLE_BAT(APINT_TYPE_PREFIX, 714) +HANDLE_BAT(APINT_TYPE_PREFIX, 715) +HANDLE_BAT(APINT_TYPE_PREFIX, 716) +HANDLE_BAT(APINT_TYPE_PREFIX, 717) +HANDLE_BAT(APINT_TYPE_PREFIX, 718) +HANDLE_BAT(APINT_TYPE_PREFIX, 719) +HANDLE_BAT(APINT_TYPE_PREFIX, 720) +HANDLE_BAT(APINT_TYPE_PREFIX, 721) +HANDLE_BAT(APINT_TYPE_PREFIX, 722) +HANDLE_BAT(APINT_TYPE_PREFIX, 723) +HANDLE_BAT(APINT_TYPE_PREFIX, 724) +HANDLE_BAT(APINT_TYPE_PREFIX, 725) +HANDLE_BAT(APINT_TYPE_PREFIX, 726) +HANDLE_BAT(APINT_TYPE_PREFIX, 727) +HANDLE_BAT(APINT_TYPE_PREFIX, 728) +HANDLE_BAT(APINT_TYPE_PREFIX, 729) +HANDLE_BAT(APINT_TYPE_PREFIX, 730) +HANDLE_BAT(APINT_TYPE_PREFIX, 731) +HANDLE_BAT(APINT_TYPE_PREFIX, 732) +HANDLE_BAT(APINT_TYPE_PREFIX, 733) +HANDLE_BAT(APINT_TYPE_PREFIX, 734) +HANDLE_BAT(APINT_TYPE_PREFIX, 735) +HANDLE_BAT(APINT_TYPE_PREFIX, 736) +HANDLE_BAT(APINT_TYPE_PREFIX, 737) +HANDLE_BAT(APINT_TYPE_PREFIX, 738) +HANDLE_BAT(APINT_TYPE_PREFIX, 739) +HANDLE_BAT(APINT_TYPE_PREFIX, 740) +HANDLE_BAT(APINT_TYPE_PREFIX, 741) +HANDLE_BAT(APINT_TYPE_PREFIX, 742) +HANDLE_BAT(APINT_TYPE_PREFIX, 743) +HANDLE_BAT(APINT_TYPE_PREFIX, 744) +HANDLE_BAT(APINT_TYPE_PREFIX, 745) +HANDLE_BAT(APINT_TYPE_PREFIX, 746) +HANDLE_BAT(APINT_TYPE_PREFIX, 747) +HANDLE_BAT(APINT_TYPE_PREFIX, 748) +HANDLE_BAT(APINT_TYPE_PREFIX, 749) +HANDLE_BAT(APINT_TYPE_PREFIX, 750) +HANDLE_BAT(APINT_TYPE_PREFIX, 751) +HANDLE_BAT(APINT_TYPE_PREFIX, 752) +HANDLE_BAT(APINT_TYPE_PREFIX, 753) +HANDLE_BAT(APINT_TYPE_PREFIX, 754) +HANDLE_BAT(APINT_TYPE_PREFIX, 755) +HANDLE_BAT(APINT_TYPE_PREFIX, 756) +HANDLE_BAT(APINT_TYPE_PREFIX, 757) +HANDLE_BAT(APINT_TYPE_PREFIX, 758) +HANDLE_BAT(APINT_TYPE_PREFIX, 759) +HANDLE_BAT(APINT_TYPE_PREFIX, 760) +HANDLE_BAT(APINT_TYPE_PREFIX, 761) +HANDLE_BAT(APINT_TYPE_PREFIX, 762) +HANDLE_BAT(APINT_TYPE_PREFIX, 763) +HANDLE_BAT(APINT_TYPE_PREFIX, 764) +HANDLE_BAT(APINT_TYPE_PREFIX, 765) +HANDLE_BAT(APINT_TYPE_PREFIX, 766) +HANDLE_BAT(APINT_TYPE_PREFIX, 767) +HANDLE_BAT(APINT_TYPE_PREFIX, 768) +HANDLE_BAT(APINT_TYPE_PREFIX, 769) +HANDLE_BAT(APINT_TYPE_PREFIX, 770) +HANDLE_BAT(APINT_TYPE_PREFIX, 771) +HANDLE_BAT(APINT_TYPE_PREFIX, 772) +HANDLE_BAT(APINT_TYPE_PREFIX, 773) +HANDLE_BAT(APINT_TYPE_PREFIX, 774) +HANDLE_BAT(APINT_TYPE_PREFIX, 775) +HANDLE_BAT(APINT_TYPE_PREFIX, 776) +HANDLE_BAT(APINT_TYPE_PREFIX, 777) +HANDLE_BAT(APINT_TYPE_PREFIX, 778) +HANDLE_BAT(APINT_TYPE_PREFIX, 779) +HANDLE_BAT(APINT_TYPE_PREFIX, 780) +HANDLE_BAT(APINT_TYPE_PREFIX, 781) +HANDLE_BAT(APINT_TYPE_PREFIX, 782) +HANDLE_BAT(APINT_TYPE_PREFIX, 783) +HANDLE_BAT(APINT_TYPE_PREFIX, 784) +HANDLE_BAT(APINT_TYPE_PREFIX, 785) +HANDLE_BAT(APINT_TYPE_PREFIX, 786) +HANDLE_BAT(APINT_TYPE_PREFIX, 787) +HANDLE_BAT(APINT_TYPE_PREFIX, 788) +HANDLE_BAT(APINT_TYPE_PREFIX, 789) +HANDLE_BAT(APINT_TYPE_PREFIX, 790) +HANDLE_BAT(APINT_TYPE_PREFIX, 791) +HANDLE_BAT(APINT_TYPE_PREFIX, 792) +HANDLE_BAT(APINT_TYPE_PREFIX, 793) +HANDLE_BAT(APINT_TYPE_PREFIX, 794) +HANDLE_BAT(APINT_TYPE_PREFIX, 795) +HANDLE_BAT(APINT_TYPE_PREFIX, 796) +HANDLE_BAT(APINT_TYPE_PREFIX, 797) +HANDLE_BAT(APINT_TYPE_PREFIX, 798) +HANDLE_BAT(APINT_TYPE_PREFIX, 799) +HANDLE_BAT(APINT_TYPE_PREFIX, 800) +HANDLE_BAT(APINT_TYPE_PREFIX, 801) +HANDLE_BAT(APINT_TYPE_PREFIX, 802) +HANDLE_BAT(APINT_TYPE_PREFIX, 803) +HANDLE_BAT(APINT_TYPE_PREFIX, 804) +HANDLE_BAT(APINT_TYPE_PREFIX, 805) +HANDLE_BAT(APINT_TYPE_PREFIX, 806) +HANDLE_BAT(APINT_TYPE_PREFIX, 807) +HANDLE_BAT(APINT_TYPE_PREFIX, 808) +HANDLE_BAT(APINT_TYPE_PREFIX, 809) +HANDLE_BAT(APINT_TYPE_PREFIX, 810) +HANDLE_BAT(APINT_TYPE_PREFIX, 811) +HANDLE_BAT(APINT_TYPE_PREFIX, 812) +HANDLE_BAT(APINT_TYPE_PREFIX, 813) +HANDLE_BAT(APINT_TYPE_PREFIX, 814) +HANDLE_BAT(APINT_TYPE_PREFIX, 815) +HANDLE_BAT(APINT_TYPE_PREFIX, 816) +HANDLE_BAT(APINT_TYPE_PREFIX, 817) +HANDLE_BAT(APINT_TYPE_PREFIX, 818) +HANDLE_BAT(APINT_TYPE_PREFIX, 819) +HANDLE_BAT(APINT_TYPE_PREFIX, 820) +HANDLE_BAT(APINT_TYPE_PREFIX, 821) +HANDLE_BAT(APINT_TYPE_PREFIX, 822) +HANDLE_BAT(APINT_TYPE_PREFIX, 823) +HANDLE_BAT(APINT_TYPE_PREFIX, 824) +HANDLE_BAT(APINT_TYPE_PREFIX, 825) +HANDLE_BAT(APINT_TYPE_PREFIX, 826) +HANDLE_BAT(APINT_TYPE_PREFIX, 827) +HANDLE_BAT(APINT_TYPE_PREFIX, 828) +HANDLE_BAT(APINT_TYPE_PREFIX, 829) +HANDLE_BAT(APINT_TYPE_PREFIX, 830) +HANDLE_BAT(APINT_TYPE_PREFIX, 831) +HANDLE_BAT(APINT_TYPE_PREFIX, 832) +HANDLE_BAT(APINT_TYPE_PREFIX, 833) +HANDLE_BAT(APINT_TYPE_PREFIX, 834) +HANDLE_BAT(APINT_TYPE_PREFIX, 835) +HANDLE_BAT(APINT_TYPE_PREFIX, 836) +HANDLE_BAT(APINT_TYPE_PREFIX, 837) +HANDLE_BAT(APINT_TYPE_PREFIX, 838) +HANDLE_BAT(APINT_TYPE_PREFIX, 839) +HANDLE_BAT(APINT_TYPE_PREFIX, 840) +HANDLE_BAT(APINT_TYPE_PREFIX, 841) +HANDLE_BAT(APINT_TYPE_PREFIX, 842) +HANDLE_BAT(APINT_TYPE_PREFIX, 843) +HANDLE_BAT(APINT_TYPE_PREFIX, 844) +HANDLE_BAT(APINT_TYPE_PREFIX, 845) +HANDLE_BAT(APINT_TYPE_PREFIX, 846) +HANDLE_BAT(APINT_TYPE_PREFIX, 847) +HANDLE_BAT(APINT_TYPE_PREFIX, 848) +HANDLE_BAT(APINT_TYPE_PREFIX, 849) +HANDLE_BAT(APINT_TYPE_PREFIX, 850) +HANDLE_BAT(APINT_TYPE_PREFIX, 851) +HANDLE_BAT(APINT_TYPE_PREFIX, 852) +HANDLE_BAT(APINT_TYPE_PREFIX, 853) +HANDLE_BAT(APINT_TYPE_PREFIX, 854) +HANDLE_BAT(APINT_TYPE_PREFIX, 855) +HANDLE_BAT(APINT_TYPE_PREFIX, 856) +HANDLE_BAT(APINT_TYPE_PREFIX, 857) +HANDLE_BAT(APINT_TYPE_PREFIX, 858) +HANDLE_BAT(APINT_TYPE_PREFIX, 859) +HANDLE_BAT(APINT_TYPE_PREFIX, 860) +HANDLE_BAT(APINT_TYPE_PREFIX, 861) +HANDLE_BAT(APINT_TYPE_PREFIX, 862) +HANDLE_BAT(APINT_TYPE_PREFIX, 863) +HANDLE_BAT(APINT_TYPE_PREFIX, 864) +HANDLE_BAT(APINT_TYPE_PREFIX, 865) +HANDLE_BAT(APINT_TYPE_PREFIX, 866) +HANDLE_BAT(APINT_TYPE_PREFIX, 867) +HANDLE_BAT(APINT_TYPE_PREFIX, 868) +HANDLE_BAT(APINT_TYPE_PREFIX, 869) +HANDLE_BAT(APINT_TYPE_PREFIX, 870) +HANDLE_BAT(APINT_TYPE_PREFIX, 871) +HANDLE_BAT(APINT_TYPE_PREFIX, 872) +HANDLE_BAT(APINT_TYPE_PREFIX, 873) +HANDLE_BAT(APINT_TYPE_PREFIX, 874) +HANDLE_BAT(APINT_TYPE_PREFIX, 875) +HANDLE_BAT(APINT_TYPE_PREFIX, 876) +HANDLE_BAT(APINT_TYPE_PREFIX, 877) +HANDLE_BAT(APINT_TYPE_PREFIX, 878) +HANDLE_BAT(APINT_TYPE_PREFIX, 879) +HANDLE_BAT(APINT_TYPE_PREFIX, 880) +HANDLE_BAT(APINT_TYPE_PREFIX, 881) +HANDLE_BAT(APINT_TYPE_PREFIX, 882) +HANDLE_BAT(APINT_TYPE_PREFIX, 883) +HANDLE_BAT(APINT_TYPE_PREFIX, 884) +HANDLE_BAT(APINT_TYPE_PREFIX, 885) +HANDLE_BAT(APINT_TYPE_PREFIX, 886) +HANDLE_BAT(APINT_TYPE_PREFIX, 887) +HANDLE_BAT(APINT_TYPE_PREFIX, 888) +HANDLE_BAT(APINT_TYPE_PREFIX, 889) +HANDLE_BAT(APINT_TYPE_PREFIX, 890) +HANDLE_BAT(APINT_TYPE_PREFIX, 891) +HANDLE_BAT(APINT_TYPE_PREFIX, 892) +HANDLE_BAT(APINT_TYPE_PREFIX, 893) +HANDLE_BAT(APINT_TYPE_PREFIX, 894) +HANDLE_BAT(APINT_TYPE_PREFIX, 895) +HANDLE_BAT(APINT_TYPE_PREFIX, 896) +HANDLE_BAT(APINT_TYPE_PREFIX, 897) +HANDLE_BAT(APINT_TYPE_PREFIX, 898) +HANDLE_BAT(APINT_TYPE_PREFIX, 899) +HANDLE_BAT(APINT_TYPE_PREFIX, 900) +HANDLE_BAT(APINT_TYPE_PREFIX, 901) +HANDLE_BAT(APINT_TYPE_PREFIX, 902) +HANDLE_BAT(APINT_TYPE_PREFIX, 903) +HANDLE_BAT(APINT_TYPE_PREFIX, 904) +HANDLE_BAT(APINT_TYPE_PREFIX, 905) +HANDLE_BAT(APINT_TYPE_PREFIX, 906) +HANDLE_BAT(APINT_TYPE_PREFIX, 907) +HANDLE_BAT(APINT_TYPE_PREFIX, 908) +HANDLE_BAT(APINT_TYPE_PREFIX, 909) +HANDLE_BAT(APINT_TYPE_PREFIX, 910) +HANDLE_BAT(APINT_TYPE_PREFIX, 911) +HANDLE_BAT(APINT_TYPE_PREFIX, 912) +HANDLE_BAT(APINT_TYPE_PREFIX, 913) +HANDLE_BAT(APINT_TYPE_PREFIX, 914) +HANDLE_BAT(APINT_TYPE_PREFIX, 915) +HANDLE_BAT(APINT_TYPE_PREFIX, 916) +HANDLE_BAT(APINT_TYPE_PREFIX, 917) +HANDLE_BAT(APINT_TYPE_PREFIX, 918) +HANDLE_BAT(APINT_TYPE_PREFIX, 919) +HANDLE_BAT(APINT_TYPE_PREFIX, 920) +HANDLE_BAT(APINT_TYPE_PREFIX, 921) +HANDLE_BAT(APINT_TYPE_PREFIX, 922) +HANDLE_BAT(APINT_TYPE_PREFIX, 923) +HANDLE_BAT(APINT_TYPE_PREFIX, 924) +HANDLE_BAT(APINT_TYPE_PREFIX, 925) +HANDLE_BAT(APINT_TYPE_PREFIX, 926) +HANDLE_BAT(APINT_TYPE_PREFIX, 927) +HANDLE_BAT(APINT_TYPE_PREFIX, 928) +HANDLE_BAT(APINT_TYPE_PREFIX, 929) +HANDLE_BAT(APINT_TYPE_PREFIX, 930) +HANDLE_BAT(APINT_TYPE_PREFIX, 931) +HANDLE_BAT(APINT_TYPE_PREFIX, 932) +HANDLE_BAT(APINT_TYPE_PREFIX, 933) +HANDLE_BAT(APINT_TYPE_PREFIX, 934) +HANDLE_BAT(APINT_TYPE_PREFIX, 935) +HANDLE_BAT(APINT_TYPE_PREFIX, 936) +HANDLE_BAT(APINT_TYPE_PREFIX, 937) +HANDLE_BAT(APINT_TYPE_PREFIX, 938) +HANDLE_BAT(APINT_TYPE_PREFIX, 939) +HANDLE_BAT(APINT_TYPE_PREFIX, 940) +HANDLE_BAT(APINT_TYPE_PREFIX, 941) +HANDLE_BAT(APINT_TYPE_PREFIX, 942) +HANDLE_BAT(APINT_TYPE_PREFIX, 943) +HANDLE_BAT(APINT_TYPE_PREFIX, 944) +HANDLE_BAT(APINT_TYPE_PREFIX, 945) +HANDLE_BAT(APINT_TYPE_PREFIX, 946) +HANDLE_BAT(APINT_TYPE_PREFIX, 947) +HANDLE_BAT(APINT_TYPE_PREFIX, 948) +HANDLE_BAT(APINT_TYPE_PREFIX, 949) +HANDLE_BAT(APINT_TYPE_PREFIX, 950) +HANDLE_BAT(APINT_TYPE_PREFIX, 951) +HANDLE_BAT(APINT_TYPE_PREFIX, 952) +HANDLE_BAT(APINT_TYPE_PREFIX, 953) +HANDLE_BAT(APINT_TYPE_PREFIX, 954) +HANDLE_BAT(APINT_TYPE_PREFIX, 955) +HANDLE_BAT(APINT_TYPE_PREFIX, 956) +HANDLE_BAT(APINT_TYPE_PREFIX, 957) +HANDLE_BAT(APINT_TYPE_PREFIX, 958) +HANDLE_BAT(APINT_TYPE_PREFIX, 959) +HANDLE_BAT(APINT_TYPE_PREFIX, 960) +HANDLE_BAT(APINT_TYPE_PREFIX, 961) +HANDLE_BAT(APINT_TYPE_PREFIX, 962) +HANDLE_BAT(APINT_TYPE_PREFIX, 963) +HANDLE_BAT(APINT_TYPE_PREFIX, 964) +HANDLE_BAT(APINT_TYPE_PREFIX, 965) +HANDLE_BAT(APINT_TYPE_PREFIX, 966) +HANDLE_BAT(APINT_TYPE_PREFIX, 967) +HANDLE_BAT(APINT_TYPE_PREFIX, 968) +HANDLE_BAT(APINT_TYPE_PREFIX, 969) +HANDLE_BAT(APINT_TYPE_PREFIX, 970) +HANDLE_BAT(APINT_TYPE_PREFIX, 971) +HANDLE_BAT(APINT_TYPE_PREFIX, 972) +HANDLE_BAT(APINT_TYPE_PREFIX, 973) +HANDLE_BAT(APINT_TYPE_PREFIX, 974) +HANDLE_BAT(APINT_TYPE_PREFIX, 975) +HANDLE_BAT(APINT_TYPE_PREFIX, 976) +HANDLE_BAT(APINT_TYPE_PREFIX, 977) +HANDLE_BAT(APINT_TYPE_PREFIX, 978) +HANDLE_BAT(APINT_TYPE_PREFIX, 979) +HANDLE_BAT(APINT_TYPE_PREFIX, 980) +HANDLE_BAT(APINT_TYPE_PREFIX, 981) +HANDLE_BAT(APINT_TYPE_PREFIX, 982) +HANDLE_BAT(APINT_TYPE_PREFIX, 983) +HANDLE_BAT(APINT_TYPE_PREFIX, 984) +HANDLE_BAT(APINT_TYPE_PREFIX, 985) +HANDLE_BAT(APINT_TYPE_PREFIX, 986) +HANDLE_BAT(APINT_TYPE_PREFIX, 987) +HANDLE_BAT(APINT_TYPE_PREFIX, 988) +HANDLE_BAT(APINT_TYPE_PREFIX, 989) +HANDLE_BAT(APINT_TYPE_PREFIX, 990) +HANDLE_BAT(APINT_TYPE_PREFIX, 991) +HANDLE_BAT(APINT_TYPE_PREFIX, 992) +HANDLE_BAT(APINT_TYPE_PREFIX, 993) +HANDLE_BAT(APINT_TYPE_PREFIX, 994) +HANDLE_BAT(APINT_TYPE_PREFIX, 995) +HANDLE_BAT(APINT_TYPE_PREFIX, 996) +HANDLE_BAT(APINT_TYPE_PREFIX, 997) +HANDLE_BAT(APINT_TYPE_PREFIX, 998) +HANDLE_BAT(APINT_TYPE_PREFIX, 999) +HANDLE_BAT(APINT_TYPE_PREFIX, 1000) +HANDLE_BAT(APINT_TYPE_PREFIX, 1001) +HANDLE_BAT(APINT_TYPE_PREFIX, 1002) +HANDLE_BAT(APINT_TYPE_PREFIX, 1003) +HANDLE_BAT(APINT_TYPE_PREFIX, 1004) +HANDLE_BAT(APINT_TYPE_PREFIX, 1005) +HANDLE_BAT(APINT_TYPE_PREFIX, 1006) +HANDLE_BAT(APINT_TYPE_PREFIX, 1007) +HANDLE_BAT(APINT_TYPE_PREFIX, 1008) +HANDLE_BAT(APINT_TYPE_PREFIX, 1009) +HANDLE_BAT(APINT_TYPE_PREFIX, 1010) +HANDLE_BAT(APINT_TYPE_PREFIX, 1011) +HANDLE_BAT(APINT_TYPE_PREFIX, 1012) +HANDLE_BAT(APINT_TYPE_PREFIX, 1013) +HANDLE_BAT(APINT_TYPE_PREFIX, 1014) +HANDLE_BAT(APINT_TYPE_PREFIX, 1015) +HANDLE_BAT(APINT_TYPE_PREFIX, 1016) +HANDLE_BAT(APINT_TYPE_PREFIX, 1017) +HANDLE_BAT(APINT_TYPE_PREFIX, 1018) +HANDLE_BAT(APINT_TYPE_PREFIX, 1019) +HANDLE_BAT(APINT_TYPE_PREFIX, 1020) +HANDLE_BAT(APINT_TYPE_PREFIX, 1021) +HANDLE_BAT(APINT_TYPE_PREFIX, 1022) +HANDLE_BAT(APINT_TYPE_PREFIX, 1023) +HANDLE_BAT(APINT_TYPE_PREFIX, 1024) + +#endif + diff --git a/vitis/v2021_2/etc/autopilot_dt_ext.def b/vitis/v2021_2/etc/autopilot_dt_ext.def new file mode 100755 index 00000000..7d7419e5 --- /dev/null +++ b/vitis/v2021_2/etc/autopilot_dt_ext.def @@ -0,0 +1,63674 @@ +#if AP_INT_MAX_UNIT >= 1 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 1025) +HANDLE_BAT(, 1026) +HANDLE_BAT(, 1027) +HANDLE_BAT(, 1028) +HANDLE_BAT(, 1029) +HANDLE_BAT(, 1030) +HANDLE_BAT(, 1031) +HANDLE_BAT(, 1032) +HANDLE_BAT(, 1033) +HANDLE_BAT(, 1034) +HANDLE_BAT(, 1035) +HANDLE_BAT(, 1036) +HANDLE_BAT(, 1037) +HANDLE_BAT(, 1038) +HANDLE_BAT(, 1039) +HANDLE_BAT(, 1040) +HANDLE_BAT(, 1041) +HANDLE_BAT(, 1042) +HANDLE_BAT(, 1043) +HANDLE_BAT(, 1044) +HANDLE_BAT(, 1045) +HANDLE_BAT(, 1046) +HANDLE_BAT(, 1047) +HANDLE_BAT(, 1048) +HANDLE_BAT(, 1049) +HANDLE_BAT(, 1050) +HANDLE_BAT(, 1051) +HANDLE_BAT(, 1052) +HANDLE_BAT(, 1053) +HANDLE_BAT(, 1054) +HANDLE_BAT(, 1055) +HANDLE_BAT(, 1056) +HANDLE_BAT(, 1057) +HANDLE_BAT(, 1058) +HANDLE_BAT(, 1059) +HANDLE_BAT(, 1060) +HANDLE_BAT(, 1061) +HANDLE_BAT(, 1062) +HANDLE_BAT(, 1063) +HANDLE_BAT(, 1064) +HANDLE_BAT(, 1065) +HANDLE_BAT(, 1066) +HANDLE_BAT(, 1067) +HANDLE_BAT(, 1068) +HANDLE_BAT(, 1069) +HANDLE_BAT(, 1070) +HANDLE_BAT(, 1071) +HANDLE_BAT(, 1072) +HANDLE_BAT(, 1073) +HANDLE_BAT(, 1074) +HANDLE_BAT(, 1075) +HANDLE_BAT(, 1076) +HANDLE_BAT(, 1077) +HANDLE_BAT(, 1078) +HANDLE_BAT(, 1079) +HANDLE_BAT(, 1080) +HANDLE_BAT(, 1081) +HANDLE_BAT(, 1082) +HANDLE_BAT(, 1083) +HANDLE_BAT(, 1084) +HANDLE_BAT(, 1085) +HANDLE_BAT(, 1086) +HANDLE_BAT(, 1087) +HANDLE_BAT(, 1088) +HANDLE_BAT(, 1089) +HANDLE_BAT(, 1090) +HANDLE_BAT(, 1091) +HANDLE_BAT(, 1092) +HANDLE_BAT(, 1093) +HANDLE_BAT(, 1094) +HANDLE_BAT(, 1095) +HANDLE_BAT(, 1096) +HANDLE_BAT(, 1097) +HANDLE_BAT(, 1098) +HANDLE_BAT(, 1099) +HANDLE_BAT(, 1100) +HANDLE_BAT(, 1101) +HANDLE_BAT(, 1102) +HANDLE_BAT(, 1103) +HANDLE_BAT(, 1104) +HANDLE_BAT(, 1105) +HANDLE_BAT(, 1106) +HANDLE_BAT(, 1107) +HANDLE_BAT(, 1108) +HANDLE_BAT(, 1109) +HANDLE_BAT(, 1110) +HANDLE_BAT(, 1111) +HANDLE_BAT(, 1112) +HANDLE_BAT(, 1113) +HANDLE_BAT(, 1114) +HANDLE_BAT(, 1115) +HANDLE_BAT(, 1116) +HANDLE_BAT(, 1117) +HANDLE_BAT(, 1118) +HANDLE_BAT(, 1119) +HANDLE_BAT(, 1120) +HANDLE_BAT(, 1121) +HANDLE_BAT(, 1122) +HANDLE_BAT(, 1123) +HANDLE_BAT(, 1124) +HANDLE_BAT(, 1125) +HANDLE_BAT(, 1126) +HANDLE_BAT(, 1127) +HANDLE_BAT(, 1128) +HANDLE_BAT(, 1129) +HANDLE_BAT(, 1130) +HANDLE_BAT(, 1131) +HANDLE_BAT(, 1132) +HANDLE_BAT(, 1133) +HANDLE_BAT(, 1134) +HANDLE_BAT(, 1135) +HANDLE_BAT(, 1136) +HANDLE_BAT(, 1137) +HANDLE_BAT(, 1138) +HANDLE_BAT(, 1139) +HANDLE_BAT(, 1140) +HANDLE_BAT(, 1141) +HANDLE_BAT(, 1142) +HANDLE_BAT(, 1143) +HANDLE_BAT(, 1144) +HANDLE_BAT(, 1145) +HANDLE_BAT(, 1146) +HANDLE_BAT(, 1147) +HANDLE_BAT(, 1148) +HANDLE_BAT(, 1149) +HANDLE_BAT(, 1150) +HANDLE_BAT(, 1151) +HANDLE_BAT(, 1152) +HANDLE_BAT(, 1153) +HANDLE_BAT(, 1154) +HANDLE_BAT(, 1155) +HANDLE_BAT(, 1156) +HANDLE_BAT(, 1157) +HANDLE_BAT(, 1158) +HANDLE_BAT(, 1159) +HANDLE_BAT(, 1160) +HANDLE_BAT(, 1161) +HANDLE_BAT(, 1162) +HANDLE_BAT(, 1163) +HANDLE_BAT(, 1164) +HANDLE_BAT(, 1165) +HANDLE_BAT(, 1166) +HANDLE_BAT(, 1167) +HANDLE_BAT(, 1168) +HANDLE_BAT(, 1169) +HANDLE_BAT(, 1170) +HANDLE_BAT(, 1171) +HANDLE_BAT(, 1172) +HANDLE_BAT(, 1173) +HANDLE_BAT(, 1174) +HANDLE_BAT(, 1175) +HANDLE_BAT(, 1176) +HANDLE_BAT(, 1177) +HANDLE_BAT(, 1178) +HANDLE_BAT(, 1179) +HANDLE_BAT(, 1180) +HANDLE_BAT(, 1181) +HANDLE_BAT(, 1182) +HANDLE_BAT(, 1183) +HANDLE_BAT(, 1184) +HANDLE_BAT(, 1185) +HANDLE_BAT(, 1186) +HANDLE_BAT(, 1187) +HANDLE_BAT(, 1188) +HANDLE_BAT(, 1189) +HANDLE_BAT(, 1190) +HANDLE_BAT(, 1191) +HANDLE_BAT(, 1192) +HANDLE_BAT(, 1193) +HANDLE_BAT(, 1194) +HANDLE_BAT(, 1195) +HANDLE_BAT(, 1196) +HANDLE_BAT(, 1197) +HANDLE_BAT(, 1198) +HANDLE_BAT(, 1199) +HANDLE_BAT(, 1200) +HANDLE_BAT(, 1201) +HANDLE_BAT(, 1202) +HANDLE_BAT(, 1203) +HANDLE_BAT(, 1204) +HANDLE_BAT(, 1205) +HANDLE_BAT(, 1206) +HANDLE_BAT(, 1207) +HANDLE_BAT(, 1208) +HANDLE_BAT(, 1209) +HANDLE_BAT(, 1210) +HANDLE_BAT(, 1211) +HANDLE_BAT(, 1212) +HANDLE_BAT(, 1213) +HANDLE_BAT(, 1214) +HANDLE_BAT(, 1215) +HANDLE_BAT(, 1216) +HANDLE_BAT(, 1217) +HANDLE_BAT(, 1218) +HANDLE_BAT(, 1219) +HANDLE_BAT(, 1220) +HANDLE_BAT(, 1221) +HANDLE_BAT(, 1222) +HANDLE_BAT(, 1223) +HANDLE_BAT(, 1224) +HANDLE_BAT(, 1225) +HANDLE_BAT(, 1226) +HANDLE_BAT(, 1227) +HANDLE_BAT(, 1228) +HANDLE_BAT(, 1229) +HANDLE_BAT(, 1230) +HANDLE_BAT(, 1231) +HANDLE_BAT(, 1232) +HANDLE_BAT(, 1233) +HANDLE_BAT(, 1234) +HANDLE_BAT(, 1235) +HANDLE_BAT(, 1236) +HANDLE_BAT(, 1237) +HANDLE_BAT(, 1238) +HANDLE_BAT(, 1239) +HANDLE_BAT(, 1240) +HANDLE_BAT(, 1241) +HANDLE_BAT(, 1242) +HANDLE_BAT(, 1243) +HANDLE_BAT(, 1244) +HANDLE_BAT(, 1245) +HANDLE_BAT(, 1246) +HANDLE_BAT(, 1247) +HANDLE_BAT(, 1248) +HANDLE_BAT(, 1249) +HANDLE_BAT(, 1250) +HANDLE_BAT(, 1251) +HANDLE_BAT(, 1252) +HANDLE_BAT(, 1253) +HANDLE_BAT(, 1254) +HANDLE_BAT(, 1255) +HANDLE_BAT(, 1256) +HANDLE_BAT(, 1257) +HANDLE_BAT(, 1258) +HANDLE_BAT(, 1259) +HANDLE_BAT(, 1260) +HANDLE_BAT(, 1261) +HANDLE_BAT(, 1262) +HANDLE_BAT(, 1263) +HANDLE_BAT(, 1264) +HANDLE_BAT(, 1265) +HANDLE_BAT(, 1266) +HANDLE_BAT(, 1267) +HANDLE_BAT(, 1268) +HANDLE_BAT(, 1269) +HANDLE_BAT(, 1270) +HANDLE_BAT(, 1271) +HANDLE_BAT(, 1272) +HANDLE_BAT(, 1273) +HANDLE_BAT(, 1274) +HANDLE_BAT(, 1275) +HANDLE_BAT(, 1276) +HANDLE_BAT(, 1277) +HANDLE_BAT(, 1278) +HANDLE_BAT(, 1279) +HANDLE_BAT(, 1280) +HANDLE_BAT(, 1281) +HANDLE_BAT(, 1282) +HANDLE_BAT(, 1283) +HANDLE_BAT(, 1284) +HANDLE_BAT(, 1285) +HANDLE_BAT(, 1286) +HANDLE_BAT(, 1287) +HANDLE_BAT(, 1288) +HANDLE_BAT(, 1289) +HANDLE_BAT(, 1290) +HANDLE_BAT(, 1291) +HANDLE_BAT(, 1292) +HANDLE_BAT(, 1293) +HANDLE_BAT(, 1294) +HANDLE_BAT(, 1295) +HANDLE_BAT(, 1296) +HANDLE_BAT(, 1297) +HANDLE_BAT(, 1298) +HANDLE_BAT(, 1299) +HANDLE_BAT(, 1300) +HANDLE_BAT(, 1301) +HANDLE_BAT(, 1302) +HANDLE_BAT(, 1303) +HANDLE_BAT(, 1304) +HANDLE_BAT(, 1305) +HANDLE_BAT(, 1306) +HANDLE_BAT(, 1307) +HANDLE_BAT(, 1308) +HANDLE_BAT(, 1309) +HANDLE_BAT(, 1310) +HANDLE_BAT(, 1311) +HANDLE_BAT(, 1312) +HANDLE_BAT(, 1313) +HANDLE_BAT(, 1314) +HANDLE_BAT(, 1315) +HANDLE_BAT(, 1316) +HANDLE_BAT(, 1317) +HANDLE_BAT(, 1318) +HANDLE_BAT(, 1319) +HANDLE_BAT(, 1320) +HANDLE_BAT(, 1321) +HANDLE_BAT(, 1322) +HANDLE_BAT(, 1323) +HANDLE_BAT(, 1324) +HANDLE_BAT(, 1325) +HANDLE_BAT(, 1326) +HANDLE_BAT(, 1327) +HANDLE_BAT(, 1328) +HANDLE_BAT(, 1329) +HANDLE_BAT(, 1330) +HANDLE_BAT(, 1331) +HANDLE_BAT(, 1332) +HANDLE_BAT(, 1333) +HANDLE_BAT(, 1334) +HANDLE_BAT(, 1335) +HANDLE_BAT(, 1336) +HANDLE_BAT(, 1337) +HANDLE_BAT(, 1338) +HANDLE_BAT(, 1339) +HANDLE_BAT(, 1340) +HANDLE_BAT(, 1341) +HANDLE_BAT(, 1342) +HANDLE_BAT(, 1343) +HANDLE_BAT(, 1344) +HANDLE_BAT(, 1345) +HANDLE_BAT(, 1346) +HANDLE_BAT(, 1347) +HANDLE_BAT(, 1348) +HANDLE_BAT(, 1349) +HANDLE_BAT(, 1350) +HANDLE_BAT(, 1351) +HANDLE_BAT(, 1352) +HANDLE_BAT(, 1353) +HANDLE_BAT(, 1354) +HANDLE_BAT(, 1355) +HANDLE_BAT(, 1356) +HANDLE_BAT(, 1357) +HANDLE_BAT(, 1358) +HANDLE_BAT(, 1359) +HANDLE_BAT(, 1360) +HANDLE_BAT(, 1361) +HANDLE_BAT(, 1362) +HANDLE_BAT(, 1363) +HANDLE_BAT(, 1364) +HANDLE_BAT(, 1365) +HANDLE_BAT(, 1366) +HANDLE_BAT(, 1367) +HANDLE_BAT(, 1368) +HANDLE_BAT(, 1369) +HANDLE_BAT(, 1370) +HANDLE_BAT(, 1371) +HANDLE_BAT(, 1372) +HANDLE_BAT(, 1373) +HANDLE_BAT(, 1374) +HANDLE_BAT(, 1375) +HANDLE_BAT(, 1376) +HANDLE_BAT(, 1377) +HANDLE_BAT(, 1378) +HANDLE_BAT(, 1379) +HANDLE_BAT(, 1380) +HANDLE_BAT(, 1381) +HANDLE_BAT(, 1382) +HANDLE_BAT(, 1383) +HANDLE_BAT(, 1384) +HANDLE_BAT(, 1385) +HANDLE_BAT(, 1386) +HANDLE_BAT(, 1387) +HANDLE_BAT(, 1388) +HANDLE_BAT(, 1389) +HANDLE_BAT(, 1390) +HANDLE_BAT(, 1391) +HANDLE_BAT(, 1392) +HANDLE_BAT(, 1393) +HANDLE_BAT(, 1394) +HANDLE_BAT(, 1395) +HANDLE_BAT(, 1396) +HANDLE_BAT(, 1397) +HANDLE_BAT(, 1398) +HANDLE_BAT(, 1399) +HANDLE_BAT(, 1400) +HANDLE_BAT(, 1401) +HANDLE_BAT(, 1402) +HANDLE_BAT(, 1403) +HANDLE_BAT(, 1404) +HANDLE_BAT(, 1405) +HANDLE_BAT(, 1406) +HANDLE_BAT(, 1407) +HANDLE_BAT(, 1408) +HANDLE_BAT(, 1409) +HANDLE_BAT(, 1410) +HANDLE_BAT(, 1411) +HANDLE_BAT(, 1412) +HANDLE_BAT(, 1413) +HANDLE_BAT(, 1414) +HANDLE_BAT(, 1415) +HANDLE_BAT(, 1416) +HANDLE_BAT(, 1417) +HANDLE_BAT(, 1418) +HANDLE_BAT(, 1419) +HANDLE_BAT(, 1420) +HANDLE_BAT(, 1421) +HANDLE_BAT(, 1422) +HANDLE_BAT(, 1423) +HANDLE_BAT(, 1424) +HANDLE_BAT(, 1425) +HANDLE_BAT(, 1426) +HANDLE_BAT(, 1427) +HANDLE_BAT(, 1428) +HANDLE_BAT(, 1429) +HANDLE_BAT(, 1430) +HANDLE_BAT(, 1431) +HANDLE_BAT(, 1432) +HANDLE_BAT(, 1433) +HANDLE_BAT(, 1434) +HANDLE_BAT(, 1435) +HANDLE_BAT(, 1436) +HANDLE_BAT(, 1437) +HANDLE_BAT(, 1438) +HANDLE_BAT(, 1439) +HANDLE_BAT(, 1440) +HANDLE_BAT(, 1441) +HANDLE_BAT(, 1442) +HANDLE_BAT(, 1443) +HANDLE_BAT(, 1444) +HANDLE_BAT(, 1445) +HANDLE_BAT(, 1446) +HANDLE_BAT(, 1447) +HANDLE_BAT(, 1448) +HANDLE_BAT(, 1449) +HANDLE_BAT(, 1450) +HANDLE_BAT(, 1451) +HANDLE_BAT(, 1452) +HANDLE_BAT(, 1453) +HANDLE_BAT(, 1454) +HANDLE_BAT(, 1455) +HANDLE_BAT(, 1456) +HANDLE_BAT(, 1457) +HANDLE_BAT(, 1458) +HANDLE_BAT(, 1459) +HANDLE_BAT(, 1460) +HANDLE_BAT(, 1461) +HANDLE_BAT(, 1462) +HANDLE_BAT(, 1463) +HANDLE_BAT(, 1464) +HANDLE_BAT(, 1465) +HANDLE_BAT(, 1466) +HANDLE_BAT(, 1467) +HANDLE_BAT(, 1468) +HANDLE_BAT(, 1469) +HANDLE_BAT(, 1470) +HANDLE_BAT(, 1471) +HANDLE_BAT(, 1472) +HANDLE_BAT(, 1473) +HANDLE_BAT(, 1474) +HANDLE_BAT(, 1475) +HANDLE_BAT(, 1476) +HANDLE_BAT(, 1477) +HANDLE_BAT(, 1478) +HANDLE_BAT(, 1479) +HANDLE_BAT(, 1480) +HANDLE_BAT(, 1481) +HANDLE_BAT(, 1482) +HANDLE_BAT(, 1483) +HANDLE_BAT(, 1484) +HANDLE_BAT(, 1485) +HANDLE_BAT(, 1486) +HANDLE_BAT(, 1487) +HANDLE_BAT(, 1488) +HANDLE_BAT(, 1489) +HANDLE_BAT(, 1490) +HANDLE_BAT(, 1491) +HANDLE_BAT(, 1492) +HANDLE_BAT(, 1493) +HANDLE_BAT(, 1494) +HANDLE_BAT(, 1495) +HANDLE_BAT(, 1496) +HANDLE_BAT(, 1497) +HANDLE_BAT(, 1498) +HANDLE_BAT(, 1499) +HANDLE_BAT(, 1500) +HANDLE_BAT(, 1501) +HANDLE_BAT(, 1502) +HANDLE_BAT(, 1503) +HANDLE_BAT(, 1504) +HANDLE_BAT(, 1505) +HANDLE_BAT(, 1506) +HANDLE_BAT(, 1507) +HANDLE_BAT(, 1508) +HANDLE_BAT(, 1509) +HANDLE_BAT(, 1510) +HANDLE_BAT(, 1511) +HANDLE_BAT(, 1512) +HANDLE_BAT(, 1513) +HANDLE_BAT(, 1514) +HANDLE_BAT(, 1515) +HANDLE_BAT(, 1516) +HANDLE_BAT(, 1517) +HANDLE_BAT(, 1518) +HANDLE_BAT(, 1519) +HANDLE_BAT(, 1520) +HANDLE_BAT(, 1521) +HANDLE_BAT(, 1522) +HANDLE_BAT(, 1523) +HANDLE_BAT(, 1524) +HANDLE_BAT(, 1525) +HANDLE_BAT(, 1526) +HANDLE_BAT(, 1527) +HANDLE_BAT(, 1528) +HANDLE_BAT(, 1529) +HANDLE_BAT(, 1530) +HANDLE_BAT(, 1531) +HANDLE_BAT(, 1532) +HANDLE_BAT(, 1533) +HANDLE_BAT(, 1534) +HANDLE_BAT(, 1535) +HANDLE_BAT(, 1536) +HANDLE_BAT(, 1537) +HANDLE_BAT(, 1538) +HANDLE_BAT(, 1539) +HANDLE_BAT(, 1540) +HANDLE_BAT(, 1541) +HANDLE_BAT(, 1542) +HANDLE_BAT(, 1543) +HANDLE_BAT(, 1544) +HANDLE_BAT(, 1545) +HANDLE_BAT(, 1546) +HANDLE_BAT(, 1547) +HANDLE_BAT(, 1548) +HANDLE_BAT(, 1549) +HANDLE_BAT(, 1550) +HANDLE_BAT(, 1551) +HANDLE_BAT(, 1552) +HANDLE_BAT(, 1553) +HANDLE_BAT(, 1554) +HANDLE_BAT(, 1555) +HANDLE_BAT(, 1556) +HANDLE_BAT(, 1557) +HANDLE_BAT(, 1558) +HANDLE_BAT(, 1559) +HANDLE_BAT(, 1560) +HANDLE_BAT(, 1561) +HANDLE_BAT(, 1562) +HANDLE_BAT(, 1563) +HANDLE_BAT(, 1564) +HANDLE_BAT(, 1565) +HANDLE_BAT(, 1566) +HANDLE_BAT(, 1567) +HANDLE_BAT(, 1568) +HANDLE_BAT(, 1569) +HANDLE_BAT(, 1570) +HANDLE_BAT(, 1571) +HANDLE_BAT(, 1572) +HANDLE_BAT(, 1573) +HANDLE_BAT(, 1574) +HANDLE_BAT(, 1575) +HANDLE_BAT(, 1576) +HANDLE_BAT(, 1577) +HANDLE_BAT(, 1578) +HANDLE_BAT(, 1579) +HANDLE_BAT(, 1580) +HANDLE_BAT(, 1581) +HANDLE_BAT(, 1582) +HANDLE_BAT(, 1583) +HANDLE_BAT(, 1584) +HANDLE_BAT(, 1585) +HANDLE_BAT(, 1586) +HANDLE_BAT(, 1587) +HANDLE_BAT(, 1588) +HANDLE_BAT(, 1589) +HANDLE_BAT(, 1590) +HANDLE_BAT(, 1591) +HANDLE_BAT(, 1592) +HANDLE_BAT(, 1593) +HANDLE_BAT(, 1594) +HANDLE_BAT(, 1595) +HANDLE_BAT(, 1596) +HANDLE_BAT(, 1597) +HANDLE_BAT(, 1598) +HANDLE_BAT(, 1599) +HANDLE_BAT(, 1600) +HANDLE_BAT(, 1601) +HANDLE_BAT(, 1602) +HANDLE_BAT(, 1603) +HANDLE_BAT(, 1604) +HANDLE_BAT(, 1605) +HANDLE_BAT(, 1606) +HANDLE_BAT(, 1607) +HANDLE_BAT(, 1608) +HANDLE_BAT(, 1609) +HANDLE_BAT(, 1610) +HANDLE_BAT(, 1611) +HANDLE_BAT(, 1612) +HANDLE_BAT(, 1613) +HANDLE_BAT(, 1614) +HANDLE_BAT(, 1615) +HANDLE_BAT(, 1616) +HANDLE_BAT(, 1617) +HANDLE_BAT(, 1618) +HANDLE_BAT(, 1619) +HANDLE_BAT(, 1620) +HANDLE_BAT(, 1621) +HANDLE_BAT(, 1622) +HANDLE_BAT(, 1623) +HANDLE_BAT(, 1624) +HANDLE_BAT(, 1625) +HANDLE_BAT(, 1626) +HANDLE_BAT(, 1627) +HANDLE_BAT(, 1628) +HANDLE_BAT(, 1629) +HANDLE_BAT(, 1630) +HANDLE_BAT(, 1631) +HANDLE_BAT(, 1632) +HANDLE_BAT(, 1633) +HANDLE_BAT(, 1634) +HANDLE_BAT(, 1635) +HANDLE_BAT(, 1636) +HANDLE_BAT(, 1637) +HANDLE_BAT(, 1638) +HANDLE_BAT(, 1639) +HANDLE_BAT(, 1640) +HANDLE_BAT(, 1641) +HANDLE_BAT(, 1642) +HANDLE_BAT(, 1643) +HANDLE_BAT(, 1644) +HANDLE_BAT(, 1645) +HANDLE_BAT(, 1646) +HANDLE_BAT(, 1647) +HANDLE_BAT(, 1648) +HANDLE_BAT(, 1649) +HANDLE_BAT(, 1650) +HANDLE_BAT(, 1651) +HANDLE_BAT(, 1652) +HANDLE_BAT(, 1653) +HANDLE_BAT(, 1654) +HANDLE_BAT(, 1655) +HANDLE_BAT(, 1656) +HANDLE_BAT(, 1657) +HANDLE_BAT(, 1658) +HANDLE_BAT(, 1659) +HANDLE_BAT(, 1660) +HANDLE_BAT(, 1661) +HANDLE_BAT(, 1662) +HANDLE_BAT(, 1663) +HANDLE_BAT(, 1664) +HANDLE_BAT(, 1665) +HANDLE_BAT(, 1666) +HANDLE_BAT(, 1667) +HANDLE_BAT(, 1668) +HANDLE_BAT(, 1669) +HANDLE_BAT(, 1670) +HANDLE_BAT(, 1671) +HANDLE_BAT(, 1672) +HANDLE_BAT(, 1673) +HANDLE_BAT(, 1674) +HANDLE_BAT(, 1675) +HANDLE_BAT(, 1676) +HANDLE_BAT(, 1677) +HANDLE_BAT(, 1678) +HANDLE_BAT(, 1679) +HANDLE_BAT(, 1680) +HANDLE_BAT(, 1681) +HANDLE_BAT(, 1682) +HANDLE_BAT(, 1683) +HANDLE_BAT(, 1684) +HANDLE_BAT(, 1685) +HANDLE_BAT(, 1686) +HANDLE_BAT(, 1687) +HANDLE_BAT(, 1688) +HANDLE_BAT(, 1689) +HANDLE_BAT(, 1690) +HANDLE_BAT(, 1691) +HANDLE_BAT(, 1692) +HANDLE_BAT(, 1693) +HANDLE_BAT(, 1694) +HANDLE_BAT(, 1695) +HANDLE_BAT(, 1696) +HANDLE_BAT(, 1697) +HANDLE_BAT(, 1698) +HANDLE_BAT(, 1699) +HANDLE_BAT(, 1700) +HANDLE_BAT(, 1701) +HANDLE_BAT(, 1702) +HANDLE_BAT(, 1703) +HANDLE_BAT(, 1704) +HANDLE_BAT(, 1705) +HANDLE_BAT(, 1706) +HANDLE_BAT(, 1707) +HANDLE_BAT(, 1708) +HANDLE_BAT(, 1709) +HANDLE_BAT(, 1710) +HANDLE_BAT(, 1711) +HANDLE_BAT(, 1712) +HANDLE_BAT(, 1713) +HANDLE_BAT(, 1714) +HANDLE_BAT(, 1715) +HANDLE_BAT(, 1716) +HANDLE_BAT(, 1717) +HANDLE_BAT(, 1718) +HANDLE_BAT(, 1719) +HANDLE_BAT(, 1720) +HANDLE_BAT(, 1721) +HANDLE_BAT(, 1722) +HANDLE_BAT(, 1723) +HANDLE_BAT(, 1724) +HANDLE_BAT(, 1725) +HANDLE_BAT(, 1726) +HANDLE_BAT(, 1727) +HANDLE_BAT(, 1728) +HANDLE_BAT(, 1729) +HANDLE_BAT(, 1730) +HANDLE_BAT(, 1731) +HANDLE_BAT(, 1732) +HANDLE_BAT(, 1733) +HANDLE_BAT(, 1734) +HANDLE_BAT(, 1735) +HANDLE_BAT(, 1736) +HANDLE_BAT(, 1737) +HANDLE_BAT(, 1738) +HANDLE_BAT(, 1739) +HANDLE_BAT(, 1740) +HANDLE_BAT(, 1741) +HANDLE_BAT(, 1742) +HANDLE_BAT(, 1743) +HANDLE_BAT(, 1744) +HANDLE_BAT(, 1745) +HANDLE_BAT(, 1746) +HANDLE_BAT(, 1747) +HANDLE_BAT(, 1748) +HANDLE_BAT(, 1749) +HANDLE_BAT(, 1750) +HANDLE_BAT(, 1751) +HANDLE_BAT(, 1752) +HANDLE_BAT(, 1753) +HANDLE_BAT(, 1754) +HANDLE_BAT(, 1755) +HANDLE_BAT(, 1756) +HANDLE_BAT(, 1757) +HANDLE_BAT(, 1758) +HANDLE_BAT(, 1759) +HANDLE_BAT(, 1760) +HANDLE_BAT(, 1761) +HANDLE_BAT(, 1762) +HANDLE_BAT(, 1763) +HANDLE_BAT(, 1764) +HANDLE_BAT(, 1765) +HANDLE_BAT(, 1766) +HANDLE_BAT(, 1767) +HANDLE_BAT(, 1768) +HANDLE_BAT(, 1769) +HANDLE_BAT(, 1770) +HANDLE_BAT(, 1771) +HANDLE_BAT(, 1772) +HANDLE_BAT(, 1773) +HANDLE_BAT(, 1774) +HANDLE_BAT(, 1775) +HANDLE_BAT(, 1776) +HANDLE_BAT(, 1777) +HANDLE_BAT(, 1778) +HANDLE_BAT(, 1779) +HANDLE_BAT(, 1780) +HANDLE_BAT(, 1781) +HANDLE_BAT(, 1782) +HANDLE_BAT(, 1783) +HANDLE_BAT(, 1784) +HANDLE_BAT(, 1785) +HANDLE_BAT(, 1786) +HANDLE_BAT(, 1787) +HANDLE_BAT(, 1788) +HANDLE_BAT(, 1789) +HANDLE_BAT(, 1790) +HANDLE_BAT(, 1791) +HANDLE_BAT(, 1792) +HANDLE_BAT(, 1793) +HANDLE_BAT(, 1794) +HANDLE_BAT(, 1795) +HANDLE_BAT(, 1796) +HANDLE_BAT(, 1797) +HANDLE_BAT(, 1798) +HANDLE_BAT(, 1799) +HANDLE_BAT(, 1800) +HANDLE_BAT(, 1801) +HANDLE_BAT(, 1802) +HANDLE_BAT(, 1803) +HANDLE_BAT(, 1804) +HANDLE_BAT(, 1805) +HANDLE_BAT(, 1806) +HANDLE_BAT(, 1807) +HANDLE_BAT(, 1808) +HANDLE_BAT(, 1809) +HANDLE_BAT(, 1810) +HANDLE_BAT(, 1811) +HANDLE_BAT(, 1812) +HANDLE_BAT(, 1813) +HANDLE_BAT(, 1814) +HANDLE_BAT(, 1815) +HANDLE_BAT(, 1816) +HANDLE_BAT(, 1817) +HANDLE_BAT(, 1818) +HANDLE_BAT(, 1819) +HANDLE_BAT(, 1820) +HANDLE_BAT(, 1821) +HANDLE_BAT(, 1822) +HANDLE_BAT(, 1823) +HANDLE_BAT(, 1824) +HANDLE_BAT(, 1825) +HANDLE_BAT(, 1826) +HANDLE_BAT(, 1827) +HANDLE_BAT(, 1828) +HANDLE_BAT(, 1829) +HANDLE_BAT(, 1830) +HANDLE_BAT(, 1831) +HANDLE_BAT(, 1832) +HANDLE_BAT(, 1833) +HANDLE_BAT(, 1834) +HANDLE_BAT(, 1835) +HANDLE_BAT(, 1836) +HANDLE_BAT(, 1837) +HANDLE_BAT(, 1838) +HANDLE_BAT(, 1839) +HANDLE_BAT(, 1840) +HANDLE_BAT(, 1841) +HANDLE_BAT(, 1842) +HANDLE_BAT(, 1843) +HANDLE_BAT(, 1844) +HANDLE_BAT(, 1845) +HANDLE_BAT(, 1846) +HANDLE_BAT(, 1847) +HANDLE_BAT(, 1848) +HANDLE_BAT(, 1849) +HANDLE_BAT(, 1850) +HANDLE_BAT(, 1851) +HANDLE_BAT(, 1852) +HANDLE_BAT(, 1853) +HANDLE_BAT(, 1854) +HANDLE_BAT(, 1855) +HANDLE_BAT(, 1856) +HANDLE_BAT(, 1857) +HANDLE_BAT(, 1858) +HANDLE_BAT(, 1859) +HANDLE_BAT(, 1860) +HANDLE_BAT(, 1861) +HANDLE_BAT(, 1862) +HANDLE_BAT(, 1863) +HANDLE_BAT(, 1864) +HANDLE_BAT(, 1865) +HANDLE_BAT(, 1866) +HANDLE_BAT(, 1867) +HANDLE_BAT(, 1868) +HANDLE_BAT(, 1869) +HANDLE_BAT(, 1870) +HANDLE_BAT(, 1871) +HANDLE_BAT(, 1872) +HANDLE_BAT(, 1873) +HANDLE_BAT(, 1874) +HANDLE_BAT(, 1875) +HANDLE_BAT(, 1876) +HANDLE_BAT(, 1877) +HANDLE_BAT(, 1878) +HANDLE_BAT(, 1879) +HANDLE_BAT(, 1880) +HANDLE_BAT(, 1881) +HANDLE_BAT(, 1882) +HANDLE_BAT(, 1883) +HANDLE_BAT(, 1884) +HANDLE_BAT(, 1885) +HANDLE_BAT(, 1886) +HANDLE_BAT(, 1887) +HANDLE_BAT(, 1888) +HANDLE_BAT(, 1889) +HANDLE_BAT(, 1890) +HANDLE_BAT(, 1891) +HANDLE_BAT(, 1892) +HANDLE_BAT(, 1893) +HANDLE_BAT(, 1894) +HANDLE_BAT(, 1895) +HANDLE_BAT(, 1896) +HANDLE_BAT(, 1897) +HANDLE_BAT(, 1898) +HANDLE_BAT(, 1899) +HANDLE_BAT(, 1900) +HANDLE_BAT(, 1901) +HANDLE_BAT(, 1902) +HANDLE_BAT(, 1903) +HANDLE_BAT(, 1904) +HANDLE_BAT(, 1905) +HANDLE_BAT(, 1906) +HANDLE_BAT(, 1907) +HANDLE_BAT(, 1908) +HANDLE_BAT(, 1909) +HANDLE_BAT(, 1910) +HANDLE_BAT(, 1911) +HANDLE_BAT(, 1912) +HANDLE_BAT(, 1913) +HANDLE_BAT(, 1914) +HANDLE_BAT(, 1915) +HANDLE_BAT(, 1916) +HANDLE_BAT(, 1917) +HANDLE_BAT(, 1918) +HANDLE_BAT(, 1919) +HANDLE_BAT(, 1920) +HANDLE_BAT(, 1921) +HANDLE_BAT(, 1922) +HANDLE_BAT(, 1923) +HANDLE_BAT(, 1924) +HANDLE_BAT(, 1925) +HANDLE_BAT(, 1926) +HANDLE_BAT(, 1927) +HANDLE_BAT(, 1928) +HANDLE_BAT(, 1929) +HANDLE_BAT(, 1930) +HANDLE_BAT(, 1931) +HANDLE_BAT(, 1932) +HANDLE_BAT(, 1933) +HANDLE_BAT(, 1934) +HANDLE_BAT(, 1935) +HANDLE_BAT(, 1936) +HANDLE_BAT(, 1937) +HANDLE_BAT(, 1938) +HANDLE_BAT(, 1939) +HANDLE_BAT(, 1940) +HANDLE_BAT(, 1941) +HANDLE_BAT(, 1942) +HANDLE_BAT(, 1943) +HANDLE_BAT(, 1944) +HANDLE_BAT(, 1945) +HANDLE_BAT(, 1946) +HANDLE_BAT(, 1947) +HANDLE_BAT(, 1948) +HANDLE_BAT(, 1949) +HANDLE_BAT(, 1950) +HANDLE_BAT(, 1951) +HANDLE_BAT(, 1952) +HANDLE_BAT(, 1953) +HANDLE_BAT(, 1954) +HANDLE_BAT(, 1955) +HANDLE_BAT(, 1956) +HANDLE_BAT(, 1957) +HANDLE_BAT(, 1958) +HANDLE_BAT(, 1959) +HANDLE_BAT(, 1960) +HANDLE_BAT(, 1961) +HANDLE_BAT(, 1962) +HANDLE_BAT(, 1963) +HANDLE_BAT(, 1964) +HANDLE_BAT(, 1965) +HANDLE_BAT(, 1966) +HANDLE_BAT(, 1967) +HANDLE_BAT(, 1968) +HANDLE_BAT(, 1969) +HANDLE_BAT(, 1970) +HANDLE_BAT(, 1971) +HANDLE_BAT(, 1972) +HANDLE_BAT(, 1973) +HANDLE_BAT(, 1974) +HANDLE_BAT(, 1975) +HANDLE_BAT(, 1976) +HANDLE_BAT(, 1977) +HANDLE_BAT(, 1978) +HANDLE_BAT(, 1979) +HANDLE_BAT(, 1980) +HANDLE_BAT(, 1981) +HANDLE_BAT(, 1982) +HANDLE_BAT(, 1983) +HANDLE_BAT(, 1984) +HANDLE_BAT(, 1985) +HANDLE_BAT(, 1986) +HANDLE_BAT(, 1987) +HANDLE_BAT(, 1988) +HANDLE_BAT(, 1989) +HANDLE_BAT(, 1990) +HANDLE_BAT(, 1991) +HANDLE_BAT(, 1992) +HANDLE_BAT(, 1993) +HANDLE_BAT(, 1994) +HANDLE_BAT(, 1995) +HANDLE_BAT(, 1996) +HANDLE_BAT(, 1997) +HANDLE_BAT(, 1998) +HANDLE_BAT(, 1999) +HANDLE_BAT(, 2000) +HANDLE_BAT(, 2001) +HANDLE_BAT(, 2002) +HANDLE_BAT(, 2003) +HANDLE_BAT(, 2004) +HANDLE_BAT(, 2005) +HANDLE_BAT(, 2006) +HANDLE_BAT(, 2007) +HANDLE_BAT(, 2008) +HANDLE_BAT(, 2009) +HANDLE_BAT(, 2010) +HANDLE_BAT(, 2011) +HANDLE_BAT(, 2012) +HANDLE_BAT(, 2013) +HANDLE_BAT(, 2014) +HANDLE_BAT(, 2015) +HANDLE_BAT(, 2016) +HANDLE_BAT(, 2017) +HANDLE_BAT(, 2018) +HANDLE_BAT(, 2019) +HANDLE_BAT(, 2020) +HANDLE_BAT(, 2021) +HANDLE_BAT(, 2022) +HANDLE_BAT(, 2023) +HANDLE_BAT(, 2024) +HANDLE_BAT(, 2025) +HANDLE_BAT(, 2026) +HANDLE_BAT(, 2027) +HANDLE_BAT(, 2028) +HANDLE_BAT(, 2029) +HANDLE_BAT(, 2030) +HANDLE_BAT(, 2031) +HANDLE_BAT(, 2032) +HANDLE_BAT(, 2033) +HANDLE_BAT(, 2034) +HANDLE_BAT(, 2035) +HANDLE_BAT(, 2036) +HANDLE_BAT(, 2037) +HANDLE_BAT(, 2038) +HANDLE_BAT(, 2039) +HANDLE_BAT(, 2040) +HANDLE_BAT(, 2041) +HANDLE_BAT(, 2042) +HANDLE_BAT(, 2043) +HANDLE_BAT(, 2044) +HANDLE_BAT(, 2045) +HANDLE_BAT(, 2046) +HANDLE_BAT(, 2047) +HANDLE_BAT(, 2048) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 1025) +HANDLE_BAT(APINT_TYPE_PREFIX, 1026) +HANDLE_BAT(APINT_TYPE_PREFIX, 1027) +HANDLE_BAT(APINT_TYPE_PREFIX, 1028) +HANDLE_BAT(APINT_TYPE_PREFIX, 1029) +HANDLE_BAT(APINT_TYPE_PREFIX, 1030) +HANDLE_BAT(APINT_TYPE_PREFIX, 1031) +HANDLE_BAT(APINT_TYPE_PREFIX, 1032) +HANDLE_BAT(APINT_TYPE_PREFIX, 1033) +HANDLE_BAT(APINT_TYPE_PREFIX, 1034) +HANDLE_BAT(APINT_TYPE_PREFIX, 1035) +HANDLE_BAT(APINT_TYPE_PREFIX, 1036) +HANDLE_BAT(APINT_TYPE_PREFIX, 1037) +HANDLE_BAT(APINT_TYPE_PREFIX, 1038) +HANDLE_BAT(APINT_TYPE_PREFIX, 1039) +HANDLE_BAT(APINT_TYPE_PREFIX, 1040) +HANDLE_BAT(APINT_TYPE_PREFIX, 1041) +HANDLE_BAT(APINT_TYPE_PREFIX, 1042) +HANDLE_BAT(APINT_TYPE_PREFIX, 1043) +HANDLE_BAT(APINT_TYPE_PREFIX, 1044) +HANDLE_BAT(APINT_TYPE_PREFIX, 1045) +HANDLE_BAT(APINT_TYPE_PREFIX, 1046) +HANDLE_BAT(APINT_TYPE_PREFIX, 1047) +HANDLE_BAT(APINT_TYPE_PREFIX, 1048) +HANDLE_BAT(APINT_TYPE_PREFIX, 1049) +HANDLE_BAT(APINT_TYPE_PREFIX, 1050) +HANDLE_BAT(APINT_TYPE_PREFIX, 1051) +HANDLE_BAT(APINT_TYPE_PREFIX, 1052) +HANDLE_BAT(APINT_TYPE_PREFIX, 1053) +HANDLE_BAT(APINT_TYPE_PREFIX, 1054) +HANDLE_BAT(APINT_TYPE_PREFIX, 1055) +HANDLE_BAT(APINT_TYPE_PREFIX, 1056) +HANDLE_BAT(APINT_TYPE_PREFIX, 1057) +HANDLE_BAT(APINT_TYPE_PREFIX, 1058) +HANDLE_BAT(APINT_TYPE_PREFIX, 1059) +HANDLE_BAT(APINT_TYPE_PREFIX, 1060) +HANDLE_BAT(APINT_TYPE_PREFIX, 1061) +HANDLE_BAT(APINT_TYPE_PREFIX, 1062) +HANDLE_BAT(APINT_TYPE_PREFIX, 1063) +HANDLE_BAT(APINT_TYPE_PREFIX, 1064) +HANDLE_BAT(APINT_TYPE_PREFIX, 1065) +HANDLE_BAT(APINT_TYPE_PREFIX, 1066) +HANDLE_BAT(APINT_TYPE_PREFIX, 1067) +HANDLE_BAT(APINT_TYPE_PREFIX, 1068) +HANDLE_BAT(APINT_TYPE_PREFIX, 1069) +HANDLE_BAT(APINT_TYPE_PREFIX, 1070) +HANDLE_BAT(APINT_TYPE_PREFIX, 1071) +HANDLE_BAT(APINT_TYPE_PREFIX, 1072) +HANDLE_BAT(APINT_TYPE_PREFIX, 1073) +HANDLE_BAT(APINT_TYPE_PREFIX, 1074) +HANDLE_BAT(APINT_TYPE_PREFIX, 1075) +HANDLE_BAT(APINT_TYPE_PREFIX, 1076) +HANDLE_BAT(APINT_TYPE_PREFIX, 1077) +HANDLE_BAT(APINT_TYPE_PREFIX, 1078) +HANDLE_BAT(APINT_TYPE_PREFIX, 1079) +HANDLE_BAT(APINT_TYPE_PREFIX, 1080) +HANDLE_BAT(APINT_TYPE_PREFIX, 1081) +HANDLE_BAT(APINT_TYPE_PREFIX, 1082) +HANDLE_BAT(APINT_TYPE_PREFIX, 1083) +HANDLE_BAT(APINT_TYPE_PREFIX, 1084) +HANDLE_BAT(APINT_TYPE_PREFIX, 1085) +HANDLE_BAT(APINT_TYPE_PREFIX, 1086) +HANDLE_BAT(APINT_TYPE_PREFIX, 1087) +HANDLE_BAT(APINT_TYPE_PREFIX, 1088) +HANDLE_BAT(APINT_TYPE_PREFIX, 1089) +HANDLE_BAT(APINT_TYPE_PREFIX, 1090) +HANDLE_BAT(APINT_TYPE_PREFIX, 1091) +HANDLE_BAT(APINT_TYPE_PREFIX, 1092) +HANDLE_BAT(APINT_TYPE_PREFIX, 1093) +HANDLE_BAT(APINT_TYPE_PREFIX, 1094) +HANDLE_BAT(APINT_TYPE_PREFIX, 1095) +HANDLE_BAT(APINT_TYPE_PREFIX, 1096) +HANDLE_BAT(APINT_TYPE_PREFIX, 1097) +HANDLE_BAT(APINT_TYPE_PREFIX, 1098) +HANDLE_BAT(APINT_TYPE_PREFIX, 1099) +HANDLE_BAT(APINT_TYPE_PREFIX, 1100) +HANDLE_BAT(APINT_TYPE_PREFIX, 1101) +HANDLE_BAT(APINT_TYPE_PREFIX, 1102) +HANDLE_BAT(APINT_TYPE_PREFIX, 1103) +HANDLE_BAT(APINT_TYPE_PREFIX, 1104) +HANDLE_BAT(APINT_TYPE_PREFIX, 1105) +HANDLE_BAT(APINT_TYPE_PREFIX, 1106) +HANDLE_BAT(APINT_TYPE_PREFIX, 1107) +HANDLE_BAT(APINT_TYPE_PREFIX, 1108) +HANDLE_BAT(APINT_TYPE_PREFIX, 1109) +HANDLE_BAT(APINT_TYPE_PREFIX, 1110) +HANDLE_BAT(APINT_TYPE_PREFIX, 1111) +HANDLE_BAT(APINT_TYPE_PREFIX, 1112) +HANDLE_BAT(APINT_TYPE_PREFIX, 1113) +HANDLE_BAT(APINT_TYPE_PREFIX, 1114) +HANDLE_BAT(APINT_TYPE_PREFIX, 1115) +HANDLE_BAT(APINT_TYPE_PREFIX, 1116) +HANDLE_BAT(APINT_TYPE_PREFIX, 1117) +HANDLE_BAT(APINT_TYPE_PREFIX, 1118) +HANDLE_BAT(APINT_TYPE_PREFIX, 1119) +HANDLE_BAT(APINT_TYPE_PREFIX, 1120) +HANDLE_BAT(APINT_TYPE_PREFIX, 1121) +HANDLE_BAT(APINT_TYPE_PREFIX, 1122) +HANDLE_BAT(APINT_TYPE_PREFIX, 1123) +HANDLE_BAT(APINT_TYPE_PREFIX, 1124) +HANDLE_BAT(APINT_TYPE_PREFIX, 1125) +HANDLE_BAT(APINT_TYPE_PREFIX, 1126) +HANDLE_BAT(APINT_TYPE_PREFIX, 1127) +HANDLE_BAT(APINT_TYPE_PREFIX, 1128) +HANDLE_BAT(APINT_TYPE_PREFIX, 1129) +HANDLE_BAT(APINT_TYPE_PREFIX, 1130) +HANDLE_BAT(APINT_TYPE_PREFIX, 1131) +HANDLE_BAT(APINT_TYPE_PREFIX, 1132) +HANDLE_BAT(APINT_TYPE_PREFIX, 1133) +HANDLE_BAT(APINT_TYPE_PREFIX, 1134) +HANDLE_BAT(APINT_TYPE_PREFIX, 1135) +HANDLE_BAT(APINT_TYPE_PREFIX, 1136) +HANDLE_BAT(APINT_TYPE_PREFIX, 1137) +HANDLE_BAT(APINT_TYPE_PREFIX, 1138) +HANDLE_BAT(APINT_TYPE_PREFIX, 1139) +HANDLE_BAT(APINT_TYPE_PREFIX, 1140) +HANDLE_BAT(APINT_TYPE_PREFIX, 1141) +HANDLE_BAT(APINT_TYPE_PREFIX, 1142) +HANDLE_BAT(APINT_TYPE_PREFIX, 1143) +HANDLE_BAT(APINT_TYPE_PREFIX, 1144) +HANDLE_BAT(APINT_TYPE_PREFIX, 1145) +HANDLE_BAT(APINT_TYPE_PREFIX, 1146) +HANDLE_BAT(APINT_TYPE_PREFIX, 1147) +HANDLE_BAT(APINT_TYPE_PREFIX, 1148) +HANDLE_BAT(APINT_TYPE_PREFIX, 1149) +HANDLE_BAT(APINT_TYPE_PREFIX, 1150) +HANDLE_BAT(APINT_TYPE_PREFIX, 1151) +HANDLE_BAT(APINT_TYPE_PREFIX, 1152) +HANDLE_BAT(APINT_TYPE_PREFIX, 1153) +HANDLE_BAT(APINT_TYPE_PREFIX, 1154) +HANDLE_BAT(APINT_TYPE_PREFIX, 1155) +HANDLE_BAT(APINT_TYPE_PREFIX, 1156) +HANDLE_BAT(APINT_TYPE_PREFIX, 1157) +HANDLE_BAT(APINT_TYPE_PREFIX, 1158) +HANDLE_BAT(APINT_TYPE_PREFIX, 1159) +HANDLE_BAT(APINT_TYPE_PREFIX, 1160) +HANDLE_BAT(APINT_TYPE_PREFIX, 1161) +HANDLE_BAT(APINT_TYPE_PREFIX, 1162) +HANDLE_BAT(APINT_TYPE_PREFIX, 1163) +HANDLE_BAT(APINT_TYPE_PREFIX, 1164) +HANDLE_BAT(APINT_TYPE_PREFIX, 1165) +HANDLE_BAT(APINT_TYPE_PREFIX, 1166) +HANDLE_BAT(APINT_TYPE_PREFIX, 1167) +HANDLE_BAT(APINT_TYPE_PREFIX, 1168) +HANDLE_BAT(APINT_TYPE_PREFIX, 1169) +HANDLE_BAT(APINT_TYPE_PREFIX, 1170) +HANDLE_BAT(APINT_TYPE_PREFIX, 1171) +HANDLE_BAT(APINT_TYPE_PREFIX, 1172) +HANDLE_BAT(APINT_TYPE_PREFIX, 1173) +HANDLE_BAT(APINT_TYPE_PREFIX, 1174) +HANDLE_BAT(APINT_TYPE_PREFIX, 1175) +HANDLE_BAT(APINT_TYPE_PREFIX, 1176) +HANDLE_BAT(APINT_TYPE_PREFIX, 1177) +HANDLE_BAT(APINT_TYPE_PREFIX, 1178) +HANDLE_BAT(APINT_TYPE_PREFIX, 1179) +HANDLE_BAT(APINT_TYPE_PREFIX, 1180) +HANDLE_BAT(APINT_TYPE_PREFIX, 1181) +HANDLE_BAT(APINT_TYPE_PREFIX, 1182) +HANDLE_BAT(APINT_TYPE_PREFIX, 1183) +HANDLE_BAT(APINT_TYPE_PREFIX, 1184) +HANDLE_BAT(APINT_TYPE_PREFIX, 1185) +HANDLE_BAT(APINT_TYPE_PREFIX, 1186) +HANDLE_BAT(APINT_TYPE_PREFIX, 1187) +HANDLE_BAT(APINT_TYPE_PREFIX, 1188) +HANDLE_BAT(APINT_TYPE_PREFIX, 1189) +HANDLE_BAT(APINT_TYPE_PREFIX, 1190) +HANDLE_BAT(APINT_TYPE_PREFIX, 1191) +HANDLE_BAT(APINT_TYPE_PREFIX, 1192) +HANDLE_BAT(APINT_TYPE_PREFIX, 1193) +HANDLE_BAT(APINT_TYPE_PREFIX, 1194) +HANDLE_BAT(APINT_TYPE_PREFIX, 1195) +HANDLE_BAT(APINT_TYPE_PREFIX, 1196) +HANDLE_BAT(APINT_TYPE_PREFIX, 1197) +HANDLE_BAT(APINT_TYPE_PREFIX, 1198) +HANDLE_BAT(APINT_TYPE_PREFIX, 1199) +HANDLE_BAT(APINT_TYPE_PREFIX, 1200) +HANDLE_BAT(APINT_TYPE_PREFIX, 1201) +HANDLE_BAT(APINT_TYPE_PREFIX, 1202) +HANDLE_BAT(APINT_TYPE_PREFIX, 1203) +HANDLE_BAT(APINT_TYPE_PREFIX, 1204) +HANDLE_BAT(APINT_TYPE_PREFIX, 1205) +HANDLE_BAT(APINT_TYPE_PREFIX, 1206) +HANDLE_BAT(APINT_TYPE_PREFIX, 1207) +HANDLE_BAT(APINT_TYPE_PREFIX, 1208) +HANDLE_BAT(APINT_TYPE_PREFIX, 1209) +HANDLE_BAT(APINT_TYPE_PREFIX, 1210) +HANDLE_BAT(APINT_TYPE_PREFIX, 1211) +HANDLE_BAT(APINT_TYPE_PREFIX, 1212) +HANDLE_BAT(APINT_TYPE_PREFIX, 1213) +HANDLE_BAT(APINT_TYPE_PREFIX, 1214) +HANDLE_BAT(APINT_TYPE_PREFIX, 1215) +HANDLE_BAT(APINT_TYPE_PREFIX, 1216) +HANDLE_BAT(APINT_TYPE_PREFIX, 1217) +HANDLE_BAT(APINT_TYPE_PREFIX, 1218) +HANDLE_BAT(APINT_TYPE_PREFIX, 1219) +HANDLE_BAT(APINT_TYPE_PREFIX, 1220) +HANDLE_BAT(APINT_TYPE_PREFIX, 1221) +HANDLE_BAT(APINT_TYPE_PREFIX, 1222) +HANDLE_BAT(APINT_TYPE_PREFIX, 1223) +HANDLE_BAT(APINT_TYPE_PREFIX, 1224) +HANDLE_BAT(APINT_TYPE_PREFIX, 1225) +HANDLE_BAT(APINT_TYPE_PREFIX, 1226) +HANDLE_BAT(APINT_TYPE_PREFIX, 1227) +HANDLE_BAT(APINT_TYPE_PREFIX, 1228) +HANDLE_BAT(APINT_TYPE_PREFIX, 1229) +HANDLE_BAT(APINT_TYPE_PREFIX, 1230) +HANDLE_BAT(APINT_TYPE_PREFIX, 1231) +HANDLE_BAT(APINT_TYPE_PREFIX, 1232) +HANDLE_BAT(APINT_TYPE_PREFIX, 1233) +HANDLE_BAT(APINT_TYPE_PREFIX, 1234) +HANDLE_BAT(APINT_TYPE_PREFIX, 1235) +HANDLE_BAT(APINT_TYPE_PREFIX, 1236) +HANDLE_BAT(APINT_TYPE_PREFIX, 1237) +HANDLE_BAT(APINT_TYPE_PREFIX, 1238) +HANDLE_BAT(APINT_TYPE_PREFIX, 1239) +HANDLE_BAT(APINT_TYPE_PREFIX, 1240) +HANDLE_BAT(APINT_TYPE_PREFIX, 1241) +HANDLE_BAT(APINT_TYPE_PREFIX, 1242) +HANDLE_BAT(APINT_TYPE_PREFIX, 1243) +HANDLE_BAT(APINT_TYPE_PREFIX, 1244) +HANDLE_BAT(APINT_TYPE_PREFIX, 1245) +HANDLE_BAT(APINT_TYPE_PREFIX, 1246) +HANDLE_BAT(APINT_TYPE_PREFIX, 1247) +HANDLE_BAT(APINT_TYPE_PREFIX, 1248) +HANDLE_BAT(APINT_TYPE_PREFIX, 1249) +HANDLE_BAT(APINT_TYPE_PREFIX, 1250) +HANDLE_BAT(APINT_TYPE_PREFIX, 1251) +HANDLE_BAT(APINT_TYPE_PREFIX, 1252) +HANDLE_BAT(APINT_TYPE_PREFIX, 1253) +HANDLE_BAT(APINT_TYPE_PREFIX, 1254) +HANDLE_BAT(APINT_TYPE_PREFIX, 1255) +HANDLE_BAT(APINT_TYPE_PREFIX, 1256) +HANDLE_BAT(APINT_TYPE_PREFIX, 1257) +HANDLE_BAT(APINT_TYPE_PREFIX, 1258) +HANDLE_BAT(APINT_TYPE_PREFIX, 1259) +HANDLE_BAT(APINT_TYPE_PREFIX, 1260) +HANDLE_BAT(APINT_TYPE_PREFIX, 1261) +HANDLE_BAT(APINT_TYPE_PREFIX, 1262) +HANDLE_BAT(APINT_TYPE_PREFIX, 1263) +HANDLE_BAT(APINT_TYPE_PREFIX, 1264) +HANDLE_BAT(APINT_TYPE_PREFIX, 1265) +HANDLE_BAT(APINT_TYPE_PREFIX, 1266) +HANDLE_BAT(APINT_TYPE_PREFIX, 1267) +HANDLE_BAT(APINT_TYPE_PREFIX, 1268) +HANDLE_BAT(APINT_TYPE_PREFIX, 1269) +HANDLE_BAT(APINT_TYPE_PREFIX, 1270) +HANDLE_BAT(APINT_TYPE_PREFIX, 1271) +HANDLE_BAT(APINT_TYPE_PREFIX, 1272) +HANDLE_BAT(APINT_TYPE_PREFIX, 1273) +HANDLE_BAT(APINT_TYPE_PREFIX, 1274) +HANDLE_BAT(APINT_TYPE_PREFIX, 1275) +HANDLE_BAT(APINT_TYPE_PREFIX, 1276) +HANDLE_BAT(APINT_TYPE_PREFIX, 1277) +HANDLE_BAT(APINT_TYPE_PREFIX, 1278) +HANDLE_BAT(APINT_TYPE_PREFIX, 1279) +HANDLE_BAT(APINT_TYPE_PREFIX, 1280) +HANDLE_BAT(APINT_TYPE_PREFIX, 1281) +HANDLE_BAT(APINT_TYPE_PREFIX, 1282) +HANDLE_BAT(APINT_TYPE_PREFIX, 1283) +HANDLE_BAT(APINT_TYPE_PREFIX, 1284) +HANDLE_BAT(APINT_TYPE_PREFIX, 1285) +HANDLE_BAT(APINT_TYPE_PREFIX, 1286) +HANDLE_BAT(APINT_TYPE_PREFIX, 1287) +HANDLE_BAT(APINT_TYPE_PREFIX, 1288) +HANDLE_BAT(APINT_TYPE_PREFIX, 1289) +HANDLE_BAT(APINT_TYPE_PREFIX, 1290) +HANDLE_BAT(APINT_TYPE_PREFIX, 1291) +HANDLE_BAT(APINT_TYPE_PREFIX, 1292) +HANDLE_BAT(APINT_TYPE_PREFIX, 1293) +HANDLE_BAT(APINT_TYPE_PREFIX, 1294) +HANDLE_BAT(APINT_TYPE_PREFIX, 1295) +HANDLE_BAT(APINT_TYPE_PREFIX, 1296) +HANDLE_BAT(APINT_TYPE_PREFIX, 1297) +HANDLE_BAT(APINT_TYPE_PREFIX, 1298) +HANDLE_BAT(APINT_TYPE_PREFIX, 1299) +HANDLE_BAT(APINT_TYPE_PREFIX, 1300) +HANDLE_BAT(APINT_TYPE_PREFIX, 1301) +HANDLE_BAT(APINT_TYPE_PREFIX, 1302) +HANDLE_BAT(APINT_TYPE_PREFIX, 1303) +HANDLE_BAT(APINT_TYPE_PREFIX, 1304) +HANDLE_BAT(APINT_TYPE_PREFIX, 1305) +HANDLE_BAT(APINT_TYPE_PREFIX, 1306) +HANDLE_BAT(APINT_TYPE_PREFIX, 1307) +HANDLE_BAT(APINT_TYPE_PREFIX, 1308) +HANDLE_BAT(APINT_TYPE_PREFIX, 1309) +HANDLE_BAT(APINT_TYPE_PREFIX, 1310) +HANDLE_BAT(APINT_TYPE_PREFIX, 1311) +HANDLE_BAT(APINT_TYPE_PREFIX, 1312) +HANDLE_BAT(APINT_TYPE_PREFIX, 1313) +HANDLE_BAT(APINT_TYPE_PREFIX, 1314) +HANDLE_BAT(APINT_TYPE_PREFIX, 1315) +HANDLE_BAT(APINT_TYPE_PREFIX, 1316) +HANDLE_BAT(APINT_TYPE_PREFIX, 1317) +HANDLE_BAT(APINT_TYPE_PREFIX, 1318) +HANDLE_BAT(APINT_TYPE_PREFIX, 1319) +HANDLE_BAT(APINT_TYPE_PREFIX, 1320) +HANDLE_BAT(APINT_TYPE_PREFIX, 1321) +HANDLE_BAT(APINT_TYPE_PREFIX, 1322) +HANDLE_BAT(APINT_TYPE_PREFIX, 1323) +HANDLE_BAT(APINT_TYPE_PREFIX, 1324) +HANDLE_BAT(APINT_TYPE_PREFIX, 1325) +HANDLE_BAT(APINT_TYPE_PREFIX, 1326) +HANDLE_BAT(APINT_TYPE_PREFIX, 1327) +HANDLE_BAT(APINT_TYPE_PREFIX, 1328) +HANDLE_BAT(APINT_TYPE_PREFIX, 1329) +HANDLE_BAT(APINT_TYPE_PREFIX, 1330) +HANDLE_BAT(APINT_TYPE_PREFIX, 1331) +HANDLE_BAT(APINT_TYPE_PREFIX, 1332) +HANDLE_BAT(APINT_TYPE_PREFIX, 1333) +HANDLE_BAT(APINT_TYPE_PREFIX, 1334) +HANDLE_BAT(APINT_TYPE_PREFIX, 1335) +HANDLE_BAT(APINT_TYPE_PREFIX, 1336) +HANDLE_BAT(APINT_TYPE_PREFIX, 1337) +HANDLE_BAT(APINT_TYPE_PREFIX, 1338) +HANDLE_BAT(APINT_TYPE_PREFIX, 1339) +HANDLE_BAT(APINT_TYPE_PREFIX, 1340) +HANDLE_BAT(APINT_TYPE_PREFIX, 1341) +HANDLE_BAT(APINT_TYPE_PREFIX, 1342) +HANDLE_BAT(APINT_TYPE_PREFIX, 1343) +HANDLE_BAT(APINT_TYPE_PREFIX, 1344) +HANDLE_BAT(APINT_TYPE_PREFIX, 1345) +HANDLE_BAT(APINT_TYPE_PREFIX, 1346) +HANDLE_BAT(APINT_TYPE_PREFIX, 1347) +HANDLE_BAT(APINT_TYPE_PREFIX, 1348) +HANDLE_BAT(APINT_TYPE_PREFIX, 1349) +HANDLE_BAT(APINT_TYPE_PREFIX, 1350) +HANDLE_BAT(APINT_TYPE_PREFIX, 1351) +HANDLE_BAT(APINT_TYPE_PREFIX, 1352) +HANDLE_BAT(APINT_TYPE_PREFIX, 1353) +HANDLE_BAT(APINT_TYPE_PREFIX, 1354) +HANDLE_BAT(APINT_TYPE_PREFIX, 1355) +HANDLE_BAT(APINT_TYPE_PREFIX, 1356) +HANDLE_BAT(APINT_TYPE_PREFIX, 1357) +HANDLE_BAT(APINT_TYPE_PREFIX, 1358) +HANDLE_BAT(APINT_TYPE_PREFIX, 1359) +HANDLE_BAT(APINT_TYPE_PREFIX, 1360) +HANDLE_BAT(APINT_TYPE_PREFIX, 1361) +HANDLE_BAT(APINT_TYPE_PREFIX, 1362) +HANDLE_BAT(APINT_TYPE_PREFIX, 1363) +HANDLE_BAT(APINT_TYPE_PREFIX, 1364) +HANDLE_BAT(APINT_TYPE_PREFIX, 1365) +HANDLE_BAT(APINT_TYPE_PREFIX, 1366) +HANDLE_BAT(APINT_TYPE_PREFIX, 1367) +HANDLE_BAT(APINT_TYPE_PREFIX, 1368) +HANDLE_BAT(APINT_TYPE_PREFIX, 1369) +HANDLE_BAT(APINT_TYPE_PREFIX, 1370) +HANDLE_BAT(APINT_TYPE_PREFIX, 1371) +HANDLE_BAT(APINT_TYPE_PREFIX, 1372) +HANDLE_BAT(APINT_TYPE_PREFIX, 1373) +HANDLE_BAT(APINT_TYPE_PREFIX, 1374) +HANDLE_BAT(APINT_TYPE_PREFIX, 1375) +HANDLE_BAT(APINT_TYPE_PREFIX, 1376) +HANDLE_BAT(APINT_TYPE_PREFIX, 1377) +HANDLE_BAT(APINT_TYPE_PREFIX, 1378) +HANDLE_BAT(APINT_TYPE_PREFIX, 1379) +HANDLE_BAT(APINT_TYPE_PREFIX, 1380) +HANDLE_BAT(APINT_TYPE_PREFIX, 1381) +HANDLE_BAT(APINT_TYPE_PREFIX, 1382) +HANDLE_BAT(APINT_TYPE_PREFIX, 1383) +HANDLE_BAT(APINT_TYPE_PREFIX, 1384) +HANDLE_BAT(APINT_TYPE_PREFIX, 1385) +HANDLE_BAT(APINT_TYPE_PREFIX, 1386) +HANDLE_BAT(APINT_TYPE_PREFIX, 1387) +HANDLE_BAT(APINT_TYPE_PREFIX, 1388) +HANDLE_BAT(APINT_TYPE_PREFIX, 1389) +HANDLE_BAT(APINT_TYPE_PREFIX, 1390) +HANDLE_BAT(APINT_TYPE_PREFIX, 1391) +HANDLE_BAT(APINT_TYPE_PREFIX, 1392) +HANDLE_BAT(APINT_TYPE_PREFIX, 1393) +HANDLE_BAT(APINT_TYPE_PREFIX, 1394) +HANDLE_BAT(APINT_TYPE_PREFIX, 1395) +HANDLE_BAT(APINT_TYPE_PREFIX, 1396) +HANDLE_BAT(APINT_TYPE_PREFIX, 1397) +HANDLE_BAT(APINT_TYPE_PREFIX, 1398) +HANDLE_BAT(APINT_TYPE_PREFIX, 1399) +HANDLE_BAT(APINT_TYPE_PREFIX, 1400) +HANDLE_BAT(APINT_TYPE_PREFIX, 1401) +HANDLE_BAT(APINT_TYPE_PREFIX, 1402) +HANDLE_BAT(APINT_TYPE_PREFIX, 1403) +HANDLE_BAT(APINT_TYPE_PREFIX, 1404) +HANDLE_BAT(APINT_TYPE_PREFIX, 1405) +HANDLE_BAT(APINT_TYPE_PREFIX, 1406) +HANDLE_BAT(APINT_TYPE_PREFIX, 1407) +HANDLE_BAT(APINT_TYPE_PREFIX, 1408) +HANDLE_BAT(APINT_TYPE_PREFIX, 1409) +HANDLE_BAT(APINT_TYPE_PREFIX, 1410) +HANDLE_BAT(APINT_TYPE_PREFIX, 1411) +HANDLE_BAT(APINT_TYPE_PREFIX, 1412) +HANDLE_BAT(APINT_TYPE_PREFIX, 1413) +HANDLE_BAT(APINT_TYPE_PREFIX, 1414) +HANDLE_BAT(APINT_TYPE_PREFIX, 1415) +HANDLE_BAT(APINT_TYPE_PREFIX, 1416) +HANDLE_BAT(APINT_TYPE_PREFIX, 1417) +HANDLE_BAT(APINT_TYPE_PREFIX, 1418) +HANDLE_BAT(APINT_TYPE_PREFIX, 1419) +HANDLE_BAT(APINT_TYPE_PREFIX, 1420) +HANDLE_BAT(APINT_TYPE_PREFIX, 1421) +HANDLE_BAT(APINT_TYPE_PREFIX, 1422) +HANDLE_BAT(APINT_TYPE_PREFIX, 1423) +HANDLE_BAT(APINT_TYPE_PREFIX, 1424) +HANDLE_BAT(APINT_TYPE_PREFIX, 1425) +HANDLE_BAT(APINT_TYPE_PREFIX, 1426) +HANDLE_BAT(APINT_TYPE_PREFIX, 1427) +HANDLE_BAT(APINT_TYPE_PREFIX, 1428) +HANDLE_BAT(APINT_TYPE_PREFIX, 1429) +HANDLE_BAT(APINT_TYPE_PREFIX, 1430) +HANDLE_BAT(APINT_TYPE_PREFIX, 1431) +HANDLE_BAT(APINT_TYPE_PREFIX, 1432) +HANDLE_BAT(APINT_TYPE_PREFIX, 1433) +HANDLE_BAT(APINT_TYPE_PREFIX, 1434) +HANDLE_BAT(APINT_TYPE_PREFIX, 1435) +HANDLE_BAT(APINT_TYPE_PREFIX, 1436) +HANDLE_BAT(APINT_TYPE_PREFIX, 1437) +HANDLE_BAT(APINT_TYPE_PREFIX, 1438) +HANDLE_BAT(APINT_TYPE_PREFIX, 1439) +HANDLE_BAT(APINT_TYPE_PREFIX, 1440) +HANDLE_BAT(APINT_TYPE_PREFIX, 1441) +HANDLE_BAT(APINT_TYPE_PREFIX, 1442) +HANDLE_BAT(APINT_TYPE_PREFIX, 1443) +HANDLE_BAT(APINT_TYPE_PREFIX, 1444) +HANDLE_BAT(APINT_TYPE_PREFIX, 1445) +HANDLE_BAT(APINT_TYPE_PREFIX, 1446) +HANDLE_BAT(APINT_TYPE_PREFIX, 1447) +HANDLE_BAT(APINT_TYPE_PREFIX, 1448) +HANDLE_BAT(APINT_TYPE_PREFIX, 1449) +HANDLE_BAT(APINT_TYPE_PREFIX, 1450) +HANDLE_BAT(APINT_TYPE_PREFIX, 1451) +HANDLE_BAT(APINT_TYPE_PREFIX, 1452) +HANDLE_BAT(APINT_TYPE_PREFIX, 1453) +HANDLE_BAT(APINT_TYPE_PREFIX, 1454) +HANDLE_BAT(APINT_TYPE_PREFIX, 1455) +HANDLE_BAT(APINT_TYPE_PREFIX, 1456) +HANDLE_BAT(APINT_TYPE_PREFIX, 1457) +HANDLE_BAT(APINT_TYPE_PREFIX, 1458) +HANDLE_BAT(APINT_TYPE_PREFIX, 1459) +HANDLE_BAT(APINT_TYPE_PREFIX, 1460) +HANDLE_BAT(APINT_TYPE_PREFIX, 1461) +HANDLE_BAT(APINT_TYPE_PREFIX, 1462) +HANDLE_BAT(APINT_TYPE_PREFIX, 1463) +HANDLE_BAT(APINT_TYPE_PREFIX, 1464) +HANDLE_BAT(APINT_TYPE_PREFIX, 1465) +HANDLE_BAT(APINT_TYPE_PREFIX, 1466) +HANDLE_BAT(APINT_TYPE_PREFIX, 1467) +HANDLE_BAT(APINT_TYPE_PREFIX, 1468) +HANDLE_BAT(APINT_TYPE_PREFIX, 1469) +HANDLE_BAT(APINT_TYPE_PREFIX, 1470) +HANDLE_BAT(APINT_TYPE_PREFIX, 1471) +HANDLE_BAT(APINT_TYPE_PREFIX, 1472) +HANDLE_BAT(APINT_TYPE_PREFIX, 1473) +HANDLE_BAT(APINT_TYPE_PREFIX, 1474) +HANDLE_BAT(APINT_TYPE_PREFIX, 1475) +HANDLE_BAT(APINT_TYPE_PREFIX, 1476) +HANDLE_BAT(APINT_TYPE_PREFIX, 1477) +HANDLE_BAT(APINT_TYPE_PREFIX, 1478) +HANDLE_BAT(APINT_TYPE_PREFIX, 1479) +HANDLE_BAT(APINT_TYPE_PREFIX, 1480) +HANDLE_BAT(APINT_TYPE_PREFIX, 1481) +HANDLE_BAT(APINT_TYPE_PREFIX, 1482) +HANDLE_BAT(APINT_TYPE_PREFIX, 1483) +HANDLE_BAT(APINT_TYPE_PREFIX, 1484) +HANDLE_BAT(APINT_TYPE_PREFIX, 1485) +HANDLE_BAT(APINT_TYPE_PREFIX, 1486) +HANDLE_BAT(APINT_TYPE_PREFIX, 1487) +HANDLE_BAT(APINT_TYPE_PREFIX, 1488) +HANDLE_BAT(APINT_TYPE_PREFIX, 1489) +HANDLE_BAT(APINT_TYPE_PREFIX, 1490) +HANDLE_BAT(APINT_TYPE_PREFIX, 1491) +HANDLE_BAT(APINT_TYPE_PREFIX, 1492) +HANDLE_BAT(APINT_TYPE_PREFIX, 1493) +HANDLE_BAT(APINT_TYPE_PREFIX, 1494) +HANDLE_BAT(APINT_TYPE_PREFIX, 1495) +HANDLE_BAT(APINT_TYPE_PREFIX, 1496) +HANDLE_BAT(APINT_TYPE_PREFIX, 1497) +HANDLE_BAT(APINT_TYPE_PREFIX, 1498) +HANDLE_BAT(APINT_TYPE_PREFIX, 1499) +HANDLE_BAT(APINT_TYPE_PREFIX, 1500) +HANDLE_BAT(APINT_TYPE_PREFIX, 1501) +HANDLE_BAT(APINT_TYPE_PREFIX, 1502) +HANDLE_BAT(APINT_TYPE_PREFIX, 1503) +HANDLE_BAT(APINT_TYPE_PREFIX, 1504) +HANDLE_BAT(APINT_TYPE_PREFIX, 1505) +HANDLE_BAT(APINT_TYPE_PREFIX, 1506) +HANDLE_BAT(APINT_TYPE_PREFIX, 1507) +HANDLE_BAT(APINT_TYPE_PREFIX, 1508) +HANDLE_BAT(APINT_TYPE_PREFIX, 1509) +HANDLE_BAT(APINT_TYPE_PREFIX, 1510) +HANDLE_BAT(APINT_TYPE_PREFIX, 1511) +HANDLE_BAT(APINT_TYPE_PREFIX, 1512) +HANDLE_BAT(APINT_TYPE_PREFIX, 1513) +HANDLE_BAT(APINT_TYPE_PREFIX, 1514) +HANDLE_BAT(APINT_TYPE_PREFIX, 1515) +HANDLE_BAT(APINT_TYPE_PREFIX, 1516) +HANDLE_BAT(APINT_TYPE_PREFIX, 1517) +HANDLE_BAT(APINT_TYPE_PREFIX, 1518) +HANDLE_BAT(APINT_TYPE_PREFIX, 1519) +HANDLE_BAT(APINT_TYPE_PREFIX, 1520) +HANDLE_BAT(APINT_TYPE_PREFIX, 1521) +HANDLE_BAT(APINT_TYPE_PREFIX, 1522) +HANDLE_BAT(APINT_TYPE_PREFIX, 1523) +HANDLE_BAT(APINT_TYPE_PREFIX, 1524) +HANDLE_BAT(APINT_TYPE_PREFIX, 1525) +HANDLE_BAT(APINT_TYPE_PREFIX, 1526) +HANDLE_BAT(APINT_TYPE_PREFIX, 1527) +HANDLE_BAT(APINT_TYPE_PREFIX, 1528) +HANDLE_BAT(APINT_TYPE_PREFIX, 1529) +HANDLE_BAT(APINT_TYPE_PREFIX, 1530) +HANDLE_BAT(APINT_TYPE_PREFIX, 1531) +HANDLE_BAT(APINT_TYPE_PREFIX, 1532) +HANDLE_BAT(APINT_TYPE_PREFIX, 1533) +HANDLE_BAT(APINT_TYPE_PREFIX, 1534) +HANDLE_BAT(APINT_TYPE_PREFIX, 1535) +HANDLE_BAT(APINT_TYPE_PREFIX, 1536) +HANDLE_BAT(APINT_TYPE_PREFIX, 1537) +HANDLE_BAT(APINT_TYPE_PREFIX, 1538) +HANDLE_BAT(APINT_TYPE_PREFIX, 1539) +HANDLE_BAT(APINT_TYPE_PREFIX, 1540) +HANDLE_BAT(APINT_TYPE_PREFIX, 1541) +HANDLE_BAT(APINT_TYPE_PREFIX, 1542) +HANDLE_BAT(APINT_TYPE_PREFIX, 1543) +HANDLE_BAT(APINT_TYPE_PREFIX, 1544) +HANDLE_BAT(APINT_TYPE_PREFIX, 1545) +HANDLE_BAT(APINT_TYPE_PREFIX, 1546) +HANDLE_BAT(APINT_TYPE_PREFIX, 1547) +HANDLE_BAT(APINT_TYPE_PREFIX, 1548) +HANDLE_BAT(APINT_TYPE_PREFIX, 1549) +HANDLE_BAT(APINT_TYPE_PREFIX, 1550) +HANDLE_BAT(APINT_TYPE_PREFIX, 1551) +HANDLE_BAT(APINT_TYPE_PREFIX, 1552) +HANDLE_BAT(APINT_TYPE_PREFIX, 1553) +HANDLE_BAT(APINT_TYPE_PREFIX, 1554) +HANDLE_BAT(APINT_TYPE_PREFIX, 1555) +HANDLE_BAT(APINT_TYPE_PREFIX, 1556) +HANDLE_BAT(APINT_TYPE_PREFIX, 1557) +HANDLE_BAT(APINT_TYPE_PREFIX, 1558) +HANDLE_BAT(APINT_TYPE_PREFIX, 1559) +HANDLE_BAT(APINT_TYPE_PREFIX, 1560) +HANDLE_BAT(APINT_TYPE_PREFIX, 1561) +HANDLE_BAT(APINT_TYPE_PREFIX, 1562) +HANDLE_BAT(APINT_TYPE_PREFIX, 1563) +HANDLE_BAT(APINT_TYPE_PREFIX, 1564) +HANDLE_BAT(APINT_TYPE_PREFIX, 1565) +HANDLE_BAT(APINT_TYPE_PREFIX, 1566) +HANDLE_BAT(APINT_TYPE_PREFIX, 1567) +HANDLE_BAT(APINT_TYPE_PREFIX, 1568) +HANDLE_BAT(APINT_TYPE_PREFIX, 1569) +HANDLE_BAT(APINT_TYPE_PREFIX, 1570) +HANDLE_BAT(APINT_TYPE_PREFIX, 1571) +HANDLE_BAT(APINT_TYPE_PREFIX, 1572) +HANDLE_BAT(APINT_TYPE_PREFIX, 1573) +HANDLE_BAT(APINT_TYPE_PREFIX, 1574) +HANDLE_BAT(APINT_TYPE_PREFIX, 1575) +HANDLE_BAT(APINT_TYPE_PREFIX, 1576) +HANDLE_BAT(APINT_TYPE_PREFIX, 1577) +HANDLE_BAT(APINT_TYPE_PREFIX, 1578) +HANDLE_BAT(APINT_TYPE_PREFIX, 1579) +HANDLE_BAT(APINT_TYPE_PREFIX, 1580) +HANDLE_BAT(APINT_TYPE_PREFIX, 1581) +HANDLE_BAT(APINT_TYPE_PREFIX, 1582) +HANDLE_BAT(APINT_TYPE_PREFIX, 1583) +HANDLE_BAT(APINT_TYPE_PREFIX, 1584) +HANDLE_BAT(APINT_TYPE_PREFIX, 1585) +HANDLE_BAT(APINT_TYPE_PREFIX, 1586) +HANDLE_BAT(APINT_TYPE_PREFIX, 1587) +HANDLE_BAT(APINT_TYPE_PREFIX, 1588) +HANDLE_BAT(APINT_TYPE_PREFIX, 1589) +HANDLE_BAT(APINT_TYPE_PREFIX, 1590) +HANDLE_BAT(APINT_TYPE_PREFIX, 1591) +HANDLE_BAT(APINT_TYPE_PREFIX, 1592) +HANDLE_BAT(APINT_TYPE_PREFIX, 1593) +HANDLE_BAT(APINT_TYPE_PREFIX, 1594) +HANDLE_BAT(APINT_TYPE_PREFIX, 1595) +HANDLE_BAT(APINT_TYPE_PREFIX, 1596) +HANDLE_BAT(APINT_TYPE_PREFIX, 1597) +HANDLE_BAT(APINT_TYPE_PREFIX, 1598) +HANDLE_BAT(APINT_TYPE_PREFIX, 1599) +HANDLE_BAT(APINT_TYPE_PREFIX, 1600) +HANDLE_BAT(APINT_TYPE_PREFIX, 1601) +HANDLE_BAT(APINT_TYPE_PREFIX, 1602) +HANDLE_BAT(APINT_TYPE_PREFIX, 1603) +HANDLE_BAT(APINT_TYPE_PREFIX, 1604) +HANDLE_BAT(APINT_TYPE_PREFIX, 1605) +HANDLE_BAT(APINT_TYPE_PREFIX, 1606) +HANDLE_BAT(APINT_TYPE_PREFIX, 1607) +HANDLE_BAT(APINT_TYPE_PREFIX, 1608) +HANDLE_BAT(APINT_TYPE_PREFIX, 1609) +HANDLE_BAT(APINT_TYPE_PREFIX, 1610) +HANDLE_BAT(APINT_TYPE_PREFIX, 1611) +HANDLE_BAT(APINT_TYPE_PREFIX, 1612) +HANDLE_BAT(APINT_TYPE_PREFIX, 1613) +HANDLE_BAT(APINT_TYPE_PREFIX, 1614) +HANDLE_BAT(APINT_TYPE_PREFIX, 1615) +HANDLE_BAT(APINT_TYPE_PREFIX, 1616) +HANDLE_BAT(APINT_TYPE_PREFIX, 1617) +HANDLE_BAT(APINT_TYPE_PREFIX, 1618) +HANDLE_BAT(APINT_TYPE_PREFIX, 1619) +HANDLE_BAT(APINT_TYPE_PREFIX, 1620) +HANDLE_BAT(APINT_TYPE_PREFIX, 1621) +HANDLE_BAT(APINT_TYPE_PREFIX, 1622) +HANDLE_BAT(APINT_TYPE_PREFIX, 1623) +HANDLE_BAT(APINT_TYPE_PREFIX, 1624) +HANDLE_BAT(APINT_TYPE_PREFIX, 1625) +HANDLE_BAT(APINT_TYPE_PREFIX, 1626) +HANDLE_BAT(APINT_TYPE_PREFIX, 1627) +HANDLE_BAT(APINT_TYPE_PREFIX, 1628) +HANDLE_BAT(APINT_TYPE_PREFIX, 1629) +HANDLE_BAT(APINT_TYPE_PREFIX, 1630) +HANDLE_BAT(APINT_TYPE_PREFIX, 1631) +HANDLE_BAT(APINT_TYPE_PREFIX, 1632) +HANDLE_BAT(APINT_TYPE_PREFIX, 1633) +HANDLE_BAT(APINT_TYPE_PREFIX, 1634) +HANDLE_BAT(APINT_TYPE_PREFIX, 1635) +HANDLE_BAT(APINT_TYPE_PREFIX, 1636) +HANDLE_BAT(APINT_TYPE_PREFIX, 1637) +HANDLE_BAT(APINT_TYPE_PREFIX, 1638) +HANDLE_BAT(APINT_TYPE_PREFIX, 1639) +HANDLE_BAT(APINT_TYPE_PREFIX, 1640) +HANDLE_BAT(APINT_TYPE_PREFIX, 1641) +HANDLE_BAT(APINT_TYPE_PREFIX, 1642) +HANDLE_BAT(APINT_TYPE_PREFIX, 1643) +HANDLE_BAT(APINT_TYPE_PREFIX, 1644) +HANDLE_BAT(APINT_TYPE_PREFIX, 1645) +HANDLE_BAT(APINT_TYPE_PREFIX, 1646) +HANDLE_BAT(APINT_TYPE_PREFIX, 1647) +HANDLE_BAT(APINT_TYPE_PREFIX, 1648) +HANDLE_BAT(APINT_TYPE_PREFIX, 1649) +HANDLE_BAT(APINT_TYPE_PREFIX, 1650) +HANDLE_BAT(APINT_TYPE_PREFIX, 1651) +HANDLE_BAT(APINT_TYPE_PREFIX, 1652) +HANDLE_BAT(APINT_TYPE_PREFIX, 1653) +HANDLE_BAT(APINT_TYPE_PREFIX, 1654) +HANDLE_BAT(APINT_TYPE_PREFIX, 1655) +HANDLE_BAT(APINT_TYPE_PREFIX, 1656) +HANDLE_BAT(APINT_TYPE_PREFIX, 1657) +HANDLE_BAT(APINT_TYPE_PREFIX, 1658) +HANDLE_BAT(APINT_TYPE_PREFIX, 1659) +HANDLE_BAT(APINT_TYPE_PREFIX, 1660) +HANDLE_BAT(APINT_TYPE_PREFIX, 1661) +HANDLE_BAT(APINT_TYPE_PREFIX, 1662) +HANDLE_BAT(APINT_TYPE_PREFIX, 1663) +HANDLE_BAT(APINT_TYPE_PREFIX, 1664) +HANDLE_BAT(APINT_TYPE_PREFIX, 1665) +HANDLE_BAT(APINT_TYPE_PREFIX, 1666) +HANDLE_BAT(APINT_TYPE_PREFIX, 1667) +HANDLE_BAT(APINT_TYPE_PREFIX, 1668) +HANDLE_BAT(APINT_TYPE_PREFIX, 1669) +HANDLE_BAT(APINT_TYPE_PREFIX, 1670) +HANDLE_BAT(APINT_TYPE_PREFIX, 1671) +HANDLE_BAT(APINT_TYPE_PREFIX, 1672) +HANDLE_BAT(APINT_TYPE_PREFIX, 1673) +HANDLE_BAT(APINT_TYPE_PREFIX, 1674) +HANDLE_BAT(APINT_TYPE_PREFIX, 1675) +HANDLE_BAT(APINT_TYPE_PREFIX, 1676) +HANDLE_BAT(APINT_TYPE_PREFIX, 1677) +HANDLE_BAT(APINT_TYPE_PREFIX, 1678) +HANDLE_BAT(APINT_TYPE_PREFIX, 1679) +HANDLE_BAT(APINT_TYPE_PREFIX, 1680) +HANDLE_BAT(APINT_TYPE_PREFIX, 1681) +HANDLE_BAT(APINT_TYPE_PREFIX, 1682) +HANDLE_BAT(APINT_TYPE_PREFIX, 1683) +HANDLE_BAT(APINT_TYPE_PREFIX, 1684) +HANDLE_BAT(APINT_TYPE_PREFIX, 1685) +HANDLE_BAT(APINT_TYPE_PREFIX, 1686) +HANDLE_BAT(APINT_TYPE_PREFIX, 1687) +HANDLE_BAT(APINT_TYPE_PREFIX, 1688) +HANDLE_BAT(APINT_TYPE_PREFIX, 1689) +HANDLE_BAT(APINT_TYPE_PREFIX, 1690) +HANDLE_BAT(APINT_TYPE_PREFIX, 1691) +HANDLE_BAT(APINT_TYPE_PREFIX, 1692) +HANDLE_BAT(APINT_TYPE_PREFIX, 1693) +HANDLE_BAT(APINT_TYPE_PREFIX, 1694) +HANDLE_BAT(APINT_TYPE_PREFIX, 1695) +HANDLE_BAT(APINT_TYPE_PREFIX, 1696) +HANDLE_BAT(APINT_TYPE_PREFIX, 1697) +HANDLE_BAT(APINT_TYPE_PREFIX, 1698) +HANDLE_BAT(APINT_TYPE_PREFIX, 1699) +HANDLE_BAT(APINT_TYPE_PREFIX, 1700) +HANDLE_BAT(APINT_TYPE_PREFIX, 1701) +HANDLE_BAT(APINT_TYPE_PREFIX, 1702) +HANDLE_BAT(APINT_TYPE_PREFIX, 1703) +HANDLE_BAT(APINT_TYPE_PREFIX, 1704) +HANDLE_BAT(APINT_TYPE_PREFIX, 1705) +HANDLE_BAT(APINT_TYPE_PREFIX, 1706) +HANDLE_BAT(APINT_TYPE_PREFIX, 1707) +HANDLE_BAT(APINT_TYPE_PREFIX, 1708) +HANDLE_BAT(APINT_TYPE_PREFIX, 1709) +HANDLE_BAT(APINT_TYPE_PREFIX, 1710) +HANDLE_BAT(APINT_TYPE_PREFIX, 1711) +HANDLE_BAT(APINT_TYPE_PREFIX, 1712) +HANDLE_BAT(APINT_TYPE_PREFIX, 1713) +HANDLE_BAT(APINT_TYPE_PREFIX, 1714) +HANDLE_BAT(APINT_TYPE_PREFIX, 1715) +HANDLE_BAT(APINT_TYPE_PREFIX, 1716) +HANDLE_BAT(APINT_TYPE_PREFIX, 1717) +HANDLE_BAT(APINT_TYPE_PREFIX, 1718) +HANDLE_BAT(APINT_TYPE_PREFIX, 1719) +HANDLE_BAT(APINT_TYPE_PREFIX, 1720) +HANDLE_BAT(APINT_TYPE_PREFIX, 1721) +HANDLE_BAT(APINT_TYPE_PREFIX, 1722) +HANDLE_BAT(APINT_TYPE_PREFIX, 1723) +HANDLE_BAT(APINT_TYPE_PREFIX, 1724) +HANDLE_BAT(APINT_TYPE_PREFIX, 1725) +HANDLE_BAT(APINT_TYPE_PREFIX, 1726) +HANDLE_BAT(APINT_TYPE_PREFIX, 1727) +HANDLE_BAT(APINT_TYPE_PREFIX, 1728) +HANDLE_BAT(APINT_TYPE_PREFIX, 1729) +HANDLE_BAT(APINT_TYPE_PREFIX, 1730) +HANDLE_BAT(APINT_TYPE_PREFIX, 1731) +HANDLE_BAT(APINT_TYPE_PREFIX, 1732) +HANDLE_BAT(APINT_TYPE_PREFIX, 1733) +HANDLE_BAT(APINT_TYPE_PREFIX, 1734) +HANDLE_BAT(APINT_TYPE_PREFIX, 1735) +HANDLE_BAT(APINT_TYPE_PREFIX, 1736) +HANDLE_BAT(APINT_TYPE_PREFIX, 1737) +HANDLE_BAT(APINT_TYPE_PREFIX, 1738) +HANDLE_BAT(APINT_TYPE_PREFIX, 1739) +HANDLE_BAT(APINT_TYPE_PREFIX, 1740) +HANDLE_BAT(APINT_TYPE_PREFIX, 1741) +HANDLE_BAT(APINT_TYPE_PREFIX, 1742) +HANDLE_BAT(APINT_TYPE_PREFIX, 1743) +HANDLE_BAT(APINT_TYPE_PREFIX, 1744) +HANDLE_BAT(APINT_TYPE_PREFIX, 1745) +HANDLE_BAT(APINT_TYPE_PREFIX, 1746) +HANDLE_BAT(APINT_TYPE_PREFIX, 1747) +HANDLE_BAT(APINT_TYPE_PREFIX, 1748) +HANDLE_BAT(APINT_TYPE_PREFIX, 1749) +HANDLE_BAT(APINT_TYPE_PREFIX, 1750) +HANDLE_BAT(APINT_TYPE_PREFIX, 1751) +HANDLE_BAT(APINT_TYPE_PREFIX, 1752) +HANDLE_BAT(APINT_TYPE_PREFIX, 1753) +HANDLE_BAT(APINT_TYPE_PREFIX, 1754) +HANDLE_BAT(APINT_TYPE_PREFIX, 1755) +HANDLE_BAT(APINT_TYPE_PREFIX, 1756) +HANDLE_BAT(APINT_TYPE_PREFIX, 1757) +HANDLE_BAT(APINT_TYPE_PREFIX, 1758) +HANDLE_BAT(APINT_TYPE_PREFIX, 1759) +HANDLE_BAT(APINT_TYPE_PREFIX, 1760) +HANDLE_BAT(APINT_TYPE_PREFIX, 1761) +HANDLE_BAT(APINT_TYPE_PREFIX, 1762) +HANDLE_BAT(APINT_TYPE_PREFIX, 1763) +HANDLE_BAT(APINT_TYPE_PREFIX, 1764) +HANDLE_BAT(APINT_TYPE_PREFIX, 1765) +HANDLE_BAT(APINT_TYPE_PREFIX, 1766) +HANDLE_BAT(APINT_TYPE_PREFIX, 1767) +HANDLE_BAT(APINT_TYPE_PREFIX, 1768) +HANDLE_BAT(APINT_TYPE_PREFIX, 1769) +HANDLE_BAT(APINT_TYPE_PREFIX, 1770) +HANDLE_BAT(APINT_TYPE_PREFIX, 1771) +HANDLE_BAT(APINT_TYPE_PREFIX, 1772) +HANDLE_BAT(APINT_TYPE_PREFIX, 1773) +HANDLE_BAT(APINT_TYPE_PREFIX, 1774) +HANDLE_BAT(APINT_TYPE_PREFIX, 1775) +HANDLE_BAT(APINT_TYPE_PREFIX, 1776) +HANDLE_BAT(APINT_TYPE_PREFIX, 1777) +HANDLE_BAT(APINT_TYPE_PREFIX, 1778) +HANDLE_BAT(APINT_TYPE_PREFIX, 1779) +HANDLE_BAT(APINT_TYPE_PREFIX, 1780) +HANDLE_BAT(APINT_TYPE_PREFIX, 1781) +HANDLE_BAT(APINT_TYPE_PREFIX, 1782) +HANDLE_BAT(APINT_TYPE_PREFIX, 1783) +HANDLE_BAT(APINT_TYPE_PREFIX, 1784) +HANDLE_BAT(APINT_TYPE_PREFIX, 1785) +HANDLE_BAT(APINT_TYPE_PREFIX, 1786) +HANDLE_BAT(APINT_TYPE_PREFIX, 1787) +HANDLE_BAT(APINT_TYPE_PREFIX, 1788) +HANDLE_BAT(APINT_TYPE_PREFIX, 1789) +HANDLE_BAT(APINT_TYPE_PREFIX, 1790) +HANDLE_BAT(APINT_TYPE_PREFIX, 1791) +HANDLE_BAT(APINT_TYPE_PREFIX, 1792) +HANDLE_BAT(APINT_TYPE_PREFIX, 1793) +HANDLE_BAT(APINT_TYPE_PREFIX, 1794) +HANDLE_BAT(APINT_TYPE_PREFIX, 1795) +HANDLE_BAT(APINT_TYPE_PREFIX, 1796) +HANDLE_BAT(APINT_TYPE_PREFIX, 1797) +HANDLE_BAT(APINT_TYPE_PREFIX, 1798) +HANDLE_BAT(APINT_TYPE_PREFIX, 1799) +HANDLE_BAT(APINT_TYPE_PREFIX, 1800) +HANDLE_BAT(APINT_TYPE_PREFIX, 1801) +HANDLE_BAT(APINT_TYPE_PREFIX, 1802) +HANDLE_BAT(APINT_TYPE_PREFIX, 1803) +HANDLE_BAT(APINT_TYPE_PREFIX, 1804) +HANDLE_BAT(APINT_TYPE_PREFIX, 1805) +HANDLE_BAT(APINT_TYPE_PREFIX, 1806) +HANDLE_BAT(APINT_TYPE_PREFIX, 1807) +HANDLE_BAT(APINT_TYPE_PREFIX, 1808) +HANDLE_BAT(APINT_TYPE_PREFIX, 1809) +HANDLE_BAT(APINT_TYPE_PREFIX, 1810) +HANDLE_BAT(APINT_TYPE_PREFIX, 1811) +HANDLE_BAT(APINT_TYPE_PREFIX, 1812) +HANDLE_BAT(APINT_TYPE_PREFIX, 1813) +HANDLE_BAT(APINT_TYPE_PREFIX, 1814) +HANDLE_BAT(APINT_TYPE_PREFIX, 1815) +HANDLE_BAT(APINT_TYPE_PREFIX, 1816) +HANDLE_BAT(APINT_TYPE_PREFIX, 1817) +HANDLE_BAT(APINT_TYPE_PREFIX, 1818) +HANDLE_BAT(APINT_TYPE_PREFIX, 1819) +HANDLE_BAT(APINT_TYPE_PREFIX, 1820) +HANDLE_BAT(APINT_TYPE_PREFIX, 1821) +HANDLE_BAT(APINT_TYPE_PREFIX, 1822) +HANDLE_BAT(APINT_TYPE_PREFIX, 1823) +HANDLE_BAT(APINT_TYPE_PREFIX, 1824) +HANDLE_BAT(APINT_TYPE_PREFIX, 1825) +HANDLE_BAT(APINT_TYPE_PREFIX, 1826) +HANDLE_BAT(APINT_TYPE_PREFIX, 1827) +HANDLE_BAT(APINT_TYPE_PREFIX, 1828) +HANDLE_BAT(APINT_TYPE_PREFIX, 1829) +HANDLE_BAT(APINT_TYPE_PREFIX, 1830) +HANDLE_BAT(APINT_TYPE_PREFIX, 1831) +HANDLE_BAT(APINT_TYPE_PREFIX, 1832) +HANDLE_BAT(APINT_TYPE_PREFIX, 1833) +HANDLE_BAT(APINT_TYPE_PREFIX, 1834) +HANDLE_BAT(APINT_TYPE_PREFIX, 1835) +HANDLE_BAT(APINT_TYPE_PREFIX, 1836) +HANDLE_BAT(APINT_TYPE_PREFIX, 1837) +HANDLE_BAT(APINT_TYPE_PREFIX, 1838) +HANDLE_BAT(APINT_TYPE_PREFIX, 1839) +HANDLE_BAT(APINT_TYPE_PREFIX, 1840) +HANDLE_BAT(APINT_TYPE_PREFIX, 1841) +HANDLE_BAT(APINT_TYPE_PREFIX, 1842) +HANDLE_BAT(APINT_TYPE_PREFIX, 1843) +HANDLE_BAT(APINT_TYPE_PREFIX, 1844) +HANDLE_BAT(APINT_TYPE_PREFIX, 1845) +HANDLE_BAT(APINT_TYPE_PREFIX, 1846) +HANDLE_BAT(APINT_TYPE_PREFIX, 1847) +HANDLE_BAT(APINT_TYPE_PREFIX, 1848) +HANDLE_BAT(APINT_TYPE_PREFIX, 1849) +HANDLE_BAT(APINT_TYPE_PREFIX, 1850) +HANDLE_BAT(APINT_TYPE_PREFIX, 1851) +HANDLE_BAT(APINT_TYPE_PREFIX, 1852) +HANDLE_BAT(APINT_TYPE_PREFIX, 1853) +HANDLE_BAT(APINT_TYPE_PREFIX, 1854) +HANDLE_BAT(APINT_TYPE_PREFIX, 1855) +HANDLE_BAT(APINT_TYPE_PREFIX, 1856) +HANDLE_BAT(APINT_TYPE_PREFIX, 1857) +HANDLE_BAT(APINT_TYPE_PREFIX, 1858) +HANDLE_BAT(APINT_TYPE_PREFIX, 1859) +HANDLE_BAT(APINT_TYPE_PREFIX, 1860) +HANDLE_BAT(APINT_TYPE_PREFIX, 1861) +HANDLE_BAT(APINT_TYPE_PREFIX, 1862) +HANDLE_BAT(APINT_TYPE_PREFIX, 1863) +HANDLE_BAT(APINT_TYPE_PREFIX, 1864) +HANDLE_BAT(APINT_TYPE_PREFIX, 1865) +HANDLE_BAT(APINT_TYPE_PREFIX, 1866) +HANDLE_BAT(APINT_TYPE_PREFIX, 1867) +HANDLE_BAT(APINT_TYPE_PREFIX, 1868) +HANDLE_BAT(APINT_TYPE_PREFIX, 1869) +HANDLE_BAT(APINT_TYPE_PREFIX, 1870) +HANDLE_BAT(APINT_TYPE_PREFIX, 1871) +HANDLE_BAT(APINT_TYPE_PREFIX, 1872) +HANDLE_BAT(APINT_TYPE_PREFIX, 1873) +HANDLE_BAT(APINT_TYPE_PREFIX, 1874) +HANDLE_BAT(APINT_TYPE_PREFIX, 1875) +HANDLE_BAT(APINT_TYPE_PREFIX, 1876) +HANDLE_BAT(APINT_TYPE_PREFIX, 1877) +HANDLE_BAT(APINT_TYPE_PREFIX, 1878) +HANDLE_BAT(APINT_TYPE_PREFIX, 1879) +HANDLE_BAT(APINT_TYPE_PREFIX, 1880) +HANDLE_BAT(APINT_TYPE_PREFIX, 1881) +HANDLE_BAT(APINT_TYPE_PREFIX, 1882) +HANDLE_BAT(APINT_TYPE_PREFIX, 1883) +HANDLE_BAT(APINT_TYPE_PREFIX, 1884) +HANDLE_BAT(APINT_TYPE_PREFIX, 1885) +HANDLE_BAT(APINT_TYPE_PREFIX, 1886) +HANDLE_BAT(APINT_TYPE_PREFIX, 1887) +HANDLE_BAT(APINT_TYPE_PREFIX, 1888) +HANDLE_BAT(APINT_TYPE_PREFIX, 1889) +HANDLE_BAT(APINT_TYPE_PREFIX, 1890) +HANDLE_BAT(APINT_TYPE_PREFIX, 1891) +HANDLE_BAT(APINT_TYPE_PREFIX, 1892) +HANDLE_BAT(APINT_TYPE_PREFIX, 1893) +HANDLE_BAT(APINT_TYPE_PREFIX, 1894) +HANDLE_BAT(APINT_TYPE_PREFIX, 1895) +HANDLE_BAT(APINT_TYPE_PREFIX, 1896) +HANDLE_BAT(APINT_TYPE_PREFIX, 1897) +HANDLE_BAT(APINT_TYPE_PREFIX, 1898) +HANDLE_BAT(APINT_TYPE_PREFIX, 1899) +HANDLE_BAT(APINT_TYPE_PREFIX, 1900) +HANDLE_BAT(APINT_TYPE_PREFIX, 1901) +HANDLE_BAT(APINT_TYPE_PREFIX, 1902) +HANDLE_BAT(APINT_TYPE_PREFIX, 1903) +HANDLE_BAT(APINT_TYPE_PREFIX, 1904) +HANDLE_BAT(APINT_TYPE_PREFIX, 1905) +HANDLE_BAT(APINT_TYPE_PREFIX, 1906) +HANDLE_BAT(APINT_TYPE_PREFIX, 1907) +HANDLE_BAT(APINT_TYPE_PREFIX, 1908) +HANDLE_BAT(APINT_TYPE_PREFIX, 1909) +HANDLE_BAT(APINT_TYPE_PREFIX, 1910) +HANDLE_BAT(APINT_TYPE_PREFIX, 1911) +HANDLE_BAT(APINT_TYPE_PREFIX, 1912) +HANDLE_BAT(APINT_TYPE_PREFIX, 1913) +HANDLE_BAT(APINT_TYPE_PREFIX, 1914) +HANDLE_BAT(APINT_TYPE_PREFIX, 1915) +HANDLE_BAT(APINT_TYPE_PREFIX, 1916) +HANDLE_BAT(APINT_TYPE_PREFIX, 1917) +HANDLE_BAT(APINT_TYPE_PREFIX, 1918) +HANDLE_BAT(APINT_TYPE_PREFIX, 1919) +HANDLE_BAT(APINT_TYPE_PREFIX, 1920) +HANDLE_BAT(APINT_TYPE_PREFIX, 1921) +HANDLE_BAT(APINT_TYPE_PREFIX, 1922) +HANDLE_BAT(APINT_TYPE_PREFIX, 1923) +HANDLE_BAT(APINT_TYPE_PREFIX, 1924) +HANDLE_BAT(APINT_TYPE_PREFIX, 1925) +HANDLE_BAT(APINT_TYPE_PREFIX, 1926) +HANDLE_BAT(APINT_TYPE_PREFIX, 1927) +HANDLE_BAT(APINT_TYPE_PREFIX, 1928) +HANDLE_BAT(APINT_TYPE_PREFIX, 1929) +HANDLE_BAT(APINT_TYPE_PREFIX, 1930) +HANDLE_BAT(APINT_TYPE_PREFIX, 1931) +HANDLE_BAT(APINT_TYPE_PREFIX, 1932) +HANDLE_BAT(APINT_TYPE_PREFIX, 1933) +HANDLE_BAT(APINT_TYPE_PREFIX, 1934) +HANDLE_BAT(APINT_TYPE_PREFIX, 1935) +HANDLE_BAT(APINT_TYPE_PREFIX, 1936) +HANDLE_BAT(APINT_TYPE_PREFIX, 1937) +HANDLE_BAT(APINT_TYPE_PREFIX, 1938) +HANDLE_BAT(APINT_TYPE_PREFIX, 1939) +HANDLE_BAT(APINT_TYPE_PREFIX, 1940) +HANDLE_BAT(APINT_TYPE_PREFIX, 1941) +HANDLE_BAT(APINT_TYPE_PREFIX, 1942) +HANDLE_BAT(APINT_TYPE_PREFIX, 1943) +HANDLE_BAT(APINT_TYPE_PREFIX, 1944) +HANDLE_BAT(APINT_TYPE_PREFIX, 1945) +HANDLE_BAT(APINT_TYPE_PREFIX, 1946) +HANDLE_BAT(APINT_TYPE_PREFIX, 1947) +HANDLE_BAT(APINT_TYPE_PREFIX, 1948) +HANDLE_BAT(APINT_TYPE_PREFIX, 1949) +HANDLE_BAT(APINT_TYPE_PREFIX, 1950) +HANDLE_BAT(APINT_TYPE_PREFIX, 1951) +HANDLE_BAT(APINT_TYPE_PREFIX, 1952) +HANDLE_BAT(APINT_TYPE_PREFIX, 1953) +HANDLE_BAT(APINT_TYPE_PREFIX, 1954) +HANDLE_BAT(APINT_TYPE_PREFIX, 1955) +HANDLE_BAT(APINT_TYPE_PREFIX, 1956) +HANDLE_BAT(APINT_TYPE_PREFIX, 1957) +HANDLE_BAT(APINT_TYPE_PREFIX, 1958) +HANDLE_BAT(APINT_TYPE_PREFIX, 1959) +HANDLE_BAT(APINT_TYPE_PREFIX, 1960) +HANDLE_BAT(APINT_TYPE_PREFIX, 1961) +HANDLE_BAT(APINT_TYPE_PREFIX, 1962) +HANDLE_BAT(APINT_TYPE_PREFIX, 1963) +HANDLE_BAT(APINT_TYPE_PREFIX, 1964) +HANDLE_BAT(APINT_TYPE_PREFIX, 1965) +HANDLE_BAT(APINT_TYPE_PREFIX, 1966) +HANDLE_BAT(APINT_TYPE_PREFIX, 1967) +HANDLE_BAT(APINT_TYPE_PREFIX, 1968) +HANDLE_BAT(APINT_TYPE_PREFIX, 1969) +HANDLE_BAT(APINT_TYPE_PREFIX, 1970) +HANDLE_BAT(APINT_TYPE_PREFIX, 1971) +HANDLE_BAT(APINT_TYPE_PREFIX, 1972) +HANDLE_BAT(APINT_TYPE_PREFIX, 1973) +HANDLE_BAT(APINT_TYPE_PREFIX, 1974) +HANDLE_BAT(APINT_TYPE_PREFIX, 1975) +HANDLE_BAT(APINT_TYPE_PREFIX, 1976) +HANDLE_BAT(APINT_TYPE_PREFIX, 1977) +HANDLE_BAT(APINT_TYPE_PREFIX, 1978) +HANDLE_BAT(APINT_TYPE_PREFIX, 1979) +HANDLE_BAT(APINT_TYPE_PREFIX, 1980) +HANDLE_BAT(APINT_TYPE_PREFIX, 1981) +HANDLE_BAT(APINT_TYPE_PREFIX, 1982) +HANDLE_BAT(APINT_TYPE_PREFIX, 1983) +HANDLE_BAT(APINT_TYPE_PREFIX, 1984) +HANDLE_BAT(APINT_TYPE_PREFIX, 1985) +HANDLE_BAT(APINT_TYPE_PREFIX, 1986) +HANDLE_BAT(APINT_TYPE_PREFIX, 1987) +HANDLE_BAT(APINT_TYPE_PREFIX, 1988) +HANDLE_BAT(APINT_TYPE_PREFIX, 1989) +HANDLE_BAT(APINT_TYPE_PREFIX, 1990) +HANDLE_BAT(APINT_TYPE_PREFIX, 1991) +HANDLE_BAT(APINT_TYPE_PREFIX, 1992) +HANDLE_BAT(APINT_TYPE_PREFIX, 1993) +HANDLE_BAT(APINT_TYPE_PREFIX, 1994) +HANDLE_BAT(APINT_TYPE_PREFIX, 1995) +HANDLE_BAT(APINT_TYPE_PREFIX, 1996) +HANDLE_BAT(APINT_TYPE_PREFIX, 1997) +HANDLE_BAT(APINT_TYPE_PREFIX, 1998) +HANDLE_BAT(APINT_TYPE_PREFIX, 1999) +HANDLE_BAT(APINT_TYPE_PREFIX, 2000) +HANDLE_BAT(APINT_TYPE_PREFIX, 2001) +HANDLE_BAT(APINT_TYPE_PREFIX, 2002) +HANDLE_BAT(APINT_TYPE_PREFIX, 2003) +HANDLE_BAT(APINT_TYPE_PREFIX, 2004) +HANDLE_BAT(APINT_TYPE_PREFIX, 2005) +HANDLE_BAT(APINT_TYPE_PREFIX, 2006) +HANDLE_BAT(APINT_TYPE_PREFIX, 2007) +HANDLE_BAT(APINT_TYPE_PREFIX, 2008) +HANDLE_BAT(APINT_TYPE_PREFIX, 2009) +HANDLE_BAT(APINT_TYPE_PREFIX, 2010) +HANDLE_BAT(APINT_TYPE_PREFIX, 2011) +HANDLE_BAT(APINT_TYPE_PREFIX, 2012) +HANDLE_BAT(APINT_TYPE_PREFIX, 2013) +HANDLE_BAT(APINT_TYPE_PREFIX, 2014) +HANDLE_BAT(APINT_TYPE_PREFIX, 2015) +HANDLE_BAT(APINT_TYPE_PREFIX, 2016) +HANDLE_BAT(APINT_TYPE_PREFIX, 2017) +HANDLE_BAT(APINT_TYPE_PREFIX, 2018) +HANDLE_BAT(APINT_TYPE_PREFIX, 2019) +HANDLE_BAT(APINT_TYPE_PREFIX, 2020) +HANDLE_BAT(APINT_TYPE_PREFIX, 2021) +HANDLE_BAT(APINT_TYPE_PREFIX, 2022) +HANDLE_BAT(APINT_TYPE_PREFIX, 2023) +HANDLE_BAT(APINT_TYPE_PREFIX, 2024) +HANDLE_BAT(APINT_TYPE_PREFIX, 2025) +HANDLE_BAT(APINT_TYPE_PREFIX, 2026) +HANDLE_BAT(APINT_TYPE_PREFIX, 2027) +HANDLE_BAT(APINT_TYPE_PREFIX, 2028) +HANDLE_BAT(APINT_TYPE_PREFIX, 2029) +HANDLE_BAT(APINT_TYPE_PREFIX, 2030) +HANDLE_BAT(APINT_TYPE_PREFIX, 2031) +HANDLE_BAT(APINT_TYPE_PREFIX, 2032) +HANDLE_BAT(APINT_TYPE_PREFIX, 2033) +HANDLE_BAT(APINT_TYPE_PREFIX, 2034) +HANDLE_BAT(APINT_TYPE_PREFIX, 2035) +HANDLE_BAT(APINT_TYPE_PREFIX, 2036) +HANDLE_BAT(APINT_TYPE_PREFIX, 2037) +HANDLE_BAT(APINT_TYPE_PREFIX, 2038) +HANDLE_BAT(APINT_TYPE_PREFIX, 2039) +HANDLE_BAT(APINT_TYPE_PREFIX, 2040) +HANDLE_BAT(APINT_TYPE_PREFIX, 2041) +HANDLE_BAT(APINT_TYPE_PREFIX, 2042) +HANDLE_BAT(APINT_TYPE_PREFIX, 2043) +HANDLE_BAT(APINT_TYPE_PREFIX, 2044) +HANDLE_BAT(APINT_TYPE_PREFIX, 2045) +HANDLE_BAT(APINT_TYPE_PREFIX, 2046) +HANDLE_BAT(APINT_TYPE_PREFIX, 2047) +HANDLE_BAT(APINT_TYPE_PREFIX, 2048) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 2 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 2049) +HANDLE_BAT(, 2050) +HANDLE_BAT(, 2051) +HANDLE_BAT(, 2052) +HANDLE_BAT(, 2053) +HANDLE_BAT(, 2054) +HANDLE_BAT(, 2055) +HANDLE_BAT(, 2056) +HANDLE_BAT(, 2057) +HANDLE_BAT(, 2058) +HANDLE_BAT(, 2059) +HANDLE_BAT(, 2060) +HANDLE_BAT(, 2061) +HANDLE_BAT(, 2062) +HANDLE_BAT(, 2063) +HANDLE_BAT(, 2064) +HANDLE_BAT(, 2065) +HANDLE_BAT(, 2066) +HANDLE_BAT(, 2067) +HANDLE_BAT(, 2068) +HANDLE_BAT(, 2069) +HANDLE_BAT(, 2070) +HANDLE_BAT(, 2071) +HANDLE_BAT(, 2072) +HANDLE_BAT(, 2073) +HANDLE_BAT(, 2074) +HANDLE_BAT(, 2075) +HANDLE_BAT(, 2076) +HANDLE_BAT(, 2077) +HANDLE_BAT(, 2078) +HANDLE_BAT(, 2079) +HANDLE_BAT(, 2080) +HANDLE_BAT(, 2081) +HANDLE_BAT(, 2082) +HANDLE_BAT(, 2083) +HANDLE_BAT(, 2084) +HANDLE_BAT(, 2085) +HANDLE_BAT(, 2086) +HANDLE_BAT(, 2087) +HANDLE_BAT(, 2088) +HANDLE_BAT(, 2089) +HANDLE_BAT(, 2090) +HANDLE_BAT(, 2091) +HANDLE_BAT(, 2092) +HANDLE_BAT(, 2093) +HANDLE_BAT(, 2094) +HANDLE_BAT(, 2095) +HANDLE_BAT(, 2096) +HANDLE_BAT(, 2097) +HANDLE_BAT(, 2098) +HANDLE_BAT(, 2099) +HANDLE_BAT(, 2100) +HANDLE_BAT(, 2101) +HANDLE_BAT(, 2102) +HANDLE_BAT(, 2103) +HANDLE_BAT(, 2104) +HANDLE_BAT(, 2105) +HANDLE_BAT(, 2106) +HANDLE_BAT(, 2107) +HANDLE_BAT(, 2108) +HANDLE_BAT(, 2109) +HANDLE_BAT(, 2110) +HANDLE_BAT(, 2111) +HANDLE_BAT(, 2112) +HANDLE_BAT(, 2113) +HANDLE_BAT(, 2114) +HANDLE_BAT(, 2115) +HANDLE_BAT(, 2116) +HANDLE_BAT(, 2117) +HANDLE_BAT(, 2118) +HANDLE_BAT(, 2119) +HANDLE_BAT(, 2120) +HANDLE_BAT(, 2121) +HANDLE_BAT(, 2122) +HANDLE_BAT(, 2123) +HANDLE_BAT(, 2124) +HANDLE_BAT(, 2125) +HANDLE_BAT(, 2126) +HANDLE_BAT(, 2127) +HANDLE_BAT(, 2128) +HANDLE_BAT(, 2129) +HANDLE_BAT(, 2130) +HANDLE_BAT(, 2131) +HANDLE_BAT(, 2132) +HANDLE_BAT(, 2133) +HANDLE_BAT(, 2134) +HANDLE_BAT(, 2135) +HANDLE_BAT(, 2136) +HANDLE_BAT(, 2137) +HANDLE_BAT(, 2138) +HANDLE_BAT(, 2139) +HANDLE_BAT(, 2140) +HANDLE_BAT(, 2141) +HANDLE_BAT(, 2142) +HANDLE_BAT(, 2143) +HANDLE_BAT(, 2144) +HANDLE_BAT(, 2145) +HANDLE_BAT(, 2146) +HANDLE_BAT(, 2147) +HANDLE_BAT(, 2148) +HANDLE_BAT(, 2149) +HANDLE_BAT(, 2150) +HANDLE_BAT(, 2151) +HANDLE_BAT(, 2152) +HANDLE_BAT(, 2153) +HANDLE_BAT(, 2154) +HANDLE_BAT(, 2155) +HANDLE_BAT(, 2156) +HANDLE_BAT(, 2157) +HANDLE_BAT(, 2158) +HANDLE_BAT(, 2159) +HANDLE_BAT(, 2160) +HANDLE_BAT(, 2161) +HANDLE_BAT(, 2162) +HANDLE_BAT(, 2163) +HANDLE_BAT(, 2164) +HANDLE_BAT(, 2165) +HANDLE_BAT(, 2166) +HANDLE_BAT(, 2167) +HANDLE_BAT(, 2168) +HANDLE_BAT(, 2169) +HANDLE_BAT(, 2170) +HANDLE_BAT(, 2171) +HANDLE_BAT(, 2172) +HANDLE_BAT(, 2173) +HANDLE_BAT(, 2174) +HANDLE_BAT(, 2175) +HANDLE_BAT(, 2176) +HANDLE_BAT(, 2177) +HANDLE_BAT(, 2178) +HANDLE_BAT(, 2179) +HANDLE_BAT(, 2180) +HANDLE_BAT(, 2181) +HANDLE_BAT(, 2182) +HANDLE_BAT(, 2183) +HANDLE_BAT(, 2184) +HANDLE_BAT(, 2185) +HANDLE_BAT(, 2186) +HANDLE_BAT(, 2187) +HANDLE_BAT(, 2188) +HANDLE_BAT(, 2189) +HANDLE_BAT(, 2190) +HANDLE_BAT(, 2191) +HANDLE_BAT(, 2192) +HANDLE_BAT(, 2193) +HANDLE_BAT(, 2194) +HANDLE_BAT(, 2195) +HANDLE_BAT(, 2196) +HANDLE_BAT(, 2197) +HANDLE_BAT(, 2198) +HANDLE_BAT(, 2199) +HANDLE_BAT(, 2200) +HANDLE_BAT(, 2201) +HANDLE_BAT(, 2202) +HANDLE_BAT(, 2203) +HANDLE_BAT(, 2204) +HANDLE_BAT(, 2205) +HANDLE_BAT(, 2206) +HANDLE_BAT(, 2207) +HANDLE_BAT(, 2208) +HANDLE_BAT(, 2209) +HANDLE_BAT(, 2210) +HANDLE_BAT(, 2211) +HANDLE_BAT(, 2212) +HANDLE_BAT(, 2213) +HANDLE_BAT(, 2214) +HANDLE_BAT(, 2215) +HANDLE_BAT(, 2216) +HANDLE_BAT(, 2217) +HANDLE_BAT(, 2218) +HANDLE_BAT(, 2219) +HANDLE_BAT(, 2220) +HANDLE_BAT(, 2221) +HANDLE_BAT(, 2222) +HANDLE_BAT(, 2223) +HANDLE_BAT(, 2224) +HANDLE_BAT(, 2225) +HANDLE_BAT(, 2226) +HANDLE_BAT(, 2227) +HANDLE_BAT(, 2228) +HANDLE_BAT(, 2229) +HANDLE_BAT(, 2230) +HANDLE_BAT(, 2231) +HANDLE_BAT(, 2232) +HANDLE_BAT(, 2233) +HANDLE_BAT(, 2234) +HANDLE_BAT(, 2235) +HANDLE_BAT(, 2236) +HANDLE_BAT(, 2237) +HANDLE_BAT(, 2238) +HANDLE_BAT(, 2239) +HANDLE_BAT(, 2240) +HANDLE_BAT(, 2241) +HANDLE_BAT(, 2242) +HANDLE_BAT(, 2243) +HANDLE_BAT(, 2244) +HANDLE_BAT(, 2245) +HANDLE_BAT(, 2246) +HANDLE_BAT(, 2247) +HANDLE_BAT(, 2248) +HANDLE_BAT(, 2249) +HANDLE_BAT(, 2250) +HANDLE_BAT(, 2251) +HANDLE_BAT(, 2252) +HANDLE_BAT(, 2253) +HANDLE_BAT(, 2254) +HANDLE_BAT(, 2255) +HANDLE_BAT(, 2256) +HANDLE_BAT(, 2257) +HANDLE_BAT(, 2258) +HANDLE_BAT(, 2259) +HANDLE_BAT(, 2260) +HANDLE_BAT(, 2261) +HANDLE_BAT(, 2262) +HANDLE_BAT(, 2263) +HANDLE_BAT(, 2264) +HANDLE_BAT(, 2265) +HANDLE_BAT(, 2266) +HANDLE_BAT(, 2267) +HANDLE_BAT(, 2268) +HANDLE_BAT(, 2269) +HANDLE_BAT(, 2270) +HANDLE_BAT(, 2271) +HANDLE_BAT(, 2272) +HANDLE_BAT(, 2273) +HANDLE_BAT(, 2274) +HANDLE_BAT(, 2275) +HANDLE_BAT(, 2276) +HANDLE_BAT(, 2277) +HANDLE_BAT(, 2278) +HANDLE_BAT(, 2279) +HANDLE_BAT(, 2280) +HANDLE_BAT(, 2281) +HANDLE_BAT(, 2282) +HANDLE_BAT(, 2283) +HANDLE_BAT(, 2284) +HANDLE_BAT(, 2285) +HANDLE_BAT(, 2286) +HANDLE_BAT(, 2287) +HANDLE_BAT(, 2288) +HANDLE_BAT(, 2289) +HANDLE_BAT(, 2290) +HANDLE_BAT(, 2291) +HANDLE_BAT(, 2292) +HANDLE_BAT(, 2293) +HANDLE_BAT(, 2294) +HANDLE_BAT(, 2295) +HANDLE_BAT(, 2296) +HANDLE_BAT(, 2297) +HANDLE_BAT(, 2298) +HANDLE_BAT(, 2299) +HANDLE_BAT(, 2300) +HANDLE_BAT(, 2301) +HANDLE_BAT(, 2302) +HANDLE_BAT(, 2303) +HANDLE_BAT(, 2304) +HANDLE_BAT(, 2305) +HANDLE_BAT(, 2306) +HANDLE_BAT(, 2307) +HANDLE_BAT(, 2308) +HANDLE_BAT(, 2309) +HANDLE_BAT(, 2310) +HANDLE_BAT(, 2311) +HANDLE_BAT(, 2312) +HANDLE_BAT(, 2313) +HANDLE_BAT(, 2314) +HANDLE_BAT(, 2315) +HANDLE_BAT(, 2316) +HANDLE_BAT(, 2317) +HANDLE_BAT(, 2318) +HANDLE_BAT(, 2319) +HANDLE_BAT(, 2320) +HANDLE_BAT(, 2321) +HANDLE_BAT(, 2322) +HANDLE_BAT(, 2323) +HANDLE_BAT(, 2324) +HANDLE_BAT(, 2325) +HANDLE_BAT(, 2326) +HANDLE_BAT(, 2327) +HANDLE_BAT(, 2328) +HANDLE_BAT(, 2329) +HANDLE_BAT(, 2330) +HANDLE_BAT(, 2331) +HANDLE_BAT(, 2332) +HANDLE_BAT(, 2333) +HANDLE_BAT(, 2334) +HANDLE_BAT(, 2335) +HANDLE_BAT(, 2336) +HANDLE_BAT(, 2337) +HANDLE_BAT(, 2338) +HANDLE_BAT(, 2339) +HANDLE_BAT(, 2340) +HANDLE_BAT(, 2341) +HANDLE_BAT(, 2342) +HANDLE_BAT(, 2343) +HANDLE_BAT(, 2344) +HANDLE_BAT(, 2345) +HANDLE_BAT(, 2346) +HANDLE_BAT(, 2347) +HANDLE_BAT(, 2348) +HANDLE_BAT(, 2349) +HANDLE_BAT(, 2350) +HANDLE_BAT(, 2351) +HANDLE_BAT(, 2352) +HANDLE_BAT(, 2353) +HANDLE_BAT(, 2354) +HANDLE_BAT(, 2355) +HANDLE_BAT(, 2356) +HANDLE_BAT(, 2357) +HANDLE_BAT(, 2358) +HANDLE_BAT(, 2359) +HANDLE_BAT(, 2360) +HANDLE_BAT(, 2361) +HANDLE_BAT(, 2362) +HANDLE_BAT(, 2363) +HANDLE_BAT(, 2364) +HANDLE_BAT(, 2365) +HANDLE_BAT(, 2366) +HANDLE_BAT(, 2367) +HANDLE_BAT(, 2368) +HANDLE_BAT(, 2369) +HANDLE_BAT(, 2370) +HANDLE_BAT(, 2371) +HANDLE_BAT(, 2372) +HANDLE_BAT(, 2373) +HANDLE_BAT(, 2374) +HANDLE_BAT(, 2375) +HANDLE_BAT(, 2376) +HANDLE_BAT(, 2377) +HANDLE_BAT(, 2378) +HANDLE_BAT(, 2379) +HANDLE_BAT(, 2380) +HANDLE_BAT(, 2381) +HANDLE_BAT(, 2382) +HANDLE_BAT(, 2383) +HANDLE_BAT(, 2384) +HANDLE_BAT(, 2385) +HANDLE_BAT(, 2386) +HANDLE_BAT(, 2387) +HANDLE_BAT(, 2388) +HANDLE_BAT(, 2389) +HANDLE_BAT(, 2390) +HANDLE_BAT(, 2391) +HANDLE_BAT(, 2392) +HANDLE_BAT(, 2393) +HANDLE_BAT(, 2394) +HANDLE_BAT(, 2395) +HANDLE_BAT(, 2396) +HANDLE_BAT(, 2397) +HANDLE_BAT(, 2398) +HANDLE_BAT(, 2399) +HANDLE_BAT(, 2400) +HANDLE_BAT(, 2401) +HANDLE_BAT(, 2402) +HANDLE_BAT(, 2403) +HANDLE_BAT(, 2404) +HANDLE_BAT(, 2405) +HANDLE_BAT(, 2406) +HANDLE_BAT(, 2407) +HANDLE_BAT(, 2408) +HANDLE_BAT(, 2409) +HANDLE_BAT(, 2410) +HANDLE_BAT(, 2411) +HANDLE_BAT(, 2412) +HANDLE_BAT(, 2413) +HANDLE_BAT(, 2414) +HANDLE_BAT(, 2415) +HANDLE_BAT(, 2416) +HANDLE_BAT(, 2417) +HANDLE_BAT(, 2418) +HANDLE_BAT(, 2419) +HANDLE_BAT(, 2420) +HANDLE_BAT(, 2421) +HANDLE_BAT(, 2422) +HANDLE_BAT(, 2423) +HANDLE_BAT(, 2424) +HANDLE_BAT(, 2425) +HANDLE_BAT(, 2426) +HANDLE_BAT(, 2427) +HANDLE_BAT(, 2428) +HANDLE_BAT(, 2429) +HANDLE_BAT(, 2430) +HANDLE_BAT(, 2431) +HANDLE_BAT(, 2432) +HANDLE_BAT(, 2433) +HANDLE_BAT(, 2434) +HANDLE_BAT(, 2435) +HANDLE_BAT(, 2436) +HANDLE_BAT(, 2437) +HANDLE_BAT(, 2438) +HANDLE_BAT(, 2439) +HANDLE_BAT(, 2440) +HANDLE_BAT(, 2441) +HANDLE_BAT(, 2442) +HANDLE_BAT(, 2443) +HANDLE_BAT(, 2444) +HANDLE_BAT(, 2445) +HANDLE_BAT(, 2446) +HANDLE_BAT(, 2447) +HANDLE_BAT(, 2448) +HANDLE_BAT(, 2449) +HANDLE_BAT(, 2450) +HANDLE_BAT(, 2451) +HANDLE_BAT(, 2452) +HANDLE_BAT(, 2453) +HANDLE_BAT(, 2454) +HANDLE_BAT(, 2455) +HANDLE_BAT(, 2456) +HANDLE_BAT(, 2457) +HANDLE_BAT(, 2458) +HANDLE_BAT(, 2459) +HANDLE_BAT(, 2460) +HANDLE_BAT(, 2461) +HANDLE_BAT(, 2462) +HANDLE_BAT(, 2463) +HANDLE_BAT(, 2464) +HANDLE_BAT(, 2465) +HANDLE_BAT(, 2466) +HANDLE_BAT(, 2467) +HANDLE_BAT(, 2468) +HANDLE_BAT(, 2469) +HANDLE_BAT(, 2470) +HANDLE_BAT(, 2471) +HANDLE_BAT(, 2472) +HANDLE_BAT(, 2473) +HANDLE_BAT(, 2474) +HANDLE_BAT(, 2475) +HANDLE_BAT(, 2476) +HANDLE_BAT(, 2477) +HANDLE_BAT(, 2478) +HANDLE_BAT(, 2479) +HANDLE_BAT(, 2480) +HANDLE_BAT(, 2481) +HANDLE_BAT(, 2482) +HANDLE_BAT(, 2483) +HANDLE_BAT(, 2484) +HANDLE_BAT(, 2485) +HANDLE_BAT(, 2486) +HANDLE_BAT(, 2487) +HANDLE_BAT(, 2488) +HANDLE_BAT(, 2489) +HANDLE_BAT(, 2490) +HANDLE_BAT(, 2491) +HANDLE_BAT(, 2492) +HANDLE_BAT(, 2493) +HANDLE_BAT(, 2494) +HANDLE_BAT(, 2495) +HANDLE_BAT(, 2496) +HANDLE_BAT(, 2497) +HANDLE_BAT(, 2498) +HANDLE_BAT(, 2499) +HANDLE_BAT(, 2500) +HANDLE_BAT(, 2501) +HANDLE_BAT(, 2502) +HANDLE_BAT(, 2503) +HANDLE_BAT(, 2504) +HANDLE_BAT(, 2505) +HANDLE_BAT(, 2506) +HANDLE_BAT(, 2507) +HANDLE_BAT(, 2508) +HANDLE_BAT(, 2509) +HANDLE_BAT(, 2510) +HANDLE_BAT(, 2511) +HANDLE_BAT(, 2512) +HANDLE_BAT(, 2513) +HANDLE_BAT(, 2514) +HANDLE_BAT(, 2515) +HANDLE_BAT(, 2516) +HANDLE_BAT(, 2517) +HANDLE_BAT(, 2518) +HANDLE_BAT(, 2519) +HANDLE_BAT(, 2520) +HANDLE_BAT(, 2521) +HANDLE_BAT(, 2522) +HANDLE_BAT(, 2523) +HANDLE_BAT(, 2524) +HANDLE_BAT(, 2525) +HANDLE_BAT(, 2526) +HANDLE_BAT(, 2527) +HANDLE_BAT(, 2528) +HANDLE_BAT(, 2529) +HANDLE_BAT(, 2530) +HANDLE_BAT(, 2531) +HANDLE_BAT(, 2532) +HANDLE_BAT(, 2533) +HANDLE_BAT(, 2534) +HANDLE_BAT(, 2535) +HANDLE_BAT(, 2536) +HANDLE_BAT(, 2537) +HANDLE_BAT(, 2538) +HANDLE_BAT(, 2539) +HANDLE_BAT(, 2540) +HANDLE_BAT(, 2541) +HANDLE_BAT(, 2542) +HANDLE_BAT(, 2543) +HANDLE_BAT(, 2544) +HANDLE_BAT(, 2545) +HANDLE_BAT(, 2546) +HANDLE_BAT(, 2547) +HANDLE_BAT(, 2548) +HANDLE_BAT(, 2549) +HANDLE_BAT(, 2550) +HANDLE_BAT(, 2551) +HANDLE_BAT(, 2552) +HANDLE_BAT(, 2553) +HANDLE_BAT(, 2554) +HANDLE_BAT(, 2555) +HANDLE_BAT(, 2556) +HANDLE_BAT(, 2557) +HANDLE_BAT(, 2558) +HANDLE_BAT(, 2559) +HANDLE_BAT(, 2560) +HANDLE_BAT(, 2561) +HANDLE_BAT(, 2562) +HANDLE_BAT(, 2563) +HANDLE_BAT(, 2564) +HANDLE_BAT(, 2565) +HANDLE_BAT(, 2566) +HANDLE_BAT(, 2567) +HANDLE_BAT(, 2568) +HANDLE_BAT(, 2569) +HANDLE_BAT(, 2570) +HANDLE_BAT(, 2571) +HANDLE_BAT(, 2572) +HANDLE_BAT(, 2573) +HANDLE_BAT(, 2574) +HANDLE_BAT(, 2575) +HANDLE_BAT(, 2576) +HANDLE_BAT(, 2577) +HANDLE_BAT(, 2578) +HANDLE_BAT(, 2579) +HANDLE_BAT(, 2580) +HANDLE_BAT(, 2581) +HANDLE_BAT(, 2582) +HANDLE_BAT(, 2583) +HANDLE_BAT(, 2584) +HANDLE_BAT(, 2585) +HANDLE_BAT(, 2586) +HANDLE_BAT(, 2587) +HANDLE_BAT(, 2588) +HANDLE_BAT(, 2589) +HANDLE_BAT(, 2590) +HANDLE_BAT(, 2591) +HANDLE_BAT(, 2592) +HANDLE_BAT(, 2593) +HANDLE_BAT(, 2594) +HANDLE_BAT(, 2595) +HANDLE_BAT(, 2596) +HANDLE_BAT(, 2597) +HANDLE_BAT(, 2598) +HANDLE_BAT(, 2599) +HANDLE_BAT(, 2600) +HANDLE_BAT(, 2601) +HANDLE_BAT(, 2602) +HANDLE_BAT(, 2603) +HANDLE_BAT(, 2604) +HANDLE_BAT(, 2605) +HANDLE_BAT(, 2606) +HANDLE_BAT(, 2607) +HANDLE_BAT(, 2608) +HANDLE_BAT(, 2609) +HANDLE_BAT(, 2610) +HANDLE_BAT(, 2611) +HANDLE_BAT(, 2612) +HANDLE_BAT(, 2613) +HANDLE_BAT(, 2614) +HANDLE_BAT(, 2615) +HANDLE_BAT(, 2616) +HANDLE_BAT(, 2617) +HANDLE_BAT(, 2618) +HANDLE_BAT(, 2619) +HANDLE_BAT(, 2620) +HANDLE_BAT(, 2621) +HANDLE_BAT(, 2622) +HANDLE_BAT(, 2623) +HANDLE_BAT(, 2624) +HANDLE_BAT(, 2625) +HANDLE_BAT(, 2626) +HANDLE_BAT(, 2627) +HANDLE_BAT(, 2628) +HANDLE_BAT(, 2629) +HANDLE_BAT(, 2630) +HANDLE_BAT(, 2631) +HANDLE_BAT(, 2632) +HANDLE_BAT(, 2633) +HANDLE_BAT(, 2634) +HANDLE_BAT(, 2635) +HANDLE_BAT(, 2636) +HANDLE_BAT(, 2637) +HANDLE_BAT(, 2638) +HANDLE_BAT(, 2639) +HANDLE_BAT(, 2640) +HANDLE_BAT(, 2641) +HANDLE_BAT(, 2642) +HANDLE_BAT(, 2643) +HANDLE_BAT(, 2644) +HANDLE_BAT(, 2645) +HANDLE_BAT(, 2646) +HANDLE_BAT(, 2647) +HANDLE_BAT(, 2648) +HANDLE_BAT(, 2649) +HANDLE_BAT(, 2650) +HANDLE_BAT(, 2651) +HANDLE_BAT(, 2652) +HANDLE_BAT(, 2653) +HANDLE_BAT(, 2654) +HANDLE_BAT(, 2655) +HANDLE_BAT(, 2656) +HANDLE_BAT(, 2657) +HANDLE_BAT(, 2658) +HANDLE_BAT(, 2659) +HANDLE_BAT(, 2660) +HANDLE_BAT(, 2661) +HANDLE_BAT(, 2662) +HANDLE_BAT(, 2663) +HANDLE_BAT(, 2664) +HANDLE_BAT(, 2665) +HANDLE_BAT(, 2666) +HANDLE_BAT(, 2667) +HANDLE_BAT(, 2668) +HANDLE_BAT(, 2669) +HANDLE_BAT(, 2670) +HANDLE_BAT(, 2671) +HANDLE_BAT(, 2672) +HANDLE_BAT(, 2673) +HANDLE_BAT(, 2674) +HANDLE_BAT(, 2675) +HANDLE_BAT(, 2676) +HANDLE_BAT(, 2677) +HANDLE_BAT(, 2678) +HANDLE_BAT(, 2679) +HANDLE_BAT(, 2680) +HANDLE_BAT(, 2681) +HANDLE_BAT(, 2682) +HANDLE_BAT(, 2683) +HANDLE_BAT(, 2684) +HANDLE_BAT(, 2685) +HANDLE_BAT(, 2686) +HANDLE_BAT(, 2687) +HANDLE_BAT(, 2688) +HANDLE_BAT(, 2689) +HANDLE_BAT(, 2690) +HANDLE_BAT(, 2691) +HANDLE_BAT(, 2692) +HANDLE_BAT(, 2693) +HANDLE_BAT(, 2694) +HANDLE_BAT(, 2695) +HANDLE_BAT(, 2696) +HANDLE_BAT(, 2697) +HANDLE_BAT(, 2698) +HANDLE_BAT(, 2699) +HANDLE_BAT(, 2700) +HANDLE_BAT(, 2701) +HANDLE_BAT(, 2702) +HANDLE_BAT(, 2703) +HANDLE_BAT(, 2704) +HANDLE_BAT(, 2705) +HANDLE_BAT(, 2706) +HANDLE_BAT(, 2707) +HANDLE_BAT(, 2708) +HANDLE_BAT(, 2709) +HANDLE_BAT(, 2710) +HANDLE_BAT(, 2711) +HANDLE_BAT(, 2712) +HANDLE_BAT(, 2713) +HANDLE_BAT(, 2714) +HANDLE_BAT(, 2715) +HANDLE_BAT(, 2716) +HANDLE_BAT(, 2717) +HANDLE_BAT(, 2718) +HANDLE_BAT(, 2719) +HANDLE_BAT(, 2720) +HANDLE_BAT(, 2721) +HANDLE_BAT(, 2722) +HANDLE_BAT(, 2723) +HANDLE_BAT(, 2724) +HANDLE_BAT(, 2725) +HANDLE_BAT(, 2726) +HANDLE_BAT(, 2727) +HANDLE_BAT(, 2728) +HANDLE_BAT(, 2729) +HANDLE_BAT(, 2730) +HANDLE_BAT(, 2731) +HANDLE_BAT(, 2732) +HANDLE_BAT(, 2733) +HANDLE_BAT(, 2734) +HANDLE_BAT(, 2735) +HANDLE_BAT(, 2736) +HANDLE_BAT(, 2737) +HANDLE_BAT(, 2738) +HANDLE_BAT(, 2739) +HANDLE_BAT(, 2740) +HANDLE_BAT(, 2741) +HANDLE_BAT(, 2742) +HANDLE_BAT(, 2743) +HANDLE_BAT(, 2744) +HANDLE_BAT(, 2745) +HANDLE_BAT(, 2746) +HANDLE_BAT(, 2747) +HANDLE_BAT(, 2748) +HANDLE_BAT(, 2749) +HANDLE_BAT(, 2750) +HANDLE_BAT(, 2751) +HANDLE_BAT(, 2752) +HANDLE_BAT(, 2753) +HANDLE_BAT(, 2754) +HANDLE_BAT(, 2755) +HANDLE_BAT(, 2756) +HANDLE_BAT(, 2757) +HANDLE_BAT(, 2758) +HANDLE_BAT(, 2759) +HANDLE_BAT(, 2760) +HANDLE_BAT(, 2761) +HANDLE_BAT(, 2762) +HANDLE_BAT(, 2763) +HANDLE_BAT(, 2764) +HANDLE_BAT(, 2765) +HANDLE_BAT(, 2766) +HANDLE_BAT(, 2767) +HANDLE_BAT(, 2768) +HANDLE_BAT(, 2769) +HANDLE_BAT(, 2770) +HANDLE_BAT(, 2771) +HANDLE_BAT(, 2772) +HANDLE_BAT(, 2773) +HANDLE_BAT(, 2774) +HANDLE_BAT(, 2775) +HANDLE_BAT(, 2776) +HANDLE_BAT(, 2777) +HANDLE_BAT(, 2778) +HANDLE_BAT(, 2779) +HANDLE_BAT(, 2780) +HANDLE_BAT(, 2781) +HANDLE_BAT(, 2782) +HANDLE_BAT(, 2783) +HANDLE_BAT(, 2784) +HANDLE_BAT(, 2785) +HANDLE_BAT(, 2786) +HANDLE_BAT(, 2787) +HANDLE_BAT(, 2788) +HANDLE_BAT(, 2789) +HANDLE_BAT(, 2790) +HANDLE_BAT(, 2791) +HANDLE_BAT(, 2792) +HANDLE_BAT(, 2793) +HANDLE_BAT(, 2794) +HANDLE_BAT(, 2795) +HANDLE_BAT(, 2796) +HANDLE_BAT(, 2797) +HANDLE_BAT(, 2798) +HANDLE_BAT(, 2799) +HANDLE_BAT(, 2800) +HANDLE_BAT(, 2801) +HANDLE_BAT(, 2802) +HANDLE_BAT(, 2803) +HANDLE_BAT(, 2804) +HANDLE_BAT(, 2805) +HANDLE_BAT(, 2806) +HANDLE_BAT(, 2807) +HANDLE_BAT(, 2808) +HANDLE_BAT(, 2809) +HANDLE_BAT(, 2810) +HANDLE_BAT(, 2811) +HANDLE_BAT(, 2812) +HANDLE_BAT(, 2813) +HANDLE_BAT(, 2814) +HANDLE_BAT(, 2815) +HANDLE_BAT(, 2816) +HANDLE_BAT(, 2817) +HANDLE_BAT(, 2818) +HANDLE_BAT(, 2819) +HANDLE_BAT(, 2820) +HANDLE_BAT(, 2821) +HANDLE_BAT(, 2822) +HANDLE_BAT(, 2823) +HANDLE_BAT(, 2824) +HANDLE_BAT(, 2825) +HANDLE_BAT(, 2826) +HANDLE_BAT(, 2827) +HANDLE_BAT(, 2828) +HANDLE_BAT(, 2829) +HANDLE_BAT(, 2830) +HANDLE_BAT(, 2831) +HANDLE_BAT(, 2832) +HANDLE_BAT(, 2833) +HANDLE_BAT(, 2834) +HANDLE_BAT(, 2835) +HANDLE_BAT(, 2836) +HANDLE_BAT(, 2837) +HANDLE_BAT(, 2838) +HANDLE_BAT(, 2839) +HANDLE_BAT(, 2840) +HANDLE_BAT(, 2841) +HANDLE_BAT(, 2842) +HANDLE_BAT(, 2843) +HANDLE_BAT(, 2844) +HANDLE_BAT(, 2845) +HANDLE_BAT(, 2846) +HANDLE_BAT(, 2847) +HANDLE_BAT(, 2848) +HANDLE_BAT(, 2849) +HANDLE_BAT(, 2850) +HANDLE_BAT(, 2851) +HANDLE_BAT(, 2852) +HANDLE_BAT(, 2853) +HANDLE_BAT(, 2854) +HANDLE_BAT(, 2855) +HANDLE_BAT(, 2856) +HANDLE_BAT(, 2857) +HANDLE_BAT(, 2858) +HANDLE_BAT(, 2859) +HANDLE_BAT(, 2860) +HANDLE_BAT(, 2861) +HANDLE_BAT(, 2862) +HANDLE_BAT(, 2863) +HANDLE_BAT(, 2864) +HANDLE_BAT(, 2865) +HANDLE_BAT(, 2866) +HANDLE_BAT(, 2867) +HANDLE_BAT(, 2868) +HANDLE_BAT(, 2869) +HANDLE_BAT(, 2870) +HANDLE_BAT(, 2871) +HANDLE_BAT(, 2872) +HANDLE_BAT(, 2873) +HANDLE_BAT(, 2874) +HANDLE_BAT(, 2875) +HANDLE_BAT(, 2876) +HANDLE_BAT(, 2877) +HANDLE_BAT(, 2878) +HANDLE_BAT(, 2879) +HANDLE_BAT(, 2880) +HANDLE_BAT(, 2881) +HANDLE_BAT(, 2882) +HANDLE_BAT(, 2883) +HANDLE_BAT(, 2884) +HANDLE_BAT(, 2885) +HANDLE_BAT(, 2886) +HANDLE_BAT(, 2887) +HANDLE_BAT(, 2888) +HANDLE_BAT(, 2889) +HANDLE_BAT(, 2890) +HANDLE_BAT(, 2891) +HANDLE_BAT(, 2892) +HANDLE_BAT(, 2893) +HANDLE_BAT(, 2894) +HANDLE_BAT(, 2895) +HANDLE_BAT(, 2896) +HANDLE_BAT(, 2897) +HANDLE_BAT(, 2898) +HANDLE_BAT(, 2899) +HANDLE_BAT(, 2900) +HANDLE_BAT(, 2901) +HANDLE_BAT(, 2902) +HANDLE_BAT(, 2903) +HANDLE_BAT(, 2904) +HANDLE_BAT(, 2905) +HANDLE_BAT(, 2906) +HANDLE_BAT(, 2907) +HANDLE_BAT(, 2908) +HANDLE_BAT(, 2909) +HANDLE_BAT(, 2910) +HANDLE_BAT(, 2911) +HANDLE_BAT(, 2912) +HANDLE_BAT(, 2913) +HANDLE_BAT(, 2914) +HANDLE_BAT(, 2915) +HANDLE_BAT(, 2916) +HANDLE_BAT(, 2917) +HANDLE_BAT(, 2918) +HANDLE_BAT(, 2919) +HANDLE_BAT(, 2920) +HANDLE_BAT(, 2921) +HANDLE_BAT(, 2922) +HANDLE_BAT(, 2923) +HANDLE_BAT(, 2924) +HANDLE_BAT(, 2925) +HANDLE_BAT(, 2926) +HANDLE_BAT(, 2927) +HANDLE_BAT(, 2928) +HANDLE_BAT(, 2929) +HANDLE_BAT(, 2930) +HANDLE_BAT(, 2931) +HANDLE_BAT(, 2932) +HANDLE_BAT(, 2933) +HANDLE_BAT(, 2934) +HANDLE_BAT(, 2935) +HANDLE_BAT(, 2936) +HANDLE_BAT(, 2937) +HANDLE_BAT(, 2938) +HANDLE_BAT(, 2939) +HANDLE_BAT(, 2940) +HANDLE_BAT(, 2941) +HANDLE_BAT(, 2942) +HANDLE_BAT(, 2943) +HANDLE_BAT(, 2944) +HANDLE_BAT(, 2945) +HANDLE_BAT(, 2946) +HANDLE_BAT(, 2947) +HANDLE_BAT(, 2948) +HANDLE_BAT(, 2949) +HANDLE_BAT(, 2950) +HANDLE_BAT(, 2951) +HANDLE_BAT(, 2952) +HANDLE_BAT(, 2953) +HANDLE_BAT(, 2954) +HANDLE_BAT(, 2955) +HANDLE_BAT(, 2956) +HANDLE_BAT(, 2957) +HANDLE_BAT(, 2958) +HANDLE_BAT(, 2959) +HANDLE_BAT(, 2960) +HANDLE_BAT(, 2961) +HANDLE_BAT(, 2962) +HANDLE_BAT(, 2963) +HANDLE_BAT(, 2964) +HANDLE_BAT(, 2965) +HANDLE_BAT(, 2966) +HANDLE_BAT(, 2967) +HANDLE_BAT(, 2968) +HANDLE_BAT(, 2969) +HANDLE_BAT(, 2970) +HANDLE_BAT(, 2971) +HANDLE_BAT(, 2972) +HANDLE_BAT(, 2973) +HANDLE_BAT(, 2974) +HANDLE_BAT(, 2975) +HANDLE_BAT(, 2976) +HANDLE_BAT(, 2977) +HANDLE_BAT(, 2978) +HANDLE_BAT(, 2979) +HANDLE_BAT(, 2980) +HANDLE_BAT(, 2981) +HANDLE_BAT(, 2982) +HANDLE_BAT(, 2983) +HANDLE_BAT(, 2984) +HANDLE_BAT(, 2985) +HANDLE_BAT(, 2986) +HANDLE_BAT(, 2987) +HANDLE_BAT(, 2988) +HANDLE_BAT(, 2989) +HANDLE_BAT(, 2990) +HANDLE_BAT(, 2991) +HANDLE_BAT(, 2992) +HANDLE_BAT(, 2993) +HANDLE_BAT(, 2994) +HANDLE_BAT(, 2995) +HANDLE_BAT(, 2996) +HANDLE_BAT(, 2997) +HANDLE_BAT(, 2998) +HANDLE_BAT(, 2999) +HANDLE_BAT(, 3000) +HANDLE_BAT(, 3001) +HANDLE_BAT(, 3002) +HANDLE_BAT(, 3003) +HANDLE_BAT(, 3004) +HANDLE_BAT(, 3005) +HANDLE_BAT(, 3006) +HANDLE_BAT(, 3007) +HANDLE_BAT(, 3008) +HANDLE_BAT(, 3009) +HANDLE_BAT(, 3010) +HANDLE_BAT(, 3011) +HANDLE_BAT(, 3012) +HANDLE_BAT(, 3013) +HANDLE_BAT(, 3014) +HANDLE_BAT(, 3015) +HANDLE_BAT(, 3016) +HANDLE_BAT(, 3017) +HANDLE_BAT(, 3018) +HANDLE_BAT(, 3019) +HANDLE_BAT(, 3020) +HANDLE_BAT(, 3021) +HANDLE_BAT(, 3022) +HANDLE_BAT(, 3023) +HANDLE_BAT(, 3024) +HANDLE_BAT(, 3025) +HANDLE_BAT(, 3026) +HANDLE_BAT(, 3027) +HANDLE_BAT(, 3028) +HANDLE_BAT(, 3029) +HANDLE_BAT(, 3030) +HANDLE_BAT(, 3031) +HANDLE_BAT(, 3032) +HANDLE_BAT(, 3033) +HANDLE_BAT(, 3034) +HANDLE_BAT(, 3035) +HANDLE_BAT(, 3036) +HANDLE_BAT(, 3037) +HANDLE_BAT(, 3038) +HANDLE_BAT(, 3039) +HANDLE_BAT(, 3040) +HANDLE_BAT(, 3041) +HANDLE_BAT(, 3042) +HANDLE_BAT(, 3043) +HANDLE_BAT(, 3044) +HANDLE_BAT(, 3045) +HANDLE_BAT(, 3046) +HANDLE_BAT(, 3047) +HANDLE_BAT(, 3048) +HANDLE_BAT(, 3049) +HANDLE_BAT(, 3050) +HANDLE_BAT(, 3051) +HANDLE_BAT(, 3052) +HANDLE_BAT(, 3053) +HANDLE_BAT(, 3054) +HANDLE_BAT(, 3055) +HANDLE_BAT(, 3056) +HANDLE_BAT(, 3057) +HANDLE_BAT(, 3058) +HANDLE_BAT(, 3059) +HANDLE_BAT(, 3060) +HANDLE_BAT(, 3061) +HANDLE_BAT(, 3062) +HANDLE_BAT(, 3063) +HANDLE_BAT(, 3064) +HANDLE_BAT(, 3065) +HANDLE_BAT(, 3066) +HANDLE_BAT(, 3067) +HANDLE_BAT(, 3068) +HANDLE_BAT(, 3069) +HANDLE_BAT(, 3070) +HANDLE_BAT(, 3071) +HANDLE_BAT(, 3072) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 2049) +HANDLE_BAT(APINT_TYPE_PREFIX, 2050) +HANDLE_BAT(APINT_TYPE_PREFIX, 2051) +HANDLE_BAT(APINT_TYPE_PREFIX, 2052) +HANDLE_BAT(APINT_TYPE_PREFIX, 2053) +HANDLE_BAT(APINT_TYPE_PREFIX, 2054) +HANDLE_BAT(APINT_TYPE_PREFIX, 2055) +HANDLE_BAT(APINT_TYPE_PREFIX, 2056) +HANDLE_BAT(APINT_TYPE_PREFIX, 2057) +HANDLE_BAT(APINT_TYPE_PREFIX, 2058) +HANDLE_BAT(APINT_TYPE_PREFIX, 2059) +HANDLE_BAT(APINT_TYPE_PREFIX, 2060) +HANDLE_BAT(APINT_TYPE_PREFIX, 2061) +HANDLE_BAT(APINT_TYPE_PREFIX, 2062) +HANDLE_BAT(APINT_TYPE_PREFIX, 2063) +HANDLE_BAT(APINT_TYPE_PREFIX, 2064) +HANDLE_BAT(APINT_TYPE_PREFIX, 2065) +HANDLE_BAT(APINT_TYPE_PREFIX, 2066) +HANDLE_BAT(APINT_TYPE_PREFIX, 2067) +HANDLE_BAT(APINT_TYPE_PREFIX, 2068) +HANDLE_BAT(APINT_TYPE_PREFIX, 2069) +HANDLE_BAT(APINT_TYPE_PREFIX, 2070) +HANDLE_BAT(APINT_TYPE_PREFIX, 2071) +HANDLE_BAT(APINT_TYPE_PREFIX, 2072) +HANDLE_BAT(APINT_TYPE_PREFIX, 2073) +HANDLE_BAT(APINT_TYPE_PREFIX, 2074) +HANDLE_BAT(APINT_TYPE_PREFIX, 2075) +HANDLE_BAT(APINT_TYPE_PREFIX, 2076) +HANDLE_BAT(APINT_TYPE_PREFIX, 2077) +HANDLE_BAT(APINT_TYPE_PREFIX, 2078) +HANDLE_BAT(APINT_TYPE_PREFIX, 2079) +HANDLE_BAT(APINT_TYPE_PREFIX, 2080) +HANDLE_BAT(APINT_TYPE_PREFIX, 2081) +HANDLE_BAT(APINT_TYPE_PREFIX, 2082) +HANDLE_BAT(APINT_TYPE_PREFIX, 2083) +HANDLE_BAT(APINT_TYPE_PREFIX, 2084) +HANDLE_BAT(APINT_TYPE_PREFIX, 2085) +HANDLE_BAT(APINT_TYPE_PREFIX, 2086) +HANDLE_BAT(APINT_TYPE_PREFIX, 2087) +HANDLE_BAT(APINT_TYPE_PREFIX, 2088) +HANDLE_BAT(APINT_TYPE_PREFIX, 2089) +HANDLE_BAT(APINT_TYPE_PREFIX, 2090) +HANDLE_BAT(APINT_TYPE_PREFIX, 2091) +HANDLE_BAT(APINT_TYPE_PREFIX, 2092) +HANDLE_BAT(APINT_TYPE_PREFIX, 2093) +HANDLE_BAT(APINT_TYPE_PREFIX, 2094) +HANDLE_BAT(APINT_TYPE_PREFIX, 2095) +HANDLE_BAT(APINT_TYPE_PREFIX, 2096) +HANDLE_BAT(APINT_TYPE_PREFIX, 2097) +HANDLE_BAT(APINT_TYPE_PREFIX, 2098) +HANDLE_BAT(APINT_TYPE_PREFIX, 2099) +HANDLE_BAT(APINT_TYPE_PREFIX, 2100) +HANDLE_BAT(APINT_TYPE_PREFIX, 2101) +HANDLE_BAT(APINT_TYPE_PREFIX, 2102) +HANDLE_BAT(APINT_TYPE_PREFIX, 2103) +HANDLE_BAT(APINT_TYPE_PREFIX, 2104) +HANDLE_BAT(APINT_TYPE_PREFIX, 2105) +HANDLE_BAT(APINT_TYPE_PREFIX, 2106) +HANDLE_BAT(APINT_TYPE_PREFIX, 2107) +HANDLE_BAT(APINT_TYPE_PREFIX, 2108) +HANDLE_BAT(APINT_TYPE_PREFIX, 2109) +HANDLE_BAT(APINT_TYPE_PREFIX, 2110) +HANDLE_BAT(APINT_TYPE_PREFIX, 2111) +HANDLE_BAT(APINT_TYPE_PREFIX, 2112) +HANDLE_BAT(APINT_TYPE_PREFIX, 2113) +HANDLE_BAT(APINT_TYPE_PREFIX, 2114) +HANDLE_BAT(APINT_TYPE_PREFIX, 2115) +HANDLE_BAT(APINT_TYPE_PREFIX, 2116) +HANDLE_BAT(APINT_TYPE_PREFIX, 2117) +HANDLE_BAT(APINT_TYPE_PREFIX, 2118) +HANDLE_BAT(APINT_TYPE_PREFIX, 2119) +HANDLE_BAT(APINT_TYPE_PREFIX, 2120) +HANDLE_BAT(APINT_TYPE_PREFIX, 2121) +HANDLE_BAT(APINT_TYPE_PREFIX, 2122) +HANDLE_BAT(APINT_TYPE_PREFIX, 2123) +HANDLE_BAT(APINT_TYPE_PREFIX, 2124) +HANDLE_BAT(APINT_TYPE_PREFIX, 2125) +HANDLE_BAT(APINT_TYPE_PREFIX, 2126) +HANDLE_BAT(APINT_TYPE_PREFIX, 2127) +HANDLE_BAT(APINT_TYPE_PREFIX, 2128) +HANDLE_BAT(APINT_TYPE_PREFIX, 2129) +HANDLE_BAT(APINT_TYPE_PREFIX, 2130) +HANDLE_BAT(APINT_TYPE_PREFIX, 2131) +HANDLE_BAT(APINT_TYPE_PREFIX, 2132) +HANDLE_BAT(APINT_TYPE_PREFIX, 2133) +HANDLE_BAT(APINT_TYPE_PREFIX, 2134) +HANDLE_BAT(APINT_TYPE_PREFIX, 2135) +HANDLE_BAT(APINT_TYPE_PREFIX, 2136) +HANDLE_BAT(APINT_TYPE_PREFIX, 2137) +HANDLE_BAT(APINT_TYPE_PREFIX, 2138) +HANDLE_BAT(APINT_TYPE_PREFIX, 2139) +HANDLE_BAT(APINT_TYPE_PREFIX, 2140) +HANDLE_BAT(APINT_TYPE_PREFIX, 2141) +HANDLE_BAT(APINT_TYPE_PREFIX, 2142) +HANDLE_BAT(APINT_TYPE_PREFIX, 2143) +HANDLE_BAT(APINT_TYPE_PREFIX, 2144) +HANDLE_BAT(APINT_TYPE_PREFIX, 2145) +HANDLE_BAT(APINT_TYPE_PREFIX, 2146) +HANDLE_BAT(APINT_TYPE_PREFIX, 2147) +HANDLE_BAT(APINT_TYPE_PREFIX, 2148) +HANDLE_BAT(APINT_TYPE_PREFIX, 2149) +HANDLE_BAT(APINT_TYPE_PREFIX, 2150) +HANDLE_BAT(APINT_TYPE_PREFIX, 2151) +HANDLE_BAT(APINT_TYPE_PREFIX, 2152) +HANDLE_BAT(APINT_TYPE_PREFIX, 2153) +HANDLE_BAT(APINT_TYPE_PREFIX, 2154) +HANDLE_BAT(APINT_TYPE_PREFIX, 2155) +HANDLE_BAT(APINT_TYPE_PREFIX, 2156) +HANDLE_BAT(APINT_TYPE_PREFIX, 2157) +HANDLE_BAT(APINT_TYPE_PREFIX, 2158) +HANDLE_BAT(APINT_TYPE_PREFIX, 2159) +HANDLE_BAT(APINT_TYPE_PREFIX, 2160) +HANDLE_BAT(APINT_TYPE_PREFIX, 2161) +HANDLE_BAT(APINT_TYPE_PREFIX, 2162) +HANDLE_BAT(APINT_TYPE_PREFIX, 2163) +HANDLE_BAT(APINT_TYPE_PREFIX, 2164) +HANDLE_BAT(APINT_TYPE_PREFIX, 2165) +HANDLE_BAT(APINT_TYPE_PREFIX, 2166) +HANDLE_BAT(APINT_TYPE_PREFIX, 2167) +HANDLE_BAT(APINT_TYPE_PREFIX, 2168) +HANDLE_BAT(APINT_TYPE_PREFIX, 2169) +HANDLE_BAT(APINT_TYPE_PREFIX, 2170) +HANDLE_BAT(APINT_TYPE_PREFIX, 2171) +HANDLE_BAT(APINT_TYPE_PREFIX, 2172) +HANDLE_BAT(APINT_TYPE_PREFIX, 2173) +HANDLE_BAT(APINT_TYPE_PREFIX, 2174) +HANDLE_BAT(APINT_TYPE_PREFIX, 2175) +HANDLE_BAT(APINT_TYPE_PREFIX, 2176) +HANDLE_BAT(APINT_TYPE_PREFIX, 2177) +HANDLE_BAT(APINT_TYPE_PREFIX, 2178) +HANDLE_BAT(APINT_TYPE_PREFIX, 2179) +HANDLE_BAT(APINT_TYPE_PREFIX, 2180) +HANDLE_BAT(APINT_TYPE_PREFIX, 2181) +HANDLE_BAT(APINT_TYPE_PREFIX, 2182) +HANDLE_BAT(APINT_TYPE_PREFIX, 2183) +HANDLE_BAT(APINT_TYPE_PREFIX, 2184) +HANDLE_BAT(APINT_TYPE_PREFIX, 2185) +HANDLE_BAT(APINT_TYPE_PREFIX, 2186) +HANDLE_BAT(APINT_TYPE_PREFIX, 2187) +HANDLE_BAT(APINT_TYPE_PREFIX, 2188) +HANDLE_BAT(APINT_TYPE_PREFIX, 2189) +HANDLE_BAT(APINT_TYPE_PREFIX, 2190) +HANDLE_BAT(APINT_TYPE_PREFIX, 2191) +HANDLE_BAT(APINT_TYPE_PREFIX, 2192) +HANDLE_BAT(APINT_TYPE_PREFIX, 2193) +HANDLE_BAT(APINT_TYPE_PREFIX, 2194) +HANDLE_BAT(APINT_TYPE_PREFIX, 2195) +HANDLE_BAT(APINT_TYPE_PREFIX, 2196) +HANDLE_BAT(APINT_TYPE_PREFIX, 2197) +HANDLE_BAT(APINT_TYPE_PREFIX, 2198) +HANDLE_BAT(APINT_TYPE_PREFIX, 2199) +HANDLE_BAT(APINT_TYPE_PREFIX, 2200) +HANDLE_BAT(APINT_TYPE_PREFIX, 2201) +HANDLE_BAT(APINT_TYPE_PREFIX, 2202) +HANDLE_BAT(APINT_TYPE_PREFIX, 2203) +HANDLE_BAT(APINT_TYPE_PREFIX, 2204) +HANDLE_BAT(APINT_TYPE_PREFIX, 2205) +HANDLE_BAT(APINT_TYPE_PREFIX, 2206) +HANDLE_BAT(APINT_TYPE_PREFIX, 2207) +HANDLE_BAT(APINT_TYPE_PREFIX, 2208) +HANDLE_BAT(APINT_TYPE_PREFIX, 2209) +HANDLE_BAT(APINT_TYPE_PREFIX, 2210) +HANDLE_BAT(APINT_TYPE_PREFIX, 2211) +HANDLE_BAT(APINT_TYPE_PREFIX, 2212) +HANDLE_BAT(APINT_TYPE_PREFIX, 2213) +HANDLE_BAT(APINT_TYPE_PREFIX, 2214) +HANDLE_BAT(APINT_TYPE_PREFIX, 2215) +HANDLE_BAT(APINT_TYPE_PREFIX, 2216) +HANDLE_BAT(APINT_TYPE_PREFIX, 2217) +HANDLE_BAT(APINT_TYPE_PREFIX, 2218) +HANDLE_BAT(APINT_TYPE_PREFIX, 2219) +HANDLE_BAT(APINT_TYPE_PREFIX, 2220) +HANDLE_BAT(APINT_TYPE_PREFIX, 2221) +HANDLE_BAT(APINT_TYPE_PREFIX, 2222) +HANDLE_BAT(APINT_TYPE_PREFIX, 2223) +HANDLE_BAT(APINT_TYPE_PREFIX, 2224) +HANDLE_BAT(APINT_TYPE_PREFIX, 2225) +HANDLE_BAT(APINT_TYPE_PREFIX, 2226) +HANDLE_BAT(APINT_TYPE_PREFIX, 2227) +HANDLE_BAT(APINT_TYPE_PREFIX, 2228) +HANDLE_BAT(APINT_TYPE_PREFIX, 2229) +HANDLE_BAT(APINT_TYPE_PREFIX, 2230) +HANDLE_BAT(APINT_TYPE_PREFIX, 2231) +HANDLE_BAT(APINT_TYPE_PREFIX, 2232) +HANDLE_BAT(APINT_TYPE_PREFIX, 2233) +HANDLE_BAT(APINT_TYPE_PREFIX, 2234) +HANDLE_BAT(APINT_TYPE_PREFIX, 2235) +HANDLE_BAT(APINT_TYPE_PREFIX, 2236) +HANDLE_BAT(APINT_TYPE_PREFIX, 2237) +HANDLE_BAT(APINT_TYPE_PREFIX, 2238) +HANDLE_BAT(APINT_TYPE_PREFIX, 2239) +HANDLE_BAT(APINT_TYPE_PREFIX, 2240) +HANDLE_BAT(APINT_TYPE_PREFIX, 2241) +HANDLE_BAT(APINT_TYPE_PREFIX, 2242) +HANDLE_BAT(APINT_TYPE_PREFIX, 2243) +HANDLE_BAT(APINT_TYPE_PREFIX, 2244) +HANDLE_BAT(APINT_TYPE_PREFIX, 2245) +HANDLE_BAT(APINT_TYPE_PREFIX, 2246) +HANDLE_BAT(APINT_TYPE_PREFIX, 2247) +HANDLE_BAT(APINT_TYPE_PREFIX, 2248) +HANDLE_BAT(APINT_TYPE_PREFIX, 2249) +HANDLE_BAT(APINT_TYPE_PREFIX, 2250) +HANDLE_BAT(APINT_TYPE_PREFIX, 2251) +HANDLE_BAT(APINT_TYPE_PREFIX, 2252) +HANDLE_BAT(APINT_TYPE_PREFIX, 2253) +HANDLE_BAT(APINT_TYPE_PREFIX, 2254) +HANDLE_BAT(APINT_TYPE_PREFIX, 2255) +HANDLE_BAT(APINT_TYPE_PREFIX, 2256) +HANDLE_BAT(APINT_TYPE_PREFIX, 2257) +HANDLE_BAT(APINT_TYPE_PREFIX, 2258) +HANDLE_BAT(APINT_TYPE_PREFIX, 2259) +HANDLE_BAT(APINT_TYPE_PREFIX, 2260) +HANDLE_BAT(APINT_TYPE_PREFIX, 2261) +HANDLE_BAT(APINT_TYPE_PREFIX, 2262) +HANDLE_BAT(APINT_TYPE_PREFIX, 2263) +HANDLE_BAT(APINT_TYPE_PREFIX, 2264) +HANDLE_BAT(APINT_TYPE_PREFIX, 2265) +HANDLE_BAT(APINT_TYPE_PREFIX, 2266) +HANDLE_BAT(APINT_TYPE_PREFIX, 2267) +HANDLE_BAT(APINT_TYPE_PREFIX, 2268) +HANDLE_BAT(APINT_TYPE_PREFIX, 2269) +HANDLE_BAT(APINT_TYPE_PREFIX, 2270) +HANDLE_BAT(APINT_TYPE_PREFIX, 2271) +HANDLE_BAT(APINT_TYPE_PREFIX, 2272) +HANDLE_BAT(APINT_TYPE_PREFIX, 2273) +HANDLE_BAT(APINT_TYPE_PREFIX, 2274) +HANDLE_BAT(APINT_TYPE_PREFIX, 2275) +HANDLE_BAT(APINT_TYPE_PREFIX, 2276) +HANDLE_BAT(APINT_TYPE_PREFIX, 2277) +HANDLE_BAT(APINT_TYPE_PREFIX, 2278) +HANDLE_BAT(APINT_TYPE_PREFIX, 2279) +HANDLE_BAT(APINT_TYPE_PREFIX, 2280) +HANDLE_BAT(APINT_TYPE_PREFIX, 2281) +HANDLE_BAT(APINT_TYPE_PREFIX, 2282) +HANDLE_BAT(APINT_TYPE_PREFIX, 2283) +HANDLE_BAT(APINT_TYPE_PREFIX, 2284) +HANDLE_BAT(APINT_TYPE_PREFIX, 2285) +HANDLE_BAT(APINT_TYPE_PREFIX, 2286) +HANDLE_BAT(APINT_TYPE_PREFIX, 2287) +HANDLE_BAT(APINT_TYPE_PREFIX, 2288) +HANDLE_BAT(APINT_TYPE_PREFIX, 2289) +HANDLE_BAT(APINT_TYPE_PREFIX, 2290) +HANDLE_BAT(APINT_TYPE_PREFIX, 2291) +HANDLE_BAT(APINT_TYPE_PREFIX, 2292) +HANDLE_BAT(APINT_TYPE_PREFIX, 2293) +HANDLE_BAT(APINT_TYPE_PREFIX, 2294) +HANDLE_BAT(APINT_TYPE_PREFIX, 2295) +HANDLE_BAT(APINT_TYPE_PREFIX, 2296) +HANDLE_BAT(APINT_TYPE_PREFIX, 2297) +HANDLE_BAT(APINT_TYPE_PREFIX, 2298) +HANDLE_BAT(APINT_TYPE_PREFIX, 2299) +HANDLE_BAT(APINT_TYPE_PREFIX, 2300) +HANDLE_BAT(APINT_TYPE_PREFIX, 2301) +HANDLE_BAT(APINT_TYPE_PREFIX, 2302) +HANDLE_BAT(APINT_TYPE_PREFIX, 2303) +HANDLE_BAT(APINT_TYPE_PREFIX, 2304) +HANDLE_BAT(APINT_TYPE_PREFIX, 2305) +HANDLE_BAT(APINT_TYPE_PREFIX, 2306) +HANDLE_BAT(APINT_TYPE_PREFIX, 2307) +HANDLE_BAT(APINT_TYPE_PREFIX, 2308) +HANDLE_BAT(APINT_TYPE_PREFIX, 2309) +HANDLE_BAT(APINT_TYPE_PREFIX, 2310) +HANDLE_BAT(APINT_TYPE_PREFIX, 2311) +HANDLE_BAT(APINT_TYPE_PREFIX, 2312) +HANDLE_BAT(APINT_TYPE_PREFIX, 2313) +HANDLE_BAT(APINT_TYPE_PREFIX, 2314) +HANDLE_BAT(APINT_TYPE_PREFIX, 2315) +HANDLE_BAT(APINT_TYPE_PREFIX, 2316) +HANDLE_BAT(APINT_TYPE_PREFIX, 2317) +HANDLE_BAT(APINT_TYPE_PREFIX, 2318) +HANDLE_BAT(APINT_TYPE_PREFIX, 2319) +HANDLE_BAT(APINT_TYPE_PREFIX, 2320) +HANDLE_BAT(APINT_TYPE_PREFIX, 2321) +HANDLE_BAT(APINT_TYPE_PREFIX, 2322) +HANDLE_BAT(APINT_TYPE_PREFIX, 2323) +HANDLE_BAT(APINT_TYPE_PREFIX, 2324) +HANDLE_BAT(APINT_TYPE_PREFIX, 2325) +HANDLE_BAT(APINT_TYPE_PREFIX, 2326) +HANDLE_BAT(APINT_TYPE_PREFIX, 2327) +HANDLE_BAT(APINT_TYPE_PREFIX, 2328) +HANDLE_BAT(APINT_TYPE_PREFIX, 2329) +HANDLE_BAT(APINT_TYPE_PREFIX, 2330) +HANDLE_BAT(APINT_TYPE_PREFIX, 2331) +HANDLE_BAT(APINT_TYPE_PREFIX, 2332) +HANDLE_BAT(APINT_TYPE_PREFIX, 2333) +HANDLE_BAT(APINT_TYPE_PREFIX, 2334) +HANDLE_BAT(APINT_TYPE_PREFIX, 2335) +HANDLE_BAT(APINT_TYPE_PREFIX, 2336) +HANDLE_BAT(APINT_TYPE_PREFIX, 2337) +HANDLE_BAT(APINT_TYPE_PREFIX, 2338) +HANDLE_BAT(APINT_TYPE_PREFIX, 2339) +HANDLE_BAT(APINT_TYPE_PREFIX, 2340) +HANDLE_BAT(APINT_TYPE_PREFIX, 2341) +HANDLE_BAT(APINT_TYPE_PREFIX, 2342) +HANDLE_BAT(APINT_TYPE_PREFIX, 2343) +HANDLE_BAT(APINT_TYPE_PREFIX, 2344) +HANDLE_BAT(APINT_TYPE_PREFIX, 2345) +HANDLE_BAT(APINT_TYPE_PREFIX, 2346) +HANDLE_BAT(APINT_TYPE_PREFIX, 2347) +HANDLE_BAT(APINT_TYPE_PREFIX, 2348) +HANDLE_BAT(APINT_TYPE_PREFIX, 2349) +HANDLE_BAT(APINT_TYPE_PREFIX, 2350) +HANDLE_BAT(APINT_TYPE_PREFIX, 2351) +HANDLE_BAT(APINT_TYPE_PREFIX, 2352) +HANDLE_BAT(APINT_TYPE_PREFIX, 2353) +HANDLE_BAT(APINT_TYPE_PREFIX, 2354) +HANDLE_BAT(APINT_TYPE_PREFIX, 2355) +HANDLE_BAT(APINT_TYPE_PREFIX, 2356) +HANDLE_BAT(APINT_TYPE_PREFIX, 2357) +HANDLE_BAT(APINT_TYPE_PREFIX, 2358) +HANDLE_BAT(APINT_TYPE_PREFIX, 2359) +HANDLE_BAT(APINT_TYPE_PREFIX, 2360) +HANDLE_BAT(APINT_TYPE_PREFIX, 2361) +HANDLE_BAT(APINT_TYPE_PREFIX, 2362) +HANDLE_BAT(APINT_TYPE_PREFIX, 2363) +HANDLE_BAT(APINT_TYPE_PREFIX, 2364) +HANDLE_BAT(APINT_TYPE_PREFIX, 2365) +HANDLE_BAT(APINT_TYPE_PREFIX, 2366) +HANDLE_BAT(APINT_TYPE_PREFIX, 2367) +HANDLE_BAT(APINT_TYPE_PREFIX, 2368) +HANDLE_BAT(APINT_TYPE_PREFIX, 2369) +HANDLE_BAT(APINT_TYPE_PREFIX, 2370) +HANDLE_BAT(APINT_TYPE_PREFIX, 2371) +HANDLE_BAT(APINT_TYPE_PREFIX, 2372) +HANDLE_BAT(APINT_TYPE_PREFIX, 2373) +HANDLE_BAT(APINT_TYPE_PREFIX, 2374) +HANDLE_BAT(APINT_TYPE_PREFIX, 2375) +HANDLE_BAT(APINT_TYPE_PREFIX, 2376) +HANDLE_BAT(APINT_TYPE_PREFIX, 2377) +HANDLE_BAT(APINT_TYPE_PREFIX, 2378) +HANDLE_BAT(APINT_TYPE_PREFIX, 2379) +HANDLE_BAT(APINT_TYPE_PREFIX, 2380) +HANDLE_BAT(APINT_TYPE_PREFIX, 2381) +HANDLE_BAT(APINT_TYPE_PREFIX, 2382) +HANDLE_BAT(APINT_TYPE_PREFIX, 2383) +HANDLE_BAT(APINT_TYPE_PREFIX, 2384) +HANDLE_BAT(APINT_TYPE_PREFIX, 2385) +HANDLE_BAT(APINT_TYPE_PREFIX, 2386) +HANDLE_BAT(APINT_TYPE_PREFIX, 2387) +HANDLE_BAT(APINT_TYPE_PREFIX, 2388) +HANDLE_BAT(APINT_TYPE_PREFIX, 2389) +HANDLE_BAT(APINT_TYPE_PREFIX, 2390) +HANDLE_BAT(APINT_TYPE_PREFIX, 2391) +HANDLE_BAT(APINT_TYPE_PREFIX, 2392) +HANDLE_BAT(APINT_TYPE_PREFIX, 2393) +HANDLE_BAT(APINT_TYPE_PREFIX, 2394) +HANDLE_BAT(APINT_TYPE_PREFIX, 2395) +HANDLE_BAT(APINT_TYPE_PREFIX, 2396) +HANDLE_BAT(APINT_TYPE_PREFIX, 2397) +HANDLE_BAT(APINT_TYPE_PREFIX, 2398) +HANDLE_BAT(APINT_TYPE_PREFIX, 2399) +HANDLE_BAT(APINT_TYPE_PREFIX, 2400) +HANDLE_BAT(APINT_TYPE_PREFIX, 2401) +HANDLE_BAT(APINT_TYPE_PREFIX, 2402) +HANDLE_BAT(APINT_TYPE_PREFIX, 2403) +HANDLE_BAT(APINT_TYPE_PREFIX, 2404) +HANDLE_BAT(APINT_TYPE_PREFIX, 2405) +HANDLE_BAT(APINT_TYPE_PREFIX, 2406) +HANDLE_BAT(APINT_TYPE_PREFIX, 2407) +HANDLE_BAT(APINT_TYPE_PREFIX, 2408) +HANDLE_BAT(APINT_TYPE_PREFIX, 2409) +HANDLE_BAT(APINT_TYPE_PREFIX, 2410) +HANDLE_BAT(APINT_TYPE_PREFIX, 2411) +HANDLE_BAT(APINT_TYPE_PREFIX, 2412) +HANDLE_BAT(APINT_TYPE_PREFIX, 2413) +HANDLE_BAT(APINT_TYPE_PREFIX, 2414) +HANDLE_BAT(APINT_TYPE_PREFIX, 2415) +HANDLE_BAT(APINT_TYPE_PREFIX, 2416) +HANDLE_BAT(APINT_TYPE_PREFIX, 2417) +HANDLE_BAT(APINT_TYPE_PREFIX, 2418) +HANDLE_BAT(APINT_TYPE_PREFIX, 2419) +HANDLE_BAT(APINT_TYPE_PREFIX, 2420) +HANDLE_BAT(APINT_TYPE_PREFIX, 2421) +HANDLE_BAT(APINT_TYPE_PREFIX, 2422) +HANDLE_BAT(APINT_TYPE_PREFIX, 2423) +HANDLE_BAT(APINT_TYPE_PREFIX, 2424) +HANDLE_BAT(APINT_TYPE_PREFIX, 2425) +HANDLE_BAT(APINT_TYPE_PREFIX, 2426) +HANDLE_BAT(APINT_TYPE_PREFIX, 2427) +HANDLE_BAT(APINT_TYPE_PREFIX, 2428) +HANDLE_BAT(APINT_TYPE_PREFIX, 2429) +HANDLE_BAT(APINT_TYPE_PREFIX, 2430) +HANDLE_BAT(APINT_TYPE_PREFIX, 2431) +HANDLE_BAT(APINT_TYPE_PREFIX, 2432) +HANDLE_BAT(APINT_TYPE_PREFIX, 2433) +HANDLE_BAT(APINT_TYPE_PREFIX, 2434) +HANDLE_BAT(APINT_TYPE_PREFIX, 2435) +HANDLE_BAT(APINT_TYPE_PREFIX, 2436) +HANDLE_BAT(APINT_TYPE_PREFIX, 2437) +HANDLE_BAT(APINT_TYPE_PREFIX, 2438) +HANDLE_BAT(APINT_TYPE_PREFIX, 2439) +HANDLE_BAT(APINT_TYPE_PREFIX, 2440) +HANDLE_BAT(APINT_TYPE_PREFIX, 2441) +HANDLE_BAT(APINT_TYPE_PREFIX, 2442) +HANDLE_BAT(APINT_TYPE_PREFIX, 2443) +HANDLE_BAT(APINT_TYPE_PREFIX, 2444) +HANDLE_BAT(APINT_TYPE_PREFIX, 2445) +HANDLE_BAT(APINT_TYPE_PREFIX, 2446) +HANDLE_BAT(APINT_TYPE_PREFIX, 2447) +HANDLE_BAT(APINT_TYPE_PREFIX, 2448) +HANDLE_BAT(APINT_TYPE_PREFIX, 2449) +HANDLE_BAT(APINT_TYPE_PREFIX, 2450) +HANDLE_BAT(APINT_TYPE_PREFIX, 2451) +HANDLE_BAT(APINT_TYPE_PREFIX, 2452) +HANDLE_BAT(APINT_TYPE_PREFIX, 2453) +HANDLE_BAT(APINT_TYPE_PREFIX, 2454) +HANDLE_BAT(APINT_TYPE_PREFIX, 2455) +HANDLE_BAT(APINT_TYPE_PREFIX, 2456) +HANDLE_BAT(APINT_TYPE_PREFIX, 2457) +HANDLE_BAT(APINT_TYPE_PREFIX, 2458) +HANDLE_BAT(APINT_TYPE_PREFIX, 2459) +HANDLE_BAT(APINT_TYPE_PREFIX, 2460) +HANDLE_BAT(APINT_TYPE_PREFIX, 2461) +HANDLE_BAT(APINT_TYPE_PREFIX, 2462) +HANDLE_BAT(APINT_TYPE_PREFIX, 2463) +HANDLE_BAT(APINT_TYPE_PREFIX, 2464) +HANDLE_BAT(APINT_TYPE_PREFIX, 2465) +HANDLE_BAT(APINT_TYPE_PREFIX, 2466) +HANDLE_BAT(APINT_TYPE_PREFIX, 2467) +HANDLE_BAT(APINT_TYPE_PREFIX, 2468) +HANDLE_BAT(APINT_TYPE_PREFIX, 2469) +HANDLE_BAT(APINT_TYPE_PREFIX, 2470) +HANDLE_BAT(APINT_TYPE_PREFIX, 2471) +HANDLE_BAT(APINT_TYPE_PREFIX, 2472) +HANDLE_BAT(APINT_TYPE_PREFIX, 2473) +HANDLE_BAT(APINT_TYPE_PREFIX, 2474) +HANDLE_BAT(APINT_TYPE_PREFIX, 2475) +HANDLE_BAT(APINT_TYPE_PREFIX, 2476) +HANDLE_BAT(APINT_TYPE_PREFIX, 2477) +HANDLE_BAT(APINT_TYPE_PREFIX, 2478) +HANDLE_BAT(APINT_TYPE_PREFIX, 2479) +HANDLE_BAT(APINT_TYPE_PREFIX, 2480) +HANDLE_BAT(APINT_TYPE_PREFIX, 2481) +HANDLE_BAT(APINT_TYPE_PREFIX, 2482) +HANDLE_BAT(APINT_TYPE_PREFIX, 2483) +HANDLE_BAT(APINT_TYPE_PREFIX, 2484) +HANDLE_BAT(APINT_TYPE_PREFIX, 2485) +HANDLE_BAT(APINT_TYPE_PREFIX, 2486) +HANDLE_BAT(APINT_TYPE_PREFIX, 2487) +HANDLE_BAT(APINT_TYPE_PREFIX, 2488) +HANDLE_BAT(APINT_TYPE_PREFIX, 2489) +HANDLE_BAT(APINT_TYPE_PREFIX, 2490) +HANDLE_BAT(APINT_TYPE_PREFIX, 2491) +HANDLE_BAT(APINT_TYPE_PREFIX, 2492) +HANDLE_BAT(APINT_TYPE_PREFIX, 2493) +HANDLE_BAT(APINT_TYPE_PREFIX, 2494) +HANDLE_BAT(APINT_TYPE_PREFIX, 2495) +HANDLE_BAT(APINT_TYPE_PREFIX, 2496) +HANDLE_BAT(APINT_TYPE_PREFIX, 2497) +HANDLE_BAT(APINT_TYPE_PREFIX, 2498) +HANDLE_BAT(APINT_TYPE_PREFIX, 2499) +HANDLE_BAT(APINT_TYPE_PREFIX, 2500) +HANDLE_BAT(APINT_TYPE_PREFIX, 2501) +HANDLE_BAT(APINT_TYPE_PREFIX, 2502) +HANDLE_BAT(APINT_TYPE_PREFIX, 2503) +HANDLE_BAT(APINT_TYPE_PREFIX, 2504) +HANDLE_BAT(APINT_TYPE_PREFIX, 2505) +HANDLE_BAT(APINT_TYPE_PREFIX, 2506) +HANDLE_BAT(APINT_TYPE_PREFIX, 2507) +HANDLE_BAT(APINT_TYPE_PREFIX, 2508) +HANDLE_BAT(APINT_TYPE_PREFIX, 2509) +HANDLE_BAT(APINT_TYPE_PREFIX, 2510) +HANDLE_BAT(APINT_TYPE_PREFIX, 2511) +HANDLE_BAT(APINT_TYPE_PREFIX, 2512) +HANDLE_BAT(APINT_TYPE_PREFIX, 2513) +HANDLE_BAT(APINT_TYPE_PREFIX, 2514) +HANDLE_BAT(APINT_TYPE_PREFIX, 2515) +HANDLE_BAT(APINT_TYPE_PREFIX, 2516) +HANDLE_BAT(APINT_TYPE_PREFIX, 2517) +HANDLE_BAT(APINT_TYPE_PREFIX, 2518) +HANDLE_BAT(APINT_TYPE_PREFIX, 2519) +HANDLE_BAT(APINT_TYPE_PREFIX, 2520) +HANDLE_BAT(APINT_TYPE_PREFIX, 2521) +HANDLE_BAT(APINT_TYPE_PREFIX, 2522) +HANDLE_BAT(APINT_TYPE_PREFIX, 2523) +HANDLE_BAT(APINT_TYPE_PREFIX, 2524) +HANDLE_BAT(APINT_TYPE_PREFIX, 2525) +HANDLE_BAT(APINT_TYPE_PREFIX, 2526) +HANDLE_BAT(APINT_TYPE_PREFIX, 2527) +HANDLE_BAT(APINT_TYPE_PREFIX, 2528) +HANDLE_BAT(APINT_TYPE_PREFIX, 2529) +HANDLE_BAT(APINT_TYPE_PREFIX, 2530) +HANDLE_BAT(APINT_TYPE_PREFIX, 2531) +HANDLE_BAT(APINT_TYPE_PREFIX, 2532) +HANDLE_BAT(APINT_TYPE_PREFIX, 2533) +HANDLE_BAT(APINT_TYPE_PREFIX, 2534) +HANDLE_BAT(APINT_TYPE_PREFIX, 2535) +HANDLE_BAT(APINT_TYPE_PREFIX, 2536) +HANDLE_BAT(APINT_TYPE_PREFIX, 2537) +HANDLE_BAT(APINT_TYPE_PREFIX, 2538) +HANDLE_BAT(APINT_TYPE_PREFIX, 2539) +HANDLE_BAT(APINT_TYPE_PREFIX, 2540) +HANDLE_BAT(APINT_TYPE_PREFIX, 2541) +HANDLE_BAT(APINT_TYPE_PREFIX, 2542) +HANDLE_BAT(APINT_TYPE_PREFIX, 2543) +HANDLE_BAT(APINT_TYPE_PREFIX, 2544) +HANDLE_BAT(APINT_TYPE_PREFIX, 2545) +HANDLE_BAT(APINT_TYPE_PREFIX, 2546) +HANDLE_BAT(APINT_TYPE_PREFIX, 2547) +HANDLE_BAT(APINT_TYPE_PREFIX, 2548) +HANDLE_BAT(APINT_TYPE_PREFIX, 2549) +HANDLE_BAT(APINT_TYPE_PREFIX, 2550) +HANDLE_BAT(APINT_TYPE_PREFIX, 2551) +HANDLE_BAT(APINT_TYPE_PREFIX, 2552) +HANDLE_BAT(APINT_TYPE_PREFIX, 2553) +HANDLE_BAT(APINT_TYPE_PREFIX, 2554) +HANDLE_BAT(APINT_TYPE_PREFIX, 2555) +HANDLE_BAT(APINT_TYPE_PREFIX, 2556) +HANDLE_BAT(APINT_TYPE_PREFIX, 2557) +HANDLE_BAT(APINT_TYPE_PREFIX, 2558) +HANDLE_BAT(APINT_TYPE_PREFIX, 2559) +HANDLE_BAT(APINT_TYPE_PREFIX, 2560) +HANDLE_BAT(APINT_TYPE_PREFIX, 2561) +HANDLE_BAT(APINT_TYPE_PREFIX, 2562) +HANDLE_BAT(APINT_TYPE_PREFIX, 2563) +HANDLE_BAT(APINT_TYPE_PREFIX, 2564) +HANDLE_BAT(APINT_TYPE_PREFIX, 2565) +HANDLE_BAT(APINT_TYPE_PREFIX, 2566) +HANDLE_BAT(APINT_TYPE_PREFIX, 2567) +HANDLE_BAT(APINT_TYPE_PREFIX, 2568) +HANDLE_BAT(APINT_TYPE_PREFIX, 2569) +HANDLE_BAT(APINT_TYPE_PREFIX, 2570) +HANDLE_BAT(APINT_TYPE_PREFIX, 2571) +HANDLE_BAT(APINT_TYPE_PREFIX, 2572) +HANDLE_BAT(APINT_TYPE_PREFIX, 2573) +HANDLE_BAT(APINT_TYPE_PREFIX, 2574) +HANDLE_BAT(APINT_TYPE_PREFIX, 2575) +HANDLE_BAT(APINT_TYPE_PREFIX, 2576) +HANDLE_BAT(APINT_TYPE_PREFIX, 2577) +HANDLE_BAT(APINT_TYPE_PREFIX, 2578) +HANDLE_BAT(APINT_TYPE_PREFIX, 2579) +HANDLE_BAT(APINT_TYPE_PREFIX, 2580) +HANDLE_BAT(APINT_TYPE_PREFIX, 2581) +HANDLE_BAT(APINT_TYPE_PREFIX, 2582) +HANDLE_BAT(APINT_TYPE_PREFIX, 2583) +HANDLE_BAT(APINT_TYPE_PREFIX, 2584) +HANDLE_BAT(APINT_TYPE_PREFIX, 2585) +HANDLE_BAT(APINT_TYPE_PREFIX, 2586) +HANDLE_BAT(APINT_TYPE_PREFIX, 2587) +HANDLE_BAT(APINT_TYPE_PREFIX, 2588) +HANDLE_BAT(APINT_TYPE_PREFIX, 2589) +HANDLE_BAT(APINT_TYPE_PREFIX, 2590) +HANDLE_BAT(APINT_TYPE_PREFIX, 2591) +HANDLE_BAT(APINT_TYPE_PREFIX, 2592) +HANDLE_BAT(APINT_TYPE_PREFIX, 2593) +HANDLE_BAT(APINT_TYPE_PREFIX, 2594) +HANDLE_BAT(APINT_TYPE_PREFIX, 2595) +HANDLE_BAT(APINT_TYPE_PREFIX, 2596) +HANDLE_BAT(APINT_TYPE_PREFIX, 2597) +HANDLE_BAT(APINT_TYPE_PREFIX, 2598) +HANDLE_BAT(APINT_TYPE_PREFIX, 2599) +HANDLE_BAT(APINT_TYPE_PREFIX, 2600) +HANDLE_BAT(APINT_TYPE_PREFIX, 2601) +HANDLE_BAT(APINT_TYPE_PREFIX, 2602) +HANDLE_BAT(APINT_TYPE_PREFIX, 2603) +HANDLE_BAT(APINT_TYPE_PREFIX, 2604) +HANDLE_BAT(APINT_TYPE_PREFIX, 2605) +HANDLE_BAT(APINT_TYPE_PREFIX, 2606) +HANDLE_BAT(APINT_TYPE_PREFIX, 2607) +HANDLE_BAT(APINT_TYPE_PREFIX, 2608) +HANDLE_BAT(APINT_TYPE_PREFIX, 2609) +HANDLE_BAT(APINT_TYPE_PREFIX, 2610) +HANDLE_BAT(APINT_TYPE_PREFIX, 2611) +HANDLE_BAT(APINT_TYPE_PREFIX, 2612) +HANDLE_BAT(APINT_TYPE_PREFIX, 2613) +HANDLE_BAT(APINT_TYPE_PREFIX, 2614) +HANDLE_BAT(APINT_TYPE_PREFIX, 2615) +HANDLE_BAT(APINT_TYPE_PREFIX, 2616) +HANDLE_BAT(APINT_TYPE_PREFIX, 2617) +HANDLE_BAT(APINT_TYPE_PREFIX, 2618) +HANDLE_BAT(APINT_TYPE_PREFIX, 2619) +HANDLE_BAT(APINT_TYPE_PREFIX, 2620) +HANDLE_BAT(APINT_TYPE_PREFIX, 2621) +HANDLE_BAT(APINT_TYPE_PREFIX, 2622) +HANDLE_BAT(APINT_TYPE_PREFIX, 2623) +HANDLE_BAT(APINT_TYPE_PREFIX, 2624) +HANDLE_BAT(APINT_TYPE_PREFIX, 2625) +HANDLE_BAT(APINT_TYPE_PREFIX, 2626) +HANDLE_BAT(APINT_TYPE_PREFIX, 2627) +HANDLE_BAT(APINT_TYPE_PREFIX, 2628) +HANDLE_BAT(APINT_TYPE_PREFIX, 2629) +HANDLE_BAT(APINT_TYPE_PREFIX, 2630) +HANDLE_BAT(APINT_TYPE_PREFIX, 2631) +HANDLE_BAT(APINT_TYPE_PREFIX, 2632) +HANDLE_BAT(APINT_TYPE_PREFIX, 2633) +HANDLE_BAT(APINT_TYPE_PREFIX, 2634) +HANDLE_BAT(APINT_TYPE_PREFIX, 2635) +HANDLE_BAT(APINT_TYPE_PREFIX, 2636) +HANDLE_BAT(APINT_TYPE_PREFIX, 2637) +HANDLE_BAT(APINT_TYPE_PREFIX, 2638) +HANDLE_BAT(APINT_TYPE_PREFIX, 2639) +HANDLE_BAT(APINT_TYPE_PREFIX, 2640) +HANDLE_BAT(APINT_TYPE_PREFIX, 2641) +HANDLE_BAT(APINT_TYPE_PREFIX, 2642) +HANDLE_BAT(APINT_TYPE_PREFIX, 2643) +HANDLE_BAT(APINT_TYPE_PREFIX, 2644) +HANDLE_BAT(APINT_TYPE_PREFIX, 2645) +HANDLE_BAT(APINT_TYPE_PREFIX, 2646) +HANDLE_BAT(APINT_TYPE_PREFIX, 2647) +HANDLE_BAT(APINT_TYPE_PREFIX, 2648) +HANDLE_BAT(APINT_TYPE_PREFIX, 2649) +HANDLE_BAT(APINT_TYPE_PREFIX, 2650) +HANDLE_BAT(APINT_TYPE_PREFIX, 2651) +HANDLE_BAT(APINT_TYPE_PREFIX, 2652) +HANDLE_BAT(APINT_TYPE_PREFIX, 2653) +HANDLE_BAT(APINT_TYPE_PREFIX, 2654) +HANDLE_BAT(APINT_TYPE_PREFIX, 2655) +HANDLE_BAT(APINT_TYPE_PREFIX, 2656) +HANDLE_BAT(APINT_TYPE_PREFIX, 2657) +HANDLE_BAT(APINT_TYPE_PREFIX, 2658) +HANDLE_BAT(APINT_TYPE_PREFIX, 2659) +HANDLE_BAT(APINT_TYPE_PREFIX, 2660) +HANDLE_BAT(APINT_TYPE_PREFIX, 2661) +HANDLE_BAT(APINT_TYPE_PREFIX, 2662) +HANDLE_BAT(APINT_TYPE_PREFIX, 2663) +HANDLE_BAT(APINT_TYPE_PREFIX, 2664) +HANDLE_BAT(APINT_TYPE_PREFIX, 2665) +HANDLE_BAT(APINT_TYPE_PREFIX, 2666) +HANDLE_BAT(APINT_TYPE_PREFIX, 2667) +HANDLE_BAT(APINT_TYPE_PREFIX, 2668) +HANDLE_BAT(APINT_TYPE_PREFIX, 2669) +HANDLE_BAT(APINT_TYPE_PREFIX, 2670) +HANDLE_BAT(APINT_TYPE_PREFIX, 2671) +HANDLE_BAT(APINT_TYPE_PREFIX, 2672) +HANDLE_BAT(APINT_TYPE_PREFIX, 2673) +HANDLE_BAT(APINT_TYPE_PREFIX, 2674) +HANDLE_BAT(APINT_TYPE_PREFIX, 2675) +HANDLE_BAT(APINT_TYPE_PREFIX, 2676) +HANDLE_BAT(APINT_TYPE_PREFIX, 2677) +HANDLE_BAT(APINT_TYPE_PREFIX, 2678) +HANDLE_BAT(APINT_TYPE_PREFIX, 2679) +HANDLE_BAT(APINT_TYPE_PREFIX, 2680) +HANDLE_BAT(APINT_TYPE_PREFIX, 2681) +HANDLE_BAT(APINT_TYPE_PREFIX, 2682) +HANDLE_BAT(APINT_TYPE_PREFIX, 2683) +HANDLE_BAT(APINT_TYPE_PREFIX, 2684) +HANDLE_BAT(APINT_TYPE_PREFIX, 2685) +HANDLE_BAT(APINT_TYPE_PREFIX, 2686) +HANDLE_BAT(APINT_TYPE_PREFIX, 2687) +HANDLE_BAT(APINT_TYPE_PREFIX, 2688) +HANDLE_BAT(APINT_TYPE_PREFIX, 2689) +HANDLE_BAT(APINT_TYPE_PREFIX, 2690) +HANDLE_BAT(APINT_TYPE_PREFIX, 2691) +HANDLE_BAT(APINT_TYPE_PREFIX, 2692) +HANDLE_BAT(APINT_TYPE_PREFIX, 2693) +HANDLE_BAT(APINT_TYPE_PREFIX, 2694) +HANDLE_BAT(APINT_TYPE_PREFIX, 2695) +HANDLE_BAT(APINT_TYPE_PREFIX, 2696) +HANDLE_BAT(APINT_TYPE_PREFIX, 2697) +HANDLE_BAT(APINT_TYPE_PREFIX, 2698) +HANDLE_BAT(APINT_TYPE_PREFIX, 2699) +HANDLE_BAT(APINT_TYPE_PREFIX, 2700) +HANDLE_BAT(APINT_TYPE_PREFIX, 2701) +HANDLE_BAT(APINT_TYPE_PREFIX, 2702) +HANDLE_BAT(APINT_TYPE_PREFIX, 2703) +HANDLE_BAT(APINT_TYPE_PREFIX, 2704) +HANDLE_BAT(APINT_TYPE_PREFIX, 2705) +HANDLE_BAT(APINT_TYPE_PREFIX, 2706) +HANDLE_BAT(APINT_TYPE_PREFIX, 2707) +HANDLE_BAT(APINT_TYPE_PREFIX, 2708) +HANDLE_BAT(APINT_TYPE_PREFIX, 2709) +HANDLE_BAT(APINT_TYPE_PREFIX, 2710) +HANDLE_BAT(APINT_TYPE_PREFIX, 2711) +HANDLE_BAT(APINT_TYPE_PREFIX, 2712) +HANDLE_BAT(APINT_TYPE_PREFIX, 2713) +HANDLE_BAT(APINT_TYPE_PREFIX, 2714) +HANDLE_BAT(APINT_TYPE_PREFIX, 2715) +HANDLE_BAT(APINT_TYPE_PREFIX, 2716) +HANDLE_BAT(APINT_TYPE_PREFIX, 2717) +HANDLE_BAT(APINT_TYPE_PREFIX, 2718) +HANDLE_BAT(APINT_TYPE_PREFIX, 2719) +HANDLE_BAT(APINT_TYPE_PREFIX, 2720) +HANDLE_BAT(APINT_TYPE_PREFIX, 2721) +HANDLE_BAT(APINT_TYPE_PREFIX, 2722) +HANDLE_BAT(APINT_TYPE_PREFIX, 2723) +HANDLE_BAT(APINT_TYPE_PREFIX, 2724) +HANDLE_BAT(APINT_TYPE_PREFIX, 2725) +HANDLE_BAT(APINT_TYPE_PREFIX, 2726) +HANDLE_BAT(APINT_TYPE_PREFIX, 2727) +HANDLE_BAT(APINT_TYPE_PREFIX, 2728) +HANDLE_BAT(APINT_TYPE_PREFIX, 2729) +HANDLE_BAT(APINT_TYPE_PREFIX, 2730) +HANDLE_BAT(APINT_TYPE_PREFIX, 2731) +HANDLE_BAT(APINT_TYPE_PREFIX, 2732) +HANDLE_BAT(APINT_TYPE_PREFIX, 2733) +HANDLE_BAT(APINT_TYPE_PREFIX, 2734) +HANDLE_BAT(APINT_TYPE_PREFIX, 2735) +HANDLE_BAT(APINT_TYPE_PREFIX, 2736) +HANDLE_BAT(APINT_TYPE_PREFIX, 2737) +HANDLE_BAT(APINT_TYPE_PREFIX, 2738) +HANDLE_BAT(APINT_TYPE_PREFIX, 2739) +HANDLE_BAT(APINT_TYPE_PREFIX, 2740) +HANDLE_BAT(APINT_TYPE_PREFIX, 2741) +HANDLE_BAT(APINT_TYPE_PREFIX, 2742) +HANDLE_BAT(APINT_TYPE_PREFIX, 2743) +HANDLE_BAT(APINT_TYPE_PREFIX, 2744) +HANDLE_BAT(APINT_TYPE_PREFIX, 2745) +HANDLE_BAT(APINT_TYPE_PREFIX, 2746) +HANDLE_BAT(APINT_TYPE_PREFIX, 2747) +HANDLE_BAT(APINT_TYPE_PREFIX, 2748) +HANDLE_BAT(APINT_TYPE_PREFIX, 2749) +HANDLE_BAT(APINT_TYPE_PREFIX, 2750) +HANDLE_BAT(APINT_TYPE_PREFIX, 2751) +HANDLE_BAT(APINT_TYPE_PREFIX, 2752) +HANDLE_BAT(APINT_TYPE_PREFIX, 2753) +HANDLE_BAT(APINT_TYPE_PREFIX, 2754) +HANDLE_BAT(APINT_TYPE_PREFIX, 2755) +HANDLE_BAT(APINT_TYPE_PREFIX, 2756) +HANDLE_BAT(APINT_TYPE_PREFIX, 2757) +HANDLE_BAT(APINT_TYPE_PREFIX, 2758) +HANDLE_BAT(APINT_TYPE_PREFIX, 2759) +HANDLE_BAT(APINT_TYPE_PREFIX, 2760) +HANDLE_BAT(APINT_TYPE_PREFIX, 2761) +HANDLE_BAT(APINT_TYPE_PREFIX, 2762) +HANDLE_BAT(APINT_TYPE_PREFIX, 2763) +HANDLE_BAT(APINT_TYPE_PREFIX, 2764) +HANDLE_BAT(APINT_TYPE_PREFIX, 2765) +HANDLE_BAT(APINT_TYPE_PREFIX, 2766) +HANDLE_BAT(APINT_TYPE_PREFIX, 2767) +HANDLE_BAT(APINT_TYPE_PREFIX, 2768) +HANDLE_BAT(APINT_TYPE_PREFIX, 2769) +HANDLE_BAT(APINT_TYPE_PREFIX, 2770) +HANDLE_BAT(APINT_TYPE_PREFIX, 2771) +HANDLE_BAT(APINT_TYPE_PREFIX, 2772) +HANDLE_BAT(APINT_TYPE_PREFIX, 2773) +HANDLE_BAT(APINT_TYPE_PREFIX, 2774) +HANDLE_BAT(APINT_TYPE_PREFIX, 2775) +HANDLE_BAT(APINT_TYPE_PREFIX, 2776) +HANDLE_BAT(APINT_TYPE_PREFIX, 2777) +HANDLE_BAT(APINT_TYPE_PREFIX, 2778) +HANDLE_BAT(APINT_TYPE_PREFIX, 2779) +HANDLE_BAT(APINT_TYPE_PREFIX, 2780) +HANDLE_BAT(APINT_TYPE_PREFIX, 2781) +HANDLE_BAT(APINT_TYPE_PREFIX, 2782) +HANDLE_BAT(APINT_TYPE_PREFIX, 2783) +HANDLE_BAT(APINT_TYPE_PREFIX, 2784) +HANDLE_BAT(APINT_TYPE_PREFIX, 2785) +HANDLE_BAT(APINT_TYPE_PREFIX, 2786) +HANDLE_BAT(APINT_TYPE_PREFIX, 2787) +HANDLE_BAT(APINT_TYPE_PREFIX, 2788) +HANDLE_BAT(APINT_TYPE_PREFIX, 2789) +HANDLE_BAT(APINT_TYPE_PREFIX, 2790) +HANDLE_BAT(APINT_TYPE_PREFIX, 2791) +HANDLE_BAT(APINT_TYPE_PREFIX, 2792) +HANDLE_BAT(APINT_TYPE_PREFIX, 2793) +HANDLE_BAT(APINT_TYPE_PREFIX, 2794) +HANDLE_BAT(APINT_TYPE_PREFIX, 2795) +HANDLE_BAT(APINT_TYPE_PREFIX, 2796) +HANDLE_BAT(APINT_TYPE_PREFIX, 2797) +HANDLE_BAT(APINT_TYPE_PREFIX, 2798) +HANDLE_BAT(APINT_TYPE_PREFIX, 2799) +HANDLE_BAT(APINT_TYPE_PREFIX, 2800) +HANDLE_BAT(APINT_TYPE_PREFIX, 2801) +HANDLE_BAT(APINT_TYPE_PREFIX, 2802) +HANDLE_BAT(APINT_TYPE_PREFIX, 2803) +HANDLE_BAT(APINT_TYPE_PREFIX, 2804) +HANDLE_BAT(APINT_TYPE_PREFIX, 2805) +HANDLE_BAT(APINT_TYPE_PREFIX, 2806) +HANDLE_BAT(APINT_TYPE_PREFIX, 2807) +HANDLE_BAT(APINT_TYPE_PREFIX, 2808) +HANDLE_BAT(APINT_TYPE_PREFIX, 2809) +HANDLE_BAT(APINT_TYPE_PREFIX, 2810) +HANDLE_BAT(APINT_TYPE_PREFIX, 2811) +HANDLE_BAT(APINT_TYPE_PREFIX, 2812) +HANDLE_BAT(APINT_TYPE_PREFIX, 2813) +HANDLE_BAT(APINT_TYPE_PREFIX, 2814) +HANDLE_BAT(APINT_TYPE_PREFIX, 2815) +HANDLE_BAT(APINT_TYPE_PREFIX, 2816) +HANDLE_BAT(APINT_TYPE_PREFIX, 2817) +HANDLE_BAT(APINT_TYPE_PREFIX, 2818) +HANDLE_BAT(APINT_TYPE_PREFIX, 2819) +HANDLE_BAT(APINT_TYPE_PREFIX, 2820) +HANDLE_BAT(APINT_TYPE_PREFIX, 2821) +HANDLE_BAT(APINT_TYPE_PREFIX, 2822) +HANDLE_BAT(APINT_TYPE_PREFIX, 2823) +HANDLE_BAT(APINT_TYPE_PREFIX, 2824) +HANDLE_BAT(APINT_TYPE_PREFIX, 2825) +HANDLE_BAT(APINT_TYPE_PREFIX, 2826) +HANDLE_BAT(APINT_TYPE_PREFIX, 2827) +HANDLE_BAT(APINT_TYPE_PREFIX, 2828) +HANDLE_BAT(APINT_TYPE_PREFIX, 2829) +HANDLE_BAT(APINT_TYPE_PREFIX, 2830) +HANDLE_BAT(APINT_TYPE_PREFIX, 2831) +HANDLE_BAT(APINT_TYPE_PREFIX, 2832) +HANDLE_BAT(APINT_TYPE_PREFIX, 2833) +HANDLE_BAT(APINT_TYPE_PREFIX, 2834) +HANDLE_BAT(APINT_TYPE_PREFIX, 2835) +HANDLE_BAT(APINT_TYPE_PREFIX, 2836) +HANDLE_BAT(APINT_TYPE_PREFIX, 2837) +HANDLE_BAT(APINT_TYPE_PREFIX, 2838) +HANDLE_BAT(APINT_TYPE_PREFIX, 2839) +HANDLE_BAT(APINT_TYPE_PREFIX, 2840) +HANDLE_BAT(APINT_TYPE_PREFIX, 2841) +HANDLE_BAT(APINT_TYPE_PREFIX, 2842) +HANDLE_BAT(APINT_TYPE_PREFIX, 2843) +HANDLE_BAT(APINT_TYPE_PREFIX, 2844) +HANDLE_BAT(APINT_TYPE_PREFIX, 2845) +HANDLE_BAT(APINT_TYPE_PREFIX, 2846) +HANDLE_BAT(APINT_TYPE_PREFIX, 2847) +HANDLE_BAT(APINT_TYPE_PREFIX, 2848) +HANDLE_BAT(APINT_TYPE_PREFIX, 2849) +HANDLE_BAT(APINT_TYPE_PREFIX, 2850) +HANDLE_BAT(APINT_TYPE_PREFIX, 2851) +HANDLE_BAT(APINT_TYPE_PREFIX, 2852) +HANDLE_BAT(APINT_TYPE_PREFIX, 2853) +HANDLE_BAT(APINT_TYPE_PREFIX, 2854) +HANDLE_BAT(APINT_TYPE_PREFIX, 2855) +HANDLE_BAT(APINT_TYPE_PREFIX, 2856) +HANDLE_BAT(APINT_TYPE_PREFIX, 2857) +HANDLE_BAT(APINT_TYPE_PREFIX, 2858) +HANDLE_BAT(APINT_TYPE_PREFIX, 2859) +HANDLE_BAT(APINT_TYPE_PREFIX, 2860) +HANDLE_BAT(APINT_TYPE_PREFIX, 2861) +HANDLE_BAT(APINT_TYPE_PREFIX, 2862) +HANDLE_BAT(APINT_TYPE_PREFIX, 2863) +HANDLE_BAT(APINT_TYPE_PREFIX, 2864) +HANDLE_BAT(APINT_TYPE_PREFIX, 2865) +HANDLE_BAT(APINT_TYPE_PREFIX, 2866) +HANDLE_BAT(APINT_TYPE_PREFIX, 2867) +HANDLE_BAT(APINT_TYPE_PREFIX, 2868) +HANDLE_BAT(APINT_TYPE_PREFIX, 2869) +HANDLE_BAT(APINT_TYPE_PREFIX, 2870) +HANDLE_BAT(APINT_TYPE_PREFIX, 2871) +HANDLE_BAT(APINT_TYPE_PREFIX, 2872) +HANDLE_BAT(APINT_TYPE_PREFIX, 2873) +HANDLE_BAT(APINT_TYPE_PREFIX, 2874) +HANDLE_BAT(APINT_TYPE_PREFIX, 2875) +HANDLE_BAT(APINT_TYPE_PREFIX, 2876) +HANDLE_BAT(APINT_TYPE_PREFIX, 2877) +HANDLE_BAT(APINT_TYPE_PREFIX, 2878) +HANDLE_BAT(APINT_TYPE_PREFIX, 2879) +HANDLE_BAT(APINT_TYPE_PREFIX, 2880) +HANDLE_BAT(APINT_TYPE_PREFIX, 2881) +HANDLE_BAT(APINT_TYPE_PREFIX, 2882) +HANDLE_BAT(APINT_TYPE_PREFIX, 2883) +HANDLE_BAT(APINT_TYPE_PREFIX, 2884) +HANDLE_BAT(APINT_TYPE_PREFIX, 2885) +HANDLE_BAT(APINT_TYPE_PREFIX, 2886) +HANDLE_BAT(APINT_TYPE_PREFIX, 2887) +HANDLE_BAT(APINT_TYPE_PREFIX, 2888) +HANDLE_BAT(APINT_TYPE_PREFIX, 2889) +HANDLE_BAT(APINT_TYPE_PREFIX, 2890) +HANDLE_BAT(APINT_TYPE_PREFIX, 2891) +HANDLE_BAT(APINT_TYPE_PREFIX, 2892) +HANDLE_BAT(APINT_TYPE_PREFIX, 2893) +HANDLE_BAT(APINT_TYPE_PREFIX, 2894) +HANDLE_BAT(APINT_TYPE_PREFIX, 2895) +HANDLE_BAT(APINT_TYPE_PREFIX, 2896) +HANDLE_BAT(APINT_TYPE_PREFIX, 2897) +HANDLE_BAT(APINT_TYPE_PREFIX, 2898) +HANDLE_BAT(APINT_TYPE_PREFIX, 2899) +HANDLE_BAT(APINT_TYPE_PREFIX, 2900) +HANDLE_BAT(APINT_TYPE_PREFIX, 2901) +HANDLE_BAT(APINT_TYPE_PREFIX, 2902) +HANDLE_BAT(APINT_TYPE_PREFIX, 2903) +HANDLE_BAT(APINT_TYPE_PREFIX, 2904) +HANDLE_BAT(APINT_TYPE_PREFIX, 2905) +HANDLE_BAT(APINT_TYPE_PREFIX, 2906) +HANDLE_BAT(APINT_TYPE_PREFIX, 2907) +HANDLE_BAT(APINT_TYPE_PREFIX, 2908) +HANDLE_BAT(APINT_TYPE_PREFIX, 2909) +HANDLE_BAT(APINT_TYPE_PREFIX, 2910) +HANDLE_BAT(APINT_TYPE_PREFIX, 2911) +HANDLE_BAT(APINT_TYPE_PREFIX, 2912) +HANDLE_BAT(APINT_TYPE_PREFIX, 2913) +HANDLE_BAT(APINT_TYPE_PREFIX, 2914) +HANDLE_BAT(APINT_TYPE_PREFIX, 2915) +HANDLE_BAT(APINT_TYPE_PREFIX, 2916) +HANDLE_BAT(APINT_TYPE_PREFIX, 2917) +HANDLE_BAT(APINT_TYPE_PREFIX, 2918) +HANDLE_BAT(APINT_TYPE_PREFIX, 2919) +HANDLE_BAT(APINT_TYPE_PREFIX, 2920) +HANDLE_BAT(APINT_TYPE_PREFIX, 2921) +HANDLE_BAT(APINT_TYPE_PREFIX, 2922) +HANDLE_BAT(APINT_TYPE_PREFIX, 2923) +HANDLE_BAT(APINT_TYPE_PREFIX, 2924) +HANDLE_BAT(APINT_TYPE_PREFIX, 2925) +HANDLE_BAT(APINT_TYPE_PREFIX, 2926) +HANDLE_BAT(APINT_TYPE_PREFIX, 2927) +HANDLE_BAT(APINT_TYPE_PREFIX, 2928) +HANDLE_BAT(APINT_TYPE_PREFIX, 2929) +HANDLE_BAT(APINT_TYPE_PREFIX, 2930) +HANDLE_BAT(APINT_TYPE_PREFIX, 2931) +HANDLE_BAT(APINT_TYPE_PREFIX, 2932) +HANDLE_BAT(APINT_TYPE_PREFIX, 2933) +HANDLE_BAT(APINT_TYPE_PREFIX, 2934) +HANDLE_BAT(APINT_TYPE_PREFIX, 2935) +HANDLE_BAT(APINT_TYPE_PREFIX, 2936) +HANDLE_BAT(APINT_TYPE_PREFIX, 2937) +HANDLE_BAT(APINT_TYPE_PREFIX, 2938) +HANDLE_BAT(APINT_TYPE_PREFIX, 2939) +HANDLE_BAT(APINT_TYPE_PREFIX, 2940) +HANDLE_BAT(APINT_TYPE_PREFIX, 2941) +HANDLE_BAT(APINT_TYPE_PREFIX, 2942) +HANDLE_BAT(APINT_TYPE_PREFIX, 2943) +HANDLE_BAT(APINT_TYPE_PREFIX, 2944) +HANDLE_BAT(APINT_TYPE_PREFIX, 2945) +HANDLE_BAT(APINT_TYPE_PREFIX, 2946) +HANDLE_BAT(APINT_TYPE_PREFIX, 2947) +HANDLE_BAT(APINT_TYPE_PREFIX, 2948) +HANDLE_BAT(APINT_TYPE_PREFIX, 2949) +HANDLE_BAT(APINT_TYPE_PREFIX, 2950) +HANDLE_BAT(APINT_TYPE_PREFIX, 2951) +HANDLE_BAT(APINT_TYPE_PREFIX, 2952) +HANDLE_BAT(APINT_TYPE_PREFIX, 2953) +HANDLE_BAT(APINT_TYPE_PREFIX, 2954) +HANDLE_BAT(APINT_TYPE_PREFIX, 2955) +HANDLE_BAT(APINT_TYPE_PREFIX, 2956) +HANDLE_BAT(APINT_TYPE_PREFIX, 2957) +HANDLE_BAT(APINT_TYPE_PREFIX, 2958) +HANDLE_BAT(APINT_TYPE_PREFIX, 2959) +HANDLE_BAT(APINT_TYPE_PREFIX, 2960) +HANDLE_BAT(APINT_TYPE_PREFIX, 2961) +HANDLE_BAT(APINT_TYPE_PREFIX, 2962) +HANDLE_BAT(APINT_TYPE_PREFIX, 2963) +HANDLE_BAT(APINT_TYPE_PREFIX, 2964) +HANDLE_BAT(APINT_TYPE_PREFIX, 2965) +HANDLE_BAT(APINT_TYPE_PREFIX, 2966) +HANDLE_BAT(APINT_TYPE_PREFIX, 2967) +HANDLE_BAT(APINT_TYPE_PREFIX, 2968) +HANDLE_BAT(APINT_TYPE_PREFIX, 2969) +HANDLE_BAT(APINT_TYPE_PREFIX, 2970) +HANDLE_BAT(APINT_TYPE_PREFIX, 2971) +HANDLE_BAT(APINT_TYPE_PREFIX, 2972) +HANDLE_BAT(APINT_TYPE_PREFIX, 2973) +HANDLE_BAT(APINT_TYPE_PREFIX, 2974) +HANDLE_BAT(APINT_TYPE_PREFIX, 2975) +HANDLE_BAT(APINT_TYPE_PREFIX, 2976) +HANDLE_BAT(APINT_TYPE_PREFIX, 2977) +HANDLE_BAT(APINT_TYPE_PREFIX, 2978) +HANDLE_BAT(APINT_TYPE_PREFIX, 2979) +HANDLE_BAT(APINT_TYPE_PREFIX, 2980) +HANDLE_BAT(APINT_TYPE_PREFIX, 2981) +HANDLE_BAT(APINT_TYPE_PREFIX, 2982) +HANDLE_BAT(APINT_TYPE_PREFIX, 2983) +HANDLE_BAT(APINT_TYPE_PREFIX, 2984) +HANDLE_BAT(APINT_TYPE_PREFIX, 2985) +HANDLE_BAT(APINT_TYPE_PREFIX, 2986) +HANDLE_BAT(APINT_TYPE_PREFIX, 2987) +HANDLE_BAT(APINT_TYPE_PREFIX, 2988) +HANDLE_BAT(APINT_TYPE_PREFIX, 2989) +HANDLE_BAT(APINT_TYPE_PREFIX, 2990) +HANDLE_BAT(APINT_TYPE_PREFIX, 2991) +HANDLE_BAT(APINT_TYPE_PREFIX, 2992) +HANDLE_BAT(APINT_TYPE_PREFIX, 2993) +HANDLE_BAT(APINT_TYPE_PREFIX, 2994) +HANDLE_BAT(APINT_TYPE_PREFIX, 2995) +HANDLE_BAT(APINT_TYPE_PREFIX, 2996) +HANDLE_BAT(APINT_TYPE_PREFIX, 2997) +HANDLE_BAT(APINT_TYPE_PREFIX, 2998) +HANDLE_BAT(APINT_TYPE_PREFIX, 2999) +HANDLE_BAT(APINT_TYPE_PREFIX, 3000) +HANDLE_BAT(APINT_TYPE_PREFIX, 3001) +HANDLE_BAT(APINT_TYPE_PREFIX, 3002) +HANDLE_BAT(APINT_TYPE_PREFIX, 3003) +HANDLE_BAT(APINT_TYPE_PREFIX, 3004) +HANDLE_BAT(APINT_TYPE_PREFIX, 3005) +HANDLE_BAT(APINT_TYPE_PREFIX, 3006) +HANDLE_BAT(APINT_TYPE_PREFIX, 3007) +HANDLE_BAT(APINT_TYPE_PREFIX, 3008) +HANDLE_BAT(APINT_TYPE_PREFIX, 3009) +HANDLE_BAT(APINT_TYPE_PREFIX, 3010) +HANDLE_BAT(APINT_TYPE_PREFIX, 3011) +HANDLE_BAT(APINT_TYPE_PREFIX, 3012) +HANDLE_BAT(APINT_TYPE_PREFIX, 3013) +HANDLE_BAT(APINT_TYPE_PREFIX, 3014) +HANDLE_BAT(APINT_TYPE_PREFIX, 3015) +HANDLE_BAT(APINT_TYPE_PREFIX, 3016) +HANDLE_BAT(APINT_TYPE_PREFIX, 3017) +HANDLE_BAT(APINT_TYPE_PREFIX, 3018) +HANDLE_BAT(APINT_TYPE_PREFIX, 3019) +HANDLE_BAT(APINT_TYPE_PREFIX, 3020) +HANDLE_BAT(APINT_TYPE_PREFIX, 3021) +HANDLE_BAT(APINT_TYPE_PREFIX, 3022) +HANDLE_BAT(APINT_TYPE_PREFIX, 3023) +HANDLE_BAT(APINT_TYPE_PREFIX, 3024) +HANDLE_BAT(APINT_TYPE_PREFIX, 3025) +HANDLE_BAT(APINT_TYPE_PREFIX, 3026) +HANDLE_BAT(APINT_TYPE_PREFIX, 3027) +HANDLE_BAT(APINT_TYPE_PREFIX, 3028) +HANDLE_BAT(APINT_TYPE_PREFIX, 3029) +HANDLE_BAT(APINT_TYPE_PREFIX, 3030) +HANDLE_BAT(APINT_TYPE_PREFIX, 3031) +HANDLE_BAT(APINT_TYPE_PREFIX, 3032) +HANDLE_BAT(APINT_TYPE_PREFIX, 3033) +HANDLE_BAT(APINT_TYPE_PREFIX, 3034) +HANDLE_BAT(APINT_TYPE_PREFIX, 3035) +HANDLE_BAT(APINT_TYPE_PREFIX, 3036) +HANDLE_BAT(APINT_TYPE_PREFIX, 3037) +HANDLE_BAT(APINT_TYPE_PREFIX, 3038) +HANDLE_BAT(APINT_TYPE_PREFIX, 3039) +HANDLE_BAT(APINT_TYPE_PREFIX, 3040) +HANDLE_BAT(APINT_TYPE_PREFIX, 3041) +HANDLE_BAT(APINT_TYPE_PREFIX, 3042) +HANDLE_BAT(APINT_TYPE_PREFIX, 3043) +HANDLE_BAT(APINT_TYPE_PREFIX, 3044) +HANDLE_BAT(APINT_TYPE_PREFIX, 3045) +HANDLE_BAT(APINT_TYPE_PREFIX, 3046) +HANDLE_BAT(APINT_TYPE_PREFIX, 3047) +HANDLE_BAT(APINT_TYPE_PREFIX, 3048) +HANDLE_BAT(APINT_TYPE_PREFIX, 3049) +HANDLE_BAT(APINT_TYPE_PREFIX, 3050) +HANDLE_BAT(APINT_TYPE_PREFIX, 3051) +HANDLE_BAT(APINT_TYPE_PREFIX, 3052) +HANDLE_BAT(APINT_TYPE_PREFIX, 3053) +HANDLE_BAT(APINT_TYPE_PREFIX, 3054) +HANDLE_BAT(APINT_TYPE_PREFIX, 3055) +HANDLE_BAT(APINT_TYPE_PREFIX, 3056) +HANDLE_BAT(APINT_TYPE_PREFIX, 3057) +HANDLE_BAT(APINT_TYPE_PREFIX, 3058) +HANDLE_BAT(APINT_TYPE_PREFIX, 3059) +HANDLE_BAT(APINT_TYPE_PREFIX, 3060) +HANDLE_BAT(APINT_TYPE_PREFIX, 3061) +HANDLE_BAT(APINT_TYPE_PREFIX, 3062) +HANDLE_BAT(APINT_TYPE_PREFIX, 3063) +HANDLE_BAT(APINT_TYPE_PREFIX, 3064) +HANDLE_BAT(APINT_TYPE_PREFIX, 3065) +HANDLE_BAT(APINT_TYPE_PREFIX, 3066) +HANDLE_BAT(APINT_TYPE_PREFIX, 3067) +HANDLE_BAT(APINT_TYPE_PREFIX, 3068) +HANDLE_BAT(APINT_TYPE_PREFIX, 3069) +HANDLE_BAT(APINT_TYPE_PREFIX, 3070) +HANDLE_BAT(APINT_TYPE_PREFIX, 3071) +HANDLE_BAT(APINT_TYPE_PREFIX, 3072) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 3 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 3073) +HANDLE_BAT(, 3074) +HANDLE_BAT(, 3075) +HANDLE_BAT(, 3076) +HANDLE_BAT(, 3077) +HANDLE_BAT(, 3078) +HANDLE_BAT(, 3079) +HANDLE_BAT(, 3080) +HANDLE_BAT(, 3081) +HANDLE_BAT(, 3082) +HANDLE_BAT(, 3083) +HANDLE_BAT(, 3084) +HANDLE_BAT(, 3085) +HANDLE_BAT(, 3086) +HANDLE_BAT(, 3087) +HANDLE_BAT(, 3088) +HANDLE_BAT(, 3089) +HANDLE_BAT(, 3090) +HANDLE_BAT(, 3091) +HANDLE_BAT(, 3092) +HANDLE_BAT(, 3093) +HANDLE_BAT(, 3094) +HANDLE_BAT(, 3095) +HANDLE_BAT(, 3096) +HANDLE_BAT(, 3097) +HANDLE_BAT(, 3098) +HANDLE_BAT(, 3099) +HANDLE_BAT(, 3100) +HANDLE_BAT(, 3101) +HANDLE_BAT(, 3102) +HANDLE_BAT(, 3103) +HANDLE_BAT(, 3104) +HANDLE_BAT(, 3105) +HANDLE_BAT(, 3106) +HANDLE_BAT(, 3107) +HANDLE_BAT(, 3108) +HANDLE_BAT(, 3109) +HANDLE_BAT(, 3110) +HANDLE_BAT(, 3111) +HANDLE_BAT(, 3112) +HANDLE_BAT(, 3113) +HANDLE_BAT(, 3114) +HANDLE_BAT(, 3115) +HANDLE_BAT(, 3116) +HANDLE_BAT(, 3117) +HANDLE_BAT(, 3118) +HANDLE_BAT(, 3119) +HANDLE_BAT(, 3120) +HANDLE_BAT(, 3121) +HANDLE_BAT(, 3122) +HANDLE_BAT(, 3123) +HANDLE_BAT(, 3124) +HANDLE_BAT(, 3125) +HANDLE_BAT(, 3126) +HANDLE_BAT(, 3127) +HANDLE_BAT(, 3128) +HANDLE_BAT(, 3129) +HANDLE_BAT(, 3130) +HANDLE_BAT(, 3131) +HANDLE_BAT(, 3132) +HANDLE_BAT(, 3133) +HANDLE_BAT(, 3134) +HANDLE_BAT(, 3135) +HANDLE_BAT(, 3136) +HANDLE_BAT(, 3137) +HANDLE_BAT(, 3138) +HANDLE_BAT(, 3139) +HANDLE_BAT(, 3140) +HANDLE_BAT(, 3141) +HANDLE_BAT(, 3142) +HANDLE_BAT(, 3143) +HANDLE_BAT(, 3144) +HANDLE_BAT(, 3145) +HANDLE_BAT(, 3146) +HANDLE_BAT(, 3147) +HANDLE_BAT(, 3148) +HANDLE_BAT(, 3149) +HANDLE_BAT(, 3150) +HANDLE_BAT(, 3151) +HANDLE_BAT(, 3152) +HANDLE_BAT(, 3153) +HANDLE_BAT(, 3154) +HANDLE_BAT(, 3155) +HANDLE_BAT(, 3156) +HANDLE_BAT(, 3157) +HANDLE_BAT(, 3158) +HANDLE_BAT(, 3159) +HANDLE_BAT(, 3160) +HANDLE_BAT(, 3161) +HANDLE_BAT(, 3162) +HANDLE_BAT(, 3163) +HANDLE_BAT(, 3164) +HANDLE_BAT(, 3165) +HANDLE_BAT(, 3166) +HANDLE_BAT(, 3167) +HANDLE_BAT(, 3168) +HANDLE_BAT(, 3169) +HANDLE_BAT(, 3170) +HANDLE_BAT(, 3171) +HANDLE_BAT(, 3172) +HANDLE_BAT(, 3173) +HANDLE_BAT(, 3174) +HANDLE_BAT(, 3175) +HANDLE_BAT(, 3176) +HANDLE_BAT(, 3177) +HANDLE_BAT(, 3178) +HANDLE_BAT(, 3179) +HANDLE_BAT(, 3180) +HANDLE_BAT(, 3181) +HANDLE_BAT(, 3182) +HANDLE_BAT(, 3183) +HANDLE_BAT(, 3184) +HANDLE_BAT(, 3185) +HANDLE_BAT(, 3186) +HANDLE_BAT(, 3187) +HANDLE_BAT(, 3188) +HANDLE_BAT(, 3189) +HANDLE_BAT(, 3190) +HANDLE_BAT(, 3191) +HANDLE_BAT(, 3192) +HANDLE_BAT(, 3193) +HANDLE_BAT(, 3194) +HANDLE_BAT(, 3195) +HANDLE_BAT(, 3196) +HANDLE_BAT(, 3197) +HANDLE_BAT(, 3198) +HANDLE_BAT(, 3199) +HANDLE_BAT(, 3200) +HANDLE_BAT(, 3201) +HANDLE_BAT(, 3202) +HANDLE_BAT(, 3203) +HANDLE_BAT(, 3204) +HANDLE_BAT(, 3205) +HANDLE_BAT(, 3206) +HANDLE_BAT(, 3207) +HANDLE_BAT(, 3208) +HANDLE_BAT(, 3209) +HANDLE_BAT(, 3210) +HANDLE_BAT(, 3211) +HANDLE_BAT(, 3212) +HANDLE_BAT(, 3213) +HANDLE_BAT(, 3214) +HANDLE_BAT(, 3215) +HANDLE_BAT(, 3216) +HANDLE_BAT(, 3217) +HANDLE_BAT(, 3218) +HANDLE_BAT(, 3219) +HANDLE_BAT(, 3220) +HANDLE_BAT(, 3221) +HANDLE_BAT(, 3222) +HANDLE_BAT(, 3223) +HANDLE_BAT(, 3224) +HANDLE_BAT(, 3225) +HANDLE_BAT(, 3226) +HANDLE_BAT(, 3227) +HANDLE_BAT(, 3228) +HANDLE_BAT(, 3229) +HANDLE_BAT(, 3230) +HANDLE_BAT(, 3231) +HANDLE_BAT(, 3232) +HANDLE_BAT(, 3233) +HANDLE_BAT(, 3234) +HANDLE_BAT(, 3235) +HANDLE_BAT(, 3236) +HANDLE_BAT(, 3237) +HANDLE_BAT(, 3238) +HANDLE_BAT(, 3239) +HANDLE_BAT(, 3240) +HANDLE_BAT(, 3241) +HANDLE_BAT(, 3242) +HANDLE_BAT(, 3243) +HANDLE_BAT(, 3244) +HANDLE_BAT(, 3245) +HANDLE_BAT(, 3246) +HANDLE_BAT(, 3247) +HANDLE_BAT(, 3248) +HANDLE_BAT(, 3249) +HANDLE_BAT(, 3250) +HANDLE_BAT(, 3251) +HANDLE_BAT(, 3252) +HANDLE_BAT(, 3253) +HANDLE_BAT(, 3254) +HANDLE_BAT(, 3255) +HANDLE_BAT(, 3256) +HANDLE_BAT(, 3257) +HANDLE_BAT(, 3258) +HANDLE_BAT(, 3259) +HANDLE_BAT(, 3260) +HANDLE_BAT(, 3261) +HANDLE_BAT(, 3262) +HANDLE_BAT(, 3263) +HANDLE_BAT(, 3264) +HANDLE_BAT(, 3265) +HANDLE_BAT(, 3266) +HANDLE_BAT(, 3267) +HANDLE_BAT(, 3268) +HANDLE_BAT(, 3269) +HANDLE_BAT(, 3270) +HANDLE_BAT(, 3271) +HANDLE_BAT(, 3272) +HANDLE_BAT(, 3273) +HANDLE_BAT(, 3274) +HANDLE_BAT(, 3275) +HANDLE_BAT(, 3276) +HANDLE_BAT(, 3277) +HANDLE_BAT(, 3278) +HANDLE_BAT(, 3279) +HANDLE_BAT(, 3280) +HANDLE_BAT(, 3281) +HANDLE_BAT(, 3282) +HANDLE_BAT(, 3283) +HANDLE_BAT(, 3284) +HANDLE_BAT(, 3285) +HANDLE_BAT(, 3286) +HANDLE_BAT(, 3287) +HANDLE_BAT(, 3288) +HANDLE_BAT(, 3289) +HANDLE_BAT(, 3290) +HANDLE_BAT(, 3291) +HANDLE_BAT(, 3292) +HANDLE_BAT(, 3293) +HANDLE_BAT(, 3294) +HANDLE_BAT(, 3295) +HANDLE_BAT(, 3296) +HANDLE_BAT(, 3297) +HANDLE_BAT(, 3298) +HANDLE_BAT(, 3299) +HANDLE_BAT(, 3300) +HANDLE_BAT(, 3301) +HANDLE_BAT(, 3302) +HANDLE_BAT(, 3303) +HANDLE_BAT(, 3304) +HANDLE_BAT(, 3305) +HANDLE_BAT(, 3306) +HANDLE_BAT(, 3307) +HANDLE_BAT(, 3308) +HANDLE_BAT(, 3309) +HANDLE_BAT(, 3310) +HANDLE_BAT(, 3311) +HANDLE_BAT(, 3312) +HANDLE_BAT(, 3313) +HANDLE_BAT(, 3314) +HANDLE_BAT(, 3315) +HANDLE_BAT(, 3316) +HANDLE_BAT(, 3317) +HANDLE_BAT(, 3318) +HANDLE_BAT(, 3319) +HANDLE_BAT(, 3320) +HANDLE_BAT(, 3321) +HANDLE_BAT(, 3322) +HANDLE_BAT(, 3323) +HANDLE_BAT(, 3324) +HANDLE_BAT(, 3325) +HANDLE_BAT(, 3326) +HANDLE_BAT(, 3327) +HANDLE_BAT(, 3328) +HANDLE_BAT(, 3329) +HANDLE_BAT(, 3330) +HANDLE_BAT(, 3331) +HANDLE_BAT(, 3332) +HANDLE_BAT(, 3333) +HANDLE_BAT(, 3334) +HANDLE_BAT(, 3335) +HANDLE_BAT(, 3336) +HANDLE_BAT(, 3337) +HANDLE_BAT(, 3338) +HANDLE_BAT(, 3339) +HANDLE_BAT(, 3340) +HANDLE_BAT(, 3341) +HANDLE_BAT(, 3342) +HANDLE_BAT(, 3343) +HANDLE_BAT(, 3344) +HANDLE_BAT(, 3345) +HANDLE_BAT(, 3346) +HANDLE_BAT(, 3347) +HANDLE_BAT(, 3348) +HANDLE_BAT(, 3349) +HANDLE_BAT(, 3350) +HANDLE_BAT(, 3351) +HANDLE_BAT(, 3352) +HANDLE_BAT(, 3353) +HANDLE_BAT(, 3354) +HANDLE_BAT(, 3355) +HANDLE_BAT(, 3356) +HANDLE_BAT(, 3357) +HANDLE_BAT(, 3358) +HANDLE_BAT(, 3359) +HANDLE_BAT(, 3360) +HANDLE_BAT(, 3361) +HANDLE_BAT(, 3362) +HANDLE_BAT(, 3363) +HANDLE_BAT(, 3364) +HANDLE_BAT(, 3365) +HANDLE_BAT(, 3366) +HANDLE_BAT(, 3367) +HANDLE_BAT(, 3368) +HANDLE_BAT(, 3369) +HANDLE_BAT(, 3370) +HANDLE_BAT(, 3371) +HANDLE_BAT(, 3372) +HANDLE_BAT(, 3373) +HANDLE_BAT(, 3374) +HANDLE_BAT(, 3375) +HANDLE_BAT(, 3376) +HANDLE_BAT(, 3377) +HANDLE_BAT(, 3378) +HANDLE_BAT(, 3379) +HANDLE_BAT(, 3380) +HANDLE_BAT(, 3381) +HANDLE_BAT(, 3382) +HANDLE_BAT(, 3383) +HANDLE_BAT(, 3384) +HANDLE_BAT(, 3385) +HANDLE_BAT(, 3386) +HANDLE_BAT(, 3387) +HANDLE_BAT(, 3388) +HANDLE_BAT(, 3389) +HANDLE_BAT(, 3390) +HANDLE_BAT(, 3391) +HANDLE_BAT(, 3392) +HANDLE_BAT(, 3393) +HANDLE_BAT(, 3394) +HANDLE_BAT(, 3395) +HANDLE_BAT(, 3396) +HANDLE_BAT(, 3397) +HANDLE_BAT(, 3398) +HANDLE_BAT(, 3399) +HANDLE_BAT(, 3400) +HANDLE_BAT(, 3401) +HANDLE_BAT(, 3402) +HANDLE_BAT(, 3403) +HANDLE_BAT(, 3404) +HANDLE_BAT(, 3405) +HANDLE_BAT(, 3406) +HANDLE_BAT(, 3407) +HANDLE_BAT(, 3408) +HANDLE_BAT(, 3409) +HANDLE_BAT(, 3410) +HANDLE_BAT(, 3411) +HANDLE_BAT(, 3412) +HANDLE_BAT(, 3413) +HANDLE_BAT(, 3414) +HANDLE_BAT(, 3415) +HANDLE_BAT(, 3416) +HANDLE_BAT(, 3417) +HANDLE_BAT(, 3418) +HANDLE_BAT(, 3419) +HANDLE_BAT(, 3420) +HANDLE_BAT(, 3421) +HANDLE_BAT(, 3422) +HANDLE_BAT(, 3423) +HANDLE_BAT(, 3424) +HANDLE_BAT(, 3425) +HANDLE_BAT(, 3426) +HANDLE_BAT(, 3427) +HANDLE_BAT(, 3428) +HANDLE_BAT(, 3429) +HANDLE_BAT(, 3430) +HANDLE_BAT(, 3431) +HANDLE_BAT(, 3432) +HANDLE_BAT(, 3433) +HANDLE_BAT(, 3434) +HANDLE_BAT(, 3435) +HANDLE_BAT(, 3436) +HANDLE_BAT(, 3437) +HANDLE_BAT(, 3438) +HANDLE_BAT(, 3439) +HANDLE_BAT(, 3440) +HANDLE_BAT(, 3441) +HANDLE_BAT(, 3442) +HANDLE_BAT(, 3443) +HANDLE_BAT(, 3444) +HANDLE_BAT(, 3445) +HANDLE_BAT(, 3446) +HANDLE_BAT(, 3447) +HANDLE_BAT(, 3448) +HANDLE_BAT(, 3449) +HANDLE_BAT(, 3450) +HANDLE_BAT(, 3451) +HANDLE_BAT(, 3452) +HANDLE_BAT(, 3453) +HANDLE_BAT(, 3454) +HANDLE_BAT(, 3455) +HANDLE_BAT(, 3456) +HANDLE_BAT(, 3457) +HANDLE_BAT(, 3458) +HANDLE_BAT(, 3459) +HANDLE_BAT(, 3460) +HANDLE_BAT(, 3461) +HANDLE_BAT(, 3462) +HANDLE_BAT(, 3463) +HANDLE_BAT(, 3464) +HANDLE_BAT(, 3465) +HANDLE_BAT(, 3466) +HANDLE_BAT(, 3467) +HANDLE_BAT(, 3468) +HANDLE_BAT(, 3469) +HANDLE_BAT(, 3470) +HANDLE_BAT(, 3471) +HANDLE_BAT(, 3472) +HANDLE_BAT(, 3473) +HANDLE_BAT(, 3474) +HANDLE_BAT(, 3475) +HANDLE_BAT(, 3476) +HANDLE_BAT(, 3477) +HANDLE_BAT(, 3478) +HANDLE_BAT(, 3479) +HANDLE_BAT(, 3480) +HANDLE_BAT(, 3481) +HANDLE_BAT(, 3482) +HANDLE_BAT(, 3483) +HANDLE_BAT(, 3484) +HANDLE_BAT(, 3485) +HANDLE_BAT(, 3486) +HANDLE_BAT(, 3487) +HANDLE_BAT(, 3488) +HANDLE_BAT(, 3489) +HANDLE_BAT(, 3490) +HANDLE_BAT(, 3491) +HANDLE_BAT(, 3492) +HANDLE_BAT(, 3493) +HANDLE_BAT(, 3494) +HANDLE_BAT(, 3495) +HANDLE_BAT(, 3496) +HANDLE_BAT(, 3497) +HANDLE_BAT(, 3498) +HANDLE_BAT(, 3499) +HANDLE_BAT(, 3500) +HANDLE_BAT(, 3501) +HANDLE_BAT(, 3502) +HANDLE_BAT(, 3503) +HANDLE_BAT(, 3504) +HANDLE_BAT(, 3505) +HANDLE_BAT(, 3506) +HANDLE_BAT(, 3507) +HANDLE_BAT(, 3508) +HANDLE_BAT(, 3509) +HANDLE_BAT(, 3510) +HANDLE_BAT(, 3511) +HANDLE_BAT(, 3512) +HANDLE_BAT(, 3513) +HANDLE_BAT(, 3514) +HANDLE_BAT(, 3515) +HANDLE_BAT(, 3516) +HANDLE_BAT(, 3517) +HANDLE_BAT(, 3518) +HANDLE_BAT(, 3519) +HANDLE_BAT(, 3520) +HANDLE_BAT(, 3521) +HANDLE_BAT(, 3522) +HANDLE_BAT(, 3523) +HANDLE_BAT(, 3524) +HANDLE_BAT(, 3525) +HANDLE_BAT(, 3526) +HANDLE_BAT(, 3527) +HANDLE_BAT(, 3528) +HANDLE_BAT(, 3529) +HANDLE_BAT(, 3530) +HANDLE_BAT(, 3531) +HANDLE_BAT(, 3532) +HANDLE_BAT(, 3533) +HANDLE_BAT(, 3534) +HANDLE_BAT(, 3535) +HANDLE_BAT(, 3536) +HANDLE_BAT(, 3537) +HANDLE_BAT(, 3538) +HANDLE_BAT(, 3539) +HANDLE_BAT(, 3540) +HANDLE_BAT(, 3541) +HANDLE_BAT(, 3542) +HANDLE_BAT(, 3543) +HANDLE_BAT(, 3544) +HANDLE_BAT(, 3545) +HANDLE_BAT(, 3546) +HANDLE_BAT(, 3547) +HANDLE_BAT(, 3548) +HANDLE_BAT(, 3549) +HANDLE_BAT(, 3550) +HANDLE_BAT(, 3551) +HANDLE_BAT(, 3552) +HANDLE_BAT(, 3553) +HANDLE_BAT(, 3554) +HANDLE_BAT(, 3555) +HANDLE_BAT(, 3556) +HANDLE_BAT(, 3557) +HANDLE_BAT(, 3558) +HANDLE_BAT(, 3559) +HANDLE_BAT(, 3560) +HANDLE_BAT(, 3561) +HANDLE_BAT(, 3562) +HANDLE_BAT(, 3563) +HANDLE_BAT(, 3564) +HANDLE_BAT(, 3565) +HANDLE_BAT(, 3566) +HANDLE_BAT(, 3567) +HANDLE_BAT(, 3568) +HANDLE_BAT(, 3569) +HANDLE_BAT(, 3570) +HANDLE_BAT(, 3571) +HANDLE_BAT(, 3572) +HANDLE_BAT(, 3573) +HANDLE_BAT(, 3574) +HANDLE_BAT(, 3575) +HANDLE_BAT(, 3576) +HANDLE_BAT(, 3577) +HANDLE_BAT(, 3578) +HANDLE_BAT(, 3579) +HANDLE_BAT(, 3580) +HANDLE_BAT(, 3581) +HANDLE_BAT(, 3582) +HANDLE_BAT(, 3583) +HANDLE_BAT(, 3584) +HANDLE_BAT(, 3585) +HANDLE_BAT(, 3586) +HANDLE_BAT(, 3587) +HANDLE_BAT(, 3588) +HANDLE_BAT(, 3589) +HANDLE_BAT(, 3590) +HANDLE_BAT(, 3591) +HANDLE_BAT(, 3592) +HANDLE_BAT(, 3593) +HANDLE_BAT(, 3594) +HANDLE_BAT(, 3595) +HANDLE_BAT(, 3596) +HANDLE_BAT(, 3597) +HANDLE_BAT(, 3598) +HANDLE_BAT(, 3599) +HANDLE_BAT(, 3600) +HANDLE_BAT(, 3601) +HANDLE_BAT(, 3602) +HANDLE_BAT(, 3603) +HANDLE_BAT(, 3604) +HANDLE_BAT(, 3605) +HANDLE_BAT(, 3606) +HANDLE_BAT(, 3607) +HANDLE_BAT(, 3608) +HANDLE_BAT(, 3609) +HANDLE_BAT(, 3610) +HANDLE_BAT(, 3611) +HANDLE_BAT(, 3612) +HANDLE_BAT(, 3613) +HANDLE_BAT(, 3614) +HANDLE_BAT(, 3615) +HANDLE_BAT(, 3616) +HANDLE_BAT(, 3617) +HANDLE_BAT(, 3618) +HANDLE_BAT(, 3619) +HANDLE_BAT(, 3620) +HANDLE_BAT(, 3621) +HANDLE_BAT(, 3622) +HANDLE_BAT(, 3623) +HANDLE_BAT(, 3624) +HANDLE_BAT(, 3625) +HANDLE_BAT(, 3626) +HANDLE_BAT(, 3627) +HANDLE_BAT(, 3628) +HANDLE_BAT(, 3629) +HANDLE_BAT(, 3630) +HANDLE_BAT(, 3631) +HANDLE_BAT(, 3632) +HANDLE_BAT(, 3633) +HANDLE_BAT(, 3634) +HANDLE_BAT(, 3635) +HANDLE_BAT(, 3636) +HANDLE_BAT(, 3637) +HANDLE_BAT(, 3638) +HANDLE_BAT(, 3639) +HANDLE_BAT(, 3640) +HANDLE_BAT(, 3641) +HANDLE_BAT(, 3642) +HANDLE_BAT(, 3643) +HANDLE_BAT(, 3644) +HANDLE_BAT(, 3645) +HANDLE_BAT(, 3646) +HANDLE_BAT(, 3647) +HANDLE_BAT(, 3648) +HANDLE_BAT(, 3649) +HANDLE_BAT(, 3650) +HANDLE_BAT(, 3651) +HANDLE_BAT(, 3652) +HANDLE_BAT(, 3653) +HANDLE_BAT(, 3654) +HANDLE_BAT(, 3655) +HANDLE_BAT(, 3656) +HANDLE_BAT(, 3657) +HANDLE_BAT(, 3658) +HANDLE_BAT(, 3659) +HANDLE_BAT(, 3660) +HANDLE_BAT(, 3661) +HANDLE_BAT(, 3662) +HANDLE_BAT(, 3663) +HANDLE_BAT(, 3664) +HANDLE_BAT(, 3665) +HANDLE_BAT(, 3666) +HANDLE_BAT(, 3667) +HANDLE_BAT(, 3668) +HANDLE_BAT(, 3669) +HANDLE_BAT(, 3670) +HANDLE_BAT(, 3671) +HANDLE_BAT(, 3672) +HANDLE_BAT(, 3673) +HANDLE_BAT(, 3674) +HANDLE_BAT(, 3675) +HANDLE_BAT(, 3676) +HANDLE_BAT(, 3677) +HANDLE_BAT(, 3678) +HANDLE_BAT(, 3679) +HANDLE_BAT(, 3680) +HANDLE_BAT(, 3681) +HANDLE_BAT(, 3682) +HANDLE_BAT(, 3683) +HANDLE_BAT(, 3684) +HANDLE_BAT(, 3685) +HANDLE_BAT(, 3686) +HANDLE_BAT(, 3687) +HANDLE_BAT(, 3688) +HANDLE_BAT(, 3689) +HANDLE_BAT(, 3690) +HANDLE_BAT(, 3691) +HANDLE_BAT(, 3692) +HANDLE_BAT(, 3693) +HANDLE_BAT(, 3694) +HANDLE_BAT(, 3695) +HANDLE_BAT(, 3696) +HANDLE_BAT(, 3697) +HANDLE_BAT(, 3698) +HANDLE_BAT(, 3699) +HANDLE_BAT(, 3700) +HANDLE_BAT(, 3701) +HANDLE_BAT(, 3702) +HANDLE_BAT(, 3703) +HANDLE_BAT(, 3704) +HANDLE_BAT(, 3705) +HANDLE_BAT(, 3706) +HANDLE_BAT(, 3707) +HANDLE_BAT(, 3708) +HANDLE_BAT(, 3709) +HANDLE_BAT(, 3710) +HANDLE_BAT(, 3711) +HANDLE_BAT(, 3712) +HANDLE_BAT(, 3713) +HANDLE_BAT(, 3714) +HANDLE_BAT(, 3715) +HANDLE_BAT(, 3716) +HANDLE_BAT(, 3717) +HANDLE_BAT(, 3718) +HANDLE_BAT(, 3719) +HANDLE_BAT(, 3720) +HANDLE_BAT(, 3721) +HANDLE_BAT(, 3722) +HANDLE_BAT(, 3723) +HANDLE_BAT(, 3724) +HANDLE_BAT(, 3725) +HANDLE_BAT(, 3726) +HANDLE_BAT(, 3727) +HANDLE_BAT(, 3728) +HANDLE_BAT(, 3729) +HANDLE_BAT(, 3730) +HANDLE_BAT(, 3731) +HANDLE_BAT(, 3732) +HANDLE_BAT(, 3733) +HANDLE_BAT(, 3734) +HANDLE_BAT(, 3735) +HANDLE_BAT(, 3736) +HANDLE_BAT(, 3737) +HANDLE_BAT(, 3738) +HANDLE_BAT(, 3739) +HANDLE_BAT(, 3740) +HANDLE_BAT(, 3741) +HANDLE_BAT(, 3742) +HANDLE_BAT(, 3743) +HANDLE_BAT(, 3744) +HANDLE_BAT(, 3745) +HANDLE_BAT(, 3746) +HANDLE_BAT(, 3747) +HANDLE_BAT(, 3748) +HANDLE_BAT(, 3749) +HANDLE_BAT(, 3750) +HANDLE_BAT(, 3751) +HANDLE_BAT(, 3752) +HANDLE_BAT(, 3753) +HANDLE_BAT(, 3754) +HANDLE_BAT(, 3755) +HANDLE_BAT(, 3756) +HANDLE_BAT(, 3757) +HANDLE_BAT(, 3758) +HANDLE_BAT(, 3759) +HANDLE_BAT(, 3760) +HANDLE_BAT(, 3761) +HANDLE_BAT(, 3762) +HANDLE_BAT(, 3763) +HANDLE_BAT(, 3764) +HANDLE_BAT(, 3765) +HANDLE_BAT(, 3766) +HANDLE_BAT(, 3767) +HANDLE_BAT(, 3768) +HANDLE_BAT(, 3769) +HANDLE_BAT(, 3770) +HANDLE_BAT(, 3771) +HANDLE_BAT(, 3772) +HANDLE_BAT(, 3773) +HANDLE_BAT(, 3774) +HANDLE_BAT(, 3775) +HANDLE_BAT(, 3776) +HANDLE_BAT(, 3777) +HANDLE_BAT(, 3778) +HANDLE_BAT(, 3779) +HANDLE_BAT(, 3780) +HANDLE_BAT(, 3781) +HANDLE_BAT(, 3782) +HANDLE_BAT(, 3783) +HANDLE_BAT(, 3784) +HANDLE_BAT(, 3785) +HANDLE_BAT(, 3786) +HANDLE_BAT(, 3787) +HANDLE_BAT(, 3788) +HANDLE_BAT(, 3789) +HANDLE_BAT(, 3790) +HANDLE_BAT(, 3791) +HANDLE_BAT(, 3792) +HANDLE_BAT(, 3793) +HANDLE_BAT(, 3794) +HANDLE_BAT(, 3795) +HANDLE_BAT(, 3796) +HANDLE_BAT(, 3797) +HANDLE_BAT(, 3798) +HANDLE_BAT(, 3799) +HANDLE_BAT(, 3800) +HANDLE_BAT(, 3801) +HANDLE_BAT(, 3802) +HANDLE_BAT(, 3803) +HANDLE_BAT(, 3804) +HANDLE_BAT(, 3805) +HANDLE_BAT(, 3806) +HANDLE_BAT(, 3807) +HANDLE_BAT(, 3808) +HANDLE_BAT(, 3809) +HANDLE_BAT(, 3810) +HANDLE_BAT(, 3811) +HANDLE_BAT(, 3812) +HANDLE_BAT(, 3813) +HANDLE_BAT(, 3814) +HANDLE_BAT(, 3815) +HANDLE_BAT(, 3816) +HANDLE_BAT(, 3817) +HANDLE_BAT(, 3818) +HANDLE_BAT(, 3819) +HANDLE_BAT(, 3820) +HANDLE_BAT(, 3821) +HANDLE_BAT(, 3822) +HANDLE_BAT(, 3823) +HANDLE_BAT(, 3824) +HANDLE_BAT(, 3825) +HANDLE_BAT(, 3826) +HANDLE_BAT(, 3827) +HANDLE_BAT(, 3828) +HANDLE_BAT(, 3829) +HANDLE_BAT(, 3830) +HANDLE_BAT(, 3831) +HANDLE_BAT(, 3832) +HANDLE_BAT(, 3833) +HANDLE_BAT(, 3834) +HANDLE_BAT(, 3835) +HANDLE_BAT(, 3836) +HANDLE_BAT(, 3837) +HANDLE_BAT(, 3838) +HANDLE_BAT(, 3839) +HANDLE_BAT(, 3840) +HANDLE_BAT(, 3841) +HANDLE_BAT(, 3842) +HANDLE_BAT(, 3843) +HANDLE_BAT(, 3844) +HANDLE_BAT(, 3845) +HANDLE_BAT(, 3846) +HANDLE_BAT(, 3847) +HANDLE_BAT(, 3848) +HANDLE_BAT(, 3849) +HANDLE_BAT(, 3850) +HANDLE_BAT(, 3851) +HANDLE_BAT(, 3852) +HANDLE_BAT(, 3853) +HANDLE_BAT(, 3854) +HANDLE_BAT(, 3855) +HANDLE_BAT(, 3856) +HANDLE_BAT(, 3857) +HANDLE_BAT(, 3858) +HANDLE_BAT(, 3859) +HANDLE_BAT(, 3860) +HANDLE_BAT(, 3861) +HANDLE_BAT(, 3862) +HANDLE_BAT(, 3863) +HANDLE_BAT(, 3864) +HANDLE_BAT(, 3865) +HANDLE_BAT(, 3866) +HANDLE_BAT(, 3867) +HANDLE_BAT(, 3868) +HANDLE_BAT(, 3869) +HANDLE_BAT(, 3870) +HANDLE_BAT(, 3871) +HANDLE_BAT(, 3872) +HANDLE_BAT(, 3873) +HANDLE_BAT(, 3874) +HANDLE_BAT(, 3875) +HANDLE_BAT(, 3876) +HANDLE_BAT(, 3877) +HANDLE_BAT(, 3878) +HANDLE_BAT(, 3879) +HANDLE_BAT(, 3880) +HANDLE_BAT(, 3881) +HANDLE_BAT(, 3882) +HANDLE_BAT(, 3883) +HANDLE_BAT(, 3884) +HANDLE_BAT(, 3885) +HANDLE_BAT(, 3886) +HANDLE_BAT(, 3887) +HANDLE_BAT(, 3888) +HANDLE_BAT(, 3889) +HANDLE_BAT(, 3890) +HANDLE_BAT(, 3891) +HANDLE_BAT(, 3892) +HANDLE_BAT(, 3893) +HANDLE_BAT(, 3894) +HANDLE_BAT(, 3895) +HANDLE_BAT(, 3896) +HANDLE_BAT(, 3897) +HANDLE_BAT(, 3898) +HANDLE_BAT(, 3899) +HANDLE_BAT(, 3900) +HANDLE_BAT(, 3901) +HANDLE_BAT(, 3902) +HANDLE_BAT(, 3903) +HANDLE_BAT(, 3904) +HANDLE_BAT(, 3905) +HANDLE_BAT(, 3906) +HANDLE_BAT(, 3907) +HANDLE_BAT(, 3908) +HANDLE_BAT(, 3909) +HANDLE_BAT(, 3910) +HANDLE_BAT(, 3911) +HANDLE_BAT(, 3912) +HANDLE_BAT(, 3913) +HANDLE_BAT(, 3914) +HANDLE_BAT(, 3915) +HANDLE_BAT(, 3916) +HANDLE_BAT(, 3917) +HANDLE_BAT(, 3918) +HANDLE_BAT(, 3919) +HANDLE_BAT(, 3920) +HANDLE_BAT(, 3921) +HANDLE_BAT(, 3922) +HANDLE_BAT(, 3923) +HANDLE_BAT(, 3924) +HANDLE_BAT(, 3925) +HANDLE_BAT(, 3926) +HANDLE_BAT(, 3927) +HANDLE_BAT(, 3928) +HANDLE_BAT(, 3929) +HANDLE_BAT(, 3930) +HANDLE_BAT(, 3931) +HANDLE_BAT(, 3932) +HANDLE_BAT(, 3933) +HANDLE_BAT(, 3934) +HANDLE_BAT(, 3935) +HANDLE_BAT(, 3936) +HANDLE_BAT(, 3937) +HANDLE_BAT(, 3938) +HANDLE_BAT(, 3939) +HANDLE_BAT(, 3940) +HANDLE_BAT(, 3941) +HANDLE_BAT(, 3942) +HANDLE_BAT(, 3943) +HANDLE_BAT(, 3944) +HANDLE_BAT(, 3945) +HANDLE_BAT(, 3946) +HANDLE_BAT(, 3947) +HANDLE_BAT(, 3948) +HANDLE_BAT(, 3949) +HANDLE_BAT(, 3950) +HANDLE_BAT(, 3951) +HANDLE_BAT(, 3952) +HANDLE_BAT(, 3953) +HANDLE_BAT(, 3954) +HANDLE_BAT(, 3955) +HANDLE_BAT(, 3956) +HANDLE_BAT(, 3957) +HANDLE_BAT(, 3958) +HANDLE_BAT(, 3959) +HANDLE_BAT(, 3960) +HANDLE_BAT(, 3961) +HANDLE_BAT(, 3962) +HANDLE_BAT(, 3963) +HANDLE_BAT(, 3964) +HANDLE_BAT(, 3965) +HANDLE_BAT(, 3966) +HANDLE_BAT(, 3967) +HANDLE_BAT(, 3968) +HANDLE_BAT(, 3969) +HANDLE_BAT(, 3970) +HANDLE_BAT(, 3971) +HANDLE_BAT(, 3972) +HANDLE_BAT(, 3973) +HANDLE_BAT(, 3974) +HANDLE_BAT(, 3975) +HANDLE_BAT(, 3976) +HANDLE_BAT(, 3977) +HANDLE_BAT(, 3978) +HANDLE_BAT(, 3979) +HANDLE_BAT(, 3980) +HANDLE_BAT(, 3981) +HANDLE_BAT(, 3982) +HANDLE_BAT(, 3983) +HANDLE_BAT(, 3984) +HANDLE_BAT(, 3985) +HANDLE_BAT(, 3986) +HANDLE_BAT(, 3987) +HANDLE_BAT(, 3988) +HANDLE_BAT(, 3989) +HANDLE_BAT(, 3990) +HANDLE_BAT(, 3991) +HANDLE_BAT(, 3992) +HANDLE_BAT(, 3993) +HANDLE_BAT(, 3994) +HANDLE_BAT(, 3995) +HANDLE_BAT(, 3996) +HANDLE_BAT(, 3997) +HANDLE_BAT(, 3998) +HANDLE_BAT(, 3999) +HANDLE_BAT(, 4000) +HANDLE_BAT(, 4001) +HANDLE_BAT(, 4002) +HANDLE_BAT(, 4003) +HANDLE_BAT(, 4004) +HANDLE_BAT(, 4005) +HANDLE_BAT(, 4006) +HANDLE_BAT(, 4007) +HANDLE_BAT(, 4008) +HANDLE_BAT(, 4009) +HANDLE_BAT(, 4010) +HANDLE_BAT(, 4011) +HANDLE_BAT(, 4012) +HANDLE_BAT(, 4013) +HANDLE_BAT(, 4014) +HANDLE_BAT(, 4015) +HANDLE_BAT(, 4016) +HANDLE_BAT(, 4017) +HANDLE_BAT(, 4018) +HANDLE_BAT(, 4019) +HANDLE_BAT(, 4020) +HANDLE_BAT(, 4021) +HANDLE_BAT(, 4022) +HANDLE_BAT(, 4023) +HANDLE_BAT(, 4024) +HANDLE_BAT(, 4025) +HANDLE_BAT(, 4026) +HANDLE_BAT(, 4027) +HANDLE_BAT(, 4028) +HANDLE_BAT(, 4029) +HANDLE_BAT(, 4030) +HANDLE_BAT(, 4031) +HANDLE_BAT(, 4032) +HANDLE_BAT(, 4033) +HANDLE_BAT(, 4034) +HANDLE_BAT(, 4035) +HANDLE_BAT(, 4036) +HANDLE_BAT(, 4037) +HANDLE_BAT(, 4038) +HANDLE_BAT(, 4039) +HANDLE_BAT(, 4040) +HANDLE_BAT(, 4041) +HANDLE_BAT(, 4042) +HANDLE_BAT(, 4043) +HANDLE_BAT(, 4044) +HANDLE_BAT(, 4045) +HANDLE_BAT(, 4046) +HANDLE_BAT(, 4047) +HANDLE_BAT(, 4048) +HANDLE_BAT(, 4049) +HANDLE_BAT(, 4050) +HANDLE_BAT(, 4051) +HANDLE_BAT(, 4052) +HANDLE_BAT(, 4053) +HANDLE_BAT(, 4054) +HANDLE_BAT(, 4055) +HANDLE_BAT(, 4056) +HANDLE_BAT(, 4057) +HANDLE_BAT(, 4058) +HANDLE_BAT(, 4059) +HANDLE_BAT(, 4060) +HANDLE_BAT(, 4061) +HANDLE_BAT(, 4062) +HANDLE_BAT(, 4063) +HANDLE_BAT(, 4064) +HANDLE_BAT(, 4065) +HANDLE_BAT(, 4066) +HANDLE_BAT(, 4067) +HANDLE_BAT(, 4068) +HANDLE_BAT(, 4069) +HANDLE_BAT(, 4070) +HANDLE_BAT(, 4071) +HANDLE_BAT(, 4072) +HANDLE_BAT(, 4073) +HANDLE_BAT(, 4074) +HANDLE_BAT(, 4075) +HANDLE_BAT(, 4076) +HANDLE_BAT(, 4077) +HANDLE_BAT(, 4078) +HANDLE_BAT(, 4079) +HANDLE_BAT(, 4080) +HANDLE_BAT(, 4081) +HANDLE_BAT(, 4082) +HANDLE_BAT(, 4083) +HANDLE_BAT(, 4084) +HANDLE_BAT(, 4085) +HANDLE_BAT(, 4086) +HANDLE_BAT(, 4087) +HANDLE_BAT(, 4088) +HANDLE_BAT(, 4089) +HANDLE_BAT(, 4090) +HANDLE_BAT(, 4091) +HANDLE_BAT(, 4092) +HANDLE_BAT(, 4093) +HANDLE_BAT(, 4094) +HANDLE_BAT(, 4095) +HANDLE_BAT(, 4096) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 3073) +HANDLE_BAT(APINT_TYPE_PREFIX, 3074) +HANDLE_BAT(APINT_TYPE_PREFIX, 3075) +HANDLE_BAT(APINT_TYPE_PREFIX, 3076) +HANDLE_BAT(APINT_TYPE_PREFIX, 3077) +HANDLE_BAT(APINT_TYPE_PREFIX, 3078) +HANDLE_BAT(APINT_TYPE_PREFIX, 3079) +HANDLE_BAT(APINT_TYPE_PREFIX, 3080) +HANDLE_BAT(APINT_TYPE_PREFIX, 3081) +HANDLE_BAT(APINT_TYPE_PREFIX, 3082) +HANDLE_BAT(APINT_TYPE_PREFIX, 3083) +HANDLE_BAT(APINT_TYPE_PREFIX, 3084) +HANDLE_BAT(APINT_TYPE_PREFIX, 3085) +HANDLE_BAT(APINT_TYPE_PREFIX, 3086) +HANDLE_BAT(APINT_TYPE_PREFIX, 3087) +HANDLE_BAT(APINT_TYPE_PREFIX, 3088) +HANDLE_BAT(APINT_TYPE_PREFIX, 3089) +HANDLE_BAT(APINT_TYPE_PREFIX, 3090) +HANDLE_BAT(APINT_TYPE_PREFIX, 3091) +HANDLE_BAT(APINT_TYPE_PREFIX, 3092) +HANDLE_BAT(APINT_TYPE_PREFIX, 3093) +HANDLE_BAT(APINT_TYPE_PREFIX, 3094) +HANDLE_BAT(APINT_TYPE_PREFIX, 3095) +HANDLE_BAT(APINT_TYPE_PREFIX, 3096) +HANDLE_BAT(APINT_TYPE_PREFIX, 3097) +HANDLE_BAT(APINT_TYPE_PREFIX, 3098) +HANDLE_BAT(APINT_TYPE_PREFIX, 3099) +HANDLE_BAT(APINT_TYPE_PREFIX, 3100) +HANDLE_BAT(APINT_TYPE_PREFIX, 3101) +HANDLE_BAT(APINT_TYPE_PREFIX, 3102) +HANDLE_BAT(APINT_TYPE_PREFIX, 3103) +HANDLE_BAT(APINT_TYPE_PREFIX, 3104) +HANDLE_BAT(APINT_TYPE_PREFIX, 3105) +HANDLE_BAT(APINT_TYPE_PREFIX, 3106) +HANDLE_BAT(APINT_TYPE_PREFIX, 3107) +HANDLE_BAT(APINT_TYPE_PREFIX, 3108) +HANDLE_BAT(APINT_TYPE_PREFIX, 3109) +HANDLE_BAT(APINT_TYPE_PREFIX, 3110) +HANDLE_BAT(APINT_TYPE_PREFIX, 3111) +HANDLE_BAT(APINT_TYPE_PREFIX, 3112) +HANDLE_BAT(APINT_TYPE_PREFIX, 3113) +HANDLE_BAT(APINT_TYPE_PREFIX, 3114) +HANDLE_BAT(APINT_TYPE_PREFIX, 3115) +HANDLE_BAT(APINT_TYPE_PREFIX, 3116) +HANDLE_BAT(APINT_TYPE_PREFIX, 3117) +HANDLE_BAT(APINT_TYPE_PREFIX, 3118) +HANDLE_BAT(APINT_TYPE_PREFIX, 3119) +HANDLE_BAT(APINT_TYPE_PREFIX, 3120) +HANDLE_BAT(APINT_TYPE_PREFIX, 3121) +HANDLE_BAT(APINT_TYPE_PREFIX, 3122) +HANDLE_BAT(APINT_TYPE_PREFIX, 3123) +HANDLE_BAT(APINT_TYPE_PREFIX, 3124) +HANDLE_BAT(APINT_TYPE_PREFIX, 3125) +HANDLE_BAT(APINT_TYPE_PREFIX, 3126) +HANDLE_BAT(APINT_TYPE_PREFIX, 3127) +HANDLE_BAT(APINT_TYPE_PREFIX, 3128) +HANDLE_BAT(APINT_TYPE_PREFIX, 3129) +HANDLE_BAT(APINT_TYPE_PREFIX, 3130) +HANDLE_BAT(APINT_TYPE_PREFIX, 3131) +HANDLE_BAT(APINT_TYPE_PREFIX, 3132) +HANDLE_BAT(APINT_TYPE_PREFIX, 3133) +HANDLE_BAT(APINT_TYPE_PREFIX, 3134) +HANDLE_BAT(APINT_TYPE_PREFIX, 3135) +HANDLE_BAT(APINT_TYPE_PREFIX, 3136) +HANDLE_BAT(APINT_TYPE_PREFIX, 3137) +HANDLE_BAT(APINT_TYPE_PREFIX, 3138) +HANDLE_BAT(APINT_TYPE_PREFIX, 3139) +HANDLE_BAT(APINT_TYPE_PREFIX, 3140) +HANDLE_BAT(APINT_TYPE_PREFIX, 3141) +HANDLE_BAT(APINT_TYPE_PREFIX, 3142) +HANDLE_BAT(APINT_TYPE_PREFIX, 3143) +HANDLE_BAT(APINT_TYPE_PREFIX, 3144) +HANDLE_BAT(APINT_TYPE_PREFIX, 3145) +HANDLE_BAT(APINT_TYPE_PREFIX, 3146) +HANDLE_BAT(APINT_TYPE_PREFIX, 3147) +HANDLE_BAT(APINT_TYPE_PREFIX, 3148) +HANDLE_BAT(APINT_TYPE_PREFIX, 3149) +HANDLE_BAT(APINT_TYPE_PREFIX, 3150) +HANDLE_BAT(APINT_TYPE_PREFIX, 3151) +HANDLE_BAT(APINT_TYPE_PREFIX, 3152) +HANDLE_BAT(APINT_TYPE_PREFIX, 3153) +HANDLE_BAT(APINT_TYPE_PREFIX, 3154) +HANDLE_BAT(APINT_TYPE_PREFIX, 3155) +HANDLE_BAT(APINT_TYPE_PREFIX, 3156) +HANDLE_BAT(APINT_TYPE_PREFIX, 3157) +HANDLE_BAT(APINT_TYPE_PREFIX, 3158) +HANDLE_BAT(APINT_TYPE_PREFIX, 3159) +HANDLE_BAT(APINT_TYPE_PREFIX, 3160) +HANDLE_BAT(APINT_TYPE_PREFIX, 3161) +HANDLE_BAT(APINT_TYPE_PREFIX, 3162) +HANDLE_BAT(APINT_TYPE_PREFIX, 3163) +HANDLE_BAT(APINT_TYPE_PREFIX, 3164) +HANDLE_BAT(APINT_TYPE_PREFIX, 3165) +HANDLE_BAT(APINT_TYPE_PREFIX, 3166) +HANDLE_BAT(APINT_TYPE_PREFIX, 3167) +HANDLE_BAT(APINT_TYPE_PREFIX, 3168) +HANDLE_BAT(APINT_TYPE_PREFIX, 3169) +HANDLE_BAT(APINT_TYPE_PREFIX, 3170) +HANDLE_BAT(APINT_TYPE_PREFIX, 3171) +HANDLE_BAT(APINT_TYPE_PREFIX, 3172) +HANDLE_BAT(APINT_TYPE_PREFIX, 3173) +HANDLE_BAT(APINT_TYPE_PREFIX, 3174) +HANDLE_BAT(APINT_TYPE_PREFIX, 3175) +HANDLE_BAT(APINT_TYPE_PREFIX, 3176) +HANDLE_BAT(APINT_TYPE_PREFIX, 3177) +HANDLE_BAT(APINT_TYPE_PREFIX, 3178) +HANDLE_BAT(APINT_TYPE_PREFIX, 3179) +HANDLE_BAT(APINT_TYPE_PREFIX, 3180) +HANDLE_BAT(APINT_TYPE_PREFIX, 3181) +HANDLE_BAT(APINT_TYPE_PREFIX, 3182) +HANDLE_BAT(APINT_TYPE_PREFIX, 3183) +HANDLE_BAT(APINT_TYPE_PREFIX, 3184) +HANDLE_BAT(APINT_TYPE_PREFIX, 3185) +HANDLE_BAT(APINT_TYPE_PREFIX, 3186) +HANDLE_BAT(APINT_TYPE_PREFIX, 3187) +HANDLE_BAT(APINT_TYPE_PREFIX, 3188) +HANDLE_BAT(APINT_TYPE_PREFIX, 3189) +HANDLE_BAT(APINT_TYPE_PREFIX, 3190) +HANDLE_BAT(APINT_TYPE_PREFIX, 3191) +HANDLE_BAT(APINT_TYPE_PREFIX, 3192) +HANDLE_BAT(APINT_TYPE_PREFIX, 3193) +HANDLE_BAT(APINT_TYPE_PREFIX, 3194) +HANDLE_BAT(APINT_TYPE_PREFIX, 3195) +HANDLE_BAT(APINT_TYPE_PREFIX, 3196) +HANDLE_BAT(APINT_TYPE_PREFIX, 3197) +HANDLE_BAT(APINT_TYPE_PREFIX, 3198) +HANDLE_BAT(APINT_TYPE_PREFIX, 3199) +HANDLE_BAT(APINT_TYPE_PREFIX, 3200) +HANDLE_BAT(APINT_TYPE_PREFIX, 3201) +HANDLE_BAT(APINT_TYPE_PREFIX, 3202) +HANDLE_BAT(APINT_TYPE_PREFIX, 3203) +HANDLE_BAT(APINT_TYPE_PREFIX, 3204) +HANDLE_BAT(APINT_TYPE_PREFIX, 3205) +HANDLE_BAT(APINT_TYPE_PREFIX, 3206) +HANDLE_BAT(APINT_TYPE_PREFIX, 3207) +HANDLE_BAT(APINT_TYPE_PREFIX, 3208) +HANDLE_BAT(APINT_TYPE_PREFIX, 3209) +HANDLE_BAT(APINT_TYPE_PREFIX, 3210) +HANDLE_BAT(APINT_TYPE_PREFIX, 3211) +HANDLE_BAT(APINT_TYPE_PREFIX, 3212) +HANDLE_BAT(APINT_TYPE_PREFIX, 3213) +HANDLE_BAT(APINT_TYPE_PREFIX, 3214) +HANDLE_BAT(APINT_TYPE_PREFIX, 3215) +HANDLE_BAT(APINT_TYPE_PREFIX, 3216) +HANDLE_BAT(APINT_TYPE_PREFIX, 3217) +HANDLE_BAT(APINT_TYPE_PREFIX, 3218) +HANDLE_BAT(APINT_TYPE_PREFIX, 3219) +HANDLE_BAT(APINT_TYPE_PREFIX, 3220) +HANDLE_BAT(APINT_TYPE_PREFIX, 3221) +HANDLE_BAT(APINT_TYPE_PREFIX, 3222) +HANDLE_BAT(APINT_TYPE_PREFIX, 3223) +HANDLE_BAT(APINT_TYPE_PREFIX, 3224) +HANDLE_BAT(APINT_TYPE_PREFIX, 3225) +HANDLE_BAT(APINT_TYPE_PREFIX, 3226) +HANDLE_BAT(APINT_TYPE_PREFIX, 3227) +HANDLE_BAT(APINT_TYPE_PREFIX, 3228) +HANDLE_BAT(APINT_TYPE_PREFIX, 3229) +HANDLE_BAT(APINT_TYPE_PREFIX, 3230) +HANDLE_BAT(APINT_TYPE_PREFIX, 3231) +HANDLE_BAT(APINT_TYPE_PREFIX, 3232) +HANDLE_BAT(APINT_TYPE_PREFIX, 3233) +HANDLE_BAT(APINT_TYPE_PREFIX, 3234) +HANDLE_BAT(APINT_TYPE_PREFIX, 3235) +HANDLE_BAT(APINT_TYPE_PREFIX, 3236) +HANDLE_BAT(APINT_TYPE_PREFIX, 3237) +HANDLE_BAT(APINT_TYPE_PREFIX, 3238) +HANDLE_BAT(APINT_TYPE_PREFIX, 3239) +HANDLE_BAT(APINT_TYPE_PREFIX, 3240) +HANDLE_BAT(APINT_TYPE_PREFIX, 3241) +HANDLE_BAT(APINT_TYPE_PREFIX, 3242) +HANDLE_BAT(APINT_TYPE_PREFIX, 3243) +HANDLE_BAT(APINT_TYPE_PREFIX, 3244) +HANDLE_BAT(APINT_TYPE_PREFIX, 3245) +HANDLE_BAT(APINT_TYPE_PREFIX, 3246) +HANDLE_BAT(APINT_TYPE_PREFIX, 3247) +HANDLE_BAT(APINT_TYPE_PREFIX, 3248) +HANDLE_BAT(APINT_TYPE_PREFIX, 3249) +HANDLE_BAT(APINT_TYPE_PREFIX, 3250) +HANDLE_BAT(APINT_TYPE_PREFIX, 3251) +HANDLE_BAT(APINT_TYPE_PREFIX, 3252) +HANDLE_BAT(APINT_TYPE_PREFIX, 3253) +HANDLE_BAT(APINT_TYPE_PREFIX, 3254) +HANDLE_BAT(APINT_TYPE_PREFIX, 3255) +HANDLE_BAT(APINT_TYPE_PREFIX, 3256) +HANDLE_BAT(APINT_TYPE_PREFIX, 3257) +HANDLE_BAT(APINT_TYPE_PREFIX, 3258) +HANDLE_BAT(APINT_TYPE_PREFIX, 3259) +HANDLE_BAT(APINT_TYPE_PREFIX, 3260) +HANDLE_BAT(APINT_TYPE_PREFIX, 3261) +HANDLE_BAT(APINT_TYPE_PREFIX, 3262) +HANDLE_BAT(APINT_TYPE_PREFIX, 3263) +HANDLE_BAT(APINT_TYPE_PREFIX, 3264) +HANDLE_BAT(APINT_TYPE_PREFIX, 3265) +HANDLE_BAT(APINT_TYPE_PREFIX, 3266) +HANDLE_BAT(APINT_TYPE_PREFIX, 3267) +HANDLE_BAT(APINT_TYPE_PREFIX, 3268) +HANDLE_BAT(APINT_TYPE_PREFIX, 3269) +HANDLE_BAT(APINT_TYPE_PREFIX, 3270) +HANDLE_BAT(APINT_TYPE_PREFIX, 3271) +HANDLE_BAT(APINT_TYPE_PREFIX, 3272) +HANDLE_BAT(APINT_TYPE_PREFIX, 3273) +HANDLE_BAT(APINT_TYPE_PREFIX, 3274) +HANDLE_BAT(APINT_TYPE_PREFIX, 3275) +HANDLE_BAT(APINT_TYPE_PREFIX, 3276) +HANDLE_BAT(APINT_TYPE_PREFIX, 3277) +HANDLE_BAT(APINT_TYPE_PREFIX, 3278) +HANDLE_BAT(APINT_TYPE_PREFIX, 3279) +HANDLE_BAT(APINT_TYPE_PREFIX, 3280) +HANDLE_BAT(APINT_TYPE_PREFIX, 3281) +HANDLE_BAT(APINT_TYPE_PREFIX, 3282) +HANDLE_BAT(APINT_TYPE_PREFIX, 3283) +HANDLE_BAT(APINT_TYPE_PREFIX, 3284) +HANDLE_BAT(APINT_TYPE_PREFIX, 3285) +HANDLE_BAT(APINT_TYPE_PREFIX, 3286) +HANDLE_BAT(APINT_TYPE_PREFIX, 3287) +HANDLE_BAT(APINT_TYPE_PREFIX, 3288) +HANDLE_BAT(APINT_TYPE_PREFIX, 3289) +HANDLE_BAT(APINT_TYPE_PREFIX, 3290) +HANDLE_BAT(APINT_TYPE_PREFIX, 3291) +HANDLE_BAT(APINT_TYPE_PREFIX, 3292) +HANDLE_BAT(APINT_TYPE_PREFIX, 3293) +HANDLE_BAT(APINT_TYPE_PREFIX, 3294) +HANDLE_BAT(APINT_TYPE_PREFIX, 3295) +HANDLE_BAT(APINT_TYPE_PREFIX, 3296) +HANDLE_BAT(APINT_TYPE_PREFIX, 3297) +HANDLE_BAT(APINT_TYPE_PREFIX, 3298) +HANDLE_BAT(APINT_TYPE_PREFIX, 3299) +HANDLE_BAT(APINT_TYPE_PREFIX, 3300) +HANDLE_BAT(APINT_TYPE_PREFIX, 3301) +HANDLE_BAT(APINT_TYPE_PREFIX, 3302) +HANDLE_BAT(APINT_TYPE_PREFIX, 3303) +HANDLE_BAT(APINT_TYPE_PREFIX, 3304) +HANDLE_BAT(APINT_TYPE_PREFIX, 3305) +HANDLE_BAT(APINT_TYPE_PREFIX, 3306) +HANDLE_BAT(APINT_TYPE_PREFIX, 3307) +HANDLE_BAT(APINT_TYPE_PREFIX, 3308) +HANDLE_BAT(APINT_TYPE_PREFIX, 3309) +HANDLE_BAT(APINT_TYPE_PREFIX, 3310) +HANDLE_BAT(APINT_TYPE_PREFIX, 3311) +HANDLE_BAT(APINT_TYPE_PREFIX, 3312) +HANDLE_BAT(APINT_TYPE_PREFIX, 3313) +HANDLE_BAT(APINT_TYPE_PREFIX, 3314) +HANDLE_BAT(APINT_TYPE_PREFIX, 3315) +HANDLE_BAT(APINT_TYPE_PREFIX, 3316) +HANDLE_BAT(APINT_TYPE_PREFIX, 3317) +HANDLE_BAT(APINT_TYPE_PREFIX, 3318) +HANDLE_BAT(APINT_TYPE_PREFIX, 3319) +HANDLE_BAT(APINT_TYPE_PREFIX, 3320) +HANDLE_BAT(APINT_TYPE_PREFIX, 3321) +HANDLE_BAT(APINT_TYPE_PREFIX, 3322) +HANDLE_BAT(APINT_TYPE_PREFIX, 3323) +HANDLE_BAT(APINT_TYPE_PREFIX, 3324) +HANDLE_BAT(APINT_TYPE_PREFIX, 3325) +HANDLE_BAT(APINT_TYPE_PREFIX, 3326) +HANDLE_BAT(APINT_TYPE_PREFIX, 3327) +HANDLE_BAT(APINT_TYPE_PREFIX, 3328) +HANDLE_BAT(APINT_TYPE_PREFIX, 3329) +HANDLE_BAT(APINT_TYPE_PREFIX, 3330) +HANDLE_BAT(APINT_TYPE_PREFIX, 3331) +HANDLE_BAT(APINT_TYPE_PREFIX, 3332) +HANDLE_BAT(APINT_TYPE_PREFIX, 3333) +HANDLE_BAT(APINT_TYPE_PREFIX, 3334) +HANDLE_BAT(APINT_TYPE_PREFIX, 3335) +HANDLE_BAT(APINT_TYPE_PREFIX, 3336) +HANDLE_BAT(APINT_TYPE_PREFIX, 3337) +HANDLE_BAT(APINT_TYPE_PREFIX, 3338) +HANDLE_BAT(APINT_TYPE_PREFIX, 3339) +HANDLE_BAT(APINT_TYPE_PREFIX, 3340) +HANDLE_BAT(APINT_TYPE_PREFIX, 3341) +HANDLE_BAT(APINT_TYPE_PREFIX, 3342) +HANDLE_BAT(APINT_TYPE_PREFIX, 3343) +HANDLE_BAT(APINT_TYPE_PREFIX, 3344) +HANDLE_BAT(APINT_TYPE_PREFIX, 3345) +HANDLE_BAT(APINT_TYPE_PREFIX, 3346) +HANDLE_BAT(APINT_TYPE_PREFIX, 3347) +HANDLE_BAT(APINT_TYPE_PREFIX, 3348) +HANDLE_BAT(APINT_TYPE_PREFIX, 3349) +HANDLE_BAT(APINT_TYPE_PREFIX, 3350) +HANDLE_BAT(APINT_TYPE_PREFIX, 3351) +HANDLE_BAT(APINT_TYPE_PREFIX, 3352) +HANDLE_BAT(APINT_TYPE_PREFIX, 3353) +HANDLE_BAT(APINT_TYPE_PREFIX, 3354) +HANDLE_BAT(APINT_TYPE_PREFIX, 3355) +HANDLE_BAT(APINT_TYPE_PREFIX, 3356) +HANDLE_BAT(APINT_TYPE_PREFIX, 3357) +HANDLE_BAT(APINT_TYPE_PREFIX, 3358) +HANDLE_BAT(APINT_TYPE_PREFIX, 3359) +HANDLE_BAT(APINT_TYPE_PREFIX, 3360) +HANDLE_BAT(APINT_TYPE_PREFIX, 3361) +HANDLE_BAT(APINT_TYPE_PREFIX, 3362) +HANDLE_BAT(APINT_TYPE_PREFIX, 3363) +HANDLE_BAT(APINT_TYPE_PREFIX, 3364) +HANDLE_BAT(APINT_TYPE_PREFIX, 3365) +HANDLE_BAT(APINT_TYPE_PREFIX, 3366) +HANDLE_BAT(APINT_TYPE_PREFIX, 3367) +HANDLE_BAT(APINT_TYPE_PREFIX, 3368) +HANDLE_BAT(APINT_TYPE_PREFIX, 3369) +HANDLE_BAT(APINT_TYPE_PREFIX, 3370) +HANDLE_BAT(APINT_TYPE_PREFIX, 3371) +HANDLE_BAT(APINT_TYPE_PREFIX, 3372) +HANDLE_BAT(APINT_TYPE_PREFIX, 3373) +HANDLE_BAT(APINT_TYPE_PREFIX, 3374) +HANDLE_BAT(APINT_TYPE_PREFIX, 3375) +HANDLE_BAT(APINT_TYPE_PREFIX, 3376) +HANDLE_BAT(APINT_TYPE_PREFIX, 3377) +HANDLE_BAT(APINT_TYPE_PREFIX, 3378) +HANDLE_BAT(APINT_TYPE_PREFIX, 3379) +HANDLE_BAT(APINT_TYPE_PREFIX, 3380) +HANDLE_BAT(APINT_TYPE_PREFIX, 3381) +HANDLE_BAT(APINT_TYPE_PREFIX, 3382) +HANDLE_BAT(APINT_TYPE_PREFIX, 3383) +HANDLE_BAT(APINT_TYPE_PREFIX, 3384) +HANDLE_BAT(APINT_TYPE_PREFIX, 3385) +HANDLE_BAT(APINT_TYPE_PREFIX, 3386) +HANDLE_BAT(APINT_TYPE_PREFIX, 3387) +HANDLE_BAT(APINT_TYPE_PREFIX, 3388) +HANDLE_BAT(APINT_TYPE_PREFIX, 3389) +HANDLE_BAT(APINT_TYPE_PREFIX, 3390) +HANDLE_BAT(APINT_TYPE_PREFIX, 3391) +HANDLE_BAT(APINT_TYPE_PREFIX, 3392) +HANDLE_BAT(APINT_TYPE_PREFIX, 3393) +HANDLE_BAT(APINT_TYPE_PREFIX, 3394) +HANDLE_BAT(APINT_TYPE_PREFIX, 3395) +HANDLE_BAT(APINT_TYPE_PREFIX, 3396) +HANDLE_BAT(APINT_TYPE_PREFIX, 3397) +HANDLE_BAT(APINT_TYPE_PREFIX, 3398) +HANDLE_BAT(APINT_TYPE_PREFIX, 3399) +HANDLE_BAT(APINT_TYPE_PREFIX, 3400) +HANDLE_BAT(APINT_TYPE_PREFIX, 3401) +HANDLE_BAT(APINT_TYPE_PREFIX, 3402) +HANDLE_BAT(APINT_TYPE_PREFIX, 3403) +HANDLE_BAT(APINT_TYPE_PREFIX, 3404) +HANDLE_BAT(APINT_TYPE_PREFIX, 3405) +HANDLE_BAT(APINT_TYPE_PREFIX, 3406) +HANDLE_BAT(APINT_TYPE_PREFIX, 3407) +HANDLE_BAT(APINT_TYPE_PREFIX, 3408) +HANDLE_BAT(APINT_TYPE_PREFIX, 3409) +HANDLE_BAT(APINT_TYPE_PREFIX, 3410) +HANDLE_BAT(APINT_TYPE_PREFIX, 3411) +HANDLE_BAT(APINT_TYPE_PREFIX, 3412) +HANDLE_BAT(APINT_TYPE_PREFIX, 3413) +HANDLE_BAT(APINT_TYPE_PREFIX, 3414) +HANDLE_BAT(APINT_TYPE_PREFIX, 3415) +HANDLE_BAT(APINT_TYPE_PREFIX, 3416) +HANDLE_BAT(APINT_TYPE_PREFIX, 3417) +HANDLE_BAT(APINT_TYPE_PREFIX, 3418) +HANDLE_BAT(APINT_TYPE_PREFIX, 3419) +HANDLE_BAT(APINT_TYPE_PREFIX, 3420) +HANDLE_BAT(APINT_TYPE_PREFIX, 3421) +HANDLE_BAT(APINT_TYPE_PREFIX, 3422) +HANDLE_BAT(APINT_TYPE_PREFIX, 3423) +HANDLE_BAT(APINT_TYPE_PREFIX, 3424) +HANDLE_BAT(APINT_TYPE_PREFIX, 3425) +HANDLE_BAT(APINT_TYPE_PREFIX, 3426) +HANDLE_BAT(APINT_TYPE_PREFIX, 3427) +HANDLE_BAT(APINT_TYPE_PREFIX, 3428) +HANDLE_BAT(APINT_TYPE_PREFIX, 3429) +HANDLE_BAT(APINT_TYPE_PREFIX, 3430) +HANDLE_BAT(APINT_TYPE_PREFIX, 3431) +HANDLE_BAT(APINT_TYPE_PREFIX, 3432) +HANDLE_BAT(APINT_TYPE_PREFIX, 3433) +HANDLE_BAT(APINT_TYPE_PREFIX, 3434) +HANDLE_BAT(APINT_TYPE_PREFIX, 3435) +HANDLE_BAT(APINT_TYPE_PREFIX, 3436) +HANDLE_BAT(APINT_TYPE_PREFIX, 3437) +HANDLE_BAT(APINT_TYPE_PREFIX, 3438) +HANDLE_BAT(APINT_TYPE_PREFIX, 3439) +HANDLE_BAT(APINT_TYPE_PREFIX, 3440) +HANDLE_BAT(APINT_TYPE_PREFIX, 3441) +HANDLE_BAT(APINT_TYPE_PREFIX, 3442) +HANDLE_BAT(APINT_TYPE_PREFIX, 3443) +HANDLE_BAT(APINT_TYPE_PREFIX, 3444) +HANDLE_BAT(APINT_TYPE_PREFIX, 3445) +HANDLE_BAT(APINT_TYPE_PREFIX, 3446) +HANDLE_BAT(APINT_TYPE_PREFIX, 3447) +HANDLE_BAT(APINT_TYPE_PREFIX, 3448) +HANDLE_BAT(APINT_TYPE_PREFIX, 3449) +HANDLE_BAT(APINT_TYPE_PREFIX, 3450) +HANDLE_BAT(APINT_TYPE_PREFIX, 3451) +HANDLE_BAT(APINT_TYPE_PREFIX, 3452) +HANDLE_BAT(APINT_TYPE_PREFIX, 3453) +HANDLE_BAT(APINT_TYPE_PREFIX, 3454) +HANDLE_BAT(APINT_TYPE_PREFIX, 3455) +HANDLE_BAT(APINT_TYPE_PREFIX, 3456) +HANDLE_BAT(APINT_TYPE_PREFIX, 3457) +HANDLE_BAT(APINT_TYPE_PREFIX, 3458) +HANDLE_BAT(APINT_TYPE_PREFIX, 3459) +HANDLE_BAT(APINT_TYPE_PREFIX, 3460) +HANDLE_BAT(APINT_TYPE_PREFIX, 3461) +HANDLE_BAT(APINT_TYPE_PREFIX, 3462) +HANDLE_BAT(APINT_TYPE_PREFIX, 3463) +HANDLE_BAT(APINT_TYPE_PREFIX, 3464) +HANDLE_BAT(APINT_TYPE_PREFIX, 3465) +HANDLE_BAT(APINT_TYPE_PREFIX, 3466) +HANDLE_BAT(APINT_TYPE_PREFIX, 3467) +HANDLE_BAT(APINT_TYPE_PREFIX, 3468) +HANDLE_BAT(APINT_TYPE_PREFIX, 3469) +HANDLE_BAT(APINT_TYPE_PREFIX, 3470) +HANDLE_BAT(APINT_TYPE_PREFIX, 3471) +HANDLE_BAT(APINT_TYPE_PREFIX, 3472) +HANDLE_BAT(APINT_TYPE_PREFIX, 3473) +HANDLE_BAT(APINT_TYPE_PREFIX, 3474) +HANDLE_BAT(APINT_TYPE_PREFIX, 3475) +HANDLE_BAT(APINT_TYPE_PREFIX, 3476) +HANDLE_BAT(APINT_TYPE_PREFIX, 3477) +HANDLE_BAT(APINT_TYPE_PREFIX, 3478) +HANDLE_BAT(APINT_TYPE_PREFIX, 3479) +HANDLE_BAT(APINT_TYPE_PREFIX, 3480) +HANDLE_BAT(APINT_TYPE_PREFIX, 3481) +HANDLE_BAT(APINT_TYPE_PREFIX, 3482) +HANDLE_BAT(APINT_TYPE_PREFIX, 3483) +HANDLE_BAT(APINT_TYPE_PREFIX, 3484) +HANDLE_BAT(APINT_TYPE_PREFIX, 3485) +HANDLE_BAT(APINT_TYPE_PREFIX, 3486) +HANDLE_BAT(APINT_TYPE_PREFIX, 3487) +HANDLE_BAT(APINT_TYPE_PREFIX, 3488) +HANDLE_BAT(APINT_TYPE_PREFIX, 3489) +HANDLE_BAT(APINT_TYPE_PREFIX, 3490) +HANDLE_BAT(APINT_TYPE_PREFIX, 3491) +HANDLE_BAT(APINT_TYPE_PREFIX, 3492) +HANDLE_BAT(APINT_TYPE_PREFIX, 3493) +HANDLE_BAT(APINT_TYPE_PREFIX, 3494) +HANDLE_BAT(APINT_TYPE_PREFIX, 3495) +HANDLE_BAT(APINT_TYPE_PREFIX, 3496) +HANDLE_BAT(APINT_TYPE_PREFIX, 3497) +HANDLE_BAT(APINT_TYPE_PREFIX, 3498) +HANDLE_BAT(APINT_TYPE_PREFIX, 3499) +HANDLE_BAT(APINT_TYPE_PREFIX, 3500) +HANDLE_BAT(APINT_TYPE_PREFIX, 3501) +HANDLE_BAT(APINT_TYPE_PREFIX, 3502) +HANDLE_BAT(APINT_TYPE_PREFIX, 3503) +HANDLE_BAT(APINT_TYPE_PREFIX, 3504) +HANDLE_BAT(APINT_TYPE_PREFIX, 3505) +HANDLE_BAT(APINT_TYPE_PREFIX, 3506) +HANDLE_BAT(APINT_TYPE_PREFIX, 3507) +HANDLE_BAT(APINT_TYPE_PREFIX, 3508) +HANDLE_BAT(APINT_TYPE_PREFIX, 3509) +HANDLE_BAT(APINT_TYPE_PREFIX, 3510) +HANDLE_BAT(APINT_TYPE_PREFIX, 3511) +HANDLE_BAT(APINT_TYPE_PREFIX, 3512) +HANDLE_BAT(APINT_TYPE_PREFIX, 3513) +HANDLE_BAT(APINT_TYPE_PREFIX, 3514) +HANDLE_BAT(APINT_TYPE_PREFIX, 3515) +HANDLE_BAT(APINT_TYPE_PREFIX, 3516) +HANDLE_BAT(APINT_TYPE_PREFIX, 3517) +HANDLE_BAT(APINT_TYPE_PREFIX, 3518) +HANDLE_BAT(APINT_TYPE_PREFIX, 3519) +HANDLE_BAT(APINT_TYPE_PREFIX, 3520) +HANDLE_BAT(APINT_TYPE_PREFIX, 3521) +HANDLE_BAT(APINT_TYPE_PREFIX, 3522) +HANDLE_BAT(APINT_TYPE_PREFIX, 3523) +HANDLE_BAT(APINT_TYPE_PREFIX, 3524) +HANDLE_BAT(APINT_TYPE_PREFIX, 3525) +HANDLE_BAT(APINT_TYPE_PREFIX, 3526) +HANDLE_BAT(APINT_TYPE_PREFIX, 3527) +HANDLE_BAT(APINT_TYPE_PREFIX, 3528) +HANDLE_BAT(APINT_TYPE_PREFIX, 3529) +HANDLE_BAT(APINT_TYPE_PREFIX, 3530) +HANDLE_BAT(APINT_TYPE_PREFIX, 3531) +HANDLE_BAT(APINT_TYPE_PREFIX, 3532) +HANDLE_BAT(APINT_TYPE_PREFIX, 3533) +HANDLE_BAT(APINT_TYPE_PREFIX, 3534) +HANDLE_BAT(APINT_TYPE_PREFIX, 3535) +HANDLE_BAT(APINT_TYPE_PREFIX, 3536) +HANDLE_BAT(APINT_TYPE_PREFIX, 3537) +HANDLE_BAT(APINT_TYPE_PREFIX, 3538) +HANDLE_BAT(APINT_TYPE_PREFIX, 3539) +HANDLE_BAT(APINT_TYPE_PREFIX, 3540) +HANDLE_BAT(APINT_TYPE_PREFIX, 3541) +HANDLE_BAT(APINT_TYPE_PREFIX, 3542) +HANDLE_BAT(APINT_TYPE_PREFIX, 3543) +HANDLE_BAT(APINT_TYPE_PREFIX, 3544) +HANDLE_BAT(APINT_TYPE_PREFIX, 3545) +HANDLE_BAT(APINT_TYPE_PREFIX, 3546) +HANDLE_BAT(APINT_TYPE_PREFIX, 3547) +HANDLE_BAT(APINT_TYPE_PREFIX, 3548) +HANDLE_BAT(APINT_TYPE_PREFIX, 3549) +HANDLE_BAT(APINT_TYPE_PREFIX, 3550) +HANDLE_BAT(APINT_TYPE_PREFIX, 3551) +HANDLE_BAT(APINT_TYPE_PREFIX, 3552) +HANDLE_BAT(APINT_TYPE_PREFIX, 3553) +HANDLE_BAT(APINT_TYPE_PREFIX, 3554) +HANDLE_BAT(APINT_TYPE_PREFIX, 3555) +HANDLE_BAT(APINT_TYPE_PREFIX, 3556) +HANDLE_BAT(APINT_TYPE_PREFIX, 3557) +HANDLE_BAT(APINT_TYPE_PREFIX, 3558) +HANDLE_BAT(APINT_TYPE_PREFIX, 3559) +HANDLE_BAT(APINT_TYPE_PREFIX, 3560) +HANDLE_BAT(APINT_TYPE_PREFIX, 3561) +HANDLE_BAT(APINT_TYPE_PREFIX, 3562) +HANDLE_BAT(APINT_TYPE_PREFIX, 3563) +HANDLE_BAT(APINT_TYPE_PREFIX, 3564) +HANDLE_BAT(APINT_TYPE_PREFIX, 3565) +HANDLE_BAT(APINT_TYPE_PREFIX, 3566) +HANDLE_BAT(APINT_TYPE_PREFIX, 3567) +HANDLE_BAT(APINT_TYPE_PREFIX, 3568) +HANDLE_BAT(APINT_TYPE_PREFIX, 3569) +HANDLE_BAT(APINT_TYPE_PREFIX, 3570) +HANDLE_BAT(APINT_TYPE_PREFIX, 3571) +HANDLE_BAT(APINT_TYPE_PREFIX, 3572) +HANDLE_BAT(APINT_TYPE_PREFIX, 3573) +HANDLE_BAT(APINT_TYPE_PREFIX, 3574) +HANDLE_BAT(APINT_TYPE_PREFIX, 3575) +HANDLE_BAT(APINT_TYPE_PREFIX, 3576) +HANDLE_BAT(APINT_TYPE_PREFIX, 3577) +HANDLE_BAT(APINT_TYPE_PREFIX, 3578) +HANDLE_BAT(APINT_TYPE_PREFIX, 3579) +HANDLE_BAT(APINT_TYPE_PREFIX, 3580) +HANDLE_BAT(APINT_TYPE_PREFIX, 3581) +HANDLE_BAT(APINT_TYPE_PREFIX, 3582) +HANDLE_BAT(APINT_TYPE_PREFIX, 3583) +HANDLE_BAT(APINT_TYPE_PREFIX, 3584) +HANDLE_BAT(APINT_TYPE_PREFIX, 3585) +HANDLE_BAT(APINT_TYPE_PREFIX, 3586) +HANDLE_BAT(APINT_TYPE_PREFIX, 3587) +HANDLE_BAT(APINT_TYPE_PREFIX, 3588) +HANDLE_BAT(APINT_TYPE_PREFIX, 3589) +HANDLE_BAT(APINT_TYPE_PREFIX, 3590) +HANDLE_BAT(APINT_TYPE_PREFIX, 3591) +HANDLE_BAT(APINT_TYPE_PREFIX, 3592) +HANDLE_BAT(APINT_TYPE_PREFIX, 3593) +HANDLE_BAT(APINT_TYPE_PREFIX, 3594) +HANDLE_BAT(APINT_TYPE_PREFIX, 3595) +HANDLE_BAT(APINT_TYPE_PREFIX, 3596) +HANDLE_BAT(APINT_TYPE_PREFIX, 3597) +HANDLE_BAT(APINT_TYPE_PREFIX, 3598) +HANDLE_BAT(APINT_TYPE_PREFIX, 3599) +HANDLE_BAT(APINT_TYPE_PREFIX, 3600) +HANDLE_BAT(APINT_TYPE_PREFIX, 3601) +HANDLE_BAT(APINT_TYPE_PREFIX, 3602) +HANDLE_BAT(APINT_TYPE_PREFIX, 3603) +HANDLE_BAT(APINT_TYPE_PREFIX, 3604) +HANDLE_BAT(APINT_TYPE_PREFIX, 3605) +HANDLE_BAT(APINT_TYPE_PREFIX, 3606) +HANDLE_BAT(APINT_TYPE_PREFIX, 3607) +HANDLE_BAT(APINT_TYPE_PREFIX, 3608) +HANDLE_BAT(APINT_TYPE_PREFIX, 3609) +HANDLE_BAT(APINT_TYPE_PREFIX, 3610) +HANDLE_BAT(APINT_TYPE_PREFIX, 3611) +HANDLE_BAT(APINT_TYPE_PREFIX, 3612) +HANDLE_BAT(APINT_TYPE_PREFIX, 3613) +HANDLE_BAT(APINT_TYPE_PREFIX, 3614) +HANDLE_BAT(APINT_TYPE_PREFIX, 3615) +HANDLE_BAT(APINT_TYPE_PREFIX, 3616) +HANDLE_BAT(APINT_TYPE_PREFIX, 3617) +HANDLE_BAT(APINT_TYPE_PREFIX, 3618) +HANDLE_BAT(APINT_TYPE_PREFIX, 3619) +HANDLE_BAT(APINT_TYPE_PREFIX, 3620) +HANDLE_BAT(APINT_TYPE_PREFIX, 3621) +HANDLE_BAT(APINT_TYPE_PREFIX, 3622) +HANDLE_BAT(APINT_TYPE_PREFIX, 3623) +HANDLE_BAT(APINT_TYPE_PREFIX, 3624) +HANDLE_BAT(APINT_TYPE_PREFIX, 3625) +HANDLE_BAT(APINT_TYPE_PREFIX, 3626) +HANDLE_BAT(APINT_TYPE_PREFIX, 3627) +HANDLE_BAT(APINT_TYPE_PREFIX, 3628) +HANDLE_BAT(APINT_TYPE_PREFIX, 3629) +HANDLE_BAT(APINT_TYPE_PREFIX, 3630) +HANDLE_BAT(APINT_TYPE_PREFIX, 3631) +HANDLE_BAT(APINT_TYPE_PREFIX, 3632) +HANDLE_BAT(APINT_TYPE_PREFIX, 3633) +HANDLE_BAT(APINT_TYPE_PREFIX, 3634) +HANDLE_BAT(APINT_TYPE_PREFIX, 3635) +HANDLE_BAT(APINT_TYPE_PREFIX, 3636) +HANDLE_BAT(APINT_TYPE_PREFIX, 3637) +HANDLE_BAT(APINT_TYPE_PREFIX, 3638) +HANDLE_BAT(APINT_TYPE_PREFIX, 3639) +HANDLE_BAT(APINT_TYPE_PREFIX, 3640) +HANDLE_BAT(APINT_TYPE_PREFIX, 3641) +HANDLE_BAT(APINT_TYPE_PREFIX, 3642) +HANDLE_BAT(APINT_TYPE_PREFIX, 3643) +HANDLE_BAT(APINT_TYPE_PREFIX, 3644) +HANDLE_BAT(APINT_TYPE_PREFIX, 3645) +HANDLE_BAT(APINT_TYPE_PREFIX, 3646) +HANDLE_BAT(APINT_TYPE_PREFIX, 3647) +HANDLE_BAT(APINT_TYPE_PREFIX, 3648) +HANDLE_BAT(APINT_TYPE_PREFIX, 3649) +HANDLE_BAT(APINT_TYPE_PREFIX, 3650) +HANDLE_BAT(APINT_TYPE_PREFIX, 3651) +HANDLE_BAT(APINT_TYPE_PREFIX, 3652) +HANDLE_BAT(APINT_TYPE_PREFIX, 3653) +HANDLE_BAT(APINT_TYPE_PREFIX, 3654) +HANDLE_BAT(APINT_TYPE_PREFIX, 3655) +HANDLE_BAT(APINT_TYPE_PREFIX, 3656) +HANDLE_BAT(APINT_TYPE_PREFIX, 3657) +HANDLE_BAT(APINT_TYPE_PREFIX, 3658) +HANDLE_BAT(APINT_TYPE_PREFIX, 3659) +HANDLE_BAT(APINT_TYPE_PREFIX, 3660) +HANDLE_BAT(APINT_TYPE_PREFIX, 3661) +HANDLE_BAT(APINT_TYPE_PREFIX, 3662) +HANDLE_BAT(APINT_TYPE_PREFIX, 3663) +HANDLE_BAT(APINT_TYPE_PREFIX, 3664) +HANDLE_BAT(APINT_TYPE_PREFIX, 3665) +HANDLE_BAT(APINT_TYPE_PREFIX, 3666) +HANDLE_BAT(APINT_TYPE_PREFIX, 3667) +HANDLE_BAT(APINT_TYPE_PREFIX, 3668) +HANDLE_BAT(APINT_TYPE_PREFIX, 3669) +HANDLE_BAT(APINT_TYPE_PREFIX, 3670) +HANDLE_BAT(APINT_TYPE_PREFIX, 3671) +HANDLE_BAT(APINT_TYPE_PREFIX, 3672) +HANDLE_BAT(APINT_TYPE_PREFIX, 3673) +HANDLE_BAT(APINT_TYPE_PREFIX, 3674) +HANDLE_BAT(APINT_TYPE_PREFIX, 3675) +HANDLE_BAT(APINT_TYPE_PREFIX, 3676) +HANDLE_BAT(APINT_TYPE_PREFIX, 3677) +HANDLE_BAT(APINT_TYPE_PREFIX, 3678) +HANDLE_BAT(APINT_TYPE_PREFIX, 3679) +HANDLE_BAT(APINT_TYPE_PREFIX, 3680) +HANDLE_BAT(APINT_TYPE_PREFIX, 3681) +HANDLE_BAT(APINT_TYPE_PREFIX, 3682) +HANDLE_BAT(APINT_TYPE_PREFIX, 3683) +HANDLE_BAT(APINT_TYPE_PREFIX, 3684) +HANDLE_BAT(APINT_TYPE_PREFIX, 3685) +HANDLE_BAT(APINT_TYPE_PREFIX, 3686) +HANDLE_BAT(APINT_TYPE_PREFIX, 3687) +HANDLE_BAT(APINT_TYPE_PREFIX, 3688) +HANDLE_BAT(APINT_TYPE_PREFIX, 3689) +HANDLE_BAT(APINT_TYPE_PREFIX, 3690) +HANDLE_BAT(APINT_TYPE_PREFIX, 3691) +HANDLE_BAT(APINT_TYPE_PREFIX, 3692) +HANDLE_BAT(APINT_TYPE_PREFIX, 3693) +HANDLE_BAT(APINT_TYPE_PREFIX, 3694) +HANDLE_BAT(APINT_TYPE_PREFIX, 3695) +HANDLE_BAT(APINT_TYPE_PREFIX, 3696) +HANDLE_BAT(APINT_TYPE_PREFIX, 3697) +HANDLE_BAT(APINT_TYPE_PREFIX, 3698) +HANDLE_BAT(APINT_TYPE_PREFIX, 3699) +HANDLE_BAT(APINT_TYPE_PREFIX, 3700) +HANDLE_BAT(APINT_TYPE_PREFIX, 3701) +HANDLE_BAT(APINT_TYPE_PREFIX, 3702) +HANDLE_BAT(APINT_TYPE_PREFIX, 3703) +HANDLE_BAT(APINT_TYPE_PREFIX, 3704) +HANDLE_BAT(APINT_TYPE_PREFIX, 3705) +HANDLE_BAT(APINT_TYPE_PREFIX, 3706) +HANDLE_BAT(APINT_TYPE_PREFIX, 3707) +HANDLE_BAT(APINT_TYPE_PREFIX, 3708) +HANDLE_BAT(APINT_TYPE_PREFIX, 3709) +HANDLE_BAT(APINT_TYPE_PREFIX, 3710) +HANDLE_BAT(APINT_TYPE_PREFIX, 3711) +HANDLE_BAT(APINT_TYPE_PREFIX, 3712) +HANDLE_BAT(APINT_TYPE_PREFIX, 3713) +HANDLE_BAT(APINT_TYPE_PREFIX, 3714) +HANDLE_BAT(APINT_TYPE_PREFIX, 3715) +HANDLE_BAT(APINT_TYPE_PREFIX, 3716) +HANDLE_BAT(APINT_TYPE_PREFIX, 3717) +HANDLE_BAT(APINT_TYPE_PREFIX, 3718) +HANDLE_BAT(APINT_TYPE_PREFIX, 3719) +HANDLE_BAT(APINT_TYPE_PREFIX, 3720) +HANDLE_BAT(APINT_TYPE_PREFIX, 3721) +HANDLE_BAT(APINT_TYPE_PREFIX, 3722) +HANDLE_BAT(APINT_TYPE_PREFIX, 3723) +HANDLE_BAT(APINT_TYPE_PREFIX, 3724) +HANDLE_BAT(APINT_TYPE_PREFIX, 3725) +HANDLE_BAT(APINT_TYPE_PREFIX, 3726) +HANDLE_BAT(APINT_TYPE_PREFIX, 3727) +HANDLE_BAT(APINT_TYPE_PREFIX, 3728) +HANDLE_BAT(APINT_TYPE_PREFIX, 3729) +HANDLE_BAT(APINT_TYPE_PREFIX, 3730) +HANDLE_BAT(APINT_TYPE_PREFIX, 3731) +HANDLE_BAT(APINT_TYPE_PREFIX, 3732) +HANDLE_BAT(APINT_TYPE_PREFIX, 3733) +HANDLE_BAT(APINT_TYPE_PREFIX, 3734) +HANDLE_BAT(APINT_TYPE_PREFIX, 3735) +HANDLE_BAT(APINT_TYPE_PREFIX, 3736) +HANDLE_BAT(APINT_TYPE_PREFIX, 3737) +HANDLE_BAT(APINT_TYPE_PREFIX, 3738) +HANDLE_BAT(APINT_TYPE_PREFIX, 3739) +HANDLE_BAT(APINT_TYPE_PREFIX, 3740) +HANDLE_BAT(APINT_TYPE_PREFIX, 3741) +HANDLE_BAT(APINT_TYPE_PREFIX, 3742) +HANDLE_BAT(APINT_TYPE_PREFIX, 3743) +HANDLE_BAT(APINT_TYPE_PREFIX, 3744) +HANDLE_BAT(APINT_TYPE_PREFIX, 3745) +HANDLE_BAT(APINT_TYPE_PREFIX, 3746) +HANDLE_BAT(APINT_TYPE_PREFIX, 3747) +HANDLE_BAT(APINT_TYPE_PREFIX, 3748) +HANDLE_BAT(APINT_TYPE_PREFIX, 3749) +HANDLE_BAT(APINT_TYPE_PREFIX, 3750) +HANDLE_BAT(APINT_TYPE_PREFIX, 3751) +HANDLE_BAT(APINT_TYPE_PREFIX, 3752) +HANDLE_BAT(APINT_TYPE_PREFIX, 3753) +HANDLE_BAT(APINT_TYPE_PREFIX, 3754) +HANDLE_BAT(APINT_TYPE_PREFIX, 3755) +HANDLE_BAT(APINT_TYPE_PREFIX, 3756) +HANDLE_BAT(APINT_TYPE_PREFIX, 3757) +HANDLE_BAT(APINT_TYPE_PREFIX, 3758) +HANDLE_BAT(APINT_TYPE_PREFIX, 3759) +HANDLE_BAT(APINT_TYPE_PREFIX, 3760) +HANDLE_BAT(APINT_TYPE_PREFIX, 3761) +HANDLE_BAT(APINT_TYPE_PREFIX, 3762) +HANDLE_BAT(APINT_TYPE_PREFIX, 3763) +HANDLE_BAT(APINT_TYPE_PREFIX, 3764) +HANDLE_BAT(APINT_TYPE_PREFIX, 3765) +HANDLE_BAT(APINT_TYPE_PREFIX, 3766) +HANDLE_BAT(APINT_TYPE_PREFIX, 3767) +HANDLE_BAT(APINT_TYPE_PREFIX, 3768) +HANDLE_BAT(APINT_TYPE_PREFIX, 3769) +HANDLE_BAT(APINT_TYPE_PREFIX, 3770) +HANDLE_BAT(APINT_TYPE_PREFIX, 3771) +HANDLE_BAT(APINT_TYPE_PREFIX, 3772) +HANDLE_BAT(APINT_TYPE_PREFIX, 3773) +HANDLE_BAT(APINT_TYPE_PREFIX, 3774) +HANDLE_BAT(APINT_TYPE_PREFIX, 3775) +HANDLE_BAT(APINT_TYPE_PREFIX, 3776) +HANDLE_BAT(APINT_TYPE_PREFIX, 3777) +HANDLE_BAT(APINT_TYPE_PREFIX, 3778) +HANDLE_BAT(APINT_TYPE_PREFIX, 3779) +HANDLE_BAT(APINT_TYPE_PREFIX, 3780) +HANDLE_BAT(APINT_TYPE_PREFIX, 3781) +HANDLE_BAT(APINT_TYPE_PREFIX, 3782) +HANDLE_BAT(APINT_TYPE_PREFIX, 3783) +HANDLE_BAT(APINT_TYPE_PREFIX, 3784) +HANDLE_BAT(APINT_TYPE_PREFIX, 3785) +HANDLE_BAT(APINT_TYPE_PREFIX, 3786) +HANDLE_BAT(APINT_TYPE_PREFIX, 3787) +HANDLE_BAT(APINT_TYPE_PREFIX, 3788) +HANDLE_BAT(APINT_TYPE_PREFIX, 3789) +HANDLE_BAT(APINT_TYPE_PREFIX, 3790) +HANDLE_BAT(APINT_TYPE_PREFIX, 3791) +HANDLE_BAT(APINT_TYPE_PREFIX, 3792) +HANDLE_BAT(APINT_TYPE_PREFIX, 3793) +HANDLE_BAT(APINT_TYPE_PREFIX, 3794) +HANDLE_BAT(APINT_TYPE_PREFIX, 3795) +HANDLE_BAT(APINT_TYPE_PREFIX, 3796) +HANDLE_BAT(APINT_TYPE_PREFIX, 3797) +HANDLE_BAT(APINT_TYPE_PREFIX, 3798) +HANDLE_BAT(APINT_TYPE_PREFIX, 3799) +HANDLE_BAT(APINT_TYPE_PREFIX, 3800) +HANDLE_BAT(APINT_TYPE_PREFIX, 3801) +HANDLE_BAT(APINT_TYPE_PREFIX, 3802) +HANDLE_BAT(APINT_TYPE_PREFIX, 3803) +HANDLE_BAT(APINT_TYPE_PREFIX, 3804) +HANDLE_BAT(APINT_TYPE_PREFIX, 3805) +HANDLE_BAT(APINT_TYPE_PREFIX, 3806) +HANDLE_BAT(APINT_TYPE_PREFIX, 3807) +HANDLE_BAT(APINT_TYPE_PREFIX, 3808) +HANDLE_BAT(APINT_TYPE_PREFIX, 3809) +HANDLE_BAT(APINT_TYPE_PREFIX, 3810) +HANDLE_BAT(APINT_TYPE_PREFIX, 3811) +HANDLE_BAT(APINT_TYPE_PREFIX, 3812) +HANDLE_BAT(APINT_TYPE_PREFIX, 3813) +HANDLE_BAT(APINT_TYPE_PREFIX, 3814) +HANDLE_BAT(APINT_TYPE_PREFIX, 3815) +HANDLE_BAT(APINT_TYPE_PREFIX, 3816) +HANDLE_BAT(APINT_TYPE_PREFIX, 3817) +HANDLE_BAT(APINT_TYPE_PREFIX, 3818) +HANDLE_BAT(APINT_TYPE_PREFIX, 3819) +HANDLE_BAT(APINT_TYPE_PREFIX, 3820) +HANDLE_BAT(APINT_TYPE_PREFIX, 3821) +HANDLE_BAT(APINT_TYPE_PREFIX, 3822) +HANDLE_BAT(APINT_TYPE_PREFIX, 3823) +HANDLE_BAT(APINT_TYPE_PREFIX, 3824) +HANDLE_BAT(APINT_TYPE_PREFIX, 3825) +HANDLE_BAT(APINT_TYPE_PREFIX, 3826) +HANDLE_BAT(APINT_TYPE_PREFIX, 3827) +HANDLE_BAT(APINT_TYPE_PREFIX, 3828) +HANDLE_BAT(APINT_TYPE_PREFIX, 3829) +HANDLE_BAT(APINT_TYPE_PREFIX, 3830) +HANDLE_BAT(APINT_TYPE_PREFIX, 3831) +HANDLE_BAT(APINT_TYPE_PREFIX, 3832) +HANDLE_BAT(APINT_TYPE_PREFIX, 3833) +HANDLE_BAT(APINT_TYPE_PREFIX, 3834) +HANDLE_BAT(APINT_TYPE_PREFIX, 3835) +HANDLE_BAT(APINT_TYPE_PREFIX, 3836) +HANDLE_BAT(APINT_TYPE_PREFIX, 3837) +HANDLE_BAT(APINT_TYPE_PREFIX, 3838) +HANDLE_BAT(APINT_TYPE_PREFIX, 3839) +HANDLE_BAT(APINT_TYPE_PREFIX, 3840) +HANDLE_BAT(APINT_TYPE_PREFIX, 3841) +HANDLE_BAT(APINT_TYPE_PREFIX, 3842) +HANDLE_BAT(APINT_TYPE_PREFIX, 3843) +HANDLE_BAT(APINT_TYPE_PREFIX, 3844) +HANDLE_BAT(APINT_TYPE_PREFIX, 3845) +HANDLE_BAT(APINT_TYPE_PREFIX, 3846) +HANDLE_BAT(APINT_TYPE_PREFIX, 3847) +HANDLE_BAT(APINT_TYPE_PREFIX, 3848) +HANDLE_BAT(APINT_TYPE_PREFIX, 3849) +HANDLE_BAT(APINT_TYPE_PREFIX, 3850) +HANDLE_BAT(APINT_TYPE_PREFIX, 3851) +HANDLE_BAT(APINT_TYPE_PREFIX, 3852) +HANDLE_BAT(APINT_TYPE_PREFIX, 3853) +HANDLE_BAT(APINT_TYPE_PREFIX, 3854) +HANDLE_BAT(APINT_TYPE_PREFIX, 3855) +HANDLE_BAT(APINT_TYPE_PREFIX, 3856) +HANDLE_BAT(APINT_TYPE_PREFIX, 3857) +HANDLE_BAT(APINT_TYPE_PREFIX, 3858) +HANDLE_BAT(APINT_TYPE_PREFIX, 3859) +HANDLE_BAT(APINT_TYPE_PREFIX, 3860) +HANDLE_BAT(APINT_TYPE_PREFIX, 3861) +HANDLE_BAT(APINT_TYPE_PREFIX, 3862) +HANDLE_BAT(APINT_TYPE_PREFIX, 3863) +HANDLE_BAT(APINT_TYPE_PREFIX, 3864) +HANDLE_BAT(APINT_TYPE_PREFIX, 3865) +HANDLE_BAT(APINT_TYPE_PREFIX, 3866) +HANDLE_BAT(APINT_TYPE_PREFIX, 3867) +HANDLE_BAT(APINT_TYPE_PREFIX, 3868) +HANDLE_BAT(APINT_TYPE_PREFIX, 3869) +HANDLE_BAT(APINT_TYPE_PREFIX, 3870) +HANDLE_BAT(APINT_TYPE_PREFIX, 3871) +HANDLE_BAT(APINT_TYPE_PREFIX, 3872) +HANDLE_BAT(APINT_TYPE_PREFIX, 3873) +HANDLE_BAT(APINT_TYPE_PREFIX, 3874) +HANDLE_BAT(APINT_TYPE_PREFIX, 3875) +HANDLE_BAT(APINT_TYPE_PREFIX, 3876) +HANDLE_BAT(APINT_TYPE_PREFIX, 3877) +HANDLE_BAT(APINT_TYPE_PREFIX, 3878) +HANDLE_BAT(APINT_TYPE_PREFIX, 3879) +HANDLE_BAT(APINT_TYPE_PREFIX, 3880) +HANDLE_BAT(APINT_TYPE_PREFIX, 3881) +HANDLE_BAT(APINT_TYPE_PREFIX, 3882) +HANDLE_BAT(APINT_TYPE_PREFIX, 3883) +HANDLE_BAT(APINT_TYPE_PREFIX, 3884) +HANDLE_BAT(APINT_TYPE_PREFIX, 3885) +HANDLE_BAT(APINT_TYPE_PREFIX, 3886) +HANDLE_BAT(APINT_TYPE_PREFIX, 3887) +HANDLE_BAT(APINT_TYPE_PREFIX, 3888) +HANDLE_BAT(APINT_TYPE_PREFIX, 3889) +HANDLE_BAT(APINT_TYPE_PREFIX, 3890) +HANDLE_BAT(APINT_TYPE_PREFIX, 3891) +HANDLE_BAT(APINT_TYPE_PREFIX, 3892) +HANDLE_BAT(APINT_TYPE_PREFIX, 3893) +HANDLE_BAT(APINT_TYPE_PREFIX, 3894) +HANDLE_BAT(APINT_TYPE_PREFIX, 3895) +HANDLE_BAT(APINT_TYPE_PREFIX, 3896) +HANDLE_BAT(APINT_TYPE_PREFIX, 3897) +HANDLE_BAT(APINT_TYPE_PREFIX, 3898) +HANDLE_BAT(APINT_TYPE_PREFIX, 3899) +HANDLE_BAT(APINT_TYPE_PREFIX, 3900) +HANDLE_BAT(APINT_TYPE_PREFIX, 3901) +HANDLE_BAT(APINT_TYPE_PREFIX, 3902) +HANDLE_BAT(APINT_TYPE_PREFIX, 3903) +HANDLE_BAT(APINT_TYPE_PREFIX, 3904) +HANDLE_BAT(APINT_TYPE_PREFIX, 3905) +HANDLE_BAT(APINT_TYPE_PREFIX, 3906) +HANDLE_BAT(APINT_TYPE_PREFIX, 3907) +HANDLE_BAT(APINT_TYPE_PREFIX, 3908) +HANDLE_BAT(APINT_TYPE_PREFIX, 3909) +HANDLE_BAT(APINT_TYPE_PREFIX, 3910) +HANDLE_BAT(APINT_TYPE_PREFIX, 3911) +HANDLE_BAT(APINT_TYPE_PREFIX, 3912) +HANDLE_BAT(APINT_TYPE_PREFIX, 3913) +HANDLE_BAT(APINT_TYPE_PREFIX, 3914) +HANDLE_BAT(APINT_TYPE_PREFIX, 3915) +HANDLE_BAT(APINT_TYPE_PREFIX, 3916) +HANDLE_BAT(APINT_TYPE_PREFIX, 3917) +HANDLE_BAT(APINT_TYPE_PREFIX, 3918) +HANDLE_BAT(APINT_TYPE_PREFIX, 3919) +HANDLE_BAT(APINT_TYPE_PREFIX, 3920) +HANDLE_BAT(APINT_TYPE_PREFIX, 3921) +HANDLE_BAT(APINT_TYPE_PREFIX, 3922) +HANDLE_BAT(APINT_TYPE_PREFIX, 3923) +HANDLE_BAT(APINT_TYPE_PREFIX, 3924) +HANDLE_BAT(APINT_TYPE_PREFIX, 3925) +HANDLE_BAT(APINT_TYPE_PREFIX, 3926) +HANDLE_BAT(APINT_TYPE_PREFIX, 3927) +HANDLE_BAT(APINT_TYPE_PREFIX, 3928) +HANDLE_BAT(APINT_TYPE_PREFIX, 3929) +HANDLE_BAT(APINT_TYPE_PREFIX, 3930) +HANDLE_BAT(APINT_TYPE_PREFIX, 3931) +HANDLE_BAT(APINT_TYPE_PREFIX, 3932) +HANDLE_BAT(APINT_TYPE_PREFIX, 3933) +HANDLE_BAT(APINT_TYPE_PREFIX, 3934) +HANDLE_BAT(APINT_TYPE_PREFIX, 3935) +HANDLE_BAT(APINT_TYPE_PREFIX, 3936) +HANDLE_BAT(APINT_TYPE_PREFIX, 3937) +HANDLE_BAT(APINT_TYPE_PREFIX, 3938) +HANDLE_BAT(APINT_TYPE_PREFIX, 3939) +HANDLE_BAT(APINT_TYPE_PREFIX, 3940) +HANDLE_BAT(APINT_TYPE_PREFIX, 3941) +HANDLE_BAT(APINT_TYPE_PREFIX, 3942) +HANDLE_BAT(APINT_TYPE_PREFIX, 3943) +HANDLE_BAT(APINT_TYPE_PREFIX, 3944) +HANDLE_BAT(APINT_TYPE_PREFIX, 3945) +HANDLE_BAT(APINT_TYPE_PREFIX, 3946) +HANDLE_BAT(APINT_TYPE_PREFIX, 3947) +HANDLE_BAT(APINT_TYPE_PREFIX, 3948) +HANDLE_BAT(APINT_TYPE_PREFIX, 3949) +HANDLE_BAT(APINT_TYPE_PREFIX, 3950) +HANDLE_BAT(APINT_TYPE_PREFIX, 3951) +HANDLE_BAT(APINT_TYPE_PREFIX, 3952) +HANDLE_BAT(APINT_TYPE_PREFIX, 3953) +HANDLE_BAT(APINT_TYPE_PREFIX, 3954) +HANDLE_BAT(APINT_TYPE_PREFIX, 3955) +HANDLE_BAT(APINT_TYPE_PREFIX, 3956) +HANDLE_BAT(APINT_TYPE_PREFIX, 3957) +HANDLE_BAT(APINT_TYPE_PREFIX, 3958) +HANDLE_BAT(APINT_TYPE_PREFIX, 3959) +HANDLE_BAT(APINT_TYPE_PREFIX, 3960) +HANDLE_BAT(APINT_TYPE_PREFIX, 3961) +HANDLE_BAT(APINT_TYPE_PREFIX, 3962) +HANDLE_BAT(APINT_TYPE_PREFIX, 3963) +HANDLE_BAT(APINT_TYPE_PREFIX, 3964) +HANDLE_BAT(APINT_TYPE_PREFIX, 3965) +HANDLE_BAT(APINT_TYPE_PREFIX, 3966) +HANDLE_BAT(APINT_TYPE_PREFIX, 3967) +HANDLE_BAT(APINT_TYPE_PREFIX, 3968) +HANDLE_BAT(APINT_TYPE_PREFIX, 3969) +HANDLE_BAT(APINT_TYPE_PREFIX, 3970) +HANDLE_BAT(APINT_TYPE_PREFIX, 3971) +HANDLE_BAT(APINT_TYPE_PREFIX, 3972) +HANDLE_BAT(APINT_TYPE_PREFIX, 3973) +HANDLE_BAT(APINT_TYPE_PREFIX, 3974) +HANDLE_BAT(APINT_TYPE_PREFIX, 3975) +HANDLE_BAT(APINT_TYPE_PREFIX, 3976) +HANDLE_BAT(APINT_TYPE_PREFIX, 3977) +HANDLE_BAT(APINT_TYPE_PREFIX, 3978) +HANDLE_BAT(APINT_TYPE_PREFIX, 3979) +HANDLE_BAT(APINT_TYPE_PREFIX, 3980) +HANDLE_BAT(APINT_TYPE_PREFIX, 3981) +HANDLE_BAT(APINT_TYPE_PREFIX, 3982) +HANDLE_BAT(APINT_TYPE_PREFIX, 3983) +HANDLE_BAT(APINT_TYPE_PREFIX, 3984) +HANDLE_BAT(APINT_TYPE_PREFIX, 3985) +HANDLE_BAT(APINT_TYPE_PREFIX, 3986) +HANDLE_BAT(APINT_TYPE_PREFIX, 3987) +HANDLE_BAT(APINT_TYPE_PREFIX, 3988) +HANDLE_BAT(APINT_TYPE_PREFIX, 3989) +HANDLE_BAT(APINT_TYPE_PREFIX, 3990) +HANDLE_BAT(APINT_TYPE_PREFIX, 3991) +HANDLE_BAT(APINT_TYPE_PREFIX, 3992) +HANDLE_BAT(APINT_TYPE_PREFIX, 3993) +HANDLE_BAT(APINT_TYPE_PREFIX, 3994) +HANDLE_BAT(APINT_TYPE_PREFIX, 3995) +HANDLE_BAT(APINT_TYPE_PREFIX, 3996) +HANDLE_BAT(APINT_TYPE_PREFIX, 3997) +HANDLE_BAT(APINT_TYPE_PREFIX, 3998) +HANDLE_BAT(APINT_TYPE_PREFIX, 3999) +HANDLE_BAT(APINT_TYPE_PREFIX, 4000) +HANDLE_BAT(APINT_TYPE_PREFIX, 4001) +HANDLE_BAT(APINT_TYPE_PREFIX, 4002) +HANDLE_BAT(APINT_TYPE_PREFIX, 4003) +HANDLE_BAT(APINT_TYPE_PREFIX, 4004) +HANDLE_BAT(APINT_TYPE_PREFIX, 4005) +HANDLE_BAT(APINT_TYPE_PREFIX, 4006) +HANDLE_BAT(APINT_TYPE_PREFIX, 4007) +HANDLE_BAT(APINT_TYPE_PREFIX, 4008) +HANDLE_BAT(APINT_TYPE_PREFIX, 4009) +HANDLE_BAT(APINT_TYPE_PREFIX, 4010) +HANDLE_BAT(APINT_TYPE_PREFIX, 4011) +HANDLE_BAT(APINT_TYPE_PREFIX, 4012) +HANDLE_BAT(APINT_TYPE_PREFIX, 4013) +HANDLE_BAT(APINT_TYPE_PREFIX, 4014) +HANDLE_BAT(APINT_TYPE_PREFIX, 4015) +HANDLE_BAT(APINT_TYPE_PREFIX, 4016) +HANDLE_BAT(APINT_TYPE_PREFIX, 4017) +HANDLE_BAT(APINT_TYPE_PREFIX, 4018) +HANDLE_BAT(APINT_TYPE_PREFIX, 4019) +HANDLE_BAT(APINT_TYPE_PREFIX, 4020) +HANDLE_BAT(APINT_TYPE_PREFIX, 4021) +HANDLE_BAT(APINT_TYPE_PREFIX, 4022) +HANDLE_BAT(APINT_TYPE_PREFIX, 4023) +HANDLE_BAT(APINT_TYPE_PREFIX, 4024) +HANDLE_BAT(APINT_TYPE_PREFIX, 4025) +HANDLE_BAT(APINT_TYPE_PREFIX, 4026) +HANDLE_BAT(APINT_TYPE_PREFIX, 4027) +HANDLE_BAT(APINT_TYPE_PREFIX, 4028) +HANDLE_BAT(APINT_TYPE_PREFIX, 4029) +HANDLE_BAT(APINT_TYPE_PREFIX, 4030) +HANDLE_BAT(APINT_TYPE_PREFIX, 4031) +HANDLE_BAT(APINT_TYPE_PREFIX, 4032) +HANDLE_BAT(APINT_TYPE_PREFIX, 4033) +HANDLE_BAT(APINT_TYPE_PREFIX, 4034) +HANDLE_BAT(APINT_TYPE_PREFIX, 4035) +HANDLE_BAT(APINT_TYPE_PREFIX, 4036) +HANDLE_BAT(APINT_TYPE_PREFIX, 4037) +HANDLE_BAT(APINT_TYPE_PREFIX, 4038) +HANDLE_BAT(APINT_TYPE_PREFIX, 4039) +HANDLE_BAT(APINT_TYPE_PREFIX, 4040) +HANDLE_BAT(APINT_TYPE_PREFIX, 4041) +HANDLE_BAT(APINT_TYPE_PREFIX, 4042) +HANDLE_BAT(APINT_TYPE_PREFIX, 4043) +HANDLE_BAT(APINT_TYPE_PREFIX, 4044) +HANDLE_BAT(APINT_TYPE_PREFIX, 4045) +HANDLE_BAT(APINT_TYPE_PREFIX, 4046) +HANDLE_BAT(APINT_TYPE_PREFIX, 4047) +HANDLE_BAT(APINT_TYPE_PREFIX, 4048) +HANDLE_BAT(APINT_TYPE_PREFIX, 4049) +HANDLE_BAT(APINT_TYPE_PREFIX, 4050) +HANDLE_BAT(APINT_TYPE_PREFIX, 4051) +HANDLE_BAT(APINT_TYPE_PREFIX, 4052) +HANDLE_BAT(APINT_TYPE_PREFIX, 4053) +HANDLE_BAT(APINT_TYPE_PREFIX, 4054) +HANDLE_BAT(APINT_TYPE_PREFIX, 4055) +HANDLE_BAT(APINT_TYPE_PREFIX, 4056) +HANDLE_BAT(APINT_TYPE_PREFIX, 4057) +HANDLE_BAT(APINT_TYPE_PREFIX, 4058) +HANDLE_BAT(APINT_TYPE_PREFIX, 4059) +HANDLE_BAT(APINT_TYPE_PREFIX, 4060) +HANDLE_BAT(APINT_TYPE_PREFIX, 4061) +HANDLE_BAT(APINT_TYPE_PREFIX, 4062) +HANDLE_BAT(APINT_TYPE_PREFIX, 4063) +HANDLE_BAT(APINT_TYPE_PREFIX, 4064) +HANDLE_BAT(APINT_TYPE_PREFIX, 4065) +HANDLE_BAT(APINT_TYPE_PREFIX, 4066) +HANDLE_BAT(APINT_TYPE_PREFIX, 4067) +HANDLE_BAT(APINT_TYPE_PREFIX, 4068) +HANDLE_BAT(APINT_TYPE_PREFIX, 4069) +HANDLE_BAT(APINT_TYPE_PREFIX, 4070) +HANDLE_BAT(APINT_TYPE_PREFIX, 4071) +HANDLE_BAT(APINT_TYPE_PREFIX, 4072) +HANDLE_BAT(APINT_TYPE_PREFIX, 4073) +HANDLE_BAT(APINT_TYPE_PREFIX, 4074) +HANDLE_BAT(APINT_TYPE_PREFIX, 4075) +HANDLE_BAT(APINT_TYPE_PREFIX, 4076) +HANDLE_BAT(APINT_TYPE_PREFIX, 4077) +HANDLE_BAT(APINT_TYPE_PREFIX, 4078) +HANDLE_BAT(APINT_TYPE_PREFIX, 4079) +HANDLE_BAT(APINT_TYPE_PREFIX, 4080) +HANDLE_BAT(APINT_TYPE_PREFIX, 4081) +HANDLE_BAT(APINT_TYPE_PREFIX, 4082) +HANDLE_BAT(APINT_TYPE_PREFIX, 4083) +HANDLE_BAT(APINT_TYPE_PREFIX, 4084) +HANDLE_BAT(APINT_TYPE_PREFIX, 4085) +HANDLE_BAT(APINT_TYPE_PREFIX, 4086) +HANDLE_BAT(APINT_TYPE_PREFIX, 4087) +HANDLE_BAT(APINT_TYPE_PREFIX, 4088) +HANDLE_BAT(APINT_TYPE_PREFIX, 4089) +HANDLE_BAT(APINT_TYPE_PREFIX, 4090) +HANDLE_BAT(APINT_TYPE_PREFIX, 4091) +HANDLE_BAT(APINT_TYPE_PREFIX, 4092) +HANDLE_BAT(APINT_TYPE_PREFIX, 4093) +HANDLE_BAT(APINT_TYPE_PREFIX, 4094) +HANDLE_BAT(APINT_TYPE_PREFIX, 4095) +HANDLE_BAT(APINT_TYPE_PREFIX, 4096) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 4 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 4097) +HANDLE_BAT(, 4098) +HANDLE_BAT(, 4099) +HANDLE_BAT(, 4100) +HANDLE_BAT(, 4101) +HANDLE_BAT(, 4102) +HANDLE_BAT(, 4103) +HANDLE_BAT(, 4104) +HANDLE_BAT(, 4105) +HANDLE_BAT(, 4106) +HANDLE_BAT(, 4107) +HANDLE_BAT(, 4108) +HANDLE_BAT(, 4109) +HANDLE_BAT(, 4110) +HANDLE_BAT(, 4111) +HANDLE_BAT(, 4112) +HANDLE_BAT(, 4113) +HANDLE_BAT(, 4114) +HANDLE_BAT(, 4115) +HANDLE_BAT(, 4116) +HANDLE_BAT(, 4117) +HANDLE_BAT(, 4118) +HANDLE_BAT(, 4119) +HANDLE_BAT(, 4120) +HANDLE_BAT(, 4121) +HANDLE_BAT(, 4122) +HANDLE_BAT(, 4123) +HANDLE_BAT(, 4124) +HANDLE_BAT(, 4125) +HANDLE_BAT(, 4126) +HANDLE_BAT(, 4127) +HANDLE_BAT(, 4128) +HANDLE_BAT(, 4129) +HANDLE_BAT(, 4130) +HANDLE_BAT(, 4131) +HANDLE_BAT(, 4132) +HANDLE_BAT(, 4133) +HANDLE_BAT(, 4134) +HANDLE_BAT(, 4135) +HANDLE_BAT(, 4136) +HANDLE_BAT(, 4137) +HANDLE_BAT(, 4138) +HANDLE_BAT(, 4139) +HANDLE_BAT(, 4140) +HANDLE_BAT(, 4141) +HANDLE_BAT(, 4142) +HANDLE_BAT(, 4143) +HANDLE_BAT(, 4144) +HANDLE_BAT(, 4145) +HANDLE_BAT(, 4146) +HANDLE_BAT(, 4147) +HANDLE_BAT(, 4148) +HANDLE_BAT(, 4149) +HANDLE_BAT(, 4150) +HANDLE_BAT(, 4151) +HANDLE_BAT(, 4152) +HANDLE_BAT(, 4153) +HANDLE_BAT(, 4154) +HANDLE_BAT(, 4155) +HANDLE_BAT(, 4156) +HANDLE_BAT(, 4157) +HANDLE_BAT(, 4158) +HANDLE_BAT(, 4159) +HANDLE_BAT(, 4160) +HANDLE_BAT(, 4161) +HANDLE_BAT(, 4162) +HANDLE_BAT(, 4163) +HANDLE_BAT(, 4164) +HANDLE_BAT(, 4165) +HANDLE_BAT(, 4166) +HANDLE_BAT(, 4167) +HANDLE_BAT(, 4168) +HANDLE_BAT(, 4169) +HANDLE_BAT(, 4170) +HANDLE_BAT(, 4171) +HANDLE_BAT(, 4172) +HANDLE_BAT(, 4173) +HANDLE_BAT(, 4174) +HANDLE_BAT(, 4175) +HANDLE_BAT(, 4176) +HANDLE_BAT(, 4177) +HANDLE_BAT(, 4178) +HANDLE_BAT(, 4179) +HANDLE_BAT(, 4180) +HANDLE_BAT(, 4181) +HANDLE_BAT(, 4182) +HANDLE_BAT(, 4183) +HANDLE_BAT(, 4184) +HANDLE_BAT(, 4185) +HANDLE_BAT(, 4186) +HANDLE_BAT(, 4187) +HANDLE_BAT(, 4188) +HANDLE_BAT(, 4189) +HANDLE_BAT(, 4190) +HANDLE_BAT(, 4191) +HANDLE_BAT(, 4192) +HANDLE_BAT(, 4193) +HANDLE_BAT(, 4194) +HANDLE_BAT(, 4195) +HANDLE_BAT(, 4196) +HANDLE_BAT(, 4197) +HANDLE_BAT(, 4198) +HANDLE_BAT(, 4199) +HANDLE_BAT(, 4200) +HANDLE_BAT(, 4201) +HANDLE_BAT(, 4202) +HANDLE_BAT(, 4203) +HANDLE_BAT(, 4204) +HANDLE_BAT(, 4205) +HANDLE_BAT(, 4206) +HANDLE_BAT(, 4207) +HANDLE_BAT(, 4208) +HANDLE_BAT(, 4209) +HANDLE_BAT(, 4210) +HANDLE_BAT(, 4211) +HANDLE_BAT(, 4212) +HANDLE_BAT(, 4213) +HANDLE_BAT(, 4214) +HANDLE_BAT(, 4215) +HANDLE_BAT(, 4216) +HANDLE_BAT(, 4217) +HANDLE_BAT(, 4218) +HANDLE_BAT(, 4219) +HANDLE_BAT(, 4220) +HANDLE_BAT(, 4221) +HANDLE_BAT(, 4222) +HANDLE_BAT(, 4223) +HANDLE_BAT(, 4224) +HANDLE_BAT(, 4225) +HANDLE_BAT(, 4226) +HANDLE_BAT(, 4227) +HANDLE_BAT(, 4228) +HANDLE_BAT(, 4229) +HANDLE_BAT(, 4230) +HANDLE_BAT(, 4231) +HANDLE_BAT(, 4232) +HANDLE_BAT(, 4233) +HANDLE_BAT(, 4234) +HANDLE_BAT(, 4235) +HANDLE_BAT(, 4236) +HANDLE_BAT(, 4237) +HANDLE_BAT(, 4238) +HANDLE_BAT(, 4239) +HANDLE_BAT(, 4240) +HANDLE_BAT(, 4241) +HANDLE_BAT(, 4242) +HANDLE_BAT(, 4243) +HANDLE_BAT(, 4244) +HANDLE_BAT(, 4245) +HANDLE_BAT(, 4246) +HANDLE_BAT(, 4247) +HANDLE_BAT(, 4248) +HANDLE_BAT(, 4249) +HANDLE_BAT(, 4250) +HANDLE_BAT(, 4251) +HANDLE_BAT(, 4252) +HANDLE_BAT(, 4253) +HANDLE_BAT(, 4254) +HANDLE_BAT(, 4255) +HANDLE_BAT(, 4256) +HANDLE_BAT(, 4257) +HANDLE_BAT(, 4258) +HANDLE_BAT(, 4259) +HANDLE_BAT(, 4260) +HANDLE_BAT(, 4261) +HANDLE_BAT(, 4262) +HANDLE_BAT(, 4263) +HANDLE_BAT(, 4264) +HANDLE_BAT(, 4265) +HANDLE_BAT(, 4266) +HANDLE_BAT(, 4267) +HANDLE_BAT(, 4268) +HANDLE_BAT(, 4269) +HANDLE_BAT(, 4270) +HANDLE_BAT(, 4271) +HANDLE_BAT(, 4272) +HANDLE_BAT(, 4273) +HANDLE_BAT(, 4274) +HANDLE_BAT(, 4275) +HANDLE_BAT(, 4276) +HANDLE_BAT(, 4277) +HANDLE_BAT(, 4278) +HANDLE_BAT(, 4279) +HANDLE_BAT(, 4280) +HANDLE_BAT(, 4281) +HANDLE_BAT(, 4282) +HANDLE_BAT(, 4283) +HANDLE_BAT(, 4284) +HANDLE_BAT(, 4285) +HANDLE_BAT(, 4286) +HANDLE_BAT(, 4287) +HANDLE_BAT(, 4288) +HANDLE_BAT(, 4289) +HANDLE_BAT(, 4290) +HANDLE_BAT(, 4291) +HANDLE_BAT(, 4292) +HANDLE_BAT(, 4293) +HANDLE_BAT(, 4294) +HANDLE_BAT(, 4295) +HANDLE_BAT(, 4296) +HANDLE_BAT(, 4297) +HANDLE_BAT(, 4298) +HANDLE_BAT(, 4299) +HANDLE_BAT(, 4300) +HANDLE_BAT(, 4301) +HANDLE_BAT(, 4302) +HANDLE_BAT(, 4303) +HANDLE_BAT(, 4304) +HANDLE_BAT(, 4305) +HANDLE_BAT(, 4306) +HANDLE_BAT(, 4307) +HANDLE_BAT(, 4308) +HANDLE_BAT(, 4309) +HANDLE_BAT(, 4310) +HANDLE_BAT(, 4311) +HANDLE_BAT(, 4312) +HANDLE_BAT(, 4313) +HANDLE_BAT(, 4314) +HANDLE_BAT(, 4315) +HANDLE_BAT(, 4316) +HANDLE_BAT(, 4317) +HANDLE_BAT(, 4318) +HANDLE_BAT(, 4319) +HANDLE_BAT(, 4320) +HANDLE_BAT(, 4321) +HANDLE_BAT(, 4322) +HANDLE_BAT(, 4323) +HANDLE_BAT(, 4324) +HANDLE_BAT(, 4325) +HANDLE_BAT(, 4326) +HANDLE_BAT(, 4327) +HANDLE_BAT(, 4328) +HANDLE_BAT(, 4329) +HANDLE_BAT(, 4330) +HANDLE_BAT(, 4331) +HANDLE_BAT(, 4332) +HANDLE_BAT(, 4333) +HANDLE_BAT(, 4334) +HANDLE_BAT(, 4335) +HANDLE_BAT(, 4336) +HANDLE_BAT(, 4337) +HANDLE_BAT(, 4338) +HANDLE_BAT(, 4339) +HANDLE_BAT(, 4340) +HANDLE_BAT(, 4341) +HANDLE_BAT(, 4342) +HANDLE_BAT(, 4343) +HANDLE_BAT(, 4344) +HANDLE_BAT(, 4345) +HANDLE_BAT(, 4346) +HANDLE_BAT(, 4347) +HANDLE_BAT(, 4348) +HANDLE_BAT(, 4349) +HANDLE_BAT(, 4350) +HANDLE_BAT(, 4351) +HANDLE_BAT(, 4352) +HANDLE_BAT(, 4353) +HANDLE_BAT(, 4354) +HANDLE_BAT(, 4355) +HANDLE_BAT(, 4356) +HANDLE_BAT(, 4357) +HANDLE_BAT(, 4358) +HANDLE_BAT(, 4359) +HANDLE_BAT(, 4360) +HANDLE_BAT(, 4361) +HANDLE_BAT(, 4362) +HANDLE_BAT(, 4363) +HANDLE_BAT(, 4364) +HANDLE_BAT(, 4365) +HANDLE_BAT(, 4366) +HANDLE_BAT(, 4367) +HANDLE_BAT(, 4368) +HANDLE_BAT(, 4369) +HANDLE_BAT(, 4370) +HANDLE_BAT(, 4371) +HANDLE_BAT(, 4372) +HANDLE_BAT(, 4373) +HANDLE_BAT(, 4374) +HANDLE_BAT(, 4375) +HANDLE_BAT(, 4376) +HANDLE_BAT(, 4377) +HANDLE_BAT(, 4378) +HANDLE_BAT(, 4379) +HANDLE_BAT(, 4380) +HANDLE_BAT(, 4381) +HANDLE_BAT(, 4382) +HANDLE_BAT(, 4383) +HANDLE_BAT(, 4384) +HANDLE_BAT(, 4385) +HANDLE_BAT(, 4386) +HANDLE_BAT(, 4387) +HANDLE_BAT(, 4388) +HANDLE_BAT(, 4389) +HANDLE_BAT(, 4390) +HANDLE_BAT(, 4391) +HANDLE_BAT(, 4392) +HANDLE_BAT(, 4393) +HANDLE_BAT(, 4394) +HANDLE_BAT(, 4395) +HANDLE_BAT(, 4396) +HANDLE_BAT(, 4397) +HANDLE_BAT(, 4398) +HANDLE_BAT(, 4399) +HANDLE_BAT(, 4400) +HANDLE_BAT(, 4401) +HANDLE_BAT(, 4402) +HANDLE_BAT(, 4403) +HANDLE_BAT(, 4404) +HANDLE_BAT(, 4405) +HANDLE_BAT(, 4406) +HANDLE_BAT(, 4407) +HANDLE_BAT(, 4408) +HANDLE_BAT(, 4409) +HANDLE_BAT(, 4410) +HANDLE_BAT(, 4411) +HANDLE_BAT(, 4412) +HANDLE_BAT(, 4413) +HANDLE_BAT(, 4414) +HANDLE_BAT(, 4415) +HANDLE_BAT(, 4416) +HANDLE_BAT(, 4417) +HANDLE_BAT(, 4418) +HANDLE_BAT(, 4419) +HANDLE_BAT(, 4420) +HANDLE_BAT(, 4421) +HANDLE_BAT(, 4422) +HANDLE_BAT(, 4423) +HANDLE_BAT(, 4424) +HANDLE_BAT(, 4425) +HANDLE_BAT(, 4426) +HANDLE_BAT(, 4427) +HANDLE_BAT(, 4428) +HANDLE_BAT(, 4429) +HANDLE_BAT(, 4430) +HANDLE_BAT(, 4431) +HANDLE_BAT(, 4432) +HANDLE_BAT(, 4433) +HANDLE_BAT(, 4434) +HANDLE_BAT(, 4435) +HANDLE_BAT(, 4436) +HANDLE_BAT(, 4437) +HANDLE_BAT(, 4438) +HANDLE_BAT(, 4439) +HANDLE_BAT(, 4440) +HANDLE_BAT(, 4441) +HANDLE_BAT(, 4442) +HANDLE_BAT(, 4443) +HANDLE_BAT(, 4444) +HANDLE_BAT(, 4445) +HANDLE_BAT(, 4446) +HANDLE_BAT(, 4447) +HANDLE_BAT(, 4448) +HANDLE_BAT(, 4449) +HANDLE_BAT(, 4450) +HANDLE_BAT(, 4451) +HANDLE_BAT(, 4452) +HANDLE_BAT(, 4453) +HANDLE_BAT(, 4454) +HANDLE_BAT(, 4455) +HANDLE_BAT(, 4456) +HANDLE_BAT(, 4457) +HANDLE_BAT(, 4458) +HANDLE_BAT(, 4459) +HANDLE_BAT(, 4460) +HANDLE_BAT(, 4461) +HANDLE_BAT(, 4462) +HANDLE_BAT(, 4463) +HANDLE_BAT(, 4464) +HANDLE_BAT(, 4465) +HANDLE_BAT(, 4466) +HANDLE_BAT(, 4467) +HANDLE_BAT(, 4468) +HANDLE_BAT(, 4469) +HANDLE_BAT(, 4470) +HANDLE_BAT(, 4471) +HANDLE_BAT(, 4472) +HANDLE_BAT(, 4473) +HANDLE_BAT(, 4474) +HANDLE_BAT(, 4475) +HANDLE_BAT(, 4476) +HANDLE_BAT(, 4477) +HANDLE_BAT(, 4478) +HANDLE_BAT(, 4479) +HANDLE_BAT(, 4480) +HANDLE_BAT(, 4481) +HANDLE_BAT(, 4482) +HANDLE_BAT(, 4483) +HANDLE_BAT(, 4484) +HANDLE_BAT(, 4485) +HANDLE_BAT(, 4486) +HANDLE_BAT(, 4487) +HANDLE_BAT(, 4488) +HANDLE_BAT(, 4489) +HANDLE_BAT(, 4490) +HANDLE_BAT(, 4491) +HANDLE_BAT(, 4492) +HANDLE_BAT(, 4493) +HANDLE_BAT(, 4494) +HANDLE_BAT(, 4495) +HANDLE_BAT(, 4496) +HANDLE_BAT(, 4497) +HANDLE_BAT(, 4498) +HANDLE_BAT(, 4499) +HANDLE_BAT(, 4500) +HANDLE_BAT(, 4501) +HANDLE_BAT(, 4502) +HANDLE_BAT(, 4503) +HANDLE_BAT(, 4504) +HANDLE_BAT(, 4505) +HANDLE_BAT(, 4506) +HANDLE_BAT(, 4507) +HANDLE_BAT(, 4508) +HANDLE_BAT(, 4509) +HANDLE_BAT(, 4510) +HANDLE_BAT(, 4511) +HANDLE_BAT(, 4512) +HANDLE_BAT(, 4513) +HANDLE_BAT(, 4514) +HANDLE_BAT(, 4515) +HANDLE_BAT(, 4516) +HANDLE_BAT(, 4517) +HANDLE_BAT(, 4518) +HANDLE_BAT(, 4519) +HANDLE_BAT(, 4520) +HANDLE_BAT(, 4521) +HANDLE_BAT(, 4522) +HANDLE_BAT(, 4523) +HANDLE_BAT(, 4524) +HANDLE_BAT(, 4525) +HANDLE_BAT(, 4526) +HANDLE_BAT(, 4527) +HANDLE_BAT(, 4528) +HANDLE_BAT(, 4529) +HANDLE_BAT(, 4530) +HANDLE_BAT(, 4531) +HANDLE_BAT(, 4532) +HANDLE_BAT(, 4533) +HANDLE_BAT(, 4534) +HANDLE_BAT(, 4535) +HANDLE_BAT(, 4536) +HANDLE_BAT(, 4537) +HANDLE_BAT(, 4538) +HANDLE_BAT(, 4539) +HANDLE_BAT(, 4540) +HANDLE_BAT(, 4541) +HANDLE_BAT(, 4542) +HANDLE_BAT(, 4543) +HANDLE_BAT(, 4544) +HANDLE_BAT(, 4545) +HANDLE_BAT(, 4546) +HANDLE_BAT(, 4547) +HANDLE_BAT(, 4548) +HANDLE_BAT(, 4549) +HANDLE_BAT(, 4550) +HANDLE_BAT(, 4551) +HANDLE_BAT(, 4552) +HANDLE_BAT(, 4553) +HANDLE_BAT(, 4554) +HANDLE_BAT(, 4555) +HANDLE_BAT(, 4556) +HANDLE_BAT(, 4557) +HANDLE_BAT(, 4558) +HANDLE_BAT(, 4559) +HANDLE_BAT(, 4560) +HANDLE_BAT(, 4561) +HANDLE_BAT(, 4562) +HANDLE_BAT(, 4563) +HANDLE_BAT(, 4564) +HANDLE_BAT(, 4565) +HANDLE_BAT(, 4566) +HANDLE_BAT(, 4567) +HANDLE_BAT(, 4568) +HANDLE_BAT(, 4569) +HANDLE_BAT(, 4570) +HANDLE_BAT(, 4571) +HANDLE_BAT(, 4572) +HANDLE_BAT(, 4573) +HANDLE_BAT(, 4574) +HANDLE_BAT(, 4575) +HANDLE_BAT(, 4576) +HANDLE_BAT(, 4577) +HANDLE_BAT(, 4578) +HANDLE_BAT(, 4579) +HANDLE_BAT(, 4580) +HANDLE_BAT(, 4581) +HANDLE_BAT(, 4582) +HANDLE_BAT(, 4583) +HANDLE_BAT(, 4584) +HANDLE_BAT(, 4585) +HANDLE_BAT(, 4586) +HANDLE_BAT(, 4587) +HANDLE_BAT(, 4588) +HANDLE_BAT(, 4589) +HANDLE_BAT(, 4590) +HANDLE_BAT(, 4591) +HANDLE_BAT(, 4592) +HANDLE_BAT(, 4593) +HANDLE_BAT(, 4594) +HANDLE_BAT(, 4595) +HANDLE_BAT(, 4596) +HANDLE_BAT(, 4597) +HANDLE_BAT(, 4598) +HANDLE_BAT(, 4599) +HANDLE_BAT(, 4600) +HANDLE_BAT(, 4601) +HANDLE_BAT(, 4602) +HANDLE_BAT(, 4603) +HANDLE_BAT(, 4604) +HANDLE_BAT(, 4605) +HANDLE_BAT(, 4606) +HANDLE_BAT(, 4607) +HANDLE_BAT(, 4608) +HANDLE_BAT(, 4609) +HANDLE_BAT(, 4610) +HANDLE_BAT(, 4611) +HANDLE_BAT(, 4612) +HANDLE_BAT(, 4613) +HANDLE_BAT(, 4614) +HANDLE_BAT(, 4615) +HANDLE_BAT(, 4616) +HANDLE_BAT(, 4617) +HANDLE_BAT(, 4618) +HANDLE_BAT(, 4619) +HANDLE_BAT(, 4620) +HANDLE_BAT(, 4621) +HANDLE_BAT(, 4622) +HANDLE_BAT(, 4623) +HANDLE_BAT(, 4624) +HANDLE_BAT(, 4625) +HANDLE_BAT(, 4626) +HANDLE_BAT(, 4627) +HANDLE_BAT(, 4628) +HANDLE_BAT(, 4629) +HANDLE_BAT(, 4630) +HANDLE_BAT(, 4631) +HANDLE_BAT(, 4632) +HANDLE_BAT(, 4633) +HANDLE_BAT(, 4634) +HANDLE_BAT(, 4635) +HANDLE_BAT(, 4636) +HANDLE_BAT(, 4637) +HANDLE_BAT(, 4638) +HANDLE_BAT(, 4639) +HANDLE_BAT(, 4640) +HANDLE_BAT(, 4641) +HANDLE_BAT(, 4642) +HANDLE_BAT(, 4643) +HANDLE_BAT(, 4644) +HANDLE_BAT(, 4645) +HANDLE_BAT(, 4646) +HANDLE_BAT(, 4647) +HANDLE_BAT(, 4648) +HANDLE_BAT(, 4649) +HANDLE_BAT(, 4650) +HANDLE_BAT(, 4651) +HANDLE_BAT(, 4652) +HANDLE_BAT(, 4653) +HANDLE_BAT(, 4654) +HANDLE_BAT(, 4655) +HANDLE_BAT(, 4656) +HANDLE_BAT(, 4657) +HANDLE_BAT(, 4658) +HANDLE_BAT(, 4659) +HANDLE_BAT(, 4660) +HANDLE_BAT(, 4661) +HANDLE_BAT(, 4662) +HANDLE_BAT(, 4663) +HANDLE_BAT(, 4664) +HANDLE_BAT(, 4665) +HANDLE_BAT(, 4666) +HANDLE_BAT(, 4667) +HANDLE_BAT(, 4668) +HANDLE_BAT(, 4669) +HANDLE_BAT(, 4670) +HANDLE_BAT(, 4671) +HANDLE_BAT(, 4672) +HANDLE_BAT(, 4673) +HANDLE_BAT(, 4674) +HANDLE_BAT(, 4675) +HANDLE_BAT(, 4676) +HANDLE_BAT(, 4677) +HANDLE_BAT(, 4678) +HANDLE_BAT(, 4679) +HANDLE_BAT(, 4680) +HANDLE_BAT(, 4681) +HANDLE_BAT(, 4682) +HANDLE_BAT(, 4683) +HANDLE_BAT(, 4684) +HANDLE_BAT(, 4685) +HANDLE_BAT(, 4686) +HANDLE_BAT(, 4687) +HANDLE_BAT(, 4688) +HANDLE_BAT(, 4689) +HANDLE_BAT(, 4690) +HANDLE_BAT(, 4691) +HANDLE_BAT(, 4692) +HANDLE_BAT(, 4693) +HANDLE_BAT(, 4694) +HANDLE_BAT(, 4695) +HANDLE_BAT(, 4696) +HANDLE_BAT(, 4697) +HANDLE_BAT(, 4698) +HANDLE_BAT(, 4699) +HANDLE_BAT(, 4700) +HANDLE_BAT(, 4701) +HANDLE_BAT(, 4702) +HANDLE_BAT(, 4703) +HANDLE_BAT(, 4704) +HANDLE_BAT(, 4705) +HANDLE_BAT(, 4706) +HANDLE_BAT(, 4707) +HANDLE_BAT(, 4708) +HANDLE_BAT(, 4709) +HANDLE_BAT(, 4710) +HANDLE_BAT(, 4711) +HANDLE_BAT(, 4712) +HANDLE_BAT(, 4713) +HANDLE_BAT(, 4714) +HANDLE_BAT(, 4715) +HANDLE_BAT(, 4716) +HANDLE_BAT(, 4717) +HANDLE_BAT(, 4718) +HANDLE_BAT(, 4719) +HANDLE_BAT(, 4720) +HANDLE_BAT(, 4721) +HANDLE_BAT(, 4722) +HANDLE_BAT(, 4723) +HANDLE_BAT(, 4724) +HANDLE_BAT(, 4725) +HANDLE_BAT(, 4726) +HANDLE_BAT(, 4727) +HANDLE_BAT(, 4728) +HANDLE_BAT(, 4729) +HANDLE_BAT(, 4730) +HANDLE_BAT(, 4731) +HANDLE_BAT(, 4732) +HANDLE_BAT(, 4733) +HANDLE_BAT(, 4734) +HANDLE_BAT(, 4735) +HANDLE_BAT(, 4736) +HANDLE_BAT(, 4737) +HANDLE_BAT(, 4738) +HANDLE_BAT(, 4739) +HANDLE_BAT(, 4740) +HANDLE_BAT(, 4741) +HANDLE_BAT(, 4742) +HANDLE_BAT(, 4743) +HANDLE_BAT(, 4744) +HANDLE_BAT(, 4745) +HANDLE_BAT(, 4746) +HANDLE_BAT(, 4747) +HANDLE_BAT(, 4748) +HANDLE_BAT(, 4749) +HANDLE_BAT(, 4750) +HANDLE_BAT(, 4751) +HANDLE_BAT(, 4752) +HANDLE_BAT(, 4753) +HANDLE_BAT(, 4754) +HANDLE_BAT(, 4755) +HANDLE_BAT(, 4756) +HANDLE_BAT(, 4757) +HANDLE_BAT(, 4758) +HANDLE_BAT(, 4759) +HANDLE_BAT(, 4760) +HANDLE_BAT(, 4761) +HANDLE_BAT(, 4762) +HANDLE_BAT(, 4763) +HANDLE_BAT(, 4764) +HANDLE_BAT(, 4765) +HANDLE_BAT(, 4766) +HANDLE_BAT(, 4767) +HANDLE_BAT(, 4768) +HANDLE_BAT(, 4769) +HANDLE_BAT(, 4770) +HANDLE_BAT(, 4771) +HANDLE_BAT(, 4772) +HANDLE_BAT(, 4773) +HANDLE_BAT(, 4774) +HANDLE_BAT(, 4775) +HANDLE_BAT(, 4776) +HANDLE_BAT(, 4777) +HANDLE_BAT(, 4778) +HANDLE_BAT(, 4779) +HANDLE_BAT(, 4780) +HANDLE_BAT(, 4781) +HANDLE_BAT(, 4782) +HANDLE_BAT(, 4783) +HANDLE_BAT(, 4784) +HANDLE_BAT(, 4785) +HANDLE_BAT(, 4786) +HANDLE_BAT(, 4787) +HANDLE_BAT(, 4788) +HANDLE_BAT(, 4789) +HANDLE_BAT(, 4790) +HANDLE_BAT(, 4791) +HANDLE_BAT(, 4792) +HANDLE_BAT(, 4793) +HANDLE_BAT(, 4794) +HANDLE_BAT(, 4795) +HANDLE_BAT(, 4796) +HANDLE_BAT(, 4797) +HANDLE_BAT(, 4798) +HANDLE_BAT(, 4799) +HANDLE_BAT(, 4800) +HANDLE_BAT(, 4801) +HANDLE_BAT(, 4802) +HANDLE_BAT(, 4803) +HANDLE_BAT(, 4804) +HANDLE_BAT(, 4805) +HANDLE_BAT(, 4806) +HANDLE_BAT(, 4807) +HANDLE_BAT(, 4808) +HANDLE_BAT(, 4809) +HANDLE_BAT(, 4810) +HANDLE_BAT(, 4811) +HANDLE_BAT(, 4812) +HANDLE_BAT(, 4813) +HANDLE_BAT(, 4814) +HANDLE_BAT(, 4815) +HANDLE_BAT(, 4816) +HANDLE_BAT(, 4817) +HANDLE_BAT(, 4818) +HANDLE_BAT(, 4819) +HANDLE_BAT(, 4820) +HANDLE_BAT(, 4821) +HANDLE_BAT(, 4822) +HANDLE_BAT(, 4823) +HANDLE_BAT(, 4824) +HANDLE_BAT(, 4825) +HANDLE_BAT(, 4826) +HANDLE_BAT(, 4827) +HANDLE_BAT(, 4828) +HANDLE_BAT(, 4829) +HANDLE_BAT(, 4830) +HANDLE_BAT(, 4831) +HANDLE_BAT(, 4832) +HANDLE_BAT(, 4833) +HANDLE_BAT(, 4834) +HANDLE_BAT(, 4835) +HANDLE_BAT(, 4836) +HANDLE_BAT(, 4837) +HANDLE_BAT(, 4838) +HANDLE_BAT(, 4839) +HANDLE_BAT(, 4840) +HANDLE_BAT(, 4841) +HANDLE_BAT(, 4842) +HANDLE_BAT(, 4843) +HANDLE_BAT(, 4844) +HANDLE_BAT(, 4845) +HANDLE_BAT(, 4846) +HANDLE_BAT(, 4847) +HANDLE_BAT(, 4848) +HANDLE_BAT(, 4849) +HANDLE_BAT(, 4850) +HANDLE_BAT(, 4851) +HANDLE_BAT(, 4852) +HANDLE_BAT(, 4853) +HANDLE_BAT(, 4854) +HANDLE_BAT(, 4855) +HANDLE_BAT(, 4856) +HANDLE_BAT(, 4857) +HANDLE_BAT(, 4858) +HANDLE_BAT(, 4859) +HANDLE_BAT(, 4860) +HANDLE_BAT(, 4861) +HANDLE_BAT(, 4862) +HANDLE_BAT(, 4863) +HANDLE_BAT(, 4864) +HANDLE_BAT(, 4865) +HANDLE_BAT(, 4866) +HANDLE_BAT(, 4867) +HANDLE_BAT(, 4868) +HANDLE_BAT(, 4869) +HANDLE_BAT(, 4870) +HANDLE_BAT(, 4871) +HANDLE_BAT(, 4872) +HANDLE_BAT(, 4873) +HANDLE_BAT(, 4874) +HANDLE_BAT(, 4875) +HANDLE_BAT(, 4876) +HANDLE_BAT(, 4877) +HANDLE_BAT(, 4878) +HANDLE_BAT(, 4879) +HANDLE_BAT(, 4880) +HANDLE_BAT(, 4881) +HANDLE_BAT(, 4882) +HANDLE_BAT(, 4883) +HANDLE_BAT(, 4884) +HANDLE_BAT(, 4885) +HANDLE_BAT(, 4886) +HANDLE_BAT(, 4887) +HANDLE_BAT(, 4888) +HANDLE_BAT(, 4889) +HANDLE_BAT(, 4890) +HANDLE_BAT(, 4891) +HANDLE_BAT(, 4892) +HANDLE_BAT(, 4893) +HANDLE_BAT(, 4894) +HANDLE_BAT(, 4895) +HANDLE_BAT(, 4896) +HANDLE_BAT(, 4897) +HANDLE_BAT(, 4898) +HANDLE_BAT(, 4899) +HANDLE_BAT(, 4900) +HANDLE_BAT(, 4901) +HANDLE_BAT(, 4902) +HANDLE_BAT(, 4903) +HANDLE_BAT(, 4904) +HANDLE_BAT(, 4905) +HANDLE_BAT(, 4906) +HANDLE_BAT(, 4907) +HANDLE_BAT(, 4908) +HANDLE_BAT(, 4909) +HANDLE_BAT(, 4910) +HANDLE_BAT(, 4911) +HANDLE_BAT(, 4912) +HANDLE_BAT(, 4913) +HANDLE_BAT(, 4914) +HANDLE_BAT(, 4915) +HANDLE_BAT(, 4916) +HANDLE_BAT(, 4917) +HANDLE_BAT(, 4918) +HANDLE_BAT(, 4919) +HANDLE_BAT(, 4920) +HANDLE_BAT(, 4921) +HANDLE_BAT(, 4922) +HANDLE_BAT(, 4923) +HANDLE_BAT(, 4924) +HANDLE_BAT(, 4925) +HANDLE_BAT(, 4926) +HANDLE_BAT(, 4927) +HANDLE_BAT(, 4928) +HANDLE_BAT(, 4929) +HANDLE_BAT(, 4930) +HANDLE_BAT(, 4931) +HANDLE_BAT(, 4932) +HANDLE_BAT(, 4933) +HANDLE_BAT(, 4934) +HANDLE_BAT(, 4935) +HANDLE_BAT(, 4936) +HANDLE_BAT(, 4937) +HANDLE_BAT(, 4938) +HANDLE_BAT(, 4939) +HANDLE_BAT(, 4940) +HANDLE_BAT(, 4941) +HANDLE_BAT(, 4942) +HANDLE_BAT(, 4943) +HANDLE_BAT(, 4944) +HANDLE_BAT(, 4945) +HANDLE_BAT(, 4946) +HANDLE_BAT(, 4947) +HANDLE_BAT(, 4948) +HANDLE_BAT(, 4949) +HANDLE_BAT(, 4950) +HANDLE_BAT(, 4951) +HANDLE_BAT(, 4952) +HANDLE_BAT(, 4953) +HANDLE_BAT(, 4954) +HANDLE_BAT(, 4955) +HANDLE_BAT(, 4956) +HANDLE_BAT(, 4957) +HANDLE_BAT(, 4958) +HANDLE_BAT(, 4959) +HANDLE_BAT(, 4960) +HANDLE_BAT(, 4961) +HANDLE_BAT(, 4962) +HANDLE_BAT(, 4963) +HANDLE_BAT(, 4964) +HANDLE_BAT(, 4965) +HANDLE_BAT(, 4966) +HANDLE_BAT(, 4967) +HANDLE_BAT(, 4968) +HANDLE_BAT(, 4969) +HANDLE_BAT(, 4970) +HANDLE_BAT(, 4971) +HANDLE_BAT(, 4972) +HANDLE_BAT(, 4973) +HANDLE_BAT(, 4974) +HANDLE_BAT(, 4975) +HANDLE_BAT(, 4976) +HANDLE_BAT(, 4977) +HANDLE_BAT(, 4978) +HANDLE_BAT(, 4979) +HANDLE_BAT(, 4980) +HANDLE_BAT(, 4981) +HANDLE_BAT(, 4982) +HANDLE_BAT(, 4983) +HANDLE_BAT(, 4984) +HANDLE_BAT(, 4985) +HANDLE_BAT(, 4986) +HANDLE_BAT(, 4987) +HANDLE_BAT(, 4988) +HANDLE_BAT(, 4989) +HANDLE_BAT(, 4990) +HANDLE_BAT(, 4991) +HANDLE_BAT(, 4992) +HANDLE_BAT(, 4993) +HANDLE_BAT(, 4994) +HANDLE_BAT(, 4995) +HANDLE_BAT(, 4996) +HANDLE_BAT(, 4997) +HANDLE_BAT(, 4998) +HANDLE_BAT(, 4999) +HANDLE_BAT(, 5000) +HANDLE_BAT(, 5001) +HANDLE_BAT(, 5002) +HANDLE_BAT(, 5003) +HANDLE_BAT(, 5004) +HANDLE_BAT(, 5005) +HANDLE_BAT(, 5006) +HANDLE_BAT(, 5007) +HANDLE_BAT(, 5008) +HANDLE_BAT(, 5009) +HANDLE_BAT(, 5010) +HANDLE_BAT(, 5011) +HANDLE_BAT(, 5012) +HANDLE_BAT(, 5013) +HANDLE_BAT(, 5014) +HANDLE_BAT(, 5015) +HANDLE_BAT(, 5016) +HANDLE_BAT(, 5017) +HANDLE_BAT(, 5018) +HANDLE_BAT(, 5019) +HANDLE_BAT(, 5020) +HANDLE_BAT(, 5021) +HANDLE_BAT(, 5022) +HANDLE_BAT(, 5023) +HANDLE_BAT(, 5024) +HANDLE_BAT(, 5025) +HANDLE_BAT(, 5026) +HANDLE_BAT(, 5027) +HANDLE_BAT(, 5028) +HANDLE_BAT(, 5029) +HANDLE_BAT(, 5030) +HANDLE_BAT(, 5031) +HANDLE_BAT(, 5032) +HANDLE_BAT(, 5033) +HANDLE_BAT(, 5034) +HANDLE_BAT(, 5035) +HANDLE_BAT(, 5036) +HANDLE_BAT(, 5037) +HANDLE_BAT(, 5038) +HANDLE_BAT(, 5039) +HANDLE_BAT(, 5040) +HANDLE_BAT(, 5041) +HANDLE_BAT(, 5042) +HANDLE_BAT(, 5043) +HANDLE_BAT(, 5044) +HANDLE_BAT(, 5045) +HANDLE_BAT(, 5046) +HANDLE_BAT(, 5047) +HANDLE_BAT(, 5048) +HANDLE_BAT(, 5049) +HANDLE_BAT(, 5050) +HANDLE_BAT(, 5051) +HANDLE_BAT(, 5052) +HANDLE_BAT(, 5053) +HANDLE_BAT(, 5054) +HANDLE_BAT(, 5055) +HANDLE_BAT(, 5056) +HANDLE_BAT(, 5057) +HANDLE_BAT(, 5058) +HANDLE_BAT(, 5059) +HANDLE_BAT(, 5060) +HANDLE_BAT(, 5061) +HANDLE_BAT(, 5062) +HANDLE_BAT(, 5063) +HANDLE_BAT(, 5064) +HANDLE_BAT(, 5065) +HANDLE_BAT(, 5066) +HANDLE_BAT(, 5067) +HANDLE_BAT(, 5068) +HANDLE_BAT(, 5069) +HANDLE_BAT(, 5070) +HANDLE_BAT(, 5071) +HANDLE_BAT(, 5072) +HANDLE_BAT(, 5073) +HANDLE_BAT(, 5074) +HANDLE_BAT(, 5075) +HANDLE_BAT(, 5076) +HANDLE_BAT(, 5077) +HANDLE_BAT(, 5078) +HANDLE_BAT(, 5079) +HANDLE_BAT(, 5080) +HANDLE_BAT(, 5081) +HANDLE_BAT(, 5082) +HANDLE_BAT(, 5083) +HANDLE_BAT(, 5084) +HANDLE_BAT(, 5085) +HANDLE_BAT(, 5086) +HANDLE_BAT(, 5087) +HANDLE_BAT(, 5088) +HANDLE_BAT(, 5089) +HANDLE_BAT(, 5090) +HANDLE_BAT(, 5091) +HANDLE_BAT(, 5092) +HANDLE_BAT(, 5093) +HANDLE_BAT(, 5094) +HANDLE_BAT(, 5095) +HANDLE_BAT(, 5096) +HANDLE_BAT(, 5097) +HANDLE_BAT(, 5098) +HANDLE_BAT(, 5099) +HANDLE_BAT(, 5100) +HANDLE_BAT(, 5101) +HANDLE_BAT(, 5102) +HANDLE_BAT(, 5103) +HANDLE_BAT(, 5104) +HANDLE_BAT(, 5105) +HANDLE_BAT(, 5106) +HANDLE_BAT(, 5107) +HANDLE_BAT(, 5108) +HANDLE_BAT(, 5109) +HANDLE_BAT(, 5110) +HANDLE_BAT(, 5111) +HANDLE_BAT(, 5112) +HANDLE_BAT(, 5113) +HANDLE_BAT(, 5114) +HANDLE_BAT(, 5115) +HANDLE_BAT(, 5116) +HANDLE_BAT(, 5117) +HANDLE_BAT(, 5118) +HANDLE_BAT(, 5119) +HANDLE_BAT(, 5120) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 4097) +HANDLE_BAT(APINT_TYPE_PREFIX, 4098) +HANDLE_BAT(APINT_TYPE_PREFIX, 4099) +HANDLE_BAT(APINT_TYPE_PREFIX, 4100) +HANDLE_BAT(APINT_TYPE_PREFIX, 4101) +HANDLE_BAT(APINT_TYPE_PREFIX, 4102) +HANDLE_BAT(APINT_TYPE_PREFIX, 4103) +HANDLE_BAT(APINT_TYPE_PREFIX, 4104) +HANDLE_BAT(APINT_TYPE_PREFIX, 4105) +HANDLE_BAT(APINT_TYPE_PREFIX, 4106) +HANDLE_BAT(APINT_TYPE_PREFIX, 4107) +HANDLE_BAT(APINT_TYPE_PREFIX, 4108) +HANDLE_BAT(APINT_TYPE_PREFIX, 4109) +HANDLE_BAT(APINT_TYPE_PREFIX, 4110) +HANDLE_BAT(APINT_TYPE_PREFIX, 4111) +HANDLE_BAT(APINT_TYPE_PREFIX, 4112) +HANDLE_BAT(APINT_TYPE_PREFIX, 4113) +HANDLE_BAT(APINT_TYPE_PREFIX, 4114) +HANDLE_BAT(APINT_TYPE_PREFIX, 4115) +HANDLE_BAT(APINT_TYPE_PREFIX, 4116) +HANDLE_BAT(APINT_TYPE_PREFIX, 4117) +HANDLE_BAT(APINT_TYPE_PREFIX, 4118) +HANDLE_BAT(APINT_TYPE_PREFIX, 4119) +HANDLE_BAT(APINT_TYPE_PREFIX, 4120) +HANDLE_BAT(APINT_TYPE_PREFIX, 4121) +HANDLE_BAT(APINT_TYPE_PREFIX, 4122) +HANDLE_BAT(APINT_TYPE_PREFIX, 4123) +HANDLE_BAT(APINT_TYPE_PREFIX, 4124) +HANDLE_BAT(APINT_TYPE_PREFIX, 4125) +HANDLE_BAT(APINT_TYPE_PREFIX, 4126) +HANDLE_BAT(APINT_TYPE_PREFIX, 4127) +HANDLE_BAT(APINT_TYPE_PREFIX, 4128) +HANDLE_BAT(APINT_TYPE_PREFIX, 4129) +HANDLE_BAT(APINT_TYPE_PREFIX, 4130) +HANDLE_BAT(APINT_TYPE_PREFIX, 4131) +HANDLE_BAT(APINT_TYPE_PREFIX, 4132) +HANDLE_BAT(APINT_TYPE_PREFIX, 4133) +HANDLE_BAT(APINT_TYPE_PREFIX, 4134) +HANDLE_BAT(APINT_TYPE_PREFIX, 4135) +HANDLE_BAT(APINT_TYPE_PREFIX, 4136) +HANDLE_BAT(APINT_TYPE_PREFIX, 4137) +HANDLE_BAT(APINT_TYPE_PREFIX, 4138) +HANDLE_BAT(APINT_TYPE_PREFIX, 4139) +HANDLE_BAT(APINT_TYPE_PREFIX, 4140) +HANDLE_BAT(APINT_TYPE_PREFIX, 4141) +HANDLE_BAT(APINT_TYPE_PREFIX, 4142) +HANDLE_BAT(APINT_TYPE_PREFIX, 4143) +HANDLE_BAT(APINT_TYPE_PREFIX, 4144) +HANDLE_BAT(APINT_TYPE_PREFIX, 4145) +HANDLE_BAT(APINT_TYPE_PREFIX, 4146) +HANDLE_BAT(APINT_TYPE_PREFIX, 4147) +HANDLE_BAT(APINT_TYPE_PREFIX, 4148) +HANDLE_BAT(APINT_TYPE_PREFIX, 4149) +HANDLE_BAT(APINT_TYPE_PREFIX, 4150) +HANDLE_BAT(APINT_TYPE_PREFIX, 4151) +HANDLE_BAT(APINT_TYPE_PREFIX, 4152) +HANDLE_BAT(APINT_TYPE_PREFIX, 4153) +HANDLE_BAT(APINT_TYPE_PREFIX, 4154) +HANDLE_BAT(APINT_TYPE_PREFIX, 4155) +HANDLE_BAT(APINT_TYPE_PREFIX, 4156) +HANDLE_BAT(APINT_TYPE_PREFIX, 4157) +HANDLE_BAT(APINT_TYPE_PREFIX, 4158) +HANDLE_BAT(APINT_TYPE_PREFIX, 4159) +HANDLE_BAT(APINT_TYPE_PREFIX, 4160) +HANDLE_BAT(APINT_TYPE_PREFIX, 4161) +HANDLE_BAT(APINT_TYPE_PREFIX, 4162) +HANDLE_BAT(APINT_TYPE_PREFIX, 4163) +HANDLE_BAT(APINT_TYPE_PREFIX, 4164) +HANDLE_BAT(APINT_TYPE_PREFIX, 4165) +HANDLE_BAT(APINT_TYPE_PREFIX, 4166) +HANDLE_BAT(APINT_TYPE_PREFIX, 4167) +HANDLE_BAT(APINT_TYPE_PREFIX, 4168) +HANDLE_BAT(APINT_TYPE_PREFIX, 4169) +HANDLE_BAT(APINT_TYPE_PREFIX, 4170) +HANDLE_BAT(APINT_TYPE_PREFIX, 4171) +HANDLE_BAT(APINT_TYPE_PREFIX, 4172) +HANDLE_BAT(APINT_TYPE_PREFIX, 4173) +HANDLE_BAT(APINT_TYPE_PREFIX, 4174) +HANDLE_BAT(APINT_TYPE_PREFIX, 4175) +HANDLE_BAT(APINT_TYPE_PREFIX, 4176) +HANDLE_BAT(APINT_TYPE_PREFIX, 4177) +HANDLE_BAT(APINT_TYPE_PREFIX, 4178) +HANDLE_BAT(APINT_TYPE_PREFIX, 4179) +HANDLE_BAT(APINT_TYPE_PREFIX, 4180) +HANDLE_BAT(APINT_TYPE_PREFIX, 4181) +HANDLE_BAT(APINT_TYPE_PREFIX, 4182) +HANDLE_BAT(APINT_TYPE_PREFIX, 4183) +HANDLE_BAT(APINT_TYPE_PREFIX, 4184) +HANDLE_BAT(APINT_TYPE_PREFIX, 4185) +HANDLE_BAT(APINT_TYPE_PREFIX, 4186) +HANDLE_BAT(APINT_TYPE_PREFIX, 4187) +HANDLE_BAT(APINT_TYPE_PREFIX, 4188) +HANDLE_BAT(APINT_TYPE_PREFIX, 4189) +HANDLE_BAT(APINT_TYPE_PREFIX, 4190) +HANDLE_BAT(APINT_TYPE_PREFIX, 4191) +HANDLE_BAT(APINT_TYPE_PREFIX, 4192) +HANDLE_BAT(APINT_TYPE_PREFIX, 4193) +HANDLE_BAT(APINT_TYPE_PREFIX, 4194) +HANDLE_BAT(APINT_TYPE_PREFIX, 4195) +HANDLE_BAT(APINT_TYPE_PREFIX, 4196) +HANDLE_BAT(APINT_TYPE_PREFIX, 4197) +HANDLE_BAT(APINT_TYPE_PREFIX, 4198) +HANDLE_BAT(APINT_TYPE_PREFIX, 4199) +HANDLE_BAT(APINT_TYPE_PREFIX, 4200) +HANDLE_BAT(APINT_TYPE_PREFIX, 4201) +HANDLE_BAT(APINT_TYPE_PREFIX, 4202) +HANDLE_BAT(APINT_TYPE_PREFIX, 4203) +HANDLE_BAT(APINT_TYPE_PREFIX, 4204) +HANDLE_BAT(APINT_TYPE_PREFIX, 4205) +HANDLE_BAT(APINT_TYPE_PREFIX, 4206) +HANDLE_BAT(APINT_TYPE_PREFIX, 4207) +HANDLE_BAT(APINT_TYPE_PREFIX, 4208) +HANDLE_BAT(APINT_TYPE_PREFIX, 4209) +HANDLE_BAT(APINT_TYPE_PREFIX, 4210) +HANDLE_BAT(APINT_TYPE_PREFIX, 4211) +HANDLE_BAT(APINT_TYPE_PREFIX, 4212) +HANDLE_BAT(APINT_TYPE_PREFIX, 4213) +HANDLE_BAT(APINT_TYPE_PREFIX, 4214) +HANDLE_BAT(APINT_TYPE_PREFIX, 4215) +HANDLE_BAT(APINT_TYPE_PREFIX, 4216) +HANDLE_BAT(APINT_TYPE_PREFIX, 4217) +HANDLE_BAT(APINT_TYPE_PREFIX, 4218) +HANDLE_BAT(APINT_TYPE_PREFIX, 4219) +HANDLE_BAT(APINT_TYPE_PREFIX, 4220) +HANDLE_BAT(APINT_TYPE_PREFIX, 4221) +HANDLE_BAT(APINT_TYPE_PREFIX, 4222) +HANDLE_BAT(APINT_TYPE_PREFIX, 4223) +HANDLE_BAT(APINT_TYPE_PREFIX, 4224) +HANDLE_BAT(APINT_TYPE_PREFIX, 4225) +HANDLE_BAT(APINT_TYPE_PREFIX, 4226) +HANDLE_BAT(APINT_TYPE_PREFIX, 4227) +HANDLE_BAT(APINT_TYPE_PREFIX, 4228) +HANDLE_BAT(APINT_TYPE_PREFIX, 4229) +HANDLE_BAT(APINT_TYPE_PREFIX, 4230) +HANDLE_BAT(APINT_TYPE_PREFIX, 4231) +HANDLE_BAT(APINT_TYPE_PREFIX, 4232) +HANDLE_BAT(APINT_TYPE_PREFIX, 4233) +HANDLE_BAT(APINT_TYPE_PREFIX, 4234) +HANDLE_BAT(APINT_TYPE_PREFIX, 4235) +HANDLE_BAT(APINT_TYPE_PREFIX, 4236) +HANDLE_BAT(APINT_TYPE_PREFIX, 4237) +HANDLE_BAT(APINT_TYPE_PREFIX, 4238) +HANDLE_BAT(APINT_TYPE_PREFIX, 4239) +HANDLE_BAT(APINT_TYPE_PREFIX, 4240) +HANDLE_BAT(APINT_TYPE_PREFIX, 4241) +HANDLE_BAT(APINT_TYPE_PREFIX, 4242) +HANDLE_BAT(APINT_TYPE_PREFIX, 4243) +HANDLE_BAT(APINT_TYPE_PREFIX, 4244) +HANDLE_BAT(APINT_TYPE_PREFIX, 4245) +HANDLE_BAT(APINT_TYPE_PREFIX, 4246) +HANDLE_BAT(APINT_TYPE_PREFIX, 4247) +HANDLE_BAT(APINT_TYPE_PREFIX, 4248) +HANDLE_BAT(APINT_TYPE_PREFIX, 4249) +HANDLE_BAT(APINT_TYPE_PREFIX, 4250) +HANDLE_BAT(APINT_TYPE_PREFIX, 4251) +HANDLE_BAT(APINT_TYPE_PREFIX, 4252) +HANDLE_BAT(APINT_TYPE_PREFIX, 4253) +HANDLE_BAT(APINT_TYPE_PREFIX, 4254) +HANDLE_BAT(APINT_TYPE_PREFIX, 4255) +HANDLE_BAT(APINT_TYPE_PREFIX, 4256) +HANDLE_BAT(APINT_TYPE_PREFIX, 4257) +HANDLE_BAT(APINT_TYPE_PREFIX, 4258) +HANDLE_BAT(APINT_TYPE_PREFIX, 4259) +HANDLE_BAT(APINT_TYPE_PREFIX, 4260) +HANDLE_BAT(APINT_TYPE_PREFIX, 4261) +HANDLE_BAT(APINT_TYPE_PREFIX, 4262) +HANDLE_BAT(APINT_TYPE_PREFIX, 4263) +HANDLE_BAT(APINT_TYPE_PREFIX, 4264) +HANDLE_BAT(APINT_TYPE_PREFIX, 4265) +HANDLE_BAT(APINT_TYPE_PREFIX, 4266) +HANDLE_BAT(APINT_TYPE_PREFIX, 4267) +HANDLE_BAT(APINT_TYPE_PREFIX, 4268) +HANDLE_BAT(APINT_TYPE_PREFIX, 4269) +HANDLE_BAT(APINT_TYPE_PREFIX, 4270) +HANDLE_BAT(APINT_TYPE_PREFIX, 4271) +HANDLE_BAT(APINT_TYPE_PREFIX, 4272) +HANDLE_BAT(APINT_TYPE_PREFIX, 4273) +HANDLE_BAT(APINT_TYPE_PREFIX, 4274) +HANDLE_BAT(APINT_TYPE_PREFIX, 4275) +HANDLE_BAT(APINT_TYPE_PREFIX, 4276) +HANDLE_BAT(APINT_TYPE_PREFIX, 4277) +HANDLE_BAT(APINT_TYPE_PREFIX, 4278) +HANDLE_BAT(APINT_TYPE_PREFIX, 4279) +HANDLE_BAT(APINT_TYPE_PREFIX, 4280) +HANDLE_BAT(APINT_TYPE_PREFIX, 4281) +HANDLE_BAT(APINT_TYPE_PREFIX, 4282) +HANDLE_BAT(APINT_TYPE_PREFIX, 4283) +HANDLE_BAT(APINT_TYPE_PREFIX, 4284) +HANDLE_BAT(APINT_TYPE_PREFIX, 4285) +HANDLE_BAT(APINT_TYPE_PREFIX, 4286) +HANDLE_BAT(APINT_TYPE_PREFIX, 4287) +HANDLE_BAT(APINT_TYPE_PREFIX, 4288) +HANDLE_BAT(APINT_TYPE_PREFIX, 4289) +HANDLE_BAT(APINT_TYPE_PREFIX, 4290) +HANDLE_BAT(APINT_TYPE_PREFIX, 4291) +HANDLE_BAT(APINT_TYPE_PREFIX, 4292) +HANDLE_BAT(APINT_TYPE_PREFIX, 4293) +HANDLE_BAT(APINT_TYPE_PREFIX, 4294) +HANDLE_BAT(APINT_TYPE_PREFIX, 4295) +HANDLE_BAT(APINT_TYPE_PREFIX, 4296) +HANDLE_BAT(APINT_TYPE_PREFIX, 4297) +HANDLE_BAT(APINT_TYPE_PREFIX, 4298) +HANDLE_BAT(APINT_TYPE_PREFIX, 4299) +HANDLE_BAT(APINT_TYPE_PREFIX, 4300) +HANDLE_BAT(APINT_TYPE_PREFIX, 4301) +HANDLE_BAT(APINT_TYPE_PREFIX, 4302) +HANDLE_BAT(APINT_TYPE_PREFIX, 4303) +HANDLE_BAT(APINT_TYPE_PREFIX, 4304) +HANDLE_BAT(APINT_TYPE_PREFIX, 4305) +HANDLE_BAT(APINT_TYPE_PREFIX, 4306) +HANDLE_BAT(APINT_TYPE_PREFIX, 4307) +HANDLE_BAT(APINT_TYPE_PREFIX, 4308) +HANDLE_BAT(APINT_TYPE_PREFIX, 4309) +HANDLE_BAT(APINT_TYPE_PREFIX, 4310) +HANDLE_BAT(APINT_TYPE_PREFIX, 4311) +HANDLE_BAT(APINT_TYPE_PREFIX, 4312) +HANDLE_BAT(APINT_TYPE_PREFIX, 4313) +HANDLE_BAT(APINT_TYPE_PREFIX, 4314) +HANDLE_BAT(APINT_TYPE_PREFIX, 4315) +HANDLE_BAT(APINT_TYPE_PREFIX, 4316) +HANDLE_BAT(APINT_TYPE_PREFIX, 4317) +HANDLE_BAT(APINT_TYPE_PREFIX, 4318) +HANDLE_BAT(APINT_TYPE_PREFIX, 4319) +HANDLE_BAT(APINT_TYPE_PREFIX, 4320) +HANDLE_BAT(APINT_TYPE_PREFIX, 4321) +HANDLE_BAT(APINT_TYPE_PREFIX, 4322) +HANDLE_BAT(APINT_TYPE_PREFIX, 4323) +HANDLE_BAT(APINT_TYPE_PREFIX, 4324) +HANDLE_BAT(APINT_TYPE_PREFIX, 4325) +HANDLE_BAT(APINT_TYPE_PREFIX, 4326) +HANDLE_BAT(APINT_TYPE_PREFIX, 4327) +HANDLE_BAT(APINT_TYPE_PREFIX, 4328) +HANDLE_BAT(APINT_TYPE_PREFIX, 4329) +HANDLE_BAT(APINT_TYPE_PREFIX, 4330) +HANDLE_BAT(APINT_TYPE_PREFIX, 4331) +HANDLE_BAT(APINT_TYPE_PREFIX, 4332) +HANDLE_BAT(APINT_TYPE_PREFIX, 4333) +HANDLE_BAT(APINT_TYPE_PREFIX, 4334) +HANDLE_BAT(APINT_TYPE_PREFIX, 4335) +HANDLE_BAT(APINT_TYPE_PREFIX, 4336) +HANDLE_BAT(APINT_TYPE_PREFIX, 4337) +HANDLE_BAT(APINT_TYPE_PREFIX, 4338) +HANDLE_BAT(APINT_TYPE_PREFIX, 4339) +HANDLE_BAT(APINT_TYPE_PREFIX, 4340) +HANDLE_BAT(APINT_TYPE_PREFIX, 4341) +HANDLE_BAT(APINT_TYPE_PREFIX, 4342) +HANDLE_BAT(APINT_TYPE_PREFIX, 4343) +HANDLE_BAT(APINT_TYPE_PREFIX, 4344) +HANDLE_BAT(APINT_TYPE_PREFIX, 4345) +HANDLE_BAT(APINT_TYPE_PREFIX, 4346) +HANDLE_BAT(APINT_TYPE_PREFIX, 4347) +HANDLE_BAT(APINT_TYPE_PREFIX, 4348) +HANDLE_BAT(APINT_TYPE_PREFIX, 4349) +HANDLE_BAT(APINT_TYPE_PREFIX, 4350) +HANDLE_BAT(APINT_TYPE_PREFIX, 4351) +HANDLE_BAT(APINT_TYPE_PREFIX, 4352) +HANDLE_BAT(APINT_TYPE_PREFIX, 4353) +HANDLE_BAT(APINT_TYPE_PREFIX, 4354) +HANDLE_BAT(APINT_TYPE_PREFIX, 4355) +HANDLE_BAT(APINT_TYPE_PREFIX, 4356) +HANDLE_BAT(APINT_TYPE_PREFIX, 4357) +HANDLE_BAT(APINT_TYPE_PREFIX, 4358) +HANDLE_BAT(APINT_TYPE_PREFIX, 4359) +HANDLE_BAT(APINT_TYPE_PREFIX, 4360) +HANDLE_BAT(APINT_TYPE_PREFIX, 4361) +HANDLE_BAT(APINT_TYPE_PREFIX, 4362) +HANDLE_BAT(APINT_TYPE_PREFIX, 4363) +HANDLE_BAT(APINT_TYPE_PREFIX, 4364) +HANDLE_BAT(APINT_TYPE_PREFIX, 4365) +HANDLE_BAT(APINT_TYPE_PREFIX, 4366) +HANDLE_BAT(APINT_TYPE_PREFIX, 4367) +HANDLE_BAT(APINT_TYPE_PREFIX, 4368) +HANDLE_BAT(APINT_TYPE_PREFIX, 4369) +HANDLE_BAT(APINT_TYPE_PREFIX, 4370) +HANDLE_BAT(APINT_TYPE_PREFIX, 4371) +HANDLE_BAT(APINT_TYPE_PREFIX, 4372) +HANDLE_BAT(APINT_TYPE_PREFIX, 4373) +HANDLE_BAT(APINT_TYPE_PREFIX, 4374) +HANDLE_BAT(APINT_TYPE_PREFIX, 4375) +HANDLE_BAT(APINT_TYPE_PREFIX, 4376) +HANDLE_BAT(APINT_TYPE_PREFIX, 4377) +HANDLE_BAT(APINT_TYPE_PREFIX, 4378) +HANDLE_BAT(APINT_TYPE_PREFIX, 4379) +HANDLE_BAT(APINT_TYPE_PREFIX, 4380) +HANDLE_BAT(APINT_TYPE_PREFIX, 4381) +HANDLE_BAT(APINT_TYPE_PREFIX, 4382) +HANDLE_BAT(APINT_TYPE_PREFIX, 4383) +HANDLE_BAT(APINT_TYPE_PREFIX, 4384) +HANDLE_BAT(APINT_TYPE_PREFIX, 4385) +HANDLE_BAT(APINT_TYPE_PREFIX, 4386) +HANDLE_BAT(APINT_TYPE_PREFIX, 4387) +HANDLE_BAT(APINT_TYPE_PREFIX, 4388) +HANDLE_BAT(APINT_TYPE_PREFIX, 4389) +HANDLE_BAT(APINT_TYPE_PREFIX, 4390) +HANDLE_BAT(APINT_TYPE_PREFIX, 4391) +HANDLE_BAT(APINT_TYPE_PREFIX, 4392) +HANDLE_BAT(APINT_TYPE_PREFIX, 4393) +HANDLE_BAT(APINT_TYPE_PREFIX, 4394) +HANDLE_BAT(APINT_TYPE_PREFIX, 4395) +HANDLE_BAT(APINT_TYPE_PREFIX, 4396) +HANDLE_BAT(APINT_TYPE_PREFIX, 4397) +HANDLE_BAT(APINT_TYPE_PREFIX, 4398) +HANDLE_BAT(APINT_TYPE_PREFIX, 4399) +HANDLE_BAT(APINT_TYPE_PREFIX, 4400) +HANDLE_BAT(APINT_TYPE_PREFIX, 4401) +HANDLE_BAT(APINT_TYPE_PREFIX, 4402) +HANDLE_BAT(APINT_TYPE_PREFIX, 4403) +HANDLE_BAT(APINT_TYPE_PREFIX, 4404) +HANDLE_BAT(APINT_TYPE_PREFIX, 4405) +HANDLE_BAT(APINT_TYPE_PREFIX, 4406) +HANDLE_BAT(APINT_TYPE_PREFIX, 4407) +HANDLE_BAT(APINT_TYPE_PREFIX, 4408) +HANDLE_BAT(APINT_TYPE_PREFIX, 4409) +HANDLE_BAT(APINT_TYPE_PREFIX, 4410) +HANDLE_BAT(APINT_TYPE_PREFIX, 4411) +HANDLE_BAT(APINT_TYPE_PREFIX, 4412) +HANDLE_BAT(APINT_TYPE_PREFIX, 4413) +HANDLE_BAT(APINT_TYPE_PREFIX, 4414) +HANDLE_BAT(APINT_TYPE_PREFIX, 4415) +HANDLE_BAT(APINT_TYPE_PREFIX, 4416) +HANDLE_BAT(APINT_TYPE_PREFIX, 4417) +HANDLE_BAT(APINT_TYPE_PREFIX, 4418) +HANDLE_BAT(APINT_TYPE_PREFIX, 4419) +HANDLE_BAT(APINT_TYPE_PREFIX, 4420) +HANDLE_BAT(APINT_TYPE_PREFIX, 4421) +HANDLE_BAT(APINT_TYPE_PREFIX, 4422) +HANDLE_BAT(APINT_TYPE_PREFIX, 4423) +HANDLE_BAT(APINT_TYPE_PREFIX, 4424) +HANDLE_BAT(APINT_TYPE_PREFIX, 4425) +HANDLE_BAT(APINT_TYPE_PREFIX, 4426) +HANDLE_BAT(APINT_TYPE_PREFIX, 4427) +HANDLE_BAT(APINT_TYPE_PREFIX, 4428) +HANDLE_BAT(APINT_TYPE_PREFIX, 4429) +HANDLE_BAT(APINT_TYPE_PREFIX, 4430) +HANDLE_BAT(APINT_TYPE_PREFIX, 4431) +HANDLE_BAT(APINT_TYPE_PREFIX, 4432) +HANDLE_BAT(APINT_TYPE_PREFIX, 4433) +HANDLE_BAT(APINT_TYPE_PREFIX, 4434) +HANDLE_BAT(APINT_TYPE_PREFIX, 4435) +HANDLE_BAT(APINT_TYPE_PREFIX, 4436) +HANDLE_BAT(APINT_TYPE_PREFIX, 4437) +HANDLE_BAT(APINT_TYPE_PREFIX, 4438) +HANDLE_BAT(APINT_TYPE_PREFIX, 4439) +HANDLE_BAT(APINT_TYPE_PREFIX, 4440) +HANDLE_BAT(APINT_TYPE_PREFIX, 4441) +HANDLE_BAT(APINT_TYPE_PREFIX, 4442) +HANDLE_BAT(APINT_TYPE_PREFIX, 4443) +HANDLE_BAT(APINT_TYPE_PREFIX, 4444) +HANDLE_BAT(APINT_TYPE_PREFIX, 4445) +HANDLE_BAT(APINT_TYPE_PREFIX, 4446) +HANDLE_BAT(APINT_TYPE_PREFIX, 4447) +HANDLE_BAT(APINT_TYPE_PREFIX, 4448) +HANDLE_BAT(APINT_TYPE_PREFIX, 4449) +HANDLE_BAT(APINT_TYPE_PREFIX, 4450) +HANDLE_BAT(APINT_TYPE_PREFIX, 4451) +HANDLE_BAT(APINT_TYPE_PREFIX, 4452) +HANDLE_BAT(APINT_TYPE_PREFIX, 4453) +HANDLE_BAT(APINT_TYPE_PREFIX, 4454) +HANDLE_BAT(APINT_TYPE_PREFIX, 4455) +HANDLE_BAT(APINT_TYPE_PREFIX, 4456) +HANDLE_BAT(APINT_TYPE_PREFIX, 4457) +HANDLE_BAT(APINT_TYPE_PREFIX, 4458) +HANDLE_BAT(APINT_TYPE_PREFIX, 4459) +HANDLE_BAT(APINT_TYPE_PREFIX, 4460) +HANDLE_BAT(APINT_TYPE_PREFIX, 4461) +HANDLE_BAT(APINT_TYPE_PREFIX, 4462) +HANDLE_BAT(APINT_TYPE_PREFIX, 4463) +HANDLE_BAT(APINT_TYPE_PREFIX, 4464) +HANDLE_BAT(APINT_TYPE_PREFIX, 4465) +HANDLE_BAT(APINT_TYPE_PREFIX, 4466) +HANDLE_BAT(APINT_TYPE_PREFIX, 4467) +HANDLE_BAT(APINT_TYPE_PREFIX, 4468) +HANDLE_BAT(APINT_TYPE_PREFIX, 4469) +HANDLE_BAT(APINT_TYPE_PREFIX, 4470) +HANDLE_BAT(APINT_TYPE_PREFIX, 4471) +HANDLE_BAT(APINT_TYPE_PREFIX, 4472) +HANDLE_BAT(APINT_TYPE_PREFIX, 4473) +HANDLE_BAT(APINT_TYPE_PREFIX, 4474) +HANDLE_BAT(APINT_TYPE_PREFIX, 4475) +HANDLE_BAT(APINT_TYPE_PREFIX, 4476) +HANDLE_BAT(APINT_TYPE_PREFIX, 4477) +HANDLE_BAT(APINT_TYPE_PREFIX, 4478) +HANDLE_BAT(APINT_TYPE_PREFIX, 4479) +HANDLE_BAT(APINT_TYPE_PREFIX, 4480) +HANDLE_BAT(APINT_TYPE_PREFIX, 4481) +HANDLE_BAT(APINT_TYPE_PREFIX, 4482) +HANDLE_BAT(APINT_TYPE_PREFIX, 4483) +HANDLE_BAT(APINT_TYPE_PREFIX, 4484) +HANDLE_BAT(APINT_TYPE_PREFIX, 4485) +HANDLE_BAT(APINT_TYPE_PREFIX, 4486) +HANDLE_BAT(APINT_TYPE_PREFIX, 4487) +HANDLE_BAT(APINT_TYPE_PREFIX, 4488) +HANDLE_BAT(APINT_TYPE_PREFIX, 4489) +HANDLE_BAT(APINT_TYPE_PREFIX, 4490) +HANDLE_BAT(APINT_TYPE_PREFIX, 4491) +HANDLE_BAT(APINT_TYPE_PREFIX, 4492) +HANDLE_BAT(APINT_TYPE_PREFIX, 4493) +HANDLE_BAT(APINT_TYPE_PREFIX, 4494) +HANDLE_BAT(APINT_TYPE_PREFIX, 4495) +HANDLE_BAT(APINT_TYPE_PREFIX, 4496) +HANDLE_BAT(APINT_TYPE_PREFIX, 4497) +HANDLE_BAT(APINT_TYPE_PREFIX, 4498) +HANDLE_BAT(APINT_TYPE_PREFIX, 4499) +HANDLE_BAT(APINT_TYPE_PREFIX, 4500) +HANDLE_BAT(APINT_TYPE_PREFIX, 4501) +HANDLE_BAT(APINT_TYPE_PREFIX, 4502) +HANDLE_BAT(APINT_TYPE_PREFIX, 4503) +HANDLE_BAT(APINT_TYPE_PREFIX, 4504) +HANDLE_BAT(APINT_TYPE_PREFIX, 4505) +HANDLE_BAT(APINT_TYPE_PREFIX, 4506) +HANDLE_BAT(APINT_TYPE_PREFIX, 4507) +HANDLE_BAT(APINT_TYPE_PREFIX, 4508) +HANDLE_BAT(APINT_TYPE_PREFIX, 4509) +HANDLE_BAT(APINT_TYPE_PREFIX, 4510) +HANDLE_BAT(APINT_TYPE_PREFIX, 4511) +HANDLE_BAT(APINT_TYPE_PREFIX, 4512) +HANDLE_BAT(APINT_TYPE_PREFIX, 4513) +HANDLE_BAT(APINT_TYPE_PREFIX, 4514) +HANDLE_BAT(APINT_TYPE_PREFIX, 4515) +HANDLE_BAT(APINT_TYPE_PREFIX, 4516) +HANDLE_BAT(APINT_TYPE_PREFIX, 4517) +HANDLE_BAT(APINT_TYPE_PREFIX, 4518) +HANDLE_BAT(APINT_TYPE_PREFIX, 4519) +HANDLE_BAT(APINT_TYPE_PREFIX, 4520) +HANDLE_BAT(APINT_TYPE_PREFIX, 4521) +HANDLE_BAT(APINT_TYPE_PREFIX, 4522) +HANDLE_BAT(APINT_TYPE_PREFIX, 4523) +HANDLE_BAT(APINT_TYPE_PREFIX, 4524) +HANDLE_BAT(APINT_TYPE_PREFIX, 4525) +HANDLE_BAT(APINT_TYPE_PREFIX, 4526) +HANDLE_BAT(APINT_TYPE_PREFIX, 4527) +HANDLE_BAT(APINT_TYPE_PREFIX, 4528) +HANDLE_BAT(APINT_TYPE_PREFIX, 4529) +HANDLE_BAT(APINT_TYPE_PREFIX, 4530) +HANDLE_BAT(APINT_TYPE_PREFIX, 4531) +HANDLE_BAT(APINT_TYPE_PREFIX, 4532) +HANDLE_BAT(APINT_TYPE_PREFIX, 4533) +HANDLE_BAT(APINT_TYPE_PREFIX, 4534) +HANDLE_BAT(APINT_TYPE_PREFIX, 4535) +HANDLE_BAT(APINT_TYPE_PREFIX, 4536) +HANDLE_BAT(APINT_TYPE_PREFIX, 4537) +HANDLE_BAT(APINT_TYPE_PREFIX, 4538) +HANDLE_BAT(APINT_TYPE_PREFIX, 4539) +HANDLE_BAT(APINT_TYPE_PREFIX, 4540) +HANDLE_BAT(APINT_TYPE_PREFIX, 4541) +HANDLE_BAT(APINT_TYPE_PREFIX, 4542) +HANDLE_BAT(APINT_TYPE_PREFIX, 4543) +HANDLE_BAT(APINT_TYPE_PREFIX, 4544) +HANDLE_BAT(APINT_TYPE_PREFIX, 4545) +HANDLE_BAT(APINT_TYPE_PREFIX, 4546) +HANDLE_BAT(APINT_TYPE_PREFIX, 4547) +HANDLE_BAT(APINT_TYPE_PREFIX, 4548) +HANDLE_BAT(APINT_TYPE_PREFIX, 4549) +HANDLE_BAT(APINT_TYPE_PREFIX, 4550) +HANDLE_BAT(APINT_TYPE_PREFIX, 4551) +HANDLE_BAT(APINT_TYPE_PREFIX, 4552) +HANDLE_BAT(APINT_TYPE_PREFIX, 4553) +HANDLE_BAT(APINT_TYPE_PREFIX, 4554) +HANDLE_BAT(APINT_TYPE_PREFIX, 4555) +HANDLE_BAT(APINT_TYPE_PREFIX, 4556) +HANDLE_BAT(APINT_TYPE_PREFIX, 4557) +HANDLE_BAT(APINT_TYPE_PREFIX, 4558) +HANDLE_BAT(APINT_TYPE_PREFIX, 4559) +HANDLE_BAT(APINT_TYPE_PREFIX, 4560) +HANDLE_BAT(APINT_TYPE_PREFIX, 4561) +HANDLE_BAT(APINT_TYPE_PREFIX, 4562) +HANDLE_BAT(APINT_TYPE_PREFIX, 4563) +HANDLE_BAT(APINT_TYPE_PREFIX, 4564) +HANDLE_BAT(APINT_TYPE_PREFIX, 4565) +HANDLE_BAT(APINT_TYPE_PREFIX, 4566) +HANDLE_BAT(APINT_TYPE_PREFIX, 4567) +HANDLE_BAT(APINT_TYPE_PREFIX, 4568) +HANDLE_BAT(APINT_TYPE_PREFIX, 4569) +HANDLE_BAT(APINT_TYPE_PREFIX, 4570) +HANDLE_BAT(APINT_TYPE_PREFIX, 4571) +HANDLE_BAT(APINT_TYPE_PREFIX, 4572) +HANDLE_BAT(APINT_TYPE_PREFIX, 4573) +HANDLE_BAT(APINT_TYPE_PREFIX, 4574) +HANDLE_BAT(APINT_TYPE_PREFIX, 4575) +HANDLE_BAT(APINT_TYPE_PREFIX, 4576) +HANDLE_BAT(APINT_TYPE_PREFIX, 4577) +HANDLE_BAT(APINT_TYPE_PREFIX, 4578) +HANDLE_BAT(APINT_TYPE_PREFIX, 4579) +HANDLE_BAT(APINT_TYPE_PREFIX, 4580) +HANDLE_BAT(APINT_TYPE_PREFIX, 4581) +HANDLE_BAT(APINT_TYPE_PREFIX, 4582) +HANDLE_BAT(APINT_TYPE_PREFIX, 4583) +HANDLE_BAT(APINT_TYPE_PREFIX, 4584) +HANDLE_BAT(APINT_TYPE_PREFIX, 4585) +HANDLE_BAT(APINT_TYPE_PREFIX, 4586) +HANDLE_BAT(APINT_TYPE_PREFIX, 4587) +HANDLE_BAT(APINT_TYPE_PREFIX, 4588) +HANDLE_BAT(APINT_TYPE_PREFIX, 4589) +HANDLE_BAT(APINT_TYPE_PREFIX, 4590) +HANDLE_BAT(APINT_TYPE_PREFIX, 4591) +HANDLE_BAT(APINT_TYPE_PREFIX, 4592) +HANDLE_BAT(APINT_TYPE_PREFIX, 4593) +HANDLE_BAT(APINT_TYPE_PREFIX, 4594) +HANDLE_BAT(APINT_TYPE_PREFIX, 4595) +HANDLE_BAT(APINT_TYPE_PREFIX, 4596) +HANDLE_BAT(APINT_TYPE_PREFIX, 4597) +HANDLE_BAT(APINT_TYPE_PREFIX, 4598) +HANDLE_BAT(APINT_TYPE_PREFIX, 4599) +HANDLE_BAT(APINT_TYPE_PREFIX, 4600) +HANDLE_BAT(APINT_TYPE_PREFIX, 4601) +HANDLE_BAT(APINT_TYPE_PREFIX, 4602) +HANDLE_BAT(APINT_TYPE_PREFIX, 4603) +HANDLE_BAT(APINT_TYPE_PREFIX, 4604) +HANDLE_BAT(APINT_TYPE_PREFIX, 4605) +HANDLE_BAT(APINT_TYPE_PREFIX, 4606) +HANDLE_BAT(APINT_TYPE_PREFIX, 4607) +HANDLE_BAT(APINT_TYPE_PREFIX, 4608) +HANDLE_BAT(APINT_TYPE_PREFIX, 4609) +HANDLE_BAT(APINT_TYPE_PREFIX, 4610) +HANDLE_BAT(APINT_TYPE_PREFIX, 4611) +HANDLE_BAT(APINT_TYPE_PREFIX, 4612) +HANDLE_BAT(APINT_TYPE_PREFIX, 4613) +HANDLE_BAT(APINT_TYPE_PREFIX, 4614) +HANDLE_BAT(APINT_TYPE_PREFIX, 4615) +HANDLE_BAT(APINT_TYPE_PREFIX, 4616) +HANDLE_BAT(APINT_TYPE_PREFIX, 4617) +HANDLE_BAT(APINT_TYPE_PREFIX, 4618) +HANDLE_BAT(APINT_TYPE_PREFIX, 4619) +HANDLE_BAT(APINT_TYPE_PREFIX, 4620) +HANDLE_BAT(APINT_TYPE_PREFIX, 4621) +HANDLE_BAT(APINT_TYPE_PREFIX, 4622) +HANDLE_BAT(APINT_TYPE_PREFIX, 4623) +HANDLE_BAT(APINT_TYPE_PREFIX, 4624) +HANDLE_BAT(APINT_TYPE_PREFIX, 4625) +HANDLE_BAT(APINT_TYPE_PREFIX, 4626) +HANDLE_BAT(APINT_TYPE_PREFIX, 4627) +HANDLE_BAT(APINT_TYPE_PREFIX, 4628) +HANDLE_BAT(APINT_TYPE_PREFIX, 4629) +HANDLE_BAT(APINT_TYPE_PREFIX, 4630) +HANDLE_BAT(APINT_TYPE_PREFIX, 4631) +HANDLE_BAT(APINT_TYPE_PREFIX, 4632) +HANDLE_BAT(APINT_TYPE_PREFIX, 4633) +HANDLE_BAT(APINT_TYPE_PREFIX, 4634) +HANDLE_BAT(APINT_TYPE_PREFIX, 4635) +HANDLE_BAT(APINT_TYPE_PREFIX, 4636) +HANDLE_BAT(APINT_TYPE_PREFIX, 4637) +HANDLE_BAT(APINT_TYPE_PREFIX, 4638) +HANDLE_BAT(APINT_TYPE_PREFIX, 4639) +HANDLE_BAT(APINT_TYPE_PREFIX, 4640) +HANDLE_BAT(APINT_TYPE_PREFIX, 4641) +HANDLE_BAT(APINT_TYPE_PREFIX, 4642) +HANDLE_BAT(APINT_TYPE_PREFIX, 4643) +HANDLE_BAT(APINT_TYPE_PREFIX, 4644) +HANDLE_BAT(APINT_TYPE_PREFIX, 4645) +HANDLE_BAT(APINT_TYPE_PREFIX, 4646) +HANDLE_BAT(APINT_TYPE_PREFIX, 4647) +HANDLE_BAT(APINT_TYPE_PREFIX, 4648) +HANDLE_BAT(APINT_TYPE_PREFIX, 4649) +HANDLE_BAT(APINT_TYPE_PREFIX, 4650) +HANDLE_BAT(APINT_TYPE_PREFIX, 4651) +HANDLE_BAT(APINT_TYPE_PREFIX, 4652) +HANDLE_BAT(APINT_TYPE_PREFIX, 4653) +HANDLE_BAT(APINT_TYPE_PREFIX, 4654) +HANDLE_BAT(APINT_TYPE_PREFIX, 4655) +HANDLE_BAT(APINT_TYPE_PREFIX, 4656) +HANDLE_BAT(APINT_TYPE_PREFIX, 4657) +HANDLE_BAT(APINT_TYPE_PREFIX, 4658) +HANDLE_BAT(APINT_TYPE_PREFIX, 4659) +HANDLE_BAT(APINT_TYPE_PREFIX, 4660) +HANDLE_BAT(APINT_TYPE_PREFIX, 4661) +HANDLE_BAT(APINT_TYPE_PREFIX, 4662) +HANDLE_BAT(APINT_TYPE_PREFIX, 4663) +HANDLE_BAT(APINT_TYPE_PREFIX, 4664) +HANDLE_BAT(APINT_TYPE_PREFIX, 4665) +HANDLE_BAT(APINT_TYPE_PREFIX, 4666) +HANDLE_BAT(APINT_TYPE_PREFIX, 4667) +HANDLE_BAT(APINT_TYPE_PREFIX, 4668) +HANDLE_BAT(APINT_TYPE_PREFIX, 4669) +HANDLE_BAT(APINT_TYPE_PREFIX, 4670) +HANDLE_BAT(APINT_TYPE_PREFIX, 4671) +HANDLE_BAT(APINT_TYPE_PREFIX, 4672) +HANDLE_BAT(APINT_TYPE_PREFIX, 4673) +HANDLE_BAT(APINT_TYPE_PREFIX, 4674) +HANDLE_BAT(APINT_TYPE_PREFIX, 4675) +HANDLE_BAT(APINT_TYPE_PREFIX, 4676) +HANDLE_BAT(APINT_TYPE_PREFIX, 4677) +HANDLE_BAT(APINT_TYPE_PREFIX, 4678) +HANDLE_BAT(APINT_TYPE_PREFIX, 4679) +HANDLE_BAT(APINT_TYPE_PREFIX, 4680) +HANDLE_BAT(APINT_TYPE_PREFIX, 4681) +HANDLE_BAT(APINT_TYPE_PREFIX, 4682) +HANDLE_BAT(APINT_TYPE_PREFIX, 4683) +HANDLE_BAT(APINT_TYPE_PREFIX, 4684) +HANDLE_BAT(APINT_TYPE_PREFIX, 4685) +HANDLE_BAT(APINT_TYPE_PREFIX, 4686) +HANDLE_BAT(APINT_TYPE_PREFIX, 4687) +HANDLE_BAT(APINT_TYPE_PREFIX, 4688) +HANDLE_BAT(APINT_TYPE_PREFIX, 4689) +HANDLE_BAT(APINT_TYPE_PREFIX, 4690) +HANDLE_BAT(APINT_TYPE_PREFIX, 4691) +HANDLE_BAT(APINT_TYPE_PREFIX, 4692) +HANDLE_BAT(APINT_TYPE_PREFIX, 4693) +HANDLE_BAT(APINT_TYPE_PREFIX, 4694) +HANDLE_BAT(APINT_TYPE_PREFIX, 4695) +HANDLE_BAT(APINT_TYPE_PREFIX, 4696) +HANDLE_BAT(APINT_TYPE_PREFIX, 4697) +HANDLE_BAT(APINT_TYPE_PREFIX, 4698) +HANDLE_BAT(APINT_TYPE_PREFIX, 4699) +HANDLE_BAT(APINT_TYPE_PREFIX, 4700) +HANDLE_BAT(APINT_TYPE_PREFIX, 4701) +HANDLE_BAT(APINT_TYPE_PREFIX, 4702) +HANDLE_BAT(APINT_TYPE_PREFIX, 4703) +HANDLE_BAT(APINT_TYPE_PREFIX, 4704) +HANDLE_BAT(APINT_TYPE_PREFIX, 4705) +HANDLE_BAT(APINT_TYPE_PREFIX, 4706) +HANDLE_BAT(APINT_TYPE_PREFIX, 4707) +HANDLE_BAT(APINT_TYPE_PREFIX, 4708) +HANDLE_BAT(APINT_TYPE_PREFIX, 4709) +HANDLE_BAT(APINT_TYPE_PREFIX, 4710) +HANDLE_BAT(APINT_TYPE_PREFIX, 4711) +HANDLE_BAT(APINT_TYPE_PREFIX, 4712) +HANDLE_BAT(APINT_TYPE_PREFIX, 4713) +HANDLE_BAT(APINT_TYPE_PREFIX, 4714) +HANDLE_BAT(APINT_TYPE_PREFIX, 4715) +HANDLE_BAT(APINT_TYPE_PREFIX, 4716) +HANDLE_BAT(APINT_TYPE_PREFIX, 4717) +HANDLE_BAT(APINT_TYPE_PREFIX, 4718) +HANDLE_BAT(APINT_TYPE_PREFIX, 4719) +HANDLE_BAT(APINT_TYPE_PREFIX, 4720) +HANDLE_BAT(APINT_TYPE_PREFIX, 4721) +HANDLE_BAT(APINT_TYPE_PREFIX, 4722) +HANDLE_BAT(APINT_TYPE_PREFIX, 4723) +HANDLE_BAT(APINT_TYPE_PREFIX, 4724) +HANDLE_BAT(APINT_TYPE_PREFIX, 4725) +HANDLE_BAT(APINT_TYPE_PREFIX, 4726) +HANDLE_BAT(APINT_TYPE_PREFIX, 4727) +HANDLE_BAT(APINT_TYPE_PREFIX, 4728) +HANDLE_BAT(APINT_TYPE_PREFIX, 4729) +HANDLE_BAT(APINT_TYPE_PREFIX, 4730) +HANDLE_BAT(APINT_TYPE_PREFIX, 4731) +HANDLE_BAT(APINT_TYPE_PREFIX, 4732) +HANDLE_BAT(APINT_TYPE_PREFIX, 4733) +HANDLE_BAT(APINT_TYPE_PREFIX, 4734) +HANDLE_BAT(APINT_TYPE_PREFIX, 4735) +HANDLE_BAT(APINT_TYPE_PREFIX, 4736) +HANDLE_BAT(APINT_TYPE_PREFIX, 4737) +HANDLE_BAT(APINT_TYPE_PREFIX, 4738) +HANDLE_BAT(APINT_TYPE_PREFIX, 4739) +HANDLE_BAT(APINT_TYPE_PREFIX, 4740) +HANDLE_BAT(APINT_TYPE_PREFIX, 4741) +HANDLE_BAT(APINT_TYPE_PREFIX, 4742) +HANDLE_BAT(APINT_TYPE_PREFIX, 4743) +HANDLE_BAT(APINT_TYPE_PREFIX, 4744) +HANDLE_BAT(APINT_TYPE_PREFIX, 4745) +HANDLE_BAT(APINT_TYPE_PREFIX, 4746) +HANDLE_BAT(APINT_TYPE_PREFIX, 4747) +HANDLE_BAT(APINT_TYPE_PREFIX, 4748) +HANDLE_BAT(APINT_TYPE_PREFIX, 4749) +HANDLE_BAT(APINT_TYPE_PREFIX, 4750) +HANDLE_BAT(APINT_TYPE_PREFIX, 4751) +HANDLE_BAT(APINT_TYPE_PREFIX, 4752) +HANDLE_BAT(APINT_TYPE_PREFIX, 4753) +HANDLE_BAT(APINT_TYPE_PREFIX, 4754) +HANDLE_BAT(APINT_TYPE_PREFIX, 4755) +HANDLE_BAT(APINT_TYPE_PREFIX, 4756) +HANDLE_BAT(APINT_TYPE_PREFIX, 4757) +HANDLE_BAT(APINT_TYPE_PREFIX, 4758) +HANDLE_BAT(APINT_TYPE_PREFIX, 4759) +HANDLE_BAT(APINT_TYPE_PREFIX, 4760) +HANDLE_BAT(APINT_TYPE_PREFIX, 4761) +HANDLE_BAT(APINT_TYPE_PREFIX, 4762) +HANDLE_BAT(APINT_TYPE_PREFIX, 4763) +HANDLE_BAT(APINT_TYPE_PREFIX, 4764) +HANDLE_BAT(APINT_TYPE_PREFIX, 4765) +HANDLE_BAT(APINT_TYPE_PREFIX, 4766) +HANDLE_BAT(APINT_TYPE_PREFIX, 4767) +HANDLE_BAT(APINT_TYPE_PREFIX, 4768) +HANDLE_BAT(APINT_TYPE_PREFIX, 4769) +HANDLE_BAT(APINT_TYPE_PREFIX, 4770) +HANDLE_BAT(APINT_TYPE_PREFIX, 4771) +HANDLE_BAT(APINT_TYPE_PREFIX, 4772) +HANDLE_BAT(APINT_TYPE_PREFIX, 4773) +HANDLE_BAT(APINT_TYPE_PREFIX, 4774) +HANDLE_BAT(APINT_TYPE_PREFIX, 4775) +HANDLE_BAT(APINT_TYPE_PREFIX, 4776) +HANDLE_BAT(APINT_TYPE_PREFIX, 4777) +HANDLE_BAT(APINT_TYPE_PREFIX, 4778) +HANDLE_BAT(APINT_TYPE_PREFIX, 4779) +HANDLE_BAT(APINT_TYPE_PREFIX, 4780) +HANDLE_BAT(APINT_TYPE_PREFIX, 4781) +HANDLE_BAT(APINT_TYPE_PREFIX, 4782) +HANDLE_BAT(APINT_TYPE_PREFIX, 4783) +HANDLE_BAT(APINT_TYPE_PREFIX, 4784) +HANDLE_BAT(APINT_TYPE_PREFIX, 4785) +HANDLE_BAT(APINT_TYPE_PREFIX, 4786) +HANDLE_BAT(APINT_TYPE_PREFIX, 4787) +HANDLE_BAT(APINT_TYPE_PREFIX, 4788) +HANDLE_BAT(APINT_TYPE_PREFIX, 4789) +HANDLE_BAT(APINT_TYPE_PREFIX, 4790) +HANDLE_BAT(APINT_TYPE_PREFIX, 4791) +HANDLE_BAT(APINT_TYPE_PREFIX, 4792) +HANDLE_BAT(APINT_TYPE_PREFIX, 4793) +HANDLE_BAT(APINT_TYPE_PREFIX, 4794) +HANDLE_BAT(APINT_TYPE_PREFIX, 4795) +HANDLE_BAT(APINT_TYPE_PREFIX, 4796) +HANDLE_BAT(APINT_TYPE_PREFIX, 4797) +HANDLE_BAT(APINT_TYPE_PREFIX, 4798) +HANDLE_BAT(APINT_TYPE_PREFIX, 4799) +HANDLE_BAT(APINT_TYPE_PREFIX, 4800) +HANDLE_BAT(APINT_TYPE_PREFIX, 4801) +HANDLE_BAT(APINT_TYPE_PREFIX, 4802) +HANDLE_BAT(APINT_TYPE_PREFIX, 4803) +HANDLE_BAT(APINT_TYPE_PREFIX, 4804) +HANDLE_BAT(APINT_TYPE_PREFIX, 4805) +HANDLE_BAT(APINT_TYPE_PREFIX, 4806) +HANDLE_BAT(APINT_TYPE_PREFIX, 4807) +HANDLE_BAT(APINT_TYPE_PREFIX, 4808) +HANDLE_BAT(APINT_TYPE_PREFIX, 4809) +HANDLE_BAT(APINT_TYPE_PREFIX, 4810) +HANDLE_BAT(APINT_TYPE_PREFIX, 4811) +HANDLE_BAT(APINT_TYPE_PREFIX, 4812) +HANDLE_BAT(APINT_TYPE_PREFIX, 4813) +HANDLE_BAT(APINT_TYPE_PREFIX, 4814) +HANDLE_BAT(APINT_TYPE_PREFIX, 4815) +HANDLE_BAT(APINT_TYPE_PREFIX, 4816) +HANDLE_BAT(APINT_TYPE_PREFIX, 4817) +HANDLE_BAT(APINT_TYPE_PREFIX, 4818) +HANDLE_BAT(APINT_TYPE_PREFIX, 4819) +HANDLE_BAT(APINT_TYPE_PREFIX, 4820) +HANDLE_BAT(APINT_TYPE_PREFIX, 4821) +HANDLE_BAT(APINT_TYPE_PREFIX, 4822) +HANDLE_BAT(APINT_TYPE_PREFIX, 4823) +HANDLE_BAT(APINT_TYPE_PREFIX, 4824) +HANDLE_BAT(APINT_TYPE_PREFIX, 4825) +HANDLE_BAT(APINT_TYPE_PREFIX, 4826) +HANDLE_BAT(APINT_TYPE_PREFIX, 4827) +HANDLE_BAT(APINT_TYPE_PREFIX, 4828) +HANDLE_BAT(APINT_TYPE_PREFIX, 4829) +HANDLE_BAT(APINT_TYPE_PREFIX, 4830) +HANDLE_BAT(APINT_TYPE_PREFIX, 4831) +HANDLE_BAT(APINT_TYPE_PREFIX, 4832) +HANDLE_BAT(APINT_TYPE_PREFIX, 4833) +HANDLE_BAT(APINT_TYPE_PREFIX, 4834) +HANDLE_BAT(APINT_TYPE_PREFIX, 4835) +HANDLE_BAT(APINT_TYPE_PREFIX, 4836) +HANDLE_BAT(APINT_TYPE_PREFIX, 4837) +HANDLE_BAT(APINT_TYPE_PREFIX, 4838) +HANDLE_BAT(APINT_TYPE_PREFIX, 4839) +HANDLE_BAT(APINT_TYPE_PREFIX, 4840) +HANDLE_BAT(APINT_TYPE_PREFIX, 4841) +HANDLE_BAT(APINT_TYPE_PREFIX, 4842) +HANDLE_BAT(APINT_TYPE_PREFIX, 4843) +HANDLE_BAT(APINT_TYPE_PREFIX, 4844) +HANDLE_BAT(APINT_TYPE_PREFIX, 4845) +HANDLE_BAT(APINT_TYPE_PREFIX, 4846) +HANDLE_BAT(APINT_TYPE_PREFIX, 4847) +HANDLE_BAT(APINT_TYPE_PREFIX, 4848) +HANDLE_BAT(APINT_TYPE_PREFIX, 4849) +HANDLE_BAT(APINT_TYPE_PREFIX, 4850) +HANDLE_BAT(APINT_TYPE_PREFIX, 4851) +HANDLE_BAT(APINT_TYPE_PREFIX, 4852) +HANDLE_BAT(APINT_TYPE_PREFIX, 4853) +HANDLE_BAT(APINT_TYPE_PREFIX, 4854) +HANDLE_BAT(APINT_TYPE_PREFIX, 4855) +HANDLE_BAT(APINT_TYPE_PREFIX, 4856) +HANDLE_BAT(APINT_TYPE_PREFIX, 4857) +HANDLE_BAT(APINT_TYPE_PREFIX, 4858) +HANDLE_BAT(APINT_TYPE_PREFIX, 4859) +HANDLE_BAT(APINT_TYPE_PREFIX, 4860) +HANDLE_BAT(APINT_TYPE_PREFIX, 4861) +HANDLE_BAT(APINT_TYPE_PREFIX, 4862) +HANDLE_BAT(APINT_TYPE_PREFIX, 4863) +HANDLE_BAT(APINT_TYPE_PREFIX, 4864) +HANDLE_BAT(APINT_TYPE_PREFIX, 4865) +HANDLE_BAT(APINT_TYPE_PREFIX, 4866) +HANDLE_BAT(APINT_TYPE_PREFIX, 4867) +HANDLE_BAT(APINT_TYPE_PREFIX, 4868) +HANDLE_BAT(APINT_TYPE_PREFIX, 4869) +HANDLE_BAT(APINT_TYPE_PREFIX, 4870) +HANDLE_BAT(APINT_TYPE_PREFIX, 4871) +HANDLE_BAT(APINT_TYPE_PREFIX, 4872) +HANDLE_BAT(APINT_TYPE_PREFIX, 4873) +HANDLE_BAT(APINT_TYPE_PREFIX, 4874) +HANDLE_BAT(APINT_TYPE_PREFIX, 4875) +HANDLE_BAT(APINT_TYPE_PREFIX, 4876) +HANDLE_BAT(APINT_TYPE_PREFIX, 4877) +HANDLE_BAT(APINT_TYPE_PREFIX, 4878) +HANDLE_BAT(APINT_TYPE_PREFIX, 4879) +HANDLE_BAT(APINT_TYPE_PREFIX, 4880) +HANDLE_BAT(APINT_TYPE_PREFIX, 4881) +HANDLE_BAT(APINT_TYPE_PREFIX, 4882) +HANDLE_BAT(APINT_TYPE_PREFIX, 4883) +HANDLE_BAT(APINT_TYPE_PREFIX, 4884) +HANDLE_BAT(APINT_TYPE_PREFIX, 4885) +HANDLE_BAT(APINT_TYPE_PREFIX, 4886) +HANDLE_BAT(APINT_TYPE_PREFIX, 4887) +HANDLE_BAT(APINT_TYPE_PREFIX, 4888) +HANDLE_BAT(APINT_TYPE_PREFIX, 4889) +HANDLE_BAT(APINT_TYPE_PREFIX, 4890) +HANDLE_BAT(APINT_TYPE_PREFIX, 4891) +HANDLE_BAT(APINT_TYPE_PREFIX, 4892) +HANDLE_BAT(APINT_TYPE_PREFIX, 4893) +HANDLE_BAT(APINT_TYPE_PREFIX, 4894) +HANDLE_BAT(APINT_TYPE_PREFIX, 4895) +HANDLE_BAT(APINT_TYPE_PREFIX, 4896) +HANDLE_BAT(APINT_TYPE_PREFIX, 4897) +HANDLE_BAT(APINT_TYPE_PREFIX, 4898) +HANDLE_BAT(APINT_TYPE_PREFIX, 4899) +HANDLE_BAT(APINT_TYPE_PREFIX, 4900) +HANDLE_BAT(APINT_TYPE_PREFIX, 4901) +HANDLE_BAT(APINT_TYPE_PREFIX, 4902) +HANDLE_BAT(APINT_TYPE_PREFIX, 4903) +HANDLE_BAT(APINT_TYPE_PREFIX, 4904) +HANDLE_BAT(APINT_TYPE_PREFIX, 4905) +HANDLE_BAT(APINT_TYPE_PREFIX, 4906) +HANDLE_BAT(APINT_TYPE_PREFIX, 4907) +HANDLE_BAT(APINT_TYPE_PREFIX, 4908) +HANDLE_BAT(APINT_TYPE_PREFIX, 4909) +HANDLE_BAT(APINT_TYPE_PREFIX, 4910) +HANDLE_BAT(APINT_TYPE_PREFIX, 4911) +HANDLE_BAT(APINT_TYPE_PREFIX, 4912) +HANDLE_BAT(APINT_TYPE_PREFIX, 4913) +HANDLE_BAT(APINT_TYPE_PREFIX, 4914) +HANDLE_BAT(APINT_TYPE_PREFIX, 4915) +HANDLE_BAT(APINT_TYPE_PREFIX, 4916) +HANDLE_BAT(APINT_TYPE_PREFIX, 4917) +HANDLE_BAT(APINT_TYPE_PREFIX, 4918) +HANDLE_BAT(APINT_TYPE_PREFIX, 4919) +HANDLE_BAT(APINT_TYPE_PREFIX, 4920) +HANDLE_BAT(APINT_TYPE_PREFIX, 4921) +HANDLE_BAT(APINT_TYPE_PREFIX, 4922) +HANDLE_BAT(APINT_TYPE_PREFIX, 4923) +HANDLE_BAT(APINT_TYPE_PREFIX, 4924) +HANDLE_BAT(APINT_TYPE_PREFIX, 4925) +HANDLE_BAT(APINT_TYPE_PREFIX, 4926) +HANDLE_BAT(APINT_TYPE_PREFIX, 4927) +HANDLE_BAT(APINT_TYPE_PREFIX, 4928) +HANDLE_BAT(APINT_TYPE_PREFIX, 4929) +HANDLE_BAT(APINT_TYPE_PREFIX, 4930) +HANDLE_BAT(APINT_TYPE_PREFIX, 4931) +HANDLE_BAT(APINT_TYPE_PREFIX, 4932) +HANDLE_BAT(APINT_TYPE_PREFIX, 4933) +HANDLE_BAT(APINT_TYPE_PREFIX, 4934) +HANDLE_BAT(APINT_TYPE_PREFIX, 4935) +HANDLE_BAT(APINT_TYPE_PREFIX, 4936) +HANDLE_BAT(APINT_TYPE_PREFIX, 4937) +HANDLE_BAT(APINT_TYPE_PREFIX, 4938) +HANDLE_BAT(APINT_TYPE_PREFIX, 4939) +HANDLE_BAT(APINT_TYPE_PREFIX, 4940) +HANDLE_BAT(APINT_TYPE_PREFIX, 4941) +HANDLE_BAT(APINT_TYPE_PREFIX, 4942) +HANDLE_BAT(APINT_TYPE_PREFIX, 4943) +HANDLE_BAT(APINT_TYPE_PREFIX, 4944) +HANDLE_BAT(APINT_TYPE_PREFIX, 4945) +HANDLE_BAT(APINT_TYPE_PREFIX, 4946) +HANDLE_BAT(APINT_TYPE_PREFIX, 4947) +HANDLE_BAT(APINT_TYPE_PREFIX, 4948) +HANDLE_BAT(APINT_TYPE_PREFIX, 4949) +HANDLE_BAT(APINT_TYPE_PREFIX, 4950) +HANDLE_BAT(APINT_TYPE_PREFIX, 4951) +HANDLE_BAT(APINT_TYPE_PREFIX, 4952) +HANDLE_BAT(APINT_TYPE_PREFIX, 4953) +HANDLE_BAT(APINT_TYPE_PREFIX, 4954) +HANDLE_BAT(APINT_TYPE_PREFIX, 4955) +HANDLE_BAT(APINT_TYPE_PREFIX, 4956) +HANDLE_BAT(APINT_TYPE_PREFIX, 4957) +HANDLE_BAT(APINT_TYPE_PREFIX, 4958) +HANDLE_BAT(APINT_TYPE_PREFIX, 4959) +HANDLE_BAT(APINT_TYPE_PREFIX, 4960) +HANDLE_BAT(APINT_TYPE_PREFIX, 4961) +HANDLE_BAT(APINT_TYPE_PREFIX, 4962) +HANDLE_BAT(APINT_TYPE_PREFIX, 4963) +HANDLE_BAT(APINT_TYPE_PREFIX, 4964) +HANDLE_BAT(APINT_TYPE_PREFIX, 4965) +HANDLE_BAT(APINT_TYPE_PREFIX, 4966) +HANDLE_BAT(APINT_TYPE_PREFIX, 4967) +HANDLE_BAT(APINT_TYPE_PREFIX, 4968) +HANDLE_BAT(APINT_TYPE_PREFIX, 4969) +HANDLE_BAT(APINT_TYPE_PREFIX, 4970) +HANDLE_BAT(APINT_TYPE_PREFIX, 4971) +HANDLE_BAT(APINT_TYPE_PREFIX, 4972) +HANDLE_BAT(APINT_TYPE_PREFIX, 4973) +HANDLE_BAT(APINT_TYPE_PREFIX, 4974) +HANDLE_BAT(APINT_TYPE_PREFIX, 4975) +HANDLE_BAT(APINT_TYPE_PREFIX, 4976) +HANDLE_BAT(APINT_TYPE_PREFIX, 4977) +HANDLE_BAT(APINT_TYPE_PREFIX, 4978) +HANDLE_BAT(APINT_TYPE_PREFIX, 4979) +HANDLE_BAT(APINT_TYPE_PREFIX, 4980) +HANDLE_BAT(APINT_TYPE_PREFIX, 4981) +HANDLE_BAT(APINT_TYPE_PREFIX, 4982) +HANDLE_BAT(APINT_TYPE_PREFIX, 4983) +HANDLE_BAT(APINT_TYPE_PREFIX, 4984) +HANDLE_BAT(APINT_TYPE_PREFIX, 4985) +HANDLE_BAT(APINT_TYPE_PREFIX, 4986) +HANDLE_BAT(APINT_TYPE_PREFIX, 4987) +HANDLE_BAT(APINT_TYPE_PREFIX, 4988) +HANDLE_BAT(APINT_TYPE_PREFIX, 4989) +HANDLE_BAT(APINT_TYPE_PREFIX, 4990) +HANDLE_BAT(APINT_TYPE_PREFIX, 4991) +HANDLE_BAT(APINT_TYPE_PREFIX, 4992) +HANDLE_BAT(APINT_TYPE_PREFIX, 4993) +HANDLE_BAT(APINT_TYPE_PREFIX, 4994) +HANDLE_BAT(APINT_TYPE_PREFIX, 4995) +HANDLE_BAT(APINT_TYPE_PREFIX, 4996) +HANDLE_BAT(APINT_TYPE_PREFIX, 4997) +HANDLE_BAT(APINT_TYPE_PREFIX, 4998) +HANDLE_BAT(APINT_TYPE_PREFIX, 4999) +HANDLE_BAT(APINT_TYPE_PREFIX, 5000) +HANDLE_BAT(APINT_TYPE_PREFIX, 5001) +HANDLE_BAT(APINT_TYPE_PREFIX, 5002) +HANDLE_BAT(APINT_TYPE_PREFIX, 5003) +HANDLE_BAT(APINT_TYPE_PREFIX, 5004) +HANDLE_BAT(APINT_TYPE_PREFIX, 5005) +HANDLE_BAT(APINT_TYPE_PREFIX, 5006) +HANDLE_BAT(APINT_TYPE_PREFIX, 5007) +HANDLE_BAT(APINT_TYPE_PREFIX, 5008) +HANDLE_BAT(APINT_TYPE_PREFIX, 5009) +HANDLE_BAT(APINT_TYPE_PREFIX, 5010) +HANDLE_BAT(APINT_TYPE_PREFIX, 5011) +HANDLE_BAT(APINT_TYPE_PREFIX, 5012) +HANDLE_BAT(APINT_TYPE_PREFIX, 5013) +HANDLE_BAT(APINT_TYPE_PREFIX, 5014) +HANDLE_BAT(APINT_TYPE_PREFIX, 5015) +HANDLE_BAT(APINT_TYPE_PREFIX, 5016) +HANDLE_BAT(APINT_TYPE_PREFIX, 5017) +HANDLE_BAT(APINT_TYPE_PREFIX, 5018) +HANDLE_BAT(APINT_TYPE_PREFIX, 5019) +HANDLE_BAT(APINT_TYPE_PREFIX, 5020) +HANDLE_BAT(APINT_TYPE_PREFIX, 5021) +HANDLE_BAT(APINT_TYPE_PREFIX, 5022) +HANDLE_BAT(APINT_TYPE_PREFIX, 5023) +HANDLE_BAT(APINT_TYPE_PREFIX, 5024) +HANDLE_BAT(APINT_TYPE_PREFIX, 5025) +HANDLE_BAT(APINT_TYPE_PREFIX, 5026) +HANDLE_BAT(APINT_TYPE_PREFIX, 5027) +HANDLE_BAT(APINT_TYPE_PREFIX, 5028) +HANDLE_BAT(APINT_TYPE_PREFIX, 5029) +HANDLE_BAT(APINT_TYPE_PREFIX, 5030) +HANDLE_BAT(APINT_TYPE_PREFIX, 5031) +HANDLE_BAT(APINT_TYPE_PREFIX, 5032) +HANDLE_BAT(APINT_TYPE_PREFIX, 5033) +HANDLE_BAT(APINT_TYPE_PREFIX, 5034) +HANDLE_BAT(APINT_TYPE_PREFIX, 5035) +HANDLE_BAT(APINT_TYPE_PREFIX, 5036) +HANDLE_BAT(APINT_TYPE_PREFIX, 5037) +HANDLE_BAT(APINT_TYPE_PREFIX, 5038) +HANDLE_BAT(APINT_TYPE_PREFIX, 5039) +HANDLE_BAT(APINT_TYPE_PREFIX, 5040) +HANDLE_BAT(APINT_TYPE_PREFIX, 5041) +HANDLE_BAT(APINT_TYPE_PREFIX, 5042) +HANDLE_BAT(APINT_TYPE_PREFIX, 5043) +HANDLE_BAT(APINT_TYPE_PREFIX, 5044) +HANDLE_BAT(APINT_TYPE_PREFIX, 5045) +HANDLE_BAT(APINT_TYPE_PREFIX, 5046) +HANDLE_BAT(APINT_TYPE_PREFIX, 5047) +HANDLE_BAT(APINT_TYPE_PREFIX, 5048) +HANDLE_BAT(APINT_TYPE_PREFIX, 5049) +HANDLE_BAT(APINT_TYPE_PREFIX, 5050) +HANDLE_BAT(APINT_TYPE_PREFIX, 5051) +HANDLE_BAT(APINT_TYPE_PREFIX, 5052) +HANDLE_BAT(APINT_TYPE_PREFIX, 5053) +HANDLE_BAT(APINT_TYPE_PREFIX, 5054) +HANDLE_BAT(APINT_TYPE_PREFIX, 5055) +HANDLE_BAT(APINT_TYPE_PREFIX, 5056) +HANDLE_BAT(APINT_TYPE_PREFIX, 5057) +HANDLE_BAT(APINT_TYPE_PREFIX, 5058) +HANDLE_BAT(APINT_TYPE_PREFIX, 5059) +HANDLE_BAT(APINT_TYPE_PREFIX, 5060) +HANDLE_BAT(APINT_TYPE_PREFIX, 5061) +HANDLE_BAT(APINT_TYPE_PREFIX, 5062) +HANDLE_BAT(APINT_TYPE_PREFIX, 5063) +HANDLE_BAT(APINT_TYPE_PREFIX, 5064) +HANDLE_BAT(APINT_TYPE_PREFIX, 5065) +HANDLE_BAT(APINT_TYPE_PREFIX, 5066) +HANDLE_BAT(APINT_TYPE_PREFIX, 5067) +HANDLE_BAT(APINT_TYPE_PREFIX, 5068) +HANDLE_BAT(APINT_TYPE_PREFIX, 5069) +HANDLE_BAT(APINT_TYPE_PREFIX, 5070) +HANDLE_BAT(APINT_TYPE_PREFIX, 5071) +HANDLE_BAT(APINT_TYPE_PREFIX, 5072) +HANDLE_BAT(APINT_TYPE_PREFIX, 5073) +HANDLE_BAT(APINT_TYPE_PREFIX, 5074) +HANDLE_BAT(APINT_TYPE_PREFIX, 5075) +HANDLE_BAT(APINT_TYPE_PREFIX, 5076) +HANDLE_BAT(APINT_TYPE_PREFIX, 5077) +HANDLE_BAT(APINT_TYPE_PREFIX, 5078) +HANDLE_BAT(APINT_TYPE_PREFIX, 5079) +HANDLE_BAT(APINT_TYPE_PREFIX, 5080) +HANDLE_BAT(APINT_TYPE_PREFIX, 5081) +HANDLE_BAT(APINT_TYPE_PREFIX, 5082) +HANDLE_BAT(APINT_TYPE_PREFIX, 5083) +HANDLE_BAT(APINT_TYPE_PREFIX, 5084) +HANDLE_BAT(APINT_TYPE_PREFIX, 5085) +HANDLE_BAT(APINT_TYPE_PREFIX, 5086) +HANDLE_BAT(APINT_TYPE_PREFIX, 5087) +HANDLE_BAT(APINT_TYPE_PREFIX, 5088) +HANDLE_BAT(APINT_TYPE_PREFIX, 5089) +HANDLE_BAT(APINT_TYPE_PREFIX, 5090) +HANDLE_BAT(APINT_TYPE_PREFIX, 5091) +HANDLE_BAT(APINT_TYPE_PREFIX, 5092) +HANDLE_BAT(APINT_TYPE_PREFIX, 5093) +HANDLE_BAT(APINT_TYPE_PREFIX, 5094) +HANDLE_BAT(APINT_TYPE_PREFIX, 5095) +HANDLE_BAT(APINT_TYPE_PREFIX, 5096) +HANDLE_BAT(APINT_TYPE_PREFIX, 5097) +HANDLE_BAT(APINT_TYPE_PREFIX, 5098) +HANDLE_BAT(APINT_TYPE_PREFIX, 5099) +HANDLE_BAT(APINT_TYPE_PREFIX, 5100) +HANDLE_BAT(APINT_TYPE_PREFIX, 5101) +HANDLE_BAT(APINT_TYPE_PREFIX, 5102) +HANDLE_BAT(APINT_TYPE_PREFIX, 5103) +HANDLE_BAT(APINT_TYPE_PREFIX, 5104) +HANDLE_BAT(APINT_TYPE_PREFIX, 5105) +HANDLE_BAT(APINT_TYPE_PREFIX, 5106) +HANDLE_BAT(APINT_TYPE_PREFIX, 5107) +HANDLE_BAT(APINT_TYPE_PREFIX, 5108) +HANDLE_BAT(APINT_TYPE_PREFIX, 5109) +HANDLE_BAT(APINT_TYPE_PREFIX, 5110) +HANDLE_BAT(APINT_TYPE_PREFIX, 5111) +HANDLE_BAT(APINT_TYPE_PREFIX, 5112) +HANDLE_BAT(APINT_TYPE_PREFIX, 5113) +HANDLE_BAT(APINT_TYPE_PREFIX, 5114) +HANDLE_BAT(APINT_TYPE_PREFIX, 5115) +HANDLE_BAT(APINT_TYPE_PREFIX, 5116) +HANDLE_BAT(APINT_TYPE_PREFIX, 5117) +HANDLE_BAT(APINT_TYPE_PREFIX, 5118) +HANDLE_BAT(APINT_TYPE_PREFIX, 5119) +HANDLE_BAT(APINT_TYPE_PREFIX, 5120) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 5 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 5121) +HANDLE_BAT(, 5122) +HANDLE_BAT(, 5123) +HANDLE_BAT(, 5124) +HANDLE_BAT(, 5125) +HANDLE_BAT(, 5126) +HANDLE_BAT(, 5127) +HANDLE_BAT(, 5128) +HANDLE_BAT(, 5129) +HANDLE_BAT(, 5130) +HANDLE_BAT(, 5131) +HANDLE_BAT(, 5132) +HANDLE_BAT(, 5133) +HANDLE_BAT(, 5134) +HANDLE_BAT(, 5135) +HANDLE_BAT(, 5136) +HANDLE_BAT(, 5137) +HANDLE_BAT(, 5138) +HANDLE_BAT(, 5139) +HANDLE_BAT(, 5140) +HANDLE_BAT(, 5141) +HANDLE_BAT(, 5142) +HANDLE_BAT(, 5143) +HANDLE_BAT(, 5144) +HANDLE_BAT(, 5145) +HANDLE_BAT(, 5146) +HANDLE_BAT(, 5147) +HANDLE_BAT(, 5148) +HANDLE_BAT(, 5149) +HANDLE_BAT(, 5150) +HANDLE_BAT(, 5151) +HANDLE_BAT(, 5152) +HANDLE_BAT(, 5153) +HANDLE_BAT(, 5154) +HANDLE_BAT(, 5155) +HANDLE_BAT(, 5156) +HANDLE_BAT(, 5157) +HANDLE_BAT(, 5158) +HANDLE_BAT(, 5159) +HANDLE_BAT(, 5160) +HANDLE_BAT(, 5161) +HANDLE_BAT(, 5162) +HANDLE_BAT(, 5163) +HANDLE_BAT(, 5164) +HANDLE_BAT(, 5165) +HANDLE_BAT(, 5166) +HANDLE_BAT(, 5167) +HANDLE_BAT(, 5168) +HANDLE_BAT(, 5169) +HANDLE_BAT(, 5170) +HANDLE_BAT(, 5171) +HANDLE_BAT(, 5172) +HANDLE_BAT(, 5173) +HANDLE_BAT(, 5174) +HANDLE_BAT(, 5175) +HANDLE_BAT(, 5176) +HANDLE_BAT(, 5177) +HANDLE_BAT(, 5178) +HANDLE_BAT(, 5179) +HANDLE_BAT(, 5180) +HANDLE_BAT(, 5181) +HANDLE_BAT(, 5182) +HANDLE_BAT(, 5183) +HANDLE_BAT(, 5184) +HANDLE_BAT(, 5185) +HANDLE_BAT(, 5186) +HANDLE_BAT(, 5187) +HANDLE_BAT(, 5188) +HANDLE_BAT(, 5189) +HANDLE_BAT(, 5190) +HANDLE_BAT(, 5191) +HANDLE_BAT(, 5192) +HANDLE_BAT(, 5193) +HANDLE_BAT(, 5194) +HANDLE_BAT(, 5195) +HANDLE_BAT(, 5196) +HANDLE_BAT(, 5197) +HANDLE_BAT(, 5198) +HANDLE_BAT(, 5199) +HANDLE_BAT(, 5200) +HANDLE_BAT(, 5201) +HANDLE_BAT(, 5202) +HANDLE_BAT(, 5203) +HANDLE_BAT(, 5204) +HANDLE_BAT(, 5205) +HANDLE_BAT(, 5206) +HANDLE_BAT(, 5207) +HANDLE_BAT(, 5208) +HANDLE_BAT(, 5209) +HANDLE_BAT(, 5210) +HANDLE_BAT(, 5211) +HANDLE_BAT(, 5212) +HANDLE_BAT(, 5213) +HANDLE_BAT(, 5214) +HANDLE_BAT(, 5215) +HANDLE_BAT(, 5216) +HANDLE_BAT(, 5217) +HANDLE_BAT(, 5218) +HANDLE_BAT(, 5219) +HANDLE_BAT(, 5220) +HANDLE_BAT(, 5221) +HANDLE_BAT(, 5222) +HANDLE_BAT(, 5223) +HANDLE_BAT(, 5224) +HANDLE_BAT(, 5225) +HANDLE_BAT(, 5226) +HANDLE_BAT(, 5227) +HANDLE_BAT(, 5228) +HANDLE_BAT(, 5229) +HANDLE_BAT(, 5230) +HANDLE_BAT(, 5231) +HANDLE_BAT(, 5232) +HANDLE_BAT(, 5233) +HANDLE_BAT(, 5234) +HANDLE_BAT(, 5235) +HANDLE_BAT(, 5236) +HANDLE_BAT(, 5237) +HANDLE_BAT(, 5238) +HANDLE_BAT(, 5239) +HANDLE_BAT(, 5240) +HANDLE_BAT(, 5241) +HANDLE_BAT(, 5242) +HANDLE_BAT(, 5243) +HANDLE_BAT(, 5244) +HANDLE_BAT(, 5245) +HANDLE_BAT(, 5246) +HANDLE_BAT(, 5247) +HANDLE_BAT(, 5248) +HANDLE_BAT(, 5249) +HANDLE_BAT(, 5250) +HANDLE_BAT(, 5251) +HANDLE_BAT(, 5252) +HANDLE_BAT(, 5253) +HANDLE_BAT(, 5254) +HANDLE_BAT(, 5255) +HANDLE_BAT(, 5256) +HANDLE_BAT(, 5257) +HANDLE_BAT(, 5258) +HANDLE_BAT(, 5259) +HANDLE_BAT(, 5260) +HANDLE_BAT(, 5261) +HANDLE_BAT(, 5262) +HANDLE_BAT(, 5263) +HANDLE_BAT(, 5264) +HANDLE_BAT(, 5265) +HANDLE_BAT(, 5266) +HANDLE_BAT(, 5267) +HANDLE_BAT(, 5268) +HANDLE_BAT(, 5269) +HANDLE_BAT(, 5270) +HANDLE_BAT(, 5271) +HANDLE_BAT(, 5272) +HANDLE_BAT(, 5273) +HANDLE_BAT(, 5274) +HANDLE_BAT(, 5275) +HANDLE_BAT(, 5276) +HANDLE_BAT(, 5277) +HANDLE_BAT(, 5278) +HANDLE_BAT(, 5279) +HANDLE_BAT(, 5280) +HANDLE_BAT(, 5281) +HANDLE_BAT(, 5282) +HANDLE_BAT(, 5283) +HANDLE_BAT(, 5284) +HANDLE_BAT(, 5285) +HANDLE_BAT(, 5286) +HANDLE_BAT(, 5287) +HANDLE_BAT(, 5288) +HANDLE_BAT(, 5289) +HANDLE_BAT(, 5290) +HANDLE_BAT(, 5291) +HANDLE_BAT(, 5292) +HANDLE_BAT(, 5293) +HANDLE_BAT(, 5294) +HANDLE_BAT(, 5295) +HANDLE_BAT(, 5296) +HANDLE_BAT(, 5297) +HANDLE_BAT(, 5298) +HANDLE_BAT(, 5299) +HANDLE_BAT(, 5300) +HANDLE_BAT(, 5301) +HANDLE_BAT(, 5302) +HANDLE_BAT(, 5303) +HANDLE_BAT(, 5304) +HANDLE_BAT(, 5305) +HANDLE_BAT(, 5306) +HANDLE_BAT(, 5307) +HANDLE_BAT(, 5308) +HANDLE_BAT(, 5309) +HANDLE_BAT(, 5310) +HANDLE_BAT(, 5311) +HANDLE_BAT(, 5312) +HANDLE_BAT(, 5313) +HANDLE_BAT(, 5314) +HANDLE_BAT(, 5315) +HANDLE_BAT(, 5316) +HANDLE_BAT(, 5317) +HANDLE_BAT(, 5318) +HANDLE_BAT(, 5319) +HANDLE_BAT(, 5320) +HANDLE_BAT(, 5321) +HANDLE_BAT(, 5322) +HANDLE_BAT(, 5323) +HANDLE_BAT(, 5324) +HANDLE_BAT(, 5325) +HANDLE_BAT(, 5326) +HANDLE_BAT(, 5327) +HANDLE_BAT(, 5328) +HANDLE_BAT(, 5329) +HANDLE_BAT(, 5330) +HANDLE_BAT(, 5331) +HANDLE_BAT(, 5332) +HANDLE_BAT(, 5333) +HANDLE_BAT(, 5334) +HANDLE_BAT(, 5335) +HANDLE_BAT(, 5336) +HANDLE_BAT(, 5337) +HANDLE_BAT(, 5338) +HANDLE_BAT(, 5339) +HANDLE_BAT(, 5340) +HANDLE_BAT(, 5341) +HANDLE_BAT(, 5342) +HANDLE_BAT(, 5343) +HANDLE_BAT(, 5344) +HANDLE_BAT(, 5345) +HANDLE_BAT(, 5346) +HANDLE_BAT(, 5347) +HANDLE_BAT(, 5348) +HANDLE_BAT(, 5349) +HANDLE_BAT(, 5350) +HANDLE_BAT(, 5351) +HANDLE_BAT(, 5352) +HANDLE_BAT(, 5353) +HANDLE_BAT(, 5354) +HANDLE_BAT(, 5355) +HANDLE_BAT(, 5356) +HANDLE_BAT(, 5357) +HANDLE_BAT(, 5358) +HANDLE_BAT(, 5359) +HANDLE_BAT(, 5360) +HANDLE_BAT(, 5361) +HANDLE_BAT(, 5362) +HANDLE_BAT(, 5363) +HANDLE_BAT(, 5364) +HANDLE_BAT(, 5365) +HANDLE_BAT(, 5366) +HANDLE_BAT(, 5367) +HANDLE_BAT(, 5368) +HANDLE_BAT(, 5369) +HANDLE_BAT(, 5370) +HANDLE_BAT(, 5371) +HANDLE_BAT(, 5372) +HANDLE_BAT(, 5373) +HANDLE_BAT(, 5374) +HANDLE_BAT(, 5375) +HANDLE_BAT(, 5376) +HANDLE_BAT(, 5377) +HANDLE_BAT(, 5378) +HANDLE_BAT(, 5379) +HANDLE_BAT(, 5380) +HANDLE_BAT(, 5381) +HANDLE_BAT(, 5382) +HANDLE_BAT(, 5383) +HANDLE_BAT(, 5384) +HANDLE_BAT(, 5385) +HANDLE_BAT(, 5386) +HANDLE_BAT(, 5387) +HANDLE_BAT(, 5388) +HANDLE_BAT(, 5389) +HANDLE_BAT(, 5390) +HANDLE_BAT(, 5391) +HANDLE_BAT(, 5392) +HANDLE_BAT(, 5393) +HANDLE_BAT(, 5394) +HANDLE_BAT(, 5395) +HANDLE_BAT(, 5396) +HANDLE_BAT(, 5397) +HANDLE_BAT(, 5398) +HANDLE_BAT(, 5399) +HANDLE_BAT(, 5400) +HANDLE_BAT(, 5401) +HANDLE_BAT(, 5402) +HANDLE_BAT(, 5403) +HANDLE_BAT(, 5404) +HANDLE_BAT(, 5405) +HANDLE_BAT(, 5406) +HANDLE_BAT(, 5407) +HANDLE_BAT(, 5408) +HANDLE_BAT(, 5409) +HANDLE_BAT(, 5410) +HANDLE_BAT(, 5411) +HANDLE_BAT(, 5412) +HANDLE_BAT(, 5413) +HANDLE_BAT(, 5414) +HANDLE_BAT(, 5415) +HANDLE_BAT(, 5416) +HANDLE_BAT(, 5417) +HANDLE_BAT(, 5418) +HANDLE_BAT(, 5419) +HANDLE_BAT(, 5420) +HANDLE_BAT(, 5421) +HANDLE_BAT(, 5422) +HANDLE_BAT(, 5423) +HANDLE_BAT(, 5424) +HANDLE_BAT(, 5425) +HANDLE_BAT(, 5426) +HANDLE_BAT(, 5427) +HANDLE_BAT(, 5428) +HANDLE_BAT(, 5429) +HANDLE_BAT(, 5430) +HANDLE_BAT(, 5431) +HANDLE_BAT(, 5432) +HANDLE_BAT(, 5433) +HANDLE_BAT(, 5434) +HANDLE_BAT(, 5435) +HANDLE_BAT(, 5436) +HANDLE_BAT(, 5437) +HANDLE_BAT(, 5438) +HANDLE_BAT(, 5439) +HANDLE_BAT(, 5440) +HANDLE_BAT(, 5441) +HANDLE_BAT(, 5442) +HANDLE_BAT(, 5443) +HANDLE_BAT(, 5444) +HANDLE_BAT(, 5445) +HANDLE_BAT(, 5446) +HANDLE_BAT(, 5447) +HANDLE_BAT(, 5448) +HANDLE_BAT(, 5449) +HANDLE_BAT(, 5450) +HANDLE_BAT(, 5451) +HANDLE_BAT(, 5452) +HANDLE_BAT(, 5453) +HANDLE_BAT(, 5454) +HANDLE_BAT(, 5455) +HANDLE_BAT(, 5456) +HANDLE_BAT(, 5457) +HANDLE_BAT(, 5458) +HANDLE_BAT(, 5459) +HANDLE_BAT(, 5460) +HANDLE_BAT(, 5461) +HANDLE_BAT(, 5462) +HANDLE_BAT(, 5463) +HANDLE_BAT(, 5464) +HANDLE_BAT(, 5465) +HANDLE_BAT(, 5466) +HANDLE_BAT(, 5467) +HANDLE_BAT(, 5468) +HANDLE_BAT(, 5469) +HANDLE_BAT(, 5470) +HANDLE_BAT(, 5471) +HANDLE_BAT(, 5472) +HANDLE_BAT(, 5473) +HANDLE_BAT(, 5474) +HANDLE_BAT(, 5475) +HANDLE_BAT(, 5476) +HANDLE_BAT(, 5477) +HANDLE_BAT(, 5478) +HANDLE_BAT(, 5479) +HANDLE_BAT(, 5480) +HANDLE_BAT(, 5481) +HANDLE_BAT(, 5482) +HANDLE_BAT(, 5483) +HANDLE_BAT(, 5484) +HANDLE_BAT(, 5485) +HANDLE_BAT(, 5486) +HANDLE_BAT(, 5487) +HANDLE_BAT(, 5488) +HANDLE_BAT(, 5489) +HANDLE_BAT(, 5490) +HANDLE_BAT(, 5491) +HANDLE_BAT(, 5492) +HANDLE_BAT(, 5493) +HANDLE_BAT(, 5494) +HANDLE_BAT(, 5495) +HANDLE_BAT(, 5496) +HANDLE_BAT(, 5497) +HANDLE_BAT(, 5498) +HANDLE_BAT(, 5499) +HANDLE_BAT(, 5500) +HANDLE_BAT(, 5501) +HANDLE_BAT(, 5502) +HANDLE_BAT(, 5503) +HANDLE_BAT(, 5504) +HANDLE_BAT(, 5505) +HANDLE_BAT(, 5506) +HANDLE_BAT(, 5507) +HANDLE_BAT(, 5508) +HANDLE_BAT(, 5509) +HANDLE_BAT(, 5510) +HANDLE_BAT(, 5511) +HANDLE_BAT(, 5512) +HANDLE_BAT(, 5513) +HANDLE_BAT(, 5514) +HANDLE_BAT(, 5515) +HANDLE_BAT(, 5516) +HANDLE_BAT(, 5517) +HANDLE_BAT(, 5518) +HANDLE_BAT(, 5519) +HANDLE_BAT(, 5520) +HANDLE_BAT(, 5521) +HANDLE_BAT(, 5522) +HANDLE_BAT(, 5523) +HANDLE_BAT(, 5524) +HANDLE_BAT(, 5525) +HANDLE_BAT(, 5526) +HANDLE_BAT(, 5527) +HANDLE_BAT(, 5528) +HANDLE_BAT(, 5529) +HANDLE_BAT(, 5530) +HANDLE_BAT(, 5531) +HANDLE_BAT(, 5532) +HANDLE_BAT(, 5533) +HANDLE_BAT(, 5534) +HANDLE_BAT(, 5535) +HANDLE_BAT(, 5536) +HANDLE_BAT(, 5537) +HANDLE_BAT(, 5538) +HANDLE_BAT(, 5539) +HANDLE_BAT(, 5540) +HANDLE_BAT(, 5541) +HANDLE_BAT(, 5542) +HANDLE_BAT(, 5543) +HANDLE_BAT(, 5544) +HANDLE_BAT(, 5545) +HANDLE_BAT(, 5546) +HANDLE_BAT(, 5547) +HANDLE_BAT(, 5548) +HANDLE_BAT(, 5549) +HANDLE_BAT(, 5550) +HANDLE_BAT(, 5551) +HANDLE_BAT(, 5552) +HANDLE_BAT(, 5553) +HANDLE_BAT(, 5554) +HANDLE_BAT(, 5555) +HANDLE_BAT(, 5556) +HANDLE_BAT(, 5557) +HANDLE_BAT(, 5558) +HANDLE_BAT(, 5559) +HANDLE_BAT(, 5560) +HANDLE_BAT(, 5561) +HANDLE_BAT(, 5562) +HANDLE_BAT(, 5563) +HANDLE_BAT(, 5564) +HANDLE_BAT(, 5565) +HANDLE_BAT(, 5566) +HANDLE_BAT(, 5567) +HANDLE_BAT(, 5568) +HANDLE_BAT(, 5569) +HANDLE_BAT(, 5570) +HANDLE_BAT(, 5571) +HANDLE_BAT(, 5572) +HANDLE_BAT(, 5573) +HANDLE_BAT(, 5574) +HANDLE_BAT(, 5575) +HANDLE_BAT(, 5576) +HANDLE_BAT(, 5577) +HANDLE_BAT(, 5578) +HANDLE_BAT(, 5579) +HANDLE_BAT(, 5580) +HANDLE_BAT(, 5581) +HANDLE_BAT(, 5582) +HANDLE_BAT(, 5583) +HANDLE_BAT(, 5584) +HANDLE_BAT(, 5585) +HANDLE_BAT(, 5586) +HANDLE_BAT(, 5587) +HANDLE_BAT(, 5588) +HANDLE_BAT(, 5589) +HANDLE_BAT(, 5590) +HANDLE_BAT(, 5591) +HANDLE_BAT(, 5592) +HANDLE_BAT(, 5593) +HANDLE_BAT(, 5594) +HANDLE_BAT(, 5595) +HANDLE_BAT(, 5596) +HANDLE_BAT(, 5597) +HANDLE_BAT(, 5598) +HANDLE_BAT(, 5599) +HANDLE_BAT(, 5600) +HANDLE_BAT(, 5601) +HANDLE_BAT(, 5602) +HANDLE_BAT(, 5603) +HANDLE_BAT(, 5604) +HANDLE_BAT(, 5605) +HANDLE_BAT(, 5606) +HANDLE_BAT(, 5607) +HANDLE_BAT(, 5608) +HANDLE_BAT(, 5609) +HANDLE_BAT(, 5610) +HANDLE_BAT(, 5611) +HANDLE_BAT(, 5612) +HANDLE_BAT(, 5613) +HANDLE_BAT(, 5614) +HANDLE_BAT(, 5615) +HANDLE_BAT(, 5616) +HANDLE_BAT(, 5617) +HANDLE_BAT(, 5618) +HANDLE_BAT(, 5619) +HANDLE_BAT(, 5620) +HANDLE_BAT(, 5621) +HANDLE_BAT(, 5622) +HANDLE_BAT(, 5623) +HANDLE_BAT(, 5624) +HANDLE_BAT(, 5625) +HANDLE_BAT(, 5626) +HANDLE_BAT(, 5627) +HANDLE_BAT(, 5628) +HANDLE_BAT(, 5629) +HANDLE_BAT(, 5630) +HANDLE_BAT(, 5631) +HANDLE_BAT(, 5632) +HANDLE_BAT(, 5633) +HANDLE_BAT(, 5634) +HANDLE_BAT(, 5635) +HANDLE_BAT(, 5636) +HANDLE_BAT(, 5637) +HANDLE_BAT(, 5638) +HANDLE_BAT(, 5639) +HANDLE_BAT(, 5640) +HANDLE_BAT(, 5641) +HANDLE_BAT(, 5642) +HANDLE_BAT(, 5643) +HANDLE_BAT(, 5644) +HANDLE_BAT(, 5645) +HANDLE_BAT(, 5646) +HANDLE_BAT(, 5647) +HANDLE_BAT(, 5648) +HANDLE_BAT(, 5649) +HANDLE_BAT(, 5650) +HANDLE_BAT(, 5651) +HANDLE_BAT(, 5652) +HANDLE_BAT(, 5653) +HANDLE_BAT(, 5654) +HANDLE_BAT(, 5655) +HANDLE_BAT(, 5656) +HANDLE_BAT(, 5657) +HANDLE_BAT(, 5658) +HANDLE_BAT(, 5659) +HANDLE_BAT(, 5660) +HANDLE_BAT(, 5661) +HANDLE_BAT(, 5662) +HANDLE_BAT(, 5663) +HANDLE_BAT(, 5664) +HANDLE_BAT(, 5665) +HANDLE_BAT(, 5666) +HANDLE_BAT(, 5667) +HANDLE_BAT(, 5668) +HANDLE_BAT(, 5669) +HANDLE_BAT(, 5670) +HANDLE_BAT(, 5671) +HANDLE_BAT(, 5672) +HANDLE_BAT(, 5673) +HANDLE_BAT(, 5674) +HANDLE_BAT(, 5675) +HANDLE_BAT(, 5676) +HANDLE_BAT(, 5677) +HANDLE_BAT(, 5678) +HANDLE_BAT(, 5679) +HANDLE_BAT(, 5680) +HANDLE_BAT(, 5681) +HANDLE_BAT(, 5682) +HANDLE_BAT(, 5683) +HANDLE_BAT(, 5684) +HANDLE_BAT(, 5685) +HANDLE_BAT(, 5686) +HANDLE_BAT(, 5687) +HANDLE_BAT(, 5688) +HANDLE_BAT(, 5689) +HANDLE_BAT(, 5690) +HANDLE_BAT(, 5691) +HANDLE_BAT(, 5692) +HANDLE_BAT(, 5693) +HANDLE_BAT(, 5694) +HANDLE_BAT(, 5695) +HANDLE_BAT(, 5696) +HANDLE_BAT(, 5697) +HANDLE_BAT(, 5698) +HANDLE_BAT(, 5699) +HANDLE_BAT(, 5700) +HANDLE_BAT(, 5701) +HANDLE_BAT(, 5702) +HANDLE_BAT(, 5703) +HANDLE_BAT(, 5704) +HANDLE_BAT(, 5705) +HANDLE_BAT(, 5706) +HANDLE_BAT(, 5707) +HANDLE_BAT(, 5708) +HANDLE_BAT(, 5709) +HANDLE_BAT(, 5710) +HANDLE_BAT(, 5711) +HANDLE_BAT(, 5712) +HANDLE_BAT(, 5713) +HANDLE_BAT(, 5714) +HANDLE_BAT(, 5715) +HANDLE_BAT(, 5716) +HANDLE_BAT(, 5717) +HANDLE_BAT(, 5718) +HANDLE_BAT(, 5719) +HANDLE_BAT(, 5720) +HANDLE_BAT(, 5721) +HANDLE_BAT(, 5722) +HANDLE_BAT(, 5723) +HANDLE_BAT(, 5724) +HANDLE_BAT(, 5725) +HANDLE_BAT(, 5726) +HANDLE_BAT(, 5727) +HANDLE_BAT(, 5728) +HANDLE_BAT(, 5729) +HANDLE_BAT(, 5730) +HANDLE_BAT(, 5731) +HANDLE_BAT(, 5732) +HANDLE_BAT(, 5733) +HANDLE_BAT(, 5734) +HANDLE_BAT(, 5735) +HANDLE_BAT(, 5736) +HANDLE_BAT(, 5737) +HANDLE_BAT(, 5738) +HANDLE_BAT(, 5739) +HANDLE_BAT(, 5740) +HANDLE_BAT(, 5741) +HANDLE_BAT(, 5742) +HANDLE_BAT(, 5743) +HANDLE_BAT(, 5744) +HANDLE_BAT(, 5745) +HANDLE_BAT(, 5746) +HANDLE_BAT(, 5747) +HANDLE_BAT(, 5748) +HANDLE_BAT(, 5749) +HANDLE_BAT(, 5750) +HANDLE_BAT(, 5751) +HANDLE_BAT(, 5752) +HANDLE_BAT(, 5753) +HANDLE_BAT(, 5754) +HANDLE_BAT(, 5755) +HANDLE_BAT(, 5756) +HANDLE_BAT(, 5757) +HANDLE_BAT(, 5758) +HANDLE_BAT(, 5759) +HANDLE_BAT(, 5760) +HANDLE_BAT(, 5761) +HANDLE_BAT(, 5762) +HANDLE_BAT(, 5763) +HANDLE_BAT(, 5764) +HANDLE_BAT(, 5765) +HANDLE_BAT(, 5766) +HANDLE_BAT(, 5767) +HANDLE_BAT(, 5768) +HANDLE_BAT(, 5769) +HANDLE_BAT(, 5770) +HANDLE_BAT(, 5771) +HANDLE_BAT(, 5772) +HANDLE_BAT(, 5773) +HANDLE_BAT(, 5774) +HANDLE_BAT(, 5775) +HANDLE_BAT(, 5776) +HANDLE_BAT(, 5777) +HANDLE_BAT(, 5778) +HANDLE_BAT(, 5779) +HANDLE_BAT(, 5780) +HANDLE_BAT(, 5781) +HANDLE_BAT(, 5782) +HANDLE_BAT(, 5783) +HANDLE_BAT(, 5784) +HANDLE_BAT(, 5785) +HANDLE_BAT(, 5786) +HANDLE_BAT(, 5787) +HANDLE_BAT(, 5788) +HANDLE_BAT(, 5789) +HANDLE_BAT(, 5790) +HANDLE_BAT(, 5791) +HANDLE_BAT(, 5792) +HANDLE_BAT(, 5793) +HANDLE_BAT(, 5794) +HANDLE_BAT(, 5795) +HANDLE_BAT(, 5796) +HANDLE_BAT(, 5797) +HANDLE_BAT(, 5798) +HANDLE_BAT(, 5799) +HANDLE_BAT(, 5800) +HANDLE_BAT(, 5801) +HANDLE_BAT(, 5802) +HANDLE_BAT(, 5803) +HANDLE_BAT(, 5804) +HANDLE_BAT(, 5805) +HANDLE_BAT(, 5806) +HANDLE_BAT(, 5807) +HANDLE_BAT(, 5808) +HANDLE_BAT(, 5809) +HANDLE_BAT(, 5810) +HANDLE_BAT(, 5811) +HANDLE_BAT(, 5812) +HANDLE_BAT(, 5813) +HANDLE_BAT(, 5814) +HANDLE_BAT(, 5815) +HANDLE_BAT(, 5816) +HANDLE_BAT(, 5817) +HANDLE_BAT(, 5818) +HANDLE_BAT(, 5819) +HANDLE_BAT(, 5820) +HANDLE_BAT(, 5821) +HANDLE_BAT(, 5822) +HANDLE_BAT(, 5823) +HANDLE_BAT(, 5824) +HANDLE_BAT(, 5825) +HANDLE_BAT(, 5826) +HANDLE_BAT(, 5827) +HANDLE_BAT(, 5828) +HANDLE_BAT(, 5829) +HANDLE_BAT(, 5830) +HANDLE_BAT(, 5831) +HANDLE_BAT(, 5832) +HANDLE_BAT(, 5833) +HANDLE_BAT(, 5834) +HANDLE_BAT(, 5835) +HANDLE_BAT(, 5836) +HANDLE_BAT(, 5837) +HANDLE_BAT(, 5838) +HANDLE_BAT(, 5839) +HANDLE_BAT(, 5840) +HANDLE_BAT(, 5841) +HANDLE_BAT(, 5842) +HANDLE_BAT(, 5843) +HANDLE_BAT(, 5844) +HANDLE_BAT(, 5845) +HANDLE_BAT(, 5846) +HANDLE_BAT(, 5847) +HANDLE_BAT(, 5848) +HANDLE_BAT(, 5849) +HANDLE_BAT(, 5850) +HANDLE_BAT(, 5851) +HANDLE_BAT(, 5852) +HANDLE_BAT(, 5853) +HANDLE_BAT(, 5854) +HANDLE_BAT(, 5855) +HANDLE_BAT(, 5856) +HANDLE_BAT(, 5857) +HANDLE_BAT(, 5858) +HANDLE_BAT(, 5859) +HANDLE_BAT(, 5860) +HANDLE_BAT(, 5861) +HANDLE_BAT(, 5862) +HANDLE_BAT(, 5863) +HANDLE_BAT(, 5864) +HANDLE_BAT(, 5865) +HANDLE_BAT(, 5866) +HANDLE_BAT(, 5867) +HANDLE_BAT(, 5868) +HANDLE_BAT(, 5869) +HANDLE_BAT(, 5870) +HANDLE_BAT(, 5871) +HANDLE_BAT(, 5872) +HANDLE_BAT(, 5873) +HANDLE_BAT(, 5874) +HANDLE_BAT(, 5875) +HANDLE_BAT(, 5876) +HANDLE_BAT(, 5877) +HANDLE_BAT(, 5878) +HANDLE_BAT(, 5879) +HANDLE_BAT(, 5880) +HANDLE_BAT(, 5881) +HANDLE_BAT(, 5882) +HANDLE_BAT(, 5883) +HANDLE_BAT(, 5884) +HANDLE_BAT(, 5885) +HANDLE_BAT(, 5886) +HANDLE_BAT(, 5887) +HANDLE_BAT(, 5888) +HANDLE_BAT(, 5889) +HANDLE_BAT(, 5890) +HANDLE_BAT(, 5891) +HANDLE_BAT(, 5892) +HANDLE_BAT(, 5893) +HANDLE_BAT(, 5894) +HANDLE_BAT(, 5895) +HANDLE_BAT(, 5896) +HANDLE_BAT(, 5897) +HANDLE_BAT(, 5898) +HANDLE_BAT(, 5899) +HANDLE_BAT(, 5900) +HANDLE_BAT(, 5901) +HANDLE_BAT(, 5902) +HANDLE_BAT(, 5903) +HANDLE_BAT(, 5904) +HANDLE_BAT(, 5905) +HANDLE_BAT(, 5906) +HANDLE_BAT(, 5907) +HANDLE_BAT(, 5908) +HANDLE_BAT(, 5909) +HANDLE_BAT(, 5910) +HANDLE_BAT(, 5911) +HANDLE_BAT(, 5912) +HANDLE_BAT(, 5913) +HANDLE_BAT(, 5914) +HANDLE_BAT(, 5915) +HANDLE_BAT(, 5916) +HANDLE_BAT(, 5917) +HANDLE_BAT(, 5918) +HANDLE_BAT(, 5919) +HANDLE_BAT(, 5920) +HANDLE_BAT(, 5921) +HANDLE_BAT(, 5922) +HANDLE_BAT(, 5923) +HANDLE_BAT(, 5924) +HANDLE_BAT(, 5925) +HANDLE_BAT(, 5926) +HANDLE_BAT(, 5927) +HANDLE_BAT(, 5928) +HANDLE_BAT(, 5929) +HANDLE_BAT(, 5930) +HANDLE_BAT(, 5931) +HANDLE_BAT(, 5932) +HANDLE_BAT(, 5933) +HANDLE_BAT(, 5934) +HANDLE_BAT(, 5935) +HANDLE_BAT(, 5936) +HANDLE_BAT(, 5937) +HANDLE_BAT(, 5938) +HANDLE_BAT(, 5939) +HANDLE_BAT(, 5940) +HANDLE_BAT(, 5941) +HANDLE_BAT(, 5942) +HANDLE_BAT(, 5943) +HANDLE_BAT(, 5944) +HANDLE_BAT(, 5945) +HANDLE_BAT(, 5946) +HANDLE_BAT(, 5947) +HANDLE_BAT(, 5948) +HANDLE_BAT(, 5949) +HANDLE_BAT(, 5950) +HANDLE_BAT(, 5951) +HANDLE_BAT(, 5952) +HANDLE_BAT(, 5953) +HANDLE_BAT(, 5954) +HANDLE_BAT(, 5955) +HANDLE_BAT(, 5956) +HANDLE_BAT(, 5957) +HANDLE_BAT(, 5958) +HANDLE_BAT(, 5959) +HANDLE_BAT(, 5960) +HANDLE_BAT(, 5961) +HANDLE_BAT(, 5962) +HANDLE_BAT(, 5963) +HANDLE_BAT(, 5964) +HANDLE_BAT(, 5965) +HANDLE_BAT(, 5966) +HANDLE_BAT(, 5967) +HANDLE_BAT(, 5968) +HANDLE_BAT(, 5969) +HANDLE_BAT(, 5970) +HANDLE_BAT(, 5971) +HANDLE_BAT(, 5972) +HANDLE_BAT(, 5973) +HANDLE_BAT(, 5974) +HANDLE_BAT(, 5975) +HANDLE_BAT(, 5976) +HANDLE_BAT(, 5977) +HANDLE_BAT(, 5978) +HANDLE_BAT(, 5979) +HANDLE_BAT(, 5980) +HANDLE_BAT(, 5981) +HANDLE_BAT(, 5982) +HANDLE_BAT(, 5983) +HANDLE_BAT(, 5984) +HANDLE_BAT(, 5985) +HANDLE_BAT(, 5986) +HANDLE_BAT(, 5987) +HANDLE_BAT(, 5988) +HANDLE_BAT(, 5989) +HANDLE_BAT(, 5990) +HANDLE_BAT(, 5991) +HANDLE_BAT(, 5992) +HANDLE_BAT(, 5993) +HANDLE_BAT(, 5994) +HANDLE_BAT(, 5995) +HANDLE_BAT(, 5996) +HANDLE_BAT(, 5997) +HANDLE_BAT(, 5998) +HANDLE_BAT(, 5999) +HANDLE_BAT(, 6000) +HANDLE_BAT(, 6001) +HANDLE_BAT(, 6002) +HANDLE_BAT(, 6003) +HANDLE_BAT(, 6004) +HANDLE_BAT(, 6005) +HANDLE_BAT(, 6006) +HANDLE_BAT(, 6007) +HANDLE_BAT(, 6008) +HANDLE_BAT(, 6009) +HANDLE_BAT(, 6010) +HANDLE_BAT(, 6011) +HANDLE_BAT(, 6012) +HANDLE_BAT(, 6013) +HANDLE_BAT(, 6014) +HANDLE_BAT(, 6015) +HANDLE_BAT(, 6016) +HANDLE_BAT(, 6017) +HANDLE_BAT(, 6018) +HANDLE_BAT(, 6019) +HANDLE_BAT(, 6020) +HANDLE_BAT(, 6021) +HANDLE_BAT(, 6022) +HANDLE_BAT(, 6023) +HANDLE_BAT(, 6024) +HANDLE_BAT(, 6025) +HANDLE_BAT(, 6026) +HANDLE_BAT(, 6027) +HANDLE_BAT(, 6028) +HANDLE_BAT(, 6029) +HANDLE_BAT(, 6030) +HANDLE_BAT(, 6031) +HANDLE_BAT(, 6032) +HANDLE_BAT(, 6033) +HANDLE_BAT(, 6034) +HANDLE_BAT(, 6035) +HANDLE_BAT(, 6036) +HANDLE_BAT(, 6037) +HANDLE_BAT(, 6038) +HANDLE_BAT(, 6039) +HANDLE_BAT(, 6040) +HANDLE_BAT(, 6041) +HANDLE_BAT(, 6042) +HANDLE_BAT(, 6043) +HANDLE_BAT(, 6044) +HANDLE_BAT(, 6045) +HANDLE_BAT(, 6046) +HANDLE_BAT(, 6047) +HANDLE_BAT(, 6048) +HANDLE_BAT(, 6049) +HANDLE_BAT(, 6050) +HANDLE_BAT(, 6051) +HANDLE_BAT(, 6052) +HANDLE_BAT(, 6053) +HANDLE_BAT(, 6054) +HANDLE_BAT(, 6055) +HANDLE_BAT(, 6056) +HANDLE_BAT(, 6057) +HANDLE_BAT(, 6058) +HANDLE_BAT(, 6059) +HANDLE_BAT(, 6060) +HANDLE_BAT(, 6061) +HANDLE_BAT(, 6062) +HANDLE_BAT(, 6063) +HANDLE_BAT(, 6064) +HANDLE_BAT(, 6065) +HANDLE_BAT(, 6066) +HANDLE_BAT(, 6067) +HANDLE_BAT(, 6068) +HANDLE_BAT(, 6069) +HANDLE_BAT(, 6070) +HANDLE_BAT(, 6071) +HANDLE_BAT(, 6072) +HANDLE_BAT(, 6073) +HANDLE_BAT(, 6074) +HANDLE_BAT(, 6075) +HANDLE_BAT(, 6076) +HANDLE_BAT(, 6077) +HANDLE_BAT(, 6078) +HANDLE_BAT(, 6079) +HANDLE_BAT(, 6080) +HANDLE_BAT(, 6081) +HANDLE_BAT(, 6082) +HANDLE_BAT(, 6083) +HANDLE_BAT(, 6084) +HANDLE_BAT(, 6085) +HANDLE_BAT(, 6086) +HANDLE_BAT(, 6087) +HANDLE_BAT(, 6088) +HANDLE_BAT(, 6089) +HANDLE_BAT(, 6090) +HANDLE_BAT(, 6091) +HANDLE_BAT(, 6092) +HANDLE_BAT(, 6093) +HANDLE_BAT(, 6094) +HANDLE_BAT(, 6095) +HANDLE_BAT(, 6096) +HANDLE_BAT(, 6097) +HANDLE_BAT(, 6098) +HANDLE_BAT(, 6099) +HANDLE_BAT(, 6100) +HANDLE_BAT(, 6101) +HANDLE_BAT(, 6102) +HANDLE_BAT(, 6103) +HANDLE_BAT(, 6104) +HANDLE_BAT(, 6105) +HANDLE_BAT(, 6106) +HANDLE_BAT(, 6107) +HANDLE_BAT(, 6108) +HANDLE_BAT(, 6109) +HANDLE_BAT(, 6110) +HANDLE_BAT(, 6111) +HANDLE_BAT(, 6112) +HANDLE_BAT(, 6113) +HANDLE_BAT(, 6114) +HANDLE_BAT(, 6115) +HANDLE_BAT(, 6116) +HANDLE_BAT(, 6117) +HANDLE_BAT(, 6118) +HANDLE_BAT(, 6119) +HANDLE_BAT(, 6120) +HANDLE_BAT(, 6121) +HANDLE_BAT(, 6122) +HANDLE_BAT(, 6123) +HANDLE_BAT(, 6124) +HANDLE_BAT(, 6125) +HANDLE_BAT(, 6126) +HANDLE_BAT(, 6127) +HANDLE_BAT(, 6128) +HANDLE_BAT(, 6129) +HANDLE_BAT(, 6130) +HANDLE_BAT(, 6131) +HANDLE_BAT(, 6132) +HANDLE_BAT(, 6133) +HANDLE_BAT(, 6134) +HANDLE_BAT(, 6135) +HANDLE_BAT(, 6136) +HANDLE_BAT(, 6137) +HANDLE_BAT(, 6138) +HANDLE_BAT(, 6139) +HANDLE_BAT(, 6140) +HANDLE_BAT(, 6141) +HANDLE_BAT(, 6142) +HANDLE_BAT(, 6143) +HANDLE_BAT(, 6144) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 5121) +HANDLE_BAT(APINT_TYPE_PREFIX, 5122) +HANDLE_BAT(APINT_TYPE_PREFIX, 5123) +HANDLE_BAT(APINT_TYPE_PREFIX, 5124) +HANDLE_BAT(APINT_TYPE_PREFIX, 5125) +HANDLE_BAT(APINT_TYPE_PREFIX, 5126) +HANDLE_BAT(APINT_TYPE_PREFIX, 5127) +HANDLE_BAT(APINT_TYPE_PREFIX, 5128) +HANDLE_BAT(APINT_TYPE_PREFIX, 5129) +HANDLE_BAT(APINT_TYPE_PREFIX, 5130) +HANDLE_BAT(APINT_TYPE_PREFIX, 5131) +HANDLE_BAT(APINT_TYPE_PREFIX, 5132) +HANDLE_BAT(APINT_TYPE_PREFIX, 5133) +HANDLE_BAT(APINT_TYPE_PREFIX, 5134) +HANDLE_BAT(APINT_TYPE_PREFIX, 5135) +HANDLE_BAT(APINT_TYPE_PREFIX, 5136) +HANDLE_BAT(APINT_TYPE_PREFIX, 5137) +HANDLE_BAT(APINT_TYPE_PREFIX, 5138) +HANDLE_BAT(APINT_TYPE_PREFIX, 5139) +HANDLE_BAT(APINT_TYPE_PREFIX, 5140) +HANDLE_BAT(APINT_TYPE_PREFIX, 5141) +HANDLE_BAT(APINT_TYPE_PREFIX, 5142) +HANDLE_BAT(APINT_TYPE_PREFIX, 5143) +HANDLE_BAT(APINT_TYPE_PREFIX, 5144) +HANDLE_BAT(APINT_TYPE_PREFIX, 5145) +HANDLE_BAT(APINT_TYPE_PREFIX, 5146) +HANDLE_BAT(APINT_TYPE_PREFIX, 5147) +HANDLE_BAT(APINT_TYPE_PREFIX, 5148) +HANDLE_BAT(APINT_TYPE_PREFIX, 5149) +HANDLE_BAT(APINT_TYPE_PREFIX, 5150) +HANDLE_BAT(APINT_TYPE_PREFIX, 5151) +HANDLE_BAT(APINT_TYPE_PREFIX, 5152) +HANDLE_BAT(APINT_TYPE_PREFIX, 5153) +HANDLE_BAT(APINT_TYPE_PREFIX, 5154) +HANDLE_BAT(APINT_TYPE_PREFIX, 5155) +HANDLE_BAT(APINT_TYPE_PREFIX, 5156) +HANDLE_BAT(APINT_TYPE_PREFIX, 5157) +HANDLE_BAT(APINT_TYPE_PREFIX, 5158) +HANDLE_BAT(APINT_TYPE_PREFIX, 5159) +HANDLE_BAT(APINT_TYPE_PREFIX, 5160) +HANDLE_BAT(APINT_TYPE_PREFIX, 5161) +HANDLE_BAT(APINT_TYPE_PREFIX, 5162) +HANDLE_BAT(APINT_TYPE_PREFIX, 5163) +HANDLE_BAT(APINT_TYPE_PREFIX, 5164) +HANDLE_BAT(APINT_TYPE_PREFIX, 5165) +HANDLE_BAT(APINT_TYPE_PREFIX, 5166) +HANDLE_BAT(APINT_TYPE_PREFIX, 5167) +HANDLE_BAT(APINT_TYPE_PREFIX, 5168) +HANDLE_BAT(APINT_TYPE_PREFIX, 5169) +HANDLE_BAT(APINT_TYPE_PREFIX, 5170) +HANDLE_BAT(APINT_TYPE_PREFIX, 5171) +HANDLE_BAT(APINT_TYPE_PREFIX, 5172) +HANDLE_BAT(APINT_TYPE_PREFIX, 5173) +HANDLE_BAT(APINT_TYPE_PREFIX, 5174) +HANDLE_BAT(APINT_TYPE_PREFIX, 5175) +HANDLE_BAT(APINT_TYPE_PREFIX, 5176) +HANDLE_BAT(APINT_TYPE_PREFIX, 5177) +HANDLE_BAT(APINT_TYPE_PREFIX, 5178) +HANDLE_BAT(APINT_TYPE_PREFIX, 5179) +HANDLE_BAT(APINT_TYPE_PREFIX, 5180) +HANDLE_BAT(APINT_TYPE_PREFIX, 5181) +HANDLE_BAT(APINT_TYPE_PREFIX, 5182) +HANDLE_BAT(APINT_TYPE_PREFIX, 5183) +HANDLE_BAT(APINT_TYPE_PREFIX, 5184) +HANDLE_BAT(APINT_TYPE_PREFIX, 5185) +HANDLE_BAT(APINT_TYPE_PREFIX, 5186) +HANDLE_BAT(APINT_TYPE_PREFIX, 5187) +HANDLE_BAT(APINT_TYPE_PREFIX, 5188) +HANDLE_BAT(APINT_TYPE_PREFIX, 5189) +HANDLE_BAT(APINT_TYPE_PREFIX, 5190) +HANDLE_BAT(APINT_TYPE_PREFIX, 5191) +HANDLE_BAT(APINT_TYPE_PREFIX, 5192) +HANDLE_BAT(APINT_TYPE_PREFIX, 5193) +HANDLE_BAT(APINT_TYPE_PREFIX, 5194) +HANDLE_BAT(APINT_TYPE_PREFIX, 5195) +HANDLE_BAT(APINT_TYPE_PREFIX, 5196) +HANDLE_BAT(APINT_TYPE_PREFIX, 5197) +HANDLE_BAT(APINT_TYPE_PREFIX, 5198) +HANDLE_BAT(APINT_TYPE_PREFIX, 5199) +HANDLE_BAT(APINT_TYPE_PREFIX, 5200) +HANDLE_BAT(APINT_TYPE_PREFIX, 5201) +HANDLE_BAT(APINT_TYPE_PREFIX, 5202) +HANDLE_BAT(APINT_TYPE_PREFIX, 5203) +HANDLE_BAT(APINT_TYPE_PREFIX, 5204) +HANDLE_BAT(APINT_TYPE_PREFIX, 5205) +HANDLE_BAT(APINT_TYPE_PREFIX, 5206) +HANDLE_BAT(APINT_TYPE_PREFIX, 5207) +HANDLE_BAT(APINT_TYPE_PREFIX, 5208) +HANDLE_BAT(APINT_TYPE_PREFIX, 5209) +HANDLE_BAT(APINT_TYPE_PREFIX, 5210) +HANDLE_BAT(APINT_TYPE_PREFIX, 5211) +HANDLE_BAT(APINT_TYPE_PREFIX, 5212) +HANDLE_BAT(APINT_TYPE_PREFIX, 5213) +HANDLE_BAT(APINT_TYPE_PREFIX, 5214) +HANDLE_BAT(APINT_TYPE_PREFIX, 5215) +HANDLE_BAT(APINT_TYPE_PREFIX, 5216) +HANDLE_BAT(APINT_TYPE_PREFIX, 5217) +HANDLE_BAT(APINT_TYPE_PREFIX, 5218) +HANDLE_BAT(APINT_TYPE_PREFIX, 5219) +HANDLE_BAT(APINT_TYPE_PREFIX, 5220) +HANDLE_BAT(APINT_TYPE_PREFIX, 5221) +HANDLE_BAT(APINT_TYPE_PREFIX, 5222) +HANDLE_BAT(APINT_TYPE_PREFIX, 5223) +HANDLE_BAT(APINT_TYPE_PREFIX, 5224) +HANDLE_BAT(APINT_TYPE_PREFIX, 5225) +HANDLE_BAT(APINT_TYPE_PREFIX, 5226) +HANDLE_BAT(APINT_TYPE_PREFIX, 5227) +HANDLE_BAT(APINT_TYPE_PREFIX, 5228) +HANDLE_BAT(APINT_TYPE_PREFIX, 5229) +HANDLE_BAT(APINT_TYPE_PREFIX, 5230) +HANDLE_BAT(APINT_TYPE_PREFIX, 5231) +HANDLE_BAT(APINT_TYPE_PREFIX, 5232) +HANDLE_BAT(APINT_TYPE_PREFIX, 5233) +HANDLE_BAT(APINT_TYPE_PREFIX, 5234) +HANDLE_BAT(APINT_TYPE_PREFIX, 5235) +HANDLE_BAT(APINT_TYPE_PREFIX, 5236) +HANDLE_BAT(APINT_TYPE_PREFIX, 5237) +HANDLE_BAT(APINT_TYPE_PREFIX, 5238) +HANDLE_BAT(APINT_TYPE_PREFIX, 5239) +HANDLE_BAT(APINT_TYPE_PREFIX, 5240) +HANDLE_BAT(APINT_TYPE_PREFIX, 5241) +HANDLE_BAT(APINT_TYPE_PREFIX, 5242) +HANDLE_BAT(APINT_TYPE_PREFIX, 5243) +HANDLE_BAT(APINT_TYPE_PREFIX, 5244) +HANDLE_BAT(APINT_TYPE_PREFIX, 5245) +HANDLE_BAT(APINT_TYPE_PREFIX, 5246) +HANDLE_BAT(APINT_TYPE_PREFIX, 5247) +HANDLE_BAT(APINT_TYPE_PREFIX, 5248) +HANDLE_BAT(APINT_TYPE_PREFIX, 5249) +HANDLE_BAT(APINT_TYPE_PREFIX, 5250) +HANDLE_BAT(APINT_TYPE_PREFIX, 5251) +HANDLE_BAT(APINT_TYPE_PREFIX, 5252) +HANDLE_BAT(APINT_TYPE_PREFIX, 5253) +HANDLE_BAT(APINT_TYPE_PREFIX, 5254) +HANDLE_BAT(APINT_TYPE_PREFIX, 5255) +HANDLE_BAT(APINT_TYPE_PREFIX, 5256) +HANDLE_BAT(APINT_TYPE_PREFIX, 5257) +HANDLE_BAT(APINT_TYPE_PREFIX, 5258) +HANDLE_BAT(APINT_TYPE_PREFIX, 5259) +HANDLE_BAT(APINT_TYPE_PREFIX, 5260) +HANDLE_BAT(APINT_TYPE_PREFIX, 5261) +HANDLE_BAT(APINT_TYPE_PREFIX, 5262) +HANDLE_BAT(APINT_TYPE_PREFIX, 5263) +HANDLE_BAT(APINT_TYPE_PREFIX, 5264) +HANDLE_BAT(APINT_TYPE_PREFIX, 5265) +HANDLE_BAT(APINT_TYPE_PREFIX, 5266) +HANDLE_BAT(APINT_TYPE_PREFIX, 5267) +HANDLE_BAT(APINT_TYPE_PREFIX, 5268) +HANDLE_BAT(APINT_TYPE_PREFIX, 5269) +HANDLE_BAT(APINT_TYPE_PREFIX, 5270) +HANDLE_BAT(APINT_TYPE_PREFIX, 5271) +HANDLE_BAT(APINT_TYPE_PREFIX, 5272) +HANDLE_BAT(APINT_TYPE_PREFIX, 5273) +HANDLE_BAT(APINT_TYPE_PREFIX, 5274) +HANDLE_BAT(APINT_TYPE_PREFIX, 5275) +HANDLE_BAT(APINT_TYPE_PREFIX, 5276) +HANDLE_BAT(APINT_TYPE_PREFIX, 5277) +HANDLE_BAT(APINT_TYPE_PREFIX, 5278) +HANDLE_BAT(APINT_TYPE_PREFIX, 5279) +HANDLE_BAT(APINT_TYPE_PREFIX, 5280) +HANDLE_BAT(APINT_TYPE_PREFIX, 5281) +HANDLE_BAT(APINT_TYPE_PREFIX, 5282) +HANDLE_BAT(APINT_TYPE_PREFIX, 5283) +HANDLE_BAT(APINT_TYPE_PREFIX, 5284) +HANDLE_BAT(APINT_TYPE_PREFIX, 5285) +HANDLE_BAT(APINT_TYPE_PREFIX, 5286) +HANDLE_BAT(APINT_TYPE_PREFIX, 5287) +HANDLE_BAT(APINT_TYPE_PREFIX, 5288) +HANDLE_BAT(APINT_TYPE_PREFIX, 5289) +HANDLE_BAT(APINT_TYPE_PREFIX, 5290) +HANDLE_BAT(APINT_TYPE_PREFIX, 5291) +HANDLE_BAT(APINT_TYPE_PREFIX, 5292) +HANDLE_BAT(APINT_TYPE_PREFIX, 5293) +HANDLE_BAT(APINT_TYPE_PREFIX, 5294) +HANDLE_BAT(APINT_TYPE_PREFIX, 5295) +HANDLE_BAT(APINT_TYPE_PREFIX, 5296) +HANDLE_BAT(APINT_TYPE_PREFIX, 5297) +HANDLE_BAT(APINT_TYPE_PREFIX, 5298) +HANDLE_BAT(APINT_TYPE_PREFIX, 5299) +HANDLE_BAT(APINT_TYPE_PREFIX, 5300) +HANDLE_BAT(APINT_TYPE_PREFIX, 5301) +HANDLE_BAT(APINT_TYPE_PREFIX, 5302) +HANDLE_BAT(APINT_TYPE_PREFIX, 5303) +HANDLE_BAT(APINT_TYPE_PREFIX, 5304) +HANDLE_BAT(APINT_TYPE_PREFIX, 5305) +HANDLE_BAT(APINT_TYPE_PREFIX, 5306) +HANDLE_BAT(APINT_TYPE_PREFIX, 5307) +HANDLE_BAT(APINT_TYPE_PREFIX, 5308) +HANDLE_BAT(APINT_TYPE_PREFIX, 5309) +HANDLE_BAT(APINT_TYPE_PREFIX, 5310) +HANDLE_BAT(APINT_TYPE_PREFIX, 5311) +HANDLE_BAT(APINT_TYPE_PREFIX, 5312) +HANDLE_BAT(APINT_TYPE_PREFIX, 5313) +HANDLE_BAT(APINT_TYPE_PREFIX, 5314) +HANDLE_BAT(APINT_TYPE_PREFIX, 5315) +HANDLE_BAT(APINT_TYPE_PREFIX, 5316) +HANDLE_BAT(APINT_TYPE_PREFIX, 5317) +HANDLE_BAT(APINT_TYPE_PREFIX, 5318) +HANDLE_BAT(APINT_TYPE_PREFIX, 5319) +HANDLE_BAT(APINT_TYPE_PREFIX, 5320) +HANDLE_BAT(APINT_TYPE_PREFIX, 5321) +HANDLE_BAT(APINT_TYPE_PREFIX, 5322) +HANDLE_BAT(APINT_TYPE_PREFIX, 5323) +HANDLE_BAT(APINT_TYPE_PREFIX, 5324) +HANDLE_BAT(APINT_TYPE_PREFIX, 5325) +HANDLE_BAT(APINT_TYPE_PREFIX, 5326) +HANDLE_BAT(APINT_TYPE_PREFIX, 5327) +HANDLE_BAT(APINT_TYPE_PREFIX, 5328) +HANDLE_BAT(APINT_TYPE_PREFIX, 5329) +HANDLE_BAT(APINT_TYPE_PREFIX, 5330) +HANDLE_BAT(APINT_TYPE_PREFIX, 5331) +HANDLE_BAT(APINT_TYPE_PREFIX, 5332) +HANDLE_BAT(APINT_TYPE_PREFIX, 5333) +HANDLE_BAT(APINT_TYPE_PREFIX, 5334) +HANDLE_BAT(APINT_TYPE_PREFIX, 5335) +HANDLE_BAT(APINT_TYPE_PREFIX, 5336) +HANDLE_BAT(APINT_TYPE_PREFIX, 5337) +HANDLE_BAT(APINT_TYPE_PREFIX, 5338) +HANDLE_BAT(APINT_TYPE_PREFIX, 5339) +HANDLE_BAT(APINT_TYPE_PREFIX, 5340) +HANDLE_BAT(APINT_TYPE_PREFIX, 5341) +HANDLE_BAT(APINT_TYPE_PREFIX, 5342) +HANDLE_BAT(APINT_TYPE_PREFIX, 5343) +HANDLE_BAT(APINT_TYPE_PREFIX, 5344) +HANDLE_BAT(APINT_TYPE_PREFIX, 5345) +HANDLE_BAT(APINT_TYPE_PREFIX, 5346) +HANDLE_BAT(APINT_TYPE_PREFIX, 5347) +HANDLE_BAT(APINT_TYPE_PREFIX, 5348) +HANDLE_BAT(APINT_TYPE_PREFIX, 5349) +HANDLE_BAT(APINT_TYPE_PREFIX, 5350) +HANDLE_BAT(APINT_TYPE_PREFIX, 5351) +HANDLE_BAT(APINT_TYPE_PREFIX, 5352) +HANDLE_BAT(APINT_TYPE_PREFIX, 5353) +HANDLE_BAT(APINT_TYPE_PREFIX, 5354) +HANDLE_BAT(APINT_TYPE_PREFIX, 5355) +HANDLE_BAT(APINT_TYPE_PREFIX, 5356) +HANDLE_BAT(APINT_TYPE_PREFIX, 5357) +HANDLE_BAT(APINT_TYPE_PREFIX, 5358) +HANDLE_BAT(APINT_TYPE_PREFIX, 5359) +HANDLE_BAT(APINT_TYPE_PREFIX, 5360) +HANDLE_BAT(APINT_TYPE_PREFIX, 5361) +HANDLE_BAT(APINT_TYPE_PREFIX, 5362) +HANDLE_BAT(APINT_TYPE_PREFIX, 5363) +HANDLE_BAT(APINT_TYPE_PREFIX, 5364) +HANDLE_BAT(APINT_TYPE_PREFIX, 5365) +HANDLE_BAT(APINT_TYPE_PREFIX, 5366) +HANDLE_BAT(APINT_TYPE_PREFIX, 5367) +HANDLE_BAT(APINT_TYPE_PREFIX, 5368) +HANDLE_BAT(APINT_TYPE_PREFIX, 5369) +HANDLE_BAT(APINT_TYPE_PREFIX, 5370) +HANDLE_BAT(APINT_TYPE_PREFIX, 5371) +HANDLE_BAT(APINT_TYPE_PREFIX, 5372) +HANDLE_BAT(APINT_TYPE_PREFIX, 5373) +HANDLE_BAT(APINT_TYPE_PREFIX, 5374) +HANDLE_BAT(APINT_TYPE_PREFIX, 5375) +HANDLE_BAT(APINT_TYPE_PREFIX, 5376) +HANDLE_BAT(APINT_TYPE_PREFIX, 5377) +HANDLE_BAT(APINT_TYPE_PREFIX, 5378) +HANDLE_BAT(APINT_TYPE_PREFIX, 5379) +HANDLE_BAT(APINT_TYPE_PREFIX, 5380) +HANDLE_BAT(APINT_TYPE_PREFIX, 5381) +HANDLE_BAT(APINT_TYPE_PREFIX, 5382) +HANDLE_BAT(APINT_TYPE_PREFIX, 5383) +HANDLE_BAT(APINT_TYPE_PREFIX, 5384) +HANDLE_BAT(APINT_TYPE_PREFIX, 5385) +HANDLE_BAT(APINT_TYPE_PREFIX, 5386) +HANDLE_BAT(APINT_TYPE_PREFIX, 5387) +HANDLE_BAT(APINT_TYPE_PREFIX, 5388) +HANDLE_BAT(APINT_TYPE_PREFIX, 5389) +HANDLE_BAT(APINT_TYPE_PREFIX, 5390) +HANDLE_BAT(APINT_TYPE_PREFIX, 5391) +HANDLE_BAT(APINT_TYPE_PREFIX, 5392) +HANDLE_BAT(APINT_TYPE_PREFIX, 5393) +HANDLE_BAT(APINT_TYPE_PREFIX, 5394) +HANDLE_BAT(APINT_TYPE_PREFIX, 5395) +HANDLE_BAT(APINT_TYPE_PREFIX, 5396) +HANDLE_BAT(APINT_TYPE_PREFIX, 5397) +HANDLE_BAT(APINT_TYPE_PREFIX, 5398) +HANDLE_BAT(APINT_TYPE_PREFIX, 5399) +HANDLE_BAT(APINT_TYPE_PREFIX, 5400) +HANDLE_BAT(APINT_TYPE_PREFIX, 5401) +HANDLE_BAT(APINT_TYPE_PREFIX, 5402) +HANDLE_BAT(APINT_TYPE_PREFIX, 5403) +HANDLE_BAT(APINT_TYPE_PREFIX, 5404) +HANDLE_BAT(APINT_TYPE_PREFIX, 5405) +HANDLE_BAT(APINT_TYPE_PREFIX, 5406) +HANDLE_BAT(APINT_TYPE_PREFIX, 5407) +HANDLE_BAT(APINT_TYPE_PREFIX, 5408) +HANDLE_BAT(APINT_TYPE_PREFIX, 5409) +HANDLE_BAT(APINT_TYPE_PREFIX, 5410) +HANDLE_BAT(APINT_TYPE_PREFIX, 5411) +HANDLE_BAT(APINT_TYPE_PREFIX, 5412) +HANDLE_BAT(APINT_TYPE_PREFIX, 5413) +HANDLE_BAT(APINT_TYPE_PREFIX, 5414) +HANDLE_BAT(APINT_TYPE_PREFIX, 5415) +HANDLE_BAT(APINT_TYPE_PREFIX, 5416) +HANDLE_BAT(APINT_TYPE_PREFIX, 5417) +HANDLE_BAT(APINT_TYPE_PREFIX, 5418) +HANDLE_BAT(APINT_TYPE_PREFIX, 5419) +HANDLE_BAT(APINT_TYPE_PREFIX, 5420) +HANDLE_BAT(APINT_TYPE_PREFIX, 5421) +HANDLE_BAT(APINT_TYPE_PREFIX, 5422) +HANDLE_BAT(APINT_TYPE_PREFIX, 5423) +HANDLE_BAT(APINT_TYPE_PREFIX, 5424) +HANDLE_BAT(APINT_TYPE_PREFIX, 5425) +HANDLE_BAT(APINT_TYPE_PREFIX, 5426) +HANDLE_BAT(APINT_TYPE_PREFIX, 5427) +HANDLE_BAT(APINT_TYPE_PREFIX, 5428) +HANDLE_BAT(APINT_TYPE_PREFIX, 5429) +HANDLE_BAT(APINT_TYPE_PREFIX, 5430) +HANDLE_BAT(APINT_TYPE_PREFIX, 5431) +HANDLE_BAT(APINT_TYPE_PREFIX, 5432) +HANDLE_BAT(APINT_TYPE_PREFIX, 5433) +HANDLE_BAT(APINT_TYPE_PREFIX, 5434) +HANDLE_BAT(APINT_TYPE_PREFIX, 5435) +HANDLE_BAT(APINT_TYPE_PREFIX, 5436) +HANDLE_BAT(APINT_TYPE_PREFIX, 5437) +HANDLE_BAT(APINT_TYPE_PREFIX, 5438) +HANDLE_BAT(APINT_TYPE_PREFIX, 5439) +HANDLE_BAT(APINT_TYPE_PREFIX, 5440) +HANDLE_BAT(APINT_TYPE_PREFIX, 5441) +HANDLE_BAT(APINT_TYPE_PREFIX, 5442) +HANDLE_BAT(APINT_TYPE_PREFIX, 5443) +HANDLE_BAT(APINT_TYPE_PREFIX, 5444) +HANDLE_BAT(APINT_TYPE_PREFIX, 5445) +HANDLE_BAT(APINT_TYPE_PREFIX, 5446) +HANDLE_BAT(APINT_TYPE_PREFIX, 5447) +HANDLE_BAT(APINT_TYPE_PREFIX, 5448) +HANDLE_BAT(APINT_TYPE_PREFIX, 5449) +HANDLE_BAT(APINT_TYPE_PREFIX, 5450) +HANDLE_BAT(APINT_TYPE_PREFIX, 5451) +HANDLE_BAT(APINT_TYPE_PREFIX, 5452) +HANDLE_BAT(APINT_TYPE_PREFIX, 5453) +HANDLE_BAT(APINT_TYPE_PREFIX, 5454) +HANDLE_BAT(APINT_TYPE_PREFIX, 5455) +HANDLE_BAT(APINT_TYPE_PREFIX, 5456) +HANDLE_BAT(APINT_TYPE_PREFIX, 5457) +HANDLE_BAT(APINT_TYPE_PREFIX, 5458) +HANDLE_BAT(APINT_TYPE_PREFIX, 5459) +HANDLE_BAT(APINT_TYPE_PREFIX, 5460) +HANDLE_BAT(APINT_TYPE_PREFIX, 5461) +HANDLE_BAT(APINT_TYPE_PREFIX, 5462) +HANDLE_BAT(APINT_TYPE_PREFIX, 5463) +HANDLE_BAT(APINT_TYPE_PREFIX, 5464) +HANDLE_BAT(APINT_TYPE_PREFIX, 5465) +HANDLE_BAT(APINT_TYPE_PREFIX, 5466) +HANDLE_BAT(APINT_TYPE_PREFIX, 5467) +HANDLE_BAT(APINT_TYPE_PREFIX, 5468) +HANDLE_BAT(APINT_TYPE_PREFIX, 5469) +HANDLE_BAT(APINT_TYPE_PREFIX, 5470) +HANDLE_BAT(APINT_TYPE_PREFIX, 5471) +HANDLE_BAT(APINT_TYPE_PREFIX, 5472) +HANDLE_BAT(APINT_TYPE_PREFIX, 5473) +HANDLE_BAT(APINT_TYPE_PREFIX, 5474) +HANDLE_BAT(APINT_TYPE_PREFIX, 5475) +HANDLE_BAT(APINT_TYPE_PREFIX, 5476) +HANDLE_BAT(APINT_TYPE_PREFIX, 5477) +HANDLE_BAT(APINT_TYPE_PREFIX, 5478) +HANDLE_BAT(APINT_TYPE_PREFIX, 5479) +HANDLE_BAT(APINT_TYPE_PREFIX, 5480) +HANDLE_BAT(APINT_TYPE_PREFIX, 5481) +HANDLE_BAT(APINT_TYPE_PREFIX, 5482) +HANDLE_BAT(APINT_TYPE_PREFIX, 5483) +HANDLE_BAT(APINT_TYPE_PREFIX, 5484) +HANDLE_BAT(APINT_TYPE_PREFIX, 5485) +HANDLE_BAT(APINT_TYPE_PREFIX, 5486) +HANDLE_BAT(APINT_TYPE_PREFIX, 5487) +HANDLE_BAT(APINT_TYPE_PREFIX, 5488) +HANDLE_BAT(APINT_TYPE_PREFIX, 5489) +HANDLE_BAT(APINT_TYPE_PREFIX, 5490) +HANDLE_BAT(APINT_TYPE_PREFIX, 5491) +HANDLE_BAT(APINT_TYPE_PREFIX, 5492) +HANDLE_BAT(APINT_TYPE_PREFIX, 5493) +HANDLE_BAT(APINT_TYPE_PREFIX, 5494) +HANDLE_BAT(APINT_TYPE_PREFIX, 5495) +HANDLE_BAT(APINT_TYPE_PREFIX, 5496) +HANDLE_BAT(APINT_TYPE_PREFIX, 5497) +HANDLE_BAT(APINT_TYPE_PREFIX, 5498) +HANDLE_BAT(APINT_TYPE_PREFIX, 5499) +HANDLE_BAT(APINT_TYPE_PREFIX, 5500) +HANDLE_BAT(APINT_TYPE_PREFIX, 5501) +HANDLE_BAT(APINT_TYPE_PREFIX, 5502) +HANDLE_BAT(APINT_TYPE_PREFIX, 5503) +HANDLE_BAT(APINT_TYPE_PREFIX, 5504) +HANDLE_BAT(APINT_TYPE_PREFIX, 5505) +HANDLE_BAT(APINT_TYPE_PREFIX, 5506) +HANDLE_BAT(APINT_TYPE_PREFIX, 5507) +HANDLE_BAT(APINT_TYPE_PREFIX, 5508) +HANDLE_BAT(APINT_TYPE_PREFIX, 5509) +HANDLE_BAT(APINT_TYPE_PREFIX, 5510) +HANDLE_BAT(APINT_TYPE_PREFIX, 5511) +HANDLE_BAT(APINT_TYPE_PREFIX, 5512) +HANDLE_BAT(APINT_TYPE_PREFIX, 5513) +HANDLE_BAT(APINT_TYPE_PREFIX, 5514) +HANDLE_BAT(APINT_TYPE_PREFIX, 5515) +HANDLE_BAT(APINT_TYPE_PREFIX, 5516) +HANDLE_BAT(APINT_TYPE_PREFIX, 5517) +HANDLE_BAT(APINT_TYPE_PREFIX, 5518) +HANDLE_BAT(APINT_TYPE_PREFIX, 5519) +HANDLE_BAT(APINT_TYPE_PREFIX, 5520) +HANDLE_BAT(APINT_TYPE_PREFIX, 5521) +HANDLE_BAT(APINT_TYPE_PREFIX, 5522) +HANDLE_BAT(APINT_TYPE_PREFIX, 5523) +HANDLE_BAT(APINT_TYPE_PREFIX, 5524) +HANDLE_BAT(APINT_TYPE_PREFIX, 5525) +HANDLE_BAT(APINT_TYPE_PREFIX, 5526) +HANDLE_BAT(APINT_TYPE_PREFIX, 5527) +HANDLE_BAT(APINT_TYPE_PREFIX, 5528) +HANDLE_BAT(APINT_TYPE_PREFIX, 5529) +HANDLE_BAT(APINT_TYPE_PREFIX, 5530) +HANDLE_BAT(APINT_TYPE_PREFIX, 5531) +HANDLE_BAT(APINT_TYPE_PREFIX, 5532) +HANDLE_BAT(APINT_TYPE_PREFIX, 5533) +HANDLE_BAT(APINT_TYPE_PREFIX, 5534) +HANDLE_BAT(APINT_TYPE_PREFIX, 5535) +HANDLE_BAT(APINT_TYPE_PREFIX, 5536) +HANDLE_BAT(APINT_TYPE_PREFIX, 5537) +HANDLE_BAT(APINT_TYPE_PREFIX, 5538) +HANDLE_BAT(APINT_TYPE_PREFIX, 5539) +HANDLE_BAT(APINT_TYPE_PREFIX, 5540) +HANDLE_BAT(APINT_TYPE_PREFIX, 5541) +HANDLE_BAT(APINT_TYPE_PREFIX, 5542) +HANDLE_BAT(APINT_TYPE_PREFIX, 5543) +HANDLE_BAT(APINT_TYPE_PREFIX, 5544) +HANDLE_BAT(APINT_TYPE_PREFIX, 5545) +HANDLE_BAT(APINT_TYPE_PREFIX, 5546) +HANDLE_BAT(APINT_TYPE_PREFIX, 5547) +HANDLE_BAT(APINT_TYPE_PREFIX, 5548) +HANDLE_BAT(APINT_TYPE_PREFIX, 5549) +HANDLE_BAT(APINT_TYPE_PREFIX, 5550) +HANDLE_BAT(APINT_TYPE_PREFIX, 5551) +HANDLE_BAT(APINT_TYPE_PREFIX, 5552) +HANDLE_BAT(APINT_TYPE_PREFIX, 5553) +HANDLE_BAT(APINT_TYPE_PREFIX, 5554) +HANDLE_BAT(APINT_TYPE_PREFIX, 5555) +HANDLE_BAT(APINT_TYPE_PREFIX, 5556) +HANDLE_BAT(APINT_TYPE_PREFIX, 5557) +HANDLE_BAT(APINT_TYPE_PREFIX, 5558) +HANDLE_BAT(APINT_TYPE_PREFIX, 5559) +HANDLE_BAT(APINT_TYPE_PREFIX, 5560) +HANDLE_BAT(APINT_TYPE_PREFIX, 5561) +HANDLE_BAT(APINT_TYPE_PREFIX, 5562) +HANDLE_BAT(APINT_TYPE_PREFIX, 5563) +HANDLE_BAT(APINT_TYPE_PREFIX, 5564) +HANDLE_BAT(APINT_TYPE_PREFIX, 5565) +HANDLE_BAT(APINT_TYPE_PREFIX, 5566) +HANDLE_BAT(APINT_TYPE_PREFIX, 5567) +HANDLE_BAT(APINT_TYPE_PREFIX, 5568) +HANDLE_BAT(APINT_TYPE_PREFIX, 5569) +HANDLE_BAT(APINT_TYPE_PREFIX, 5570) +HANDLE_BAT(APINT_TYPE_PREFIX, 5571) +HANDLE_BAT(APINT_TYPE_PREFIX, 5572) +HANDLE_BAT(APINT_TYPE_PREFIX, 5573) +HANDLE_BAT(APINT_TYPE_PREFIX, 5574) +HANDLE_BAT(APINT_TYPE_PREFIX, 5575) +HANDLE_BAT(APINT_TYPE_PREFIX, 5576) +HANDLE_BAT(APINT_TYPE_PREFIX, 5577) +HANDLE_BAT(APINT_TYPE_PREFIX, 5578) +HANDLE_BAT(APINT_TYPE_PREFIX, 5579) +HANDLE_BAT(APINT_TYPE_PREFIX, 5580) +HANDLE_BAT(APINT_TYPE_PREFIX, 5581) +HANDLE_BAT(APINT_TYPE_PREFIX, 5582) +HANDLE_BAT(APINT_TYPE_PREFIX, 5583) +HANDLE_BAT(APINT_TYPE_PREFIX, 5584) +HANDLE_BAT(APINT_TYPE_PREFIX, 5585) +HANDLE_BAT(APINT_TYPE_PREFIX, 5586) +HANDLE_BAT(APINT_TYPE_PREFIX, 5587) +HANDLE_BAT(APINT_TYPE_PREFIX, 5588) +HANDLE_BAT(APINT_TYPE_PREFIX, 5589) +HANDLE_BAT(APINT_TYPE_PREFIX, 5590) +HANDLE_BAT(APINT_TYPE_PREFIX, 5591) +HANDLE_BAT(APINT_TYPE_PREFIX, 5592) +HANDLE_BAT(APINT_TYPE_PREFIX, 5593) +HANDLE_BAT(APINT_TYPE_PREFIX, 5594) +HANDLE_BAT(APINT_TYPE_PREFIX, 5595) +HANDLE_BAT(APINT_TYPE_PREFIX, 5596) +HANDLE_BAT(APINT_TYPE_PREFIX, 5597) +HANDLE_BAT(APINT_TYPE_PREFIX, 5598) +HANDLE_BAT(APINT_TYPE_PREFIX, 5599) +HANDLE_BAT(APINT_TYPE_PREFIX, 5600) +HANDLE_BAT(APINT_TYPE_PREFIX, 5601) +HANDLE_BAT(APINT_TYPE_PREFIX, 5602) +HANDLE_BAT(APINT_TYPE_PREFIX, 5603) +HANDLE_BAT(APINT_TYPE_PREFIX, 5604) +HANDLE_BAT(APINT_TYPE_PREFIX, 5605) +HANDLE_BAT(APINT_TYPE_PREFIX, 5606) +HANDLE_BAT(APINT_TYPE_PREFIX, 5607) +HANDLE_BAT(APINT_TYPE_PREFIX, 5608) +HANDLE_BAT(APINT_TYPE_PREFIX, 5609) +HANDLE_BAT(APINT_TYPE_PREFIX, 5610) +HANDLE_BAT(APINT_TYPE_PREFIX, 5611) +HANDLE_BAT(APINT_TYPE_PREFIX, 5612) +HANDLE_BAT(APINT_TYPE_PREFIX, 5613) +HANDLE_BAT(APINT_TYPE_PREFIX, 5614) +HANDLE_BAT(APINT_TYPE_PREFIX, 5615) +HANDLE_BAT(APINT_TYPE_PREFIX, 5616) +HANDLE_BAT(APINT_TYPE_PREFIX, 5617) +HANDLE_BAT(APINT_TYPE_PREFIX, 5618) +HANDLE_BAT(APINT_TYPE_PREFIX, 5619) +HANDLE_BAT(APINT_TYPE_PREFIX, 5620) +HANDLE_BAT(APINT_TYPE_PREFIX, 5621) +HANDLE_BAT(APINT_TYPE_PREFIX, 5622) +HANDLE_BAT(APINT_TYPE_PREFIX, 5623) +HANDLE_BAT(APINT_TYPE_PREFIX, 5624) +HANDLE_BAT(APINT_TYPE_PREFIX, 5625) +HANDLE_BAT(APINT_TYPE_PREFIX, 5626) +HANDLE_BAT(APINT_TYPE_PREFIX, 5627) +HANDLE_BAT(APINT_TYPE_PREFIX, 5628) +HANDLE_BAT(APINT_TYPE_PREFIX, 5629) +HANDLE_BAT(APINT_TYPE_PREFIX, 5630) +HANDLE_BAT(APINT_TYPE_PREFIX, 5631) +HANDLE_BAT(APINT_TYPE_PREFIX, 5632) +HANDLE_BAT(APINT_TYPE_PREFIX, 5633) +HANDLE_BAT(APINT_TYPE_PREFIX, 5634) +HANDLE_BAT(APINT_TYPE_PREFIX, 5635) +HANDLE_BAT(APINT_TYPE_PREFIX, 5636) +HANDLE_BAT(APINT_TYPE_PREFIX, 5637) +HANDLE_BAT(APINT_TYPE_PREFIX, 5638) +HANDLE_BAT(APINT_TYPE_PREFIX, 5639) +HANDLE_BAT(APINT_TYPE_PREFIX, 5640) +HANDLE_BAT(APINT_TYPE_PREFIX, 5641) +HANDLE_BAT(APINT_TYPE_PREFIX, 5642) +HANDLE_BAT(APINT_TYPE_PREFIX, 5643) +HANDLE_BAT(APINT_TYPE_PREFIX, 5644) +HANDLE_BAT(APINT_TYPE_PREFIX, 5645) +HANDLE_BAT(APINT_TYPE_PREFIX, 5646) +HANDLE_BAT(APINT_TYPE_PREFIX, 5647) +HANDLE_BAT(APINT_TYPE_PREFIX, 5648) +HANDLE_BAT(APINT_TYPE_PREFIX, 5649) +HANDLE_BAT(APINT_TYPE_PREFIX, 5650) +HANDLE_BAT(APINT_TYPE_PREFIX, 5651) +HANDLE_BAT(APINT_TYPE_PREFIX, 5652) +HANDLE_BAT(APINT_TYPE_PREFIX, 5653) +HANDLE_BAT(APINT_TYPE_PREFIX, 5654) +HANDLE_BAT(APINT_TYPE_PREFIX, 5655) +HANDLE_BAT(APINT_TYPE_PREFIX, 5656) +HANDLE_BAT(APINT_TYPE_PREFIX, 5657) +HANDLE_BAT(APINT_TYPE_PREFIX, 5658) +HANDLE_BAT(APINT_TYPE_PREFIX, 5659) +HANDLE_BAT(APINT_TYPE_PREFIX, 5660) +HANDLE_BAT(APINT_TYPE_PREFIX, 5661) +HANDLE_BAT(APINT_TYPE_PREFIX, 5662) +HANDLE_BAT(APINT_TYPE_PREFIX, 5663) +HANDLE_BAT(APINT_TYPE_PREFIX, 5664) +HANDLE_BAT(APINT_TYPE_PREFIX, 5665) +HANDLE_BAT(APINT_TYPE_PREFIX, 5666) +HANDLE_BAT(APINT_TYPE_PREFIX, 5667) +HANDLE_BAT(APINT_TYPE_PREFIX, 5668) +HANDLE_BAT(APINT_TYPE_PREFIX, 5669) +HANDLE_BAT(APINT_TYPE_PREFIX, 5670) +HANDLE_BAT(APINT_TYPE_PREFIX, 5671) +HANDLE_BAT(APINT_TYPE_PREFIX, 5672) +HANDLE_BAT(APINT_TYPE_PREFIX, 5673) +HANDLE_BAT(APINT_TYPE_PREFIX, 5674) +HANDLE_BAT(APINT_TYPE_PREFIX, 5675) +HANDLE_BAT(APINT_TYPE_PREFIX, 5676) +HANDLE_BAT(APINT_TYPE_PREFIX, 5677) +HANDLE_BAT(APINT_TYPE_PREFIX, 5678) +HANDLE_BAT(APINT_TYPE_PREFIX, 5679) +HANDLE_BAT(APINT_TYPE_PREFIX, 5680) +HANDLE_BAT(APINT_TYPE_PREFIX, 5681) +HANDLE_BAT(APINT_TYPE_PREFIX, 5682) +HANDLE_BAT(APINT_TYPE_PREFIX, 5683) +HANDLE_BAT(APINT_TYPE_PREFIX, 5684) +HANDLE_BAT(APINT_TYPE_PREFIX, 5685) +HANDLE_BAT(APINT_TYPE_PREFIX, 5686) +HANDLE_BAT(APINT_TYPE_PREFIX, 5687) +HANDLE_BAT(APINT_TYPE_PREFIX, 5688) +HANDLE_BAT(APINT_TYPE_PREFIX, 5689) +HANDLE_BAT(APINT_TYPE_PREFIX, 5690) +HANDLE_BAT(APINT_TYPE_PREFIX, 5691) +HANDLE_BAT(APINT_TYPE_PREFIX, 5692) +HANDLE_BAT(APINT_TYPE_PREFIX, 5693) +HANDLE_BAT(APINT_TYPE_PREFIX, 5694) +HANDLE_BAT(APINT_TYPE_PREFIX, 5695) +HANDLE_BAT(APINT_TYPE_PREFIX, 5696) +HANDLE_BAT(APINT_TYPE_PREFIX, 5697) +HANDLE_BAT(APINT_TYPE_PREFIX, 5698) +HANDLE_BAT(APINT_TYPE_PREFIX, 5699) +HANDLE_BAT(APINT_TYPE_PREFIX, 5700) +HANDLE_BAT(APINT_TYPE_PREFIX, 5701) +HANDLE_BAT(APINT_TYPE_PREFIX, 5702) +HANDLE_BAT(APINT_TYPE_PREFIX, 5703) +HANDLE_BAT(APINT_TYPE_PREFIX, 5704) +HANDLE_BAT(APINT_TYPE_PREFIX, 5705) +HANDLE_BAT(APINT_TYPE_PREFIX, 5706) +HANDLE_BAT(APINT_TYPE_PREFIX, 5707) +HANDLE_BAT(APINT_TYPE_PREFIX, 5708) +HANDLE_BAT(APINT_TYPE_PREFIX, 5709) +HANDLE_BAT(APINT_TYPE_PREFIX, 5710) +HANDLE_BAT(APINT_TYPE_PREFIX, 5711) +HANDLE_BAT(APINT_TYPE_PREFIX, 5712) +HANDLE_BAT(APINT_TYPE_PREFIX, 5713) +HANDLE_BAT(APINT_TYPE_PREFIX, 5714) +HANDLE_BAT(APINT_TYPE_PREFIX, 5715) +HANDLE_BAT(APINT_TYPE_PREFIX, 5716) +HANDLE_BAT(APINT_TYPE_PREFIX, 5717) +HANDLE_BAT(APINT_TYPE_PREFIX, 5718) +HANDLE_BAT(APINT_TYPE_PREFIX, 5719) +HANDLE_BAT(APINT_TYPE_PREFIX, 5720) +HANDLE_BAT(APINT_TYPE_PREFIX, 5721) +HANDLE_BAT(APINT_TYPE_PREFIX, 5722) +HANDLE_BAT(APINT_TYPE_PREFIX, 5723) +HANDLE_BAT(APINT_TYPE_PREFIX, 5724) +HANDLE_BAT(APINT_TYPE_PREFIX, 5725) +HANDLE_BAT(APINT_TYPE_PREFIX, 5726) +HANDLE_BAT(APINT_TYPE_PREFIX, 5727) +HANDLE_BAT(APINT_TYPE_PREFIX, 5728) +HANDLE_BAT(APINT_TYPE_PREFIX, 5729) +HANDLE_BAT(APINT_TYPE_PREFIX, 5730) +HANDLE_BAT(APINT_TYPE_PREFIX, 5731) +HANDLE_BAT(APINT_TYPE_PREFIX, 5732) +HANDLE_BAT(APINT_TYPE_PREFIX, 5733) +HANDLE_BAT(APINT_TYPE_PREFIX, 5734) +HANDLE_BAT(APINT_TYPE_PREFIX, 5735) +HANDLE_BAT(APINT_TYPE_PREFIX, 5736) +HANDLE_BAT(APINT_TYPE_PREFIX, 5737) +HANDLE_BAT(APINT_TYPE_PREFIX, 5738) +HANDLE_BAT(APINT_TYPE_PREFIX, 5739) +HANDLE_BAT(APINT_TYPE_PREFIX, 5740) +HANDLE_BAT(APINT_TYPE_PREFIX, 5741) +HANDLE_BAT(APINT_TYPE_PREFIX, 5742) +HANDLE_BAT(APINT_TYPE_PREFIX, 5743) +HANDLE_BAT(APINT_TYPE_PREFIX, 5744) +HANDLE_BAT(APINT_TYPE_PREFIX, 5745) +HANDLE_BAT(APINT_TYPE_PREFIX, 5746) +HANDLE_BAT(APINT_TYPE_PREFIX, 5747) +HANDLE_BAT(APINT_TYPE_PREFIX, 5748) +HANDLE_BAT(APINT_TYPE_PREFIX, 5749) +HANDLE_BAT(APINT_TYPE_PREFIX, 5750) +HANDLE_BAT(APINT_TYPE_PREFIX, 5751) +HANDLE_BAT(APINT_TYPE_PREFIX, 5752) +HANDLE_BAT(APINT_TYPE_PREFIX, 5753) +HANDLE_BAT(APINT_TYPE_PREFIX, 5754) +HANDLE_BAT(APINT_TYPE_PREFIX, 5755) +HANDLE_BAT(APINT_TYPE_PREFIX, 5756) +HANDLE_BAT(APINT_TYPE_PREFIX, 5757) +HANDLE_BAT(APINT_TYPE_PREFIX, 5758) +HANDLE_BAT(APINT_TYPE_PREFIX, 5759) +HANDLE_BAT(APINT_TYPE_PREFIX, 5760) +HANDLE_BAT(APINT_TYPE_PREFIX, 5761) +HANDLE_BAT(APINT_TYPE_PREFIX, 5762) +HANDLE_BAT(APINT_TYPE_PREFIX, 5763) +HANDLE_BAT(APINT_TYPE_PREFIX, 5764) +HANDLE_BAT(APINT_TYPE_PREFIX, 5765) +HANDLE_BAT(APINT_TYPE_PREFIX, 5766) +HANDLE_BAT(APINT_TYPE_PREFIX, 5767) +HANDLE_BAT(APINT_TYPE_PREFIX, 5768) +HANDLE_BAT(APINT_TYPE_PREFIX, 5769) +HANDLE_BAT(APINT_TYPE_PREFIX, 5770) +HANDLE_BAT(APINT_TYPE_PREFIX, 5771) +HANDLE_BAT(APINT_TYPE_PREFIX, 5772) +HANDLE_BAT(APINT_TYPE_PREFIX, 5773) +HANDLE_BAT(APINT_TYPE_PREFIX, 5774) +HANDLE_BAT(APINT_TYPE_PREFIX, 5775) +HANDLE_BAT(APINT_TYPE_PREFIX, 5776) +HANDLE_BAT(APINT_TYPE_PREFIX, 5777) +HANDLE_BAT(APINT_TYPE_PREFIX, 5778) +HANDLE_BAT(APINT_TYPE_PREFIX, 5779) +HANDLE_BAT(APINT_TYPE_PREFIX, 5780) +HANDLE_BAT(APINT_TYPE_PREFIX, 5781) +HANDLE_BAT(APINT_TYPE_PREFIX, 5782) +HANDLE_BAT(APINT_TYPE_PREFIX, 5783) +HANDLE_BAT(APINT_TYPE_PREFIX, 5784) +HANDLE_BAT(APINT_TYPE_PREFIX, 5785) +HANDLE_BAT(APINT_TYPE_PREFIX, 5786) +HANDLE_BAT(APINT_TYPE_PREFIX, 5787) +HANDLE_BAT(APINT_TYPE_PREFIX, 5788) +HANDLE_BAT(APINT_TYPE_PREFIX, 5789) +HANDLE_BAT(APINT_TYPE_PREFIX, 5790) +HANDLE_BAT(APINT_TYPE_PREFIX, 5791) +HANDLE_BAT(APINT_TYPE_PREFIX, 5792) +HANDLE_BAT(APINT_TYPE_PREFIX, 5793) +HANDLE_BAT(APINT_TYPE_PREFIX, 5794) +HANDLE_BAT(APINT_TYPE_PREFIX, 5795) +HANDLE_BAT(APINT_TYPE_PREFIX, 5796) +HANDLE_BAT(APINT_TYPE_PREFIX, 5797) +HANDLE_BAT(APINT_TYPE_PREFIX, 5798) +HANDLE_BAT(APINT_TYPE_PREFIX, 5799) +HANDLE_BAT(APINT_TYPE_PREFIX, 5800) +HANDLE_BAT(APINT_TYPE_PREFIX, 5801) +HANDLE_BAT(APINT_TYPE_PREFIX, 5802) +HANDLE_BAT(APINT_TYPE_PREFIX, 5803) +HANDLE_BAT(APINT_TYPE_PREFIX, 5804) +HANDLE_BAT(APINT_TYPE_PREFIX, 5805) +HANDLE_BAT(APINT_TYPE_PREFIX, 5806) +HANDLE_BAT(APINT_TYPE_PREFIX, 5807) +HANDLE_BAT(APINT_TYPE_PREFIX, 5808) +HANDLE_BAT(APINT_TYPE_PREFIX, 5809) +HANDLE_BAT(APINT_TYPE_PREFIX, 5810) +HANDLE_BAT(APINT_TYPE_PREFIX, 5811) +HANDLE_BAT(APINT_TYPE_PREFIX, 5812) +HANDLE_BAT(APINT_TYPE_PREFIX, 5813) +HANDLE_BAT(APINT_TYPE_PREFIX, 5814) +HANDLE_BAT(APINT_TYPE_PREFIX, 5815) +HANDLE_BAT(APINT_TYPE_PREFIX, 5816) +HANDLE_BAT(APINT_TYPE_PREFIX, 5817) +HANDLE_BAT(APINT_TYPE_PREFIX, 5818) +HANDLE_BAT(APINT_TYPE_PREFIX, 5819) +HANDLE_BAT(APINT_TYPE_PREFIX, 5820) +HANDLE_BAT(APINT_TYPE_PREFIX, 5821) +HANDLE_BAT(APINT_TYPE_PREFIX, 5822) +HANDLE_BAT(APINT_TYPE_PREFIX, 5823) +HANDLE_BAT(APINT_TYPE_PREFIX, 5824) +HANDLE_BAT(APINT_TYPE_PREFIX, 5825) +HANDLE_BAT(APINT_TYPE_PREFIX, 5826) +HANDLE_BAT(APINT_TYPE_PREFIX, 5827) +HANDLE_BAT(APINT_TYPE_PREFIX, 5828) +HANDLE_BAT(APINT_TYPE_PREFIX, 5829) +HANDLE_BAT(APINT_TYPE_PREFIX, 5830) +HANDLE_BAT(APINT_TYPE_PREFIX, 5831) +HANDLE_BAT(APINT_TYPE_PREFIX, 5832) +HANDLE_BAT(APINT_TYPE_PREFIX, 5833) +HANDLE_BAT(APINT_TYPE_PREFIX, 5834) +HANDLE_BAT(APINT_TYPE_PREFIX, 5835) +HANDLE_BAT(APINT_TYPE_PREFIX, 5836) +HANDLE_BAT(APINT_TYPE_PREFIX, 5837) +HANDLE_BAT(APINT_TYPE_PREFIX, 5838) +HANDLE_BAT(APINT_TYPE_PREFIX, 5839) +HANDLE_BAT(APINT_TYPE_PREFIX, 5840) +HANDLE_BAT(APINT_TYPE_PREFIX, 5841) +HANDLE_BAT(APINT_TYPE_PREFIX, 5842) +HANDLE_BAT(APINT_TYPE_PREFIX, 5843) +HANDLE_BAT(APINT_TYPE_PREFIX, 5844) +HANDLE_BAT(APINT_TYPE_PREFIX, 5845) +HANDLE_BAT(APINT_TYPE_PREFIX, 5846) +HANDLE_BAT(APINT_TYPE_PREFIX, 5847) +HANDLE_BAT(APINT_TYPE_PREFIX, 5848) +HANDLE_BAT(APINT_TYPE_PREFIX, 5849) +HANDLE_BAT(APINT_TYPE_PREFIX, 5850) +HANDLE_BAT(APINT_TYPE_PREFIX, 5851) +HANDLE_BAT(APINT_TYPE_PREFIX, 5852) +HANDLE_BAT(APINT_TYPE_PREFIX, 5853) +HANDLE_BAT(APINT_TYPE_PREFIX, 5854) +HANDLE_BAT(APINT_TYPE_PREFIX, 5855) +HANDLE_BAT(APINT_TYPE_PREFIX, 5856) +HANDLE_BAT(APINT_TYPE_PREFIX, 5857) +HANDLE_BAT(APINT_TYPE_PREFIX, 5858) +HANDLE_BAT(APINT_TYPE_PREFIX, 5859) +HANDLE_BAT(APINT_TYPE_PREFIX, 5860) +HANDLE_BAT(APINT_TYPE_PREFIX, 5861) +HANDLE_BAT(APINT_TYPE_PREFIX, 5862) +HANDLE_BAT(APINT_TYPE_PREFIX, 5863) +HANDLE_BAT(APINT_TYPE_PREFIX, 5864) +HANDLE_BAT(APINT_TYPE_PREFIX, 5865) +HANDLE_BAT(APINT_TYPE_PREFIX, 5866) +HANDLE_BAT(APINT_TYPE_PREFIX, 5867) +HANDLE_BAT(APINT_TYPE_PREFIX, 5868) +HANDLE_BAT(APINT_TYPE_PREFIX, 5869) +HANDLE_BAT(APINT_TYPE_PREFIX, 5870) +HANDLE_BAT(APINT_TYPE_PREFIX, 5871) +HANDLE_BAT(APINT_TYPE_PREFIX, 5872) +HANDLE_BAT(APINT_TYPE_PREFIX, 5873) +HANDLE_BAT(APINT_TYPE_PREFIX, 5874) +HANDLE_BAT(APINT_TYPE_PREFIX, 5875) +HANDLE_BAT(APINT_TYPE_PREFIX, 5876) +HANDLE_BAT(APINT_TYPE_PREFIX, 5877) +HANDLE_BAT(APINT_TYPE_PREFIX, 5878) +HANDLE_BAT(APINT_TYPE_PREFIX, 5879) +HANDLE_BAT(APINT_TYPE_PREFIX, 5880) +HANDLE_BAT(APINT_TYPE_PREFIX, 5881) +HANDLE_BAT(APINT_TYPE_PREFIX, 5882) +HANDLE_BAT(APINT_TYPE_PREFIX, 5883) +HANDLE_BAT(APINT_TYPE_PREFIX, 5884) +HANDLE_BAT(APINT_TYPE_PREFIX, 5885) +HANDLE_BAT(APINT_TYPE_PREFIX, 5886) +HANDLE_BAT(APINT_TYPE_PREFIX, 5887) +HANDLE_BAT(APINT_TYPE_PREFIX, 5888) +HANDLE_BAT(APINT_TYPE_PREFIX, 5889) +HANDLE_BAT(APINT_TYPE_PREFIX, 5890) +HANDLE_BAT(APINT_TYPE_PREFIX, 5891) +HANDLE_BAT(APINT_TYPE_PREFIX, 5892) +HANDLE_BAT(APINT_TYPE_PREFIX, 5893) +HANDLE_BAT(APINT_TYPE_PREFIX, 5894) +HANDLE_BAT(APINT_TYPE_PREFIX, 5895) +HANDLE_BAT(APINT_TYPE_PREFIX, 5896) +HANDLE_BAT(APINT_TYPE_PREFIX, 5897) +HANDLE_BAT(APINT_TYPE_PREFIX, 5898) +HANDLE_BAT(APINT_TYPE_PREFIX, 5899) +HANDLE_BAT(APINT_TYPE_PREFIX, 5900) +HANDLE_BAT(APINT_TYPE_PREFIX, 5901) +HANDLE_BAT(APINT_TYPE_PREFIX, 5902) +HANDLE_BAT(APINT_TYPE_PREFIX, 5903) +HANDLE_BAT(APINT_TYPE_PREFIX, 5904) +HANDLE_BAT(APINT_TYPE_PREFIX, 5905) +HANDLE_BAT(APINT_TYPE_PREFIX, 5906) +HANDLE_BAT(APINT_TYPE_PREFIX, 5907) +HANDLE_BAT(APINT_TYPE_PREFIX, 5908) +HANDLE_BAT(APINT_TYPE_PREFIX, 5909) +HANDLE_BAT(APINT_TYPE_PREFIX, 5910) +HANDLE_BAT(APINT_TYPE_PREFIX, 5911) +HANDLE_BAT(APINT_TYPE_PREFIX, 5912) +HANDLE_BAT(APINT_TYPE_PREFIX, 5913) +HANDLE_BAT(APINT_TYPE_PREFIX, 5914) +HANDLE_BAT(APINT_TYPE_PREFIX, 5915) +HANDLE_BAT(APINT_TYPE_PREFIX, 5916) +HANDLE_BAT(APINT_TYPE_PREFIX, 5917) +HANDLE_BAT(APINT_TYPE_PREFIX, 5918) +HANDLE_BAT(APINT_TYPE_PREFIX, 5919) +HANDLE_BAT(APINT_TYPE_PREFIX, 5920) +HANDLE_BAT(APINT_TYPE_PREFIX, 5921) +HANDLE_BAT(APINT_TYPE_PREFIX, 5922) +HANDLE_BAT(APINT_TYPE_PREFIX, 5923) +HANDLE_BAT(APINT_TYPE_PREFIX, 5924) +HANDLE_BAT(APINT_TYPE_PREFIX, 5925) +HANDLE_BAT(APINT_TYPE_PREFIX, 5926) +HANDLE_BAT(APINT_TYPE_PREFIX, 5927) +HANDLE_BAT(APINT_TYPE_PREFIX, 5928) +HANDLE_BAT(APINT_TYPE_PREFIX, 5929) +HANDLE_BAT(APINT_TYPE_PREFIX, 5930) +HANDLE_BAT(APINT_TYPE_PREFIX, 5931) +HANDLE_BAT(APINT_TYPE_PREFIX, 5932) +HANDLE_BAT(APINT_TYPE_PREFIX, 5933) +HANDLE_BAT(APINT_TYPE_PREFIX, 5934) +HANDLE_BAT(APINT_TYPE_PREFIX, 5935) +HANDLE_BAT(APINT_TYPE_PREFIX, 5936) +HANDLE_BAT(APINT_TYPE_PREFIX, 5937) +HANDLE_BAT(APINT_TYPE_PREFIX, 5938) +HANDLE_BAT(APINT_TYPE_PREFIX, 5939) +HANDLE_BAT(APINT_TYPE_PREFIX, 5940) +HANDLE_BAT(APINT_TYPE_PREFIX, 5941) +HANDLE_BAT(APINT_TYPE_PREFIX, 5942) +HANDLE_BAT(APINT_TYPE_PREFIX, 5943) +HANDLE_BAT(APINT_TYPE_PREFIX, 5944) +HANDLE_BAT(APINT_TYPE_PREFIX, 5945) +HANDLE_BAT(APINT_TYPE_PREFIX, 5946) +HANDLE_BAT(APINT_TYPE_PREFIX, 5947) +HANDLE_BAT(APINT_TYPE_PREFIX, 5948) +HANDLE_BAT(APINT_TYPE_PREFIX, 5949) +HANDLE_BAT(APINT_TYPE_PREFIX, 5950) +HANDLE_BAT(APINT_TYPE_PREFIX, 5951) +HANDLE_BAT(APINT_TYPE_PREFIX, 5952) +HANDLE_BAT(APINT_TYPE_PREFIX, 5953) +HANDLE_BAT(APINT_TYPE_PREFIX, 5954) +HANDLE_BAT(APINT_TYPE_PREFIX, 5955) +HANDLE_BAT(APINT_TYPE_PREFIX, 5956) +HANDLE_BAT(APINT_TYPE_PREFIX, 5957) +HANDLE_BAT(APINT_TYPE_PREFIX, 5958) +HANDLE_BAT(APINT_TYPE_PREFIX, 5959) +HANDLE_BAT(APINT_TYPE_PREFIX, 5960) +HANDLE_BAT(APINT_TYPE_PREFIX, 5961) +HANDLE_BAT(APINT_TYPE_PREFIX, 5962) +HANDLE_BAT(APINT_TYPE_PREFIX, 5963) +HANDLE_BAT(APINT_TYPE_PREFIX, 5964) +HANDLE_BAT(APINT_TYPE_PREFIX, 5965) +HANDLE_BAT(APINT_TYPE_PREFIX, 5966) +HANDLE_BAT(APINT_TYPE_PREFIX, 5967) +HANDLE_BAT(APINT_TYPE_PREFIX, 5968) +HANDLE_BAT(APINT_TYPE_PREFIX, 5969) +HANDLE_BAT(APINT_TYPE_PREFIX, 5970) +HANDLE_BAT(APINT_TYPE_PREFIX, 5971) +HANDLE_BAT(APINT_TYPE_PREFIX, 5972) +HANDLE_BAT(APINT_TYPE_PREFIX, 5973) +HANDLE_BAT(APINT_TYPE_PREFIX, 5974) +HANDLE_BAT(APINT_TYPE_PREFIX, 5975) +HANDLE_BAT(APINT_TYPE_PREFIX, 5976) +HANDLE_BAT(APINT_TYPE_PREFIX, 5977) +HANDLE_BAT(APINT_TYPE_PREFIX, 5978) +HANDLE_BAT(APINT_TYPE_PREFIX, 5979) +HANDLE_BAT(APINT_TYPE_PREFIX, 5980) +HANDLE_BAT(APINT_TYPE_PREFIX, 5981) +HANDLE_BAT(APINT_TYPE_PREFIX, 5982) +HANDLE_BAT(APINT_TYPE_PREFIX, 5983) +HANDLE_BAT(APINT_TYPE_PREFIX, 5984) +HANDLE_BAT(APINT_TYPE_PREFIX, 5985) +HANDLE_BAT(APINT_TYPE_PREFIX, 5986) +HANDLE_BAT(APINT_TYPE_PREFIX, 5987) +HANDLE_BAT(APINT_TYPE_PREFIX, 5988) +HANDLE_BAT(APINT_TYPE_PREFIX, 5989) +HANDLE_BAT(APINT_TYPE_PREFIX, 5990) +HANDLE_BAT(APINT_TYPE_PREFIX, 5991) +HANDLE_BAT(APINT_TYPE_PREFIX, 5992) +HANDLE_BAT(APINT_TYPE_PREFIX, 5993) +HANDLE_BAT(APINT_TYPE_PREFIX, 5994) +HANDLE_BAT(APINT_TYPE_PREFIX, 5995) +HANDLE_BAT(APINT_TYPE_PREFIX, 5996) +HANDLE_BAT(APINT_TYPE_PREFIX, 5997) +HANDLE_BAT(APINT_TYPE_PREFIX, 5998) +HANDLE_BAT(APINT_TYPE_PREFIX, 5999) +HANDLE_BAT(APINT_TYPE_PREFIX, 6000) +HANDLE_BAT(APINT_TYPE_PREFIX, 6001) +HANDLE_BAT(APINT_TYPE_PREFIX, 6002) +HANDLE_BAT(APINT_TYPE_PREFIX, 6003) +HANDLE_BAT(APINT_TYPE_PREFIX, 6004) +HANDLE_BAT(APINT_TYPE_PREFIX, 6005) +HANDLE_BAT(APINT_TYPE_PREFIX, 6006) +HANDLE_BAT(APINT_TYPE_PREFIX, 6007) +HANDLE_BAT(APINT_TYPE_PREFIX, 6008) +HANDLE_BAT(APINT_TYPE_PREFIX, 6009) +HANDLE_BAT(APINT_TYPE_PREFIX, 6010) +HANDLE_BAT(APINT_TYPE_PREFIX, 6011) +HANDLE_BAT(APINT_TYPE_PREFIX, 6012) +HANDLE_BAT(APINT_TYPE_PREFIX, 6013) +HANDLE_BAT(APINT_TYPE_PREFIX, 6014) +HANDLE_BAT(APINT_TYPE_PREFIX, 6015) +HANDLE_BAT(APINT_TYPE_PREFIX, 6016) +HANDLE_BAT(APINT_TYPE_PREFIX, 6017) +HANDLE_BAT(APINT_TYPE_PREFIX, 6018) +HANDLE_BAT(APINT_TYPE_PREFIX, 6019) +HANDLE_BAT(APINT_TYPE_PREFIX, 6020) +HANDLE_BAT(APINT_TYPE_PREFIX, 6021) +HANDLE_BAT(APINT_TYPE_PREFIX, 6022) +HANDLE_BAT(APINT_TYPE_PREFIX, 6023) +HANDLE_BAT(APINT_TYPE_PREFIX, 6024) +HANDLE_BAT(APINT_TYPE_PREFIX, 6025) +HANDLE_BAT(APINT_TYPE_PREFIX, 6026) +HANDLE_BAT(APINT_TYPE_PREFIX, 6027) +HANDLE_BAT(APINT_TYPE_PREFIX, 6028) +HANDLE_BAT(APINT_TYPE_PREFIX, 6029) +HANDLE_BAT(APINT_TYPE_PREFIX, 6030) +HANDLE_BAT(APINT_TYPE_PREFIX, 6031) +HANDLE_BAT(APINT_TYPE_PREFIX, 6032) +HANDLE_BAT(APINT_TYPE_PREFIX, 6033) +HANDLE_BAT(APINT_TYPE_PREFIX, 6034) +HANDLE_BAT(APINT_TYPE_PREFIX, 6035) +HANDLE_BAT(APINT_TYPE_PREFIX, 6036) +HANDLE_BAT(APINT_TYPE_PREFIX, 6037) +HANDLE_BAT(APINT_TYPE_PREFIX, 6038) +HANDLE_BAT(APINT_TYPE_PREFIX, 6039) +HANDLE_BAT(APINT_TYPE_PREFIX, 6040) +HANDLE_BAT(APINT_TYPE_PREFIX, 6041) +HANDLE_BAT(APINT_TYPE_PREFIX, 6042) +HANDLE_BAT(APINT_TYPE_PREFIX, 6043) +HANDLE_BAT(APINT_TYPE_PREFIX, 6044) +HANDLE_BAT(APINT_TYPE_PREFIX, 6045) +HANDLE_BAT(APINT_TYPE_PREFIX, 6046) +HANDLE_BAT(APINT_TYPE_PREFIX, 6047) +HANDLE_BAT(APINT_TYPE_PREFIX, 6048) +HANDLE_BAT(APINT_TYPE_PREFIX, 6049) +HANDLE_BAT(APINT_TYPE_PREFIX, 6050) +HANDLE_BAT(APINT_TYPE_PREFIX, 6051) +HANDLE_BAT(APINT_TYPE_PREFIX, 6052) +HANDLE_BAT(APINT_TYPE_PREFIX, 6053) +HANDLE_BAT(APINT_TYPE_PREFIX, 6054) +HANDLE_BAT(APINT_TYPE_PREFIX, 6055) +HANDLE_BAT(APINT_TYPE_PREFIX, 6056) +HANDLE_BAT(APINT_TYPE_PREFIX, 6057) +HANDLE_BAT(APINT_TYPE_PREFIX, 6058) +HANDLE_BAT(APINT_TYPE_PREFIX, 6059) +HANDLE_BAT(APINT_TYPE_PREFIX, 6060) +HANDLE_BAT(APINT_TYPE_PREFIX, 6061) +HANDLE_BAT(APINT_TYPE_PREFIX, 6062) +HANDLE_BAT(APINT_TYPE_PREFIX, 6063) +HANDLE_BAT(APINT_TYPE_PREFIX, 6064) +HANDLE_BAT(APINT_TYPE_PREFIX, 6065) +HANDLE_BAT(APINT_TYPE_PREFIX, 6066) +HANDLE_BAT(APINT_TYPE_PREFIX, 6067) +HANDLE_BAT(APINT_TYPE_PREFIX, 6068) +HANDLE_BAT(APINT_TYPE_PREFIX, 6069) +HANDLE_BAT(APINT_TYPE_PREFIX, 6070) +HANDLE_BAT(APINT_TYPE_PREFIX, 6071) +HANDLE_BAT(APINT_TYPE_PREFIX, 6072) +HANDLE_BAT(APINT_TYPE_PREFIX, 6073) +HANDLE_BAT(APINT_TYPE_PREFIX, 6074) +HANDLE_BAT(APINT_TYPE_PREFIX, 6075) +HANDLE_BAT(APINT_TYPE_PREFIX, 6076) +HANDLE_BAT(APINT_TYPE_PREFIX, 6077) +HANDLE_BAT(APINT_TYPE_PREFIX, 6078) +HANDLE_BAT(APINT_TYPE_PREFIX, 6079) +HANDLE_BAT(APINT_TYPE_PREFIX, 6080) +HANDLE_BAT(APINT_TYPE_PREFIX, 6081) +HANDLE_BAT(APINT_TYPE_PREFIX, 6082) +HANDLE_BAT(APINT_TYPE_PREFIX, 6083) +HANDLE_BAT(APINT_TYPE_PREFIX, 6084) +HANDLE_BAT(APINT_TYPE_PREFIX, 6085) +HANDLE_BAT(APINT_TYPE_PREFIX, 6086) +HANDLE_BAT(APINT_TYPE_PREFIX, 6087) +HANDLE_BAT(APINT_TYPE_PREFIX, 6088) +HANDLE_BAT(APINT_TYPE_PREFIX, 6089) +HANDLE_BAT(APINT_TYPE_PREFIX, 6090) +HANDLE_BAT(APINT_TYPE_PREFIX, 6091) +HANDLE_BAT(APINT_TYPE_PREFIX, 6092) +HANDLE_BAT(APINT_TYPE_PREFIX, 6093) +HANDLE_BAT(APINT_TYPE_PREFIX, 6094) +HANDLE_BAT(APINT_TYPE_PREFIX, 6095) +HANDLE_BAT(APINT_TYPE_PREFIX, 6096) +HANDLE_BAT(APINT_TYPE_PREFIX, 6097) +HANDLE_BAT(APINT_TYPE_PREFIX, 6098) +HANDLE_BAT(APINT_TYPE_PREFIX, 6099) +HANDLE_BAT(APINT_TYPE_PREFIX, 6100) +HANDLE_BAT(APINT_TYPE_PREFIX, 6101) +HANDLE_BAT(APINT_TYPE_PREFIX, 6102) +HANDLE_BAT(APINT_TYPE_PREFIX, 6103) +HANDLE_BAT(APINT_TYPE_PREFIX, 6104) +HANDLE_BAT(APINT_TYPE_PREFIX, 6105) +HANDLE_BAT(APINT_TYPE_PREFIX, 6106) +HANDLE_BAT(APINT_TYPE_PREFIX, 6107) +HANDLE_BAT(APINT_TYPE_PREFIX, 6108) +HANDLE_BAT(APINT_TYPE_PREFIX, 6109) +HANDLE_BAT(APINT_TYPE_PREFIX, 6110) +HANDLE_BAT(APINT_TYPE_PREFIX, 6111) +HANDLE_BAT(APINT_TYPE_PREFIX, 6112) +HANDLE_BAT(APINT_TYPE_PREFIX, 6113) +HANDLE_BAT(APINT_TYPE_PREFIX, 6114) +HANDLE_BAT(APINT_TYPE_PREFIX, 6115) +HANDLE_BAT(APINT_TYPE_PREFIX, 6116) +HANDLE_BAT(APINT_TYPE_PREFIX, 6117) +HANDLE_BAT(APINT_TYPE_PREFIX, 6118) +HANDLE_BAT(APINT_TYPE_PREFIX, 6119) +HANDLE_BAT(APINT_TYPE_PREFIX, 6120) +HANDLE_BAT(APINT_TYPE_PREFIX, 6121) +HANDLE_BAT(APINT_TYPE_PREFIX, 6122) +HANDLE_BAT(APINT_TYPE_PREFIX, 6123) +HANDLE_BAT(APINT_TYPE_PREFIX, 6124) +HANDLE_BAT(APINT_TYPE_PREFIX, 6125) +HANDLE_BAT(APINT_TYPE_PREFIX, 6126) +HANDLE_BAT(APINT_TYPE_PREFIX, 6127) +HANDLE_BAT(APINT_TYPE_PREFIX, 6128) +HANDLE_BAT(APINT_TYPE_PREFIX, 6129) +HANDLE_BAT(APINT_TYPE_PREFIX, 6130) +HANDLE_BAT(APINT_TYPE_PREFIX, 6131) +HANDLE_BAT(APINT_TYPE_PREFIX, 6132) +HANDLE_BAT(APINT_TYPE_PREFIX, 6133) +HANDLE_BAT(APINT_TYPE_PREFIX, 6134) +HANDLE_BAT(APINT_TYPE_PREFIX, 6135) +HANDLE_BAT(APINT_TYPE_PREFIX, 6136) +HANDLE_BAT(APINT_TYPE_PREFIX, 6137) +HANDLE_BAT(APINT_TYPE_PREFIX, 6138) +HANDLE_BAT(APINT_TYPE_PREFIX, 6139) +HANDLE_BAT(APINT_TYPE_PREFIX, 6140) +HANDLE_BAT(APINT_TYPE_PREFIX, 6141) +HANDLE_BAT(APINT_TYPE_PREFIX, 6142) +HANDLE_BAT(APINT_TYPE_PREFIX, 6143) +HANDLE_BAT(APINT_TYPE_PREFIX, 6144) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 6 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 6145) +HANDLE_BAT(, 6146) +HANDLE_BAT(, 6147) +HANDLE_BAT(, 6148) +HANDLE_BAT(, 6149) +HANDLE_BAT(, 6150) +HANDLE_BAT(, 6151) +HANDLE_BAT(, 6152) +HANDLE_BAT(, 6153) +HANDLE_BAT(, 6154) +HANDLE_BAT(, 6155) +HANDLE_BAT(, 6156) +HANDLE_BAT(, 6157) +HANDLE_BAT(, 6158) +HANDLE_BAT(, 6159) +HANDLE_BAT(, 6160) +HANDLE_BAT(, 6161) +HANDLE_BAT(, 6162) +HANDLE_BAT(, 6163) +HANDLE_BAT(, 6164) +HANDLE_BAT(, 6165) +HANDLE_BAT(, 6166) +HANDLE_BAT(, 6167) +HANDLE_BAT(, 6168) +HANDLE_BAT(, 6169) +HANDLE_BAT(, 6170) +HANDLE_BAT(, 6171) +HANDLE_BAT(, 6172) +HANDLE_BAT(, 6173) +HANDLE_BAT(, 6174) +HANDLE_BAT(, 6175) +HANDLE_BAT(, 6176) +HANDLE_BAT(, 6177) +HANDLE_BAT(, 6178) +HANDLE_BAT(, 6179) +HANDLE_BAT(, 6180) +HANDLE_BAT(, 6181) +HANDLE_BAT(, 6182) +HANDLE_BAT(, 6183) +HANDLE_BAT(, 6184) +HANDLE_BAT(, 6185) +HANDLE_BAT(, 6186) +HANDLE_BAT(, 6187) +HANDLE_BAT(, 6188) +HANDLE_BAT(, 6189) +HANDLE_BAT(, 6190) +HANDLE_BAT(, 6191) +HANDLE_BAT(, 6192) +HANDLE_BAT(, 6193) +HANDLE_BAT(, 6194) +HANDLE_BAT(, 6195) +HANDLE_BAT(, 6196) +HANDLE_BAT(, 6197) +HANDLE_BAT(, 6198) +HANDLE_BAT(, 6199) +HANDLE_BAT(, 6200) +HANDLE_BAT(, 6201) +HANDLE_BAT(, 6202) +HANDLE_BAT(, 6203) +HANDLE_BAT(, 6204) +HANDLE_BAT(, 6205) +HANDLE_BAT(, 6206) +HANDLE_BAT(, 6207) +HANDLE_BAT(, 6208) +HANDLE_BAT(, 6209) +HANDLE_BAT(, 6210) +HANDLE_BAT(, 6211) +HANDLE_BAT(, 6212) +HANDLE_BAT(, 6213) +HANDLE_BAT(, 6214) +HANDLE_BAT(, 6215) +HANDLE_BAT(, 6216) +HANDLE_BAT(, 6217) +HANDLE_BAT(, 6218) +HANDLE_BAT(, 6219) +HANDLE_BAT(, 6220) +HANDLE_BAT(, 6221) +HANDLE_BAT(, 6222) +HANDLE_BAT(, 6223) +HANDLE_BAT(, 6224) +HANDLE_BAT(, 6225) +HANDLE_BAT(, 6226) +HANDLE_BAT(, 6227) +HANDLE_BAT(, 6228) +HANDLE_BAT(, 6229) +HANDLE_BAT(, 6230) +HANDLE_BAT(, 6231) +HANDLE_BAT(, 6232) +HANDLE_BAT(, 6233) +HANDLE_BAT(, 6234) +HANDLE_BAT(, 6235) +HANDLE_BAT(, 6236) +HANDLE_BAT(, 6237) +HANDLE_BAT(, 6238) +HANDLE_BAT(, 6239) +HANDLE_BAT(, 6240) +HANDLE_BAT(, 6241) +HANDLE_BAT(, 6242) +HANDLE_BAT(, 6243) +HANDLE_BAT(, 6244) +HANDLE_BAT(, 6245) +HANDLE_BAT(, 6246) +HANDLE_BAT(, 6247) +HANDLE_BAT(, 6248) +HANDLE_BAT(, 6249) +HANDLE_BAT(, 6250) +HANDLE_BAT(, 6251) +HANDLE_BAT(, 6252) +HANDLE_BAT(, 6253) +HANDLE_BAT(, 6254) +HANDLE_BAT(, 6255) +HANDLE_BAT(, 6256) +HANDLE_BAT(, 6257) +HANDLE_BAT(, 6258) +HANDLE_BAT(, 6259) +HANDLE_BAT(, 6260) +HANDLE_BAT(, 6261) +HANDLE_BAT(, 6262) +HANDLE_BAT(, 6263) +HANDLE_BAT(, 6264) +HANDLE_BAT(, 6265) +HANDLE_BAT(, 6266) +HANDLE_BAT(, 6267) +HANDLE_BAT(, 6268) +HANDLE_BAT(, 6269) +HANDLE_BAT(, 6270) +HANDLE_BAT(, 6271) +HANDLE_BAT(, 6272) +HANDLE_BAT(, 6273) +HANDLE_BAT(, 6274) +HANDLE_BAT(, 6275) +HANDLE_BAT(, 6276) +HANDLE_BAT(, 6277) +HANDLE_BAT(, 6278) +HANDLE_BAT(, 6279) +HANDLE_BAT(, 6280) +HANDLE_BAT(, 6281) +HANDLE_BAT(, 6282) +HANDLE_BAT(, 6283) +HANDLE_BAT(, 6284) +HANDLE_BAT(, 6285) +HANDLE_BAT(, 6286) +HANDLE_BAT(, 6287) +HANDLE_BAT(, 6288) +HANDLE_BAT(, 6289) +HANDLE_BAT(, 6290) +HANDLE_BAT(, 6291) +HANDLE_BAT(, 6292) +HANDLE_BAT(, 6293) +HANDLE_BAT(, 6294) +HANDLE_BAT(, 6295) +HANDLE_BAT(, 6296) +HANDLE_BAT(, 6297) +HANDLE_BAT(, 6298) +HANDLE_BAT(, 6299) +HANDLE_BAT(, 6300) +HANDLE_BAT(, 6301) +HANDLE_BAT(, 6302) +HANDLE_BAT(, 6303) +HANDLE_BAT(, 6304) +HANDLE_BAT(, 6305) +HANDLE_BAT(, 6306) +HANDLE_BAT(, 6307) +HANDLE_BAT(, 6308) +HANDLE_BAT(, 6309) +HANDLE_BAT(, 6310) +HANDLE_BAT(, 6311) +HANDLE_BAT(, 6312) +HANDLE_BAT(, 6313) +HANDLE_BAT(, 6314) +HANDLE_BAT(, 6315) +HANDLE_BAT(, 6316) +HANDLE_BAT(, 6317) +HANDLE_BAT(, 6318) +HANDLE_BAT(, 6319) +HANDLE_BAT(, 6320) +HANDLE_BAT(, 6321) +HANDLE_BAT(, 6322) +HANDLE_BAT(, 6323) +HANDLE_BAT(, 6324) +HANDLE_BAT(, 6325) +HANDLE_BAT(, 6326) +HANDLE_BAT(, 6327) +HANDLE_BAT(, 6328) +HANDLE_BAT(, 6329) +HANDLE_BAT(, 6330) +HANDLE_BAT(, 6331) +HANDLE_BAT(, 6332) +HANDLE_BAT(, 6333) +HANDLE_BAT(, 6334) +HANDLE_BAT(, 6335) +HANDLE_BAT(, 6336) +HANDLE_BAT(, 6337) +HANDLE_BAT(, 6338) +HANDLE_BAT(, 6339) +HANDLE_BAT(, 6340) +HANDLE_BAT(, 6341) +HANDLE_BAT(, 6342) +HANDLE_BAT(, 6343) +HANDLE_BAT(, 6344) +HANDLE_BAT(, 6345) +HANDLE_BAT(, 6346) +HANDLE_BAT(, 6347) +HANDLE_BAT(, 6348) +HANDLE_BAT(, 6349) +HANDLE_BAT(, 6350) +HANDLE_BAT(, 6351) +HANDLE_BAT(, 6352) +HANDLE_BAT(, 6353) +HANDLE_BAT(, 6354) +HANDLE_BAT(, 6355) +HANDLE_BAT(, 6356) +HANDLE_BAT(, 6357) +HANDLE_BAT(, 6358) +HANDLE_BAT(, 6359) +HANDLE_BAT(, 6360) +HANDLE_BAT(, 6361) +HANDLE_BAT(, 6362) +HANDLE_BAT(, 6363) +HANDLE_BAT(, 6364) +HANDLE_BAT(, 6365) +HANDLE_BAT(, 6366) +HANDLE_BAT(, 6367) +HANDLE_BAT(, 6368) +HANDLE_BAT(, 6369) +HANDLE_BAT(, 6370) +HANDLE_BAT(, 6371) +HANDLE_BAT(, 6372) +HANDLE_BAT(, 6373) +HANDLE_BAT(, 6374) +HANDLE_BAT(, 6375) +HANDLE_BAT(, 6376) +HANDLE_BAT(, 6377) +HANDLE_BAT(, 6378) +HANDLE_BAT(, 6379) +HANDLE_BAT(, 6380) +HANDLE_BAT(, 6381) +HANDLE_BAT(, 6382) +HANDLE_BAT(, 6383) +HANDLE_BAT(, 6384) +HANDLE_BAT(, 6385) +HANDLE_BAT(, 6386) +HANDLE_BAT(, 6387) +HANDLE_BAT(, 6388) +HANDLE_BAT(, 6389) +HANDLE_BAT(, 6390) +HANDLE_BAT(, 6391) +HANDLE_BAT(, 6392) +HANDLE_BAT(, 6393) +HANDLE_BAT(, 6394) +HANDLE_BAT(, 6395) +HANDLE_BAT(, 6396) +HANDLE_BAT(, 6397) +HANDLE_BAT(, 6398) +HANDLE_BAT(, 6399) +HANDLE_BAT(, 6400) +HANDLE_BAT(, 6401) +HANDLE_BAT(, 6402) +HANDLE_BAT(, 6403) +HANDLE_BAT(, 6404) +HANDLE_BAT(, 6405) +HANDLE_BAT(, 6406) +HANDLE_BAT(, 6407) +HANDLE_BAT(, 6408) +HANDLE_BAT(, 6409) +HANDLE_BAT(, 6410) +HANDLE_BAT(, 6411) +HANDLE_BAT(, 6412) +HANDLE_BAT(, 6413) +HANDLE_BAT(, 6414) +HANDLE_BAT(, 6415) +HANDLE_BAT(, 6416) +HANDLE_BAT(, 6417) +HANDLE_BAT(, 6418) +HANDLE_BAT(, 6419) +HANDLE_BAT(, 6420) +HANDLE_BAT(, 6421) +HANDLE_BAT(, 6422) +HANDLE_BAT(, 6423) +HANDLE_BAT(, 6424) +HANDLE_BAT(, 6425) +HANDLE_BAT(, 6426) +HANDLE_BAT(, 6427) +HANDLE_BAT(, 6428) +HANDLE_BAT(, 6429) +HANDLE_BAT(, 6430) +HANDLE_BAT(, 6431) +HANDLE_BAT(, 6432) +HANDLE_BAT(, 6433) +HANDLE_BAT(, 6434) +HANDLE_BAT(, 6435) +HANDLE_BAT(, 6436) +HANDLE_BAT(, 6437) +HANDLE_BAT(, 6438) +HANDLE_BAT(, 6439) +HANDLE_BAT(, 6440) +HANDLE_BAT(, 6441) +HANDLE_BAT(, 6442) +HANDLE_BAT(, 6443) +HANDLE_BAT(, 6444) +HANDLE_BAT(, 6445) +HANDLE_BAT(, 6446) +HANDLE_BAT(, 6447) +HANDLE_BAT(, 6448) +HANDLE_BAT(, 6449) +HANDLE_BAT(, 6450) +HANDLE_BAT(, 6451) +HANDLE_BAT(, 6452) +HANDLE_BAT(, 6453) +HANDLE_BAT(, 6454) +HANDLE_BAT(, 6455) +HANDLE_BAT(, 6456) +HANDLE_BAT(, 6457) +HANDLE_BAT(, 6458) +HANDLE_BAT(, 6459) +HANDLE_BAT(, 6460) +HANDLE_BAT(, 6461) +HANDLE_BAT(, 6462) +HANDLE_BAT(, 6463) +HANDLE_BAT(, 6464) +HANDLE_BAT(, 6465) +HANDLE_BAT(, 6466) +HANDLE_BAT(, 6467) +HANDLE_BAT(, 6468) +HANDLE_BAT(, 6469) +HANDLE_BAT(, 6470) +HANDLE_BAT(, 6471) +HANDLE_BAT(, 6472) +HANDLE_BAT(, 6473) +HANDLE_BAT(, 6474) +HANDLE_BAT(, 6475) +HANDLE_BAT(, 6476) +HANDLE_BAT(, 6477) +HANDLE_BAT(, 6478) +HANDLE_BAT(, 6479) +HANDLE_BAT(, 6480) +HANDLE_BAT(, 6481) +HANDLE_BAT(, 6482) +HANDLE_BAT(, 6483) +HANDLE_BAT(, 6484) +HANDLE_BAT(, 6485) +HANDLE_BAT(, 6486) +HANDLE_BAT(, 6487) +HANDLE_BAT(, 6488) +HANDLE_BAT(, 6489) +HANDLE_BAT(, 6490) +HANDLE_BAT(, 6491) +HANDLE_BAT(, 6492) +HANDLE_BAT(, 6493) +HANDLE_BAT(, 6494) +HANDLE_BAT(, 6495) +HANDLE_BAT(, 6496) +HANDLE_BAT(, 6497) +HANDLE_BAT(, 6498) +HANDLE_BAT(, 6499) +HANDLE_BAT(, 6500) +HANDLE_BAT(, 6501) +HANDLE_BAT(, 6502) +HANDLE_BAT(, 6503) +HANDLE_BAT(, 6504) +HANDLE_BAT(, 6505) +HANDLE_BAT(, 6506) +HANDLE_BAT(, 6507) +HANDLE_BAT(, 6508) +HANDLE_BAT(, 6509) +HANDLE_BAT(, 6510) +HANDLE_BAT(, 6511) +HANDLE_BAT(, 6512) +HANDLE_BAT(, 6513) +HANDLE_BAT(, 6514) +HANDLE_BAT(, 6515) +HANDLE_BAT(, 6516) +HANDLE_BAT(, 6517) +HANDLE_BAT(, 6518) +HANDLE_BAT(, 6519) +HANDLE_BAT(, 6520) +HANDLE_BAT(, 6521) +HANDLE_BAT(, 6522) +HANDLE_BAT(, 6523) +HANDLE_BAT(, 6524) +HANDLE_BAT(, 6525) +HANDLE_BAT(, 6526) +HANDLE_BAT(, 6527) +HANDLE_BAT(, 6528) +HANDLE_BAT(, 6529) +HANDLE_BAT(, 6530) +HANDLE_BAT(, 6531) +HANDLE_BAT(, 6532) +HANDLE_BAT(, 6533) +HANDLE_BAT(, 6534) +HANDLE_BAT(, 6535) +HANDLE_BAT(, 6536) +HANDLE_BAT(, 6537) +HANDLE_BAT(, 6538) +HANDLE_BAT(, 6539) +HANDLE_BAT(, 6540) +HANDLE_BAT(, 6541) +HANDLE_BAT(, 6542) +HANDLE_BAT(, 6543) +HANDLE_BAT(, 6544) +HANDLE_BAT(, 6545) +HANDLE_BAT(, 6546) +HANDLE_BAT(, 6547) +HANDLE_BAT(, 6548) +HANDLE_BAT(, 6549) +HANDLE_BAT(, 6550) +HANDLE_BAT(, 6551) +HANDLE_BAT(, 6552) +HANDLE_BAT(, 6553) +HANDLE_BAT(, 6554) +HANDLE_BAT(, 6555) +HANDLE_BAT(, 6556) +HANDLE_BAT(, 6557) +HANDLE_BAT(, 6558) +HANDLE_BAT(, 6559) +HANDLE_BAT(, 6560) +HANDLE_BAT(, 6561) +HANDLE_BAT(, 6562) +HANDLE_BAT(, 6563) +HANDLE_BAT(, 6564) +HANDLE_BAT(, 6565) +HANDLE_BAT(, 6566) +HANDLE_BAT(, 6567) +HANDLE_BAT(, 6568) +HANDLE_BAT(, 6569) +HANDLE_BAT(, 6570) +HANDLE_BAT(, 6571) +HANDLE_BAT(, 6572) +HANDLE_BAT(, 6573) +HANDLE_BAT(, 6574) +HANDLE_BAT(, 6575) +HANDLE_BAT(, 6576) +HANDLE_BAT(, 6577) +HANDLE_BAT(, 6578) +HANDLE_BAT(, 6579) +HANDLE_BAT(, 6580) +HANDLE_BAT(, 6581) +HANDLE_BAT(, 6582) +HANDLE_BAT(, 6583) +HANDLE_BAT(, 6584) +HANDLE_BAT(, 6585) +HANDLE_BAT(, 6586) +HANDLE_BAT(, 6587) +HANDLE_BAT(, 6588) +HANDLE_BAT(, 6589) +HANDLE_BAT(, 6590) +HANDLE_BAT(, 6591) +HANDLE_BAT(, 6592) +HANDLE_BAT(, 6593) +HANDLE_BAT(, 6594) +HANDLE_BAT(, 6595) +HANDLE_BAT(, 6596) +HANDLE_BAT(, 6597) +HANDLE_BAT(, 6598) +HANDLE_BAT(, 6599) +HANDLE_BAT(, 6600) +HANDLE_BAT(, 6601) +HANDLE_BAT(, 6602) +HANDLE_BAT(, 6603) +HANDLE_BAT(, 6604) +HANDLE_BAT(, 6605) +HANDLE_BAT(, 6606) +HANDLE_BAT(, 6607) +HANDLE_BAT(, 6608) +HANDLE_BAT(, 6609) +HANDLE_BAT(, 6610) +HANDLE_BAT(, 6611) +HANDLE_BAT(, 6612) +HANDLE_BAT(, 6613) +HANDLE_BAT(, 6614) +HANDLE_BAT(, 6615) +HANDLE_BAT(, 6616) +HANDLE_BAT(, 6617) +HANDLE_BAT(, 6618) +HANDLE_BAT(, 6619) +HANDLE_BAT(, 6620) +HANDLE_BAT(, 6621) +HANDLE_BAT(, 6622) +HANDLE_BAT(, 6623) +HANDLE_BAT(, 6624) +HANDLE_BAT(, 6625) +HANDLE_BAT(, 6626) +HANDLE_BAT(, 6627) +HANDLE_BAT(, 6628) +HANDLE_BAT(, 6629) +HANDLE_BAT(, 6630) +HANDLE_BAT(, 6631) +HANDLE_BAT(, 6632) +HANDLE_BAT(, 6633) +HANDLE_BAT(, 6634) +HANDLE_BAT(, 6635) +HANDLE_BAT(, 6636) +HANDLE_BAT(, 6637) +HANDLE_BAT(, 6638) +HANDLE_BAT(, 6639) +HANDLE_BAT(, 6640) +HANDLE_BAT(, 6641) +HANDLE_BAT(, 6642) +HANDLE_BAT(, 6643) +HANDLE_BAT(, 6644) +HANDLE_BAT(, 6645) +HANDLE_BAT(, 6646) +HANDLE_BAT(, 6647) +HANDLE_BAT(, 6648) +HANDLE_BAT(, 6649) +HANDLE_BAT(, 6650) +HANDLE_BAT(, 6651) +HANDLE_BAT(, 6652) +HANDLE_BAT(, 6653) +HANDLE_BAT(, 6654) +HANDLE_BAT(, 6655) +HANDLE_BAT(, 6656) +HANDLE_BAT(, 6657) +HANDLE_BAT(, 6658) +HANDLE_BAT(, 6659) +HANDLE_BAT(, 6660) +HANDLE_BAT(, 6661) +HANDLE_BAT(, 6662) +HANDLE_BAT(, 6663) +HANDLE_BAT(, 6664) +HANDLE_BAT(, 6665) +HANDLE_BAT(, 6666) +HANDLE_BAT(, 6667) +HANDLE_BAT(, 6668) +HANDLE_BAT(, 6669) +HANDLE_BAT(, 6670) +HANDLE_BAT(, 6671) +HANDLE_BAT(, 6672) +HANDLE_BAT(, 6673) +HANDLE_BAT(, 6674) +HANDLE_BAT(, 6675) +HANDLE_BAT(, 6676) +HANDLE_BAT(, 6677) +HANDLE_BAT(, 6678) +HANDLE_BAT(, 6679) +HANDLE_BAT(, 6680) +HANDLE_BAT(, 6681) +HANDLE_BAT(, 6682) +HANDLE_BAT(, 6683) +HANDLE_BAT(, 6684) +HANDLE_BAT(, 6685) +HANDLE_BAT(, 6686) +HANDLE_BAT(, 6687) +HANDLE_BAT(, 6688) +HANDLE_BAT(, 6689) +HANDLE_BAT(, 6690) +HANDLE_BAT(, 6691) +HANDLE_BAT(, 6692) +HANDLE_BAT(, 6693) +HANDLE_BAT(, 6694) +HANDLE_BAT(, 6695) +HANDLE_BAT(, 6696) +HANDLE_BAT(, 6697) +HANDLE_BAT(, 6698) +HANDLE_BAT(, 6699) +HANDLE_BAT(, 6700) +HANDLE_BAT(, 6701) +HANDLE_BAT(, 6702) +HANDLE_BAT(, 6703) +HANDLE_BAT(, 6704) +HANDLE_BAT(, 6705) +HANDLE_BAT(, 6706) +HANDLE_BAT(, 6707) +HANDLE_BAT(, 6708) +HANDLE_BAT(, 6709) +HANDLE_BAT(, 6710) +HANDLE_BAT(, 6711) +HANDLE_BAT(, 6712) +HANDLE_BAT(, 6713) +HANDLE_BAT(, 6714) +HANDLE_BAT(, 6715) +HANDLE_BAT(, 6716) +HANDLE_BAT(, 6717) +HANDLE_BAT(, 6718) +HANDLE_BAT(, 6719) +HANDLE_BAT(, 6720) +HANDLE_BAT(, 6721) +HANDLE_BAT(, 6722) +HANDLE_BAT(, 6723) +HANDLE_BAT(, 6724) +HANDLE_BAT(, 6725) +HANDLE_BAT(, 6726) +HANDLE_BAT(, 6727) +HANDLE_BAT(, 6728) +HANDLE_BAT(, 6729) +HANDLE_BAT(, 6730) +HANDLE_BAT(, 6731) +HANDLE_BAT(, 6732) +HANDLE_BAT(, 6733) +HANDLE_BAT(, 6734) +HANDLE_BAT(, 6735) +HANDLE_BAT(, 6736) +HANDLE_BAT(, 6737) +HANDLE_BAT(, 6738) +HANDLE_BAT(, 6739) +HANDLE_BAT(, 6740) +HANDLE_BAT(, 6741) +HANDLE_BAT(, 6742) +HANDLE_BAT(, 6743) +HANDLE_BAT(, 6744) +HANDLE_BAT(, 6745) +HANDLE_BAT(, 6746) +HANDLE_BAT(, 6747) +HANDLE_BAT(, 6748) +HANDLE_BAT(, 6749) +HANDLE_BAT(, 6750) +HANDLE_BAT(, 6751) +HANDLE_BAT(, 6752) +HANDLE_BAT(, 6753) +HANDLE_BAT(, 6754) +HANDLE_BAT(, 6755) +HANDLE_BAT(, 6756) +HANDLE_BAT(, 6757) +HANDLE_BAT(, 6758) +HANDLE_BAT(, 6759) +HANDLE_BAT(, 6760) +HANDLE_BAT(, 6761) +HANDLE_BAT(, 6762) +HANDLE_BAT(, 6763) +HANDLE_BAT(, 6764) +HANDLE_BAT(, 6765) +HANDLE_BAT(, 6766) +HANDLE_BAT(, 6767) +HANDLE_BAT(, 6768) +HANDLE_BAT(, 6769) +HANDLE_BAT(, 6770) +HANDLE_BAT(, 6771) +HANDLE_BAT(, 6772) +HANDLE_BAT(, 6773) +HANDLE_BAT(, 6774) +HANDLE_BAT(, 6775) +HANDLE_BAT(, 6776) +HANDLE_BAT(, 6777) +HANDLE_BAT(, 6778) +HANDLE_BAT(, 6779) +HANDLE_BAT(, 6780) +HANDLE_BAT(, 6781) +HANDLE_BAT(, 6782) +HANDLE_BAT(, 6783) +HANDLE_BAT(, 6784) +HANDLE_BAT(, 6785) +HANDLE_BAT(, 6786) +HANDLE_BAT(, 6787) +HANDLE_BAT(, 6788) +HANDLE_BAT(, 6789) +HANDLE_BAT(, 6790) +HANDLE_BAT(, 6791) +HANDLE_BAT(, 6792) +HANDLE_BAT(, 6793) +HANDLE_BAT(, 6794) +HANDLE_BAT(, 6795) +HANDLE_BAT(, 6796) +HANDLE_BAT(, 6797) +HANDLE_BAT(, 6798) +HANDLE_BAT(, 6799) +HANDLE_BAT(, 6800) +HANDLE_BAT(, 6801) +HANDLE_BAT(, 6802) +HANDLE_BAT(, 6803) +HANDLE_BAT(, 6804) +HANDLE_BAT(, 6805) +HANDLE_BAT(, 6806) +HANDLE_BAT(, 6807) +HANDLE_BAT(, 6808) +HANDLE_BAT(, 6809) +HANDLE_BAT(, 6810) +HANDLE_BAT(, 6811) +HANDLE_BAT(, 6812) +HANDLE_BAT(, 6813) +HANDLE_BAT(, 6814) +HANDLE_BAT(, 6815) +HANDLE_BAT(, 6816) +HANDLE_BAT(, 6817) +HANDLE_BAT(, 6818) +HANDLE_BAT(, 6819) +HANDLE_BAT(, 6820) +HANDLE_BAT(, 6821) +HANDLE_BAT(, 6822) +HANDLE_BAT(, 6823) +HANDLE_BAT(, 6824) +HANDLE_BAT(, 6825) +HANDLE_BAT(, 6826) +HANDLE_BAT(, 6827) +HANDLE_BAT(, 6828) +HANDLE_BAT(, 6829) +HANDLE_BAT(, 6830) +HANDLE_BAT(, 6831) +HANDLE_BAT(, 6832) +HANDLE_BAT(, 6833) +HANDLE_BAT(, 6834) +HANDLE_BAT(, 6835) +HANDLE_BAT(, 6836) +HANDLE_BAT(, 6837) +HANDLE_BAT(, 6838) +HANDLE_BAT(, 6839) +HANDLE_BAT(, 6840) +HANDLE_BAT(, 6841) +HANDLE_BAT(, 6842) +HANDLE_BAT(, 6843) +HANDLE_BAT(, 6844) +HANDLE_BAT(, 6845) +HANDLE_BAT(, 6846) +HANDLE_BAT(, 6847) +HANDLE_BAT(, 6848) +HANDLE_BAT(, 6849) +HANDLE_BAT(, 6850) +HANDLE_BAT(, 6851) +HANDLE_BAT(, 6852) +HANDLE_BAT(, 6853) +HANDLE_BAT(, 6854) +HANDLE_BAT(, 6855) +HANDLE_BAT(, 6856) +HANDLE_BAT(, 6857) +HANDLE_BAT(, 6858) +HANDLE_BAT(, 6859) +HANDLE_BAT(, 6860) +HANDLE_BAT(, 6861) +HANDLE_BAT(, 6862) +HANDLE_BAT(, 6863) +HANDLE_BAT(, 6864) +HANDLE_BAT(, 6865) +HANDLE_BAT(, 6866) +HANDLE_BAT(, 6867) +HANDLE_BAT(, 6868) +HANDLE_BAT(, 6869) +HANDLE_BAT(, 6870) +HANDLE_BAT(, 6871) +HANDLE_BAT(, 6872) +HANDLE_BAT(, 6873) +HANDLE_BAT(, 6874) +HANDLE_BAT(, 6875) +HANDLE_BAT(, 6876) +HANDLE_BAT(, 6877) +HANDLE_BAT(, 6878) +HANDLE_BAT(, 6879) +HANDLE_BAT(, 6880) +HANDLE_BAT(, 6881) +HANDLE_BAT(, 6882) +HANDLE_BAT(, 6883) +HANDLE_BAT(, 6884) +HANDLE_BAT(, 6885) +HANDLE_BAT(, 6886) +HANDLE_BAT(, 6887) +HANDLE_BAT(, 6888) +HANDLE_BAT(, 6889) +HANDLE_BAT(, 6890) +HANDLE_BAT(, 6891) +HANDLE_BAT(, 6892) +HANDLE_BAT(, 6893) +HANDLE_BAT(, 6894) +HANDLE_BAT(, 6895) +HANDLE_BAT(, 6896) +HANDLE_BAT(, 6897) +HANDLE_BAT(, 6898) +HANDLE_BAT(, 6899) +HANDLE_BAT(, 6900) +HANDLE_BAT(, 6901) +HANDLE_BAT(, 6902) +HANDLE_BAT(, 6903) +HANDLE_BAT(, 6904) +HANDLE_BAT(, 6905) +HANDLE_BAT(, 6906) +HANDLE_BAT(, 6907) +HANDLE_BAT(, 6908) +HANDLE_BAT(, 6909) +HANDLE_BAT(, 6910) +HANDLE_BAT(, 6911) +HANDLE_BAT(, 6912) +HANDLE_BAT(, 6913) +HANDLE_BAT(, 6914) +HANDLE_BAT(, 6915) +HANDLE_BAT(, 6916) +HANDLE_BAT(, 6917) +HANDLE_BAT(, 6918) +HANDLE_BAT(, 6919) +HANDLE_BAT(, 6920) +HANDLE_BAT(, 6921) +HANDLE_BAT(, 6922) +HANDLE_BAT(, 6923) +HANDLE_BAT(, 6924) +HANDLE_BAT(, 6925) +HANDLE_BAT(, 6926) +HANDLE_BAT(, 6927) +HANDLE_BAT(, 6928) +HANDLE_BAT(, 6929) +HANDLE_BAT(, 6930) +HANDLE_BAT(, 6931) +HANDLE_BAT(, 6932) +HANDLE_BAT(, 6933) +HANDLE_BAT(, 6934) +HANDLE_BAT(, 6935) +HANDLE_BAT(, 6936) +HANDLE_BAT(, 6937) +HANDLE_BAT(, 6938) +HANDLE_BAT(, 6939) +HANDLE_BAT(, 6940) +HANDLE_BAT(, 6941) +HANDLE_BAT(, 6942) +HANDLE_BAT(, 6943) +HANDLE_BAT(, 6944) +HANDLE_BAT(, 6945) +HANDLE_BAT(, 6946) +HANDLE_BAT(, 6947) +HANDLE_BAT(, 6948) +HANDLE_BAT(, 6949) +HANDLE_BAT(, 6950) +HANDLE_BAT(, 6951) +HANDLE_BAT(, 6952) +HANDLE_BAT(, 6953) +HANDLE_BAT(, 6954) +HANDLE_BAT(, 6955) +HANDLE_BAT(, 6956) +HANDLE_BAT(, 6957) +HANDLE_BAT(, 6958) +HANDLE_BAT(, 6959) +HANDLE_BAT(, 6960) +HANDLE_BAT(, 6961) +HANDLE_BAT(, 6962) +HANDLE_BAT(, 6963) +HANDLE_BAT(, 6964) +HANDLE_BAT(, 6965) +HANDLE_BAT(, 6966) +HANDLE_BAT(, 6967) +HANDLE_BAT(, 6968) +HANDLE_BAT(, 6969) +HANDLE_BAT(, 6970) +HANDLE_BAT(, 6971) +HANDLE_BAT(, 6972) +HANDLE_BAT(, 6973) +HANDLE_BAT(, 6974) +HANDLE_BAT(, 6975) +HANDLE_BAT(, 6976) +HANDLE_BAT(, 6977) +HANDLE_BAT(, 6978) +HANDLE_BAT(, 6979) +HANDLE_BAT(, 6980) +HANDLE_BAT(, 6981) +HANDLE_BAT(, 6982) +HANDLE_BAT(, 6983) +HANDLE_BAT(, 6984) +HANDLE_BAT(, 6985) +HANDLE_BAT(, 6986) +HANDLE_BAT(, 6987) +HANDLE_BAT(, 6988) +HANDLE_BAT(, 6989) +HANDLE_BAT(, 6990) +HANDLE_BAT(, 6991) +HANDLE_BAT(, 6992) +HANDLE_BAT(, 6993) +HANDLE_BAT(, 6994) +HANDLE_BAT(, 6995) +HANDLE_BAT(, 6996) +HANDLE_BAT(, 6997) +HANDLE_BAT(, 6998) +HANDLE_BAT(, 6999) +HANDLE_BAT(, 7000) +HANDLE_BAT(, 7001) +HANDLE_BAT(, 7002) +HANDLE_BAT(, 7003) +HANDLE_BAT(, 7004) +HANDLE_BAT(, 7005) +HANDLE_BAT(, 7006) +HANDLE_BAT(, 7007) +HANDLE_BAT(, 7008) +HANDLE_BAT(, 7009) +HANDLE_BAT(, 7010) +HANDLE_BAT(, 7011) +HANDLE_BAT(, 7012) +HANDLE_BAT(, 7013) +HANDLE_BAT(, 7014) +HANDLE_BAT(, 7015) +HANDLE_BAT(, 7016) +HANDLE_BAT(, 7017) +HANDLE_BAT(, 7018) +HANDLE_BAT(, 7019) +HANDLE_BAT(, 7020) +HANDLE_BAT(, 7021) +HANDLE_BAT(, 7022) +HANDLE_BAT(, 7023) +HANDLE_BAT(, 7024) +HANDLE_BAT(, 7025) +HANDLE_BAT(, 7026) +HANDLE_BAT(, 7027) +HANDLE_BAT(, 7028) +HANDLE_BAT(, 7029) +HANDLE_BAT(, 7030) +HANDLE_BAT(, 7031) +HANDLE_BAT(, 7032) +HANDLE_BAT(, 7033) +HANDLE_BAT(, 7034) +HANDLE_BAT(, 7035) +HANDLE_BAT(, 7036) +HANDLE_BAT(, 7037) +HANDLE_BAT(, 7038) +HANDLE_BAT(, 7039) +HANDLE_BAT(, 7040) +HANDLE_BAT(, 7041) +HANDLE_BAT(, 7042) +HANDLE_BAT(, 7043) +HANDLE_BAT(, 7044) +HANDLE_BAT(, 7045) +HANDLE_BAT(, 7046) +HANDLE_BAT(, 7047) +HANDLE_BAT(, 7048) +HANDLE_BAT(, 7049) +HANDLE_BAT(, 7050) +HANDLE_BAT(, 7051) +HANDLE_BAT(, 7052) +HANDLE_BAT(, 7053) +HANDLE_BAT(, 7054) +HANDLE_BAT(, 7055) +HANDLE_BAT(, 7056) +HANDLE_BAT(, 7057) +HANDLE_BAT(, 7058) +HANDLE_BAT(, 7059) +HANDLE_BAT(, 7060) +HANDLE_BAT(, 7061) +HANDLE_BAT(, 7062) +HANDLE_BAT(, 7063) +HANDLE_BAT(, 7064) +HANDLE_BAT(, 7065) +HANDLE_BAT(, 7066) +HANDLE_BAT(, 7067) +HANDLE_BAT(, 7068) +HANDLE_BAT(, 7069) +HANDLE_BAT(, 7070) +HANDLE_BAT(, 7071) +HANDLE_BAT(, 7072) +HANDLE_BAT(, 7073) +HANDLE_BAT(, 7074) +HANDLE_BAT(, 7075) +HANDLE_BAT(, 7076) +HANDLE_BAT(, 7077) +HANDLE_BAT(, 7078) +HANDLE_BAT(, 7079) +HANDLE_BAT(, 7080) +HANDLE_BAT(, 7081) +HANDLE_BAT(, 7082) +HANDLE_BAT(, 7083) +HANDLE_BAT(, 7084) +HANDLE_BAT(, 7085) +HANDLE_BAT(, 7086) +HANDLE_BAT(, 7087) +HANDLE_BAT(, 7088) +HANDLE_BAT(, 7089) +HANDLE_BAT(, 7090) +HANDLE_BAT(, 7091) +HANDLE_BAT(, 7092) +HANDLE_BAT(, 7093) +HANDLE_BAT(, 7094) +HANDLE_BAT(, 7095) +HANDLE_BAT(, 7096) +HANDLE_BAT(, 7097) +HANDLE_BAT(, 7098) +HANDLE_BAT(, 7099) +HANDLE_BAT(, 7100) +HANDLE_BAT(, 7101) +HANDLE_BAT(, 7102) +HANDLE_BAT(, 7103) +HANDLE_BAT(, 7104) +HANDLE_BAT(, 7105) +HANDLE_BAT(, 7106) +HANDLE_BAT(, 7107) +HANDLE_BAT(, 7108) +HANDLE_BAT(, 7109) +HANDLE_BAT(, 7110) +HANDLE_BAT(, 7111) +HANDLE_BAT(, 7112) +HANDLE_BAT(, 7113) +HANDLE_BAT(, 7114) +HANDLE_BAT(, 7115) +HANDLE_BAT(, 7116) +HANDLE_BAT(, 7117) +HANDLE_BAT(, 7118) +HANDLE_BAT(, 7119) +HANDLE_BAT(, 7120) +HANDLE_BAT(, 7121) +HANDLE_BAT(, 7122) +HANDLE_BAT(, 7123) +HANDLE_BAT(, 7124) +HANDLE_BAT(, 7125) +HANDLE_BAT(, 7126) +HANDLE_BAT(, 7127) +HANDLE_BAT(, 7128) +HANDLE_BAT(, 7129) +HANDLE_BAT(, 7130) +HANDLE_BAT(, 7131) +HANDLE_BAT(, 7132) +HANDLE_BAT(, 7133) +HANDLE_BAT(, 7134) +HANDLE_BAT(, 7135) +HANDLE_BAT(, 7136) +HANDLE_BAT(, 7137) +HANDLE_BAT(, 7138) +HANDLE_BAT(, 7139) +HANDLE_BAT(, 7140) +HANDLE_BAT(, 7141) +HANDLE_BAT(, 7142) +HANDLE_BAT(, 7143) +HANDLE_BAT(, 7144) +HANDLE_BAT(, 7145) +HANDLE_BAT(, 7146) +HANDLE_BAT(, 7147) +HANDLE_BAT(, 7148) +HANDLE_BAT(, 7149) +HANDLE_BAT(, 7150) +HANDLE_BAT(, 7151) +HANDLE_BAT(, 7152) +HANDLE_BAT(, 7153) +HANDLE_BAT(, 7154) +HANDLE_BAT(, 7155) +HANDLE_BAT(, 7156) +HANDLE_BAT(, 7157) +HANDLE_BAT(, 7158) +HANDLE_BAT(, 7159) +HANDLE_BAT(, 7160) +HANDLE_BAT(, 7161) +HANDLE_BAT(, 7162) +HANDLE_BAT(, 7163) +HANDLE_BAT(, 7164) +HANDLE_BAT(, 7165) +HANDLE_BAT(, 7166) +HANDLE_BAT(, 7167) +HANDLE_BAT(, 7168) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 6145) +HANDLE_BAT(APINT_TYPE_PREFIX, 6146) +HANDLE_BAT(APINT_TYPE_PREFIX, 6147) +HANDLE_BAT(APINT_TYPE_PREFIX, 6148) +HANDLE_BAT(APINT_TYPE_PREFIX, 6149) +HANDLE_BAT(APINT_TYPE_PREFIX, 6150) +HANDLE_BAT(APINT_TYPE_PREFIX, 6151) +HANDLE_BAT(APINT_TYPE_PREFIX, 6152) +HANDLE_BAT(APINT_TYPE_PREFIX, 6153) +HANDLE_BAT(APINT_TYPE_PREFIX, 6154) +HANDLE_BAT(APINT_TYPE_PREFIX, 6155) +HANDLE_BAT(APINT_TYPE_PREFIX, 6156) +HANDLE_BAT(APINT_TYPE_PREFIX, 6157) +HANDLE_BAT(APINT_TYPE_PREFIX, 6158) +HANDLE_BAT(APINT_TYPE_PREFIX, 6159) +HANDLE_BAT(APINT_TYPE_PREFIX, 6160) +HANDLE_BAT(APINT_TYPE_PREFIX, 6161) +HANDLE_BAT(APINT_TYPE_PREFIX, 6162) +HANDLE_BAT(APINT_TYPE_PREFIX, 6163) +HANDLE_BAT(APINT_TYPE_PREFIX, 6164) +HANDLE_BAT(APINT_TYPE_PREFIX, 6165) +HANDLE_BAT(APINT_TYPE_PREFIX, 6166) +HANDLE_BAT(APINT_TYPE_PREFIX, 6167) +HANDLE_BAT(APINT_TYPE_PREFIX, 6168) +HANDLE_BAT(APINT_TYPE_PREFIX, 6169) +HANDLE_BAT(APINT_TYPE_PREFIX, 6170) +HANDLE_BAT(APINT_TYPE_PREFIX, 6171) +HANDLE_BAT(APINT_TYPE_PREFIX, 6172) +HANDLE_BAT(APINT_TYPE_PREFIX, 6173) +HANDLE_BAT(APINT_TYPE_PREFIX, 6174) +HANDLE_BAT(APINT_TYPE_PREFIX, 6175) +HANDLE_BAT(APINT_TYPE_PREFIX, 6176) +HANDLE_BAT(APINT_TYPE_PREFIX, 6177) +HANDLE_BAT(APINT_TYPE_PREFIX, 6178) +HANDLE_BAT(APINT_TYPE_PREFIX, 6179) +HANDLE_BAT(APINT_TYPE_PREFIX, 6180) +HANDLE_BAT(APINT_TYPE_PREFIX, 6181) +HANDLE_BAT(APINT_TYPE_PREFIX, 6182) +HANDLE_BAT(APINT_TYPE_PREFIX, 6183) +HANDLE_BAT(APINT_TYPE_PREFIX, 6184) +HANDLE_BAT(APINT_TYPE_PREFIX, 6185) +HANDLE_BAT(APINT_TYPE_PREFIX, 6186) +HANDLE_BAT(APINT_TYPE_PREFIX, 6187) +HANDLE_BAT(APINT_TYPE_PREFIX, 6188) +HANDLE_BAT(APINT_TYPE_PREFIX, 6189) +HANDLE_BAT(APINT_TYPE_PREFIX, 6190) +HANDLE_BAT(APINT_TYPE_PREFIX, 6191) +HANDLE_BAT(APINT_TYPE_PREFIX, 6192) +HANDLE_BAT(APINT_TYPE_PREFIX, 6193) +HANDLE_BAT(APINT_TYPE_PREFIX, 6194) +HANDLE_BAT(APINT_TYPE_PREFIX, 6195) +HANDLE_BAT(APINT_TYPE_PREFIX, 6196) +HANDLE_BAT(APINT_TYPE_PREFIX, 6197) +HANDLE_BAT(APINT_TYPE_PREFIX, 6198) +HANDLE_BAT(APINT_TYPE_PREFIX, 6199) +HANDLE_BAT(APINT_TYPE_PREFIX, 6200) +HANDLE_BAT(APINT_TYPE_PREFIX, 6201) +HANDLE_BAT(APINT_TYPE_PREFIX, 6202) +HANDLE_BAT(APINT_TYPE_PREFIX, 6203) +HANDLE_BAT(APINT_TYPE_PREFIX, 6204) +HANDLE_BAT(APINT_TYPE_PREFIX, 6205) +HANDLE_BAT(APINT_TYPE_PREFIX, 6206) +HANDLE_BAT(APINT_TYPE_PREFIX, 6207) +HANDLE_BAT(APINT_TYPE_PREFIX, 6208) +HANDLE_BAT(APINT_TYPE_PREFIX, 6209) +HANDLE_BAT(APINT_TYPE_PREFIX, 6210) +HANDLE_BAT(APINT_TYPE_PREFIX, 6211) +HANDLE_BAT(APINT_TYPE_PREFIX, 6212) +HANDLE_BAT(APINT_TYPE_PREFIX, 6213) +HANDLE_BAT(APINT_TYPE_PREFIX, 6214) +HANDLE_BAT(APINT_TYPE_PREFIX, 6215) +HANDLE_BAT(APINT_TYPE_PREFIX, 6216) +HANDLE_BAT(APINT_TYPE_PREFIX, 6217) +HANDLE_BAT(APINT_TYPE_PREFIX, 6218) +HANDLE_BAT(APINT_TYPE_PREFIX, 6219) +HANDLE_BAT(APINT_TYPE_PREFIX, 6220) +HANDLE_BAT(APINT_TYPE_PREFIX, 6221) +HANDLE_BAT(APINT_TYPE_PREFIX, 6222) +HANDLE_BAT(APINT_TYPE_PREFIX, 6223) +HANDLE_BAT(APINT_TYPE_PREFIX, 6224) +HANDLE_BAT(APINT_TYPE_PREFIX, 6225) +HANDLE_BAT(APINT_TYPE_PREFIX, 6226) +HANDLE_BAT(APINT_TYPE_PREFIX, 6227) +HANDLE_BAT(APINT_TYPE_PREFIX, 6228) +HANDLE_BAT(APINT_TYPE_PREFIX, 6229) +HANDLE_BAT(APINT_TYPE_PREFIX, 6230) +HANDLE_BAT(APINT_TYPE_PREFIX, 6231) +HANDLE_BAT(APINT_TYPE_PREFIX, 6232) +HANDLE_BAT(APINT_TYPE_PREFIX, 6233) +HANDLE_BAT(APINT_TYPE_PREFIX, 6234) +HANDLE_BAT(APINT_TYPE_PREFIX, 6235) +HANDLE_BAT(APINT_TYPE_PREFIX, 6236) +HANDLE_BAT(APINT_TYPE_PREFIX, 6237) +HANDLE_BAT(APINT_TYPE_PREFIX, 6238) +HANDLE_BAT(APINT_TYPE_PREFIX, 6239) +HANDLE_BAT(APINT_TYPE_PREFIX, 6240) +HANDLE_BAT(APINT_TYPE_PREFIX, 6241) +HANDLE_BAT(APINT_TYPE_PREFIX, 6242) +HANDLE_BAT(APINT_TYPE_PREFIX, 6243) +HANDLE_BAT(APINT_TYPE_PREFIX, 6244) +HANDLE_BAT(APINT_TYPE_PREFIX, 6245) +HANDLE_BAT(APINT_TYPE_PREFIX, 6246) +HANDLE_BAT(APINT_TYPE_PREFIX, 6247) +HANDLE_BAT(APINT_TYPE_PREFIX, 6248) +HANDLE_BAT(APINT_TYPE_PREFIX, 6249) +HANDLE_BAT(APINT_TYPE_PREFIX, 6250) +HANDLE_BAT(APINT_TYPE_PREFIX, 6251) +HANDLE_BAT(APINT_TYPE_PREFIX, 6252) +HANDLE_BAT(APINT_TYPE_PREFIX, 6253) +HANDLE_BAT(APINT_TYPE_PREFIX, 6254) +HANDLE_BAT(APINT_TYPE_PREFIX, 6255) +HANDLE_BAT(APINT_TYPE_PREFIX, 6256) +HANDLE_BAT(APINT_TYPE_PREFIX, 6257) +HANDLE_BAT(APINT_TYPE_PREFIX, 6258) +HANDLE_BAT(APINT_TYPE_PREFIX, 6259) +HANDLE_BAT(APINT_TYPE_PREFIX, 6260) +HANDLE_BAT(APINT_TYPE_PREFIX, 6261) +HANDLE_BAT(APINT_TYPE_PREFIX, 6262) +HANDLE_BAT(APINT_TYPE_PREFIX, 6263) +HANDLE_BAT(APINT_TYPE_PREFIX, 6264) +HANDLE_BAT(APINT_TYPE_PREFIX, 6265) +HANDLE_BAT(APINT_TYPE_PREFIX, 6266) +HANDLE_BAT(APINT_TYPE_PREFIX, 6267) +HANDLE_BAT(APINT_TYPE_PREFIX, 6268) +HANDLE_BAT(APINT_TYPE_PREFIX, 6269) +HANDLE_BAT(APINT_TYPE_PREFIX, 6270) +HANDLE_BAT(APINT_TYPE_PREFIX, 6271) +HANDLE_BAT(APINT_TYPE_PREFIX, 6272) +HANDLE_BAT(APINT_TYPE_PREFIX, 6273) +HANDLE_BAT(APINT_TYPE_PREFIX, 6274) +HANDLE_BAT(APINT_TYPE_PREFIX, 6275) +HANDLE_BAT(APINT_TYPE_PREFIX, 6276) +HANDLE_BAT(APINT_TYPE_PREFIX, 6277) +HANDLE_BAT(APINT_TYPE_PREFIX, 6278) +HANDLE_BAT(APINT_TYPE_PREFIX, 6279) +HANDLE_BAT(APINT_TYPE_PREFIX, 6280) +HANDLE_BAT(APINT_TYPE_PREFIX, 6281) +HANDLE_BAT(APINT_TYPE_PREFIX, 6282) +HANDLE_BAT(APINT_TYPE_PREFIX, 6283) +HANDLE_BAT(APINT_TYPE_PREFIX, 6284) +HANDLE_BAT(APINT_TYPE_PREFIX, 6285) +HANDLE_BAT(APINT_TYPE_PREFIX, 6286) +HANDLE_BAT(APINT_TYPE_PREFIX, 6287) +HANDLE_BAT(APINT_TYPE_PREFIX, 6288) +HANDLE_BAT(APINT_TYPE_PREFIX, 6289) +HANDLE_BAT(APINT_TYPE_PREFIX, 6290) +HANDLE_BAT(APINT_TYPE_PREFIX, 6291) +HANDLE_BAT(APINT_TYPE_PREFIX, 6292) +HANDLE_BAT(APINT_TYPE_PREFIX, 6293) +HANDLE_BAT(APINT_TYPE_PREFIX, 6294) +HANDLE_BAT(APINT_TYPE_PREFIX, 6295) +HANDLE_BAT(APINT_TYPE_PREFIX, 6296) +HANDLE_BAT(APINT_TYPE_PREFIX, 6297) +HANDLE_BAT(APINT_TYPE_PREFIX, 6298) +HANDLE_BAT(APINT_TYPE_PREFIX, 6299) +HANDLE_BAT(APINT_TYPE_PREFIX, 6300) +HANDLE_BAT(APINT_TYPE_PREFIX, 6301) +HANDLE_BAT(APINT_TYPE_PREFIX, 6302) +HANDLE_BAT(APINT_TYPE_PREFIX, 6303) +HANDLE_BAT(APINT_TYPE_PREFIX, 6304) +HANDLE_BAT(APINT_TYPE_PREFIX, 6305) +HANDLE_BAT(APINT_TYPE_PREFIX, 6306) +HANDLE_BAT(APINT_TYPE_PREFIX, 6307) +HANDLE_BAT(APINT_TYPE_PREFIX, 6308) +HANDLE_BAT(APINT_TYPE_PREFIX, 6309) +HANDLE_BAT(APINT_TYPE_PREFIX, 6310) +HANDLE_BAT(APINT_TYPE_PREFIX, 6311) +HANDLE_BAT(APINT_TYPE_PREFIX, 6312) +HANDLE_BAT(APINT_TYPE_PREFIX, 6313) +HANDLE_BAT(APINT_TYPE_PREFIX, 6314) +HANDLE_BAT(APINT_TYPE_PREFIX, 6315) +HANDLE_BAT(APINT_TYPE_PREFIX, 6316) +HANDLE_BAT(APINT_TYPE_PREFIX, 6317) +HANDLE_BAT(APINT_TYPE_PREFIX, 6318) +HANDLE_BAT(APINT_TYPE_PREFIX, 6319) +HANDLE_BAT(APINT_TYPE_PREFIX, 6320) +HANDLE_BAT(APINT_TYPE_PREFIX, 6321) +HANDLE_BAT(APINT_TYPE_PREFIX, 6322) +HANDLE_BAT(APINT_TYPE_PREFIX, 6323) +HANDLE_BAT(APINT_TYPE_PREFIX, 6324) +HANDLE_BAT(APINT_TYPE_PREFIX, 6325) +HANDLE_BAT(APINT_TYPE_PREFIX, 6326) +HANDLE_BAT(APINT_TYPE_PREFIX, 6327) +HANDLE_BAT(APINT_TYPE_PREFIX, 6328) +HANDLE_BAT(APINT_TYPE_PREFIX, 6329) +HANDLE_BAT(APINT_TYPE_PREFIX, 6330) +HANDLE_BAT(APINT_TYPE_PREFIX, 6331) +HANDLE_BAT(APINT_TYPE_PREFIX, 6332) +HANDLE_BAT(APINT_TYPE_PREFIX, 6333) +HANDLE_BAT(APINT_TYPE_PREFIX, 6334) +HANDLE_BAT(APINT_TYPE_PREFIX, 6335) +HANDLE_BAT(APINT_TYPE_PREFIX, 6336) +HANDLE_BAT(APINT_TYPE_PREFIX, 6337) +HANDLE_BAT(APINT_TYPE_PREFIX, 6338) +HANDLE_BAT(APINT_TYPE_PREFIX, 6339) +HANDLE_BAT(APINT_TYPE_PREFIX, 6340) +HANDLE_BAT(APINT_TYPE_PREFIX, 6341) +HANDLE_BAT(APINT_TYPE_PREFIX, 6342) +HANDLE_BAT(APINT_TYPE_PREFIX, 6343) +HANDLE_BAT(APINT_TYPE_PREFIX, 6344) +HANDLE_BAT(APINT_TYPE_PREFIX, 6345) +HANDLE_BAT(APINT_TYPE_PREFIX, 6346) +HANDLE_BAT(APINT_TYPE_PREFIX, 6347) +HANDLE_BAT(APINT_TYPE_PREFIX, 6348) +HANDLE_BAT(APINT_TYPE_PREFIX, 6349) +HANDLE_BAT(APINT_TYPE_PREFIX, 6350) +HANDLE_BAT(APINT_TYPE_PREFIX, 6351) +HANDLE_BAT(APINT_TYPE_PREFIX, 6352) +HANDLE_BAT(APINT_TYPE_PREFIX, 6353) +HANDLE_BAT(APINT_TYPE_PREFIX, 6354) +HANDLE_BAT(APINT_TYPE_PREFIX, 6355) +HANDLE_BAT(APINT_TYPE_PREFIX, 6356) +HANDLE_BAT(APINT_TYPE_PREFIX, 6357) +HANDLE_BAT(APINT_TYPE_PREFIX, 6358) +HANDLE_BAT(APINT_TYPE_PREFIX, 6359) +HANDLE_BAT(APINT_TYPE_PREFIX, 6360) +HANDLE_BAT(APINT_TYPE_PREFIX, 6361) +HANDLE_BAT(APINT_TYPE_PREFIX, 6362) +HANDLE_BAT(APINT_TYPE_PREFIX, 6363) +HANDLE_BAT(APINT_TYPE_PREFIX, 6364) +HANDLE_BAT(APINT_TYPE_PREFIX, 6365) +HANDLE_BAT(APINT_TYPE_PREFIX, 6366) +HANDLE_BAT(APINT_TYPE_PREFIX, 6367) +HANDLE_BAT(APINT_TYPE_PREFIX, 6368) +HANDLE_BAT(APINT_TYPE_PREFIX, 6369) +HANDLE_BAT(APINT_TYPE_PREFIX, 6370) +HANDLE_BAT(APINT_TYPE_PREFIX, 6371) +HANDLE_BAT(APINT_TYPE_PREFIX, 6372) +HANDLE_BAT(APINT_TYPE_PREFIX, 6373) +HANDLE_BAT(APINT_TYPE_PREFIX, 6374) +HANDLE_BAT(APINT_TYPE_PREFIX, 6375) +HANDLE_BAT(APINT_TYPE_PREFIX, 6376) +HANDLE_BAT(APINT_TYPE_PREFIX, 6377) +HANDLE_BAT(APINT_TYPE_PREFIX, 6378) +HANDLE_BAT(APINT_TYPE_PREFIX, 6379) +HANDLE_BAT(APINT_TYPE_PREFIX, 6380) +HANDLE_BAT(APINT_TYPE_PREFIX, 6381) +HANDLE_BAT(APINT_TYPE_PREFIX, 6382) +HANDLE_BAT(APINT_TYPE_PREFIX, 6383) +HANDLE_BAT(APINT_TYPE_PREFIX, 6384) +HANDLE_BAT(APINT_TYPE_PREFIX, 6385) +HANDLE_BAT(APINT_TYPE_PREFIX, 6386) +HANDLE_BAT(APINT_TYPE_PREFIX, 6387) +HANDLE_BAT(APINT_TYPE_PREFIX, 6388) +HANDLE_BAT(APINT_TYPE_PREFIX, 6389) +HANDLE_BAT(APINT_TYPE_PREFIX, 6390) +HANDLE_BAT(APINT_TYPE_PREFIX, 6391) +HANDLE_BAT(APINT_TYPE_PREFIX, 6392) +HANDLE_BAT(APINT_TYPE_PREFIX, 6393) +HANDLE_BAT(APINT_TYPE_PREFIX, 6394) +HANDLE_BAT(APINT_TYPE_PREFIX, 6395) +HANDLE_BAT(APINT_TYPE_PREFIX, 6396) +HANDLE_BAT(APINT_TYPE_PREFIX, 6397) +HANDLE_BAT(APINT_TYPE_PREFIX, 6398) +HANDLE_BAT(APINT_TYPE_PREFIX, 6399) +HANDLE_BAT(APINT_TYPE_PREFIX, 6400) +HANDLE_BAT(APINT_TYPE_PREFIX, 6401) +HANDLE_BAT(APINT_TYPE_PREFIX, 6402) +HANDLE_BAT(APINT_TYPE_PREFIX, 6403) +HANDLE_BAT(APINT_TYPE_PREFIX, 6404) +HANDLE_BAT(APINT_TYPE_PREFIX, 6405) +HANDLE_BAT(APINT_TYPE_PREFIX, 6406) +HANDLE_BAT(APINT_TYPE_PREFIX, 6407) +HANDLE_BAT(APINT_TYPE_PREFIX, 6408) +HANDLE_BAT(APINT_TYPE_PREFIX, 6409) +HANDLE_BAT(APINT_TYPE_PREFIX, 6410) +HANDLE_BAT(APINT_TYPE_PREFIX, 6411) +HANDLE_BAT(APINT_TYPE_PREFIX, 6412) +HANDLE_BAT(APINT_TYPE_PREFIX, 6413) +HANDLE_BAT(APINT_TYPE_PREFIX, 6414) +HANDLE_BAT(APINT_TYPE_PREFIX, 6415) +HANDLE_BAT(APINT_TYPE_PREFIX, 6416) +HANDLE_BAT(APINT_TYPE_PREFIX, 6417) +HANDLE_BAT(APINT_TYPE_PREFIX, 6418) +HANDLE_BAT(APINT_TYPE_PREFIX, 6419) +HANDLE_BAT(APINT_TYPE_PREFIX, 6420) +HANDLE_BAT(APINT_TYPE_PREFIX, 6421) +HANDLE_BAT(APINT_TYPE_PREFIX, 6422) +HANDLE_BAT(APINT_TYPE_PREFIX, 6423) +HANDLE_BAT(APINT_TYPE_PREFIX, 6424) +HANDLE_BAT(APINT_TYPE_PREFIX, 6425) +HANDLE_BAT(APINT_TYPE_PREFIX, 6426) +HANDLE_BAT(APINT_TYPE_PREFIX, 6427) +HANDLE_BAT(APINT_TYPE_PREFIX, 6428) +HANDLE_BAT(APINT_TYPE_PREFIX, 6429) +HANDLE_BAT(APINT_TYPE_PREFIX, 6430) +HANDLE_BAT(APINT_TYPE_PREFIX, 6431) +HANDLE_BAT(APINT_TYPE_PREFIX, 6432) +HANDLE_BAT(APINT_TYPE_PREFIX, 6433) +HANDLE_BAT(APINT_TYPE_PREFIX, 6434) +HANDLE_BAT(APINT_TYPE_PREFIX, 6435) +HANDLE_BAT(APINT_TYPE_PREFIX, 6436) +HANDLE_BAT(APINT_TYPE_PREFIX, 6437) +HANDLE_BAT(APINT_TYPE_PREFIX, 6438) +HANDLE_BAT(APINT_TYPE_PREFIX, 6439) +HANDLE_BAT(APINT_TYPE_PREFIX, 6440) +HANDLE_BAT(APINT_TYPE_PREFIX, 6441) +HANDLE_BAT(APINT_TYPE_PREFIX, 6442) +HANDLE_BAT(APINT_TYPE_PREFIX, 6443) +HANDLE_BAT(APINT_TYPE_PREFIX, 6444) +HANDLE_BAT(APINT_TYPE_PREFIX, 6445) +HANDLE_BAT(APINT_TYPE_PREFIX, 6446) +HANDLE_BAT(APINT_TYPE_PREFIX, 6447) +HANDLE_BAT(APINT_TYPE_PREFIX, 6448) +HANDLE_BAT(APINT_TYPE_PREFIX, 6449) +HANDLE_BAT(APINT_TYPE_PREFIX, 6450) +HANDLE_BAT(APINT_TYPE_PREFIX, 6451) +HANDLE_BAT(APINT_TYPE_PREFIX, 6452) +HANDLE_BAT(APINT_TYPE_PREFIX, 6453) +HANDLE_BAT(APINT_TYPE_PREFIX, 6454) +HANDLE_BAT(APINT_TYPE_PREFIX, 6455) +HANDLE_BAT(APINT_TYPE_PREFIX, 6456) +HANDLE_BAT(APINT_TYPE_PREFIX, 6457) +HANDLE_BAT(APINT_TYPE_PREFIX, 6458) +HANDLE_BAT(APINT_TYPE_PREFIX, 6459) +HANDLE_BAT(APINT_TYPE_PREFIX, 6460) +HANDLE_BAT(APINT_TYPE_PREFIX, 6461) +HANDLE_BAT(APINT_TYPE_PREFIX, 6462) +HANDLE_BAT(APINT_TYPE_PREFIX, 6463) +HANDLE_BAT(APINT_TYPE_PREFIX, 6464) +HANDLE_BAT(APINT_TYPE_PREFIX, 6465) +HANDLE_BAT(APINT_TYPE_PREFIX, 6466) +HANDLE_BAT(APINT_TYPE_PREFIX, 6467) +HANDLE_BAT(APINT_TYPE_PREFIX, 6468) +HANDLE_BAT(APINT_TYPE_PREFIX, 6469) +HANDLE_BAT(APINT_TYPE_PREFIX, 6470) +HANDLE_BAT(APINT_TYPE_PREFIX, 6471) +HANDLE_BAT(APINT_TYPE_PREFIX, 6472) +HANDLE_BAT(APINT_TYPE_PREFIX, 6473) +HANDLE_BAT(APINT_TYPE_PREFIX, 6474) +HANDLE_BAT(APINT_TYPE_PREFIX, 6475) +HANDLE_BAT(APINT_TYPE_PREFIX, 6476) +HANDLE_BAT(APINT_TYPE_PREFIX, 6477) +HANDLE_BAT(APINT_TYPE_PREFIX, 6478) +HANDLE_BAT(APINT_TYPE_PREFIX, 6479) +HANDLE_BAT(APINT_TYPE_PREFIX, 6480) +HANDLE_BAT(APINT_TYPE_PREFIX, 6481) +HANDLE_BAT(APINT_TYPE_PREFIX, 6482) +HANDLE_BAT(APINT_TYPE_PREFIX, 6483) +HANDLE_BAT(APINT_TYPE_PREFIX, 6484) +HANDLE_BAT(APINT_TYPE_PREFIX, 6485) +HANDLE_BAT(APINT_TYPE_PREFIX, 6486) +HANDLE_BAT(APINT_TYPE_PREFIX, 6487) +HANDLE_BAT(APINT_TYPE_PREFIX, 6488) +HANDLE_BAT(APINT_TYPE_PREFIX, 6489) +HANDLE_BAT(APINT_TYPE_PREFIX, 6490) +HANDLE_BAT(APINT_TYPE_PREFIX, 6491) +HANDLE_BAT(APINT_TYPE_PREFIX, 6492) +HANDLE_BAT(APINT_TYPE_PREFIX, 6493) +HANDLE_BAT(APINT_TYPE_PREFIX, 6494) +HANDLE_BAT(APINT_TYPE_PREFIX, 6495) +HANDLE_BAT(APINT_TYPE_PREFIX, 6496) +HANDLE_BAT(APINT_TYPE_PREFIX, 6497) +HANDLE_BAT(APINT_TYPE_PREFIX, 6498) +HANDLE_BAT(APINT_TYPE_PREFIX, 6499) +HANDLE_BAT(APINT_TYPE_PREFIX, 6500) +HANDLE_BAT(APINT_TYPE_PREFIX, 6501) +HANDLE_BAT(APINT_TYPE_PREFIX, 6502) +HANDLE_BAT(APINT_TYPE_PREFIX, 6503) +HANDLE_BAT(APINT_TYPE_PREFIX, 6504) +HANDLE_BAT(APINT_TYPE_PREFIX, 6505) +HANDLE_BAT(APINT_TYPE_PREFIX, 6506) +HANDLE_BAT(APINT_TYPE_PREFIX, 6507) +HANDLE_BAT(APINT_TYPE_PREFIX, 6508) +HANDLE_BAT(APINT_TYPE_PREFIX, 6509) +HANDLE_BAT(APINT_TYPE_PREFIX, 6510) +HANDLE_BAT(APINT_TYPE_PREFIX, 6511) +HANDLE_BAT(APINT_TYPE_PREFIX, 6512) +HANDLE_BAT(APINT_TYPE_PREFIX, 6513) +HANDLE_BAT(APINT_TYPE_PREFIX, 6514) +HANDLE_BAT(APINT_TYPE_PREFIX, 6515) +HANDLE_BAT(APINT_TYPE_PREFIX, 6516) +HANDLE_BAT(APINT_TYPE_PREFIX, 6517) +HANDLE_BAT(APINT_TYPE_PREFIX, 6518) +HANDLE_BAT(APINT_TYPE_PREFIX, 6519) +HANDLE_BAT(APINT_TYPE_PREFIX, 6520) +HANDLE_BAT(APINT_TYPE_PREFIX, 6521) +HANDLE_BAT(APINT_TYPE_PREFIX, 6522) +HANDLE_BAT(APINT_TYPE_PREFIX, 6523) +HANDLE_BAT(APINT_TYPE_PREFIX, 6524) +HANDLE_BAT(APINT_TYPE_PREFIX, 6525) +HANDLE_BAT(APINT_TYPE_PREFIX, 6526) +HANDLE_BAT(APINT_TYPE_PREFIX, 6527) +HANDLE_BAT(APINT_TYPE_PREFIX, 6528) +HANDLE_BAT(APINT_TYPE_PREFIX, 6529) +HANDLE_BAT(APINT_TYPE_PREFIX, 6530) +HANDLE_BAT(APINT_TYPE_PREFIX, 6531) +HANDLE_BAT(APINT_TYPE_PREFIX, 6532) +HANDLE_BAT(APINT_TYPE_PREFIX, 6533) +HANDLE_BAT(APINT_TYPE_PREFIX, 6534) +HANDLE_BAT(APINT_TYPE_PREFIX, 6535) +HANDLE_BAT(APINT_TYPE_PREFIX, 6536) +HANDLE_BAT(APINT_TYPE_PREFIX, 6537) +HANDLE_BAT(APINT_TYPE_PREFIX, 6538) +HANDLE_BAT(APINT_TYPE_PREFIX, 6539) +HANDLE_BAT(APINT_TYPE_PREFIX, 6540) +HANDLE_BAT(APINT_TYPE_PREFIX, 6541) +HANDLE_BAT(APINT_TYPE_PREFIX, 6542) +HANDLE_BAT(APINT_TYPE_PREFIX, 6543) +HANDLE_BAT(APINT_TYPE_PREFIX, 6544) +HANDLE_BAT(APINT_TYPE_PREFIX, 6545) +HANDLE_BAT(APINT_TYPE_PREFIX, 6546) +HANDLE_BAT(APINT_TYPE_PREFIX, 6547) +HANDLE_BAT(APINT_TYPE_PREFIX, 6548) +HANDLE_BAT(APINT_TYPE_PREFIX, 6549) +HANDLE_BAT(APINT_TYPE_PREFIX, 6550) +HANDLE_BAT(APINT_TYPE_PREFIX, 6551) +HANDLE_BAT(APINT_TYPE_PREFIX, 6552) +HANDLE_BAT(APINT_TYPE_PREFIX, 6553) +HANDLE_BAT(APINT_TYPE_PREFIX, 6554) +HANDLE_BAT(APINT_TYPE_PREFIX, 6555) +HANDLE_BAT(APINT_TYPE_PREFIX, 6556) +HANDLE_BAT(APINT_TYPE_PREFIX, 6557) +HANDLE_BAT(APINT_TYPE_PREFIX, 6558) +HANDLE_BAT(APINT_TYPE_PREFIX, 6559) +HANDLE_BAT(APINT_TYPE_PREFIX, 6560) +HANDLE_BAT(APINT_TYPE_PREFIX, 6561) +HANDLE_BAT(APINT_TYPE_PREFIX, 6562) +HANDLE_BAT(APINT_TYPE_PREFIX, 6563) +HANDLE_BAT(APINT_TYPE_PREFIX, 6564) +HANDLE_BAT(APINT_TYPE_PREFIX, 6565) +HANDLE_BAT(APINT_TYPE_PREFIX, 6566) +HANDLE_BAT(APINT_TYPE_PREFIX, 6567) +HANDLE_BAT(APINT_TYPE_PREFIX, 6568) +HANDLE_BAT(APINT_TYPE_PREFIX, 6569) +HANDLE_BAT(APINT_TYPE_PREFIX, 6570) +HANDLE_BAT(APINT_TYPE_PREFIX, 6571) +HANDLE_BAT(APINT_TYPE_PREFIX, 6572) +HANDLE_BAT(APINT_TYPE_PREFIX, 6573) +HANDLE_BAT(APINT_TYPE_PREFIX, 6574) +HANDLE_BAT(APINT_TYPE_PREFIX, 6575) +HANDLE_BAT(APINT_TYPE_PREFIX, 6576) +HANDLE_BAT(APINT_TYPE_PREFIX, 6577) +HANDLE_BAT(APINT_TYPE_PREFIX, 6578) +HANDLE_BAT(APINT_TYPE_PREFIX, 6579) +HANDLE_BAT(APINT_TYPE_PREFIX, 6580) +HANDLE_BAT(APINT_TYPE_PREFIX, 6581) +HANDLE_BAT(APINT_TYPE_PREFIX, 6582) +HANDLE_BAT(APINT_TYPE_PREFIX, 6583) +HANDLE_BAT(APINT_TYPE_PREFIX, 6584) +HANDLE_BAT(APINT_TYPE_PREFIX, 6585) +HANDLE_BAT(APINT_TYPE_PREFIX, 6586) +HANDLE_BAT(APINT_TYPE_PREFIX, 6587) +HANDLE_BAT(APINT_TYPE_PREFIX, 6588) +HANDLE_BAT(APINT_TYPE_PREFIX, 6589) +HANDLE_BAT(APINT_TYPE_PREFIX, 6590) +HANDLE_BAT(APINT_TYPE_PREFIX, 6591) +HANDLE_BAT(APINT_TYPE_PREFIX, 6592) +HANDLE_BAT(APINT_TYPE_PREFIX, 6593) +HANDLE_BAT(APINT_TYPE_PREFIX, 6594) +HANDLE_BAT(APINT_TYPE_PREFIX, 6595) +HANDLE_BAT(APINT_TYPE_PREFIX, 6596) +HANDLE_BAT(APINT_TYPE_PREFIX, 6597) +HANDLE_BAT(APINT_TYPE_PREFIX, 6598) +HANDLE_BAT(APINT_TYPE_PREFIX, 6599) +HANDLE_BAT(APINT_TYPE_PREFIX, 6600) +HANDLE_BAT(APINT_TYPE_PREFIX, 6601) +HANDLE_BAT(APINT_TYPE_PREFIX, 6602) +HANDLE_BAT(APINT_TYPE_PREFIX, 6603) +HANDLE_BAT(APINT_TYPE_PREFIX, 6604) +HANDLE_BAT(APINT_TYPE_PREFIX, 6605) +HANDLE_BAT(APINT_TYPE_PREFIX, 6606) +HANDLE_BAT(APINT_TYPE_PREFIX, 6607) +HANDLE_BAT(APINT_TYPE_PREFIX, 6608) +HANDLE_BAT(APINT_TYPE_PREFIX, 6609) +HANDLE_BAT(APINT_TYPE_PREFIX, 6610) +HANDLE_BAT(APINT_TYPE_PREFIX, 6611) +HANDLE_BAT(APINT_TYPE_PREFIX, 6612) +HANDLE_BAT(APINT_TYPE_PREFIX, 6613) +HANDLE_BAT(APINT_TYPE_PREFIX, 6614) +HANDLE_BAT(APINT_TYPE_PREFIX, 6615) +HANDLE_BAT(APINT_TYPE_PREFIX, 6616) +HANDLE_BAT(APINT_TYPE_PREFIX, 6617) +HANDLE_BAT(APINT_TYPE_PREFIX, 6618) +HANDLE_BAT(APINT_TYPE_PREFIX, 6619) +HANDLE_BAT(APINT_TYPE_PREFIX, 6620) +HANDLE_BAT(APINT_TYPE_PREFIX, 6621) +HANDLE_BAT(APINT_TYPE_PREFIX, 6622) +HANDLE_BAT(APINT_TYPE_PREFIX, 6623) +HANDLE_BAT(APINT_TYPE_PREFIX, 6624) +HANDLE_BAT(APINT_TYPE_PREFIX, 6625) +HANDLE_BAT(APINT_TYPE_PREFIX, 6626) +HANDLE_BAT(APINT_TYPE_PREFIX, 6627) +HANDLE_BAT(APINT_TYPE_PREFIX, 6628) +HANDLE_BAT(APINT_TYPE_PREFIX, 6629) +HANDLE_BAT(APINT_TYPE_PREFIX, 6630) +HANDLE_BAT(APINT_TYPE_PREFIX, 6631) +HANDLE_BAT(APINT_TYPE_PREFIX, 6632) +HANDLE_BAT(APINT_TYPE_PREFIX, 6633) +HANDLE_BAT(APINT_TYPE_PREFIX, 6634) +HANDLE_BAT(APINT_TYPE_PREFIX, 6635) +HANDLE_BAT(APINT_TYPE_PREFIX, 6636) +HANDLE_BAT(APINT_TYPE_PREFIX, 6637) +HANDLE_BAT(APINT_TYPE_PREFIX, 6638) +HANDLE_BAT(APINT_TYPE_PREFIX, 6639) +HANDLE_BAT(APINT_TYPE_PREFIX, 6640) +HANDLE_BAT(APINT_TYPE_PREFIX, 6641) +HANDLE_BAT(APINT_TYPE_PREFIX, 6642) +HANDLE_BAT(APINT_TYPE_PREFIX, 6643) +HANDLE_BAT(APINT_TYPE_PREFIX, 6644) +HANDLE_BAT(APINT_TYPE_PREFIX, 6645) +HANDLE_BAT(APINT_TYPE_PREFIX, 6646) +HANDLE_BAT(APINT_TYPE_PREFIX, 6647) +HANDLE_BAT(APINT_TYPE_PREFIX, 6648) +HANDLE_BAT(APINT_TYPE_PREFIX, 6649) +HANDLE_BAT(APINT_TYPE_PREFIX, 6650) +HANDLE_BAT(APINT_TYPE_PREFIX, 6651) +HANDLE_BAT(APINT_TYPE_PREFIX, 6652) +HANDLE_BAT(APINT_TYPE_PREFIX, 6653) +HANDLE_BAT(APINT_TYPE_PREFIX, 6654) +HANDLE_BAT(APINT_TYPE_PREFIX, 6655) +HANDLE_BAT(APINT_TYPE_PREFIX, 6656) +HANDLE_BAT(APINT_TYPE_PREFIX, 6657) +HANDLE_BAT(APINT_TYPE_PREFIX, 6658) +HANDLE_BAT(APINT_TYPE_PREFIX, 6659) +HANDLE_BAT(APINT_TYPE_PREFIX, 6660) +HANDLE_BAT(APINT_TYPE_PREFIX, 6661) +HANDLE_BAT(APINT_TYPE_PREFIX, 6662) +HANDLE_BAT(APINT_TYPE_PREFIX, 6663) +HANDLE_BAT(APINT_TYPE_PREFIX, 6664) +HANDLE_BAT(APINT_TYPE_PREFIX, 6665) +HANDLE_BAT(APINT_TYPE_PREFIX, 6666) +HANDLE_BAT(APINT_TYPE_PREFIX, 6667) +HANDLE_BAT(APINT_TYPE_PREFIX, 6668) +HANDLE_BAT(APINT_TYPE_PREFIX, 6669) +HANDLE_BAT(APINT_TYPE_PREFIX, 6670) +HANDLE_BAT(APINT_TYPE_PREFIX, 6671) +HANDLE_BAT(APINT_TYPE_PREFIX, 6672) +HANDLE_BAT(APINT_TYPE_PREFIX, 6673) +HANDLE_BAT(APINT_TYPE_PREFIX, 6674) +HANDLE_BAT(APINT_TYPE_PREFIX, 6675) +HANDLE_BAT(APINT_TYPE_PREFIX, 6676) +HANDLE_BAT(APINT_TYPE_PREFIX, 6677) +HANDLE_BAT(APINT_TYPE_PREFIX, 6678) +HANDLE_BAT(APINT_TYPE_PREFIX, 6679) +HANDLE_BAT(APINT_TYPE_PREFIX, 6680) +HANDLE_BAT(APINT_TYPE_PREFIX, 6681) +HANDLE_BAT(APINT_TYPE_PREFIX, 6682) +HANDLE_BAT(APINT_TYPE_PREFIX, 6683) +HANDLE_BAT(APINT_TYPE_PREFIX, 6684) +HANDLE_BAT(APINT_TYPE_PREFIX, 6685) +HANDLE_BAT(APINT_TYPE_PREFIX, 6686) +HANDLE_BAT(APINT_TYPE_PREFIX, 6687) +HANDLE_BAT(APINT_TYPE_PREFIX, 6688) +HANDLE_BAT(APINT_TYPE_PREFIX, 6689) +HANDLE_BAT(APINT_TYPE_PREFIX, 6690) +HANDLE_BAT(APINT_TYPE_PREFIX, 6691) +HANDLE_BAT(APINT_TYPE_PREFIX, 6692) +HANDLE_BAT(APINT_TYPE_PREFIX, 6693) +HANDLE_BAT(APINT_TYPE_PREFIX, 6694) +HANDLE_BAT(APINT_TYPE_PREFIX, 6695) +HANDLE_BAT(APINT_TYPE_PREFIX, 6696) +HANDLE_BAT(APINT_TYPE_PREFIX, 6697) +HANDLE_BAT(APINT_TYPE_PREFIX, 6698) +HANDLE_BAT(APINT_TYPE_PREFIX, 6699) +HANDLE_BAT(APINT_TYPE_PREFIX, 6700) +HANDLE_BAT(APINT_TYPE_PREFIX, 6701) +HANDLE_BAT(APINT_TYPE_PREFIX, 6702) +HANDLE_BAT(APINT_TYPE_PREFIX, 6703) +HANDLE_BAT(APINT_TYPE_PREFIX, 6704) +HANDLE_BAT(APINT_TYPE_PREFIX, 6705) +HANDLE_BAT(APINT_TYPE_PREFIX, 6706) +HANDLE_BAT(APINT_TYPE_PREFIX, 6707) +HANDLE_BAT(APINT_TYPE_PREFIX, 6708) +HANDLE_BAT(APINT_TYPE_PREFIX, 6709) +HANDLE_BAT(APINT_TYPE_PREFIX, 6710) +HANDLE_BAT(APINT_TYPE_PREFIX, 6711) +HANDLE_BAT(APINT_TYPE_PREFIX, 6712) +HANDLE_BAT(APINT_TYPE_PREFIX, 6713) +HANDLE_BAT(APINT_TYPE_PREFIX, 6714) +HANDLE_BAT(APINT_TYPE_PREFIX, 6715) +HANDLE_BAT(APINT_TYPE_PREFIX, 6716) +HANDLE_BAT(APINT_TYPE_PREFIX, 6717) +HANDLE_BAT(APINT_TYPE_PREFIX, 6718) +HANDLE_BAT(APINT_TYPE_PREFIX, 6719) +HANDLE_BAT(APINT_TYPE_PREFIX, 6720) +HANDLE_BAT(APINT_TYPE_PREFIX, 6721) +HANDLE_BAT(APINT_TYPE_PREFIX, 6722) +HANDLE_BAT(APINT_TYPE_PREFIX, 6723) +HANDLE_BAT(APINT_TYPE_PREFIX, 6724) +HANDLE_BAT(APINT_TYPE_PREFIX, 6725) +HANDLE_BAT(APINT_TYPE_PREFIX, 6726) +HANDLE_BAT(APINT_TYPE_PREFIX, 6727) +HANDLE_BAT(APINT_TYPE_PREFIX, 6728) +HANDLE_BAT(APINT_TYPE_PREFIX, 6729) +HANDLE_BAT(APINT_TYPE_PREFIX, 6730) +HANDLE_BAT(APINT_TYPE_PREFIX, 6731) +HANDLE_BAT(APINT_TYPE_PREFIX, 6732) +HANDLE_BAT(APINT_TYPE_PREFIX, 6733) +HANDLE_BAT(APINT_TYPE_PREFIX, 6734) +HANDLE_BAT(APINT_TYPE_PREFIX, 6735) +HANDLE_BAT(APINT_TYPE_PREFIX, 6736) +HANDLE_BAT(APINT_TYPE_PREFIX, 6737) +HANDLE_BAT(APINT_TYPE_PREFIX, 6738) +HANDLE_BAT(APINT_TYPE_PREFIX, 6739) +HANDLE_BAT(APINT_TYPE_PREFIX, 6740) +HANDLE_BAT(APINT_TYPE_PREFIX, 6741) +HANDLE_BAT(APINT_TYPE_PREFIX, 6742) +HANDLE_BAT(APINT_TYPE_PREFIX, 6743) +HANDLE_BAT(APINT_TYPE_PREFIX, 6744) +HANDLE_BAT(APINT_TYPE_PREFIX, 6745) +HANDLE_BAT(APINT_TYPE_PREFIX, 6746) +HANDLE_BAT(APINT_TYPE_PREFIX, 6747) +HANDLE_BAT(APINT_TYPE_PREFIX, 6748) +HANDLE_BAT(APINT_TYPE_PREFIX, 6749) +HANDLE_BAT(APINT_TYPE_PREFIX, 6750) +HANDLE_BAT(APINT_TYPE_PREFIX, 6751) +HANDLE_BAT(APINT_TYPE_PREFIX, 6752) +HANDLE_BAT(APINT_TYPE_PREFIX, 6753) +HANDLE_BAT(APINT_TYPE_PREFIX, 6754) +HANDLE_BAT(APINT_TYPE_PREFIX, 6755) +HANDLE_BAT(APINT_TYPE_PREFIX, 6756) +HANDLE_BAT(APINT_TYPE_PREFIX, 6757) +HANDLE_BAT(APINT_TYPE_PREFIX, 6758) +HANDLE_BAT(APINT_TYPE_PREFIX, 6759) +HANDLE_BAT(APINT_TYPE_PREFIX, 6760) +HANDLE_BAT(APINT_TYPE_PREFIX, 6761) +HANDLE_BAT(APINT_TYPE_PREFIX, 6762) +HANDLE_BAT(APINT_TYPE_PREFIX, 6763) +HANDLE_BAT(APINT_TYPE_PREFIX, 6764) +HANDLE_BAT(APINT_TYPE_PREFIX, 6765) +HANDLE_BAT(APINT_TYPE_PREFIX, 6766) +HANDLE_BAT(APINT_TYPE_PREFIX, 6767) +HANDLE_BAT(APINT_TYPE_PREFIX, 6768) +HANDLE_BAT(APINT_TYPE_PREFIX, 6769) +HANDLE_BAT(APINT_TYPE_PREFIX, 6770) +HANDLE_BAT(APINT_TYPE_PREFIX, 6771) +HANDLE_BAT(APINT_TYPE_PREFIX, 6772) +HANDLE_BAT(APINT_TYPE_PREFIX, 6773) +HANDLE_BAT(APINT_TYPE_PREFIX, 6774) +HANDLE_BAT(APINT_TYPE_PREFIX, 6775) +HANDLE_BAT(APINT_TYPE_PREFIX, 6776) +HANDLE_BAT(APINT_TYPE_PREFIX, 6777) +HANDLE_BAT(APINT_TYPE_PREFIX, 6778) +HANDLE_BAT(APINT_TYPE_PREFIX, 6779) +HANDLE_BAT(APINT_TYPE_PREFIX, 6780) +HANDLE_BAT(APINT_TYPE_PREFIX, 6781) +HANDLE_BAT(APINT_TYPE_PREFIX, 6782) +HANDLE_BAT(APINT_TYPE_PREFIX, 6783) +HANDLE_BAT(APINT_TYPE_PREFIX, 6784) +HANDLE_BAT(APINT_TYPE_PREFIX, 6785) +HANDLE_BAT(APINT_TYPE_PREFIX, 6786) +HANDLE_BAT(APINT_TYPE_PREFIX, 6787) +HANDLE_BAT(APINT_TYPE_PREFIX, 6788) +HANDLE_BAT(APINT_TYPE_PREFIX, 6789) +HANDLE_BAT(APINT_TYPE_PREFIX, 6790) +HANDLE_BAT(APINT_TYPE_PREFIX, 6791) +HANDLE_BAT(APINT_TYPE_PREFIX, 6792) +HANDLE_BAT(APINT_TYPE_PREFIX, 6793) +HANDLE_BAT(APINT_TYPE_PREFIX, 6794) +HANDLE_BAT(APINT_TYPE_PREFIX, 6795) +HANDLE_BAT(APINT_TYPE_PREFIX, 6796) +HANDLE_BAT(APINT_TYPE_PREFIX, 6797) +HANDLE_BAT(APINT_TYPE_PREFIX, 6798) +HANDLE_BAT(APINT_TYPE_PREFIX, 6799) +HANDLE_BAT(APINT_TYPE_PREFIX, 6800) +HANDLE_BAT(APINT_TYPE_PREFIX, 6801) +HANDLE_BAT(APINT_TYPE_PREFIX, 6802) +HANDLE_BAT(APINT_TYPE_PREFIX, 6803) +HANDLE_BAT(APINT_TYPE_PREFIX, 6804) +HANDLE_BAT(APINT_TYPE_PREFIX, 6805) +HANDLE_BAT(APINT_TYPE_PREFIX, 6806) +HANDLE_BAT(APINT_TYPE_PREFIX, 6807) +HANDLE_BAT(APINT_TYPE_PREFIX, 6808) +HANDLE_BAT(APINT_TYPE_PREFIX, 6809) +HANDLE_BAT(APINT_TYPE_PREFIX, 6810) +HANDLE_BAT(APINT_TYPE_PREFIX, 6811) +HANDLE_BAT(APINT_TYPE_PREFIX, 6812) +HANDLE_BAT(APINT_TYPE_PREFIX, 6813) +HANDLE_BAT(APINT_TYPE_PREFIX, 6814) +HANDLE_BAT(APINT_TYPE_PREFIX, 6815) +HANDLE_BAT(APINT_TYPE_PREFIX, 6816) +HANDLE_BAT(APINT_TYPE_PREFIX, 6817) +HANDLE_BAT(APINT_TYPE_PREFIX, 6818) +HANDLE_BAT(APINT_TYPE_PREFIX, 6819) +HANDLE_BAT(APINT_TYPE_PREFIX, 6820) +HANDLE_BAT(APINT_TYPE_PREFIX, 6821) +HANDLE_BAT(APINT_TYPE_PREFIX, 6822) +HANDLE_BAT(APINT_TYPE_PREFIX, 6823) +HANDLE_BAT(APINT_TYPE_PREFIX, 6824) +HANDLE_BAT(APINT_TYPE_PREFIX, 6825) +HANDLE_BAT(APINT_TYPE_PREFIX, 6826) +HANDLE_BAT(APINT_TYPE_PREFIX, 6827) +HANDLE_BAT(APINT_TYPE_PREFIX, 6828) +HANDLE_BAT(APINT_TYPE_PREFIX, 6829) +HANDLE_BAT(APINT_TYPE_PREFIX, 6830) +HANDLE_BAT(APINT_TYPE_PREFIX, 6831) +HANDLE_BAT(APINT_TYPE_PREFIX, 6832) +HANDLE_BAT(APINT_TYPE_PREFIX, 6833) +HANDLE_BAT(APINT_TYPE_PREFIX, 6834) +HANDLE_BAT(APINT_TYPE_PREFIX, 6835) +HANDLE_BAT(APINT_TYPE_PREFIX, 6836) +HANDLE_BAT(APINT_TYPE_PREFIX, 6837) +HANDLE_BAT(APINT_TYPE_PREFIX, 6838) +HANDLE_BAT(APINT_TYPE_PREFIX, 6839) +HANDLE_BAT(APINT_TYPE_PREFIX, 6840) +HANDLE_BAT(APINT_TYPE_PREFIX, 6841) +HANDLE_BAT(APINT_TYPE_PREFIX, 6842) +HANDLE_BAT(APINT_TYPE_PREFIX, 6843) +HANDLE_BAT(APINT_TYPE_PREFIX, 6844) +HANDLE_BAT(APINT_TYPE_PREFIX, 6845) +HANDLE_BAT(APINT_TYPE_PREFIX, 6846) +HANDLE_BAT(APINT_TYPE_PREFIX, 6847) +HANDLE_BAT(APINT_TYPE_PREFIX, 6848) +HANDLE_BAT(APINT_TYPE_PREFIX, 6849) +HANDLE_BAT(APINT_TYPE_PREFIX, 6850) +HANDLE_BAT(APINT_TYPE_PREFIX, 6851) +HANDLE_BAT(APINT_TYPE_PREFIX, 6852) +HANDLE_BAT(APINT_TYPE_PREFIX, 6853) +HANDLE_BAT(APINT_TYPE_PREFIX, 6854) +HANDLE_BAT(APINT_TYPE_PREFIX, 6855) +HANDLE_BAT(APINT_TYPE_PREFIX, 6856) +HANDLE_BAT(APINT_TYPE_PREFIX, 6857) +HANDLE_BAT(APINT_TYPE_PREFIX, 6858) +HANDLE_BAT(APINT_TYPE_PREFIX, 6859) +HANDLE_BAT(APINT_TYPE_PREFIX, 6860) +HANDLE_BAT(APINT_TYPE_PREFIX, 6861) +HANDLE_BAT(APINT_TYPE_PREFIX, 6862) +HANDLE_BAT(APINT_TYPE_PREFIX, 6863) +HANDLE_BAT(APINT_TYPE_PREFIX, 6864) +HANDLE_BAT(APINT_TYPE_PREFIX, 6865) +HANDLE_BAT(APINT_TYPE_PREFIX, 6866) +HANDLE_BAT(APINT_TYPE_PREFIX, 6867) +HANDLE_BAT(APINT_TYPE_PREFIX, 6868) +HANDLE_BAT(APINT_TYPE_PREFIX, 6869) +HANDLE_BAT(APINT_TYPE_PREFIX, 6870) +HANDLE_BAT(APINT_TYPE_PREFIX, 6871) +HANDLE_BAT(APINT_TYPE_PREFIX, 6872) +HANDLE_BAT(APINT_TYPE_PREFIX, 6873) +HANDLE_BAT(APINT_TYPE_PREFIX, 6874) +HANDLE_BAT(APINT_TYPE_PREFIX, 6875) +HANDLE_BAT(APINT_TYPE_PREFIX, 6876) +HANDLE_BAT(APINT_TYPE_PREFIX, 6877) +HANDLE_BAT(APINT_TYPE_PREFIX, 6878) +HANDLE_BAT(APINT_TYPE_PREFIX, 6879) +HANDLE_BAT(APINT_TYPE_PREFIX, 6880) +HANDLE_BAT(APINT_TYPE_PREFIX, 6881) +HANDLE_BAT(APINT_TYPE_PREFIX, 6882) +HANDLE_BAT(APINT_TYPE_PREFIX, 6883) +HANDLE_BAT(APINT_TYPE_PREFIX, 6884) +HANDLE_BAT(APINT_TYPE_PREFIX, 6885) +HANDLE_BAT(APINT_TYPE_PREFIX, 6886) +HANDLE_BAT(APINT_TYPE_PREFIX, 6887) +HANDLE_BAT(APINT_TYPE_PREFIX, 6888) +HANDLE_BAT(APINT_TYPE_PREFIX, 6889) +HANDLE_BAT(APINT_TYPE_PREFIX, 6890) +HANDLE_BAT(APINT_TYPE_PREFIX, 6891) +HANDLE_BAT(APINT_TYPE_PREFIX, 6892) +HANDLE_BAT(APINT_TYPE_PREFIX, 6893) +HANDLE_BAT(APINT_TYPE_PREFIX, 6894) +HANDLE_BAT(APINT_TYPE_PREFIX, 6895) +HANDLE_BAT(APINT_TYPE_PREFIX, 6896) +HANDLE_BAT(APINT_TYPE_PREFIX, 6897) +HANDLE_BAT(APINT_TYPE_PREFIX, 6898) +HANDLE_BAT(APINT_TYPE_PREFIX, 6899) +HANDLE_BAT(APINT_TYPE_PREFIX, 6900) +HANDLE_BAT(APINT_TYPE_PREFIX, 6901) +HANDLE_BAT(APINT_TYPE_PREFIX, 6902) +HANDLE_BAT(APINT_TYPE_PREFIX, 6903) +HANDLE_BAT(APINT_TYPE_PREFIX, 6904) +HANDLE_BAT(APINT_TYPE_PREFIX, 6905) +HANDLE_BAT(APINT_TYPE_PREFIX, 6906) +HANDLE_BAT(APINT_TYPE_PREFIX, 6907) +HANDLE_BAT(APINT_TYPE_PREFIX, 6908) +HANDLE_BAT(APINT_TYPE_PREFIX, 6909) +HANDLE_BAT(APINT_TYPE_PREFIX, 6910) +HANDLE_BAT(APINT_TYPE_PREFIX, 6911) +HANDLE_BAT(APINT_TYPE_PREFIX, 6912) +HANDLE_BAT(APINT_TYPE_PREFIX, 6913) +HANDLE_BAT(APINT_TYPE_PREFIX, 6914) +HANDLE_BAT(APINT_TYPE_PREFIX, 6915) +HANDLE_BAT(APINT_TYPE_PREFIX, 6916) +HANDLE_BAT(APINT_TYPE_PREFIX, 6917) +HANDLE_BAT(APINT_TYPE_PREFIX, 6918) +HANDLE_BAT(APINT_TYPE_PREFIX, 6919) +HANDLE_BAT(APINT_TYPE_PREFIX, 6920) +HANDLE_BAT(APINT_TYPE_PREFIX, 6921) +HANDLE_BAT(APINT_TYPE_PREFIX, 6922) +HANDLE_BAT(APINT_TYPE_PREFIX, 6923) +HANDLE_BAT(APINT_TYPE_PREFIX, 6924) +HANDLE_BAT(APINT_TYPE_PREFIX, 6925) +HANDLE_BAT(APINT_TYPE_PREFIX, 6926) +HANDLE_BAT(APINT_TYPE_PREFIX, 6927) +HANDLE_BAT(APINT_TYPE_PREFIX, 6928) +HANDLE_BAT(APINT_TYPE_PREFIX, 6929) +HANDLE_BAT(APINT_TYPE_PREFIX, 6930) +HANDLE_BAT(APINT_TYPE_PREFIX, 6931) +HANDLE_BAT(APINT_TYPE_PREFIX, 6932) +HANDLE_BAT(APINT_TYPE_PREFIX, 6933) +HANDLE_BAT(APINT_TYPE_PREFIX, 6934) +HANDLE_BAT(APINT_TYPE_PREFIX, 6935) +HANDLE_BAT(APINT_TYPE_PREFIX, 6936) +HANDLE_BAT(APINT_TYPE_PREFIX, 6937) +HANDLE_BAT(APINT_TYPE_PREFIX, 6938) +HANDLE_BAT(APINT_TYPE_PREFIX, 6939) +HANDLE_BAT(APINT_TYPE_PREFIX, 6940) +HANDLE_BAT(APINT_TYPE_PREFIX, 6941) +HANDLE_BAT(APINT_TYPE_PREFIX, 6942) +HANDLE_BAT(APINT_TYPE_PREFIX, 6943) +HANDLE_BAT(APINT_TYPE_PREFIX, 6944) +HANDLE_BAT(APINT_TYPE_PREFIX, 6945) +HANDLE_BAT(APINT_TYPE_PREFIX, 6946) +HANDLE_BAT(APINT_TYPE_PREFIX, 6947) +HANDLE_BAT(APINT_TYPE_PREFIX, 6948) +HANDLE_BAT(APINT_TYPE_PREFIX, 6949) +HANDLE_BAT(APINT_TYPE_PREFIX, 6950) +HANDLE_BAT(APINT_TYPE_PREFIX, 6951) +HANDLE_BAT(APINT_TYPE_PREFIX, 6952) +HANDLE_BAT(APINT_TYPE_PREFIX, 6953) +HANDLE_BAT(APINT_TYPE_PREFIX, 6954) +HANDLE_BAT(APINT_TYPE_PREFIX, 6955) +HANDLE_BAT(APINT_TYPE_PREFIX, 6956) +HANDLE_BAT(APINT_TYPE_PREFIX, 6957) +HANDLE_BAT(APINT_TYPE_PREFIX, 6958) +HANDLE_BAT(APINT_TYPE_PREFIX, 6959) +HANDLE_BAT(APINT_TYPE_PREFIX, 6960) +HANDLE_BAT(APINT_TYPE_PREFIX, 6961) +HANDLE_BAT(APINT_TYPE_PREFIX, 6962) +HANDLE_BAT(APINT_TYPE_PREFIX, 6963) +HANDLE_BAT(APINT_TYPE_PREFIX, 6964) +HANDLE_BAT(APINT_TYPE_PREFIX, 6965) +HANDLE_BAT(APINT_TYPE_PREFIX, 6966) +HANDLE_BAT(APINT_TYPE_PREFIX, 6967) +HANDLE_BAT(APINT_TYPE_PREFIX, 6968) +HANDLE_BAT(APINT_TYPE_PREFIX, 6969) +HANDLE_BAT(APINT_TYPE_PREFIX, 6970) +HANDLE_BAT(APINT_TYPE_PREFIX, 6971) +HANDLE_BAT(APINT_TYPE_PREFIX, 6972) +HANDLE_BAT(APINT_TYPE_PREFIX, 6973) +HANDLE_BAT(APINT_TYPE_PREFIX, 6974) +HANDLE_BAT(APINT_TYPE_PREFIX, 6975) +HANDLE_BAT(APINT_TYPE_PREFIX, 6976) +HANDLE_BAT(APINT_TYPE_PREFIX, 6977) +HANDLE_BAT(APINT_TYPE_PREFIX, 6978) +HANDLE_BAT(APINT_TYPE_PREFIX, 6979) +HANDLE_BAT(APINT_TYPE_PREFIX, 6980) +HANDLE_BAT(APINT_TYPE_PREFIX, 6981) +HANDLE_BAT(APINT_TYPE_PREFIX, 6982) +HANDLE_BAT(APINT_TYPE_PREFIX, 6983) +HANDLE_BAT(APINT_TYPE_PREFIX, 6984) +HANDLE_BAT(APINT_TYPE_PREFIX, 6985) +HANDLE_BAT(APINT_TYPE_PREFIX, 6986) +HANDLE_BAT(APINT_TYPE_PREFIX, 6987) +HANDLE_BAT(APINT_TYPE_PREFIX, 6988) +HANDLE_BAT(APINT_TYPE_PREFIX, 6989) +HANDLE_BAT(APINT_TYPE_PREFIX, 6990) +HANDLE_BAT(APINT_TYPE_PREFIX, 6991) +HANDLE_BAT(APINT_TYPE_PREFIX, 6992) +HANDLE_BAT(APINT_TYPE_PREFIX, 6993) +HANDLE_BAT(APINT_TYPE_PREFIX, 6994) +HANDLE_BAT(APINT_TYPE_PREFIX, 6995) +HANDLE_BAT(APINT_TYPE_PREFIX, 6996) +HANDLE_BAT(APINT_TYPE_PREFIX, 6997) +HANDLE_BAT(APINT_TYPE_PREFIX, 6998) +HANDLE_BAT(APINT_TYPE_PREFIX, 6999) +HANDLE_BAT(APINT_TYPE_PREFIX, 7000) +HANDLE_BAT(APINT_TYPE_PREFIX, 7001) +HANDLE_BAT(APINT_TYPE_PREFIX, 7002) +HANDLE_BAT(APINT_TYPE_PREFIX, 7003) +HANDLE_BAT(APINT_TYPE_PREFIX, 7004) +HANDLE_BAT(APINT_TYPE_PREFIX, 7005) +HANDLE_BAT(APINT_TYPE_PREFIX, 7006) +HANDLE_BAT(APINT_TYPE_PREFIX, 7007) +HANDLE_BAT(APINT_TYPE_PREFIX, 7008) +HANDLE_BAT(APINT_TYPE_PREFIX, 7009) +HANDLE_BAT(APINT_TYPE_PREFIX, 7010) +HANDLE_BAT(APINT_TYPE_PREFIX, 7011) +HANDLE_BAT(APINT_TYPE_PREFIX, 7012) +HANDLE_BAT(APINT_TYPE_PREFIX, 7013) +HANDLE_BAT(APINT_TYPE_PREFIX, 7014) +HANDLE_BAT(APINT_TYPE_PREFIX, 7015) +HANDLE_BAT(APINT_TYPE_PREFIX, 7016) +HANDLE_BAT(APINT_TYPE_PREFIX, 7017) +HANDLE_BAT(APINT_TYPE_PREFIX, 7018) +HANDLE_BAT(APINT_TYPE_PREFIX, 7019) +HANDLE_BAT(APINT_TYPE_PREFIX, 7020) +HANDLE_BAT(APINT_TYPE_PREFIX, 7021) +HANDLE_BAT(APINT_TYPE_PREFIX, 7022) +HANDLE_BAT(APINT_TYPE_PREFIX, 7023) +HANDLE_BAT(APINT_TYPE_PREFIX, 7024) +HANDLE_BAT(APINT_TYPE_PREFIX, 7025) +HANDLE_BAT(APINT_TYPE_PREFIX, 7026) +HANDLE_BAT(APINT_TYPE_PREFIX, 7027) +HANDLE_BAT(APINT_TYPE_PREFIX, 7028) +HANDLE_BAT(APINT_TYPE_PREFIX, 7029) +HANDLE_BAT(APINT_TYPE_PREFIX, 7030) +HANDLE_BAT(APINT_TYPE_PREFIX, 7031) +HANDLE_BAT(APINT_TYPE_PREFIX, 7032) +HANDLE_BAT(APINT_TYPE_PREFIX, 7033) +HANDLE_BAT(APINT_TYPE_PREFIX, 7034) +HANDLE_BAT(APINT_TYPE_PREFIX, 7035) +HANDLE_BAT(APINT_TYPE_PREFIX, 7036) +HANDLE_BAT(APINT_TYPE_PREFIX, 7037) +HANDLE_BAT(APINT_TYPE_PREFIX, 7038) +HANDLE_BAT(APINT_TYPE_PREFIX, 7039) +HANDLE_BAT(APINT_TYPE_PREFIX, 7040) +HANDLE_BAT(APINT_TYPE_PREFIX, 7041) +HANDLE_BAT(APINT_TYPE_PREFIX, 7042) +HANDLE_BAT(APINT_TYPE_PREFIX, 7043) +HANDLE_BAT(APINT_TYPE_PREFIX, 7044) +HANDLE_BAT(APINT_TYPE_PREFIX, 7045) +HANDLE_BAT(APINT_TYPE_PREFIX, 7046) +HANDLE_BAT(APINT_TYPE_PREFIX, 7047) +HANDLE_BAT(APINT_TYPE_PREFIX, 7048) +HANDLE_BAT(APINT_TYPE_PREFIX, 7049) +HANDLE_BAT(APINT_TYPE_PREFIX, 7050) +HANDLE_BAT(APINT_TYPE_PREFIX, 7051) +HANDLE_BAT(APINT_TYPE_PREFIX, 7052) +HANDLE_BAT(APINT_TYPE_PREFIX, 7053) +HANDLE_BAT(APINT_TYPE_PREFIX, 7054) +HANDLE_BAT(APINT_TYPE_PREFIX, 7055) +HANDLE_BAT(APINT_TYPE_PREFIX, 7056) +HANDLE_BAT(APINT_TYPE_PREFIX, 7057) +HANDLE_BAT(APINT_TYPE_PREFIX, 7058) +HANDLE_BAT(APINT_TYPE_PREFIX, 7059) +HANDLE_BAT(APINT_TYPE_PREFIX, 7060) +HANDLE_BAT(APINT_TYPE_PREFIX, 7061) +HANDLE_BAT(APINT_TYPE_PREFIX, 7062) +HANDLE_BAT(APINT_TYPE_PREFIX, 7063) +HANDLE_BAT(APINT_TYPE_PREFIX, 7064) +HANDLE_BAT(APINT_TYPE_PREFIX, 7065) +HANDLE_BAT(APINT_TYPE_PREFIX, 7066) +HANDLE_BAT(APINT_TYPE_PREFIX, 7067) +HANDLE_BAT(APINT_TYPE_PREFIX, 7068) +HANDLE_BAT(APINT_TYPE_PREFIX, 7069) +HANDLE_BAT(APINT_TYPE_PREFIX, 7070) +HANDLE_BAT(APINT_TYPE_PREFIX, 7071) +HANDLE_BAT(APINT_TYPE_PREFIX, 7072) +HANDLE_BAT(APINT_TYPE_PREFIX, 7073) +HANDLE_BAT(APINT_TYPE_PREFIX, 7074) +HANDLE_BAT(APINT_TYPE_PREFIX, 7075) +HANDLE_BAT(APINT_TYPE_PREFIX, 7076) +HANDLE_BAT(APINT_TYPE_PREFIX, 7077) +HANDLE_BAT(APINT_TYPE_PREFIX, 7078) +HANDLE_BAT(APINT_TYPE_PREFIX, 7079) +HANDLE_BAT(APINT_TYPE_PREFIX, 7080) +HANDLE_BAT(APINT_TYPE_PREFIX, 7081) +HANDLE_BAT(APINT_TYPE_PREFIX, 7082) +HANDLE_BAT(APINT_TYPE_PREFIX, 7083) +HANDLE_BAT(APINT_TYPE_PREFIX, 7084) +HANDLE_BAT(APINT_TYPE_PREFIX, 7085) +HANDLE_BAT(APINT_TYPE_PREFIX, 7086) +HANDLE_BAT(APINT_TYPE_PREFIX, 7087) +HANDLE_BAT(APINT_TYPE_PREFIX, 7088) +HANDLE_BAT(APINT_TYPE_PREFIX, 7089) +HANDLE_BAT(APINT_TYPE_PREFIX, 7090) +HANDLE_BAT(APINT_TYPE_PREFIX, 7091) +HANDLE_BAT(APINT_TYPE_PREFIX, 7092) +HANDLE_BAT(APINT_TYPE_PREFIX, 7093) +HANDLE_BAT(APINT_TYPE_PREFIX, 7094) +HANDLE_BAT(APINT_TYPE_PREFIX, 7095) +HANDLE_BAT(APINT_TYPE_PREFIX, 7096) +HANDLE_BAT(APINT_TYPE_PREFIX, 7097) +HANDLE_BAT(APINT_TYPE_PREFIX, 7098) +HANDLE_BAT(APINT_TYPE_PREFIX, 7099) +HANDLE_BAT(APINT_TYPE_PREFIX, 7100) +HANDLE_BAT(APINT_TYPE_PREFIX, 7101) +HANDLE_BAT(APINT_TYPE_PREFIX, 7102) +HANDLE_BAT(APINT_TYPE_PREFIX, 7103) +HANDLE_BAT(APINT_TYPE_PREFIX, 7104) +HANDLE_BAT(APINT_TYPE_PREFIX, 7105) +HANDLE_BAT(APINT_TYPE_PREFIX, 7106) +HANDLE_BAT(APINT_TYPE_PREFIX, 7107) +HANDLE_BAT(APINT_TYPE_PREFIX, 7108) +HANDLE_BAT(APINT_TYPE_PREFIX, 7109) +HANDLE_BAT(APINT_TYPE_PREFIX, 7110) +HANDLE_BAT(APINT_TYPE_PREFIX, 7111) +HANDLE_BAT(APINT_TYPE_PREFIX, 7112) +HANDLE_BAT(APINT_TYPE_PREFIX, 7113) +HANDLE_BAT(APINT_TYPE_PREFIX, 7114) +HANDLE_BAT(APINT_TYPE_PREFIX, 7115) +HANDLE_BAT(APINT_TYPE_PREFIX, 7116) +HANDLE_BAT(APINT_TYPE_PREFIX, 7117) +HANDLE_BAT(APINT_TYPE_PREFIX, 7118) +HANDLE_BAT(APINT_TYPE_PREFIX, 7119) +HANDLE_BAT(APINT_TYPE_PREFIX, 7120) +HANDLE_BAT(APINT_TYPE_PREFIX, 7121) +HANDLE_BAT(APINT_TYPE_PREFIX, 7122) +HANDLE_BAT(APINT_TYPE_PREFIX, 7123) +HANDLE_BAT(APINT_TYPE_PREFIX, 7124) +HANDLE_BAT(APINT_TYPE_PREFIX, 7125) +HANDLE_BAT(APINT_TYPE_PREFIX, 7126) +HANDLE_BAT(APINT_TYPE_PREFIX, 7127) +HANDLE_BAT(APINT_TYPE_PREFIX, 7128) +HANDLE_BAT(APINT_TYPE_PREFIX, 7129) +HANDLE_BAT(APINT_TYPE_PREFIX, 7130) +HANDLE_BAT(APINT_TYPE_PREFIX, 7131) +HANDLE_BAT(APINT_TYPE_PREFIX, 7132) +HANDLE_BAT(APINT_TYPE_PREFIX, 7133) +HANDLE_BAT(APINT_TYPE_PREFIX, 7134) +HANDLE_BAT(APINT_TYPE_PREFIX, 7135) +HANDLE_BAT(APINT_TYPE_PREFIX, 7136) +HANDLE_BAT(APINT_TYPE_PREFIX, 7137) +HANDLE_BAT(APINT_TYPE_PREFIX, 7138) +HANDLE_BAT(APINT_TYPE_PREFIX, 7139) +HANDLE_BAT(APINT_TYPE_PREFIX, 7140) +HANDLE_BAT(APINT_TYPE_PREFIX, 7141) +HANDLE_BAT(APINT_TYPE_PREFIX, 7142) +HANDLE_BAT(APINT_TYPE_PREFIX, 7143) +HANDLE_BAT(APINT_TYPE_PREFIX, 7144) +HANDLE_BAT(APINT_TYPE_PREFIX, 7145) +HANDLE_BAT(APINT_TYPE_PREFIX, 7146) +HANDLE_BAT(APINT_TYPE_PREFIX, 7147) +HANDLE_BAT(APINT_TYPE_PREFIX, 7148) +HANDLE_BAT(APINT_TYPE_PREFIX, 7149) +HANDLE_BAT(APINT_TYPE_PREFIX, 7150) +HANDLE_BAT(APINT_TYPE_PREFIX, 7151) +HANDLE_BAT(APINT_TYPE_PREFIX, 7152) +HANDLE_BAT(APINT_TYPE_PREFIX, 7153) +HANDLE_BAT(APINT_TYPE_PREFIX, 7154) +HANDLE_BAT(APINT_TYPE_PREFIX, 7155) +HANDLE_BAT(APINT_TYPE_PREFIX, 7156) +HANDLE_BAT(APINT_TYPE_PREFIX, 7157) +HANDLE_BAT(APINT_TYPE_PREFIX, 7158) +HANDLE_BAT(APINT_TYPE_PREFIX, 7159) +HANDLE_BAT(APINT_TYPE_PREFIX, 7160) +HANDLE_BAT(APINT_TYPE_PREFIX, 7161) +HANDLE_BAT(APINT_TYPE_PREFIX, 7162) +HANDLE_BAT(APINT_TYPE_PREFIX, 7163) +HANDLE_BAT(APINT_TYPE_PREFIX, 7164) +HANDLE_BAT(APINT_TYPE_PREFIX, 7165) +HANDLE_BAT(APINT_TYPE_PREFIX, 7166) +HANDLE_BAT(APINT_TYPE_PREFIX, 7167) +HANDLE_BAT(APINT_TYPE_PREFIX, 7168) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 7 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 7169) +HANDLE_BAT(, 7170) +HANDLE_BAT(, 7171) +HANDLE_BAT(, 7172) +HANDLE_BAT(, 7173) +HANDLE_BAT(, 7174) +HANDLE_BAT(, 7175) +HANDLE_BAT(, 7176) +HANDLE_BAT(, 7177) +HANDLE_BAT(, 7178) +HANDLE_BAT(, 7179) +HANDLE_BAT(, 7180) +HANDLE_BAT(, 7181) +HANDLE_BAT(, 7182) +HANDLE_BAT(, 7183) +HANDLE_BAT(, 7184) +HANDLE_BAT(, 7185) +HANDLE_BAT(, 7186) +HANDLE_BAT(, 7187) +HANDLE_BAT(, 7188) +HANDLE_BAT(, 7189) +HANDLE_BAT(, 7190) +HANDLE_BAT(, 7191) +HANDLE_BAT(, 7192) +HANDLE_BAT(, 7193) +HANDLE_BAT(, 7194) +HANDLE_BAT(, 7195) +HANDLE_BAT(, 7196) +HANDLE_BAT(, 7197) +HANDLE_BAT(, 7198) +HANDLE_BAT(, 7199) +HANDLE_BAT(, 7200) +HANDLE_BAT(, 7201) +HANDLE_BAT(, 7202) +HANDLE_BAT(, 7203) +HANDLE_BAT(, 7204) +HANDLE_BAT(, 7205) +HANDLE_BAT(, 7206) +HANDLE_BAT(, 7207) +HANDLE_BAT(, 7208) +HANDLE_BAT(, 7209) +HANDLE_BAT(, 7210) +HANDLE_BAT(, 7211) +HANDLE_BAT(, 7212) +HANDLE_BAT(, 7213) +HANDLE_BAT(, 7214) +HANDLE_BAT(, 7215) +HANDLE_BAT(, 7216) +HANDLE_BAT(, 7217) +HANDLE_BAT(, 7218) +HANDLE_BAT(, 7219) +HANDLE_BAT(, 7220) +HANDLE_BAT(, 7221) +HANDLE_BAT(, 7222) +HANDLE_BAT(, 7223) +HANDLE_BAT(, 7224) +HANDLE_BAT(, 7225) +HANDLE_BAT(, 7226) +HANDLE_BAT(, 7227) +HANDLE_BAT(, 7228) +HANDLE_BAT(, 7229) +HANDLE_BAT(, 7230) +HANDLE_BAT(, 7231) +HANDLE_BAT(, 7232) +HANDLE_BAT(, 7233) +HANDLE_BAT(, 7234) +HANDLE_BAT(, 7235) +HANDLE_BAT(, 7236) +HANDLE_BAT(, 7237) +HANDLE_BAT(, 7238) +HANDLE_BAT(, 7239) +HANDLE_BAT(, 7240) +HANDLE_BAT(, 7241) +HANDLE_BAT(, 7242) +HANDLE_BAT(, 7243) +HANDLE_BAT(, 7244) +HANDLE_BAT(, 7245) +HANDLE_BAT(, 7246) +HANDLE_BAT(, 7247) +HANDLE_BAT(, 7248) +HANDLE_BAT(, 7249) +HANDLE_BAT(, 7250) +HANDLE_BAT(, 7251) +HANDLE_BAT(, 7252) +HANDLE_BAT(, 7253) +HANDLE_BAT(, 7254) +HANDLE_BAT(, 7255) +HANDLE_BAT(, 7256) +HANDLE_BAT(, 7257) +HANDLE_BAT(, 7258) +HANDLE_BAT(, 7259) +HANDLE_BAT(, 7260) +HANDLE_BAT(, 7261) +HANDLE_BAT(, 7262) +HANDLE_BAT(, 7263) +HANDLE_BAT(, 7264) +HANDLE_BAT(, 7265) +HANDLE_BAT(, 7266) +HANDLE_BAT(, 7267) +HANDLE_BAT(, 7268) +HANDLE_BAT(, 7269) +HANDLE_BAT(, 7270) +HANDLE_BAT(, 7271) +HANDLE_BAT(, 7272) +HANDLE_BAT(, 7273) +HANDLE_BAT(, 7274) +HANDLE_BAT(, 7275) +HANDLE_BAT(, 7276) +HANDLE_BAT(, 7277) +HANDLE_BAT(, 7278) +HANDLE_BAT(, 7279) +HANDLE_BAT(, 7280) +HANDLE_BAT(, 7281) +HANDLE_BAT(, 7282) +HANDLE_BAT(, 7283) +HANDLE_BAT(, 7284) +HANDLE_BAT(, 7285) +HANDLE_BAT(, 7286) +HANDLE_BAT(, 7287) +HANDLE_BAT(, 7288) +HANDLE_BAT(, 7289) +HANDLE_BAT(, 7290) +HANDLE_BAT(, 7291) +HANDLE_BAT(, 7292) +HANDLE_BAT(, 7293) +HANDLE_BAT(, 7294) +HANDLE_BAT(, 7295) +HANDLE_BAT(, 7296) +HANDLE_BAT(, 7297) +HANDLE_BAT(, 7298) +HANDLE_BAT(, 7299) +HANDLE_BAT(, 7300) +HANDLE_BAT(, 7301) +HANDLE_BAT(, 7302) +HANDLE_BAT(, 7303) +HANDLE_BAT(, 7304) +HANDLE_BAT(, 7305) +HANDLE_BAT(, 7306) +HANDLE_BAT(, 7307) +HANDLE_BAT(, 7308) +HANDLE_BAT(, 7309) +HANDLE_BAT(, 7310) +HANDLE_BAT(, 7311) +HANDLE_BAT(, 7312) +HANDLE_BAT(, 7313) +HANDLE_BAT(, 7314) +HANDLE_BAT(, 7315) +HANDLE_BAT(, 7316) +HANDLE_BAT(, 7317) +HANDLE_BAT(, 7318) +HANDLE_BAT(, 7319) +HANDLE_BAT(, 7320) +HANDLE_BAT(, 7321) +HANDLE_BAT(, 7322) +HANDLE_BAT(, 7323) +HANDLE_BAT(, 7324) +HANDLE_BAT(, 7325) +HANDLE_BAT(, 7326) +HANDLE_BAT(, 7327) +HANDLE_BAT(, 7328) +HANDLE_BAT(, 7329) +HANDLE_BAT(, 7330) +HANDLE_BAT(, 7331) +HANDLE_BAT(, 7332) +HANDLE_BAT(, 7333) +HANDLE_BAT(, 7334) +HANDLE_BAT(, 7335) +HANDLE_BAT(, 7336) +HANDLE_BAT(, 7337) +HANDLE_BAT(, 7338) +HANDLE_BAT(, 7339) +HANDLE_BAT(, 7340) +HANDLE_BAT(, 7341) +HANDLE_BAT(, 7342) +HANDLE_BAT(, 7343) +HANDLE_BAT(, 7344) +HANDLE_BAT(, 7345) +HANDLE_BAT(, 7346) +HANDLE_BAT(, 7347) +HANDLE_BAT(, 7348) +HANDLE_BAT(, 7349) +HANDLE_BAT(, 7350) +HANDLE_BAT(, 7351) +HANDLE_BAT(, 7352) +HANDLE_BAT(, 7353) +HANDLE_BAT(, 7354) +HANDLE_BAT(, 7355) +HANDLE_BAT(, 7356) +HANDLE_BAT(, 7357) +HANDLE_BAT(, 7358) +HANDLE_BAT(, 7359) +HANDLE_BAT(, 7360) +HANDLE_BAT(, 7361) +HANDLE_BAT(, 7362) +HANDLE_BAT(, 7363) +HANDLE_BAT(, 7364) +HANDLE_BAT(, 7365) +HANDLE_BAT(, 7366) +HANDLE_BAT(, 7367) +HANDLE_BAT(, 7368) +HANDLE_BAT(, 7369) +HANDLE_BAT(, 7370) +HANDLE_BAT(, 7371) +HANDLE_BAT(, 7372) +HANDLE_BAT(, 7373) +HANDLE_BAT(, 7374) +HANDLE_BAT(, 7375) +HANDLE_BAT(, 7376) +HANDLE_BAT(, 7377) +HANDLE_BAT(, 7378) +HANDLE_BAT(, 7379) +HANDLE_BAT(, 7380) +HANDLE_BAT(, 7381) +HANDLE_BAT(, 7382) +HANDLE_BAT(, 7383) +HANDLE_BAT(, 7384) +HANDLE_BAT(, 7385) +HANDLE_BAT(, 7386) +HANDLE_BAT(, 7387) +HANDLE_BAT(, 7388) +HANDLE_BAT(, 7389) +HANDLE_BAT(, 7390) +HANDLE_BAT(, 7391) +HANDLE_BAT(, 7392) +HANDLE_BAT(, 7393) +HANDLE_BAT(, 7394) +HANDLE_BAT(, 7395) +HANDLE_BAT(, 7396) +HANDLE_BAT(, 7397) +HANDLE_BAT(, 7398) +HANDLE_BAT(, 7399) +HANDLE_BAT(, 7400) +HANDLE_BAT(, 7401) +HANDLE_BAT(, 7402) +HANDLE_BAT(, 7403) +HANDLE_BAT(, 7404) +HANDLE_BAT(, 7405) +HANDLE_BAT(, 7406) +HANDLE_BAT(, 7407) +HANDLE_BAT(, 7408) +HANDLE_BAT(, 7409) +HANDLE_BAT(, 7410) +HANDLE_BAT(, 7411) +HANDLE_BAT(, 7412) +HANDLE_BAT(, 7413) +HANDLE_BAT(, 7414) +HANDLE_BAT(, 7415) +HANDLE_BAT(, 7416) +HANDLE_BAT(, 7417) +HANDLE_BAT(, 7418) +HANDLE_BAT(, 7419) +HANDLE_BAT(, 7420) +HANDLE_BAT(, 7421) +HANDLE_BAT(, 7422) +HANDLE_BAT(, 7423) +HANDLE_BAT(, 7424) +HANDLE_BAT(, 7425) +HANDLE_BAT(, 7426) +HANDLE_BAT(, 7427) +HANDLE_BAT(, 7428) +HANDLE_BAT(, 7429) +HANDLE_BAT(, 7430) +HANDLE_BAT(, 7431) +HANDLE_BAT(, 7432) +HANDLE_BAT(, 7433) +HANDLE_BAT(, 7434) +HANDLE_BAT(, 7435) +HANDLE_BAT(, 7436) +HANDLE_BAT(, 7437) +HANDLE_BAT(, 7438) +HANDLE_BAT(, 7439) +HANDLE_BAT(, 7440) +HANDLE_BAT(, 7441) +HANDLE_BAT(, 7442) +HANDLE_BAT(, 7443) +HANDLE_BAT(, 7444) +HANDLE_BAT(, 7445) +HANDLE_BAT(, 7446) +HANDLE_BAT(, 7447) +HANDLE_BAT(, 7448) +HANDLE_BAT(, 7449) +HANDLE_BAT(, 7450) +HANDLE_BAT(, 7451) +HANDLE_BAT(, 7452) +HANDLE_BAT(, 7453) +HANDLE_BAT(, 7454) +HANDLE_BAT(, 7455) +HANDLE_BAT(, 7456) +HANDLE_BAT(, 7457) +HANDLE_BAT(, 7458) +HANDLE_BAT(, 7459) +HANDLE_BAT(, 7460) +HANDLE_BAT(, 7461) +HANDLE_BAT(, 7462) +HANDLE_BAT(, 7463) +HANDLE_BAT(, 7464) +HANDLE_BAT(, 7465) +HANDLE_BAT(, 7466) +HANDLE_BAT(, 7467) +HANDLE_BAT(, 7468) +HANDLE_BAT(, 7469) +HANDLE_BAT(, 7470) +HANDLE_BAT(, 7471) +HANDLE_BAT(, 7472) +HANDLE_BAT(, 7473) +HANDLE_BAT(, 7474) +HANDLE_BAT(, 7475) +HANDLE_BAT(, 7476) +HANDLE_BAT(, 7477) +HANDLE_BAT(, 7478) +HANDLE_BAT(, 7479) +HANDLE_BAT(, 7480) +HANDLE_BAT(, 7481) +HANDLE_BAT(, 7482) +HANDLE_BAT(, 7483) +HANDLE_BAT(, 7484) +HANDLE_BAT(, 7485) +HANDLE_BAT(, 7486) +HANDLE_BAT(, 7487) +HANDLE_BAT(, 7488) +HANDLE_BAT(, 7489) +HANDLE_BAT(, 7490) +HANDLE_BAT(, 7491) +HANDLE_BAT(, 7492) +HANDLE_BAT(, 7493) +HANDLE_BAT(, 7494) +HANDLE_BAT(, 7495) +HANDLE_BAT(, 7496) +HANDLE_BAT(, 7497) +HANDLE_BAT(, 7498) +HANDLE_BAT(, 7499) +HANDLE_BAT(, 7500) +HANDLE_BAT(, 7501) +HANDLE_BAT(, 7502) +HANDLE_BAT(, 7503) +HANDLE_BAT(, 7504) +HANDLE_BAT(, 7505) +HANDLE_BAT(, 7506) +HANDLE_BAT(, 7507) +HANDLE_BAT(, 7508) +HANDLE_BAT(, 7509) +HANDLE_BAT(, 7510) +HANDLE_BAT(, 7511) +HANDLE_BAT(, 7512) +HANDLE_BAT(, 7513) +HANDLE_BAT(, 7514) +HANDLE_BAT(, 7515) +HANDLE_BAT(, 7516) +HANDLE_BAT(, 7517) +HANDLE_BAT(, 7518) +HANDLE_BAT(, 7519) +HANDLE_BAT(, 7520) +HANDLE_BAT(, 7521) +HANDLE_BAT(, 7522) +HANDLE_BAT(, 7523) +HANDLE_BAT(, 7524) +HANDLE_BAT(, 7525) +HANDLE_BAT(, 7526) +HANDLE_BAT(, 7527) +HANDLE_BAT(, 7528) +HANDLE_BAT(, 7529) +HANDLE_BAT(, 7530) +HANDLE_BAT(, 7531) +HANDLE_BAT(, 7532) +HANDLE_BAT(, 7533) +HANDLE_BAT(, 7534) +HANDLE_BAT(, 7535) +HANDLE_BAT(, 7536) +HANDLE_BAT(, 7537) +HANDLE_BAT(, 7538) +HANDLE_BAT(, 7539) +HANDLE_BAT(, 7540) +HANDLE_BAT(, 7541) +HANDLE_BAT(, 7542) +HANDLE_BAT(, 7543) +HANDLE_BAT(, 7544) +HANDLE_BAT(, 7545) +HANDLE_BAT(, 7546) +HANDLE_BAT(, 7547) +HANDLE_BAT(, 7548) +HANDLE_BAT(, 7549) +HANDLE_BAT(, 7550) +HANDLE_BAT(, 7551) +HANDLE_BAT(, 7552) +HANDLE_BAT(, 7553) +HANDLE_BAT(, 7554) +HANDLE_BAT(, 7555) +HANDLE_BAT(, 7556) +HANDLE_BAT(, 7557) +HANDLE_BAT(, 7558) +HANDLE_BAT(, 7559) +HANDLE_BAT(, 7560) +HANDLE_BAT(, 7561) +HANDLE_BAT(, 7562) +HANDLE_BAT(, 7563) +HANDLE_BAT(, 7564) +HANDLE_BAT(, 7565) +HANDLE_BAT(, 7566) +HANDLE_BAT(, 7567) +HANDLE_BAT(, 7568) +HANDLE_BAT(, 7569) +HANDLE_BAT(, 7570) +HANDLE_BAT(, 7571) +HANDLE_BAT(, 7572) +HANDLE_BAT(, 7573) +HANDLE_BAT(, 7574) +HANDLE_BAT(, 7575) +HANDLE_BAT(, 7576) +HANDLE_BAT(, 7577) +HANDLE_BAT(, 7578) +HANDLE_BAT(, 7579) +HANDLE_BAT(, 7580) +HANDLE_BAT(, 7581) +HANDLE_BAT(, 7582) +HANDLE_BAT(, 7583) +HANDLE_BAT(, 7584) +HANDLE_BAT(, 7585) +HANDLE_BAT(, 7586) +HANDLE_BAT(, 7587) +HANDLE_BAT(, 7588) +HANDLE_BAT(, 7589) +HANDLE_BAT(, 7590) +HANDLE_BAT(, 7591) +HANDLE_BAT(, 7592) +HANDLE_BAT(, 7593) +HANDLE_BAT(, 7594) +HANDLE_BAT(, 7595) +HANDLE_BAT(, 7596) +HANDLE_BAT(, 7597) +HANDLE_BAT(, 7598) +HANDLE_BAT(, 7599) +HANDLE_BAT(, 7600) +HANDLE_BAT(, 7601) +HANDLE_BAT(, 7602) +HANDLE_BAT(, 7603) +HANDLE_BAT(, 7604) +HANDLE_BAT(, 7605) +HANDLE_BAT(, 7606) +HANDLE_BAT(, 7607) +HANDLE_BAT(, 7608) +HANDLE_BAT(, 7609) +HANDLE_BAT(, 7610) +HANDLE_BAT(, 7611) +HANDLE_BAT(, 7612) +HANDLE_BAT(, 7613) +HANDLE_BAT(, 7614) +HANDLE_BAT(, 7615) +HANDLE_BAT(, 7616) +HANDLE_BAT(, 7617) +HANDLE_BAT(, 7618) +HANDLE_BAT(, 7619) +HANDLE_BAT(, 7620) +HANDLE_BAT(, 7621) +HANDLE_BAT(, 7622) +HANDLE_BAT(, 7623) +HANDLE_BAT(, 7624) +HANDLE_BAT(, 7625) +HANDLE_BAT(, 7626) +HANDLE_BAT(, 7627) +HANDLE_BAT(, 7628) +HANDLE_BAT(, 7629) +HANDLE_BAT(, 7630) +HANDLE_BAT(, 7631) +HANDLE_BAT(, 7632) +HANDLE_BAT(, 7633) +HANDLE_BAT(, 7634) +HANDLE_BAT(, 7635) +HANDLE_BAT(, 7636) +HANDLE_BAT(, 7637) +HANDLE_BAT(, 7638) +HANDLE_BAT(, 7639) +HANDLE_BAT(, 7640) +HANDLE_BAT(, 7641) +HANDLE_BAT(, 7642) +HANDLE_BAT(, 7643) +HANDLE_BAT(, 7644) +HANDLE_BAT(, 7645) +HANDLE_BAT(, 7646) +HANDLE_BAT(, 7647) +HANDLE_BAT(, 7648) +HANDLE_BAT(, 7649) +HANDLE_BAT(, 7650) +HANDLE_BAT(, 7651) +HANDLE_BAT(, 7652) +HANDLE_BAT(, 7653) +HANDLE_BAT(, 7654) +HANDLE_BAT(, 7655) +HANDLE_BAT(, 7656) +HANDLE_BAT(, 7657) +HANDLE_BAT(, 7658) +HANDLE_BAT(, 7659) +HANDLE_BAT(, 7660) +HANDLE_BAT(, 7661) +HANDLE_BAT(, 7662) +HANDLE_BAT(, 7663) +HANDLE_BAT(, 7664) +HANDLE_BAT(, 7665) +HANDLE_BAT(, 7666) +HANDLE_BAT(, 7667) +HANDLE_BAT(, 7668) +HANDLE_BAT(, 7669) +HANDLE_BAT(, 7670) +HANDLE_BAT(, 7671) +HANDLE_BAT(, 7672) +HANDLE_BAT(, 7673) +HANDLE_BAT(, 7674) +HANDLE_BAT(, 7675) +HANDLE_BAT(, 7676) +HANDLE_BAT(, 7677) +HANDLE_BAT(, 7678) +HANDLE_BAT(, 7679) +HANDLE_BAT(, 7680) +HANDLE_BAT(, 7681) +HANDLE_BAT(, 7682) +HANDLE_BAT(, 7683) +HANDLE_BAT(, 7684) +HANDLE_BAT(, 7685) +HANDLE_BAT(, 7686) +HANDLE_BAT(, 7687) +HANDLE_BAT(, 7688) +HANDLE_BAT(, 7689) +HANDLE_BAT(, 7690) +HANDLE_BAT(, 7691) +HANDLE_BAT(, 7692) +HANDLE_BAT(, 7693) +HANDLE_BAT(, 7694) +HANDLE_BAT(, 7695) +HANDLE_BAT(, 7696) +HANDLE_BAT(, 7697) +HANDLE_BAT(, 7698) +HANDLE_BAT(, 7699) +HANDLE_BAT(, 7700) +HANDLE_BAT(, 7701) +HANDLE_BAT(, 7702) +HANDLE_BAT(, 7703) +HANDLE_BAT(, 7704) +HANDLE_BAT(, 7705) +HANDLE_BAT(, 7706) +HANDLE_BAT(, 7707) +HANDLE_BAT(, 7708) +HANDLE_BAT(, 7709) +HANDLE_BAT(, 7710) +HANDLE_BAT(, 7711) +HANDLE_BAT(, 7712) +HANDLE_BAT(, 7713) +HANDLE_BAT(, 7714) +HANDLE_BAT(, 7715) +HANDLE_BAT(, 7716) +HANDLE_BAT(, 7717) +HANDLE_BAT(, 7718) +HANDLE_BAT(, 7719) +HANDLE_BAT(, 7720) +HANDLE_BAT(, 7721) +HANDLE_BAT(, 7722) +HANDLE_BAT(, 7723) +HANDLE_BAT(, 7724) +HANDLE_BAT(, 7725) +HANDLE_BAT(, 7726) +HANDLE_BAT(, 7727) +HANDLE_BAT(, 7728) +HANDLE_BAT(, 7729) +HANDLE_BAT(, 7730) +HANDLE_BAT(, 7731) +HANDLE_BAT(, 7732) +HANDLE_BAT(, 7733) +HANDLE_BAT(, 7734) +HANDLE_BAT(, 7735) +HANDLE_BAT(, 7736) +HANDLE_BAT(, 7737) +HANDLE_BAT(, 7738) +HANDLE_BAT(, 7739) +HANDLE_BAT(, 7740) +HANDLE_BAT(, 7741) +HANDLE_BAT(, 7742) +HANDLE_BAT(, 7743) +HANDLE_BAT(, 7744) +HANDLE_BAT(, 7745) +HANDLE_BAT(, 7746) +HANDLE_BAT(, 7747) +HANDLE_BAT(, 7748) +HANDLE_BAT(, 7749) +HANDLE_BAT(, 7750) +HANDLE_BAT(, 7751) +HANDLE_BAT(, 7752) +HANDLE_BAT(, 7753) +HANDLE_BAT(, 7754) +HANDLE_BAT(, 7755) +HANDLE_BAT(, 7756) +HANDLE_BAT(, 7757) +HANDLE_BAT(, 7758) +HANDLE_BAT(, 7759) +HANDLE_BAT(, 7760) +HANDLE_BAT(, 7761) +HANDLE_BAT(, 7762) +HANDLE_BAT(, 7763) +HANDLE_BAT(, 7764) +HANDLE_BAT(, 7765) +HANDLE_BAT(, 7766) +HANDLE_BAT(, 7767) +HANDLE_BAT(, 7768) +HANDLE_BAT(, 7769) +HANDLE_BAT(, 7770) +HANDLE_BAT(, 7771) +HANDLE_BAT(, 7772) +HANDLE_BAT(, 7773) +HANDLE_BAT(, 7774) +HANDLE_BAT(, 7775) +HANDLE_BAT(, 7776) +HANDLE_BAT(, 7777) +HANDLE_BAT(, 7778) +HANDLE_BAT(, 7779) +HANDLE_BAT(, 7780) +HANDLE_BAT(, 7781) +HANDLE_BAT(, 7782) +HANDLE_BAT(, 7783) +HANDLE_BAT(, 7784) +HANDLE_BAT(, 7785) +HANDLE_BAT(, 7786) +HANDLE_BAT(, 7787) +HANDLE_BAT(, 7788) +HANDLE_BAT(, 7789) +HANDLE_BAT(, 7790) +HANDLE_BAT(, 7791) +HANDLE_BAT(, 7792) +HANDLE_BAT(, 7793) +HANDLE_BAT(, 7794) +HANDLE_BAT(, 7795) +HANDLE_BAT(, 7796) +HANDLE_BAT(, 7797) +HANDLE_BAT(, 7798) +HANDLE_BAT(, 7799) +HANDLE_BAT(, 7800) +HANDLE_BAT(, 7801) +HANDLE_BAT(, 7802) +HANDLE_BAT(, 7803) +HANDLE_BAT(, 7804) +HANDLE_BAT(, 7805) +HANDLE_BAT(, 7806) +HANDLE_BAT(, 7807) +HANDLE_BAT(, 7808) +HANDLE_BAT(, 7809) +HANDLE_BAT(, 7810) +HANDLE_BAT(, 7811) +HANDLE_BAT(, 7812) +HANDLE_BAT(, 7813) +HANDLE_BAT(, 7814) +HANDLE_BAT(, 7815) +HANDLE_BAT(, 7816) +HANDLE_BAT(, 7817) +HANDLE_BAT(, 7818) +HANDLE_BAT(, 7819) +HANDLE_BAT(, 7820) +HANDLE_BAT(, 7821) +HANDLE_BAT(, 7822) +HANDLE_BAT(, 7823) +HANDLE_BAT(, 7824) +HANDLE_BAT(, 7825) +HANDLE_BAT(, 7826) +HANDLE_BAT(, 7827) +HANDLE_BAT(, 7828) +HANDLE_BAT(, 7829) +HANDLE_BAT(, 7830) +HANDLE_BAT(, 7831) +HANDLE_BAT(, 7832) +HANDLE_BAT(, 7833) +HANDLE_BAT(, 7834) +HANDLE_BAT(, 7835) +HANDLE_BAT(, 7836) +HANDLE_BAT(, 7837) +HANDLE_BAT(, 7838) +HANDLE_BAT(, 7839) +HANDLE_BAT(, 7840) +HANDLE_BAT(, 7841) +HANDLE_BAT(, 7842) +HANDLE_BAT(, 7843) +HANDLE_BAT(, 7844) +HANDLE_BAT(, 7845) +HANDLE_BAT(, 7846) +HANDLE_BAT(, 7847) +HANDLE_BAT(, 7848) +HANDLE_BAT(, 7849) +HANDLE_BAT(, 7850) +HANDLE_BAT(, 7851) +HANDLE_BAT(, 7852) +HANDLE_BAT(, 7853) +HANDLE_BAT(, 7854) +HANDLE_BAT(, 7855) +HANDLE_BAT(, 7856) +HANDLE_BAT(, 7857) +HANDLE_BAT(, 7858) +HANDLE_BAT(, 7859) +HANDLE_BAT(, 7860) +HANDLE_BAT(, 7861) +HANDLE_BAT(, 7862) +HANDLE_BAT(, 7863) +HANDLE_BAT(, 7864) +HANDLE_BAT(, 7865) +HANDLE_BAT(, 7866) +HANDLE_BAT(, 7867) +HANDLE_BAT(, 7868) +HANDLE_BAT(, 7869) +HANDLE_BAT(, 7870) +HANDLE_BAT(, 7871) +HANDLE_BAT(, 7872) +HANDLE_BAT(, 7873) +HANDLE_BAT(, 7874) +HANDLE_BAT(, 7875) +HANDLE_BAT(, 7876) +HANDLE_BAT(, 7877) +HANDLE_BAT(, 7878) +HANDLE_BAT(, 7879) +HANDLE_BAT(, 7880) +HANDLE_BAT(, 7881) +HANDLE_BAT(, 7882) +HANDLE_BAT(, 7883) +HANDLE_BAT(, 7884) +HANDLE_BAT(, 7885) +HANDLE_BAT(, 7886) +HANDLE_BAT(, 7887) +HANDLE_BAT(, 7888) +HANDLE_BAT(, 7889) +HANDLE_BAT(, 7890) +HANDLE_BAT(, 7891) +HANDLE_BAT(, 7892) +HANDLE_BAT(, 7893) +HANDLE_BAT(, 7894) +HANDLE_BAT(, 7895) +HANDLE_BAT(, 7896) +HANDLE_BAT(, 7897) +HANDLE_BAT(, 7898) +HANDLE_BAT(, 7899) +HANDLE_BAT(, 7900) +HANDLE_BAT(, 7901) +HANDLE_BAT(, 7902) +HANDLE_BAT(, 7903) +HANDLE_BAT(, 7904) +HANDLE_BAT(, 7905) +HANDLE_BAT(, 7906) +HANDLE_BAT(, 7907) +HANDLE_BAT(, 7908) +HANDLE_BAT(, 7909) +HANDLE_BAT(, 7910) +HANDLE_BAT(, 7911) +HANDLE_BAT(, 7912) +HANDLE_BAT(, 7913) +HANDLE_BAT(, 7914) +HANDLE_BAT(, 7915) +HANDLE_BAT(, 7916) +HANDLE_BAT(, 7917) +HANDLE_BAT(, 7918) +HANDLE_BAT(, 7919) +HANDLE_BAT(, 7920) +HANDLE_BAT(, 7921) +HANDLE_BAT(, 7922) +HANDLE_BAT(, 7923) +HANDLE_BAT(, 7924) +HANDLE_BAT(, 7925) +HANDLE_BAT(, 7926) +HANDLE_BAT(, 7927) +HANDLE_BAT(, 7928) +HANDLE_BAT(, 7929) +HANDLE_BAT(, 7930) +HANDLE_BAT(, 7931) +HANDLE_BAT(, 7932) +HANDLE_BAT(, 7933) +HANDLE_BAT(, 7934) +HANDLE_BAT(, 7935) +HANDLE_BAT(, 7936) +HANDLE_BAT(, 7937) +HANDLE_BAT(, 7938) +HANDLE_BAT(, 7939) +HANDLE_BAT(, 7940) +HANDLE_BAT(, 7941) +HANDLE_BAT(, 7942) +HANDLE_BAT(, 7943) +HANDLE_BAT(, 7944) +HANDLE_BAT(, 7945) +HANDLE_BAT(, 7946) +HANDLE_BAT(, 7947) +HANDLE_BAT(, 7948) +HANDLE_BAT(, 7949) +HANDLE_BAT(, 7950) +HANDLE_BAT(, 7951) +HANDLE_BAT(, 7952) +HANDLE_BAT(, 7953) +HANDLE_BAT(, 7954) +HANDLE_BAT(, 7955) +HANDLE_BAT(, 7956) +HANDLE_BAT(, 7957) +HANDLE_BAT(, 7958) +HANDLE_BAT(, 7959) +HANDLE_BAT(, 7960) +HANDLE_BAT(, 7961) +HANDLE_BAT(, 7962) +HANDLE_BAT(, 7963) +HANDLE_BAT(, 7964) +HANDLE_BAT(, 7965) +HANDLE_BAT(, 7966) +HANDLE_BAT(, 7967) +HANDLE_BAT(, 7968) +HANDLE_BAT(, 7969) +HANDLE_BAT(, 7970) +HANDLE_BAT(, 7971) +HANDLE_BAT(, 7972) +HANDLE_BAT(, 7973) +HANDLE_BAT(, 7974) +HANDLE_BAT(, 7975) +HANDLE_BAT(, 7976) +HANDLE_BAT(, 7977) +HANDLE_BAT(, 7978) +HANDLE_BAT(, 7979) +HANDLE_BAT(, 7980) +HANDLE_BAT(, 7981) +HANDLE_BAT(, 7982) +HANDLE_BAT(, 7983) +HANDLE_BAT(, 7984) +HANDLE_BAT(, 7985) +HANDLE_BAT(, 7986) +HANDLE_BAT(, 7987) +HANDLE_BAT(, 7988) +HANDLE_BAT(, 7989) +HANDLE_BAT(, 7990) +HANDLE_BAT(, 7991) +HANDLE_BAT(, 7992) +HANDLE_BAT(, 7993) +HANDLE_BAT(, 7994) +HANDLE_BAT(, 7995) +HANDLE_BAT(, 7996) +HANDLE_BAT(, 7997) +HANDLE_BAT(, 7998) +HANDLE_BAT(, 7999) +HANDLE_BAT(, 8000) +HANDLE_BAT(, 8001) +HANDLE_BAT(, 8002) +HANDLE_BAT(, 8003) +HANDLE_BAT(, 8004) +HANDLE_BAT(, 8005) +HANDLE_BAT(, 8006) +HANDLE_BAT(, 8007) +HANDLE_BAT(, 8008) +HANDLE_BAT(, 8009) +HANDLE_BAT(, 8010) +HANDLE_BAT(, 8011) +HANDLE_BAT(, 8012) +HANDLE_BAT(, 8013) +HANDLE_BAT(, 8014) +HANDLE_BAT(, 8015) +HANDLE_BAT(, 8016) +HANDLE_BAT(, 8017) +HANDLE_BAT(, 8018) +HANDLE_BAT(, 8019) +HANDLE_BAT(, 8020) +HANDLE_BAT(, 8021) +HANDLE_BAT(, 8022) +HANDLE_BAT(, 8023) +HANDLE_BAT(, 8024) +HANDLE_BAT(, 8025) +HANDLE_BAT(, 8026) +HANDLE_BAT(, 8027) +HANDLE_BAT(, 8028) +HANDLE_BAT(, 8029) +HANDLE_BAT(, 8030) +HANDLE_BAT(, 8031) +HANDLE_BAT(, 8032) +HANDLE_BAT(, 8033) +HANDLE_BAT(, 8034) +HANDLE_BAT(, 8035) +HANDLE_BAT(, 8036) +HANDLE_BAT(, 8037) +HANDLE_BAT(, 8038) +HANDLE_BAT(, 8039) +HANDLE_BAT(, 8040) +HANDLE_BAT(, 8041) +HANDLE_BAT(, 8042) +HANDLE_BAT(, 8043) +HANDLE_BAT(, 8044) +HANDLE_BAT(, 8045) +HANDLE_BAT(, 8046) +HANDLE_BAT(, 8047) +HANDLE_BAT(, 8048) +HANDLE_BAT(, 8049) +HANDLE_BAT(, 8050) +HANDLE_BAT(, 8051) +HANDLE_BAT(, 8052) +HANDLE_BAT(, 8053) +HANDLE_BAT(, 8054) +HANDLE_BAT(, 8055) +HANDLE_BAT(, 8056) +HANDLE_BAT(, 8057) +HANDLE_BAT(, 8058) +HANDLE_BAT(, 8059) +HANDLE_BAT(, 8060) +HANDLE_BAT(, 8061) +HANDLE_BAT(, 8062) +HANDLE_BAT(, 8063) +HANDLE_BAT(, 8064) +HANDLE_BAT(, 8065) +HANDLE_BAT(, 8066) +HANDLE_BAT(, 8067) +HANDLE_BAT(, 8068) +HANDLE_BAT(, 8069) +HANDLE_BAT(, 8070) +HANDLE_BAT(, 8071) +HANDLE_BAT(, 8072) +HANDLE_BAT(, 8073) +HANDLE_BAT(, 8074) +HANDLE_BAT(, 8075) +HANDLE_BAT(, 8076) +HANDLE_BAT(, 8077) +HANDLE_BAT(, 8078) +HANDLE_BAT(, 8079) +HANDLE_BAT(, 8080) +HANDLE_BAT(, 8081) +HANDLE_BAT(, 8082) +HANDLE_BAT(, 8083) +HANDLE_BAT(, 8084) +HANDLE_BAT(, 8085) +HANDLE_BAT(, 8086) +HANDLE_BAT(, 8087) +HANDLE_BAT(, 8088) +HANDLE_BAT(, 8089) +HANDLE_BAT(, 8090) +HANDLE_BAT(, 8091) +HANDLE_BAT(, 8092) +HANDLE_BAT(, 8093) +HANDLE_BAT(, 8094) +HANDLE_BAT(, 8095) +HANDLE_BAT(, 8096) +HANDLE_BAT(, 8097) +HANDLE_BAT(, 8098) +HANDLE_BAT(, 8099) +HANDLE_BAT(, 8100) +HANDLE_BAT(, 8101) +HANDLE_BAT(, 8102) +HANDLE_BAT(, 8103) +HANDLE_BAT(, 8104) +HANDLE_BAT(, 8105) +HANDLE_BAT(, 8106) +HANDLE_BAT(, 8107) +HANDLE_BAT(, 8108) +HANDLE_BAT(, 8109) +HANDLE_BAT(, 8110) +HANDLE_BAT(, 8111) +HANDLE_BAT(, 8112) +HANDLE_BAT(, 8113) +HANDLE_BAT(, 8114) +HANDLE_BAT(, 8115) +HANDLE_BAT(, 8116) +HANDLE_BAT(, 8117) +HANDLE_BAT(, 8118) +HANDLE_BAT(, 8119) +HANDLE_BAT(, 8120) +HANDLE_BAT(, 8121) +HANDLE_BAT(, 8122) +HANDLE_BAT(, 8123) +HANDLE_BAT(, 8124) +HANDLE_BAT(, 8125) +HANDLE_BAT(, 8126) +HANDLE_BAT(, 8127) +HANDLE_BAT(, 8128) +HANDLE_BAT(, 8129) +HANDLE_BAT(, 8130) +HANDLE_BAT(, 8131) +HANDLE_BAT(, 8132) +HANDLE_BAT(, 8133) +HANDLE_BAT(, 8134) +HANDLE_BAT(, 8135) +HANDLE_BAT(, 8136) +HANDLE_BAT(, 8137) +HANDLE_BAT(, 8138) +HANDLE_BAT(, 8139) +HANDLE_BAT(, 8140) +HANDLE_BAT(, 8141) +HANDLE_BAT(, 8142) +HANDLE_BAT(, 8143) +HANDLE_BAT(, 8144) +HANDLE_BAT(, 8145) +HANDLE_BAT(, 8146) +HANDLE_BAT(, 8147) +HANDLE_BAT(, 8148) +HANDLE_BAT(, 8149) +HANDLE_BAT(, 8150) +HANDLE_BAT(, 8151) +HANDLE_BAT(, 8152) +HANDLE_BAT(, 8153) +HANDLE_BAT(, 8154) +HANDLE_BAT(, 8155) +HANDLE_BAT(, 8156) +HANDLE_BAT(, 8157) +HANDLE_BAT(, 8158) +HANDLE_BAT(, 8159) +HANDLE_BAT(, 8160) +HANDLE_BAT(, 8161) +HANDLE_BAT(, 8162) +HANDLE_BAT(, 8163) +HANDLE_BAT(, 8164) +HANDLE_BAT(, 8165) +HANDLE_BAT(, 8166) +HANDLE_BAT(, 8167) +HANDLE_BAT(, 8168) +HANDLE_BAT(, 8169) +HANDLE_BAT(, 8170) +HANDLE_BAT(, 8171) +HANDLE_BAT(, 8172) +HANDLE_BAT(, 8173) +HANDLE_BAT(, 8174) +HANDLE_BAT(, 8175) +HANDLE_BAT(, 8176) +HANDLE_BAT(, 8177) +HANDLE_BAT(, 8178) +HANDLE_BAT(, 8179) +HANDLE_BAT(, 8180) +HANDLE_BAT(, 8181) +HANDLE_BAT(, 8182) +HANDLE_BAT(, 8183) +HANDLE_BAT(, 8184) +HANDLE_BAT(, 8185) +HANDLE_BAT(, 8186) +HANDLE_BAT(, 8187) +HANDLE_BAT(, 8188) +HANDLE_BAT(, 8189) +HANDLE_BAT(, 8190) +HANDLE_BAT(, 8191) +HANDLE_BAT(, 8192) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 7169) +HANDLE_BAT(APINT_TYPE_PREFIX, 7170) +HANDLE_BAT(APINT_TYPE_PREFIX, 7171) +HANDLE_BAT(APINT_TYPE_PREFIX, 7172) +HANDLE_BAT(APINT_TYPE_PREFIX, 7173) +HANDLE_BAT(APINT_TYPE_PREFIX, 7174) +HANDLE_BAT(APINT_TYPE_PREFIX, 7175) +HANDLE_BAT(APINT_TYPE_PREFIX, 7176) +HANDLE_BAT(APINT_TYPE_PREFIX, 7177) +HANDLE_BAT(APINT_TYPE_PREFIX, 7178) +HANDLE_BAT(APINT_TYPE_PREFIX, 7179) +HANDLE_BAT(APINT_TYPE_PREFIX, 7180) +HANDLE_BAT(APINT_TYPE_PREFIX, 7181) +HANDLE_BAT(APINT_TYPE_PREFIX, 7182) +HANDLE_BAT(APINT_TYPE_PREFIX, 7183) +HANDLE_BAT(APINT_TYPE_PREFIX, 7184) +HANDLE_BAT(APINT_TYPE_PREFIX, 7185) +HANDLE_BAT(APINT_TYPE_PREFIX, 7186) +HANDLE_BAT(APINT_TYPE_PREFIX, 7187) +HANDLE_BAT(APINT_TYPE_PREFIX, 7188) +HANDLE_BAT(APINT_TYPE_PREFIX, 7189) +HANDLE_BAT(APINT_TYPE_PREFIX, 7190) +HANDLE_BAT(APINT_TYPE_PREFIX, 7191) +HANDLE_BAT(APINT_TYPE_PREFIX, 7192) +HANDLE_BAT(APINT_TYPE_PREFIX, 7193) +HANDLE_BAT(APINT_TYPE_PREFIX, 7194) +HANDLE_BAT(APINT_TYPE_PREFIX, 7195) +HANDLE_BAT(APINT_TYPE_PREFIX, 7196) +HANDLE_BAT(APINT_TYPE_PREFIX, 7197) +HANDLE_BAT(APINT_TYPE_PREFIX, 7198) +HANDLE_BAT(APINT_TYPE_PREFIX, 7199) +HANDLE_BAT(APINT_TYPE_PREFIX, 7200) +HANDLE_BAT(APINT_TYPE_PREFIX, 7201) +HANDLE_BAT(APINT_TYPE_PREFIX, 7202) +HANDLE_BAT(APINT_TYPE_PREFIX, 7203) +HANDLE_BAT(APINT_TYPE_PREFIX, 7204) +HANDLE_BAT(APINT_TYPE_PREFIX, 7205) +HANDLE_BAT(APINT_TYPE_PREFIX, 7206) +HANDLE_BAT(APINT_TYPE_PREFIX, 7207) +HANDLE_BAT(APINT_TYPE_PREFIX, 7208) +HANDLE_BAT(APINT_TYPE_PREFIX, 7209) +HANDLE_BAT(APINT_TYPE_PREFIX, 7210) +HANDLE_BAT(APINT_TYPE_PREFIX, 7211) +HANDLE_BAT(APINT_TYPE_PREFIX, 7212) +HANDLE_BAT(APINT_TYPE_PREFIX, 7213) +HANDLE_BAT(APINT_TYPE_PREFIX, 7214) +HANDLE_BAT(APINT_TYPE_PREFIX, 7215) +HANDLE_BAT(APINT_TYPE_PREFIX, 7216) +HANDLE_BAT(APINT_TYPE_PREFIX, 7217) +HANDLE_BAT(APINT_TYPE_PREFIX, 7218) +HANDLE_BAT(APINT_TYPE_PREFIX, 7219) +HANDLE_BAT(APINT_TYPE_PREFIX, 7220) +HANDLE_BAT(APINT_TYPE_PREFIX, 7221) +HANDLE_BAT(APINT_TYPE_PREFIX, 7222) +HANDLE_BAT(APINT_TYPE_PREFIX, 7223) +HANDLE_BAT(APINT_TYPE_PREFIX, 7224) +HANDLE_BAT(APINT_TYPE_PREFIX, 7225) +HANDLE_BAT(APINT_TYPE_PREFIX, 7226) +HANDLE_BAT(APINT_TYPE_PREFIX, 7227) +HANDLE_BAT(APINT_TYPE_PREFIX, 7228) +HANDLE_BAT(APINT_TYPE_PREFIX, 7229) +HANDLE_BAT(APINT_TYPE_PREFIX, 7230) +HANDLE_BAT(APINT_TYPE_PREFIX, 7231) +HANDLE_BAT(APINT_TYPE_PREFIX, 7232) +HANDLE_BAT(APINT_TYPE_PREFIX, 7233) +HANDLE_BAT(APINT_TYPE_PREFIX, 7234) +HANDLE_BAT(APINT_TYPE_PREFIX, 7235) +HANDLE_BAT(APINT_TYPE_PREFIX, 7236) +HANDLE_BAT(APINT_TYPE_PREFIX, 7237) +HANDLE_BAT(APINT_TYPE_PREFIX, 7238) +HANDLE_BAT(APINT_TYPE_PREFIX, 7239) +HANDLE_BAT(APINT_TYPE_PREFIX, 7240) +HANDLE_BAT(APINT_TYPE_PREFIX, 7241) +HANDLE_BAT(APINT_TYPE_PREFIX, 7242) +HANDLE_BAT(APINT_TYPE_PREFIX, 7243) +HANDLE_BAT(APINT_TYPE_PREFIX, 7244) +HANDLE_BAT(APINT_TYPE_PREFIX, 7245) +HANDLE_BAT(APINT_TYPE_PREFIX, 7246) +HANDLE_BAT(APINT_TYPE_PREFIX, 7247) +HANDLE_BAT(APINT_TYPE_PREFIX, 7248) +HANDLE_BAT(APINT_TYPE_PREFIX, 7249) +HANDLE_BAT(APINT_TYPE_PREFIX, 7250) +HANDLE_BAT(APINT_TYPE_PREFIX, 7251) +HANDLE_BAT(APINT_TYPE_PREFIX, 7252) +HANDLE_BAT(APINT_TYPE_PREFIX, 7253) +HANDLE_BAT(APINT_TYPE_PREFIX, 7254) +HANDLE_BAT(APINT_TYPE_PREFIX, 7255) +HANDLE_BAT(APINT_TYPE_PREFIX, 7256) +HANDLE_BAT(APINT_TYPE_PREFIX, 7257) +HANDLE_BAT(APINT_TYPE_PREFIX, 7258) +HANDLE_BAT(APINT_TYPE_PREFIX, 7259) +HANDLE_BAT(APINT_TYPE_PREFIX, 7260) +HANDLE_BAT(APINT_TYPE_PREFIX, 7261) +HANDLE_BAT(APINT_TYPE_PREFIX, 7262) +HANDLE_BAT(APINT_TYPE_PREFIX, 7263) +HANDLE_BAT(APINT_TYPE_PREFIX, 7264) +HANDLE_BAT(APINT_TYPE_PREFIX, 7265) +HANDLE_BAT(APINT_TYPE_PREFIX, 7266) +HANDLE_BAT(APINT_TYPE_PREFIX, 7267) +HANDLE_BAT(APINT_TYPE_PREFIX, 7268) +HANDLE_BAT(APINT_TYPE_PREFIX, 7269) +HANDLE_BAT(APINT_TYPE_PREFIX, 7270) +HANDLE_BAT(APINT_TYPE_PREFIX, 7271) +HANDLE_BAT(APINT_TYPE_PREFIX, 7272) +HANDLE_BAT(APINT_TYPE_PREFIX, 7273) +HANDLE_BAT(APINT_TYPE_PREFIX, 7274) +HANDLE_BAT(APINT_TYPE_PREFIX, 7275) +HANDLE_BAT(APINT_TYPE_PREFIX, 7276) +HANDLE_BAT(APINT_TYPE_PREFIX, 7277) +HANDLE_BAT(APINT_TYPE_PREFIX, 7278) +HANDLE_BAT(APINT_TYPE_PREFIX, 7279) +HANDLE_BAT(APINT_TYPE_PREFIX, 7280) +HANDLE_BAT(APINT_TYPE_PREFIX, 7281) +HANDLE_BAT(APINT_TYPE_PREFIX, 7282) +HANDLE_BAT(APINT_TYPE_PREFIX, 7283) +HANDLE_BAT(APINT_TYPE_PREFIX, 7284) +HANDLE_BAT(APINT_TYPE_PREFIX, 7285) +HANDLE_BAT(APINT_TYPE_PREFIX, 7286) +HANDLE_BAT(APINT_TYPE_PREFIX, 7287) +HANDLE_BAT(APINT_TYPE_PREFIX, 7288) +HANDLE_BAT(APINT_TYPE_PREFIX, 7289) +HANDLE_BAT(APINT_TYPE_PREFIX, 7290) +HANDLE_BAT(APINT_TYPE_PREFIX, 7291) +HANDLE_BAT(APINT_TYPE_PREFIX, 7292) +HANDLE_BAT(APINT_TYPE_PREFIX, 7293) +HANDLE_BAT(APINT_TYPE_PREFIX, 7294) +HANDLE_BAT(APINT_TYPE_PREFIX, 7295) +HANDLE_BAT(APINT_TYPE_PREFIX, 7296) +HANDLE_BAT(APINT_TYPE_PREFIX, 7297) +HANDLE_BAT(APINT_TYPE_PREFIX, 7298) +HANDLE_BAT(APINT_TYPE_PREFIX, 7299) +HANDLE_BAT(APINT_TYPE_PREFIX, 7300) +HANDLE_BAT(APINT_TYPE_PREFIX, 7301) +HANDLE_BAT(APINT_TYPE_PREFIX, 7302) +HANDLE_BAT(APINT_TYPE_PREFIX, 7303) +HANDLE_BAT(APINT_TYPE_PREFIX, 7304) +HANDLE_BAT(APINT_TYPE_PREFIX, 7305) +HANDLE_BAT(APINT_TYPE_PREFIX, 7306) +HANDLE_BAT(APINT_TYPE_PREFIX, 7307) +HANDLE_BAT(APINT_TYPE_PREFIX, 7308) +HANDLE_BAT(APINT_TYPE_PREFIX, 7309) +HANDLE_BAT(APINT_TYPE_PREFIX, 7310) +HANDLE_BAT(APINT_TYPE_PREFIX, 7311) +HANDLE_BAT(APINT_TYPE_PREFIX, 7312) +HANDLE_BAT(APINT_TYPE_PREFIX, 7313) +HANDLE_BAT(APINT_TYPE_PREFIX, 7314) +HANDLE_BAT(APINT_TYPE_PREFIX, 7315) +HANDLE_BAT(APINT_TYPE_PREFIX, 7316) +HANDLE_BAT(APINT_TYPE_PREFIX, 7317) +HANDLE_BAT(APINT_TYPE_PREFIX, 7318) +HANDLE_BAT(APINT_TYPE_PREFIX, 7319) +HANDLE_BAT(APINT_TYPE_PREFIX, 7320) +HANDLE_BAT(APINT_TYPE_PREFIX, 7321) +HANDLE_BAT(APINT_TYPE_PREFIX, 7322) +HANDLE_BAT(APINT_TYPE_PREFIX, 7323) +HANDLE_BAT(APINT_TYPE_PREFIX, 7324) +HANDLE_BAT(APINT_TYPE_PREFIX, 7325) +HANDLE_BAT(APINT_TYPE_PREFIX, 7326) +HANDLE_BAT(APINT_TYPE_PREFIX, 7327) +HANDLE_BAT(APINT_TYPE_PREFIX, 7328) +HANDLE_BAT(APINT_TYPE_PREFIX, 7329) +HANDLE_BAT(APINT_TYPE_PREFIX, 7330) +HANDLE_BAT(APINT_TYPE_PREFIX, 7331) +HANDLE_BAT(APINT_TYPE_PREFIX, 7332) +HANDLE_BAT(APINT_TYPE_PREFIX, 7333) +HANDLE_BAT(APINT_TYPE_PREFIX, 7334) +HANDLE_BAT(APINT_TYPE_PREFIX, 7335) +HANDLE_BAT(APINT_TYPE_PREFIX, 7336) +HANDLE_BAT(APINT_TYPE_PREFIX, 7337) +HANDLE_BAT(APINT_TYPE_PREFIX, 7338) +HANDLE_BAT(APINT_TYPE_PREFIX, 7339) +HANDLE_BAT(APINT_TYPE_PREFIX, 7340) +HANDLE_BAT(APINT_TYPE_PREFIX, 7341) +HANDLE_BAT(APINT_TYPE_PREFIX, 7342) +HANDLE_BAT(APINT_TYPE_PREFIX, 7343) +HANDLE_BAT(APINT_TYPE_PREFIX, 7344) +HANDLE_BAT(APINT_TYPE_PREFIX, 7345) +HANDLE_BAT(APINT_TYPE_PREFIX, 7346) +HANDLE_BAT(APINT_TYPE_PREFIX, 7347) +HANDLE_BAT(APINT_TYPE_PREFIX, 7348) +HANDLE_BAT(APINT_TYPE_PREFIX, 7349) +HANDLE_BAT(APINT_TYPE_PREFIX, 7350) +HANDLE_BAT(APINT_TYPE_PREFIX, 7351) +HANDLE_BAT(APINT_TYPE_PREFIX, 7352) +HANDLE_BAT(APINT_TYPE_PREFIX, 7353) +HANDLE_BAT(APINT_TYPE_PREFIX, 7354) +HANDLE_BAT(APINT_TYPE_PREFIX, 7355) +HANDLE_BAT(APINT_TYPE_PREFIX, 7356) +HANDLE_BAT(APINT_TYPE_PREFIX, 7357) +HANDLE_BAT(APINT_TYPE_PREFIX, 7358) +HANDLE_BAT(APINT_TYPE_PREFIX, 7359) +HANDLE_BAT(APINT_TYPE_PREFIX, 7360) +HANDLE_BAT(APINT_TYPE_PREFIX, 7361) +HANDLE_BAT(APINT_TYPE_PREFIX, 7362) +HANDLE_BAT(APINT_TYPE_PREFIX, 7363) +HANDLE_BAT(APINT_TYPE_PREFIX, 7364) +HANDLE_BAT(APINT_TYPE_PREFIX, 7365) +HANDLE_BAT(APINT_TYPE_PREFIX, 7366) +HANDLE_BAT(APINT_TYPE_PREFIX, 7367) +HANDLE_BAT(APINT_TYPE_PREFIX, 7368) +HANDLE_BAT(APINT_TYPE_PREFIX, 7369) +HANDLE_BAT(APINT_TYPE_PREFIX, 7370) +HANDLE_BAT(APINT_TYPE_PREFIX, 7371) +HANDLE_BAT(APINT_TYPE_PREFIX, 7372) +HANDLE_BAT(APINT_TYPE_PREFIX, 7373) +HANDLE_BAT(APINT_TYPE_PREFIX, 7374) +HANDLE_BAT(APINT_TYPE_PREFIX, 7375) +HANDLE_BAT(APINT_TYPE_PREFIX, 7376) +HANDLE_BAT(APINT_TYPE_PREFIX, 7377) +HANDLE_BAT(APINT_TYPE_PREFIX, 7378) +HANDLE_BAT(APINT_TYPE_PREFIX, 7379) +HANDLE_BAT(APINT_TYPE_PREFIX, 7380) +HANDLE_BAT(APINT_TYPE_PREFIX, 7381) +HANDLE_BAT(APINT_TYPE_PREFIX, 7382) +HANDLE_BAT(APINT_TYPE_PREFIX, 7383) +HANDLE_BAT(APINT_TYPE_PREFIX, 7384) +HANDLE_BAT(APINT_TYPE_PREFIX, 7385) +HANDLE_BAT(APINT_TYPE_PREFIX, 7386) +HANDLE_BAT(APINT_TYPE_PREFIX, 7387) +HANDLE_BAT(APINT_TYPE_PREFIX, 7388) +HANDLE_BAT(APINT_TYPE_PREFIX, 7389) +HANDLE_BAT(APINT_TYPE_PREFIX, 7390) +HANDLE_BAT(APINT_TYPE_PREFIX, 7391) +HANDLE_BAT(APINT_TYPE_PREFIX, 7392) +HANDLE_BAT(APINT_TYPE_PREFIX, 7393) +HANDLE_BAT(APINT_TYPE_PREFIX, 7394) +HANDLE_BAT(APINT_TYPE_PREFIX, 7395) +HANDLE_BAT(APINT_TYPE_PREFIX, 7396) +HANDLE_BAT(APINT_TYPE_PREFIX, 7397) +HANDLE_BAT(APINT_TYPE_PREFIX, 7398) +HANDLE_BAT(APINT_TYPE_PREFIX, 7399) +HANDLE_BAT(APINT_TYPE_PREFIX, 7400) +HANDLE_BAT(APINT_TYPE_PREFIX, 7401) +HANDLE_BAT(APINT_TYPE_PREFIX, 7402) +HANDLE_BAT(APINT_TYPE_PREFIX, 7403) +HANDLE_BAT(APINT_TYPE_PREFIX, 7404) +HANDLE_BAT(APINT_TYPE_PREFIX, 7405) +HANDLE_BAT(APINT_TYPE_PREFIX, 7406) +HANDLE_BAT(APINT_TYPE_PREFIX, 7407) +HANDLE_BAT(APINT_TYPE_PREFIX, 7408) +HANDLE_BAT(APINT_TYPE_PREFIX, 7409) +HANDLE_BAT(APINT_TYPE_PREFIX, 7410) +HANDLE_BAT(APINT_TYPE_PREFIX, 7411) +HANDLE_BAT(APINT_TYPE_PREFIX, 7412) +HANDLE_BAT(APINT_TYPE_PREFIX, 7413) +HANDLE_BAT(APINT_TYPE_PREFIX, 7414) +HANDLE_BAT(APINT_TYPE_PREFIX, 7415) +HANDLE_BAT(APINT_TYPE_PREFIX, 7416) +HANDLE_BAT(APINT_TYPE_PREFIX, 7417) +HANDLE_BAT(APINT_TYPE_PREFIX, 7418) +HANDLE_BAT(APINT_TYPE_PREFIX, 7419) +HANDLE_BAT(APINT_TYPE_PREFIX, 7420) +HANDLE_BAT(APINT_TYPE_PREFIX, 7421) +HANDLE_BAT(APINT_TYPE_PREFIX, 7422) +HANDLE_BAT(APINT_TYPE_PREFIX, 7423) +HANDLE_BAT(APINT_TYPE_PREFIX, 7424) +HANDLE_BAT(APINT_TYPE_PREFIX, 7425) +HANDLE_BAT(APINT_TYPE_PREFIX, 7426) +HANDLE_BAT(APINT_TYPE_PREFIX, 7427) +HANDLE_BAT(APINT_TYPE_PREFIX, 7428) +HANDLE_BAT(APINT_TYPE_PREFIX, 7429) +HANDLE_BAT(APINT_TYPE_PREFIX, 7430) +HANDLE_BAT(APINT_TYPE_PREFIX, 7431) +HANDLE_BAT(APINT_TYPE_PREFIX, 7432) +HANDLE_BAT(APINT_TYPE_PREFIX, 7433) +HANDLE_BAT(APINT_TYPE_PREFIX, 7434) +HANDLE_BAT(APINT_TYPE_PREFIX, 7435) +HANDLE_BAT(APINT_TYPE_PREFIX, 7436) +HANDLE_BAT(APINT_TYPE_PREFIX, 7437) +HANDLE_BAT(APINT_TYPE_PREFIX, 7438) +HANDLE_BAT(APINT_TYPE_PREFIX, 7439) +HANDLE_BAT(APINT_TYPE_PREFIX, 7440) +HANDLE_BAT(APINT_TYPE_PREFIX, 7441) +HANDLE_BAT(APINT_TYPE_PREFIX, 7442) +HANDLE_BAT(APINT_TYPE_PREFIX, 7443) +HANDLE_BAT(APINT_TYPE_PREFIX, 7444) +HANDLE_BAT(APINT_TYPE_PREFIX, 7445) +HANDLE_BAT(APINT_TYPE_PREFIX, 7446) +HANDLE_BAT(APINT_TYPE_PREFIX, 7447) +HANDLE_BAT(APINT_TYPE_PREFIX, 7448) +HANDLE_BAT(APINT_TYPE_PREFIX, 7449) +HANDLE_BAT(APINT_TYPE_PREFIX, 7450) +HANDLE_BAT(APINT_TYPE_PREFIX, 7451) +HANDLE_BAT(APINT_TYPE_PREFIX, 7452) +HANDLE_BAT(APINT_TYPE_PREFIX, 7453) +HANDLE_BAT(APINT_TYPE_PREFIX, 7454) +HANDLE_BAT(APINT_TYPE_PREFIX, 7455) +HANDLE_BAT(APINT_TYPE_PREFIX, 7456) +HANDLE_BAT(APINT_TYPE_PREFIX, 7457) +HANDLE_BAT(APINT_TYPE_PREFIX, 7458) +HANDLE_BAT(APINT_TYPE_PREFIX, 7459) +HANDLE_BAT(APINT_TYPE_PREFIX, 7460) +HANDLE_BAT(APINT_TYPE_PREFIX, 7461) +HANDLE_BAT(APINT_TYPE_PREFIX, 7462) +HANDLE_BAT(APINT_TYPE_PREFIX, 7463) +HANDLE_BAT(APINT_TYPE_PREFIX, 7464) +HANDLE_BAT(APINT_TYPE_PREFIX, 7465) +HANDLE_BAT(APINT_TYPE_PREFIX, 7466) +HANDLE_BAT(APINT_TYPE_PREFIX, 7467) +HANDLE_BAT(APINT_TYPE_PREFIX, 7468) +HANDLE_BAT(APINT_TYPE_PREFIX, 7469) +HANDLE_BAT(APINT_TYPE_PREFIX, 7470) +HANDLE_BAT(APINT_TYPE_PREFIX, 7471) +HANDLE_BAT(APINT_TYPE_PREFIX, 7472) +HANDLE_BAT(APINT_TYPE_PREFIX, 7473) +HANDLE_BAT(APINT_TYPE_PREFIX, 7474) +HANDLE_BAT(APINT_TYPE_PREFIX, 7475) +HANDLE_BAT(APINT_TYPE_PREFIX, 7476) +HANDLE_BAT(APINT_TYPE_PREFIX, 7477) +HANDLE_BAT(APINT_TYPE_PREFIX, 7478) +HANDLE_BAT(APINT_TYPE_PREFIX, 7479) +HANDLE_BAT(APINT_TYPE_PREFIX, 7480) +HANDLE_BAT(APINT_TYPE_PREFIX, 7481) +HANDLE_BAT(APINT_TYPE_PREFIX, 7482) +HANDLE_BAT(APINT_TYPE_PREFIX, 7483) +HANDLE_BAT(APINT_TYPE_PREFIX, 7484) +HANDLE_BAT(APINT_TYPE_PREFIX, 7485) +HANDLE_BAT(APINT_TYPE_PREFIX, 7486) +HANDLE_BAT(APINT_TYPE_PREFIX, 7487) +HANDLE_BAT(APINT_TYPE_PREFIX, 7488) +HANDLE_BAT(APINT_TYPE_PREFIX, 7489) +HANDLE_BAT(APINT_TYPE_PREFIX, 7490) +HANDLE_BAT(APINT_TYPE_PREFIX, 7491) +HANDLE_BAT(APINT_TYPE_PREFIX, 7492) +HANDLE_BAT(APINT_TYPE_PREFIX, 7493) +HANDLE_BAT(APINT_TYPE_PREFIX, 7494) +HANDLE_BAT(APINT_TYPE_PREFIX, 7495) +HANDLE_BAT(APINT_TYPE_PREFIX, 7496) +HANDLE_BAT(APINT_TYPE_PREFIX, 7497) +HANDLE_BAT(APINT_TYPE_PREFIX, 7498) +HANDLE_BAT(APINT_TYPE_PREFIX, 7499) +HANDLE_BAT(APINT_TYPE_PREFIX, 7500) +HANDLE_BAT(APINT_TYPE_PREFIX, 7501) +HANDLE_BAT(APINT_TYPE_PREFIX, 7502) +HANDLE_BAT(APINT_TYPE_PREFIX, 7503) +HANDLE_BAT(APINT_TYPE_PREFIX, 7504) +HANDLE_BAT(APINT_TYPE_PREFIX, 7505) +HANDLE_BAT(APINT_TYPE_PREFIX, 7506) +HANDLE_BAT(APINT_TYPE_PREFIX, 7507) +HANDLE_BAT(APINT_TYPE_PREFIX, 7508) +HANDLE_BAT(APINT_TYPE_PREFIX, 7509) +HANDLE_BAT(APINT_TYPE_PREFIX, 7510) +HANDLE_BAT(APINT_TYPE_PREFIX, 7511) +HANDLE_BAT(APINT_TYPE_PREFIX, 7512) +HANDLE_BAT(APINT_TYPE_PREFIX, 7513) +HANDLE_BAT(APINT_TYPE_PREFIX, 7514) +HANDLE_BAT(APINT_TYPE_PREFIX, 7515) +HANDLE_BAT(APINT_TYPE_PREFIX, 7516) +HANDLE_BAT(APINT_TYPE_PREFIX, 7517) +HANDLE_BAT(APINT_TYPE_PREFIX, 7518) +HANDLE_BAT(APINT_TYPE_PREFIX, 7519) +HANDLE_BAT(APINT_TYPE_PREFIX, 7520) +HANDLE_BAT(APINT_TYPE_PREFIX, 7521) +HANDLE_BAT(APINT_TYPE_PREFIX, 7522) +HANDLE_BAT(APINT_TYPE_PREFIX, 7523) +HANDLE_BAT(APINT_TYPE_PREFIX, 7524) +HANDLE_BAT(APINT_TYPE_PREFIX, 7525) +HANDLE_BAT(APINT_TYPE_PREFIX, 7526) +HANDLE_BAT(APINT_TYPE_PREFIX, 7527) +HANDLE_BAT(APINT_TYPE_PREFIX, 7528) +HANDLE_BAT(APINT_TYPE_PREFIX, 7529) +HANDLE_BAT(APINT_TYPE_PREFIX, 7530) +HANDLE_BAT(APINT_TYPE_PREFIX, 7531) +HANDLE_BAT(APINT_TYPE_PREFIX, 7532) +HANDLE_BAT(APINT_TYPE_PREFIX, 7533) +HANDLE_BAT(APINT_TYPE_PREFIX, 7534) +HANDLE_BAT(APINT_TYPE_PREFIX, 7535) +HANDLE_BAT(APINT_TYPE_PREFIX, 7536) +HANDLE_BAT(APINT_TYPE_PREFIX, 7537) +HANDLE_BAT(APINT_TYPE_PREFIX, 7538) +HANDLE_BAT(APINT_TYPE_PREFIX, 7539) +HANDLE_BAT(APINT_TYPE_PREFIX, 7540) +HANDLE_BAT(APINT_TYPE_PREFIX, 7541) +HANDLE_BAT(APINT_TYPE_PREFIX, 7542) +HANDLE_BAT(APINT_TYPE_PREFIX, 7543) +HANDLE_BAT(APINT_TYPE_PREFIX, 7544) +HANDLE_BAT(APINT_TYPE_PREFIX, 7545) +HANDLE_BAT(APINT_TYPE_PREFIX, 7546) +HANDLE_BAT(APINT_TYPE_PREFIX, 7547) +HANDLE_BAT(APINT_TYPE_PREFIX, 7548) +HANDLE_BAT(APINT_TYPE_PREFIX, 7549) +HANDLE_BAT(APINT_TYPE_PREFIX, 7550) +HANDLE_BAT(APINT_TYPE_PREFIX, 7551) +HANDLE_BAT(APINT_TYPE_PREFIX, 7552) +HANDLE_BAT(APINT_TYPE_PREFIX, 7553) +HANDLE_BAT(APINT_TYPE_PREFIX, 7554) +HANDLE_BAT(APINT_TYPE_PREFIX, 7555) +HANDLE_BAT(APINT_TYPE_PREFIX, 7556) +HANDLE_BAT(APINT_TYPE_PREFIX, 7557) +HANDLE_BAT(APINT_TYPE_PREFIX, 7558) +HANDLE_BAT(APINT_TYPE_PREFIX, 7559) +HANDLE_BAT(APINT_TYPE_PREFIX, 7560) +HANDLE_BAT(APINT_TYPE_PREFIX, 7561) +HANDLE_BAT(APINT_TYPE_PREFIX, 7562) +HANDLE_BAT(APINT_TYPE_PREFIX, 7563) +HANDLE_BAT(APINT_TYPE_PREFIX, 7564) +HANDLE_BAT(APINT_TYPE_PREFIX, 7565) +HANDLE_BAT(APINT_TYPE_PREFIX, 7566) +HANDLE_BAT(APINT_TYPE_PREFIX, 7567) +HANDLE_BAT(APINT_TYPE_PREFIX, 7568) +HANDLE_BAT(APINT_TYPE_PREFIX, 7569) +HANDLE_BAT(APINT_TYPE_PREFIX, 7570) +HANDLE_BAT(APINT_TYPE_PREFIX, 7571) +HANDLE_BAT(APINT_TYPE_PREFIX, 7572) +HANDLE_BAT(APINT_TYPE_PREFIX, 7573) +HANDLE_BAT(APINT_TYPE_PREFIX, 7574) +HANDLE_BAT(APINT_TYPE_PREFIX, 7575) +HANDLE_BAT(APINT_TYPE_PREFIX, 7576) +HANDLE_BAT(APINT_TYPE_PREFIX, 7577) +HANDLE_BAT(APINT_TYPE_PREFIX, 7578) +HANDLE_BAT(APINT_TYPE_PREFIX, 7579) +HANDLE_BAT(APINT_TYPE_PREFIX, 7580) +HANDLE_BAT(APINT_TYPE_PREFIX, 7581) +HANDLE_BAT(APINT_TYPE_PREFIX, 7582) +HANDLE_BAT(APINT_TYPE_PREFIX, 7583) +HANDLE_BAT(APINT_TYPE_PREFIX, 7584) +HANDLE_BAT(APINT_TYPE_PREFIX, 7585) +HANDLE_BAT(APINT_TYPE_PREFIX, 7586) +HANDLE_BAT(APINT_TYPE_PREFIX, 7587) +HANDLE_BAT(APINT_TYPE_PREFIX, 7588) +HANDLE_BAT(APINT_TYPE_PREFIX, 7589) +HANDLE_BAT(APINT_TYPE_PREFIX, 7590) +HANDLE_BAT(APINT_TYPE_PREFIX, 7591) +HANDLE_BAT(APINT_TYPE_PREFIX, 7592) +HANDLE_BAT(APINT_TYPE_PREFIX, 7593) +HANDLE_BAT(APINT_TYPE_PREFIX, 7594) +HANDLE_BAT(APINT_TYPE_PREFIX, 7595) +HANDLE_BAT(APINT_TYPE_PREFIX, 7596) +HANDLE_BAT(APINT_TYPE_PREFIX, 7597) +HANDLE_BAT(APINT_TYPE_PREFIX, 7598) +HANDLE_BAT(APINT_TYPE_PREFIX, 7599) +HANDLE_BAT(APINT_TYPE_PREFIX, 7600) +HANDLE_BAT(APINT_TYPE_PREFIX, 7601) +HANDLE_BAT(APINT_TYPE_PREFIX, 7602) +HANDLE_BAT(APINT_TYPE_PREFIX, 7603) +HANDLE_BAT(APINT_TYPE_PREFIX, 7604) +HANDLE_BAT(APINT_TYPE_PREFIX, 7605) +HANDLE_BAT(APINT_TYPE_PREFIX, 7606) +HANDLE_BAT(APINT_TYPE_PREFIX, 7607) +HANDLE_BAT(APINT_TYPE_PREFIX, 7608) +HANDLE_BAT(APINT_TYPE_PREFIX, 7609) +HANDLE_BAT(APINT_TYPE_PREFIX, 7610) +HANDLE_BAT(APINT_TYPE_PREFIX, 7611) +HANDLE_BAT(APINT_TYPE_PREFIX, 7612) +HANDLE_BAT(APINT_TYPE_PREFIX, 7613) +HANDLE_BAT(APINT_TYPE_PREFIX, 7614) +HANDLE_BAT(APINT_TYPE_PREFIX, 7615) +HANDLE_BAT(APINT_TYPE_PREFIX, 7616) +HANDLE_BAT(APINT_TYPE_PREFIX, 7617) +HANDLE_BAT(APINT_TYPE_PREFIX, 7618) +HANDLE_BAT(APINT_TYPE_PREFIX, 7619) +HANDLE_BAT(APINT_TYPE_PREFIX, 7620) +HANDLE_BAT(APINT_TYPE_PREFIX, 7621) +HANDLE_BAT(APINT_TYPE_PREFIX, 7622) +HANDLE_BAT(APINT_TYPE_PREFIX, 7623) +HANDLE_BAT(APINT_TYPE_PREFIX, 7624) +HANDLE_BAT(APINT_TYPE_PREFIX, 7625) +HANDLE_BAT(APINT_TYPE_PREFIX, 7626) +HANDLE_BAT(APINT_TYPE_PREFIX, 7627) +HANDLE_BAT(APINT_TYPE_PREFIX, 7628) +HANDLE_BAT(APINT_TYPE_PREFIX, 7629) +HANDLE_BAT(APINT_TYPE_PREFIX, 7630) +HANDLE_BAT(APINT_TYPE_PREFIX, 7631) +HANDLE_BAT(APINT_TYPE_PREFIX, 7632) +HANDLE_BAT(APINT_TYPE_PREFIX, 7633) +HANDLE_BAT(APINT_TYPE_PREFIX, 7634) +HANDLE_BAT(APINT_TYPE_PREFIX, 7635) +HANDLE_BAT(APINT_TYPE_PREFIX, 7636) +HANDLE_BAT(APINT_TYPE_PREFIX, 7637) +HANDLE_BAT(APINT_TYPE_PREFIX, 7638) +HANDLE_BAT(APINT_TYPE_PREFIX, 7639) +HANDLE_BAT(APINT_TYPE_PREFIX, 7640) +HANDLE_BAT(APINT_TYPE_PREFIX, 7641) +HANDLE_BAT(APINT_TYPE_PREFIX, 7642) +HANDLE_BAT(APINT_TYPE_PREFIX, 7643) +HANDLE_BAT(APINT_TYPE_PREFIX, 7644) +HANDLE_BAT(APINT_TYPE_PREFIX, 7645) +HANDLE_BAT(APINT_TYPE_PREFIX, 7646) +HANDLE_BAT(APINT_TYPE_PREFIX, 7647) +HANDLE_BAT(APINT_TYPE_PREFIX, 7648) +HANDLE_BAT(APINT_TYPE_PREFIX, 7649) +HANDLE_BAT(APINT_TYPE_PREFIX, 7650) +HANDLE_BAT(APINT_TYPE_PREFIX, 7651) +HANDLE_BAT(APINT_TYPE_PREFIX, 7652) +HANDLE_BAT(APINT_TYPE_PREFIX, 7653) +HANDLE_BAT(APINT_TYPE_PREFIX, 7654) +HANDLE_BAT(APINT_TYPE_PREFIX, 7655) +HANDLE_BAT(APINT_TYPE_PREFIX, 7656) +HANDLE_BAT(APINT_TYPE_PREFIX, 7657) +HANDLE_BAT(APINT_TYPE_PREFIX, 7658) +HANDLE_BAT(APINT_TYPE_PREFIX, 7659) +HANDLE_BAT(APINT_TYPE_PREFIX, 7660) +HANDLE_BAT(APINT_TYPE_PREFIX, 7661) +HANDLE_BAT(APINT_TYPE_PREFIX, 7662) +HANDLE_BAT(APINT_TYPE_PREFIX, 7663) +HANDLE_BAT(APINT_TYPE_PREFIX, 7664) +HANDLE_BAT(APINT_TYPE_PREFIX, 7665) +HANDLE_BAT(APINT_TYPE_PREFIX, 7666) +HANDLE_BAT(APINT_TYPE_PREFIX, 7667) +HANDLE_BAT(APINT_TYPE_PREFIX, 7668) +HANDLE_BAT(APINT_TYPE_PREFIX, 7669) +HANDLE_BAT(APINT_TYPE_PREFIX, 7670) +HANDLE_BAT(APINT_TYPE_PREFIX, 7671) +HANDLE_BAT(APINT_TYPE_PREFIX, 7672) +HANDLE_BAT(APINT_TYPE_PREFIX, 7673) +HANDLE_BAT(APINT_TYPE_PREFIX, 7674) +HANDLE_BAT(APINT_TYPE_PREFIX, 7675) +HANDLE_BAT(APINT_TYPE_PREFIX, 7676) +HANDLE_BAT(APINT_TYPE_PREFIX, 7677) +HANDLE_BAT(APINT_TYPE_PREFIX, 7678) +HANDLE_BAT(APINT_TYPE_PREFIX, 7679) +HANDLE_BAT(APINT_TYPE_PREFIX, 7680) +HANDLE_BAT(APINT_TYPE_PREFIX, 7681) +HANDLE_BAT(APINT_TYPE_PREFIX, 7682) +HANDLE_BAT(APINT_TYPE_PREFIX, 7683) +HANDLE_BAT(APINT_TYPE_PREFIX, 7684) +HANDLE_BAT(APINT_TYPE_PREFIX, 7685) +HANDLE_BAT(APINT_TYPE_PREFIX, 7686) +HANDLE_BAT(APINT_TYPE_PREFIX, 7687) +HANDLE_BAT(APINT_TYPE_PREFIX, 7688) +HANDLE_BAT(APINT_TYPE_PREFIX, 7689) +HANDLE_BAT(APINT_TYPE_PREFIX, 7690) +HANDLE_BAT(APINT_TYPE_PREFIX, 7691) +HANDLE_BAT(APINT_TYPE_PREFIX, 7692) +HANDLE_BAT(APINT_TYPE_PREFIX, 7693) +HANDLE_BAT(APINT_TYPE_PREFIX, 7694) +HANDLE_BAT(APINT_TYPE_PREFIX, 7695) +HANDLE_BAT(APINT_TYPE_PREFIX, 7696) +HANDLE_BAT(APINT_TYPE_PREFIX, 7697) +HANDLE_BAT(APINT_TYPE_PREFIX, 7698) +HANDLE_BAT(APINT_TYPE_PREFIX, 7699) +HANDLE_BAT(APINT_TYPE_PREFIX, 7700) +HANDLE_BAT(APINT_TYPE_PREFIX, 7701) +HANDLE_BAT(APINT_TYPE_PREFIX, 7702) +HANDLE_BAT(APINT_TYPE_PREFIX, 7703) +HANDLE_BAT(APINT_TYPE_PREFIX, 7704) +HANDLE_BAT(APINT_TYPE_PREFIX, 7705) +HANDLE_BAT(APINT_TYPE_PREFIX, 7706) +HANDLE_BAT(APINT_TYPE_PREFIX, 7707) +HANDLE_BAT(APINT_TYPE_PREFIX, 7708) +HANDLE_BAT(APINT_TYPE_PREFIX, 7709) +HANDLE_BAT(APINT_TYPE_PREFIX, 7710) +HANDLE_BAT(APINT_TYPE_PREFIX, 7711) +HANDLE_BAT(APINT_TYPE_PREFIX, 7712) +HANDLE_BAT(APINT_TYPE_PREFIX, 7713) +HANDLE_BAT(APINT_TYPE_PREFIX, 7714) +HANDLE_BAT(APINT_TYPE_PREFIX, 7715) +HANDLE_BAT(APINT_TYPE_PREFIX, 7716) +HANDLE_BAT(APINT_TYPE_PREFIX, 7717) +HANDLE_BAT(APINT_TYPE_PREFIX, 7718) +HANDLE_BAT(APINT_TYPE_PREFIX, 7719) +HANDLE_BAT(APINT_TYPE_PREFIX, 7720) +HANDLE_BAT(APINT_TYPE_PREFIX, 7721) +HANDLE_BAT(APINT_TYPE_PREFIX, 7722) +HANDLE_BAT(APINT_TYPE_PREFIX, 7723) +HANDLE_BAT(APINT_TYPE_PREFIX, 7724) +HANDLE_BAT(APINT_TYPE_PREFIX, 7725) +HANDLE_BAT(APINT_TYPE_PREFIX, 7726) +HANDLE_BAT(APINT_TYPE_PREFIX, 7727) +HANDLE_BAT(APINT_TYPE_PREFIX, 7728) +HANDLE_BAT(APINT_TYPE_PREFIX, 7729) +HANDLE_BAT(APINT_TYPE_PREFIX, 7730) +HANDLE_BAT(APINT_TYPE_PREFIX, 7731) +HANDLE_BAT(APINT_TYPE_PREFIX, 7732) +HANDLE_BAT(APINT_TYPE_PREFIX, 7733) +HANDLE_BAT(APINT_TYPE_PREFIX, 7734) +HANDLE_BAT(APINT_TYPE_PREFIX, 7735) +HANDLE_BAT(APINT_TYPE_PREFIX, 7736) +HANDLE_BAT(APINT_TYPE_PREFIX, 7737) +HANDLE_BAT(APINT_TYPE_PREFIX, 7738) +HANDLE_BAT(APINT_TYPE_PREFIX, 7739) +HANDLE_BAT(APINT_TYPE_PREFIX, 7740) +HANDLE_BAT(APINT_TYPE_PREFIX, 7741) +HANDLE_BAT(APINT_TYPE_PREFIX, 7742) +HANDLE_BAT(APINT_TYPE_PREFIX, 7743) +HANDLE_BAT(APINT_TYPE_PREFIX, 7744) +HANDLE_BAT(APINT_TYPE_PREFIX, 7745) +HANDLE_BAT(APINT_TYPE_PREFIX, 7746) +HANDLE_BAT(APINT_TYPE_PREFIX, 7747) +HANDLE_BAT(APINT_TYPE_PREFIX, 7748) +HANDLE_BAT(APINT_TYPE_PREFIX, 7749) +HANDLE_BAT(APINT_TYPE_PREFIX, 7750) +HANDLE_BAT(APINT_TYPE_PREFIX, 7751) +HANDLE_BAT(APINT_TYPE_PREFIX, 7752) +HANDLE_BAT(APINT_TYPE_PREFIX, 7753) +HANDLE_BAT(APINT_TYPE_PREFIX, 7754) +HANDLE_BAT(APINT_TYPE_PREFIX, 7755) +HANDLE_BAT(APINT_TYPE_PREFIX, 7756) +HANDLE_BAT(APINT_TYPE_PREFIX, 7757) +HANDLE_BAT(APINT_TYPE_PREFIX, 7758) +HANDLE_BAT(APINT_TYPE_PREFIX, 7759) +HANDLE_BAT(APINT_TYPE_PREFIX, 7760) +HANDLE_BAT(APINT_TYPE_PREFIX, 7761) +HANDLE_BAT(APINT_TYPE_PREFIX, 7762) +HANDLE_BAT(APINT_TYPE_PREFIX, 7763) +HANDLE_BAT(APINT_TYPE_PREFIX, 7764) +HANDLE_BAT(APINT_TYPE_PREFIX, 7765) +HANDLE_BAT(APINT_TYPE_PREFIX, 7766) +HANDLE_BAT(APINT_TYPE_PREFIX, 7767) +HANDLE_BAT(APINT_TYPE_PREFIX, 7768) +HANDLE_BAT(APINT_TYPE_PREFIX, 7769) +HANDLE_BAT(APINT_TYPE_PREFIX, 7770) +HANDLE_BAT(APINT_TYPE_PREFIX, 7771) +HANDLE_BAT(APINT_TYPE_PREFIX, 7772) +HANDLE_BAT(APINT_TYPE_PREFIX, 7773) +HANDLE_BAT(APINT_TYPE_PREFIX, 7774) +HANDLE_BAT(APINT_TYPE_PREFIX, 7775) +HANDLE_BAT(APINT_TYPE_PREFIX, 7776) +HANDLE_BAT(APINT_TYPE_PREFIX, 7777) +HANDLE_BAT(APINT_TYPE_PREFIX, 7778) +HANDLE_BAT(APINT_TYPE_PREFIX, 7779) +HANDLE_BAT(APINT_TYPE_PREFIX, 7780) +HANDLE_BAT(APINT_TYPE_PREFIX, 7781) +HANDLE_BAT(APINT_TYPE_PREFIX, 7782) +HANDLE_BAT(APINT_TYPE_PREFIX, 7783) +HANDLE_BAT(APINT_TYPE_PREFIX, 7784) +HANDLE_BAT(APINT_TYPE_PREFIX, 7785) +HANDLE_BAT(APINT_TYPE_PREFIX, 7786) +HANDLE_BAT(APINT_TYPE_PREFIX, 7787) +HANDLE_BAT(APINT_TYPE_PREFIX, 7788) +HANDLE_BAT(APINT_TYPE_PREFIX, 7789) +HANDLE_BAT(APINT_TYPE_PREFIX, 7790) +HANDLE_BAT(APINT_TYPE_PREFIX, 7791) +HANDLE_BAT(APINT_TYPE_PREFIX, 7792) +HANDLE_BAT(APINT_TYPE_PREFIX, 7793) +HANDLE_BAT(APINT_TYPE_PREFIX, 7794) +HANDLE_BAT(APINT_TYPE_PREFIX, 7795) +HANDLE_BAT(APINT_TYPE_PREFIX, 7796) +HANDLE_BAT(APINT_TYPE_PREFIX, 7797) +HANDLE_BAT(APINT_TYPE_PREFIX, 7798) +HANDLE_BAT(APINT_TYPE_PREFIX, 7799) +HANDLE_BAT(APINT_TYPE_PREFIX, 7800) +HANDLE_BAT(APINT_TYPE_PREFIX, 7801) +HANDLE_BAT(APINT_TYPE_PREFIX, 7802) +HANDLE_BAT(APINT_TYPE_PREFIX, 7803) +HANDLE_BAT(APINT_TYPE_PREFIX, 7804) +HANDLE_BAT(APINT_TYPE_PREFIX, 7805) +HANDLE_BAT(APINT_TYPE_PREFIX, 7806) +HANDLE_BAT(APINT_TYPE_PREFIX, 7807) +HANDLE_BAT(APINT_TYPE_PREFIX, 7808) +HANDLE_BAT(APINT_TYPE_PREFIX, 7809) +HANDLE_BAT(APINT_TYPE_PREFIX, 7810) +HANDLE_BAT(APINT_TYPE_PREFIX, 7811) +HANDLE_BAT(APINT_TYPE_PREFIX, 7812) +HANDLE_BAT(APINT_TYPE_PREFIX, 7813) +HANDLE_BAT(APINT_TYPE_PREFIX, 7814) +HANDLE_BAT(APINT_TYPE_PREFIX, 7815) +HANDLE_BAT(APINT_TYPE_PREFIX, 7816) +HANDLE_BAT(APINT_TYPE_PREFIX, 7817) +HANDLE_BAT(APINT_TYPE_PREFIX, 7818) +HANDLE_BAT(APINT_TYPE_PREFIX, 7819) +HANDLE_BAT(APINT_TYPE_PREFIX, 7820) +HANDLE_BAT(APINT_TYPE_PREFIX, 7821) +HANDLE_BAT(APINT_TYPE_PREFIX, 7822) +HANDLE_BAT(APINT_TYPE_PREFIX, 7823) +HANDLE_BAT(APINT_TYPE_PREFIX, 7824) +HANDLE_BAT(APINT_TYPE_PREFIX, 7825) +HANDLE_BAT(APINT_TYPE_PREFIX, 7826) +HANDLE_BAT(APINT_TYPE_PREFIX, 7827) +HANDLE_BAT(APINT_TYPE_PREFIX, 7828) +HANDLE_BAT(APINT_TYPE_PREFIX, 7829) +HANDLE_BAT(APINT_TYPE_PREFIX, 7830) +HANDLE_BAT(APINT_TYPE_PREFIX, 7831) +HANDLE_BAT(APINT_TYPE_PREFIX, 7832) +HANDLE_BAT(APINT_TYPE_PREFIX, 7833) +HANDLE_BAT(APINT_TYPE_PREFIX, 7834) +HANDLE_BAT(APINT_TYPE_PREFIX, 7835) +HANDLE_BAT(APINT_TYPE_PREFIX, 7836) +HANDLE_BAT(APINT_TYPE_PREFIX, 7837) +HANDLE_BAT(APINT_TYPE_PREFIX, 7838) +HANDLE_BAT(APINT_TYPE_PREFIX, 7839) +HANDLE_BAT(APINT_TYPE_PREFIX, 7840) +HANDLE_BAT(APINT_TYPE_PREFIX, 7841) +HANDLE_BAT(APINT_TYPE_PREFIX, 7842) +HANDLE_BAT(APINT_TYPE_PREFIX, 7843) +HANDLE_BAT(APINT_TYPE_PREFIX, 7844) +HANDLE_BAT(APINT_TYPE_PREFIX, 7845) +HANDLE_BAT(APINT_TYPE_PREFIX, 7846) +HANDLE_BAT(APINT_TYPE_PREFIX, 7847) +HANDLE_BAT(APINT_TYPE_PREFIX, 7848) +HANDLE_BAT(APINT_TYPE_PREFIX, 7849) +HANDLE_BAT(APINT_TYPE_PREFIX, 7850) +HANDLE_BAT(APINT_TYPE_PREFIX, 7851) +HANDLE_BAT(APINT_TYPE_PREFIX, 7852) +HANDLE_BAT(APINT_TYPE_PREFIX, 7853) +HANDLE_BAT(APINT_TYPE_PREFIX, 7854) +HANDLE_BAT(APINT_TYPE_PREFIX, 7855) +HANDLE_BAT(APINT_TYPE_PREFIX, 7856) +HANDLE_BAT(APINT_TYPE_PREFIX, 7857) +HANDLE_BAT(APINT_TYPE_PREFIX, 7858) +HANDLE_BAT(APINT_TYPE_PREFIX, 7859) +HANDLE_BAT(APINT_TYPE_PREFIX, 7860) +HANDLE_BAT(APINT_TYPE_PREFIX, 7861) +HANDLE_BAT(APINT_TYPE_PREFIX, 7862) +HANDLE_BAT(APINT_TYPE_PREFIX, 7863) +HANDLE_BAT(APINT_TYPE_PREFIX, 7864) +HANDLE_BAT(APINT_TYPE_PREFIX, 7865) +HANDLE_BAT(APINT_TYPE_PREFIX, 7866) +HANDLE_BAT(APINT_TYPE_PREFIX, 7867) +HANDLE_BAT(APINT_TYPE_PREFIX, 7868) +HANDLE_BAT(APINT_TYPE_PREFIX, 7869) +HANDLE_BAT(APINT_TYPE_PREFIX, 7870) +HANDLE_BAT(APINT_TYPE_PREFIX, 7871) +HANDLE_BAT(APINT_TYPE_PREFIX, 7872) +HANDLE_BAT(APINT_TYPE_PREFIX, 7873) +HANDLE_BAT(APINT_TYPE_PREFIX, 7874) +HANDLE_BAT(APINT_TYPE_PREFIX, 7875) +HANDLE_BAT(APINT_TYPE_PREFIX, 7876) +HANDLE_BAT(APINT_TYPE_PREFIX, 7877) +HANDLE_BAT(APINT_TYPE_PREFIX, 7878) +HANDLE_BAT(APINT_TYPE_PREFIX, 7879) +HANDLE_BAT(APINT_TYPE_PREFIX, 7880) +HANDLE_BAT(APINT_TYPE_PREFIX, 7881) +HANDLE_BAT(APINT_TYPE_PREFIX, 7882) +HANDLE_BAT(APINT_TYPE_PREFIX, 7883) +HANDLE_BAT(APINT_TYPE_PREFIX, 7884) +HANDLE_BAT(APINT_TYPE_PREFIX, 7885) +HANDLE_BAT(APINT_TYPE_PREFIX, 7886) +HANDLE_BAT(APINT_TYPE_PREFIX, 7887) +HANDLE_BAT(APINT_TYPE_PREFIX, 7888) +HANDLE_BAT(APINT_TYPE_PREFIX, 7889) +HANDLE_BAT(APINT_TYPE_PREFIX, 7890) +HANDLE_BAT(APINT_TYPE_PREFIX, 7891) +HANDLE_BAT(APINT_TYPE_PREFIX, 7892) +HANDLE_BAT(APINT_TYPE_PREFIX, 7893) +HANDLE_BAT(APINT_TYPE_PREFIX, 7894) +HANDLE_BAT(APINT_TYPE_PREFIX, 7895) +HANDLE_BAT(APINT_TYPE_PREFIX, 7896) +HANDLE_BAT(APINT_TYPE_PREFIX, 7897) +HANDLE_BAT(APINT_TYPE_PREFIX, 7898) +HANDLE_BAT(APINT_TYPE_PREFIX, 7899) +HANDLE_BAT(APINT_TYPE_PREFIX, 7900) +HANDLE_BAT(APINT_TYPE_PREFIX, 7901) +HANDLE_BAT(APINT_TYPE_PREFIX, 7902) +HANDLE_BAT(APINT_TYPE_PREFIX, 7903) +HANDLE_BAT(APINT_TYPE_PREFIX, 7904) +HANDLE_BAT(APINT_TYPE_PREFIX, 7905) +HANDLE_BAT(APINT_TYPE_PREFIX, 7906) +HANDLE_BAT(APINT_TYPE_PREFIX, 7907) +HANDLE_BAT(APINT_TYPE_PREFIX, 7908) +HANDLE_BAT(APINT_TYPE_PREFIX, 7909) +HANDLE_BAT(APINT_TYPE_PREFIX, 7910) +HANDLE_BAT(APINT_TYPE_PREFIX, 7911) +HANDLE_BAT(APINT_TYPE_PREFIX, 7912) +HANDLE_BAT(APINT_TYPE_PREFIX, 7913) +HANDLE_BAT(APINT_TYPE_PREFIX, 7914) +HANDLE_BAT(APINT_TYPE_PREFIX, 7915) +HANDLE_BAT(APINT_TYPE_PREFIX, 7916) +HANDLE_BAT(APINT_TYPE_PREFIX, 7917) +HANDLE_BAT(APINT_TYPE_PREFIX, 7918) +HANDLE_BAT(APINT_TYPE_PREFIX, 7919) +HANDLE_BAT(APINT_TYPE_PREFIX, 7920) +HANDLE_BAT(APINT_TYPE_PREFIX, 7921) +HANDLE_BAT(APINT_TYPE_PREFIX, 7922) +HANDLE_BAT(APINT_TYPE_PREFIX, 7923) +HANDLE_BAT(APINT_TYPE_PREFIX, 7924) +HANDLE_BAT(APINT_TYPE_PREFIX, 7925) +HANDLE_BAT(APINT_TYPE_PREFIX, 7926) +HANDLE_BAT(APINT_TYPE_PREFIX, 7927) +HANDLE_BAT(APINT_TYPE_PREFIX, 7928) +HANDLE_BAT(APINT_TYPE_PREFIX, 7929) +HANDLE_BAT(APINT_TYPE_PREFIX, 7930) +HANDLE_BAT(APINT_TYPE_PREFIX, 7931) +HANDLE_BAT(APINT_TYPE_PREFIX, 7932) +HANDLE_BAT(APINT_TYPE_PREFIX, 7933) +HANDLE_BAT(APINT_TYPE_PREFIX, 7934) +HANDLE_BAT(APINT_TYPE_PREFIX, 7935) +HANDLE_BAT(APINT_TYPE_PREFIX, 7936) +HANDLE_BAT(APINT_TYPE_PREFIX, 7937) +HANDLE_BAT(APINT_TYPE_PREFIX, 7938) +HANDLE_BAT(APINT_TYPE_PREFIX, 7939) +HANDLE_BAT(APINT_TYPE_PREFIX, 7940) +HANDLE_BAT(APINT_TYPE_PREFIX, 7941) +HANDLE_BAT(APINT_TYPE_PREFIX, 7942) +HANDLE_BAT(APINT_TYPE_PREFIX, 7943) +HANDLE_BAT(APINT_TYPE_PREFIX, 7944) +HANDLE_BAT(APINT_TYPE_PREFIX, 7945) +HANDLE_BAT(APINT_TYPE_PREFIX, 7946) +HANDLE_BAT(APINT_TYPE_PREFIX, 7947) +HANDLE_BAT(APINT_TYPE_PREFIX, 7948) +HANDLE_BAT(APINT_TYPE_PREFIX, 7949) +HANDLE_BAT(APINT_TYPE_PREFIX, 7950) +HANDLE_BAT(APINT_TYPE_PREFIX, 7951) +HANDLE_BAT(APINT_TYPE_PREFIX, 7952) +HANDLE_BAT(APINT_TYPE_PREFIX, 7953) +HANDLE_BAT(APINT_TYPE_PREFIX, 7954) +HANDLE_BAT(APINT_TYPE_PREFIX, 7955) +HANDLE_BAT(APINT_TYPE_PREFIX, 7956) +HANDLE_BAT(APINT_TYPE_PREFIX, 7957) +HANDLE_BAT(APINT_TYPE_PREFIX, 7958) +HANDLE_BAT(APINT_TYPE_PREFIX, 7959) +HANDLE_BAT(APINT_TYPE_PREFIX, 7960) +HANDLE_BAT(APINT_TYPE_PREFIX, 7961) +HANDLE_BAT(APINT_TYPE_PREFIX, 7962) +HANDLE_BAT(APINT_TYPE_PREFIX, 7963) +HANDLE_BAT(APINT_TYPE_PREFIX, 7964) +HANDLE_BAT(APINT_TYPE_PREFIX, 7965) +HANDLE_BAT(APINT_TYPE_PREFIX, 7966) +HANDLE_BAT(APINT_TYPE_PREFIX, 7967) +HANDLE_BAT(APINT_TYPE_PREFIX, 7968) +HANDLE_BAT(APINT_TYPE_PREFIX, 7969) +HANDLE_BAT(APINT_TYPE_PREFIX, 7970) +HANDLE_BAT(APINT_TYPE_PREFIX, 7971) +HANDLE_BAT(APINT_TYPE_PREFIX, 7972) +HANDLE_BAT(APINT_TYPE_PREFIX, 7973) +HANDLE_BAT(APINT_TYPE_PREFIX, 7974) +HANDLE_BAT(APINT_TYPE_PREFIX, 7975) +HANDLE_BAT(APINT_TYPE_PREFIX, 7976) +HANDLE_BAT(APINT_TYPE_PREFIX, 7977) +HANDLE_BAT(APINT_TYPE_PREFIX, 7978) +HANDLE_BAT(APINT_TYPE_PREFIX, 7979) +HANDLE_BAT(APINT_TYPE_PREFIX, 7980) +HANDLE_BAT(APINT_TYPE_PREFIX, 7981) +HANDLE_BAT(APINT_TYPE_PREFIX, 7982) +HANDLE_BAT(APINT_TYPE_PREFIX, 7983) +HANDLE_BAT(APINT_TYPE_PREFIX, 7984) +HANDLE_BAT(APINT_TYPE_PREFIX, 7985) +HANDLE_BAT(APINT_TYPE_PREFIX, 7986) +HANDLE_BAT(APINT_TYPE_PREFIX, 7987) +HANDLE_BAT(APINT_TYPE_PREFIX, 7988) +HANDLE_BAT(APINT_TYPE_PREFIX, 7989) +HANDLE_BAT(APINT_TYPE_PREFIX, 7990) +HANDLE_BAT(APINT_TYPE_PREFIX, 7991) +HANDLE_BAT(APINT_TYPE_PREFIX, 7992) +HANDLE_BAT(APINT_TYPE_PREFIX, 7993) +HANDLE_BAT(APINT_TYPE_PREFIX, 7994) +HANDLE_BAT(APINT_TYPE_PREFIX, 7995) +HANDLE_BAT(APINT_TYPE_PREFIX, 7996) +HANDLE_BAT(APINT_TYPE_PREFIX, 7997) +HANDLE_BAT(APINT_TYPE_PREFIX, 7998) +HANDLE_BAT(APINT_TYPE_PREFIX, 7999) +HANDLE_BAT(APINT_TYPE_PREFIX, 8000) +HANDLE_BAT(APINT_TYPE_PREFIX, 8001) +HANDLE_BAT(APINT_TYPE_PREFIX, 8002) +HANDLE_BAT(APINT_TYPE_PREFIX, 8003) +HANDLE_BAT(APINT_TYPE_PREFIX, 8004) +HANDLE_BAT(APINT_TYPE_PREFIX, 8005) +HANDLE_BAT(APINT_TYPE_PREFIX, 8006) +HANDLE_BAT(APINT_TYPE_PREFIX, 8007) +HANDLE_BAT(APINT_TYPE_PREFIX, 8008) +HANDLE_BAT(APINT_TYPE_PREFIX, 8009) +HANDLE_BAT(APINT_TYPE_PREFIX, 8010) +HANDLE_BAT(APINT_TYPE_PREFIX, 8011) +HANDLE_BAT(APINT_TYPE_PREFIX, 8012) +HANDLE_BAT(APINT_TYPE_PREFIX, 8013) +HANDLE_BAT(APINT_TYPE_PREFIX, 8014) +HANDLE_BAT(APINT_TYPE_PREFIX, 8015) +HANDLE_BAT(APINT_TYPE_PREFIX, 8016) +HANDLE_BAT(APINT_TYPE_PREFIX, 8017) +HANDLE_BAT(APINT_TYPE_PREFIX, 8018) +HANDLE_BAT(APINT_TYPE_PREFIX, 8019) +HANDLE_BAT(APINT_TYPE_PREFIX, 8020) +HANDLE_BAT(APINT_TYPE_PREFIX, 8021) +HANDLE_BAT(APINT_TYPE_PREFIX, 8022) +HANDLE_BAT(APINT_TYPE_PREFIX, 8023) +HANDLE_BAT(APINT_TYPE_PREFIX, 8024) +HANDLE_BAT(APINT_TYPE_PREFIX, 8025) +HANDLE_BAT(APINT_TYPE_PREFIX, 8026) +HANDLE_BAT(APINT_TYPE_PREFIX, 8027) +HANDLE_BAT(APINT_TYPE_PREFIX, 8028) +HANDLE_BAT(APINT_TYPE_PREFIX, 8029) +HANDLE_BAT(APINT_TYPE_PREFIX, 8030) +HANDLE_BAT(APINT_TYPE_PREFIX, 8031) +HANDLE_BAT(APINT_TYPE_PREFIX, 8032) +HANDLE_BAT(APINT_TYPE_PREFIX, 8033) +HANDLE_BAT(APINT_TYPE_PREFIX, 8034) +HANDLE_BAT(APINT_TYPE_PREFIX, 8035) +HANDLE_BAT(APINT_TYPE_PREFIX, 8036) +HANDLE_BAT(APINT_TYPE_PREFIX, 8037) +HANDLE_BAT(APINT_TYPE_PREFIX, 8038) +HANDLE_BAT(APINT_TYPE_PREFIX, 8039) +HANDLE_BAT(APINT_TYPE_PREFIX, 8040) +HANDLE_BAT(APINT_TYPE_PREFIX, 8041) +HANDLE_BAT(APINT_TYPE_PREFIX, 8042) +HANDLE_BAT(APINT_TYPE_PREFIX, 8043) +HANDLE_BAT(APINT_TYPE_PREFIX, 8044) +HANDLE_BAT(APINT_TYPE_PREFIX, 8045) +HANDLE_BAT(APINT_TYPE_PREFIX, 8046) +HANDLE_BAT(APINT_TYPE_PREFIX, 8047) +HANDLE_BAT(APINT_TYPE_PREFIX, 8048) +HANDLE_BAT(APINT_TYPE_PREFIX, 8049) +HANDLE_BAT(APINT_TYPE_PREFIX, 8050) +HANDLE_BAT(APINT_TYPE_PREFIX, 8051) +HANDLE_BAT(APINT_TYPE_PREFIX, 8052) +HANDLE_BAT(APINT_TYPE_PREFIX, 8053) +HANDLE_BAT(APINT_TYPE_PREFIX, 8054) +HANDLE_BAT(APINT_TYPE_PREFIX, 8055) +HANDLE_BAT(APINT_TYPE_PREFIX, 8056) +HANDLE_BAT(APINT_TYPE_PREFIX, 8057) +HANDLE_BAT(APINT_TYPE_PREFIX, 8058) +HANDLE_BAT(APINT_TYPE_PREFIX, 8059) +HANDLE_BAT(APINT_TYPE_PREFIX, 8060) +HANDLE_BAT(APINT_TYPE_PREFIX, 8061) +HANDLE_BAT(APINT_TYPE_PREFIX, 8062) +HANDLE_BAT(APINT_TYPE_PREFIX, 8063) +HANDLE_BAT(APINT_TYPE_PREFIX, 8064) +HANDLE_BAT(APINT_TYPE_PREFIX, 8065) +HANDLE_BAT(APINT_TYPE_PREFIX, 8066) +HANDLE_BAT(APINT_TYPE_PREFIX, 8067) +HANDLE_BAT(APINT_TYPE_PREFIX, 8068) +HANDLE_BAT(APINT_TYPE_PREFIX, 8069) +HANDLE_BAT(APINT_TYPE_PREFIX, 8070) +HANDLE_BAT(APINT_TYPE_PREFIX, 8071) +HANDLE_BAT(APINT_TYPE_PREFIX, 8072) +HANDLE_BAT(APINT_TYPE_PREFIX, 8073) +HANDLE_BAT(APINT_TYPE_PREFIX, 8074) +HANDLE_BAT(APINT_TYPE_PREFIX, 8075) +HANDLE_BAT(APINT_TYPE_PREFIX, 8076) +HANDLE_BAT(APINT_TYPE_PREFIX, 8077) +HANDLE_BAT(APINT_TYPE_PREFIX, 8078) +HANDLE_BAT(APINT_TYPE_PREFIX, 8079) +HANDLE_BAT(APINT_TYPE_PREFIX, 8080) +HANDLE_BAT(APINT_TYPE_PREFIX, 8081) +HANDLE_BAT(APINT_TYPE_PREFIX, 8082) +HANDLE_BAT(APINT_TYPE_PREFIX, 8083) +HANDLE_BAT(APINT_TYPE_PREFIX, 8084) +HANDLE_BAT(APINT_TYPE_PREFIX, 8085) +HANDLE_BAT(APINT_TYPE_PREFIX, 8086) +HANDLE_BAT(APINT_TYPE_PREFIX, 8087) +HANDLE_BAT(APINT_TYPE_PREFIX, 8088) +HANDLE_BAT(APINT_TYPE_PREFIX, 8089) +HANDLE_BAT(APINT_TYPE_PREFIX, 8090) +HANDLE_BAT(APINT_TYPE_PREFIX, 8091) +HANDLE_BAT(APINT_TYPE_PREFIX, 8092) +HANDLE_BAT(APINT_TYPE_PREFIX, 8093) +HANDLE_BAT(APINT_TYPE_PREFIX, 8094) +HANDLE_BAT(APINT_TYPE_PREFIX, 8095) +HANDLE_BAT(APINT_TYPE_PREFIX, 8096) +HANDLE_BAT(APINT_TYPE_PREFIX, 8097) +HANDLE_BAT(APINT_TYPE_PREFIX, 8098) +HANDLE_BAT(APINT_TYPE_PREFIX, 8099) +HANDLE_BAT(APINT_TYPE_PREFIX, 8100) +HANDLE_BAT(APINT_TYPE_PREFIX, 8101) +HANDLE_BAT(APINT_TYPE_PREFIX, 8102) +HANDLE_BAT(APINT_TYPE_PREFIX, 8103) +HANDLE_BAT(APINT_TYPE_PREFIX, 8104) +HANDLE_BAT(APINT_TYPE_PREFIX, 8105) +HANDLE_BAT(APINT_TYPE_PREFIX, 8106) +HANDLE_BAT(APINT_TYPE_PREFIX, 8107) +HANDLE_BAT(APINT_TYPE_PREFIX, 8108) +HANDLE_BAT(APINT_TYPE_PREFIX, 8109) +HANDLE_BAT(APINT_TYPE_PREFIX, 8110) +HANDLE_BAT(APINT_TYPE_PREFIX, 8111) +HANDLE_BAT(APINT_TYPE_PREFIX, 8112) +HANDLE_BAT(APINT_TYPE_PREFIX, 8113) +HANDLE_BAT(APINT_TYPE_PREFIX, 8114) +HANDLE_BAT(APINT_TYPE_PREFIX, 8115) +HANDLE_BAT(APINT_TYPE_PREFIX, 8116) +HANDLE_BAT(APINT_TYPE_PREFIX, 8117) +HANDLE_BAT(APINT_TYPE_PREFIX, 8118) +HANDLE_BAT(APINT_TYPE_PREFIX, 8119) +HANDLE_BAT(APINT_TYPE_PREFIX, 8120) +HANDLE_BAT(APINT_TYPE_PREFIX, 8121) +HANDLE_BAT(APINT_TYPE_PREFIX, 8122) +HANDLE_BAT(APINT_TYPE_PREFIX, 8123) +HANDLE_BAT(APINT_TYPE_PREFIX, 8124) +HANDLE_BAT(APINT_TYPE_PREFIX, 8125) +HANDLE_BAT(APINT_TYPE_PREFIX, 8126) +HANDLE_BAT(APINT_TYPE_PREFIX, 8127) +HANDLE_BAT(APINT_TYPE_PREFIX, 8128) +HANDLE_BAT(APINT_TYPE_PREFIX, 8129) +HANDLE_BAT(APINT_TYPE_PREFIX, 8130) +HANDLE_BAT(APINT_TYPE_PREFIX, 8131) +HANDLE_BAT(APINT_TYPE_PREFIX, 8132) +HANDLE_BAT(APINT_TYPE_PREFIX, 8133) +HANDLE_BAT(APINT_TYPE_PREFIX, 8134) +HANDLE_BAT(APINT_TYPE_PREFIX, 8135) +HANDLE_BAT(APINT_TYPE_PREFIX, 8136) +HANDLE_BAT(APINT_TYPE_PREFIX, 8137) +HANDLE_BAT(APINT_TYPE_PREFIX, 8138) +HANDLE_BAT(APINT_TYPE_PREFIX, 8139) +HANDLE_BAT(APINT_TYPE_PREFIX, 8140) +HANDLE_BAT(APINT_TYPE_PREFIX, 8141) +HANDLE_BAT(APINT_TYPE_PREFIX, 8142) +HANDLE_BAT(APINT_TYPE_PREFIX, 8143) +HANDLE_BAT(APINT_TYPE_PREFIX, 8144) +HANDLE_BAT(APINT_TYPE_PREFIX, 8145) +HANDLE_BAT(APINT_TYPE_PREFIX, 8146) +HANDLE_BAT(APINT_TYPE_PREFIX, 8147) +HANDLE_BAT(APINT_TYPE_PREFIX, 8148) +HANDLE_BAT(APINT_TYPE_PREFIX, 8149) +HANDLE_BAT(APINT_TYPE_PREFIX, 8150) +HANDLE_BAT(APINT_TYPE_PREFIX, 8151) +HANDLE_BAT(APINT_TYPE_PREFIX, 8152) +HANDLE_BAT(APINT_TYPE_PREFIX, 8153) +HANDLE_BAT(APINT_TYPE_PREFIX, 8154) +HANDLE_BAT(APINT_TYPE_PREFIX, 8155) +HANDLE_BAT(APINT_TYPE_PREFIX, 8156) +HANDLE_BAT(APINT_TYPE_PREFIX, 8157) +HANDLE_BAT(APINT_TYPE_PREFIX, 8158) +HANDLE_BAT(APINT_TYPE_PREFIX, 8159) +HANDLE_BAT(APINT_TYPE_PREFIX, 8160) +HANDLE_BAT(APINT_TYPE_PREFIX, 8161) +HANDLE_BAT(APINT_TYPE_PREFIX, 8162) +HANDLE_BAT(APINT_TYPE_PREFIX, 8163) +HANDLE_BAT(APINT_TYPE_PREFIX, 8164) +HANDLE_BAT(APINT_TYPE_PREFIX, 8165) +HANDLE_BAT(APINT_TYPE_PREFIX, 8166) +HANDLE_BAT(APINT_TYPE_PREFIX, 8167) +HANDLE_BAT(APINT_TYPE_PREFIX, 8168) +HANDLE_BAT(APINT_TYPE_PREFIX, 8169) +HANDLE_BAT(APINT_TYPE_PREFIX, 8170) +HANDLE_BAT(APINT_TYPE_PREFIX, 8171) +HANDLE_BAT(APINT_TYPE_PREFIX, 8172) +HANDLE_BAT(APINT_TYPE_PREFIX, 8173) +HANDLE_BAT(APINT_TYPE_PREFIX, 8174) +HANDLE_BAT(APINT_TYPE_PREFIX, 8175) +HANDLE_BAT(APINT_TYPE_PREFIX, 8176) +HANDLE_BAT(APINT_TYPE_PREFIX, 8177) +HANDLE_BAT(APINT_TYPE_PREFIX, 8178) +HANDLE_BAT(APINT_TYPE_PREFIX, 8179) +HANDLE_BAT(APINT_TYPE_PREFIX, 8180) +HANDLE_BAT(APINT_TYPE_PREFIX, 8181) +HANDLE_BAT(APINT_TYPE_PREFIX, 8182) +HANDLE_BAT(APINT_TYPE_PREFIX, 8183) +HANDLE_BAT(APINT_TYPE_PREFIX, 8184) +HANDLE_BAT(APINT_TYPE_PREFIX, 8185) +HANDLE_BAT(APINT_TYPE_PREFIX, 8186) +HANDLE_BAT(APINT_TYPE_PREFIX, 8187) +HANDLE_BAT(APINT_TYPE_PREFIX, 8188) +HANDLE_BAT(APINT_TYPE_PREFIX, 8189) +HANDLE_BAT(APINT_TYPE_PREFIX, 8190) +HANDLE_BAT(APINT_TYPE_PREFIX, 8191) +HANDLE_BAT(APINT_TYPE_PREFIX, 8192) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 8 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 8193) +HANDLE_BAT(, 8194) +HANDLE_BAT(, 8195) +HANDLE_BAT(, 8196) +HANDLE_BAT(, 8197) +HANDLE_BAT(, 8198) +HANDLE_BAT(, 8199) +HANDLE_BAT(, 8200) +HANDLE_BAT(, 8201) +HANDLE_BAT(, 8202) +HANDLE_BAT(, 8203) +HANDLE_BAT(, 8204) +HANDLE_BAT(, 8205) +HANDLE_BAT(, 8206) +HANDLE_BAT(, 8207) +HANDLE_BAT(, 8208) +HANDLE_BAT(, 8209) +HANDLE_BAT(, 8210) +HANDLE_BAT(, 8211) +HANDLE_BAT(, 8212) +HANDLE_BAT(, 8213) +HANDLE_BAT(, 8214) +HANDLE_BAT(, 8215) +HANDLE_BAT(, 8216) +HANDLE_BAT(, 8217) +HANDLE_BAT(, 8218) +HANDLE_BAT(, 8219) +HANDLE_BAT(, 8220) +HANDLE_BAT(, 8221) +HANDLE_BAT(, 8222) +HANDLE_BAT(, 8223) +HANDLE_BAT(, 8224) +HANDLE_BAT(, 8225) +HANDLE_BAT(, 8226) +HANDLE_BAT(, 8227) +HANDLE_BAT(, 8228) +HANDLE_BAT(, 8229) +HANDLE_BAT(, 8230) +HANDLE_BAT(, 8231) +HANDLE_BAT(, 8232) +HANDLE_BAT(, 8233) +HANDLE_BAT(, 8234) +HANDLE_BAT(, 8235) +HANDLE_BAT(, 8236) +HANDLE_BAT(, 8237) +HANDLE_BAT(, 8238) +HANDLE_BAT(, 8239) +HANDLE_BAT(, 8240) +HANDLE_BAT(, 8241) +HANDLE_BAT(, 8242) +HANDLE_BAT(, 8243) +HANDLE_BAT(, 8244) +HANDLE_BAT(, 8245) +HANDLE_BAT(, 8246) +HANDLE_BAT(, 8247) +HANDLE_BAT(, 8248) +HANDLE_BAT(, 8249) +HANDLE_BAT(, 8250) +HANDLE_BAT(, 8251) +HANDLE_BAT(, 8252) +HANDLE_BAT(, 8253) +HANDLE_BAT(, 8254) +HANDLE_BAT(, 8255) +HANDLE_BAT(, 8256) +HANDLE_BAT(, 8257) +HANDLE_BAT(, 8258) +HANDLE_BAT(, 8259) +HANDLE_BAT(, 8260) +HANDLE_BAT(, 8261) +HANDLE_BAT(, 8262) +HANDLE_BAT(, 8263) +HANDLE_BAT(, 8264) +HANDLE_BAT(, 8265) +HANDLE_BAT(, 8266) +HANDLE_BAT(, 8267) +HANDLE_BAT(, 8268) +HANDLE_BAT(, 8269) +HANDLE_BAT(, 8270) +HANDLE_BAT(, 8271) +HANDLE_BAT(, 8272) +HANDLE_BAT(, 8273) +HANDLE_BAT(, 8274) +HANDLE_BAT(, 8275) +HANDLE_BAT(, 8276) +HANDLE_BAT(, 8277) +HANDLE_BAT(, 8278) +HANDLE_BAT(, 8279) +HANDLE_BAT(, 8280) +HANDLE_BAT(, 8281) +HANDLE_BAT(, 8282) +HANDLE_BAT(, 8283) +HANDLE_BAT(, 8284) +HANDLE_BAT(, 8285) +HANDLE_BAT(, 8286) +HANDLE_BAT(, 8287) +HANDLE_BAT(, 8288) +HANDLE_BAT(, 8289) +HANDLE_BAT(, 8290) +HANDLE_BAT(, 8291) +HANDLE_BAT(, 8292) +HANDLE_BAT(, 8293) +HANDLE_BAT(, 8294) +HANDLE_BAT(, 8295) +HANDLE_BAT(, 8296) +HANDLE_BAT(, 8297) +HANDLE_BAT(, 8298) +HANDLE_BAT(, 8299) +HANDLE_BAT(, 8300) +HANDLE_BAT(, 8301) +HANDLE_BAT(, 8302) +HANDLE_BAT(, 8303) +HANDLE_BAT(, 8304) +HANDLE_BAT(, 8305) +HANDLE_BAT(, 8306) +HANDLE_BAT(, 8307) +HANDLE_BAT(, 8308) +HANDLE_BAT(, 8309) +HANDLE_BAT(, 8310) +HANDLE_BAT(, 8311) +HANDLE_BAT(, 8312) +HANDLE_BAT(, 8313) +HANDLE_BAT(, 8314) +HANDLE_BAT(, 8315) +HANDLE_BAT(, 8316) +HANDLE_BAT(, 8317) +HANDLE_BAT(, 8318) +HANDLE_BAT(, 8319) +HANDLE_BAT(, 8320) +HANDLE_BAT(, 8321) +HANDLE_BAT(, 8322) +HANDLE_BAT(, 8323) +HANDLE_BAT(, 8324) +HANDLE_BAT(, 8325) +HANDLE_BAT(, 8326) +HANDLE_BAT(, 8327) +HANDLE_BAT(, 8328) +HANDLE_BAT(, 8329) +HANDLE_BAT(, 8330) +HANDLE_BAT(, 8331) +HANDLE_BAT(, 8332) +HANDLE_BAT(, 8333) +HANDLE_BAT(, 8334) +HANDLE_BAT(, 8335) +HANDLE_BAT(, 8336) +HANDLE_BAT(, 8337) +HANDLE_BAT(, 8338) +HANDLE_BAT(, 8339) +HANDLE_BAT(, 8340) +HANDLE_BAT(, 8341) +HANDLE_BAT(, 8342) +HANDLE_BAT(, 8343) +HANDLE_BAT(, 8344) +HANDLE_BAT(, 8345) +HANDLE_BAT(, 8346) +HANDLE_BAT(, 8347) +HANDLE_BAT(, 8348) +HANDLE_BAT(, 8349) +HANDLE_BAT(, 8350) +HANDLE_BAT(, 8351) +HANDLE_BAT(, 8352) +HANDLE_BAT(, 8353) +HANDLE_BAT(, 8354) +HANDLE_BAT(, 8355) +HANDLE_BAT(, 8356) +HANDLE_BAT(, 8357) +HANDLE_BAT(, 8358) +HANDLE_BAT(, 8359) +HANDLE_BAT(, 8360) +HANDLE_BAT(, 8361) +HANDLE_BAT(, 8362) +HANDLE_BAT(, 8363) +HANDLE_BAT(, 8364) +HANDLE_BAT(, 8365) +HANDLE_BAT(, 8366) +HANDLE_BAT(, 8367) +HANDLE_BAT(, 8368) +HANDLE_BAT(, 8369) +HANDLE_BAT(, 8370) +HANDLE_BAT(, 8371) +HANDLE_BAT(, 8372) +HANDLE_BAT(, 8373) +HANDLE_BAT(, 8374) +HANDLE_BAT(, 8375) +HANDLE_BAT(, 8376) +HANDLE_BAT(, 8377) +HANDLE_BAT(, 8378) +HANDLE_BAT(, 8379) +HANDLE_BAT(, 8380) +HANDLE_BAT(, 8381) +HANDLE_BAT(, 8382) +HANDLE_BAT(, 8383) +HANDLE_BAT(, 8384) +HANDLE_BAT(, 8385) +HANDLE_BAT(, 8386) +HANDLE_BAT(, 8387) +HANDLE_BAT(, 8388) +HANDLE_BAT(, 8389) +HANDLE_BAT(, 8390) +HANDLE_BAT(, 8391) +HANDLE_BAT(, 8392) +HANDLE_BAT(, 8393) +HANDLE_BAT(, 8394) +HANDLE_BAT(, 8395) +HANDLE_BAT(, 8396) +HANDLE_BAT(, 8397) +HANDLE_BAT(, 8398) +HANDLE_BAT(, 8399) +HANDLE_BAT(, 8400) +HANDLE_BAT(, 8401) +HANDLE_BAT(, 8402) +HANDLE_BAT(, 8403) +HANDLE_BAT(, 8404) +HANDLE_BAT(, 8405) +HANDLE_BAT(, 8406) +HANDLE_BAT(, 8407) +HANDLE_BAT(, 8408) +HANDLE_BAT(, 8409) +HANDLE_BAT(, 8410) +HANDLE_BAT(, 8411) +HANDLE_BAT(, 8412) +HANDLE_BAT(, 8413) +HANDLE_BAT(, 8414) +HANDLE_BAT(, 8415) +HANDLE_BAT(, 8416) +HANDLE_BAT(, 8417) +HANDLE_BAT(, 8418) +HANDLE_BAT(, 8419) +HANDLE_BAT(, 8420) +HANDLE_BAT(, 8421) +HANDLE_BAT(, 8422) +HANDLE_BAT(, 8423) +HANDLE_BAT(, 8424) +HANDLE_BAT(, 8425) +HANDLE_BAT(, 8426) +HANDLE_BAT(, 8427) +HANDLE_BAT(, 8428) +HANDLE_BAT(, 8429) +HANDLE_BAT(, 8430) +HANDLE_BAT(, 8431) +HANDLE_BAT(, 8432) +HANDLE_BAT(, 8433) +HANDLE_BAT(, 8434) +HANDLE_BAT(, 8435) +HANDLE_BAT(, 8436) +HANDLE_BAT(, 8437) +HANDLE_BAT(, 8438) +HANDLE_BAT(, 8439) +HANDLE_BAT(, 8440) +HANDLE_BAT(, 8441) +HANDLE_BAT(, 8442) +HANDLE_BAT(, 8443) +HANDLE_BAT(, 8444) +HANDLE_BAT(, 8445) +HANDLE_BAT(, 8446) +HANDLE_BAT(, 8447) +HANDLE_BAT(, 8448) +HANDLE_BAT(, 8449) +HANDLE_BAT(, 8450) +HANDLE_BAT(, 8451) +HANDLE_BAT(, 8452) +HANDLE_BAT(, 8453) +HANDLE_BAT(, 8454) +HANDLE_BAT(, 8455) +HANDLE_BAT(, 8456) +HANDLE_BAT(, 8457) +HANDLE_BAT(, 8458) +HANDLE_BAT(, 8459) +HANDLE_BAT(, 8460) +HANDLE_BAT(, 8461) +HANDLE_BAT(, 8462) +HANDLE_BAT(, 8463) +HANDLE_BAT(, 8464) +HANDLE_BAT(, 8465) +HANDLE_BAT(, 8466) +HANDLE_BAT(, 8467) +HANDLE_BAT(, 8468) +HANDLE_BAT(, 8469) +HANDLE_BAT(, 8470) +HANDLE_BAT(, 8471) +HANDLE_BAT(, 8472) +HANDLE_BAT(, 8473) +HANDLE_BAT(, 8474) +HANDLE_BAT(, 8475) +HANDLE_BAT(, 8476) +HANDLE_BAT(, 8477) +HANDLE_BAT(, 8478) +HANDLE_BAT(, 8479) +HANDLE_BAT(, 8480) +HANDLE_BAT(, 8481) +HANDLE_BAT(, 8482) +HANDLE_BAT(, 8483) +HANDLE_BAT(, 8484) +HANDLE_BAT(, 8485) +HANDLE_BAT(, 8486) +HANDLE_BAT(, 8487) +HANDLE_BAT(, 8488) +HANDLE_BAT(, 8489) +HANDLE_BAT(, 8490) +HANDLE_BAT(, 8491) +HANDLE_BAT(, 8492) +HANDLE_BAT(, 8493) +HANDLE_BAT(, 8494) +HANDLE_BAT(, 8495) +HANDLE_BAT(, 8496) +HANDLE_BAT(, 8497) +HANDLE_BAT(, 8498) +HANDLE_BAT(, 8499) +HANDLE_BAT(, 8500) +HANDLE_BAT(, 8501) +HANDLE_BAT(, 8502) +HANDLE_BAT(, 8503) +HANDLE_BAT(, 8504) +HANDLE_BAT(, 8505) +HANDLE_BAT(, 8506) +HANDLE_BAT(, 8507) +HANDLE_BAT(, 8508) +HANDLE_BAT(, 8509) +HANDLE_BAT(, 8510) +HANDLE_BAT(, 8511) +HANDLE_BAT(, 8512) +HANDLE_BAT(, 8513) +HANDLE_BAT(, 8514) +HANDLE_BAT(, 8515) +HANDLE_BAT(, 8516) +HANDLE_BAT(, 8517) +HANDLE_BAT(, 8518) +HANDLE_BAT(, 8519) +HANDLE_BAT(, 8520) +HANDLE_BAT(, 8521) +HANDLE_BAT(, 8522) +HANDLE_BAT(, 8523) +HANDLE_BAT(, 8524) +HANDLE_BAT(, 8525) +HANDLE_BAT(, 8526) +HANDLE_BAT(, 8527) +HANDLE_BAT(, 8528) +HANDLE_BAT(, 8529) +HANDLE_BAT(, 8530) +HANDLE_BAT(, 8531) +HANDLE_BAT(, 8532) +HANDLE_BAT(, 8533) +HANDLE_BAT(, 8534) +HANDLE_BAT(, 8535) +HANDLE_BAT(, 8536) +HANDLE_BAT(, 8537) +HANDLE_BAT(, 8538) +HANDLE_BAT(, 8539) +HANDLE_BAT(, 8540) +HANDLE_BAT(, 8541) +HANDLE_BAT(, 8542) +HANDLE_BAT(, 8543) +HANDLE_BAT(, 8544) +HANDLE_BAT(, 8545) +HANDLE_BAT(, 8546) +HANDLE_BAT(, 8547) +HANDLE_BAT(, 8548) +HANDLE_BAT(, 8549) +HANDLE_BAT(, 8550) +HANDLE_BAT(, 8551) +HANDLE_BAT(, 8552) +HANDLE_BAT(, 8553) +HANDLE_BAT(, 8554) +HANDLE_BAT(, 8555) +HANDLE_BAT(, 8556) +HANDLE_BAT(, 8557) +HANDLE_BAT(, 8558) +HANDLE_BAT(, 8559) +HANDLE_BAT(, 8560) +HANDLE_BAT(, 8561) +HANDLE_BAT(, 8562) +HANDLE_BAT(, 8563) +HANDLE_BAT(, 8564) +HANDLE_BAT(, 8565) +HANDLE_BAT(, 8566) +HANDLE_BAT(, 8567) +HANDLE_BAT(, 8568) +HANDLE_BAT(, 8569) +HANDLE_BAT(, 8570) +HANDLE_BAT(, 8571) +HANDLE_BAT(, 8572) +HANDLE_BAT(, 8573) +HANDLE_BAT(, 8574) +HANDLE_BAT(, 8575) +HANDLE_BAT(, 8576) +HANDLE_BAT(, 8577) +HANDLE_BAT(, 8578) +HANDLE_BAT(, 8579) +HANDLE_BAT(, 8580) +HANDLE_BAT(, 8581) +HANDLE_BAT(, 8582) +HANDLE_BAT(, 8583) +HANDLE_BAT(, 8584) +HANDLE_BAT(, 8585) +HANDLE_BAT(, 8586) +HANDLE_BAT(, 8587) +HANDLE_BAT(, 8588) +HANDLE_BAT(, 8589) +HANDLE_BAT(, 8590) +HANDLE_BAT(, 8591) +HANDLE_BAT(, 8592) +HANDLE_BAT(, 8593) +HANDLE_BAT(, 8594) +HANDLE_BAT(, 8595) +HANDLE_BAT(, 8596) +HANDLE_BAT(, 8597) +HANDLE_BAT(, 8598) +HANDLE_BAT(, 8599) +HANDLE_BAT(, 8600) +HANDLE_BAT(, 8601) +HANDLE_BAT(, 8602) +HANDLE_BAT(, 8603) +HANDLE_BAT(, 8604) +HANDLE_BAT(, 8605) +HANDLE_BAT(, 8606) +HANDLE_BAT(, 8607) +HANDLE_BAT(, 8608) +HANDLE_BAT(, 8609) +HANDLE_BAT(, 8610) +HANDLE_BAT(, 8611) +HANDLE_BAT(, 8612) +HANDLE_BAT(, 8613) +HANDLE_BAT(, 8614) +HANDLE_BAT(, 8615) +HANDLE_BAT(, 8616) +HANDLE_BAT(, 8617) +HANDLE_BAT(, 8618) +HANDLE_BAT(, 8619) +HANDLE_BAT(, 8620) +HANDLE_BAT(, 8621) +HANDLE_BAT(, 8622) +HANDLE_BAT(, 8623) +HANDLE_BAT(, 8624) +HANDLE_BAT(, 8625) +HANDLE_BAT(, 8626) +HANDLE_BAT(, 8627) +HANDLE_BAT(, 8628) +HANDLE_BAT(, 8629) +HANDLE_BAT(, 8630) +HANDLE_BAT(, 8631) +HANDLE_BAT(, 8632) +HANDLE_BAT(, 8633) +HANDLE_BAT(, 8634) +HANDLE_BAT(, 8635) +HANDLE_BAT(, 8636) +HANDLE_BAT(, 8637) +HANDLE_BAT(, 8638) +HANDLE_BAT(, 8639) +HANDLE_BAT(, 8640) +HANDLE_BAT(, 8641) +HANDLE_BAT(, 8642) +HANDLE_BAT(, 8643) +HANDLE_BAT(, 8644) +HANDLE_BAT(, 8645) +HANDLE_BAT(, 8646) +HANDLE_BAT(, 8647) +HANDLE_BAT(, 8648) +HANDLE_BAT(, 8649) +HANDLE_BAT(, 8650) +HANDLE_BAT(, 8651) +HANDLE_BAT(, 8652) +HANDLE_BAT(, 8653) +HANDLE_BAT(, 8654) +HANDLE_BAT(, 8655) +HANDLE_BAT(, 8656) +HANDLE_BAT(, 8657) +HANDLE_BAT(, 8658) +HANDLE_BAT(, 8659) +HANDLE_BAT(, 8660) +HANDLE_BAT(, 8661) +HANDLE_BAT(, 8662) +HANDLE_BAT(, 8663) +HANDLE_BAT(, 8664) +HANDLE_BAT(, 8665) +HANDLE_BAT(, 8666) +HANDLE_BAT(, 8667) +HANDLE_BAT(, 8668) +HANDLE_BAT(, 8669) +HANDLE_BAT(, 8670) +HANDLE_BAT(, 8671) +HANDLE_BAT(, 8672) +HANDLE_BAT(, 8673) +HANDLE_BAT(, 8674) +HANDLE_BAT(, 8675) +HANDLE_BAT(, 8676) +HANDLE_BAT(, 8677) +HANDLE_BAT(, 8678) +HANDLE_BAT(, 8679) +HANDLE_BAT(, 8680) +HANDLE_BAT(, 8681) +HANDLE_BAT(, 8682) +HANDLE_BAT(, 8683) +HANDLE_BAT(, 8684) +HANDLE_BAT(, 8685) +HANDLE_BAT(, 8686) +HANDLE_BAT(, 8687) +HANDLE_BAT(, 8688) +HANDLE_BAT(, 8689) +HANDLE_BAT(, 8690) +HANDLE_BAT(, 8691) +HANDLE_BAT(, 8692) +HANDLE_BAT(, 8693) +HANDLE_BAT(, 8694) +HANDLE_BAT(, 8695) +HANDLE_BAT(, 8696) +HANDLE_BAT(, 8697) +HANDLE_BAT(, 8698) +HANDLE_BAT(, 8699) +HANDLE_BAT(, 8700) +HANDLE_BAT(, 8701) +HANDLE_BAT(, 8702) +HANDLE_BAT(, 8703) +HANDLE_BAT(, 8704) +HANDLE_BAT(, 8705) +HANDLE_BAT(, 8706) +HANDLE_BAT(, 8707) +HANDLE_BAT(, 8708) +HANDLE_BAT(, 8709) +HANDLE_BAT(, 8710) +HANDLE_BAT(, 8711) +HANDLE_BAT(, 8712) +HANDLE_BAT(, 8713) +HANDLE_BAT(, 8714) +HANDLE_BAT(, 8715) +HANDLE_BAT(, 8716) +HANDLE_BAT(, 8717) +HANDLE_BAT(, 8718) +HANDLE_BAT(, 8719) +HANDLE_BAT(, 8720) +HANDLE_BAT(, 8721) +HANDLE_BAT(, 8722) +HANDLE_BAT(, 8723) +HANDLE_BAT(, 8724) +HANDLE_BAT(, 8725) +HANDLE_BAT(, 8726) +HANDLE_BAT(, 8727) +HANDLE_BAT(, 8728) +HANDLE_BAT(, 8729) +HANDLE_BAT(, 8730) +HANDLE_BAT(, 8731) +HANDLE_BAT(, 8732) +HANDLE_BAT(, 8733) +HANDLE_BAT(, 8734) +HANDLE_BAT(, 8735) +HANDLE_BAT(, 8736) +HANDLE_BAT(, 8737) +HANDLE_BAT(, 8738) +HANDLE_BAT(, 8739) +HANDLE_BAT(, 8740) +HANDLE_BAT(, 8741) +HANDLE_BAT(, 8742) +HANDLE_BAT(, 8743) +HANDLE_BAT(, 8744) +HANDLE_BAT(, 8745) +HANDLE_BAT(, 8746) +HANDLE_BAT(, 8747) +HANDLE_BAT(, 8748) +HANDLE_BAT(, 8749) +HANDLE_BAT(, 8750) +HANDLE_BAT(, 8751) +HANDLE_BAT(, 8752) +HANDLE_BAT(, 8753) +HANDLE_BAT(, 8754) +HANDLE_BAT(, 8755) +HANDLE_BAT(, 8756) +HANDLE_BAT(, 8757) +HANDLE_BAT(, 8758) +HANDLE_BAT(, 8759) +HANDLE_BAT(, 8760) +HANDLE_BAT(, 8761) +HANDLE_BAT(, 8762) +HANDLE_BAT(, 8763) +HANDLE_BAT(, 8764) +HANDLE_BAT(, 8765) +HANDLE_BAT(, 8766) +HANDLE_BAT(, 8767) +HANDLE_BAT(, 8768) +HANDLE_BAT(, 8769) +HANDLE_BAT(, 8770) +HANDLE_BAT(, 8771) +HANDLE_BAT(, 8772) +HANDLE_BAT(, 8773) +HANDLE_BAT(, 8774) +HANDLE_BAT(, 8775) +HANDLE_BAT(, 8776) +HANDLE_BAT(, 8777) +HANDLE_BAT(, 8778) +HANDLE_BAT(, 8779) +HANDLE_BAT(, 8780) +HANDLE_BAT(, 8781) +HANDLE_BAT(, 8782) +HANDLE_BAT(, 8783) +HANDLE_BAT(, 8784) +HANDLE_BAT(, 8785) +HANDLE_BAT(, 8786) +HANDLE_BAT(, 8787) +HANDLE_BAT(, 8788) +HANDLE_BAT(, 8789) +HANDLE_BAT(, 8790) +HANDLE_BAT(, 8791) +HANDLE_BAT(, 8792) +HANDLE_BAT(, 8793) +HANDLE_BAT(, 8794) +HANDLE_BAT(, 8795) +HANDLE_BAT(, 8796) +HANDLE_BAT(, 8797) +HANDLE_BAT(, 8798) +HANDLE_BAT(, 8799) +HANDLE_BAT(, 8800) +HANDLE_BAT(, 8801) +HANDLE_BAT(, 8802) +HANDLE_BAT(, 8803) +HANDLE_BAT(, 8804) +HANDLE_BAT(, 8805) +HANDLE_BAT(, 8806) +HANDLE_BAT(, 8807) +HANDLE_BAT(, 8808) +HANDLE_BAT(, 8809) +HANDLE_BAT(, 8810) +HANDLE_BAT(, 8811) +HANDLE_BAT(, 8812) +HANDLE_BAT(, 8813) +HANDLE_BAT(, 8814) +HANDLE_BAT(, 8815) +HANDLE_BAT(, 8816) +HANDLE_BAT(, 8817) +HANDLE_BAT(, 8818) +HANDLE_BAT(, 8819) +HANDLE_BAT(, 8820) +HANDLE_BAT(, 8821) +HANDLE_BAT(, 8822) +HANDLE_BAT(, 8823) +HANDLE_BAT(, 8824) +HANDLE_BAT(, 8825) +HANDLE_BAT(, 8826) +HANDLE_BAT(, 8827) +HANDLE_BAT(, 8828) +HANDLE_BAT(, 8829) +HANDLE_BAT(, 8830) +HANDLE_BAT(, 8831) +HANDLE_BAT(, 8832) +HANDLE_BAT(, 8833) +HANDLE_BAT(, 8834) +HANDLE_BAT(, 8835) +HANDLE_BAT(, 8836) +HANDLE_BAT(, 8837) +HANDLE_BAT(, 8838) +HANDLE_BAT(, 8839) +HANDLE_BAT(, 8840) +HANDLE_BAT(, 8841) +HANDLE_BAT(, 8842) +HANDLE_BAT(, 8843) +HANDLE_BAT(, 8844) +HANDLE_BAT(, 8845) +HANDLE_BAT(, 8846) +HANDLE_BAT(, 8847) +HANDLE_BAT(, 8848) +HANDLE_BAT(, 8849) +HANDLE_BAT(, 8850) +HANDLE_BAT(, 8851) +HANDLE_BAT(, 8852) +HANDLE_BAT(, 8853) +HANDLE_BAT(, 8854) +HANDLE_BAT(, 8855) +HANDLE_BAT(, 8856) +HANDLE_BAT(, 8857) +HANDLE_BAT(, 8858) +HANDLE_BAT(, 8859) +HANDLE_BAT(, 8860) +HANDLE_BAT(, 8861) +HANDLE_BAT(, 8862) +HANDLE_BAT(, 8863) +HANDLE_BAT(, 8864) +HANDLE_BAT(, 8865) +HANDLE_BAT(, 8866) +HANDLE_BAT(, 8867) +HANDLE_BAT(, 8868) +HANDLE_BAT(, 8869) +HANDLE_BAT(, 8870) +HANDLE_BAT(, 8871) +HANDLE_BAT(, 8872) +HANDLE_BAT(, 8873) +HANDLE_BAT(, 8874) +HANDLE_BAT(, 8875) +HANDLE_BAT(, 8876) +HANDLE_BAT(, 8877) +HANDLE_BAT(, 8878) +HANDLE_BAT(, 8879) +HANDLE_BAT(, 8880) +HANDLE_BAT(, 8881) +HANDLE_BAT(, 8882) +HANDLE_BAT(, 8883) +HANDLE_BAT(, 8884) +HANDLE_BAT(, 8885) +HANDLE_BAT(, 8886) +HANDLE_BAT(, 8887) +HANDLE_BAT(, 8888) +HANDLE_BAT(, 8889) +HANDLE_BAT(, 8890) +HANDLE_BAT(, 8891) +HANDLE_BAT(, 8892) +HANDLE_BAT(, 8893) +HANDLE_BAT(, 8894) +HANDLE_BAT(, 8895) +HANDLE_BAT(, 8896) +HANDLE_BAT(, 8897) +HANDLE_BAT(, 8898) +HANDLE_BAT(, 8899) +HANDLE_BAT(, 8900) +HANDLE_BAT(, 8901) +HANDLE_BAT(, 8902) +HANDLE_BAT(, 8903) +HANDLE_BAT(, 8904) +HANDLE_BAT(, 8905) +HANDLE_BAT(, 8906) +HANDLE_BAT(, 8907) +HANDLE_BAT(, 8908) +HANDLE_BAT(, 8909) +HANDLE_BAT(, 8910) +HANDLE_BAT(, 8911) +HANDLE_BAT(, 8912) +HANDLE_BAT(, 8913) +HANDLE_BAT(, 8914) +HANDLE_BAT(, 8915) +HANDLE_BAT(, 8916) +HANDLE_BAT(, 8917) +HANDLE_BAT(, 8918) +HANDLE_BAT(, 8919) +HANDLE_BAT(, 8920) +HANDLE_BAT(, 8921) +HANDLE_BAT(, 8922) +HANDLE_BAT(, 8923) +HANDLE_BAT(, 8924) +HANDLE_BAT(, 8925) +HANDLE_BAT(, 8926) +HANDLE_BAT(, 8927) +HANDLE_BAT(, 8928) +HANDLE_BAT(, 8929) +HANDLE_BAT(, 8930) +HANDLE_BAT(, 8931) +HANDLE_BAT(, 8932) +HANDLE_BAT(, 8933) +HANDLE_BAT(, 8934) +HANDLE_BAT(, 8935) +HANDLE_BAT(, 8936) +HANDLE_BAT(, 8937) +HANDLE_BAT(, 8938) +HANDLE_BAT(, 8939) +HANDLE_BAT(, 8940) +HANDLE_BAT(, 8941) +HANDLE_BAT(, 8942) +HANDLE_BAT(, 8943) +HANDLE_BAT(, 8944) +HANDLE_BAT(, 8945) +HANDLE_BAT(, 8946) +HANDLE_BAT(, 8947) +HANDLE_BAT(, 8948) +HANDLE_BAT(, 8949) +HANDLE_BAT(, 8950) +HANDLE_BAT(, 8951) +HANDLE_BAT(, 8952) +HANDLE_BAT(, 8953) +HANDLE_BAT(, 8954) +HANDLE_BAT(, 8955) +HANDLE_BAT(, 8956) +HANDLE_BAT(, 8957) +HANDLE_BAT(, 8958) +HANDLE_BAT(, 8959) +HANDLE_BAT(, 8960) +HANDLE_BAT(, 8961) +HANDLE_BAT(, 8962) +HANDLE_BAT(, 8963) +HANDLE_BAT(, 8964) +HANDLE_BAT(, 8965) +HANDLE_BAT(, 8966) +HANDLE_BAT(, 8967) +HANDLE_BAT(, 8968) +HANDLE_BAT(, 8969) +HANDLE_BAT(, 8970) +HANDLE_BAT(, 8971) +HANDLE_BAT(, 8972) +HANDLE_BAT(, 8973) +HANDLE_BAT(, 8974) +HANDLE_BAT(, 8975) +HANDLE_BAT(, 8976) +HANDLE_BAT(, 8977) +HANDLE_BAT(, 8978) +HANDLE_BAT(, 8979) +HANDLE_BAT(, 8980) +HANDLE_BAT(, 8981) +HANDLE_BAT(, 8982) +HANDLE_BAT(, 8983) +HANDLE_BAT(, 8984) +HANDLE_BAT(, 8985) +HANDLE_BAT(, 8986) +HANDLE_BAT(, 8987) +HANDLE_BAT(, 8988) +HANDLE_BAT(, 8989) +HANDLE_BAT(, 8990) +HANDLE_BAT(, 8991) +HANDLE_BAT(, 8992) +HANDLE_BAT(, 8993) +HANDLE_BAT(, 8994) +HANDLE_BAT(, 8995) +HANDLE_BAT(, 8996) +HANDLE_BAT(, 8997) +HANDLE_BAT(, 8998) +HANDLE_BAT(, 8999) +HANDLE_BAT(, 9000) +HANDLE_BAT(, 9001) +HANDLE_BAT(, 9002) +HANDLE_BAT(, 9003) +HANDLE_BAT(, 9004) +HANDLE_BAT(, 9005) +HANDLE_BAT(, 9006) +HANDLE_BAT(, 9007) +HANDLE_BAT(, 9008) +HANDLE_BAT(, 9009) +HANDLE_BAT(, 9010) +HANDLE_BAT(, 9011) +HANDLE_BAT(, 9012) +HANDLE_BAT(, 9013) +HANDLE_BAT(, 9014) +HANDLE_BAT(, 9015) +HANDLE_BAT(, 9016) +HANDLE_BAT(, 9017) +HANDLE_BAT(, 9018) +HANDLE_BAT(, 9019) +HANDLE_BAT(, 9020) +HANDLE_BAT(, 9021) +HANDLE_BAT(, 9022) +HANDLE_BAT(, 9023) +HANDLE_BAT(, 9024) +HANDLE_BAT(, 9025) +HANDLE_BAT(, 9026) +HANDLE_BAT(, 9027) +HANDLE_BAT(, 9028) +HANDLE_BAT(, 9029) +HANDLE_BAT(, 9030) +HANDLE_BAT(, 9031) +HANDLE_BAT(, 9032) +HANDLE_BAT(, 9033) +HANDLE_BAT(, 9034) +HANDLE_BAT(, 9035) +HANDLE_BAT(, 9036) +HANDLE_BAT(, 9037) +HANDLE_BAT(, 9038) +HANDLE_BAT(, 9039) +HANDLE_BAT(, 9040) +HANDLE_BAT(, 9041) +HANDLE_BAT(, 9042) +HANDLE_BAT(, 9043) +HANDLE_BAT(, 9044) +HANDLE_BAT(, 9045) +HANDLE_BAT(, 9046) +HANDLE_BAT(, 9047) +HANDLE_BAT(, 9048) +HANDLE_BAT(, 9049) +HANDLE_BAT(, 9050) +HANDLE_BAT(, 9051) +HANDLE_BAT(, 9052) +HANDLE_BAT(, 9053) +HANDLE_BAT(, 9054) +HANDLE_BAT(, 9055) +HANDLE_BAT(, 9056) +HANDLE_BAT(, 9057) +HANDLE_BAT(, 9058) +HANDLE_BAT(, 9059) +HANDLE_BAT(, 9060) +HANDLE_BAT(, 9061) +HANDLE_BAT(, 9062) +HANDLE_BAT(, 9063) +HANDLE_BAT(, 9064) +HANDLE_BAT(, 9065) +HANDLE_BAT(, 9066) +HANDLE_BAT(, 9067) +HANDLE_BAT(, 9068) +HANDLE_BAT(, 9069) +HANDLE_BAT(, 9070) +HANDLE_BAT(, 9071) +HANDLE_BAT(, 9072) +HANDLE_BAT(, 9073) +HANDLE_BAT(, 9074) +HANDLE_BAT(, 9075) +HANDLE_BAT(, 9076) +HANDLE_BAT(, 9077) +HANDLE_BAT(, 9078) +HANDLE_BAT(, 9079) +HANDLE_BAT(, 9080) +HANDLE_BAT(, 9081) +HANDLE_BAT(, 9082) +HANDLE_BAT(, 9083) +HANDLE_BAT(, 9084) +HANDLE_BAT(, 9085) +HANDLE_BAT(, 9086) +HANDLE_BAT(, 9087) +HANDLE_BAT(, 9088) +HANDLE_BAT(, 9089) +HANDLE_BAT(, 9090) +HANDLE_BAT(, 9091) +HANDLE_BAT(, 9092) +HANDLE_BAT(, 9093) +HANDLE_BAT(, 9094) +HANDLE_BAT(, 9095) +HANDLE_BAT(, 9096) +HANDLE_BAT(, 9097) +HANDLE_BAT(, 9098) +HANDLE_BAT(, 9099) +HANDLE_BAT(, 9100) +HANDLE_BAT(, 9101) +HANDLE_BAT(, 9102) +HANDLE_BAT(, 9103) +HANDLE_BAT(, 9104) +HANDLE_BAT(, 9105) +HANDLE_BAT(, 9106) +HANDLE_BAT(, 9107) +HANDLE_BAT(, 9108) +HANDLE_BAT(, 9109) +HANDLE_BAT(, 9110) +HANDLE_BAT(, 9111) +HANDLE_BAT(, 9112) +HANDLE_BAT(, 9113) +HANDLE_BAT(, 9114) +HANDLE_BAT(, 9115) +HANDLE_BAT(, 9116) +HANDLE_BAT(, 9117) +HANDLE_BAT(, 9118) +HANDLE_BAT(, 9119) +HANDLE_BAT(, 9120) +HANDLE_BAT(, 9121) +HANDLE_BAT(, 9122) +HANDLE_BAT(, 9123) +HANDLE_BAT(, 9124) +HANDLE_BAT(, 9125) +HANDLE_BAT(, 9126) +HANDLE_BAT(, 9127) +HANDLE_BAT(, 9128) +HANDLE_BAT(, 9129) +HANDLE_BAT(, 9130) +HANDLE_BAT(, 9131) +HANDLE_BAT(, 9132) +HANDLE_BAT(, 9133) +HANDLE_BAT(, 9134) +HANDLE_BAT(, 9135) +HANDLE_BAT(, 9136) +HANDLE_BAT(, 9137) +HANDLE_BAT(, 9138) +HANDLE_BAT(, 9139) +HANDLE_BAT(, 9140) +HANDLE_BAT(, 9141) +HANDLE_BAT(, 9142) +HANDLE_BAT(, 9143) +HANDLE_BAT(, 9144) +HANDLE_BAT(, 9145) +HANDLE_BAT(, 9146) +HANDLE_BAT(, 9147) +HANDLE_BAT(, 9148) +HANDLE_BAT(, 9149) +HANDLE_BAT(, 9150) +HANDLE_BAT(, 9151) +HANDLE_BAT(, 9152) +HANDLE_BAT(, 9153) +HANDLE_BAT(, 9154) +HANDLE_BAT(, 9155) +HANDLE_BAT(, 9156) +HANDLE_BAT(, 9157) +HANDLE_BAT(, 9158) +HANDLE_BAT(, 9159) +HANDLE_BAT(, 9160) +HANDLE_BAT(, 9161) +HANDLE_BAT(, 9162) +HANDLE_BAT(, 9163) +HANDLE_BAT(, 9164) +HANDLE_BAT(, 9165) +HANDLE_BAT(, 9166) +HANDLE_BAT(, 9167) +HANDLE_BAT(, 9168) +HANDLE_BAT(, 9169) +HANDLE_BAT(, 9170) +HANDLE_BAT(, 9171) +HANDLE_BAT(, 9172) +HANDLE_BAT(, 9173) +HANDLE_BAT(, 9174) +HANDLE_BAT(, 9175) +HANDLE_BAT(, 9176) +HANDLE_BAT(, 9177) +HANDLE_BAT(, 9178) +HANDLE_BAT(, 9179) +HANDLE_BAT(, 9180) +HANDLE_BAT(, 9181) +HANDLE_BAT(, 9182) +HANDLE_BAT(, 9183) +HANDLE_BAT(, 9184) +HANDLE_BAT(, 9185) +HANDLE_BAT(, 9186) +HANDLE_BAT(, 9187) +HANDLE_BAT(, 9188) +HANDLE_BAT(, 9189) +HANDLE_BAT(, 9190) +HANDLE_BAT(, 9191) +HANDLE_BAT(, 9192) +HANDLE_BAT(, 9193) +HANDLE_BAT(, 9194) +HANDLE_BAT(, 9195) +HANDLE_BAT(, 9196) +HANDLE_BAT(, 9197) +HANDLE_BAT(, 9198) +HANDLE_BAT(, 9199) +HANDLE_BAT(, 9200) +HANDLE_BAT(, 9201) +HANDLE_BAT(, 9202) +HANDLE_BAT(, 9203) +HANDLE_BAT(, 9204) +HANDLE_BAT(, 9205) +HANDLE_BAT(, 9206) +HANDLE_BAT(, 9207) +HANDLE_BAT(, 9208) +HANDLE_BAT(, 9209) +HANDLE_BAT(, 9210) +HANDLE_BAT(, 9211) +HANDLE_BAT(, 9212) +HANDLE_BAT(, 9213) +HANDLE_BAT(, 9214) +HANDLE_BAT(, 9215) +HANDLE_BAT(, 9216) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 8193) +HANDLE_BAT(APINT_TYPE_PREFIX, 8194) +HANDLE_BAT(APINT_TYPE_PREFIX, 8195) +HANDLE_BAT(APINT_TYPE_PREFIX, 8196) +HANDLE_BAT(APINT_TYPE_PREFIX, 8197) +HANDLE_BAT(APINT_TYPE_PREFIX, 8198) +HANDLE_BAT(APINT_TYPE_PREFIX, 8199) +HANDLE_BAT(APINT_TYPE_PREFIX, 8200) +HANDLE_BAT(APINT_TYPE_PREFIX, 8201) +HANDLE_BAT(APINT_TYPE_PREFIX, 8202) +HANDLE_BAT(APINT_TYPE_PREFIX, 8203) +HANDLE_BAT(APINT_TYPE_PREFIX, 8204) +HANDLE_BAT(APINT_TYPE_PREFIX, 8205) +HANDLE_BAT(APINT_TYPE_PREFIX, 8206) +HANDLE_BAT(APINT_TYPE_PREFIX, 8207) +HANDLE_BAT(APINT_TYPE_PREFIX, 8208) +HANDLE_BAT(APINT_TYPE_PREFIX, 8209) +HANDLE_BAT(APINT_TYPE_PREFIX, 8210) +HANDLE_BAT(APINT_TYPE_PREFIX, 8211) +HANDLE_BAT(APINT_TYPE_PREFIX, 8212) +HANDLE_BAT(APINT_TYPE_PREFIX, 8213) +HANDLE_BAT(APINT_TYPE_PREFIX, 8214) +HANDLE_BAT(APINT_TYPE_PREFIX, 8215) +HANDLE_BAT(APINT_TYPE_PREFIX, 8216) +HANDLE_BAT(APINT_TYPE_PREFIX, 8217) +HANDLE_BAT(APINT_TYPE_PREFIX, 8218) +HANDLE_BAT(APINT_TYPE_PREFIX, 8219) +HANDLE_BAT(APINT_TYPE_PREFIX, 8220) +HANDLE_BAT(APINT_TYPE_PREFIX, 8221) +HANDLE_BAT(APINT_TYPE_PREFIX, 8222) +HANDLE_BAT(APINT_TYPE_PREFIX, 8223) +HANDLE_BAT(APINT_TYPE_PREFIX, 8224) +HANDLE_BAT(APINT_TYPE_PREFIX, 8225) +HANDLE_BAT(APINT_TYPE_PREFIX, 8226) +HANDLE_BAT(APINT_TYPE_PREFIX, 8227) +HANDLE_BAT(APINT_TYPE_PREFIX, 8228) +HANDLE_BAT(APINT_TYPE_PREFIX, 8229) +HANDLE_BAT(APINT_TYPE_PREFIX, 8230) +HANDLE_BAT(APINT_TYPE_PREFIX, 8231) +HANDLE_BAT(APINT_TYPE_PREFIX, 8232) +HANDLE_BAT(APINT_TYPE_PREFIX, 8233) +HANDLE_BAT(APINT_TYPE_PREFIX, 8234) +HANDLE_BAT(APINT_TYPE_PREFIX, 8235) +HANDLE_BAT(APINT_TYPE_PREFIX, 8236) +HANDLE_BAT(APINT_TYPE_PREFIX, 8237) +HANDLE_BAT(APINT_TYPE_PREFIX, 8238) +HANDLE_BAT(APINT_TYPE_PREFIX, 8239) +HANDLE_BAT(APINT_TYPE_PREFIX, 8240) +HANDLE_BAT(APINT_TYPE_PREFIX, 8241) +HANDLE_BAT(APINT_TYPE_PREFIX, 8242) +HANDLE_BAT(APINT_TYPE_PREFIX, 8243) +HANDLE_BAT(APINT_TYPE_PREFIX, 8244) +HANDLE_BAT(APINT_TYPE_PREFIX, 8245) +HANDLE_BAT(APINT_TYPE_PREFIX, 8246) +HANDLE_BAT(APINT_TYPE_PREFIX, 8247) +HANDLE_BAT(APINT_TYPE_PREFIX, 8248) +HANDLE_BAT(APINT_TYPE_PREFIX, 8249) +HANDLE_BAT(APINT_TYPE_PREFIX, 8250) +HANDLE_BAT(APINT_TYPE_PREFIX, 8251) +HANDLE_BAT(APINT_TYPE_PREFIX, 8252) +HANDLE_BAT(APINT_TYPE_PREFIX, 8253) +HANDLE_BAT(APINT_TYPE_PREFIX, 8254) +HANDLE_BAT(APINT_TYPE_PREFIX, 8255) +HANDLE_BAT(APINT_TYPE_PREFIX, 8256) +HANDLE_BAT(APINT_TYPE_PREFIX, 8257) +HANDLE_BAT(APINT_TYPE_PREFIX, 8258) +HANDLE_BAT(APINT_TYPE_PREFIX, 8259) +HANDLE_BAT(APINT_TYPE_PREFIX, 8260) +HANDLE_BAT(APINT_TYPE_PREFIX, 8261) +HANDLE_BAT(APINT_TYPE_PREFIX, 8262) +HANDLE_BAT(APINT_TYPE_PREFIX, 8263) +HANDLE_BAT(APINT_TYPE_PREFIX, 8264) +HANDLE_BAT(APINT_TYPE_PREFIX, 8265) +HANDLE_BAT(APINT_TYPE_PREFIX, 8266) +HANDLE_BAT(APINT_TYPE_PREFIX, 8267) +HANDLE_BAT(APINT_TYPE_PREFIX, 8268) +HANDLE_BAT(APINT_TYPE_PREFIX, 8269) +HANDLE_BAT(APINT_TYPE_PREFIX, 8270) +HANDLE_BAT(APINT_TYPE_PREFIX, 8271) +HANDLE_BAT(APINT_TYPE_PREFIX, 8272) +HANDLE_BAT(APINT_TYPE_PREFIX, 8273) +HANDLE_BAT(APINT_TYPE_PREFIX, 8274) +HANDLE_BAT(APINT_TYPE_PREFIX, 8275) +HANDLE_BAT(APINT_TYPE_PREFIX, 8276) +HANDLE_BAT(APINT_TYPE_PREFIX, 8277) +HANDLE_BAT(APINT_TYPE_PREFIX, 8278) +HANDLE_BAT(APINT_TYPE_PREFIX, 8279) +HANDLE_BAT(APINT_TYPE_PREFIX, 8280) +HANDLE_BAT(APINT_TYPE_PREFIX, 8281) +HANDLE_BAT(APINT_TYPE_PREFIX, 8282) +HANDLE_BAT(APINT_TYPE_PREFIX, 8283) +HANDLE_BAT(APINT_TYPE_PREFIX, 8284) +HANDLE_BAT(APINT_TYPE_PREFIX, 8285) +HANDLE_BAT(APINT_TYPE_PREFIX, 8286) +HANDLE_BAT(APINT_TYPE_PREFIX, 8287) +HANDLE_BAT(APINT_TYPE_PREFIX, 8288) +HANDLE_BAT(APINT_TYPE_PREFIX, 8289) +HANDLE_BAT(APINT_TYPE_PREFIX, 8290) +HANDLE_BAT(APINT_TYPE_PREFIX, 8291) +HANDLE_BAT(APINT_TYPE_PREFIX, 8292) +HANDLE_BAT(APINT_TYPE_PREFIX, 8293) +HANDLE_BAT(APINT_TYPE_PREFIX, 8294) +HANDLE_BAT(APINT_TYPE_PREFIX, 8295) +HANDLE_BAT(APINT_TYPE_PREFIX, 8296) +HANDLE_BAT(APINT_TYPE_PREFIX, 8297) +HANDLE_BAT(APINT_TYPE_PREFIX, 8298) +HANDLE_BAT(APINT_TYPE_PREFIX, 8299) +HANDLE_BAT(APINT_TYPE_PREFIX, 8300) +HANDLE_BAT(APINT_TYPE_PREFIX, 8301) +HANDLE_BAT(APINT_TYPE_PREFIX, 8302) +HANDLE_BAT(APINT_TYPE_PREFIX, 8303) +HANDLE_BAT(APINT_TYPE_PREFIX, 8304) +HANDLE_BAT(APINT_TYPE_PREFIX, 8305) +HANDLE_BAT(APINT_TYPE_PREFIX, 8306) +HANDLE_BAT(APINT_TYPE_PREFIX, 8307) +HANDLE_BAT(APINT_TYPE_PREFIX, 8308) +HANDLE_BAT(APINT_TYPE_PREFIX, 8309) +HANDLE_BAT(APINT_TYPE_PREFIX, 8310) +HANDLE_BAT(APINT_TYPE_PREFIX, 8311) +HANDLE_BAT(APINT_TYPE_PREFIX, 8312) +HANDLE_BAT(APINT_TYPE_PREFIX, 8313) +HANDLE_BAT(APINT_TYPE_PREFIX, 8314) +HANDLE_BAT(APINT_TYPE_PREFIX, 8315) +HANDLE_BAT(APINT_TYPE_PREFIX, 8316) +HANDLE_BAT(APINT_TYPE_PREFIX, 8317) +HANDLE_BAT(APINT_TYPE_PREFIX, 8318) +HANDLE_BAT(APINT_TYPE_PREFIX, 8319) +HANDLE_BAT(APINT_TYPE_PREFIX, 8320) +HANDLE_BAT(APINT_TYPE_PREFIX, 8321) +HANDLE_BAT(APINT_TYPE_PREFIX, 8322) +HANDLE_BAT(APINT_TYPE_PREFIX, 8323) +HANDLE_BAT(APINT_TYPE_PREFIX, 8324) +HANDLE_BAT(APINT_TYPE_PREFIX, 8325) +HANDLE_BAT(APINT_TYPE_PREFIX, 8326) +HANDLE_BAT(APINT_TYPE_PREFIX, 8327) +HANDLE_BAT(APINT_TYPE_PREFIX, 8328) +HANDLE_BAT(APINT_TYPE_PREFIX, 8329) +HANDLE_BAT(APINT_TYPE_PREFIX, 8330) +HANDLE_BAT(APINT_TYPE_PREFIX, 8331) +HANDLE_BAT(APINT_TYPE_PREFIX, 8332) +HANDLE_BAT(APINT_TYPE_PREFIX, 8333) +HANDLE_BAT(APINT_TYPE_PREFIX, 8334) +HANDLE_BAT(APINT_TYPE_PREFIX, 8335) +HANDLE_BAT(APINT_TYPE_PREFIX, 8336) +HANDLE_BAT(APINT_TYPE_PREFIX, 8337) +HANDLE_BAT(APINT_TYPE_PREFIX, 8338) +HANDLE_BAT(APINT_TYPE_PREFIX, 8339) +HANDLE_BAT(APINT_TYPE_PREFIX, 8340) +HANDLE_BAT(APINT_TYPE_PREFIX, 8341) +HANDLE_BAT(APINT_TYPE_PREFIX, 8342) +HANDLE_BAT(APINT_TYPE_PREFIX, 8343) +HANDLE_BAT(APINT_TYPE_PREFIX, 8344) +HANDLE_BAT(APINT_TYPE_PREFIX, 8345) +HANDLE_BAT(APINT_TYPE_PREFIX, 8346) +HANDLE_BAT(APINT_TYPE_PREFIX, 8347) +HANDLE_BAT(APINT_TYPE_PREFIX, 8348) +HANDLE_BAT(APINT_TYPE_PREFIX, 8349) +HANDLE_BAT(APINT_TYPE_PREFIX, 8350) +HANDLE_BAT(APINT_TYPE_PREFIX, 8351) +HANDLE_BAT(APINT_TYPE_PREFIX, 8352) +HANDLE_BAT(APINT_TYPE_PREFIX, 8353) +HANDLE_BAT(APINT_TYPE_PREFIX, 8354) +HANDLE_BAT(APINT_TYPE_PREFIX, 8355) +HANDLE_BAT(APINT_TYPE_PREFIX, 8356) +HANDLE_BAT(APINT_TYPE_PREFIX, 8357) +HANDLE_BAT(APINT_TYPE_PREFIX, 8358) +HANDLE_BAT(APINT_TYPE_PREFIX, 8359) +HANDLE_BAT(APINT_TYPE_PREFIX, 8360) +HANDLE_BAT(APINT_TYPE_PREFIX, 8361) +HANDLE_BAT(APINT_TYPE_PREFIX, 8362) +HANDLE_BAT(APINT_TYPE_PREFIX, 8363) +HANDLE_BAT(APINT_TYPE_PREFIX, 8364) +HANDLE_BAT(APINT_TYPE_PREFIX, 8365) +HANDLE_BAT(APINT_TYPE_PREFIX, 8366) +HANDLE_BAT(APINT_TYPE_PREFIX, 8367) +HANDLE_BAT(APINT_TYPE_PREFIX, 8368) +HANDLE_BAT(APINT_TYPE_PREFIX, 8369) +HANDLE_BAT(APINT_TYPE_PREFIX, 8370) +HANDLE_BAT(APINT_TYPE_PREFIX, 8371) +HANDLE_BAT(APINT_TYPE_PREFIX, 8372) +HANDLE_BAT(APINT_TYPE_PREFIX, 8373) +HANDLE_BAT(APINT_TYPE_PREFIX, 8374) +HANDLE_BAT(APINT_TYPE_PREFIX, 8375) +HANDLE_BAT(APINT_TYPE_PREFIX, 8376) +HANDLE_BAT(APINT_TYPE_PREFIX, 8377) +HANDLE_BAT(APINT_TYPE_PREFIX, 8378) +HANDLE_BAT(APINT_TYPE_PREFIX, 8379) +HANDLE_BAT(APINT_TYPE_PREFIX, 8380) +HANDLE_BAT(APINT_TYPE_PREFIX, 8381) +HANDLE_BAT(APINT_TYPE_PREFIX, 8382) +HANDLE_BAT(APINT_TYPE_PREFIX, 8383) +HANDLE_BAT(APINT_TYPE_PREFIX, 8384) +HANDLE_BAT(APINT_TYPE_PREFIX, 8385) +HANDLE_BAT(APINT_TYPE_PREFIX, 8386) +HANDLE_BAT(APINT_TYPE_PREFIX, 8387) +HANDLE_BAT(APINT_TYPE_PREFIX, 8388) +HANDLE_BAT(APINT_TYPE_PREFIX, 8389) +HANDLE_BAT(APINT_TYPE_PREFIX, 8390) +HANDLE_BAT(APINT_TYPE_PREFIX, 8391) +HANDLE_BAT(APINT_TYPE_PREFIX, 8392) +HANDLE_BAT(APINT_TYPE_PREFIX, 8393) +HANDLE_BAT(APINT_TYPE_PREFIX, 8394) +HANDLE_BAT(APINT_TYPE_PREFIX, 8395) +HANDLE_BAT(APINT_TYPE_PREFIX, 8396) +HANDLE_BAT(APINT_TYPE_PREFIX, 8397) +HANDLE_BAT(APINT_TYPE_PREFIX, 8398) +HANDLE_BAT(APINT_TYPE_PREFIX, 8399) +HANDLE_BAT(APINT_TYPE_PREFIX, 8400) +HANDLE_BAT(APINT_TYPE_PREFIX, 8401) +HANDLE_BAT(APINT_TYPE_PREFIX, 8402) +HANDLE_BAT(APINT_TYPE_PREFIX, 8403) +HANDLE_BAT(APINT_TYPE_PREFIX, 8404) +HANDLE_BAT(APINT_TYPE_PREFIX, 8405) +HANDLE_BAT(APINT_TYPE_PREFIX, 8406) +HANDLE_BAT(APINT_TYPE_PREFIX, 8407) +HANDLE_BAT(APINT_TYPE_PREFIX, 8408) +HANDLE_BAT(APINT_TYPE_PREFIX, 8409) +HANDLE_BAT(APINT_TYPE_PREFIX, 8410) +HANDLE_BAT(APINT_TYPE_PREFIX, 8411) +HANDLE_BAT(APINT_TYPE_PREFIX, 8412) +HANDLE_BAT(APINT_TYPE_PREFIX, 8413) +HANDLE_BAT(APINT_TYPE_PREFIX, 8414) +HANDLE_BAT(APINT_TYPE_PREFIX, 8415) +HANDLE_BAT(APINT_TYPE_PREFIX, 8416) +HANDLE_BAT(APINT_TYPE_PREFIX, 8417) +HANDLE_BAT(APINT_TYPE_PREFIX, 8418) +HANDLE_BAT(APINT_TYPE_PREFIX, 8419) +HANDLE_BAT(APINT_TYPE_PREFIX, 8420) +HANDLE_BAT(APINT_TYPE_PREFIX, 8421) +HANDLE_BAT(APINT_TYPE_PREFIX, 8422) +HANDLE_BAT(APINT_TYPE_PREFIX, 8423) +HANDLE_BAT(APINT_TYPE_PREFIX, 8424) +HANDLE_BAT(APINT_TYPE_PREFIX, 8425) +HANDLE_BAT(APINT_TYPE_PREFIX, 8426) +HANDLE_BAT(APINT_TYPE_PREFIX, 8427) +HANDLE_BAT(APINT_TYPE_PREFIX, 8428) +HANDLE_BAT(APINT_TYPE_PREFIX, 8429) +HANDLE_BAT(APINT_TYPE_PREFIX, 8430) +HANDLE_BAT(APINT_TYPE_PREFIX, 8431) +HANDLE_BAT(APINT_TYPE_PREFIX, 8432) +HANDLE_BAT(APINT_TYPE_PREFIX, 8433) +HANDLE_BAT(APINT_TYPE_PREFIX, 8434) +HANDLE_BAT(APINT_TYPE_PREFIX, 8435) +HANDLE_BAT(APINT_TYPE_PREFIX, 8436) +HANDLE_BAT(APINT_TYPE_PREFIX, 8437) +HANDLE_BAT(APINT_TYPE_PREFIX, 8438) +HANDLE_BAT(APINT_TYPE_PREFIX, 8439) +HANDLE_BAT(APINT_TYPE_PREFIX, 8440) +HANDLE_BAT(APINT_TYPE_PREFIX, 8441) +HANDLE_BAT(APINT_TYPE_PREFIX, 8442) +HANDLE_BAT(APINT_TYPE_PREFIX, 8443) +HANDLE_BAT(APINT_TYPE_PREFIX, 8444) +HANDLE_BAT(APINT_TYPE_PREFIX, 8445) +HANDLE_BAT(APINT_TYPE_PREFIX, 8446) +HANDLE_BAT(APINT_TYPE_PREFIX, 8447) +HANDLE_BAT(APINT_TYPE_PREFIX, 8448) +HANDLE_BAT(APINT_TYPE_PREFIX, 8449) +HANDLE_BAT(APINT_TYPE_PREFIX, 8450) +HANDLE_BAT(APINT_TYPE_PREFIX, 8451) +HANDLE_BAT(APINT_TYPE_PREFIX, 8452) +HANDLE_BAT(APINT_TYPE_PREFIX, 8453) +HANDLE_BAT(APINT_TYPE_PREFIX, 8454) +HANDLE_BAT(APINT_TYPE_PREFIX, 8455) +HANDLE_BAT(APINT_TYPE_PREFIX, 8456) +HANDLE_BAT(APINT_TYPE_PREFIX, 8457) +HANDLE_BAT(APINT_TYPE_PREFIX, 8458) +HANDLE_BAT(APINT_TYPE_PREFIX, 8459) +HANDLE_BAT(APINT_TYPE_PREFIX, 8460) +HANDLE_BAT(APINT_TYPE_PREFIX, 8461) +HANDLE_BAT(APINT_TYPE_PREFIX, 8462) +HANDLE_BAT(APINT_TYPE_PREFIX, 8463) +HANDLE_BAT(APINT_TYPE_PREFIX, 8464) +HANDLE_BAT(APINT_TYPE_PREFIX, 8465) +HANDLE_BAT(APINT_TYPE_PREFIX, 8466) +HANDLE_BAT(APINT_TYPE_PREFIX, 8467) +HANDLE_BAT(APINT_TYPE_PREFIX, 8468) +HANDLE_BAT(APINT_TYPE_PREFIX, 8469) +HANDLE_BAT(APINT_TYPE_PREFIX, 8470) +HANDLE_BAT(APINT_TYPE_PREFIX, 8471) +HANDLE_BAT(APINT_TYPE_PREFIX, 8472) +HANDLE_BAT(APINT_TYPE_PREFIX, 8473) +HANDLE_BAT(APINT_TYPE_PREFIX, 8474) +HANDLE_BAT(APINT_TYPE_PREFIX, 8475) +HANDLE_BAT(APINT_TYPE_PREFIX, 8476) +HANDLE_BAT(APINT_TYPE_PREFIX, 8477) +HANDLE_BAT(APINT_TYPE_PREFIX, 8478) +HANDLE_BAT(APINT_TYPE_PREFIX, 8479) +HANDLE_BAT(APINT_TYPE_PREFIX, 8480) +HANDLE_BAT(APINT_TYPE_PREFIX, 8481) +HANDLE_BAT(APINT_TYPE_PREFIX, 8482) +HANDLE_BAT(APINT_TYPE_PREFIX, 8483) +HANDLE_BAT(APINT_TYPE_PREFIX, 8484) +HANDLE_BAT(APINT_TYPE_PREFIX, 8485) +HANDLE_BAT(APINT_TYPE_PREFIX, 8486) +HANDLE_BAT(APINT_TYPE_PREFIX, 8487) +HANDLE_BAT(APINT_TYPE_PREFIX, 8488) +HANDLE_BAT(APINT_TYPE_PREFIX, 8489) +HANDLE_BAT(APINT_TYPE_PREFIX, 8490) +HANDLE_BAT(APINT_TYPE_PREFIX, 8491) +HANDLE_BAT(APINT_TYPE_PREFIX, 8492) +HANDLE_BAT(APINT_TYPE_PREFIX, 8493) +HANDLE_BAT(APINT_TYPE_PREFIX, 8494) +HANDLE_BAT(APINT_TYPE_PREFIX, 8495) +HANDLE_BAT(APINT_TYPE_PREFIX, 8496) +HANDLE_BAT(APINT_TYPE_PREFIX, 8497) +HANDLE_BAT(APINT_TYPE_PREFIX, 8498) +HANDLE_BAT(APINT_TYPE_PREFIX, 8499) +HANDLE_BAT(APINT_TYPE_PREFIX, 8500) +HANDLE_BAT(APINT_TYPE_PREFIX, 8501) +HANDLE_BAT(APINT_TYPE_PREFIX, 8502) +HANDLE_BAT(APINT_TYPE_PREFIX, 8503) +HANDLE_BAT(APINT_TYPE_PREFIX, 8504) +HANDLE_BAT(APINT_TYPE_PREFIX, 8505) +HANDLE_BAT(APINT_TYPE_PREFIX, 8506) +HANDLE_BAT(APINT_TYPE_PREFIX, 8507) +HANDLE_BAT(APINT_TYPE_PREFIX, 8508) +HANDLE_BAT(APINT_TYPE_PREFIX, 8509) +HANDLE_BAT(APINT_TYPE_PREFIX, 8510) +HANDLE_BAT(APINT_TYPE_PREFIX, 8511) +HANDLE_BAT(APINT_TYPE_PREFIX, 8512) +HANDLE_BAT(APINT_TYPE_PREFIX, 8513) +HANDLE_BAT(APINT_TYPE_PREFIX, 8514) +HANDLE_BAT(APINT_TYPE_PREFIX, 8515) +HANDLE_BAT(APINT_TYPE_PREFIX, 8516) +HANDLE_BAT(APINT_TYPE_PREFIX, 8517) +HANDLE_BAT(APINT_TYPE_PREFIX, 8518) +HANDLE_BAT(APINT_TYPE_PREFIX, 8519) +HANDLE_BAT(APINT_TYPE_PREFIX, 8520) +HANDLE_BAT(APINT_TYPE_PREFIX, 8521) +HANDLE_BAT(APINT_TYPE_PREFIX, 8522) +HANDLE_BAT(APINT_TYPE_PREFIX, 8523) +HANDLE_BAT(APINT_TYPE_PREFIX, 8524) +HANDLE_BAT(APINT_TYPE_PREFIX, 8525) +HANDLE_BAT(APINT_TYPE_PREFIX, 8526) +HANDLE_BAT(APINT_TYPE_PREFIX, 8527) +HANDLE_BAT(APINT_TYPE_PREFIX, 8528) +HANDLE_BAT(APINT_TYPE_PREFIX, 8529) +HANDLE_BAT(APINT_TYPE_PREFIX, 8530) +HANDLE_BAT(APINT_TYPE_PREFIX, 8531) +HANDLE_BAT(APINT_TYPE_PREFIX, 8532) +HANDLE_BAT(APINT_TYPE_PREFIX, 8533) +HANDLE_BAT(APINT_TYPE_PREFIX, 8534) +HANDLE_BAT(APINT_TYPE_PREFIX, 8535) +HANDLE_BAT(APINT_TYPE_PREFIX, 8536) +HANDLE_BAT(APINT_TYPE_PREFIX, 8537) +HANDLE_BAT(APINT_TYPE_PREFIX, 8538) +HANDLE_BAT(APINT_TYPE_PREFIX, 8539) +HANDLE_BAT(APINT_TYPE_PREFIX, 8540) +HANDLE_BAT(APINT_TYPE_PREFIX, 8541) +HANDLE_BAT(APINT_TYPE_PREFIX, 8542) +HANDLE_BAT(APINT_TYPE_PREFIX, 8543) +HANDLE_BAT(APINT_TYPE_PREFIX, 8544) +HANDLE_BAT(APINT_TYPE_PREFIX, 8545) +HANDLE_BAT(APINT_TYPE_PREFIX, 8546) +HANDLE_BAT(APINT_TYPE_PREFIX, 8547) +HANDLE_BAT(APINT_TYPE_PREFIX, 8548) +HANDLE_BAT(APINT_TYPE_PREFIX, 8549) +HANDLE_BAT(APINT_TYPE_PREFIX, 8550) +HANDLE_BAT(APINT_TYPE_PREFIX, 8551) +HANDLE_BAT(APINT_TYPE_PREFIX, 8552) +HANDLE_BAT(APINT_TYPE_PREFIX, 8553) +HANDLE_BAT(APINT_TYPE_PREFIX, 8554) +HANDLE_BAT(APINT_TYPE_PREFIX, 8555) +HANDLE_BAT(APINT_TYPE_PREFIX, 8556) +HANDLE_BAT(APINT_TYPE_PREFIX, 8557) +HANDLE_BAT(APINT_TYPE_PREFIX, 8558) +HANDLE_BAT(APINT_TYPE_PREFIX, 8559) +HANDLE_BAT(APINT_TYPE_PREFIX, 8560) +HANDLE_BAT(APINT_TYPE_PREFIX, 8561) +HANDLE_BAT(APINT_TYPE_PREFIX, 8562) +HANDLE_BAT(APINT_TYPE_PREFIX, 8563) +HANDLE_BAT(APINT_TYPE_PREFIX, 8564) +HANDLE_BAT(APINT_TYPE_PREFIX, 8565) +HANDLE_BAT(APINT_TYPE_PREFIX, 8566) +HANDLE_BAT(APINT_TYPE_PREFIX, 8567) +HANDLE_BAT(APINT_TYPE_PREFIX, 8568) +HANDLE_BAT(APINT_TYPE_PREFIX, 8569) +HANDLE_BAT(APINT_TYPE_PREFIX, 8570) +HANDLE_BAT(APINT_TYPE_PREFIX, 8571) +HANDLE_BAT(APINT_TYPE_PREFIX, 8572) +HANDLE_BAT(APINT_TYPE_PREFIX, 8573) +HANDLE_BAT(APINT_TYPE_PREFIX, 8574) +HANDLE_BAT(APINT_TYPE_PREFIX, 8575) +HANDLE_BAT(APINT_TYPE_PREFIX, 8576) +HANDLE_BAT(APINT_TYPE_PREFIX, 8577) +HANDLE_BAT(APINT_TYPE_PREFIX, 8578) +HANDLE_BAT(APINT_TYPE_PREFIX, 8579) +HANDLE_BAT(APINT_TYPE_PREFIX, 8580) +HANDLE_BAT(APINT_TYPE_PREFIX, 8581) +HANDLE_BAT(APINT_TYPE_PREFIX, 8582) +HANDLE_BAT(APINT_TYPE_PREFIX, 8583) +HANDLE_BAT(APINT_TYPE_PREFIX, 8584) +HANDLE_BAT(APINT_TYPE_PREFIX, 8585) +HANDLE_BAT(APINT_TYPE_PREFIX, 8586) +HANDLE_BAT(APINT_TYPE_PREFIX, 8587) +HANDLE_BAT(APINT_TYPE_PREFIX, 8588) +HANDLE_BAT(APINT_TYPE_PREFIX, 8589) +HANDLE_BAT(APINT_TYPE_PREFIX, 8590) +HANDLE_BAT(APINT_TYPE_PREFIX, 8591) +HANDLE_BAT(APINT_TYPE_PREFIX, 8592) +HANDLE_BAT(APINT_TYPE_PREFIX, 8593) +HANDLE_BAT(APINT_TYPE_PREFIX, 8594) +HANDLE_BAT(APINT_TYPE_PREFIX, 8595) +HANDLE_BAT(APINT_TYPE_PREFIX, 8596) +HANDLE_BAT(APINT_TYPE_PREFIX, 8597) +HANDLE_BAT(APINT_TYPE_PREFIX, 8598) +HANDLE_BAT(APINT_TYPE_PREFIX, 8599) +HANDLE_BAT(APINT_TYPE_PREFIX, 8600) +HANDLE_BAT(APINT_TYPE_PREFIX, 8601) +HANDLE_BAT(APINT_TYPE_PREFIX, 8602) +HANDLE_BAT(APINT_TYPE_PREFIX, 8603) +HANDLE_BAT(APINT_TYPE_PREFIX, 8604) +HANDLE_BAT(APINT_TYPE_PREFIX, 8605) +HANDLE_BAT(APINT_TYPE_PREFIX, 8606) +HANDLE_BAT(APINT_TYPE_PREFIX, 8607) +HANDLE_BAT(APINT_TYPE_PREFIX, 8608) +HANDLE_BAT(APINT_TYPE_PREFIX, 8609) +HANDLE_BAT(APINT_TYPE_PREFIX, 8610) +HANDLE_BAT(APINT_TYPE_PREFIX, 8611) +HANDLE_BAT(APINT_TYPE_PREFIX, 8612) +HANDLE_BAT(APINT_TYPE_PREFIX, 8613) +HANDLE_BAT(APINT_TYPE_PREFIX, 8614) +HANDLE_BAT(APINT_TYPE_PREFIX, 8615) +HANDLE_BAT(APINT_TYPE_PREFIX, 8616) +HANDLE_BAT(APINT_TYPE_PREFIX, 8617) +HANDLE_BAT(APINT_TYPE_PREFIX, 8618) +HANDLE_BAT(APINT_TYPE_PREFIX, 8619) +HANDLE_BAT(APINT_TYPE_PREFIX, 8620) +HANDLE_BAT(APINT_TYPE_PREFIX, 8621) +HANDLE_BAT(APINT_TYPE_PREFIX, 8622) +HANDLE_BAT(APINT_TYPE_PREFIX, 8623) +HANDLE_BAT(APINT_TYPE_PREFIX, 8624) +HANDLE_BAT(APINT_TYPE_PREFIX, 8625) +HANDLE_BAT(APINT_TYPE_PREFIX, 8626) +HANDLE_BAT(APINT_TYPE_PREFIX, 8627) +HANDLE_BAT(APINT_TYPE_PREFIX, 8628) +HANDLE_BAT(APINT_TYPE_PREFIX, 8629) +HANDLE_BAT(APINT_TYPE_PREFIX, 8630) +HANDLE_BAT(APINT_TYPE_PREFIX, 8631) +HANDLE_BAT(APINT_TYPE_PREFIX, 8632) +HANDLE_BAT(APINT_TYPE_PREFIX, 8633) +HANDLE_BAT(APINT_TYPE_PREFIX, 8634) +HANDLE_BAT(APINT_TYPE_PREFIX, 8635) +HANDLE_BAT(APINT_TYPE_PREFIX, 8636) +HANDLE_BAT(APINT_TYPE_PREFIX, 8637) +HANDLE_BAT(APINT_TYPE_PREFIX, 8638) +HANDLE_BAT(APINT_TYPE_PREFIX, 8639) +HANDLE_BAT(APINT_TYPE_PREFIX, 8640) +HANDLE_BAT(APINT_TYPE_PREFIX, 8641) +HANDLE_BAT(APINT_TYPE_PREFIX, 8642) +HANDLE_BAT(APINT_TYPE_PREFIX, 8643) +HANDLE_BAT(APINT_TYPE_PREFIX, 8644) +HANDLE_BAT(APINT_TYPE_PREFIX, 8645) +HANDLE_BAT(APINT_TYPE_PREFIX, 8646) +HANDLE_BAT(APINT_TYPE_PREFIX, 8647) +HANDLE_BAT(APINT_TYPE_PREFIX, 8648) +HANDLE_BAT(APINT_TYPE_PREFIX, 8649) +HANDLE_BAT(APINT_TYPE_PREFIX, 8650) +HANDLE_BAT(APINT_TYPE_PREFIX, 8651) +HANDLE_BAT(APINT_TYPE_PREFIX, 8652) +HANDLE_BAT(APINT_TYPE_PREFIX, 8653) +HANDLE_BAT(APINT_TYPE_PREFIX, 8654) +HANDLE_BAT(APINT_TYPE_PREFIX, 8655) +HANDLE_BAT(APINT_TYPE_PREFIX, 8656) +HANDLE_BAT(APINT_TYPE_PREFIX, 8657) +HANDLE_BAT(APINT_TYPE_PREFIX, 8658) +HANDLE_BAT(APINT_TYPE_PREFIX, 8659) +HANDLE_BAT(APINT_TYPE_PREFIX, 8660) +HANDLE_BAT(APINT_TYPE_PREFIX, 8661) +HANDLE_BAT(APINT_TYPE_PREFIX, 8662) +HANDLE_BAT(APINT_TYPE_PREFIX, 8663) +HANDLE_BAT(APINT_TYPE_PREFIX, 8664) +HANDLE_BAT(APINT_TYPE_PREFIX, 8665) +HANDLE_BAT(APINT_TYPE_PREFIX, 8666) +HANDLE_BAT(APINT_TYPE_PREFIX, 8667) +HANDLE_BAT(APINT_TYPE_PREFIX, 8668) +HANDLE_BAT(APINT_TYPE_PREFIX, 8669) +HANDLE_BAT(APINT_TYPE_PREFIX, 8670) +HANDLE_BAT(APINT_TYPE_PREFIX, 8671) +HANDLE_BAT(APINT_TYPE_PREFIX, 8672) +HANDLE_BAT(APINT_TYPE_PREFIX, 8673) +HANDLE_BAT(APINT_TYPE_PREFIX, 8674) +HANDLE_BAT(APINT_TYPE_PREFIX, 8675) +HANDLE_BAT(APINT_TYPE_PREFIX, 8676) +HANDLE_BAT(APINT_TYPE_PREFIX, 8677) +HANDLE_BAT(APINT_TYPE_PREFIX, 8678) +HANDLE_BAT(APINT_TYPE_PREFIX, 8679) +HANDLE_BAT(APINT_TYPE_PREFIX, 8680) +HANDLE_BAT(APINT_TYPE_PREFIX, 8681) +HANDLE_BAT(APINT_TYPE_PREFIX, 8682) +HANDLE_BAT(APINT_TYPE_PREFIX, 8683) +HANDLE_BAT(APINT_TYPE_PREFIX, 8684) +HANDLE_BAT(APINT_TYPE_PREFIX, 8685) +HANDLE_BAT(APINT_TYPE_PREFIX, 8686) +HANDLE_BAT(APINT_TYPE_PREFIX, 8687) +HANDLE_BAT(APINT_TYPE_PREFIX, 8688) +HANDLE_BAT(APINT_TYPE_PREFIX, 8689) +HANDLE_BAT(APINT_TYPE_PREFIX, 8690) +HANDLE_BAT(APINT_TYPE_PREFIX, 8691) +HANDLE_BAT(APINT_TYPE_PREFIX, 8692) +HANDLE_BAT(APINT_TYPE_PREFIX, 8693) +HANDLE_BAT(APINT_TYPE_PREFIX, 8694) +HANDLE_BAT(APINT_TYPE_PREFIX, 8695) +HANDLE_BAT(APINT_TYPE_PREFIX, 8696) +HANDLE_BAT(APINT_TYPE_PREFIX, 8697) +HANDLE_BAT(APINT_TYPE_PREFIX, 8698) +HANDLE_BAT(APINT_TYPE_PREFIX, 8699) +HANDLE_BAT(APINT_TYPE_PREFIX, 8700) +HANDLE_BAT(APINT_TYPE_PREFIX, 8701) +HANDLE_BAT(APINT_TYPE_PREFIX, 8702) +HANDLE_BAT(APINT_TYPE_PREFIX, 8703) +HANDLE_BAT(APINT_TYPE_PREFIX, 8704) +HANDLE_BAT(APINT_TYPE_PREFIX, 8705) +HANDLE_BAT(APINT_TYPE_PREFIX, 8706) +HANDLE_BAT(APINT_TYPE_PREFIX, 8707) +HANDLE_BAT(APINT_TYPE_PREFIX, 8708) +HANDLE_BAT(APINT_TYPE_PREFIX, 8709) +HANDLE_BAT(APINT_TYPE_PREFIX, 8710) +HANDLE_BAT(APINT_TYPE_PREFIX, 8711) +HANDLE_BAT(APINT_TYPE_PREFIX, 8712) +HANDLE_BAT(APINT_TYPE_PREFIX, 8713) +HANDLE_BAT(APINT_TYPE_PREFIX, 8714) +HANDLE_BAT(APINT_TYPE_PREFIX, 8715) +HANDLE_BAT(APINT_TYPE_PREFIX, 8716) +HANDLE_BAT(APINT_TYPE_PREFIX, 8717) +HANDLE_BAT(APINT_TYPE_PREFIX, 8718) +HANDLE_BAT(APINT_TYPE_PREFIX, 8719) +HANDLE_BAT(APINT_TYPE_PREFIX, 8720) +HANDLE_BAT(APINT_TYPE_PREFIX, 8721) +HANDLE_BAT(APINT_TYPE_PREFIX, 8722) +HANDLE_BAT(APINT_TYPE_PREFIX, 8723) +HANDLE_BAT(APINT_TYPE_PREFIX, 8724) +HANDLE_BAT(APINT_TYPE_PREFIX, 8725) +HANDLE_BAT(APINT_TYPE_PREFIX, 8726) +HANDLE_BAT(APINT_TYPE_PREFIX, 8727) +HANDLE_BAT(APINT_TYPE_PREFIX, 8728) +HANDLE_BAT(APINT_TYPE_PREFIX, 8729) +HANDLE_BAT(APINT_TYPE_PREFIX, 8730) +HANDLE_BAT(APINT_TYPE_PREFIX, 8731) +HANDLE_BAT(APINT_TYPE_PREFIX, 8732) +HANDLE_BAT(APINT_TYPE_PREFIX, 8733) +HANDLE_BAT(APINT_TYPE_PREFIX, 8734) +HANDLE_BAT(APINT_TYPE_PREFIX, 8735) +HANDLE_BAT(APINT_TYPE_PREFIX, 8736) +HANDLE_BAT(APINT_TYPE_PREFIX, 8737) +HANDLE_BAT(APINT_TYPE_PREFIX, 8738) +HANDLE_BAT(APINT_TYPE_PREFIX, 8739) +HANDLE_BAT(APINT_TYPE_PREFIX, 8740) +HANDLE_BAT(APINT_TYPE_PREFIX, 8741) +HANDLE_BAT(APINT_TYPE_PREFIX, 8742) +HANDLE_BAT(APINT_TYPE_PREFIX, 8743) +HANDLE_BAT(APINT_TYPE_PREFIX, 8744) +HANDLE_BAT(APINT_TYPE_PREFIX, 8745) +HANDLE_BAT(APINT_TYPE_PREFIX, 8746) +HANDLE_BAT(APINT_TYPE_PREFIX, 8747) +HANDLE_BAT(APINT_TYPE_PREFIX, 8748) +HANDLE_BAT(APINT_TYPE_PREFIX, 8749) +HANDLE_BAT(APINT_TYPE_PREFIX, 8750) +HANDLE_BAT(APINT_TYPE_PREFIX, 8751) +HANDLE_BAT(APINT_TYPE_PREFIX, 8752) +HANDLE_BAT(APINT_TYPE_PREFIX, 8753) +HANDLE_BAT(APINT_TYPE_PREFIX, 8754) +HANDLE_BAT(APINT_TYPE_PREFIX, 8755) +HANDLE_BAT(APINT_TYPE_PREFIX, 8756) +HANDLE_BAT(APINT_TYPE_PREFIX, 8757) +HANDLE_BAT(APINT_TYPE_PREFIX, 8758) +HANDLE_BAT(APINT_TYPE_PREFIX, 8759) +HANDLE_BAT(APINT_TYPE_PREFIX, 8760) +HANDLE_BAT(APINT_TYPE_PREFIX, 8761) +HANDLE_BAT(APINT_TYPE_PREFIX, 8762) +HANDLE_BAT(APINT_TYPE_PREFIX, 8763) +HANDLE_BAT(APINT_TYPE_PREFIX, 8764) +HANDLE_BAT(APINT_TYPE_PREFIX, 8765) +HANDLE_BAT(APINT_TYPE_PREFIX, 8766) +HANDLE_BAT(APINT_TYPE_PREFIX, 8767) +HANDLE_BAT(APINT_TYPE_PREFIX, 8768) +HANDLE_BAT(APINT_TYPE_PREFIX, 8769) +HANDLE_BAT(APINT_TYPE_PREFIX, 8770) +HANDLE_BAT(APINT_TYPE_PREFIX, 8771) +HANDLE_BAT(APINT_TYPE_PREFIX, 8772) +HANDLE_BAT(APINT_TYPE_PREFIX, 8773) +HANDLE_BAT(APINT_TYPE_PREFIX, 8774) +HANDLE_BAT(APINT_TYPE_PREFIX, 8775) +HANDLE_BAT(APINT_TYPE_PREFIX, 8776) +HANDLE_BAT(APINT_TYPE_PREFIX, 8777) +HANDLE_BAT(APINT_TYPE_PREFIX, 8778) +HANDLE_BAT(APINT_TYPE_PREFIX, 8779) +HANDLE_BAT(APINT_TYPE_PREFIX, 8780) +HANDLE_BAT(APINT_TYPE_PREFIX, 8781) +HANDLE_BAT(APINT_TYPE_PREFIX, 8782) +HANDLE_BAT(APINT_TYPE_PREFIX, 8783) +HANDLE_BAT(APINT_TYPE_PREFIX, 8784) +HANDLE_BAT(APINT_TYPE_PREFIX, 8785) +HANDLE_BAT(APINT_TYPE_PREFIX, 8786) +HANDLE_BAT(APINT_TYPE_PREFIX, 8787) +HANDLE_BAT(APINT_TYPE_PREFIX, 8788) +HANDLE_BAT(APINT_TYPE_PREFIX, 8789) +HANDLE_BAT(APINT_TYPE_PREFIX, 8790) +HANDLE_BAT(APINT_TYPE_PREFIX, 8791) +HANDLE_BAT(APINT_TYPE_PREFIX, 8792) +HANDLE_BAT(APINT_TYPE_PREFIX, 8793) +HANDLE_BAT(APINT_TYPE_PREFIX, 8794) +HANDLE_BAT(APINT_TYPE_PREFIX, 8795) +HANDLE_BAT(APINT_TYPE_PREFIX, 8796) +HANDLE_BAT(APINT_TYPE_PREFIX, 8797) +HANDLE_BAT(APINT_TYPE_PREFIX, 8798) +HANDLE_BAT(APINT_TYPE_PREFIX, 8799) +HANDLE_BAT(APINT_TYPE_PREFIX, 8800) +HANDLE_BAT(APINT_TYPE_PREFIX, 8801) +HANDLE_BAT(APINT_TYPE_PREFIX, 8802) +HANDLE_BAT(APINT_TYPE_PREFIX, 8803) +HANDLE_BAT(APINT_TYPE_PREFIX, 8804) +HANDLE_BAT(APINT_TYPE_PREFIX, 8805) +HANDLE_BAT(APINT_TYPE_PREFIX, 8806) +HANDLE_BAT(APINT_TYPE_PREFIX, 8807) +HANDLE_BAT(APINT_TYPE_PREFIX, 8808) +HANDLE_BAT(APINT_TYPE_PREFIX, 8809) +HANDLE_BAT(APINT_TYPE_PREFIX, 8810) +HANDLE_BAT(APINT_TYPE_PREFIX, 8811) +HANDLE_BAT(APINT_TYPE_PREFIX, 8812) +HANDLE_BAT(APINT_TYPE_PREFIX, 8813) +HANDLE_BAT(APINT_TYPE_PREFIX, 8814) +HANDLE_BAT(APINT_TYPE_PREFIX, 8815) +HANDLE_BAT(APINT_TYPE_PREFIX, 8816) +HANDLE_BAT(APINT_TYPE_PREFIX, 8817) +HANDLE_BAT(APINT_TYPE_PREFIX, 8818) +HANDLE_BAT(APINT_TYPE_PREFIX, 8819) +HANDLE_BAT(APINT_TYPE_PREFIX, 8820) +HANDLE_BAT(APINT_TYPE_PREFIX, 8821) +HANDLE_BAT(APINT_TYPE_PREFIX, 8822) +HANDLE_BAT(APINT_TYPE_PREFIX, 8823) +HANDLE_BAT(APINT_TYPE_PREFIX, 8824) +HANDLE_BAT(APINT_TYPE_PREFIX, 8825) +HANDLE_BAT(APINT_TYPE_PREFIX, 8826) +HANDLE_BAT(APINT_TYPE_PREFIX, 8827) +HANDLE_BAT(APINT_TYPE_PREFIX, 8828) +HANDLE_BAT(APINT_TYPE_PREFIX, 8829) +HANDLE_BAT(APINT_TYPE_PREFIX, 8830) +HANDLE_BAT(APINT_TYPE_PREFIX, 8831) +HANDLE_BAT(APINT_TYPE_PREFIX, 8832) +HANDLE_BAT(APINT_TYPE_PREFIX, 8833) +HANDLE_BAT(APINT_TYPE_PREFIX, 8834) +HANDLE_BAT(APINT_TYPE_PREFIX, 8835) +HANDLE_BAT(APINT_TYPE_PREFIX, 8836) +HANDLE_BAT(APINT_TYPE_PREFIX, 8837) +HANDLE_BAT(APINT_TYPE_PREFIX, 8838) +HANDLE_BAT(APINT_TYPE_PREFIX, 8839) +HANDLE_BAT(APINT_TYPE_PREFIX, 8840) +HANDLE_BAT(APINT_TYPE_PREFIX, 8841) +HANDLE_BAT(APINT_TYPE_PREFIX, 8842) +HANDLE_BAT(APINT_TYPE_PREFIX, 8843) +HANDLE_BAT(APINT_TYPE_PREFIX, 8844) +HANDLE_BAT(APINT_TYPE_PREFIX, 8845) +HANDLE_BAT(APINT_TYPE_PREFIX, 8846) +HANDLE_BAT(APINT_TYPE_PREFIX, 8847) +HANDLE_BAT(APINT_TYPE_PREFIX, 8848) +HANDLE_BAT(APINT_TYPE_PREFIX, 8849) +HANDLE_BAT(APINT_TYPE_PREFIX, 8850) +HANDLE_BAT(APINT_TYPE_PREFIX, 8851) +HANDLE_BAT(APINT_TYPE_PREFIX, 8852) +HANDLE_BAT(APINT_TYPE_PREFIX, 8853) +HANDLE_BAT(APINT_TYPE_PREFIX, 8854) +HANDLE_BAT(APINT_TYPE_PREFIX, 8855) +HANDLE_BAT(APINT_TYPE_PREFIX, 8856) +HANDLE_BAT(APINT_TYPE_PREFIX, 8857) +HANDLE_BAT(APINT_TYPE_PREFIX, 8858) +HANDLE_BAT(APINT_TYPE_PREFIX, 8859) +HANDLE_BAT(APINT_TYPE_PREFIX, 8860) +HANDLE_BAT(APINT_TYPE_PREFIX, 8861) +HANDLE_BAT(APINT_TYPE_PREFIX, 8862) +HANDLE_BAT(APINT_TYPE_PREFIX, 8863) +HANDLE_BAT(APINT_TYPE_PREFIX, 8864) +HANDLE_BAT(APINT_TYPE_PREFIX, 8865) +HANDLE_BAT(APINT_TYPE_PREFIX, 8866) +HANDLE_BAT(APINT_TYPE_PREFIX, 8867) +HANDLE_BAT(APINT_TYPE_PREFIX, 8868) +HANDLE_BAT(APINT_TYPE_PREFIX, 8869) +HANDLE_BAT(APINT_TYPE_PREFIX, 8870) +HANDLE_BAT(APINT_TYPE_PREFIX, 8871) +HANDLE_BAT(APINT_TYPE_PREFIX, 8872) +HANDLE_BAT(APINT_TYPE_PREFIX, 8873) +HANDLE_BAT(APINT_TYPE_PREFIX, 8874) +HANDLE_BAT(APINT_TYPE_PREFIX, 8875) +HANDLE_BAT(APINT_TYPE_PREFIX, 8876) +HANDLE_BAT(APINT_TYPE_PREFIX, 8877) +HANDLE_BAT(APINT_TYPE_PREFIX, 8878) +HANDLE_BAT(APINT_TYPE_PREFIX, 8879) +HANDLE_BAT(APINT_TYPE_PREFIX, 8880) +HANDLE_BAT(APINT_TYPE_PREFIX, 8881) +HANDLE_BAT(APINT_TYPE_PREFIX, 8882) +HANDLE_BAT(APINT_TYPE_PREFIX, 8883) +HANDLE_BAT(APINT_TYPE_PREFIX, 8884) +HANDLE_BAT(APINT_TYPE_PREFIX, 8885) +HANDLE_BAT(APINT_TYPE_PREFIX, 8886) +HANDLE_BAT(APINT_TYPE_PREFIX, 8887) +HANDLE_BAT(APINT_TYPE_PREFIX, 8888) +HANDLE_BAT(APINT_TYPE_PREFIX, 8889) +HANDLE_BAT(APINT_TYPE_PREFIX, 8890) +HANDLE_BAT(APINT_TYPE_PREFIX, 8891) +HANDLE_BAT(APINT_TYPE_PREFIX, 8892) +HANDLE_BAT(APINT_TYPE_PREFIX, 8893) +HANDLE_BAT(APINT_TYPE_PREFIX, 8894) +HANDLE_BAT(APINT_TYPE_PREFIX, 8895) +HANDLE_BAT(APINT_TYPE_PREFIX, 8896) +HANDLE_BAT(APINT_TYPE_PREFIX, 8897) +HANDLE_BAT(APINT_TYPE_PREFIX, 8898) +HANDLE_BAT(APINT_TYPE_PREFIX, 8899) +HANDLE_BAT(APINT_TYPE_PREFIX, 8900) +HANDLE_BAT(APINT_TYPE_PREFIX, 8901) +HANDLE_BAT(APINT_TYPE_PREFIX, 8902) +HANDLE_BAT(APINT_TYPE_PREFIX, 8903) +HANDLE_BAT(APINT_TYPE_PREFIX, 8904) +HANDLE_BAT(APINT_TYPE_PREFIX, 8905) +HANDLE_BAT(APINT_TYPE_PREFIX, 8906) +HANDLE_BAT(APINT_TYPE_PREFIX, 8907) +HANDLE_BAT(APINT_TYPE_PREFIX, 8908) +HANDLE_BAT(APINT_TYPE_PREFIX, 8909) +HANDLE_BAT(APINT_TYPE_PREFIX, 8910) +HANDLE_BAT(APINT_TYPE_PREFIX, 8911) +HANDLE_BAT(APINT_TYPE_PREFIX, 8912) +HANDLE_BAT(APINT_TYPE_PREFIX, 8913) +HANDLE_BAT(APINT_TYPE_PREFIX, 8914) +HANDLE_BAT(APINT_TYPE_PREFIX, 8915) +HANDLE_BAT(APINT_TYPE_PREFIX, 8916) +HANDLE_BAT(APINT_TYPE_PREFIX, 8917) +HANDLE_BAT(APINT_TYPE_PREFIX, 8918) +HANDLE_BAT(APINT_TYPE_PREFIX, 8919) +HANDLE_BAT(APINT_TYPE_PREFIX, 8920) +HANDLE_BAT(APINT_TYPE_PREFIX, 8921) +HANDLE_BAT(APINT_TYPE_PREFIX, 8922) +HANDLE_BAT(APINT_TYPE_PREFIX, 8923) +HANDLE_BAT(APINT_TYPE_PREFIX, 8924) +HANDLE_BAT(APINT_TYPE_PREFIX, 8925) +HANDLE_BAT(APINT_TYPE_PREFIX, 8926) +HANDLE_BAT(APINT_TYPE_PREFIX, 8927) +HANDLE_BAT(APINT_TYPE_PREFIX, 8928) +HANDLE_BAT(APINT_TYPE_PREFIX, 8929) +HANDLE_BAT(APINT_TYPE_PREFIX, 8930) +HANDLE_BAT(APINT_TYPE_PREFIX, 8931) +HANDLE_BAT(APINT_TYPE_PREFIX, 8932) +HANDLE_BAT(APINT_TYPE_PREFIX, 8933) +HANDLE_BAT(APINT_TYPE_PREFIX, 8934) +HANDLE_BAT(APINT_TYPE_PREFIX, 8935) +HANDLE_BAT(APINT_TYPE_PREFIX, 8936) +HANDLE_BAT(APINT_TYPE_PREFIX, 8937) +HANDLE_BAT(APINT_TYPE_PREFIX, 8938) +HANDLE_BAT(APINT_TYPE_PREFIX, 8939) +HANDLE_BAT(APINT_TYPE_PREFIX, 8940) +HANDLE_BAT(APINT_TYPE_PREFIX, 8941) +HANDLE_BAT(APINT_TYPE_PREFIX, 8942) +HANDLE_BAT(APINT_TYPE_PREFIX, 8943) +HANDLE_BAT(APINT_TYPE_PREFIX, 8944) +HANDLE_BAT(APINT_TYPE_PREFIX, 8945) +HANDLE_BAT(APINT_TYPE_PREFIX, 8946) +HANDLE_BAT(APINT_TYPE_PREFIX, 8947) +HANDLE_BAT(APINT_TYPE_PREFIX, 8948) +HANDLE_BAT(APINT_TYPE_PREFIX, 8949) +HANDLE_BAT(APINT_TYPE_PREFIX, 8950) +HANDLE_BAT(APINT_TYPE_PREFIX, 8951) +HANDLE_BAT(APINT_TYPE_PREFIX, 8952) +HANDLE_BAT(APINT_TYPE_PREFIX, 8953) +HANDLE_BAT(APINT_TYPE_PREFIX, 8954) +HANDLE_BAT(APINT_TYPE_PREFIX, 8955) +HANDLE_BAT(APINT_TYPE_PREFIX, 8956) +HANDLE_BAT(APINT_TYPE_PREFIX, 8957) +HANDLE_BAT(APINT_TYPE_PREFIX, 8958) +HANDLE_BAT(APINT_TYPE_PREFIX, 8959) +HANDLE_BAT(APINT_TYPE_PREFIX, 8960) +HANDLE_BAT(APINT_TYPE_PREFIX, 8961) +HANDLE_BAT(APINT_TYPE_PREFIX, 8962) +HANDLE_BAT(APINT_TYPE_PREFIX, 8963) +HANDLE_BAT(APINT_TYPE_PREFIX, 8964) +HANDLE_BAT(APINT_TYPE_PREFIX, 8965) +HANDLE_BAT(APINT_TYPE_PREFIX, 8966) +HANDLE_BAT(APINT_TYPE_PREFIX, 8967) +HANDLE_BAT(APINT_TYPE_PREFIX, 8968) +HANDLE_BAT(APINT_TYPE_PREFIX, 8969) +HANDLE_BAT(APINT_TYPE_PREFIX, 8970) +HANDLE_BAT(APINT_TYPE_PREFIX, 8971) +HANDLE_BAT(APINT_TYPE_PREFIX, 8972) +HANDLE_BAT(APINT_TYPE_PREFIX, 8973) +HANDLE_BAT(APINT_TYPE_PREFIX, 8974) +HANDLE_BAT(APINT_TYPE_PREFIX, 8975) +HANDLE_BAT(APINT_TYPE_PREFIX, 8976) +HANDLE_BAT(APINT_TYPE_PREFIX, 8977) +HANDLE_BAT(APINT_TYPE_PREFIX, 8978) +HANDLE_BAT(APINT_TYPE_PREFIX, 8979) +HANDLE_BAT(APINT_TYPE_PREFIX, 8980) +HANDLE_BAT(APINT_TYPE_PREFIX, 8981) +HANDLE_BAT(APINT_TYPE_PREFIX, 8982) +HANDLE_BAT(APINT_TYPE_PREFIX, 8983) +HANDLE_BAT(APINT_TYPE_PREFIX, 8984) +HANDLE_BAT(APINT_TYPE_PREFIX, 8985) +HANDLE_BAT(APINT_TYPE_PREFIX, 8986) +HANDLE_BAT(APINT_TYPE_PREFIX, 8987) +HANDLE_BAT(APINT_TYPE_PREFIX, 8988) +HANDLE_BAT(APINT_TYPE_PREFIX, 8989) +HANDLE_BAT(APINT_TYPE_PREFIX, 8990) +HANDLE_BAT(APINT_TYPE_PREFIX, 8991) +HANDLE_BAT(APINT_TYPE_PREFIX, 8992) +HANDLE_BAT(APINT_TYPE_PREFIX, 8993) +HANDLE_BAT(APINT_TYPE_PREFIX, 8994) +HANDLE_BAT(APINT_TYPE_PREFIX, 8995) +HANDLE_BAT(APINT_TYPE_PREFIX, 8996) +HANDLE_BAT(APINT_TYPE_PREFIX, 8997) +HANDLE_BAT(APINT_TYPE_PREFIX, 8998) +HANDLE_BAT(APINT_TYPE_PREFIX, 8999) +HANDLE_BAT(APINT_TYPE_PREFIX, 9000) +HANDLE_BAT(APINT_TYPE_PREFIX, 9001) +HANDLE_BAT(APINT_TYPE_PREFIX, 9002) +HANDLE_BAT(APINT_TYPE_PREFIX, 9003) +HANDLE_BAT(APINT_TYPE_PREFIX, 9004) +HANDLE_BAT(APINT_TYPE_PREFIX, 9005) +HANDLE_BAT(APINT_TYPE_PREFIX, 9006) +HANDLE_BAT(APINT_TYPE_PREFIX, 9007) +HANDLE_BAT(APINT_TYPE_PREFIX, 9008) +HANDLE_BAT(APINT_TYPE_PREFIX, 9009) +HANDLE_BAT(APINT_TYPE_PREFIX, 9010) +HANDLE_BAT(APINT_TYPE_PREFIX, 9011) +HANDLE_BAT(APINT_TYPE_PREFIX, 9012) +HANDLE_BAT(APINT_TYPE_PREFIX, 9013) +HANDLE_BAT(APINT_TYPE_PREFIX, 9014) +HANDLE_BAT(APINT_TYPE_PREFIX, 9015) +HANDLE_BAT(APINT_TYPE_PREFIX, 9016) +HANDLE_BAT(APINT_TYPE_PREFIX, 9017) +HANDLE_BAT(APINT_TYPE_PREFIX, 9018) +HANDLE_BAT(APINT_TYPE_PREFIX, 9019) +HANDLE_BAT(APINT_TYPE_PREFIX, 9020) +HANDLE_BAT(APINT_TYPE_PREFIX, 9021) +HANDLE_BAT(APINT_TYPE_PREFIX, 9022) +HANDLE_BAT(APINT_TYPE_PREFIX, 9023) +HANDLE_BAT(APINT_TYPE_PREFIX, 9024) +HANDLE_BAT(APINT_TYPE_PREFIX, 9025) +HANDLE_BAT(APINT_TYPE_PREFIX, 9026) +HANDLE_BAT(APINT_TYPE_PREFIX, 9027) +HANDLE_BAT(APINT_TYPE_PREFIX, 9028) +HANDLE_BAT(APINT_TYPE_PREFIX, 9029) +HANDLE_BAT(APINT_TYPE_PREFIX, 9030) +HANDLE_BAT(APINT_TYPE_PREFIX, 9031) +HANDLE_BAT(APINT_TYPE_PREFIX, 9032) +HANDLE_BAT(APINT_TYPE_PREFIX, 9033) +HANDLE_BAT(APINT_TYPE_PREFIX, 9034) +HANDLE_BAT(APINT_TYPE_PREFIX, 9035) +HANDLE_BAT(APINT_TYPE_PREFIX, 9036) +HANDLE_BAT(APINT_TYPE_PREFIX, 9037) +HANDLE_BAT(APINT_TYPE_PREFIX, 9038) +HANDLE_BAT(APINT_TYPE_PREFIX, 9039) +HANDLE_BAT(APINT_TYPE_PREFIX, 9040) +HANDLE_BAT(APINT_TYPE_PREFIX, 9041) +HANDLE_BAT(APINT_TYPE_PREFIX, 9042) +HANDLE_BAT(APINT_TYPE_PREFIX, 9043) +HANDLE_BAT(APINT_TYPE_PREFIX, 9044) +HANDLE_BAT(APINT_TYPE_PREFIX, 9045) +HANDLE_BAT(APINT_TYPE_PREFIX, 9046) +HANDLE_BAT(APINT_TYPE_PREFIX, 9047) +HANDLE_BAT(APINT_TYPE_PREFIX, 9048) +HANDLE_BAT(APINT_TYPE_PREFIX, 9049) +HANDLE_BAT(APINT_TYPE_PREFIX, 9050) +HANDLE_BAT(APINT_TYPE_PREFIX, 9051) +HANDLE_BAT(APINT_TYPE_PREFIX, 9052) +HANDLE_BAT(APINT_TYPE_PREFIX, 9053) +HANDLE_BAT(APINT_TYPE_PREFIX, 9054) +HANDLE_BAT(APINT_TYPE_PREFIX, 9055) +HANDLE_BAT(APINT_TYPE_PREFIX, 9056) +HANDLE_BAT(APINT_TYPE_PREFIX, 9057) +HANDLE_BAT(APINT_TYPE_PREFIX, 9058) +HANDLE_BAT(APINT_TYPE_PREFIX, 9059) +HANDLE_BAT(APINT_TYPE_PREFIX, 9060) +HANDLE_BAT(APINT_TYPE_PREFIX, 9061) +HANDLE_BAT(APINT_TYPE_PREFIX, 9062) +HANDLE_BAT(APINT_TYPE_PREFIX, 9063) +HANDLE_BAT(APINT_TYPE_PREFIX, 9064) +HANDLE_BAT(APINT_TYPE_PREFIX, 9065) +HANDLE_BAT(APINT_TYPE_PREFIX, 9066) +HANDLE_BAT(APINT_TYPE_PREFIX, 9067) +HANDLE_BAT(APINT_TYPE_PREFIX, 9068) +HANDLE_BAT(APINT_TYPE_PREFIX, 9069) +HANDLE_BAT(APINT_TYPE_PREFIX, 9070) +HANDLE_BAT(APINT_TYPE_PREFIX, 9071) +HANDLE_BAT(APINT_TYPE_PREFIX, 9072) +HANDLE_BAT(APINT_TYPE_PREFIX, 9073) +HANDLE_BAT(APINT_TYPE_PREFIX, 9074) +HANDLE_BAT(APINT_TYPE_PREFIX, 9075) +HANDLE_BAT(APINT_TYPE_PREFIX, 9076) +HANDLE_BAT(APINT_TYPE_PREFIX, 9077) +HANDLE_BAT(APINT_TYPE_PREFIX, 9078) +HANDLE_BAT(APINT_TYPE_PREFIX, 9079) +HANDLE_BAT(APINT_TYPE_PREFIX, 9080) +HANDLE_BAT(APINT_TYPE_PREFIX, 9081) +HANDLE_BAT(APINT_TYPE_PREFIX, 9082) +HANDLE_BAT(APINT_TYPE_PREFIX, 9083) +HANDLE_BAT(APINT_TYPE_PREFIX, 9084) +HANDLE_BAT(APINT_TYPE_PREFIX, 9085) +HANDLE_BAT(APINT_TYPE_PREFIX, 9086) +HANDLE_BAT(APINT_TYPE_PREFIX, 9087) +HANDLE_BAT(APINT_TYPE_PREFIX, 9088) +HANDLE_BAT(APINT_TYPE_PREFIX, 9089) +HANDLE_BAT(APINT_TYPE_PREFIX, 9090) +HANDLE_BAT(APINT_TYPE_PREFIX, 9091) +HANDLE_BAT(APINT_TYPE_PREFIX, 9092) +HANDLE_BAT(APINT_TYPE_PREFIX, 9093) +HANDLE_BAT(APINT_TYPE_PREFIX, 9094) +HANDLE_BAT(APINT_TYPE_PREFIX, 9095) +HANDLE_BAT(APINT_TYPE_PREFIX, 9096) +HANDLE_BAT(APINT_TYPE_PREFIX, 9097) +HANDLE_BAT(APINT_TYPE_PREFIX, 9098) +HANDLE_BAT(APINT_TYPE_PREFIX, 9099) +HANDLE_BAT(APINT_TYPE_PREFIX, 9100) +HANDLE_BAT(APINT_TYPE_PREFIX, 9101) +HANDLE_BAT(APINT_TYPE_PREFIX, 9102) +HANDLE_BAT(APINT_TYPE_PREFIX, 9103) +HANDLE_BAT(APINT_TYPE_PREFIX, 9104) +HANDLE_BAT(APINT_TYPE_PREFIX, 9105) +HANDLE_BAT(APINT_TYPE_PREFIX, 9106) +HANDLE_BAT(APINT_TYPE_PREFIX, 9107) +HANDLE_BAT(APINT_TYPE_PREFIX, 9108) +HANDLE_BAT(APINT_TYPE_PREFIX, 9109) +HANDLE_BAT(APINT_TYPE_PREFIX, 9110) +HANDLE_BAT(APINT_TYPE_PREFIX, 9111) +HANDLE_BAT(APINT_TYPE_PREFIX, 9112) +HANDLE_BAT(APINT_TYPE_PREFIX, 9113) +HANDLE_BAT(APINT_TYPE_PREFIX, 9114) +HANDLE_BAT(APINT_TYPE_PREFIX, 9115) +HANDLE_BAT(APINT_TYPE_PREFIX, 9116) +HANDLE_BAT(APINT_TYPE_PREFIX, 9117) +HANDLE_BAT(APINT_TYPE_PREFIX, 9118) +HANDLE_BAT(APINT_TYPE_PREFIX, 9119) +HANDLE_BAT(APINT_TYPE_PREFIX, 9120) +HANDLE_BAT(APINT_TYPE_PREFIX, 9121) +HANDLE_BAT(APINT_TYPE_PREFIX, 9122) +HANDLE_BAT(APINT_TYPE_PREFIX, 9123) +HANDLE_BAT(APINT_TYPE_PREFIX, 9124) +HANDLE_BAT(APINT_TYPE_PREFIX, 9125) +HANDLE_BAT(APINT_TYPE_PREFIX, 9126) +HANDLE_BAT(APINT_TYPE_PREFIX, 9127) +HANDLE_BAT(APINT_TYPE_PREFIX, 9128) +HANDLE_BAT(APINT_TYPE_PREFIX, 9129) +HANDLE_BAT(APINT_TYPE_PREFIX, 9130) +HANDLE_BAT(APINT_TYPE_PREFIX, 9131) +HANDLE_BAT(APINT_TYPE_PREFIX, 9132) +HANDLE_BAT(APINT_TYPE_PREFIX, 9133) +HANDLE_BAT(APINT_TYPE_PREFIX, 9134) +HANDLE_BAT(APINT_TYPE_PREFIX, 9135) +HANDLE_BAT(APINT_TYPE_PREFIX, 9136) +HANDLE_BAT(APINT_TYPE_PREFIX, 9137) +HANDLE_BAT(APINT_TYPE_PREFIX, 9138) +HANDLE_BAT(APINT_TYPE_PREFIX, 9139) +HANDLE_BAT(APINT_TYPE_PREFIX, 9140) +HANDLE_BAT(APINT_TYPE_PREFIX, 9141) +HANDLE_BAT(APINT_TYPE_PREFIX, 9142) +HANDLE_BAT(APINT_TYPE_PREFIX, 9143) +HANDLE_BAT(APINT_TYPE_PREFIX, 9144) +HANDLE_BAT(APINT_TYPE_PREFIX, 9145) +HANDLE_BAT(APINT_TYPE_PREFIX, 9146) +HANDLE_BAT(APINT_TYPE_PREFIX, 9147) +HANDLE_BAT(APINT_TYPE_PREFIX, 9148) +HANDLE_BAT(APINT_TYPE_PREFIX, 9149) +HANDLE_BAT(APINT_TYPE_PREFIX, 9150) +HANDLE_BAT(APINT_TYPE_PREFIX, 9151) +HANDLE_BAT(APINT_TYPE_PREFIX, 9152) +HANDLE_BAT(APINT_TYPE_PREFIX, 9153) +HANDLE_BAT(APINT_TYPE_PREFIX, 9154) +HANDLE_BAT(APINT_TYPE_PREFIX, 9155) +HANDLE_BAT(APINT_TYPE_PREFIX, 9156) +HANDLE_BAT(APINT_TYPE_PREFIX, 9157) +HANDLE_BAT(APINT_TYPE_PREFIX, 9158) +HANDLE_BAT(APINT_TYPE_PREFIX, 9159) +HANDLE_BAT(APINT_TYPE_PREFIX, 9160) +HANDLE_BAT(APINT_TYPE_PREFIX, 9161) +HANDLE_BAT(APINT_TYPE_PREFIX, 9162) +HANDLE_BAT(APINT_TYPE_PREFIX, 9163) +HANDLE_BAT(APINT_TYPE_PREFIX, 9164) +HANDLE_BAT(APINT_TYPE_PREFIX, 9165) +HANDLE_BAT(APINT_TYPE_PREFIX, 9166) +HANDLE_BAT(APINT_TYPE_PREFIX, 9167) +HANDLE_BAT(APINT_TYPE_PREFIX, 9168) +HANDLE_BAT(APINT_TYPE_PREFIX, 9169) +HANDLE_BAT(APINT_TYPE_PREFIX, 9170) +HANDLE_BAT(APINT_TYPE_PREFIX, 9171) +HANDLE_BAT(APINT_TYPE_PREFIX, 9172) +HANDLE_BAT(APINT_TYPE_PREFIX, 9173) +HANDLE_BAT(APINT_TYPE_PREFIX, 9174) +HANDLE_BAT(APINT_TYPE_PREFIX, 9175) +HANDLE_BAT(APINT_TYPE_PREFIX, 9176) +HANDLE_BAT(APINT_TYPE_PREFIX, 9177) +HANDLE_BAT(APINT_TYPE_PREFIX, 9178) +HANDLE_BAT(APINT_TYPE_PREFIX, 9179) +HANDLE_BAT(APINT_TYPE_PREFIX, 9180) +HANDLE_BAT(APINT_TYPE_PREFIX, 9181) +HANDLE_BAT(APINT_TYPE_PREFIX, 9182) +HANDLE_BAT(APINT_TYPE_PREFIX, 9183) +HANDLE_BAT(APINT_TYPE_PREFIX, 9184) +HANDLE_BAT(APINT_TYPE_PREFIX, 9185) +HANDLE_BAT(APINT_TYPE_PREFIX, 9186) +HANDLE_BAT(APINT_TYPE_PREFIX, 9187) +HANDLE_BAT(APINT_TYPE_PREFIX, 9188) +HANDLE_BAT(APINT_TYPE_PREFIX, 9189) +HANDLE_BAT(APINT_TYPE_PREFIX, 9190) +HANDLE_BAT(APINT_TYPE_PREFIX, 9191) +HANDLE_BAT(APINT_TYPE_PREFIX, 9192) +HANDLE_BAT(APINT_TYPE_PREFIX, 9193) +HANDLE_BAT(APINT_TYPE_PREFIX, 9194) +HANDLE_BAT(APINT_TYPE_PREFIX, 9195) +HANDLE_BAT(APINT_TYPE_PREFIX, 9196) +HANDLE_BAT(APINT_TYPE_PREFIX, 9197) +HANDLE_BAT(APINT_TYPE_PREFIX, 9198) +HANDLE_BAT(APINT_TYPE_PREFIX, 9199) +HANDLE_BAT(APINT_TYPE_PREFIX, 9200) +HANDLE_BAT(APINT_TYPE_PREFIX, 9201) +HANDLE_BAT(APINT_TYPE_PREFIX, 9202) +HANDLE_BAT(APINT_TYPE_PREFIX, 9203) +HANDLE_BAT(APINT_TYPE_PREFIX, 9204) +HANDLE_BAT(APINT_TYPE_PREFIX, 9205) +HANDLE_BAT(APINT_TYPE_PREFIX, 9206) +HANDLE_BAT(APINT_TYPE_PREFIX, 9207) +HANDLE_BAT(APINT_TYPE_PREFIX, 9208) +HANDLE_BAT(APINT_TYPE_PREFIX, 9209) +HANDLE_BAT(APINT_TYPE_PREFIX, 9210) +HANDLE_BAT(APINT_TYPE_PREFIX, 9211) +HANDLE_BAT(APINT_TYPE_PREFIX, 9212) +HANDLE_BAT(APINT_TYPE_PREFIX, 9213) +HANDLE_BAT(APINT_TYPE_PREFIX, 9214) +HANDLE_BAT(APINT_TYPE_PREFIX, 9215) +HANDLE_BAT(APINT_TYPE_PREFIX, 9216) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 9 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 9217) +HANDLE_BAT(, 9218) +HANDLE_BAT(, 9219) +HANDLE_BAT(, 9220) +HANDLE_BAT(, 9221) +HANDLE_BAT(, 9222) +HANDLE_BAT(, 9223) +HANDLE_BAT(, 9224) +HANDLE_BAT(, 9225) +HANDLE_BAT(, 9226) +HANDLE_BAT(, 9227) +HANDLE_BAT(, 9228) +HANDLE_BAT(, 9229) +HANDLE_BAT(, 9230) +HANDLE_BAT(, 9231) +HANDLE_BAT(, 9232) +HANDLE_BAT(, 9233) +HANDLE_BAT(, 9234) +HANDLE_BAT(, 9235) +HANDLE_BAT(, 9236) +HANDLE_BAT(, 9237) +HANDLE_BAT(, 9238) +HANDLE_BAT(, 9239) +HANDLE_BAT(, 9240) +HANDLE_BAT(, 9241) +HANDLE_BAT(, 9242) +HANDLE_BAT(, 9243) +HANDLE_BAT(, 9244) +HANDLE_BAT(, 9245) +HANDLE_BAT(, 9246) +HANDLE_BAT(, 9247) +HANDLE_BAT(, 9248) +HANDLE_BAT(, 9249) +HANDLE_BAT(, 9250) +HANDLE_BAT(, 9251) +HANDLE_BAT(, 9252) +HANDLE_BAT(, 9253) +HANDLE_BAT(, 9254) +HANDLE_BAT(, 9255) +HANDLE_BAT(, 9256) +HANDLE_BAT(, 9257) +HANDLE_BAT(, 9258) +HANDLE_BAT(, 9259) +HANDLE_BAT(, 9260) +HANDLE_BAT(, 9261) +HANDLE_BAT(, 9262) +HANDLE_BAT(, 9263) +HANDLE_BAT(, 9264) +HANDLE_BAT(, 9265) +HANDLE_BAT(, 9266) +HANDLE_BAT(, 9267) +HANDLE_BAT(, 9268) +HANDLE_BAT(, 9269) +HANDLE_BAT(, 9270) +HANDLE_BAT(, 9271) +HANDLE_BAT(, 9272) +HANDLE_BAT(, 9273) +HANDLE_BAT(, 9274) +HANDLE_BAT(, 9275) +HANDLE_BAT(, 9276) +HANDLE_BAT(, 9277) +HANDLE_BAT(, 9278) +HANDLE_BAT(, 9279) +HANDLE_BAT(, 9280) +HANDLE_BAT(, 9281) +HANDLE_BAT(, 9282) +HANDLE_BAT(, 9283) +HANDLE_BAT(, 9284) +HANDLE_BAT(, 9285) +HANDLE_BAT(, 9286) +HANDLE_BAT(, 9287) +HANDLE_BAT(, 9288) +HANDLE_BAT(, 9289) +HANDLE_BAT(, 9290) +HANDLE_BAT(, 9291) +HANDLE_BAT(, 9292) +HANDLE_BAT(, 9293) +HANDLE_BAT(, 9294) +HANDLE_BAT(, 9295) +HANDLE_BAT(, 9296) +HANDLE_BAT(, 9297) +HANDLE_BAT(, 9298) +HANDLE_BAT(, 9299) +HANDLE_BAT(, 9300) +HANDLE_BAT(, 9301) +HANDLE_BAT(, 9302) +HANDLE_BAT(, 9303) +HANDLE_BAT(, 9304) +HANDLE_BAT(, 9305) +HANDLE_BAT(, 9306) +HANDLE_BAT(, 9307) +HANDLE_BAT(, 9308) +HANDLE_BAT(, 9309) +HANDLE_BAT(, 9310) +HANDLE_BAT(, 9311) +HANDLE_BAT(, 9312) +HANDLE_BAT(, 9313) +HANDLE_BAT(, 9314) +HANDLE_BAT(, 9315) +HANDLE_BAT(, 9316) +HANDLE_BAT(, 9317) +HANDLE_BAT(, 9318) +HANDLE_BAT(, 9319) +HANDLE_BAT(, 9320) +HANDLE_BAT(, 9321) +HANDLE_BAT(, 9322) +HANDLE_BAT(, 9323) +HANDLE_BAT(, 9324) +HANDLE_BAT(, 9325) +HANDLE_BAT(, 9326) +HANDLE_BAT(, 9327) +HANDLE_BAT(, 9328) +HANDLE_BAT(, 9329) +HANDLE_BAT(, 9330) +HANDLE_BAT(, 9331) +HANDLE_BAT(, 9332) +HANDLE_BAT(, 9333) +HANDLE_BAT(, 9334) +HANDLE_BAT(, 9335) +HANDLE_BAT(, 9336) +HANDLE_BAT(, 9337) +HANDLE_BAT(, 9338) +HANDLE_BAT(, 9339) +HANDLE_BAT(, 9340) +HANDLE_BAT(, 9341) +HANDLE_BAT(, 9342) +HANDLE_BAT(, 9343) +HANDLE_BAT(, 9344) +HANDLE_BAT(, 9345) +HANDLE_BAT(, 9346) +HANDLE_BAT(, 9347) +HANDLE_BAT(, 9348) +HANDLE_BAT(, 9349) +HANDLE_BAT(, 9350) +HANDLE_BAT(, 9351) +HANDLE_BAT(, 9352) +HANDLE_BAT(, 9353) +HANDLE_BAT(, 9354) +HANDLE_BAT(, 9355) +HANDLE_BAT(, 9356) +HANDLE_BAT(, 9357) +HANDLE_BAT(, 9358) +HANDLE_BAT(, 9359) +HANDLE_BAT(, 9360) +HANDLE_BAT(, 9361) +HANDLE_BAT(, 9362) +HANDLE_BAT(, 9363) +HANDLE_BAT(, 9364) +HANDLE_BAT(, 9365) +HANDLE_BAT(, 9366) +HANDLE_BAT(, 9367) +HANDLE_BAT(, 9368) +HANDLE_BAT(, 9369) +HANDLE_BAT(, 9370) +HANDLE_BAT(, 9371) +HANDLE_BAT(, 9372) +HANDLE_BAT(, 9373) +HANDLE_BAT(, 9374) +HANDLE_BAT(, 9375) +HANDLE_BAT(, 9376) +HANDLE_BAT(, 9377) +HANDLE_BAT(, 9378) +HANDLE_BAT(, 9379) +HANDLE_BAT(, 9380) +HANDLE_BAT(, 9381) +HANDLE_BAT(, 9382) +HANDLE_BAT(, 9383) +HANDLE_BAT(, 9384) +HANDLE_BAT(, 9385) +HANDLE_BAT(, 9386) +HANDLE_BAT(, 9387) +HANDLE_BAT(, 9388) +HANDLE_BAT(, 9389) +HANDLE_BAT(, 9390) +HANDLE_BAT(, 9391) +HANDLE_BAT(, 9392) +HANDLE_BAT(, 9393) +HANDLE_BAT(, 9394) +HANDLE_BAT(, 9395) +HANDLE_BAT(, 9396) +HANDLE_BAT(, 9397) +HANDLE_BAT(, 9398) +HANDLE_BAT(, 9399) +HANDLE_BAT(, 9400) +HANDLE_BAT(, 9401) +HANDLE_BAT(, 9402) +HANDLE_BAT(, 9403) +HANDLE_BAT(, 9404) +HANDLE_BAT(, 9405) +HANDLE_BAT(, 9406) +HANDLE_BAT(, 9407) +HANDLE_BAT(, 9408) +HANDLE_BAT(, 9409) +HANDLE_BAT(, 9410) +HANDLE_BAT(, 9411) +HANDLE_BAT(, 9412) +HANDLE_BAT(, 9413) +HANDLE_BAT(, 9414) +HANDLE_BAT(, 9415) +HANDLE_BAT(, 9416) +HANDLE_BAT(, 9417) +HANDLE_BAT(, 9418) +HANDLE_BAT(, 9419) +HANDLE_BAT(, 9420) +HANDLE_BAT(, 9421) +HANDLE_BAT(, 9422) +HANDLE_BAT(, 9423) +HANDLE_BAT(, 9424) +HANDLE_BAT(, 9425) +HANDLE_BAT(, 9426) +HANDLE_BAT(, 9427) +HANDLE_BAT(, 9428) +HANDLE_BAT(, 9429) +HANDLE_BAT(, 9430) +HANDLE_BAT(, 9431) +HANDLE_BAT(, 9432) +HANDLE_BAT(, 9433) +HANDLE_BAT(, 9434) +HANDLE_BAT(, 9435) +HANDLE_BAT(, 9436) +HANDLE_BAT(, 9437) +HANDLE_BAT(, 9438) +HANDLE_BAT(, 9439) +HANDLE_BAT(, 9440) +HANDLE_BAT(, 9441) +HANDLE_BAT(, 9442) +HANDLE_BAT(, 9443) +HANDLE_BAT(, 9444) +HANDLE_BAT(, 9445) +HANDLE_BAT(, 9446) +HANDLE_BAT(, 9447) +HANDLE_BAT(, 9448) +HANDLE_BAT(, 9449) +HANDLE_BAT(, 9450) +HANDLE_BAT(, 9451) +HANDLE_BAT(, 9452) +HANDLE_BAT(, 9453) +HANDLE_BAT(, 9454) +HANDLE_BAT(, 9455) +HANDLE_BAT(, 9456) +HANDLE_BAT(, 9457) +HANDLE_BAT(, 9458) +HANDLE_BAT(, 9459) +HANDLE_BAT(, 9460) +HANDLE_BAT(, 9461) +HANDLE_BAT(, 9462) +HANDLE_BAT(, 9463) +HANDLE_BAT(, 9464) +HANDLE_BAT(, 9465) +HANDLE_BAT(, 9466) +HANDLE_BAT(, 9467) +HANDLE_BAT(, 9468) +HANDLE_BAT(, 9469) +HANDLE_BAT(, 9470) +HANDLE_BAT(, 9471) +HANDLE_BAT(, 9472) +HANDLE_BAT(, 9473) +HANDLE_BAT(, 9474) +HANDLE_BAT(, 9475) +HANDLE_BAT(, 9476) +HANDLE_BAT(, 9477) +HANDLE_BAT(, 9478) +HANDLE_BAT(, 9479) +HANDLE_BAT(, 9480) +HANDLE_BAT(, 9481) +HANDLE_BAT(, 9482) +HANDLE_BAT(, 9483) +HANDLE_BAT(, 9484) +HANDLE_BAT(, 9485) +HANDLE_BAT(, 9486) +HANDLE_BAT(, 9487) +HANDLE_BAT(, 9488) +HANDLE_BAT(, 9489) +HANDLE_BAT(, 9490) +HANDLE_BAT(, 9491) +HANDLE_BAT(, 9492) +HANDLE_BAT(, 9493) +HANDLE_BAT(, 9494) +HANDLE_BAT(, 9495) +HANDLE_BAT(, 9496) +HANDLE_BAT(, 9497) +HANDLE_BAT(, 9498) +HANDLE_BAT(, 9499) +HANDLE_BAT(, 9500) +HANDLE_BAT(, 9501) +HANDLE_BAT(, 9502) +HANDLE_BAT(, 9503) +HANDLE_BAT(, 9504) +HANDLE_BAT(, 9505) +HANDLE_BAT(, 9506) +HANDLE_BAT(, 9507) +HANDLE_BAT(, 9508) +HANDLE_BAT(, 9509) +HANDLE_BAT(, 9510) +HANDLE_BAT(, 9511) +HANDLE_BAT(, 9512) +HANDLE_BAT(, 9513) +HANDLE_BAT(, 9514) +HANDLE_BAT(, 9515) +HANDLE_BAT(, 9516) +HANDLE_BAT(, 9517) +HANDLE_BAT(, 9518) +HANDLE_BAT(, 9519) +HANDLE_BAT(, 9520) +HANDLE_BAT(, 9521) +HANDLE_BAT(, 9522) +HANDLE_BAT(, 9523) +HANDLE_BAT(, 9524) +HANDLE_BAT(, 9525) +HANDLE_BAT(, 9526) +HANDLE_BAT(, 9527) +HANDLE_BAT(, 9528) +HANDLE_BAT(, 9529) +HANDLE_BAT(, 9530) +HANDLE_BAT(, 9531) +HANDLE_BAT(, 9532) +HANDLE_BAT(, 9533) +HANDLE_BAT(, 9534) +HANDLE_BAT(, 9535) +HANDLE_BAT(, 9536) +HANDLE_BAT(, 9537) +HANDLE_BAT(, 9538) +HANDLE_BAT(, 9539) +HANDLE_BAT(, 9540) +HANDLE_BAT(, 9541) +HANDLE_BAT(, 9542) +HANDLE_BAT(, 9543) +HANDLE_BAT(, 9544) +HANDLE_BAT(, 9545) +HANDLE_BAT(, 9546) +HANDLE_BAT(, 9547) +HANDLE_BAT(, 9548) +HANDLE_BAT(, 9549) +HANDLE_BAT(, 9550) +HANDLE_BAT(, 9551) +HANDLE_BAT(, 9552) +HANDLE_BAT(, 9553) +HANDLE_BAT(, 9554) +HANDLE_BAT(, 9555) +HANDLE_BAT(, 9556) +HANDLE_BAT(, 9557) +HANDLE_BAT(, 9558) +HANDLE_BAT(, 9559) +HANDLE_BAT(, 9560) +HANDLE_BAT(, 9561) +HANDLE_BAT(, 9562) +HANDLE_BAT(, 9563) +HANDLE_BAT(, 9564) +HANDLE_BAT(, 9565) +HANDLE_BAT(, 9566) +HANDLE_BAT(, 9567) +HANDLE_BAT(, 9568) +HANDLE_BAT(, 9569) +HANDLE_BAT(, 9570) +HANDLE_BAT(, 9571) +HANDLE_BAT(, 9572) +HANDLE_BAT(, 9573) +HANDLE_BAT(, 9574) +HANDLE_BAT(, 9575) +HANDLE_BAT(, 9576) +HANDLE_BAT(, 9577) +HANDLE_BAT(, 9578) +HANDLE_BAT(, 9579) +HANDLE_BAT(, 9580) +HANDLE_BAT(, 9581) +HANDLE_BAT(, 9582) +HANDLE_BAT(, 9583) +HANDLE_BAT(, 9584) +HANDLE_BAT(, 9585) +HANDLE_BAT(, 9586) +HANDLE_BAT(, 9587) +HANDLE_BAT(, 9588) +HANDLE_BAT(, 9589) +HANDLE_BAT(, 9590) +HANDLE_BAT(, 9591) +HANDLE_BAT(, 9592) +HANDLE_BAT(, 9593) +HANDLE_BAT(, 9594) +HANDLE_BAT(, 9595) +HANDLE_BAT(, 9596) +HANDLE_BAT(, 9597) +HANDLE_BAT(, 9598) +HANDLE_BAT(, 9599) +HANDLE_BAT(, 9600) +HANDLE_BAT(, 9601) +HANDLE_BAT(, 9602) +HANDLE_BAT(, 9603) +HANDLE_BAT(, 9604) +HANDLE_BAT(, 9605) +HANDLE_BAT(, 9606) +HANDLE_BAT(, 9607) +HANDLE_BAT(, 9608) +HANDLE_BAT(, 9609) +HANDLE_BAT(, 9610) +HANDLE_BAT(, 9611) +HANDLE_BAT(, 9612) +HANDLE_BAT(, 9613) +HANDLE_BAT(, 9614) +HANDLE_BAT(, 9615) +HANDLE_BAT(, 9616) +HANDLE_BAT(, 9617) +HANDLE_BAT(, 9618) +HANDLE_BAT(, 9619) +HANDLE_BAT(, 9620) +HANDLE_BAT(, 9621) +HANDLE_BAT(, 9622) +HANDLE_BAT(, 9623) +HANDLE_BAT(, 9624) +HANDLE_BAT(, 9625) +HANDLE_BAT(, 9626) +HANDLE_BAT(, 9627) +HANDLE_BAT(, 9628) +HANDLE_BAT(, 9629) +HANDLE_BAT(, 9630) +HANDLE_BAT(, 9631) +HANDLE_BAT(, 9632) +HANDLE_BAT(, 9633) +HANDLE_BAT(, 9634) +HANDLE_BAT(, 9635) +HANDLE_BAT(, 9636) +HANDLE_BAT(, 9637) +HANDLE_BAT(, 9638) +HANDLE_BAT(, 9639) +HANDLE_BAT(, 9640) +HANDLE_BAT(, 9641) +HANDLE_BAT(, 9642) +HANDLE_BAT(, 9643) +HANDLE_BAT(, 9644) +HANDLE_BAT(, 9645) +HANDLE_BAT(, 9646) +HANDLE_BAT(, 9647) +HANDLE_BAT(, 9648) +HANDLE_BAT(, 9649) +HANDLE_BAT(, 9650) +HANDLE_BAT(, 9651) +HANDLE_BAT(, 9652) +HANDLE_BAT(, 9653) +HANDLE_BAT(, 9654) +HANDLE_BAT(, 9655) +HANDLE_BAT(, 9656) +HANDLE_BAT(, 9657) +HANDLE_BAT(, 9658) +HANDLE_BAT(, 9659) +HANDLE_BAT(, 9660) +HANDLE_BAT(, 9661) +HANDLE_BAT(, 9662) +HANDLE_BAT(, 9663) +HANDLE_BAT(, 9664) +HANDLE_BAT(, 9665) +HANDLE_BAT(, 9666) +HANDLE_BAT(, 9667) +HANDLE_BAT(, 9668) +HANDLE_BAT(, 9669) +HANDLE_BAT(, 9670) +HANDLE_BAT(, 9671) +HANDLE_BAT(, 9672) +HANDLE_BAT(, 9673) +HANDLE_BAT(, 9674) +HANDLE_BAT(, 9675) +HANDLE_BAT(, 9676) +HANDLE_BAT(, 9677) +HANDLE_BAT(, 9678) +HANDLE_BAT(, 9679) +HANDLE_BAT(, 9680) +HANDLE_BAT(, 9681) +HANDLE_BAT(, 9682) +HANDLE_BAT(, 9683) +HANDLE_BAT(, 9684) +HANDLE_BAT(, 9685) +HANDLE_BAT(, 9686) +HANDLE_BAT(, 9687) +HANDLE_BAT(, 9688) +HANDLE_BAT(, 9689) +HANDLE_BAT(, 9690) +HANDLE_BAT(, 9691) +HANDLE_BAT(, 9692) +HANDLE_BAT(, 9693) +HANDLE_BAT(, 9694) +HANDLE_BAT(, 9695) +HANDLE_BAT(, 9696) +HANDLE_BAT(, 9697) +HANDLE_BAT(, 9698) +HANDLE_BAT(, 9699) +HANDLE_BAT(, 9700) +HANDLE_BAT(, 9701) +HANDLE_BAT(, 9702) +HANDLE_BAT(, 9703) +HANDLE_BAT(, 9704) +HANDLE_BAT(, 9705) +HANDLE_BAT(, 9706) +HANDLE_BAT(, 9707) +HANDLE_BAT(, 9708) +HANDLE_BAT(, 9709) +HANDLE_BAT(, 9710) +HANDLE_BAT(, 9711) +HANDLE_BAT(, 9712) +HANDLE_BAT(, 9713) +HANDLE_BAT(, 9714) +HANDLE_BAT(, 9715) +HANDLE_BAT(, 9716) +HANDLE_BAT(, 9717) +HANDLE_BAT(, 9718) +HANDLE_BAT(, 9719) +HANDLE_BAT(, 9720) +HANDLE_BAT(, 9721) +HANDLE_BAT(, 9722) +HANDLE_BAT(, 9723) +HANDLE_BAT(, 9724) +HANDLE_BAT(, 9725) +HANDLE_BAT(, 9726) +HANDLE_BAT(, 9727) +HANDLE_BAT(, 9728) +HANDLE_BAT(, 9729) +HANDLE_BAT(, 9730) +HANDLE_BAT(, 9731) +HANDLE_BAT(, 9732) +HANDLE_BAT(, 9733) +HANDLE_BAT(, 9734) +HANDLE_BAT(, 9735) +HANDLE_BAT(, 9736) +HANDLE_BAT(, 9737) +HANDLE_BAT(, 9738) +HANDLE_BAT(, 9739) +HANDLE_BAT(, 9740) +HANDLE_BAT(, 9741) +HANDLE_BAT(, 9742) +HANDLE_BAT(, 9743) +HANDLE_BAT(, 9744) +HANDLE_BAT(, 9745) +HANDLE_BAT(, 9746) +HANDLE_BAT(, 9747) +HANDLE_BAT(, 9748) +HANDLE_BAT(, 9749) +HANDLE_BAT(, 9750) +HANDLE_BAT(, 9751) +HANDLE_BAT(, 9752) +HANDLE_BAT(, 9753) +HANDLE_BAT(, 9754) +HANDLE_BAT(, 9755) +HANDLE_BAT(, 9756) +HANDLE_BAT(, 9757) +HANDLE_BAT(, 9758) +HANDLE_BAT(, 9759) +HANDLE_BAT(, 9760) +HANDLE_BAT(, 9761) +HANDLE_BAT(, 9762) +HANDLE_BAT(, 9763) +HANDLE_BAT(, 9764) +HANDLE_BAT(, 9765) +HANDLE_BAT(, 9766) +HANDLE_BAT(, 9767) +HANDLE_BAT(, 9768) +HANDLE_BAT(, 9769) +HANDLE_BAT(, 9770) +HANDLE_BAT(, 9771) +HANDLE_BAT(, 9772) +HANDLE_BAT(, 9773) +HANDLE_BAT(, 9774) +HANDLE_BAT(, 9775) +HANDLE_BAT(, 9776) +HANDLE_BAT(, 9777) +HANDLE_BAT(, 9778) +HANDLE_BAT(, 9779) +HANDLE_BAT(, 9780) +HANDLE_BAT(, 9781) +HANDLE_BAT(, 9782) +HANDLE_BAT(, 9783) +HANDLE_BAT(, 9784) +HANDLE_BAT(, 9785) +HANDLE_BAT(, 9786) +HANDLE_BAT(, 9787) +HANDLE_BAT(, 9788) +HANDLE_BAT(, 9789) +HANDLE_BAT(, 9790) +HANDLE_BAT(, 9791) +HANDLE_BAT(, 9792) +HANDLE_BAT(, 9793) +HANDLE_BAT(, 9794) +HANDLE_BAT(, 9795) +HANDLE_BAT(, 9796) +HANDLE_BAT(, 9797) +HANDLE_BAT(, 9798) +HANDLE_BAT(, 9799) +HANDLE_BAT(, 9800) +HANDLE_BAT(, 9801) +HANDLE_BAT(, 9802) +HANDLE_BAT(, 9803) +HANDLE_BAT(, 9804) +HANDLE_BAT(, 9805) +HANDLE_BAT(, 9806) +HANDLE_BAT(, 9807) +HANDLE_BAT(, 9808) +HANDLE_BAT(, 9809) +HANDLE_BAT(, 9810) +HANDLE_BAT(, 9811) +HANDLE_BAT(, 9812) +HANDLE_BAT(, 9813) +HANDLE_BAT(, 9814) +HANDLE_BAT(, 9815) +HANDLE_BAT(, 9816) +HANDLE_BAT(, 9817) +HANDLE_BAT(, 9818) +HANDLE_BAT(, 9819) +HANDLE_BAT(, 9820) +HANDLE_BAT(, 9821) +HANDLE_BAT(, 9822) +HANDLE_BAT(, 9823) +HANDLE_BAT(, 9824) +HANDLE_BAT(, 9825) +HANDLE_BAT(, 9826) +HANDLE_BAT(, 9827) +HANDLE_BAT(, 9828) +HANDLE_BAT(, 9829) +HANDLE_BAT(, 9830) +HANDLE_BAT(, 9831) +HANDLE_BAT(, 9832) +HANDLE_BAT(, 9833) +HANDLE_BAT(, 9834) +HANDLE_BAT(, 9835) +HANDLE_BAT(, 9836) +HANDLE_BAT(, 9837) +HANDLE_BAT(, 9838) +HANDLE_BAT(, 9839) +HANDLE_BAT(, 9840) +HANDLE_BAT(, 9841) +HANDLE_BAT(, 9842) +HANDLE_BAT(, 9843) +HANDLE_BAT(, 9844) +HANDLE_BAT(, 9845) +HANDLE_BAT(, 9846) +HANDLE_BAT(, 9847) +HANDLE_BAT(, 9848) +HANDLE_BAT(, 9849) +HANDLE_BAT(, 9850) +HANDLE_BAT(, 9851) +HANDLE_BAT(, 9852) +HANDLE_BAT(, 9853) +HANDLE_BAT(, 9854) +HANDLE_BAT(, 9855) +HANDLE_BAT(, 9856) +HANDLE_BAT(, 9857) +HANDLE_BAT(, 9858) +HANDLE_BAT(, 9859) +HANDLE_BAT(, 9860) +HANDLE_BAT(, 9861) +HANDLE_BAT(, 9862) +HANDLE_BAT(, 9863) +HANDLE_BAT(, 9864) +HANDLE_BAT(, 9865) +HANDLE_BAT(, 9866) +HANDLE_BAT(, 9867) +HANDLE_BAT(, 9868) +HANDLE_BAT(, 9869) +HANDLE_BAT(, 9870) +HANDLE_BAT(, 9871) +HANDLE_BAT(, 9872) +HANDLE_BAT(, 9873) +HANDLE_BAT(, 9874) +HANDLE_BAT(, 9875) +HANDLE_BAT(, 9876) +HANDLE_BAT(, 9877) +HANDLE_BAT(, 9878) +HANDLE_BAT(, 9879) +HANDLE_BAT(, 9880) +HANDLE_BAT(, 9881) +HANDLE_BAT(, 9882) +HANDLE_BAT(, 9883) +HANDLE_BAT(, 9884) +HANDLE_BAT(, 9885) +HANDLE_BAT(, 9886) +HANDLE_BAT(, 9887) +HANDLE_BAT(, 9888) +HANDLE_BAT(, 9889) +HANDLE_BAT(, 9890) +HANDLE_BAT(, 9891) +HANDLE_BAT(, 9892) +HANDLE_BAT(, 9893) +HANDLE_BAT(, 9894) +HANDLE_BAT(, 9895) +HANDLE_BAT(, 9896) +HANDLE_BAT(, 9897) +HANDLE_BAT(, 9898) +HANDLE_BAT(, 9899) +HANDLE_BAT(, 9900) +HANDLE_BAT(, 9901) +HANDLE_BAT(, 9902) +HANDLE_BAT(, 9903) +HANDLE_BAT(, 9904) +HANDLE_BAT(, 9905) +HANDLE_BAT(, 9906) +HANDLE_BAT(, 9907) +HANDLE_BAT(, 9908) +HANDLE_BAT(, 9909) +HANDLE_BAT(, 9910) +HANDLE_BAT(, 9911) +HANDLE_BAT(, 9912) +HANDLE_BAT(, 9913) +HANDLE_BAT(, 9914) +HANDLE_BAT(, 9915) +HANDLE_BAT(, 9916) +HANDLE_BAT(, 9917) +HANDLE_BAT(, 9918) +HANDLE_BAT(, 9919) +HANDLE_BAT(, 9920) +HANDLE_BAT(, 9921) +HANDLE_BAT(, 9922) +HANDLE_BAT(, 9923) +HANDLE_BAT(, 9924) +HANDLE_BAT(, 9925) +HANDLE_BAT(, 9926) +HANDLE_BAT(, 9927) +HANDLE_BAT(, 9928) +HANDLE_BAT(, 9929) +HANDLE_BAT(, 9930) +HANDLE_BAT(, 9931) +HANDLE_BAT(, 9932) +HANDLE_BAT(, 9933) +HANDLE_BAT(, 9934) +HANDLE_BAT(, 9935) +HANDLE_BAT(, 9936) +HANDLE_BAT(, 9937) +HANDLE_BAT(, 9938) +HANDLE_BAT(, 9939) +HANDLE_BAT(, 9940) +HANDLE_BAT(, 9941) +HANDLE_BAT(, 9942) +HANDLE_BAT(, 9943) +HANDLE_BAT(, 9944) +HANDLE_BAT(, 9945) +HANDLE_BAT(, 9946) +HANDLE_BAT(, 9947) +HANDLE_BAT(, 9948) +HANDLE_BAT(, 9949) +HANDLE_BAT(, 9950) +HANDLE_BAT(, 9951) +HANDLE_BAT(, 9952) +HANDLE_BAT(, 9953) +HANDLE_BAT(, 9954) +HANDLE_BAT(, 9955) +HANDLE_BAT(, 9956) +HANDLE_BAT(, 9957) +HANDLE_BAT(, 9958) +HANDLE_BAT(, 9959) +HANDLE_BAT(, 9960) +HANDLE_BAT(, 9961) +HANDLE_BAT(, 9962) +HANDLE_BAT(, 9963) +HANDLE_BAT(, 9964) +HANDLE_BAT(, 9965) +HANDLE_BAT(, 9966) +HANDLE_BAT(, 9967) +HANDLE_BAT(, 9968) +HANDLE_BAT(, 9969) +HANDLE_BAT(, 9970) +HANDLE_BAT(, 9971) +HANDLE_BAT(, 9972) +HANDLE_BAT(, 9973) +HANDLE_BAT(, 9974) +HANDLE_BAT(, 9975) +HANDLE_BAT(, 9976) +HANDLE_BAT(, 9977) +HANDLE_BAT(, 9978) +HANDLE_BAT(, 9979) +HANDLE_BAT(, 9980) +HANDLE_BAT(, 9981) +HANDLE_BAT(, 9982) +HANDLE_BAT(, 9983) +HANDLE_BAT(, 9984) +HANDLE_BAT(, 9985) +HANDLE_BAT(, 9986) +HANDLE_BAT(, 9987) +HANDLE_BAT(, 9988) +HANDLE_BAT(, 9989) +HANDLE_BAT(, 9990) +HANDLE_BAT(, 9991) +HANDLE_BAT(, 9992) +HANDLE_BAT(, 9993) +HANDLE_BAT(, 9994) +HANDLE_BAT(, 9995) +HANDLE_BAT(, 9996) +HANDLE_BAT(, 9997) +HANDLE_BAT(, 9998) +HANDLE_BAT(, 9999) +HANDLE_BAT(, 10000) +HANDLE_BAT(, 10001) +HANDLE_BAT(, 10002) +HANDLE_BAT(, 10003) +HANDLE_BAT(, 10004) +HANDLE_BAT(, 10005) +HANDLE_BAT(, 10006) +HANDLE_BAT(, 10007) +HANDLE_BAT(, 10008) +HANDLE_BAT(, 10009) +HANDLE_BAT(, 10010) +HANDLE_BAT(, 10011) +HANDLE_BAT(, 10012) +HANDLE_BAT(, 10013) +HANDLE_BAT(, 10014) +HANDLE_BAT(, 10015) +HANDLE_BAT(, 10016) +HANDLE_BAT(, 10017) +HANDLE_BAT(, 10018) +HANDLE_BAT(, 10019) +HANDLE_BAT(, 10020) +HANDLE_BAT(, 10021) +HANDLE_BAT(, 10022) +HANDLE_BAT(, 10023) +HANDLE_BAT(, 10024) +HANDLE_BAT(, 10025) +HANDLE_BAT(, 10026) +HANDLE_BAT(, 10027) +HANDLE_BAT(, 10028) +HANDLE_BAT(, 10029) +HANDLE_BAT(, 10030) +HANDLE_BAT(, 10031) +HANDLE_BAT(, 10032) +HANDLE_BAT(, 10033) +HANDLE_BAT(, 10034) +HANDLE_BAT(, 10035) +HANDLE_BAT(, 10036) +HANDLE_BAT(, 10037) +HANDLE_BAT(, 10038) +HANDLE_BAT(, 10039) +HANDLE_BAT(, 10040) +HANDLE_BAT(, 10041) +HANDLE_BAT(, 10042) +HANDLE_BAT(, 10043) +HANDLE_BAT(, 10044) +HANDLE_BAT(, 10045) +HANDLE_BAT(, 10046) +HANDLE_BAT(, 10047) +HANDLE_BAT(, 10048) +HANDLE_BAT(, 10049) +HANDLE_BAT(, 10050) +HANDLE_BAT(, 10051) +HANDLE_BAT(, 10052) +HANDLE_BAT(, 10053) +HANDLE_BAT(, 10054) +HANDLE_BAT(, 10055) +HANDLE_BAT(, 10056) +HANDLE_BAT(, 10057) +HANDLE_BAT(, 10058) +HANDLE_BAT(, 10059) +HANDLE_BAT(, 10060) +HANDLE_BAT(, 10061) +HANDLE_BAT(, 10062) +HANDLE_BAT(, 10063) +HANDLE_BAT(, 10064) +HANDLE_BAT(, 10065) +HANDLE_BAT(, 10066) +HANDLE_BAT(, 10067) +HANDLE_BAT(, 10068) +HANDLE_BAT(, 10069) +HANDLE_BAT(, 10070) +HANDLE_BAT(, 10071) +HANDLE_BAT(, 10072) +HANDLE_BAT(, 10073) +HANDLE_BAT(, 10074) +HANDLE_BAT(, 10075) +HANDLE_BAT(, 10076) +HANDLE_BAT(, 10077) +HANDLE_BAT(, 10078) +HANDLE_BAT(, 10079) +HANDLE_BAT(, 10080) +HANDLE_BAT(, 10081) +HANDLE_BAT(, 10082) +HANDLE_BAT(, 10083) +HANDLE_BAT(, 10084) +HANDLE_BAT(, 10085) +HANDLE_BAT(, 10086) +HANDLE_BAT(, 10087) +HANDLE_BAT(, 10088) +HANDLE_BAT(, 10089) +HANDLE_BAT(, 10090) +HANDLE_BAT(, 10091) +HANDLE_BAT(, 10092) +HANDLE_BAT(, 10093) +HANDLE_BAT(, 10094) +HANDLE_BAT(, 10095) +HANDLE_BAT(, 10096) +HANDLE_BAT(, 10097) +HANDLE_BAT(, 10098) +HANDLE_BAT(, 10099) +HANDLE_BAT(, 10100) +HANDLE_BAT(, 10101) +HANDLE_BAT(, 10102) +HANDLE_BAT(, 10103) +HANDLE_BAT(, 10104) +HANDLE_BAT(, 10105) +HANDLE_BAT(, 10106) +HANDLE_BAT(, 10107) +HANDLE_BAT(, 10108) +HANDLE_BAT(, 10109) +HANDLE_BAT(, 10110) +HANDLE_BAT(, 10111) +HANDLE_BAT(, 10112) +HANDLE_BAT(, 10113) +HANDLE_BAT(, 10114) +HANDLE_BAT(, 10115) +HANDLE_BAT(, 10116) +HANDLE_BAT(, 10117) +HANDLE_BAT(, 10118) +HANDLE_BAT(, 10119) +HANDLE_BAT(, 10120) +HANDLE_BAT(, 10121) +HANDLE_BAT(, 10122) +HANDLE_BAT(, 10123) +HANDLE_BAT(, 10124) +HANDLE_BAT(, 10125) +HANDLE_BAT(, 10126) +HANDLE_BAT(, 10127) +HANDLE_BAT(, 10128) +HANDLE_BAT(, 10129) +HANDLE_BAT(, 10130) +HANDLE_BAT(, 10131) +HANDLE_BAT(, 10132) +HANDLE_BAT(, 10133) +HANDLE_BAT(, 10134) +HANDLE_BAT(, 10135) +HANDLE_BAT(, 10136) +HANDLE_BAT(, 10137) +HANDLE_BAT(, 10138) +HANDLE_BAT(, 10139) +HANDLE_BAT(, 10140) +HANDLE_BAT(, 10141) +HANDLE_BAT(, 10142) +HANDLE_BAT(, 10143) +HANDLE_BAT(, 10144) +HANDLE_BAT(, 10145) +HANDLE_BAT(, 10146) +HANDLE_BAT(, 10147) +HANDLE_BAT(, 10148) +HANDLE_BAT(, 10149) +HANDLE_BAT(, 10150) +HANDLE_BAT(, 10151) +HANDLE_BAT(, 10152) +HANDLE_BAT(, 10153) +HANDLE_BAT(, 10154) +HANDLE_BAT(, 10155) +HANDLE_BAT(, 10156) +HANDLE_BAT(, 10157) +HANDLE_BAT(, 10158) +HANDLE_BAT(, 10159) +HANDLE_BAT(, 10160) +HANDLE_BAT(, 10161) +HANDLE_BAT(, 10162) +HANDLE_BAT(, 10163) +HANDLE_BAT(, 10164) +HANDLE_BAT(, 10165) +HANDLE_BAT(, 10166) +HANDLE_BAT(, 10167) +HANDLE_BAT(, 10168) +HANDLE_BAT(, 10169) +HANDLE_BAT(, 10170) +HANDLE_BAT(, 10171) +HANDLE_BAT(, 10172) +HANDLE_BAT(, 10173) +HANDLE_BAT(, 10174) +HANDLE_BAT(, 10175) +HANDLE_BAT(, 10176) +HANDLE_BAT(, 10177) +HANDLE_BAT(, 10178) +HANDLE_BAT(, 10179) +HANDLE_BAT(, 10180) +HANDLE_BAT(, 10181) +HANDLE_BAT(, 10182) +HANDLE_BAT(, 10183) +HANDLE_BAT(, 10184) +HANDLE_BAT(, 10185) +HANDLE_BAT(, 10186) +HANDLE_BAT(, 10187) +HANDLE_BAT(, 10188) +HANDLE_BAT(, 10189) +HANDLE_BAT(, 10190) +HANDLE_BAT(, 10191) +HANDLE_BAT(, 10192) +HANDLE_BAT(, 10193) +HANDLE_BAT(, 10194) +HANDLE_BAT(, 10195) +HANDLE_BAT(, 10196) +HANDLE_BAT(, 10197) +HANDLE_BAT(, 10198) +HANDLE_BAT(, 10199) +HANDLE_BAT(, 10200) +HANDLE_BAT(, 10201) +HANDLE_BAT(, 10202) +HANDLE_BAT(, 10203) +HANDLE_BAT(, 10204) +HANDLE_BAT(, 10205) +HANDLE_BAT(, 10206) +HANDLE_BAT(, 10207) +HANDLE_BAT(, 10208) +HANDLE_BAT(, 10209) +HANDLE_BAT(, 10210) +HANDLE_BAT(, 10211) +HANDLE_BAT(, 10212) +HANDLE_BAT(, 10213) +HANDLE_BAT(, 10214) +HANDLE_BAT(, 10215) +HANDLE_BAT(, 10216) +HANDLE_BAT(, 10217) +HANDLE_BAT(, 10218) +HANDLE_BAT(, 10219) +HANDLE_BAT(, 10220) +HANDLE_BAT(, 10221) +HANDLE_BAT(, 10222) +HANDLE_BAT(, 10223) +HANDLE_BAT(, 10224) +HANDLE_BAT(, 10225) +HANDLE_BAT(, 10226) +HANDLE_BAT(, 10227) +HANDLE_BAT(, 10228) +HANDLE_BAT(, 10229) +HANDLE_BAT(, 10230) +HANDLE_BAT(, 10231) +HANDLE_BAT(, 10232) +HANDLE_BAT(, 10233) +HANDLE_BAT(, 10234) +HANDLE_BAT(, 10235) +HANDLE_BAT(, 10236) +HANDLE_BAT(, 10237) +HANDLE_BAT(, 10238) +HANDLE_BAT(, 10239) +HANDLE_BAT(, 10240) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 9217) +HANDLE_BAT(APINT_TYPE_PREFIX, 9218) +HANDLE_BAT(APINT_TYPE_PREFIX, 9219) +HANDLE_BAT(APINT_TYPE_PREFIX, 9220) +HANDLE_BAT(APINT_TYPE_PREFIX, 9221) +HANDLE_BAT(APINT_TYPE_PREFIX, 9222) +HANDLE_BAT(APINT_TYPE_PREFIX, 9223) +HANDLE_BAT(APINT_TYPE_PREFIX, 9224) +HANDLE_BAT(APINT_TYPE_PREFIX, 9225) +HANDLE_BAT(APINT_TYPE_PREFIX, 9226) +HANDLE_BAT(APINT_TYPE_PREFIX, 9227) +HANDLE_BAT(APINT_TYPE_PREFIX, 9228) +HANDLE_BAT(APINT_TYPE_PREFIX, 9229) +HANDLE_BAT(APINT_TYPE_PREFIX, 9230) +HANDLE_BAT(APINT_TYPE_PREFIX, 9231) +HANDLE_BAT(APINT_TYPE_PREFIX, 9232) +HANDLE_BAT(APINT_TYPE_PREFIX, 9233) +HANDLE_BAT(APINT_TYPE_PREFIX, 9234) +HANDLE_BAT(APINT_TYPE_PREFIX, 9235) +HANDLE_BAT(APINT_TYPE_PREFIX, 9236) +HANDLE_BAT(APINT_TYPE_PREFIX, 9237) +HANDLE_BAT(APINT_TYPE_PREFIX, 9238) +HANDLE_BAT(APINT_TYPE_PREFIX, 9239) +HANDLE_BAT(APINT_TYPE_PREFIX, 9240) +HANDLE_BAT(APINT_TYPE_PREFIX, 9241) +HANDLE_BAT(APINT_TYPE_PREFIX, 9242) +HANDLE_BAT(APINT_TYPE_PREFIX, 9243) +HANDLE_BAT(APINT_TYPE_PREFIX, 9244) +HANDLE_BAT(APINT_TYPE_PREFIX, 9245) +HANDLE_BAT(APINT_TYPE_PREFIX, 9246) +HANDLE_BAT(APINT_TYPE_PREFIX, 9247) +HANDLE_BAT(APINT_TYPE_PREFIX, 9248) +HANDLE_BAT(APINT_TYPE_PREFIX, 9249) +HANDLE_BAT(APINT_TYPE_PREFIX, 9250) +HANDLE_BAT(APINT_TYPE_PREFIX, 9251) +HANDLE_BAT(APINT_TYPE_PREFIX, 9252) +HANDLE_BAT(APINT_TYPE_PREFIX, 9253) +HANDLE_BAT(APINT_TYPE_PREFIX, 9254) +HANDLE_BAT(APINT_TYPE_PREFIX, 9255) +HANDLE_BAT(APINT_TYPE_PREFIX, 9256) +HANDLE_BAT(APINT_TYPE_PREFIX, 9257) +HANDLE_BAT(APINT_TYPE_PREFIX, 9258) +HANDLE_BAT(APINT_TYPE_PREFIX, 9259) +HANDLE_BAT(APINT_TYPE_PREFIX, 9260) +HANDLE_BAT(APINT_TYPE_PREFIX, 9261) +HANDLE_BAT(APINT_TYPE_PREFIX, 9262) +HANDLE_BAT(APINT_TYPE_PREFIX, 9263) +HANDLE_BAT(APINT_TYPE_PREFIX, 9264) +HANDLE_BAT(APINT_TYPE_PREFIX, 9265) +HANDLE_BAT(APINT_TYPE_PREFIX, 9266) +HANDLE_BAT(APINT_TYPE_PREFIX, 9267) +HANDLE_BAT(APINT_TYPE_PREFIX, 9268) +HANDLE_BAT(APINT_TYPE_PREFIX, 9269) +HANDLE_BAT(APINT_TYPE_PREFIX, 9270) +HANDLE_BAT(APINT_TYPE_PREFIX, 9271) +HANDLE_BAT(APINT_TYPE_PREFIX, 9272) +HANDLE_BAT(APINT_TYPE_PREFIX, 9273) +HANDLE_BAT(APINT_TYPE_PREFIX, 9274) +HANDLE_BAT(APINT_TYPE_PREFIX, 9275) +HANDLE_BAT(APINT_TYPE_PREFIX, 9276) +HANDLE_BAT(APINT_TYPE_PREFIX, 9277) +HANDLE_BAT(APINT_TYPE_PREFIX, 9278) +HANDLE_BAT(APINT_TYPE_PREFIX, 9279) +HANDLE_BAT(APINT_TYPE_PREFIX, 9280) +HANDLE_BAT(APINT_TYPE_PREFIX, 9281) +HANDLE_BAT(APINT_TYPE_PREFIX, 9282) +HANDLE_BAT(APINT_TYPE_PREFIX, 9283) +HANDLE_BAT(APINT_TYPE_PREFIX, 9284) +HANDLE_BAT(APINT_TYPE_PREFIX, 9285) +HANDLE_BAT(APINT_TYPE_PREFIX, 9286) +HANDLE_BAT(APINT_TYPE_PREFIX, 9287) +HANDLE_BAT(APINT_TYPE_PREFIX, 9288) +HANDLE_BAT(APINT_TYPE_PREFIX, 9289) +HANDLE_BAT(APINT_TYPE_PREFIX, 9290) +HANDLE_BAT(APINT_TYPE_PREFIX, 9291) +HANDLE_BAT(APINT_TYPE_PREFIX, 9292) +HANDLE_BAT(APINT_TYPE_PREFIX, 9293) +HANDLE_BAT(APINT_TYPE_PREFIX, 9294) +HANDLE_BAT(APINT_TYPE_PREFIX, 9295) +HANDLE_BAT(APINT_TYPE_PREFIX, 9296) +HANDLE_BAT(APINT_TYPE_PREFIX, 9297) +HANDLE_BAT(APINT_TYPE_PREFIX, 9298) +HANDLE_BAT(APINT_TYPE_PREFIX, 9299) +HANDLE_BAT(APINT_TYPE_PREFIX, 9300) +HANDLE_BAT(APINT_TYPE_PREFIX, 9301) +HANDLE_BAT(APINT_TYPE_PREFIX, 9302) +HANDLE_BAT(APINT_TYPE_PREFIX, 9303) +HANDLE_BAT(APINT_TYPE_PREFIX, 9304) +HANDLE_BAT(APINT_TYPE_PREFIX, 9305) +HANDLE_BAT(APINT_TYPE_PREFIX, 9306) +HANDLE_BAT(APINT_TYPE_PREFIX, 9307) +HANDLE_BAT(APINT_TYPE_PREFIX, 9308) +HANDLE_BAT(APINT_TYPE_PREFIX, 9309) +HANDLE_BAT(APINT_TYPE_PREFIX, 9310) +HANDLE_BAT(APINT_TYPE_PREFIX, 9311) +HANDLE_BAT(APINT_TYPE_PREFIX, 9312) +HANDLE_BAT(APINT_TYPE_PREFIX, 9313) +HANDLE_BAT(APINT_TYPE_PREFIX, 9314) +HANDLE_BAT(APINT_TYPE_PREFIX, 9315) +HANDLE_BAT(APINT_TYPE_PREFIX, 9316) +HANDLE_BAT(APINT_TYPE_PREFIX, 9317) +HANDLE_BAT(APINT_TYPE_PREFIX, 9318) +HANDLE_BAT(APINT_TYPE_PREFIX, 9319) +HANDLE_BAT(APINT_TYPE_PREFIX, 9320) +HANDLE_BAT(APINT_TYPE_PREFIX, 9321) +HANDLE_BAT(APINT_TYPE_PREFIX, 9322) +HANDLE_BAT(APINT_TYPE_PREFIX, 9323) +HANDLE_BAT(APINT_TYPE_PREFIX, 9324) +HANDLE_BAT(APINT_TYPE_PREFIX, 9325) +HANDLE_BAT(APINT_TYPE_PREFIX, 9326) +HANDLE_BAT(APINT_TYPE_PREFIX, 9327) +HANDLE_BAT(APINT_TYPE_PREFIX, 9328) +HANDLE_BAT(APINT_TYPE_PREFIX, 9329) +HANDLE_BAT(APINT_TYPE_PREFIX, 9330) +HANDLE_BAT(APINT_TYPE_PREFIX, 9331) +HANDLE_BAT(APINT_TYPE_PREFIX, 9332) +HANDLE_BAT(APINT_TYPE_PREFIX, 9333) +HANDLE_BAT(APINT_TYPE_PREFIX, 9334) +HANDLE_BAT(APINT_TYPE_PREFIX, 9335) +HANDLE_BAT(APINT_TYPE_PREFIX, 9336) +HANDLE_BAT(APINT_TYPE_PREFIX, 9337) +HANDLE_BAT(APINT_TYPE_PREFIX, 9338) +HANDLE_BAT(APINT_TYPE_PREFIX, 9339) +HANDLE_BAT(APINT_TYPE_PREFIX, 9340) +HANDLE_BAT(APINT_TYPE_PREFIX, 9341) +HANDLE_BAT(APINT_TYPE_PREFIX, 9342) +HANDLE_BAT(APINT_TYPE_PREFIX, 9343) +HANDLE_BAT(APINT_TYPE_PREFIX, 9344) +HANDLE_BAT(APINT_TYPE_PREFIX, 9345) +HANDLE_BAT(APINT_TYPE_PREFIX, 9346) +HANDLE_BAT(APINT_TYPE_PREFIX, 9347) +HANDLE_BAT(APINT_TYPE_PREFIX, 9348) +HANDLE_BAT(APINT_TYPE_PREFIX, 9349) +HANDLE_BAT(APINT_TYPE_PREFIX, 9350) +HANDLE_BAT(APINT_TYPE_PREFIX, 9351) +HANDLE_BAT(APINT_TYPE_PREFIX, 9352) +HANDLE_BAT(APINT_TYPE_PREFIX, 9353) +HANDLE_BAT(APINT_TYPE_PREFIX, 9354) +HANDLE_BAT(APINT_TYPE_PREFIX, 9355) +HANDLE_BAT(APINT_TYPE_PREFIX, 9356) +HANDLE_BAT(APINT_TYPE_PREFIX, 9357) +HANDLE_BAT(APINT_TYPE_PREFIX, 9358) +HANDLE_BAT(APINT_TYPE_PREFIX, 9359) +HANDLE_BAT(APINT_TYPE_PREFIX, 9360) +HANDLE_BAT(APINT_TYPE_PREFIX, 9361) +HANDLE_BAT(APINT_TYPE_PREFIX, 9362) +HANDLE_BAT(APINT_TYPE_PREFIX, 9363) +HANDLE_BAT(APINT_TYPE_PREFIX, 9364) +HANDLE_BAT(APINT_TYPE_PREFIX, 9365) +HANDLE_BAT(APINT_TYPE_PREFIX, 9366) +HANDLE_BAT(APINT_TYPE_PREFIX, 9367) +HANDLE_BAT(APINT_TYPE_PREFIX, 9368) +HANDLE_BAT(APINT_TYPE_PREFIX, 9369) +HANDLE_BAT(APINT_TYPE_PREFIX, 9370) +HANDLE_BAT(APINT_TYPE_PREFIX, 9371) +HANDLE_BAT(APINT_TYPE_PREFIX, 9372) +HANDLE_BAT(APINT_TYPE_PREFIX, 9373) +HANDLE_BAT(APINT_TYPE_PREFIX, 9374) +HANDLE_BAT(APINT_TYPE_PREFIX, 9375) +HANDLE_BAT(APINT_TYPE_PREFIX, 9376) +HANDLE_BAT(APINT_TYPE_PREFIX, 9377) +HANDLE_BAT(APINT_TYPE_PREFIX, 9378) +HANDLE_BAT(APINT_TYPE_PREFIX, 9379) +HANDLE_BAT(APINT_TYPE_PREFIX, 9380) +HANDLE_BAT(APINT_TYPE_PREFIX, 9381) +HANDLE_BAT(APINT_TYPE_PREFIX, 9382) +HANDLE_BAT(APINT_TYPE_PREFIX, 9383) +HANDLE_BAT(APINT_TYPE_PREFIX, 9384) +HANDLE_BAT(APINT_TYPE_PREFIX, 9385) +HANDLE_BAT(APINT_TYPE_PREFIX, 9386) +HANDLE_BAT(APINT_TYPE_PREFIX, 9387) +HANDLE_BAT(APINT_TYPE_PREFIX, 9388) +HANDLE_BAT(APINT_TYPE_PREFIX, 9389) +HANDLE_BAT(APINT_TYPE_PREFIX, 9390) +HANDLE_BAT(APINT_TYPE_PREFIX, 9391) +HANDLE_BAT(APINT_TYPE_PREFIX, 9392) +HANDLE_BAT(APINT_TYPE_PREFIX, 9393) +HANDLE_BAT(APINT_TYPE_PREFIX, 9394) +HANDLE_BAT(APINT_TYPE_PREFIX, 9395) +HANDLE_BAT(APINT_TYPE_PREFIX, 9396) +HANDLE_BAT(APINT_TYPE_PREFIX, 9397) +HANDLE_BAT(APINT_TYPE_PREFIX, 9398) +HANDLE_BAT(APINT_TYPE_PREFIX, 9399) +HANDLE_BAT(APINT_TYPE_PREFIX, 9400) +HANDLE_BAT(APINT_TYPE_PREFIX, 9401) +HANDLE_BAT(APINT_TYPE_PREFIX, 9402) +HANDLE_BAT(APINT_TYPE_PREFIX, 9403) +HANDLE_BAT(APINT_TYPE_PREFIX, 9404) +HANDLE_BAT(APINT_TYPE_PREFIX, 9405) +HANDLE_BAT(APINT_TYPE_PREFIX, 9406) +HANDLE_BAT(APINT_TYPE_PREFIX, 9407) +HANDLE_BAT(APINT_TYPE_PREFIX, 9408) +HANDLE_BAT(APINT_TYPE_PREFIX, 9409) +HANDLE_BAT(APINT_TYPE_PREFIX, 9410) +HANDLE_BAT(APINT_TYPE_PREFIX, 9411) +HANDLE_BAT(APINT_TYPE_PREFIX, 9412) +HANDLE_BAT(APINT_TYPE_PREFIX, 9413) +HANDLE_BAT(APINT_TYPE_PREFIX, 9414) +HANDLE_BAT(APINT_TYPE_PREFIX, 9415) +HANDLE_BAT(APINT_TYPE_PREFIX, 9416) +HANDLE_BAT(APINT_TYPE_PREFIX, 9417) +HANDLE_BAT(APINT_TYPE_PREFIX, 9418) +HANDLE_BAT(APINT_TYPE_PREFIX, 9419) +HANDLE_BAT(APINT_TYPE_PREFIX, 9420) +HANDLE_BAT(APINT_TYPE_PREFIX, 9421) +HANDLE_BAT(APINT_TYPE_PREFIX, 9422) +HANDLE_BAT(APINT_TYPE_PREFIX, 9423) +HANDLE_BAT(APINT_TYPE_PREFIX, 9424) +HANDLE_BAT(APINT_TYPE_PREFIX, 9425) +HANDLE_BAT(APINT_TYPE_PREFIX, 9426) +HANDLE_BAT(APINT_TYPE_PREFIX, 9427) +HANDLE_BAT(APINT_TYPE_PREFIX, 9428) +HANDLE_BAT(APINT_TYPE_PREFIX, 9429) +HANDLE_BAT(APINT_TYPE_PREFIX, 9430) +HANDLE_BAT(APINT_TYPE_PREFIX, 9431) +HANDLE_BAT(APINT_TYPE_PREFIX, 9432) +HANDLE_BAT(APINT_TYPE_PREFIX, 9433) +HANDLE_BAT(APINT_TYPE_PREFIX, 9434) +HANDLE_BAT(APINT_TYPE_PREFIX, 9435) +HANDLE_BAT(APINT_TYPE_PREFIX, 9436) +HANDLE_BAT(APINT_TYPE_PREFIX, 9437) +HANDLE_BAT(APINT_TYPE_PREFIX, 9438) +HANDLE_BAT(APINT_TYPE_PREFIX, 9439) +HANDLE_BAT(APINT_TYPE_PREFIX, 9440) +HANDLE_BAT(APINT_TYPE_PREFIX, 9441) +HANDLE_BAT(APINT_TYPE_PREFIX, 9442) +HANDLE_BAT(APINT_TYPE_PREFIX, 9443) +HANDLE_BAT(APINT_TYPE_PREFIX, 9444) +HANDLE_BAT(APINT_TYPE_PREFIX, 9445) +HANDLE_BAT(APINT_TYPE_PREFIX, 9446) +HANDLE_BAT(APINT_TYPE_PREFIX, 9447) +HANDLE_BAT(APINT_TYPE_PREFIX, 9448) +HANDLE_BAT(APINT_TYPE_PREFIX, 9449) +HANDLE_BAT(APINT_TYPE_PREFIX, 9450) +HANDLE_BAT(APINT_TYPE_PREFIX, 9451) +HANDLE_BAT(APINT_TYPE_PREFIX, 9452) +HANDLE_BAT(APINT_TYPE_PREFIX, 9453) +HANDLE_BAT(APINT_TYPE_PREFIX, 9454) +HANDLE_BAT(APINT_TYPE_PREFIX, 9455) +HANDLE_BAT(APINT_TYPE_PREFIX, 9456) +HANDLE_BAT(APINT_TYPE_PREFIX, 9457) +HANDLE_BAT(APINT_TYPE_PREFIX, 9458) +HANDLE_BAT(APINT_TYPE_PREFIX, 9459) +HANDLE_BAT(APINT_TYPE_PREFIX, 9460) +HANDLE_BAT(APINT_TYPE_PREFIX, 9461) +HANDLE_BAT(APINT_TYPE_PREFIX, 9462) +HANDLE_BAT(APINT_TYPE_PREFIX, 9463) +HANDLE_BAT(APINT_TYPE_PREFIX, 9464) +HANDLE_BAT(APINT_TYPE_PREFIX, 9465) +HANDLE_BAT(APINT_TYPE_PREFIX, 9466) +HANDLE_BAT(APINT_TYPE_PREFIX, 9467) +HANDLE_BAT(APINT_TYPE_PREFIX, 9468) +HANDLE_BAT(APINT_TYPE_PREFIX, 9469) +HANDLE_BAT(APINT_TYPE_PREFIX, 9470) +HANDLE_BAT(APINT_TYPE_PREFIX, 9471) +HANDLE_BAT(APINT_TYPE_PREFIX, 9472) +HANDLE_BAT(APINT_TYPE_PREFIX, 9473) +HANDLE_BAT(APINT_TYPE_PREFIX, 9474) +HANDLE_BAT(APINT_TYPE_PREFIX, 9475) +HANDLE_BAT(APINT_TYPE_PREFIX, 9476) +HANDLE_BAT(APINT_TYPE_PREFIX, 9477) +HANDLE_BAT(APINT_TYPE_PREFIX, 9478) +HANDLE_BAT(APINT_TYPE_PREFIX, 9479) +HANDLE_BAT(APINT_TYPE_PREFIX, 9480) +HANDLE_BAT(APINT_TYPE_PREFIX, 9481) +HANDLE_BAT(APINT_TYPE_PREFIX, 9482) +HANDLE_BAT(APINT_TYPE_PREFIX, 9483) +HANDLE_BAT(APINT_TYPE_PREFIX, 9484) +HANDLE_BAT(APINT_TYPE_PREFIX, 9485) +HANDLE_BAT(APINT_TYPE_PREFIX, 9486) +HANDLE_BAT(APINT_TYPE_PREFIX, 9487) +HANDLE_BAT(APINT_TYPE_PREFIX, 9488) +HANDLE_BAT(APINT_TYPE_PREFIX, 9489) +HANDLE_BAT(APINT_TYPE_PREFIX, 9490) +HANDLE_BAT(APINT_TYPE_PREFIX, 9491) +HANDLE_BAT(APINT_TYPE_PREFIX, 9492) +HANDLE_BAT(APINT_TYPE_PREFIX, 9493) +HANDLE_BAT(APINT_TYPE_PREFIX, 9494) +HANDLE_BAT(APINT_TYPE_PREFIX, 9495) +HANDLE_BAT(APINT_TYPE_PREFIX, 9496) +HANDLE_BAT(APINT_TYPE_PREFIX, 9497) +HANDLE_BAT(APINT_TYPE_PREFIX, 9498) +HANDLE_BAT(APINT_TYPE_PREFIX, 9499) +HANDLE_BAT(APINT_TYPE_PREFIX, 9500) +HANDLE_BAT(APINT_TYPE_PREFIX, 9501) +HANDLE_BAT(APINT_TYPE_PREFIX, 9502) +HANDLE_BAT(APINT_TYPE_PREFIX, 9503) +HANDLE_BAT(APINT_TYPE_PREFIX, 9504) +HANDLE_BAT(APINT_TYPE_PREFIX, 9505) +HANDLE_BAT(APINT_TYPE_PREFIX, 9506) +HANDLE_BAT(APINT_TYPE_PREFIX, 9507) +HANDLE_BAT(APINT_TYPE_PREFIX, 9508) +HANDLE_BAT(APINT_TYPE_PREFIX, 9509) +HANDLE_BAT(APINT_TYPE_PREFIX, 9510) +HANDLE_BAT(APINT_TYPE_PREFIX, 9511) +HANDLE_BAT(APINT_TYPE_PREFIX, 9512) +HANDLE_BAT(APINT_TYPE_PREFIX, 9513) +HANDLE_BAT(APINT_TYPE_PREFIX, 9514) +HANDLE_BAT(APINT_TYPE_PREFIX, 9515) +HANDLE_BAT(APINT_TYPE_PREFIX, 9516) +HANDLE_BAT(APINT_TYPE_PREFIX, 9517) +HANDLE_BAT(APINT_TYPE_PREFIX, 9518) +HANDLE_BAT(APINT_TYPE_PREFIX, 9519) +HANDLE_BAT(APINT_TYPE_PREFIX, 9520) +HANDLE_BAT(APINT_TYPE_PREFIX, 9521) +HANDLE_BAT(APINT_TYPE_PREFIX, 9522) +HANDLE_BAT(APINT_TYPE_PREFIX, 9523) +HANDLE_BAT(APINT_TYPE_PREFIX, 9524) +HANDLE_BAT(APINT_TYPE_PREFIX, 9525) +HANDLE_BAT(APINT_TYPE_PREFIX, 9526) +HANDLE_BAT(APINT_TYPE_PREFIX, 9527) +HANDLE_BAT(APINT_TYPE_PREFIX, 9528) +HANDLE_BAT(APINT_TYPE_PREFIX, 9529) +HANDLE_BAT(APINT_TYPE_PREFIX, 9530) +HANDLE_BAT(APINT_TYPE_PREFIX, 9531) +HANDLE_BAT(APINT_TYPE_PREFIX, 9532) +HANDLE_BAT(APINT_TYPE_PREFIX, 9533) +HANDLE_BAT(APINT_TYPE_PREFIX, 9534) +HANDLE_BAT(APINT_TYPE_PREFIX, 9535) +HANDLE_BAT(APINT_TYPE_PREFIX, 9536) +HANDLE_BAT(APINT_TYPE_PREFIX, 9537) +HANDLE_BAT(APINT_TYPE_PREFIX, 9538) +HANDLE_BAT(APINT_TYPE_PREFIX, 9539) +HANDLE_BAT(APINT_TYPE_PREFIX, 9540) +HANDLE_BAT(APINT_TYPE_PREFIX, 9541) +HANDLE_BAT(APINT_TYPE_PREFIX, 9542) +HANDLE_BAT(APINT_TYPE_PREFIX, 9543) +HANDLE_BAT(APINT_TYPE_PREFIX, 9544) +HANDLE_BAT(APINT_TYPE_PREFIX, 9545) +HANDLE_BAT(APINT_TYPE_PREFIX, 9546) +HANDLE_BAT(APINT_TYPE_PREFIX, 9547) +HANDLE_BAT(APINT_TYPE_PREFIX, 9548) +HANDLE_BAT(APINT_TYPE_PREFIX, 9549) +HANDLE_BAT(APINT_TYPE_PREFIX, 9550) +HANDLE_BAT(APINT_TYPE_PREFIX, 9551) +HANDLE_BAT(APINT_TYPE_PREFIX, 9552) +HANDLE_BAT(APINT_TYPE_PREFIX, 9553) +HANDLE_BAT(APINT_TYPE_PREFIX, 9554) +HANDLE_BAT(APINT_TYPE_PREFIX, 9555) +HANDLE_BAT(APINT_TYPE_PREFIX, 9556) +HANDLE_BAT(APINT_TYPE_PREFIX, 9557) +HANDLE_BAT(APINT_TYPE_PREFIX, 9558) +HANDLE_BAT(APINT_TYPE_PREFIX, 9559) +HANDLE_BAT(APINT_TYPE_PREFIX, 9560) +HANDLE_BAT(APINT_TYPE_PREFIX, 9561) +HANDLE_BAT(APINT_TYPE_PREFIX, 9562) +HANDLE_BAT(APINT_TYPE_PREFIX, 9563) +HANDLE_BAT(APINT_TYPE_PREFIX, 9564) +HANDLE_BAT(APINT_TYPE_PREFIX, 9565) +HANDLE_BAT(APINT_TYPE_PREFIX, 9566) +HANDLE_BAT(APINT_TYPE_PREFIX, 9567) +HANDLE_BAT(APINT_TYPE_PREFIX, 9568) +HANDLE_BAT(APINT_TYPE_PREFIX, 9569) +HANDLE_BAT(APINT_TYPE_PREFIX, 9570) +HANDLE_BAT(APINT_TYPE_PREFIX, 9571) +HANDLE_BAT(APINT_TYPE_PREFIX, 9572) +HANDLE_BAT(APINT_TYPE_PREFIX, 9573) +HANDLE_BAT(APINT_TYPE_PREFIX, 9574) +HANDLE_BAT(APINT_TYPE_PREFIX, 9575) +HANDLE_BAT(APINT_TYPE_PREFIX, 9576) +HANDLE_BAT(APINT_TYPE_PREFIX, 9577) +HANDLE_BAT(APINT_TYPE_PREFIX, 9578) +HANDLE_BAT(APINT_TYPE_PREFIX, 9579) +HANDLE_BAT(APINT_TYPE_PREFIX, 9580) +HANDLE_BAT(APINT_TYPE_PREFIX, 9581) +HANDLE_BAT(APINT_TYPE_PREFIX, 9582) +HANDLE_BAT(APINT_TYPE_PREFIX, 9583) +HANDLE_BAT(APINT_TYPE_PREFIX, 9584) +HANDLE_BAT(APINT_TYPE_PREFIX, 9585) +HANDLE_BAT(APINT_TYPE_PREFIX, 9586) +HANDLE_BAT(APINT_TYPE_PREFIX, 9587) +HANDLE_BAT(APINT_TYPE_PREFIX, 9588) +HANDLE_BAT(APINT_TYPE_PREFIX, 9589) +HANDLE_BAT(APINT_TYPE_PREFIX, 9590) +HANDLE_BAT(APINT_TYPE_PREFIX, 9591) +HANDLE_BAT(APINT_TYPE_PREFIX, 9592) +HANDLE_BAT(APINT_TYPE_PREFIX, 9593) +HANDLE_BAT(APINT_TYPE_PREFIX, 9594) +HANDLE_BAT(APINT_TYPE_PREFIX, 9595) +HANDLE_BAT(APINT_TYPE_PREFIX, 9596) +HANDLE_BAT(APINT_TYPE_PREFIX, 9597) +HANDLE_BAT(APINT_TYPE_PREFIX, 9598) +HANDLE_BAT(APINT_TYPE_PREFIX, 9599) +HANDLE_BAT(APINT_TYPE_PREFIX, 9600) +HANDLE_BAT(APINT_TYPE_PREFIX, 9601) +HANDLE_BAT(APINT_TYPE_PREFIX, 9602) +HANDLE_BAT(APINT_TYPE_PREFIX, 9603) +HANDLE_BAT(APINT_TYPE_PREFIX, 9604) +HANDLE_BAT(APINT_TYPE_PREFIX, 9605) +HANDLE_BAT(APINT_TYPE_PREFIX, 9606) +HANDLE_BAT(APINT_TYPE_PREFIX, 9607) +HANDLE_BAT(APINT_TYPE_PREFIX, 9608) +HANDLE_BAT(APINT_TYPE_PREFIX, 9609) +HANDLE_BAT(APINT_TYPE_PREFIX, 9610) +HANDLE_BAT(APINT_TYPE_PREFIX, 9611) +HANDLE_BAT(APINT_TYPE_PREFIX, 9612) +HANDLE_BAT(APINT_TYPE_PREFIX, 9613) +HANDLE_BAT(APINT_TYPE_PREFIX, 9614) +HANDLE_BAT(APINT_TYPE_PREFIX, 9615) +HANDLE_BAT(APINT_TYPE_PREFIX, 9616) +HANDLE_BAT(APINT_TYPE_PREFIX, 9617) +HANDLE_BAT(APINT_TYPE_PREFIX, 9618) +HANDLE_BAT(APINT_TYPE_PREFIX, 9619) +HANDLE_BAT(APINT_TYPE_PREFIX, 9620) +HANDLE_BAT(APINT_TYPE_PREFIX, 9621) +HANDLE_BAT(APINT_TYPE_PREFIX, 9622) +HANDLE_BAT(APINT_TYPE_PREFIX, 9623) +HANDLE_BAT(APINT_TYPE_PREFIX, 9624) +HANDLE_BAT(APINT_TYPE_PREFIX, 9625) +HANDLE_BAT(APINT_TYPE_PREFIX, 9626) +HANDLE_BAT(APINT_TYPE_PREFIX, 9627) +HANDLE_BAT(APINT_TYPE_PREFIX, 9628) +HANDLE_BAT(APINT_TYPE_PREFIX, 9629) +HANDLE_BAT(APINT_TYPE_PREFIX, 9630) +HANDLE_BAT(APINT_TYPE_PREFIX, 9631) +HANDLE_BAT(APINT_TYPE_PREFIX, 9632) +HANDLE_BAT(APINT_TYPE_PREFIX, 9633) +HANDLE_BAT(APINT_TYPE_PREFIX, 9634) +HANDLE_BAT(APINT_TYPE_PREFIX, 9635) +HANDLE_BAT(APINT_TYPE_PREFIX, 9636) +HANDLE_BAT(APINT_TYPE_PREFIX, 9637) +HANDLE_BAT(APINT_TYPE_PREFIX, 9638) +HANDLE_BAT(APINT_TYPE_PREFIX, 9639) +HANDLE_BAT(APINT_TYPE_PREFIX, 9640) +HANDLE_BAT(APINT_TYPE_PREFIX, 9641) +HANDLE_BAT(APINT_TYPE_PREFIX, 9642) +HANDLE_BAT(APINT_TYPE_PREFIX, 9643) +HANDLE_BAT(APINT_TYPE_PREFIX, 9644) +HANDLE_BAT(APINT_TYPE_PREFIX, 9645) +HANDLE_BAT(APINT_TYPE_PREFIX, 9646) +HANDLE_BAT(APINT_TYPE_PREFIX, 9647) +HANDLE_BAT(APINT_TYPE_PREFIX, 9648) +HANDLE_BAT(APINT_TYPE_PREFIX, 9649) +HANDLE_BAT(APINT_TYPE_PREFIX, 9650) +HANDLE_BAT(APINT_TYPE_PREFIX, 9651) +HANDLE_BAT(APINT_TYPE_PREFIX, 9652) +HANDLE_BAT(APINT_TYPE_PREFIX, 9653) +HANDLE_BAT(APINT_TYPE_PREFIX, 9654) +HANDLE_BAT(APINT_TYPE_PREFIX, 9655) +HANDLE_BAT(APINT_TYPE_PREFIX, 9656) +HANDLE_BAT(APINT_TYPE_PREFIX, 9657) +HANDLE_BAT(APINT_TYPE_PREFIX, 9658) +HANDLE_BAT(APINT_TYPE_PREFIX, 9659) +HANDLE_BAT(APINT_TYPE_PREFIX, 9660) +HANDLE_BAT(APINT_TYPE_PREFIX, 9661) +HANDLE_BAT(APINT_TYPE_PREFIX, 9662) +HANDLE_BAT(APINT_TYPE_PREFIX, 9663) +HANDLE_BAT(APINT_TYPE_PREFIX, 9664) +HANDLE_BAT(APINT_TYPE_PREFIX, 9665) +HANDLE_BAT(APINT_TYPE_PREFIX, 9666) +HANDLE_BAT(APINT_TYPE_PREFIX, 9667) +HANDLE_BAT(APINT_TYPE_PREFIX, 9668) +HANDLE_BAT(APINT_TYPE_PREFIX, 9669) +HANDLE_BAT(APINT_TYPE_PREFIX, 9670) +HANDLE_BAT(APINT_TYPE_PREFIX, 9671) +HANDLE_BAT(APINT_TYPE_PREFIX, 9672) +HANDLE_BAT(APINT_TYPE_PREFIX, 9673) +HANDLE_BAT(APINT_TYPE_PREFIX, 9674) +HANDLE_BAT(APINT_TYPE_PREFIX, 9675) +HANDLE_BAT(APINT_TYPE_PREFIX, 9676) +HANDLE_BAT(APINT_TYPE_PREFIX, 9677) +HANDLE_BAT(APINT_TYPE_PREFIX, 9678) +HANDLE_BAT(APINT_TYPE_PREFIX, 9679) +HANDLE_BAT(APINT_TYPE_PREFIX, 9680) +HANDLE_BAT(APINT_TYPE_PREFIX, 9681) +HANDLE_BAT(APINT_TYPE_PREFIX, 9682) +HANDLE_BAT(APINT_TYPE_PREFIX, 9683) +HANDLE_BAT(APINT_TYPE_PREFIX, 9684) +HANDLE_BAT(APINT_TYPE_PREFIX, 9685) +HANDLE_BAT(APINT_TYPE_PREFIX, 9686) +HANDLE_BAT(APINT_TYPE_PREFIX, 9687) +HANDLE_BAT(APINT_TYPE_PREFIX, 9688) +HANDLE_BAT(APINT_TYPE_PREFIX, 9689) +HANDLE_BAT(APINT_TYPE_PREFIX, 9690) +HANDLE_BAT(APINT_TYPE_PREFIX, 9691) +HANDLE_BAT(APINT_TYPE_PREFIX, 9692) +HANDLE_BAT(APINT_TYPE_PREFIX, 9693) +HANDLE_BAT(APINT_TYPE_PREFIX, 9694) +HANDLE_BAT(APINT_TYPE_PREFIX, 9695) +HANDLE_BAT(APINT_TYPE_PREFIX, 9696) +HANDLE_BAT(APINT_TYPE_PREFIX, 9697) +HANDLE_BAT(APINT_TYPE_PREFIX, 9698) +HANDLE_BAT(APINT_TYPE_PREFIX, 9699) +HANDLE_BAT(APINT_TYPE_PREFIX, 9700) +HANDLE_BAT(APINT_TYPE_PREFIX, 9701) +HANDLE_BAT(APINT_TYPE_PREFIX, 9702) +HANDLE_BAT(APINT_TYPE_PREFIX, 9703) +HANDLE_BAT(APINT_TYPE_PREFIX, 9704) +HANDLE_BAT(APINT_TYPE_PREFIX, 9705) +HANDLE_BAT(APINT_TYPE_PREFIX, 9706) +HANDLE_BAT(APINT_TYPE_PREFIX, 9707) +HANDLE_BAT(APINT_TYPE_PREFIX, 9708) +HANDLE_BAT(APINT_TYPE_PREFIX, 9709) +HANDLE_BAT(APINT_TYPE_PREFIX, 9710) +HANDLE_BAT(APINT_TYPE_PREFIX, 9711) +HANDLE_BAT(APINT_TYPE_PREFIX, 9712) +HANDLE_BAT(APINT_TYPE_PREFIX, 9713) +HANDLE_BAT(APINT_TYPE_PREFIX, 9714) +HANDLE_BAT(APINT_TYPE_PREFIX, 9715) +HANDLE_BAT(APINT_TYPE_PREFIX, 9716) +HANDLE_BAT(APINT_TYPE_PREFIX, 9717) +HANDLE_BAT(APINT_TYPE_PREFIX, 9718) +HANDLE_BAT(APINT_TYPE_PREFIX, 9719) +HANDLE_BAT(APINT_TYPE_PREFIX, 9720) +HANDLE_BAT(APINT_TYPE_PREFIX, 9721) +HANDLE_BAT(APINT_TYPE_PREFIX, 9722) +HANDLE_BAT(APINT_TYPE_PREFIX, 9723) +HANDLE_BAT(APINT_TYPE_PREFIX, 9724) +HANDLE_BAT(APINT_TYPE_PREFIX, 9725) +HANDLE_BAT(APINT_TYPE_PREFIX, 9726) +HANDLE_BAT(APINT_TYPE_PREFIX, 9727) +HANDLE_BAT(APINT_TYPE_PREFIX, 9728) +HANDLE_BAT(APINT_TYPE_PREFIX, 9729) +HANDLE_BAT(APINT_TYPE_PREFIX, 9730) +HANDLE_BAT(APINT_TYPE_PREFIX, 9731) +HANDLE_BAT(APINT_TYPE_PREFIX, 9732) +HANDLE_BAT(APINT_TYPE_PREFIX, 9733) +HANDLE_BAT(APINT_TYPE_PREFIX, 9734) +HANDLE_BAT(APINT_TYPE_PREFIX, 9735) +HANDLE_BAT(APINT_TYPE_PREFIX, 9736) +HANDLE_BAT(APINT_TYPE_PREFIX, 9737) +HANDLE_BAT(APINT_TYPE_PREFIX, 9738) +HANDLE_BAT(APINT_TYPE_PREFIX, 9739) +HANDLE_BAT(APINT_TYPE_PREFIX, 9740) +HANDLE_BAT(APINT_TYPE_PREFIX, 9741) +HANDLE_BAT(APINT_TYPE_PREFIX, 9742) +HANDLE_BAT(APINT_TYPE_PREFIX, 9743) +HANDLE_BAT(APINT_TYPE_PREFIX, 9744) +HANDLE_BAT(APINT_TYPE_PREFIX, 9745) +HANDLE_BAT(APINT_TYPE_PREFIX, 9746) +HANDLE_BAT(APINT_TYPE_PREFIX, 9747) +HANDLE_BAT(APINT_TYPE_PREFIX, 9748) +HANDLE_BAT(APINT_TYPE_PREFIX, 9749) +HANDLE_BAT(APINT_TYPE_PREFIX, 9750) +HANDLE_BAT(APINT_TYPE_PREFIX, 9751) +HANDLE_BAT(APINT_TYPE_PREFIX, 9752) +HANDLE_BAT(APINT_TYPE_PREFIX, 9753) +HANDLE_BAT(APINT_TYPE_PREFIX, 9754) +HANDLE_BAT(APINT_TYPE_PREFIX, 9755) +HANDLE_BAT(APINT_TYPE_PREFIX, 9756) +HANDLE_BAT(APINT_TYPE_PREFIX, 9757) +HANDLE_BAT(APINT_TYPE_PREFIX, 9758) +HANDLE_BAT(APINT_TYPE_PREFIX, 9759) +HANDLE_BAT(APINT_TYPE_PREFIX, 9760) +HANDLE_BAT(APINT_TYPE_PREFIX, 9761) +HANDLE_BAT(APINT_TYPE_PREFIX, 9762) +HANDLE_BAT(APINT_TYPE_PREFIX, 9763) +HANDLE_BAT(APINT_TYPE_PREFIX, 9764) +HANDLE_BAT(APINT_TYPE_PREFIX, 9765) +HANDLE_BAT(APINT_TYPE_PREFIX, 9766) +HANDLE_BAT(APINT_TYPE_PREFIX, 9767) +HANDLE_BAT(APINT_TYPE_PREFIX, 9768) +HANDLE_BAT(APINT_TYPE_PREFIX, 9769) +HANDLE_BAT(APINT_TYPE_PREFIX, 9770) +HANDLE_BAT(APINT_TYPE_PREFIX, 9771) +HANDLE_BAT(APINT_TYPE_PREFIX, 9772) +HANDLE_BAT(APINT_TYPE_PREFIX, 9773) +HANDLE_BAT(APINT_TYPE_PREFIX, 9774) +HANDLE_BAT(APINT_TYPE_PREFIX, 9775) +HANDLE_BAT(APINT_TYPE_PREFIX, 9776) +HANDLE_BAT(APINT_TYPE_PREFIX, 9777) +HANDLE_BAT(APINT_TYPE_PREFIX, 9778) +HANDLE_BAT(APINT_TYPE_PREFIX, 9779) +HANDLE_BAT(APINT_TYPE_PREFIX, 9780) +HANDLE_BAT(APINT_TYPE_PREFIX, 9781) +HANDLE_BAT(APINT_TYPE_PREFIX, 9782) +HANDLE_BAT(APINT_TYPE_PREFIX, 9783) +HANDLE_BAT(APINT_TYPE_PREFIX, 9784) +HANDLE_BAT(APINT_TYPE_PREFIX, 9785) +HANDLE_BAT(APINT_TYPE_PREFIX, 9786) +HANDLE_BAT(APINT_TYPE_PREFIX, 9787) +HANDLE_BAT(APINT_TYPE_PREFIX, 9788) +HANDLE_BAT(APINT_TYPE_PREFIX, 9789) +HANDLE_BAT(APINT_TYPE_PREFIX, 9790) +HANDLE_BAT(APINT_TYPE_PREFIX, 9791) +HANDLE_BAT(APINT_TYPE_PREFIX, 9792) +HANDLE_BAT(APINT_TYPE_PREFIX, 9793) +HANDLE_BAT(APINT_TYPE_PREFIX, 9794) +HANDLE_BAT(APINT_TYPE_PREFIX, 9795) +HANDLE_BAT(APINT_TYPE_PREFIX, 9796) +HANDLE_BAT(APINT_TYPE_PREFIX, 9797) +HANDLE_BAT(APINT_TYPE_PREFIX, 9798) +HANDLE_BAT(APINT_TYPE_PREFIX, 9799) +HANDLE_BAT(APINT_TYPE_PREFIX, 9800) +HANDLE_BAT(APINT_TYPE_PREFIX, 9801) +HANDLE_BAT(APINT_TYPE_PREFIX, 9802) +HANDLE_BAT(APINT_TYPE_PREFIX, 9803) +HANDLE_BAT(APINT_TYPE_PREFIX, 9804) +HANDLE_BAT(APINT_TYPE_PREFIX, 9805) +HANDLE_BAT(APINT_TYPE_PREFIX, 9806) +HANDLE_BAT(APINT_TYPE_PREFIX, 9807) +HANDLE_BAT(APINT_TYPE_PREFIX, 9808) +HANDLE_BAT(APINT_TYPE_PREFIX, 9809) +HANDLE_BAT(APINT_TYPE_PREFIX, 9810) +HANDLE_BAT(APINT_TYPE_PREFIX, 9811) +HANDLE_BAT(APINT_TYPE_PREFIX, 9812) +HANDLE_BAT(APINT_TYPE_PREFIX, 9813) +HANDLE_BAT(APINT_TYPE_PREFIX, 9814) +HANDLE_BAT(APINT_TYPE_PREFIX, 9815) +HANDLE_BAT(APINT_TYPE_PREFIX, 9816) +HANDLE_BAT(APINT_TYPE_PREFIX, 9817) +HANDLE_BAT(APINT_TYPE_PREFIX, 9818) +HANDLE_BAT(APINT_TYPE_PREFIX, 9819) +HANDLE_BAT(APINT_TYPE_PREFIX, 9820) +HANDLE_BAT(APINT_TYPE_PREFIX, 9821) +HANDLE_BAT(APINT_TYPE_PREFIX, 9822) +HANDLE_BAT(APINT_TYPE_PREFIX, 9823) +HANDLE_BAT(APINT_TYPE_PREFIX, 9824) +HANDLE_BAT(APINT_TYPE_PREFIX, 9825) +HANDLE_BAT(APINT_TYPE_PREFIX, 9826) +HANDLE_BAT(APINT_TYPE_PREFIX, 9827) +HANDLE_BAT(APINT_TYPE_PREFIX, 9828) +HANDLE_BAT(APINT_TYPE_PREFIX, 9829) +HANDLE_BAT(APINT_TYPE_PREFIX, 9830) +HANDLE_BAT(APINT_TYPE_PREFIX, 9831) +HANDLE_BAT(APINT_TYPE_PREFIX, 9832) +HANDLE_BAT(APINT_TYPE_PREFIX, 9833) +HANDLE_BAT(APINT_TYPE_PREFIX, 9834) +HANDLE_BAT(APINT_TYPE_PREFIX, 9835) +HANDLE_BAT(APINT_TYPE_PREFIX, 9836) +HANDLE_BAT(APINT_TYPE_PREFIX, 9837) +HANDLE_BAT(APINT_TYPE_PREFIX, 9838) +HANDLE_BAT(APINT_TYPE_PREFIX, 9839) +HANDLE_BAT(APINT_TYPE_PREFIX, 9840) +HANDLE_BAT(APINT_TYPE_PREFIX, 9841) +HANDLE_BAT(APINT_TYPE_PREFIX, 9842) +HANDLE_BAT(APINT_TYPE_PREFIX, 9843) +HANDLE_BAT(APINT_TYPE_PREFIX, 9844) +HANDLE_BAT(APINT_TYPE_PREFIX, 9845) +HANDLE_BAT(APINT_TYPE_PREFIX, 9846) +HANDLE_BAT(APINT_TYPE_PREFIX, 9847) +HANDLE_BAT(APINT_TYPE_PREFIX, 9848) +HANDLE_BAT(APINT_TYPE_PREFIX, 9849) +HANDLE_BAT(APINT_TYPE_PREFIX, 9850) +HANDLE_BAT(APINT_TYPE_PREFIX, 9851) +HANDLE_BAT(APINT_TYPE_PREFIX, 9852) +HANDLE_BAT(APINT_TYPE_PREFIX, 9853) +HANDLE_BAT(APINT_TYPE_PREFIX, 9854) +HANDLE_BAT(APINT_TYPE_PREFIX, 9855) +HANDLE_BAT(APINT_TYPE_PREFIX, 9856) +HANDLE_BAT(APINT_TYPE_PREFIX, 9857) +HANDLE_BAT(APINT_TYPE_PREFIX, 9858) +HANDLE_BAT(APINT_TYPE_PREFIX, 9859) +HANDLE_BAT(APINT_TYPE_PREFIX, 9860) +HANDLE_BAT(APINT_TYPE_PREFIX, 9861) +HANDLE_BAT(APINT_TYPE_PREFIX, 9862) +HANDLE_BAT(APINT_TYPE_PREFIX, 9863) +HANDLE_BAT(APINT_TYPE_PREFIX, 9864) +HANDLE_BAT(APINT_TYPE_PREFIX, 9865) +HANDLE_BAT(APINT_TYPE_PREFIX, 9866) +HANDLE_BAT(APINT_TYPE_PREFIX, 9867) +HANDLE_BAT(APINT_TYPE_PREFIX, 9868) +HANDLE_BAT(APINT_TYPE_PREFIX, 9869) +HANDLE_BAT(APINT_TYPE_PREFIX, 9870) +HANDLE_BAT(APINT_TYPE_PREFIX, 9871) +HANDLE_BAT(APINT_TYPE_PREFIX, 9872) +HANDLE_BAT(APINT_TYPE_PREFIX, 9873) +HANDLE_BAT(APINT_TYPE_PREFIX, 9874) +HANDLE_BAT(APINT_TYPE_PREFIX, 9875) +HANDLE_BAT(APINT_TYPE_PREFIX, 9876) +HANDLE_BAT(APINT_TYPE_PREFIX, 9877) +HANDLE_BAT(APINT_TYPE_PREFIX, 9878) +HANDLE_BAT(APINT_TYPE_PREFIX, 9879) +HANDLE_BAT(APINT_TYPE_PREFIX, 9880) +HANDLE_BAT(APINT_TYPE_PREFIX, 9881) +HANDLE_BAT(APINT_TYPE_PREFIX, 9882) +HANDLE_BAT(APINT_TYPE_PREFIX, 9883) +HANDLE_BAT(APINT_TYPE_PREFIX, 9884) +HANDLE_BAT(APINT_TYPE_PREFIX, 9885) +HANDLE_BAT(APINT_TYPE_PREFIX, 9886) +HANDLE_BAT(APINT_TYPE_PREFIX, 9887) +HANDLE_BAT(APINT_TYPE_PREFIX, 9888) +HANDLE_BAT(APINT_TYPE_PREFIX, 9889) +HANDLE_BAT(APINT_TYPE_PREFIX, 9890) +HANDLE_BAT(APINT_TYPE_PREFIX, 9891) +HANDLE_BAT(APINT_TYPE_PREFIX, 9892) +HANDLE_BAT(APINT_TYPE_PREFIX, 9893) +HANDLE_BAT(APINT_TYPE_PREFIX, 9894) +HANDLE_BAT(APINT_TYPE_PREFIX, 9895) +HANDLE_BAT(APINT_TYPE_PREFIX, 9896) +HANDLE_BAT(APINT_TYPE_PREFIX, 9897) +HANDLE_BAT(APINT_TYPE_PREFIX, 9898) +HANDLE_BAT(APINT_TYPE_PREFIX, 9899) +HANDLE_BAT(APINT_TYPE_PREFIX, 9900) +HANDLE_BAT(APINT_TYPE_PREFIX, 9901) +HANDLE_BAT(APINT_TYPE_PREFIX, 9902) +HANDLE_BAT(APINT_TYPE_PREFIX, 9903) +HANDLE_BAT(APINT_TYPE_PREFIX, 9904) +HANDLE_BAT(APINT_TYPE_PREFIX, 9905) +HANDLE_BAT(APINT_TYPE_PREFIX, 9906) +HANDLE_BAT(APINT_TYPE_PREFIX, 9907) +HANDLE_BAT(APINT_TYPE_PREFIX, 9908) +HANDLE_BAT(APINT_TYPE_PREFIX, 9909) +HANDLE_BAT(APINT_TYPE_PREFIX, 9910) +HANDLE_BAT(APINT_TYPE_PREFIX, 9911) +HANDLE_BAT(APINT_TYPE_PREFIX, 9912) +HANDLE_BAT(APINT_TYPE_PREFIX, 9913) +HANDLE_BAT(APINT_TYPE_PREFIX, 9914) +HANDLE_BAT(APINT_TYPE_PREFIX, 9915) +HANDLE_BAT(APINT_TYPE_PREFIX, 9916) +HANDLE_BAT(APINT_TYPE_PREFIX, 9917) +HANDLE_BAT(APINT_TYPE_PREFIX, 9918) +HANDLE_BAT(APINT_TYPE_PREFIX, 9919) +HANDLE_BAT(APINT_TYPE_PREFIX, 9920) +HANDLE_BAT(APINT_TYPE_PREFIX, 9921) +HANDLE_BAT(APINT_TYPE_PREFIX, 9922) +HANDLE_BAT(APINT_TYPE_PREFIX, 9923) +HANDLE_BAT(APINT_TYPE_PREFIX, 9924) +HANDLE_BAT(APINT_TYPE_PREFIX, 9925) +HANDLE_BAT(APINT_TYPE_PREFIX, 9926) +HANDLE_BAT(APINT_TYPE_PREFIX, 9927) +HANDLE_BAT(APINT_TYPE_PREFIX, 9928) +HANDLE_BAT(APINT_TYPE_PREFIX, 9929) +HANDLE_BAT(APINT_TYPE_PREFIX, 9930) +HANDLE_BAT(APINT_TYPE_PREFIX, 9931) +HANDLE_BAT(APINT_TYPE_PREFIX, 9932) +HANDLE_BAT(APINT_TYPE_PREFIX, 9933) +HANDLE_BAT(APINT_TYPE_PREFIX, 9934) +HANDLE_BAT(APINT_TYPE_PREFIX, 9935) +HANDLE_BAT(APINT_TYPE_PREFIX, 9936) +HANDLE_BAT(APINT_TYPE_PREFIX, 9937) +HANDLE_BAT(APINT_TYPE_PREFIX, 9938) +HANDLE_BAT(APINT_TYPE_PREFIX, 9939) +HANDLE_BAT(APINT_TYPE_PREFIX, 9940) +HANDLE_BAT(APINT_TYPE_PREFIX, 9941) +HANDLE_BAT(APINT_TYPE_PREFIX, 9942) +HANDLE_BAT(APINT_TYPE_PREFIX, 9943) +HANDLE_BAT(APINT_TYPE_PREFIX, 9944) +HANDLE_BAT(APINT_TYPE_PREFIX, 9945) +HANDLE_BAT(APINT_TYPE_PREFIX, 9946) +HANDLE_BAT(APINT_TYPE_PREFIX, 9947) +HANDLE_BAT(APINT_TYPE_PREFIX, 9948) +HANDLE_BAT(APINT_TYPE_PREFIX, 9949) +HANDLE_BAT(APINT_TYPE_PREFIX, 9950) +HANDLE_BAT(APINT_TYPE_PREFIX, 9951) +HANDLE_BAT(APINT_TYPE_PREFIX, 9952) +HANDLE_BAT(APINT_TYPE_PREFIX, 9953) +HANDLE_BAT(APINT_TYPE_PREFIX, 9954) +HANDLE_BAT(APINT_TYPE_PREFIX, 9955) +HANDLE_BAT(APINT_TYPE_PREFIX, 9956) +HANDLE_BAT(APINT_TYPE_PREFIX, 9957) +HANDLE_BAT(APINT_TYPE_PREFIX, 9958) +HANDLE_BAT(APINT_TYPE_PREFIX, 9959) +HANDLE_BAT(APINT_TYPE_PREFIX, 9960) +HANDLE_BAT(APINT_TYPE_PREFIX, 9961) +HANDLE_BAT(APINT_TYPE_PREFIX, 9962) +HANDLE_BAT(APINT_TYPE_PREFIX, 9963) +HANDLE_BAT(APINT_TYPE_PREFIX, 9964) +HANDLE_BAT(APINT_TYPE_PREFIX, 9965) +HANDLE_BAT(APINT_TYPE_PREFIX, 9966) +HANDLE_BAT(APINT_TYPE_PREFIX, 9967) +HANDLE_BAT(APINT_TYPE_PREFIX, 9968) +HANDLE_BAT(APINT_TYPE_PREFIX, 9969) +HANDLE_BAT(APINT_TYPE_PREFIX, 9970) +HANDLE_BAT(APINT_TYPE_PREFIX, 9971) +HANDLE_BAT(APINT_TYPE_PREFIX, 9972) +HANDLE_BAT(APINT_TYPE_PREFIX, 9973) +HANDLE_BAT(APINT_TYPE_PREFIX, 9974) +HANDLE_BAT(APINT_TYPE_PREFIX, 9975) +HANDLE_BAT(APINT_TYPE_PREFIX, 9976) +HANDLE_BAT(APINT_TYPE_PREFIX, 9977) +HANDLE_BAT(APINT_TYPE_PREFIX, 9978) +HANDLE_BAT(APINT_TYPE_PREFIX, 9979) +HANDLE_BAT(APINT_TYPE_PREFIX, 9980) +HANDLE_BAT(APINT_TYPE_PREFIX, 9981) +HANDLE_BAT(APINT_TYPE_PREFIX, 9982) +HANDLE_BAT(APINT_TYPE_PREFIX, 9983) +HANDLE_BAT(APINT_TYPE_PREFIX, 9984) +HANDLE_BAT(APINT_TYPE_PREFIX, 9985) +HANDLE_BAT(APINT_TYPE_PREFIX, 9986) +HANDLE_BAT(APINT_TYPE_PREFIX, 9987) +HANDLE_BAT(APINT_TYPE_PREFIX, 9988) +HANDLE_BAT(APINT_TYPE_PREFIX, 9989) +HANDLE_BAT(APINT_TYPE_PREFIX, 9990) +HANDLE_BAT(APINT_TYPE_PREFIX, 9991) +HANDLE_BAT(APINT_TYPE_PREFIX, 9992) +HANDLE_BAT(APINT_TYPE_PREFIX, 9993) +HANDLE_BAT(APINT_TYPE_PREFIX, 9994) +HANDLE_BAT(APINT_TYPE_PREFIX, 9995) +HANDLE_BAT(APINT_TYPE_PREFIX, 9996) +HANDLE_BAT(APINT_TYPE_PREFIX, 9997) +HANDLE_BAT(APINT_TYPE_PREFIX, 9998) +HANDLE_BAT(APINT_TYPE_PREFIX, 9999) +HANDLE_BAT(APINT_TYPE_PREFIX, 10000) +HANDLE_BAT(APINT_TYPE_PREFIX, 10001) +HANDLE_BAT(APINT_TYPE_PREFIX, 10002) +HANDLE_BAT(APINT_TYPE_PREFIX, 10003) +HANDLE_BAT(APINT_TYPE_PREFIX, 10004) +HANDLE_BAT(APINT_TYPE_PREFIX, 10005) +HANDLE_BAT(APINT_TYPE_PREFIX, 10006) +HANDLE_BAT(APINT_TYPE_PREFIX, 10007) +HANDLE_BAT(APINT_TYPE_PREFIX, 10008) +HANDLE_BAT(APINT_TYPE_PREFIX, 10009) +HANDLE_BAT(APINT_TYPE_PREFIX, 10010) +HANDLE_BAT(APINT_TYPE_PREFIX, 10011) +HANDLE_BAT(APINT_TYPE_PREFIX, 10012) +HANDLE_BAT(APINT_TYPE_PREFIX, 10013) +HANDLE_BAT(APINT_TYPE_PREFIX, 10014) +HANDLE_BAT(APINT_TYPE_PREFIX, 10015) +HANDLE_BAT(APINT_TYPE_PREFIX, 10016) +HANDLE_BAT(APINT_TYPE_PREFIX, 10017) +HANDLE_BAT(APINT_TYPE_PREFIX, 10018) +HANDLE_BAT(APINT_TYPE_PREFIX, 10019) +HANDLE_BAT(APINT_TYPE_PREFIX, 10020) +HANDLE_BAT(APINT_TYPE_PREFIX, 10021) +HANDLE_BAT(APINT_TYPE_PREFIX, 10022) +HANDLE_BAT(APINT_TYPE_PREFIX, 10023) +HANDLE_BAT(APINT_TYPE_PREFIX, 10024) +HANDLE_BAT(APINT_TYPE_PREFIX, 10025) +HANDLE_BAT(APINT_TYPE_PREFIX, 10026) +HANDLE_BAT(APINT_TYPE_PREFIX, 10027) +HANDLE_BAT(APINT_TYPE_PREFIX, 10028) +HANDLE_BAT(APINT_TYPE_PREFIX, 10029) +HANDLE_BAT(APINT_TYPE_PREFIX, 10030) +HANDLE_BAT(APINT_TYPE_PREFIX, 10031) +HANDLE_BAT(APINT_TYPE_PREFIX, 10032) +HANDLE_BAT(APINT_TYPE_PREFIX, 10033) +HANDLE_BAT(APINT_TYPE_PREFIX, 10034) +HANDLE_BAT(APINT_TYPE_PREFIX, 10035) +HANDLE_BAT(APINT_TYPE_PREFIX, 10036) +HANDLE_BAT(APINT_TYPE_PREFIX, 10037) +HANDLE_BAT(APINT_TYPE_PREFIX, 10038) +HANDLE_BAT(APINT_TYPE_PREFIX, 10039) +HANDLE_BAT(APINT_TYPE_PREFIX, 10040) +HANDLE_BAT(APINT_TYPE_PREFIX, 10041) +HANDLE_BAT(APINT_TYPE_PREFIX, 10042) +HANDLE_BAT(APINT_TYPE_PREFIX, 10043) +HANDLE_BAT(APINT_TYPE_PREFIX, 10044) +HANDLE_BAT(APINT_TYPE_PREFIX, 10045) +HANDLE_BAT(APINT_TYPE_PREFIX, 10046) +HANDLE_BAT(APINT_TYPE_PREFIX, 10047) +HANDLE_BAT(APINT_TYPE_PREFIX, 10048) +HANDLE_BAT(APINT_TYPE_PREFIX, 10049) +HANDLE_BAT(APINT_TYPE_PREFIX, 10050) +HANDLE_BAT(APINT_TYPE_PREFIX, 10051) +HANDLE_BAT(APINT_TYPE_PREFIX, 10052) +HANDLE_BAT(APINT_TYPE_PREFIX, 10053) +HANDLE_BAT(APINT_TYPE_PREFIX, 10054) +HANDLE_BAT(APINT_TYPE_PREFIX, 10055) +HANDLE_BAT(APINT_TYPE_PREFIX, 10056) +HANDLE_BAT(APINT_TYPE_PREFIX, 10057) +HANDLE_BAT(APINT_TYPE_PREFIX, 10058) +HANDLE_BAT(APINT_TYPE_PREFIX, 10059) +HANDLE_BAT(APINT_TYPE_PREFIX, 10060) +HANDLE_BAT(APINT_TYPE_PREFIX, 10061) +HANDLE_BAT(APINT_TYPE_PREFIX, 10062) +HANDLE_BAT(APINT_TYPE_PREFIX, 10063) +HANDLE_BAT(APINT_TYPE_PREFIX, 10064) +HANDLE_BAT(APINT_TYPE_PREFIX, 10065) +HANDLE_BAT(APINT_TYPE_PREFIX, 10066) +HANDLE_BAT(APINT_TYPE_PREFIX, 10067) +HANDLE_BAT(APINT_TYPE_PREFIX, 10068) +HANDLE_BAT(APINT_TYPE_PREFIX, 10069) +HANDLE_BAT(APINT_TYPE_PREFIX, 10070) +HANDLE_BAT(APINT_TYPE_PREFIX, 10071) +HANDLE_BAT(APINT_TYPE_PREFIX, 10072) +HANDLE_BAT(APINT_TYPE_PREFIX, 10073) +HANDLE_BAT(APINT_TYPE_PREFIX, 10074) +HANDLE_BAT(APINT_TYPE_PREFIX, 10075) +HANDLE_BAT(APINT_TYPE_PREFIX, 10076) +HANDLE_BAT(APINT_TYPE_PREFIX, 10077) +HANDLE_BAT(APINT_TYPE_PREFIX, 10078) +HANDLE_BAT(APINT_TYPE_PREFIX, 10079) +HANDLE_BAT(APINT_TYPE_PREFIX, 10080) +HANDLE_BAT(APINT_TYPE_PREFIX, 10081) +HANDLE_BAT(APINT_TYPE_PREFIX, 10082) +HANDLE_BAT(APINT_TYPE_PREFIX, 10083) +HANDLE_BAT(APINT_TYPE_PREFIX, 10084) +HANDLE_BAT(APINT_TYPE_PREFIX, 10085) +HANDLE_BAT(APINT_TYPE_PREFIX, 10086) +HANDLE_BAT(APINT_TYPE_PREFIX, 10087) +HANDLE_BAT(APINT_TYPE_PREFIX, 10088) +HANDLE_BAT(APINT_TYPE_PREFIX, 10089) +HANDLE_BAT(APINT_TYPE_PREFIX, 10090) +HANDLE_BAT(APINT_TYPE_PREFIX, 10091) +HANDLE_BAT(APINT_TYPE_PREFIX, 10092) +HANDLE_BAT(APINT_TYPE_PREFIX, 10093) +HANDLE_BAT(APINT_TYPE_PREFIX, 10094) +HANDLE_BAT(APINT_TYPE_PREFIX, 10095) +HANDLE_BAT(APINT_TYPE_PREFIX, 10096) +HANDLE_BAT(APINT_TYPE_PREFIX, 10097) +HANDLE_BAT(APINT_TYPE_PREFIX, 10098) +HANDLE_BAT(APINT_TYPE_PREFIX, 10099) +HANDLE_BAT(APINT_TYPE_PREFIX, 10100) +HANDLE_BAT(APINT_TYPE_PREFIX, 10101) +HANDLE_BAT(APINT_TYPE_PREFIX, 10102) +HANDLE_BAT(APINT_TYPE_PREFIX, 10103) +HANDLE_BAT(APINT_TYPE_PREFIX, 10104) +HANDLE_BAT(APINT_TYPE_PREFIX, 10105) +HANDLE_BAT(APINT_TYPE_PREFIX, 10106) +HANDLE_BAT(APINT_TYPE_PREFIX, 10107) +HANDLE_BAT(APINT_TYPE_PREFIX, 10108) +HANDLE_BAT(APINT_TYPE_PREFIX, 10109) +HANDLE_BAT(APINT_TYPE_PREFIX, 10110) +HANDLE_BAT(APINT_TYPE_PREFIX, 10111) +HANDLE_BAT(APINT_TYPE_PREFIX, 10112) +HANDLE_BAT(APINT_TYPE_PREFIX, 10113) +HANDLE_BAT(APINT_TYPE_PREFIX, 10114) +HANDLE_BAT(APINT_TYPE_PREFIX, 10115) +HANDLE_BAT(APINT_TYPE_PREFIX, 10116) +HANDLE_BAT(APINT_TYPE_PREFIX, 10117) +HANDLE_BAT(APINT_TYPE_PREFIX, 10118) +HANDLE_BAT(APINT_TYPE_PREFIX, 10119) +HANDLE_BAT(APINT_TYPE_PREFIX, 10120) +HANDLE_BAT(APINT_TYPE_PREFIX, 10121) +HANDLE_BAT(APINT_TYPE_PREFIX, 10122) +HANDLE_BAT(APINT_TYPE_PREFIX, 10123) +HANDLE_BAT(APINT_TYPE_PREFIX, 10124) +HANDLE_BAT(APINT_TYPE_PREFIX, 10125) +HANDLE_BAT(APINT_TYPE_PREFIX, 10126) +HANDLE_BAT(APINT_TYPE_PREFIX, 10127) +HANDLE_BAT(APINT_TYPE_PREFIX, 10128) +HANDLE_BAT(APINT_TYPE_PREFIX, 10129) +HANDLE_BAT(APINT_TYPE_PREFIX, 10130) +HANDLE_BAT(APINT_TYPE_PREFIX, 10131) +HANDLE_BAT(APINT_TYPE_PREFIX, 10132) +HANDLE_BAT(APINT_TYPE_PREFIX, 10133) +HANDLE_BAT(APINT_TYPE_PREFIX, 10134) +HANDLE_BAT(APINT_TYPE_PREFIX, 10135) +HANDLE_BAT(APINT_TYPE_PREFIX, 10136) +HANDLE_BAT(APINT_TYPE_PREFIX, 10137) +HANDLE_BAT(APINT_TYPE_PREFIX, 10138) +HANDLE_BAT(APINT_TYPE_PREFIX, 10139) +HANDLE_BAT(APINT_TYPE_PREFIX, 10140) +HANDLE_BAT(APINT_TYPE_PREFIX, 10141) +HANDLE_BAT(APINT_TYPE_PREFIX, 10142) +HANDLE_BAT(APINT_TYPE_PREFIX, 10143) +HANDLE_BAT(APINT_TYPE_PREFIX, 10144) +HANDLE_BAT(APINT_TYPE_PREFIX, 10145) +HANDLE_BAT(APINT_TYPE_PREFIX, 10146) +HANDLE_BAT(APINT_TYPE_PREFIX, 10147) +HANDLE_BAT(APINT_TYPE_PREFIX, 10148) +HANDLE_BAT(APINT_TYPE_PREFIX, 10149) +HANDLE_BAT(APINT_TYPE_PREFIX, 10150) +HANDLE_BAT(APINT_TYPE_PREFIX, 10151) +HANDLE_BAT(APINT_TYPE_PREFIX, 10152) +HANDLE_BAT(APINT_TYPE_PREFIX, 10153) +HANDLE_BAT(APINT_TYPE_PREFIX, 10154) +HANDLE_BAT(APINT_TYPE_PREFIX, 10155) +HANDLE_BAT(APINT_TYPE_PREFIX, 10156) +HANDLE_BAT(APINT_TYPE_PREFIX, 10157) +HANDLE_BAT(APINT_TYPE_PREFIX, 10158) +HANDLE_BAT(APINT_TYPE_PREFIX, 10159) +HANDLE_BAT(APINT_TYPE_PREFIX, 10160) +HANDLE_BAT(APINT_TYPE_PREFIX, 10161) +HANDLE_BAT(APINT_TYPE_PREFIX, 10162) +HANDLE_BAT(APINT_TYPE_PREFIX, 10163) +HANDLE_BAT(APINT_TYPE_PREFIX, 10164) +HANDLE_BAT(APINT_TYPE_PREFIX, 10165) +HANDLE_BAT(APINT_TYPE_PREFIX, 10166) +HANDLE_BAT(APINT_TYPE_PREFIX, 10167) +HANDLE_BAT(APINT_TYPE_PREFIX, 10168) +HANDLE_BAT(APINT_TYPE_PREFIX, 10169) +HANDLE_BAT(APINT_TYPE_PREFIX, 10170) +HANDLE_BAT(APINT_TYPE_PREFIX, 10171) +HANDLE_BAT(APINT_TYPE_PREFIX, 10172) +HANDLE_BAT(APINT_TYPE_PREFIX, 10173) +HANDLE_BAT(APINT_TYPE_PREFIX, 10174) +HANDLE_BAT(APINT_TYPE_PREFIX, 10175) +HANDLE_BAT(APINT_TYPE_PREFIX, 10176) +HANDLE_BAT(APINT_TYPE_PREFIX, 10177) +HANDLE_BAT(APINT_TYPE_PREFIX, 10178) +HANDLE_BAT(APINT_TYPE_PREFIX, 10179) +HANDLE_BAT(APINT_TYPE_PREFIX, 10180) +HANDLE_BAT(APINT_TYPE_PREFIX, 10181) +HANDLE_BAT(APINT_TYPE_PREFIX, 10182) +HANDLE_BAT(APINT_TYPE_PREFIX, 10183) +HANDLE_BAT(APINT_TYPE_PREFIX, 10184) +HANDLE_BAT(APINT_TYPE_PREFIX, 10185) +HANDLE_BAT(APINT_TYPE_PREFIX, 10186) +HANDLE_BAT(APINT_TYPE_PREFIX, 10187) +HANDLE_BAT(APINT_TYPE_PREFIX, 10188) +HANDLE_BAT(APINT_TYPE_PREFIX, 10189) +HANDLE_BAT(APINT_TYPE_PREFIX, 10190) +HANDLE_BAT(APINT_TYPE_PREFIX, 10191) +HANDLE_BAT(APINT_TYPE_PREFIX, 10192) +HANDLE_BAT(APINT_TYPE_PREFIX, 10193) +HANDLE_BAT(APINT_TYPE_PREFIX, 10194) +HANDLE_BAT(APINT_TYPE_PREFIX, 10195) +HANDLE_BAT(APINT_TYPE_PREFIX, 10196) +HANDLE_BAT(APINT_TYPE_PREFIX, 10197) +HANDLE_BAT(APINT_TYPE_PREFIX, 10198) +HANDLE_BAT(APINT_TYPE_PREFIX, 10199) +HANDLE_BAT(APINT_TYPE_PREFIX, 10200) +HANDLE_BAT(APINT_TYPE_PREFIX, 10201) +HANDLE_BAT(APINT_TYPE_PREFIX, 10202) +HANDLE_BAT(APINT_TYPE_PREFIX, 10203) +HANDLE_BAT(APINT_TYPE_PREFIX, 10204) +HANDLE_BAT(APINT_TYPE_PREFIX, 10205) +HANDLE_BAT(APINT_TYPE_PREFIX, 10206) +HANDLE_BAT(APINT_TYPE_PREFIX, 10207) +HANDLE_BAT(APINT_TYPE_PREFIX, 10208) +HANDLE_BAT(APINT_TYPE_PREFIX, 10209) +HANDLE_BAT(APINT_TYPE_PREFIX, 10210) +HANDLE_BAT(APINT_TYPE_PREFIX, 10211) +HANDLE_BAT(APINT_TYPE_PREFIX, 10212) +HANDLE_BAT(APINT_TYPE_PREFIX, 10213) +HANDLE_BAT(APINT_TYPE_PREFIX, 10214) +HANDLE_BAT(APINT_TYPE_PREFIX, 10215) +HANDLE_BAT(APINT_TYPE_PREFIX, 10216) +HANDLE_BAT(APINT_TYPE_PREFIX, 10217) +HANDLE_BAT(APINT_TYPE_PREFIX, 10218) +HANDLE_BAT(APINT_TYPE_PREFIX, 10219) +HANDLE_BAT(APINT_TYPE_PREFIX, 10220) +HANDLE_BAT(APINT_TYPE_PREFIX, 10221) +HANDLE_BAT(APINT_TYPE_PREFIX, 10222) +HANDLE_BAT(APINT_TYPE_PREFIX, 10223) +HANDLE_BAT(APINT_TYPE_PREFIX, 10224) +HANDLE_BAT(APINT_TYPE_PREFIX, 10225) +HANDLE_BAT(APINT_TYPE_PREFIX, 10226) +HANDLE_BAT(APINT_TYPE_PREFIX, 10227) +HANDLE_BAT(APINT_TYPE_PREFIX, 10228) +HANDLE_BAT(APINT_TYPE_PREFIX, 10229) +HANDLE_BAT(APINT_TYPE_PREFIX, 10230) +HANDLE_BAT(APINT_TYPE_PREFIX, 10231) +HANDLE_BAT(APINT_TYPE_PREFIX, 10232) +HANDLE_BAT(APINT_TYPE_PREFIX, 10233) +HANDLE_BAT(APINT_TYPE_PREFIX, 10234) +HANDLE_BAT(APINT_TYPE_PREFIX, 10235) +HANDLE_BAT(APINT_TYPE_PREFIX, 10236) +HANDLE_BAT(APINT_TYPE_PREFIX, 10237) +HANDLE_BAT(APINT_TYPE_PREFIX, 10238) +HANDLE_BAT(APINT_TYPE_PREFIX, 10239) +HANDLE_BAT(APINT_TYPE_PREFIX, 10240) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 10 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 10241) +HANDLE_BAT(, 10242) +HANDLE_BAT(, 10243) +HANDLE_BAT(, 10244) +HANDLE_BAT(, 10245) +HANDLE_BAT(, 10246) +HANDLE_BAT(, 10247) +HANDLE_BAT(, 10248) +HANDLE_BAT(, 10249) +HANDLE_BAT(, 10250) +HANDLE_BAT(, 10251) +HANDLE_BAT(, 10252) +HANDLE_BAT(, 10253) +HANDLE_BAT(, 10254) +HANDLE_BAT(, 10255) +HANDLE_BAT(, 10256) +HANDLE_BAT(, 10257) +HANDLE_BAT(, 10258) +HANDLE_BAT(, 10259) +HANDLE_BAT(, 10260) +HANDLE_BAT(, 10261) +HANDLE_BAT(, 10262) +HANDLE_BAT(, 10263) +HANDLE_BAT(, 10264) +HANDLE_BAT(, 10265) +HANDLE_BAT(, 10266) +HANDLE_BAT(, 10267) +HANDLE_BAT(, 10268) +HANDLE_BAT(, 10269) +HANDLE_BAT(, 10270) +HANDLE_BAT(, 10271) +HANDLE_BAT(, 10272) +HANDLE_BAT(, 10273) +HANDLE_BAT(, 10274) +HANDLE_BAT(, 10275) +HANDLE_BAT(, 10276) +HANDLE_BAT(, 10277) +HANDLE_BAT(, 10278) +HANDLE_BAT(, 10279) +HANDLE_BAT(, 10280) +HANDLE_BAT(, 10281) +HANDLE_BAT(, 10282) +HANDLE_BAT(, 10283) +HANDLE_BAT(, 10284) +HANDLE_BAT(, 10285) +HANDLE_BAT(, 10286) +HANDLE_BAT(, 10287) +HANDLE_BAT(, 10288) +HANDLE_BAT(, 10289) +HANDLE_BAT(, 10290) +HANDLE_BAT(, 10291) +HANDLE_BAT(, 10292) +HANDLE_BAT(, 10293) +HANDLE_BAT(, 10294) +HANDLE_BAT(, 10295) +HANDLE_BAT(, 10296) +HANDLE_BAT(, 10297) +HANDLE_BAT(, 10298) +HANDLE_BAT(, 10299) +HANDLE_BAT(, 10300) +HANDLE_BAT(, 10301) +HANDLE_BAT(, 10302) +HANDLE_BAT(, 10303) +HANDLE_BAT(, 10304) +HANDLE_BAT(, 10305) +HANDLE_BAT(, 10306) +HANDLE_BAT(, 10307) +HANDLE_BAT(, 10308) +HANDLE_BAT(, 10309) +HANDLE_BAT(, 10310) +HANDLE_BAT(, 10311) +HANDLE_BAT(, 10312) +HANDLE_BAT(, 10313) +HANDLE_BAT(, 10314) +HANDLE_BAT(, 10315) +HANDLE_BAT(, 10316) +HANDLE_BAT(, 10317) +HANDLE_BAT(, 10318) +HANDLE_BAT(, 10319) +HANDLE_BAT(, 10320) +HANDLE_BAT(, 10321) +HANDLE_BAT(, 10322) +HANDLE_BAT(, 10323) +HANDLE_BAT(, 10324) +HANDLE_BAT(, 10325) +HANDLE_BAT(, 10326) +HANDLE_BAT(, 10327) +HANDLE_BAT(, 10328) +HANDLE_BAT(, 10329) +HANDLE_BAT(, 10330) +HANDLE_BAT(, 10331) +HANDLE_BAT(, 10332) +HANDLE_BAT(, 10333) +HANDLE_BAT(, 10334) +HANDLE_BAT(, 10335) +HANDLE_BAT(, 10336) +HANDLE_BAT(, 10337) +HANDLE_BAT(, 10338) +HANDLE_BAT(, 10339) +HANDLE_BAT(, 10340) +HANDLE_BAT(, 10341) +HANDLE_BAT(, 10342) +HANDLE_BAT(, 10343) +HANDLE_BAT(, 10344) +HANDLE_BAT(, 10345) +HANDLE_BAT(, 10346) +HANDLE_BAT(, 10347) +HANDLE_BAT(, 10348) +HANDLE_BAT(, 10349) +HANDLE_BAT(, 10350) +HANDLE_BAT(, 10351) +HANDLE_BAT(, 10352) +HANDLE_BAT(, 10353) +HANDLE_BAT(, 10354) +HANDLE_BAT(, 10355) +HANDLE_BAT(, 10356) +HANDLE_BAT(, 10357) +HANDLE_BAT(, 10358) +HANDLE_BAT(, 10359) +HANDLE_BAT(, 10360) +HANDLE_BAT(, 10361) +HANDLE_BAT(, 10362) +HANDLE_BAT(, 10363) +HANDLE_BAT(, 10364) +HANDLE_BAT(, 10365) +HANDLE_BAT(, 10366) +HANDLE_BAT(, 10367) +HANDLE_BAT(, 10368) +HANDLE_BAT(, 10369) +HANDLE_BAT(, 10370) +HANDLE_BAT(, 10371) +HANDLE_BAT(, 10372) +HANDLE_BAT(, 10373) +HANDLE_BAT(, 10374) +HANDLE_BAT(, 10375) +HANDLE_BAT(, 10376) +HANDLE_BAT(, 10377) +HANDLE_BAT(, 10378) +HANDLE_BAT(, 10379) +HANDLE_BAT(, 10380) +HANDLE_BAT(, 10381) +HANDLE_BAT(, 10382) +HANDLE_BAT(, 10383) +HANDLE_BAT(, 10384) +HANDLE_BAT(, 10385) +HANDLE_BAT(, 10386) +HANDLE_BAT(, 10387) +HANDLE_BAT(, 10388) +HANDLE_BAT(, 10389) +HANDLE_BAT(, 10390) +HANDLE_BAT(, 10391) +HANDLE_BAT(, 10392) +HANDLE_BAT(, 10393) +HANDLE_BAT(, 10394) +HANDLE_BAT(, 10395) +HANDLE_BAT(, 10396) +HANDLE_BAT(, 10397) +HANDLE_BAT(, 10398) +HANDLE_BAT(, 10399) +HANDLE_BAT(, 10400) +HANDLE_BAT(, 10401) +HANDLE_BAT(, 10402) +HANDLE_BAT(, 10403) +HANDLE_BAT(, 10404) +HANDLE_BAT(, 10405) +HANDLE_BAT(, 10406) +HANDLE_BAT(, 10407) +HANDLE_BAT(, 10408) +HANDLE_BAT(, 10409) +HANDLE_BAT(, 10410) +HANDLE_BAT(, 10411) +HANDLE_BAT(, 10412) +HANDLE_BAT(, 10413) +HANDLE_BAT(, 10414) +HANDLE_BAT(, 10415) +HANDLE_BAT(, 10416) +HANDLE_BAT(, 10417) +HANDLE_BAT(, 10418) +HANDLE_BAT(, 10419) +HANDLE_BAT(, 10420) +HANDLE_BAT(, 10421) +HANDLE_BAT(, 10422) +HANDLE_BAT(, 10423) +HANDLE_BAT(, 10424) +HANDLE_BAT(, 10425) +HANDLE_BAT(, 10426) +HANDLE_BAT(, 10427) +HANDLE_BAT(, 10428) +HANDLE_BAT(, 10429) +HANDLE_BAT(, 10430) +HANDLE_BAT(, 10431) +HANDLE_BAT(, 10432) +HANDLE_BAT(, 10433) +HANDLE_BAT(, 10434) +HANDLE_BAT(, 10435) +HANDLE_BAT(, 10436) +HANDLE_BAT(, 10437) +HANDLE_BAT(, 10438) +HANDLE_BAT(, 10439) +HANDLE_BAT(, 10440) +HANDLE_BAT(, 10441) +HANDLE_BAT(, 10442) +HANDLE_BAT(, 10443) +HANDLE_BAT(, 10444) +HANDLE_BAT(, 10445) +HANDLE_BAT(, 10446) +HANDLE_BAT(, 10447) +HANDLE_BAT(, 10448) +HANDLE_BAT(, 10449) +HANDLE_BAT(, 10450) +HANDLE_BAT(, 10451) +HANDLE_BAT(, 10452) +HANDLE_BAT(, 10453) +HANDLE_BAT(, 10454) +HANDLE_BAT(, 10455) +HANDLE_BAT(, 10456) +HANDLE_BAT(, 10457) +HANDLE_BAT(, 10458) +HANDLE_BAT(, 10459) +HANDLE_BAT(, 10460) +HANDLE_BAT(, 10461) +HANDLE_BAT(, 10462) +HANDLE_BAT(, 10463) +HANDLE_BAT(, 10464) +HANDLE_BAT(, 10465) +HANDLE_BAT(, 10466) +HANDLE_BAT(, 10467) +HANDLE_BAT(, 10468) +HANDLE_BAT(, 10469) +HANDLE_BAT(, 10470) +HANDLE_BAT(, 10471) +HANDLE_BAT(, 10472) +HANDLE_BAT(, 10473) +HANDLE_BAT(, 10474) +HANDLE_BAT(, 10475) +HANDLE_BAT(, 10476) +HANDLE_BAT(, 10477) +HANDLE_BAT(, 10478) +HANDLE_BAT(, 10479) +HANDLE_BAT(, 10480) +HANDLE_BAT(, 10481) +HANDLE_BAT(, 10482) +HANDLE_BAT(, 10483) +HANDLE_BAT(, 10484) +HANDLE_BAT(, 10485) +HANDLE_BAT(, 10486) +HANDLE_BAT(, 10487) +HANDLE_BAT(, 10488) +HANDLE_BAT(, 10489) +HANDLE_BAT(, 10490) +HANDLE_BAT(, 10491) +HANDLE_BAT(, 10492) +HANDLE_BAT(, 10493) +HANDLE_BAT(, 10494) +HANDLE_BAT(, 10495) +HANDLE_BAT(, 10496) +HANDLE_BAT(, 10497) +HANDLE_BAT(, 10498) +HANDLE_BAT(, 10499) +HANDLE_BAT(, 10500) +HANDLE_BAT(, 10501) +HANDLE_BAT(, 10502) +HANDLE_BAT(, 10503) +HANDLE_BAT(, 10504) +HANDLE_BAT(, 10505) +HANDLE_BAT(, 10506) +HANDLE_BAT(, 10507) +HANDLE_BAT(, 10508) +HANDLE_BAT(, 10509) +HANDLE_BAT(, 10510) +HANDLE_BAT(, 10511) +HANDLE_BAT(, 10512) +HANDLE_BAT(, 10513) +HANDLE_BAT(, 10514) +HANDLE_BAT(, 10515) +HANDLE_BAT(, 10516) +HANDLE_BAT(, 10517) +HANDLE_BAT(, 10518) +HANDLE_BAT(, 10519) +HANDLE_BAT(, 10520) +HANDLE_BAT(, 10521) +HANDLE_BAT(, 10522) +HANDLE_BAT(, 10523) +HANDLE_BAT(, 10524) +HANDLE_BAT(, 10525) +HANDLE_BAT(, 10526) +HANDLE_BAT(, 10527) +HANDLE_BAT(, 10528) +HANDLE_BAT(, 10529) +HANDLE_BAT(, 10530) +HANDLE_BAT(, 10531) +HANDLE_BAT(, 10532) +HANDLE_BAT(, 10533) +HANDLE_BAT(, 10534) +HANDLE_BAT(, 10535) +HANDLE_BAT(, 10536) +HANDLE_BAT(, 10537) +HANDLE_BAT(, 10538) +HANDLE_BAT(, 10539) +HANDLE_BAT(, 10540) +HANDLE_BAT(, 10541) +HANDLE_BAT(, 10542) +HANDLE_BAT(, 10543) +HANDLE_BAT(, 10544) +HANDLE_BAT(, 10545) +HANDLE_BAT(, 10546) +HANDLE_BAT(, 10547) +HANDLE_BAT(, 10548) +HANDLE_BAT(, 10549) +HANDLE_BAT(, 10550) +HANDLE_BAT(, 10551) +HANDLE_BAT(, 10552) +HANDLE_BAT(, 10553) +HANDLE_BAT(, 10554) +HANDLE_BAT(, 10555) +HANDLE_BAT(, 10556) +HANDLE_BAT(, 10557) +HANDLE_BAT(, 10558) +HANDLE_BAT(, 10559) +HANDLE_BAT(, 10560) +HANDLE_BAT(, 10561) +HANDLE_BAT(, 10562) +HANDLE_BAT(, 10563) +HANDLE_BAT(, 10564) +HANDLE_BAT(, 10565) +HANDLE_BAT(, 10566) +HANDLE_BAT(, 10567) +HANDLE_BAT(, 10568) +HANDLE_BAT(, 10569) +HANDLE_BAT(, 10570) +HANDLE_BAT(, 10571) +HANDLE_BAT(, 10572) +HANDLE_BAT(, 10573) +HANDLE_BAT(, 10574) +HANDLE_BAT(, 10575) +HANDLE_BAT(, 10576) +HANDLE_BAT(, 10577) +HANDLE_BAT(, 10578) +HANDLE_BAT(, 10579) +HANDLE_BAT(, 10580) +HANDLE_BAT(, 10581) +HANDLE_BAT(, 10582) +HANDLE_BAT(, 10583) +HANDLE_BAT(, 10584) +HANDLE_BAT(, 10585) +HANDLE_BAT(, 10586) +HANDLE_BAT(, 10587) +HANDLE_BAT(, 10588) +HANDLE_BAT(, 10589) +HANDLE_BAT(, 10590) +HANDLE_BAT(, 10591) +HANDLE_BAT(, 10592) +HANDLE_BAT(, 10593) +HANDLE_BAT(, 10594) +HANDLE_BAT(, 10595) +HANDLE_BAT(, 10596) +HANDLE_BAT(, 10597) +HANDLE_BAT(, 10598) +HANDLE_BAT(, 10599) +HANDLE_BAT(, 10600) +HANDLE_BAT(, 10601) +HANDLE_BAT(, 10602) +HANDLE_BAT(, 10603) +HANDLE_BAT(, 10604) +HANDLE_BAT(, 10605) +HANDLE_BAT(, 10606) +HANDLE_BAT(, 10607) +HANDLE_BAT(, 10608) +HANDLE_BAT(, 10609) +HANDLE_BAT(, 10610) +HANDLE_BAT(, 10611) +HANDLE_BAT(, 10612) +HANDLE_BAT(, 10613) +HANDLE_BAT(, 10614) +HANDLE_BAT(, 10615) +HANDLE_BAT(, 10616) +HANDLE_BAT(, 10617) +HANDLE_BAT(, 10618) +HANDLE_BAT(, 10619) +HANDLE_BAT(, 10620) +HANDLE_BAT(, 10621) +HANDLE_BAT(, 10622) +HANDLE_BAT(, 10623) +HANDLE_BAT(, 10624) +HANDLE_BAT(, 10625) +HANDLE_BAT(, 10626) +HANDLE_BAT(, 10627) +HANDLE_BAT(, 10628) +HANDLE_BAT(, 10629) +HANDLE_BAT(, 10630) +HANDLE_BAT(, 10631) +HANDLE_BAT(, 10632) +HANDLE_BAT(, 10633) +HANDLE_BAT(, 10634) +HANDLE_BAT(, 10635) +HANDLE_BAT(, 10636) +HANDLE_BAT(, 10637) +HANDLE_BAT(, 10638) +HANDLE_BAT(, 10639) +HANDLE_BAT(, 10640) +HANDLE_BAT(, 10641) +HANDLE_BAT(, 10642) +HANDLE_BAT(, 10643) +HANDLE_BAT(, 10644) +HANDLE_BAT(, 10645) +HANDLE_BAT(, 10646) +HANDLE_BAT(, 10647) +HANDLE_BAT(, 10648) +HANDLE_BAT(, 10649) +HANDLE_BAT(, 10650) +HANDLE_BAT(, 10651) +HANDLE_BAT(, 10652) +HANDLE_BAT(, 10653) +HANDLE_BAT(, 10654) +HANDLE_BAT(, 10655) +HANDLE_BAT(, 10656) +HANDLE_BAT(, 10657) +HANDLE_BAT(, 10658) +HANDLE_BAT(, 10659) +HANDLE_BAT(, 10660) +HANDLE_BAT(, 10661) +HANDLE_BAT(, 10662) +HANDLE_BAT(, 10663) +HANDLE_BAT(, 10664) +HANDLE_BAT(, 10665) +HANDLE_BAT(, 10666) +HANDLE_BAT(, 10667) +HANDLE_BAT(, 10668) +HANDLE_BAT(, 10669) +HANDLE_BAT(, 10670) +HANDLE_BAT(, 10671) +HANDLE_BAT(, 10672) +HANDLE_BAT(, 10673) +HANDLE_BAT(, 10674) +HANDLE_BAT(, 10675) +HANDLE_BAT(, 10676) +HANDLE_BAT(, 10677) +HANDLE_BAT(, 10678) +HANDLE_BAT(, 10679) +HANDLE_BAT(, 10680) +HANDLE_BAT(, 10681) +HANDLE_BAT(, 10682) +HANDLE_BAT(, 10683) +HANDLE_BAT(, 10684) +HANDLE_BAT(, 10685) +HANDLE_BAT(, 10686) +HANDLE_BAT(, 10687) +HANDLE_BAT(, 10688) +HANDLE_BAT(, 10689) +HANDLE_BAT(, 10690) +HANDLE_BAT(, 10691) +HANDLE_BAT(, 10692) +HANDLE_BAT(, 10693) +HANDLE_BAT(, 10694) +HANDLE_BAT(, 10695) +HANDLE_BAT(, 10696) +HANDLE_BAT(, 10697) +HANDLE_BAT(, 10698) +HANDLE_BAT(, 10699) +HANDLE_BAT(, 10700) +HANDLE_BAT(, 10701) +HANDLE_BAT(, 10702) +HANDLE_BAT(, 10703) +HANDLE_BAT(, 10704) +HANDLE_BAT(, 10705) +HANDLE_BAT(, 10706) +HANDLE_BAT(, 10707) +HANDLE_BAT(, 10708) +HANDLE_BAT(, 10709) +HANDLE_BAT(, 10710) +HANDLE_BAT(, 10711) +HANDLE_BAT(, 10712) +HANDLE_BAT(, 10713) +HANDLE_BAT(, 10714) +HANDLE_BAT(, 10715) +HANDLE_BAT(, 10716) +HANDLE_BAT(, 10717) +HANDLE_BAT(, 10718) +HANDLE_BAT(, 10719) +HANDLE_BAT(, 10720) +HANDLE_BAT(, 10721) +HANDLE_BAT(, 10722) +HANDLE_BAT(, 10723) +HANDLE_BAT(, 10724) +HANDLE_BAT(, 10725) +HANDLE_BAT(, 10726) +HANDLE_BAT(, 10727) +HANDLE_BAT(, 10728) +HANDLE_BAT(, 10729) +HANDLE_BAT(, 10730) +HANDLE_BAT(, 10731) +HANDLE_BAT(, 10732) +HANDLE_BAT(, 10733) +HANDLE_BAT(, 10734) +HANDLE_BAT(, 10735) +HANDLE_BAT(, 10736) +HANDLE_BAT(, 10737) +HANDLE_BAT(, 10738) +HANDLE_BAT(, 10739) +HANDLE_BAT(, 10740) +HANDLE_BAT(, 10741) +HANDLE_BAT(, 10742) +HANDLE_BAT(, 10743) +HANDLE_BAT(, 10744) +HANDLE_BAT(, 10745) +HANDLE_BAT(, 10746) +HANDLE_BAT(, 10747) +HANDLE_BAT(, 10748) +HANDLE_BAT(, 10749) +HANDLE_BAT(, 10750) +HANDLE_BAT(, 10751) +HANDLE_BAT(, 10752) +HANDLE_BAT(, 10753) +HANDLE_BAT(, 10754) +HANDLE_BAT(, 10755) +HANDLE_BAT(, 10756) +HANDLE_BAT(, 10757) +HANDLE_BAT(, 10758) +HANDLE_BAT(, 10759) +HANDLE_BAT(, 10760) +HANDLE_BAT(, 10761) +HANDLE_BAT(, 10762) +HANDLE_BAT(, 10763) +HANDLE_BAT(, 10764) +HANDLE_BAT(, 10765) +HANDLE_BAT(, 10766) +HANDLE_BAT(, 10767) +HANDLE_BAT(, 10768) +HANDLE_BAT(, 10769) +HANDLE_BAT(, 10770) +HANDLE_BAT(, 10771) +HANDLE_BAT(, 10772) +HANDLE_BAT(, 10773) +HANDLE_BAT(, 10774) +HANDLE_BAT(, 10775) +HANDLE_BAT(, 10776) +HANDLE_BAT(, 10777) +HANDLE_BAT(, 10778) +HANDLE_BAT(, 10779) +HANDLE_BAT(, 10780) +HANDLE_BAT(, 10781) +HANDLE_BAT(, 10782) +HANDLE_BAT(, 10783) +HANDLE_BAT(, 10784) +HANDLE_BAT(, 10785) +HANDLE_BAT(, 10786) +HANDLE_BAT(, 10787) +HANDLE_BAT(, 10788) +HANDLE_BAT(, 10789) +HANDLE_BAT(, 10790) +HANDLE_BAT(, 10791) +HANDLE_BAT(, 10792) +HANDLE_BAT(, 10793) +HANDLE_BAT(, 10794) +HANDLE_BAT(, 10795) +HANDLE_BAT(, 10796) +HANDLE_BAT(, 10797) +HANDLE_BAT(, 10798) +HANDLE_BAT(, 10799) +HANDLE_BAT(, 10800) +HANDLE_BAT(, 10801) +HANDLE_BAT(, 10802) +HANDLE_BAT(, 10803) +HANDLE_BAT(, 10804) +HANDLE_BAT(, 10805) +HANDLE_BAT(, 10806) +HANDLE_BAT(, 10807) +HANDLE_BAT(, 10808) +HANDLE_BAT(, 10809) +HANDLE_BAT(, 10810) +HANDLE_BAT(, 10811) +HANDLE_BAT(, 10812) +HANDLE_BAT(, 10813) +HANDLE_BAT(, 10814) +HANDLE_BAT(, 10815) +HANDLE_BAT(, 10816) +HANDLE_BAT(, 10817) +HANDLE_BAT(, 10818) +HANDLE_BAT(, 10819) +HANDLE_BAT(, 10820) +HANDLE_BAT(, 10821) +HANDLE_BAT(, 10822) +HANDLE_BAT(, 10823) +HANDLE_BAT(, 10824) +HANDLE_BAT(, 10825) +HANDLE_BAT(, 10826) +HANDLE_BAT(, 10827) +HANDLE_BAT(, 10828) +HANDLE_BAT(, 10829) +HANDLE_BAT(, 10830) +HANDLE_BAT(, 10831) +HANDLE_BAT(, 10832) +HANDLE_BAT(, 10833) +HANDLE_BAT(, 10834) +HANDLE_BAT(, 10835) +HANDLE_BAT(, 10836) +HANDLE_BAT(, 10837) +HANDLE_BAT(, 10838) +HANDLE_BAT(, 10839) +HANDLE_BAT(, 10840) +HANDLE_BAT(, 10841) +HANDLE_BAT(, 10842) +HANDLE_BAT(, 10843) +HANDLE_BAT(, 10844) +HANDLE_BAT(, 10845) +HANDLE_BAT(, 10846) +HANDLE_BAT(, 10847) +HANDLE_BAT(, 10848) +HANDLE_BAT(, 10849) +HANDLE_BAT(, 10850) +HANDLE_BAT(, 10851) +HANDLE_BAT(, 10852) +HANDLE_BAT(, 10853) +HANDLE_BAT(, 10854) +HANDLE_BAT(, 10855) +HANDLE_BAT(, 10856) +HANDLE_BAT(, 10857) +HANDLE_BAT(, 10858) +HANDLE_BAT(, 10859) +HANDLE_BAT(, 10860) +HANDLE_BAT(, 10861) +HANDLE_BAT(, 10862) +HANDLE_BAT(, 10863) +HANDLE_BAT(, 10864) +HANDLE_BAT(, 10865) +HANDLE_BAT(, 10866) +HANDLE_BAT(, 10867) +HANDLE_BAT(, 10868) +HANDLE_BAT(, 10869) +HANDLE_BAT(, 10870) +HANDLE_BAT(, 10871) +HANDLE_BAT(, 10872) +HANDLE_BAT(, 10873) +HANDLE_BAT(, 10874) +HANDLE_BAT(, 10875) +HANDLE_BAT(, 10876) +HANDLE_BAT(, 10877) +HANDLE_BAT(, 10878) +HANDLE_BAT(, 10879) +HANDLE_BAT(, 10880) +HANDLE_BAT(, 10881) +HANDLE_BAT(, 10882) +HANDLE_BAT(, 10883) +HANDLE_BAT(, 10884) +HANDLE_BAT(, 10885) +HANDLE_BAT(, 10886) +HANDLE_BAT(, 10887) +HANDLE_BAT(, 10888) +HANDLE_BAT(, 10889) +HANDLE_BAT(, 10890) +HANDLE_BAT(, 10891) +HANDLE_BAT(, 10892) +HANDLE_BAT(, 10893) +HANDLE_BAT(, 10894) +HANDLE_BAT(, 10895) +HANDLE_BAT(, 10896) +HANDLE_BAT(, 10897) +HANDLE_BAT(, 10898) +HANDLE_BAT(, 10899) +HANDLE_BAT(, 10900) +HANDLE_BAT(, 10901) +HANDLE_BAT(, 10902) +HANDLE_BAT(, 10903) +HANDLE_BAT(, 10904) +HANDLE_BAT(, 10905) +HANDLE_BAT(, 10906) +HANDLE_BAT(, 10907) +HANDLE_BAT(, 10908) +HANDLE_BAT(, 10909) +HANDLE_BAT(, 10910) +HANDLE_BAT(, 10911) +HANDLE_BAT(, 10912) +HANDLE_BAT(, 10913) +HANDLE_BAT(, 10914) +HANDLE_BAT(, 10915) +HANDLE_BAT(, 10916) +HANDLE_BAT(, 10917) +HANDLE_BAT(, 10918) +HANDLE_BAT(, 10919) +HANDLE_BAT(, 10920) +HANDLE_BAT(, 10921) +HANDLE_BAT(, 10922) +HANDLE_BAT(, 10923) +HANDLE_BAT(, 10924) +HANDLE_BAT(, 10925) +HANDLE_BAT(, 10926) +HANDLE_BAT(, 10927) +HANDLE_BAT(, 10928) +HANDLE_BAT(, 10929) +HANDLE_BAT(, 10930) +HANDLE_BAT(, 10931) +HANDLE_BAT(, 10932) +HANDLE_BAT(, 10933) +HANDLE_BAT(, 10934) +HANDLE_BAT(, 10935) +HANDLE_BAT(, 10936) +HANDLE_BAT(, 10937) +HANDLE_BAT(, 10938) +HANDLE_BAT(, 10939) +HANDLE_BAT(, 10940) +HANDLE_BAT(, 10941) +HANDLE_BAT(, 10942) +HANDLE_BAT(, 10943) +HANDLE_BAT(, 10944) +HANDLE_BAT(, 10945) +HANDLE_BAT(, 10946) +HANDLE_BAT(, 10947) +HANDLE_BAT(, 10948) +HANDLE_BAT(, 10949) +HANDLE_BAT(, 10950) +HANDLE_BAT(, 10951) +HANDLE_BAT(, 10952) +HANDLE_BAT(, 10953) +HANDLE_BAT(, 10954) +HANDLE_BAT(, 10955) +HANDLE_BAT(, 10956) +HANDLE_BAT(, 10957) +HANDLE_BAT(, 10958) +HANDLE_BAT(, 10959) +HANDLE_BAT(, 10960) +HANDLE_BAT(, 10961) +HANDLE_BAT(, 10962) +HANDLE_BAT(, 10963) +HANDLE_BAT(, 10964) +HANDLE_BAT(, 10965) +HANDLE_BAT(, 10966) +HANDLE_BAT(, 10967) +HANDLE_BAT(, 10968) +HANDLE_BAT(, 10969) +HANDLE_BAT(, 10970) +HANDLE_BAT(, 10971) +HANDLE_BAT(, 10972) +HANDLE_BAT(, 10973) +HANDLE_BAT(, 10974) +HANDLE_BAT(, 10975) +HANDLE_BAT(, 10976) +HANDLE_BAT(, 10977) +HANDLE_BAT(, 10978) +HANDLE_BAT(, 10979) +HANDLE_BAT(, 10980) +HANDLE_BAT(, 10981) +HANDLE_BAT(, 10982) +HANDLE_BAT(, 10983) +HANDLE_BAT(, 10984) +HANDLE_BAT(, 10985) +HANDLE_BAT(, 10986) +HANDLE_BAT(, 10987) +HANDLE_BAT(, 10988) +HANDLE_BAT(, 10989) +HANDLE_BAT(, 10990) +HANDLE_BAT(, 10991) +HANDLE_BAT(, 10992) +HANDLE_BAT(, 10993) +HANDLE_BAT(, 10994) +HANDLE_BAT(, 10995) +HANDLE_BAT(, 10996) +HANDLE_BAT(, 10997) +HANDLE_BAT(, 10998) +HANDLE_BAT(, 10999) +HANDLE_BAT(, 11000) +HANDLE_BAT(, 11001) +HANDLE_BAT(, 11002) +HANDLE_BAT(, 11003) +HANDLE_BAT(, 11004) +HANDLE_BAT(, 11005) +HANDLE_BAT(, 11006) +HANDLE_BAT(, 11007) +HANDLE_BAT(, 11008) +HANDLE_BAT(, 11009) +HANDLE_BAT(, 11010) +HANDLE_BAT(, 11011) +HANDLE_BAT(, 11012) +HANDLE_BAT(, 11013) +HANDLE_BAT(, 11014) +HANDLE_BAT(, 11015) +HANDLE_BAT(, 11016) +HANDLE_BAT(, 11017) +HANDLE_BAT(, 11018) +HANDLE_BAT(, 11019) +HANDLE_BAT(, 11020) +HANDLE_BAT(, 11021) +HANDLE_BAT(, 11022) +HANDLE_BAT(, 11023) +HANDLE_BAT(, 11024) +HANDLE_BAT(, 11025) +HANDLE_BAT(, 11026) +HANDLE_BAT(, 11027) +HANDLE_BAT(, 11028) +HANDLE_BAT(, 11029) +HANDLE_BAT(, 11030) +HANDLE_BAT(, 11031) +HANDLE_BAT(, 11032) +HANDLE_BAT(, 11033) +HANDLE_BAT(, 11034) +HANDLE_BAT(, 11035) +HANDLE_BAT(, 11036) +HANDLE_BAT(, 11037) +HANDLE_BAT(, 11038) +HANDLE_BAT(, 11039) +HANDLE_BAT(, 11040) +HANDLE_BAT(, 11041) +HANDLE_BAT(, 11042) +HANDLE_BAT(, 11043) +HANDLE_BAT(, 11044) +HANDLE_BAT(, 11045) +HANDLE_BAT(, 11046) +HANDLE_BAT(, 11047) +HANDLE_BAT(, 11048) +HANDLE_BAT(, 11049) +HANDLE_BAT(, 11050) +HANDLE_BAT(, 11051) +HANDLE_BAT(, 11052) +HANDLE_BAT(, 11053) +HANDLE_BAT(, 11054) +HANDLE_BAT(, 11055) +HANDLE_BAT(, 11056) +HANDLE_BAT(, 11057) +HANDLE_BAT(, 11058) +HANDLE_BAT(, 11059) +HANDLE_BAT(, 11060) +HANDLE_BAT(, 11061) +HANDLE_BAT(, 11062) +HANDLE_BAT(, 11063) +HANDLE_BAT(, 11064) +HANDLE_BAT(, 11065) +HANDLE_BAT(, 11066) +HANDLE_BAT(, 11067) +HANDLE_BAT(, 11068) +HANDLE_BAT(, 11069) +HANDLE_BAT(, 11070) +HANDLE_BAT(, 11071) +HANDLE_BAT(, 11072) +HANDLE_BAT(, 11073) +HANDLE_BAT(, 11074) +HANDLE_BAT(, 11075) +HANDLE_BAT(, 11076) +HANDLE_BAT(, 11077) +HANDLE_BAT(, 11078) +HANDLE_BAT(, 11079) +HANDLE_BAT(, 11080) +HANDLE_BAT(, 11081) +HANDLE_BAT(, 11082) +HANDLE_BAT(, 11083) +HANDLE_BAT(, 11084) +HANDLE_BAT(, 11085) +HANDLE_BAT(, 11086) +HANDLE_BAT(, 11087) +HANDLE_BAT(, 11088) +HANDLE_BAT(, 11089) +HANDLE_BAT(, 11090) +HANDLE_BAT(, 11091) +HANDLE_BAT(, 11092) +HANDLE_BAT(, 11093) +HANDLE_BAT(, 11094) +HANDLE_BAT(, 11095) +HANDLE_BAT(, 11096) +HANDLE_BAT(, 11097) +HANDLE_BAT(, 11098) +HANDLE_BAT(, 11099) +HANDLE_BAT(, 11100) +HANDLE_BAT(, 11101) +HANDLE_BAT(, 11102) +HANDLE_BAT(, 11103) +HANDLE_BAT(, 11104) +HANDLE_BAT(, 11105) +HANDLE_BAT(, 11106) +HANDLE_BAT(, 11107) +HANDLE_BAT(, 11108) +HANDLE_BAT(, 11109) +HANDLE_BAT(, 11110) +HANDLE_BAT(, 11111) +HANDLE_BAT(, 11112) +HANDLE_BAT(, 11113) +HANDLE_BAT(, 11114) +HANDLE_BAT(, 11115) +HANDLE_BAT(, 11116) +HANDLE_BAT(, 11117) +HANDLE_BAT(, 11118) +HANDLE_BAT(, 11119) +HANDLE_BAT(, 11120) +HANDLE_BAT(, 11121) +HANDLE_BAT(, 11122) +HANDLE_BAT(, 11123) +HANDLE_BAT(, 11124) +HANDLE_BAT(, 11125) +HANDLE_BAT(, 11126) +HANDLE_BAT(, 11127) +HANDLE_BAT(, 11128) +HANDLE_BAT(, 11129) +HANDLE_BAT(, 11130) +HANDLE_BAT(, 11131) +HANDLE_BAT(, 11132) +HANDLE_BAT(, 11133) +HANDLE_BAT(, 11134) +HANDLE_BAT(, 11135) +HANDLE_BAT(, 11136) +HANDLE_BAT(, 11137) +HANDLE_BAT(, 11138) +HANDLE_BAT(, 11139) +HANDLE_BAT(, 11140) +HANDLE_BAT(, 11141) +HANDLE_BAT(, 11142) +HANDLE_BAT(, 11143) +HANDLE_BAT(, 11144) +HANDLE_BAT(, 11145) +HANDLE_BAT(, 11146) +HANDLE_BAT(, 11147) +HANDLE_BAT(, 11148) +HANDLE_BAT(, 11149) +HANDLE_BAT(, 11150) +HANDLE_BAT(, 11151) +HANDLE_BAT(, 11152) +HANDLE_BAT(, 11153) +HANDLE_BAT(, 11154) +HANDLE_BAT(, 11155) +HANDLE_BAT(, 11156) +HANDLE_BAT(, 11157) +HANDLE_BAT(, 11158) +HANDLE_BAT(, 11159) +HANDLE_BAT(, 11160) +HANDLE_BAT(, 11161) +HANDLE_BAT(, 11162) +HANDLE_BAT(, 11163) +HANDLE_BAT(, 11164) +HANDLE_BAT(, 11165) +HANDLE_BAT(, 11166) +HANDLE_BAT(, 11167) +HANDLE_BAT(, 11168) +HANDLE_BAT(, 11169) +HANDLE_BAT(, 11170) +HANDLE_BAT(, 11171) +HANDLE_BAT(, 11172) +HANDLE_BAT(, 11173) +HANDLE_BAT(, 11174) +HANDLE_BAT(, 11175) +HANDLE_BAT(, 11176) +HANDLE_BAT(, 11177) +HANDLE_BAT(, 11178) +HANDLE_BAT(, 11179) +HANDLE_BAT(, 11180) +HANDLE_BAT(, 11181) +HANDLE_BAT(, 11182) +HANDLE_BAT(, 11183) +HANDLE_BAT(, 11184) +HANDLE_BAT(, 11185) +HANDLE_BAT(, 11186) +HANDLE_BAT(, 11187) +HANDLE_BAT(, 11188) +HANDLE_BAT(, 11189) +HANDLE_BAT(, 11190) +HANDLE_BAT(, 11191) +HANDLE_BAT(, 11192) +HANDLE_BAT(, 11193) +HANDLE_BAT(, 11194) +HANDLE_BAT(, 11195) +HANDLE_BAT(, 11196) +HANDLE_BAT(, 11197) +HANDLE_BAT(, 11198) +HANDLE_BAT(, 11199) +HANDLE_BAT(, 11200) +HANDLE_BAT(, 11201) +HANDLE_BAT(, 11202) +HANDLE_BAT(, 11203) +HANDLE_BAT(, 11204) +HANDLE_BAT(, 11205) +HANDLE_BAT(, 11206) +HANDLE_BAT(, 11207) +HANDLE_BAT(, 11208) +HANDLE_BAT(, 11209) +HANDLE_BAT(, 11210) +HANDLE_BAT(, 11211) +HANDLE_BAT(, 11212) +HANDLE_BAT(, 11213) +HANDLE_BAT(, 11214) +HANDLE_BAT(, 11215) +HANDLE_BAT(, 11216) +HANDLE_BAT(, 11217) +HANDLE_BAT(, 11218) +HANDLE_BAT(, 11219) +HANDLE_BAT(, 11220) +HANDLE_BAT(, 11221) +HANDLE_BAT(, 11222) +HANDLE_BAT(, 11223) +HANDLE_BAT(, 11224) +HANDLE_BAT(, 11225) +HANDLE_BAT(, 11226) +HANDLE_BAT(, 11227) +HANDLE_BAT(, 11228) +HANDLE_BAT(, 11229) +HANDLE_BAT(, 11230) +HANDLE_BAT(, 11231) +HANDLE_BAT(, 11232) +HANDLE_BAT(, 11233) +HANDLE_BAT(, 11234) +HANDLE_BAT(, 11235) +HANDLE_BAT(, 11236) +HANDLE_BAT(, 11237) +HANDLE_BAT(, 11238) +HANDLE_BAT(, 11239) +HANDLE_BAT(, 11240) +HANDLE_BAT(, 11241) +HANDLE_BAT(, 11242) +HANDLE_BAT(, 11243) +HANDLE_BAT(, 11244) +HANDLE_BAT(, 11245) +HANDLE_BAT(, 11246) +HANDLE_BAT(, 11247) +HANDLE_BAT(, 11248) +HANDLE_BAT(, 11249) +HANDLE_BAT(, 11250) +HANDLE_BAT(, 11251) +HANDLE_BAT(, 11252) +HANDLE_BAT(, 11253) +HANDLE_BAT(, 11254) +HANDLE_BAT(, 11255) +HANDLE_BAT(, 11256) +HANDLE_BAT(, 11257) +HANDLE_BAT(, 11258) +HANDLE_BAT(, 11259) +HANDLE_BAT(, 11260) +HANDLE_BAT(, 11261) +HANDLE_BAT(, 11262) +HANDLE_BAT(, 11263) +HANDLE_BAT(, 11264) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 10241) +HANDLE_BAT(APINT_TYPE_PREFIX, 10242) +HANDLE_BAT(APINT_TYPE_PREFIX, 10243) +HANDLE_BAT(APINT_TYPE_PREFIX, 10244) +HANDLE_BAT(APINT_TYPE_PREFIX, 10245) +HANDLE_BAT(APINT_TYPE_PREFIX, 10246) +HANDLE_BAT(APINT_TYPE_PREFIX, 10247) +HANDLE_BAT(APINT_TYPE_PREFIX, 10248) +HANDLE_BAT(APINT_TYPE_PREFIX, 10249) +HANDLE_BAT(APINT_TYPE_PREFIX, 10250) +HANDLE_BAT(APINT_TYPE_PREFIX, 10251) +HANDLE_BAT(APINT_TYPE_PREFIX, 10252) +HANDLE_BAT(APINT_TYPE_PREFIX, 10253) +HANDLE_BAT(APINT_TYPE_PREFIX, 10254) +HANDLE_BAT(APINT_TYPE_PREFIX, 10255) +HANDLE_BAT(APINT_TYPE_PREFIX, 10256) +HANDLE_BAT(APINT_TYPE_PREFIX, 10257) +HANDLE_BAT(APINT_TYPE_PREFIX, 10258) +HANDLE_BAT(APINT_TYPE_PREFIX, 10259) +HANDLE_BAT(APINT_TYPE_PREFIX, 10260) +HANDLE_BAT(APINT_TYPE_PREFIX, 10261) +HANDLE_BAT(APINT_TYPE_PREFIX, 10262) +HANDLE_BAT(APINT_TYPE_PREFIX, 10263) +HANDLE_BAT(APINT_TYPE_PREFIX, 10264) +HANDLE_BAT(APINT_TYPE_PREFIX, 10265) +HANDLE_BAT(APINT_TYPE_PREFIX, 10266) +HANDLE_BAT(APINT_TYPE_PREFIX, 10267) +HANDLE_BAT(APINT_TYPE_PREFIX, 10268) +HANDLE_BAT(APINT_TYPE_PREFIX, 10269) +HANDLE_BAT(APINT_TYPE_PREFIX, 10270) +HANDLE_BAT(APINT_TYPE_PREFIX, 10271) +HANDLE_BAT(APINT_TYPE_PREFIX, 10272) +HANDLE_BAT(APINT_TYPE_PREFIX, 10273) +HANDLE_BAT(APINT_TYPE_PREFIX, 10274) +HANDLE_BAT(APINT_TYPE_PREFIX, 10275) +HANDLE_BAT(APINT_TYPE_PREFIX, 10276) +HANDLE_BAT(APINT_TYPE_PREFIX, 10277) +HANDLE_BAT(APINT_TYPE_PREFIX, 10278) +HANDLE_BAT(APINT_TYPE_PREFIX, 10279) +HANDLE_BAT(APINT_TYPE_PREFIX, 10280) +HANDLE_BAT(APINT_TYPE_PREFIX, 10281) +HANDLE_BAT(APINT_TYPE_PREFIX, 10282) +HANDLE_BAT(APINT_TYPE_PREFIX, 10283) +HANDLE_BAT(APINT_TYPE_PREFIX, 10284) +HANDLE_BAT(APINT_TYPE_PREFIX, 10285) +HANDLE_BAT(APINT_TYPE_PREFIX, 10286) +HANDLE_BAT(APINT_TYPE_PREFIX, 10287) +HANDLE_BAT(APINT_TYPE_PREFIX, 10288) +HANDLE_BAT(APINT_TYPE_PREFIX, 10289) +HANDLE_BAT(APINT_TYPE_PREFIX, 10290) +HANDLE_BAT(APINT_TYPE_PREFIX, 10291) +HANDLE_BAT(APINT_TYPE_PREFIX, 10292) +HANDLE_BAT(APINT_TYPE_PREFIX, 10293) +HANDLE_BAT(APINT_TYPE_PREFIX, 10294) +HANDLE_BAT(APINT_TYPE_PREFIX, 10295) +HANDLE_BAT(APINT_TYPE_PREFIX, 10296) +HANDLE_BAT(APINT_TYPE_PREFIX, 10297) +HANDLE_BAT(APINT_TYPE_PREFIX, 10298) +HANDLE_BAT(APINT_TYPE_PREFIX, 10299) +HANDLE_BAT(APINT_TYPE_PREFIX, 10300) +HANDLE_BAT(APINT_TYPE_PREFIX, 10301) +HANDLE_BAT(APINT_TYPE_PREFIX, 10302) +HANDLE_BAT(APINT_TYPE_PREFIX, 10303) +HANDLE_BAT(APINT_TYPE_PREFIX, 10304) +HANDLE_BAT(APINT_TYPE_PREFIX, 10305) +HANDLE_BAT(APINT_TYPE_PREFIX, 10306) +HANDLE_BAT(APINT_TYPE_PREFIX, 10307) +HANDLE_BAT(APINT_TYPE_PREFIX, 10308) +HANDLE_BAT(APINT_TYPE_PREFIX, 10309) +HANDLE_BAT(APINT_TYPE_PREFIX, 10310) +HANDLE_BAT(APINT_TYPE_PREFIX, 10311) +HANDLE_BAT(APINT_TYPE_PREFIX, 10312) +HANDLE_BAT(APINT_TYPE_PREFIX, 10313) +HANDLE_BAT(APINT_TYPE_PREFIX, 10314) +HANDLE_BAT(APINT_TYPE_PREFIX, 10315) +HANDLE_BAT(APINT_TYPE_PREFIX, 10316) +HANDLE_BAT(APINT_TYPE_PREFIX, 10317) +HANDLE_BAT(APINT_TYPE_PREFIX, 10318) +HANDLE_BAT(APINT_TYPE_PREFIX, 10319) +HANDLE_BAT(APINT_TYPE_PREFIX, 10320) +HANDLE_BAT(APINT_TYPE_PREFIX, 10321) +HANDLE_BAT(APINT_TYPE_PREFIX, 10322) +HANDLE_BAT(APINT_TYPE_PREFIX, 10323) +HANDLE_BAT(APINT_TYPE_PREFIX, 10324) +HANDLE_BAT(APINT_TYPE_PREFIX, 10325) +HANDLE_BAT(APINT_TYPE_PREFIX, 10326) +HANDLE_BAT(APINT_TYPE_PREFIX, 10327) +HANDLE_BAT(APINT_TYPE_PREFIX, 10328) +HANDLE_BAT(APINT_TYPE_PREFIX, 10329) +HANDLE_BAT(APINT_TYPE_PREFIX, 10330) +HANDLE_BAT(APINT_TYPE_PREFIX, 10331) +HANDLE_BAT(APINT_TYPE_PREFIX, 10332) +HANDLE_BAT(APINT_TYPE_PREFIX, 10333) +HANDLE_BAT(APINT_TYPE_PREFIX, 10334) +HANDLE_BAT(APINT_TYPE_PREFIX, 10335) +HANDLE_BAT(APINT_TYPE_PREFIX, 10336) +HANDLE_BAT(APINT_TYPE_PREFIX, 10337) +HANDLE_BAT(APINT_TYPE_PREFIX, 10338) +HANDLE_BAT(APINT_TYPE_PREFIX, 10339) +HANDLE_BAT(APINT_TYPE_PREFIX, 10340) +HANDLE_BAT(APINT_TYPE_PREFIX, 10341) +HANDLE_BAT(APINT_TYPE_PREFIX, 10342) +HANDLE_BAT(APINT_TYPE_PREFIX, 10343) +HANDLE_BAT(APINT_TYPE_PREFIX, 10344) +HANDLE_BAT(APINT_TYPE_PREFIX, 10345) +HANDLE_BAT(APINT_TYPE_PREFIX, 10346) +HANDLE_BAT(APINT_TYPE_PREFIX, 10347) +HANDLE_BAT(APINT_TYPE_PREFIX, 10348) +HANDLE_BAT(APINT_TYPE_PREFIX, 10349) +HANDLE_BAT(APINT_TYPE_PREFIX, 10350) +HANDLE_BAT(APINT_TYPE_PREFIX, 10351) +HANDLE_BAT(APINT_TYPE_PREFIX, 10352) +HANDLE_BAT(APINT_TYPE_PREFIX, 10353) +HANDLE_BAT(APINT_TYPE_PREFIX, 10354) +HANDLE_BAT(APINT_TYPE_PREFIX, 10355) +HANDLE_BAT(APINT_TYPE_PREFIX, 10356) +HANDLE_BAT(APINT_TYPE_PREFIX, 10357) +HANDLE_BAT(APINT_TYPE_PREFIX, 10358) +HANDLE_BAT(APINT_TYPE_PREFIX, 10359) +HANDLE_BAT(APINT_TYPE_PREFIX, 10360) +HANDLE_BAT(APINT_TYPE_PREFIX, 10361) +HANDLE_BAT(APINT_TYPE_PREFIX, 10362) +HANDLE_BAT(APINT_TYPE_PREFIX, 10363) +HANDLE_BAT(APINT_TYPE_PREFIX, 10364) +HANDLE_BAT(APINT_TYPE_PREFIX, 10365) +HANDLE_BAT(APINT_TYPE_PREFIX, 10366) +HANDLE_BAT(APINT_TYPE_PREFIX, 10367) +HANDLE_BAT(APINT_TYPE_PREFIX, 10368) +HANDLE_BAT(APINT_TYPE_PREFIX, 10369) +HANDLE_BAT(APINT_TYPE_PREFIX, 10370) +HANDLE_BAT(APINT_TYPE_PREFIX, 10371) +HANDLE_BAT(APINT_TYPE_PREFIX, 10372) +HANDLE_BAT(APINT_TYPE_PREFIX, 10373) +HANDLE_BAT(APINT_TYPE_PREFIX, 10374) +HANDLE_BAT(APINT_TYPE_PREFIX, 10375) +HANDLE_BAT(APINT_TYPE_PREFIX, 10376) +HANDLE_BAT(APINT_TYPE_PREFIX, 10377) +HANDLE_BAT(APINT_TYPE_PREFIX, 10378) +HANDLE_BAT(APINT_TYPE_PREFIX, 10379) +HANDLE_BAT(APINT_TYPE_PREFIX, 10380) +HANDLE_BAT(APINT_TYPE_PREFIX, 10381) +HANDLE_BAT(APINT_TYPE_PREFIX, 10382) +HANDLE_BAT(APINT_TYPE_PREFIX, 10383) +HANDLE_BAT(APINT_TYPE_PREFIX, 10384) +HANDLE_BAT(APINT_TYPE_PREFIX, 10385) +HANDLE_BAT(APINT_TYPE_PREFIX, 10386) +HANDLE_BAT(APINT_TYPE_PREFIX, 10387) +HANDLE_BAT(APINT_TYPE_PREFIX, 10388) +HANDLE_BAT(APINT_TYPE_PREFIX, 10389) +HANDLE_BAT(APINT_TYPE_PREFIX, 10390) +HANDLE_BAT(APINT_TYPE_PREFIX, 10391) +HANDLE_BAT(APINT_TYPE_PREFIX, 10392) +HANDLE_BAT(APINT_TYPE_PREFIX, 10393) +HANDLE_BAT(APINT_TYPE_PREFIX, 10394) +HANDLE_BAT(APINT_TYPE_PREFIX, 10395) +HANDLE_BAT(APINT_TYPE_PREFIX, 10396) +HANDLE_BAT(APINT_TYPE_PREFIX, 10397) +HANDLE_BAT(APINT_TYPE_PREFIX, 10398) +HANDLE_BAT(APINT_TYPE_PREFIX, 10399) +HANDLE_BAT(APINT_TYPE_PREFIX, 10400) +HANDLE_BAT(APINT_TYPE_PREFIX, 10401) +HANDLE_BAT(APINT_TYPE_PREFIX, 10402) +HANDLE_BAT(APINT_TYPE_PREFIX, 10403) +HANDLE_BAT(APINT_TYPE_PREFIX, 10404) +HANDLE_BAT(APINT_TYPE_PREFIX, 10405) +HANDLE_BAT(APINT_TYPE_PREFIX, 10406) +HANDLE_BAT(APINT_TYPE_PREFIX, 10407) +HANDLE_BAT(APINT_TYPE_PREFIX, 10408) +HANDLE_BAT(APINT_TYPE_PREFIX, 10409) +HANDLE_BAT(APINT_TYPE_PREFIX, 10410) +HANDLE_BAT(APINT_TYPE_PREFIX, 10411) +HANDLE_BAT(APINT_TYPE_PREFIX, 10412) +HANDLE_BAT(APINT_TYPE_PREFIX, 10413) +HANDLE_BAT(APINT_TYPE_PREFIX, 10414) +HANDLE_BAT(APINT_TYPE_PREFIX, 10415) +HANDLE_BAT(APINT_TYPE_PREFIX, 10416) +HANDLE_BAT(APINT_TYPE_PREFIX, 10417) +HANDLE_BAT(APINT_TYPE_PREFIX, 10418) +HANDLE_BAT(APINT_TYPE_PREFIX, 10419) +HANDLE_BAT(APINT_TYPE_PREFIX, 10420) +HANDLE_BAT(APINT_TYPE_PREFIX, 10421) +HANDLE_BAT(APINT_TYPE_PREFIX, 10422) +HANDLE_BAT(APINT_TYPE_PREFIX, 10423) +HANDLE_BAT(APINT_TYPE_PREFIX, 10424) +HANDLE_BAT(APINT_TYPE_PREFIX, 10425) +HANDLE_BAT(APINT_TYPE_PREFIX, 10426) +HANDLE_BAT(APINT_TYPE_PREFIX, 10427) +HANDLE_BAT(APINT_TYPE_PREFIX, 10428) +HANDLE_BAT(APINT_TYPE_PREFIX, 10429) +HANDLE_BAT(APINT_TYPE_PREFIX, 10430) +HANDLE_BAT(APINT_TYPE_PREFIX, 10431) +HANDLE_BAT(APINT_TYPE_PREFIX, 10432) +HANDLE_BAT(APINT_TYPE_PREFIX, 10433) +HANDLE_BAT(APINT_TYPE_PREFIX, 10434) +HANDLE_BAT(APINT_TYPE_PREFIX, 10435) +HANDLE_BAT(APINT_TYPE_PREFIX, 10436) +HANDLE_BAT(APINT_TYPE_PREFIX, 10437) +HANDLE_BAT(APINT_TYPE_PREFIX, 10438) +HANDLE_BAT(APINT_TYPE_PREFIX, 10439) +HANDLE_BAT(APINT_TYPE_PREFIX, 10440) +HANDLE_BAT(APINT_TYPE_PREFIX, 10441) +HANDLE_BAT(APINT_TYPE_PREFIX, 10442) +HANDLE_BAT(APINT_TYPE_PREFIX, 10443) +HANDLE_BAT(APINT_TYPE_PREFIX, 10444) +HANDLE_BAT(APINT_TYPE_PREFIX, 10445) +HANDLE_BAT(APINT_TYPE_PREFIX, 10446) +HANDLE_BAT(APINT_TYPE_PREFIX, 10447) +HANDLE_BAT(APINT_TYPE_PREFIX, 10448) +HANDLE_BAT(APINT_TYPE_PREFIX, 10449) +HANDLE_BAT(APINT_TYPE_PREFIX, 10450) +HANDLE_BAT(APINT_TYPE_PREFIX, 10451) +HANDLE_BAT(APINT_TYPE_PREFIX, 10452) +HANDLE_BAT(APINT_TYPE_PREFIX, 10453) +HANDLE_BAT(APINT_TYPE_PREFIX, 10454) +HANDLE_BAT(APINT_TYPE_PREFIX, 10455) +HANDLE_BAT(APINT_TYPE_PREFIX, 10456) +HANDLE_BAT(APINT_TYPE_PREFIX, 10457) +HANDLE_BAT(APINT_TYPE_PREFIX, 10458) +HANDLE_BAT(APINT_TYPE_PREFIX, 10459) +HANDLE_BAT(APINT_TYPE_PREFIX, 10460) +HANDLE_BAT(APINT_TYPE_PREFIX, 10461) +HANDLE_BAT(APINT_TYPE_PREFIX, 10462) +HANDLE_BAT(APINT_TYPE_PREFIX, 10463) +HANDLE_BAT(APINT_TYPE_PREFIX, 10464) +HANDLE_BAT(APINT_TYPE_PREFIX, 10465) +HANDLE_BAT(APINT_TYPE_PREFIX, 10466) +HANDLE_BAT(APINT_TYPE_PREFIX, 10467) +HANDLE_BAT(APINT_TYPE_PREFIX, 10468) +HANDLE_BAT(APINT_TYPE_PREFIX, 10469) +HANDLE_BAT(APINT_TYPE_PREFIX, 10470) +HANDLE_BAT(APINT_TYPE_PREFIX, 10471) +HANDLE_BAT(APINT_TYPE_PREFIX, 10472) +HANDLE_BAT(APINT_TYPE_PREFIX, 10473) +HANDLE_BAT(APINT_TYPE_PREFIX, 10474) +HANDLE_BAT(APINT_TYPE_PREFIX, 10475) +HANDLE_BAT(APINT_TYPE_PREFIX, 10476) +HANDLE_BAT(APINT_TYPE_PREFIX, 10477) +HANDLE_BAT(APINT_TYPE_PREFIX, 10478) +HANDLE_BAT(APINT_TYPE_PREFIX, 10479) +HANDLE_BAT(APINT_TYPE_PREFIX, 10480) +HANDLE_BAT(APINT_TYPE_PREFIX, 10481) +HANDLE_BAT(APINT_TYPE_PREFIX, 10482) +HANDLE_BAT(APINT_TYPE_PREFIX, 10483) +HANDLE_BAT(APINT_TYPE_PREFIX, 10484) +HANDLE_BAT(APINT_TYPE_PREFIX, 10485) +HANDLE_BAT(APINT_TYPE_PREFIX, 10486) +HANDLE_BAT(APINT_TYPE_PREFIX, 10487) +HANDLE_BAT(APINT_TYPE_PREFIX, 10488) +HANDLE_BAT(APINT_TYPE_PREFIX, 10489) +HANDLE_BAT(APINT_TYPE_PREFIX, 10490) +HANDLE_BAT(APINT_TYPE_PREFIX, 10491) +HANDLE_BAT(APINT_TYPE_PREFIX, 10492) +HANDLE_BAT(APINT_TYPE_PREFIX, 10493) +HANDLE_BAT(APINT_TYPE_PREFIX, 10494) +HANDLE_BAT(APINT_TYPE_PREFIX, 10495) +HANDLE_BAT(APINT_TYPE_PREFIX, 10496) +HANDLE_BAT(APINT_TYPE_PREFIX, 10497) +HANDLE_BAT(APINT_TYPE_PREFIX, 10498) +HANDLE_BAT(APINT_TYPE_PREFIX, 10499) +HANDLE_BAT(APINT_TYPE_PREFIX, 10500) +HANDLE_BAT(APINT_TYPE_PREFIX, 10501) +HANDLE_BAT(APINT_TYPE_PREFIX, 10502) +HANDLE_BAT(APINT_TYPE_PREFIX, 10503) +HANDLE_BAT(APINT_TYPE_PREFIX, 10504) +HANDLE_BAT(APINT_TYPE_PREFIX, 10505) +HANDLE_BAT(APINT_TYPE_PREFIX, 10506) +HANDLE_BAT(APINT_TYPE_PREFIX, 10507) +HANDLE_BAT(APINT_TYPE_PREFIX, 10508) +HANDLE_BAT(APINT_TYPE_PREFIX, 10509) +HANDLE_BAT(APINT_TYPE_PREFIX, 10510) +HANDLE_BAT(APINT_TYPE_PREFIX, 10511) +HANDLE_BAT(APINT_TYPE_PREFIX, 10512) +HANDLE_BAT(APINT_TYPE_PREFIX, 10513) +HANDLE_BAT(APINT_TYPE_PREFIX, 10514) +HANDLE_BAT(APINT_TYPE_PREFIX, 10515) +HANDLE_BAT(APINT_TYPE_PREFIX, 10516) +HANDLE_BAT(APINT_TYPE_PREFIX, 10517) +HANDLE_BAT(APINT_TYPE_PREFIX, 10518) +HANDLE_BAT(APINT_TYPE_PREFIX, 10519) +HANDLE_BAT(APINT_TYPE_PREFIX, 10520) +HANDLE_BAT(APINT_TYPE_PREFIX, 10521) +HANDLE_BAT(APINT_TYPE_PREFIX, 10522) +HANDLE_BAT(APINT_TYPE_PREFIX, 10523) +HANDLE_BAT(APINT_TYPE_PREFIX, 10524) +HANDLE_BAT(APINT_TYPE_PREFIX, 10525) +HANDLE_BAT(APINT_TYPE_PREFIX, 10526) +HANDLE_BAT(APINT_TYPE_PREFIX, 10527) +HANDLE_BAT(APINT_TYPE_PREFIX, 10528) +HANDLE_BAT(APINT_TYPE_PREFIX, 10529) +HANDLE_BAT(APINT_TYPE_PREFIX, 10530) +HANDLE_BAT(APINT_TYPE_PREFIX, 10531) +HANDLE_BAT(APINT_TYPE_PREFIX, 10532) +HANDLE_BAT(APINT_TYPE_PREFIX, 10533) +HANDLE_BAT(APINT_TYPE_PREFIX, 10534) +HANDLE_BAT(APINT_TYPE_PREFIX, 10535) +HANDLE_BAT(APINT_TYPE_PREFIX, 10536) +HANDLE_BAT(APINT_TYPE_PREFIX, 10537) +HANDLE_BAT(APINT_TYPE_PREFIX, 10538) +HANDLE_BAT(APINT_TYPE_PREFIX, 10539) +HANDLE_BAT(APINT_TYPE_PREFIX, 10540) +HANDLE_BAT(APINT_TYPE_PREFIX, 10541) +HANDLE_BAT(APINT_TYPE_PREFIX, 10542) +HANDLE_BAT(APINT_TYPE_PREFIX, 10543) +HANDLE_BAT(APINT_TYPE_PREFIX, 10544) +HANDLE_BAT(APINT_TYPE_PREFIX, 10545) +HANDLE_BAT(APINT_TYPE_PREFIX, 10546) +HANDLE_BAT(APINT_TYPE_PREFIX, 10547) +HANDLE_BAT(APINT_TYPE_PREFIX, 10548) +HANDLE_BAT(APINT_TYPE_PREFIX, 10549) +HANDLE_BAT(APINT_TYPE_PREFIX, 10550) +HANDLE_BAT(APINT_TYPE_PREFIX, 10551) +HANDLE_BAT(APINT_TYPE_PREFIX, 10552) +HANDLE_BAT(APINT_TYPE_PREFIX, 10553) +HANDLE_BAT(APINT_TYPE_PREFIX, 10554) +HANDLE_BAT(APINT_TYPE_PREFIX, 10555) +HANDLE_BAT(APINT_TYPE_PREFIX, 10556) +HANDLE_BAT(APINT_TYPE_PREFIX, 10557) +HANDLE_BAT(APINT_TYPE_PREFIX, 10558) +HANDLE_BAT(APINT_TYPE_PREFIX, 10559) +HANDLE_BAT(APINT_TYPE_PREFIX, 10560) +HANDLE_BAT(APINT_TYPE_PREFIX, 10561) +HANDLE_BAT(APINT_TYPE_PREFIX, 10562) +HANDLE_BAT(APINT_TYPE_PREFIX, 10563) +HANDLE_BAT(APINT_TYPE_PREFIX, 10564) +HANDLE_BAT(APINT_TYPE_PREFIX, 10565) +HANDLE_BAT(APINT_TYPE_PREFIX, 10566) +HANDLE_BAT(APINT_TYPE_PREFIX, 10567) +HANDLE_BAT(APINT_TYPE_PREFIX, 10568) +HANDLE_BAT(APINT_TYPE_PREFIX, 10569) +HANDLE_BAT(APINT_TYPE_PREFIX, 10570) +HANDLE_BAT(APINT_TYPE_PREFIX, 10571) +HANDLE_BAT(APINT_TYPE_PREFIX, 10572) +HANDLE_BAT(APINT_TYPE_PREFIX, 10573) +HANDLE_BAT(APINT_TYPE_PREFIX, 10574) +HANDLE_BAT(APINT_TYPE_PREFIX, 10575) +HANDLE_BAT(APINT_TYPE_PREFIX, 10576) +HANDLE_BAT(APINT_TYPE_PREFIX, 10577) +HANDLE_BAT(APINT_TYPE_PREFIX, 10578) +HANDLE_BAT(APINT_TYPE_PREFIX, 10579) +HANDLE_BAT(APINT_TYPE_PREFIX, 10580) +HANDLE_BAT(APINT_TYPE_PREFIX, 10581) +HANDLE_BAT(APINT_TYPE_PREFIX, 10582) +HANDLE_BAT(APINT_TYPE_PREFIX, 10583) +HANDLE_BAT(APINT_TYPE_PREFIX, 10584) +HANDLE_BAT(APINT_TYPE_PREFIX, 10585) +HANDLE_BAT(APINT_TYPE_PREFIX, 10586) +HANDLE_BAT(APINT_TYPE_PREFIX, 10587) +HANDLE_BAT(APINT_TYPE_PREFIX, 10588) +HANDLE_BAT(APINT_TYPE_PREFIX, 10589) +HANDLE_BAT(APINT_TYPE_PREFIX, 10590) +HANDLE_BAT(APINT_TYPE_PREFIX, 10591) +HANDLE_BAT(APINT_TYPE_PREFIX, 10592) +HANDLE_BAT(APINT_TYPE_PREFIX, 10593) +HANDLE_BAT(APINT_TYPE_PREFIX, 10594) +HANDLE_BAT(APINT_TYPE_PREFIX, 10595) +HANDLE_BAT(APINT_TYPE_PREFIX, 10596) +HANDLE_BAT(APINT_TYPE_PREFIX, 10597) +HANDLE_BAT(APINT_TYPE_PREFIX, 10598) +HANDLE_BAT(APINT_TYPE_PREFIX, 10599) +HANDLE_BAT(APINT_TYPE_PREFIX, 10600) +HANDLE_BAT(APINT_TYPE_PREFIX, 10601) +HANDLE_BAT(APINT_TYPE_PREFIX, 10602) +HANDLE_BAT(APINT_TYPE_PREFIX, 10603) +HANDLE_BAT(APINT_TYPE_PREFIX, 10604) +HANDLE_BAT(APINT_TYPE_PREFIX, 10605) +HANDLE_BAT(APINT_TYPE_PREFIX, 10606) +HANDLE_BAT(APINT_TYPE_PREFIX, 10607) +HANDLE_BAT(APINT_TYPE_PREFIX, 10608) +HANDLE_BAT(APINT_TYPE_PREFIX, 10609) +HANDLE_BAT(APINT_TYPE_PREFIX, 10610) +HANDLE_BAT(APINT_TYPE_PREFIX, 10611) +HANDLE_BAT(APINT_TYPE_PREFIX, 10612) +HANDLE_BAT(APINT_TYPE_PREFIX, 10613) +HANDLE_BAT(APINT_TYPE_PREFIX, 10614) +HANDLE_BAT(APINT_TYPE_PREFIX, 10615) +HANDLE_BAT(APINT_TYPE_PREFIX, 10616) +HANDLE_BAT(APINT_TYPE_PREFIX, 10617) +HANDLE_BAT(APINT_TYPE_PREFIX, 10618) +HANDLE_BAT(APINT_TYPE_PREFIX, 10619) +HANDLE_BAT(APINT_TYPE_PREFIX, 10620) +HANDLE_BAT(APINT_TYPE_PREFIX, 10621) +HANDLE_BAT(APINT_TYPE_PREFIX, 10622) +HANDLE_BAT(APINT_TYPE_PREFIX, 10623) +HANDLE_BAT(APINT_TYPE_PREFIX, 10624) +HANDLE_BAT(APINT_TYPE_PREFIX, 10625) +HANDLE_BAT(APINT_TYPE_PREFIX, 10626) +HANDLE_BAT(APINT_TYPE_PREFIX, 10627) +HANDLE_BAT(APINT_TYPE_PREFIX, 10628) +HANDLE_BAT(APINT_TYPE_PREFIX, 10629) +HANDLE_BAT(APINT_TYPE_PREFIX, 10630) +HANDLE_BAT(APINT_TYPE_PREFIX, 10631) +HANDLE_BAT(APINT_TYPE_PREFIX, 10632) +HANDLE_BAT(APINT_TYPE_PREFIX, 10633) +HANDLE_BAT(APINT_TYPE_PREFIX, 10634) +HANDLE_BAT(APINT_TYPE_PREFIX, 10635) +HANDLE_BAT(APINT_TYPE_PREFIX, 10636) +HANDLE_BAT(APINT_TYPE_PREFIX, 10637) +HANDLE_BAT(APINT_TYPE_PREFIX, 10638) +HANDLE_BAT(APINT_TYPE_PREFIX, 10639) +HANDLE_BAT(APINT_TYPE_PREFIX, 10640) +HANDLE_BAT(APINT_TYPE_PREFIX, 10641) +HANDLE_BAT(APINT_TYPE_PREFIX, 10642) +HANDLE_BAT(APINT_TYPE_PREFIX, 10643) +HANDLE_BAT(APINT_TYPE_PREFIX, 10644) +HANDLE_BAT(APINT_TYPE_PREFIX, 10645) +HANDLE_BAT(APINT_TYPE_PREFIX, 10646) +HANDLE_BAT(APINT_TYPE_PREFIX, 10647) +HANDLE_BAT(APINT_TYPE_PREFIX, 10648) +HANDLE_BAT(APINT_TYPE_PREFIX, 10649) +HANDLE_BAT(APINT_TYPE_PREFIX, 10650) +HANDLE_BAT(APINT_TYPE_PREFIX, 10651) +HANDLE_BAT(APINT_TYPE_PREFIX, 10652) +HANDLE_BAT(APINT_TYPE_PREFIX, 10653) +HANDLE_BAT(APINT_TYPE_PREFIX, 10654) +HANDLE_BAT(APINT_TYPE_PREFIX, 10655) +HANDLE_BAT(APINT_TYPE_PREFIX, 10656) +HANDLE_BAT(APINT_TYPE_PREFIX, 10657) +HANDLE_BAT(APINT_TYPE_PREFIX, 10658) +HANDLE_BAT(APINT_TYPE_PREFIX, 10659) +HANDLE_BAT(APINT_TYPE_PREFIX, 10660) +HANDLE_BAT(APINT_TYPE_PREFIX, 10661) +HANDLE_BAT(APINT_TYPE_PREFIX, 10662) +HANDLE_BAT(APINT_TYPE_PREFIX, 10663) +HANDLE_BAT(APINT_TYPE_PREFIX, 10664) +HANDLE_BAT(APINT_TYPE_PREFIX, 10665) +HANDLE_BAT(APINT_TYPE_PREFIX, 10666) +HANDLE_BAT(APINT_TYPE_PREFIX, 10667) +HANDLE_BAT(APINT_TYPE_PREFIX, 10668) +HANDLE_BAT(APINT_TYPE_PREFIX, 10669) +HANDLE_BAT(APINT_TYPE_PREFIX, 10670) +HANDLE_BAT(APINT_TYPE_PREFIX, 10671) +HANDLE_BAT(APINT_TYPE_PREFIX, 10672) +HANDLE_BAT(APINT_TYPE_PREFIX, 10673) +HANDLE_BAT(APINT_TYPE_PREFIX, 10674) +HANDLE_BAT(APINT_TYPE_PREFIX, 10675) +HANDLE_BAT(APINT_TYPE_PREFIX, 10676) +HANDLE_BAT(APINT_TYPE_PREFIX, 10677) +HANDLE_BAT(APINT_TYPE_PREFIX, 10678) +HANDLE_BAT(APINT_TYPE_PREFIX, 10679) +HANDLE_BAT(APINT_TYPE_PREFIX, 10680) +HANDLE_BAT(APINT_TYPE_PREFIX, 10681) +HANDLE_BAT(APINT_TYPE_PREFIX, 10682) +HANDLE_BAT(APINT_TYPE_PREFIX, 10683) +HANDLE_BAT(APINT_TYPE_PREFIX, 10684) +HANDLE_BAT(APINT_TYPE_PREFIX, 10685) +HANDLE_BAT(APINT_TYPE_PREFIX, 10686) +HANDLE_BAT(APINT_TYPE_PREFIX, 10687) +HANDLE_BAT(APINT_TYPE_PREFIX, 10688) +HANDLE_BAT(APINT_TYPE_PREFIX, 10689) +HANDLE_BAT(APINT_TYPE_PREFIX, 10690) +HANDLE_BAT(APINT_TYPE_PREFIX, 10691) +HANDLE_BAT(APINT_TYPE_PREFIX, 10692) +HANDLE_BAT(APINT_TYPE_PREFIX, 10693) +HANDLE_BAT(APINT_TYPE_PREFIX, 10694) +HANDLE_BAT(APINT_TYPE_PREFIX, 10695) +HANDLE_BAT(APINT_TYPE_PREFIX, 10696) +HANDLE_BAT(APINT_TYPE_PREFIX, 10697) +HANDLE_BAT(APINT_TYPE_PREFIX, 10698) +HANDLE_BAT(APINT_TYPE_PREFIX, 10699) +HANDLE_BAT(APINT_TYPE_PREFIX, 10700) +HANDLE_BAT(APINT_TYPE_PREFIX, 10701) +HANDLE_BAT(APINT_TYPE_PREFIX, 10702) +HANDLE_BAT(APINT_TYPE_PREFIX, 10703) +HANDLE_BAT(APINT_TYPE_PREFIX, 10704) +HANDLE_BAT(APINT_TYPE_PREFIX, 10705) +HANDLE_BAT(APINT_TYPE_PREFIX, 10706) +HANDLE_BAT(APINT_TYPE_PREFIX, 10707) +HANDLE_BAT(APINT_TYPE_PREFIX, 10708) +HANDLE_BAT(APINT_TYPE_PREFIX, 10709) +HANDLE_BAT(APINT_TYPE_PREFIX, 10710) +HANDLE_BAT(APINT_TYPE_PREFIX, 10711) +HANDLE_BAT(APINT_TYPE_PREFIX, 10712) +HANDLE_BAT(APINT_TYPE_PREFIX, 10713) +HANDLE_BAT(APINT_TYPE_PREFIX, 10714) +HANDLE_BAT(APINT_TYPE_PREFIX, 10715) +HANDLE_BAT(APINT_TYPE_PREFIX, 10716) +HANDLE_BAT(APINT_TYPE_PREFIX, 10717) +HANDLE_BAT(APINT_TYPE_PREFIX, 10718) +HANDLE_BAT(APINT_TYPE_PREFIX, 10719) +HANDLE_BAT(APINT_TYPE_PREFIX, 10720) +HANDLE_BAT(APINT_TYPE_PREFIX, 10721) +HANDLE_BAT(APINT_TYPE_PREFIX, 10722) +HANDLE_BAT(APINT_TYPE_PREFIX, 10723) +HANDLE_BAT(APINT_TYPE_PREFIX, 10724) +HANDLE_BAT(APINT_TYPE_PREFIX, 10725) +HANDLE_BAT(APINT_TYPE_PREFIX, 10726) +HANDLE_BAT(APINT_TYPE_PREFIX, 10727) +HANDLE_BAT(APINT_TYPE_PREFIX, 10728) +HANDLE_BAT(APINT_TYPE_PREFIX, 10729) +HANDLE_BAT(APINT_TYPE_PREFIX, 10730) +HANDLE_BAT(APINT_TYPE_PREFIX, 10731) +HANDLE_BAT(APINT_TYPE_PREFIX, 10732) +HANDLE_BAT(APINT_TYPE_PREFIX, 10733) +HANDLE_BAT(APINT_TYPE_PREFIX, 10734) +HANDLE_BAT(APINT_TYPE_PREFIX, 10735) +HANDLE_BAT(APINT_TYPE_PREFIX, 10736) +HANDLE_BAT(APINT_TYPE_PREFIX, 10737) +HANDLE_BAT(APINT_TYPE_PREFIX, 10738) +HANDLE_BAT(APINT_TYPE_PREFIX, 10739) +HANDLE_BAT(APINT_TYPE_PREFIX, 10740) +HANDLE_BAT(APINT_TYPE_PREFIX, 10741) +HANDLE_BAT(APINT_TYPE_PREFIX, 10742) +HANDLE_BAT(APINT_TYPE_PREFIX, 10743) +HANDLE_BAT(APINT_TYPE_PREFIX, 10744) +HANDLE_BAT(APINT_TYPE_PREFIX, 10745) +HANDLE_BAT(APINT_TYPE_PREFIX, 10746) +HANDLE_BAT(APINT_TYPE_PREFIX, 10747) +HANDLE_BAT(APINT_TYPE_PREFIX, 10748) +HANDLE_BAT(APINT_TYPE_PREFIX, 10749) +HANDLE_BAT(APINT_TYPE_PREFIX, 10750) +HANDLE_BAT(APINT_TYPE_PREFIX, 10751) +HANDLE_BAT(APINT_TYPE_PREFIX, 10752) +HANDLE_BAT(APINT_TYPE_PREFIX, 10753) +HANDLE_BAT(APINT_TYPE_PREFIX, 10754) +HANDLE_BAT(APINT_TYPE_PREFIX, 10755) +HANDLE_BAT(APINT_TYPE_PREFIX, 10756) +HANDLE_BAT(APINT_TYPE_PREFIX, 10757) +HANDLE_BAT(APINT_TYPE_PREFIX, 10758) +HANDLE_BAT(APINT_TYPE_PREFIX, 10759) +HANDLE_BAT(APINT_TYPE_PREFIX, 10760) +HANDLE_BAT(APINT_TYPE_PREFIX, 10761) +HANDLE_BAT(APINT_TYPE_PREFIX, 10762) +HANDLE_BAT(APINT_TYPE_PREFIX, 10763) +HANDLE_BAT(APINT_TYPE_PREFIX, 10764) +HANDLE_BAT(APINT_TYPE_PREFIX, 10765) +HANDLE_BAT(APINT_TYPE_PREFIX, 10766) +HANDLE_BAT(APINT_TYPE_PREFIX, 10767) +HANDLE_BAT(APINT_TYPE_PREFIX, 10768) +HANDLE_BAT(APINT_TYPE_PREFIX, 10769) +HANDLE_BAT(APINT_TYPE_PREFIX, 10770) +HANDLE_BAT(APINT_TYPE_PREFIX, 10771) +HANDLE_BAT(APINT_TYPE_PREFIX, 10772) +HANDLE_BAT(APINT_TYPE_PREFIX, 10773) +HANDLE_BAT(APINT_TYPE_PREFIX, 10774) +HANDLE_BAT(APINT_TYPE_PREFIX, 10775) +HANDLE_BAT(APINT_TYPE_PREFIX, 10776) +HANDLE_BAT(APINT_TYPE_PREFIX, 10777) +HANDLE_BAT(APINT_TYPE_PREFIX, 10778) +HANDLE_BAT(APINT_TYPE_PREFIX, 10779) +HANDLE_BAT(APINT_TYPE_PREFIX, 10780) +HANDLE_BAT(APINT_TYPE_PREFIX, 10781) +HANDLE_BAT(APINT_TYPE_PREFIX, 10782) +HANDLE_BAT(APINT_TYPE_PREFIX, 10783) +HANDLE_BAT(APINT_TYPE_PREFIX, 10784) +HANDLE_BAT(APINT_TYPE_PREFIX, 10785) +HANDLE_BAT(APINT_TYPE_PREFIX, 10786) +HANDLE_BAT(APINT_TYPE_PREFIX, 10787) +HANDLE_BAT(APINT_TYPE_PREFIX, 10788) +HANDLE_BAT(APINT_TYPE_PREFIX, 10789) +HANDLE_BAT(APINT_TYPE_PREFIX, 10790) +HANDLE_BAT(APINT_TYPE_PREFIX, 10791) +HANDLE_BAT(APINT_TYPE_PREFIX, 10792) +HANDLE_BAT(APINT_TYPE_PREFIX, 10793) +HANDLE_BAT(APINT_TYPE_PREFIX, 10794) +HANDLE_BAT(APINT_TYPE_PREFIX, 10795) +HANDLE_BAT(APINT_TYPE_PREFIX, 10796) +HANDLE_BAT(APINT_TYPE_PREFIX, 10797) +HANDLE_BAT(APINT_TYPE_PREFIX, 10798) +HANDLE_BAT(APINT_TYPE_PREFIX, 10799) +HANDLE_BAT(APINT_TYPE_PREFIX, 10800) +HANDLE_BAT(APINT_TYPE_PREFIX, 10801) +HANDLE_BAT(APINT_TYPE_PREFIX, 10802) +HANDLE_BAT(APINT_TYPE_PREFIX, 10803) +HANDLE_BAT(APINT_TYPE_PREFIX, 10804) +HANDLE_BAT(APINT_TYPE_PREFIX, 10805) +HANDLE_BAT(APINT_TYPE_PREFIX, 10806) +HANDLE_BAT(APINT_TYPE_PREFIX, 10807) +HANDLE_BAT(APINT_TYPE_PREFIX, 10808) +HANDLE_BAT(APINT_TYPE_PREFIX, 10809) +HANDLE_BAT(APINT_TYPE_PREFIX, 10810) +HANDLE_BAT(APINT_TYPE_PREFIX, 10811) +HANDLE_BAT(APINT_TYPE_PREFIX, 10812) +HANDLE_BAT(APINT_TYPE_PREFIX, 10813) +HANDLE_BAT(APINT_TYPE_PREFIX, 10814) +HANDLE_BAT(APINT_TYPE_PREFIX, 10815) +HANDLE_BAT(APINT_TYPE_PREFIX, 10816) +HANDLE_BAT(APINT_TYPE_PREFIX, 10817) +HANDLE_BAT(APINT_TYPE_PREFIX, 10818) +HANDLE_BAT(APINT_TYPE_PREFIX, 10819) +HANDLE_BAT(APINT_TYPE_PREFIX, 10820) +HANDLE_BAT(APINT_TYPE_PREFIX, 10821) +HANDLE_BAT(APINT_TYPE_PREFIX, 10822) +HANDLE_BAT(APINT_TYPE_PREFIX, 10823) +HANDLE_BAT(APINT_TYPE_PREFIX, 10824) +HANDLE_BAT(APINT_TYPE_PREFIX, 10825) +HANDLE_BAT(APINT_TYPE_PREFIX, 10826) +HANDLE_BAT(APINT_TYPE_PREFIX, 10827) +HANDLE_BAT(APINT_TYPE_PREFIX, 10828) +HANDLE_BAT(APINT_TYPE_PREFIX, 10829) +HANDLE_BAT(APINT_TYPE_PREFIX, 10830) +HANDLE_BAT(APINT_TYPE_PREFIX, 10831) +HANDLE_BAT(APINT_TYPE_PREFIX, 10832) +HANDLE_BAT(APINT_TYPE_PREFIX, 10833) +HANDLE_BAT(APINT_TYPE_PREFIX, 10834) +HANDLE_BAT(APINT_TYPE_PREFIX, 10835) +HANDLE_BAT(APINT_TYPE_PREFIX, 10836) +HANDLE_BAT(APINT_TYPE_PREFIX, 10837) +HANDLE_BAT(APINT_TYPE_PREFIX, 10838) +HANDLE_BAT(APINT_TYPE_PREFIX, 10839) +HANDLE_BAT(APINT_TYPE_PREFIX, 10840) +HANDLE_BAT(APINT_TYPE_PREFIX, 10841) +HANDLE_BAT(APINT_TYPE_PREFIX, 10842) +HANDLE_BAT(APINT_TYPE_PREFIX, 10843) +HANDLE_BAT(APINT_TYPE_PREFIX, 10844) +HANDLE_BAT(APINT_TYPE_PREFIX, 10845) +HANDLE_BAT(APINT_TYPE_PREFIX, 10846) +HANDLE_BAT(APINT_TYPE_PREFIX, 10847) +HANDLE_BAT(APINT_TYPE_PREFIX, 10848) +HANDLE_BAT(APINT_TYPE_PREFIX, 10849) +HANDLE_BAT(APINT_TYPE_PREFIX, 10850) +HANDLE_BAT(APINT_TYPE_PREFIX, 10851) +HANDLE_BAT(APINT_TYPE_PREFIX, 10852) +HANDLE_BAT(APINT_TYPE_PREFIX, 10853) +HANDLE_BAT(APINT_TYPE_PREFIX, 10854) +HANDLE_BAT(APINT_TYPE_PREFIX, 10855) +HANDLE_BAT(APINT_TYPE_PREFIX, 10856) +HANDLE_BAT(APINT_TYPE_PREFIX, 10857) +HANDLE_BAT(APINT_TYPE_PREFIX, 10858) +HANDLE_BAT(APINT_TYPE_PREFIX, 10859) +HANDLE_BAT(APINT_TYPE_PREFIX, 10860) +HANDLE_BAT(APINT_TYPE_PREFIX, 10861) +HANDLE_BAT(APINT_TYPE_PREFIX, 10862) +HANDLE_BAT(APINT_TYPE_PREFIX, 10863) +HANDLE_BAT(APINT_TYPE_PREFIX, 10864) +HANDLE_BAT(APINT_TYPE_PREFIX, 10865) +HANDLE_BAT(APINT_TYPE_PREFIX, 10866) +HANDLE_BAT(APINT_TYPE_PREFIX, 10867) +HANDLE_BAT(APINT_TYPE_PREFIX, 10868) +HANDLE_BAT(APINT_TYPE_PREFIX, 10869) +HANDLE_BAT(APINT_TYPE_PREFIX, 10870) +HANDLE_BAT(APINT_TYPE_PREFIX, 10871) +HANDLE_BAT(APINT_TYPE_PREFIX, 10872) +HANDLE_BAT(APINT_TYPE_PREFIX, 10873) +HANDLE_BAT(APINT_TYPE_PREFIX, 10874) +HANDLE_BAT(APINT_TYPE_PREFIX, 10875) +HANDLE_BAT(APINT_TYPE_PREFIX, 10876) +HANDLE_BAT(APINT_TYPE_PREFIX, 10877) +HANDLE_BAT(APINT_TYPE_PREFIX, 10878) +HANDLE_BAT(APINT_TYPE_PREFIX, 10879) +HANDLE_BAT(APINT_TYPE_PREFIX, 10880) +HANDLE_BAT(APINT_TYPE_PREFIX, 10881) +HANDLE_BAT(APINT_TYPE_PREFIX, 10882) +HANDLE_BAT(APINT_TYPE_PREFIX, 10883) +HANDLE_BAT(APINT_TYPE_PREFIX, 10884) +HANDLE_BAT(APINT_TYPE_PREFIX, 10885) +HANDLE_BAT(APINT_TYPE_PREFIX, 10886) +HANDLE_BAT(APINT_TYPE_PREFIX, 10887) +HANDLE_BAT(APINT_TYPE_PREFIX, 10888) +HANDLE_BAT(APINT_TYPE_PREFIX, 10889) +HANDLE_BAT(APINT_TYPE_PREFIX, 10890) +HANDLE_BAT(APINT_TYPE_PREFIX, 10891) +HANDLE_BAT(APINT_TYPE_PREFIX, 10892) +HANDLE_BAT(APINT_TYPE_PREFIX, 10893) +HANDLE_BAT(APINT_TYPE_PREFIX, 10894) +HANDLE_BAT(APINT_TYPE_PREFIX, 10895) +HANDLE_BAT(APINT_TYPE_PREFIX, 10896) +HANDLE_BAT(APINT_TYPE_PREFIX, 10897) +HANDLE_BAT(APINT_TYPE_PREFIX, 10898) +HANDLE_BAT(APINT_TYPE_PREFIX, 10899) +HANDLE_BAT(APINT_TYPE_PREFIX, 10900) +HANDLE_BAT(APINT_TYPE_PREFIX, 10901) +HANDLE_BAT(APINT_TYPE_PREFIX, 10902) +HANDLE_BAT(APINT_TYPE_PREFIX, 10903) +HANDLE_BAT(APINT_TYPE_PREFIX, 10904) +HANDLE_BAT(APINT_TYPE_PREFIX, 10905) +HANDLE_BAT(APINT_TYPE_PREFIX, 10906) +HANDLE_BAT(APINT_TYPE_PREFIX, 10907) +HANDLE_BAT(APINT_TYPE_PREFIX, 10908) +HANDLE_BAT(APINT_TYPE_PREFIX, 10909) +HANDLE_BAT(APINT_TYPE_PREFIX, 10910) +HANDLE_BAT(APINT_TYPE_PREFIX, 10911) +HANDLE_BAT(APINT_TYPE_PREFIX, 10912) +HANDLE_BAT(APINT_TYPE_PREFIX, 10913) +HANDLE_BAT(APINT_TYPE_PREFIX, 10914) +HANDLE_BAT(APINT_TYPE_PREFIX, 10915) +HANDLE_BAT(APINT_TYPE_PREFIX, 10916) +HANDLE_BAT(APINT_TYPE_PREFIX, 10917) +HANDLE_BAT(APINT_TYPE_PREFIX, 10918) +HANDLE_BAT(APINT_TYPE_PREFIX, 10919) +HANDLE_BAT(APINT_TYPE_PREFIX, 10920) +HANDLE_BAT(APINT_TYPE_PREFIX, 10921) +HANDLE_BAT(APINT_TYPE_PREFIX, 10922) +HANDLE_BAT(APINT_TYPE_PREFIX, 10923) +HANDLE_BAT(APINT_TYPE_PREFIX, 10924) +HANDLE_BAT(APINT_TYPE_PREFIX, 10925) +HANDLE_BAT(APINT_TYPE_PREFIX, 10926) +HANDLE_BAT(APINT_TYPE_PREFIX, 10927) +HANDLE_BAT(APINT_TYPE_PREFIX, 10928) +HANDLE_BAT(APINT_TYPE_PREFIX, 10929) +HANDLE_BAT(APINT_TYPE_PREFIX, 10930) +HANDLE_BAT(APINT_TYPE_PREFIX, 10931) +HANDLE_BAT(APINT_TYPE_PREFIX, 10932) +HANDLE_BAT(APINT_TYPE_PREFIX, 10933) +HANDLE_BAT(APINT_TYPE_PREFIX, 10934) +HANDLE_BAT(APINT_TYPE_PREFIX, 10935) +HANDLE_BAT(APINT_TYPE_PREFIX, 10936) +HANDLE_BAT(APINT_TYPE_PREFIX, 10937) +HANDLE_BAT(APINT_TYPE_PREFIX, 10938) +HANDLE_BAT(APINT_TYPE_PREFIX, 10939) +HANDLE_BAT(APINT_TYPE_PREFIX, 10940) +HANDLE_BAT(APINT_TYPE_PREFIX, 10941) +HANDLE_BAT(APINT_TYPE_PREFIX, 10942) +HANDLE_BAT(APINT_TYPE_PREFIX, 10943) +HANDLE_BAT(APINT_TYPE_PREFIX, 10944) +HANDLE_BAT(APINT_TYPE_PREFIX, 10945) +HANDLE_BAT(APINT_TYPE_PREFIX, 10946) +HANDLE_BAT(APINT_TYPE_PREFIX, 10947) +HANDLE_BAT(APINT_TYPE_PREFIX, 10948) +HANDLE_BAT(APINT_TYPE_PREFIX, 10949) +HANDLE_BAT(APINT_TYPE_PREFIX, 10950) +HANDLE_BAT(APINT_TYPE_PREFIX, 10951) +HANDLE_BAT(APINT_TYPE_PREFIX, 10952) +HANDLE_BAT(APINT_TYPE_PREFIX, 10953) +HANDLE_BAT(APINT_TYPE_PREFIX, 10954) +HANDLE_BAT(APINT_TYPE_PREFIX, 10955) +HANDLE_BAT(APINT_TYPE_PREFIX, 10956) +HANDLE_BAT(APINT_TYPE_PREFIX, 10957) +HANDLE_BAT(APINT_TYPE_PREFIX, 10958) +HANDLE_BAT(APINT_TYPE_PREFIX, 10959) +HANDLE_BAT(APINT_TYPE_PREFIX, 10960) +HANDLE_BAT(APINT_TYPE_PREFIX, 10961) +HANDLE_BAT(APINT_TYPE_PREFIX, 10962) +HANDLE_BAT(APINT_TYPE_PREFIX, 10963) +HANDLE_BAT(APINT_TYPE_PREFIX, 10964) +HANDLE_BAT(APINT_TYPE_PREFIX, 10965) +HANDLE_BAT(APINT_TYPE_PREFIX, 10966) +HANDLE_BAT(APINT_TYPE_PREFIX, 10967) +HANDLE_BAT(APINT_TYPE_PREFIX, 10968) +HANDLE_BAT(APINT_TYPE_PREFIX, 10969) +HANDLE_BAT(APINT_TYPE_PREFIX, 10970) +HANDLE_BAT(APINT_TYPE_PREFIX, 10971) +HANDLE_BAT(APINT_TYPE_PREFIX, 10972) +HANDLE_BAT(APINT_TYPE_PREFIX, 10973) +HANDLE_BAT(APINT_TYPE_PREFIX, 10974) +HANDLE_BAT(APINT_TYPE_PREFIX, 10975) +HANDLE_BAT(APINT_TYPE_PREFIX, 10976) +HANDLE_BAT(APINT_TYPE_PREFIX, 10977) +HANDLE_BAT(APINT_TYPE_PREFIX, 10978) +HANDLE_BAT(APINT_TYPE_PREFIX, 10979) +HANDLE_BAT(APINT_TYPE_PREFIX, 10980) +HANDLE_BAT(APINT_TYPE_PREFIX, 10981) +HANDLE_BAT(APINT_TYPE_PREFIX, 10982) +HANDLE_BAT(APINT_TYPE_PREFIX, 10983) +HANDLE_BAT(APINT_TYPE_PREFIX, 10984) +HANDLE_BAT(APINT_TYPE_PREFIX, 10985) +HANDLE_BAT(APINT_TYPE_PREFIX, 10986) +HANDLE_BAT(APINT_TYPE_PREFIX, 10987) +HANDLE_BAT(APINT_TYPE_PREFIX, 10988) +HANDLE_BAT(APINT_TYPE_PREFIX, 10989) +HANDLE_BAT(APINT_TYPE_PREFIX, 10990) +HANDLE_BAT(APINT_TYPE_PREFIX, 10991) +HANDLE_BAT(APINT_TYPE_PREFIX, 10992) +HANDLE_BAT(APINT_TYPE_PREFIX, 10993) +HANDLE_BAT(APINT_TYPE_PREFIX, 10994) +HANDLE_BAT(APINT_TYPE_PREFIX, 10995) +HANDLE_BAT(APINT_TYPE_PREFIX, 10996) +HANDLE_BAT(APINT_TYPE_PREFIX, 10997) +HANDLE_BAT(APINT_TYPE_PREFIX, 10998) +HANDLE_BAT(APINT_TYPE_PREFIX, 10999) +HANDLE_BAT(APINT_TYPE_PREFIX, 11000) +HANDLE_BAT(APINT_TYPE_PREFIX, 11001) +HANDLE_BAT(APINT_TYPE_PREFIX, 11002) +HANDLE_BAT(APINT_TYPE_PREFIX, 11003) +HANDLE_BAT(APINT_TYPE_PREFIX, 11004) +HANDLE_BAT(APINT_TYPE_PREFIX, 11005) +HANDLE_BAT(APINT_TYPE_PREFIX, 11006) +HANDLE_BAT(APINT_TYPE_PREFIX, 11007) +HANDLE_BAT(APINT_TYPE_PREFIX, 11008) +HANDLE_BAT(APINT_TYPE_PREFIX, 11009) +HANDLE_BAT(APINT_TYPE_PREFIX, 11010) +HANDLE_BAT(APINT_TYPE_PREFIX, 11011) +HANDLE_BAT(APINT_TYPE_PREFIX, 11012) +HANDLE_BAT(APINT_TYPE_PREFIX, 11013) +HANDLE_BAT(APINT_TYPE_PREFIX, 11014) +HANDLE_BAT(APINT_TYPE_PREFIX, 11015) +HANDLE_BAT(APINT_TYPE_PREFIX, 11016) +HANDLE_BAT(APINT_TYPE_PREFIX, 11017) +HANDLE_BAT(APINT_TYPE_PREFIX, 11018) +HANDLE_BAT(APINT_TYPE_PREFIX, 11019) +HANDLE_BAT(APINT_TYPE_PREFIX, 11020) +HANDLE_BAT(APINT_TYPE_PREFIX, 11021) +HANDLE_BAT(APINT_TYPE_PREFIX, 11022) +HANDLE_BAT(APINT_TYPE_PREFIX, 11023) +HANDLE_BAT(APINT_TYPE_PREFIX, 11024) +HANDLE_BAT(APINT_TYPE_PREFIX, 11025) +HANDLE_BAT(APINT_TYPE_PREFIX, 11026) +HANDLE_BAT(APINT_TYPE_PREFIX, 11027) +HANDLE_BAT(APINT_TYPE_PREFIX, 11028) +HANDLE_BAT(APINT_TYPE_PREFIX, 11029) +HANDLE_BAT(APINT_TYPE_PREFIX, 11030) +HANDLE_BAT(APINT_TYPE_PREFIX, 11031) +HANDLE_BAT(APINT_TYPE_PREFIX, 11032) +HANDLE_BAT(APINT_TYPE_PREFIX, 11033) +HANDLE_BAT(APINT_TYPE_PREFIX, 11034) +HANDLE_BAT(APINT_TYPE_PREFIX, 11035) +HANDLE_BAT(APINT_TYPE_PREFIX, 11036) +HANDLE_BAT(APINT_TYPE_PREFIX, 11037) +HANDLE_BAT(APINT_TYPE_PREFIX, 11038) +HANDLE_BAT(APINT_TYPE_PREFIX, 11039) +HANDLE_BAT(APINT_TYPE_PREFIX, 11040) +HANDLE_BAT(APINT_TYPE_PREFIX, 11041) +HANDLE_BAT(APINT_TYPE_PREFIX, 11042) +HANDLE_BAT(APINT_TYPE_PREFIX, 11043) +HANDLE_BAT(APINT_TYPE_PREFIX, 11044) +HANDLE_BAT(APINT_TYPE_PREFIX, 11045) +HANDLE_BAT(APINT_TYPE_PREFIX, 11046) +HANDLE_BAT(APINT_TYPE_PREFIX, 11047) +HANDLE_BAT(APINT_TYPE_PREFIX, 11048) +HANDLE_BAT(APINT_TYPE_PREFIX, 11049) +HANDLE_BAT(APINT_TYPE_PREFIX, 11050) +HANDLE_BAT(APINT_TYPE_PREFIX, 11051) +HANDLE_BAT(APINT_TYPE_PREFIX, 11052) +HANDLE_BAT(APINT_TYPE_PREFIX, 11053) +HANDLE_BAT(APINT_TYPE_PREFIX, 11054) +HANDLE_BAT(APINT_TYPE_PREFIX, 11055) +HANDLE_BAT(APINT_TYPE_PREFIX, 11056) +HANDLE_BAT(APINT_TYPE_PREFIX, 11057) +HANDLE_BAT(APINT_TYPE_PREFIX, 11058) +HANDLE_BAT(APINT_TYPE_PREFIX, 11059) +HANDLE_BAT(APINT_TYPE_PREFIX, 11060) +HANDLE_BAT(APINT_TYPE_PREFIX, 11061) +HANDLE_BAT(APINT_TYPE_PREFIX, 11062) +HANDLE_BAT(APINT_TYPE_PREFIX, 11063) +HANDLE_BAT(APINT_TYPE_PREFIX, 11064) +HANDLE_BAT(APINT_TYPE_PREFIX, 11065) +HANDLE_BAT(APINT_TYPE_PREFIX, 11066) +HANDLE_BAT(APINT_TYPE_PREFIX, 11067) +HANDLE_BAT(APINT_TYPE_PREFIX, 11068) +HANDLE_BAT(APINT_TYPE_PREFIX, 11069) +HANDLE_BAT(APINT_TYPE_PREFIX, 11070) +HANDLE_BAT(APINT_TYPE_PREFIX, 11071) +HANDLE_BAT(APINT_TYPE_PREFIX, 11072) +HANDLE_BAT(APINT_TYPE_PREFIX, 11073) +HANDLE_BAT(APINT_TYPE_PREFIX, 11074) +HANDLE_BAT(APINT_TYPE_PREFIX, 11075) +HANDLE_BAT(APINT_TYPE_PREFIX, 11076) +HANDLE_BAT(APINT_TYPE_PREFIX, 11077) +HANDLE_BAT(APINT_TYPE_PREFIX, 11078) +HANDLE_BAT(APINT_TYPE_PREFIX, 11079) +HANDLE_BAT(APINT_TYPE_PREFIX, 11080) +HANDLE_BAT(APINT_TYPE_PREFIX, 11081) +HANDLE_BAT(APINT_TYPE_PREFIX, 11082) +HANDLE_BAT(APINT_TYPE_PREFIX, 11083) +HANDLE_BAT(APINT_TYPE_PREFIX, 11084) +HANDLE_BAT(APINT_TYPE_PREFIX, 11085) +HANDLE_BAT(APINT_TYPE_PREFIX, 11086) +HANDLE_BAT(APINT_TYPE_PREFIX, 11087) +HANDLE_BAT(APINT_TYPE_PREFIX, 11088) +HANDLE_BAT(APINT_TYPE_PREFIX, 11089) +HANDLE_BAT(APINT_TYPE_PREFIX, 11090) +HANDLE_BAT(APINT_TYPE_PREFIX, 11091) +HANDLE_BAT(APINT_TYPE_PREFIX, 11092) +HANDLE_BAT(APINT_TYPE_PREFIX, 11093) +HANDLE_BAT(APINT_TYPE_PREFIX, 11094) +HANDLE_BAT(APINT_TYPE_PREFIX, 11095) +HANDLE_BAT(APINT_TYPE_PREFIX, 11096) +HANDLE_BAT(APINT_TYPE_PREFIX, 11097) +HANDLE_BAT(APINT_TYPE_PREFIX, 11098) +HANDLE_BAT(APINT_TYPE_PREFIX, 11099) +HANDLE_BAT(APINT_TYPE_PREFIX, 11100) +HANDLE_BAT(APINT_TYPE_PREFIX, 11101) +HANDLE_BAT(APINT_TYPE_PREFIX, 11102) +HANDLE_BAT(APINT_TYPE_PREFIX, 11103) +HANDLE_BAT(APINT_TYPE_PREFIX, 11104) +HANDLE_BAT(APINT_TYPE_PREFIX, 11105) +HANDLE_BAT(APINT_TYPE_PREFIX, 11106) +HANDLE_BAT(APINT_TYPE_PREFIX, 11107) +HANDLE_BAT(APINT_TYPE_PREFIX, 11108) +HANDLE_BAT(APINT_TYPE_PREFIX, 11109) +HANDLE_BAT(APINT_TYPE_PREFIX, 11110) +HANDLE_BAT(APINT_TYPE_PREFIX, 11111) +HANDLE_BAT(APINT_TYPE_PREFIX, 11112) +HANDLE_BAT(APINT_TYPE_PREFIX, 11113) +HANDLE_BAT(APINT_TYPE_PREFIX, 11114) +HANDLE_BAT(APINT_TYPE_PREFIX, 11115) +HANDLE_BAT(APINT_TYPE_PREFIX, 11116) +HANDLE_BAT(APINT_TYPE_PREFIX, 11117) +HANDLE_BAT(APINT_TYPE_PREFIX, 11118) +HANDLE_BAT(APINT_TYPE_PREFIX, 11119) +HANDLE_BAT(APINT_TYPE_PREFIX, 11120) +HANDLE_BAT(APINT_TYPE_PREFIX, 11121) +HANDLE_BAT(APINT_TYPE_PREFIX, 11122) +HANDLE_BAT(APINT_TYPE_PREFIX, 11123) +HANDLE_BAT(APINT_TYPE_PREFIX, 11124) +HANDLE_BAT(APINT_TYPE_PREFIX, 11125) +HANDLE_BAT(APINT_TYPE_PREFIX, 11126) +HANDLE_BAT(APINT_TYPE_PREFIX, 11127) +HANDLE_BAT(APINT_TYPE_PREFIX, 11128) +HANDLE_BAT(APINT_TYPE_PREFIX, 11129) +HANDLE_BAT(APINT_TYPE_PREFIX, 11130) +HANDLE_BAT(APINT_TYPE_PREFIX, 11131) +HANDLE_BAT(APINT_TYPE_PREFIX, 11132) +HANDLE_BAT(APINT_TYPE_PREFIX, 11133) +HANDLE_BAT(APINT_TYPE_PREFIX, 11134) +HANDLE_BAT(APINT_TYPE_PREFIX, 11135) +HANDLE_BAT(APINT_TYPE_PREFIX, 11136) +HANDLE_BAT(APINT_TYPE_PREFIX, 11137) +HANDLE_BAT(APINT_TYPE_PREFIX, 11138) +HANDLE_BAT(APINT_TYPE_PREFIX, 11139) +HANDLE_BAT(APINT_TYPE_PREFIX, 11140) +HANDLE_BAT(APINT_TYPE_PREFIX, 11141) +HANDLE_BAT(APINT_TYPE_PREFIX, 11142) +HANDLE_BAT(APINT_TYPE_PREFIX, 11143) +HANDLE_BAT(APINT_TYPE_PREFIX, 11144) +HANDLE_BAT(APINT_TYPE_PREFIX, 11145) +HANDLE_BAT(APINT_TYPE_PREFIX, 11146) +HANDLE_BAT(APINT_TYPE_PREFIX, 11147) +HANDLE_BAT(APINT_TYPE_PREFIX, 11148) +HANDLE_BAT(APINT_TYPE_PREFIX, 11149) +HANDLE_BAT(APINT_TYPE_PREFIX, 11150) +HANDLE_BAT(APINT_TYPE_PREFIX, 11151) +HANDLE_BAT(APINT_TYPE_PREFIX, 11152) +HANDLE_BAT(APINT_TYPE_PREFIX, 11153) +HANDLE_BAT(APINT_TYPE_PREFIX, 11154) +HANDLE_BAT(APINT_TYPE_PREFIX, 11155) +HANDLE_BAT(APINT_TYPE_PREFIX, 11156) +HANDLE_BAT(APINT_TYPE_PREFIX, 11157) +HANDLE_BAT(APINT_TYPE_PREFIX, 11158) +HANDLE_BAT(APINT_TYPE_PREFIX, 11159) +HANDLE_BAT(APINT_TYPE_PREFIX, 11160) +HANDLE_BAT(APINT_TYPE_PREFIX, 11161) +HANDLE_BAT(APINT_TYPE_PREFIX, 11162) +HANDLE_BAT(APINT_TYPE_PREFIX, 11163) +HANDLE_BAT(APINT_TYPE_PREFIX, 11164) +HANDLE_BAT(APINT_TYPE_PREFIX, 11165) +HANDLE_BAT(APINT_TYPE_PREFIX, 11166) +HANDLE_BAT(APINT_TYPE_PREFIX, 11167) +HANDLE_BAT(APINT_TYPE_PREFIX, 11168) +HANDLE_BAT(APINT_TYPE_PREFIX, 11169) +HANDLE_BAT(APINT_TYPE_PREFIX, 11170) +HANDLE_BAT(APINT_TYPE_PREFIX, 11171) +HANDLE_BAT(APINT_TYPE_PREFIX, 11172) +HANDLE_BAT(APINT_TYPE_PREFIX, 11173) +HANDLE_BAT(APINT_TYPE_PREFIX, 11174) +HANDLE_BAT(APINT_TYPE_PREFIX, 11175) +HANDLE_BAT(APINT_TYPE_PREFIX, 11176) +HANDLE_BAT(APINT_TYPE_PREFIX, 11177) +HANDLE_BAT(APINT_TYPE_PREFIX, 11178) +HANDLE_BAT(APINT_TYPE_PREFIX, 11179) +HANDLE_BAT(APINT_TYPE_PREFIX, 11180) +HANDLE_BAT(APINT_TYPE_PREFIX, 11181) +HANDLE_BAT(APINT_TYPE_PREFIX, 11182) +HANDLE_BAT(APINT_TYPE_PREFIX, 11183) +HANDLE_BAT(APINT_TYPE_PREFIX, 11184) +HANDLE_BAT(APINT_TYPE_PREFIX, 11185) +HANDLE_BAT(APINT_TYPE_PREFIX, 11186) +HANDLE_BAT(APINT_TYPE_PREFIX, 11187) +HANDLE_BAT(APINT_TYPE_PREFIX, 11188) +HANDLE_BAT(APINT_TYPE_PREFIX, 11189) +HANDLE_BAT(APINT_TYPE_PREFIX, 11190) +HANDLE_BAT(APINT_TYPE_PREFIX, 11191) +HANDLE_BAT(APINT_TYPE_PREFIX, 11192) +HANDLE_BAT(APINT_TYPE_PREFIX, 11193) +HANDLE_BAT(APINT_TYPE_PREFIX, 11194) +HANDLE_BAT(APINT_TYPE_PREFIX, 11195) +HANDLE_BAT(APINT_TYPE_PREFIX, 11196) +HANDLE_BAT(APINT_TYPE_PREFIX, 11197) +HANDLE_BAT(APINT_TYPE_PREFIX, 11198) +HANDLE_BAT(APINT_TYPE_PREFIX, 11199) +HANDLE_BAT(APINT_TYPE_PREFIX, 11200) +HANDLE_BAT(APINT_TYPE_PREFIX, 11201) +HANDLE_BAT(APINT_TYPE_PREFIX, 11202) +HANDLE_BAT(APINT_TYPE_PREFIX, 11203) +HANDLE_BAT(APINT_TYPE_PREFIX, 11204) +HANDLE_BAT(APINT_TYPE_PREFIX, 11205) +HANDLE_BAT(APINT_TYPE_PREFIX, 11206) +HANDLE_BAT(APINT_TYPE_PREFIX, 11207) +HANDLE_BAT(APINT_TYPE_PREFIX, 11208) +HANDLE_BAT(APINT_TYPE_PREFIX, 11209) +HANDLE_BAT(APINT_TYPE_PREFIX, 11210) +HANDLE_BAT(APINT_TYPE_PREFIX, 11211) +HANDLE_BAT(APINT_TYPE_PREFIX, 11212) +HANDLE_BAT(APINT_TYPE_PREFIX, 11213) +HANDLE_BAT(APINT_TYPE_PREFIX, 11214) +HANDLE_BAT(APINT_TYPE_PREFIX, 11215) +HANDLE_BAT(APINT_TYPE_PREFIX, 11216) +HANDLE_BAT(APINT_TYPE_PREFIX, 11217) +HANDLE_BAT(APINT_TYPE_PREFIX, 11218) +HANDLE_BAT(APINT_TYPE_PREFIX, 11219) +HANDLE_BAT(APINT_TYPE_PREFIX, 11220) +HANDLE_BAT(APINT_TYPE_PREFIX, 11221) +HANDLE_BAT(APINT_TYPE_PREFIX, 11222) +HANDLE_BAT(APINT_TYPE_PREFIX, 11223) +HANDLE_BAT(APINT_TYPE_PREFIX, 11224) +HANDLE_BAT(APINT_TYPE_PREFIX, 11225) +HANDLE_BAT(APINT_TYPE_PREFIX, 11226) +HANDLE_BAT(APINT_TYPE_PREFIX, 11227) +HANDLE_BAT(APINT_TYPE_PREFIX, 11228) +HANDLE_BAT(APINT_TYPE_PREFIX, 11229) +HANDLE_BAT(APINT_TYPE_PREFIX, 11230) +HANDLE_BAT(APINT_TYPE_PREFIX, 11231) +HANDLE_BAT(APINT_TYPE_PREFIX, 11232) +HANDLE_BAT(APINT_TYPE_PREFIX, 11233) +HANDLE_BAT(APINT_TYPE_PREFIX, 11234) +HANDLE_BAT(APINT_TYPE_PREFIX, 11235) +HANDLE_BAT(APINT_TYPE_PREFIX, 11236) +HANDLE_BAT(APINT_TYPE_PREFIX, 11237) +HANDLE_BAT(APINT_TYPE_PREFIX, 11238) +HANDLE_BAT(APINT_TYPE_PREFIX, 11239) +HANDLE_BAT(APINT_TYPE_PREFIX, 11240) +HANDLE_BAT(APINT_TYPE_PREFIX, 11241) +HANDLE_BAT(APINT_TYPE_PREFIX, 11242) +HANDLE_BAT(APINT_TYPE_PREFIX, 11243) +HANDLE_BAT(APINT_TYPE_PREFIX, 11244) +HANDLE_BAT(APINT_TYPE_PREFIX, 11245) +HANDLE_BAT(APINT_TYPE_PREFIX, 11246) +HANDLE_BAT(APINT_TYPE_PREFIX, 11247) +HANDLE_BAT(APINT_TYPE_PREFIX, 11248) +HANDLE_BAT(APINT_TYPE_PREFIX, 11249) +HANDLE_BAT(APINT_TYPE_PREFIX, 11250) +HANDLE_BAT(APINT_TYPE_PREFIX, 11251) +HANDLE_BAT(APINT_TYPE_PREFIX, 11252) +HANDLE_BAT(APINT_TYPE_PREFIX, 11253) +HANDLE_BAT(APINT_TYPE_PREFIX, 11254) +HANDLE_BAT(APINT_TYPE_PREFIX, 11255) +HANDLE_BAT(APINT_TYPE_PREFIX, 11256) +HANDLE_BAT(APINT_TYPE_PREFIX, 11257) +HANDLE_BAT(APINT_TYPE_PREFIX, 11258) +HANDLE_BAT(APINT_TYPE_PREFIX, 11259) +HANDLE_BAT(APINT_TYPE_PREFIX, 11260) +HANDLE_BAT(APINT_TYPE_PREFIX, 11261) +HANDLE_BAT(APINT_TYPE_PREFIX, 11262) +HANDLE_BAT(APINT_TYPE_PREFIX, 11263) +HANDLE_BAT(APINT_TYPE_PREFIX, 11264) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 11 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 11265) +HANDLE_BAT(, 11266) +HANDLE_BAT(, 11267) +HANDLE_BAT(, 11268) +HANDLE_BAT(, 11269) +HANDLE_BAT(, 11270) +HANDLE_BAT(, 11271) +HANDLE_BAT(, 11272) +HANDLE_BAT(, 11273) +HANDLE_BAT(, 11274) +HANDLE_BAT(, 11275) +HANDLE_BAT(, 11276) +HANDLE_BAT(, 11277) +HANDLE_BAT(, 11278) +HANDLE_BAT(, 11279) +HANDLE_BAT(, 11280) +HANDLE_BAT(, 11281) +HANDLE_BAT(, 11282) +HANDLE_BAT(, 11283) +HANDLE_BAT(, 11284) +HANDLE_BAT(, 11285) +HANDLE_BAT(, 11286) +HANDLE_BAT(, 11287) +HANDLE_BAT(, 11288) +HANDLE_BAT(, 11289) +HANDLE_BAT(, 11290) +HANDLE_BAT(, 11291) +HANDLE_BAT(, 11292) +HANDLE_BAT(, 11293) +HANDLE_BAT(, 11294) +HANDLE_BAT(, 11295) +HANDLE_BAT(, 11296) +HANDLE_BAT(, 11297) +HANDLE_BAT(, 11298) +HANDLE_BAT(, 11299) +HANDLE_BAT(, 11300) +HANDLE_BAT(, 11301) +HANDLE_BAT(, 11302) +HANDLE_BAT(, 11303) +HANDLE_BAT(, 11304) +HANDLE_BAT(, 11305) +HANDLE_BAT(, 11306) +HANDLE_BAT(, 11307) +HANDLE_BAT(, 11308) +HANDLE_BAT(, 11309) +HANDLE_BAT(, 11310) +HANDLE_BAT(, 11311) +HANDLE_BAT(, 11312) +HANDLE_BAT(, 11313) +HANDLE_BAT(, 11314) +HANDLE_BAT(, 11315) +HANDLE_BAT(, 11316) +HANDLE_BAT(, 11317) +HANDLE_BAT(, 11318) +HANDLE_BAT(, 11319) +HANDLE_BAT(, 11320) +HANDLE_BAT(, 11321) +HANDLE_BAT(, 11322) +HANDLE_BAT(, 11323) +HANDLE_BAT(, 11324) +HANDLE_BAT(, 11325) +HANDLE_BAT(, 11326) +HANDLE_BAT(, 11327) +HANDLE_BAT(, 11328) +HANDLE_BAT(, 11329) +HANDLE_BAT(, 11330) +HANDLE_BAT(, 11331) +HANDLE_BAT(, 11332) +HANDLE_BAT(, 11333) +HANDLE_BAT(, 11334) +HANDLE_BAT(, 11335) +HANDLE_BAT(, 11336) +HANDLE_BAT(, 11337) +HANDLE_BAT(, 11338) +HANDLE_BAT(, 11339) +HANDLE_BAT(, 11340) +HANDLE_BAT(, 11341) +HANDLE_BAT(, 11342) +HANDLE_BAT(, 11343) +HANDLE_BAT(, 11344) +HANDLE_BAT(, 11345) +HANDLE_BAT(, 11346) +HANDLE_BAT(, 11347) +HANDLE_BAT(, 11348) +HANDLE_BAT(, 11349) +HANDLE_BAT(, 11350) +HANDLE_BAT(, 11351) +HANDLE_BAT(, 11352) +HANDLE_BAT(, 11353) +HANDLE_BAT(, 11354) +HANDLE_BAT(, 11355) +HANDLE_BAT(, 11356) +HANDLE_BAT(, 11357) +HANDLE_BAT(, 11358) +HANDLE_BAT(, 11359) +HANDLE_BAT(, 11360) +HANDLE_BAT(, 11361) +HANDLE_BAT(, 11362) +HANDLE_BAT(, 11363) +HANDLE_BAT(, 11364) +HANDLE_BAT(, 11365) +HANDLE_BAT(, 11366) +HANDLE_BAT(, 11367) +HANDLE_BAT(, 11368) +HANDLE_BAT(, 11369) +HANDLE_BAT(, 11370) +HANDLE_BAT(, 11371) +HANDLE_BAT(, 11372) +HANDLE_BAT(, 11373) +HANDLE_BAT(, 11374) +HANDLE_BAT(, 11375) +HANDLE_BAT(, 11376) +HANDLE_BAT(, 11377) +HANDLE_BAT(, 11378) +HANDLE_BAT(, 11379) +HANDLE_BAT(, 11380) +HANDLE_BAT(, 11381) +HANDLE_BAT(, 11382) +HANDLE_BAT(, 11383) +HANDLE_BAT(, 11384) +HANDLE_BAT(, 11385) +HANDLE_BAT(, 11386) +HANDLE_BAT(, 11387) +HANDLE_BAT(, 11388) +HANDLE_BAT(, 11389) +HANDLE_BAT(, 11390) +HANDLE_BAT(, 11391) +HANDLE_BAT(, 11392) +HANDLE_BAT(, 11393) +HANDLE_BAT(, 11394) +HANDLE_BAT(, 11395) +HANDLE_BAT(, 11396) +HANDLE_BAT(, 11397) +HANDLE_BAT(, 11398) +HANDLE_BAT(, 11399) +HANDLE_BAT(, 11400) +HANDLE_BAT(, 11401) +HANDLE_BAT(, 11402) +HANDLE_BAT(, 11403) +HANDLE_BAT(, 11404) +HANDLE_BAT(, 11405) +HANDLE_BAT(, 11406) +HANDLE_BAT(, 11407) +HANDLE_BAT(, 11408) +HANDLE_BAT(, 11409) +HANDLE_BAT(, 11410) +HANDLE_BAT(, 11411) +HANDLE_BAT(, 11412) +HANDLE_BAT(, 11413) +HANDLE_BAT(, 11414) +HANDLE_BAT(, 11415) +HANDLE_BAT(, 11416) +HANDLE_BAT(, 11417) +HANDLE_BAT(, 11418) +HANDLE_BAT(, 11419) +HANDLE_BAT(, 11420) +HANDLE_BAT(, 11421) +HANDLE_BAT(, 11422) +HANDLE_BAT(, 11423) +HANDLE_BAT(, 11424) +HANDLE_BAT(, 11425) +HANDLE_BAT(, 11426) +HANDLE_BAT(, 11427) +HANDLE_BAT(, 11428) +HANDLE_BAT(, 11429) +HANDLE_BAT(, 11430) +HANDLE_BAT(, 11431) +HANDLE_BAT(, 11432) +HANDLE_BAT(, 11433) +HANDLE_BAT(, 11434) +HANDLE_BAT(, 11435) +HANDLE_BAT(, 11436) +HANDLE_BAT(, 11437) +HANDLE_BAT(, 11438) +HANDLE_BAT(, 11439) +HANDLE_BAT(, 11440) +HANDLE_BAT(, 11441) +HANDLE_BAT(, 11442) +HANDLE_BAT(, 11443) +HANDLE_BAT(, 11444) +HANDLE_BAT(, 11445) +HANDLE_BAT(, 11446) +HANDLE_BAT(, 11447) +HANDLE_BAT(, 11448) +HANDLE_BAT(, 11449) +HANDLE_BAT(, 11450) +HANDLE_BAT(, 11451) +HANDLE_BAT(, 11452) +HANDLE_BAT(, 11453) +HANDLE_BAT(, 11454) +HANDLE_BAT(, 11455) +HANDLE_BAT(, 11456) +HANDLE_BAT(, 11457) +HANDLE_BAT(, 11458) +HANDLE_BAT(, 11459) +HANDLE_BAT(, 11460) +HANDLE_BAT(, 11461) +HANDLE_BAT(, 11462) +HANDLE_BAT(, 11463) +HANDLE_BAT(, 11464) +HANDLE_BAT(, 11465) +HANDLE_BAT(, 11466) +HANDLE_BAT(, 11467) +HANDLE_BAT(, 11468) +HANDLE_BAT(, 11469) +HANDLE_BAT(, 11470) +HANDLE_BAT(, 11471) +HANDLE_BAT(, 11472) +HANDLE_BAT(, 11473) +HANDLE_BAT(, 11474) +HANDLE_BAT(, 11475) +HANDLE_BAT(, 11476) +HANDLE_BAT(, 11477) +HANDLE_BAT(, 11478) +HANDLE_BAT(, 11479) +HANDLE_BAT(, 11480) +HANDLE_BAT(, 11481) +HANDLE_BAT(, 11482) +HANDLE_BAT(, 11483) +HANDLE_BAT(, 11484) +HANDLE_BAT(, 11485) +HANDLE_BAT(, 11486) +HANDLE_BAT(, 11487) +HANDLE_BAT(, 11488) +HANDLE_BAT(, 11489) +HANDLE_BAT(, 11490) +HANDLE_BAT(, 11491) +HANDLE_BAT(, 11492) +HANDLE_BAT(, 11493) +HANDLE_BAT(, 11494) +HANDLE_BAT(, 11495) +HANDLE_BAT(, 11496) +HANDLE_BAT(, 11497) +HANDLE_BAT(, 11498) +HANDLE_BAT(, 11499) +HANDLE_BAT(, 11500) +HANDLE_BAT(, 11501) +HANDLE_BAT(, 11502) +HANDLE_BAT(, 11503) +HANDLE_BAT(, 11504) +HANDLE_BAT(, 11505) +HANDLE_BAT(, 11506) +HANDLE_BAT(, 11507) +HANDLE_BAT(, 11508) +HANDLE_BAT(, 11509) +HANDLE_BAT(, 11510) +HANDLE_BAT(, 11511) +HANDLE_BAT(, 11512) +HANDLE_BAT(, 11513) +HANDLE_BAT(, 11514) +HANDLE_BAT(, 11515) +HANDLE_BAT(, 11516) +HANDLE_BAT(, 11517) +HANDLE_BAT(, 11518) +HANDLE_BAT(, 11519) +HANDLE_BAT(, 11520) +HANDLE_BAT(, 11521) +HANDLE_BAT(, 11522) +HANDLE_BAT(, 11523) +HANDLE_BAT(, 11524) +HANDLE_BAT(, 11525) +HANDLE_BAT(, 11526) +HANDLE_BAT(, 11527) +HANDLE_BAT(, 11528) +HANDLE_BAT(, 11529) +HANDLE_BAT(, 11530) +HANDLE_BAT(, 11531) +HANDLE_BAT(, 11532) +HANDLE_BAT(, 11533) +HANDLE_BAT(, 11534) +HANDLE_BAT(, 11535) +HANDLE_BAT(, 11536) +HANDLE_BAT(, 11537) +HANDLE_BAT(, 11538) +HANDLE_BAT(, 11539) +HANDLE_BAT(, 11540) +HANDLE_BAT(, 11541) +HANDLE_BAT(, 11542) +HANDLE_BAT(, 11543) +HANDLE_BAT(, 11544) +HANDLE_BAT(, 11545) +HANDLE_BAT(, 11546) +HANDLE_BAT(, 11547) +HANDLE_BAT(, 11548) +HANDLE_BAT(, 11549) +HANDLE_BAT(, 11550) +HANDLE_BAT(, 11551) +HANDLE_BAT(, 11552) +HANDLE_BAT(, 11553) +HANDLE_BAT(, 11554) +HANDLE_BAT(, 11555) +HANDLE_BAT(, 11556) +HANDLE_BAT(, 11557) +HANDLE_BAT(, 11558) +HANDLE_BAT(, 11559) +HANDLE_BAT(, 11560) +HANDLE_BAT(, 11561) +HANDLE_BAT(, 11562) +HANDLE_BAT(, 11563) +HANDLE_BAT(, 11564) +HANDLE_BAT(, 11565) +HANDLE_BAT(, 11566) +HANDLE_BAT(, 11567) +HANDLE_BAT(, 11568) +HANDLE_BAT(, 11569) +HANDLE_BAT(, 11570) +HANDLE_BAT(, 11571) +HANDLE_BAT(, 11572) +HANDLE_BAT(, 11573) +HANDLE_BAT(, 11574) +HANDLE_BAT(, 11575) +HANDLE_BAT(, 11576) +HANDLE_BAT(, 11577) +HANDLE_BAT(, 11578) +HANDLE_BAT(, 11579) +HANDLE_BAT(, 11580) +HANDLE_BAT(, 11581) +HANDLE_BAT(, 11582) +HANDLE_BAT(, 11583) +HANDLE_BAT(, 11584) +HANDLE_BAT(, 11585) +HANDLE_BAT(, 11586) +HANDLE_BAT(, 11587) +HANDLE_BAT(, 11588) +HANDLE_BAT(, 11589) +HANDLE_BAT(, 11590) +HANDLE_BAT(, 11591) +HANDLE_BAT(, 11592) +HANDLE_BAT(, 11593) +HANDLE_BAT(, 11594) +HANDLE_BAT(, 11595) +HANDLE_BAT(, 11596) +HANDLE_BAT(, 11597) +HANDLE_BAT(, 11598) +HANDLE_BAT(, 11599) +HANDLE_BAT(, 11600) +HANDLE_BAT(, 11601) +HANDLE_BAT(, 11602) +HANDLE_BAT(, 11603) +HANDLE_BAT(, 11604) +HANDLE_BAT(, 11605) +HANDLE_BAT(, 11606) +HANDLE_BAT(, 11607) +HANDLE_BAT(, 11608) +HANDLE_BAT(, 11609) +HANDLE_BAT(, 11610) +HANDLE_BAT(, 11611) +HANDLE_BAT(, 11612) +HANDLE_BAT(, 11613) +HANDLE_BAT(, 11614) +HANDLE_BAT(, 11615) +HANDLE_BAT(, 11616) +HANDLE_BAT(, 11617) +HANDLE_BAT(, 11618) +HANDLE_BAT(, 11619) +HANDLE_BAT(, 11620) +HANDLE_BAT(, 11621) +HANDLE_BAT(, 11622) +HANDLE_BAT(, 11623) +HANDLE_BAT(, 11624) +HANDLE_BAT(, 11625) +HANDLE_BAT(, 11626) +HANDLE_BAT(, 11627) +HANDLE_BAT(, 11628) +HANDLE_BAT(, 11629) +HANDLE_BAT(, 11630) +HANDLE_BAT(, 11631) +HANDLE_BAT(, 11632) +HANDLE_BAT(, 11633) +HANDLE_BAT(, 11634) +HANDLE_BAT(, 11635) +HANDLE_BAT(, 11636) +HANDLE_BAT(, 11637) +HANDLE_BAT(, 11638) +HANDLE_BAT(, 11639) +HANDLE_BAT(, 11640) +HANDLE_BAT(, 11641) +HANDLE_BAT(, 11642) +HANDLE_BAT(, 11643) +HANDLE_BAT(, 11644) +HANDLE_BAT(, 11645) +HANDLE_BAT(, 11646) +HANDLE_BAT(, 11647) +HANDLE_BAT(, 11648) +HANDLE_BAT(, 11649) +HANDLE_BAT(, 11650) +HANDLE_BAT(, 11651) +HANDLE_BAT(, 11652) +HANDLE_BAT(, 11653) +HANDLE_BAT(, 11654) +HANDLE_BAT(, 11655) +HANDLE_BAT(, 11656) +HANDLE_BAT(, 11657) +HANDLE_BAT(, 11658) +HANDLE_BAT(, 11659) +HANDLE_BAT(, 11660) +HANDLE_BAT(, 11661) +HANDLE_BAT(, 11662) +HANDLE_BAT(, 11663) +HANDLE_BAT(, 11664) +HANDLE_BAT(, 11665) +HANDLE_BAT(, 11666) +HANDLE_BAT(, 11667) +HANDLE_BAT(, 11668) +HANDLE_BAT(, 11669) +HANDLE_BAT(, 11670) +HANDLE_BAT(, 11671) +HANDLE_BAT(, 11672) +HANDLE_BAT(, 11673) +HANDLE_BAT(, 11674) +HANDLE_BAT(, 11675) +HANDLE_BAT(, 11676) +HANDLE_BAT(, 11677) +HANDLE_BAT(, 11678) +HANDLE_BAT(, 11679) +HANDLE_BAT(, 11680) +HANDLE_BAT(, 11681) +HANDLE_BAT(, 11682) +HANDLE_BAT(, 11683) +HANDLE_BAT(, 11684) +HANDLE_BAT(, 11685) +HANDLE_BAT(, 11686) +HANDLE_BAT(, 11687) +HANDLE_BAT(, 11688) +HANDLE_BAT(, 11689) +HANDLE_BAT(, 11690) +HANDLE_BAT(, 11691) +HANDLE_BAT(, 11692) +HANDLE_BAT(, 11693) +HANDLE_BAT(, 11694) +HANDLE_BAT(, 11695) +HANDLE_BAT(, 11696) +HANDLE_BAT(, 11697) +HANDLE_BAT(, 11698) +HANDLE_BAT(, 11699) +HANDLE_BAT(, 11700) +HANDLE_BAT(, 11701) +HANDLE_BAT(, 11702) +HANDLE_BAT(, 11703) +HANDLE_BAT(, 11704) +HANDLE_BAT(, 11705) +HANDLE_BAT(, 11706) +HANDLE_BAT(, 11707) +HANDLE_BAT(, 11708) +HANDLE_BAT(, 11709) +HANDLE_BAT(, 11710) +HANDLE_BAT(, 11711) +HANDLE_BAT(, 11712) +HANDLE_BAT(, 11713) +HANDLE_BAT(, 11714) +HANDLE_BAT(, 11715) +HANDLE_BAT(, 11716) +HANDLE_BAT(, 11717) +HANDLE_BAT(, 11718) +HANDLE_BAT(, 11719) +HANDLE_BAT(, 11720) +HANDLE_BAT(, 11721) +HANDLE_BAT(, 11722) +HANDLE_BAT(, 11723) +HANDLE_BAT(, 11724) +HANDLE_BAT(, 11725) +HANDLE_BAT(, 11726) +HANDLE_BAT(, 11727) +HANDLE_BAT(, 11728) +HANDLE_BAT(, 11729) +HANDLE_BAT(, 11730) +HANDLE_BAT(, 11731) +HANDLE_BAT(, 11732) +HANDLE_BAT(, 11733) +HANDLE_BAT(, 11734) +HANDLE_BAT(, 11735) +HANDLE_BAT(, 11736) +HANDLE_BAT(, 11737) +HANDLE_BAT(, 11738) +HANDLE_BAT(, 11739) +HANDLE_BAT(, 11740) +HANDLE_BAT(, 11741) +HANDLE_BAT(, 11742) +HANDLE_BAT(, 11743) +HANDLE_BAT(, 11744) +HANDLE_BAT(, 11745) +HANDLE_BAT(, 11746) +HANDLE_BAT(, 11747) +HANDLE_BAT(, 11748) +HANDLE_BAT(, 11749) +HANDLE_BAT(, 11750) +HANDLE_BAT(, 11751) +HANDLE_BAT(, 11752) +HANDLE_BAT(, 11753) +HANDLE_BAT(, 11754) +HANDLE_BAT(, 11755) +HANDLE_BAT(, 11756) +HANDLE_BAT(, 11757) +HANDLE_BAT(, 11758) +HANDLE_BAT(, 11759) +HANDLE_BAT(, 11760) +HANDLE_BAT(, 11761) +HANDLE_BAT(, 11762) +HANDLE_BAT(, 11763) +HANDLE_BAT(, 11764) +HANDLE_BAT(, 11765) +HANDLE_BAT(, 11766) +HANDLE_BAT(, 11767) +HANDLE_BAT(, 11768) +HANDLE_BAT(, 11769) +HANDLE_BAT(, 11770) +HANDLE_BAT(, 11771) +HANDLE_BAT(, 11772) +HANDLE_BAT(, 11773) +HANDLE_BAT(, 11774) +HANDLE_BAT(, 11775) +HANDLE_BAT(, 11776) +HANDLE_BAT(, 11777) +HANDLE_BAT(, 11778) +HANDLE_BAT(, 11779) +HANDLE_BAT(, 11780) +HANDLE_BAT(, 11781) +HANDLE_BAT(, 11782) +HANDLE_BAT(, 11783) +HANDLE_BAT(, 11784) +HANDLE_BAT(, 11785) +HANDLE_BAT(, 11786) +HANDLE_BAT(, 11787) +HANDLE_BAT(, 11788) +HANDLE_BAT(, 11789) +HANDLE_BAT(, 11790) +HANDLE_BAT(, 11791) +HANDLE_BAT(, 11792) +HANDLE_BAT(, 11793) +HANDLE_BAT(, 11794) +HANDLE_BAT(, 11795) +HANDLE_BAT(, 11796) +HANDLE_BAT(, 11797) +HANDLE_BAT(, 11798) +HANDLE_BAT(, 11799) +HANDLE_BAT(, 11800) +HANDLE_BAT(, 11801) +HANDLE_BAT(, 11802) +HANDLE_BAT(, 11803) +HANDLE_BAT(, 11804) +HANDLE_BAT(, 11805) +HANDLE_BAT(, 11806) +HANDLE_BAT(, 11807) +HANDLE_BAT(, 11808) +HANDLE_BAT(, 11809) +HANDLE_BAT(, 11810) +HANDLE_BAT(, 11811) +HANDLE_BAT(, 11812) +HANDLE_BAT(, 11813) +HANDLE_BAT(, 11814) +HANDLE_BAT(, 11815) +HANDLE_BAT(, 11816) +HANDLE_BAT(, 11817) +HANDLE_BAT(, 11818) +HANDLE_BAT(, 11819) +HANDLE_BAT(, 11820) +HANDLE_BAT(, 11821) +HANDLE_BAT(, 11822) +HANDLE_BAT(, 11823) +HANDLE_BAT(, 11824) +HANDLE_BAT(, 11825) +HANDLE_BAT(, 11826) +HANDLE_BAT(, 11827) +HANDLE_BAT(, 11828) +HANDLE_BAT(, 11829) +HANDLE_BAT(, 11830) +HANDLE_BAT(, 11831) +HANDLE_BAT(, 11832) +HANDLE_BAT(, 11833) +HANDLE_BAT(, 11834) +HANDLE_BAT(, 11835) +HANDLE_BAT(, 11836) +HANDLE_BAT(, 11837) +HANDLE_BAT(, 11838) +HANDLE_BAT(, 11839) +HANDLE_BAT(, 11840) +HANDLE_BAT(, 11841) +HANDLE_BAT(, 11842) +HANDLE_BAT(, 11843) +HANDLE_BAT(, 11844) +HANDLE_BAT(, 11845) +HANDLE_BAT(, 11846) +HANDLE_BAT(, 11847) +HANDLE_BAT(, 11848) +HANDLE_BAT(, 11849) +HANDLE_BAT(, 11850) +HANDLE_BAT(, 11851) +HANDLE_BAT(, 11852) +HANDLE_BAT(, 11853) +HANDLE_BAT(, 11854) +HANDLE_BAT(, 11855) +HANDLE_BAT(, 11856) +HANDLE_BAT(, 11857) +HANDLE_BAT(, 11858) +HANDLE_BAT(, 11859) +HANDLE_BAT(, 11860) +HANDLE_BAT(, 11861) +HANDLE_BAT(, 11862) +HANDLE_BAT(, 11863) +HANDLE_BAT(, 11864) +HANDLE_BAT(, 11865) +HANDLE_BAT(, 11866) +HANDLE_BAT(, 11867) +HANDLE_BAT(, 11868) +HANDLE_BAT(, 11869) +HANDLE_BAT(, 11870) +HANDLE_BAT(, 11871) +HANDLE_BAT(, 11872) +HANDLE_BAT(, 11873) +HANDLE_BAT(, 11874) +HANDLE_BAT(, 11875) +HANDLE_BAT(, 11876) +HANDLE_BAT(, 11877) +HANDLE_BAT(, 11878) +HANDLE_BAT(, 11879) +HANDLE_BAT(, 11880) +HANDLE_BAT(, 11881) +HANDLE_BAT(, 11882) +HANDLE_BAT(, 11883) +HANDLE_BAT(, 11884) +HANDLE_BAT(, 11885) +HANDLE_BAT(, 11886) +HANDLE_BAT(, 11887) +HANDLE_BAT(, 11888) +HANDLE_BAT(, 11889) +HANDLE_BAT(, 11890) +HANDLE_BAT(, 11891) +HANDLE_BAT(, 11892) +HANDLE_BAT(, 11893) +HANDLE_BAT(, 11894) +HANDLE_BAT(, 11895) +HANDLE_BAT(, 11896) +HANDLE_BAT(, 11897) +HANDLE_BAT(, 11898) +HANDLE_BAT(, 11899) +HANDLE_BAT(, 11900) +HANDLE_BAT(, 11901) +HANDLE_BAT(, 11902) +HANDLE_BAT(, 11903) +HANDLE_BAT(, 11904) +HANDLE_BAT(, 11905) +HANDLE_BAT(, 11906) +HANDLE_BAT(, 11907) +HANDLE_BAT(, 11908) +HANDLE_BAT(, 11909) +HANDLE_BAT(, 11910) +HANDLE_BAT(, 11911) +HANDLE_BAT(, 11912) +HANDLE_BAT(, 11913) +HANDLE_BAT(, 11914) +HANDLE_BAT(, 11915) +HANDLE_BAT(, 11916) +HANDLE_BAT(, 11917) +HANDLE_BAT(, 11918) +HANDLE_BAT(, 11919) +HANDLE_BAT(, 11920) +HANDLE_BAT(, 11921) +HANDLE_BAT(, 11922) +HANDLE_BAT(, 11923) +HANDLE_BAT(, 11924) +HANDLE_BAT(, 11925) +HANDLE_BAT(, 11926) +HANDLE_BAT(, 11927) +HANDLE_BAT(, 11928) +HANDLE_BAT(, 11929) +HANDLE_BAT(, 11930) +HANDLE_BAT(, 11931) +HANDLE_BAT(, 11932) +HANDLE_BAT(, 11933) +HANDLE_BAT(, 11934) +HANDLE_BAT(, 11935) +HANDLE_BAT(, 11936) +HANDLE_BAT(, 11937) +HANDLE_BAT(, 11938) +HANDLE_BAT(, 11939) +HANDLE_BAT(, 11940) +HANDLE_BAT(, 11941) +HANDLE_BAT(, 11942) +HANDLE_BAT(, 11943) +HANDLE_BAT(, 11944) +HANDLE_BAT(, 11945) +HANDLE_BAT(, 11946) +HANDLE_BAT(, 11947) +HANDLE_BAT(, 11948) +HANDLE_BAT(, 11949) +HANDLE_BAT(, 11950) +HANDLE_BAT(, 11951) +HANDLE_BAT(, 11952) +HANDLE_BAT(, 11953) +HANDLE_BAT(, 11954) +HANDLE_BAT(, 11955) +HANDLE_BAT(, 11956) +HANDLE_BAT(, 11957) +HANDLE_BAT(, 11958) +HANDLE_BAT(, 11959) +HANDLE_BAT(, 11960) +HANDLE_BAT(, 11961) +HANDLE_BAT(, 11962) +HANDLE_BAT(, 11963) +HANDLE_BAT(, 11964) +HANDLE_BAT(, 11965) +HANDLE_BAT(, 11966) +HANDLE_BAT(, 11967) +HANDLE_BAT(, 11968) +HANDLE_BAT(, 11969) +HANDLE_BAT(, 11970) +HANDLE_BAT(, 11971) +HANDLE_BAT(, 11972) +HANDLE_BAT(, 11973) +HANDLE_BAT(, 11974) +HANDLE_BAT(, 11975) +HANDLE_BAT(, 11976) +HANDLE_BAT(, 11977) +HANDLE_BAT(, 11978) +HANDLE_BAT(, 11979) +HANDLE_BAT(, 11980) +HANDLE_BAT(, 11981) +HANDLE_BAT(, 11982) +HANDLE_BAT(, 11983) +HANDLE_BAT(, 11984) +HANDLE_BAT(, 11985) +HANDLE_BAT(, 11986) +HANDLE_BAT(, 11987) +HANDLE_BAT(, 11988) +HANDLE_BAT(, 11989) +HANDLE_BAT(, 11990) +HANDLE_BAT(, 11991) +HANDLE_BAT(, 11992) +HANDLE_BAT(, 11993) +HANDLE_BAT(, 11994) +HANDLE_BAT(, 11995) +HANDLE_BAT(, 11996) +HANDLE_BAT(, 11997) +HANDLE_BAT(, 11998) +HANDLE_BAT(, 11999) +HANDLE_BAT(, 12000) +HANDLE_BAT(, 12001) +HANDLE_BAT(, 12002) +HANDLE_BAT(, 12003) +HANDLE_BAT(, 12004) +HANDLE_BAT(, 12005) +HANDLE_BAT(, 12006) +HANDLE_BAT(, 12007) +HANDLE_BAT(, 12008) +HANDLE_BAT(, 12009) +HANDLE_BAT(, 12010) +HANDLE_BAT(, 12011) +HANDLE_BAT(, 12012) +HANDLE_BAT(, 12013) +HANDLE_BAT(, 12014) +HANDLE_BAT(, 12015) +HANDLE_BAT(, 12016) +HANDLE_BAT(, 12017) +HANDLE_BAT(, 12018) +HANDLE_BAT(, 12019) +HANDLE_BAT(, 12020) +HANDLE_BAT(, 12021) +HANDLE_BAT(, 12022) +HANDLE_BAT(, 12023) +HANDLE_BAT(, 12024) +HANDLE_BAT(, 12025) +HANDLE_BAT(, 12026) +HANDLE_BAT(, 12027) +HANDLE_BAT(, 12028) +HANDLE_BAT(, 12029) +HANDLE_BAT(, 12030) +HANDLE_BAT(, 12031) +HANDLE_BAT(, 12032) +HANDLE_BAT(, 12033) +HANDLE_BAT(, 12034) +HANDLE_BAT(, 12035) +HANDLE_BAT(, 12036) +HANDLE_BAT(, 12037) +HANDLE_BAT(, 12038) +HANDLE_BAT(, 12039) +HANDLE_BAT(, 12040) +HANDLE_BAT(, 12041) +HANDLE_BAT(, 12042) +HANDLE_BAT(, 12043) +HANDLE_BAT(, 12044) +HANDLE_BAT(, 12045) +HANDLE_BAT(, 12046) +HANDLE_BAT(, 12047) +HANDLE_BAT(, 12048) +HANDLE_BAT(, 12049) +HANDLE_BAT(, 12050) +HANDLE_BAT(, 12051) +HANDLE_BAT(, 12052) +HANDLE_BAT(, 12053) +HANDLE_BAT(, 12054) +HANDLE_BAT(, 12055) +HANDLE_BAT(, 12056) +HANDLE_BAT(, 12057) +HANDLE_BAT(, 12058) +HANDLE_BAT(, 12059) +HANDLE_BAT(, 12060) +HANDLE_BAT(, 12061) +HANDLE_BAT(, 12062) +HANDLE_BAT(, 12063) +HANDLE_BAT(, 12064) +HANDLE_BAT(, 12065) +HANDLE_BAT(, 12066) +HANDLE_BAT(, 12067) +HANDLE_BAT(, 12068) +HANDLE_BAT(, 12069) +HANDLE_BAT(, 12070) +HANDLE_BAT(, 12071) +HANDLE_BAT(, 12072) +HANDLE_BAT(, 12073) +HANDLE_BAT(, 12074) +HANDLE_BAT(, 12075) +HANDLE_BAT(, 12076) +HANDLE_BAT(, 12077) +HANDLE_BAT(, 12078) +HANDLE_BAT(, 12079) +HANDLE_BAT(, 12080) +HANDLE_BAT(, 12081) +HANDLE_BAT(, 12082) +HANDLE_BAT(, 12083) +HANDLE_BAT(, 12084) +HANDLE_BAT(, 12085) +HANDLE_BAT(, 12086) +HANDLE_BAT(, 12087) +HANDLE_BAT(, 12088) +HANDLE_BAT(, 12089) +HANDLE_BAT(, 12090) +HANDLE_BAT(, 12091) +HANDLE_BAT(, 12092) +HANDLE_BAT(, 12093) +HANDLE_BAT(, 12094) +HANDLE_BAT(, 12095) +HANDLE_BAT(, 12096) +HANDLE_BAT(, 12097) +HANDLE_BAT(, 12098) +HANDLE_BAT(, 12099) +HANDLE_BAT(, 12100) +HANDLE_BAT(, 12101) +HANDLE_BAT(, 12102) +HANDLE_BAT(, 12103) +HANDLE_BAT(, 12104) +HANDLE_BAT(, 12105) +HANDLE_BAT(, 12106) +HANDLE_BAT(, 12107) +HANDLE_BAT(, 12108) +HANDLE_BAT(, 12109) +HANDLE_BAT(, 12110) +HANDLE_BAT(, 12111) +HANDLE_BAT(, 12112) +HANDLE_BAT(, 12113) +HANDLE_BAT(, 12114) +HANDLE_BAT(, 12115) +HANDLE_BAT(, 12116) +HANDLE_BAT(, 12117) +HANDLE_BAT(, 12118) +HANDLE_BAT(, 12119) +HANDLE_BAT(, 12120) +HANDLE_BAT(, 12121) +HANDLE_BAT(, 12122) +HANDLE_BAT(, 12123) +HANDLE_BAT(, 12124) +HANDLE_BAT(, 12125) +HANDLE_BAT(, 12126) +HANDLE_BAT(, 12127) +HANDLE_BAT(, 12128) +HANDLE_BAT(, 12129) +HANDLE_BAT(, 12130) +HANDLE_BAT(, 12131) +HANDLE_BAT(, 12132) +HANDLE_BAT(, 12133) +HANDLE_BAT(, 12134) +HANDLE_BAT(, 12135) +HANDLE_BAT(, 12136) +HANDLE_BAT(, 12137) +HANDLE_BAT(, 12138) +HANDLE_BAT(, 12139) +HANDLE_BAT(, 12140) +HANDLE_BAT(, 12141) +HANDLE_BAT(, 12142) +HANDLE_BAT(, 12143) +HANDLE_BAT(, 12144) +HANDLE_BAT(, 12145) +HANDLE_BAT(, 12146) +HANDLE_BAT(, 12147) +HANDLE_BAT(, 12148) +HANDLE_BAT(, 12149) +HANDLE_BAT(, 12150) +HANDLE_BAT(, 12151) +HANDLE_BAT(, 12152) +HANDLE_BAT(, 12153) +HANDLE_BAT(, 12154) +HANDLE_BAT(, 12155) +HANDLE_BAT(, 12156) +HANDLE_BAT(, 12157) +HANDLE_BAT(, 12158) +HANDLE_BAT(, 12159) +HANDLE_BAT(, 12160) +HANDLE_BAT(, 12161) +HANDLE_BAT(, 12162) +HANDLE_BAT(, 12163) +HANDLE_BAT(, 12164) +HANDLE_BAT(, 12165) +HANDLE_BAT(, 12166) +HANDLE_BAT(, 12167) +HANDLE_BAT(, 12168) +HANDLE_BAT(, 12169) +HANDLE_BAT(, 12170) +HANDLE_BAT(, 12171) +HANDLE_BAT(, 12172) +HANDLE_BAT(, 12173) +HANDLE_BAT(, 12174) +HANDLE_BAT(, 12175) +HANDLE_BAT(, 12176) +HANDLE_BAT(, 12177) +HANDLE_BAT(, 12178) +HANDLE_BAT(, 12179) +HANDLE_BAT(, 12180) +HANDLE_BAT(, 12181) +HANDLE_BAT(, 12182) +HANDLE_BAT(, 12183) +HANDLE_BAT(, 12184) +HANDLE_BAT(, 12185) +HANDLE_BAT(, 12186) +HANDLE_BAT(, 12187) +HANDLE_BAT(, 12188) +HANDLE_BAT(, 12189) +HANDLE_BAT(, 12190) +HANDLE_BAT(, 12191) +HANDLE_BAT(, 12192) +HANDLE_BAT(, 12193) +HANDLE_BAT(, 12194) +HANDLE_BAT(, 12195) +HANDLE_BAT(, 12196) +HANDLE_BAT(, 12197) +HANDLE_BAT(, 12198) +HANDLE_BAT(, 12199) +HANDLE_BAT(, 12200) +HANDLE_BAT(, 12201) +HANDLE_BAT(, 12202) +HANDLE_BAT(, 12203) +HANDLE_BAT(, 12204) +HANDLE_BAT(, 12205) +HANDLE_BAT(, 12206) +HANDLE_BAT(, 12207) +HANDLE_BAT(, 12208) +HANDLE_BAT(, 12209) +HANDLE_BAT(, 12210) +HANDLE_BAT(, 12211) +HANDLE_BAT(, 12212) +HANDLE_BAT(, 12213) +HANDLE_BAT(, 12214) +HANDLE_BAT(, 12215) +HANDLE_BAT(, 12216) +HANDLE_BAT(, 12217) +HANDLE_BAT(, 12218) +HANDLE_BAT(, 12219) +HANDLE_BAT(, 12220) +HANDLE_BAT(, 12221) +HANDLE_BAT(, 12222) +HANDLE_BAT(, 12223) +HANDLE_BAT(, 12224) +HANDLE_BAT(, 12225) +HANDLE_BAT(, 12226) +HANDLE_BAT(, 12227) +HANDLE_BAT(, 12228) +HANDLE_BAT(, 12229) +HANDLE_BAT(, 12230) +HANDLE_BAT(, 12231) +HANDLE_BAT(, 12232) +HANDLE_BAT(, 12233) +HANDLE_BAT(, 12234) +HANDLE_BAT(, 12235) +HANDLE_BAT(, 12236) +HANDLE_BAT(, 12237) +HANDLE_BAT(, 12238) +HANDLE_BAT(, 12239) +HANDLE_BAT(, 12240) +HANDLE_BAT(, 12241) +HANDLE_BAT(, 12242) +HANDLE_BAT(, 12243) +HANDLE_BAT(, 12244) +HANDLE_BAT(, 12245) +HANDLE_BAT(, 12246) +HANDLE_BAT(, 12247) +HANDLE_BAT(, 12248) +HANDLE_BAT(, 12249) +HANDLE_BAT(, 12250) +HANDLE_BAT(, 12251) +HANDLE_BAT(, 12252) +HANDLE_BAT(, 12253) +HANDLE_BAT(, 12254) +HANDLE_BAT(, 12255) +HANDLE_BAT(, 12256) +HANDLE_BAT(, 12257) +HANDLE_BAT(, 12258) +HANDLE_BAT(, 12259) +HANDLE_BAT(, 12260) +HANDLE_BAT(, 12261) +HANDLE_BAT(, 12262) +HANDLE_BAT(, 12263) +HANDLE_BAT(, 12264) +HANDLE_BAT(, 12265) +HANDLE_BAT(, 12266) +HANDLE_BAT(, 12267) +HANDLE_BAT(, 12268) +HANDLE_BAT(, 12269) +HANDLE_BAT(, 12270) +HANDLE_BAT(, 12271) +HANDLE_BAT(, 12272) +HANDLE_BAT(, 12273) +HANDLE_BAT(, 12274) +HANDLE_BAT(, 12275) +HANDLE_BAT(, 12276) +HANDLE_BAT(, 12277) +HANDLE_BAT(, 12278) +HANDLE_BAT(, 12279) +HANDLE_BAT(, 12280) +HANDLE_BAT(, 12281) +HANDLE_BAT(, 12282) +HANDLE_BAT(, 12283) +HANDLE_BAT(, 12284) +HANDLE_BAT(, 12285) +HANDLE_BAT(, 12286) +HANDLE_BAT(, 12287) +HANDLE_BAT(, 12288) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 11265) +HANDLE_BAT(APINT_TYPE_PREFIX, 11266) +HANDLE_BAT(APINT_TYPE_PREFIX, 11267) +HANDLE_BAT(APINT_TYPE_PREFIX, 11268) +HANDLE_BAT(APINT_TYPE_PREFIX, 11269) +HANDLE_BAT(APINT_TYPE_PREFIX, 11270) +HANDLE_BAT(APINT_TYPE_PREFIX, 11271) +HANDLE_BAT(APINT_TYPE_PREFIX, 11272) +HANDLE_BAT(APINT_TYPE_PREFIX, 11273) +HANDLE_BAT(APINT_TYPE_PREFIX, 11274) +HANDLE_BAT(APINT_TYPE_PREFIX, 11275) +HANDLE_BAT(APINT_TYPE_PREFIX, 11276) +HANDLE_BAT(APINT_TYPE_PREFIX, 11277) +HANDLE_BAT(APINT_TYPE_PREFIX, 11278) +HANDLE_BAT(APINT_TYPE_PREFIX, 11279) +HANDLE_BAT(APINT_TYPE_PREFIX, 11280) +HANDLE_BAT(APINT_TYPE_PREFIX, 11281) +HANDLE_BAT(APINT_TYPE_PREFIX, 11282) +HANDLE_BAT(APINT_TYPE_PREFIX, 11283) +HANDLE_BAT(APINT_TYPE_PREFIX, 11284) +HANDLE_BAT(APINT_TYPE_PREFIX, 11285) +HANDLE_BAT(APINT_TYPE_PREFIX, 11286) +HANDLE_BAT(APINT_TYPE_PREFIX, 11287) +HANDLE_BAT(APINT_TYPE_PREFIX, 11288) +HANDLE_BAT(APINT_TYPE_PREFIX, 11289) +HANDLE_BAT(APINT_TYPE_PREFIX, 11290) +HANDLE_BAT(APINT_TYPE_PREFIX, 11291) +HANDLE_BAT(APINT_TYPE_PREFIX, 11292) +HANDLE_BAT(APINT_TYPE_PREFIX, 11293) +HANDLE_BAT(APINT_TYPE_PREFIX, 11294) +HANDLE_BAT(APINT_TYPE_PREFIX, 11295) +HANDLE_BAT(APINT_TYPE_PREFIX, 11296) +HANDLE_BAT(APINT_TYPE_PREFIX, 11297) +HANDLE_BAT(APINT_TYPE_PREFIX, 11298) +HANDLE_BAT(APINT_TYPE_PREFIX, 11299) +HANDLE_BAT(APINT_TYPE_PREFIX, 11300) +HANDLE_BAT(APINT_TYPE_PREFIX, 11301) +HANDLE_BAT(APINT_TYPE_PREFIX, 11302) +HANDLE_BAT(APINT_TYPE_PREFIX, 11303) +HANDLE_BAT(APINT_TYPE_PREFIX, 11304) +HANDLE_BAT(APINT_TYPE_PREFIX, 11305) +HANDLE_BAT(APINT_TYPE_PREFIX, 11306) +HANDLE_BAT(APINT_TYPE_PREFIX, 11307) +HANDLE_BAT(APINT_TYPE_PREFIX, 11308) +HANDLE_BAT(APINT_TYPE_PREFIX, 11309) +HANDLE_BAT(APINT_TYPE_PREFIX, 11310) +HANDLE_BAT(APINT_TYPE_PREFIX, 11311) +HANDLE_BAT(APINT_TYPE_PREFIX, 11312) +HANDLE_BAT(APINT_TYPE_PREFIX, 11313) +HANDLE_BAT(APINT_TYPE_PREFIX, 11314) +HANDLE_BAT(APINT_TYPE_PREFIX, 11315) +HANDLE_BAT(APINT_TYPE_PREFIX, 11316) +HANDLE_BAT(APINT_TYPE_PREFIX, 11317) +HANDLE_BAT(APINT_TYPE_PREFIX, 11318) +HANDLE_BAT(APINT_TYPE_PREFIX, 11319) +HANDLE_BAT(APINT_TYPE_PREFIX, 11320) +HANDLE_BAT(APINT_TYPE_PREFIX, 11321) +HANDLE_BAT(APINT_TYPE_PREFIX, 11322) +HANDLE_BAT(APINT_TYPE_PREFIX, 11323) +HANDLE_BAT(APINT_TYPE_PREFIX, 11324) +HANDLE_BAT(APINT_TYPE_PREFIX, 11325) +HANDLE_BAT(APINT_TYPE_PREFIX, 11326) +HANDLE_BAT(APINT_TYPE_PREFIX, 11327) +HANDLE_BAT(APINT_TYPE_PREFIX, 11328) +HANDLE_BAT(APINT_TYPE_PREFIX, 11329) +HANDLE_BAT(APINT_TYPE_PREFIX, 11330) +HANDLE_BAT(APINT_TYPE_PREFIX, 11331) +HANDLE_BAT(APINT_TYPE_PREFIX, 11332) +HANDLE_BAT(APINT_TYPE_PREFIX, 11333) +HANDLE_BAT(APINT_TYPE_PREFIX, 11334) +HANDLE_BAT(APINT_TYPE_PREFIX, 11335) +HANDLE_BAT(APINT_TYPE_PREFIX, 11336) +HANDLE_BAT(APINT_TYPE_PREFIX, 11337) +HANDLE_BAT(APINT_TYPE_PREFIX, 11338) +HANDLE_BAT(APINT_TYPE_PREFIX, 11339) +HANDLE_BAT(APINT_TYPE_PREFIX, 11340) +HANDLE_BAT(APINT_TYPE_PREFIX, 11341) +HANDLE_BAT(APINT_TYPE_PREFIX, 11342) +HANDLE_BAT(APINT_TYPE_PREFIX, 11343) +HANDLE_BAT(APINT_TYPE_PREFIX, 11344) +HANDLE_BAT(APINT_TYPE_PREFIX, 11345) +HANDLE_BAT(APINT_TYPE_PREFIX, 11346) +HANDLE_BAT(APINT_TYPE_PREFIX, 11347) +HANDLE_BAT(APINT_TYPE_PREFIX, 11348) +HANDLE_BAT(APINT_TYPE_PREFIX, 11349) +HANDLE_BAT(APINT_TYPE_PREFIX, 11350) +HANDLE_BAT(APINT_TYPE_PREFIX, 11351) +HANDLE_BAT(APINT_TYPE_PREFIX, 11352) +HANDLE_BAT(APINT_TYPE_PREFIX, 11353) +HANDLE_BAT(APINT_TYPE_PREFIX, 11354) +HANDLE_BAT(APINT_TYPE_PREFIX, 11355) +HANDLE_BAT(APINT_TYPE_PREFIX, 11356) +HANDLE_BAT(APINT_TYPE_PREFIX, 11357) +HANDLE_BAT(APINT_TYPE_PREFIX, 11358) +HANDLE_BAT(APINT_TYPE_PREFIX, 11359) +HANDLE_BAT(APINT_TYPE_PREFIX, 11360) +HANDLE_BAT(APINT_TYPE_PREFIX, 11361) +HANDLE_BAT(APINT_TYPE_PREFIX, 11362) +HANDLE_BAT(APINT_TYPE_PREFIX, 11363) +HANDLE_BAT(APINT_TYPE_PREFIX, 11364) +HANDLE_BAT(APINT_TYPE_PREFIX, 11365) +HANDLE_BAT(APINT_TYPE_PREFIX, 11366) +HANDLE_BAT(APINT_TYPE_PREFIX, 11367) +HANDLE_BAT(APINT_TYPE_PREFIX, 11368) +HANDLE_BAT(APINT_TYPE_PREFIX, 11369) +HANDLE_BAT(APINT_TYPE_PREFIX, 11370) +HANDLE_BAT(APINT_TYPE_PREFIX, 11371) +HANDLE_BAT(APINT_TYPE_PREFIX, 11372) +HANDLE_BAT(APINT_TYPE_PREFIX, 11373) +HANDLE_BAT(APINT_TYPE_PREFIX, 11374) +HANDLE_BAT(APINT_TYPE_PREFIX, 11375) +HANDLE_BAT(APINT_TYPE_PREFIX, 11376) +HANDLE_BAT(APINT_TYPE_PREFIX, 11377) +HANDLE_BAT(APINT_TYPE_PREFIX, 11378) +HANDLE_BAT(APINT_TYPE_PREFIX, 11379) +HANDLE_BAT(APINT_TYPE_PREFIX, 11380) +HANDLE_BAT(APINT_TYPE_PREFIX, 11381) +HANDLE_BAT(APINT_TYPE_PREFIX, 11382) +HANDLE_BAT(APINT_TYPE_PREFIX, 11383) +HANDLE_BAT(APINT_TYPE_PREFIX, 11384) +HANDLE_BAT(APINT_TYPE_PREFIX, 11385) +HANDLE_BAT(APINT_TYPE_PREFIX, 11386) +HANDLE_BAT(APINT_TYPE_PREFIX, 11387) +HANDLE_BAT(APINT_TYPE_PREFIX, 11388) +HANDLE_BAT(APINT_TYPE_PREFIX, 11389) +HANDLE_BAT(APINT_TYPE_PREFIX, 11390) +HANDLE_BAT(APINT_TYPE_PREFIX, 11391) +HANDLE_BAT(APINT_TYPE_PREFIX, 11392) +HANDLE_BAT(APINT_TYPE_PREFIX, 11393) +HANDLE_BAT(APINT_TYPE_PREFIX, 11394) +HANDLE_BAT(APINT_TYPE_PREFIX, 11395) +HANDLE_BAT(APINT_TYPE_PREFIX, 11396) +HANDLE_BAT(APINT_TYPE_PREFIX, 11397) +HANDLE_BAT(APINT_TYPE_PREFIX, 11398) +HANDLE_BAT(APINT_TYPE_PREFIX, 11399) +HANDLE_BAT(APINT_TYPE_PREFIX, 11400) +HANDLE_BAT(APINT_TYPE_PREFIX, 11401) +HANDLE_BAT(APINT_TYPE_PREFIX, 11402) +HANDLE_BAT(APINT_TYPE_PREFIX, 11403) +HANDLE_BAT(APINT_TYPE_PREFIX, 11404) +HANDLE_BAT(APINT_TYPE_PREFIX, 11405) +HANDLE_BAT(APINT_TYPE_PREFIX, 11406) +HANDLE_BAT(APINT_TYPE_PREFIX, 11407) +HANDLE_BAT(APINT_TYPE_PREFIX, 11408) +HANDLE_BAT(APINT_TYPE_PREFIX, 11409) +HANDLE_BAT(APINT_TYPE_PREFIX, 11410) +HANDLE_BAT(APINT_TYPE_PREFIX, 11411) +HANDLE_BAT(APINT_TYPE_PREFIX, 11412) +HANDLE_BAT(APINT_TYPE_PREFIX, 11413) +HANDLE_BAT(APINT_TYPE_PREFIX, 11414) +HANDLE_BAT(APINT_TYPE_PREFIX, 11415) +HANDLE_BAT(APINT_TYPE_PREFIX, 11416) +HANDLE_BAT(APINT_TYPE_PREFIX, 11417) +HANDLE_BAT(APINT_TYPE_PREFIX, 11418) +HANDLE_BAT(APINT_TYPE_PREFIX, 11419) +HANDLE_BAT(APINT_TYPE_PREFIX, 11420) +HANDLE_BAT(APINT_TYPE_PREFIX, 11421) +HANDLE_BAT(APINT_TYPE_PREFIX, 11422) +HANDLE_BAT(APINT_TYPE_PREFIX, 11423) +HANDLE_BAT(APINT_TYPE_PREFIX, 11424) +HANDLE_BAT(APINT_TYPE_PREFIX, 11425) +HANDLE_BAT(APINT_TYPE_PREFIX, 11426) +HANDLE_BAT(APINT_TYPE_PREFIX, 11427) +HANDLE_BAT(APINT_TYPE_PREFIX, 11428) +HANDLE_BAT(APINT_TYPE_PREFIX, 11429) +HANDLE_BAT(APINT_TYPE_PREFIX, 11430) +HANDLE_BAT(APINT_TYPE_PREFIX, 11431) +HANDLE_BAT(APINT_TYPE_PREFIX, 11432) +HANDLE_BAT(APINT_TYPE_PREFIX, 11433) +HANDLE_BAT(APINT_TYPE_PREFIX, 11434) +HANDLE_BAT(APINT_TYPE_PREFIX, 11435) +HANDLE_BAT(APINT_TYPE_PREFIX, 11436) +HANDLE_BAT(APINT_TYPE_PREFIX, 11437) +HANDLE_BAT(APINT_TYPE_PREFIX, 11438) +HANDLE_BAT(APINT_TYPE_PREFIX, 11439) +HANDLE_BAT(APINT_TYPE_PREFIX, 11440) +HANDLE_BAT(APINT_TYPE_PREFIX, 11441) +HANDLE_BAT(APINT_TYPE_PREFIX, 11442) +HANDLE_BAT(APINT_TYPE_PREFIX, 11443) +HANDLE_BAT(APINT_TYPE_PREFIX, 11444) +HANDLE_BAT(APINT_TYPE_PREFIX, 11445) +HANDLE_BAT(APINT_TYPE_PREFIX, 11446) +HANDLE_BAT(APINT_TYPE_PREFIX, 11447) +HANDLE_BAT(APINT_TYPE_PREFIX, 11448) +HANDLE_BAT(APINT_TYPE_PREFIX, 11449) +HANDLE_BAT(APINT_TYPE_PREFIX, 11450) +HANDLE_BAT(APINT_TYPE_PREFIX, 11451) +HANDLE_BAT(APINT_TYPE_PREFIX, 11452) +HANDLE_BAT(APINT_TYPE_PREFIX, 11453) +HANDLE_BAT(APINT_TYPE_PREFIX, 11454) +HANDLE_BAT(APINT_TYPE_PREFIX, 11455) +HANDLE_BAT(APINT_TYPE_PREFIX, 11456) +HANDLE_BAT(APINT_TYPE_PREFIX, 11457) +HANDLE_BAT(APINT_TYPE_PREFIX, 11458) +HANDLE_BAT(APINT_TYPE_PREFIX, 11459) +HANDLE_BAT(APINT_TYPE_PREFIX, 11460) +HANDLE_BAT(APINT_TYPE_PREFIX, 11461) +HANDLE_BAT(APINT_TYPE_PREFIX, 11462) +HANDLE_BAT(APINT_TYPE_PREFIX, 11463) +HANDLE_BAT(APINT_TYPE_PREFIX, 11464) +HANDLE_BAT(APINT_TYPE_PREFIX, 11465) +HANDLE_BAT(APINT_TYPE_PREFIX, 11466) +HANDLE_BAT(APINT_TYPE_PREFIX, 11467) +HANDLE_BAT(APINT_TYPE_PREFIX, 11468) +HANDLE_BAT(APINT_TYPE_PREFIX, 11469) +HANDLE_BAT(APINT_TYPE_PREFIX, 11470) +HANDLE_BAT(APINT_TYPE_PREFIX, 11471) +HANDLE_BAT(APINT_TYPE_PREFIX, 11472) +HANDLE_BAT(APINT_TYPE_PREFIX, 11473) +HANDLE_BAT(APINT_TYPE_PREFIX, 11474) +HANDLE_BAT(APINT_TYPE_PREFIX, 11475) +HANDLE_BAT(APINT_TYPE_PREFIX, 11476) +HANDLE_BAT(APINT_TYPE_PREFIX, 11477) +HANDLE_BAT(APINT_TYPE_PREFIX, 11478) +HANDLE_BAT(APINT_TYPE_PREFIX, 11479) +HANDLE_BAT(APINT_TYPE_PREFIX, 11480) +HANDLE_BAT(APINT_TYPE_PREFIX, 11481) +HANDLE_BAT(APINT_TYPE_PREFIX, 11482) +HANDLE_BAT(APINT_TYPE_PREFIX, 11483) +HANDLE_BAT(APINT_TYPE_PREFIX, 11484) +HANDLE_BAT(APINT_TYPE_PREFIX, 11485) +HANDLE_BAT(APINT_TYPE_PREFIX, 11486) +HANDLE_BAT(APINT_TYPE_PREFIX, 11487) +HANDLE_BAT(APINT_TYPE_PREFIX, 11488) +HANDLE_BAT(APINT_TYPE_PREFIX, 11489) +HANDLE_BAT(APINT_TYPE_PREFIX, 11490) +HANDLE_BAT(APINT_TYPE_PREFIX, 11491) +HANDLE_BAT(APINT_TYPE_PREFIX, 11492) +HANDLE_BAT(APINT_TYPE_PREFIX, 11493) +HANDLE_BAT(APINT_TYPE_PREFIX, 11494) +HANDLE_BAT(APINT_TYPE_PREFIX, 11495) +HANDLE_BAT(APINT_TYPE_PREFIX, 11496) +HANDLE_BAT(APINT_TYPE_PREFIX, 11497) +HANDLE_BAT(APINT_TYPE_PREFIX, 11498) +HANDLE_BAT(APINT_TYPE_PREFIX, 11499) +HANDLE_BAT(APINT_TYPE_PREFIX, 11500) +HANDLE_BAT(APINT_TYPE_PREFIX, 11501) +HANDLE_BAT(APINT_TYPE_PREFIX, 11502) +HANDLE_BAT(APINT_TYPE_PREFIX, 11503) +HANDLE_BAT(APINT_TYPE_PREFIX, 11504) +HANDLE_BAT(APINT_TYPE_PREFIX, 11505) +HANDLE_BAT(APINT_TYPE_PREFIX, 11506) +HANDLE_BAT(APINT_TYPE_PREFIX, 11507) +HANDLE_BAT(APINT_TYPE_PREFIX, 11508) +HANDLE_BAT(APINT_TYPE_PREFIX, 11509) +HANDLE_BAT(APINT_TYPE_PREFIX, 11510) +HANDLE_BAT(APINT_TYPE_PREFIX, 11511) +HANDLE_BAT(APINT_TYPE_PREFIX, 11512) +HANDLE_BAT(APINT_TYPE_PREFIX, 11513) +HANDLE_BAT(APINT_TYPE_PREFIX, 11514) +HANDLE_BAT(APINT_TYPE_PREFIX, 11515) +HANDLE_BAT(APINT_TYPE_PREFIX, 11516) +HANDLE_BAT(APINT_TYPE_PREFIX, 11517) +HANDLE_BAT(APINT_TYPE_PREFIX, 11518) +HANDLE_BAT(APINT_TYPE_PREFIX, 11519) +HANDLE_BAT(APINT_TYPE_PREFIX, 11520) +HANDLE_BAT(APINT_TYPE_PREFIX, 11521) +HANDLE_BAT(APINT_TYPE_PREFIX, 11522) +HANDLE_BAT(APINT_TYPE_PREFIX, 11523) +HANDLE_BAT(APINT_TYPE_PREFIX, 11524) +HANDLE_BAT(APINT_TYPE_PREFIX, 11525) +HANDLE_BAT(APINT_TYPE_PREFIX, 11526) +HANDLE_BAT(APINT_TYPE_PREFIX, 11527) +HANDLE_BAT(APINT_TYPE_PREFIX, 11528) +HANDLE_BAT(APINT_TYPE_PREFIX, 11529) +HANDLE_BAT(APINT_TYPE_PREFIX, 11530) +HANDLE_BAT(APINT_TYPE_PREFIX, 11531) +HANDLE_BAT(APINT_TYPE_PREFIX, 11532) +HANDLE_BAT(APINT_TYPE_PREFIX, 11533) +HANDLE_BAT(APINT_TYPE_PREFIX, 11534) +HANDLE_BAT(APINT_TYPE_PREFIX, 11535) +HANDLE_BAT(APINT_TYPE_PREFIX, 11536) +HANDLE_BAT(APINT_TYPE_PREFIX, 11537) +HANDLE_BAT(APINT_TYPE_PREFIX, 11538) +HANDLE_BAT(APINT_TYPE_PREFIX, 11539) +HANDLE_BAT(APINT_TYPE_PREFIX, 11540) +HANDLE_BAT(APINT_TYPE_PREFIX, 11541) +HANDLE_BAT(APINT_TYPE_PREFIX, 11542) +HANDLE_BAT(APINT_TYPE_PREFIX, 11543) +HANDLE_BAT(APINT_TYPE_PREFIX, 11544) +HANDLE_BAT(APINT_TYPE_PREFIX, 11545) +HANDLE_BAT(APINT_TYPE_PREFIX, 11546) +HANDLE_BAT(APINT_TYPE_PREFIX, 11547) +HANDLE_BAT(APINT_TYPE_PREFIX, 11548) +HANDLE_BAT(APINT_TYPE_PREFIX, 11549) +HANDLE_BAT(APINT_TYPE_PREFIX, 11550) +HANDLE_BAT(APINT_TYPE_PREFIX, 11551) +HANDLE_BAT(APINT_TYPE_PREFIX, 11552) +HANDLE_BAT(APINT_TYPE_PREFIX, 11553) +HANDLE_BAT(APINT_TYPE_PREFIX, 11554) +HANDLE_BAT(APINT_TYPE_PREFIX, 11555) +HANDLE_BAT(APINT_TYPE_PREFIX, 11556) +HANDLE_BAT(APINT_TYPE_PREFIX, 11557) +HANDLE_BAT(APINT_TYPE_PREFIX, 11558) +HANDLE_BAT(APINT_TYPE_PREFIX, 11559) +HANDLE_BAT(APINT_TYPE_PREFIX, 11560) +HANDLE_BAT(APINT_TYPE_PREFIX, 11561) +HANDLE_BAT(APINT_TYPE_PREFIX, 11562) +HANDLE_BAT(APINT_TYPE_PREFIX, 11563) +HANDLE_BAT(APINT_TYPE_PREFIX, 11564) +HANDLE_BAT(APINT_TYPE_PREFIX, 11565) +HANDLE_BAT(APINT_TYPE_PREFIX, 11566) +HANDLE_BAT(APINT_TYPE_PREFIX, 11567) +HANDLE_BAT(APINT_TYPE_PREFIX, 11568) +HANDLE_BAT(APINT_TYPE_PREFIX, 11569) +HANDLE_BAT(APINT_TYPE_PREFIX, 11570) +HANDLE_BAT(APINT_TYPE_PREFIX, 11571) +HANDLE_BAT(APINT_TYPE_PREFIX, 11572) +HANDLE_BAT(APINT_TYPE_PREFIX, 11573) +HANDLE_BAT(APINT_TYPE_PREFIX, 11574) +HANDLE_BAT(APINT_TYPE_PREFIX, 11575) +HANDLE_BAT(APINT_TYPE_PREFIX, 11576) +HANDLE_BAT(APINT_TYPE_PREFIX, 11577) +HANDLE_BAT(APINT_TYPE_PREFIX, 11578) +HANDLE_BAT(APINT_TYPE_PREFIX, 11579) +HANDLE_BAT(APINT_TYPE_PREFIX, 11580) +HANDLE_BAT(APINT_TYPE_PREFIX, 11581) +HANDLE_BAT(APINT_TYPE_PREFIX, 11582) +HANDLE_BAT(APINT_TYPE_PREFIX, 11583) +HANDLE_BAT(APINT_TYPE_PREFIX, 11584) +HANDLE_BAT(APINT_TYPE_PREFIX, 11585) +HANDLE_BAT(APINT_TYPE_PREFIX, 11586) +HANDLE_BAT(APINT_TYPE_PREFIX, 11587) +HANDLE_BAT(APINT_TYPE_PREFIX, 11588) +HANDLE_BAT(APINT_TYPE_PREFIX, 11589) +HANDLE_BAT(APINT_TYPE_PREFIX, 11590) +HANDLE_BAT(APINT_TYPE_PREFIX, 11591) +HANDLE_BAT(APINT_TYPE_PREFIX, 11592) +HANDLE_BAT(APINT_TYPE_PREFIX, 11593) +HANDLE_BAT(APINT_TYPE_PREFIX, 11594) +HANDLE_BAT(APINT_TYPE_PREFIX, 11595) +HANDLE_BAT(APINT_TYPE_PREFIX, 11596) +HANDLE_BAT(APINT_TYPE_PREFIX, 11597) +HANDLE_BAT(APINT_TYPE_PREFIX, 11598) +HANDLE_BAT(APINT_TYPE_PREFIX, 11599) +HANDLE_BAT(APINT_TYPE_PREFIX, 11600) +HANDLE_BAT(APINT_TYPE_PREFIX, 11601) +HANDLE_BAT(APINT_TYPE_PREFIX, 11602) +HANDLE_BAT(APINT_TYPE_PREFIX, 11603) +HANDLE_BAT(APINT_TYPE_PREFIX, 11604) +HANDLE_BAT(APINT_TYPE_PREFIX, 11605) +HANDLE_BAT(APINT_TYPE_PREFIX, 11606) +HANDLE_BAT(APINT_TYPE_PREFIX, 11607) +HANDLE_BAT(APINT_TYPE_PREFIX, 11608) +HANDLE_BAT(APINT_TYPE_PREFIX, 11609) +HANDLE_BAT(APINT_TYPE_PREFIX, 11610) +HANDLE_BAT(APINT_TYPE_PREFIX, 11611) +HANDLE_BAT(APINT_TYPE_PREFIX, 11612) +HANDLE_BAT(APINT_TYPE_PREFIX, 11613) +HANDLE_BAT(APINT_TYPE_PREFIX, 11614) +HANDLE_BAT(APINT_TYPE_PREFIX, 11615) +HANDLE_BAT(APINT_TYPE_PREFIX, 11616) +HANDLE_BAT(APINT_TYPE_PREFIX, 11617) +HANDLE_BAT(APINT_TYPE_PREFIX, 11618) +HANDLE_BAT(APINT_TYPE_PREFIX, 11619) +HANDLE_BAT(APINT_TYPE_PREFIX, 11620) +HANDLE_BAT(APINT_TYPE_PREFIX, 11621) +HANDLE_BAT(APINT_TYPE_PREFIX, 11622) +HANDLE_BAT(APINT_TYPE_PREFIX, 11623) +HANDLE_BAT(APINT_TYPE_PREFIX, 11624) +HANDLE_BAT(APINT_TYPE_PREFIX, 11625) +HANDLE_BAT(APINT_TYPE_PREFIX, 11626) +HANDLE_BAT(APINT_TYPE_PREFIX, 11627) +HANDLE_BAT(APINT_TYPE_PREFIX, 11628) +HANDLE_BAT(APINT_TYPE_PREFIX, 11629) +HANDLE_BAT(APINT_TYPE_PREFIX, 11630) +HANDLE_BAT(APINT_TYPE_PREFIX, 11631) +HANDLE_BAT(APINT_TYPE_PREFIX, 11632) +HANDLE_BAT(APINT_TYPE_PREFIX, 11633) +HANDLE_BAT(APINT_TYPE_PREFIX, 11634) +HANDLE_BAT(APINT_TYPE_PREFIX, 11635) +HANDLE_BAT(APINT_TYPE_PREFIX, 11636) +HANDLE_BAT(APINT_TYPE_PREFIX, 11637) +HANDLE_BAT(APINT_TYPE_PREFIX, 11638) +HANDLE_BAT(APINT_TYPE_PREFIX, 11639) +HANDLE_BAT(APINT_TYPE_PREFIX, 11640) +HANDLE_BAT(APINT_TYPE_PREFIX, 11641) +HANDLE_BAT(APINT_TYPE_PREFIX, 11642) +HANDLE_BAT(APINT_TYPE_PREFIX, 11643) +HANDLE_BAT(APINT_TYPE_PREFIX, 11644) +HANDLE_BAT(APINT_TYPE_PREFIX, 11645) +HANDLE_BAT(APINT_TYPE_PREFIX, 11646) +HANDLE_BAT(APINT_TYPE_PREFIX, 11647) +HANDLE_BAT(APINT_TYPE_PREFIX, 11648) +HANDLE_BAT(APINT_TYPE_PREFIX, 11649) +HANDLE_BAT(APINT_TYPE_PREFIX, 11650) +HANDLE_BAT(APINT_TYPE_PREFIX, 11651) +HANDLE_BAT(APINT_TYPE_PREFIX, 11652) +HANDLE_BAT(APINT_TYPE_PREFIX, 11653) +HANDLE_BAT(APINT_TYPE_PREFIX, 11654) +HANDLE_BAT(APINT_TYPE_PREFIX, 11655) +HANDLE_BAT(APINT_TYPE_PREFIX, 11656) +HANDLE_BAT(APINT_TYPE_PREFIX, 11657) +HANDLE_BAT(APINT_TYPE_PREFIX, 11658) +HANDLE_BAT(APINT_TYPE_PREFIX, 11659) +HANDLE_BAT(APINT_TYPE_PREFIX, 11660) +HANDLE_BAT(APINT_TYPE_PREFIX, 11661) +HANDLE_BAT(APINT_TYPE_PREFIX, 11662) +HANDLE_BAT(APINT_TYPE_PREFIX, 11663) +HANDLE_BAT(APINT_TYPE_PREFIX, 11664) +HANDLE_BAT(APINT_TYPE_PREFIX, 11665) +HANDLE_BAT(APINT_TYPE_PREFIX, 11666) +HANDLE_BAT(APINT_TYPE_PREFIX, 11667) +HANDLE_BAT(APINT_TYPE_PREFIX, 11668) +HANDLE_BAT(APINT_TYPE_PREFIX, 11669) +HANDLE_BAT(APINT_TYPE_PREFIX, 11670) +HANDLE_BAT(APINT_TYPE_PREFIX, 11671) +HANDLE_BAT(APINT_TYPE_PREFIX, 11672) +HANDLE_BAT(APINT_TYPE_PREFIX, 11673) +HANDLE_BAT(APINT_TYPE_PREFIX, 11674) +HANDLE_BAT(APINT_TYPE_PREFIX, 11675) +HANDLE_BAT(APINT_TYPE_PREFIX, 11676) +HANDLE_BAT(APINT_TYPE_PREFIX, 11677) +HANDLE_BAT(APINT_TYPE_PREFIX, 11678) +HANDLE_BAT(APINT_TYPE_PREFIX, 11679) +HANDLE_BAT(APINT_TYPE_PREFIX, 11680) +HANDLE_BAT(APINT_TYPE_PREFIX, 11681) +HANDLE_BAT(APINT_TYPE_PREFIX, 11682) +HANDLE_BAT(APINT_TYPE_PREFIX, 11683) +HANDLE_BAT(APINT_TYPE_PREFIX, 11684) +HANDLE_BAT(APINT_TYPE_PREFIX, 11685) +HANDLE_BAT(APINT_TYPE_PREFIX, 11686) +HANDLE_BAT(APINT_TYPE_PREFIX, 11687) +HANDLE_BAT(APINT_TYPE_PREFIX, 11688) +HANDLE_BAT(APINT_TYPE_PREFIX, 11689) +HANDLE_BAT(APINT_TYPE_PREFIX, 11690) +HANDLE_BAT(APINT_TYPE_PREFIX, 11691) +HANDLE_BAT(APINT_TYPE_PREFIX, 11692) +HANDLE_BAT(APINT_TYPE_PREFIX, 11693) +HANDLE_BAT(APINT_TYPE_PREFIX, 11694) +HANDLE_BAT(APINT_TYPE_PREFIX, 11695) +HANDLE_BAT(APINT_TYPE_PREFIX, 11696) +HANDLE_BAT(APINT_TYPE_PREFIX, 11697) +HANDLE_BAT(APINT_TYPE_PREFIX, 11698) +HANDLE_BAT(APINT_TYPE_PREFIX, 11699) +HANDLE_BAT(APINT_TYPE_PREFIX, 11700) +HANDLE_BAT(APINT_TYPE_PREFIX, 11701) +HANDLE_BAT(APINT_TYPE_PREFIX, 11702) +HANDLE_BAT(APINT_TYPE_PREFIX, 11703) +HANDLE_BAT(APINT_TYPE_PREFIX, 11704) +HANDLE_BAT(APINT_TYPE_PREFIX, 11705) +HANDLE_BAT(APINT_TYPE_PREFIX, 11706) +HANDLE_BAT(APINT_TYPE_PREFIX, 11707) +HANDLE_BAT(APINT_TYPE_PREFIX, 11708) +HANDLE_BAT(APINT_TYPE_PREFIX, 11709) +HANDLE_BAT(APINT_TYPE_PREFIX, 11710) +HANDLE_BAT(APINT_TYPE_PREFIX, 11711) +HANDLE_BAT(APINT_TYPE_PREFIX, 11712) +HANDLE_BAT(APINT_TYPE_PREFIX, 11713) +HANDLE_BAT(APINT_TYPE_PREFIX, 11714) +HANDLE_BAT(APINT_TYPE_PREFIX, 11715) +HANDLE_BAT(APINT_TYPE_PREFIX, 11716) +HANDLE_BAT(APINT_TYPE_PREFIX, 11717) +HANDLE_BAT(APINT_TYPE_PREFIX, 11718) +HANDLE_BAT(APINT_TYPE_PREFIX, 11719) +HANDLE_BAT(APINT_TYPE_PREFIX, 11720) +HANDLE_BAT(APINT_TYPE_PREFIX, 11721) +HANDLE_BAT(APINT_TYPE_PREFIX, 11722) +HANDLE_BAT(APINT_TYPE_PREFIX, 11723) +HANDLE_BAT(APINT_TYPE_PREFIX, 11724) +HANDLE_BAT(APINT_TYPE_PREFIX, 11725) +HANDLE_BAT(APINT_TYPE_PREFIX, 11726) +HANDLE_BAT(APINT_TYPE_PREFIX, 11727) +HANDLE_BAT(APINT_TYPE_PREFIX, 11728) +HANDLE_BAT(APINT_TYPE_PREFIX, 11729) +HANDLE_BAT(APINT_TYPE_PREFIX, 11730) +HANDLE_BAT(APINT_TYPE_PREFIX, 11731) +HANDLE_BAT(APINT_TYPE_PREFIX, 11732) +HANDLE_BAT(APINT_TYPE_PREFIX, 11733) +HANDLE_BAT(APINT_TYPE_PREFIX, 11734) +HANDLE_BAT(APINT_TYPE_PREFIX, 11735) +HANDLE_BAT(APINT_TYPE_PREFIX, 11736) +HANDLE_BAT(APINT_TYPE_PREFIX, 11737) +HANDLE_BAT(APINT_TYPE_PREFIX, 11738) +HANDLE_BAT(APINT_TYPE_PREFIX, 11739) +HANDLE_BAT(APINT_TYPE_PREFIX, 11740) +HANDLE_BAT(APINT_TYPE_PREFIX, 11741) +HANDLE_BAT(APINT_TYPE_PREFIX, 11742) +HANDLE_BAT(APINT_TYPE_PREFIX, 11743) +HANDLE_BAT(APINT_TYPE_PREFIX, 11744) +HANDLE_BAT(APINT_TYPE_PREFIX, 11745) +HANDLE_BAT(APINT_TYPE_PREFIX, 11746) +HANDLE_BAT(APINT_TYPE_PREFIX, 11747) +HANDLE_BAT(APINT_TYPE_PREFIX, 11748) +HANDLE_BAT(APINT_TYPE_PREFIX, 11749) +HANDLE_BAT(APINT_TYPE_PREFIX, 11750) +HANDLE_BAT(APINT_TYPE_PREFIX, 11751) +HANDLE_BAT(APINT_TYPE_PREFIX, 11752) +HANDLE_BAT(APINT_TYPE_PREFIX, 11753) +HANDLE_BAT(APINT_TYPE_PREFIX, 11754) +HANDLE_BAT(APINT_TYPE_PREFIX, 11755) +HANDLE_BAT(APINT_TYPE_PREFIX, 11756) +HANDLE_BAT(APINT_TYPE_PREFIX, 11757) +HANDLE_BAT(APINT_TYPE_PREFIX, 11758) +HANDLE_BAT(APINT_TYPE_PREFIX, 11759) +HANDLE_BAT(APINT_TYPE_PREFIX, 11760) +HANDLE_BAT(APINT_TYPE_PREFIX, 11761) +HANDLE_BAT(APINT_TYPE_PREFIX, 11762) +HANDLE_BAT(APINT_TYPE_PREFIX, 11763) +HANDLE_BAT(APINT_TYPE_PREFIX, 11764) +HANDLE_BAT(APINT_TYPE_PREFIX, 11765) +HANDLE_BAT(APINT_TYPE_PREFIX, 11766) +HANDLE_BAT(APINT_TYPE_PREFIX, 11767) +HANDLE_BAT(APINT_TYPE_PREFIX, 11768) +HANDLE_BAT(APINT_TYPE_PREFIX, 11769) +HANDLE_BAT(APINT_TYPE_PREFIX, 11770) +HANDLE_BAT(APINT_TYPE_PREFIX, 11771) +HANDLE_BAT(APINT_TYPE_PREFIX, 11772) +HANDLE_BAT(APINT_TYPE_PREFIX, 11773) +HANDLE_BAT(APINT_TYPE_PREFIX, 11774) +HANDLE_BAT(APINT_TYPE_PREFIX, 11775) +HANDLE_BAT(APINT_TYPE_PREFIX, 11776) +HANDLE_BAT(APINT_TYPE_PREFIX, 11777) +HANDLE_BAT(APINT_TYPE_PREFIX, 11778) +HANDLE_BAT(APINT_TYPE_PREFIX, 11779) +HANDLE_BAT(APINT_TYPE_PREFIX, 11780) +HANDLE_BAT(APINT_TYPE_PREFIX, 11781) +HANDLE_BAT(APINT_TYPE_PREFIX, 11782) +HANDLE_BAT(APINT_TYPE_PREFIX, 11783) +HANDLE_BAT(APINT_TYPE_PREFIX, 11784) +HANDLE_BAT(APINT_TYPE_PREFIX, 11785) +HANDLE_BAT(APINT_TYPE_PREFIX, 11786) +HANDLE_BAT(APINT_TYPE_PREFIX, 11787) +HANDLE_BAT(APINT_TYPE_PREFIX, 11788) +HANDLE_BAT(APINT_TYPE_PREFIX, 11789) +HANDLE_BAT(APINT_TYPE_PREFIX, 11790) +HANDLE_BAT(APINT_TYPE_PREFIX, 11791) +HANDLE_BAT(APINT_TYPE_PREFIX, 11792) +HANDLE_BAT(APINT_TYPE_PREFIX, 11793) +HANDLE_BAT(APINT_TYPE_PREFIX, 11794) +HANDLE_BAT(APINT_TYPE_PREFIX, 11795) +HANDLE_BAT(APINT_TYPE_PREFIX, 11796) +HANDLE_BAT(APINT_TYPE_PREFIX, 11797) +HANDLE_BAT(APINT_TYPE_PREFIX, 11798) +HANDLE_BAT(APINT_TYPE_PREFIX, 11799) +HANDLE_BAT(APINT_TYPE_PREFIX, 11800) +HANDLE_BAT(APINT_TYPE_PREFIX, 11801) +HANDLE_BAT(APINT_TYPE_PREFIX, 11802) +HANDLE_BAT(APINT_TYPE_PREFIX, 11803) +HANDLE_BAT(APINT_TYPE_PREFIX, 11804) +HANDLE_BAT(APINT_TYPE_PREFIX, 11805) +HANDLE_BAT(APINT_TYPE_PREFIX, 11806) +HANDLE_BAT(APINT_TYPE_PREFIX, 11807) +HANDLE_BAT(APINT_TYPE_PREFIX, 11808) +HANDLE_BAT(APINT_TYPE_PREFIX, 11809) +HANDLE_BAT(APINT_TYPE_PREFIX, 11810) +HANDLE_BAT(APINT_TYPE_PREFIX, 11811) +HANDLE_BAT(APINT_TYPE_PREFIX, 11812) +HANDLE_BAT(APINT_TYPE_PREFIX, 11813) +HANDLE_BAT(APINT_TYPE_PREFIX, 11814) +HANDLE_BAT(APINT_TYPE_PREFIX, 11815) +HANDLE_BAT(APINT_TYPE_PREFIX, 11816) +HANDLE_BAT(APINT_TYPE_PREFIX, 11817) +HANDLE_BAT(APINT_TYPE_PREFIX, 11818) +HANDLE_BAT(APINT_TYPE_PREFIX, 11819) +HANDLE_BAT(APINT_TYPE_PREFIX, 11820) +HANDLE_BAT(APINT_TYPE_PREFIX, 11821) +HANDLE_BAT(APINT_TYPE_PREFIX, 11822) +HANDLE_BAT(APINT_TYPE_PREFIX, 11823) +HANDLE_BAT(APINT_TYPE_PREFIX, 11824) +HANDLE_BAT(APINT_TYPE_PREFIX, 11825) +HANDLE_BAT(APINT_TYPE_PREFIX, 11826) +HANDLE_BAT(APINT_TYPE_PREFIX, 11827) +HANDLE_BAT(APINT_TYPE_PREFIX, 11828) +HANDLE_BAT(APINT_TYPE_PREFIX, 11829) +HANDLE_BAT(APINT_TYPE_PREFIX, 11830) +HANDLE_BAT(APINT_TYPE_PREFIX, 11831) +HANDLE_BAT(APINT_TYPE_PREFIX, 11832) +HANDLE_BAT(APINT_TYPE_PREFIX, 11833) +HANDLE_BAT(APINT_TYPE_PREFIX, 11834) +HANDLE_BAT(APINT_TYPE_PREFIX, 11835) +HANDLE_BAT(APINT_TYPE_PREFIX, 11836) +HANDLE_BAT(APINT_TYPE_PREFIX, 11837) +HANDLE_BAT(APINT_TYPE_PREFIX, 11838) +HANDLE_BAT(APINT_TYPE_PREFIX, 11839) +HANDLE_BAT(APINT_TYPE_PREFIX, 11840) +HANDLE_BAT(APINT_TYPE_PREFIX, 11841) +HANDLE_BAT(APINT_TYPE_PREFIX, 11842) +HANDLE_BAT(APINT_TYPE_PREFIX, 11843) +HANDLE_BAT(APINT_TYPE_PREFIX, 11844) +HANDLE_BAT(APINT_TYPE_PREFIX, 11845) +HANDLE_BAT(APINT_TYPE_PREFIX, 11846) +HANDLE_BAT(APINT_TYPE_PREFIX, 11847) +HANDLE_BAT(APINT_TYPE_PREFIX, 11848) +HANDLE_BAT(APINT_TYPE_PREFIX, 11849) +HANDLE_BAT(APINT_TYPE_PREFIX, 11850) +HANDLE_BAT(APINT_TYPE_PREFIX, 11851) +HANDLE_BAT(APINT_TYPE_PREFIX, 11852) +HANDLE_BAT(APINT_TYPE_PREFIX, 11853) +HANDLE_BAT(APINT_TYPE_PREFIX, 11854) +HANDLE_BAT(APINT_TYPE_PREFIX, 11855) +HANDLE_BAT(APINT_TYPE_PREFIX, 11856) +HANDLE_BAT(APINT_TYPE_PREFIX, 11857) +HANDLE_BAT(APINT_TYPE_PREFIX, 11858) +HANDLE_BAT(APINT_TYPE_PREFIX, 11859) +HANDLE_BAT(APINT_TYPE_PREFIX, 11860) +HANDLE_BAT(APINT_TYPE_PREFIX, 11861) +HANDLE_BAT(APINT_TYPE_PREFIX, 11862) +HANDLE_BAT(APINT_TYPE_PREFIX, 11863) +HANDLE_BAT(APINT_TYPE_PREFIX, 11864) +HANDLE_BAT(APINT_TYPE_PREFIX, 11865) +HANDLE_BAT(APINT_TYPE_PREFIX, 11866) +HANDLE_BAT(APINT_TYPE_PREFIX, 11867) +HANDLE_BAT(APINT_TYPE_PREFIX, 11868) +HANDLE_BAT(APINT_TYPE_PREFIX, 11869) +HANDLE_BAT(APINT_TYPE_PREFIX, 11870) +HANDLE_BAT(APINT_TYPE_PREFIX, 11871) +HANDLE_BAT(APINT_TYPE_PREFIX, 11872) +HANDLE_BAT(APINT_TYPE_PREFIX, 11873) +HANDLE_BAT(APINT_TYPE_PREFIX, 11874) +HANDLE_BAT(APINT_TYPE_PREFIX, 11875) +HANDLE_BAT(APINT_TYPE_PREFIX, 11876) +HANDLE_BAT(APINT_TYPE_PREFIX, 11877) +HANDLE_BAT(APINT_TYPE_PREFIX, 11878) +HANDLE_BAT(APINT_TYPE_PREFIX, 11879) +HANDLE_BAT(APINT_TYPE_PREFIX, 11880) +HANDLE_BAT(APINT_TYPE_PREFIX, 11881) +HANDLE_BAT(APINT_TYPE_PREFIX, 11882) +HANDLE_BAT(APINT_TYPE_PREFIX, 11883) +HANDLE_BAT(APINT_TYPE_PREFIX, 11884) +HANDLE_BAT(APINT_TYPE_PREFIX, 11885) +HANDLE_BAT(APINT_TYPE_PREFIX, 11886) +HANDLE_BAT(APINT_TYPE_PREFIX, 11887) +HANDLE_BAT(APINT_TYPE_PREFIX, 11888) +HANDLE_BAT(APINT_TYPE_PREFIX, 11889) +HANDLE_BAT(APINT_TYPE_PREFIX, 11890) +HANDLE_BAT(APINT_TYPE_PREFIX, 11891) +HANDLE_BAT(APINT_TYPE_PREFIX, 11892) +HANDLE_BAT(APINT_TYPE_PREFIX, 11893) +HANDLE_BAT(APINT_TYPE_PREFIX, 11894) +HANDLE_BAT(APINT_TYPE_PREFIX, 11895) +HANDLE_BAT(APINT_TYPE_PREFIX, 11896) +HANDLE_BAT(APINT_TYPE_PREFIX, 11897) +HANDLE_BAT(APINT_TYPE_PREFIX, 11898) +HANDLE_BAT(APINT_TYPE_PREFIX, 11899) +HANDLE_BAT(APINT_TYPE_PREFIX, 11900) +HANDLE_BAT(APINT_TYPE_PREFIX, 11901) +HANDLE_BAT(APINT_TYPE_PREFIX, 11902) +HANDLE_BAT(APINT_TYPE_PREFIX, 11903) +HANDLE_BAT(APINT_TYPE_PREFIX, 11904) +HANDLE_BAT(APINT_TYPE_PREFIX, 11905) +HANDLE_BAT(APINT_TYPE_PREFIX, 11906) +HANDLE_BAT(APINT_TYPE_PREFIX, 11907) +HANDLE_BAT(APINT_TYPE_PREFIX, 11908) +HANDLE_BAT(APINT_TYPE_PREFIX, 11909) +HANDLE_BAT(APINT_TYPE_PREFIX, 11910) +HANDLE_BAT(APINT_TYPE_PREFIX, 11911) +HANDLE_BAT(APINT_TYPE_PREFIX, 11912) +HANDLE_BAT(APINT_TYPE_PREFIX, 11913) +HANDLE_BAT(APINT_TYPE_PREFIX, 11914) +HANDLE_BAT(APINT_TYPE_PREFIX, 11915) +HANDLE_BAT(APINT_TYPE_PREFIX, 11916) +HANDLE_BAT(APINT_TYPE_PREFIX, 11917) +HANDLE_BAT(APINT_TYPE_PREFIX, 11918) +HANDLE_BAT(APINT_TYPE_PREFIX, 11919) +HANDLE_BAT(APINT_TYPE_PREFIX, 11920) +HANDLE_BAT(APINT_TYPE_PREFIX, 11921) +HANDLE_BAT(APINT_TYPE_PREFIX, 11922) +HANDLE_BAT(APINT_TYPE_PREFIX, 11923) +HANDLE_BAT(APINT_TYPE_PREFIX, 11924) +HANDLE_BAT(APINT_TYPE_PREFIX, 11925) +HANDLE_BAT(APINT_TYPE_PREFIX, 11926) +HANDLE_BAT(APINT_TYPE_PREFIX, 11927) +HANDLE_BAT(APINT_TYPE_PREFIX, 11928) +HANDLE_BAT(APINT_TYPE_PREFIX, 11929) +HANDLE_BAT(APINT_TYPE_PREFIX, 11930) +HANDLE_BAT(APINT_TYPE_PREFIX, 11931) +HANDLE_BAT(APINT_TYPE_PREFIX, 11932) +HANDLE_BAT(APINT_TYPE_PREFIX, 11933) +HANDLE_BAT(APINT_TYPE_PREFIX, 11934) +HANDLE_BAT(APINT_TYPE_PREFIX, 11935) +HANDLE_BAT(APINT_TYPE_PREFIX, 11936) +HANDLE_BAT(APINT_TYPE_PREFIX, 11937) +HANDLE_BAT(APINT_TYPE_PREFIX, 11938) +HANDLE_BAT(APINT_TYPE_PREFIX, 11939) +HANDLE_BAT(APINT_TYPE_PREFIX, 11940) +HANDLE_BAT(APINT_TYPE_PREFIX, 11941) +HANDLE_BAT(APINT_TYPE_PREFIX, 11942) +HANDLE_BAT(APINT_TYPE_PREFIX, 11943) +HANDLE_BAT(APINT_TYPE_PREFIX, 11944) +HANDLE_BAT(APINT_TYPE_PREFIX, 11945) +HANDLE_BAT(APINT_TYPE_PREFIX, 11946) +HANDLE_BAT(APINT_TYPE_PREFIX, 11947) +HANDLE_BAT(APINT_TYPE_PREFIX, 11948) +HANDLE_BAT(APINT_TYPE_PREFIX, 11949) +HANDLE_BAT(APINT_TYPE_PREFIX, 11950) +HANDLE_BAT(APINT_TYPE_PREFIX, 11951) +HANDLE_BAT(APINT_TYPE_PREFIX, 11952) +HANDLE_BAT(APINT_TYPE_PREFIX, 11953) +HANDLE_BAT(APINT_TYPE_PREFIX, 11954) +HANDLE_BAT(APINT_TYPE_PREFIX, 11955) +HANDLE_BAT(APINT_TYPE_PREFIX, 11956) +HANDLE_BAT(APINT_TYPE_PREFIX, 11957) +HANDLE_BAT(APINT_TYPE_PREFIX, 11958) +HANDLE_BAT(APINT_TYPE_PREFIX, 11959) +HANDLE_BAT(APINT_TYPE_PREFIX, 11960) +HANDLE_BAT(APINT_TYPE_PREFIX, 11961) +HANDLE_BAT(APINT_TYPE_PREFIX, 11962) +HANDLE_BAT(APINT_TYPE_PREFIX, 11963) +HANDLE_BAT(APINT_TYPE_PREFIX, 11964) +HANDLE_BAT(APINT_TYPE_PREFIX, 11965) +HANDLE_BAT(APINT_TYPE_PREFIX, 11966) +HANDLE_BAT(APINT_TYPE_PREFIX, 11967) +HANDLE_BAT(APINT_TYPE_PREFIX, 11968) +HANDLE_BAT(APINT_TYPE_PREFIX, 11969) +HANDLE_BAT(APINT_TYPE_PREFIX, 11970) +HANDLE_BAT(APINT_TYPE_PREFIX, 11971) +HANDLE_BAT(APINT_TYPE_PREFIX, 11972) +HANDLE_BAT(APINT_TYPE_PREFIX, 11973) +HANDLE_BAT(APINT_TYPE_PREFIX, 11974) +HANDLE_BAT(APINT_TYPE_PREFIX, 11975) +HANDLE_BAT(APINT_TYPE_PREFIX, 11976) +HANDLE_BAT(APINT_TYPE_PREFIX, 11977) +HANDLE_BAT(APINT_TYPE_PREFIX, 11978) +HANDLE_BAT(APINT_TYPE_PREFIX, 11979) +HANDLE_BAT(APINT_TYPE_PREFIX, 11980) +HANDLE_BAT(APINT_TYPE_PREFIX, 11981) +HANDLE_BAT(APINT_TYPE_PREFIX, 11982) +HANDLE_BAT(APINT_TYPE_PREFIX, 11983) +HANDLE_BAT(APINT_TYPE_PREFIX, 11984) +HANDLE_BAT(APINT_TYPE_PREFIX, 11985) +HANDLE_BAT(APINT_TYPE_PREFIX, 11986) +HANDLE_BAT(APINT_TYPE_PREFIX, 11987) +HANDLE_BAT(APINT_TYPE_PREFIX, 11988) +HANDLE_BAT(APINT_TYPE_PREFIX, 11989) +HANDLE_BAT(APINT_TYPE_PREFIX, 11990) +HANDLE_BAT(APINT_TYPE_PREFIX, 11991) +HANDLE_BAT(APINT_TYPE_PREFIX, 11992) +HANDLE_BAT(APINT_TYPE_PREFIX, 11993) +HANDLE_BAT(APINT_TYPE_PREFIX, 11994) +HANDLE_BAT(APINT_TYPE_PREFIX, 11995) +HANDLE_BAT(APINT_TYPE_PREFIX, 11996) +HANDLE_BAT(APINT_TYPE_PREFIX, 11997) +HANDLE_BAT(APINT_TYPE_PREFIX, 11998) +HANDLE_BAT(APINT_TYPE_PREFIX, 11999) +HANDLE_BAT(APINT_TYPE_PREFIX, 12000) +HANDLE_BAT(APINT_TYPE_PREFIX, 12001) +HANDLE_BAT(APINT_TYPE_PREFIX, 12002) +HANDLE_BAT(APINT_TYPE_PREFIX, 12003) +HANDLE_BAT(APINT_TYPE_PREFIX, 12004) +HANDLE_BAT(APINT_TYPE_PREFIX, 12005) +HANDLE_BAT(APINT_TYPE_PREFIX, 12006) +HANDLE_BAT(APINT_TYPE_PREFIX, 12007) +HANDLE_BAT(APINT_TYPE_PREFIX, 12008) +HANDLE_BAT(APINT_TYPE_PREFIX, 12009) +HANDLE_BAT(APINT_TYPE_PREFIX, 12010) +HANDLE_BAT(APINT_TYPE_PREFIX, 12011) +HANDLE_BAT(APINT_TYPE_PREFIX, 12012) +HANDLE_BAT(APINT_TYPE_PREFIX, 12013) +HANDLE_BAT(APINT_TYPE_PREFIX, 12014) +HANDLE_BAT(APINT_TYPE_PREFIX, 12015) +HANDLE_BAT(APINT_TYPE_PREFIX, 12016) +HANDLE_BAT(APINT_TYPE_PREFIX, 12017) +HANDLE_BAT(APINT_TYPE_PREFIX, 12018) +HANDLE_BAT(APINT_TYPE_PREFIX, 12019) +HANDLE_BAT(APINT_TYPE_PREFIX, 12020) +HANDLE_BAT(APINT_TYPE_PREFIX, 12021) +HANDLE_BAT(APINT_TYPE_PREFIX, 12022) +HANDLE_BAT(APINT_TYPE_PREFIX, 12023) +HANDLE_BAT(APINT_TYPE_PREFIX, 12024) +HANDLE_BAT(APINT_TYPE_PREFIX, 12025) +HANDLE_BAT(APINT_TYPE_PREFIX, 12026) +HANDLE_BAT(APINT_TYPE_PREFIX, 12027) +HANDLE_BAT(APINT_TYPE_PREFIX, 12028) +HANDLE_BAT(APINT_TYPE_PREFIX, 12029) +HANDLE_BAT(APINT_TYPE_PREFIX, 12030) +HANDLE_BAT(APINT_TYPE_PREFIX, 12031) +HANDLE_BAT(APINT_TYPE_PREFIX, 12032) +HANDLE_BAT(APINT_TYPE_PREFIX, 12033) +HANDLE_BAT(APINT_TYPE_PREFIX, 12034) +HANDLE_BAT(APINT_TYPE_PREFIX, 12035) +HANDLE_BAT(APINT_TYPE_PREFIX, 12036) +HANDLE_BAT(APINT_TYPE_PREFIX, 12037) +HANDLE_BAT(APINT_TYPE_PREFIX, 12038) +HANDLE_BAT(APINT_TYPE_PREFIX, 12039) +HANDLE_BAT(APINT_TYPE_PREFIX, 12040) +HANDLE_BAT(APINT_TYPE_PREFIX, 12041) +HANDLE_BAT(APINT_TYPE_PREFIX, 12042) +HANDLE_BAT(APINT_TYPE_PREFIX, 12043) +HANDLE_BAT(APINT_TYPE_PREFIX, 12044) +HANDLE_BAT(APINT_TYPE_PREFIX, 12045) +HANDLE_BAT(APINT_TYPE_PREFIX, 12046) +HANDLE_BAT(APINT_TYPE_PREFIX, 12047) +HANDLE_BAT(APINT_TYPE_PREFIX, 12048) +HANDLE_BAT(APINT_TYPE_PREFIX, 12049) +HANDLE_BAT(APINT_TYPE_PREFIX, 12050) +HANDLE_BAT(APINT_TYPE_PREFIX, 12051) +HANDLE_BAT(APINT_TYPE_PREFIX, 12052) +HANDLE_BAT(APINT_TYPE_PREFIX, 12053) +HANDLE_BAT(APINT_TYPE_PREFIX, 12054) +HANDLE_BAT(APINT_TYPE_PREFIX, 12055) +HANDLE_BAT(APINT_TYPE_PREFIX, 12056) +HANDLE_BAT(APINT_TYPE_PREFIX, 12057) +HANDLE_BAT(APINT_TYPE_PREFIX, 12058) +HANDLE_BAT(APINT_TYPE_PREFIX, 12059) +HANDLE_BAT(APINT_TYPE_PREFIX, 12060) +HANDLE_BAT(APINT_TYPE_PREFIX, 12061) +HANDLE_BAT(APINT_TYPE_PREFIX, 12062) +HANDLE_BAT(APINT_TYPE_PREFIX, 12063) +HANDLE_BAT(APINT_TYPE_PREFIX, 12064) +HANDLE_BAT(APINT_TYPE_PREFIX, 12065) +HANDLE_BAT(APINT_TYPE_PREFIX, 12066) +HANDLE_BAT(APINT_TYPE_PREFIX, 12067) +HANDLE_BAT(APINT_TYPE_PREFIX, 12068) +HANDLE_BAT(APINT_TYPE_PREFIX, 12069) +HANDLE_BAT(APINT_TYPE_PREFIX, 12070) +HANDLE_BAT(APINT_TYPE_PREFIX, 12071) +HANDLE_BAT(APINT_TYPE_PREFIX, 12072) +HANDLE_BAT(APINT_TYPE_PREFIX, 12073) +HANDLE_BAT(APINT_TYPE_PREFIX, 12074) +HANDLE_BAT(APINT_TYPE_PREFIX, 12075) +HANDLE_BAT(APINT_TYPE_PREFIX, 12076) +HANDLE_BAT(APINT_TYPE_PREFIX, 12077) +HANDLE_BAT(APINT_TYPE_PREFIX, 12078) +HANDLE_BAT(APINT_TYPE_PREFIX, 12079) +HANDLE_BAT(APINT_TYPE_PREFIX, 12080) +HANDLE_BAT(APINT_TYPE_PREFIX, 12081) +HANDLE_BAT(APINT_TYPE_PREFIX, 12082) +HANDLE_BAT(APINT_TYPE_PREFIX, 12083) +HANDLE_BAT(APINT_TYPE_PREFIX, 12084) +HANDLE_BAT(APINT_TYPE_PREFIX, 12085) +HANDLE_BAT(APINT_TYPE_PREFIX, 12086) +HANDLE_BAT(APINT_TYPE_PREFIX, 12087) +HANDLE_BAT(APINT_TYPE_PREFIX, 12088) +HANDLE_BAT(APINT_TYPE_PREFIX, 12089) +HANDLE_BAT(APINT_TYPE_PREFIX, 12090) +HANDLE_BAT(APINT_TYPE_PREFIX, 12091) +HANDLE_BAT(APINT_TYPE_PREFIX, 12092) +HANDLE_BAT(APINT_TYPE_PREFIX, 12093) +HANDLE_BAT(APINT_TYPE_PREFIX, 12094) +HANDLE_BAT(APINT_TYPE_PREFIX, 12095) +HANDLE_BAT(APINT_TYPE_PREFIX, 12096) +HANDLE_BAT(APINT_TYPE_PREFIX, 12097) +HANDLE_BAT(APINT_TYPE_PREFIX, 12098) +HANDLE_BAT(APINT_TYPE_PREFIX, 12099) +HANDLE_BAT(APINT_TYPE_PREFIX, 12100) +HANDLE_BAT(APINT_TYPE_PREFIX, 12101) +HANDLE_BAT(APINT_TYPE_PREFIX, 12102) +HANDLE_BAT(APINT_TYPE_PREFIX, 12103) +HANDLE_BAT(APINT_TYPE_PREFIX, 12104) +HANDLE_BAT(APINT_TYPE_PREFIX, 12105) +HANDLE_BAT(APINT_TYPE_PREFIX, 12106) +HANDLE_BAT(APINT_TYPE_PREFIX, 12107) +HANDLE_BAT(APINT_TYPE_PREFIX, 12108) +HANDLE_BAT(APINT_TYPE_PREFIX, 12109) +HANDLE_BAT(APINT_TYPE_PREFIX, 12110) +HANDLE_BAT(APINT_TYPE_PREFIX, 12111) +HANDLE_BAT(APINT_TYPE_PREFIX, 12112) +HANDLE_BAT(APINT_TYPE_PREFIX, 12113) +HANDLE_BAT(APINT_TYPE_PREFIX, 12114) +HANDLE_BAT(APINT_TYPE_PREFIX, 12115) +HANDLE_BAT(APINT_TYPE_PREFIX, 12116) +HANDLE_BAT(APINT_TYPE_PREFIX, 12117) +HANDLE_BAT(APINT_TYPE_PREFIX, 12118) +HANDLE_BAT(APINT_TYPE_PREFIX, 12119) +HANDLE_BAT(APINT_TYPE_PREFIX, 12120) +HANDLE_BAT(APINT_TYPE_PREFIX, 12121) +HANDLE_BAT(APINT_TYPE_PREFIX, 12122) +HANDLE_BAT(APINT_TYPE_PREFIX, 12123) +HANDLE_BAT(APINT_TYPE_PREFIX, 12124) +HANDLE_BAT(APINT_TYPE_PREFIX, 12125) +HANDLE_BAT(APINT_TYPE_PREFIX, 12126) +HANDLE_BAT(APINT_TYPE_PREFIX, 12127) +HANDLE_BAT(APINT_TYPE_PREFIX, 12128) +HANDLE_BAT(APINT_TYPE_PREFIX, 12129) +HANDLE_BAT(APINT_TYPE_PREFIX, 12130) +HANDLE_BAT(APINT_TYPE_PREFIX, 12131) +HANDLE_BAT(APINT_TYPE_PREFIX, 12132) +HANDLE_BAT(APINT_TYPE_PREFIX, 12133) +HANDLE_BAT(APINT_TYPE_PREFIX, 12134) +HANDLE_BAT(APINT_TYPE_PREFIX, 12135) +HANDLE_BAT(APINT_TYPE_PREFIX, 12136) +HANDLE_BAT(APINT_TYPE_PREFIX, 12137) +HANDLE_BAT(APINT_TYPE_PREFIX, 12138) +HANDLE_BAT(APINT_TYPE_PREFIX, 12139) +HANDLE_BAT(APINT_TYPE_PREFIX, 12140) +HANDLE_BAT(APINT_TYPE_PREFIX, 12141) +HANDLE_BAT(APINT_TYPE_PREFIX, 12142) +HANDLE_BAT(APINT_TYPE_PREFIX, 12143) +HANDLE_BAT(APINT_TYPE_PREFIX, 12144) +HANDLE_BAT(APINT_TYPE_PREFIX, 12145) +HANDLE_BAT(APINT_TYPE_PREFIX, 12146) +HANDLE_BAT(APINT_TYPE_PREFIX, 12147) +HANDLE_BAT(APINT_TYPE_PREFIX, 12148) +HANDLE_BAT(APINT_TYPE_PREFIX, 12149) +HANDLE_BAT(APINT_TYPE_PREFIX, 12150) +HANDLE_BAT(APINT_TYPE_PREFIX, 12151) +HANDLE_BAT(APINT_TYPE_PREFIX, 12152) +HANDLE_BAT(APINT_TYPE_PREFIX, 12153) +HANDLE_BAT(APINT_TYPE_PREFIX, 12154) +HANDLE_BAT(APINT_TYPE_PREFIX, 12155) +HANDLE_BAT(APINT_TYPE_PREFIX, 12156) +HANDLE_BAT(APINT_TYPE_PREFIX, 12157) +HANDLE_BAT(APINT_TYPE_PREFIX, 12158) +HANDLE_BAT(APINT_TYPE_PREFIX, 12159) +HANDLE_BAT(APINT_TYPE_PREFIX, 12160) +HANDLE_BAT(APINT_TYPE_PREFIX, 12161) +HANDLE_BAT(APINT_TYPE_PREFIX, 12162) +HANDLE_BAT(APINT_TYPE_PREFIX, 12163) +HANDLE_BAT(APINT_TYPE_PREFIX, 12164) +HANDLE_BAT(APINT_TYPE_PREFIX, 12165) +HANDLE_BAT(APINT_TYPE_PREFIX, 12166) +HANDLE_BAT(APINT_TYPE_PREFIX, 12167) +HANDLE_BAT(APINT_TYPE_PREFIX, 12168) +HANDLE_BAT(APINT_TYPE_PREFIX, 12169) +HANDLE_BAT(APINT_TYPE_PREFIX, 12170) +HANDLE_BAT(APINT_TYPE_PREFIX, 12171) +HANDLE_BAT(APINT_TYPE_PREFIX, 12172) +HANDLE_BAT(APINT_TYPE_PREFIX, 12173) +HANDLE_BAT(APINT_TYPE_PREFIX, 12174) +HANDLE_BAT(APINT_TYPE_PREFIX, 12175) +HANDLE_BAT(APINT_TYPE_PREFIX, 12176) +HANDLE_BAT(APINT_TYPE_PREFIX, 12177) +HANDLE_BAT(APINT_TYPE_PREFIX, 12178) +HANDLE_BAT(APINT_TYPE_PREFIX, 12179) +HANDLE_BAT(APINT_TYPE_PREFIX, 12180) +HANDLE_BAT(APINT_TYPE_PREFIX, 12181) +HANDLE_BAT(APINT_TYPE_PREFIX, 12182) +HANDLE_BAT(APINT_TYPE_PREFIX, 12183) +HANDLE_BAT(APINT_TYPE_PREFIX, 12184) +HANDLE_BAT(APINT_TYPE_PREFIX, 12185) +HANDLE_BAT(APINT_TYPE_PREFIX, 12186) +HANDLE_BAT(APINT_TYPE_PREFIX, 12187) +HANDLE_BAT(APINT_TYPE_PREFIX, 12188) +HANDLE_BAT(APINT_TYPE_PREFIX, 12189) +HANDLE_BAT(APINT_TYPE_PREFIX, 12190) +HANDLE_BAT(APINT_TYPE_PREFIX, 12191) +HANDLE_BAT(APINT_TYPE_PREFIX, 12192) +HANDLE_BAT(APINT_TYPE_PREFIX, 12193) +HANDLE_BAT(APINT_TYPE_PREFIX, 12194) +HANDLE_BAT(APINT_TYPE_PREFIX, 12195) +HANDLE_BAT(APINT_TYPE_PREFIX, 12196) +HANDLE_BAT(APINT_TYPE_PREFIX, 12197) +HANDLE_BAT(APINT_TYPE_PREFIX, 12198) +HANDLE_BAT(APINT_TYPE_PREFIX, 12199) +HANDLE_BAT(APINT_TYPE_PREFIX, 12200) +HANDLE_BAT(APINT_TYPE_PREFIX, 12201) +HANDLE_BAT(APINT_TYPE_PREFIX, 12202) +HANDLE_BAT(APINT_TYPE_PREFIX, 12203) +HANDLE_BAT(APINT_TYPE_PREFIX, 12204) +HANDLE_BAT(APINT_TYPE_PREFIX, 12205) +HANDLE_BAT(APINT_TYPE_PREFIX, 12206) +HANDLE_BAT(APINT_TYPE_PREFIX, 12207) +HANDLE_BAT(APINT_TYPE_PREFIX, 12208) +HANDLE_BAT(APINT_TYPE_PREFIX, 12209) +HANDLE_BAT(APINT_TYPE_PREFIX, 12210) +HANDLE_BAT(APINT_TYPE_PREFIX, 12211) +HANDLE_BAT(APINT_TYPE_PREFIX, 12212) +HANDLE_BAT(APINT_TYPE_PREFIX, 12213) +HANDLE_BAT(APINT_TYPE_PREFIX, 12214) +HANDLE_BAT(APINT_TYPE_PREFIX, 12215) +HANDLE_BAT(APINT_TYPE_PREFIX, 12216) +HANDLE_BAT(APINT_TYPE_PREFIX, 12217) +HANDLE_BAT(APINT_TYPE_PREFIX, 12218) +HANDLE_BAT(APINT_TYPE_PREFIX, 12219) +HANDLE_BAT(APINT_TYPE_PREFIX, 12220) +HANDLE_BAT(APINT_TYPE_PREFIX, 12221) +HANDLE_BAT(APINT_TYPE_PREFIX, 12222) +HANDLE_BAT(APINT_TYPE_PREFIX, 12223) +HANDLE_BAT(APINT_TYPE_PREFIX, 12224) +HANDLE_BAT(APINT_TYPE_PREFIX, 12225) +HANDLE_BAT(APINT_TYPE_PREFIX, 12226) +HANDLE_BAT(APINT_TYPE_PREFIX, 12227) +HANDLE_BAT(APINT_TYPE_PREFIX, 12228) +HANDLE_BAT(APINT_TYPE_PREFIX, 12229) +HANDLE_BAT(APINT_TYPE_PREFIX, 12230) +HANDLE_BAT(APINT_TYPE_PREFIX, 12231) +HANDLE_BAT(APINT_TYPE_PREFIX, 12232) +HANDLE_BAT(APINT_TYPE_PREFIX, 12233) +HANDLE_BAT(APINT_TYPE_PREFIX, 12234) +HANDLE_BAT(APINT_TYPE_PREFIX, 12235) +HANDLE_BAT(APINT_TYPE_PREFIX, 12236) +HANDLE_BAT(APINT_TYPE_PREFIX, 12237) +HANDLE_BAT(APINT_TYPE_PREFIX, 12238) +HANDLE_BAT(APINT_TYPE_PREFIX, 12239) +HANDLE_BAT(APINT_TYPE_PREFIX, 12240) +HANDLE_BAT(APINT_TYPE_PREFIX, 12241) +HANDLE_BAT(APINT_TYPE_PREFIX, 12242) +HANDLE_BAT(APINT_TYPE_PREFIX, 12243) +HANDLE_BAT(APINT_TYPE_PREFIX, 12244) +HANDLE_BAT(APINT_TYPE_PREFIX, 12245) +HANDLE_BAT(APINT_TYPE_PREFIX, 12246) +HANDLE_BAT(APINT_TYPE_PREFIX, 12247) +HANDLE_BAT(APINT_TYPE_PREFIX, 12248) +HANDLE_BAT(APINT_TYPE_PREFIX, 12249) +HANDLE_BAT(APINT_TYPE_PREFIX, 12250) +HANDLE_BAT(APINT_TYPE_PREFIX, 12251) +HANDLE_BAT(APINT_TYPE_PREFIX, 12252) +HANDLE_BAT(APINT_TYPE_PREFIX, 12253) +HANDLE_BAT(APINT_TYPE_PREFIX, 12254) +HANDLE_BAT(APINT_TYPE_PREFIX, 12255) +HANDLE_BAT(APINT_TYPE_PREFIX, 12256) +HANDLE_BAT(APINT_TYPE_PREFIX, 12257) +HANDLE_BAT(APINT_TYPE_PREFIX, 12258) +HANDLE_BAT(APINT_TYPE_PREFIX, 12259) +HANDLE_BAT(APINT_TYPE_PREFIX, 12260) +HANDLE_BAT(APINT_TYPE_PREFIX, 12261) +HANDLE_BAT(APINT_TYPE_PREFIX, 12262) +HANDLE_BAT(APINT_TYPE_PREFIX, 12263) +HANDLE_BAT(APINT_TYPE_PREFIX, 12264) +HANDLE_BAT(APINT_TYPE_PREFIX, 12265) +HANDLE_BAT(APINT_TYPE_PREFIX, 12266) +HANDLE_BAT(APINT_TYPE_PREFIX, 12267) +HANDLE_BAT(APINT_TYPE_PREFIX, 12268) +HANDLE_BAT(APINT_TYPE_PREFIX, 12269) +HANDLE_BAT(APINT_TYPE_PREFIX, 12270) +HANDLE_BAT(APINT_TYPE_PREFIX, 12271) +HANDLE_BAT(APINT_TYPE_PREFIX, 12272) +HANDLE_BAT(APINT_TYPE_PREFIX, 12273) +HANDLE_BAT(APINT_TYPE_PREFIX, 12274) +HANDLE_BAT(APINT_TYPE_PREFIX, 12275) +HANDLE_BAT(APINT_TYPE_PREFIX, 12276) +HANDLE_BAT(APINT_TYPE_PREFIX, 12277) +HANDLE_BAT(APINT_TYPE_PREFIX, 12278) +HANDLE_BAT(APINT_TYPE_PREFIX, 12279) +HANDLE_BAT(APINT_TYPE_PREFIX, 12280) +HANDLE_BAT(APINT_TYPE_PREFIX, 12281) +HANDLE_BAT(APINT_TYPE_PREFIX, 12282) +HANDLE_BAT(APINT_TYPE_PREFIX, 12283) +HANDLE_BAT(APINT_TYPE_PREFIX, 12284) +HANDLE_BAT(APINT_TYPE_PREFIX, 12285) +HANDLE_BAT(APINT_TYPE_PREFIX, 12286) +HANDLE_BAT(APINT_TYPE_PREFIX, 12287) +HANDLE_BAT(APINT_TYPE_PREFIX, 12288) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 12 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 12289) +HANDLE_BAT(, 12290) +HANDLE_BAT(, 12291) +HANDLE_BAT(, 12292) +HANDLE_BAT(, 12293) +HANDLE_BAT(, 12294) +HANDLE_BAT(, 12295) +HANDLE_BAT(, 12296) +HANDLE_BAT(, 12297) +HANDLE_BAT(, 12298) +HANDLE_BAT(, 12299) +HANDLE_BAT(, 12300) +HANDLE_BAT(, 12301) +HANDLE_BAT(, 12302) +HANDLE_BAT(, 12303) +HANDLE_BAT(, 12304) +HANDLE_BAT(, 12305) +HANDLE_BAT(, 12306) +HANDLE_BAT(, 12307) +HANDLE_BAT(, 12308) +HANDLE_BAT(, 12309) +HANDLE_BAT(, 12310) +HANDLE_BAT(, 12311) +HANDLE_BAT(, 12312) +HANDLE_BAT(, 12313) +HANDLE_BAT(, 12314) +HANDLE_BAT(, 12315) +HANDLE_BAT(, 12316) +HANDLE_BAT(, 12317) +HANDLE_BAT(, 12318) +HANDLE_BAT(, 12319) +HANDLE_BAT(, 12320) +HANDLE_BAT(, 12321) +HANDLE_BAT(, 12322) +HANDLE_BAT(, 12323) +HANDLE_BAT(, 12324) +HANDLE_BAT(, 12325) +HANDLE_BAT(, 12326) +HANDLE_BAT(, 12327) +HANDLE_BAT(, 12328) +HANDLE_BAT(, 12329) +HANDLE_BAT(, 12330) +HANDLE_BAT(, 12331) +HANDLE_BAT(, 12332) +HANDLE_BAT(, 12333) +HANDLE_BAT(, 12334) +HANDLE_BAT(, 12335) +HANDLE_BAT(, 12336) +HANDLE_BAT(, 12337) +HANDLE_BAT(, 12338) +HANDLE_BAT(, 12339) +HANDLE_BAT(, 12340) +HANDLE_BAT(, 12341) +HANDLE_BAT(, 12342) +HANDLE_BAT(, 12343) +HANDLE_BAT(, 12344) +HANDLE_BAT(, 12345) +HANDLE_BAT(, 12346) +HANDLE_BAT(, 12347) +HANDLE_BAT(, 12348) +HANDLE_BAT(, 12349) +HANDLE_BAT(, 12350) +HANDLE_BAT(, 12351) +HANDLE_BAT(, 12352) +HANDLE_BAT(, 12353) +HANDLE_BAT(, 12354) +HANDLE_BAT(, 12355) +HANDLE_BAT(, 12356) +HANDLE_BAT(, 12357) +HANDLE_BAT(, 12358) +HANDLE_BAT(, 12359) +HANDLE_BAT(, 12360) +HANDLE_BAT(, 12361) +HANDLE_BAT(, 12362) +HANDLE_BAT(, 12363) +HANDLE_BAT(, 12364) +HANDLE_BAT(, 12365) +HANDLE_BAT(, 12366) +HANDLE_BAT(, 12367) +HANDLE_BAT(, 12368) +HANDLE_BAT(, 12369) +HANDLE_BAT(, 12370) +HANDLE_BAT(, 12371) +HANDLE_BAT(, 12372) +HANDLE_BAT(, 12373) +HANDLE_BAT(, 12374) +HANDLE_BAT(, 12375) +HANDLE_BAT(, 12376) +HANDLE_BAT(, 12377) +HANDLE_BAT(, 12378) +HANDLE_BAT(, 12379) +HANDLE_BAT(, 12380) +HANDLE_BAT(, 12381) +HANDLE_BAT(, 12382) +HANDLE_BAT(, 12383) +HANDLE_BAT(, 12384) +HANDLE_BAT(, 12385) +HANDLE_BAT(, 12386) +HANDLE_BAT(, 12387) +HANDLE_BAT(, 12388) +HANDLE_BAT(, 12389) +HANDLE_BAT(, 12390) +HANDLE_BAT(, 12391) +HANDLE_BAT(, 12392) +HANDLE_BAT(, 12393) +HANDLE_BAT(, 12394) +HANDLE_BAT(, 12395) +HANDLE_BAT(, 12396) +HANDLE_BAT(, 12397) +HANDLE_BAT(, 12398) +HANDLE_BAT(, 12399) +HANDLE_BAT(, 12400) +HANDLE_BAT(, 12401) +HANDLE_BAT(, 12402) +HANDLE_BAT(, 12403) +HANDLE_BAT(, 12404) +HANDLE_BAT(, 12405) +HANDLE_BAT(, 12406) +HANDLE_BAT(, 12407) +HANDLE_BAT(, 12408) +HANDLE_BAT(, 12409) +HANDLE_BAT(, 12410) +HANDLE_BAT(, 12411) +HANDLE_BAT(, 12412) +HANDLE_BAT(, 12413) +HANDLE_BAT(, 12414) +HANDLE_BAT(, 12415) +HANDLE_BAT(, 12416) +HANDLE_BAT(, 12417) +HANDLE_BAT(, 12418) +HANDLE_BAT(, 12419) +HANDLE_BAT(, 12420) +HANDLE_BAT(, 12421) +HANDLE_BAT(, 12422) +HANDLE_BAT(, 12423) +HANDLE_BAT(, 12424) +HANDLE_BAT(, 12425) +HANDLE_BAT(, 12426) +HANDLE_BAT(, 12427) +HANDLE_BAT(, 12428) +HANDLE_BAT(, 12429) +HANDLE_BAT(, 12430) +HANDLE_BAT(, 12431) +HANDLE_BAT(, 12432) +HANDLE_BAT(, 12433) +HANDLE_BAT(, 12434) +HANDLE_BAT(, 12435) +HANDLE_BAT(, 12436) +HANDLE_BAT(, 12437) +HANDLE_BAT(, 12438) +HANDLE_BAT(, 12439) +HANDLE_BAT(, 12440) +HANDLE_BAT(, 12441) +HANDLE_BAT(, 12442) +HANDLE_BAT(, 12443) +HANDLE_BAT(, 12444) +HANDLE_BAT(, 12445) +HANDLE_BAT(, 12446) +HANDLE_BAT(, 12447) +HANDLE_BAT(, 12448) +HANDLE_BAT(, 12449) +HANDLE_BAT(, 12450) +HANDLE_BAT(, 12451) +HANDLE_BAT(, 12452) +HANDLE_BAT(, 12453) +HANDLE_BAT(, 12454) +HANDLE_BAT(, 12455) +HANDLE_BAT(, 12456) +HANDLE_BAT(, 12457) +HANDLE_BAT(, 12458) +HANDLE_BAT(, 12459) +HANDLE_BAT(, 12460) +HANDLE_BAT(, 12461) +HANDLE_BAT(, 12462) +HANDLE_BAT(, 12463) +HANDLE_BAT(, 12464) +HANDLE_BAT(, 12465) +HANDLE_BAT(, 12466) +HANDLE_BAT(, 12467) +HANDLE_BAT(, 12468) +HANDLE_BAT(, 12469) +HANDLE_BAT(, 12470) +HANDLE_BAT(, 12471) +HANDLE_BAT(, 12472) +HANDLE_BAT(, 12473) +HANDLE_BAT(, 12474) +HANDLE_BAT(, 12475) +HANDLE_BAT(, 12476) +HANDLE_BAT(, 12477) +HANDLE_BAT(, 12478) +HANDLE_BAT(, 12479) +HANDLE_BAT(, 12480) +HANDLE_BAT(, 12481) +HANDLE_BAT(, 12482) +HANDLE_BAT(, 12483) +HANDLE_BAT(, 12484) +HANDLE_BAT(, 12485) +HANDLE_BAT(, 12486) +HANDLE_BAT(, 12487) +HANDLE_BAT(, 12488) +HANDLE_BAT(, 12489) +HANDLE_BAT(, 12490) +HANDLE_BAT(, 12491) +HANDLE_BAT(, 12492) +HANDLE_BAT(, 12493) +HANDLE_BAT(, 12494) +HANDLE_BAT(, 12495) +HANDLE_BAT(, 12496) +HANDLE_BAT(, 12497) +HANDLE_BAT(, 12498) +HANDLE_BAT(, 12499) +HANDLE_BAT(, 12500) +HANDLE_BAT(, 12501) +HANDLE_BAT(, 12502) +HANDLE_BAT(, 12503) +HANDLE_BAT(, 12504) +HANDLE_BAT(, 12505) +HANDLE_BAT(, 12506) +HANDLE_BAT(, 12507) +HANDLE_BAT(, 12508) +HANDLE_BAT(, 12509) +HANDLE_BAT(, 12510) +HANDLE_BAT(, 12511) +HANDLE_BAT(, 12512) +HANDLE_BAT(, 12513) +HANDLE_BAT(, 12514) +HANDLE_BAT(, 12515) +HANDLE_BAT(, 12516) +HANDLE_BAT(, 12517) +HANDLE_BAT(, 12518) +HANDLE_BAT(, 12519) +HANDLE_BAT(, 12520) +HANDLE_BAT(, 12521) +HANDLE_BAT(, 12522) +HANDLE_BAT(, 12523) +HANDLE_BAT(, 12524) +HANDLE_BAT(, 12525) +HANDLE_BAT(, 12526) +HANDLE_BAT(, 12527) +HANDLE_BAT(, 12528) +HANDLE_BAT(, 12529) +HANDLE_BAT(, 12530) +HANDLE_BAT(, 12531) +HANDLE_BAT(, 12532) +HANDLE_BAT(, 12533) +HANDLE_BAT(, 12534) +HANDLE_BAT(, 12535) +HANDLE_BAT(, 12536) +HANDLE_BAT(, 12537) +HANDLE_BAT(, 12538) +HANDLE_BAT(, 12539) +HANDLE_BAT(, 12540) +HANDLE_BAT(, 12541) +HANDLE_BAT(, 12542) +HANDLE_BAT(, 12543) +HANDLE_BAT(, 12544) +HANDLE_BAT(, 12545) +HANDLE_BAT(, 12546) +HANDLE_BAT(, 12547) +HANDLE_BAT(, 12548) +HANDLE_BAT(, 12549) +HANDLE_BAT(, 12550) +HANDLE_BAT(, 12551) +HANDLE_BAT(, 12552) +HANDLE_BAT(, 12553) +HANDLE_BAT(, 12554) +HANDLE_BAT(, 12555) +HANDLE_BAT(, 12556) +HANDLE_BAT(, 12557) +HANDLE_BAT(, 12558) +HANDLE_BAT(, 12559) +HANDLE_BAT(, 12560) +HANDLE_BAT(, 12561) +HANDLE_BAT(, 12562) +HANDLE_BAT(, 12563) +HANDLE_BAT(, 12564) +HANDLE_BAT(, 12565) +HANDLE_BAT(, 12566) +HANDLE_BAT(, 12567) +HANDLE_BAT(, 12568) +HANDLE_BAT(, 12569) +HANDLE_BAT(, 12570) +HANDLE_BAT(, 12571) +HANDLE_BAT(, 12572) +HANDLE_BAT(, 12573) +HANDLE_BAT(, 12574) +HANDLE_BAT(, 12575) +HANDLE_BAT(, 12576) +HANDLE_BAT(, 12577) +HANDLE_BAT(, 12578) +HANDLE_BAT(, 12579) +HANDLE_BAT(, 12580) +HANDLE_BAT(, 12581) +HANDLE_BAT(, 12582) +HANDLE_BAT(, 12583) +HANDLE_BAT(, 12584) +HANDLE_BAT(, 12585) +HANDLE_BAT(, 12586) +HANDLE_BAT(, 12587) +HANDLE_BAT(, 12588) +HANDLE_BAT(, 12589) +HANDLE_BAT(, 12590) +HANDLE_BAT(, 12591) +HANDLE_BAT(, 12592) +HANDLE_BAT(, 12593) +HANDLE_BAT(, 12594) +HANDLE_BAT(, 12595) +HANDLE_BAT(, 12596) +HANDLE_BAT(, 12597) +HANDLE_BAT(, 12598) +HANDLE_BAT(, 12599) +HANDLE_BAT(, 12600) +HANDLE_BAT(, 12601) +HANDLE_BAT(, 12602) +HANDLE_BAT(, 12603) +HANDLE_BAT(, 12604) +HANDLE_BAT(, 12605) +HANDLE_BAT(, 12606) +HANDLE_BAT(, 12607) +HANDLE_BAT(, 12608) +HANDLE_BAT(, 12609) +HANDLE_BAT(, 12610) +HANDLE_BAT(, 12611) +HANDLE_BAT(, 12612) +HANDLE_BAT(, 12613) +HANDLE_BAT(, 12614) +HANDLE_BAT(, 12615) +HANDLE_BAT(, 12616) +HANDLE_BAT(, 12617) +HANDLE_BAT(, 12618) +HANDLE_BAT(, 12619) +HANDLE_BAT(, 12620) +HANDLE_BAT(, 12621) +HANDLE_BAT(, 12622) +HANDLE_BAT(, 12623) +HANDLE_BAT(, 12624) +HANDLE_BAT(, 12625) +HANDLE_BAT(, 12626) +HANDLE_BAT(, 12627) +HANDLE_BAT(, 12628) +HANDLE_BAT(, 12629) +HANDLE_BAT(, 12630) +HANDLE_BAT(, 12631) +HANDLE_BAT(, 12632) +HANDLE_BAT(, 12633) +HANDLE_BAT(, 12634) +HANDLE_BAT(, 12635) +HANDLE_BAT(, 12636) +HANDLE_BAT(, 12637) +HANDLE_BAT(, 12638) +HANDLE_BAT(, 12639) +HANDLE_BAT(, 12640) +HANDLE_BAT(, 12641) +HANDLE_BAT(, 12642) +HANDLE_BAT(, 12643) +HANDLE_BAT(, 12644) +HANDLE_BAT(, 12645) +HANDLE_BAT(, 12646) +HANDLE_BAT(, 12647) +HANDLE_BAT(, 12648) +HANDLE_BAT(, 12649) +HANDLE_BAT(, 12650) +HANDLE_BAT(, 12651) +HANDLE_BAT(, 12652) +HANDLE_BAT(, 12653) +HANDLE_BAT(, 12654) +HANDLE_BAT(, 12655) +HANDLE_BAT(, 12656) +HANDLE_BAT(, 12657) +HANDLE_BAT(, 12658) +HANDLE_BAT(, 12659) +HANDLE_BAT(, 12660) +HANDLE_BAT(, 12661) +HANDLE_BAT(, 12662) +HANDLE_BAT(, 12663) +HANDLE_BAT(, 12664) +HANDLE_BAT(, 12665) +HANDLE_BAT(, 12666) +HANDLE_BAT(, 12667) +HANDLE_BAT(, 12668) +HANDLE_BAT(, 12669) +HANDLE_BAT(, 12670) +HANDLE_BAT(, 12671) +HANDLE_BAT(, 12672) +HANDLE_BAT(, 12673) +HANDLE_BAT(, 12674) +HANDLE_BAT(, 12675) +HANDLE_BAT(, 12676) +HANDLE_BAT(, 12677) +HANDLE_BAT(, 12678) +HANDLE_BAT(, 12679) +HANDLE_BAT(, 12680) +HANDLE_BAT(, 12681) +HANDLE_BAT(, 12682) +HANDLE_BAT(, 12683) +HANDLE_BAT(, 12684) +HANDLE_BAT(, 12685) +HANDLE_BAT(, 12686) +HANDLE_BAT(, 12687) +HANDLE_BAT(, 12688) +HANDLE_BAT(, 12689) +HANDLE_BAT(, 12690) +HANDLE_BAT(, 12691) +HANDLE_BAT(, 12692) +HANDLE_BAT(, 12693) +HANDLE_BAT(, 12694) +HANDLE_BAT(, 12695) +HANDLE_BAT(, 12696) +HANDLE_BAT(, 12697) +HANDLE_BAT(, 12698) +HANDLE_BAT(, 12699) +HANDLE_BAT(, 12700) +HANDLE_BAT(, 12701) +HANDLE_BAT(, 12702) +HANDLE_BAT(, 12703) +HANDLE_BAT(, 12704) +HANDLE_BAT(, 12705) +HANDLE_BAT(, 12706) +HANDLE_BAT(, 12707) +HANDLE_BAT(, 12708) +HANDLE_BAT(, 12709) +HANDLE_BAT(, 12710) +HANDLE_BAT(, 12711) +HANDLE_BAT(, 12712) +HANDLE_BAT(, 12713) +HANDLE_BAT(, 12714) +HANDLE_BAT(, 12715) +HANDLE_BAT(, 12716) +HANDLE_BAT(, 12717) +HANDLE_BAT(, 12718) +HANDLE_BAT(, 12719) +HANDLE_BAT(, 12720) +HANDLE_BAT(, 12721) +HANDLE_BAT(, 12722) +HANDLE_BAT(, 12723) +HANDLE_BAT(, 12724) +HANDLE_BAT(, 12725) +HANDLE_BAT(, 12726) +HANDLE_BAT(, 12727) +HANDLE_BAT(, 12728) +HANDLE_BAT(, 12729) +HANDLE_BAT(, 12730) +HANDLE_BAT(, 12731) +HANDLE_BAT(, 12732) +HANDLE_BAT(, 12733) +HANDLE_BAT(, 12734) +HANDLE_BAT(, 12735) +HANDLE_BAT(, 12736) +HANDLE_BAT(, 12737) +HANDLE_BAT(, 12738) +HANDLE_BAT(, 12739) +HANDLE_BAT(, 12740) +HANDLE_BAT(, 12741) +HANDLE_BAT(, 12742) +HANDLE_BAT(, 12743) +HANDLE_BAT(, 12744) +HANDLE_BAT(, 12745) +HANDLE_BAT(, 12746) +HANDLE_BAT(, 12747) +HANDLE_BAT(, 12748) +HANDLE_BAT(, 12749) +HANDLE_BAT(, 12750) +HANDLE_BAT(, 12751) +HANDLE_BAT(, 12752) +HANDLE_BAT(, 12753) +HANDLE_BAT(, 12754) +HANDLE_BAT(, 12755) +HANDLE_BAT(, 12756) +HANDLE_BAT(, 12757) +HANDLE_BAT(, 12758) +HANDLE_BAT(, 12759) +HANDLE_BAT(, 12760) +HANDLE_BAT(, 12761) +HANDLE_BAT(, 12762) +HANDLE_BAT(, 12763) +HANDLE_BAT(, 12764) +HANDLE_BAT(, 12765) +HANDLE_BAT(, 12766) +HANDLE_BAT(, 12767) +HANDLE_BAT(, 12768) +HANDLE_BAT(, 12769) +HANDLE_BAT(, 12770) +HANDLE_BAT(, 12771) +HANDLE_BAT(, 12772) +HANDLE_BAT(, 12773) +HANDLE_BAT(, 12774) +HANDLE_BAT(, 12775) +HANDLE_BAT(, 12776) +HANDLE_BAT(, 12777) +HANDLE_BAT(, 12778) +HANDLE_BAT(, 12779) +HANDLE_BAT(, 12780) +HANDLE_BAT(, 12781) +HANDLE_BAT(, 12782) +HANDLE_BAT(, 12783) +HANDLE_BAT(, 12784) +HANDLE_BAT(, 12785) +HANDLE_BAT(, 12786) +HANDLE_BAT(, 12787) +HANDLE_BAT(, 12788) +HANDLE_BAT(, 12789) +HANDLE_BAT(, 12790) +HANDLE_BAT(, 12791) +HANDLE_BAT(, 12792) +HANDLE_BAT(, 12793) +HANDLE_BAT(, 12794) +HANDLE_BAT(, 12795) +HANDLE_BAT(, 12796) +HANDLE_BAT(, 12797) +HANDLE_BAT(, 12798) +HANDLE_BAT(, 12799) +HANDLE_BAT(, 12800) +HANDLE_BAT(, 12801) +HANDLE_BAT(, 12802) +HANDLE_BAT(, 12803) +HANDLE_BAT(, 12804) +HANDLE_BAT(, 12805) +HANDLE_BAT(, 12806) +HANDLE_BAT(, 12807) +HANDLE_BAT(, 12808) +HANDLE_BAT(, 12809) +HANDLE_BAT(, 12810) +HANDLE_BAT(, 12811) +HANDLE_BAT(, 12812) +HANDLE_BAT(, 12813) +HANDLE_BAT(, 12814) +HANDLE_BAT(, 12815) +HANDLE_BAT(, 12816) +HANDLE_BAT(, 12817) +HANDLE_BAT(, 12818) +HANDLE_BAT(, 12819) +HANDLE_BAT(, 12820) +HANDLE_BAT(, 12821) +HANDLE_BAT(, 12822) +HANDLE_BAT(, 12823) +HANDLE_BAT(, 12824) +HANDLE_BAT(, 12825) +HANDLE_BAT(, 12826) +HANDLE_BAT(, 12827) +HANDLE_BAT(, 12828) +HANDLE_BAT(, 12829) +HANDLE_BAT(, 12830) +HANDLE_BAT(, 12831) +HANDLE_BAT(, 12832) +HANDLE_BAT(, 12833) +HANDLE_BAT(, 12834) +HANDLE_BAT(, 12835) +HANDLE_BAT(, 12836) +HANDLE_BAT(, 12837) +HANDLE_BAT(, 12838) +HANDLE_BAT(, 12839) +HANDLE_BAT(, 12840) +HANDLE_BAT(, 12841) +HANDLE_BAT(, 12842) +HANDLE_BAT(, 12843) +HANDLE_BAT(, 12844) +HANDLE_BAT(, 12845) +HANDLE_BAT(, 12846) +HANDLE_BAT(, 12847) +HANDLE_BAT(, 12848) +HANDLE_BAT(, 12849) +HANDLE_BAT(, 12850) +HANDLE_BAT(, 12851) +HANDLE_BAT(, 12852) +HANDLE_BAT(, 12853) +HANDLE_BAT(, 12854) +HANDLE_BAT(, 12855) +HANDLE_BAT(, 12856) +HANDLE_BAT(, 12857) +HANDLE_BAT(, 12858) +HANDLE_BAT(, 12859) +HANDLE_BAT(, 12860) +HANDLE_BAT(, 12861) +HANDLE_BAT(, 12862) +HANDLE_BAT(, 12863) +HANDLE_BAT(, 12864) +HANDLE_BAT(, 12865) +HANDLE_BAT(, 12866) +HANDLE_BAT(, 12867) +HANDLE_BAT(, 12868) +HANDLE_BAT(, 12869) +HANDLE_BAT(, 12870) +HANDLE_BAT(, 12871) +HANDLE_BAT(, 12872) +HANDLE_BAT(, 12873) +HANDLE_BAT(, 12874) +HANDLE_BAT(, 12875) +HANDLE_BAT(, 12876) +HANDLE_BAT(, 12877) +HANDLE_BAT(, 12878) +HANDLE_BAT(, 12879) +HANDLE_BAT(, 12880) +HANDLE_BAT(, 12881) +HANDLE_BAT(, 12882) +HANDLE_BAT(, 12883) +HANDLE_BAT(, 12884) +HANDLE_BAT(, 12885) +HANDLE_BAT(, 12886) +HANDLE_BAT(, 12887) +HANDLE_BAT(, 12888) +HANDLE_BAT(, 12889) +HANDLE_BAT(, 12890) +HANDLE_BAT(, 12891) +HANDLE_BAT(, 12892) +HANDLE_BAT(, 12893) +HANDLE_BAT(, 12894) +HANDLE_BAT(, 12895) +HANDLE_BAT(, 12896) +HANDLE_BAT(, 12897) +HANDLE_BAT(, 12898) +HANDLE_BAT(, 12899) +HANDLE_BAT(, 12900) +HANDLE_BAT(, 12901) +HANDLE_BAT(, 12902) +HANDLE_BAT(, 12903) +HANDLE_BAT(, 12904) +HANDLE_BAT(, 12905) +HANDLE_BAT(, 12906) +HANDLE_BAT(, 12907) +HANDLE_BAT(, 12908) +HANDLE_BAT(, 12909) +HANDLE_BAT(, 12910) +HANDLE_BAT(, 12911) +HANDLE_BAT(, 12912) +HANDLE_BAT(, 12913) +HANDLE_BAT(, 12914) +HANDLE_BAT(, 12915) +HANDLE_BAT(, 12916) +HANDLE_BAT(, 12917) +HANDLE_BAT(, 12918) +HANDLE_BAT(, 12919) +HANDLE_BAT(, 12920) +HANDLE_BAT(, 12921) +HANDLE_BAT(, 12922) +HANDLE_BAT(, 12923) +HANDLE_BAT(, 12924) +HANDLE_BAT(, 12925) +HANDLE_BAT(, 12926) +HANDLE_BAT(, 12927) +HANDLE_BAT(, 12928) +HANDLE_BAT(, 12929) +HANDLE_BAT(, 12930) +HANDLE_BAT(, 12931) +HANDLE_BAT(, 12932) +HANDLE_BAT(, 12933) +HANDLE_BAT(, 12934) +HANDLE_BAT(, 12935) +HANDLE_BAT(, 12936) +HANDLE_BAT(, 12937) +HANDLE_BAT(, 12938) +HANDLE_BAT(, 12939) +HANDLE_BAT(, 12940) +HANDLE_BAT(, 12941) +HANDLE_BAT(, 12942) +HANDLE_BAT(, 12943) +HANDLE_BAT(, 12944) +HANDLE_BAT(, 12945) +HANDLE_BAT(, 12946) +HANDLE_BAT(, 12947) +HANDLE_BAT(, 12948) +HANDLE_BAT(, 12949) +HANDLE_BAT(, 12950) +HANDLE_BAT(, 12951) +HANDLE_BAT(, 12952) +HANDLE_BAT(, 12953) +HANDLE_BAT(, 12954) +HANDLE_BAT(, 12955) +HANDLE_BAT(, 12956) +HANDLE_BAT(, 12957) +HANDLE_BAT(, 12958) +HANDLE_BAT(, 12959) +HANDLE_BAT(, 12960) +HANDLE_BAT(, 12961) +HANDLE_BAT(, 12962) +HANDLE_BAT(, 12963) +HANDLE_BAT(, 12964) +HANDLE_BAT(, 12965) +HANDLE_BAT(, 12966) +HANDLE_BAT(, 12967) +HANDLE_BAT(, 12968) +HANDLE_BAT(, 12969) +HANDLE_BAT(, 12970) +HANDLE_BAT(, 12971) +HANDLE_BAT(, 12972) +HANDLE_BAT(, 12973) +HANDLE_BAT(, 12974) +HANDLE_BAT(, 12975) +HANDLE_BAT(, 12976) +HANDLE_BAT(, 12977) +HANDLE_BAT(, 12978) +HANDLE_BAT(, 12979) +HANDLE_BAT(, 12980) +HANDLE_BAT(, 12981) +HANDLE_BAT(, 12982) +HANDLE_BAT(, 12983) +HANDLE_BAT(, 12984) +HANDLE_BAT(, 12985) +HANDLE_BAT(, 12986) +HANDLE_BAT(, 12987) +HANDLE_BAT(, 12988) +HANDLE_BAT(, 12989) +HANDLE_BAT(, 12990) +HANDLE_BAT(, 12991) +HANDLE_BAT(, 12992) +HANDLE_BAT(, 12993) +HANDLE_BAT(, 12994) +HANDLE_BAT(, 12995) +HANDLE_BAT(, 12996) +HANDLE_BAT(, 12997) +HANDLE_BAT(, 12998) +HANDLE_BAT(, 12999) +HANDLE_BAT(, 13000) +HANDLE_BAT(, 13001) +HANDLE_BAT(, 13002) +HANDLE_BAT(, 13003) +HANDLE_BAT(, 13004) +HANDLE_BAT(, 13005) +HANDLE_BAT(, 13006) +HANDLE_BAT(, 13007) +HANDLE_BAT(, 13008) +HANDLE_BAT(, 13009) +HANDLE_BAT(, 13010) +HANDLE_BAT(, 13011) +HANDLE_BAT(, 13012) +HANDLE_BAT(, 13013) +HANDLE_BAT(, 13014) +HANDLE_BAT(, 13015) +HANDLE_BAT(, 13016) +HANDLE_BAT(, 13017) +HANDLE_BAT(, 13018) +HANDLE_BAT(, 13019) +HANDLE_BAT(, 13020) +HANDLE_BAT(, 13021) +HANDLE_BAT(, 13022) +HANDLE_BAT(, 13023) +HANDLE_BAT(, 13024) +HANDLE_BAT(, 13025) +HANDLE_BAT(, 13026) +HANDLE_BAT(, 13027) +HANDLE_BAT(, 13028) +HANDLE_BAT(, 13029) +HANDLE_BAT(, 13030) +HANDLE_BAT(, 13031) +HANDLE_BAT(, 13032) +HANDLE_BAT(, 13033) +HANDLE_BAT(, 13034) +HANDLE_BAT(, 13035) +HANDLE_BAT(, 13036) +HANDLE_BAT(, 13037) +HANDLE_BAT(, 13038) +HANDLE_BAT(, 13039) +HANDLE_BAT(, 13040) +HANDLE_BAT(, 13041) +HANDLE_BAT(, 13042) +HANDLE_BAT(, 13043) +HANDLE_BAT(, 13044) +HANDLE_BAT(, 13045) +HANDLE_BAT(, 13046) +HANDLE_BAT(, 13047) +HANDLE_BAT(, 13048) +HANDLE_BAT(, 13049) +HANDLE_BAT(, 13050) +HANDLE_BAT(, 13051) +HANDLE_BAT(, 13052) +HANDLE_BAT(, 13053) +HANDLE_BAT(, 13054) +HANDLE_BAT(, 13055) +HANDLE_BAT(, 13056) +HANDLE_BAT(, 13057) +HANDLE_BAT(, 13058) +HANDLE_BAT(, 13059) +HANDLE_BAT(, 13060) +HANDLE_BAT(, 13061) +HANDLE_BAT(, 13062) +HANDLE_BAT(, 13063) +HANDLE_BAT(, 13064) +HANDLE_BAT(, 13065) +HANDLE_BAT(, 13066) +HANDLE_BAT(, 13067) +HANDLE_BAT(, 13068) +HANDLE_BAT(, 13069) +HANDLE_BAT(, 13070) +HANDLE_BAT(, 13071) +HANDLE_BAT(, 13072) +HANDLE_BAT(, 13073) +HANDLE_BAT(, 13074) +HANDLE_BAT(, 13075) +HANDLE_BAT(, 13076) +HANDLE_BAT(, 13077) +HANDLE_BAT(, 13078) +HANDLE_BAT(, 13079) +HANDLE_BAT(, 13080) +HANDLE_BAT(, 13081) +HANDLE_BAT(, 13082) +HANDLE_BAT(, 13083) +HANDLE_BAT(, 13084) +HANDLE_BAT(, 13085) +HANDLE_BAT(, 13086) +HANDLE_BAT(, 13087) +HANDLE_BAT(, 13088) +HANDLE_BAT(, 13089) +HANDLE_BAT(, 13090) +HANDLE_BAT(, 13091) +HANDLE_BAT(, 13092) +HANDLE_BAT(, 13093) +HANDLE_BAT(, 13094) +HANDLE_BAT(, 13095) +HANDLE_BAT(, 13096) +HANDLE_BAT(, 13097) +HANDLE_BAT(, 13098) +HANDLE_BAT(, 13099) +HANDLE_BAT(, 13100) +HANDLE_BAT(, 13101) +HANDLE_BAT(, 13102) +HANDLE_BAT(, 13103) +HANDLE_BAT(, 13104) +HANDLE_BAT(, 13105) +HANDLE_BAT(, 13106) +HANDLE_BAT(, 13107) +HANDLE_BAT(, 13108) +HANDLE_BAT(, 13109) +HANDLE_BAT(, 13110) +HANDLE_BAT(, 13111) +HANDLE_BAT(, 13112) +HANDLE_BAT(, 13113) +HANDLE_BAT(, 13114) +HANDLE_BAT(, 13115) +HANDLE_BAT(, 13116) +HANDLE_BAT(, 13117) +HANDLE_BAT(, 13118) +HANDLE_BAT(, 13119) +HANDLE_BAT(, 13120) +HANDLE_BAT(, 13121) +HANDLE_BAT(, 13122) +HANDLE_BAT(, 13123) +HANDLE_BAT(, 13124) +HANDLE_BAT(, 13125) +HANDLE_BAT(, 13126) +HANDLE_BAT(, 13127) +HANDLE_BAT(, 13128) +HANDLE_BAT(, 13129) +HANDLE_BAT(, 13130) +HANDLE_BAT(, 13131) +HANDLE_BAT(, 13132) +HANDLE_BAT(, 13133) +HANDLE_BAT(, 13134) +HANDLE_BAT(, 13135) +HANDLE_BAT(, 13136) +HANDLE_BAT(, 13137) +HANDLE_BAT(, 13138) +HANDLE_BAT(, 13139) +HANDLE_BAT(, 13140) +HANDLE_BAT(, 13141) +HANDLE_BAT(, 13142) +HANDLE_BAT(, 13143) +HANDLE_BAT(, 13144) +HANDLE_BAT(, 13145) +HANDLE_BAT(, 13146) +HANDLE_BAT(, 13147) +HANDLE_BAT(, 13148) +HANDLE_BAT(, 13149) +HANDLE_BAT(, 13150) +HANDLE_BAT(, 13151) +HANDLE_BAT(, 13152) +HANDLE_BAT(, 13153) +HANDLE_BAT(, 13154) +HANDLE_BAT(, 13155) +HANDLE_BAT(, 13156) +HANDLE_BAT(, 13157) +HANDLE_BAT(, 13158) +HANDLE_BAT(, 13159) +HANDLE_BAT(, 13160) +HANDLE_BAT(, 13161) +HANDLE_BAT(, 13162) +HANDLE_BAT(, 13163) +HANDLE_BAT(, 13164) +HANDLE_BAT(, 13165) +HANDLE_BAT(, 13166) +HANDLE_BAT(, 13167) +HANDLE_BAT(, 13168) +HANDLE_BAT(, 13169) +HANDLE_BAT(, 13170) +HANDLE_BAT(, 13171) +HANDLE_BAT(, 13172) +HANDLE_BAT(, 13173) +HANDLE_BAT(, 13174) +HANDLE_BAT(, 13175) +HANDLE_BAT(, 13176) +HANDLE_BAT(, 13177) +HANDLE_BAT(, 13178) +HANDLE_BAT(, 13179) +HANDLE_BAT(, 13180) +HANDLE_BAT(, 13181) +HANDLE_BAT(, 13182) +HANDLE_BAT(, 13183) +HANDLE_BAT(, 13184) +HANDLE_BAT(, 13185) +HANDLE_BAT(, 13186) +HANDLE_BAT(, 13187) +HANDLE_BAT(, 13188) +HANDLE_BAT(, 13189) +HANDLE_BAT(, 13190) +HANDLE_BAT(, 13191) +HANDLE_BAT(, 13192) +HANDLE_BAT(, 13193) +HANDLE_BAT(, 13194) +HANDLE_BAT(, 13195) +HANDLE_BAT(, 13196) +HANDLE_BAT(, 13197) +HANDLE_BAT(, 13198) +HANDLE_BAT(, 13199) +HANDLE_BAT(, 13200) +HANDLE_BAT(, 13201) +HANDLE_BAT(, 13202) +HANDLE_BAT(, 13203) +HANDLE_BAT(, 13204) +HANDLE_BAT(, 13205) +HANDLE_BAT(, 13206) +HANDLE_BAT(, 13207) +HANDLE_BAT(, 13208) +HANDLE_BAT(, 13209) +HANDLE_BAT(, 13210) +HANDLE_BAT(, 13211) +HANDLE_BAT(, 13212) +HANDLE_BAT(, 13213) +HANDLE_BAT(, 13214) +HANDLE_BAT(, 13215) +HANDLE_BAT(, 13216) +HANDLE_BAT(, 13217) +HANDLE_BAT(, 13218) +HANDLE_BAT(, 13219) +HANDLE_BAT(, 13220) +HANDLE_BAT(, 13221) +HANDLE_BAT(, 13222) +HANDLE_BAT(, 13223) +HANDLE_BAT(, 13224) +HANDLE_BAT(, 13225) +HANDLE_BAT(, 13226) +HANDLE_BAT(, 13227) +HANDLE_BAT(, 13228) +HANDLE_BAT(, 13229) +HANDLE_BAT(, 13230) +HANDLE_BAT(, 13231) +HANDLE_BAT(, 13232) +HANDLE_BAT(, 13233) +HANDLE_BAT(, 13234) +HANDLE_BAT(, 13235) +HANDLE_BAT(, 13236) +HANDLE_BAT(, 13237) +HANDLE_BAT(, 13238) +HANDLE_BAT(, 13239) +HANDLE_BAT(, 13240) +HANDLE_BAT(, 13241) +HANDLE_BAT(, 13242) +HANDLE_BAT(, 13243) +HANDLE_BAT(, 13244) +HANDLE_BAT(, 13245) +HANDLE_BAT(, 13246) +HANDLE_BAT(, 13247) +HANDLE_BAT(, 13248) +HANDLE_BAT(, 13249) +HANDLE_BAT(, 13250) +HANDLE_BAT(, 13251) +HANDLE_BAT(, 13252) +HANDLE_BAT(, 13253) +HANDLE_BAT(, 13254) +HANDLE_BAT(, 13255) +HANDLE_BAT(, 13256) +HANDLE_BAT(, 13257) +HANDLE_BAT(, 13258) +HANDLE_BAT(, 13259) +HANDLE_BAT(, 13260) +HANDLE_BAT(, 13261) +HANDLE_BAT(, 13262) +HANDLE_BAT(, 13263) +HANDLE_BAT(, 13264) +HANDLE_BAT(, 13265) +HANDLE_BAT(, 13266) +HANDLE_BAT(, 13267) +HANDLE_BAT(, 13268) +HANDLE_BAT(, 13269) +HANDLE_BAT(, 13270) +HANDLE_BAT(, 13271) +HANDLE_BAT(, 13272) +HANDLE_BAT(, 13273) +HANDLE_BAT(, 13274) +HANDLE_BAT(, 13275) +HANDLE_BAT(, 13276) +HANDLE_BAT(, 13277) +HANDLE_BAT(, 13278) +HANDLE_BAT(, 13279) +HANDLE_BAT(, 13280) +HANDLE_BAT(, 13281) +HANDLE_BAT(, 13282) +HANDLE_BAT(, 13283) +HANDLE_BAT(, 13284) +HANDLE_BAT(, 13285) +HANDLE_BAT(, 13286) +HANDLE_BAT(, 13287) +HANDLE_BAT(, 13288) +HANDLE_BAT(, 13289) +HANDLE_BAT(, 13290) +HANDLE_BAT(, 13291) +HANDLE_BAT(, 13292) +HANDLE_BAT(, 13293) +HANDLE_BAT(, 13294) +HANDLE_BAT(, 13295) +HANDLE_BAT(, 13296) +HANDLE_BAT(, 13297) +HANDLE_BAT(, 13298) +HANDLE_BAT(, 13299) +HANDLE_BAT(, 13300) +HANDLE_BAT(, 13301) +HANDLE_BAT(, 13302) +HANDLE_BAT(, 13303) +HANDLE_BAT(, 13304) +HANDLE_BAT(, 13305) +HANDLE_BAT(, 13306) +HANDLE_BAT(, 13307) +HANDLE_BAT(, 13308) +HANDLE_BAT(, 13309) +HANDLE_BAT(, 13310) +HANDLE_BAT(, 13311) +HANDLE_BAT(, 13312) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 12289) +HANDLE_BAT(APINT_TYPE_PREFIX, 12290) +HANDLE_BAT(APINT_TYPE_PREFIX, 12291) +HANDLE_BAT(APINT_TYPE_PREFIX, 12292) +HANDLE_BAT(APINT_TYPE_PREFIX, 12293) +HANDLE_BAT(APINT_TYPE_PREFIX, 12294) +HANDLE_BAT(APINT_TYPE_PREFIX, 12295) +HANDLE_BAT(APINT_TYPE_PREFIX, 12296) +HANDLE_BAT(APINT_TYPE_PREFIX, 12297) +HANDLE_BAT(APINT_TYPE_PREFIX, 12298) +HANDLE_BAT(APINT_TYPE_PREFIX, 12299) +HANDLE_BAT(APINT_TYPE_PREFIX, 12300) +HANDLE_BAT(APINT_TYPE_PREFIX, 12301) +HANDLE_BAT(APINT_TYPE_PREFIX, 12302) +HANDLE_BAT(APINT_TYPE_PREFIX, 12303) +HANDLE_BAT(APINT_TYPE_PREFIX, 12304) +HANDLE_BAT(APINT_TYPE_PREFIX, 12305) +HANDLE_BAT(APINT_TYPE_PREFIX, 12306) +HANDLE_BAT(APINT_TYPE_PREFIX, 12307) +HANDLE_BAT(APINT_TYPE_PREFIX, 12308) +HANDLE_BAT(APINT_TYPE_PREFIX, 12309) +HANDLE_BAT(APINT_TYPE_PREFIX, 12310) +HANDLE_BAT(APINT_TYPE_PREFIX, 12311) +HANDLE_BAT(APINT_TYPE_PREFIX, 12312) +HANDLE_BAT(APINT_TYPE_PREFIX, 12313) +HANDLE_BAT(APINT_TYPE_PREFIX, 12314) +HANDLE_BAT(APINT_TYPE_PREFIX, 12315) +HANDLE_BAT(APINT_TYPE_PREFIX, 12316) +HANDLE_BAT(APINT_TYPE_PREFIX, 12317) +HANDLE_BAT(APINT_TYPE_PREFIX, 12318) +HANDLE_BAT(APINT_TYPE_PREFIX, 12319) +HANDLE_BAT(APINT_TYPE_PREFIX, 12320) +HANDLE_BAT(APINT_TYPE_PREFIX, 12321) +HANDLE_BAT(APINT_TYPE_PREFIX, 12322) +HANDLE_BAT(APINT_TYPE_PREFIX, 12323) +HANDLE_BAT(APINT_TYPE_PREFIX, 12324) +HANDLE_BAT(APINT_TYPE_PREFIX, 12325) +HANDLE_BAT(APINT_TYPE_PREFIX, 12326) +HANDLE_BAT(APINT_TYPE_PREFIX, 12327) +HANDLE_BAT(APINT_TYPE_PREFIX, 12328) +HANDLE_BAT(APINT_TYPE_PREFIX, 12329) +HANDLE_BAT(APINT_TYPE_PREFIX, 12330) +HANDLE_BAT(APINT_TYPE_PREFIX, 12331) +HANDLE_BAT(APINT_TYPE_PREFIX, 12332) +HANDLE_BAT(APINT_TYPE_PREFIX, 12333) +HANDLE_BAT(APINT_TYPE_PREFIX, 12334) +HANDLE_BAT(APINT_TYPE_PREFIX, 12335) +HANDLE_BAT(APINT_TYPE_PREFIX, 12336) +HANDLE_BAT(APINT_TYPE_PREFIX, 12337) +HANDLE_BAT(APINT_TYPE_PREFIX, 12338) +HANDLE_BAT(APINT_TYPE_PREFIX, 12339) +HANDLE_BAT(APINT_TYPE_PREFIX, 12340) +HANDLE_BAT(APINT_TYPE_PREFIX, 12341) +HANDLE_BAT(APINT_TYPE_PREFIX, 12342) +HANDLE_BAT(APINT_TYPE_PREFIX, 12343) +HANDLE_BAT(APINT_TYPE_PREFIX, 12344) +HANDLE_BAT(APINT_TYPE_PREFIX, 12345) +HANDLE_BAT(APINT_TYPE_PREFIX, 12346) +HANDLE_BAT(APINT_TYPE_PREFIX, 12347) +HANDLE_BAT(APINT_TYPE_PREFIX, 12348) +HANDLE_BAT(APINT_TYPE_PREFIX, 12349) +HANDLE_BAT(APINT_TYPE_PREFIX, 12350) +HANDLE_BAT(APINT_TYPE_PREFIX, 12351) +HANDLE_BAT(APINT_TYPE_PREFIX, 12352) +HANDLE_BAT(APINT_TYPE_PREFIX, 12353) +HANDLE_BAT(APINT_TYPE_PREFIX, 12354) +HANDLE_BAT(APINT_TYPE_PREFIX, 12355) +HANDLE_BAT(APINT_TYPE_PREFIX, 12356) +HANDLE_BAT(APINT_TYPE_PREFIX, 12357) +HANDLE_BAT(APINT_TYPE_PREFIX, 12358) +HANDLE_BAT(APINT_TYPE_PREFIX, 12359) +HANDLE_BAT(APINT_TYPE_PREFIX, 12360) +HANDLE_BAT(APINT_TYPE_PREFIX, 12361) +HANDLE_BAT(APINT_TYPE_PREFIX, 12362) +HANDLE_BAT(APINT_TYPE_PREFIX, 12363) +HANDLE_BAT(APINT_TYPE_PREFIX, 12364) +HANDLE_BAT(APINT_TYPE_PREFIX, 12365) +HANDLE_BAT(APINT_TYPE_PREFIX, 12366) +HANDLE_BAT(APINT_TYPE_PREFIX, 12367) +HANDLE_BAT(APINT_TYPE_PREFIX, 12368) +HANDLE_BAT(APINT_TYPE_PREFIX, 12369) +HANDLE_BAT(APINT_TYPE_PREFIX, 12370) +HANDLE_BAT(APINT_TYPE_PREFIX, 12371) +HANDLE_BAT(APINT_TYPE_PREFIX, 12372) +HANDLE_BAT(APINT_TYPE_PREFIX, 12373) +HANDLE_BAT(APINT_TYPE_PREFIX, 12374) +HANDLE_BAT(APINT_TYPE_PREFIX, 12375) +HANDLE_BAT(APINT_TYPE_PREFIX, 12376) +HANDLE_BAT(APINT_TYPE_PREFIX, 12377) +HANDLE_BAT(APINT_TYPE_PREFIX, 12378) +HANDLE_BAT(APINT_TYPE_PREFIX, 12379) +HANDLE_BAT(APINT_TYPE_PREFIX, 12380) +HANDLE_BAT(APINT_TYPE_PREFIX, 12381) +HANDLE_BAT(APINT_TYPE_PREFIX, 12382) +HANDLE_BAT(APINT_TYPE_PREFIX, 12383) +HANDLE_BAT(APINT_TYPE_PREFIX, 12384) +HANDLE_BAT(APINT_TYPE_PREFIX, 12385) +HANDLE_BAT(APINT_TYPE_PREFIX, 12386) +HANDLE_BAT(APINT_TYPE_PREFIX, 12387) +HANDLE_BAT(APINT_TYPE_PREFIX, 12388) +HANDLE_BAT(APINT_TYPE_PREFIX, 12389) +HANDLE_BAT(APINT_TYPE_PREFIX, 12390) +HANDLE_BAT(APINT_TYPE_PREFIX, 12391) +HANDLE_BAT(APINT_TYPE_PREFIX, 12392) +HANDLE_BAT(APINT_TYPE_PREFIX, 12393) +HANDLE_BAT(APINT_TYPE_PREFIX, 12394) +HANDLE_BAT(APINT_TYPE_PREFIX, 12395) +HANDLE_BAT(APINT_TYPE_PREFIX, 12396) +HANDLE_BAT(APINT_TYPE_PREFIX, 12397) +HANDLE_BAT(APINT_TYPE_PREFIX, 12398) +HANDLE_BAT(APINT_TYPE_PREFIX, 12399) +HANDLE_BAT(APINT_TYPE_PREFIX, 12400) +HANDLE_BAT(APINT_TYPE_PREFIX, 12401) +HANDLE_BAT(APINT_TYPE_PREFIX, 12402) +HANDLE_BAT(APINT_TYPE_PREFIX, 12403) +HANDLE_BAT(APINT_TYPE_PREFIX, 12404) +HANDLE_BAT(APINT_TYPE_PREFIX, 12405) +HANDLE_BAT(APINT_TYPE_PREFIX, 12406) +HANDLE_BAT(APINT_TYPE_PREFIX, 12407) +HANDLE_BAT(APINT_TYPE_PREFIX, 12408) +HANDLE_BAT(APINT_TYPE_PREFIX, 12409) +HANDLE_BAT(APINT_TYPE_PREFIX, 12410) +HANDLE_BAT(APINT_TYPE_PREFIX, 12411) +HANDLE_BAT(APINT_TYPE_PREFIX, 12412) +HANDLE_BAT(APINT_TYPE_PREFIX, 12413) +HANDLE_BAT(APINT_TYPE_PREFIX, 12414) +HANDLE_BAT(APINT_TYPE_PREFIX, 12415) +HANDLE_BAT(APINT_TYPE_PREFIX, 12416) +HANDLE_BAT(APINT_TYPE_PREFIX, 12417) +HANDLE_BAT(APINT_TYPE_PREFIX, 12418) +HANDLE_BAT(APINT_TYPE_PREFIX, 12419) +HANDLE_BAT(APINT_TYPE_PREFIX, 12420) +HANDLE_BAT(APINT_TYPE_PREFIX, 12421) +HANDLE_BAT(APINT_TYPE_PREFIX, 12422) +HANDLE_BAT(APINT_TYPE_PREFIX, 12423) +HANDLE_BAT(APINT_TYPE_PREFIX, 12424) +HANDLE_BAT(APINT_TYPE_PREFIX, 12425) +HANDLE_BAT(APINT_TYPE_PREFIX, 12426) +HANDLE_BAT(APINT_TYPE_PREFIX, 12427) +HANDLE_BAT(APINT_TYPE_PREFIX, 12428) +HANDLE_BAT(APINT_TYPE_PREFIX, 12429) +HANDLE_BAT(APINT_TYPE_PREFIX, 12430) +HANDLE_BAT(APINT_TYPE_PREFIX, 12431) +HANDLE_BAT(APINT_TYPE_PREFIX, 12432) +HANDLE_BAT(APINT_TYPE_PREFIX, 12433) +HANDLE_BAT(APINT_TYPE_PREFIX, 12434) +HANDLE_BAT(APINT_TYPE_PREFIX, 12435) +HANDLE_BAT(APINT_TYPE_PREFIX, 12436) +HANDLE_BAT(APINT_TYPE_PREFIX, 12437) +HANDLE_BAT(APINT_TYPE_PREFIX, 12438) +HANDLE_BAT(APINT_TYPE_PREFIX, 12439) +HANDLE_BAT(APINT_TYPE_PREFIX, 12440) +HANDLE_BAT(APINT_TYPE_PREFIX, 12441) +HANDLE_BAT(APINT_TYPE_PREFIX, 12442) +HANDLE_BAT(APINT_TYPE_PREFIX, 12443) +HANDLE_BAT(APINT_TYPE_PREFIX, 12444) +HANDLE_BAT(APINT_TYPE_PREFIX, 12445) +HANDLE_BAT(APINT_TYPE_PREFIX, 12446) +HANDLE_BAT(APINT_TYPE_PREFIX, 12447) +HANDLE_BAT(APINT_TYPE_PREFIX, 12448) +HANDLE_BAT(APINT_TYPE_PREFIX, 12449) +HANDLE_BAT(APINT_TYPE_PREFIX, 12450) +HANDLE_BAT(APINT_TYPE_PREFIX, 12451) +HANDLE_BAT(APINT_TYPE_PREFIX, 12452) +HANDLE_BAT(APINT_TYPE_PREFIX, 12453) +HANDLE_BAT(APINT_TYPE_PREFIX, 12454) +HANDLE_BAT(APINT_TYPE_PREFIX, 12455) +HANDLE_BAT(APINT_TYPE_PREFIX, 12456) +HANDLE_BAT(APINT_TYPE_PREFIX, 12457) +HANDLE_BAT(APINT_TYPE_PREFIX, 12458) +HANDLE_BAT(APINT_TYPE_PREFIX, 12459) +HANDLE_BAT(APINT_TYPE_PREFIX, 12460) +HANDLE_BAT(APINT_TYPE_PREFIX, 12461) +HANDLE_BAT(APINT_TYPE_PREFIX, 12462) +HANDLE_BAT(APINT_TYPE_PREFIX, 12463) +HANDLE_BAT(APINT_TYPE_PREFIX, 12464) +HANDLE_BAT(APINT_TYPE_PREFIX, 12465) +HANDLE_BAT(APINT_TYPE_PREFIX, 12466) +HANDLE_BAT(APINT_TYPE_PREFIX, 12467) +HANDLE_BAT(APINT_TYPE_PREFIX, 12468) +HANDLE_BAT(APINT_TYPE_PREFIX, 12469) +HANDLE_BAT(APINT_TYPE_PREFIX, 12470) +HANDLE_BAT(APINT_TYPE_PREFIX, 12471) +HANDLE_BAT(APINT_TYPE_PREFIX, 12472) +HANDLE_BAT(APINT_TYPE_PREFIX, 12473) +HANDLE_BAT(APINT_TYPE_PREFIX, 12474) +HANDLE_BAT(APINT_TYPE_PREFIX, 12475) +HANDLE_BAT(APINT_TYPE_PREFIX, 12476) +HANDLE_BAT(APINT_TYPE_PREFIX, 12477) +HANDLE_BAT(APINT_TYPE_PREFIX, 12478) +HANDLE_BAT(APINT_TYPE_PREFIX, 12479) +HANDLE_BAT(APINT_TYPE_PREFIX, 12480) +HANDLE_BAT(APINT_TYPE_PREFIX, 12481) +HANDLE_BAT(APINT_TYPE_PREFIX, 12482) +HANDLE_BAT(APINT_TYPE_PREFIX, 12483) +HANDLE_BAT(APINT_TYPE_PREFIX, 12484) +HANDLE_BAT(APINT_TYPE_PREFIX, 12485) +HANDLE_BAT(APINT_TYPE_PREFIX, 12486) +HANDLE_BAT(APINT_TYPE_PREFIX, 12487) +HANDLE_BAT(APINT_TYPE_PREFIX, 12488) +HANDLE_BAT(APINT_TYPE_PREFIX, 12489) +HANDLE_BAT(APINT_TYPE_PREFIX, 12490) +HANDLE_BAT(APINT_TYPE_PREFIX, 12491) +HANDLE_BAT(APINT_TYPE_PREFIX, 12492) +HANDLE_BAT(APINT_TYPE_PREFIX, 12493) +HANDLE_BAT(APINT_TYPE_PREFIX, 12494) +HANDLE_BAT(APINT_TYPE_PREFIX, 12495) +HANDLE_BAT(APINT_TYPE_PREFIX, 12496) +HANDLE_BAT(APINT_TYPE_PREFIX, 12497) +HANDLE_BAT(APINT_TYPE_PREFIX, 12498) +HANDLE_BAT(APINT_TYPE_PREFIX, 12499) +HANDLE_BAT(APINT_TYPE_PREFIX, 12500) +HANDLE_BAT(APINT_TYPE_PREFIX, 12501) +HANDLE_BAT(APINT_TYPE_PREFIX, 12502) +HANDLE_BAT(APINT_TYPE_PREFIX, 12503) +HANDLE_BAT(APINT_TYPE_PREFIX, 12504) +HANDLE_BAT(APINT_TYPE_PREFIX, 12505) +HANDLE_BAT(APINT_TYPE_PREFIX, 12506) +HANDLE_BAT(APINT_TYPE_PREFIX, 12507) +HANDLE_BAT(APINT_TYPE_PREFIX, 12508) +HANDLE_BAT(APINT_TYPE_PREFIX, 12509) +HANDLE_BAT(APINT_TYPE_PREFIX, 12510) +HANDLE_BAT(APINT_TYPE_PREFIX, 12511) +HANDLE_BAT(APINT_TYPE_PREFIX, 12512) +HANDLE_BAT(APINT_TYPE_PREFIX, 12513) +HANDLE_BAT(APINT_TYPE_PREFIX, 12514) +HANDLE_BAT(APINT_TYPE_PREFIX, 12515) +HANDLE_BAT(APINT_TYPE_PREFIX, 12516) +HANDLE_BAT(APINT_TYPE_PREFIX, 12517) +HANDLE_BAT(APINT_TYPE_PREFIX, 12518) +HANDLE_BAT(APINT_TYPE_PREFIX, 12519) +HANDLE_BAT(APINT_TYPE_PREFIX, 12520) +HANDLE_BAT(APINT_TYPE_PREFIX, 12521) +HANDLE_BAT(APINT_TYPE_PREFIX, 12522) +HANDLE_BAT(APINT_TYPE_PREFIX, 12523) +HANDLE_BAT(APINT_TYPE_PREFIX, 12524) +HANDLE_BAT(APINT_TYPE_PREFIX, 12525) +HANDLE_BAT(APINT_TYPE_PREFIX, 12526) +HANDLE_BAT(APINT_TYPE_PREFIX, 12527) +HANDLE_BAT(APINT_TYPE_PREFIX, 12528) +HANDLE_BAT(APINT_TYPE_PREFIX, 12529) +HANDLE_BAT(APINT_TYPE_PREFIX, 12530) +HANDLE_BAT(APINT_TYPE_PREFIX, 12531) +HANDLE_BAT(APINT_TYPE_PREFIX, 12532) +HANDLE_BAT(APINT_TYPE_PREFIX, 12533) +HANDLE_BAT(APINT_TYPE_PREFIX, 12534) +HANDLE_BAT(APINT_TYPE_PREFIX, 12535) +HANDLE_BAT(APINT_TYPE_PREFIX, 12536) +HANDLE_BAT(APINT_TYPE_PREFIX, 12537) +HANDLE_BAT(APINT_TYPE_PREFIX, 12538) +HANDLE_BAT(APINT_TYPE_PREFIX, 12539) +HANDLE_BAT(APINT_TYPE_PREFIX, 12540) +HANDLE_BAT(APINT_TYPE_PREFIX, 12541) +HANDLE_BAT(APINT_TYPE_PREFIX, 12542) +HANDLE_BAT(APINT_TYPE_PREFIX, 12543) +HANDLE_BAT(APINT_TYPE_PREFIX, 12544) +HANDLE_BAT(APINT_TYPE_PREFIX, 12545) +HANDLE_BAT(APINT_TYPE_PREFIX, 12546) +HANDLE_BAT(APINT_TYPE_PREFIX, 12547) +HANDLE_BAT(APINT_TYPE_PREFIX, 12548) +HANDLE_BAT(APINT_TYPE_PREFIX, 12549) +HANDLE_BAT(APINT_TYPE_PREFIX, 12550) +HANDLE_BAT(APINT_TYPE_PREFIX, 12551) +HANDLE_BAT(APINT_TYPE_PREFIX, 12552) +HANDLE_BAT(APINT_TYPE_PREFIX, 12553) +HANDLE_BAT(APINT_TYPE_PREFIX, 12554) +HANDLE_BAT(APINT_TYPE_PREFIX, 12555) +HANDLE_BAT(APINT_TYPE_PREFIX, 12556) +HANDLE_BAT(APINT_TYPE_PREFIX, 12557) +HANDLE_BAT(APINT_TYPE_PREFIX, 12558) +HANDLE_BAT(APINT_TYPE_PREFIX, 12559) +HANDLE_BAT(APINT_TYPE_PREFIX, 12560) +HANDLE_BAT(APINT_TYPE_PREFIX, 12561) +HANDLE_BAT(APINT_TYPE_PREFIX, 12562) +HANDLE_BAT(APINT_TYPE_PREFIX, 12563) +HANDLE_BAT(APINT_TYPE_PREFIX, 12564) +HANDLE_BAT(APINT_TYPE_PREFIX, 12565) +HANDLE_BAT(APINT_TYPE_PREFIX, 12566) +HANDLE_BAT(APINT_TYPE_PREFIX, 12567) +HANDLE_BAT(APINT_TYPE_PREFIX, 12568) +HANDLE_BAT(APINT_TYPE_PREFIX, 12569) +HANDLE_BAT(APINT_TYPE_PREFIX, 12570) +HANDLE_BAT(APINT_TYPE_PREFIX, 12571) +HANDLE_BAT(APINT_TYPE_PREFIX, 12572) +HANDLE_BAT(APINT_TYPE_PREFIX, 12573) +HANDLE_BAT(APINT_TYPE_PREFIX, 12574) +HANDLE_BAT(APINT_TYPE_PREFIX, 12575) +HANDLE_BAT(APINT_TYPE_PREFIX, 12576) +HANDLE_BAT(APINT_TYPE_PREFIX, 12577) +HANDLE_BAT(APINT_TYPE_PREFIX, 12578) +HANDLE_BAT(APINT_TYPE_PREFIX, 12579) +HANDLE_BAT(APINT_TYPE_PREFIX, 12580) +HANDLE_BAT(APINT_TYPE_PREFIX, 12581) +HANDLE_BAT(APINT_TYPE_PREFIX, 12582) +HANDLE_BAT(APINT_TYPE_PREFIX, 12583) +HANDLE_BAT(APINT_TYPE_PREFIX, 12584) +HANDLE_BAT(APINT_TYPE_PREFIX, 12585) +HANDLE_BAT(APINT_TYPE_PREFIX, 12586) +HANDLE_BAT(APINT_TYPE_PREFIX, 12587) +HANDLE_BAT(APINT_TYPE_PREFIX, 12588) +HANDLE_BAT(APINT_TYPE_PREFIX, 12589) +HANDLE_BAT(APINT_TYPE_PREFIX, 12590) +HANDLE_BAT(APINT_TYPE_PREFIX, 12591) +HANDLE_BAT(APINT_TYPE_PREFIX, 12592) +HANDLE_BAT(APINT_TYPE_PREFIX, 12593) +HANDLE_BAT(APINT_TYPE_PREFIX, 12594) +HANDLE_BAT(APINT_TYPE_PREFIX, 12595) +HANDLE_BAT(APINT_TYPE_PREFIX, 12596) +HANDLE_BAT(APINT_TYPE_PREFIX, 12597) +HANDLE_BAT(APINT_TYPE_PREFIX, 12598) +HANDLE_BAT(APINT_TYPE_PREFIX, 12599) +HANDLE_BAT(APINT_TYPE_PREFIX, 12600) +HANDLE_BAT(APINT_TYPE_PREFIX, 12601) +HANDLE_BAT(APINT_TYPE_PREFIX, 12602) +HANDLE_BAT(APINT_TYPE_PREFIX, 12603) +HANDLE_BAT(APINT_TYPE_PREFIX, 12604) +HANDLE_BAT(APINT_TYPE_PREFIX, 12605) +HANDLE_BAT(APINT_TYPE_PREFIX, 12606) +HANDLE_BAT(APINT_TYPE_PREFIX, 12607) +HANDLE_BAT(APINT_TYPE_PREFIX, 12608) +HANDLE_BAT(APINT_TYPE_PREFIX, 12609) +HANDLE_BAT(APINT_TYPE_PREFIX, 12610) +HANDLE_BAT(APINT_TYPE_PREFIX, 12611) +HANDLE_BAT(APINT_TYPE_PREFIX, 12612) +HANDLE_BAT(APINT_TYPE_PREFIX, 12613) +HANDLE_BAT(APINT_TYPE_PREFIX, 12614) +HANDLE_BAT(APINT_TYPE_PREFIX, 12615) +HANDLE_BAT(APINT_TYPE_PREFIX, 12616) +HANDLE_BAT(APINT_TYPE_PREFIX, 12617) +HANDLE_BAT(APINT_TYPE_PREFIX, 12618) +HANDLE_BAT(APINT_TYPE_PREFIX, 12619) +HANDLE_BAT(APINT_TYPE_PREFIX, 12620) +HANDLE_BAT(APINT_TYPE_PREFIX, 12621) +HANDLE_BAT(APINT_TYPE_PREFIX, 12622) +HANDLE_BAT(APINT_TYPE_PREFIX, 12623) +HANDLE_BAT(APINT_TYPE_PREFIX, 12624) +HANDLE_BAT(APINT_TYPE_PREFIX, 12625) +HANDLE_BAT(APINT_TYPE_PREFIX, 12626) +HANDLE_BAT(APINT_TYPE_PREFIX, 12627) +HANDLE_BAT(APINT_TYPE_PREFIX, 12628) +HANDLE_BAT(APINT_TYPE_PREFIX, 12629) +HANDLE_BAT(APINT_TYPE_PREFIX, 12630) +HANDLE_BAT(APINT_TYPE_PREFIX, 12631) +HANDLE_BAT(APINT_TYPE_PREFIX, 12632) +HANDLE_BAT(APINT_TYPE_PREFIX, 12633) +HANDLE_BAT(APINT_TYPE_PREFIX, 12634) +HANDLE_BAT(APINT_TYPE_PREFIX, 12635) +HANDLE_BAT(APINT_TYPE_PREFIX, 12636) +HANDLE_BAT(APINT_TYPE_PREFIX, 12637) +HANDLE_BAT(APINT_TYPE_PREFIX, 12638) +HANDLE_BAT(APINT_TYPE_PREFIX, 12639) +HANDLE_BAT(APINT_TYPE_PREFIX, 12640) +HANDLE_BAT(APINT_TYPE_PREFIX, 12641) +HANDLE_BAT(APINT_TYPE_PREFIX, 12642) +HANDLE_BAT(APINT_TYPE_PREFIX, 12643) +HANDLE_BAT(APINT_TYPE_PREFIX, 12644) +HANDLE_BAT(APINT_TYPE_PREFIX, 12645) +HANDLE_BAT(APINT_TYPE_PREFIX, 12646) +HANDLE_BAT(APINT_TYPE_PREFIX, 12647) +HANDLE_BAT(APINT_TYPE_PREFIX, 12648) +HANDLE_BAT(APINT_TYPE_PREFIX, 12649) +HANDLE_BAT(APINT_TYPE_PREFIX, 12650) +HANDLE_BAT(APINT_TYPE_PREFIX, 12651) +HANDLE_BAT(APINT_TYPE_PREFIX, 12652) +HANDLE_BAT(APINT_TYPE_PREFIX, 12653) +HANDLE_BAT(APINT_TYPE_PREFIX, 12654) +HANDLE_BAT(APINT_TYPE_PREFIX, 12655) +HANDLE_BAT(APINT_TYPE_PREFIX, 12656) +HANDLE_BAT(APINT_TYPE_PREFIX, 12657) +HANDLE_BAT(APINT_TYPE_PREFIX, 12658) +HANDLE_BAT(APINT_TYPE_PREFIX, 12659) +HANDLE_BAT(APINT_TYPE_PREFIX, 12660) +HANDLE_BAT(APINT_TYPE_PREFIX, 12661) +HANDLE_BAT(APINT_TYPE_PREFIX, 12662) +HANDLE_BAT(APINT_TYPE_PREFIX, 12663) +HANDLE_BAT(APINT_TYPE_PREFIX, 12664) +HANDLE_BAT(APINT_TYPE_PREFIX, 12665) +HANDLE_BAT(APINT_TYPE_PREFIX, 12666) +HANDLE_BAT(APINT_TYPE_PREFIX, 12667) +HANDLE_BAT(APINT_TYPE_PREFIX, 12668) +HANDLE_BAT(APINT_TYPE_PREFIX, 12669) +HANDLE_BAT(APINT_TYPE_PREFIX, 12670) +HANDLE_BAT(APINT_TYPE_PREFIX, 12671) +HANDLE_BAT(APINT_TYPE_PREFIX, 12672) +HANDLE_BAT(APINT_TYPE_PREFIX, 12673) +HANDLE_BAT(APINT_TYPE_PREFIX, 12674) +HANDLE_BAT(APINT_TYPE_PREFIX, 12675) +HANDLE_BAT(APINT_TYPE_PREFIX, 12676) +HANDLE_BAT(APINT_TYPE_PREFIX, 12677) +HANDLE_BAT(APINT_TYPE_PREFIX, 12678) +HANDLE_BAT(APINT_TYPE_PREFIX, 12679) +HANDLE_BAT(APINT_TYPE_PREFIX, 12680) +HANDLE_BAT(APINT_TYPE_PREFIX, 12681) +HANDLE_BAT(APINT_TYPE_PREFIX, 12682) +HANDLE_BAT(APINT_TYPE_PREFIX, 12683) +HANDLE_BAT(APINT_TYPE_PREFIX, 12684) +HANDLE_BAT(APINT_TYPE_PREFIX, 12685) +HANDLE_BAT(APINT_TYPE_PREFIX, 12686) +HANDLE_BAT(APINT_TYPE_PREFIX, 12687) +HANDLE_BAT(APINT_TYPE_PREFIX, 12688) +HANDLE_BAT(APINT_TYPE_PREFIX, 12689) +HANDLE_BAT(APINT_TYPE_PREFIX, 12690) +HANDLE_BAT(APINT_TYPE_PREFIX, 12691) +HANDLE_BAT(APINT_TYPE_PREFIX, 12692) +HANDLE_BAT(APINT_TYPE_PREFIX, 12693) +HANDLE_BAT(APINT_TYPE_PREFIX, 12694) +HANDLE_BAT(APINT_TYPE_PREFIX, 12695) +HANDLE_BAT(APINT_TYPE_PREFIX, 12696) +HANDLE_BAT(APINT_TYPE_PREFIX, 12697) +HANDLE_BAT(APINT_TYPE_PREFIX, 12698) +HANDLE_BAT(APINT_TYPE_PREFIX, 12699) +HANDLE_BAT(APINT_TYPE_PREFIX, 12700) +HANDLE_BAT(APINT_TYPE_PREFIX, 12701) +HANDLE_BAT(APINT_TYPE_PREFIX, 12702) +HANDLE_BAT(APINT_TYPE_PREFIX, 12703) +HANDLE_BAT(APINT_TYPE_PREFIX, 12704) +HANDLE_BAT(APINT_TYPE_PREFIX, 12705) +HANDLE_BAT(APINT_TYPE_PREFIX, 12706) +HANDLE_BAT(APINT_TYPE_PREFIX, 12707) +HANDLE_BAT(APINT_TYPE_PREFIX, 12708) +HANDLE_BAT(APINT_TYPE_PREFIX, 12709) +HANDLE_BAT(APINT_TYPE_PREFIX, 12710) +HANDLE_BAT(APINT_TYPE_PREFIX, 12711) +HANDLE_BAT(APINT_TYPE_PREFIX, 12712) +HANDLE_BAT(APINT_TYPE_PREFIX, 12713) +HANDLE_BAT(APINT_TYPE_PREFIX, 12714) +HANDLE_BAT(APINT_TYPE_PREFIX, 12715) +HANDLE_BAT(APINT_TYPE_PREFIX, 12716) +HANDLE_BAT(APINT_TYPE_PREFIX, 12717) +HANDLE_BAT(APINT_TYPE_PREFIX, 12718) +HANDLE_BAT(APINT_TYPE_PREFIX, 12719) +HANDLE_BAT(APINT_TYPE_PREFIX, 12720) +HANDLE_BAT(APINT_TYPE_PREFIX, 12721) +HANDLE_BAT(APINT_TYPE_PREFIX, 12722) +HANDLE_BAT(APINT_TYPE_PREFIX, 12723) +HANDLE_BAT(APINT_TYPE_PREFIX, 12724) +HANDLE_BAT(APINT_TYPE_PREFIX, 12725) +HANDLE_BAT(APINT_TYPE_PREFIX, 12726) +HANDLE_BAT(APINT_TYPE_PREFIX, 12727) +HANDLE_BAT(APINT_TYPE_PREFIX, 12728) +HANDLE_BAT(APINT_TYPE_PREFIX, 12729) +HANDLE_BAT(APINT_TYPE_PREFIX, 12730) +HANDLE_BAT(APINT_TYPE_PREFIX, 12731) +HANDLE_BAT(APINT_TYPE_PREFIX, 12732) +HANDLE_BAT(APINT_TYPE_PREFIX, 12733) +HANDLE_BAT(APINT_TYPE_PREFIX, 12734) +HANDLE_BAT(APINT_TYPE_PREFIX, 12735) +HANDLE_BAT(APINT_TYPE_PREFIX, 12736) +HANDLE_BAT(APINT_TYPE_PREFIX, 12737) +HANDLE_BAT(APINT_TYPE_PREFIX, 12738) +HANDLE_BAT(APINT_TYPE_PREFIX, 12739) +HANDLE_BAT(APINT_TYPE_PREFIX, 12740) +HANDLE_BAT(APINT_TYPE_PREFIX, 12741) +HANDLE_BAT(APINT_TYPE_PREFIX, 12742) +HANDLE_BAT(APINT_TYPE_PREFIX, 12743) +HANDLE_BAT(APINT_TYPE_PREFIX, 12744) +HANDLE_BAT(APINT_TYPE_PREFIX, 12745) +HANDLE_BAT(APINT_TYPE_PREFIX, 12746) +HANDLE_BAT(APINT_TYPE_PREFIX, 12747) +HANDLE_BAT(APINT_TYPE_PREFIX, 12748) +HANDLE_BAT(APINT_TYPE_PREFIX, 12749) +HANDLE_BAT(APINT_TYPE_PREFIX, 12750) +HANDLE_BAT(APINT_TYPE_PREFIX, 12751) +HANDLE_BAT(APINT_TYPE_PREFIX, 12752) +HANDLE_BAT(APINT_TYPE_PREFIX, 12753) +HANDLE_BAT(APINT_TYPE_PREFIX, 12754) +HANDLE_BAT(APINT_TYPE_PREFIX, 12755) +HANDLE_BAT(APINT_TYPE_PREFIX, 12756) +HANDLE_BAT(APINT_TYPE_PREFIX, 12757) +HANDLE_BAT(APINT_TYPE_PREFIX, 12758) +HANDLE_BAT(APINT_TYPE_PREFIX, 12759) +HANDLE_BAT(APINT_TYPE_PREFIX, 12760) +HANDLE_BAT(APINT_TYPE_PREFIX, 12761) +HANDLE_BAT(APINT_TYPE_PREFIX, 12762) +HANDLE_BAT(APINT_TYPE_PREFIX, 12763) +HANDLE_BAT(APINT_TYPE_PREFIX, 12764) +HANDLE_BAT(APINT_TYPE_PREFIX, 12765) +HANDLE_BAT(APINT_TYPE_PREFIX, 12766) +HANDLE_BAT(APINT_TYPE_PREFIX, 12767) +HANDLE_BAT(APINT_TYPE_PREFIX, 12768) +HANDLE_BAT(APINT_TYPE_PREFIX, 12769) +HANDLE_BAT(APINT_TYPE_PREFIX, 12770) +HANDLE_BAT(APINT_TYPE_PREFIX, 12771) +HANDLE_BAT(APINT_TYPE_PREFIX, 12772) +HANDLE_BAT(APINT_TYPE_PREFIX, 12773) +HANDLE_BAT(APINT_TYPE_PREFIX, 12774) +HANDLE_BAT(APINT_TYPE_PREFIX, 12775) +HANDLE_BAT(APINT_TYPE_PREFIX, 12776) +HANDLE_BAT(APINT_TYPE_PREFIX, 12777) +HANDLE_BAT(APINT_TYPE_PREFIX, 12778) +HANDLE_BAT(APINT_TYPE_PREFIX, 12779) +HANDLE_BAT(APINT_TYPE_PREFIX, 12780) +HANDLE_BAT(APINT_TYPE_PREFIX, 12781) +HANDLE_BAT(APINT_TYPE_PREFIX, 12782) +HANDLE_BAT(APINT_TYPE_PREFIX, 12783) +HANDLE_BAT(APINT_TYPE_PREFIX, 12784) +HANDLE_BAT(APINT_TYPE_PREFIX, 12785) +HANDLE_BAT(APINT_TYPE_PREFIX, 12786) +HANDLE_BAT(APINT_TYPE_PREFIX, 12787) +HANDLE_BAT(APINT_TYPE_PREFIX, 12788) +HANDLE_BAT(APINT_TYPE_PREFIX, 12789) +HANDLE_BAT(APINT_TYPE_PREFIX, 12790) +HANDLE_BAT(APINT_TYPE_PREFIX, 12791) +HANDLE_BAT(APINT_TYPE_PREFIX, 12792) +HANDLE_BAT(APINT_TYPE_PREFIX, 12793) +HANDLE_BAT(APINT_TYPE_PREFIX, 12794) +HANDLE_BAT(APINT_TYPE_PREFIX, 12795) +HANDLE_BAT(APINT_TYPE_PREFIX, 12796) +HANDLE_BAT(APINT_TYPE_PREFIX, 12797) +HANDLE_BAT(APINT_TYPE_PREFIX, 12798) +HANDLE_BAT(APINT_TYPE_PREFIX, 12799) +HANDLE_BAT(APINT_TYPE_PREFIX, 12800) +HANDLE_BAT(APINT_TYPE_PREFIX, 12801) +HANDLE_BAT(APINT_TYPE_PREFIX, 12802) +HANDLE_BAT(APINT_TYPE_PREFIX, 12803) +HANDLE_BAT(APINT_TYPE_PREFIX, 12804) +HANDLE_BAT(APINT_TYPE_PREFIX, 12805) +HANDLE_BAT(APINT_TYPE_PREFIX, 12806) +HANDLE_BAT(APINT_TYPE_PREFIX, 12807) +HANDLE_BAT(APINT_TYPE_PREFIX, 12808) +HANDLE_BAT(APINT_TYPE_PREFIX, 12809) +HANDLE_BAT(APINT_TYPE_PREFIX, 12810) +HANDLE_BAT(APINT_TYPE_PREFIX, 12811) +HANDLE_BAT(APINT_TYPE_PREFIX, 12812) +HANDLE_BAT(APINT_TYPE_PREFIX, 12813) +HANDLE_BAT(APINT_TYPE_PREFIX, 12814) +HANDLE_BAT(APINT_TYPE_PREFIX, 12815) +HANDLE_BAT(APINT_TYPE_PREFIX, 12816) +HANDLE_BAT(APINT_TYPE_PREFIX, 12817) +HANDLE_BAT(APINT_TYPE_PREFIX, 12818) +HANDLE_BAT(APINT_TYPE_PREFIX, 12819) +HANDLE_BAT(APINT_TYPE_PREFIX, 12820) +HANDLE_BAT(APINT_TYPE_PREFIX, 12821) +HANDLE_BAT(APINT_TYPE_PREFIX, 12822) +HANDLE_BAT(APINT_TYPE_PREFIX, 12823) +HANDLE_BAT(APINT_TYPE_PREFIX, 12824) +HANDLE_BAT(APINT_TYPE_PREFIX, 12825) +HANDLE_BAT(APINT_TYPE_PREFIX, 12826) +HANDLE_BAT(APINT_TYPE_PREFIX, 12827) +HANDLE_BAT(APINT_TYPE_PREFIX, 12828) +HANDLE_BAT(APINT_TYPE_PREFIX, 12829) +HANDLE_BAT(APINT_TYPE_PREFIX, 12830) +HANDLE_BAT(APINT_TYPE_PREFIX, 12831) +HANDLE_BAT(APINT_TYPE_PREFIX, 12832) +HANDLE_BAT(APINT_TYPE_PREFIX, 12833) +HANDLE_BAT(APINT_TYPE_PREFIX, 12834) +HANDLE_BAT(APINT_TYPE_PREFIX, 12835) +HANDLE_BAT(APINT_TYPE_PREFIX, 12836) +HANDLE_BAT(APINT_TYPE_PREFIX, 12837) +HANDLE_BAT(APINT_TYPE_PREFIX, 12838) +HANDLE_BAT(APINT_TYPE_PREFIX, 12839) +HANDLE_BAT(APINT_TYPE_PREFIX, 12840) +HANDLE_BAT(APINT_TYPE_PREFIX, 12841) +HANDLE_BAT(APINT_TYPE_PREFIX, 12842) +HANDLE_BAT(APINT_TYPE_PREFIX, 12843) +HANDLE_BAT(APINT_TYPE_PREFIX, 12844) +HANDLE_BAT(APINT_TYPE_PREFIX, 12845) +HANDLE_BAT(APINT_TYPE_PREFIX, 12846) +HANDLE_BAT(APINT_TYPE_PREFIX, 12847) +HANDLE_BAT(APINT_TYPE_PREFIX, 12848) +HANDLE_BAT(APINT_TYPE_PREFIX, 12849) +HANDLE_BAT(APINT_TYPE_PREFIX, 12850) +HANDLE_BAT(APINT_TYPE_PREFIX, 12851) +HANDLE_BAT(APINT_TYPE_PREFIX, 12852) +HANDLE_BAT(APINT_TYPE_PREFIX, 12853) +HANDLE_BAT(APINT_TYPE_PREFIX, 12854) +HANDLE_BAT(APINT_TYPE_PREFIX, 12855) +HANDLE_BAT(APINT_TYPE_PREFIX, 12856) +HANDLE_BAT(APINT_TYPE_PREFIX, 12857) +HANDLE_BAT(APINT_TYPE_PREFIX, 12858) +HANDLE_BAT(APINT_TYPE_PREFIX, 12859) +HANDLE_BAT(APINT_TYPE_PREFIX, 12860) +HANDLE_BAT(APINT_TYPE_PREFIX, 12861) +HANDLE_BAT(APINT_TYPE_PREFIX, 12862) +HANDLE_BAT(APINT_TYPE_PREFIX, 12863) +HANDLE_BAT(APINT_TYPE_PREFIX, 12864) +HANDLE_BAT(APINT_TYPE_PREFIX, 12865) +HANDLE_BAT(APINT_TYPE_PREFIX, 12866) +HANDLE_BAT(APINT_TYPE_PREFIX, 12867) +HANDLE_BAT(APINT_TYPE_PREFIX, 12868) +HANDLE_BAT(APINT_TYPE_PREFIX, 12869) +HANDLE_BAT(APINT_TYPE_PREFIX, 12870) +HANDLE_BAT(APINT_TYPE_PREFIX, 12871) +HANDLE_BAT(APINT_TYPE_PREFIX, 12872) +HANDLE_BAT(APINT_TYPE_PREFIX, 12873) +HANDLE_BAT(APINT_TYPE_PREFIX, 12874) +HANDLE_BAT(APINT_TYPE_PREFIX, 12875) +HANDLE_BAT(APINT_TYPE_PREFIX, 12876) +HANDLE_BAT(APINT_TYPE_PREFIX, 12877) +HANDLE_BAT(APINT_TYPE_PREFIX, 12878) +HANDLE_BAT(APINT_TYPE_PREFIX, 12879) +HANDLE_BAT(APINT_TYPE_PREFIX, 12880) +HANDLE_BAT(APINT_TYPE_PREFIX, 12881) +HANDLE_BAT(APINT_TYPE_PREFIX, 12882) +HANDLE_BAT(APINT_TYPE_PREFIX, 12883) +HANDLE_BAT(APINT_TYPE_PREFIX, 12884) +HANDLE_BAT(APINT_TYPE_PREFIX, 12885) +HANDLE_BAT(APINT_TYPE_PREFIX, 12886) +HANDLE_BAT(APINT_TYPE_PREFIX, 12887) +HANDLE_BAT(APINT_TYPE_PREFIX, 12888) +HANDLE_BAT(APINT_TYPE_PREFIX, 12889) +HANDLE_BAT(APINT_TYPE_PREFIX, 12890) +HANDLE_BAT(APINT_TYPE_PREFIX, 12891) +HANDLE_BAT(APINT_TYPE_PREFIX, 12892) +HANDLE_BAT(APINT_TYPE_PREFIX, 12893) +HANDLE_BAT(APINT_TYPE_PREFIX, 12894) +HANDLE_BAT(APINT_TYPE_PREFIX, 12895) +HANDLE_BAT(APINT_TYPE_PREFIX, 12896) +HANDLE_BAT(APINT_TYPE_PREFIX, 12897) +HANDLE_BAT(APINT_TYPE_PREFIX, 12898) +HANDLE_BAT(APINT_TYPE_PREFIX, 12899) +HANDLE_BAT(APINT_TYPE_PREFIX, 12900) +HANDLE_BAT(APINT_TYPE_PREFIX, 12901) +HANDLE_BAT(APINT_TYPE_PREFIX, 12902) +HANDLE_BAT(APINT_TYPE_PREFIX, 12903) +HANDLE_BAT(APINT_TYPE_PREFIX, 12904) +HANDLE_BAT(APINT_TYPE_PREFIX, 12905) +HANDLE_BAT(APINT_TYPE_PREFIX, 12906) +HANDLE_BAT(APINT_TYPE_PREFIX, 12907) +HANDLE_BAT(APINT_TYPE_PREFIX, 12908) +HANDLE_BAT(APINT_TYPE_PREFIX, 12909) +HANDLE_BAT(APINT_TYPE_PREFIX, 12910) +HANDLE_BAT(APINT_TYPE_PREFIX, 12911) +HANDLE_BAT(APINT_TYPE_PREFIX, 12912) +HANDLE_BAT(APINT_TYPE_PREFIX, 12913) +HANDLE_BAT(APINT_TYPE_PREFIX, 12914) +HANDLE_BAT(APINT_TYPE_PREFIX, 12915) +HANDLE_BAT(APINT_TYPE_PREFIX, 12916) +HANDLE_BAT(APINT_TYPE_PREFIX, 12917) +HANDLE_BAT(APINT_TYPE_PREFIX, 12918) +HANDLE_BAT(APINT_TYPE_PREFIX, 12919) +HANDLE_BAT(APINT_TYPE_PREFIX, 12920) +HANDLE_BAT(APINT_TYPE_PREFIX, 12921) +HANDLE_BAT(APINT_TYPE_PREFIX, 12922) +HANDLE_BAT(APINT_TYPE_PREFIX, 12923) +HANDLE_BAT(APINT_TYPE_PREFIX, 12924) +HANDLE_BAT(APINT_TYPE_PREFIX, 12925) +HANDLE_BAT(APINT_TYPE_PREFIX, 12926) +HANDLE_BAT(APINT_TYPE_PREFIX, 12927) +HANDLE_BAT(APINT_TYPE_PREFIX, 12928) +HANDLE_BAT(APINT_TYPE_PREFIX, 12929) +HANDLE_BAT(APINT_TYPE_PREFIX, 12930) +HANDLE_BAT(APINT_TYPE_PREFIX, 12931) +HANDLE_BAT(APINT_TYPE_PREFIX, 12932) +HANDLE_BAT(APINT_TYPE_PREFIX, 12933) +HANDLE_BAT(APINT_TYPE_PREFIX, 12934) +HANDLE_BAT(APINT_TYPE_PREFIX, 12935) +HANDLE_BAT(APINT_TYPE_PREFIX, 12936) +HANDLE_BAT(APINT_TYPE_PREFIX, 12937) +HANDLE_BAT(APINT_TYPE_PREFIX, 12938) +HANDLE_BAT(APINT_TYPE_PREFIX, 12939) +HANDLE_BAT(APINT_TYPE_PREFIX, 12940) +HANDLE_BAT(APINT_TYPE_PREFIX, 12941) +HANDLE_BAT(APINT_TYPE_PREFIX, 12942) +HANDLE_BAT(APINT_TYPE_PREFIX, 12943) +HANDLE_BAT(APINT_TYPE_PREFIX, 12944) +HANDLE_BAT(APINT_TYPE_PREFIX, 12945) +HANDLE_BAT(APINT_TYPE_PREFIX, 12946) +HANDLE_BAT(APINT_TYPE_PREFIX, 12947) +HANDLE_BAT(APINT_TYPE_PREFIX, 12948) +HANDLE_BAT(APINT_TYPE_PREFIX, 12949) +HANDLE_BAT(APINT_TYPE_PREFIX, 12950) +HANDLE_BAT(APINT_TYPE_PREFIX, 12951) +HANDLE_BAT(APINT_TYPE_PREFIX, 12952) +HANDLE_BAT(APINT_TYPE_PREFIX, 12953) +HANDLE_BAT(APINT_TYPE_PREFIX, 12954) +HANDLE_BAT(APINT_TYPE_PREFIX, 12955) +HANDLE_BAT(APINT_TYPE_PREFIX, 12956) +HANDLE_BAT(APINT_TYPE_PREFIX, 12957) +HANDLE_BAT(APINT_TYPE_PREFIX, 12958) +HANDLE_BAT(APINT_TYPE_PREFIX, 12959) +HANDLE_BAT(APINT_TYPE_PREFIX, 12960) +HANDLE_BAT(APINT_TYPE_PREFIX, 12961) +HANDLE_BAT(APINT_TYPE_PREFIX, 12962) +HANDLE_BAT(APINT_TYPE_PREFIX, 12963) +HANDLE_BAT(APINT_TYPE_PREFIX, 12964) +HANDLE_BAT(APINT_TYPE_PREFIX, 12965) +HANDLE_BAT(APINT_TYPE_PREFIX, 12966) +HANDLE_BAT(APINT_TYPE_PREFIX, 12967) +HANDLE_BAT(APINT_TYPE_PREFIX, 12968) +HANDLE_BAT(APINT_TYPE_PREFIX, 12969) +HANDLE_BAT(APINT_TYPE_PREFIX, 12970) +HANDLE_BAT(APINT_TYPE_PREFIX, 12971) +HANDLE_BAT(APINT_TYPE_PREFIX, 12972) +HANDLE_BAT(APINT_TYPE_PREFIX, 12973) +HANDLE_BAT(APINT_TYPE_PREFIX, 12974) +HANDLE_BAT(APINT_TYPE_PREFIX, 12975) +HANDLE_BAT(APINT_TYPE_PREFIX, 12976) +HANDLE_BAT(APINT_TYPE_PREFIX, 12977) +HANDLE_BAT(APINT_TYPE_PREFIX, 12978) +HANDLE_BAT(APINT_TYPE_PREFIX, 12979) +HANDLE_BAT(APINT_TYPE_PREFIX, 12980) +HANDLE_BAT(APINT_TYPE_PREFIX, 12981) +HANDLE_BAT(APINT_TYPE_PREFIX, 12982) +HANDLE_BAT(APINT_TYPE_PREFIX, 12983) +HANDLE_BAT(APINT_TYPE_PREFIX, 12984) +HANDLE_BAT(APINT_TYPE_PREFIX, 12985) +HANDLE_BAT(APINT_TYPE_PREFIX, 12986) +HANDLE_BAT(APINT_TYPE_PREFIX, 12987) +HANDLE_BAT(APINT_TYPE_PREFIX, 12988) +HANDLE_BAT(APINT_TYPE_PREFIX, 12989) +HANDLE_BAT(APINT_TYPE_PREFIX, 12990) +HANDLE_BAT(APINT_TYPE_PREFIX, 12991) +HANDLE_BAT(APINT_TYPE_PREFIX, 12992) +HANDLE_BAT(APINT_TYPE_PREFIX, 12993) +HANDLE_BAT(APINT_TYPE_PREFIX, 12994) +HANDLE_BAT(APINT_TYPE_PREFIX, 12995) +HANDLE_BAT(APINT_TYPE_PREFIX, 12996) +HANDLE_BAT(APINT_TYPE_PREFIX, 12997) +HANDLE_BAT(APINT_TYPE_PREFIX, 12998) +HANDLE_BAT(APINT_TYPE_PREFIX, 12999) +HANDLE_BAT(APINT_TYPE_PREFIX, 13000) +HANDLE_BAT(APINT_TYPE_PREFIX, 13001) +HANDLE_BAT(APINT_TYPE_PREFIX, 13002) +HANDLE_BAT(APINT_TYPE_PREFIX, 13003) +HANDLE_BAT(APINT_TYPE_PREFIX, 13004) +HANDLE_BAT(APINT_TYPE_PREFIX, 13005) +HANDLE_BAT(APINT_TYPE_PREFIX, 13006) +HANDLE_BAT(APINT_TYPE_PREFIX, 13007) +HANDLE_BAT(APINT_TYPE_PREFIX, 13008) +HANDLE_BAT(APINT_TYPE_PREFIX, 13009) +HANDLE_BAT(APINT_TYPE_PREFIX, 13010) +HANDLE_BAT(APINT_TYPE_PREFIX, 13011) +HANDLE_BAT(APINT_TYPE_PREFIX, 13012) +HANDLE_BAT(APINT_TYPE_PREFIX, 13013) +HANDLE_BAT(APINT_TYPE_PREFIX, 13014) +HANDLE_BAT(APINT_TYPE_PREFIX, 13015) +HANDLE_BAT(APINT_TYPE_PREFIX, 13016) +HANDLE_BAT(APINT_TYPE_PREFIX, 13017) +HANDLE_BAT(APINT_TYPE_PREFIX, 13018) +HANDLE_BAT(APINT_TYPE_PREFIX, 13019) +HANDLE_BAT(APINT_TYPE_PREFIX, 13020) +HANDLE_BAT(APINT_TYPE_PREFIX, 13021) +HANDLE_BAT(APINT_TYPE_PREFIX, 13022) +HANDLE_BAT(APINT_TYPE_PREFIX, 13023) +HANDLE_BAT(APINT_TYPE_PREFIX, 13024) +HANDLE_BAT(APINT_TYPE_PREFIX, 13025) +HANDLE_BAT(APINT_TYPE_PREFIX, 13026) +HANDLE_BAT(APINT_TYPE_PREFIX, 13027) +HANDLE_BAT(APINT_TYPE_PREFIX, 13028) +HANDLE_BAT(APINT_TYPE_PREFIX, 13029) +HANDLE_BAT(APINT_TYPE_PREFIX, 13030) +HANDLE_BAT(APINT_TYPE_PREFIX, 13031) +HANDLE_BAT(APINT_TYPE_PREFIX, 13032) +HANDLE_BAT(APINT_TYPE_PREFIX, 13033) +HANDLE_BAT(APINT_TYPE_PREFIX, 13034) +HANDLE_BAT(APINT_TYPE_PREFIX, 13035) +HANDLE_BAT(APINT_TYPE_PREFIX, 13036) +HANDLE_BAT(APINT_TYPE_PREFIX, 13037) +HANDLE_BAT(APINT_TYPE_PREFIX, 13038) +HANDLE_BAT(APINT_TYPE_PREFIX, 13039) +HANDLE_BAT(APINT_TYPE_PREFIX, 13040) +HANDLE_BAT(APINT_TYPE_PREFIX, 13041) +HANDLE_BAT(APINT_TYPE_PREFIX, 13042) +HANDLE_BAT(APINT_TYPE_PREFIX, 13043) +HANDLE_BAT(APINT_TYPE_PREFIX, 13044) +HANDLE_BAT(APINT_TYPE_PREFIX, 13045) +HANDLE_BAT(APINT_TYPE_PREFIX, 13046) +HANDLE_BAT(APINT_TYPE_PREFIX, 13047) +HANDLE_BAT(APINT_TYPE_PREFIX, 13048) +HANDLE_BAT(APINT_TYPE_PREFIX, 13049) +HANDLE_BAT(APINT_TYPE_PREFIX, 13050) +HANDLE_BAT(APINT_TYPE_PREFIX, 13051) +HANDLE_BAT(APINT_TYPE_PREFIX, 13052) +HANDLE_BAT(APINT_TYPE_PREFIX, 13053) +HANDLE_BAT(APINT_TYPE_PREFIX, 13054) +HANDLE_BAT(APINT_TYPE_PREFIX, 13055) +HANDLE_BAT(APINT_TYPE_PREFIX, 13056) +HANDLE_BAT(APINT_TYPE_PREFIX, 13057) +HANDLE_BAT(APINT_TYPE_PREFIX, 13058) +HANDLE_BAT(APINT_TYPE_PREFIX, 13059) +HANDLE_BAT(APINT_TYPE_PREFIX, 13060) +HANDLE_BAT(APINT_TYPE_PREFIX, 13061) +HANDLE_BAT(APINT_TYPE_PREFIX, 13062) +HANDLE_BAT(APINT_TYPE_PREFIX, 13063) +HANDLE_BAT(APINT_TYPE_PREFIX, 13064) +HANDLE_BAT(APINT_TYPE_PREFIX, 13065) +HANDLE_BAT(APINT_TYPE_PREFIX, 13066) +HANDLE_BAT(APINT_TYPE_PREFIX, 13067) +HANDLE_BAT(APINT_TYPE_PREFIX, 13068) +HANDLE_BAT(APINT_TYPE_PREFIX, 13069) +HANDLE_BAT(APINT_TYPE_PREFIX, 13070) +HANDLE_BAT(APINT_TYPE_PREFIX, 13071) +HANDLE_BAT(APINT_TYPE_PREFIX, 13072) +HANDLE_BAT(APINT_TYPE_PREFIX, 13073) +HANDLE_BAT(APINT_TYPE_PREFIX, 13074) +HANDLE_BAT(APINT_TYPE_PREFIX, 13075) +HANDLE_BAT(APINT_TYPE_PREFIX, 13076) +HANDLE_BAT(APINT_TYPE_PREFIX, 13077) +HANDLE_BAT(APINT_TYPE_PREFIX, 13078) +HANDLE_BAT(APINT_TYPE_PREFIX, 13079) +HANDLE_BAT(APINT_TYPE_PREFIX, 13080) +HANDLE_BAT(APINT_TYPE_PREFIX, 13081) +HANDLE_BAT(APINT_TYPE_PREFIX, 13082) +HANDLE_BAT(APINT_TYPE_PREFIX, 13083) +HANDLE_BAT(APINT_TYPE_PREFIX, 13084) +HANDLE_BAT(APINT_TYPE_PREFIX, 13085) +HANDLE_BAT(APINT_TYPE_PREFIX, 13086) +HANDLE_BAT(APINT_TYPE_PREFIX, 13087) +HANDLE_BAT(APINT_TYPE_PREFIX, 13088) +HANDLE_BAT(APINT_TYPE_PREFIX, 13089) +HANDLE_BAT(APINT_TYPE_PREFIX, 13090) +HANDLE_BAT(APINT_TYPE_PREFIX, 13091) +HANDLE_BAT(APINT_TYPE_PREFIX, 13092) +HANDLE_BAT(APINT_TYPE_PREFIX, 13093) +HANDLE_BAT(APINT_TYPE_PREFIX, 13094) +HANDLE_BAT(APINT_TYPE_PREFIX, 13095) +HANDLE_BAT(APINT_TYPE_PREFIX, 13096) +HANDLE_BAT(APINT_TYPE_PREFIX, 13097) +HANDLE_BAT(APINT_TYPE_PREFIX, 13098) +HANDLE_BAT(APINT_TYPE_PREFIX, 13099) +HANDLE_BAT(APINT_TYPE_PREFIX, 13100) +HANDLE_BAT(APINT_TYPE_PREFIX, 13101) +HANDLE_BAT(APINT_TYPE_PREFIX, 13102) +HANDLE_BAT(APINT_TYPE_PREFIX, 13103) +HANDLE_BAT(APINT_TYPE_PREFIX, 13104) +HANDLE_BAT(APINT_TYPE_PREFIX, 13105) +HANDLE_BAT(APINT_TYPE_PREFIX, 13106) +HANDLE_BAT(APINT_TYPE_PREFIX, 13107) +HANDLE_BAT(APINT_TYPE_PREFIX, 13108) +HANDLE_BAT(APINT_TYPE_PREFIX, 13109) +HANDLE_BAT(APINT_TYPE_PREFIX, 13110) +HANDLE_BAT(APINT_TYPE_PREFIX, 13111) +HANDLE_BAT(APINT_TYPE_PREFIX, 13112) +HANDLE_BAT(APINT_TYPE_PREFIX, 13113) +HANDLE_BAT(APINT_TYPE_PREFIX, 13114) +HANDLE_BAT(APINT_TYPE_PREFIX, 13115) +HANDLE_BAT(APINT_TYPE_PREFIX, 13116) +HANDLE_BAT(APINT_TYPE_PREFIX, 13117) +HANDLE_BAT(APINT_TYPE_PREFIX, 13118) +HANDLE_BAT(APINT_TYPE_PREFIX, 13119) +HANDLE_BAT(APINT_TYPE_PREFIX, 13120) +HANDLE_BAT(APINT_TYPE_PREFIX, 13121) +HANDLE_BAT(APINT_TYPE_PREFIX, 13122) +HANDLE_BAT(APINT_TYPE_PREFIX, 13123) +HANDLE_BAT(APINT_TYPE_PREFIX, 13124) +HANDLE_BAT(APINT_TYPE_PREFIX, 13125) +HANDLE_BAT(APINT_TYPE_PREFIX, 13126) +HANDLE_BAT(APINT_TYPE_PREFIX, 13127) +HANDLE_BAT(APINT_TYPE_PREFIX, 13128) +HANDLE_BAT(APINT_TYPE_PREFIX, 13129) +HANDLE_BAT(APINT_TYPE_PREFIX, 13130) +HANDLE_BAT(APINT_TYPE_PREFIX, 13131) +HANDLE_BAT(APINT_TYPE_PREFIX, 13132) +HANDLE_BAT(APINT_TYPE_PREFIX, 13133) +HANDLE_BAT(APINT_TYPE_PREFIX, 13134) +HANDLE_BAT(APINT_TYPE_PREFIX, 13135) +HANDLE_BAT(APINT_TYPE_PREFIX, 13136) +HANDLE_BAT(APINT_TYPE_PREFIX, 13137) +HANDLE_BAT(APINT_TYPE_PREFIX, 13138) +HANDLE_BAT(APINT_TYPE_PREFIX, 13139) +HANDLE_BAT(APINT_TYPE_PREFIX, 13140) +HANDLE_BAT(APINT_TYPE_PREFIX, 13141) +HANDLE_BAT(APINT_TYPE_PREFIX, 13142) +HANDLE_BAT(APINT_TYPE_PREFIX, 13143) +HANDLE_BAT(APINT_TYPE_PREFIX, 13144) +HANDLE_BAT(APINT_TYPE_PREFIX, 13145) +HANDLE_BAT(APINT_TYPE_PREFIX, 13146) +HANDLE_BAT(APINT_TYPE_PREFIX, 13147) +HANDLE_BAT(APINT_TYPE_PREFIX, 13148) +HANDLE_BAT(APINT_TYPE_PREFIX, 13149) +HANDLE_BAT(APINT_TYPE_PREFIX, 13150) +HANDLE_BAT(APINT_TYPE_PREFIX, 13151) +HANDLE_BAT(APINT_TYPE_PREFIX, 13152) +HANDLE_BAT(APINT_TYPE_PREFIX, 13153) +HANDLE_BAT(APINT_TYPE_PREFIX, 13154) +HANDLE_BAT(APINT_TYPE_PREFIX, 13155) +HANDLE_BAT(APINT_TYPE_PREFIX, 13156) +HANDLE_BAT(APINT_TYPE_PREFIX, 13157) +HANDLE_BAT(APINT_TYPE_PREFIX, 13158) +HANDLE_BAT(APINT_TYPE_PREFIX, 13159) +HANDLE_BAT(APINT_TYPE_PREFIX, 13160) +HANDLE_BAT(APINT_TYPE_PREFIX, 13161) +HANDLE_BAT(APINT_TYPE_PREFIX, 13162) +HANDLE_BAT(APINT_TYPE_PREFIX, 13163) +HANDLE_BAT(APINT_TYPE_PREFIX, 13164) +HANDLE_BAT(APINT_TYPE_PREFIX, 13165) +HANDLE_BAT(APINT_TYPE_PREFIX, 13166) +HANDLE_BAT(APINT_TYPE_PREFIX, 13167) +HANDLE_BAT(APINT_TYPE_PREFIX, 13168) +HANDLE_BAT(APINT_TYPE_PREFIX, 13169) +HANDLE_BAT(APINT_TYPE_PREFIX, 13170) +HANDLE_BAT(APINT_TYPE_PREFIX, 13171) +HANDLE_BAT(APINT_TYPE_PREFIX, 13172) +HANDLE_BAT(APINT_TYPE_PREFIX, 13173) +HANDLE_BAT(APINT_TYPE_PREFIX, 13174) +HANDLE_BAT(APINT_TYPE_PREFIX, 13175) +HANDLE_BAT(APINT_TYPE_PREFIX, 13176) +HANDLE_BAT(APINT_TYPE_PREFIX, 13177) +HANDLE_BAT(APINT_TYPE_PREFIX, 13178) +HANDLE_BAT(APINT_TYPE_PREFIX, 13179) +HANDLE_BAT(APINT_TYPE_PREFIX, 13180) +HANDLE_BAT(APINT_TYPE_PREFIX, 13181) +HANDLE_BAT(APINT_TYPE_PREFIX, 13182) +HANDLE_BAT(APINT_TYPE_PREFIX, 13183) +HANDLE_BAT(APINT_TYPE_PREFIX, 13184) +HANDLE_BAT(APINT_TYPE_PREFIX, 13185) +HANDLE_BAT(APINT_TYPE_PREFIX, 13186) +HANDLE_BAT(APINT_TYPE_PREFIX, 13187) +HANDLE_BAT(APINT_TYPE_PREFIX, 13188) +HANDLE_BAT(APINT_TYPE_PREFIX, 13189) +HANDLE_BAT(APINT_TYPE_PREFIX, 13190) +HANDLE_BAT(APINT_TYPE_PREFIX, 13191) +HANDLE_BAT(APINT_TYPE_PREFIX, 13192) +HANDLE_BAT(APINT_TYPE_PREFIX, 13193) +HANDLE_BAT(APINT_TYPE_PREFIX, 13194) +HANDLE_BAT(APINT_TYPE_PREFIX, 13195) +HANDLE_BAT(APINT_TYPE_PREFIX, 13196) +HANDLE_BAT(APINT_TYPE_PREFIX, 13197) +HANDLE_BAT(APINT_TYPE_PREFIX, 13198) +HANDLE_BAT(APINT_TYPE_PREFIX, 13199) +HANDLE_BAT(APINT_TYPE_PREFIX, 13200) +HANDLE_BAT(APINT_TYPE_PREFIX, 13201) +HANDLE_BAT(APINT_TYPE_PREFIX, 13202) +HANDLE_BAT(APINT_TYPE_PREFIX, 13203) +HANDLE_BAT(APINT_TYPE_PREFIX, 13204) +HANDLE_BAT(APINT_TYPE_PREFIX, 13205) +HANDLE_BAT(APINT_TYPE_PREFIX, 13206) +HANDLE_BAT(APINT_TYPE_PREFIX, 13207) +HANDLE_BAT(APINT_TYPE_PREFIX, 13208) +HANDLE_BAT(APINT_TYPE_PREFIX, 13209) +HANDLE_BAT(APINT_TYPE_PREFIX, 13210) +HANDLE_BAT(APINT_TYPE_PREFIX, 13211) +HANDLE_BAT(APINT_TYPE_PREFIX, 13212) +HANDLE_BAT(APINT_TYPE_PREFIX, 13213) +HANDLE_BAT(APINT_TYPE_PREFIX, 13214) +HANDLE_BAT(APINT_TYPE_PREFIX, 13215) +HANDLE_BAT(APINT_TYPE_PREFIX, 13216) +HANDLE_BAT(APINT_TYPE_PREFIX, 13217) +HANDLE_BAT(APINT_TYPE_PREFIX, 13218) +HANDLE_BAT(APINT_TYPE_PREFIX, 13219) +HANDLE_BAT(APINT_TYPE_PREFIX, 13220) +HANDLE_BAT(APINT_TYPE_PREFIX, 13221) +HANDLE_BAT(APINT_TYPE_PREFIX, 13222) +HANDLE_BAT(APINT_TYPE_PREFIX, 13223) +HANDLE_BAT(APINT_TYPE_PREFIX, 13224) +HANDLE_BAT(APINT_TYPE_PREFIX, 13225) +HANDLE_BAT(APINT_TYPE_PREFIX, 13226) +HANDLE_BAT(APINT_TYPE_PREFIX, 13227) +HANDLE_BAT(APINT_TYPE_PREFIX, 13228) +HANDLE_BAT(APINT_TYPE_PREFIX, 13229) +HANDLE_BAT(APINT_TYPE_PREFIX, 13230) +HANDLE_BAT(APINT_TYPE_PREFIX, 13231) +HANDLE_BAT(APINT_TYPE_PREFIX, 13232) +HANDLE_BAT(APINT_TYPE_PREFIX, 13233) +HANDLE_BAT(APINT_TYPE_PREFIX, 13234) +HANDLE_BAT(APINT_TYPE_PREFIX, 13235) +HANDLE_BAT(APINT_TYPE_PREFIX, 13236) +HANDLE_BAT(APINT_TYPE_PREFIX, 13237) +HANDLE_BAT(APINT_TYPE_PREFIX, 13238) +HANDLE_BAT(APINT_TYPE_PREFIX, 13239) +HANDLE_BAT(APINT_TYPE_PREFIX, 13240) +HANDLE_BAT(APINT_TYPE_PREFIX, 13241) +HANDLE_BAT(APINT_TYPE_PREFIX, 13242) +HANDLE_BAT(APINT_TYPE_PREFIX, 13243) +HANDLE_BAT(APINT_TYPE_PREFIX, 13244) +HANDLE_BAT(APINT_TYPE_PREFIX, 13245) +HANDLE_BAT(APINT_TYPE_PREFIX, 13246) +HANDLE_BAT(APINT_TYPE_PREFIX, 13247) +HANDLE_BAT(APINT_TYPE_PREFIX, 13248) +HANDLE_BAT(APINT_TYPE_PREFIX, 13249) +HANDLE_BAT(APINT_TYPE_PREFIX, 13250) +HANDLE_BAT(APINT_TYPE_PREFIX, 13251) +HANDLE_BAT(APINT_TYPE_PREFIX, 13252) +HANDLE_BAT(APINT_TYPE_PREFIX, 13253) +HANDLE_BAT(APINT_TYPE_PREFIX, 13254) +HANDLE_BAT(APINT_TYPE_PREFIX, 13255) +HANDLE_BAT(APINT_TYPE_PREFIX, 13256) +HANDLE_BAT(APINT_TYPE_PREFIX, 13257) +HANDLE_BAT(APINT_TYPE_PREFIX, 13258) +HANDLE_BAT(APINT_TYPE_PREFIX, 13259) +HANDLE_BAT(APINT_TYPE_PREFIX, 13260) +HANDLE_BAT(APINT_TYPE_PREFIX, 13261) +HANDLE_BAT(APINT_TYPE_PREFIX, 13262) +HANDLE_BAT(APINT_TYPE_PREFIX, 13263) +HANDLE_BAT(APINT_TYPE_PREFIX, 13264) +HANDLE_BAT(APINT_TYPE_PREFIX, 13265) +HANDLE_BAT(APINT_TYPE_PREFIX, 13266) +HANDLE_BAT(APINT_TYPE_PREFIX, 13267) +HANDLE_BAT(APINT_TYPE_PREFIX, 13268) +HANDLE_BAT(APINT_TYPE_PREFIX, 13269) +HANDLE_BAT(APINT_TYPE_PREFIX, 13270) +HANDLE_BAT(APINT_TYPE_PREFIX, 13271) +HANDLE_BAT(APINT_TYPE_PREFIX, 13272) +HANDLE_BAT(APINT_TYPE_PREFIX, 13273) +HANDLE_BAT(APINT_TYPE_PREFIX, 13274) +HANDLE_BAT(APINT_TYPE_PREFIX, 13275) +HANDLE_BAT(APINT_TYPE_PREFIX, 13276) +HANDLE_BAT(APINT_TYPE_PREFIX, 13277) +HANDLE_BAT(APINT_TYPE_PREFIX, 13278) +HANDLE_BAT(APINT_TYPE_PREFIX, 13279) +HANDLE_BAT(APINT_TYPE_PREFIX, 13280) +HANDLE_BAT(APINT_TYPE_PREFIX, 13281) +HANDLE_BAT(APINT_TYPE_PREFIX, 13282) +HANDLE_BAT(APINT_TYPE_PREFIX, 13283) +HANDLE_BAT(APINT_TYPE_PREFIX, 13284) +HANDLE_BAT(APINT_TYPE_PREFIX, 13285) +HANDLE_BAT(APINT_TYPE_PREFIX, 13286) +HANDLE_BAT(APINT_TYPE_PREFIX, 13287) +HANDLE_BAT(APINT_TYPE_PREFIX, 13288) +HANDLE_BAT(APINT_TYPE_PREFIX, 13289) +HANDLE_BAT(APINT_TYPE_PREFIX, 13290) +HANDLE_BAT(APINT_TYPE_PREFIX, 13291) +HANDLE_BAT(APINT_TYPE_PREFIX, 13292) +HANDLE_BAT(APINT_TYPE_PREFIX, 13293) +HANDLE_BAT(APINT_TYPE_PREFIX, 13294) +HANDLE_BAT(APINT_TYPE_PREFIX, 13295) +HANDLE_BAT(APINT_TYPE_PREFIX, 13296) +HANDLE_BAT(APINT_TYPE_PREFIX, 13297) +HANDLE_BAT(APINT_TYPE_PREFIX, 13298) +HANDLE_BAT(APINT_TYPE_PREFIX, 13299) +HANDLE_BAT(APINT_TYPE_PREFIX, 13300) +HANDLE_BAT(APINT_TYPE_PREFIX, 13301) +HANDLE_BAT(APINT_TYPE_PREFIX, 13302) +HANDLE_BAT(APINT_TYPE_PREFIX, 13303) +HANDLE_BAT(APINT_TYPE_PREFIX, 13304) +HANDLE_BAT(APINT_TYPE_PREFIX, 13305) +HANDLE_BAT(APINT_TYPE_PREFIX, 13306) +HANDLE_BAT(APINT_TYPE_PREFIX, 13307) +HANDLE_BAT(APINT_TYPE_PREFIX, 13308) +HANDLE_BAT(APINT_TYPE_PREFIX, 13309) +HANDLE_BAT(APINT_TYPE_PREFIX, 13310) +HANDLE_BAT(APINT_TYPE_PREFIX, 13311) +HANDLE_BAT(APINT_TYPE_PREFIX, 13312) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 13 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 13313) +HANDLE_BAT(, 13314) +HANDLE_BAT(, 13315) +HANDLE_BAT(, 13316) +HANDLE_BAT(, 13317) +HANDLE_BAT(, 13318) +HANDLE_BAT(, 13319) +HANDLE_BAT(, 13320) +HANDLE_BAT(, 13321) +HANDLE_BAT(, 13322) +HANDLE_BAT(, 13323) +HANDLE_BAT(, 13324) +HANDLE_BAT(, 13325) +HANDLE_BAT(, 13326) +HANDLE_BAT(, 13327) +HANDLE_BAT(, 13328) +HANDLE_BAT(, 13329) +HANDLE_BAT(, 13330) +HANDLE_BAT(, 13331) +HANDLE_BAT(, 13332) +HANDLE_BAT(, 13333) +HANDLE_BAT(, 13334) +HANDLE_BAT(, 13335) +HANDLE_BAT(, 13336) +HANDLE_BAT(, 13337) +HANDLE_BAT(, 13338) +HANDLE_BAT(, 13339) +HANDLE_BAT(, 13340) +HANDLE_BAT(, 13341) +HANDLE_BAT(, 13342) +HANDLE_BAT(, 13343) +HANDLE_BAT(, 13344) +HANDLE_BAT(, 13345) +HANDLE_BAT(, 13346) +HANDLE_BAT(, 13347) +HANDLE_BAT(, 13348) +HANDLE_BAT(, 13349) +HANDLE_BAT(, 13350) +HANDLE_BAT(, 13351) +HANDLE_BAT(, 13352) +HANDLE_BAT(, 13353) +HANDLE_BAT(, 13354) +HANDLE_BAT(, 13355) +HANDLE_BAT(, 13356) +HANDLE_BAT(, 13357) +HANDLE_BAT(, 13358) +HANDLE_BAT(, 13359) +HANDLE_BAT(, 13360) +HANDLE_BAT(, 13361) +HANDLE_BAT(, 13362) +HANDLE_BAT(, 13363) +HANDLE_BAT(, 13364) +HANDLE_BAT(, 13365) +HANDLE_BAT(, 13366) +HANDLE_BAT(, 13367) +HANDLE_BAT(, 13368) +HANDLE_BAT(, 13369) +HANDLE_BAT(, 13370) +HANDLE_BAT(, 13371) +HANDLE_BAT(, 13372) +HANDLE_BAT(, 13373) +HANDLE_BAT(, 13374) +HANDLE_BAT(, 13375) +HANDLE_BAT(, 13376) +HANDLE_BAT(, 13377) +HANDLE_BAT(, 13378) +HANDLE_BAT(, 13379) +HANDLE_BAT(, 13380) +HANDLE_BAT(, 13381) +HANDLE_BAT(, 13382) +HANDLE_BAT(, 13383) +HANDLE_BAT(, 13384) +HANDLE_BAT(, 13385) +HANDLE_BAT(, 13386) +HANDLE_BAT(, 13387) +HANDLE_BAT(, 13388) +HANDLE_BAT(, 13389) +HANDLE_BAT(, 13390) +HANDLE_BAT(, 13391) +HANDLE_BAT(, 13392) +HANDLE_BAT(, 13393) +HANDLE_BAT(, 13394) +HANDLE_BAT(, 13395) +HANDLE_BAT(, 13396) +HANDLE_BAT(, 13397) +HANDLE_BAT(, 13398) +HANDLE_BAT(, 13399) +HANDLE_BAT(, 13400) +HANDLE_BAT(, 13401) +HANDLE_BAT(, 13402) +HANDLE_BAT(, 13403) +HANDLE_BAT(, 13404) +HANDLE_BAT(, 13405) +HANDLE_BAT(, 13406) +HANDLE_BAT(, 13407) +HANDLE_BAT(, 13408) +HANDLE_BAT(, 13409) +HANDLE_BAT(, 13410) +HANDLE_BAT(, 13411) +HANDLE_BAT(, 13412) +HANDLE_BAT(, 13413) +HANDLE_BAT(, 13414) +HANDLE_BAT(, 13415) +HANDLE_BAT(, 13416) +HANDLE_BAT(, 13417) +HANDLE_BAT(, 13418) +HANDLE_BAT(, 13419) +HANDLE_BAT(, 13420) +HANDLE_BAT(, 13421) +HANDLE_BAT(, 13422) +HANDLE_BAT(, 13423) +HANDLE_BAT(, 13424) +HANDLE_BAT(, 13425) +HANDLE_BAT(, 13426) +HANDLE_BAT(, 13427) +HANDLE_BAT(, 13428) +HANDLE_BAT(, 13429) +HANDLE_BAT(, 13430) +HANDLE_BAT(, 13431) +HANDLE_BAT(, 13432) +HANDLE_BAT(, 13433) +HANDLE_BAT(, 13434) +HANDLE_BAT(, 13435) +HANDLE_BAT(, 13436) +HANDLE_BAT(, 13437) +HANDLE_BAT(, 13438) +HANDLE_BAT(, 13439) +HANDLE_BAT(, 13440) +HANDLE_BAT(, 13441) +HANDLE_BAT(, 13442) +HANDLE_BAT(, 13443) +HANDLE_BAT(, 13444) +HANDLE_BAT(, 13445) +HANDLE_BAT(, 13446) +HANDLE_BAT(, 13447) +HANDLE_BAT(, 13448) +HANDLE_BAT(, 13449) +HANDLE_BAT(, 13450) +HANDLE_BAT(, 13451) +HANDLE_BAT(, 13452) +HANDLE_BAT(, 13453) +HANDLE_BAT(, 13454) +HANDLE_BAT(, 13455) +HANDLE_BAT(, 13456) +HANDLE_BAT(, 13457) +HANDLE_BAT(, 13458) +HANDLE_BAT(, 13459) +HANDLE_BAT(, 13460) +HANDLE_BAT(, 13461) +HANDLE_BAT(, 13462) +HANDLE_BAT(, 13463) +HANDLE_BAT(, 13464) +HANDLE_BAT(, 13465) +HANDLE_BAT(, 13466) +HANDLE_BAT(, 13467) +HANDLE_BAT(, 13468) +HANDLE_BAT(, 13469) +HANDLE_BAT(, 13470) +HANDLE_BAT(, 13471) +HANDLE_BAT(, 13472) +HANDLE_BAT(, 13473) +HANDLE_BAT(, 13474) +HANDLE_BAT(, 13475) +HANDLE_BAT(, 13476) +HANDLE_BAT(, 13477) +HANDLE_BAT(, 13478) +HANDLE_BAT(, 13479) +HANDLE_BAT(, 13480) +HANDLE_BAT(, 13481) +HANDLE_BAT(, 13482) +HANDLE_BAT(, 13483) +HANDLE_BAT(, 13484) +HANDLE_BAT(, 13485) +HANDLE_BAT(, 13486) +HANDLE_BAT(, 13487) +HANDLE_BAT(, 13488) +HANDLE_BAT(, 13489) +HANDLE_BAT(, 13490) +HANDLE_BAT(, 13491) +HANDLE_BAT(, 13492) +HANDLE_BAT(, 13493) +HANDLE_BAT(, 13494) +HANDLE_BAT(, 13495) +HANDLE_BAT(, 13496) +HANDLE_BAT(, 13497) +HANDLE_BAT(, 13498) +HANDLE_BAT(, 13499) +HANDLE_BAT(, 13500) +HANDLE_BAT(, 13501) +HANDLE_BAT(, 13502) +HANDLE_BAT(, 13503) +HANDLE_BAT(, 13504) +HANDLE_BAT(, 13505) +HANDLE_BAT(, 13506) +HANDLE_BAT(, 13507) +HANDLE_BAT(, 13508) +HANDLE_BAT(, 13509) +HANDLE_BAT(, 13510) +HANDLE_BAT(, 13511) +HANDLE_BAT(, 13512) +HANDLE_BAT(, 13513) +HANDLE_BAT(, 13514) +HANDLE_BAT(, 13515) +HANDLE_BAT(, 13516) +HANDLE_BAT(, 13517) +HANDLE_BAT(, 13518) +HANDLE_BAT(, 13519) +HANDLE_BAT(, 13520) +HANDLE_BAT(, 13521) +HANDLE_BAT(, 13522) +HANDLE_BAT(, 13523) +HANDLE_BAT(, 13524) +HANDLE_BAT(, 13525) +HANDLE_BAT(, 13526) +HANDLE_BAT(, 13527) +HANDLE_BAT(, 13528) +HANDLE_BAT(, 13529) +HANDLE_BAT(, 13530) +HANDLE_BAT(, 13531) +HANDLE_BAT(, 13532) +HANDLE_BAT(, 13533) +HANDLE_BAT(, 13534) +HANDLE_BAT(, 13535) +HANDLE_BAT(, 13536) +HANDLE_BAT(, 13537) +HANDLE_BAT(, 13538) +HANDLE_BAT(, 13539) +HANDLE_BAT(, 13540) +HANDLE_BAT(, 13541) +HANDLE_BAT(, 13542) +HANDLE_BAT(, 13543) +HANDLE_BAT(, 13544) +HANDLE_BAT(, 13545) +HANDLE_BAT(, 13546) +HANDLE_BAT(, 13547) +HANDLE_BAT(, 13548) +HANDLE_BAT(, 13549) +HANDLE_BAT(, 13550) +HANDLE_BAT(, 13551) +HANDLE_BAT(, 13552) +HANDLE_BAT(, 13553) +HANDLE_BAT(, 13554) +HANDLE_BAT(, 13555) +HANDLE_BAT(, 13556) +HANDLE_BAT(, 13557) +HANDLE_BAT(, 13558) +HANDLE_BAT(, 13559) +HANDLE_BAT(, 13560) +HANDLE_BAT(, 13561) +HANDLE_BAT(, 13562) +HANDLE_BAT(, 13563) +HANDLE_BAT(, 13564) +HANDLE_BAT(, 13565) +HANDLE_BAT(, 13566) +HANDLE_BAT(, 13567) +HANDLE_BAT(, 13568) +HANDLE_BAT(, 13569) +HANDLE_BAT(, 13570) +HANDLE_BAT(, 13571) +HANDLE_BAT(, 13572) +HANDLE_BAT(, 13573) +HANDLE_BAT(, 13574) +HANDLE_BAT(, 13575) +HANDLE_BAT(, 13576) +HANDLE_BAT(, 13577) +HANDLE_BAT(, 13578) +HANDLE_BAT(, 13579) +HANDLE_BAT(, 13580) +HANDLE_BAT(, 13581) +HANDLE_BAT(, 13582) +HANDLE_BAT(, 13583) +HANDLE_BAT(, 13584) +HANDLE_BAT(, 13585) +HANDLE_BAT(, 13586) +HANDLE_BAT(, 13587) +HANDLE_BAT(, 13588) +HANDLE_BAT(, 13589) +HANDLE_BAT(, 13590) +HANDLE_BAT(, 13591) +HANDLE_BAT(, 13592) +HANDLE_BAT(, 13593) +HANDLE_BAT(, 13594) +HANDLE_BAT(, 13595) +HANDLE_BAT(, 13596) +HANDLE_BAT(, 13597) +HANDLE_BAT(, 13598) +HANDLE_BAT(, 13599) +HANDLE_BAT(, 13600) +HANDLE_BAT(, 13601) +HANDLE_BAT(, 13602) +HANDLE_BAT(, 13603) +HANDLE_BAT(, 13604) +HANDLE_BAT(, 13605) +HANDLE_BAT(, 13606) +HANDLE_BAT(, 13607) +HANDLE_BAT(, 13608) +HANDLE_BAT(, 13609) +HANDLE_BAT(, 13610) +HANDLE_BAT(, 13611) +HANDLE_BAT(, 13612) +HANDLE_BAT(, 13613) +HANDLE_BAT(, 13614) +HANDLE_BAT(, 13615) +HANDLE_BAT(, 13616) +HANDLE_BAT(, 13617) +HANDLE_BAT(, 13618) +HANDLE_BAT(, 13619) +HANDLE_BAT(, 13620) +HANDLE_BAT(, 13621) +HANDLE_BAT(, 13622) +HANDLE_BAT(, 13623) +HANDLE_BAT(, 13624) +HANDLE_BAT(, 13625) +HANDLE_BAT(, 13626) +HANDLE_BAT(, 13627) +HANDLE_BAT(, 13628) +HANDLE_BAT(, 13629) +HANDLE_BAT(, 13630) +HANDLE_BAT(, 13631) +HANDLE_BAT(, 13632) +HANDLE_BAT(, 13633) +HANDLE_BAT(, 13634) +HANDLE_BAT(, 13635) +HANDLE_BAT(, 13636) +HANDLE_BAT(, 13637) +HANDLE_BAT(, 13638) +HANDLE_BAT(, 13639) +HANDLE_BAT(, 13640) +HANDLE_BAT(, 13641) +HANDLE_BAT(, 13642) +HANDLE_BAT(, 13643) +HANDLE_BAT(, 13644) +HANDLE_BAT(, 13645) +HANDLE_BAT(, 13646) +HANDLE_BAT(, 13647) +HANDLE_BAT(, 13648) +HANDLE_BAT(, 13649) +HANDLE_BAT(, 13650) +HANDLE_BAT(, 13651) +HANDLE_BAT(, 13652) +HANDLE_BAT(, 13653) +HANDLE_BAT(, 13654) +HANDLE_BAT(, 13655) +HANDLE_BAT(, 13656) +HANDLE_BAT(, 13657) +HANDLE_BAT(, 13658) +HANDLE_BAT(, 13659) +HANDLE_BAT(, 13660) +HANDLE_BAT(, 13661) +HANDLE_BAT(, 13662) +HANDLE_BAT(, 13663) +HANDLE_BAT(, 13664) +HANDLE_BAT(, 13665) +HANDLE_BAT(, 13666) +HANDLE_BAT(, 13667) +HANDLE_BAT(, 13668) +HANDLE_BAT(, 13669) +HANDLE_BAT(, 13670) +HANDLE_BAT(, 13671) +HANDLE_BAT(, 13672) +HANDLE_BAT(, 13673) +HANDLE_BAT(, 13674) +HANDLE_BAT(, 13675) +HANDLE_BAT(, 13676) +HANDLE_BAT(, 13677) +HANDLE_BAT(, 13678) +HANDLE_BAT(, 13679) +HANDLE_BAT(, 13680) +HANDLE_BAT(, 13681) +HANDLE_BAT(, 13682) +HANDLE_BAT(, 13683) +HANDLE_BAT(, 13684) +HANDLE_BAT(, 13685) +HANDLE_BAT(, 13686) +HANDLE_BAT(, 13687) +HANDLE_BAT(, 13688) +HANDLE_BAT(, 13689) +HANDLE_BAT(, 13690) +HANDLE_BAT(, 13691) +HANDLE_BAT(, 13692) +HANDLE_BAT(, 13693) +HANDLE_BAT(, 13694) +HANDLE_BAT(, 13695) +HANDLE_BAT(, 13696) +HANDLE_BAT(, 13697) +HANDLE_BAT(, 13698) +HANDLE_BAT(, 13699) +HANDLE_BAT(, 13700) +HANDLE_BAT(, 13701) +HANDLE_BAT(, 13702) +HANDLE_BAT(, 13703) +HANDLE_BAT(, 13704) +HANDLE_BAT(, 13705) +HANDLE_BAT(, 13706) +HANDLE_BAT(, 13707) +HANDLE_BAT(, 13708) +HANDLE_BAT(, 13709) +HANDLE_BAT(, 13710) +HANDLE_BAT(, 13711) +HANDLE_BAT(, 13712) +HANDLE_BAT(, 13713) +HANDLE_BAT(, 13714) +HANDLE_BAT(, 13715) +HANDLE_BAT(, 13716) +HANDLE_BAT(, 13717) +HANDLE_BAT(, 13718) +HANDLE_BAT(, 13719) +HANDLE_BAT(, 13720) +HANDLE_BAT(, 13721) +HANDLE_BAT(, 13722) +HANDLE_BAT(, 13723) +HANDLE_BAT(, 13724) +HANDLE_BAT(, 13725) +HANDLE_BAT(, 13726) +HANDLE_BAT(, 13727) +HANDLE_BAT(, 13728) +HANDLE_BAT(, 13729) +HANDLE_BAT(, 13730) +HANDLE_BAT(, 13731) +HANDLE_BAT(, 13732) +HANDLE_BAT(, 13733) +HANDLE_BAT(, 13734) +HANDLE_BAT(, 13735) +HANDLE_BAT(, 13736) +HANDLE_BAT(, 13737) +HANDLE_BAT(, 13738) +HANDLE_BAT(, 13739) +HANDLE_BAT(, 13740) +HANDLE_BAT(, 13741) +HANDLE_BAT(, 13742) +HANDLE_BAT(, 13743) +HANDLE_BAT(, 13744) +HANDLE_BAT(, 13745) +HANDLE_BAT(, 13746) +HANDLE_BAT(, 13747) +HANDLE_BAT(, 13748) +HANDLE_BAT(, 13749) +HANDLE_BAT(, 13750) +HANDLE_BAT(, 13751) +HANDLE_BAT(, 13752) +HANDLE_BAT(, 13753) +HANDLE_BAT(, 13754) +HANDLE_BAT(, 13755) +HANDLE_BAT(, 13756) +HANDLE_BAT(, 13757) +HANDLE_BAT(, 13758) +HANDLE_BAT(, 13759) +HANDLE_BAT(, 13760) +HANDLE_BAT(, 13761) +HANDLE_BAT(, 13762) +HANDLE_BAT(, 13763) +HANDLE_BAT(, 13764) +HANDLE_BAT(, 13765) +HANDLE_BAT(, 13766) +HANDLE_BAT(, 13767) +HANDLE_BAT(, 13768) +HANDLE_BAT(, 13769) +HANDLE_BAT(, 13770) +HANDLE_BAT(, 13771) +HANDLE_BAT(, 13772) +HANDLE_BAT(, 13773) +HANDLE_BAT(, 13774) +HANDLE_BAT(, 13775) +HANDLE_BAT(, 13776) +HANDLE_BAT(, 13777) +HANDLE_BAT(, 13778) +HANDLE_BAT(, 13779) +HANDLE_BAT(, 13780) +HANDLE_BAT(, 13781) +HANDLE_BAT(, 13782) +HANDLE_BAT(, 13783) +HANDLE_BAT(, 13784) +HANDLE_BAT(, 13785) +HANDLE_BAT(, 13786) +HANDLE_BAT(, 13787) +HANDLE_BAT(, 13788) +HANDLE_BAT(, 13789) +HANDLE_BAT(, 13790) +HANDLE_BAT(, 13791) +HANDLE_BAT(, 13792) +HANDLE_BAT(, 13793) +HANDLE_BAT(, 13794) +HANDLE_BAT(, 13795) +HANDLE_BAT(, 13796) +HANDLE_BAT(, 13797) +HANDLE_BAT(, 13798) +HANDLE_BAT(, 13799) +HANDLE_BAT(, 13800) +HANDLE_BAT(, 13801) +HANDLE_BAT(, 13802) +HANDLE_BAT(, 13803) +HANDLE_BAT(, 13804) +HANDLE_BAT(, 13805) +HANDLE_BAT(, 13806) +HANDLE_BAT(, 13807) +HANDLE_BAT(, 13808) +HANDLE_BAT(, 13809) +HANDLE_BAT(, 13810) +HANDLE_BAT(, 13811) +HANDLE_BAT(, 13812) +HANDLE_BAT(, 13813) +HANDLE_BAT(, 13814) +HANDLE_BAT(, 13815) +HANDLE_BAT(, 13816) +HANDLE_BAT(, 13817) +HANDLE_BAT(, 13818) +HANDLE_BAT(, 13819) +HANDLE_BAT(, 13820) +HANDLE_BAT(, 13821) +HANDLE_BAT(, 13822) +HANDLE_BAT(, 13823) +HANDLE_BAT(, 13824) +HANDLE_BAT(, 13825) +HANDLE_BAT(, 13826) +HANDLE_BAT(, 13827) +HANDLE_BAT(, 13828) +HANDLE_BAT(, 13829) +HANDLE_BAT(, 13830) +HANDLE_BAT(, 13831) +HANDLE_BAT(, 13832) +HANDLE_BAT(, 13833) +HANDLE_BAT(, 13834) +HANDLE_BAT(, 13835) +HANDLE_BAT(, 13836) +HANDLE_BAT(, 13837) +HANDLE_BAT(, 13838) +HANDLE_BAT(, 13839) +HANDLE_BAT(, 13840) +HANDLE_BAT(, 13841) +HANDLE_BAT(, 13842) +HANDLE_BAT(, 13843) +HANDLE_BAT(, 13844) +HANDLE_BAT(, 13845) +HANDLE_BAT(, 13846) +HANDLE_BAT(, 13847) +HANDLE_BAT(, 13848) +HANDLE_BAT(, 13849) +HANDLE_BAT(, 13850) +HANDLE_BAT(, 13851) +HANDLE_BAT(, 13852) +HANDLE_BAT(, 13853) +HANDLE_BAT(, 13854) +HANDLE_BAT(, 13855) +HANDLE_BAT(, 13856) +HANDLE_BAT(, 13857) +HANDLE_BAT(, 13858) +HANDLE_BAT(, 13859) +HANDLE_BAT(, 13860) +HANDLE_BAT(, 13861) +HANDLE_BAT(, 13862) +HANDLE_BAT(, 13863) +HANDLE_BAT(, 13864) +HANDLE_BAT(, 13865) +HANDLE_BAT(, 13866) +HANDLE_BAT(, 13867) +HANDLE_BAT(, 13868) +HANDLE_BAT(, 13869) +HANDLE_BAT(, 13870) +HANDLE_BAT(, 13871) +HANDLE_BAT(, 13872) +HANDLE_BAT(, 13873) +HANDLE_BAT(, 13874) +HANDLE_BAT(, 13875) +HANDLE_BAT(, 13876) +HANDLE_BAT(, 13877) +HANDLE_BAT(, 13878) +HANDLE_BAT(, 13879) +HANDLE_BAT(, 13880) +HANDLE_BAT(, 13881) +HANDLE_BAT(, 13882) +HANDLE_BAT(, 13883) +HANDLE_BAT(, 13884) +HANDLE_BAT(, 13885) +HANDLE_BAT(, 13886) +HANDLE_BAT(, 13887) +HANDLE_BAT(, 13888) +HANDLE_BAT(, 13889) +HANDLE_BAT(, 13890) +HANDLE_BAT(, 13891) +HANDLE_BAT(, 13892) +HANDLE_BAT(, 13893) +HANDLE_BAT(, 13894) +HANDLE_BAT(, 13895) +HANDLE_BAT(, 13896) +HANDLE_BAT(, 13897) +HANDLE_BAT(, 13898) +HANDLE_BAT(, 13899) +HANDLE_BAT(, 13900) +HANDLE_BAT(, 13901) +HANDLE_BAT(, 13902) +HANDLE_BAT(, 13903) +HANDLE_BAT(, 13904) +HANDLE_BAT(, 13905) +HANDLE_BAT(, 13906) +HANDLE_BAT(, 13907) +HANDLE_BAT(, 13908) +HANDLE_BAT(, 13909) +HANDLE_BAT(, 13910) +HANDLE_BAT(, 13911) +HANDLE_BAT(, 13912) +HANDLE_BAT(, 13913) +HANDLE_BAT(, 13914) +HANDLE_BAT(, 13915) +HANDLE_BAT(, 13916) +HANDLE_BAT(, 13917) +HANDLE_BAT(, 13918) +HANDLE_BAT(, 13919) +HANDLE_BAT(, 13920) +HANDLE_BAT(, 13921) +HANDLE_BAT(, 13922) +HANDLE_BAT(, 13923) +HANDLE_BAT(, 13924) +HANDLE_BAT(, 13925) +HANDLE_BAT(, 13926) +HANDLE_BAT(, 13927) +HANDLE_BAT(, 13928) +HANDLE_BAT(, 13929) +HANDLE_BAT(, 13930) +HANDLE_BAT(, 13931) +HANDLE_BAT(, 13932) +HANDLE_BAT(, 13933) +HANDLE_BAT(, 13934) +HANDLE_BAT(, 13935) +HANDLE_BAT(, 13936) +HANDLE_BAT(, 13937) +HANDLE_BAT(, 13938) +HANDLE_BAT(, 13939) +HANDLE_BAT(, 13940) +HANDLE_BAT(, 13941) +HANDLE_BAT(, 13942) +HANDLE_BAT(, 13943) +HANDLE_BAT(, 13944) +HANDLE_BAT(, 13945) +HANDLE_BAT(, 13946) +HANDLE_BAT(, 13947) +HANDLE_BAT(, 13948) +HANDLE_BAT(, 13949) +HANDLE_BAT(, 13950) +HANDLE_BAT(, 13951) +HANDLE_BAT(, 13952) +HANDLE_BAT(, 13953) +HANDLE_BAT(, 13954) +HANDLE_BAT(, 13955) +HANDLE_BAT(, 13956) +HANDLE_BAT(, 13957) +HANDLE_BAT(, 13958) +HANDLE_BAT(, 13959) +HANDLE_BAT(, 13960) +HANDLE_BAT(, 13961) +HANDLE_BAT(, 13962) +HANDLE_BAT(, 13963) +HANDLE_BAT(, 13964) +HANDLE_BAT(, 13965) +HANDLE_BAT(, 13966) +HANDLE_BAT(, 13967) +HANDLE_BAT(, 13968) +HANDLE_BAT(, 13969) +HANDLE_BAT(, 13970) +HANDLE_BAT(, 13971) +HANDLE_BAT(, 13972) +HANDLE_BAT(, 13973) +HANDLE_BAT(, 13974) +HANDLE_BAT(, 13975) +HANDLE_BAT(, 13976) +HANDLE_BAT(, 13977) +HANDLE_BAT(, 13978) +HANDLE_BAT(, 13979) +HANDLE_BAT(, 13980) +HANDLE_BAT(, 13981) +HANDLE_BAT(, 13982) +HANDLE_BAT(, 13983) +HANDLE_BAT(, 13984) +HANDLE_BAT(, 13985) +HANDLE_BAT(, 13986) +HANDLE_BAT(, 13987) +HANDLE_BAT(, 13988) +HANDLE_BAT(, 13989) +HANDLE_BAT(, 13990) +HANDLE_BAT(, 13991) +HANDLE_BAT(, 13992) +HANDLE_BAT(, 13993) +HANDLE_BAT(, 13994) +HANDLE_BAT(, 13995) +HANDLE_BAT(, 13996) +HANDLE_BAT(, 13997) +HANDLE_BAT(, 13998) +HANDLE_BAT(, 13999) +HANDLE_BAT(, 14000) +HANDLE_BAT(, 14001) +HANDLE_BAT(, 14002) +HANDLE_BAT(, 14003) +HANDLE_BAT(, 14004) +HANDLE_BAT(, 14005) +HANDLE_BAT(, 14006) +HANDLE_BAT(, 14007) +HANDLE_BAT(, 14008) +HANDLE_BAT(, 14009) +HANDLE_BAT(, 14010) +HANDLE_BAT(, 14011) +HANDLE_BAT(, 14012) +HANDLE_BAT(, 14013) +HANDLE_BAT(, 14014) +HANDLE_BAT(, 14015) +HANDLE_BAT(, 14016) +HANDLE_BAT(, 14017) +HANDLE_BAT(, 14018) +HANDLE_BAT(, 14019) +HANDLE_BAT(, 14020) +HANDLE_BAT(, 14021) +HANDLE_BAT(, 14022) +HANDLE_BAT(, 14023) +HANDLE_BAT(, 14024) +HANDLE_BAT(, 14025) +HANDLE_BAT(, 14026) +HANDLE_BAT(, 14027) +HANDLE_BAT(, 14028) +HANDLE_BAT(, 14029) +HANDLE_BAT(, 14030) +HANDLE_BAT(, 14031) +HANDLE_BAT(, 14032) +HANDLE_BAT(, 14033) +HANDLE_BAT(, 14034) +HANDLE_BAT(, 14035) +HANDLE_BAT(, 14036) +HANDLE_BAT(, 14037) +HANDLE_BAT(, 14038) +HANDLE_BAT(, 14039) +HANDLE_BAT(, 14040) +HANDLE_BAT(, 14041) +HANDLE_BAT(, 14042) +HANDLE_BAT(, 14043) +HANDLE_BAT(, 14044) +HANDLE_BAT(, 14045) +HANDLE_BAT(, 14046) +HANDLE_BAT(, 14047) +HANDLE_BAT(, 14048) +HANDLE_BAT(, 14049) +HANDLE_BAT(, 14050) +HANDLE_BAT(, 14051) +HANDLE_BAT(, 14052) +HANDLE_BAT(, 14053) +HANDLE_BAT(, 14054) +HANDLE_BAT(, 14055) +HANDLE_BAT(, 14056) +HANDLE_BAT(, 14057) +HANDLE_BAT(, 14058) +HANDLE_BAT(, 14059) +HANDLE_BAT(, 14060) +HANDLE_BAT(, 14061) +HANDLE_BAT(, 14062) +HANDLE_BAT(, 14063) +HANDLE_BAT(, 14064) +HANDLE_BAT(, 14065) +HANDLE_BAT(, 14066) +HANDLE_BAT(, 14067) +HANDLE_BAT(, 14068) +HANDLE_BAT(, 14069) +HANDLE_BAT(, 14070) +HANDLE_BAT(, 14071) +HANDLE_BAT(, 14072) +HANDLE_BAT(, 14073) +HANDLE_BAT(, 14074) +HANDLE_BAT(, 14075) +HANDLE_BAT(, 14076) +HANDLE_BAT(, 14077) +HANDLE_BAT(, 14078) +HANDLE_BAT(, 14079) +HANDLE_BAT(, 14080) +HANDLE_BAT(, 14081) +HANDLE_BAT(, 14082) +HANDLE_BAT(, 14083) +HANDLE_BAT(, 14084) +HANDLE_BAT(, 14085) +HANDLE_BAT(, 14086) +HANDLE_BAT(, 14087) +HANDLE_BAT(, 14088) +HANDLE_BAT(, 14089) +HANDLE_BAT(, 14090) +HANDLE_BAT(, 14091) +HANDLE_BAT(, 14092) +HANDLE_BAT(, 14093) +HANDLE_BAT(, 14094) +HANDLE_BAT(, 14095) +HANDLE_BAT(, 14096) +HANDLE_BAT(, 14097) +HANDLE_BAT(, 14098) +HANDLE_BAT(, 14099) +HANDLE_BAT(, 14100) +HANDLE_BAT(, 14101) +HANDLE_BAT(, 14102) +HANDLE_BAT(, 14103) +HANDLE_BAT(, 14104) +HANDLE_BAT(, 14105) +HANDLE_BAT(, 14106) +HANDLE_BAT(, 14107) +HANDLE_BAT(, 14108) +HANDLE_BAT(, 14109) +HANDLE_BAT(, 14110) +HANDLE_BAT(, 14111) +HANDLE_BAT(, 14112) +HANDLE_BAT(, 14113) +HANDLE_BAT(, 14114) +HANDLE_BAT(, 14115) +HANDLE_BAT(, 14116) +HANDLE_BAT(, 14117) +HANDLE_BAT(, 14118) +HANDLE_BAT(, 14119) +HANDLE_BAT(, 14120) +HANDLE_BAT(, 14121) +HANDLE_BAT(, 14122) +HANDLE_BAT(, 14123) +HANDLE_BAT(, 14124) +HANDLE_BAT(, 14125) +HANDLE_BAT(, 14126) +HANDLE_BAT(, 14127) +HANDLE_BAT(, 14128) +HANDLE_BAT(, 14129) +HANDLE_BAT(, 14130) +HANDLE_BAT(, 14131) +HANDLE_BAT(, 14132) +HANDLE_BAT(, 14133) +HANDLE_BAT(, 14134) +HANDLE_BAT(, 14135) +HANDLE_BAT(, 14136) +HANDLE_BAT(, 14137) +HANDLE_BAT(, 14138) +HANDLE_BAT(, 14139) +HANDLE_BAT(, 14140) +HANDLE_BAT(, 14141) +HANDLE_BAT(, 14142) +HANDLE_BAT(, 14143) +HANDLE_BAT(, 14144) +HANDLE_BAT(, 14145) +HANDLE_BAT(, 14146) +HANDLE_BAT(, 14147) +HANDLE_BAT(, 14148) +HANDLE_BAT(, 14149) +HANDLE_BAT(, 14150) +HANDLE_BAT(, 14151) +HANDLE_BAT(, 14152) +HANDLE_BAT(, 14153) +HANDLE_BAT(, 14154) +HANDLE_BAT(, 14155) +HANDLE_BAT(, 14156) +HANDLE_BAT(, 14157) +HANDLE_BAT(, 14158) +HANDLE_BAT(, 14159) +HANDLE_BAT(, 14160) +HANDLE_BAT(, 14161) +HANDLE_BAT(, 14162) +HANDLE_BAT(, 14163) +HANDLE_BAT(, 14164) +HANDLE_BAT(, 14165) +HANDLE_BAT(, 14166) +HANDLE_BAT(, 14167) +HANDLE_BAT(, 14168) +HANDLE_BAT(, 14169) +HANDLE_BAT(, 14170) +HANDLE_BAT(, 14171) +HANDLE_BAT(, 14172) +HANDLE_BAT(, 14173) +HANDLE_BAT(, 14174) +HANDLE_BAT(, 14175) +HANDLE_BAT(, 14176) +HANDLE_BAT(, 14177) +HANDLE_BAT(, 14178) +HANDLE_BAT(, 14179) +HANDLE_BAT(, 14180) +HANDLE_BAT(, 14181) +HANDLE_BAT(, 14182) +HANDLE_BAT(, 14183) +HANDLE_BAT(, 14184) +HANDLE_BAT(, 14185) +HANDLE_BAT(, 14186) +HANDLE_BAT(, 14187) +HANDLE_BAT(, 14188) +HANDLE_BAT(, 14189) +HANDLE_BAT(, 14190) +HANDLE_BAT(, 14191) +HANDLE_BAT(, 14192) +HANDLE_BAT(, 14193) +HANDLE_BAT(, 14194) +HANDLE_BAT(, 14195) +HANDLE_BAT(, 14196) +HANDLE_BAT(, 14197) +HANDLE_BAT(, 14198) +HANDLE_BAT(, 14199) +HANDLE_BAT(, 14200) +HANDLE_BAT(, 14201) +HANDLE_BAT(, 14202) +HANDLE_BAT(, 14203) +HANDLE_BAT(, 14204) +HANDLE_BAT(, 14205) +HANDLE_BAT(, 14206) +HANDLE_BAT(, 14207) +HANDLE_BAT(, 14208) +HANDLE_BAT(, 14209) +HANDLE_BAT(, 14210) +HANDLE_BAT(, 14211) +HANDLE_BAT(, 14212) +HANDLE_BAT(, 14213) +HANDLE_BAT(, 14214) +HANDLE_BAT(, 14215) +HANDLE_BAT(, 14216) +HANDLE_BAT(, 14217) +HANDLE_BAT(, 14218) +HANDLE_BAT(, 14219) +HANDLE_BAT(, 14220) +HANDLE_BAT(, 14221) +HANDLE_BAT(, 14222) +HANDLE_BAT(, 14223) +HANDLE_BAT(, 14224) +HANDLE_BAT(, 14225) +HANDLE_BAT(, 14226) +HANDLE_BAT(, 14227) +HANDLE_BAT(, 14228) +HANDLE_BAT(, 14229) +HANDLE_BAT(, 14230) +HANDLE_BAT(, 14231) +HANDLE_BAT(, 14232) +HANDLE_BAT(, 14233) +HANDLE_BAT(, 14234) +HANDLE_BAT(, 14235) +HANDLE_BAT(, 14236) +HANDLE_BAT(, 14237) +HANDLE_BAT(, 14238) +HANDLE_BAT(, 14239) +HANDLE_BAT(, 14240) +HANDLE_BAT(, 14241) +HANDLE_BAT(, 14242) +HANDLE_BAT(, 14243) +HANDLE_BAT(, 14244) +HANDLE_BAT(, 14245) +HANDLE_BAT(, 14246) +HANDLE_BAT(, 14247) +HANDLE_BAT(, 14248) +HANDLE_BAT(, 14249) +HANDLE_BAT(, 14250) +HANDLE_BAT(, 14251) +HANDLE_BAT(, 14252) +HANDLE_BAT(, 14253) +HANDLE_BAT(, 14254) +HANDLE_BAT(, 14255) +HANDLE_BAT(, 14256) +HANDLE_BAT(, 14257) +HANDLE_BAT(, 14258) +HANDLE_BAT(, 14259) +HANDLE_BAT(, 14260) +HANDLE_BAT(, 14261) +HANDLE_BAT(, 14262) +HANDLE_BAT(, 14263) +HANDLE_BAT(, 14264) +HANDLE_BAT(, 14265) +HANDLE_BAT(, 14266) +HANDLE_BAT(, 14267) +HANDLE_BAT(, 14268) +HANDLE_BAT(, 14269) +HANDLE_BAT(, 14270) +HANDLE_BAT(, 14271) +HANDLE_BAT(, 14272) +HANDLE_BAT(, 14273) +HANDLE_BAT(, 14274) +HANDLE_BAT(, 14275) +HANDLE_BAT(, 14276) +HANDLE_BAT(, 14277) +HANDLE_BAT(, 14278) +HANDLE_BAT(, 14279) +HANDLE_BAT(, 14280) +HANDLE_BAT(, 14281) +HANDLE_BAT(, 14282) +HANDLE_BAT(, 14283) +HANDLE_BAT(, 14284) +HANDLE_BAT(, 14285) +HANDLE_BAT(, 14286) +HANDLE_BAT(, 14287) +HANDLE_BAT(, 14288) +HANDLE_BAT(, 14289) +HANDLE_BAT(, 14290) +HANDLE_BAT(, 14291) +HANDLE_BAT(, 14292) +HANDLE_BAT(, 14293) +HANDLE_BAT(, 14294) +HANDLE_BAT(, 14295) +HANDLE_BAT(, 14296) +HANDLE_BAT(, 14297) +HANDLE_BAT(, 14298) +HANDLE_BAT(, 14299) +HANDLE_BAT(, 14300) +HANDLE_BAT(, 14301) +HANDLE_BAT(, 14302) +HANDLE_BAT(, 14303) +HANDLE_BAT(, 14304) +HANDLE_BAT(, 14305) +HANDLE_BAT(, 14306) +HANDLE_BAT(, 14307) +HANDLE_BAT(, 14308) +HANDLE_BAT(, 14309) +HANDLE_BAT(, 14310) +HANDLE_BAT(, 14311) +HANDLE_BAT(, 14312) +HANDLE_BAT(, 14313) +HANDLE_BAT(, 14314) +HANDLE_BAT(, 14315) +HANDLE_BAT(, 14316) +HANDLE_BAT(, 14317) +HANDLE_BAT(, 14318) +HANDLE_BAT(, 14319) +HANDLE_BAT(, 14320) +HANDLE_BAT(, 14321) +HANDLE_BAT(, 14322) +HANDLE_BAT(, 14323) +HANDLE_BAT(, 14324) +HANDLE_BAT(, 14325) +HANDLE_BAT(, 14326) +HANDLE_BAT(, 14327) +HANDLE_BAT(, 14328) +HANDLE_BAT(, 14329) +HANDLE_BAT(, 14330) +HANDLE_BAT(, 14331) +HANDLE_BAT(, 14332) +HANDLE_BAT(, 14333) +HANDLE_BAT(, 14334) +HANDLE_BAT(, 14335) +HANDLE_BAT(, 14336) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 13313) +HANDLE_BAT(APINT_TYPE_PREFIX, 13314) +HANDLE_BAT(APINT_TYPE_PREFIX, 13315) +HANDLE_BAT(APINT_TYPE_PREFIX, 13316) +HANDLE_BAT(APINT_TYPE_PREFIX, 13317) +HANDLE_BAT(APINT_TYPE_PREFIX, 13318) +HANDLE_BAT(APINT_TYPE_PREFIX, 13319) +HANDLE_BAT(APINT_TYPE_PREFIX, 13320) +HANDLE_BAT(APINT_TYPE_PREFIX, 13321) +HANDLE_BAT(APINT_TYPE_PREFIX, 13322) +HANDLE_BAT(APINT_TYPE_PREFIX, 13323) +HANDLE_BAT(APINT_TYPE_PREFIX, 13324) +HANDLE_BAT(APINT_TYPE_PREFIX, 13325) +HANDLE_BAT(APINT_TYPE_PREFIX, 13326) +HANDLE_BAT(APINT_TYPE_PREFIX, 13327) +HANDLE_BAT(APINT_TYPE_PREFIX, 13328) +HANDLE_BAT(APINT_TYPE_PREFIX, 13329) +HANDLE_BAT(APINT_TYPE_PREFIX, 13330) +HANDLE_BAT(APINT_TYPE_PREFIX, 13331) +HANDLE_BAT(APINT_TYPE_PREFIX, 13332) +HANDLE_BAT(APINT_TYPE_PREFIX, 13333) +HANDLE_BAT(APINT_TYPE_PREFIX, 13334) +HANDLE_BAT(APINT_TYPE_PREFIX, 13335) +HANDLE_BAT(APINT_TYPE_PREFIX, 13336) +HANDLE_BAT(APINT_TYPE_PREFIX, 13337) +HANDLE_BAT(APINT_TYPE_PREFIX, 13338) +HANDLE_BAT(APINT_TYPE_PREFIX, 13339) +HANDLE_BAT(APINT_TYPE_PREFIX, 13340) +HANDLE_BAT(APINT_TYPE_PREFIX, 13341) +HANDLE_BAT(APINT_TYPE_PREFIX, 13342) +HANDLE_BAT(APINT_TYPE_PREFIX, 13343) +HANDLE_BAT(APINT_TYPE_PREFIX, 13344) +HANDLE_BAT(APINT_TYPE_PREFIX, 13345) +HANDLE_BAT(APINT_TYPE_PREFIX, 13346) +HANDLE_BAT(APINT_TYPE_PREFIX, 13347) +HANDLE_BAT(APINT_TYPE_PREFIX, 13348) +HANDLE_BAT(APINT_TYPE_PREFIX, 13349) +HANDLE_BAT(APINT_TYPE_PREFIX, 13350) +HANDLE_BAT(APINT_TYPE_PREFIX, 13351) +HANDLE_BAT(APINT_TYPE_PREFIX, 13352) +HANDLE_BAT(APINT_TYPE_PREFIX, 13353) +HANDLE_BAT(APINT_TYPE_PREFIX, 13354) +HANDLE_BAT(APINT_TYPE_PREFIX, 13355) +HANDLE_BAT(APINT_TYPE_PREFIX, 13356) +HANDLE_BAT(APINT_TYPE_PREFIX, 13357) +HANDLE_BAT(APINT_TYPE_PREFIX, 13358) +HANDLE_BAT(APINT_TYPE_PREFIX, 13359) +HANDLE_BAT(APINT_TYPE_PREFIX, 13360) +HANDLE_BAT(APINT_TYPE_PREFIX, 13361) +HANDLE_BAT(APINT_TYPE_PREFIX, 13362) +HANDLE_BAT(APINT_TYPE_PREFIX, 13363) +HANDLE_BAT(APINT_TYPE_PREFIX, 13364) +HANDLE_BAT(APINT_TYPE_PREFIX, 13365) +HANDLE_BAT(APINT_TYPE_PREFIX, 13366) +HANDLE_BAT(APINT_TYPE_PREFIX, 13367) +HANDLE_BAT(APINT_TYPE_PREFIX, 13368) +HANDLE_BAT(APINT_TYPE_PREFIX, 13369) +HANDLE_BAT(APINT_TYPE_PREFIX, 13370) +HANDLE_BAT(APINT_TYPE_PREFIX, 13371) +HANDLE_BAT(APINT_TYPE_PREFIX, 13372) +HANDLE_BAT(APINT_TYPE_PREFIX, 13373) +HANDLE_BAT(APINT_TYPE_PREFIX, 13374) +HANDLE_BAT(APINT_TYPE_PREFIX, 13375) +HANDLE_BAT(APINT_TYPE_PREFIX, 13376) +HANDLE_BAT(APINT_TYPE_PREFIX, 13377) +HANDLE_BAT(APINT_TYPE_PREFIX, 13378) +HANDLE_BAT(APINT_TYPE_PREFIX, 13379) +HANDLE_BAT(APINT_TYPE_PREFIX, 13380) +HANDLE_BAT(APINT_TYPE_PREFIX, 13381) +HANDLE_BAT(APINT_TYPE_PREFIX, 13382) +HANDLE_BAT(APINT_TYPE_PREFIX, 13383) +HANDLE_BAT(APINT_TYPE_PREFIX, 13384) +HANDLE_BAT(APINT_TYPE_PREFIX, 13385) +HANDLE_BAT(APINT_TYPE_PREFIX, 13386) +HANDLE_BAT(APINT_TYPE_PREFIX, 13387) +HANDLE_BAT(APINT_TYPE_PREFIX, 13388) +HANDLE_BAT(APINT_TYPE_PREFIX, 13389) +HANDLE_BAT(APINT_TYPE_PREFIX, 13390) +HANDLE_BAT(APINT_TYPE_PREFIX, 13391) +HANDLE_BAT(APINT_TYPE_PREFIX, 13392) +HANDLE_BAT(APINT_TYPE_PREFIX, 13393) +HANDLE_BAT(APINT_TYPE_PREFIX, 13394) +HANDLE_BAT(APINT_TYPE_PREFIX, 13395) +HANDLE_BAT(APINT_TYPE_PREFIX, 13396) +HANDLE_BAT(APINT_TYPE_PREFIX, 13397) +HANDLE_BAT(APINT_TYPE_PREFIX, 13398) +HANDLE_BAT(APINT_TYPE_PREFIX, 13399) +HANDLE_BAT(APINT_TYPE_PREFIX, 13400) +HANDLE_BAT(APINT_TYPE_PREFIX, 13401) +HANDLE_BAT(APINT_TYPE_PREFIX, 13402) +HANDLE_BAT(APINT_TYPE_PREFIX, 13403) +HANDLE_BAT(APINT_TYPE_PREFIX, 13404) +HANDLE_BAT(APINT_TYPE_PREFIX, 13405) +HANDLE_BAT(APINT_TYPE_PREFIX, 13406) +HANDLE_BAT(APINT_TYPE_PREFIX, 13407) +HANDLE_BAT(APINT_TYPE_PREFIX, 13408) +HANDLE_BAT(APINT_TYPE_PREFIX, 13409) +HANDLE_BAT(APINT_TYPE_PREFIX, 13410) +HANDLE_BAT(APINT_TYPE_PREFIX, 13411) +HANDLE_BAT(APINT_TYPE_PREFIX, 13412) +HANDLE_BAT(APINT_TYPE_PREFIX, 13413) +HANDLE_BAT(APINT_TYPE_PREFIX, 13414) +HANDLE_BAT(APINT_TYPE_PREFIX, 13415) +HANDLE_BAT(APINT_TYPE_PREFIX, 13416) +HANDLE_BAT(APINT_TYPE_PREFIX, 13417) +HANDLE_BAT(APINT_TYPE_PREFIX, 13418) +HANDLE_BAT(APINT_TYPE_PREFIX, 13419) +HANDLE_BAT(APINT_TYPE_PREFIX, 13420) +HANDLE_BAT(APINT_TYPE_PREFIX, 13421) +HANDLE_BAT(APINT_TYPE_PREFIX, 13422) +HANDLE_BAT(APINT_TYPE_PREFIX, 13423) +HANDLE_BAT(APINT_TYPE_PREFIX, 13424) +HANDLE_BAT(APINT_TYPE_PREFIX, 13425) +HANDLE_BAT(APINT_TYPE_PREFIX, 13426) +HANDLE_BAT(APINT_TYPE_PREFIX, 13427) +HANDLE_BAT(APINT_TYPE_PREFIX, 13428) +HANDLE_BAT(APINT_TYPE_PREFIX, 13429) +HANDLE_BAT(APINT_TYPE_PREFIX, 13430) +HANDLE_BAT(APINT_TYPE_PREFIX, 13431) +HANDLE_BAT(APINT_TYPE_PREFIX, 13432) +HANDLE_BAT(APINT_TYPE_PREFIX, 13433) +HANDLE_BAT(APINT_TYPE_PREFIX, 13434) +HANDLE_BAT(APINT_TYPE_PREFIX, 13435) +HANDLE_BAT(APINT_TYPE_PREFIX, 13436) +HANDLE_BAT(APINT_TYPE_PREFIX, 13437) +HANDLE_BAT(APINT_TYPE_PREFIX, 13438) +HANDLE_BAT(APINT_TYPE_PREFIX, 13439) +HANDLE_BAT(APINT_TYPE_PREFIX, 13440) +HANDLE_BAT(APINT_TYPE_PREFIX, 13441) +HANDLE_BAT(APINT_TYPE_PREFIX, 13442) +HANDLE_BAT(APINT_TYPE_PREFIX, 13443) +HANDLE_BAT(APINT_TYPE_PREFIX, 13444) +HANDLE_BAT(APINT_TYPE_PREFIX, 13445) +HANDLE_BAT(APINT_TYPE_PREFIX, 13446) +HANDLE_BAT(APINT_TYPE_PREFIX, 13447) +HANDLE_BAT(APINT_TYPE_PREFIX, 13448) +HANDLE_BAT(APINT_TYPE_PREFIX, 13449) +HANDLE_BAT(APINT_TYPE_PREFIX, 13450) +HANDLE_BAT(APINT_TYPE_PREFIX, 13451) +HANDLE_BAT(APINT_TYPE_PREFIX, 13452) +HANDLE_BAT(APINT_TYPE_PREFIX, 13453) +HANDLE_BAT(APINT_TYPE_PREFIX, 13454) +HANDLE_BAT(APINT_TYPE_PREFIX, 13455) +HANDLE_BAT(APINT_TYPE_PREFIX, 13456) +HANDLE_BAT(APINT_TYPE_PREFIX, 13457) +HANDLE_BAT(APINT_TYPE_PREFIX, 13458) +HANDLE_BAT(APINT_TYPE_PREFIX, 13459) +HANDLE_BAT(APINT_TYPE_PREFIX, 13460) +HANDLE_BAT(APINT_TYPE_PREFIX, 13461) +HANDLE_BAT(APINT_TYPE_PREFIX, 13462) +HANDLE_BAT(APINT_TYPE_PREFIX, 13463) +HANDLE_BAT(APINT_TYPE_PREFIX, 13464) +HANDLE_BAT(APINT_TYPE_PREFIX, 13465) +HANDLE_BAT(APINT_TYPE_PREFIX, 13466) +HANDLE_BAT(APINT_TYPE_PREFIX, 13467) +HANDLE_BAT(APINT_TYPE_PREFIX, 13468) +HANDLE_BAT(APINT_TYPE_PREFIX, 13469) +HANDLE_BAT(APINT_TYPE_PREFIX, 13470) +HANDLE_BAT(APINT_TYPE_PREFIX, 13471) +HANDLE_BAT(APINT_TYPE_PREFIX, 13472) +HANDLE_BAT(APINT_TYPE_PREFIX, 13473) +HANDLE_BAT(APINT_TYPE_PREFIX, 13474) +HANDLE_BAT(APINT_TYPE_PREFIX, 13475) +HANDLE_BAT(APINT_TYPE_PREFIX, 13476) +HANDLE_BAT(APINT_TYPE_PREFIX, 13477) +HANDLE_BAT(APINT_TYPE_PREFIX, 13478) +HANDLE_BAT(APINT_TYPE_PREFIX, 13479) +HANDLE_BAT(APINT_TYPE_PREFIX, 13480) +HANDLE_BAT(APINT_TYPE_PREFIX, 13481) +HANDLE_BAT(APINT_TYPE_PREFIX, 13482) +HANDLE_BAT(APINT_TYPE_PREFIX, 13483) +HANDLE_BAT(APINT_TYPE_PREFIX, 13484) +HANDLE_BAT(APINT_TYPE_PREFIX, 13485) +HANDLE_BAT(APINT_TYPE_PREFIX, 13486) +HANDLE_BAT(APINT_TYPE_PREFIX, 13487) +HANDLE_BAT(APINT_TYPE_PREFIX, 13488) +HANDLE_BAT(APINT_TYPE_PREFIX, 13489) +HANDLE_BAT(APINT_TYPE_PREFIX, 13490) +HANDLE_BAT(APINT_TYPE_PREFIX, 13491) +HANDLE_BAT(APINT_TYPE_PREFIX, 13492) +HANDLE_BAT(APINT_TYPE_PREFIX, 13493) +HANDLE_BAT(APINT_TYPE_PREFIX, 13494) +HANDLE_BAT(APINT_TYPE_PREFIX, 13495) +HANDLE_BAT(APINT_TYPE_PREFIX, 13496) +HANDLE_BAT(APINT_TYPE_PREFIX, 13497) +HANDLE_BAT(APINT_TYPE_PREFIX, 13498) +HANDLE_BAT(APINT_TYPE_PREFIX, 13499) +HANDLE_BAT(APINT_TYPE_PREFIX, 13500) +HANDLE_BAT(APINT_TYPE_PREFIX, 13501) +HANDLE_BAT(APINT_TYPE_PREFIX, 13502) +HANDLE_BAT(APINT_TYPE_PREFIX, 13503) +HANDLE_BAT(APINT_TYPE_PREFIX, 13504) +HANDLE_BAT(APINT_TYPE_PREFIX, 13505) +HANDLE_BAT(APINT_TYPE_PREFIX, 13506) +HANDLE_BAT(APINT_TYPE_PREFIX, 13507) +HANDLE_BAT(APINT_TYPE_PREFIX, 13508) +HANDLE_BAT(APINT_TYPE_PREFIX, 13509) +HANDLE_BAT(APINT_TYPE_PREFIX, 13510) +HANDLE_BAT(APINT_TYPE_PREFIX, 13511) +HANDLE_BAT(APINT_TYPE_PREFIX, 13512) +HANDLE_BAT(APINT_TYPE_PREFIX, 13513) +HANDLE_BAT(APINT_TYPE_PREFIX, 13514) +HANDLE_BAT(APINT_TYPE_PREFIX, 13515) +HANDLE_BAT(APINT_TYPE_PREFIX, 13516) +HANDLE_BAT(APINT_TYPE_PREFIX, 13517) +HANDLE_BAT(APINT_TYPE_PREFIX, 13518) +HANDLE_BAT(APINT_TYPE_PREFIX, 13519) +HANDLE_BAT(APINT_TYPE_PREFIX, 13520) +HANDLE_BAT(APINT_TYPE_PREFIX, 13521) +HANDLE_BAT(APINT_TYPE_PREFIX, 13522) +HANDLE_BAT(APINT_TYPE_PREFIX, 13523) +HANDLE_BAT(APINT_TYPE_PREFIX, 13524) +HANDLE_BAT(APINT_TYPE_PREFIX, 13525) +HANDLE_BAT(APINT_TYPE_PREFIX, 13526) +HANDLE_BAT(APINT_TYPE_PREFIX, 13527) +HANDLE_BAT(APINT_TYPE_PREFIX, 13528) +HANDLE_BAT(APINT_TYPE_PREFIX, 13529) +HANDLE_BAT(APINT_TYPE_PREFIX, 13530) +HANDLE_BAT(APINT_TYPE_PREFIX, 13531) +HANDLE_BAT(APINT_TYPE_PREFIX, 13532) +HANDLE_BAT(APINT_TYPE_PREFIX, 13533) +HANDLE_BAT(APINT_TYPE_PREFIX, 13534) +HANDLE_BAT(APINT_TYPE_PREFIX, 13535) +HANDLE_BAT(APINT_TYPE_PREFIX, 13536) +HANDLE_BAT(APINT_TYPE_PREFIX, 13537) +HANDLE_BAT(APINT_TYPE_PREFIX, 13538) +HANDLE_BAT(APINT_TYPE_PREFIX, 13539) +HANDLE_BAT(APINT_TYPE_PREFIX, 13540) +HANDLE_BAT(APINT_TYPE_PREFIX, 13541) +HANDLE_BAT(APINT_TYPE_PREFIX, 13542) +HANDLE_BAT(APINT_TYPE_PREFIX, 13543) +HANDLE_BAT(APINT_TYPE_PREFIX, 13544) +HANDLE_BAT(APINT_TYPE_PREFIX, 13545) +HANDLE_BAT(APINT_TYPE_PREFIX, 13546) +HANDLE_BAT(APINT_TYPE_PREFIX, 13547) +HANDLE_BAT(APINT_TYPE_PREFIX, 13548) +HANDLE_BAT(APINT_TYPE_PREFIX, 13549) +HANDLE_BAT(APINT_TYPE_PREFIX, 13550) +HANDLE_BAT(APINT_TYPE_PREFIX, 13551) +HANDLE_BAT(APINT_TYPE_PREFIX, 13552) +HANDLE_BAT(APINT_TYPE_PREFIX, 13553) +HANDLE_BAT(APINT_TYPE_PREFIX, 13554) +HANDLE_BAT(APINT_TYPE_PREFIX, 13555) +HANDLE_BAT(APINT_TYPE_PREFIX, 13556) +HANDLE_BAT(APINT_TYPE_PREFIX, 13557) +HANDLE_BAT(APINT_TYPE_PREFIX, 13558) +HANDLE_BAT(APINT_TYPE_PREFIX, 13559) +HANDLE_BAT(APINT_TYPE_PREFIX, 13560) +HANDLE_BAT(APINT_TYPE_PREFIX, 13561) +HANDLE_BAT(APINT_TYPE_PREFIX, 13562) +HANDLE_BAT(APINT_TYPE_PREFIX, 13563) +HANDLE_BAT(APINT_TYPE_PREFIX, 13564) +HANDLE_BAT(APINT_TYPE_PREFIX, 13565) +HANDLE_BAT(APINT_TYPE_PREFIX, 13566) +HANDLE_BAT(APINT_TYPE_PREFIX, 13567) +HANDLE_BAT(APINT_TYPE_PREFIX, 13568) +HANDLE_BAT(APINT_TYPE_PREFIX, 13569) +HANDLE_BAT(APINT_TYPE_PREFIX, 13570) +HANDLE_BAT(APINT_TYPE_PREFIX, 13571) +HANDLE_BAT(APINT_TYPE_PREFIX, 13572) +HANDLE_BAT(APINT_TYPE_PREFIX, 13573) +HANDLE_BAT(APINT_TYPE_PREFIX, 13574) +HANDLE_BAT(APINT_TYPE_PREFIX, 13575) +HANDLE_BAT(APINT_TYPE_PREFIX, 13576) +HANDLE_BAT(APINT_TYPE_PREFIX, 13577) +HANDLE_BAT(APINT_TYPE_PREFIX, 13578) +HANDLE_BAT(APINT_TYPE_PREFIX, 13579) +HANDLE_BAT(APINT_TYPE_PREFIX, 13580) +HANDLE_BAT(APINT_TYPE_PREFIX, 13581) +HANDLE_BAT(APINT_TYPE_PREFIX, 13582) +HANDLE_BAT(APINT_TYPE_PREFIX, 13583) +HANDLE_BAT(APINT_TYPE_PREFIX, 13584) +HANDLE_BAT(APINT_TYPE_PREFIX, 13585) +HANDLE_BAT(APINT_TYPE_PREFIX, 13586) +HANDLE_BAT(APINT_TYPE_PREFIX, 13587) +HANDLE_BAT(APINT_TYPE_PREFIX, 13588) +HANDLE_BAT(APINT_TYPE_PREFIX, 13589) +HANDLE_BAT(APINT_TYPE_PREFIX, 13590) +HANDLE_BAT(APINT_TYPE_PREFIX, 13591) +HANDLE_BAT(APINT_TYPE_PREFIX, 13592) +HANDLE_BAT(APINT_TYPE_PREFIX, 13593) +HANDLE_BAT(APINT_TYPE_PREFIX, 13594) +HANDLE_BAT(APINT_TYPE_PREFIX, 13595) +HANDLE_BAT(APINT_TYPE_PREFIX, 13596) +HANDLE_BAT(APINT_TYPE_PREFIX, 13597) +HANDLE_BAT(APINT_TYPE_PREFIX, 13598) +HANDLE_BAT(APINT_TYPE_PREFIX, 13599) +HANDLE_BAT(APINT_TYPE_PREFIX, 13600) +HANDLE_BAT(APINT_TYPE_PREFIX, 13601) +HANDLE_BAT(APINT_TYPE_PREFIX, 13602) +HANDLE_BAT(APINT_TYPE_PREFIX, 13603) +HANDLE_BAT(APINT_TYPE_PREFIX, 13604) +HANDLE_BAT(APINT_TYPE_PREFIX, 13605) +HANDLE_BAT(APINT_TYPE_PREFIX, 13606) +HANDLE_BAT(APINT_TYPE_PREFIX, 13607) +HANDLE_BAT(APINT_TYPE_PREFIX, 13608) +HANDLE_BAT(APINT_TYPE_PREFIX, 13609) +HANDLE_BAT(APINT_TYPE_PREFIX, 13610) +HANDLE_BAT(APINT_TYPE_PREFIX, 13611) +HANDLE_BAT(APINT_TYPE_PREFIX, 13612) +HANDLE_BAT(APINT_TYPE_PREFIX, 13613) +HANDLE_BAT(APINT_TYPE_PREFIX, 13614) +HANDLE_BAT(APINT_TYPE_PREFIX, 13615) +HANDLE_BAT(APINT_TYPE_PREFIX, 13616) +HANDLE_BAT(APINT_TYPE_PREFIX, 13617) +HANDLE_BAT(APINT_TYPE_PREFIX, 13618) +HANDLE_BAT(APINT_TYPE_PREFIX, 13619) +HANDLE_BAT(APINT_TYPE_PREFIX, 13620) +HANDLE_BAT(APINT_TYPE_PREFIX, 13621) +HANDLE_BAT(APINT_TYPE_PREFIX, 13622) +HANDLE_BAT(APINT_TYPE_PREFIX, 13623) +HANDLE_BAT(APINT_TYPE_PREFIX, 13624) +HANDLE_BAT(APINT_TYPE_PREFIX, 13625) +HANDLE_BAT(APINT_TYPE_PREFIX, 13626) +HANDLE_BAT(APINT_TYPE_PREFIX, 13627) +HANDLE_BAT(APINT_TYPE_PREFIX, 13628) +HANDLE_BAT(APINT_TYPE_PREFIX, 13629) +HANDLE_BAT(APINT_TYPE_PREFIX, 13630) +HANDLE_BAT(APINT_TYPE_PREFIX, 13631) +HANDLE_BAT(APINT_TYPE_PREFIX, 13632) +HANDLE_BAT(APINT_TYPE_PREFIX, 13633) +HANDLE_BAT(APINT_TYPE_PREFIX, 13634) +HANDLE_BAT(APINT_TYPE_PREFIX, 13635) +HANDLE_BAT(APINT_TYPE_PREFIX, 13636) +HANDLE_BAT(APINT_TYPE_PREFIX, 13637) +HANDLE_BAT(APINT_TYPE_PREFIX, 13638) +HANDLE_BAT(APINT_TYPE_PREFIX, 13639) +HANDLE_BAT(APINT_TYPE_PREFIX, 13640) +HANDLE_BAT(APINT_TYPE_PREFIX, 13641) +HANDLE_BAT(APINT_TYPE_PREFIX, 13642) +HANDLE_BAT(APINT_TYPE_PREFIX, 13643) +HANDLE_BAT(APINT_TYPE_PREFIX, 13644) +HANDLE_BAT(APINT_TYPE_PREFIX, 13645) +HANDLE_BAT(APINT_TYPE_PREFIX, 13646) +HANDLE_BAT(APINT_TYPE_PREFIX, 13647) +HANDLE_BAT(APINT_TYPE_PREFIX, 13648) +HANDLE_BAT(APINT_TYPE_PREFIX, 13649) +HANDLE_BAT(APINT_TYPE_PREFIX, 13650) +HANDLE_BAT(APINT_TYPE_PREFIX, 13651) +HANDLE_BAT(APINT_TYPE_PREFIX, 13652) +HANDLE_BAT(APINT_TYPE_PREFIX, 13653) +HANDLE_BAT(APINT_TYPE_PREFIX, 13654) +HANDLE_BAT(APINT_TYPE_PREFIX, 13655) +HANDLE_BAT(APINT_TYPE_PREFIX, 13656) +HANDLE_BAT(APINT_TYPE_PREFIX, 13657) +HANDLE_BAT(APINT_TYPE_PREFIX, 13658) +HANDLE_BAT(APINT_TYPE_PREFIX, 13659) +HANDLE_BAT(APINT_TYPE_PREFIX, 13660) +HANDLE_BAT(APINT_TYPE_PREFIX, 13661) +HANDLE_BAT(APINT_TYPE_PREFIX, 13662) +HANDLE_BAT(APINT_TYPE_PREFIX, 13663) +HANDLE_BAT(APINT_TYPE_PREFIX, 13664) +HANDLE_BAT(APINT_TYPE_PREFIX, 13665) +HANDLE_BAT(APINT_TYPE_PREFIX, 13666) +HANDLE_BAT(APINT_TYPE_PREFIX, 13667) +HANDLE_BAT(APINT_TYPE_PREFIX, 13668) +HANDLE_BAT(APINT_TYPE_PREFIX, 13669) +HANDLE_BAT(APINT_TYPE_PREFIX, 13670) +HANDLE_BAT(APINT_TYPE_PREFIX, 13671) +HANDLE_BAT(APINT_TYPE_PREFIX, 13672) +HANDLE_BAT(APINT_TYPE_PREFIX, 13673) +HANDLE_BAT(APINT_TYPE_PREFIX, 13674) +HANDLE_BAT(APINT_TYPE_PREFIX, 13675) +HANDLE_BAT(APINT_TYPE_PREFIX, 13676) +HANDLE_BAT(APINT_TYPE_PREFIX, 13677) +HANDLE_BAT(APINT_TYPE_PREFIX, 13678) +HANDLE_BAT(APINT_TYPE_PREFIX, 13679) +HANDLE_BAT(APINT_TYPE_PREFIX, 13680) +HANDLE_BAT(APINT_TYPE_PREFIX, 13681) +HANDLE_BAT(APINT_TYPE_PREFIX, 13682) +HANDLE_BAT(APINT_TYPE_PREFIX, 13683) +HANDLE_BAT(APINT_TYPE_PREFIX, 13684) +HANDLE_BAT(APINT_TYPE_PREFIX, 13685) +HANDLE_BAT(APINT_TYPE_PREFIX, 13686) +HANDLE_BAT(APINT_TYPE_PREFIX, 13687) +HANDLE_BAT(APINT_TYPE_PREFIX, 13688) +HANDLE_BAT(APINT_TYPE_PREFIX, 13689) +HANDLE_BAT(APINT_TYPE_PREFIX, 13690) +HANDLE_BAT(APINT_TYPE_PREFIX, 13691) +HANDLE_BAT(APINT_TYPE_PREFIX, 13692) +HANDLE_BAT(APINT_TYPE_PREFIX, 13693) +HANDLE_BAT(APINT_TYPE_PREFIX, 13694) +HANDLE_BAT(APINT_TYPE_PREFIX, 13695) +HANDLE_BAT(APINT_TYPE_PREFIX, 13696) +HANDLE_BAT(APINT_TYPE_PREFIX, 13697) +HANDLE_BAT(APINT_TYPE_PREFIX, 13698) +HANDLE_BAT(APINT_TYPE_PREFIX, 13699) +HANDLE_BAT(APINT_TYPE_PREFIX, 13700) +HANDLE_BAT(APINT_TYPE_PREFIX, 13701) +HANDLE_BAT(APINT_TYPE_PREFIX, 13702) +HANDLE_BAT(APINT_TYPE_PREFIX, 13703) +HANDLE_BAT(APINT_TYPE_PREFIX, 13704) +HANDLE_BAT(APINT_TYPE_PREFIX, 13705) +HANDLE_BAT(APINT_TYPE_PREFIX, 13706) +HANDLE_BAT(APINT_TYPE_PREFIX, 13707) +HANDLE_BAT(APINT_TYPE_PREFIX, 13708) +HANDLE_BAT(APINT_TYPE_PREFIX, 13709) +HANDLE_BAT(APINT_TYPE_PREFIX, 13710) +HANDLE_BAT(APINT_TYPE_PREFIX, 13711) +HANDLE_BAT(APINT_TYPE_PREFIX, 13712) +HANDLE_BAT(APINT_TYPE_PREFIX, 13713) +HANDLE_BAT(APINT_TYPE_PREFIX, 13714) +HANDLE_BAT(APINT_TYPE_PREFIX, 13715) +HANDLE_BAT(APINT_TYPE_PREFIX, 13716) +HANDLE_BAT(APINT_TYPE_PREFIX, 13717) +HANDLE_BAT(APINT_TYPE_PREFIX, 13718) +HANDLE_BAT(APINT_TYPE_PREFIX, 13719) +HANDLE_BAT(APINT_TYPE_PREFIX, 13720) +HANDLE_BAT(APINT_TYPE_PREFIX, 13721) +HANDLE_BAT(APINT_TYPE_PREFIX, 13722) +HANDLE_BAT(APINT_TYPE_PREFIX, 13723) +HANDLE_BAT(APINT_TYPE_PREFIX, 13724) +HANDLE_BAT(APINT_TYPE_PREFIX, 13725) +HANDLE_BAT(APINT_TYPE_PREFIX, 13726) +HANDLE_BAT(APINT_TYPE_PREFIX, 13727) +HANDLE_BAT(APINT_TYPE_PREFIX, 13728) +HANDLE_BAT(APINT_TYPE_PREFIX, 13729) +HANDLE_BAT(APINT_TYPE_PREFIX, 13730) +HANDLE_BAT(APINT_TYPE_PREFIX, 13731) +HANDLE_BAT(APINT_TYPE_PREFIX, 13732) +HANDLE_BAT(APINT_TYPE_PREFIX, 13733) +HANDLE_BAT(APINT_TYPE_PREFIX, 13734) +HANDLE_BAT(APINT_TYPE_PREFIX, 13735) +HANDLE_BAT(APINT_TYPE_PREFIX, 13736) +HANDLE_BAT(APINT_TYPE_PREFIX, 13737) +HANDLE_BAT(APINT_TYPE_PREFIX, 13738) +HANDLE_BAT(APINT_TYPE_PREFIX, 13739) +HANDLE_BAT(APINT_TYPE_PREFIX, 13740) +HANDLE_BAT(APINT_TYPE_PREFIX, 13741) +HANDLE_BAT(APINT_TYPE_PREFIX, 13742) +HANDLE_BAT(APINT_TYPE_PREFIX, 13743) +HANDLE_BAT(APINT_TYPE_PREFIX, 13744) +HANDLE_BAT(APINT_TYPE_PREFIX, 13745) +HANDLE_BAT(APINT_TYPE_PREFIX, 13746) +HANDLE_BAT(APINT_TYPE_PREFIX, 13747) +HANDLE_BAT(APINT_TYPE_PREFIX, 13748) +HANDLE_BAT(APINT_TYPE_PREFIX, 13749) +HANDLE_BAT(APINT_TYPE_PREFIX, 13750) +HANDLE_BAT(APINT_TYPE_PREFIX, 13751) +HANDLE_BAT(APINT_TYPE_PREFIX, 13752) +HANDLE_BAT(APINT_TYPE_PREFIX, 13753) +HANDLE_BAT(APINT_TYPE_PREFIX, 13754) +HANDLE_BAT(APINT_TYPE_PREFIX, 13755) +HANDLE_BAT(APINT_TYPE_PREFIX, 13756) +HANDLE_BAT(APINT_TYPE_PREFIX, 13757) +HANDLE_BAT(APINT_TYPE_PREFIX, 13758) +HANDLE_BAT(APINT_TYPE_PREFIX, 13759) +HANDLE_BAT(APINT_TYPE_PREFIX, 13760) +HANDLE_BAT(APINT_TYPE_PREFIX, 13761) +HANDLE_BAT(APINT_TYPE_PREFIX, 13762) +HANDLE_BAT(APINT_TYPE_PREFIX, 13763) +HANDLE_BAT(APINT_TYPE_PREFIX, 13764) +HANDLE_BAT(APINT_TYPE_PREFIX, 13765) +HANDLE_BAT(APINT_TYPE_PREFIX, 13766) +HANDLE_BAT(APINT_TYPE_PREFIX, 13767) +HANDLE_BAT(APINT_TYPE_PREFIX, 13768) +HANDLE_BAT(APINT_TYPE_PREFIX, 13769) +HANDLE_BAT(APINT_TYPE_PREFIX, 13770) +HANDLE_BAT(APINT_TYPE_PREFIX, 13771) +HANDLE_BAT(APINT_TYPE_PREFIX, 13772) +HANDLE_BAT(APINT_TYPE_PREFIX, 13773) +HANDLE_BAT(APINT_TYPE_PREFIX, 13774) +HANDLE_BAT(APINT_TYPE_PREFIX, 13775) +HANDLE_BAT(APINT_TYPE_PREFIX, 13776) +HANDLE_BAT(APINT_TYPE_PREFIX, 13777) +HANDLE_BAT(APINT_TYPE_PREFIX, 13778) +HANDLE_BAT(APINT_TYPE_PREFIX, 13779) +HANDLE_BAT(APINT_TYPE_PREFIX, 13780) +HANDLE_BAT(APINT_TYPE_PREFIX, 13781) +HANDLE_BAT(APINT_TYPE_PREFIX, 13782) +HANDLE_BAT(APINT_TYPE_PREFIX, 13783) +HANDLE_BAT(APINT_TYPE_PREFIX, 13784) +HANDLE_BAT(APINT_TYPE_PREFIX, 13785) +HANDLE_BAT(APINT_TYPE_PREFIX, 13786) +HANDLE_BAT(APINT_TYPE_PREFIX, 13787) +HANDLE_BAT(APINT_TYPE_PREFIX, 13788) +HANDLE_BAT(APINT_TYPE_PREFIX, 13789) +HANDLE_BAT(APINT_TYPE_PREFIX, 13790) +HANDLE_BAT(APINT_TYPE_PREFIX, 13791) +HANDLE_BAT(APINT_TYPE_PREFIX, 13792) +HANDLE_BAT(APINT_TYPE_PREFIX, 13793) +HANDLE_BAT(APINT_TYPE_PREFIX, 13794) +HANDLE_BAT(APINT_TYPE_PREFIX, 13795) +HANDLE_BAT(APINT_TYPE_PREFIX, 13796) +HANDLE_BAT(APINT_TYPE_PREFIX, 13797) +HANDLE_BAT(APINT_TYPE_PREFIX, 13798) +HANDLE_BAT(APINT_TYPE_PREFIX, 13799) +HANDLE_BAT(APINT_TYPE_PREFIX, 13800) +HANDLE_BAT(APINT_TYPE_PREFIX, 13801) +HANDLE_BAT(APINT_TYPE_PREFIX, 13802) +HANDLE_BAT(APINT_TYPE_PREFIX, 13803) +HANDLE_BAT(APINT_TYPE_PREFIX, 13804) +HANDLE_BAT(APINT_TYPE_PREFIX, 13805) +HANDLE_BAT(APINT_TYPE_PREFIX, 13806) +HANDLE_BAT(APINT_TYPE_PREFIX, 13807) +HANDLE_BAT(APINT_TYPE_PREFIX, 13808) +HANDLE_BAT(APINT_TYPE_PREFIX, 13809) +HANDLE_BAT(APINT_TYPE_PREFIX, 13810) +HANDLE_BAT(APINT_TYPE_PREFIX, 13811) +HANDLE_BAT(APINT_TYPE_PREFIX, 13812) +HANDLE_BAT(APINT_TYPE_PREFIX, 13813) +HANDLE_BAT(APINT_TYPE_PREFIX, 13814) +HANDLE_BAT(APINT_TYPE_PREFIX, 13815) +HANDLE_BAT(APINT_TYPE_PREFIX, 13816) +HANDLE_BAT(APINT_TYPE_PREFIX, 13817) +HANDLE_BAT(APINT_TYPE_PREFIX, 13818) +HANDLE_BAT(APINT_TYPE_PREFIX, 13819) +HANDLE_BAT(APINT_TYPE_PREFIX, 13820) +HANDLE_BAT(APINT_TYPE_PREFIX, 13821) +HANDLE_BAT(APINT_TYPE_PREFIX, 13822) +HANDLE_BAT(APINT_TYPE_PREFIX, 13823) +HANDLE_BAT(APINT_TYPE_PREFIX, 13824) +HANDLE_BAT(APINT_TYPE_PREFIX, 13825) +HANDLE_BAT(APINT_TYPE_PREFIX, 13826) +HANDLE_BAT(APINT_TYPE_PREFIX, 13827) +HANDLE_BAT(APINT_TYPE_PREFIX, 13828) +HANDLE_BAT(APINT_TYPE_PREFIX, 13829) +HANDLE_BAT(APINT_TYPE_PREFIX, 13830) +HANDLE_BAT(APINT_TYPE_PREFIX, 13831) +HANDLE_BAT(APINT_TYPE_PREFIX, 13832) +HANDLE_BAT(APINT_TYPE_PREFIX, 13833) +HANDLE_BAT(APINT_TYPE_PREFIX, 13834) +HANDLE_BAT(APINT_TYPE_PREFIX, 13835) +HANDLE_BAT(APINT_TYPE_PREFIX, 13836) +HANDLE_BAT(APINT_TYPE_PREFIX, 13837) +HANDLE_BAT(APINT_TYPE_PREFIX, 13838) +HANDLE_BAT(APINT_TYPE_PREFIX, 13839) +HANDLE_BAT(APINT_TYPE_PREFIX, 13840) +HANDLE_BAT(APINT_TYPE_PREFIX, 13841) +HANDLE_BAT(APINT_TYPE_PREFIX, 13842) +HANDLE_BAT(APINT_TYPE_PREFIX, 13843) +HANDLE_BAT(APINT_TYPE_PREFIX, 13844) +HANDLE_BAT(APINT_TYPE_PREFIX, 13845) +HANDLE_BAT(APINT_TYPE_PREFIX, 13846) +HANDLE_BAT(APINT_TYPE_PREFIX, 13847) +HANDLE_BAT(APINT_TYPE_PREFIX, 13848) +HANDLE_BAT(APINT_TYPE_PREFIX, 13849) +HANDLE_BAT(APINT_TYPE_PREFIX, 13850) +HANDLE_BAT(APINT_TYPE_PREFIX, 13851) +HANDLE_BAT(APINT_TYPE_PREFIX, 13852) +HANDLE_BAT(APINT_TYPE_PREFIX, 13853) +HANDLE_BAT(APINT_TYPE_PREFIX, 13854) +HANDLE_BAT(APINT_TYPE_PREFIX, 13855) +HANDLE_BAT(APINT_TYPE_PREFIX, 13856) +HANDLE_BAT(APINT_TYPE_PREFIX, 13857) +HANDLE_BAT(APINT_TYPE_PREFIX, 13858) +HANDLE_BAT(APINT_TYPE_PREFIX, 13859) +HANDLE_BAT(APINT_TYPE_PREFIX, 13860) +HANDLE_BAT(APINT_TYPE_PREFIX, 13861) +HANDLE_BAT(APINT_TYPE_PREFIX, 13862) +HANDLE_BAT(APINT_TYPE_PREFIX, 13863) +HANDLE_BAT(APINT_TYPE_PREFIX, 13864) +HANDLE_BAT(APINT_TYPE_PREFIX, 13865) +HANDLE_BAT(APINT_TYPE_PREFIX, 13866) +HANDLE_BAT(APINT_TYPE_PREFIX, 13867) +HANDLE_BAT(APINT_TYPE_PREFIX, 13868) +HANDLE_BAT(APINT_TYPE_PREFIX, 13869) +HANDLE_BAT(APINT_TYPE_PREFIX, 13870) +HANDLE_BAT(APINT_TYPE_PREFIX, 13871) +HANDLE_BAT(APINT_TYPE_PREFIX, 13872) +HANDLE_BAT(APINT_TYPE_PREFIX, 13873) +HANDLE_BAT(APINT_TYPE_PREFIX, 13874) +HANDLE_BAT(APINT_TYPE_PREFIX, 13875) +HANDLE_BAT(APINT_TYPE_PREFIX, 13876) +HANDLE_BAT(APINT_TYPE_PREFIX, 13877) +HANDLE_BAT(APINT_TYPE_PREFIX, 13878) +HANDLE_BAT(APINT_TYPE_PREFIX, 13879) +HANDLE_BAT(APINT_TYPE_PREFIX, 13880) +HANDLE_BAT(APINT_TYPE_PREFIX, 13881) +HANDLE_BAT(APINT_TYPE_PREFIX, 13882) +HANDLE_BAT(APINT_TYPE_PREFIX, 13883) +HANDLE_BAT(APINT_TYPE_PREFIX, 13884) +HANDLE_BAT(APINT_TYPE_PREFIX, 13885) +HANDLE_BAT(APINT_TYPE_PREFIX, 13886) +HANDLE_BAT(APINT_TYPE_PREFIX, 13887) +HANDLE_BAT(APINT_TYPE_PREFIX, 13888) +HANDLE_BAT(APINT_TYPE_PREFIX, 13889) +HANDLE_BAT(APINT_TYPE_PREFIX, 13890) +HANDLE_BAT(APINT_TYPE_PREFIX, 13891) +HANDLE_BAT(APINT_TYPE_PREFIX, 13892) +HANDLE_BAT(APINT_TYPE_PREFIX, 13893) +HANDLE_BAT(APINT_TYPE_PREFIX, 13894) +HANDLE_BAT(APINT_TYPE_PREFIX, 13895) +HANDLE_BAT(APINT_TYPE_PREFIX, 13896) +HANDLE_BAT(APINT_TYPE_PREFIX, 13897) +HANDLE_BAT(APINT_TYPE_PREFIX, 13898) +HANDLE_BAT(APINT_TYPE_PREFIX, 13899) +HANDLE_BAT(APINT_TYPE_PREFIX, 13900) +HANDLE_BAT(APINT_TYPE_PREFIX, 13901) +HANDLE_BAT(APINT_TYPE_PREFIX, 13902) +HANDLE_BAT(APINT_TYPE_PREFIX, 13903) +HANDLE_BAT(APINT_TYPE_PREFIX, 13904) +HANDLE_BAT(APINT_TYPE_PREFIX, 13905) +HANDLE_BAT(APINT_TYPE_PREFIX, 13906) +HANDLE_BAT(APINT_TYPE_PREFIX, 13907) +HANDLE_BAT(APINT_TYPE_PREFIX, 13908) +HANDLE_BAT(APINT_TYPE_PREFIX, 13909) +HANDLE_BAT(APINT_TYPE_PREFIX, 13910) +HANDLE_BAT(APINT_TYPE_PREFIX, 13911) +HANDLE_BAT(APINT_TYPE_PREFIX, 13912) +HANDLE_BAT(APINT_TYPE_PREFIX, 13913) +HANDLE_BAT(APINT_TYPE_PREFIX, 13914) +HANDLE_BAT(APINT_TYPE_PREFIX, 13915) +HANDLE_BAT(APINT_TYPE_PREFIX, 13916) +HANDLE_BAT(APINT_TYPE_PREFIX, 13917) +HANDLE_BAT(APINT_TYPE_PREFIX, 13918) +HANDLE_BAT(APINT_TYPE_PREFIX, 13919) +HANDLE_BAT(APINT_TYPE_PREFIX, 13920) +HANDLE_BAT(APINT_TYPE_PREFIX, 13921) +HANDLE_BAT(APINT_TYPE_PREFIX, 13922) +HANDLE_BAT(APINT_TYPE_PREFIX, 13923) +HANDLE_BAT(APINT_TYPE_PREFIX, 13924) +HANDLE_BAT(APINT_TYPE_PREFIX, 13925) +HANDLE_BAT(APINT_TYPE_PREFIX, 13926) +HANDLE_BAT(APINT_TYPE_PREFIX, 13927) +HANDLE_BAT(APINT_TYPE_PREFIX, 13928) +HANDLE_BAT(APINT_TYPE_PREFIX, 13929) +HANDLE_BAT(APINT_TYPE_PREFIX, 13930) +HANDLE_BAT(APINT_TYPE_PREFIX, 13931) +HANDLE_BAT(APINT_TYPE_PREFIX, 13932) +HANDLE_BAT(APINT_TYPE_PREFIX, 13933) +HANDLE_BAT(APINT_TYPE_PREFIX, 13934) +HANDLE_BAT(APINT_TYPE_PREFIX, 13935) +HANDLE_BAT(APINT_TYPE_PREFIX, 13936) +HANDLE_BAT(APINT_TYPE_PREFIX, 13937) +HANDLE_BAT(APINT_TYPE_PREFIX, 13938) +HANDLE_BAT(APINT_TYPE_PREFIX, 13939) +HANDLE_BAT(APINT_TYPE_PREFIX, 13940) +HANDLE_BAT(APINT_TYPE_PREFIX, 13941) +HANDLE_BAT(APINT_TYPE_PREFIX, 13942) +HANDLE_BAT(APINT_TYPE_PREFIX, 13943) +HANDLE_BAT(APINT_TYPE_PREFIX, 13944) +HANDLE_BAT(APINT_TYPE_PREFIX, 13945) +HANDLE_BAT(APINT_TYPE_PREFIX, 13946) +HANDLE_BAT(APINT_TYPE_PREFIX, 13947) +HANDLE_BAT(APINT_TYPE_PREFIX, 13948) +HANDLE_BAT(APINT_TYPE_PREFIX, 13949) +HANDLE_BAT(APINT_TYPE_PREFIX, 13950) +HANDLE_BAT(APINT_TYPE_PREFIX, 13951) +HANDLE_BAT(APINT_TYPE_PREFIX, 13952) +HANDLE_BAT(APINT_TYPE_PREFIX, 13953) +HANDLE_BAT(APINT_TYPE_PREFIX, 13954) +HANDLE_BAT(APINT_TYPE_PREFIX, 13955) +HANDLE_BAT(APINT_TYPE_PREFIX, 13956) +HANDLE_BAT(APINT_TYPE_PREFIX, 13957) +HANDLE_BAT(APINT_TYPE_PREFIX, 13958) +HANDLE_BAT(APINT_TYPE_PREFIX, 13959) +HANDLE_BAT(APINT_TYPE_PREFIX, 13960) +HANDLE_BAT(APINT_TYPE_PREFIX, 13961) +HANDLE_BAT(APINT_TYPE_PREFIX, 13962) +HANDLE_BAT(APINT_TYPE_PREFIX, 13963) +HANDLE_BAT(APINT_TYPE_PREFIX, 13964) +HANDLE_BAT(APINT_TYPE_PREFIX, 13965) +HANDLE_BAT(APINT_TYPE_PREFIX, 13966) +HANDLE_BAT(APINT_TYPE_PREFIX, 13967) +HANDLE_BAT(APINT_TYPE_PREFIX, 13968) +HANDLE_BAT(APINT_TYPE_PREFIX, 13969) +HANDLE_BAT(APINT_TYPE_PREFIX, 13970) +HANDLE_BAT(APINT_TYPE_PREFIX, 13971) +HANDLE_BAT(APINT_TYPE_PREFIX, 13972) +HANDLE_BAT(APINT_TYPE_PREFIX, 13973) +HANDLE_BAT(APINT_TYPE_PREFIX, 13974) +HANDLE_BAT(APINT_TYPE_PREFIX, 13975) +HANDLE_BAT(APINT_TYPE_PREFIX, 13976) +HANDLE_BAT(APINT_TYPE_PREFIX, 13977) +HANDLE_BAT(APINT_TYPE_PREFIX, 13978) +HANDLE_BAT(APINT_TYPE_PREFIX, 13979) +HANDLE_BAT(APINT_TYPE_PREFIX, 13980) +HANDLE_BAT(APINT_TYPE_PREFIX, 13981) +HANDLE_BAT(APINT_TYPE_PREFIX, 13982) +HANDLE_BAT(APINT_TYPE_PREFIX, 13983) +HANDLE_BAT(APINT_TYPE_PREFIX, 13984) +HANDLE_BAT(APINT_TYPE_PREFIX, 13985) +HANDLE_BAT(APINT_TYPE_PREFIX, 13986) +HANDLE_BAT(APINT_TYPE_PREFIX, 13987) +HANDLE_BAT(APINT_TYPE_PREFIX, 13988) +HANDLE_BAT(APINT_TYPE_PREFIX, 13989) +HANDLE_BAT(APINT_TYPE_PREFIX, 13990) +HANDLE_BAT(APINT_TYPE_PREFIX, 13991) +HANDLE_BAT(APINT_TYPE_PREFIX, 13992) +HANDLE_BAT(APINT_TYPE_PREFIX, 13993) +HANDLE_BAT(APINT_TYPE_PREFIX, 13994) +HANDLE_BAT(APINT_TYPE_PREFIX, 13995) +HANDLE_BAT(APINT_TYPE_PREFIX, 13996) +HANDLE_BAT(APINT_TYPE_PREFIX, 13997) +HANDLE_BAT(APINT_TYPE_PREFIX, 13998) +HANDLE_BAT(APINT_TYPE_PREFIX, 13999) +HANDLE_BAT(APINT_TYPE_PREFIX, 14000) +HANDLE_BAT(APINT_TYPE_PREFIX, 14001) +HANDLE_BAT(APINT_TYPE_PREFIX, 14002) +HANDLE_BAT(APINT_TYPE_PREFIX, 14003) +HANDLE_BAT(APINT_TYPE_PREFIX, 14004) +HANDLE_BAT(APINT_TYPE_PREFIX, 14005) +HANDLE_BAT(APINT_TYPE_PREFIX, 14006) +HANDLE_BAT(APINT_TYPE_PREFIX, 14007) +HANDLE_BAT(APINT_TYPE_PREFIX, 14008) +HANDLE_BAT(APINT_TYPE_PREFIX, 14009) +HANDLE_BAT(APINT_TYPE_PREFIX, 14010) +HANDLE_BAT(APINT_TYPE_PREFIX, 14011) +HANDLE_BAT(APINT_TYPE_PREFIX, 14012) +HANDLE_BAT(APINT_TYPE_PREFIX, 14013) +HANDLE_BAT(APINT_TYPE_PREFIX, 14014) +HANDLE_BAT(APINT_TYPE_PREFIX, 14015) +HANDLE_BAT(APINT_TYPE_PREFIX, 14016) +HANDLE_BAT(APINT_TYPE_PREFIX, 14017) +HANDLE_BAT(APINT_TYPE_PREFIX, 14018) +HANDLE_BAT(APINT_TYPE_PREFIX, 14019) +HANDLE_BAT(APINT_TYPE_PREFIX, 14020) +HANDLE_BAT(APINT_TYPE_PREFIX, 14021) +HANDLE_BAT(APINT_TYPE_PREFIX, 14022) +HANDLE_BAT(APINT_TYPE_PREFIX, 14023) +HANDLE_BAT(APINT_TYPE_PREFIX, 14024) +HANDLE_BAT(APINT_TYPE_PREFIX, 14025) +HANDLE_BAT(APINT_TYPE_PREFIX, 14026) +HANDLE_BAT(APINT_TYPE_PREFIX, 14027) +HANDLE_BAT(APINT_TYPE_PREFIX, 14028) +HANDLE_BAT(APINT_TYPE_PREFIX, 14029) +HANDLE_BAT(APINT_TYPE_PREFIX, 14030) +HANDLE_BAT(APINT_TYPE_PREFIX, 14031) +HANDLE_BAT(APINT_TYPE_PREFIX, 14032) +HANDLE_BAT(APINT_TYPE_PREFIX, 14033) +HANDLE_BAT(APINT_TYPE_PREFIX, 14034) +HANDLE_BAT(APINT_TYPE_PREFIX, 14035) +HANDLE_BAT(APINT_TYPE_PREFIX, 14036) +HANDLE_BAT(APINT_TYPE_PREFIX, 14037) +HANDLE_BAT(APINT_TYPE_PREFIX, 14038) +HANDLE_BAT(APINT_TYPE_PREFIX, 14039) +HANDLE_BAT(APINT_TYPE_PREFIX, 14040) +HANDLE_BAT(APINT_TYPE_PREFIX, 14041) +HANDLE_BAT(APINT_TYPE_PREFIX, 14042) +HANDLE_BAT(APINT_TYPE_PREFIX, 14043) +HANDLE_BAT(APINT_TYPE_PREFIX, 14044) +HANDLE_BAT(APINT_TYPE_PREFIX, 14045) +HANDLE_BAT(APINT_TYPE_PREFIX, 14046) +HANDLE_BAT(APINT_TYPE_PREFIX, 14047) +HANDLE_BAT(APINT_TYPE_PREFIX, 14048) +HANDLE_BAT(APINT_TYPE_PREFIX, 14049) +HANDLE_BAT(APINT_TYPE_PREFIX, 14050) +HANDLE_BAT(APINT_TYPE_PREFIX, 14051) +HANDLE_BAT(APINT_TYPE_PREFIX, 14052) +HANDLE_BAT(APINT_TYPE_PREFIX, 14053) +HANDLE_BAT(APINT_TYPE_PREFIX, 14054) +HANDLE_BAT(APINT_TYPE_PREFIX, 14055) +HANDLE_BAT(APINT_TYPE_PREFIX, 14056) +HANDLE_BAT(APINT_TYPE_PREFIX, 14057) +HANDLE_BAT(APINT_TYPE_PREFIX, 14058) +HANDLE_BAT(APINT_TYPE_PREFIX, 14059) +HANDLE_BAT(APINT_TYPE_PREFIX, 14060) +HANDLE_BAT(APINT_TYPE_PREFIX, 14061) +HANDLE_BAT(APINT_TYPE_PREFIX, 14062) +HANDLE_BAT(APINT_TYPE_PREFIX, 14063) +HANDLE_BAT(APINT_TYPE_PREFIX, 14064) +HANDLE_BAT(APINT_TYPE_PREFIX, 14065) +HANDLE_BAT(APINT_TYPE_PREFIX, 14066) +HANDLE_BAT(APINT_TYPE_PREFIX, 14067) +HANDLE_BAT(APINT_TYPE_PREFIX, 14068) +HANDLE_BAT(APINT_TYPE_PREFIX, 14069) +HANDLE_BAT(APINT_TYPE_PREFIX, 14070) +HANDLE_BAT(APINT_TYPE_PREFIX, 14071) +HANDLE_BAT(APINT_TYPE_PREFIX, 14072) +HANDLE_BAT(APINT_TYPE_PREFIX, 14073) +HANDLE_BAT(APINT_TYPE_PREFIX, 14074) +HANDLE_BAT(APINT_TYPE_PREFIX, 14075) +HANDLE_BAT(APINT_TYPE_PREFIX, 14076) +HANDLE_BAT(APINT_TYPE_PREFIX, 14077) +HANDLE_BAT(APINT_TYPE_PREFIX, 14078) +HANDLE_BAT(APINT_TYPE_PREFIX, 14079) +HANDLE_BAT(APINT_TYPE_PREFIX, 14080) +HANDLE_BAT(APINT_TYPE_PREFIX, 14081) +HANDLE_BAT(APINT_TYPE_PREFIX, 14082) +HANDLE_BAT(APINT_TYPE_PREFIX, 14083) +HANDLE_BAT(APINT_TYPE_PREFIX, 14084) +HANDLE_BAT(APINT_TYPE_PREFIX, 14085) +HANDLE_BAT(APINT_TYPE_PREFIX, 14086) +HANDLE_BAT(APINT_TYPE_PREFIX, 14087) +HANDLE_BAT(APINT_TYPE_PREFIX, 14088) +HANDLE_BAT(APINT_TYPE_PREFIX, 14089) +HANDLE_BAT(APINT_TYPE_PREFIX, 14090) +HANDLE_BAT(APINT_TYPE_PREFIX, 14091) +HANDLE_BAT(APINT_TYPE_PREFIX, 14092) +HANDLE_BAT(APINT_TYPE_PREFIX, 14093) +HANDLE_BAT(APINT_TYPE_PREFIX, 14094) +HANDLE_BAT(APINT_TYPE_PREFIX, 14095) +HANDLE_BAT(APINT_TYPE_PREFIX, 14096) +HANDLE_BAT(APINT_TYPE_PREFIX, 14097) +HANDLE_BAT(APINT_TYPE_PREFIX, 14098) +HANDLE_BAT(APINT_TYPE_PREFIX, 14099) +HANDLE_BAT(APINT_TYPE_PREFIX, 14100) +HANDLE_BAT(APINT_TYPE_PREFIX, 14101) +HANDLE_BAT(APINT_TYPE_PREFIX, 14102) +HANDLE_BAT(APINT_TYPE_PREFIX, 14103) +HANDLE_BAT(APINT_TYPE_PREFIX, 14104) +HANDLE_BAT(APINT_TYPE_PREFIX, 14105) +HANDLE_BAT(APINT_TYPE_PREFIX, 14106) +HANDLE_BAT(APINT_TYPE_PREFIX, 14107) +HANDLE_BAT(APINT_TYPE_PREFIX, 14108) +HANDLE_BAT(APINT_TYPE_PREFIX, 14109) +HANDLE_BAT(APINT_TYPE_PREFIX, 14110) +HANDLE_BAT(APINT_TYPE_PREFIX, 14111) +HANDLE_BAT(APINT_TYPE_PREFIX, 14112) +HANDLE_BAT(APINT_TYPE_PREFIX, 14113) +HANDLE_BAT(APINT_TYPE_PREFIX, 14114) +HANDLE_BAT(APINT_TYPE_PREFIX, 14115) +HANDLE_BAT(APINT_TYPE_PREFIX, 14116) +HANDLE_BAT(APINT_TYPE_PREFIX, 14117) +HANDLE_BAT(APINT_TYPE_PREFIX, 14118) +HANDLE_BAT(APINT_TYPE_PREFIX, 14119) +HANDLE_BAT(APINT_TYPE_PREFIX, 14120) +HANDLE_BAT(APINT_TYPE_PREFIX, 14121) +HANDLE_BAT(APINT_TYPE_PREFIX, 14122) +HANDLE_BAT(APINT_TYPE_PREFIX, 14123) +HANDLE_BAT(APINT_TYPE_PREFIX, 14124) +HANDLE_BAT(APINT_TYPE_PREFIX, 14125) +HANDLE_BAT(APINT_TYPE_PREFIX, 14126) +HANDLE_BAT(APINT_TYPE_PREFIX, 14127) +HANDLE_BAT(APINT_TYPE_PREFIX, 14128) +HANDLE_BAT(APINT_TYPE_PREFIX, 14129) +HANDLE_BAT(APINT_TYPE_PREFIX, 14130) +HANDLE_BAT(APINT_TYPE_PREFIX, 14131) +HANDLE_BAT(APINT_TYPE_PREFIX, 14132) +HANDLE_BAT(APINT_TYPE_PREFIX, 14133) +HANDLE_BAT(APINT_TYPE_PREFIX, 14134) +HANDLE_BAT(APINT_TYPE_PREFIX, 14135) +HANDLE_BAT(APINT_TYPE_PREFIX, 14136) +HANDLE_BAT(APINT_TYPE_PREFIX, 14137) +HANDLE_BAT(APINT_TYPE_PREFIX, 14138) +HANDLE_BAT(APINT_TYPE_PREFIX, 14139) +HANDLE_BAT(APINT_TYPE_PREFIX, 14140) +HANDLE_BAT(APINT_TYPE_PREFIX, 14141) +HANDLE_BAT(APINT_TYPE_PREFIX, 14142) +HANDLE_BAT(APINT_TYPE_PREFIX, 14143) +HANDLE_BAT(APINT_TYPE_PREFIX, 14144) +HANDLE_BAT(APINT_TYPE_PREFIX, 14145) +HANDLE_BAT(APINT_TYPE_PREFIX, 14146) +HANDLE_BAT(APINT_TYPE_PREFIX, 14147) +HANDLE_BAT(APINT_TYPE_PREFIX, 14148) +HANDLE_BAT(APINT_TYPE_PREFIX, 14149) +HANDLE_BAT(APINT_TYPE_PREFIX, 14150) +HANDLE_BAT(APINT_TYPE_PREFIX, 14151) +HANDLE_BAT(APINT_TYPE_PREFIX, 14152) +HANDLE_BAT(APINT_TYPE_PREFIX, 14153) +HANDLE_BAT(APINT_TYPE_PREFIX, 14154) +HANDLE_BAT(APINT_TYPE_PREFIX, 14155) +HANDLE_BAT(APINT_TYPE_PREFIX, 14156) +HANDLE_BAT(APINT_TYPE_PREFIX, 14157) +HANDLE_BAT(APINT_TYPE_PREFIX, 14158) +HANDLE_BAT(APINT_TYPE_PREFIX, 14159) +HANDLE_BAT(APINT_TYPE_PREFIX, 14160) +HANDLE_BAT(APINT_TYPE_PREFIX, 14161) +HANDLE_BAT(APINT_TYPE_PREFIX, 14162) +HANDLE_BAT(APINT_TYPE_PREFIX, 14163) +HANDLE_BAT(APINT_TYPE_PREFIX, 14164) +HANDLE_BAT(APINT_TYPE_PREFIX, 14165) +HANDLE_BAT(APINT_TYPE_PREFIX, 14166) +HANDLE_BAT(APINT_TYPE_PREFIX, 14167) +HANDLE_BAT(APINT_TYPE_PREFIX, 14168) +HANDLE_BAT(APINT_TYPE_PREFIX, 14169) +HANDLE_BAT(APINT_TYPE_PREFIX, 14170) +HANDLE_BAT(APINT_TYPE_PREFIX, 14171) +HANDLE_BAT(APINT_TYPE_PREFIX, 14172) +HANDLE_BAT(APINT_TYPE_PREFIX, 14173) +HANDLE_BAT(APINT_TYPE_PREFIX, 14174) +HANDLE_BAT(APINT_TYPE_PREFIX, 14175) +HANDLE_BAT(APINT_TYPE_PREFIX, 14176) +HANDLE_BAT(APINT_TYPE_PREFIX, 14177) +HANDLE_BAT(APINT_TYPE_PREFIX, 14178) +HANDLE_BAT(APINT_TYPE_PREFIX, 14179) +HANDLE_BAT(APINT_TYPE_PREFIX, 14180) +HANDLE_BAT(APINT_TYPE_PREFIX, 14181) +HANDLE_BAT(APINT_TYPE_PREFIX, 14182) +HANDLE_BAT(APINT_TYPE_PREFIX, 14183) +HANDLE_BAT(APINT_TYPE_PREFIX, 14184) +HANDLE_BAT(APINT_TYPE_PREFIX, 14185) +HANDLE_BAT(APINT_TYPE_PREFIX, 14186) +HANDLE_BAT(APINT_TYPE_PREFIX, 14187) +HANDLE_BAT(APINT_TYPE_PREFIX, 14188) +HANDLE_BAT(APINT_TYPE_PREFIX, 14189) +HANDLE_BAT(APINT_TYPE_PREFIX, 14190) +HANDLE_BAT(APINT_TYPE_PREFIX, 14191) +HANDLE_BAT(APINT_TYPE_PREFIX, 14192) +HANDLE_BAT(APINT_TYPE_PREFIX, 14193) +HANDLE_BAT(APINT_TYPE_PREFIX, 14194) +HANDLE_BAT(APINT_TYPE_PREFIX, 14195) +HANDLE_BAT(APINT_TYPE_PREFIX, 14196) +HANDLE_BAT(APINT_TYPE_PREFIX, 14197) +HANDLE_BAT(APINT_TYPE_PREFIX, 14198) +HANDLE_BAT(APINT_TYPE_PREFIX, 14199) +HANDLE_BAT(APINT_TYPE_PREFIX, 14200) +HANDLE_BAT(APINT_TYPE_PREFIX, 14201) +HANDLE_BAT(APINT_TYPE_PREFIX, 14202) +HANDLE_BAT(APINT_TYPE_PREFIX, 14203) +HANDLE_BAT(APINT_TYPE_PREFIX, 14204) +HANDLE_BAT(APINT_TYPE_PREFIX, 14205) +HANDLE_BAT(APINT_TYPE_PREFIX, 14206) +HANDLE_BAT(APINT_TYPE_PREFIX, 14207) +HANDLE_BAT(APINT_TYPE_PREFIX, 14208) +HANDLE_BAT(APINT_TYPE_PREFIX, 14209) +HANDLE_BAT(APINT_TYPE_PREFIX, 14210) +HANDLE_BAT(APINT_TYPE_PREFIX, 14211) +HANDLE_BAT(APINT_TYPE_PREFIX, 14212) +HANDLE_BAT(APINT_TYPE_PREFIX, 14213) +HANDLE_BAT(APINT_TYPE_PREFIX, 14214) +HANDLE_BAT(APINT_TYPE_PREFIX, 14215) +HANDLE_BAT(APINT_TYPE_PREFIX, 14216) +HANDLE_BAT(APINT_TYPE_PREFIX, 14217) +HANDLE_BAT(APINT_TYPE_PREFIX, 14218) +HANDLE_BAT(APINT_TYPE_PREFIX, 14219) +HANDLE_BAT(APINT_TYPE_PREFIX, 14220) +HANDLE_BAT(APINT_TYPE_PREFIX, 14221) +HANDLE_BAT(APINT_TYPE_PREFIX, 14222) +HANDLE_BAT(APINT_TYPE_PREFIX, 14223) +HANDLE_BAT(APINT_TYPE_PREFIX, 14224) +HANDLE_BAT(APINT_TYPE_PREFIX, 14225) +HANDLE_BAT(APINT_TYPE_PREFIX, 14226) +HANDLE_BAT(APINT_TYPE_PREFIX, 14227) +HANDLE_BAT(APINT_TYPE_PREFIX, 14228) +HANDLE_BAT(APINT_TYPE_PREFIX, 14229) +HANDLE_BAT(APINT_TYPE_PREFIX, 14230) +HANDLE_BAT(APINT_TYPE_PREFIX, 14231) +HANDLE_BAT(APINT_TYPE_PREFIX, 14232) +HANDLE_BAT(APINT_TYPE_PREFIX, 14233) +HANDLE_BAT(APINT_TYPE_PREFIX, 14234) +HANDLE_BAT(APINT_TYPE_PREFIX, 14235) +HANDLE_BAT(APINT_TYPE_PREFIX, 14236) +HANDLE_BAT(APINT_TYPE_PREFIX, 14237) +HANDLE_BAT(APINT_TYPE_PREFIX, 14238) +HANDLE_BAT(APINT_TYPE_PREFIX, 14239) +HANDLE_BAT(APINT_TYPE_PREFIX, 14240) +HANDLE_BAT(APINT_TYPE_PREFIX, 14241) +HANDLE_BAT(APINT_TYPE_PREFIX, 14242) +HANDLE_BAT(APINT_TYPE_PREFIX, 14243) +HANDLE_BAT(APINT_TYPE_PREFIX, 14244) +HANDLE_BAT(APINT_TYPE_PREFIX, 14245) +HANDLE_BAT(APINT_TYPE_PREFIX, 14246) +HANDLE_BAT(APINT_TYPE_PREFIX, 14247) +HANDLE_BAT(APINT_TYPE_PREFIX, 14248) +HANDLE_BAT(APINT_TYPE_PREFIX, 14249) +HANDLE_BAT(APINT_TYPE_PREFIX, 14250) +HANDLE_BAT(APINT_TYPE_PREFIX, 14251) +HANDLE_BAT(APINT_TYPE_PREFIX, 14252) +HANDLE_BAT(APINT_TYPE_PREFIX, 14253) +HANDLE_BAT(APINT_TYPE_PREFIX, 14254) +HANDLE_BAT(APINT_TYPE_PREFIX, 14255) +HANDLE_BAT(APINT_TYPE_PREFIX, 14256) +HANDLE_BAT(APINT_TYPE_PREFIX, 14257) +HANDLE_BAT(APINT_TYPE_PREFIX, 14258) +HANDLE_BAT(APINT_TYPE_PREFIX, 14259) +HANDLE_BAT(APINT_TYPE_PREFIX, 14260) +HANDLE_BAT(APINT_TYPE_PREFIX, 14261) +HANDLE_BAT(APINT_TYPE_PREFIX, 14262) +HANDLE_BAT(APINT_TYPE_PREFIX, 14263) +HANDLE_BAT(APINT_TYPE_PREFIX, 14264) +HANDLE_BAT(APINT_TYPE_PREFIX, 14265) +HANDLE_BAT(APINT_TYPE_PREFIX, 14266) +HANDLE_BAT(APINT_TYPE_PREFIX, 14267) +HANDLE_BAT(APINT_TYPE_PREFIX, 14268) +HANDLE_BAT(APINT_TYPE_PREFIX, 14269) +HANDLE_BAT(APINT_TYPE_PREFIX, 14270) +HANDLE_BAT(APINT_TYPE_PREFIX, 14271) +HANDLE_BAT(APINT_TYPE_PREFIX, 14272) +HANDLE_BAT(APINT_TYPE_PREFIX, 14273) +HANDLE_BAT(APINT_TYPE_PREFIX, 14274) +HANDLE_BAT(APINT_TYPE_PREFIX, 14275) +HANDLE_BAT(APINT_TYPE_PREFIX, 14276) +HANDLE_BAT(APINT_TYPE_PREFIX, 14277) +HANDLE_BAT(APINT_TYPE_PREFIX, 14278) +HANDLE_BAT(APINT_TYPE_PREFIX, 14279) +HANDLE_BAT(APINT_TYPE_PREFIX, 14280) +HANDLE_BAT(APINT_TYPE_PREFIX, 14281) +HANDLE_BAT(APINT_TYPE_PREFIX, 14282) +HANDLE_BAT(APINT_TYPE_PREFIX, 14283) +HANDLE_BAT(APINT_TYPE_PREFIX, 14284) +HANDLE_BAT(APINT_TYPE_PREFIX, 14285) +HANDLE_BAT(APINT_TYPE_PREFIX, 14286) +HANDLE_BAT(APINT_TYPE_PREFIX, 14287) +HANDLE_BAT(APINT_TYPE_PREFIX, 14288) +HANDLE_BAT(APINT_TYPE_PREFIX, 14289) +HANDLE_BAT(APINT_TYPE_PREFIX, 14290) +HANDLE_BAT(APINT_TYPE_PREFIX, 14291) +HANDLE_BAT(APINT_TYPE_PREFIX, 14292) +HANDLE_BAT(APINT_TYPE_PREFIX, 14293) +HANDLE_BAT(APINT_TYPE_PREFIX, 14294) +HANDLE_BAT(APINT_TYPE_PREFIX, 14295) +HANDLE_BAT(APINT_TYPE_PREFIX, 14296) +HANDLE_BAT(APINT_TYPE_PREFIX, 14297) +HANDLE_BAT(APINT_TYPE_PREFIX, 14298) +HANDLE_BAT(APINT_TYPE_PREFIX, 14299) +HANDLE_BAT(APINT_TYPE_PREFIX, 14300) +HANDLE_BAT(APINT_TYPE_PREFIX, 14301) +HANDLE_BAT(APINT_TYPE_PREFIX, 14302) +HANDLE_BAT(APINT_TYPE_PREFIX, 14303) +HANDLE_BAT(APINT_TYPE_PREFIX, 14304) +HANDLE_BAT(APINT_TYPE_PREFIX, 14305) +HANDLE_BAT(APINT_TYPE_PREFIX, 14306) +HANDLE_BAT(APINT_TYPE_PREFIX, 14307) +HANDLE_BAT(APINT_TYPE_PREFIX, 14308) +HANDLE_BAT(APINT_TYPE_PREFIX, 14309) +HANDLE_BAT(APINT_TYPE_PREFIX, 14310) +HANDLE_BAT(APINT_TYPE_PREFIX, 14311) +HANDLE_BAT(APINT_TYPE_PREFIX, 14312) +HANDLE_BAT(APINT_TYPE_PREFIX, 14313) +HANDLE_BAT(APINT_TYPE_PREFIX, 14314) +HANDLE_BAT(APINT_TYPE_PREFIX, 14315) +HANDLE_BAT(APINT_TYPE_PREFIX, 14316) +HANDLE_BAT(APINT_TYPE_PREFIX, 14317) +HANDLE_BAT(APINT_TYPE_PREFIX, 14318) +HANDLE_BAT(APINT_TYPE_PREFIX, 14319) +HANDLE_BAT(APINT_TYPE_PREFIX, 14320) +HANDLE_BAT(APINT_TYPE_PREFIX, 14321) +HANDLE_BAT(APINT_TYPE_PREFIX, 14322) +HANDLE_BAT(APINT_TYPE_PREFIX, 14323) +HANDLE_BAT(APINT_TYPE_PREFIX, 14324) +HANDLE_BAT(APINT_TYPE_PREFIX, 14325) +HANDLE_BAT(APINT_TYPE_PREFIX, 14326) +HANDLE_BAT(APINT_TYPE_PREFIX, 14327) +HANDLE_BAT(APINT_TYPE_PREFIX, 14328) +HANDLE_BAT(APINT_TYPE_PREFIX, 14329) +HANDLE_BAT(APINT_TYPE_PREFIX, 14330) +HANDLE_BAT(APINT_TYPE_PREFIX, 14331) +HANDLE_BAT(APINT_TYPE_PREFIX, 14332) +HANDLE_BAT(APINT_TYPE_PREFIX, 14333) +HANDLE_BAT(APINT_TYPE_PREFIX, 14334) +HANDLE_BAT(APINT_TYPE_PREFIX, 14335) +HANDLE_BAT(APINT_TYPE_PREFIX, 14336) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 14 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 14337) +HANDLE_BAT(, 14338) +HANDLE_BAT(, 14339) +HANDLE_BAT(, 14340) +HANDLE_BAT(, 14341) +HANDLE_BAT(, 14342) +HANDLE_BAT(, 14343) +HANDLE_BAT(, 14344) +HANDLE_BAT(, 14345) +HANDLE_BAT(, 14346) +HANDLE_BAT(, 14347) +HANDLE_BAT(, 14348) +HANDLE_BAT(, 14349) +HANDLE_BAT(, 14350) +HANDLE_BAT(, 14351) +HANDLE_BAT(, 14352) +HANDLE_BAT(, 14353) +HANDLE_BAT(, 14354) +HANDLE_BAT(, 14355) +HANDLE_BAT(, 14356) +HANDLE_BAT(, 14357) +HANDLE_BAT(, 14358) +HANDLE_BAT(, 14359) +HANDLE_BAT(, 14360) +HANDLE_BAT(, 14361) +HANDLE_BAT(, 14362) +HANDLE_BAT(, 14363) +HANDLE_BAT(, 14364) +HANDLE_BAT(, 14365) +HANDLE_BAT(, 14366) +HANDLE_BAT(, 14367) +HANDLE_BAT(, 14368) +HANDLE_BAT(, 14369) +HANDLE_BAT(, 14370) +HANDLE_BAT(, 14371) +HANDLE_BAT(, 14372) +HANDLE_BAT(, 14373) +HANDLE_BAT(, 14374) +HANDLE_BAT(, 14375) +HANDLE_BAT(, 14376) +HANDLE_BAT(, 14377) +HANDLE_BAT(, 14378) +HANDLE_BAT(, 14379) +HANDLE_BAT(, 14380) +HANDLE_BAT(, 14381) +HANDLE_BAT(, 14382) +HANDLE_BAT(, 14383) +HANDLE_BAT(, 14384) +HANDLE_BAT(, 14385) +HANDLE_BAT(, 14386) +HANDLE_BAT(, 14387) +HANDLE_BAT(, 14388) +HANDLE_BAT(, 14389) +HANDLE_BAT(, 14390) +HANDLE_BAT(, 14391) +HANDLE_BAT(, 14392) +HANDLE_BAT(, 14393) +HANDLE_BAT(, 14394) +HANDLE_BAT(, 14395) +HANDLE_BAT(, 14396) +HANDLE_BAT(, 14397) +HANDLE_BAT(, 14398) +HANDLE_BAT(, 14399) +HANDLE_BAT(, 14400) +HANDLE_BAT(, 14401) +HANDLE_BAT(, 14402) +HANDLE_BAT(, 14403) +HANDLE_BAT(, 14404) +HANDLE_BAT(, 14405) +HANDLE_BAT(, 14406) +HANDLE_BAT(, 14407) +HANDLE_BAT(, 14408) +HANDLE_BAT(, 14409) +HANDLE_BAT(, 14410) +HANDLE_BAT(, 14411) +HANDLE_BAT(, 14412) +HANDLE_BAT(, 14413) +HANDLE_BAT(, 14414) +HANDLE_BAT(, 14415) +HANDLE_BAT(, 14416) +HANDLE_BAT(, 14417) +HANDLE_BAT(, 14418) +HANDLE_BAT(, 14419) +HANDLE_BAT(, 14420) +HANDLE_BAT(, 14421) +HANDLE_BAT(, 14422) +HANDLE_BAT(, 14423) +HANDLE_BAT(, 14424) +HANDLE_BAT(, 14425) +HANDLE_BAT(, 14426) +HANDLE_BAT(, 14427) +HANDLE_BAT(, 14428) +HANDLE_BAT(, 14429) +HANDLE_BAT(, 14430) +HANDLE_BAT(, 14431) +HANDLE_BAT(, 14432) +HANDLE_BAT(, 14433) +HANDLE_BAT(, 14434) +HANDLE_BAT(, 14435) +HANDLE_BAT(, 14436) +HANDLE_BAT(, 14437) +HANDLE_BAT(, 14438) +HANDLE_BAT(, 14439) +HANDLE_BAT(, 14440) +HANDLE_BAT(, 14441) +HANDLE_BAT(, 14442) +HANDLE_BAT(, 14443) +HANDLE_BAT(, 14444) +HANDLE_BAT(, 14445) +HANDLE_BAT(, 14446) +HANDLE_BAT(, 14447) +HANDLE_BAT(, 14448) +HANDLE_BAT(, 14449) +HANDLE_BAT(, 14450) +HANDLE_BAT(, 14451) +HANDLE_BAT(, 14452) +HANDLE_BAT(, 14453) +HANDLE_BAT(, 14454) +HANDLE_BAT(, 14455) +HANDLE_BAT(, 14456) +HANDLE_BAT(, 14457) +HANDLE_BAT(, 14458) +HANDLE_BAT(, 14459) +HANDLE_BAT(, 14460) +HANDLE_BAT(, 14461) +HANDLE_BAT(, 14462) +HANDLE_BAT(, 14463) +HANDLE_BAT(, 14464) +HANDLE_BAT(, 14465) +HANDLE_BAT(, 14466) +HANDLE_BAT(, 14467) +HANDLE_BAT(, 14468) +HANDLE_BAT(, 14469) +HANDLE_BAT(, 14470) +HANDLE_BAT(, 14471) +HANDLE_BAT(, 14472) +HANDLE_BAT(, 14473) +HANDLE_BAT(, 14474) +HANDLE_BAT(, 14475) +HANDLE_BAT(, 14476) +HANDLE_BAT(, 14477) +HANDLE_BAT(, 14478) +HANDLE_BAT(, 14479) +HANDLE_BAT(, 14480) +HANDLE_BAT(, 14481) +HANDLE_BAT(, 14482) +HANDLE_BAT(, 14483) +HANDLE_BAT(, 14484) +HANDLE_BAT(, 14485) +HANDLE_BAT(, 14486) +HANDLE_BAT(, 14487) +HANDLE_BAT(, 14488) +HANDLE_BAT(, 14489) +HANDLE_BAT(, 14490) +HANDLE_BAT(, 14491) +HANDLE_BAT(, 14492) +HANDLE_BAT(, 14493) +HANDLE_BAT(, 14494) +HANDLE_BAT(, 14495) +HANDLE_BAT(, 14496) +HANDLE_BAT(, 14497) +HANDLE_BAT(, 14498) +HANDLE_BAT(, 14499) +HANDLE_BAT(, 14500) +HANDLE_BAT(, 14501) +HANDLE_BAT(, 14502) +HANDLE_BAT(, 14503) +HANDLE_BAT(, 14504) +HANDLE_BAT(, 14505) +HANDLE_BAT(, 14506) +HANDLE_BAT(, 14507) +HANDLE_BAT(, 14508) +HANDLE_BAT(, 14509) +HANDLE_BAT(, 14510) +HANDLE_BAT(, 14511) +HANDLE_BAT(, 14512) +HANDLE_BAT(, 14513) +HANDLE_BAT(, 14514) +HANDLE_BAT(, 14515) +HANDLE_BAT(, 14516) +HANDLE_BAT(, 14517) +HANDLE_BAT(, 14518) +HANDLE_BAT(, 14519) +HANDLE_BAT(, 14520) +HANDLE_BAT(, 14521) +HANDLE_BAT(, 14522) +HANDLE_BAT(, 14523) +HANDLE_BAT(, 14524) +HANDLE_BAT(, 14525) +HANDLE_BAT(, 14526) +HANDLE_BAT(, 14527) +HANDLE_BAT(, 14528) +HANDLE_BAT(, 14529) +HANDLE_BAT(, 14530) +HANDLE_BAT(, 14531) +HANDLE_BAT(, 14532) +HANDLE_BAT(, 14533) +HANDLE_BAT(, 14534) +HANDLE_BAT(, 14535) +HANDLE_BAT(, 14536) +HANDLE_BAT(, 14537) +HANDLE_BAT(, 14538) +HANDLE_BAT(, 14539) +HANDLE_BAT(, 14540) +HANDLE_BAT(, 14541) +HANDLE_BAT(, 14542) +HANDLE_BAT(, 14543) +HANDLE_BAT(, 14544) +HANDLE_BAT(, 14545) +HANDLE_BAT(, 14546) +HANDLE_BAT(, 14547) +HANDLE_BAT(, 14548) +HANDLE_BAT(, 14549) +HANDLE_BAT(, 14550) +HANDLE_BAT(, 14551) +HANDLE_BAT(, 14552) +HANDLE_BAT(, 14553) +HANDLE_BAT(, 14554) +HANDLE_BAT(, 14555) +HANDLE_BAT(, 14556) +HANDLE_BAT(, 14557) +HANDLE_BAT(, 14558) +HANDLE_BAT(, 14559) +HANDLE_BAT(, 14560) +HANDLE_BAT(, 14561) +HANDLE_BAT(, 14562) +HANDLE_BAT(, 14563) +HANDLE_BAT(, 14564) +HANDLE_BAT(, 14565) +HANDLE_BAT(, 14566) +HANDLE_BAT(, 14567) +HANDLE_BAT(, 14568) +HANDLE_BAT(, 14569) +HANDLE_BAT(, 14570) +HANDLE_BAT(, 14571) +HANDLE_BAT(, 14572) +HANDLE_BAT(, 14573) +HANDLE_BAT(, 14574) +HANDLE_BAT(, 14575) +HANDLE_BAT(, 14576) +HANDLE_BAT(, 14577) +HANDLE_BAT(, 14578) +HANDLE_BAT(, 14579) +HANDLE_BAT(, 14580) +HANDLE_BAT(, 14581) +HANDLE_BAT(, 14582) +HANDLE_BAT(, 14583) +HANDLE_BAT(, 14584) +HANDLE_BAT(, 14585) +HANDLE_BAT(, 14586) +HANDLE_BAT(, 14587) +HANDLE_BAT(, 14588) +HANDLE_BAT(, 14589) +HANDLE_BAT(, 14590) +HANDLE_BAT(, 14591) +HANDLE_BAT(, 14592) +HANDLE_BAT(, 14593) +HANDLE_BAT(, 14594) +HANDLE_BAT(, 14595) +HANDLE_BAT(, 14596) +HANDLE_BAT(, 14597) +HANDLE_BAT(, 14598) +HANDLE_BAT(, 14599) +HANDLE_BAT(, 14600) +HANDLE_BAT(, 14601) +HANDLE_BAT(, 14602) +HANDLE_BAT(, 14603) +HANDLE_BAT(, 14604) +HANDLE_BAT(, 14605) +HANDLE_BAT(, 14606) +HANDLE_BAT(, 14607) +HANDLE_BAT(, 14608) +HANDLE_BAT(, 14609) +HANDLE_BAT(, 14610) +HANDLE_BAT(, 14611) +HANDLE_BAT(, 14612) +HANDLE_BAT(, 14613) +HANDLE_BAT(, 14614) +HANDLE_BAT(, 14615) +HANDLE_BAT(, 14616) +HANDLE_BAT(, 14617) +HANDLE_BAT(, 14618) +HANDLE_BAT(, 14619) +HANDLE_BAT(, 14620) +HANDLE_BAT(, 14621) +HANDLE_BAT(, 14622) +HANDLE_BAT(, 14623) +HANDLE_BAT(, 14624) +HANDLE_BAT(, 14625) +HANDLE_BAT(, 14626) +HANDLE_BAT(, 14627) +HANDLE_BAT(, 14628) +HANDLE_BAT(, 14629) +HANDLE_BAT(, 14630) +HANDLE_BAT(, 14631) +HANDLE_BAT(, 14632) +HANDLE_BAT(, 14633) +HANDLE_BAT(, 14634) +HANDLE_BAT(, 14635) +HANDLE_BAT(, 14636) +HANDLE_BAT(, 14637) +HANDLE_BAT(, 14638) +HANDLE_BAT(, 14639) +HANDLE_BAT(, 14640) +HANDLE_BAT(, 14641) +HANDLE_BAT(, 14642) +HANDLE_BAT(, 14643) +HANDLE_BAT(, 14644) +HANDLE_BAT(, 14645) +HANDLE_BAT(, 14646) +HANDLE_BAT(, 14647) +HANDLE_BAT(, 14648) +HANDLE_BAT(, 14649) +HANDLE_BAT(, 14650) +HANDLE_BAT(, 14651) +HANDLE_BAT(, 14652) +HANDLE_BAT(, 14653) +HANDLE_BAT(, 14654) +HANDLE_BAT(, 14655) +HANDLE_BAT(, 14656) +HANDLE_BAT(, 14657) +HANDLE_BAT(, 14658) +HANDLE_BAT(, 14659) +HANDLE_BAT(, 14660) +HANDLE_BAT(, 14661) +HANDLE_BAT(, 14662) +HANDLE_BAT(, 14663) +HANDLE_BAT(, 14664) +HANDLE_BAT(, 14665) +HANDLE_BAT(, 14666) +HANDLE_BAT(, 14667) +HANDLE_BAT(, 14668) +HANDLE_BAT(, 14669) +HANDLE_BAT(, 14670) +HANDLE_BAT(, 14671) +HANDLE_BAT(, 14672) +HANDLE_BAT(, 14673) +HANDLE_BAT(, 14674) +HANDLE_BAT(, 14675) +HANDLE_BAT(, 14676) +HANDLE_BAT(, 14677) +HANDLE_BAT(, 14678) +HANDLE_BAT(, 14679) +HANDLE_BAT(, 14680) +HANDLE_BAT(, 14681) +HANDLE_BAT(, 14682) +HANDLE_BAT(, 14683) +HANDLE_BAT(, 14684) +HANDLE_BAT(, 14685) +HANDLE_BAT(, 14686) +HANDLE_BAT(, 14687) +HANDLE_BAT(, 14688) +HANDLE_BAT(, 14689) +HANDLE_BAT(, 14690) +HANDLE_BAT(, 14691) +HANDLE_BAT(, 14692) +HANDLE_BAT(, 14693) +HANDLE_BAT(, 14694) +HANDLE_BAT(, 14695) +HANDLE_BAT(, 14696) +HANDLE_BAT(, 14697) +HANDLE_BAT(, 14698) +HANDLE_BAT(, 14699) +HANDLE_BAT(, 14700) +HANDLE_BAT(, 14701) +HANDLE_BAT(, 14702) +HANDLE_BAT(, 14703) +HANDLE_BAT(, 14704) +HANDLE_BAT(, 14705) +HANDLE_BAT(, 14706) +HANDLE_BAT(, 14707) +HANDLE_BAT(, 14708) +HANDLE_BAT(, 14709) +HANDLE_BAT(, 14710) +HANDLE_BAT(, 14711) +HANDLE_BAT(, 14712) +HANDLE_BAT(, 14713) +HANDLE_BAT(, 14714) +HANDLE_BAT(, 14715) +HANDLE_BAT(, 14716) +HANDLE_BAT(, 14717) +HANDLE_BAT(, 14718) +HANDLE_BAT(, 14719) +HANDLE_BAT(, 14720) +HANDLE_BAT(, 14721) +HANDLE_BAT(, 14722) +HANDLE_BAT(, 14723) +HANDLE_BAT(, 14724) +HANDLE_BAT(, 14725) +HANDLE_BAT(, 14726) +HANDLE_BAT(, 14727) +HANDLE_BAT(, 14728) +HANDLE_BAT(, 14729) +HANDLE_BAT(, 14730) +HANDLE_BAT(, 14731) +HANDLE_BAT(, 14732) +HANDLE_BAT(, 14733) +HANDLE_BAT(, 14734) +HANDLE_BAT(, 14735) +HANDLE_BAT(, 14736) +HANDLE_BAT(, 14737) +HANDLE_BAT(, 14738) +HANDLE_BAT(, 14739) +HANDLE_BAT(, 14740) +HANDLE_BAT(, 14741) +HANDLE_BAT(, 14742) +HANDLE_BAT(, 14743) +HANDLE_BAT(, 14744) +HANDLE_BAT(, 14745) +HANDLE_BAT(, 14746) +HANDLE_BAT(, 14747) +HANDLE_BAT(, 14748) +HANDLE_BAT(, 14749) +HANDLE_BAT(, 14750) +HANDLE_BAT(, 14751) +HANDLE_BAT(, 14752) +HANDLE_BAT(, 14753) +HANDLE_BAT(, 14754) +HANDLE_BAT(, 14755) +HANDLE_BAT(, 14756) +HANDLE_BAT(, 14757) +HANDLE_BAT(, 14758) +HANDLE_BAT(, 14759) +HANDLE_BAT(, 14760) +HANDLE_BAT(, 14761) +HANDLE_BAT(, 14762) +HANDLE_BAT(, 14763) +HANDLE_BAT(, 14764) +HANDLE_BAT(, 14765) +HANDLE_BAT(, 14766) +HANDLE_BAT(, 14767) +HANDLE_BAT(, 14768) +HANDLE_BAT(, 14769) +HANDLE_BAT(, 14770) +HANDLE_BAT(, 14771) +HANDLE_BAT(, 14772) +HANDLE_BAT(, 14773) +HANDLE_BAT(, 14774) +HANDLE_BAT(, 14775) +HANDLE_BAT(, 14776) +HANDLE_BAT(, 14777) +HANDLE_BAT(, 14778) +HANDLE_BAT(, 14779) +HANDLE_BAT(, 14780) +HANDLE_BAT(, 14781) +HANDLE_BAT(, 14782) +HANDLE_BAT(, 14783) +HANDLE_BAT(, 14784) +HANDLE_BAT(, 14785) +HANDLE_BAT(, 14786) +HANDLE_BAT(, 14787) +HANDLE_BAT(, 14788) +HANDLE_BAT(, 14789) +HANDLE_BAT(, 14790) +HANDLE_BAT(, 14791) +HANDLE_BAT(, 14792) +HANDLE_BAT(, 14793) +HANDLE_BAT(, 14794) +HANDLE_BAT(, 14795) +HANDLE_BAT(, 14796) +HANDLE_BAT(, 14797) +HANDLE_BAT(, 14798) +HANDLE_BAT(, 14799) +HANDLE_BAT(, 14800) +HANDLE_BAT(, 14801) +HANDLE_BAT(, 14802) +HANDLE_BAT(, 14803) +HANDLE_BAT(, 14804) +HANDLE_BAT(, 14805) +HANDLE_BAT(, 14806) +HANDLE_BAT(, 14807) +HANDLE_BAT(, 14808) +HANDLE_BAT(, 14809) +HANDLE_BAT(, 14810) +HANDLE_BAT(, 14811) +HANDLE_BAT(, 14812) +HANDLE_BAT(, 14813) +HANDLE_BAT(, 14814) +HANDLE_BAT(, 14815) +HANDLE_BAT(, 14816) +HANDLE_BAT(, 14817) +HANDLE_BAT(, 14818) +HANDLE_BAT(, 14819) +HANDLE_BAT(, 14820) +HANDLE_BAT(, 14821) +HANDLE_BAT(, 14822) +HANDLE_BAT(, 14823) +HANDLE_BAT(, 14824) +HANDLE_BAT(, 14825) +HANDLE_BAT(, 14826) +HANDLE_BAT(, 14827) +HANDLE_BAT(, 14828) +HANDLE_BAT(, 14829) +HANDLE_BAT(, 14830) +HANDLE_BAT(, 14831) +HANDLE_BAT(, 14832) +HANDLE_BAT(, 14833) +HANDLE_BAT(, 14834) +HANDLE_BAT(, 14835) +HANDLE_BAT(, 14836) +HANDLE_BAT(, 14837) +HANDLE_BAT(, 14838) +HANDLE_BAT(, 14839) +HANDLE_BAT(, 14840) +HANDLE_BAT(, 14841) +HANDLE_BAT(, 14842) +HANDLE_BAT(, 14843) +HANDLE_BAT(, 14844) +HANDLE_BAT(, 14845) +HANDLE_BAT(, 14846) +HANDLE_BAT(, 14847) +HANDLE_BAT(, 14848) +HANDLE_BAT(, 14849) +HANDLE_BAT(, 14850) +HANDLE_BAT(, 14851) +HANDLE_BAT(, 14852) +HANDLE_BAT(, 14853) +HANDLE_BAT(, 14854) +HANDLE_BAT(, 14855) +HANDLE_BAT(, 14856) +HANDLE_BAT(, 14857) +HANDLE_BAT(, 14858) +HANDLE_BAT(, 14859) +HANDLE_BAT(, 14860) +HANDLE_BAT(, 14861) +HANDLE_BAT(, 14862) +HANDLE_BAT(, 14863) +HANDLE_BAT(, 14864) +HANDLE_BAT(, 14865) +HANDLE_BAT(, 14866) +HANDLE_BAT(, 14867) +HANDLE_BAT(, 14868) +HANDLE_BAT(, 14869) +HANDLE_BAT(, 14870) +HANDLE_BAT(, 14871) +HANDLE_BAT(, 14872) +HANDLE_BAT(, 14873) +HANDLE_BAT(, 14874) +HANDLE_BAT(, 14875) +HANDLE_BAT(, 14876) +HANDLE_BAT(, 14877) +HANDLE_BAT(, 14878) +HANDLE_BAT(, 14879) +HANDLE_BAT(, 14880) +HANDLE_BAT(, 14881) +HANDLE_BAT(, 14882) +HANDLE_BAT(, 14883) +HANDLE_BAT(, 14884) +HANDLE_BAT(, 14885) +HANDLE_BAT(, 14886) +HANDLE_BAT(, 14887) +HANDLE_BAT(, 14888) +HANDLE_BAT(, 14889) +HANDLE_BAT(, 14890) +HANDLE_BAT(, 14891) +HANDLE_BAT(, 14892) +HANDLE_BAT(, 14893) +HANDLE_BAT(, 14894) +HANDLE_BAT(, 14895) +HANDLE_BAT(, 14896) +HANDLE_BAT(, 14897) +HANDLE_BAT(, 14898) +HANDLE_BAT(, 14899) +HANDLE_BAT(, 14900) +HANDLE_BAT(, 14901) +HANDLE_BAT(, 14902) +HANDLE_BAT(, 14903) +HANDLE_BAT(, 14904) +HANDLE_BAT(, 14905) +HANDLE_BAT(, 14906) +HANDLE_BAT(, 14907) +HANDLE_BAT(, 14908) +HANDLE_BAT(, 14909) +HANDLE_BAT(, 14910) +HANDLE_BAT(, 14911) +HANDLE_BAT(, 14912) +HANDLE_BAT(, 14913) +HANDLE_BAT(, 14914) +HANDLE_BAT(, 14915) +HANDLE_BAT(, 14916) +HANDLE_BAT(, 14917) +HANDLE_BAT(, 14918) +HANDLE_BAT(, 14919) +HANDLE_BAT(, 14920) +HANDLE_BAT(, 14921) +HANDLE_BAT(, 14922) +HANDLE_BAT(, 14923) +HANDLE_BAT(, 14924) +HANDLE_BAT(, 14925) +HANDLE_BAT(, 14926) +HANDLE_BAT(, 14927) +HANDLE_BAT(, 14928) +HANDLE_BAT(, 14929) +HANDLE_BAT(, 14930) +HANDLE_BAT(, 14931) +HANDLE_BAT(, 14932) +HANDLE_BAT(, 14933) +HANDLE_BAT(, 14934) +HANDLE_BAT(, 14935) +HANDLE_BAT(, 14936) +HANDLE_BAT(, 14937) +HANDLE_BAT(, 14938) +HANDLE_BAT(, 14939) +HANDLE_BAT(, 14940) +HANDLE_BAT(, 14941) +HANDLE_BAT(, 14942) +HANDLE_BAT(, 14943) +HANDLE_BAT(, 14944) +HANDLE_BAT(, 14945) +HANDLE_BAT(, 14946) +HANDLE_BAT(, 14947) +HANDLE_BAT(, 14948) +HANDLE_BAT(, 14949) +HANDLE_BAT(, 14950) +HANDLE_BAT(, 14951) +HANDLE_BAT(, 14952) +HANDLE_BAT(, 14953) +HANDLE_BAT(, 14954) +HANDLE_BAT(, 14955) +HANDLE_BAT(, 14956) +HANDLE_BAT(, 14957) +HANDLE_BAT(, 14958) +HANDLE_BAT(, 14959) +HANDLE_BAT(, 14960) +HANDLE_BAT(, 14961) +HANDLE_BAT(, 14962) +HANDLE_BAT(, 14963) +HANDLE_BAT(, 14964) +HANDLE_BAT(, 14965) +HANDLE_BAT(, 14966) +HANDLE_BAT(, 14967) +HANDLE_BAT(, 14968) +HANDLE_BAT(, 14969) +HANDLE_BAT(, 14970) +HANDLE_BAT(, 14971) +HANDLE_BAT(, 14972) +HANDLE_BAT(, 14973) +HANDLE_BAT(, 14974) +HANDLE_BAT(, 14975) +HANDLE_BAT(, 14976) +HANDLE_BAT(, 14977) +HANDLE_BAT(, 14978) +HANDLE_BAT(, 14979) +HANDLE_BAT(, 14980) +HANDLE_BAT(, 14981) +HANDLE_BAT(, 14982) +HANDLE_BAT(, 14983) +HANDLE_BAT(, 14984) +HANDLE_BAT(, 14985) +HANDLE_BAT(, 14986) +HANDLE_BAT(, 14987) +HANDLE_BAT(, 14988) +HANDLE_BAT(, 14989) +HANDLE_BAT(, 14990) +HANDLE_BAT(, 14991) +HANDLE_BAT(, 14992) +HANDLE_BAT(, 14993) +HANDLE_BAT(, 14994) +HANDLE_BAT(, 14995) +HANDLE_BAT(, 14996) +HANDLE_BAT(, 14997) +HANDLE_BAT(, 14998) +HANDLE_BAT(, 14999) +HANDLE_BAT(, 15000) +HANDLE_BAT(, 15001) +HANDLE_BAT(, 15002) +HANDLE_BAT(, 15003) +HANDLE_BAT(, 15004) +HANDLE_BAT(, 15005) +HANDLE_BAT(, 15006) +HANDLE_BAT(, 15007) +HANDLE_BAT(, 15008) +HANDLE_BAT(, 15009) +HANDLE_BAT(, 15010) +HANDLE_BAT(, 15011) +HANDLE_BAT(, 15012) +HANDLE_BAT(, 15013) +HANDLE_BAT(, 15014) +HANDLE_BAT(, 15015) +HANDLE_BAT(, 15016) +HANDLE_BAT(, 15017) +HANDLE_BAT(, 15018) +HANDLE_BAT(, 15019) +HANDLE_BAT(, 15020) +HANDLE_BAT(, 15021) +HANDLE_BAT(, 15022) +HANDLE_BAT(, 15023) +HANDLE_BAT(, 15024) +HANDLE_BAT(, 15025) +HANDLE_BAT(, 15026) +HANDLE_BAT(, 15027) +HANDLE_BAT(, 15028) +HANDLE_BAT(, 15029) +HANDLE_BAT(, 15030) +HANDLE_BAT(, 15031) +HANDLE_BAT(, 15032) +HANDLE_BAT(, 15033) +HANDLE_BAT(, 15034) +HANDLE_BAT(, 15035) +HANDLE_BAT(, 15036) +HANDLE_BAT(, 15037) +HANDLE_BAT(, 15038) +HANDLE_BAT(, 15039) +HANDLE_BAT(, 15040) +HANDLE_BAT(, 15041) +HANDLE_BAT(, 15042) +HANDLE_BAT(, 15043) +HANDLE_BAT(, 15044) +HANDLE_BAT(, 15045) +HANDLE_BAT(, 15046) +HANDLE_BAT(, 15047) +HANDLE_BAT(, 15048) +HANDLE_BAT(, 15049) +HANDLE_BAT(, 15050) +HANDLE_BAT(, 15051) +HANDLE_BAT(, 15052) +HANDLE_BAT(, 15053) +HANDLE_BAT(, 15054) +HANDLE_BAT(, 15055) +HANDLE_BAT(, 15056) +HANDLE_BAT(, 15057) +HANDLE_BAT(, 15058) +HANDLE_BAT(, 15059) +HANDLE_BAT(, 15060) +HANDLE_BAT(, 15061) +HANDLE_BAT(, 15062) +HANDLE_BAT(, 15063) +HANDLE_BAT(, 15064) +HANDLE_BAT(, 15065) +HANDLE_BAT(, 15066) +HANDLE_BAT(, 15067) +HANDLE_BAT(, 15068) +HANDLE_BAT(, 15069) +HANDLE_BAT(, 15070) +HANDLE_BAT(, 15071) +HANDLE_BAT(, 15072) +HANDLE_BAT(, 15073) +HANDLE_BAT(, 15074) +HANDLE_BAT(, 15075) +HANDLE_BAT(, 15076) +HANDLE_BAT(, 15077) +HANDLE_BAT(, 15078) +HANDLE_BAT(, 15079) +HANDLE_BAT(, 15080) +HANDLE_BAT(, 15081) +HANDLE_BAT(, 15082) +HANDLE_BAT(, 15083) +HANDLE_BAT(, 15084) +HANDLE_BAT(, 15085) +HANDLE_BAT(, 15086) +HANDLE_BAT(, 15087) +HANDLE_BAT(, 15088) +HANDLE_BAT(, 15089) +HANDLE_BAT(, 15090) +HANDLE_BAT(, 15091) +HANDLE_BAT(, 15092) +HANDLE_BAT(, 15093) +HANDLE_BAT(, 15094) +HANDLE_BAT(, 15095) +HANDLE_BAT(, 15096) +HANDLE_BAT(, 15097) +HANDLE_BAT(, 15098) +HANDLE_BAT(, 15099) +HANDLE_BAT(, 15100) +HANDLE_BAT(, 15101) +HANDLE_BAT(, 15102) +HANDLE_BAT(, 15103) +HANDLE_BAT(, 15104) +HANDLE_BAT(, 15105) +HANDLE_BAT(, 15106) +HANDLE_BAT(, 15107) +HANDLE_BAT(, 15108) +HANDLE_BAT(, 15109) +HANDLE_BAT(, 15110) +HANDLE_BAT(, 15111) +HANDLE_BAT(, 15112) +HANDLE_BAT(, 15113) +HANDLE_BAT(, 15114) +HANDLE_BAT(, 15115) +HANDLE_BAT(, 15116) +HANDLE_BAT(, 15117) +HANDLE_BAT(, 15118) +HANDLE_BAT(, 15119) +HANDLE_BAT(, 15120) +HANDLE_BAT(, 15121) +HANDLE_BAT(, 15122) +HANDLE_BAT(, 15123) +HANDLE_BAT(, 15124) +HANDLE_BAT(, 15125) +HANDLE_BAT(, 15126) +HANDLE_BAT(, 15127) +HANDLE_BAT(, 15128) +HANDLE_BAT(, 15129) +HANDLE_BAT(, 15130) +HANDLE_BAT(, 15131) +HANDLE_BAT(, 15132) +HANDLE_BAT(, 15133) +HANDLE_BAT(, 15134) +HANDLE_BAT(, 15135) +HANDLE_BAT(, 15136) +HANDLE_BAT(, 15137) +HANDLE_BAT(, 15138) +HANDLE_BAT(, 15139) +HANDLE_BAT(, 15140) +HANDLE_BAT(, 15141) +HANDLE_BAT(, 15142) +HANDLE_BAT(, 15143) +HANDLE_BAT(, 15144) +HANDLE_BAT(, 15145) +HANDLE_BAT(, 15146) +HANDLE_BAT(, 15147) +HANDLE_BAT(, 15148) +HANDLE_BAT(, 15149) +HANDLE_BAT(, 15150) +HANDLE_BAT(, 15151) +HANDLE_BAT(, 15152) +HANDLE_BAT(, 15153) +HANDLE_BAT(, 15154) +HANDLE_BAT(, 15155) +HANDLE_BAT(, 15156) +HANDLE_BAT(, 15157) +HANDLE_BAT(, 15158) +HANDLE_BAT(, 15159) +HANDLE_BAT(, 15160) +HANDLE_BAT(, 15161) +HANDLE_BAT(, 15162) +HANDLE_BAT(, 15163) +HANDLE_BAT(, 15164) +HANDLE_BAT(, 15165) +HANDLE_BAT(, 15166) +HANDLE_BAT(, 15167) +HANDLE_BAT(, 15168) +HANDLE_BAT(, 15169) +HANDLE_BAT(, 15170) +HANDLE_BAT(, 15171) +HANDLE_BAT(, 15172) +HANDLE_BAT(, 15173) +HANDLE_BAT(, 15174) +HANDLE_BAT(, 15175) +HANDLE_BAT(, 15176) +HANDLE_BAT(, 15177) +HANDLE_BAT(, 15178) +HANDLE_BAT(, 15179) +HANDLE_BAT(, 15180) +HANDLE_BAT(, 15181) +HANDLE_BAT(, 15182) +HANDLE_BAT(, 15183) +HANDLE_BAT(, 15184) +HANDLE_BAT(, 15185) +HANDLE_BAT(, 15186) +HANDLE_BAT(, 15187) +HANDLE_BAT(, 15188) +HANDLE_BAT(, 15189) +HANDLE_BAT(, 15190) +HANDLE_BAT(, 15191) +HANDLE_BAT(, 15192) +HANDLE_BAT(, 15193) +HANDLE_BAT(, 15194) +HANDLE_BAT(, 15195) +HANDLE_BAT(, 15196) +HANDLE_BAT(, 15197) +HANDLE_BAT(, 15198) +HANDLE_BAT(, 15199) +HANDLE_BAT(, 15200) +HANDLE_BAT(, 15201) +HANDLE_BAT(, 15202) +HANDLE_BAT(, 15203) +HANDLE_BAT(, 15204) +HANDLE_BAT(, 15205) +HANDLE_BAT(, 15206) +HANDLE_BAT(, 15207) +HANDLE_BAT(, 15208) +HANDLE_BAT(, 15209) +HANDLE_BAT(, 15210) +HANDLE_BAT(, 15211) +HANDLE_BAT(, 15212) +HANDLE_BAT(, 15213) +HANDLE_BAT(, 15214) +HANDLE_BAT(, 15215) +HANDLE_BAT(, 15216) +HANDLE_BAT(, 15217) +HANDLE_BAT(, 15218) +HANDLE_BAT(, 15219) +HANDLE_BAT(, 15220) +HANDLE_BAT(, 15221) +HANDLE_BAT(, 15222) +HANDLE_BAT(, 15223) +HANDLE_BAT(, 15224) +HANDLE_BAT(, 15225) +HANDLE_BAT(, 15226) +HANDLE_BAT(, 15227) +HANDLE_BAT(, 15228) +HANDLE_BAT(, 15229) +HANDLE_BAT(, 15230) +HANDLE_BAT(, 15231) +HANDLE_BAT(, 15232) +HANDLE_BAT(, 15233) +HANDLE_BAT(, 15234) +HANDLE_BAT(, 15235) +HANDLE_BAT(, 15236) +HANDLE_BAT(, 15237) +HANDLE_BAT(, 15238) +HANDLE_BAT(, 15239) +HANDLE_BAT(, 15240) +HANDLE_BAT(, 15241) +HANDLE_BAT(, 15242) +HANDLE_BAT(, 15243) +HANDLE_BAT(, 15244) +HANDLE_BAT(, 15245) +HANDLE_BAT(, 15246) +HANDLE_BAT(, 15247) +HANDLE_BAT(, 15248) +HANDLE_BAT(, 15249) +HANDLE_BAT(, 15250) +HANDLE_BAT(, 15251) +HANDLE_BAT(, 15252) +HANDLE_BAT(, 15253) +HANDLE_BAT(, 15254) +HANDLE_BAT(, 15255) +HANDLE_BAT(, 15256) +HANDLE_BAT(, 15257) +HANDLE_BAT(, 15258) +HANDLE_BAT(, 15259) +HANDLE_BAT(, 15260) +HANDLE_BAT(, 15261) +HANDLE_BAT(, 15262) +HANDLE_BAT(, 15263) +HANDLE_BAT(, 15264) +HANDLE_BAT(, 15265) +HANDLE_BAT(, 15266) +HANDLE_BAT(, 15267) +HANDLE_BAT(, 15268) +HANDLE_BAT(, 15269) +HANDLE_BAT(, 15270) +HANDLE_BAT(, 15271) +HANDLE_BAT(, 15272) +HANDLE_BAT(, 15273) +HANDLE_BAT(, 15274) +HANDLE_BAT(, 15275) +HANDLE_BAT(, 15276) +HANDLE_BAT(, 15277) +HANDLE_BAT(, 15278) +HANDLE_BAT(, 15279) +HANDLE_BAT(, 15280) +HANDLE_BAT(, 15281) +HANDLE_BAT(, 15282) +HANDLE_BAT(, 15283) +HANDLE_BAT(, 15284) +HANDLE_BAT(, 15285) +HANDLE_BAT(, 15286) +HANDLE_BAT(, 15287) +HANDLE_BAT(, 15288) +HANDLE_BAT(, 15289) +HANDLE_BAT(, 15290) +HANDLE_BAT(, 15291) +HANDLE_BAT(, 15292) +HANDLE_BAT(, 15293) +HANDLE_BAT(, 15294) +HANDLE_BAT(, 15295) +HANDLE_BAT(, 15296) +HANDLE_BAT(, 15297) +HANDLE_BAT(, 15298) +HANDLE_BAT(, 15299) +HANDLE_BAT(, 15300) +HANDLE_BAT(, 15301) +HANDLE_BAT(, 15302) +HANDLE_BAT(, 15303) +HANDLE_BAT(, 15304) +HANDLE_BAT(, 15305) +HANDLE_BAT(, 15306) +HANDLE_BAT(, 15307) +HANDLE_BAT(, 15308) +HANDLE_BAT(, 15309) +HANDLE_BAT(, 15310) +HANDLE_BAT(, 15311) +HANDLE_BAT(, 15312) +HANDLE_BAT(, 15313) +HANDLE_BAT(, 15314) +HANDLE_BAT(, 15315) +HANDLE_BAT(, 15316) +HANDLE_BAT(, 15317) +HANDLE_BAT(, 15318) +HANDLE_BAT(, 15319) +HANDLE_BAT(, 15320) +HANDLE_BAT(, 15321) +HANDLE_BAT(, 15322) +HANDLE_BAT(, 15323) +HANDLE_BAT(, 15324) +HANDLE_BAT(, 15325) +HANDLE_BAT(, 15326) +HANDLE_BAT(, 15327) +HANDLE_BAT(, 15328) +HANDLE_BAT(, 15329) +HANDLE_BAT(, 15330) +HANDLE_BAT(, 15331) +HANDLE_BAT(, 15332) +HANDLE_BAT(, 15333) +HANDLE_BAT(, 15334) +HANDLE_BAT(, 15335) +HANDLE_BAT(, 15336) +HANDLE_BAT(, 15337) +HANDLE_BAT(, 15338) +HANDLE_BAT(, 15339) +HANDLE_BAT(, 15340) +HANDLE_BAT(, 15341) +HANDLE_BAT(, 15342) +HANDLE_BAT(, 15343) +HANDLE_BAT(, 15344) +HANDLE_BAT(, 15345) +HANDLE_BAT(, 15346) +HANDLE_BAT(, 15347) +HANDLE_BAT(, 15348) +HANDLE_BAT(, 15349) +HANDLE_BAT(, 15350) +HANDLE_BAT(, 15351) +HANDLE_BAT(, 15352) +HANDLE_BAT(, 15353) +HANDLE_BAT(, 15354) +HANDLE_BAT(, 15355) +HANDLE_BAT(, 15356) +HANDLE_BAT(, 15357) +HANDLE_BAT(, 15358) +HANDLE_BAT(, 15359) +HANDLE_BAT(, 15360) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 14337) +HANDLE_BAT(APINT_TYPE_PREFIX, 14338) +HANDLE_BAT(APINT_TYPE_PREFIX, 14339) +HANDLE_BAT(APINT_TYPE_PREFIX, 14340) +HANDLE_BAT(APINT_TYPE_PREFIX, 14341) +HANDLE_BAT(APINT_TYPE_PREFIX, 14342) +HANDLE_BAT(APINT_TYPE_PREFIX, 14343) +HANDLE_BAT(APINT_TYPE_PREFIX, 14344) +HANDLE_BAT(APINT_TYPE_PREFIX, 14345) +HANDLE_BAT(APINT_TYPE_PREFIX, 14346) +HANDLE_BAT(APINT_TYPE_PREFIX, 14347) +HANDLE_BAT(APINT_TYPE_PREFIX, 14348) +HANDLE_BAT(APINT_TYPE_PREFIX, 14349) +HANDLE_BAT(APINT_TYPE_PREFIX, 14350) +HANDLE_BAT(APINT_TYPE_PREFIX, 14351) +HANDLE_BAT(APINT_TYPE_PREFIX, 14352) +HANDLE_BAT(APINT_TYPE_PREFIX, 14353) +HANDLE_BAT(APINT_TYPE_PREFIX, 14354) +HANDLE_BAT(APINT_TYPE_PREFIX, 14355) +HANDLE_BAT(APINT_TYPE_PREFIX, 14356) +HANDLE_BAT(APINT_TYPE_PREFIX, 14357) +HANDLE_BAT(APINT_TYPE_PREFIX, 14358) +HANDLE_BAT(APINT_TYPE_PREFIX, 14359) +HANDLE_BAT(APINT_TYPE_PREFIX, 14360) +HANDLE_BAT(APINT_TYPE_PREFIX, 14361) +HANDLE_BAT(APINT_TYPE_PREFIX, 14362) +HANDLE_BAT(APINT_TYPE_PREFIX, 14363) +HANDLE_BAT(APINT_TYPE_PREFIX, 14364) +HANDLE_BAT(APINT_TYPE_PREFIX, 14365) +HANDLE_BAT(APINT_TYPE_PREFIX, 14366) +HANDLE_BAT(APINT_TYPE_PREFIX, 14367) +HANDLE_BAT(APINT_TYPE_PREFIX, 14368) +HANDLE_BAT(APINT_TYPE_PREFIX, 14369) +HANDLE_BAT(APINT_TYPE_PREFIX, 14370) +HANDLE_BAT(APINT_TYPE_PREFIX, 14371) +HANDLE_BAT(APINT_TYPE_PREFIX, 14372) +HANDLE_BAT(APINT_TYPE_PREFIX, 14373) +HANDLE_BAT(APINT_TYPE_PREFIX, 14374) +HANDLE_BAT(APINT_TYPE_PREFIX, 14375) +HANDLE_BAT(APINT_TYPE_PREFIX, 14376) +HANDLE_BAT(APINT_TYPE_PREFIX, 14377) +HANDLE_BAT(APINT_TYPE_PREFIX, 14378) +HANDLE_BAT(APINT_TYPE_PREFIX, 14379) +HANDLE_BAT(APINT_TYPE_PREFIX, 14380) +HANDLE_BAT(APINT_TYPE_PREFIX, 14381) +HANDLE_BAT(APINT_TYPE_PREFIX, 14382) +HANDLE_BAT(APINT_TYPE_PREFIX, 14383) +HANDLE_BAT(APINT_TYPE_PREFIX, 14384) +HANDLE_BAT(APINT_TYPE_PREFIX, 14385) +HANDLE_BAT(APINT_TYPE_PREFIX, 14386) +HANDLE_BAT(APINT_TYPE_PREFIX, 14387) +HANDLE_BAT(APINT_TYPE_PREFIX, 14388) +HANDLE_BAT(APINT_TYPE_PREFIX, 14389) +HANDLE_BAT(APINT_TYPE_PREFIX, 14390) +HANDLE_BAT(APINT_TYPE_PREFIX, 14391) +HANDLE_BAT(APINT_TYPE_PREFIX, 14392) +HANDLE_BAT(APINT_TYPE_PREFIX, 14393) +HANDLE_BAT(APINT_TYPE_PREFIX, 14394) +HANDLE_BAT(APINT_TYPE_PREFIX, 14395) +HANDLE_BAT(APINT_TYPE_PREFIX, 14396) +HANDLE_BAT(APINT_TYPE_PREFIX, 14397) +HANDLE_BAT(APINT_TYPE_PREFIX, 14398) +HANDLE_BAT(APINT_TYPE_PREFIX, 14399) +HANDLE_BAT(APINT_TYPE_PREFIX, 14400) +HANDLE_BAT(APINT_TYPE_PREFIX, 14401) +HANDLE_BAT(APINT_TYPE_PREFIX, 14402) +HANDLE_BAT(APINT_TYPE_PREFIX, 14403) +HANDLE_BAT(APINT_TYPE_PREFIX, 14404) +HANDLE_BAT(APINT_TYPE_PREFIX, 14405) +HANDLE_BAT(APINT_TYPE_PREFIX, 14406) +HANDLE_BAT(APINT_TYPE_PREFIX, 14407) +HANDLE_BAT(APINT_TYPE_PREFIX, 14408) +HANDLE_BAT(APINT_TYPE_PREFIX, 14409) +HANDLE_BAT(APINT_TYPE_PREFIX, 14410) +HANDLE_BAT(APINT_TYPE_PREFIX, 14411) +HANDLE_BAT(APINT_TYPE_PREFIX, 14412) +HANDLE_BAT(APINT_TYPE_PREFIX, 14413) +HANDLE_BAT(APINT_TYPE_PREFIX, 14414) +HANDLE_BAT(APINT_TYPE_PREFIX, 14415) +HANDLE_BAT(APINT_TYPE_PREFIX, 14416) +HANDLE_BAT(APINT_TYPE_PREFIX, 14417) +HANDLE_BAT(APINT_TYPE_PREFIX, 14418) +HANDLE_BAT(APINT_TYPE_PREFIX, 14419) +HANDLE_BAT(APINT_TYPE_PREFIX, 14420) +HANDLE_BAT(APINT_TYPE_PREFIX, 14421) +HANDLE_BAT(APINT_TYPE_PREFIX, 14422) +HANDLE_BAT(APINT_TYPE_PREFIX, 14423) +HANDLE_BAT(APINT_TYPE_PREFIX, 14424) +HANDLE_BAT(APINT_TYPE_PREFIX, 14425) +HANDLE_BAT(APINT_TYPE_PREFIX, 14426) +HANDLE_BAT(APINT_TYPE_PREFIX, 14427) +HANDLE_BAT(APINT_TYPE_PREFIX, 14428) +HANDLE_BAT(APINT_TYPE_PREFIX, 14429) +HANDLE_BAT(APINT_TYPE_PREFIX, 14430) +HANDLE_BAT(APINT_TYPE_PREFIX, 14431) +HANDLE_BAT(APINT_TYPE_PREFIX, 14432) +HANDLE_BAT(APINT_TYPE_PREFIX, 14433) +HANDLE_BAT(APINT_TYPE_PREFIX, 14434) +HANDLE_BAT(APINT_TYPE_PREFIX, 14435) +HANDLE_BAT(APINT_TYPE_PREFIX, 14436) +HANDLE_BAT(APINT_TYPE_PREFIX, 14437) +HANDLE_BAT(APINT_TYPE_PREFIX, 14438) +HANDLE_BAT(APINT_TYPE_PREFIX, 14439) +HANDLE_BAT(APINT_TYPE_PREFIX, 14440) +HANDLE_BAT(APINT_TYPE_PREFIX, 14441) +HANDLE_BAT(APINT_TYPE_PREFIX, 14442) +HANDLE_BAT(APINT_TYPE_PREFIX, 14443) +HANDLE_BAT(APINT_TYPE_PREFIX, 14444) +HANDLE_BAT(APINT_TYPE_PREFIX, 14445) +HANDLE_BAT(APINT_TYPE_PREFIX, 14446) +HANDLE_BAT(APINT_TYPE_PREFIX, 14447) +HANDLE_BAT(APINT_TYPE_PREFIX, 14448) +HANDLE_BAT(APINT_TYPE_PREFIX, 14449) +HANDLE_BAT(APINT_TYPE_PREFIX, 14450) +HANDLE_BAT(APINT_TYPE_PREFIX, 14451) +HANDLE_BAT(APINT_TYPE_PREFIX, 14452) +HANDLE_BAT(APINT_TYPE_PREFIX, 14453) +HANDLE_BAT(APINT_TYPE_PREFIX, 14454) +HANDLE_BAT(APINT_TYPE_PREFIX, 14455) +HANDLE_BAT(APINT_TYPE_PREFIX, 14456) +HANDLE_BAT(APINT_TYPE_PREFIX, 14457) +HANDLE_BAT(APINT_TYPE_PREFIX, 14458) +HANDLE_BAT(APINT_TYPE_PREFIX, 14459) +HANDLE_BAT(APINT_TYPE_PREFIX, 14460) +HANDLE_BAT(APINT_TYPE_PREFIX, 14461) +HANDLE_BAT(APINT_TYPE_PREFIX, 14462) +HANDLE_BAT(APINT_TYPE_PREFIX, 14463) +HANDLE_BAT(APINT_TYPE_PREFIX, 14464) +HANDLE_BAT(APINT_TYPE_PREFIX, 14465) +HANDLE_BAT(APINT_TYPE_PREFIX, 14466) +HANDLE_BAT(APINT_TYPE_PREFIX, 14467) +HANDLE_BAT(APINT_TYPE_PREFIX, 14468) +HANDLE_BAT(APINT_TYPE_PREFIX, 14469) +HANDLE_BAT(APINT_TYPE_PREFIX, 14470) +HANDLE_BAT(APINT_TYPE_PREFIX, 14471) +HANDLE_BAT(APINT_TYPE_PREFIX, 14472) +HANDLE_BAT(APINT_TYPE_PREFIX, 14473) +HANDLE_BAT(APINT_TYPE_PREFIX, 14474) +HANDLE_BAT(APINT_TYPE_PREFIX, 14475) +HANDLE_BAT(APINT_TYPE_PREFIX, 14476) +HANDLE_BAT(APINT_TYPE_PREFIX, 14477) +HANDLE_BAT(APINT_TYPE_PREFIX, 14478) +HANDLE_BAT(APINT_TYPE_PREFIX, 14479) +HANDLE_BAT(APINT_TYPE_PREFIX, 14480) +HANDLE_BAT(APINT_TYPE_PREFIX, 14481) +HANDLE_BAT(APINT_TYPE_PREFIX, 14482) +HANDLE_BAT(APINT_TYPE_PREFIX, 14483) +HANDLE_BAT(APINT_TYPE_PREFIX, 14484) +HANDLE_BAT(APINT_TYPE_PREFIX, 14485) +HANDLE_BAT(APINT_TYPE_PREFIX, 14486) +HANDLE_BAT(APINT_TYPE_PREFIX, 14487) +HANDLE_BAT(APINT_TYPE_PREFIX, 14488) +HANDLE_BAT(APINT_TYPE_PREFIX, 14489) +HANDLE_BAT(APINT_TYPE_PREFIX, 14490) +HANDLE_BAT(APINT_TYPE_PREFIX, 14491) +HANDLE_BAT(APINT_TYPE_PREFIX, 14492) +HANDLE_BAT(APINT_TYPE_PREFIX, 14493) +HANDLE_BAT(APINT_TYPE_PREFIX, 14494) +HANDLE_BAT(APINT_TYPE_PREFIX, 14495) +HANDLE_BAT(APINT_TYPE_PREFIX, 14496) +HANDLE_BAT(APINT_TYPE_PREFIX, 14497) +HANDLE_BAT(APINT_TYPE_PREFIX, 14498) +HANDLE_BAT(APINT_TYPE_PREFIX, 14499) +HANDLE_BAT(APINT_TYPE_PREFIX, 14500) +HANDLE_BAT(APINT_TYPE_PREFIX, 14501) +HANDLE_BAT(APINT_TYPE_PREFIX, 14502) +HANDLE_BAT(APINT_TYPE_PREFIX, 14503) +HANDLE_BAT(APINT_TYPE_PREFIX, 14504) +HANDLE_BAT(APINT_TYPE_PREFIX, 14505) +HANDLE_BAT(APINT_TYPE_PREFIX, 14506) +HANDLE_BAT(APINT_TYPE_PREFIX, 14507) +HANDLE_BAT(APINT_TYPE_PREFIX, 14508) +HANDLE_BAT(APINT_TYPE_PREFIX, 14509) +HANDLE_BAT(APINT_TYPE_PREFIX, 14510) +HANDLE_BAT(APINT_TYPE_PREFIX, 14511) +HANDLE_BAT(APINT_TYPE_PREFIX, 14512) +HANDLE_BAT(APINT_TYPE_PREFIX, 14513) +HANDLE_BAT(APINT_TYPE_PREFIX, 14514) +HANDLE_BAT(APINT_TYPE_PREFIX, 14515) +HANDLE_BAT(APINT_TYPE_PREFIX, 14516) +HANDLE_BAT(APINT_TYPE_PREFIX, 14517) +HANDLE_BAT(APINT_TYPE_PREFIX, 14518) +HANDLE_BAT(APINT_TYPE_PREFIX, 14519) +HANDLE_BAT(APINT_TYPE_PREFIX, 14520) +HANDLE_BAT(APINT_TYPE_PREFIX, 14521) +HANDLE_BAT(APINT_TYPE_PREFIX, 14522) +HANDLE_BAT(APINT_TYPE_PREFIX, 14523) +HANDLE_BAT(APINT_TYPE_PREFIX, 14524) +HANDLE_BAT(APINT_TYPE_PREFIX, 14525) +HANDLE_BAT(APINT_TYPE_PREFIX, 14526) +HANDLE_BAT(APINT_TYPE_PREFIX, 14527) +HANDLE_BAT(APINT_TYPE_PREFIX, 14528) +HANDLE_BAT(APINT_TYPE_PREFIX, 14529) +HANDLE_BAT(APINT_TYPE_PREFIX, 14530) +HANDLE_BAT(APINT_TYPE_PREFIX, 14531) +HANDLE_BAT(APINT_TYPE_PREFIX, 14532) +HANDLE_BAT(APINT_TYPE_PREFIX, 14533) +HANDLE_BAT(APINT_TYPE_PREFIX, 14534) +HANDLE_BAT(APINT_TYPE_PREFIX, 14535) +HANDLE_BAT(APINT_TYPE_PREFIX, 14536) +HANDLE_BAT(APINT_TYPE_PREFIX, 14537) +HANDLE_BAT(APINT_TYPE_PREFIX, 14538) +HANDLE_BAT(APINT_TYPE_PREFIX, 14539) +HANDLE_BAT(APINT_TYPE_PREFIX, 14540) +HANDLE_BAT(APINT_TYPE_PREFIX, 14541) +HANDLE_BAT(APINT_TYPE_PREFIX, 14542) +HANDLE_BAT(APINT_TYPE_PREFIX, 14543) +HANDLE_BAT(APINT_TYPE_PREFIX, 14544) +HANDLE_BAT(APINT_TYPE_PREFIX, 14545) +HANDLE_BAT(APINT_TYPE_PREFIX, 14546) +HANDLE_BAT(APINT_TYPE_PREFIX, 14547) +HANDLE_BAT(APINT_TYPE_PREFIX, 14548) +HANDLE_BAT(APINT_TYPE_PREFIX, 14549) +HANDLE_BAT(APINT_TYPE_PREFIX, 14550) +HANDLE_BAT(APINT_TYPE_PREFIX, 14551) +HANDLE_BAT(APINT_TYPE_PREFIX, 14552) +HANDLE_BAT(APINT_TYPE_PREFIX, 14553) +HANDLE_BAT(APINT_TYPE_PREFIX, 14554) +HANDLE_BAT(APINT_TYPE_PREFIX, 14555) +HANDLE_BAT(APINT_TYPE_PREFIX, 14556) +HANDLE_BAT(APINT_TYPE_PREFIX, 14557) +HANDLE_BAT(APINT_TYPE_PREFIX, 14558) +HANDLE_BAT(APINT_TYPE_PREFIX, 14559) +HANDLE_BAT(APINT_TYPE_PREFIX, 14560) +HANDLE_BAT(APINT_TYPE_PREFIX, 14561) +HANDLE_BAT(APINT_TYPE_PREFIX, 14562) +HANDLE_BAT(APINT_TYPE_PREFIX, 14563) +HANDLE_BAT(APINT_TYPE_PREFIX, 14564) +HANDLE_BAT(APINT_TYPE_PREFIX, 14565) +HANDLE_BAT(APINT_TYPE_PREFIX, 14566) +HANDLE_BAT(APINT_TYPE_PREFIX, 14567) +HANDLE_BAT(APINT_TYPE_PREFIX, 14568) +HANDLE_BAT(APINT_TYPE_PREFIX, 14569) +HANDLE_BAT(APINT_TYPE_PREFIX, 14570) +HANDLE_BAT(APINT_TYPE_PREFIX, 14571) +HANDLE_BAT(APINT_TYPE_PREFIX, 14572) +HANDLE_BAT(APINT_TYPE_PREFIX, 14573) +HANDLE_BAT(APINT_TYPE_PREFIX, 14574) +HANDLE_BAT(APINT_TYPE_PREFIX, 14575) +HANDLE_BAT(APINT_TYPE_PREFIX, 14576) +HANDLE_BAT(APINT_TYPE_PREFIX, 14577) +HANDLE_BAT(APINT_TYPE_PREFIX, 14578) +HANDLE_BAT(APINT_TYPE_PREFIX, 14579) +HANDLE_BAT(APINT_TYPE_PREFIX, 14580) +HANDLE_BAT(APINT_TYPE_PREFIX, 14581) +HANDLE_BAT(APINT_TYPE_PREFIX, 14582) +HANDLE_BAT(APINT_TYPE_PREFIX, 14583) +HANDLE_BAT(APINT_TYPE_PREFIX, 14584) +HANDLE_BAT(APINT_TYPE_PREFIX, 14585) +HANDLE_BAT(APINT_TYPE_PREFIX, 14586) +HANDLE_BAT(APINT_TYPE_PREFIX, 14587) +HANDLE_BAT(APINT_TYPE_PREFIX, 14588) +HANDLE_BAT(APINT_TYPE_PREFIX, 14589) +HANDLE_BAT(APINT_TYPE_PREFIX, 14590) +HANDLE_BAT(APINT_TYPE_PREFIX, 14591) +HANDLE_BAT(APINT_TYPE_PREFIX, 14592) +HANDLE_BAT(APINT_TYPE_PREFIX, 14593) +HANDLE_BAT(APINT_TYPE_PREFIX, 14594) +HANDLE_BAT(APINT_TYPE_PREFIX, 14595) +HANDLE_BAT(APINT_TYPE_PREFIX, 14596) +HANDLE_BAT(APINT_TYPE_PREFIX, 14597) +HANDLE_BAT(APINT_TYPE_PREFIX, 14598) +HANDLE_BAT(APINT_TYPE_PREFIX, 14599) +HANDLE_BAT(APINT_TYPE_PREFIX, 14600) +HANDLE_BAT(APINT_TYPE_PREFIX, 14601) +HANDLE_BAT(APINT_TYPE_PREFIX, 14602) +HANDLE_BAT(APINT_TYPE_PREFIX, 14603) +HANDLE_BAT(APINT_TYPE_PREFIX, 14604) +HANDLE_BAT(APINT_TYPE_PREFIX, 14605) +HANDLE_BAT(APINT_TYPE_PREFIX, 14606) +HANDLE_BAT(APINT_TYPE_PREFIX, 14607) +HANDLE_BAT(APINT_TYPE_PREFIX, 14608) +HANDLE_BAT(APINT_TYPE_PREFIX, 14609) +HANDLE_BAT(APINT_TYPE_PREFIX, 14610) +HANDLE_BAT(APINT_TYPE_PREFIX, 14611) +HANDLE_BAT(APINT_TYPE_PREFIX, 14612) +HANDLE_BAT(APINT_TYPE_PREFIX, 14613) +HANDLE_BAT(APINT_TYPE_PREFIX, 14614) +HANDLE_BAT(APINT_TYPE_PREFIX, 14615) +HANDLE_BAT(APINT_TYPE_PREFIX, 14616) +HANDLE_BAT(APINT_TYPE_PREFIX, 14617) +HANDLE_BAT(APINT_TYPE_PREFIX, 14618) +HANDLE_BAT(APINT_TYPE_PREFIX, 14619) +HANDLE_BAT(APINT_TYPE_PREFIX, 14620) +HANDLE_BAT(APINT_TYPE_PREFIX, 14621) +HANDLE_BAT(APINT_TYPE_PREFIX, 14622) +HANDLE_BAT(APINT_TYPE_PREFIX, 14623) +HANDLE_BAT(APINT_TYPE_PREFIX, 14624) +HANDLE_BAT(APINT_TYPE_PREFIX, 14625) +HANDLE_BAT(APINT_TYPE_PREFIX, 14626) +HANDLE_BAT(APINT_TYPE_PREFIX, 14627) +HANDLE_BAT(APINT_TYPE_PREFIX, 14628) +HANDLE_BAT(APINT_TYPE_PREFIX, 14629) +HANDLE_BAT(APINT_TYPE_PREFIX, 14630) +HANDLE_BAT(APINT_TYPE_PREFIX, 14631) +HANDLE_BAT(APINT_TYPE_PREFIX, 14632) +HANDLE_BAT(APINT_TYPE_PREFIX, 14633) +HANDLE_BAT(APINT_TYPE_PREFIX, 14634) +HANDLE_BAT(APINT_TYPE_PREFIX, 14635) +HANDLE_BAT(APINT_TYPE_PREFIX, 14636) +HANDLE_BAT(APINT_TYPE_PREFIX, 14637) +HANDLE_BAT(APINT_TYPE_PREFIX, 14638) +HANDLE_BAT(APINT_TYPE_PREFIX, 14639) +HANDLE_BAT(APINT_TYPE_PREFIX, 14640) +HANDLE_BAT(APINT_TYPE_PREFIX, 14641) +HANDLE_BAT(APINT_TYPE_PREFIX, 14642) +HANDLE_BAT(APINT_TYPE_PREFIX, 14643) +HANDLE_BAT(APINT_TYPE_PREFIX, 14644) +HANDLE_BAT(APINT_TYPE_PREFIX, 14645) +HANDLE_BAT(APINT_TYPE_PREFIX, 14646) +HANDLE_BAT(APINT_TYPE_PREFIX, 14647) +HANDLE_BAT(APINT_TYPE_PREFIX, 14648) +HANDLE_BAT(APINT_TYPE_PREFIX, 14649) +HANDLE_BAT(APINT_TYPE_PREFIX, 14650) +HANDLE_BAT(APINT_TYPE_PREFIX, 14651) +HANDLE_BAT(APINT_TYPE_PREFIX, 14652) +HANDLE_BAT(APINT_TYPE_PREFIX, 14653) +HANDLE_BAT(APINT_TYPE_PREFIX, 14654) +HANDLE_BAT(APINT_TYPE_PREFIX, 14655) +HANDLE_BAT(APINT_TYPE_PREFIX, 14656) +HANDLE_BAT(APINT_TYPE_PREFIX, 14657) +HANDLE_BAT(APINT_TYPE_PREFIX, 14658) +HANDLE_BAT(APINT_TYPE_PREFIX, 14659) +HANDLE_BAT(APINT_TYPE_PREFIX, 14660) +HANDLE_BAT(APINT_TYPE_PREFIX, 14661) +HANDLE_BAT(APINT_TYPE_PREFIX, 14662) +HANDLE_BAT(APINT_TYPE_PREFIX, 14663) +HANDLE_BAT(APINT_TYPE_PREFIX, 14664) +HANDLE_BAT(APINT_TYPE_PREFIX, 14665) +HANDLE_BAT(APINT_TYPE_PREFIX, 14666) +HANDLE_BAT(APINT_TYPE_PREFIX, 14667) +HANDLE_BAT(APINT_TYPE_PREFIX, 14668) +HANDLE_BAT(APINT_TYPE_PREFIX, 14669) +HANDLE_BAT(APINT_TYPE_PREFIX, 14670) +HANDLE_BAT(APINT_TYPE_PREFIX, 14671) +HANDLE_BAT(APINT_TYPE_PREFIX, 14672) +HANDLE_BAT(APINT_TYPE_PREFIX, 14673) +HANDLE_BAT(APINT_TYPE_PREFIX, 14674) +HANDLE_BAT(APINT_TYPE_PREFIX, 14675) +HANDLE_BAT(APINT_TYPE_PREFIX, 14676) +HANDLE_BAT(APINT_TYPE_PREFIX, 14677) +HANDLE_BAT(APINT_TYPE_PREFIX, 14678) +HANDLE_BAT(APINT_TYPE_PREFIX, 14679) +HANDLE_BAT(APINT_TYPE_PREFIX, 14680) +HANDLE_BAT(APINT_TYPE_PREFIX, 14681) +HANDLE_BAT(APINT_TYPE_PREFIX, 14682) +HANDLE_BAT(APINT_TYPE_PREFIX, 14683) +HANDLE_BAT(APINT_TYPE_PREFIX, 14684) +HANDLE_BAT(APINT_TYPE_PREFIX, 14685) +HANDLE_BAT(APINT_TYPE_PREFIX, 14686) +HANDLE_BAT(APINT_TYPE_PREFIX, 14687) +HANDLE_BAT(APINT_TYPE_PREFIX, 14688) +HANDLE_BAT(APINT_TYPE_PREFIX, 14689) +HANDLE_BAT(APINT_TYPE_PREFIX, 14690) +HANDLE_BAT(APINT_TYPE_PREFIX, 14691) +HANDLE_BAT(APINT_TYPE_PREFIX, 14692) +HANDLE_BAT(APINT_TYPE_PREFIX, 14693) +HANDLE_BAT(APINT_TYPE_PREFIX, 14694) +HANDLE_BAT(APINT_TYPE_PREFIX, 14695) +HANDLE_BAT(APINT_TYPE_PREFIX, 14696) +HANDLE_BAT(APINT_TYPE_PREFIX, 14697) +HANDLE_BAT(APINT_TYPE_PREFIX, 14698) +HANDLE_BAT(APINT_TYPE_PREFIX, 14699) +HANDLE_BAT(APINT_TYPE_PREFIX, 14700) +HANDLE_BAT(APINT_TYPE_PREFIX, 14701) +HANDLE_BAT(APINT_TYPE_PREFIX, 14702) +HANDLE_BAT(APINT_TYPE_PREFIX, 14703) +HANDLE_BAT(APINT_TYPE_PREFIX, 14704) +HANDLE_BAT(APINT_TYPE_PREFIX, 14705) +HANDLE_BAT(APINT_TYPE_PREFIX, 14706) +HANDLE_BAT(APINT_TYPE_PREFIX, 14707) +HANDLE_BAT(APINT_TYPE_PREFIX, 14708) +HANDLE_BAT(APINT_TYPE_PREFIX, 14709) +HANDLE_BAT(APINT_TYPE_PREFIX, 14710) +HANDLE_BAT(APINT_TYPE_PREFIX, 14711) +HANDLE_BAT(APINT_TYPE_PREFIX, 14712) +HANDLE_BAT(APINT_TYPE_PREFIX, 14713) +HANDLE_BAT(APINT_TYPE_PREFIX, 14714) +HANDLE_BAT(APINT_TYPE_PREFIX, 14715) +HANDLE_BAT(APINT_TYPE_PREFIX, 14716) +HANDLE_BAT(APINT_TYPE_PREFIX, 14717) +HANDLE_BAT(APINT_TYPE_PREFIX, 14718) +HANDLE_BAT(APINT_TYPE_PREFIX, 14719) +HANDLE_BAT(APINT_TYPE_PREFIX, 14720) +HANDLE_BAT(APINT_TYPE_PREFIX, 14721) +HANDLE_BAT(APINT_TYPE_PREFIX, 14722) +HANDLE_BAT(APINT_TYPE_PREFIX, 14723) +HANDLE_BAT(APINT_TYPE_PREFIX, 14724) +HANDLE_BAT(APINT_TYPE_PREFIX, 14725) +HANDLE_BAT(APINT_TYPE_PREFIX, 14726) +HANDLE_BAT(APINT_TYPE_PREFIX, 14727) +HANDLE_BAT(APINT_TYPE_PREFIX, 14728) +HANDLE_BAT(APINT_TYPE_PREFIX, 14729) +HANDLE_BAT(APINT_TYPE_PREFIX, 14730) +HANDLE_BAT(APINT_TYPE_PREFIX, 14731) +HANDLE_BAT(APINT_TYPE_PREFIX, 14732) +HANDLE_BAT(APINT_TYPE_PREFIX, 14733) +HANDLE_BAT(APINT_TYPE_PREFIX, 14734) +HANDLE_BAT(APINT_TYPE_PREFIX, 14735) +HANDLE_BAT(APINT_TYPE_PREFIX, 14736) +HANDLE_BAT(APINT_TYPE_PREFIX, 14737) +HANDLE_BAT(APINT_TYPE_PREFIX, 14738) +HANDLE_BAT(APINT_TYPE_PREFIX, 14739) +HANDLE_BAT(APINT_TYPE_PREFIX, 14740) +HANDLE_BAT(APINT_TYPE_PREFIX, 14741) +HANDLE_BAT(APINT_TYPE_PREFIX, 14742) +HANDLE_BAT(APINT_TYPE_PREFIX, 14743) +HANDLE_BAT(APINT_TYPE_PREFIX, 14744) +HANDLE_BAT(APINT_TYPE_PREFIX, 14745) +HANDLE_BAT(APINT_TYPE_PREFIX, 14746) +HANDLE_BAT(APINT_TYPE_PREFIX, 14747) +HANDLE_BAT(APINT_TYPE_PREFIX, 14748) +HANDLE_BAT(APINT_TYPE_PREFIX, 14749) +HANDLE_BAT(APINT_TYPE_PREFIX, 14750) +HANDLE_BAT(APINT_TYPE_PREFIX, 14751) +HANDLE_BAT(APINT_TYPE_PREFIX, 14752) +HANDLE_BAT(APINT_TYPE_PREFIX, 14753) +HANDLE_BAT(APINT_TYPE_PREFIX, 14754) +HANDLE_BAT(APINT_TYPE_PREFIX, 14755) +HANDLE_BAT(APINT_TYPE_PREFIX, 14756) +HANDLE_BAT(APINT_TYPE_PREFIX, 14757) +HANDLE_BAT(APINT_TYPE_PREFIX, 14758) +HANDLE_BAT(APINT_TYPE_PREFIX, 14759) +HANDLE_BAT(APINT_TYPE_PREFIX, 14760) +HANDLE_BAT(APINT_TYPE_PREFIX, 14761) +HANDLE_BAT(APINT_TYPE_PREFIX, 14762) +HANDLE_BAT(APINT_TYPE_PREFIX, 14763) +HANDLE_BAT(APINT_TYPE_PREFIX, 14764) +HANDLE_BAT(APINT_TYPE_PREFIX, 14765) +HANDLE_BAT(APINT_TYPE_PREFIX, 14766) +HANDLE_BAT(APINT_TYPE_PREFIX, 14767) +HANDLE_BAT(APINT_TYPE_PREFIX, 14768) +HANDLE_BAT(APINT_TYPE_PREFIX, 14769) +HANDLE_BAT(APINT_TYPE_PREFIX, 14770) +HANDLE_BAT(APINT_TYPE_PREFIX, 14771) +HANDLE_BAT(APINT_TYPE_PREFIX, 14772) +HANDLE_BAT(APINT_TYPE_PREFIX, 14773) +HANDLE_BAT(APINT_TYPE_PREFIX, 14774) +HANDLE_BAT(APINT_TYPE_PREFIX, 14775) +HANDLE_BAT(APINT_TYPE_PREFIX, 14776) +HANDLE_BAT(APINT_TYPE_PREFIX, 14777) +HANDLE_BAT(APINT_TYPE_PREFIX, 14778) +HANDLE_BAT(APINT_TYPE_PREFIX, 14779) +HANDLE_BAT(APINT_TYPE_PREFIX, 14780) +HANDLE_BAT(APINT_TYPE_PREFIX, 14781) +HANDLE_BAT(APINT_TYPE_PREFIX, 14782) +HANDLE_BAT(APINT_TYPE_PREFIX, 14783) +HANDLE_BAT(APINT_TYPE_PREFIX, 14784) +HANDLE_BAT(APINT_TYPE_PREFIX, 14785) +HANDLE_BAT(APINT_TYPE_PREFIX, 14786) +HANDLE_BAT(APINT_TYPE_PREFIX, 14787) +HANDLE_BAT(APINT_TYPE_PREFIX, 14788) +HANDLE_BAT(APINT_TYPE_PREFIX, 14789) +HANDLE_BAT(APINT_TYPE_PREFIX, 14790) +HANDLE_BAT(APINT_TYPE_PREFIX, 14791) +HANDLE_BAT(APINT_TYPE_PREFIX, 14792) +HANDLE_BAT(APINT_TYPE_PREFIX, 14793) +HANDLE_BAT(APINT_TYPE_PREFIX, 14794) +HANDLE_BAT(APINT_TYPE_PREFIX, 14795) +HANDLE_BAT(APINT_TYPE_PREFIX, 14796) +HANDLE_BAT(APINT_TYPE_PREFIX, 14797) +HANDLE_BAT(APINT_TYPE_PREFIX, 14798) +HANDLE_BAT(APINT_TYPE_PREFIX, 14799) +HANDLE_BAT(APINT_TYPE_PREFIX, 14800) +HANDLE_BAT(APINT_TYPE_PREFIX, 14801) +HANDLE_BAT(APINT_TYPE_PREFIX, 14802) +HANDLE_BAT(APINT_TYPE_PREFIX, 14803) +HANDLE_BAT(APINT_TYPE_PREFIX, 14804) +HANDLE_BAT(APINT_TYPE_PREFIX, 14805) +HANDLE_BAT(APINT_TYPE_PREFIX, 14806) +HANDLE_BAT(APINT_TYPE_PREFIX, 14807) +HANDLE_BAT(APINT_TYPE_PREFIX, 14808) +HANDLE_BAT(APINT_TYPE_PREFIX, 14809) +HANDLE_BAT(APINT_TYPE_PREFIX, 14810) +HANDLE_BAT(APINT_TYPE_PREFIX, 14811) +HANDLE_BAT(APINT_TYPE_PREFIX, 14812) +HANDLE_BAT(APINT_TYPE_PREFIX, 14813) +HANDLE_BAT(APINT_TYPE_PREFIX, 14814) +HANDLE_BAT(APINT_TYPE_PREFIX, 14815) +HANDLE_BAT(APINT_TYPE_PREFIX, 14816) +HANDLE_BAT(APINT_TYPE_PREFIX, 14817) +HANDLE_BAT(APINT_TYPE_PREFIX, 14818) +HANDLE_BAT(APINT_TYPE_PREFIX, 14819) +HANDLE_BAT(APINT_TYPE_PREFIX, 14820) +HANDLE_BAT(APINT_TYPE_PREFIX, 14821) +HANDLE_BAT(APINT_TYPE_PREFIX, 14822) +HANDLE_BAT(APINT_TYPE_PREFIX, 14823) +HANDLE_BAT(APINT_TYPE_PREFIX, 14824) +HANDLE_BAT(APINT_TYPE_PREFIX, 14825) +HANDLE_BAT(APINT_TYPE_PREFIX, 14826) +HANDLE_BAT(APINT_TYPE_PREFIX, 14827) +HANDLE_BAT(APINT_TYPE_PREFIX, 14828) +HANDLE_BAT(APINT_TYPE_PREFIX, 14829) +HANDLE_BAT(APINT_TYPE_PREFIX, 14830) +HANDLE_BAT(APINT_TYPE_PREFIX, 14831) +HANDLE_BAT(APINT_TYPE_PREFIX, 14832) +HANDLE_BAT(APINT_TYPE_PREFIX, 14833) +HANDLE_BAT(APINT_TYPE_PREFIX, 14834) +HANDLE_BAT(APINT_TYPE_PREFIX, 14835) +HANDLE_BAT(APINT_TYPE_PREFIX, 14836) +HANDLE_BAT(APINT_TYPE_PREFIX, 14837) +HANDLE_BAT(APINT_TYPE_PREFIX, 14838) +HANDLE_BAT(APINT_TYPE_PREFIX, 14839) +HANDLE_BAT(APINT_TYPE_PREFIX, 14840) +HANDLE_BAT(APINT_TYPE_PREFIX, 14841) +HANDLE_BAT(APINT_TYPE_PREFIX, 14842) +HANDLE_BAT(APINT_TYPE_PREFIX, 14843) +HANDLE_BAT(APINT_TYPE_PREFIX, 14844) +HANDLE_BAT(APINT_TYPE_PREFIX, 14845) +HANDLE_BAT(APINT_TYPE_PREFIX, 14846) +HANDLE_BAT(APINT_TYPE_PREFIX, 14847) +HANDLE_BAT(APINT_TYPE_PREFIX, 14848) +HANDLE_BAT(APINT_TYPE_PREFIX, 14849) +HANDLE_BAT(APINT_TYPE_PREFIX, 14850) +HANDLE_BAT(APINT_TYPE_PREFIX, 14851) +HANDLE_BAT(APINT_TYPE_PREFIX, 14852) +HANDLE_BAT(APINT_TYPE_PREFIX, 14853) +HANDLE_BAT(APINT_TYPE_PREFIX, 14854) +HANDLE_BAT(APINT_TYPE_PREFIX, 14855) +HANDLE_BAT(APINT_TYPE_PREFIX, 14856) +HANDLE_BAT(APINT_TYPE_PREFIX, 14857) +HANDLE_BAT(APINT_TYPE_PREFIX, 14858) +HANDLE_BAT(APINT_TYPE_PREFIX, 14859) +HANDLE_BAT(APINT_TYPE_PREFIX, 14860) +HANDLE_BAT(APINT_TYPE_PREFIX, 14861) +HANDLE_BAT(APINT_TYPE_PREFIX, 14862) +HANDLE_BAT(APINT_TYPE_PREFIX, 14863) +HANDLE_BAT(APINT_TYPE_PREFIX, 14864) +HANDLE_BAT(APINT_TYPE_PREFIX, 14865) +HANDLE_BAT(APINT_TYPE_PREFIX, 14866) +HANDLE_BAT(APINT_TYPE_PREFIX, 14867) +HANDLE_BAT(APINT_TYPE_PREFIX, 14868) +HANDLE_BAT(APINT_TYPE_PREFIX, 14869) +HANDLE_BAT(APINT_TYPE_PREFIX, 14870) +HANDLE_BAT(APINT_TYPE_PREFIX, 14871) +HANDLE_BAT(APINT_TYPE_PREFIX, 14872) +HANDLE_BAT(APINT_TYPE_PREFIX, 14873) +HANDLE_BAT(APINT_TYPE_PREFIX, 14874) +HANDLE_BAT(APINT_TYPE_PREFIX, 14875) +HANDLE_BAT(APINT_TYPE_PREFIX, 14876) +HANDLE_BAT(APINT_TYPE_PREFIX, 14877) +HANDLE_BAT(APINT_TYPE_PREFIX, 14878) +HANDLE_BAT(APINT_TYPE_PREFIX, 14879) +HANDLE_BAT(APINT_TYPE_PREFIX, 14880) +HANDLE_BAT(APINT_TYPE_PREFIX, 14881) +HANDLE_BAT(APINT_TYPE_PREFIX, 14882) +HANDLE_BAT(APINT_TYPE_PREFIX, 14883) +HANDLE_BAT(APINT_TYPE_PREFIX, 14884) +HANDLE_BAT(APINT_TYPE_PREFIX, 14885) +HANDLE_BAT(APINT_TYPE_PREFIX, 14886) +HANDLE_BAT(APINT_TYPE_PREFIX, 14887) +HANDLE_BAT(APINT_TYPE_PREFIX, 14888) +HANDLE_BAT(APINT_TYPE_PREFIX, 14889) +HANDLE_BAT(APINT_TYPE_PREFIX, 14890) +HANDLE_BAT(APINT_TYPE_PREFIX, 14891) +HANDLE_BAT(APINT_TYPE_PREFIX, 14892) +HANDLE_BAT(APINT_TYPE_PREFIX, 14893) +HANDLE_BAT(APINT_TYPE_PREFIX, 14894) +HANDLE_BAT(APINT_TYPE_PREFIX, 14895) +HANDLE_BAT(APINT_TYPE_PREFIX, 14896) +HANDLE_BAT(APINT_TYPE_PREFIX, 14897) +HANDLE_BAT(APINT_TYPE_PREFIX, 14898) +HANDLE_BAT(APINT_TYPE_PREFIX, 14899) +HANDLE_BAT(APINT_TYPE_PREFIX, 14900) +HANDLE_BAT(APINT_TYPE_PREFIX, 14901) +HANDLE_BAT(APINT_TYPE_PREFIX, 14902) +HANDLE_BAT(APINT_TYPE_PREFIX, 14903) +HANDLE_BAT(APINT_TYPE_PREFIX, 14904) +HANDLE_BAT(APINT_TYPE_PREFIX, 14905) +HANDLE_BAT(APINT_TYPE_PREFIX, 14906) +HANDLE_BAT(APINT_TYPE_PREFIX, 14907) +HANDLE_BAT(APINT_TYPE_PREFIX, 14908) +HANDLE_BAT(APINT_TYPE_PREFIX, 14909) +HANDLE_BAT(APINT_TYPE_PREFIX, 14910) +HANDLE_BAT(APINT_TYPE_PREFIX, 14911) +HANDLE_BAT(APINT_TYPE_PREFIX, 14912) +HANDLE_BAT(APINT_TYPE_PREFIX, 14913) +HANDLE_BAT(APINT_TYPE_PREFIX, 14914) +HANDLE_BAT(APINT_TYPE_PREFIX, 14915) +HANDLE_BAT(APINT_TYPE_PREFIX, 14916) +HANDLE_BAT(APINT_TYPE_PREFIX, 14917) +HANDLE_BAT(APINT_TYPE_PREFIX, 14918) +HANDLE_BAT(APINT_TYPE_PREFIX, 14919) +HANDLE_BAT(APINT_TYPE_PREFIX, 14920) +HANDLE_BAT(APINT_TYPE_PREFIX, 14921) +HANDLE_BAT(APINT_TYPE_PREFIX, 14922) +HANDLE_BAT(APINT_TYPE_PREFIX, 14923) +HANDLE_BAT(APINT_TYPE_PREFIX, 14924) +HANDLE_BAT(APINT_TYPE_PREFIX, 14925) +HANDLE_BAT(APINT_TYPE_PREFIX, 14926) +HANDLE_BAT(APINT_TYPE_PREFIX, 14927) +HANDLE_BAT(APINT_TYPE_PREFIX, 14928) +HANDLE_BAT(APINT_TYPE_PREFIX, 14929) +HANDLE_BAT(APINT_TYPE_PREFIX, 14930) +HANDLE_BAT(APINT_TYPE_PREFIX, 14931) +HANDLE_BAT(APINT_TYPE_PREFIX, 14932) +HANDLE_BAT(APINT_TYPE_PREFIX, 14933) +HANDLE_BAT(APINT_TYPE_PREFIX, 14934) +HANDLE_BAT(APINT_TYPE_PREFIX, 14935) +HANDLE_BAT(APINT_TYPE_PREFIX, 14936) +HANDLE_BAT(APINT_TYPE_PREFIX, 14937) +HANDLE_BAT(APINT_TYPE_PREFIX, 14938) +HANDLE_BAT(APINT_TYPE_PREFIX, 14939) +HANDLE_BAT(APINT_TYPE_PREFIX, 14940) +HANDLE_BAT(APINT_TYPE_PREFIX, 14941) +HANDLE_BAT(APINT_TYPE_PREFIX, 14942) +HANDLE_BAT(APINT_TYPE_PREFIX, 14943) +HANDLE_BAT(APINT_TYPE_PREFIX, 14944) +HANDLE_BAT(APINT_TYPE_PREFIX, 14945) +HANDLE_BAT(APINT_TYPE_PREFIX, 14946) +HANDLE_BAT(APINT_TYPE_PREFIX, 14947) +HANDLE_BAT(APINT_TYPE_PREFIX, 14948) +HANDLE_BAT(APINT_TYPE_PREFIX, 14949) +HANDLE_BAT(APINT_TYPE_PREFIX, 14950) +HANDLE_BAT(APINT_TYPE_PREFIX, 14951) +HANDLE_BAT(APINT_TYPE_PREFIX, 14952) +HANDLE_BAT(APINT_TYPE_PREFIX, 14953) +HANDLE_BAT(APINT_TYPE_PREFIX, 14954) +HANDLE_BAT(APINT_TYPE_PREFIX, 14955) +HANDLE_BAT(APINT_TYPE_PREFIX, 14956) +HANDLE_BAT(APINT_TYPE_PREFIX, 14957) +HANDLE_BAT(APINT_TYPE_PREFIX, 14958) +HANDLE_BAT(APINT_TYPE_PREFIX, 14959) +HANDLE_BAT(APINT_TYPE_PREFIX, 14960) +HANDLE_BAT(APINT_TYPE_PREFIX, 14961) +HANDLE_BAT(APINT_TYPE_PREFIX, 14962) +HANDLE_BAT(APINT_TYPE_PREFIX, 14963) +HANDLE_BAT(APINT_TYPE_PREFIX, 14964) +HANDLE_BAT(APINT_TYPE_PREFIX, 14965) +HANDLE_BAT(APINT_TYPE_PREFIX, 14966) +HANDLE_BAT(APINT_TYPE_PREFIX, 14967) +HANDLE_BAT(APINT_TYPE_PREFIX, 14968) +HANDLE_BAT(APINT_TYPE_PREFIX, 14969) +HANDLE_BAT(APINT_TYPE_PREFIX, 14970) +HANDLE_BAT(APINT_TYPE_PREFIX, 14971) +HANDLE_BAT(APINT_TYPE_PREFIX, 14972) +HANDLE_BAT(APINT_TYPE_PREFIX, 14973) +HANDLE_BAT(APINT_TYPE_PREFIX, 14974) +HANDLE_BAT(APINT_TYPE_PREFIX, 14975) +HANDLE_BAT(APINT_TYPE_PREFIX, 14976) +HANDLE_BAT(APINT_TYPE_PREFIX, 14977) +HANDLE_BAT(APINT_TYPE_PREFIX, 14978) +HANDLE_BAT(APINT_TYPE_PREFIX, 14979) +HANDLE_BAT(APINT_TYPE_PREFIX, 14980) +HANDLE_BAT(APINT_TYPE_PREFIX, 14981) +HANDLE_BAT(APINT_TYPE_PREFIX, 14982) +HANDLE_BAT(APINT_TYPE_PREFIX, 14983) +HANDLE_BAT(APINT_TYPE_PREFIX, 14984) +HANDLE_BAT(APINT_TYPE_PREFIX, 14985) +HANDLE_BAT(APINT_TYPE_PREFIX, 14986) +HANDLE_BAT(APINT_TYPE_PREFIX, 14987) +HANDLE_BAT(APINT_TYPE_PREFIX, 14988) +HANDLE_BAT(APINT_TYPE_PREFIX, 14989) +HANDLE_BAT(APINT_TYPE_PREFIX, 14990) +HANDLE_BAT(APINT_TYPE_PREFIX, 14991) +HANDLE_BAT(APINT_TYPE_PREFIX, 14992) +HANDLE_BAT(APINT_TYPE_PREFIX, 14993) +HANDLE_BAT(APINT_TYPE_PREFIX, 14994) +HANDLE_BAT(APINT_TYPE_PREFIX, 14995) +HANDLE_BAT(APINT_TYPE_PREFIX, 14996) +HANDLE_BAT(APINT_TYPE_PREFIX, 14997) +HANDLE_BAT(APINT_TYPE_PREFIX, 14998) +HANDLE_BAT(APINT_TYPE_PREFIX, 14999) +HANDLE_BAT(APINT_TYPE_PREFIX, 15000) +HANDLE_BAT(APINT_TYPE_PREFIX, 15001) +HANDLE_BAT(APINT_TYPE_PREFIX, 15002) +HANDLE_BAT(APINT_TYPE_PREFIX, 15003) +HANDLE_BAT(APINT_TYPE_PREFIX, 15004) +HANDLE_BAT(APINT_TYPE_PREFIX, 15005) +HANDLE_BAT(APINT_TYPE_PREFIX, 15006) +HANDLE_BAT(APINT_TYPE_PREFIX, 15007) +HANDLE_BAT(APINT_TYPE_PREFIX, 15008) +HANDLE_BAT(APINT_TYPE_PREFIX, 15009) +HANDLE_BAT(APINT_TYPE_PREFIX, 15010) +HANDLE_BAT(APINT_TYPE_PREFIX, 15011) +HANDLE_BAT(APINT_TYPE_PREFIX, 15012) +HANDLE_BAT(APINT_TYPE_PREFIX, 15013) +HANDLE_BAT(APINT_TYPE_PREFIX, 15014) +HANDLE_BAT(APINT_TYPE_PREFIX, 15015) +HANDLE_BAT(APINT_TYPE_PREFIX, 15016) +HANDLE_BAT(APINT_TYPE_PREFIX, 15017) +HANDLE_BAT(APINT_TYPE_PREFIX, 15018) +HANDLE_BAT(APINT_TYPE_PREFIX, 15019) +HANDLE_BAT(APINT_TYPE_PREFIX, 15020) +HANDLE_BAT(APINT_TYPE_PREFIX, 15021) +HANDLE_BAT(APINT_TYPE_PREFIX, 15022) +HANDLE_BAT(APINT_TYPE_PREFIX, 15023) +HANDLE_BAT(APINT_TYPE_PREFIX, 15024) +HANDLE_BAT(APINT_TYPE_PREFIX, 15025) +HANDLE_BAT(APINT_TYPE_PREFIX, 15026) +HANDLE_BAT(APINT_TYPE_PREFIX, 15027) +HANDLE_BAT(APINT_TYPE_PREFIX, 15028) +HANDLE_BAT(APINT_TYPE_PREFIX, 15029) +HANDLE_BAT(APINT_TYPE_PREFIX, 15030) +HANDLE_BAT(APINT_TYPE_PREFIX, 15031) +HANDLE_BAT(APINT_TYPE_PREFIX, 15032) +HANDLE_BAT(APINT_TYPE_PREFIX, 15033) +HANDLE_BAT(APINT_TYPE_PREFIX, 15034) +HANDLE_BAT(APINT_TYPE_PREFIX, 15035) +HANDLE_BAT(APINT_TYPE_PREFIX, 15036) +HANDLE_BAT(APINT_TYPE_PREFIX, 15037) +HANDLE_BAT(APINT_TYPE_PREFIX, 15038) +HANDLE_BAT(APINT_TYPE_PREFIX, 15039) +HANDLE_BAT(APINT_TYPE_PREFIX, 15040) +HANDLE_BAT(APINT_TYPE_PREFIX, 15041) +HANDLE_BAT(APINT_TYPE_PREFIX, 15042) +HANDLE_BAT(APINT_TYPE_PREFIX, 15043) +HANDLE_BAT(APINT_TYPE_PREFIX, 15044) +HANDLE_BAT(APINT_TYPE_PREFIX, 15045) +HANDLE_BAT(APINT_TYPE_PREFIX, 15046) +HANDLE_BAT(APINT_TYPE_PREFIX, 15047) +HANDLE_BAT(APINT_TYPE_PREFIX, 15048) +HANDLE_BAT(APINT_TYPE_PREFIX, 15049) +HANDLE_BAT(APINT_TYPE_PREFIX, 15050) +HANDLE_BAT(APINT_TYPE_PREFIX, 15051) +HANDLE_BAT(APINT_TYPE_PREFIX, 15052) +HANDLE_BAT(APINT_TYPE_PREFIX, 15053) +HANDLE_BAT(APINT_TYPE_PREFIX, 15054) +HANDLE_BAT(APINT_TYPE_PREFIX, 15055) +HANDLE_BAT(APINT_TYPE_PREFIX, 15056) +HANDLE_BAT(APINT_TYPE_PREFIX, 15057) +HANDLE_BAT(APINT_TYPE_PREFIX, 15058) +HANDLE_BAT(APINT_TYPE_PREFIX, 15059) +HANDLE_BAT(APINT_TYPE_PREFIX, 15060) +HANDLE_BAT(APINT_TYPE_PREFIX, 15061) +HANDLE_BAT(APINT_TYPE_PREFIX, 15062) +HANDLE_BAT(APINT_TYPE_PREFIX, 15063) +HANDLE_BAT(APINT_TYPE_PREFIX, 15064) +HANDLE_BAT(APINT_TYPE_PREFIX, 15065) +HANDLE_BAT(APINT_TYPE_PREFIX, 15066) +HANDLE_BAT(APINT_TYPE_PREFIX, 15067) +HANDLE_BAT(APINT_TYPE_PREFIX, 15068) +HANDLE_BAT(APINT_TYPE_PREFIX, 15069) +HANDLE_BAT(APINT_TYPE_PREFIX, 15070) +HANDLE_BAT(APINT_TYPE_PREFIX, 15071) +HANDLE_BAT(APINT_TYPE_PREFIX, 15072) +HANDLE_BAT(APINT_TYPE_PREFIX, 15073) +HANDLE_BAT(APINT_TYPE_PREFIX, 15074) +HANDLE_BAT(APINT_TYPE_PREFIX, 15075) +HANDLE_BAT(APINT_TYPE_PREFIX, 15076) +HANDLE_BAT(APINT_TYPE_PREFIX, 15077) +HANDLE_BAT(APINT_TYPE_PREFIX, 15078) +HANDLE_BAT(APINT_TYPE_PREFIX, 15079) +HANDLE_BAT(APINT_TYPE_PREFIX, 15080) +HANDLE_BAT(APINT_TYPE_PREFIX, 15081) +HANDLE_BAT(APINT_TYPE_PREFIX, 15082) +HANDLE_BAT(APINT_TYPE_PREFIX, 15083) +HANDLE_BAT(APINT_TYPE_PREFIX, 15084) +HANDLE_BAT(APINT_TYPE_PREFIX, 15085) +HANDLE_BAT(APINT_TYPE_PREFIX, 15086) +HANDLE_BAT(APINT_TYPE_PREFIX, 15087) +HANDLE_BAT(APINT_TYPE_PREFIX, 15088) +HANDLE_BAT(APINT_TYPE_PREFIX, 15089) +HANDLE_BAT(APINT_TYPE_PREFIX, 15090) +HANDLE_BAT(APINT_TYPE_PREFIX, 15091) +HANDLE_BAT(APINT_TYPE_PREFIX, 15092) +HANDLE_BAT(APINT_TYPE_PREFIX, 15093) +HANDLE_BAT(APINT_TYPE_PREFIX, 15094) +HANDLE_BAT(APINT_TYPE_PREFIX, 15095) +HANDLE_BAT(APINT_TYPE_PREFIX, 15096) +HANDLE_BAT(APINT_TYPE_PREFIX, 15097) +HANDLE_BAT(APINT_TYPE_PREFIX, 15098) +HANDLE_BAT(APINT_TYPE_PREFIX, 15099) +HANDLE_BAT(APINT_TYPE_PREFIX, 15100) +HANDLE_BAT(APINT_TYPE_PREFIX, 15101) +HANDLE_BAT(APINT_TYPE_PREFIX, 15102) +HANDLE_BAT(APINT_TYPE_PREFIX, 15103) +HANDLE_BAT(APINT_TYPE_PREFIX, 15104) +HANDLE_BAT(APINT_TYPE_PREFIX, 15105) +HANDLE_BAT(APINT_TYPE_PREFIX, 15106) +HANDLE_BAT(APINT_TYPE_PREFIX, 15107) +HANDLE_BAT(APINT_TYPE_PREFIX, 15108) +HANDLE_BAT(APINT_TYPE_PREFIX, 15109) +HANDLE_BAT(APINT_TYPE_PREFIX, 15110) +HANDLE_BAT(APINT_TYPE_PREFIX, 15111) +HANDLE_BAT(APINT_TYPE_PREFIX, 15112) +HANDLE_BAT(APINT_TYPE_PREFIX, 15113) +HANDLE_BAT(APINT_TYPE_PREFIX, 15114) +HANDLE_BAT(APINT_TYPE_PREFIX, 15115) +HANDLE_BAT(APINT_TYPE_PREFIX, 15116) +HANDLE_BAT(APINT_TYPE_PREFIX, 15117) +HANDLE_BAT(APINT_TYPE_PREFIX, 15118) +HANDLE_BAT(APINT_TYPE_PREFIX, 15119) +HANDLE_BAT(APINT_TYPE_PREFIX, 15120) +HANDLE_BAT(APINT_TYPE_PREFIX, 15121) +HANDLE_BAT(APINT_TYPE_PREFIX, 15122) +HANDLE_BAT(APINT_TYPE_PREFIX, 15123) +HANDLE_BAT(APINT_TYPE_PREFIX, 15124) +HANDLE_BAT(APINT_TYPE_PREFIX, 15125) +HANDLE_BAT(APINT_TYPE_PREFIX, 15126) +HANDLE_BAT(APINT_TYPE_PREFIX, 15127) +HANDLE_BAT(APINT_TYPE_PREFIX, 15128) +HANDLE_BAT(APINT_TYPE_PREFIX, 15129) +HANDLE_BAT(APINT_TYPE_PREFIX, 15130) +HANDLE_BAT(APINT_TYPE_PREFIX, 15131) +HANDLE_BAT(APINT_TYPE_PREFIX, 15132) +HANDLE_BAT(APINT_TYPE_PREFIX, 15133) +HANDLE_BAT(APINT_TYPE_PREFIX, 15134) +HANDLE_BAT(APINT_TYPE_PREFIX, 15135) +HANDLE_BAT(APINT_TYPE_PREFIX, 15136) +HANDLE_BAT(APINT_TYPE_PREFIX, 15137) +HANDLE_BAT(APINT_TYPE_PREFIX, 15138) +HANDLE_BAT(APINT_TYPE_PREFIX, 15139) +HANDLE_BAT(APINT_TYPE_PREFIX, 15140) +HANDLE_BAT(APINT_TYPE_PREFIX, 15141) +HANDLE_BAT(APINT_TYPE_PREFIX, 15142) +HANDLE_BAT(APINT_TYPE_PREFIX, 15143) +HANDLE_BAT(APINT_TYPE_PREFIX, 15144) +HANDLE_BAT(APINT_TYPE_PREFIX, 15145) +HANDLE_BAT(APINT_TYPE_PREFIX, 15146) +HANDLE_BAT(APINT_TYPE_PREFIX, 15147) +HANDLE_BAT(APINT_TYPE_PREFIX, 15148) +HANDLE_BAT(APINT_TYPE_PREFIX, 15149) +HANDLE_BAT(APINT_TYPE_PREFIX, 15150) +HANDLE_BAT(APINT_TYPE_PREFIX, 15151) +HANDLE_BAT(APINT_TYPE_PREFIX, 15152) +HANDLE_BAT(APINT_TYPE_PREFIX, 15153) +HANDLE_BAT(APINT_TYPE_PREFIX, 15154) +HANDLE_BAT(APINT_TYPE_PREFIX, 15155) +HANDLE_BAT(APINT_TYPE_PREFIX, 15156) +HANDLE_BAT(APINT_TYPE_PREFIX, 15157) +HANDLE_BAT(APINT_TYPE_PREFIX, 15158) +HANDLE_BAT(APINT_TYPE_PREFIX, 15159) +HANDLE_BAT(APINT_TYPE_PREFIX, 15160) +HANDLE_BAT(APINT_TYPE_PREFIX, 15161) +HANDLE_BAT(APINT_TYPE_PREFIX, 15162) +HANDLE_BAT(APINT_TYPE_PREFIX, 15163) +HANDLE_BAT(APINT_TYPE_PREFIX, 15164) +HANDLE_BAT(APINT_TYPE_PREFIX, 15165) +HANDLE_BAT(APINT_TYPE_PREFIX, 15166) +HANDLE_BAT(APINT_TYPE_PREFIX, 15167) +HANDLE_BAT(APINT_TYPE_PREFIX, 15168) +HANDLE_BAT(APINT_TYPE_PREFIX, 15169) +HANDLE_BAT(APINT_TYPE_PREFIX, 15170) +HANDLE_BAT(APINT_TYPE_PREFIX, 15171) +HANDLE_BAT(APINT_TYPE_PREFIX, 15172) +HANDLE_BAT(APINT_TYPE_PREFIX, 15173) +HANDLE_BAT(APINT_TYPE_PREFIX, 15174) +HANDLE_BAT(APINT_TYPE_PREFIX, 15175) +HANDLE_BAT(APINT_TYPE_PREFIX, 15176) +HANDLE_BAT(APINT_TYPE_PREFIX, 15177) +HANDLE_BAT(APINT_TYPE_PREFIX, 15178) +HANDLE_BAT(APINT_TYPE_PREFIX, 15179) +HANDLE_BAT(APINT_TYPE_PREFIX, 15180) +HANDLE_BAT(APINT_TYPE_PREFIX, 15181) +HANDLE_BAT(APINT_TYPE_PREFIX, 15182) +HANDLE_BAT(APINT_TYPE_PREFIX, 15183) +HANDLE_BAT(APINT_TYPE_PREFIX, 15184) +HANDLE_BAT(APINT_TYPE_PREFIX, 15185) +HANDLE_BAT(APINT_TYPE_PREFIX, 15186) +HANDLE_BAT(APINT_TYPE_PREFIX, 15187) +HANDLE_BAT(APINT_TYPE_PREFIX, 15188) +HANDLE_BAT(APINT_TYPE_PREFIX, 15189) +HANDLE_BAT(APINT_TYPE_PREFIX, 15190) +HANDLE_BAT(APINT_TYPE_PREFIX, 15191) +HANDLE_BAT(APINT_TYPE_PREFIX, 15192) +HANDLE_BAT(APINT_TYPE_PREFIX, 15193) +HANDLE_BAT(APINT_TYPE_PREFIX, 15194) +HANDLE_BAT(APINT_TYPE_PREFIX, 15195) +HANDLE_BAT(APINT_TYPE_PREFIX, 15196) +HANDLE_BAT(APINT_TYPE_PREFIX, 15197) +HANDLE_BAT(APINT_TYPE_PREFIX, 15198) +HANDLE_BAT(APINT_TYPE_PREFIX, 15199) +HANDLE_BAT(APINT_TYPE_PREFIX, 15200) +HANDLE_BAT(APINT_TYPE_PREFIX, 15201) +HANDLE_BAT(APINT_TYPE_PREFIX, 15202) +HANDLE_BAT(APINT_TYPE_PREFIX, 15203) +HANDLE_BAT(APINT_TYPE_PREFIX, 15204) +HANDLE_BAT(APINT_TYPE_PREFIX, 15205) +HANDLE_BAT(APINT_TYPE_PREFIX, 15206) +HANDLE_BAT(APINT_TYPE_PREFIX, 15207) +HANDLE_BAT(APINT_TYPE_PREFIX, 15208) +HANDLE_BAT(APINT_TYPE_PREFIX, 15209) +HANDLE_BAT(APINT_TYPE_PREFIX, 15210) +HANDLE_BAT(APINT_TYPE_PREFIX, 15211) +HANDLE_BAT(APINT_TYPE_PREFIX, 15212) +HANDLE_BAT(APINT_TYPE_PREFIX, 15213) +HANDLE_BAT(APINT_TYPE_PREFIX, 15214) +HANDLE_BAT(APINT_TYPE_PREFIX, 15215) +HANDLE_BAT(APINT_TYPE_PREFIX, 15216) +HANDLE_BAT(APINT_TYPE_PREFIX, 15217) +HANDLE_BAT(APINT_TYPE_PREFIX, 15218) +HANDLE_BAT(APINT_TYPE_PREFIX, 15219) +HANDLE_BAT(APINT_TYPE_PREFIX, 15220) +HANDLE_BAT(APINT_TYPE_PREFIX, 15221) +HANDLE_BAT(APINT_TYPE_PREFIX, 15222) +HANDLE_BAT(APINT_TYPE_PREFIX, 15223) +HANDLE_BAT(APINT_TYPE_PREFIX, 15224) +HANDLE_BAT(APINT_TYPE_PREFIX, 15225) +HANDLE_BAT(APINT_TYPE_PREFIX, 15226) +HANDLE_BAT(APINT_TYPE_PREFIX, 15227) +HANDLE_BAT(APINT_TYPE_PREFIX, 15228) +HANDLE_BAT(APINT_TYPE_PREFIX, 15229) +HANDLE_BAT(APINT_TYPE_PREFIX, 15230) +HANDLE_BAT(APINT_TYPE_PREFIX, 15231) +HANDLE_BAT(APINT_TYPE_PREFIX, 15232) +HANDLE_BAT(APINT_TYPE_PREFIX, 15233) +HANDLE_BAT(APINT_TYPE_PREFIX, 15234) +HANDLE_BAT(APINT_TYPE_PREFIX, 15235) +HANDLE_BAT(APINT_TYPE_PREFIX, 15236) +HANDLE_BAT(APINT_TYPE_PREFIX, 15237) +HANDLE_BAT(APINT_TYPE_PREFIX, 15238) +HANDLE_BAT(APINT_TYPE_PREFIX, 15239) +HANDLE_BAT(APINT_TYPE_PREFIX, 15240) +HANDLE_BAT(APINT_TYPE_PREFIX, 15241) +HANDLE_BAT(APINT_TYPE_PREFIX, 15242) +HANDLE_BAT(APINT_TYPE_PREFIX, 15243) +HANDLE_BAT(APINT_TYPE_PREFIX, 15244) +HANDLE_BAT(APINT_TYPE_PREFIX, 15245) +HANDLE_BAT(APINT_TYPE_PREFIX, 15246) +HANDLE_BAT(APINT_TYPE_PREFIX, 15247) +HANDLE_BAT(APINT_TYPE_PREFIX, 15248) +HANDLE_BAT(APINT_TYPE_PREFIX, 15249) +HANDLE_BAT(APINT_TYPE_PREFIX, 15250) +HANDLE_BAT(APINT_TYPE_PREFIX, 15251) +HANDLE_BAT(APINT_TYPE_PREFIX, 15252) +HANDLE_BAT(APINT_TYPE_PREFIX, 15253) +HANDLE_BAT(APINT_TYPE_PREFIX, 15254) +HANDLE_BAT(APINT_TYPE_PREFIX, 15255) +HANDLE_BAT(APINT_TYPE_PREFIX, 15256) +HANDLE_BAT(APINT_TYPE_PREFIX, 15257) +HANDLE_BAT(APINT_TYPE_PREFIX, 15258) +HANDLE_BAT(APINT_TYPE_PREFIX, 15259) +HANDLE_BAT(APINT_TYPE_PREFIX, 15260) +HANDLE_BAT(APINT_TYPE_PREFIX, 15261) +HANDLE_BAT(APINT_TYPE_PREFIX, 15262) +HANDLE_BAT(APINT_TYPE_PREFIX, 15263) +HANDLE_BAT(APINT_TYPE_PREFIX, 15264) +HANDLE_BAT(APINT_TYPE_PREFIX, 15265) +HANDLE_BAT(APINT_TYPE_PREFIX, 15266) +HANDLE_BAT(APINT_TYPE_PREFIX, 15267) +HANDLE_BAT(APINT_TYPE_PREFIX, 15268) +HANDLE_BAT(APINT_TYPE_PREFIX, 15269) +HANDLE_BAT(APINT_TYPE_PREFIX, 15270) +HANDLE_BAT(APINT_TYPE_PREFIX, 15271) +HANDLE_BAT(APINT_TYPE_PREFIX, 15272) +HANDLE_BAT(APINT_TYPE_PREFIX, 15273) +HANDLE_BAT(APINT_TYPE_PREFIX, 15274) +HANDLE_BAT(APINT_TYPE_PREFIX, 15275) +HANDLE_BAT(APINT_TYPE_PREFIX, 15276) +HANDLE_BAT(APINT_TYPE_PREFIX, 15277) +HANDLE_BAT(APINT_TYPE_PREFIX, 15278) +HANDLE_BAT(APINT_TYPE_PREFIX, 15279) +HANDLE_BAT(APINT_TYPE_PREFIX, 15280) +HANDLE_BAT(APINT_TYPE_PREFIX, 15281) +HANDLE_BAT(APINT_TYPE_PREFIX, 15282) +HANDLE_BAT(APINT_TYPE_PREFIX, 15283) +HANDLE_BAT(APINT_TYPE_PREFIX, 15284) +HANDLE_BAT(APINT_TYPE_PREFIX, 15285) +HANDLE_BAT(APINT_TYPE_PREFIX, 15286) +HANDLE_BAT(APINT_TYPE_PREFIX, 15287) +HANDLE_BAT(APINT_TYPE_PREFIX, 15288) +HANDLE_BAT(APINT_TYPE_PREFIX, 15289) +HANDLE_BAT(APINT_TYPE_PREFIX, 15290) +HANDLE_BAT(APINT_TYPE_PREFIX, 15291) +HANDLE_BAT(APINT_TYPE_PREFIX, 15292) +HANDLE_BAT(APINT_TYPE_PREFIX, 15293) +HANDLE_BAT(APINT_TYPE_PREFIX, 15294) +HANDLE_BAT(APINT_TYPE_PREFIX, 15295) +HANDLE_BAT(APINT_TYPE_PREFIX, 15296) +HANDLE_BAT(APINT_TYPE_PREFIX, 15297) +HANDLE_BAT(APINT_TYPE_PREFIX, 15298) +HANDLE_BAT(APINT_TYPE_PREFIX, 15299) +HANDLE_BAT(APINT_TYPE_PREFIX, 15300) +HANDLE_BAT(APINT_TYPE_PREFIX, 15301) +HANDLE_BAT(APINT_TYPE_PREFIX, 15302) +HANDLE_BAT(APINT_TYPE_PREFIX, 15303) +HANDLE_BAT(APINT_TYPE_PREFIX, 15304) +HANDLE_BAT(APINT_TYPE_PREFIX, 15305) +HANDLE_BAT(APINT_TYPE_PREFIX, 15306) +HANDLE_BAT(APINT_TYPE_PREFIX, 15307) +HANDLE_BAT(APINT_TYPE_PREFIX, 15308) +HANDLE_BAT(APINT_TYPE_PREFIX, 15309) +HANDLE_BAT(APINT_TYPE_PREFIX, 15310) +HANDLE_BAT(APINT_TYPE_PREFIX, 15311) +HANDLE_BAT(APINT_TYPE_PREFIX, 15312) +HANDLE_BAT(APINT_TYPE_PREFIX, 15313) +HANDLE_BAT(APINT_TYPE_PREFIX, 15314) +HANDLE_BAT(APINT_TYPE_PREFIX, 15315) +HANDLE_BAT(APINT_TYPE_PREFIX, 15316) +HANDLE_BAT(APINT_TYPE_PREFIX, 15317) +HANDLE_BAT(APINT_TYPE_PREFIX, 15318) +HANDLE_BAT(APINT_TYPE_PREFIX, 15319) +HANDLE_BAT(APINT_TYPE_PREFIX, 15320) +HANDLE_BAT(APINT_TYPE_PREFIX, 15321) +HANDLE_BAT(APINT_TYPE_PREFIX, 15322) +HANDLE_BAT(APINT_TYPE_PREFIX, 15323) +HANDLE_BAT(APINT_TYPE_PREFIX, 15324) +HANDLE_BAT(APINT_TYPE_PREFIX, 15325) +HANDLE_BAT(APINT_TYPE_PREFIX, 15326) +HANDLE_BAT(APINT_TYPE_PREFIX, 15327) +HANDLE_BAT(APINT_TYPE_PREFIX, 15328) +HANDLE_BAT(APINT_TYPE_PREFIX, 15329) +HANDLE_BAT(APINT_TYPE_PREFIX, 15330) +HANDLE_BAT(APINT_TYPE_PREFIX, 15331) +HANDLE_BAT(APINT_TYPE_PREFIX, 15332) +HANDLE_BAT(APINT_TYPE_PREFIX, 15333) +HANDLE_BAT(APINT_TYPE_PREFIX, 15334) +HANDLE_BAT(APINT_TYPE_PREFIX, 15335) +HANDLE_BAT(APINT_TYPE_PREFIX, 15336) +HANDLE_BAT(APINT_TYPE_PREFIX, 15337) +HANDLE_BAT(APINT_TYPE_PREFIX, 15338) +HANDLE_BAT(APINT_TYPE_PREFIX, 15339) +HANDLE_BAT(APINT_TYPE_PREFIX, 15340) +HANDLE_BAT(APINT_TYPE_PREFIX, 15341) +HANDLE_BAT(APINT_TYPE_PREFIX, 15342) +HANDLE_BAT(APINT_TYPE_PREFIX, 15343) +HANDLE_BAT(APINT_TYPE_PREFIX, 15344) +HANDLE_BAT(APINT_TYPE_PREFIX, 15345) +HANDLE_BAT(APINT_TYPE_PREFIX, 15346) +HANDLE_BAT(APINT_TYPE_PREFIX, 15347) +HANDLE_BAT(APINT_TYPE_PREFIX, 15348) +HANDLE_BAT(APINT_TYPE_PREFIX, 15349) +HANDLE_BAT(APINT_TYPE_PREFIX, 15350) +HANDLE_BAT(APINT_TYPE_PREFIX, 15351) +HANDLE_BAT(APINT_TYPE_PREFIX, 15352) +HANDLE_BAT(APINT_TYPE_PREFIX, 15353) +HANDLE_BAT(APINT_TYPE_PREFIX, 15354) +HANDLE_BAT(APINT_TYPE_PREFIX, 15355) +HANDLE_BAT(APINT_TYPE_PREFIX, 15356) +HANDLE_BAT(APINT_TYPE_PREFIX, 15357) +HANDLE_BAT(APINT_TYPE_PREFIX, 15358) +HANDLE_BAT(APINT_TYPE_PREFIX, 15359) +HANDLE_BAT(APINT_TYPE_PREFIX, 15360) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 15 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 15361) +HANDLE_BAT(, 15362) +HANDLE_BAT(, 15363) +HANDLE_BAT(, 15364) +HANDLE_BAT(, 15365) +HANDLE_BAT(, 15366) +HANDLE_BAT(, 15367) +HANDLE_BAT(, 15368) +HANDLE_BAT(, 15369) +HANDLE_BAT(, 15370) +HANDLE_BAT(, 15371) +HANDLE_BAT(, 15372) +HANDLE_BAT(, 15373) +HANDLE_BAT(, 15374) +HANDLE_BAT(, 15375) +HANDLE_BAT(, 15376) +HANDLE_BAT(, 15377) +HANDLE_BAT(, 15378) +HANDLE_BAT(, 15379) +HANDLE_BAT(, 15380) +HANDLE_BAT(, 15381) +HANDLE_BAT(, 15382) +HANDLE_BAT(, 15383) +HANDLE_BAT(, 15384) +HANDLE_BAT(, 15385) +HANDLE_BAT(, 15386) +HANDLE_BAT(, 15387) +HANDLE_BAT(, 15388) +HANDLE_BAT(, 15389) +HANDLE_BAT(, 15390) +HANDLE_BAT(, 15391) +HANDLE_BAT(, 15392) +HANDLE_BAT(, 15393) +HANDLE_BAT(, 15394) +HANDLE_BAT(, 15395) +HANDLE_BAT(, 15396) +HANDLE_BAT(, 15397) +HANDLE_BAT(, 15398) +HANDLE_BAT(, 15399) +HANDLE_BAT(, 15400) +HANDLE_BAT(, 15401) +HANDLE_BAT(, 15402) +HANDLE_BAT(, 15403) +HANDLE_BAT(, 15404) +HANDLE_BAT(, 15405) +HANDLE_BAT(, 15406) +HANDLE_BAT(, 15407) +HANDLE_BAT(, 15408) +HANDLE_BAT(, 15409) +HANDLE_BAT(, 15410) +HANDLE_BAT(, 15411) +HANDLE_BAT(, 15412) +HANDLE_BAT(, 15413) +HANDLE_BAT(, 15414) +HANDLE_BAT(, 15415) +HANDLE_BAT(, 15416) +HANDLE_BAT(, 15417) +HANDLE_BAT(, 15418) +HANDLE_BAT(, 15419) +HANDLE_BAT(, 15420) +HANDLE_BAT(, 15421) +HANDLE_BAT(, 15422) +HANDLE_BAT(, 15423) +HANDLE_BAT(, 15424) +HANDLE_BAT(, 15425) +HANDLE_BAT(, 15426) +HANDLE_BAT(, 15427) +HANDLE_BAT(, 15428) +HANDLE_BAT(, 15429) +HANDLE_BAT(, 15430) +HANDLE_BAT(, 15431) +HANDLE_BAT(, 15432) +HANDLE_BAT(, 15433) +HANDLE_BAT(, 15434) +HANDLE_BAT(, 15435) +HANDLE_BAT(, 15436) +HANDLE_BAT(, 15437) +HANDLE_BAT(, 15438) +HANDLE_BAT(, 15439) +HANDLE_BAT(, 15440) +HANDLE_BAT(, 15441) +HANDLE_BAT(, 15442) +HANDLE_BAT(, 15443) +HANDLE_BAT(, 15444) +HANDLE_BAT(, 15445) +HANDLE_BAT(, 15446) +HANDLE_BAT(, 15447) +HANDLE_BAT(, 15448) +HANDLE_BAT(, 15449) +HANDLE_BAT(, 15450) +HANDLE_BAT(, 15451) +HANDLE_BAT(, 15452) +HANDLE_BAT(, 15453) +HANDLE_BAT(, 15454) +HANDLE_BAT(, 15455) +HANDLE_BAT(, 15456) +HANDLE_BAT(, 15457) +HANDLE_BAT(, 15458) +HANDLE_BAT(, 15459) +HANDLE_BAT(, 15460) +HANDLE_BAT(, 15461) +HANDLE_BAT(, 15462) +HANDLE_BAT(, 15463) +HANDLE_BAT(, 15464) +HANDLE_BAT(, 15465) +HANDLE_BAT(, 15466) +HANDLE_BAT(, 15467) +HANDLE_BAT(, 15468) +HANDLE_BAT(, 15469) +HANDLE_BAT(, 15470) +HANDLE_BAT(, 15471) +HANDLE_BAT(, 15472) +HANDLE_BAT(, 15473) +HANDLE_BAT(, 15474) +HANDLE_BAT(, 15475) +HANDLE_BAT(, 15476) +HANDLE_BAT(, 15477) +HANDLE_BAT(, 15478) +HANDLE_BAT(, 15479) +HANDLE_BAT(, 15480) +HANDLE_BAT(, 15481) +HANDLE_BAT(, 15482) +HANDLE_BAT(, 15483) +HANDLE_BAT(, 15484) +HANDLE_BAT(, 15485) +HANDLE_BAT(, 15486) +HANDLE_BAT(, 15487) +HANDLE_BAT(, 15488) +HANDLE_BAT(, 15489) +HANDLE_BAT(, 15490) +HANDLE_BAT(, 15491) +HANDLE_BAT(, 15492) +HANDLE_BAT(, 15493) +HANDLE_BAT(, 15494) +HANDLE_BAT(, 15495) +HANDLE_BAT(, 15496) +HANDLE_BAT(, 15497) +HANDLE_BAT(, 15498) +HANDLE_BAT(, 15499) +HANDLE_BAT(, 15500) +HANDLE_BAT(, 15501) +HANDLE_BAT(, 15502) +HANDLE_BAT(, 15503) +HANDLE_BAT(, 15504) +HANDLE_BAT(, 15505) +HANDLE_BAT(, 15506) +HANDLE_BAT(, 15507) +HANDLE_BAT(, 15508) +HANDLE_BAT(, 15509) +HANDLE_BAT(, 15510) +HANDLE_BAT(, 15511) +HANDLE_BAT(, 15512) +HANDLE_BAT(, 15513) +HANDLE_BAT(, 15514) +HANDLE_BAT(, 15515) +HANDLE_BAT(, 15516) +HANDLE_BAT(, 15517) +HANDLE_BAT(, 15518) +HANDLE_BAT(, 15519) +HANDLE_BAT(, 15520) +HANDLE_BAT(, 15521) +HANDLE_BAT(, 15522) +HANDLE_BAT(, 15523) +HANDLE_BAT(, 15524) +HANDLE_BAT(, 15525) +HANDLE_BAT(, 15526) +HANDLE_BAT(, 15527) +HANDLE_BAT(, 15528) +HANDLE_BAT(, 15529) +HANDLE_BAT(, 15530) +HANDLE_BAT(, 15531) +HANDLE_BAT(, 15532) +HANDLE_BAT(, 15533) +HANDLE_BAT(, 15534) +HANDLE_BAT(, 15535) +HANDLE_BAT(, 15536) +HANDLE_BAT(, 15537) +HANDLE_BAT(, 15538) +HANDLE_BAT(, 15539) +HANDLE_BAT(, 15540) +HANDLE_BAT(, 15541) +HANDLE_BAT(, 15542) +HANDLE_BAT(, 15543) +HANDLE_BAT(, 15544) +HANDLE_BAT(, 15545) +HANDLE_BAT(, 15546) +HANDLE_BAT(, 15547) +HANDLE_BAT(, 15548) +HANDLE_BAT(, 15549) +HANDLE_BAT(, 15550) +HANDLE_BAT(, 15551) +HANDLE_BAT(, 15552) +HANDLE_BAT(, 15553) +HANDLE_BAT(, 15554) +HANDLE_BAT(, 15555) +HANDLE_BAT(, 15556) +HANDLE_BAT(, 15557) +HANDLE_BAT(, 15558) +HANDLE_BAT(, 15559) +HANDLE_BAT(, 15560) +HANDLE_BAT(, 15561) +HANDLE_BAT(, 15562) +HANDLE_BAT(, 15563) +HANDLE_BAT(, 15564) +HANDLE_BAT(, 15565) +HANDLE_BAT(, 15566) +HANDLE_BAT(, 15567) +HANDLE_BAT(, 15568) +HANDLE_BAT(, 15569) +HANDLE_BAT(, 15570) +HANDLE_BAT(, 15571) +HANDLE_BAT(, 15572) +HANDLE_BAT(, 15573) +HANDLE_BAT(, 15574) +HANDLE_BAT(, 15575) +HANDLE_BAT(, 15576) +HANDLE_BAT(, 15577) +HANDLE_BAT(, 15578) +HANDLE_BAT(, 15579) +HANDLE_BAT(, 15580) +HANDLE_BAT(, 15581) +HANDLE_BAT(, 15582) +HANDLE_BAT(, 15583) +HANDLE_BAT(, 15584) +HANDLE_BAT(, 15585) +HANDLE_BAT(, 15586) +HANDLE_BAT(, 15587) +HANDLE_BAT(, 15588) +HANDLE_BAT(, 15589) +HANDLE_BAT(, 15590) +HANDLE_BAT(, 15591) +HANDLE_BAT(, 15592) +HANDLE_BAT(, 15593) +HANDLE_BAT(, 15594) +HANDLE_BAT(, 15595) +HANDLE_BAT(, 15596) +HANDLE_BAT(, 15597) +HANDLE_BAT(, 15598) +HANDLE_BAT(, 15599) +HANDLE_BAT(, 15600) +HANDLE_BAT(, 15601) +HANDLE_BAT(, 15602) +HANDLE_BAT(, 15603) +HANDLE_BAT(, 15604) +HANDLE_BAT(, 15605) +HANDLE_BAT(, 15606) +HANDLE_BAT(, 15607) +HANDLE_BAT(, 15608) +HANDLE_BAT(, 15609) +HANDLE_BAT(, 15610) +HANDLE_BAT(, 15611) +HANDLE_BAT(, 15612) +HANDLE_BAT(, 15613) +HANDLE_BAT(, 15614) +HANDLE_BAT(, 15615) +HANDLE_BAT(, 15616) +HANDLE_BAT(, 15617) +HANDLE_BAT(, 15618) +HANDLE_BAT(, 15619) +HANDLE_BAT(, 15620) +HANDLE_BAT(, 15621) +HANDLE_BAT(, 15622) +HANDLE_BAT(, 15623) +HANDLE_BAT(, 15624) +HANDLE_BAT(, 15625) +HANDLE_BAT(, 15626) +HANDLE_BAT(, 15627) +HANDLE_BAT(, 15628) +HANDLE_BAT(, 15629) +HANDLE_BAT(, 15630) +HANDLE_BAT(, 15631) +HANDLE_BAT(, 15632) +HANDLE_BAT(, 15633) +HANDLE_BAT(, 15634) +HANDLE_BAT(, 15635) +HANDLE_BAT(, 15636) +HANDLE_BAT(, 15637) +HANDLE_BAT(, 15638) +HANDLE_BAT(, 15639) +HANDLE_BAT(, 15640) +HANDLE_BAT(, 15641) +HANDLE_BAT(, 15642) +HANDLE_BAT(, 15643) +HANDLE_BAT(, 15644) +HANDLE_BAT(, 15645) +HANDLE_BAT(, 15646) +HANDLE_BAT(, 15647) +HANDLE_BAT(, 15648) +HANDLE_BAT(, 15649) +HANDLE_BAT(, 15650) +HANDLE_BAT(, 15651) +HANDLE_BAT(, 15652) +HANDLE_BAT(, 15653) +HANDLE_BAT(, 15654) +HANDLE_BAT(, 15655) +HANDLE_BAT(, 15656) +HANDLE_BAT(, 15657) +HANDLE_BAT(, 15658) +HANDLE_BAT(, 15659) +HANDLE_BAT(, 15660) +HANDLE_BAT(, 15661) +HANDLE_BAT(, 15662) +HANDLE_BAT(, 15663) +HANDLE_BAT(, 15664) +HANDLE_BAT(, 15665) +HANDLE_BAT(, 15666) +HANDLE_BAT(, 15667) +HANDLE_BAT(, 15668) +HANDLE_BAT(, 15669) +HANDLE_BAT(, 15670) +HANDLE_BAT(, 15671) +HANDLE_BAT(, 15672) +HANDLE_BAT(, 15673) +HANDLE_BAT(, 15674) +HANDLE_BAT(, 15675) +HANDLE_BAT(, 15676) +HANDLE_BAT(, 15677) +HANDLE_BAT(, 15678) +HANDLE_BAT(, 15679) +HANDLE_BAT(, 15680) +HANDLE_BAT(, 15681) +HANDLE_BAT(, 15682) +HANDLE_BAT(, 15683) +HANDLE_BAT(, 15684) +HANDLE_BAT(, 15685) +HANDLE_BAT(, 15686) +HANDLE_BAT(, 15687) +HANDLE_BAT(, 15688) +HANDLE_BAT(, 15689) +HANDLE_BAT(, 15690) +HANDLE_BAT(, 15691) +HANDLE_BAT(, 15692) +HANDLE_BAT(, 15693) +HANDLE_BAT(, 15694) +HANDLE_BAT(, 15695) +HANDLE_BAT(, 15696) +HANDLE_BAT(, 15697) +HANDLE_BAT(, 15698) +HANDLE_BAT(, 15699) +HANDLE_BAT(, 15700) +HANDLE_BAT(, 15701) +HANDLE_BAT(, 15702) +HANDLE_BAT(, 15703) +HANDLE_BAT(, 15704) +HANDLE_BAT(, 15705) +HANDLE_BAT(, 15706) +HANDLE_BAT(, 15707) +HANDLE_BAT(, 15708) +HANDLE_BAT(, 15709) +HANDLE_BAT(, 15710) +HANDLE_BAT(, 15711) +HANDLE_BAT(, 15712) +HANDLE_BAT(, 15713) +HANDLE_BAT(, 15714) +HANDLE_BAT(, 15715) +HANDLE_BAT(, 15716) +HANDLE_BAT(, 15717) +HANDLE_BAT(, 15718) +HANDLE_BAT(, 15719) +HANDLE_BAT(, 15720) +HANDLE_BAT(, 15721) +HANDLE_BAT(, 15722) +HANDLE_BAT(, 15723) +HANDLE_BAT(, 15724) +HANDLE_BAT(, 15725) +HANDLE_BAT(, 15726) +HANDLE_BAT(, 15727) +HANDLE_BAT(, 15728) +HANDLE_BAT(, 15729) +HANDLE_BAT(, 15730) +HANDLE_BAT(, 15731) +HANDLE_BAT(, 15732) +HANDLE_BAT(, 15733) +HANDLE_BAT(, 15734) +HANDLE_BAT(, 15735) +HANDLE_BAT(, 15736) +HANDLE_BAT(, 15737) +HANDLE_BAT(, 15738) +HANDLE_BAT(, 15739) +HANDLE_BAT(, 15740) +HANDLE_BAT(, 15741) +HANDLE_BAT(, 15742) +HANDLE_BAT(, 15743) +HANDLE_BAT(, 15744) +HANDLE_BAT(, 15745) +HANDLE_BAT(, 15746) +HANDLE_BAT(, 15747) +HANDLE_BAT(, 15748) +HANDLE_BAT(, 15749) +HANDLE_BAT(, 15750) +HANDLE_BAT(, 15751) +HANDLE_BAT(, 15752) +HANDLE_BAT(, 15753) +HANDLE_BAT(, 15754) +HANDLE_BAT(, 15755) +HANDLE_BAT(, 15756) +HANDLE_BAT(, 15757) +HANDLE_BAT(, 15758) +HANDLE_BAT(, 15759) +HANDLE_BAT(, 15760) +HANDLE_BAT(, 15761) +HANDLE_BAT(, 15762) +HANDLE_BAT(, 15763) +HANDLE_BAT(, 15764) +HANDLE_BAT(, 15765) +HANDLE_BAT(, 15766) +HANDLE_BAT(, 15767) +HANDLE_BAT(, 15768) +HANDLE_BAT(, 15769) +HANDLE_BAT(, 15770) +HANDLE_BAT(, 15771) +HANDLE_BAT(, 15772) +HANDLE_BAT(, 15773) +HANDLE_BAT(, 15774) +HANDLE_BAT(, 15775) +HANDLE_BAT(, 15776) +HANDLE_BAT(, 15777) +HANDLE_BAT(, 15778) +HANDLE_BAT(, 15779) +HANDLE_BAT(, 15780) +HANDLE_BAT(, 15781) +HANDLE_BAT(, 15782) +HANDLE_BAT(, 15783) +HANDLE_BAT(, 15784) +HANDLE_BAT(, 15785) +HANDLE_BAT(, 15786) +HANDLE_BAT(, 15787) +HANDLE_BAT(, 15788) +HANDLE_BAT(, 15789) +HANDLE_BAT(, 15790) +HANDLE_BAT(, 15791) +HANDLE_BAT(, 15792) +HANDLE_BAT(, 15793) +HANDLE_BAT(, 15794) +HANDLE_BAT(, 15795) +HANDLE_BAT(, 15796) +HANDLE_BAT(, 15797) +HANDLE_BAT(, 15798) +HANDLE_BAT(, 15799) +HANDLE_BAT(, 15800) +HANDLE_BAT(, 15801) +HANDLE_BAT(, 15802) +HANDLE_BAT(, 15803) +HANDLE_BAT(, 15804) +HANDLE_BAT(, 15805) +HANDLE_BAT(, 15806) +HANDLE_BAT(, 15807) +HANDLE_BAT(, 15808) +HANDLE_BAT(, 15809) +HANDLE_BAT(, 15810) +HANDLE_BAT(, 15811) +HANDLE_BAT(, 15812) +HANDLE_BAT(, 15813) +HANDLE_BAT(, 15814) +HANDLE_BAT(, 15815) +HANDLE_BAT(, 15816) +HANDLE_BAT(, 15817) +HANDLE_BAT(, 15818) +HANDLE_BAT(, 15819) +HANDLE_BAT(, 15820) +HANDLE_BAT(, 15821) +HANDLE_BAT(, 15822) +HANDLE_BAT(, 15823) +HANDLE_BAT(, 15824) +HANDLE_BAT(, 15825) +HANDLE_BAT(, 15826) +HANDLE_BAT(, 15827) +HANDLE_BAT(, 15828) +HANDLE_BAT(, 15829) +HANDLE_BAT(, 15830) +HANDLE_BAT(, 15831) +HANDLE_BAT(, 15832) +HANDLE_BAT(, 15833) +HANDLE_BAT(, 15834) +HANDLE_BAT(, 15835) +HANDLE_BAT(, 15836) +HANDLE_BAT(, 15837) +HANDLE_BAT(, 15838) +HANDLE_BAT(, 15839) +HANDLE_BAT(, 15840) +HANDLE_BAT(, 15841) +HANDLE_BAT(, 15842) +HANDLE_BAT(, 15843) +HANDLE_BAT(, 15844) +HANDLE_BAT(, 15845) +HANDLE_BAT(, 15846) +HANDLE_BAT(, 15847) +HANDLE_BAT(, 15848) +HANDLE_BAT(, 15849) +HANDLE_BAT(, 15850) +HANDLE_BAT(, 15851) +HANDLE_BAT(, 15852) +HANDLE_BAT(, 15853) +HANDLE_BAT(, 15854) +HANDLE_BAT(, 15855) +HANDLE_BAT(, 15856) +HANDLE_BAT(, 15857) +HANDLE_BAT(, 15858) +HANDLE_BAT(, 15859) +HANDLE_BAT(, 15860) +HANDLE_BAT(, 15861) +HANDLE_BAT(, 15862) +HANDLE_BAT(, 15863) +HANDLE_BAT(, 15864) +HANDLE_BAT(, 15865) +HANDLE_BAT(, 15866) +HANDLE_BAT(, 15867) +HANDLE_BAT(, 15868) +HANDLE_BAT(, 15869) +HANDLE_BAT(, 15870) +HANDLE_BAT(, 15871) +HANDLE_BAT(, 15872) +HANDLE_BAT(, 15873) +HANDLE_BAT(, 15874) +HANDLE_BAT(, 15875) +HANDLE_BAT(, 15876) +HANDLE_BAT(, 15877) +HANDLE_BAT(, 15878) +HANDLE_BAT(, 15879) +HANDLE_BAT(, 15880) +HANDLE_BAT(, 15881) +HANDLE_BAT(, 15882) +HANDLE_BAT(, 15883) +HANDLE_BAT(, 15884) +HANDLE_BAT(, 15885) +HANDLE_BAT(, 15886) +HANDLE_BAT(, 15887) +HANDLE_BAT(, 15888) +HANDLE_BAT(, 15889) +HANDLE_BAT(, 15890) +HANDLE_BAT(, 15891) +HANDLE_BAT(, 15892) +HANDLE_BAT(, 15893) +HANDLE_BAT(, 15894) +HANDLE_BAT(, 15895) +HANDLE_BAT(, 15896) +HANDLE_BAT(, 15897) +HANDLE_BAT(, 15898) +HANDLE_BAT(, 15899) +HANDLE_BAT(, 15900) +HANDLE_BAT(, 15901) +HANDLE_BAT(, 15902) +HANDLE_BAT(, 15903) +HANDLE_BAT(, 15904) +HANDLE_BAT(, 15905) +HANDLE_BAT(, 15906) +HANDLE_BAT(, 15907) +HANDLE_BAT(, 15908) +HANDLE_BAT(, 15909) +HANDLE_BAT(, 15910) +HANDLE_BAT(, 15911) +HANDLE_BAT(, 15912) +HANDLE_BAT(, 15913) +HANDLE_BAT(, 15914) +HANDLE_BAT(, 15915) +HANDLE_BAT(, 15916) +HANDLE_BAT(, 15917) +HANDLE_BAT(, 15918) +HANDLE_BAT(, 15919) +HANDLE_BAT(, 15920) +HANDLE_BAT(, 15921) +HANDLE_BAT(, 15922) +HANDLE_BAT(, 15923) +HANDLE_BAT(, 15924) +HANDLE_BAT(, 15925) +HANDLE_BAT(, 15926) +HANDLE_BAT(, 15927) +HANDLE_BAT(, 15928) +HANDLE_BAT(, 15929) +HANDLE_BAT(, 15930) +HANDLE_BAT(, 15931) +HANDLE_BAT(, 15932) +HANDLE_BAT(, 15933) +HANDLE_BAT(, 15934) +HANDLE_BAT(, 15935) +HANDLE_BAT(, 15936) +HANDLE_BAT(, 15937) +HANDLE_BAT(, 15938) +HANDLE_BAT(, 15939) +HANDLE_BAT(, 15940) +HANDLE_BAT(, 15941) +HANDLE_BAT(, 15942) +HANDLE_BAT(, 15943) +HANDLE_BAT(, 15944) +HANDLE_BAT(, 15945) +HANDLE_BAT(, 15946) +HANDLE_BAT(, 15947) +HANDLE_BAT(, 15948) +HANDLE_BAT(, 15949) +HANDLE_BAT(, 15950) +HANDLE_BAT(, 15951) +HANDLE_BAT(, 15952) +HANDLE_BAT(, 15953) +HANDLE_BAT(, 15954) +HANDLE_BAT(, 15955) +HANDLE_BAT(, 15956) +HANDLE_BAT(, 15957) +HANDLE_BAT(, 15958) +HANDLE_BAT(, 15959) +HANDLE_BAT(, 15960) +HANDLE_BAT(, 15961) +HANDLE_BAT(, 15962) +HANDLE_BAT(, 15963) +HANDLE_BAT(, 15964) +HANDLE_BAT(, 15965) +HANDLE_BAT(, 15966) +HANDLE_BAT(, 15967) +HANDLE_BAT(, 15968) +HANDLE_BAT(, 15969) +HANDLE_BAT(, 15970) +HANDLE_BAT(, 15971) +HANDLE_BAT(, 15972) +HANDLE_BAT(, 15973) +HANDLE_BAT(, 15974) +HANDLE_BAT(, 15975) +HANDLE_BAT(, 15976) +HANDLE_BAT(, 15977) +HANDLE_BAT(, 15978) +HANDLE_BAT(, 15979) +HANDLE_BAT(, 15980) +HANDLE_BAT(, 15981) +HANDLE_BAT(, 15982) +HANDLE_BAT(, 15983) +HANDLE_BAT(, 15984) +HANDLE_BAT(, 15985) +HANDLE_BAT(, 15986) +HANDLE_BAT(, 15987) +HANDLE_BAT(, 15988) +HANDLE_BAT(, 15989) +HANDLE_BAT(, 15990) +HANDLE_BAT(, 15991) +HANDLE_BAT(, 15992) +HANDLE_BAT(, 15993) +HANDLE_BAT(, 15994) +HANDLE_BAT(, 15995) +HANDLE_BAT(, 15996) +HANDLE_BAT(, 15997) +HANDLE_BAT(, 15998) +HANDLE_BAT(, 15999) +HANDLE_BAT(, 16000) +HANDLE_BAT(, 16001) +HANDLE_BAT(, 16002) +HANDLE_BAT(, 16003) +HANDLE_BAT(, 16004) +HANDLE_BAT(, 16005) +HANDLE_BAT(, 16006) +HANDLE_BAT(, 16007) +HANDLE_BAT(, 16008) +HANDLE_BAT(, 16009) +HANDLE_BAT(, 16010) +HANDLE_BAT(, 16011) +HANDLE_BAT(, 16012) +HANDLE_BAT(, 16013) +HANDLE_BAT(, 16014) +HANDLE_BAT(, 16015) +HANDLE_BAT(, 16016) +HANDLE_BAT(, 16017) +HANDLE_BAT(, 16018) +HANDLE_BAT(, 16019) +HANDLE_BAT(, 16020) +HANDLE_BAT(, 16021) +HANDLE_BAT(, 16022) +HANDLE_BAT(, 16023) +HANDLE_BAT(, 16024) +HANDLE_BAT(, 16025) +HANDLE_BAT(, 16026) +HANDLE_BAT(, 16027) +HANDLE_BAT(, 16028) +HANDLE_BAT(, 16029) +HANDLE_BAT(, 16030) +HANDLE_BAT(, 16031) +HANDLE_BAT(, 16032) +HANDLE_BAT(, 16033) +HANDLE_BAT(, 16034) +HANDLE_BAT(, 16035) +HANDLE_BAT(, 16036) +HANDLE_BAT(, 16037) +HANDLE_BAT(, 16038) +HANDLE_BAT(, 16039) +HANDLE_BAT(, 16040) +HANDLE_BAT(, 16041) +HANDLE_BAT(, 16042) +HANDLE_BAT(, 16043) +HANDLE_BAT(, 16044) +HANDLE_BAT(, 16045) +HANDLE_BAT(, 16046) +HANDLE_BAT(, 16047) +HANDLE_BAT(, 16048) +HANDLE_BAT(, 16049) +HANDLE_BAT(, 16050) +HANDLE_BAT(, 16051) +HANDLE_BAT(, 16052) +HANDLE_BAT(, 16053) +HANDLE_BAT(, 16054) +HANDLE_BAT(, 16055) +HANDLE_BAT(, 16056) +HANDLE_BAT(, 16057) +HANDLE_BAT(, 16058) +HANDLE_BAT(, 16059) +HANDLE_BAT(, 16060) +HANDLE_BAT(, 16061) +HANDLE_BAT(, 16062) +HANDLE_BAT(, 16063) +HANDLE_BAT(, 16064) +HANDLE_BAT(, 16065) +HANDLE_BAT(, 16066) +HANDLE_BAT(, 16067) +HANDLE_BAT(, 16068) +HANDLE_BAT(, 16069) +HANDLE_BAT(, 16070) +HANDLE_BAT(, 16071) +HANDLE_BAT(, 16072) +HANDLE_BAT(, 16073) +HANDLE_BAT(, 16074) +HANDLE_BAT(, 16075) +HANDLE_BAT(, 16076) +HANDLE_BAT(, 16077) +HANDLE_BAT(, 16078) +HANDLE_BAT(, 16079) +HANDLE_BAT(, 16080) +HANDLE_BAT(, 16081) +HANDLE_BAT(, 16082) +HANDLE_BAT(, 16083) +HANDLE_BAT(, 16084) +HANDLE_BAT(, 16085) +HANDLE_BAT(, 16086) +HANDLE_BAT(, 16087) +HANDLE_BAT(, 16088) +HANDLE_BAT(, 16089) +HANDLE_BAT(, 16090) +HANDLE_BAT(, 16091) +HANDLE_BAT(, 16092) +HANDLE_BAT(, 16093) +HANDLE_BAT(, 16094) +HANDLE_BAT(, 16095) +HANDLE_BAT(, 16096) +HANDLE_BAT(, 16097) +HANDLE_BAT(, 16098) +HANDLE_BAT(, 16099) +HANDLE_BAT(, 16100) +HANDLE_BAT(, 16101) +HANDLE_BAT(, 16102) +HANDLE_BAT(, 16103) +HANDLE_BAT(, 16104) +HANDLE_BAT(, 16105) +HANDLE_BAT(, 16106) +HANDLE_BAT(, 16107) +HANDLE_BAT(, 16108) +HANDLE_BAT(, 16109) +HANDLE_BAT(, 16110) +HANDLE_BAT(, 16111) +HANDLE_BAT(, 16112) +HANDLE_BAT(, 16113) +HANDLE_BAT(, 16114) +HANDLE_BAT(, 16115) +HANDLE_BAT(, 16116) +HANDLE_BAT(, 16117) +HANDLE_BAT(, 16118) +HANDLE_BAT(, 16119) +HANDLE_BAT(, 16120) +HANDLE_BAT(, 16121) +HANDLE_BAT(, 16122) +HANDLE_BAT(, 16123) +HANDLE_BAT(, 16124) +HANDLE_BAT(, 16125) +HANDLE_BAT(, 16126) +HANDLE_BAT(, 16127) +HANDLE_BAT(, 16128) +HANDLE_BAT(, 16129) +HANDLE_BAT(, 16130) +HANDLE_BAT(, 16131) +HANDLE_BAT(, 16132) +HANDLE_BAT(, 16133) +HANDLE_BAT(, 16134) +HANDLE_BAT(, 16135) +HANDLE_BAT(, 16136) +HANDLE_BAT(, 16137) +HANDLE_BAT(, 16138) +HANDLE_BAT(, 16139) +HANDLE_BAT(, 16140) +HANDLE_BAT(, 16141) +HANDLE_BAT(, 16142) +HANDLE_BAT(, 16143) +HANDLE_BAT(, 16144) +HANDLE_BAT(, 16145) +HANDLE_BAT(, 16146) +HANDLE_BAT(, 16147) +HANDLE_BAT(, 16148) +HANDLE_BAT(, 16149) +HANDLE_BAT(, 16150) +HANDLE_BAT(, 16151) +HANDLE_BAT(, 16152) +HANDLE_BAT(, 16153) +HANDLE_BAT(, 16154) +HANDLE_BAT(, 16155) +HANDLE_BAT(, 16156) +HANDLE_BAT(, 16157) +HANDLE_BAT(, 16158) +HANDLE_BAT(, 16159) +HANDLE_BAT(, 16160) +HANDLE_BAT(, 16161) +HANDLE_BAT(, 16162) +HANDLE_BAT(, 16163) +HANDLE_BAT(, 16164) +HANDLE_BAT(, 16165) +HANDLE_BAT(, 16166) +HANDLE_BAT(, 16167) +HANDLE_BAT(, 16168) +HANDLE_BAT(, 16169) +HANDLE_BAT(, 16170) +HANDLE_BAT(, 16171) +HANDLE_BAT(, 16172) +HANDLE_BAT(, 16173) +HANDLE_BAT(, 16174) +HANDLE_BAT(, 16175) +HANDLE_BAT(, 16176) +HANDLE_BAT(, 16177) +HANDLE_BAT(, 16178) +HANDLE_BAT(, 16179) +HANDLE_BAT(, 16180) +HANDLE_BAT(, 16181) +HANDLE_BAT(, 16182) +HANDLE_BAT(, 16183) +HANDLE_BAT(, 16184) +HANDLE_BAT(, 16185) +HANDLE_BAT(, 16186) +HANDLE_BAT(, 16187) +HANDLE_BAT(, 16188) +HANDLE_BAT(, 16189) +HANDLE_BAT(, 16190) +HANDLE_BAT(, 16191) +HANDLE_BAT(, 16192) +HANDLE_BAT(, 16193) +HANDLE_BAT(, 16194) +HANDLE_BAT(, 16195) +HANDLE_BAT(, 16196) +HANDLE_BAT(, 16197) +HANDLE_BAT(, 16198) +HANDLE_BAT(, 16199) +HANDLE_BAT(, 16200) +HANDLE_BAT(, 16201) +HANDLE_BAT(, 16202) +HANDLE_BAT(, 16203) +HANDLE_BAT(, 16204) +HANDLE_BAT(, 16205) +HANDLE_BAT(, 16206) +HANDLE_BAT(, 16207) +HANDLE_BAT(, 16208) +HANDLE_BAT(, 16209) +HANDLE_BAT(, 16210) +HANDLE_BAT(, 16211) +HANDLE_BAT(, 16212) +HANDLE_BAT(, 16213) +HANDLE_BAT(, 16214) +HANDLE_BAT(, 16215) +HANDLE_BAT(, 16216) +HANDLE_BAT(, 16217) +HANDLE_BAT(, 16218) +HANDLE_BAT(, 16219) +HANDLE_BAT(, 16220) +HANDLE_BAT(, 16221) +HANDLE_BAT(, 16222) +HANDLE_BAT(, 16223) +HANDLE_BAT(, 16224) +HANDLE_BAT(, 16225) +HANDLE_BAT(, 16226) +HANDLE_BAT(, 16227) +HANDLE_BAT(, 16228) +HANDLE_BAT(, 16229) +HANDLE_BAT(, 16230) +HANDLE_BAT(, 16231) +HANDLE_BAT(, 16232) +HANDLE_BAT(, 16233) +HANDLE_BAT(, 16234) +HANDLE_BAT(, 16235) +HANDLE_BAT(, 16236) +HANDLE_BAT(, 16237) +HANDLE_BAT(, 16238) +HANDLE_BAT(, 16239) +HANDLE_BAT(, 16240) +HANDLE_BAT(, 16241) +HANDLE_BAT(, 16242) +HANDLE_BAT(, 16243) +HANDLE_BAT(, 16244) +HANDLE_BAT(, 16245) +HANDLE_BAT(, 16246) +HANDLE_BAT(, 16247) +HANDLE_BAT(, 16248) +HANDLE_BAT(, 16249) +HANDLE_BAT(, 16250) +HANDLE_BAT(, 16251) +HANDLE_BAT(, 16252) +HANDLE_BAT(, 16253) +HANDLE_BAT(, 16254) +HANDLE_BAT(, 16255) +HANDLE_BAT(, 16256) +HANDLE_BAT(, 16257) +HANDLE_BAT(, 16258) +HANDLE_BAT(, 16259) +HANDLE_BAT(, 16260) +HANDLE_BAT(, 16261) +HANDLE_BAT(, 16262) +HANDLE_BAT(, 16263) +HANDLE_BAT(, 16264) +HANDLE_BAT(, 16265) +HANDLE_BAT(, 16266) +HANDLE_BAT(, 16267) +HANDLE_BAT(, 16268) +HANDLE_BAT(, 16269) +HANDLE_BAT(, 16270) +HANDLE_BAT(, 16271) +HANDLE_BAT(, 16272) +HANDLE_BAT(, 16273) +HANDLE_BAT(, 16274) +HANDLE_BAT(, 16275) +HANDLE_BAT(, 16276) +HANDLE_BAT(, 16277) +HANDLE_BAT(, 16278) +HANDLE_BAT(, 16279) +HANDLE_BAT(, 16280) +HANDLE_BAT(, 16281) +HANDLE_BAT(, 16282) +HANDLE_BAT(, 16283) +HANDLE_BAT(, 16284) +HANDLE_BAT(, 16285) +HANDLE_BAT(, 16286) +HANDLE_BAT(, 16287) +HANDLE_BAT(, 16288) +HANDLE_BAT(, 16289) +HANDLE_BAT(, 16290) +HANDLE_BAT(, 16291) +HANDLE_BAT(, 16292) +HANDLE_BAT(, 16293) +HANDLE_BAT(, 16294) +HANDLE_BAT(, 16295) +HANDLE_BAT(, 16296) +HANDLE_BAT(, 16297) +HANDLE_BAT(, 16298) +HANDLE_BAT(, 16299) +HANDLE_BAT(, 16300) +HANDLE_BAT(, 16301) +HANDLE_BAT(, 16302) +HANDLE_BAT(, 16303) +HANDLE_BAT(, 16304) +HANDLE_BAT(, 16305) +HANDLE_BAT(, 16306) +HANDLE_BAT(, 16307) +HANDLE_BAT(, 16308) +HANDLE_BAT(, 16309) +HANDLE_BAT(, 16310) +HANDLE_BAT(, 16311) +HANDLE_BAT(, 16312) +HANDLE_BAT(, 16313) +HANDLE_BAT(, 16314) +HANDLE_BAT(, 16315) +HANDLE_BAT(, 16316) +HANDLE_BAT(, 16317) +HANDLE_BAT(, 16318) +HANDLE_BAT(, 16319) +HANDLE_BAT(, 16320) +HANDLE_BAT(, 16321) +HANDLE_BAT(, 16322) +HANDLE_BAT(, 16323) +HANDLE_BAT(, 16324) +HANDLE_BAT(, 16325) +HANDLE_BAT(, 16326) +HANDLE_BAT(, 16327) +HANDLE_BAT(, 16328) +HANDLE_BAT(, 16329) +HANDLE_BAT(, 16330) +HANDLE_BAT(, 16331) +HANDLE_BAT(, 16332) +HANDLE_BAT(, 16333) +HANDLE_BAT(, 16334) +HANDLE_BAT(, 16335) +HANDLE_BAT(, 16336) +HANDLE_BAT(, 16337) +HANDLE_BAT(, 16338) +HANDLE_BAT(, 16339) +HANDLE_BAT(, 16340) +HANDLE_BAT(, 16341) +HANDLE_BAT(, 16342) +HANDLE_BAT(, 16343) +HANDLE_BAT(, 16344) +HANDLE_BAT(, 16345) +HANDLE_BAT(, 16346) +HANDLE_BAT(, 16347) +HANDLE_BAT(, 16348) +HANDLE_BAT(, 16349) +HANDLE_BAT(, 16350) +HANDLE_BAT(, 16351) +HANDLE_BAT(, 16352) +HANDLE_BAT(, 16353) +HANDLE_BAT(, 16354) +HANDLE_BAT(, 16355) +HANDLE_BAT(, 16356) +HANDLE_BAT(, 16357) +HANDLE_BAT(, 16358) +HANDLE_BAT(, 16359) +HANDLE_BAT(, 16360) +HANDLE_BAT(, 16361) +HANDLE_BAT(, 16362) +HANDLE_BAT(, 16363) +HANDLE_BAT(, 16364) +HANDLE_BAT(, 16365) +HANDLE_BAT(, 16366) +HANDLE_BAT(, 16367) +HANDLE_BAT(, 16368) +HANDLE_BAT(, 16369) +HANDLE_BAT(, 16370) +HANDLE_BAT(, 16371) +HANDLE_BAT(, 16372) +HANDLE_BAT(, 16373) +HANDLE_BAT(, 16374) +HANDLE_BAT(, 16375) +HANDLE_BAT(, 16376) +HANDLE_BAT(, 16377) +HANDLE_BAT(, 16378) +HANDLE_BAT(, 16379) +HANDLE_BAT(, 16380) +HANDLE_BAT(, 16381) +HANDLE_BAT(, 16382) +HANDLE_BAT(, 16383) +HANDLE_BAT(, 16384) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 15361) +HANDLE_BAT(APINT_TYPE_PREFIX, 15362) +HANDLE_BAT(APINT_TYPE_PREFIX, 15363) +HANDLE_BAT(APINT_TYPE_PREFIX, 15364) +HANDLE_BAT(APINT_TYPE_PREFIX, 15365) +HANDLE_BAT(APINT_TYPE_PREFIX, 15366) +HANDLE_BAT(APINT_TYPE_PREFIX, 15367) +HANDLE_BAT(APINT_TYPE_PREFIX, 15368) +HANDLE_BAT(APINT_TYPE_PREFIX, 15369) +HANDLE_BAT(APINT_TYPE_PREFIX, 15370) +HANDLE_BAT(APINT_TYPE_PREFIX, 15371) +HANDLE_BAT(APINT_TYPE_PREFIX, 15372) +HANDLE_BAT(APINT_TYPE_PREFIX, 15373) +HANDLE_BAT(APINT_TYPE_PREFIX, 15374) +HANDLE_BAT(APINT_TYPE_PREFIX, 15375) +HANDLE_BAT(APINT_TYPE_PREFIX, 15376) +HANDLE_BAT(APINT_TYPE_PREFIX, 15377) +HANDLE_BAT(APINT_TYPE_PREFIX, 15378) +HANDLE_BAT(APINT_TYPE_PREFIX, 15379) +HANDLE_BAT(APINT_TYPE_PREFIX, 15380) +HANDLE_BAT(APINT_TYPE_PREFIX, 15381) +HANDLE_BAT(APINT_TYPE_PREFIX, 15382) +HANDLE_BAT(APINT_TYPE_PREFIX, 15383) +HANDLE_BAT(APINT_TYPE_PREFIX, 15384) +HANDLE_BAT(APINT_TYPE_PREFIX, 15385) +HANDLE_BAT(APINT_TYPE_PREFIX, 15386) +HANDLE_BAT(APINT_TYPE_PREFIX, 15387) +HANDLE_BAT(APINT_TYPE_PREFIX, 15388) +HANDLE_BAT(APINT_TYPE_PREFIX, 15389) +HANDLE_BAT(APINT_TYPE_PREFIX, 15390) +HANDLE_BAT(APINT_TYPE_PREFIX, 15391) +HANDLE_BAT(APINT_TYPE_PREFIX, 15392) +HANDLE_BAT(APINT_TYPE_PREFIX, 15393) +HANDLE_BAT(APINT_TYPE_PREFIX, 15394) +HANDLE_BAT(APINT_TYPE_PREFIX, 15395) +HANDLE_BAT(APINT_TYPE_PREFIX, 15396) +HANDLE_BAT(APINT_TYPE_PREFIX, 15397) +HANDLE_BAT(APINT_TYPE_PREFIX, 15398) +HANDLE_BAT(APINT_TYPE_PREFIX, 15399) +HANDLE_BAT(APINT_TYPE_PREFIX, 15400) +HANDLE_BAT(APINT_TYPE_PREFIX, 15401) +HANDLE_BAT(APINT_TYPE_PREFIX, 15402) +HANDLE_BAT(APINT_TYPE_PREFIX, 15403) +HANDLE_BAT(APINT_TYPE_PREFIX, 15404) +HANDLE_BAT(APINT_TYPE_PREFIX, 15405) +HANDLE_BAT(APINT_TYPE_PREFIX, 15406) +HANDLE_BAT(APINT_TYPE_PREFIX, 15407) +HANDLE_BAT(APINT_TYPE_PREFIX, 15408) +HANDLE_BAT(APINT_TYPE_PREFIX, 15409) +HANDLE_BAT(APINT_TYPE_PREFIX, 15410) +HANDLE_BAT(APINT_TYPE_PREFIX, 15411) +HANDLE_BAT(APINT_TYPE_PREFIX, 15412) +HANDLE_BAT(APINT_TYPE_PREFIX, 15413) +HANDLE_BAT(APINT_TYPE_PREFIX, 15414) +HANDLE_BAT(APINT_TYPE_PREFIX, 15415) +HANDLE_BAT(APINT_TYPE_PREFIX, 15416) +HANDLE_BAT(APINT_TYPE_PREFIX, 15417) +HANDLE_BAT(APINT_TYPE_PREFIX, 15418) +HANDLE_BAT(APINT_TYPE_PREFIX, 15419) +HANDLE_BAT(APINT_TYPE_PREFIX, 15420) +HANDLE_BAT(APINT_TYPE_PREFIX, 15421) +HANDLE_BAT(APINT_TYPE_PREFIX, 15422) +HANDLE_BAT(APINT_TYPE_PREFIX, 15423) +HANDLE_BAT(APINT_TYPE_PREFIX, 15424) +HANDLE_BAT(APINT_TYPE_PREFIX, 15425) +HANDLE_BAT(APINT_TYPE_PREFIX, 15426) +HANDLE_BAT(APINT_TYPE_PREFIX, 15427) +HANDLE_BAT(APINT_TYPE_PREFIX, 15428) +HANDLE_BAT(APINT_TYPE_PREFIX, 15429) +HANDLE_BAT(APINT_TYPE_PREFIX, 15430) +HANDLE_BAT(APINT_TYPE_PREFIX, 15431) +HANDLE_BAT(APINT_TYPE_PREFIX, 15432) +HANDLE_BAT(APINT_TYPE_PREFIX, 15433) +HANDLE_BAT(APINT_TYPE_PREFIX, 15434) +HANDLE_BAT(APINT_TYPE_PREFIX, 15435) +HANDLE_BAT(APINT_TYPE_PREFIX, 15436) +HANDLE_BAT(APINT_TYPE_PREFIX, 15437) +HANDLE_BAT(APINT_TYPE_PREFIX, 15438) +HANDLE_BAT(APINT_TYPE_PREFIX, 15439) +HANDLE_BAT(APINT_TYPE_PREFIX, 15440) +HANDLE_BAT(APINT_TYPE_PREFIX, 15441) +HANDLE_BAT(APINT_TYPE_PREFIX, 15442) +HANDLE_BAT(APINT_TYPE_PREFIX, 15443) +HANDLE_BAT(APINT_TYPE_PREFIX, 15444) +HANDLE_BAT(APINT_TYPE_PREFIX, 15445) +HANDLE_BAT(APINT_TYPE_PREFIX, 15446) +HANDLE_BAT(APINT_TYPE_PREFIX, 15447) +HANDLE_BAT(APINT_TYPE_PREFIX, 15448) +HANDLE_BAT(APINT_TYPE_PREFIX, 15449) +HANDLE_BAT(APINT_TYPE_PREFIX, 15450) +HANDLE_BAT(APINT_TYPE_PREFIX, 15451) +HANDLE_BAT(APINT_TYPE_PREFIX, 15452) +HANDLE_BAT(APINT_TYPE_PREFIX, 15453) +HANDLE_BAT(APINT_TYPE_PREFIX, 15454) +HANDLE_BAT(APINT_TYPE_PREFIX, 15455) +HANDLE_BAT(APINT_TYPE_PREFIX, 15456) +HANDLE_BAT(APINT_TYPE_PREFIX, 15457) +HANDLE_BAT(APINT_TYPE_PREFIX, 15458) +HANDLE_BAT(APINT_TYPE_PREFIX, 15459) +HANDLE_BAT(APINT_TYPE_PREFIX, 15460) +HANDLE_BAT(APINT_TYPE_PREFIX, 15461) +HANDLE_BAT(APINT_TYPE_PREFIX, 15462) +HANDLE_BAT(APINT_TYPE_PREFIX, 15463) +HANDLE_BAT(APINT_TYPE_PREFIX, 15464) +HANDLE_BAT(APINT_TYPE_PREFIX, 15465) +HANDLE_BAT(APINT_TYPE_PREFIX, 15466) +HANDLE_BAT(APINT_TYPE_PREFIX, 15467) +HANDLE_BAT(APINT_TYPE_PREFIX, 15468) +HANDLE_BAT(APINT_TYPE_PREFIX, 15469) +HANDLE_BAT(APINT_TYPE_PREFIX, 15470) +HANDLE_BAT(APINT_TYPE_PREFIX, 15471) +HANDLE_BAT(APINT_TYPE_PREFIX, 15472) +HANDLE_BAT(APINT_TYPE_PREFIX, 15473) +HANDLE_BAT(APINT_TYPE_PREFIX, 15474) +HANDLE_BAT(APINT_TYPE_PREFIX, 15475) +HANDLE_BAT(APINT_TYPE_PREFIX, 15476) +HANDLE_BAT(APINT_TYPE_PREFIX, 15477) +HANDLE_BAT(APINT_TYPE_PREFIX, 15478) +HANDLE_BAT(APINT_TYPE_PREFIX, 15479) +HANDLE_BAT(APINT_TYPE_PREFIX, 15480) +HANDLE_BAT(APINT_TYPE_PREFIX, 15481) +HANDLE_BAT(APINT_TYPE_PREFIX, 15482) +HANDLE_BAT(APINT_TYPE_PREFIX, 15483) +HANDLE_BAT(APINT_TYPE_PREFIX, 15484) +HANDLE_BAT(APINT_TYPE_PREFIX, 15485) +HANDLE_BAT(APINT_TYPE_PREFIX, 15486) +HANDLE_BAT(APINT_TYPE_PREFIX, 15487) +HANDLE_BAT(APINT_TYPE_PREFIX, 15488) +HANDLE_BAT(APINT_TYPE_PREFIX, 15489) +HANDLE_BAT(APINT_TYPE_PREFIX, 15490) +HANDLE_BAT(APINT_TYPE_PREFIX, 15491) +HANDLE_BAT(APINT_TYPE_PREFIX, 15492) +HANDLE_BAT(APINT_TYPE_PREFIX, 15493) +HANDLE_BAT(APINT_TYPE_PREFIX, 15494) +HANDLE_BAT(APINT_TYPE_PREFIX, 15495) +HANDLE_BAT(APINT_TYPE_PREFIX, 15496) +HANDLE_BAT(APINT_TYPE_PREFIX, 15497) +HANDLE_BAT(APINT_TYPE_PREFIX, 15498) +HANDLE_BAT(APINT_TYPE_PREFIX, 15499) +HANDLE_BAT(APINT_TYPE_PREFIX, 15500) +HANDLE_BAT(APINT_TYPE_PREFIX, 15501) +HANDLE_BAT(APINT_TYPE_PREFIX, 15502) +HANDLE_BAT(APINT_TYPE_PREFIX, 15503) +HANDLE_BAT(APINT_TYPE_PREFIX, 15504) +HANDLE_BAT(APINT_TYPE_PREFIX, 15505) +HANDLE_BAT(APINT_TYPE_PREFIX, 15506) +HANDLE_BAT(APINT_TYPE_PREFIX, 15507) +HANDLE_BAT(APINT_TYPE_PREFIX, 15508) +HANDLE_BAT(APINT_TYPE_PREFIX, 15509) +HANDLE_BAT(APINT_TYPE_PREFIX, 15510) +HANDLE_BAT(APINT_TYPE_PREFIX, 15511) +HANDLE_BAT(APINT_TYPE_PREFIX, 15512) +HANDLE_BAT(APINT_TYPE_PREFIX, 15513) +HANDLE_BAT(APINT_TYPE_PREFIX, 15514) +HANDLE_BAT(APINT_TYPE_PREFIX, 15515) +HANDLE_BAT(APINT_TYPE_PREFIX, 15516) +HANDLE_BAT(APINT_TYPE_PREFIX, 15517) +HANDLE_BAT(APINT_TYPE_PREFIX, 15518) +HANDLE_BAT(APINT_TYPE_PREFIX, 15519) +HANDLE_BAT(APINT_TYPE_PREFIX, 15520) +HANDLE_BAT(APINT_TYPE_PREFIX, 15521) +HANDLE_BAT(APINT_TYPE_PREFIX, 15522) +HANDLE_BAT(APINT_TYPE_PREFIX, 15523) +HANDLE_BAT(APINT_TYPE_PREFIX, 15524) +HANDLE_BAT(APINT_TYPE_PREFIX, 15525) +HANDLE_BAT(APINT_TYPE_PREFIX, 15526) +HANDLE_BAT(APINT_TYPE_PREFIX, 15527) +HANDLE_BAT(APINT_TYPE_PREFIX, 15528) +HANDLE_BAT(APINT_TYPE_PREFIX, 15529) +HANDLE_BAT(APINT_TYPE_PREFIX, 15530) +HANDLE_BAT(APINT_TYPE_PREFIX, 15531) +HANDLE_BAT(APINT_TYPE_PREFIX, 15532) +HANDLE_BAT(APINT_TYPE_PREFIX, 15533) +HANDLE_BAT(APINT_TYPE_PREFIX, 15534) +HANDLE_BAT(APINT_TYPE_PREFIX, 15535) +HANDLE_BAT(APINT_TYPE_PREFIX, 15536) +HANDLE_BAT(APINT_TYPE_PREFIX, 15537) +HANDLE_BAT(APINT_TYPE_PREFIX, 15538) +HANDLE_BAT(APINT_TYPE_PREFIX, 15539) +HANDLE_BAT(APINT_TYPE_PREFIX, 15540) +HANDLE_BAT(APINT_TYPE_PREFIX, 15541) +HANDLE_BAT(APINT_TYPE_PREFIX, 15542) +HANDLE_BAT(APINT_TYPE_PREFIX, 15543) +HANDLE_BAT(APINT_TYPE_PREFIX, 15544) +HANDLE_BAT(APINT_TYPE_PREFIX, 15545) +HANDLE_BAT(APINT_TYPE_PREFIX, 15546) +HANDLE_BAT(APINT_TYPE_PREFIX, 15547) +HANDLE_BAT(APINT_TYPE_PREFIX, 15548) +HANDLE_BAT(APINT_TYPE_PREFIX, 15549) +HANDLE_BAT(APINT_TYPE_PREFIX, 15550) +HANDLE_BAT(APINT_TYPE_PREFIX, 15551) +HANDLE_BAT(APINT_TYPE_PREFIX, 15552) +HANDLE_BAT(APINT_TYPE_PREFIX, 15553) +HANDLE_BAT(APINT_TYPE_PREFIX, 15554) +HANDLE_BAT(APINT_TYPE_PREFIX, 15555) +HANDLE_BAT(APINT_TYPE_PREFIX, 15556) +HANDLE_BAT(APINT_TYPE_PREFIX, 15557) +HANDLE_BAT(APINT_TYPE_PREFIX, 15558) +HANDLE_BAT(APINT_TYPE_PREFIX, 15559) +HANDLE_BAT(APINT_TYPE_PREFIX, 15560) +HANDLE_BAT(APINT_TYPE_PREFIX, 15561) +HANDLE_BAT(APINT_TYPE_PREFIX, 15562) +HANDLE_BAT(APINT_TYPE_PREFIX, 15563) +HANDLE_BAT(APINT_TYPE_PREFIX, 15564) +HANDLE_BAT(APINT_TYPE_PREFIX, 15565) +HANDLE_BAT(APINT_TYPE_PREFIX, 15566) +HANDLE_BAT(APINT_TYPE_PREFIX, 15567) +HANDLE_BAT(APINT_TYPE_PREFIX, 15568) +HANDLE_BAT(APINT_TYPE_PREFIX, 15569) +HANDLE_BAT(APINT_TYPE_PREFIX, 15570) +HANDLE_BAT(APINT_TYPE_PREFIX, 15571) +HANDLE_BAT(APINT_TYPE_PREFIX, 15572) +HANDLE_BAT(APINT_TYPE_PREFIX, 15573) +HANDLE_BAT(APINT_TYPE_PREFIX, 15574) +HANDLE_BAT(APINT_TYPE_PREFIX, 15575) +HANDLE_BAT(APINT_TYPE_PREFIX, 15576) +HANDLE_BAT(APINT_TYPE_PREFIX, 15577) +HANDLE_BAT(APINT_TYPE_PREFIX, 15578) +HANDLE_BAT(APINT_TYPE_PREFIX, 15579) +HANDLE_BAT(APINT_TYPE_PREFIX, 15580) +HANDLE_BAT(APINT_TYPE_PREFIX, 15581) +HANDLE_BAT(APINT_TYPE_PREFIX, 15582) +HANDLE_BAT(APINT_TYPE_PREFIX, 15583) +HANDLE_BAT(APINT_TYPE_PREFIX, 15584) +HANDLE_BAT(APINT_TYPE_PREFIX, 15585) +HANDLE_BAT(APINT_TYPE_PREFIX, 15586) +HANDLE_BAT(APINT_TYPE_PREFIX, 15587) +HANDLE_BAT(APINT_TYPE_PREFIX, 15588) +HANDLE_BAT(APINT_TYPE_PREFIX, 15589) +HANDLE_BAT(APINT_TYPE_PREFIX, 15590) +HANDLE_BAT(APINT_TYPE_PREFIX, 15591) +HANDLE_BAT(APINT_TYPE_PREFIX, 15592) +HANDLE_BAT(APINT_TYPE_PREFIX, 15593) +HANDLE_BAT(APINT_TYPE_PREFIX, 15594) +HANDLE_BAT(APINT_TYPE_PREFIX, 15595) +HANDLE_BAT(APINT_TYPE_PREFIX, 15596) +HANDLE_BAT(APINT_TYPE_PREFIX, 15597) +HANDLE_BAT(APINT_TYPE_PREFIX, 15598) +HANDLE_BAT(APINT_TYPE_PREFIX, 15599) +HANDLE_BAT(APINT_TYPE_PREFIX, 15600) +HANDLE_BAT(APINT_TYPE_PREFIX, 15601) +HANDLE_BAT(APINT_TYPE_PREFIX, 15602) +HANDLE_BAT(APINT_TYPE_PREFIX, 15603) +HANDLE_BAT(APINT_TYPE_PREFIX, 15604) +HANDLE_BAT(APINT_TYPE_PREFIX, 15605) +HANDLE_BAT(APINT_TYPE_PREFIX, 15606) +HANDLE_BAT(APINT_TYPE_PREFIX, 15607) +HANDLE_BAT(APINT_TYPE_PREFIX, 15608) +HANDLE_BAT(APINT_TYPE_PREFIX, 15609) +HANDLE_BAT(APINT_TYPE_PREFIX, 15610) +HANDLE_BAT(APINT_TYPE_PREFIX, 15611) +HANDLE_BAT(APINT_TYPE_PREFIX, 15612) +HANDLE_BAT(APINT_TYPE_PREFIX, 15613) +HANDLE_BAT(APINT_TYPE_PREFIX, 15614) +HANDLE_BAT(APINT_TYPE_PREFIX, 15615) +HANDLE_BAT(APINT_TYPE_PREFIX, 15616) +HANDLE_BAT(APINT_TYPE_PREFIX, 15617) +HANDLE_BAT(APINT_TYPE_PREFIX, 15618) +HANDLE_BAT(APINT_TYPE_PREFIX, 15619) +HANDLE_BAT(APINT_TYPE_PREFIX, 15620) +HANDLE_BAT(APINT_TYPE_PREFIX, 15621) +HANDLE_BAT(APINT_TYPE_PREFIX, 15622) +HANDLE_BAT(APINT_TYPE_PREFIX, 15623) +HANDLE_BAT(APINT_TYPE_PREFIX, 15624) +HANDLE_BAT(APINT_TYPE_PREFIX, 15625) +HANDLE_BAT(APINT_TYPE_PREFIX, 15626) +HANDLE_BAT(APINT_TYPE_PREFIX, 15627) +HANDLE_BAT(APINT_TYPE_PREFIX, 15628) +HANDLE_BAT(APINT_TYPE_PREFIX, 15629) +HANDLE_BAT(APINT_TYPE_PREFIX, 15630) +HANDLE_BAT(APINT_TYPE_PREFIX, 15631) +HANDLE_BAT(APINT_TYPE_PREFIX, 15632) +HANDLE_BAT(APINT_TYPE_PREFIX, 15633) +HANDLE_BAT(APINT_TYPE_PREFIX, 15634) +HANDLE_BAT(APINT_TYPE_PREFIX, 15635) +HANDLE_BAT(APINT_TYPE_PREFIX, 15636) +HANDLE_BAT(APINT_TYPE_PREFIX, 15637) +HANDLE_BAT(APINT_TYPE_PREFIX, 15638) +HANDLE_BAT(APINT_TYPE_PREFIX, 15639) +HANDLE_BAT(APINT_TYPE_PREFIX, 15640) +HANDLE_BAT(APINT_TYPE_PREFIX, 15641) +HANDLE_BAT(APINT_TYPE_PREFIX, 15642) +HANDLE_BAT(APINT_TYPE_PREFIX, 15643) +HANDLE_BAT(APINT_TYPE_PREFIX, 15644) +HANDLE_BAT(APINT_TYPE_PREFIX, 15645) +HANDLE_BAT(APINT_TYPE_PREFIX, 15646) +HANDLE_BAT(APINT_TYPE_PREFIX, 15647) +HANDLE_BAT(APINT_TYPE_PREFIX, 15648) +HANDLE_BAT(APINT_TYPE_PREFIX, 15649) +HANDLE_BAT(APINT_TYPE_PREFIX, 15650) +HANDLE_BAT(APINT_TYPE_PREFIX, 15651) +HANDLE_BAT(APINT_TYPE_PREFIX, 15652) +HANDLE_BAT(APINT_TYPE_PREFIX, 15653) +HANDLE_BAT(APINT_TYPE_PREFIX, 15654) +HANDLE_BAT(APINT_TYPE_PREFIX, 15655) +HANDLE_BAT(APINT_TYPE_PREFIX, 15656) +HANDLE_BAT(APINT_TYPE_PREFIX, 15657) +HANDLE_BAT(APINT_TYPE_PREFIX, 15658) +HANDLE_BAT(APINT_TYPE_PREFIX, 15659) +HANDLE_BAT(APINT_TYPE_PREFIX, 15660) +HANDLE_BAT(APINT_TYPE_PREFIX, 15661) +HANDLE_BAT(APINT_TYPE_PREFIX, 15662) +HANDLE_BAT(APINT_TYPE_PREFIX, 15663) +HANDLE_BAT(APINT_TYPE_PREFIX, 15664) +HANDLE_BAT(APINT_TYPE_PREFIX, 15665) +HANDLE_BAT(APINT_TYPE_PREFIX, 15666) +HANDLE_BAT(APINT_TYPE_PREFIX, 15667) +HANDLE_BAT(APINT_TYPE_PREFIX, 15668) +HANDLE_BAT(APINT_TYPE_PREFIX, 15669) +HANDLE_BAT(APINT_TYPE_PREFIX, 15670) +HANDLE_BAT(APINT_TYPE_PREFIX, 15671) +HANDLE_BAT(APINT_TYPE_PREFIX, 15672) +HANDLE_BAT(APINT_TYPE_PREFIX, 15673) +HANDLE_BAT(APINT_TYPE_PREFIX, 15674) +HANDLE_BAT(APINT_TYPE_PREFIX, 15675) +HANDLE_BAT(APINT_TYPE_PREFIX, 15676) +HANDLE_BAT(APINT_TYPE_PREFIX, 15677) +HANDLE_BAT(APINT_TYPE_PREFIX, 15678) +HANDLE_BAT(APINT_TYPE_PREFIX, 15679) +HANDLE_BAT(APINT_TYPE_PREFIX, 15680) +HANDLE_BAT(APINT_TYPE_PREFIX, 15681) +HANDLE_BAT(APINT_TYPE_PREFIX, 15682) +HANDLE_BAT(APINT_TYPE_PREFIX, 15683) +HANDLE_BAT(APINT_TYPE_PREFIX, 15684) +HANDLE_BAT(APINT_TYPE_PREFIX, 15685) +HANDLE_BAT(APINT_TYPE_PREFIX, 15686) +HANDLE_BAT(APINT_TYPE_PREFIX, 15687) +HANDLE_BAT(APINT_TYPE_PREFIX, 15688) +HANDLE_BAT(APINT_TYPE_PREFIX, 15689) +HANDLE_BAT(APINT_TYPE_PREFIX, 15690) +HANDLE_BAT(APINT_TYPE_PREFIX, 15691) +HANDLE_BAT(APINT_TYPE_PREFIX, 15692) +HANDLE_BAT(APINT_TYPE_PREFIX, 15693) +HANDLE_BAT(APINT_TYPE_PREFIX, 15694) +HANDLE_BAT(APINT_TYPE_PREFIX, 15695) +HANDLE_BAT(APINT_TYPE_PREFIX, 15696) +HANDLE_BAT(APINT_TYPE_PREFIX, 15697) +HANDLE_BAT(APINT_TYPE_PREFIX, 15698) +HANDLE_BAT(APINT_TYPE_PREFIX, 15699) +HANDLE_BAT(APINT_TYPE_PREFIX, 15700) +HANDLE_BAT(APINT_TYPE_PREFIX, 15701) +HANDLE_BAT(APINT_TYPE_PREFIX, 15702) +HANDLE_BAT(APINT_TYPE_PREFIX, 15703) +HANDLE_BAT(APINT_TYPE_PREFIX, 15704) +HANDLE_BAT(APINT_TYPE_PREFIX, 15705) +HANDLE_BAT(APINT_TYPE_PREFIX, 15706) +HANDLE_BAT(APINT_TYPE_PREFIX, 15707) +HANDLE_BAT(APINT_TYPE_PREFIX, 15708) +HANDLE_BAT(APINT_TYPE_PREFIX, 15709) +HANDLE_BAT(APINT_TYPE_PREFIX, 15710) +HANDLE_BAT(APINT_TYPE_PREFIX, 15711) +HANDLE_BAT(APINT_TYPE_PREFIX, 15712) +HANDLE_BAT(APINT_TYPE_PREFIX, 15713) +HANDLE_BAT(APINT_TYPE_PREFIX, 15714) +HANDLE_BAT(APINT_TYPE_PREFIX, 15715) +HANDLE_BAT(APINT_TYPE_PREFIX, 15716) +HANDLE_BAT(APINT_TYPE_PREFIX, 15717) +HANDLE_BAT(APINT_TYPE_PREFIX, 15718) +HANDLE_BAT(APINT_TYPE_PREFIX, 15719) +HANDLE_BAT(APINT_TYPE_PREFIX, 15720) +HANDLE_BAT(APINT_TYPE_PREFIX, 15721) +HANDLE_BAT(APINT_TYPE_PREFIX, 15722) +HANDLE_BAT(APINT_TYPE_PREFIX, 15723) +HANDLE_BAT(APINT_TYPE_PREFIX, 15724) +HANDLE_BAT(APINT_TYPE_PREFIX, 15725) +HANDLE_BAT(APINT_TYPE_PREFIX, 15726) +HANDLE_BAT(APINT_TYPE_PREFIX, 15727) +HANDLE_BAT(APINT_TYPE_PREFIX, 15728) +HANDLE_BAT(APINT_TYPE_PREFIX, 15729) +HANDLE_BAT(APINT_TYPE_PREFIX, 15730) +HANDLE_BAT(APINT_TYPE_PREFIX, 15731) +HANDLE_BAT(APINT_TYPE_PREFIX, 15732) +HANDLE_BAT(APINT_TYPE_PREFIX, 15733) +HANDLE_BAT(APINT_TYPE_PREFIX, 15734) +HANDLE_BAT(APINT_TYPE_PREFIX, 15735) +HANDLE_BAT(APINT_TYPE_PREFIX, 15736) +HANDLE_BAT(APINT_TYPE_PREFIX, 15737) +HANDLE_BAT(APINT_TYPE_PREFIX, 15738) +HANDLE_BAT(APINT_TYPE_PREFIX, 15739) +HANDLE_BAT(APINT_TYPE_PREFIX, 15740) +HANDLE_BAT(APINT_TYPE_PREFIX, 15741) +HANDLE_BAT(APINT_TYPE_PREFIX, 15742) +HANDLE_BAT(APINT_TYPE_PREFIX, 15743) +HANDLE_BAT(APINT_TYPE_PREFIX, 15744) +HANDLE_BAT(APINT_TYPE_PREFIX, 15745) +HANDLE_BAT(APINT_TYPE_PREFIX, 15746) +HANDLE_BAT(APINT_TYPE_PREFIX, 15747) +HANDLE_BAT(APINT_TYPE_PREFIX, 15748) +HANDLE_BAT(APINT_TYPE_PREFIX, 15749) +HANDLE_BAT(APINT_TYPE_PREFIX, 15750) +HANDLE_BAT(APINT_TYPE_PREFIX, 15751) +HANDLE_BAT(APINT_TYPE_PREFIX, 15752) +HANDLE_BAT(APINT_TYPE_PREFIX, 15753) +HANDLE_BAT(APINT_TYPE_PREFIX, 15754) +HANDLE_BAT(APINT_TYPE_PREFIX, 15755) +HANDLE_BAT(APINT_TYPE_PREFIX, 15756) +HANDLE_BAT(APINT_TYPE_PREFIX, 15757) +HANDLE_BAT(APINT_TYPE_PREFIX, 15758) +HANDLE_BAT(APINT_TYPE_PREFIX, 15759) +HANDLE_BAT(APINT_TYPE_PREFIX, 15760) +HANDLE_BAT(APINT_TYPE_PREFIX, 15761) +HANDLE_BAT(APINT_TYPE_PREFIX, 15762) +HANDLE_BAT(APINT_TYPE_PREFIX, 15763) +HANDLE_BAT(APINT_TYPE_PREFIX, 15764) +HANDLE_BAT(APINT_TYPE_PREFIX, 15765) +HANDLE_BAT(APINT_TYPE_PREFIX, 15766) +HANDLE_BAT(APINT_TYPE_PREFIX, 15767) +HANDLE_BAT(APINT_TYPE_PREFIX, 15768) +HANDLE_BAT(APINT_TYPE_PREFIX, 15769) +HANDLE_BAT(APINT_TYPE_PREFIX, 15770) +HANDLE_BAT(APINT_TYPE_PREFIX, 15771) +HANDLE_BAT(APINT_TYPE_PREFIX, 15772) +HANDLE_BAT(APINT_TYPE_PREFIX, 15773) +HANDLE_BAT(APINT_TYPE_PREFIX, 15774) +HANDLE_BAT(APINT_TYPE_PREFIX, 15775) +HANDLE_BAT(APINT_TYPE_PREFIX, 15776) +HANDLE_BAT(APINT_TYPE_PREFIX, 15777) +HANDLE_BAT(APINT_TYPE_PREFIX, 15778) +HANDLE_BAT(APINT_TYPE_PREFIX, 15779) +HANDLE_BAT(APINT_TYPE_PREFIX, 15780) +HANDLE_BAT(APINT_TYPE_PREFIX, 15781) +HANDLE_BAT(APINT_TYPE_PREFIX, 15782) +HANDLE_BAT(APINT_TYPE_PREFIX, 15783) +HANDLE_BAT(APINT_TYPE_PREFIX, 15784) +HANDLE_BAT(APINT_TYPE_PREFIX, 15785) +HANDLE_BAT(APINT_TYPE_PREFIX, 15786) +HANDLE_BAT(APINT_TYPE_PREFIX, 15787) +HANDLE_BAT(APINT_TYPE_PREFIX, 15788) +HANDLE_BAT(APINT_TYPE_PREFIX, 15789) +HANDLE_BAT(APINT_TYPE_PREFIX, 15790) +HANDLE_BAT(APINT_TYPE_PREFIX, 15791) +HANDLE_BAT(APINT_TYPE_PREFIX, 15792) +HANDLE_BAT(APINT_TYPE_PREFIX, 15793) +HANDLE_BAT(APINT_TYPE_PREFIX, 15794) +HANDLE_BAT(APINT_TYPE_PREFIX, 15795) +HANDLE_BAT(APINT_TYPE_PREFIX, 15796) +HANDLE_BAT(APINT_TYPE_PREFIX, 15797) +HANDLE_BAT(APINT_TYPE_PREFIX, 15798) +HANDLE_BAT(APINT_TYPE_PREFIX, 15799) +HANDLE_BAT(APINT_TYPE_PREFIX, 15800) +HANDLE_BAT(APINT_TYPE_PREFIX, 15801) +HANDLE_BAT(APINT_TYPE_PREFIX, 15802) +HANDLE_BAT(APINT_TYPE_PREFIX, 15803) +HANDLE_BAT(APINT_TYPE_PREFIX, 15804) +HANDLE_BAT(APINT_TYPE_PREFIX, 15805) +HANDLE_BAT(APINT_TYPE_PREFIX, 15806) +HANDLE_BAT(APINT_TYPE_PREFIX, 15807) +HANDLE_BAT(APINT_TYPE_PREFIX, 15808) +HANDLE_BAT(APINT_TYPE_PREFIX, 15809) +HANDLE_BAT(APINT_TYPE_PREFIX, 15810) +HANDLE_BAT(APINT_TYPE_PREFIX, 15811) +HANDLE_BAT(APINT_TYPE_PREFIX, 15812) +HANDLE_BAT(APINT_TYPE_PREFIX, 15813) +HANDLE_BAT(APINT_TYPE_PREFIX, 15814) +HANDLE_BAT(APINT_TYPE_PREFIX, 15815) +HANDLE_BAT(APINT_TYPE_PREFIX, 15816) +HANDLE_BAT(APINT_TYPE_PREFIX, 15817) +HANDLE_BAT(APINT_TYPE_PREFIX, 15818) +HANDLE_BAT(APINT_TYPE_PREFIX, 15819) +HANDLE_BAT(APINT_TYPE_PREFIX, 15820) +HANDLE_BAT(APINT_TYPE_PREFIX, 15821) +HANDLE_BAT(APINT_TYPE_PREFIX, 15822) +HANDLE_BAT(APINT_TYPE_PREFIX, 15823) +HANDLE_BAT(APINT_TYPE_PREFIX, 15824) +HANDLE_BAT(APINT_TYPE_PREFIX, 15825) +HANDLE_BAT(APINT_TYPE_PREFIX, 15826) +HANDLE_BAT(APINT_TYPE_PREFIX, 15827) +HANDLE_BAT(APINT_TYPE_PREFIX, 15828) +HANDLE_BAT(APINT_TYPE_PREFIX, 15829) +HANDLE_BAT(APINT_TYPE_PREFIX, 15830) +HANDLE_BAT(APINT_TYPE_PREFIX, 15831) +HANDLE_BAT(APINT_TYPE_PREFIX, 15832) +HANDLE_BAT(APINT_TYPE_PREFIX, 15833) +HANDLE_BAT(APINT_TYPE_PREFIX, 15834) +HANDLE_BAT(APINT_TYPE_PREFIX, 15835) +HANDLE_BAT(APINT_TYPE_PREFIX, 15836) +HANDLE_BAT(APINT_TYPE_PREFIX, 15837) +HANDLE_BAT(APINT_TYPE_PREFIX, 15838) +HANDLE_BAT(APINT_TYPE_PREFIX, 15839) +HANDLE_BAT(APINT_TYPE_PREFIX, 15840) +HANDLE_BAT(APINT_TYPE_PREFIX, 15841) +HANDLE_BAT(APINT_TYPE_PREFIX, 15842) +HANDLE_BAT(APINT_TYPE_PREFIX, 15843) +HANDLE_BAT(APINT_TYPE_PREFIX, 15844) +HANDLE_BAT(APINT_TYPE_PREFIX, 15845) +HANDLE_BAT(APINT_TYPE_PREFIX, 15846) +HANDLE_BAT(APINT_TYPE_PREFIX, 15847) +HANDLE_BAT(APINT_TYPE_PREFIX, 15848) +HANDLE_BAT(APINT_TYPE_PREFIX, 15849) +HANDLE_BAT(APINT_TYPE_PREFIX, 15850) +HANDLE_BAT(APINT_TYPE_PREFIX, 15851) +HANDLE_BAT(APINT_TYPE_PREFIX, 15852) +HANDLE_BAT(APINT_TYPE_PREFIX, 15853) +HANDLE_BAT(APINT_TYPE_PREFIX, 15854) +HANDLE_BAT(APINT_TYPE_PREFIX, 15855) +HANDLE_BAT(APINT_TYPE_PREFIX, 15856) +HANDLE_BAT(APINT_TYPE_PREFIX, 15857) +HANDLE_BAT(APINT_TYPE_PREFIX, 15858) +HANDLE_BAT(APINT_TYPE_PREFIX, 15859) +HANDLE_BAT(APINT_TYPE_PREFIX, 15860) +HANDLE_BAT(APINT_TYPE_PREFIX, 15861) +HANDLE_BAT(APINT_TYPE_PREFIX, 15862) +HANDLE_BAT(APINT_TYPE_PREFIX, 15863) +HANDLE_BAT(APINT_TYPE_PREFIX, 15864) +HANDLE_BAT(APINT_TYPE_PREFIX, 15865) +HANDLE_BAT(APINT_TYPE_PREFIX, 15866) +HANDLE_BAT(APINT_TYPE_PREFIX, 15867) +HANDLE_BAT(APINT_TYPE_PREFIX, 15868) +HANDLE_BAT(APINT_TYPE_PREFIX, 15869) +HANDLE_BAT(APINT_TYPE_PREFIX, 15870) +HANDLE_BAT(APINT_TYPE_PREFIX, 15871) +HANDLE_BAT(APINT_TYPE_PREFIX, 15872) +HANDLE_BAT(APINT_TYPE_PREFIX, 15873) +HANDLE_BAT(APINT_TYPE_PREFIX, 15874) +HANDLE_BAT(APINT_TYPE_PREFIX, 15875) +HANDLE_BAT(APINT_TYPE_PREFIX, 15876) +HANDLE_BAT(APINT_TYPE_PREFIX, 15877) +HANDLE_BAT(APINT_TYPE_PREFIX, 15878) +HANDLE_BAT(APINT_TYPE_PREFIX, 15879) +HANDLE_BAT(APINT_TYPE_PREFIX, 15880) +HANDLE_BAT(APINT_TYPE_PREFIX, 15881) +HANDLE_BAT(APINT_TYPE_PREFIX, 15882) +HANDLE_BAT(APINT_TYPE_PREFIX, 15883) +HANDLE_BAT(APINT_TYPE_PREFIX, 15884) +HANDLE_BAT(APINT_TYPE_PREFIX, 15885) +HANDLE_BAT(APINT_TYPE_PREFIX, 15886) +HANDLE_BAT(APINT_TYPE_PREFIX, 15887) +HANDLE_BAT(APINT_TYPE_PREFIX, 15888) +HANDLE_BAT(APINT_TYPE_PREFIX, 15889) +HANDLE_BAT(APINT_TYPE_PREFIX, 15890) +HANDLE_BAT(APINT_TYPE_PREFIX, 15891) +HANDLE_BAT(APINT_TYPE_PREFIX, 15892) +HANDLE_BAT(APINT_TYPE_PREFIX, 15893) +HANDLE_BAT(APINT_TYPE_PREFIX, 15894) +HANDLE_BAT(APINT_TYPE_PREFIX, 15895) +HANDLE_BAT(APINT_TYPE_PREFIX, 15896) +HANDLE_BAT(APINT_TYPE_PREFIX, 15897) +HANDLE_BAT(APINT_TYPE_PREFIX, 15898) +HANDLE_BAT(APINT_TYPE_PREFIX, 15899) +HANDLE_BAT(APINT_TYPE_PREFIX, 15900) +HANDLE_BAT(APINT_TYPE_PREFIX, 15901) +HANDLE_BAT(APINT_TYPE_PREFIX, 15902) +HANDLE_BAT(APINT_TYPE_PREFIX, 15903) +HANDLE_BAT(APINT_TYPE_PREFIX, 15904) +HANDLE_BAT(APINT_TYPE_PREFIX, 15905) +HANDLE_BAT(APINT_TYPE_PREFIX, 15906) +HANDLE_BAT(APINT_TYPE_PREFIX, 15907) +HANDLE_BAT(APINT_TYPE_PREFIX, 15908) +HANDLE_BAT(APINT_TYPE_PREFIX, 15909) +HANDLE_BAT(APINT_TYPE_PREFIX, 15910) +HANDLE_BAT(APINT_TYPE_PREFIX, 15911) +HANDLE_BAT(APINT_TYPE_PREFIX, 15912) +HANDLE_BAT(APINT_TYPE_PREFIX, 15913) +HANDLE_BAT(APINT_TYPE_PREFIX, 15914) +HANDLE_BAT(APINT_TYPE_PREFIX, 15915) +HANDLE_BAT(APINT_TYPE_PREFIX, 15916) +HANDLE_BAT(APINT_TYPE_PREFIX, 15917) +HANDLE_BAT(APINT_TYPE_PREFIX, 15918) +HANDLE_BAT(APINT_TYPE_PREFIX, 15919) +HANDLE_BAT(APINT_TYPE_PREFIX, 15920) +HANDLE_BAT(APINT_TYPE_PREFIX, 15921) +HANDLE_BAT(APINT_TYPE_PREFIX, 15922) +HANDLE_BAT(APINT_TYPE_PREFIX, 15923) +HANDLE_BAT(APINT_TYPE_PREFIX, 15924) +HANDLE_BAT(APINT_TYPE_PREFIX, 15925) +HANDLE_BAT(APINT_TYPE_PREFIX, 15926) +HANDLE_BAT(APINT_TYPE_PREFIX, 15927) +HANDLE_BAT(APINT_TYPE_PREFIX, 15928) +HANDLE_BAT(APINT_TYPE_PREFIX, 15929) +HANDLE_BAT(APINT_TYPE_PREFIX, 15930) +HANDLE_BAT(APINT_TYPE_PREFIX, 15931) +HANDLE_BAT(APINT_TYPE_PREFIX, 15932) +HANDLE_BAT(APINT_TYPE_PREFIX, 15933) +HANDLE_BAT(APINT_TYPE_PREFIX, 15934) +HANDLE_BAT(APINT_TYPE_PREFIX, 15935) +HANDLE_BAT(APINT_TYPE_PREFIX, 15936) +HANDLE_BAT(APINT_TYPE_PREFIX, 15937) +HANDLE_BAT(APINT_TYPE_PREFIX, 15938) +HANDLE_BAT(APINT_TYPE_PREFIX, 15939) +HANDLE_BAT(APINT_TYPE_PREFIX, 15940) +HANDLE_BAT(APINT_TYPE_PREFIX, 15941) +HANDLE_BAT(APINT_TYPE_PREFIX, 15942) +HANDLE_BAT(APINT_TYPE_PREFIX, 15943) +HANDLE_BAT(APINT_TYPE_PREFIX, 15944) +HANDLE_BAT(APINT_TYPE_PREFIX, 15945) +HANDLE_BAT(APINT_TYPE_PREFIX, 15946) +HANDLE_BAT(APINT_TYPE_PREFIX, 15947) +HANDLE_BAT(APINT_TYPE_PREFIX, 15948) +HANDLE_BAT(APINT_TYPE_PREFIX, 15949) +HANDLE_BAT(APINT_TYPE_PREFIX, 15950) +HANDLE_BAT(APINT_TYPE_PREFIX, 15951) +HANDLE_BAT(APINT_TYPE_PREFIX, 15952) +HANDLE_BAT(APINT_TYPE_PREFIX, 15953) +HANDLE_BAT(APINT_TYPE_PREFIX, 15954) +HANDLE_BAT(APINT_TYPE_PREFIX, 15955) +HANDLE_BAT(APINT_TYPE_PREFIX, 15956) +HANDLE_BAT(APINT_TYPE_PREFIX, 15957) +HANDLE_BAT(APINT_TYPE_PREFIX, 15958) +HANDLE_BAT(APINT_TYPE_PREFIX, 15959) +HANDLE_BAT(APINT_TYPE_PREFIX, 15960) +HANDLE_BAT(APINT_TYPE_PREFIX, 15961) +HANDLE_BAT(APINT_TYPE_PREFIX, 15962) +HANDLE_BAT(APINT_TYPE_PREFIX, 15963) +HANDLE_BAT(APINT_TYPE_PREFIX, 15964) +HANDLE_BAT(APINT_TYPE_PREFIX, 15965) +HANDLE_BAT(APINT_TYPE_PREFIX, 15966) +HANDLE_BAT(APINT_TYPE_PREFIX, 15967) +HANDLE_BAT(APINT_TYPE_PREFIX, 15968) +HANDLE_BAT(APINT_TYPE_PREFIX, 15969) +HANDLE_BAT(APINT_TYPE_PREFIX, 15970) +HANDLE_BAT(APINT_TYPE_PREFIX, 15971) +HANDLE_BAT(APINT_TYPE_PREFIX, 15972) +HANDLE_BAT(APINT_TYPE_PREFIX, 15973) +HANDLE_BAT(APINT_TYPE_PREFIX, 15974) +HANDLE_BAT(APINT_TYPE_PREFIX, 15975) +HANDLE_BAT(APINT_TYPE_PREFIX, 15976) +HANDLE_BAT(APINT_TYPE_PREFIX, 15977) +HANDLE_BAT(APINT_TYPE_PREFIX, 15978) +HANDLE_BAT(APINT_TYPE_PREFIX, 15979) +HANDLE_BAT(APINT_TYPE_PREFIX, 15980) +HANDLE_BAT(APINT_TYPE_PREFIX, 15981) +HANDLE_BAT(APINT_TYPE_PREFIX, 15982) +HANDLE_BAT(APINT_TYPE_PREFIX, 15983) +HANDLE_BAT(APINT_TYPE_PREFIX, 15984) +HANDLE_BAT(APINT_TYPE_PREFIX, 15985) +HANDLE_BAT(APINT_TYPE_PREFIX, 15986) +HANDLE_BAT(APINT_TYPE_PREFIX, 15987) +HANDLE_BAT(APINT_TYPE_PREFIX, 15988) +HANDLE_BAT(APINT_TYPE_PREFIX, 15989) +HANDLE_BAT(APINT_TYPE_PREFIX, 15990) +HANDLE_BAT(APINT_TYPE_PREFIX, 15991) +HANDLE_BAT(APINT_TYPE_PREFIX, 15992) +HANDLE_BAT(APINT_TYPE_PREFIX, 15993) +HANDLE_BAT(APINT_TYPE_PREFIX, 15994) +HANDLE_BAT(APINT_TYPE_PREFIX, 15995) +HANDLE_BAT(APINT_TYPE_PREFIX, 15996) +HANDLE_BAT(APINT_TYPE_PREFIX, 15997) +HANDLE_BAT(APINT_TYPE_PREFIX, 15998) +HANDLE_BAT(APINT_TYPE_PREFIX, 15999) +HANDLE_BAT(APINT_TYPE_PREFIX, 16000) +HANDLE_BAT(APINT_TYPE_PREFIX, 16001) +HANDLE_BAT(APINT_TYPE_PREFIX, 16002) +HANDLE_BAT(APINT_TYPE_PREFIX, 16003) +HANDLE_BAT(APINT_TYPE_PREFIX, 16004) +HANDLE_BAT(APINT_TYPE_PREFIX, 16005) +HANDLE_BAT(APINT_TYPE_PREFIX, 16006) +HANDLE_BAT(APINT_TYPE_PREFIX, 16007) +HANDLE_BAT(APINT_TYPE_PREFIX, 16008) +HANDLE_BAT(APINT_TYPE_PREFIX, 16009) +HANDLE_BAT(APINT_TYPE_PREFIX, 16010) +HANDLE_BAT(APINT_TYPE_PREFIX, 16011) +HANDLE_BAT(APINT_TYPE_PREFIX, 16012) +HANDLE_BAT(APINT_TYPE_PREFIX, 16013) +HANDLE_BAT(APINT_TYPE_PREFIX, 16014) +HANDLE_BAT(APINT_TYPE_PREFIX, 16015) +HANDLE_BAT(APINT_TYPE_PREFIX, 16016) +HANDLE_BAT(APINT_TYPE_PREFIX, 16017) +HANDLE_BAT(APINT_TYPE_PREFIX, 16018) +HANDLE_BAT(APINT_TYPE_PREFIX, 16019) +HANDLE_BAT(APINT_TYPE_PREFIX, 16020) +HANDLE_BAT(APINT_TYPE_PREFIX, 16021) +HANDLE_BAT(APINT_TYPE_PREFIX, 16022) +HANDLE_BAT(APINT_TYPE_PREFIX, 16023) +HANDLE_BAT(APINT_TYPE_PREFIX, 16024) +HANDLE_BAT(APINT_TYPE_PREFIX, 16025) +HANDLE_BAT(APINT_TYPE_PREFIX, 16026) +HANDLE_BAT(APINT_TYPE_PREFIX, 16027) +HANDLE_BAT(APINT_TYPE_PREFIX, 16028) +HANDLE_BAT(APINT_TYPE_PREFIX, 16029) +HANDLE_BAT(APINT_TYPE_PREFIX, 16030) +HANDLE_BAT(APINT_TYPE_PREFIX, 16031) +HANDLE_BAT(APINT_TYPE_PREFIX, 16032) +HANDLE_BAT(APINT_TYPE_PREFIX, 16033) +HANDLE_BAT(APINT_TYPE_PREFIX, 16034) +HANDLE_BAT(APINT_TYPE_PREFIX, 16035) +HANDLE_BAT(APINT_TYPE_PREFIX, 16036) +HANDLE_BAT(APINT_TYPE_PREFIX, 16037) +HANDLE_BAT(APINT_TYPE_PREFIX, 16038) +HANDLE_BAT(APINT_TYPE_PREFIX, 16039) +HANDLE_BAT(APINT_TYPE_PREFIX, 16040) +HANDLE_BAT(APINT_TYPE_PREFIX, 16041) +HANDLE_BAT(APINT_TYPE_PREFIX, 16042) +HANDLE_BAT(APINT_TYPE_PREFIX, 16043) +HANDLE_BAT(APINT_TYPE_PREFIX, 16044) +HANDLE_BAT(APINT_TYPE_PREFIX, 16045) +HANDLE_BAT(APINT_TYPE_PREFIX, 16046) +HANDLE_BAT(APINT_TYPE_PREFIX, 16047) +HANDLE_BAT(APINT_TYPE_PREFIX, 16048) +HANDLE_BAT(APINT_TYPE_PREFIX, 16049) +HANDLE_BAT(APINT_TYPE_PREFIX, 16050) +HANDLE_BAT(APINT_TYPE_PREFIX, 16051) +HANDLE_BAT(APINT_TYPE_PREFIX, 16052) +HANDLE_BAT(APINT_TYPE_PREFIX, 16053) +HANDLE_BAT(APINT_TYPE_PREFIX, 16054) +HANDLE_BAT(APINT_TYPE_PREFIX, 16055) +HANDLE_BAT(APINT_TYPE_PREFIX, 16056) +HANDLE_BAT(APINT_TYPE_PREFIX, 16057) +HANDLE_BAT(APINT_TYPE_PREFIX, 16058) +HANDLE_BAT(APINT_TYPE_PREFIX, 16059) +HANDLE_BAT(APINT_TYPE_PREFIX, 16060) +HANDLE_BAT(APINT_TYPE_PREFIX, 16061) +HANDLE_BAT(APINT_TYPE_PREFIX, 16062) +HANDLE_BAT(APINT_TYPE_PREFIX, 16063) +HANDLE_BAT(APINT_TYPE_PREFIX, 16064) +HANDLE_BAT(APINT_TYPE_PREFIX, 16065) +HANDLE_BAT(APINT_TYPE_PREFIX, 16066) +HANDLE_BAT(APINT_TYPE_PREFIX, 16067) +HANDLE_BAT(APINT_TYPE_PREFIX, 16068) +HANDLE_BAT(APINT_TYPE_PREFIX, 16069) +HANDLE_BAT(APINT_TYPE_PREFIX, 16070) +HANDLE_BAT(APINT_TYPE_PREFIX, 16071) +HANDLE_BAT(APINT_TYPE_PREFIX, 16072) +HANDLE_BAT(APINT_TYPE_PREFIX, 16073) +HANDLE_BAT(APINT_TYPE_PREFIX, 16074) +HANDLE_BAT(APINT_TYPE_PREFIX, 16075) +HANDLE_BAT(APINT_TYPE_PREFIX, 16076) +HANDLE_BAT(APINT_TYPE_PREFIX, 16077) +HANDLE_BAT(APINT_TYPE_PREFIX, 16078) +HANDLE_BAT(APINT_TYPE_PREFIX, 16079) +HANDLE_BAT(APINT_TYPE_PREFIX, 16080) +HANDLE_BAT(APINT_TYPE_PREFIX, 16081) +HANDLE_BAT(APINT_TYPE_PREFIX, 16082) +HANDLE_BAT(APINT_TYPE_PREFIX, 16083) +HANDLE_BAT(APINT_TYPE_PREFIX, 16084) +HANDLE_BAT(APINT_TYPE_PREFIX, 16085) +HANDLE_BAT(APINT_TYPE_PREFIX, 16086) +HANDLE_BAT(APINT_TYPE_PREFIX, 16087) +HANDLE_BAT(APINT_TYPE_PREFIX, 16088) +HANDLE_BAT(APINT_TYPE_PREFIX, 16089) +HANDLE_BAT(APINT_TYPE_PREFIX, 16090) +HANDLE_BAT(APINT_TYPE_PREFIX, 16091) +HANDLE_BAT(APINT_TYPE_PREFIX, 16092) +HANDLE_BAT(APINT_TYPE_PREFIX, 16093) +HANDLE_BAT(APINT_TYPE_PREFIX, 16094) +HANDLE_BAT(APINT_TYPE_PREFIX, 16095) +HANDLE_BAT(APINT_TYPE_PREFIX, 16096) +HANDLE_BAT(APINT_TYPE_PREFIX, 16097) +HANDLE_BAT(APINT_TYPE_PREFIX, 16098) +HANDLE_BAT(APINT_TYPE_PREFIX, 16099) +HANDLE_BAT(APINT_TYPE_PREFIX, 16100) +HANDLE_BAT(APINT_TYPE_PREFIX, 16101) +HANDLE_BAT(APINT_TYPE_PREFIX, 16102) +HANDLE_BAT(APINT_TYPE_PREFIX, 16103) +HANDLE_BAT(APINT_TYPE_PREFIX, 16104) +HANDLE_BAT(APINT_TYPE_PREFIX, 16105) +HANDLE_BAT(APINT_TYPE_PREFIX, 16106) +HANDLE_BAT(APINT_TYPE_PREFIX, 16107) +HANDLE_BAT(APINT_TYPE_PREFIX, 16108) +HANDLE_BAT(APINT_TYPE_PREFIX, 16109) +HANDLE_BAT(APINT_TYPE_PREFIX, 16110) +HANDLE_BAT(APINT_TYPE_PREFIX, 16111) +HANDLE_BAT(APINT_TYPE_PREFIX, 16112) +HANDLE_BAT(APINT_TYPE_PREFIX, 16113) +HANDLE_BAT(APINT_TYPE_PREFIX, 16114) +HANDLE_BAT(APINT_TYPE_PREFIX, 16115) +HANDLE_BAT(APINT_TYPE_PREFIX, 16116) +HANDLE_BAT(APINT_TYPE_PREFIX, 16117) +HANDLE_BAT(APINT_TYPE_PREFIX, 16118) +HANDLE_BAT(APINT_TYPE_PREFIX, 16119) +HANDLE_BAT(APINT_TYPE_PREFIX, 16120) +HANDLE_BAT(APINT_TYPE_PREFIX, 16121) +HANDLE_BAT(APINT_TYPE_PREFIX, 16122) +HANDLE_BAT(APINT_TYPE_PREFIX, 16123) +HANDLE_BAT(APINT_TYPE_PREFIX, 16124) +HANDLE_BAT(APINT_TYPE_PREFIX, 16125) +HANDLE_BAT(APINT_TYPE_PREFIX, 16126) +HANDLE_BAT(APINT_TYPE_PREFIX, 16127) +HANDLE_BAT(APINT_TYPE_PREFIX, 16128) +HANDLE_BAT(APINT_TYPE_PREFIX, 16129) +HANDLE_BAT(APINT_TYPE_PREFIX, 16130) +HANDLE_BAT(APINT_TYPE_PREFIX, 16131) +HANDLE_BAT(APINT_TYPE_PREFIX, 16132) +HANDLE_BAT(APINT_TYPE_PREFIX, 16133) +HANDLE_BAT(APINT_TYPE_PREFIX, 16134) +HANDLE_BAT(APINT_TYPE_PREFIX, 16135) +HANDLE_BAT(APINT_TYPE_PREFIX, 16136) +HANDLE_BAT(APINT_TYPE_PREFIX, 16137) +HANDLE_BAT(APINT_TYPE_PREFIX, 16138) +HANDLE_BAT(APINT_TYPE_PREFIX, 16139) +HANDLE_BAT(APINT_TYPE_PREFIX, 16140) +HANDLE_BAT(APINT_TYPE_PREFIX, 16141) +HANDLE_BAT(APINT_TYPE_PREFIX, 16142) +HANDLE_BAT(APINT_TYPE_PREFIX, 16143) +HANDLE_BAT(APINT_TYPE_PREFIX, 16144) +HANDLE_BAT(APINT_TYPE_PREFIX, 16145) +HANDLE_BAT(APINT_TYPE_PREFIX, 16146) +HANDLE_BAT(APINT_TYPE_PREFIX, 16147) +HANDLE_BAT(APINT_TYPE_PREFIX, 16148) +HANDLE_BAT(APINT_TYPE_PREFIX, 16149) +HANDLE_BAT(APINT_TYPE_PREFIX, 16150) +HANDLE_BAT(APINT_TYPE_PREFIX, 16151) +HANDLE_BAT(APINT_TYPE_PREFIX, 16152) +HANDLE_BAT(APINT_TYPE_PREFIX, 16153) +HANDLE_BAT(APINT_TYPE_PREFIX, 16154) +HANDLE_BAT(APINT_TYPE_PREFIX, 16155) +HANDLE_BAT(APINT_TYPE_PREFIX, 16156) +HANDLE_BAT(APINT_TYPE_PREFIX, 16157) +HANDLE_BAT(APINT_TYPE_PREFIX, 16158) +HANDLE_BAT(APINT_TYPE_PREFIX, 16159) +HANDLE_BAT(APINT_TYPE_PREFIX, 16160) +HANDLE_BAT(APINT_TYPE_PREFIX, 16161) +HANDLE_BAT(APINT_TYPE_PREFIX, 16162) +HANDLE_BAT(APINT_TYPE_PREFIX, 16163) +HANDLE_BAT(APINT_TYPE_PREFIX, 16164) +HANDLE_BAT(APINT_TYPE_PREFIX, 16165) +HANDLE_BAT(APINT_TYPE_PREFIX, 16166) +HANDLE_BAT(APINT_TYPE_PREFIX, 16167) +HANDLE_BAT(APINT_TYPE_PREFIX, 16168) +HANDLE_BAT(APINT_TYPE_PREFIX, 16169) +HANDLE_BAT(APINT_TYPE_PREFIX, 16170) +HANDLE_BAT(APINT_TYPE_PREFIX, 16171) +HANDLE_BAT(APINT_TYPE_PREFIX, 16172) +HANDLE_BAT(APINT_TYPE_PREFIX, 16173) +HANDLE_BAT(APINT_TYPE_PREFIX, 16174) +HANDLE_BAT(APINT_TYPE_PREFIX, 16175) +HANDLE_BAT(APINT_TYPE_PREFIX, 16176) +HANDLE_BAT(APINT_TYPE_PREFIX, 16177) +HANDLE_BAT(APINT_TYPE_PREFIX, 16178) +HANDLE_BAT(APINT_TYPE_PREFIX, 16179) +HANDLE_BAT(APINT_TYPE_PREFIX, 16180) +HANDLE_BAT(APINT_TYPE_PREFIX, 16181) +HANDLE_BAT(APINT_TYPE_PREFIX, 16182) +HANDLE_BAT(APINT_TYPE_PREFIX, 16183) +HANDLE_BAT(APINT_TYPE_PREFIX, 16184) +HANDLE_BAT(APINT_TYPE_PREFIX, 16185) +HANDLE_BAT(APINT_TYPE_PREFIX, 16186) +HANDLE_BAT(APINT_TYPE_PREFIX, 16187) +HANDLE_BAT(APINT_TYPE_PREFIX, 16188) +HANDLE_BAT(APINT_TYPE_PREFIX, 16189) +HANDLE_BAT(APINT_TYPE_PREFIX, 16190) +HANDLE_BAT(APINT_TYPE_PREFIX, 16191) +HANDLE_BAT(APINT_TYPE_PREFIX, 16192) +HANDLE_BAT(APINT_TYPE_PREFIX, 16193) +HANDLE_BAT(APINT_TYPE_PREFIX, 16194) +HANDLE_BAT(APINT_TYPE_PREFIX, 16195) +HANDLE_BAT(APINT_TYPE_PREFIX, 16196) +HANDLE_BAT(APINT_TYPE_PREFIX, 16197) +HANDLE_BAT(APINT_TYPE_PREFIX, 16198) +HANDLE_BAT(APINT_TYPE_PREFIX, 16199) +HANDLE_BAT(APINT_TYPE_PREFIX, 16200) +HANDLE_BAT(APINT_TYPE_PREFIX, 16201) +HANDLE_BAT(APINT_TYPE_PREFIX, 16202) +HANDLE_BAT(APINT_TYPE_PREFIX, 16203) +HANDLE_BAT(APINT_TYPE_PREFIX, 16204) +HANDLE_BAT(APINT_TYPE_PREFIX, 16205) +HANDLE_BAT(APINT_TYPE_PREFIX, 16206) +HANDLE_BAT(APINT_TYPE_PREFIX, 16207) +HANDLE_BAT(APINT_TYPE_PREFIX, 16208) +HANDLE_BAT(APINT_TYPE_PREFIX, 16209) +HANDLE_BAT(APINT_TYPE_PREFIX, 16210) +HANDLE_BAT(APINT_TYPE_PREFIX, 16211) +HANDLE_BAT(APINT_TYPE_PREFIX, 16212) +HANDLE_BAT(APINT_TYPE_PREFIX, 16213) +HANDLE_BAT(APINT_TYPE_PREFIX, 16214) +HANDLE_BAT(APINT_TYPE_PREFIX, 16215) +HANDLE_BAT(APINT_TYPE_PREFIX, 16216) +HANDLE_BAT(APINT_TYPE_PREFIX, 16217) +HANDLE_BAT(APINT_TYPE_PREFIX, 16218) +HANDLE_BAT(APINT_TYPE_PREFIX, 16219) +HANDLE_BAT(APINT_TYPE_PREFIX, 16220) +HANDLE_BAT(APINT_TYPE_PREFIX, 16221) +HANDLE_BAT(APINT_TYPE_PREFIX, 16222) +HANDLE_BAT(APINT_TYPE_PREFIX, 16223) +HANDLE_BAT(APINT_TYPE_PREFIX, 16224) +HANDLE_BAT(APINT_TYPE_PREFIX, 16225) +HANDLE_BAT(APINT_TYPE_PREFIX, 16226) +HANDLE_BAT(APINT_TYPE_PREFIX, 16227) +HANDLE_BAT(APINT_TYPE_PREFIX, 16228) +HANDLE_BAT(APINT_TYPE_PREFIX, 16229) +HANDLE_BAT(APINT_TYPE_PREFIX, 16230) +HANDLE_BAT(APINT_TYPE_PREFIX, 16231) +HANDLE_BAT(APINT_TYPE_PREFIX, 16232) +HANDLE_BAT(APINT_TYPE_PREFIX, 16233) +HANDLE_BAT(APINT_TYPE_PREFIX, 16234) +HANDLE_BAT(APINT_TYPE_PREFIX, 16235) +HANDLE_BAT(APINT_TYPE_PREFIX, 16236) +HANDLE_BAT(APINT_TYPE_PREFIX, 16237) +HANDLE_BAT(APINT_TYPE_PREFIX, 16238) +HANDLE_BAT(APINT_TYPE_PREFIX, 16239) +HANDLE_BAT(APINT_TYPE_PREFIX, 16240) +HANDLE_BAT(APINT_TYPE_PREFIX, 16241) +HANDLE_BAT(APINT_TYPE_PREFIX, 16242) +HANDLE_BAT(APINT_TYPE_PREFIX, 16243) +HANDLE_BAT(APINT_TYPE_PREFIX, 16244) +HANDLE_BAT(APINT_TYPE_PREFIX, 16245) +HANDLE_BAT(APINT_TYPE_PREFIX, 16246) +HANDLE_BAT(APINT_TYPE_PREFIX, 16247) +HANDLE_BAT(APINT_TYPE_PREFIX, 16248) +HANDLE_BAT(APINT_TYPE_PREFIX, 16249) +HANDLE_BAT(APINT_TYPE_PREFIX, 16250) +HANDLE_BAT(APINT_TYPE_PREFIX, 16251) +HANDLE_BAT(APINT_TYPE_PREFIX, 16252) +HANDLE_BAT(APINT_TYPE_PREFIX, 16253) +HANDLE_BAT(APINT_TYPE_PREFIX, 16254) +HANDLE_BAT(APINT_TYPE_PREFIX, 16255) +HANDLE_BAT(APINT_TYPE_PREFIX, 16256) +HANDLE_BAT(APINT_TYPE_PREFIX, 16257) +HANDLE_BAT(APINT_TYPE_PREFIX, 16258) +HANDLE_BAT(APINT_TYPE_PREFIX, 16259) +HANDLE_BAT(APINT_TYPE_PREFIX, 16260) +HANDLE_BAT(APINT_TYPE_PREFIX, 16261) +HANDLE_BAT(APINT_TYPE_PREFIX, 16262) +HANDLE_BAT(APINT_TYPE_PREFIX, 16263) +HANDLE_BAT(APINT_TYPE_PREFIX, 16264) +HANDLE_BAT(APINT_TYPE_PREFIX, 16265) +HANDLE_BAT(APINT_TYPE_PREFIX, 16266) +HANDLE_BAT(APINT_TYPE_PREFIX, 16267) +HANDLE_BAT(APINT_TYPE_PREFIX, 16268) +HANDLE_BAT(APINT_TYPE_PREFIX, 16269) +HANDLE_BAT(APINT_TYPE_PREFIX, 16270) +HANDLE_BAT(APINT_TYPE_PREFIX, 16271) +HANDLE_BAT(APINT_TYPE_PREFIX, 16272) +HANDLE_BAT(APINT_TYPE_PREFIX, 16273) +HANDLE_BAT(APINT_TYPE_PREFIX, 16274) +HANDLE_BAT(APINT_TYPE_PREFIX, 16275) +HANDLE_BAT(APINT_TYPE_PREFIX, 16276) +HANDLE_BAT(APINT_TYPE_PREFIX, 16277) +HANDLE_BAT(APINT_TYPE_PREFIX, 16278) +HANDLE_BAT(APINT_TYPE_PREFIX, 16279) +HANDLE_BAT(APINT_TYPE_PREFIX, 16280) +HANDLE_BAT(APINT_TYPE_PREFIX, 16281) +HANDLE_BAT(APINT_TYPE_PREFIX, 16282) +HANDLE_BAT(APINT_TYPE_PREFIX, 16283) +HANDLE_BAT(APINT_TYPE_PREFIX, 16284) +HANDLE_BAT(APINT_TYPE_PREFIX, 16285) +HANDLE_BAT(APINT_TYPE_PREFIX, 16286) +HANDLE_BAT(APINT_TYPE_PREFIX, 16287) +HANDLE_BAT(APINT_TYPE_PREFIX, 16288) +HANDLE_BAT(APINT_TYPE_PREFIX, 16289) +HANDLE_BAT(APINT_TYPE_PREFIX, 16290) +HANDLE_BAT(APINT_TYPE_PREFIX, 16291) +HANDLE_BAT(APINT_TYPE_PREFIX, 16292) +HANDLE_BAT(APINT_TYPE_PREFIX, 16293) +HANDLE_BAT(APINT_TYPE_PREFIX, 16294) +HANDLE_BAT(APINT_TYPE_PREFIX, 16295) +HANDLE_BAT(APINT_TYPE_PREFIX, 16296) +HANDLE_BAT(APINT_TYPE_PREFIX, 16297) +HANDLE_BAT(APINT_TYPE_PREFIX, 16298) +HANDLE_BAT(APINT_TYPE_PREFIX, 16299) +HANDLE_BAT(APINT_TYPE_PREFIX, 16300) +HANDLE_BAT(APINT_TYPE_PREFIX, 16301) +HANDLE_BAT(APINT_TYPE_PREFIX, 16302) +HANDLE_BAT(APINT_TYPE_PREFIX, 16303) +HANDLE_BAT(APINT_TYPE_PREFIX, 16304) +HANDLE_BAT(APINT_TYPE_PREFIX, 16305) +HANDLE_BAT(APINT_TYPE_PREFIX, 16306) +HANDLE_BAT(APINT_TYPE_PREFIX, 16307) +HANDLE_BAT(APINT_TYPE_PREFIX, 16308) +HANDLE_BAT(APINT_TYPE_PREFIX, 16309) +HANDLE_BAT(APINT_TYPE_PREFIX, 16310) +HANDLE_BAT(APINT_TYPE_PREFIX, 16311) +HANDLE_BAT(APINT_TYPE_PREFIX, 16312) +HANDLE_BAT(APINT_TYPE_PREFIX, 16313) +HANDLE_BAT(APINT_TYPE_PREFIX, 16314) +HANDLE_BAT(APINT_TYPE_PREFIX, 16315) +HANDLE_BAT(APINT_TYPE_PREFIX, 16316) +HANDLE_BAT(APINT_TYPE_PREFIX, 16317) +HANDLE_BAT(APINT_TYPE_PREFIX, 16318) +HANDLE_BAT(APINT_TYPE_PREFIX, 16319) +HANDLE_BAT(APINT_TYPE_PREFIX, 16320) +HANDLE_BAT(APINT_TYPE_PREFIX, 16321) +HANDLE_BAT(APINT_TYPE_PREFIX, 16322) +HANDLE_BAT(APINT_TYPE_PREFIX, 16323) +HANDLE_BAT(APINT_TYPE_PREFIX, 16324) +HANDLE_BAT(APINT_TYPE_PREFIX, 16325) +HANDLE_BAT(APINT_TYPE_PREFIX, 16326) +HANDLE_BAT(APINT_TYPE_PREFIX, 16327) +HANDLE_BAT(APINT_TYPE_PREFIX, 16328) +HANDLE_BAT(APINT_TYPE_PREFIX, 16329) +HANDLE_BAT(APINT_TYPE_PREFIX, 16330) +HANDLE_BAT(APINT_TYPE_PREFIX, 16331) +HANDLE_BAT(APINT_TYPE_PREFIX, 16332) +HANDLE_BAT(APINT_TYPE_PREFIX, 16333) +HANDLE_BAT(APINT_TYPE_PREFIX, 16334) +HANDLE_BAT(APINT_TYPE_PREFIX, 16335) +HANDLE_BAT(APINT_TYPE_PREFIX, 16336) +HANDLE_BAT(APINT_TYPE_PREFIX, 16337) +HANDLE_BAT(APINT_TYPE_PREFIX, 16338) +HANDLE_BAT(APINT_TYPE_PREFIX, 16339) +HANDLE_BAT(APINT_TYPE_PREFIX, 16340) +HANDLE_BAT(APINT_TYPE_PREFIX, 16341) +HANDLE_BAT(APINT_TYPE_PREFIX, 16342) +HANDLE_BAT(APINT_TYPE_PREFIX, 16343) +HANDLE_BAT(APINT_TYPE_PREFIX, 16344) +HANDLE_BAT(APINT_TYPE_PREFIX, 16345) +HANDLE_BAT(APINT_TYPE_PREFIX, 16346) +HANDLE_BAT(APINT_TYPE_PREFIX, 16347) +HANDLE_BAT(APINT_TYPE_PREFIX, 16348) +HANDLE_BAT(APINT_TYPE_PREFIX, 16349) +HANDLE_BAT(APINT_TYPE_PREFIX, 16350) +HANDLE_BAT(APINT_TYPE_PREFIX, 16351) +HANDLE_BAT(APINT_TYPE_PREFIX, 16352) +HANDLE_BAT(APINT_TYPE_PREFIX, 16353) +HANDLE_BAT(APINT_TYPE_PREFIX, 16354) +HANDLE_BAT(APINT_TYPE_PREFIX, 16355) +HANDLE_BAT(APINT_TYPE_PREFIX, 16356) +HANDLE_BAT(APINT_TYPE_PREFIX, 16357) +HANDLE_BAT(APINT_TYPE_PREFIX, 16358) +HANDLE_BAT(APINT_TYPE_PREFIX, 16359) +HANDLE_BAT(APINT_TYPE_PREFIX, 16360) +HANDLE_BAT(APINT_TYPE_PREFIX, 16361) +HANDLE_BAT(APINT_TYPE_PREFIX, 16362) +HANDLE_BAT(APINT_TYPE_PREFIX, 16363) +HANDLE_BAT(APINT_TYPE_PREFIX, 16364) +HANDLE_BAT(APINT_TYPE_PREFIX, 16365) +HANDLE_BAT(APINT_TYPE_PREFIX, 16366) +HANDLE_BAT(APINT_TYPE_PREFIX, 16367) +HANDLE_BAT(APINT_TYPE_PREFIX, 16368) +HANDLE_BAT(APINT_TYPE_PREFIX, 16369) +HANDLE_BAT(APINT_TYPE_PREFIX, 16370) +HANDLE_BAT(APINT_TYPE_PREFIX, 16371) +HANDLE_BAT(APINT_TYPE_PREFIX, 16372) +HANDLE_BAT(APINT_TYPE_PREFIX, 16373) +HANDLE_BAT(APINT_TYPE_PREFIX, 16374) +HANDLE_BAT(APINT_TYPE_PREFIX, 16375) +HANDLE_BAT(APINT_TYPE_PREFIX, 16376) +HANDLE_BAT(APINT_TYPE_PREFIX, 16377) +HANDLE_BAT(APINT_TYPE_PREFIX, 16378) +HANDLE_BAT(APINT_TYPE_PREFIX, 16379) +HANDLE_BAT(APINT_TYPE_PREFIX, 16380) +HANDLE_BAT(APINT_TYPE_PREFIX, 16381) +HANDLE_BAT(APINT_TYPE_PREFIX, 16382) +HANDLE_BAT(APINT_TYPE_PREFIX, 16383) +HANDLE_BAT(APINT_TYPE_PREFIX, 16384) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 16 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 16385) +HANDLE_BAT(, 16386) +HANDLE_BAT(, 16387) +HANDLE_BAT(, 16388) +HANDLE_BAT(, 16389) +HANDLE_BAT(, 16390) +HANDLE_BAT(, 16391) +HANDLE_BAT(, 16392) +HANDLE_BAT(, 16393) +HANDLE_BAT(, 16394) +HANDLE_BAT(, 16395) +HANDLE_BAT(, 16396) +HANDLE_BAT(, 16397) +HANDLE_BAT(, 16398) +HANDLE_BAT(, 16399) +HANDLE_BAT(, 16400) +HANDLE_BAT(, 16401) +HANDLE_BAT(, 16402) +HANDLE_BAT(, 16403) +HANDLE_BAT(, 16404) +HANDLE_BAT(, 16405) +HANDLE_BAT(, 16406) +HANDLE_BAT(, 16407) +HANDLE_BAT(, 16408) +HANDLE_BAT(, 16409) +HANDLE_BAT(, 16410) +HANDLE_BAT(, 16411) +HANDLE_BAT(, 16412) +HANDLE_BAT(, 16413) +HANDLE_BAT(, 16414) +HANDLE_BAT(, 16415) +HANDLE_BAT(, 16416) +HANDLE_BAT(, 16417) +HANDLE_BAT(, 16418) +HANDLE_BAT(, 16419) +HANDLE_BAT(, 16420) +HANDLE_BAT(, 16421) +HANDLE_BAT(, 16422) +HANDLE_BAT(, 16423) +HANDLE_BAT(, 16424) +HANDLE_BAT(, 16425) +HANDLE_BAT(, 16426) +HANDLE_BAT(, 16427) +HANDLE_BAT(, 16428) +HANDLE_BAT(, 16429) +HANDLE_BAT(, 16430) +HANDLE_BAT(, 16431) +HANDLE_BAT(, 16432) +HANDLE_BAT(, 16433) +HANDLE_BAT(, 16434) +HANDLE_BAT(, 16435) +HANDLE_BAT(, 16436) +HANDLE_BAT(, 16437) +HANDLE_BAT(, 16438) +HANDLE_BAT(, 16439) +HANDLE_BAT(, 16440) +HANDLE_BAT(, 16441) +HANDLE_BAT(, 16442) +HANDLE_BAT(, 16443) +HANDLE_BAT(, 16444) +HANDLE_BAT(, 16445) +HANDLE_BAT(, 16446) +HANDLE_BAT(, 16447) +HANDLE_BAT(, 16448) +HANDLE_BAT(, 16449) +HANDLE_BAT(, 16450) +HANDLE_BAT(, 16451) +HANDLE_BAT(, 16452) +HANDLE_BAT(, 16453) +HANDLE_BAT(, 16454) +HANDLE_BAT(, 16455) +HANDLE_BAT(, 16456) +HANDLE_BAT(, 16457) +HANDLE_BAT(, 16458) +HANDLE_BAT(, 16459) +HANDLE_BAT(, 16460) +HANDLE_BAT(, 16461) +HANDLE_BAT(, 16462) +HANDLE_BAT(, 16463) +HANDLE_BAT(, 16464) +HANDLE_BAT(, 16465) +HANDLE_BAT(, 16466) +HANDLE_BAT(, 16467) +HANDLE_BAT(, 16468) +HANDLE_BAT(, 16469) +HANDLE_BAT(, 16470) +HANDLE_BAT(, 16471) +HANDLE_BAT(, 16472) +HANDLE_BAT(, 16473) +HANDLE_BAT(, 16474) +HANDLE_BAT(, 16475) +HANDLE_BAT(, 16476) +HANDLE_BAT(, 16477) +HANDLE_BAT(, 16478) +HANDLE_BAT(, 16479) +HANDLE_BAT(, 16480) +HANDLE_BAT(, 16481) +HANDLE_BAT(, 16482) +HANDLE_BAT(, 16483) +HANDLE_BAT(, 16484) +HANDLE_BAT(, 16485) +HANDLE_BAT(, 16486) +HANDLE_BAT(, 16487) +HANDLE_BAT(, 16488) +HANDLE_BAT(, 16489) +HANDLE_BAT(, 16490) +HANDLE_BAT(, 16491) +HANDLE_BAT(, 16492) +HANDLE_BAT(, 16493) +HANDLE_BAT(, 16494) +HANDLE_BAT(, 16495) +HANDLE_BAT(, 16496) +HANDLE_BAT(, 16497) +HANDLE_BAT(, 16498) +HANDLE_BAT(, 16499) +HANDLE_BAT(, 16500) +HANDLE_BAT(, 16501) +HANDLE_BAT(, 16502) +HANDLE_BAT(, 16503) +HANDLE_BAT(, 16504) +HANDLE_BAT(, 16505) +HANDLE_BAT(, 16506) +HANDLE_BAT(, 16507) +HANDLE_BAT(, 16508) +HANDLE_BAT(, 16509) +HANDLE_BAT(, 16510) +HANDLE_BAT(, 16511) +HANDLE_BAT(, 16512) +HANDLE_BAT(, 16513) +HANDLE_BAT(, 16514) +HANDLE_BAT(, 16515) +HANDLE_BAT(, 16516) +HANDLE_BAT(, 16517) +HANDLE_BAT(, 16518) +HANDLE_BAT(, 16519) +HANDLE_BAT(, 16520) +HANDLE_BAT(, 16521) +HANDLE_BAT(, 16522) +HANDLE_BAT(, 16523) +HANDLE_BAT(, 16524) +HANDLE_BAT(, 16525) +HANDLE_BAT(, 16526) +HANDLE_BAT(, 16527) +HANDLE_BAT(, 16528) +HANDLE_BAT(, 16529) +HANDLE_BAT(, 16530) +HANDLE_BAT(, 16531) +HANDLE_BAT(, 16532) +HANDLE_BAT(, 16533) +HANDLE_BAT(, 16534) +HANDLE_BAT(, 16535) +HANDLE_BAT(, 16536) +HANDLE_BAT(, 16537) +HANDLE_BAT(, 16538) +HANDLE_BAT(, 16539) +HANDLE_BAT(, 16540) +HANDLE_BAT(, 16541) +HANDLE_BAT(, 16542) +HANDLE_BAT(, 16543) +HANDLE_BAT(, 16544) +HANDLE_BAT(, 16545) +HANDLE_BAT(, 16546) +HANDLE_BAT(, 16547) +HANDLE_BAT(, 16548) +HANDLE_BAT(, 16549) +HANDLE_BAT(, 16550) +HANDLE_BAT(, 16551) +HANDLE_BAT(, 16552) +HANDLE_BAT(, 16553) +HANDLE_BAT(, 16554) +HANDLE_BAT(, 16555) +HANDLE_BAT(, 16556) +HANDLE_BAT(, 16557) +HANDLE_BAT(, 16558) +HANDLE_BAT(, 16559) +HANDLE_BAT(, 16560) +HANDLE_BAT(, 16561) +HANDLE_BAT(, 16562) +HANDLE_BAT(, 16563) +HANDLE_BAT(, 16564) +HANDLE_BAT(, 16565) +HANDLE_BAT(, 16566) +HANDLE_BAT(, 16567) +HANDLE_BAT(, 16568) +HANDLE_BAT(, 16569) +HANDLE_BAT(, 16570) +HANDLE_BAT(, 16571) +HANDLE_BAT(, 16572) +HANDLE_BAT(, 16573) +HANDLE_BAT(, 16574) +HANDLE_BAT(, 16575) +HANDLE_BAT(, 16576) +HANDLE_BAT(, 16577) +HANDLE_BAT(, 16578) +HANDLE_BAT(, 16579) +HANDLE_BAT(, 16580) +HANDLE_BAT(, 16581) +HANDLE_BAT(, 16582) +HANDLE_BAT(, 16583) +HANDLE_BAT(, 16584) +HANDLE_BAT(, 16585) +HANDLE_BAT(, 16586) +HANDLE_BAT(, 16587) +HANDLE_BAT(, 16588) +HANDLE_BAT(, 16589) +HANDLE_BAT(, 16590) +HANDLE_BAT(, 16591) +HANDLE_BAT(, 16592) +HANDLE_BAT(, 16593) +HANDLE_BAT(, 16594) +HANDLE_BAT(, 16595) +HANDLE_BAT(, 16596) +HANDLE_BAT(, 16597) +HANDLE_BAT(, 16598) +HANDLE_BAT(, 16599) +HANDLE_BAT(, 16600) +HANDLE_BAT(, 16601) +HANDLE_BAT(, 16602) +HANDLE_BAT(, 16603) +HANDLE_BAT(, 16604) +HANDLE_BAT(, 16605) +HANDLE_BAT(, 16606) +HANDLE_BAT(, 16607) +HANDLE_BAT(, 16608) +HANDLE_BAT(, 16609) +HANDLE_BAT(, 16610) +HANDLE_BAT(, 16611) +HANDLE_BAT(, 16612) +HANDLE_BAT(, 16613) +HANDLE_BAT(, 16614) +HANDLE_BAT(, 16615) +HANDLE_BAT(, 16616) +HANDLE_BAT(, 16617) +HANDLE_BAT(, 16618) +HANDLE_BAT(, 16619) +HANDLE_BAT(, 16620) +HANDLE_BAT(, 16621) +HANDLE_BAT(, 16622) +HANDLE_BAT(, 16623) +HANDLE_BAT(, 16624) +HANDLE_BAT(, 16625) +HANDLE_BAT(, 16626) +HANDLE_BAT(, 16627) +HANDLE_BAT(, 16628) +HANDLE_BAT(, 16629) +HANDLE_BAT(, 16630) +HANDLE_BAT(, 16631) +HANDLE_BAT(, 16632) +HANDLE_BAT(, 16633) +HANDLE_BAT(, 16634) +HANDLE_BAT(, 16635) +HANDLE_BAT(, 16636) +HANDLE_BAT(, 16637) +HANDLE_BAT(, 16638) +HANDLE_BAT(, 16639) +HANDLE_BAT(, 16640) +HANDLE_BAT(, 16641) +HANDLE_BAT(, 16642) +HANDLE_BAT(, 16643) +HANDLE_BAT(, 16644) +HANDLE_BAT(, 16645) +HANDLE_BAT(, 16646) +HANDLE_BAT(, 16647) +HANDLE_BAT(, 16648) +HANDLE_BAT(, 16649) +HANDLE_BAT(, 16650) +HANDLE_BAT(, 16651) +HANDLE_BAT(, 16652) +HANDLE_BAT(, 16653) +HANDLE_BAT(, 16654) +HANDLE_BAT(, 16655) +HANDLE_BAT(, 16656) +HANDLE_BAT(, 16657) +HANDLE_BAT(, 16658) +HANDLE_BAT(, 16659) +HANDLE_BAT(, 16660) +HANDLE_BAT(, 16661) +HANDLE_BAT(, 16662) +HANDLE_BAT(, 16663) +HANDLE_BAT(, 16664) +HANDLE_BAT(, 16665) +HANDLE_BAT(, 16666) +HANDLE_BAT(, 16667) +HANDLE_BAT(, 16668) +HANDLE_BAT(, 16669) +HANDLE_BAT(, 16670) +HANDLE_BAT(, 16671) +HANDLE_BAT(, 16672) +HANDLE_BAT(, 16673) +HANDLE_BAT(, 16674) +HANDLE_BAT(, 16675) +HANDLE_BAT(, 16676) +HANDLE_BAT(, 16677) +HANDLE_BAT(, 16678) +HANDLE_BAT(, 16679) +HANDLE_BAT(, 16680) +HANDLE_BAT(, 16681) +HANDLE_BAT(, 16682) +HANDLE_BAT(, 16683) +HANDLE_BAT(, 16684) +HANDLE_BAT(, 16685) +HANDLE_BAT(, 16686) +HANDLE_BAT(, 16687) +HANDLE_BAT(, 16688) +HANDLE_BAT(, 16689) +HANDLE_BAT(, 16690) +HANDLE_BAT(, 16691) +HANDLE_BAT(, 16692) +HANDLE_BAT(, 16693) +HANDLE_BAT(, 16694) +HANDLE_BAT(, 16695) +HANDLE_BAT(, 16696) +HANDLE_BAT(, 16697) +HANDLE_BAT(, 16698) +HANDLE_BAT(, 16699) +HANDLE_BAT(, 16700) +HANDLE_BAT(, 16701) +HANDLE_BAT(, 16702) +HANDLE_BAT(, 16703) +HANDLE_BAT(, 16704) +HANDLE_BAT(, 16705) +HANDLE_BAT(, 16706) +HANDLE_BAT(, 16707) +HANDLE_BAT(, 16708) +HANDLE_BAT(, 16709) +HANDLE_BAT(, 16710) +HANDLE_BAT(, 16711) +HANDLE_BAT(, 16712) +HANDLE_BAT(, 16713) +HANDLE_BAT(, 16714) +HANDLE_BAT(, 16715) +HANDLE_BAT(, 16716) +HANDLE_BAT(, 16717) +HANDLE_BAT(, 16718) +HANDLE_BAT(, 16719) +HANDLE_BAT(, 16720) +HANDLE_BAT(, 16721) +HANDLE_BAT(, 16722) +HANDLE_BAT(, 16723) +HANDLE_BAT(, 16724) +HANDLE_BAT(, 16725) +HANDLE_BAT(, 16726) +HANDLE_BAT(, 16727) +HANDLE_BAT(, 16728) +HANDLE_BAT(, 16729) +HANDLE_BAT(, 16730) +HANDLE_BAT(, 16731) +HANDLE_BAT(, 16732) +HANDLE_BAT(, 16733) +HANDLE_BAT(, 16734) +HANDLE_BAT(, 16735) +HANDLE_BAT(, 16736) +HANDLE_BAT(, 16737) +HANDLE_BAT(, 16738) +HANDLE_BAT(, 16739) +HANDLE_BAT(, 16740) +HANDLE_BAT(, 16741) +HANDLE_BAT(, 16742) +HANDLE_BAT(, 16743) +HANDLE_BAT(, 16744) +HANDLE_BAT(, 16745) +HANDLE_BAT(, 16746) +HANDLE_BAT(, 16747) +HANDLE_BAT(, 16748) +HANDLE_BAT(, 16749) +HANDLE_BAT(, 16750) +HANDLE_BAT(, 16751) +HANDLE_BAT(, 16752) +HANDLE_BAT(, 16753) +HANDLE_BAT(, 16754) +HANDLE_BAT(, 16755) +HANDLE_BAT(, 16756) +HANDLE_BAT(, 16757) +HANDLE_BAT(, 16758) +HANDLE_BAT(, 16759) +HANDLE_BAT(, 16760) +HANDLE_BAT(, 16761) +HANDLE_BAT(, 16762) +HANDLE_BAT(, 16763) +HANDLE_BAT(, 16764) +HANDLE_BAT(, 16765) +HANDLE_BAT(, 16766) +HANDLE_BAT(, 16767) +HANDLE_BAT(, 16768) +HANDLE_BAT(, 16769) +HANDLE_BAT(, 16770) +HANDLE_BAT(, 16771) +HANDLE_BAT(, 16772) +HANDLE_BAT(, 16773) +HANDLE_BAT(, 16774) +HANDLE_BAT(, 16775) +HANDLE_BAT(, 16776) +HANDLE_BAT(, 16777) +HANDLE_BAT(, 16778) +HANDLE_BAT(, 16779) +HANDLE_BAT(, 16780) +HANDLE_BAT(, 16781) +HANDLE_BAT(, 16782) +HANDLE_BAT(, 16783) +HANDLE_BAT(, 16784) +HANDLE_BAT(, 16785) +HANDLE_BAT(, 16786) +HANDLE_BAT(, 16787) +HANDLE_BAT(, 16788) +HANDLE_BAT(, 16789) +HANDLE_BAT(, 16790) +HANDLE_BAT(, 16791) +HANDLE_BAT(, 16792) +HANDLE_BAT(, 16793) +HANDLE_BAT(, 16794) +HANDLE_BAT(, 16795) +HANDLE_BAT(, 16796) +HANDLE_BAT(, 16797) +HANDLE_BAT(, 16798) +HANDLE_BAT(, 16799) +HANDLE_BAT(, 16800) +HANDLE_BAT(, 16801) +HANDLE_BAT(, 16802) +HANDLE_BAT(, 16803) +HANDLE_BAT(, 16804) +HANDLE_BAT(, 16805) +HANDLE_BAT(, 16806) +HANDLE_BAT(, 16807) +HANDLE_BAT(, 16808) +HANDLE_BAT(, 16809) +HANDLE_BAT(, 16810) +HANDLE_BAT(, 16811) +HANDLE_BAT(, 16812) +HANDLE_BAT(, 16813) +HANDLE_BAT(, 16814) +HANDLE_BAT(, 16815) +HANDLE_BAT(, 16816) +HANDLE_BAT(, 16817) +HANDLE_BAT(, 16818) +HANDLE_BAT(, 16819) +HANDLE_BAT(, 16820) +HANDLE_BAT(, 16821) +HANDLE_BAT(, 16822) +HANDLE_BAT(, 16823) +HANDLE_BAT(, 16824) +HANDLE_BAT(, 16825) +HANDLE_BAT(, 16826) +HANDLE_BAT(, 16827) +HANDLE_BAT(, 16828) +HANDLE_BAT(, 16829) +HANDLE_BAT(, 16830) +HANDLE_BAT(, 16831) +HANDLE_BAT(, 16832) +HANDLE_BAT(, 16833) +HANDLE_BAT(, 16834) +HANDLE_BAT(, 16835) +HANDLE_BAT(, 16836) +HANDLE_BAT(, 16837) +HANDLE_BAT(, 16838) +HANDLE_BAT(, 16839) +HANDLE_BAT(, 16840) +HANDLE_BAT(, 16841) +HANDLE_BAT(, 16842) +HANDLE_BAT(, 16843) +HANDLE_BAT(, 16844) +HANDLE_BAT(, 16845) +HANDLE_BAT(, 16846) +HANDLE_BAT(, 16847) +HANDLE_BAT(, 16848) +HANDLE_BAT(, 16849) +HANDLE_BAT(, 16850) +HANDLE_BAT(, 16851) +HANDLE_BAT(, 16852) +HANDLE_BAT(, 16853) +HANDLE_BAT(, 16854) +HANDLE_BAT(, 16855) +HANDLE_BAT(, 16856) +HANDLE_BAT(, 16857) +HANDLE_BAT(, 16858) +HANDLE_BAT(, 16859) +HANDLE_BAT(, 16860) +HANDLE_BAT(, 16861) +HANDLE_BAT(, 16862) +HANDLE_BAT(, 16863) +HANDLE_BAT(, 16864) +HANDLE_BAT(, 16865) +HANDLE_BAT(, 16866) +HANDLE_BAT(, 16867) +HANDLE_BAT(, 16868) +HANDLE_BAT(, 16869) +HANDLE_BAT(, 16870) +HANDLE_BAT(, 16871) +HANDLE_BAT(, 16872) +HANDLE_BAT(, 16873) +HANDLE_BAT(, 16874) +HANDLE_BAT(, 16875) +HANDLE_BAT(, 16876) +HANDLE_BAT(, 16877) +HANDLE_BAT(, 16878) +HANDLE_BAT(, 16879) +HANDLE_BAT(, 16880) +HANDLE_BAT(, 16881) +HANDLE_BAT(, 16882) +HANDLE_BAT(, 16883) +HANDLE_BAT(, 16884) +HANDLE_BAT(, 16885) +HANDLE_BAT(, 16886) +HANDLE_BAT(, 16887) +HANDLE_BAT(, 16888) +HANDLE_BAT(, 16889) +HANDLE_BAT(, 16890) +HANDLE_BAT(, 16891) +HANDLE_BAT(, 16892) +HANDLE_BAT(, 16893) +HANDLE_BAT(, 16894) +HANDLE_BAT(, 16895) +HANDLE_BAT(, 16896) +HANDLE_BAT(, 16897) +HANDLE_BAT(, 16898) +HANDLE_BAT(, 16899) +HANDLE_BAT(, 16900) +HANDLE_BAT(, 16901) +HANDLE_BAT(, 16902) +HANDLE_BAT(, 16903) +HANDLE_BAT(, 16904) +HANDLE_BAT(, 16905) +HANDLE_BAT(, 16906) +HANDLE_BAT(, 16907) +HANDLE_BAT(, 16908) +HANDLE_BAT(, 16909) +HANDLE_BAT(, 16910) +HANDLE_BAT(, 16911) +HANDLE_BAT(, 16912) +HANDLE_BAT(, 16913) +HANDLE_BAT(, 16914) +HANDLE_BAT(, 16915) +HANDLE_BAT(, 16916) +HANDLE_BAT(, 16917) +HANDLE_BAT(, 16918) +HANDLE_BAT(, 16919) +HANDLE_BAT(, 16920) +HANDLE_BAT(, 16921) +HANDLE_BAT(, 16922) +HANDLE_BAT(, 16923) +HANDLE_BAT(, 16924) +HANDLE_BAT(, 16925) +HANDLE_BAT(, 16926) +HANDLE_BAT(, 16927) +HANDLE_BAT(, 16928) +HANDLE_BAT(, 16929) +HANDLE_BAT(, 16930) +HANDLE_BAT(, 16931) +HANDLE_BAT(, 16932) +HANDLE_BAT(, 16933) +HANDLE_BAT(, 16934) +HANDLE_BAT(, 16935) +HANDLE_BAT(, 16936) +HANDLE_BAT(, 16937) +HANDLE_BAT(, 16938) +HANDLE_BAT(, 16939) +HANDLE_BAT(, 16940) +HANDLE_BAT(, 16941) +HANDLE_BAT(, 16942) +HANDLE_BAT(, 16943) +HANDLE_BAT(, 16944) +HANDLE_BAT(, 16945) +HANDLE_BAT(, 16946) +HANDLE_BAT(, 16947) +HANDLE_BAT(, 16948) +HANDLE_BAT(, 16949) +HANDLE_BAT(, 16950) +HANDLE_BAT(, 16951) +HANDLE_BAT(, 16952) +HANDLE_BAT(, 16953) +HANDLE_BAT(, 16954) +HANDLE_BAT(, 16955) +HANDLE_BAT(, 16956) +HANDLE_BAT(, 16957) +HANDLE_BAT(, 16958) +HANDLE_BAT(, 16959) +HANDLE_BAT(, 16960) +HANDLE_BAT(, 16961) +HANDLE_BAT(, 16962) +HANDLE_BAT(, 16963) +HANDLE_BAT(, 16964) +HANDLE_BAT(, 16965) +HANDLE_BAT(, 16966) +HANDLE_BAT(, 16967) +HANDLE_BAT(, 16968) +HANDLE_BAT(, 16969) +HANDLE_BAT(, 16970) +HANDLE_BAT(, 16971) +HANDLE_BAT(, 16972) +HANDLE_BAT(, 16973) +HANDLE_BAT(, 16974) +HANDLE_BAT(, 16975) +HANDLE_BAT(, 16976) +HANDLE_BAT(, 16977) +HANDLE_BAT(, 16978) +HANDLE_BAT(, 16979) +HANDLE_BAT(, 16980) +HANDLE_BAT(, 16981) +HANDLE_BAT(, 16982) +HANDLE_BAT(, 16983) +HANDLE_BAT(, 16984) +HANDLE_BAT(, 16985) +HANDLE_BAT(, 16986) +HANDLE_BAT(, 16987) +HANDLE_BAT(, 16988) +HANDLE_BAT(, 16989) +HANDLE_BAT(, 16990) +HANDLE_BAT(, 16991) +HANDLE_BAT(, 16992) +HANDLE_BAT(, 16993) +HANDLE_BAT(, 16994) +HANDLE_BAT(, 16995) +HANDLE_BAT(, 16996) +HANDLE_BAT(, 16997) +HANDLE_BAT(, 16998) +HANDLE_BAT(, 16999) +HANDLE_BAT(, 17000) +HANDLE_BAT(, 17001) +HANDLE_BAT(, 17002) +HANDLE_BAT(, 17003) +HANDLE_BAT(, 17004) +HANDLE_BAT(, 17005) +HANDLE_BAT(, 17006) +HANDLE_BAT(, 17007) +HANDLE_BAT(, 17008) +HANDLE_BAT(, 17009) +HANDLE_BAT(, 17010) +HANDLE_BAT(, 17011) +HANDLE_BAT(, 17012) +HANDLE_BAT(, 17013) +HANDLE_BAT(, 17014) +HANDLE_BAT(, 17015) +HANDLE_BAT(, 17016) +HANDLE_BAT(, 17017) +HANDLE_BAT(, 17018) +HANDLE_BAT(, 17019) +HANDLE_BAT(, 17020) +HANDLE_BAT(, 17021) +HANDLE_BAT(, 17022) +HANDLE_BAT(, 17023) +HANDLE_BAT(, 17024) +HANDLE_BAT(, 17025) +HANDLE_BAT(, 17026) +HANDLE_BAT(, 17027) +HANDLE_BAT(, 17028) +HANDLE_BAT(, 17029) +HANDLE_BAT(, 17030) +HANDLE_BAT(, 17031) +HANDLE_BAT(, 17032) +HANDLE_BAT(, 17033) +HANDLE_BAT(, 17034) +HANDLE_BAT(, 17035) +HANDLE_BAT(, 17036) +HANDLE_BAT(, 17037) +HANDLE_BAT(, 17038) +HANDLE_BAT(, 17039) +HANDLE_BAT(, 17040) +HANDLE_BAT(, 17041) +HANDLE_BAT(, 17042) +HANDLE_BAT(, 17043) +HANDLE_BAT(, 17044) +HANDLE_BAT(, 17045) +HANDLE_BAT(, 17046) +HANDLE_BAT(, 17047) +HANDLE_BAT(, 17048) +HANDLE_BAT(, 17049) +HANDLE_BAT(, 17050) +HANDLE_BAT(, 17051) +HANDLE_BAT(, 17052) +HANDLE_BAT(, 17053) +HANDLE_BAT(, 17054) +HANDLE_BAT(, 17055) +HANDLE_BAT(, 17056) +HANDLE_BAT(, 17057) +HANDLE_BAT(, 17058) +HANDLE_BAT(, 17059) +HANDLE_BAT(, 17060) +HANDLE_BAT(, 17061) +HANDLE_BAT(, 17062) +HANDLE_BAT(, 17063) +HANDLE_BAT(, 17064) +HANDLE_BAT(, 17065) +HANDLE_BAT(, 17066) +HANDLE_BAT(, 17067) +HANDLE_BAT(, 17068) +HANDLE_BAT(, 17069) +HANDLE_BAT(, 17070) +HANDLE_BAT(, 17071) +HANDLE_BAT(, 17072) +HANDLE_BAT(, 17073) +HANDLE_BAT(, 17074) +HANDLE_BAT(, 17075) +HANDLE_BAT(, 17076) +HANDLE_BAT(, 17077) +HANDLE_BAT(, 17078) +HANDLE_BAT(, 17079) +HANDLE_BAT(, 17080) +HANDLE_BAT(, 17081) +HANDLE_BAT(, 17082) +HANDLE_BAT(, 17083) +HANDLE_BAT(, 17084) +HANDLE_BAT(, 17085) +HANDLE_BAT(, 17086) +HANDLE_BAT(, 17087) +HANDLE_BAT(, 17088) +HANDLE_BAT(, 17089) +HANDLE_BAT(, 17090) +HANDLE_BAT(, 17091) +HANDLE_BAT(, 17092) +HANDLE_BAT(, 17093) +HANDLE_BAT(, 17094) +HANDLE_BAT(, 17095) +HANDLE_BAT(, 17096) +HANDLE_BAT(, 17097) +HANDLE_BAT(, 17098) +HANDLE_BAT(, 17099) +HANDLE_BAT(, 17100) +HANDLE_BAT(, 17101) +HANDLE_BAT(, 17102) +HANDLE_BAT(, 17103) +HANDLE_BAT(, 17104) +HANDLE_BAT(, 17105) +HANDLE_BAT(, 17106) +HANDLE_BAT(, 17107) +HANDLE_BAT(, 17108) +HANDLE_BAT(, 17109) +HANDLE_BAT(, 17110) +HANDLE_BAT(, 17111) +HANDLE_BAT(, 17112) +HANDLE_BAT(, 17113) +HANDLE_BAT(, 17114) +HANDLE_BAT(, 17115) +HANDLE_BAT(, 17116) +HANDLE_BAT(, 17117) +HANDLE_BAT(, 17118) +HANDLE_BAT(, 17119) +HANDLE_BAT(, 17120) +HANDLE_BAT(, 17121) +HANDLE_BAT(, 17122) +HANDLE_BAT(, 17123) +HANDLE_BAT(, 17124) +HANDLE_BAT(, 17125) +HANDLE_BAT(, 17126) +HANDLE_BAT(, 17127) +HANDLE_BAT(, 17128) +HANDLE_BAT(, 17129) +HANDLE_BAT(, 17130) +HANDLE_BAT(, 17131) +HANDLE_BAT(, 17132) +HANDLE_BAT(, 17133) +HANDLE_BAT(, 17134) +HANDLE_BAT(, 17135) +HANDLE_BAT(, 17136) +HANDLE_BAT(, 17137) +HANDLE_BAT(, 17138) +HANDLE_BAT(, 17139) +HANDLE_BAT(, 17140) +HANDLE_BAT(, 17141) +HANDLE_BAT(, 17142) +HANDLE_BAT(, 17143) +HANDLE_BAT(, 17144) +HANDLE_BAT(, 17145) +HANDLE_BAT(, 17146) +HANDLE_BAT(, 17147) +HANDLE_BAT(, 17148) +HANDLE_BAT(, 17149) +HANDLE_BAT(, 17150) +HANDLE_BAT(, 17151) +HANDLE_BAT(, 17152) +HANDLE_BAT(, 17153) +HANDLE_BAT(, 17154) +HANDLE_BAT(, 17155) +HANDLE_BAT(, 17156) +HANDLE_BAT(, 17157) +HANDLE_BAT(, 17158) +HANDLE_BAT(, 17159) +HANDLE_BAT(, 17160) +HANDLE_BAT(, 17161) +HANDLE_BAT(, 17162) +HANDLE_BAT(, 17163) +HANDLE_BAT(, 17164) +HANDLE_BAT(, 17165) +HANDLE_BAT(, 17166) +HANDLE_BAT(, 17167) +HANDLE_BAT(, 17168) +HANDLE_BAT(, 17169) +HANDLE_BAT(, 17170) +HANDLE_BAT(, 17171) +HANDLE_BAT(, 17172) +HANDLE_BAT(, 17173) +HANDLE_BAT(, 17174) +HANDLE_BAT(, 17175) +HANDLE_BAT(, 17176) +HANDLE_BAT(, 17177) +HANDLE_BAT(, 17178) +HANDLE_BAT(, 17179) +HANDLE_BAT(, 17180) +HANDLE_BAT(, 17181) +HANDLE_BAT(, 17182) +HANDLE_BAT(, 17183) +HANDLE_BAT(, 17184) +HANDLE_BAT(, 17185) +HANDLE_BAT(, 17186) +HANDLE_BAT(, 17187) +HANDLE_BAT(, 17188) +HANDLE_BAT(, 17189) +HANDLE_BAT(, 17190) +HANDLE_BAT(, 17191) +HANDLE_BAT(, 17192) +HANDLE_BAT(, 17193) +HANDLE_BAT(, 17194) +HANDLE_BAT(, 17195) +HANDLE_BAT(, 17196) +HANDLE_BAT(, 17197) +HANDLE_BAT(, 17198) +HANDLE_BAT(, 17199) +HANDLE_BAT(, 17200) +HANDLE_BAT(, 17201) +HANDLE_BAT(, 17202) +HANDLE_BAT(, 17203) +HANDLE_BAT(, 17204) +HANDLE_BAT(, 17205) +HANDLE_BAT(, 17206) +HANDLE_BAT(, 17207) +HANDLE_BAT(, 17208) +HANDLE_BAT(, 17209) +HANDLE_BAT(, 17210) +HANDLE_BAT(, 17211) +HANDLE_BAT(, 17212) +HANDLE_BAT(, 17213) +HANDLE_BAT(, 17214) +HANDLE_BAT(, 17215) +HANDLE_BAT(, 17216) +HANDLE_BAT(, 17217) +HANDLE_BAT(, 17218) +HANDLE_BAT(, 17219) +HANDLE_BAT(, 17220) +HANDLE_BAT(, 17221) +HANDLE_BAT(, 17222) +HANDLE_BAT(, 17223) +HANDLE_BAT(, 17224) +HANDLE_BAT(, 17225) +HANDLE_BAT(, 17226) +HANDLE_BAT(, 17227) +HANDLE_BAT(, 17228) +HANDLE_BAT(, 17229) +HANDLE_BAT(, 17230) +HANDLE_BAT(, 17231) +HANDLE_BAT(, 17232) +HANDLE_BAT(, 17233) +HANDLE_BAT(, 17234) +HANDLE_BAT(, 17235) +HANDLE_BAT(, 17236) +HANDLE_BAT(, 17237) +HANDLE_BAT(, 17238) +HANDLE_BAT(, 17239) +HANDLE_BAT(, 17240) +HANDLE_BAT(, 17241) +HANDLE_BAT(, 17242) +HANDLE_BAT(, 17243) +HANDLE_BAT(, 17244) +HANDLE_BAT(, 17245) +HANDLE_BAT(, 17246) +HANDLE_BAT(, 17247) +HANDLE_BAT(, 17248) +HANDLE_BAT(, 17249) +HANDLE_BAT(, 17250) +HANDLE_BAT(, 17251) +HANDLE_BAT(, 17252) +HANDLE_BAT(, 17253) +HANDLE_BAT(, 17254) +HANDLE_BAT(, 17255) +HANDLE_BAT(, 17256) +HANDLE_BAT(, 17257) +HANDLE_BAT(, 17258) +HANDLE_BAT(, 17259) +HANDLE_BAT(, 17260) +HANDLE_BAT(, 17261) +HANDLE_BAT(, 17262) +HANDLE_BAT(, 17263) +HANDLE_BAT(, 17264) +HANDLE_BAT(, 17265) +HANDLE_BAT(, 17266) +HANDLE_BAT(, 17267) +HANDLE_BAT(, 17268) +HANDLE_BAT(, 17269) +HANDLE_BAT(, 17270) +HANDLE_BAT(, 17271) +HANDLE_BAT(, 17272) +HANDLE_BAT(, 17273) +HANDLE_BAT(, 17274) +HANDLE_BAT(, 17275) +HANDLE_BAT(, 17276) +HANDLE_BAT(, 17277) +HANDLE_BAT(, 17278) +HANDLE_BAT(, 17279) +HANDLE_BAT(, 17280) +HANDLE_BAT(, 17281) +HANDLE_BAT(, 17282) +HANDLE_BAT(, 17283) +HANDLE_BAT(, 17284) +HANDLE_BAT(, 17285) +HANDLE_BAT(, 17286) +HANDLE_BAT(, 17287) +HANDLE_BAT(, 17288) +HANDLE_BAT(, 17289) +HANDLE_BAT(, 17290) +HANDLE_BAT(, 17291) +HANDLE_BAT(, 17292) +HANDLE_BAT(, 17293) +HANDLE_BAT(, 17294) +HANDLE_BAT(, 17295) +HANDLE_BAT(, 17296) +HANDLE_BAT(, 17297) +HANDLE_BAT(, 17298) +HANDLE_BAT(, 17299) +HANDLE_BAT(, 17300) +HANDLE_BAT(, 17301) +HANDLE_BAT(, 17302) +HANDLE_BAT(, 17303) +HANDLE_BAT(, 17304) +HANDLE_BAT(, 17305) +HANDLE_BAT(, 17306) +HANDLE_BAT(, 17307) +HANDLE_BAT(, 17308) +HANDLE_BAT(, 17309) +HANDLE_BAT(, 17310) +HANDLE_BAT(, 17311) +HANDLE_BAT(, 17312) +HANDLE_BAT(, 17313) +HANDLE_BAT(, 17314) +HANDLE_BAT(, 17315) +HANDLE_BAT(, 17316) +HANDLE_BAT(, 17317) +HANDLE_BAT(, 17318) +HANDLE_BAT(, 17319) +HANDLE_BAT(, 17320) +HANDLE_BAT(, 17321) +HANDLE_BAT(, 17322) +HANDLE_BAT(, 17323) +HANDLE_BAT(, 17324) +HANDLE_BAT(, 17325) +HANDLE_BAT(, 17326) +HANDLE_BAT(, 17327) +HANDLE_BAT(, 17328) +HANDLE_BAT(, 17329) +HANDLE_BAT(, 17330) +HANDLE_BAT(, 17331) +HANDLE_BAT(, 17332) +HANDLE_BAT(, 17333) +HANDLE_BAT(, 17334) +HANDLE_BAT(, 17335) +HANDLE_BAT(, 17336) +HANDLE_BAT(, 17337) +HANDLE_BAT(, 17338) +HANDLE_BAT(, 17339) +HANDLE_BAT(, 17340) +HANDLE_BAT(, 17341) +HANDLE_BAT(, 17342) +HANDLE_BAT(, 17343) +HANDLE_BAT(, 17344) +HANDLE_BAT(, 17345) +HANDLE_BAT(, 17346) +HANDLE_BAT(, 17347) +HANDLE_BAT(, 17348) +HANDLE_BAT(, 17349) +HANDLE_BAT(, 17350) +HANDLE_BAT(, 17351) +HANDLE_BAT(, 17352) +HANDLE_BAT(, 17353) +HANDLE_BAT(, 17354) +HANDLE_BAT(, 17355) +HANDLE_BAT(, 17356) +HANDLE_BAT(, 17357) +HANDLE_BAT(, 17358) +HANDLE_BAT(, 17359) +HANDLE_BAT(, 17360) +HANDLE_BAT(, 17361) +HANDLE_BAT(, 17362) +HANDLE_BAT(, 17363) +HANDLE_BAT(, 17364) +HANDLE_BAT(, 17365) +HANDLE_BAT(, 17366) +HANDLE_BAT(, 17367) +HANDLE_BAT(, 17368) +HANDLE_BAT(, 17369) +HANDLE_BAT(, 17370) +HANDLE_BAT(, 17371) +HANDLE_BAT(, 17372) +HANDLE_BAT(, 17373) +HANDLE_BAT(, 17374) +HANDLE_BAT(, 17375) +HANDLE_BAT(, 17376) +HANDLE_BAT(, 17377) +HANDLE_BAT(, 17378) +HANDLE_BAT(, 17379) +HANDLE_BAT(, 17380) +HANDLE_BAT(, 17381) +HANDLE_BAT(, 17382) +HANDLE_BAT(, 17383) +HANDLE_BAT(, 17384) +HANDLE_BAT(, 17385) +HANDLE_BAT(, 17386) +HANDLE_BAT(, 17387) +HANDLE_BAT(, 17388) +HANDLE_BAT(, 17389) +HANDLE_BAT(, 17390) +HANDLE_BAT(, 17391) +HANDLE_BAT(, 17392) +HANDLE_BAT(, 17393) +HANDLE_BAT(, 17394) +HANDLE_BAT(, 17395) +HANDLE_BAT(, 17396) +HANDLE_BAT(, 17397) +HANDLE_BAT(, 17398) +HANDLE_BAT(, 17399) +HANDLE_BAT(, 17400) +HANDLE_BAT(, 17401) +HANDLE_BAT(, 17402) +HANDLE_BAT(, 17403) +HANDLE_BAT(, 17404) +HANDLE_BAT(, 17405) +HANDLE_BAT(, 17406) +HANDLE_BAT(, 17407) +HANDLE_BAT(, 17408) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 16385) +HANDLE_BAT(APINT_TYPE_PREFIX, 16386) +HANDLE_BAT(APINT_TYPE_PREFIX, 16387) +HANDLE_BAT(APINT_TYPE_PREFIX, 16388) +HANDLE_BAT(APINT_TYPE_PREFIX, 16389) +HANDLE_BAT(APINT_TYPE_PREFIX, 16390) +HANDLE_BAT(APINT_TYPE_PREFIX, 16391) +HANDLE_BAT(APINT_TYPE_PREFIX, 16392) +HANDLE_BAT(APINT_TYPE_PREFIX, 16393) +HANDLE_BAT(APINT_TYPE_PREFIX, 16394) +HANDLE_BAT(APINT_TYPE_PREFIX, 16395) +HANDLE_BAT(APINT_TYPE_PREFIX, 16396) +HANDLE_BAT(APINT_TYPE_PREFIX, 16397) +HANDLE_BAT(APINT_TYPE_PREFIX, 16398) +HANDLE_BAT(APINT_TYPE_PREFIX, 16399) +HANDLE_BAT(APINT_TYPE_PREFIX, 16400) +HANDLE_BAT(APINT_TYPE_PREFIX, 16401) +HANDLE_BAT(APINT_TYPE_PREFIX, 16402) +HANDLE_BAT(APINT_TYPE_PREFIX, 16403) +HANDLE_BAT(APINT_TYPE_PREFIX, 16404) +HANDLE_BAT(APINT_TYPE_PREFIX, 16405) +HANDLE_BAT(APINT_TYPE_PREFIX, 16406) +HANDLE_BAT(APINT_TYPE_PREFIX, 16407) +HANDLE_BAT(APINT_TYPE_PREFIX, 16408) +HANDLE_BAT(APINT_TYPE_PREFIX, 16409) +HANDLE_BAT(APINT_TYPE_PREFIX, 16410) +HANDLE_BAT(APINT_TYPE_PREFIX, 16411) +HANDLE_BAT(APINT_TYPE_PREFIX, 16412) +HANDLE_BAT(APINT_TYPE_PREFIX, 16413) +HANDLE_BAT(APINT_TYPE_PREFIX, 16414) +HANDLE_BAT(APINT_TYPE_PREFIX, 16415) +HANDLE_BAT(APINT_TYPE_PREFIX, 16416) +HANDLE_BAT(APINT_TYPE_PREFIX, 16417) +HANDLE_BAT(APINT_TYPE_PREFIX, 16418) +HANDLE_BAT(APINT_TYPE_PREFIX, 16419) +HANDLE_BAT(APINT_TYPE_PREFIX, 16420) +HANDLE_BAT(APINT_TYPE_PREFIX, 16421) +HANDLE_BAT(APINT_TYPE_PREFIX, 16422) +HANDLE_BAT(APINT_TYPE_PREFIX, 16423) +HANDLE_BAT(APINT_TYPE_PREFIX, 16424) +HANDLE_BAT(APINT_TYPE_PREFIX, 16425) +HANDLE_BAT(APINT_TYPE_PREFIX, 16426) +HANDLE_BAT(APINT_TYPE_PREFIX, 16427) +HANDLE_BAT(APINT_TYPE_PREFIX, 16428) +HANDLE_BAT(APINT_TYPE_PREFIX, 16429) +HANDLE_BAT(APINT_TYPE_PREFIX, 16430) +HANDLE_BAT(APINT_TYPE_PREFIX, 16431) +HANDLE_BAT(APINT_TYPE_PREFIX, 16432) +HANDLE_BAT(APINT_TYPE_PREFIX, 16433) +HANDLE_BAT(APINT_TYPE_PREFIX, 16434) +HANDLE_BAT(APINT_TYPE_PREFIX, 16435) +HANDLE_BAT(APINT_TYPE_PREFIX, 16436) +HANDLE_BAT(APINT_TYPE_PREFIX, 16437) +HANDLE_BAT(APINT_TYPE_PREFIX, 16438) +HANDLE_BAT(APINT_TYPE_PREFIX, 16439) +HANDLE_BAT(APINT_TYPE_PREFIX, 16440) +HANDLE_BAT(APINT_TYPE_PREFIX, 16441) +HANDLE_BAT(APINT_TYPE_PREFIX, 16442) +HANDLE_BAT(APINT_TYPE_PREFIX, 16443) +HANDLE_BAT(APINT_TYPE_PREFIX, 16444) +HANDLE_BAT(APINT_TYPE_PREFIX, 16445) +HANDLE_BAT(APINT_TYPE_PREFIX, 16446) +HANDLE_BAT(APINT_TYPE_PREFIX, 16447) +HANDLE_BAT(APINT_TYPE_PREFIX, 16448) +HANDLE_BAT(APINT_TYPE_PREFIX, 16449) +HANDLE_BAT(APINT_TYPE_PREFIX, 16450) +HANDLE_BAT(APINT_TYPE_PREFIX, 16451) +HANDLE_BAT(APINT_TYPE_PREFIX, 16452) +HANDLE_BAT(APINT_TYPE_PREFIX, 16453) +HANDLE_BAT(APINT_TYPE_PREFIX, 16454) +HANDLE_BAT(APINT_TYPE_PREFIX, 16455) +HANDLE_BAT(APINT_TYPE_PREFIX, 16456) +HANDLE_BAT(APINT_TYPE_PREFIX, 16457) +HANDLE_BAT(APINT_TYPE_PREFIX, 16458) +HANDLE_BAT(APINT_TYPE_PREFIX, 16459) +HANDLE_BAT(APINT_TYPE_PREFIX, 16460) +HANDLE_BAT(APINT_TYPE_PREFIX, 16461) +HANDLE_BAT(APINT_TYPE_PREFIX, 16462) +HANDLE_BAT(APINT_TYPE_PREFIX, 16463) +HANDLE_BAT(APINT_TYPE_PREFIX, 16464) +HANDLE_BAT(APINT_TYPE_PREFIX, 16465) +HANDLE_BAT(APINT_TYPE_PREFIX, 16466) +HANDLE_BAT(APINT_TYPE_PREFIX, 16467) +HANDLE_BAT(APINT_TYPE_PREFIX, 16468) +HANDLE_BAT(APINT_TYPE_PREFIX, 16469) +HANDLE_BAT(APINT_TYPE_PREFIX, 16470) +HANDLE_BAT(APINT_TYPE_PREFIX, 16471) +HANDLE_BAT(APINT_TYPE_PREFIX, 16472) +HANDLE_BAT(APINT_TYPE_PREFIX, 16473) +HANDLE_BAT(APINT_TYPE_PREFIX, 16474) +HANDLE_BAT(APINT_TYPE_PREFIX, 16475) +HANDLE_BAT(APINT_TYPE_PREFIX, 16476) +HANDLE_BAT(APINT_TYPE_PREFIX, 16477) +HANDLE_BAT(APINT_TYPE_PREFIX, 16478) +HANDLE_BAT(APINT_TYPE_PREFIX, 16479) +HANDLE_BAT(APINT_TYPE_PREFIX, 16480) +HANDLE_BAT(APINT_TYPE_PREFIX, 16481) +HANDLE_BAT(APINT_TYPE_PREFIX, 16482) +HANDLE_BAT(APINT_TYPE_PREFIX, 16483) +HANDLE_BAT(APINT_TYPE_PREFIX, 16484) +HANDLE_BAT(APINT_TYPE_PREFIX, 16485) +HANDLE_BAT(APINT_TYPE_PREFIX, 16486) +HANDLE_BAT(APINT_TYPE_PREFIX, 16487) +HANDLE_BAT(APINT_TYPE_PREFIX, 16488) +HANDLE_BAT(APINT_TYPE_PREFIX, 16489) +HANDLE_BAT(APINT_TYPE_PREFIX, 16490) +HANDLE_BAT(APINT_TYPE_PREFIX, 16491) +HANDLE_BAT(APINT_TYPE_PREFIX, 16492) +HANDLE_BAT(APINT_TYPE_PREFIX, 16493) +HANDLE_BAT(APINT_TYPE_PREFIX, 16494) +HANDLE_BAT(APINT_TYPE_PREFIX, 16495) +HANDLE_BAT(APINT_TYPE_PREFIX, 16496) +HANDLE_BAT(APINT_TYPE_PREFIX, 16497) +HANDLE_BAT(APINT_TYPE_PREFIX, 16498) +HANDLE_BAT(APINT_TYPE_PREFIX, 16499) +HANDLE_BAT(APINT_TYPE_PREFIX, 16500) +HANDLE_BAT(APINT_TYPE_PREFIX, 16501) +HANDLE_BAT(APINT_TYPE_PREFIX, 16502) +HANDLE_BAT(APINT_TYPE_PREFIX, 16503) +HANDLE_BAT(APINT_TYPE_PREFIX, 16504) +HANDLE_BAT(APINT_TYPE_PREFIX, 16505) +HANDLE_BAT(APINT_TYPE_PREFIX, 16506) +HANDLE_BAT(APINT_TYPE_PREFIX, 16507) +HANDLE_BAT(APINT_TYPE_PREFIX, 16508) +HANDLE_BAT(APINT_TYPE_PREFIX, 16509) +HANDLE_BAT(APINT_TYPE_PREFIX, 16510) +HANDLE_BAT(APINT_TYPE_PREFIX, 16511) +HANDLE_BAT(APINT_TYPE_PREFIX, 16512) +HANDLE_BAT(APINT_TYPE_PREFIX, 16513) +HANDLE_BAT(APINT_TYPE_PREFIX, 16514) +HANDLE_BAT(APINT_TYPE_PREFIX, 16515) +HANDLE_BAT(APINT_TYPE_PREFIX, 16516) +HANDLE_BAT(APINT_TYPE_PREFIX, 16517) +HANDLE_BAT(APINT_TYPE_PREFIX, 16518) +HANDLE_BAT(APINT_TYPE_PREFIX, 16519) +HANDLE_BAT(APINT_TYPE_PREFIX, 16520) +HANDLE_BAT(APINT_TYPE_PREFIX, 16521) +HANDLE_BAT(APINT_TYPE_PREFIX, 16522) +HANDLE_BAT(APINT_TYPE_PREFIX, 16523) +HANDLE_BAT(APINT_TYPE_PREFIX, 16524) +HANDLE_BAT(APINT_TYPE_PREFIX, 16525) +HANDLE_BAT(APINT_TYPE_PREFIX, 16526) +HANDLE_BAT(APINT_TYPE_PREFIX, 16527) +HANDLE_BAT(APINT_TYPE_PREFIX, 16528) +HANDLE_BAT(APINT_TYPE_PREFIX, 16529) +HANDLE_BAT(APINT_TYPE_PREFIX, 16530) +HANDLE_BAT(APINT_TYPE_PREFIX, 16531) +HANDLE_BAT(APINT_TYPE_PREFIX, 16532) +HANDLE_BAT(APINT_TYPE_PREFIX, 16533) +HANDLE_BAT(APINT_TYPE_PREFIX, 16534) +HANDLE_BAT(APINT_TYPE_PREFIX, 16535) +HANDLE_BAT(APINT_TYPE_PREFIX, 16536) +HANDLE_BAT(APINT_TYPE_PREFIX, 16537) +HANDLE_BAT(APINT_TYPE_PREFIX, 16538) +HANDLE_BAT(APINT_TYPE_PREFIX, 16539) +HANDLE_BAT(APINT_TYPE_PREFIX, 16540) +HANDLE_BAT(APINT_TYPE_PREFIX, 16541) +HANDLE_BAT(APINT_TYPE_PREFIX, 16542) +HANDLE_BAT(APINT_TYPE_PREFIX, 16543) +HANDLE_BAT(APINT_TYPE_PREFIX, 16544) +HANDLE_BAT(APINT_TYPE_PREFIX, 16545) +HANDLE_BAT(APINT_TYPE_PREFIX, 16546) +HANDLE_BAT(APINT_TYPE_PREFIX, 16547) +HANDLE_BAT(APINT_TYPE_PREFIX, 16548) +HANDLE_BAT(APINT_TYPE_PREFIX, 16549) +HANDLE_BAT(APINT_TYPE_PREFIX, 16550) +HANDLE_BAT(APINT_TYPE_PREFIX, 16551) +HANDLE_BAT(APINT_TYPE_PREFIX, 16552) +HANDLE_BAT(APINT_TYPE_PREFIX, 16553) +HANDLE_BAT(APINT_TYPE_PREFIX, 16554) +HANDLE_BAT(APINT_TYPE_PREFIX, 16555) +HANDLE_BAT(APINT_TYPE_PREFIX, 16556) +HANDLE_BAT(APINT_TYPE_PREFIX, 16557) +HANDLE_BAT(APINT_TYPE_PREFIX, 16558) +HANDLE_BAT(APINT_TYPE_PREFIX, 16559) +HANDLE_BAT(APINT_TYPE_PREFIX, 16560) +HANDLE_BAT(APINT_TYPE_PREFIX, 16561) +HANDLE_BAT(APINT_TYPE_PREFIX, 16562) +HANDLE_BAT(APINT_TYPE_PREFIX, 16563) +HANDLE_BAT(APINT_TYPE_PREFIX, 16564) +HANDLE_BAT(APINT_TYPE_PREFIX, 16565) +HANDLE_BAT(APINT_TYPE_PREFIX, 16566) +HANDLE_BAT(APINT_TYPE_PREFIX, 16567) +HANDLE_BAT(APINT_TYPE_PREFIX, 16568) +HANDLE_BAT(APINT_TYPE_PREFIX, 16569) +HANDLE_BAT(APINT_TYPE_PREFIX, 16570) +HANDLE_BAT(APINT_TYPE_PREFIX, 16571) +HANDLE_BAT(APINT_TYPE_PREFIX, 16572) +HANDLE_BAT(APINT_TYPE_PREFIX, 16573) +HANDLE_BAT(APINT_TYPE_PREFIX, 16574) +HANDLE_BAT(APINT_TYPE_PREFIX, 16575) +HANDLE_BAT(APINT_TYPE_PREFIX, 16576) +HANDLE_BAT(APINT_TYPE_PREFIX, 16577) +HANDLE_BAT(APINT_TYPE_PREFIX, 16578) +HANDLE_BAT(APINT_TYPE_PREFIX, 16579) +HANDLE_BAT(APINT_TYPE_PREFIX, 16580) +HANDLE_BAT(APINT_TYPE_PREFIX, 16581) +HANDLE_BAT(APINT_TYPE_PREFIX, 16582) +HANDLE_BAT(APINT_TYPE_PREFIX, 16583) +HANDLE_BAT(APINT_TYPE_PREFIX, 16584) +HANDLE_BAT(APINT_TYPE_PREFIX, 16585) +HANDLE_BAT(APINT_TYPE_PREFIX, 16586) +HANDLE_BAT(APINT_TYPE_PREFIX, 16587) +HANDLE_BAT(APINT_TYPE_PREFIX, 16588) +HANDLE_BAT(APINT_TYPE_PREFIX, 16589) +HANDLE_BAT(APINT_TYPE_PREFIX, 16590) +HANDLE_BAT(APINT_TYPE_PREFIX, 16591) +HANDLE_BAT(APINT_TYPE_PREFIX, 16592) +HANDLE_BAT(APINT_TYPE_PREFIX, 16593) +HANDLE_BAT(APINT_TYPE_PREFIX, 16594) +HANDLE_BAT(APINT_TYPE_PREFIX, 16595) +HANDLE_BAT(APINT_TYPE_PREFIX, 16596) +HANDLE_BAT(APINT_TYPE_PREFIX, 16597) +HANDLE_BAT(APINT_TYPE_PREFIX, 16598) +HANDLE_BAT(APINT_TYPE_PREFIX, 16599) +HANDLE_BAT(APINT_TYPE_PREFIX, 16600) +HANDLE_BAT(APINT_TYPE_PREFIX, 16601) +HANDLE_BAT(APINT_TYPE_PREFIX, 16602) +HANDLE_BAT(APINT_TYPE_PREFIX, 16603) +HANDLE_BAT(APINT_TYPE_PREFIX, 16604) +HANDLE_BAT(APINT_TYPE_PREFIX, 16605) +HANDLE_BAT(APINT_TYPE_PREFIX, 16606) +HANDLE_BAT(APINT_TYPE_PREFIX, 16607) +HANDLE_BAT(APINT_TYPE_PREFIX, 16608) +HANDLE_BAT(APINT_TYPE_PREFIX, 16609) +HANDLE_BAT(APINT_TYPE_PREFIX, 16610) +HANDLE_BAT(APINT_TYPE_PREFIX, 16611) +HANDLE_BAT(APINT_TYPE_PREFIX, 16612) +HANDLE_BAT(APINT_TYPE_PREFIX, 16613) +HANDLE_BAT(APINT_TYPE_PREFIX, 16614) +HANDLE_BAT(APINT_TYPE_PREFIX, 16615) +HANDLE_BAT(APINT_TYPE_PREFIX, 16616) +HANDLE_BAT(APINT_TYPE_PREFIX, 16617) +HANDLE_BAT(APINT_TYPE_PREFIX, 16618) +HANDLE_BAT(APINT_TYPE_PREFIX, 16619) +HANDLE_BAT(APINT_TYPE_PREFIX, 16620) +HANDLE_BAT(APINT_TYPE_PREFIX, 16621) +HANDLE_BAT(APINT_TYPE_PREFIX, 16622) +HANDLE_BAT(APINT_TYPE_PREFIX, 16623) +HANDLE_BAT(APINT_TYPE_PREFIX, 16624) +HANDLE_BAT(APINT_TYPE_PREFIX, 16625) +HANDLE_BAT(APINT_TYPE_PREFIX, 16626) +HANDLE_BAT(APINT_TYPE_PREFIX, 16627) +HANDLE_BAT(APINT_TYPE_PREFIX, 16628) +HANDLE_BAT(APINT_TYPE_PREFIX, 16629) +HANDLE_BAT(APINT_TYPE_PREFIX, 16630) +HANDLE_BAT(APINT_TYPE_PREFIX, 16631) +HANDLE_BAT(APINT_TYPE_PREFIX, 16632) +HANDLE_BAT(APINT_TYPE_PREFIX, 16633) +HANDLE_BAT(APINT_TYPE_PREFIX, 16634) +HANDLE_BAT(APINT_TYPE_PREFIX, 16635) +HANDLE_BAT(APINT_TYPE_PREFIX, 16636) +HANDLE_BAT(APINT_TYPE_PREFIX, 16637) +HANDLE_BAT(APINT_TYPE_PREFIX, 16638) +HANDLE_BAT(APINT_TYPE_PREFIX, 16639) +HANDLE_BAT(APINT_TYPE_PREFIX, 16640) +HANDLE_BAT(APINT_TYPE_PREFIX, 16641) +HANDLE_BAT(APINT_TYPE_PREFIX, 16642) +HANDLE_BAT(APINT_TYPE_PREFIX, 16643) +HANDLE_BAT(APINT_TYPE_PREFIX, 16644) +HANDLE_BAT(APINT_TYPE_PREFIX, 16645) +HANDLE_BAT(APINT_TYPE_PREFIX, 16646) +HANDLE_BAT(APINT_TYPE_PREFIX, 16647) +HANDLE_BAT(APINT_TYPE_PREFIX, 16648) +HANDLE_BAT(APINT_TYPE_PREFIX, 16649) +HANDLE_BAT(APINT_TYPE_PREFIX, 16650) +HANDLE_BAT(APINT_TYPE_PREFIX, 16651) +HANDLE_BAT(APINT_TYPE_PREFIX, 16652) +HANDLE_BAT(APINT_TYPE_PREFIX, 16653) +HANDLE_BAT(APINT_TYPE_PREFIX, 16654) +HANDLE_BAT(APINT_TYPE_PREFIX, 16655) +HANDLE_BAT(APINT_TYPE_PREFIX, 16656) +HANDLE_BAT(APINT_TYPE_PREFIX, 16657) +HANDLE_BAT(APINT_TYPE_PREFIX, 16658) +HANDLE_BAT(APINT_TYPE_PREFIX, 16659) +HANDLE_BAT(APINT_TYPE_PREFIX, 16660) +HANDLE_BAT(APINT_TYPE_PREFIX, 16661) +HANDLE_BAT(APINT_TYPE_PREFIX, 16662) +HANDLE_BAT(APINT_TYPE_PREFIX, 16663) +HANDLE_BAT(APINT_TYPE_PREFIX, 16664) +HANDLE_BAT(APINT_TYPE_PREFIX, 16665) +HANDLE_BAT(APINT_TYPE_PREFIX, 16666) +HANDLE_BAT(APINT_TYPE_PREFIX, 16667) +HANDLE_BAT(APINT_TYPE_PREFIX, 16668) +HANDLE_BAT(APINT_TYPE_PREFIX, 16669) +HANDLE_BAT(APINT_TYPE_PREFIX, 16670) +HANDLE_BAT(APINT_TYPE_PREFIX, 16671) +HANDLE_BAT(APINT_TYPE_PREFIX, 16672) +HANDLE_BAT(APINT_TYPE_PREFIX, 16673) +HANDLE_BAT(APINT_TYPE_PREFIX, 16674) +HANDLE_BAT(APINT_TYPE_PREFIX, 16675) +HANDLE_BAT(APINT_TYPE_PREFIX, 16676) +HANDLE_BAT(APINT_TYPE_PREFIX, 16677) +HANDLE_BAT(APINT_TYPE_PREFIX, 16678) +HANDLE_BAT(APINT_TYPE_PREFIX, 16679) +HANDLE_BAT(APINT_TYPE_PREFIX, 16680) +HANDLE_BAT(APINT_TYPE_PREFIX, 16681) +HANDLE_BAT(APINT_TYPE_PREFIX, 16682) +HANDLE_BAT(APINT_TYPE_PREFIX, 16683) +HANDLE_BAT(APINT_TYPE_PREFIX, 16684) +HANDLE_BAT(APINT_TYPE_PREFIX, 16685) +HANDLE_BAT(APINT_TYPE_PREFIX, 16686) +HANDLE_BAT(APINT_TYPE_PREFIX, 16687) +HANDLE_BAT(APINT_TYPE_PREFIX, 16688) +HANDLE_BAT(APINT_TYPE_PREFIX, 16689) +HANDLE_BAT(APINT_TYPE_PREFIX, 16690) +HANDLE_BAT(APINT_TYPE_PREFIX, 16691) +HANDLE_BAT(APINT_TYPE_PREFIX, 16692) +HANDLE_BAT(APINT_TYPE_PREFIX, 16693) +HANDLE_BAT(APINT_TYPE_PREFIX, 16694) +HANDLE_BAT(APINT_TYPE_PREFIX, 16695) +HANDLE_BAT(APINT_TYPE_PREFIX, 16696) +HANDLE_BAT(APINT_TYPE_PREFIX, 16697) +HANDLE_BAT(APINT_TYPE_PREFIX, 16698) +HANDLE_BAT(APINT_TYPE_PREFIX, 16699) +HANDLE_BAT(APINT_TYPE_PREFIX, 16700) +HANDLE_BAT(APINT_TYPE_PREFIX, 16701) +HANDLE_BAT(APINT_TYPE_PREFIX, 16702) +HANDLE_BAT(APINT_TYPE_PREFIX, 16703) +HANDLE_BAT(APINT_TYPE_PREFIX, 16704) +HANDLE_BAT(APINT_TYPE_PREFIX, 16705) +HANDLE_BAT(APINT_TYPE_PREFIX, 16706) +HANDLE_BAT(APINT_TYPE_PREFIX, 16707) +HANDLE_BAT(APINT_TYPE_PREFIX, 16708) +HANDLE_BAT(APINT_TYPE_PREFIX, 16709) +HANDLE_BAT(APINT_TYPE_PREFIX, 16710) +HANDLE_BAT(APINT_TYPE_PREFIX, 16711) +HANDLE_BAT(APINT_TYPE_PREFIX, 16712) +HANDLE_BAT(APINT_TYPE_PREFIX, 16713) +HANDLE_BAT(APINT_TYPE_PREFIX, 16714) +HANDLE_BAT(APINT_TYPE_PREFIX, 16715) +HANDLE_BAT(APINT_TYPE_PREFIX, 16716) +HANDLE_BAT(APINT_TYPE_PREFIX, 16717) +HANDLE_BAT(APINT_TYPE_PREFIX, 16718) +HANDLE_BAT(APINT_TYPE_PREFIX, 16719) +HANDLE_BAT(APINT_TYPE_PREFIX, 16720) +HANDLE_BAT(APINT_TYPE_PREFIX, 16721) +HANDLE_BAT(APINT_TYPE_PREFIX, 16722) +HANDLE_BAT(APINT_TYPE_PREFIX, 16723) +HANDLE_BAT(APINT_TYPE_PREFIX, 16724) +HANDLE_BAT(APINT_TYPE_PREFIX, 16725) +HANDLE_BAT(APINT_TYPE_PREFIX, 16726) +HANDLE_BAT(APINT_TYPE_PREFIX, 16727) +HANDLE_BAT(APINT_TYPE_PREFIX, 16728) +HANDLE_BAT(APINT_TYPE_PREFIX, 16729) +HANDLE_BAT(APINT_TYPE_PREFIX, 16730) +HANDLE_BAT(APINT_TYPE_PREFIX, 16731) +HANDLE_BAT(APINT_TYPE_PREFIX, 16732) +HANDLE_BAT(APINT_TYPE_PREFIX, 16733) +HANDLE_BAT(APINT_TYPE_PREFIX, 16734) +HANDLE_BAT(APINT_TYPE_PREFIX, 16735) +HANDLE_BAT(APINT_TYPE_PREFIX, 16736) +HANDLE_BAT(APINT_TYPE_PREFIX, 16737) +HANDLE_BAT(APINT_TYPE_PREFIX, 16738) +HANDLE_BAT(APINT_TYPE_PREFIX, 16739) +HANDLE_BAT(APINT_TYPE_PREFIX, 16740) +HANDLE_BAT(APINT_TYPE_PREFIX, 16741) +HANDLE_BAT(APINT_TYPE_PREFIX, 16742) +HANDLE_BAT(APINT_TYPE_PREFIX, 16743) +HANDLE_BAT(APINT_TYPE_PREFIX, 16744) +HANDLE_BAT(APINT_TYPE_PREFIX, 16745) +HANDLE_BAT(APINT_TYPE_PREFIX, 16746) +HANDLE_BAT(APINT_TYPE_PREFIX, 16747) +HANDLE_BAT(APINT_TYPE_PREFIX, 16748) +HANDLE_BAT(APINT_TYPE_PREFIX, 16749) +HANDLE_BAT(APINT_TYPE_PREFIX, 16750) +HANDLE_BAT(APINT_TYPE_PREFIX, 16751) +HANDLE_BAT(APINT_TYPE_PREFIX, 16752) +HANDLE_BAT(APINT_TYPE_PREFIX, 16753) +HANDLE_BAT(APINT_TYPE_PREFIX, 16754) +HANDLE_BAT(APINT_TYPE_PREFIX, 16755) +HANDLE_BAT(APINT_TYPE_PREFIX, 16756) +HANDLE_BAT(APINT_TYPE_PREFIX, 16757) +HANDLE_BAT(APINT_TYPE_PREFIX, 16758) +HANDLE_BAT(APINT_TYPE_PREFIX, 16759) +HANDLE_BAT(APINT_TYPE_PREFIX, 16760) +HANDLE_BAT(APINT_TYPE_PREFIX, 16761) +HANDLE_BAT(APINT_TYPE_PREFIX, 16762) +HANDLE_BAT(APINT_TYPE_PREFIX, 16763) +HANDLE_BAT(APINT_TYPE_PREFIX, 16764) +HANDLE_BAT(APINT_TYPE_PREFIX, 16765) +HANDLE_BAT(APINT_TYPE_PREFIX, 16766) +HANDLE_BAT(APINT_TYPE_PREFIX, 16767) +HANDLE_BAT(APINT_TYPE_PREFIX, 16768) +HANDLE_BAT(APINT_TYPE_PREFIX, 16769) +HANDLE_BAT(APINT_TYPE_PREFIX, 16770) +HANDLE_BAT(APINT_TYPE_PREFIX, 16771) +HANDLE_BAT(APINT_TYPE_PREFIX, 16772) +HANDLE_BAT(APINT_TYPE_PREFIX, 16773) +HANDLE_BAT(APINT_TYPE_PREFIX, 16774) +HANDLE_BAT(APINT_TYPE_PREFIX, 16775) +HANDLE_BAT(APINT_TYPE_PREFIX, 16776) +HANDLE_BAT(APINT_TYPE_PREFIX, 16777) +HANDLE_BAT(APINT_TYPE_PREFIX, 16778) +HANDLE_BAT(APINT_TYPE_PREFIX, 16779) +HANDLE_BAT(APINT_TYPE_PREFIX, 16780) +HANDLE_BAT(APINT_TYPE_PREFIX, 16781) +HANDLE_BAT(APINT_TYPE_PREFIX, 16782) +HANDLE_BAT(APINT_TYPE_PREFIX, 16783) +HANDLE_BAT(APINT_TYPE_PREFIX, 16784) +HANDLE_BAT(APINT_TYPE_PREFIX, 16785) +HANDLE_BAT(APINT_TYPE_PREFIX, 16786) +HANDLE_BAT(APINT_TYPE_PREFIX, 16787) +HANDLE_BAT(APINT_TYPE_PREFIX, 16788) +HANDLE_BAT(APINT_TYPE_PREFIX, 16789) +HANDLE_BAT(APINT_TYPE_PREFIX, 16790) +HANDLE_BAT(APINT_TYPE_PREFIX, 16791) +HANDLE_BAT(APINT_TYPE_PREFIX, 16792) +HANDLE_BAT(APINT_TYPE_PREFIX, 16793) +HANDLE_BAT(APINT_TYPE_PREFIX, 16794) +HANDLE_BAT(APINT_TYPE_PREFIX, 16795) +HANDLE_BAT(APINT_TYPE_PREFIX, 16796) +HANDLE_BAT(APINT_TYPE_PREFIX, 16797) +HANDLE_BAT(APINT_TYPE_PREFIX, 16798) +HANDLE_BAT(APINT_TYPE_PREFIX, 16799) +HANDLE_BAT(APINT_TYPE_PREFIX, 16800) +HANDLE_BAT(APINT_TYPE_PREFIX, 16801) +HANDLE_BAT(APINT_TYPE_PREFIX, 16802) +HANDLE_BAT(APINT_TYPE_PREFIX, 16803) +HANDLE_BAT(APINT_TYPE_PREFIX, 16804) +HANDLE_BAT(APINT_TYPE_PREFIX, 16805) +HANDLE_BAT(APINT_TYPE_PREFIX, 16806) +HANDLE_BAT(APINT_TYPE_PREFIX, 16807) +HANDLE_BAT(APINT_TYPE_PREFIX, 16808) +HANDLE_BAT(APINT_TYPE_PREFIX, 16809) +HANDLE_BAT(APINT_TYPE_PREFIX, 16810) +HANDLE_BAT(APINT_TYPE_PREFIX, 16811) +HANDLE_BAT(APINT_TYPE_PREFIX, 16812) +HANDLE_BAT(APINT_TYPE_PREFIX, 16813) +HANDLE_BAT(APINT_TYPE_PREFIX, 16814) +HANDLE_BAT(APINT_TYPE_PREFIX, 16815) +HANDLE_BAT(APINT_TYPE_PREFIX, 16816) +HANDLE_BAT(APINT_TYPE_PREFIX, 16817) +HANDLE_BAT(APINT_TYPE_PREFIX, 16818) +HANDLE_BAT(APINT_TYPE_PREFIX, 16819) +HANDLE_BAT(APINT_TYPE_PREFIX, 16820) +HANDLE_BAT(APINT_TYPE_PREFIX, 16821) +HANDLE_BAT(APINT_TYPE_PREFIX, 16822) +HANDLE_BAT(APINT_TYPE_PREFIX, 16823) +HANDLE_BAT(APINT_TYPE_PREFIX, 16824) +HANDLE_BAT(APINT_TYPE_PREFIX, 16825) +HANDLE_BAT(APINT_TYPE_PREFIX, 16826) +HANDLE_BAT(APINT_TYPE_PREFIX, 16827) +HANDLE_BAT(APINT_TYPE_PREFIX, 16828) +HANDLE_BAT(APINT_TYPE_PREFIX, 16829) +HANDLE_BAT(APINT_TYPE_PREFIX, 16830) +HANDLE_BAT(APINT_TYPE_PREFIX, 16831) +HANDLE_BAT(APINT_TYPE_PREFIX, 16832) +HANDLE_BAT(APINT_TYPE_PREFIX, 16833) +HANDLE_BAT(APINT_TYPE_PREFIX, 16834) +HANDLE_BAT(APINT_TYPE_PREFIX, 16835) +HANDLE_BAT(APINT_TYPE_PREFIX, 16836) +HANDLE_BAT(APINT_TYPE_PREFIX, 16837) +HANDLE_BAT(APINT_TYPE_PREFIX, 16838) +HANDLE_BAT(APINT_TYPE_PREFIX, 16839) +HANDLE_BAT(APINT_TYPE_PREFIX, 16840) +HANDLE_BAT(APINT_TYPE_PREFIX, 16841) +HANDLE_BAT(APINT_TYPE_PREFIX, 16842) +HANDLE_BAT(APINT_TYPE_PREFIX, 16843) +HANDLE_BAT(APINT_TYPE_PREFIX, 16844) +HANDLE_BAT(APINT_TYPE_PREFIX, 16845) +HANDLE_BAT(APINT_TYPE_PREFIX, 16846) +HANDLE_BAT(APINT_TYPE_PREFIX, 16847) +HANDLE_BAT(APINT_TYPE_PREFIX, 16848) +HANDLE_BAT(APINT_TYPE_PREFIX, 16849) +HANDLE_BAT(APINT_TYPE_PREFIX, 16850) +HANDLE_BAT(APINT_TYPE_PREFIX, 16851) +HANDLE_BAT(APINT_TYPE_PREFIX, 16852) +HANDLE_BAT(APINT_TYPE_PREFIX, 16853) +HANDLE_BAT(APINT_TYPE_PREFIX, 16854) +HANDLE_BAT(APINT_TYPE_PREFIX, 16855) +HANDLE_BAT(APINT_TYPE_PREFIX, 16856) +HANDLE_BAT(APINT_TYPE_PREFIX, 16857) +HANDLE_BAT(APINT_TYPE_PREFIX, 16858) +HANDLE_BAT(APINT_TYPE_PREFIX, 16859) +HANDLE_BAT(APINT_TYPE_PREFIX, 16860) +HANDLE_BAT(APINT_TYPE_PREFIX, 16861) +HANDLE_BAT(APINT_TYPE_PREFIX, 16862) +HANDLE_BAT(APINT_TYPE_PREFIX, 16863) +HANDLE_BAT(APINT_TYPE_PREFIX, 16864) +HANDLE_BAT(APINT_TYPE_PREFIX, 16865) +HANDLE_BAT(APINT_TYPE_PREFIX, 16866) +HANDLE_BAT(APINT_TYPE_PREFIX, 16867) +HANDLE_BAT(APINT_TYPE_PREFIX, 16868) +HANDLE_BAT(APINT_TYPE_PREFIX, 16869) +HANDLE_BAT(APINT_TYPE_PREFIX, 16870) +HANDLE_BAT(APINT_TYPE_PREFIX, 16871) +HANDLE_BAT(APINT_TYPE_PREFIX, 16872) +HANDLE_BAT(APINT_TYPE_PREFIX, 16873) +HANDLE_BAT(APINT_TYPE_PREFIX, 16874) +HANDLE_BAT(APINT_TYPE_PREFIX, 16875) +HANDLE_BAT(APINT_TYPE_PREFIX, 16876) +HANDLE_BAT(APINT_TYPE_PREFIX, 16877) +HANDLE_BAT(APINT_TYPE_PREFIX, 16878) +HANDLE_BAT(APINT_TYPE_PREFIX, 16879) +HANDLE_BAT(APINT_TYPE_PREFIX, 16880) +HANDLE_BAT(APINT_TYPE_PREFIX, 16881) +HANDLE_BAT(APINT_TYPE_PREFIX, 16882) +HANDLE_BAT(APINT_TYPE_PREFIX, 16883) +HANDLE_BAT(APINT_TYPE_PREFIX, 16884) +HANDLE_BAT(APINT_TYPE_PREFIX, 16885) +HANDLE_BAT(APINT_TYPE_PREFIX, 16886) +HANDLE_BAT(APINT_TYPE_PREFIX, 16887) +HANDLE_BAT(APINT_TYPE_PREFIX, 16888) +HANDLE_BAT(APINT_TYPE_PREFIX, 16889) +HANDLE_BAT(APINT_TYPE_PREFIX, 16890) +HANDLE_BAT(APINT_TYPE_PREFIX, 16891) +HANDLE_BAT(APINT_TYPE_PREFIX, 16892) +HANDLE_BAT(APINT_TYPE_PREFIX, 16893) +HANDLE_BAT(APINT_TYPE_PREFIX, 16894) +HANDLE_BAT(APINT_TYPE_PREFIX, 16895) +HANDLE_BAT(APINT_TYPE_PREFIX, 16896) +HANDLE_BAT(APINT_TYPE_PREFIX, 16897) +HANDLE_BAT(APINT_TYPE_PREFIX, 16898) +HANDLE_BAT(APINT_TYPE_PREFIX, 16899) +HANDLE_BAT(APINT_TYPE_PREFIX, 16900) +HANDLE_BAT(APINT_TYPE_PREFIX, 16901) +HANDLE_BAT(APINT_TYPE_PREFIX, 16902) +HANDLE_BAT(APINT_TYPE_PREFIX, 16903) +HANDLE_BAT(APINT_TYPE_PREFIX, 16904) +HANDLE_BAT(APINT_TYPE_PREFIX, 16905) +HANDLE_BAT(APINT_TYPE_PREFIX, 16906) +HANDLE_BAT(APINT_TYPE_PREFIX, 16907) +HANDLE_BAT(APINT_TYPE_PREFIX, 16908) +HANDLE_BAT(APINT_TYPE_PREFIX, 16909) +HANDLE_BAT(APINT_TYPE_PREFIX, 16910) +HANDLE_BAT(APINT_TYPE_PREFIX, 16911) +HANDLE_BAT(APINT_TYPE_PREFIX, 16912) +HANDLE_BAT(APINT_TYPE_PREFIX, 16913) +HANDLE_BAT(APINT_TYPE_PREFIX, 16914) +HANDLE_BAT(APINT_TYPE_PREFIX, 16915) +HANDLE_BAT(APINT_TYPE_PREFIX, 16916) +HANDLE_BAT(APINT_TYPE_PREFIX, 16917) +HANDLE_BAT(APINT_TYPE_PREFIX, 16918) +HANDLE_BAT(APINT_TYPE_PREFIX, 16919) +HANDLE_BAT(APINT_TYPE_PREFIX, 16920) +HANDLE_BAT(APINT_TYPE_PREFIX, 16921) +HANDLE_BAT(APINT_TYPE_PREFIX, 16922) +HANDLE_BAT(APINT_TYPE_PREFIX, 16923) +HANDLE_BAT(APINT_TYPE_PREFIX, 16924) +HANDLE_BAT(APINT_TYPE_PREFIX, 16925) +HANDLE_BAT(APINT_TYPE_PREFIX, 16926) +HANDLE_BAT(APINT_TYPE_PREFIX, 16927) +HANDLE_BAT(APINT_TYPE_PREFIX, 16928) +HANDLE_BAT(APINT_TYPE_PREFIX, 16929) +HANDLE_BAT(APINT_TYPE_PREFIX, 16930) +HANDLE_BAT(APINT_TYPE_PREFIX, 16931) +HANDLE_BAT(APINT_TYPE_PREFIX, 16932) +HANDLE_BAT(APINT_TYPE_PREFIX, 16933) +HANDLE_BAT(APINT_TYPE_PREFIX, 16934) +HANDLE_BAT(APINT_TYPE_PREFIX, 16935) +HANDLE_BAT(APINT_TYPE_PREFIX, 16936) +HANDLE_BAT(APINT_TYPE_PREFIX, 16937) +HANDLE_BAT(APINT_TYPE_PREFIX, 16938) +HANDLE_BAT(APINT_TYPE_PREFIX, 16939) +HANDLE_BAT(APINT_TYPE_PREFIX, 16940) +HANDLE_BAT(APINT_TYPE_PREFIX, 16941) +HANDLE_BAT(APINT_TYPE_PREFIX, 16942) +HANDLE_BAT(APINT_TYPE_PREFIX, 16943) +HANDLE_BAT(APINT_TYPE_PREFIX, 16944) +HANDLE_BAT(APINT_TYPE_PREFIX, 16945) +HANDLE_BAT(APINT_TYPE_PREFIX, 16946) +HANDLE_BAT(APINT_TYPE_PREFIX, 16947) +HANDLE_BAT(APINT_TYPE_PREFIX, 16948) +HANDLE_BAT(APINT_TYPE_PREFIX, 16949) +HANDLE_BAT(APINT_TYPE_PREFIX, 16950) +HANDLE_BAT(APINT_TYPE_PREFIX, 16951) +HANDLE_BAT(APINT_TYPE_PREFIX, 16952) +HANDLE_BAT(APINT_TYPE_PREFIX, 16953) +HANDLE_BAT(APINT_TYPE_PREFIX, 16954) +HANDLE_BAT(APINT_TYPE_PREFIX, 16955) +HANDLE_BAT(APINT_TYPE_PREFIX, 16956) +HANDLE_BAT(APINT_TYPE_PREFIX, 16957) +HANDLE_BAT(APINT_TYPE_PREFIX, 16958) +HANDLE_BAT(APINT_TYPE_PREFIX, 16959) +HANDLE_BAT(APINT_TYPE_PREFIX, 16960) +HANDLE_BAT(APINT_TYPE_PREFIX, 16961) +HANDLE_BAT(APINT_TYPE_PREFIX, 16962) +HANDLE_BAT(APINT_TYPE_PREFIX, 16963) +HANDLE_BAT(APINT_TYPE_PREFIX, 16964) +HANDLE_BAT(APINT_TYPE_PREFIX, 16965) +HANDLE_BAT(APINT_TYPE_PREFIX, 16966) +HANDLE_BAT(APINT_TYPE_PREFIX, 16967) +HANDLE_BAT(APINT_TYPE_PREFIX, 16968) +HANDLE_BAT(APINT_TYPE_PREFIX, 16969) +HANDLE_BAT(APINT_TYPE_PREFIX, 16970) +HANDLE_BAT(APINT_TYPE_PREFIX, 16971) +HANDLE_BAT(APINT_TYPE_PREFIX, 16972) +HANDLE_BAT(APINT_TYPE_PREFIX, 16973) +HANDLE_BAT(APINT_TYPE_PREFIX, 16974) +HANDLE_BAT(APINT_TYPE_PREFIX, 16975) +HANDLE_BAT(APINT_TYPE_PREFIX, 16976) +HANDLE_BAT(APINT_TYPE_PREFIX, 16977) +HANDLE_BAT(APINT_TYPE_PREFIX, 16978) +HANDLE_BAT(APINT_TYPE_PREFIX, 16979) +HANDLE_BAT(APINT_TYPE_PREFIX, 16980) +HANDLE_BAT(APINT_TYPE_PREFIX, 16981) +HANDLE_BAT(APINT_TYPE_PREFIX, 16982) +HANDLE_BAT(APINT_TYPE_PREFIX, 16983) +HANDLE_BAT(APINT_TYPE_PREFIX, 16984) +HANDLE_BAT(APINT_TYPE_PREFIX, 16985) +HANDLE_BAT(APINT_TYPE_PREFIX, 16986) +HANDLE_BAT(APINT_TYPE_PREFIX, 16987) +HANDLE_BAT(APINT_TYPE_PREFIX, 16988) +HANDLE_BAT(APINT_TYPE_PREFIX, 16989) +HANDLE_BAT(APINT_TYPE_PREFIX, 16990) +HANDLE_BAT(APINT_TYPE_PREFIX, 16991) +HANDLE_BAT(APINT_TYPE_PREFIX, 16992) +HANDLE_BAT(APINT_TYPE_PREFIX, 16993) +HANDLE_BAT(APINT_TYPE_PREFIX, 16994) +HANDLE_BAT(APINT_TYPE_PREFIX, 16995) +HANDLE_BAT(APINT_TYPE_PREFIX, 16996) +HANDLE_BAT(APINT_TYPE_PREFIX, 16997) +HANDLE_BAT(APINT_TYPE_PREFIX, 16998) +HANDLE_BAT(APINT_TYPE_PREFIX, 16999) +HANDLE_BAT(APINT_TYPE_PREFIX, 17000) +HANDLE_BAT(APINT_TYPE_PREFIX, 17001) +HANDLE_BAT(APINT_TYPE_PREFIX, 17002) +HANDLE_BAT(APINT_TYPE_PREFIX, 17003) +HANDLE_BAT(APINT_TYPE_PREFIX, 17004) +HANDLE_BAT(APINT_TYPE_PREFIX, 17005) +HANDLE_BAT(APINT_TYPE_PREFIX, 17006) +HANDLE_BAT(APINT_TYPE_PREFIX, 17007) +HANDLE_BAT(APINT_TYPE_PREFIX, 17008) +HANDLE_BAT(APINT_TYPE_PREFIX, 17009) +HANDLE_BAT(APINT_TYPE_PREFIX, 17010) +HANDLE_BAT(APINT_TYPE_PREFIX, 17011) +HANDLE_BAT(APINT_TYPE_PREFIX, 17012) +HANDLE_BAT(APINT_TYPE_PREFIX, 17013) +HANDLE_BAT(APINT_TYPE_PREFIX, 17014) +HANDLE_BAT(APINT_TYPE_PREFIX, 17015) +HANDLE_BAT(APINT_TYPE_PREFIX, 17016) +HANDLE_BAT(APINT_TYPE_PREFIX, 17017) +HANDLE_BAT(APINT_TYPE_PREFIX, 17018) +HANDLE_BAT(APINT_TYPE_PREFIX, 17019) +HANDLE_BAT(APINT_TYPE_PREFIX, 17020) +HANDLE_BAT(APINT_TYPE_PREFIX, 17021) +HANDLE_BAT(APINT_TYPE_PREFIX, 17022) +HANDLE_BAT(APINT_TYPE_PREFIX, 17023) +HANDLE_BAT(APINT_TYPE_PREFIX, 17024) +HANDLE_BAT(APINT_TYPE_PREFIX, 17025) +HANDLE_BAT(APINT_TYPE_PREFIX, 17026) +HANDLE_BAT(APINT_TYPE_PREFIX, 17027) +HANDLE_BAT(APINT_TYPE_PREFIX, 17028) +HANDLE_BAT(APINT_TYPE_PREFIX, 17029) +HANDLE_BAT(APINT_TYPE_PREFIX, 17030) +HANDLE_BAT(APINT_TYPE_PREFIX, 17031) +HANDLE_BAT(APINT_TYPE_PREFIX, 17032) +HANDLE_BAT(APINT_TYPE_PREFIX, 17033) +HANDLE_BAT(APINT_TYPE_PREFIX, 17034) +HANDLE_BAT(APINT_TYPE_PREFIX, 17035) +HANDLE_BAT(APINT_TYPE_PREFIX, 17036) +HANDLE_BAT(APINT_TYPE_PREFIX, 17037) +HANDLE_BAT(APINT_TYPE_PREFIX, 17038) +HANDLE_BAT(APINT_TYPE_PREFIX, 17039) +HANDLE_BAT(APINT_TYPE_PREFIX, 17040) +HANDLE_BAT(APINT_TYPE_PREFIX, 17041) +HANDLE_BAT(APINT_TYPE_PREFIX, 17042) +HANDLE_BAT(APINT_TYPE_PREFIX, 17043) +HANDLE_BAT(APINT_TYPE_PREFIX, 17044) +HANDLE_BAT(APINT_TYPE_PREFIX, 17045) +HANDLE_BAT(APINT_TYPE_PREFIX, 17046) +HANDLE_BAT(APINT_TYPE_PREFIX, 17047) +HANDLE_BAT(APINT_TYPE_PREFIX, 17048) +HANDLE_BAT(APINT_TYPE_PREFIX, 17049) +HANDLE_BAT(APINT_TYPE_PREFIX, 17050) +HANDLE_BAT(APINT_TYPE_PREFIX, 17051) +HANDLE_BAT(APINT_TYPE_PREFIX, 17052) +HANDLE_BAT(APINT_TYPE_PREFIX, 17053) +HANDLE_BAT(APINT_TYPE_PREFIX, 17054) +HANDLE_BAT(APINT_TYPE_PREFIX, 17055) +HANDLE_BAT(APINT_TYPE_PREFIX, 17056) +HANDLE_BAT(APINT_TYPE_PREFIX, 17057) +HANDLE_BAT(APINT_TYPE_PREFIX, 17058) +HANDLE_BAT(APINT_TYPE_PREFIX, 17059) +HANDLE_BAT(APINT_TYPE_PREFIX, 17060) +HANDLE_BAT(APINT_TYPE_PREFIX, 17061) +HANDLE_BAT(APINT_TYPE_PREFIX, 17062) +HANDLE_BAT(APINT_TYPE_PREFIX, 17063) +HANDLE_BAT(APINT_TYPE_PREFIX, 17064) +HANDLE_BAT(APINT_TYPE_PREFIX, 17065) +HANDLE_BAT(APINT_TYPE_PREFIX, 17066) +HANDLE_BAT(APINT_TYPE_PREFIX, 17067) +HANDLE_BAT(APINT_TYPE_PREFIX, 17068) +HANDLE_BAT(APINT_TYPE_PREFIX, 17069) +HANDLE_BAT(APINT_TYPE_PREFIX, 17070) +HANDLE_BAT(APINT_TYPE_PREFIX, 17071) +HANDLE_BAT(APINT_TYPE_PREFIX, 17072) +HANDLE_BAT(APINT_TYPE_PREFIX, 17073) +HANDLE_BAT(APINT_TYPE_PREFIX, 17074) +HANDLE_BAT(APINT_TYPE_PREFIX, 17075) +HANDLE_BAT(APINT_TYPE_PREFIX, 17076) +HANDLE_BAT(APINT_TYPE_PREFIX, 17077) +HANDLE_BAT(APINT_TYPE_PREFIX, 17078) +HANDLE_BAT(APINT_TYPE_PREFIX, 17079) +HANDLE_BAT(APINT_TYPE_PREFIX, 17080) +HANDLE_BAT(APINT_TYPE_PREFIX, 17081) +HANDLE_BAT(APINT_TYPE_PREFIX, 17082) +HANDLE_BAT(APINT_TYPE_PREFIX, 17083) +HANDLE_BAT(APINT_TYPE_PREFIX, 17084) +HANDLE_BAT(APINT_TYPE_PREFIX, 17085) +HANDLE_BAT(APINT_TYPE_PREFIX, 17086) +HANDLE_BAT(APINT_TYPE_PREFIX, 17087) +HANDLE_BAT(APINT_TYPE_PREFIX, 17088) +HANDLE_BAT(APINT_TYPE_PREFIX, 17089) +HANDLE_BAT(APINT_TYPE_PREFIX, 17090) +HANDLE_BAT(APINT_TYPE_PREFIX, 17091) +HANDLE_BAT(APINT_TYPE_PREFIX, 17092) +HANDLE_BAT(APINT_TYPE_PREFIX, 17093) +HANDLE_BAT(APINT_TYPE_PREFIX, 17094) +HANDLE_BAT(APINT_TYPE_PREFIX, 17095) +HANDLE_BAT(APINT_TYPE_PREFIX, 17096) +HANDLE_BAT(APINT_TYPE_PREFIX, 17097) +HANDLE_BAT(APINT_TYPE_PREFIX, 17098) +HANDLE_BAT(APINT_TYPE_PREFIX, 17099) +HANDLE_BAT(APINT_TYPE_PREFIX, 17100) +HANDLE_BAT(APINT_TYPE_PREFIX, 17101) +HANDLE_BAT(APINT_TYPE_PREFIX, 17102) +HANDLE_BAT(APINT_TYPE_PREFIX, 17103) +HANDLE_BAT(APINT_TYPE_PREFIX, 17104) +HANDLE_BAT(APINT_TYPE_PREFIX, 17105) +HANDLE_BAT(APINT_TYPE_PREFIX, 17106) +HANDLE_BAT(APINT_TYPE_PREFIX, 17107) +HANDLE_BAT(APINT_TYPE_PREFIX, 17108) +HANDLE_BAT(APINT_TYPE_PREFIX, 17109) +HANDLE_BAT(APINT_TYPE_PREFIX, 17110) +HANDLE_BAT(APINT_TYPE_PREFIX, 17111) +HANDLE_BAT(APINT_TYPE_PREFIX, 17112) +HANDLE_BAT(APINT_TYPE_PREFIX, 17113) +HANDLE_BAT(APINT_TYPE_PREFIX, 17114) +HANDLE_BAT(APINT_TYPE_PREFIX, 17115) +HANDLE_BAT(APINT_TYPE_PREFIX, 17116) +HANDLE_BAT(APINT_TYPE_PREFIX, 17117) +HANDLE_BAT(APINT_TYPE_PREFIX, 17118) +HANDLE_BAT(APINT_TYPE_PREFIX, 17119) +HANDLE_BAT(APINT_TYPE_PREFIX, 17120) +HANDLE_BAT(APINT_TYPE_PREFIX, 17121) +HANDLE_BAT(APINT_TYPE_PREFIX, 17122) +HANDLE_BAT(APINT_TYPE_PREFIX, 17123) +HANDLE_BAT(APINT_TYPE_PREFIX, 17124) +HANDLE_BAT(APINT_TYPE_PREFIX, 17125) +HANDLE_BAT(APINT_TYPE_PREFIX, 17126) +HANDLE_BAT(APINT_TYPE_PREFIX, 17127) +HANDLE_BAT(APINT_TYPE_PREFIX, 17128) +HANDLE_BAT(APINT_TYPE_PREFIX, 17129) +HANDLE_BAT(APINT_TYPE_PREFIX, 17130) +HANDLE_BAT(APINT_TYPE_PREFIX, 17131) +HANDLE_BAT(APINT_TYPE_PREFIX, 17132) +HANDLE_BAT(APINT_TYPE_PREFIX, 17133) +HANDLE_BAT(APINT_TYPE_PREFIX, 17134) +HANDLE_BAT(APINT_TYPE_PREFIX, 17135) +HANDLE_BAT(APINT_TYPE_PREFIX, 17136) +HANDLE_BAT(APINT_TYPE_PREFIX, 17137) +HANDLE_BAT(APINT_TYPE_PREFIX, 17138) +HANDLE_BAT(APINT_TYPE_PREFIX, 17139) +HANDLE_BAT(APINT_TYPE_PREFIX, 17140) +HANDLE_BAT(APINT_TYPE_PREFIX, 17141) +HANDLE_BAT(APINT_TYPE_PREFIX, 17142) +HANDLE_BAT(APINT_TYPE_PREFIX, 17143) +HANDLE_BAT(APINT_TYPE_PREFIX, 17144) +HANDLE_BAT(APINT_TYPE_PREFIX, 17145) +HANDLE_BAT(APINT_TYPE_PREFIX, 17146) +HANDLE_BAT(APINT_TYPE_PREFIX, 17147) +HANDLE_BAT(APINT_TYPE_PREFIX, 17148) +HANDLE_BAT(APINT_TYPE_PREFIX, 17149) +HANDLE_BAT(APINT_TYPE_PREFIX, 17150) +HANDLE_BAT(APINT_TYPE_PREFIX, 17151) +HANDLE_BAT(APINT_TYPE_PREFIX, 17152) +HANDLE_BAT(APINT_TYPE_PREFIX, 17153) +HANDLE_BAT(APINT_TYPE_PREFIX, 17154) +HANDLE_BAT(APINT_TYPE_PREFIX, 17155) +HANDLE_BAT(APINT_TYPE_PREFIX, 17156) +HANDLE_BAT(APINT_TYPE_PREFIX, 17157) +HANDLE_BAT(APINT_TYPE_PREFIX, 17158) +HANDLE_BAT(APINT_TYPE_PREFIX, 17159) +HANDLE_BAT(APINT_TYPE_PREFIX, 17160) +HANDLE_BAT(APINT_TYPE_PREFIX, 17161) +HANDLE_BAT(APINT_TYPE_PREFIX, 17162) +HANDLE_BAT(APINT_TYPE_PREFIX, 17163) +HANDLE_BAT(APINT_TYPE_PREFIX, 17164) +HANDLE_BAT(APINT_TYPE_PREFIX, 17165) +HANDLE_BAT(APINT_TYPE_PREFIX, 17166) +HANDLE_BAT(APINT_TYPE_PREFIX, 17167) +HANDLE_BAT(APINT_TYPE_PREFIX, 17168) +HANDLE_BAT(APINT_TYPE_PREFIX, 17169) +HANDLE_BAT(APINT_TYPE_PREFIX, 17170) +HANDLE_BAT(APINT_TYPE_PREFIX, 17171) +HANDLE_BAT(APINT_TYPE_PREFIX, 17172) +HANDLE_BAT(APINT_TYPE_PREFIX, 17173) +HANDLE_BAT(APINT_TYPE_PREFIX, 17174) +HANDLE_BAT(APINT_TYPE_PREFIX, 17175) +HANDLE_BAT(APINT_TYPE_PREFIX, 17176) +HANDLE_BAT(APINT_TYPE_PREFIX, 17177) +HANDLE_BAT(APINT_TYPE_PREFIX, 17178) +HANDLE_BAT(APINT_TYPE_PREFIX, 17179) +HANDLE_BAT(APINT_TYPE_PREFIX, 17180) +HANDLE_BAT(APINT_TYPE_PREFIX, 17181) +HANDLE_BAT(APINT_TYPE_PREFIX, 17182) +HANDLE_BAT(APINT_TYPE_PREFIX, 17183) +HANDLE_BAT(APINT_TYPE_PREFIX, 17184) +HANDLE_BAT(APINT_TYPE_PREFIX, 17185) +HANDLE_BAT(APINT_TYPE_PREFIX, 17186) +HANDLE_BAT(APINT_TYPE_PREFIX, 17187) +HANDLE_BAT(APINT_TYPE_PREFIX, 17188) +HANDLE_BAT(APINT_TYPE_PREFIX, 17189) +HANDLE_BAT(APINT_TYPE_PREFIX, 17190) +HANDLE_BAT(APINT_TYPE_PREFIX, 17191) +HANDLE_BAT(APINT_TYPE_PREFIX, 17192) +HANDLE_BAT(APINT_TYPE_PREFIX, 17193) +HANDLE_BAT(APINT_TYPE_PREFIX, 17194) +HANDLE_BAT(APINT_TYPE_PREFIX, 17195) +HANDLE_BAT(APINT_TYPE_PREFIX, 17196) +HANDLE_BAT(APINT_TYPE_PREFIX, 17197) +HANDLE_BAT(APINT_TYPE_PREFIX, 17198) +HANDLE_BAT(APINT_TYPE_PREFIX, 17199) +HANDLE_BAT(APINT_TYPE_PREFIX, 17200) +HANDLE_BAT(APINT_TYPE_PREFIX, 17201) +HANDLE_BAT(APINT_TYPE_PREFIX, 17202) +HANDLE_BAT(APINT_TYPE_PREFIX, 17203) +HANDLE_BAT(APINT_TYPE_PREFIX, 17204) +HANDLE_BAT(APINT_TYPE_PREFIX, 17205) +HANDLE_BAT(APINT_TYPE_PREFIX, 17206) +HANDLE_BAT(APINT_TYPE_PREFIX, 17207) +HANDLE_BAT(APINT_TYPE_PREFIX, 17208) +HANDLE_BAT(APINT_TYPE_PREFIX, 17209) +HANDLE_BAT(APINT_TYPE_PREFIX, 17210) +HANDLE_BAT(APINT_TYPE_PREFIX, 17211) +HANDLE_BAT(APINT_TYPE_PREFIX, 17212) +HANDLE_BAT(APINT_TYPE_PREFIX, 17213) +HANDLE_BAT(APINT_TYPE_PREFIX, 17214) +HANDLE_BAT(APINT_TYPE_PREFIX, 17215) +HANDLE_BAT(APINT_TYPE_PREFIX, 17216) +HANDLE_BAT(APINT_TYPE_PREFIX, 17217) +HANDLE_BAT(APINT_TYPE_PREFIX, 17218) +HANDLE_BAT(APINT_TYPE_PREFIX, 17219) +HANDLE_BAT(APINT_TYPE_PREFIX, 17220) +HANDLE_BAT(APINT_TYPE_PREFIX, 17221) +HANDLE_BAT(APINT_TYPE_PREFIX, 17222) +HANDLE_BAT(APINT_TYPE_PREFIX, 17223) +HANDLE_BAT(APINT_TYPE_PREFIX, 17224) +HANDLE_BAT(APINT_TYPE_PREFIX, 17225) +HANDLE_BAT(APINT_TYPE_PREFIX, 17226) +HANDLE_BAT(APINT_TYPE_PREFIX, 17227) +HANDLE_BAT(APINT_TYPE_PREFIX, 17228) +HANDLE_BAT(APINT_TYPE_PREFIX, 17229) +HANDLE_BAT(APINT_TYPE_PREFIX, 17230) +HANDLE_BAT(APINT_TYPE_PREFIX, 17231) +HANDLE_BAT(APINT_TYPE_PREFIX, 17232) +HANDLE_BAT(APINT_TYPE_PREFIX, 17233) +HANDLE_BAT(APINT_TYPE_PREFIX, 17234) +HANDLE_BAT(APINT_TYPE_PREFIX, 17235) +HANDLE_BAT(APINT_TYPE_PREFIX, 17236) +HANDLE_BAT(APINT_TYPE_PREFIX, 17237) +HANDLE_BAT(APINT_TYPE_PREFIX, 17238) +HANDLE_BAT(APINT_TYPE_PREFIX, 17239) +HANDLE_BAT(APINT_TYPE_PREFIX, 17240) +HANDLE_BAT(APINT_TYPE_PREFIX, 17241) +HANDLE_BAT(APINT_TYPE_PREFIX, 17242) +HANDLE_BAT(APINT_TYPE_PREFIX, 17243) +HANDLE_BAT(APINT_TYPE_PREFIX, 17244) +HANDLE_BAT(APINT_TYPE_PREFIX, 17245) +HANDLE_BAT(APINT_TYPE_PREFIX, 17246) +HANDLE_BAT(APINT_TYPE_PREFIX, 17247) +HANDLE_BAT(APINT_TYPE_PREFIX, 17248) +HANDLE_BAT(APINT_TYPE_PREFIX, 17249) +HANDLE_BAT(APINT_TYPE_PREFIX, 17250) +HANDLE_BAT(APINT_TYPE_PREFIX, 17251) +HANDLE_BAT(APINT_TYPE_PREFIX, 17252) +HANDLE_BAT(APINT_TYPE_PREFIX, 17253) +HANDLE_BAT(APINT_TYPE_PREFIX, 17254) +HANDLE_BAT(APINT_TYPE_PREFIX, 17255) +HANDLE_BAT(APINT_TYPE_PREFIX, 17256) +HANDLE_BAT(APINT_TYPE_PREFIX, 17257) +HANDLE_BAT(APINT_TYPE_PREFIX, 17258) +HANDLE_BAT(APINT_TYPE_PREFIX, 17259) +HANDLE_BAT(APINT_TYPE_PREFIX, 17260) +HANDLE_BAT(APINT_TYPE_PREFIX, 17261) +HANDLE_BAT(APINT_TYPE_PREFIX, 17262) +HANDLE_BAT(APINT_TYPE_PREFIX, 17263) +HANDLE_BAT(APINT_TYPE_PREFIX, 17264) +HANDLE_BAT(APINT_TYPE_PREFIX, 17265) +HANDLE_BAT(APINT_TYPE_PREFIX, 17266) +HANDLE_BAT(APINT_TYPE_PREFIX, 17267) +HANDLE_BAT(APINT_TYPE_PREFIX, 17268) +HANDLE_BAT(APINT_TYPE_PREFIX, 17269) +HANDLE_BAT(APINT_TYPE_PREFIX, 17270) +HANDLE_BAT(APINT_TYPE_PREFIX, 17271) +HANDLE_BAT(APINT_TYPE_PREFIX, 17272) +HANDLE_BAT(APINT_TYPE_PREFIX, 17273) +HANDLE_BAT(APINT_TYPE_PREFIX, 17274) +HANDLE_BAT(APINT_TYPE_PREFIX, 17275) +HANDLE_BAT(APINT_TYPE_PREFIX, 17276) +HANDLE_BAT(APINT_TYPE_PREFIX, 17277) +HANDLE_BAT(APINT_TYPE_PREFIX, 17278) +HANDLE_BAT(APINT_TYPE_PREFIX, 17279) +HANDLE_BAT(APINT_TYPE_PREFIX, 17280) +HANDLE_BAT(APINT_TYPE_PREFIX, 17281) +HANDLE_BAT(APINT_TYPE_PREFIX, 17282) +HANDLE_BAT(APINT_TYPE_PREFIX, 17283) +HANDLE_BAT(APINT_TYPE_PREFIX, 17284) +HANDLE_BAT(APINT_TYPE_PREFIX, 17285) +HANDLE_BAT(APINT_TYPE_PREFIX, 17286) +HANDLE_BAT(APINT_TYPE_PREFIX, 17287) +HANDLE_BAT(APINT_TYPE_PREFIX, 17288) +HANDLE_BAT(APINT_TYPE_PREFIX, 17289) +HANDLE_BAT(APINT_TYPE_PREFIX, 17290) +HANDLE_BAT(APINT_TYPE_PREFIX, 17291) +HANDLE_BAT(APINT_TYPE_PREFIX, 17292) +HANDLE_BAT(APINT_TYPE_PREFIX, 17293) +HANDLE_BAT(APINT_TYPE_PREFIX, 17294) +HANDLE_BAT(APINT_TYPE_PREFIX, 17295) +HANDLE_BAT(APINT_TYPE_PREFIX, 17296) +HANDLE_BAT(APINT_TYPE_PREFIX, 17297) +HANDLE_BAT(APINT_TYPE_PREFIX, 17298) +HANDLE_BAT(APINT_TYPE_PREFIX, 17299) +HANDLE_BAT(APINT_TYPE_PREFIX, 17300) +HANDLE_BAT(APINT_TYPE_PREFIX, 17301) +HANDLE_BAT(APINT_TYPE_PREFIX, 17302) +HANDLE_BAT(APINT_TYPE_PREFIX, 17303) +HANDLE_BAT(APINT_TYPE_PREFIX, 17304) +HANDLE_BAT(APINT_TYPE_PREFIX, 17305) +HANDLE_BAT(APINT_TYPE_PREFIX, 17306) +HANDLE_BAT(APINT_TYPE_PREFIX, 17307) +HANDLE_BAT(APINT_TYPE_PREFIX, 17308) +HANDLE_BAT(APINT_TYPE_PREFIX, 17309) +HANDLE_BAT(APINT_TYPE_PREFIX, 17310) +HANDLE_BAT(APINT_TYPE_PREFIX, 17311) +HANDLE_BAT(APINT_TYPE_PREFIX, 17312) +HANDLE_BAT(APINT_TYPE_PREFIX, 17313) +HANDLE_BAT(APINT_TYPE_PREFIX, 17314) +HANDLE_BAT(APINT_TYPE_PREFIX, 17315) +HANDLE_BAT(APINT_TYPE_PREFIX, 17316) +HANDLE_BAT(APINT_TYPE_PREFIX, 17317) +HANDLE_BAT(APINT_TYPE_PREFIX, 17318) +HANDLE_BAT(APINT_TYPE_PREFIX, 17319) +HANDLE_BAT(APINT_TYPE_PREFIX, 17320) +HANDLE_BAT(APINT_TYPE_PREFIX, 17321) +HANDLE_BAT(APINT_TYPE_PREFIX, 17322) +HANDLE_BAT(APINT_TYPE_PREFIX, 17323) +HANDLE_BAT(APINT_TYPE_PREFIX, 17324) +HANDLE_BAT(APINT_TYPE_PREFIX, 17325) +HANDLE_BAT(APINT_TYPE_PREFIX, 17326) +HANDLE_BAT(APINT_TYPE_PREFIX, 17327) +HANDLE_BAT(APINT_TYPE_PREFIX, 17328) +HANDLE_BAT(APINT_TYPE_PREFIX, 17329) +HANDLE_BAT(APINT_TYPE_PREFIX, 17330) +HANDLE_BAT(APINT_TYPE_PREFIX, 17331) +HANDLE_BAT(APINT_TYPE_PREFIX, 17332) +HANDLE_BAT(APINT_TYPE_PREFIX, 17333) +HANDLE_BAT(APINT_TYPE_PREFIX, 17334) +HANDLE_BAT(APINT_TYPE_PREFIX, 17335) +HANDLE_BAT(APINT_TYPE_PREFIX, 17336) +HANDLE_BAT(APINT_TYPE_PREFIX, 17337) +HANDLE_BAT(APINT_TYPE_PREFIX, 17338) +HANDLE_BAT(APINT_TYPE_PREFIX, 17339) +HANDLE_BAT(APINT_TYPE_PREFIX, 17340) +HANDLE_BAT(APINT_TYPE_PREFIX, 17341) +HANDLE_BAT(APINT_TYPE_PREFIX, 17342) +HANDLE_BAT(APINT_TYPE_PREFIX, 17343) +HANDLE_BAT(APINT_TYPE_PREFIX, 17344) +HANDLE_BAT(APINT_TYPE_PREFIX, 17345) +HANDLE_BAT(APINT_TYPE_PREFIX, 17346) +HANDLE_BAT(APINT_TYPE_PREFIX, 17347) +HANDLE_BAT(APINT_TYPE_PREFIX, 17348) +HANDLE_BAT(APINT_TYPE_PREFIX, 17349) +HANDLE_BAT(APINT_TYPE_PREFIX, 17350) +HANDLE_BAT(APINT_TYPE_PREFIX, 17351) +HANDLE_BAT(APINT_TYPE_PREFIX, 17352) +HANDLE_BAT(APINT_TYPE_PREFIX, 17353) +HANDLE_BAT(APINT_TYPE_PREFIX, 17354) +HANDLE_BAT(APINT_TYPE_PREFIX, 17355) +HANDLE_BAT(APINT_TYPE_PREFIX, 17356) +HANDLE_BAT(APINT_TYPE_PREFIX, 17357) +HANDLE_BAT(APINT_TYPE_PREFIX, 17358) +HANDLE_BAT(APINT_TYPE_PREFIX, 17359) +HANDLE_BAT(APINT_TYPE_PREFIX, 17360) +HANDLE_BAT(APINT_TYPE_PREFIX, 17361) +HANDLE_BAT(APINT_TYPE_PREFIX, 17362) +HANDLE_BAT(APINT_TYPE_PREFIX, 17363) +HANDLE_BAT(APINT_TYPE_PREFIX, 17364) +HANDLE_BAT(APINT_TYPE_PREFIX, 17365) +HANDLE_BAT(APINT_TYPE_PREFIX, 17366) +HANDLE_BAT(APINT_TYPE_PREFIX, 17367) +HANDLE_BAT(APINT_TYPE_PREFIX, 17368) +HANDLE_BAT(APINT_TYPE_PREFIX, 17369) +HANDLE_BAT(APINT_TYPE_PREFIX, 17370) +HANDLE_BAT(APINT_TYPE_PREFIX, 17371) +HANDLE_BAT(APINT_TYPE_PREFIX, 17372) +HANDLE_BAT(APINT_TYPE_PREFIX, 17373) +HANDLE_BAT(APINT_TYPE_PREFIX, 17374) +HANDLE_BAT(APINT_TYPE_PREFIX, 17375) +HANDLE_BAT(APINT_TYPE_PREFIX, 17376) +HANDLE_BAT(APINT_TYPE_PREFIX, 17377) +HANDLE_BAT(APINT_TYPE_PREFIX, 17378) +HANDLE_BAT(APINT_TYPE_PREFIX, 17379) +HANDLE_BAT(APINT_TYPE_PREFIX, 17380) +HANDLE_BAT(APINT_TYPE_PREFIX, 17381) +HANDLE_BAT(APINT_TYPE_PREFIX, 17382) +HANDLE_BAT(APINT_TYPE_PREFIX, 17383) +HANDLE_BAT(APINT_TYPE_PREFIX, 17384) +HANDLE_BAT(APINT_TYPE_PREFIX, 17385) +HANDLE_BAT(APINT_TYPE_PREFIX, 17386) +HANDLE_BAT(APINT_TYPE_PREFIX, 17387) +HANDLE_BAT(APINT_TYPE_PREFIX, 17388) +HANDLE_BAT(APINT_TYPE_PREFIX, 17389) +HANDLE_BAT(APINT_TYPE_PREFIX, 17390) +HANDLE_BAT(APINT_TYPE_PREFIX, 17391) +HANDLE_BAT(APINT_TYPE_PREFIX, 17392) +HANDLE_BAT(APINT_TYPE_PREFIX, 17393) +HANDLE_BAT(APINT_TYPE_PREFIX, 17394) +HANDLE_BAT(APINT_TYPE_PREFIX, 17395) +HANDLE_BAT(APINT_TYPE_PREFIX, 17396) +HANDLE_BAT(APINT_TYPE_PREFIX, 17397) +HANDLE_BAT(APINT_TYPE_PREFIX, 17398) +HANDLE_BAT(APINT_TYPE_PREFIX, 17399) +HANDLE_BAT(APINT_TYPE_PREFIX, 17400) +HANDLE_BAT(APINT_TYPE_PREFIX, 17401) +HANDLE_BAT(APINT_TYPE_PREFIX, 17402) +HANDLE_BAT(APINT_TYPE_PREFIX, 17403) +HANDLE_BAT(APINT_TYPE_PREFIX, 17404) +HANDLE_BAT(APINT_TYPE_PREFIX, 17405) +HANDLE_BAT(APINT_TYPE_PREFIX, 17406) +HANDLE_BAT(APINT_TYPE_PREFIX, 17407) +HANDLE_BAT(APINT_TYPE_PREFIX, 17408) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 17 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 17409) +HANDLE_BAT(, 17410) +HANDLE_BAT(, 17411) +HANDLE_BAT(, 17412) +HANDLE_BAT(, 17413) +HANDLE_BAT(, 17414) +HANDLE_BAT(, 17415) +HANDLE_BAT(, 17416) +HANDLE_BAT(, 17417) +HANDLE_BAT(, 17418) +HANDLE_BAT(, 17419) +HANDLE_BAT(, 17420) +HANDLE_BAT(, 17421) +HANDLE_BAT(, 17422) +HANDLE_BAT(, 17423) +HANDLE_BAT(, 17424) +HANDLE_BAT(, 17425) +HANDLE_BAT(, 17426) +HANDLE_BAT(, 17427) +HANDLE_BAT(, 17428) +HANDLE_BAT(, 17429) +HANDLE_BAT(, 17430) +HANDLE_BAT(, 17431) +HANDLE_BAT(, 17432) +HANDLE_BAT(, 17433) +HANDLE_BAT(, 17434) +HANDLE_BAT(, 17435) +HANDLE_BAT(, 17436) +HANDLE_BAT(, 17437) +HANDLE_BAT(, 17438) +HANDLE_BAT(, 17439) +HANDLE_BAT(, 17440) +HANDLE_BAT(, 17441) +HANDLE_BAT(, 17442) +HANDLE_BAT(, 17443) +HANDLE_BAT(, 17444) +HANDLE_BAT(, 17445) +HANDLE_BAT(, 17446) +HANDLE_BAT(, 17447) +HANDLE_BAT(, 17448) +HANDLE_BAT(, 17449) +HANDLE_BAT(, 17450) +HANDLE_BAT(, 17451) +HANDLE_BAT(, 17452) +HANDLE_BAT(, 17453) +HANDLE_BAT(, 17454) +HANDLE_BAT(, 17455) +HANDLE_BAT(, 17456) +HANDLE_BAT(, 17457) +HANDLE_BAT(, 17458) +HANDLE_BAT(, 17459) +HANDLE_BAT(, 17460) +HANDLE_BAT(, 17461) +HANDLE_BAT(, 17462) +HANDLE_BAT(, 17463) +HANDLE_BAT(, 17464) +HANDLE_BAT(, 17465) +HANDLE_BAT(, 17466) +HANDLE_BAT(, 17467) +HANDLE_BAT(, 17468) +HANDLE_BAT(, 17469) +HANDLE_BAT(, 17470) +HANDLE_BAT(, 17471) +HANDLE_BAT(, 17472) +HANDLE_BAT(, 17473) +HANDLE_BAT(, 17474) +HANDLE_BAT(, 17475) +HANDLE_BAT(, 17476) +HANDLE_BAT(, 17477) +HANDLE_BAT(, 17478) +HANDLE_BAT(, 17479) +HANDLE_BAT(, 17480) +HANDLE_BAT(, 17481) +HANDLE_BAT(, 17482) +HANDLE_BAT(, 17483) +HANDLE_BAT(, 17484) +HANDLE_BAT(, 17485) +HANDLE_BAT(, 17486) +HANDLE_BAT(, 17487) +HANDLE_BAT(, 17488) +HANDLE_BAT(, 17489) +HANDLE_BAT(, 17490) +HANDLE_BAT(, 17491) +HANDLE_BAT(, 17492) +HANDLE_BAT(, 17493) +HANDLE_BAT(, 17494) +HANDLE_BAT(, 17495) +HANDLE_BAT(, 17496) +HANDLE_BAT(, 17497) +HANDLE_BAT(, 17498) +HANDLE_BAT(, 17499) +HANDLE_BAT(, 17500) +HANDLE_BAT(, 17501) +HANDLE_BAT(, 17502) +HANDLE_BAT(, 17503) +HANDLE_BAT(, 17504) +HANDLE_BAT(, 17505) +HANDLE_BAT(, 17506) +HANDLE_BAT(, 17507) +HANDLE_BAT(, 17508) +HANDLE_BAT(, 17509) +HANDLE_BAT(, 17510) +HANDLE_BAT(, 17511) +HANDLE_BAT(, 17512) +HANDLE_BAT(, 17513) +HANDLE_BAT(, 17514) +HANDLE_BAT(, 17515) +HANDLE_BAT(, 17516) +HANDLE_BAT(, 17517) +HANDLE_BAT(, 17518) +HANDLE_BAT(, 17519) +HANDLE_BAT(, 17520) +HANDLE_BAT(, 17521) +HANDLE_BAT(, 17522) +HANDLE_BAT(, 17523) +HANDLE_BAT(, 17524) +HANDLE_BAT(, 17525) +HANDLE_BAT(, 17526) +HANDLE_BAT(, 17527) +HANDLE_BAT(, 17528) +HANDLE_BAT(, 17529) +HANDLE_BAT(, 17530) +HANDLE_BAT(, 17531) +HANDLE_BAT(, 17532) +HANDLE_BAT(, 17533) +HANDLE_BAT(, 17534) +HANDLE_BAT(, 17535) +HANDLE_BAT(, 17536) +HANDLE_BAT(, 17537) +HANDLE_BAT(, 17538) +HANDLE_BAT(, 17539) +HANDLE_BAT(, 17540) +HANDLE_BAT(, 17541) +HANDLE_BAT(, 17542) +HANDLE_BAT(, 17543) +HANDLE_BAT(, 17544) +HANDLE_BAT(, 17545) +HANDLE_BAT(, 17546) +HANDLE_BAT(, 17547) +HANDLE_BAT(, 17548) +HANDLE_BAT(, 17549) +HANDLE_BAT(, 17550) +HANDLE_BAT(, 17551) +HANDLE_BAT(, 17552) +HANDLE_BAT(, 17553) +HANDLE_BAT(, 17554) +HANDLE_BAT(, 17555) +HANDLE_BAT(, 17556) +HANDLE_BAT(, 17557) +HANDLE_BAT(, 17558) +HANDLE_BAT(, 17559) +HANDLE_BAT(, 17560) +HANDLE_BAT(, 17561) +HANDLE_BAT(, 17562) +HANDLE_BAT(, 17563) +HANDLE_BAT(, 17564) +HANDLE_BAT(, 17565) +HANDLE_BAT(, 17566) +HANDLE_BAT(, 17567) +HANDLE_BAT(, 17568) +HANDLE_BAT(, 17569) +HANDLE_BAT(, 17570) +HANDLE_BAT(, 17571) +HANDLE_BAT(, 17572) +HANDLE_BAT(, 17573) +HANDLE_BAT(, 17574) +HANDLE_BAT(, 17575) +HANDLE_BAT(, 17576) +HANDLE_BAT(, 17577) +HANDLE_BAT(, 17578) +HANDLE_BAT(, 17579) +HANDLE_BAT(, 17580) +HANDLE_BAT(, 17581) +HANDLE_BAT(, 17582) +HANDLE_BAT(, 17583) +HANDLE_BAT(, 17584) +HANDLE_BAT(, 17585) +HANDLE_BAT(, 17586) +HANDLE_BAT(, 17587) +HANDLE_BAT(, 17588) +HANDLE_BAT(, 17589) +HANDLE_BAT(, 17590) +HANDLE_BAT(, 17591) +HANDLE_BAT(, 17592) +HANDLE_BAT(, 17593) +HANDLE_BAT(, 17594) +HANDLE_BAT(, 17595) +HANDLE_BAT(, 17596) +HANDLE_BAT(, 17597) +HANDLE_BAT(, 17598) +HANDLE_BAT(, 17599) +HANDLE_BAT(, 17600) +HANDLE_BAT(, 17601) +HANDLE_BAT(, 17602) +HANDLE_BAT(, 17603) +HANDLE_BAT(, 17604) +HANDLE_BAT(, 17605) +HANDLE_BAT(, 17606) +HANDLE_BAT(, 17607) +HANDLE_BAT(, 17608) +HANDLE_BAT(, 17609) +HANDLE_BAT(, 17610) +HANDLE_BAT(, 17611) +HANDLE_BAT(, 17612) +HANDLE_BAT(, 17613) +HANDLE_BAT(, 17614) +HANDLE_BAT(, 17615) +HANDLE_BAT(, 17616) +HANDLE_BAT(, 17617) +HANDLE_BAT(, 17618) +HANDLE_BAT(, 17619) +HANDLE_BAT(, 17620) +HANDLE_BAT(, 17621) +HANDLE_BAT(, 17622) +HANDLE_BAT(, 17623) +HANDLE_BAT(, 17624) +HANDLE_BAT(, 17625) +HANDLE_BAT(, 17626) +HANDLE_BAT(, 17627) +HANDLE_BAT(, 17628) +HANDLE_BAT(, 17629) +HANDLE_BAT(, 17630) +HANDLE_BAT(, 17631) +HANDLE_BAT(, 17632) +HANDLE_BAT(, 17633) +HANDLE_BAT(, 17634) +HANDLE_BAT(, 17635) +HANDLE_BAT(, 17636) +HANDLE_BAT(, 17637) +HANDLE_BAT(, 17638) +HANDLE_BAT(, 17639) +HANDLE_BAT(, 17640) +HANDLE_BAT(, 17641) +HANDLE_BAT(, 17642) +HANDLE_BAT(, 17643) +HANDLE_BAT(, 17644) +HANDLE_BAT(, 17645) +HANDLE_BAT(, 17646) +HANDLE_BAT(, 17647) +HANDLE_BAT(, 17648) +HANDLE_BAT(, 17649) +HANDLE_BAT(, 17650) +HANDLE_BAT(, 17651) +HANDLE_BAT(, 17652) +HANDLE_BAT(, 17653) +HANDLE_BAT(, 17654) +HANDLE_BAT(, 17655) +HANDLE_BAT(, 17656) +HANDLE_BAT(, 17657) +HANDLE_BAT(, 17658) +HANDLE_BAT(, 17659) +HANDLE_BAT(, 17660) +HANDLE_BAT(, 17661) +HANDLE_BAT(, 17662) +HANDLE_BAT(, 17663) +HANDLE_BAT(, 17664) +HANDLE_BAT(, 17665) +HANDLE_BAT(, 17666) +HANDLE_BAT(, 17667) +HANDLE_BAT(, 17668) +HANDLE_BAT(, 17669) +HANDLE_BAT(, 17670) +HANDLE_BAT(, 17671) +HANDLE_BAT(, 17672) +HANDLE_BAT(, 17673) +HANDLE_BAT(, 17674) +HANDLE_BAT(, 17675) +HANDLE_BAT(, 17676) +HANDLE_BAT(, 17677) +HANDLE_BAT(, 17678) +HANDLE_BAT(, 17679) +HANDLE_BAT(, 17680) +HANDLE_BAT(, 17681) +HANDLE_BAT(, 17682) +HANDLE_BAT(, 17683) +HANDLE_BAT(, 17684) +HANDLE_BAT(, 17685) +HANDLE_BAT(, 17686) +HANDLE_BAT(, 17687) +HANDLE_BAT(, 17688) +HANDLE_BAT(, 17689) +HANDLE_BAT(, 17690) +HANDLE_BAT(, 17691) +HANDLE_BAT(, 17692) +HANDLE_BAT(, 17693) +HANDLE_BAT(, 17694) +HANDLE_BAT(, 17695) +HANDLE_BAT(, 17696) +HANDLE_BAT(, 17697) +HANDLE_BAT(, 17698) +HANDLE_BAT(, 17699) +HANDLE_BAT(, 17700) +HANDLE_BAT(, 17701) +HANDLE_BAT(, 17702) +HANDLE_BAT(, 17703) +HANDLE_BAT(, 17704) +HANDLE_BAT(, 17705) +HANDLE_BAT(, 17706) +HANDLE_BAT(, 17707) +HANDLE_BAT(, 17708) +HANDLE_BAT(, 17709) +HANDLE_BAT(, 17710) +HANDLE_BAT(, 17711) +HANDLE_BAT(, 17712) +HANDLE_BAT(, 17713) +HANDLE_BAT(, 17714) +HANDLE_BAT(, 17715) +HANDLE_BAT(, 17716) +HANDLE_BAT(, 17717) +HANDLE_BAT(, 17718) +HANDLE_BAT(, 17719) +HANDLE_BAT(, 17720) +HANDLE_BAT(, 17721) +HANDLE_BAT(, 17722) +HANDLE_BAT(, 17723) +HANDLE_BAT(, 17724) +HANDLE_BAT(, 17725) +HANDLE_BAT(, 17726) +HANDLE_BAT(, 17727) +HANDLE_BAT(, 17728) +HANDLE_BAT(, 17729) +HANDLE_BAT(, 17730) +HANDLE_BAT(, 17731) +HANDLE_BAT(, 17732) +HANDLE_BAT(, 17733) +HANDLE_BAT(, 17734) +HANDLE_BAT(, 17735) +HANDLE_BAT(, 17736) +HANDLE_BAT(, 17737) +HANDLE_BAT(, 17738) +HANDLE_BAT(, 17739) +HANDLE_BAT(, 17740) +HANDLE_BAT(, 17741) +HANDLE_BAT(, 17742) +HANDLE_BAT(, 17743) +HANDLE_BAT(, 17744) +HANDLE_BAT(, 17745) +HANDLE_BAT(, 17746) +HANDLE_BAT(, 17747) +HANDLE_BAT(, 17748) +HANDLE_BAT(, 17749) +HANDLE_BAT(, 17750) +HANDLE_BAT(, 17751) +HANDLE_BAT(, 17752) +HANDLE_BAT(, 17753) +HANDLE_BAT(, 17754) +HANDLE_BAT(, 17755) +HANDLE_BAT(, 17756) +HANDLE_BAT(, 17757) +HANDLE_BAT(, 17758) +HANDLE_BAT(, 17759) +HANDLE_BAT(, 17760) +HANDLE_BAT(, 17761) +HANDLE_BAT(, 17762) +HANDLE_BAT(, 17763) +HANDLE_BAT(, 17764) +HANDLE_BAT(, 17765) +HANDLE_BAT(, 17766) +HANDLE_BAT(, 17767) +HANDLE_BAT(, 17768) +HANDLE_BAT(, 17769) +HANDLE_BAT(, 17770) +HANDLE_BAT(, 17771) +HANDLE_BAT(, 17772) +HANDLE_BAT(, 17773) +HANDLE_BAT(, 17774) +HANDLE_BAT(, 17775) +HANDLE_BAT(, 17776) +HANDLE_BAT(, 17777) +HANDLE_BAT(, 17778) +HANDLE_BAT(, 17779) +HANDLE_BAT(, 17780) +HANDLE_BAT(, 17781) +HANDLE_BAT(, 17782) +HANDLE_BAT(, 17783) +HANDLE_BAT(, 17784) +HANDLE_BAT(, 17785) +HANDLE_BAT(, 17786) +HANDLE_BAT(, 17787) +HANDLE_BAT(, 17788) +HANDLE_BAT(, 17789) +HANDLE_BAT(, 17790) +HANDLE_BAT(, 17791) +HANDLE_BAT(, 17792) +HANDLE_BAT(, 17793) +HANDLE_BAT(, 17794) +HANDLE_BAT(, 17795) +HANDLE_BAT(, 17796) +HANDLE_BAT(, 17797) +HANDLE_BAT(, 17798) +HANDLE_BAT(, 17799) +HANDLE_BAT(, 17800) +HANDLE_BAT(, 17801) +HANDLE_BAT(, 17802) +HANDLE_BAT(, 17803) +HANDLE_BAT(, 17804) +HANDLE_BAT(, 17805) +HANDLE_BAT(, 17806) +HANDLE_BAT(, 17807) +HANDLE_BAT(, 17808) +HANDLE_BAT(, 17809) +HANDLE_BAT(, 17810) +HANDLE_BAT(, 17811) +HANDLE_BAT(, 17812) +HANDLE_BAT(, 17813) +HANDLE_BAT(, 17814) +HANDLE_BAT(, 17815) +HANDLE_BAT(, 17816) +HANDLE_BAT(, 17817) +HANDLE_BAT(, 17818) +HANDLE_BAT(, 17819) +HANDLE_BAT(, 17820) +HANDLE_BAT(, 17821) +HANDLE_BAT(, 17822) +HANDLE_BAT(, 17823) +HANDLE_BAT(, 17824) +HANDLE_BAT(, 17825) +HANDLE_BAT(, 17826) +HANDLE_BAT(, 17827) +HANDLE_BAT(, 17828) +HANDLE_BAT(, 17829) +HANDLE_BAT(, 17830) +HANDLE_BAT(, 17831) +HANDLE_BAT(, 17832) +HANDLE_BAT(, 17833) +HANDLE_BAT(, 17834) +HANDLE_BAT(, 17835) +HANDLE_BAT(, 17836) +HANDLE_BAT(, 17837) +HANDLE_BAT(, 17838) +HANDLE_BAT(, 17839) +HANDLE_BAT(, 17840) +HANDLE_BAT(, 17841) +HANDLE_BAT(, 17842) +HANDLE_BAT(, 17843) +HANDLE_BAT(, 17844) +HANDLE_BAT(, 17845) +HANDLE_BAT(, 17846) +HANDLE_BAT(, 17847) +HANDLE_BAT(, 17848) +HANDLE_BAT(, 17849) +HANDLE_BAT(, 17850) +HANDLE_BAT(, 17851) +HANDLE_BAT(, 17852) +HANDLE_BAT(, 17853) +HANDLE_BAT(, 17854) +HANDLE_BAT(, 17855) +HANDLE_BAT(, 17856) +HANDLE_BAT(, 17857) +HANDLE_BAT(, 17858) +HANDLE_BAT(, 17859) +HANDLE_BAT(, 17860) +HANDLE_BAT(, 17861) +HANDLE_BAT(, 17862) +HANDLE_BAT(, 17863) +HANDLE_BAT(, 17864) +HANDLE_BAT(, 17865) +HANDLE_BAT(, 17866) +HANDLE_BAT(, 17867) +HANDLE_BAT(, 17868) +HANDLE_BAT(, 17869) +HANDLE_BAT(, 17870) +HANDLE_BAT(, 17871) +HANDLE_BAT(, 17872) +HANDLE_BAT(, 17873) +HANDLE_BAT(, 17874) +HANDLE_BAT(, 17875) +HANDLE_BAT(, 17876) +HANDLE_BAT(, 17877) +HANDLE_BAT(, 17878) +HANDLE_BAT(, 17879) +HANDLE_BAT(, 17880) +HANDLE_BAT(, 17881) +HANDLE_BAT(, 17882) +HANDLE_BAT(, 17883) +HANDLE_BAT(, 17884) +HANDLE_BAT(, 17885) +HANDLE_BAT(, 17886) +HANDLE_BAT(, 17887) +HANDLE_BAT(, 17888) +HANDLE_BAT(, 17889) +HANDLE_BAT(, 17890) +HANDLE_BAT(, 17891) +HANDLE_BAT(, 17892) +HANDLE_BAT(, 17893) +HANDLE_BAT(, 17894) +HANDLE_BAT(, 17895) +HANDLE_BAT(, 17896) +HANDLE_BAT(, 17897) +HANDLE_BAT(, 17898) +HANDLE_BAT(, 17899) +HANDLE_BAT(, 17900) +HANDLE_BAT(, 17901) +HANDLE_BAT(, 17902) +HANDLE_BAT(, 17903) +HANDLE_BAT(, 17904) +HANDLE_BAT(, 17905) +HANDLE_BAT(, 17906) +HANDLE_BAT(, 17907) +HANDLE_BAT(, 17908) +HANDLE_BAT(, 17909) +HANDLE_BAT(, 17910) +HANDLE_BAT(, 17911) +HANDLE_BAT(, 17912) +HANDLE_BAT(, 17913) +HANDLE_BAT(, 17914) +HANDLE_BAT(, 17915) +HANDLE_BAT(, 17916) +HANDLE_BAT(, 17917) +HANDLE_BAT(, 17918) +HANDLE_BAT(, 17919) +HANDLE_BAT(, 17920) +HANDLE_BAT(, 17921) +HANDLE_BAT(, 17922) +HANDLE_BAT(, 17923) +HANDLE_BAT(, 17924) +HANDLE_BAT(, 17925) +HANDLE_BAT(, 17926) +HANDLE_BAT(, 17927) +HANDLE_BAT(, 17928) +HANDLE_BAT(, 17929) +HANDLE_BAT(, 17930) +HANDLE_BAT(, 17931) +HANDLE_BAT(, 17932) +HANDLE_BAT(, 17933) +HANDLE_BAT(, 17934) +HANDLE_BAT(, 17935) +HANDLE_BAT(, 17936) +HANDLE_BAT(, 17937) +HANDLE_BAT(, 17938) +HANDLE_BAT(, 17939) +HANDLE_BAT(, 17940) +HANDLE_BAT(, 17941) +HANDLE_BAT(, 17942) +HANDLE_BAT(, 17943) +HANDLE_BAT(, 17944) +HANDLE_BAT(, 17945) +HANDLE_BAT(, 17946) +HANDLE_BAT(, 17947) +HANDLE_BAT(, 17948) +HANDLE_BAT(, 17949) +HANDLE_BAT(, 17950) +HANDLE_BAT(, 17951) +HANDLE_BAT(, 17952) +HANDLE_BAT(, 17953) +HANDLE_BAT(, 17954) +HANDLE_BAT(, 17955) +HANDLE_BAT(, 17956) +HANDLE_BAT(, 17957) +HANDLE_BAT(, 17958) +HANDLE_BAT(, 17959) +HANDLE_BAT(, 17960) +HANDLE_BAT(, 17961) +HANDLE_BAT(, 17962) +HANDLE_BAT(, 17963) +HANDLE_BAT(, 17964) +HANDLE_BAT(, 17965) +HANDLE_BAT(, 17966) +HANDLE_BAT(, 17967) +HANDLE_BAT(, 17968) +HANDLE_BAT(, 17969) +HANDLE_BAT(, 17970) +HANDLE_BAT(, 17971) +HANDLE_BAT(, 17972) +HANDLE_BAT(, 17973) +HANDLE_BAT(, 17974) +HANDLE_BAT(, 17975) +HANDLE_BAT(, 17976) +HANDLE_BAT(, 17977) +HANDLE_BAT(, 17978) +HANDLE_BAT(, 17979) +HANDLE_BAT(, 17980) +HANDLE_BAT(, 17981) +HANDLE_BAT(, 17982) +HANDLE_BAT(, 17983) +HANDLE_BAT(, 17984) +HANDLE_BAT(, 17985) +HANDLE_BAT(, 17986) +HANDLE_BAT(, 17987) +HANDLE_BAT(, 17988) +HANDLE_BAT(, 17989) +HANDLE_BAT(, 17990) +HANDLE_BAT(, 17991) +HANDLE_BAT(, 17992) +HANDLE_BAT(, 17993) +HANDLE_BAT(, 17994) +HANDLE_BAT(, 17995) +HANDLE_BAT(, 17996) +HANDLE_BAT(, 17997) +HANDLE_BAT(, 17998) +HANDLE_BAT(, 17999) +HANDLE_BAT(, 18000) +HANDLE_BAT(, 18001) +HANDLE_BAT(, 18002) +HANDLE_BAT(, 18003) +HANDLE_BAT(, 18004) +HANDLE_BAT(, 18005) +HANDLE_BAT(, 18006) +HANDLE_BAT(, 18007) +HANDLE_BAT(, 18008) +HANDLE_BAT(, 18009) +HANDLE_BAT(, 18010) +HANDLE_BAT(, 18011) +HANDLE_BAT(, 18012) +HANDLE_BAT(, 18013) +HANDLE_BAT(, 18014) +HANDLE_BAT(, 18015) +HANDLE_BAT(, 18016) +HANDLE_BAT(, 18017) +HANDLE_BAT(, 18018) +HANDLE_BAT(, 18019) +HANDLE_BAT(, 18020) +HANDLE_BAT(, 18021) +HANDLE_BAT(, 18022) +HANDLE_BAT(, 18023) +HANDLE_BAT(, 18024) +HANDLE_BAT(, 18025) +HANDLE_BAT(, 18026) +HANDLE_BAT(, 18027) +HANDLE_BAT(, 18028) +HANDLE_BAT(, 18029) +HANDLE_BAT(, 18030) +HANDLE_BAT(, 18031) +HANDLE_BAT(, 18032) +HANDLE_BAT(, 18033) +HANDLE_BAT(, 18034) +HANDLE_BAT(, 18035) +HANDLE_BAT(, 18036) +HANDLE_BAT(, 18037) +HANDLE_BAT(, 18038) +HANDLE_BAT(, 18039) +HANDLE_BAT(, 18040) +HANDLE_BAT(, 18041) +HANDLE_BAT(, 18042) +HANDLE_BAT(, 18043) +HANDLE_BAT(, 18044) +HANDLE_BAT(, 18045) +HANDLE_BAT(, 18046) +HANDLE_BAT(, 18047) +HANDLE_BAT(, 18048) +HANDLE_BAT(, 18049) +HANDLE_BAT(, 18050) +HANDLE_BAT(, 18051) +HANDLE_BAT(, 18052) +HANDLE_BAT(, 18053) +HANDLE_BAT(, 18054) +HANDLE_BAT(, 18055) +HANDLE_BAT(, 18056) +HANDLE_BAT(, 18057) +HANDLE_BAT(, 18058) +HANDLE_BAT(, 18059) +HANDLE_BAT(, 18060) +HANDLE_BAT(, 18061) +HANDLE_BAT(, 18062) +HANDLE_BAT(, 18063) +HANDLE_BAT(, 18064) +HANDLE_BAT(, 18065) +HANDLE_BAT(, 18066) +HANDLE_BAT(, 18067) +HANDLE_BAT(, 18068) +HANDLE_BAT(, 18069) +HANDLE_BAT(, 18070) +HANDLE_BAT(, 18071) +HANDLE_BAT(, 18072) +HANDLE_BAT(, 18073) +HANDLE_BAT(, 18074) +HANDLE_BAT(, 18075) +HANDLE_BAT(, 18076) +HANDLE_BAT(, 18077) +HANDLE_BAT(, 18078) +HANDLE_BAT(, 18079) +HANDLE_BAT(, 18080) +HANDLE_BAT(, 18081) +HANDLE_BAT(, 18082) +HANDLE_BAT(, 18083) +HANDLE_BAT(, 18084) +HANDLE_BAT(, 18085) +HANDLE_BAT(, 18086) +HANDLE_BAT(, 18087) +HANDLE_BAT(, 18088) +HANDLE_BAT(, 18089) +HANDLE_BAT(, 18090) +HANDLE_BAT(, 18091) +HANDLE_BAT(, 18092) +HANDLE_BAT(, 18093) +HANDLE_BAT(, 18094) +HANDLE_BAT(, 18095) +HANDLE_BAT(, 18096) +HANDLE_BAT(, 18097) +HANDLE_BAT(, 18098) +HANDLE_BAT(, 18099) +HANDLE_BAT(, 18100) +HANDLE_BAT(, 18101) +HANDLE_BAT(, 18102) +HANDLE_BAT(, 18103) +HANDLE_BAT(, 18104) +HANDLE_BAT(, 18105) +HANDLE_BAT(, 18106) +HANDLE_BAT(, 18107) +HANDLE_BAT(, 18108) +HANDLE_BAT(, 18109) +HANDLE_BAT(, 18110) +HANDLE_BAT(, 18111) +HANDLE_BAT(, 18112) +HANDLE_BAT(, 18113) +HANDLE_BAT(, 18114) +HANDLE_BAT(, 18115) +HANDLE_BAT(, 18116) +HANDLE_BAT(, 18117) +HANDLE_BAT(, 18118) +HANDLE_BAT(, 18119) +HANDLE_BAT(, 18120) +HANDLE_BAT(, 18121) +HANDLE_BAT(, 18122) +HANDLE_BAT(, 18123) +HANDLE_BAT(, 18124) +HANDLE_BAT(, 18125) +HANDLE_BAT(, 18126) +HANDLE_BAT(, 18127) +HANDLE_BAT(, 18128) +HANDLE_BAT(, 18129) +HANDLE_BAT(, 18130) +HANDLE_BAT(, 18131) +HANDLE_BAT(, 18132) +HANDLE_BAT(, 18133) +HANDLE_BAT(, 18134) +HANDLE_BAT(, 18135) +HANDLE_BAT(, 18136) +HANDLE_BAT(, 18137) +HANDLE_BAT(, 18138) +HANDLE_BAT(, 18139) +HANDLE_BAT(, 18140) +HANDLE_BAT(, 18141) +HANDLE_BAT(, 18142) +HANDLE_BAT(, 18143) +HANDLE_BAT(, 18144) +HANDLE_BAT(, 18145) +HANDLE_BAT(, 18146) +HANDLE_BAT(, 18147) +HANDLE_BAT(, 18148) +HANDLE_BAT(, 18149) +HANDLE_BAT(, 18150) +HANDLE_BAT(, 18151) +HANDLE_BAT(, 18152) +HANDLE_BAT(, 18153) +HANDLE_BAT(, 18154) +HANDLE_BAT(, 18155) +HANDLE_BAT(, 18156) +HANDLE_BAT(, 18157) +HANDLE_BAT(, 18158) +HANDLE_BAT(, 18159) +HANDLE_BAT(, 18160) +HANDLE_BAT(, 18161) +HANDLE_BAT(, 18162) +HANDLE_BAT(, 18163) +HANDLE_BAT(, 18164) +HANDLE_BAT(, 18165) +HANDLE_BAT(, 18166) +HANDLE_BAT(, 18167) +HANDLE_BAT(, 18168) +HANDLE_BAT(, 18169) +HANDLE_BAT(, 18170) +HANDLE_BAT(, 18171) +HANDLE_BAT(, 18172) +HANDLE_BAT(, 18173) +HANDLE_BAT(, 18174) +HANDLE_BAT(, 18175) +HANDLE_BAT(, 18176) +HANDLE_BAT(, 18177) +HANDLE_BAT(, 18178) +HANDLE_BAT(, 18179) +HANDLE_BAT(, 18180) +HANDLE_BAT(, 18181) +HANDLE_BAT(, 18182) +HANDLE_BAT(, 18183) +HANDLE_BAT(, 18184) +HANDLE_BAT(, 18185) +HANDLE_BAT(, 18186) +HANDLE_BAT(, 18187) +HANDLE_BAT(, 18188) +HANDLE_BAT(, 18189) +HANDLE_BAT(, 18190) +HANDLE_BAT(, 18191) +HANDLE_BAT(, 18192) +HANDLE_BAT(, 18193) +HANDLE_BAT(, 18194) +HANDLE_BAT(, 18195) +HANDLE_BAT(, 18196) +HANDLE_BAT(, 18197) +HANDLE_BAT(, 18198) +HANDLE_BAT(, 18199) +HANDLE_BAT(, 18200) +HANDLE_BAT(, 18201) +HANDLE_BAT(, 18202) +HANDLE_BAT(, 18203) +HANDLE_BAT(, 18204) +HANDLE_BAT(, 18205) +HANDLE_BAT(, 18206) +HANDLE_BAT(, 18207) +HANDLE_BAT(, 18208) +HANDLE_BAT(, 18209) +HANDLE_BAT(, 18210) +HANDLE_BAT(, 18211) +HANDLE_BAT(, 18212) +HANDLE_BAT(, 18213) +HANDLE_BAT(, 18214) +HANDLE_BAT(, 18215) +HANDLE_BAT(, 18216) +HANDLE_BAT(, 18217) +HANDLE_BAT(, 18218) +HANDLE_BAT(, 18219) +HANDLE_BAT(, 18220) +HANDLE_BAT(, 18221) +HANDLE_BAT(, 18222) +HANDLE_BAT(, 18223) +HANDLE_BAT(, 18224) +HANDLE_BAT(, 18225) +HANDLE_BAT(, 18226) +HANDLE_BAT(, 18227) +HANDLE_BAT(, 18228) +HANDLE_BAT(, 18229) +HANDLE_BAT(, 18230) +HANDLE_BAT(, 18231) +HANDLE_BAT(, 18232) +HANDLE_BAT(, 18233) +HANDLE_BAT(, 18234) +HANDLE_BAT(, 18235) +HANDLE_BAT(, 18236) +HANDLE_BAT(, 18237) +HANDLE_BAT(, 18238) +HANDLE_BAT(, 18239) +HANDLE_BAT(, 18240) +HANDLE_BAT(, 18241) +HANDLE_BAT(, 18242) +HANDLE_BAT(, 18243) +HANDLE_BAT(, 18244) +HANDLE_BAT(, 18245) +HANDLE_BAT(, 18246) +HANDLE_BAT(, 18247) +HANDLE_BAT(, 18248) +HANDLE_BAT(, 18249) +HANDLE_BAT(, 18250) +HANDLE_BAT(, 18251) +HANDLE_BAT(, 18252) +HANDLE_BAT(, 18253) +HANDLE_BAT(, 18254) +HANDLE_BAT(, 18255) +HANDLE_BAT(, 18256) +HANDLE_BAT(, 18257) +HANDLE_BAT(, 18258) +HANDLE_BAT(, 18259) +HANDLE_BAT(, 18260) +HANDLE_BAT(, 18261) +HANDLE_BAT(, 18262) +HANDLE_BAT(, 18263) +HANDLE_BAT(, 18264) +HANDLE_BAT(, 18265) +HANDLE_BAT(, 18266) +HANDLE_BAT(, 18267) +HANDLE_BAT(, 18268) +HANDLE_BAT(, 18269) +HANDLE_BAT(, 18270) +HANDLE_BAT(, 18271) +HANDLE_BAT(, 18272) +HANDLE_BAT(, 18273) +HANDLE_BAT(, 18274) +HANDLE_BAT(, 18275) +HANDLE_BAT(, 18276) +HANDLE_BAT(, 18277) +HANDLE_BAT(, 18278) +HANDLE_BAT(, 18279) +HANDLE_BAT(, 18280) +HANDLE_BAT(, 18281) +HANDLE_BAT(, 18282) +HANDLE_BAT(, 18283) +HANDLE_BAT(, 18284) +HANDLE_BAT(, 18285) +HANDLE_BAT(, 18286) +HANDLE_BAT(, 18287) +HANDLE_BAT(, 18288) +HANDLE_BAT(, 18289) +HANDLE_BAT(, 18290) +HANDLE_BAT(, 18291) +HANDLE_BAT(, 18292) +HANDLE_BAT(, 18293) +HANDLE_BAT(, 18294) +HANDLE_BAT(, 18295) +HANDLE_BAT(, 18296) +HANDLE_BAT(, 18297) +HANDLE_BAT(, 18298) +HANDLE_BAT(, 18299) +HANDLE_BAT(, 18300) +HANDLE_BAT(, 18301) +HANDLE_BAT(, 18302) +HANDLE_BAT(, 18303) +HANDLE_BAT(, 18304) +HANDLE_BAT(, 18305) +HANDLE_BAT(, 18306) +HANDLE_BAT(, 18307) +HANDLE_BAT(, 18308) +HANDLE_BAT(, 18309) +HANDLE_BAT(, 18310) +HANDLE_BAT(, 18311) +HANDLE_BAT(, 18312) +HANDLE_BAT(, 18313) +HANDLE_BAT(, 18314) +HANDLE_BAT(, 18315) +HANDLE_BAT(, 18316) +HANDLE_BAT(, 18317) +HANDLE_BAT(, 18318) +HANDLE_BAT(, 18319) +HANDLE_BAT(, 18320) +HANDLE_BAT(, 18321) +HANDLE_BAT(, 18322) +HANDLE_BAT(, 18323) +HANDLE_BAT(, 18324) +HANDLE_BAT(, 18325) +HANDLE_BAT(, 18326) +HANDLE_BAT(, 18327) +HANDLE_BAT(, 18328) +HANDLE_BAT(, 18329) +HANDLE_BAT(, 18330) +HANDLE_BAT(, 18331) +HANDLE_BAT(, 18332) +HANDLE_BAT(, 18333) +HANDLE_BAT(, 18334) +HANDLE_BAT(, 18335) +HANDLE_BAT(, 18336) +HANDLE_BAT(, 18337) +HANDLE_BAT(, 18338) +HANDLE_BAT(, 18339) +HANDLE_BAT(, 18340) +HANDLE_BAT(, 18341) +HANDLE_BAT(, 18342) +HANDLE_BAT(, 18343) +HANDLE_BAT(, 18344) +HANDLE_BAT(, 18345) +HANDLE_BAT(, 18346) +HANDLE_BAT(, 18347) +HANDLE_BAT(, 18348) +HANDLE_BAT(, 18349) +HANDLE_BAT(, 18350) +HANDLE_BAT(, 18351) +HANDLE_BAT(, 18352) +HANDLE_BAT(, 18353) +HANDLE_BAT(, 18354) +HANDLE_BAT(, 18355) +HANDLE_BAT(, 18356) +HANDLE_BAT(, 18357) +HANDLE_BAT(, 18358) +HANDLE_BAT(, 18359) +HANDLE_BAT(, 18360) +HANDLE_BAT(, 18361) +HANDLE_BAT(, 18362) +HANDLE_BAT(, 18363) +HANDLE_BAT(, 18364) +HANDLE_BAT(, 18365) +HANDLE_BAT(, 18366) +HANDLE_BAT(, 18367) +HANDLE_BAT(, 18368) +HANDLE_BAT(, 18369) +HANDLE_BAT(, 18370) +HANDLE_BAT(, 18371) +HANDLE_BAT(, 18372) +HANDLE_BAT(, 18373) +HANDLE_BAT(, 18374) +HANDLE_BAT(, 18375) +HANDLE_BAT(, 18376) +HANDLE_BAT(, 18377) +HANDLE_BAT(, 18378) +HANDLE_BAT(, 18379) +HANDLE_BAT(, 18380) +HANDLE_BAT(, 18381) +HANDLE_BAT(, 18382) +HANDLE_BAT(, 18383) +HANDLE_BAT(, 18384) +HANDLE_BAT(, 18385) +HANDLE_BAT(, 18386) +HANDLE_BAT(, 18387) +HANDLE_BAT(, 18388) +HANDLE_BAT(, 18389) +HANDLE_BAT(, 18390) +HANDLE_BAT(, 18391) +HANDLE_BAT(, 18392) +HANDLE_BAT(, 18393) +HANDLE_BAT(, 18394) +HANDLE_BAT(, 18395) +HANDLE_BAT(, 18396) +HANDLE_BAT(, 18397) +HANDLE_BAT(, 18398) +HANDLE_BAT(, 18399) +HANDLE_BAT(, 18400) +HANDLE_BAT(, 18401) +HANDLE_BAT(, 18402) +HANDLE_BAT(, 18403) +HANDLE_BAT(, 18404) +HANDLE_BAT(, 18405) +HANDLE_BAT(, 18406) +HANDLE_BAT(, 18407) +HANDLE_BAT(, 18408) +HANDLE_BAT(, 18409) +HANDLE_BAT(, 18410) +HANDLE_BAT(, 18411) +HANDLE_BAT(, 18412) +HANDLE_BAT(, 18413) +HANDLE_BAT(, 18414) +HANDLE_BAT(, 18415) +HANDLE_BAT(, 18416) +HANDLE_BAT(, 18417) +HANDLE_BAT(, 18418) +HANDLE_BAT(, 18419) +HANDLE_BAT(, 18420) +HANDLE_BAT(, 18421) +HANDLE_BAT(, 18422) +HANDLE_BAT(, 18423) +HANDLE_BAT(, 18424) +HANDLE_BAT(, 18425) +HANDLE_BAT(, 18426) +HANDLE_BAT(, 18427) +HANDLE_BAT(, 18428) +HANDLE_BAT(, 18429) +HANDLE_BAT(, 18430) +HANDLE_BAT(, 18431) +HANDLE_BAT(, 18432) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 17409) +HANDLE_BAT(APINT_TYPE_PREFIX, 17410) +HANDLE_BAT(APINT_TYPE_PREFIX, 17411) +HANDLE_BAT(APINT_TYPE_PREFIX, 17412) +HANDLE_BAT(APINT_TYPE_PREFIX, 17413) +HANDLE_BAT(APINT_TYPE_PREFIX, 17414) +HANDLE_BAT(APINT_TYPE_PREFIX, 17415) +HANDLE_BAT(APINT_TYPE_PREFIX, 17416) +HANDLE_BAT(APINT_TYPE_PREFIX, 17417) +HANDLE_BAT(APINT_TYPE_PREFIX, 17418) +HANDLE_BAT(APINT_TYPE_PREFIX, 17419) +HANDLE_BAT(APINT_TYPE_PREFIX, 17420) +HANDLE_BAT(APINT_TYPE_PREFIX, 17421) +HANDLE_BAT(APINT_TYPE_PREFIX, 17422) +HANDLE_BAT(APINT_TYPE_PREFIX, 17423) +HANDLE_BAT(APINT_TYPE_PREFIX, 17424) +HANDLE_BAT(APINT_TYPE_PREFIX, 17425) +HANDLE_BAT(APINT_TYPE_PREFIX, 17426) +HANDLE_BAT(APINT_TYPE_PREFIX, 17427) +HANDLE_BAT(APINT_TYPE_PREFIX, 17428) +HANDLE_BAT(APINT_TYPE_PREFIX, 17429) +HANDLE_BAT(APINT_TYPE_PREFIX, 17430) +HANDLE_BAT(APINT_TYPE_PREFIX, 17431) +HANDLE_BAT(APINT_TYPE_PREFIX, 17432) +HANDLE_BAT(APINT_TYPE_PREFIX, 17433) +HANDLE_BAT(APINT_TYPE_PREFIX, 17434) +HANDLE_BAT(APINT_TYPE_PREFIX, 17435) +HANDLE_BAT(APINT_TYPE_PREFIX, 17436) +HANDLE_BAT(APINT_TYPE_PREFIX, 17437) +HANDLE_BAT(APINT_TYPE_PREFIX, 17438) +HANDLE_BAT(APINT_TYPE_PREFIX, 17439) +HANDLE_BAT(APINT_TYPE_PREFIX, 17440) +HANDLE_BAT(APINT_TYPE_PREFIX, 17441) +HANDLE_BAT(APINT_TYPE_PREFIX, 17442) +HANDLE_BAT(APINT_TYPE_PREFIX, 17443) +HANDLE_BAT(APINT_TYPE_PREFIX, 17444) +HANDLE_BAT(APINT_TYPE_PREFIX, 17445) +HANDLE_BAT(APINT_TYPE_PREFIX, 17446) +HANDLE_BAT(APINT_TYPE_PREFIX, 17447) +HANDLE_BAT(APINT_TYPE_PREFIX, 17448) +HANDLE_BAT(APINT_TYPE_PREFIX, 17449) +HANDLE_BAT(APINT_TYPE_PREFIX, 17450) +HANDLE_BAT(APINT_TYPE_PREFIX, 17451) +HANDLE_BAT(APINT_TYPE_PREFIX, 17452) +HANDLE_BAT(APINT_TYPE_PREFIX, 17453) +HANDLE_BAT(APINT_TYPE_PREFIX, 17454) +HANDLE_BAT(APINT_TYPE_PREFIX, 17455) +HANDLE_BAT(APINT_TYPE_PREFIX, 17456) +HANDLE_BAT(APINT_TYPE_PREFIX, 17457) +HANDLE_BAT(APINT_TYPE_PREFIX, 17458) +HANDLE_BAT(APINT_TYPE_PREFIX, 17459) +HANDLE_BAT(APINT_TYPE_PREFIX, 17460) +HANDLE_BAT(APINT_TYPE_PREFIX, 17461) +HANDLE_BAT(APINT_TYPE_PREFIX, 17462) +HANDLE_BAT(APINT_TYPE_PREFIX, 17463) +HANDLE_BAT(APINT_TYPE_PREFIX, 17464) +HANDLE_BAT(APINT_TYPE_PREFIX, 17465) +HANDLE_BAT(APINT_TYPE_PREFIX, 17466) +HANDLE_BAT(APINT_TYPE_PREFIX, 17467) +HANDLE_BAT(APINT_TYPE_PREFIX, 17468) +HANDLE_BAT(APINT_TYPE_PREFIX, 17469) +HANDLE_BAT(APINT_TYPE_PREFIX, 17470) +HANDLE_BAT(APINT_TYPE_PREFIX, 17471) +HANDLE_BAT(APINT_TYPE_PREFIX, 17472) +HANDLE_BAT(APINT_TYPE_PREFIX, 17473) +HANDLE_BAT(APINT_TYPE_PREFIX, 17474) +HANDLE_BAT(APINT_TYPE_PREFIX, 17475) +HANDLE_BAT(APINT_TYPE_PREFIX, 17476) +HANDLE_BAT(APINT_TYPE_PREFIX, 17477) +HANDLE_BAT(APINT_TYPE_PREFIX, 17478) +HANDLE_BAT(APINT_TYPE_PREFIX, 17479) +HANDLE_BAT(APINT_TYPE_PREFIX, 17480) +HANDLE_BAT(APINT_TYPE_PREFIX, 17481) +HANDLE_BAT(APINT_TYPE_PREFIX, 17482) +HANDLE_BAT(APINT_TYPE_PREFIX, 17483) +HANDLE_BAT(APINT_TYPE_PREFIX, 17484) +HANDLE_BAT(APINT_TYPE_PREFIX, 17485) +HANDLE_BAT(APINT_TYPE_PREFIX, 17486) +HANDLE_BAT(APINT_TYPE_PREFIX, 17487) +HANDLE_BAT(APINT_TYPE_PREFIX, 17488) +HANDLE_BAT(APINT_TYPE_PREFIX, 17489) +HANDLE_BAT(APINT_TYPE_PREFIX, 17490) +HANDLE_BAT(APINT_TYPE_PREFIX, 17491) +HANDLE_BAT(APINT_TYPE_PREFIX, 17492) +HANDLE_BAT(APINT_TYPE_PREFIX, 17493) +HANDLE_BAT(APINT_TYPE_PREFIX, 17494) +HANDLE_BAT(APINT_TYPE_PREFIX, 17495) +HANDLE_BAT(APINT_TYPE_PREFIX, 17496) +HANDLE_BAT(APINT_TYPE_PREFIX, 17497) +HANDLE_BAT(APINT_TYPE_PREFIX, 17498) +HANDLE_BAT(APINT_TYPE_PREFIX, 17499) +HANDLE_BAT(APINT_TYPE_PREFIX, 17500) +HANDLE_BAT(APINT_TYPE_PREFIX, 17501) +HANDLE_BAT(APINT_TYPE_PREFIX, 17502) +HANDLE_BAT(APINT_TYPE_PREFIX, 17503) +HANDLE_BAT(APINT_TYPE_PREFIX, 17504) +HANDLE_BAT(APINT_TYPE_PREFIX, 17505) +HANDLE_BAT(APINT_TYPE_PREFIX, 17506) +HANDLE_BAT(APINT_TYPE_PREFIX, 17507) +HANDLE_BAT(APINT_TYPE_PREFIX, 17508) +HANDLE_BAT(APINT_TYPE_PREFIX, 17509) +HANDLE_BAT(APINT_TYPE_PREFIX, 17510) +HANDLE_BAT(APINT_TYPE_PREFIX, 17511) +HANDLE_BAT(APINT_TYPE_PREFIX, 17512) +HANDLE_BAT(APINT_TYPE_PREFIX, 17513) +HANDLE_BAT(APINT_TYPE_PREFIX, 17514) +HANDLE_BAT(APINT_TYPE_PREFIX, 17515) +HANDLE_BAT(APINT_TYPE_PREFIX, 17516) +HANDLE_BAT(APINT_TYPE_PREFIX, 17517) +HANDLE_BAT(APINT_TYPE_PREFIX, 17518) +HANDLE_BAT(APINT_TYPE_PREFIX, 17519) +HANDLE_BAT(APINT_TYPE_PREFIX, 17520) +HANDLE_BAT(APINT_TYPE_PREFIX, 17521) +HANDLE_BAT(APINT_TYPE_PREFIX, 17522) +HANDLE_BAT(APINT_TYPE_PREFIX, 17523) +HANDLE_BAT(APINT_TYPE_PREFIX, 17524) +HANDLE_BAT(APINT_TYPE_PREFIX, 17525) +HANDLE_BAT(APINT_TYPE_PREFIX, 17526) +HANDLE_BAT(APINT_TYPE_PREFIX, 17527) +HANDLE_BAT(APINT_TYPE_PREFIX, 17528) +HANDLE_BAT(APINT_TYPE_PREFIX, 17529) +HANDLE_BAT(APINT_TYPE_PREFIX, 17530) +HANDLE_BAT(APINT_TYPE_PREFIX, 17531) +HANDLE_BAT(APINT_TYPE_PREFIX, 17532) +HANDLE_BAT(APINT_TYPE_PREFIX, 17533) +HANDLE_BAT(APINT_TYPE_PREFIX, 17534) +HANDLE_BAT(APINT_TYPE_PREFIX, 17535) +HANDLE_BAT(APINT_TYPE_PREFIX, 17536) +HANDLE_BAT(APINT_TYPE_PREFIX, 17537) +HANDLE_BAT(APINT_TYPE_PREFIX, 17538) +HANDLE_BAT(APINT_TYPE_PREFIX, 17539) +HANDLE_BAT(APINT_TYPE_PREFIX, 17540) +HANDLE_BAT(APINT_TYPE_PREFIX, 17541) +HANDLE_BAT(APINT_TYPE_PREFIX, 17542) +HANDLE_BAT(APINT_TYPE_PREFIX, 17543) +HANDLE_BAT(APINT_TYPE_PREFIX, 17544) +HANDLE_BAT(APINT_TYPE_PREFIX, 17545) +HANDLE_BAT(APINT_TYPE_PREFIX, 17546) +HANDLE_BAT(APINT_TYPE_PREFIX, 17547) +HANDLE_BAT(APINT_TYPE_PREFIX, 17548) +HANDLE_BAT(APINT_TYPE_PREFIX, 17549) +HANDLE_BAT(APINT_TYPE_PREFIX, 17550) +HANDLE_BAT(APINT_TYPE_PREFIX, 17551) +HANDLE_BAT(APINT_TYPE_PREFIX, 17552) +HANDLE_BAT(APINT_TYPE_PREFIX, 17553) +HANDLE_BAT(APINT_TYPE_PREFIX, 17554) +HANDLE_BAT(APINT_TYPE_PREFIX, 17555) +HANDLE_BAT(APINT_TYPE_PREFIX, 17556) +HANDLE_BAT(APINT_TYPE_PREFIX, 17557) +HANDLE_BAT(APINT_TYPE_PREFIX, 17558) +HANDLE_BAT(APINT_TYPE_PREFIX, 17559) +HANDLE_BAT(APINT_TYPE_PREFIX, 17560) +HANDLE_BAT(APINT_TYPE_PREFIX, 17561) +HANDLE_BAT(APINT_TYPE_PREFIX, 17562) +HANDLE_BAT(APINT_TYPE_PREFIX, 17563) +HANDLE_BAT(APINT_TYPE_PREFIX, 17564) +HANDLE_BAT(APINT_TYPE_PREFIX, 17565) +HANDLE_BAT(APINT_TYPE_PREFIX, 17566) +HANDLE_BAT(APINT_TYPE_PREFIX, 17567) +HANDLE_BAT(APINT_TYPE_PREFIX, 17568) +HANDLE_BAT(APINT_TYPE_PREFIX, 17569) +HANDLE_BAT(APINT_TYPE_PREFIX, 17570) +HANDLE_BAT(APINT_TYPE_PREFIX, 17571) +HANDLE_BAT(APINT_TYPE_PREFIX, 17572) +HANDLE_BAT(APINT_TYPE_PREFIX, 17573) +HANDLE_BAT(APINT_TYPE_PREFIX, 17574) +HANDLE_BAT(APINT_TYPE_PREFIX, 17575) +HANDLE_BAT(APINT_TYPE_PREFIX, 17576) +HANDLE_BAT(APINT_TYPE_PREFIX, 17577) +HANDLE_BAT(APINT_TYPE_PREFIX, 17578) +HANDLE_BAT(APINT_TYPE_PREFIX, 17579) +HANDLE_BAT(APINT_TYPE_PREFIX, 17580) +HANDLE_BAT(APINT_TYPE_PREFIX, 17581) +HANDLE_BAT(APINT_TYPE_PREFIX, 17582) +HANDLE_BAT(APINT_TYPE_PREFIX, 17583) +HANDLE_BAT(APINT_TYPE_PREFIX, 17584) +HANDLE_BAT(APINT_TYPE_PREFIX, 17585) +HANDLE_BAT(APINT_TYPE_PREFIX, 17586) +HANDLE_BAT(APINT_TYPE_PREFIX, 17587) +HANDLE_BAT(APINT_TYPE_PREFIX, 17588) +HANDLE_BAT(APINT_TYPE_PREFIX, 17589) +HANDLE_BAT(APINT_TYPE_PREFIX, 17590) +HANDLE_BAT(APINT_TYPE_PREFIX, 17591) +HANDLE_BAT(APINT_TYPE_PREFIX, 17592) +HANDLE_BAT(APINT_TYPE_PREFIX, 17593) +HANDLE_BAT(APINT_TYPE_PREFIX, 17594) +HANDLE_BAT(APINT_TYPE_PREFIX, 17595) +HANDLE_BAT(APINT_TYPE_PREFIX, 17596) +HANDLE_BAT(APINT_TYPE_PREFIX, 17597) +HANDLE_BAT(APINT_TYPE_PREFIX, 17598) +HANDLE_BAT(APINT_TYPE_PREFIX, 17599) +HANDLE_BAT(APINT_TYPE_PREFIX, 17600) +HANDLE_BAT(APINT_TYPE_PREFIX, 17601) +HANDLE_BAT(APINT_TYPE_PREFIX, 17602) +HANDLE_BAT(APINT_TYPE_PREFIX, 17603) +HANDLE_BAT(APINT_TYPE_PREFIX, 17604) +HANDLE_BAT(APINT_TYPE_PREFIX, 17605) +HANDLE_BAT(APINT_TYPE_PREFIX, 17606) +HANDLE_BAT(APINT_TYPE_PREFIX, 17607) +HANDLE_BAT(APINT_TYPE_PREFIX, 17608) +HANDLE_BAT(APINT_TYPE_PREFIX, 17609) +HANDLE_BAT(APINT_TYPE_PREFIX, 17610) +HANDLE_BAT(APINT_TYPE_PREFIX, 17611) +HANDLE_BAT(APINT_TYPE_PREFIX, 17612) +HANDLE_BAT(APINT_TYPE_PREFIX, 17613) +HANDLE_BAT(APINT_TYPE_PREFIX, 17614) +HANDLE_BAT(APINT_TYPE_PREFIX, 17615) +HANDLE_BAT(APINT_TYPE_PREFIX, 17616) +HANDLE_BAT(APINT_TYPE_PREFIX, 17617) +HANDLE_BAT(APINT_TYPE_PREFIX, 17618) +HANDLE_BAT(APINT_TYPE_PREFIX, 17619) +HANDLE_BAT(APINT_TYPE_PREFIX, 17620) +HANDLE_BAT(APINT_TYPE_PREFIX, 17621) +HANDLE_BAT(APINT_TYPE_PREFIX, 17622) +HANDLE_BAT(APINT_TYPE_PREFIX, 17623) +HANDLE_BAT(APINT_TYPE_PREFIX, 17624) +HANDLE_BAT(APINT_TYPE_PREFIX, 17625) +HANDLE_BAT(APINT_TYPE_PREFIX, 17626) +HANDLE_BAT(APINT_TYPE_PREFIX, 17627) +HANDLE_BAT(APINT_TYPE_PREFIX, 17628) +HANDLE_BAT(APINT_TYPE_PREFIX, 17629) +HANDLE_BAT(APINT_TYPE_PREFIX, 17630) +HANDLE_BAT(APINT_TYPE_PREFIX, 17631) +HANDLE_BAT(APINT_TYPE_PREFIX, 17632) +HANDLE_BAT(APINT_TYPE_PREFIX, 17633) +HANDLE_BAT(APINT_TYPE_PREFIX, 17634) +HANDLE_BAT(APINT_TYPE_PREFIX, 17635) +HANDLE_BAT(APINT_TYPE_PREFIX, 17636) +HANDLE_BAT(APINT_TYPE_PREFIX, 17637) +HANDLE_BAT(APINT_TYPE_PREFIX, 17638) +HANDLE_BAT(APINT_TYPE_PREFIX, 17639) +HANDLE_BAT(APINT_TYPE_PREFIX, 17640) +HANDLE_BAT(APINT_TYPE_PREFIX, 17641) +HANDLE_BAT(APINT_TYPE_PREFIX, 17642) +HANDLE_BAT(APINT_TYPE_PREFIX, 17643) +HANDLE_BAT(APINT_TYPE_PREFIX, 17644) +HANDLE_BAT(APINT_TYPE_PREFIX, 17645) +HANDLE_BAT(APINT_TYPE_PREFIX, 17646) +HANDLE_BAT(APINT_TYPE_PREFIX, 17647) +HANDLE_BAT(APINT_TYPE_PREFIX, 17648) +HANDLE_BAT(APINT_TYPE_PREFIX, 17649) +HANDLE_BAT(APINT_TYPE_PREFIX, 17650) +HANDLE_BAT(APINT_TYPE_PREFIX, 17651) +HANDLE_BAT(APINT_TYPE_PREFIX, 17652) +HANDLE_BAT(APINT_TYPE_PREFIX, 17653) +HANDLE_BAT(APINT_TYPE_PREFIX, 17654) +HANDLE_BAT(APINT_TYPE_PREFIX, 17655) +HANDLE_BAT(APINT_TYPE_PREFIX, 17656) +HANDLE_BAT(APINT_TYPE_PREFIX, 17657) +HANDLE_BAT(APINT_TYPE_PREFIX, 17658) +HANDLE_BAT(APINT_TYPE_PREFIX, 17659) +HANDLE_BAT(APINT_TYPE_PREFIX, 17660) +HANDLE_BAT(APINT_TYPE_PREFIX, 17661) +HANDLE_BAT(APINT_TYPE_PREFIX, 17662) +HANDLE_BAT(APINT_TYPE_PREFIX, 17663) +HANDLE_BAT(APINT_TYPE_PREFIX, 17664) +HANDLE_BAT(APINT_TYPE_PREFIX, 17665) +HANDLE_BAT(APINT_TYPE_PREFIX, 17666) +HANDLE_BAT(APINT_TYPE_PREFIX, 17667) +HANDLE_BAT(APINT_TYPE_PREFIX, 17668) +HANDLE_BAT(APINT_TYPE_PREFIX, 17669) +HANDLE_BAT(APINT_TYPE_PREFIX, 17670) +HANDLE_BAT(APINT_TYPE_PREFIX, 17671) +HANDLE_BAT(APINT_TYPE_PREFIX, 17672) +HANDLE_BAT(APINT_TYPE_PREFIX, 17673) +HANDLE_BAT(APINT_TYPE_PREFIX, 17674) +HANDLE_BAT(APINT_TYPE_PREFIX, 17675) +HANDLE_BAT(APINT_TYPE_PREFIX, 17676) +HANDLE_BAT(APINT_TYPE_PREFIX, 17677) +HANDLE_BAT(APINT_TYPE_PREFIX, 17678) +HANDLE_BAT(APINT_TYPE_PREFIX, 17679) +HANDLE_BAT(APINT_TYPE_PREFIX, 17680) +HANDLE_BAT(APINT_TYPE_PREFIX, 17681) +HANDLE_BAT(APINT_TYPE_PREFIX, 17682) +HANDLE_BAT(APINT_TYPE_PREFIX, 17683) +HANDLE_BAT(APINT_TYPE_PREFIX, 17684) +HANDLE_BAT(APINT_TYPE_PREFIX, 17685) +HANDLE_BAT(APINT_TYPE_PREFIX, 17686) +HANDLE_BAT(APINT_TYPE_PREFIX, 17687) +HANDLE_BAT(APINT_TYPE_PREFIX, 17688) +HANDLE_BAT(APINT_TYPE_PREFIX, 17689) +HANDLE_BAT(APINT_TYPE_PREFIX, 17690) +HANDLE_BAT(APINT_TYPE_PREFIX, 17691) +HANDLE_BAT(APINT_TYPE_PREFIX, 17692) +HANDLE_BAT(APINT_TYPE_PREFIX, 17693) +HANDLE_BAT(APINT_TYPE_PREFIX, 17694) +HANDLE_BAT(APINT_TYPE_PREFIX, 17695) +HANDLE_BAT(APINT_TYPE_PREFIX, 17696) +HANDLE_BAT(APINT_TYPE_PREFIX, 17697) +HANDLE_BAT(APINT_TYPE_PREFIX, 17698) +HANDLE_BAT(APINT_TYPE_PREFIX, 17699) +HANDLE_BAT(APINT_TYPE_PREFIX, 17700) +HANDLE_BAT(APINT_TYPE_PREFIX, 17701) +HANDLE_BAT(APINT_TYPE_PREFIX, 17702) +HANDLE_BAT(APINT_TYPE_PREFIX, 17703) +HANDLE_BAT(APINT_TYPE_PREFIX, 17704) +HANDLE_BAT(APINT_TYPE_PREFIX, 17705) +HANDLE_BAT(APINT_TYPE_PREFIX, 17706) +HANDLE_BAT(APINT_TYPE_PREFIX, 17707) +HANDLE_BAT(APINT_TYPE_PREFIX, 17708) +HANDLE_BAT(APINT_TYPE_PREFIX, 17709) +HANDLE_BAT(APINT_TYPE_PREFIX, 17710) +HANDLE_BAT(APINT_TYPE_PREFIX, 17711) +HANDLE_BAT(APINT_TYPE_PREFIX, 17712) +HANDLE_BAT(APINT_TYPE_PREFIX, 17713) +HANDLE_BAT(APINT_TYPE_PREFIX, 17714) +HANDLE_BAT(APINT_TYPE_PREFIX, 17715) +HANDLE_BAT(APINT_TYPE_PREFIX, 17716) +HANDLE_BAT(APINT_TYPE_PREFIX, 17717) +HANDLE_BAT(APINT_TYPE_PREFIX, 17718) +HANDLE_BAT(APINT_TYPE_PREFIX, 17719) +HANDLE_BAT(APINT_TYPE_PREFIX, 17720) +HANDLE_BAT(APINT_TYPE_PREFIX, 17721) +HANDLE_BAT(APINT_TYPE_PREFIX, 17722) +HANDLE_BAT(APINT_TYPE_PREFIX, 17723) +HANDLE_BAT(APINT_TYPE_PREFIX, 17724) +HANDLE_BAT(APINT_TYPE_PREFIX, 17725) +HANDLE_BAT(APINT_TYPE_PREFIX, 17726) +HANDLE_BAT(APINT_TYPE_PREFIX, 17727) +HANDLE_BAT(APINT_TYPE_PREFIX, 17728) +HANDLE_BAT(APINT_TYPE_PREFIX, 17729) +HANDLE_BAT(APINT_TYPE_PREFIX, 17730) +HANDLE_BAT(APINT_TYPE_PREFIX, 17731) +HANDLE_BAT(APINT_TYPE_PREFIX, 17732) +HANDLE_BAT(APINT_TYPE_PREFIX, 17733) +HANDLE_BAT(APINT_TYPE_PREFIX, 17734) +HANDLE_BAT(APINT_TYPE_PREFIX, 17735) +HANDLE_BAT(APINT_TYPE_PREFIX, 17736) +HANDLE_BAT(APINT_TYPE_PREFIX, 17737) +HANDLE_BAT(APINT_TYPE_PREFIX, 17738) +HANDLE_BAT(APINT_TYPE_PREFIX, 17739) +HANDLE_BAT(APINT_TYPE_PREFIX, 17740) +HANDLE_BAT(APINT_TYPE_PREFIX, 17741) +HANDLE_BAT(APINT_TYPE_PREFIX, 17742) +HANDLE_BAT(APINT_TYPE_PREFIX, 17743) +HANDLE_BAT(APINT_TYPE_PREFIX, 17744) +HANDLE_BAT(APINT_TYPE_PREFIX, 17745) +HANDLE_BAT(APINT_TYPE_PREFIX, 17746) +HANDLE_BAT(APINT_TYPE_PREFIX, 17747) +HANDLE_BAT(APINT_TYPE_PREFIX, 17748) +HANDLE_BAT(APINT_TYPE_PREFIX, 17749) +HANDLE_BAT(APINT_TYPE_PREFIX, 17750) +HANDLE_BAT(APINT_TYPE_PREFIX, 17751) +HANDLE_BAT(APINT_TYPE_PREFIX, 17752) +HANDLE_BAT(APINT_TYPE_PREFIX, 17753) +HANDLE_BAT(APINT_TYPE_PREFIX, 17754) +HANDLE_BAT(APINT_TYPE_PREFIX, 17755) +HANDLE_BAT(APINT_TYPE_PREFIX, 17756) +HANDLE_BAT(APINT_TYPE_PREFIX, 17757) +HANDLE_BAT(APINT_TYPE_PREFIX, 17758) +HANDLE_BAT(APINT_TYPE_PREFIX, 17759) +HANDLE_BAT(APINT_TYPE_PREFIX, 17760) +HANDLE_BAT(APINT_TYPE_PREFIX, 17761) +HANDLE_BAT(APINT_TYPE_PREFIX, 17762) +HANDLE_BAT(APINT_TYPE_PREFIX, 17763) +HANDLE_BAT(APINT_TYPE_PREFIX, 17764) +HANDLE_BAT(APINT_TYPE_PREFIX, 17765) +HANDLE_BAT(APINT_TYPE_PREFIX, 17766) +HANDLE_BAT(APINT_TYPE_PREFIX, 17767) +HANDLE_BAT(APINT_TYPE_PREFIX, 17768) +HANDLE_BAT(APINT_TYPE_PREFIX, 17769) +HANDLE_BAT(APINT_TYPE_PREFIX, 17770) +HANDLE_BAT(APINT_TYPE_PREFIX, 17771) +HANDLE_BAT(APINT_TYPE_PREFIX, 17772) +HANDLE_BAT(APINT_TYPE_PREFIX, 17773) +HANDLE_BAT(APINT_TYPE_PREFIX, 17774) +HANDLE_BAT(APINT_TYPE_PREFIX, 17775) +HANDLE_BAT(APINT_TYPE_PREFIX, 17776) +HANDLE_BAT(APINT_TYPE_PREFIX, 17777) +HANDLE_BAT(APINT_TYPE_PREFIX, 17778) +HANDLE_BAT(APINT_TYPE_PREFIX, 17779) +HANDLE_BAT(APINT_TYPE_PREFIX, 17780) +HANDLE_BAT(APINT_TYPE_PREFIX, 17781) +HANDLE_BAT(APINT_TYPE_PREFIX, 17782) +HANDLE_BAT(APINT_TYPE_PREFIX, 17783) +HANDLE_BAT(APINT_TYPE_PREFIX, 17784) +HANDLE_BAT(APINT_TYPE_PREFIX, 17785) +HANDLE_BAT(APINT_TYPE_PREFIX, 17786) +HANDLE_BAT(APINT_TYPE_PREFIX, 17787) +HANDLE_BAT(APINT_TYPE_PREFIX, 17788) +HANDLE_BAT(APINT_TYPE_PREFIX, 17789) +HANDLE_BAT(APINT_TYPE_PREFIX, 17790) +HANDLE_BAT(APINT_TYPE_PREFIX, 17791) +HANDLE_BAT(APINT_TYPE_PREFIX, 17792) +HANDLE_BAT(APINT_TYPE_PREFIX, 17793) +HANDLE_BAT(APINT_TYPE_PREFIX, 17794) +HANDLE_BAT(APINT_TYPE_PREFIX, 17795) +HANDLE_BAT(APINT_TYPE_PREFIX, 17796) +HANDLE_BAT(APINT_TYPE_PREFIX, 17797) +HANDLE_BAT(APINT_TYPE_PREFIX, 17798) +HANDLE_BAT(APINT_TYPE_PREFIX, 17799) +HANDLE_BAT(APINT_TYPE_PREFIX, 17800) +HANDLE_BAT(APINT_TYPE_PREFIX, 17801) +HANDLE_BAT(APINT_TYPE_PREFIX, 17802) +HANDLE_BAT(APINT_TYPE_PREFIX, 17803) +HANDLE_BAT(APINT_TYPE_PREFIX, 17804) +HANDLE_BAT(APINT_TYPE_PREFIX, 17805) +HANDLE_BAT(APINT_TYPE_PREFIX, 17806) +HANDLE_BAT(APINT_TYPE_PREFIX, 17807) +HANDLE_BAT(APINT_TYPE_PREFIX, 17808) +HANDLE_BAT(APINT_TYPE_PREFIX, 17809) +HANDLE_BAT(APINT_TYPE_PREFIX, 17810) +HANDLE_BAT(APINT_TYPE_PREFIX, 17811) +HANDLE_BAT(APINT_TYPE_PREFIX, 17812) +HANDLE_BAT(APINT_TYPE_PREFIX, 17813) +HANDLE_BAT(APINT_TYPE_PREFIX, 17814) +HANDLE_BAT(APINT_TYPE_PREFIX, 17815) +HANDLE_BAT(APINT_TYPE_PREFIX, 17816) +HANDLE_BAT(APINT_TYPE_PREFIX, 17817) +HANDLE_BAT(APINT_TYPE_PREFIX, 17818) +HANDLE_BAT(APINT_TYPE_PREFIX, 17819) +HANDLE_BAT(APINT_TYPE_PREFIX, 17820) +HANDLE_BAT(APINT_TYPE_PREFIX, 17821) +HANDLE_BAT(APINT_TYPE_PREFIX, 17822) +HANDLE_BAT(APINT_TYPE_PREFIX, 17823) +HANDLE_BAT(APINT_TYPE_PREFIX, 17824) +HANDLE_BAT(APINT_TYPE_PREFIX, 17825) +HANDLE_BAT(APINT_TYPE_PREFIX, 17826) +HANDLE_BAT(APINT_TYPE_PREFIX, 17827) +HANDLE_BAT(APINT_TYPE_PREFIX, 17828) +HANDLE_BAT(APINT_TYPE_PREFIX, 17829) +HANDLE_BAT(APINT_TYPE_PREFIX, 17830) +HANDLE_BAT(APINT_TYPE_PREFIX, 17831) +HANDLE_BAT(APINT_TYPE_PREFIX, 17832) +HANDLE_BAT(APINT_TYPE_PREFIX, 17833) +HANDLE_BAT(APINT_TYPE_PREFIX, 17834) +HANDLE_BAT(APINT_TYPE_PREFIX, 17835) +HANDLE_BAT(APINT_TYPE_PREFIX, 17836) +HANDLE_BAT(APINT_TYPE_PREFIX, 17837) +HANDLE_BAT(APINT_TYPE_PREFIX, 17838) +HANDLE_BAT(APINT_TYPE_PREFIX, 17839) +HANDLE_BAT(APINT_TYPE_PREFIX, 17840) +HANDLE_BAT(APINT_TYPE_PREFIX, 17841) +HANDLE_BAT(APINT_TYPE_PREFIX, 17842) +HANDLE_BAT(APINT_TYPE_PREFIX, 17843) +HANDLE_BAT(APINT_TYPE_PREFIX, 17844) +HANDLE_BAT(APINT_TYPE_PREFIX, 17845) +HANDLE_BAT(APINT_TYPE_PREFIX, 17846) +HANDLE_BAT(APINT_TYPE_PREFIX, 17847) +HANDLE_BAT(APINT_TYPE_PREFIX, 17848) +HANDLE_BAT(APINT_TYPE_PREFIX, 17849) +HANDLE_BAT(APINT_TYPE_PREFIX, 17850) +HANDLE_BAT(APINT_TYPE_PREFIX, 17851) +HANDLE_BAT(APINT_TYPE_PREFIX, 17852) +HANDLE_BAT(APINT_TYPE_PREFIX, 17853) +HANDLE_BAT(APINT_TYPE_PREFIX, 17854) +HANDLE_BAT(APINT_TYPE_PREFIX, 17855) +HANDLE_BAT(APINT_TYPE_PREFIX, 17856) +HANDLE_BAT(APINT_TYPE_PREFIX, 17857) +HANDLE_BAT(APINT_TYPE_PREFIX, 17858) +HANDLE_BAT(APINT_TYPE_PREFIX, 17859) +HANDLE_BAT(APINT_TYPE_PREFIX, 17860) +HANDLE_BAT(APINT_TYPE_PREFIX, 17861) +HANDLE_BAT(APINT_TYPE_PREFIX, 17862) +HANDLE_BAT(APINT_TYPE_PREFIX, 17863) +HANDLE_BAT(APINT_TYPE_PREFIX, 17864) +HANDLE_BAT(APINT_TYPE_PREFIX, 17865) +HANDLE_BAT(APINT_TYPE_PREFIX, 17866) +HANDLE_BAT(APINT_TYPE_PREFIX, 17867) +HANDLE_BAT(APINT_TYPE_PREFIX, 17868) +HANDLE_BAT(APINT_TYPE_PREFIX, 17869) +HANDLE_BAT(APINT_TYPE_PREFIX, 17870) +HANDLE_BAT(APINT_TYPE_PREFIX, 17871) +HANDLE_BAT(APINT_TYPE_PREFIX, 17872) +HANDLE_BAT(APINT_TYPE_PREFIX, 17873) +HANDLE_BAT(APINT_TYPE_PREFIX, 17874) +HANDLE_BAT(APINT_TYPE_PREFIX, 17875) +HANDLE_BAT(APINT_TYPE_PREFIX, 17876) +HANDLE_BAT(APINT_TYPE_PREFIX, 17877) +HANDLE_BAT(APINT_TYPE_PREFIX, 17878) +HANDLE_BAT(APINT_TYPE_PREFIX, 17879) +HANDLE_BAT(APINT_TYPE_PREFIX, 17880) +HANDLE_BAT(APINT_TYPE_PREFIX, 17881) +HANDLE_BAT(APINT_TYPE_PREFIX, 17882) +HANDLE_BAT(APINT_TYPE_PREFIX, 17883) +HANDLE_BAT(APINT_TYPE_PREFIX, 17884) +HANDLE_BAT(APINT_TYPE_PREFIX, 17885) +HANDLE_BAT(APINT_TYPE_PREFIX, 17886) +HANDLE_BAT(APINT_TYPE_PREFIX, 17887) +HANDLE_BAT(APINT_TYPE_PREFIX, 17888) +HANDLE_BAT(APINT_TYPE_PREFIX, 17889) +HANDLE_BAT(APINT_TYPE_PREFIX, 17890) +HANDLE_BAT(APINT_TYPE_PREFIX, 17891) +HANDLE_BAT(APINT_TYPE_PREFIX, 17892) +HANDLE_BAT(APINT_TYPE_PREFIX, 17893) +HANDLE_BAT(APINT_TYPE_PREFIX, 17894) +HANDLE_BAT(APINT_TYPE_PREFIX, 17895) +HANDLE_BAT(APINT_TYPE_PREFIX, 17896) +HANDLE_BAT(APINT_TYPE_PREFIX, 17897) +HANDLE_BAT(APINT_TYPE_PREFIX, 17898) +HANDLE_BAT(APINT_TYPE_PREFIX, 17899) +HANDLE_BAT(APINT_TYPE_PREFIX, 17900) +HANDLE_BAT(APINT_TYPE_PREFIX, 17901) +HANDLE_BAT(APINT_TYPE_PREFIX, 17902) +HANDLE_BAT(APINT_TYPE_PREFIX, 17903) +HANDLE_BAT(APINT_TYPE_PREFIX, 17904) +HANDLE_BAT(APINT_TYPE_PREFIX, 17905) +HANDLE_BAT(APINT_TYPE_PREFIX, 17906) +HANDLE_BAT(APINT_TYPE_PREFIX, 17907) +HANDLE_BAT(APINT_TYPE_PREFIX, 17908) +HANDLE_BAT(APINT_TYPE_PREFIX, 17909) +HANDLE_BAT(APINT_TYPE_PREFIX, 17910) +HANDLE_BAT(APINT_TYPE_PREFIX, 17911) +HANDLE_BAT(APINT_TYPE_PREFIX, 17912) +HANDLE_BAT(APINT_TYPE_PREFIX, 17913) +HANDLE_BAT(APINT_TYPE_PREFIX, 17914) +HANDLE_BAT(APINT_TYPE_PREFIX, 17915) +HANDLE_BAT(APINT_TYPE_PREFIX, 17916) +HANDLE_BAT(APINT_TYPE_PREFIX, 17917) +HANDLE_BAT(APINT_TYPE_PREFIX, 17918) +HANDLE_BAT(APINT_TYPE_PREFIX, 17919) +HANDLE_BAT(APINT_TYPE_PREFIX, 17920) +HANDLE_BAT(APINT_TYPE_PREFIX, 17921) +HANDLE_BAT(APINT_TYPE_PREFIX, 17922) +HANDLE_BAT(APINT_TYPE_PREFIX, 17923) +HANDLE_BAT(APINT_TYPE_PREFIX, 17924) +HANDLE_BAT(APINT_TYPE_PREFIX, 17925) +HANDLE_BAT(APINT_TYPE_PREFIX, 17926) +HANDLE_BAT(APINT_TYPE_PREFIX, 17927) +HANDLE_BAT(APINT_TYPE_PREFIX, 17928) +HANDLE_BAT(APINT_TYPE_PREFIX, 17929) +HANDLE_BAT(APINT_TYPE_PREFIX, 17930) +HANDLE_BAT(APINT_TYPE_PREFIX, 17931) +HANDLE_BAT(APINT_TYPE_PREFIX, 17932) +HANDLE_BAT(APINT_TYPE_PREFIX, 17933) +HANDLE_BAT(APINT_TYPE_PREFIX, 17934) +HANDLE_BAT(APINT_TYPE_PREFIX, 17935) +HANDLE_BAT(APINT_TYPE_PREFIX, 17936) +HANDLE_BAT(APINT_TYPE_PREFIX, 17937) +HANDLE_BAT(APINT_TYPE_PREFIX, 17938) +HANDLE_BAT(APINT_TYPE_PREFIX, 17939) +HANDLE_BAT(APINT_TYPE_PREFIX, 17940) +HANDLE_BAT(APINT_TYPE_PREFIX, 17941) +HANDLE_BAT(APINT_TYPE_PREFIX, 17942) +HANDLE_BAT(APINT_TYPE_PREFIX, 17943) +HANDLE_BAT(APINT_TYPE_PREFIX, 17944) +HANDLE_BAT(APINT_TYPE_PREFIX, 17945) +HANDLE_BAT(APINT_TYPE_PREFIX, 17946) +HANDLE_BAT(APINT_TYPE_PREFIX, 17947) +HANDLE_BAT(APINT_TYPE_PREFIX, 17948) +HANDLE_BAT(APINT_TYPE_PREFIX, 17949) +HANDLE_BAT(APINT_TYPE_PREFIX, 17950) +HANDLE_BAT(APINT_TYPE_PREFIX, 17951) +HANDLE_BAT(APINT_TYPE_PREFIX, 17952) +HANDLE_BAT(APINT_TYPE_PREFIX, 17953) +HANDLE_BAT(APINT_TYPE_PREFIX, 17954) +HANDLE_BAT(APINT_TYPE_PREFIX, 17955) +HANDLE_BAT(APINT_TYPE_PREFIX, 17956) +HANDLE_BAT(APINT_TYPE_PREFIX, 17957) +HANDLE_BAT(APINT_TYPE_PREFIX, 17958) +HANDLE_BAT(APINT_TYPE_PREFIX, 17959) +HANDLE_BAT(APINT_TYPE_PREFIX, 17960) +HANDLE_BAT(APINT_TYPE_PREFIX, 17961) +HANDLE_BAT(APINT_TYPE_PREFIX, 17962) +HANDLE_BAT(APINT_TYPE_PREFIX, 17963) +HANDLE_BAT(APINT_TYPE_PREFIX, 17964) +HANDLE_BAT(APINT_TYPE_PREFIX, 17965) +HANDLE_BAT(APINT_TYPE_PREFIX, 17966) +HANDLE_BAT(APINT_TYPE_PREFIX, 17967) +HANDLE_BAT(APINT_TYPE_PREFIX, 17968) +HANDLE_BAT(APINT_TYPE_PREFIX, 17969) +HANDLE_BAT(APINT_TYPE_PREFIX, 17970) +HANDLE_BAT(APINT_TYPE_PREFIX, 17971) +HANDLE_BAT(APINT_TYPE_PREFIX, 17972) +HANDLE_BAT(APINT_TYPE_PREFIX, 17973) +HANDLE_BAT(APINT_TYPE_PREFIX, 17974) +HANDLE_BAT(APINT_TYPE_PREFIX, 17975) +HANDLE_BAT(APINT_TYPE_PREFIX, 17976) +HANDLE_BAT(APINT_TYPE_PREFIX, 17977) +HANDLE_BAT(APINT_TYPE_PREFIX, 17978) +HANDLE_BAT(APINT_TYPE_PREFIX, 17979) +HANDLE_BAT(APINT_TYPE_PREFIX, 17980) +HANDLE_BAT(APINT_TYPE_PREFIX, 17981) +HANDLE_BAT(APINT_TYPE_PREFIX, 17982) +HANDLE_BAT(APINT_TYPE_PREFIX, 17983) +HANDLE_BAT(APINT_TYPE_PREFIX, 17984) +HANDLE_BAT(APINT_TYPE_PREFIX, 17985) +HANDLE_BAT(APINT_TYPE_PREFIX, 17986) +HANDLE_BAT(APINT_TYPE_PREFIX, 17987) +HANDLE_BAT(APINT_TYPE_PREFIX, 17988) +HANDLE_BAT(APINT_TYPE_PREFIX, 17989) +HANDLE_BAT(APINT_TYPE_PREFIX, 17990) +HANDLE_BAT(APINT_TYPE_PREFIX, 17991) +HANDLE_BAT(APINT_TYPE_PREFIX, 17992) +HANDLE_BAT(APINT_TYPE_PREFIX, 17993) +HANDLE_BAT(APINT_TYPE_PREFIX, 17994) +HANDLE_BAT(APINT_TYPE_PREFIX, 17995) +HANDLE_BAT(APINT_TYPE_PREFIX, 17996) +HANDLE_BAT(APINT_TYPE_PREFIX, 17997) +HANDLE_BAT(APINT_TYPE_PREFIX, 17998) +HANDLE_BAT(APINT_TYPE_PREFIX, 17999) +HANDLE_BAT(APINT_TYPE_PREFIX, 18000) +HANDLE_BAT(APINT_TYPE_PREFIX, 18001) +HANDLE_BAT(APINT_TYPE_PREFIX, 18002) +HANDLE_BAT(APINT_TYPE_PREFIX, 18003) +HANDLE_BAT(APINT_TYPE_PREFIX, 18004) +HANDLE_BAT(APINT_TYPE_PREFIX, 18005) +HANDLE_BAT(APINT_TYPE_PREFIX, 18006) +HANDLE_BAT(APINT_TYPE_PREFIX, 18007) +HANDLE_BAT(APINT_TYPE_PREFIX, 18008) +HANDLE_BAT(APINT_TYPE_PREFIX, 18009) +HANDLE_BAT(APINT_TYPE_PREFIX, 18010) +HANDLE_BAT(APINT_TYPE_PREFIX, 18011) +HANDLE_BAT(APINT_TYPE_PREFIX, 18012) +HANDLE_BAT(APINT_TYPE_PREFIX, 18013) +HANDLE_BAT(APINT_TYPE_PREFIX, 18014) +HANDLE_BAT(APINT_TYPE_PREFIX, 18015) +HANDLE_BAT(APINT_TYPE_PREFIX, 18016) +HANDLE_BAT(APINT_TYPE_PREFIX, 18017) +HANDLE_BAT(APINT_TYPE_PREFIX, 18018) +HANDLE_BAT(APINT_TYPE_PREFIX, 18019) +HANDLE_BAT(APINT_TYPE_PREFIX, 18020) +HANDLE_BAT(APINT_TYPE_PREFIX, 18021) +HANDLE_BAT(APINT_TYPE_PREFIX, 18022) +HANDLE_BAT(APINT_TYPE_PREFIX, 18023) +HANDLE_BAT(APINT_TYPE_PREFIX, 18024) +HANDLE_BAT(APINT_TYPE_PREFIX, 18025) +HANDLE_BAT(APINT_TYPE_PREFIX, 18026) +HANDLE_BAT(APINT_TYPE_PREFIX, 18027) +HANDLE_BAT(APINT_TYPE_PREFIX, 18028) +HANDLE_BAT(APINT_TYPE_PREFIX, 18029) +HANDLE_BAT(APINT_TYPE_PREFIX, 18030) +HANDLE_BAT(APINT_TYPE_PREFIX, 18031) +HANDLE_BAT(APINT_TYPE_PREFIX, 18032) +HANDLE_BAT(APINT_TYPE_PREFIX, 18033) +HANDLE_BAT(APINT_TYPE_PREFIX, 18034) +HANDLE_BAT(APINT_TYPE_PREFIX, 18035) +HANDLE_BAT(APINT_TYPE_PREFIX, 18036) +HANDLE_BAT(APINT_TYPE_PREFIX, 18037) +HANDLE_BAT(APINT_TYPE_PREFIX, 18038) +HANDLE_BAT(APINT_TYPE_PREFIX, 18039) +HANDLE_BAT(APINT_TYPE_PREFIX, 18040) +HANDLE_BAT(APINT_TYPE_PREFIX, 18041) +HANDLE_BAT(APINT_TYPE_PREFIX, 18042) +HANDLE_BAT(APINT_TYPE_PREFIX, 18043) +HANDLE_BAT(APINT_TYPE_PREFIX, 18044) +HANDLE_BAT(APINT_TYPE_PREFIX, 18045) +HANDLE_BAT(APINT_TYPE_PREFIX, 18046) +HANDLE_BAT(APINT_TYPE_PREFIX, 18047) +HANDLE_BAT(APINT_TYPE_PREFIX, 18048) +HANDLE_BAT(APINT_TYPE_PREFIX, 18049) +HANDLE_BAT(APINT_TYPE_PREFIX, 18050) +HANDLE_BAT(APINT_TYPE_PREFIX, 18051) +HANDLE_BAT(APINT_TYPE_PREFIX, 18052) +HANDLE_BAT(APINT_TYPE_PREFIX, 18053) +HANDLE_BAT(APINT_TYPE_PREFIX, 18054) +HANDLE_BAT(APINT_TYPE_PREFIX, 18055) +HANDLE_BAT(APINT_TYPE_PREFIX, 18056) +HANDLE_BAT(APINT_TYPE_PREFIX, 18057) +HANDLE_BAT(APINT_TYPE_PREFIX, 18058) +HANDLE_BAT(APINT_TYPE_PREFIX, 18059) +HANDLE_BAT(APINT_TYPE_PREFIX, 18060) +HANDLE_BAT(APINT_TYPE_PREFIX, 18061) +HANDLE_BAT(APINT_TYPE_PREFIX, 18062) +HANDLE_BAT(APINT_TYPE_PREFIX, 18063) +HANDLE_BAT(APINT_TYPE_PREFIX, 18064) +HANDLE_BAT(APINT_TYPE_PREFIX, 18065) +HANDLE_BAT(APINT_TYPE_PREFIX, 18066) +HANDLE_BAT(APINT_TYPE_PREFIX, 18067) +HANDLE_BAT(APINT_TYPE_PREFIX, 18068) +HANDLE_BAT(APINT_TYPE_PREFIX, 18069) +HANDLE_BAT(APINT_TYPE_PREFIX, 18070) +HANDLE_BAT(APINT_TYPE_PREFIX, 18071) +HANDLE_BAT(APINT_TYPE_PREFIX, 18072) +HANDLE_BAT(APINT_TYPE_PREFIX, 18073) +HANDLE_BAT(APINT_TYPE_PREFIX, 18074) +HANDLE_BAT(APINT_TYPE_PREFIX, 18075) +HANDLE_BAT(APINT_TYPE_PREFIX, 18076) +HANDLE_BAT(APINT_TYPE_PREFIX, 18077) +HANDLE_BAT(APINT_TYPE_PREFIX, 18078) +HANDLE_BAT(APINT_TYPE_PREFIX, 18079) +HANDLE_BAT(APINT_TYPE_PREFIX, 18080) +HANDLE_BAT(APINT_TYPE_PREFIX, 18081) +HANDLE_BAT(APINT_TYPE_PREFIX, 18082) +HANDLE_BAT(APINT_TYPE_PREFIX, 18083) +HANDLE_BAT(APINT_TYPE_PREFIX, 18084) +HANDLE_BAT(APINT_TYPE_PREFIX, 18085) +HANDLE_BAT(APINT_TYPE_PREFIX, 18086) +HANDLE_BAT(APINT_TYPE_PREFIX, 18087) +HANDLE_BAT(APINT_TYPE_PREFIX, 18088) +HANDLE_BAT(APINT_TYPE_PREFIX, 18089) +HANDLE_BAT(APINT_TYPE_PREFIX, 18090) +HANDLE_BAT(APINT_TYPE_PREFIX, 18091) +HANDLE_BAT(APINT_TYPE_PREFIX, 18092) +HANDLE_BAT(APINT_TYPE_PREFIX, 18093) +HANDLE_BAT(APINT_TYPE_PREFIX, 18094) +HANDLE_BAT(APINT_TYPE_PREFIX, 18095) +HANDLE_BAT(APINT_TYPE_PREFIX, 18096) +HANDLE_BAT(APINT_TYPE_PREFIX, 18097) +HANDLE_BAT(APINT_TYPE_PREFIX, 18098) +HANDLE_BAT(APINT_TYPE_PREFIX, 18099) +HANDLE_BAT(APINT_TYPE_PREFIX, 18100) +HANDLE_BAT(APINT_TYPE_PREFIX, 18101) +HANDLE_BAT(APINT_TYPE_PREFIX, 18102) +HANDLE_BAT(APINT_TYPE_PREFIX, 18103) +HANDLE_BAT(APINT_TYPE_PREFIX, 18104) +HANDLE_BAT(APINT_TYPE_PREFIX, 18105) +HANDLE_BAT(APINT_TYPE_PREFIX, 18106) +HANDLE_BAT(APINT_TYPE_PREFIX, 18107) +HANDLE_BAT(APINT_TYPE_PREFIX, 18108) +HANDLE_BAT(APINT_TYPE_PREFIX, 18109) +HANDLE_BAT(APINT_TYPE_PREFIX, 18110) +HANDLE_BAT(APINT_TYPE_PREFIX, 18111) +HANDLE_BAT(APINT_TYPE_PREFIX, 18112) +HANDLE_BAT(APINT_TYPE_PREFIX, 18113) +HANDLE_BAT(APINT_TYPE_PREFIX, 18114) +HANDLE_BAT(APINT_TYPE_PREFIX, 18115) +HANDLE_BAT(APINT_TYPE_PREFIX, 18116) +HANDLE_BAT(APINT_TYPE_PREFIX, 18117) +HANDLE_BAT(APINT_TYPE_PREFIX, 18118) +HANDLE_BAT(APINT_TYPE_PREFIX, 18119) +HANDLE_BAT(APINT_TYPE_PREFIX, 18120) +HANDLE_BAT(APINT_TYPE_PREFIX, 18121) +HANDLE_BAT(APINT_TYPE_PREFIX, 18122) +HANDLE_BAT(APINT_TYPE_PREFIX, 18123) +HANDLE_BAT(APINT_TYPE_PREFIX, 18124) +HANDLE_BAT(APINT_TYPE_PREFIX, 18125) +HANDLE_BAT(APINT_TYPE_PREFIX, 18126) +HANDLE_BAT(APINT_TYPE_PREFIX, 18127) +HANDLE_BAT(APINT_TYPE_PREFIX, 18128) +HANDLE_BAT(APINT_TYPE_PREFIX, 18129) +HANDLE_BAT(APINT_TYPE_PREFIX, 18130) +HANDLE_BAT(APINT_TYPE_PREFIX, 18131) +HANDLE_BAT(APINT_TYPE_PREFIX, 18132) +HANDLE_BAT(APINT_TYPE_PREFIX, 18133) +HANDLE_BAT(APINT_TYPE_PREFIX, 18134) +HANDLE_BAT(APINT_TYPE_PREFIX, 18135) +HANDLE_BAT(APINT_TYPE_PREFIX, 18136) +HANDLE_BAT(APINT_TYPE_PREFIX, 18137) +HANDLE_BAT(APINT_TYPE_PREFIX, 18138) +HANDLE_BAT(APINT_TYPE_PREFIX, 18139) +HANDLE_BAT(APINT_TYPE_PREFIX, 18140) +HANDLE_BAT(APINT_TYPE_PREFIX, 18141) +HANDLE_BAT(APINT_TYPE_PREFIX, 18142) +HANDLE_BAT(APINT_TYPE_PREFIX, 18143) +HANDLE_BAT(APINT_TYPE_PREFIX, 18144) +HANDLE_BAT(APINT_TYPE_PREFIX, 18145) +HANDLE_BAT(APINT_TYPE_PREFIX, 18146) +HANDLE_BAT(APINT_TYPE_PREFIX, 18147) +HANDLE_BAT(APINT_TYPE_PREFIX, 18148) +HANDLE_BAT(APINT_TYPE_PREFIX, 18149) +HANDLE_BAT(APINT_TYPE_PREFIX, 18150) +HANDLE_BAT(APINT_TYPE_PREFIX, 18151) +HANDLE_BAT(APINT_TYPE_PREFIX, 18152) +HANDLE_BAT(APINT_TYPE_PREFIX, 18153) +HANDLE_BAT(APINT_TYPE_PREFIX, 18154) +HANDLE_BAT(APINT_TYPE_PREFIX, 18155) +HANDLE_BAT(APINT_TYPE_PREFIX, 18156) +HANDLE_BAT(APINT_TYPE_PREFIX, 18157) +HANDLE_BAT(APINT_TYPE_PREFIX, 18158) +HANDLE_BAT(APINT_TYPE_PREFIX, 18159) +HANDLE_BAT(APINT_TYPE_PREFIX, 18160) +HANDLE_BAT(APINT_TYPE_PREFIX, 18161) +HANDLE_BAT(APINT_TYPE_PREFIX, 18162) +HANDLE_BAT(APINT_TYPE_PREFIX, 18163) +HANDLE_BAT(APINT_TYPE_PREFIX, 18164) +HANDLE_BAT(APINT_TYPE_PREFIX, 18165) +HANDLE_BAT(APINT_TYPE_PREFIX, 18166) +HANDLE_BAT(APINT_TYPE_PREFIX, 18167) +HANDLE_BAT(APINT_TYPE_PREFIX, 18168) +HANDLE_BAT(APINT_TYPE_PREFIX, 18169) +HANDLE_BAT(APINT_TYPE_PREFIX, 18170) +HANDLE_BAT(APINT_TYPE_PREFIX, 18171) +HANDLE_BAT(APINT_TYPE_PREFIX, 18172) +HANDLE_BAT(APINT_TYPE_PREFIX, 18173) +HANDLE_BAT(APINT_TYPE_PREFIX, 18174) +HANDLE_BAT(APINT_TYPE_PREFIX, 18175) +HANDLE_BAT(APINT_TYPE_PREFIX, 18176) +HANDLE_BAT(APINT_TYPE_PREFIX, 18177) +HANDLE_BAT(APINT_TYPE_PREFIX, 18178) +HANDLE_BAT(APINT_TYPE_PREFIX, 18179) +HANDLE_BAT(APINT_TYPE_PREFIX, 18180) +HANDLE_BAT(APINT_TYPE_PREFIX, 18181) +HANDLE_BAT(APINT_TYPE_PREFIX, 18182) +HANDLE_BAT(APINT_TYPE_PREFIX, 18183) +HANDLE_BAT(APINT_TYPE_PREFIX, 18184) +HANDLE_BAT(APINT_TYPE_PREFIX, 18185) +HANDLE_BAT(APINT_TYPE_PREFIX, 18186) +HANDLE_BAT(APINT_TYPE_PREFIX, 18187) +HANDLE_BAT(APINT_TYPE_PREFIX, 18188) +HANDLE_BAT(APINT_TYPE_PREFIX, 18189) +HANDLE_BAT(APINT_TYPE_PREFIX, 18190) +HANDLE_BAT(APINT_TYPE_PREFIX, 18191) +HANDLE_BAT(APINT_TYPE_PREFIX, 18192) +HANDLE_BAT(APINT_TYPE_PREFIX, 18193) +HANDLE_BAT(APINT_TYPE_PREFIX, 18194) +HANDLE_BAT(APINT_TYPE_PREFIX, 18195) +HANDLE_BAT(APINT_TYPE_PREFIX, 18196) +HANDLE_BAT(APINT_TYPE_PREFIX, 18197) +HANDLE_BAT(APINT_TYPE_PREFIX, 18198) +HANDLE_BAT(APINT_TYPE_PREFIX, 18199) +HANDLE_BAT(APINT_TYPE_PREFIX, 18200) +HANDLE_BAT(APINT_TYPE_PREFIX, 18201) +HANDLE_BAT(APINT_TYPE_PREFIX, 18202) +HANDLE_BAT(APINT_TYPE_PREFIX, 18203) +HANDLE_BAT(APINT_TYPE_PREFIX, 18204) +HANDLE_BAT(APINT_TYPE_PREFIX, 18205) +HANDLE_BAT(APINT_TYPE_PREFIX, 18206) +HANDLE_BAT(APINT_TYPE_PREFIX, 18207) +HANDLE_BAT(APINT_TYPE_PREFIX, 18208) +HANDLE_BAT(APINT_TYPE_PREFIX, 18209) +HANDLE_BAT(APINT_TYPE_PREFIX, 18210) +HANDLE_BAT(APINT_TYPE_PREFIX, 18211) +HANDLE_BAT(APINT_TYPE_PREFIX, 18212) +HANDLE_BAT(APINT_TYPE_PREFIX, 18213) +HANDLE_BAT(APINT_TYPE_PREFIX, 18214) +HANDLE_BAT(APINT_TYPE_PREFIX, 18215) +HANDLE_BAT(APINT_TYPE_PREFIX, 18216) +HANDLE_BAT(APINT_TYPE_PREFIX, 18217) +HANDLE_BAT(APINT_TYPE_PREFIX, 18218) +HANDLE_BAT(APINT_TYPE_PREFIX, 18219) +HANDLE_BAT(APINT_TYPE_PREFIX, 18220) +HANDLE_BAT(APINT_TYPE_PREFIX, 18221) +HANDLE_BAT(APINT_TYPE_PREFIX, 18222) +HANDLE_BAT(APINT_TYPE_PREFIX, 18223) +HANDLE_BAT(APINT_TYPE_PREFIX, 18224) +HANDLE_BAT(APINT_TYPE_PREFIX, 18225) +HANDLE_BAT(APINT_TYPE_PREFIX, 18226) +HANDLE_BAT(APINT_TYPE_PREFIX, 18227) +HANDLE_BAT(APINT_TYPE_PREFIX, 18228) +HANDLE_BAT(APINT_TYPE_PREFIX, 18229) +HANDLE_BAT(APINT_TYPE_PREFIX, 18230) +HANDLE_BAT(APINT_TYPE_PREFIX, 18231) +HANDLE_BAT(APINT_TYPE_PREFIX, 18232) +HANDLE_BAT(APINT_TYPE_PREFIX, 18233) +HANDLE_BAT(APINT_TYPE_PREFIX, 18234) +HANDLE_BAT(APINT_TYPE_PREFIX, 18235) +HANDLE_BAT(APINT_TYPE_PREFIX, 18236) +HANDLE_BAT(APINT_TYPE_PREFIX, 18237) +HANDLE_BAT(APINT_TYPE_PREFIX, 18238) +HANDLE_BAT(APINT_TYPE_PREFIX, 18239) +HANDLE_BAT(APINT_TYPE_PREFIX, 18240) +HANDLE_BAT(APINT_TYPE_PREFIX, 18241) +HANDLE_BAT(APINT_TYPE_PREFIX, 18242) +HANDLE_BAT(APINT_TYPE_PREFIX, 18243) +HANDLE_BAT(APINT_TYPE_PREFIX, 18244) +HANDLE_BAT(APINT_TYPE_PREFIX, 18245) +HANDLE_BAT(APINT_TYPE_PREFIX, 18246) +HANDLE_BAT(APINT_TYPE_PREFIX, 18247) +HANDLE_BAT(APINT_TYPE_PREFIX, 18248) +HANDLE_BAT(APINT_TYPE_PREFIX, 18249) +HANDLE_BAT(APINT_TYPE_PREFIX, 18250) +HANDLE_BAT(APINT_TYPE_PREFIX, 18251) +HANDLE_BAT(APINT_TYPE_PREFIX, 18252) +HANDLE_BAT(APINT_TYPE_PREFIX, 18253) +HANDLE_BAT(APINT_TYPE_PREFIX, 18254) +HANDLE_BAT(APINT_TYPE_PREFIX, 18255) +HANDLE_BAT(APINT_TYPE_PREFIX, 18256) +HANDLE_BAT(APINT_TYPE_PREFIX, 18257) +HANDLE_BAT(APINT_TYPE_PREFIX, 18258) +HANDLE_BAT(APINT_TYPE_PREFIX, 18259) +HANDLE_BAT(APINT_TYPE_PREFIX, 18260) +HANDLE_BAT(APINT_TYPE_PREFIX, 18261) +HANDLE_BAT(APINT_TYPE_PREFIX, 18262) +HANDLE_BAT(APINT_TYPE_PREFIX, 18263) +HANDLE_BAT(APINT_TYPE_PREFIX, 18264) +HANDLE_BAT(APINT_TYPE_PREFIX, 18265) +HANDLE_BAT(APINT_TYPE_PREFIX, 18266) +HANDLE_BAT(APINT_TYPE_PREFIX, 18267) +HANDLE_BAT(APINT_TYPE_PREFIX, 18268) +HANDLE_BAT(APINT_TYPE_PREFIX, 18269) +HANDLE_BAT(APINT_TYPE_PREFIX, 18270) +HANDLE_BAT(APINT_TYPE_PREFIX, 18271) +HANDLE_BAT(APINT_TYPE_PREFIX, 18272) +HANDLE_BAT(APINT_TYPE_PREFIX, 18273) +HANDLE_BAT(APINT_TYPE_PREFIX, 18274) +HANDLE_BAT(APINT_TYPE_PREFIX, 18275) +HANDLE_BAT(APINT_TYPE_PREFIX, 18276) +HANDLE_BAT(APINT_TYPE_PREFIX, 18277) +HANDLE_BAT(APINT_TYPE_PREFIX, 18278) +HANDLE_BAT(APINT_TYPE_PREFIX, 18279) +HANDLE_BAT(APINT_TYPE_PREFIX, 18280) +HANDLE_BAT(APINT_TYPE_PREFIX, 18281) +HANDLE_BAT(APINT_TYPE_PREFIX, 18282) +HANDLE_BAT(APINT_TYPE_PREFIX, 18283) +HANDLE_BAT(APINT_TYPE_PREFIX, 18284) +HANDLE_BAT(APINT_TYPE_PREFIX, 18285) +HANDLE_BAT(APINT_TYPE_PREFIX, 18286) +HANDLE_BAT(APINT_TYPE_PREFIX, 18287) +HANDLE_BAT(APINT_TYPE_PREFIX, 18288) +HANDLE_BAT(APINT_TYPE_PREFIX, 18289) +HANDLE_BAT(APINT_TYPE_PREFIX, 18290) +HANDLE_BAT(APINT_TYPE_PREFIX, 18291) +HANDLE_BAT(APINT_TYPE_PREFIX, 18292) +HANDLE_BAT(APINT_TYPE_PREFIX, 18293) +HANDLE_BAT(APINT_TYPE_PREFIX, 18294) +HANDLE_BAT(APINT_TYPE_PREFIX, 18295) +HANDLE_BAT(APINT_TYPE_PREFIX, 18296) +HANDLE_BAT(APINT_TYPE_PREFIX, 18297) +HANDLE_BAT(APINT_TYPE_PREFIX, 18298) +HANDLE_BAT(APINT_TYPE_PREFIX, 18299) +HANDLE_BAT(APINT_TYPE_PREFIX, 18300) +HANDLE_BAT(APINT_TYPE_PREFIX, 18301) +HANDLE_BAT(APINT_TYPE_PREFIX, 18302) +HANDLE_BAT(APINT_TYPE_PREFIX, 18303) +HANDLE_BAT(APINT_TYPE_PREFIX, 18304) +HANDLE_BAT(APINT_TYPE_PREFIX, 18305) +HANDLE_BAT(APINT_TYPE_PREFIX, 18306) +HANDLE_BAT(APINT_TYPE_PREFIX, 18307) +HANDLE_BAT(APINT_TYPE_PREFIX, 18308) +HANDLE_BAT(APINT_TYPE_PREFIX, 18309) +HANDLE_BAT(APINT_TYPE_PREFIX, 18310) +HANDLE_BAT(APINT_TYPE_PREFIX, 18311) +HANDLE_BAT(APINT_TYPE_PREFIX, 18312) +HANDLE_BAT(APINT_TYPE_PREFIX, 18313) +HANDLE_BAT(APINT_TYPE_PREFIX, 18314) +HANDLE_BAT(APINT_TYPE_PREFIX, 18315) +HANDLE_BAT(APINT_TYPE_PREFIX, 18316) +HANDLE_BAT(APINT_TYPE_PREFIX, 18317) +HANDLE_BAT(APINT_TYPE_PREFIX, 18318) +HANDLE_BAT(APINT_TYPE_PREFIX, 18319) +HANDLE_BAT(APINT_TYPE_PREFIX, 18320) +HANDLE_BAT(APINT_TYPE_PREFIX, 18321) +HANDLE_BAT(APINT_TYPE_PREFIX, 18322) +HANDLE_BAT(APINT_TYPE_PREFIX, 18323) +HANDLE_BAT(APINT_TYPE_PREFIX, 18324) +HANDLE_BAT(APINT_TYPE_PREFIX, 18325) +HANDLE_BAT(APINT_TYPE_PREFIX, 18326) +HANDLE_BAT(APINT_TYPE_PREFIX, 18327) +HANDLE_BAT(APINT_TYPE_PREFIX, 18328) +HANDLE_BAT(APINT_TYPE_PREFIX, 18329) +HANDLE_BAT(APINT_TYPE_PREFIX, 18330) +HANDLE_BAT(APINT_TYPE_PREFIX, 18331) +HANDLE_BAT(APINT_TYPE_PREFIX, 18332) +HANDLE_BAT(APINT_TYPE_PREFIX, 18333) +HANDLE_BAT(APINT_TYPE_PREFIX, 18334) +HANDLE_BAT(APINT_TYPE_PREFIX, 18335) +HANDLE_BAT(APINT_TYPE_PREFIX, 18336) +HANDLE_BAT(APINT_TYPE_PREFIX, 18337) +HANDLE_BAT(APINT_TYPE_PREFIX, 18338) +HANDLE_BAT(APINT_TYPE_PREFIX, 18339) +HANDLE_BAT(APINT_TYPE_PREFIX, 18340) +HANDLE_BAT(APINT_TYPE_PREFIX, 18341) +HANDLE_BAT(APINT_TYPE_PREFIX, 18342) +HANDLE_BAT(APINT_TYPE_PREFIX, 18343) +HANDLE_BAT(APINT_TYPE_PREFIX, 18344) +HANDLE_BAT(APINT_TYPE_PREFIX, 18345) +HANDLE_BAT(APINT_TYPE_PREFIX, 18346) +HANDLE_BAT(APINT_TYPE_PREFIX, 18347) +HANDLE_BAT(APINT_TYPE_PREFIX, 18348) +HANDLE_BAT(APINT_TYPE_PREFIX, 18349) +HANDLE_BAT(APINT_TYPE_PREFIX, 18350) +HANDLE_BAT(APINT_TYPE_PREFIX, 18351) +HANDLE_BAT(APINT_TYPE_PREFIX, 18352) +HANDLE_BAT(APINT_TYPE_PREFIX, 18353) +HANDLE_BAT(APINT_TYPE_PREFIX, 18354) +HANDLE_BAT(APINT_TYPE_PREFIX, 18355) +HANDLE_BAT(APINT_TYPE_PREFIX, 18356) +HANDLE_BAT(APINT_TYPE_PREFIX, 18357) +HANDLE_BAT(APINT_TYPE_PREFIX, 18358) +HANDLE_BAT(APINT_TYPE_PREFIX, 18359) +HANDLE_BAT(APINT_TYPE_PREFIX, 18360) +HANDLE_BAT(APINT_TYPE_PREFIX, 18361) +HANDLE_BAT(APINT_TYPE_PREFIX, 18362) +HANDLE_BAT(APINT_TYPE_PREFIX, 18363) +HANDLE_BAT(APINT_TYPE_PREFIX, 18364) +HANDLE_BAT(APINT_TYPE_PREFIX, 18365) +HANDLE_BAT(APINT_TYPE_PREFIX, 18366) +HANDLE_BAT(APINT_TYPE_PREFIX, 18367) +HANDLE_BAT(APINT_TYPE_PREFIX, 18368) +HANDLE_BAT(APINT_TYPE_PREFIX, 18369) +HANDLE_BAT(APINT_TYPE_PREFIX, 18370) +HANDLE_BAT(APINT_TYPE_PREFIX, 18371) +HANDLE_BAT(APINT_TYPE_PREFIX, 18372) +HANDLE_BAT(APINT_TYPE_PREFIX, 18373) +HANDLE_BAT(APINT_TYPE_PREFIX, 18374) +HANDLE_BAT(APINT_TYPE_PREFIX, 18375) +HANDLE_BAT(APINT_TYPE_PREFIX, 18376) +HANDLE_BAT(APINT_TYPE_PREFIX, 18377) +HANDLE_BAT(APINT_TYPE_PREFIX, 18378) +HANDLE_BAT(APINT_TYPE_PREFIX, 18379) +HANDLE_BAT(APINT_TYPE_PREFIX, 18380) +HANDLE_BAT(APINT_TYPE_PREFIX, 18381) +HANDLE_BAT(APINT_TYPE_PREFIX, 18382) +HANDLE_BAT(APINT_TYPE_PREFIX, 18383) +HANDLE_BAT(APINT_TYPE_PREFIX, 18384) +HANDLE_BAT(APINT_TYPE_PREFIX, 18385) +HANDLE_BAT(APINT_TYPE_PREFIX, 18386) +HANDLE_BAT(APINT_TYPE_PREFIX, 18387) +HANDLE_BAT(APINT_TYPE_PREFIX, 18388) +HANDLE_BAT(APINT_TYPE_PREFIX, 18389) +HANDLE_BAT(APINT_TYPE_PREFIX, 18390) +HANDLE_BAT(APINT_TYPE_PREFIX, 18391) +HANDLE_BAT(APINT_TYPE_PREFIX, 18392) +HANDLE_BAT(APINT_TYPE_PREFIX, 18393) +HANDLE_BAT(APINT_TYPE_PREFIX, 18394) +HANDLE_BAT(APINT_TYPE_PREFIX, 18395) +HANDLE_BAT(APINT_TYPE_PREFIX, 18396) +HANDLE_BAT(APINT_TYPE_PREFIX, 18397) +HANDLE_BAT(APINT_TYPE_PREFIX, 18398) +HANDLE_BAT(APINT_TYPE_PREFIX, 18399) +HANDLE_BAT(APINT_TYPE_PREFIX, 18400) +HANDLE_BAT(APINT_TYPE_PREFIX, 18401) +HANDLE_BAT(APINT_TYPE_PREFIX, 18402) +HANDLE_BAT(APINT_TYPE_PREFIX, 18403) +HANDLE_BAT(APINT_TYPE_PREFIX, 18404) +HANDLE_BAT(APINT_TYPE_PREFIX, 18405) +HANDLE_BAT(APINT_TYPE_PREFIX, 18406) +HANDLE_BAT(APINT_TYPE_PREFIX, 18407) +HANDLE_BAT(APINT_TYPE_PREFIX, 18408) +HANDLE_BAT(APINT_TYPE_PREFIX, 18409) +HANDLE_BAT(APINT_TYPE_PREFIX, 18410) +HANDLE_BAT(APINT_TYPE_PREFIX, 18411) +HANDLE_BAT(APINT_TYPE_PREFIX, 18412) +HANDLE_BAT(APINT_TYPE_PREFIX, 18413) +HANDLE_BAT(APINT_TYPE_PREFIX, 18414) +HANDLE_BAT(APINT_TYPE_PREFIX, 18415) +HANDLE_BAT(APINT_TYPE_PREFIX, 18416) +HANDLE_BAT(APINT_TYPE_PREFIX, 18417) +HANDLE_BAT(APINT_TYPE_PREFIX, 18418) +HANDLE_BAT(APINT_TYPE_PREFIX, 18419) +HANDLE_BAT(APINT_TYPE_PREFIX, 18420) +HANDLE_BAT(APINT_TYPE_PREFIX, 18421) +HANDLE_BAT(APINT_TYPE_PREFIX, 18422) +HANDLE_BAT(APINT_TYPE_PREFIX, 18423) +HANDLE_BAT(APINT_TYPE_PREFIX, 18424) +HANDLE_BAT(APINT_TYPE_PREFIX, 18425) +HANDLE_BAT(APINT_TYPE_PREFIX, 18426) +HANDLE_BAT(APINT_TYPE_PREFIX, 18427) +HANDLE_BAT(APINT_TYPE_PREFIX, 18428) +HANDLE_BAT(APINT_TYPE_PREFIX, 18429) +HANDLE_BAT(APINT_TYPE_PREFIX, 18430) +HANDLE_BAT(APINT_TYPE_PREFIX, 18431) +HANDLE_BAT(APINT_TYPE_PREFIX, 18432) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 18 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 18433) +HANDLE_BAT(, 18434) +HANDLE_BAT(, 18435) +HANDLE_BAT(, 18436) +HANDLE_BAT(, 18437) +HANDLE_BAT(, 18438) +HANDLE_BAT(, 18439) +HANDLE_BAT(, 18440) +HANDLE_BAT(, 18441) +HANDLE_BAT(, 18442) +HANDLE_BAT(, 18443) +HANDLE_BAT(, 18444) +HANDLE_BAT(, 18445) +HANDLE_BAT(, 18446) +HANDLE_BAT(, 18447) +HANDLE_BAT(, 18448) +HANDLE_BAT(, 18449) +HANDLE_BAT(, 18450) +HANDLE_BAT(, 18451) +HANDLE_BAT(, 18452) +HANDLE_BAT(, 18453) +HANDLE_BAT(, 18454) +HANDLE_BAT(, 18455) +HANDLE_BAT(, 18456) +HANDLE_BAT(, 18457) +HANDLE_BAT(, 18458) +HANDLE_BAT(, 18459) +HANDLE_BAT(, 18460) +HANDLE_BAT(, 18461) +HANDLE_BAT(, 18462) +HANDLE_BAT(, 18463) +HANDLE_BAT(, 18464) +HANDLE_BAT(, 18465) +HANDLE_BAT(, 18466) +HANDLE_BAT(, 18467) +HANDLE_BAT(, 18468) +HANDLE_BAT(, 18469) +HANDLE_BAT(, 18470) +HANDLE_BAT(, 18471) +HANDLE_BAT(, 18472) +HANDLE_BAT(, 18473) +HANDLE_BAT(, 18474) +HANDLE_BAT(, 18475) +HANDLE_BAT(, 18476) +HANDLE_BAT(, 18477) +HANDLE_BAT(, 18478) +HANDLE_BAT(, 18479) +HANDLE_BAT(, 18480) +HANDLE_BAT(, 18481) +HANDLE_BAT(, 18482) +HANDLE_BAT(, 18483) +HANDLE_BAT(, 18484) +HANDLE_BAT(, 18485) +HANDLE_BAT(, 18486) +HANDLE_BAT(, 18487) +HANDLE_BAT(, 18488) +HANDLE_BAT(, 18489) +HANDLE_BAT(, 18490) +HANDLE_BAT(, 18491) +HANDLE_BAT(, 18492) +HANDLE_BAT(, 18493) +HANDLE_BAT(, 18494) +HANDLE_BAT(, 18495) +HANDLE_BAT(, 18496) +HANDLE_BAT(, 18497) +HANDLE_BAT(, 18498) +HANDLE_BAT(, 18499) +HANDLE_BAT(, 18500) +HANDLE_BAT(, 18501) +HANDLE_BAT(, 18502) +HANDLE_BAT(, 18503) +HANDLE_BAT(, 18504) +HANDLE_BAT(, 18505) +HANDLE_BAT(, 18506) +HANDLE_BAT(, 18507) +HANDLE_BAT(, 18508) +HANDLE_BAT(, 18509) +HANDLE_BAT(, 18510) +HANDLE_BAT(, 18511) +HANDLE_BAT(, 18512) +HANDLE_BAT(, 18513) +HANDLE_BAT(, 18514) +HANDLE_BAT(, 18515) +HANDLE_BAT(, 18516) +HANDLE_BAT(, 18517) +HANDLE_BAT(, 18518) +HANDLE_BAT(, 18519) +HANDLE_BAT(, 18520) +HANDLE_BAT(, 18521) +HANDLE_BAT(, 18522) +HANDLE_BAT(, 18523) +HANDLE_BAT(, 18524) +HANDLE_BAT(, 18525) +HANDLE_BAT(, 18526) +HANDLE_BAT(, 18527) +HANDLE_BAT(, 18528) +HANDLE_BAT(, 18529) +HANDLE_BAT(, 18530) +HANDLE_BAT(, 18531) +HANDLE_BAT(, 18532) +HANDLE_BAT(, 18533) +HANDLE_BAT(, 18534) +HANDLE_BAT(, 18535) +HANDLE_BAT(, 18536) +HANDLE_BAT(, 18537) +HANDLE_BAT(, 18538) +HANDLE_BAT(, 18539) +HANDLE_BAT(, 18540) +HANDLE_BAT(, 18541) +HANDLE_BAT(, 18542) +HANDLE_BAT(, 18543) +HANDLE_BAT(, 18544) +HANDLE_BAT(, 18545) +HANDLE_BAT(, 18546) +HANDLE_BAT(, 18547) +HANDLE_BAT(, 18548) +HANDLE_BAT(, 18549) +HANDLE_BAT(, 18550) +HANDLE_BAT(, 18551) +HANDLE_BAT(, 18552) +HANDLE_BAT(, 18553) +HANDLE_BAT(, 18554) +HANDLE_BAT(, 18555) +HANDLE_BAT(, 18556) +HANDLE_BAT(, 18557) +HANDLE_BAT(, 18558) +HANDLE_BAT(, 18559) +HANDLE_BAT(, 18560) +HANDLE_BAT(, 18561) +HANDLE_BAT(, 18562) +HANDLE_BAT(, 18563) +HANDLE_BAT(, 18564) +HANDLE_BAT(, 18565) +HANDLE_BAT(, 18566) +HANDLE_BAT(, 18567) +HANDLE_BAT(, 18568) +HANDLE_BAT(, 18569) +HANDLE_BAT(, 18570) +HANDLE_BAT(, 18571) +HANDLE_BAT(, 18572) +HANDLE_BAT(, 18573) +HANDLE_BAT(, 18574) +HANDLE_BAT(, 18575) +HANDLE_BAT(, 18576) +HANDLE_BAT(, 18577) +HANDLE_BAT(, 18578) +HANDLE_BAT(, 18579) +HANDLE_BAT(, 18580) +HANDLE_BAT(, 18581) +HANDLE_BAT(, 18582) +HANDLE_BAT(, 18583) +HANDLE_BAT(, 18584) +HANDLE_BAT(, 18585) +HANDLE_BAT(, 18586) +HANDLE_BAT(, 18587) +HANDLE_BAT(, 18588) +HANDLE_BAT(, 18589) +HANDLE_BAT(, 18590) +HANDLE_BAT(, 18591) +HANDLE_BAT(, 18592) +HANDLE_BAT(, 18593) +HANDLE_BAT(, 18594) +HANDLE_BAT(, 18595) +HANDLE_BAT(, 18596) +HANDLE_BAT(, 18597) +HANDLE_BAT(, 18598) +HANDLE_BAT(, 18599) +HANDLE_BAT(, 18600) +HANDLE_BAT(, 18601) +HANDLE_BAT(, 18602) +HANDLE_BAT(, 18603) +HANDLE_BAT(, 18604) +HANDLE_BAT(, 18605) +HANDLE_BAT(, 18606) +HANDLE_BAT(, 18607) +HANDLE_BAT(, 18608) +HANDLE_BAT(, 18609) +HANDLE_BAT(, 18610) +HANDLE_BAT(, 18611) +HANDLE_BAT(, 18612) +HANDLE_BAT(, 18613) +HANDLE_BAT(, 18614) +HANDLE_BAT(, 18615) +HANDLE_BAT(, 18616) +HANDLE_BAT(, 18617) +HANDLE_BAT(, 18618) +HANDLE_BAT(, 18619) +HANDLE_BAT(, 18620) +HANDLE_BAT(, 18621) +HANDLE_BAT(, 18622) +HANDLE_BAT(, 18623) +HANDLE_BAT(, 18624) +HANDLE_BAT(, 18625) +HANDLE_BAT(, 18626) +HANDLE_BAT(, 18627) +HANDLE_BAT(, 18628) +HANDLE_BAT(, 18629) +HANDLE_BAT(, 18630) +HANDLE_BAT(, 18631) +HANDLE_BAT(, 18632) +HANDLE_BAT(, 18633) +HANDLE_BAT(, 18634) +HANDLE_BAT(, 18635) +HANDLE_BAT(, 18636) +HANDLE_BAT(, 18637) +HANDLE_BAT(, 18638) +HANDLE_BAT(, 18639) +HANDLE_BAT(, 18640) +HANDLE_BAT(, 18641) +HANDLE_BAT(, 18642) +HANDLE_BAT(, 18643) +HANDLE_BAT(, 18644) +HANDLE_BAT(, 18645) +HANDLE_BAT(, 18646) +HANDLE_BAT(, 18647) +HANDLE_BAT(, 18648) +HANDLE_BAT(, 18649) +HANDLE_BAT(, 18650) +HANDLE_BAT(, 18651) +HANDLE_BAT(, 18652) +HANDLE_BAT(, 18653) +HANDLE_BAT(, 18654) +HANDLE_BAT(, 18655) +HANDLE_BAT(, 18656) +HANDLE_BAT(, 18657) +HANDLE_BAT(, 18658) +HANDLE_BAT(, 18659) +HANDLE_BAT(, 18660) +HANDLE_BAT(, 18661) +HANDLE_BAT(, 18662) +HANDLE_BAT(, 18663) +HANDLE_BAT(, 18664) +HANDLE_BAT(, 18665) +HANDLE_BAT(, 18666) +HANDLE_BAT(, 18667) +HANDLE_BAT(, 18668) +HANDLE_BAT(, 18669) +HANDLE_BAT(, 18670) +HANDLE_BAT(, 18671) +HANDLE_BAT(, 18672) +HANDLE_BAT(, 18673) +HANDLE_BAT(, 18674) +HANDLE_BAT(, 18675) +HANDLE_BAT(, 18676) +HANDLE_BAT(, 18677) +HANDLE_BAT(, 18678) +HANDLE_BAT(, 18679) +HANDLE_BAT(, 18680) +HANDLE_BAT(, 18681) +HANDLE_BAT(, 18682) +HANDLE_BAT(, 18683) +HANDLE_BAT(, 18684) +HANDLE_BAT(, 18685) +HANDLE_BAT(, 18686) +HANDLE_BAT(, 18687) +HANDLE_BAT(, 18688) +HANDLE_BAT(, 18689) +HANDLE_BAT(, 18690) +HANDLE_BAT(, 18691) +HANDLE_BAT(, 18692) +HANDLE_BAT(, 18693) +HANDLE_BAT(, 18694) +HANDLE_BAT(, 18695) +HANDLE_BAT(, 18696) +HANDLE_BAT(, 18697) +HANDLE_BAT(, 18698) +HANDLE_BAT(, 18699) +HANDLE_BAT(, 18700) +HANDLE_BAT(, 18701) +HANDLE_BAT(, 18702) +HANDLE_BAT(, 18703) +HANDLE_BAT(, 18704) +HANDLE_BAT(, 18705) +HANDLE_BAT(, 18706) +HANDLE_BAT(, 18707) +HANDLE_BAT(, 18708) +HANDLE_BAT(, 18709) +HANDLE_BAT(, 18710) +HANDLE_BAT(, 18711) +HANDLE_BAT(, 18712) +HANDLE_BAT(, 18713) +HANDLE_BAT(, 18714) +HANDLE_BAT(, 18715) +HANDLE_BAT(, 18716) +HANDLE_BAT(, 18717) +HANDLE_BAT(, 18718) +HANDLE_BAT(, 18719) +HANDLE_BAT(, 18720) +HANDLE_BAT(, 18721) +HANDLE_BAT(, 18722) +HANDLE_BAT(, 18723) +HANDLE_BAT(, 18724) +HANDLE_BAT(, 18725) +HANDLE_BAT(, 18726) +HANDLE_BAT(, 18727) +HANDLE_BAT(, 18728) +HANDLE_BAT(, 18729) +HANDLE_BAT(, 18730) +HANDLE_BAT(, 18731) +HANDLE_BAT(, 18732) +HANDLE_BAT(, 18733) +HANDLE_BAT(, 18734) +HANDLE_BAT(, 18735) +HANDLE_BAT(, 18736) +HANDLE_BAT(, 18737) +HANDLE_BAT(, 18738) +HANDLE_BAT(, 18739) +HANDLE_BAT(, 18740) +HANDLE_BAT(, 18741) +HANDLE_BAT(, 18742) +HANDLE_BAT(, 18743) +HANDLE_BAT(, 18744) +HANDLE_BAT(, 18745) +HANDLE_BAT(, 18746) +HANDLE_BAT(, 18747) +HANDLE_BAT(, 18748) +HANDLE_BAT(, 18749) +HANDLE_BAT(, 18750) +HANDLE_BAT(, 18751) +HANDLE_BAT(, 18752) +HANDLE_BAT(, 18753) +HANDLE_BAT(, 18754) +HANDLE_BAT(, 18755) +HANDLE_BAT(, 18756) +HANDLE_BAT(, 18757) +HANDLE_BAT(, 18758) +HANDLE_BAT(, 18759) +HANDLE_BAT(, 18760) +HANDLE_BAT(, 18761) +HANDLE_BAT(, 18762) +HANDLE_BAT(, 18763) +HANDLE_BAT(, 18764) +HANDLE_BAT(, 18765) +HANDLE_BAT(, 18766) +HANDLE_BAT(, 18767) +HANDLE_BAT(, 18768) +HANDLE_BAT(, 18769) +HANDLE_BAT(, 18770) +HANDLE_BAT(, 18771) +HANDLE_BAT(, 18772) +HANDLE_BAT(, 18773) +HANDLE_BAT(, 18774) +HANDLE_BAT(, 18775) +HANDLE_BAT(, 18776) +HANDLE_BAT(, 18777) +HANDLE_BAT(, 18778) +HANDLE_BAT(, 18779) +HANDLE_BAT(, 18780) +HANDLE_BAT(, 18781) +HANDLE_BAT(, 18782) +HANDLE_BAT(, 18783) +HANDLE_BAT(, 18784) +HANDLE_BAT(, 18785) +HANDLE_BAT(, 18786) +HANDLE_BAT(, 18787) +HANDLE_BAT(, 18788) +HANDLE_BAT(, 18789) +HANDLE_BAT(, 18790) +HANDLE_BAT(, 18791) +HANDLE_BAT(, 18792) +HANDLE_BAT(, 18793) +HANDLE_BAT(, 18794) +HANDLE_BAT(, 18795) +HANDLE_BAT(, 18796) +HANDLE_BAT(, 18797) +HANDLE_BAT(, 18798) +HANDLE_BAT(, 18799) +HANDLE_BAT(, 18800) +HANDLE_BAT(, 18801) +HANDLE_BAT(, 18802) +HANDLE_BAT(, 18803) +HANDLE_BAT(, 18804) +HANDLE_BAT(, 18805) +HANDLE_BAT(, 18806) +HANDLE_BAT(, 18807) +HANDLE_BAT(, 18808) +HANDLE_BAT(, 18809) +HANDLE_BAT(, 18810) +HANDLE_BAT(, 18811) +HANDLE_BAT(, 18812) +HANDLE_BAT(, 18813) +HANDLE_BAT(, 18814) +HANDLE_BAT(, 18815) +HANDLE_BAT(, 18816) +HANDLE_BAT(, 18817) +HANDLE_BAT(, 18818) +HANDLE_BAT(, 18819) +HANDLE_BAT(, 18820) +HANDLE_BAT(, 18821) +HANDLE_BAT(, 18822) +HANDLE_BAT(, 18823) +HANDLE_BAT(, 18824) +HANDLE_BAT(, 18825) +HANDLE_BAT(, 18826) +HANDLE_BAT(, 18827) +HANDLE_BAT(, 18828) +HANDLE_BAT(, 18829) +HANDLE_BAT(, 18830) +HANDLE_BAT(, 18831) +HANDLE_BAT(, 18832) +HANDLE_BAT(, 18833) +HANDLE_BAT(, 18834) +HANDLE_BAT(, 18835) +HANDLE_BAT(, 18836) +HANDLE_BAT(, 18837) +HANDLE_BAT(, 18838) +HANDLE_BAT(, 18839) +HANDLE_BAT(, 18840) +HANDLE_BAT(, 18841) +HANDLE_BAT(, 18842) +HANDLE_BAT(, 18843) +HANDLE_BAT(, 18844) +HANDLE_BAT(, 18845) +HANDLE_BAT(, 18846) +HANDLE_BAT(, 18847) +HANDLE_BAT(, 18848) +HANDLE_BAT(, 18849) +HANDLE_BAT(, 18850) +HANDLE_BAT(, 18851) +HANDLE_BAT(, 18852) +HANDLE_BAT(, 18853) +HANDLE_BAT(, 18854) +HANDLE_BAT(, 18855) +HANDLE_BAT(, 18856) +HANDLE_BAT(, 18857) +HANDLE_BAT(, 18858) +HANDLE_BAT(, 18859) +HANDLE_BAT(, 18860) +HANDLE_BAT(, 18861) +HANDLE_BAT(, 18862) +HANDLE_BAT(, 18863) +HANDLE_BAT(, 18864) +HANDLE_BAT(, 18865) +HANDLE_BAT(, 18866) +HANDLE_BAT(, 18867) +HANDLE_BAT(, 18868) +HANDLE_BAT(, 18869) +HANDLE_BAT(, 18870) +HANDLE_BAT(, 18871) +HANDLE_BAT(, 18872) +HANDLE_BAT(, 18873) +HANDLE_BAT(, 18874) +HANDLE_BAT(, 18875) +HANDLE_BAT(, 18876) +HANDLE_BAT(, 18877) +HANDLE_BAT(, 18878) +HANDLE_BAT(, 18879) +HANDLE_BAT(, 18880) +HANDLE_BAT(, 18881) +HANDLE_BAT(, 18882) +HANDLE_BAT(, 18883) +HANDLE_BAT(, 18884) +HANDLE_BAT(, 18885) +HANDLE_BAT(, 18886) +HANDLE_BAT(, 18887) +HANDLE_BAT(, 18888) +HANDLE_BAT(, 18889) +HANDLE_BAT(, 18890) +HANDLE_BAT(, 18891) +HANDLE_BAT(, 18892) +HANDLE_BAT(, 18893) +HANDLE_BAT(, 18894) +HANDLE_BAT(, 18895) +HANDLE_BAT(, 18896) +HANDLE_BAT(, 18897) +HANDLE_BAT(, 18898) +HANDLE_BAT(, 18899) +HANDLE_BAT(, 18900) +HANDLE_BAT(, 18901) +HANDLE_BAT(, 18902) +HANDLE_BAT(, 18903) +HANDLE_BAT(, 18904) +HANDLE_BAT(, 18905) +HANDLE_BAT(, 18906) +HANDLE_BAT(, 18907) +HANDLE_BAT(, 18908) +HANDLE_BAT(, 18909) +HANDLE_BAT(, 18910) +HANDLE_BAT(, 18911) +HANDLE_BAT(, 18912) +HANDLE_BAT(, 18913) +HANDLE_BAT(, 18914) +HANDLE_BAT(, 18915) +HANDLE_BAT(, 18916) +HANDLE_BAT(, 18917) +HANDLE_BAT(, 18918) +HANDLE_BAT(, 18919) +HANDLE_BAT(, 18920) +HANDLE_BAT(, 18921) +HANDLE_BAT(, 18922) +HANDLE_BAT(, 18923) +HANDLE_BAT(, 18924) +HANDLE_BAT(, 18925) +HANDLE_BAT(, 18926) +HANDLE_BAT(, 18927) +HANDLE_BAT(, 18928) +HANDLE_BAT(, 18929) +HANDLE_BAT(, 18930) +HANDLE_BAT(, 18931) +HANDLE_BAT(, 18932) +HANDLE_BAT(, 18933) +HANDLE_BAT(, 18934) +HANDLE_BAT(, 18935) +HANDLE_BAT(, 18936) +HANDLE_BAT(, 18937) +HANDLE_BAT(, 18938) +HANDLE_BAT(, 18939) +HANDLE_BAT(, 18940) +HANDLE_BAT(, 18941) +HANDLE_BAT(, 18942) +HANDLE_BAT(, 18943) +HANDLE_BAT(, 18944) +HANDLE_BAT(, 18945) +HANDLE_BAT(, 18946) +HANDLE_BAT(, 18947) +HANDLE_BAT(, 18948) +HANDLE_BAT(, 18949) +HANDLE_BAT(, 18950) +HANDLE_BAT(, 18951) +HANDLE_BAT(, 18952) +HANDLE_BAT(, 18953) +HANDLE_BAT(, 18954) +HANDLE_BAT(, 18955) +HANDLE_BAT(, 18956) +HANDLE_BAT(, 18957) +HANDLE_BAT(, 18958) +HANDLE_BAT(, 18959) +HANDLE_BAT(, 18960) +HANDLE_BAT(, 18961) +HANDLE_BAT(, 18962) +HANDLE_BAT(, 18963) +HANDLE_BAT(, 18964) +HANDLE_BAT(, 18965) +HANDLE_BAT(, 18966) +HANDLE_BAT(, 18967) +HANDLE_BAT(, 18968) +HANDLE_BAT(, 18969) +HANDLE_BAT(, 18970) +HANDLE_BAT(, 18971) +HANDLE_BAT(, 18972) +HANDLE_BAT(, 18973) +HANDLE_BAT(, 18974) +HANDLE_BAT(, 18975) +HANDLE_BAT(, 18976) +HANDLE_BAT(, 18977) +HANDLE_BAT(, 18978) +HANDLE_BAT(, 18979) +HANDLE_BAT(, 18980) +HANDLE_BAT(, 18981) +HANDLE_BAT(, 18982) +HANDLE_BAT(, 18983) +HANDLE_BAT(, 18984) +HANDLE_BAT(, 18985) +HANDLE_BAT(, 18986) +HANDLE_BAT(, 18987) +HANDLE_BAT(, 18988) +HANDLE_BAT(, 18989) +HANDLE_BAT(, 18990) +HANDLE_BAT(, 18991) +HANDLE_BAT(, 18992) +HANDLE_BAT(, 18993) +HANDLE_BAT(, 18994) +HANDLE_BAT(, 18995) +HANDLE_BAT(, 18996) +HANDLE_BAT(, 18997) +HANDLE_BAT(, 18998) +HANDLE_BAT(, 18999) +HANDLE_BAT(, 19000) +HANDLE_BAT(, 19001) +HANDLE_BAT(, 19002) +HANDLE_BAT(, 19003) +HANDLE_BAT(, 19004) +HANDLE_BAT(, 19005) +HANDLE_BAT(, 19006) +HANDLE_BAT(, 19007) +HANDLE_BAT(, 19008) +HANDLE_BAT(, 19009) +HANDLE_BAT(, 19010) +HANDLE_BAT(, 19011) +HANDLE_BAT(, 19012) +HANDLE_BAT(, 19013) +HANDLE_BAT(, 19014) +HANDLE_BAT(, 19015) +HANDLE_BAT(, 19016) +HANDLE_BAT(, 19017) +HANDLE_BAT(, 19018) +HANDLE_BAT(, 19019) +HANDLE_BAT(, 19020) +HANDLE_BAT(, 19021) +HANDLE_BAT(, 19022) +HANDLE_BAT(, 19023) +HANDLE_BAT(, 19024) +HANDLE_BAT(, 19025) +HANDLE_BAT(, 19026) +HANDLE_BAT(, 19027) +HANDLE_BAT(, 19028) +HANDLE_BAT(, 19029) +HANDLE_BAT(, 19030) +HANDLE_BAT(, 19031) +HANDLE_BAT(, 19032) +HANDLE_BAT(, 19033) +HANDLE_BAT(, 19034) +HANDLE_BAT(, 19035) +HANDLE_BAT(, 19036) +HANDLE_BAT(, 19037) +HANDLE_BAT(, 19038) +HANDLE_BAT(, 19039) +HANDLE_BAT(, 19040) +HANDLE_BAT(, 19041) +HANDLE_BAT(, 19042) +HANDLE_BAT(, 19043) +HANDLE_BAT(, 19044) +HANDLE_BAT(, 19045) +HANDLE_BAT(, 19046) +HANDLE_BAT(, 19047) +HANDLE_BAT(, 19048) +HANDLE_BAT(, 19049) +HANDLE_BAT(, 19050) +HANDLE_BAT(, 19051) +HANDLE_BAT(, 19052) +HANDLE_BAT(, 19053) +HANDLE_BAT(, 19054) +HANDLE_BAT(, 19055) +HANDLE_BAT(, 19056) +HANDLE_BAT(, 19057) +HANDLE_BAT(, 19058) +HANDLE_BAT(, 19059) +HANDLE_BAT(, 19060) +HANDLE_BAT(, 19061) +HANDLE_BAT(, 19062) +HANDLE_BAT(, 19063) +HANDLE_BAT(, 19064) +HANDLE_BAT(, 19065) +HANDLE_BAT(, 19066) +HANDLE_BAT(, 19067) +HANDLE_BAT(, 19068) +HANDLE_BAT(, 19069) +HANDLE_BAT(, 19070) +HANDLE_BAT(, 19071) +HANDLE_BAT(, 19072) +HANDLE_BAT(, 19073) +HANDLE_BAT(, 19074) +HANDLE_BAT(, 19075) +HANDLE_BAT(, 19076) +HANDLE_BAT(, 19077) +HANDLE_BAT(, 19078) +HANDLE_BAT(, 19079) +HANDLE_BAT(, 19080) +HANDLE_BAT(, 19081) +HANDLE_BAT(, 19082) +HANDLE_BAT(, 19083) +HANDLE_BAT(, 19084) +HANDLE_BAT(, 19085) +HANDLE_BAT(, 19086) +HANDLE_BAT(, 19087) +HANDLE_BAT(, 19088) +HANDLE_BAT(, 19089) +HANDLE_BAT(, 19090) +HANDLE_BAT(, 19091) +HANDLE_BAT(, 19092) +HANDLE_BAT(, 19093) +HANDLE_BAT(, 19094) +HANDLE_BAT(, 19095) +HANDLE_BAT(, 19096) +HANDLE_BAT(, 19097) +HANDLE_BAT(, 19098) +HANDLE_BAT(, 19099) +HANDLE_BAT(, 19100) +HANDLE_BAT(, 19101) +HANDLE_BAT(, 19102) +HANDLE_BAT(, 19103) +HANDLE_BAT(, 19104) +HANDLE_BAT(, 19105) +HANDLE_BAT(, 19106) +HANDLE_BAT(, 19107) +HANDLE_BAT(, 19108) +HANDLE_BAT(, 19109) +HANDLE_BAT(, 19110) +HANDLE_BAT(, 19111) +HANDLE_BAT(, 19112) +HANDLE_BAT(, 19113) +HANDLE_BAT(, 19114) +HANDLE_BAT(, 19115) +HANDLE_BAT(, 19116) +HANDLE_BAT(, 19117) +HANDLE_BAT(, 19118) +HANDLE_BAT(, 19119) +HANDLE_BAT(, 19120) +HANDLE_BAT(, 19121) +HANDLE_BAT(, 19122) +HANDLE_BAT(, 19123) +HANDLE_BAT(, 19124) +HANDLE_BAT(, 19125) +HANDLE_BAT(, 19126) +HANDLE_BAT(, 19127) +HANDLE_BAT(, 19128) +HANDLE_BAT(, 19129) +HANDLE_BAT(, 19130) +HANDLE_BAT(, 19131) +HANDLE_BAT(, 19132) +HANDLE_BAT(, 19133) +HANDLE_BAT(, 19134) +HANDLE_BAT(, 19135) +HANDLE_BAT(, 19136) +HANDLE_BAT(, 19137) +HANDLE_BAT(, 19138) +HANDLE_BAT(, 19139) +HANDLE_BAT(, 19140) +HANDLE_BAT(, 19141) +HANDLE_BAT(, 19142) +HANDLE_BAT(, 19143) +HANDLE_BAT(, 19144) +HANDLE_BAT(, 19145) +HANDLE_BAT(, 19146) +HANDLE_BAT(, 19147) +HANDLE_BAT(, 19148) +HANDLE_BAT(, 19149) +HANDLE_BAT(, 19150) +HANDLE_BAT(, 19151) +HANDLE_BAT(, 19152) +HANDLE_BAT(, 19153) +HANDLE_BAT(, 19154) +HANDLE_BAT(, 19155) +HANDLE_BAT(, 19156) +HANDLE_BAT(, 19157) +HANDLE_BAT(, 19158) +HANDLE_BAT(, 19159) +HANDLE_BAT(, 19160) +HANDLE_BAT(, 19161) +HANDLE_BAT(, 19162) +HANDLE_BAT(, 19163) +HANDLE_BAT(, 19164) +HANDLE_BAT(, 19165) +HANDLE_BAT(, 19166) +HANDLE_BAT(, 19167) +HANDLE_BAT(, 19168) +HANDLE_BAT(, 19169) +HANDLE_BAT(, 19170) +HANDLE_BAT(, 19171) +HANDLE_BAT(, 19172) +HANDLE_BAT(, 19173) +HANDLE_BAT(, 19174) +HANDLE_BAT(, 19175) +HANDLE_BAT(, 19176) +HANDLE_BAT(, 19177) +HANDLE_BAT(, 19178) +HANDLE_BAT(, 19179) +HANDLE_BAT(, 19180) +HANDLE_BAT(, 19181) +HANDLE_BAT(, 19182) +HANDLE_BAT(, 19183) +HANDLE_BAT(, 19184) +HANDLE_BAT(, 19185) +HANDLE_BAT(, 19186) +HANDLE_BAT(, 19187) +HANDLE_BAT(, 19188) +HANDLE_BAT(, 19189) +HANDLE_BAT(, 19190) +HANDLE_BAT(, 19191) +HANDLE_BAT(, 19192) +HANDLE_BAT(, 19193) +HANDLE_BAT(, 19194) +HANDLE_BAT(, 19195) +HANDLE_BAT(, 19196) +HANDLE_BAT(, 19197) +HANDLE_BAT(, 19198) +HANDLE_BAT(, 19199) +HANDLE_BAT(, 19200) +HANDLE_BAT(, 19201) +HANDLE_BAT(, 19202) +HANDLE_BAT(, 19203) +HANDLE_BAT(, 19204) +HANDLE_BAT(, 19205) +HANDLE_BAT(, 19206) +HANDLE_BAT(, 19207) +HANDLE_BAT(, 19208) +HANDLE_BAT(, 19209) +HANDLE_BAT(, 19210) +HANDLE_BAT(, 19211) +HANDLE_BAT(, 19212) +HANDLE_BAT(, 19213) +HANDLE_BAT(, 19214) +HANDLE_BAT(, 19215) +HANDLE_BAT(, 19216) +HANDLE_BAT(, 19217) +HANDLE_BAT(, 19218) +HANDLE_BAT(, 19219) +HANDLE_BAT(, 19220) +HANDLE_BAT(, 19221) +HANDLE_BAT(, 19222) +HANDLE_BAT(, 19223) +HANDLE_BAT(, 19224) +HANDLE_BAT(, 19225) +HANDLE_BAT(, 19226) +HANDLE_BAT(, 19227) +HANDLE_BAT(, 19228) +HANDLE_BAT(, 19229) +HANDLE_BAT(, 19230) +HANDLE_BAT(, 19231) +HANDLE_BAT(, 19232) +HANDLE_BAT(, 19233) +HANDLE_BAT(, 19234) +HANDLE_BAT(, 19235) +HANDLE_BAT(, 19236) +HANDLE_BAT(, 19237) +HANDLE_BAT(, 19238) +HANDLE_BAT(, 19239) +HANDLE_BAT(, 19240) +HANDLE_BAT(, 19241) +HANDLE_BAT(, 19242) +HANDLE_BAT(, 19243) +HANDLE_BAT(, 19244) +HANDLE_BAT(, 19245) +HANDLE_BAT(, 19246) +HANDLE_BAT(, 19247) +HANDLE_BAT(, 19248) +HANDLE_BAT(, 19249) +HANDLE_BAT(, 19250) +HANDLE_BAT(, 19251) +HANDLE_BAT(, 19252) +HANDLE_BAT(, 19253) +HANDLE_BAT(, 19254) +HANDLE_BAT(, 19255) +HANDLE_BAT(, 19256) +HANDLE_BAT(, 19257) +HANDLE_BAT(, 19258) +HANDLE_BAT(, 19259) +HANDLE_BAT(, 19260) +HANDLE_BAT(, 19261) +HANDLE_BAT(, 19262) +HANDLE_BAT(, 19263) +HANDLE_BAT(, 19264) +HANDLE_BAT(, 19265) +HANDLE_BAT(, 19266) +HANDLE_BAT(, 19267) +HANDLE_BAT(, 19268) +HANDLE_BAT(, 19269) +HANDLE_BAT(, 19270) +HANDLE_BAT(, 19271) +HANDLE_BAT(, 19272) +HANDLE_BAT(, 19273) +HANDLE_BAT(, 19274) +HANDLE_BAT(, 19275) +HANDLE_BAT(, 19276) +HANDLE_BAT(, 19277) +HANDLE_BAT(, 19278) +HANDLE_BAT(, 19279) +HANDLE_BAT(, 19280) +HANDLE_BAT(, 19281) +HANDLE_BAT(, 19282) +HANDLE_BAT(, 19283) +HANDLE_BAT(, 19284) +HANDLE_BAT(, 19285) +HANDLE_BAT(, 19286) +HANDLE_BAT(, 19287) +HANDLE_BAT(, 19288) +HANDLE_BAT(, 19289) +HANDLE_BAT(, 19290) +HANDLE_BAT(, 19291) +HANDLE_BAT(, 19292) +HANDLE_BAT(, 19293) +HANDLE_BAT(, 19294) +HANDLE_BAT(, 19295) +HANDLE_BAT(, 19296) +HANDLE_BAT(, 19297) +HANDLE_BAT(, 19298) +HANDLE_BAT(, 19299) +HANDLE_BAT(, 19300) +HANDLE_BAT(, 19301) +HANDLE_BAT(, 19302) +HANDLE_BAT(, 19303) +HANDLE_BAT(, 19304) +HANDLE_BAT(, 19305) +HANDLE_BAT(, 19306) +HANDLE_BAT(, 19307) +HANDLE_BAT(, 19308) +HANDLE_BAT(, 19309) +HANDLE_BAT(, 19310) +HANDLE_BAT(, 19311) +HANDLE_BAT(, 19312) +HANDLE_BAT(, 19313) +HANDLE_BAT(, 19314) +HANDLE_BAT(, 19315) +HANDLE_BAT(, 19316) +HANDLE_BAT(, 19317) +HANDLE_BAT(, 19318) +HANDLE_BAT(, 19319) +HANDLE_BAT(, 19320) +HANDLE_BAT(, 19321) +HANDLE_BAT(, 19322) +HANDLE_BAT(, 19323) +HANDLE_BAT(, 19324) +HANDLE_BAT(, 19325) +HANDLE_BAT(, 19326) +HANDLE_BAT(, 19327) +HANDLE_BAT(, 19328) +HANDLE_BAT(, 19329) +HANDLE_BAT(, 19330) +HANDLE_BAT(, 19331) +HANDLE_BAT(, 19332) +HANDLE_BAT(, 19333) +HANDLE_BAT(, 19334) +HANDLE_BAT(, 19335) +HANDLE_BAT(, 19336) +HANDLE_BAT(, 19337) +HANDLE_BAT(, 19338) +HANDLE_BAT(, 19339) +HANDLE_BAT(, 19340) +HANDLE_BAT(, 19341) +HANDLE_BAT(, 19342) +HANDLE_BAT(, 19343) +HANDLE_BAT(, 19344) +HANDLE_BAT(, 19345) +HANDLE_BAT(, 19346) +HANDLE_BAT(, 19347) +HANDLE_BAT(, 19348) +HANDLE_BAT(, 19349) +HANDLE_BAT(, 19350) +HANDLE_BAT(, 19351) +HANDLE_BAT(, 19352) +HANDLE_BAT(, 19353) +HANDLE_BAT(, 19354) +HANDLE_BAT(, 19355) +HANDLE_BAT(, 19356) +HANDLE_BAT(, 19357) +HANDLE_BAT(, 19358) +HANDLE_BAT(, 19359) +HANDLE_BAT(, 19360) +HANDLE_BAT(, 19361) +HANDLE_BAT(, 19362) +HANDLE_BAT(, 19363) +HANDLE_BAT(, 19364) +HANDLE_BAT(, 19365) +HANDLE_BAT(, 19366) +HANDLE_BAT(, 19367) +HANDLE_BAT(, 19368) +HANDLE_BAT(, 19369) +HANDLE_BAT(, 19370) +HANDLE_BAT(, 19371) +HANDLE_BAT(, 19372) +HANDLE_BAT(, 19373) +HANDLE_BAT(, 19374) +HANDLE_BAT(, 19375) +HANDLE_BAT(, 19376) +HANDLE_BAT(, 19377) +HANDLE_BAT(, 19378) +HANDLE_BAT(, 19379) +HANDLE_BAT(, 19380) +HANDLE_BAT(, 19381) +HANDLE_BAT(, 19382) +HANDLE_BAT(, 19383) +HANDLE_BAT(, 19384) +HANDLE_BAT(, 19385) +HANDLE_BAT(, 19386) +HANDLE_BAT(, 19387) +HANDLE_BAT(, 19388) +HANDLE_BAT(, 19389) +HANDLE_BAT(, 19390) +HANDLE_BAT(, 19391) +HANDLE_BAT(, 19392) +HANDLE_BAT(, 19393) +HANDLE_BAT(, 19394) +HANDLE_BAT(, 19395) +HANDLE_BAT(, 19396) +HANDLE_BAT(, 19397) +HANDLE_BAT(, 19398) +HANDLE_BAT(, 19399) +HANDLE_BAT(, 19400) +HANDLE_BAT(, 19401) +HANDLE_BAT(, 19402) +HANDLE_BAT(, 19403) +HANDLE_BAT(, 19404) +HANDLE_BAT(, 19405) +HANDLE_BAT(, 19406) +HANDLE_BAT(, 19407) +HANDLE_BAT(, 19408) +HANDLE_BAT(, 19409) +HANDLE_BAT(, 19410) +HANDLE_BAT(, 19411) +HANDLE_BAT(, 19412) +HANDLE_BAT(, 19413) +HANDLE_BAT(, 19414) +HANDLE_BAT(, 19415) +HANDLE_BAT(, 19416) +HANDLE_BAT(, 19417) +HANDLE_BAT(, 19418) +HANDLE_BAT(, 19419) +HANDLE_BAT(, 19420) +HANDLE_BAT(, 19421) +HANDLE_BAT(, 19422) +HANDLE_BAT(, 19423) +HANDLE_BAT(, 19424) +HANDLE_BAT(, 19425) +HANDLE_BAT(, 19426) +HANDLE_BAT(, 19427) +HANDLE_BAT(, 19428) +HANDLE_BAT(, 19429) +HANDLE_BAT(, 19430) +HANDLE_BAT(, 19431) +HANDLE_BAT(, 19432) +HANDLE_BAT(, 19433) +HANDLE_BAT(, 19434) +HANDLE_BAT(, 19435) +HANDLE_BAT(, 19436) +HANDLE_BAT(, 19437) +HANDLE_BAT(, 19438) +HANDLE_BAT(, 19439) +HANDLE_BAT(, 19440) +HANDLE_BAT(, 19441) +HANDLE_BAT(, 19442) +HANDLE_BAT(, 19443) +HANDLE_BAT(, 19444) +HANDLE_BAT(, 19445) +HANDLE_BAT(, 19446) +HANDLE_BAT(, 19447) +HANDLE_BAT(, 19448) +HANDLE_BAT(, 19449) +HANDLE_BAT(, 19450) +HANDLE_BAT(, 19451) +HANDLE_BAT(, 19452) +HANDLE_BAT(, 19453) +HANDLE_BAT(, 19454) +HANDLE_BAT(, 19455) +HANDLE_BAT(, 19456) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 18433) +HANDLE_BAT(APINT_TYPE_PREFIX, 18434) +HANDLE_BAT(APINT_TYPE_PREFIX, 18435) +HANDLE_BAT(APINT_TYPE_PREFIX, 18436) +HANDLE_BAT(APINT_TYPE_PREFIX, 18437) +HANDLE_BAT(APINT_TYPE_PREFIX, 18438) +HANDLE_BAT(APINT_TYPE_PREFIX, 18439) +HANDLE_BAT(APINT_TYPE_PREFIX, 18440) +HANDLE_BAT(APINT_TYPE_PREFIX, 18441) +HANDLE_BAT(APINT_TYPE_PREFIX, 18442) +HANDLE_BAT(APINT_TYPE_PREFIX, 18443) +HANDLE_BAT(APINT_TYPE_PREFIX, 18444) +HANDLE_BAT(APINT_TYPE_PREFIX, 18445) +HANDLE_BAT(APINT_TYPE_PREFIX, 18446) +HANDLE_BAT(APINT_TYPE_PREFIX, 18447) +HANDLE_BAT(APINT_TYPE_PREFIX, 18448) +HANDLE_BAT(APINT_TYPE_PREFIX, 18449) +HANDLE_BAT(APINT_TYPE_PREFIX, 18450) +HANDLE_BAT(APINT_TYPE_PREFIX, 18451) +HANDLE_BAT(APINT_TYPE_PREFIX, 18452) +HANDLE_BAT(APINT_TYPE_PREFIX, 18453) +HANDLE_BAT(APINT_TYPE_PREFIX, 18454) +HANDLE_BAT(APINT_TYPE_PREFIX, 18455) +HANDLE_BAT(APINT_TYPE_PREFIX, 18456) +HANDLE_BAT(APINT_TYPE_PREFIX, 18457) +HANDLE_BAT(APINT_TYPE_PREFIX, 18458) +HANDLE_BAT(APINT_TYPE_PREFIX, 18459) +HANDLE_BAT(APINT_TYPE_PREFIX, 18460) +HANDLE_BAT(APINT_TYPE_PREFIX, 18461) +HANDLE_BAT(APINT_TYPE_PREFIX, 18462) +HANDLE_BAT(APINT_TYPE_PREFIX, 18463) +HANDLE_BAT(APINT_TYPE_PREFIX, 18464) +HANDLE_BAT(APINT_TYPE_PREFIX, 18465) +HANDLE_BAT(APINT_TYPE_PREFIX, 18466) +HANDLE_BAT(APINT_TYPE_PREFIX, 18467) +HANDLE_BAT(APINT_TYPE_PREFIX, 18468) +HANDLE_BAT(APINT_TYPE_PREFIX, 18469) +HANDLE_BAT(APINT_TYPE_PREFIX, 18470) +HANDLE_BAT(APINT_TYPE_PREFIX, 18471) +HANDLE_BAT(APINT_TYPE_PREFIX, 18472) +HANDLE_BAT(APINT_TYPE_PREFIX, 18473) +HANDLE_BAT(APINT_TYPE_PREFIX, 18474) +HANDLE_BAT(APINT_TYPE_PREFIX, 18475) +HANDLE_BAT(APINT_TYPE_PREFIX, 18476) +HANDLE_BAT(APINT_TYPE_PREFIX, 18477) +HANDLE_BAT(APINT_TYPE_PREFIX, 18478) +HANDLE_BAT(APINT_TYPE_PREFIX, 18479) +HANDLE_BAT(APINT_TYPE_PREFIX, 18480) +HANDLE_BAT(APINT_TYPE_PREFIX, 18481) +HANDLE_BAT(APINT_TYPE_PREFIX, 18482) +HANDLE_BAT(APINT_TYPE_PREFIX, 18483) +HANDLE_BAT(APINT_TYPE_PREFIX, 18484) +HANDLE_BAT(APINT_TYPE_PREFIX, 18485) +HANDLE_BAT(APINT_TYPE_PREFIX, 18486) +HANDLE_BAT(APINT_TYPE_PREFIX, 18487) +HANDLE_BAT(APINT_TYPE_PREFIX, 18488) +HANDLE_BAT(APINT_TYPE_PREFIX, 18489) +HANDLE_BAT(APINT_TYPE_PREFIX, 18490) +HANDLE_BAT(APINT_TYPE_PREFIX, 18491) +HANDLE_BAT(APINT_TYPE_PREFIX, 18492) +HANDLE_BAT(APINT_TYPE_PREFIX, 18493) +HANDLE_BAT(APINT_TYPE_PREFIX, 18494) +HANDLE_BAT(APINT_TYPE_PREFIX, 18495) +HANDLE_BAT(APINT_TYPE_PREFIX, 18496) +HANDLE_BAT(APINT_TYPE_PREFIX, 18497) +HANDLE_BAT(APINT_TYPE_PREFIX, 18498) +HANDLE_BAT(APINT_TYPE_PREFIX, 18499) +HANDLE_BAT(APINT_TYPE_PREFIX, 18500) +HANDLE_BAT(APINT_TYPE_PREFIX, 18501) +HANDLE_BAT(APINT_TYPE_PREFIX, 18502) +HANDLE_BAT(APINT_TYPE_PREFIX, 18503) +HANDLE_BAT(APINT_TYPE_PREFIX, 18504) +HANDLE_BAT(APINT_TYPE_PREFIX, 18505) +HANDLE_BAT(APINT_TYPE_PREFIX, 18506) +HANDLE_BAT(APINT_TYPE_PREFIX, 18507) +HANDLE_BAT(APINT_TYPE_PREFIX, 18508) +HANDLE_BAT(APINT_TYPE_PREFIX, 18509) +HANDLE_BAT(APINT_TYPE_PREFIX, 18510) +HANDLE_BAT(APINT_TYPE_PREFIX, 18511) +HANDLE_BAT(APINT_TYPE_PREFIX, 18512) +HANDLE_BAT(APINT_TYPE_PREFIX, 18513) +HANDLE_BAT(APINT_TYPE_PREFIX, 18514) +HANDLE_BAT(APINT_TYPE_PREFIX, 18515) +HANDLE_BAT(APINT_TYPE_PREFIX, 18516) +HANDLE_BAT(APINT_TYPE_PREFIX, 18517) +HANDLE_BAT(APINT_TYPE_PREFIX, 18518) +HANDLE_BAT(APINT_TYPE_PREFIX, 18519) +HANDLE_BAT(APINT_TYPE_PREFIX, 18520) +HANDLE_BAT(APINT_TYPE_PREFIX, 18521) +HANDLE_BAT(APINT_TYPE_PREFIX, 18522) +HANDLE_BAT(APINT_TYPE_PREFIX, 18523) +HANDLE_BAT(APINT_TYPE_PREFIX, 18524) +HANDLE_BAT(APINT_TYPE_PREFIX, 18525) +HANDLE_BAT(APINT_TYPE_PREFIX, 18526) +HANDLE_BAT(APINT_TYPE_PREFIX, 18527) +HANDLE_BAT(APINT_TYPE_PREFIX, 18528) +HANDLE_BAT(APINT_TYPE_PREFIX, 18529) +HANDLE_BAT(APINT_TYPE_PREFIX, 18530) +HANDLE_BAT(APINT_TYPE_PREFIX, 18531) +HANDLE_BAT(APINT_TYPE_PREFIX, 18532) +HANDLE_BAT(APINT_TYPE_PREFIX, 18533) +HANDLE_BAT(APINT_TYPE_PREFIX, 18534) +HANDLE_BAT(APINT_TYPE_PREFIX, 18535) +HANDLE_BAT(APINT_TYPE_PREFIX, 18536) +HANDLE_BAT(APINT_TYPE_PREFIX, 18537) +HANDLE_BAT(APINT_TYPE_PREFIX, 18538) +HANDLE_BAT(APINT_TYPE_PREFIX, 18539) +HANDLE_BAT(APINT_TYPE_PREFIX, 18540) +HANDLE_BAT(APINT_TYPE_PREFIX, 18541) +HANDLE_BAT(APINT_TYPE_PREFIX, 18542) +HANDLE_BAT(APINT_TYPE_PREFIX, 18543) +HANDLE_BAT(APINT_TYPE_PREFIX, 18544) +HANDLE_BAT(APINT_TYPE_PREFIX, 18545) +HANDLE_BAT(APINT_TYPE_PREFIX, 18546) +HANDLE_BAT(APINT_TYPE_PREFIX, 18547) +HANDLE_BAT(APINT_TYPE_PREFIX, 18548) +HANDLE_BAT(APINT_TYPE_PREFIX, 18549) +HANDLE_BAT(APINT_TYPE_PREFIX, 18550) +HANDLE_BAT(APINT_TYPE_PREFIX, 18551) +HANDLE_BAT(APINT_TYPE_PREFIX, 18552) +HANDLE_BAT(APINT_TYPE_PREFIX, 18553) +HANDLE_BAT(APINT_TYPE_PREFIX, 18554) +HANDLE_BAT(APINT_TYPE_PREFIX, 18555) +HANDLE_BAT(APINT_TYPE_PREFIX, 18556) +HANDLE_BAT(APINT_TYPE_PREFIX, 18557) +HANDLE_BAT(APINT_TYPE_PREFIX, 18558) +HANDLE_BAT(APINT_TYPE_PREFIX, 18559) +HANDLE_BAT(APINT_TYPE_PREFIX, 18560) +HANDLE_BAT(APINT_TYPE_PREFIX, 18561) +HANDLE_BAT(APINT_TYPE_PREFIX, 18562) +HANDLE_BAT(APINT_TYPE_PREFIX, 18563) +HANDLE_BAT(APINT_TYPE_PREFIX, 18564) +HANDLE_BAT(APINT_TYPE_PREFIX, 18565) +HANDLE_BAT(APINT_TYPE_PREFIX, 18566) +HANDLE_BAT(APINT_TYPE_PREFIX, 18567) +HANDLE_BAT(APINT_TYPE_PREFIX, 18568) +HANDLE_BAT(APINT_TYPE_PREFIX, 18569) +HANDLE_BAT(APINT_TYPE_PREFIX, 18570) +HANDLE_BAT(APINT_TYPE_PREFIX, 18571) +HANDLE_BAT(APINT_TYPE_PREFIX, 18572) +HANDLE_BAT(APINT_TYPE_PREFIX, 18573) +HANDLE_BAT(APINT_TYPE_PREFIX, 18574) +HANDLE_BAT(APINT_TYPE_PREFIX, 18575) +HANDLE_BAT(APINT_TYPE_PREFIX, 18576) +HANDLE_BAT(APINT_TYPE_PREFIX, 18577) +HANDLE_BAT(APINT_TYPE_PREFIX, 18578) +HANDLE_BAT(APINT_TYPE_PREFIX, 18579) +HANDLE_BAT(APINT_TYPE_PREFIX, 18580) +HANDLE_BAT(APINT_TYPE_PREFIX, 18581) +HANDLE_BAT(APINT_TYPE_PREFIX, 18582) +HANDLE_BAT(APINT_TYPE_PREFIX, 18583) +HANDLE_BAT(APINT_TYPE_PREFIX, 18584) +HANDLE_BAT(APINT_TYPE_PREFIX, 18585) +HANDLE_BAT(APINT_TYPE_PREFIX, 18586) +HANDLE_BAT(APINT_TYPE_PREFIX, 18587) +HANDLE_BAT(APINT_TYPE_PREFIX, 18588) +HANDLE_BAT(APINT_TYPE_PREFIX, 18589) +HANDLE_BAT(APINT_TYPE_PREFIX, 18590) +HANDLE_BAT(APINT_TYPE_PREFIX, 18591) +HANDLE_BAT(APINT_TYPE_PREFIX, 18592) +HANDLE_BAT(APINT_TYPE_PREFIX, 18593) +HANDLE_BAT(APINT_TYPE_PREFIX, 18594) +HANDLE_BAT(APINT_TYPE_PREFIX, 18595) +HANDLE_BAT(APINT_TYPE_PREFIX, 18596) +HANDLE_BAT(APINT_TYPE_PREFIX, 18597) +HANDLE_BAT(APINT_TYPE_PREFIX, 18598) +HANDLE_BAT(APINT_TYPE_PREFIX, 18599) +HANDLE_BAT(APINT_TYPE_PREFIX, 18600) +HANDLE_BAT(APINT_TYPE_PREFIX, 18601) +HANDLE_BAT(APINT_TYPE_PREFIX, 18602) +HANDLE_BAT(APINT_TYPE_PREFIX, 18603) +HANDLE_BAT(APINT_TYPE_PREFIX, 18604) +HANDLE_BAT(APINT_TYPE_PREFIX, 18605) +HANDLE_BAT(APINT_TYPE_PREFIX, 18606) +HANDLE_BAT(APINT_TYPE_PREFIX, 18607) +HANDLE_BAT(APINT_TYPE_PREFIX, 18608) +HANDLE_BAT(APINT_TYPE_PREFIX, 18609) +HANDLE_BAT(APINT_TYPE_PREFIX, 18610) +HANDLE_BAT(APINT_TYPE_PREFIX, 18611) +HANDLE_BAT(APINT_TYPE_PREFIX, 18612) +HANDLE_BAT(APINT_TYPE_PREFIX, 18613) +HANDLE_BAT(APINT_TYPE_PREFIX, 18614) +HANDLE_BAT(APINT_TYPE_PREFIX, 18615) +HANDLE_BAT(APINT_TYPE_PREFIX, 18616) +HANDLE_BAT(APINT_TYPE_PREFIX, 18617) +HANDLE_BAT(APINT_TYPE_PREFIX, 18618) +HANDLE_BAT(APINT_TYPE_PREFIX, 18619) +HANDLE_BAT(APINT_TYPE_PREFIX, 18620) +HANDLE_BAT(APINT_TYPE_PREFIX, 18621) +HANDLE_BAT(APINT_TYPE_PREFIX, 18622) +HANDLE_BAT(APINT_TYPE_PREFIX, 18623) +HANDLE_BAT(APINT_TYPE_PREFIX, 18624) +HANDLE_BAT(APINT_TYPE_PREFIX, 18625) +HANDLE_BAT(APINT_TYPE_PREFIX, 18626) +HANDLE_BAT(APINT_TYPE_PREFIX, 18627) +HANDLE_BAT(APINT_TYPE_PREFIX, 18628) +HANDLE_BAT(APINT_TYPE_PREFIX, 18629) +HANDLE_BAT(APINT_TYPE_PREFIX, 18630) +HANDLE_BAT(APINT_TYPE_PREFIX, 18631) +HANDLE_BAT(APINT_TYPE_PREFIX, 18632) +HANDLE_BAT(APINT_TYPE_PREFIX, 18633) +HANDLE_BAT(APINT_TYPE_PREFIX, 18634) +HANDLE_BAT(APINT_TYPE_PREFIX, 18635) +HANDLE_BAT(APINT_TYPE_PREFIX, 18636) +HANDLE_BAT(APINT_TYPE_PREFIX, 18637) +HANDLE_BAT(APINT_TYPE_PREFIX, 18638) +HANDLE_BAT(APINT_TYPE_PREFIX, 18639) +HANDLE_BAT(APINT_TYPE_PREFIX, 18640) +HANDLE_BAT(APINT_TYPE_PREFIX, 18641) +HANDLE_BAT(APINT_TYPE_PREFIX, 18642) +HANDLE_BAT(APINT_TYPE_PREFIX, 18643) +HANDLE_BAT(APINT_TYPE_PREFIX, 18644) +HANDLE_BAT(APINT_TYPE_PREFIX, 18645) +HANDLE_BAT(APINT_TYPE_PREFIX, 18646) +HANDLE_BAT(APINT_TYPE_PREFIX, 18647) +HANDLE_BAT(APINT_TYPE_PREFIX, 18648) +HANDLE_BAT(APINT_TYPE_PREFIX, 18649) +HANDLE_BAT(APINT_TYPE_PREFIX, 18650) +HANDLE_BAT(APINT_TYPE_PREFIX, 18651) +HANDLE_BAT(APINT_TYPE_PREFIX, 18652) +HANDLE_BAT(APINT_TYPE_PREFIX, 18653) +HANDLE_BAT(APINT_TYPE_PREFIX, 18654) +HANDLE_BAT(APINT_TYPE_PREFIX, 18655) +HANDLE_BAT(APINT_TYPE_PREFIX, 18656) +HANDLE_BAT(APINT_TYPE_PREFIX, 18657) +HANDLE_BAT(APINT_TYPE_PREFIX, 18658) +HANDLE_BAT(APINT_TYPE_PREFIX, 18659) +HANDLE_BAT(APINT_TYPE_PREFIX, 18660) +HANDLE_BAT(APINT_TYPE_PREFIX, 18661) +HANDLE_BAT(APINT_TYPE_PREFIX, 18662) +HANDLE_BAT(APINT_TYPE_PREFIX, 18663) +HANDLE_BAT(APINT_TYPE_PREFIX, 18664) +HANDLE_BAT(APINT_TYPE_PREFIX, 18665) +HANDLE_BAT(APINT_TYPE_PREFIX, 18666) +HANDLE_BAT(APINT_TYPE_PREFIX, 18667) +HANDLE_BAT(APINT_TYPE_PREFIX, 18668) +HANDLE_BAT(APINT_TYPE_PREFIX, 18669) +HANDLE_BAT(APINT_TYPE_PREFIX, 18670) +HANDLE_BAT(APINT_TYPE_PREFIX, 18671) +HANDLE_BAT(APINT_TYPE_PREFIX, 18672) +HANDLE_BAT(APINT_TYPE_PREFIX, 18673) +HANDLE_BAT(APINT_TYPE_PREFIX, 18674) +HANDLE_BAT(APINT_TYPE_PREFIX, 18675) +HANDLE_BAT(APINT_TYPE_PREFIX, 18676) +HANDLE_BAT(APINT_TYPE_PREFIX, 18677) +HANDLE_BAT(APINT_TYPE_PREFIX, 18678) +HANDLE_BAT(APINT_TYPE_PREFIX, 18679) +HANDLE_BAT(APINT_TYPE_PREFIX, 18680) +HANDLE_BAT(APINT_TYPE_PREFIX, 18681) +HANDLE_BAT(APINT_TYPE_PREFIX, 18682) +HANDLE_BAT(APINT_TYPE_PREFIX, 18683) +HANDLE_BAT(APINT_TYPE_PREFIX, 18684) +HANDLE_BAT(APINT_TYPE_PREFIX, 18685) +HANDLE_BAT(APINT_TYPE_PREFIX, 18686) +HANDLE_BAT(APINT_TYPE_PREFIX, 18687) +HANDLE_BAT(APINT_TYPE_PREFIX, 18688) +HANDLE_BAT(APINT_TYPE_PREFIX, 18689) +HANDLE_BAT(APINT_TYPE_PREFIX, 18690) +HANDLE_BAT(APINT_TYPE_PREFIX, 18691) +HANDLE_BAT(APINT_TYPE_PREFIX, 18692) +HANDLE_BAT(APINT_TYPE_PREFIX, 18693) +HANDLE_BAT(APINT_TYPE_PREFIX, 18694) +HANDLE_BAT(APINT_TYPE_PREFIX, 18695) +HANDLE_BAT(APINT_TYPE_PREFIX, 18696) +HANDLE_BAT(APINT_TYPE_PREFIX, 18697) +HANDLE_BAT(APINT_TYPE_PREFIX, 18698) +HANDLE_BAT(APINT_TYPE_PREFIX, 18699) +HANDLE_BAT(APINT_TYPE_PREFIX, 18700) +HANDLE_BAT(APINT_TYPE_PREFIX, 18701) +HANDLE_BAT(APINT_TYPE_PREFIX, 18702) +HANDLE_BAT(APINT_TYPE_PREFIX, 18703) +HANDLE_BAT(APINT_TYPE_PREFIX, 18704) +HANDLE_BAT(APINT_TYPE_PREFIX, 18705) +HANDLE_BAT(APINT_TYPE_PREFIX, 18706) +HANDLE_BAT(APINT_TYPE_PREFIX, 18707) +HANDLE_BAT(APINT_TYPE_PREFIX, 18708) +HANDLE_BAT(APINT_TYPE_PREFIX, 18709) +HANDLE_BAT(APINT_TYPE_PREFIX, 18710) +HANDLE_BAT(APINT_TYPE_PREFIX, 18711) +HANDLE_BAT(APINT_TYPE_PREFIX, 18712) +HANDLE_BAT(APINT_TYPE_PREFIX, 18713) +HANDLE_BAT(APINT_TYPE_PREFIX, 18714) +HANDLE_BAT(APINT_TYPE_PREFIX, 18715) +HANDLE_BAT(APINT_TYPE_PREFIX, 18716) +HANDLE_BAT(APINT_TYPE_PREFIX, 18717) +HANDLE_BAT(APINT_TYPE_PREFIX, 18718) +HANDLE_BAT(APINT_TYPE_PREFIX, 18719) +HANDLE_BAT(APINT_TYPE_PREFIX, 18720) +HANDLE_BAT(APINT_TYPE_PREFIX, 18721) +HANDLE_BAT(APINT_TYPE_PREFIX, 18722) +HANDLE_BAT(APINT_TYPE_PREFIX, 18723) +HANDLE_BAT(APINT_TYPE_PREFIX, 18724) +HANDLE_BAT(APINT_TYPE_PREFIX, 18725) +HANDLE_BAT(APINT_TYPE_PREFIX, 18726) +HANDLE_BAT(APINT_TYPE_PREFIX, 18727) +HANDLE_BAT(APINT_TYPE_PREFIX, 18728) +HANDLE_BAT(APINT_TYPE_PREFIX, 18729) +HANDLE_BAT(APINT_TYPE_PREFIX, 18730) +HANDLE_BAT(APINT_TYPE_PREFIX, 18731) +HANDLE_BAT(APINT_TYPE_PREFIX, 18732) +HANDLE_BAT(APINT_TYPE_PREFIX, 18733) +HANDLE_BAT(APINT_TYPE_PREFIX, 18734) +HANDLE_BAT(APINT_TYPE_PREFIX, 18735) +HANDLE_BAT(APINT_TYPE_PREFIX, 18736) +HANDLE_BAT(APINT_TYPE_PREFIX, 18737) +HANDLE_BAT(APINT_TYPE_PREFIX, 18738) +HANDLE_BAT(APINT_TYPE_PREFIX, 18739) +HANDLE_BAT(APINT_TYPE_PREFIX, 18740) +HANDLE_BAT(APINT_TYPE_PREFIX, 18741) +HANDLE_BAT(APINT_TYPE_PREFIX, 18742) +HANDLE_BAT(APINT_TYPE_PREFIX, 18743) +HANDLE_BAT(APINT_TYPE_PREFIX, 18744) +HANDLE_BAT(APINT_TYPE_PREFIX, 18745) +HANDLE_BAT(APINT_TYPE_PREFIX, 18746) +HANDLE_BAT(APINT_TYPE_PREFIX, 18747) +HANDLE_BAT(APINT_TYPE_PREFIX, 18748) +HANDLE_BAT(APINT_TYPE_PREFIX, 18749) +HANDLE_BAT(APINT_TYPE_PREFIX, 18750) +HANDLE_BAT(APINT_TYPE_PREFIX, 18751) +HANDLE_BAT(APINT_TYPE_PREFIX, 18752) +HANDLE_BAT(APINT_TYPE_PREFIX, 18753) +HANDLE_BAT(APINT_TYPE_PREFIX, 18754) +HANDLE_BAT(APINT_TYPE_PREFIX, 18755) +HANDLE_BAT(APINT_TYPE_PREFIX, 18756) +HANDLE_BAT(APINT_TYPE_PREFIX, 18757) +HANDLE_BAT(APINT_TYPE_PREFIX, 18758) +HANDLE_BAT(APINT_TYPE_PREFIX, 18759) +HANDLE_BAT(APINT_TYPE_PREFIX, 18760) +HANDLE_BAT(APINT_TYPE_PREFIX, 18761) +HANDLE_BAT(APINT_TYPE_PREFIX, 18762) +HANDLE_BAT(APINT_TYPE_PREFIX, 18763) +HANDLE_BAT(APINT_TYPE_PREFIX, 18764) +HANDLE_BAT(APINT_TYPE_PREFIX, 18765) +HANDLE_BAT(APINT_TYPE_PREFIX, 18766) +HANDLE_BAT(APINT_TYPE_PREFIX, 18767) +HANDLE_BAT(APINT_TYPE_PREFIX, 18768) +HANDLE_BAT(APINT_TYPE_PREFIX, 18769) +HANDLE_BAT(APINT_TYPE_PREFIX, 18770) +HANDLE_BAT(APINT_TYPE_PREFIX, 18771) +HANDLE_BAT(APINT_TYPE_PREFIX, 18772) +HANDLE_BAT(APINT_TYPE_PREFIX, 18773) +HANDLE_BAT(APINT_TYPE_PREFIX, 18774) +HANDLE_BAT(APINT_TYPE_PREFIX, 18775) +HANDLE_BAT(APINT_TYPE_PREFIX, 18776) +HANDLE_BAT(APINT_TYPE_PREFIX, 18777) +HANDLE_BAT(APINT_TYPE_PREFIX, 18778) +HANDLE_BAT(APINT_TYPE_PREFIX, 18779) +HANDLE_BAT(APINT_TYPE_PREFIX, 18780) +HANDLE_BAT(APINT_TYPE_PREFIX, 18781) +HANDLE_BAT(APINT_TYPE_PREFIX, 18782) +HANDLE_BAT(APINT_TYPE_PREFIX, 18783) +HANDLE_BAT(APINT_TYPE_PREFIX, 18784) +HANDLE_BAT(APINT_TYPE_PREFIX, 18785) +HANDLE_BAT(APINT_TYPE_PREFIX, 18786) +HANDLE_BAT(APINT_TYPE_PREFIX, 18787) +HANDLE_BAT(APINT_TYPE_PREFIX, 18788) +HANDLE_BAT(APINT_TYPE_PREFIX, 18789) +HANDLE_BAT(APINT_TYPE_PREFIX, 18790) +HANDLE_BAT(APINT_TYPE_PREFIX, 18791) +HANDLE_BAT(APINT_TYPE_PREFIX, 18792) +HANDLE_BAT(APINT_TYPE_PREFIX, 18793) +HANDLE_BAT(APINT_TYPE_PREFIX, 18794) +HANDLE_BAT(APINT_TYPE_PREFIX, 18795) +HANDLE_BAT(APINT_TYPE_PREFIX, 18796) +HANDLE_BAT(APINT_TYPE_PREFIX, 18797) +HANDLE_BAT(APINT_TYPE_PREFIX, 18798) +HANDLE_BAT(APINT_TYPE_PREFIX, 18799) +HANDLE_BAT(APINT_TYPE_PREFIX, 18800) +HANDLE_BAT(APINT_TYPE_PREFIX, 18801) +HANDLE_BAT(APINT_TYPE_PREFIX, 18802) +HANDLE_BAT(APINT_TYPE_PREFIX, 18803) +HANDLE_BAT(APINT_TYPE_PREFIX, 18804) +HANDLE_BAT(APINT_TYPE_PREFIX, 18805) +HANDLE_BAT(APINT_TYPE_PREFIX, 18806) +HANDLE_BAT(APINT_TYPE_PREFIX, 18807) +HANDLE_BAT(APINT_TYPE_PREFIX, 18808) +HANDLE_BAT(APINT_TYPE_PREFIX, 18809) +HANDLE_BAT(APINT_TYPE_PREFIX, 18810) +HANDLE_BAT(APINT_TYPE_PREFIX, 18811) +HANDLE_BAT(APINT_TYPE_PREFIX, 18812) +HANDLE_BAT(APINT_TYPE_PREFIX, 18813) +HANDLE_BAT(APINT_TYPE_PREFIX, 18814) +HANDLE_BAT(APINT_TYPE_PREFIX, 18815) +HANDLE_BAT(APINT_TYPE_PREFIX, 18816) +HANDLE_BAT(APINT_TYPE_PREFIX, 18817) +HANDLE_BAT(APINT_TYPE_PREFIX, 18818) +HANDLE_BAT(APINT_TYPE_PREFIX, 18819) +HANDLE_BAT(APINT_TYPE_PREFIX, 18820) +HANDLE_BAT(APINT_TYPE_PREFIX, 18821) +HANDLE_BAT(APINT_TYPE_PREFIX, 18822) +HANDLE_BAT(APINT_TYPE_PREFIX, 18823) +HANDLE_BAT(APINT_TYPE_PREFIX, 18824) +HANDLE_BAT(APINT_TYPE_PREFIX, 18825) +HANDLE_BAT(APINT_TYPE_PREFIX, 18826) +HANDLE_BAT(APINT_TYPE_PREFIX, 18827) +HANDLE_BAT(APINT_TYPE_PREFIX, 18828) +HANDLE_BAT(APINT_TYPE_PREFIX, 18829) +HANDLE_BAT(APINT_TYPE_PREFIX, 18830) +HANDLE_BAT(APINT_TYPE_PREFIX, 18831) +HANDLE_BAT(APINT_TYPE_PREFIX, 18832) +HANDLE_BAT(APINT_TYPE_PREFIX, 18833) +HANDLE_BAT(APINT_TYPE_PREFIX, 18834) +HANDLE_BAT(APINT_TYPE_PREFIX, 18835) +HANDLE_BAT(APINT_TYPE_PREFIX, 18836) +HANDLE_BAT(APINT_TYPE_PREFIX, 18837) +HANDLE_BAT(APINT_TYPE_PREFIX, 18838) +HANDLE_BAT(APINT_TYPE_PREFIX, 18839) +HANDLE_BAT(APINT_TYPE_PREFIX, 18840) +HANDLE_BAT(APINT_TYPE_PREFIX, 18841) +HANDLE_BAT(APINT_TYPE_PREFIX, 18842) +HANDLE_BAT(APINT_TYPE_PREFIX, 18843) +HANDLE_BAT(APINT_TYPE_PREFIX, 18844) +HANDLE_BAT(APINT_TYPE_PREFIX, 18845) +HANDLE_BAT(APINT_TYPE_PREFIX, 18846) +HANDLE_BAT(APINT_TYPE_PREFIX, 18847) +HANDLE_BAT(APINT_TYPE_PREFIX, 18848) +HANDLE_BAT(APINT_TYPE_PREFIX, 18849) +HANDLE_BAT(APINT_TYPE_PREFIX, 18850) +HANDLE_BAT(APINT_TYPE_PREFIX, 18851) +HANDLE_BAT(APINT_TYPE_PREFIX, 18852) +HANDLE_BAT(APINT_TYPE_PREFIX, 18853) +HANDLE_BAT(APINT_TYPE_PREFIX, 18854) +HANDLE_BAT(APINT_TYPE_PREFIX, 18855) +HANDLE_BAT(APINT_TYPE_PREFIX, 18856) +HANDLE_BAT(APINT_TYPE_PREFIX, 18857) +HANDLE_BAT(APINT_TYPE_PREFIX, 18858) +HANDLE_BAT(APINT_TYPE_PREFIX, 18859) +HANDLE_BAT(APINT_TYPE_PREFIX, 18860) +HANDLE_BAT(APINT_TYPE_PREFIX, 18861) +HANDLE_BAT(APINT_TYPE_PREFIX, 18862) +HANDLE_BAT(APINT_TYPE_PREFIX, 18863) +HANDLE_BAT(APINT_TYPE_PREFIX, 18864) +HANDLE_BAT(APINT_TYPE_PREFIX, 18865) +HANDLE_BAT(APINT_TYPE_PREFIX, 18866) +HANDLE_BAT(APINT_TYPE_PREFIX, 18867) +HANDLE_BAT(APINT_TYPE_PREFIX, 18868) +HANDLE_BAT(APINT_TYPE_PREFIX, 18869) +HANDLE_BAT(APINT_TYPE_PREFIX, 18870) +HANDLE_BAT(APINT_TYPE_PREFIX, 18871) +HANDLE_BAT(APINT_TYPE_PREFIX, 18872) +HANDLE_BAT(APINT_TYPE_PREFIX, 18873) +HANDLE_BAT(APINT_TYPE_PREFIX, 18874) +HANDLE_BAT(APINT_TYPE_PREFIX, 18875) +HANDLE_BAT(APINT_TYPE_PREFIX, 18876) +HANDLE_BAT(APINT_TYPE_PREFIX, 18877) +HANDLE_BAT(APINT_TYPE_PREFIX, 18878) +HANDLE_BAT(APINT_TYPE_PREFIX, 18879) +HANDLE_BAT(APINT_TYPE_PREFIX, 18880) +HANDLE_BAT(APINT_TYPE_PREFIX, 18881) +HANDLE_BAT(APINT_TYPE_PREFIX, 18882) +HANDLE_BAT(APINT_TYPE_PREFIX, 18883) +HANDLE_BAT(APINT_TYPE_PREFIX, 18884) +HANDLE_BAT(APINT_TYPE_PREFIX, 18885) +HANDLE_BAT(APINT_TYPE_PREFIX, 18886) +HANDLE_BAT(APINT_TYPE_PREFIX, 18887) +HANDLE_BAT(APINT_TYPE_PREFIX, 18888) +HANDLE_BAT(APINT_TYPE_PREFIX, 18889) +HANDLE_BAT(APINT_TYPE_PREFIX, 18890) +HANDLE_BAT(APINT_TYPE_PREFIX, 18891) +HANDLE_BAT(APINT_TYPE_PREFIX, 18892) +HANDLE_BAT(APINT_TYPE_PREFIX, 18893) +HANDLE_BAT(APINT_TYPE_PREFIX, 18894) +HANDLE_BAT(APINT_TYPE_PREFIX, 18895) +HANDLE_BAT(APINT_TYPE_PREFIX, 18896) +HANDLE_BAT(APINT_TYPE_PREFIX, 18897) +HANDLE_BAT(APINT_TYPE_PREFIX, 18898) +HANDLE_BAT(APINT_TYPE_PREFIX, 18899) +HANDLE_BAT(APINT_TYPE_PREFIX, 18900) +HANDLE_BAT(APINT_TYPE_PREFIX, 18901) +HANDLE_BAT(APINT_TYPE_PREFIX, 18902) +HANDLE_BAT(APINT_TYPE_PREFIX, 18903) +HANDLE_BAT(APINT_TYPE_PREFIX, 18904) +HANDLE_BAT(APINT_TYPE_PREFIX, 18905) +HANDLE_BAT(APINT_TYPE_PREFIX, 18906) +HANDLE_BAT(APINT_TYPE_PREFIX, 18907) +HANDLE_BAT(APINT_TYPE_PREFIX, 18908) +HANDLE_BAT(APINT_TYPE_PREFIX, 18909) +HANDLE_BAT(APINT_TYPE_PREFIX, 18910) +HANDLE_BAT(APINT_TYPE_PREFIX, 18911) +HANDLE_BAT(APINT_TYPE_PREFIX, 18912) +HANDLE_BAT(APINT_TYPE_PREFIX, 18913) +HANDLE_BAT(APINT_TYPE_PREFIX, 18914) +HANDLE_BAT(APINT_TYPE_PREFIX, 18915) +HANDLE_BAT(APINT_TYPE_PREFIX, 18916) +HANDLE_BAT(APINT_TYPE_PREFIX, 18917) +HANDLE_BAT(APINT_TYPE_PREFIX, 18918) +HANDLE_BAT(APINT_TYPE_PREFIX, 18919) +HANDLE_BAT(APINT_TYPE_PREFIX, 18920) +HANDLE_BAT(APINT_TYPE_PREFIX, 18921) +HANDLE_BAT(APINT_TYPE_PREFIX, 18922) +HANDLE_BAT(APINT_TYPE_PREFIX, 18923) +HANDLE_BAT(APINT_TYPE_PREFIX, 18924) +HANDLE_BAT(APINT_TYPE_PREFIX, 18925) +HANDLE_BAT(APINT_TYPE_PREFIX, 18926) +HANDLE_BAT(APINT_TYPE_PREFIX, 18927) +HANDLE_BAT(APINT_TYPE_PREFIX, 18928) +HANDLE_BAT(APINT_TYPE_PREFIX, 18929) +HANDLE_BAT(APINT_TYPE_PREFIX, 18930) +HANDLE_BAT(APINT_TYPE_PREFIX, 18931) +HANDLE_BAT(APINT_TYPE_PREFIX, 18932) +HANDLE_BAT(APINT_TYPE_PREFIX, 18933) +HANDLE_BAT(APINT_TYPE_PREFIX, 18934) +HANDLE_BAT(APINT_TYPE_PREFIX, 18935) +HANDLE_BAT(APINT_TYPE_PREFIX, 18936) +HANDLE_BAT(APINT_TYPE_PREFIX, 18937) +HANDLE_BAT(APINT_TYPE_PREFIX, 18938) +HANDLE_BAT(APINT_TYPE_PREFIX, 18939) +HANDLE_BAT(APINT_TYPE_PREFIX, 18940) +HANDLE_BAT(APINT_TYPE_PREFIX, 18941) +HANDLE_BAT(APINT_TYPE_PREFIX, 18942) +HANDLE_BAT(APINT_TYPE_PREFIX, 18943) +HANDLE_BAT(APINT_TYPE_PREFIX, 18944) +HANDLE_BAT(APINT_TYPE_PREFIX, 18945) +HANDLE_BAT(APINT_TYPE_PREFIX, 18946) +HANDLE_BAT(APINT_TYPE_PREFIX, 18947) +HANDLE_BAT(APINT_TYPE_PREFIX, 18948) +HANDLE_BAT(APINT_TYPE_PREFIX, 18949) +HANDLE_BAT(APINT_TYPE_PREFIX, 18950) +HANDLE_BAT(APINT_TYPE_PREFIX, 18951) +HANDLE_BAT(APINT_TYPE_PREFIX, 18952) +HANDLE_BAT(APINT_TYPE_PREFIX, 18953) +HANDLE_BAT(APINT_TYPE_PREFIX, 18954) +HANDLE_BAT(APINT_TYPE_PREFIX, 18955) +HANDLE_BAT(APINT_TYPE_PREFIX, 18956) +HANDLE_BAT(APINT_TYPE_PREFIX, 18957) +HANDLE_BAT(APINT_TYPE_PREFIX, 18958) +HANDLE_BAT(APINT_TYPE_PREFIX, 18959) +HANDLE_BAT(APINT_TYPE_PREFIX, 18960) +HANDLE_BAT(APINT_TYPE_PREFIX, 18961) +HANDLE_BAT(APINT_TYPE_PREFIX, 18962) +HANDLE_BAT(APINT_TYPE_PREFIX, 18963) +HANDLE_BAT(APINT_TYPE_PREFIX, 18964) +HANDLE_BAT(APINT_TYPE_PREFIX, 18965) +HANDLE_BAT(APINT_TYPE_PREFIX, 18966) +HANDLE_BAT(APINT_TYPE_PREFIX, 18967) +HANDLE_BAT(APINT_TYPE_PREFIX, 18968) +HANDLE_BAT(APINT_TYPE_PREFIX, 18969) +HANDLE_BAT(APINT_TYPE_PREFIX, 18970) +HANDLE_BAT(APINT_TYPE_PREFIX, 18971) +HANDLE_BAT(APINT_TYPE_PREFIX, 18972) +HANDLE_BAT(APINT_TYPE_PREFIX, 18973) +HANDLE_BAT(APINT_TYPE_PREFIX, 18974) +HANDLE_BAT(APINT_TYPE_PREFIX, 18975) +HANDLE_BAT(APINT_TYPE_PREFIX, 18976) +HANDLE_BAT(APINT_TYPE_PREFIX, 18977) +HANDLE_BAT(APINT_TYPE_PREFIX, 18978) +HANDLE_BAT(APINT_TYPE_PREFIX, 18979) +HANDLE_BAT(APINT_TYPE_PREFIX, 18980) +HANDLE_BAT(APINT_TYPE_PREFIX, 18981) +HANDLE_BAT(APINT_TYPE_PREFIX, 18982) +HANDLE_BAT(APINT_TYPE_PREFIX, 18983) +HANDLE_BAT(APINT_TYPE_PREFIX, 18984) +HANDLE_BAT(APINT_TYPE_PREFIX, 18985) +HANDLE_BAT(APINT_TYPE_PREFIX, 18986) +HANDLE_BAT(APINT_TYPE_PREFIX, 18987) +HANDLE_BAT(APINT_TYPE_PREFIX, 18988) +HANDLE_BAT(APINT_TYPE_PREFIX, 18989) +HANDLE_BAT(APINT_TYPE_PREFIX, 18990) +HANDLE_BAT(APINT_TYPE_PREFIX, 18991) +HANDLE_BAT(APINT_TYPE_PREFIX, 18992) +HANDLE_BAT(APINT_TYPE_PREFIX, 18993) +HANDLE_BAT(APINT_TYPE_PREFIX, 18994) +HANDLE_BAT(APINT_TYPE_PREFIX, 18995) +HANDLE_BAT(APINT_TYPE_PREFIX, 18996) +HANDLE_BAT(APINT_TYPE_PREFIX, 18997) +HANDLE_BAT(APINT_TYPE_PREFIX, 18998) +HANDLE_BAT(APINT_TYPE_PREFIX, 18999) +HANDLE_BAT(APINT_TYPE_PREFIX, 19000) +HANDLE_BAT(APINT_TYPE_PREFIX, 19001) +HANDLE_BAT(APINT_TYPE_PREFIX, 19002) +HANDLE_BAT(APINT_TYPE_PREFIX, 19003) +HANDLE_BAT(APINT_TYPE_PREFIX, 19004) +HANDLE_BAT(APINT_TYPE_PREFIX, 19005) +HANDLE_BAT(APINT_TYPE_PREFIX, 19006) +HANDLE_BAT(APINT_TYPE_PREFIX, 19007) +HANDLE_BAT(APINT_TYPE_PREFIX, 19008) +HANDLE_BAT(APINT_TYPE_PREFIX, 19009) +HANDLE_BAT(APINT_TYPE_PREFIX, 19010) +HANDLE_BAT(APINT_TYPE_PREFIX, 19011) +HANDLE_BAT(APINT_TYPE_PREFIX, 19012) +HANDLE_BAT(APINT_TYPE_PREFIX, 19013) +HANDLE_BAT(APINT_TYPE_PREFIX, 19014) +HANDLE_BAT(APINT_TYPE_PREFIX, 19015) +HANDLE_BAT(APINT_TYPE_PREFIX, 19016) +HANDLE_BAT(APINT_TYPE_PREFIX, 19017) +HANDLE_BAT(APINT_TYPE_PREFIX, 19018) +HANDLE_BAT(APINT_TYPE_PREFIX, 19019) +HANDLE_BAT(APINT_TYPE_PREFIX, 19020) +HANDLE_BAT(APINT_TYPE_PREFIX, 19021) +HANDLE_BAT(APINT_TYPE_PREFIX, 19022) +HANDLE_BAT(APINT_TYPE_PREFIX, 19023) +HANDLE_BAT(APINT_TYPE_PREFIX, 19024) +HANDLE_BAT(APINT_TYPE_PREFIX, 19025) +HANDLE_BAT(APINT_TYPE_PREFIX, 19026) +HANDLE_BAT(APINT_TYPE_PREFIX, 19027) +HANDLE_BAT(APINT_TYPE_PREFIX, 19028) +HANDLE_BAT(APINT_TYPE_PREFIX, 19029) +HANDLE_BAT(APINT_TYPE_PREFIX, 19030) +HANDLE_BAT(APINT_TYPE_PREFIX, 19031) +HANDLE_BAT(APINT_TYPE_PREFIX, 19032) +HANDLE_BAT(APINT_TYPE_PREFIX, 19033) +HANDLE_BAT(APINT_TYPE_PREFIX, 19034) +HANDLE_BAT(APINT_TYPE_PREFIX, 19035) +HANDLE_BAT(APINT_TYPE_PREFIX, 19036) +HANDLE_BAT(APINT_TYPE_PREFIX, 19037) +HANDLE_BAT(APINT_TYPE_PREFIX, 19038) +HANDLE_BAT(APINT_TYPE_PREFIX, 19039) +HANDLE_BAT(APINT_TYPE_PREFIX, 19040) +HANDLE_BAT(APINT_TYPE_PREFIX, 19041) +HANDLE_BAT(APINT_TYPE_PREFIX, 19042) +HANDLE_BAT(APINT_TYPE_PREFIX, 19043) +HANDLE_BAT(APINT_TYPE_PREFIX, 19044) +HANDLE_BAT(APINT_TYPE_PREFIX, 19045) +HANDLE_BAT(APINT_TYPE_PREFIX, 19046) +HANDLE_BAT(APINT_TYPE_PREFIX, 19047) +HANDLE_BAT(APINT_TYPE_PREFIX, 19048) +HANDLE_BAT(APINT_TYPE_PREFIX, 19049) +HANDLE_BAT(APINT_TYPE_PREFIX, 19050) +HANDLE_BAT(APINT_TYPE_PREFIX, 19051) +HANDLE_BAT(APINT_TYPE_PREFIX, 19052) +HANDLE_BAT(APINT_TYPE_PREFIX, 19053) +HANDLE_BAT(APINT_TYPE_PREFIX, 19054) +HANDLE_BAT(APINT_TYPE_PREFIX, 19055) +HANDLE_BAT(APINT_TYPE_PREFIX, 19056) +HANDLE_BAT(APINT_TYPE_PREFIX, 19057) +HANDLE_BAT(APINT_TYPE_PREFIX, 19058) +HANDLE_BAT(APINT_TYPE_PREFIX, 19059) +HANDLE_BAT(APINT_TYPE_PREFIX, 19060) +HANDLE_BAT(APINT_TYPE_PREFIX, 19061) +HANDLE_BAT(APINT_TYPE_PREFIX, 19062) +HANDLE_BAT(APINT_TYPE_PREFIX, 19063) +HANDLE_BAT(APINT_TYPE_PREFIX, 19064) +HANDLE_BAT(APINT_TYPE_PREFIX, 19065) +HANDLE_BAT(APINT_TYPE_PREFIX, 19066) +HANDLE_BAT(APINT_TYPE_PREFIX, 19067) +HANDLE_BAT(APINT_TYPE_PREFIX, 19068) +HANDLE_BAT(APINT_TYPE_PREFIX, 19069) +HANDLE_BAT(APINT_TYPE_PREFIX, 19070) +HANDLE_BAT(APINT_TYPE_PREFIX, 19071) +HANDLE_BAT(APINT_TYPE_PREFIX, 19072) +HANDLE_BAT(APINT_TYPE_PREFIX, 19073) +HANDLE_BAT(APINT_TYPE_PREFIX, 19074) +HANDLE_BAT(APINT_TYPE_PREFIX, 19075) +HANDLE_BAT(APINT_TYPE_PREFIX, 19076) +HANDLE_BAT(APINT_TYPE_PREFIX, 19077) +HANDLE_BAT(APINT_TYPE_PREFIX, 19078) +HANDLE_BAT(APINT_TYPE_PREFIX, 19079) +HANDLE_BAT(APINT_TYPE_PREFIX, 19080) +HANDLE_BAT(APINT_TYPE_PREFIX, 19081) +HANDLE_BAT(APINT_TYPE_PREFIX, 19082) +HANDLE_BAT(APINT_TYPE_PREFIX, 19083) +HANDLE_BAT(APINT_TYPE_PREFIX, 19084) +HANDLE_BAT(APINT_TYPE_PREFIX, 19085) +HANDLE_BAT(APINT_TYPE_PREFIX, 19086) +HANDLE_BAT(APINT_TYPE_PREFIX, 19087) +HANDLE_BAT(APINT_TYPE_PREFIX, 19088) +HANDLE_BAT(APINT_TYPE_PREFIX, 19089) +HANDLE_BAT(APINT_TYPE_PREFIX, 19090) +HANDLE_BAT(APINT_TYPE_PREFIX, 19091) +HANDLE_BAT(APINT_TYPE_PREFIX, 19092) +HANDLE_BAT(APINT_TYPE_PREFIX, 19093) +HANDLE_BAT(APINT_TYPE_PREFIX, 19094) +HANDLE_BAT(APINT_TYPE_PREFIX, 19095) +HANDLE_BAT(APINT_TYPE_PREFIX, 19096) +HANDLE_BAT(APINT_TYPE_PREFIX, 19097) +HANDLE_BAT(APINT_TYPE_PREFIX, 19098) +HANDLE_BAT(APINT_TYPE_PREFIX, 19099) +HANDLE_BAT(APINT_TYPE_PREFIX, 19100) +HANDLE_BAT(APINT_TYPE_PREFIX, 19101) +HANDLE_BAT(APINT_TYPE_PREFIX, 19102) +HANDLE_BAT(APINT_TYPE_PREFIX, 19103) +HANDLE_BAT(APINT_TYPE_PREFIX, 19104) +HANDLE_BAT(APINT_TYPE_PREFIX, 19105) +HANDLE_BAT(APINT_TYPE_PREFIX, 19106) +HANDLE_BAT(APINT_TYPE_PREFIX, 19107) +HANDLE_BAT(APINT_TYPE_PREFIX, 19108) +HANDLE_BAT(APINT_TYPE_PREFIX, 19109) +HANDLE_BAT(APINT_TYPE_PREFIX, 19110) +HANDLE_BAT(APINT_TYPE_PREFIX, 19111) +HANDLE_BAT(APINT_TYPE_PREFIX, 19112) +HANDLE_BAT(APINT_TYPE_PREFIX, 19113) +HANDLE_BAT(APINT_TYPE_PREFIX, 19114) +HANDLE_BAT(APINT_TYPE_PREFIX, 19115) +HANDLE_BAT(APINT_TYPE_PREFIX, 19116) +HANDLE_BAT(APINT_TYPE_PREFIX, 19117) +HANDLE_BAT(APINT_TYPE_PREFIX, 19118) +HANDLE_BAT(APINT_TYPE_PREFIX, 19119) +HANDLE_BAT(APINT_TYPE_PREFIX, 19120) +HANDLE_BAT(APINT_TYPE_PREFIX, 19121) +HANDLE_BAT(APINT_TYPE_PREFIX, 19122) +HANDLE_BAT(APINT_TYPE_PREFIX, 19123) +HANDLE_BAT(APINT_TYPE_PREFIX, 19124) +HANDLE_BAT(APINT_TYPE_PREFIX, 19125) +HANDLE_BAT(APINT_TYPE_PREFIX, 19126) +HANDLE_BAT(APINT_TYPE_PREFIX, 19127) +HANDLE_BAT(APINT_TYPE_PREFIX, 19128) +HANDLE_BAT(APINT_TYPE_PREFIX, 19129) +HANDLE_BAT(APINT_TYPE_PREFIX, 19130) +HANDLE_BAT(APINT_TYPE_PREFIX, 19131) +HANDLE_BAT(APINT_TYPE_PREFIX, 19132) +HANDLE_BAT(APINT_TYPE_PREFIX, 19133) +HANDLE_BAT(APINT_TYPE_PREFIX, 19134) +HANDLE_BAT(APINT_TYPE_PREFIX, 19135) +HANDLE_BAT(APINT_TYPE_PREFIX, 19136) +HANDLE_BAT(APINT_TYPE_PREFIX, 19137) +HANDLE_BAT(APINT_TYPE_PREFIX, 19138) +HANDLE_BAT(APINT_TYPE_PREFIX, 19139) +HANDLE_BAT(APINT_TYPE_PREFIX, 19140) +HANDLE_BAT(APINT_TYPE_PREFIX, 19141) +HANDLE_BAT(APINT_TYPE_PREFIX, 19142) +HANDLE_BAT(APINT_TYPE_PREFIX, 19143) +HANDLE_BAT(APINT_TYPE_PREFIX, 19144) +HANDLE_BAT(APINT_TYPE_PREFIX, 19145) +HANDLE_BAT(APINT_TYPE_PREFIX, 19146) +HANDLE_BAT(APINT_TYPE_PREFIX, 19147) +HANDLE_BAT(APINT_TYPE_PREFIX, 19148) +HANDLE_BAT(APINT_TYPE_PREFIX, 19149) +HANDLE_BAT(APINT_TYPE_PREFIX, 19150) +HANDLE_BAT(APINT_TYPE_PREFIX, 19151) +HANDLE_BAT(APINT_TYPE_PREFIX, 19152) +HANDLE_BAT(APINT_TYPE_PREFIX, 19153) +HANDLE_BAT(APINT_TYPE_PREFIX, 19154) +HANDLE_BAT(APINT_TYPE_PREFIX, 19155) +HANDLE_BAT(APINT_TYPE_PREFIX, 19156) +HANDLE_BAT(APINT_TYPE_PREFIX, 19157) +HANDLE_BAT(APINT_TYPE_PREFIX, 19158) +HANDLE_BAT(APINT_TYPE_PREFIX, 19159) +HANDLE_BAT(APINT_TYPE_PREFIX, 19160) +HANDLE_BAT(APINT_TYPE_PREFIX, 19161) +HANDLE_BAT(APINT_TYPE_PREFIX, 19162) +HANDLE_BAT(APINT_TYPE_PREFIX, 19163) +HANDLE_BAT(APINT_TYPE_PREFIX, 19164) +HANDLE_BAT(APINT_TYPE_PREFIX, 19165) +HANDLE_BAT(APINT_TYPE_PREFIX, 19166) +HANDLE_BAT(APINT_TYPE_PREFIX, 19167) +HANDLE_BAT(APINT_TYPE_PREFIX, 19168) +HANDLE_BAT(APINT_TYPE_PREFIX, 19169) +HANDLE_BAT(APINT_TYPE_PREFIX, 19170) +HANDLE_BAT(APINT_TYPE_PREFIX, 19171) +HANDLE_BAT(APINT_TYPE_PREFIX, 19172) +HANDLE_BAT(APINT_TYPE_PREFIX, 19173) +HANDLE_BAT(APINT_TYPE_PREFIX, 19174) +HANDLE_BAT(APINT_TYPE_PREFIX, 19175) +HANDLE_BAT(APINT_TYPE_PREFIX, 19176) +HANDLE_BAT(APINT_TYPE_PREFIX, 19177) +HANDLE_BAT(APINT_TYPE_PREFIX, 19178) +HANDLE_BAT(APINT_TYPE_PREFIX, 19179) +HANDLE_BAT(APINT_TYPE_PREFIX, 19180) +HANDLE_BAT(APINT_TYPE_PREFIX, 19181) +HANDLE_BAT(APINT_TYPE_PREFIX, 19182) +HANDLE_BAT(APINT_TYPE_PREFIX, 19183) +HANDLE_BAT(APINT_TYPE_PREFIX, 19184) +HANDLE_BAT(APINT_TYPE_PREFIX, 19185) +HANDLE_BAT(APINT_TYPE_PREFIX, 19186) +HANDLE_BAT(APINT_TYPE_PREFIX, 19187) +HANDLE_BAT(APINT_TYPE_PREFIX, 19188) +HANDLE_BAT(APINT_TYPE_PREFIX, 19189) +HANDLE_BAT(APINT_TYPE_PREFIX, 19190) +HANDLE_BAT(APINT_TYPE_PREFIX, 19191) +HANDLE_BAT(APINT_TYPE_PREFIX, 19192) +HANDLE_BAT(APINT_TYPE_PREFIX, 19193) +HANDLE_BAT(APINT_TYPE_PREFIX, 19194) +HANDLE_BAT(APINT_TYPE_PREFIX, 19195) +HANDLE_BAT(APINT_TYPE_PREFIX, 19196) +HANDLE_BAT(APINT_TYPE_PREFIX, 19197) +HANDLE_BAT(APINT_TYPE_PREFIX, 19198) +HANDLE_BAT(APINT_TYPE_PREFIX, 19199) +HANDLE_BAT(APINT_TYPE_PREFIX, 19200) +HANDLE_BAT(APINT_TYPE_PREFIX, 19201) +HANDLE_BAT(APINT_TYPE_PREFIX, 19202) +HANDLE_BAT(APINT_TYPE_PREFIX, 19203) +HANDLE_BAT(APINT_TYPE_PREFIX, 19204) +HANDLE_BAT(APINT_TYPE_PREFIX, 19205) +HANDLE_BAT(APINT_TYPE_PREFIX, 19206) +HANDLE_BAT(APINT_TYPE_PREFIX, 19207) +HANDLE_BAT(APINT_TYPE_PREFIX, 19208) +HANDLE_BAT(APINT_TYPE_PREFIX, 19209) +HANDLE_BAT(APINT_TYPE_PREFIX, 19210) +HANDLE_BAT(APINT_TYPE_PREFIX, 19211) +HANDLE_BAT(APINT_TYPE_PREFIX, 19212) +HANDLE_BAT(APINT_TYPE_PREFIX, 19213) +HANDLE_BAT(APINT_TYPE_PREFIX, 19214) +HANDLE_BAT(APINT_TYPE_PREFIX, 19215) +HANDLE_BAT(APINT_TYPE_PREFIX, 19216) +HANDLE_BAT(APINT_TYPE_PREFIX, 19217) +HANDLE_BAT(APINT_TYPE_PREFIX, 19218) +HANDLE_BAT(APINT_TYPE_PREFIX, 19219) +HANDLE_BAT(APINT_TYPE_PREFIX, 19220) +HANDLE_BAT(APINT_TYPE_PREFIX, 19221) +HANDLE_BAT(APINT_TYPE_PREFIX, 19222) +HANDLE_BAT(APINT_TYPE_PREFIX, 19223) +HANDLE_BAT(APINT_TYPE_PREFIX, 19224) +HANDLE_BAT(APINT_TYPE_PREFIX, 19225) +HANDLE_BAT(APINT_TYPE_PREFIX, 19226) +HANDLE_BAT(APINT_TYPE_PREFIX, 19227) +HANDLE_BAT(APINT_TYPE_PREFIX, 19228) +HANDLE_BAT(APINT_TYPE_PREFIX, 19229) +HANDLE_BAT(APINT_TYPE_PREFIX, 19230) +HANDLE_BAT(APINT_TYPE_PREFIX, 19231) +HANDLE_BAT(APINT_TYPE_PREFIX, 19232) +HANDLE_BAT(APINT_TYPE_PREFIX, 19233) +HANDLE_BAT(APINT_TYPE_PREFIX, 19234) +HANDLE_BAT(APINT_TYPE_PREFIX, 19235) +HANDLE_BAT(APINT_TYPE_PREFIX, 19236) +HANDLE_BAT(APINT_TYPE_PREFIX, 19237) +HANDLE_BAT(APINT_TYPE_PREFIX, 19238) +HANDLE_BAT(APINT_TYPE_PREFIX, 19239) +HANDLE_BAT(APINT_TYPE_PREFIX, 19240) +HANDLE_BAT(APINT_TYPE_PREFIX, 19241) +HANDLE_BAT(APINT_TYPE_PREFIX, 19242) +HANDLE_BAT(APINT_TYPE_PREFIX, 19243) +HANDLE_BAT(APINT_TYPE_PREFIX, 19244) +HANDLE_BAT(APINT_TYPE_PREFIX, 19245) +HANDLE_BAT(APINT_TYPE_PREFIX, 19246) +HANDLE_BAT(APINT_TYPE_PREFIX, 19247) +HANDLE_BAT(APINT_TYPE_PREFIX, 19248) +HANDLE_BAT(APINT_TYPE_PREFIX, 19249) +HANDLE_BAT(APINT_TYPE_PREFIX, 19250) +HANDLE_BAT(APINT_TYPE_PREFIX, 19251) +HANDLE_BAT(APINT_TYPE_PREFIX, 19252) +HANDLE_BAT(APINT_TYPE_PREFIX, 19253) +HANDLE_BAT(APINT_TYPE_PREFIX, 19254) +HANDLE_BAT(APINT_TYPE_PREFIX, 19255) +HANDLE_BAT(APINT_TYPE_PREFIX, 19256) +HANDLE_BAT(APINT_TYPE_PREFIX, 19257) +HANDLE_BAT(APINT_TYPE_PREFIX, 19258) +HANDLE_BAT(APINT_TYPE_PREFIX, 19259) +HANDLE_BAT(APINT_TYPE_PREFIX, 19260) +HANDLE_BAT(APINT_TYPE_PREFIX, 19261) +HANDLE_BAT(APINT_TYPE_PREFIX, 19262) +HANDLE_BAT(APINT_TYPE_PREFIX, 19263) +HANDLE_BAT(APINT_TYPE_PREFIX, 19264) +HANDLE_BAT(APINT_TYPE_PREFIX, 19265) +HANDLE_BAT(APINT_TYPE_PREFIX, 19266) +HANDLE_BAT(APINT_TYPE_PREFIX, 19267) +HANDLE_BAT(APINT_TYPE_PREFIX, 19268) +HANDLE_BAT(APINT_TYPE_PREFIX, 19269) +HANDLE_BAT(APINT_TYPE_PREFIX, 19270) +HANDLE_BAT(APINT_TYPE_PREFIX, 19271) +HANDLE_BAT(APINT_TYPE_PREFIX, 19272) +HANDLE_BAT(APINT_TYPE_PREFIX, 19273) +HANDLE_BAT(APINT_TYPE_PREFIX, 19274) +HANDLE_BAT(APINT_TYPE_PREFIX, 19275) +HANDLE_BAT(APINT_TYPE_PREFIX, 19276) +HANDLE_BAT(APINT_TYPE_PREFIX, 19277) +HANDLE_BAT(APINT_TYPE_PREFIX, 19278) +HANDLE_BAT(APINT_TYPE_PREFIX, 19279) +HANDLE_BAT(APINT_TYPE_PREFIX, 19280) +HANDLE_BAT(APINT_TYPE_PREFIX, 19281) +HANDLE_BAT(APINT_TYPE_PREFIX, 19282) +HANDLE_BAT(APINT_TYPE_PREFIX, 19283) +HANDLE_BAT(APINT_TYPE_PREFIX, 19284) +HANDLE_BAT(APINT_TYPE_PREFIX, 19285) +HANDLE_BAT(APINT_TYPE_PREFIX, 19286) +HANDLE_BAT(APINT_TYPE_PREFIX, 19287) +HANDLE_BAT(APINT_TYPE_PREFIX, 19288) +HANDLE_BAT(APINT_TYPE_PREFIX, 19289) +HANDLE_BAT(APINT_TYPE_PREFIX, 19290) +HANDLE_BAT(APINT_TYPE_PREFIX, 19291) +HANDLE_BAT(APINT_TYPE_PREFIX, 19292) +HANDLE_BAT(APINT_TYPE_PREFIX, 19293) +HANDLE_BAT(APINT_TYPE_PREFIX, 19294) +HANDLE_BAT(APINT_TYPE_PREFIX, 19295) +HANDLE_BAT(APINT_TYPE_PREFIX, 19296) +HANDLE_BAT(APINT_TYPE_PREFIX, 19297) +HANDLE_BAT(APINT_TYPE_PREFIX, 19298) +HANDLE_BAT(APINT_TYPE_PREFIX, 19299) +HANDLE_BAT(APINT_TYPE_PREFIX, 19300) +HANDLE_BAT(APINT_TYPE_PREFIX, 19301) +HANDLE_BAT(APINT_TYPE_PREFIX, 19302) +HANDLE_BAT(APINT_TYPE_PREFIX, 19303) +HANDLE_BAT(APINT_TYPE_PREFIX, 19304) +HANDLE_BAT(APINT_TYPE_PREFIX, 19305) +HANDLE_BAT(APINT_TYPE_PREFIX, 19306) +HANDLE_BAT(APINT_TYPE_PREFIX, 19307) +HANDLE_BAT(APINT_TYPE_PREFIX, 19308) +HANDLE_BAT(APINT_TYPE_PREFIX, 19309) +HANDLE_BAT(APINT_TYPE_PREFIX, 19310) +HANDLE_BAT(APINT_TYPE_PREFIX, 19311) +HANDLE_BAT(APINT_TYPE_PREFIX, 19312) +HANDLE_BAT(APINT_TYPE_PREFIX, 19313) +HANDLE_BAT(APINT_TYPE_PREFIX, 19314) +HANDLE_BAT(APINT_TYPE_PREFIX, 19315) +HANDLE_BAT(APINT_TYPE_PREFIX, 19316) +HANDLE_BAT(APINT_TYPE_PREFIX, 19317) +HANDLE_BAT(APINT_TYPE_PREFIX, 19318) +HANDLE_BAT(APINT_TYPE_PREFIX, 19319) +HANDLE_BAT(APINT_TYPE_PREFIX, 19320) +HANDLE_BAT(APINT_TYPE_PREFIX, 19321) +HANDLE_BAT(APINT_TYPE_PREFIX, 19322) +HANDLE_BAT(APINT_TYPE_PREFIX, 19323) +HANDLE_BAT(APINT_TYPE_PREFIX, 19324) +HANDLE_BAT(APINT_TYPE_PREFIX, 19325) +HANDLE_BAT(APINT_TYPE_PREFIX, 19326) +HANDLE_BAT(APINT_TYPE_PREFIX, 19327) +HANDLE_BAT(APINT_TYPE_PREFIX, 19328) +HANDLE_BAT(APINT_TYPE_PREFIX, 19329) +HANDLE_BAT(APINT_TYPE_PREFIX, 19330) +HANDLE_BAT(APINT_TYPE_PREFIX, 19331) +HANDLE_BAT(APINT_TYPE_PREFIX, 19332) +HANDLE_BAT(APINT_TYPE_PREFIX, 19333) +HANDLE_BAT(APINT_TYPE_PREFIX, 19334) +HANDLE_BAT(APINT_TYPE_PREFIX, 19335) +HANDLE_BAT(APINT_TYPE_PREFIX, 19336) +HANDLE_BAT(APINT_TYPE_PREFIX, 19337) +HANDLE_BAT(APINT_TYPE_PREFIX, 19338) +HANDLE_BAT(APINT_TYPE_PREFIX, 19339) +HANDLE_BAT(APINT_TYPE_PREFIX, 19340) +HANDLE_BAT(APINT_TYPE_PREFIX, 19341) +HANDLE_BAT(APINT_TYPE_PREFIX, 19342) +HANDLE_BAT(APINT_TYPE_PREFIX, 19343) +HANDLE_BAT(APINT_TYPE_PREFIX, 19344) +HANDLE_BAT(APINT_TYPE_PREFIX, 19345) +HANDLE_BAT(APINT_TYPE_PREFIX, 19346) +HANDLE_BAT(APINT_TYPE_PREFIX, 19347) +HANDLE_BAT(APINT_TYPE_PREFIX, 19348) +HANDLE_BAT(APINT_TYPE_PREFIX, 19349) +HANDLE_BAT(APINT_TYPE_PREFIX, 19350) +HANDLE_BAT(APINT_TYPE_PREFIX, 19351) +HANDLE_BAT(APINT_TYPE_PREFIX, 19352) +HANDLE_BAT(APINT_TYPE_PREFIX, 19353) +HANDLE_BAT(APINT_TYPE_PREFIX, 19354) +HANDLE_BAT(APINT_TYPE_PREFIX, 19355) +HANDLE_BAT(APINT_TYPE_PREFIX, 19356) +HANDLE_BAT(APINT_TYPE_PREFIX, 19357) +HANDLE_BAT(APINT_TYPE_PREFIX, 19358) +HANDLE_BAT(APINT_TYPE_PREFIX, 19359) +HANDLE_BAT(APINT_TYPE_PREFIX, 19360) +HANDLE_BAT(APINT_TYPE_PREFIX, 19361) +HANDLE_BAT(APINT_TYPE_PREFIX, 19362) +HANDLE_BAT(APINT_TYPE_PREFIX, 19363) +HANDLE_BAT(APINT_TYPE_PREFIX, 19364) +HANDLE_BAT(APINT_TYPE_PREFIX, 19365) +HANDLE_BAT(APINT_TYPE_PREFIX, 19366) +HANDLE_BAT(APINT_TYPE_PREFIX, 19367) +HANDLE_BAT(APINT_TYPE_PREFIX, 19368) +HANDLE_BAT(APINT_TYPE_PREFIX, 19369) +HANDLE_BAT(APINT_TYPE_PREFIX, 19370) +HANDLE_BAT(APINT_TYPE_PREFIX, 19371) +HANDLE_BAT(APINT_TYPE_PREFIX, 19372) +HANDLE_BAT(APINT_TYPE_PREFIX, 19373) +HANDLE_BAT(APINT_TYPE_PREFIX, 19374) +HANDLE_BAT(APINT_TYPE_PREFIX, 19375) +HANDLE_BAT(APINT_TYPE_PREFIX, 19376) +HANDLE_BAT(APINT_TYPE_PREFIX, 19377) +HANDLE_BAT(APINT_TYPE_PREFIX, 19378) +HANDLE_BAT(APINT_TYPE_PREFIX, 19379) +HANDLE_BAT(APINT_TYPE_PREFIX, 19380) +HANDLE_BAT(APINT_TYPE_PREFIX, 19381) +HANDLE_BAT(APINT_TYPE_PREFIX, 19382) +HANDLE_BAT(APINT_TYPE_PREFIX, 19383) +HANDLE_BAT(APINT_TYPE_PREFIX, 19384) +HANDLE_BAT(APINT_TYPE_PREFIX, 19385) +HANDLE_BAT(APINT_TYPE_PREFIX, 19386) +HANDLE_BAT(APINT_TYPE_PREFIX, 19387) +HANDLE_BAT(APINT_TYPE_PREFIX, 19388) +HANDLE_BAT(APINT_TYPE_PREFIX, 19389) +HANDLE_BAT(APINT_TYPE_PREFIX, 19390) +HANDLE_BAT(APINT_TYPE_PREFIX, 19391) +HANDLE_BAT(APINT_TYPE_PREFIX, 19392) +HANDLE_BAT(APINT_TYPE_PREFIX, 19393) +HANDLE_BAT(APINT_TYPE_PREFIX, 19394) +HANDLE_BAT(APINT_TYPE_PREFIX, 19395) +HANDLE_BAT(APINT_TYPE_PREFIX, 19396) +HANDLE_BAT(APINT_TYPE_PREFIX, 19397) +HANDLE_BAT(APINT_TYPE_PREFIX, 19398) +HANDLE_BAT(APINT_TYPE_PREFIX, 19399) +HANDLE_BAT(APINT_TYPE_PREFIX, 19400) +HANDLE_BAT(APINT_TYPE_PREFIX, 19401) +HANDLE_BAT(APINT_TYPE_PREFIX, 19402) +HANDLE_BAT(APINT_TYPE_PREFIX, 19403) +HANDLE_BAT(APINT_TYPE_PREFIX, 19404) +HANDLE_BAT(APINT_TYPE_PREFIX, 19405) +HANDLE_BAT(APINT_TYPE_PREFIX, 19406) +HANDLE_BAT(APINT_TYPE_PREFIX, 19407) +HANDLE_BAT(APINT_TYPE_PREFIX, 19408) +HANDLE_BAT(APINT_TYPE_PREFIX, 19409) +HANDLE_BAT(APINT_TYPE_PREFIX, 19410) +HANDLE_BAT(APINT_TYPE_PREFIX, 19411) +HANDLE_BAT(APINT_TYPE_PREFIX, 19412) +HANDLE_BAT(APINT_TYPE_PREFIX, 19413) +HANDLE_BAT(APINT_TYPE_PREFIX, 19414) +HANDLE_BAT(APINT_TYPE_PREFIX, 19415) +HANDLE_BAT(APINT_TYPE_PREFIX, 19416) +HANDLE_BAT(APINT_TYPE_PREFIX, 19417) +HANDLE_BAT(APINT_TYPE_PREFIX, 19418) +HANDLE_BAT(APINT_TYPE_PREFIX, 19419) +HANDLE_BAT(APINT_TYPE_PREFIX, 19420) +HANDLE_BAT(APINT_TYPE_PREFIX, 19421) +HANDLE_BAT(APINT_TYPE_PREFIX, 19422) +HANDLE_BAT(APINT_TYPE_PREFIX, 19423) +HANDLE_BAT(APINT_TYPE_PREFIX, 19424) +HANDLE_BAT(APINT_TYPE_PREFIX, 19425) +HANDLE_BAT(APINT_TYPE_PREFIX, 19426) +HANDLE_BAT(APINT_TYPE_PREFIX, 19427) +HANDLE_BAT(APINT_TYPE_PREFIX, 19428) +HANDLE_BAT(APINT_TYPE_PREFIX, 19429) +HANDLE_BAT(APINT_TYPE_PREFIX, 19430) +HANDLE_BAT(APINT_TYPE_PREFIX, 19431) +HANDLE_BAT(APINT_TYPE_PREFIX, 19432) +HANDLE_BAT(APINT_TYPE_PREFIX, 19433) +HANDLE_BAT(APINT_TYPE_PREFIX, 19434) +HANDLE_BAT(APINT_TYPE_PREFIX, 19435) +HANDLE_BAT(APINT_TYPE_PREFIX, 19436) +HANDLE_BAT(APINT_TYPE_PREFIX, 19437) +HANDLE_BAT(APINT_TYPE_PREFIX, 19438) +HANDLE_BAT(APINT_TYPE_PREFIX, 19439) +HANDLE_BAT(APINT_TYPE_PREFIX, 19440) +HANDLE_BAT(APINT_TYPE_PREFIX, 19441) +HANDLE_BAT(APINT_TYPE_PREFIX, 19442) +HANDLE_BAT(APINT_TYPE_PREFIX, 19443) +HANDLE_BAT(APINT_TYPE_PREFIX, 19444) +HANDLE_BAT(APINT_TYPE_PREFIX, 19445) +HANDLE_BAT(APINT_TYPE_PREFIX, 19446) +HANDLE_BAT(APINT_TYPE_PREFIX, 19447) +HANDLE_BAT(APINT_TYPE_PREFIX, 19448) +HANDLE_BAT(APINT_TYPE_PREFIX, 19449) +HANDLE_BAT(APINT_TYPE_PREFIX, 19450) +HANDLE_BAT(APINT_TYPE_PREFIX, 19451) +HANDLE_BAT(APINT_TYPE_PREFIX, 19452) +HANDLE_BAT(APINT_TYPE_PREFIX, 19453) +HANDLE_BAT(APINT_TYPE_PREFIX, 19454) +HANDLE_BAT(APINT_TYPE_PREFIX, 19455) +HANDLE_BAT(APINT_TYPE_PREFIX, 19456) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 19 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 19457) +HANDLE_BAT(, 19458) +HANDLE_BAT(, 19459) +HANDLE_BAT(, 19460) +HANDLE_BAT(, 19461) +HANDLE_BAT(, 19462) +HANDLE_BAT(, 19463) +HANDLE_BAT(, 19464) +HANDLE_BAT(, 19465) +HANDLE_BAT(, 19466) +HANDLE_BAT(, 19467) +HANDLE_BAT(, 19468) +HANDLE_BAT(, 19469) +HANDLE_BAT(, 19470) +HANDLE_BAT(, 19471) +HANDLE_BAT(, 19472) +HANDLE_BAT(, 19473) +HANDLE_BAT(, 19474) +HANDLE_BAT(, 19475) +HANDLE_BAT(, 19476) +HANDLE_BAT(, 19477) +HANDLE_BAT(, 19478) +HANDLE_BAT(, 19479) +HANDLE_BAT(, 19480) +HANDLE_BAT(, 19481) +HANDLE_BAT(, 19482) +HANDLE_BAT(, 19483) +HANDLE_BAT(, 19484) +HANDLE_BAT(, 19485) +HANDLE_BAT(, 19486) +HANDLE_BAT(, 19487) +HANDLE_BAT(, 19488) +HANDLE_BAT(, 19489) +HANDLE_BAT(, 19490) +HANDLE_BAT(, 19491) +HANDLE_BAT(, 19492) +HANDLE_BAT(, 19493) +HANDLE_BAT(, 19494) +HANDLE_BAT(, 19495) +HANDLE_BAT(, 19496) +HANDLE_BAT(, 19497) +HANDLE_BAT(, 19498) +HANDLE_BAT(, 19499) +HANDLE_BAT(, 19500) +HANDLE_BAT(, 19501) +HANDLE_BAT(, 19502) +HANDLE_BAT(, 19503) +HANDLE_BAT(, 19504) +HANDLE_BAT(, 19505) +HANDLE_BAT(, 19506) +HANDLE_BAT(, 19507) +HANDLE_BAT(, 19508) +HANDLE_BAT(, 19509) +HANDLE_BAT(, 19510) +HANDLE_BAT(, 19511) +HANDLE_BAT(, 19512) +HANDLE_BAT(, 19513) +HANDLE_BAT(, 19514) +HANDLE_BAT(, 19515) +HANDLE_BAT(, 19516) +HANDLE_BAT(, 19517) +HANDLE_BAT(, 19518) +HANDLE_BAT(, 19519) +HANDLE_BAT(, 19520) +HANDLE_BAT(, 19521) +HANDLE_BAT(, 19522) +HANDLE_BAT(, 19523) +HANDLE_BAT(, 19524) +HANDLE_BAT(, 19525) +HANDLE_BAT(, 19526) +HANDLE_BAT(, 19527) +HANDLE_BAT(, 19528) +HANDLE_BAT(, 19529) +HANDLE_BAT(, 19530) +HANDLE_BAT(, 19531) +HANDLE_BAT(, 19532) +HANDLE_BAT(, 19533) +HANDLE_BAT(, 19534) +HANDLE_BAT(, 19535) +HANDLE_BAT(, 19536) +HANDLE_BAT(, 19537) +HANDLE_BAT(, 19538) +HANDLE_BAT(, 19539) +HANDLE_BAT(, 19540) +HANDLE_BAT(, 19541) +HANDLE_BAT(, 19542) +HANDLE_BAT(, 19543) +HANDLE_BAT(, 19544) +HANDLE_BAT(, 19545) +HANDLE_BAT(, 19546) +HANDLE_BAT(, 19547) +HANDLE_BAT(, 19548) +HANDLE_BAT(, 19549) +HANDLE_BAT(, 19550) +HANDLE_BAT(, 19551) +HANDLE_BAT(, 19552) +HANDLE_BAT(, 19553) +HANDLE_BAT(, 19554) +HANDLE_BAT(, 19555) +HANDLE_BAT(, 19556) +HANDLE_BAT(, 19557) +HANDLE_BAT(, 19558) +HANDLE_BAT(, 19559) +HANDLE_BAT(, 19560) +HANDLE_BAT(, 19561) +HANDLE_BAT(, 19562) +HANDLE_BAT(, 19563) +HANDLE_BAT(, 19564) +HANDLE_BAT(, 19565) +HANDLE_BAT(, 19566) +HANDLE_BAT(, 19567) +HANDLE_BAT(, 19568) +HANDLE_BAT(, 19569) +HANDLE_BAT(, 19570) +HANDLE_BAT(, 19571) +HANDLE_BAT(, 19572) +HANDLE_BAT(, 19573) +HANDLE_BAT(, 19574) +HANDLE_BAT(, 19575) +HANDLE_BAT(, 19576) +HANDLE_BAT(, 19577) +HANDLE_BAT(, 19578) +HANDLE_BAT(, 19579) +HANDLE_BAT(, 19580) +HANDLE_BAT(, 19581) +HANDLE_BAT(, 19582) +HANDLE_BAT(, 19583) +HANDLE_BAT(, 19584) +HANDLE_BAT(, 19585) +HANDLE_BAT(, 19586) +HANDLE_BAT(, 19587) +HANDLE_BAT(, 19588) +HANDLE_BAT(, 19589) +HANDLE_BAT(, 19590) +HANDLE_BAT(, 19591) +HANDLE_BAT(, 19592) +HANDLE_BAT(, 19593) +HANDLE_BAT(, 19594) +HANDLE_BAT(, 19595) +HANDLE_BAT(, 19596) +HANDLE_BAT(, 19597) +HANDLE_BAT(, 19598) +HANDLE_BAT(, 19599) +HANDLE_BAT(, 19600) +HANDLE_BAT(, 19601) +HANDLE_BAT(, 19602) +HANDLE_BAT(, 19603) +HANDLE_BAT(, 19604) +HANDLE_BAT(, 19605) +HANDLE_BAT(, 19606) +HANDLE_BAT(, 19607) +HANDLE_BAT(, 19608) +HANDLE_BAT(, 19609) +HANDLE_BAT(, 19610) +HANDLE_BAT(, 19611) +HANDLE_BAT(, 19612) +HANDLE_BAT(, 19613) +HANDLE_BAT(, 19614) +HANDLE_BAT(, 19615) +HANDLE_BAT(, 19616) +HANDLE_BAT(, 19617) +HANDLE_BAT(, 19618) +HANDLE_BAT(, 19619) +HANDLE_BAT(, 19620) +HANDLE_BAT(, 19621) +HANDLE_BAT(, 19622) +HANDLE_BAT(, 19623) +HANDLE_BAT(, 19624) +HANDLE_BAT(, 19625) +HANDLE_BAT(, 19626) +HANDLE_BAT(, 19627) +HANDLE_BAT(, 19628) +HANDLE_BAT(, 19629) +HANDLE_BAT(, 19630) +HANDLE_BAT(, 19631) +HANDLE_BAT(, 19632) +HANDLE_BAT(, 19633) +HANDLE_BAT(, 19634) +HANDLE_BAT(, 19635) +HANDLE_BAT(, 19636) +HANDLE_BAT(, 19637) +HANDLE_BAT(, 19638) +HANDLE_BAT(, 19639) +HANDLE_BAT(, 19640) +HANDLE_BAT(, 19641) +HANDLE_BAT(, 19642) +HANDLE_BAT(, 19643) +HANDLE_BAT(, 19644) +HANDLE_BAT(, 19645) +HANDLE_BAT(, 19646) +HANDLE_BAT(, 19647) +HANDLE_BAT(, 19648) +HANDLE_BAT(, 19649) +HANDLE_BAT(, 19650) +HANDLE_BAT(, 19651) +HANDLE_BAT(, 19652) +HANDLE_BAT(, 19653) +HANDLE_BAT(, 19654) +HANDLE_BAT(, 19655) +HANDLE_BAT(, 19656) +HANDLE_BAT(, 19657) +HANDLE_BAT(, 19658) +HANDLE_BAT(, 19659) +HANDLE_BAT(, 19660) +HANDLE_BAT(, 19661) +HANDLE_BAT(, 19662) +HANDLE_BAT(, 19663) +HANDLE_BAT(, 19664) +HANDLE_BAT(, 19665) +HANDLE_BAT(, 19666) +HANDLE_BAT(, 19667) +HANDLE_BAT(, 19668) +HANDLE_BAT(, 19669) +HANDLE_BAT(, 19670) +HANDLE_BAT(, 19671) +HANDLE_BAT(, 19672) +HANDLE_BAT(, 19673) +HANDLE_BAT(, 19674) +HANDLE_BAT(, 19675) +HANDLE_BAT(, 19676) +HANDLE_BAT(, 19677) +HANDLE_BAT(, 19678) +HANDLE_BAT(, 19679) +HANDLE_BAT(, 19680) +HANDLE_BAT(, 19681) +HANDLE_BAT(, 19682) +HANDLE_BAT(, 19683) +HANDLE_BAT(, 19684) +HANDLE_BAT(, 19685) +HANDLE_BAT(, 19686) +HANDLE_BAT(, 19687) +HANDLE_BAT(, 19688) +HANDLE_BAT(, 19689) +HANDLE_BAT(, 19690) +HANDLE_BAT(, 19691) +HANDLE_BAT(, 19692) +HANDLE_BAT(, 19693) +HANDLE_BAT(, 19694) +HANDLE_BAT(, 19695) +HANDLE_BAT(, 19696) +HANDLE_BAT(, 19697) +HANDLE_BAT(, 19698) +HANDLE_BAT(, 19699) +HANDLE_BAT(, 19700) +HANDLE_BAT(, 19701) +HANDLE_BAT(, 19702) +HANDLE_BAT(, 19703) +HANDLE_BAT(, 19704) +HANDLE_BAT(, 19705) +HANDLE_BAT(, 19706) +HANDLE_BAT(, 19707) +HANDLE_BAT(, 19708) +HANDLE_BAT(, 19709) +HANDLE_BAT(, 19710) +HANDLE_BAT(, 19711) +HANDLE_BAT(, 19712) +HANDLE_BAT(, 19713) +HANDLE_BAT(, 19714) +HANDLE_BAT(, 19715) +HANDLE_BAT(, 19716) +HANDLE_BAT(, 19717) +HANDLE_BAT(, 19718) +HANDLE_BAT(, 19719) +HANDLE_BAT(, 19720) +HANDLE_BAT(, 19721) +HANDLE_BAT(, 19722) +HANDLE_BAT(, 19723) +HANDLE_BAT(, 19724) +HANDLE_BAT(, 19725) +HANDLE_BAT(, 19726) +HANDLE_BAT(, 19727) +HANDLE_BAT(, 19728) +HANDLE_BAT(, 19729) +HANDLE_BAT(, 19730) +HANDLE_BAT(, 19731) +HANDLE_BAT(, 19732) +HANDLE_BAT(, 19733) +HANDLE_BAT(, 19734) +HANDLE_BAT(, 19735) +HANDLE_BAT(, 19736) +HANDLE_BAT(, 19737) +HANDLE_BAT(, 19738) +HANDLE_BAT(, 19739) +HANDLE_BAT(, 19740) +HANDLE_BAT(, 19741) +HANDLE_BAT(, 19742) +HANDLE_BAT(, 19743) +HANDLE_BAT(, 19744) +HANDLE_BAT(, 19745) +HANDLE_BAT(, 19746) +HANDLE_BAT(, 19747) +HANDLE_BAT(, 19748) +HANDLE_BAT(, 19749) +HANDLE_BAT(, 19750) +HANDLE_BAT(, 19751) +HANDLE_BAT(, 19752) +HANDLE_BAT(, 19753) +HANDLE_BAT(, 19754) +HANDLE_BAT(, 19755) +HANDLE_BAT(, 19756) +HANDLE_BAT(, 19757) +HANDLE_BAT(, 19758) +HANDLE_BAT(, 19759) +HANDLE_BAT(, 19760) +HANDLE_BAT(, 19761) +HANDLE_BAT(, 19762) +HANDLE_BAT(, 19763) +HANDLE_BAT(, 19764) +HANDLE_BAT(, 19765) +HANDLE_BAT(, 19766) +HANDLE_BAT(, 19767) +HANDLE_BAT(, 19768) +HANDLE_BAT(, 19769) +HANDLE_BAT(, 19770) +HANDLE_BAT(, 19771) +HANDLE_BAT(, 19772) +HANDLE_BAT(, 19773) +HANDLE_BAT(, 19774) +HANDLE_BAT(, 19775) +HANDLE_BAT(, 19776) +HANDLE_BAT(, 19777) +HANDLE_BAT(, 19778) +HANDLE_BAT(, 19779) +HANDLE_BAT(, 19780) +HANDLE_BAT(, 19781) +HANDLE_BAT(, 19782) +HANDLE_BAT(, 19783) +HANDLE_BAT(, 19784) +HANDLE_BAT(, 19785) +HANDLE_BAT(, 19786) +HANDLE_BAT(, 19787) +HANDLE_BAT(, 19788) +HANDLE_BAT(, 19789) +HANDLE_BAT(, 19790) +HANDLE_BAT(, 19791) +HANDLE_BAT(, 19792) +HANDLE_BAT(, 19793) +HANDLE_BAT(, 19794) +HANDLE_BAT(, 19795) +HANDLE_BAT(, 19796) +HANDLE_BAT(, 19797) +HANDLE_BAT(, 19798) +HANDLE_BAT(, 19799) +HANDLE_BAT(, 19800) +HANDLE_BAT(, 19801) +HANDLE_BAT(, 19802) +HANDLE_BAT(, 19803) +HANDLE_BAT(, 19804) +HANDLE_BAT(, 19805) +HANDLE_BAT(, 19806) +HANDLE_BAT(, 19807) +HANDLE_BAT(, 19808) +HANDLE_BAT(, 19809) +HANDLE_BAT(, 19810) +HANDLE_BAT(, 19811) +HANDLE_BAT(, 19812) +HANDLE_BAT(, 19813) +HANDLE_BAT(, 19814) +HANDLE_BAT(, 19815) +HANDLE_BAT(, 19816) +HANDLE_BAT(, 19817) +HANDLE_BAT(, 19818) +HANDLE_BAT(, 19819) +HANDLE_BAT(, 19820) +HANDLE_BAT(, 19821) +HANDLE_BAT(, 19822) +HANDLE_BAT(, 19823) +HANDLE_BAT(, 19824) +HANDLE_BAT(, 19825) +HANDLE_BAT(, 19826) +HANDLE_BAT(, 19827) +HANDLE_BAT(, 19828) +HANDLE_BAT(, 19829) +HANDLE_BAT(, 19830) +HANDLE_BAT(, 19831) +HANDLE_BAT(, 19832) +HANDLE_BAT(, 19833) +HANDLE_BAT(, 19834) +HANDLE_BAT(, 19835) +HANDLE_BAT(, 19836) +HANDLE_BAT(, 19837) +HANDLE_BAT(, 19838) +HANDLE_BAT(, 19839) +HANDLE_BAT(, 19840) +HANDLE_BAT(, 19841) +HANDLE_BAT(, 19842) +HANDLE_BAT(, 19843) +HANDLE_BAT(, 19844) +HANDLE_BAT(, 19845) +HANDLE_BAT(, 19846) +HANDLE_BAT(, 19847) +HANDLE_BAT(, 19848) +HANDLE_BAT(, 19849) +HANDLE_BAT(, 19850) +HANDLE_BAT(, 19851) +HANDLE_BAT(, 19852) +HANDLE_BAT(, 19853) +HANDLE_BAT(, 19854) +HANDLE_BAT(, 19855) +HANDLE_BAT(, 19856) +HANDLE_BAT(, 19857) +HANDLE_BAT(, 19858) +HANDLE_BAT(, 19859) +HANDLE_BAT(, 19860) +HANDLE_BAT(, 19861) +HANDLE_BAT(, 19862) +HANDLE_BAT(, 19863) +HANDLE_BAT(, 19864) +HANDLE_BAT(, 19865) +HANDLE_BAT(, 19866) +HANDLE_BAT(, 19867) +HANDLE_BAT(, 19868) +HANDLE_BAT(, 19869) +HANDLE_BAT(, 19870) +HANDLE_BAT(, 19871) +HANDLE_BAT(, 19872) +HANDLE_BAT(, 19873) +HANDLE_BAT(, 19874) +HANDLE_BAT(, 19875) +HANDLE_BAT(, 19876) +HANDLE_BAT(, 19877) +HANDLE_BAT(, 19878) +HANDLE_BAT(, 19879) +HANDLE_BAT(, 19880) +HANDLE_BAT(, 19881) +HANDLE_BAT(, 19882) +HANDLE_BAT(, 19883) +HANDLE_BAT(, 19884) +HANDLE_BAT(, 19885) +HANDLE_BAT(, 19886) +HANDLE_BAT(, 19887) +HANDLE_BAT(, 19888) +HANDLE_BAT(, 19889) +HANDLE_BAT(, 19890) +HANDLE_BAT(, 19891) +HANDLE_BAT(, 19892) +HANDLE_BAT(, 19893) +HANDLE_BAT(, 19894) +HANDLE_BAT(, 19895) +HANDLE_BAT(, 19896) +HANDLE_BAT(, 19897) +HANDLE_BAT(, 19898) +HANDLE_BAT(, 19899) +HANDLE_BAT(, 19900) +HANDLE_BAT(, 19901) +HANDLE_BAT(, 19902) +HANDLE_BAT(, 19903) +HANDLE_BAT(, 19904) +HANDLE_BAT(, 19905) +HANDLE_BAT(, 19906) +HANDLE_BAT(, 19907) +HANDLE_BAT(, 19908) +HANDLE_BAT(, 19909) +HANDLE_BAT(, 19910) +HANDLE_BAT(, 19911) +HANDLE_BAT(, 19912) +HANDLE_BAT(, 19913) +HANDLE_BAT(, 19914) +HANDLE_BAT(, 19915) +HANDLE_BAT(, 19916) +HANDLE_BAT(, 19917) +HANDLE_BAT(, 19918) +HANDLE_BAT(, 19919) +HANDLE_BAT(, 19920) +HANDLE_BAT(, 19921) +HANDLE_BAT(, 19922) +HANDLE_BAT(, 19923) +HANDLE_BAT(, 19924) +HANDLE_BAT(, 19925) +HANDLE_BAT(, 19926) +HANDLE_BAT(, 19927) +HANDLE_BAT(, 19928) +HANDLE_BAT(, 19929) +HANDLE_BAT(, 19930) +HANDLE_BAT(, 19931) +HANDLE_BAT(, 19932) +HANDLE_BAT(, 19933) +HANDLE_BAT(, 19934) +HANDLE_BAT(, 19935) +HANDLE_BAT(, 19936) +HANDLE_BAT(, 19937) +HANDLE_BAT(, 19938) +HANDLE_BAT(, 19939) +HANDLE_BAT(, 19940) +HANDLE_BAT(, 19941) +HANDLE_BAT(, 19942) +HANDLE_BAT(, 19943) +HANDLE_BAT(, 19944) +HANDLE_BAT(, 19945) +HANDLE_BAT(, 19946) +HANDLE_BAT(, 19947) +HANDLE_BAT(, 19948) +HANDLE_BAT(, 19949) +HANDLE_BAT(, 19950) +HANDLE_BAT(, 19951) +HANDLE_BAT(, 19952) +HANDLE_BAT(, 19953) +HANDLE_BAT(, 19954) +HANDLE_BAT(, 19955) +HANDLE_BAT(, 19956) +HANDLE_BAT(, 19957) +HANDLE_BAT(, 19958) +HANDLE_BAT(, 19959) +HANDLE_BAT(, 19960) +HANDLE_BAT(, 19961) +HANDLE_BAT(, 19962) +HANDLE_BAT(, 19963) +HANDLE_BAT(, 19964) +HANDLE_BAT(, 19965) +HANDLE_BAT(, 19966) +HANDLE_BAT(, 19967) +HANDLE_BAT(, 19968) +HANDLE_BAT(, 19969) +HANDLE_BAT(, 19970) +HANDLE_BAT(, 19971) +HANDLE_BAT(, 19972) +HANDLE_BAT(, 19973) +HANDLE_BAT(, 19974) +HANDLE_BAT(, 19975) +HANDLE_BAT(, 19976) +HANDLE_BAT(, 19977) +HANDLE_BAT(, 19978) +HANDLE_BAT(, 19979) +HANDLE_BAT(, 19980) +HANDLE_BAT(, 19981) +HANDLE_BAT(, 19982) +HANDLE_BAT(, 19983) +HANDLE_BAT(, 19984) +HANDLE_BAT(, 19985) +HANDLE_BAT(, 19986) +HANDLE_BAT(, 19987) +HANDLE_BAT(, 19988) +HANDLE_BAT(, 19989) +HANDLE_BAT(, 19990) +HANDLE_BAT(, 19991) +HANDLE_BAT(, 19992) +HANDLE_BAT(, 19993) +HANDLE_BAT(, 19994) +HANDLE_BAT(, 19995) +HANDLE_BAT(, 19996) +HANDLE_BAT(, 19997) +HANDLE_BAT(, 19998) +HANDLE_BAT(, 19999) +HANDLE_BAT(, 20000) +HANDLE_BAT(, 20001) +HANDLE_BAT(, 20002) +HANDLE_BAT(, 20003) +HANDLE_BAT(, 20004) +HANDLE_BAT(, 20005) +HANDLE_BAT(, 20006) +HANDLE_BAT(, 20007) +HANDLE_BAT(, 20008) +HANDLE_BAT(, 20009) +HANDLE_BAT(, 20010) +HANDLE_BAT(, 20011) +HANDLE_BAT(, 20012) +HANDLE_BAT(, 20013) +HANDLE_BAT(, 20014) +HANDLE_BAT(, 20015) +HANDLE_BAT(, 20016) +HANDLE_BAT(, 20017) +HANDLE_BAT(, 20018) +HANDLE_BAT(, 20019) +HANDLE_BAT(, 20020) +HANDLE_BAT(, 20021) +HANDLE_BAT(, 20022) +HANDLE_BAT(, 20023) +HANDLE_BAT(, 20024) +HANDLE_BAT(, 20025) +HANDLE_BAT(, 20026) +HANDLE_BAT(, 20027) +HANDLE_BAT(, 20028) +HANDLE_BAT(, 20029) +HANDLE_BAT(, 20030) +HANDLE_BAT(, 20031) +HANDLE_BAT(, 20032) +HANDLE_BAT(, 20033) +HANDLE_BAT(, 20034) +HANDLE_BAT(, 20035) +HANDLE_BAT(, 20036) +HANDLE_BAT(, 20037) +HANDLE_BAT(, 20038) +HANDLE_BAT(, 20039) +HANDLE_BAT(, 20040) +HANDLE_BAT(, 20041) +HANDLE_BAT(, 20042) +HANDLE_BAT(, 20043) +HANDLE_BAT(, 20044) +HANDLE_BAT(, 20045) +HANDLE_BAT(, 20046) +HANDLE_BAT(, 20047) +HANDLE_BAT(, 20048) +HANDLE_BAT(, 20049) +HANDLE_BAT(, 20050) +HANDLE_BAT(, 20051) +HANDLE_BAT(, 20052) +HANDLE_BAT(, 20053) +HANDLE_BAT(, 20054) +HANDLE_BAT(, 20055) +HANDLE_BAT(, 20056) +HANDLE_BAT(, 20057) +HANDLE_BAT(, 20058) +HANDLE_BAT(, 20059) +HANDLE_BAT(, 20060) +HANDLE_BAT(, 20061) +HANDLE_BAT(, 20062) +HANDLE_BAT(, 20063) +HANDLE_BAT(, 20064) +HANDLE_BAT(, 20065) +HANDLE_BAT(, 20066) +HANDLE_BAT(, 20067) +HANDLE_BAT(, 20068) +HANDLE_BAT(, 20069) +HANDLE_BAT(, 20070) +HANDLE_BAT(, 20071) +HANDLE_BAT(, 20072) +HANDLE_BAT(, 20073) +HANDLE_BAT(, 20074) +HANDLE_BAT(, 20075) +HANDLE_BAT(, 20076) +HANDLE_BAT(, 20077) +HANDLE_BAT(, 20078) +HANDLE_BAT(, 20079) +HANDLE_BAT(, 20080) +HANDLE_BAT(, 20081) +HANDLE_BAT(, 20082) +HANDLE_BAT(, 20083) +HANDLE_BAT(, 20084) +HANDLE_BAT(, 20085) +HANDLE_BAT(, 20086) +HANDLE_BAT(, 20087) +HANDLE_BAT(, 20088) +HANDLE_BAT(, 20089) +HANDLE_BAT(, 20090) +HANDLE_BAT(, 20091) +HANDLE_BAT(, 20092) +HANDLE_BAT(, 20093) +HANDLE_BAT(, 20094) +HANDLE_BAT(, 20095) +HANDLE_BAT(, 20096) +HANDLE_BAT(, 20097) +HANDLE_BAT(, 20098) +HANDLE_BAT(, 20099) +HANDLE_BAT(, 20100) +HANDLE_BAT(, 20101) +HANDLE_BAT(, 20102) +HANDLE_BAT(, 20103) +HANDLE_BAT(, 20104) +HANDLE_BAT(, 20105) +HANDLE_BAT(, 20106) +HANDLE_BAT(, 20107) +HANDLE_BAT(, 20108) +HANDLE_BAT(, 20109) +HANDLE_BAT(, 20110) +HANDLE_BAT(, 20111) +HANDLE_BAT(, 20112) +HANDLE_BAT(, 20113) +HANDLE_BAT(, 20114) +HANDLE_BAT(, 20115) +HANDLE_BAT(, 20116) +HANDLE_BAT(, 20117) +HANDLE_BAT(, 20118) +HANDLE_BAT(, 20119) +HANDLE_BAT(, 20120) +HANDLE_BAT(, 20121) +HANDLE_BAT(, 20122) +HANDLE_BAT(, 20123) +HANDLE_BAT(, 20124) +HANDLE_BAT(, 20125) +HANDLE_BAT(, 20126) +HANDLE_BAT(, 20127) +HANDLE_BAT(, 20128) +HANDLE_BAT(, 20129) +HANDLE_BAT(, 20130) +HANDLE_BAT(, 20131) +HANDLE_BAT(, 20132) +HANDLE_BAT(, 20133) +HANDLE_BAT(, 20134) +HANDLE_BAT(, 20135) +HANDLE_BAT(, 20136) +HANDLE_BAT(, 20137) +HANDLE_BAT(, 20138) +HANDLE_BAT(, 20139) +HANDLE_BAT(, 20140) +HANDLE_BAT(, 20141) +HANDLE_BAT(, 20142) +HANDLE_BAT(, 20143) +HANDLE_BAT(, 20144) +HANDLE_BAT(, 20145) +HANDLE_BAT(, 20146) +HANDLE_BAT(, 20147) +HANDLE_BAT(, 20148) +HANDLE_BAT(, 20149) +HANDLE_BAT(, 20150) +HANDLE_BAT(, 20151) +HANDLE_BAT(, 20152) +HANDLE_BAT(, 20153) +HANDLE_BAT(, 20154) +HANDLE_BAT(, 20155) +HANDLE_BAT(, 20156) +HANDLE_BAT(, 20157) +HANDLE_BAT(, 20158) +HANDLE_BAT(, 20159) +HANDLE_BAT(, 20160) +HANDLE_BAT(, 20161) +HANDLE_BAT(, 20162) +HANDLE_BAT(, 20163) +HANDLE_BAT(, 20164) +HANDLE_BAT(, 20165) +HANDLE_BAT(, 20166) +HANDLE_BAT(, 20167) +HANDLE_BAT(, 20168) +HANDLE_BAT(, 20169) +HANDLE_BAT(, 20170) +HANDLE_BAT(, 20171) +HANDLE_BAT(, 20172) +HANDLE_BAT(, 20173) +HANDLE_BAT(, 20174) +HANDLE_BAT(, 20175) +HANDLE_BAT(, 20176) +HANDLE_BAT(, 20177) +HANDLE_BAT(, 20178) +HANDLE_BAT(, 20179) +HANDLE_BAT(, 20180) +HANDLE_BAT(, 20181) +HANDLE_BAT(, 20182) +HANDLE_BAT(, 20183) +HANDLE_BAT(, 20184) +HANDLE_BAT(, 20185) +HANDLE_BAT(, 20186) +HANDLE_BAT(, 20187) +HANDLE_BAT(, 20188) +HANDLE_BAT(, 20189) +HANDLE_BAT(, 20190) +HANDLE_BAT(, 20191) +HANDLE_BAT(, 20192) +HANDLE_BAT(, 20193) +HANDLE_BAT(, 20194) +HANDLE_BAT(, 20195) +HANDLE_BAT(, 20196) +HANDLE_BAT(, 20197) +HANDLE_BAT(, 20198) +HANDLE_BAT(, 20199) +HANDLE_BAT(, 20200) +HANDLE_BAT(, 20201) +HANDLE_BAT(, 20202) +HANDLE_BAT(, 20203) +HANDLE_BAT(, 20204) +HANDLE_BAT(, 20205) +HANDLE_BAT(, 20206) +HANDLE_BAT(, 20207) +HANDLE_BAT(, 20208) +HANDLE_BAT(, 20209) +HANDLE_BAT(, 20210) +HANDLE_BAT(, 20211) +HANDLE_BAT(, 20212) +HANDLE_BAT(, 20213) +HANDLE_BAT(, 20214) +HANDLE_BAT(, 20215) +HANDLE_BAT(, 20216) +HANDLE_BAT(, 20217) +HANDLE_BAT(, 20218) +HANDLE_BAT(, 20219) +HANDLE_BAT(, 20220) +HANDLE_BAT(, 20221) +HANDLE_BAT(, 20222) +HANDLE_BAT(, 20223) +HANDLE_BAT(, 20224) +HANDLE_BAT(, 20225) +HANDLE_BAT(, 20226) +HANDLE_BAT(, 20227) +HANDLE_BAT(, 20228) +HANDLE_BAT(, 20229) +HANDLE_BAT(, 20230) +HANDLE_BAT(, 20231) +HANDLE_BAT(, 20232) +HANDLE_BAT(, 20233) +HANDLE_BAT(, 20234) +HANDLE_BAT(, 20235) +HANDLE_BAT(, 20236) +HANDLE_BAT(, 20237) +HANDLE_BAT(, 20238) +HANDLE_BAT(, 20239) +HANDLE_BAT(, 20240) +HANDLE_BAT(, 20241) +HANDLE_BAT(, 20242) +HANDLE_BAT(, 20243) +HANDLE_BAT(, 20244) +HANDLE_BAT(, 20245) +HANDLE_BAT(, 20246) +HANDLE_BAT(, 20247) +HANDLE_BAT(, 20248) +HANDLE_BAT(, 20249) +HANDLE_BAT(, 20250) +HANDLE_BAT(, 20251) +HANDLE_BAT(, 20252) +HANDLE_BAT(, 20253) +HANDLE_BAT(, 20254) +HANDLE_BAT(, 20255) +HANDLE_BAT(, 20256) +HANDLE_BAT(, 20257) +HANDLE_BAT(, 20258) +HANDLE_BAT(, 20259) +HANDLE_BAT(, 20260) +HANDLE_BAT(, 20261) +HANDLE_BAT(, 20262) +HANDLE_BAT(, 20263) +HANDLE_BAT(, 20264) +HANDLE_BAT(, 20265) +HANDLE_BAT(, 20266) +HANDLE_BAT(, 20267) +HANDLE_BAT(, 20268) +HANDLE_BAT(, 20269) +HANDLE_BAT(, 20270) +HANDLE_BAT(, 20271) +HANDLE_BAT(, 20272) +HANDLE_BAT(, 20273) +HANDLE_BAT(, 20274) +HANDLE_BAT(, 20275) +HANDLE_BAT(, 20276) +HANDLE_BAT(, 20277) +HANDLE_BAT(, 20278) +HANDLE_BAT(, 20279) +HANDLE_BAT(, 20280) +HANDLE_BAT(, 20281) +HANDLE_BAT(, 20282) +HANDLE_BAT(, 20283) +HANDLE_BAT(, 20284) +HANDLE_BAT(, 20285) +HANDLE_BAT(, 20286) +HANDLE_BAT(, 20287) +HANDLE_BAT(, 20288) +HANDLE_BAT(, 20289) +HANDLE_BAT(, 20290) +HANDLE_BAT(, 20291) +HANDLE_BAT(, 20292) +HANDLE_BAT(, 20293) +HANDLE_BAT(, 20294) +HANDLE_BAT(, 20295) +HANDLE_BAT(, 20296) +HANDLE_BAT(, 20297) +HANDLE_BAT(, 20298) +HANDLE_BAT(, 20299) +HANDLE_BAT(, 20300) +HANDLE_BAT(, 20301) +HANDLE_BAT(, 20302) +HANDLE_BAT(, 20303) +HANDLE_BAT(, 20304) +HANDLE_BAT(, 20305) +HANDLE_BAT(, 20306) +HANDLE_BAT(, 20307) +HANDLE_BAT(, 20308) +HANDLE_BAT(, 20309) +HANDLE_BAT(, 20310) +HANDLE_BAT(, 20311) +HANDLE_BAT(, 20312) +HANDLE_BAT(, 20313) +HANDLE_BAT(, 20314) +HANDLE_BAT(, 20315) +HANDLE_BAT(, 20316) +HANDLE_BAT(, 20317) +HANDLE_BAT(, 20318) +HANDLE_BAT(, 20319) +HANDLE_BAT(, 20320) +HANDLE_BAT(, 20321) +HANDLE_BAT(, 20322) +HANDLE_BAT(, 20323) +HANDLE_BAT(, 20324) +HANDLE_BAT(, 20325) +HANDLE_BAT(, 20326) +HANDLE_BAT(, 20327) +HANDLE_BAT(, 20328) +HANDLE_BAT(, 20329) +HANDLE_BAT(, 20330) +HANDLE_BAT(, 20331) +HANDLE_BAT(, 20332) +HANDLE_BAT(, 20333) +HANDLE_BAT(, 20334) +HANDLE_BAT(, 20335) +HANDLE_BAT(, 20336) +HANDLE_BAT(, 20337) +HANDLE_BAT(, 20338) +HANDLE_BAT(, 20339) +HANDLE_BAT(, 20340) +HANDLE_BAT(, 20341) +HANDLE_BAT(, 20342) +HANDLE_BAT(, 20343) +HANDLE_BAT(, 20344) +HANDLE_BAT(, 20345) +HANDLE_BAT(, 20346) +HANDLE_BAT(, 20347) +HANDLE_BAT(, 20348) +HANDLE_BAT(, 20349) +HANDLE_BAT(, 20350) +HANDLE_BAT(, 20351) +HANDLE_BAT(, 20352) +HANDLE_BAT(, 20353) +HANDLE_BAT(, 20354) +HANDLE_BAT(, 20355) +HANDLE_BAT(, 20356) +HANDLE_BAT(, 20357) +HANDLE_BAT(, 20358) +HANDLE_BAT(, 20359) +HANDLE_BAT(, 20360) +HANDLE_BAT(, 20361) +HANDLE_BAT(, 20362) +HANDLE_BAT(, 20363) +HANDLE_BAT(, 20364) +HANDLE_BAT(, 20365) +HANDLE_BAT(, 20366) +HANDLE_BAT(, 20367) +HANDLE_BAT(, 20368) +HANDLE_BAT(, 20369) +HANDLE_BAT(, 20370) +HANDLE_BAT(, 20371) +HANDLE_BAT(, 20372) +HANDLE_BAT(, 20373) +HANDLE_BAT(, 20374) +HANDLE_BAT(, 20375) +HANDLE_BAT(, 20376) +HANDLE_BAT(, 20377) +HANDLE_BAT(, 20378) +HANDLE_BAT(, 20379) +HANDLE_BAT(, 20380) +HANDLE_BAT(, 20381) +HANDLE_BAT(, 20382) +HANDLE_BAT(, 20383) +HANDLE_BAT(, 20384) +HANDLE_BAT(, 20385) +HANDLE_BAT(, 20386) +HANDLE_BAT(, 20387) +HANDLE_BAT(, 20388) +HANDLE_BAT(, 20389) +HANDLE_BAT(, 20390) +HANDLE_BAT(, 20391) +HANDLE_BAT(, 20392) +HANDLE_BAT(, 20393) +HANDLE_BAT(, 20394) +HANDLE_BAT(, 20395) +HANDLE_BAT(, 20396) +HANDLE_BAT(, 20397) +HANDLE_BAT(, 20398) +HANDLE_BAT(, 20399) +HANDLE_BAT(, 20400) +HANDLE_BAT(, 20401) +HANDLE_BAT(, 20402) +HANDLE_BAT(, 20403) +HANDLE_BAT(, 20404) +HANDLE_BAT(, 20405) +HANDLE_BAT(, 20406) +HANDLE_BAT(, 20407) +HANDLE_BAT(, 20408) +HANDLE_BAT(, 20409) +HANDLE_BAT(, 20410) +HANDLE_BAT(, 20411) +HANDLE_BAT(, 20412) +HANDLE_BAT(, 20413) +HANDLE_BAT(, 20414) +HANDLE_BAT(, 20415) +HANDLE_BAT(, 20416) +HANDLE_BAT(, 20417) +HANDLE_BAT(, 20418) +HANDLE_BAT(, 20419) +HANDLE_BAT(, 20420) +HANDLE_BAT(, 20421) +HANDLE_BAT(, 20422) +HANDLE_BAT(, 20423) +HANDLE_BAT(, 20424) +HANDLE_BAT(, 20425) +HANDLE_BAT(, 20426) +HANDLE_BAT(, 20427) +HANDLE_BAT(, 20428) +HANDLE_BAT(, 20429) +HANDLE_BAT(, 20430) +HANDLE_BAT(, 20431) +HANDLE_BAT(, 20432) +HANDLE_BAT(, 20433) +HANDLE_BAT(, 20434) +HANDLE_BAT(, 20435) +HANDLE_BAT(, 20436) +HANDLE_BAT(, 20437) +HANDLE_BAT(, 20438) +HANDLE_BAT(, 20439) +HANDLE_BAT(, 20440) +HANDLE_BAT(, 20441) +HANDLE_BAT(, 20442) +HANDLE_BAT(, 20443) +HANDLE_BAT(, 20444) +HANDLE_BAT(, 20445) +HANDLE_BAT(, 20446) +HANDLE_BAT(, 20447) +HANDLE_BAT(, 20448) +HANDLE_BAT(, 20449) +HANDLE_BAT(, 20450) +HANDLE_BAT(, 20451) +HANDLE_BAT(, 20452) +HANDLE_BAT(, 20453) +HANDLE_BAT(, 20454) +HANDLE_BAT(, 20455) +HANDLE_BAT(, 20456) +HANDLE_BAT(, 20457) +HANDLE_BAT(, 20458) +HANDLE_BAT(, 20459) +HANDLE_BAT(, 20460) +HANDLE_BAT(, 20461) +HANDLE_BAT(, 20462) +HANDLE_BAT(, 20463) +HANDLE_BAT(, 20464) +HANDLE_BAT(, 20465) +HANDLE_BAT(, 20466) +HANDLE_BAT(, 20467) +HANDLE_BAT(, 20468) +HANDLE_BAT(, 20469) +HANDLE_BAT(, 20470) +HANDLE_BAT(, 20471) +HANDLE_BAT(, 20472) +HANDLE_BAT(, 20473) +HANDLE_BAT(, 20474) +HANDLE_BAT(, 20475) +HANDLE_BAT(, 20476) +HANDLE_BAT(, 20477) +HANDLE_BAT(, 20478) +HANDLE_BAT(, 20479) +HANDLE_BAT(, 20480) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 19457) +HANDLE_BAT(APINT_TYPE_PREFIX, 19458) +HANDLE_BAT(APINT_TYPE_PREFIX, 19459) +HANDLE_BAT(APINT_TYPE_PREFIX, 19460) +HANDLE_BAT(APINT_TYPE_PREFIX, 19461) +HANDLE_BAT(APINT_TYPE_PREFIX, 19462) +HANDLE_BAT(APINT_TYPE_PREFIX, 19463) +HANDLE_BAT(APINT_TYPE_PREFIX, 19464) +HANDLE_BAT(APINT_TYPE_PREFIX, 19465) +HANDLE_BAT(APINT_TYPE_PREFIX, 19466) +HANDLE_BAT(APINT_TYPE_PREFIX, 19467) +HANDLE_BAT(APINT_TYPE_PREFIX, 19468) +HANDLE_BAT(APINT_TYPE_PREFIX, 19469) +HANDLE_BAT(APINT_TYPE_PREFIX, 19470) +HANDLE_BAT(APINT_TYPE_PREFIX, 19471) +HANDLE_BAT(APINT_TYPE_PREFIX, 19472) +HANDLE_BAT(APINT_TYPE_PREFIX, 19473) +HANDLE_BAT(APINT_TYPE_PREFIX, 19474) +HANDLE_BAT(APINT_TYPE_PREFIX, 19475) +HANDLE_BAT(APINT_TYPE_PREFIX, 19476) +HANDLE_BAT(APINT_TYPE_PREFIX, 19477) +HANDLE_BAT(APINT_TYPE_PREFIX, 19478) +HANDLE_BAT(APINT_TYPE_PREFIX, 19479) +HANDLE_BAT(APINT_TYPE_PREFIX, 19480) +HANDLE_BAT(APINT_TYPE_PREFIX, 19481) +HANDLE_BAT(APINT_TYPE_PREFIX, 19482) +HANDLE_BAT(APINT_TYPE_PREFIX, 19483) +HANDLE_BAT(APINT_TYPE_PREFIX, 19484) +HANDLE_BAT(APINT_TYPE_PREFIX, 19485) +HANDLE_BAT(APINT_TYPE_PREFIX, 19486) +HANDLE_BAT(APINT_TYPE_PREFIX, 19487) +HANDLE_BAT(APINT_TYPE_PREFIX, 19488) +HANDLE_BAT(APINT_TYPE_PREFIX, 19489) +HANDLE_BAT(APINT_TYPE_PREFIX, 19490) +HANDLE_BAT(APINT_TYPE_PREFIX, 19491) +HANDLE_BAT(APINT_TYPE_PREFIX, 19492) +HANDLE_BAT(APINT_TYPE_PREFIX, 19493) +HANDLE_BAT(APINT_TYPE_PREFIX, 19494) +HANDLE_BAT(APINT_TYPE_PREFIX, 19495) +HANDLE_BAT(APINT_TYPE_PREFIX, 19496) +HANDLE_BAT(APINT_TYPE_PREFIX, 19497) +HANDLE_BAT(APINT_TYPE_PREFIX, 19498) +HANDLE_BAT(APINT_TYPE_PREFIX, 19499) +HANDLE_BAT(APINT_TYPE_PREFIX, 19500) +HANDLE_BAT(APINT_TYPE_PREFIX, 19501) +HANDLE_BAT(APINT_TYPE_PREFIX, 19502) +HANDLE_BAT(APINT_TYPE_PREFIX, 19503) +HANDLE_BAT(APINT_TYPE_PREFIX, 19504) +HANDLE_BAT(APINT_TYPE_PREFIX, 19505) +HANDLE_BAT(APINT_TYPE_PREFIX, 19506) +HANDLE_BAT(APINT_TYPE_PREFIX, 19507) +HANDLE_BAT(APINT_TYPE_PREFIX, 19508) +HANDLE_BAT(APINT_TYPE_PREFIX, 19509) +HANDLE_BAT(APINT_TYPE_PREFIX, 19510) +HANDLE_BAT(APINT_TYPE_PREFIX, 19511) +HANDLE_BAT(APINT_TYPE_PREFIX, 19512) +HANDLE_BAT(APINT_TYPE_PREFIX, 19513) +HANDLE_BAT(APINT_TYPE_PREFIX, 19514) +HANDLE_BAT(APINT_TYPE_PREFIX, 19515) +HANDLE_BAT(APINT_TYPE_PREFIX, 19516) +HANDLE_BAT(APINT_TYPE_PREFIX, 19517) +HANDLE_BAT(APINT_TYPE_PREFIX, 19518) +HANDLE_BAT(APINT_TYPE_PREFIX, 19519) +HANDLE_BAT(APINT_TYPE_PREFIX, 19520) +HANDLE_BAT(APINT_TYPE_PREFIX, 19521) +HANDLE_BAT(APINT_TYPE_PREFIX, 19522) +HANDLE_BAT(APINT_TYPE_PREFIX, 19523) +HANDLE_BAT(APINT_TYPE_PREFIX, 19524) +HANDLE_BAT(APINT_TYPE_PREFIX, 19525) +HANDLE_BAT(APINT_TYPE_PREFIX, 19526) +HANDLE_BAT(APINT_TYPE_PREFIX, 19527) +HANDLE_BAT(APINT_TYPE_PREFIX, 19528) +HANDLE_BAT(APINT_TYPE_PREFIX, 19529) +HANDLE_BAT(APINT_TYPE_PREFIX, 19530) +HANDLE_BAT(APINT_TYPE_PREFIX, 19531) +HANDLE_BAT(APINT_TYPE_PREFIX, 19532) +HANDLE_BAT(APINT_TYPE_PREFIX, 19533) +HANDLE_BAT(APINT_TYPE_PREFIX, 19534) +HANDLE_BAT(APINT_TYPE_PREFIX, 19535) +HANDLE_BAT(APINT_TYPE_PREFIX, 19536) +HANDLE_BAT(APINT_TYPE_PREFIX, 19537) +HANDLE_BAT(APINT_TYPE_PREFIX, 19538) +HANDLE_BAT(APINT_TYPE_PREFIX, 19539) +HANDLE_BAT(APINT_TYPE_PREFIX, 19540) +HANDLE_BAT(APINT_TYPE_PREFIX, 19541) +HANDLE_BAT(APINT_TYPE_PREFIX, 19542) +HANDLE_BAT(APINT_TYPE_PREFIX, 19543) +HANDLE_BAT(APINT_TYPE_PREFIX, 19544) +HANDLE_BAT(APINT_TYPE_PREFIX, 19545) +HANDLE_BAT(APINT_TYPE_PREFIX, 19546) +HANDLE_BAT(APINT_TYPE_PREFIX, 19547) +HANDLE_BAT(APINT_TYPE_PREFIX, 19548) +HANDLE_BAT(APINT_TYPE_PREFIX, 19549) +HANDLE_BAT(APINT_TYPE_PREFIX, 19550) +HANDLE_BAT(APINT_TYPE_PREFIX, 19551) +HANDLE_BAT(APINT_TYPE_PREFIX, 19552) +HANDLE_BAT(APINT_TYPE_PREFIX, 19553) +HANDLE_BAT(APINT_TYPE_PREFIX, 19554) +HANDLE_BAT(APINT_TYPE_PREFIX, 19555) +HANDLE_BAT(APINT_TYPE_PREFIX, 19556) +HANDLE_BAT(APINT_TYPE_PREFIX, 19557) +HANDLE_BAT(APINT_TYPE_PREFIX, 19558) +HANDLE_BAT(APINT_TYPE_PREFIX, 19559) +HANDLE_BAT(APINT_TYPE_PREFIX, 19560) +HANDLE_BAT(APINT_TYPE_PREFIX, 19561) +HANDLE_BAT(APINT_TYPE_PREFIX, 19562) +HANDLE_BAT(APINT_TYPE_PREFIX, 19563) +HANDLE_BAT(APINT_TYPE_PREFIX, 19564) +HANDLE_BAT(APINT_TYPE_PREFIX, 19565) +HANDLE_BAT(APINT_TYPE_PREFIX, 19566) +HANDLE_BAT(APINT_TYPE_PREFIX, 19567) +HANDLE_BAT(APINT_TYPE_PREFIX, 19568) +HANDLE_BAT(APINT_TYPE_PREFIX, 19569) +HANDLE_BAT(APINT_TYPE_PREFIX, 19570) +HANDLE_BAT(APINT_TYPE_PREFIX, 19571) +HANDLE_BAT(APINT_TYPE_PREFIX, 19572) +HANDLE_BAT(APINT_TYPE_PREFIX, 19573) +HANDLE_BAT(APINT_TYPE_PREFIX, 19574) +HANDLE_BAT(APINT_TYPE_PREFIX, 19575) +HANDLE_BAT(APINT_TYPE_PREFIX, 19576) +HANDLE_BAT(APINT_TYPE_PREFIX, 19577) +HANDLE_BAT(APINT_TYPE_PREFIX, 19578) +HANDLE_BAT(APINT_TYPE_PREFIX, 19579) +HANDLE_BAT(APINT_TYPE_PREFIX, 19580) +HANDLE_BAT(APINT_TYPE_PREFIX, 19581) +HANDLE_BAT(APINT_TYPE_PREFIX, 19582) +HANDLE_BAT(APINT_TYPE_PREFIX, 19583) +HANDLE_BAT(APINT_TYPE_PREFIX, 19584) +HANDLE_BAT(APINT_TYPE_PREFIX, 19585) +HANDLE_BAT(APINT_TYPE_PREFIX, 19586) +HANDLE_BAT(APINT_TYPE_PREFIX, 19587) +HANDLE_BAT(APINT_TYPE_PREFIX, 19588) +HANDLE_BAT(APINT_TYPE_PREFIX, 19589) +HANDLE_BAT(APINT_TYPE_PREFIX, 19590) +HANDLE_BAT(APINT_TYPE_PREFIX, 19591) +HANDLE_BAT(APINT_TYPE_PREFIX, 19592) +HANDLE_BAT(APINT_TYPE_PREFIX, 19593) +HANDLE_BAT(APINT_TYPE_PREFIX, 19594) +HANDLE_BAT(APINT_TYPE_PREFIX, 19595) +HANDLE_BAT(APINT_TYPE_PREFIX, 19596) +HANDLE_BAT(APINT_TYPE_PREFIX, 19597) +HANDLE_BAT(APINT_TYPE_PREFIX, 19598) +HANDLE_BAT(APINT_TYPE_PREFIX, 19599) +HANDLE_BAT(APINT_TYPE_PREFIX, 19600) +HANDLE_BAT(APINT_TYPE_PREFIX, 19601) +HANDLE_BAT(APINT_TYPE_PREFIX, 19602) +HANDLE_BAT(APINT_TYPE_PREFIX, 19603) +HANDLE_BAT(APINT_TYPE_PREFIX, 19604) +HANDLE_BAT(APINT_TYPE_PREFIX, 19605) +HANDLE_BAT(APINT_TYPE_PREFIX, 19606) +HANDLE_BAT(APINT_TYPE_PREFIX, 19607) +HANDLE_BAT(APINT_TYPE_PREFIX, 19608) +HANDLE_BAT(APINT_TYPE_PREFIX, 19609) +HANDLE_BAT(APINT_TYPE_PREFIX, 19610) +HANDLE_BAT(APINT_TYPE_PREFIX, 19611) +HANDLE_BAT(APINT_TYPE_PREFIX, 19612) +HANDLE_BAT(APINT_TYPE_PREFIX, 19613) +HANDLE_BAT(APINT_TYPE_PREFIX, 19614) +HANDLE_BAT(APINT_TYPE_PREFIX, 19615) +HANDLE_BAT(APINT_TYPE_PREFIX, 19616) +HANDLE_BAT(APINT_TYPE_PREFIX, 19617) +HANDLE_BAT(APINT_TYPE_PREFIX, 19618) +HANDLE_BAT(APINT_TYPE_PREFIX, 19619) +HANDLE_BAT(APINT_TYPE_PREFIX, 19620) +HANDLE_BAT(APINT_TYPE_PREFIX, 19621) +HANDLE_BAT(APINT_TYPE_PREFIX, 19622) +HANDLE_BAT(APINT_TYPE_PREFIX, 19623) +HANDLE_BAT(APINT_TYPE_PREFIX, 19624) +HANDLE_BAT(APINT_TYPE_PREFIX, 19625) +HANDLE_BAT(APINT_TYPE_PREFIX, 19626) +HANDLE_BAT(APINT_TYPE_PREFIX, 19627) +HANDLE_BAT(APINT_TYPE_PREFIX, 19628) +HANDLE_BAT(APINT_TYPE_PREFIX, 19629) +HANDLE_BAT(APINT_TYPE_PREFIX, 19630) +HANDLE_BAT(APINT_TYPE_PREFIX, 19631) +HANDLE_BAT(APINT_TYPE_PREFIX, 19632) +HANDLE_BAT(APINT_TYPE_PREFIX, 19633) +HANDLE_BAT(APINT_TYPE_PREFIX, 19634) +HANDLE_BAT(APINT_TYPE_PREFIX, 19635) +HANDLE_BAT(APINT_TYPE_PREFIX, 19636) +HANDLE_BAT(APINT_TYPE_PREFIX, 19637) +HANDLE_BAT(APINT_TYPE_PREFIX, 19638) +HANDLE_BAT(APINT_TYPE_PREFIX, 19639) +HANDLE_BAT(APINT_TYPE_PREFIX, 19640) +HANDLE_BAT(APINT_TYPE_PREFIX, 19641) +HANDLE_BAT(APINT_TYPE_PREFIX, 19642) +HANDLE_BAT(APINT_TYPE_PREFIX, 19643) +HANDLE_BAT(APINT_TYPE_PREFIX, 19644) +HANDLE_BAT(APINT_TYPE_PREFIX, 19645) +HANDLE_BAT(APINT_TYPE_PREFIX, 19646) +HANDLE_BAT(APINT_TYPE_PREFIX, 19647) +HANDLE_BAT(APINT_TYPE_PREFIX, 19648) +HANDLE_BAT(APINT_TYPE_PREFIX, 19649) +HANDLE_BAT(APINT_TYPE_PREFIX, 19650) +HANDLE_BAT(APINT_TYPE_PREFIX, 19651) +HANDLE_BAT(APINT_TYPE_PREFIX, 19652) +HANDLE_BAT(APINT_TYPE_PREFIX, 19653) +HANDLE_BAT(APINT_TYPE_PREFIX, 19654) +HANDLE_BAT(APINT_TYPE_PREFIX, 19655) +HANDLE_BAT(APINT_TYPE_PREFIX, 19656) +HANDLE_BAT(APINT_TYPE_PREFIX, 19657) +HANDLE_BAT(APINT_TYPE_PREFIX, 19658) +HANDLE_BAT(APINT_TYPE_PREFIX, 19659) +HANDLE_BAT(APINT_TYPE_PREFIX, 19660) +HANDLE_BAT(APINT_TYPE_PREFIX, 19661) +HANDLE_BAT(APINT_TYPE_PREFIX, 19662) +HANDLE_BAT(APINT_TYPE_PREFIX, 19663) +HANDLE_BAT(APINT_TYPE_PREFIX, 19664) +HANDLE_BAT(APINT_TYPE_PREFIX, 19665) +HANDLE_BAT(APINT_TYPE_PREFIX, 19666) +HANDLE_BAT(APINT_TYPE_PREFIX, 19667) +HANDLE_BAT(APINT_TYPE_PREFIX, 19668) +HANDLE_BAT(APINT_TYPE_PREFIX, 19669) +HANDLE_BAT(APINT_TYPE_PREFIX, 19670) +HANDLE_BAT(APINT_TYPE_PREFIX, 19671) +HANDLE_BAT(APINT_TYPE_PREFIX, 19672) +HANDLE_BAT(APINT_TYPE_PREFIX, 19673) +HANDLE_BAT(APINT_TYPE_PREFIX, 19674) +HANDLE_BAT(APINT_TYPE_PREFIX, 19675) +HANDLE_BAT(APINT_TYPE_PREFIX, 19676) +HANDLE_BAT(APINT_TYPE_PREFIX, 19677) +HANDLE_BAT(APINT_TYPE_PREFIX, 19678) +HANDLE_BAT(APINT_TYPE_PREFIX, 19679) +HANDLE_BAT(APINT_TYPE_PREFIX, 19680) +HANDLE_BAT(APINT_TYPE_PREFIX, 19681) +HANDLE_BAT(APINT_TYPE_PREFIX, 19682) +HANDLE_BAT(APINT_TYPE_PREFIX, 19683) +HANDLE_BAT(APINT_TYPE_PREFIX, 19684) +HANDLE_BAT(APINT_TYPE_PREFIX, 19685) +HANDLE_BAT(APINT_TYPE_PREFIX, 19686) +HANDLE_BAT(APINT_TYPE_PREFIX, 19687) +HANDLE_BAT(APINT_TYPE_PREFIX, 19688) +HANDLE_BAT(APINT_TYPE_PREFIX, 19689) +HANDLE_BAT(APINT_TYPE_PREFIX, 19690) +HANDLE_BAT(APINT_TYPE_PREFIX, 19691) +HANDLE_BAT(APINT_TYPE_PREFIX, 19692) +HANDLE_BAT(APINT_TYPE_PREFIX, 19693) +HANDLE_BAT(APINT_TYPE_PREFIX, 19694) +HANDLE_BAT(APINT_TYPE_PREFIX, 19695) +HANDLE_BAT(APINT_TYPE_PREFIX, 19696) +HANDLE_BAT(APINT_TYPE_PREFIX, 19697) +HANDLE_BAT(APINT_TYPE_PREFIX, 19698) +HANDLE_BAT(APINT_TYPE_PREFIX, 19699) +HANDLE_BAT(APINT_TYPE_PREFIX, 19700) +HANDLE_BAT(APINT_TYPE_PREFIX, 19701) +HANDLE_BAT(APINT_TYPE_PREFIX, 19702) +HANDLE_BAT(APINT_TYPE_PREFIX, 19703) +HANDLE_BAT(APINT_TYPE_PREFIX, 19704) +HANDLE_BAT(APINT_TYPE_PREFIX, 19705) +HANDLE_BAT(APINT_TYPE_PREFIX, 19706) +HANDLE_BAT(APINT_TYPE_PREFIX, 19707) +HANDLE_BAT(APINT_TYPE_PREFIX, 19708) +HANDLE_BAT(APINT_TYPE_PREFIX, 19709) +HANDLE_BAT(APINT_TYPE_PREFIX, 19710) +HANDLE_BAT(APINT_TYPE_PREFIX, 19711) +HANDLE_BAT(APINT_TYPE_PREFIX, 19712) +HANDLE_BAT(APINT_TYPE_PREFIX, 19713) +HANDLE_BAT(APINT_TYPE_PREFIX, 19714) +HANDLE_BAT(APINT_TYPE_PREFIX, 19715) +HANDLE_BAT(APINT_TYPE_PREFIX, 19716) +HANDLE_BAT(APINT_TYPE_PREFIX, 19717) +HANDLE_BAT(APINT_TYPE_PREFIX, 19718) +HANDLE_BAT(APINT_TYPE_PREFIX, 19719) +HANDLE_BAT(APINT_TYPE_PREFIX, 19720) +HANDLE_BAT(APINT_TYPE_PREFIX, 19721) +HANDLE_BAT(APINT_TYPE_PREFIX, 19722) +HANDLE_BAT(APINT_TYPE_PREFIX, 19723) +HANDLE_BAT(APINT_TYPE_PREFIX, 19724) +HANDLE_BAT(APINT_TYPE_PREFIX, 19725) +HANDLE_BAT(APINT_TYPE_PREFIX, 19726) +HANDLE_BAT(APINT_TYPE_PREFIX, 19727) +HANDLE_BAT(APINT_TYPE_PREFIX, 19728) +HANDLE_BAT(APINT_TYPE_PREFIX, 19729) +HANDLE_BAT(APINT_TYPE_PREFIX, 19730) +HANDLE_BAT(APINT_TYPE_PREFIX, 19731) +HANDLE_BAT(APINT_TYPE_PREFIX, 19732) +HANDLE_BAT(APINT_TYPE_PREFIX, 19733) +HANDLE_BAT(APINT_TYPE_PREFIX, 19734) +HANDLE_BAT(APINT_TYPE_PREFIX, 19735) +HANDLE_BAT(APINT_TYPE_PREFIX, 19736) +HANDLE_BAT(APINT_TYPE_PREFIX, 19737) +HANDLE_BAT(APINT_TYPE_PREFIX, 19738) +HANDLE_BAT(APINT_TYPE_PREFIX, 19739) +HANDLE_BAT(APINT_TYPE_PREFIX, 19740) +HANDLE_BAT(APINT_TYPE_PREFIX, 19741) +HANDLE_BAT(APINT_TYPE_PREFIX, 19742) +HANDLE_BAT(APINT_TYPE_PREFIX, 19743) +HANDLE_BAT(APINT_TYPE_PREFIX, 19744) +HANDLE_BAT(APINT_TYPE_PREFIX, 19745) +HANDLE_BAT(APINT_TYPE_PREFIX, 19746) +HANDLE_BAT(APINT_TYPE_PREFIX, 19747) +HANDLE_BAT(APINT_TYPE_PREFIX, 19748) +HANDLE_BAT(APINT_TYPE_PREFIX, 19749) +HANDLE_BAT(APINT_TYPE_PREFIX, 19750) +HANDLE_BAT(APINT_TYPE_PREFIX, 19751) +HANDLE_BAT(APINT_TYPE_PREFIX, 19752) +HANDLE_BAT(APINT_TYPE_PREFIX, 19753) +HANDLE_BAT(APINT_TYPE_PREFIX, 19754) +HANDLE_BAT(APINT_TYPE_PREFIX, 19755) +HANDLE_BAT(APINT_TYPE_PREFIX, 19756) +HANDLE_BAT(APINT_TYPE_PREFIX, 19757) +HANDLE_BAT(APINT_TYPE_PREFIX, 19758) +HANDLE_BAT(APINT_TYPE_PREFIX, 19759) +HANDLE_BAT(APINT_TYPE_PREFIX, 19760) +HANDLE_BAT(APINT_TYPE_PREFIX, 19761) +HANDLE_BAT(APINT_TYPE_PREFIX, 19762) +HANDLE_BAT(APINT_TYPE_PREFIX, 19763) +HANDLE_BAT(APINT_TYPE_PREFIX, 19764) +HANDLE_BAT(APINT_TYPE_PREFIX, 19765) +HANDLE_BAT(APINT_TYPE_PREFIX, 19766) +HANDLE_BAT(APINT_TYPE_PREFIX, 19767) +HANDLE_BAT(APINT_TYPE_PREFIX, 19768) +HANDLE_BAT(APINT_TYPE_PREFIX, 19769) +HANDLE_BAT(APINT_TYPE_PREFIX, 19770) +HANDLE_BAT(APINT_TYPE_PREFIX, 19771) +HANDLE_BAT(APINT_TYPE_PREFIX, 19772) +HANDLE_BAT(APINT_TYPE_PREFIX, 19773) +HANDLE_BAT(APINT_TYPE_PREFIX, 19774) +HANDLE_BAT(APINT_TYPE_PREFIX, 19775) +HANDLE_BAT(APINT_TYPE_PREFIX, 19776) +HANDLE_BAT(APINT_TYPE_PREFIX, 19777) +HANDLE_BAT(APINT_TYPE_PREFIX, 19778) +HANDLE_BAT(APINT_TYPE_PREFIX, 19779) +HANDLE_BAT(APINT_TYPE_PREFIX, 19780) +HANDLE_BAT(APINT_TYPE_PREFIX, 19781) +HANDLE_BAT(APINT_TYPE_PREFIX, 19782) +HANDLE_BAT(APINT_TYPE_PREFIX, 19783) +HANDLE_BAT(APINT_TYPE_PREFIX, 19784) +HANDLE_BAT(APINT_TYPE_PREFIX, 19785) +HANDLE_BAT(APINT_TYPE_PREFIX, 19786) +HANDLE_BAT(APINT_TYPE_PREFIX, 19787) +HANDLE_BAT(APINT_TYPE_PREFIX, 19788) +HANDLE_BAT(APINT_TYPE_PREFIX, 19789) +HANDLE_BAT(APINT_TYPE_PREFIX, 19790) +HANDLE_BAT(APINT_TYPE_PREFIX, 19791) +HANDLE_BAT(APINT_TYPE_PREFIX, 19792) +HANDLE_BAT(APINT_TYPE_PREFIX, 19793) +HANDLE_BAT(APINT_TYPE_PREFIX, 19794) +HANDLE_BAT(APINT_TYPE_PREFIX, 19795) +HANDLE_BAT(APINT_TYPE_PREFIX, 19796) +HANDLE_BAT(APINT_TYPE_PREFIX, 19797) +HANDLE_BAT(APINT_TYPE_PREFIX, 19798) +HANDLE_BAT(APINT_TYPE_PREFIX, 19799) +HANDLE_BAT(APINT_TYPE_PREFIX, 19800) +HANDLE_BAT(APINT_TYPE_PREFIX, 19801) +HANDLE_BAT(APINT_TYPE_PREFIX, 19802) +HANDLE_BAT(APINT_TYPE_PREFIX, 19803) +HANDLE_BAT(APINT_TYPE_PREFIX, 19804) +HANDLE_BAT(APINT_TYPE_PREFIX, 19805) +HANDLE_BAT(APINT_TYPE_PREFIX, 19806) +HANDLE_BAT(APINT_TYPE_PREFIX, 19807) +HANDLE_BAT(APINT_TYPE_PREFIX, 19808) +HANDLE_BAT(APINT_TYPE_PREFIX, 19809) +HANDLE_BAT(APINT_TYPE_PREFIX, 19810) +HANDLE_BAT(APINT_TYPE_PREFIX, 19811) +HANDLE_BAT(APINT_TYPE_PREFIX, 19812) +HANDLE_BAT(APINT_TYPE_PREFIX, 19813) +HANDLE_BAT(APINT_TYPE_PREFIX, 19814) +HANDLE_BAT(APINT_TYPE_PREFIX, 19815) +HANDLE_BAT(APINT_TYPE_PREFIX, 19816) +HANDLE_BAT(APINT_TYPE_PREFIX, 19817) +HANDLE_BAT(APINT_TYPE_PREFIX, 19818) +HANDLE_BAT(APINT_TYPE_PREFIX, 19819) +HANDLE_BAT(APINT_TYPE_PREFIX, 19820) +HANDLE_BAT(APINT_TYPE_PREFIX, 19821) +HANDLE_BAT(APINT_TYPE_PREFIX, 19822) +HANDLE_BAT(APINT_TYPE_PREFIX, 19823) +HANDLE_BAT(APINT_TYPE_PREFIX, 19824) +HANDLE_BAT(APINT_TYPE_PREFIX, 19825) +HANDLE_BAT(APINT_TYPE_PREFIX, 19826) +HANDLE_BAT(APINT_TYPE_PREFIX, 19827) +HANDLE_BAT(APINT_TYPE_PREFIX, 19828) +HANDLE_BAT(APINT_TYPE_PREFIX, 19829) +HANDLE_BAT(APINT_TYPE_PREFIX, 19830) +HANDLE_BAT(APINT_TYPE_PREFIX, 19831) +HANDLE_BAT(APINT_TYPE_PREFIX, 19832) +HANDLE_BAT(APINT_TYPE_PREFIX, 19833) +HANDLE_BAT(APINT_TYPE_PREFIX, 19834) +HANDLE_BAT(APINT_TYPE_PREFIX, 19835) +HANDLE_BAT(APINT_TYPE_PREFIX, 19836) +HANDLE_BAT(APINT_TYPE_PREFIX, 19837) +HANDLE_BAT(APINT_TYPE_PREFIX, 19838) +HANDLE_BAT(APINT_TYPE_PREFIX, 19839) +HANDLE_BAT(APINT_TYPE_PREFIX, 19840) +HANDLE_BAT(APINT_TYPE_PREFIX, 19841) +HANDLE_BAT(APINT_TYPE_PREFIX, 19842) +HANDLE_BAT(APINT_TYPE_PREFIX, 19843) +HANDLE_BAT(APINT_TYPE_PREFIX, 19844) +HANDLE_BAT(APINT_TYPE_PREFIX, 19845) +HANDLE_BAT(APINT_TYPE_PREFIX, 19846) +HANDLE_BAT(APINT_TYPE_PREFIX, 19847) +HANDLE_BAT(APINT_TYPE_PREFIX, 19848) +HANDLE_BAT(APINT_TYPE_PREFIX, 19849) +HANDLE_BAT(APINT_TYPE_PREFIX, 19850) +HANDLE_BAT(APINT_TYPE_PREFIX, 19851) +HANDLE_BAT(APINT_TYPE_PREFIX, 19852) +HANDLE_BAT(APINT_TYPE_PREFIX, 19853) +HANDLE_BAT(APINT_TYPE_PREFIX, 19854) +HANDLE_BAT(APINT_TYPE_PREFIX, 19855) +HANDLE_BAT(APINT_TYPE_PREFIX, 19856) +HANDLE_BAT(APINT_TYPE_PREFIX, 19857) +HANDLE_BAT(APINT_TYPE_PREFIX, 19858) +HANDLE_BAT(APINT_TYPE_PREFIX, 19859) +HANDLE_BAT(APINT_TYPE_PREFIX, 19860) +HANDLE_BAT(APINT_TYPE_PREFIX, 19861) +HANDLE_BAT(APINT_TYPE_PREFIX, 19862) +HANDLE_BAT(APINT_TYPE_PREFIX, 19863) +HANDLE_BAT(APINT_TYPE_PREFIX, 19864) +HANDLE_BAT(APINT_TYPE_PREFIX, 19865) +HANDLE_BAT(APINT_TYPE_PREFIX, 19866) +HANDLE_BAT(APINT_TYPE_PREFIX, 19867) +HANDLE_BAT(APINT_TYPE_PREFIX, 19868) +HANDLE_BAT(APINT_TYPE_PREFIX, 19869) +HANDLE_BAT(APINT_TYPE_PREFIX, 19870) +HANDLE_BAT(APINT_TYPE_PREFIX, 19871) +HANDLE_BAT(APINT_TYPE_PREFIX, 19872) +HANDLE_BAT(APINT_TYPE_PREFIX, 19873) +HANDLE_BAT(APINT_TYPE_PREFIX, 19874) +HANDLE_BAT(APINT_TYPE_PREFIX, 19875) +HANDLE_BAT(APINT_TYPE_PREFIX, 19876) +HANDLE_BAT(APINT_TYPE_PREFIX, 19877) +HANDLE_BAT(APINT_TYPE_PREFIX, 19878) +HANDLE_BAT(APINT_TYPE_PREFIX, 19879) +HANDLE_BAT(APINT_TYPE_PREFIX, 19880) +HANDLE_BAT(APINT_TYPE_PREFIX, 19881) +HANDLE_BAT(APINT_TYPE_PREFIX, 19882) +HANDLE_BAT(APINT_TYPE_PREFIX, 19883) +HANDLE_BAT(APINT_TYPE_PREFIX, 19884) +HANDLE_BAT(APINT_TYPE_PREFIX, 19885) +HANDLE_BAT(APINT_TYPE_PREFIX, 19886) +HANDLE_BAT(APINT_TYPE_PREFIX, 19887) +HANDLE_BAT(APINT_TYPE_PREFIX, 19888) +HANDLE_BAT(APINT_TYPE_PREFIX, 19889) +HANDLE_BAT(APINT_TYPE_PREFIX, 19890) +HANDLE_BAT(APINT_TYPE_PREFIX, 19891) +HANDLE_BAT(APINT_TYPE_PREFIX, 19892) +HANDLE_BAT(APINT_TYPE_PREFIX, 19893) +HANDLE_BAT(APINT_TYPE_PREFIX, 19894) +HANDLE_BAT(APINT_TYPE_PREFIX, 19895) +HANDLE_BAT(APINT_TYPE_PREFIX, 19896) +HANDLE_BAT(APINT_TYPE_PREFIX, 19897) +HANDLE_BAT(APINT_TYPE_PREFIX, 19898) +HANDLE_BAT(APINT_TYPE_PREFIX, 19899) +HANDLE_BAT(APINT_TYPE_PREFIX, 19900) +HANDLE_BAT(APINT_TYPE_PREFIX, 19901) +HANDLE_BAT(APINT_TYPE_PREFIX, 19902) +HANDLE_BAT(APINT_TYPE_PREFIX, 19903) +HANDLE_BAT(APINT_TYPE_PREFIX, 19904) +HANDLE_BAT(APINT_TYPE_PREFIX, 19905) +HANDLE_BAT(APINT_TYPE_PREFIX, 19906) +HANDLE_BAT(APINT_TYPE_PREFIX, 19907) +HANDLE_BAT(APINT_TYPE_PREFIX, 19908) +HANDLE_BAT(APINT_TYPE_PREFIX, 19909) +HANDLE_BAT(APINT_TYPE_PREFIX, 19910) +HANDLE_BAT(APINT_TYPE_PREFIX, 19911) +HANDLE_BAT(APINT_TYPE_PREFIX, 19912) +HANDLE_BAT(APINT_TYPE_PREFIX, 19913) +HANDLE_BAT(APINT_TYPE_PREFIX, 19914) +HANDLE_BAT(APINT_TYPE_PREFIX, 19915) +HANDLE_BAT(APINT_TYPE_PREFIX, 19916) +HANDLE_BAT(APINT_TYPE_PREFIX, 19917) +HANDLE_BAT(APINT_TYPE_PREFIX, 19918) +HANDLE_BAT(APINT_TYPE_PREFIX, 19919) +HANDLE_BAT(APINT_TYPE_PREFIX, 19920) +HANDLE_BAT(APINT_TYPE_PREFIX, 19921) +HANDLE_BAT(APINT_TYPE_PREFIX, 19922) +HANDLE_BAT(APINT_TYPE_PREFIX, 19923) +HANDLE_BAT(APINT_TYPE_PREFIX, 19924) +HANDLE_BAT(APINT_TYPE_PREFIX, 19925) +HANDLE_BAT(APINT_TYPE_PREFIX, 19926) +HANDLE_BAT(APINT_TYPE_PREFIX, 19927) +HANDLE_BAT(APINT_TYPE_PREFIX, 19928) +HANDLE_BAT(APINT_TYPE_PREFIX, 19929) +HANDLE_BAT(APINT_TYPE_PREFIX, 19930) +HANDLE_BAT(APINT_TYPE_PREFIX, 19931) +HANDLE_BAT(APINT_TYPE_PREFIX, 19932) +HANDLE_BAT(APINT_TYPE_PREFIX, 19933) +HANDLE_BAT(APINT_TYPE_PREFIX, 19934) +HANDLE_BAT(APINT_TYPE_PREFIX, 19935) +HANDLE_BAT(APINT_TYPE_PREFIX, 19936) +HANDLE_BAT(APINT_TYPE_PREFIX, 19937) +HANDLE_BAT(APINT_TYPE_PREFIX, 19938) +HANDLE_BAT(APINT_TYPE_PREFIX, 19939) +HANDLE_BAT(APINT_TYPE_PREFIX, 19940) +HANDLE_BAT(APINT_TYPE_PREFIX, 19941) +HANDLE_BAT(APINT_TYPE_PREFIX, 19942) +HANDLE_BAT(APINT_TYPE_PREFIX, 19943) +HANDLE_BAT(APINT_TYPE_PREFIX, 19944) +HANDLE_BAT(APINT_TYPE_PREFIX, 19945) +HANDLE_BAT(APINT_TYPE_PREFIX, 19946) +HANDLE_BAT(APINT_TYPE_PREFIX, 19947) +HANDLE_BAT(APINT_TYPE_PREFIX, 19948) +HANDLE_BAT(APINT_TYPE_PREFIX, 19949) +HANDLE_BAT(APINT_TYPE_PREFIX, 19950) +HANDLE_BAT(APINT_TYPE_PREFIX, 19951) +HANDLE_BAT(APINT_TYPE_PREFIX, 19952) +HANDLE_BAT(APINT_TYPE_PREFIX, 19953) +HANDLE_BAT(APINT_TYPE_PREFIX, 19954) +HANDLE_BAT(APINT_TYPE_PREFIX, 19955) +HANDLE_BAT(APINT_TYPE_PREFIX, 19956) +HANDLE_BAT(APINT_TYPE_PREFIX, 19957) +HANDLE_BAT(APINT_TYPE_PREFIX, 19958) +HANDLE_BAT(APINT_TYPE_PREFIX, 19959) +HANDLE_BAT(APINT_TYPE_PREFIX, 19960) +HANDLE_BAT(APINT_TYPE_PREFIX, 19961) +HANDLE_BAT(APINT_TYPE_PREFIX, 19962) +HANDLE_BAT(APINT_TYPE_PREFIX, 19963) +HANDLE_BAT(APINT_TYPE_PREFIX, 19964) +HANDLE_BAT(APINT_TYPE_PREFIX, 19965) +HANDLE_BAT(APINT_TYPE_PREFIX, 19966) +HANDLE_BAT(APINT_TYPE_PREFIX, 19967) +HANDLE_BAT(APINT_TYPE_PREFIX, 19968) +HANDLE_BAT(APINT_TYPE_PREFIX, 19969) +HANDLE_BAT(APINT_TYPE_PREFIX, 19970) +HANDLE_BAT(APINT_TYPE_PREFIX, 19971) +HANDLE_BAT(APINT_TYPE_PREFIX, 19972) +HANDLE_BAT(APINT_TYPE_PREFIX, 19973) +HANDLE_BAT(APINT_TYPE_PREFIX, 19974) +HANDLE_BAT(APINT_TYPE_PREFIX, 19975) +HANDLE_BAT(APINT_TYPE_PREFIX, 19976) +HANDLE_BAT(APINT_TYPE_PREFIX, 19977) +HANDLE_BAT(APINT_TYPE_PREFIX, 19978) +HANDLE_BAT(APINT_TYPE_PREFIX, 19979) +HANDLE_BAT(APINT_TYPE_PREFIX, 19980) +HANDLE_BAT(APINT_TYPE_PREFIX, 19981) +HANDLE_BAT(APINT_TYPE_PREFIX, 19982) +HANDLE_BAT(APINT_TYPE_PREFIX, 19983) +HANDLE_BAT(APINT_TYPE_PREFIX, 19984) +HANDLE_BAT(APINT_TYPE_PREFIX, 19985) +HANDLE_BAT(APINT_TYPE_PREFIX, 19986) +HANDLE_BAT(APINT_TYPE_PREFIX, 19987) +HANDLE_BAT(APINT_TYPE_PREFIX, 19988) +HANDLE_BAT(APINT_TYPE_PREFIX, 19989) +HANDLE_BAT(APINT_TYPE_PREFIX, 19990) +HANDLE_BAT(APINT_TYPE_PREFIX, 19991) +HANDLE_BAT(APINT_TYPE_PREFIX, 19992) +HANDLE_BAT(APINT_TYPE_PREFIX, 19993) +HANDLE_BAT(APINT_TYPE_PREFIX, 19994) +HANDLE_BAT(APINT_TYPE_PREFIX, 19995) +HANDLE_BAT(APINT_TYPE_PREFIX, 19996) +HANDLE_BAT(APINT_TYPE_PREFIX, 19997) +HANDLE_BAT(APINT_TYPE_PREFIX, 19998) +HANDLE_BAT(APINT_TYPE_PREFIX, 19999) +HANDLE_BAT(APINT_TYPE_PREFIX, 20000) +HANDLE_BAT(APINT_TYPE_PREFIX, 20001) +HANDLE_BAT(APINT_TYPE_PREFIX, 20002) +HANDLE_BAT(APINT_TYPE_PREFIX, 20003) +HANDLE_BAT(APINT_TYPE_PREFIX, 20004) +HANDLE_BAT(APINT_TYPE_PREFIX, 20005) +HANDLE_BAT(APINT_TYPE_PREFIX, 20006) +HANDLE_BAT(APINT_TYPE_PREFIX, 20007) +HANDLE_BAT(APINT_TYPE_PREFIX, 20008) +HANDLE_BAT(APINT_TYPE_PREFIX, 20009) +HANDLE_BAT(APINT_TYPE_PREFIX, 20010) +HANDLE_BAT(APINT_TYPE_PREFIX, 20011) +HANDLE_BAT(APINT_TYPE_PREFIX, 20012) +HANDLE_BAT(APINT_TYPE_PREFIX, 20013) +HANDLE_BAT(APINT_TYPE_PREFIX, 20014) +HANDLE_BAT(APINT_TYPE_PREFIX, 20015) +HANDLE_BAT(APINT_TYPE_PREFIX, 20016) +HANDLE_BAT(APINT_TYPE_PREFIX, 20017) +HANDLE_BAT(APINT_TYPE_PREFIX, 20018) +HANDLE_BAT(APINT_TYPE_PREFIX, 20019) +HANDLE_BAT(APINT_TYPE_PREFIX, 20020) +HANDLE_BAT(APINT_TYPE_PREFIX, 20021) +HANDLE_BAT(APINT_TYPE_PREFIX, 20022) +HANDLE_BAT(APINT_TYPE_PREFIX, 20023) +HANDLE_BAT(APINT_TYPE_PREFIX, 20024) +HANDLE_BAT(APINT_TYPE_PREFIX, 20025) +HANDLE_BAT(APINT_TYPE_PREFIX, 20026) +HANDLE_BAT(APINT_TYPE_PREFIX, 20027) +HANDLE_BAT(APINT_TYPE_PREFIX, 20028) +HANDLE_BAT(APINT_TYPE_PREFIX, 20029) +HANDLE_BAT(APINT_TYPE_PREFIX, 20030) +HANDLE_BAT(APINT_TYPE_PREFIX, 20031) +HANDLE_BAT(APINT_TYPE_PREFIX, 20032) +HANDLE_BAT(APINT_TYPE_PREFIX, 20033) +HANDLE_BAT(APINT_TYPE_PREFIX, 20034) +HANDLE_BAT(APINT_TYPE_PREFIX, 20035) +HANDLE_BAT(APINT_TYPE_PREFIX, 20036) +HANDLE_BAT(APINT_TYPE_PREFIX, 20037) +HANDLE_BAT(APINT_TYPE_PREFIX, 20038) +HANDLE_BAT(APINT_TYPE_PREFIX, 20039) +HANDLE_BAT(APINT_TYPE_PREFIX, 20040) +HANDLE_BAT(APINT_TYPE_PREFIX, 20041) +HANDLE_BAT(APINT_TYPE_PREFIX, 20042) +HANDLE_BAT(APINT_TYPE_PREFIX, 20043) +HANDLE_BAT(APINT_TYPE_PREFIX, 20044) +HANDLE_BAT(APINT_TYPE_PREFIX, 20045) +HANDLE_BAT(APINT_TYPE_PREFIX, 20046) +HANDLE_BAT(APINT_TYPE_PREFIX, 20047) +HANDLE_BAT(APINT_TYPE_PREFIX, 20048) +HANDLE_BAT(APINT_TYPE_PREFIX, 20049) +HANDLE_BAT(APINT_TYPE_PREFIX, 20050) +HANDLE_BAT(APINT_TYPE_PREFIX, 20051) +HANDLE_BAT(APINT_TYPE_PREFIX, 20052) +HANDLE_BAT(APINT_TYPE_PREFIX, 20053) +HANDLE_BAT(APINT_TYPE_PREFIX, 20054) +HANDLE_BAT(APINT_TYPE_PREFIX, 20055) +HANDLE_BAT(APINT_TYPE_PREFIX, 20056) +HANDLE_BAT(APINT_TYPE_PREFIX, 20057) +HANDLE_BAT(APINT_TYPE_PREFIX, 20058) +HANDLE_BAT(APINT_TYPE_PREFIX, 20059) +HANDLE_BAT(APINT_TYPE_PREFIX, 20060) +HANDLE_BAT(APINT_TYPE_PREFIX, 20061) +HANDLE_BAT(APINT_TYPE_PREFIX, 20062) +HANDLE_BAT(APINT_TYPE_PREFIX, 20063) +HANDLE_BAT(APINT_TYPE_PREFIX, 20064) +HANDLE_BAT(APINT_TYPE_PREFIX, 20065) +HANDLE_BAT(APINT_TYPE_PREFIX, 20066) +HANDLE_BAT(APINT_TYPE_PREFIX, 20067) +HANDLE_BAT(APINT_TYPE_PREFIX, 20068) +HANDLE_BAT(APINT_TYPE_PREFIX, 20069) +HANDLE_BAT(APINT_TYPE_PREFIX, 20070) +HANDLE_BAT(APINT_TYPE_PREFIX, 20071) +HANDLE_BAT(APINT_TYPE_PREFIX, 20072) +HANDLE_BAT(APINT_TYPE_PREFIX, 20073) +HANDLE_BAT(APINT_TYPE_PREFIX, 20074) +HANDLE_BAT(APINT_TYPE_PREFIX, 20075) +HANDLE_BAT(APINT_TYPE_PREFIX, 20076) +HANDLE_BAT(APINT_TYPE_PREFIX, 20077) +HANDLE_BAT(APINT_TYPE_PREFIX, 20078) +HANDLE_BAT(APINT_TYPE_PREFIX, 20079) +HANDLE_BAT(APINT_TYPE_PREFIX, 20080) +HANDLE_BAT(APINT_TYPE_PREFIX, 20081) +HANDLE_BAT(APINT_TYPE_PREFIX, 20082) +HANDLE_BAT(APINT_TYPE_PREFIX, 20083) +HANDLE_BAT(APINT_TYPE_PREFIX, 20084) +HANDLE_BAT(APINT_TYPE_PREFIX, 20085) +HANDLE_BAT(APINT_TYPE_PREFIX, 20086) +HANDLE_BAT(APINT_TYPE_PREFIX, 20087) +HANDLE_BAT(APINT_TYPE_PREFIX, 20088) +HANDLE_BAT(APINT_TYPE_PREFIX, 20089) +HANDLE_BAT(APINT_TYPE_PREFIX, 20090) +HANDLE_BAT(APINT_TYPE_PREFIX, 20091) +HANDLE_BAT(APINT_TYPE_PREFIX, 20092) +HANDLE_BAT(APINT_TYPE_PREFIX, 20093) +HANDLE_BAT(APINT_TYPE_PREFIX, 20094) +HANDLE_BAT(APINT_TYPE_PREFIX, 20095) +HANDLE_BAT(APINT_TYPE_PREFIX, 20096) +HANDLE_BAT(APINT_TYPE_PREFIX, 20097) +HANDLE_BAT(APINT_TYPE_PREFIX, 20098) +HANDLE_BAT(APINT_TYPE_PREFIX, 20099) +HANDLE_BAT(APINT_TYPE_PREFIX, 20100) +HANDLE_BAT(APINT_TYPE_PREFIX, 20101) +HANDLE_BAT(APINT_TYPE_PREFIX, 20102) +HANDLE_BAT(APINT_TYPE_PREFIX, 20103) +HANDLE_BAT(APINT_TYPE_PREFIX, 20104) +HANDLE_BAT(APINT_TYPE_PREFIX, 20105) +HANDLE_BAT(APINT_TYPE_PREFIX, 20106) +HANDLE_BAT(APINT_TYPE_PREFIX, 20107) +HANDLE_BAT(APINT_TYPE_PREFIX, 20108) +HANDLE_BAT(APINT_TYPE_PREFIX, 20109) +HANDLE_BAT(APINT_TYPE_PREFIX, 20110) +HANDLE_BAT(APINT_TYPE_PREFIX, 20111) +HANDLE_BAT(APINT_TYPE_PREFIX, 20112) +HANDLE_BAT(APINT_TYPE_PREFIX, 20113) +HANDLE_BAT(APINT_TYPE_PREFIX, 20114) +HANDLE_BAT(APINT_TYPE_PREFIX, 20115) +HANDLE_BAT(APINT_TYPE_PREFIX, 20116) +HANDLE_BAT(APINT_TYPE_PREFIX, 20117) +HANDLE_BAT(APINT_TYPE_PREFIX, 20118) +HANDLE_BAT(APINT_TYPE_PREFIX, 20119) +HANDLE_BAT(APINT_TYPE_PREFIX, 20120) +HANDLE_BAT(APINT_TYPE_PREFIX, 20121) +HANDLE_BAT(APINT_TYPE_PREFIX, 20122) +HANDLE_BAT(APINT_TYPE_PREFIX, 20123) +HANDLE_BAT(APINT_TYPE_PREFIX, 20124) +HANDLE_BAT(APINT_TYPE_PREFIX, 20125) +HANDLE_BAT(APINT_TYPE_PREFIX, 20126) +HANDLE_BAT(APINT_TYPE_PREFIX, 20127) +HANDLE_BAT(APINT_TYPE_PREFIX, 20128) +HANDLE_BAT(APINT_TYPE_PREFIX, 20129) +HANDLE_BAT(APINT_TYPE_PREFIX, 20130) +HANDLE_BAT(APINT_TYPE_PREFIX, 20131) +HANDLE_BAT(APINT_TYPE_PREFIX, 20132) +HANDLE_BAT(APINT_TYPE_PREFIX, 20133) +HANDLE_BAT(APINT_TYPE_PREFIX, 20134) +HANDLE_BAT(APINT_TYPE_PREFIX, 20135) +HANDLE_BAT(APINT_TYPE_PREFIX, 20136) +HANDLE_BAT(APINT_TYPE_PREFIX, 20137) +HANDLE_BAT(APINT_TYPE_PREFIX, 20138) +HANDLE_BAT(APINT_TYPE_PREFIX, 20139) +HANDLE_BAT(APINT_TYPE_PREFIX, 20140) +HANDLE_BAT(APINT_TYPE_PREFIX, 20141) +HANDLE_BAT(APINT_TYPE_PREFIX, 20142) +HANDLE_BAT(APINT_TYPE_PREFIX, 20143) +HANDLE_BAT(APINT_TYPE_PREFIX, 20144) +HANDLE_BAT(APINT_TYPE_PREFIX, 20145) +HANDLE_BAT(APINT_TYPE_PREFIX, 20146) +HANDLE_BAT(APINT_TYPE_PREFIX, 20147) +HANDLE_BAT(APINT_TYPE_PREFIX, 20148) +HANDLE_BAT(APINT_TYPE_PREFIX, 20149) +HANDLE_BAT(APINT_TYPE_PREFIX, 20150) +HANDLE_BAT(APINT_TYPE_PREFIX, 20151) +HANDLE_BAT(APINT_TYPE_PREFIX, 20152) +HANDLE_BAT(APINT_TYPE_PREFIX, 20153) +HANDLE_BAT(APINT_TYPE_PREFIX, 20154) +HANDLE_BAT(APINT_TYPE_PREFIX, 20155) +HANDLE_BAT(APINT_TYPE_PREFIX, 20156) +HANDLE_BAT(APINT_TYPE_PREFIX, 20157) +HANDLE_BAT(APINT_TYPE_PREFIX, 20158) +HANDLE_BAT(APINT_TYPE_PREFIX, 20159) +HANDLE_BAT(APINT_TYPE_PREFIX, 20160) +HANDLE_BAT(APINT_TYPE_PREFIX, 20161) +HANDLE_BAT(APINT_TYPE_PREFIX, 20162) +HANDLE_BAT(APINT_TYPE_PREFIX, 20163) +HANDLE_BAT(APINT_TYPE_PREFIX, 20164) +HANDLE_BAT(APINT_TYPE_PREFIX, 20165) +HANDLE_BAT(APINT_TYPE_PREFIX, 20166) +HANDLE_BAT(APINT_TYPE_PREFIX, 20167) +HANDLE_BAT(APINT_TYPE_PREFIX, 20168) +HANDLE_BAT(APINT_TYPE_PREFIX, 20169) +HANDLE_BAT(APINT_TYPE_PREFIX, 20170) +HANDLE_BAT(APINT_TYPE_PREFIX, 20171) +HANDLE_BAT(APINT_TYPE_PREFIX, 20172) +HANDLE_BAT(APINT_TYPE_PREFIX, 20173) +HANDLE_BAT(APINT_TYPE_PREFIX, 20174) +HANDLE_BAT(APINT_TYPE_PREFIX, 20175) +HANDLE_BAT(APINT_TYPE_PREFIX, 20176) +HANDLE_BAT(APINT_TYPE_PREFIX, 20177) +HANDLE_BAT(APINT_TYPE_PREFIX, 20178) +HANDLE_BAT(APINT_TYPE_PREFIX, 20179) +HANDLE_BAT(APINT_TYPE_PREFIX, 20180) +HANDLE_BAT(APINT_TYPE_PREFIX, 20181) +HANDLE_BAT(APINT_TYPE_PREFIX, 20182) +HANDLE_BAT(APINT_TYPE_PREFIX, 20183) +HANDLE_BAT(APINT_TYPE_PREFIX, 20184) +HANDLE_BAT(APINT_TYPE_PREFIX, 20185) +HANDLE_BAT(APINT_TYPE_PREFIX, 20186) +HANDLE_BAT(APINT_TYPE_PREFIX, 20187) +HANDLE_BAT(APINT_TYPE_PREFIX, 20188) +HANDLE_BAT(APINT_TYPE_PREFIX, 20189) +HANDLE_BAT(APINT_TYPE_PREFIX, 20190) +HANDLE_BAT(APINT_TYPE_PREFIX, 20191) +HANDLE_BAT(APINT_TYPE_PREFIX, 20192) +HANDLE_BAT(APINT_TYPE_PREFIX, 20193) +HANDLE_BAT(APINT_TYPE_PREFIX, 20194) +HANDLE_BAT(APINT_TYPE_PREFIX, 20195) +HANDLE_BAT(APINT_TYPE_PREFIX, 20196) +HANDLE_BAT(APINT_TYPE_PREFIX, 20197) +HANDLE_BAT(APINT_TYPE_PREFIX, 20198) +HANDLE_BAT(APINT_TYPE_PREFIX, 20199) +HANDLE_BAT(APINT_TYPE_PREFIX, 20200) +HANDLE_BAT(APINT_TYPE_PREFIX, 20201) +HANDLE_BAT(APINT_TYPE_PREFIX, 20202) +HANDLE_BAT(APINT_TYPE_PREFIX, 20203) +HANDLE_BAT(APINT_TYPE_PREFIX, 20204) +HANDLE_BAT(APINT_TYPE_PREFIX, 20205) +HANDLE_BAT(APINT_TYPE_PREFIX, 20206) +HANDLE_BAT(APINT_TYPE_PREFIX, 20207) +HANDLE_BAT(APINT_TYPE_PREFIX, 20208) +HANDLE_BAT(APINT_TYPE_PREFIX, 20209) +HANDLE_BAT(APINT_TYPE_PREFIX, 20210) +HANDLE_BAT(APINT_TYPE_PREFIX, 20211) +HANDLE_BAT(APINT_TYPE_PREFIX, 20212) +HANDLE_BAT(APINT_TYPE_PREFIX, 20213) +HANDLE_BAT(APINT_TYPE_PREFIX, 20214) +HANDLE_BAT(APINT_TYPE_PREFIX, 20215) +HANDLE_BAT(APINT_TYPE_PREFIX, 20216) +HANDLE_BAT(APINT_TYPE_PREFIX, 20217) +HANDLE_BAT(APINT_TYPE_PREFIX, 20218) +HANDLE_BAT(APINT_TYPE_PREFIX, 20219) +HANDLE_BAT(APINT_TYPE_PREFIX, 20220) +HANDLE_BAT(APINT_TYPE_PREFIX, 20221) +HANDLE_BAT(APINT_TYPE_PREFIX, 20222) +HANDLE_BAT(APINT_TYPE_PREFIX, 20223) +HANDLE_BAT(APINT_TYPE_PREFIX, 20224) +HANDLE_BAT(APINT_TYPE_PREFIX, 20225) +HANDLE_BAT(APINT_TYPE_PREFIX, 20226) +HANDLE_BAT(APINT_TYPE_PREFIX, 20227) +HANDLE_BAT(APINT_TYPE_PREFIX, 20228) +HANDLE_BAT(APINT_TYPE_PREFIX, 20229) +HANDLE_BAT(APINT_TYPE_PREFIX, 20230) +HANDLE_BAT(APINT_TYPE_PREFIX, 20231) +HANDLE_BAT(APINT_TYPE_PREFIX, 20232) +HANDLE_BAT(APINT_TYPE_PREFIX, 20233) +HANDLE_BAT(APINT_TYPE_PREFIX, 20234) +HANDLE_BAT(APINT_TYPE_PREFIX, 20235) +HANDLE_BAT(APINT_TYPE_PREFIX, 20236) +HANDLE_BAT(APINT_TYPE_PREFIX, 20237) +HANDLE_BAT(APINT_TYPE_PREFIX, 20238) +HANDLE_BAT(APINT_TYPE_PREFIX, 20239) +HANDLE_BAT(APINT_TYPE_PREFIX, 20240) +HANDLE_BAT(APINT_TYPE_PREFIX, 20241) +HANDLE_BAT(APINT_TYPE_PREFIX, 20242) +HANDLE_BAT(APINT_TYPE_PREFIX, 20243) +HANDLE_BAT(APINT_TYPE_PREFIX, 20244) +HANDLE_BAT(APINT_TYPE_PREFIX, 20245) +HANDLE_BAT(APINT_TYPE_PREFIX, 20246) +HANDLE_BAT(APINT_TYPE_PREFIX, 20247) +HANDLE_BAT(APINT_TYPE_PREFIX, 20248) +HANDLE_BAT(APINT_TYPE_PREFIX, 20249) +HANDLE_BAT(APINT_TYPE_PREFIX, 20250) +HANDLE_BAT(APINT_TYPE_PREFIX, 20251) +HANDLE_BAT(APINT_TYPE_PREFIX, 20252) +HANDLE_BAT(APINT_TYPE_PREFIX, 20253) +HANDLE_BAT(APINT_TYPE_PREFIX, 20254) +HANDLE_BAT(APINT_TYPE_PREFIX, 20255) +HANDLE_BAT(APINT_TYPE_PREFIX, 20256) +HANDLE_BAT(APINT_TYPE_PREFIX, 20257) +HANDLE_BAT(APINT_TYPE_PREFIX, 20258) +HANDLE_BAT(APINT_TYPE_PREFIX, 20259) +HANDLE_BAT(APINT_TYPE_PREFIX, 20260) +HANDLE_BAT(APINT_TYPE_PREFIX, 20261) +HANDLE_BAT(APINT_TYPE_PREFIX, 20262) +HANDLE_BAT(APINT_TYPE_PREFIX, 20263) +HANDLE_BAT(APINT_TYPE_PREFIX, 20264) +HANDLE_BAT(APINT_TYPE_PREFIX, 20265) +HANDLE_BAT(APINT_TYPE_PREFIX, 20266) +HANDLE_BAT(APINT_TYPE_PREFIX, 20267) +HANDLE_BAT(APINT_TYPE_PREFIX, 20268) +HANDLE_BAT(APINT_TYPE_PREFIX, 20269) +HANDLE_BAT(APINT_TYPE_PREFIX, 20270) +HANDLE_BAT(APINT_TYPE_PREFIX, 20271) +HANDLE_BAT(APINT_TYPE_PREFIX, 20272) +HANDLE_BAT(APINT_TYPE_PREFIX, 20273) +HANDLE_BAT(APINT_TYPE_PREFIX, 20274) +HANDLE_BAT(APINT_TYPE_PREFIX, 20275) +HANDLE_BAT(APINT_TYPE_PREFIX, 20276) +HANDLE_BAT(APINT_TYPE_PREFIX, 20277) +HANDLE_BAT(APINT_TYPE_PREFIX, 20278) +HANDLE_BAT(APINT_TYPE_PREFIX, 20279) +HANDLE_BAT(APINT_TYPE_PREFIX, 20280) +HANDLE_BAT(APINT_TYPE_PREFIX, 20281) +HANDLE_BAT(APINT_TYPE_PREFIX, 20282) +HANDLE_BAT(APINT_TYPE_PREFIX, 20283) +HANDLE_BAT(APINT_TYPE_PREFIX, 20284) +HANDLE_BAT(APINT_TYPE_PREFIX, 20285) +HANDLE_BAT(APINT_TYPE_PREFIX, 20286) +HANDLE_BAT(APINT_TYPE_PREFIX, 20287) +HANDLE_BAT(APINT_TYPE_PREFIX, 20288) +HANDLE_BAT(APINT_TYPE_PREFIX, 20289) +HANDLE_BAT(APINT_TYPE_PREFIX, 20290) +HANDLE_BAT(APINT_TYPE_PREFIX, 20291) +HANDLE_BAT(APINT_TYPE_PREFIX, 20292) +HANDLE_BAT(APINT_TYPE_PREFIX, 20293) +HANDLE_BAT(APINT_TYPE_PREFIX, 20294) +HANDLE_BAT(APINT_TYPE_PREFIX, 20295) +HANDLE_BAT(APINT_TYPE_PREFIX, 20296) +HANDLE_BAT(APINT_TYPE_PREFIX, 20297) +HANDLE_BAT(APINT_TYPE_PREFIX, 20298) +HANDLE_BAT(APINT_TYPE_PREFIX, 20299) +HANDLE_BAT(APINT_TYPE_PREFIX, 20300) +HANDLE_BAT(APINT_TYPE_PREFIX, 20301) +HANDLE_BAT(APINT_TYPE_PREFIX, 20302) +HANDLE_BAT(APINT_TYPE_PREFIX, 20303) +HANDLE_BAT(APINT_TYPE_PREFIX, 20304) +HANDLE_BAT(APINT_TYPE_PREFIX, 20305) +HANDLE_BAT(APINT_TYPE_PREFIX, 20306) +HANDLE_BAT(APINT_TYPE_PREFIX, 20307) +HANDLE_BAT(APINT_TYPE_PREFIX, 20308) +HANDLE_BAT(APINT_TYPE_PREFIX, 20309) +HANDLE_BAT(APINT_TYPE_PREFIX, 20310) +HANDLE_BAT(APINT_TYPE_PREFIX, 20311) +HANDLE_BAT(APINT_TYPE_PREFIX, 20312) +HANDLE_BAT(APINT_TYPE_PREFIX, 20313) +HANDLE_BAT(APINT_TYPE_PREFIX, 20314) +HANDLE_BAT(APINT_TYPE_PREFIX, 20315) +HANDLE_BAT(APINT_TYPE_PREFIX, 20316) +HANDLE_BAT(APINT_TYPE_PREFIX, 20317) +HANDLE_BAT(APINT_TYPE_PREFIX, 20318) +HANDLE_BAT(APINT_TYPE_PREFIX, 20319) +HANDLE_BAT(APINT_TYPE_PREFIX, 20320) +HANDLE_BAT(APINT_TYPE_PREFIX, 20321) +HANDLE_BAT(APINT_TYPE_PREFIX, 20322) +HANDLE_BAT(APINT_TYPE_PREFIX, 20323) +HANDLE_BAT(APINT_TYPE_PREFIX, 20324) +HANDLE_BAT(APINT_TYPE_PREFIX, 20325) +HANDLE_BAT(APINT_TYPE_PREFIX, 20326) +HANDLE_BAT(APINT_TYPE_PREFIX, 20327) +HANDLE_BAT(APINT_TYPE_PREFIX, 20328) +HANDLE_BAT(APINT_TYPE_PREFIX, 20329) +HANDLE_BAT(APINT_TYPE_PREFIX, 20330) +HANDLE_BAT(APINT_TYPE_PREFIX, 20331) +HANDLE_BAT(APINT_TYPE_PREFIX, 20332) +HANDLE_BAT(APINT_TYPE_PREFIX, 20333) +HANDLE_BAT(APINT_TYPE_PREFIX, 20334) +HANDLE_BAT(APINT_TYPE_PREFIX, 20335) +HANDLE_BAT(APINT_TYPE_PREFIX, 20336) +HANDLE_BAT(APINT_TYPE_PREFIX, 20337) +HANDLE_BAT(APINT_TYPE_PREFIX, 20338) +HANDLE_BAT(APINT_TYPE_PREFIX, 20339) +HANDLE_BAT(APINT_TYPE_PREFIX, 20340) +HANDLE_BAT(APINT_TYPE_PREFIX, 20341) +HANDLE_BAT(APINT_TYPE_PREFIX, 20342) +HANDLE_BAT(APINT_TYPE_PREFIX, 20343) +HANDLE_BAT(APINT_TYPE_PREFIX, 20344) +HANDLE_BAT(APINT_TYPE_PREFIX, 20345) +HANDLE_BAT(APINT_TYPE_PREFIX, 20346) +HANDLE_BAT(APINT_TYPE_PREFIX, 20347) +HANDLE_BAT(APINT_TYPE_PREFIX, 20348) +HANDLE_BAT(APINT_TYPE_PREFIX, 20349) +HANDLE_BAT(APINT_TYPE_PREFIX, 20350) +HANDLE_BAT(APINT_TYPE_PREFIX, 20351) +HANDLE_BAT(APINT_TYPE_PREFIX, 20352) +HANDLE_BAT(APINT_TYPE_PREFIX, 20353) +HANDLE_BAT(APINT_TYPE_PREFIX, 20354) +HANDLE_BAT(APINT_TYPE_PREFIX, 20355) +HANDLE_BAT(APINT_TYPE_PREFIX, 20356) +HANDLE_BAT(APINT_TYPE_PREFIX, 20357) +HANDLE_BAT(APINT_TYPE_PREFIX, 20358) +HANDLE_BAT(APINT_TYPE_PREFIX, 20359) +HANDLE_BAT(APINT_TYPE_PREFIX, 20360) +HANDLE_BAT(APINT_TYPE_PREFIX, 20361) +HANDLE_BAT(APINT_TYPE_PREFIX, 20362) +HANDLE_BAT(APINT_TYPE_PREFIX, 20363) +HANDLE_BAT(APINT_TYPE_PREFIX, 20364) +HANDLE_BAT(APINT_TYPE_PREFIX, 20365) +HANDLE_BAT(APINT_TYPE_PREFIX, 20366) +HANDLE_BAT(APINT_TYPE_PREFIX, 20367) +HANDLE_BAT(APINT_TYPE_PREFIX, 20368) +HANDLE_BAT(APINT_TYPE_PREFIX, 20369) +HANDLE_BAT(APINT_TYPE_PREFIX, 20370) +HANDLE_BAT(APINT_TYPE_PREFIX, 20371) +HANDLE_BAT(APINT_TYPE_PREFIX, 20372) +HANDLE_BAT(APINT_TYPE_PREFIX, 20373) +HANDLE_BAT(APINT_TYPE_PREFIX, 20374) +HANDLE_BAT(APINT_TYPE_PREFIX, 20375) +HANDLE_BAT(APINT_TYPE_PREFIX, 20376) +HANDLE_BAT(APINT_TYPE_PREFIX, 20377) +HANDLE_BAT(APINT_TYPE_PREFIX, 20378) +HANDLE_BAT(APINT_TYPE_PREFIX, 20379) +HANDLE_BAT(APINT_TYPE_PREFIX, 20380) +HANDLE_BAT(APINT_TYPE_PREFIX, 20381) +HANDLE_BAT(APINT_TYPE_PREFIX, 20382) +HANDLE_BAT(APINT_TYPE_PREFIX, 20383) +HANDLE_BAT(APINT_TYPE_PREFIX, 20384) +HANDLE_BAT(APINT_TYPE_PREFIX, 20385) +HANDLE_BAT(APINT_TYPE_PREFIX, 20386) +HANDLE_BAT(APINT_TYPE_PREFIX, 20387) +HANDLE_BAT(APINT_TYPE_PREFIX, 20388) +HANDLE_BAT(APINT_TYPE_PREFIX, 20389) +HANDLE_BAT(APINT_TYPE_PREFIX, 20390) +HANDLE_BAT(APINT_TYPE_PREFIX, 20391) +HANDLE_BAT(APINT_TYPE_PREFIX, 20392) +HANDLE_BAT(APINT_TYPE_PREFIX, 20393) +HANDLE_BAT(APINT_TYPE_PREFIX, 20394) +HANDLE_BAT(APINT_TYPE_PREFIX, 20395) +HANDLE_BAT(APINT_TYPE_PREFIX, 20396) +HANDLE_BAT(APINT_TYPE_PREFIX, 20397) +HANDLE_BAT(APINT_TYPE_PREFIX, 20398) +HANDLE_BAT(APINT_TYPE_PREFIX, 20399) +HANDLE_BAT(APINT_TYPE_PREFIX, 20400) +HANDLE_BAT(APINT_TYPE_PREFIX, 20401) +HANDLE_BAT(APINT_TYPE_PREFIX, 20402) +HANDLE_BAT(APINT_TYPE_PREFIX, 20403) +HANDLE_BAT(APINT_TYPE_PREFIX, 20404) +HANDLE_BAT(APINT_TYPE_PREFIX, 20405) +HANDLE_BAT(APINT_TYPE_PREFIX, 20406) +HANDLE_BAT(APINT_TYPE_PREFIX, 20407) +HANDLE_BAT(APINT_TYPE_PREFIX, 20408) +HANDLE_BAT(APINT_TYPE_PREFIX, 20409) +HANDLE_BAT(APINT_TYPE_PREFIX, 20410) +HANDLE_BAT(APINT_TYPE_PREFIX, 20411) +HANDLE_BAT(APINT_TYPE_PREFIX, 20412) +HANDLE_BAT(APINT_TYPE_PREFIX, 20413) +HANDLE_BAT(APINT_TYPE_PREFIX, 20414) +HANDLE_BAT(APINT_TYPE_PREFIX, 20415) +HANDLE_BAT(APINT_TYPE_PREFIX, 20416) +HANDLE_BAT(APINT_TYPE_PREFIX, 20417) +HANDLE_BAT(APINT_TYPE_PREFIX, 20418) +HANDLE_BAT(APINT_TYPE_PREFIX, 20419) +HANDLE_BAT(APINT_TYPE_PREFIX, 20420) +HANDLE_BAT(APINT_TYPE_PREFIX, 20421) +HANDLE_BAT(APINT_TYPE_PREFIX, 20422) +HANDLE_BAT(APINT_TYPE_PREFIX, 20423) +HANDLE_BAT(APINT_TYPE_PREFIX, 20424) +HANDLE_BAT(APINT_TYPE_PREFIX, 20425) +HANDLE_BAT(APINT_TYPE_PREFIX, 20426) +HANDLE_BAT(APINT_TYPE_PREFIX, 20427) +HANDLE_BAT(APINT_TYPE_PREFIX, 20428) +HANDLE_BAT(APINT_TYPE_PREFIX, 20429) +HANDLE_BAT(APINT_TYPE_PREFIX, 20430) +HANDLE_BAT(APINT_TYPE_PREFIX, 20431) +HANDLE_BAT(APINT_TYPE_PREFIX, 20432) +HANDLE_BAT(APINT_TYPE_PREFIX, 20433) +HANDLE_BAT(APINT_TYPE_PREFIX, 20434) +HANDLE_BAT(APINT_TYPE_PREFIX, 20435) +HANDLE_BAT(APINT_TYPE_PREFIX, 20436) +HANDLE_BAT(APINT_TYPE_PREFIX, 20437) +HANDLE_BAT(APINT_TYPE_PREFIX, 20438) +HANDLE_BAT(APINT_TYPE_PREFIX, 20439) +HANDLE_BAT(APINT_TYPE_PREFIX, 20440) +HANDLE_BAT(APINT_TYPE_PREFIX, 20441) +HANDLE_BAT(APINT_TYPE_PREFIX, 20442) +HANDLE_BAT(APINT_TYPE_PREFIX, 20443) +HANDLE_BAT(APINT_TYPE_PREFIX, 20444) +HANDLE_BAT(APINT_TYPE_PREFIX, 20445) +HANDLE_BAT(APINT_TYPE_PREFIX, 20446) +HANDLE_BAT(APINT_TYPE_PREFIX, 20447) +HANDLE_BAT(APINT_TYPE_PREFIX, 20448) +HANDLE_BAT(APINT_TYPE_PREFIX, 20449) +HANDLE_BAT(APINT_TYPE_PREFIX, 20450) +HANDLE_BAT(APINT_TYPE_PREFIX, 20451) +HANDLE_BAT(APINT_TYPE_PREFIX, 20452) +HANDLE_BAT(APINT_TYPE_PREFIX, 20453) +HANDLE_BAT(APINT_TYPE_PREFIX, 20454) +HANDLE_BAT(APINT_TYPE_PREFIX, 20455) +HANDLE_BAT(APINT_TYPE_PREFIX, 20456) +HANDLE_BAT(APINT_TYPE_PREFIX, 20457) +HANDLE_BAT(APINT_TYPE_PREFIX, 20458) +HANDLE_BAT(APINT_TYPE_PREFIX, 20459) +HANDLE_BAT(APINT_TYPE_PREFIX, 20460) +HANDLE_BAT(APINT_TYPE_PREFIX, 20461) +HANDLE_BAT(APINT_TYPE_PREFIX, 20462) +HANDLE_BAT(APINT_TYPE_PREFIX, 20463) +HANDLE_BAT(APINT_TYPE_PREFIX, 20464) +HANDLE_BAT(APINT_TYPE_PREFIX, 20465) +HANDLE_BAT(APINT_TYPE_PREFIX, 20466) +HANDLE_BAT(APINT_TYPE_PREFIX, 20467) +HANDLE_BAT(APINT_TYPE_PREFIX, 20468) +HANDLE_BAT(APINT_TYPE_PREFIX, 20469) +HANDLE_BAT(APINT_TYPE_PREFIX, 20470) +HANDLE_BAT(APINT_TYPE_PREFIX, 20471) +HANDLE_BAT(APINT_TYPE_PREFIX, 20472) +HANDLE_BAT(APINT_TYPE_PREFIX, 20473) +HANDLE_BAT(APINT_TYPE_PREFIX, 20474) +HANDLE_BAT(APINT_TYPE_PREFIX, 20475) +HANDLE_BAT(APINT_TYPE_PREFIX, 20476) +HANDLE_BAT(APINT_TYPE_PREFIX, 20477) +HANDLE_BAT(APINT_TYPE_PREFIX, 20478) +HANDLE_BAT(APINT_TYPE_PREFIX, 20479) +HANDLE_BAT(APINT_TYPE_PREFIX, 20480) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 20 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 20481) +HANDLE_BAT(, 20482) +HANDLE_BAT(, 20483) +HANDLE_BAT(, 20484) +HANDLE_BAT(, 20485) +HANDLE_BAT(, 20486) +HANDLE_BAT(, 20487) +HANDLE_BAT(, 20488) +HANDLE_BAT(, 20489) +HANDLE_BAT(, 20490) +HANDLE_BAT(, 20491) +HANDLE_BAT(, 20492) +HANDLE_BAT(, 20493) +HANDLE_BAT(, 20494) +HANDLE_BAT(, 20495) +HANDLE_BAT(, 20496) +HANDLE_BAT(, 20497) +HANDLE_BAT(, 20498) +HANDLE_BAT(, 20499) +HANDLE_BAT(, 20500) +HANDLE_BAT(, 20501) +HANDLE_BAT(, 20502) +HANDLE_BAT(, 20503) +HANDLE_BAT(, 20504) +HANDLE_BAT(, 20505) +HANDLE_BAT(, 20506) +HANDLE_BAT(, 20507) +HANDLE_BAT(, 20508) +HANDLE_BAT(, 20509) +HANDLE_BAT(, 20510) +HANDLE_BAT(, 20511) +HANDLE_BAT(, 20512) +HANDLE_BAT(, 20513) +HANDLE_BAT(, 20514) +HANDLE_BAT(, 20515) +HANDLE_BAT(, 20516) +HANDLE_BAT(, 20517) +HANDLE_BAT(, 20518) +HANDLE_BAT(, 20519) +HANDLE_BAT(, 20520) +HANDLE_BAT(, 20521) +HANDLE_BAT(, 20522) +HANDLE_BAT(, 20523) +HANDLE_BAT(, 20524) +HANDLE_BAT(, 20525) +HANDLE_BAT(, 20526) +HANDLE_BAT(, 20527) +HANDLE_BAT(, 20528) +HANDLE_BAT(, 20529) +HANDLE_BAT(, 20530) +HANDLE_BAT(, 20531) +HANDLE_BAT(, 20532) +HANDLE_BAT(, 20533) +HANDLE_BAT(, 20534) +HANDLE_BAT(, 20535) +HANDLE_BAT(, 20536) +HANDLE_BAT(, 20537) +HANDLE_BAT(, 20538) +HANDLE_BAT(, 20539) +HANDLE_BAT(, 20540) +HANDLE_BAT(, 20541) +HANDLE_BAT(, 20542) +HANDLE_BAT(, 20543) +HANDLE_BAT(, 20544) +HANDLE_BAT(, 20545) +HANDLE_BAT(, 20546) +HANDLE_BAT(, 20547) +HANDLE_BAT(, 20548) +HANDLE_BAT(, 20549) +HANDLE_BAT(, 20550) +HANDLE_BAT(, 20551) +HANDLE_BAT(, 20552) +HANDLE_BAT(, 20553) +HANDLE_BAT(, 20554) +HANDLE_BAT(, 20555) +HANDLE_BAT(, 20556) +HANDLE_BAT(, 20557) +HANDLE_BAT(, 20558) +HANDLE_BAT(, 20559) +HANDLE_BAT(, 20560) +HANDLE_BAT(, 20561) +HANDLE_BAT(, 20562) +HANDLE_BAT(, 20563) +HANDLE_BAT(, 20564) +HANDLE_BAT(, 20565) +HANDLE_BAT(, 20566) +HANDLE_BAT(, 20567) +HANDLE_BAT(, 20568) +HANDLE_BAT(, 20569) +HANDLE_BAT(, 20570) +HANDLE_BAT(, 20571) +HANDLE_BAT(, 20572) +HANDLE_BAT(, 20573) +HANDLE_BAT(, 20574) +HANDLE_BAT(, 20575) +HANDLE_BAT(, 20576) +HANDLE_BAT(, 20577) +HANDLE_BAT(, 20578) +HANDLE_BAT(, 20579) +HANDLE_BAT(, 20580) +HANDLE_BAT(, 20581) +HANDLE_BAT(, 20582) +HANDLE_BAT(, 20583) +HANDLE_BAT(, 20584) +HANDLE_BAT(, 20585) +HANDLE_BAT(, 20586) +HANDLE_BAT(, 20587) +HANDLE_BAT(, 20588) +HANDLE_BAT(, 20589) +HANDLE_BAT(, 20590) +HANDLE_BAT(, 20591) +HANDLE_BAT(, 20592) +HANDLE_BAT(, 20593) +HANDLE_BAT(, 20594) +HANDLE_BAT(, 20595) +HANDLE_BAT(, 20596) +HANDLE_BAT(, 20597) +HANDLE_BAT(, 20598) +HANDLE_BAT(, 20599) +HANDLE_BAT(, 20600) +HANDLE_BAT(, 20601) +HANDLE_BAT(, 20602) +HANDLE_BAT(, 20603) +HANDLE_BAT(, 20604) +HANDLE_BAT(, 20605) +HANDLE_BAT(, 20606) +HANDLE_BAT(, 20607) +HANDLE_BAT(, 20608) +HANDLE_BAT(, 20609) +HANDLE_BAT(, 20610) +HANDLE_BAT(, 20611) +HANDLE_BAT(, 20612) +HANDLE_BAT(, 20613) +HANDLE_BAT(, 20614) +HANDLE_BAT(, 20615) +HANDLE_BAT(, 20616) +HANDLE_BAT(, 20617) +HANDLE_BAT(, 20618) +HANDLE_BAT(, 20619) +HANDLE_BAT(, 20620) +HANDLE_BAT(, 20621) +HANDLE_BAT(, 20622) +HANDLE_BAT(, 20623) +HANDLE_BAT(, 20624) +HANDLE_BAT(, 20625) +HANDLE_BAT(, 20626) +HANDLE_BAT(, 20627) +HANDLE_BAT(, 20628) +HANDLE_BAT(, 20629) +HANDLE_BAT(, 20630) +HANDLE_BAT(, 20631) +HANDLE_BAT(, 20632) +HANDLE_BAT(, 20633) +HANDLE_BAT(, 20634) +HANDLE_BAT(, 20635) +HANDLE_BAT(, 20636) +HANDLE_BAT(, 20637) +HANDLE_BAT(, 20638) +HANDLE_BAT(, 20639) +HANDLE_BAT(, 20640) +HANDLE_BAT(, 20641) +HANDLE_BAT(, 20642) +HANDLE_BAT(, 20643) +HANDLE_BAT(, 20644) +HANDLE_BAT(, 20645) +HANDLE_BAT(, 20646) +HANDLE_BAT(, 20647) +HANDLE_BAT(, 20648) +HANDLE_BAT(, 20649) +HANDLE_BAT(, 20650) +HANDLE_BAT(, 20651) +HANDLE_BAT(, 20652) +HANDLE_BAT(, 20653) +HANDLE_BAT(, 20654) +HANDLE_BAT(, 20655) +HANDLE_BAT(, 20656) +HANDLE_BAT(, 20657) +HANDLE_BAT(, 20658) +HANDLE_BAT(, 20659) +HANDLE_BAT(, 20660) +HANDLE_BAT(, 20661) +HANDLE_BAT(, 20662) +HANDLE_BAT(, 20663) +HANDLE_BAT(, 20664) +HANDLE_BAT(, 20665) +HANDLE_BAT(, 20666) +HANDLE_BAT(, 20667) +HANDLE_BAT(, 20668) +HANDLE_BAT(, 20669) +HANDLE_BAT(, 20670) +HANDLE_BAT(, 20671) +HANDLE_BAT(, 20672) +HANDLE_BAT(, 20673) +HANDLE_BAT(, 20674) +HANDLE_BAT(, 20675) +HANDLE_BAT(, 20676) +HANDLE_BAT(, 20677) +HANDLE_BAT(, 20678) +HANDLE_BAT(, 20679) +HANDLE_BAT(, 20680) +HANDLE_BAT(, 20681) +HANDLE_BAT(, 20682) +HANDLE_BAT(, 20683) +HANDLE_BAT(, 20684) +HANDLE_BAT(, 20685) +HANDLE_BAT(, 20686) +HANDLE_BAT(, 20687) +HANDLE_BAT(, 20688) +HANDLE_BAT(, 20689) +HANDLE_BAT(, 20690) +HANDLE_BAT(, 20691) +HANDLE_BAT(, 20692) +HANDLE_BAT(, 20693) +HANDLE_BAT(, 20694) +HANDLE_BAT(, 20695) +HANDLE_BAT(, 20696) +HANDLE_BAT(, 20697) +HANDLE_BAT(, 20698) +HANDLE_BAT(, 20699) +HANDLE_BAT(, 20700) +HANDLE_BAT(, 20701) +HANDLE_BAT(, 20702) +HANDLE_BAT(, 20703) +HANDLE_BAT(, 20704) +HANDLE_BAT(, 20705) +HANDLE_BAT(, 20706) +HANDLE_BAT(, 20707) +HANDLE_BAT(, 20708) +HANDLE_BAT(, 20709) +HANDLE_BAT(, 20710) +HANDLE_BAT(, 20711) +HANDLE_BAT(, 20712) +HANDLE_BAT(, 20713) +HANDLE_BAT(, 20714) +HANDLE_BAT(, 20715) +HANDLE_BAT(, 20716) +HANDLE_BAT(, 20717) +HANDLE_BAT(, 20718) +HANDLE_BAT(, 20719) +HANDLE_BAT(, 20720) +HANDLE_BAT(, 20721) +HANDLE_BAT(, 20722) +HANDLE_BAT(, 20723) +HANDLE_BAT(, 20724) +HANDLE_BAT(, 20725) +HANDLE_BAT(, 20726) +HANDLE_BAT(, 20727) +HANDLE_BAT(, 20728) +HANDLE_BAT(, 20729) +HANDLE_BAT(, 20730) +HANDLE_BAT(, 20731) +HANDLE_BAT(, 20732) +HANDLE_BAT(, 20733) +HANDLE_BAT(, 20734) +HANDLE_BAT(, 20735) +HANDLE_BAT(, 20736) +HANDLE_BAT(, 20737) +HANDLE_BAT(, 20738) +HANDLE_BAT(, 20739) +HANDLE_BAT(, 20740) +HANDLE_BAT(, 20741) +HANDLE_BAT(, 20742) +HANDLE_BAT(, 20743) +HANDLE_BAT(, 20744) +HANDLE_BAT(, 20745) +HANDLE_BAT(, 20746) +HANDLE_BAT(, 20747) +HANDLE_BAT(, 20748) +HANDLE_BAT(, 20749) +HANDLE_BAT(, 20750) +HANDLE_BAT(, 20751) +HANDLE_BAT(, 20752) +HANDLE_BAT(, 20753) +HANDLE_BAT(, 20754) +HANDLE_BAT(, 20755) +HANDLE_BAT(, 20756) +HANDLE_BAT(, 20757) +HANDLE_BAT(, 20758) +HANDLE_BAT(, 20759) +HANDLE_BAT(, 20760) +HANDLE_BAT(, 20761) +HANDLE_BAT(, 20762) +HANDLE_BAT(, 20763) +HANDLE_BAT(, 20764) +HANDLE_BAT(, 20765) +HANDLE_BAT(, 20766) +HANDLE_BAT(, 20767) +HANDLE_BAT(, 20768) +HANDLE_BAT(, 20769) +HANDLE_BAT(, 20770) +HANDLE_BAT(, 20771) +HANDLE_BAT(, 20772) +HANDLE_BAT(, 20773) +HANDLE_BAT(, 20774) +HANDLE_BAT(, 20775) +HANDLE_BAT(, 20776) +HANDLE_BAT(, 20777) +HANDLE_BAT(, 20778) +HANDLE_BAT(, 20779) +HANDLE_BAT(, 20780) +HANDLE_BAT(, 20781) +HANDLE_BAT(, 20782) +HANDLE_BAT(, 20783) +HANDLE_BAT(, 20784) +HANDLE_BAT(, 20785) +HANDLE_BAT(, 20786) +HANDLE_BAT(, 20787) +HANDLE_BAT(, 20788) +HANDLE_BAT(, 20789) +HANDLE_BAT(, 20790) +HANDLE_BAT(, 20791) +HANDLE_BAT(, 20792) +HANDLE_BAT(, 20793) +HANDLE_BAT(, 20794) +HANDLE_BAT(, 20795) +HANDLE_BAT(, 20796) +HANDLE_BAT(, 20797) +HANDLE_BAT(, 20798) +HANDLE_BAT(, 20799) +HANDLE_BAT(, 20800) +HANDLE_BAT(, 20801) +HANDLE_BAT(, 20802) +HANDLE_BAT(, 20803) +HANDLE_BAT(, 20804) +HANDLE_BAT(, 20805) +HANDLE_BAT(, 20806) +HANDLE_BAT(, 20807) +HANDLE_BAT(, 20808) +HANDLE_BAT(, 20809) +HANDLE_BAT(, 20810) +HANDLE_BAT(, 20811) +HANDLE_BAT(, 20812) +HANDLE_BAT(, 20813) +HANDLE_BAT(, 20814) +HANDLE_BAT(, 20815) +HANDLE_BAT(, 20816) +HANDLE_BAT(, 20817) +HANDLE_BAT(, 20818) +HANDLE_BAT(, 20819) +HANDLE_BAT(, 20820) +HANDLE_BAT(, 20821) +HANDLE_BAT(, 20822) +HANDLE_BAT(, 20823) +HANDLE_BAT(, 20824) +HANDLE_BAT(, 20825) +HANDLE_BAT(, 20826) +HANDLE_BAT(, 20827) +HANDLE_BAT(, 20828) +HANDLE_BAT(, 20829) +HANDLE_BAT(, 20830) +HANDLE_BAT(, 20831) +HANDLE_BAT(, 20832) +HANDLE_BAT(, 20833) +HANDLE_BAT(, 20834) +HANDLE_BAT(, 20835) +HANDLE_BAT(, 20836) +HANDLE_BAT(, 20837) +HANDLE_BAT(, 20838) +HANDLE_BAT(, 20839) +HANDLE_BAT(, 20840) +HANDLE_BAT(, 20841) +HANDLE_BAT(, 20842) +HANDLE_BAT(, 20843) +HANDLE_BAT(, 20844) +HANDLE_BAT(, 20845) +HANDLE_BAT(, 20846) +HANDLE_BAT(, 20847) +HANDLE_BAT(, 20848) +HANDLE_BAT(, 20849) +HANDLE_BAT(, 20850) +HANDLE_BAT(, 20851) +HANDLE_BAT(, 20852) +HANDLE_BAT(, 20853) +HANDLE_BAT(, 20854) +HANDLE_BAT(, 20855) +HANDLE_BAT(, 20856) +HANDLE_BAT(, 20857) +HANDLE_BAT(, 20858) +HANDLE_BAT(, 20859) +HANDLE_BAT(, 20860) +HANDLE_BAT(, 20861) +HANDLE_BAT(, 20862) +HANDLE_BAT(, 20863) +HANDLE_BAT(, 20864) +HANDLE_BAT(, 20865) +HANDLE_BAT(, 20866) +HANDLE_BAT(, 20867) +HANDLE_BAT(, 20868) +HANDLE_BAT(, 20869) +HANDLE_BAT(, 20870) +HANDLE_BAT(, 20871) +HANDLE_BAT(, 20872) +HANDLE_BAT(, 20873) +HANDLE_BAT(, 20874) +HANDLE_BAT(, 20875) +HANDLE_BAT(, 20876) +HANDLE_BAT(, 20877) +HANDLE_BAT(, 20878) +HANDLE_BAT(, 20879) +HANDLE_BAT(, 20880) +HANDLE_BAT(, 20881) +HANDLE_BAT(, 20882) +HANDLE_BAT(, 20883) +HANDLE_BAT(, 20884) +HANDLE_BAT(, 20885) +HANDLE_BAT(, 20886) +HANDLE_BAT(, 20887) +HANDLE_BAT(, 20888) +HANDLE_BAT(, 20889) +HANDLE_BAT(, 20890) +HANDLE_BAT(, 20891) +HANDLE_BAT(, 20892) +HANDLE_BAT(, 20893) +HANDLE_BAT(, 20894) +HANDLE_BAT(, 20895) +HANDLE_BAT(, 20896) +HANDLE_BAT(, 20897) +HANDLE_BAT(, 20898) +HANDLE_BAT(, 20899) +HANDLE_BAT(, 20900) +HANDLE_BAT(, 20901) +HANDLE_BAT(, 20902) +HANDLE_BAT(, 20903) +HANDLE_BAT(, 20904) +HANDLE_BAT(, 20905) +HANDLE_BAT(, 20906) +HANDLE_BAT(, 20907) +HANDLE_BAT(, 20908) +HANDLE_BAT(, 20909) +HANDLE_BAT(, 20910) +HANDLE_BAT(, 20911) +HANDLE_BAT(, 20912) +HANDLE_BAT(, 20913) +HANDLE_BAT(, 20914) +HANDLE_BAT(, 20915) +HANDLE_BAT(, 20916) +HANDLE_BAT(, 20917) +HANDLE_BAT(, 20918) +HANDLE_BAT(, 20919) +HANDLE_BAT(, 20920) +HANDLE_BAT(, 20921) +HANDLE_BAT(, 20922) +HANDLE_BAT(, 20923) +HANDLE_BAT(, 20924) +HANDLE_BAT(, 20925) +HANDLE_BAT(, 20926) +HANDLE_BAT(, 20927) +HANDLE_BAT(, 20928) +HANDLE_BAT(, 20929) +HANDLE_BAT(, 20930) +HANDLE_BAT(, 20931) +HANDLE_BAT(, 20932) +HANDLE_BAT(, 20933) +HANDLE_BAT(, 20934) +HANDLE_BAT(, 20935) +HANDLE_BAT(, 20936) +HANDLE_BAT(, 20937) +HANDLE_BAT(, 20938) +HANDLE_BAT(, 20939) +HANDLE_BAT(, 20940) +HANDLE_BAT(, 20941) +HANDLE_BAT(, 20942) +HANDLE_BAT(, 20943) +HANDLE_BAT(, 20944) +HANDLE_BAT(, 20945) +HANDLE_BAT(, 20946) +HANDLE_BAT(, 20947) +HANDLE_BAT(, 20948) +HANDLE_BAT(, 20949) +HANDLE_BAT(, 20950) +HANDLE_BAT(, 20951) +HANDLE_BAT(, 20952) +HANDLE_BAT(, 20953) +HANDLE_BAT(, 20954) +HANDLE_BAT(, 20955) +HANDLE_BAT(, 20956) +HANDLE_BAT(, 20957) +HANDLE_BAT(, 20958) +HANDLE_BAT(, 20959) +HANDLE_BAT(, 20960) +HANDLE_BAT(, 20961) +HANDLE_BAT(, 20962) +HANDLE_BAT(, 20963) +HANDLE_BAT(, 20964) +HANDLE_BAT(, 20965) +HANDLE_BAT(, 20966) +HANDLE_BAT(, 20967) +HANDLE_BAT(, 20968) +HANDLE_BAT(, 20969) +HANDLE_BAT(, 20970) +HANDLE_BAT(, 20971) +HANDLE_BAT(, 20972) +HANDLE_BAT(, 20973) +HANDLE_BAT(, 20974) +HANDLE_BAT(, 20975) +HANDLE_BAT(, 20976) +HANDLE_BAT(, 20977) +HANDLE_BAT(, 20978) +HANDLE_BAT(, 20979) +HANDLE_BAT(, 20980) +HANDLE_BAT(, 20981) +HANDLE_BAT(, 20982) +HANDLE_BAT(, 20983) +HANDLE_BAT(, 20984) +HANDLE_BAT(, 20985) +HANDLE_BAT(, 20986) +HANDLE_BAT(, 20987) +HANDLE_BAT(, 20988) +HANDLE_BAT(, 20989) +HANDLE_BAT(, 20990) +HANDLE_BAT(, 20991) +HANDLE_BAT(, 20992) +HANDLE_BAT(, 20993) +HANDLE_BAT(, 20994) +HANDLE_BAT(, 20995) +HANDLE_BAT(, 20996) +HANDLE_BAT(, 20997) +HANDLE_BAT(, 20998) +HANDLE_BAT(, 20999) +HANDLE_BAT(, 21000) +HANDLE_BAT(, 21001) +HANDLE_BAT(, 21002) +HANDLE_BAT(, 21003) +HANDLE_BAT(, 21004) +HANDLE_BAT(, 21005) +HANDLE_BAT(, 21006) +HANDLE_BAT(, 21007) +HANDLE_BAT(, 21008) +HANDLE_BAT(, 21009) +HANDLE_BAT(, 21010) +HANDLE_BAT(, 21011) +HANDLE_BAT(, 21012) +HANDLE_BAT(, 21013) +HANDLE_BAT(, 21014) +HANDLE_BAT(, 21015) +HANDLE_BAT(, 21016) +HANDLE_BAT(, 21017) +HANDLE_BAT(, 21018) +HANDLE_BAT(, 21019) +HANDLE_BAT(, 21020) +HANDLE_BAT(, 21021) +HANDLE_BAT(, 21022) +HANDLE_BAT(, 21023) +HANDLE_BAT(, 21024) +HANDLE_BAT(, 21025) +HANDLE_BAT(, 21026) +HANDLE_BAT(, 21027) +HANDLE_BAT(, 21028) +HANDLE_BAT(, 21029) +HANDLE_BAT(, 21030) +HANDLE_BAT(, 21031) +HANDLE_BAT(, 21032) +HANDLE_BAT(, 21033) +HANDLE_BAT(, 21034) +HANDLE_BAT(, 21035) +HANDLE_BAT(, 21036) +HANDLE_BAT(, 21037) +HANDLE_BAT(, 21038) +HANDLE_BAT(, 21039) +HANDLE_BAT(, 21040) +HANDLE_BAT(, 21041) +HANDLE_BAT(, 21042) +HANDLE_BAT(, 21043) +HANDLE_BAT(, 21044) +HANDLE_BAT(, 21045) +HANDLE_BAT(, 21046) +HANDLE_BAT(, 21047) +HANDLE_BAT(, 21048) +HANDLE_BAT(, 21049) +HANDLE_BAT(, 21050) +HANDLE_BAT(, 21051) +HANDLE_BAT(, 21052) +HANDLE_BAT(, 21053) +HANDLE_BAT(, 21054) +HANDLE_BAT(, 21055) +HANDLE_BAT(, 21056) +HANDLE_BAT(, 21057) +HANDLE_BAT(, 21058) +HANDLE_BAT(, 21059) +HANDLE_BAT(, 21060) +HANDLE_BAT(, 21061) +HANDLE_BAT(, 21062) +HANDLE_BAT(, 21063) +HANDLE_BAT(, 21064) +HANDLE_BAT(, 21065) +HANDLE_BAT(, 21066) +HANDLE_BAT(, 21067) +HANDLE_BAT(, 21068) +HANDLE_BAT(, 21069) +HANDLE_BAT(, 21070) +HANDLE_BAT(, 21071) +HANDLE_BAT(, 21072) +HANDLE_BAT(, 21073) +HANDLE_BAT(, 21074) +HANDLE_BAT(, 21075) +HANDLE_BAT(, 21076) +HANDLE_BAT(, 21077) +HANDLE_BAT(, 21078) +HANDLE_BAT(, 21079) +HANDLE_BAT(, 21080) +HANDLE_BAT(, 21081) +HANDLE_BAT(, 21082) +HANDLE_BAT(, 21083) +HANDLE_BAT(, 21084) +HANDLE_BAT(, 21085) +HANDLE_BAT(, 21086) +HANDLE_BAT(, 21087) +HANDLE_BAT(, 21088) +HANDLE_BAT(, 21089) +HANDLE_BAT(, 21090) +HANDLE_BAT(, 21091) +HANDLE_BAT(, 21092) +HANDLE_BAT(, 21093) +HANDLE_BAT(, 21094) +HANDLE_BAT(, 21095) +HANDLE_BAT(, 21096) +HANDLE_BAT(, 21097) +HANDLE_BAT(, 21098) +HANDLE_BAT(, 21099) +HANDLE_BAT(, 21100) +HANDLE_BAT(, 21101) +HANDLE_BAT(, 21102) +HANDLE_BAT(, 21103) +HANDLE_BAT(, 21104) +HANDLE_BAT(, 21105) +HANDLE_BAT(, 21106) +HANDLE_BAT(, 21107) +HANDLE_BAT(, 21108) +HANDLE_BAT(, 21109) +HANDLE_BAT(, 21110) +HANDLE_BAT(, 21111) +HANDLE_BAT(, 21112) +HANDLE_BAT(, 21113) +HANDLE_BAT(, 21114) +HANDLE_BAT(, 21115) +HANDLE_BAT(, 21116) +HANDLE_BAT(, 21117) +HANDLE_BAT(, 21118) +HANDLE_BAT(, 21119) +HANDLE_BAT(, 21120) +HANDLE_BAT(, 21121) +HANDLE_BAT(, 21122) +HANDLE_BAT(, 21123) +HANDLE_BAT(, 21124) +HANDLE_BAT(, 21125) +HANDLE_BAT(, 21126) +HANDLE_BAT(, 21127) +HANDLE_BAT(, 21128) +HANDLE_BAT(, 21129) +HANDLE_BAT(, 21130) +HANDLE_BAT(, 21131) +HANDLE_BAT(, 21132) +HANDLE_BAT(, 21133) +HANDLE_BAT(, 21134) +HANDLE_BAT(, 21135) +HANDLE_BAT(, 21136) +HANDLE_BAT(, 21137) +HANDLE_BAT(, 21138) +HANDLE_BAT(, 21139) +HANDLE_BAT(, 21140) +HANDLE_BAT(, 21141) +HANDLE_BAT(, 21142) +HANDLE_BAT(, 21143) +HANDLE_BAT(, 21144) +HANDLE_BAT(, 21145) +HANDLE_BAT(, 21146) +HANDLE_BAT(, 21147) +HANDLE_BAT(, 21148) +HANDLE_BAT(, 21149) +HANDLE_BAT(, 21150) +HANDLE_BAT(, 21151) +HANDLE_BAT(, 21152) +HANDLE_BAT(, 21153) +HANDLE_BAT(, 21154) +HANDLE_BAT(, 21155) +HANDLE_BAT(, 21156) +HANDLE_BAT(, 21157) +HANDLE_BAT(, 21158) +HANDLE_BAT(, 21159) +HANDLE_BAT(, 21160) +HANDLE_BAT(, 21161) +HANDLE_BAT(, 21162) +HANDLE_BAT(, 21163) +HANDLE_BAT(, 21164) +HANDLE_BAT(, 21165) +HANDLE_BAT(, 21166) +HANDLE_BAT(, 21167) +HANDLE_BAT(, 21168) +HANDLE_BAT(, 21169) +HANDLE_BAT(, 21170) +HANDLE_BAT(, 21171) +HANDLE_BAT(, 21172) +HANDLE_BAT(, 21173) +HANDLE_BAT(, 21174) +HANDLE_BAT(, 21175) +HANDLE_BAT(, 21176) +HANDLE_BAT(, 21177) +HANDLE_BAT(, 21178) +HANDLE_BAT(, 21179) +HANDLE_BAT(, 21180) +HANDLE_BAT(, 21181) +HANDLE_BAT(, 21182) +HANDLE_BAT(, 21183) +HANDLE_BAT(, 21184) +HANDLE_BAT(, 21185) +HANDLE_BAT(, 21186) +HANDLE_BAT(, 21187) +HANDLE_BAT(, 21188) +HANDLE_BAT(, 21189) +HANDLE_BAT(, 21190) +HANDLE_BAT(, 21191) +HANDLE_BAT(, 21192) +HANDLE_BAT(, 21193) +HANDLE_BAT(, 21194) +HANDLE_BAT(, 21195) +HANDLE_BAT(, 21196) +HANDLE_BAT(, 21197) +HANDLE_BAT(, 21198) +HANDLE_BAT(, 21199) +HANDLE_BAT(, 21200) +HANDLE_BAT(, 21201) +HANDLE_BAT(, 21202) +HANDLE_BAT(, 21203) +HANDLE_BAT(, 21204) +HANDLE_BAT(, 21205) +HANDLE_BAT(, 21206) +HANDLE_BAT(, 21207) +HANDLE_BAT(, 21208) +HANDLE_BAT(, 21209) +HANDLE_BAT(, 21210) +HANDLE_BAT(, 21211) +HANDLE_BAT(, 21212) +HANDLE_BAT(, 21213) +HANDLE_BAT(, 21214) +HANDLE_BAT(, 21215) +HANDLE_BAT(, 21216) +HANDLE_BAT(, 21217) +HANDLE_BAT(, 21218) +HANDLE_BAT(, 21219) +HANDLE_BAT(, 21220) +HANDLE_BAT(, 21221) +HANDLE_BAT(, 21222) +HANDLE_BAT(, 21223) +HANDLE_BAT(, 21224) +HANDLE_BAT(, 21225) +HANDLE_BAT(, 21226) +HANDLE_BAT(, 21227) +HANDLE_BAT(, 21228) +HANDLE_BAT(, 21229) +HANDLE_BAT(, 21230) +HANDLE_BAT(, 21231) +HANDLE_BAT(, 21232) +HANDLE_BAT(, 21233) +HANDLE_BAT(, 21234) +HANDLE_BAT(, 21235) +HANDLE_BAT(, 21236) +HANDLE_BAT(, 21237) +HANDLE_BAT(, 21238) +HANDLE_BAT(, 21239) +HANDLE_BAT(, 21240) +HANDLE_BAT(, 21241) +HANDLE_BAT(, 21242) +HANDLE_BAT(, 21243) +HANDLE_BAT(, 21244) +HANDLE_BAT(, 21245) +HANDLE_BAT(, 21246) +HANDLE_BAT(, 21247) +HANDLE_BAT(, 21248) +HANDLE_BAT(, 21249) +HANDLE_BAT(, 21250) +HANDLE_BAT(, 21251) +HANDLE_BAT(, 21252) +HANDLE_BAT(, 21253) +HANDLE_BAT(, 21254) +HANDLE_BAT(, 21255) +HANDLE_BAT(, 21256) +HANDLE_BAT(, 21257) +HANDLE_BAT(, 21258) +HANDLE_BAT(, 21259) +HANDLE_BAT(, 21260) +HANDLE_BAT(, 21261) +HANDLE_BAT(, 21262) +HANDLE_BAT(, 21263) +HANDLE_BAT(, 21264) +HANDLE_BAT(, 21265) +HANDLE_BAT(, 21266) +HANDLE_BAT(, 21267) +HANDLE_BAT(, 21268) +HANDLE_BAT(, 21269) +HANDLE_BAT(, 21270) +HANDLE_BAT(, 21271) +HANDLE_BAT(, 21272) +HANDLE_BAT(, 21273) +HANDLE_BAT(, 21274) +HANDLE_BAT(, 21275) +HANDLE_BAT(, 21276) +HANDLE_BAT(, 21277) +HANDLE_BAT(, 21278) +HANDLE_BAT(, 21279) +HANDLE_BAT(, 21280) +HANDLE_BAT(, 21281) +HANDLE_BAT(, 21282) +HANDLE_BAT(, 21283) +HANDLE_BAT(, 21284) +HANDLE_BAT(, 21285) +HANDLE_BAT(, 21286) +HANDLE_BAT(, 21287) +HANDLE_BAT(, 21288) +HANDLE_BAT(, 21289) +HANDLE_BAT(, 21290) +HANDLE_BAT(, 21291) +HANDLE_BAT(, 21292) +HANDLE_BAT(, 21293) +HANDLE_BAT(, 21294) +HANDLE_BAT(, 21295) +HANDLE_BAT(, 21296) +HANDLE_BAT(, 21297) +HANDLE_BAT(, 21298) +HANDLE_BAT(, 21299) +HANDLE_BAT(, 21300) +HANDLE_BAT(, 21301) +HANDLE_BAT(, 21302) +HANDLE_BAT(, 21303) +HANDLE_BAT(, 21304) +HANDLE_BAT(, 21305) +HANDLE_BAT(, 21306) +HANDLE_BAT(, 21307) +HANDLE_BAT(, 21308) +HANDLE_BAT(, 21309) +HANDLE_BAT(, 21310) +HANDLE_BAT(, 21311) +HANDLE_BAT(, 21312) +HANDLE_BAT(, 21313) +HANDLE_BAT(, 21314) +HANDLE_BAT(, 21315) +HANDLE_BAT(, 21316) +HANDLE_BAT(, 21317) +HANDLE_BAT(, 21318) +HANDLE_BAT(, 21319) +HANDLE_BAT(, 21320) +HANDLE_BAT(, 21321) +HANDLE_BAT(, 21322) +HANDLE_BAT(, 21323) +HANDLE_BAT(, 21324) +HANDLE_BAT(, 21325) +HANDLE_BAT(, 21326) +HANDLE_BAT(, 21327) +HANDLE_BAT(, 21328) +HANDLE_BAT(, 21329) +HANDLE_BAT(, 21330) +HANDLE_BAT(, 21331) +HANDLE_BAT(, 21332) +HANDLE_BAT(, 21333) +HANDLE_BAT(, 21334) +HANDLE_BAT(, 21335) +HANDLE_BAT(, 21336) +HANDLE_BAT(, 21337) +HANDLE_BAT(, 21338) +HANDLE_BAT(, 21339) +HANDLE_BAT(, 21340) +HANDLE_BAT(, 21341) +HANDLE_BAT(, 21342) +HANDLE_BAT(, 21343) +HANDLE_BAT(, 21344) +HANDLE_BAT(, 21345) +HANDLE_BAT(, 21346) +HANDLE_BAT(, 21347) +HANDLE_BAT(, 21348) +HANDLE_BAT(, 21349) +HANDLE_BAT(, 21350) +HANDLE_BAT(, 21351) +HANDLE_BAT(, 21352) +HANDLE_BAT(, 21353) +HANDLE_BAT(, 21354) +HANDLE_BAT(, 21355) +HANDLE_BAT(, 21356) +HANDLE_BAT(, 21357) +HANDLE_BAT(, 21358) +HANDLE_BAT(, 21359) +HANDLE_BAT(, 21360) +HANDLE_BAT(, 21361) +HANDLE_BAT(, 21362) +HANDLE_BAT(, 21363) +HANDLE_BAT(, 21364) +HANDLE_BAT(, 21365) +HANDLE_BAT(, 21366) +HANDLE_BAT(, 21367) +HANDLE_BAT(, 21368) +HANDLE_BAT(, 21369) +HANDLE_BAT(, 21370) +HANDLE_BAT(, 21371) +HANDLE_BAT(, 21372) +HANDLE_BAT(, 21373) +HANDLE_BAT(, 21374) +HANDLE_BAT(, 21375) +HANDLE_BAT(, 21376) +HANDLE_BAT(, 21377) +HANDLE_BAT(, 21378) +HANDLE_BAT(, 21379) +HANDLE_BAT(, 21380) +HANDLE_BAT(, 21381) +HANDLE_BAT(, 21382) +HANDLE_BAT(, 21383) +HANDLE_BAT(, 21384) +HANDLE_BAT(, 21385) +HANDLE_BAT(, 21386) +HANDLE_BAT(, 21387) +HANDLE_BAT(, 21388) +HANDLE_BAT(, 21389) +HANDLE_BAT(, 21390) +HANDLE_BAT(, 21391) +HANDLE_BAT(, 21392) +HANDLE_BAT(, 21393) +HANDLE_BAT(, 21394) +HANDLE_BAT(, 21395) +HANDLE_BAT(, 21396) +HANDLE_BAT(, 21397) +HANDLE_BAT(, 21398) +HANDLE_BAT(, 21399) +HANDLE_BAT(, 21400) +HANDLE_BAT(, 21401) +HANDLE_BAT(, 21402) +HANDLE_BAT(, 21403) +HANDLE_BAT(, 21404) +HANDLE_BAT(, 21405) +HANDLE_BAT(, 21406) +HANDLE_BAT(, 21407) +HANDLE_BAT(, 21408) +HANDLE_BAT(, 21409) +HANDLE_BAT(, 21410) +HANDLE_BAT(, 21411) +HANDLE_BAT(, 21412) +HANDLE_BAT(, 21413) +HANDLE_BAT(, 21414) +HANDLE_BAT(, 21415) +HANDLE_BAT(, 21416) +HANDLE_BAT(, 21417) +HANDLE_BAT(, 21418) +HANDLE_BAT(, 21419) +HANDLE_BAT(, 21420) +HANDLE_BAT(, 21421) +HANDLE_BAT(, 21422) +HANDLE_BAT(, 21423) +HANDLE_BAT(, 21424) +HANDLE_BAT(, 21425) +HANDLE_BAT(, 21426) +HANDLE_BAT(, 21427) +HANDLE_BAT(, 21428) +HANDLE_BAT(, 21429) +HANDLE_BAT(, 21430) +HANDLE_BAT(, 21431) +HANDLE_BAT(, 21432) +HANDLE_BAT(, 21433) +HANDLE_BAT(, 21434) +HANDLE_BAT(, 21435) +HANDLE_BAT(, 21436) +HANDLE_BAT(, 21437) +HANDLE_BAT(, 21438) +HANDLE_BAT(, 21439) +HANDLE_BAT(, 21440) +HANDLE_BAT(, 21441) +HANDLE_BAT(, 21442) +HANDLE_BAT(, 21443) +HANDLE_BAT(, 21444) +HANDLE_BAT(, 21445) +HANDLE_BAT(, 21446) +HANDLE_BAT(, 21447) +HANDLE_BAT(, 21448) +HANDLE_BAT(, 21449) +HANDLE_BAT(, 21450) +HANDLE_BAT(, 21451) +HANDLE_BAT(, 21452) +HANDLE_BAT(, 21453) +HANDLE_BAT(, 21454) +HANDLE_BAT(, 21455) +HANDLE_BAT(, 21456) +HANDLE_BAT(, 21457) +HANDLE_BAT(, 21458) +HANDLE_BAT(, 21459) +HANDLE_BAT(, 21460) +HANDLE_BAT(, 21461) +HANDLE_BAT(, 21462) +HANDLE_BAT(, 21463) +HANDLE_BAT(, 21464) +HANDLE_BAT(, 21465) +HANDLE_BAT(, 21466) +HANDLE_BAT(, 21467) +HANDLE_BAT(, 21468) +HANDLE_BAT(, 21469) +HANDLE_BAT(, 21470) +HANDLE_BAT(, 21471) +HANDLE_BAT(, 21472) +HANDLE_BAT(, 21473) +HANDLE_BAT(, 21474) +HANDLE_BAT(, 21475) +HANDLE_BAT(, 21476) +HANDLE_BAT(, 21477) +HANDLE_BAT(, 21478) +HANDLE_BAT(, 21479) +HANDLE_BAT(, 21480) +HANDLE_BAT(, 21481) +HANDLE_BAT(, 21482) +HANDLE_BAT(, 21483) +HANDLE_BAT(, 21484) +HANDLE_BAT(, 21485) +HANDLE_BAT(, 21486) +HANDLE_BAT(, 21487) +HANDLE_BAT(, 21488) +HANDLE_BAT(, 21489) +HANDLE_BAT(, 21490) +HANDLE_BAT(, 21491) +HANDLE_BAT(, 21492) +HANDLE_BAT(, 21493) +HANDLE_BAT(, 21494) +HANDLE_BAT(, 21495) +HANDLE_BAT(, 21496) +HANDLE_BAT(, 21497) +HANDLE_BAT(, 21498) +HANDLE_BAT(, 21499) +HANDLE_BAT(, 21500) +HANDLE_BAT(, 21501) +HANDLE_BAT(, 21502) +HANDLE_BAT(, 21503) +HANDLE_BAT(, 21504) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 20481) +HANDLE_BAT(APINT_TYPE_PREFIX, 20482) +HANDLE_BAT(APINT_TYPE_PREFIX, 20483) +HANDLE_BAT(APINT_TYPE_PREFIX, 20484) +HANDLE_BAT(APINT_TYPE_PREFIX, 20485) +HANDLE_BAT(APINT_TYPE_PREFIX, 20486) +HANDLE_BAT(APINT_TYPE_PREFIX, 20487) +HANDLE_BAT(APINT_TYPE_PREFIX, 20488) +HANDLE_BAT(APINT_TYPE_PREFIX, 20489) +HANDLE_BAT(APINT_TYPE_PREFIX, 20490) +HANDLE_BAT(APINT_TYPE_PREFIX, 20491) +HANDLE_BAT(APINT_TYPE_PREFIX, 20492) +HANDLE_BAT(APINT_TYPE_PREFIX, 20493) +HANDLE_BAT(APINT_TYPE_PREFIX, 20494) +HANDLE_BAT(APINT_TYPE_PREFIX, 20495) +HANDLE_BAT(APINT_TYPE_PREFIX, 20496) +HANDLE_BAT(APINT_TYPE_PREFIX, 20497) +HANDLE_BAT(APINT_TYPE_PREFIX, 20498) +HANDLE_BAT(APINT_TYPE_PREFIX, 20499) +HANDLE_BAT(APINT_TYPE_PREFIX, 20500) +HANDLE_BAT(APINT_TYPE_PREFIX, 20501) +HANDLE_BAT(APINT_TYPE_PREFIX, 20502) +HANDLE_BAT(APINT_TYPE_PREFIX, 20503) +HANDLE_BAT(APINT_TYPE_PREFIX, 20504) +HANDLE_BAT(APINT_TYPE_PREFIX, 20505) +HANDLE_BAT(APINT_TYPE_PREFIX, 20506) +HANDLE_BAT(APINT_TYPE_PREFIX, 20507) +HANDLE_BAT(APINT_TYPE_PREFIX, 20508) +HANDLE_BAT(APINT_TYPE_PREFIX, 20509) +HANDLE_BAT(APINT_TYPE_PREFIX, 20510) +HANDLE_BAT(APINT_TYPE_PREFIX, 20511) +HANDLE_BAT(APINT_TYPE_PREFIX, 20512) +HANDLE_BAT(APINT_TYPE_PREFIX, 20513) +HANDLE_BAT(APINT_TYPE_PREFIX, 20514) +HANDLE_BAT(APINT_TYPE_PREFIX, 20515) +HANDLE_BAT(APINT_TYPE_PREFIX, 20516) +HANDLE_BAT(APINT_TYPE_PREFIX, 20517) +HANDLE_BAT(APINT_TYPE_PREFIX, 20518) +HANDLE_BAT(APINT_TYPE_PREFIX, 20519) +HANDLE_BAT(APINT_TYPE_PREFIX, 20520) +HANDLE_BAT(APINT_TYPE_PREFIX, 20521) +HANDLE_BAT(APINT_TYPE_PREFIX, 20522) +HANDLE_BAT(APINT_TYPE_PREFIX, 20523) +HANDLE_BAT(APINT_TYPE_PREFIX, 20524) +HANDLE_BAT(APINT_TYPE_PREFIX, 20525) +HANDLE_BAT(APINT_TYPE_PREFIX, 20526) +HANDLE_BAT(APINT_TYPE_PREFIX, 20527) +HANDLE_BAT(APINT_TYPE_PREFIX, 20528) +HANDLE_BAT(APINT_TYPE_PREFIX, 20529) +HANDLE_BAT(APINT_TYPE_PREFIX, 20530) +HANDLE_BAT(APINT_TYPE_PREFIX, 20531) +HANDLE_BAT(APINT_TYPE_PREFIX, 20532) +HANDLE_BAT(APINT_TYPE_PREFIX, 20533) +HANDLE_BAT(APINT_TYPE_PREFIX, 20534) +HANDLE_BAT(APINT_TYPE_PREFIX, 20535) +HANDLE_BAT(APINT_TYPE_PREFIX, 20536) +HANDLE_BAT(APINT_TYPE_PREFIX, 20537) +HANDLE_BAT(APINT_TYPE_PREFIX, 20538) +HANDLE_BAT(APINT_TYPE_PREFIX, 20539) +HANDLE_BAT(APINT_TYPE_PREFIX, 20540) +HANDLE_BAT(APINT_TYPE_PREFIX, 20541) +HANDLE_BAT(APINT_TYPE_PREFIX, 20542) +HANDLE_BAT(APINT_TYPE_PREFIX, 20543) +HANDLE_BAT(APINT_TYPE_PREFIX, 20544) +HANDLE_BAT(APINT_TYPE_PREFIX, 20545) +HANDLE_BAT(APINT_TYPE_PREFIX, 20546) +HANDLE_BAT(APINT_TYPE_PREFIX, 20547) +HANDLE_BAT(APINT_TYPE_PREFIX, 20548) +HANDLE_BAT(APINT_TYPE_PREFIX, 20549) +HANDLE_BAT(APINT_TYPE_PREFIX, 20550) +HANDLE_BAT(APINT_TYPE_PREFIX, 20551) +HANDLE_BAT(APINT_TYPE_PREFIX, 20552) +HANDLE_BAT(APINT_TYPE_PREFIX, 20553) +HANDLE_BAT(APINT_TYPE_PREFIX, 20554) +HANDLE_BAT(APINT_TYPE_PREFIX, 20555) +HANDLE_BAT(APINT_TYPE_PREFIX, 20556) +HANDLE_BAT(APINT_TYPE_PREFIX, 20557) +HANDLE_BAT(APINT_TYPE_PREFIX, 20558) +HANDLE_BAT(APINT_TYPE_PREFIX, 20559) +HANDLE_BAT(APINT_TYPE_PREFIX, 20560) +HANDLE_BAT(APINT_TYPE_PREFIX, 20561) +HANDLE_BAT(APINT_TYPE_PREFIX, 20562) +HANDLE_BAT(APINT_TYPE_PREFIX, 20563) +HANDLE_BAT(APINT_TYPE_PREFIX, 20564) +HANDLE_BAT(APINT_TYPE_PREFIX, 20565) +HANDLE_BAT(APINT_TYPE_PREFIX, 20566) +HANDLE_BAT(APINT_TYPE_PREFIX, 20567) +HANDLE_BAT(APINT_TYPE_PREFIX, 20568) +HANDLE_BAT(APINT_TYPE_PREFIX, 20569) +HANDLE_BAT(APINT_TYPE_PREFIX, 20570) +HANDLE_BAT(APINT_TYPE_PREFIX, 20571) +HANDLE_BAT(APINT_TYPE_PREFIX, 20572) +HANDLE_BAT(APINT_TYPE_PREFIX, 20573) +HANDLE_BAT(APINT_TYPE_PREFIX, 20574) +HANDLE_BAT(APINT_TYPE_PREFIX, 20575) +HANDLE_BAT(APINT_TYPE_PREFIX, 20576) +HANDLE_BAT(APINT_TYPE_PREFIX, 20577) +HANDLE_BAT(APINT_TYPE_PREFIX, 20578) +HANDLE_BAT(APINT_TYPE_PREFIX, 20579) +HANDLE_BAT(APINT_TYPE_PREFIX, 20580) +HANDLE_BAT(APINT_TYPE_PREFIX, 20581) +HANDLE_BAT(APINT_TYPE_PREFIX, 20582) +HANDLE_BAT(APINT_TYPE_PREFIX, 20583) +HANDLE_BAT(APINT_TYPE_PREFIX, 20584) +HANDLE_BAT(APINT_TYPE_PREFIX, 20585) +HANDLE_BAT(APINT_TYPE_PREFIX, 20586) +HANDLE_BAT(APINT_TYPE_PREFIX, 20587) +HANDLE_BAT(APINT_TYPE_PREFIX, 20588) +HANDLE_BAT(APINT_TYPE_PREFIX, 20589) +HANDLE_BAT(APINT_TYPE_PREFIX, 20590) +HANDLE_BAT(APINT_TYPE_PREFIX, 20591) +HANDLE_BAT(APINT_TYPE_PREFIX, 20592) +HANDLE_BAT(APINT_TYPE_PREFIX, 20593) +HANDLE_BAT(APINT_TYPE_PREFIX, 20594) +HANDLE_BAT(APINT_TYPE_PREFIX, 20595) +HANDLE_BAT(APINT_TYPE_PREFIX, 20596) +HANDLE_BAT(APINT_TYPE_PREFIX, 20597) +HANDLE_BAT(APINT_TYPE_PREFIX, 20598) +HANDLE_BAT(APINT_TYPE_PREFIX, 20599) +HANDLE_BAT(APINT_TYPE_PREFIX, 20600) +HANDLE_BAT(APINT_TYPE_PREFIX, 20601) +HANDLE_BAT(APINT_TYPE_PREFIX, 20602) +HANDLE_BAT(APINT_TYPE_PREFIX, 20603) +HANDLE_BAT(APINT_TYPE_PREFIX, 20604) +HANDLE_BAT(APINT_TYPE_PREFIX, 20605) +HANDLE_BAT(APINT_TYPE_PREFIX, 20606) +HANDLE_BAT(APINT_TYPE_PREFIX, 20607) +HANDLE_BAT(APINT_TYPE_PREFIX, 20608) +HANDLE_BAT(APINT_TYPE_PREFIX, 20609) +HANDLE_BAT(APINT_TYPE_PREFIX, 20610) +HANDLE_BAT(APINT_TYPE_PREFIX, 20611) +HANDLE_BAT(APINT_TYPE_PREFIX, 20612) +HANDLE_BAT(APINT_TYPE_PREFIX, 20613) +HANDLE_BAT(APINT_TYPE_PREFIX, 20614) +HANDLE_BAT(APINT_TYPE_PREFIX, 20615) +HANDLE_BAT(APINT_TYPE_PREFIX, 20616) +HANDLE_BAT(APINT_TYPE_PREFIX, 20617) +HANDLE_BAT(APINT_TYPE_PREFIX, 20618) +HANDLE_BAT(APINT_TYPE_PREFIX, 20619) +HANDLE_BAT(APINT_TYPE_PREFIX, 20620) +HANDLE_BAT(APINT_TYPE_PREFIX, 20621) +HANDLE_BAT(APINT_TYPE_PREFIX, 20622) +HANDLE_BAT(APINT_TYPE_PREFIX, 20623) +HANDLE_BAT(APINT_TYPE_PREFIX, 20624) +HANDLE_BAT(APINT_TYPE_PREFIX, 20625) +HANDLE_BAT(APINT_TYPE_PREFIX, 20626) +HANDLE_BAT(APINT_TYPE_PREFIX, 20627) +HANDLE_BAT(APINT_TYPE_PREFIX, 20628) +HANDLE_BAT(APINT_TYPE_PREFIX, 20629) +HANDLE_BAT(APINT_TYPE_PREFIX, 20630) +HANDLE_BAT(APINT_TYPE_PREFIX, 20631) +HANDLE_BAT(APINT_TYPE_PREFIX, 20632) +HANDLE_BAT(APINT_TYPE_PREFIX, 20633) +HANDLE_BAT(APINT_TYPE_PREFIX, 20634) +HANDLE_BAT(APINT_TYPE_PREFIX, 20635) +HANDLE_BAT(APINT_TYPE_PREFIX, 20636) +HANDLE_BAT(APINT_TYPE_PREFIX, 20637) +HANDLE_BAT(APINT_TYPE_PREFIX, 20638) +HANDLE_BAT(APINT_TYPE_PREFIX, 20639) +HANDLE_BAT(APINT_TYPE_PREFIX, 20640) +HANDLE_BAT(APINT_TYPE_PREFIX, 20641) +HANDLE_BAT(APINT_TYPE_PREFIX, 20642) +HANDLE_BAT(APINT_TYPE_PREFIX, 20643) +HANDLE_BAT(APINT_TYPE_PREFIX, 20644) +HANDLE_BAT(APINT_TYPE_PREFIX, 20645) +HANDLE_BAT(APINT_TYPE_PREFIX, 20646) +HANDLE_BAT(APINT_TYPE_PREFIX, 20647) +HANDLE_BAT(APINT_TYPE_PREFIX, 20648) +HANDLE_BAT(APINT_TYPE_PREFIX, 20649) +HANDLE_BAT(APINT_TYPE_PREFIX, 20650) +HANDLE_BAT(APINT_TYPE_PREFIX, 20651) +HANDLE_BAT(APINT_TYPE_PREFIX, 20652) +HANDLE_BAT(APINT_TYPE_PREFIX, 20653) +HANDLE_BAT(APINT_TYPE_PREFIX, 20654) +HANDLE_BAT(APINT_TYPE_PREFIX, 20655) +HANDLE_BAT(APINT_TYPE_PREFIX, 20656) +HANDLE_BAT(APINT_TYPE_PREFIX, 20657) +HANDLE_BAT(APINT_TYPE_PREFIX, 20658) +HANDLE_BAT(APINT_TYPE_PREFIX, 20659) +HANDLE_BAT(APINT_TYPE_PREFIX, 20660) +HANDLE_BAT(APINT_TYPE_PREFIX, 20661) +HANDLE_BAT(APINT_TYPE_PREFIX, 20662) +HANDLE_BAT(APINT_TYPE_PREFIX, 20663) +HANDLE_BAT(APINT_TYPE_PREFIX, 20664) +HANDLE_BAT(APINT_TYPE_PREFIX, 20665) +HANDLE_BAT(APINT_TYPE_PREFIX, 20666) +HANDLE_BAT(APINT_TYPE_PREFIX, 20667) +HANDLE_BAT(APINT_TYPE_PREFIX, 20668) +HANDLE_BAT(APINT_TYPE_PREFIX, 20669) +HANDLE_BAT(APINT_TYPE_PREFIX, 20670) +HANDLE_BAT(APINT_TYPE_PREFIX, 20671) +HANDLE_BAT(APINT_TYPE_PREFIX, 20672) +HANDLE_BAT(APINT_TYPE_PREFIX, 20673) +HANDLE_BAT(APINT_TYPE_PREFIX, 20674) +HANDLE_BAT(APINT_TYPE_PREFIX, 20675) +HANDLE_BAT(APINT_TYPE_PREFIX, 20676) +HANDLE_BAT(APINT_TYPE_PREFIX, 20677) +HANDLE_BAT(APINT_TYPE_PREFIX, 20678) +HANDLE_BAT(APINT_TYPE_PREFIX, 20679) +HANDLE_BAT(APINT_TYPE_PREFIX, 20680) +HANDLE_BAT(APINT_TYPE_PREFIX, 20681) +HANDLE_BAT(APINT_TYPE_PREFIX, 20682) +HANDLE_BAT(APINT_TYPE_PREFIX, 20683) +HANDLE_BAT(APINT_TYPE_PREFIX, 20684) +HANDLE_BAT(APINT_TYPE_PREFIX, 20685) +HANDLE_BAT(APINT_TYPE_PREFIX, 20686) +HANDLE_BAT(APINT_TYPE_PREFIX, 20687) +HANDLE_BAT(APINT_TYPE_PREFIX, 20688) +HANDLE_BAT(APINT_TYPE_PREFIX, 20689) +HANDLE_BAT(APINT_TYPE_PREFIX, 20690) +HANDLE_BAT(APINT_TYPE_PREFIX, 20691) +HANDLE_BAT(APINT_TYPE_PREFIX, 20692) +HANDLE_BAT(APINT_TYPE_PREFIX, 20693) +HANDLE_BAT(APINT_TYPE_PREFIX, 20694) +HANDLE_BAT(APINT_TYPE_PREFIX, 20695) +HANDLE_BAT(APINT_TYPE_PREFIX, 20696) +HANDLE_BAT(APINT_TYPE_PREFIX, 20697) +HANDLE_BAT(APINT_TYPE_PREFIX, 20698) +HANDLE_BAT(APINT_TYPE_PREFIX, 20699) +HANDLE_BAT(APINT_TYPE_PREFIX, 20700) +HANDLE_BAT(APINT_TYPE_PREFIX, 20701) +HANDLE_BAT(APINT_TYPE_PREFIX, 20702) +HANDLE_BAT(APINT_TYPE_PREFIX, 20703) +HANDLE_BAT(APINT_TYPE_PREFIX, 20704) +HANDLE_BAT(APINT_TYPE_PREFIX, 20705) +HANDLE_BAT(APINT_TYPE_PREFIX, 20706) +HANDLE_BAT(APINT_TYPE_PREFIX, 20707) +HANDLE_BAT(APINT_TYPE_PREFIX, 20708) +HANDLE_BAT(APINT_TYPE_PREFIX, 20709) +HANDLE_BAT(APINT_TYPE_PREFIX, 20710) +HANDLE_BAT(APINT_TYPE_PREFIX, 20711) +HANDLE_BAT(APINT_TYPE_PREFIX, 20712) +HANDLE_BAT(APINT_TYPE_PREFIX, 20713) +HANDLE_BAT(APINT_TYPE_PREFIX, 20714) +HANDLE_BAT(APINT_TYPE_PREFIX, 20715) +HANDLE_BAT(APINT_TYPE_PREFIX, 20716) +HANDLE_BAT(APINT_TYPE_PREFIX, 20717) +HANDLE_BAT(APINT_TYPE_PREFIX, 20718) +HANDLE_BAT(APINT_TYPE_PREFIX, 20719) +HANDLE_BAT(APINT_TYPE_PREFIX, 20720) +HANDLE_BAT(APINT_TYPE_PREFIX, 20721) +HANDLE_BAT(APINT_TYPE_PREFIX, 20722) +HANDLE_BAT(APINT_TYPE_PREFIX, 20723) +HANDLE_BAT(APINT_TYPE_PREFIX, 20724) +HANDLE_BAT(APINT_TYPE_PREFIX, 20725) +HANDLE_BAT(APINT_TYPE_PREFIX, 20726) +HANDLE_BAT(APINT_TYPE_PREFIX, 20727) +HANDLE_BAT(APINT_TYPE_PREFIX, 20728) +HANDLE_BAT(APINT_TYPE_PREFIX, 20729) +HANDLE_BAT(APINT_TYPE_PREFIX, 20730) +HANDLE_BAT(APINT_TYPE_PREFIX, 20731) +HANDLE_BAT(APINT_TYPE_PREFIX, 20732) +HANDLE_BAT(APINT_TYPE_PREFIX, 20733) +HANDLE_BAT(APINT_TYPE_PREFIX, 20734) +HANDLE_BAT(APINT_TYPE_PREFIX, 20735) +HANDLE_BAT(APINT_TYPE_PREFIX, 20736) +HANDLE_BAT(APINT_TYPE_PREFIX, 20737) +HANDLE_BAT(APINT_TYPE_PREFIX, 20738) +HANDLE_BAT(APINT_TYPE_PREFIX, 20739) +HANDLE_BAT(APINT_TYPE_PREFIX, 20740) +HANDLE_BAT(APINT_TYPE_PREFIX, 20741) +HANDLE_BAT(APINT_TYPE_PREFIX, 20742) +HANDLE_BAT(APINT_TYPE_PREFIX, 20743) +HANDLE_BAT(APINT_TYPE_PREFIX, 20744) +HANDLE_BAT(APINT_TYPE_PREFIX, 20745) +HANDLE_BAT(APINT_TYPE_PREFIX, 20746) +HANDLE_BAT(APINT_TYPE_PREFIX, 20747) +HANDLE_BAT(APINT_TYPE_PREFIX, 20748) +HANDLE_BAT(APINT_TYPE_PREFIX, 20749) +HANDLE_BAT(APINT_TYPE_PREFIX, 20750) +HANDLE_BAT(APINT_TYPE_PREFIX, 20751) +HANDLE_BAT(APINT_TYPE_PREFIX, 20752) +HANDLE_BAT(APINT_TYPE_PREFIX, 20753) +HANDLE_BAT(APINT_TYPE_PREFIX, 20754) +HANDLE_BAT(APINT_TYPE_PREFIX, 20755) +HANDLE_BAT(APINT_TYPE_PREFIX, 20756) +HANDLE_BAT(APINT_TYPE_PREFIX, 20757) +HANDLE_BAT(APINT_TYPE_PREFIX, 20758) +HANDLE_BAT(APINT_TYPE_PREFIX, 20759) +HANDLE_BAT(APINT_TYPE_PREFIX, 20760) +HANDLE_BAT(APINT_TYPE_PREFIX, 20761) +HANDLE_BAT(APINT_TYPE_PREFIX, 20762) +HANDLE_BAT(APINT_TYPE_PREFIX, 20763) +HANDLE_BAT(APINT_TYPE_PREFIX, 20764) +HANDLE_BAT(APINT_TYPE_PREFIX, 20765) +HANDLE_BAT(APINT_TYPE_PREFIX, 20766) +HANDLE_BAT(APINT_TYPE_PREFIX, 20767) +HANDLE_BAT(APINT_TYPE_PREFIX, 20768) +HANDLE_BAT(APINT_TYPE_PREFIX, 20769) +HANDLE_BAT(APINT_TYPE_PREFIX, 20770) +HANDLE_BAT(APINT_TYPE_PREFIX, 20771) +HANDLE_BAT(APINT_TYPE_PREFIX, 20772) +HANDLE_BAT(APINT_TYPE_PREFIX, 20773) +HANDLE_BAT(APINT_TYPE_PREFIX, 20774) +HANDLE_BAT(APINT_TYPE_PREFIX, 20775) +HANDLE_BAT(APINT_TYPE_PREFIX, 20776) +HANDLE_BAT(APINT_TYPE_PREFIX, 20777) +HANDLE_BAT(APINT_TYPE_PREFIX, 20778) +HANDLE_BAT(APINT_TYPE_PREFIX, 20779) +HANDLE_BAT(APINT_TYPE_PREFIX, 20780) +HANDLE_BAT(APINT_TYPE_PREFIX, 20781) +HANDLE_BAT(APINT_TYPE_PREFIX, 20782) +HANDLE_BAT(APINT_TYPE_PREFIX, 20783) +HANDLE_BAT(APINT_TYPE_PREFIX, 20784) +HANDLE_BAT(APINT_TYPE_PREFIX, 20785) +HANDLE_BAT(APINT_TYPE_PREFIX, 20786) +HANDLE_BAT(APINT_TYPE_PREFIX, 20787) +HANDLE_BAT(APINT_TYPE_PREFIX, 20788) +HANDLE_BAT(APINT_TYPE_PREFIX, 20789) +HANDLE_BAT(APINT_TYPE_PREFIX, 20790) +HANDLE_BAT(APINT_TYPE_PREFIX, 20791) +HANDLE_BAT(APINT_TYPE_PREFIX, 20792) +HANDLE_BAT(APINT_TYPE_PREFIX, 20793) +HANDLE_BAT(APINT_TYPE_PREFIX, 20794) +HANDLE_BAT(APINT_TYPE_PREFIX, 20795) +HANDLE_BAT(APINT_TYPE_PREFIX, 20796) +HANDLE_BAT(APINT_TYPE_PREFIX, 20797) +HANDLE_BAT(APINT_TYPE_PREFIX, 20798) +HANDLE_BAT(APINT_TYPE_PREFIX, 20799) +HANDLE_BAT(APINT_TYPE_PREFIX, 20800) +HANDLE_BAT(APINT_TYPE_PREFIX, 20801) +HANDLE_BAT(APINT_TYPE_PREFIX, 20802) +HANDLE_BAT(APINT_TYPE_PREFIX, 20803) +HANDLE_BAT(APINT_TYPE_PREFIX, 20804) +HANDLE_BAT(APINT_TYPE_PREFIX, 20805) +HANDLE_BAT(APINT_TYPE_PREFIX, 20806) +HANDLE_BAT(APINT_TYPE_PREFIX, 20807) +HANDLE_BAT(APINT_TYPE_PREFIX, 20808) +HANDLE_BAT(APINT_TYPE_PREFIX, 20809) +HANDLE_BAT(APINT_TYPE_PREFIX, 20810) +HANDLE_BAT(APINT_TYPE_PREFIX, 20811) +HANDLE_BAT(APINT_TYPE_PREFIX, 20812) +HANDLE_BAT(APINT_TYPE_PREFIX, 20813) +HANDLE_BAT(APINT_TYPE_PREFIX, 20814) +HANDLE_BAT(APINT_TYPE_PREFIX, 20815) +HANDLE_BAT(APINT_TYPE_PREFIX, 20816) +HANDLE_BAT(APINT_TYPE_PREFIX, 20817) +HANDLE_BAT(APINT_TYPE_PREFIX, 20818) +HANDLE_BAT(APINT_TYPE_PREFIX, 20819) +HANDLE_BAT(APINT_TYPE_PREFIX, 20820) +HANDLE_BAT(APINT_TYPE_PREFIX, 20821) +HANDLE_BAT(APINT_TYPE_PREFIX, 20822) +HANDLE_BAT(APINT_TYPE_PREFIX, 20823) +HANDLE_BAT(APINT_TYPE_PREFIX, 20824) +HANDLE_BAT(APINT_TYPE_PREFIX, 20825) +HANDLE_BAT(APINT_TYPE_PREFIX, 20826) +HANDLE_BAT(APINT_TYPE_PREFIX, 20827) +HANDLE_BAT(APINT_TYPE_PREFIX, 20828) +HANDLE_BAT(APINT_TYPE_PREFIX, 20829) +HANDLE_BAT(APINT_TYPE_PREFIX, 20830) +HANDLE_BAT(APINT_TYPE_PREFIX, 20831) +HANDLE_BAT(APINT_TYPE_PREFIX, 20832) +HANDLE_BAT(APINT_TYPE_PREFIX, 20833) +HANDLE_BAT(APINT_TYPE_PREFIX, 20834) +HANDLE_BAT(APINT_TYPE_PREFIX, 20835) +HANDLE_BAT(APINT_TYPE_PREFIX, 20836) +HANDLE_BAT(APINT_TYPE_PREFIX, 20837) +HANDLE_BAT(APINT_TYPE_PREFIX, 20838) +HANDLE_BAT(APINT_TYPE_PREFIX, 20839) +HANDLE_BAT(APINT_TYPE_PREFIX, 20840) +HANDLE_BAT(APINT_TYPE_PREFIX, 20841) +HANDLE_BAT(APINT_TYPE_PREFIX, 20842) +HANDLE_BAT(APINT_TYPE_PREFIX, 20843) +HANDLE_BAT(APINT_TYPE_PREFIX, 20844) +HANDLE_BAT(APINT_TYPE_PREFIX, 20845) +HANDLE_BAT(APINT_TYPE_PREFIX, 20846) +HANDLE_BAT(APINT_TYPE_PREFIX, 20847) +HANDLE_BAT(APINT_TYPE_PREFIX, 20848) +HANDLE_BAT(APINT_TYPE_PREFIX, 20849) +HANDLE_BAT(APINT_TYPE_PREFIX, 20850) +HANDLE_BAT(APINT_TYPE_PREFIX, 20851) +HANDLE_BAT(APINT_TYPE_PREFIX, 20852) +HANDLE_BAT(APINT_TYPE_PREFIX, 20853) +HANDLE_BAT(APINT_TYPE_PREFIX, 20854) +HANDLE_BAT(APINT_TYPE_PREFIX, 20855) +HANDLE_BAT(APINT_TYPE_PREFIX, 20856) +HANDLE_BAT(APINT_TYPE_PREFIX, 20857) +HANDLE_BAT(APINT_TYPE_PREFIX, 20858) +HANDLE_BAT(APINT_TYPE_PREFIX, 20859) +HANDLE_BAT(APINT_TYPE_PREFIX, 20860) +HANDLE_BAT(APINT_TYPE_PREFIX, 20861) +HANDLE_BAT(APINT_TYPE_PREFIX, 20862) +HANDLE_BAT(APINT_TYPE_PREFIX, 20863) +HANDLE_BAT(APINT_TYPE_PREFIX, 20864) +HANDLE_BAT(APINT_TYPE_PREFIX, 20865) +HANDLE_BAT(APINT_TYPE_PREFIX, 20866) +HANDLE_BAT(APINT_TYPE_PREFIX, 20867) +HANDLE_BAT(APINT_TYPE_PREFIX, 20868) +HANDLE_BAT(APINT_TYPE_PREFIX, 20869) +HANDLE_BAT(APINT_TYPE_PREFIX, 20870) +HANDLE_BAT(APINT_TYPE_PREFIX, 20871) +HANDLE_BAT(APINT_TYPE_PREFIX, 20872) +HANDLE_BAT(APINT_TYPE_PREFIX, 20873) +HANDLE_BAT(APINT_TYPE_PREFIX, 20874) +HANDLE_BAT(APINT_TYPE_PREFIX, 20875) +HANDLE_BAT(APINT_TYPE_PREFIX, 20876) +HANDLE_BAT(APINT_TYPE_PREFIX, 20877) +HANDLE_BAT(APINT_TYPE_PREFIX, 20878) +HANDLE_BAT(APINT_TYPE_PREFIX, 20879) +HANDLE_BAT(APINT_TYPE_PREFIX, 20880) +HANDLE_BAT(APINT_TYPE_PREFIX, 20881) +HANDLE_BAT(APINT_TYPE_PREFIX, 20882) +HANDLE_BAT(APINT_TYPE_PREFIX, 20883) +HANDLE_BAT(APINT_TYPE_PREFIX, 20884) +HANDLE_BAT(APINT_TYPE_PREFIX, 20885) +HANDLE_BAT(APINT_TYPE_PREFIX, 20886) +HANDLE_BAT(APINT_TYPE_PREFIX, 20887) +HANDLE_BAT(APINT_TYPE_PREFIX, 20888) +HANDLE_BAT(APINT_TYPE_PREFIX, 20889) +HANDLE_BAT(APINT_TYPE_PREFIX, 20890) +HANDLE_BAT(APINT_TYPE_PREFIX, 20891) +HANDLE_BAT(APINT_TYPE_PREFIX, 20892) +HANDLE_BAT(APINT_TYPE_PREFIX, 20893) +HANDLE_BAT(APINT_TYPE_PREFIX, 20894) +HANDLE_BAT(APINT_TYPE_PREFIX, 20895) +HANDLE_BAT(APINT_TYPE_PREFIX, 20896) +HANDLE_BAT(APINT_TYPE_PREFIX, 20897) +HANDLE_BAT(APINT_TYPE_PREFIX, 20898) +HANDLE_BAT(APINT_TYPE_PREFIX, 20899) +HANDLE_BAT(APINT_TYPE_PREFIX, 20900) +HANDLE_BAT(APINT_TYPE_PREFIX, 20901) +HANDLE_BAT(APINT_TYPE_PREFIX, 20902) +HANDLE_BAT(APINT_TYPE_PREFIX, 20903) +HANDLE_BAT(APINT_TYPE_PREFIX, 20904) +HANDLE_BAT(APINT_TYPE_PREFIX, 20905) +HANDLE_BAT(APINT_TYPE_PREFIX, 20906) +HANDLE_BAT(APINT_TYPE_PREFIX, 20907) +HANDLE_BAT(APINT_TYPE_PREFIX, 20908) +HANDLE_BAT(APINT_TYPE_PREFIX, 20909) +HANDLE_BAT(APINT_TYPE_PREFIX, 20910) +HANDLE_BAT(APINT_TYPE_PREFIX, 20911) +HANDLE_BAT(APINT_TYPE_PREFIX, 20912) +HANDLE_BAT(APINT_TYPE_PREFIX, 20913) +HANDLE_BAT(APINT_TYPE_PREFIX, 20914) +HANDLE_BAT(APINT_TYPE_PREFIX, 20915) +HANDLE_BAT(APINT_TYPE_PREFIX, 20916) +HANDLE_BAT(APINT_TYPE_PREFIX, 20917) +HANDLE_BAT(APINT_TYPE_PREFIX, 20918) +HANDLE_BAT(APINT_TYPE_PREFIX, 20919) +HANDLE_BAT(APINT_TYPE_PREFIX, 20920) +HANDLE_BAT(APINT_TYPE_PREFIX, 20921) +HANDLE_BAT(APINT_TYPE_PREFIX, 20922) +HANDLE_BAT(APINT_TYPE_PREFIX, 20923) +HANDLE_BAT(APINT_TYPE_PREFIX, 20924) +HANDLE_BAT(APINT_TYPE_PREFIX, 20925) +HANDLE_BAT(APINT_TYPE_PREFIX, 20926) +HANDLE_BAT(APINT_TYPE_PREFIX, 20927) +HANDLE_BAT(APINT_TYPE_PREFIX, 20928) +HANDLE_BAT(APINT_TYPE_PREFIX, 20929) +HANDLE_BAT(APINT_TYPE_PREFIX, 20930) +HANDLE_BAT(APINT_TYPE_PREFIX, 20931) +HANDLE_BAT(APINT_TYPE_PREFIX, 20932) +HANDLE_BAT(APINT_TYPE_PREFIX, 20933) +HANDLE_BAT(APINT_TYPE_PREFIX, 20934) +HANDLE_BAT(APINT_TYPE_PREFIX, 20935) +HANDLE_BAT(APINT_TYPE_PREFIX, 20936) +HANDLE_BAT(APINT_TYPE_PREFIX, 20937) +HANDLE_BAT(APINT_TYPE_PREFIX, 20938) +HANDLE_BAT(APINT_TYPE_PREFIX, 20939) +HANDLE_BAT(APINT_TYPE_PREFIX, 20940) +HANDLE_BAT(APINT_TYPE_PREFIX, 20941) +HANDLE_BAT(APINT_TYPE_PREFIX, 20942) +HANDLE_BAT(APINT_TYPE_PREFIX, 20943) +HANDLE_BAT(APINT_TYPE_PREFIX, 20944) +HANDLE_BAT(APINT_TYPE_PREFIX, 20945) +HANDLE_BAT(APINT_TYPE_PREFIX, 20946) +HANDLE_BAT(APINT_TYPE_PREFIX, 20947) +HANDLE_BAT(APINT_TYPE_PREFIX, 20948) +HANDLE_BAT(APINT_TYPE_PREFIX, 20949) +HANDLE_BAT(APINT_TYPE_PREFIX, 20950) +HANDLE_BAT(APINT_TYPE_PREFIX, 20951) +HANDLE_BAT(APINT_TYPE_PREFIX, 20952) +HANDLE_BAT(APINT_TYPE_PREFIX, 20953) +HANDLE_BAT(APINT_TYPE_PREFIX, 20954) +HANDLE_BAT(APINT_TYPE_PREFIX, 20955) +HANDLE_BAT(APINT_TYPE_PREFIX, 20956) +HANDLE_BAT(APINT_TYPE_PREFIX, 20957) +HANDLE_BAT(APINT_TYPE_PREFIX, 20958) +HANDLE_BAT(APINT_TYPE_PREFIX, 20959) +HANDLE_BAT(APINT_TYPE_PREFIX, 20960) +HANDLE_BAT(APINT_TYPE_PREFIX, 20961) +HANDLE_BAT(APINT_TYPE_PREFIX, 20962) +HANDLE_BAT(APINT_TYPE_PREFIX, 20963) +HANDLE_BAT(APINT_TYPE_PREFIX, 20964) +HANDLE_BAT(APINT_TYPE_PREFIX, 20965) +HANDLE_BAT(APINT_TYPE_PREFIX, 20966) +HANDLE_BAT(APINT_TYPE_PREFIX, 20967) +HANDLE_BAT(APINT_TYPE_PREFIX, 20968) +HANDLE_BAT(APINT_TYPE_PREFIX, 20969) +HANDLE_BAT(APINT_TYPE_PREFIX, 20970) +HANDLE_BAT(APINT_TYPE_PREFIX, 20971) +HANDLE_BAT(APINT_TYPE_PREFIX, 20972) +HANDLE_BAT(APINT_TYPE_PREFIX, 20973) +HANDLE_BAT(APINT_TYPE_PREFIX, 20974) +HANDLE_BAT(APINT_TYPE_PREFIX, 20975) +HANDLE_BAT(APINT_TYPE_PREFIX, 20976) +HANDLE_BAT(APINT_TYPE_PREFIX, 20977) +HANDLE_BAT(APINT_TYPE_PREFIX, 20978) +HANDLE_BAT(APINT_TYPE_PREFIX, 20979) +HANDLE_BAT(APINT_TYPE_PREFIX, 20980) +HANDLE_BAT(APINT_TYPE_PREFIX, 20981) +HANDLE_BAT(APINT_TYPE_PREFIX, 20982) +HANDLE_BAT(APINT_TYPE_PREFIX, 20983) +HANDLE_BAT(APINT_TYPE_PREFIX, 20984) +HANDLE_BAT(APINT_TYPE_PREFIX, 20985) +HANDLE_BAT(APINT_TYPE_PREFIX, 20986) +HANDLE_BAT(APINT_TYPE_PREFIX, 20987) +HANDLE_BAT(APINT_TYPE_PREFIX, 20988) +HANDLE_BAT(APINT_TYPE_PREFIX, 20989) +HANDLE_BAT(APINT_TYPE_PREFIX, 20990) +HANDLE_BAT(APINT_TYPE_PREFIX, 20991) +HANDLE_BAT(APINT_TYPE_PREFIX, 20992) +HANDLE_BAT(APINT_TYPE_PREFIX, 20993) +HANDLE_BAT(APINT_TYPE_PREFIX, 20994) +HANDLE_BAT(APINT_TYPE_PREFIX, 20995) +HANDLE_BAT(APINT_TYPE_PREFIX, 20996) +HANDLE_BAT(APINT_TYPE_PREFIX, 20997) +HANDLE_BAT(APINT_TYPE_PREFIX, 20998) +HANDLE_BAT(APINT_TYPE_PREFIX, 20999) +HANDLE_BAT(APINT_TYPE_PREFIX, 21000) +HANDLE_BAT(APINT_TYPE_PREFIX, 21001) +HANDLE_BAT(APINT_TYPE_PREFIX, 21002) +HANDLE_BAT(APINT_TYPE_PREFIX, 21003) +HANDLE_BAT(APINT_TYPE_PREFIX, 21004) +HANDLE_BAT(APINT_TYPE_PREFIX, 21005) +HANDLE_BAT(APINT_TYPE_PREFIX, 21006) +HANDLE_BAT(APINT_TYPE_PREFIX, 21007) +HANDLE_BAT(APINT_TYPE_PREFIX, 21008) +HANDLE_BAT(APINT_TYPE_PREFIX, 21009) +HANDLE_BAT(APINT_TYPE_PREFIX, 21010) +HANDLE_BAT(APINT_TYPE_PREFIX, 21011) +HANDLE_BAT(APINT_TYPE_PREFIX, 21012) +HANDLE_BAT(APINT_TYPE_PREFIX, 21013) +HANDLE_BAT(APINT_TYPE_PREFIX, 21014) +HANDLE_BAT(APINT_TYPE_PREFIX, 21015) +HANDLE_BAT(APINT_TYPE_PREFIX, 21016) +HANDLE_BAT(APINT_TYPE_PREFIX, 21017) +HANDLE_BAT(APINT_TYPE_PREFIX, 21018) +HANDLE_BAT(APINT_TYPE_PREFIX, 21019) +HANDLE_BAT(APINT_TYPE_PREFIX, 21020) +HANDLE_BAT(APINT_TYPE_PREFIX, 21021) +HANDLE_BAT(APINT_TYPE_PREFIX, 21022) +HANDLE_BAT(APINT_TYPE_PREFIX, 21023) +HANDLE_BAT(APINT_TYPE_PREFIX, 21024) +HANDLE_BAT(APINT_TYPE_PREFIX, 21025) +HANDLE_BAT(APINT_TYPE_PREFIX, 21026) +HANDLE_BAT(APINT_TYPE_PREFIX, 21027) +HANDLE_BAT(APINT_TYPE_PREFIX, 21028) +HANDLE_BAT(APINT_TYPE_PREFIX, 21029) +HANDLE_BAT(APINT_TYPE_PREFIX, 21030) +HANDLE_BAT(APINT_TYPE_PREFIX, 21031) +HANDLE_BAT(APINT_TYPE_PREFIX, 21032) +HANDLE_BAT(APINT_TYPE_PREFIX, 21033) +HANDLE_BAT(APINT_TYPE_PREFIX, 21034) +HANDLE_BAT(APINT_TYPE_PREFIX, 21035) +HANDLE_BAT(APINT_TYPE_PREFIX, 21036) +HANDLE_BAT(APINT_TYPE_PREFIX, 21037) +HANDLE_BAT(APINT_TYPE_PREFIX, 21038) +HANDLE_BAT(APINT_TYPE_PREFIX, 21039) +HANDLE_BAT(APINT_TYPE_PREFIX, 21040) +HANDLE_BAT(APINT_TYPE_PREFIX, 21041) +HANDLE_BAT(APINT_TYPE_PREFIX, 21042) +HANDLE_BAT(APINT_TYPE_PREFIX, 21043) +HANDLE_BAT(APINT_TYPE_PREFIX, 21044) +HANDLE_BAT(APINT_TYPE_PREFIX, 21045) +HANDLE_BAT(APINT_TYPE_PREFIX, 21046) +HANDLE_BAT(APINT_TYPE_PREFIX, 21047) +HANDLE_BAT(APINT_TYPE_PREFIX, 21048) +HANDLE_BAT(APINT_TYPE_PREFIX, 21049) +HANDLE_BAT(APINT_TYPE_PREFIX, 21050) +HANDLE_BAT(APINT_TYPE_PREFIX, 21051) +HANDLE_BAT(APINT_TYPE_PREFIX, 21052) +HANDLE_BAT(APINT_TYPE_PREFIX, 21053) +HANDLE_BAT(APINT_TYPE_PREFIX, 21054) +HANDLE_BAT(APINT_TYPE_PREFIX, 21055) +HANDLE_BAT(APINT_TYPE_PREFIX, 21056) +HANDLE_BAT(APINT_TYPE_PREFIX, 21057) +HANDLE_BAT(APINT_TYPE_PREFIX, 21058) +HANDLE_BAT(APINT_TYPE_PREFIX, 21059) +HANDLE_BAT(APINT_TYPE_PREFIX, 21060) +HANDLE_BAT(APINT_TYPE_PREFIX, 21061) +HANDLE_BAT(APINT_TYPE_PREFIX, 21062) +HANDLE_BAT(APINT_TYPE_PREFIX, 21063) +HANDLE_BAT(APINT_TYPE_PREFIX, 21064) +HANDLE_BAT(APINT_TYPE_PREFIX, 21065) +HANDLE_BAT(APINT_TYPE_PREFIX, 21066) +HANDLE_BAT(APINT_TYPE_PREFIX, 21067) +HANDLE_BAT(APINT_TYPE_PREFIX, 21068) +HANDLE_BAT(APINT_TYPE_PREFIX, 21069) +HANDLE_BAT(APINT_TYPE_PREFIX, 21070) +HANDLE_BAT(APINT_TYPE_PREFIX, 21071) +HANDLE_BAT(APINT_TYPE_PREFIX, 21072) +HANDLE_BAT(APINT_TYPE_PREFIX, 21073) +HANDLE_BAT(APINT_TYPE_PREFIX, 21074) +HANDLE_BAT(APINT_TYPE_PREFIX, 21075) +HANDLE_BAT(APINT_TYPE_PREFIX, 21076) +HANDLE_BAT(APINT_TYPE_PREFIX, 21077) +HANDLE_BAT(APINT_TYPE_PREFIX, 21078) +HANDLE_BAT(APINT_TYPE_PREFIX, 21079) +HANDLE_BAT(APINT_TYPE_PREFIX, 21080) +HANDLE_BAT(APINT_TYPE_PREFIX, 21081) +HANDLE_BAT(APINT_TYPE_PREFIX, 21082) +HANDLE_BAT(APINT_TYPE_PREFIX, 21083) +HANDLE_BAT(APINT_TYPE_PREFIX, 21084) +HANDLE_BAT(APINT_TYPE_PREFIX, 21085) +HANDLE_BAT(APINT_TYPE_PREFIX, 21086) +HANDLE_BAT(APINT_TYPE_PREFIX, 21087) +HANDLE_BAT(APINT_TYPE_PREFIX, 21088) +HANDLE_BAT(APINT_TYPE_PREFIX, 21089) +HANDLE_BAT(APINT_TYPE_PREFIX, 21090) +HANDLE_BAT(APINT_TYPE_PREFIX, 21091) +HANDLE_BAT(APINT_TYPE_PREFIX, 21092) +HANDLE_BAT(APINT_TYPE_PREFIX, 21093) +HANDLE_BAT(APINT_TYPE_PREFIX, 21094) +HANDLE_BAT(APINT_TYPE_PREFIX, 21095) +HANDLE_BAT(APINT_TYPE_PREFIX, 21096) +HANDLE_BAT(APINT_TYPE_PREFIX, 21097) +HANDLE_BAT(APINT_TYPE_PREFIX, 21098) +HANDLE_BAT(APINT_TYPE_PREFIX, 21099) +HANDLE_BAT(APINT_TYPE_PREFIX, 21100) +HANDLE_BAT(APINT_TYPE_PREFIX, 21101) +HANDLE_BAT(APINT_TYPE_PREFIX, 21102) +HANDLE_BAT(APINT_TYPE_PREFIX, 21103) +HANDLE_BAT(APINT_TYPE_PREFIX, 21104) +HANDLE_BAT(APINT_TYPE_PREFIX, 21105) +HANDLE_BAT(APINT_TYPE_PREFIX, 21106) +HANDLE_BAT(APINT_TYPE_PREFIX, 21107) +HANDLE_BAT(APINT_TYPE_PREFIX, 21108) +HANDLE_BAT(APINT_TYPE_PREFIX, 21109) +HANDLE_BAT(APINT_TYPE_PREFIX, 21110) +HANDLE_BAT(APINT_TYPE_PREFIX, 21111) +HANDLE_BAT(APINT_TYPE_PREFIX, 21112) +HANDLE_BAT(APINT_TYPE_PREFIX, 21113) +HANDLE_BAT(APINT_TYPE_PREFIX, 21114) +HANDLE_BAT(APINT_TYPE_PREFIX, 21115) +HANDLE_BAT(APINT_TYPE_PREFIX, 21116) +HANDLE_BAT(APINT_TYPE_PREFIX, 21117) +HANDLE_BAT(APINT_TYPE_PREFIX, 21118) +HANDLE_BAT(APINT_TYPE_PREFIX, 21119) +HANDLE_BAT(APINT_TYPE_PREFIX, 21120) +HANDLE_BAT(APINT_TYPE_PREFIX, 21121) +HANDLE_BAT(APINT_TYPE_PREFIX, 21122) +HANDLE_BAT(APINT_TYPE_PREFIX, 21123) +HANDLE_BAT(APINT_TYPE_PREFIX, 21124) +HANDLE_BAT(APINT_TYPE_PREFIX, 21125) +HANDLE_BAT(APINT_TYPE_PREFIX, 21126) +HANDLE_BAT(APINT_TYPE_PREFIX, 21127) +HANDLE_BAT(APINT_TYPE_PREFIX, 21128) +HANDLE_BAT(APINT_TYPE_PREFIX, 21129) +HANDLE_BAT(APINT_TYPE_PREFIX, 21130) +HANDLE_BAT(APINT_TYPE_PREFIX, 21131) +HANDLE_BAT(APINT_TYPE_PREFIX, 21132) +HANDLE_BAT(APINT_TYPE_PREFIX, 21133) +HANDLE_BAT(APINT_TYPE_PREFIX, 21134) +HANDLE_BAT(APINT_TYPE_PREFIX, 21135) +HANDLE_BAT(APINT_TYPE_PREFIX, 21136) +HANDLE_BAT(APINT_TYPE_PREFIX, 21137) +HANDLE_BAT(APINT_TYPE_PREFIX, 21138) +HANDLE_BAT(APINT_TYPE_PREFIX, 21139) +HANDLE_BAT(APINT_TYPE_PREFIX, 21140) +HANDLE_BAT(APINT_TYPE_PREFIX, 21141) +HANDLE_BAT(APINT_TYPE_PREFIX, 21142) +HANDLE_BAT(APINT_TYPE_PREFIX, 21143) +HANDLE_BAT(APINT_TYPE_PREFIX, 21144) +HANDLE_BAT(APINT_TYPE_PREFIX, 21145) +HANDLE_BAT(APINT_TYPE_PREFIX, 21146) +HANDLE_BAT(APINT_TYPE_PREFIX, 21147) +HANDLE_BAT(APINT_TYPE_PREFIX, 21148) +HANDLE_BAT(APINT_TYPE_PREFIX, 21149) +HANDLE_BAT(APINT_TYPE_PREFIX, 21150) +HANDLE_BAT(APINT_TYPE_PREFIX, 21151) +HANDLE_BAT(APINT_TYPE_PREFIX, 21152) +HANDLE_BAT(APINT_TYPE_PREFIX, 21153) +HANDLE_BAT(APINT_TYPE_PREFIX, 21154) +HANDLE_BAT(APINT_TYPE_PREFIX, 21155) +HANDLE_BAT(APINT_TYPE_PREFIX, 21156) +HANDLE_BAT(APINT_TYPE_PREFIX, 21157) +HANDLE_BAT(APINT_TYPE_PREFIX, 21158) +HANDLE_BAT(APINT_TYPE_PREFIX, 21159) +HANDLE_BAT(APINT_TYPE_PREFIX, 21160) +HANDLE_BAT(APINT_TYPE_PREFIX, 21161) +HANDLE_BAT(APINT_TYPE_PREFIX, 21162) +HANDLE_BAT(APINT_TYPE_PREFIX, 21163) +HANDLE_BAT(APINT_TYPE_PREFIX, 21164) +HANDLE_BAT(APINT_TYPE_PREFIX, 21165) +HANDLE_BAT(APINT_TYPE_PREFIX, 21166) +HANDLE_BAT(APINT_TYPE_PREFIX, 21167) +HANDLE_BAT(APINT_TYPE_PREFIX, 21168) +HANDLE_BAT(APINT_TYPE_PREFIX, 21169) +HANDLE_BAT(APINT_TYPE_PREFIX, 21170) +HANDLE_BAT(APINT_TYPE_PREFIX, 21171) +HANDLE_BAT(APINT_TYPE_PREFIX, 21172) +HANDLE_BAT(APINT_TYPE_PREFIX, 21173) +HANDLE_BAT(APINT_TYPE_PREFIX, 21174) +HANDLE_BAT(APINT_TYPE_PREFIX, 21175) +HANDLE_BAT(APINT_TYPE_PREFIX, 21176) +HANDLE_BAT(APINT_TYPE_PREFIX, 21177) +HANDLE_BAT(APINT_TYPE_PREFIX, 21178) +HANDLE_BAT(APINT_TYPE_PREFIX, 21179) +HANDLE_BAT(APINT_TYPE_PREFIX, 21180) +HANDLE_BAT(APINT_TYPE_PREFIX, 21181) +HANDLE_BAT(APINT_TYPE_PREFIX, 21182) +HANDLE_BAT(APINT_TYPE_PREFIX, 21183) +HANDLE_BAT(APINT_TYPE_PREFIX, 21184) +HANDLE_BAT(APINT_TYPE_PREFIX, 21185) +HANDLE_BAT(APINT_TYPE_PREFIX, 21186) +HANDLE_BAT(APINT_TYPE_PREFIX, 21187) +HANDLE_BAT(APINT_TYPE_PREFIX, 21188) +HANDLE_BAT(APINT_TYPE_PREFIX, 21189) +HANDLE_BAT(APINT_TYPE_PREFIX, 21190) +HANDLE_BAT(APINT_TYPE_PREFIX, 21191) +HANDLE_BAT(APINT_TYPE_PREFIX, 21192) +HANDLE_BAT(APINT_TYPE_PREFIX, 21193) +HANDLE_BAT(APINT_TYPE_PREFIX, 21194) +HANDLE_BAT(APINT_TYPE_PREFIX, 21195) +HANDLE_BAT(APINT_TYPE_PREFIX, 21196) +HANDLE_BAT(APINT_TYPE_PREFIX, 21197) +HANDLE_BAT(APINT_TYPE_PREFIX, 21198) +HANDLE_BAT(APINT_TYPE_PREFIX, 21199) +HANDLE_BAT(APINT_TYPE_PREFIX, 21200) +HANDLE_BAT(APINT_TYPE_PREFIX, 21201) +HANDLE_BAT(APINT_TYPE_PREFIX, 21202) +HANDLE_BAT(APINT_TYPE_PREFIX, 21203) +HANDLE_BAT(APINT_TYPE_PREFIX, 21204) +HANDLE_BAT(APINT_TYPE_PREFIX, 21205) +HANDLE_BAT(APINT_TYPE_PREFIX, 21206) +HANDLE_BAT(APINT_TYPE_PREFIX, 21207) +HANDLE_BAT(APINT_TYPE_PREFIX, 21208) +HANDLE_BAT(APINT_TYPE_PREFIX, 21209) +HANDLE_BAT(APINT_TYPE_PREFIX, 21210) +HANDLE_BAT(APINT_TYPE_PREFIX, 21211) +HANDLE_BAT(APINT_TYPE_PREFIX, 21212) +HANDLE_BAT(APINT_TYPE_PREFIX, 21213) +HANDLE_BAT(APINT_TYPE_PREFIX, 21214) +HANDLE_BAT(APINT_TYPE_PREFIX, 21215) +HANDLE_BAT(APINT_TYPE_PREFIX, 21216) +HANDLE_BAT(APINT_TYPE_PREFIX, 21217) +HANDLE_BAT(APINT_TYPE_PREFIX, 21218) +HANDLE_BAT(APINT_TYPE_PREFIX, 21219) +HANDLE_BAT(APINT_TYPE_PREFIX, 21220) +HANDLE_BAT(APINT_TYPE_PREFIX, 21221) +HANDLE_BAT(APINT_TYPE_PREFIX, 21222) +HANDLE_BAT(APINT_TYPE_PREFIX, 21223) +HANDLE_BAT(APINT_TYPE_PREFIX, 21224) +HANDLE_BAT(APINT_TYPE_PREFIX, 21225) +HANDLE_BAT(APINT_TYPE_PREFIX, 21226) +HANDLE_BAT(APINT_TYPE_PREFIX, 21227) +HANDLE_BAT(APINT_TYPE_PREFIX, 21228) +HANDLE_BAT(APINT_TYPE_PREFIX, 21229) +HANDLE_BAT(APINT_TYPE_PREFIX, 21230) +HANDLE_BAT(APINT_TYPE_PREFIX, 21231) +HANDLE_BAT(APINT_TYPE_PREFIX, 21232) +HANDLE_BAT(APINT_TYPE_PREFIX, 21233) +HANDLE_BAT(APINT_TYPE_PREFIX, 21234) +HANDLE_BAT(APINT_TYPE_PREFIX, 21235) +HANDLE_BAT(APINT_TYPE_PREFIX, 21236) +HANDLE_BAT(APINT_TYPE_PREFIX, 21237) +HANDLE_BAT(APINT_TYPE_PREFIX, 21238) +HANDLE_BAT(APINT_TYPE_PREFIX, 21239) +HANDLE_BAT(APINT_TYPE_PREFIX, 21240) +HANDLE_BAT(APINT_TYPE_PREFIX, 21241) +HANDLE_BAT(APINT_TYPE_PREFIX, 21242) +HANDLE_BAT(APINT_TYPE_PREFIX, 21243) +HANDLE_BAT(APINT_TYPE_PREFIX, 21244) +HANDLE_BAT(APINT_TYPE_PREFIX, 21245) +HANDLE_BAT(APINT_TYPE_PREFIX, 21246) +HANDLE_BAT(APINT_TYPE_PREFIX, 21247) +HANDLE_BAT(APINT_TYPE_PREFIX, 21248) +HANDLE_BAT(APINT_TYPE_PREFIX, 21249) +HANDLE_BAT(APINT_TYPE_PREFIX, 21250) +HANDLE_BAT(APINT_TYPE_PREFIX, 21251) +HANDLE_BAT(APINT_TYPE_PREFIX, 21252) +HANDLE_BAT(APINT_TYPE_PREFIX, 21253) +HANDLE_BAT(APINT_TYPE_PREFIX, 21254) +HANDLE_BAT(APINT_TYPE_PREFIX, 21255) +HANDLE_BAT(APINT_TYPE_PREFIX, 21256) +HANDLE_BAT(APINT_TYPE_PREFIX, 21257) +HANDLE_BAT(APINT_TYPE_PREFIX, 21258) +HANDLE_BAT(APINT_TYPE_PREFIX, 21259) +HANDLE_BAT(APINT_TYPE_PREFIX, 21260) +HANDLE_BAT(APINT_TYPE_PREFIX, 21261) +HANDLE_BAT(APINT_TYPE_PREFIX, 21262) +HANDLE_BAT(APINT_TYPE_PREFIX, 21263) +HANDLE_BAT(APINT_TYPE_PREFIX, 21264) +HANDLE_BAT(APINT_TYPE_PREFIX, 21265) +HANDLE_BAT(APINT_TYPE_PREFIX, 21266) +HANDLE_BAT(APINT_TYPE_PREFIX, 21267) +HANDLE_BAT(APINT_TYPE_PREFIX, 21268) +HANDLE_BAT(APINT_TYPE_PREFIX, 21269) +HANDLE_BAT(APINT_TYPE_PREFIX, 21270) +HANDLE_BAT(APINT_TYPE_PREFIX, 21271) +HANDLE_BAT(APINT_TYPE_PREFIX, 21272) +HANDLE_BAT(APINT_TYPE_PREFIX, 21273) +HANDLE_BAT(APINT_TYPE_PREFIX, 21274) +HANDLE_BAT(APINT_TYPE_PREFIX, 21275) +HANDLE_BAT(APINT_TYPE_PREFIX, 21276) +HANDLE_BAT(APINT_TYPE_PREFIX, 21277) +HANDLE_BAT(APINT_TYPE_PREFIX, 21278) +HANDLE_BAT(APINT_TYPE_PREFIX, 21279) +HANDLE_BAT(APINT_TYPE_PREFIX, 21280) +HANDLE_BAT(APINT_TYPE_PREFIX, 21281) +HANDLE_BAT(APINT_TYPE_PREFIX, 21282) +HANDLE_BAT(APINT_TYPE_PREFIX, 21283) +HANDLE_BAT(APINT_TYPE_PREFIX, 21284) +HANDLE_BAT(APINT_TYPE_PREFIX, 21285) +HANDLE_BAT(APINT_TYPE_PREFIX, 21286) +HANDLE_BAT(APINT_TYPE_PREFIX, 21287) +HANDLE_BAT(APINT_TYPE_PREFIX, 21288) +HANDLE_BAT(APINT_TYPE_PREFIX, 21289) +HANDLE_BAT(APINT_TYPE_PREFIX, 21290) +HANDLE_BAT(APINT_TYPE_PREFIX, 21291) +HANDLE_BAT(APINT_TYPE_PREFIX, 21292) +HANDLE_BAT(APINT_TYPE_PREFIX, 21293) +HANDLE_BAT(APINT_TYPE_PREFIX, 21294) +HANDLE_BAT(APINT_TYPE_PREFIX, 21295) +HANDLE_BAT(APINT_TYPE_PREFIX, 21296) +HANDLE_BAT(APINT_TYPE_PREFIX, 21297) +HANDLE_BAT(APINT_TYPE_PREFIX, 21298) +HANDLE_BAT(APINT_TYPE_PREFIX, 21299) +HANDLE_BAT(APINT_TYPE_PREFIX, 21300) +HANDLE_BAT(APINT_TYPE_PREFIX, 21301) +HANDLE_BAT(APINT_TYPE_PREFIX, 21302) +HANDLE_BAT(APINT_TYPE_PREFIX, 21303) +HANDLE_BAT(APINT_TYPE_PREFIX, 21304) +HANDLE_BAT(APINT_TYPE_PREFIX, 21305) +HANDLE_BAT(APINT_TYPE_PREFIX, 21306) +HANDLE_BAT(APINT_TYPE_PREFIX, 21307) +HANDLE_BAT(APINT_TYPE_PREFIX, 21308) +HANDLE_BAT(APINT_TYPE_PREFIX, 21309) +HANDLE_BAT(APINT_TYPE_PREFIX, 21310) +HANDLE_BAT(APINT_TYPE_PREFIX, 21311) +HANDLE_BAT(APINT_TYPE_PREFIX, 21312) +HANDLE_BAT(APINT_TYPE_PREFIX, 21313) +HANDLE_BAT(APINT_TYPE_PREFIX, 21314) +HANDLE_BAT(APINT_TYPE_PREFIX, 21315) +HANDLE_BAT(APINT_TYPE_PREFIX, 21316) +HANDLE_BAT(APINT_TYPE_PREFIX, 21317) +HANDLE_BAT(APINT_TYPE_PREFIX, 21318) +HANDLE_BAT(APINT_TYPE_PREFIX, 21319) +HANDLE_BAT(APINT_TYPE_PREFIX, 21320) +HANDLE_BAT(APINT_TYPE_PREFIX, 21321) +HANDLE_BAT(APINT_TYPE_PREFIX, 21322) +HANDLE_BAT(APINT_TYPE_PREFIX, 21323) +HANDLE_BAT(APINT_TYPE_PREFIX, 21324) +HANDLE_BAT(APINT_TYPE_PREFIX, 21325) +HANDLE_BAT(APINT_TYPE_PREFIX, 21326) +HANDLE_BAT(APINT_TYPE_PREFIX, 21327) +HANDLE_BAT(APINT_TYPE_PREFIX, 21328) +HANDLE_BAT(APINT_TYPE_PREFIX, 21329) +HANDLE_BAT(APINT_TYPE_PREFIX, 21330) +HANDLE_BAT(APINT_TYPE_PREFIX, 21331) +HANDLE_BAT(APINT_TYPE_PREFIX, 21332) +HANDLE_BAT(APINT_TYPE_PREFIX, 21333) +HANDLE_BAT(APINT_TYPE_PREFIX, 21334) +HANDLE_BAT(APINT_TYPE_PREFIX, 21335) +HANDLE_BAT(APINT_TYPE_PREFIX, 21336) +HANDLE_BAT(APINT_TYPE_PREFIX, 21337) +HANDLE_BAT(APINT_TYPE_PREFIX, 21338) +HANDLE_BAT(APINT_TYPE_PREFIX, 21339) +HANDLE_BAT(APINT_TYPE_PREFIX, 21340) +HANDLE_BAT(APINT_TYPE_PREFIX, 21341) +HANDLE_BAT(APINT_TYPE_PREFIX, 21342) +HANDLE_BAT(APINT_TYPE_PREFIX, 21343) +HANDLE_BAT(APINT_TYPE_PREFIX, 21344) +HANDLE_BAT(APINT_TYPE_PREFIX, 21345) +HANDLE_BAT(APINT_TYPE_PREFIX, 21346) +HANDLE_BAT(APINT_TYPE_PREFIX, 21347) +HANDLE_BAT(APINT_TYPE_PREFIX, 21348) +HANDLE_BAT(APINT_TYPE_PREFIX, 21349) +HANDLE_BAT(APINT_TYPE_PREFIX, 21350) +HANDLE_BAT(APINT_TYPE_PREFIX, 21351) +HANDLE_BAT(APINT_TYPE_PREFIX, 21352) +HANDLE_BAT(APINT_TYPE_PREFIX, 21353) +HANDLE_BAT(APINT_TYPE_PREFIX, 21354) +HANDLE_BAT(APINT_TYPE_PREFIX, 21355) +HANDLE_BAT(APINT_TYPE_PREFIX, 21356) +HANDLE_BAT(APINT_TYPE_PREFIX, 21357) +HANDLE_BAT(APINT_TYPE_PREFIX, 21358) +HANDLE_BAT(APINT_TYPE_PREFIX, 21359) +HANDLE_BAT(APINT_TYPE_PREFIX, 21360) +HANDLE_BAT(APINT_TYPE_PREFIX, 21361) +HANDLE_BAT(APINT_TYPE_PREFIX, 21362) +HANDLE_BAT(APINT_TYPE_PREFIX, 21363) +HANDLE_BAT(APINT_TYPE_PREFIX, 21364) +HANDLE_BAT(APINT_TYPE_PREFIX, 21365) +HANDLE_BAT(APINT_TYPE_PREFIX, 21366) +HANDLE_BAT(APINT_TYPE_PREFIX, 21367) +HANDLE_BAT(APINT_TYPE_PREFIX, 21368) +HANDLE_BAT(APINT_TYPE_PREFIX, 21369) +HANDLE_BAT(APINT_TYPE_PREFIX, 21370) +HANDLE_BAT(APINT_TYPE_PREFIX, 21371) +HANDLE_BAT(APINT_TYPE_PREFIX, 21372) +HANDLE_BAT(APINT_TYPE_PREFIX, 21373) +HANDLE_BAT(APINT_TYPE_PREFIX, 21374) +HANDLE_BAT(APINT_TYPE_PREFIX, 21375) +HANDLE_BAT(APINT_TYPE_PREFIX, 21376) +HANDLE_BAT(APINT_TYPE_PREFIX, 21377) +HANDLE_BAT(APINT_TYPE_PREFIX, 21378) +HANDLE_BAT(APINT_TYPE_PREFIX, 21379) +HANDLE_BAT(APINT_TYPE_PREFIX, 21380) +HANDLE_BAT(APINT_TYPE_PREFIX, 21381) +HANDLE_BAT(APINT_TYPE_PREFIX, 21382) +HANDLE_BAT(APINT_TYPE_PREFIX, 21383) +HANDLE_BAT(APINT_TYPE_PREFIX, 21384) +HANDLE_BAT(APINT_TYPE_PREFIX, 21385) +HANDLE_BAT(APINT_TYPE_PREFIX, 21386) +HANDLE_BAT(APINT_TYPE_PREFIX, 21387) +HANDLE_BAT(APINT_TYPE_PREFIX, 21388) +HANDLE_BAT(APINT_TYPE_PREFIX, 21389) +HANDLE_BAT(APINT_TYPE_PREFIX, 21390) +HANDLE_BAT(APINT_TYPE_PREFIX, 21391) +HANDLE_BAT(APINT_TYPE_PREFIX, 21392) +HANDLE_BAT(APINT_TYPE_PREFIX, 21393) +HANDLE_BAT(APINT_TYPE_PREFIX, 21394) +HANDLE_BAT(APINT_TYPE_PREFIX, 21395) +HANDLE_BAT(APINT_TYPE_PREFIX, 21396) +HANDLE_BAT(APINT_TYPE_PREFIX, 21397) +HANDLE_BAT(APINT_TYPE_PREFIX, 21398) +HANDLE_BAT(APINT_TYPE_PREFIX, 21399) +HANDLE_BAT(APINT_TYPE_PREFIX, 21400) +HANDLE_BAT(APINT_TYPE_PREFIX, 21401) +HANDLE_BAT(APINT_TYPE_PREFIX, 21402) +HANDLE_BAT(APINT_TYPE_PREFIX, 21403) +HANDLE_BAT(APINT_TYPE_PREFIX, 21404) +HANDLE_BAT(APINT_TYPE_PREFIX, 21405) +HANDLE_BAT(APINT_TYPE_PREFIX, 21406) +HANDLE_BAT(APINT_TYPE_PREFIX, 21407) +HANDLE_BAT(APINT_TYPE_PREFIX, 21408) +HANDLE_BAT(APINT_TYPE_PREFIX, 21409) +HANDLE_BAT(APINT_TYPE_PREFIX, 21410) +HANDLE_BAT(APINT_TYPE_PREFIX, 21411) +HANDLE_BAT(APINT_TYPE_PREFIX, 21412) +HANDLE_BAT(APINT_TYPE_PREFIX, 21413) +HANDLE_BAT(APINT_TYPE_PREFIX, 21414) +HANDLE_BAT(APINT_TYPE_PREFIX, 21415) +HANDLE_BAT(APINT_TYPE_PREFIX, 21416) +HANDLE_BAT(APINT_TYPE_PREFIX, 21417) +HANDLE_BAT(APINT_TYPE_PREFIX, 21418) +HANDLE_BAT(APINT_TYPE_PREFIX, 21419) +HANDLE_BAT(APINT_TYPE_PREFIX, 21420) +HANDLE_BAT(APINT_TYPE_PREFIX, 21421) +HANDLE_BAT(APINT_TYPE_PREFIX, 21422) +HANDLE_BAT(APINT_TYPE_PREFIX, 21423) +HANDLE_BAT(APINT_TYPE_PREFIX, 21424) +HANDLE_BAT(APINT_TYPE_PREFIX, 21425) +HANDLE_BAT(APINT_TYPE_PREFIX, 21426) +HANDLE_BAT(APINT_TYPE_PREFIX, 21427) +HANDLE_BAT(APINT_TYPE_PREFIX, 21428) +HANDLE_BAT(APINT_TYPE_PREFIX, 21429) +HANDLE_BAT(APINT_TYPE_PREFIX, 21430) +HANDLE_BAT(APINT_TYPE_PREFIX, 21431) +HANDLE_BAT(APINT_TYPE_PREFIX, 21432) +HANDLE_BAT(APINT_TYPE_PREFIX, 21433) +HANDLE_BAT(APINT_TYPE_PREFIX, 21434) +HANDLE_BAT(APINT_TYPE_PREFIX, 21435) +HANDLE_BAT(APINT_TYPE_PREFIX, 21436) +HANDLE_BAT(APINT_TYPE_PREFIX, 21437) +HANDLE_BAT(APINT_TYPE_PREFIX, 21438) +HANDLE_BAT(APINT_TYPE_PREFIX, 21439) +HANDLE_BAT(APINT_TYPE_PREFIX, 21440) +HANDLE_BAT(APINT_TYPE_PREFIX, 21441) +HANDLE_BAT(APINT_TYPE_PREFIX, 21442) +HANDLE_BAT(APINT_TYPE_PREFIX, 21443) +HANDLE_BAT(APINT_TYPE_PREFIX, 21444) +HANDLE_BAT(APINT_TYPE_PREFIX, 21445) +HANDLE_BAT(APINT_TYPE_PREFIX, 21446) +HANDLE_BAT(APINT_TYPE_PREFIX, 21447) +HANDLE_BAT(APINT_TYPE_PREFIX, 21448) +HANDLE_BAT(APINT_TYPE_PREFIX, 21449) +HANDLE_BAT(APINT_TYPE_PREFIX, 21450) +HANDLE_BAT(APINT_TYPE_PREFIX, 21451) +HANDLE_BAT(APINT_TYPE_PREFIX, 21452) +HANDLE_BAT(APINT_TYPE_PREFIX, 21453) +HANDLE_BAT(APINT_TYPE_PREFIX, 21454) +HANDLE_BAT(APINT_TYPE_PREFIX, 21455) +HANDLE_BAT(APINT_TYPE_PREFIX, 21456) +HANDLE_BAT(APINT_TYPE_PREFIX, 21457) +HANDLE_BAT(APINT_TYPE_PREFIX, 21458) +HANDLE_BAT(APINT_TYPE_PREFIX, 21459) +HANDLE_BAT(APINT_TYPE_PREFIX, 21460) +HANDLE_BAT(APINT_TYPE_PREFIX, 21461) +HANDLE_BAT(APINT_TYPE_PREFIX, 21462) +HANDLE_BAT(APINT_TYPE_PREFIX, 21463) +HANDLE_BAT(APINT_TYPE_PREFIX, 21464) +HANDLE_BAT(APINT_TYPE_PREFIX, 21465) +HANDLE_BAT(APINT_TYPE_PREFIX, 21466) +HANDLE_BAT(APINT_TYPE_PREFIX, 21467) +HANDLE_BAT(APINT_TYPE_PREFIX, 21468) +HANDLE_BAT(APINT_TYPE_PREFIX, 21469) +HANDLE_BAT(APINT_TYPE_PREFIX, 21470) +HANDLE_BAT(APINT_TYPE_PREFIX, 21471) +HANDLE_BAT(APINT_TYPE_PREFIX, 21472) +HANDLE_BAT(APINT_TYPE_PREFIX, 21473) +HANDLE_BAT(APINT_TYPE_PREFIX, 21474) +HANDLE_BAT(APINT_TYPE_PREFIX, 21475) +HANDLE_BAT(APINT_TYPE_PREFIX, 21476) +HANDLE_BAT(APINT_TYPE_PREFIX, 21477) +HANDLE_BAT(APINT_TYPE_PREFIX, 21478) +HANDLE_BAT(APINT_TYPE_PREFIX, 21479) +HANDLE_BAT(APINT_TYPE_PREFIX, 21480) +HANDLE_BAT(APINT_TYPE_PREFIX, 21481) +HANDLE_BAT(APINT_TYPE_PREFIX, 21482) +HANDLE_BAT(APINT_TYPE_PREFIX, 21483) +HANDLE_BAT(APINT_TYPE_PREFIX, 21484) +HANDLE_BAT(APINT_TYPE_PREFIX, 21485) +HANDLE_BAT(APINT_TYPE_PREFIX, 21486) +HANDLE_BAT(APINT_TYPE_PREFIX, 21487) +HANDLE_BAT(APINT_TYPE_PREFIX, 21488) +HANDLE_BAT(APINT_TYPE_PREFIX, 21489) +HANDLE_BAT(APINT_TYPE_PREFIX, 21490) +HANDLE_BAT(APINT_TYPE_PREFIX, 21491) +HANDLE_BAT(APINT_TYPE_PREFIX, 21492) +HANDLE_BAT(APINT_TYPE_PREFIX, 21493) +HANDLE_BAT(APINT_TYPE_PREFIX, 21494) +HANDLE_BAT(APINT_TYPE_PREFIX, 21495) +HANDLE_BAT(APINT_TYPE_PREFIX, 21496) +HANDLE_BAT(APINT_TYPE_PREFIX, 21497) +HANDLE_BAT(APINT_TYPE_PREFIX, 21498) +HANDLE_BAT(APINT_TYPE_PREFIX, 21499) +HANDLE_BAT(APINT_TYPE_PREFIX, 21500) +HANDLE_BAT(APINT_TYPE_PREFIX, 21501) +HANDLE_BAT(APINT_TYPE_PREFIX, 21502) +HANDLE_BAT(APINT_TYPE_PREFIX, 21503) +HANDLE_BAT(APINT_TYPE_PREFIX, 21504) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 21 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 21505) +HANDLE_BAT(, 21506) +HANDLE_BAT(, 21507) +HANDLE_BAT(, 21508) +HANDLE_BAT(, 21509) +HANDLE_BAT(, 21510) +HANDLE_BAT(, 21511) +HANDLE_BAT(, 21512) +HANDLE_BAT(, 21513) +HANDLE_BAT(, 21514) +HANDLE_BAT(, 21515) +HANDLE_BAT(, 21516) +HANDLE_BAT(, 21517) +HANDLE_BAT(, 21518) +HANDLE_BAT(, 21519) +HANDLE_BAT(, 21520) +HANDLE_BAT(, 21521) +HANDLE_BAT(, 21522) +HANDLE_BAT(, 21523) +HANDLE_BAT(, 21524) +HANDLE_BAT(, 21525) +HANDLE_BAT(, 21526) +HANDLE_BAT(, 21527) +HANDLE_BAT(, 21528) +HANDLE_BAT(, 21529) +HANDLE_BAT(, 21530) +HANDLE_BAT(, 21531) +HANDLE_BAT(, 21532) +HANDLE_BAT(, 21533) +HANDLE_BAT(, 21534) +HANDLE_BAT(, 21535) +HANDLE_BAT(, 21536) +HANDLE_BAT(, 21537) +HANDLE_BAT(, 21538) +HANDLE_BAT(, 21539) +HANDLE_BAT(, 21540) +HANDLE_BAT(, 21541) +HANDLE_BAT(, 21542) +HANDLE_BAT(, 21543) +HANDLE_BAT(, 21544) +HANDLE_BAT(, 21545) +HANDLE_BAT(, 21546) +HANDLE_BAT(, 21547) +HANDLE_BAT(, 21548) +HANDLE_BAT(, 21549) +HANDLE_BAT(, 21550) +HANDLE_BAT(, 21551) +HANDLE_BAT(, 21552) +HANDLE_BAT(, 21553) +HANDLE_BAT(, 21554) +HANDLE_BAT(, 21555) +HANDLE_BAT(, 21556) +HANDLE_BAT(, 21557) +HANDLE_BAT(, 21558) +HANDLE_BAT(, 21559) +HANDLE_BAT(, 21560) +HANDLE_BAT(, 21561) +HANDLE_BAT(, 21562) +HANDLE_BAT(, 21563) +HANDLE_BAT(, 21564) +HANDLE_BAT(, 21565) +HANDLE_BAT(, 21566) +HANDLE_BAT(, 21567) +HANDLE_BAT(, 21568) +HANDLE_BAT(, 21569) +HANDLE_BAT(, 21570) +HANDLE_BAT(, 21571) +HANDLE_BAT(, 21572) +HANDLE_BAT(, 21573) +HANDLE_BAT(, 21574) +HANDLE_BAT(, 21575) +HANDLE_BAT(, 21576) +HANDLE_BAT(, 21577) +HANDLE_BAT(, 21578) +HANDLE_BAT(, 21579) +HANDLE_BAT(, 21580) +HANDLE_BAT(, 21581) +HANDLE_BAT(, 21582) +HANDLE_BAT(, 21583) +HANDLE_BAT(, 21584) +HANDLE_BAT(, 21585) +HANDLE_BAT(, 21586) +HANDLE_BAT(, 21587) +HANDLE_BAT(, 21588) +HANDLE_BAT(, 21589) +HANDLE_BAT(, 21590) +HANDLE_BAT(, 21591) +HANDLE_BAT(, 21592) +HANDLE_BAT(, 21593) +HANDLE_BAT(, 21594) +HANDLE_BAT(, 21595) +HANDLE_BAT(, 21596) +HANDLE_BAT(, 21597) +HANDLE_BAT(, 21598) +HANDLE_BAT(, 21599) +HANDLE_BAT(, 21600) +HANDLE_BAT(, 21601) +HANDLE_BAT(, 21602) +HANDLE_BAT(, 21603) +HANDLE_BAT(, 21604) +HANDLE_BAT(, 21605) +HANDLE_BAT(, 21606) +HANDLE_BAT(, 21607) +HANDLE_BAT(, 21608) +HANDLE_BAT(, 21609) +HANDLE_BAT(, 21610) +HANDLE_BAT(, 21611) +HANDLE_BAT(, 21612) +HANDLE_BAT(, 21613) +HANDLE_BAT(, 21614) +HANDLE_BAT(, 21615) +HANDLE_BAT(, 21616) +HANDLE_BAT(, 21617) +HANDLE_BAT(, 21618) +HANDLE_BAT(, 21619) +HANDLE_BAT(, 21620) +HANDLE_BAT(, 21621) +HANDLE_BAT(, 21622) +HANDLE_BAT(, 21623) +HANDLE_BAT(, 21624) +HANDLE_BAT(, 21625) +HANDLE_BAT(, 21626) +HANDLE_BAT(, 21627) +HANDLE_BAT(, 21628) +HANDLE_BAT(, 21629) +HANDLE_BAT(, 21630) +HANDLE_BAT(, 21631) +HANDLE_BAT(, 21632) +HANDLE_BAT(, 21633) +HANDLE_BAT(, 21634) +HANDLE_BAT(, 21635) +HANDLE_BAT(, 21636) +HANDLE_BAT(, 21637) +HANDLE_BAT(, 21638) +HANDLE_BAT(, 21639) +HANDLE_BAT(, 21640) +HANDLE_BAT(, 21641) +HANDLE_BAT(, 21642) +HANDLE_BAT(, 21643) +HANDLE_BAT(, 21644) +HANDLE_BAT(, 21645) +HANDLE_BAT(, 21646) +HANDLE_BAT(, 21647) +HANDLE_BAT(, 21648) +HANDLE_BAT(, 21649) +HANDLE_BAT(, 21650) +HANDLE_BAT(, 21651) +HANDLE_BAT(, 21652) +HANDLE_BAT(, 21653) +HANDLE_BAT(, 21654) +HANDLE_BAT(, 21655) +HANDLE_BAT(, 21656) +HANDLE_BAT(, 21657) +HANDLE_BAT(, 21658) +HANDLE_BAT(, 21659) +HANDLE_BAT(, 21660) +HANDLE_BAT(, 21661) +HANDLE_BAT(, 21662) +HANDLE_BAT(, 21663) +HANDLE_BAT(, 21664) +HANDLE_BAT(, 21665) +HANDLE_BAT(, 21666) +HANDLE_BAT(, 21667) +HANDLE_BAT(, 21668) +HANDLE_BAT(, 21669) +HANDLE_BAT(, 21670) +HANDLE_BAT(, 21671) +HANDLE_BAT(, 21672) +HANDLE_BAT(, 21673) +HANDLE_BAT(, 21674) +HANDLE_BAT(, 21675) +HANDLE_BAT(, 21676) +HANDLE_BAT(, 21677) +HANDLE_BAT(, 21678) +HANDLE_BAT(, 21679) +HANDLE_BAT(, 21680) +HANDLE_BAT(, 21681) +HANDLE_BAT(, 21682) +HANDLE_BAT(, 21683) +HANDLE_BAT(, 21684) +HANDLE_BAT(, 21685) +HANDLE_BAT(, 21686) +HANDLE_BAT(, 21687) +HANDLE_BAT(, 21688) +HANDLE_BAT(, 21689) +HANDLE_BAT(, 21690) +HANDLE_BAT(, 21691) +HANDLE_BAT(, 21692) +HANDLE_BAT(, 21693) +HANDLE_BAT(, 21694) +HANDLE_BAT(, 21695) +HANDLE_BAT(, 21696) +HANDLE_BAT(, 21697) +HANDLE_BAT(, 21698) +HANDLE_BAT(, 21699) +HANDLE_BAT(, 21700) +HANDLE_BAT(, 21701) +HANDLE_BAT(, 21702) +HANDLE_BAT(, 21703) +HANDLE_BAT(, 21704) +HANDLE_BAT(, 21705) +HANDLE_BAT(, 21706) +HANDLE_BAT(, 21707) +HANDLE_BAT(, 21708) +HANDLE_BAT(, 21709) +HANDLE_BAT(, 21710) +HANDLE_BAT(, 21711) +HANDLE_BAT(, 21712) +HANDLE_BAT(, 21713) +HANDLE_BAT(, 21714) +HANDLE_BAT(, 21715) +HANDLE_BAT(, 21716) +HANDLE_BAT(, 21717) +HANDLE_BAT(, 21718) +HANDLE_BAT(, 21719) +HANDLE_BAT(, 21720) +HANDLE_BAT(, 21721) +HANDLE_BAT(, 21722) +HANDLE_BAT(, 21723) +HANDLE_BAT(, 21724) +HANDLE_BAT(, 21725) +HANDLE_BAT(, 21726) +HANDLE_BAT(, 21727) +HANDLE_BAT(, 21728) +HANDLE_BAT(, 21729) +HANDLE_BAT(, 21730) +HANDLE_BAT(, 21731) +HANDLE_BAT(, 21732) +HANDLE_BAT(, 21733) +HANDLE_BAT(, 21734) +HANDLE_BAT(, 21735) +HANDLE_BAT(, 21736) +HANDLE_BAT(, 21737) +HANDLE_BAT(, 21738) +HANDLE_BAT(, 21739) +HANDLE_BAT(, 21740) +HANDLE_BAT(, 21741) +HANDLE_BAT(, 21742) +HANDLE_BAT(, 21743) +HANDLE_BAT(, 21744) +HANDLE_BAT(, 21745) +HANDLE_BAT(, 21746) +HANDLE_BAT(, 21747) +HANDLE_BAT(, 21748) +HANDLE_BAT(, 21749) +HANDLE_BAT(, 21750) +HANDLE_BAT(, 21751) +HANDLE_BAT(, 21752) +HANDLE_BAT(, 21753) +HANDLE_BAT(, 21754) +HANDLE_BAT(, 21755) +HANDLE_BAT(, 21756) +HANDLE_BAT(, 21757) +HANDLE_BAT(, 21758) +HANDLE_BAT(, 21759) +HANDLE_BAT(, 21760) +HANDLE_BAT(, 21761) +HANDLE_BAT(, 21762) +HANDLE_BAT(, 21763) +HANDLE_BAT(, 21764) +HANDLE_BAT(, 21765) +HANDLE_BAT(, 21766) +HANDLE_BAT(, 21767) +HANDLE_BAT(, 21768) +HANDLE_BAT(, 21769) +HANDLE_BAT(, 21770) +HANDLE_BAT(, 21771) +HANDLE_BAT(, 21772) +HANDLE_BAT(, 21773) +HANDLE_BAT(, 21774) +HANDLE_BAT(, 21775) +HANDLE_BAT(, 21776) +HANDLE_BAT(, 21777) +HANDLE_BAT(, 21778) +HANDLE_BAT(, 21779) +HANDLE_BAT(, 21780) +HANDLE_BAT(, 21781) +HANDLE_BAT(, 21782) +HANDLE_BAT(, 21783) +HANDLE_BAT(, 21784) +HANDLE_BAT(, 21785) +HANDLE_BAT(, 21786) +HANDLE_BAT(, 21787) +HANDLE_BAT(, 21788) +HANDLE_BAT(, 21789) +HANDLE_BAT(, 21790) +HANDLE_BAT(, 21791) +HANDLE_BAT(, 21792) +HANDLE_BAT(, 21793) +HANDLE_BAT(, 21794) +HANDLE_BAT(, 21795) +HANDLE_BAT(, 21796) +HANDLE_BAT(, 21797) +HANDLE_BAT(, 21798) +HANDLE_BAT(, 21799) +HANDLE_BAT(, 21800) +HANDLE_BAT(, 21801) +HANDLE_BAT(, 21802) +HANDLE_BAT(, 21803) +HANDLE_BAT(, 21804) +HANDLE_BAT(, 21805) +HANDLE_BAT(, 21806) +HANDLE_BAT(, 21807) +HANDLE_BAT(, 21808) +HANDLE_BAT(, 21809) +HANDLE_BAT(, 21810) +HANDLE_BAT(, 21811) +HANDLE_BAT(, 21812) +HANDLE_BAT(, 21813) +HANDLE_BAT(, 21814) +HANDLE_BAT(, 21815) +HANDLE_BAT(, 21816) +HANDLE_BAT(, 21817) +HANDLE_BAT(, 21818) +HANDLE_BAT(, 21819) +HANDLE_BAT(, 21820) +HANDLE_BAT(, 21821) +HANDLE_BAT(, 21822) +HANDLE_BAT(, 21823) +HANDLE_BAT(, 21824) +HANDLE_BAT(, 21825) +HANDLE_BAT(, 21826) +HANDLE_BAT(, 21827) +HANDLE_BAT(, 21828) +HANDLE_BAT(, 21829) +HANDLE_BAT(, 21830) +HANDLE_BAT(, 21831) +HANDLE_BAT(, 21832) +HANDLE_BAT(, 21833) +HANDLE_BAT(, 21834) +HANDLE_BAT(, 21835) +HANDLE_BAT(, 21836) +HANDLE_BAT(, 21837) +HANDLE_BAT(, 21838) +HANDLE_BAT(, 21839) +HANDLE_BAT(, 21840) +HANDLE_BAT(, 21841) +HANDLE_BAT(, 21842) +HANDLE_BAT(, 21843) +HANDLE_BAT(, 21844) +HANDLE_BAT(, 21845) +HANDLE_BAT(, 21846) +HANDLE_BAT(, 21847) +HANDLE_BAT(, 21848) +HANDLE_BAT(, 21849) +HANDLE_BAT(, 21850) +HANDLE_BAT(, 21851) +HANDLE_BAT(, 21852) +HANDLE_BAT(, 21853) +HANDLE_BAT(, 21854) +HANDLE_BAT(, 21855) +HANDLE_BAT(, 21856) +HANDLE_BAT(, 21857) +HANDLE_BAT(, 21858) +HANDLE_BAT(, 21859) +HANDLE_BAT(, 21860) +HANDLE_BAT(, 21861) +HANDLE_BAT(, 21862) +HANDLE_BAT(, 21863) +HANDLE_BAT(, 21864) +HANDLE_BAT(, 21865) +HANDLE_BAT(, 21866) +HANDLE_BAT(, 21867) +HANDLE_BAT(, 21868) +HANDLE_BAT(, 21869) +HANDLE_BAT(, 21870) +HANDLE_BAT(, 21871) +HANDLE_BAT(, 21872) +HANDLE_BAT(, 21873) +HANDLE_BAT(, 21874) +HANDLE_BAT(, 21875) +HANDLE_BAT(, 21876) +HANDLE_BAT(, 21877) +HANDLE_BAT(, 21878) +HANDLE_BAT(, 21879) +HANDLE_BAT(, 21880) +HANDLE_BAT(, 21881) +HANDLE_BAT(, 21882) +HANDLE_BAT(, 21883) +HANDLE_BAT(, 21884) +HANDLE_BAT(, 21885) +HANDLE_BAT(, 21886) +HANDLE_BAT(, 21887) +HANDLE_BAT(, 21888) +HANDLE_BAT(, 21889) +HANDLE_BAT(, 21890) +HANDLE_BAT(, 21891) +HANDLE_BAT(, 21892) +HANDLE_BAT(, 21893) +HANDLE_BAT(, 21894) +HANDLE_BAT(, 21895) +HANDLE_BAT(, 21896) +HANDLE_BAT(, 21897) +HANDLE_BAT(, 21898) +HANDLE_BAT(, 21899) +HANDLE_BAT(, 21900) +HANDLE_BAT(, 21901) +HANDLE_BAT(, 21902) +HANDLE_BAT(, 21903) +HANDLE_BAT(, 21904) +HANDLE_BAT(, 21905) +HANDLE_BAT(, 21906) +HANDLE_BAT(, 21907) +HANDLE_BAT(, 21908) +HANDLE_BAT(, 21909) +HANDLE_BAT(, 21910) +HANDLE_BAT(, 21911) +HANDLE_BAT(, 21912) +HANDLE_BAT(, 21913) +HANDLE_BAT(, 21914) +HANDLE_BAT(, 21915) +HANDLE_BAT(, 21916) +HANDLE_BAT(, 21917) +HANDLE_BAT(, 21918) +HANDLE_BAT(, 21919) +HANDLE_BAT(, 21920) +HANDLE_BAT(, 21921) +HANDLE_BAT(, 21922) +HANDLE_BAT(, 21923) +HANDLE_BAT(, 21924) +HANDLE_BAT(, 21925) +HANDLE_BAT(, 21926) +HANDLE_BAT(, 21927) +HANDLE_BAT(, 21928) +HANDLE_BAT(, 21929) +HANDLE_BAT(, 21930) +HANDLE_BAT(, 21931) +HANDLE_BAT(, 21932) +HANDLE_BAT(, 21933) +HANDLE_BAT(, 21934) +HANDLE_BAT(, 21935) +HANDLE_BAT(, 21936) +HANDLE_BAT(, 21937) +HANDLE_BAT(, 21938) +HANDLE_BAT(, 21939) +HANDLE_BAT(, 21940) +HANDLE_BAT(, 21941) +HANDLE_BAT(, 21942) +HANDLE_BAT(, 21943) +HANDLE_BAT(, 21944) +HANDLE_BAT(, 21945) +HANDLE_BAT(, 21946) +HANDLE_BAT(, 21947) +HANDLE_BAT(, 21948) +HANDLE_BAT(, 21949) +HANDLE_BAT(, 21950) +HANDLE_BAT(, 21951) +HANDLE_BAT(, 21952) +HANDLE_BAT(, 21953) +HANDLE_BAT(, 21954) +HANDLE_BAT(, 21955) +HANDLE_BAT(, 21956) +HANDLE_BAT(, 21957) +HANDLE_BAT(, 21958) +HANDLE_BAT(, 21959) +HANDLE_BAT(, 21960) +HANDLE_BAT(, 21961) +HANDLE_BAT(, 21962) +HANDLE_BAT(, 21963) +HANDLE_BAT(, 21964) +HANDLE_BAT(, 21965) +HANDLE_BAT(, 21966) +HANDLE_BAT(, 21967) +HANDLE_BAT(, 21968) +HANDLE_BAT(, 21969) +HANDLE_BAT(, 21970) +HANDLE_BAT(, 21971) +HANDLE_BAT(, 21972) +HANDLE_BAT(, 21973) +HANDLE_BAT(, 21974) +HANDLE_BAT(, 21975) +HANDLE_BAT(, 21976) +HANDLE_BAT(, 21977) +HANDLE_BAT(, 21978) +HANDLE_BAT(, 21979) +HANDLE_BAT(, 21980) +HANDLE_BAT(, 21981) +HANDLE_BAT(, 21982) +HANDLE_BAT(, 21983) +HANDLE_BAT(, 21984) +HANDLE_BAT(, 21985) +HANDLE_BAT(, 21986) +HANDLE_BAT(, 21987) +HANDLE_BAT(, 21988) +HANDLE_BAT(, 21989) +HANDLE_BAT(, 21990) +HANDLE_BAT(, 21991) +HANDLE_BAT(, 21992) +HANDLE_BAT(, 21993) +HANDLE_BAT(, 21994) +HANDLE_BAT(, 21995) +HANDLE_BAT(, 21996) +HANDLE_BAT(, 21997) +HANDLE_BAT(, 21998) +HANDLE_BAT(, 21999) +HANDLE_BAT(, 22000) +HANDLE_BAT(, 22001) +HANDLE_BAT(, 22002) +HANDLE_BAT(, 22003) +HANDLE_BAT(, 22004) +HANDLE_BAT(, 22005) +HANDLE_BAT(, 22006) +HANDLE_BAT(, 22007) +HANDLE_BAT(, 22008) +HANDLE_BAT(, 22009) +HANDLE_BAT(, 22010) +HANDLE_BAT(, 22011) +HANDLE_BAT(, 22012) +HANDLE_BAT(, 22013) +HANDLE_BAT(, 22014) +HANDLE_BAT(, 22015) +HANDLE_BAT(, 22016) +HANDLE_BAT(, 22017) +HANDLE_BAT(, 22018) +HANDLE_BAT(, 22019) +HANDLE_BAT(, 22020) +HANDLE_BAT(, 22021) +HANDLE_BAT(, 22022) +HANDLE_BAT(, 22023) +HANDLE_BAT(, 22024) +HANDLE_BAT(, 22025) +HANDLE_BAT(, 22026) +HANDLE_BAT(, 22027) +HANDLE_BAT(, 22028) +HANDLE_BAT(, 22029) +HANDLE_BAT(, 22030) +HANDLE_BAT(, 22031) +HANDLE_BAT(, 22032) +HANDLE_BAT(, 22033) +HANDLE_BAT(, 22034) +HANDLE_BAT(, 22035) +HANDLE_BAT(, 22036) +HANDLE_BAT(, 22037) +HANDLE_BAT(, 22038) +HANDLE_BAT(, 22039) +HANDLE_BAT(, 22040) +HANDLE_BAT(, 22041) +HANDLE_BAT(, 22042) +HANDLE_BAT(, 22043) +HANDLE_BAT(, 22044) +HANDLE_BAT(, 22045) +HANDLE_BAT(, 22046) +HANDLE_BAT(, 22047) +HANDLE_BAT(, 22048) +HANDLE_BAT(, 22049) +HANDLE_BAT(, 22050) +HANDLE_BAT(, 22051) +HANDLE_BAT(, 22052) +HANDLE_BAT(, 22053) +HANDLE_BAT(, 22054) +HANDLE_BAT(, 22055) +HANDLE_BAT(, 22056) +HANDLE_BAT(, 22057) +HANDLE_BAT(, 22058) +HANDLE_BAT(, 22059) +HANDLE_BAT(, 22060) +HANDLE_BAT(, 22061) +HANDLE_BAT(, 22062) +HANDLE_BAT(, 22063) +HANDLE_BAT(, 22064) +HANDLE_BAT(, 22065) +HANDLE_BAT(, 22066) +HANDLE_BAT(, 22067) +HANDLE_BAT(, 22068) +HANDLE_BAT(, 22069) +HANDLE_BAT(, 22070) +HANDLE_BAT(, 22071) +HANDLE_BAT(, 22072) +HANDLE_BAT(, 22073) +HANDLE_BAT(, 22074) +HANDLE_BAT(, 22075) +HANDLE_BAT(, 22076) +HANDLE_BAT(, 22077) +HANDLE_BAT(, 22078) +HANDLE_BAT(, 22079) +HANDLE_BAT(, 22080) +HANDLE_BAT(, 22081) +HANDLE_BAT(, 22082) +HANDLE_BAT(, 22083) +HANDLE_BAT(, 22084) +HANDLE_BAT(, 22085) +HANDLE_BAT(, 22086) +HANDLE_BAT(, 22087) +HANDLE_BAT(, 22088) +HANDLE_BAT(, 22089) +HANDLE_BAT(, 22090) +HANDLE_BAT(, 22091) +HANDLE_BAT(, 22092) +HANDLE_BAT(, 22093) +HANDLE_BAT(, 22094) +HANDLE_BAT(, 22095) +HANDLE_BAT(, 22096) +HANDLE_BAT(, 22097) +HANDLE_BAT(, 22098) +HANDLE_BAT(, 22099) +HANDLE_BAT(, 22100) +HANDLE_BAT(, 22101) +HANDLE_BAT(, 22102) +HANDLE_BAT(, 22103) +HANDLE_BAT(, 22104) +HANDLE_BAT(, 22105) +HANDLE_BAT(, 22106) +HANDLE_BAT(, 22107) +HANDLE_BAT(, 22108) +HANDLE_BAT(, 22109) +HANDLE_BAT(, 22110) +HANDLE_BAT(, 22111) +HANDLE_BAT(, 22112) +HANDLE_BAT(, 22113) +HANDLE_BAT(, 22114) +HANDLE_BAT(, 22115) +HANDLE_BAT(, 22116) +HANDLE_BAT(, 22117) +HANDLE_BAT(, 22118) +HANDLE_BAT(, 22119) +HANDLE_BAT(, 22120) +HANDLE_BAT(, 22121) +HANDLE_BAT(, 22122) +HANDLE_BAT(, 22123) +HANDLE_BAT(, 22124) +HANDLE_BAT(, 22125) +HANDLE_BAT(, 22126) +HANDLE_BAT(, 22127) +HANDLE_BAT(, 22128) +HANDLE_BAT(, 22129) +HANDLE_BAT(, 22130) +HANDLE_BAT(, 22131) +HANDLE_BAT(, 22132) +HANDLE_BAT(, 22133) +HANDLE_BAT(, 22134) +HANDLE_BAT(, 22135) +HANDLE_BAT(, 22136) +HANDLE_BAT(, 22137) +HANDLE_BAT(, 22138) +HANDLE_BAT(, 22139) +HANDLE_BAT(, 22140) +HANDLE_BAT(, 22141) +HANDLE_BAT(, 22142) +HANDLE_BAT(, 22143) +HANDLE_BAT(, 22144) +HANDLE_BAT(, 22145) +HANDLE_BAT(, 22146) +HANDLE_BAT(, 22147) +HANDLE_BAT(, 22148) +HANDLE_BAT(, 22149) +HANDLE_BAT(, 22150) +HANDLE_BAT(, 22151) +HANDLE_BAT(, 22152) +HANDLE_BAT(, 22153) +HANDLE_BAT(, 22154) +HANDLE_BAT(, 22155) +HANDLE_BAT(, 22156) +HANDLE_BAT(, 22157) +HANDLE_BAT(, 22158) +HANDLE_BAT(, 22159) +HANDLE_BAT(, 22160) +HANDLE_BAT(, 22161) +HANDLE_BAT(, 22162) +HANDLE_BAT(, 22163) +HANDLE_BAT(, 22164) +HANDLE_BAT(, 22165) +HANDLE_BAT(, 22166) +HANDLE_BAT(, 22167) +HANDLE_BAT(, 22168) +HANDLE_BAT(, 22169) +HANDLE_BAT(, 22170) +HANDLE_BAT(, 22171) +HANDLE_BAT(, 22172) +HANDLE_BAT(, 22173) +HANDLE_BAT(, 22174) +HANDLE_BAT(, 22175) +HANDLE_BAT(, 22176) +HANDLE_BAT(, 22177) +HANDLE_BAT(, 22178) +HANDLE_BAT(, 22179) +HANDLE_BAT(, 22180) +HANDLE_BAT(, 22181) +HANDLE_BAT(, 22182) +HANDLE_BAT(, 22183) +HANDLE_BAT(, 22184) +HANDLE_BAT(, 22185) +HANDLE_BAT(, 22186) +HANDLE_BAT(, 22187) +HANDLE_BAT(, 22188) +HANDLE_BAT(, 22189) +HANDLE_BAT(, 22190) +HANDLE_BAT(, 22191) +HANDLE_BAT(, 22192) +HANDLE_BAT(, 22193) +HANDLE_BAT(, 22194) +HANDLE_BAT(, 22195) +HANDLE_BAT(, 22196) +HANDLE_BAT(, 22197) +HANDLE_BAT(, 22198) +HANDLE_BAT(, 22199) +HANDLE_BAT(, 22200) +HANDLE_BAT(, 22201) +HANDLE_BAT(, 22202) +HANDLE_BAT(, 22203) +HANDLE_BAT(, 22204) +HANDLE_BAT(, 22205) +HANDLE_BAT(, 22206) +HANDLE_BAT(, 22207) +HANDLE_BAT(, 22208) +HANDLE_BAT(, 22209) +HANDLE_BAT(, 22210) +HANDLE_BAT(, 22211) +HANDLE_BAT(, 22212) +HANDLE_BAT(, 22213) +HANDLE_BAT(, 22214) +HANDLE_BAT(, 22215) +HANDLE_BAT(, 22216) +HANDLE_BAT(, 22217) +HANDLE_BAT(, 22218) +HANDLE_BAT(, 22219) +HANDLE_BAT(, 22220) +HANDLE_BAT(, 22221) +HANDLE_BAT(, 22222) +HANDLE_BAT(, 22223) +HANDLE_BAT(, 22224) +HANDLE_BAT(, 22225) +HANDLE_BAT(, 22226) +HANDLE_BAT(, 22227) +HANDLE_BAT(, 22228) +HANDLE_BAT(, 22229) +HANDLE_BAT(, 22230) +HANDLE_BAT(, 22231) +HANDLE_BAT(, 22232) +HANDLE_BAT(, 22233) +HANDLE_BAT(, 22234) +HANDLE_BAT(, 22235) +HANDLE_BAT(, 22236) +HANDLE_BAT(, 22237) +HANDLE_BAT(, 22238) +HANDLE_BAT(, 22239) +HANDLE_BAT(, 22240) +HANDLE_BAT(, 22241) +HANDLE_BAT(, 22242) +HANDLE_BAT(, 22243) +HANDLE_BAT(, 22244) +HANDLE_BAT(, 22245) +HANDLE_BAT(, 22246) +HANDLE_BAT(, 22247) +HANDLE_BAT(, 22248) +HANDLE_BAT(, 22249) +HANDLE_BAT(, 22250) +HANDLE_BAT(, 22251) +HANDLE_BAT(, 22252) +HANDLE_BAT(, 22253) +HANDLE_BAT(, 22254) +HANDLE_BAT(, 22255) +HANDLE_BAT(, 22256) +HANDLE_BAT(, 22257) +HANDLE_BAT(, 22258) +HANDLE_BAT(, 22259) +HANDLE_BAT(, 22260) +HANDLE_BAT(, 22261) +HANDLE_BAT(, 22262) +HANDLE_BAT(, 22263) +HANDLE_BAT(, 22264) +HANDLE_BAT(, 22265) +HANDLE_BAT(, 22266) +HANDLE_BAT(, 22267) +HANDLE_BAT(, 22268) +HANDLE_BAT(, 22269) +HANDLE_BAT(, 22270) +HANDLE_BAT(, 22271) +HANDLE_BAT(, 22272) +HANDLE_BAT(, 22273) +HANDLE_BAT(, 22274) +HANDLE_BAT(, 22275) +HANDLE_BAT(, 22276) +HANDLE_BAT(, 22277) +HANDLE_BAT(, 22278) +HANDLE_BAT(, 22279) +HANDLE_BAT(, 22280) +HANDLE_BAT(, 22281) +HANDLE_BAT(, 22282) +HANDLE_BAT(, 22283) +HANDLE_BAT(, 22284) +HANDLE_BAT(, 22285) +HANDLE_BAT(, 22286) +HANDLE_BAT(, 22287) +HANDLE_BAT(, 22288) +HANDLE_BAT(, 22289) +HANDLE_BAT(, 22290) +HANDLE_BAT(, 22291) +HANDLE_BAT(, 22292) +HANDLE_BAT(, 22293) +HANDLE_BAT(, 22294) +HANDLE_BAT(, 22295) +HANDLE_BAT(, 22296) +HANDLE_BAT(, 22297) +HANDLE_BAT(, 22298) +HANDLE_BAT(, 22299) +HANDLE_BAT(, 22300) +HANDLE_BAT(, 22301) +HANDLE_BAT(, 22302) +HANDLE_BAT(, 22303) +HANDLE_BAT(, 22304) +HANDLE_BAT(, 22305) +HANDLE_BAT(, 22306) +HANDLE_BAT(, 22307) +HANDLE_BAT(, 22308) +HANDLE_BAT(, 22309) +HANDLE_BAT(, 22310) +HANDLE_BAT(, 22311) +HANDLE_BAT(, 22312) +HANDLE_BAT(, 22313) +HANDLE_BAT(, 22314) +HANDLE_BAT(, 22315) +HANDLE_BAT(, 22316) +HANDLE_BAT(, 22317) +HANDLE_BAT(, 22318) +HANDLE_BAT(, 22319) +HANDLE_BAT(, 22320) +HANDLE_BAT(, 22321) +HANDLE_BAT(, 22322) +HANDLE_BAT(, 22323) +HANDLE_BAT(, 22324) +HANDLE_BAT(, 22325) +HANDLE_BAT(, 22326) +HANDLE_BAT(, 22327) +HANDLE_BAT(, 22328) +HANDLE_BAT(, 22329) +HANDLE_BAT(, 22330) +HANDLE_BAT(, 22331) +HANDLE_BAT(, 22332) +HANDLE_BAT(, 22333) +HANDLE_BAT(, 22334) +HANDLE_BAT(, 22335) +HANDLE_BAT(, 22336) +HANDLE_BAT(, 22337) +HANDLE_BAT(, 22338) +HANDLE_BAT(, 22339) +HANDLE_BAT(, 22340) +HANDLE_BAT(, 22341) +HANDLE_BAT(, 22342) +HANDLE_BAT(, 22343) +HANDLE_BAT(, 22344) +HANDLE_BAT(, 22345) +HANDLE_BAT(, 22346) +HANDLE_BAT(, 22347) +HANDLE_BAT(, 22348) +HANDLE_BAT(, 22349) +HANDLE_BAT(, 22350) +HANDLE_BAT(, 22351) +HANDLE_BAT(, 22352) +HANDLE_BAT(, 22353) +HANDLE_BAT(, 22354) +HANDLE_BAT(, 22355) +HANDLE_BAT(, 22356) +HANDLE_BAT(, 22357) +HANDLE_BAT(, 22358) +HANDLE_BAT(, 22359) +HANDLE_BAT(, 22360) +HANDLE_BAT(, 22361) +HANDLE_BAT(, 22362) +HANDLE_BAT(, 22363) +HANDLE_BAT(, 22364) +HANDLE_BAT(, 22365) +HANDLE_BAT(, 22366) +HANDLE_BAT(, 22367) +HANDLE_BAT(, 22368) +HANDLE_BAT(, 22369) +HANDLE_BAT(, 22370) +HANDLE_BAT(, 22371) +HANDLE_BAT(, 22372) +HANDLE_BAT(, 22373) +HANDLE_BAT(, 22374) +HANDLE_BAT(, 22375) +HANDLE_BAT(, 22376) +HANDLE_BAT(, 22377) +HANDLE_BAT(, 22378) +HANDLE_BAT(, 22379) +HANDLE_BAT(, 22380) +HANDLE_BAT(, 22381) +HANDLE_BAT(, 22382) +HANDLE_BAT(, 22383) +HANDLE_BAT(, 22384) +HANDLE_BAT(, 22385) +HANDLE_BAT(, 22386) +HANDLE_BAT(, 22387) +HANDLE_BAT(, 22388) +HANDLE_BAT(, 22389) +HANDLE_BAT(, 22390) +HANDLE_BAT(, 22391) +HANDLE_BAT(, 22392) +HANDLE_BAT(, 22393) +HANDLE_BAT(, 22394) +HANDLE_BAT(, 22395) +HANDLE_BAT(, 22396) +HANDLE_BAT(, 22397) +HANDLE_BAT(, 22398) +HANDLE_BAT(, 22399) +HANDLE_BAT(, 22400) +HANDLE_BAT(, 22401) +HANDLE_BAT(, 22402) +HANDLE_BAT(, 22403) +HANDLE_BAT(, 22404) +HANDLE_BAT(, 22405) +HANDLE_BAT(, 22406) +HANDLE_BAT(, 22407) +HANDLE_BAT(, 22408) +HANDLE_BAT(, 22409) +HANDLE_BAT(, 22410) +HANDLE_BAT(, 22411) +HANDLE_BAT(, 22412) +HANDLE_BAT(, 22413) +HANDLE_BAT(, 22414) +HANDLE_BAT(, 22415) +HANDLE_BAT(, 22416) +HANDLE_BAT(, 22417) +HANDLE_BAT(, 22418) +HANDLE_BAT(, 22419) +HANDLE_BAT(, 22420) +HANDLE_BAT(, 22421) +HANDLE_BAT(, 22422) +HANDLE_BAT(, 22423) +HANDLE_BAT(, 22424) +HANDLE_BAT(, 22425) +HANDLE_BAT(, 22426) +HANDLE_BAT(, 22427) +HANDLE_BAT(, 22428) +HANDLE_BAT(, 22429) +HANDLE_BAT(, 22430) +HANDLE_BAT(, 22431) +HANDLE_BAT(, 22432) +HANDLE_BAT(, 22433) +HANDLE_BAT(, 22434) +HANDLE_BAT(, 22435) +HANDLE_BAT(, 22436) +HANDLE_BAT(, 22437) +HANDLE_BAT(, 22438) +HANDLE_BAT(, 22439) +HANDLE_BAT(, 22440) +HANDLE_BAT(, 22441) +HANDLE_BAT(, 22442) +HANDLE_BAT(, 22443) +HANDLE_BAT(, 22444) +HANDLE_BAT(, 22445) +HANDLE_BAT(, 22446) +HANDLE_BAT(, 22447) +HANDLE_BAT(, 22448) +HANDLE_BAT(, 22449) +HANDLE_BAT(, 22450) +HANDLE_BAT(, 22451) +HANDLE_BAT(, 22452) +HANDLE_BAT(, 22453) +HANDLE_BAT(, 22454) +HANDLE_BAT(, 22455) +HANDLE_BAT(, 22456) +HANDLE_BAT(, 22457) +HANDLE_BAT(, 22458) +HANDLE_BAT(, 22459) +HANDLE_BAT(, 22460) +HANDLE_BAT(, 22461) +HANDLE_BAT(, 22462) +HANDLE_BAT(, 22463) +HANDLE_BAT(, 22464) +HANDLE_BAT(, 22465) +HANDLE_BAT(, 22466) +HANDLE_BAT(, 22467) +HANDLE_BAT(, 22468) +HANDLE_BAT(, 22469) +HANDLE_BAT(, 22470) +HANDLE_BAT(, 22471) +HANDLE_BAT(, 22472) +HANDLE_BAT(, 22473) +HANDLE_BAT(, 22474) +HANDLE_BAT(, 22475) +HANDLE_BAT(, 22476) +HANDLE_BAT(, 22477) +HANDLE_BAT(, 22478) +HANDLE_BAT(, 22479) +HANDLE_BAT(, 22480) +HANDLE_BAT(, 22481) +HANDLE_BAT(, 22482) +HANDLE_BAT(, 22483) +HANDLE_BAT(, 22484) +HANDLE_BAT(, 22485) +HANDLE_BAT(, 22486) +HANDLE_BAT(, 22487) +HANDLE_BAT(, 22488) +HANDLE_BAT(, 22489) +HANDLE_BAT(, 22490) +HANDLE_BAT(, 22491) +HANDLE_BAT(, 22492) +HANDLE_BAT(, 22493) +HANDLE_BAT(, 22494) +HANDLE_BAT(, 22495) +HANDLE_BAT(, 22496) +HANDLE_BAT(, 22497) +HANDLE_BAT(, 22498) +HANDLE_BAT(, 22499) +HANDLE_BAT(, 22500) +HANDLE_BAT(, 22501) +HANDLE_BAT(, 22502) +HANDLE_BAT(, 22503) +HANDLE_BAT(, 22504) +HANDLE_BAT(, 22505) +HANDLE_BAT(, 22506) +HANDLE_BAT(, 22507) +HANDLE_BAT(, 22508) +HANDLE_BAT(, 22509) +HANDLE_BAT(, 22510) +HANDLE_BAT(, 22511) +HANDLE_BAT(, 22512) +HANDLE_BAT(, 22513) +HANDLE_BAT(, 22514) +HANDLE_BAT(, 22515) +HANDLE_BAT(, 22516) +HANDLE_BAT(, 22517) +HANDLE_BAT(, 22518) +HANDLE_BAT(, 22519) +HANDLE_BAT(, 22520) +HANDLE_BAT(, 22521) +HANDLE_BAT(, 22522) +HANDLE_BAT(, 22523) +HANDLE_BAT(, 22524) +HANDLE_BAT(, 22525) +HANDLE_BAT(, 22526) +HANDLE_BAT(, 22527) +HANDLE_BAT(, 22528) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 21505) +HANDLE_BAT(APINT_TYPE_PREFIX, 21506) +HANDLE_BAT(APINT_TYPE_PREFIX, 21507) +HANDLE_BAT(APINT_TYPE_PREFIX, 21508) +HANDLE_BAT(APINT_TYPE_PREFIX, 21509) +HANDLE_BAT(APINT_TYPE_PREFIX, 21510) +HANDLE_BAT(APINT_TYPE_PREFIX, 21511) +HANDLE_BAT(APINT_TYPE_PREFIX, 21512) +HANDLE_BAT(APINT_TYPE_PREFIX, 21513) +HANDLE_BAT(APINT_TYPE_PREFIX, 21514) +HANDLE_BAT(APINT_TYPE_PREFIX, 21515) +HANDLE_BAT(APINT_TYPE_PREFIX, 21516) +HANDLE_BAT(APINT_TYPE_PREFIX, 21517) +HANDLE_BAT(APINT_TYPE_PREFIX, 21518) +HANDLE_BAT(APINT_TYPE_PREFIX, 21519) +HANDLE_BAT(APINT_TYPE_PREFIX, 21520) +HANDLE_BAT(APINT_TYPE_PREFIX, 21521) +HANDLE_BAT(APINT_TYPE_PREFIX, 21522) +HANDLE_BAT(APINT_TYPE_PREFIX, 21523) +HANDLE_BAT(APINT_TYPE_PREFIX, 21524) +HANDLE_BAT(APINT_TYPE_PREFIX, 21525) +HANDLE_BAT(APINT_TYPE_PREFIX, 21526) +HANDLE_BAT(APINT_TYPE_PREFIX, 21527) +HANDLE_BAT(APINT_TYPE_PREFIX, 21528) +HANDLE_BAT(APINT_TYPE_PREFIX, 21529) +HANDLE_BAT(APINT_TYPE_PREFIX, 21530) +HANDLE_BAT(APINT_TYPE_PREFIX, 21531) +HANDLE_BAT(APINT_TYPE_PREFIX, 21532) +HANDLE_BAT(APINT_TYPE_PREFIX, 21533) +HANDLE_BAT(APINT_TYPE_PREFIX, 21534) +HANDLE_BAT(APINT_TYPE_PREFIX, 21535) +HANDLE_BAT(APINT_TYPE_PREFIX, 21536) +HANDLE_BAT(APINT_TYPE_PREFIX, 21537) +HANDLE_BAT(APINT_TYPE_PREFIX, 21538) +HANDLE_BAT(APINT_TYPE_PREFIX, 21539) +HANDLE_BAT(APINT_TYPE_PREFIX, 21540) +HANDLE_BAT(APINT_TYPE_PREFIX, 21541) +HANDLE_BAT(APINT_TYPE_PREFIX, 21542) +HANDLE_BAT(APINT_TYPE_PREFIX, 21543) +HANDLE_BAT(APINT_TYPE_PREFIX, 21544) +HANDLE_BAT(APINT_TYPE_PREFIX, 21545) +HANDLE_BAT(APINT_TYPE_PREFIX, 21546) +HANDLE_BAT(APINT_TYPE_PREFIX, 21547) +HANDLE_BAT(APINT_TYPE_PREFIX, 21548) +HANDLE_BAT(APINT_TYPE_PREFIX, 21549) +HANDLE_BAT(APINT_TYPE_PREFIX, 21550) +HANDLE_BAT(APINT_TYPE_PREFIX, 21551) +HANDLE_BAT(APINT_TYPE_PREFIX, 21552) +HANDLE_BAT(APINT_TYPE_PREFIX, 21553) +HANDLE_BAT(APINT_TYPE_PREFIX, 21554) +HANDLE_BAT(APINT_TYPE_PREFIX, 21555) +HANDLE_BAT(APINT_TYPE_PREFIX, 21556) +HANDLE_BAT(APINT_TYPE_PREFIX, 21557) +HANDLE_BAT(APINT_TYPE_PREFIX, 21558) +HANDLE_BAT(APINT_TYPE_PREFIX, 21559) +HANDLE_BAT(APINT_TYPE_PREFIX, 21560) +HANDLE_BAT(APINT_TYPE_PREFIX, 21561) +HANDLE_BAT(APINT_TYPE_PREFIX, 21562) +HANDLE_BAT(APINT_TYPE_PREFIX, 21563) +HANDLE_BAT(APINT_TYPE_PREFIX, 21564) +HANDLE_BAT(APINT_TYPE_PREFIX, 21565) +HANDLE_BAT(APINT_TYPE_PREFIX, 21566) +HANDLE_BAT(APINT_TYPE_PREFIX, 21567) +HANDLE_BAT(APINT_TYPE_PREFIX, 21568) +HANDLE_BAT(APINT_TYPE_PREFIX, 21569) +HANDLE_BAT(APINT_TYPE_PREFIX, 21570) +HANDLE_BAT(APINT_TYPE_PREFIX, 21571) +HANDLE_BAT(APINT_TYPE_PREFIX, 21572) +HANDLE_BAT(APINT_TYPE_PREFIX, 21573) +HANDLE_BAT(APINT_TYPE_PREFIX, 21574) +HANDLE_BAT(APINT_TYPE_PREFIX, 21575) +HANDLE_BAT(APINT_TYPE_PREFIX, 21576) +HANDLE_BAT(APINT_TYPE_PREFIX, 21577) +HANDLE_BAT(APINT_TYPE_PREFIX, 21578) +HANDLE_BAT(APINT_TYPE_PREFIX, 21579) +HANDLE_BAT(APINT_TYPE_PREFIX, 21580) +HANDLE_BAT(APINT_TYPE_PREFIX, 21581) +HANDLE_BAT(APINT_TYPE_PREFIX, 21582) +HANDLE_BAT(APINT_TYPE_PREFIX, 21583) +HANDLE_BAT(APINT_TYPE_PREFIX, 21584) +HANDLE_BAT(APINT_TYPE_PREFIX, 21585) +HANDLE_BAT(APINT_TYPE_PREFIX, 21586) +HANDLE_BAT(APINT_TYPE_PREFIX, 21587) +HANDLE_BAT(APINT_TYPE_PREFIX, 21588) +HANDLE_BAT(APINT_TYPE_PREFIX, 21589) +HANDLE_BAT(APINT_TYPE_PREFIX, 21590) +HANDLE_BAT(APINT_TYPE_PREFIX, 21591) +HANDLE_BAT(APINT_TYPE_PREFIX, 21592) +HANDLE_BAT(APINT_TYPE_PREFIX, 21593) +HANDLE_BAT(APINT_TYPE_PREFIX, 21594) +HANDLE_BAT(APINT_TYPE_PREFIX, 21595) +HANDLE_BAT(APINT_TYPE_PREFIX, 21596) +HANDLE_BAT(APINT_TYPE_PREFIX, 21597) +HANDLE_BAT(APINT_TYPE_PREFIX, 21598) +HANDLE_BAT(APINT_TYPE_PREFIX, 21599) +HANDLE_BAT(APINT_TYPE_PREFIX, 21600) +HANDLE_BAT(APINT_TYPE_PREFIX, 21601) +HANDLE_BAT(APINT_TYPE_PREFIX, 21602) +HANDLE_BAT(APINT_TYPE_PREFIX, 21603) +HANDLE_BAT(APINT_TYPE_PREFIX, 21604) +HANDLE_BAT(APINT_TYPE_PREFIX, 21605) +HANDLE_BAT(APINT_TYPE_PREFIX, 21606) +HANDLE_BAT(APINT_TYPE_PREFIX, 21607) +HANDLE_BAT(APINT_TYPE_PREFIX, 21608) +HANDLE_BAT(APINT_TYPE_PREFIX, 21609) +HANDLE_BAT(APINT_TYPE_PREFIX, 21610) +HANDLE_BAT(APINT_TYPE_PREFIX, 21611) +HANDLE_BAT(APINT_TYPE_PREFIX, 21612) +HANDLE_BAT(APINT_TYPE_PREFIX, 21613) +HANDLE_BAT(APINT_TYPE_PREFIX, 21614) +HANDLE_BAT(APINT_TYPE_PREFIX, 21615) +HANDLE_BAT(APINT_TYPE_PREFIX, 21616) +HANDLE_BAT(APINT_TYPE_PREFIX, 21617) +HANDLE_BAT(APINT_TYPE_PREFIX, 21618) +HANDLE_BAT(APINT_TYPE_PREFIX, 21619) +HANDLE_BAT(APINT_TYPE_PREFIX, 21620) +HANDLE_BAT(APINT_TYPE_PREFIX, 21621) +HANDLE_BAT(APINT_TYPE_PREFIX, 21622) +HANDLE_BAT(APINT_TYPE_PREFIX, 21623) +HANDLE_BAT(APINT_TYPE_PREFIX, 21624) +HANDLE_BAT(APINT_TYPE_PREFIX, 21625) +HANDLE_BAT(APINT_TYPE_PREFIX, 21626) +HANDLE_BAT(APINT_TYPE_PREFIX, 21627) +HANDLE_BAT(APINT_TYPE_PREFIX, 21628) +HANDLE_BAT(APINT_TYPE_PREFIX, 21629) +HANDLE_BAT(APINT_TYPE_PREFIX, 21630) +HANDLE_BAT(APINT_TYPE_PREFIX, 21631) +HANDLE_BAT(APINT_TYPE_PREFIX, 21632) +HANDLE_BAT(APINT_TYPE_PREFIX, 21633) +HANDLE_BAT(APINT_TYPE_PREFIX, 21634) +HANDLE_BAT(APINT_TYPE_PREFIX, 21635) +HANDLE_BAT(APINT_TYPE_PREFIX, 21636) +HANDLE_BAT(APINT_TYPE_PREFIX, 21637) +HANDLE_BAT(APINT_TYPE_PREFIX, 21638) +HANDLE_BAT(APINT_TYPE_PREFIX, 21639) +HANDLE_BAT(APINT_TYPE_PREFIX, 21640) +HANDLE_BAT(APINT_TYPE_PREFIX, 21641) +HANDLE_BAT(APINT_TYPE_PREFIX, 21642) +HANDLE_BAT(APINT_TYPE_PREFIX, 21643) +HANDLE_BAT(APINT_TYPE_PREFIX, 21644) +HANDLE_BAT(APINT_TYPE_PREFIX, 21645) +HANDLE_BAT(APINT_TYPE_PREFIX, 21646) +HANDLE_BAT(APINT_TYPE_PREFIX, 21647) +HANDLE_BAT(APINT_TYPE_PREFIX, 21648) +HANDLE_BAT(APINT_TYPE_PREFIX, 21649) +HANDLE_BAT(APINT_TYPE_PREFIX, 21650) +HANDLE_BAT(APINT_TYPE_PREFIX, 21651) +HANDLE_BAT(APINT_TYPE_PREFIX, 21652) +HANDLE_BAT(APINT_TYPE_PREFIX, 21653) +HANDLE_BAT(APINT_TYPE_PREFIX, 21654) +HANDLE_BAT(APINT_TYPE_PREFIX, 21655) +HANDLE_BAT(APINT_TYPE_PREFIX, 21656) +HANDLE_BAT(APINT_TYPE_PREFIX, 21657) +HANDLE_BAT(APINT_TYPE_PREFIX, 21658) +HANDLE_BAT(APINT_TYPE_PREFIX, 21659) +HANDLE_BAT(APINT_TYPE_PREFIX, 21660) +HANDLE_BAT(APINT_TYPE_PREFIX, 21661) +HANDLE_BAT(APINT_TYPE_PREFIX, 21662) +HANDLE_BAT(APINT_TYPE_PREFIX, 21663) +HANDLE_BAT(APINT_TYPE_PREFIX, 21664) +HANDLE_BAT(APINT_TYPE_PREFIX, 21665) +HANDLE_BAT(APINT_TYPE_PREFIX, 21666) +HANDLE_BAT(APINT_TYPE_PREFIX, 21667) +HANDLE_BAT(APINT_TYPE_PREFIX, 21668) +HANDLE_BAT(APINT_TYPE_PREFIX, 21669) +HANDLE_BAT(APINT_TYPE_PREFIX, 21670) +HANDLE_BAT(APINT_TYPE_PREFIX, 21671) +HANDLE_BAT(APINT_TYPE_PREFIX, 21672) +HANDLE_BAT(APINT_TYPE_PREFIX, 21673) +HANDLE_BAT(APINT_TYPE_PREFIX, 21674) +HANDLE_BAT(APINT_TYPE_PREFIX, 21675) +HANDLE_BAT(APINT_TYPE_PREFIX, 21676) +HANDLE_BAT(APINT_TYPE_PREFIX, 21677) +HANDLE_BAT(APINT_TYPE_PREFIX, 21678) +HANDLE_BAT(APINT_TYPE_PREFIX, 21679) +HANDLE_BAT(APINT_TYPE_PREFIX, 21680) +HANDLE_BAT(APINT_TYPE_PREFIX, 21681) +HANDLE_BAT(APINT_TYPE_PREFIX, 21682) +HANDLE_BAT(APINT_TYPE_PREFIX, 21683) +HANDLE_BAT(APINT_TYPE_PREFIX, 21684) +HANDLE_BAT(APINT_TYPE_PREFIX, 21685) +HANDLE_BAT(APINT_TYPE_PREFIX, 21686) +HANDLE_BAT(APINT_TYPE_PREFIX, 21687) +HANDLE_BAT(APINT_TYPE_PREFIX, 21688) +HANDLE_BAT(APINT_TYPE_PREFIX, 21689) +HANDLE_BAT(APINT_TYPE_PREFIX, 21690) +HANDLE_BAT(APINT_TYPE_PREFIX, 21691) +HANDLE_BAT(APINT_TYPE_PREFIX, 21692) +HANDLE_BAT(APINT_TYPE_PREFIX, 21693) +HANDLE_BAT(APINT_TYPE_PREFIX, 21694) +HANDLE_BAT(APINT_TYPE_PREFIX, 21695) +HANDLE_BAT(APINT_TYPE_PREFIX, 21696) +HANDLE_BAT(APINT_TYPE_PREFIX, 21697) +HANDLE_BAT(APINT_TYPE_PREFIX, 21698) +HANDLE_BAT(APINT_TYPE_PREFIX, 21699) +HANDLE_BAT(APINT_TYPE_PREFIX, 21700) +HANDLE_BAT(APINT_TYPE_PREFIX, 21701) +HANDLE_BAT(APINT_TYPE_PREFIX, 21702) +HANDLE_BAT(APINT_TYPE_PREFIX, 21703) +HANDLE_BAT(APINT_TYPE_PREFIX, 21704) +HANDLE_BAT(APINT_TYPE_PREFIX, 21705) +HANDLE_BAT(APINT_TYPE_PREFIX, 21706) +HANDLE_BAT(APINT_TYPE_PREFIX, 21707) +HANDLE_BAT(APINT_TYPE_PREFIX, 21708) +HANDLE_BAT(APINT_TYPE_PREFIX, 21709) +HANDLE_BAT(APINT_TYPE_PREFIX, 21710) +HANDLE_BAT(APINT_TYPE_PREFIX, 21711) +HANDLE_BAT(APINT_TYPE_PREFIX, 21712) +HANDLE_BAT(APINT_TYPE_PREFIX, 21713) +HANDLE_BAT(APINT_TYPE_PREFIX, 21714) +HANDLE_BAT(APINT_TYPE_PREFIX, 21715) +HANDLE_BAT(APINT_TYPE_PREFIX, 21716) +HANDLE_BAT(APINT_TYPE_PREFIX, 21717) +HANDLE_BAT(APINT_TYPE_PREFIX, 21718) +HANDLE_BAT(APINT_TYPE_PREFIX, 21719) +HANDLE_BAT(APINT_TYPE_PREFIX, 21720) +HANDLE_BAT(APINT_TYPE_PREFIX, 21721) +HANDLE_BAT(APINT_TYPE_PREFIX, 21722) +HANDLE_BAT(APINT_TYPE_PREFIX, 21723) +HANDLE_BAT(APINT_TYPE_PREFIX, 21724) +HANDLE_BAT(APINT_TYPE_PREFIX, 21725) +HANDLE_BAT(APINT_TYPE_PREFIX, 21726) +HANDLE_BAT(APINT_TYPE_PREFIX, 21727) +HANDLE_BAT(APINT_TYPE_PREFIX, 21728) +HANDLE_BAT(APINT_TYPE_PREFIX, 21729) +HANDLE_BAT(APINT_TYPE_PREFIX, 21730) +HANDLE_BAT(APINT_TYPE_PREFIX, 21731) +HANDLE_BAT(APINT_TYPE_PREFIX, 21732) +HANDLE_BAT(APINT_TYPE_PREFIX, 21733) +HANDLE_BAT(APINT_TYPE_PREFIX, 21734) +HANDLE_BAT(APINT_TYPE_PREFIX, 21735) +HANDLE_BAT(APINT_TYPE_PREFIX, 21736) +HANDLE_BAT(APINT_TYPE_PREFIX, 21737) +HANDLE_BAT(APINT_TYPE_PREFIX, 21738) +HANDLE_BAT(APINT_TYPE_PREFIX, 21739) +HANDLE_BAT(APINT_TYPE_PREFIX, 21740) +HANDLE_BAT(APINT_TYPE_PREFIX, 21741) +HANDLE_BAT(APINT_TYPE_PREFIX, 21742) +HANDLE_BAT(APINT_TYPE_PREFIX, 21743) +HANDLE_BAT(APINT_TYPE_PREFIX, 21744) +HANDLE_BAT(APINT_TYPE_PREFIX, 21745) +HANDLE_BAT(APINT_TYPE_PREFIX, 21746) +HANDLE_BAT(APINT_TYPE_PREFIX, 21747) +HANDLE_BAT(APINT_TYPE_PREFIX, 21748) +HANDLE_BAT(APINT_TYPE_PREFIX, 21749) +HANDLE_BAT(APINT_TYPE_PREFIX, 21750) +HANDLE_BAT(APINT_TYPE_PREFIX, 21751) +HANDLE_BAT(APINT_TYPE_PREFIX, 21752) +HANDLE_BAT(APINT_TYPE_PREFIX, 21753) +HANDLE_BAT(APINT_TYPE_PREFIX, 21754) +HANDLE_BAT(APINT_TYPE_PREFIX, 21755) +HANDLE_BAT(APINT_TYPE_PREFIX, 21756) +HANDLE_BAT(APINT_TYPE_PREFIX, 21757) +HANDLE_BAT(APINT_TYPE_PREFIX, 21758) +HANDLE_BAT(APINT_TYPE_PREFIX, 21759) +HANDLE_BAT(APINT_TYPE_PREFIX, 21760) +HANDLE_BAT(APINT_TYPE_PREFIX, 21761) +HANDLE_BAT(APINT_TYPE_PREFIX, 21762) +HANDLE_BAT(APINT_TYPE_PREFIX, 21763) +HANDLE_BAT(APINT_TYPE_PREFIX, 21764) +HANDLE_BAT(APINT_TYPE_PREFIX, 21765) +HANDLE_BAT(APINT_TYPE_PREFIX, 21766) +HANDLE_BAT(APINT_TYPE_PREFIX, 21767) +HANDLE_BAT(APINT_TYPE_PREFIX, 21768) +HANDLE_BAT(APINT_TYPE_PREFIX, 21769) +HANDLE_BAT(APINT_TYPE_PREFIX, 21770) +HANDLE_BAT(APINT_TYPE_PREFIX, 21771) +HANDLE_BAT(APINT_TYPE_PREFIX, 21772) +HANDLE_BAT(APINT_TYPE_PREFIX, 21773) +HANDLE_BAT(APINT_TYPE_PREFIX, 21774) +HANDLE_BAT(APINT_TYPE_PREFIX, 21775) +HANDLE_BAT(APINT_TYPE_PREFIX, 21776) +HANDLE_BAT(APINT_TYPE_PREFIX, 21777) +HANDLE_BAT(APINT_TYPE_PREFIX, 21778) +HANDLE_BAT(APINT_TYPE_PREFIX, 21779) +HANDLE_BAT(APINT_TYPE_PREFIX, 21780) +HANDLE_BAT(APINT_TYPE_PREFIX, 21781) +HANDLE_BAT(APINT_TYPE_PREFIX, 21782) +HANDLE_BAT(APINT_TYPE_PREFIX, 21783) +HANDLE_BAT(APINT_TYPE_PREFIX, 21784) +HANDLE_BAT(APINT_TYPE_PREFIX, 21785) +HANDLE_BAT(APINT_TYPE_PREFIX, 21786) +HANDLE_BAT(APINT_TYPE_PREFIX, 21787) +HANDLE_BAT(APINT_TYPE_PREFIX, 21788) +HANDLE_BAT(APINT_TYPE_PREFIX, 21789) +HANDLE_BAT(APINT_TYPE_PREFIX, 21790) +HANDLE_BAT(APINT_TYPE_PREFIX, 21791) +HANDLE_BAT(APINT_TYPE_PREFIX, 21792) +HANDLE_BAT(APINT_TYPE_PREFIX, 21793) +HANDLE_BAT(APINT_TYPE_PREFIX, 21794) +HANDLE_BAT(APINT_TYPE_PREFIX, 21795) +HANDLE_BAT(APINT_TYPE_PREFIX, 21796) +HANDLE_BAT(APINT_TYPE_PREFIX, 21797) +HANDLE_BAT(APINT_TYPE_PREFIX, 21798) +HANDLE_BAT(APINT_TYPE_PREFIX, 21799) +HANDLE_BAT(APINT_TYPE_PREFIX, 21800) +HANDLE_BAT(APINT_TYPE_PREFIX, 21801) +HANDLE_BAT(APINT_TYPE_PREFIX, 21802) +HANDLE_BAT(APINT_TYPE_PREFIX, 21803) +HANDLE_BAT(APINT_TYPE_PREFIX, 21804) +HANDLE_BAT(APINT_TYPE_PREFIX, 21805) +HANDLE_BAT(APINT_TYPE_PREFIX, 21806) +HANDLE_BAT(APINT_TYPE_PREFIX, 21807) +HANDLE_BAT(APINT_TYPE_PREFIX, 21808) +HANDLE_BAT(APINT_TYPE_PREFIX, 21809) +HANDLE_BAT(APINT_TYPE_PREFIX, 21810) +HANDLE_BAT(APINT_TYPE_PREFIX, 21811) +HANDLE_BAT(APINT_TYPE_PREFIX, 21812) +HANDLE_BAT(APINT_TYPE_PREFIX, 21813) +HANDLE_BAT(APINT_TYPE_PREFIX, 21814) +HANDLE_BAT(APINT_TYPE_PREFIX, 21815) +HANDLE_BAT(APINT_TYPE_PREFIX, 21816) +HANDLE_BAT(APINT_TYPE_PREFIX, 21817) +HANDLE_BAT(APINT_TYPE_PREFIX, 21818) +HANDLE_BAT(APINT_TYPE_PREFIX, 21819) +HANDLE_BAT(APINT_TYPE_PREFIX, 21820) +HANDLE_BAT(APINT_TYPE_PREFIX, 21821) +HANDLE_BAT(APINT_TYPE_PREFIX, 21822) +HANDLE_BAT(APINT_TYPE_PREFIX, 21823) +HANDLE_BAT(APINT_TYPE_PREFIX, 21824) +HANDLE_BAT(APINT_TYPE_PREFIX, 21825) +HANDLE_BAT(APINT_TYPE_PREFIX, 21826) +HANDLE_BAT(APINT_TYPE_PREFIX, 21827) +HANDLE_BAT(APINT_TYPE_PREFIX, 21828) +HANDLE_BAT(APINT_TYPE_PREFIX, 21829) +HANDLE_BAT(APINT_TYPE_PREFIX, 21830) +HANDLE_BAT(APINT_TYPE_PREFIX, 21831) +HANDLE_BAT(APINT_TYPE_PREFIX, 21832) +HANDLE_BAT(APINT_TYPE_PREFIX, 21833) +HANDLE_BAT(APINT_TYPE_PREFIX, 21834) +HANDLE_BAT(APINT_TYPE_PREFIX, 21835) +HANDLE_BAT(APINT_TYPE_PREFIX, 21836) +HANDLE_BAT(APINT_TYPE_PREFIX, 21837) +HANDLE_BAT(APINT_TYPE_PREFIX, 21838) +HANDLE_BAT(APINT_TYPE_PREFIX, 21839) +HANDLE_BAT(APINT_TYPE_PREFIX, 21840) +HANDLE_BAT(APINT_TYPE_PREFIX, 21841) +HANDLE_BAT(APINT_TYPE_PREFIX, 21842) +HANDLE_BAT(APINT_TYPE_PREFIX, 21843) +HANDLE_BAT(APINT_TYPE_PREFIX, 21844) +HANDLE_BAT(APINT_TYPE_PREFIX, 21845) +HANDLE_BAT(APINT_TYPE_PREFIX, 21846) +HANDLE_BAT(APINT_TYPE_PREFIX, 21847) +HANDLE_BAT(APINT_TYPE_PREFIX, 21848) +HANDLE_BAT(APINT_TYPE_PREFIX, 21849) +HANDLE_BAT(APINT_TYPE_PREFIX, 21850) +HANDLE_BAT(APINT_TYPE_PREFIX, 21851) +HANDLE_BAT(APINT_TYPE_PREFIX, 21852) +HANDLE_BAT(APINT_TYPE_PREFIX, 21853) +HANDLE_BAT(APINT_TYPE_PREFIX, 21854) +HANDLE_BAT(APINT_TYPE_PREFIX, 21855) +HANDLE_BAT(APINT_TYPE_PREFIX, 21856) +HANDLE_BAT(APINT_TYPE_PREFIX, 21857) +HANDLE_BAT(APINT_TYPE_PREFIX, 21858) +HANDLE_BAT(APINT_TYPE_PREFIX, 21859) +HANDLE_BAT(APINT_TYPE_PREFIX, 21860) +HANDLE_BAT(APINT_TYPE_PREFIX, 21861) +HANDLE_BAT(APINT_TYPE_PREFIX, 21862) +HANDLE_BAT(APINT_TYPE_PREFIX, 21863) +HANDLE_BAT(APINT_TYPE_PREFIX, 21864) +HANDLE_BAT(APINT_TYPE_PREFIX, 21865) +HANDLE_BAT(APINT_TYPE_PREFIX, 21866) +HANDLE_BAT(APINT_TYPE_PREFIX, 21867) +HANDLE_BAT(APINT_TYPE_PREFIX, 21868) +HANDLE_BAT(APINT_TYPE_PREFIX, 21869) +HANDLE_BAT(APINT_TYPE_PREFIX, 21870) +HANDLE_BAT(APINT_TYPE_PREFIX, 21871) +HANDLE_BAT(APINT_TYPE_PREFIX, 21872) +HANDLE_BAT(APINT_TYPE_PREFIX, 21873) +HANDLE_BAT(APINT_TYPE_PREFIX, 21874) +HANDLE_BAT(APINT_TYPE_PREFIX, 21875) +HANDLE_BAT(APINT_TYPE_PREFIX, 21876) +HANDLE_BAT(APINT_TYPE_PREFIX, 21877) +HANDLE_BAT(APINT_TYPE_PREFIX, 21878) +HANDLE_BAT(APINT_TYPE_PREFIX, 21879) +HANDLE_BAT(APINT_TYPE_PREFIX, 21880) +HANDLE_BAT(APINT_TYPE_PREFIX, 21881) +HANDLE_BAT(APINT_TYPE_PREFIX, 21882) +HANDLE_BAT(APINT_TYPE_PREFIX, 21883) +HANDLE_BAT(APINT_TYPE_PREFIX, 21884) +HANDLE_BAT(APINT_TYPE_PREFIX, 21885) +HANDLE_BAT(APINT_TYPE_PREFIX, 21886) +HANDLE_BAT(APINT_TYPE_PREFIX, 21887) +HANDLE_BAT(APINT_TYPE_PREFIX, 21888) +HANDLE_BAT(APINT_TYPE_PREFIX, 21889) +HANDLE_BAT(APINT_TYPE_PREFIX, 21890) +HANDLE_BAT(APINT_TYPE_PREFIX, 21891) +HANDLE_BAT(APINT_TYPE_PREFIX, 21892) +HANDLE_BAT(APINT_TYPE_PREFIX, 21893) +HANDLE_BAT(APINT_TYPE_PREFIX, 21894) +HANDLE_BAT(APINT_TYPE_PREFIX, 21895) +HANDLE_BAT(APINT_TYPE_PREFIX, 21896) +HANDLE_BAT(APINT_TYPE_PREFIX, 21897) +HANDLE_BAT(APINT_TYPE_PREFIX, 21898) +HANDLE_BAT(APINT_TYPE_PREFIX, 21899) +HANDLE_BAT(APINT_TYPE_PREFIX, 21900) +HANDLE_BAT(APINT_TYPE_PREFIX, 21901) +HANDLE_BAT(APINT_TYPE_PREFIX, 21902) +HANDLE_BAT(APINT_TYPE_PREFIX, 21903) +HANDLE_BAT(APINT_TYPE_PREFIX, 21904) +HANDLE_BAT(APINT_TYPE_PREFIX, 21905) +HANDLE_BAT(APINT_TYPE_PREFIX, 21906) +HANDLE_BAT(APINT_TYPE_PREFIX, 21907) +HANDLE_BAT(APINT_TYPE_PREFIX, 21908) +HANDLE_BAT(APINT_TYPE_PREFIX, 21909) +HANDLE_BAT(APINT_TYPE_PREFIX, 21910) +HANDLE_BAT(APINT_TYPE_PREFIX, 21911) +HANDLE_BAT(APINT_TYPE_PREFIX, 21912) +HANDLE_BAT(APINT_TYPE_PREFIX, 21913) +HANDLE_BAT(APINT_TYPE_PREFIX, 21914) +HANDLE_BAT(APINT_TYPE_PREFIX, 21915) +HANDLE_BAT(APINT_TYPE_PREFIX, 21916) +HANDLE_BAT(APINT_TYPE_PREFIX, 21917) +HANDLE_BAT(APINT_TYPE_PREFIX, 21918) +HANDLE_BAT(APINT_TYPE_PREFIX, 21919) +HANDLE_BAT(APINT_TYPE_PREFIX, 21920) +HANDLE_BAT(APINT_TYPE_PREFIX, 21921) +HANDLE_BAT(APINT_TYPE_PREFIX, 21922) +HANDLE_BAT(APINT_TYPE_PREFIX, 21923) +HANDLE_BAT(APINT_TYPE_PREFIX, 21924) +HANDLE_BAT(APINT_TYPE_PREFIX, 21925) +HANDLE_BAT(APINT_TYPE_PREFIX, 21926) +HANDLE_BAT(APINT_TYPE_PREFIX, 21927) +HANDLE_BAT(APINT_TYPE_PREFIX, 21928) +HANDLE_BAT(APINT_TYPE_PREFIX, 21929) +HANDLE_BAT(APINT_TYPE_PREFIX, 21930) +HANDLE_BAT(APINT_TYPE_PREFIX, 21931) +HANDLE_BAT(APINT_TYPE_PREFIX, 21932) +HANDLE_BAT(APINT_TYPE_PREFIX, 21933) +HANDLE_BAT(APINT_TYPE_PREFIX, 21934) +HANDLE_BAT(APINT_TYPE_PREFIX, 21935) +HANDLE_BAT(APINT_TYPE_PREFIX, 21936) +HANDLE_BAT(APINT_TYPE_PREFIX, 21937) +HANDLE_BAT(APINT_TYPE_PREFIX, 21938) +HANDLE_BAT(APINT_TYPE_PREFIX, 21939) +HANDLE_BAT(APINT_TYPE_PREFIX, 21940) +HANDLE_BAT(APINT_TYPE_PREFIX, 21941) +HANDLE_BAT(APINT_TYPE_PREFIX, 21942) +HANDLE_BAT(APINT_TYPE_PREFIX, 21943) +HANDLE_BAT(APINT_TYPE_PREFIX, 21944) +HANDLE_BAT(APINT_TYPE_PREFIX, 21945) +HANDLE_BAT(APINT_TYPE_PREFIX, 21946) +HANDLE_BAT(APINT_TYPE_PREFIX, 21947) +HANDLE_BAT(APINT_TYPE_PREFIX, 21948) +HANDLE_BAT(APINT_TYPE_PREFIX, 21949) +HANDLE_BAT(APINT_TYPE_PREFIX, 21950) +HANDLE_BAT(APINT_TYPE_PREFIX, 21951) +HANDLE_BAT(APINT_TYPE_PREFIX, 21952) +HANDLE_BAT(APINT_TYPE_PREFIX, 21953) +HANDLE_BAT(APINT_TYPE_PREFIX, 21954) +HANDLE_BAT(APINT_TYPE_PREFIX, 21955) +HANDLE_BAT(APINT_TYPE_PREFIX, 21956) +HANDLE_BAT(APINT_TYPE_PREFIX, 21957) +HANDLE_BAT(APINT_TYPE_PREFIX, 21958) +HANDLE_BAT(APINT_TYPE_PREFIX, 21959) +HANDLE_BAT(APINT_TYPE_PREFIX, 21960) +HANDLE_BAT(APINT_TYPE_PREFIX, 21961) +HANDLE_BAT(APINT_TYPE_PREFIX, 21962) +HANDLE_BAT(APINT_TYPE_PREFIX, 21963) +HANDLE_BAT(APINT_TYPE_PREFIX, 21964) +HANDLE_BAT(APINT_TYPE_PREFIX, 21965) +HANDLE_BAT(APINT_TYPE_PREFIX, 21966) +HANDLE_BAT(APINT_TYPE_PREFIX, 21967) +HANDLE_BAT(APINT_TYPE_PREFIX, 21968) +HANDLE_BAT(APINT_TYPE_PREFIX, 21969) +HANDLE_BAT(APINT_TYPE_PREFIX, 21970) +HANDLE_BAT(APINT_TYPE_PREFIX, 21971) +HANDLE_BAT(APINT_TYPE_PREFIX, 21972) +HANDLE_BAT(APINT_TYPE_PREFIX, 21973) +HANDLE_BAT(APINT_TYPE_PREFIX, 21974) +HANDLE_BAT(APINT_TYPE_PREFIX, 21975) +HANDLE_BAT(APINT_TYPE_PREFIX, 21976) +HANDLE_BAT(APINT_TYPE_PREFIX, 21977) +HANDLE_BAT(APINT_TYPE_PREFIX, 21978) +HANDLE_BAT(APINT_TYPE_PREFIX, 21979) +HANDLE_BAT(APINT_TYPE_PREFIX, 21980) +HANDLE_BAT(APINT_TYPE_PREFIX, 21981) +HANDLE_BAT(APINT_TYPE_PREFIX, 21982) +HANDLE_BAT(APINT_TYPE_PREFIX, 21983) +HANDLE_BAT(APINT_TYPE_PREFIX, 21984) +HANDLE_BAT(APINT_TYPE_PREFIX, 21985) +HANDLE_BAT(APINT_TYPE_PREFIX, 21986) +HANDLE_BAT(APINT_TYPE_PREFIX, 21987) +HANDLE_BAT(APINT_TYPE_PREFIX, 21988) +HANDLE_BAT(APINT_TYPE_PREFIX, 21989) +HANDLE_BAT(APINT_TYPE_PREFIX, 21990) +HANDLE_BAT(APINT_TYPE_PREFIX, 21991) +HANDLE_BAT(APINT_TYPE_PREFIX, 21992) +HANDLE_BAT(APINT_TYPE_PREFIX, 21993) +HANDLE_BAT(APINT_TYPE_PREFIX, 21994) +HANDLE_BAT(APINT_TYPE_PREFIX, 21995) +HANDLE_BAT(APINT_TYPE_PREFIX, 21996) +HANDLE_BAT(APINT_TYPE_PREFIX, 21997) +HANDLE_BAT(APINT_TYPE_PREFIX, 21998) +HANDLE_BAT(APINT_TYPE_PREFIX, 21999) +HANDLE_BAT(APINT_TYPE_PREFIX, 22000) +HANDLE_BAT(APINT_TYPE_PREFIX, 22001) +HANDLE_BAT(APINT_TYPE_PREFIX, 22002) +HANDLE_BAT(APINT_TYPE_PREFIX, 22003) +HANDLE_BAT(APINT_TYPE_PREFIX, 22004) +HANDLE_BAT(APINT_TYPE_PREFIX, 22005) +HANDLE_BAT(APINT_TYPE_PREFIX, 22006) +HANDLE_BAT(APINT_TYPE_PREFIX, 22007) +HANDLE_BAT(APINT_TYPE_PREFIX, 22008) +HANDLE_BAT(APINT_TYPE_PREFIX, 22009) +HANDLE_BAT(APINT_TYPE_PREFIX, 22010) +HANDLE_BAT(APINT_TYPE_PREFIX, 22011) +HANDLE_BAT(APINT_TYPE_PREFIX, 22012) +HANDLE_BAT(APINT_TYPE_PREFIX, 22013) +HANDLE_BAT(APINT_TYPE_PREFIX, 22014) +HANDLE_BAT(APINT_TYPE_PREFIX, 22015) +HANDLE_BAT(APINT_TYPE_PREFIX, 22016) +HANDLE_BAT(APINT_TYPE_PREFIX, 22017) +HANDLE_BAT(APINT_TYPE_PREFIX, 22018) +HANDLE_BAT(APINT_TYPE_PREFIX, 22019) +HANDLE_BAT(APINT_TYPE_PREFIX, 22020) +HANDLE_BAT(APINT_TYPE_PREFIX, 22021) +HANDLE_BAT(APINT_TYPE_PREFIX, 22022) +HANDLE_BAT(APINT_TYPE_PREFIX, 22023) +HANDLE_BAT(APINT_TYPE_PREFIX, 22024) +HANDLE_BAT(APINT_TYPE_PREFIX, 22025) +HANDLE_BAT(APINT_TYPE_PREFIX, 22026) +HANDLE_BAT(APINT_TYPE_PREFIX, 22027) +HANDLE_BAT(APINT_TYPE_PREFIX, 22028) +HANDLE_BAT(APINT_TYPE_PREFIX, 22029) +HANDLE_BAT(APINT_TYPE_PREFIX, 22030) +HANDLE_BAT(APINT_TYPE_PREFIX, 22031) +HANDLE_BAT(APINT_TYPE_PREFIX, 22032) +HANDLE_BAT(APINT_TYPE_PREFIX, 22033) +HANDLE_BAT(APINT_TYPE_PREFIX, 22034) +HANDLE_BAT(APINT_TYPE_PREFIX, 22035) +HANDLE_BAT(APINT_TYPE_PREFIX, 22036) +HANDLE_BAT(APINT_TYPE_PREFIX, 22037) +HANDLE_BAT(APINT_TYPE_PREFIX, 22038) +HANDLE_BAT(APINT_TYPE_PREFIX, 22039) +HANDLE_BAT(APINT_TYPE_PREFIX, 22040) +HANDLE_BAT(APINT_TYPE_PREFIX, 22041) +HANDLE_BAT(APINT_TYPE_PREFIX, 22042) +HANDLE_BAT(APINT_TYPE_PREFIX, 22043) +HANDLE_BAT(APINT_TYPE_PREFIX, 22044) +HANDLE_BAT(APINT_TYPE_PREFIX, 22045) +HANDLE_BAT(APINT_TYPE_PREFIX, 22046) +HANDLE_BAT(APINT_TYPE_PREFIX, 22047) +HANDLE_BAT(APINT_TYPE_PREFIX, 22048) +HANDLE_BAT(APINT_TYPE_PREFIX, 22049) +HANDLE_BAT(APINT_TYPE_PREFIX, 22050) +HANDLE_BAT(APINT_TYPE_PREFIX, 22051) +HANDLE_BAT(APINT_TYPE_PREFIX, 22052) +HANDLE_BAT(APINT_TYPE_PREFIX, 22053) +HANDLE_BAT(APINT_TYPE_PREFIX, 22054) +HANDLE_BAT(APINT_TYPE_PREFIX, 22055) +HANDLE_BAT(APINT_TYPE_PREFIX, 22056) +HANDLE_BAT(APINT_TYPE_PREFIX, 22057) +HANDLE_BAT(APINT_TYPE_PREFIX, 22058) +HANDLE_BAT(APINT_TYPE_PREFIX, 22059) +HANDLE_BAT(APINT_TYPE_PREFIX, 22060) +HANDLE_BAT(APINT_TYPE_PREFIX, 22061) +HANDLE_BAT(APINT_TYPE_PREFIX, 22062) +HANDLE_BAT(APINT_TYPE_PREFIX, 22063) +HANDLE_BAT(APINT_TYPE_PREFIX, 22064) +HANDLE_BAT(APINT_TYPE_PREFIX, 22065) +HANDLE_BAT(APINT_TYPE_PREFIX, 22066) +HANDLE_BAT(APINT_TYPE_PREFIX, 22067) +HANDLE_BAT(APINT_TYPE_PREFIX, 22068) +HANDLE_BAT(APINT_TYPE_PREFIX, 22069) +HANDLE_BAT(APINT_TYPE_PREFIX, 22070) +HANDLE_BAT(APINT_TYPE_PREFIX, 22071) +HANDLE_BAT(APINT_TYPE_PREFIX, 22072) +HANDLE_BAT(APINT_TYPE_PREFIX, 22073) +HANDLE_BAT(APINT_TYPE_PREFIX, 22074) +HANDLE_BAT(APINT_TYPE_PREFIX, 22075) +HANDLE_BAT(APINT_TYPE_PREFIX, 22076) +HANDLE_BAT(APINT_TYPE_PREFIX, 22077) +HANDLE_BAT(APINT_TYPE_PREFIX, 22078) +HANDLE_BAT(APINT_TYPE_PREFIX, 22079) +HANDLE_BAT(APINT_TYPE_PREFIX, 22080) +HANDLE_BAT(APINT_TYPE_PREFIX, 22081) +HANDLE_BAT(APINT_TYPE_PREFIX, 22082) +HANDLE_BAT(APINT_TYPE_PREFIX, 22083) +HANDLE_BAT(APINT_TYPE_PREFIX, 22084) +HANDLE_BAT(APINT_TYPE_PREFIX, 22085) +HANDLE_BAT(APINT_TYPE_PREFIX, 22086) +HANDLE_BAT(APINT_TYPE_PREFIX, 22087) +HANDLE_BAT(APINT_TYPE_PREFIX, 22088) +HANDLE_BAT(APINT_TYPE_PREFIX, 22089) +HANDLE_BAT(APINT_TYPE_PREFIX, 22090) +HANDLE_BAT(APINT_TYPE_PREFIX, 22091) +HANDLE_BAT(APINT_TYPE_PREFIX, 22092) +HANDLE_BAT(APINT_TYPE_PREFIX, 22093) +HANDLE_BAT(APINT_TYPE_PREFIX, 22094) +HANDLE_BAT(APINT_TYPE_PREFIX, 22095) +HANDLE_BAT(APINT_TYPE_PREFIX, 22096) +HANDLE_BAT(APINT_TYPE_PREFIX, 22097) +HANDLE_BAT(APINT_TYPE_PREFIX, 22098) +HANDLE_BAT(APINT_TYPE_PREFIX, 22099) +HANDLE_BAT(APINT_TYPE_PREFIX, 22100) +HANDLE_BAT(APINT_TYPE_PREFIX, 22101) +HANDLE_BAT(APINT_TYPE_PREFIX, 22102) +HANDLE_BAT(APINT_TYPE_PREFIX, 22103) +HANDLE_BAT(APINT_TYPE_PREFIX, 22104) +HANDLE_BAT(APINT_TYPE_PREFIX, 22105) +HANDLE_BAT(APINT_TYPE_PREFIX, 22106) +HANDLE_BAT(APINT_TYPE_PREFIX, 22107) +HANDLE_BAT(APINT_TYPE_PREFIX, 22108) +HANDLE_BAT(APINT_TYPE_PREFIX, 22109) +HANDLE_BAT(APINT_TYPE_PREFIX, 22110) +HANDLE_BAT(APINT_TYPE_PREFIX, 22111) +HANDLE_BAT(APINT_TYPE_PREFIX, 22112) +HANDLE_BAT(APINT_TYPE_PREFIX, 22113) +HANDLE_BAT(APINT_TYPE_PREFIX, 22114) +HANDLE_BAT(APINT_TYPE_PREFIX, 22115) +HANDLE_BAT(APINT_TYPE_PREFIX, 22116) +HANDLE_BAT(APINT_TYPE_PREFIX, 22117) +HANDLE_BAT(APINT_TYPE_PREFIX, 22118) +HANDLE_BAT(APINT_TYPE_PREFIX, 22119) +HANDLE_BAT(APINT_TYPE_PREFIX, 22120) +HANDLE_BAT(APINT_TYPE_PREFIX, 22121) +HANDLE_BAT(APINT_TYPE_PREFIX, 22122) +HANDLE_BAT(APINT_TYPE_PREFIX, 22123) +HANDLE_BAT(APINT_TYPE_PREFIX, 22124) +HANDLE_BAT(APINT_TYPE_PREFIX, 22125) +HANDLE_BAT(APINT_TYPE_PREFIX, 22126) +HANDLE_BAT(APINT_TYPE_PREFIX, 22127) +HANDLE_BAT(APINT_TYPE_PREFIX, 22128) +HANDLE_BAT(APINT_TYPE_PREFIX, 22129) +HANDLE_BAT(APINT_TYPE_PREFIX, 22130) +HANDLE_BAT(APINT_TYPE_PREFIX, 22131) +HANDLE_BAT(APINT_TYPE_PREFIX, 22132) +HANDLE_BAT(APINT_TYPE_PREFIX, 22133) +HANDLE_BAT(APINT_TYPE_PREFIX, 22134) +HANDLE_BAT(APINT_TYPE_PREFIX, 22135) +HANDLE_BAT(APINT_TYPE_PREFIX, 22136) +HANDLE_BAT(APINT_TYPE_PREFIX, 22137) +HANDLE_BAT(APINT_TYPE_PREFIX, 22138) +HANDLE_BAT(APINT_TYPE_PREFIX, 22139) +HANDLE_BAT(APINT_TYPE_PREFIX, 22140) +HANDLE_BAT(APINT_TYPE_PREFIX, 22141) +HANDLE_BAT(APINT_TYPE_PREFIX, 22142) +HANDLE_BAT(APINT_TYPE_PREFIX, 22143) +HANDLE_BAT(APINT_TYPE_PREFIX, 22144) +HANDLE_BAT(APINT_TYPE_PREFIX, 22145) +HANDLE_BAT(APINT_TYPE_PREFIX, 22146) +HANDLE_BAT(APINT_TYPE_PREFIX, 22147) +HANDLE_BAT(APINT_TYPE_PREFIX, 22148) +HANDLE_BAT(APINT_TYPE_PREFIX, 22149) +HANDLE_BAT(APINT_TYPE_PREFIX, 22150) +HANDLE_BAT(APINT_TYPE_PREFIX, 22151) +HANDLE_BAT(APINT_TYPE_PREFIX, 22152) +HANDLE_BAT(APINT_TYPE_PREFIX, 22153) +HANDLE_BAT(APINT_TYPE_PREFIX, 22154) +HANDLE_BAT(APINT_TYPE_PREFIX, 22155) +HANDLE_BAT(APINT_TYPE_PREFIX, 22156) +HANDLE_BAT(APINT_TYPE_PREFIX, 22157) +HANDLE_BAT(APINT_TYPE_PREFIX, 22158) +HANDLE_BAT(APINT_TYPE_PREFIX, 22159) +HANDLE_BAT(APINT_TYPE_PREFIX, 22160) +HANDLE_BAT(APINT_TYPE_PREFIX, 22161) +HANDLE_BAT(APINT_TYPE_PREFIX, 22162) +HANDLE_BAT(APINT_TYPE_PREFIX, 22163) +HANDLE_BAT(APINT_TYPE_PREFIX, 22164) +HANDLE_BAT(APINT_TYPE_PREFIX, 22165) +HANDLE_BAT(APINT_TYPE_PREFIX, 22166) +HANDLE_BAT(APINT_TYPE_PREFIX, 22167) +HANDLE_BAT(APINT_TYPE_PREFIX, 22168) +HANDLE_BAT(APINT_TYPE_PREFIX, 22169) +HANDLE_BAT(APINT_TYPE_PREFIX, 22170) +HANDLE_BAT(APINT_TYPE_PREFIX, 22171) +HANDLE_BAT(APINT_TYPE_PREFIX, 22172) +HANDLE_BAT(APINT_TYPE_PREFIX, 22173) +HANDLE_BAT(APINT_TYPE_PREFIX, 22174) +HANDLE_BAT(APINT_TYPE_PREFIX, 22175) +HANDLE_BAT(APINT_TYPE_PREFIX, 22176) +HANDLE_BAT(APINT_TYPE_PREFIX, 22177) +HANDLE_BAT(APINT_TYPE_PREFIX, 22178) +HANDLE_BAT(APINT_TYPE_PREFIX, 22179) +HANDLE_BAT(APINT_TYPE_PREFIX, 22180) +HANDLE_BAT(APINT_TYPE_PREFIX, 22181) +HANDLE_BAT(APINT_TYPE_PREFIX, 22182) +HANDLE_BAT(APINT_TYPE_PREFIX, 22183) +HANDLE_BAT(APINT_TYPE_PREFIX, 22184) +HANDLE_BAT(APINT_TYPE_PREFIX, 22185) +HANDLE_BAT(APINT_TYPE_PREFIX, 22186) +HANDLE_BAT(APINT_TYPE_PREFIX, 22187) +HANDLE_BAT(APINT_TYPE_PREFIX, 22188) +HANDLE_BAT(APINT_TYPE_PREFIX, 22189) +HANDLE_BAT(APINT_TYPE_PREFIX, 22190) +HANDLE_BAT(APINT_TYPE_PREFIX, 22191) +HANDLE_BAT(APINT_TYPE_PREFIX, 22192) +HANDLE_BAT(APINT_TYPE_PREFIX, 22193) +HANDLE_BAT(APINT_TYPE_PREFIX, 22194) +HANDLE_BAT(APINT_TYPE_PREFIX, 22195) +HANDLE_BAT(APINT_TYPE_PREFIX, 22196) +HANDLE_BAT(APINT_TYPE_PREFIX, 22197) +HANDLE_BAT(APINT_TYPE_PREFIX, 22198) +HANDLE_BAT(APINT_TYPE_PREFIX, 22199) +HANDLE_BAT(APINT_TYPE_PREFIX, 22200) +HANDLE_BAT(APINT_TYPE_PREFIX, 22201) +HANDLE_BAT(APINT_TYPE_PREFIX, 22202) +HANDLE_BAT(APINT_TYPE_PREFIX, 22203) +HANDLE_BAT(APINT_TYPE_PREFIX, 22204) +HANDLE_BAT(APINT_TYPE_PREFIX, 22205) +HANDLE_BAT(APINT_TYPE_PREFIX, 22206) +HANDLE_BAT(APINT_TYPE_PREFIX, 22207) +HANDLE_BAT(APINT_TYPE_PREFIX, 22208) +HANDLE_BAT(APINT_TYPE_PREFIX, 22209) +HANDLE_BAT(APINT_TYPE_PREFIX, 22210) +HANDLE_BAT(APINT_TYPE_PREFIX, 22211) +HANDLE_BAT(APINT_TYPE_PREFIX, 22212) +HANDLE_BAT(APINT_TYPE_PREFIX, 22213) +HANDLE_BAT(APINT_TYPE_PREFIX, 22214) +HANDLE_BAT(APINT_TYPE_PREFIX, 22215) +HANDLE_BAT(APINT_TYPE_PREFIX, 22216) +HANDLE_BAT(APINT_TYPE_PREFIX, 22217) +HANDLE_BAT(APINT_TYPE_PREFIX, 22218) +HANDLE_BAT(APINT_TYPE_PREFIX, 22219) +HANDLE_BAT(APINT_TYPE_PREFIX, 22220) +HANDLE_BAT(APINT_TYPE_PREFIX, 22221) +HANDLE_BAT(APINT_TYPE_PREFIX, 22222) +HANDLE_BAT(APINT_TYPE_PREFIX, 22223) +HANDLE_BAT(APINT_TYPE_PREFIX, 22224) +HANDLE_BAT(APINT_TYPE_PREFIX, 22225) +HANDLE_BAT(APINT_TYPE_PREFIX, 22226) +HANDLE_BAT(APINT_TYPE_PREFIX, 22227) +HANDLE_BAT(APINT_TYPE_PREFIX, 22228) +HANDLE_BAT(APINT_TYPE_PREFIX, 22229) +HANDLE_BAT(APINT_TYPE_PREFIX, 22230) +HANDLE_BAT(APINT_TYPE_PREFIX, 22231) +HANDLE_BAT(APINT_TYPE_PREFIX, 22232) +HANDLE_BAT(APINT_TYPE_PREFIX, 22233) +HANDLE_BAT(APINT_TYPE_PREFIX, 22234) +HANDLE_BAT(APINT_TYPE_PREFIX, 22235) +HANDLE_BAT(APINT_TYPE_PREFIX, 22236) +HANDLE_BAT(APINT_TYPE_PREFIX, 22237) +HANDLE_BAT(APINT_TYPE_PREFIX, 22238) +HANDLE_BAT(APINT_TYPE_PREFIX, 22239) +HANDLE_BAT(APINT_TYPE_PREFIX, 22240) +HANDLE_BAT(APINT_TYPE_PREFIX, 22241) +HANDLE_BAT(APINT_TYPE_PREFIX, 22242) +HANDLE_BAT(APINT_TYPE_PREFIX, 22243) +HANDLE_BAT(APINT_TYPE_PREFIX, 22244) +HANDLE_BAT(APINT_TYPE_PREFIX, 22245) +HANDLE_BAT(APINT_TYPE_PREFIX, 22246) +HANDLE_BAT(APINT_TYPE_PREFIX, 22247) +HANDLE_BAT(APINT_TYPE_PREFIX, 22248) +HANDLE_BAT(APINT_TYPE_PREFIX, 22249) +HANDLE_BAT(APINT_TYPE_PREFIX, 22250) +HANDLE_BAT(APINT_TYPE_PREFIX, 22251) +HANDLE_BAT(APINT_TYPE_PREFIX, 22252) +HANDLE_BAT(APINT_TYPE_PREFIX, 22253) +HANDLE_BAT(APINT_TYPE_PREFIX, 22254) +HANDLE_BAT(APINT_TYPE_PREFIX, 22255) +HANDLE_BAT(APINT_TYPE_PREFIX, 22256) +HANDLE_BAT(APINT_TYPE_PREFIX, 22257) +HANDLE_BAT(APINT_TYPE_PREFIX, 22258) +HANDLE_BAT(APINT_TYPE_PREFIX, 22259) +HANDLE_BAT(APINT_TYPE_PREFIX, 22260) +HANDLE_BAT(APINT_TYPE_PREFIX, 22261) +HANDLE_BAT(APINT_TYPE_PREFIX, 22262) +HANDLE_BAT(APINT_TYPE_PREFIX, 22263) +HANDLE_BAT(APINT_TYPE_PREFIX, 22264) +HANDLE_BAT(APINT_TYPE_PREFIX, 22265) +HANDLE_BAT(APINT_TYPE_PREFIX, 22266) +HANDLE_BAT(APINT_TYPE_PREFIX, 22267) +HANDLE_BAT(APINT_TYPE_PREFIX, 22268) +HANDLE_BAT(APINT_TYPE_PREFIX, 22269) +HANDLE_BAT(APINT_TYPE_PREFIX, 22270) +HANDLE_BAT(APINT_TYPE_PREFIX, 22271) +HANDLE_BAT(APINT_TYPE_PREFIX, 22272) +HANDLE_BAT(APINT_TYPE_PREFIX, 22273) +HANDLE_BAT(APINT_TYPE_PREFIX, 22274) +HANDLE_BAT(APINT_TYPE_PREFIX, 22275) +HANDLE_BAT(APINT_TYPE_PREFIX, 22276) +HANDLE_BAT(APINT_TYPE_PREFIX, 22277) +HANDLE_BAT(APINT_TYPE_PREFIX, 22278) +HANDLE_BAT(APINT_TYPE_PREFIX, 22279) +HANDLE_BAT(APINT_TYPE_PREFIX, 22280) +HANDLE_BAT(APINT_TYPE_PREFIX, 22281) +HANDLE_BAT(APINT_TYPE_PREFIX, 22282) +HANDLE_BAT(APINT_TYPE_PREFIX, 22283) +HANDLE_BAT(APINT_TYPE_PREFIX, 22284) +HANDLE_BAT(APINT_TYPE_PREFIX, 22285) +HANDLE_BAT(APINT_TYPE_PREFIX, 22286) +HANDLE_BAT(APINT_TYPE_PREFIX, 22287) +HANDLE_BAT(APINT_TYPE_PREFIX, 22288) +HANDLE_BAT(APINT_TYPE_PREFIX, 22289) +HANDLE_BAT(APINT_TYPE_PREFIX, 22290) +HANDLE_BAT(APINT_TYPE_PREFIX, 22291) +HANDLE_BAT(APINT_TYPE_PREFIX, 22292) +HANDLE_BAT(APINT_TYPE_PREFIX, 22293) +HANDLE_BAT(APINT_TYPE_PREFIX, 22294) +HANDLE_BAT(APINT_TYPE_PREFIX, 22295) +HANDLE_BAT(APINT_TYPE_PREFIX, 22296) +HANDLE_BAT(APINT_TYPE_PREFIX, 22297) +HANDLE_BAT(APINT_TYPE_PREFIX, 22298) +HANDLE_BAT(APINT_TYPE_PREFIX, 22299) +HANDLE_BAT(APINT_TYPE_PREFIX, 22300) +HANDLE_BAT(APINT_TYPE_PREFIX, 22301) +HANDLE_BAT(APINT_TYPE_PREFIX, 22302) +HANDLE_BAT(APINT_TYPE_PREFIX, 22303) +HANDLE_BAT(APINT_TYPE_PREFIX, 22304) +HANDLE_BAT(APINT_TYPE_PREFIX, 22305) +HANDLE_BAT(APINT_TYPE_PREFIX, 22306) +HANDLE_BAT(APINT_TYPE_PREFIX, 22307) +HANDLE_BAT(APINT_TYPE_PREFIX, 22308) +HANDLE_BAT(APINT_TYPE_PREFIX, 22309) +HANDLE_BAT(APINT_TYPE_PREFIX, 22310) +HANDLE_BAT(APINT_TYPE_PREFIX, 22311) +HANDLE_BAT(APINT_TYPE_PREFIX, 22312) +HANDLE_BAT(APINT_TYPE_PREFIX, 22313) +HANDLE_BAT(APINT_TYPE_PREFIX, 22314) +HANDLE_BAT(APINT_TYPE_PREFIX, 22315) +HANDLE_BAT(APINT_TYPE_PREFIX, 22316) +HANDLE_BAT(APINT_TYPE_PREFIX, 22317) +HANDLE_BAT(APINT_TYPE_PREFIX, 22318) +HANDLE_BAT(APINT_TYPE_PREFIX, 22319) +HANDLE_BAT(APINT_TYPE_PREFIX, 22320) +HANDLE_BAT(APINT_TYPE_PREFIX, 22321) +HANDLE_BAT(APINT_TYPE_PREFIX, 22322) +HANDLE_BAT(APINT_TYPE_PREFIX, 22323) +HANDLE_BAT(APINT_TYPE_PREFIX, 22324) +HANDLE_BAT(APINT_TYPE_PREFIX, 22325) +HANDLE_BAT(APINT_TYPE_PREFIX, 22326) +HANDLE_BAT(APINT_TYPE_PREFIX, 22327) +HANDLE_BAT(APINT_TYPE_PREFIX, 22328) +HANDLE_BAT(APINT_TYPE_PREFIX, 22329) +HANDLE_BAT(APINT_TYPE_PREFIX, 22330) +HANDLE_BAT(APINT_TYPE_PREFIX, 22331) +HANDLE_BAT(APINT_TYPE_PREFIX, 22332) +HANDLE_BAT(APINT_TYPE_PREFIX, 22333) +HANDLE_BAT(APINT_TYPE_PREFIX, 22334) +HANDLE_BAT(APINT_TYPE_PREFIX, 22335) +HANDLE_BAT(APINT_TYPE_PREFIX, 22336) +HANDLE_BAT(APINT_TYPE_PREFIX, 22337) +HANDLE_BAT(APINT_TYPE_PREFIX, 22338) +HANDLE_BAT(APINT_TYPE_PREFIX, 22339) +HANDLE_BAT(APINT_TYPE_PREFIX, 22340) +HANDLE_BAT(APINT_TYPE_PREFIX, 22341) +HANDLE_BAT(APINT_TYPE_PREFIX, 22342) +HANDLE_BAT(APINT_TYPE_PREFIX, 22343) +HANDLE_BAT(APINT_TYPE_PREFIX, 22344) +HANDLE_BAT(APINT_TYPE_PREFIX, 22345) +HANDLE_BAT(APINT_TYPE_PREFIX, 22346) +HANDLE_BAT(APINT_TYPE_PREFIX, 22347) +HANDLE_BAT(APINT_TYPE_PREFIX, 22348) +HANDLE_BAT(APINT_TYPE_PREFIX, 22349) +HANDLE_BAT(APINT_TYPE_PREFIX, 22350) +HANDLE_BAT(APINT_TYPE_PREFIX, 22351) +HANDLE_BAT(APINT_TYPE_PREFIX, 22352) +HANDLE_BAT(APINT_TYPE_PREFIX, 22353) +HANDLE_BAT(APINT_TYPE_PREFIX, 22354) +HANDLE_BAT(APINT_TYPE_PREFIX, 22355) +HANDLE_BAT(APINT_TYPE_PREFIX, 22356) +HANDLE_BAT(APINT_TYPE_PREFIX, 22357) +HANDLE_BAT(APINT_TYPE_PREFIX, 22358) +HANDLE_BAT(APINT_TYPE_PREFIX, 22359) +HANDLE_BAT(APINT_TYPE_PREFIX, 22360) +HANDLE_BAT(APINT_TYPE_PREFIX, 22361) +HANDLE_BAT(APINT_TYPE_PREFIX, 22362) +HANDLE_BAT(APINT_TYPE_PREFIX, 22363) +HANDLE_BAT(APINT_TYPE_PREFIX, 22364) +HANDLE_BAT(APINT_TYPE_PREFIX, 22365) +HANDLE_BAT(APINT_TYPE_PREFIX, 22366) +HANDLE_BAT(APINT_TYPE_PREFIX, 22367) +HANDLE_BAT(APINT_TYPE_PREFIX, 22368) +HANDLE_BAT(APINT_TYPE_PREFIX, 22369) +HANDLE_BAT(APINT_TYPE_PREFIX, 22370) +HANDLE_BAT(APINT_TYPE_PREFIX, 22371) +HANDLE_BAT(APINT_TYPE_PREFIX, 22372) +HANDLE_BAT(APINT_TYPE_PREFIX, 22373) +HANDLE_BAT(APINT_TYPE_PREFIX, 22374) +HANDLE_BAT(APINT_TYPE_PREFIX, 22375) +HANDLE_BAT(APINT_TYPE_PREFIX, 22376) +HANDLE_BAT(APINT_TYPE_PREFIX, 22377) +HANDLE_BAT(APINT_TYPE_PREFIX, 22378) +HANDLE_BAT(APINT_TYPE_PREFIX, 22379) +HANDLE_BAT(APINT_TYPE_PREFIX, 22380) +HANDLE_BAT(APINT_TYPE_PREFIX, 22381) +HANDLE_BAT(APINT_TYPE_PREFIX, 22382) +HANDLE_BAT(APINT_TYPE_PREFIX, 22383) +HANDLE_BAT(APINT_TYPE_PREFIX, 22384) +HANDLE_BAT(APINT_TYPE_PREFIX, 22385) +HANDLE_BAT(APINT_TYPE_PREFIX, 22386) +HANDLE_BAT(APINT_TYPE_PREFIX, 22387) +HANDLE_BAT(APINT_TYPE_PREFIX, 22388) +HANDLE_BAT(APINT_TYPE_PREFIX, 22389) +HANDLE_BAT(APINT_TYPE_PREFIX, 22390) +HANDLE_BAT(APINT_TYPE_PREFIX, 22391) +HANDLE_BAT(APINT_TYPE_PREFIX, 22392) +HANDLE_BAT(APINT_TYPE_PREFIX, 22393) +HANDLE_BAT(APINT_TYPE_PREFIX, 22394) +HANDLE_BAT(APINT_TYPE_PREFIX, 22395) +HANDLE_BAT(APINT_TYPE_PREFIX, 22396) +HANDLE_BAT(APINT_TYPE_PREFIX, 22397) +HANDLE_BAT(APINT_TYPE_PREFIX, 22398) +HANDLE_BAT(APINT_TYPE_PREFIX, 22399) +HANDLE_BAT(APINT_TYPE_PREFIX, 22400) +HANDLE_BAT(APINT_TYPE_PREFIX, 22401) +HANDLE_BAT(APINT_TYPE_PREFIX, 22402) +HANDLE_BAT(APINT_TYPE_PREFIX, 22403) +HANDLE_BAT(APINT_TYPE_PREFIX, 22404) +HANDLE_BAT(APINT_TYPE_PREFIX, 22405) +HANDLE_BAT(APINT_TYPE_PREFIX, 22406) +HANDLE_BAT(APINT_TYPE_PREFIX, 22407) +HANDLE_BAT(APINT_TYPE_PREFIX, 22408) +HANDLE_BAT(APINT_TYPE_PREFIX, 22409) +HANDLE_BAT(APINT_TYPE_PREFIX, 22410) +HANDLE_BAT(APINT_TYPE_PREFIX, 22411) +HANDLE_BAT(APINT_TYPE_PREFIX, 22412) +HANDLE_BAT(APINT_TYPE_PREFIX, 22413) +HANDLE_BAT(APINT_TYPE_PREFIX, 22414) +HANDLE_BAT(APINT_TYPE_PREFIX, 22415) +HANDLE_BAT(APINT_TYPE_PREFIX, 22416) +HANDLE_BAT(APINT_TYPE_PREFIX, 22417) +HANDLE_BAT(APINT_TYPE_PREFIX, 22418) +HANDLE_BAT(APINT_TYPE_PREFIX, 22419) +HANDLE_BAT(APINT_TYPE_PREFIX, 22420) +HANDLE_BAT(APINT_TYPE_PREFIX, 22421) +HANDLE_BAT(APINT_TYPE_PREFIX, 22422) +HANDLE_BAT(APINT_TYPE_PREFIX, 22423) +HANDLE_BAT(APINT_TYPE_PREFIX, 22424) +HANDLE_BAT(APINT_TYPE_PREFIX, 22425) +HANDLE_BAT(APINT_TYPE_PREFIX, 22426) +HANDLE_BAT(APINT_TYPE_PREFIX, 22427) +HANDLE_BAT(APINT_TYPE_PREFIX, 22428) +HANDLE_BAT(APINT_TYPE_PREFIX, 22429) +HANDLE_BAT(APINT_TYPE_PREFIX, 22430) +HANDLE_BAT(APINT_TYPE_PREFIX, 22431) +HANDLE_BAT(APINT_TYPE_PREFIX, 22432) +HANDLE_BAT(APINT_TYPE_PREFIX, 22433) +HANDLE_BAT(APINT_TYPE_PREFIX, 22434) +HANDLE_BAT(APINT_TYPE_PREFIX, 22435) +HANDLE_BAT(APINT_TYPE_PREFIX, 22436) +HANDLE_BAT(APINT_TYPE_PREFIX, 22437) +HANDLE_BAT(APINT_TYPE_PREFIX, 22438) +HANDLE_BAT(APINT_TYPE_PREFIX, 22439) +HANDLE_BAT(APINT_TYPE_PREFIX, 22440) +HANDLE_BAT(APINT_TYPE_PREFIX, 22441) +HANDLE_BAT(APINT_TYPE_PREFIX, 22442) +HANDLE_BAT(APINT_TYPE_PREFIX, 22443) +HANDLE_BAT(APINT_TYPE_PREFIX, 22444) +HANDLE_BAT(APINT_TYPE_PREFIX, 22445) +HANDLE_BAT(APINT_TYPE_PREFIX, 22446) +HANDLE_BAT(APINT_TYPE_PREFIX, 22447) +HANDLE_BAT(APINT_TYPE_PREFIX, 22448) +HANDLE_BAT(APINT_TYPE_PREFIX, 22449) +HANDLE_BAT(APINT_TYPE_PREFIX, 22450) +HANDLE_BAT(APINT_TYPE_PREFIX, 22451) +HANDLE_BAT(APINT_TYPE_PREFIX, 22452) +HANDLE_BAT(APINT_TYPE_PREFIX, 22453) +HANDLE_BAT(APINT_TYPE_PREFIX, 22454) +HANDLE_BAT(APINT_TYPE_PREFIX, 22455) +HANDLE_BAT(APINT_TYPE_PREFIX, 22456) +HANDLE_BAT(APINT_TYPE_PREFIX, 22457) +HANDLE_BAT(APINT_TYPE_PREFIX, 22458) +HANDLE_BAT(APINT_TYPE_PREFIX, 22459) +HANDLE_BAT(APINT_TYPE_PREFIX, 22460) +HANDLE_BAT(APINT_TYPE_PREFIX, 22461) +HANDLE_BAT(APINT_TYPE_PREFIX, 22462) +HANDLE_BAT(APINT_TYPE_PREFIX, 22463) +HANDLE_BAT(APINT_TYPE_PREFIX, 22464) +HANDLE_BAT(APINT_TYPE_PREFIX, 22465) +HANDLE_BAT(APINT_TYPE_PREFIX, 22466) +HANDLE_BAT(APINT_TYPE_PREFIX, 22467) +HANDLE_BAT(APINT_TYPE_PREFIX, 22468) +HANDLE_BAT(APINT_TYPE_PREFIX, 22469) +HANDLE_BAT(APINT_TYPE_PREFIX, 22470) +HANDLE_BAT(APINT_TYPE_PREFIX, 22471) +HANDLE_BAT(APINT_TYPE_PREFIX, 22472) +HANDLE_BAT(APINT_TYPE_PREFIX, 22473) +HANDLE_BAT(APINT_TYPE_PREFIX, 22474) +HANDLE_BAT(APINT_TYPE_PREFIX, 22475) +HANDLE_BAT(APINT_TYPE_PREFIX, 22476) +HANDLE_BAT(APINT_TYPE_PREFIX, 22477) +HANDLE_BAT(APINT_TYPE_PREFIX, 22478) +HANDLE_BAT(APINT_TYPE_PREFIX, 22479) +HANDLE_BAT(APINT_TYPE_PREFIX, 22480) +HANDLE_BAT(APINT_TYPE_PREFIX, 22481) +HANDLE_BAT(APINT_TYPE_PREFIX, 22482) +HANDLE_BAT(APINT_TYPE_PREFIX, 22483) +HANDLE_BAT(APINT_TYPE_PREFIX, 22484) +HANDLE_BAT(APINT_TYPE_PREFIX, 22485) +HANDLE_BAT(APINT_TYPE_PREFIX, 22486) +HANDLE_BAT(APINT_TYPE_PREFIX, 22487) +HANDLE_BAT(APINT_TYPE_PREFIX, 22488) +HANDLE_BAT(APINT_TYPE_PREFIX, 22489) +HANDLE_BAT(APINT_TYPE_PREFIX, 22490) +HANDLE_BAT(APINT_TYPE_PREFIX, 22491) +HANDLE_BAT(APINT_TYPE_PREFIX, 22492) +HANDLE_BAT(APINT_TYPE_PREFIX, 22493) +HANDLE_BAT(APINT_TYPE_PREFIX, 22494) +HANDLE_BAT(APINT_TYPE_PREFIX, 22495) +HANDLE_BAT(APINT_TYPE_PREFIX, 22496) +HANDLE_BAT(APINT_TYPE_PREFIX, 22497) +HANDLE_BAT(APINT_TYPE_PREFIX, 22498) +HANDLE_BAT(APINT_TYPE_PREFIX, 22499) +HANDLE_BAT(APINT_TYPE_PREFIX, 22500) +HANDLE_BAT(APINT_TYPE_PREFIX, 22501) +HANDLE_BAT(APINT_TYPE_PREFIX, 22502) +HANDLE_BAT(APINT_TYPE_PREFIX, 22503) +HANDLE_BAT(APINT_TYPE_PREFIX, 22504) +HANDLE_BAT(APINT_TYPE_PREFIX, 22505) +HANDLE_BAT(APINT_TYPE_PREFIX, 22506) +HANDLE_BAT(APINT_TYPE_PREFIX, 22507) +HANDLE_BAT(APINT_TYPE_PREFIX, 22508) +HANDLE_BAT(APINT_TYPE_PREFIX, 22509) +HANDLE_BAT(APINT_TYPE_PREFIX, 22510) +HANDLE_BAT(APINT_TYPE_PREFIX, 22511) +HANDLE_BAT(APINT_TYPE_PREFIX, 22512) +HANDLE_BAT(APINT_TYPE_PREFIX, 22513) +HANDLE_BAT(APINT_TYPE_PREFIX, 22514) +HANDLE_BAT(APINT_TYPE_PREFIX, 22515) +HANDLE_BAT(APINT_TYPE_PREFIX, 22516) +HANDLE_BAT(APINT_TYPE_PREFIX, 22517) +HANDLE_BAT(APINT_TYPE_PREFIX, 22518) +HANDLE_BAT(APINT_TYPE_PREFIX, 22519) +HANDLE_BAT(APINT_TYPE_PREFIX, 22520) +HANDLE_BAT(APINT_TYPE_PREFIX, 22521) +HANDLE_BAT(APINT_TYPE_PREFIX, 22522) +HANDLE_BAT(APINT_TYPE_PREFIX, 22523) +HANDLE_BAT(APINT_TYPE_PREFIX, 22524) +HANDLE_BAT(APINT_TYPE_PREFIX, 22525) +HANDLE_BAT(APINT_TYPE_PREFIX, 22526) +HANDLE_BAT(APINT_TYPE_PREFIX, 22527) +HANDLE_BAT(APINT_TYPE_PREFIX, 22528) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 22 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 22529) +HANDLE_BAT(, 22530) +HANDLE_BAT(, 22531) +HANDLE_BAT(, 22532) +HANDLE_BAT(, 22533) +HANDLE_BAT(, 22534) +HANDLE_BAT(, 22535) +HANDLE_BAT(, 22536) +HANDLE_BAT(, 22537) +HANDLE_BAT(, 22538) +HANDLE_BAT(, 22539) +HANDLE_BAT(, 22540) +HANDLE_BAT(, 22541) +HANDLE_BAT(, 22542) +HANDLE_BAT(, 22543) +HANDLE_BAT(, 22544) +HANDLE_BAT(, 22545) +HANDLE_BAT(, 22546) +HANDLE_BAT(, 22547) +HANDLE_BAT(, 22548) +HANDLE_BAT(, 22549) +HANDLE_BAT(, 22550) +HANDLE_BAT(, 22551) +HANDLE_BAT(, 22552) +HANDLE_BAT(, 22553) +HANDLE_BAT(, 22554) +HANDLE_BAT(, 22555) +HANDLE_BAT(, 22556) +HANDLE_BAT(, 22557) +HANDLE_BAT(, 22558) +HANDLE_BAT(, 22559) +HANDLE_BAT(, 22560) +HANDLE_BAT(, 22561) +HANDLE_BAT(, 22562) +HANDLE_BAT(, 22563) +HANDLE_BAT(, 22564) +HANDLE_BAT(, 22565) +HANDLE_BAT(, 22566) +HANDLE_BAT(, 22567) +HANDLE_BAT(, 22568) +HANDLE_BAT(, 22569) +HANDLE_BAT(, 22570) +HANDLE_BAT(, 22571) +HANDLE_BAT(, 22572) +HANDLE_BAT(, 22573) +HANDLE_BAT(, 22574) +HANDLE_BAT(, 22575) +HANDLE_BAT(, 22576) +HANDLE_BAT(, 22577) +HANDLE_BAT(, 22578) +HANDLE_BAT(, 22579) +HANDLE_BAT(, 22580) +HANDLE_BAT(, 22581) +HANDLE_BAT(, 22582) +HANDLE_BAT(, 22583) +HANDLE_BAT(, 22584) +HANDLE_BAT(, 22585) +HANDLE_BAT(, 22586) +HANDLE_BAT(, 22587) +HANDLE_BAT(, 22588) +HANDLE_BAT(, 22589) +HANDLE_BAT(, 22590) +HANDLE_BAT(, 22591) +HANDLE_BAT(, 22592) +HANDLE_BAT(, 22593) +HANDLE_BAT(, 22594) +HANDLE_BAT(, 22595) +HANDLE_BAT(, 22596) +HANDLE_BAT(, 22597) +HANDLE_BAT(, 22598) +HANDLE_BAT(, 22599) +HANDLE_BAT(, 22600) +HANDLE_BAT(, 22601) +HANDLE_BAT(, 22602) +HANDLE_BAT(, 22603) +HANDLE_BAT(, 22604) +HANDLE_BAT(, 22605) +HANDLE_BAT(, 22606) +HANDLE_BAT(, 22607) +HANDLE_BAT(, 22608) +HANDLE_BAT(, 22609) +HANDLE_BAT(, 22610) +HANDLE_BAT(, 22611) +HANDLE_BAT(, 22612) +HANDLE_BAT(, 22613) +HANDLE_BAT(, 22614) +HANDLE_BAT(, 22615) +HANDLE_BAT(, 22616) +HANDLE_BAT(, 22617) +HANDLE_BAT(, 22618) +HANDLE_BAT(, 22619) +HANDLE_BAT(, 22620) +HANDLE_BAT(, 22621) +HANDLE_BAT(, 22622) +HANDLE_BAT(, 22623) +HANDLE_BAT(, 22624) +HANDLE_BAT(, 22625) +HANDLE_BAT(, 22626) +HANDLE_BAT(, 22627) +HANDLE_BAT(, 22628) +HANDLE_BAT(, 22629) +HANDLE_BAT(, 22630) +HANDLE_BAT(, 22631) +HANDLE_BAT(, 22632) +HANDLE_BAT(, 22633) +HANDLE_BAT(, 22634) +HANDLE_BAT(, 22635) +HANDLE_BAT(, 22636) +HANDLE_BAT(, 22637) +HANDLE_BAT(, 22638) +HANDLE_BAT(, 22639) +HANDLE_BAT(, 22640) +HANDLE_BAT(, 22641) +HANDLE_BAT(, 22642) +HANDLE_BAT(, 22643) +HANDLE_BAT(, 22644) +HANDLE_BAT(, 22645) +HANDLE_BAT(, 22646) +HANDLE_BAT(, 22647) +HANDLE_BAT(, 22648) +HANDLE_BAT(, 22649) +HANDLE_BAT(, 22650) +HANDLE_BAT(, 22651) +HANDLE_BAT(, 22652) +HANDLE_BAT(, 22653) +HANDLE_BAT(, 22654) +HANDLE_BAT(, 22655) +HANDLE_BAT(, 22656) +HANDLE_BAT(, 22657) +HANDLE_BAT(, 22658) +HANDLE_BAT(, 22659) +HANDLE_BAT(, 22660) +HANDLE_BAT(, 22661) +HANDLE_BAT(, 22662) +HANDLE_BAT(, 22663) +HANDLE_BAT(, 22664) +HANDLE_BAT(, 22665) +HANDLE_BAT(, 22666) +HANDLE_BAT(, 22667) +HANDLE_BAT(, 22668) +HANDLE_BAT(, 22669) +HANDLE_BAT(, 22670) +HANDLE_BAT(, 22671) +HANDLE_BAT(, 22672) +HANDLE_BAT(, 22673) +HANDLE_BAT(, 22674) +HANDLE_BAT(, 22675) +HANDLE_BAT(, 22676) +HANDLE_BAT(, 22677) +HANDLE_BAT(, 22678) +HANDLE_BAT(, 22679) +HANDLE_BAT(, 22680) +HANDLE_BAT(, 22681) +HANDLE_BAT(, 22682) +HANDLE_BAT(, 22683) +HANDLE_BAT(, 22684) +HANDLE_BAT(, 22685) +HANDLE_BAT(, 22686) +HANDLE_BAT(, 22687) +HANDLE_BAT(, 22688) +HANDLE_BAT(, 22689) +HANDLE_BAT(, 22690) +HANDLE_BAT(, 22691) +HANDLE_BAT(, 22692) +HANDLE_BAT(, 22693) +HANDLE_BAT(, 22694) +HANDLE_BAT(, 22695) +HANDLE_BAT(, 22696) +HANDLE_BAT(, 22697) +HANDLE_BAT(, 22698) +HANDLE_BAT(, 22699) +HANDLE_BAT(, 22700) +HANDLE_BAT(, 22701) +HANDLE_BAT(, 22702) +HANDLE_BAT(, 22703) +HANDLE_BAT(, 22704) +HANDLE_BAT(, 22705) +HANDLE_BAT(, 22706) +HANDLE_BAT(, 22707) +HANDLE_BAT(, 22708) +HANDLE_BAT(, 22709) +HANDLE_BAT(, 22710) +HANDLE_BAT(, 22711) +HANDLE_BAT(, 22712) +HANDLE_BAT(, 22713) +HANDLE_BAT(, 22714) +HANDLE_BAT(, 22715) +HANDLE_BAT(, 22716) +HANDLE_BAT(, 22717) +HANDLE_BAT(, 22718) +HANDLE_BAT(, 22719) +HANDLE_BAT(, 22720) +HANDLE_BAT(, 22721) +HANDLE_BAT(, 22722) +HANDLE_BAT(, 22723) +HANDLE_BAT(, 22724) +HANDLE_BAT(, 22725) +HANDLE_BAT(, 22726) +HANDLE_BAT(, 22727) +HANDLE_BAT(, 22728) +HANDLE_BAT(, 22729) +HANDLE_BAT(, 22730) +HANDLE_BAT(, 22731) +HANDLE_BAT(, 22732) +HANDLE_BAT(, 22733) +HANDLE_BAT(, 22734) +HANDLE_BAT(, 22735) +HANDLE_BAT(, 22736) +HANDLE_BAT(, 22737) +HANDLE_BAT(, 22738) +HANDLE_BAT(, 22739) +HANDLE_BAT(, 22740) +HANDLE_BAT(, 22741) +HANDLE_BAT(, 22742) +HANDLE_BAT(, 22743) +HANDLE_BAT(, 22744) +HANDLE_BAT(, 22745) +HANDLE_BAT(, 22746) +HANDLE_BAT(, 22747) +HANDLE_BAT(, 22748) +HANDLE_BAT(, 22749) +HANDLE_BAT(, 22750) +HANDLE_BAT(, 22751) +HANDLE_BAT(, 22752) +HANDLE_BAT(, 22753) +HANDLE_BAT(, 22754) +HANDLE_BAT(, 22755) +HANDLE_BAT(, 22756) +HANDLE_BAT(, 22757) +HANDLE_BAT(, 22758) +HANDLE_BAT(, 22759) +HANDLE_BAT(, 22760) +HANDLE_BAT(, 22761) +HANDLE_BAT(, 22762) +HANDLE_BAT(, 22763) +HANDLE_BAT(, 22764) +HANDLE_BAT(, 22765) +HANDLE_BAT(, 22766) +HANDLE_BAT(, 22767) +HANDLE_BAT(, 22768) +HANDLE_BAT(, 22769) +HANDLE_BAT(, 22770) +HANDLE_BAT(, 22771) +HANDLE_BAT(, 22772) +HANDLE_BAT(, 22773) +HANDLE_BAT(, 22774) +HANDLE_BAT(, 22775) +HANDLE_BAT(, 22776) +HANDLE_BAT(, 22777) +HANDLE_BAT(, 22778) +HANDLE_BAT(, 22779) +HANDLE_BAT(, 22780) +HANDLE_BAT(, 22781) +HANDLE_BAT(, 22782) +HANDLE_BAT(, 22783) +HANDLE_BAT(, 22784) +HANDLE_BAT(, 22785) +HANDLE_BAT(, 22786) +HANDLE_BAT(, 22787) +HANDLE_BAT(, 22788) +HANDLE_BAT(, 22789) +HANDLE_BAT(, 22790) +HANDLE_BAT(, 22791) +HANDLE_BAT(, 22792) +HANDLE_BAT(, 22793) +HANDLE_BAT(, 22794) +HANDLE_BAT(, 22795) +HANDLE_BAT(, 22796) +HANDLE_BAT(, 22797) +HANDLE_BAT(, 22798) +HANDLE_BAT(, 22799) +HANDLE_BAT(, 22800) +HANDLE_BAT(, 22801) +HANDLE_BAT(, 22802) +HANDLE_BAT(, 22803) +HANDLE_BAT(, 22804) +HANDLE_BAT(, 22805) +HANDLE_BAT(, 22806) +HANDLE_BAT(, 22807) +HANDLE_BAT(, 22808) +HANDLE_BAT(, 22809) +HANDLE_BAT(, 22810) +HANDLE_BAT(, 22811) +HANDLE_BAT(, 22812) +HANDLE_BAT(, 22813) +HANDLE_BAT(, 22814) +HANDLE_BAT(, 22815) +HANDLE_BAT(, 22816) +HANDLE_BAT(, 22817) +HANDLE_BAT(, 22818) +HANDLE_BAT(, 22819) +HANDLE_BAT(, 22820) +HANDLE_BAT(, 22821) +HANDLE_BAT(, 22822) +HANDLE_BAT(, 22823) +HANDLE_BAT(, 22824) +HANDLE_BAT(, 22825) +HANDLE_BAT(, 22826) +HANDLE_BAT(, 22827) +HANDLE_BAT(, 22828) +HANDLE_BAT(, 22829) +HANDLE_BAT(, 22830) +HANDLE_BAT(, 22831) +HANDLE_BAT(, 22832) +HANDLE_BAT(, 22833) +HANDLE_BAT(, 22834) +HANDLE_BAT(, 22835) +HANDLE_BAT(, 22836) +HANDLE_BAT(, 22837) +HANDLE_BAT(, 22838) +HANDLE_BAT(, 22839) +HANDLE_BAT(, 22840) +HANDLE_BAT(, 22841) +HANDLE_BAT(, 22842) +HANDLE_BAT(, 22843) +HANDLE_BAT(, 22844) +HANDLE_BAT(, 22845) +HANDLE_BAT(, 22846) +HANDLE_BAT(, 22847) +HANDLE_BAT(, 22848) +HANDLE_BAT(, 22849) +HANDLE_BAT(, 22850) +HANDLE_BAT(, 22851) +HANDLE_BAT(, 22852) +HANDLE_BAT(, 22853) +HANDLE_BAT(, 22854) +HANDLE_BAT(, 22855) +HANDLE_BAT(, 22856) +HANDLE_BAT(, 22857) +HANDLE_BAT(, 22858) +HANDLE_BAT(, 22859) +HANDLE_BAT(, 22860) +HANDLE_BAT(, 22861) +HANDLE_BAT(, 22862) +HANDLE_BAT(, 22863) +HANDLE_BAT(, 22864) +HANDLE_BAT(, 22865) +HANDLE_BAT(, 22866) +HANDLE_BAT(, 22867) +HANDLE_BAT(, 22868) +HANDLE_BAT(, 22869) +HANDLE_BAT(, 22870) +HANDLE_BAT(, 22871) +HANDLE_BAT(, 22872) +HANDLE_BAT(, 22873) +HANDLE_BAT(, 22874) +HANDLE_BAT(, 22875) +HANDLE_BAT(, 22876) +HANDLE_BAT(, 22877) +HANDLE_BAT(, 22878) +HANDLE_BAT(, 22879) +HANDLE_BAT(, 22880) +HANDLE_BAT(, 22881) +HANDLE_BAT(, 22882) +HANDLE_BAT(, 22883) +HANDLE_BAT(, 22884) +HANDLE_BAT(, 22885) +HANDLE_BAT(, 22886) +HANDLE_BAT(, 22887) +HANDLE_BAT(, 22888) +HANDLE_BAT(, 22889) +HANDLE_BAT(, 22890) +HANDLE_BAT(, 22891) +HANDLE_BAT(, 22892) +HANDLE_BAT(, 22893) +HANDLE_BAT(, 22894) +HANDLE_BAT(, 22895) +HANDLE_BAT(, 22896) +HANDLE_BAT(, 22897) +HANDLE_BAT(, 22898) +HANDLE_BAT(, 22899) +HANDLE_BAT(, 22900) +HANDLE_BAT(, 22901) +HANDLE_BAT(, 22902) +HANDLE_BAT(, 22903) +HANDLE_BAT(, 22904) +HANDLE_BAT(, 22905) +HANDLE_BAT(, 22906) +HANDLE_BAT(, 22907) +HANDLE_BAT(, 22908) +HANDLE_BAT(, 22909) +HANDLE_BAT(, 22910) +HANDLE_BAT(, 22911) +HANDLE_BAT(, 22912) +HANDLE_BAT(, 22913) +HANDLE_BAT(, 22914) +HANDLE_BAT(, 22915) +HANDLE_BAT(, 22916) +HANDLE_BAT(, 22917) +HANDLE_BAT(, 22918) +HANDLE_BAT(, 22919) +HANDLE_BAT(, 22920) +HANDLE_BAT(, 22921) +HANDLE_BAT(, 22922) +HANDLE_BAT(, 22923) +HANDLE_BAT(, 22924) +HANDLE_BAT(, 22925) +HANDLE_BAT(, 22926) +HANDLE_BAT(, 22927) +HANDLE_BAT(, 22928) +HANDLE_BAT(, 22929) +HANDLE_BAT(, 22930) +HANDLE_BAT(, 22931) +HANDLE_BAT(, 22932) +HANDLE_BAT(, 22933) +HANDLE_BAT(, 22934) +HANDLE_BAT(, 22935) +HANDLE_BAT(, 22936) +HANDLE_BAT(, 22937) +HANDLE_BAT(, 22938) +HANDLE_BAT(, 22939) +HANDLE_BAT(, 22940) +HANDLE_BAT(, 22941) +HANDLE_BAT(, 22942) +HANDLE_BAT(, 22943) +HANDLE_BAT(, 22944) +HANDLE_BAT(, 22945) +HANDLE_BAT(, 22946) +HANDLE_BAT(, 22947) +HANDLE_BAT(, 22948) +HANDLE_BAT(, 22949) +HANDLE_BAT(, 22950) +HANDLE_BAT(, 22951) +HANDLE_BAT(, 22952) +HANDLE_BAT(, 22953) +HANDLE_BAT(, 22954) +HANDLE_BAT(, 22955) +HANDLE_BAT(, 22956) +HANDLE_BAT(, 22957) +HANDLE_BAT(, 22958) +HANDLE_BAT(, 22959) +HANDLE_BAT(, 22960) +HANDLE_BAT(, 22961) +HANDLE_BAT(, 22962) +HANDLE_BAT(, 22963) +HANDLE_BAT(, 22964) +HANDLE_BAT(, 22965) +HANDLE_BAT(, 22966) +HANDLE_BAT(, 22967) +HANDLE_BAT(, 22968) +HANDLE_BAT(, 22969) +HANDLE_BAT(, 22970) +HANDLE_BAT(, 22971) +HANDLE_BAT(, 22972) +HANDLE_BAT(, 22973) +HANDLE_BAT(, 22974) +HANDLE_BAT(, 22975) +HANDLE_BAT(, 22976) +HANDLE_BAT(, 22977) +HANDLE_BAT(, 22978) +HANDLE_BAT(, 22979) +HANDLE_BAT(, 22980) +HANDLE_BAT(, 22981) +HANDLE_BAT(, 22982) +HANDLE_BAT(, 22983) +HANDLE_BAT(, 22984) +HANDLE_BAT(, 22985) +HANDLE_BAT(, 22986) +HANDLE_BAT(, 22987) +HANDLE_BAT(, 22988) +HANDLE_BAT(, 22989) +HANDLE_BAT(, 22990) +HANDLE_BAT(, 22991) +HANDLE_BAT(, 22992) +HANDLE_BAT(, 22993) +HANDLE_BAT(, 22994) +HANDLE_BAT(, 22995) +HANDLE_BAT(, 22996) +HANDLE_BAT(, 22997) +HANDLE_BAT(, 22998) +HANDLE_BAT(, 22999) +HANDLE_BAT(, 23000) +HANDLE_BAT(, 23001) +HANDLE_BAT(, 23002) +HANDLE_BAT(, 23003) +HANDLE_BAT(, 23004) +HANDLE_BAT(, 23005) +HANDLE_BAT(, 23006) +HANDLE_BAT(, 23007) +HANDLE_BAT(, 23008) +HANDLE_BAT(, 23009) +HANDLE_BAT(, 23010) +HANDLE_BAT(, 23011) +HANDLE_BAT(, 23012) +HANDLE_BAT(, 23013) +HANDLE_BAT(, 23014) +HANDLE_BAT(, 23015) +HANDLE_BAT(, 23016) +HANDLE_BAT(, 23017) +HANDLE_BAT(, 23018) +HANDLE_BAT(, 23019) +HANDLE_BAT(, 23020) +HANDLE_BAT(, 23021) +HANDLE_BAT(, 23022) +HANDLE_BAT(, 23023) +HANDLE_BAT(, 23024) +HANDLE_BAT(, 23025) +HANDLE_BAT(, 23026) +HANDLE_BAT(, 23027) +HANDLE_BAT(, 23028) +HANDLE_BAT(, 23029) +HANDLE_BAT(, 23030) +HANDLE_BAT(, 23031) +HANDLE_BAT(, 23032) +HANDLE_BAT(, 23033) +HANDLE_BAT(, 23034) +HANDLE_BAT(, 23035) +HANDLE_BAT(, 23036) +HANDLE_BAT(, 23037) +HANDLE_BAT(, 23038) +HANDLE_BAT(, 23039) +HANDLE_BAT(, 23040) +HANDLE_BAT(, 23041) +HANDLE_BAT(, 23042) +HANDLE_BAT(, 23043) +HANDLE_BAT(, 23044) +HANDLE_BAT(, 23045) +HANDLE_BAT(, 23046) +HANDLE_BAT(, 23047) +HANDLE_BAT(, 23048) +HANDLE_BAT(, 23049) +HANDLE_BAT(, 23050) +HANDLE_BAT(, 23051) +HANDLE_BAT(, 23052) +HANDLE_BAT(, 23053) +HANDLE_BAT(, 23054) +HANDLE_BAT(, 23055) +HANDLE_BAT(, 23056) +HANDLE_BAT(, 23057) +HANDLE_BAT(, 23058) +HANDLE_BAT(, 23059) +HANDLE_BAT(, 23060) +HANDLE_BAT(, 23061) +HANDLE_BAT(, 23062) +HANDLE_BAT(, 23063) +HANDLE_BAT(, 23064) +HANDLE_BAT(, 23065) +HANDLE_BAT(, 23066) +HANDLE_BAT(, 23067) +HANDLE_BAT(, 23068) +HANDLE_BAT(, 23069) +HANDLE_BAT(, 23070) +HANDLE_BAT(, 23071) +HANDLE_BAT(, 23072) +HANDLE_BAT(, 23073) +HANDLE_BAT(, 23074) +HANDLE_BAT(, 23075) +HANDLE_BAT(, 23076) +HANDLE_BAT(, 23077) +HANDLE_BAT(, 23078) +HANDLE_BAT(, 23079) +HANDLE_BAT(, 23080) +HANDLE_BAT(, 23081) +HANDLE_BAT(, 23082) +HANDLE_BAT(, 23083) +HANDLE_BAT(, 23084) +HANDLE_BAT(, 23085) +HANDLE_BAT(, 23086) +HANDLE_BAT(, 23087) +HANDLE_BAT(, 23088) +HANDLE_BAT(, 23089) +HANDLE_BAT(, 23090) +HANDLE_BAT(, 23091) +HANDLE_BAT(, 23092) +HANDLE_BAT(, 23093) +HANDLE_BAT(, 23094) +HANDLE_BAT(, 23095) +HANDLE_BAT(, 23096) +HANDLE_BAT(, 23097) +HANDLE_BAT(, 23098) +HANDLE_BAT(, 23099) +HANDLE_BAT(, 23100) +HANDLE_BAT(, 23101) +HANDLE_BAT(, 23102) +HANDLE_BAT(, 23103) +HANDLE_BAT(, 23104) +HANDLE_BAT(, 23105) +HANDLE_BAT(, 23106) +HANDLE_BAT(, 23107) +HANDLE_BAT(, 23108) +HANDLE_BAT(, 23109) +HANDLE_BAT(, 23110) +HANDLE_BAT(, 23111) +HANDLE_BAT(, 23112) +HANDLE_BAT(, 23113) +HANDLE_BAT(, 23114) +HANDLE_BAT(, 23115) +HANDLE_BAT(, 23116) +HANDLE_BAT(, 23117) +HANDLE_BAT(, 23118) +HANDLE_BAT(, 23119) +HANDLE_BAT(, 23120) +HANDLE_BAT(, 23121) +HANDLE_BAT(, 23122) +HANDLE_BAT(, 23123) +HANDLE_BAT(, 23124) +HANDLE_BAT(, 23125) +HANDLE_BAT(, 23126) +HANDLE_BAT(, 23127) +HANDLE_BAT(, 23128) +HANDLE_BAT(, 23129) +HANDLE_BAT(, 23130) +HANDLE_BAT(, 23131) +HANDLE_BAT(, 23132) +HANDLE_BAT(, 23133) +HANDLE_BAT(, 23134) +HANDLE_BAT(, 23135) +HANDLE_BAT(, 23136) +HANDLE_BAT(, 23137) +HANDLE_BAT(, 23138) +HANDLE_BAT(, 23139) +HANDLE_BAT(, 23140) +HANDLE_BAT(, 23141) +HANDLE_BAT(, 23142) +HANDLE_BAT(, 23143) +HANDLE_BAT(, 23144) +HANDLE_BAT(, 23145) +HANDLE_BAT(, 23146) +HANDLE_BAT(, 23147) +HANDLE_BAT(, 23148) +HANDLE_BAT(, 23149) +HANDLE_BAT(, 23150) +HANDLE_BAT(, 23151) +HANDLE_BAT(, 23152) +HANDLE_BAT(, 23153) +HANDLE_BAT(, 23154) +HANDLE_BAT(, 23155) +HANDLE_BAT(, 23156) +HANDLE_BAT(, 23157) +HANDLE_BAT(, 23158) +HANDLE_BAT(, 23159) +HANDLE_BAT(, 23160) +HANDLE_BAT(, 23161) +HANDLE_BAT(, 23162) +HANDLE_BAT(, 23163) +HANDLE_BAT(, 23164) +HANDLE_BAT(, 23165) +HANDLE_BAT(, 23166) +HANDLE_BAT(, 23167) +HANDLE_BAT(, 23168) +HANDLE_BAT(, 23169) +HANDLE_BAT(, 23170) +HANDLE_BAT(, 23171) +HANDLE_BAT(, 23172) +HANDLE_BAT(, 23173) +HANDLE_BAT(, 23174) +HANDLE_BAT(, 23175) +HANDLE_BAT(, 23176) +HANDLE_BAT(, 23177) +HANDLE_BAT(, 23178) +HANDLE_BAT(, 23179) +HANDLE_BAT(, 23180) +HANDLE_BAT(, 23181) +HANDLE_BAT(, 23182) +HANDLE_BAT(, 23183) +HANDLE_BAT(, 23184) +HANDLE_BAT(, 23185) +HANDLE_BAT(, 23186) +HANDLE_BAT(, 23187) +HANDLE_BAT(, 23188) +HANDLE_BAT(, 23189) +HANDLE_BAT(, 23190) +HANDLE_BAT(, 23191) +HANDLE_BAT(, 23192) +HANDLE_BAT(, 23193) +HANDLE_BAT(, 23194) +HANDLE_BAT(, 23195) +HANDLE_BAT(, 23196) +HANDLE_BAT(, 23197) +HANDLE_BAT(, 23198) +HANDLE_BAT(, 23199) +HANDLE_BAT(, 23200) +HANDLE_BAT(, 23201) +HANDLE_BAT(, 23202) +HANDLE_BAT(, 23203) +HANDLE_BAT(, 23204) +HANDLE_BAT(, 23205) +HANDLE_BAT(, 23206) +HANDLE_BAT(, 23207) +HANDLE_BAT(, 23208) +HANDLE_BAT(, 23209) +HANDLE_BAT(, 23210) +HANDLE_BAT(, 23211) +HANDLE_BAT(, 23212) +HANDLE_BAT(, 23213) +HANDLE_BAT(, 23214) +HANDLE_BAT(, 23215) +HANDLE_BAT(, 23216) +HANDLE_BAT(, 23217) +HANDLE_BAT(, 23218) +HANDLE_BAT(, 23219) +HANDLE_BAT(, 23220) +HANDLE_BAT(, 23221) +HANDLE_BAT(, 23222) +HANDLE_BAT(, 23223) +HANDLE_BAT(, 23224) +HANDLE_BAT(, 23225) +HANDLE_BAT(, 23226) +HANDLE_BAT(, 23227) +HANDLE_BAT(, 23228) +HANDLE_BAT(, 23229) +HANDLE_BAT(, 23230) +HANDLE_BAT(, 23231) +HANDLE_BAT(, 23232) +HANDLE_BAT(, 23233) +HANDLE_BAT(, 23234) +HANDLE_BAT(, 23235) +HANDLE_BAT(, 23236) +HANDLE_BAT(, 23237) +HANDLE_BAT(, 23238) +HANDLE_BAT(, 23239) +HANDLE_BAT(, 23240) +HANDLE_BAT(, 23241) +HANDLE_BAT(, 23242) +HANDLE_BAT(, 23243) +HANDLE_BAT(, 23244) +HANDLE_BAT(, 23245) +HANDLE_BAT(, 23246) +HANDLE_BAT(, 23247) +HANDLE_BAT(, 23248) +HANDLE_BAT(, 23249) +HANDLE_BAT(, 23250) +HANDLE_BAT(, 23251) +HANDLE_BAT(, 23252) +HANDLE_BAT(, 23253) +HANDLE_BAT(, 23254) +HANDLE_BAT(, 23255) +HANDLE_BAT(, 23256) +HANDLE_BAT(, 23257) +HANDLE_BAT(, 23258) +HANDLE_BAT(, 23259) +HANDLE_BAT(, 23260) +HANDLE_BAT(, 23261) +HANDLE_BAT(, 23262) +HANDLE_BAT(, 23263) +HANDLE_BAT(, 23264) +HANDLE_BAT(, 23265) +HANDLE_BAT(, 23266) +HANDLE_BAT(, 23267) +HANDLE_BAT(, 23268) +HANDLE_BAT(, 23269) +HANDLE_BAT(, 23270) +HANDLE_BAT(, 23271) +HANDLE_BAT(, 23272) +HANDLE_BAT(, 23273) +HANDLE_BAT(, 23274) +HANDLE_BAT(, 23275) +HANDLE_BAT(, 23276) +HANDLE_BAT(, 23277) +HANDLE_BAT(, 23278) +HANDLE_BAT(, 23279) +HANDLE_BAT(, 23280) +HANDLE_BAT(, 23281) +HANDLE_BAT(, 23282) +HANDLE_BAT(, 23283) +HANDLE_BAT(, 23284) +HANDLE_BAT(, 23285) +HANDLE_BAT(, 23286) +HANDLE_BAT(, 23287) +HANDLE_BAT(, 23288) +HANDLE_BAT(, 23289) +HANDLE_BAT(, 23290) +HANDLE_BAT(, 23291) +HANDLE_BAT(, 23292) +HANDLE_BAT(, 23293) +HANDLE_BAT(, 23294) +HANDLE_BAT(, 23295) +HANDLE_BAT(, 23296) +HANDLE_BAT(, 23297) +HANDLE_BAT(, 23298) +HANDLE_BAT(, 23299) +HANDLE_BAT(, 23300) +HANDLE_BAT(, 23301) +HANDLE_BAT(, 23302) +HANDLE_BAT(, 23303) +HANDLE_BAT(, 23304) +HANDLE_BAT(, 23305) +HANDLE_BAT(, 23306) +HANDLE_BAT(, 23307) +HANDLE_BAT(, 23308) +HANDLE_BAT(, 23309) +HANDLE_BAT(, 23310) +HANDLE_BAT(, 23311) +HANDLE_BAT(, 23312) +HANDLE_BAT(, 23313) +HANDLE_BAT(, 23314) +HANDLE_BAT(, 23315) +HANDLE_BAT(, 23316) +HANDLE_BAT(, 23317) +HANDLE_BAT(, 23318) +HANDLE_BAT(, 23319) +HANDLE_BAT(, 23320) +HANDLE_BAT(, 23321) +HANDLE_BAT(, 23322) +HANDLE_BAT(, 23323) +HANDLE_BAT(, 23324) +HANDLE_BAT(, 23325) +HANDLE_BAT(, 23326) +HANDLE_BAT(, 23327) +HANDLE_BAT(, 23328) +HANDLE_BAT(, 23329) +HANDLE_BAT(, 23330) +HANDLE_BAT(, 23331) +HANDLE_BAT(, 23332) +HANDLE_BAT(, 23333) +HANDLE_BAT(, 23334) +HANDLE_BAT(, 23335) +HANDLE_BAT(, 23336) +HANDLE_BAT(, 23337) +HANDLE_BAT(, 23338) +HANDLE_BAT(, 23339) +HANDLE_BAT(, 23340) +HANDLE_BAT(, 23341) +HANDLE_BAT(, 23342) +HANDLE_BAT(, 23343) +HANDLE_BAT(, 23344) +HANDLE_BAT(, 23345) +HANDLE_BAT(, 23346) +HANDLE_BAT(, 23347) +HANDLE_BAT(, 23348) +HANDLE_BAT(, 23349) +HANDLE_BAT(, 23350) +HANDLE_BAT(, 23351) +HANDLE_BAT(, 23352) +HANDLE_BAT(, 23353) +HANDLE_BAT(, 23354) +HANDLE_BAT(, 23355) +HANDLE_BAT(, 23356) +HANDLE_BAT(, 23357) +HANDLE_BAT(, 23358) +HANDLE_BAT(, 23359) +HANDLE_BAT(, 23360) +HANDLE_BAT(, 23361) +HANDLE_BAT(, 23362) +HANDLE_BAT(, 23363) +HANDLE_BAT(, 23364) +HANDLE_BAT(, 23365) +HANDLE_BAT(, 23366) +HANDLE_BAT(, 23367) +HANDLE_BAT(, 23368) +HANDLE_BAT(, 23369) +HANDLE_BAT(, 23370) +HANDLE_BAT(, 23371) +HANDLE_BAT(, 23372) +HANDLE_BAT(, 23373) +HANDLE_BAT(, 23374) +HANDLE_BAT(, 23375) +HANDLE_BAT(, 23376) +HANDLE_BAT(, 23377) +HANDLE_BAT(, 23378) +HANDLE_BAT(, 23379) +HANDLE_BAT(, 23380) +HANDLE_BAT(, 23381) +HANDLE_BAT(, 23382) +HANDLE_BAT(, 23383) +HANDLE_BAT(, 23384) +HANDLE_BAT(, 23385) +HANDLE_BAT(, 23386) +HANDLE_BAT(, 23387) +HANDLE_BAT(, 23388) +HANDLE_BAT(, 23389) +HANDLE_BAT(, 23390) +HANDLE_BAT(, 23391) +HANDLE_BAT(, 23392) +HANDLE_BAT(, 23393) +HANDLE_BAT(, 23394) +HANDLE_BAT(, 23395) +HANDLE_BAT(, 23396) +HANDLE_BAT(, 23397) +HANDLE_BAT(, 23398) +HANDLE_BAT(, 23399) +HANDLE_BAT(, 23400) +HANDLE_BAT(, 23401) +HANDLE_BAT(, 23402) +HANDLE_BAT(, 23403) +HANDLE_BAT(, 23404) +HANDLE_BAT(, 23405) +HANDLE_BAT(, 23406) +HANDLE_BAT(, 23407) +HANDLE_BAT(, 23408) +HANDLE_BAT(, 23409) +HANDLE_BAT(, 23410) +HANDLE_BAT(, 23411) +HANDLE_BAT(, 23412) +HANDLE_BAT(, 23413) +HANDLE_BAT(, 23414) +HANDLE_BAT(, 23415) +HANDLE_BAT(, 23416) +HANDLE_BAT(, 23417) +HANDLE_BAT(, 23418) +HANDLE_BAT(, 23419) +HANDLE_BAT(, 23420) +HANDLE_BAT(, 23421) +HANDLE_BAT(, 23422) +HANDLE_BAT(, 23423) +HANDLE_BAT(, 23424) +HANDLE_BAT(, 23425) +HANDLE_BAT(, 23426) +HANDLE_BAT(, 23427) +HANDLE_BAT(, 23428) +HANDLE_BAT(, 23429) +HANDLE_BAT(, 23430) +HANDLE_BAT(, 23431) +HANDLE_BAT(, 23432) +HANDLE_BAT(, 23433) +HANDLE_BAT(, 23434) +HANDLE_BAT(, 23435) +HANDLE_BAT(, 23436) +HANDLE_BAT(, 23437) +HANDLE_BAT(, 23438) +HANDLE_BAT(, 23439) +HANDLE_BAT(, 23440) +HANDLE_BAT(, 23441) +HANDLE_BAT(, 23442) +HANDLE_BAT(, 23443) +HANDLE_BAT(, 23444) +HANDLE_BAT(, 23445) +HANDLE_BAT(, 23446) +HANDLE_BAT(, 23447) +HANDLE_BAT(, 23448) +HANDLE_BAT(, 23449) +HANDLE_BAT(, 23450) +HANDLE_BAT(, 23451) +HANDLE_BAT(, 23452) +HANDLE_BAT(, 23453) +HANDLE_BAT(, 23454) +HANDLE_BAT(, 23455) +HANDLE_BAT(, 23456) +HANDLE_BAT(, 23457) +HANDLE_BAT(, 23458) +HANDLE_BAT(, 23459) +HANDLE_BAT(, 23460) +HANDLE_BAT(, 23461) +HANDLE_BAT(, 23462) +HANDLE_BAT(, 23463) +HANDLE_BAT(, 23464) +HANDLE_BAT(, 23465) +HANDLE_BAT(, 23466) +HANDLE_BAT(, 23467) +HANDLE_BAT(, 23468) +HANDLE_BAT(, 23469) +HANDLE_BAT(, 23470) +HANDLE_BAT(, 23471) +HANDLE_BAT(, 23472) +HANDLE_BAT(, 23473) +HANDLE_BAT(, 23474) +HANDLE_BAT(, 23475) +HANDLE_BAT(, 23476) +HANDLE_BAT(, 23477) +HANDLE_BAT(, 23478) +HANDLE_BAT(, 23479) +HANDLE_BAT(, 23480) +HANDLE_BAT(, 23481) +HANDLE_BAT(, 23482) +HANDLE_BAT(, 23483) +HANDLE_BAT(, 23484) +HANDLE_BAT(, 23485) +HANDLE_BAT(, 23486) +HANDLE_BAT(, 23487) +HANDLE_BAT(, 23488) +HANDLE_BAT(, 23489) +HANDLE_BAT(, 23490) +HANDLE_BAT(, 23491) +HANDLE_BAT(, 23492) +HANDLE_BAT(, 23493) +HANDLE_BAT(, 23494) +HANDLE_BAT(, 23495) +HANDLE_BAT(, 23496) +HANDLE_BAT(, 23497) +HANDLE_BAT(, 23498) +HANDLE_BAT(, 23499) +HANDLE_BAT(, 23500) +HANDLE_BAT(, 23501) +HANDLE_BAT(, 23502) +HANDLE_BAT(, 23503) +HANDLE_BAT(, 23504) +HANDLE_BAT(, 23505) +HANDLE_BAT(, 23506) +HANDLE_BAT(, 23507) +HANDLE_BAT(, 23508) +HANDLE_BAT(, 23509) +HANDLE_BAT(, 23510) +HANDLE_BAT(, 23511) +HANDLE_BAT(, 23512) +HANDLE_BAT(, 23513) +HANDLE_BAT(, 23514) +HANDLE_BAT(, 23515) +HANDLE_BAT(, 23516) +HANDLE_BAT(, 23517) +HANDLE_BAT(, 23518) +HANDLE_BAT(, 23519) +HANDLE_BAT(, 23520) +HANDLE_BAT(, 23521) +HANDLE_BAT(, 23522) +HANDLE_BAT(, 23523) +HANDLE_BAT(, 23524) +HANDLE_BAT(, 23525) +HANDLE_BAT(, 23526) +HANDLE_BAT(, 23527) +HANDLE_BAT(, 23528) +HANDLE_BAT(, 23529) +HANDLE_BAT(, 23530) +HANDLE_BAT(, 23531) +HANDLE_BAT(, 23532) +HANDLE_BAT(, 23533) +HANDLE_BAT(, 23534) +HANDLE_BAT(, 23535) +HANDLE_BAT(, 23536) +HANDLE_BAT(, 23537) +HANDLE_BAT(, 23538) +HANDLE_BAT(, 23539) +HANDLE_BAT(, 23540) +HANDLE_BAT(, 23541) +HANDLE_BAT(, 23542) +HANDLE_BAT(, 23543) +HANDLE_BAT(, 23544) +HANDLE_BAT(, 23545) +HANDLE_BAT(, 23546) +HANDLE_BAT(, 23547) +HANDLE_BAT(, 23548) +HANDLE_BAT(, 23549) +HANDLE_BAT(, 23550) +HANDLE_BAT(, 23551) +HANDLE_BAT(, 23552) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 22529) +HANDLE_BAT(APINT_TYPE_PREFIX, 22530) +HANDLE_BAT(APINT_TYPE_PREFIX, 22531) +HANDLE_BAT(APINT_TYPE_PREFIX, 22532) +HANDLE_BAT(APINT_TYPE_PREFIX, 22533) +HANDLE_BAT(APINT_TYPE_PREFIX, 22534) +HANDLE_BAT(APINT_TYPE_PREFIX, 22535) +HANDLE_BAT(APINT_TYPE_PREFIX, 22536) +HANDLE_BAT(APINT_TYPE_PREFIX, 22537) +HANDLE_BAT(APINT_TYPE_PREFIX, 22538) +HANDLE_BAT(APINT_TYPE_PREFIX, 22539) +HANDLE_BAT(APINT_TYPE_PREFIX, 22540) +HANDLE_BAT(APINT_TYPE_PREFIX, 22541) +HANDLE_BAT(APINT_TYPE_PREFIX, 22542) +HANDLE_BAT(APINT_TYPE_PREFIX, 22543) +HANDLE_BAT(APINT_TYPE_PREFIX, 22544) +HANDLE_BAT(APINT_TYPE_PREFIX, 22545) +HANDLE_BAT(APINT_TYPE_PREFIX, 22546) +HANDLE_BAT(APINT_TYPE_PREFIX, 22547) +HANDLE_BAT(APINT_TYPE_PREFIX, 22548) +HANDLE_BAT(APINT_TYPE_PREFIX, 22549) +HANDLE_BAT(APINT_TYPE_PREFIX, 22550) +HANDLE_BAT(APINT_TYPE_PREFIX, 22551) +HANDLE_BAT(APINT_TYPE_PREFIX, 22552) +HANDLE_BAT(APINT_TYPE_PREFIX, 22553) +HANDLE_BAT(APINT_TYPE_PREFIX, 22554) +HANDLE_BAT(APINT_TYPE_PREFIX, 22555) +HANDLE_BAT(APINT_TYPE_PREFIX, 22556) +HANDLE_BAT(APINT_TYPE_PREFIX, 22557) +HANDLE_BAT(APINT_TYPE_PREFIX, 22558) +HANDLE_BAT(APINT_TYPE_PREFIX, 22559) +HANDLE_BAT(APINT_TYPE_PREFIX, 22560) +HANDLE_BAT(APINT_TYPE_PREFIX, 22561) +HANDLE_BAT(APINT_TYPE_PREFIX, 22562) +HANDLE_BAT(APINT_TYPE_PREFIX, 22563) +HANDLE_BAT(APINT_TYPE_PREFIX, 22564) +HANDLE_BAT(APINT_TYPE_PREFIX, 22565) +HANDLE_BAT(APINT_TYPE_PREFIX, 22566) +HANDLE_BAT(APINT_TYPE_PREFIX, 22567) +HANDLE_BAT(APINT_TYPE_PREFIX, 22568) +HANDLE_BAT(APINT_TYPE_PREFIX, 22569) +HANDLE_BAT(APINT_TYPE_PREFIX, 22570) +HANDLE_BAT(APINT_TYPE_PREFIX, 22571) +HANDLE_BAT(APINT_TYPE_PREFIX, 22572) +HANDLE_BAT(APINT_TYPE_PREFIX, 22573) +HANDLE_BAT(APINT_TYPE_PREFIX, 22574) +HANDLE_BAT(APINT_TYPE_PREFIX, 22575) +HANDLE_BAT(APINT_TYPE_PREFIX, 22576) +HANDLE_BAT(APINT_TYPE_PREFIX, 22577) +HANDLE_BAT(APINT_TYPE_PREFIX, 22578) +HANDLE_BAT(APINT_TYPE_PREFIX, 22579) +HANDLE_BAT(APINT_TYPE_PREFIX, 22580) +HANDLE_BAT(APINT_TYPE_PREFIX, 22581) +HANDLE_BAT(APINT_TYPE_PREFIX, 22582) +HANDLE_BAT(APINT_TYPE_PREFIX, 22583) +HANDLE_BAT(APINT_TYPE_PREFIX, 22584) +HANDLE_BAT(APINT_TYPE_PREFIX, 22585) +HANDLE_BAT(APINT_TYPE_PREFIX, 22586) +HANDLE_BAT(APINT_TYPE_PREFIX, 22587) +HANDLE_BAT(APINT_TYPE_PREFIX, 22588) +HANDLE_BAT(APINT_TYPE_PREFIX, 22589) +HANDLE_BAT(APINT_TYPE_PREFIX, 22590) +HANDLE_BAT(APINT_TYPE_PREFIX, 22591) +HANDLE_BAT(APINT_TYPE_PREFIX, 22592) +HANDLE_BAT(APINT_TYPE_PREFIX, 22593) +HANDLE_BAT(APINT_TYPE_PREFIX, 22594) +HANDLE_BAT(APINT_TYPE_PREFIX, 22595) +HANDLE_BAT(APINT_TYPE_PREFIX, 22596) +HANDLE_BAT(APINT_TYPE_PREFIX, 22597) +HANDLE_BAT(APINT_TYPE_PREFIX, 22598) +HANDLE_BAT(APINT_TYPE_PREFIX, 22599) +HANDLE_BAT(APINT_TYPE_PREFIX, 22600) +HANDLE_BAT(APINT_TYPE_PREFIX, 22601) +HANDLE_BAT(APINT_TYPE_PREFIX, 22602) +HANDLE_BAT(APINT_TYPE_PREFIX, 22603) +HANDLE_BAT(APINT_TYPE_PREFIX, 22604) +HANDLE_BAT(APINT_TYPE_PREFIX, 22605) +HANDLE_BAT(APINT_TYPE_PREFIX, 22606) +HANDLE_BAT(APINT_TYPE_PREFIX, 22607) +HANDLE_BAT(APINT_TYPE_PREFIX, 22608) +HANDLE_BAT(APINT_TYPE_PREFIX, 22609) +HANDLE_BAT(APINT_TYPE_PREFIX, 22610) +HANDLE_BAT(APINT_TYPE_PREFIX, 22611) +HANDLE_BAT(APINT_TYPE_PREFIX, 22612) +HANDLE_BAT(APINT_TYPE_PREFIX, 22613) +HANDLE_BAT(APINT_TYPE_PREFIX, 22614) +HANDLE_BAT(APINT_TYPE_PREFIX, 22615) +HANDLE_BAT(APINT_TYPE_PREFIX, 22616) +HANDLE_BAT(APINT_TYPE_PREFIX, 22617) +HANDLE_BAT(APINT_TYPE_PREFIX, 22618) +HANDLE_BAT(APINT_TYPE_PREFIX, 22619) +HANDLE_BAT(APINT_TYPE_PREFIX, 22620) +HANDLE_BAT(APINT_TYPE_PREFIX, 22621) +HANDLE_BAT(APINT_TYPE_PREFIX, 22622) +HANDLE_BAT(APINT_TYPE_PREFIX, 22623) +HANDLE_BAT(APINT_TYPE_PREFIX, 22624) +HANDLE_BAT(APINT_TYPE_PREFIX, 22625) +HANDLE_BAT(APINT_TYPE_PREFIX, 22626) +HANDLE_BAT(APINT_TYPE_PREFIX, 22627) +HANDLE_BAT(APINT_TYPE_PREFIX, 22628) +HANDLE_BAT(APINT_TYPE_PREFIX, 22629) +HANDLE_BAT(APINT_TYPE_PREFIX, 22630) +HANDLE_BAT(APINT_TYPE_PREFIX, 22631) +HANDLE_BAT(APINT_TYPE_PREFIX, 22632) +HANDLE_BAT(APINT_TYPE_PREFIX, 22633) +HANDLE_BAT(APINT_TYPE_PREFIX, 22634) +HANDLE_BAT(APINT_TYPE_PREFIX, 22635) +HANDLE_BAT(APINT_TYPE_PREFIX, 22636) +HANDLE_BAT(APINT_TYPE_PREFIX, 22637) +HANDLE_BAT(APINT_TYPE_PREFIX, 22638) +HANDLE_BAT(APINT_TYPE_PREFIX, 22639) +HANDLE_BAT(APINT_TYPE_PREFIX, 22640) +HANDLE_BAT(APINT_TYPE_PREFIX, 22641) +HANDLE_BAT(APINT_TYPE_PREFIX, 22642) +HANDLE_BAT(APINT_TYPE_PREFIX, 22643) +HANDLE_BAT(APINT_TYPE_PREFIX, 22644) +HANDLE_BAT(APINT_TYPE_PREFIX, 22645) +HANDLE_BAT(APINT_TYPE_PREFIX, 22646) +HANDLE_BAT(APINT_TYPE_PREFIX, 22647) +HANDLE_BAT(APINT_TYPE_PREFIX, 22648) +HANDLE_BAT(APINT_TYPE_PREFIX, 22649) +HANDLE_BAT(APINT_TYPE_PREFIX, 22650) +HANDLE_BAT(APINT_TYPE_PREFIX, 22651) +HANDLE_BAT(APINT_TYPE_PREFIX, 22652) +HANDLE_BAT(APINT_TYPE_PREFIX, 22653) +HANDLE_BAT(APINT_TYPE_PREFIX, 22654) +HANDLE_BAT(APINT_TYPE_PREFIX, 22655) +HANDLE_BAT(APINT_TYPE_PREFIX, 22656) +HANDLE_BAT(APINT_TYPE_PREFIX, 22657) +HANDLE_BAT(APINT_TYPE_PREFIX, 22658) +HANDLE_BAT(APINT_TYPE_PREFIX, 22659) +HANDLE_BAT(APINT_TYPE_PREFIX, 22660) +HANDLE_BAT(APINT_TYPE_PREFIX, 22661) +HANDLE_BAT(APINT_TYPE_PREFIX, 22662) +HANDLE_BAT(APINT_TYPE_PREFIX, 22663) +HANDLE_BAT(APINT_TYPE_PREFIX, 22664) +HANDLE_BAT(APINT_TYPE_PREFIX, 22665) +HANDLE_BAT(APINT_TYPE_PREFIX, 22666) +HANDLE_BAT(APINT_TYPE_PREFIX, 22667) +HANDLE_BAT(APINT_TYPE_PREFIX, 22668) +HANDLE_BAT(APINT_TYPE_PREFIX, 22669) +HANDLE_BAT(APINT_TYPE_PREFIX, 22670) +HANDLE_BAT(APINT_TYPE_PREFIX, 22671) +HANDLE_BAT(APINT_TYPE_PREFIX, 22672) +HANDLE_BAT(APINT_TYPE_PREFIX, 22673) +HANDLE_BAT(APINT_TYPE_PREFIX, 22674) +HANDLE_BAT(APINT_TYPE_PREFIX, 22675) +HANDLE_BAT(APINT_TYPE_PREFIX, 22676) +HANDLE_BAT(APINT_TYPE_PREFIX, 22677) +HANDLE_BAT(APINT_TYPE_PREFIX, 22678) +HANDLE_BAT(APINT_TYPE_PREFIX, 22679) +HANDLE_BAT(APINT_TYPE_PREFIX, 22680) +HANDLE_BAT(APINT_TYPE_PREFIX, 22681) +HANDLE_BAT(APINT_TYPE_PREFIX, 22682) +HANDLE_BAT(APINT_TYPE_PREFIX, 22683) +HANDLE_BAT(APINT_TYPE_PREFIX, 22684) +HANDLE_BAT(APINT_TYPE_PREFIX, 22685) +HANDLE_BAT(APINT_TYPE_PREFIX, 22686) +HANDLE_BAT(APINT_TYPE_PREFIX, 22687) +HANDLE_BAT(APINT_TYPE_PREFIX, 22688) +HANDLE_BAT(APINT_TYPE_PREFIX, 22689) +HANDLE_BAT(APINT_TYPE_PREFIX, 22690) +HANDLE_BAT(APINT_TYPE_PREFIX, 22691) +HANDLE_BAT(APINT_TYPE_PREFIX, 22692) +HANDLE_BAT(APINT_TYPE_PREFIX, 22693) +HANDLE_BAT(APINT_TYPE_PREFIX, 22694) +HANDLE_BAT(APINT_TYPE_PREFIX, 22695) +HANDLE_BAT(APINT_TYPE_PREFIX, 22696) +HANDLE_BAT(APINT_TYPE_PREFIX, 22697) +HANDLE_BAT(APINT_TYPE_PREFIX, 22698) +HANDLE_BAT(APINT_TYPE_PREFIX, 22699) +HANDLE_BAT(APINT_TYPE_PREFIX, 22700) +HANDLE_BAT(APINT_TYPE_PREFIX, 22701) +HANDLE_BAT(APINT_TYPE_PREFIX, 22702) +HANDLE_BAT(APINT_TYPE_PREFIX, 22703) +HANDLE_BAT(APINT_TYPE_PREFIX, 22704) +HANDLE_BAT(APINT_TYPE_PREFIX, 22705) +HANDLE_BAT(APINT_TYPE_PREFIX, 22706) +HANDLE_BAT(APINT_TYPE_PREFIX, 22707) +HANDLE_BAT(APINT_TYPE_PREFIX, 22708) +HANDLE_BAT(APINT_TYPE_PREFIX, 22709) +HANDLE_BAT(APINT_TYPE_PREFIX, 22710) +HANDLE_BAT(APINT_TYPE_PREFIX, 22711) +HANDLE_BAT(APINT_TYPE_PREFIX, 22712) +HANDLE_BAT(APINT_TYPE_PREFIX, 22713) +HANDLE_BAT(APINT_TYPE_PREFIX, 22714) +HANDLE_BAT(APINT_TYPE_PREFIX, 22715) +HANDLE_BAT(APINT_TYPE_PREFIX, 22716) +HANDLE_BAT(APINT_TYPE_PREFIX, 22717) +HANDLE_BAT(APINT_TYPE_PREFIX, 22718) +HANDLE_BAT(APINT_TYPE_PREFIX, 22719) +HANDLE_BAT(APINT_TYPE_PREFIX, 22720) +HANDLE_BAT(APINT_TYPE_PREFIX, 22721) +HANDLE_BAT(APINT_TYPE_PREFIX, 22722) +HANDLE_BAT(APINT_TYPE_PREFIX, 22723) +HANDLE_BAT(APINT_TYPE_PREFIX, 22724) +HANDLE_BAT(APINT_TYPE_PREFIX, 22725) +HANDLE_BAT(APINT_TYPE_PREFIX, 22726) +HANDLE_BAT(APINT_TYPE_PREFIX, 22727) +HANDLE_BAT(APINT_TYPE_PREFIX, 22728) +HANDLE_BAT(APINT_TYPE_PREFIX, 22729) +HANDLE_BAT(APINT_TYPE_PREFIX, 22730) +HANDLE_BAT(APINT_TYPE_PREFIX, 22731) +HANDLE_BAT(APINT_TYPE_PREFIX, 22732) +HANDLE_BAT(APINT_TYPE_PREFIX, 22733) +HANDLE_BAT(APINT_TYPE_PREFIX, 22734) +HANDLE_BAT(APINT_TYPE_PREFIX, 22735) +HANDLE_BAT(APINT_TYPE_PREFIX, 22736) +HANDLE_BAT(APINT_TYPE_PREFIX, 22737) +HANDLE_BAT(APINT_TYPE_PREFIX, 22738) +HANDLE_BAT(APINT_TYPE_PREFIX, 22739) +HANDLE_BAT(APINT_TYPE_PREFIX, 22740) +HANDLE_BAT(APINT_TYPE_PREFIX, 22741) +HANDLE_BAT(APINT_TYPE_PREFIX, 22742) +HANDLE_BAT(APINT_TYPE_PREFIX, 22743) +HANDLE_BAT(APINT_TYPE_PREFIX, 22744) +HANDLE_BAT(APINT_TYPE_PREFIX, 22745) +HANDLE_BAT(APINT_TYPE_PREFIX, 22746) +HANDLE_BAT(APINT_TYPE_PREFIX, 22747) +HANDLE_BAT(APINT_TYPE_PREFIX, 22748) +HANDLE_BAT(APINT_TYPE_PREFIX, 22749) +HANDLE_BAT(APINT_TYPE_PREFIX, 22750) +HANDLE_BAT(APINT_TYPE_PREFIX, 22751) +HANDLE_BAT(APINT_TYPE_PREFIX, 22752) +HANDLE_BAT(APINT_TYPE_PREFIX, 22753) +HANDLE_BAT(APINT_TYPE_PREFIX, 22754) +HANDLE_BAT(APINT_TYPE_PREFIX, 22755) +HANDLE_BAT(APINT_TYPE_PREFIX, 22756) +HANDLE_BAT(APINT_TYPE_PREFIX, 22757) +HANDLE_BAT(APINT_TYPE_PREFIX, 22758) +HANDLE_BAT(APINT_TYPE_PREFIX, 22759) +HANDLE_BAT(APINT_TYPE_PREFIX, 22760) +HANDLE_BAT(APINT_TYPE_PREFIX, 22761) +HANDLE_BAT(APINT_TYPE_PREFIX, 22762) +HANDLE_BAT(APINT_TYPE_PREFIX, 22763) +HANDLE_BAT(APINT_TYPE_PREFIX, 22764) +HANDLE_BAT(APINT_TYPE_PREFIX, 22765) +HANDLE_BAT(APINT_TYPE_PREFIX, 22766) +HANDLE_BAT(APINT_TYPE_PREFIX, 22767) +HANDLE_BAT(APINT_TYPE_PREFIX, 22768) +HANDLE_BAT(APINT_TYPE_PREFIX, 22769) +HANDLE_BAT(APINT_TYPE_PREFIX, 22770) +HANDLE_BAT(APINT_TYPE_PREFIX, 22771) +HANDLE_BAT(APINT_TYPE_PREFIX, 22772) +HANDLE_BAT(APINT_TYPE_PREFIX, 22773) +HANDLE_BAT(APINT_TYPE_PREFIX, 22774) +HANDLE_BAT(APINT_TYPE_PREFIX, 22775) +HANDLE_BAT(APINT_TYPE_PREFIX, 22776) +HANDLE_BAT(APINT_TYPE_PREFIX, 22777) +HANDLE_BAT(APINT_TYPE_PREFIX, 22778) +HANDLE_BAT(APINT_TYPE_PREFIX, 22779) +HANDLE_BAT(APINT_TYPE_PREFIX, 22780) +HANDLE_BAT(APINT_TYPE_PREFIX, 22781) +HANDLE_BAT(APINT_TYPE_PREFIX, 22782) +HANDLE_BAT(APINT_TYPE_PREFIX, 22783) +HANDLE_BAT(APINT_TYPE_PREFIX, 22784) +HANDLE_BAT(APINT_TYPE_PREFIX, 22785) +HANDLE_BAT(APINT_TYPE_PREFIX, 22786) +HANDLE_BAT(APINT_TYPE_PREFIX, 22787) +HANDLE_BAT(APINT_TYPE_PREFIX, 22788) +HANDLE_BAT(APINT_TYPE_PREFIX, 22789) +HANDLE_BAT(APINT_TYPE_PREFIX, 22790) +HANDLE_BAT(APINT_TYPE_PREFIX, 22791) +HANDLE_BAT(APINT_TYPE_PREFIX, 22792) +HANDLE_BAT(APINT_TYPE_PREFIX, 22793) +HANDLE_BAT(APINT_TYPE_PREFIX, 22794) +HANDLE_BAT(APINT_TYPE_PREFIX, 22795) +HANDLE_BAT(APINT_TYPE_PREFIX, 22796) +HANDLE_BAT(APINT_TYPE_PREFIX, 22797) +HANDLE_BAT(APINT_TYPE_PREFIX, 22798) +HANDLE_BAT(APINT_TYPE_PREFIX, 22799) +HANDLE_BAT(APINT_TYPE_PREFIX, 22800) +HANDLE_BAT(APINT_TYPE_PREFIX, 22801) +HANDLE_BAT(APINT_TYPE_PREFIX, 22802) +HANDLE_BAT(APINT_TYPE_PREFIX, 22803) +HANDLE_BAT(APINT_TYPE_PREFIX, 22804) +HANDLE_BAT(APINT_TYPE_PREFIX, 22805) +HANDLE_BAT(APINT_TYPE_PREFIX, 22806) +HANDLE_BAT(APINT_TYPE_PREFIX, 22807) +HANDLE_BAT(APINT_TYPE_PREFIX, 22808) +HANDLE_BAT(APINT_TYPE_PREFIX, 22809) +HANDLE_BAT(APINT_TYPE_PREFIX, 22810) +HANDLE_BAT(APINT_TYPE_PREFIX, 22811) +HANDLE_BAT(APINT_TYPE_PREFIX, 22812) +HANDLE_BAT(APINT_TYPE_PREFIX, 22813) +HANDLE_BAT(APINT_TYPE_PREFIX, 22814) +HANDLE_BAT(APINT_TYPE_PREFIX, 22815) +HANDLE_BAT(APINT_TYPE_PREFIX, 22816) +HANDLE_BAT(APINT_TYPE_PREFIX, 22817) +HANDLE_BAT(APINT_TYPE_PREFIX, 22818) +HANDLE_BAT(APINT_TYPE_PREFIX, 22819) +HANDLE_BAT(APINT_TYPE_PREFIX, 22820) +HANDLE_BAT(APINT_TYPE_PREFIX, 22821) +HANDLE_BAT(APINT_TYPE_PREFIX, 22822) +HANDLE_BAT(APINT_TYPE_PREFIX, 22823) +HANDLE_BAT(APINT_TYPE_PREFIX, 22824) +HANDLE_BAT(APINT_TYPE_PREFIX, 22825) +HANDLE_BAT(APINT_TYPE_PREFIX, 22826) +HANDLE_BAT(APINT_TYPE_PREFIX, 22827) +HANDLE_BAT(APINT_TYPE_PREFIX, 22828) +HANDLE_BAT(APINT_TYPE_PREFIX, 22829) +HANDLE_BAT(APINT_TYPE_PREFIX, 22830) +HANDLE_BAT(APINT_TYPE_PREFIX, 22831) +HANDLE_BAT(APINT_TYPE_PREFIX, 22832) +HANDLE_BAT(APINT_TYPE_PREFIX, 22833) +HANDLE_BAT(APINT_TYPE_PREFIX, 22834) +HANDLE_BAT(APINT_TYPE_PREFIX, 22835) +HANDLE_BAT(APINT_TYPE_PREFIX, 22836) +HANDLE_BAT(APINT_TYPE_PREFIX, 22837) +HANDLE_BAT(APINT_TYPE_PREFIX, 22838) +HANDLE_BAT(APINT_TYPE_PREFIX, 22839) +HANDLE_BAT(APINT_TYPE_PREFIX, 22840) +HANDLE_BAT(APINT_TYPE_PREFIX, 22841) +HANDLE_BAT(APINT_TYPE_PREFIX, 22842) +HANDLE_BAT(APINT_TYPE_PREFIX, 22843) +HANDLE_BAT(APINT_TYPE_PREFIX, 22844) +HANDLE_BAT(APINT_TYPE_PREFIX, 22845) +HANDLE_BAT(APINT_TYPE_PREFIX, 22846) +HANDLE_BAT(APINT_TYPE_PREFIX, 22847) +HANDLE_BAT(APINT_TYPE_PREFIX, 22848) +HANDLE_BAT(APINT_TYPE_PREFIX, 22849) +HANDLE_BAT(APINT_TYPE_PREFIX, 22850) +HANDLE_BAT(APINT_TYPE_PREFIX, 22851) +HANDLE_BAT(APINT_TYPE_PREFIX, 22852) +HANDLE_BAT(APINT_TYPE_PREFIX, 22853) +HANDLE_BAT(APINT_TYPE_PREFIX, 22854) +HANDLE_BAT(APINT_TYPE_PREFIX, 22855) +HANDLE_BAT(APINT_TYPE_PREFIX, 22856) +HANDLE_BAT(APINT_TYPE_PREFIX, 22857) +HANDLE_BAT(APINT_TYPE_PREFIX, 22858) +HANDLE_BAT(APINT_TYPE_PREFIX, 22859) +HANDLE_BAT(APINT_TYPE_PREFIX, 22860) +HANDLE_BAT(APINT_TYPE_PREFIX, 22861) +HANDLE_BAT(APINT_TYPE_PREFIX, 22862) +HANDLE_BAT(APINT_TYPE_PREFIX, 22863) +HANDLE_BAT(APINT_TYPE_PREFIX, 22864) +HANDLE_BAT(APINT_TYPE_PREFIX, 22865) +HANDLE_BAT(APINT_TYPE_PREFIX, 22866) +HANDLE_BAT(APINT_TYPE_PREFIX, 22867) +HANDLE_BAT(APINT_TYPE_PREFIX, 22868) +HANDLE_BAT(APINT_TYPE_PREFIX, 22869) +HANDLE_BAT(APINT_TYPE_PREFIX, 22870) +HANDLE_BAT(APINT_TYPE_PREFIX, 22871) +HANDLE_BAT(APINT_TYPE_PREFIX, 22872) +HANDLE_BAT(APINT_TYPE_PREFIX, 22873) +HANDLE_BAT(APINT_TYPE_PREFIX, 22874) +HANDLE_BAT(APINT_TYPE_PREFIX, 22875) +HANDLE_BAT(APINT_TYPE_PREFIX, 22876) +HANDLE_BAT(APINT_TYPE_PREFIX, 22877) +HANDLE_BAT(APINT_TYPE_PREFIX, 22878) +HANDLE_BAT(APINT_TYPE_PREFIX, 22879) +HANDLE_BAT(APINT_TYPE_PREFIX, 22880) +HANDLE_BAT(APINT_TYPE_PREFIX, 22881) +HANDLE_BAT(APINT_TYPE_PREFIX, 22882) +HANDLE_BAT(APINT_TYPE_PREFIX, 22883) +HANDLE_BAT(APINT_TYPE_PREFIX, 22884) +HANDLE_BAT(APINT_TYPE_PREFIX, 22885) +HANDLE_BAT(APINT_TYPE_PREFIX, 22886) +HANDLE_BAT(APINT_TYPE_PREFIX, 22887) +HANDLE_BAT(APINT_TYPE_PREFIX, 22888) +HANDLE_BAT(APINT_TYPE_PREFIX, 22889) +HANDLE_BAT(APINT_TYPE_PREFIX, 22890) +HANDLE_BAT(APINT_TYPE_PREFIX, 22891) +HANDLE_BAT(APINT_TYPE_PREFIX, 22892) +HANDLE_BAT(APINT_TYPE_PREFIX, 22893) +HANDLE_BAT(APINT_TYPE_PREFIX, 22894) +HANDLE_BAT(APINT_TYPE_PREFIX, 22895) +HANDLE_BAT(APINT_TYPE_PREFIX, 22896) +HANDLE_BAT(APINT_TYPE_PREFIX, 22897) +HANDLE_BAT(APINT_TYPE_PREFIX, 22898) +HANDLE_BAT(APINT_TYPE_PREFIX, 22899) +HANDLE_BAT(APINT_TYPE_PREFIX, 22900) +HANDLE_BAT(APINT_TYPE_PREFIX, 22901) +HANDLE_BAT(APINT_TYPE_PREFIX, 22902) +HANDLE_BAT(APINT_TYPE_PREFIX, 22903) +HANDLE_BAT(APINT_TYPE_PREFIX, 22904) +HANDLE_BAT(APINT_TYPE_PREFIX, 22905) +HANDLE_BAT(APINT_TYPE_PREFIX, 22906) +HANDLE_BAT(APINT_TYPE_PREFIX, 22907) +HANDLE_BAT(APINT_TYPE_PREFIX, 22908) +HANDLE_BAT(APINT_TYPE_PREFIX, 22909) +HANDLE_BAT(APINT_TYPE_PREFIX, 22910) +HANDLE_BAT(APINT_TYPE_PREFIX, 22911) +HANDLE_BAT(APINT_TYPE_PREFIX, 22912) +HANDLE_BAT(APINT_TYPE_PREFIX, 22913) +HANDLE_BAT(APINT_TYPE_PREFIX, 22914) +HANDLE_BAT(APINT_TYPE_PREFIX, 22915) +HANDLE_BAT(APINT_TYPE_PREFIX, 22916) +HANDLE_BAT(APINT_TYPE_PREFIX, 22917) +HANDLE_BAT(APINT_TYPE_PREFIX, 22918) +HANDLE_BAT(APINT_TYPE_PREFIX, 22919) +HANDLE_BAT(APINT_TYPE_PREFIX, 22920) +HANDLE_BAT(APINT_TYPE_PREFIX, 22921) +HANDLE_BAT(APINT_TYPE_PREFIX, 22922) +HANDLE_BAT(APINT_TYPE_PREFIX, 22923) +HANDLE_BAT(APINT_TYPE_PREFIX, 22924) +HANDLE_BAT(APINT_TYPE_PREFIX, 22925) +HANDLE_BAT(APINT_TYPE_PREFIX, 22926) +HANDLE_BAT(APINT_TYPE_PREFIX, 22927) +HANDLE_BAT(APINT_TYPE_PREFIX, 22928) +HANDLE_BAT(APINT_TYPE_PREFIX, 22929) +HANDLE_BAT(APINT_TYPE_PREFIX, 22930) +HANDLE_BAT(APINT_TYPE_PREFIX, 22931) +HANDLE_BAT(APINT_TYPE_PREFIX, 22932) +HANDLE_BAT(APINT_TYPE_PREFIX, 22933) +HANDLE_BAT(APINT_TYPE_PREFIX, 22934) +HANDLE_BAT(APINT_TYPE_PREFIX, 22935) +HANDLE_BAT(APINT_TYPE_PREFIX, 22936) +HANDLE_BAT(APINT_TYPE_PREFIX, 22937) +HANDLE_BAT(APINT_TYPE_PREFIX, 22938) +HANDLE_BAT(APINT_TYPE_PREFIX, 22939) +HANDLE_BAT(APINT_TYPE_PREFIX, 22940) +HANDLE_BAT(APINT_TYPE_PREFIX, 22941) +HANDLE_BAT(APINT_TYPE_PREFIX, 22942) +HANDLE_BAT(APINT_TYPE_PREFIX, 22943) +HANDLE_BAT(APINT_TYPE_PREFIX, 22944) +HANDLE_BAT(APINT_TYPE_PREFIX, 22945) +HANDLE_BAT(APINT_TYPE_PREFIX, 22946) +HANDLE_BAT(APINT_TYPE_PREFIX, 22947) +HANDLE_BAT(APINT_TYPE_PREFIX, 22948) +HANDLE_BAT(APINT_TYPE_PREFIX, 22949) +HANDLE_BAT(APINT_TYPE_PREFIX, 22950) +HANDLE_BAT(APINT_TYPE_PREFIX, 22951) +HANDLE_BAT(APINT_TYPE_PREFIX, 22952) +HANDLE_BAT(APINT_TYPE_PREFIX, 22953) +HANDLE_BAT(APINT_TYPE_PREFIX, 22954) +HANDLE_BAT(APINT_TYPE_PREFIX, 22955) +HANDLE_BAT(APINT_TYPE_PREFIX, 22956) +HANDLE_BAT(APINT_TYPE_PREFIX, 22957) +HANDLE_BAT(APINT_TYPE_PREFIX, 22958) +HANDLE_BAT(APINT_TYPE_PREFIX, 22959) +HANDLE_BAT(APINT_TYPE_PREFIX, 22960) +HANDLE_BAT(APINT_TYPE_PREFIX, 22961) +HANDLE_BAT(APINT_TYPE_PREFIX, 22962) +HANDLE_BAT(APINT_TYPE_PREFIX, 22963) +HANDLE_BAT(APINT_TYPE_PREFIX, 22964) +HANDLE_BAT(APINT_TYPE_PREFIX, 22965) +HANDLE_BAT(APINT_TYPE_PREFIX, 22966) +HANDLE_BAT(APINT_TYPE_PREFIX, 22967) +HANDLE_BAT(APINT_TYPE_PREFIX, 22968) +HANDLE_BAT(APINT_TYPE_PREFIX, 22969) +HANDLE_BAT(APINT_TYPE_PREFIX, 22970) +HANDLE_BAT(APINT_TYPE_PREFIX, 22971) +HANDLE_BAT(APINT_TYPE_PREFIX, 22972) +HANDLE_BAT(APINT_TYPE_PREFIX, 22973) +HANDLE_BAT(APINT_TYPE_PREFIX, 22974) +HANDLE_BAT(APINT_TYPE_PREFIX, 22975) +HANDLE_BAT(APINT_TYPE_PREFIX, 22976) +HANDLE_BAT(APINT_TYPE_PREFIX, 22977) +HANDLE_BAT(APINT_TYPE_PREFIX, 22978) +HANDLE_BAT(APINT_TYPE_PREFIX, 22979) +HANDLE_BAT(APINT_TYPE_PREFIX, 22980) +HANDLE_BAT(APINT_TYPE_PREFIX, 22981) +HANDLE_BAT(APINT_TYPE_PREFIX, 22982) +HANDLE_BAT(APINT_TYPE_PREFIX, 22983) +HANDLE_BAT(APINT_TYPE_PREFIX, 22984) +HANDLE_BAT(APINT_TYPE_PREFIX, 22985) +HANDLE_BAT(APINT_TYPE_PREFIX, 22986) +HANDLE_BAT(APINT_TYPE_PREFIX, 22987) +HANDLE_BAT(APINT_TYPE_PREFIX, 22988) +HANDLE_BAT(APINT_TYPE_PREFIX, 22989) +HANDLE_BAT(APINT_TYPE_PREFIX, 22990) +HANDLE_BAT(APINT_TYPE_PREFIX, 22991) +HANDLE_BAT(APINT_TYPE_PREFIX, 22992) +HANDLE_BAT(APINT_TYPE_PREFIX, 22993) +HANDLE_BAT(APINT_TYPE_PREFIX, 22994) +HANDLE_BAT(APINT_TYPE_PREFIX, 22995) +HANDLE_BAT(APINT_TYPE_PREFIX, 22996) +HANDLE_BAT(APINT_TYPE_PREFIX, 22997) +HANDLE_BAT(APINT_TYPE_PREFIX, 22998) +HANDLE_BAT(APINT_TYPE_PREFIX, 22999) +HANDLE_BAT(APINT_TYPE_PREFIX, 23000) +HANDLE_BAT(APINT_TYPE_PREFIX, 23001) +HANDLE_BAT(APINT_TYPE_PREFIX, 23002) +HANDLE_BAT(APINT_TYPE_PREFIX, 23003) +HANDLE_BAT(APINT_TYPE_PREFIX, 23004) +HANDLE_BAT(APINT_TYPE_PREFIX, 23005) +HANDLE_BAT(APINT_TYPE_PREFIX, 23006) +HANDLE_BAT(APINT_TYPE_PREFIX, 23007) +HANDLE_BAT(APINT_TYPE_PREFIX, 23008) +HANDLE_BAT(APINT_TYPE_PREFIX, 23009) +HANDLE_BAT(APINT_TYPE_PREFIX, 23010) +HANDLE_BAT(APINT_TYPE_PREFIX, 23011) +HANDLE_BAT(APINT_TYPE_PREFIX, 23012) +HANDLE_BAT(APINT_TYPE_PREFIX, 23013) +HANDLE_BAT(APINT_TYPE_PREFIX, 23014) +HANDLE_BAT(APINT_TYPE_PREFIX, 23015) +HANDLE_BAT(APINT_TYPE_PREFIX, 23016) +HANDLE_BAT(APINT_TYPE_PREFIX, 23017) +HANDLE_BAT(APINT_TYPE_PREFIX, 23018) +HANDLE_BAT(APINT_TYPE_PREFIX, 23019) +HANDLE_BAT(APINT_TYPE_PREFIX, 23020) +HANDLE_BAT(APINT_TYPE_PREFIX, 23021) +HANDLE_BAT(APINT_TYPE_PREFIX, 23022) +HANDLE_BAT(APINT_TYPE_PREFIX, 23023) +HANDLE_BAT(APINT_TYPE_PREFIX, 23024) +HANDLE_BAT(APINT_TYPE_PREFIX, 23025) +HANDLE_BAT(APINT_TYPE_PREFIX, 23026) +HANDLE_BAT(APINT_TYPE_PREFIX, 23027) +HANDLE_BAT(APINT_TYPE_PREFIX, 23028) +HANDLE_BAT(APINT_TYPE_PREFIX, 23029) +HANDLE_BAT(APINT_TYPE_PREFIX, 23030) +HANDLE_BAT(APINT_TYPE_PREFIX, 23031) +HANDLE_BAT(APINT_TYPE_PREFIX, 23032) +HANDLE_BAT(APINT_TYPE_PREFIX, 23033) +HANDLE_BAT(APINT_TYPE_PREFIX, 23034) +HANDLE_BAT(APINT_TYPE_PREFIX, 23035) +HANDLE_BAT(APINT_TYPE_PREFIX, 23036) +HANDLE_BAT(APINT_TYPE_PREFIX, 23037) +HANDLE_BAT(APINT_TYPE_PREFIX, 23038) +HANDLE_BAT(APINT_TYPE_PREFIX, 23039) +HANDLE_BAT(APINT_TYPE_PREFIX, 23040) +HANDLE_BAT(APINT_TYPE_PREFIX, 23041) +HANDLE_BAT(APINT_TYPE_PREFIX, 23042) +HANDLE_BAT(APINT_TYPE_PREFIX, 23043) +HANDLE_BAT(APINT_TYPE_PREFIX, 23044) +HANDLE_BAT(APINT_TYPE_PREFIX, 23045) +HANDLE_BAT(APINT_TYPE_PREFIX, 23046) +HANDLE_BAT(APINT_TYPE_PREFIX, 23047) +HANDLE_BAT(APINT_TYPE_PREFIX, 23048) +HANDLE_BAT(APINT_TYPE_PREFIX, 23049) +HANDLE_BAT(APINT_TYPE_PREFIX, 23050) +HANDLE_BAT(APINT_TYPE_PREFIX, 23051) +HANDLE_BAT(APINT_TYPE_PREFIX, 23052) +HANDLE_BAT(APINT_TYPE_PREFIX, 23053) +HANDLE_BAT(APINT_TYPE_PREFIX, 23054) +HANDLE_BAT(APINT_TYPE_PREFIX, 23055) +HANDLE_BAT(APINT_TYPE_PREFIX, 23056) +HANDLE_BAT(APINT_TYPE_PREFIX, 23057) +HANDLE_BAT(APINT_TYPE_PREFIX, 23058) +HANDLE_BAT(APINT_TYPE_PREFIX, 23059) +HANDLE_BAT(APINT_TYPE_PREFIX, 23060) +HANDLE_BAT(APINT_TYPE_PREFIX, 23061) +HANDLE_BAT(APINT_TYPE_PREFIX, 23062) +HANDLE_BAT(APINT_TYPE_PREFIX, 23063) +HANDLE_BAT(APINT_TYPE_PREFIX, 23064) +HANDLE_BAT(APINT_TYPE_PREFIX, 23065) +HANDLE_BAT(APINT_TYPE_PREFIX, 23066) +HANDLE_BAT(APINT_TYPE_PREFIX, 23067) +HANDLE_BAT(APINT_TYPE_PREFIX, 23068) +HANDLE_BAT(APINT_TYPE_PREFIX, 23069) +HANDLE_BAT(APINT_TYPE_PREFIX, 23070) +HANDLE_BAT(APINT_TYPE_PREFIX, 23071) +HANDLE_BAT(APINT_TYPE_PREFIX, 23072) +HANDLE_BAT(APINT_TYPE_PREFIX, 23073) +HANDLE_BAT(APINT_TYPE_PREFIX, 23074) +HANDLE_BAT(APINT_TYPE_PREFIX, 23075) +HANDLE_BAT(APINT_TYPE_PREFIX, 23076) +HANDLE_BAT(APINT_TYPE_PREFIX, 23077) +HANDLE_BAT(APINT_TYPE_PREFIX, 23078) +HANDLE_BAT(APINT_TYPE_PREFIX, 23079) +HANDLE_BAT(APINT_TYPE_PREFIX, 23080) +HANDLE_BAT(APINT_TYPE_PREFIX, 23081) +HANDLE_BAT(APINT_TYPE_PREFIX, 23082) +HANDLE_BAT(APINT_TYPE_PREFIX, 23083) +HANDLE_BAT(APINT_TYPE_PREFIX, 23084) +HANDLE_BAT(APINT_TYPE_PREFIX, 23085) +HANDLE_BAT(APINT_TYPE_PREFIX, 23086) +HANDLE_BAT(APINT_TYPE_PREFIX, 23087) +HANDLE_BAT(APINT_TYPE_PREFIX, 23088) +HANDLE_BAT(APINT_TYPE_PREFIX, 23089) +HANDLE_BAT(APINT_TYPE_PREFIX, 23090) +HANDLE_BAT(APINT_TYPE_PREFIX, 23091) +HANDLE_BAT(APINT_TYPE_PREFIX, 23092) +HANDLE_BAT(APINT_TYPE_PREFIX, 23093) +HANDLE_BAT(APINT_TYPE_PREFIX, 23094) +HANDLE_BAT(APINT_TYPE_PREFIX, 23095) +HANDLE_BAT(APINT_TYPE_PREFIX, 23096) +HANDLE_BAT(APINT_TYPE_PREFIX, 23097) +HANDLE_BAT(APINT_TYPE_PREFIX, 23098) +HANDLE_BAT(APINT_TYPE_PREFIX, 23099) +HANDLE_BAT(APINT_TYPE_PREFIX, 23100) +HANDLE_BAT(APINT_TYPE_PREFIX, 23101) +HANDLE_BAT(APINT_TYPE_PREFIX, 23102) +HANDLE_BAT(APINT_TYPE_PREFIX, 23103) +HANDLE_BAT(APINT_TYPE_PREFIX, 23104) +HANDLE_BAT(APINT_TYPE_PREFIX, 23105) +HANDLE_BAT(APINT_TYPE_PREFIX, 23106) +HANDLE_BAT(APINT_TYPE_PREFIX, 23107) +HANDLE_BAT(APINT_TYPE_PREFIX, 23108) +HANDLE_BAT(APINT_TYPE_PREFIX, 23109) +HANDLE_BAT(APINT_TYPE_PREFIX, 23110) +HANDLE_BAT(APINT_TYPE_PREFIX, 23111) +HANDLE_BAT(APINT_TYPE_PREFIX, 23112) +HANDLE_BAT(APINT_TYPE_PREFIX, 23113) +HANDLE_BAT(APINT_TYPE_PREFIX, 23114) +HANDLE_BAT(APINT_TYPE_PREFIX, 23115) +HANDLE_BAT(APINT_TYPE_PREFIX, 23116) +HANDLE_BAT(APINT_TYPE_PREFIX, 23117) +HANDLE_BAT(APINT_TYPE_PREFIX, 23118) +HANDLE_BAT(APINT_TYPE_PREFIX, 23119) +HANDLE_BAT(APINT_TYPE_PREFIX, 23120) +HANDLE_BAT(APINT_TYPE_PREFIX, 23121) +HANDLE_BAT(APINT_TYPE_PREFIX, 23122) +HANDLE_BAT(APINT_TYPE_PREFIX, 23123) +HANDLE_BAT(APINT_TYPE_PREFIX, 23124) +HANDLE_BAT(APINT_TYPE_PREFIX, 23125) +HANDLE_BAT(APINT_TYPE_PREFIX, 23126) +HANDLE_BAT(APINT_TYPE_PREFIX, 23127) +HANDLE_BAT(APINT_TYPE_PREFIX, 23128) +HANDLE_BAT(APINT_TYPE_PREFIX, 23129) +HANDLE_BAT(APINT_TYPE_PREFIX, 23130) +HANDLE_BAT(APINT_TYPE_PREFIX, 23131) +HANDLE_BAT(APINT_TYPE_PREFIX, 23132) +HANDLE_BAT(APINT_TYPE_PREFIX, 23133) +HANDLE_BAT(APINT_TYPE_PREFIX, 23134) +HANDLE_BAT(APINT_TYPE_PREFIX, 23135) +HANDLE_BAT(APINT_TYPE_PREFIX, 23136) +HANDLE_BAT(APINT_TYPE_PREFIX, 23137) +HANDLE_BAT(APINT_TYPE_PREFIX, 23138) +HANDLE_BAT(APINT_TYPE_PREFIX, 23139) +HANDLE_BAT(APINT_TYPE_PREFIX, 23140) +HANDLE_BAT(APINT_TYPE_PREFIX, 23141) +HANDLE_BAT(APINT_TYPE_PREFIX, 23142) +HANDLE_BAT(APINT_TYPE_PREFIX, 23143) +HANDLE_BAT(APINT_TYPE_PREFIX, 23144) +HANDLE_BAT(APINT_TYPE_PREFIX, 23145) +HANDLE_BAT(APINT_TYPE_PREFIX, 23146) +HANDLE_BAT(APINT_TYPE_PREFIX, 23147) +HANDLE_BAT(APINT_TYPE_PREFIX, 23148) +HANDLE_BAT(APINT_TYPE_PREFIX, 23149) +HANDLE_BAT(APINT_TYPE_PREFIX, 23150) +HANDLE_BAT(APINT_TYPE_PREFIX, 23151) +HANDLE_BAT(APINT_TYPE_PREFIX, 23152) +HANDLE_BAT(APINT_TYPE_PREFIX, 23153) +HANDLE_BAT(APINT_TYPE_PREFIX, 23154) +HANDLE_BAT(APINT_TYPE_PREFIX, 23155) +HANDLE_BAT(APINT_TYPE_PREFIX, 23156) +HANDLE_BAT(APINT_TYPE_PREFIX, 23157) +HANDLE_BAT(APINT_TYPE_PREFIX, 23158) +HANDLE_BAT(APINT_TYPE_PREFIX, 23159) +HANDLE_BAT(APINT_TYPE_PREFIX, 23160) +HANDLE_BAT(APINT_TYPE_PREFIX, 23161) +HANDLE_BAT(APINT_TYPE_PREFIX, 23162) +HANDLE_BAT(APINT_TYPE_PREFIX, 23163) +HANDLE_BAT(APINT_TYPE_PREFIX, 23164) +HANDLE_BAT(APINT_TYPE_PREFIX, 23165) +HANDLE_BAT(APINT_TYPE_PREFIX, 23166) +HANDLE_BAT(APINT_TYPE_PREFIX, 23167) +HANDLE_BAT(APINT_TYPE_PREFIX, 23168) +HANDLE_BAT(APINT_TYPE_PREFIX, 23169) +HANDLE_BAT(APINT_TYPE_PREFIX, 23170) +HANDLE_BAT(APINT_TYPE_PREFIX, 23171) +HANDLE_BAT(APINT_TYPE_PREFIX, 23172) +HANDLE_BAT(APINT_TYPE_PREFIX, 23173) +HANDLE_BAT(APINT_TYPE_PREFIX, 23174) +HANDLE_BAT(APINT_TYPE_PREFIX, 23175) +HANDLE_BAT(APINT_TYPE_PREFIX, 23176) +HANDLE_BAT(APINT_TYPE_PREFIX, 23177) +HANDLE_BAT(APINT_TYPE_PREFIX, 23178) +HANDLE_BAT(APINT_TYPE_PREFIX, 23179) +HANDLE_BAT(APINT_TYPE_PREFIX, 23180) +HANDLE_BAT(APINT_TYPE_PREFIX, 23181) +HANDLE_BAT(APINT_TYPE_PREFIX, 23182) +HANDLE_BAT(APINT_TYPE_PREFIX, 23183) +HANDLE_BAT(APINT_TYPE_PREFIX, 23184) +HANDLE_BAT(APINT_TYPE_PREFIX, 23185) +HANDLE_BAT(APINT_TYPE_PREFIX, 23186) +HANDLE_BAT(APINT_TYPE_PREFIX, 23187) +HANDLE_BAT(APINT_TYPE_PREFIX, 23188) +HANDLE_BAT(APINT_TYPE_PREFIX, 23189) +HANDLE_BAT(APINT_TYPE_PREFIX, 23190) +HANDLE_BAT(APINT_TYPE_PREFIX, 23191) +HANDLE_BAT(APINT_TYPE_PREFIX, 23192) +HANDLE_BAT(APINT_TYPE_PREFIX, 23193) +HANDLE_BAT(APINT_TYPE_PREFIX, 23194) +HANDLE_BAT(APINT_TYPE_PREFIX, 23195) +HANDLE_BAT(APINT_TYPE_PREFIX, 23196) +HANDLE_BAT(APINT_TYPE_PREFIX, 23197) +HANDLE_BAT(APINT_TYPE_PREFIX, 23198) +HANDLE_BAT(APINT_TYPE_PREFIX, 23199) +HANDLE_BAT(APINT_TYPE_PREFIX, 23200) +HANDLE_BAT(APINT_TYPE_PREFIX, 23201) +HANDLE_BAT(APINT_TYPE_PREFIX, 23202) +HANDLE_BAT(APINT_TYPE_PREFIX, 23203) +HANDLE_BAT(APINT_TYPE_PREFIX, 23204) +HANDLE_BAT(APINT_TYPE_PREFIX, 23205) +HANDLE_BAT(APINT_TYPE_PREFIX, 23206) +HANDLE_BAT(APINT_TYPE_PREFIX, 23207) +HANDLE_BAT(APINT_TYPE_PREFIX, 23208) +HANDLE_BAT(APINT_TYPE_PREFIX, 23209) +HANDLE_BAT(APINT_TYPE_PREFIX, 23210) +HANDLE_BAT(APINT_TYPE_PREFIX, 23211) +HANDLE_BAT(APINT_TYPE_PREFIX, 23212) +HANDLE_BAT(APINT_TYPE_PREFIX, 23213) +HANDLE_BAT(APINT_TYPE_PREFIX, 23214) +HANDLE_BAT(APINT_TYPE_PREFIX, 23215) +HANDLE_BAT(APINT_TYPE_PREFIX, 23216) +HANDLE_BAT(APINT_TYPE_PREFIX, 23217) +HANDLE_BAT(APINT_TYPE_PREFIX, 23218) +HANDLE_BAT(APINT_TYPE_PREFIX, 23219) +HANDLE_BAT(APINT_TYPE_PREFIX, 23220) +HANDLE_BAT(APINT_TYPE_PREFIX, 23221) +HANDLE_BAT(APINT_TYPE_PREFIX, 23222) +HANDLE_BAT(APINT_TYPE_PREFIX, 23223) +HANDLE_BAT(APINT_TYPE_PREFIX, 23224) +HANDLE_BAT(APINT_TYPE_PREFIX, 23225) +HANDLE_BAT(APINT_TYPE_PREFIX, 23226) +HANDLE_BAT(APINT_TYPE_PREFIX, 23227) +HANDLE_BAT(APINT_TYPE_PREFIX, 23228) +HANDLE_BAT(APINT_TYPE_PREFIX, 23229) +HANDLE_BAT(APINT_TYPE_PREFIX, 23230) +HANDLE_BAT(APINT_TYPE_PREFIX, 23231) +HANDLE_BAT(APINT_TYPE_PREFIX, 23232) +HANDLE_BAT(APINT_TYPE_PREFIX, 23233) +HANDLE_BAT(APINT_TYPE_PREFIX, 23234) +HANDLE_BAT(APINT_TYPE_PREFIX, 23235) +HANDLE_BAT(APINT_TYPE_PREFIX, 23236) +HANDLE_BAT(APINT_TYPE_PREFIX, 23237) +HANDLE_BAT(APINT_TYPE_PREFIX, 23238) +HANDLE_BAT(APINT_TYPE_PREFIX, 23239) +HANDLE_BAT(APINT_TYPE_PREFIX, 23240) +HANDLE_BAT(APINT_TYPE_PREFIX, 23241) +HANDLE_BAT(APINT_TYPE_PREFIX, 23242) +HANDLE_BAT(APINT_TYPE_PREFIX, 23243) +HANDLE_BAT(APINT_TYPE_PREFIX, 23244) +HANDLE_BAT(APINT_TYPE_PREFIX, 23245) +HANDLE_BAT(APINT_TYPE_PREFIX, 23246) +HANDLE_BAT(APINT_TYPE_PREFIX, 23247) +HANDLE_BAT(APINT_TYPE_PREFIX, 23248) +HANDLE_BAT(APINT_TYPE_PREFIX, 23249) +HANDLE_BAT(APINT_TYPE_PREFIX, 23250) +HANDLE_BAT(APINT_TYPE_PREFIX, 23251) +HANDLE_BAT(APINT_TYPE_PREFIX, 23252) +HANDLE_BAT(APINT_TYPE_PREFIX, 23253) +HANDLE_BAT(APINT_TYPE_PREFIX, 23254) +HANDLE_BAT(APINT_TYPE_PREFIX, 23255) +HANDLE_BAT(APINT_TYPE_PREFIX, 23256) +HANDLE_BAT(APINT_TYPE_PREFIX, 23257) +HANDLE_BAT(APINT_TYPE_PREFIX, 23258) +HANDLE_BAT(APINT_TYPE_PREFIX, 23259) +HANDLE_BAT(APINT_TYPE_PREFIX, 23260) +HANDLE_BAT(APINT_TYPE_PREFIX, 23261) +HANDLE_BAT(APINT_TYPE_PREFIX, 23262) +HANDLE_BAT(APINT_TYPE_PREFIX, 23263) +HANDLE_BAT(APINT_TYPE_PREFIX, 23264) +HANDLE_BAT(APINT_TYPE_PREFIX, 23265) +HANDLE_BAT(APINT_TYPE_PREFIX, 23266) +HANDLE_BAT(APINT_TYPE_PREFIX, 23267) +HANDLE_BAT(APINT_TYPE_PREFIX, 23268) +HANDLE_BAT(APINT_TYPE_PREFIX, 23269) +HANDLE_BAT(APINT_TYPE_PREFIX, 23270) +HANDLE_BAT(APINT_TYPE_PREFIX, 23271) +HANDLE_BAT(APINT_TYPE_PREFIX, 23272) +HANDLE_BAT(APINT_TYPE_PREFIX, 23273) +HANDLE_BAT(APINT_TYPE_PREFIX, 23274) +HANDLE_BAT(APINT_TYPE_PREFIX, 23275) +HANDLE_BAT(APINT_TYPE_PREFIX, 23276) +HANDLE_BAT(APINT_TYPE_PREFIX, 23277) +HANDLE_BAT(APINT_TYPE_PREFIX, 23278) +HANDLE_BAT(APINT_TYPE_PREFIX, 23279) +HANDLE_BAT(APINT_TYPE_PREFIX, 23280) +HANDLE_BAT(APINT_TYPE_PREFIX, 23281) +HANDLE_BAT(APINT_TYPE_PREFIX, 23282) +HANDLE_BAT(APINT_TYPE_PREFIX, 23283) +HANDLE_BAT(APINT_TYPE_PREFIX, 23284) +HANDLE_BAT(APINT_TYPE_PREFIX, 23285) +HANDLE_BAT(APINT_TYPE_PREFIX, 23286) +HANDLE_BAT(APINT_TYPE_PREFIX, 23287) +HANDLE_BAT(APINT_TYPE_PREFIX, 23288) +HANDLE_BAT(APINT_TYPE_PREFIX, 23289) +HANDLE_BAT(APINT_TYPE_PREFIX, 23290) +HANDLE_BAT(APINT_TYPE_PREFIX, 23291) +HANDLE_BAT(APINT_TYPE_PREFIX, 23292) +HANDLE_BAT(APINT_TYPE_PREFIX, 23293) +HANDLE_BAT(APINT_TYPE_PREFIX, 23294) +HANDLE_BAT(APINT_TYPE_PREFIX, 23295) +HANDLE_BAT(APINT_TYPE_PREFIX, 23296) +HANDLE_BAT(APINT_TYPE_PREFIX, 23297) +HANDLE_BAT(APINT_TYPE_PREFIX, 23298) +HANDLE_BAT(APINT_TYPE_PREFIX, 23299) +HANDLE_BAT(APINT_TYPE_PREFIX, 23300) +HANDLE_BAT(APINT_TYPE_PREFIX, 23301) +HANDLE_BAT(APINT_TYPE_PREFIX, 23302) +HANDLE_BAT(APINT_TYPE_PREFIX, 23303) +HANDLE_BAT(APINT_TYPE_PREFIX, 23304) +HANDLE_BAT(APINT_TYPE_PREFIX, 23305) +HANDLE_BAT(APINT_TYPE_PREFIX, 23306) +HANDLE_BAT(APINT_TYPE_PREFIX, 23307) +HANDLE_BAT(APINT_TYPE_PREFIX, 23308) +HANDLE_BAT(APINT_TYPE_PREFIX, 23309) +HANDLE_BAT(APINT_TYPE_PREFIX, 23310) +HANDLE_BAT(APINT_TYPE_PREFIX, 23311) +HANDLE_BAT(APINT_TYPE_PREFIX, 23312) +HANDLE_BAT(APINT_TYPE_PREFIX, 23313) +HANDLE_BAT(APINT_TYPE_PREFIX, 23314) +HANDLE_BAT(APINT_TYPE_PREFIX, 23315) +HANDLE_BAT(APINT_TYPE_PREFIX, 23316) +HANDLE_BAT(APINT_TYPE_PREFIX, 23317) +HANDLE_BAT(APINT_TYPE_PREFIX, 23318) +HANDLE_BAT(APINT_TYPE_PREFIX, 23319) +HANDLE_BAT(APINT_TYPE_PREFIX, 23320) +HANDLE_BAT(APINT_TYPE_PREFIX, 23321) +HANDLE_BAT(APINT_TYPE_PREFIX, 23322) +HANDLE_BAT(APINT_TYPE_PREFIX, 23323) +HANDLE_BAT(APINT_TYPE_PREFIX, 23324) +HANDLE_BAT(APINT_TYPE_PREFIX, 23325) +HANDLE_BAT(APINT_TYPE_PREFIX, 23326) +HANDLE_BAT(APINT_TYPE_PREFIX, 23327) +HANDLE_BAT(APINT_TYPE_PREFIX, 23328) +HANDLE_BAT(APINT_TYPE_PREFIX, 23329) +HANDLE_BAT(APINT_TYPE_PREFIX, 23330) +HANDLE_BAT(APINT_TYPE_PREFIX, 23331) +HANDLE_BAT(APINT_TYPE_PREFIX, 23332) +HANDLE_BAT(APINT_TYPE_PREFIX, 23333) +HANDLE_BAT(APINT_TYPE_PREFIX, 23334) +HANDLE_BAT(APINT_TYPE_PREFIX, 23335) +HANDLE_BAT(APINT_TYPE_PREFIX, 23336) +HANDLE_BAT(APINT_TYPE_PREFIX, 23337) +HANDLE_BAT(APINT_TYPE_PREFIX, 23338) +HANDLE_BAT(APINT_TYPE_PREFIX, 23339) +HANDLE_BAT(APINT_TYPE_PREFIX, 23340) +HANDLE_BAT(APINT_TYPE_PREFIX, 23341) +HANDLE_BAT(APINT_TYPE_PREFIX, 23342) +HANDLE_BAT(APINT_TYPE_PREFIX, 23343) +HANDLE_BAT(APINT_TYPE_PREFIX, 23344) +HANDLE_BAT(APINT_TYPE_PREFIX, 23345) +HANDLE_BAT(APINT_TYPE_PREFIX, 23346) +HANDLE_BAT(APINT_TYPE_PREFIX, 23347) +HANDLE_BAT(APINT_TYPE_PREFIX, 23348) +HANDLE_BAT(APINT_TYPE_PREFIX, 23349) +HANDLE_BAT(APINT_TYPE_PREFIX, 23350) +HANDLE_BAT(APINT_TYPE_PREFIX, 23351) +HANDLE_BAT(APINT_TYPE_PREFIX, 23352) +HANDLE_BAT(APINT_TYPE_PREFIX, 23353) +HANDLE_BAT(APINT_TYPE_PREFIX, 23354) +HANDLE_BAT(APINT_TYPE_PREFIX, 23355) +HANDLE_BAT(APINT_TYPE_PREFIX, 23356) +HANDLE_BAT(APINT_TYPE_PREFIX, 23357) +HANDLE_BAT(APINT_TYPE_PREFIX, 23358) +HANDLE_BAT(APINT_TYPE_PREFIX, 23359) +HANDLE_BAT(APINT_TYPE_PREFIX, 23360) +HANDLE_BAT(APINT_TYPE_PREFIX, 23361) +HANDLE_BAT(APINT_TYPE_PREFIX, 23362) +HANDLE_BAT(APINT_TYPE_PREFIX, 23363) +HANDLE_BAT(APINT_TYPE_PREFIX, 23364) +HANDLE_BAT(APINT_TYPE_PREFIX, 23365) +HANDLE_BAT(APINT_TYPE_PREFIX, 23366) +HANDLE_BAT(APINT_TYPE_PREFIX, 23367) +HANDLE_BAT(APINT_TYPE_PREFIX, 23368) +HANDLE_BAT(APINT_TYPE_PREFIX, 23369) +HANDLE_BAT(APINT_TYPE_PREFIX, 23370) +HANDLE_BAT(APINT_TYPE_PREFIX, 23371) +HANDLE_BAT(APINT_TYPE_PREFIX, 23372) +HANDLE_BAT(APINT_TYPE_PREFIX, 23373) +HANDLE_BAT(APINT_TYPE_PREFIX, 23374) +HANDLE_BAT(APINT_TYPE_PREFIX, 23375) +HANDLE_BAT(APINT_TYPE_PREFIX, 23376) +HANDLE_BAT(APINT_TYPE_PREFIX, 23377) +HANDLE_BAT(APINT_TYPE_PREFIX, 23378) +HANDLE_BAT(APINT_TYPE_PREFIX, 23379) +HANDLE_BAT(APINT_TYPE_PREFIX, 23380) +HANDLE_BAT(APINT_TYPE_PREFIX, 23381) +HANDLE_BAT(APINT_TYPE_PREFIX, 23382) +HANDLE_BAT(APINT_TYPE_PREFIX, 23383) +HANDLE_BAT(APINT_TYPE_PREFIX, 23384) +HANDLE_BAT(APINT_TYPE_PREFIX, 23385) +HANDLE_BAT(APINT_TYPE_PREFIX, 23386) +HANDLE_BAT(APINT_TYPE_PREFIX, 23387) +HANDLE_BAT(APINT_TYPE_PREFIX, 23388) +HANDLE_BAT(APINT_TYPE_PREFIX, 23389) +HANDLE_BAT(APINT_TYPE_PREFIX, 23390) +HANDLE_BAT(APINT_TYPE_PREFIX, 23391) +HANDLE_BAT(APINT_TYPE_PREFIX, 23392) +HANDLE_BAT(APINT_TYPE_PREFIX, 23393) +HANDLE_BAT(APINT_TYPE_PREFIX, 23394) +HANDLE_BAT(APINT_TYPE_PREFIX, 23395) +HANDLE_BAT(APINT_TYPE_PREFIX, 23396) +HANDLE_BAT(APINT_TYPE_PREFIX, 23397) +HANDLE_BAT(APINT_TYPE_PREFIX, 23398) +HANDLE_BAT(APINT_TYPE_PREFIX, 23399) +HANDLE_BAT(APINT_TYPE_PREFIX, 23400) +HANDLE_BAT(APINT_TYPE_PREFIX, 23401) +HANDLE_BAT(APINT_TYPE_PREFIX, 23402) +HANDLE_BAT(APINT_TYPE_PREFIX, 23403) +HANDLE_BAT(APINT_TYPE_PREFIX, 23404) +HANDLE_BAT(APINT_TYPE_PREFIX, 23405) +HANDLE_BAT(APINT_TYPE_PREFIX, 23406) +HANDLE_BAT(APINT_TYPE_PREFIX, 23407) +HANDLE_BAT(APINT_TYPE_PREFIX, 23408) +HANDLE_BAT(APINT_TYPE_PREFIX, 23409) +HANDLE_BAT(APINT_TYPE_PREFIX, 23410) +HANDLE_BAT(APINT_TYPE_PREFIX, 23411) +HANDLE_BAT(APINT_TYPE_PREFIX, 23412) +HANDLE_BAT(APINT_TYPE_PREFIX, 23413) +HANDLE_BAT(APINT_TYPE_PREFIX, 23414) +HANDLE_BAT(APINT_TYPE_PREFIX, 23415) +HANDLE_BAT(APINT_TYPE_PREFIX, 23416) +HANDLE_BAT(APINT_TYPE_PREFIX, 23417) +HANDLE_BAT(APINT_TYPE_PREFIX, 23418) +HANDLE_BAT(APINT_TYPE_PREFIX, 23419) +HANDLE_BAT(APINT_TYPE_PREFIX, 23420) +HANDLE_BAT(APINT_TYPE_PREFIX, 23421) +HANDLE_BAT(APINT_TYPE_PREFIX, 23422) +HANDLE_BAT(APINT_TYPE_PREFIX, 23423) +HANDLE_BAT(APINT_TYPE_PREFIX, 23424) +HANDLE_BAT(APINT_TYPE_PREFIX, 23425) +HANDLE_BAT(APINT_TYPE_PREFIX, 23426) +HANDLE_BAT(APINT_TYPE_PREFIX, 23427) +HANDLE_BAT(APINT_TYPE_PREFIX, 23428) +HANDLE_BAT(APINT_TYPE_PREFIX, 23429) +HANDLE_BAT(APINT_TYPE_PREFIX, 23430) +HANDLE_BAT(APINT_TYPE_PREFIX, 23431) +HANDLE_BAT(APINT_TYPE_PREFIX, 23432) +HANDLE_BAT(APINT_TYPE_PREFIX, 23433) +HANDLE_BAT(APINT_TYPE_PREFIX, 23434) +HANDLE_BAT(APINT_TYPE_PREFIX, 23435) +HANDLE_BAT(APINT_TYPE_PREFIX, 23436) +HANDLE_BAT(APINT_TYPE_PREFIX, 23437) +HANDLE_BAT(APINT_TYPE_PREFIX, 23438) +HANDLE_BAT(APINT_TYPE_PREFIX, 23439) +HANDLE_BAT(APINT_TYPE_PREFIX, 23440) +HANDLE_BAT(APINT_TYPE_PREFIX, 23441) +HANDLE_BAT(APINT_TYPE_PREFIX, 23442) +HANDLE_BAT(APINT_TYPE_PREFIX, 23443) +HANDLE_BAT(APINT_TYPE_PREFIX, 23444) +HANDLE_BAT(APINT_TYPE_PREFIX, 23445) +HANDLE_BAT(APINT_TYPE_PREFIX, 23446) +HANDLE_BAT(APINT_TYPE_PREFIX, 23447) +HANDLE_BAT(APINT_TYPE_PREFIX, 23448) +HANDLE_BAT(APINT_TYPE_PREFIX, 23449) +HANDLE_BAT(APINT_TYPE_PREFIX, 23450) +HANDLE_BAT(APINT_TYPE_PREFIX, 23451) +HANDLE_BAT(APINT_TYPE_PREFIX, 23452) +HANDLE_BAT(APINT_TYPE_PREFIX, 23453) +HANDLE_BAT(APINT_TYPE_PREFIX, 23454) +HANDLE_BAT(APINT_TYPE_PREFIX, 23455) +HANDLE_BAT(APINT_TYPE_PREFIX, 23456) +HANDLE_BAT(APINT_TYPE_PREFIX, 23457) +HANDLE_BAT(APINT_TYPE_PREFIX, 23458) +HANDLE_BAT(APINT_TYPE_PREFIX, 23459) +HANDLE_BAT(APINT_TYPE_PREFIX, 23460) +HANDLE_BAT(APINT_TYPE_PREFIX, 23461) +HANDLE_BAT(APINT_TYPE_PREFIX, 23462) +HANDLE_BAT(APINT_TYPE_PREFIX, 23463) +HANDLE_BAT(APINT_TYPE_PREFIX, 23464) +HANDLE_BAT(APINT_TYPE_PREFIX, 23465) +HANDLE_BAT(APINT_TYPE_PREFIX, 23466) +HANDLE_BAT(APINT_TYPE_PREFIX, 23467) +HANDLE_BAT(APINT_TYPE_PREFIX, 23468) +HANDLE_BAT(APINT_TYPE_PREFIX, 23469) +HANDLE_BAT(APINT_TYPE_PREFIX, 23470) +HANDLE_BAT(APINT_TYPE_PREFIX, 23471) +HANDLE_BAT(APINT_TYPE_PREFIX, 23472) +HANDLE_BAT(APINT_TYPE_PREFIX, 23473) +HANDLE_BAT(APINT_TYPE_PREFIX, 23474) +HANDLE_BAT(APINT_TYPE_PREFIX, 23475) +HANDLE_BAT(APINT_TYPE_PREFIX, 23476) +HANDLE_BAT(APINT_TYPE_PREFIX, 23477) +HANDLE_BAT(APINT_TYPE_PREFIX, 23478) +HANDLE_BAT(APINT_TYPE_PREFIX, 23479) +HANDLE_BAT(APINT_TYPE_PREFIX, 23480) +HANDLE_BAT(APINT_TYPE_PREFIX, 23481) +HANDLE_BAT(APINT_TYPE_PREFIX, 23482) +HANDLE_BAT(APINT_TYPE_PREFIX, 23483) +HANDLE_BAT(APINT_TYPE_PREFIX, 23484) +HANDLE_BAT(APINT_TYPE_PREFIX, 23485) +HANDLE_BAT(APINT_TYPE_PREFIX, 23486) +HANDLE_BAT(APINT_TYPE_PREFIX, 23487) +HANDLE_BAT(APINT_TYPE_PREFIX, 23488) +HANDLE_BAT(APINT_TYPE_PREFIX, 23489) +HANDLE_BAT(APINT_TYPE_PREFIX, 23490) +HANDLE_BAT(APINT_TYPE_PREFIX, 23491) +HANDLE_BAT(APINT_TYPE_PREFIX, 23492) +HANDLE_BAT(APINT_TYPE_PREFIX, 23493) +HANDLE_BAT(APINT_TYPE_PREFIX, 23494) +HANDLE_BAT(APINT_TYPE_PREFIX, 23495) +HANDLE_BAT(APINT_TYPE_PREFIX, 23496) +HANDLE_BAT(APINT_TYPE_PREFIX, 23497) +HANDLE_BAT(APINT_TYPE_PREFIX, 23498) +HANDLE_BAT(APINT_TYPE_PREFIX, 23499) +HANDLE_BAT(APINT_TYPE_PREFIX, 23500) +HANDLE_BAT(APINT_TYPE_PREFIX, 23501) +HANDLE_BAT(APINT_TYPE_PREFIX, 23502) +HANDLE_BAT(APINT_TYPE_PREFIX, 23503) +HANDLE_BAT(APINT_TYPE_PREFIX, 23504) +HANDLE_BAT(APINT_TYPE_PREFIX, 23505) +HANDLE_BAT(APINT_TYPE_PREFIX, 23506) +HANDLE_BAT(APINT_TYPE_PREFIX, 23507) +HANDLE_BAT(APINT_TYPE_PREFIX, 23508) +HANDLE_BAT(APINT_TYPE_PREFIX, 23509) +HANDLE_BAT(APINT_TYPE_PREFIX, 23510) +HANDLE_BAT(APINT_TYPE_PREFIX, 23511) +HANDLE_BAT(APINT_TYPE_PREFIX, 23512) +HANDLE_BAT(APINT_TYPE_PREFIX, 23513) +HANDLE_BAT(APINT_TYPE_PREFIX, 23514) +HANDLE_BAT(APINT_TYPE_PREFIX, 23515) +HANDLE_BAT(APINT_TYPE_PREFIX, 23516) +HANDLE_BAT(APINT_TYPE_PREFIX, 23517) +HANDLE_BAT(APINT_TYPE_PREFIX, 23518) +HANDLE_BAT(APINT_TYPE_PREFIX, 23519) +HANDLE_BAT(APINT_TYPE_PREFIX, 23520) +HANDLE_BAT(APINT_TYPE_PREFIX, 23521) +HANDLE_BAT(APINT_TYPE_PREFIX, 23522) +HANDLE_BAT(APINT_TYPE_PREFIX, 23523) +HANDLE_BAT(APINT_TYPE_PREFIX, 23524) +HANDLE_BAT(APINT_TYPE_PREFIX, 23525) +HANDLE_BAT(APINT_TYPE_PREFIX, 23526) +HANDLE_BAT(APINT_TYPE_PREFIX, 23527) +HANDLE_BAT(APINT_TYPE_PREFIX, 23528) +HANDLE_BAT(APINT_TYPE_PREFIX, 23529) +HANDLE_BAT(APINT_TYPE_PREFIX, 23530) +HANDLE_BAT(APINT_TYPE_PREFIX, 23531) +HANDLE_BAT(APINT_TYPE_PREFIX, 23532) +HANDLE_BAT(APINT_TYPE_PREFIX, 23533) +HANDLE_BAT(APINT_TYPE_PREFIX, 23534) +HANDLE_BAT(APINT_TYPE_PREFIX, 23535) +HANDLE_BAT(APINT_TYPE_PREFIX, 23536) +HANDLE_BAT(APINT_TYPE_PREFIX, 23537) +HANDLE_BAT(APINT_TYPE_PREFIX, 23538) +HANDLE_BAT(APINT_TYPE_PREFIX, 23539) +HANDLE_BAT(APINT_TYPE_PREFIX, 23540) +HANDLE_BAT(APINT_TYPE_PREFIX, 23541) +HANDLE_BAT(APINT_TYPE_PREFIX, 23542) +HANDLE_BAT(APINT_TYPE_PREFIX, 23543) +HANDLE_BAT(APINT_TYPE_PREFIX, 23544) +HANDLE_BAT(APINT_TYPE_PREFIX, 23545) +HANDLE_BAT(APINT_TYPE_PREFIX, 23546) +HANDLE_BAT(APINT_TYPE_PREFIX, 23547) +HANDLE_BAT(APINT_TYPE_PREFIX, 23548) +HANDLE_BAT(APINT_TYPE_PREFIX, 23549) +HANDLE_BAT(APINT_TYPE_PREFIX, 23550) +HANDLE_BAT(APINT_TYPE_PREFIX, 23551) +HANDLE_BAT(APINT_TYPE_PREFIX, 23552) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 23 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 23553) +HANDLE_BAT(, 23554) +HANDLE_BAT(, 23555) +HANDLE_BAT(, 23556) +HANDLE_BAT(, 23557) +HANDLE_BAT(, 23558) +HANDLE_BAT(, 23559) +HANDLE_BAT(, 23560) +HANDLE_BAT(, 23561) +HANDLE_BAT(, 23562) +HANDLE_BAT(, 23563) +HANDLE_BAT(, 23564) +HANDLE_BAT(, 23565) +HANDLE_BAT(, 23566) +HANDLE_BAT(, 23567) +HANDLE_BAT(, 23568) +HANDLE_BAT(, 23569) +HANDLE_BAT(, 23570) +HANDLE_BAT(, 23571) +HANDLE_BAT(, 23572) +HANDLE_BAT(, 23573) +HANDLE_BAT(, 23574) +HANDLE_BAT(, 23575) +HANDLE_BAT(, 23576) +HANDLE_BAT(, 23577) +HANDLE_BAT(, 23578) +HANDLE_BAT(, 23579) +HANDLE_BAT(, 23580) +HANDLE_BAT(, 23581) +HANDLE_BAT(, 23582) +HANDLE_BAT(, 23583) +HANDLE_BAT(, 23584) +HANDLE_BAT(, 23585) +HANDLE_BAT(, 23586) +HANDLE_BAT(, 23587) +HANDLE_BAT(, 23588) +HANDLE_BAT(, 23589) +HANDLE_BAT(, 23590) +HANDLE_BAT(, 23591) +HANDLE_BAT(, 23592) +HANDLE_BAT(, 23593) +HANDLE_BAT(, 23594) +HANDLE_BAT(, 23595) +HANDLE_BAT(, 23596) +HANDLE_BAT(, 23597) +HANDLE_BAT(, 23598) +HANDLE_BAT(, 23599) +HANDLE_BAT(, 23600) +HANDLE_BAT(, 23601) +HANDLE_BAT(, 23602) +HANDLE_BAT(, 23603) +HANDLE_BAT(, 23604) +HANDLE_BAT(, 23605) +HANDLE_BAT(, 23606) +HANDLE_BAT(, 23607) +HANDLE_BAT(, 23608) +HANDLE_BAT(, 23609) +HANDLE_BAT(, 23610) +HANDLE_BAT(, 23611) +HANDLE_BAT(, 23612) +HANDLE_BAT(, 23613) +HANDLE_BAT(, 23614) +HANDLE_BAT(, 23615) +HANDLE_BAT(, 23616) +HANDLE_BAT(, 23617) +HANDLE_BAT(, 23618) +HANDLE_BAT(, 23619) +HANDLE_BAT(, 23620) +HANDLE_BAT(, 23621) +HANDLE_BAT(, 23622) +HANDLE_BAT(, 23623) +HANDLE_BAT(, 23624) +HANDLE_BAT(, 23625) +HANDLE_BAT(, 23626) +HANDLE_BAT(, 23627) +HANDLE_BAT(, 23628) +HANDLE_BAT(, 23629) +HANDLE_BAT(, 23630) +HANDLE_BAT(, 23631) +HANDLE_BAT(, 23632) +HANDLE_BAT(, 23633) +HANDLE_BAT(, 23634) +HANDLE_BAT(, 23635) +HANDLE_BAT(, 23636) +HANDLE_BAT(, 23637) +HANDLE_BAT(, 23638) +HANDLE_BAT(, 23639) +HANDLE_BAT(, 23640) +HANDLE_BAT(, 23641) +HANDLE_BAT(, 23642) +HANDLE_BAT(, 23643) +HANDLE_BAT(, 23644) +HANDLE_BAT(, 23645) +HANDLE_BAT(, 23646) +HANDLE_BAT(, 23647) +HANDLE_BAT(, 23648) +HANDLE_BAT(, 23649) +HANDLE_BAT(, 23650) +HANDLE_BAT(, 23651) +HANDLE_BAT(, 23652) +HANDLE_BAT(, 23653) +HANDLE_BAT(, 23654) +HANDLE_BAT(, 23655) +HANDLE_BAT(, 23656) +HANDLE_BAT(, 23657) +HANDLE_BAT(, 23658) +HANDLE_BAT(, 23659) +HANDLE_BAT(, 23660) +HANDLE_BAT(, 23661) +HANDLE_BAT(, 23662) +HANDLE_BAT(, 23663) +HANDLE_BAT(, 23664) +HANDLE_BAT(, 23665) +HANDLE_BAT(, 23666) +HANDLE_BAT(, 23667) +HANDLE_BAT(, 23668) +HANDLE_BAT(, 23669) +HANDLE_BAT(, 23670) +HANDLE_BAT(, 23671) +HANDLE_BAT(, 23672) +HANDLE_BAT(, 23673) +HANDLE_BAT(, 23674) +HANDLE_BAT(, 23675) +HANDLE_BAT(, 23676) +HANDLE_BAT(, 23677) +HANDLE_BAT(, 23678) +HANDLE_BAT(, 23679) +HANDLE_BAT(, 23680) +HANDLE_BAT(, 23681) +HANDLE_BAT(, 23682) +HANDLE_BAT(, 23683) +HANDLE_BAT(, 23684) +HANDLE_BAT(, 23685) +HANDLE_BAT(, 23686) +HANDLE_BAT(, 23687) +HANDLE_BAT(, 23688) +HANDLE_BAT(, 23689) +HANDLE_BAT(, 23690) +HANDLE_BAT(, 23691) +HANDLE_BAT(, 23692) +HANDLE_BAT(, 23693) +HANDLE_BAT(, 23694) +HANDLE_BAT(, 23695) +HANDLE_BAT(, 23696) +HANDLE_BAT(, 23697) +HANDLE_BAT(, 23698) +HANDLE_BAT(, 23699) +HANDLE_BAT(, 23700) +HANDLE_BAT(, 23701) +HANDLE_BAT(, 23702) +HANDLE_BAT(, 23703) +HANDLE_BAT(, 23704) +HANDLE_BAT(, 23705) +HANDLE_BAT(, 23706) +HANDLE_BAT(, 23707) +HANDLE_BAT(, 23708) +HANDLE_BAT(, 23709) +HANDLE_BAT(, 23710) +HANDLE_BAT(, 23711) +HANDLE_BAT(, 23712) +HANDLE_BAT(, 23713) +HANDLE_BAT(, 23714) +HANDLE_BAT(, 23715) +HANDLE_BAT(, 23716) +HANDLE_BAT(, 23717) +HANDLE_BAT(, 23718) +HANDLE_BAT(, 23719) +HANDLE_BAT(, 23720) +HANDLE_BAT(, 23721) +HANDLE_BAT(, 23722) +HANDLE_BAT(, 23723) +HANDLE_BAT(, 23724) +HANDLE_BAT(, 23725) +HANDLE_BAT(, 23726) +HANDLE_BAT(, 23727) +HANDLE_BAT(, 23728) +HANDLE_BAT(, 23729) +HANDLE_BAT(, 23730) +HANDLE_BAT(, 23731) +HANDLE_BAT(, 23732) +HANDLE_BAT(, 23733) +HANDLE_BAT(, 23734) +HANDLE_BAT(, 23735) +HANDLE_BAT(, 23736) +HANDLE_BAT(, 23737) +HANDLE_BAT(, 23738) +HANDLE_BAT(, 23739) +HANDLE_BAT(, 23740) +HANDLE_BAT(, 23741) +HANDLE_BAT(, 23742) +HANDLE_BAT(, 23743) +HANDLE_BAT(, 23744) +HANDLE_BAT(, 23745) +HANDLE_BAT(, 23746) +HANDLE_BAT(, 23747) +HANDLE_BAT(, 23748) +HANDLE_BAT(, 23749) +HANDLE_BAT(, 23750) +HANDLE_BAT(, 23751) +HANDLE_BAT(, 23752) +HANDLE_BAT(, 23753) +HANDLE_BAT(, 23754) +HANDLE_BAT(, 23755) +HANDLE_BAT(, 23756) +HANDLE_BAT(, 23757) +HANDLE_BAT(, 23758) +HANDLE_BAT(, 23759) +HANDLE_BAT(, 23760) +HANDLE_BAT(, 23761) +HANDLE_BAT(, 23762) +HANDLE_BAT(, 23763) +HANDLE_BAT(, 23764) +HANDLE_BAT(, 23765) +HANDLE_BAT(, 23766) +HANDLE_BAT(, 23767) +HANDLE_BAT(, 23768) +HANDLE_BAT(, 23769) +HANDLE_BAT(, 23770) +HANDLE_BAT(, 23771) +HANDLE_BAT(, 23772) +HANDLE_BAT(, 23773) +HANDLE_BAT(, 23774) +HANDLE_BAT(, 23775) +HANDLE_BAT(, 23776) +HANDLE_BAT(, 23777) +HANDLE_BAT(, 23778) +HANDLE_BAT(, 23779) +HANDLE_BAT(, 23780) +HANDLE_BAT(, 23781) +HANDLE_BAT(, 23782) +HANDLE_BAT(, 23783) +HANDLE_BAT(, 23784) +HANDLE_BAT(, 23785) +HANDLE_BAT(, 23786) +HANDLE_BAT(, 23787) +HANDLE_BAT(, 23788) +HANDLE_BAT(, 23789) +HANDLE_BAT(, 23790) +HANDLE_BAT(, 23791) +HANDLE_BAT(, 23792) +HANDLE_BAT(, 23793) +HANDLE_BAT(, 23794) +HANDLE_BAT(, 23795) +HANDLE_BAT(, 23796) +HANDLE_BAT(, 23797) +HANDLE_BAT(, 23798) +HANDLE_BAT(, 23799) +HANDLE_BAT(, 23800) +HANDLE_BAT(, 23801) +HANDLE_BAT(, 23802) +HANDLE_BAT(, 23803) +HANDLE_BAT(, 23804) +HANDLE_BAT(, 23805) +HANDLE_BAT(, 23806) +HANDLE_BAT(, 23807) +HANDLE_BAT(, 23808) +HANDLE_BAT(, 23809) +HANDLE_BAT(, 23810) +HANDLE_BAT(, 23811) +HANDLE_BAT(, 23812) +HANDLE_BAT(, 23813) +HANDLE_BAT(, 23814) +HANDLE_BAT(, 23815) +HANDLE_BAT(, 23816) +HANDLE_BAT(, 23817) +HANDLE_BAT(, 23818) +HANDLE_BAT(, 23819) +HANDLE_BAT(, 23820) +HANDLE_BAT(, 23821) +HANDLE_BAT(, 23822) +HANDLE_BAT(, 23823) +HANDLE_BAT(, 23824) +HANDLE_BAT(, 23825) +HANDLE_BAT(, 23826) +HANDLE_BAT(, 23827) +HANDLE_BAT(, 23828) +HANDLE_BAT(, 23829) +HANDLE_BAT(, 23830) +HANDLE_BAT(, 23831) +HANDLE_BAT(, 23832) +HANDLE_BAT(, 23833) +HANDLE_BAT(, 23834) +HANDLE_BAT(, 23835) +HANDLE_BAT(, 23836) +HANDLE_BAT(, 23837) +HANDLE_BAT(, 23838) +HANDLE_BAT(, 23839) +HANDLE_BAT(, 23840) +HANDLE_BAT(, 23841) +HANDLE_BAT(, 23842) +HANDLE_BAT(, 23843) +HANDLE_BAT(, 23844) +HANDLE_BAT(, 23845) +HANDLE_BAT(, 23846) +HANDLE_BAT(, 23847) +HANDLE_BAT(, 23848) +HANDLE_BAT(, 23849) +HANDLE_BAT(, 23850) +HANDLE_BAT(, 23851) +HANDLE_BAT(, 23852) +HANDLE_BAT(, 23853) +HANDLE_BAT(, 23854) +HANDLE_BAT(, 23855) +HANDLE_BAT(, 23856) +HANDLE_BAT(, 23857) +HANDLE_BAT(, 23858) +HANDLE_BAT(, 23859) +HANDLE_BAT(, 23860) +HANDLE_BAT(, 23861) +HANDLE_BAT(, 23862) +HANDLE_BAT(, 23863) +HANDLE_BAT(, 23864) +HANDLE_BAT(, 23865) +HANDLE_BAT(, 23866) +HANDLE_BAT(, 23867) +HANDLE_BAT(, 23868) +HANDLE_BAT(, 23869) +HANDLE_BAT(, 23870) +HANDLE_BAT(, 23871) +HANDLE_BAT(, 23872) +HANDLE_BAT(, 23873) +HANDLE_BAT(, 23874) +HANDLE_BAT(, 23875) +HANDLE_BAT(, 23876) +HANDLE_BAT(, 23877) +HANDLE_BAT(, 23878) +HANDLE_BAT(, 23879) +HANDLE_BAT(, 23880) +HANDLE_BAT(, 23881) +HANDLE_BAT(, 23882) +HANDLE_BAT(, 23883) +HANDLE_BAT(, 23884) +HANDLE_BAT(, 23885) +HANDLE_BAT(, 23886) +HANDLE_BAT(, 23887) +HANDLE_BAT(, 23888) +HANDLE_BAT(, 23889) +HANDLE_BAT(, 23890) +HANDLE_BAT(, 23891) +HANDLE_BAT(, 23892) +HANDLE_BAT(, 23893) +HANDLE_BAT(, 23894) +HANDLE_BAT(, 23895) +HANDLE_BAT(, 23896) +HANDLE_BAT(, 23897) +HANDLE_BAT(, 23898) +HANDLE_BAT(, 23899) +HANDLE_BAT(, 23900) +HANDLE_BAT(, 23901) +HANDLE_BAT(, 23902) +HANDLE_BAT(, 23903) +HANDLE_BAT(, 23904) +HANDLE_BAT(, 23905) +HANDLE_BAT(, 23906) +HANDLE_BAT(, 23907) +HANDLE_BAT(, 23908) +HANDLE_BAT(, 23909) +HANDLE_BAT(, 23910) +HANDLE_BAT(, 23911) +HANDLE_BAT(, 23912) +HANDLE_BAT(, 23913) +HANDLE_BAT(, 23914) +HANDLE_BAT(, 23915) +HANDLE_BAT(, 23916) +HANDLE_BAT(, 23917) +HANDLE_BAT(, 23918) +HANDLE_BAT(, 23919) +HANDLE_BAT(, 23920) +HANDLE_BAT(, 23921) +HANDLE_BAT(, 23922) +HANDLE_BAT(, 23923) +HANDLE_BAT(, 23924) +HANDLE_BAT(, 23925) +HANDLE_BAT(, 23926) +HANDLE_BAT(, 23927) +HANDLE_BAT(, 23928) +HANDLE_BAT(, 23929) +HANDLE_BAT(, 23930) +HANDLE_BAT(, 23931) +HANDLE_BAT(, 23932) +HANDLE_BAT(, 23933) +HANDLE_BAT(, 23934) +HANDLE_BAT(, 23935) +HANDLE_BAT(, 23936) +HANDLE_BAT(, 23937) +HANDLE_BAT(, 23938) +HANDLE_BAT(, 23939) +HANDLE_BAT(, 23940) +HANDLE_BAT(, 23941) +HANDLE_BAT(, 23942) +HANDLE_BAT(, 23943) +HANDLE_BAT(, 23944) +HANDLE_BAT(, 23945) +HANDLE_BAT(, 23946) +HANDLE_BAT(, 23947) +HANDLE_BAT(, 23948) +HANDLE_BAT(, 23949) +HANDLE_BAT(, 23950) +HANDLE_BAT(, 23951) +HANDLE_BAT(, 23952) +HANDLE_BAT(, 23953) +HANDLE_BAT(, 23954) +HANDLE_BAT(, 23955) +HANDLE_BAT(, 23956) +HANDLE_BAT(, 23957) +HANDLE_BAT(, 23958) +HANDLE_BAT(, 23959) +HANDLE_BAT(, 23960) +HANDLE_BAT(, 23961) +HANDLE_BAT(, 23962) +HANDLE_BAT(, 23963) +HANDLE_BAT(, 23964) +HANDLE_BAT(, 23965) +HANDLE_BAT(, 23966) +HANDLE_BAT(, 23967) +HANDLE_BAT(, 23968) +HANDLE_BAT(, 23969) +HANDLE_BAT(, 23970) +HANDLE_BAT(, 23971) +HANDLE_BAT(, 23972) +HANDLE_BAT(, 23973) +HANDLE_BAT(, 23974) +HANDLE_BAT(, 23975) +HANDLE_BAT(, 23976) +HANDLE_BAT(, 23977) +HANDLE_BAT(, 23978) +HANDLE_BAT(, 23979) +HANDLE_BAT(, 23980) +HANDLE_BAT(, 23981) +HANDLE_BAT(, 23982) +HANDLE_BAT(, 23983) +HANDLE_BAT(, 23984) +HANDLE_BAT(, 23985) +HANDLE_BAT(, 23986) +HANDLE_BAT(, 23987) +HANDLE_BAT(, 23988) +HANDLE_BAT(, 23989) +HANDLE_BAT(, 23990) +HANDLE_BAT(, 23991) +HANDLE_BAT(, 23992) +HANDLE_BAT(, 23993) +HANDLE_BAT(, 23994) +HANDLE_BAT(, 23995) +HANDLE_BAT(, 23996) +HANDLE_BAT(, 23997) +HANDLE_BAT(, 23998) +HANDLE_BAT(, 23999) +HANDLE_BAT(, 24000) +HANDLE_BAT(, 24001) +HANDLE_BAT(, 24002) +HANDLE_BAT(, 24003) +HANDLE_BAT(, 24004) +HANDLE_BAT(, 24005) +HANDLE_BAT(, 24006) +HANDLE_BAT(, 24007) +HANDLE_BAT(, 24008) +HANDLE_BAT(, 24009) +HANDLE_BAT(, 24010) +HANDLE_BAT(, 24011) +HANDLE_BAT(, 24012) +HANDLE_BAT(, 24013) +HANDLE_BAT(, 24014) +HANDLE_BAT(, 24015) +HANDLE_BAT(, 24016) +HANDLE_BAT(, 24017) +HANDLE_BAT(, 24018) +HANDLE_BAT(, 24019) +HANDLE_BAT(, 24020) +HANDLE_BAT(, 24021) +HANDLE_BAT(, 24022) +HANDLE_BAT(, 24023) +HANDLE_BAT(, 24024) +HANDLE_BAT(, 24025) +HANDLE_BAT(, 24026) +HANDLE_BAT(, 24027) +HANDLE_BAT(, 24028) +HANDLE_BAT(, 24029) +HANDLE_BAT(, 24030) +HANDLE_BAT(, 24031) +HANDLE_BAT(, 24032) +HANDLE_BAT(, 24033) +HANDLE_BAT(, 24034) +HANDLE_BAT(, 24035) +HANDLE_BAT(, 24036) +HANDLE_BAT(, 24037) +HANDLE_BAT(, 24038) +HANDLE_BAT(, 24039) +HANDLE_BAT(, 24040) +HANDLE_BAT(, 24041) +HANDLE_BAT(, 24042) +HANDLE_BAT(, 24043) +HANDLE_BAT(, 24044) +HANDLE_BAT(, 24045) +HANDLE_BAT(, 24046) +HANDLE_BAT(, 24047) +HANDLE_BAT(, 24048) +HANDLE_BAT(, 24049) +HANDLE_BAT(, 24050) +HANDLE_BAT(, 24051) +HANDLE_BAT(, 24052) +HANDLE_BAT(, 24053) +HANDLE_BAT(, 24054) +HANDLE_BAT(, 24055) +HANDLE_BAT(, 24056) +HANDLE_BAT(, 24057) +HANDLE_BAT(, 24058) +HANDLE_BAT(, 24059) +HANDLE_BAT(, 24060) +HANDLE_BAT(, 24061) +HANDLE_BAT(, 24062) +HANDLE_BAT(, 24063) +HANDLE_BAT(, 24064) +HANDLE_BAT(, 24065) +HANDLE_BAT(, 24066) +HANDLE_BAT(, 24067) +HANDLE_BAT(, 24068) +HANDLE_BAT(, 24069) +HANDLE_BAT(, 24070) +HANDLE_BAT(, 24071) +HANDLE_BAT(, 24072) +HANDLE_BAT(, 24073) +HANDLE_BAT(, 24074) +HANDLE_BAT(, 24075) +HANDLE_BAT(, 24076) +HANDLE_BAT(, 24077) +HANDLE_BAT(, 24078) +HANDLE_BAT(, 24079) +HANDLE_BAT(, 24080) +HANDLE_BAT(, 24081) +HANDLE_BAT(, 24082) +HANDLE_BAT(, 24083) +HANDLE_BAT(, 24084) +HANDLE_BAT(, 24085) +HANDLE_BAT(, 24086) +HANDLE_BAT(, 24087) +HANDLE_BAT(, 24088) +HANDLE_BAT(, 24089) +HANDLE_BAT(, 24090) +HANDLE_BAT(, 24091) +HANDLE_BAT(, 24092) +HANDLE_BAT(, 24093) +HANDLE_BAT(, 24094) +HANDLE_BAT(, 24095) +HANDLE_BAT(, 24096) +HANDLE_BAT(, 24097) +HANDLE_BAT(, 24098) +HANDLE_BAT(, 24099) +HANDLE_BAT(, 24100) +HANDLE_BAT(, 24101) +HANDLE_BAT(, 24102) +HANDLE_BAT(, 24103) +HANDLE_BAT(, 24104) +HANDLE_BAT(, 24105) +HANDLE_BAT(, 24106) +HANDLE_BAT(, 24107) +HANDLE_BAT(, 24108) +HANDLE_BAT(, 24109) +HANDLE_BAT(, 24110) +HANDLE_BAT(, 24111) +HANDLE_BAT(, 24112) +HANDLE_BAT(, 24113) +HANDLE_BAT(, 24114) +HANDLE_BAT(, 24115) +HANDLE_BAT(, 24116) +HANDLE_BAT(, 24117) +HANDLE_BAT(, 24118) +HANDLE_BAT(, 24119) +HANDLE_BAT(, 24120) +HANDLE_BAT(, 24121) +HANDLE_BAT(, 24122) +HANDLE_BAT(, 24123) +HANDLE_BAT(, 24124) +HANDLE_BAT(, 24125) +HANDLE_BAT(, 24126) +HANDLE_BAT(, 24127) +HANDLE_BAT(, 24128) +HANDLE_BAT(, 24129) +HANDLE_BAT(, 24130) +HANDLE_BAT(, 24131) +HANDLE_BAT(, 24132) +HANDLE_BAT(, 24133) +HANDLE_BAT(, 24134) +HANDLE_BAT(, 24135) +HANDLE_BAT(, 24136) +HANDLE_BAT(, 24137) +HANDLE_BAT(, 24138) +HANDLE_BAT(, 24139) +HANDLE_BAT(, 24140) +HANDLE_BAT(, 24141) +HANDLE_BAT(, 24142) +HANDLE_BAT(, 24143) +HANDLE_BAT(, 24144) +HANDLE_BAT(, 24145) +HANDLE_BAT(, 24146) +HANDLE_BAT(, 24147) +HANDLE_BAT(, 24148) +HANDLE_BAT(, 24149) +HANDLE_BAT(, 24150) +HANDLE_BAT(, 24151) +HANDLE_BAT(, 24152) +HANDLE_BAT(, 24153) +HANDLE_BAT(, 24154) +HANDLE_BAT(, 24155) +HANDLE_BAT(, 24156) +HANDLE_BAT(, 24157) +HANDLE_BAT(, 24158) +HANDLE_BAT(, 24159) +HANDLE_BAT(, 24160) +HANDLE_BAT(, 24161) +HANDLE_BAT(, 24162) +HANDLE_BAT(, 24163) +HANDLE_BAT(, 24164) +HANDLE_BAT(, 24165) +HANDLE_BAT(, 24166) +HANDLE_BAT(, 24167) +HANDLE_BAT(, 24168) +HANDLE_BAT(, 24169) +HANDLE_BAT(, 24170) +HANDLE_BAT(, 24171) +HANDLE_BAT(, 24172) +HANDLE_BAT(, 24173) +HANDLE_BAT(, 24174) +HANDLE_BAT(, 24175) +HANDLE_BAT(, 24176) +HANDLE_BAT(, 24177) +HANDLE_BAT(, 24178) +HANDLE_BAT(, 24179) +HANDLE_BAT(, 24180) +HANDLE_BAT(, 24181) +HANDLE_BAT(, 24182) +HANDLE_BAT(, 24183) +HANDLE_BAT(, 24184) +HANDLE_BAT(, 24185) +HANDLE_BAT(, 24186) +HANDLE_BAT(, 24187) +HANDLE_BAT(, 24188) +HANDLE_BAT(, 24189) +HANDLE_BAT(, 24190) +HANDLE_BAT(, 24191) +HANDLE_BAT(, 24192) +HANDLE_BAT(, 24193) +HANDLE_BAT(, 24194) +HANDLE_BAT(, 24195) +HANDLE_BAT(, 24196) +HANDLE_BAT(, 24197) +HANDLE_BAT(, 24198) +HANDLE_BAT(, 24199) +HANDLE_BAT(, 24200) +HANDLE_BAT(, 24201) +HANDLE_BAT(, 24202) +HANDLE_BAT(, 24203) +HANDLE_BAT(, 24204) +HANDLE_BAT(, 24205) +HANDLE_BAT(, 24206) +HANDLE_BAT(, 24207) +HANDLE_BAT(, 24208) +HANDLE_BAT(, 24209) +HANDLE_BAT(, 24210) +HANDLE_BAT(, 24211) +HANDLE_BAT(, 24212) +HANDLE_BAT(, 24213) +HANDLE_BAT(, 24214) +HANDLE_BAT(, 24215) +HANDLE_BAT(, 24216) +HANDLE_BAT(, 24217) +HANDLE_BAT(, 24218) +HANDLE_BAT(, 24219) +HANDLE_BAT(, 24220) +HANDLE_BAT(, 24221) +HANDLE_BAT(, 24222) +HANDLE_BAT(, 24223) +HANDLE_BAT(, 24224) +HANDLE_BAT(, 24225) +HANDLE_BAT(, 24226) +HANDLE_BAT(, 24227) +HANDLE_BAT(, 24228) +HANDLE_BAT(, 24229) +HANDLE_BAT(, 24230) +HANDLE_BAT(, 24231) +HANDLE_BAT(, 24232) +HANDLE_BAT(, 24233) +HANDLE_BAT(, 24234) +HANDLE_BAT(, 24235) +HANDLE_BAT(, 24236) +HANDLE_BAT(, 24237) +HANDLE_BAT(, 24238) +HANDLE_BAT(, 24239) +HANDLE_BAT(, 24240) +HANDLE_BAT(, 24241) +HANDLE_BAT(, 24242) +HANDLE_BAT(, 24243) +HANDLE_BAT(, 24244) +HANDLE_BAT(, 24245) +HANDLE_BAT(, 24246) +HANDLE_BAT(, 24247) +HANDLE_BAT(, 24248) +HANDLE_BAT(, 24249) +HANDLE_BAT(, 24250) +HANDLE_BAT(, 24251) +HANDLE_BAT(, 24252) +HANDLE_BAT(, 24253) +HANDLE_BAT(, 24254) +HANDLE_BAT(, 24255) +HANDLE_BAT(, 24256) +HANDLE_BAT(, 24257) +HANDLE_BAT(, 24258) +HANDLE_BAT(, 24259) +HANDLE_BAT(, 24260) +HANDLE_BAT(, 24261) +HANDLE_BAT(, 24262) +HANDLE_BAT(, 24263) +HANDLE_BAT(, 24264) +HANDLE_BAT(, 24265) +HANDLE_BAT(, 24266) +HANDLE_BAT(, 24267) +HANDLE_BAT(, 24268) +HANDLE_BAT(, 24269) +HANDLE_BAT(, 24270) +HANDLE_BAT(, 24271) +HANDLE_BAT(, 24272) +HANDLE_BAT(, 24273) +HANDLE_BAT(, 24274) +HANDLE_BAT(, 24275) +HANDLE_BAT(, 24276) +HANDLE_BAT(, 24277) +HANDLE_BAT(, 24278) +HANDLE_BAT(, 24279) +HANDLE_BAT(, 24280) +HANDLE_BAT(, 24281) +HANDLE_BAT(, 24282) +HANDLE_BAT(, 24283) +HANDLE_BAT(, 24284) +HANDLE_BAT(, 24285) +HANDLE_BAT(, 24286) +HANDLE_BAT(, 24287) +HANDLE_BAT(, 24288) +HANDLE_BAT(, 24289) +HANDLE_BAT(, 24290) +HANDLE_BAT(, 24291) +HANDLE_BAT(, 24292) +HANDLE_BAT(, 24293) +HANDLE_BAT(, 24294) +HANDLE_BAT(, 24295) +HANDLE_BAT(, 24296) +HANDLE_BAT(, 24297) +HANDLE_BAT(, 24298) +HANDLE_BAT(, 24299) +HANDLE_BAT(, 24300) +HANDLE_BAT(, 24301) +HANDLE_BAT(, 24302) +HANDLE_BAT(, 24303) +HANDLE_BAT(, 24304) +HANDLE_BAT(, 24305) +HANDLE_BAT(, 24306) +HANDLE_BAT(, 24307) +HANDLE_BAT(, 24308) +HANDLE_BAT(, 24309) +HANDLE_BAT(, 24310) +HANDLE_BAT(, 24311) +HANDLE_BAT(, 24312) +HANDLE_BAT(, 24313) +HANDLE_BAT(, 24314) +HANDLE_BAT(, 24315) +HANDLE_BAT(, 24316) +HANDLE_BAT(, 24317) +HANDLE_BAT(, 24318) +HANDLE_BAT(, 24319) +HANDLE_BAT(, 24320) +HANDLE_BAT(, 24321) +HANDLE_BAT(, 24322) +HANDLE_BAT(, 24323) +HANDLE_BAT(, 24324) +HANDLE_BAT(, 24325) +HANDLE_BAT(, 24326) +HANDLE_BAT(, 24327) +HANDLE_BAT(, 24328) +HANDLE_BAT(, 24329) +HANDLE_BAT(, 24330) +HANDLE_BAT(, 24331) +HANDLE_BAT(, 24332) +HANDLE_BAT(, 24333) +HANDLE_BAT(, 24334) +HANDLE_BAT(, 24335) +HANDLE_BAT(, 24336) +HANDLE_BAT(, 24337) +HANDLE_BAT(, 24338) +HANDLE_BAT(, 24339) +HANDLE_BAT(, 24340) +HANDLE_BAT(, 24341) +HANDLE_BAT(, 24342) +HANDLE_BAT(, 24343) +HANDLE_BAT(, 24344) +HANDLE_BAT(, 24345) +HANDLE_BAT(, 24346) +HANDLE_BAT(, 24347) +HANDLE_BAT(, 24348) +HANDLE_BAT(, 24349) +HANDLE_BAT(, 24350) +HANDLE_BAT(, 24351) +HANDLE_BAT(, 24352) +HANDLE_BAT(, 24353) +HANDLE_BAT(, 24354) +HANDLE_BAT(, 24355) +HANDLE_BAT(, 24356) +HANDLE_BAT(, 24357) +HANDLE_BAT(, 24358) +HANDLE_BAT(, 24359) +HANDLE_BAT(, 24360) +HANDLE_BAT(, 24361) +HANDLE_BAT(, 24362) +HANDLE_BAT(, 24363) +HANDLE_BAT(, 24364) +HANDLE_BAT(, 24365) +HANDLE_BAT(, 24366) +HANDLE_BAT(, 24367) +HANDLE_BAT(, 24368) +HANDLE_BAT(, 24369) +HANDLE_BAT(, 24370) +HANDLE_BAT(, 24371) +HANDLE_BAT(, 24372) +HANDLE_BAT(, 24373) +HANDLE_BAT(, 24374) +HANDLE_BAT(, 24375) +HANDLE_BAT(, 24376) +HANDLE_BAT(, 24377) +HANDLE_BAT(, 24378) +HANDLE_BAT(, 24379) +HANDLE_BAT(, 24380) +HANDLE_BAT(, 24381) +HANDLE_BAT(, 24382) +HANDLE_BAT(, 24383) +HANDLE_BAT(, 24384) +HANDLE_BAT(, 24385) +HANDLE_BAT(, 24386) +HANDLE_BAT(, 24387) +HANDLE_BAT(, 24388) +HANDLE_BAT(, 24389) +HANDLE_BAT(, 24390) +HANDLE_BAT(, 24391) +HANDLE_BAT(, 24392) +HANDLE_BAT(, 24393) +HANDLE_BAT(, 24394) +HANDLE_BAT(, 24395) +HANDLE_BAT(, 24396) +HANDLE_BAT(, 24397) +HANDLE_BAT(, 24398) +HANDLE_BAT(, 24399) +HANDLE_BAT(, 24400) +HANDLE_BAT(, 24401) +HANDLE_BAT(, 24402) +HANDLE_BAT(, 24403) +HANDLE_BAT(, 24404) +HANDLE_BAT(, 24405) +HANDLE_BAT(, 24406) +HANDLE_BAT(, 24407) +HANDLE_BAT(, 24408) +HANDLE_BAT(, 24409) +HANDLE_BAT(, 24410) +HANDLE_BAT(, 24411) +HANDLE_BAT(, 24412) +HANDLE_BAT(, 24413) +HANDLE_BAT(, 24414) +HANDLE_BAT(, 24415) +HANDLE_BAT(, 24416) +HANDLE_BAT(, 24417) +HANDLE_BAT(, 24418) +HANDLE_BAT(, 24419) +HANDLE_BAT(, 24420) +HANDLE_BAT(, 24421) +HANDLE_BAT(, 24422) +HANDLE_BAT(, 24423) +HANDLE_BAT(, 24424) +HANDLE_BAT(, 24425) +HANDLE_BAT(, 24426) +HANDLE_BAT(, 24427) +HANDLE_BAT(, 24428) +HANDLE_BAT(, 24429) +HANDLE_BAT(, 24430) +HANDLE_BAT(, 24431) +HANDLE_BAT(, 24432) +HANDLE_BAT(, 24433) +HANDLE_BAT(, 24434) +HANDLE_BAT(, 24435) +HANDLE_BAT(, 24436) +HANDLE_BAT(, 24437) +HANDLE_BAT(, 24438) +HANDLE_BAT(, 24439) +HANDLE_BAT(, 24440) +HANDLE_BAT(, 24441) +HANDLE_BAT(, 24442) +HANDLE_BAT(, 24443) +HANDLE_BAT(, 24444) +HANDLE_BAT(, 24445) +HANDLE_BAT(, 24446) +HANDLE_BAT(, 24447) +HANDLE_BAT(, 24448) +HANDLE_BAT(, 24449) +HANDLE_BAT(, 24450) +HANDLE_BAT(, 24451) +HANDLE_BAT(, 24452) +HANDLE_BAT(, 24453) +HANDLE_BAT(, 24454) +HANDLE_BAT(, 24455) +HANDLE_BAT(, 24456) +HANDLE_BAT(, 24457) +HANDLE_BAT(, 24458) +HANDLE_BAT(, 24459) +HANDLE_BAT(, 24460) +HANDLE_BAT(, 24461) +HANDLE_BAT(, 24462) +HANDLE_BAT(, 24463) +HANDLE_BAT(, 24464) +HANDLE_BAT(, 24465) +HANDLE_BAT(, 24466) +HANDLE_BAT(, 24467) +HANDLE_BAT(, 24468) +HANDLE_BAT(, 24469) +HANDLE_BAT(, 24470) +HANDLE_BAT(, 24471) +HANDLE_BAT(, 24472) +HANDLE_BAT(, 24473) +HANDLE_BAT(, 24474) +HANDLE_BAT(, 24475) +HANDLE_BAT(, 24476) +HANDLE_BAT(, 24477) +HANDLE_BAT(, 24478) +HANDLE_BAT(, 24479) +HANDLE_BAT(, 24480) +HANDLE_BAT(, 24481) +HANDLE_BAT(, 24482) +HANDLE_BAT(, 24483) +HANDLE_BAT(, 24484) +HANDLE_BAT(, 24485) +HANDLE_BAT(, 24486) +HANDLE_BAT(, 24487) +HANDLE_BAT(, 24488) +HANDLE_BAT(, 24489) +HANDLE_BAT(, 24490) +HANDLE_BAT(, 24491) +HANDLE_BAT(, 24492) +HANDLE_BAT(, 24493) +HANDLE_BAT(, 24494) +HANDLE_BAT(, 24495) +HANDLE_BAT(, 24496) +HANDLE_BAT(, 24497) +HANDLE_BAT(, 24498) +HANDLE_BAT(, 24499) +HANDLE_BAT(, 24500) +HANDLE_BAT(, 24501) +HANDLE_BAT(, 24502) +HANDLE_BAT(, 24503) +HANDLE_BAT(, 24504) +HANDLE_BAT(, 24505) +HANDLE_BAT(, 24506) +HANDLE_BAT(, 24507) +HANDLE_BAT(, 24508) +HANDLE_BAT(, 24509) +HANDLE_BAT(, 24510) +HANDLE_BAT(, 24511) +HANDLE_BAT(, 24512) +HANDLE_BAT(, 24513) +HANDLE_BAT(, 24514) +HANDLE_BAT(, 24515) +HANDLE_BAT(, 24516) +HANDLE_BAT(, 24517) +HANDLE_BAT(, 24518) +HANDLE_BAT(, 24519) +HANDLE_BAT(, 24520) +HANDLE_BAT(, 24521) +HANDLE_BAT(, 24522) +HANDLE_BAT(, 24523) +HANDLE_BAT(, 24524) +HANDLE_BAT(, 24525) +HANDLE_BAT(, 24526) +HANDLE_BAT(, 24527) +HANDLE_BAT(, 24528) +HANDLE_BAT(, 24529) +HANDLE_BAT(, 24530) +HANDLE_BAT(, 24531) +HANDLE_BAT(, 24532) +HANDLE_BAT(, 24533) +HANDLE_BAT(, 24534) +HANDLE_BAT(, 24535) +HANDLE_BAT(, 24536) +HANDLE_BAT(, 24537) +HANDLE_BAT(, 24538) +HANDLE_BAT(, 24539) +HANDLE_BAT(, 24540) +HANDLE_BAT(, 24541) +HANDLE_BAT(, 24542) +HANDLE_BAT(, 24543) +HANDLE_BAT(, 24544) +HANDLE_BAT(, 24545) +HANDLE_BAT(, 24546) +HANDLE_BAT(, 24547) +HANDLE_BAT(, 24548) +HANDLE_BAT(, 24549) +HANDLE_BAT(, 24550) +HANDLE_BAT(, 24551) +HANDLE_BAT(, 24552) +HANDLE_BAT(, 24553) +HANDLE_BAT(, 24554) +HANDLE_BAT(, 24555) +HANDLE_BAT(, 24556) +HANDLE_BAT(, 24557) +HANDLE_BAT(, 24558) +HANDLE_BAT(, 24559) +HANDLE_BAT(, 24560) +HANDLE_BAT(, 24561) +HANDLE_BAT(, 24562) +HANDLE_BAT(, 24563) +HANDLE_BAT(, 24564) +HANDLE_BAT(, 24565) +HANDLE_BAT(, 24566) +HANDLE_BAT(, 24567) +HANDLE_BAT(, 24568) +HANDLE_BAT(, 24569) +HANDLE_BAT(, 24570) +HANDLE_BAT(, 24571) +HANDLE_BAT(, 24572) +HANDLE_BAT(, 24573) +HANDLE_BAT(, 24574) +HANDLE_BAT(, 24575) +HANDLE_BAT(, 24576) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 23553) +HANDLE_BAT(APINT_TYPE_PREFIX, 23554) +HANDLE_BAT(APINT_TYPE_PREFIX, 23555) +HANDLE_BAT(APINT_TYPE_PREFIX, 23556) +HANDLE_BAT(APINT_TYPE_PREFIX, 23557) +HANDLE_BAT(APINT_TYPE_PREFIX, 23558) +HANDLE_BAT(APINT_TYPE_PREFIX, 23559) +HANDLE_BAT(APINT_TYPE_PREFIX, 23560) +HANDLE_BAT(APINT_TYPE_PREFIX, 23561) +HANDLE_BAT(APINT_TYPE_PREFIX, 23562) +HANDLE_BAT(APINT_TYPE_PREFIX, 23563) +HANDLE_BAT(APINT_TYPE_PREFIX, 23564) +HANDLE_BAT(APINT_TYPE_PREFIX, 23565) +HANDLE_BAT(APINT_TYPE_PREFIX, 23566) +HANDLE_BAT(APINT_TYPE_PREFIX, 23567) +HANDLE_BAT(APINT_TYPE_PREFIX, 23568) +HANDLE_BAT(APINT_TYPE_PREFIX, 23569) +HANDLE_BAT(APINT_TYPE_PREFIX, 23570) +HANDLE_BAT(APINT_TYPE_PREFIX, 23571) +HANDLE_BAT(APINT_TYPE_PREFIX, 23572) +HANDLE_BAT(APINT_TYPE_PREFIX, 23573) +HANDLE_BAT(APINT_TYPE_PREFIX, 23574) +HANDLE_BAT(APINT_TYPE_PREFIX, 23575) +HANDLE_BAT(APINT_TYPE_PREFIX, 23576) +HANDLE_BAT(APINT_TYPE_PREFIX, 23577) +HANDLE_BAT(APINT_TYPE_PREFIX, 23578) +HANDLE_BAT(APINT_TYPE_PREFIX, 23579) +HANDLE_BAT(APINT_TYPE_PREFIX, 23580) +HANDLE_BAT(APINT_TYPE_PREFIX, 23581) +HANDLE_BAT(APINT_TYPE_PREFIX, 23582) +HANDLE_BAT(APINT_TYPE_PREFIX, 23583) +HANDLE_BAT(APINT_TYPE_PREFIX, 23584) +HANDLE_BAT(APINT_TYPE_PREFIX, 23585) +HANDLE_BAT(APINT_TYPE_PREFIX, 23586) +HANDLE_BAT(APINT_TYPE_PREFIX, 23587) +HANDLE_BAT(APINT_TYPE_PREFIX, 23588) +HANDLE_BAT(APINT_TYPE_PREFIX, 23589) +HANDLE_BAT(APINT_TYPE_PREFIX, 23590) +HANDLE_BAT(APINT_TYPE_PREFIX, 23591) +HANDLE_BAT(APINT_TYPE_PREFIX, 23592) +HANDLE_BAT(APINT_TYPE_PREFIX, 23593) +HANDLE_BAT(APINT_TYPE_PREFIX, 23594) +HANDLE_BAT(APINT_TYPE_PREFIX, 23595) +HANDLE_BAT(APINT_TYPE_PREFIX, 23596) +HANDLE_BAT(APINT_TYPE_PREFIX, 23597) +HANDLE_BAT(APINT_TYPE_PREFIX, 23598) +HANDLE_BAT(APINT_TYPE_PREFIX, 23599) +HANDLE_BAT(APINT_TYPE_PREFIX, 23600) +HANDLE_BAT(APINT_TYPE_PREFIX, 23601) +HANDLE_BAT(APINT_TYPE_PREFIX, 23602) +HANDLE_BAT(APINT_TYPE_PREFIX, 23603) +HANDLE_BAT(APINT_TYPE_PREFIX, 23604) +HANDLE_BAT(APINT_TYPE_PREFIX, 23605) +HANDLE_BAT(APINT_TYPE_PREFIX, 23606) +HANDLE_BAT(APINT_TYPE_PREFIX, 23607) +HANDLE_BAT(APINT_TYPE_PREFIX, 23608) +HANDLE_BAT(APINT_TYPE_PREFIX, 23609) +HANDLE_BAT(APINT_TYPE_PREFIX, 23610) +HANDLE_BAT(APINT_TYPE_PREFIX, 23611) +HANDLE_BAT(APINT_TYPE_PREFIX, 23612) +HANDLE_BAT(APINT_TYPE_PREFIX, 23613) +HANDLE_BAT(APINT_TYPE_PREFIX, 23614) +HANDLE_BAT(APINT_TYPE_PREFIX, 23615) +HANDLE_BAT(APINT_TYPE_PREFIX, 23616) +HANDLE_BAT(APINT_TYPE_PREFIX, 23617) +HANDLE_BAT(APINT_TYPE_PREFIX, 23618) +HANDLE_BAT(APINT_TYPE_PREFIX, 23619) +HANDLE_BAT(APINT_TYPE_PREFIX, 23620) +HANDLE_BAT(APINT_TYPE_PREFIX, 23621) +HANDLE_BAT(APINT_TYPE_PREFIX, 23622) +HANDLE_BAT(APINT_TYPE_PREFIX, 23623) +HANDLE_BAT(APINT_TYPE_PREFIX, 23624) +HANDLE_BAT(APINT_TYPE_PREFIX, 23625) +HANDLE_BAT(APINT_TYPE_PREFIX, 23626) +HANDLE_BAT(APINT_TYPE_PREFIX, 23627) +HANDLE_BAT(APINT_TYPE_PREFIX, 23628) +HANDLE_BAT(APINT_TYPE_PREFIX, 23629) +HANDLE_BAT(APINT_TYPE_PREFIX, 23630) +HANDLE_BAT(APINT_TYPE_PREFIX, 23631) +HANDLE_BAT(APINT_TYPE_PREFIX, 23632) +HANDLE_BAT(APINT_TYPE_PREFIX, 23633) +HANDLE_BAT(APINT_TYPE_PREFIX, 23634) +HANDLE_BAT(APINT_TYPE_PREFIX, 23635) +HANDLE_BAT(APINT_TYPE_PREFIX, 23636) +HANDLE_BAT(APINT_TYPE_PREFIX, 23637) +HANDLE_BAT(APINT_TYPE_PREFIX, 23638) +HANDLE_BAT(APINT_TYPE_PREFIX, 23639) +HANDLE_BAT(APINT_TYPE_PREFIX, 23640) +HANDLE_BAT(APINT_TYPE_PREFIX, 23641) +HANDLE_BAT(APINT_TYPE_PREFIX, 23642) +HANDLE_BAT(APINT_TYPE_PREFIX, 23643) +HANDLE_BAT(APINT_TYPE_PREFIX, 23644) +HANDLE_BAT(APINT_TYPE_PREFIX, 23645) +HANDLE_BAT(APINT_TYPE_PREFIX, 23646) +HANDLE_BAT(APINT_TYPE_PREFIX, 23647) +HANDLE_BAT(APINT_TYPE_PREFIX, 23648) +HANDLE_BAT(APINT_TYPE_PREFIX, 23649) +HANDLE_BAT(APINT_TYPE_PREFIX, 23650) +HANDLE_BAT(APINT_TYPE_PREFIX, 23651) +HANDLE_BAT(APINT_TYPE_PREFIX, 23652) +HANDLE_BAT(APINT_TYPE_PREFIX, 23653) +HANDLE_BAT(APINT_TYPE_PREFIX, 23654) +HANDLE_BAT(APINT_TYPE_PREFIX, 23655) +HANDLE_BAT(APINT_TYPE_PREFIX, 23656) +HANDLE_BAT(APINT_TYPE_PREFIX, 23657) +HANDLE_BAT(APINT_TYPE_PREFIX, 23658) +HANDLE_BAT(APINT_TYPE_PREFIX, 23659) +HANDLE_BAT(APINT_TYPE_PREFIX, 23660) +HANDLE_BAT(APINT_TYPE_PREFIX, 23661) +HANDLE_BAT(APINT_TYPE_PREFIX, 23662) +HANDLE_BAT(APINT_TYPE_PREFIX, 23663) +HANDLE_BAT(APINT_TYPE_PREFIX, 23664) +HANDLE_BAT(APINT_TYPE_PREFIX, 23665) +HANDLE_BAT(APINT_TYPE_PREFIX, 23666) +HANDLE_BAT(APINT_TYPE_PREFIX, 23667) +HANDLE_BAT(APINT_TYPE_PREFIX, 23668) +HANDLE_BAT(APINT_TYPE_PREFIX, 23669) +HANDLE_BAT(APINT_TYPE_PREFIX, 23670) +HANDLE_BAT(APINT_TYPE_PREFIX, 23671) +HANDLE_BAT(APINT_TYPE_PREFIX, 23672) +HANDLE_BAT(APINT_TYPE_PREFIX, 23673) +HANDLE_BAT(APINT_TYPE_PREFIX, 23674) +HANDLE_BAT(APINT_TYPE_PREFIX, 23675) +HANDLE_BAT(APINT_TYPE_PREFIX, 23676) +HANDLE_BAT(APINT_TYPE_PREFIX, 23677) +HANDLE_BAT(APINT_TYPE_PREFIX, 23678) +HANDLE_BAT(APINT_TYPE_PREFIX, 23679) +HANDLE_BAT(APINT_TYPE_PREFIX, 23680) +HANDLE_BAT(APINT_TYPE_PREFIX, 23681) +HANDLE_BAT(APINT_TYPE_PREFIX, 23682) +HANDLE_BAT(APINT_TYPE_PREFIX, 23683) +HANDLE_BAT(APINT_TYPE_PREFIX, 23684) +HANDLE_BAT(APINT_TYPE_PREFIX, 23685) +HANDLE_BAT(APINT_TYPE_PREFIX, 23686) +HANDLE_BAT(APINT_TYPE_PREFIX, 23687) +HANDLE_BAT(APINT_TYPE_PREFIX, 23688) +HANDLE_BAT(APINT_TYPE_PREFIX, 23689) +HANDLE_BAT(APINT_TYPE_PREFIX, 23690) +HANDLE_BAT(APINT_TYPE_PREFIX, 23691) +HANDLE_BAT(APINT_TYPE_PREFIX, 23692) +HANDLE_BAT(APINT_TYPE_PREFIX, 23693) +HANDLE_BAT(APINT_TYPE_PREFIX, 23694) +HANDLE_BAT(APINT_TYPE_PREFIX, 23695) +HANDLE_BAT(APINT_TYPE_PREFIX, 23696) +HANDLE_BAT(APINT_TYPE_PREFIX, 23697) +HANDLE_BAT(APINT_TYPE_PREFIX, 23698) +HANDLE_BAT(APINT_TYPE_PREFIX, 23699) +HANDLE_BAT(APINT_TYPE_PREFIX, 23700) +HANDLE_BAT(APINT_TYPE_PREFIX, 23701) +HANDLE_BAT(APINT_TYPE_PREFIX, 23702) +HANDLE_BAT(APINT_TYPE_PREFIX, 23703) +HANDLE_BAT(APINT_TYPE_PREFIX, 23704) +HANDLE_BAT(APINT_TYPE_PREFIX, 23705) +HANDLE_BAT(APINT_TYPE_PREFIX, 23706) +HANDLE_BAT(APINT_TYPE_PREFIX, 23707) +HANDLE_BAT(APINT_TYPE_PREFIX, 23708) +HANDLE_BAT(APINT_TYPE_PREFIX, 23709) +HANDLE_BAT(APINT_TYPE_PREFIX, 23710) +HANDLE_BAT(APINT_TYPE_PREFIX, 23711) +HANDLE_BAT(APINT_TYPE_PREFIX, 23712) +HANDLE_BAT(APINT_TYPE_PREFIX, 23713) +HANDLE_BAT(APINT_TYPE_PREFIX, 23714) +HANDLE_BAT(APINT_TYPE_PREFIX, 23715) +HANDLE_BAT(APINT_TYPE_PREFIX, 23716) +HANDLE_BAT(APINT_TYPE_PREFIX, 23717) +HANDLE_BAT(APINT_TYPE_PREFIX, 23718) +HANDLE_BAT(APINT_TYPE_PREFIX, 23719) +HANDLE_BAT(APINT_TYPE_PREFIX, 23720) +HANDLE_BAT(APINT_TYPE_PREFIX, 23721) +HANDLE_BAT(APINT_TYPE_PREFIX, 23722) +HANDLE_BAT(APINT_TYPE_PREFIX, 23723) +HANDLE_BAT(APINT_TYPE_PREFIX, 23724) +HANDLE_BAT(APINT_TYPE_PREFIX, 23725) +HANDLE_BAT(APINT_TYPE_PREFIX, 23726) +HANDLE_BAT(APINT_TYPE_PREFIX, 23727) +HANDLE_BAT(APINT_TYPE_PREFIX, 23728) +HANDLE_BAT(APINT_TYPE_PREFIX, 23729) +HANDLE_BAT(APINT_TYPE_PREFIX, 23730) +HANDLE_BAT(APINT_TYPE_PREFIX, 23731) +HANDLE_BAT(APINT_TYPE_PREFIX, 23732) +HANDLE_BAT(APINT_TYPE_PREFIX, 23733) +HANDLE_BAT(APINT_TYPE_PREFIX, 23734) +HANDLE_BAT(APINT_TYPE_PREFIX, 23735) +HANDLE_BAT(APINT_TYPE_PREFIX, 23736) +HANDLE_BAT(APINT_TYPE_PREFIX, 23737) +HANDLE_BAT(APINT_TYPE_PREFIX, 23738) +HANDLE_BAT(APINT_TYPE_PREFIX, 23739) +HANDLE_BAT(APINT_TYPE_PREFIX, 23740) +HANDLE_BAT(APINT_TYPE_PREFIX, 23741) +HANDLE_BAT(APINT_TYPE_PREFIX, 23742) +HANDLE_BAT(APINT_TYPE_PREFIX, 23743) +HANDLE_BAT(APINT_TYPE_PREFIX, 23744) +HANDLE_BAT(APINT_TYPE_PREFIX, 23745) +HANDLE_BAT(APINT_TYPE_PREFIX, 23746) +HANDLE_BAT(APINT_TYPE_PREFIX, 23747) +HANDLE_BAT(APINT_TYPE_PREFIX, 23748) +HANDLE_BAT(APINT_TYPE_PREFIX, 23749) +HANDLE_BAT(APINT_TYPE_PREFIX, 23750) +HANDLE_BAT(APINT_TYPE_PREFIX, 23751) +HANDLE_BAT(APINT_TYPE_PREFIX, 23752) +HANDLE_BAT(APINT_TYPE_PREFIX, 23753) +HANDLE_BAT(APINT_TYPE_PREFIX, 23754) +HANDLE_BAT(APINT_TYPE_PREFIX, 23755) +HANDLE_BAT(APINT_TYPE_PREFIX, 23756) +HANDLE_BAT(APINT_TYPE_PREFIX, 23757) +HANDLE_BAT(APINT_TYPE_PREFIX, 23758) +HANDLE_BAT(APINT_TYPE_PREFIX, 23759) +HANDLE_BAT(APINT_TYPE_PREFIX, 23760) +HANDLE_BAT(APINT_TYPE_PREFIX, 23761) +HANDLE_BAT(APINT_TYPE_PREFIX, 23762) +HANDLE_BAT(APINT_TYPE_PREFIX, 23763) +HANDLE_BAT(APINT_TYPE_PREFIX, 23764) +HANDLE_BAT(APINT_TYPE_PREFIX, 23765) +HANDLE_BAT(APINT_TYPE_PREFIX, 23766) +HANDLE_BAT(APINT_TYPE_PREFIX, 23767) +HANDLE_BAT(APINT_TYPE_PREFIX, 23768) +HANDLE_BAT(APINT_TYPE_PREFIX, 23769) +HANDLE_BAT(APINT_TYPE_PREFIX, 23770) +HANDLE_BAT(APINT_TYPE_PREFIX, 23771) +HANDLE_BAT(APINT_TYPE_PREFIX, 23772) +HANDLE_BAT(APINT_TYPE_PREFIX, 23773) +HANDLE_BAT(APINT_TYPE_PREFIX, 23774) +HANDLE_BAT(APINT_TYPE_PREFIX, 23775) +HANDLE_BAT(APINT_TYPE_PREFIX, 23776) +HANDLE_BAT(APINT_TYPE_PREFIX, 23777) +HANDLE_BAT(APINT_TYPE_PREFIX, 23778) +HANDLE_BAT(APINT_TYPE_PREFIX, 23779) +HANDLE_BAT(APINT_TYPE_PREFIX, 23780) +HANDLE_BAT(APINT_TYPE_PREFIX, 23781) +HANDLE_BAT(APINT_TYPE_PREFIX, 23782) +HANDLE_BAT(APINT_TYPE_PREFIX, 23783) +HANDLE_BAT(APINT_TYPE_PREFIX, 23784) +HANDLE_BAT(APINT_TYPE_PREFIX, 23785) +HANDLE_BAT(APINT_TYPE_PREFIX, 23786) +HANDLE_BAT(APINT_TYPE_PREFIX, 23787) +HANDLE_BAT(APINT_TYPE_PREFIX, 23788) +HANDLE_BAT(APINT_TYPE_PREFIX, 23789) +HANDLE_BAT(APINT_TYPE_PREFIX, 23790) +HANDLE_BAT(APINT_TYPE_PREFIX, 23791) +HANDLE_BAT(APINT_TYPE_PREFIX, 23792) +HANDLE_BAT(APINT_TYPE_PREFIX, 23793) +HANDLE_BAT(APINT_TYPE_PREFIX, 23794) +HANDLE_BAT(APINT_TYPE_PREFIX, 23795) +HANDLE_BAT(APINT_TYPE_PREFIX, 23796) +HANDLE_BAT(APINT_TYPE_PREFIX, 23797) +HANDLE_BAT(APINT_TYPE_PREFIX, 23798) +HANDLE_BAT(APINT_TYPE_PREFIX, 23799) +HANDLE_BAT(APINT_TYPE_PREFIX, 23800) +HANDLE_BAT(APINT_TYPE_PREFIX, 23801) +HANDLE_BAT(APINT_TYPE_PREFIX, 23802) +HANDLE_BAT(APINT_TYPE_PREFIX, 23803) +HANDLE_BAT(APINT_TYPE_PREFIX, 23804) +HANDLE_BAT(APINT_TYPE_PREFIX, 23805) +HANDLE_BAT(APINT_TYPE_PREFIX, 23806) +HANDLE_BAT(APINT_TYPE_PREFIX, 23807) +HANDLE_BAT(APINT_TYPE_PREFIX, 23808) +HANDLE_BAT(APINT_TYPE_PREFIX, 23809) +HANDLE_BAT(APINT_TYPE_PREFIX, 23810) +HANDLE_BAT(APINT_TYPE_PREFIX, 23811) +HANDLE_BAT(APINT_TYPE_PREFIX, 23812) +HANDLE_BAT(APINT_TYPE_PREFIX, 23813) +HANDLE_BAT(APINT_TYPE_PREFIX, 23814) +HANDLE_BAT(APINT_TYPE_PREFIX, 23815) +HANDLE_BAT(APINT_TYPE_PREFIX, 23816) +HANDLE_BAT(APINT_TYPE_PREFIX, 23817) +HANDLE_BAT(APINT_TYPE_PREFIX, 23818) +HANDLE_BAT(APINT_TYPE_PREFIX, 23819) +HANDLE_BAT(APINT_TYPE_PREFIX, 23820) +HANDLE_BAT(APINT_TYPE_PREFIX, 23821) +HANDLE_BAT(APINT_TYPE_PREFIX, 23822) +HANDLE_BAT(APINT_TYPE_PREFIX, 23823) +HANDLE_BAT(APINT_TYPE_PREFIX, 23824) +HANDLE_BAT(APINT_TYPE_PREFIX, 23825) +HANDLE_BAT(APINT_TYPE_PREFIX, 23826) +HANDLE_BAT(APINT_TYPE_PREFIX, 23827) +HANDLE_BAT(APINT_TYPE_PREFIX, 23828) +HANDLE_BAT(APINT_TYPE_PREFIX, 23829) +HANDLE_BAT(APINT_TYPE_PREFIX, 23830) +HANDLE_BAT(APINT_TYPE_PREFIX, 23831) +HANDLE_BAT(APINT_TYPE_PREFIX, 23832) +HANDLE_BAT(APINT_TYPE_PREFIX, 23833) +HANDLE_BAT(APINT_TYPE_PREFIX, 23834) +HANDLE_BAT(APINT_TYPE_PREFIX, 23835) +HANDLE_BAT(APINT_TYPE_PREFIX, 23836) +HANDLE_BAT(APINT_TYPE_PREFIX, 23837) +HANDLE_BAT(APINT_TYPE_PREFIX, 23838) +HANDLE_BAT(APINT_TYPE_PREFIX, 23839) +HANDLE_BAT(APINT_TYPE_PREFIX, 23840) +HANDLE_BAT(APINT_TYPE_PREFIX, 23841) +HANDLE_BAT(APINT_TYPE_PREFIX, 23842) +HANDLE_BAT(APINT_TYPE_PREFIX, 23843) +HANDLE_BAT(APINT_TYPE_PREFIX, 23844) +HANDLE_BAT(APINT_TYPE_PREFIX, 23845) +HANDLE_BAT(APINT_TYPE_PREFIX, 23846) +HANDLE_BAT(APINT_TYPE_PREFIX, 23847) +HANDLE_BAT(APINT_TYPE_PREFIX, 23848) +HANDLE_BAT(APINT_TYPE_PREFIX, 23849) +HANDLE_BAT(APINT_TYPE_PREFIX, 23850) +HANDLE_BAT(APINT_TYPE_PREFIX, 23851) +HANDLE_BAT(APINT_TYPE_PREFIX, 23852) +HANDLE_BAT(APINT_TYPE_PREFIX, 23853) +HANDLE_BAT(APINT_TYPE_PREFIX, 23854) +HANDLE_BAT(APINT_TYPE_PREFIX, 23855) +HANDLE_BAT(APINT_TYPE_PREFIX, 23856) +HANDLE_BAT(APINT_TYPE_PREFIX, 23857) +HANDLE_BAT(APINT_TYPE_PREFIX, 23858) +HANDLE_BAT(APINT_TYPE_PREFIX, 23859) +HANDLE_BAT(APINT_TYPE_PREFIX, 23860) +HANDLE_BAT(APINT_TYPE_PREFIX, 23861) +HANDLE_BAT(APINT_TYPE_PREFIX, 23862) +HANDLE_BAT(APINT_TYPE_PREFIX, 23863) +HANDLE_BAT(APINT_TYPE_PREFIX, 23864) +HANDLE_BAT(APINT_TYPE_PREFIX, 23865) +HANDLE_BAT(APINT_TYPE_PREFIX, 23866) +HANDLE_BAT(APINT_TYPE_PREFIX, 23867) +HANDLE_BAT(APINT_TYPE_PREFIX, 23868) +HANDLE_BAT(APINT_TYPE_PREFIX, 23869) +HANDLE_BAT(APINT_TYPE_PREFIX, 23870) +HANDLE_BAT(APINT_TYPE_PREFIX, 23871) +HANDLE_BAT(APINT_TYPE_PREFIX, 23872) +HANDLE_BAT(APINT_TYPE_PREFIX, 23873) +HANDLE_BAT(APINT_TYPE_PREFIX, 23874) +HANDLE_BAT(APINT_TYPE_PREFIX, 23875) +HANDLE_BAT(APINT_TYPE_PREFIX, 23876) +HANDLE_BAT(APINT_TYPE_PREFIX, 23877) +HANDLE_BAT(APINT_TYPE_PREFIX, 23878) +HANDLE_BAT(APINT_TYPE_PREFIX, 23879) +HANDLE_BAT(APINT_TYPE_PREFIX, 23880) +HANDLE_BAT(APINT_TYPE_PREFIX, 23881) +HANDLE_BAT(APINT_TYPE_PREFIX, 23882) +HANDLE_BAT(APINT_TYPE_PREFIX, 23883) +HANDLE_BAT(APINT_TYPE_PREFIX, 23884) +HANDLE_BAT(APINT_TYPE_PREFIX, 23885) +HANDLE_BAT(APINT_TYPE_PREFIX, 23886) +HANDLE_BAT(APINT_TYPE_PREFIX, 23887) +HANDLE_BAT(APINT_TYPE_PREFIX, 23888) +HANDLE_BAT(APINT_TYPE_PREFIX, 23889) +HANDLE_BAT(APINT_TYPE_PREFIX, 23890) +HANDLE_BAT(APINT_TYPE_PREFIX, 23891) +HANDLE_BAT(APINT_TYPE_PREFIX, 23892) +HANDLE_BAT(APINT_TYPE_PREFIX, 23893) +HANDLE_BAT(APINT_TYPE_PREFIX, 23894) +HANDLE_BAT(APINT_TYPE_PREFIX, 23895) +HANDLE_BAT(APINT_TYPE_PREFIX, 23896) +HANDLE_BAT(APINT_TYPE_PREFIX, 23897) +HANDLE_BAT(APINT_TYPE_PREFIX, 23898) +HANDLE_BAT(APINT_TYPE_PREFIX, 23899) +HANDLE_BAT(APINT_TYPE_PREFIX, 23900) +HANDLE_BAT(APINT_TYPE_PREFIX, 23901) +HANDLE_BAT(APINT_TYPE_PREFIX, 23902) +HANDLE_BAT(APINT_TYPE_PREFIX, 23903) +HANDLE_BAT(APINT_TYPE_PREFIX, 23904) +HANDLE_BAT(APINT_TYPE_PREFIX, 23905) +HANDLE_BAT(APINT_TYPE_PREFIX, 23906) +HANDLE_BAT(APINT_TYPE_PREFIX, 23907) +HANDLE_BAT(APINT_TYPE_PREFIX, 23908) +HANDLE_BAT(APINT_TYPE_PREFIX, 23909) +HANDLE_BAT(APINT_TYPE_PREFIX, 23910) +HANDLE_BAT(APINT_TYPE_PREFIX, 23911) +HANDLE_BAT(APINT_TYPE_PREFIX, 23912) +HANDLE_BAT(APINT_TYPE_PREFIX, 23913) +HANDLE_BAT(APINT_TYPE_PREFIX, 23914) +HANDLE_BAT(APINT_TYPE_PREFIX, 23915) +HANDLE_BAT(APINT_TYPE_PREFIX, 23916) +HANDLE_BAT(APINT_TYPE_PREFIX, 23917) +HANDLE_BAT(APINT_TYPE_PREFIX, 23918) +HANDLE_BAT(APINT_TYPE_PREFIX, 23919) +HANDLE_BAT(APINT_TYPE_PREFIX, 23920) +HANDLE_BAT(APINT_TYPE_PREFIX, 23921) +HANDLE_BAT(APINT_TYPE_PREFIX, 23922) +HANDLE_BAT(APINT_TYPE_PREFIX, 23923) +HANDLE_BAT(APINT_TYPE_PREFIX, 23924) +HANDLE_BAT(APINT_TYPE_PREFIX, 23925) +HANDLE_BAT(APINT_TYPE_PREFIX, 23926) +HANDLE_BAT(APINT_TYPE_PREFIX, 23927) +HANDLE_BAT(APINT_TYPE_PREFIX, 23928) +HANDLE_BAT(APINT_TYPE_PREFIX, 23929) +HANDLE_BAT(APINT_TYPE_PREFIX, 23930) +HANDLE_BAT(APINT_TYPE_PREFIX, 23931) +HANDLE_BAT(APINT_TYPE_PREFIX, 23932) +HANDLE_BAT(APINT_TYPE_PREFIX, 23933) +HANDLE_BAT(APINT_TYPE_PREFIX, 23934) +HANDLE_BAT(APINT_TYPE_PREFIX, 23935) +HANDLE_BAT(APINT_TYPE_PREFIX, 23936) +HANDLE_BAT(APINT_TYPE_PREFIX, 23937) +HANDLE_BAT(APINT_TYPE_PREFIX, 23938) +HANDLE_BAT(APINT_TYPE_PREFIX, 23939) +HANDLE_BAT(APINT_TYPE_PREFIX, 23940) +HANDLE_BAT(APINT_TYPE_PREFIX, 23941) +HANDLE_BAT(APINT_TYPE_PREFIX, 23942) +HANDLE_BAT(APINT_TYPE_PREFIX, 23943) +HANDLE_BAT(APINT_TYPE_PREFIX, 23944) +HANDLE_BAT(APINT_TYPE_PREFIX, 23945) +HANDLE_BAT(APINT_TYPE_PREFIX, 23946) +HANDLE_BAT(APINT_TYPE_PREFIX, 23947) +HANDLE_BAT(APINT_TYPE_PREFIX, 23948) +HANDLE_BAT(APINT_TYPE_PREFIX, 23949) +HANDLE_BAT(APINT_TYPE_PREFIX, 23950) +HANDLE_BAT(APINT_TYPE_PREFIX, 23951) +HANDLE_BAT(APINT_TYPE_PREFIX, 23952) +HANDLE_BAT(APINT_TYPE_PREFIX, 23953) +HANDLE_BAT(APINT_TYPE_PREFIX, 23954) +HANDLE_BAT(APINT_TYPE_PREFIX, 23955) +HANDLE_BAT(APINT_TYPE_PREFIX, 23956) +HANDLE_BAT(APINT_TYPE_PREFIX, 23957) +HANDLE_BAT(APINT_TYPE_PREFIX, 23958) +HANDLE_BAT(APINT_TYPE_PREFIX, 23959) +HANDLE_BAT(APINT_TYPE_PREFIX, 23960) +HANDLE_BAT(APINT_TYPE_PREFIX, 23961) +HANDLE_BAT(APINT_TYPE_PREFIX, 23962) +HANDLE_BAT(APINT_TYPE_PREFIX, 23963) +HANDLE_BAT(APINT_TYPE_PREFIX, 23964) +HANDLE_BAT(APINT_TYPE_PREFIX, 23965) +HANDLE_BAT(APINT_TYPE_PREFIX, 23966) +HANDLE_BAT(APINT_TYPE_PREFIX, 23967) +HANDLE_BAT(APINT_TYPE_PREFIX, 23968) +HANDLE_BAT(APINT_TYPE_PREFIX, 23969) +HANDLE_BAT(APINT_TYPE_PREFIX, 23970) +HANDLE_BAT(APINT_TYPE_PREFIX, 23971) +HANDLE_BAT(APINT_TYPE_PREFIX, 23972) +HANDLE_BAT(APINT_TYPE_PREFIX, 23973) +HANDLE_BAT(APINT_TYPE_PREFIX, 23974) +HANDLE_BAT(APINT_TYPE_PREFIX, 23975) +HANDLE_BAT(APINT_TYPE_PREFIX, 23976) +HANDLE_BAT(APINT_TYPE_PREFIX, 23977) +HANDLE_BAT(APINT_TYPE_PREFIX, 23978) +HANDLE_BAT(APINT_TYPE_PREFIX, 23979) +HANDLE_BAT(APINT_TYPE_PREFIX, 23980) +HANDLE_BAT(APINT_TYPE_PREFIX, 23981) +HANDLE_BAT(APINT_TYPE_PREFIX, 23982) +HANDLE_BAT(APINT_TYPE_PREFIX, 23983) +HANDLE_BAT(APINT_TYPE_PREFIX, 23984) +HANDLE_BAT(APINT_TYPE_PREFIX, 23985) +HANDLE_BAT(APINT_TYPE_PREFIX, 23986) +HANDLE_BAT(APINT_TYPE_PREFIX, 23987) +HANDLE_BAT(APINT_TYPE_PREFIX, 23988) +HANDLE_BAT(APINT_TYPE_PREFIX, 23989) +HANDLE_BAT(APINT_TYPE_PREFIX, 23990) +HANDLE_BAT(APINT_TYPE_PREFIX, 23991) +HANDLE_BAT(APINT_TYPE_PREFIX, 23992) +HANDLE_BAT(APINT_TYPE_PREFIX, 23993) +HANDLE_BAT(APINT_TYPE_PREFIX, 23994) +HANDLE_BAT(APINT_TYPE_PREFIX, 23995) +HANDLE_BAT(APINT_TYPE_PREFIX, 23996) +HANDLE_BAT(APINT_TYPE_PREFIX, 23997) +HANDLE_BAT(APINT_TYPE_PREFIX, 23998) +HANDLE_BAT(APINT_TYPE_PREFIX, 23999) +HANDLE_BAT(APINT_TYPE_PREFIX, 24000) +HANDLE_BAT(APINT_TYPE_PREFIX, 24001) +HANDLE_BAT(APINT_TYPE_PREFIX, 24002) +HANDLE_BAT(APINT_TYPE_PREFIX, 24003) +HANDLE_BAT(APINT_TYPE_PREFIX, 24004) +HANDLE_BAT(APINT_TYPE_PREFIX, 24005) +HANDLE_BAT(APINT_TYPE_PREFIX, 24006) +HANDLE_BAT(APINT_TYPE_PREFIX, 24007) +HANDLE_BAT(APINT_TYPE_PREFIX, 24008) +HANDLE_BAT(APINT_TYPE_PREFIX, 24009) +HANDLE_BAT(APINT_TYPE_PREFIX, 24010) +HANDLE_BAT(APINT_TYPE_PREFIX, 24011) +HANDLE_BAT(APINT_TYPE_PREFIX, 24012) +HANDLE_BAT(APINT_TYPE_PREFIX, 24013) +HANDLE_BAT(APINT_TYPE_PREFIX, 24014) +HANDLE_BAT(APINT_TYPE_PREFIX, 24015) +HANDLE_BAT(APINT_TYPE_PREFIX, 24016) +HANDLE_BAT(APINT_TYPE_PREFIX, 24017) +HANDLE_BAT(APINT_TYPE_PREFIX, 24018) +HANDLE_BAT(APINT_TYPE_PREFIX, 24019) +HANDLE_BAT(APINT_TYPE_PREFIX, 24020) +HANDLE_BAT(APINT_TYPE_PREFIX, 24021) +HANDLE_BAT(APINT_TYPE_PREFIX, 24022) +HANDLE_BAT(APINT_TYPE_PREFIX, 24023) +HANDLE_BAT(APINT_TYPE_PREFIX, 24024) +HANDLE_BAT(APINT_TYPE_PREFIX, 24025) +HANDLE_BAT(APINT_TYPE_PREFIX, 24026) +HANDLE_BAT(APINT_TYPE_PREFIX, 24027) +HANDLE_BAT(APINT_TYPE_PREFIX, 24028) +HANDLE_BAT(APINT_TYPE_PREFIX, 24029) +HANDLE_BAT(APINT_TYPE_PREFIX, 24030) +HANDLE_BAT(APINT_TYPE_PREFIX, 24031) +HANDLE_BAT(APINT_TYPE_PREFIX, 24032) +HANDLE_BAT(APINT_TYPE_PREFIX, 24033) +HANDLE_BAT(APINT_TYPE_PREFIX, 24034) +HANDLE_BAT(APINT_TYPE_PREFIX, 24035) +HANDLE_BAT(APINT_TYPE_PREFIX, 24036) +HANDLE_BAT(APINT_TYPE_PREFIX, 24037) +HANDLE_BAT(APINT_TYPE_PREFIX, 24038) +HANDLE_BAT(APINT_TYPE_PREFIX, 24039) +HANDLE_BAT(APINT_TYPE_PREFIX, 24040) +HANDLE_BAT(APINT_TYPE_PREFIX, 24041) +HANDLE_BAT(APINT_TYPE_PREFIX, 24042) +HANDLE_BAT(APINT_TYPE_PREFIX, 24043) +HANDLE_BAT(APINT_TYPE_PREFIX, 24044) +HANDLE_BAT(APINT_TYPE_PREFIX, 24045) +HANDLE_BAT(APINT_TYPE_PREFIX, 24046) +HANDLE_BAT(APINT_TYPE_PREFIX, 24047) +HANDLE_BAT(APINT_TYPE_PREFIX, 24048) +HANDLE_BAT(APINT_TYPE_PREFIX, 24049) +HANDLE_BAT(APINT_TYPE_PREFIX, 24050) +HANDLE_BAT(APINT_TYPE_PREFIX, 24051) +HANDLE_BAT(APINT_TYPE_PREFIX, 24052) +HANDLE_BAT(APINT_TYPE_PREFIX, 24053) +HANDLE_BAT(APINT_TYPE_PREFIX, 24054) +HANDLE_BAT(APINT_TYPE_PREFIX, 24055) +HANDLE_BAT(APINT_TYPE_PREFIX, 24056) +HANDLE_BAT(APINT_TYPE_PREFIX, 24057) +HANDLE_BAT(APINT_TYPE_PREFIX, 24058) +HANDLE_BAT(APINT_TYPE_PREFIX, 24059) +HANDLE_BAT(APINT_TYPE_PREFIX, 24060) +HANDLE_BAT(APINT_TYPE_PREFIX, 24061) +HANDLE_BAT(APINT_TYPE_PREFIX, 24062) +HANDLE_BAT(APINT_TYPE_PREFIX, 24063) +HANDLE_BAT(APINT_TYPE_PREFIX, 24064) +HANDLE_BAT(APINT_TYPE_PREFIX, 24065) +HANDLE_BAT(APINT_TYPE_PREFIX, 24066) +HANDLE_BAT(APINT_TYPE_PREFIX, 24067) +HANDLE_BAT(APINT_TYPE_PREFIX, 24068) +HANDLE_BAT(APINT_TYPE_PREFIX, 24069) +HANDLE_BAT(APINT_TYPE_PREFIX, 24070) +HANDLE_BAT(APINT_TYPE_PREFIX, 24071) +HANDLE_BAT(APINT_TYPE_PREFIX, 24072) +HANDLE_BAT(APINT_TYPE_PREFIX, 24073) +HANDLE_BAT(APINT_TYPE_PREFIX, 24074) +HANDLE_BAT(APINT_TYPE_PREFIX, 24075) +HANDLE_BAT(APINT_TYPE_PREFIX, 24076) +HANDLE_BAT(APINT_TYPE_PREFIX, 24077) +HANDLE_BAT(APINT_TYPE_PREFIX, 24078) +HANDLE_BAT(APINT_TYPE_PREFIX, 24079) +HANDLE_BAT(APINT_TYPE_PREFIX, 24080) +HANDLE_BAT(APINT_TYPE_PREFIX, 24081) +HANDLE_BAT(APINT_TYPE_PREFIX, 24082) +HANDLE_BAT(APINT_TYPE_PREFIX, 24083) +HANDLE_BAT(APINT_TYPE_PREFIX, 24084) +HANDLE_BAT(APINT_TYPE_PREFIX, 24085) +HANDLE_BAT(APINT_TYPE_PREFIX, 24086) +HANDLE_BAT(APINT_TYPE_PREFIX, 24087) +HANDLE_BAT(APINT_TYPE_PREFIX, 24088) +HANDLE_BAT(APINT_TYPE_PREFIX, 24089) +HANDLE_BAT(APINT_TYPE_PREFIX, 24090) +HANDLE_BAT(APINT_TYPE_PREFIX, 24091) +HANDLE_BAT(APINT_TYPE_PREFIX, 24092) +HANDLE_BAT(APINT_TYPE_PREFIX, 24093) +HANDLE_BAT(APINT_TYPE_PREFIX, 24094) +HANDLE_BAT(APINT_TYPE_PREFIX, 24095) +HANDLE_BAT(APINT_TYPE_PREFIX, 24096) +HANDLE_BAT(APINT_TYPE_PREFIX, 24097) +HANDLE_BAT(APINT_TYPE_PREFIX, 24098) +HANDLE_BAT(APINT_TYPE_PREFIX, 24099) +HANDLE_BAT(APINT_TYPE_PREFIX, 24100) +HANDLE_BAT(APINT_TYPE_PREFIX, 24101) +HANDLE_BAT(APINT_TYPE_PREFIX, 24102) +HANDLE_BAT(APINT_TYPE_PREFIX, 24103) +HANDLE_BAT(APINT_TYPE_PREFIX, 24104) +HANDLE_BAT(APINT_TYPE_PREFIX, 24105) +HANDLE_BAT(APINT_TYPE_PREFIX, 24106) +HANDLE_BAT(APINT_TYPE_PREFIX, 24107) +HANDLE_BAT(APINT_TYPE_PREFIX, 24108) +HANDLE_BAT(APINT_TYPE_PREFIX, 24109) +HANDLE_BAT(APINT_TYPE_PREFIX, 24110) +HANDLE_BAT(APINT_TYPE_PREFIX, 24111) +HANDLE_BAT(APINT_TYPE_PREFIX, 24112) +HANDLE_BAT(APINT_TYPE_PREFIX, 24113) +HANDLE_BAT(APINT_TYPE_PREFIX, 24114) +HANDLE_BAT(APINT_TYPE_PREFIX, 24115) +HANDLE_BAT(APINT_TYPE_PREFIX, 24116) +HANDLE_BAT(APINT_TYPE_PREFIX, 24117) +HANDLE_BAT(APINT_TYPE_PREFIX, 24118) +HANDLE_BAT(APINT_TYPE_PREFIX, 24119) +HANDLE_BAT(APINT_TYPE_PREFIX, 24120) +HANDLE_BAT(APINT_TYPE_PREFIX, 24121) +HANDLE_BAT(APINT_TYPE_PREFIX, 24122) +HANDLE_BAT(APINT_TYPE_PREFIX, 24123) +HANDLE_BAT(APINT_TYPE_PREFIX, 24124) +HANDLE_BAT(APINT_TYPE_PREFIX, 24125) +HANDLE_BAT(APINT_TYPE_PREFIX, 24126) +HANDLE_BAT(APINT_TYPE_PREFIX, 24127) +HANDLE_BAT(APINT_TYPE_PREFIX, 24128) +HANDLE_BAT(APINT_TYPE_PREFIX, 24129) +HANDLE_BAT(APINT_TYPE_PREFIX, 24130) +HANDLE_BAT(APINT_TYPE_PREFIX, 24131) +HANDLE_BAT(APINT_TYPE_PREFIX, 24132) +HANDLE_BAT(APINT_TYPE_PREFIX, 24133) +HANDLE_BAT(APINT_TYPE_PREFIX, 24134) +HANDLE_BAT(APINT_TYPE_PREFIX, 24135) +HANDLE_BAT(APINT_TYPE_PREFIX, 24136) +HANDLE_BAT(APINT_TYPE_PREFIX, 24137) +HANDLE_BAT(APINT_TYPE_PREFIX, 24138) +HANDLE_BAT(APINT_TYPE_PREFIX, 24139) +HANDLE_BAT(APINT_TYPE_PREFIX, 24140) +HANDLE_BAT(APINT_TYPE_PREFIX, 24141) +HANDLE_BAT(APINT_TYPE_PREFIX, 24142) +HANDLE_BAT(APINT_TYPE_PREFIX, 24143) +HANDLE_BAT(APINT_TYPE_PREFIX, 24144) +HANDLE_BAT(APINT_TYPE_PREFIX, 24145) +HANDLE_BAT(APINT_TYPE_PREFIX, 24146) +HANDLE_BAT(APINT_TYPE_PREFIX, 24147) +HANDLE_BAT(APINT_TYPE_PREFIX, 24148) +HANDLE_BAT(APINT_TYPE_PREFIX, 24149) +HANDLE_BAT(APINT_TYPE_PREFIX, 24150) +HANDLE_BAT(APINT_TYPE_PREFIX, 24151) +HANDLE_BAT(APINT_TYPE_PREFIX, 24152) +HANDLE_BAT(APINT_TYPE_PREFIX, 24153) +HANDLE_BAT(APINT_TYPE_PREFIX, 24154) +HANDLE_BAT(APINT_TYPE_PREFIX, 24155) +HANDLE_BAT(APINT_TYPE_PREFIX, 24156) +HANDLE_BAT(APINT_TYPE_PREFIX, 24157) +HANDLE_BAT(APINT_TYPE_PREFIX, 24158) +HANDLE_BAT(APINT_TYPE_PREFIX, 24159) +HANDLE_BAT(APINT_TYPE_PREFIX, 24160) +HANDLE_BAT(APINT_TYPE_PREFIX, 24161) +HANDLE_BAT(APINT_TYPE_PREFIX, 24162) +HANDLE_BAT(APINT_TYPE_PREFIX, 24163) +HANDLE_BAT(APINT_TYPE_PREFIX, 24164) +HANDLE_BAT(APINT_TYPE_PREFIX, 24165) +HANDLE_BAT(APINT_TYPE_PREFIX, 24166) +HANDLE_BAT(APINT_TYPE_PREFIX, 24167) +HANDLE_BAT(APINT_TYPE_PREFIX, 24168) +HANDLE_BAT(APINT_TYPE_PREFIX, 24169) +HANDLE_BAT(APINT_TYPE_PREFIX, 24170) +HANDLE_BAT(APINT_TYPE_PREFIX, 24171) +HANDLE_BAT(APINT_TYPE_PREFIX, 24172) +HANDLE_BAT(APINT_TYPE_PREFIX, 24173) +HANDLE_BAT(APINT_TYPE_PREFIX, 24174) +HANDLE_BAT(APINT_TYPE_PREFIX, 24175) +HANDLE_BAT(APINT_TYPE_PREFIX, 24176) +HANDLE_BAT(APINT_TYPE_PREFIX, 24177) +HANDLE_BAT(APINT_TYPE_PREFIX, 24178) +HANDLE_BAT(APINT_TYPE_PREFIX, 24179) +HANDLE_BAT(APINT_TYPE_PREFIX, 24180) +HANDLE_BAT(APINT_TYPE_PREFIX, 24181) +HANDLE_BAT(APINT_TYPE_PREFIX, 24182) +HANDLE_BAT(APINT_TYPE_PREFIX, 24183) +HANDLE_BAT(APINT_TYPE_PREFIX, 24184) +HANDLE_BAT(APINT_TYPE_PREFIX, 24185) +HANDLE_BAT(APINT_TYPE_PREFIX, 24186) +HANDLE_BAT(APINT_TYPE_PREFIX, 24187) +HANDLE_BAT(APINT_TYPE_PREFIX, 24188) +HANDLE_BAT(APINT_TYPE_PREFIX, 24189) +HANDLE_BAT(APINT_TYPE_PREFIX, 24190) +HANDLE_BAT(APINT_TYPE_PREFIX, 24191) +HANDLE_BAT(APINT_TYPE_PREFIX, 24192) +HANDLE_BAT(APINT_TYPE_PREFIX, 24193) +HANDLE_BAT(APINT_TYPE_PREFIX, 24194) +HANDLE_BAT(APINT_TYPE_PREFIX, 24195) +HANDLE_BAT(APINT_TYPE_PREFIX, 24196) +HANDLE_BAT(APINT_TYPE_PREFIX, 24197) +HANDLE_BAT(APINT_TYPE_PREFIX, 24198) +HANDLE_BAT(APINT_TYPE_PREFIX, 24199) +HANDLE_BAT(APINT_TYPE_PREFIX, 24200) +HANDLE_BAT(APINT_TYPE_PREFIX, 24201) +HANDLE_BAT(APINT_TYPE_PREFIX, 24202) +HANDLE_BAT(APINT_TYPE_PREFIX, 24203) +HANDLE_BAT(APINT_TYPE_PREFIX, 24204) +HANDLE_BAT(APINT_TYPE_PREFIX, 24205) +HANDLE_BAT(APINT_TYPE_PREFIX, 24206) +HANDLE_BAT(APINT_TYPE_PREFIX, 24207) +HANDLE_BAT(APINT_TYPE_PREFIX, 24208) +HANDLE_BAT(APINT_TYPE_PREFIX, 24209) +HANDLE_BAT(APINT_TYPE_PREFIX, 24210) +HANDLE_BAT(APINT_TYPE_PREFIX, 24211) +HANDLE_BAT(APINT_TYPE_PREFIX, 24212) +HANDLE_BAT(APINT_TYPE_PREFIX, 24213) +HANDLE_BAT(APINT_TYPE_PREFIX, 24214) +HANDLE_BAT(APINT_TYPE_PREFIX, 24215) +HANDLE_BAT(APINT_TYPE_PREFIX, 24216) +HANDLE_BAT(APINT_TYPE_PREFIX, 24217) +HANDLE_BAT(APINT_TYPE_PREFIX, 24218) +HANDLE_BAT(APINT_TYPE_PREFIX, 24219) +HANDLE_BAT(APINT_TYPE_PREFIX, 24220) +HANDLE_BAT(APINT_TYPE_PREFIX, 24221) +HANDLE_BAT(APINT_TYPE_PREFIX, 24222) +HANDLE_BAT(APINT_TYPE_PREFIX, 24223) +HANDLE_BAT(APINT_TYPE_PREFIX, 24224) +HANDLE_BAT(APINT_TYPE_PREFIX, 24225) +HANDLE_BAT(APINT_TYPE_PREFIX, 24226) +HANDLE_BAT(APINT_TYPE_PREFIX, 24227) +HANDLE_BAT(APINT_TYPE_PREFIX, 24228) +HANDLE_BAT(APINT_TYPE_PREFIX, 24229) +HANDLE_BAT(APINT_TYPE_PREFIX, 24230) +HANDLE_BAT(APINT_TYPE_PREFIX, 24231) +HANDLE_BAT(APINT_TYPE_PREFIX, 24232) +HANDLE_BAT(APINT_TYPE_PREFIX, 24233) +HANDLE_BAT(APINT_TYPE_PREFIX, 24234) +HANDLE_BAT(APINT_TYPE_PREFIX, 24235) +HANDLE_BAT(APINT_TYPE_PREFIX, 24236) +HANDLE_BAT(APINT_TYPE_PREFIX, 24237) +HANDLE_BAT(APINT_TYPE_PREFIX, 24238) +HANDLE_BAT(APINT_TYPE_PREFIX, 24239) +HANDLE_BAT(APINT_TYPE_PREFIX, 24240) +HANDLE_BAT(APINT_TYPE_PREFIX, 24241) +HANDLE_BAT(APINT_TYPE_PREFIX, 24242) +HANDLE_BAT(APINT_TYPE_PREFIX, 24243) +HANDLE_BAT(APINT_TYPE_PREFIX, 24244) +HANDLE_BAT(APINT_TYPE_PREFIX, 24245) +HANDLE_BAT(APINT_TYPE_PREFIX, 24246) +HANDLE_BAT(APINT_TYPE_PREFIX, 24247) +HANDLE_BAT(APINT_TYPE_PREFIX, 24248) +HANDLE_BAT(APINT_TYPE_PREFIX, 24249) +HANDLE_BAT(APINT_TYPE_PREFIX, 24250) +HANDLE_BAT(APINT_TYPE_PREFIX, 24251) +HANDLE_BAT(APINT_TYPE_PREFIX, 24252) +HANDLE_BAT(APINT_TYPE_PREFIX, 24253) +HANDLE_BAT(APINT_TYPE_PREFIX, 24254) +HANDLE_BAT(APINT_TYPE_PREFIX, 24255) +HANDLE_BAT(APINT_TYPE_PREFIX, 24256) +HANDLE_BAT(APINT_TYPE_PREFIX, 24257) +HANDLE_BAT(APINT_TYPE_PREFIX, 24258) +HANDLE_BAT(APINT_TYPE_PREFIX, 24259) +HANDLE_BAT(APINT_TYPE_PREFIX, 24260) +HANDLE_BAT(APINT_TYPE_PREFIX, 24261) +HANDLE_BAT(APINT_TYPE_PREFIX, 24262) +HANDLE_BAT(APINT_TYPE_PREFIX, 24263) +HANDLE_BAT(APINT_TYPE_PREFIX, 24264) +HANDLE_BAT(APINT_TYPE_PREFIX, 24265) +HANDLE_BAT(APINT_TYPE_PREFIX, 24266) +HANDLE_BAT(APINT_TYPE_PREFIX, 24267) +HANDLE_BAT(APINT_TYPE_PREFIX, 24268) +HANDLE_BAT(APINT_TYPE_PREFIX, 24269) +HANDLE_BAT(APINT_TYPE_PREFIX, 24270) +HANDLE_BAT(APINT_TYPE_PREFIX, 24271) +HANDLE_BAT(APINT_TYPE_PREFIX, 24272) +HANDLE_BAT(APINT_TYPE_PREFIX, 24273) +HANDLE_BAT(APINT_TYPE_PREFIX, 24274) +HANDLE_BAT(APINT_TYPE_PREFIX, 24275) +HANDLE_BAT(APINT_TYPE_PREFIX, 24276) +HANDLE_BAT(APINT_TYPE_PREFIX, 24277) +HANDLE_BAT(APINT_TYPE_PREFIX, 24278) +HANDLE_BAT(APINT_TYPE_PREFIX, 24279) +HANDLE_BAT(APINT_TYPE_PREFIX, 24280) +HANDLE_BAT(APINT_TYPE_PREFIX, 24281) +HANDLE_BAT(APINT_TYPE_PREFIX, 24282) +HANDLE_BAT(APINT_TYPE_PREFIX, 24283) +HANDLE_BAT(APINT_TYPE_PREFIX, 24284) +HANDLE_BAT(APINT_TYPE_PREFIX, 24285) +HANDLE_BAT(APINT_TYPE_PREFIX, 24286) +HANDLE_BAT(APINT_TYPE_PREFIX, 24287) +HANDLE_BAT(APINT_TYPE_PREFIX, 24288) +HANDLE_BAT(APINT_TYPE_PREFIX, 24289) +HANDLE_BAT(APINT_TYPE_PREFIX, 24290) +HANDLE_BAT(APINT_TYPE_PREFIX, 24291) +HANDLE_BAT(APINT_TYPE_PREFIX, 24292) +HANDLE_BAT(APINT_TYPE_PREFIX, 24293) +HANDLE_BAT(APINT_TYPE_PREFIX, 24294) +HANDLE_BAT(APINT_TYPE_PREFIX, 24295) +HANDLE_BAT(APINT_TYPE_PREFIX, 24296) +HANDLE_BAT(APINT_TYPE_PREFIX, 24297) +HANDLE_BAT(APINT_TYPE_PREFIX, 24298) +HANDLE_BAT(APINT_TYPE_PREFIX, 24299) +HANDLE_BAT(APINT_TYPE_PREFIX, 24300) +HANDLE_BAT(APINT_TYPE_PREFIX, 24301) +HANDLE_BAT(APINT_TYPE_PREFIX, 24302) +HANDLE_BAT(APINT_TYPE_PREFIX, 24303) +HANDLE_BAT(APINT_TYPE_PREFIX, 24304) +HANDLE_BAT(APINT_TYPE_PREFIX, 24305) +HANDLE_BAT(APINT_TYPE_PREFIX, 24306) +HANDLE_BAT(APINT_TYPE_PREFIX, 24307) +HANDLE_BAT(APINT_TYPE_PREFIX, 24308) +HANDLE_BAT(APINT_TYPE_PREFIX, 24309) +HANDLE_BAT(APINT_TYPE_PREFIX, 24310) +HANDLE_BAT(APINT_TYPE_PREFIX, 24311) +HANDLE_BAT(APINT_TYPE_PREFIX, 24312) +HANDLE_BAT(APINT_TYPE_PREFIX, 24313) +HANDLE_BAT(APINT_TYPE_PREFIX, 24314) +HANDLE_BAT(APINT_TYPE_PREFIX, 24315) +HANDLE_BAT(APINT_TYPE_PREFIX, 24316) +HANDLE_BAT(APINT_TYPE_PREFIX, 24317) +HANDLE_BAT(APINT_TYPE_PREFIX, 24318) +HANDLE_BAT(APINT_TYPE_PREFIX, 24319) +HANDLE_BAT(APINT_TYPE_PREFIX, 24320) +HANDLE_BAT(APINT_TYPE_PREFIX, 24321) +HANDLE_BAT(APINT_TYPE_PREFIX, 24322) +HANDLE_BAT(APINT_TYPE_PREFIX, 24323) +HANDLE_BAT(APINT_TYPE_PREFIX, 24324) +HANDLE_BAT(APINT_TYPE_PREFIX, 24325) +HANDLE_BAT(APINT_TYPE_PREFIX, 24326) +HANDLE_BAT(APINT_TYPE_PREFIX, 24327) +HANDLE_BAT(APINT_TYPE_PREFIX, 24328) +HANDLE_BAT(APINT_TYPE_PREFIX, 24329) +HANDLE_BAT(APINT_TYPE_PREFIX, 24330) +HANDLE_BAT(APINT_TYPE_PREFIX, 24331) +HANDLE_BAT(APINT_TYPE_PREFIX, 24332) +HANDLE_BAT(APINT_TYPE_PREFIX, 24333) +HANDLE_BAT(APINT_TYPE_PREFIX, 24334) +HANDLE_BAT(APINT_TYPE_PREFIX, 24335) +HANDLE_BAT(APINT_TYPE_PREFIX, 24336) +HANDLE_BAT(APINT_TYPE_PREFIX, 24337) +HANDLE_BAT(APINT_TYPE_PREFIX, 24338) +HANDLE_BAT(APINT_TYPE_PREFIX, 24339) +HANDLE_BAT(APINT_TYPE_PREFIX, 24340) +HANDLE_BAT(APINT_TYPE_PREFIX, 24341) +HANDLE_BAT(APINT_TYPE_PREFIX, 24342) +HANDLE_BAT(APINT_TYPE_PREFIX, 24343) +HANDLE_BAT(APINT_TYPE_PREFIX, 24344) +HANDLE_BAT(APINT_TYPE_PREFIX, 24345) +HANDLE_BAT(APINT_TYPE_PREFIX, 24346) +HANDLE_BAT(APINT_TYPE_PREFIX, 24347) +HANDLE_BAT(APINT_TYPE_PREFIX, 24348) +HANDLE_BAT(APINT_TYPE_PREFIX, 24349) +HANDLE_BAT(APINT_TYPE_PREFIX, 24350) +HANDLE_BAT(APINT_TYPE_PREFIX, 24351) +HANDLE_BAT(APINT_TYPE_PREFIX, 24352) +HANDLE_BAT(APINT_TYPE_PREFIX, 24353) +HANDLE_BAT(APINT_TYPE_PREFIX, 24354) +HANDLE_BAT(APINT_TYPE_PREFIX, 24355) +HANDLE_BAT(APINT_TYPE_PREFIX, 24356) +HANDLE_BAT(APINT_TYPE_PREFIX, 24357) +HANDLE_BAT(APINT_TYPE_PREFIX, 24358) +HANDLE_BAT(APINT_TYPE_PREFIX, 24359) +HANDLE_BAT(APINT_TYPE_PREFIX, 24360) +HANDLE_BAT(APINT_TYPE_PREFIX, 24361) +HANDLE_BAT(APINT_TYPE_PREFIX, 24362) +HANDLE_BAT(APINT_TYPE_PREFIX, 24363) +HANDLE_BAT(APINT_TYPE_PREFIX, 24364) +HANDLE_BAT(APINT_TYPE_PREFIX, 24365) +HANDLE_BAT(APINT_TYPE_PREFIX, 24366) +HANDLE_BAT(APINT_TYPE_PREFIX, 24367) +HANDLE_BAT(APINT_TYPE_PREFIX, 24368) +HANDLE_BAT(APINT_TYPE_PREFIX, 24369) +HANDLE_BAT(APINT_TYPE_PREFIX, 24370) +HANDLE_BAT(APINT_TYPE_PREFIX, 24371) +HANDLE_BAT(APINT_TYPE_PREFIX, 24372) +HANDLE_BAT(APINT_TYPE_PREFIX, 24373) +HANDLE_BAT(APINT_TYPE_PREFIX, 24374) +HANDLE_BAT(APINT_TYPE_PREFIX, 24375) +HANDLE_BAT(APINT_TYPE_PREFIX, 24376) +HANDLE_BAT(APINT_TYPE_PREFIX, 24377) +HANDLE_BAT(APINT_TYPE_PREFIX, 24378) +HANDLE_BAT(APINT_TYPE_PREFIX, 24379) +HANDLE_BAT(APINT_TYPE_PREFIX, 24380) +HANDLE_BAT(APINT_TYPE_PREFIX, 24381) +HANDLE_BAT(APINT_TYPE_PREFIX, 24382) +HANDLE_BAT(APINT_TYPE_PREFIX, 24383) +HANDLE_BAT(APINT_TYPE_PREFIX, 24384) +HANDLE_BAT(APINT_TYPE_PREFIX, 24385) +HANDLE_BAT(APINT_TYPE_PREFIX, 24386) +HANDLE_BAT(APINT_TYPE_PREFIX, 24387) +HANDLE_BAT(APINT_TYPE_PREFIX, 24388) +HANDLE_BAT(APINT_TYPE_PREFIX, 24389) +HANDLE_BAT(APINT_TYPE_PREFIX, 24390) +HANDLE_BAT(APINT_TYPE_PREFIX, 24391) +HANDLE_BAT(APINT_TYPE_PREFIX, 24392) +HANDLE_BAT(APINT_TYPE_PREFIX, 24393) +HANDLE_BAT(APINT_TYPE_PREFIX, 24394) +HANDLE_BAT(APINT_TYPE_PREFIX, 24395) +HANDLE_BAT(APINT_TYPE_PREFIX, 24396) +HANDLE_BAT(APINT_TYPE_PREFIX, 24397) +HANDLE_BAT(APINT_TYPE_PREFIX, 24398) +HANDLE_BAT(APINT_TYPE_PREFIX, 24399) +HANDLE_BAT(APINT_TYPE_PREFIX, 24400) +HANDLE_BAT(APINT_TYPE_PREFIX, 24401) +HANDLE_BAT(APINT_TYPE_PREFIX, 24402) +HANDLE_BAT(APINT_TYPE_PREFIX, 24403) +HANDLE_BAT(APINT_TYPE_PREFIX, 24404) +HANDLE_BAT(APINT_TYPE_PREFIX, 24405) +HANDLE_BAT(APINT_TYPE_PREFIX, 24406) +HANDLE_BAT(APINT_TYPE_PREFIX, 24407) +HANDLE_BAT(APINT_TYPE_PREFIX, 24408) +HANDLE_BAT(APINT_TYPE_PREFIX, 24409) +HANDLE_BAT(APINT_TYPE_PREFIX, 24410) +HANDLE_BAT(APINT_TYPE_PREFIX, 24411) +HANDLE_BAT(APINT_TYPE_PREFIX, 24412) +HANDLE_BAT(APINT_TYPE_PREFIX, 24413) +HANDLE_BAT(APINT_TYPE_PREFIX, 24414) +HANDLE_BAT(APINT_TYPE_PREFIX, 24415) +HANDLE_BAT(APINT_TYPE_PREFIX, 24416) +HANDLE_BAT(APINT_TYPE_PREFIX, 24417) +HANDLE_BAT(APINT_TYPE_PREFIX, 24418) +HANDLE_BAT(APINT_TYPE_PREFIX, 24419) +HANDLE_BAT(APINT_TYPE_PREFIX, 24420) +HANDLE_BAT(APINT_TYPE_PREFIX, 24421) +HANDLE_BAT(APINT_TYPE_PREFIX, 24422) +HANDLE_BAT(APINT_TYPE_PREFIX, 24423) +HANDLE_BAT(APINT_TYPE_PREFIX, 24424) +HANDLE_BAT(APINT_TYPE_PREFIX, 24425) +HANDLE_BAT(APINT_TYPE_PREFIX, 24426) +HANDLE_BAT(APINT_TYPE_PREFIX, 24427) +HANDLE_BAT(APINT_TYPE_PREFIX, 24428) +HANDLE_BAT(APINT_TYPE_PREFIX, 24429) +HANDLE_BAT(APINT_TYPE_PREFIX, 24430) +HANDLE_BAT(APINT_TYPE_PREFIX, 24431) +HANDLE_BAT(APINT_TYPE_PREFIX, 24432) +HANDLE_BAT(APINT_TYPE_PREFIX, 24433) +HANDLE_BAT(APINT_TYPE_PREFIX, 24434) +HANDLE_BAT(APINT_TYPE_PREFIX, 24435) +HANDLE_BAT(APINT_TYPE_PREFIX, 24436) +HANDLE_BAT(APINT_TYPE_PREFIX, 24437) +HANDLE_BAT(APINT_TYPE_PREFIX, 24438) +HANDLE_BAT(APINT_TYPE_PREFIX, 24439) +HANDLE_BAT(APINT_TYPE_PREFIX, 24440) +HANDLE_BAT(APINT_TYPE_PREFIX, 24441) +HANDLE_BAT(APINT_TYPE_PREFIX, 24442) +HANDLE_BAT(APINT_TYPE_PREFIX, 24443) +HANDLE_BAT(APINT_TYPE_PREFIX, 24444) +HANDLE_BAT(APINT_TYPE_PREFIX, 24445) +HANDLE_BAT(APINT_TYPE_PREFIX, 24446) +HANDLE_BAT(APINT_TYPE_PREFIX, 24447) +HANDLE_BAT(APINT_TYPE_PREFIX, 24448) +HANDLE_BAT(APINT_TYPE_PREFIX, 24449) +HANDLE_BAT(APINT_TYPE_PREFIX, 24450) +HANDLE_BAT(APINT_TYPE_PREFIX, 24451) +HANDLE_BAT(APINT_TYPE_PREFIX, 24452) +HANDLE_BAT(APINT_TYPE_PREFIX, 24453) +HANDLE_BAT(APINT_TYPE_PREFIX, 24454) +HANDLE_BAT(APINT_TYPE_PREFIX, 24455) +HANDLE_BAT(APINT_TYPE_PREFIX, 24456) +HANDLE_BAT(APINT_TYPE_PREFIX, 24457) +HANDLE_BAT(APINT_TYPE_PREFIX, 24458) +HANDLE_BAT(APINT_TYPE_PREFIX, 24459) +HANDLE_BAT(APINT_TYPE_PREFIX, 24460) +HANDLE_BAT(APINT_TYPE_PREFIX, 24461) +HANDLE_BAT(APINT_TYPE_PREFIX, 24462) +HANDLE_BAT(APINT_TYPE_PREFIX, 24463) +HANDLE_BAT(APINT_TYPE_PREFIX, 24464) +HANDLE_BAT(APINT_TYPE_PREFIX, 24465) +HANDLE_BAT(APINT_TYPE_PREFIX, 24466) +HANDLE_BAT(APINT_TYPE_PREFIX, 24467) +HANDLE_BAT(APINT_TYPE_PREFIX, 24468) +HANDLE_BAT(APINT_TYPE_PREFIX, 24469) +HANDLE_BAT(APINT_TYPE_PREFIX, 24470) +HANDLE_BAT(APINT_TYPE_PREFIX, 24471) +HANDLE_BAT(APINT_TYPE_PREFIX, 24472) +HANDLE_BAT(APINT_TYPE_PREFIX, 24473) +HANDLE_BAT(APINT_TYPE_PREFIX, 24474) +HANDLE_BAT(APINT_TYPE_PREFIX, 24475) +HANDLE_BAT(APINT_TYPE_PREFIX, 24476) +HANDLE_BAT(APINT_TYPE_PREFIX, 24477) +HANDLE_BAT(APINT_TYPE_PREFIX, 24478) +HANDLE_BAT(APINT_TYPE_PREFIX, 24479) +HANDLE_BAT(APINT_TYPE_PREFIX, 24480) +HANDLE_BAT(APINT_TYPE_PREFIX, 24481) +HANDLE_BAT(APINT_TYPE_PREFIX, 24482) +HANDLE_BAT(APINT_TYPE_PREFIX, 24483) +HANDLE_BAT(APINT_TYPE_PREFIX, 24484) +HANDLE_BAT(APINT_TYPE_PREFIX, 24485) +HANDLE_BAT(APINT_TYPE_PREFIX, 24486) +HANDLE_BAT(APINT_TYPE_PREFIX, 24487) +HANDLE_BAT(APINT_TYPE_PREFIX, 24488) +HANDLE_BAT(APINT_TYPE_PREFIX, 24489) +HANDLE_BAT(APINT_TYPE_PREFIX, 24490) +HANDLE_BAT(APINT_TYPE_PREFIX, 24491) +HANDLE_BAT(APINT_TYPE_PREFIX, 24492) +HANDLE_BAT(APINT_TYPE_PREFIX, 24493) +HANDLE_BAT(APINT_TYPE_PREFIX, 24494) +HANDLE_BAT(APINT_TYPE_PREFIX, 24495) +HANDLE_BAT(APINT_TYPE_PREFIX, 24496) +HANDLE_BAT(APINT_TYPE_PREFIX, 24497) +HANDLE_BAT(APINT_TYPE_PREFIX, 24498) +HANDLE_BAT(APINT_TYPE_PREFIX, 24499) +HANDLE_BAT(APINT_TYPE_PREFIX, 24500) +HANDLE_BAT(APINT_TYPE_PREFIX, 24501) +HANDLE_BAT(APINT_TYPE_PREFIX, 24502) +HANDLE_BAT(APINT_TYPE_PREFIX, 24503) +HANDLE_BAT(APINT_TYPE_PREFIX, 24504) +HANDLE_BAT(APINT_TYPE_PREFIX, 24505) +HANDLE_BAT(APINT_TYPE_PREFIX, 24506) +HANDLE_BAT(APINT_TYPE_PREFIX, 24507) +HANDLE_BAT(APINT_TYPE_PREFIX, 24508) +HANDLE_BAT(APINT_TYPE_PREFIX, 24509) +HANDLE_BAT(APINT_TYPE_PREFIX, 24510) +HANDLE_BAT(APINT_TYPE_PREFIX, 24511) +HANDLE_BAT(APINT_TYPE_PREFIX, 24512) +HANDLE_BAT(APINT_TYPE_PREFIX, 24513) +HANDLE_BAT(APINT_TYPE_PREFIX, 24514) +HANDLE_BAT(APINT_TYPE_PREFIX, 24515) +HANDLE_BAT(APINT_TYPE_PREFIX, 24516) +HANDLE_BAT(APINT_TYPE_PREFIX, 24517) +HANDLE_BAT(APINT_TYPE_PREFIX, 24518) +HANDLE_BAT(APINT_TYPE_PREFIX, 24519) +HANDLE_BAT(APINT_TYPE_PREFIX, 24520) +HANDLE_BAT(APINT_TYPE_PREFIX, 24521) +HANDLE_BAT(APINT_TYPE_PREFIX, 24522) +HANDLE_BAT(APINT_TYPE_PREFIX, 24523) +HANDLE_BAT(APINT_TYPE_PREFIX, 24524) +HANDLE_BAT(APINT_TYPE_PREFIX, 24525) +HANDLE_BAT(APINT_TYPE_PREFIX, 24526) +HANDLE_BAT(APINT_TYPE_PREFIX, 24527) +HANDLE_BAT(APINT_TYPE_PREFIX, 24528) +HANDLE_BAT(APINT_TYPE_PREFIX, 24529) +HANDLE_BAT(APINT_TYPE_PREFIX, 24530) +HANDLE_BAT(APINT_TYPE_PREFIX, 24531) +HANDLE_BAT(APINT_TYPE_PREFIX, 24532) +HANDLE_BAT(APINT_TYPE_PREFIX, 24533) +HANDLE_BAT(APINT_TYPE_PREFIX, 24534) +HANDLE_BAT(APINT_TYPE_PREFIX, 24535) +HANDLE_BAT(APINT_TYPE_PREFIX, 24536) +HANDLE_BAT(APINT_TYPE_PREFIX, 24537) +HANDLE_BAT(APINT_TYPE_PREFIX, 24538) +HANDLE_BAT(APINT_TYPE_PREFIX, 24539) +HANDLE_BAT(APINT_TYPE_PREFIX, 24540) +HANDLE_BAT(APINT_TYPE_PREFIX, 24541) +HANDLE_BAT(APINT_TYPE_PREFIX, 24542) +HANDLE_BAT(APINT_TYPE_PREFIX, 24543) +HANDLE_BAT(APINT_TYPE_PREFIX, 24544) +HANDLE_BAT(APINT_TYPE_PREFIX, 24545) +HANDLE_BAT(APINT_TYPE_PREFIX, 24546) +HANDLE_BAT(APINT_TYPE_PREFIX, 24547) +HANDLE_BAT(APINT_TYPE_PREFIX, 24548) +HANDLE_BAT(APINT_TYPE_PREFIX, 24549) +HANDLE_BAT(APINT_TYPE_PREFIX, 24550) +HANDLE_BAT(APINT_TYPE_PREFIX, 24551) +HANDLE_BAT(APINT_TYPE_PREFIX, 24552) +HANDLE_BAT(APINT_TYPE_PREFIX, 24553) +HANDLE_BAT(APINT_TYPE_PREFIX, 24554) +HANDLE_BAT(APINT_TYPE_PREFIX, 24555) +HANDLE_BAT(APINT_TYPE_PREFIX, 24556) +HANDLE_BAT(APINT_TYPE_PREFIX, 24557) +HANDLE_BAT(APINT_TYPE_PREFIX, 24558) +HANDLE_BAT(APINT_TYPE_PREFIX, 24559) +HANDLE_BAT(APINT_TYPE_PREFIX, 24560) +HANDLE_BAT(APINT_TYPE_PREFIX, 24561) +HANDLE_BAT(APINT_TYPE_PREFIX, 24562) +HANDLE_BAT(APINT_TYPE_PREFIX, 24563) +HANDLE_BAT(APINT_TYPE_PREFIX, 24564) +HANDLE_BAT(APINT_TYPE_PREFIX, 24565) +HANDLE_BAT(APINT_TYPE_PREFIX, 24566) +HANDLE_BAT(APINT_TYPE_PREFIX, 24567) +HANDLE_BAT(APINT_TYPE_PREFIX, 24568) +HANDLE_BAT(APINT_TYPE_PREFIX, 24569) +HANDLE_BAT(APINT_TYPE_PREFIX, 24570) +HANDLE_BAT(APINT_TYPE_PREFIX, 24571) +HANDLE_BAT(APINT_TYPE_PREFIX, 24572) +HANDLE_BAT(APINT_TYPE_PREFIX, 24573) +HANDLE_BAT(APINT_TYPE_PREFIX, 24574) +HANDLE_BAT(APINT_TYPE_PREFIX, 24575) +HANDLE_BAT(APINT_TYPE_PREFIX, 24576) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 24 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 24577) +HANDLE_BAT(, 24578) +HANDLE_BAT(, 24579) +HANDLE_BAT(, 24580) +HANDLE_BAT(, 24581) +HANDLE_BAT(, 24582) +HANDLE_BAT(, 24583) +HANDLE_BAT(, 24584) +HANDLE_BAT(, 24585) +HANDLE_BAT(, 24586) +HANDLE_BAT(, 24587) +HANDLE_BAT(, 24588) +HANDLE_BAT(, 24589) +HANDLE_BAT(, 24590) +HANDLE_BAT(, 24591) +HANDLE_BAT(, 24592) +HANDLE_BAT(, 24593) +HANDLE_BAT(, 24594) +HANDLE_BAT(, 24595) +HANDLE_BAT(, 24596) +HANDLE_BAT(, 24597) +HANDLE_BAT(, 24598) +HANDLE_BAT(, 24599) +HANDLE_BAT(, 24600) +HANDLE_BAT(, 24601) +HANDLE_BAT(, 24602) +HANDLE_BAT(, 24603) +HANDLE_BAT(, 24604) +HANDLE_BAT(, 24605) +HANDLE_BAT(, 24606) +HANDLE_BAT(, 24607) +HANDLE_BAT(, 24608) +HANDLE_BAT(, 24609) +HANDLE_BAT(, 24610) +HANDLE_BAT(, 24611) +HANDLE_BAT(, 24612) +HANDLE_BAT(, 24613) +HANDLE_BAT(, 24614) +HANDLE_BAT(, 24615) +HANDLE_BAT(, 24616) +HANDLE_BAT(, 24617) +HANDLE_BAT(, 24618) +HANDLE_BAT(, 24619) +HANDLE_BAT(, 24620) +HANDLE_BAT(, 24621) +HANDLE_BAT(, 24622) +HANDLE_BAT(, 24623) +HANDLE_BAT(, 24624) +HANDLE_BAT(, 24625) +HANDLE_BAT(, 24626) +HANDLE_BAT(, 24627) +HANDLE_BAT(, 24628) +HANDLE_BAT(, 24629) +HANDLE_BAT(, 24630) +HANDLE_BAT(, 24631) +HANDLE_BAT(, 24632) +HANDLE_BAT(, 24633) +HANDLE_BAT(, 24634) +HANDLE_BAT(, 24635) +HANDLE_BAT(, 24636) +HANDLE_BAT(, 24637) +HANDLE_BAT(, 24638) +HANDLE_BAT(, 24639) +HANDLE_BAT(, 24640) +HANDLE_BAT(, 24641) +HANDLE_BAT(, 24642) +HANDLE_BAT(, 24643) +HANDLE_BAT(, 24644) +HANDLE_BAT(, 24645) +HANDLE_BAT(, 24646) +HANDLE_BAT(, 24647) +HANDLE_BAT(, 24648) +HANDLE_BAT(, 24649) +HANDLE_BAT(, 24650) +HANDLE_BAT(, 24651) +HANDLE_BAT(, 24652) +HANDLE_BAT(, 24653) +HANDLE_BAT(, 24654) +HANDLE_BAT(, 24655) +HANDLE_BAT(, 24656) +HANDLE_BAT(, 24657) +HANDLE_BAT(, 24658) +HANDLE_BAT(, 24659) +HANDLE_BAT(, 24660) +HANDLE_BAT(, 24661) +HANDLE_BAT(, 24662) +HANDLE_BAT(, 24663) +HANDLE_BAT(, 24664) +HANDLE_BAT(, 24665) +HANDLE_BAT(, 24666) +HANDLE_BAT(, 24667) +HANDLE_BAT(, 24668) +HANDLE_BAT(, 24669) +HANDLE_BAT(, 24670) +HANDLE_BAT(, 24671) +HANDLE_BAT(, 24672) +HANDLE_BAT(, 24673) +HANDLE_BAT(, 24674) +HANDLE_BAT(, 24675) +HANDLE_BAT(, 24676) +HANDLE_BAT(, 24677) +HANDLE_BAT(, 24678) +HANDLE_BAT(, 24679) +HANDLE_BAT(, 24680) +HANDLE_BAT(, 24681) +HANDLE_BAT(, 24682) +HANDLE_BAT(, 24683) +HANDLE_BAT(, 24684) +HANDLE_BAT(, 24685) +HANDLE_BAT(, 24686) +HANDLE_BAT(, 24687) +HANDLE_BAT(, 24688) +HANDLE_BAT(, 24689) +HANDLE_BAT(, 24690) +HANDLE_BAT(, 24691) +HANDLE_BAT(, 24692) +HANDLE_BAT(, 24693) +HANDLE_BAT(, 24694) +HANDLE_BAT(, 24695) +HANDLE_BAT(, 24696) +HANDLE_BAT(, 24697) +HANDLE_BAT(, 24698) +HANDLE_BAT(, 24699) +HANDLE_BAT(, 24700) +HANDLE_BAT(, 24701) +HANDLE_BAT(, 24702) +HANDLE_BAT(, 24703) +HANDLE_BAT(, 24704) +HANDLE_BAT(, 24705) +HANDLE_BAT(, 24706) +HANDLE_BAT(, 24707) +HANDLE_BAT(, 24708) +HANDLE_BAT(, 24709) +HANDLE_BAT(, 24710) +HANDLE_BAT(, 24711) +HANDLE_BAT(, 24712) +HANDLE_BAT(, 24713) +HANDLE_BAT(, 24714) +HANDLE_BAT(, 24715) +HANDLE_BAT(, 24716) +HANDLE_BAT(, 24717) +HANDLE_BAT(, 24718) +HANDLE_BAT(, 24719) +HANDLE_BAT(, 24720) +HANDLE_BAT(, 24721) +HANDLE_BAT(, 24722) +HANDLE_BAT(, 24723) +HANDLE_BAT(, 24724) +HANDLE_BAT(, 24725) +HANDLE_BAT(, 24726) +HANDLE_BAT(, 24727) +HANDLE_BAT(, 24728) +HANDLE_BAT(, 24729) +HANDLE_BAT(, 24730) +HANDLE_BAT(, 24731) +HANDLE_BAT(, 24732) +HANDLE_BAT(, 24733) +HANDLE_BAT(, 24734) +HANDLE_BAT(, 24735) +HANDLE_BAT(, 24736) +HANDLE_BAT(, 24737) +HANDLE_BAT(, 24738) +HANDLE_BAT(, 24739) +HANDLE_BAT(, 24740) +HANDLE_BAT(, 24741) +HANDLE_BAT(, 24742) +HANDLE_BAT(, 24743) +HANDLE_BAT(, 24744) +HANDLE_BAT(, 24745) +HANDLE_BAT(, 24746) +HANDLE_BAT(, 24747) +HANDLE_BAT(, 24748) +HANDLE_BAT(, 24749) +HANDLE_BAT(, 24750) +HANDLE_BAT(, 24751) +HANDLE_BAT(, 24752) +HANDLE_BAT(, 24753) +HANDLE_BAT(, 24754) +HANDLE_BAT(, 24755) +HANDLE_BAT(, 24756) +HANDLE_BAT(, 24757) +HANDLE_BAT(, 24758) +HANDLE_BAT(, 24759) +HANDLE_BAT(, 24760) +HANDLE_BAT(, 24761) +HANDLE_BAT(, 24762) +HANDLE_BAT(, 24763) +HANDLE_BAT(, 24764) +HANDLE_BAT(, 24765) +HANDLE_BAT(, 24766) +HANDLE_BAT(, 24767) +HANDLE_BAT(, 24768) +HANDLE_BAT(, 24769) +HANDLE_BAT(, 24770) +HANDLE_BAT(, 24771) +HANDLE_BAT(, 24772) +HANDLE_BAT(, 24773) +HANDLE_BAT(, 24774) +HANDLE_BAT(, 24775) +HANDLE_BAT(, 24776) +HANDLE_BAT(, 24777) +HANDLE_BAT(, 24778) +HANDLE_BAT(, 24779) +HANDLE_BAT(, 24780) +HANDLE_BAT(, 24781) +HANDLE_BAT(, 24782) +HANDLE_BAT(, 24783) +HANDLE_BAT(, 24784) +HANDLE_BAT(, 24785) +HANDLE_BAT(, 24786) +HANDLE_BAT(, 24787) +HANDLE_BAT(, 24788) +HANDLE_BAT(, 24789) +HANDLE_BAT(, 24790) +HANDLE_BAT(, 24791) +HANDLE_BAT(, 24792) +HANDLE_BAT(, 24793) +HANDLE_BAT(, 24794) +HANDLE_BAT(, 24795) +HANDLE_BAT(, 24796) +HANDLE_BAT(, 24797) +HANDLE_BAT(, 24798) +HANDLE_BAT(, 24799) +HANDLE_BAT(, 24800) +HANDLE_BAT(, 24801) +HANDLE_BAT(, 24802) +HANDLE_BAT(, 24803) +HANDLE_BAT(, 24804) +HANDLE_BAT(, 24805) +HANDLE_BAT(, 24806) +HANDLE_BAT(, 24807) +HANDLE_BAT(, 24808) +HANDLE_BAT(, 24809) +HANDLE_BAT(, 24810) +HANDLE_BAT(, 24811) +HANDLE_BAT(, 24812) +HANDLE_BAT(, 24813) +HANDLE_BAT(, 24814) +HANDLE_BAT(, 24815) +HANDLE_BAT(, 24816) +HANDLE_BAT(, 24817) +HANDLE_BAT(, 24818) +HANDLE_BAT(, 24819) +HANDLE_BAT(, 24820) +HANDLE_BAT(, 24821) +HANDLE_BAT(, 24822) +HANDLE_BAT(, 24823) +HANDLE_BAT(, 24824) +HANDLE_BAT(, 24825) +HANDLE_BAT(, 24826) +HANDLE_BAT(, 24827) +HANDLE_BAT(, 24828) +HANDLE_BAT(, 24829) +HANDLE_BAT(, 24830) +HANDLE_BAT(, 24831) +HANDLE_BAT(, 24832) +HANDLE_BAT(, 24833) +HANDLE_BAT(, 24834) +HANDLE_BAT(, 24835) +HANDLE_BAT(, 24836) +HANDLE_BAT(, 24837) +HANDLE_BAT(, 24838) +HANDLE_BAT(, 24839) +HANDLE_BAT(, 24840) +HANDLE_BAT(, 24841) +HANDLE_BAT(, 24842) +HANDLE_BAT(, 24843) +HANDLE_BAT(, 24844) +HANDLE_BAT(, 24845) +HANDLE_BAT(, 24846) +HANDLE_BAT(, 24847) +HANDLE_BAT(, 24848) +HANDLE_BAT(, 24849) +HANDLE_BAT(, 24850) +HANDLE_BAT(, 24851) +HANDLE_BAT(, 24852) +HANDLE_BAT(, 24853) +HANDLE_BAT(, 24854) +HANDLE_BAT(, 24855) +HANDLE_BAT(, 24856) +HANDLE_BAT(, 24857) +HANDLE_BAT(, 24858) +HANDLE_BAT(, 24859) +HANDLE_BAT(, 24860) +HANDLE_BAT(, 24861) +HANDLE_BAT(, 24862) +HANDLE_BAT(, 24863) +HANDLE_BAT(, 24864) +HANDLE_BAT(, 24865) +HANDLE_BAT(, 24866) +HANDLE_BAT(, 24867) +HANDLE_BAT(, 24868) +HANDLE_BAT(, 24869) +HANDLE_BAT(, 24870) +HANDLE_BAT(, 24871) +HANDLE_BAT(, 24872) +HANDLE_BAT(, 24873) +HANDLE_BAT(, 24874) +HANDLE_BAT(, 24875) +HANDLE_BAT(, 24876) +HANDLE_BAT(, 24877) +HANDLE_BAT(, 24878) +HANDLE_BAT(, 24879) +HANDLE_BAT(, 24880) +HANDLE_BAT(, 24881) +HANDLE_BAT(, 24882) +HANDLE_BAT(, 24883) +HANDLE_BAT(, 24884) +HANDLE_BAT(, 24885) +HANDLE_BAT(, 24886) +HANDLE_BAT(, 24887) +HANDLE_BAT(, 24888) +HANDLE_BAT(, 24889) +HANDLE_BAT(, 24890) +HANDLE_BAT(, 24891) +HANDLE_BAT(, 24892) +HANDLE_BAT(, 24893) +HANDLE_BAT(, 24894) +HANDLE_BAT(, 24895) +HANDLE_BAT(, 24896) +HANDLE_BAT(, 24897) +HANDLE_BAT(, 24898) +HANDLE_BAT(, 24899) +HANDLE_BAT(, 24900) +HANDLE_BAT(, 24901) +HANDLE_BAT(, 24902) +HANDLE_BAT(, 24903) +HANDLE_BAT(, 24904) +HANDLE_BAT(, 24905) +HANDLE_BAT(, 24906) +HANDLE_BAT(, 24907) +HANDLE_BAT(, 24908) +HANDLE_BAT(, 24909) +HANDLE_BAT(, 24910) +HANDLE_BAT(, 24911) +HANDLE_BAT(, 24912) +HANDLE_BAT(, 24913) +HANDLE_BAT(, 24914) +HANDLE_BAT(, 24915) +HANDLE_BAT(, 24916) +HANDLE_BAT(, 24917) +HANDLE_BAT(, 24918) +HANDLE_BAT(, 24919) +HANDLE_BAT(, 24920) +HANDLE_BAT(, 24921) +HANDLE_BAT(, 24922) +HANDLE_BAT(, 24923) +HANDLE_BAT(, 24924) +HANDLE_BAT(, 24925) +HANDLE_BAT(, 24926) +HANDLE_BAT(, 24927) +HANDLE_BAT(, 24928) +HANDLE_BAT(, 24929) +HANDLE_BAT(, 24930) +HANDLE_BAT(, 24931) +HANDLE_BAT(, 24932) +HANDLE_BAT(, 24933) +HANDLE_BAT(, 24934) +HANDLE_BAT(, 24935) +HANDLE_BAT(, 24936) +HANDLE_BAT(, 24937) +HANDLE_BAT(, 24938) +HANDLE_BAT(, 24939) +HANDLE_BAT(, 24940) +HANDLE_BAT(, 24941) +HANDLE_BAT(, 24942) +HANDLE_BAT(, 24943) +HANDLE_BAT(, 24944) +HANDLE_BAT(, 24945) +HANDLE_BAT(, 24946) +HANDLE_BAT(, 24947) +HANDLE_BAT(, 24948) +HANDLE_BAT(, 24949) +HANDLE_BAT(, 24950) +HANDLE_BAT(, 24951) +HANDLE_BAT(, 24952) +HANDLE_BAT(, 24953) +HANDLE_BAT(, 24954) +HANDLE_BAT(, 24955) +HANDLE_BAT(, 24956) +HANDLE_BAT(, 24957) +HANDLE_BAT(, 24958) +HANDLE_BAT(, 24959) +HANDLE_BAT(, 24960) +HANDLE_BAT(, 24961) +HANDLE_BAT(, 24962) +HANDLE_BAT(, 24963) +HANDLE_BAT(, 24964) +HANDLE_BAT(, 24965) +HANDLE_BAT(, 24966) +HANDLE_BAT(, 24967) +HANDLE_BAT(, 24968) +HANDLE_BAT(, 24969) +HANDLE_BAT(, 24970) +HANDLE_BAT(, 24971) +HANDLE_BAT(, 24972) +HANDLE_BAT(, 24973) +HANDLE_BAT(, 24974) +HANDLE_BAT(, 24975) +HANDLE_BAT(, 24976) +HANDLE_BAT(, 24977) +HANDLE_BAT(, 24978) +HANDLE_BAT(, 24979) +HANDLE_BAT(, 24980) +HANDLE_BAT(, 24981) +HANDLE_BAT(, 24982) +HANDLE_BAT(, 24983) +HANDLE_BAT(, 24984) +HANDLE_BAT(, 24985) +HANDLE_BAT(, 24986) +HANDLE_BAT(, 24987) +HANDLE_BAT(, 24988) +HANDLE_BAT(, 24989) +HANDLE_BAT(, 24990) +HANDLE_BAT(, 24991) +HANDLE_BAT(, 24992) +HANDLE_BAT(, 24993) +HANDLE_BAT(, 24994) +HANDLE_BAT(, 24995) +HANDLE_BAT(, 24996) +HANDLE_BAT(, 24997) +HANDLE_BAT(, 24998) +HANDLE_BAT(, 24999) +HANDLE_BAT(, 25000) +HANDLE_BAT(, 25001) +HANDLE_BAT(, 25002) +HANDLE_BAT(, 25003) +HANDLE_BAT(, 25004) +HANDLE_BAT(, 25005) +HANDLE_BAT(, 25006) +HANDLE_BAT(, 25007) +HANDLE_BAT(, 25008) +HANDLE_BAT(, 25009) +HANDLE_BAT(, 25010) +HANDLE_BAT(, 25011) +HANDLE_BAT(, 25012) +HANDLE_BAT(, 25013) +HANDLE_BAT(, 25014) +HANDLE_BAT(, 25015) +HANDLE_BAT(, 25016) +HANDLE_BAT(, 25017) +HANDLE_BAT(, 25018) +HANDLE_BAT(, 25019) +HANDLE_BAT(, 25020) +HANDLE_BAT(, 25021) +HANDLE_BAT(, 25022) +HANDLE_BAT(, 25023) +HANDLE_BAT(, 25024) +HANDLE_BAT(, 25025) +HANDLE_BAT(, 25026) +HANDLE_BAT(, 25027) +HANDLE_BAT(, 25028) +HANDLE_BAT(, 25029) +HANDLE_BAT(, 25030) +HANDLE_BAT(, 25031) +HANDLE_BAT(, 25032) +HANDLE_BAT(, 25033) +HANDLE_BAT(, 25034) +HANDLE_BAT(, 25035) +HANDLE_BAT(, 25036) +HANDLE_BAT(, 25037) +HANDLE_BAT(, 25038) +HANDLE_BAT(, 25039) +HANDLE_BAT(, 25040) +HANDLE_BAT(, 25041) +HANDLE_BAT(, 25042) +HANDLE_BAT(, 25043) +HANDLE_BAT(, 25044) +HANDLE_BAT(, 25045) +HANDLE_BAT(, 25046) +HANDLE_BAT(, 25047) +HANDLE_BAT(, 25048) +HANDLE_BAT(, 25049) +HANDLE_BAT(, 25050) +HANDLE_BAT(, 25051) +HANDLE_BAT(, 25052) +HANDLE_BAT(, 25053) +HANDLE_BAT(, 25054) +HANDLE_BAT(, 25055) +HANDLE_BAT(, 25056) +HANDLE_BAT(, 25057) +HANDLE_BAT(, 25058) +HANDLE_BAT(, 25059) +HANDLE_BAT(, 25060) +HANDLE_BAT(, 25061) +HANDLE_BAT(, 25062) +HANDLE_BAT(, 25063) +HANDLE_BAT(, 25064) +HANDLE_BAT(, 25065) +HANDLE_BAT(, 25066) +HANDLE_BAT(, 25067) +HANDLE_BAT(, 25068) +HANDLE_BAT(, 25069) +HANDLE_BAT(, 25070) +HANDLE_BAT(, 25071) +HANDLE_BAT(, 25072) +HANDLE_BAT(, 25073) +HANDLE_BAT(, 25074) +HANDLE_BAT(, 25075) +HANDLE_BAT(, 25076) +HANDLE_BAT(, 25077) +HANDLE_BAT(, 25078) +HANDLE_BAT(, 25079) +HANDLE_BAT(, 25080) +HANDLE_BAT(, 25081) +HANDLE_BAT(, 25082) +HANDLE_BAT(, 25083) +HANDLE_BAT(, 25084) +HANDLE_BAT(, 25085) +HANDLE_BAT(, 25086) +HANDLE_BAT(, 25087) +HANDLE_BAT(, 25088) +HANDLE_BAT(, 25089) +HANDLE_BAT(, 25090) +HANDLE_BAT(, 25091) +HANDLE_BAT(, 25092) +HANDLE_BAT(, 25093) +HANDLE_BAT(, 25094) +HANDLE_BAT(, 25095) +HANDLE_BAT(, 25096) +HANDLE_BAT(, 25097) +HANDLE_BAT(, 25098) +HANDLE_BAT(, 25099) +HANDLE_BAT(, 25100) +HANDLE_BAT(, 25101) +HANDLE_BAT(, 25102) +HANDLE_BAT(, 25103) +HANDLE_BAT(, 25104) +HANDLE_BAT(, 25105) +HANDLE_BAT(, 25106) +HANDLE_BAT(, 25107) +HANDLE_BAT(, 25108) +HANDLE_BAT(, 25109) +HANDLE_BAT(, 25110) +HANDLE_BAT(, 25111) +HANDLE_BAT(, 25112) +HANDLE_BAT(, 25113) +HANDLE_BAT(, 25114) +HANDLE_BAT(, 25115) +HANDLE_BAT(, 25116) +HANDLE_BAT(, 25117) +HANDLE_BAT(, 25118) +HANDLE_BAT(, 25119) +HANDLE_BAT(, 25120) +HANDLE_BAT(, 25121) +HANDLE_BAT(, 25122) +HANDLE_BAT(, 25123) +HANDLE_BAT(, 25124) +HANDLE_BAT(, 25125) +HANDLE_BAT(, 25126) +HANDLE_BAT(, 25127) +HANDLE_BAT(, 25128) +HANDLE_BAT(, 25129) +HANDLE_BAT(, 25130) +HANDLE_BAT(, 25131) +HANDLE_BAT(, 25132) +HANDLE_BAT(, 25133) +HANDLE_BAT(, 25134) +HANDLE_BAT(, 25135) +HANDLE_BAT(, 25136) +HANDLE_BAT(, 25137) +HANDLE_BAT(, 25138) +HANDLE_BAT(, 25139) +HANDLE_BAT(, 25140) +HANDLE_BAT(, 25141) +HANDLE_BAT(, 25142) +HANDLE_BAT(, 25143) +HANDLE_BAT(, 25144) +HANDLE_BAT(, 25145) +HANDLE_BAT(, 25146) +HANDLE_BAT(, 25147) +HANDLE_BAT(, 25148) +HANDLE_BAT(, 25149) +HANDLE_BAT(, 25150) +HANDLE_BAT(, 25151) +HANDLE_BAT(, 25152) +HANDLE_BAT(, 25153) +HANDLE_BAT(, 25154) +HANDLE_BAT(, 25155) +HANDLE_BAT(, 25156) +HANDLE_BAT(, 25157) +HANDLE_BAT(, 25158) +HANDLE_BAT(, 25159) +HANDLE_BAT(, 25160) +HANDLE_BAT(, 25161) +HANDLE_BAT(, 25162) +HANDLE_BAT(, 25163) +HANDLE_BAT(, 25164) +HANDLE_BAT(, 25165) +HANDLE_BAT(, 25166) +HANDLE_BAT(, 25167) +HANDLE_BAT(, 25168) +HANDLE_BAT(, 25169) +HANDLE_BAT(, 25170) +HANDLE_BAT(, 25171) +HANDLE_BAT(, 25172) +HANDLE_BAT(, 25173) +HANDLE_BAT(, 25174) +HANDLE_BAT(, 25175) +HANDLE_BAT(, 25176) +HANDLE_BAT(, 25177) +HANDLE_BAT(, 25178) +HANDLE_BAT(, 25179) +HANDLE_BAT(, 25180) +HANDLE_BAT(, 25181) +HANDLE_BAT(, 25182) +HANDLE_BAT(, 25183) +HANDLE_BAT(, 25184) +HANDLE_BAT(, 25185) +HANDLE_BAT(, 25186) +HANDLE_BAT(, 25187) +HANDLE_BAT(, 25188) +HANDLE_BAT(, 25189) +HANDLE_BAT(, 25190) +HANDLE_BAT(, 25191) +HANDLE_BAT(, 25192) +HANDLE_BAT(, 25193) +HANDLE_BAT(, 25194) +HANDLE_BAT(, 25195) +HANDLE_BAT(, 25196) +HANDLE_BAT(, 25197) +HANDLE_BAT(, 25198) +HANDLE_BAT(, 25199) +HANDLE_BAT(, 25200) +HANDLE_BAT(, 25201) +HANDLE_BAT(, 25202) +HANDLE_BAT(, 25203) +HANDLE_BAT(, 25204) +HANDLE_BAT(, 25205) +HANDLE_BAT(, 25206) +HANDLE_BAT(, 25207) +HANDLE_BAT(, 25208) +HANDLE_BAT(, 25209) +HANDLE_BAT(, 25210) +HANDLE_BAT(, 25211) +HANDLE_BAT(, 25212) +HANDLE_BAT(, 25213) +HANDLE_BAT(, 25214) +HANDLE_BAT(, 25215) +HANDLE_BAT(, 25216) +HANDLE_BAT(, 25217) +HANDLE_BAT(, 25218) +HANDLE_BAT(, 25219) +HANDLE_BAT(, 25220) +HANDLE_BAT(, 25221) +HANDLE_BAT(, 25222) +HANDLE_BAT(, 25223) +HANDLE_BAT(, 25224) +HANDLE_BAT(, 25225) +HANDLE_BAT(, 25226) +HANDLE_BAT(, 25227) +HANDLE_BAT(, 25228) +HANDLE_BAT(, 25229) +HANDLE_BAT(, 25230) +HANDLE_BAT(, 25231) +HANDLE_BAT(, 25232) +HANDLE_BAT(, 25233) +HANDLE_BAT(, 25234) +HANDLE_BAT(, 25235) +HANDLE_BAT(, 25236) +HANDLE_BAT(, 25237) +HANDLE_BAT(, 25238) +HANDLE_BAT(, 25239) +HANDLE_BAT(, 25240) +HANDLE_BAT(, 25241) +HANDLE_BAT(, 25242) +HANDLE_BAT(, 25243) +HANDLE_BAT(, 25244) +HANDLE_BAT(, 25245) +HANDLE_BAT(, 25246) +HANDLE_BAT(, 25247) +HANDLE_BAT(, 25248) +HANDLE_BAT(, 25249) +HANDLE_BAT(, 25250) +HANDLE_BAT(, 25251) +HANDLE_BAT(, 25252) +HANDLE_BAT(, 25253) +HANDLE_BAT(, 25254) +HANDLE_BAT(, 25255) +HANDLE_BAT(, 25256) +HANDLE_BAT(, 25257) +HANDLE_BAT(, 25258) +HANDLE_BAT(, 25259) +HANDLE_BAT(, 25260) +HANDLE_BAT(, 25261) +HANDLE_BAT(, 25262) +HANDLE_BAT(, 25263) +HANDLE_BAT(, 25264) +HANDLE_BAT(, 25265) +HANDLE_BAT(, 25266) +HANDLE_BAT(, 25267) +HANDLE_BAT(, 25268) +HANDLE_BAT(, 25269) +HANDLE_BAT(, 25270) +HANDLE_BAT(, 25271) +HANDLE_BAT(, 25272) +HANDLE_BAT(, 25273) +HANDLE_BAT(, 25274) +HANDLE_BAT(, 25275) +HANDLE_BAT(, 25276) +HANDLE_BAT(, 25277) +HANDLE_BAT(, 25278) +HANDLE_BAT(, 25279) +HANDLE_BAT(, 25280) +HANDLE_BAT(, 25281) +HANDLE_BAT(, 25282) +HANDLE_BAT(, 25283) +HANDLE_BAT(, 25284) +HANDLE_BAT(, 25285) +HANDLE_BAT(, 25286) +HANDLE_BAT(, 25287) +HANDLE_BAT(, 25288) +HANDLE_BAT(, 25289) +HANDLE_BAT(, 25290) +HANDLE_BAT(, 25291) +HANDLE_BAT(, 25292) +HANDLE_BAT(, 25293) +HANDLE_BAT(, 25294) +HANDLE_BAT(, 25295) +HANDLE_BAT(, 25296) +HANDLE_BAT(, 25297) +HANDLE_BAT(, 25298) +HANDLE_BAT(, 25299) +HANDLE_BAT(, 25300) +HANDLE_BAT(, 25301) +HANDLE_BAT(, 25302) +HANDLE_BAT(, 25303) +HANDLE_BAT(, 25304) +HANDLE_BAT(, 25305) +HANDLE_BAT(, 25306) +HANDLE_BAT(, 25307) +HANDLE_BAT(, 25308) +HANDLE_BAT(, 25309) +HANDLE_BAT(, 25310) +HANDLE_BAT(, 25311) +HANDLE_BAT(, 25312) +HANDLE_BAT(, 25313) +HANDLE_BAT(, 25314) +HANDLE_BAT(, 25315) +HANDLE_BAT(, 25316) +HANDLE_BAT(, 25317) +HANDLE_BAT(, 25318) +HANDLE_BAT(, 25319) +HANDLE_BAT(, 25320) +HANDLE_BAT(, 25321) +HANDLE_BAT(, 25322) +HANDLE_BAT(, 25323) +HANDLE_BAT(, 25324) +HANDLE_BAT(, 25325) +HANDLE_BAT(, 25326) +HANDLE_BAT(, 25327) +HANDLE_BAT(, 25328) +HANDLE_BAT(, 25329) +HANDLE_BAT(, 25330) +HANDLE_BAT(, 25331) +HANDLE_BAT(, 25332) +HANDLE_BAT(, 25333) +HANDLE_BAT(, 25334) +HANDLE_BAT(, 25335) +HANDLE_BAT(, 25336) +HANDLE_BAT(, 25337) +HANDLE_BAT(, 25338) +HANDLE_BAT(, 25339) +HANDLE_BAT(, 25340) +HANDLE_BAT(, 25341) +HANDLE_BAT(, 25342) +HANDLE_BAT(, 25343) +HANDLE_BAT(, 25344) +HANDLE_BAT(, 25345) +HANDLE_BAT(, 25346) +HANDLE_BAT(, 25347) +HANDLE_BAT(, 25348) +HANDLE_BAT(, 25349) +HANDLE_BAT(, 25350) +HANDLE_BAT(, 25351) +HANDLE_BAT(, 25352) +HANDLE_BAT(, 25353) +HANDLE_BAT(, 25354) +HANDLE_BAT(, 25355) +HANDLE_BAT(, 25356) +HANDLE_BAT(, 25357) +HANDLE_BAT(, 25358) +HANDLE_BAT(, 25359) +HANDLE_BAT(, 25360) +HANDLE_BAT(, 25361) +HANDLE_BAT(, 25362) +HANDLE_BAT(, 25363) +HANDLE_BAT(, 25364) +HANDLE_BAT(, 25365) +HANDLE_BAT(, 25366) +HANDLE_BAT(, 25367) +HANDLE_BAT(, 25368) +HANDLE_BAT(, 25369) +HANDLE_BAT(, 25370) +HANDLE_BAT(, 25371) +HANDLE_BAT(, 25372) +HANDLE_BAT(, 25373) +HANDLE_BAT(, 25374) +HANDLE_BAT(, 25375) +HANDLE_BAT(, 25376) +HANDLE_BAT(, 25377) +HANDLE_BAT(, 25378) +HANDLE_BAT(, 25379) +HANDLE_BAT(, 25380) +HANDLE_BAT(, 25381) +HANDLE_BAT(, 25382) +HANDLE_BAT(, 25383) +HANDLE_BAT(, 25384) +HANDLE_BAT(, 25385) +HANDLE_BAT(, 25386) +HANDLE_BAT(, 25387) +HANDLE_BAT(, 25388) +HANDLE_BAT(, 25389) +HANDLE_BAT(, 25390) +HANDLE_BAT(, 25391) +HANDLE_BAT(, 25392) +HANDLE_BAT(, 25393) +HANDLE_BAT(, 25394) +HANDLE_BAT(, 25395) +HANDLE_BAT(, 25396) +HANDLE_BAT(, 25397) +HANDLE_BAT(, 25398) +HANDLE_BAT(, 25399) +HANDLE_BAT(, 25400) +HANDLE_BAT(, 25401) +HANDLE_BAT(, 25402) +HANDLE_BAT(, 25403) +HANDLE_BAT(, 25404) +HANDLE_BAT(, 25405) +HANDLE_BAT(, 25406) +HANDLE_BAT(, 25407) +HANDLE_BAT(, 25408) +HANDLE_BAT(, 25409) +HANDLE_BAT(, 25410) +HANDLE_BAT(, 25411) +HANDLE_BAT(, 25412) +HANDLE_BAT(, 25413) +HANDLE_BAT(, 25414) +HANDLE_BAT(, 25415) +HANDLE_BAT(, 25416) +HANDLE_BAT(, 25417) +HANDLE_BAT(, 25418) +HANDLE_BAT(, 25419) +HANDLE_BAT(, 25420) +HANDLE_BAT(, 25421) +HANDLE_BAT(, 25422) +HANDLE_BAT(, 25423) +HANDLE_BAT(, 25424) +HANDLE_BAT(, 25425) +HANDLE_BAT(, 25426) +HANDLE_BAT(, 25427) +HANDLE_BAT(, 25428) +HANDLE_BAT(, 25429) +HANDLE_BAT(, 25430) +HANDLE_BAT(, 25431) +HANDLE_BAT(, 25432) +HANDLE_BAT(, 25433) +HANDLE_BAT(, 25434) +HANDLE_BAT(, 25435) +HANDLE_BAT(, 25436) +HANDLE_BAT(, 25437) +HANDLE_BAT(, 25438) +HANDLE_BAT(, 25439) +HANDLE_BAT(, 25440) +HANDLE_BAT(, 25441) +HANDLE_BAT(, 25442) +HANDLE_BAT(, 25443) +HANDLE_BAT(, 25444) +HANDLE_BAT(, 25445) +HANDLE_BAT(, 25446) +HANDLE_BAT(, 25447) +HANDLE_BAT(, 25448) +HANDLE_BAT(, 25449) +HANDLE_BAT(, 25450) +HANDLE_BAT(, 25451) +HANDLE_BAT(, 25452) +HANDLE_BAT(, 25453) +HANDLE_BAT(, 25454) +HANDLE_BAT(, 25455) +HANDLE_BAT(, 25456) +HANDLE_BAT(, 25457) +HANDLE_BAT(, 25458) +HANDLE_BAT(, 25459) +HANDLE_BAT(, 25460) +HANDLE_BAT(, 25461) +HANDLE_BAT(, 25462) +HANDLE_BAT(, 25463) +HANDLE_BAT(, 25464) +HANDLE_BAT(, 25465) +HANDLE_BAT(, 25466) +HANDLE_BAT(, 25467) +HANDLE_BAT(, 25468) +HANDLE_BAT(, 25469) +HANDLE_BAT(, 25470) +HANDLE_BAT(, 25471) +HANDLE_BAT(, 25472) +HANDLE_BAT(, 25473) +HANDLE_BAT(, 25474) +HANDLE_BAT(, 25475) +HANDLE_BAT(, 25476) +HANDLE_BAT(, 25477) +HANDLE_BAT(, 25478) +HANDLE_BAT(, 25479) +HANDLE_BAT(, 25480) +HANDLE_BAT(, 25481) +HANDLE_BAT(, 25482) +HANDLE_BAT(, 25483) +HANDLE_BAT(, 25484) +HANDLE_BAT(, 25485) +HANDLE_BAT(, 25486) +HANDLE_BAT(, 25487) +HANDLE_BAT(, 25488) +HANDLE_BAT(, 25489) +HANDLE_BAT(, 25490) +HANDLE_BAT(, 25491) +HANDLE_BAT(, 25492) +HANDLE_BAT(, 25493) +HANDLE_BAT(, 25494) +HANDLE_BAT(, 25495) +HANDLE_BAT(, 25496) +HANDLE_BAT(, 25497) +HANDLE_BAT(, 25498) +HANDLE_BAT(, 25499) +HANDLE_BAT(, 25500) +HANDLE_BAT(, 25501) +HANDLE_BAT(, 25502) +HANDLE_BAT(, 25503) +HANDLE_BAT(, 25504) +HANDLE_BAT(, 25505) +HANDLE_BAT(, 25506) +HANDLE_BAT(, 25507) +HANDLE_BAT(, 25508) +HANDLE_BAT(, 25509) +HANDLE_BAT(, 25510) +HANDLE_BAT(, 25511) +HANDLE_BAT(, 25512) +HANDLE_BAT(, 25513) +HANDLE_BAT(, 25514) +HANDLE_BAT(, 25515) +HANDLE_BAT(, 25516) +HANDLE_BAT(, 25517) +HANDLE_BAT(, 25518) +HANDLE_BAT(, 25519) +HANDLE_BAT(, 25520) +HANDLE_BAT(, 25521) +HANDLE_BAT(, 25522) +HANDLE_BAT(, 25523) +HANDLE_BAT(, 25524) +HANDLE_BAT(, 25525) +HANDLE_BAT(, 25526) +HANDLE_BAT(, 25527) +HANDLE_BAT(, 25528) +HANDLE_BAT(, 25529) +HANDLE_BAT(, 25530) +HANDLE_BAT(, 25531) +HANDLE_BAT(, 25532) +HANDLE_BAT(, 25533) +HANDLE_BAT(, 25534) +HANDLE_BAT(, 25535) +HANDLE_BAT(, 25536) +HANDLE_BAT(, 25537) +HANDLE_BAT(, 25538) +HANDLE_BAT(, 25539) +HANDLE_BAT(, 25540) +HANDLE_BAT(, 25541) +HANDLE_BAT(, 25542) +HANDLE_BAT(, 25543) +HANDLE_BAT(, 25544) +HANDLE_BAT(, 25545) +HANDLE_BAT(, 25546) +HANDLE_BAT(, 25547) +HANDLE_BAT(, 25548) +HANDLE_BAT(, 25549) +HANDLE_BAT(, 25550) +HANDLE_BAT(, 25551) +HANDLE_BAT(, 25552) +HANDLE_BAT(, 25553) +HANDLE_BAT(, 25554) +HANDLE_BAT(, 25555) +HANDLE_BAT(, 25556) +HANDLE_BAT(, 25557) +HANDLE_BAT(, 25558) +HANDLE_BAT(, 25559) +HANDLE_BAT(, 25560) +HANDLE_BAT(, 25561) +HANDLE_BAT(, 25562) +HANDLE_BAT(, 25563) +HANDLE_BAT(, 25564) +HANDLE_BAT(, 25565) +HANDLE_BAT(, 25566) +HANDLE_BAT(, 25567) +HANDLE_BAT(, 25568) +HANDLE_BAT(, 25569) +HANDLE_BAT(, 25570) +HANDLE_BAT(, 25571) +HANDLE_BAT(, 25572) +HANDLE_BAT(, 25573) +HANDLE_BAT(, 25574) +HANDLE_BAT(, 25575) +HANDLE_BAT(, 25576) +HANDLE_BAT(, 25577) +HANDLE_BAT(, 25578) +HANDLE_BAT(, 25579) +HANDLE_BAT(, 25580) +HANDLE_BAT(, 25581) +HANDLE_BAT(, 25582) +HANDLE_BAT(, 25583) +HANDLE_BAT(, 25584) +HANDLE_BAT(, 25585) +HANDLE_BAT(, 25586) +HANDLE_BAT(, 25587) +HANDLE_BAT(, 25588) +HANDLE_BAT(, 25589) +HANDLE_BAT(, 25590) +HANDLE_BAT(, 25591) +HANDLE_BAT(, 25592) +HANDLE_BAT(, 25593) +HANDLE_BAT(, 25594) +HANDLE_BAT(, 25595) +HANDLE_BAT(, 25596) +HANDLE_BAT(, 25597) +HANDLE_BAT(, 25598) +HANDLE_BAT(, 25599) +HANDLE_BAT(, 25600) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 24577) +HANDLE_BAT(APINT_TYPE_PREFIX, 24578) +HANDLE_BAT(APINT_TYPE_PREFIX, 24579) +HANDLE_BAT(APINT_TYPE_PREFIX, 24580) +HANDLE_BAT(APINT_TYPE_PREFIX, 24581) +HANDLE_BAT(APINT_TYPE_PREFIX, 24582) +HANDLE_BAT(APINT_TYPE_PREFIX, 24583) +HANDLE_BAT(APINT_TYPE_PREFIX, 24584) +HANDLE_BAT(APINT_TYPE_PREFIX, 24585) +HANDLE_BAT(APINT_TYPE_PREFIX, 24586) +HANDLE_BAT(APINT_TYPE_PREFIX, 24587) +HANDLE_BAT(APINT_TYPE_PREFIX, 24588) +HANDLE_BAT(APINT_TYPE_PREFIX, 24589) +HANDLE_BAT(APINT_TYPE_PREFIX, 24590) +HANDLE_BAT(APINT_TYPE_PREFIX, 24591) +HANDLE_BAT(APINT_TYPE_PREFIX, 24592) +HANDLE_BAT(APINT_TYPE_PREFIX, 24593) +HANDLE_BAT(APINT_TYPE_PREFIX, 24594) +HANDLE_BAT(APINT_TYPE_PREFIX, 24595) +HANDLE_BAT(APINT_TYPE_PREFIX, 24596) +HANDLE_BAT(APINT_TYPE_PREFIX, 24597) +HANDLE_BAT(APINT_TYPE_PREFIX, 24598) +HANDLE_BAT(APINT_TYPE_PREFIX, 24599) +HANDLE_BAT(APINT_TYPE_PREFIX, 24600) +HANDLE_BAT(APINT_TYPE_PREFIX, 24601) +HANDLE_BAT(APINT_TYPE_PREFIX, 24602) +HANDLE_BAT(APINT_TYPE_PREFIX, 24603) +HANDLE_BAT(APINT_TYPE_PREFIX, 24604) +HANDLE_BAT(APINT_TYPE_PREFIX, 24605) +HANDLE_BAT(APINT_TYPE_PREFIX, 24606) +HANDLE_BAT(APINT_TYPE_PREFIX, 24607) +HANDLE_BAT(APINT_TYPE_PREFIX, 24608) +HANDLE_BAT(APINT_TYPE_PREFIX, 24609) +HANDLE_BAT(APINT_TYPE_PREFIX, 24610) +HANDLE_BAT(APINT_TYPE_PREFIX, 24611) +HANDLE_BAT(APINT_TYPE_PREFIX, 24612) +HANDLE_BAT(APINT_TYPE_PREFIX, 24613) +HANDLE_BAT(APINT_TYPE_PREFIX, 24614) +HANDLE_BAT(APINT_TYPE_PREFIX, 24615) +HANDLE_BAT(APINT_TYPE_PREFIX, 24616) +HANDLE_BAT(APINT_TYPE_PREFIX, 24617) +HANDLE_BAT(APINT_TYPE_PREFIX, 24618) +HANDLE_BAT(APINT_TYPE_PREFIX, 24619) +HANDLE_BAT(APINT_TYPE_PREFIX, 24620) +HANDLE_BAT(APINT_TYPE_PREFIX, 24621) +HANDLE_BAT(APINT_TYPE_PREFIX, 24622) +HANDLE_BAT(APINT_TYPE_PREFIX, 24623) +HANDLE_BAT(APINT_TYPE_PREFIX, 24624) +HANDLE_BAT(APINT_TYPE_PREFIX, 24625) +HANDLE_BAT(APINT_TYPE_PREFIX, 24626) +HANDLE_BAT(APINT_TYPE_PREFIX, 24627) +HANDLE_BAT(APINT_TYPE_PREFIX, 24628) +HANDLE_BAT(APINT_TYPE_PREFIX, 24629) +HANDLE_BAT(APINT_TYPE_PREFIX, 24630) +HANDLE_BAT(APINT_TYPE_PREFIX, 24631) +HANDLE_BAT(APINT_TYPE_PREFIX, 24632) +HANDLE_BAT(APINT_TYPE_PREFIX, 24633) +HANDLE_BAT(APINT_TYPE_PREFIX, 24634) +HANDLE_BAT(APINT_TYPE_PREFIX, 24635) +HANDLE_BAT(APINT_TYPE_PREFIX, 24636) +HANDLE_BAT(APINT_TYPE_PREFIX, 24637) +HANDLE_BAT(APINT_TYPE_PREFIX, 24638) +HANDLE_BAT(APINT_TYPE_PREFIX, 24639) +HANDLE_BAT(APINT_TYPE_PREFIX, 24640) +HANDLE_BAT(APINT_TYPE_PREFIX, 24641) +HANDLE_BAT(APINT_TYPE_PREFIX, 24642) +HANDLE_BAT(APINT_TYPE_PREFIX, 24643) +HANDLE_BAT(APINT_TYPE_PREFIX, 24644) +HANDLE_BAT(APINT_TYPE_PREFIX, 24645) +HANDLE_BAT(APINT_TYPE_PREFIX, 24646) +HANDLE_BAT(APINT_TYPE_PREFIX, 24647) +HANDLE_BAT(APINT_TYPE_PREFIX, 24648) +HANDLE_BAT(APINT_TYPE_PREFIX, 24649) +HANDLE_BAT(APINT_TYPE_PREFIX, 24650) +HANDLE_BAT(APINT_TYPE_PREFIX, 24651) +HANDLE_BAT(APINT_TYPE_PREFIX, 24652) +HANDLE_BAT(APINT_TYPE_PREFIX, 24653) +HANDLE_BAT(APINT_TYPE_PREFIX, 24654) +HANDLE_BAT(APINT_TYPE_PREFIX, 24655) +HANDLE_BAT(APINT_TYPE_PREFIX, 24656) +HANDLE_BAT(APINT_TYPE_PREFIX, 24657) +HANDLE_BAT(APINT_TYPE_PREFIX, 24658) +HANDLE_BAT(APINT_TYPE_PREFIX, 24659) +HANDLE_BAT(APINT_TYPE_PREFIX, 24660) +HANDLE_BAT(APINT_TYPE_PREFIX, 24661) +HANDLE_BAT(APINT_TYPE_PREFIX, 24662) +HANDLE_BAT(APINT_TYPE_PREFIX, 24663) +HANDLE_BAT(APINT_TYPE_PREFIX, 24664) +HANDLE_BAT(APINT_TYPE_PREFIX, 24665) +HANDLE_BAT(APINT_TYPE_PREFIX, 24666) +HANDLE_BAT(APINT_TYPE_PREFIX, 24667) +HANDLE_BAT(APINT_TYPE_PREFIX, 24668) +HANDLE_BAT(APINT_TYPE_PREFIX, 24669) +HANDLE_BAT(APINT_TYPE_PREFIX, 24670) +HANDLE_BAT(APINT_TYPE_PREFIX, 24671) +HANDLE_BAT(APINT_TYPE_PREFIX, 24672) +HANDLE_BAT(APINT_TYPE_PREFIX, 24673) +HANDLE_BAT(APINT_TYPE_PREFIX, 24674) +HANDLE_BAT(APINT_TYPE_PREFIX, 24675) +HANDLE_BAT(APINT_TYPE_PREFIX, 24676) +HANDLE_BAT(APINT_TYPE_PREFIX, 24677) +HANDLE_BAT(APINT_TYPE_PREFIX, 24678) +HANDLE_BAT(APINT_TYPE_PREFIX, 24679) +HANDLE_BAT(APINT_TYPE_PREFIX, 24680) +HANDLE_BAT(APINT_TYPE_PREFIX, 24681) +HANDLE_BAT(APINT_TYPE_PREFIX, 24682) +HANDLE_BAT(APINT_TYPE_PREFIX, 24683) +HANDLE_BAT(APINT_TYPE_PREFIX, 24684) +HANDLE_BAT(APINT_TYPE_PREFIX, 24685) +HANDLE_BAT(APINT_TYPE_PREFIX, 24686) +HANDLE_BAT(APINT_TYPE_PREFIX, 24687) +HANDLE_BAT(APINT_TYPE_PREFIX, 24688) +HANDLE_BAT(APINT_TYPE_PREFIX, 24689) +HANDLE_BAT(APINT_TYPE_PREFIX, 24690) +HANDLE_BAT(APINT_TYPE_PREFIX, 24691) +HANDLE_BAT(APINT_TYPE_PREFIX, 24692) +HANDLE_BAT(APINT_TYPE_PREFIX, 24693) +HANDLE_BAT(APINT_TYPE_PREFIX, 24694) +HANDLE_BAT(APINT_TYPE_PREFIX, 24695) +HANDLE_BAT(APINT_TYPE_PREFIX, 24696) +HANDLE_BAT(APINT_TYPE_PREFIX, 24697) +HANDLE_BAT(APINT_TYPE_PREFIX, 24698) +HANDLE_BAT(APINT_TYPE_PREFIX, 24699) +HANDLE_BAT(APINT_TYPE_PREFIX, 24700) +HANDLE_BAT(APINT_TYPE_PREFIX, 24701) +HANDLE_BAT(APINT_TYPE_PREFIX, 24702) +HANDLE_BAT(APINT_TYPE_PREFIX, 24703) +HANDLE_BAT(APINT_TYPE_PREFIX, 24704) +HANDLE_BAT(APINT_TYPE_PREFIX, 24705) +HANDLE_BAT(APINT_TYPE_PREFIX, 24706) +HANDLE_BAT(APINT_TYPE_PREFIX, 24707) +HANDLE_BAT(APINT_TYPE_PREFIX, 24708) +HANDLE_BAT(APINT_TYPE_PREFIX, 24709) +HANDLE_BAT(APINT_TYPE_PREFIX, 24710) +HANDLE_BAT(APINT_TYPE_PREFIX, 24711) +HANDLE_BAT(APINT_TYPE_PREFIX, 24712) +HANDLE_BAT(APINT_TYPE_PREFIX, 24713) +HANDLE_BAT(APINT_TYPE_PREFIX, 24714) +HANDLE_BAT(APINT_TYPE_PREFIX, 24715) +HANDLE_BAT(APINT_TYPE_PREFIX, 24716) +HANDLE_BAT(APINT_TYPE_PREFIX, 24717) +HANDLE_BAT(APINT_TYPE_PREFIX, 24718) +HANDLE_BAT(APINT_TYPE_PREFIX, 24719) +HANDLE_BAT(APINT_TYPE_PREFIX, 24720) +HANDLE_BAT(APINT_TYPE_PREFIX, 24721) +HANDLE_BAT(APINT_TYPE_PREFIX, 24722) +HANDLE_BAT(APINT_TYPE_PREFIX, 24723) +HANDLE_BAT(APINT_TYPE_PREFIX, 24724) +HANDLE_BAT(APINT_TYPE_PREFIX, 24725) +HANDLE_BAT(APINT_TYPE_PREFIX, 24726) +HANDLE_BAT(APINT_TYPE_PREFIX, 24727) +HANDLE_BAT(APINT_TYPE_PREFIX, 24728) +HANDLE_BAT(APINT_TYPE_PREFIX, 24729) +HANDLE_BAT(APINT_TYPE_PREFIX, 24730) +HANDLE_BAT(APINT_TYPE_PREFIX, 24731) +HANDLE_BAT(APINT_TYPE_PREFIX, 24732) +HANDLE_BAT(APINT_TYPE_PREFIX, 24733) +HANDLE_BAT(APINT_TYPE_PREFIX, 24734) +HANDLE_BAT(APINT_TYPE_PREFIX, 24735) +HANDLE_BAT(APINT_TYPE_PREFIX, 24736) +HANDLE_BAT(APINT_TYPE_PREFIX, 24737) +HANDLE_BAT(APINT_TYPE_PREFIX, 24738) +HANDLE_BAT(APINT_TYPE_PREFIX, 24739) +HANDLE_BAT(APINT_TYPE_PREFIX, 24740) +HANDLE_BAT(APINT_TYPE_PREFIX, 24741) +HANDLE_BAT(APINT_TYPE_PREFIX, 24742) +HANDLE_BAT(APINT_TYPE_PREFIX, 24743) +HANDLE_BAT(APINT_TYPE_PREFIX, 24744) +HANDLE_BAT(APINT_TYPE_PREFIX, 24745) +HANDLE_BAT(APINT_TYPE_PREFIX, 24746) +HANDLE_BAT(APINT_TYPE_PREFIX, 24747) +HANDLE_BAT(APINT_TYPE_PREFIX, 24748) +HANDLE_BAT(APINT_TYPE_PREFIX, 24749) +HANDLE_BAT(APINT_TYPE_PREFIX, 24750) +HANDLE_BAT(APINT_TYPE_PREFIX, 24751) +HANDLE_BAT(APINT_TYPE_PREFIX, 24752) +HANDLE_BAT(APINT_TYPE_PREFIX, 24753) +HANDLE_BAT(APINT_TYPE_PREFIX, 24754) +HANDLE_BAT(APINT_TYPE_PREFIX, 24755) +HANDLE_BAT(APINT_TYPE_PREFIX, 24756) +HANDLE_BAT(APINT_TYPE_PREFIX, 24757) +HANDLE_BAT(APINT_TYPE_PREFIX, 24758) +HANDLE_BAT(APINT_TYPE_PREFIX, 24759) +HANDLE_BAT(APINT_TYPE_PREFIX, 24760) +HANDLE_BAT(APINT_TYPE_PREFIX, 24761) +HANDLE_BAT(APINT_TYPE_PREFIX, 24762) +HANDLE_BAT(APINT_TYPE_PREFIX, 24763) +HANDLE_BAT(APINT_TYPE_PREFIX, 24764) +HANDLE_BAT(APINT_TYPE_PREFIX, 24765) +HANDLE_BAT(APINT_TYPE_PREFIX, 24766) +HANDLE_BAT(APINT_TYPE_PREFIX, 24767) +HANDLE_BAT(APINT_TYPE_PREFIX, 24768) +HANDLE_BAT(APINT_TYPE_PREFIX, 24769) +HANDLE_BAT(APINT_TYPE_PREFIX, 24770) +HANDLE_BAT(APINT_TYPE_PREFIX, 24771) +HANDLE_BAT(APINT_TYPE_PREFIX, 24772) +HANDLE_BAT(APINT_TYPE_PREFIX, 24773) +HANDLE_BAT(APINT_TYPE_PREFIX, 24774) +HANDLE_BAT(APINT_TYPE_PREFIX, 24775) +HANDLE_BAT(APINT_TYPE_PREFIX, 24776) +HANDLE_BAT(APINT_TYPE_PREFIX, 24777) +HANDLE_BAT(APINT_TYPE_PREFIX, 24778) +HANDLE_BAT(APINT_TYPE_PREFIX, 24779) +HANDLE_BAT(APINT_TYPE_PREFIX, 24780) +HANDLE_BAT(APINT_TYPE_PREFIX, 24781) +HANDLE_BAT(APINT_TYPE_PREFIX, 24782) +HANDLE_BAT(APINT_TYPE_PREFIX, 24783) +HANDLE_BAT(APINT_TYPE_PREFIX, 24784) +HANDLE_BAT(APINT_TYPE_PREFIX, 24785) +HANDLE_BAT(APINT_TYPE_PREFIX, 24786) +HANDLE_BAT(APINT_TYPE_PREFIX, 24787) +HANDLE_BAT(APINT_TYPE_PREFIX, 24788) +HANDLE_BAT(APINT_TYPE_PREFIX, 24789) +HANDLE_BAT(APINT_TYPE_PREFIX, 24790) +HANDLE_BAT(APINT_TYPE_PREFIX, 24791) +HANDLE_BAT(APINT_TYPE_PREFIX, 24792) +HANDLE_BAT(APINT_TYPE_PREFIX, 24793) +HANDLE_BAT(APINT_TYPE_PREFIX, 24794) +HANDLE_BAT(APINT_TYPE_PREFIX, 24795) +HANDLE_BAT(APINT_TYPE_PREFIX, 24796) +HANDLE_BAT(APINT_TYPE_PREFIX, 24797) +HANDLE_BAT(APINT_TYPE_PREFIX, 24798) +HANDLE_BAT(APINT_TYPE_PREFIX, 24799) +HANDLE_BAT(APINT_TYPE_PREFIX, 24800) +HANDLE_BAT(APINT_TYPE_PREFIX, 24801) +HANDLE_BAT(APINT_TYPE_PREFIX, 24802) +HANDLE_BAT(APINT_TYPE_PREFIX, 24803) +HANDLE_BAT(APINT_TYPE_PREFIX, 24804) +HANDLE_BAT(APINT_TYPE_PREFIX, 24805) +HANDLE_BAT(APINT_TYPE_PREFIX, 24806) +HANDLE_BAT(APINT_TYPE_PREFIX, 24807) +HANDLE_BAT(APINT_TYPE_PREFIX, 24808) +HANDLE_BAT(APINT_TYPE_PREFIX, 24809) +HANDLE_BAT(APINT_TYPE_PREFIX, 24810) +HANDLE_BAT(APINT_TYPE_PREFIX, 24811) +HANDLE_BAT(APINT_TYPE_PREFIX, 24812) +HANDLE_BAT(APINT_TYPE_PREFIX, 24813) +HANDLE_BAT(APINT_TYPE_PREFIX, 24814) +HANDLE_BAT(APINT_TYPE_PREFIX, 24815) +HANDLE_BAT(APINT_TYPE_PREFIX, 24816) +HANDLE_BAT(APINT_TYPE_PREFIX, 24817) +HANDLE_BAT(APINT_TYPE_PREFIX, 24818) +HANDLE_BAT(APINT_TYPE_PREFIX, 24819) +HANDLE_BAT(APINT_TYPE_PREFIX, 24820) +HANDLE_BAT(APINT_TYPE_PREFIX, 24821) +HANDLE_BAT(APINT_TYPE_PREFIX, 24822) +HANDLE_BAT(APINT_TYPE_PREFIX, 24823) +HANDLE_BAT(APINT_TYPE_PREFIX, 24824) +HANDLE_BAT(APINT_TYPE_PREFIX, 24825) +HANDLE_BAT(APINT_TYPE_PREFIX, 24826) +HANDLE_BAT(APINT_TYPE_PREFIX, 24827) +HANDLE_BAT(APINT_TYPE_PREFIX, 24828) +HANDLE_BAT(APINT_TYPE_PREFIX, 24829) +HANDLE_BAT(APINT_TYPE_PREFIX, 24830) +HANDLE_BAT(APINT_TYPE_PREFIX, 24831) +HANDLE_BAT(APINT_TYPE_PREFIX, 24832) +HANDLE_BAT(APINT_TYPE_PREFIX, 24833) +HANDLE_BAT(APINT_TYPE_PREFIX, 24834) +HANDLE_BAT(APINT_TYPE_PREFIX, 24835) +HANDLE_BAT(APINT_TYPE_PREFIX, 24836) +HANDLE_BAT(APINT_TYPE_PREFIX, 24837) +HANDLE_BAT(APINT_TYPE_PREFIX, 24838) +HANDLE_BAT(APINT_TYPE_PREFIX, 24839) +HANDLE_BAT(APINT_TYPE_PREFIX, 24840) +HANDLE_BAT(APINT_TYPE_PREFIX, 24841) +HANDLE_BAT(APINT_TYPE_PREFIX, 24842) +HANDLE_BAT(APINT_TYPE_PREFIX, 24843) +HANDLE_BAT(APINT_TYPE_PREFIX, 24844) +HANDLE_BAT(APINT_TYPE_PREFIX, 24845) +HANDLE_BAT(APINT_TYPE_PREFIX, 24846) +HANDLE_BAT(APINT_TYPE_PREFIX, 24847) +HANDLE_BAT(APINT_TYPE_PREFIX, 24848) +HANDLE_BAT(APINT_TYPE_PREFIX, 24849) +HANDLE_BAT(APINT_TYPE_PREFIX, 24850) +HANDLE_BAT(APINT_TYPE_PREFIX, 24851) +HANDLE_BAT(APINT_TYPE_PREFIX, 24852) +HANDLE_BAT(APINT_TYPE_PREFIX, 24853) +HANDLE_BAT(APINT_TYPE_PREFIX, 24854) +HANDLE_BAT(APINT_TYPE_PREFIX, 24855) +HANDLE_BAT(APINT_TYPE_PREFIX, 24856) +HANDLE_BAT(APINT_TYPE_PREFIX, 24857) +HANDLE_BAT(APINT_TYPE_PREFIX, 24858) +HANDLE_BAT(APINT_TYPE_PREFIX, 24859) +HANDLE_BAT(APINT_TYPE_PREFIX, 24860) +HANDLE_BAT(APINT_TYPE_PREFIX, 24861) +HANDLE_BAT(APINT_TYPE_PREFIX, 24862) +HANDLE_BAT(APINT_TYPE_PREFIX, 24863) +HANDLE_BAT(APINT_TYPE_PREFIX, 24864) +HANDLE_BAT(APINT_TYPE_PREFIX, 24865) +HANDLE_BAT(APINT_TYPE_PREFIX, 24866) +HANDLE_BAT(APINT_TYPE_PREFIX, 24867) +HANDLE_BAT(APINT_TYPE_PREFIX, 24868) +HANDLE_BAT(APINT_TYPE_PREFIX, 24869) +HANDLE_BAT(APINT_TYPE_PREFIX, 24870) +HANDLE_BAT(APINT_TYPE_PREFIX, 24871) +HANDLE_BAT(APINT_TYPE_PREFIX, 24872) +HANDLE_BAT(APINT_TYPE_PREFIX, 24873) +HANDLE_BAT(APINT_TYPE_PREFIX, 24874) +HANDLE_BAT(APINT_TYPE_PREFIX, 24875) +HANDLE_BAT(APINT_TYPE_PREFIX, 24876) +HANDLE_BAT(APINT_TYPE_PREFIX, 24877) +HANDLE_BAT(APINT_TYPE_PREFIX, 24878) +HANDLE_BAT(APINT_TYPE_PREFIX, 24879) +HANDLE_BAT(APINT_TYPE_PREFIX, 24880) +HANDLE_BAT(APINT_TYPE_PREFIX, 24881) +HANDLE_BAT(APINT_TYPE_PREFIX, 24882) +HANDLE_BAT(APINT_TYPE_PREFIX, 24883) +HANDLE_BAT(APINT_TYPE_PREFIX, 24884) +HANDLE_BAT(APINT_TYPE_PREFIX, 24885) +HANDLE_BAT(APINT_TYPE_PREFIX, 24886) +HANDLE_BAT(APINT_TYPE_PREFIX, 24887) +HANDLE_BAT(APINT_TYPE_PREFIX, 24888) +HANDLE_BAT(APINT_TYPE_PREFIX, 24889) +HANDLE_BAT(APINT_TYPE_PREFIX, 24890) +HANDLE_BAT(APINT_TYPE_PREFIX, 24891) +HANDLE_BAT(APINT_TYPE_PREFIX, 24892) +HANDLE_BAT(APINT_TYPE_PREFIX, 24893) +HANDLE_BAT(APINT_TYPE_PREFIX, 24894) +HANDLE_BAT(APINT_TYPE_PREFIX, 24895) +HANDLE_BAT(APINT_TYPE_PREFIX, 24896) +HANDLE_BAT(APINT_TYPE_PREFIX, 24897) +HANDLE_BAT(APINT_TYPE_PREFIX, 24898) +HANDLE_BAT(APINT_TYPE_PREFIX, 24899) +HANDLE_BAT(APINT_TYPE_PREFIX, 24900) +HANDLE_BAT(APINT_TYPE_PREFIX, 24901) +HANDLE_BAT(APINT_TYPE_PREFIX, 24902) +HANDLE_BAT(APINT_TYPE_PREFIX, 24903) +HANDLE_BAT(APINT_TYPE_PREFIX, 24904) +HANDLE_BAT(APINT_TYPE_PREFIX, 24905) +HANDLE_BAT(APINT_TYPE_PREFIX, 24906) +HANDLE_BAT(APINT_TYPE_PREFIX, 24907) +HANDLE_BAT(APINT_TYPE_PREFIX, 24908) +HANDLE_BAT(APINT_TYPE_PREFIX, 24909) +HANDLE_BAT(APINT_TYPE_PREFIX, 24910) +HANDLE_BAT(APINT_TYPE_PREFIX, 24911) +HANDLE_BAT(APINT_TYPE_PREFIX, 24912) +HANDLE_BAT(APINT_TYPE_PREFIX, 24913) +HANDLE_BAT(APINT_TYPE_PREFIX, 24914) +HANDLE_BAT(APINT_TYPE_PREFIX, 24915) +HANDLE_BAT(APINT_TYPE_PREFIX, 24916) +HANDLE_BAT(APINT_TYPE_PREFIX, 24917) +HANDLE_BAT(APINT_TYPE_PREFIX, 24918) +HANDLE_BAT(APINT_TYPE_PREFIX, 24919) +HANDLE_BAT(APINT_TYPE_PREFIX, 24920) +HANDLE_BAT(APINT_TYPE_PREFIX, 24921) +HANDLE_BAT(APINT_TYPE_PREFIX, 24922) +HANDLE_BAT(APINT_TYPE_PREFIX, 24923) +HANDLE_BAT(APINT_TYPE_PREFIX, 24924) +HANDLE_BAT(APINT_TYPE_PREFIX, 24925) +HANDLE_BAT(APINT_TYPE_PREFIX, 24926) +HANDLE_BAT(APINT_TYPE_PREFIX, 24927) +HANDLE_BAT(APINT_TYPE_PREFIX, 24928) +HANDLE_BAT(APINT_TYPE_PREFIX, 24929) +HANDLE_BAT(APINT_TYPE_PREFIX, 24930) +HANDLE_BAT(APINT_TYPE_PREFIX, 24931) +HANDLE_BAT(APINT_TYPE_PREFIX, 24932) +HANDLE_BAT(APINT_TYPE_PREFIX, 24933) +HANDLE_BAT(APINT_TYPE_PREFIX, 24934) +HANDLE_BAT(APINT_TYPE_PREFIX, 24935) +HANDLE_BAT(APINT_TYPE_PREFIX, 24936) +HANDLE_BAT(APINT_TYPE_PREFIX, 24937) +HANDLE_BAT(APINT_TYPE_PREFIX, 24938) +HANDLE_BAT(APINT_TYPE_PREFIX, 24939) +HANDLE_BAT(APINT_TYPE_PREFIX, 24940) +HANDLE_BAT(APINT_TYPE_PREFIX, 24941) +HANDLE_BAT(APINT_TYPE_PREFIX, 24942) +HANDLE_BAT(APINT_TYPE_PREFIX, 24943) +HANDLE_BAT(APINT_TYPE_PREFIX, 24944) +HANDLE_BAT(APINT_TYPE_PREFIX, 24945) +HANDLE_BAT(APINT_TYPE_PREFIX, 24946) +HANDLE_BAT(APINT_TYPE_PREFIX, 24947) +HANDLE_BAT(APINT_TYPE_PREFIX, 24948) +HANDLE_BAT(APINT_TYPE_PREFIX, 24949) +HANDLE_BAT(APINT_TYPE_PREFIX, 24950) +HANDLE_BAT(APINT_TYPE_PREFIX, 24951) +HANDLE_BAT(APINT_TYPE_PREFIX, 24952) +HANDLE_BAT(APINT_TYPE_PREFIX, 24953) +HANDLE_BAT(APINT_TYPE_PREFIX, 24954) +HANDLE_BAT(APINT_TYPE_PREFIX, 24955) +HANDLE_BAT(APINT_TYPE_PREFIX, 24956) +HANDLE_BAT(APINT_TYPE_PREFIX, 24957) +HANDLE_BAT(APINT_TYPE_PREFIX, 24958) +HANDLE_BAT(APINT_TYPE_PREFIX, 24959) +HANDLE_BAT(APINT_TYPE_PREFIX, 24960) +HANDLE_BAT(APINT_TYPE_PREFIX, 24961) +HANDLE_BAT(APINT_TYPE_PREFIX, 24962) +HANDLE_BAT(APINT_TYPE_PREFIX, 24963) +HANDLE_BAT(APINT_TYPE_PREFIX, 24964) +HANDLE_BAT(APINT_TYPE_PREFIX, 24965) +HANDLE_BAT(APINT_TYPE_PREFIX, 24966) +HANDLE_BAT(APINT_TYPE_PREFIX, 24967) +HANDLE_BAT(APINT_TYPE_PREFIX, 24968) +HANDLE_BAT(APINT_TYPE_PREFIX, 24969) +HANDLE_BAT(APINT_TYPE_PREFIX, 24970) +HANDLE_BAT(APINT_TYPE_PREFIX, 24971) +HANDLE_BAT(APINT_TYPE_PREFIX, 24972) +HANDLE_BAT(APINT_TYPE_PREFIX, 24973) +HANDLE_BAT(APINT_TYPE_PREFIX, 24974) +HANDLE_BAT(APINT_TYPE_PREFIX, 24975) +HANDLE_BAT(APINT_TYPE_PREFIX, 24976) +HANDLE_BAT(APINT_TYPE_PREFIX, 24977) +HANDLE_BAT(APINT_TYPE_PREFIX, 24978) +HANDLE_BAT(APINT_TYPE_PREFIX, 24979) +HANDLE_BAT(APINT_TYPE_PREFIX, 24980) +HANDLE_BAT(APINT_TYPE_PREFIX, 24981) +HANDLE_BAT(APINT_TYPE_PREFIX, 24982) +HANDLE_BAT(APINT_TYPE_PREFIX, 24983) +HANDLE_BAT(APINT_TYPE_PREFIX, 24984) +HANDLE_BAT(APINT_TYPE_PREFIX, 24985) +HANDLE_BAT(APINT_TYPE_PREFIX, 24986) +HANDLE_BAT(APINT_TYPE_PREFIX, 24987) +HANDLE_BAT(APINT_TYPE_PREFIX, 24988) +HANDLE_BAT(APINT_TYPE_PREFIX, 24989) +HANDLE_BAT(APINT_TYPE_PREFIX, 24990) +HANDLE_BAT(APINT_TYPE_PREFIX, 24991) +HANDLE_BAT(APINT_TYPE_PREFIX, 24992) +HANDLE_BAT(APINT_TYPE_PREFIX, 24993) +HANDLE_BAT(APINT_TYPE_PREFIX, 24994) +HANDLE_BAT(APINT_TYPE_PREFIX, 24995) +HANDLE_BAT(APINT_TYPE_PREFIX, 24996) +HANDLE_BAT(APINT_TYPE_PREFIX, 24997) +HANDLE_BAT(APINT_TYPE_PREFIX, 24998) +HANDLE_BAT(APINT_TYPE_PREFIX, 24999) +HANDLE_BAT(APINT_TYPE_PREFIX, 25000) +HANDLE_BAT(APINT_TYPE_PREFIX, 25001) +HANDLE_BAT(APINT_TYPE_PREFIX, 25002) +HANDLE_BAT(APINT_TYPE_PREFIX, 25003) +HANDLE_BAT(APINT_TYPE_PREFIX, 25004) +HANDLE_BAT(APINT_TYPE_PREFIX, 25005) +HANDLE_BAT(APINT_TYPE_PREFIX, 25006) +HANDLE_BAT(APINT_TYPE_PREFIX, 25007) +HANDLE_BAT(APINT_TYPE_PREFIX, 25008) +HANDLE_BAT(APINT_TYPE_PREFIX, 25009) +HANDLE_BAT(APINT_TYPE_PREFIX, 25010) +HANDLE_BAT(APINT_TYPE_PREFIX, 25011) +HANDLE_BAT(APINT_TYPE_PREFIX, 25012) +HANDLE_BAT(APINT_TYPE_PREFIX, 25013) +HANDLE_BAT(APINT_TYPE_PREFIX, 25014) +HANDLE_BAT(APINT_TYPE_PREFIX, 25015) +HANDLE_BAT(APINT_TYPE_PREFIX, 25016) +HANDLE_BAT(APINT_TYPE_PREFIX, 25017) +HANDLE_BAT(APINT_TYPE_PREFIX, 25018) +HANDLE_BAT(APINT_TYPE_PREFIX, 25019) +HANDLE_BAT(APINT_TYPE_PREFIX, 25020) +HANDLE_BAT(APINT_TYPE_PREFIX, 25021) +HANDLE_BAT(APINT_TYPE_PREFIX, 25022) +HANDLE_BAT(APINT_TYPE_PREFIX, 25023) +HANDLE_BAT(APINT_TYPE_PREFIX, 25024) +HANDLE_BAT(APINT_TYPE_PREFIX, 25025) +HANDLE_BAT(APINT_TYPE_PREFIX, 25026) +HANDLE_BAT(APINT_TYPE_PREFIX, 25027) +HANDLE_BAT(APINT_TYPE_PREFIX, 25028) +HANDLE_BAT(APINT_TYPE_PREFIX, 25029) +HANDLE_BAT(APINT_TYPE_PREFIX, 25030) +HANDLE_BAT(APINT_TYPE_PREFIX, 25031) +HANDLE_BAT(APINT_TYPE_PREFIX, 25032) +HANDLE_BAT(APINT_TYPE_PREFIX, 25033) +HANDLE_BAT(APINT_TYPE_PREFIX, 25034) +HANDLE_BAT(APINT_TYPE_PREFIX, 25035) +HANDLE_BAT(APINT_TYPE_PREFIX, 25036) +HANDLE_BAT(APINT_TYPE_PREFIX, 25037) +HANDLE_BAT(APINT_TYPE_PREFIX, 25038) +HANDLE_BAT(APINT_TYPE_PREFIX, 25039) +HANDLE_BAT(APINT_TYPE_PREFIX, 25040) +HANDLE_BAT(APINT_TYPE_PREFIX, 25041) +HANDLE_BAT(APINT_TYPE_PREFIX, 25042) +HANDLE_BAT(APINT_TYPE_PREFIX, 25043) +HANDLE_BAT(APINT_TYPE_PREFIX, 25044) +HANDLE_BAT(APINT_TYPE_PREFIX, 25045) +HANDLE_BAT(APINT_TYPE_PREFIX, 25046) +HANDLE_BAT(APINT_TYPE_PREFIX, 25047) +HANDLE_BAT(APINT_TYPE_PREFIX, 25048) +HANDLE_BAT(APINT_TYPE_PREFIX, 25049) +HANDLE_BAT(APINT_TYPE_PREFIX, 25050) +HANDLE_BAT(APINT_TYPE_PREFIX, 25051) +HANDLE_BAT(APINT_TYPE_PREFIX, 25052) +HANDLE_BAT(APINT_TYPE_PREFIX, 25053) +HANDLE_BAT(APINT_TYPE_PREFIX, 25054) +HANDLE_BAT(APINT_TYPE_PREFIX, 25055) +HANDLE_BAT(APINT_TYPE_PREFIX, 25056) +HANDLE_BAT(APINT_TYPE_PREFIX, 25057) +HANDLE_BAT(APINT_TYPE_PREFIX, 25058) +HANDLE_BAT(APINT_TYPE_PREFIX, 25059) +HANDLE_BAT(APINT_TYPE_PREFIX, 25060) +HANDLE_BAT(APINT_TYPE_PREFIX, 25061) +HANDLE_BAT(APINT_TYPE_PREFIX, 25062) +HANDLE_BAT(APINT_TYPE_PREFIX, 25063) +HANDLE_BAT(APINT_TYPE_PREFIX, 25064) +HANDLE_BAT(APINT_TYPE_PREFIX, 25065) +HANDLE_BAT(APINT_TYPE_PREFIX, 25066) +HANDLE_BAT(APINT_TYPE_PREFIX, 25067) +HANDLE_BAT(APINT_TYPE_PREFIX, 25068) +HANDLE_BAT(APINT_TYPE_PREFIX, 25069) +HANDLE_BAT(APINT_TYPE_PREFIX, 25070) +HANDLE_BAT(APINT_TYPE_PREFIX, 25071) +HANDLE_BAT(APINT_TYPE_PREFIX, 25072) +HANDLE_BAT(APINT_TYPE_PREFIX, 25073) +HANDLE_BAT(APINT_TYPE_PREFIX, 25074) +HANDLE_BAT(APINT_TYPE_PREFIX, 25075) +HANDLE_BAT(APINT_TYPE_PREFIX, 25076) +HANDLE_BAT(APINT_TYPE_PREFIX, 25077) +HANDLE_BAT(APINT_TYPE_PREFIX, 25078) +HANDLE_BAT(APINT_TYPE_PREFIX, 25079) +HANDLE_BAT(APINT_TYPE_PREFIX, 25080) +HANDLE_BAT(APINT_TYPE_PREFIX, 25081) +HANDLE_BAT(APINT_TYPE_PREFIX, 25082) +HANDLE_BAT(APINT_TYPE_PREFIX, 25083) +HANDLE_BAT(APINT_TYPE_PREFIX, 25084) +HANDLE_BAT(APINT_TYPE_PREFIX, 25085) +HANDLE_BAT(APINT_TYPE_PREFIX, 25086) +HANDLE_BAT(APINT_TYPE_PREFIX, 25087) +HANDLE_BAT(APINT_TYPE_PREFIX, 25088) +HANDLE_BAT(APINT_TYPE_PREFIX, 25089) +HANDLE_BAT(APINT_TYPE_PREFIX, 25090) +HANDLE_BAT(APINT_TYPE_PREFIX, 25091) +HANDLE_BAT(APINT_TYPE_PREFIX, 25092) +HANDLE_BAT(APINT_TYPE_PREFIX, 25093) +HANDLE_BAT(APINT_TYPE_PREFIX, 25094) +HANDLE_BAT(APINT_TYPE_PREFIX, 25095) +HANDLE_BAT(APINT_TYPE_PREFIX, 25096) +HANDLE_BAT(APINT_TYPE_PREFIX, 25097) +HANDLE_BAT(APINT_TYPE_PREFIX, 25098) +HANDLE_BAT(APINT_TYPE_PREFIX, 25099) +HANDLE_BAT(APINT_TYPE_PREFIX, 25100) +HANDLE_BAT(APINT_TYPE_PREFIX, 25101) +HANDLE_BAT(APINT_TYPE_PREFIX, 25102) +HANDLE_BAT(APINT_TYPE_PREFIX, 25103) +HANDLE_BAT(APINT_TYPE_PREFIX, 25104) +HANDLE_BAT(APINT_TYPE_PREFIX, 25105) +HANDLE_BAT(APINT_TYPE_PREFIX, 25106) +HANDLE_BAT(APINT_TYPE_PREFIX, 25107) +HANDLE_BAT(APINT_TYPE_PREFIX, 25108) +HANDLE_BAT(APINT_TYPE_PREFIX, 25109) +HANDLE_BAT(APINT_TYPE_PREFIX, 25110) +HANDLE_BAT(APINT_TYPE_PREFIX, 25111) +HANDLE_BAT(APINT_TYPE_PREFIX, 25112) +HANDLE_BAT(APINT_TYPE_PREFIX, 25113) +HANDLE_BAT(APINT_TYPE_PREFIX, 25114) +HANDLE_BAT(APINT_TYPE_PREFIX, 25115) +HANDLE_BAT(APINT_TYPE_PREFIX, 25116) +HANDLE_BAT(APINT_TYPE_PREFIX, 25117) +HANDLE_BAT(APINT_TYPE_PREFIX, 25118) +HANDLE_BAT(APINT_TYPE_PREFIX, 25119) +HANDLE_BAT(APINT_TYPE_PREFIX, 25120) +HANDLE_BAT(APINT_TYPE_PREFIX, 25121) +HANDLE_BAT(APINT_TYPE_PREFIX, 25122) +HANDLE_BAT(APINT_TYPE_PREFIX, 25123) +HANDLE_BAT(APINT_TYPE_PREFIX, 25124) +HANDLE_BAT(APINT_TYPE_PREFIX, 25125) +HANDLE_BAT(APINT_TYPE_PREFIX, 25126) +HANDLE_BAT(APINT_TYPE_PREFIX, 25127) +HANDLE_BAT(APINT_TYPE_PREFIX, 25128) +HANDLE_BAT(APINT_TYPE_PREFIX, 25129) +HANDLE_BAT(APINT_TYPE_PREFIX, 25130) +HANDLE_BAT(APINT_TYPE_PREFIX, 25131) +HANDLE_BAT(APINT_TYPE_PREFIX, 25132) +HANDLE_BAT(APINT_TYPE_PREFIX, 25133) +HANDLE_BAT(APINT_TYPE_PREFIX, 25134) +HANDLE_BAT(APINT_TYPE_PREFIX, 25135) +HANDLE_BAT(APINT_TYPE_PREFIX, 25136) +HANDLE_BAT(APINT_TYPE_PREFIX, 25137) +HANDLE_BAT(APINT_TYPE_PREFIX, 25138) +HANDLE_BAT(APINT_TYPE_PREFIX, 25139) +HANDLE_BAT(APINT_TYPE_PREFIX, 25140) +HANDLE_BAT(APINT_TYPE_PREFIX, 25141) +HANDLE_BAT(APINT_TYPE_PREFIX, 25142) +HANDLE_BAT(APINT_TYPE_PREFIX, 25143) +HANDLE_BAT(APINT_TYPE_PREFIX, 25144) +HANDLE_BAT(APINT_TYPE_PREFIX, 25145) +HANDLE_BAT(APINT_TYPE_PREFIX, 25146) +HANDLE_BAT(APINT_TYPE_PREFIX, 25147) +HANDLE_BAT(APINT_TYPE_PREFIX, 25148) +HANDLE_BAT(APINT_TYPE_PREFIX, 25149) +HANDLE_BAT(APINT_TYPE_PREFIX, 25150) +HANDLE_BAT(APINT_TYPE_PREFIX, 25151) +HANDLE_BAT(APINT_TYPE_PREFIX, 25152) +HANDLE_BAT(APINT_TYPE_PREFIX, 25153) +HANDLE_BAT(APINT_TYPE_PREFIX, 25154) +HANDLE_BAT(APINT_TYPE_PREFIX, 25155) +HANDLE_BAT(APINT_TYPE_PREFIX, 25156) +HANDLE_BAT(APINT_TYPE_PREFIX, 25157) +HANDLE_BAT(APINT_TYPE_PREFIX, 25158) +HANDLE_BAT(APINT_TYPE_PREFIX, 25159) +HANDLE_BAT(APINT_TYPE_PREFIX, 25160) +HANDLE_BAT(APINT_TYPE_PREFIX, 25161) +HANDLE_BAT(APINT_TYPE_PREFIX, 25162) +HANDLE_BAT(APINT_TYPE_PREFIX, 25163) +HANDLE_BAT(APINT_TYPE_PREFIX, 25164) +HANDLE_BAT(APINT_TYPE_PREFIX, 25165) +HANDLE_BAT(APINT_TYPE_PREFIX, 25166) +HANDLE_BAT(APINT_TYPE_PREFIX, 25167) +HANDLE_BAT(APINT_TYPE_PREFIX, 25168) +HANDLE_BAT(APINT_TYPE_PREFIX, 25169) +HANDLE_BAT(APINT_TYPE_PREFIX, 25170) +HANDLE_BAT(APINT_TYPE_PREFIX, 25171) +HANDLE_BAT(APINT_TYPE_PREFIX, 25172) +HANDLE_BAT(APINT_TYPE_PREFIX, 25173) +HANDLE_BAT(APINT_TYPE_PREFIX, 25174) +HANDLE_BAT(APINT_TYPE_PREFIX, 25175) +HANDLE_BAT(APINT_TYPE_PREFIX, 25176) +HANDLE_BAT(APINT_TYPE_PREFIX, 25177) +HANDLE_BAT(APINT_TYPE_PREFIX, 25178) +HANDLE_BAT(APINT_TYPE_PREFIX, 25179) +HANDLE_BAT(APINT_TYPE_PREFIX, 25180) +HANDLE_BAT(APINT_TYPE_PREFIX, 25181) +HANDLE_BAT(APINT_TYPE_PREFIX, 25182) +HANDLE_BAT(APINT_TYPE_PREFIX, 25183) +HANDLE_BAT(APINT_TYPE_PREFIX, 25184) +HANDLE_BAT(APINT_TYPE_PREFIX, 25185) +HANDLE_BAT(APINT_TYPE_PREFIX, 25186) +HANDLE_BAT(APINT_TYPE_PREFIX, 25187) +HANDLE_BAT(APINT_TYPE_PREFIX, 25188) +HANDLE_BAT(APINT_TYPE_PREFIX, 25189) +HANDLE_BAT(APINT_TYPE_PREFIX, 25190) +HANDLE_BAT(APINT_TYPE_PREFIX, 25191) +HANDLE_BAT(APINT_TYPE_PREFIX, 25192) +HANDLE_BAT(APINT_TYPE_PREFIX, 25193) +HANDLE_BAT(APINT_TYPE_PREFIX, 25194) +HANDLE_BAT(APINT_TYPE_PREFIX, 25195) +HANDLE_BAT(APINT_TYPE_PREFIX, 25196) +HANDLE_BAT(APINT_TYPE_PREFIX, 25197) +HANDLE_BAT(APINT_TYPE_PREFIX, 25198) +HANDLE_BAT(APINT_TYPE_PREFIX, 25199) +HANDLE_BAT(APINT_TYPE_PREFIX, 25200) +HANDLE_BAT(APINT_TYPE_PREFIX, 25201) +HANDLE_BAT(APINT_TYPE_PREFIX, 25202) +HANDLE_BAT(APINT_TYPE_PREFIX, 25203) +HANDLE_BAT(APINT_TYPE_PREFIX, 25204) +HANDLE_BAT(APINT_TYPE_PREFIX, 25205) +HANDLE_BAT(APINT_TYPE_PREFIX, 25206) +HANDLE_BAT(APINT_TYPE_PREFIX, 25207) +HANDLE_BAT(APINT_TYPE_PREFIX, 25208) +HANDLE_BAT(APINT_TYPE_PREFIX, 25209) +HANDLE_BAT(APINT_TYPE_PREFIX, 25210) +HANDLE_BAT(APINT_TYPE_PREFIX, 25211) +HANDLE_BAT(APINT_TYPE_PREFIX, 25212) +HANDLE_BAT(APINT_TYPE_PREFIX, 25213) +HANDLE_BAT(APINT_TYPE_PREFIX, 25214) +HANDLE_BAT(APINT_TYPE_PREFIX, 25215) +HANDLE_BAT(APINT_TYPE_PREFIX, 25216) +HANDLE_BAT(APINT_TYPE_PREFIX, 25217) +HANDLE_BAT(APINT_TYPE_PREFIX, 25218) +HANDLE_BAT(APINT_TYPE_PREFIX, 25219) +HANDLE_BAT(APINT_TYPE_PREFIX, 25220) +HANDLE_BAT(APINT_TYPE_PREFIX, 25221) +HANDLE_BAT(APINT_TYPE_PREFIX, 25222) +HANDLE_BAT(APINT_TYPE_PREFIX, 25223) +HANDLE_BAT(APINT_TYPE_PREFIX, 25224) +HANDLE_BAT(APINT_TYPE_PREFIX, 25225) +HANDLE_BAT(APINT_TYPE_PREFIX, 25226) +HANDLE_BAT(APINT_TYPE_PREFIX, 25227) +HANDLE_BAT(APINT_TYPE_PREFIX, 25228) +HANDLE_BAT(APINT_TYPE_PREFIX, 25229) +HANDLE_BAT(APINT_TYPE_PREFIX, 25230) +HANDLE_BAT(APINT_TYPE_PREFIX, 25231) +HANDLE_BAT(APINT_TYPE_PREFIX, 25232) +HANDLE_BAT(APINT_TYPE_PREFIX, 25233) +HANDLE_BAT(APINT_TYPE_PREFIX, 25234) +HANDLE_BAT(APINT_TYPE_PREFIX, 25235) +HANDLE_BAT(APINT_TYPE_PREFIX, 25236) +HANDLE_BAT(APINT_TYPE_PREFIX, 25237) +HANDLE_BAT(APINT_TYPE_PREFIX, 25238) +HANDLE_BAT(APINT_TYPE_PREFIX, 25239) +HANDLE_BAT(APINT_TYPE_PREFIX, 25240) +HANDLE_BAT(APINT_TYPE_PREFIX, 25241) +HANDLE_BAT(APINT_TYPE_PREFIX, 25242) +HANDLE_BAT(APINT_TYPE_PREFIX, 25243) +HANDLE_BAT(APINT_TYPE_PREFIX, 25244) +HANDLE_BAT(APINT_TYPE_PREFIX, 25245) +HANDLE_BAT(APINT_TYPE_PREFIX, 25246) +HANDLE_BAT(APINT_TYPE_PREFIX, 25247) +HANDLE_BAT(APINT_TYPE_PREFIX, 25248) +HANDLE_BAT(APINT_TYPE_PREFIX, 25249) +HANDLE_BAT(APINT_TYPE_PREFIX, 25250) +HANDLE_BAT(APINT_TYPE_PREFIX, 25251) +HANDLE_BAT(APINT_TYPE_PREFIX, 25252) +HANDLE_BAT(APINT_TYPE_PREFIX, 25253) +HANDLE_BAT(APINT_TYPE_PREFIX, 25254) +HANDLE_BAT(APINT_TYPE_PREFIX, 25255) +HANDLE_BAT(APINT_TYPE_PREFIX, 25256) +HANDLE_BAT(APINT_TYPE_PREFIX, 25257) +HANDLE_BAT(APINT_TYPE_PREFIX, 25258) +HANDLE_BAT(APINT_TYPE_PREFIX, 25259) +HANDLE_BAT(APINT_TYPE_PREFIX, 25260) +HANDLE_BAT(APINT_TYPE_PREFIX, 25261) +HANDLE_BAT(APINT_TYPE_PREFIX, 25262) +HANDLE_BAT(APINT_TYPE_PREFIX, 25263) +HANDLE_BAT(APINT_TYPE_PREFIX, 25264) +HANDLE_BAT(APINT_TYPE_PREFIX, 25265) +HANDLE_BAT(APINT_TYPE_PREFIX, 25266) +HANDLE_BAT(APINT_TYPE_PREFIX, 25267) +HANDLE_BAT(APINT_TYPE_PREFIX, 25268) +HANDLE_BAT(APINT_TYPE_PREFIX, 25269) +HANDLE_BAT(APINT_TYPE_PREFIX, 25270) +HANDLE_BAT(APINT_TYPE_PREFIX, 25271) +HANDLE_BAT(APINT_TYPE_PREFIX, 25272) +HANDLE_BAT(APINT_TYPE_PREFIX, 25273) +HANDLE_BAT(APINT_TYPE_PREFIX, 25274) +HANDLE_BAT(APINT_TYPE_PREFIX, 25275) +HANDLE_BAT(APINT_TYPE_PREFIX, 25276) +HANDLE_BAT(APINT_TYPE_PREFIX, 25277) +HANDLE_BAT(APINT_TYPE_PREFIX, 25278) +HANDLE_BAT(APINT_TYPE_PREFIX, 25279) +HANDLE_BAT(APINT_TYPE_PREFIX, 25280) +HANDLE_BAT(APINT_TYPE_PREFIX, 25281) +HANDLE_BAT(APINT_TYPE_PREFIX, 25282) +HANDLE_BAT(APINT_TYPE_PREFIX, 25283) +HANDLE_BAT(APINT_TYPE_PREFIX, 25284) +HANDLE_BAT(APINT_TYPE_PREFIX, 25285) +HANDLE_BAT(APINT_TYPE_PREFIX, 25286) +HANDLE_BAT(APINT_TYPE_PREFIX, 25287) +HANDLE_BAT(APINT_TYPE_PREFIX, 25288) +HANDLE_BAT(APINT_TYPE_PREFIX, 25289) +HANDLE_BAT(APINT_TYPE_PREFIX, 25290) +HANDLE_BAT(APINT_TYPE_PREFIX, 25291) +HANDLE_BAT(APINT_TYPE_PREFIX, 25292) +HANDLE_BAT(APINT_TYPE_PREFIX, 25293) +HANDLE_BAT(APINT_TYPE_PREFIX, 25294) +HANDLE_BAT(APINT_TYPE_PREFIX, 25295) +HANDLE_BAT(APINT_TYPE_PREFIX, 25296) +HANDLE_BAT(APINT_TYPE_PREFIX, 25297) +HANDLE_BAT(APINT_TYPE_PREFIX, 25298) +HANDLE_BAT(APINT_TYPE_PREFIX, 25299) +HANDLE_BAT(APINT_TYPE_PREFIX, 25300) +HANDLE_BAT(APINT_TYPE_PREFIX, 25301) +HANDLE_BAT(APINT_TYPE_PREFIX, 25302) +HANDLE_BAT(APINT_TYPE_PREFIX, 25303) +HANDLE_BAT(APINT_TYPE_PREFIX, 25304) +HANDLE_BAT(APINT_TYPE_PREFIX, 25305) +HANDLE_BAT(APINT_TYPE_PREFIX, 25306) +HANDLE_BAT(APINT_TYPE_PREFIX, 25307) +HANDLE_BAT(APINT_TYPE_PREFIX, 25308) +HANDLE_BAT(APINT_TYPE_PREFIX, 25309) +HANDLE_BAT(APINT_TYPE_PREFIX, 25310) +HANDLE_BAT(APINT_TYPE_PREFIX, 25311) +HANDLE_BAT(APINT_TYPE_PREFIX, 25312) +HANDLE_BAT(APINT_TYPE_PREFIX, 25313) +HANDLE_BAT(APINT_TYPE_PREFIX, 25314) +HANDLE_BAT(APINT_TYPE_PREFIX, 25315) +HANDLE_BAT(APINT_TYPE_PREFIX, 25316) +HANDLE_BAT(APINT_TYPE_PREFIX, 25317) +HANDLE_BAT(APINT_TYPE_PREFIX, 25318) +HANDLE_BAT(APINT_TYPE_PREFIX, 25319) +HANDLE_BAT(APINT_TYPE_PREFIX, 25320) +HANDLE_BAT(APINT_TYPE_PREFIX, 25321) +HANDLE_BAT(APINT_TYPE_PREFIX, 25322) +HANDLE_BAT(APINT_TYPE_PREFIX, 25323) +HANDLE_BAT(APINT_TYPE_PREFIX, 25324) +HANDLE_BAT(APINT_TYPE_PREFIX, 25325) +HANDLE_BAT(APINT_TYPE_PREFIX, 25326) +HANDLE_BAT(APINT_TYPE_PREFIX, 25327) +HANDLE_BAT(APINT_TYPE_PREFIX, 25328) +HANDLE_BAT(APINT_TYPE_PREFIX, 25329) +HANDLE_BAT(APINT_TYPE_PREFIX, 25330) +HANDLE_BAT(APINT_TYPE_PREFIX, 25331) +HANDLE_BAT(APINT_TYPE_PREFIX, 25332) +HANDLE_BAT(APINT_TYPE_PREFIX, 25333) +HANDLE_BAT(APINT_TYPE_PREFIX, 25334) +HANDLE_BAT(APINT_TYPE_PREFIX, 25335) +HANDLE_BAT(APINT_TYPE_PREFIX, 25336) +HANDLE_BAT(APINT_TYPE_PREFIX, 25337) +HANDLE_BAT(APINT_TYPE_PREFIX, 25338) +HANDLE_BAT(APINT_TYPE_PREFIX, 25339) +HANDLE_BAT(APINT_TYPE_PREFIX, 25340) +HANDLE_BAT(APINT_TYPE_PREFIX, 25341) +HANDLE_BAT(APINT_TYPE_PREFIX, 25342) +HANDLE_BAT(APINT_TYPE_PREFIX, 25343) +HANDLE_BAT(APINT_TYPE_PREFIX, 25344) +HANDLE_BAT(APINT_TYPE_PREFIX, 25345) +HANDLE_BAT(APINT_TYPE_PREFIX, 25346) +HANDLE_BAT(APINT_TYPE_PREFIX, 25347) +HANDLE_BAT(APINT_TYPE_PREFIX, 25348) +HANDLE_BAT(APINT_TYPE_PREFIX, 25349) +HANDLE_BAT(APINT_TYPE_PREFIX, 25350) +HANDLE_BAT(APINT_TYPE_PREFIX, 25351) +HANDLE_BAT(APINT_TYPE_PREFIX, 25352) +HANDLE_BAT(APINT_TYPE_PREFIX, 25353) +HANDLE_BAT(APINT_TYPE_PREFIX, 25354) +HANDLE_BAT(APINT_TYPE_PREFIX, 25355) +HANDLE_BAT(APINT_TYPE_PREFIX, 25356) +HANDLE_BAT(APINT_TYPE_PREFIX, 25357) +HANDLE_BAT(APINT_TYPE_PREFIX, 25358) +HANDLE_BAT(APINT_TYPE_PREFIX, 25359) +HANDLE_BAT(APINT_TYPE_PREFIX, 25360) +HANDLE_BAT(APINT_TYPE_PREFIX, 25361) +HANDLE_BAT(APINT_TYPE_PREFIX, 25362) +HANDLE_BAT(APINT_TYPE_PREFIX, 25363) +HANDLE_BAT(APINT_TYPE_PREFIX, 25364) +HANDLE_BAT(APINT_TYPE_PREFIX, 25365) +HANDLE_BAT(APINT_TYPE_PREFIX, 25366) +HANDLE_BAT(APINT_TYPE_PREFIX, 25367) +HANDLE_BAT(APINT_TYPE_PREFIX, 25368) +HANDLE_BAT(APINT_TYPE_PREFIX, 25369) +HANDLE_BAT(APINT_TYPE_PREFIX, 25370) +HANDLE_BAT(APINT_TYPE_PREFIX, 25371) +HANDLE_BAT(APINT_TYPE_PREFIX, 25372) +HANDLE_BAT(APINT_TYPE_PREFIX, 25373) +HANDLE_BAT(APINT_TYPE_PREFIX, 25374) +HANDLE_BAT(APINT_TYPE_PREFIX, 25375) +HANDLE_BAT(APINT_TYPE_PREFIX, 25376) +HANDLE_BAT(APINT_TYPE_PREFIX, 25377) +HANDLE_BAT(APINT_TYPE_PREFIX, 25378) +HANDLE_BAT(APINT_TYPE_PREFIX, 25379) +HANDLE_BAT(APINT_TYPE_PREFIX, 25380) +HANDLE_BAT(APINT_TYPE_PREFIX, 25381) +HANDLE_BAT(APINT_TYPE_PREFIX, 25382) +HANDLE_BAT(APINT_TYPE_PREFIX, 25383) +HANDLE_BAT(APINT_TYPE_PREFIX, 25384) +HANDLE_BAT(APINT_TYPE_PREFIX, 25385) +HANDLE_BAT(APINT_TYPE_PREFIX, 25386) +HANDLE_BAT(APINT_TYPE_PREFIX, 25387) +HANDLE_BAT(APINT_TYPE_PREFIX, 25388) +HANDLE_BAT(APINT_TYPE_PREFIX, 25389) +HANDLE_BAT(APINT_TYPE_PREFIX, 25390) +HANDLE_BAT(APINT_TYPE_PREFIX, 25391) +HANDLE_BAT(APINT_TYPE_PREFIX, 25392) +HANDLE_BAT(APINT_TYPE_PREFIX, 25393) +HANDLE_BAT(APINT_TYPE_PREFIX, 25394) +HANDLE_BAT(APINT_TYPE_PREFIX, 25395) +HANDLE_BAT(APINT_TYPE_PREFIX, 25396) +HANDLE_BAT(APINT_TYPE_PREFIX, 25397) +HANDLE_BAT(APINT_TYPE_PREFIX, 25398) +HANDLE_BAT(APINT_TYPE_PREFIX, 25399) +HANDLE_BAT(APINT_TYPE_PREFIX, 25400) +HANDLE_BAT(APINT_TYPE_PREFIX, 25401) +HANDLE_BAT(APINT_TYPE_PREFIX, 25402) +HANDLE_BAT(APINT_TYPE_PREFIX, 25403) +HANDLE_BAT(APINT_TYPE_PREFIX, 25404) +HANDLE_BAT(APINT_TYPE_PREFIX, 25405) +HANDLE_BAT(APINT_TYPE_PREFIX, 25406) +HANDLE_BAT(APINT_TYPE_PREFIX, 25407) +HANDLE_BAT(APINT_TYPE_PREFIX, 25408) +HANDLE_BAT(APINT_TYPE_PREFIX, 25409) +HANDLE_BAT(APINT_TYPE_PREFIX, 25410) +HANDLE_BAT(APINT_TYPE_PREFIX, 25411) +HANDLE_BAT(APINT_TYPE_PREFIX, 25412) +HANDLE_BAT(APINT_TYPE_PREFIX, 25413) +HANDLE_BAT(APINT_TYPE_PREFIX, 25414) +HANDLE_BAT(APINT_TYPE_PREFIX, 25415) +HANDLE_BAT(APINT_TYPE_PREFIX, 25416) +HANDLE_BAT(APINT_TYPE_PREFIX, 25417) +HANDLE_BAT(APINT_TYPE_PREFIX, 25418) +HANDLE_BAT(APINT_TYPE_PREFIX, 25419) +HANDLE_BAT(APINT_TYPE_PREFIX, 25420) +HANDLE_BAT(APINT_TYPE_PREFIX, 25421) +HANDLE_BAT(APINT_TYPE_PREFIX, 25422) +HANDLE_BAT(APINT_TYPE_PREFIX, 25423) +HANDLE_BAT(APINT_TYPE_PREFIX, 25424) +HANDLE_BAT(APINT_TYPE_PREFIX, 25425) +HANDLE_BAT(APINT_TYPE_PREFIX, 25426) +HANDLE_BAT(APINT_TYPE_PREFIX, 25427) +HANDLE_BAT(APINT_TYPE_PREFIX, 25428) +HANDLE_BAT(APINT_TYPE_PREFIX, 25429) +HANDLE_BAT(APINT_TYPE_PREFIX, 25430) +HANDLE_BAT(APINT_TYPE_PREFIX, 25431) +HANDLE_BAT(APINT_TYPE_PREFIX, 25432) +HANDLE_BAT(APINT_TYPE_PREFIX, 25433) +HANDLE_BAT(APINT_TYPE_PREFIX, 25434) +HANDLE_BAT(APINT_TYPE_PREFIX, 25435) +HANDLE_BAT(APINT_TYPE_PREFIX, 25436) +HANDLE_BAT(APINT_TYPE_PREFIX, 25437) +HANDLE_BAT(APINT_TYPE_PREFIX, 25438) +HANDLE_BAT(APINT_TYPE_PREFIX, 25439) +HANDLE_BAT(APINT_TYPE_PREFIX, 25440) +HANDLE_BAT(APINT_TYPE_PREFIX, 25441) +HANDLE_BAT(APINT_TYPE_PREFIX, 25442) +HANDLE_BAT(APINT_TYPE_PREFIX, 25443) +HANDLE_BAT(APINT_TYPE_PREFIX, 25444) +HANDLE_BAT(APINT_TYPE_PREFIX, 25445) +HANDLE_BAT(APINT_TYPE_PREFIX, 25446) +HANDLE_BAT(APINT_TYPE_PREFIX, 25447) +HANDLE_BAT(APINT_TYPE_PREFIX, 25448) +HANDLE_BAT(APINT_TYPE_PREFIX, 25449) +HANDLE_BAT(APINT_TYPE_PREFIX, 25450) +HANDLE_BAT(APINT_TYPE_PREFIX, 25451) +HANDLE_BAT(APINT_TYPE_PREFIX, 25452) +HANDLE_BAT(APINT_TYPE_PREFIX, 25453) +HANDLE_BAT(APINT_TYPE_PREFIX, 25454) +HANDLE_BAT(APINT_TYPE_PREFIX, 25455) +HANDLE_BAT(APINT_TYPE_PREFIX, 25456) +HANDLE_BAT(APINT_TYPE_PREFIX, 25457) +HANDLE_BAT(APINT_TYPE_PREFIX, 25458) +HANDLE_BAT(APINT_TYPE_PREFIX, 25459) +HANDLE_BAT(APINT_TYPE_PREFIX, 25460) +HANDLE_BAT(APINT_TYPE_PREFIX, 25461) +HANDLE_BAT(APINT_TYPE_PREFIX, 25462) +HANDLE_BAT(APINT_TYPE_PREFIX, 25463) +HANDLE_BAT(APINT_TYPE_PREFIX, 25464) +HANDLE_BAT(APINT_TYPE_PREFIX, 25465) +HANDLE_BAT(APINT_TYPE_PREFIX, 25466) +HANDLE_BAT(APINT_TYPE_PREFIX, 25467) +HANDLE_BAT(APINT_TYPE_PREFIX, 25468) +HANDLE_BAT(APINT_TYPE_PREFIX, 25469) +HANDLE_BAT(APINT_TYPE_PREFIX, 25470) +HANDLE_BAT(APINT_TYPE_PREFIX, 25471) +HANDLE_BAT(APINT_TYPE_PREFIX, 25472) +HANDLE_BAT(APINT_TYPE_PREFIX, 25473) +HANDLE_BAT(APINT_TYPE_PREFIX, 25474) +HANDLE_BAT(APINT_TYPE_PREFIX, 25475) +HANDLE_BAT(APINT_TYPE_PREFIX, 25476) +HANDLE_BAT(APINT_TYPE_PREFIX, 25477) +HANDLE_BAT(APINT_TYPE_PREFIX, 25478) +HANDLE_BAT(APINT_TYPE_PREFIX, 25479) +HANDLE_BAT(APINT_TYPE_PREFIX, 25480) +HANDLE_BAT(APINT_TYPE_PREFIX, 25481) +HANDLE_BAT(APINT_TYPE_PREFIX, 25482) +HANDLE_BAT(APINT_TYPE_PREFIX, 25483) +HANDLE_BAT(APINT_TYPE_PREFIX, 25484) +HANDLE_BAT(APINT_TYPE_PREFIX, 25485) +HANDLE_BAT(APINT_TYPE_PREFIX, 25486) +HANDLE_BAT(APINT_TYPE_PREFIX, 25487) +HANDLE_BAT(APINT_TYPE_PREFIX, 25488) +HANDLE_BAT(APINT_TYPE_PREFIX, 25489) +HANDLE_BAT(APINT_TYPE_PREFIX, 25490) +HANDLE_BAT(APINT_TYPE_PREFIX, 25491) +HANDLE_BAT(APINT_TYPE_PREFIX, 25492) +HANDLE_BAT(APINT_TYPE_PREFIX, 25493) +HANDLE_BAT(APINT_TYPE_PREFIX, 25494) +HANDLE_BAT(APINT_TYPE_PREFIX, 25495) +HANDLE_BAT(APINT_TYPE_PREFIX, 25496) +HANDLE_BAT(APINT_TYPE_PREFIX, 25497) +HANDLE_BAT(APINT_TYPE_PREFIX, 25498) +HANDLE_BAT(APINT_TYPE_PREFIX, 25499) +HANDLE_BAT(APINT_TYPE_PREFIX, 25500) +HANDLE_BAT(APINT_TYPE_PREFIX, 25501) +HANDLE_BAT(APINT_TYPE_PREFIX, 25502) +HANDLE_BAT(APINT_TYPE_PREFIX, 25503) +HANDLE_BAT(APINT_TYPE_PREFIX, 25504) +HANDLE_BAT(APINT_TYPE_PREFIX, 25505) +HANDLE_BAT(APINT_TYPE_PREFIX, 25506) +HANDLE_BAT(APINT_TYPE_PREFIX, 25507) +HANDLE_BAT(APINT_TYPE_PREFIX, 25508) +HANDLE_BAT(APINT_TYPE_PREFIX, 25509) +HANDLE_BAT(APINT_TYPE_PREFIX, 25510) +HANDLE_BAT(APINT_TYPE_PREFIX, 25511) +HANDLE_BAT(APINT_TYPE_PREFIX, 25512) +HANDLE_BAT(APINT_TYPE_PREFIX, 25513) +HANDLE_BAT(APINT_TYPE_PREFIX, 25514) +HANDLE_BAT(APINT_TYPE_PREFIX, 25515) +HANDLE_BAT(APINT_TYPE_PREFIX, 25516) +HANDLE_BAT(APINT_TYPE_PREFIX, 25517) +HANDLE_BAT(APINT_TYPE_PREFIX, 25518) +HANDLE_BAT(APINT_TYPE_PREFIX, 25519) +HANDLE_BAT(APINT_TYPE_PREFIX, 25520) +HANDLE_BAT(APINT_TYPE_PREFIX, 25521) +HANDLE_BAT(APINT_TYPE_PREFIX, 25522) +HANDLE_BAT(APINT_TYPE_PREFIX, 25523) +HANDLE_BAT(APINT_TYPE_PREFIX, 25524) +HANDLE_BAT(APINT_TYPE_PREFIX, 25525) +HANDLE_BAT(APINT_TYPE_PREFIX, 25526) +HANDLE_BAT(APINT_TYPE_PREFIX, 25527) +HANDLE_BAT(APINT_TYPE_PREFIX, 25528) +HANDLE_BAT(APINT_TYPE_PREFIX, 25529) +HANDLE_BAT(APINT_TYPE_PREFIX, 25530) +HANDLE_BAT(APINT_TYPE_PREFIX, 25531) +HANDLE_BAT(APINT_TYPE_PREFIX, 25532) +HANDLE_BAT(APINT_TYPE_PREFIX, 25533) +HANDLE_BAT(APINT_TYPE_PREFIX, 25534) +HANDLE_BAT(APINT_TYPE_PREFIX, 25535) +HANDLE_BAT(APINT_TYPE_PREFIX, 25536) +HANDLE_BAT(APINT_TYPE_PREFIX, 25537) +HANDLE_BAT(APINT_TYPE_PREFIX, 25538) +HANDLE_BAT(APINT_TYPE_PREFIX, 25539) +HANDLE_BAT(APINT_TYPE_PREFIX, 25540) +HANDLE_BAT(APINT_TYPE_PREFIX, 25541) +HANDLE_BAT(APINT_TYPE_PREFIX, 25542) +HANDLE_BAT(APINT_TYPE_PREFIX, 25543) +HANDLE_BAT(APINT_TYPE_PREFIX, 25544) +HANDLE_BAT(APINT_TYPE_PREFIX, 25545) +HANDLE_BAT(APINT_TYPE_PREFIX, 25546) +HANDLE_BAT(APINT_TYPE_PREFIX, 25547) +HANDLE_BAT(APINT_TYPE_PREFIX, 25548) +HANDLE_BAT(APINT_TYPE_PREFIX, 25549) +HANDLE_BAT(APINT_TYPE_PREFIX, 25550) +HANDLE_BAT(APINT_TYPE_PREFIX, 25551) +HANDLE_BAT(APINT_TYPE_PREFIX, 25552) +HANDLE_BAT(APINT_TYPE_PREFIX, 25553) +HANDLE_BAT(APINT_TYPE_PREFIX, 25554) +HANDLE_BAT(APINT_TYPE_PREFIX, 25555) +HANDLE_BAT(APINT_TYPE_PREFIX, 25556) +HANDLE_BAT(APINT_TYPE_PREFIX, 25557) +HANDLE_BAT(APINT_TYPE_PREFIX, 25558) +HANDLE_BAT(APINT_TYPE_PREFIX, 25559) +HANDLE_BAT(APINT_TYPE_PREFIX, 25560) +HANDLE_BAT(APINT_TYPE_PREFIX, 25561) +HANDLE_BAT(APINT_TYPE_PREFIX, 25562) +HANDLE_BAT(APINT_TYPE_PREFIX, 25563) +HANDLE_BAT(APINT_TYPE_PREFIX, 25564) +HANDLE_BAT(APINT_TYPE_PREFIX, 25565) +HANDLE_BAT(APINT_TYPE_PREFIX, 25566) +HANDLE_BAT(APINT_TYPE_PREFIX, 25567) +HANDLE_BAT(APINT_TYPE_PREFIX, 25568) +HANDLE_BAT(APINT_TYPE_PREFIX, 25569) +HANDLE_BAT(APINT_TYPE_PREFIX, 25570) +HANDLE_BAT(APINT_TYPE_PREFIX, 25571) +HANDLE_BAT(APINT_TYPE_PREFIX, 25572) +HANDLE_BAT(APINT_TYPE_PREFIX, 25573) +HANDLE_BAT(APINT_TYPE_PREFIX, 25574) +HANDLE_BAT(APINT_TYPE_PREFIX, 25575) +HANDLE_BAT(APINT_TYPE_PREFIX, 25576) +HANDLE_BAT(APINT_TYPE_PREFIX, 25577) +HANDLE_BAT(APINT_TYPE_PREFIX, 25578) +HANDLE_BAT(APINT_TYPE_PREFIX, 25579) +HANDLE_BAT(APINT_TYPE_PREFIX, 25580) +HANDLE_BAT(APINT_TYPE_PREFIX, 25581) +HANDLE_BAT(APINT_TYPE_PREFIX, 25582) +HANDLE_BAT(APINT_TYPE_PREFIX, 25583) +HANDLE_BAT(APINT_TYPE_PREFIX, 25584) +HANDLE_BAT(APINT_TYPE_PREFIX, 25585) +HANDLE_BAT(APINT_TYPE_PREFIX, 25586) +HANDLE_BAT(APINT_TYPE_PREFIX, 25587) +HANDLE_BAT(APINT_TYPE_PREFIX, 25588) +HANDLE_BAT(APINT_TYPE_PREFIX, 25589) +HANDLE_BAT(APINT_TYPE_PREFIX, 25590) +HANDLE_BAT(APINT_TYPE_PREFIX, 25591) +HANDLE_BAT(APINT_TYPE_PREFIX, 25592) +HANDLE_BAT(APINT_TYPE_PREFIX, 25593) +HANDLE_BAT(APINT_TYPE_PREFIX, 25594) +HANDLE_BAT(APINT_TYPE_PREFIX, 25595) +HANDLE_BAT(APINT_TYPE_PREFIX, 25596) +HANDLE_BAT(APINT_TYPE_PREFIX, 25597) +HANDLE_BAT(APINT_TYPE_PREFIX, 25598) +HANDLE_BAT(APINT_TYPE_PREFIX, 25599) +HANDLE_BAT(APINT_TYPE_PREFIX, 25600) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 25 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 25601) +HANDLE_BAT(, 25602) +HANDLE_BAT(, 25603) +HANDLE_BAT(, 25604) +HANDLE_BAT(, 25605) +HANDLE_BAT(, 25606) +HANDLE_BAT(, 25607) +HANDLE_BAT(, 25608) +HANDLE_BAT(, 25609) +HANDLE_BAT(, 25610) +HANDLE_BAT(, 25611) +HANDLE_BAT(, 25612) +HANDLE_BAT(, 25613) +HANDLE_BAT(, 25614) +HANDLE_BAT(, 25615) +HANDLE_BAT(, 25616) +HANDLE_BAT(, 25617) +HANDLE_BAT(, 25618) +HANDLE_BAT(, 25619) +HANDLE_BAT(, 25620) +HANDLE_BAT(, 25621) +HANDLE_BAT(, 25622) +HANDLE_BAT(, 25623) +HANDLE_BAT(, 25624) +HANDLE_BAT(, 25625) +HANDLE_BAT(, 25626) +HANDLE_BAT(, 25627) +HANDLE_BAT(, 25628) +HANDLE_BAT(, 25629) +HANDLE_BAT(, 25630) +HANDLE_BAT(, 25631) +HANDLE_BAT(, 25632) +HANDLE_BAT(, 25633) +HANDLE_BAT(, 25634) +HANDLE_BAT(, 25635) +HANDLE_BAT(, 25636) +HANDLE_BAT(, 25637) +HANDLE_BAT(, 25638) +HANDLE_BAT(, 25639) +HANDLE_BAT(, 25640) +HANDLE_BAT(, 25641) +HANDLE_BAT(, 25642) +HANDLE_BAT(, 25643) +HANDLE_BAT(, 25644) +HANDLE_BAT(, 25645) +HANDLE_BAT(, 25646) +HANDLE_BAT(, 25647) +HANDLE_BAT(, 25648) +HANDLE_BAT(, 25649) +HANDLE_BAT(, 25650) +HANDLE_BAT(, 25651) +HANDLE_BAT(, 25652) +HANDLE_BAT(, 25653) +HANDLE_BAT(, 25654) +HANDLE_BAT(, 25655) +HANDLE_BAT(, 25656) +HANDLE_BAT(, 25657) +HANDLE_BAT(, 25658) +HANDLE_BAT(, 25659) +HANDLE_BAT(, 25660) +HANDLE_BAT(, 25661) +HANDLE_BAT(, 25662) +HANDLE_BAT(, 25663) +HANDLE_BAT(, 25664) +HANDLE_BAT(, 25665) +HANDLE_BAT(, 25666) +HANDLE_BAT(, 25667) +HANDLE_BAT(, 25668) +HANDLE_BAT(, 25669) +HANDLE_BAT(, 25670) +HANDLE_BAT(, 25671) +HANDLE_BAT(, 25672) +HANDLE_BAT(, 25673) +HANDLE_BAT(, 25674) +HANDLE_BAT(, 25675) +HANDLE_BAT(, 25676) +HANDLE_BAT(, 25677) +HANDLE_BAT(, 25678) +HANDLE_BAT(, 25679) +HANDLE_BAT(, 25680) +HANDLE_BAT(, 25681) +HANDLE_BAT(, 25682) +HANDLE_BAT(, 25683) +HANDLE_BAT(, 25684) +HANDLE_BAT(, 25685) +HANDLE_BAT(, 25686) +HANDLE_BAT(, 25687) +HANDLE_BAT(, 25688) +HANDLE_BAT(, 25689) +HANDLE_BAT(, 25690) +HANDLE_BAT(, 25691) +HANDLE_BAT(, 25692) +HANDLE_BAT(, 25693) +HANDLE_BAT(, 25694) +HANDLE_BAT(, 25695) +HANDLE_BAT(, 25696) +HANDLE_BAT(, 25697) +HANDLE_BAT(, 25698) +HANDLE_BAT(, 25699) +HANDLE_BAT(, 25700) +HANDLE_BAT(, 25701) +HANDLE_BAT(, 25702) +HANDLE_BAT(, 25703) +HANDLE_BAT(, 25704) +HANDLE_BAT(, 25705) +HANDLE_BAT(, 25706) +HANDLE_BAT(, 25707) +HANDLE_BAT(, 25708) +HANDLE_BAT(, 25709) +HANDLE_BAT(, 25710) +HANDLE_BAT(, 25711) +HANDLE_BAT(, 25712) +HANDLE_BAT(, 25713) +HANDLE_BAT(, 25714) +HANDLE_BAT(, 25715) +HANDLE_BAT(, 25716) +HANDLE_BAT(, 25717) +HANDLE_BAT(, 25718) +HANDLE_BAT(, 25719) +HANDLE_BAT(, 25720) +HANDLE_BAT(, 25721) +HANDLE_BAT(, 25722) +HANDLE_BAT(, 25723) +HANDLE_BAT(, 25724) +HANDLE_BAT(, 25725) +HANDLE_BAT(, 25726) +HANDLE_BAT(, 25727) +HANDLE_BAT(, 25728) +HANDLE_BAT(, 25729) +HANDLE_BAT(, 25730) +HANDLE_BAT(, 25731) +HANDLE_BAT(, 25732) +HANDLE_BAT(, 25733) +HANDLE_BAT(, 25734) +HANDLE_BAT(, 25735) +HANDLE_BAT(, 25736) +HANDLE_BAT(, 25737) +HANDLE_BAT(, 25738) +HANDLE_BAT(, 25739) +HANDLE_BAT(, 25740) +HANDLE_BAT(, 25741) +HANDLE_BAT(, 25742) +HANDLE_BAT(, 25743) +HANDLE_BAT(, 25744) +HANDLE_BAT(, 25745) +HANDLE_BAT(, 25746) +HANDLE_BAT(, 25747) +HANDLE_BAT(, 25748) +HANDLE_BAT(, 25749) +HANDLE_BAT(, 25750) +HANDLE_BAT(, 25751) +HANDLE_BAT(, 25752) +HANDLE_BAT(, 25753) +HANDLE_BAT(, 25754) +HANDLE_BAT(, 25755) +HANDLE_BAT(, 25756) +HANDLE_BAT(, 25757) +HANDLE_BAT(, 25758) +HANDLE_BAT(, 25759) +HANDLE_BAT(, 25760) +HANDLE_BAT(, 25761) +HANDLE_BAT(, 25762) +HANDLE_BAT(, 25763) +HANDLE_BAT(, 25764) +HANDLE_BAT(, 25765) +HANDLE_BAT(, 25766) +HANDLE_BAT(, 25767) +HANDLE_BAT(, 25768) +HANDLE_BAT(, 25769) +HANDLE_BAT(, 25770) +HANDLE_BAT(, 25771) +HANDLE_BAT(, 25772) +HANDLE_BAT(, 25773) +HANDLE_BAT(, 25774) +HANDLE_BAT(, 25775) +HANDLE_BAT(, 25776) +HANDLE_BAT(, 25777) +HANDLE_BAT(, 25778) +HANDLE_BAT(, 25779) +HANDLE_BAT(, 25780) +HANDLE_BAT(, 25781) +HANDLE_BAT(, 25782) +HANDLE_BAT(, 25783) +HANDLE_BAT(, 25784) +HANDLE_BAT(, 25785) +HANDLE_BAT(, 25786) +HANDLE_BAT(, 25787) +HANDLE_BAT(, 25788) +HANDLE_BAT(, 25789) +HANDLE_BAT(, 25790) +HANDLE_BAT(, 25791) +HANDLE_BAT(, 25792) +HANDLE_BAT(, 25793) +HANDLE_BAT(, 25794) +HANDLE_BAT(, 25795) +HANDLE_BAT(, 25796) +HANDLE_BAT(, 25797) +HANDLE_BAT(, 25798) +HANDLE_BAT(, 25799) +HANDLE_BAT(, 25800) +HANDLE_BAT(, 25801) +HANDLE_BAT(, 25802) +HANDLE_BAT(, 25803) +HANDLE_BAT(, 25804) +HANDLE_BAT(, 25805) +HANDLE_BAT(, 25806) +HANDLE_BAT(, 25807) +HANDLE_BAT(, 25808) +HANDLE_BAT(, 25809) +HANDLE_BAT(, 25810) +HANDLE_BAT(, 25811) +HANDLE_BAT(, 25812) +HANDLE_BAT(, 25813) +HANDLE_BAT(, 25814) +HANDLE_BAT(, 25815) +HANDLE_BAT(, 25816) +HANDLE_BAT(, 25817) +HANDLE_BAT(, 25818) +HANDLE_BAT(, 25819) +HANDLE_BAT(, 25820) +HANDLE_BAT(, 25821) +HANDLE_BAT(, 25822) +HANDLE_BAT(, 25823) +HANDLE_BAT(, 25824) +HANDLE_BAT(, 25825) +HANDLE_BAT(, 25826) +HANDLE_BAT(, 25827) +HANDLE_BAT(, 25828) +HANDLE_BAT(, 25829) +HANDLE_BAT(, 25830) +HANDLE_BAT(, 25831) +HANDLE_BAT(, 25832) +HANDLE_BAT(, 25833) +HANDLE_BAT(, 25834) +HANDLE_BAT(, 25835) +HANDLE_BAT(, 25836) +HANDLE_BAT(, 25837) +HANDLE_BAT(, 25838) +HANDLE_BAT(, 25839) +HANDLE_BAT(, 25840) +HANDLE_BAT(, 25841) +HANDLE_BAT(, 25842) +HANDLE_BAT(, 25843) +HANDLE_BAT(, 25844) +HANDLE_BAT(, 25845) +HANDLE_BAT(, 25846) +HANDLE_BAT(, 25847) +HANDLE_BAT(, 25848) +HANDLE_BAT(, 25849) +HANDLE_BAT(, 25850) +HANDLE_BAT(, 25851) +HANDLE_BAT(, 25852) +HANDLE_BAT(, 25853) +HANDLE_BAT(, 25854) +HANDLE_BAT(, 25855) +HANDLE_BAT(, 25856) +HANDLE_BAT(, 25857) +HANDLE_BAT(, 25858) +HANDLE_BAT(, 25859) +HANDLE_BAT(, 25860) +HANDLE_BAT(, 25861) +HANDLE_BAT(, 25862) +HANDLE_BAT(, 25863) +HANDLE_BAT(, 25864) +HANDLE_BAT(, 25865) +HANDLE_BAT(, 25866) +HANDLE_BAT(, 25867) +HANDLE_BAT(, 25868) +HANDLE_BAT(, 25869) +HANDLE_BAT(, 25870) +HANDLE_BAT(, 25871) +HANDLE_BAT(, 25872) +HANDLE_BAT(, 25873) +HANDLE_BAT(, 25874) +HANDLE_BAT(, 25875) +HANDLE_BAT(, 25876) +HANDLE_BAT(, 25877) +HANDLE_BAT(, 25878) +HANDLE_BAT(, 25879) +HANDLE_BAT(, 25880) +HANDLE_BAT(, 25881) +HANDLE_BAT(, 25882) +HANDLE_BAT(, 25883) +HANDLE_BAT(, 25884) +HANDLE_BAT(, 25885) +HANDLE_BAT(, 25886) +HANDLE_BAT(, 25887) +HANDLE_BAT(, 25888) +HANDLE_BAT(, 25889) +HANDLE_BAT(, 25890) +HANDLE_BAT(, 25891) +HANDLE_BAT(, 25892) +HANDLE_BAT(, 25893) +HANDLE_BAT(, 25894) +HANDLE_BAT(, 25895) +HANDLE_BAT(, 25896) +HANDLE_BAT(, 25897) +HANDLE_BAT(, 25898) +HANDLE_BAT(, 25899) +HANDLE_BAT(, 25900) +HANDLE_BAT(, 25901) +HANDLE_BAT(, 25902) +HANDLE_BAT(, 25903) +HANDLE_BAT(, 25904) +HANDLE_BAT(, 25905) +HANDLE_BAT(, 25906) +HANDLE_BAT(, 25907) +HANDLE_BAT(, 25908) +HANDLE_BAT(, 25909) +HANDLE_BAT(, 25910) +HANDLE_BAT(, 25911) +HANDLE_BAT(, 25912) +HANDLE_BAT(, 25913) +HANDLE_BAT(, 25914) +HANDLE_BAT(, 25915) +HANDLE_BAT(, 25916) +HANDLE_BAT(, 25917) +HANDLE_BAT(, 25918) +HANDLE_BAT(, 25919) +HANDLE_BAT(, 25920) +HANDLE_BAT(, 25921) +HANDLE_BAT(, 25922) +HANDLE_BAT(, 25923) +HANDLE_BAT(, 25924) +HANDLE_BAT(, 25925) +HANDLE_BAT(, 25926) +HANDLE_BAT(, 25927) +HANDLE_BAT(, 25928) +HANDLE_BAT(, 25929) +HANDLE_BAT(, 25930) +HANDLE_BAT(, 25931) +HANDLE_BAT(, 25932) +HANDLE_BAT(, 25933) +HANDLE_BAT(, 25934) +HANDLE_BAT(, 25935) +HANDLE_BAT(, 25936) +HANDLE_BAT(, 25937) +HANDLE_BAT(, 25938) +HANDLE_BAT(, 25939) +HANDLE_BAT(, 25940) +HANDLE_BAT(, 25941) +HANDLE_BAT(, 25942) +HANDLE_BAT(, 25943) +HANDLE_BAT(, 25944) +HANDLE_BAT(, 25945) +HANDLE_BAT(, 25946) +HANDLE_BAT(, 25947) +HANDLE_BAT(, 25948) +HANDLE_BAT(, 25949) +HANDLE_BAT(, 25950) +HANDLE_BAT(, 25951) +HANDLE_BAT(, 25952) +HANDLE_BAT(, 25953) +HANDLE_BAT(, 25954) +HANDLE_BAT(, 25955) +HANDLE_BAT(, 25956) +HANDLE_BAT(, 25957) +HANDLE_BAT(, 25958) +HANDLE_BAT(, 25959) +HANDLE_BAT(, 25960) +HANDLE_BAT(, 25961) +HANDLE_BAT(, 25962) +HANDLE_BAT(, 25963) +HANDLE_BAT(, 25964) +HANDLE_BAT(, 25965) +HANDLE_BAT(, 25966) +HANDLE_BAT(, 25967) +HANDLE_BAT(, 25968) +HANDLE_BAT(, 25969) +HANDLE_BAT(, 25970) +HANDLE_BAT(, 25971) +HANDLE_BAT(, 25972) +HANDLE_BAT(, 25973) +HANDLE_BAT(, 25974) +HANDLE_BAT(, 25975) +HANDLE_BAT(, 25976) +HANDLE_BAT(, 25977) +HANDLE_BAT(, 25978) +HANDLE_BAT(, 25979) +HANDLE_BAT(, 25980) +HANDLE_BAT(, 25981) +HANDLE_BAT(, 25982) +HANDLE_BAT(, 25983) +HANDLE_BAT(, 25984) +HANDLE_BAT(, 25985) +HANDLE_BAT(, 25986) +HANDLE_BAT(, 25987) +HANDLE_BAT(, 25988) +HANDLE_BAT(, 25989) +HANDLE_BAT(, 25990) +HANDLE_BAT(, 25991) +HANDLE_BAT(, 25992) +HANDLE_BAT(, 25993) +HANDLE_BAT(, 25994) +HANDLE_BAT(, 25995) +HANDLE_BAT(, 25996) +HANDLE_BAT(, 25997) +HANDLE_BAT(, 25998) +HANDLE_BAT(, 25999) +HANDLE_BAT(, 26000) +HANDLE_BAT(, 26001) +HANDLE_BAT(, 26002) +HANDLE_BAT(, 26003) +HANDLE_BAT(, 26004) +HANDLE_BAT(, 26005) +HANDLE_BAT(, 26006) +HANDLE_BAT(, 26007) +HANDLE_BAT(, 26008) +HANDLE_BAT(, 26009) +HANDLE_BAT(, 26010) +HANDLE_BAT(, 26011) +HANDLE_BAT(, 26012) +HANDLE_BAT(, 26013) +HANDLE_BAT(, 26014) +HANDLE_BAT(, 26015) +HANDLE_BAT(, 26016) +HANDLE_BAT(, 26017) +HANDLE_BAT(, 26018) +HANDLE_BAT(, 26019) +HANDLE_BAT(, 26020) +HANDLE_BAT(, 26021) +HANDLE_BAT(, 26022) +HANDLE_BAT(, 26023) +HANDLE_BAT(, 26024) +HANDLE_BAT(, 26025) +HANDLE_BAT(, 26026) +HANDLE_BAT(, 26027) +HANDLE_BAT(, 26028) +HANDLE_BAT(, 26029) +HANDLE_BAT(, 26030) +HANDLE_BAT(, 26031) +HANDLE_BAT(, 26032) +HANDLE_BAT(, 26033) +HANDLE_BAT(, 26034) +HANDLE_BAT(, 26035) +HANDLE_BAT(, 26036) +HANDLE_BAT(, 26037) +HANDLE_BAT(, 26038) +HANDLE_BAT(, 26039) +HANDLE_BAT(, 26040) +HANDLE_BAT(, 26041) +HANDLE_BAT(, 26042) +HANDLE_BAT(, 26043) +HANDLE_BAT(, 26044) +HANDLE_BAT(, 26045) +HANDLE_BAT(, 26046) +HANDLE_BAT(, 26047) +HANDLE_BAT(, 26048) +HANDLE_BAT(, 26049) +HANDLE_BAT(, 26050) +HANDLE_BAT(, 26051) +HANDLE_BAT(, 26052) +HANDLE_BAT(, 26053) +HANDLE_BAT(, 26054) +HANDLE_BAT(, 26055) +HANDLE_BAT(, 26056) +HANDLE_BAT(, 26057) +HANDLE_BAT(, 26058) +HANDLE_BAT(, 26059) +HANDLE_BAT(, 26060) +HANDLE_BAT(, 26061) +HANDLE_BAT(, 26062) +HANDLE_BAT(, 26063) +HANDLE_BAT(, 26064) +HANDLE_BAT(, 26065) +HANDLE_BAT(, 26066) +HANDLE_BAT(, 26067) +HANDLE_BAT(, 26068) +HANDLE_BAT(, 26069) +HANDLE_BAT(, 26070) +HANDLE_BAT(, 26071) +HANDLE_BAT(, 26072) +HANDLE_BAT(, 26073) +HANDLE_BAT(, 26074) +HANDLE_BAT(, 26075) +HANDLE_BAT(, 26076) +HANDLE_BAT(, 26077) +HANDLE_BAT(, 26078) +HANDLE_BAT(, 26079) +HANDLE_BAT(, 26080) +HANDLE_BAT(, 26081) +HANDLE_BAT(, 26082) +HANDLE_BAT(, 26083) +HANDLE_BAT(, 26084) +HANDLE_BAT(, 26085) +HANDLE_BAT(, 26086) +HANDLE_BAT(, 26087) +HANDLE_BAT(, 26088) +HANDLE_BAT(, 26089) +HANDLE_BAT(, 26090) +HANDLE_BAT(, 26091) +HANDLE_BAT(, 26092) +HANDLE_BAT(, 26093) +HANDLE_BAT(, 26094) +HANDLE_BAT(, 26095) +HANDLE_BAT(, 26096) +HANDLE_BAT(, 26097) +HANDLE_BAT(, 26098) +HANDLE_BAT(, 26099) +HANDLE_BAT(, 26100) +HANDLE_BAT(, 26101) +HANDLE_BAT(, 26102) +HANDLE_BAT(, 26103) +HANDLE_BAT(, 26104) +HANDLE_BAT(, 26105) +HANDLE_BAT(, 26106) +HANDLE_BAT(, 26107) +HANDLE_BAT(, 26108) +HANDLE_BAT(, 26109) +HANDLE_BAT(, 26110) +HANDLE_BAT(, 26111) +HANDLE_BAT(, 26112) +HANDLE_BAT(, 26113) +HANDLE_BAT(, 26114) +HANDLE_BAT(, 26115) +HANDLE_BAT(, 26116) +HANDLE_BAT(, 26117) +HANDLE_BAT(, 26118) +HANDLE_BAT(, 26119) +HANDLE_BAT(, 26120) +HANDLE_BAT(, 26121) +HANDLE_BAT(, 26122) +HANDLE_BAT(, 26123) +HANDLE_BAT(, 26124) +HANDLE_BAT(, 26125) +HANDLE_BAT(, 26126) +HANDLE_BAT(, 26127) +HANDLE_BAT(, 26128) +HANDLE_BAT(, 26129) +HANDLE_BAT(, 26130) +HANDLE_BAT(, 26131) +HANDLE_BAT(, 26132) +HANDLE_BAT(, 26133) +HANDLE_BAT(, 26134) +HANDLE_BAT(, 26135) +HANDLE_BAT(, 26136) +HANDLE_BAT(, 26137) +HANDLE_BAT(, 26138) +HANDLE_BAT(, 26139) +HANDLE_BAT(, 26140) +HANDLE_BAT(, 26141) +HANDLE_BAT(, 26142) +HANDLE_BAT(, 26143) +HANDLE_BAT(, 26144) +HANDLE_BAT(, 26145) +HANDLE_BAT(, 26146) +HANDLE_BAT(, 26147) +HANDLE_BAT(, 26148) +HANDLE_BAT(, 26149) +HANDLE_BAT(, 26150) +HANDLE_BAT(, 26151) +HANDLE_BAT(, 26152) +HANDLE_BAT(, 26153) +HANDLE_BAT(, 26154) +HANDLE_BAT(, 26155) +HANDLE_BAT(, 26156) +HANDLE_BAT(, 26157) +HANDLE_BAT(, 26158) +HANDLE_BAT(, 26159) +HANDLE_BAT(, 26160) +HANDLE_BAT(, 26161) +HANDLE_BAT(, 26162) +HANDLE_BAT(, 26163) +HANDLE_BAT(, 26164) +HANDLE_BAT(, 26165) +HANDLE_BAT(, 26166) +HANDLE_BAT(, 26167) +HANDLE_BAT(, 26168) +HANDLE_BAT(, 26169) +HANDLE_BAT(, 26170) +HANDLE_BAT(, 26171) +HANDLE_BAT(, 26172) +HANDLE_BAT(, 26173) +HANDLE_BAT(, 26174) +HANDLE_BAT(, 26175) +HANDLE_BAT(, 26176) +HANDLE_BAT(, 26177) +HANDLE_BAT(, 26178) +HANDLE_BAT(, 26179) +HANDLE_BAT(, 26180) +HANDLE_BAT(, 26181) +HANDLE_BAT(, 26182) +HANDLE_BAT(, 26183) +HANDLE_BAT(, 26184) +HANDLE_BAT(, 26185) +HANDLE_BAT(, 26186) +HANDLE_BAT(, 26187) +HANDLE_BAT(, 26188) +HANDLE_BAT(, 26189) +HANDLE_BAT(, 26190) +HANDLE_BAT(, 26191) +HANDLE_BAT(, 26192) +HANDLE_BAT(, 26193) +HANDLE_BAT(, 26194) +HANDLE_BAT(, 26195) +HANDLE_BAT(, 26196) +HANDLE_BAT(, 26197) +HANDLE_BAT(, 26198) +HANDLE_BAT(, 26199) +HANDLE_BAT(, 26200) +HANDLE_BAT(, 26201) +HANDLE_BAT(, 26202) +HANDLE_BAT(, 26203) +HANDLE_BAT(, 26204) +HANDLE_BAT(, 26205) +HANDLE_BAT(, 26206) +HANDLE_BAT(, 26207) +HANDLE_BAT(, 26208) +HANDLE_BAT(, 26209) +HANDLE_BAT(, 26210) +HANDLE_BAT(, 26211) +HANDLE_BAT(, 26212) +HANDLE_BAT(, 26213) +HANDLE_BAT(, 26214) +HANDLE_BAT(, 26215) +HANDLE_BAT(, 26216) +HANDLE_BAT(, 26217) +HANDLE_BAT(, 26218) +HANDLE_BAT(, 26219) +HANDLE_BAT(, 26220) +HANDLE_BAT(, 26221) +HANDLE_BAT(, 26222) +HANDLE_BAT(, 26223) +HANDLE_BAT(, 26224) +HANDLE_BAT(, 26225) +HANDLE_BAT(, 26226) +HANDLE_BAT(, 26227) +HANDLE_BAT(, 26228) +HANDLE_BAT(, 26229) +HANDLE_BAT(, 26230) +HANDLE_BAT(, 26231) +HANDLE_BAT(, 26232) +HANDLE_BAT(, 26233) +HANDLE_BAT(, 26234) +HANDLE_BAT(, 26235) +HANDLE_BAT(, 26236) +HANDLE_BAT(, 26237) +HANDLE_BAT(, 26238) +HANDLE_BAT(, 26239) +HANDLE_BAT(, 26240) +HANDLE_BAT(, 26241) +HANDLE_BAT(, 26242) +HANDLE_BAT(, 26243) +HANDLE_BAT(, 26244) +HANDLE_BAT(, 26245) +HANDLE_BAT(, 26246) +HANDLE_BAT(, 26247) +HANDLE_BAT(, 26248) +HANDLE_BAT(, 26249) +HANDLE_BAT(, 26250) +HANDLE_BAT(, 26251) +HANDLE_BAT(, 26252) +HANDLE_BAT(, 26253) +HANDLE_BAT(, 26254) +HANDLE_BAT(, 26255) +HANDLE_BAT(, 26256) +HANDLE_BAT(, 26257) +HANDLE_BAT(, 26258) +HANDLE_BAT(, 26259) +HANDLE_BAT(, 26260) +HANDLE_BAT(, 26261) +HANDLE_BAT(, 26262) +HANDLE_BAT(, 26263) +HANDLE_BAT(, 26264) +HANDLE_BAT(, 26265) +HANDLE_BAT(, 26266) +HANDLE_BAT(, 26267) +HANDLE_BAT(, 26268) +HANDLE_BAT(, 26269) +HANDLE_BAT(, 26270) +HANDLE_BAT(, 26271) +HANDLE_BAT(, 26272) +HANDLE_BAT(, 26273) +HANDLE_BAT(, 26274) +HANDLE_BAT(, 26275) +HANDLE_BAT(, 26276) +HANDLE_BAT(, 26277) +HANDLE_BAT(, 26278) +HANDLE_BAT(, 26279) +HANDLE_BAT(, 26280) +HANDLE_BAT(, 26281) +HANDLE_BAT(, 26282) +HANDLE_BAT(, 26283) +HANDLE_BAT(, 26284) +HANDLE_BAT(, 26285) +HANDLE_BAT(, 26286) +HANDLE_BAT(, 26287) +HANDLE_BAT(, 26288) +HANDLE_BAT(, 26289) +HANDLE_BAT(, 26290) +HANDLE_BAT(, 26291) +HANDLE_BAT(, 26292) +HANDLE_BAT(, 26293) +HANDLE_BAT(, 26294) +HANDLE_BAT(, 26295) +HANDLE_BAT(, 26296) +HANDLE_BAT(, 26297) +HANDLE_BAT(, 26298) +HANDLE_BAT(, 26299) +HANDLE_BAT(, 26300) +HANDLE_BAT(, 26301) +HANDLE_BAT(, 26302) +HANDLE_BAT(, 26303) +HANDLE_BAT(, 26304) +HANDLE_BAT(, 26305) +HANDLE_BAT(, 26306) +HANDLE_BAT(, 26307) +HANDLE_BAT(, 26308) +HANDLE_BAT(, 26309) +HANDLE_BAT(, 26310) +HANDLE_BAT(, 26311) +HANDLE_BAT(, 26312) +HANDLE_BAT(, 26313) +HANDLE_BAT(, 26314) +HANDLE_BAT(, 26315) +HANDLE_BAT(, 26316) +HANDLE_BAT(, 26317) +HANDLE_BAT(, 26318) +HANDLE_BAT(, 26319) +HANDLE_BAT(, 26320) +HANDLE_BAT(, 26321) +HANDLE_BAT(, 26322) +HANDLE_BAT(, 26323) +HANDLE_BAT(, 26324) +HANDLE_BAT(, 26325) +HANDLE_BAT(, 26326) +HANDLE_BAT(, 26327) +HANDLE_BAT(, 26328) +HANDLE_BAT(, 26329) +HANDLE_BAT(, 26330) +HANDLE_BAT(, 26331) +HANDLE_BAT(, 26332) +HANDLE_BAT(, 26333) +HANDLE_BAT(, 26334) +HANDLE_BAT(, 26335) +HANDLE_BAT(, 26336) +HANDLE_BAT(, 26337) +HANDLE_BAT(, 26338) +HANDLE_BAT(, 26339) +HANDLE_BAT(, 26340) +HANDLE_BAT(, 26341) +HANDLE_BAT(, 26342) +HANDLE_BAT(, 26343) +HANDLE_BAT(, 26344) +HANDLE_BAT(, 26345) +HANDLE_BAT(, 26346) +HANDLE_BAT(, 26347) +HANDLE_BAT(, 26348) +HANDLE_BAT(, 26349) +HANDLE_BAT(, 26350) +HANDLE_BAT(, 26351) +HANDLE_BAT(, 26352) +HANDLE_BAT(, 26353) +HANDLE_BAT(, 26354) +HANDLE_BAT(, 26355) +HANDLE_BAT(, 26356) +HANDLE_BAT(, 26357) +HANDLE_BAT(, 26358) +HANDLE_BAT(, 26359) +HANDLE_BAT(, 26360) +HANDLE_BAT(, 26361) +HANDLE_BAT(, 26362) +HANDLE_BAT(, 26363) +HANDLE_BAT(, 26364) +HANDLE_BAT(, 26365) +HANDLE_BAT(, 26366) +HANDLE_BAT(, 26367) +HANDLE_BAT(, 26368) +HANDLE_BAT(, 26369) +HANDLE_BAT(, 26370) +HANDLE_BAT(, 26371) +HANDLE_BAT(, 26372) +HANDLE_BAT(, 26373) +HANDLE_BAT(, 26374) +HANDLE_BAT(, 26375) +HANDLE_BAT(, 26376) +HANDLE_BAT(, 26377) +HANDLE_BAT(, 26378) +HANDLE_BAT(, 26379) +HANDLE_BAT(, 26380) +HANDLE_BAT(, 26381) +HANDLE_BAT(, 26382) +HANDLE_BAT(, 26383) +HANDLE_BAT(, 26384) +HANDLE_BAT(, 26385) +HANDLE_BAT(, 26386) +HANDLE_BAT(, 26387) +HANDLE_BAT(, 26388) +HANDLE_BAT(, 26389) +HANDLE_BAT(, 26390) +HANDLE_BAT(, 26391) +HANDLE_BAT(, 26392) +HANDLE_BAT(, 26393) +HANDLE_BAT(, 26394) +HANDLE_BAT(, 26395) +HANDLE_BAT(, 26396) +HANDLE_BAT(, 26397) +HANDLE_BAT(, 26398) +HANDLE_BAT(, 26399) +HANDLE_BAT(, 26400) +HANDLE_BAT(, 26401) +HANDLE_BAT(, 26402) +HANDLE_BAT(, 26403) +HANDLE_BAT(, 26404) +HANDLE_BAT(, 26405) +HANDLE_BAT(, 26406) +HANDLE_BAT(, 26407) +HANDLE_BAT(, 26408) +HANDLE_BAT(, 26409) +HANDLE_BAT(, 26410) +HANDLE_BAT(, 26411) +HANDLE_BAT(, 26412) +HANDLE_BAT(, 26413) +HANDLE_BAT(, 26414) +HANDLE_BAT(, 26415) +HANDLE_BAT(, 26416) +HANDLE_BAT(, 26417) +HANDLE_BAT(, 26418) +HANDLE_BAT(, 26419) +HANDLE_BAT(, 26420) +HANDLE_BAT(, 26421) +HANDLE_BAT(, 26422) +HANDLE_BAT(, 26423) +HANDLE_BAT(, 26424) +HANDLE_BAT(, 26425) +HANDLE_BAT(, 26426) +HANDLE_BAT(, 26427) +HANDLE_BAT(, 26428) +HANDLE_BAT(, 26429) +HANDLE_BAT(, 26430) +HANDLE_BAT(, 26431) +HANDLE_BAT(, 26432) +HANDLE_BAT(, 26433) +HANDLE_BAT(, 26434) +HANDLE_BAT(, 26435) +HANDLE_BAT(, 26436) +HANDLE_BAT(, 26437) +HANDLE_BAT(, 26438) +HANDLE_BAT(, 26439) +HANDLE_BAT(, 26440) +HANDLE_BAT(, 26441) +HANDLE_BAT(, 26442) +HANDLE_BAT(, 26443) +HANDLE_BAT(, 26444) +HANDLE_BAT(, 26445) +HANDLE_BAT(, 26446) +HANDLE_BAT(, 26447) +HANDLE_BAT(, 26448) +HANDLE_BAT(, 26449) +HANDLE_BAT(, 26450) +HANDLE_BAT(, 26451) +HANDLE_BAT(, 26452) +HANDLE_BAT(, 26453) +HANDLE_BAT(, 26454) +HANDLE_BAT(, 26455) +HANDLE_BAT(, 26456) +HANDLE_BAT(, 26457) +HANDLE_BAT(, 26458) +HANDLE_BAT(, 26459) +HANDLE_BAT(, 26460) +HANDLE_BAT(, 26461) +HANDLE_BAT(, 26462) +HANDLE_BAT(, 26463) +HANDLE_BAT(, 26464) +HANDLE_BAT(, 26465) +HANDLE_BAT(, 26466) +HANDLE_BAT(, 26467) +HANDLE_BAT(, 26468) +HANDLE_BAT(, 26469) +HANDLE_BAT(, 26470) +HANDLE_BAT(, 26471) +HANDLE_BAT(, 26472) +HANDLE_BAT(, 26473) +HANDLE_BAT(, 26474) +HANDLE_BAT(, 26475) +HANDLE_BAT(, 26476) +HANDLE_BAT(, 26477) +HANDLE_BAT(, 26478) +HANDLE_BAT(, 26479) +HANDLE_BAT(, 26480) +HANDLE_BAT(, 26481) +HANDLE_BAT(, 26482) +HANDLE_BAT(, 26483) +HANDLE_BAT(, 26484) +HANDLE_BAT(, 26485) +HANDLE_BAT(, 26486) +HANDLE_BAT(, 26487) +HANDLE_BAT(, 26488) +HANDLE_BAT(, 26489) +HANDLE_BAT(, 26490) +HANDLE_BAT(, 26491) +HANDLE_BAT(, 26492) +HANDLE_BAT(, 26493) +HANDLE_BAT(, 26494) +HANDLE_BAT(, 26495) +HANDLE_BAT(, 26496) +HANDLE_BAT(, 26497) +HANDLE_BAT(, 26498) +HANDLE_BAT(, 26499) +HANDLE_BAT(, 26500) +HANDLE_BAT(, 26501) +HANDLE_BAT(, 26502) +HANDLE_BAT(, 26503) +HANDLE_BAT(, 26504) +HANDLE_BAT(, 26505) +HANDLE_BAT(, 26506) +HANDLE_BAT(, 26507) +HANDLE_BAT(, 26508) +HANDLE_BAT(, 26509) +HANDLE_BAT(, 26510) +HANDLE_BAT(, 26511) +HANDLE_BAT(, 26512) +HANDLE_BAT(, 26513) +HANDLE_BAT(, 26514) +HANDLE_BAT(, 26515) +HANDLE_BAT(, 26516) +HANDLE_BAT(, 26517) +HANDLE_BAT(, 26518) +HANDLE_BAT(, 26519) +HANDLE_BAT(, 26520) +HANDLE_BAT(, 26521) +HANDLE_BAT(, 26522) +HANDLE_BAT(, 26523) +HANDLE_BAT(, 26524) +HANDLE_BAT(, 26525) +HANDLE_BAT(, 26526) +HANDLE_BAT(, 26527) +HANDLE_BAT(, 26528) +HANDLE_BAT(, 26529) +HANDLE_BAT(, 26530) +HANDLE_BAT(, 26531) +HANDLE_BAT(, 26532) +HANDLE_BAT(, 26533) +HANDLE_BAT(, 26534) +HANDLE_BAT(, 26535) +HANDLE_BAT(, 26536) +HANDLE_BAT(, 26537) +HANDLE_BAT(, 26538) +HANDLE_BAT(, 26539) +HANDLE_BAT(, 26540) +HANDLE_BAT(, 26541) +HANDLE_BAT(, 26542) +HANDLE_BAT(, 26543) +HANDLE_BAT(, 26544) +HANDLE_BAT(, 26545) +HANDLE_BAT(, 26546) +HANDLE_BAT(, 26547) +HANDLE_BAT(, 26548) +HANDLE_BAT(, 26549) +HANDLE_BAT(, 26550) +HANDLE_BAT(, 26551) +HANDLE_BAT(, 26552) +HANDLE_BAT(, 26553) +HANDLE_BAT(, 26554) +HANDLE_BAT(, 26555) +HANDLE_BAT(, 26556) +HANDLE_BAT(, 26557) +HANDLE_BAT(, 26558) +HANDLE_BAT(, 26559) +HANDLE_BAT(, 26560) +HANDLE_BAT(, 26561) +HANDLE_BAT(, 26562) +HANDLE_BAT(, 26563) +HANDLE_BAT(, 26564) +HANDLE_BAT(, 26565) +HANDLE_BAT(, 26566) +HANDLE_BAT(, 26567) +HANDLE_BAT(, 26568) +HANDLE_BAT(, 26569) +HANDLE_BAT(, 26570) +HANDLE_BAT(, 26571) +HANDLE_BAT(, 26572) +HANDLE_BAT(, 26573) +HANDLE_BAT(, 26574) +HANDLE_BAT(, 26575) +HANDLE_BAT(, 26576) +HANDLE_BAT(, 26577) +HANDLE_BAT(, 26578) +HANDLE_BAT(, 26579) +HANDLE_BAT(, 26580) +HANDLE_BAT(, 26581) +HANDLE_BAT(, 26582) +HANDLE_BAT(, 26583) +HANDLE_BAT(, 26584) +HANDLE_BAT(, 26585) +HANDLE_BAT(, 26586) +HANDLE_BAT(, 26587) +HANDLE_BAT(, 26588) +HANDLE_BAT(, 26589) +HANDLE_BAT(, 26590) +HANDLE_BAT(, 26591) +HANDLE_BAT(, 26592) +HANDLE_BAT(, 26593) +HANDLE_BAT(, 26594) +HANDLE_BAT(, 26595) +HANDLE_BAT(, 26596) +HANDLE_BAT(, 26597) +HANDLE_BAT(, 26598) +HANDLE_BAT(, 26599) +HANDLE_BAT(, 26600) +HANDLE_BAT(, 26601) +HANDLE_BAT(, 26602) +HANDLE_BAT(, 26603) +HANDLE_BAT(, 26604) +HANDLE_BAT(, 26605) +HANDLE_BAT(, 26606) +HANDLE_BAT(, 26607) +HANDLE_BAT(, 26608) +HANDLE_BAT(, 26609) +HANDLE_BAT(, 26610) +HANDLE_BAT(, 26611) +HANDLE_BAT(, 26612) +HANDLE_BAT(, 26613) +HANDLE_BAT(, 26614) +HANDLE_BAT(, 26615) +HANDLE_BAT(, 26616) +HANDLE_BAT(, 26617) +HANDLE_BAT(, 26618) +HANDLE_BAT(, 26619) +HANDLE_BAT(, 26620) +HANDLE_BAT(, 26621) +HANDLE_BAT(, 26622) +HANDLE_BAT(, 26623) +HANDLE_BAT(, 26624) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 25601) +HANDLE_BAT(APINT_TYPE_PREFIX, 25602) +HANDLE_BAT(APINT_TYPE_PREFIX, 25603) +HANDLE_BAT(APINT_TYPE_PREFIX, 25604) +HANDLE_BAT(APINT_TYPE_PREFIX, 25605) +HANDLE_BAT(APINT_TYPE_PREFIX, 25606) +HANDLE_BAT(APINT_TYPE_PREFIX, 25607) +HANDLE_BAT(APINT_TYPE_PREFIX, 25608) +HANDLE_BAT(APINT_TYPE_PREFIX, 25609) +HANDLE_BAT(APINT_TYPE_PREFIX, 25610) +HANDLE_BAT(APINT_TYPE_PREFIX, 25611) +HANDLE_BAT(APINT_TYPE_PREFIX, 25612) +HANDLE_BAT(APINT_TYPE_PREFIX, 25613) +HANDLE_BAT(APINT_TYPE_PREFIX, 25614) +HANDLE_BAT(APINT_TYPE_PREFIX, 25615) +HANDLE_BAT(APINT_TYPE_PREFIX, 25616) +HANDLE_BAT(APINT_TYPE_PREFIX, 25617) +HANDLE_BAT(APINT_TYPE_PREFIX, 25618) +HANDLE_BAT(APINT_TYPE_PREFIX, 25619) +HANDLE_BAT(APINT_TYPE_PREFIX, 25620) +HANDLE_BAT(APINT_TYPE_PREFIX, 25621) +HANDLE_BAT(APINT_TYPE_PREFIX, 25622) +HANDLE_BAT(APINT_TYPE_PREFIX, 25623) +HANDLE_BAT(APINT_TYPE_PREFIX, 25624) +HANDLE_BAT(APINT_TYPE_PREFIX, 25625) +HANDLE_BAT(APINT_TYPE_PREFIX, 25626) +HANDLE_BAT(APINT_TYPE_PREFIX, 25627) +HANDLE_BAT(APINT_TYPE_PREFIX, 25628) +HANDLE_BAT(APINT_TYPE_PREFIX, 25629) +HANDLE_BAT(APINT_TYPE_PREFIX, 25630) +HANDLE_BAT(APINT_TYPE_PREFIX, 25631) +HANDLE_BAT(APINT_TYPE_PREFIX, 25632) +HANDLE_BAT(APINT_TYPE_PREFIX, 25633) +HANDLE_BAT(APINT_TYPE_PREFIX, 25634) +HANDLE_BAT(APINT_TYPE_PREFIX, 25635) +HANDLE_BAT(APINT_TYPE_PREFIX, 25636) +HANDLE_BAT(APINT_TYPE_PREFIX, 25637) +HANDLE_BAT(APINT_TYPE_PREFIX, 25638) +HANDLE_BAT(APINT_TYPE_PREFIX, 25639) +HANDLE_BAT(APINT_TYPE_PREFIX, 25640) +HANDLE_BAT(APINT_TYPE_PREFIX, 25641) +HANDLE_BAT(APINT_TYPE_PREFIX, 25642) +HANDLE_BAT(APINT_TYPE_PREFIX, 25643) +HANDLE_BAT(APINT_TYPE_PREFIX, 25644) +HANDLE_BAT(APINT_TYPE_PREFIX, 25645) +HANDLE_BAT(APINT_TYPE_PREFIX, 25646) +HANDLE_BAT(APINT_TYPE_PREFIX, 25647) +HANDLE_BAT(APINT_TYPE_PREFIX, 25648) +HANDLE_BAT(APINT_TYPE_PREFIX, 25649) +HANDLE_BAT(APINT_TYPE_PREFIX, 25650) +HANDLE_BAT(APINT_TYPE_PREFIX, 25651) +HANDLE_BAT(APINT_TYPE_PREFIX, 25652) +HANDLE_BAT(APINT_TYPE_PREFIX, 25653) +HANDLE_BAT(APINT_TYPE_PREFIX, 25654) +HANDLE_BAT(APINT_TYPE_PREFIX, 25655) +HANDLE_BAT(APINT_TYPE_PREFIX, 25656) +HANDLE_BAT(APINT_TYPE_PREFIX, 25657) +HANDLE_BAT(APINT_TYPE_PREFIX, 25658) +HANDLE_BAT(APINT_TYPE_PREFIX, 25659) +HANDLE_BAT(APINT_TYPE_PREFIX, 25660) +HANDLE_BAT(APINT_TYPE_PREFIX, 25661) +HANDLE_BAT(APINT_TYPE_PREFIX, 25662) +HANDLE_BAT(APINT_TYPE_PREFIX, 25663) +HANDLE_BAT(APINT_TYPE_PREFIX, 25664) +HANDLE_BAT(APINT_TYPE_PREFIX, 25665) +HANDLE_BAT(APINT_TYPE_PREFIX, 25666) +HANDLE_BAT(APINT_TYPE_PREFIX, 25667) +HANDLE_BAT(APINT_TYPE_PREFIX, 25668) +HANDLE_BAT(APINT_TYPE_PREFIX, 25669) +HANDLE_BAT(APINT_TYPE_PREFIX, 25670) +HANDLE_BAT(APINT_TYPE_PREFIX, 25671) +HANDLE_BAT(APINT_TYPE_PREFIX, 25672) +HANDLE_BAT(APINT_TYPE_PREFIX, 25673) +HANDLE_BAT(APINT_TYPE_PREFIX, 25674) +HANDLE_BAT(APINT_TYPE_PREFIX, 25675) +HANDLE_BAT(APINT_TYPE_PREFIX, 25676) +HANDLE_BAT(APINT_TYPE_PREFIX, 25677) +HANDLE_BAT(APINT_TYPE_PREFIX, 25678) +HANDLE_BAT(APINT_TYPE_PREFIX, 25679) +HANDLE_BAT(APINT_TYPE_PREFIX, 25680) +HANDLE_BAT(APINT_TYPE_PREFIX, 25681) +HANDLE_BAT(APINT_TYPE_PREFIX, 25682) +HANDLE_BAT(APINT_TYPE_PREFIX, 25683) +HANDLE_BAT(APINT_TYPE_PREFIX, 25684) +HANDLE_BAT(APINT_TYPE_PREFIX, 25685) +HANDLE_BAT(APINT_TYPE_PREFIX, 25686) +HANDLE_BAT(APINT_TYPE_PREFIX, 25687) +HANDLE_BAT(APINT_TYPE_PREFIX, 25688) +HANDLE_BAT(APINT_TYPE_PREFIX, 25689) +HANDLE_BAT(APINT_TYPE_PREFIX, 25690) +HANDLE_BAT(APINT_TYPE_PREFIX, 25691) +HANDLE_BAT(APINT_TYPE_PREFIX, 25692) +HANDLE_BAT(APINT_TYPE_PREFIX, 25693) +HANDLE_BAT(APINT_TYPE_PREFIX, 25694) +HANDLE_BAT(APINT_TYPE_PREFIX, 25695) +HANDLE_BAT(APINT_TYPE_PREFIX, 25696) +HANDLE_BAT(APINT_TYPE_PREFIX, 25697) +HANDLE_BAT(APINT_TYPE_PREFIX, 25698) +HANDLE_BAT(APINT_TYPE_PREFIX, 25699) +HANDLE_BAT(APINT_TYPE_PREFIX, 25700) +HANDLE_BAT(APINT_TYPE_PREFIX, 25701) +HANDLE_BAT(APINT_TYPE_PREFIX, 25702) +HANDLE_BAT(APINT_TYPE_PREFIX, 25703) +HANDLE_BAT(APINT_TYPE_PREFIX, 25704) +HANDLE_BAT(APINT_TYPE_PREFIX, 25705) +HANDLE_BAT(APINT_TYPE_PREFIX, 25706) +HANDLE_BAT(APINT_TYPE_PREFIX, 25707) +HANDLE_BAT(APINT_TYPE_PREFIX, 25708) +HANDLE_BAT(APINT_TYPE_PREFIX, 25709) +HANDLE_BAT(APINT_TYPE_PREFIX, 25710) +HANDLE_BAT(APINT_TYPE_PREFIX, 25711) +HANDLE_BAT(APINT_TYPE_PREFIX, 25712) +HANDLE_BAT(APINT_TYPE_PREFIX, 25713) +HANDLE_BAT(APINT_TYPE_PREFIX, 25714) +HANDLE_BAT(APINT_TYPE_PREFIX, 25715) +HANDLE_BAT(APINT_TYPE_PREFIX, 25716) +HANDLE_BAT(APINT_TYPE_PREFIX, 25717) +HANDLE_BAT(APINT_TYPE_PREFIX, 25718) +HANDLE_BAT(APINT_TYPE_PREFIX, 25719) +HANDLE_BAT(APINT_TYPE_PREFIX, 25720) +HANDLE_BAT(APINT_TYPE_PREFIX, 25721) +HANDLE_BAT(APINT_TYPE_PREFIX, 25722) +HANDLE_BAT(APINT_TYPE_PREFIX, 25723) +HANDLE_BAT(APINT_TYPE_PREFIX, 25724) +HANDLE_BAT(APINT_TYPE_PREFIX, 25725) +HANDLE_BAT(APINT_TYPE_PREFIX, 25726) +HANDLE_BAT(APINT_TYPE_PREFIX, 25727) +HANDLE_BAT(APINT_TYPE_PREFIX, 25728) +HANDLE_BAT(APINT_TYPE_PREFIX, 25729) +HANDLE_BAT(APINT_TYPE_PREFIX, 25730) +HANDLE_BAT(APINT_TYPE_PREFIX, 25731) +HANDLE_BAT(APINT_TYPE_PREFIX, 25732) +HANDLE_BAT(APINT_TYPE_PREFIX, 25733) +HANDLE_BAT(APINT_TYPE_PREFIX, 25734) +HANDLE_BAT(APINT_TYPE_PREFIX, 25735) +HANDLE_BAT(APINT_TYPE_PREFIX, 25736) +HANDLE_BAT(APINT_TYPE_PREFIX, 25737) +HANDLE_BAT(APINT_TYPE_PREFIX, 25738) +HANDLE_BAT(APINT_TYPE_PREFIX, 25739) +HANDLE_BAT(APINT_TYPE_PREFIX, 25740) +HANDLE_BAT(APINT_TYPE_PREFIX, 25741) +HANDLE_BAT(APINT_TYPE_PREFIX, 25742) +HANDLE_BAT(APINT_TYPE_PREFIX, 25743) +HANDLE_BAT(APINT_TYPE_PREFIX, 25744) +HANDLE_BAT(APINT_TYPE_PREFIX, 25745) +HANDLE_BAT(APINT_TYPE_PREFIX, 25746) +HANDLE_BAT(APINT_TYPE_PREFIX, 25747) +HANDLE_BAT(APINT_TYPE_PREFIX, 25748) +HANDLE_BAT(APINT_TYPE_PREFIX, 25749) +HANDLE_BAT(APINT_TYPE_PREFIX, 25750) +HANDLE_BAT(APINT_TYPE_PREFIX, 25751) +HANDLE_BAT(APINT_TYPE_PREFIX, 25752) +HANDLE_BAT(APINT_TYPE_PREFIX, 25753) +HANDLE_BAT(APINT_TYPE_PREFIX, 25754) +HANDLE_BAT(APINT_TYPE_PREFIX, 25755) +HANDLE_BAT(APINT_TYPE_PREFIX, 25756) +HANDLE_BAT(APINT_TYPE_PREFIX, 25757) +HANDLE_BAT(APINT_TYPE_PREFIX, 25758) +HANDLE_BAT(APINT_TYPE_PREFIX, 25759) +HANDLE_BAT(APINT_TYPE_PREFIX, 25760) +HANDLE_BAT(APINT_TYPE_PREFIX, 25761) +HANDLE_BAT(APINT_TYPE_PREFIX, 25762) +HANDLE_BAT(APINT_TYPE_PREFIX, 25763) +HANDLE_BAT(APINT_TYPE_PREFIX, 25764) +HANDLE_BAT(APINT_TYPE_PREFIX, 25765) +HANDLE_BAT(APINT_TYPE_PREFIX, 25766) +HANDLE_BAT(APINT_TYPE_PREFIX, 25767) +HANDLE_BAT(APINT_TYPE_PREFIX, 25768) +HANDLE_BAT(APINT_TYPE_PREFIX, 25769) +HANDLE_BAT(APINT_TYPE_PREFIX, 25770) +HANDLE_BAT(APINT_TYPE_PREFIX, 25771) +HANDLE_BAT(APINT_TYPE_PREFIX, 25772) +HANDLE_BAT(APINT_TYPE_PREFIX, 25773) +HANDLE_BAT(APINT_TYPE_PREFIX, 25774) +HANDLE_BAT(APINT_TYPE_PREFIX, 25775) +HANDLE_BAT(APINT_TYPE_PREFIX, 25776) +HANDLE_BAT(APINT_TYPE_PREFIX, 25777) +HANDLE_BAT(APINT_TYPE_PREFIX, 25778) +HANDLE_BAT(APINT_TYPE_PREFIX, 25779) +HANDLE_BAT(APINT_TYPE_PREFIX, 25780) +HANDLE_BAT(APINT_TYPE_PREFIX, 25781) +HANDLE_BAT(APINT_TYPE_PREFIX, 25782) +HANDLE_BAT(APINT_TYPE_PREFIX, 25783) +HANDLE_BAT(APINT_TYPE_PREFIX, 25784) +HANDLE_BAT(APINT_TYPE_PREFIX, 25785) +HANDLE_BAT(APINT_TYPE_PREFIX, 25786) +HANDLE_BAT(APINT_TYPE_PREFIX, 25787) +HANDLE_BAT(APINT_TYPE_PREFIX, 25788) +HANDLE_BAT(APINT_TYPE_PREFIX, 25789) +HANDLE_BAT(APINT_TYPE_PREFIX, 25790) +HANDLE_BAT(APINT_TYPE_PREFIX, 25791) +HANDLE_BAT(APINT_TYPE_PREFIX, 25792) +HANDLE_BAT(APINT_TYPE_PREFIX, 25793) +HANDLE_BAT(APINT_TYPE_PREFIX, 25794) +HANDLE_BAT(APINT_TYPE_PREFIX, 25795) +HANDLE_BAT(APINT_TYPE_PREFIX, 25796) +HANDLE_BAT(APINT_TYPE_PREFIX, 25797) +HANDLE_BAT(APINT_TYPE_PREFIX, 25798) +HANDLE_BAT(APINT_TYPE_PREFIX, 25799) +HANDLE_BAT(APINT_TYPE_PREFIX, 25800) +HANDLE_BAT(APINT_TYPE_PREFIX, 25801) +HANDLE_BAT(APINT_TYPE_PREFIX, 25802) +HANDLE_BAT(APINT_TYPE_PREFIX, 25803) +HANDLE_BAT(APINT_TYPE_PREFIX, 25804) +HANDLE_BAT(APINT_TYPE_PREFIX, 25805) +HANDLE_BAT(APINT_TYPE_PREFIX, 25806) +HANDLE_BAT(APINT_TYPE_PREFIX, 25807) +HANDLE_BAT(APINT_TYPE_PREFIX, 25808) +HANDLE_BAT(APINT_TYPE_PREFIX, 25809) +HANDLE_BAT(APINT_TYPE_PREFIX, 25810) +HANDLE_BAT(APINT_TYPE_PREFIX, 25811) +HANDLE_BAT(APINT_TYPE_PREFIX, 25812) +HANDLE_BAT(APINT_TYPE_PREFIX, 25813) +HANDLE_BAT(APINT_TYPE_PREFIX, 25814) +HANDLE_BAT(APINT_TYPE_PREFIX, 25815) +HANDLE_BAT(APINT_TYPE_PREFIX, 25816) +HANDLE_BAT(APINT_TYPE_PREFIX, 25817) +HANDLE_BAT(APINT_TYPE_PREFIX, 25818) +HANDLE_BAT(APINT_TYPE_PREFIX, 25819) +HANDLE_BAT(APINT_TYPE_PREFIX, 25820) +HANDLE_BAT(APINT_TYPE_PREFIX, 25821) +HANDLE_BAT(APINT_TYPE_PREFIX, 25822) +HANDLE_BAT(APINT_TYPE_PREFIX, 25823) +HANDLE_BAT(APINT_TYPE_PREFIX, 25824) +HANDLE_BAT(APINT_TYPE_PREFIX, 25825) +HANDLE_BAT(APINT_TYPE_PREFIX, 25826) +HANDLE_BAT(APINT_TYPE_PREFIX, 25827) +HANDLE_BAT(APINT_TYPE_PREFIX, 25828) +HANDLE_BAT(APINT_TYPE_PREFIX, 25829) +HANDLE_BAT(APINT_TYPE_PREFIX, 25830) +HANDLE_BAT(APINT_TYPE_PREFIX, 25831) +HANDLE_BAT(APINT_TYPE_PREFIX, 25832) +HANDLE_BAT(APINT_TYPE_PREFIX, 25833) +HANDLE_BAT(APINT_TYPE_PREFIX, 25834) +HANDLE_BAT(APINT_TYPE_PREFIX, 25835) +HANDLE_BAT(APINT_TYPE_PREFIX, 25836) +HANDLE_BAT(APINT_TYPE_PREFIX, 25837) +HANDLE_BAT(APINT_TYPE_PREFIX, 25838) +HANDLE_BAT(APINT_TYPE_PREFIX, 25839) +HANDLE_BAT(APINT_TYPE_PREFIX, 25840) +HANDLE_BAT(APINT_TYPE_PREFIX, 25841) +HANDLE_BAT(APINT_TYPE_PREFIX, 25842) +HANDLE_BAT(APINT_TYPE_PREFIX, 25843) +HANDLE_BAT(APINT_TYPE_PREFIX, 25844) +HANDLE_BAT(APINT_TYPE_PREFIX, 25845) +HANDLE_BAT(APINT_TYPE_PREFIX, 25846) +HANDLE_BAT(APINT_TYPE_PREFIX, 25847) +HANDLE_BAT(APINT_TYPE_PREFIX, 25848) +HANDLE_BAT(APINT_TYPE_PREFIX, 25849) +HANDLE_BAT(APINT_TYPE_PREFIX, 25850) +HANDLE_BAT(APINT_TYPE_PREFIX, 25851) +HANDLE_BAT(APINT_TYPE_PREFIX, 25852) +HANDLE_BAT(APINT_TYPE_PREFIX, 25853) +HANDLE_BAT(APINT_TYPE_PREFIX, 25854) +HANDLE_BAT(APINT_TYPE_PREFIX, 25855) +HANDLE_BAT(APINT_TYPE_PREFIX, 25856) +HANDLE_BAT(APINT_TYPE_PREFIX, 25857) +HANDLE_BAT(APINT_TYPE_PREFIX, 25858) +HANDLE_BAT(APINT_TYPE_PREFIX, 25859) +HANDLE_BAT(APINT_TYPE_PREFIX, 25860) +HANDLE_BAT(APINT_TYPE_PREFIX, 25861) +HANDLE_BAT(APINT_TYPE_PREFIX, 25862) +HANDLE_BAT(APINT_TYPE_PREFIX, 25863) +HANDLE_BAT(APINT_TYPE_PREFIX, 25864) +HANDLE_BAT(APINT_TYPE_PREFIX, 25865) +HANDLE_BAT(APINT_TYPE_PREFIX, 25866) +HANDLE_BAT(APINT_TYPE_PREFIX, 25867) +HANDLE_BAT(APINT_TYPE_PREFIX, 25868) +HANDLE_BAT(APINT_TYPE_PREFIX, 25869) +HANDLE_BAT(APINT_TYPE_PREFIX, 25870) +HANDLE_BAT(APINT_TYPE_PREFIX, 25871) +HANDLE_BAT(APINT_TYPE_PREFIX, 25872) +HANDLE_BAT(APINT_TYPE_PREFIX, 25873) +HANDLE_BAT(APINT_TYPE_PREFIX, 25874) +HANDLE_BAT(APINT_TYPE_PREFIX, 25875) +HANDLE_BAT(APINT_TYPE_PREFIX, 25876) +HANDLE_BAT(APINT_TYPE_PREFIX, 25877) +HANDLE_BAT(APINT_TYPE_PREFIX, 25878) +HANDLE_BAT(APINT_TYPE_PREFIX, 25879) +HANDLE_BAT(APINT_TYPE_PREFIX, 25880) +HANDLE_BAT(APINT_TYPE_PREFIX, 25881) +HANDLE_BAT(APINT_TYPE_PREFIX, 25882) +HANDLE_BAT(APINT_TYPE_PREFIX, 25883) +HANDLE_BAT(APINT_TYPE_PREFIX, 25884) +HANDLE_BAT(APINT_TYPE_PREFIX, 25885) +HANDLE_BAT(APINT_TYPE_PREFIX, 25886) +HANDLE_BAT(APINT_TYPE_PREFIX, 25887) +HANDLE_BAT(APINT_TYPE_PREFIX, 25888) +HANDLE_BAT(APINT_TYPE_PREFIX, 25889) +HANDLE_BAT(APINT_TYPE_PREFIX, 25890) +HANDLE_BAT(APINT_TYPE_PREFIX, 25891) +HANDLE_BAT(APINT_TYPE_PREFIX, 25892) +HANDLE_BAT(APINT_TYPE_PREFIX, 25893) +HANDLE_BAT(APINT_TYPE_PREFIX, 25894) +HANDLE_BAT(APINT_TYPE_PREFIX, 25895) +HANDLE_BAT(APINT_TYPE_PREFIX, 25896) +HANDLE_BAT(APINT_TYPE_PREFIX, 25897) +HANDLE_BAT(APINT_TYPE_PREFIX, 25898) +HANDLE_BAT(APINT_TYPE_PREFIX, 25899) +HANDLE_BAT(APINT_TYPE_PREFIX, 25900) +HANDLE_BAT(APINT_TYPE_PREFIX, 25901) +HANDLE_BAT(APINT_TYPE_PREFIX, 25902) +HANDLE_BAT(APINT_TYPE_PREFIX, 25903) +HANDLE_BAT(APINT_TYPE_PREFIX, 25904) +HANDLE_BAT(APINT_TYPE_PREFIX, 25905) +HANDLE_BAT(APINT_TYPE_PREFIX, 25906) +HANDLE_BAT(APINT_TYPE_PREFIX, 25907) +HANDLE_BAT(APINT_TYPE_PREFIX, 25908) +HANDLE_BAT(APINT_TYPE_PREFIX, 25909) +HANDLE_BAT(APINT_TYPE_PREFIX, 25910) +HANDLE_BAT(APINT_TYPE_PREFIX, 25911) +HANDLE_BAT(APINT_TYPE_PREFIX, 25912) +HANDLE_BAT(APINT_TYPE_PREFIX, 25913) +HANDLE_BAT(APINT_TYPE_PREFIX, 25914) +HANDLE_BAT(APINT_TYPE_PREFIX, 25915) +HANDLE_BAT(APINT_TYPE_PREFIX, 25916) +HANDLE_BAT(APINT_TYPE_PREFIX, 25917) +HANDLE_BAT(APINT_TYPE_PREFIX, 25918) +HANDLE_BAT(APINT_TYPE_PREFIX, 25919) +HANDLE_BAT(APINT_TYPE_PREFIX, 25920) +HANDLE_BAT(APINT_TYPE_PREFIX, 25921) +HANDLE_BAT(APINT_TYPE_PREFIX, 25922) +HANDLE_BAT(APINT_TYPE_PREFIX, 25923) +HANDLE_BAT(APINT_TYPE_PREFIX, 25924) +HANDLE_BAT(APINT_TYPE_PREFIX, 25925) +HANDLE_BAT(APINT_TYPE_PREFIX, 25926) +HANDLE_BAT(APINT_TYPE_PREFIX, 25927) +HANDLE_BAT(APINT_TYPE_PREFIX, 25928) +HANDLE_BAT(APINT_TYPE_PREFIX, 25929) +HANDLE_BAT(APINT_TYPE_PREFIX, 25930) +HANDLE_BAT(APINT_TYPE_PREFIX, 25931) +HANDLE_BAT(APINT_TYPE_PREFIX, 25932) +HANDLE_BAT(APINT_TYPE_PREFIX, 25933) +HANDLE_BAT(APINT_TYPE_PREFIX, 25934) +HANDLE_BAT(APINT_TYPE_PREFIX, 25935) +HANDLE_BAT(APINT_TYPE_PREFIX, 25936) +HANDLE_BAT(APINT_TYPE_PREFIX, 25937) +HANDLE_BAT(APINT_TYPE_PREFIX, 25938) +HANDLE_BAT(APINT_TYPE_PREFIX, 25939) +HANDLE_BAT(APINT_TYPE_PREFIX, 25940) +HANDLE_BAT(APINT_TYPE_PREFIX, 25941) +HANDLE_BAT(APINT_TYPE_PREFIX, 25942) +HANDLE_BAT(APINT_TYPE_PREFIX, 25943) +HANDLE_BAT(APINT_TYPE_PREFIX, 25944) +HANDLE_BAT(APINT_TYPE_PREFIX, 25945) +HANDLE_BAT(APINT_TYPE_PREFIX, 25946) +HANDLE_BAT(APINT_TYPE_PREFIX, 25947) +HANDLE_BAT(APINT_TYPE_PREFIX, 25948) +HANDLE_BAT(APINT_TYPE_PREFIX, 25949) +HANDLE_BAT(APINT_TYPE_PREFIX, 25950) +HANDLE_BAT(APINT_TYPE_PREFIX, 25951) +HANDLE_BAT(APINT_TYPE_PREFIX, 25952) +HANDLE_BAT(APINT_TYPE_PREFIX, 25953) +HANDLE_BAT(APINT_TYPE_PREFIX, 25954) +HANDLE_BAT(APINT_TYPE_PREFIX, 25955) +HANDLE_BAT(APINT_TYPE_PREFIX, 25956) +HANDLE_BAT(APINT_TYPE_PREFIX, 25957) +HANDLE_BAT(APINT_TYPE_PREFIX, 25958) +HANDLE_BAT(APINT_TYPE_PREFIX, 25959) +HANDLE_BAT(APINT_TYPE_PREFIX, 25960) +HANDLE_BAT(APINT_TYPE_PREFIX, 25961) +HANDLE_BAT(APINT_TYPE_PREFIX, 25962) +HANDLE_BAT(APINT_TYPE_PREFIX, 25963) +HANDLE_BAT(APINT_TYPE_PREFIX, 25964) +HANDLE_BAT(APINT_TYPE_PREFIX, 25965) +HANDLE_BAT(APINT_TYPE_PREFIX, 25966) +HANDLE_BAT(APINT_TYPE_PREFIX, 25967) +HANDLE_BAT(APINT_TYPE_PREFIX, 25968) +HANDLE_BAT(APINT_TYPE_PREFIX, 25969) +HANDLE_BAT(APINT_TYPE_PREFIX, 25970) +HANDLE_BAT(APINT_TYPE_PREFIX, 25971) +HANDLE_BAT(APINT_TYPE_PREFIX, 25972) +HANDLE_BAT(APINT_TYPE_PREFIX, 25973) +HANDLE_BAT(APINT_TYPE_PREFIX, 25974) +HANDLE_BAT(APINT_TYPE_PREFIX, 25975) +HANDLE_BAT(APINT_TYPE_PREFIX, 25976) +HANDLE_BAT(APINT_TYPE_PREFIX, 25977) +HANDLE_BAT(APINT_TYPE_PREFIX, 25978) +HANDLE_BAT(APINT_TYPE_PREFIX, 25979) +HANDLE_BAT(APINT_TYPE_PREFIX, 25980) +HANDLE_BAT(APINT_TYPE_PREFIX, 25981) +HANDLE_BAT(APINT_TYPE_PREFIX, 25982) +HANDLE_BAT(APINT_TYPE_PREFIX, 25983) +HANDLE_BAT(APINT_TYPE_PREFIX, 25984) +HANDLE_BAT(APINT_TYPE_PREFIX, 25985) +HANDLE_BAT(APINT_TYPE_PREFIX, 25986) +HANDLE_BAT(APINT_TYPE_PREFIX, 25987) +HANDLE_BAT(APINT_TYPE_PREFIX, 25988) +HANDLE_BAT(APINT_TYPE_PREFIX, 25989) +HANDLE_BAT(APINT_TYPE_PREFIX, 25990) +HANDLE_BAT(APINT_TYPE_PREFIX, 25991) +HANDLE_BAT(APINT_TYPE_PREFIX, 25992) +HANDLE_BAT(APINT_TYPE_PREFIX, 25993) +HANDLE_BAT(APINT_TYPE_PREFIX, 25994) +HANDLE_BAT(APINT_TYPE_PREFIX, 25995) +HANDLE_BAT(APINT_TYPE_PREFIX, 25996) +HANDLE_BAT(APINT_TYPE_PREFIX, 25997) +HANDLE_BAT(APINT_TYPE_PREFIX, 25998) +HANDLE_BAT(APINT_TYPE_PREFIX, 25999) +HANDLE_BAT(APINT_TYPE_PREFIX, 26000) +HANDLE_BAT(APINT_TYPE_PREFIX, 26001) +HANDLE_BAT(APINT_TYPE_PREFIX, 26002) +HANDLE_BAT(APINT_TYPE_PREFIX, 26003) +HANDLE_BAT(APINT_TYPE_PREFIX, 26004) +HANDLE_BAT(APINT_TYPE_PREFIX, 26005) +HANDLE_BAT(APINT_TYPE_PREFIX, 26006) +HANDLE_BAT(APINT_TYPE_PREFIX, 26007) +HANDLE_BAT(APINT_TYPE_PREFIX, 26008) +HANDLE_BAT(APINT_TYPE_PREFIX, 26009) +HANDLE_BAT(APINT_TYPE_PREFIX, 26010) +HANDLE_BAT(APINT_TYPE_PREFIX, 26011) +HANDLE_BAT(APINT_TYPE_PREFIX, 26012) +HANDLE_BAT(APINT_TYPE_PREFIX, 26013) +HANDLE_BAT(APINT_TYPE_PREFIX, 26014) +HANDLE_BAT(APINT_TYPE_PREFIX, 26015) +HANDLE_BAT(APINT_TYPE_PREFIX, 26016) +HANDLE_BAT(APINT_TYPE_PREFIX, 26017) +HANDLE_BAT(APINT_TYPE_PREFIX, 26018) +HANDLE_BAT(APINT_TYPE_PREFIX, 26019) +HANDLE_BAT(APINT_TYPE_PREFIX, 26020) +HANDLE_BAT(APINT_TYPE_PREFIX, 26021) +HANDLE_BAT(APINT_TYPE_PREFIX, 26022) +HANDLE_BAT(APINT_TYPE_PREFIX, 26023) +HANDLE_BAT(APINT_TYPE_PREFIX, 26024) +HANDLE_BAT(APINT_TYPE_PREFIX, 26025) +HANDLE_BAT(APINT_TYPE_PREFIX, 26026) +HANDLE_BAT(APINT_TYPE_PREFIX, 26027) +HANDLE_BAT(APINT_TYPE_PREFIX, 26028) +HANDLE_BAT(APINT_TYPE_PREFIX, 26029) +HANDLE_BAT(APINT_TYPE_PREFIX, 26030) +HANDLE_BAT(APINT_TYPE_PREFIX, 26031) +HANDLE_BAT(APINT_TYPE_PREFIX, 26032) +HANDLE_BAT(APINT_TYPE_PREFIX, 26033) +HANDLE_BAT(APINT_TYPE_PREFIX, 26034) +HANDLE_BAT(APINT_TYPE_PREFIX, 26035) +HANDLE_BAT(APINT_TYPE_PREFIX, 26036) +HANDLE_BAT(APINT_TYPE_PREFIX, 26037) +HANDLE_BAT(APINT_TYPE_PREFIX, 26038) +HANDLE_BAT(APINT_TYPE_PREFIX, 26039) +HANDLE_BAT(APINT_TYPE_PREFIX, 26040) +HANDLE_BAT(APINT_TYPE_PREFIX, 26041) +HANDLE_BAT(APINT_TYPE_PREFIX, 26042) +HANDLE_BAT(APINT_TYPE_PREFIX, 26043) +HANDLE_BAT(APINT_TYPE_PREFIX, 26044) +HANDLE_BAT(APINT_TYPE_PREFIX, 26045) +HANDLE_BAT(APINT_TYPE_PREFIX, 26046) +HANDLE_BAT(APINT_TYPE_PREFIX, 26047) +HANDLE_BAT(APINT_TYPE_PREFIX, 26048) +HANDLE_BAT(APINT_TYPE_PREFIX, 26049) +HANDLE_BAT(APINT_TYPE_PREFIX, 26050) +HANDLE_BAT(APINT_TYPE_PREFIX, 26051) +HANDLE_BAT(APINT_TYPE_PREFIX, 26052) +HANDLE_BAT(APINT_TYPE_PREFIX, 26053) +HANDLE_BAT(APINT_TYPE_PREFIX, 26054) +HANDLE_BAT(APINT_TYPE_PREFIX, 26055) +HANDLE_BAT(APINT_TYPE_PREFIX, 26056) +HANDLE_BAT(APINT_TYPE_PREFIX, 26057) +HANDLE_BAT(APINT_TYPE_PREFIX, 26058) +HANDLE_BAT(APINT_TYPE_PREFIX, 26059) +HANDLE_BAT(APINT_TYPE_PREFIX, 26060) +HANDLE_BAT(APINT_TYPE_PREFIX, 26061) +HANDLE_BAT(APINT_TYPE_PREFIX, 26062) +HANDLE_BAT(APINT_TYPE_PREFIX, 26063) +HANDLE_BAT(APINT_TYPE_PREFIX, 26064) +HANDLE_BAT(APINT_TYPE_PREFIX, 26065) +HANDLE_BAT(APINT_TYPE_PREFIX, 26066) +HANDLE_BAT(APINT_TYPE_PREFIX, 26067) +HANDLE_BAT(APINT_TYPE_PREFIX, 26068) +HANDLE_BAT(APINT_TYPE_PREFIX, 26069) +HANDLE_BAT(APINT_TYPE_PREFIX, 26070) +HANDLE_BAT(APINT_TYPE_PREFIX, 26071) +HANDLE_BAT(APINT_TYPE_PREFIX, 26072) +HANDLE_BAT(APINT_TYPE_PREFIX, 26073) +HANDLE_BAT(APINT_TYPE_PREFIX, 26074) +HANDLE_BAT(APINT_TYPE_PREFIX, 26075) +HANDLE_BAT(APINT_TYPE_PREFIX, 26076) +HANDLE_BAT(APINT_TYPE_PREFIX, 26077) +HANDLE_BAT(APINT_TYPE_PREFIX, 26078) +HANDLE_BAT(APINT_TYPE_PREFIX, 26079) +HANDLE_BAT(APINT_TYPE_PREFIX, 26080) +HANDLE_BAT(APINT_TYPE_PREFIX, 26081) +HANDLE_BAT(APINT_TYPE_PREFIX, 26082) +HANDLE_BAT(APINT_TYPE_PREFIX, 26083) +HANDLE_BAT(APINT_TYPE_PREFIX, 26084) +HANDLE_BAT(APINT_TYPE_PREFIX, 26085) +HANDLE_BAT(APINT_TYPE_PREFIX, 26086) +HANDLE_BAT(APINT_TYPE_PREFIX, 26087) +HANDLE_BAT(APINT_TYPE_PREFIX, 26088) +HANDLE_BAT(APINT_TYPE_PREFIX, 26089) +HANDLE_BAT(APINT_TYPE_PREFIX, 26090) +HANDLE_BAT(APINT_TYPE_PREFIX, 26091) +HANDLE_BAT(APINT_TYPE_PREFIX, 26092) +HANDLE_BAT(APINT_TYPE_PREFIX, 26093) +HANDLE_BAT(APINT_TYPE_PREFIX, 26094) +HANDLE_BAT(APINT_TYPE_PREFIX, 26095) +HANDLE_BAT(APINT_TYPE_PREFIX, 26096) +HANDLE_BAT(APINT_TYPE_PREFIX, 26097) +HANDLE_BAT(APINT_TYPE_PREFIX, 26098) +HANDLE_BAT(APINT_TYPE_PREFIX, 26099) +HANDLE_BAT(APINT_TYPE_PREFIX, 26100) +HANDLE_BAT(APINT_TYPE_PREFIX, 26101) +HANDLE_BAT(APINT_TYPE_PREFIX, 26102) +HANDLE_BAT(APINT_TYPE_PREFIX, 26103) +HANDLE_BAT(APINT_TYPE_PREFIX, 26104) +HANDLE_BAT(APINT_TYPE_PREFIX, 26105) +HANDLE_BAT(APINT_TYPE_PREFIX, 26106) +HANDLE_BAT(APINT_TYPE_PREFIX, 26107) +HANDLE_BAT(APINT_TYPE_PREFIX, 26108) +HANDLE_BAT(APINT_TYPE_PREFIX, 26109) +HANDLE_BAT(APINT_TYPE_PREFIX, 26110) +HANDLE_BAT(APINT_TYPE_PREFIX, 26111) +HANDLE_BAT(APINT_TYPE_PREFIX, 26112) +HANDLE_BAT(APINT_TYPE_PREFIX, 26113) +HANDLE_BAT(APINT_TYPE_PREFIX, 26114) +HANDLE_BAT(APINT_TYPE_PREFIX, 26115) +HANDLE_BAT(APINT_TYPE_PREFIX, 26116) +HANDLE_BAT(APINT_TYPE_PREFIX, 26117) +HANDLE_BAT(APINT_TYPE_PREFIX, 26118) +HANDLE_BAT(APINT_TYPE_PREFIX, 26119) +HANDLE_BAT(APINT_TYPE_PREFIX, 26120) +HANDLE_BAT(APINT_TYPE_PREFIX, 26121) +HANDLE_BAT(APINT_TYPE_PREFIX, 26122) +HANDLE_BAT(APINT_TYPE_PREFIX, 26123) +HANDLE_BAT(APINT_TYPE_PREFIX, 26124) +HANDLE_BAT(APINT_TYPE_PREFIX, 26125) +HANDLE_BAT(APINT_TYPE_PREFIX, 26126) +HANDLE_BAT(APINT_TYPE_PREFIX, 26127) +HANDLE_BAT(APINT_TYPE_PREFIX, 26128) +HANDLE_BAT(APINT_TYPE_PREFIX, 26129) +HANDLE_BAT(APINT_TYPE_PREFIX, 26130) +HANDLE_BAT(APINT_TYPE_PREFIX, 26131) +HANDLE_BAT(APINT_TYPE_PREFIX, 26132) +HANDLE_BAT(APINT_TYPE_PREFIX, 26133) +HANDLE_BAT(APINT_TYPE_PREFIX, 26134) +HANDLE_BAT(APINT_TYPE_PREFIX, 26135) +HANDLE_BAT(APINT_TYPE_PREFIX, 26136) +HANDLE_BAT(APINT_TYPE_PREFIX, 26137) +HANDLE_BAT(APINT_TYPE_PREFIX, 26138) +HANDLE_BAT(APINT_TYPE_PREFIX, 26139) +HANDLE_BAT(APINT_TYPE_PREFIX, 26140) +HANDLE_BAT(APINT_TYPE_PREFIX, 26141) +HANDLE_BAT(APINT_TYPE_PREFIX, 26142) +HANDLE_BAT(APINT_TYPE_PREFIX, 26143) +HANDLE_BAT(APINT_TYPE_PREFIX, 26144) +HANDLE_BAT(APINT_TYPE_PREFIX, 26145) +HANDLE_BAT(APINT_TYPE_PREFIX, 26146) +HANDLE_BAT(APINT_TYPE_PREFIX, 26147) +HANDLE_BAT(APINT_TYPE_PREFIX, 26148) +HANDLE_BAT(APINT_TYPE_PREFIX, 26149) +HANDLE_BAT(APINT_TYPE_PREFIX, 26150) +HANDLE_BAT(APINT_TYPE_PREFIX, 26151) +HANDLE_BAT(APINT_TYPE_PREFIX, 26152) +HANDLE_BAT(APINT_TYPE_PREFIX, 26153) +HANDLE_BAT(APINT_TYPE_PREFIX, 26154) +HANDLE_BAT(APINT_TYPE_PREFIX, 26155) +HANDLE_BAT(APINT_TYPE_PREFIX, 26156) +HANDLE_BAT(APINT_TYPE_PREFIX, 26157) +HANDLE_BAT(APINT_TYPE_PREFIX, 26158) +HANDLE_BAT(APINT_TYPE_PREFIX, 26159) +HANDLE_BAT(APINT_TYPE_PREFIX, 26160) +HANDLE_BAT(APINT_TYPE_PREFIX, 26161) +HANDLE_BAT(APINT_TYPE_PREFIX, 26162) +HANDLE_BAT(APINT_TYPE_PREFIX, 26163) +HANDLE_BAT(APINT_TYPE_PREFIX, 26164) +HANDLE_BAT(APINT_TYPE_PREFIX, 26165) +HANDLE_BAT(APINT_TYPE_PREFIX, 26166) +HANDLE_BAT(APINT_TYPE_PREFIX, 26167) +HANDLE_BAT(APINT_TYPE_PREFIX, 26168) +HANDLE_BAT(APINT_TYPE_PREFIX, 26169) +HANDLE_BAT(APINT_TYPE_PREFIX, 26170) +HANDLE_BAT(APINT_TYPE_PREFIX, 26171) +HANDLE_BAT(APINT_TYPE_PREFIX, 26172) +HANDLE_BAT(APINT_TYPE_PREFIX, 26173) +HANDLE_BAT(APINT_TYPE_PREFIX, 26174) +HANDLE_BAT(APINT_TYPE_PREFIX, 26175) +HANDLE_BAT(APINT_TYPE_PREFIX, 26176) +HANDLE_BAT(APINT_TYPE_PREFIX, 26177) +HANDLE_BAT(APINT_TYPE_PREFIX, 26178) +HANDLE_BAT(APINT_TYPE_PREFIX, 26179) +HANDLE_BAT(APINT_TYPE_PREFIX, 26180) +HANDLE_BAT(APINT_TYPE_PREFIX, 26181) +HANDLE_BAT(APINT_TYPE_PREFIX, 26182) +HANDLE_BAT(APINT_TYPE_PREFIX, 26183) +HANDLE_BAT(APINT_TYPE_PREFIX, 26184) +HANDLE_BAT(APINT_TYPE_PREFIX, 26185) +HANDLE_BAT(APINT_TYPE_PREFIX, 26186) +HANDLE_BAT(APINT_TYPE_PREFIX, 26187) +HANDLE_BAT(APINT_TYPE_PREFIX, 26188) +HANDLE_BAT(APINT_TYPE_PREFIX, 26189) +HANDLE_BAT(APINT_TYPE_PREFIX, 26190) +HANDLE_BAT(APINT_TYPE_PREFIX, 26191) +HANDLE_BAT(APINT_TYPE_PREFIX, 26192) +HANDLE_BAT(APINT_TYPE_PREFIX, 26193) +HANDLE_BAT(APINT_TYPE_PREFIX, 26194) +HANDLE_BAT(APINT_TYPE_PREFIX, 26195) +HANDLE_BAT(APINT_TYPE_PREFIX, 26196) +HANDLE_BAT(APINT_TYPE_PREFIX, 26197) +HANDLE_BAT(APINT_TYPE_PREFIX, 26198) +HANDLE_BAT(APINT_TYPE_PREFIX, 26199) +HANDLE_BAT(APINT_TYPE_PREFIX, 26200) +HANDLE_BAT(APINT_TYPE_PREFIX, 26201) +HANDLE_BAT(APINT_TYPE_PREFIX, 26202) +HANDLE_BAT(APINT_TYPE_PREFIX, 26203) +HANDLE_BAT(APINT_TYPE_PREFIX, 26204) +HANDLE_BAT(APINT_TYPE_PREFIX, 26205) +HANDLE_BAT(APINT_TYPE_PREFIX, 26206) +HANDLE_BAT(APINT_TYPE_PREFIX, 26207) +HANDLE_BAT(APINT_TYPE_PREFIX, 26208) +HANDLE_BAT(APINT_TYPE_PREFIX, 26209) +HANDLE_BAT(APINT_TYPE_PREFIX, 26210) +HANDLE_BAT(APINT_TYPE_PREFIX, 26211) +HANDLE_BAT(APINT_TYPE_PREFIX, 26212) +HANDLE_BAT(APINT_TYPE_PREFIX, 26213) +HANDLE_BAT(APINT_TYPE_PREFIX, 26214) +HANDLE_BAT(APINT_TYPE_PREFIX, 26215) +HANDLE_BAT(APINT_TYPE_PREFIX, 26216) +HANDLE_BAT(APINT_TYPE_PREFIX, 26217) +HANDLE_BAT(APINT_TYPE_PREFIX, 26218) +HANDLE_BAT(APINT_TYPE_PREFIX, 26219) +HANDLE_BAT(APINT_TYPE_PREFIX, 26220) +HANDLE_BAT(APINT_TYPE_PREFIX, 26221) +HANDLE_BAT(APINT_TYPE_PREFIX, 26222) +HANDLE_BAT(APINT_TYPE_PREFIX, 26223) +HANDLE_BAT(APINT_TYPE_PREFIX, 26224) +HANDLE_BAT(APINT_TYPE_PREFIX, 26225) +HANDLE_BAT(APINT_TYPE_PREFIX, 26226) +HANDLE_BAT(APINT_TYPE_PREFIX, 26227) +HANDLE_BAT(APINT_TYPE_PREFIX, 26228) +HANDLE_BAT(APINT_TYPE_PREFIX, 26229) +HANDLE_BAT(APINT_TYPE_PREFIX, 26230) +HANDLE_BAT(APINT_TYPE_PREFIX, 26231) +HANDLE_BAT(APINT_TYPE_PREFIX, 26232) +HANDLE_BAT(APINT_TYPE_PREFIX, 26233) +HANDLE_BAT(APINT_TYPE_PREFIX, 26234) +HANDLE_BAT(APINT_TYPE_PREFIX, 26235) +HANDLE_BAT(APINT_TYPE_PREFIX, 26236) +HANDLE_BAT(APINT_TYPE_PREFIX, 26237) +HANDLE_BAT(APINT_TYPE_PREFIX, 26238) +HANDLE_BAT(APINT_TYPE_PREFIX, 26239) +HANDLE_BAT(APINT_TYPE_PREFIX, 26240) +HANDLE_BAT(APINT_TYPE_PREFIX, 26241) +HANDLE_BAT(APINT_TYPE_PREFIX, 26242) +HANDLE_BAT(APINT_TYPE_PREFIX, 26243) +HANDLE_BAT(APINT_TYPE_PREFIX, 26244) +HANDLE_BAT(APINT_TYPE_PREFIX, 26245) +HANDLE_BAT(APINT_TYPE_PREFIX, 26246) +HANDLE_BAT(APINT_TYPE_PREFIX, 26247) +HANDLE_BAT(APINT_TYPE_PREFIX, 26248) +HANDLE_BAT(APINT_TYPE_PREFIX, 26249) +HANDLE_BAT(APINT_TYPE_PREFIX, 26250) +HANDLE_BAT(APINT_TYPE_PREFIX, 26251) +HANDLE_BAT(APINT_TYPE_PREFIX, 26252) +HANDLE_BAT(APINT_TYPE_PREFIX, 26253) +HANDLE_BAT(APINT_TYPE_PREFIX, 26254) +HANDLE_BAT(APINT_TYPE_PREFIX, 26255) +HANDLE_BAT(APINT_TYPE_PREFIX, 26256) +HANDLE_BAT(APINT_TYPE_PREFIX, 26257) +HANDLE_BAT(APINT_TYPE_PREFIX, 26258) +HANDLE_BAT(APINT_TYPE_PREFIX, 26259) +HANDLE_BAT(APINT_TYPE_PREFIX, 26260) +HANDLE_BAT(APINT_TYPE_PREFIX, 26261) +HANDLE_BAT(APINT_TYPE_PREFIX, 26262) +HANDLE_BAT(APINT_TYPE_PREFIX, 26263) +HANDLE_BAT(APINT_TYPE_PREFIX, 26264) +HANDLE_BAT(APINT_TYPE_PREFIX, 26265) +HANDLE_BAT(APINT_TYPE_PREFIX, 26266) +HANDLE_BAT(APINT_TYPE_PREFIX, 26267) +HANDLE_BAT(APINT_TYPE_PREFIX, 26268) +HANDLE_BAT(APINT_TYPE_PREFIX, 26269) +HANDLE_BAT(APINT_TYPE_PREFIX, 26270) +HANDLE_BAT(APINT_TYPE_PREFIX, 26271) +HANDLE_BAT(APINT_TYPE_PREFIX, 26272) +HANDLE_BAT(APINT_TYPE_PREFIX, 26273) +HANDLE_BAT(APINT_TYPE_PREFIX, 26274) +HANDLE_BAT(APINT_TYPE_PREFIX, 26275) +HANDLE_BAT(APINT_TYPE_PREFIX, 26276) +HANDLE_BAT(APINT_TYPE_PREFIX, 26277) +HANDLE_BAT(APINT_TYPE_PREFIX, 26278) +HANDLE_BAT(APINT_TYPE_PREFIX, 26279) +HANDLE_BAT(APINT_TYPE_PREFIX, 26280) +HANDLE_BAT(APINT_TYPE_PREFIX, 26281) +HANDLE_BAT(APINT_TYPE_PREFIX, 26282) +HANDLE_BAT(APINT_TYPE_PREFIX, 26283) +HANDLE_BAT(APINT_TYPE_PREFIX, 26284) +HANDLE_BAT(APINT_TYPE_PREFIX, 26285) +HANDLE_BAT(APINT_TYPE_PREFIX, 26286) +HANDLE_BAT(APINT_TYPE_PREFIX, 26287) +HANDLE_BAT(APINT_TYPE_PREFIX, 26288) +HANDLE_BAT(APINT_TYPE_PREFIX, 26289) +HANDLE_BAT(APINT_TYPE_PREFIX, 26290) +HANDLE_BAT(APINT_TYPE_PREFIX, 26291) +HANDLE_BAT(APINT_TYPE_PREFIX, 26292) +HANDLE_BAT(APINT_TYPE_PREFIX, 26293) +HANDLE_BAT(APINT_TYPE_PREFIX, 26294) +HANDLE_BAT(APINT_TYPE_PREFIX, 26295) +HANDLE_BAT(APINT_TYPE_PREFIX, 26296) +HANDLE_BAT(APINT_TYPE_PREFIX, 26297) +HANDLE_BAT(APINT_TYPE_PREFIX, 26298) +HANDLE_BAT(APINT_TYPE_PREFIX, 26299) +HANDLE_BAT(APINT_TYPE_PREFIX, 26300) +HANDLE_BAT(APINT_TYPE_PREFIX, 26301) +HANDLE_BAT(APINT_TYPE_PREFIX, 26302) +HANDLE_BAT(APINT_TYPE_PREFIX, 26303) +HANDLE_BAT(APINT_TYPE_PREFIX, 26304) +HANDLE_BAT(APINT_TYPE_PREFIX, 26305) +HANDLE_BAT(APINT_TYPE_PREFIX, 26306) +HANDLE_BAT(APINT_TYPE_PREFIX, 26307) +HANDLE_BAT(APINT_TYPE_PREFIX, 26308) +HANDLE_BAT(APINT_TYPE_PREFIX, 26309) +HANDLE_BAT(APINT_TYPE_PREFIX, 26310) +HANDLE_BAT(APINT_TYPE_PREFIX, 26311) +HANDLE_BAT(APINT_TYPE_PREFIX, 26312) +HANDLE_BAT(APINT_TYPE_PREFIX, 26313) +HANDLE_BAT(APINT_TYPE_PREFIX, 26314) +HANDLE_BAT(APINT_TYPE_PREFIX, 26315) +HANDLE_BAT(APINT_TYPE_PREFIX, 26316) +HANDLE_BAT(APINT_TYPE_PREFIX, 26317) +HANDLE_BAT(APINT_TYPE_PREFIX, 26318) +HANDLE_BAT(APINT_TYPE_PREFIX, 26319) +HANDLE_BAT(APINT_TYPE_PREFIX, 26320) +HANDLE_BAT(APINT_TYPE_PREFIX, 26321) +HANDLE_BAT(APINT_TYPE_PREFIX, 26322) +HANDLE_BAT(APINT_TYPE_PREFIX, 26323) +HANDLE_BAT(APINT_TYPE_PREFIX, 26324) +HANDLE_BAT(APINT_TYPE_PREFIX, 26325) +HANDLE_BAT(APINT_TYPE_PREFIX, 26326) +HANDLE_BAT(APINT_TYPE_PREFIX, 26327) +HANDLE_BAT(APINT_TYPE_PREFIX, 26328) +HANDLE_BAT(APINT_TYPE_PREFIX, 26329) +HANDLE_BAT(APINT_TYPE_PREFIX, 26330) +HANDLE_BAT(APINT_TYPE_PREFIX, 26331) +HANDLE_BAT(APINT_TYPE_PREFIX, 26332) +HANDLE_BAT(APINT_TYPE_PREFIX, 26333) +HANDLE_BAT(APINT_TYPE_PREFIX, 26334) +HANDLE_BAT(APINT_TYPE_PREFIX, 26335) +HANDLE_BAT(APINT_TYPE_PREFIX, 26336) +HANDLE_BAT(APINT_TYPE_PREFIX, 26337) +HANDLE_BAT(APINT_TYPE_PREFIX, 26338) +HANDLE_BAT(APINT_TYPE_PREFIX, 26339) +HANDLE_BAT(APINT_TYPE_PREFIX, 26340) +HANDLE_BAT(APINT_TYPE_PREFIX, 26341) +HANDLE_BAT(APINT_TYPE_PREFIX, 26342) +HANDLE_BAT(APINT_TYPE_PREFIX, 26343) +HANDLE_BAT(APINT_TYPE_PREFIX, 26344) +HANDLE_BAT(APINT_TYPE_PREFIX, 26345) +HANDLE_BAT(APINT_TYPE_PREFIX, 26346) +HANDLE_BAT(APINT_TYPE_PREFIX, 26347) +HANDLE_BAT(APINT_TYPE_PREFIX, 26348) +HANDLE_BAT(APINT_TYPE_PREFIX, 26349) +HANDLE_BAT(APINT_TYPE_PREFIX, 26350) +HANDLE_BAT(APINT_TYPE_PREFIX, 26351) +HANDLE_BAT(APINT_TYPE_PREFIX, 26352) +HANDLE_BAT(APINT_TYPE_PREFIX, 26353) +HANDLE_BAT(APINT_TYPE_PREFIX, 26354) +HANDLE_BAT(APINT_TYPE_PREFIX, 26355) +HANDLE_BAT(APINT_TYPE_PREFIX, 26356) +HANDLE_BAT(APINT_TYPE_PREFIX, 26357) +HANDLE_BAT(APINT_TYPE_PREFIX, 26358) +HANDLE_BAT(APINT_TYPE_PREFIX, 26359) +HANDLE_BAT(APINT_TYPE_PREFIX, 26360) +HANDLE_BAT(APINT_TYPE_PREFIX, 26361) +HANDLE_BAT(APINT_TYPE_PREFIX, 26362) +HANDLE_BAT(APINT_TYPE_PREFIX, 26363) +HANDLE_BAT(APINT_TYPE_PREFIX, 26364) +HANDLE_BAT(APINT_TYPE_PREFIX, 26365) +HANDLE_BAT(APINT_TYPE_PREFIX, 26366) +HANDLE_BAT(APINT_TYPE_PREFIX, 26367) +HANDLE_BAT(APINT_TYPE_PREFIX, 26368) +HANDLE_BAT(APINT_TYPE_PREFIX, 26369) +HANDLE_BAT(APINT_TYPE_PREFIX, 26370) +HANDLE_BAT(APINT_TYPE_PREFIX, 26371) +HANDLE_BAT(APINT_TYPE_PREFIX, 26372) +HANDLE_BAT(APINT_TYPE_PREFIX, 26373) +HANDLE_BAT(APINT_TYPE_PREFIX, 26374) +HANDLE_BAT(APINT_TYPE_PREFIX, 26375) +HANDLE_BAT(APINT_TYPE_PREFIX, 26376) +HANDLE_BAT(APINT_TYPE_PREFIX, 26377) +HANDLE_BAT(APINT_TYPE_PREFIX, 26378) +HANDLE_BAT(APINT_TYPE_PREFIX, 26379) +HANDLE_BAT(APINT_TYPE_PREFIX, 26380) +HANDLE_BAT(APINT_TYPE_PREFIX, 26381) +HANDLE_BAT(APINT_TYPE_PREFIX, 26382) +HANDLE_BAT(APINT_TYPE_PREFIX, 26383) +HANDLE_BAT(APINT_TYPE_PREFIX, 26384) +HANDLE_BAT(APINT_TYPE_PREFIX, 26385) +HANDLE_BAT(APINT_TYPE_PREFIX, 26386) +HANDLE_BAT(APINT_TYPE_PREFIX, 26387) +HANDLE_BAT(APINT_TYPE_PREFIX, 26388) +HANDLE_BAT(APINT_TYPE_PREFIX, 26389) +HANDLE_BAT(APINT_TYPE_PREFIX, 26390) +HANDLE_BAT(APINT_TYPE_PREFIX, 26391) +HANDLE_BAT(APINT_TYPE_PREFIX, 26392) +HANDLE_BAT(APINT_TYPE_PREFIX, 26393) +HANDLE_BAT(APINT_TYPE_PREFIX, 26394) +HANDLE_BAT(APINT_TYPE_PREFIX, 26395) +HANDLE_BAT(APINT_TYPE_PREFIX, 26396) +HANDLE_BAT(APINT_TYPE_PREFIX, 26397) +HANDLE_BAT(APINT_TYPE_PREFIX, 26398) +HANDLE_BAT(APINT_TYPE_PREFIX, 26399) +HANDLE_BAT(APINT_TYPE_PREFIX, 26400) +HANDLE_BAT(APINT_TYPE_PREFIX, 26401) +HANDLE_BAT(APINT_TYPE_PREFIX, 26402) +HANDLE_BAT(APINT_TYPE_PREFIX, 26403) +HANDLE_BAT(APINT_TYPE_PREFIX, 26404) +HANDLE_BAT(APINT_TYPE_PREFIX, 26405) +HANDLE_BAT(APINT_TYPE_PREFIX, 26406) +HANDLE_BAT(APINT_TYPE_PREFIX, 26407) +HANDLE_BAT(APINT_TYPE_PREFIX, 26408) +HANDLE_BAT(APINT_TYPE_PREFIX, 26409) +HANDLE_BAT(APINT_TYPE_PREFIX, 26410) +HANDLE_BAT(APINT_TYPE_PREFIX, 26411) +HANDLE_BAT(APINT_TYPE_PREFIX, 26412) +HANDLE_BAT(APINT_TYPE_PREFIX, 26413) +HANDLE_BAT(APINT_TYPE_PREFIX, 26414) +HANDLE_BAT(APINT_TYPE_PREFIX, 26415) +HANDLE_BAT(APINT_TYPE_PREFIX, 26416) +HANDLE_BAT(APINT_TYPE_PREFIX, 26417) +HANDLE_BAT(APINT_TYPE_PREFIX, 26418) +HANDLE_BAT(APINT_TYPE_PREFIX, 26419) +HANDLE_BAT(APINT_TYPE_PREFIX, 26420) +HANDLE_BAT(APINT_TYPE_PREFIX, 26421) +HANDLE_BAT(APINT_TYPE_PREFIX, 26422) +HANDLE_BAT(APINT_TYPE_PREFIX, 26423) +HANDLE_BAT(APINT_TYPE_PREFIX, 26424) +HANDLE_BAT(APINT_TYPE_PREFIX, 26425) +HANDLE_BAT(APINT_TYPE_PREFIX, 26426) +HANDLE_BAT(APINT_TYPE_PREFIX, 26427) +HANDLE_BAT(APINT_TYPE_PREFIX, 26428) +HANDLE_BAT(APINT_TYPE_PREFIX, 26429) +HANDLE_BAT(APINT_TYPE_PREFIX, 26430) +HANDLE_BAT(APINT_TYPE_PREFIX, 26431) +HANDLE_BAT(APINT_TYPE_PREFIX, 26432) +HANDLE_BAT(APINT_TYPE_PREFIX, 26433) +HANDLE_BAT(APINT_TYPE_PREFIX, 26434) +HANDLE_BAT(APINT_TYPE_PREFIX, 26435) +HANDLE_BAT(APINT_TYPE_PREFIX, 26436) +HANDLE_BAT(APINT_TYPE_PREFIX, 26437) +HANDLE_BAT(APINT_TYPE_PREFIX, 26438) +HANDLE_BAT(APINT_TYPE_PREFIX, 26439) +HANDLE_BAT(APINT_TYPE_PREFIX, 26440) +HANDLE_BAT(APINT_TYPE_PREFIX, 26441) +HANDLE_BAT(APINT_TYPE_PREFIX, 26442) +HANDLE_BAT(APINT_TYPE_PREFIX, 26443) +HANDLE_BAT(APINT_TYPE_PREFIX, 26444) +HANDLE_BAT(APINT_TYPE_PREFIX, 26445) +HANDLE_BAT(APINT_TYPE_PREFIX, 26446) +HANDLE_BAT(APINT_TYPE_PREFIX, 26447) +HANDLE_BAT(APINT_TYPE_PREFIX, 26448) +HANDLE_BAT(APINT_TYPE_PREFIX, 26449) +HANDLE_BAT(APINT_TYPE_PREFIX, 26450) +HANDLE_BAT(APINT_TYPE_PREFIX, 26451) +HANDLE_BAT(APINT_TYPE_PREFIX, 26452) +HANDLE_BAT(APINT_TYPE_PREFIX, 26453) +HANDLE_BAT(APINT_TYPE_PREFIX, 26454) +HANDLE_BAT(APINT_TYPE_PREFIX, 26455) +HANDLE_BAT(APINT_TYPE_PREFIX, 26456) +HANDLE_BAT(APINT_TYPE_PREFIX, 26457) +HANDLE_BAT(APINT_TYPE_PREFIX, 26458) +HANDLE_BAT(APINT_TYPE_PREFIX, 26459) +HANDLE_BAT(APINT_TYPE_PREFIX, 26460) +HANDLE_BAT(APINT_TYPE_PREFIX, 26461) +HANDLE_BAT(APINT_TYPE_PREFIX, 26462) +HANDLE_BAT(APINT_TYPE_PREFIX, 26463) +HANDLE_BAT(APINT_TYPE_PREFIX, 26464) +HANDLE_BAT(APINT_TYPE_PREFIX, 26465) +HANDLE_BAT(APINT_TYPE_PREFIX, 26466) +HANDLE_BAT(APINT_TYPE_PREFIX, 26467) +HANDLE_BAT(APINT_TYPE_PREFIX, 26468) +HANDLE_BAT(APINT_TYPE_PREFIX, 26469) +HANDLE_BAT(APINT_TYPE_PREFIX, 26470) +HANDLE_BAT(APINT_TYPE_PREFIX, 26471) +HANDLE_BAT(APINT_TYPE_PREFIX, 26472) +HANDLE_BAT(APINT_TYPE_PREFIX, 26473) +HANDLE_BAT(APINT_TYPE_PREFIX, 26474) +HANDLE_BAT(APINT_TYPE_PREFIX, 26475) +HANDLE_BAT(APINT_TYPE_PREFIX, 26476) +HANDLE_BAT(APINT_TYPE_PREFIX, 26477) +HANDLE_BAT(APINT_TYPE_PREFIX, 26478) +HANDLE_BAT(APINT_TYPE_PREFIX, 26479) +HANDLE_BAT(APINT_TYPE_PREFIX, 26480) +HANDLE_BAT(APINT_TYPE_PREFIX, 26481) +HANDLE_BAT(APINT_TYPE_PREFIX, 26482) +HANDLE_BAT(APINT_TYPE_PREFIX, 26483) +HANDLE_BAT(APINT_TYPE_PREFIX, 26484) +HANDLE_BAT(APINT_TYPE_PREFIX, 26485) +HANDLE_BAT(APINT_TYPE_PREFIX, 26486) +HANDLE_BAT(APINT_TYPE_PREFIX, 26487) +HANDLE_BAT(APINT_TYPE_PREFIX, 26488) +HANDLE_BAT(APINT_TYPE_PREFIX, 26489) +HANDLE_BAT(APINT_TYPE_PREFIX, 26490) +HANDLE_BAT(APINT_TYPE_PREFIX, 26491) +HANDLE_BAT(APINT_TYPE_PREFIX, 26492) +HANDLE_BAT(APINT_TYPE_PREFIX, 26493) +HANDLE_BAT(APINT_TYPE_PREFIX, 26494) +HANDLE_BAT(APINT_TYPE_PREFIX, 26495) +HANDLE_BAT(APINT_TYPE_PREFIX, 26496) +HANDLE_BAT(APINT_TYPE_PREFIX, 26497) +HANDLE_BAT(APINT_TYPE_PREFIX, 26498) +HANDLE_BAT(APINT_TYPE_PREFIX, 26499) +HANDLE_BAT(APINT_TYPE_PREFIX, 26500) +HANDLE_BAT(APINT_TYPE_PREFIX, 26501) +HANDLE_BAT(APINT_TYPE_PREFIX, 26502) +HANDLE_BAT(APINT_TYPE_PREFIX, 26503) +HANDLE_BAT(APINT_TYPE_PREFIX, 26504) +HANDLE_BAT(APINT_TYPE_PREFIX, 26505) +HANDLE_BAT(APINT_TYPE_PREFIX, 26506) +HANDLE_BAT(APINT_TYPE_PREFIX, 26507) +HANDLE_BAT(APINT_TYPE_PREFIX, 26508) +HANDLE_BAT(APINT_TYPE_PREFIX, 26509) +HANDLE_BAT(APINT_TYPE_PREFIX, 26510) +HANDLE_BAT(APINT_TYPE_PREFIX, 26511) +HANDLE_BAT(APINT_TYPE_PREFIX, 26512) +HANDLE_BAT(APINT_TYPE_PREFIX, 26513) +HANDLE_BAT(APINT_TYPE_PREFIX, 26514) +HANDLE_BAT(APINT_TYPE_PREFIX, 26515) +HANDLE_BAT(APINT_TYPE_PREFIX, 26516) +HANDLE_BAT(APINT_TYPE_PREFIX, 26517) +HANDLE_BAT(APINT_TYPE_PREFIX, 26518) +HANDLE_BAT(APINT_TYPE_PREFIX, 26519) +HANDLE_BAT(APINT_TYPE_PREFIX, 26520) +HANDLE_BAT(APINT_TYPE_PREFIX, 26521) +HANDLE_BAT(APINT_TYPE_PREFIX, 26522) +HANDLE_BAT(APINT_TYPE_PREFIX, 26523) +HANDLE_BAT(APINT_TYPE_PREFIX, 26524) +HANDLE_BAT(APINT_TYPE_PREFIX, 26525) +HANDLE_BAT(APINT_TYPE_PREFIX, 26526) +HANDLE_BAT(APINT_TYPE_PREFIX, 26527) +HANDLE_BAT(APINT_TYPE_PREFIX, 26528) +HANDLE_BAT(APINT_TYPE_PREFIX, 26529) +HANDLE_BAT(APINT_TYPE_PREFIX, 26530) +HANDLE_BAT(APINT_TYPE_PREFIX, 26531) +HANDLE_BAT(APINT_TYPE_PREFIX, 26532) +HANDLE_BAT(APINT_TYPE_PREFIX, 26533) +HANDLE_BAT(APINT_TYPE_PREFIX, 26534) +HANDLE_BAT(APINT_TYPE_PREFIX, 26535) +HANDLE_BAT(APINT_TYPE_PREFIX, 26536) +HANDLE_BAT(APINT_TYPE_PREFIX, 26537) +HANDLE_BAT(APINT_TYPE_PREFIX, 26538) +HANDLE_BAT(APINT_TYPE_PREFIX, 26539) +HANDLE_BAT(APINT_TYPE_PREFIX, 26540) +HANDLE_BAT(APINT_TYPE_PREFIX, 26541) +HANDLE_BAT(APINT_TYPE_PREFIX, 26542) +HANDLE_BAT(APINT_TYPE_PREFIX, 26543) +HANDLE_BAT(APINT_TYPE_PREFIX, 26544) +HANDLE_BAT(APINT_TYPE_PREFIX, 26545) +HANDLE_BAT(APINT_TYPE_PREFIX, 26546) +HANDLE_BAT(APINT_TYPE_PREFIX, 26547) +HANDLE_BAT(APINT_TYPE_PREFIX, 26548) +HANDLE_BAT(APINT_TYPE_PREFIX, 26549) +HANDLE_BAT(APINT_TYPE_PREFIX, 26550) +HANDLE_BAT(APINT_TYPE_PREFIX, 26551) +HANDLE_BAT(APINT_TYPE_PREFIX, 26552) +HANDLE_BAT(APINT_TYPE_PREFIX, 26553) +HANDLE_BAT(APINT_TYPE_PREFIX, 26554) +HANDLE_BAT(APINT_TYPE_PREFIX, 26555) +HANDLE_BAT(APINT_TYPE_PREFIX, 26556) +HANDLE_BAT(APINT_TYPE_PREFIX, 26557) +HANDLE_BAT(APINT_TYPE_PREFIX, 26558) +HANDLE_BAT(APINT_TYPE_PREFIX, 26559) +HANDLE_BAT(APINT_TYPE_PREFIX, 26560) +HANDLE_BAT(APINT_TYPE_PREFIX, 26561) +HANDLE_BAT(APINT_TYPE_PREFIX, 26562) +HANDLE_BAT(APINT_TYPE_PREFIX, 26563) +HANDLE_BAT(APINT_TYPE_PREFIX, 26564) +HANDLE_BAT(APINT_TYPE_PREFIX, 26565) +HANDLE_BAT(APINT_TYPE_PREFIX, 26566) +HANDLE_BAT(APINT_TYPE_PREFIX, 26567) +HANDLE_BAT(APINT_TYPE_PREFIX, 26568) +HANDLE_BAT(APINT_TYPE_PREFIX, 26569) +HANDLE_BAT(APINT_TYPE_PREFIX, 26570) +HANDLE_BAT(APINT_TYPE_PREFIX, 26571) +HANDLE_BAT(APINT_TYPE_PREFIX, 26572) +HANDLE_BAT(APINT_TYPE_PREFIX, 26573) +HANDLE_BAT(APINT_TYPE_PREFIX, 26574) +HANDLE_BAT(APINT_TYPE_PREFIX, 26575) +HANDLE_BAT(APINT_TYPE_PREFIX, 26576) +HANDLE_BAT(APINT_TYPE_PREFIX, 26577) +HANDLE_BAT(APINT_TYPE_PREFIX, 26578) +HANDLE_BAT(APINT_TYPE_PREFIX, 26579) +HANDLE_BAT(APINT_TYPE_PREFIX, 26580) +HANDLE_BAT(APINT_TYPE_PREFIX, 26581) +HANDLE_BAT(APINT_TYPE_PREFIX, 26582) +HANDLE_BAT(APINT_TYPE_PREFIX, 26583) +HANDLE_BAT(APINT_TYPE_PREFIX, 26584) +HANDLE_BAT(APINT_TYPE_PREFIX, 26585) +HANDLE_BAT(APINT_TYPE_PREFIX, 26586) +HANDLE_BAT(APINT_TYPE_PREFIX, 26587) +HANDLE_BAT(APINT_TYPE_PREFIX, 26588) +HANDLE_BAT(APINT_TYPE_PREFIX, 26589) +HANDLE_BAT(APINT_TYPE_PREFIX, 26590) +HANDLE_BAT(APINT_TYPE_PREFIX, 26591) +HANDLE_BAT(APINT_TYPE_PREFIX, 26592) +HANDLE_BAT(APINT_TYPE_PREFIX, 26593) +HANDLE_BAT(APINT_TYPE_PREFIX, 26594) +HANDLE_BAT(APINT_TYPE_PREFIX, 26595) +HANDLE_BAT(APINT_TYPE_PREFIX, 26596) +HANDLE_BAT(APINT_TYPE_PREFIX, 26597) +HANDLE_BAT(APINT_TYPE_PREFIX, 26598) +HANDLE_BAT(APINT_TYPE_PREFIX, 26599) +HANDLE_BAT(APINT_TYPE_PREFIX, 26600) +HANDLE_BAT(APINT_TYPE_PREFIX, 26601) +HANDLE_BAT(APINT_TYPE_PREFIX, 26602) +HANDLE_BAT(APINT_TYPE_PREFIX, 26603) +HANDLE_BAT(APINT_TYPE_PREFIX, 26604) +HANDLE_BAT(APINT_TYPE_PREFIX, 26605) +HANDLE_BAT(APINT_TYPE_PREFIX, 26606) +HANDLE_BAT(APINT_TYPE_PREFIX, 26607) +HANDLE_BAT(APINT_TYPE_PREFIX, 26608) +HANDLE_BAT(APINT_TYPE_PREFIX, 26609) +HANDLE_BAT(APINT_TYPE_PREFIX, 26610) +HANDLE_BAT(APINT_TYPE_PREFIX, 26611) +HANDLE_BAT(APINT_TYPE_PREFIX, 26612) +HANDLE_BAT(APINT_TYPE_PREFIX, 26613) +HANDLE_BAT(APINT_TYPE_PREFIX, 26614) +HANDLE_BAT(APINT_TYPE_PREFIX, 26615) +HANDLE_BAT(APINT_TYPE_PREFIX, 26616) +HANDLE_BAT(APINT_TYPE_PREFIX, 26617) +HANDLE_BAT(APINT_TYPE_PREFIX, 26618) +HANDLE_BAT(APINT_TYPE_PREFIX, 26619) +HANDLE_BAT(APINT_TYPE_PREFIX, 26620) +HANDLE_BAT(APINT_TYPE_PREFIX, 26621) +HANDLE_BAT(APINT_TYPE_PREFIX, 26622) +HANDLE_BAT(APINT_TYPE_PREFIX, 26623) +HANDLE_BAT(APINT_TYPE_PREFIX, 26624) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 26 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 26625) +HANDLE_BAT(, 26626) +HANDLE_BAT(, 26627) +HANDLE_BAT(, 26628) +HANDLE_BAT(, 26629) +HANDLE_BAT(, 26630) +HANDLE_BAT(, 26631) +HANDLE_BAT(, 26632) +HANDLE_BAT(, 26633) +HANDLE_BAT(, 26634) +HANDLE_BAT(, 26635) +HANDLE_BAT(, 26636) +HANDLE_BAT(, 26637) +HANDLE_BAT(, 26638) +HANDLE_BAT(, 26639) +HANDLE_BAT(, 26640) +HANDLE_BAT(, 26641) +HANDLE_BAT(, 26642) +HANDLE_BAT(, 26643) +HANDLE_BAT(, 26644) +HANDLE_BAT(, 26645) +HANDLE_BAT(, 26646) +HANDLE_BAT(, 26647) +HANDLE_BAT(, 26648) +HANDLE_BAT(, 26649) +HANDLE_BAT(, 26650) +HANDLE_BAT(, 26651) +HANDLE_BAT(, 26652) +HANDLE_BAT(, 26653) +HANDLE_BAT(, 26654) +HANDLE_BAT(, 26655) +HANDLE_BAT(, 26656) +HANDLE_BAT(, 26657) +HANDLE_BAT(, 26658) +HANDLE_BAT(, 26659) +HANDLE_BAT(, 26660) +HANDLE_BAT(, 26661) +HANDLE_BAT(, 26662) +HANDLE_BAT(, 26663) +HANDLE_BAT(, 26664) +HANDLE_BAT(, 26665) +HANDLE_BAT(, 26666) +HANDLE_BAT(, 26667) +HANDLE_BAT(, 26668) +HANDLE_BAT(, 26669) +HANDLE_BAT(, 26670) +HANDLE_BAT(, 26671) +HANDLE_BAT(, 26672) +HANDLE_BAT(, 26673) +HANDLE_BAT(, 26674) +HANDLE_BAT(, 26675) +HANDLE_BAT(, 26676) +HANDLE_BAT(, 26677) +HANDLE_BAT(, 26678) +HANDLE_BAT(, 26679) +HANDLE_BAT(, 26680) +HANDLE_BAT(, 26681) +HANDLE_BAT(, 26682) +HANDLE_BAT(, 26683) +HANDLE_BAT(, 26684) +HANDLE_BAT(, 26685) +HANDLE_BAT(, 26686) +HANDLE_BAT(, 26687) +HANDLE_BAT(, 26688) +HANDLE_BAT(, 26689) +HANDLE_BAT(, 26690) +HANDLE_BAT(, 26691) +HANDLE_BAT(, 26692) +HANDLE_BAT(, 26693) +HANDLE_BAT(, 26694) +HANDLE_BAT(, 26695) +HANDLE_BAT(, 26696) +HANDLE_BAT(, 26697) +HANDLE_BAT(, 26698) +HANDLE_BAT(, 26699) +HANDLE_BAT(, 26700) +HANDLE_BAT(, 26701) +HANDLE_BAT(, 26702) +HANDLE_BAT(, 26703) +HANDLE_BAT(, 26704) +HANDLE_BAT(, 26705) +HANDLE_BAT(, 26706) +HANDLE_BAT(, 26707) +HANDLE_BAT(, 26708) +HANDLE_BAT(, 26709) +HANDLE_BAT(, 26710) +HANDLE_BAT(, 26711) +HANDLE_BAT(, 26712) +HANDLE_BAT(, 26713) +HANDLE_BAT(, 26714) +HANDLE_BAT(, 26715) +HANDLE_BAT(, 26716) +HANDLE_BAT(, 26717) +HANDLE_BAT(, 26718) +HANDLE_BAT(, 26719) +HANDLE_BAT(, 26720) +HANDLE_BAT(, 26721) +HANDLE_BAT(, 26722) +HANDLE_BAT(, 26723) +HANDLE_BAT(, 26724) +HANDLE_BAT(, 26725) +HANDLE_BAT(, 26726) +HANDLE_BAT(, 26727) +HANDLE_BAT(, 26728) +HANDLE_BAT(, 26729) +HANDLE_BAT(, 26730) +HANDLE_BAT(, 26731) +HANDLE_BAT(, 26732) +HANDLE_BAT(, 26733) +HANDLE_BAT(, 26734) +HANDLE_BAT(, 26735) +HANDLE_BAT(, 26736) +HANDLE_BAT(, 26737) +HANDLE_BAT(, 26738) +HANDLE_BAT(, 26739) +HANDLE_BAT(, 26740) +HANDLE_BAT(, 26741) +HANDLE_BAT(, 26742) +HANDLE_BAT(, 26743) +HANDLE_BAT(, 26744) +HANDLE_BAT(, 26745) +HANDLE_BAT(, 26746) +HANDLE_BAT(, 26747) +HANDLE_BAT(, 26748) +HANDLE_BAT(, 26749) +HANDLE_BAT(, 26750) +HANDLE_BAT(, 26751) +HANDLE_BAT(, 26752) +HANDLE_BAT(, 26753) +HANDLE_BAT(, 26754) +HANDLE_BAT(, 26755) +HANDLE_BAT(, 26756) +HANDLE_BAT(, 26757) +HANDLE_BAT(, 26758) +HANDLE_BAT(, 26759) +HANDLE_BAT(, 26760) +HANDLE_BAT(, 26761) +HANDLE_BAT(, 26762) +HANDLE_BAT(, 26763) +HANDLE_BAT(, 26764) +HANDLE_BAT(, 26765) +HANDLE_BAT(, 26766) +HANDLE_BAT(, 26767) +HANDLE_BAT(, 26768) +HANDLE_BAT(, 26769) +HANDLE_BAT(, 26770) +HANDLE_BAT(, 26771) +HANDLE_BAT(, 26772) +HANDLE_BAT(, 26773) +HANDLE_BAT(, 26774) +HANDLE_BAT(, 26775) +HANDLE_BAT(, 26776) +HANDLE_BAT(, 26777) +HANDLE_BAT(, 26778) +HANDLE_BAT(, 26779) +HANDLE_BAT(, 26780) +HANDLE_BAT(, 26781) +HANDLE_BAT(, 26782) +HANDLE_BAT(, 26783) +HANDLE_BAT(, 26784) +HANDLE_BAT(, 26785) +HANDLE_BAT(, 26786) +HANDLE_BAT(, 26787) +HANDLE_BAT(, 26788) +HANDLE_BAT(, 26789) +HANDLE_BAT(, 26790) +HANDLE_BAT(, 26791) +HANDLE_BAT(, 26792) +HANDLE_BAT(, 26793) +HANDLE_BAT(, 26794) +HANDLE_BAT(, 26795) +HANDLE_BAT(, 26796) +HANDLE_BAT(, 26797) +HANDLE_BAT(, 26798) +HANDLE_BAT(, 26799) +HANDLE_BAT(, 26800) +HANDLE_BAT(, 26801) +HANDLE_BAT(, 26802) +HANDLE_BAT(, 26803) +HANDLE_BAT(, 26804) +HANDLE_BAT(, 26805) +HANDLE_BAT(, 26806) +HANDLE_BAT(, 26807) +HANDLE_BAT(, 26808) +HANDLE_BAT(, 26809) +HANDLE_BAT(, 26810) +HANDLE_BAT(, 26811) +HANDLE_BAT(, 26812) +HANDLE_BAT(, 26813) +HANDLE_BAT(, 26814) +HANDLE_BAT(, 26815) +HANDLE_BAT(, 26816) +HANDLE_BAT(, 26817) +HANDLE_BAT(, 26818) +HANDLE_BAT(, 26819) +HANDLE_BAT(, 26820) +HANDLE_BAT(, 26821) +HANDLE_BAT(, 26822) +HANDLE_BAT(, 26823) +HANDLE_BAT(, 26824) +HANDLE_BAT(, 26825) +HANDLE_BAT(, 26826) +HANDLE_BAT(, 26827) +HANDLE_BAT(, 26828) +HANDLE_BAT(, 26829) +HANDLE_BAT(, 26830) +HANDLE_BAT(, 26831) +HANDLE_BAT(, 26832) +HANDLE_BAT(, 26833) +HANDLE_BAT(, 26834) +HANDLE_BAT(, 26835) +HANDLE_BAT(, 26836) +HANDLE_BAT(, 26837) +HANDLE_BAT(, 26838) +HANDLE_BAT(, 26839) +HANDLE_BAT(, 26840) +HANDLE_BAT(, 26841) +HANDLE_BAT(, 26842) +HANDLE_BAT(, 26843) +HANDLE_BAT(, 26844) +HANDLE_BAT(, 26845) +HANDLE_BAT(, 26846) +HANDLE_BAT(, 26847) +HANDLE_BAT(, 26848) +HANDLE_BAT(, 26849) +HANDLE_BAT(, 26850) +HANDLE_BAT(, 26851) +HANDLE_BAT(, 26852) +HANDLE_BAT(, 26853) +HANDLE_BAT(, 26854) +HANDLE_BAT(, 26855) +HANDLE_BAT(, 26856) +HANDLE_BAT(, 26857) +HANDLE_BAT(, 26858) +HANDLE_BAT(, 26859) +HANDLE_BAT(, 26860) +HANDLE_BAT(, 26861) +HANDLE_BAT(, 26862) +HANDLE_BAT(, 26863) +HANDLE_BAT(, 26864) +HANDLE_BAT(, 26865) +HANDLE_BAT(, 26866) +HANDLE_BAT(, 26867) +HANDLE_BAT(, 26868) +HANDLE_BAT(, 26869) +HANDLE_BAT(, 26870) +HANDLE_BAT(, 26871) +HANDLE_BAT(, 26872) +HANDLE_BAT(, 26873) +HANDLE_BAT(, 26874) +HANDLE_BAT(, 26875) +HANDLE_BAT(, 26876) +HANDLE_BAT(, 26877) +HANDLE_BAT(, 26878) +HANDLE_BAT(, 26879) +HANDLE_BAT(, 26880) +HANDLE_BAT(, 26881) +HANDLE_BAT(, 26882) +HANDLE_BAT(, 26883) +HANDLE_BAT(, 26884) +HANDLE_BAT(, 26885) +HANDLE_BAT(, 26886) +HANDLE_BAT(, 26887) +HANDLE_BAT(, 26888) +HANDLE_BAT(, 26889) +HANDLE_BAT(, 26890) +HANDLE_BAT(, 26891) +HANDLE_BAT(, 26892) +HANDLE_BAT(, 26893) +HANDLE_BAT(, 26894) +HANDLE_BAT(, 26895) +HANDLE_BAT(, 26896) +HANDLE_BAT(, 26897) +HANDLE_BAT(, 26898) +HANDLE_BAT(, 26899) +HANDLE_BAT(, 26900) +HANDLE_BAT(, 26901) +HANDLE_BAT(, 26902) +HANDLE_BAT(, 26903) +HANDLE_BAT(, 26904) +HANDLE_BAT(, 26905) +HANDLE_BAT(, 26906) +HANDLE_BAT(, 26907) +HANDLE_BAT(, 26908) +HANDLE_BAT(, 26909) +HANDLE_BAT(, 26910) +HANDLE_BAT(, 26911) +HANDLE_BAT(, 26912) +HANDLE_BAT(, 26913) +HANDLE_BAT(, 26914) +HANDLE_BAT(, 26915) +HANDLE_BAT(, 26916) +HANDLE_BAT(, 26917) +HANDLE_BAT(, 26918) +HANDLE_BAT(, 26919) +HANDLE_BAT(, 26920) +HANDLE_BAT(, 26921) +HANDLE_BAT(, 26922) +HANDLE_BAT(, 26923) +HANDLE_BAT(, 26924) +HANDLE_BAT(, 26925) +HANDLE_BAT(, 26926) +HANDLE_BAT(, 26927) +HANDLE_BAT(, 26928) +HANDLE_BAT(, 26929) +HANDLE_BAT(, 26930) +HANDLE_BAT(, 26931) +HANDLE_BAT(, 26932) +HANDLE_BAT(, 26933) +HANDLE_BAT(, 26934) +HANDLE_BAT(, 26935) +HANDLE_BAT(, 26936) +HANDLE_BAT(, 26937) +HANDLE_BAT(, 26938) +HANDLE_BAT(, 26939) +HANDLE_BAT(, 26940) +HANDLE_BAT(, 26941) +HANDLE_BAT(, 26942) +HANDLE_BAT(, 26943) +HANDLE_BAT(, 26944) +HANDLE_BAT(, 26945) +HANDLE_BAT(, 26946) +HANDLE_BAT(, 26947) +HANDLE_BAT(, 26948) +HANDLE_BAT(, 26949) +HANDLE_BAT(, 26950) +HANDLE_BAT(, 26951) +HANDLE_BAT(, 26952) +HANDLE_BAT(, 26953) +HANDLE_BAT(, 26954) +HANDLE_BAT(, 26955) +HANDLE_BAT(, 26956) +HANDLE_BAT(, 26957) +HANDLE_BAT(, 26958) +HANDLE_BAT(, 26959) +HANDLE_BAT(, 26960) +HANDLE_BAT(, 26961) +HANDLE_BAT(, 26962) +HANDLE_BAT(, 26963) +HANDLE_BAT(, 26964) +HANDLE_BAT(, 26965) +HANDLE_BAT(, 26966) +HANDLE_BAT(, 26967) +HANDLE_BAT(, 26968) +HANDLE_BAT(, 26969) +HANDLE_BAT(, 26970) +HANDLE_BAT(, 26971) +HANDLE_BAT(, 26972) +HANDLE_BAT(, 26973) +HANDLE_BAT(, 26974) +HANDLE_BAT(, 26975) +HANDLE_BAT(, 26976) +HANDLE_BAT(, 26977) +HANDLE_BAT(, 26978) +HANDLE_BAT(, 26979) +HANDLE_BAT(, 26980) +HANDLE_BAT(, 26981) +HANDLE_BAT(, 26982) +HANDLE_BAT(, 26983) +HANDLE_BAT(, 26984) +HANDLE_BAT(, 26985) +HANDLE_BAT(, 26986) +HANDLE_BAT(, 26987) +HANDLE_BAT(, 26988) +HANDLE_BAT(, 26989) +HANDLE_BAT(, 26990) +HANDLE_BAT(, 26991) +HANDLE_BAT(, 26992) +HANDLE_BAT(, 26993) +HANDLE_BAT(, 26994) +HANDLE_BAT(, 26995) +HANDLE_BAT(, 26996) +HANDLE_BAT(, 26997) +HANDLE_BAT(, 26998) +HANDLE_BAT(, 26999) +HANDLE_BAT(, 27000) +HANDLE_BAT(, 27001) +HANDLE_BAT(, 27002) +HANDLE_BAT(, 27003) +HANDLE_BAT(, 27004) +HANDLE_BAT(, 27005) +HANDLE_BAT(, 27006) +HANDLE_BAT(, 27007) +HANDLE_BAT(, 27008) +HANDLE_BAT(, 27009) +HANDLE_BAT(, 27010) +HANDLE_BAT(, 27011) +HANDLE_BAT(, 27012) +HANDLE_BAT(, 27013) +HANDLE_BAT(, 27014) +HANDLE_BAT(, 27015) +HANDLE_BAT(, 27016) +HANDLE_BAT(, 27017) +HANDLE_BAT(, 27018) +HANDLE_BAT(, 27019) +HANDLE_BAT(, 27020) +HANDLE_BAT(, 27021) +HANDLE_BAT(, 27022) +HANDLE_BAT(, 27023) +HANDLE_BAT(, 27024) +HANDLE_BAT(, 27025) +HANDLE_BAT(, 27026) +HANDLE_BAT(, 27027) +HANDLE_BAT(, 27028) +HANDLE_BAT(, 27029) +HANDLE_BAT(, 27030) +HANDLE_BAT(, 27031) +HANDLE_BAT(, 27032) +HANDLE_BAT(, 27033) +HANDLE_BAT(, 27034) +HANDLE_BAT(, 27035) +HANDLE_BAT(, 27036) +HANDLE_BAT(, 27037) +HANDLE_BAT(, 27038) +HANDLE_BAT(, 27039) +HANDLE_BAT(, 27040) +HANDLE_BAT(, 27041) +HANDLE_BAT(, 27042) +HANDLE_BAT(, 27043) +HANDLE_BAT(, 27044) +HANDLE_BAT(, 27045) +HANDLE_BAT(, 27046) +HANDLE_BAT(, 27047) +HANDLE_BAT(, 27048) +HANDLE_BAT(, 27049) +HANDLE_BAT(, 27050) +HANDLE_BAT(, 27051) +HANDLE_BAT(, 27052) +HANDLE_BAT(, 27053) +HANDLE_BAT(, 27054) +HANDLE_BAT(, 27055) +HANDLE_BAT(, 27056) +HANDLE_BAT(, 27057) +HANDLE_BAT(, 27058) +HANDLE_BAT(, 27059) +HANDLE_BAT(, 27060) +HANDLE_BAT(, 27061) +HANDLE_BAT(, 27062) +HANDLE_BAT(, 27063) +HANDLE_BAT(, 27064) +HANDLE_BAT(, 27065) +HANDLE_BAT(, 27066) +HANDLE_BAT(, 27067) +HANDLE_BAT(, 27068) +HANDLE_BAT(, 27069) +HANDLE_BAT(, 27070) +HANDLE_BAT(, 27071) +HANDLE_BAT(, 27072) +HANDLE_BAT(, 27073) +HANDLE_BAT(, 27074) +HANDLE_BAT(, 27075) +HANDLE_BAT(, 27076) +HANDLE_BAT(, 27077) +HANDLE_BAT(, 27078) +HANDLE_BAT(, 27079) +HANDLE_BAT(, 27080) +HANDLE_BAT(, 27081) +HANDLE_BAT(, 27082) +HANDLE_BAT(, 27083) +HANDLE_BAT(, 27084) +HANDLE_BAT(, 27085) +HANDLE_BAT(, 27086) +HANDLE_BAT(, 27087) +HANDLE_BAT(, 27088) +HANDLE_BAT(, 27089) +HANDLE_BAT(, 27090) +HANDLE_BAT(, 27091) +HANDLE_BAT(, 27092) +HANDLE_BAT(, 27093) +HANDLE_BAT(, 27094) +HANDLE_BAT(, 27095) +HANDLE_BAT(, 27096) +HANDLE_BAT(, 27097) +HANDLE_BAT(, 27098) +HANDLE_BAT(, 27099) +HANDLE_BAT(, 27100) +HANDLE_BAT(, 27101) +HANDLE_BAT(, 27102) +HANDLE_BAT(, 27103) +HANDLE_BAT(, 27104) +HANDLE_BAT(, 27105) +HANDLE_BAT(, 27106) +HANDLE_BAT(, 27107) +HANDLE_BAT(, 27108) +HANDLE_BAT(, 27109) +HANDLE_BAT(, 27110) +HANDLE_BAT(, 27111) +HANDLE_BAT(, 27112) +HANDLE_BAT(, 27113) +HANDLE_BAT(, 27114) +HANDLE_BAT(, 27115) +HANDLE_BAT(, 27116) +HANDLE_BAT(, 27117) +HANDLE_BAT(, 27118) +HANDLE_BAT(, 27119) +HANDLE_BAT(, 27120) +HANDLE_BAT(, 27121) +HANDLE_BAT(, 27122) +HANDLE_BAT(, 27123) +HANDLE_BAT(, 27124) +HANDLE_BAT(, 27125) +HANDLE_BAT(, 27126) +HANDLE_BAT(, 27127) +HANDLE_BAT(, 27128) +HANDLE_BAT(, 27129) +HANDLE_BAT(, 27130) +HANDLE_BAT(, 27131) +HANDLE_BAT(, 27132) +HANDLE_BAT(, 27133) +HANDLE_BAT(, 27134) +HANDLE_BAT(, 27135) +HANDLE_BAT(, 27136) +HANDLE_BAT(, 27137) +HANDLE_BAT(, 27138) +HANDLE_BAT(, 27139) +HANDLE_BAT(, 27140) +HANDLE_BAT(, 27141) +HANDLE_BAT(, 27142) +HANDLE_BAT(, 27143) +HANDLE_BAT(, 27144) +HANDLE_BAT(, 27145) +HANDLE_BAT(, 27146) +HANDLE_BAT(, 27147) +HANDLE_BAT(, 27148) +HANDLE_BAT(, 27149) +HANDLE_BAT(, 27150) +HANDLE_BAT(, 27151) +HANDLE_BAT(, 27152) +HANDLE_BAT(, 27153) +HANDLE_BAT(, 27154) +HANDLE_BAT(, 27155) +HANDLE_BAT(, 27156) +HANDLE_BAT(, 27157) +HANDLE_BAT(, 27158) +HANDLE_BAT(, 27159) +HANDLE_BAT(, 27160) +HANDLE_BAT(, 27161) +HANDLE_BAT(, 27162) +HANDLE_BAT(, 27163) +HANDLE_BAT(, 27164) +HANDLE_BAT(, 27165) +HANDLE_BAT(, 27166) +HANDLE_BAT(, 27167) +HANDLE_BAT(, 27168) +HANDLE_BAT(, 27169) +HANDLE_BAT(, 27170) +HANDLE_BAT(, 27171) +HANDLE_BAT(, 27172) +HANDLE_BAT(, 27173) +HANDLE_BAT(, 27174) +HANDLE_BAT(, 27175) +HANDLE_BAT(, 27176) +HANDLE_BAT(, 27177) +HANDLE_BAT(, 27178) +HANDLE_BAT(, 27179) +HANDLE_BAT(, 27180) +HANDLE_BAT(, 27181) +HANDLE_BAT(, 27182) +HANDLE_BAT(, 27183) +HANDLE_BAT(, 27184) +HANDLE_BAT(, 27185) +HANDLE_BAT(, 27186) +HANDLE_BAT(, 27187) +HANDLE_BAT(, 27188) +HANDLE_BAT(, 27189) +HANDLE_BAT(, 27190) +HANDLE_BAT(, 27191) +HANDLE_BAT(, 27192) +HANDLE_BAT(, 27193) +HANDLE_BAT(, 27194) +HANDLE_BAT(, 27195) +HANDLE_BAT(, 27196) +HANDLE_BAT(, 27197) +HANDLE_BAT(, 27198) +HANDLE_BAT(, 27199) +HANDLE_BAT(, 27200) +HANDLE_BAT(, 27201) +HANDLE_BAT(, 27202) +HANDLE_BAT(, 27203) +HANDLE_BAT(, 27204) +HANDLE_BAT(, 27205) +HANDLE_BAT(, 27206) +HANDLE_BAT(, 27207) +HANDLE_BAT(, 27208) +HANDLE_BAT(, 27209) +HANDLE_BAT(, 27210) +HANDLE_BAT(, 27211) +HANDLE_BAT(, 27212) +HANDLE_BAT(, 27213) +HANDLE_BAT(, 27214) +HANDLE_BAT(, 27215) +HANDLE_BAT(, 27216) +HANDLE_BAT(, 27217) +HANDLE_BAT(, 27218) +HANDLE_BAT(, 27219) +HANDLE_BAT(, 27220) +HANDLE_BAT(, 27221) +HANDLE_BAT(, 27222) +HANDLE_BAT(, 27223) +HANDLE_BAT(, 27224) +HANDLE_BAT(, 27225) +HANDLE_BAT(, 27226) +HANDLE_BAT(, 27227) +HANDLE_BAT(, 27228) +HANDLE_BAT(, 27229) +HANDLE_BAT(, 27230) +HANDLE_BAT(, 27231) +HANDLE_BAT(, 27232) +HANDLE_BAT(, 27233) +HANDLE_BAT(, 27234) +HANDLE_BAT(, 27235) +HANDLE_BAT(, 27236) +HANDLE_BAT(, 27237) +HANDLE_BAT(, 27238) +HANDLE_BAT(, 27239) +HANDLE_BAT(, 27240) +HANDLE_BAT(, 27241) +HANDLE_BAT(, 27242) +HANDLE_BAT(, 27243) +HANDLE_BAT(, 27244) +HANDLE_BAT(, 27245) +HANDLE_BAT(, 27246) +HANDLE_BAT(, 27247) +HANDLE_BAT(, 27248) +HANDLE_BAT(, 27249) +HANDLE_BAT(, 27250) +HANDLE_BAT(, 27251) +HANDLE_BAT(, 27252) +HANDLE_BAT(, 27253) +HANDLE_BAT(, 27254) +HANDLE_BAT(, 27255) +HANDLE_BAT(, 27256) +HANDLE_BAT(, 27257) +HANDLE_BAT(, 27258) +HANDLE_BAT(, 27259) +HANDLE_BAT(, 27260) +HANDLE_BAT(, 27261) +HANDLE_BAT(, 27262) +HANDLE_BAT(, 27263) +HANDLE_BAT(, 27264) +HANDLE_BAT(, 27265) +HANDLE_BAT(, 27266) +HANDLE_BAT(, 27267) +HANDLE_BAT(, 27268) +HANDLE_BAT(, 27269) +HANDLE_BAT(, 27270) +HANDLE_BAT(, 27271) +HANDLE_BAT(, 27272) +HANDLE_BAT(, 27273) +HANDLE_BAT(, 27274) +HANDLE_BAT(, 27275) +HANDLE_BAT(, 27276) +HANDLE_BAT(, 27277) +HANDLE_BAT(, 27278) +HANDLE_BAT(, 27279) +HANDLE_BAT(, 27280) +HANDLE_BAT(, 27281) +HANDLE_BAT(, 27282) +HANDLE_BAT(, 27283) +HANDLE_BAT(, 27284) +HANDLE_BAT(, 27285) +HANDLE_BAT(, 27286) +HANDLE_BAT(, 27287) +HANDLE_BAT(, 27288) +HANDLE_BAT(, 27289) +HANDLE_BAT(, 27290) +HANDLE_BAT(, 27291) +HANDLE_BAT(, 27292) +HANDLE_BAT(, 27293) +HANDLE_BAT(, 27294) +HANDLE_BAT(, 27295) +HANDLE_BAT(, 27296) +HANDLE_BAT(, 27297) +HANDLE_BAT(, 27298) +HANDLE_BAT(, 27299) +HANDLE_BAT(, 27300) +HANDLE_BAT(, 27301) +HANDLE_BAT(, 27302) +HANDLE_BAT(, 27303) +HANDLE_BAT(, 27304) +HANDLE_BAT(, 27305) +HANDLE_BAT(, 27306) +HANDLE_BAT(, 27307) +HANDLE_BAT(, 27308) +HANDLE_BAT(, 27309) +HANDLE_BAT(, 27310) +HANDLE_BAT(, 27311) +HANDLE_BAT(, 27312) +HANDLE_BAT(, 27313) +HANDLE_BAT(, 27314) +HANDLE_BAT(, 27315) +HANDLE_BAT(, 27316) +HANDLE_BAT(, 27317) +HANDLE_BAT(, 27318) +HANDLE_BAT(, 27319) +HANDLE_BAT(, 27320) +HANDLE_BAT(, 27321) +HANDLE_BAT(, 27322) +HANDLE_BAT(, 27323) +HANDLE_BAT(, 27324) +HANDLE_BAT(, 27325) +HANDLE_BAT(, 27326) +HANDLE_BAT(, 27327) +HANDLE_BAT(, 27328) +HANDLE_BAT(, 27329) +HANDLE_BAT(, 27330) +HANDLE_BAT(, 27331) +HANDLE_BAT(, 27332) +HANDLE_BAT(, 27333) +HANDLE_BAT(, 27334) +HANDLE_BAT(, 27335) +HANDLE_BAT(, 27336) +HANDLE_BAT(, 27337) +HANDLE_BAT(, 27338) +HANDLE_BAT(, 27339) +HANDLE_BAT(, 27340) +HANDLE_BAT(, 27341) +HANDLE_BAT(, 27342) +HANDLE_BAT(, 27343) +HANDLE_BAT(, 27344) +HANDLE_BAT(, 27345) +HANDLE_BAT(, 27346) +HANDLE_BAT(, 27347) +HANDLE_BAT(, 27348) +HANDLE_BAT(, 27349) +HANDLE_BAT(, 27350) +HANDLE_BAT(, 27351) +HANDLE_BAT(, 27352) +HANDLE_BAT(, 27353) +HANDLE_BAT(, 27354) +HANDLE_BAT(, 27355) +HANDLE_BAT(, 27356) +HANDLE_BAT(, 27357) +HANDLE_BAT(, 27358) +HANDLE_BAT(, 27359) +HANDLE_BAT(, 27360) +HANDLE_BAT(, 27361) +HANDLE_BAT(, 27362) +HANDLE_BAT(, 27363) +HANDLE_BAT(, 27364) +HANDLE_BAT(, 27365) +HANDLE_BAT(, 27366) +HANDLE_BAT(, 27367) +HANDLE_BAT(, 27368) +HANDLE_BAT(, 27369) +HANDLE_BAT(, 27370) +HANDLE_BAT(, 27371) +HANDLE_BAT(, 27372) +HANDLE_BAT(, 27373) +HANDLE_BAT(, 27374) +HANDLE_BAT(, 27375) +HANDLE_BAT(, 27376) +HANDLE_BAT(, 27377) +HANDLE_BAT(, 27378) +HANDLE_BAT(, 27379) +HANDLE_BAT(, 27380) +HANDLE_BAT(, 27381) +HANDLE_BAT(, 27382) +HANDLE_BAT(, 27383) +HANDLE_BAT(, 27384) +HANDLE_BAT(, 27385) +HANDLE_BAT(, 27386) +HANDLE_BAT(, 27387) +HANDLE_BAT(, 27388) +HANDLE_BAT(, 27389) +HANDLE_BAT(, 27390) +HANDLE_BAT(, 27391) +HANDLE_BAT(, 27392) +HANDLE_BAT(, 27393) +HANDLE_BAT(, 27394) +HANDLE_BAT(, 27395) +HANDLE_BAT(, 27396) +HANDLE_BAT(, 27397) +HANDLE_BAT(, 27398) +HANDLE_BAT(, 27399) +HANDLE_BAT(, 27400) +HANDLE_BAT(, 27401) +HANDLE_BAT(, 27402) +HANDLE_BAT(, 27403) +HANDLE_BAT(, 27404) +HANDLE_BAT(, 27405) +HANDLE_BAT(, 27406) +HANDLE_BAT(, 27407) +HANDLE_BAT(, 27408) +HANDLE_BAT(, 27409) +HANDLE_BAT(, 27410) +HANDLE_BAT(, 27411) +HANDLE_BAT(, 27412) +HANDLE_BAT(, 27413) +HANDLE_BAT(, 27414) +HANDLE_BAT(, 27415) +HANDLE_BAT(, 27416) +HANDLE_BAT(, 27417) +HANDLE_BAT(, 27418) +HANDLE_BAT(, 27419) +HANDLE_BAT(, 27420) +HANDLE_BAT(, 27421) +HANDLE_BAT(, 27422) +HANDLE_BAT(, 27423) +HANDLE_BAT(, 27424) +HANDLE_BAT(, 27425) +HANDLE_BAT(, 27426) +HANDLE_BAT(, 27427) +HANDLE_BAT(, 27428) +HANDLE_BAT(, 27429) +HANDLE_BAT(, 27430) +HANDLE_BAT(, 27431) +HANDLE_BAT(, 27432) +HANDLE_BAT(, 27433) +HANDLE_BAT(, 27434) +HANDLE_BAT(, 27435) +HANDLE_BAT(, 27436) +HANDLE_BAT(, 27437) +HANDLE_BAT(, 27438) +HANDLE_BAT(, 27439) +HANDLE_BAT(, 27440) +HANDLE_BAT(, 27441) +HANDLE_BAT(, 27442) +HANDLE_BAT(, 27443) +HANDLE_BAT(, 27444) +HANDLE_BAT(, 27445) +HANDLE_BAT(, 27446) +HANDLE_BAT(, 27447) +HANDLE_BAT(, 27448) +HANDLE_BAT(, 27449) +HANDLE_BAT(, 27450) +HANDLE_BAT(, 27451) +HANDLE_BAT(, 27452) +HANDLE_BAT(, 27453) +HANDLE_BAT(, 27454) +HANDLE_BAT(, 27455) +HANDLE_BAT(, 27456) +HANDLE_BAT(, 27457) +HANDLE_BAT(, 27458) +HANDLE_BAT(, 27459) +HANDLE_BAT(, 27460) +HANDLE_BAT(, 27461) +HANDLE_BAT(, 27462) +HANDLE_BAT(, 27463) +HANDLE_BAT(, 27464) +HANDLE_BAT(, 27465) +HANDLE_BAT(, 27466) +HANDLE_BAT(, 27467) +HANDLE_BAT(, 27468) +HANDLE_BAT(, 27469) +HANDLE_BAT(, 27470) +HANDLE_BAT(, 27471) +HANDLE_BAT(, 27472) +HANDLE_BAT(, 27473) +HANDLE_BAT(, 27474) +HANDLE_BAT(, 27475) +HANDLE_BAT(, 27476) +HANDLE_BAT(, 27477) +HANDLE_BAT(, 27478) +HANDLE_BAT(, 27479) +HANDLE_BAT(, 27480) +HANDLE_BAT(, 27481) +HANDLE_BAT(, 27482) +HANDLE_BAT(, 27483) +HANDLE_BAT(, 27484) +HANDLE_BAT(, 27485) +HANDLE_BAT(, 27486) +HANDLE_BAT(, 27487) +HANDLE_BAT(, 27488) +HANDLE_BAT(, 27489) +HANDLE_BAT(, 27490) +HANDLE_BAT(, 27491) +HANDLE_BAT(, 27492) +HANDLE_BAT(, 27493) +HANDLE_BAT(, 27494) +HANDLE_BAT(, 27495) +HANDLE_BAT(, 27496) +HANDLE_BAT(, 27497) +HANDLE_BAT(, 27498) +HANDLE_BAT(, 27499) +HANDLE_BAT(, 27500) +HANDLE_BAT(, 27501) +HANDLE_BAT(, 27502) +HANDLE_BAT(, 27503) +HANDLE_BAT(, 27504) +HANDLE_BAT(, 27505) +HANDLE_BAT(, 27506) +HANDLE_BAT(, 27507) +HANDLE_BAT(, 27508) +HANDLE_BAT(, 27509) +HANDLE_BAT(, 27510) +HANDLE_BAT(, 27511) +HANDLE_BAT(, 27512) +HANDLE_BAT(, 27513) +HANDLE_BAT(, 27514) +HANDLE_BAT(, 27515) +HANDLE_BAT(, 27516) +HANDLE_BAT(, 27517) +HANDLE_BAT(, 27518) +HANDLE_BAT(, 27519) +HANDLE_BAT(, 27520) +HANDLE_BAT(, 27521) +HANDLE_BAT(, 27522) +HANDLE_BAT(, 27523) +HANDLE_BAT(, 27524) +HANDLE_BAT(, 27525) +HANDLE_BAT(, 27526) +HANDLE_BAT(, 27527) +HANDLE_BAT(, 27528) +HANDLE_BAT(, 27529) +HANDLE_BAT(, 27530) +HANDLE_BAT(, 27531) +HANDLE_BAT(, 27532) +HANDLE_BAT(, 27533) +HANDLE_BAT(, 27534) +HANDLE_BAT(, 27535) +HANDLE_BAT(, 27536) +HANDLE_BAT(, 27537) +HANDLE_BAT(, 27538) +HANDLE_BAT(, 27539) +HANDLE_BAT(, 27540) +HANDLE_BAT(, 27541) +HANDLE_BAT(, 27542) +HANDLE_BAT(, 27543) +HANDLE_BAT(, 27544) +HANDLE_BAT(, 27545) +HANDLE_BAT(, 27546) +HANDLE_BAT(, 27547) +HANDLE_BAT(, 27548) +HANDLE_BAT(, 27549) +HANDLE_BAT(, 27550) +HANDLE_BAT(, 27551) +HANDLE_BAT(, 27552) +HANDLE_BAT(, 27553) +HANDLE_BAT(, 27554) +HANDLE_BAT(, 27555) +HANDLE_BAT(, 27556) +HANDLE_BAT(, 27557) +HANDLE_BAT(, 27558) +HANDLE_BAT(, 27559) +HANDLE_BAT(, 27560) +HANDLE_BAT(, 27561) +HANDLE_BAT(, 27562) +HANDLE_BAT(, 27563) +HANDLE_BAT(, 27564) +HANDLE_BAT(, 27565) +HANDLE_BAT(, 27566) +HANDLE_BAT(, 27567) +HANDLE_BAT(, 27568) +HANDLE_BAT(, 27569) +HANDLE_BAT(, 27570) +HANDLE_BAT(, 27571) +HANDLE_BAT(, 27572) +HANDLE_BAT(, 27573) +HANDLE_BAT(, 27574) +HANDLE_BAT(, 27575) +HANDLE_BAT(, 27576) +HANDLE_BAT(, 27577) +HANDLE_BAT(, 27578) +HANDLE_BAT(, 27579) +HANDLE_BAT(, 27580) +HANDLE_BAT(, 27581) +HANDLE_BAT(, 27582) +HANDLE_BAT(, 27583) +HANDLE_BAT(, 27584) +HANDLE_BAT(, 27585) +HANDLE_BAT(, 27586) +HANDLE_BAT(, 27587) +HANDLE_BAT(, 27588) +HANDLE_BAT(, 27589) +HANDLE_BAT(, 27590) +HANDLE_BAT(, 27591) +HANDLE_BAT(, 27592) +HANDLE_BAT(, 27593) +HANDLE_BAT(, 27594) +HANDLE_BAT(, 27595) +HANDLE_BAT(, 27596) +HANDLE_BAT(, 27597) +HANDLE_BAT(, 27598) +HANDLE_BAT(, 27599) +HANDLE_BAT(, 27600) +HANDLE_BAT(, 27601) +HANDLE_BAT(, 27602) +HANDLE_BAT(, 27603) +HANDLE_BAT(, 27604) +HANDLE_BAT(, 27605) +HANDLE_BAT(, 27606) +HANDLE_BAT(, 27607) +HANDLE_BAT(, 27608) +HANDLE_BAT(, 27609) +HANDLE_BAT(, 27610) +HANDLE_BAT(, 27611) +HANDLE_BAT(, 27612) +HANDLE_BAT(, 27613) +HANDLE_BAT(, 27614) +HANDLE_BAT(, 27615) +HANDLE_BAT(, 27616) +HANDLE_BAT(, 27617) +HANDLE_BAT(, 27618) +HANDLE_BAT(, 27619) +HANDLE_BAT(, 27620) +HANDLE_BAT(, 27621) +HANDLE_BAT(, 27622) +HANDLE_BAT(, 27623) +HANDLE_BAT(, 27624) +HANDLE_BAT(, 27625) +HANDLE_BAT(, 27626) +HANDLE_BAT(, 27627) +HANDLE_BAT(, 27628) +HANDLE_BAT(, 27629) +HANDLE_BAT(, 27630) +HANDLE_BAT(, 27631) +HANDLE_BAT(, 27632) +HANDLE_BAT(, 27633) +HANDLE_BAT(, 27634) +HANDLE_BAT(, 27635) +HANDLE_BAT(, 27636) +HANDLE_BAT(, 27637) +HANDLE_BAT(, 27638) +HANDLE_BAT(, 27639) +HANDLE_BAT(, 27640) +HANDLE_BAT(, 27641) +HANDLE_BAT(, 27642) +HANDLE_BAT(, 27643) +HANDLE_BAT(, 27644) +HANDLE_BAT(, 27645) +HANDLE_BAT(, 27646) +HANDLE_BAT(, 27647) +HANDLE_BAT(, 27648) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 26625) +HANDLE_BAT(APINT_TYPE_PREFIX, 26626) +HANDLE_BAT(APINT_TYPE_PREFIX, 26627) +HANDLE_BAT(APINT_TYPE_PREFIX, 26628) +HANDLE_BAT(APINT_TYPE_PREFIX, 26629) +HANDLE_BAT(APINT_TYPE_PREFIX, 26630) +HANDLE_BAT(APINT_TYPE_PREFIX, 26631) +HANDLE_BAT(APINT_TYPE_PREFIX, 26632) +HANDLE_BAT(APINT_TYPE_PREFIX, 26633) +HANDLE_BAT(APINT_TYPE_PREFIX, 26634) +HANDLE_BAT(APINT_TYPE_PREFIX, 26635) +HANDLE_BAT(APINT_TYPE_PREFIX, 26636) +HANDLE_BAT(APINT_TYPE_PREFIX, 26637) +HANDLE_BAT(APINT_TYPE_PREFIX, 26638) +HANDLE_BAT(APINT_TYPE_PREFIX, 26639) +HANDLE_BAT(APINT_TYPE_PREFIX, 26640) +HANDLE_BAT(APINT_TYPE_PREFIX, 26641) +HANDLE_BAT(APINT_TYPE_PREFIX, 26642) +HANDLE_BAT(APINT_TYPE_PREFIX, 26643) +HANDLE_BAT(APINT_TYPE_PREFIX, 26644) +HANDLE_BAT(APINT_TYPE_PREFIX, 26645) +HANDLE_BAT(APINT_TYPE_PREFIX, 26646) +HANDLE_BAT(APINT_TYPE_PREFIX, 26647) +HANDLE_BAT(APINT_TYPE_PREFIX, 26648) +HANDLE_BAT(APINT_TYPE_PREFIX, 26649) +HANDLE_BAT(APINT_TYPE_PREFIX, 26650) +HANDLE_BAT(APINT_TYPE_PREFIX, 26651) +HANDLE_BAT(APINT_TYPE_PREFIX, 26652) +HANDLE_BAT(APINT_TYPE_PREFIX, 26653) +HANDLE_BAT(APINT_TYPE_PREFIX, 26654) +HANDLE_BAT(APINT_TYPE_PREFIX, 26655) +HANDLE_BAT(APINT_TYPE_PREFIX, 26656) +HANDLE_BAT(APINT_TYPE_PREFIX, 26657) +HANDLE_BAT(APINT_TYPE_PREFIX, 26658) +HANDLE_BAT(APINT_TYPE_PREFIX, 26659) +HANDLE_BAT(APINT_TYPE_PREFIX, 26660) +HANDLE_BAT(APINT_TYPE_PREFIX, 26661) +HANDLE_BAT(APINT_TYPE_PREFIX, 26662) +HANDLE_BAT(APINT_TYPE_PREFIX, 26663) +HANDLE_BAT(APINT_TYPE_PREFIX, 26664) +HANDLE_BAT(APINT_TYPE_PREFIX, 26665) +HANDLE_BAT(APINT_TYPE_PREFIX, 26666) +HANDLE_BAT(APINT_TYPE_PREFIX, 26667) +HANDLE_BAT(APINT_TYPE_PREFIX, 26668) +HANDLE_BAT(APINT_TYPE_PREFIX, 26669) +HANDLE_BAT(APINT_TYPE_PREFIX, 26670) +HANDLE_BAT(APINT_TYPE_PREFIX, 26671) +HANDLE_BAT(APINT_TYPE_PREFIX, 26672) +HANDLE_BAT(APINT_TYPE_PREFIX, 26673) +HANDLE_BAT(APINT_TYPE_PREFIX, 26674) +HANDLE_BAT(APINT_TYPE_PREFIX, 26675) +HANDLE_BAT(APINT_TYPE_PREFIX, 26676) +HANDLE_BAT(APINT_TYPE_PREFIX, 26677) +HANDLE_BAT(APINT_TYPE_PREFIX, 26678) +HANDLE_BAT(APINT_TYPE_PREFIX, 26679) +HANDLE_BAT(APINT_TYPE_PREFIX, 26680) +HANDLE_BAT(APINT_TYPE_PREFIX, 26681) +HANDLE_BAT(APINT_TYPE_PREFIX, 26682) +HANDLE_BAT(APINT_TYPE_PREFIX, 26683) +HANDLE_BAT(APINT_TYPE_PREFIX, 26684) +HANDLE_BAT(APINT_TYPE_PREFIX, 26685) +HANDLE_BAT(APINT_TYPE_PREFIX, 26686) +HANDLE_BAT(APINT_TYPE_PREFIX, 26687) +HANDLE_BAT(APINT_TYPE_PREFIX, 26688) +HANDLE_BAT(APINT_TYPE_PREFIX, 26689) +HANDLE_BAT(APINT_TYPE_PREFIX, 26690) +HANDLE_BAT(APINT_TYPE_PREFIX, 26691) +HANDLE_BAT(APINT_TYPE_PREFIX, 26692) +HANDLE_BAT(APINT_TYPE_PREFIX, 26693) +HANDLE_BAT(APINT_TYPE_PREFIX, 26694) +HANDLE_BAT(APINT_TYPE_PREFIX, 26695) +HANDLE_BAT(APINT_TYPE_PREFIX, 26696) +HANDLE_BAT(APINT_TYPE_PREFIX, 26697) +HANDLE_BAT(APINT_TYPE_PREFIX, 26698) +HANDLE_BAT(APINT_TYPE_PREFIX, 26699) +HANDLE_BAT(APINT_TYPE_PREFIX, 26700) +HANDLE_BAT(APINT_TYPE_PREFIX, 26701) +HANDLE_BAT(APINT_TYPE_PREFIX, 26702) +HANDLE_BAT(APINT_TYPE_PREFIX, 26703) +HANDLE_BAT(APINT_TYPE_PREFIX, 26704) +HANDLE_BAT(APINT_TYPE_PREFIX, 26705) +HANDLE_BAT(APINT_TYPE_PREFIX, 26706) +HANDLE_BAT(APINT_TYPE_PREFIX, 26707) +HANDLE_BAT(APINT_TYPE_PREFIX, 26708) +HANDLE_BAT(APINT_TYPE_PREFIX, 26709) +HANDLE_BAT(APINT_TYPE_PREFIX, 26710) +HANDLE_BAT(APINT_TYPE_PREFIX, 26711) +HANDLE_BAT(APINT_TYPE_PREFIX, 26712) +HANDLE_BAT(APINT_TYPE_PREFIX, 26713) +HANDLE_BAT(APINT_TYPE_PREFIX, 26714) +HANDLE_BAT(APINT_TYPE_PREFIX, 26715) +HANDLE_BAT(APINT_TYPE_PREFIX, 26716) +HANDLE_BAT(APINT_TYPE_PREFIX, 26717) +HANDLE_BAT(APINT_TYPE_PREFIX, 26718) +HANDLE_BAT(APINT_TYPE_PREFIX, 26719) +HANDLE_BAT(APINT_TYPE_PREFIX, 26720) +HANDLE_BAT(APINT_TYPE_PREFIX, 26721) +HANDLE_BAT(APINT_TYPE_PREFIX, 26722) +HANDLE_BAT(APINT_TYPE_PREFIX, 26723) +HANDLE_BAT(APINT_TYPE_PREFIX, 26724) +HANDLE_BAT(APINT_TYPE_PREFIX, 26725) +HANDLE_BAT(APINT_TYPE_PREFIX, 26726) +HANDLE_BAT(APINT_TYPE_PREFIX, 26727) +HANDLE_BAT(APINT_TYPE_PREFIX, 26728) +HANDLE_BAT(APINT_TYPE_PREFIX, 26729) +HANDLE_BAT(APINT_TYPE_PREFIX, 26730) +HANDLE_BAT(APINT_TYPE_PREFIX, 26731) +HANDLE_BAT(APINT_TYPE_PREFIX, 26732) +HANDLE_BAT(APINT_TYPE_PREFIX, 26733) +HANDLE_BAT(APINT_TYPE_PREFIX, 26734) +HANDLE_BAT(APINT_TYPE_PREFIX, 26735) +HANDLE_BAT(APINT_TYPE_PREFIX, 26736) +HANDLE_BAT(APINT_TYPE_PREFIX, 26737) +HANDLE_BAT(APINT_TYPE_PREFIX, 26738) +HANDLE_BAT(APINT_TYPE_PREFIX, 26739) +HANDLE_BAT(APINT_TYPE_PREFIX, 26740) +HANDLE_BAT(APINT_TYPE_PREFIX, 26741) +HANDLE_BAT(APINT_TYPE_PREFIX, 26742) +HANDLE_BAT(APINT_TYPE_PREFIX, 26743) +HANDLE_BAT(APINT_TYPE_PREFIX, 26744) +HANDLE_BAT(APINT_TYPE_PREFIX, 26745) +HANDLE_BAT(APINT_TYPE_PREFIX, 26746) +HANDLE_BAT(APINT_TYPE_PREFIX, 26747) +HANDLE_BAT(APINT_TYPE_PREFIX, 26748) +HANDLE_BAT(APINT_TYPE_PREFIX, 26749) +HANDLE_BAT(APINT_TYPE_PREFIX, 26750) +HANDLE_BAT(APINT_TYPE_PREFIX, 26751) +HANDLE_BAT(APINT_TYPE_PREFIX, 26752) +HANDLE_BAT(APINT_TYPE_PREFIX, 26753) +HANDLE_BAT(APINT_TYPE_PREFIX, 26754) +HANDLE_BAT(APINT_TYPE_PREFIX, 26755) +HANDLE_BAT(APINT_TYPE_PREFIX, 26756) +HANDLE_BAT(APINT_TYPE_PREFIX, 26757) +HANDLE_BAT(APINT_TYPE_PREFIX, 26758) +HANDLE_BAT(APINT_TYPE_PREFIX, 26759) +HANDLE_BAT(APINT_TYPE_PREFIX, 26760) +HANDLE_BAT(APINT_TYPE_PREFIX, 26761) +HANDLE_BAT(APINT_TYPE_PREFIX, 26762) +HANDLE_BAT(APINT_TYPE_PREFIX, 26763) +HANDLE_BAT(APINT_TYPE_PREFIX, 26764) +HANDLE_BAT(APINT_TYPE_PREFIX, 26765) +HANDLE_BAT(APINT_TYPE_PREFIX, 26766) +HANDLE_BAT(APINT_TYPE_PREFIX, 26767) +HANDLE_BAT(APINT_TYPE_PREFIX, 26768) +HANDLE_BAT(APINT_TYPE_PREFIX, 26769) +HANDLE_BAT(APINT_TYPE_PREFIX, 26770) +HANDLE_BAT(APINT_TYPE_PREFIX, 26771) +HANDLE_BAT(APINT_TYPE_PREFIX, 26772) +HANDLE_BAT(APINT_TYPE_PREFIX, 26773) +HANDLE_BAT(APINT_TYPE_PREFIX, 26774) +HANDLE_BAT(APINT_TYPE_PREFIX, 26775) +HANDLE_BAT(APINT_TYPE_PREFIX, 26776) +HANDLE_BAT(APINT_TYPE_PREFIX, 26777) +HANDLE_BAT(APINT_TYPE_PREFIX, 26778) +HANDLE_BAT(APINT_TYPE_PREFIX, 26779) +HANDLE_BAT(APINT_TYPE_PREFIX, 26780) +HANDLE_BAT(APINT_TYPE_PREFIX, 26781) +HANDLE_BAT(APINT_TYPE_PREFIX, 26782) +HANDLE_BAT(APINT_TYPE_PREFIX, 26783) +HANDLE_BAT(APINT_TYPE_PREFIX, 26784) +HANDLE_BAT(APINT_TYPE_PREFIX, 26785) +HANDLE_BAT(APINT_TYPE_PREFIX, 26786) +HANDLE_BAT(APINT_TYPE_PREFIX, 26787) +HANDLE_BAT(APINT_TYPE_PREFIX, 26788) +HANDLE_BAT(APINT_TYPE_PREFIX, 26789) +HANDLE_BAT(APINT_TYPE_PREFIX, 26790) +HANDLE_BAT(APINT_TYPE_PREFIX, 26791) +HANDLE_BAT(APINT_TYPE_PREFIX, 26792) +HANDLE_BAT(APINT_TYPE_PREFIX, 26793) +HANDLE_BAT(APINT_TYPE_PREFIX, 26794) +HANDLE_BAT(APINT_TYPE_PREFIX, 26795) +HANDLE_BAT(APINT_TYPE_PREFIX, 26796) +HANDLE_BAT(APINT_TYPE_PREFIX, 26797) +HANDLE_BAT(APINT_TYPE_PREFIX, 26798) +HANDLE_BAT(APINT_TYPE_PREFIX, 26799) +HANDLE_BAT(APINT_TYPE_PREFIX, 26800) +HANDLE_BAT(APINT_TYPE_PREFIX, 26801) +HANDLE_BAT(APINT_TYPE_PREFIX, 26802) +HANDLE_BAT(APINT_TYPE_PREFIX, 26803) +HANDLE_BAT(APINT_TYPE_PREFIX, 26804) +HANDLE_BAT(APINT_TYPE_PREFIX, 26805) +HANDLE_BAT(APINT_TYPE_PREFIX, 26806) +HANDLE_BAT(APINT_TYPE_PREFIX, 26807) +HANDLE_BAT(APINT_TYPE_PREFIX, 26808) +HANDLE_BAT(APINT_TYPE_PREFIX, 26809) +HANDLE_BAT(APINT_TYPE_PREFIX, 26810) +HANDLE_BAT(APINT_TYPE_PREFIX, 26811) +HANDLE_BAT(APINT_TYPE_PREFIX, 26812) +HANDLE_BAT(APINT_TYPE_PREFIX, 26813) +HANDLE_BAT(APINT_TYPE_PREFIX, 26814) +HANDLE_BAT(APINT_TYPE_PREFIX, 26815) +HANDLE_BAT(APINT_TYPE_PREFIX, 26816) +HANDLE_BAT(APINT_TYPE_PREFIX, 26817) +HANDLE_BAT(APINT_TYPE_PREFIX, 26818) +HANDLE_BAT(APINT_TYPE_PREFIX, 26819) +HANDLE_BAT(APINT_TYPE_PREFIX, 26820) +HANDLE_BAT(APINT_TYPE_PREFIX, 26821) +HANDLE_BAT(APINT_TYPE_PREFIX, 26822) +HANDLE_BAT(APINT_TYPE_PREFIX, 26823) +HANDLE_BAT(APINT_TYPE_PREFIX, 26824) +HANDLE_BAT(APINT_TYPE_PREFIX, 26825) +HANDLE_BAT(APINT_TYPE_PREFIX, 26826) +HANDLE_BAT(APINT_TYPE_PREFIX, 26827) +HANDLE_BAT(APINT_TYPE_PREFIX, 26828) +HANDLE_BAT(APINT_TYPE_PREFIX, 26829) +HANDLE_BAT(APINT_TYPE_PREFIX, 26830) +HANDLE_BAT(APINT_TYPE_PREFIX, 26831) +HANDLE_BAT(APINT_TYPE_PREFIX, 26832) +HANDLE_BAT(APINT_TYPE_PREFIX, 26833) +HANDLE_BAT(APINT_TYPE_PREFIX, 26834) +HANDLE_BAT(APINT_TYPE_PREFIX, 26835) +HANDLE_BAT(APINT_TYPE_PREFIX, 26836) +HANDLE_BAT(APINT_TYPE_PREFIX, 26837) +HANDLE_BAT(APINT_TYPE_PREFIX, 26838) +HANDLE_BAT(APINT_TYPE_PREFIX, 26839) +HANDLE_BAT(APINT_TYPE_PREFIX, 26840) +HANDLE_BAT(APINT_TYPE_PREFIX, 26841) +HANDLE_BAT(APINT_TYPE_PREFIX, 26842) +HANDLE_BAT(APINT_TYPE_PREFIX, 26843) +HANDLE_BAT(APINT_TYPE_PREFIX, 26844) +HANDLE_BAT(APINT_TYPE_PREFIX, 26845) +HANDLE_BAT(APINT_TYPE_PREFIX, 26846) +HANDLE_BAT(APINT_TYPE_PREFIX, 26847) +HANDLE_BAT(APINT_TYPE_PREFIX, 26848) +HANDLE_BAT(APINT_TYPE_PREFIX, 26849) +HANDLE_BAT(APINT_TYPE_PREFIX, 26850) +HANDLE_BAT(APINT_TYPE_PREFIX, 26851) +HANDLE_BAT(APINT_TYPE_PREFIX, 26852) +HANDLE_BAT(APINT_TYPE_PREFIX, 26853) +HANDLE_BAT(APINT_TYPE_PREFIX, 26854) +HANDLE_BAT(APINT_TYPE_PREFIX, 26855) +HANDLE_BAT(APINT_TYPE_PREFIX, 26856) +HANDLE_BAT(APINT_TYPE_PREFIX, 26857) +HANDLE_BAT(APINT_TYPE_PREFIX, 26858) +HANDLE_BAT(APINT_TYPE_PREFIX, 26859) +HANDLE_BAT(APINT_TYPE_PREFIX, 26860) +HANDLE_BAT(APINT_TYPE_PREFIX, 26861) +HANDLE_BAT(APINT_TYPE_PREFIX, 26862) +HANDLE_BAT(APINT_TYPE_PREFIX, 26863) +HANDLE_BAT(APINT_TYPE_PREFIX, 26864) +HANDLE_BAT(APINT_TYPE_PREFIX, 26865) +HANDLE_BAT(APINT_TYPE_PREFIX, 26866) +HANDLE_BAT(APINT_TYPE_PREFIX, 26867) +HANDLE_BAT(APINT_TYPE_PREFIX, 26868) +HANDLE_BAT(APINT_TYPE_PREFIX, 26869) +HANDLE_BAT(APINT_TYPE_PREFIX, 26870) +HANDLE_BAT(APINT_TYPE_PREFIX, 26871) +HANDLE_BAT(APINT_TYPE_PREFIX, 26872) +HANDLE_BAT(APINT_TYPE_PREFIX, 26873) +HANDLE_BAT(APINT_TYPE_PREFIX, 26874) +HANDLE_BAT(APINT_TYPE_PREFIX, 26875) +HANDLE_BAT(APINT_TYPE_PREFIX, 26876) +HANDLE_BAT(APINT_TYPE_PREFIX, 26877) +HANDLE_BAT(APINT_TYPE_PREFIX, 26878) +HANDLE_BAT(APINT_TYPE_PREFIX, 26879) +HANDLE_BAT(APINT_TYPE_PREFIX, 26880) +HANDLE_BAT(APINT_TYPE_PREFIX, 26881) +HANDLE_BAT(APINT_TYPE_PREFIX, 26882) +HANDLE_BAT(APINT_TYPE_PREFIX, 26883) +HANDLE_BAT(APINT_TYPE_PREFIX, 26884) +HANDLE_BAT(APINT_TYPE_PREFIX, 26885) +HANDLE_BAT(APINT_TYPE_PREFIX, 26886) +HANDLE_BAT(APINT_TYPE_PREFIX, 26887) +HANDLE_BAT(APINT_TYPE_PREFIX, 26888) +HANDLE_BAT(APINT_TYPE_PREFIX, 26889) +HANDLE_BAT(APINT_TYPE_PREFIX, 26890) +HANDLE_BAT(APINT_TYPE_PREFIX, 26891) +HANDLE_BAT(APINT_TYPE_PREFIX, 26892) +HANDLE_BAT(APINT_TYPE_PREFIX, 26893) +HANDLE_BAT(APINT_TYPE_PREFIX, 26894) +HANDLE_BAT(APINT_TYPE_PREFIX, 26895) +HANDLE_BAT(APINT_TYPE_PREFIX, 26896) +HANDLE_BAT(APINT_TYPE_PREFIX, 26897) +HANDLE_BAT(APINT_TYPE_PREFIX, 26898) +HANDLE_BAT(APINT_TYPE_PREFIX, 26899) +HANDLE_BAT(APINT_TYPE_PREFIX, 26900) +HANDLE_BAT(APINT_TYPE_PREFIX, 26901) +HANDLE_BAT(APINT_TYPE_PREFIX, 26902) +HANDLE_BAT(APINT_TYPE_PREFIX, 26903) +HANDLE_BAT(APINT_TYPE_PREFIX, 26904) +HANDLE_BAT(APINT_TYPE_PREFIX, 26905) +HANDLE_BAT(APINT_TYPE_PREFIX, 26906) +HANDLE_BAT(APINT_TYPE_PREFIX, 26907) +HANDLE_BAT(APINT_TYPE_PREFIX, 26908) +HANDLE_BAT(APINT_TYPE_PREFIX, 26909) +HANDLE_BAT(APINT_TYPE_PREFIX, 26910) +HANDLE_BAT(APINT_TYPE_PREFIX, 26911) +HANDLE_BAT(APINT_TYPE_PREFIX, 26912) +HANDLE_BAT(APINT_TYPE_PREFIX, 26913) +HANDLE_BAT(APINT_TYPE_PREFIX, 26914) +HANDLE_BAT(APINT_TYPE_PREFIX, 26915) +HANDLE_BAT(APINT_TYPE_PREFIX, 26916) +HANDLE_BAT(APINT_TYPE_PREFIX, 26917) +HANDLE_BAT(APINT_TYPE_PREFIX, 26918) +HANDLE_BAT(APINT_TYPE_PREFIX, 26919) +HANDLE_BAT(APINT_TYPE_PREFIX, 26920) +HANDLE_BAT(APINT_TYPE_PREFIX, 26921) +HANDLE_BAT(APINT_TYPE_PREFIX, 26922) +HANDLE_BAT(APINT_TYPE_PREFIX, 26923) +HANDLE_BAT(APINT_TYPE_PREFIX, 26924) +HANDLE_BAT(APINT_TYPE_PREFIX, 26925) +HANDLE_BAT(APINT_TYPE_PREFIX, 26926) +HANDLE_BAT(APINT_TYPE_PREFIX, 26927) +HANDLE_BAT(APINT_TYPE_PREFIX, 26928) +HANDLE_BAT(APINT_TYPE_PREFIX, 26929) +HANDLE_BAT(APINT_TYPE_PREFIX, 26930) +HANDLE_BAT(APINT_TYPE_PREFIX, 26931) +HANDLE_BAT(APINT_TYPE_PREFIX, 26932) +HANDLE_BAT(APINT_TYPE_PREFIX, 26933) +HANDLE_BAT(APINT_TYPE_PREFIX, 26934) +HANDLE_BAT(APINT_TYPE_PREFIX, 26935) +HANDLE_BAT(APINT_TYPE_PREFIX, 26936) +HANDLE_BAT(APINT_TYPE_PREFIX, 26937) +HANDLE_BAT(APINT_TYPE_PREFIX, 26938) +HANDLE_BAT(APINT_TYPE_PREFIX, 26939) +HANDLE_BAT(APINT_TYPE_PREFIX, 26940) +HANDLE_BAT(APINT_TYPE_PREFIX, 26941) +HANDLE_BAT(APINT_TYPE_PREFIX, 26942) +HANDLE_BAT(APINT_TYPE_PREFIX, 26943) +HANDLE_BAT(APINT_TYPE_PREFIX, 26944) +HANDLE_BAT(APINT_TYPE_PREFIX, 26945) +HANDLE_BAT(APINT_TYPE_PREFIX, 26946) +HANDLE_BAT(APINT_TYPE_PREFIX, 26947) +HANDLE_BAT(APINT_TYPE_PREFIX, 26948) +HANDLE_BAT(APINT_TYPE_PREFIX, 26949) +HANDLE_BAT(APINT_TYPE_PREFIX, 26950) +HANDLE_BAT(APINT_TYPE_PREFIX, 26951) +HANDLE_BAT(APINT_TYPE_PREFIX, 26952) +HANDLE_BAT(APINT_TYPE_PREFIX, 26953) +HANDLE_BAT(APINT_TYPE_PREFIX, 26954) +HANDLE_BAT(APINT_TYPE_PREFIX, 26955) +HANDLE_BAT(APINT_TYPE_PREFIX, 26956) +HANDLE_BAT(APINT_TYPE_PREFIX, 26957) +HANDLE_BAT(APINT_TYPE_PREFIX, 26958) +HANDLE_BAT(APINT_TYPE_PREFIX, 26959) +HANDLE_BAT(APINT_TYPE_PREFIX, 26960) +HANDLE_BAT(APINT_TYPE_PREFIX, 26961) +HANDLE_BAT(APINT_TYPE_PREFIX, 26962) +HANDLE_BAT(APINT_TYPE_PREFIX, 26963) +HANDLE_BAT(APINT_TYPE_PREFIX, 26964) +HANDLE_BAT(APINT_TYPE_PREFIX, 26965) +HANDLE_BAT(APINT_TYPE_PREFIX, 26966) +HANDLE_BAT(APINT_TYPE_PREFIX, 26967) +HANDLE_BAT(APINT_TYPE_PREFIX, 26968) +HANDLE_BAT(APINT_TYPE_PREFIX, 26969) +HANDLE_BAT(APINT_TYPE_PREFIX, 26970) +HANDLE_BAT(APINT_TYPE_PREFIX, 26971) +HANDLE_BAT(APINT_TYPE_PREFIX, 26972) +HANDLE_BAT(APINT_TYPE_PREFIX, 26973) +HANDLE_BAT(APINT_TYPE_PREFIX, 26974) +HANDLE_BAT(APINT_TYPE_PREFIX, 26975) +HANDLE_BAT(APINT_TYPE_PREFIX, 26976) +HANDLE_BAT(APINT_TYPE_PREFIX, 26977) +HANDLE_BAT(APINT_TYPE_PREFIX, 26978) +HANDLE_BAT(APINT_TYPE_PREFIX, 26979) +HANDLE_BAT(APINT_TYPE_PREFIX, 26980) +HANDLE_BAT(APINT_TYPE_PREFIX, 26981) +HANDLE_BAT(APINT_TYPE_PREFIX, 26982) +HANDLE_BAT(APINT_TYPE_PREFIX, 26983) +HANDLE_BAT(APINT_TYPE_PREFIX, 26984) +HANDLE_BAT(APINT_TYPE_PREFIX, 26985) +HANDLE_BAT(APINT_TYPE_PREFIX, 26986) +HANDLE_BAT(APINT_TYPE_PREFIX, 26987) +HANDLE_BAT(APINT_TYPE_PREFIX, 26988) +HANDLE_BAT(APINT_TYPE_PREFIX, 26989) +HANDLE_BAT(APINT_TYPE_PREFIX, 26990) +HANDLE_BAT(APINT_TYPE_PREFIX, 26991) +HANDLE_BAT(APINT_TYPE_PREFIX, 26992) +HANDLE_BAT(APINT_TYPE_PREFIX, 26993) +HANDLE_BAT(APINT_TYPE_PREFIX, 26994) +HANDLE_BAT(APINT_TYPE_PREFIX, 26995) +HANDLE_BAT(APINT_TYPE_PREFIX, 26996) +HANDLE_BAT(APINT_TYPE_PREFIX, 26997) +HANDLE_BAT(APINT_TYPE_PREFIX, 26998) +HANDLE_BAT(APINT_TYPE_PREFIX, 26999) +HANDLE_BAT(APINT_TYPE_PREFIX, 27000) +HANDLE_BAT(APINT_TYPE_PREFIX, 27001) +HANDLE_BAT(APINT_TYPE_PREFIX, 27002) +HANDLE_BAT(APINT_TYPE_PREFIX, 27003) +HANDLE_BAT(APINT_TYPE_PREFIX, 27004) +HANDLE_BAT(APINT_TYPE_PREFIX, 27005) +HANDLE_BAT(APINT_TYPE_PREFIX, 27006) +HANDLE_BAT(APINT_TYPE_PREFIX, 27007) +HANDLE_BAT(APINT_TYPE_PREFIX, 27008) +HANDLE_BAT(APINT_TYPE_PREFIX, 27009) +HANDLE_BAT(APINT_TYPE_PREFIX, 27010) +HANDLE_BAT(APINT_TYPE_PREFIX, 27011) +HANDLE_BAT(APINT_TYPE_PREFIX, 27012) +HANDLE_BAT(APINT_TYPE_PREFIX, 27013) +HANDLE_BAT(APINT_TYPE_PREFIX, 27014) +HANDLE_BAT(APINT_TYPE_PREFIX, 27015) +HANDLE_BAT(APINT_TYPE_PREFIX, 27016) +HANDLE_BAT(APINT_TYPE_PREFIX, 27017) +HANDLE_BAT(APINT_TYPE_PREFIX, 27018) +HANDLE_BAT(APINT_TYPE_PREFIX, 27019) +HANDLE_BAT(APINT_TYPE_PREFIX, 27020) +HANDLE_BAT(APINT_TYPE_PREFIX, 27021) +HANDLE_BAT(APINT_TYPE_PREFIX, 27022) +HANDLE_BAT(APINT_TYPE_PREFIX, 27023) +HANDLE_BAT(APINT_TYPE_PREFIX, 27024) +HANDLE_BAT(APINT_TYPE_PREFIX, 27025) +HANDLE_BAT(APINT_TYPE_PREFIX, 27026) +HANDLE_BAT(APINT_TYPE_PREFIX, 27027) +HANDLE_BAT(APINT_TYPE_PREFIX, 27028) +HANDLE_BAT(APINT_TYPE_PREFIX, 27029) +HANDLE_BAT(APINT_TYPE_PREFIX, 27030) +HANDLE_BAT(APINT_TYPE_PREFIX, 27031) +HANDLE_BAT(APINT_TYPE_PREFIX, 27032) +HANDLE_BAT(APINT_TYPE_PREFIX, 27033) +HANDLE_BAT(APINT_TYPE_PREFIX, 27034) +HANDLE_BAT(APINT_TYPE_PREFIX, 27035) +HANDLE_BAT(APINT_TYPE_PREFIX, 27036) +HANDLE_BAT(APINT_TYPE_PREFIX, 27037) +HANDLE_BAT(APINT_TYPE_PREFIX, 27038) +HANDLE_BAT(APINT_TYPE_PREFIX, 27039) +HANDLE_BAT(APINT_TYPE_PREFIX, 27040) +HANDLE_BAT(APINT_TYPE_PREFIX, 27041) +HANDLE_BAT(APINT_TYPE_PREFIX, 27042) +HANDLE_BAT(APINT_TYPE_PREFIX, 27043) +HANDLE_BAT(APINT_TYPE_PREFIX, 27044) +HANDLE_BAT(APINT_TYPE_PREFIX, 27045) +HANDLE_BAT(APINT_TYPE_PREFIX, 27046) +HANDLE_BAT(APINT_TYPE_PREFIX, 27047) +HANDLE_BAT(APINT_TYPE_PREFIX, 27048) +HANDLE_BAT(APINT_TYPE_PREFIX, 27049) +HANDLE_BAT(APINT_TYPE_PREFIX, 27050) +HANDLE_BAT(APINT_TYPE_PREFIX, 27051) +HANDLE_BAT(APINT_TYPE_PREFIX, 27052) +HANDLE_BAT(APINT_TYPE_PREFIX, 27053) +HANDLE_BAT(APINT_TYPE_PREFIX, 27054) +HANDLE_BAT(APINT_TYPE_PREFIX, 27055) +HANDLE_BAT(APINT_TYPE_PREFIX, 27056) +HANDLE_BAT(APINT_TYPE_PREFIX, 27057) +HANDLE_BAT(APINT_TYPE_PREFIX, 27058) +HANDLE_BAT(APINT_TYPE_PREFIX, 27059) +HANDLE_BAT(APINT_TYPE_PREFIX, 27060) +HANDLE_BAT(APINT_TYPE_PREFIX, 27061) +HANDLE_BAT(APINT_TYPE_PREFIX, 27062) +HANDLE_BAT(APINT_TYPE_PREFIX, 27063) +HANDLE_BAT(APINT_TYPE_PREFIX, 27064) +HANDLE_BAT(APINT_TYPE_PREFIX, 27065) +HANDLE_BAT(APINT_TYPE_PREFIX, 27066) +HANDLE_BAT(APINT_TYPE_PREFIX, 27067) +HANDLE_BAT(APINT_TYPE_PREFIX, 27068) +HANDLE_BAT(APINT_TYPE_PREFIX, 27069) +HANDLE_BAT(APINT_TYPE_PREFIX, 27070) +HANDLE_BAT(APINT_TYPE_PREFIX, 27071) +HANDLE_BAT(APINT_TYPE_PREFIX, 27072) +HANDLE_BAT(APINT_TYPE_PREFIX, 27073) +HANDLE_BAT(APINT_TYPE_PREFIX, 27074) +HANDLE_BAT(APINT_TYPE_PREFIX, 27075) +HANDLE_BAT(APINT_TYPE_PREFIX, 27076) +HANDLE_BAT(APINT_TYPE_PREFIX, 27077) +HANDLE_BAT(APINT_TYPE_PREFIX, 27078) +HANDLE_BAT(APINT_TYPE_PREFIX, 27079) +HANDLE_BAT(APINT_TYPE_PREFIX, 27080) +HANDLE_BAT(APINT_TYPE_PREFIX, 27081) +HANDLE_BAT(APINT_TYPE_PREFIX, 27082) +HANDLE_BAT(APINT_TYPE_PREFIX, 27083) +HANDLE_BAT(APINT_TYPE_PREFIX, 27084) +HANDLE_BAT(APINT_TYPE_PREFIX, 27085) +HANDLE_BAT(APINT_TYPE_PREFIX, 27086) +HANDLE_BAT(APINT_TYPE_PREFIX, 27087) +HANDLE_BAT(APINT_TYPE_PREFIX, 27088) +HANDLE_BAT(APINT_TYPE_PREFIX, 27089) +HANDLE_BAT(APINT_TYPE_PREFIX, 27090) +HANDLE_BAT(APINT_TYPE_PREFIX, 27091) +HANDLE_BAT(APINT_TYPE_PREFIX, 27092) +HANDLE_BAT(APINT_TYPE_PREFIX, 27093) +HANDLE_BAT(APINT_TYPE_PREFIX, 27094) +HANDLE_BAT(APINT_TYPE_PREFIX, 27095) +HANDLE_BAT(APINT_TYPE_PREFIX, 27096) +HANDLE_BAT(APINT_TYPE_PREFIX, 27097) +HANDLE_BAT(APINT_TYPE_PREFIX, 27098) +HANDLE_BAT(APINT_TYPE_PREFIX, 27099) +HANDLE_BAT(APINT_TYPE_PREFIX, 27100) +HANDLE_BAT(APINT_TYPE_PREFIX, 27101) +HANDLE_BAT(APINT_TYPE_PREFIX, 27102) +HANDLE_BAT(APINT_TYPE_PREFIX, 27103) +HANDLE_BAT(APINT_TYPE_PREFIX, 27104) +HANDLE_BAT(APINT_TYPE_PREFIX, 27105) +HANDLE_BAT(APINT_TYPE_PREFIX, 27106) +HANDLE_BAT(APINT_TYPE_PREFIX, 27107) +HANDLE_BAT(APINT_TYPE_PREFIX, 27108) +HANDLE_BAT(APINT_TYPE_PREFIX, 27109) +HANDLE_BAT(APINT_TYPE_PREFIX, 27110) +HANDLE_BAT(APINT_TYPE_PREFIX, 27111) +HANDLE_BAT(APINT_TYPE_PREFIX, 27112) +HANDLE_BAT(APINT_TYPE_PREFIX, 27113) +HANDLE_BAT(APINT_TYPE_PREFIX, 27114) +HANDLE_BAT(APINT_TYPE_PREFIX, 27115) +HANDLE_BAT(APINT_TYPE_PREFIX, 27116) +HANDLE_BAT(APINT_TYPE_PREFIX, 27117) +HANDLE_BAT(APINT_TYPE_PREFIX, 27118) +HANDLE_BAT(APINT_TYPE_PREFIX, 27119) +HANDLE_BAT(APINT_TYPE_PREFIX, 27120) +HANDLE_BAT(APINT_TYPE_PREFIX, 27121) +HANDLE_BAT(APINT_TYPE_PREFIX, 27122) +HANDLE_BAT(APINT_TYPE_PREFIX, 27123) +HANDLE_BAT(APINT_TYPE_PREFIX, 27124) +HANDLE_BAT(APINT_TYPE_PREFIX, 27125) +HANDLE_BAT(APINT_TYPE_PREFIX, 27126) +HANDLE_BAT(APINT_TYPE_PREFIX, 27127) +HANDLE_BAT(APINT_TYPE_PREFIX, 27128) +HANDLE_BAT(APINT_TYPE_PREFIX, 27129) +HANDLE_BAT(APINT_TYPE_PREFIX, 27130) +HANDLE_BAT(APINT_TYPE_PREFIX, 27131) +HANDLE_BAT(APINT_TYPE_PREFIX, 27132) +HANDLE_BAT(APINT_TYPE_PREFIX, 27133) +HANDLE_BAT(APINT_TYPE_PREFIX, 27134) +HANDLE_BAT(APINT_TYPE_PREFIX, 27135) +HANDLE_BAT(APINT_TYPE_PREFIX, 27136) +HANDLE_BAT(APINT_TYPE_PREFIX, 27137) +HANDLE_BAT(APINT_TYPE_PREFIX, 27138) +HANDLE_BAT(APINT_TYPE_PREFIX, 27139) +HANDLE_BAT(APINT_TYPE_PREFIX, 27140) +HANDLE_BAT(APINT_TYPE_PREFIX, 27141) +HANDLE_BAT(APINT_TYPE_PREFIX, 27142) +HANDLE_BAT(APINT_TYPE_PREFIX, 27143) +HANDLE_BAT(APINT_TYPE_PREFIX, 27144) +HANDLE_BAT(APINT_TYPE_PREFIX, 27145) +HANDLE_BAT(APINT_TYPE_PREFIX, 27146) +HANDLE_BAT(APINT_TYPE_PREFIX, 27147) +HANDLE_BAT(APINT_TYPE_PREFIX, 27148) +HANDLE_BAT(APINT_TYPE_PREFIX, 27149) +HANDLE_BAT(APINT_TYPE_PREFIX, 27150) +HANDLE_BAT(APINT_TYPE_PREFIX, 27151) +HANDLE_BAT(APINT_TYPE_PREFIX, 27152) +HANDLE_BAT(APINT_TYPE_PREFIX, 27153) +HANDLE_BAT(APINT_TYPE_PREFIX, 27154) +HANDLE_BAT(APINT_TYPE_PREFIX, 27155) +HANDLE_BAT(APINT_TYPE_PREFIX, 27156) +HANDLE_BAT(APINT_TYPE_PREFIX, 27157) +HANDLE_BAT(APINT_TYPE_PREFIX, 27158) +HANDLE_BAT(APINT_TYPE_PREFIX, 27159) +HANDLE_BAT(APINT_TYPE_PREFIX, 27160) +HANDLE_BAT(APINT_TYPE_PREFIX, 27161) +HANDLE_BAT(APINT_TYPE_PREFIX, 27162) +HANDLE_BAT(APINT_TYPE_PREFIX, 27163) +HANDLE_BAT(APINT_TYPE_PREFIX, 27164) +HANDLE_BAT(APINT_TYPE_PREFIX, 27165) +HANDLE_BAT(APINT_TYPE_PREFIX, 27166) +HANDLE_BAT(APINT_TYPE_PREFIX, 27167) +HANDLE_BAT(APINT_TYPE_PREFIX, 27168) +HANDLE_BAT(APINT_TYPE_PREFIX, 27169) +HANDLE_BAT(APINT_TYPE_PREFIX, 27170) +HANDLE_BAT(APINT_TYPE_PREFIX, 27171) +HANDLE_BAT(APINT_TYPE_PREFIX, 27172) +HANDLE_BAT(APINT_TYPE_PREFIX, 27173) +HANDLE_BAT(APINT_TYPE_PREFIX, 27174) +HANDLE_BAT(APINT_TYPE_PREFIX, 27175) +HANDLE_BAT(APINT_TYPE_PREFIX, 27176) +HANDLE_BAT(APINT_TYPE_PREFIX, 27177) +HANDLE_BAT(APINT_TYPE_PREFIX, 27178) +HANDLE_BAT(APINT_TYPE_PREFIX, 27179) +HANDLE_BAT(APINT_TYPE_PREFIX, 27180) +HANDLE_BAT(APINT_TYPE_PREFIX, 27181) +HANDLE_BAT(APINT_TYPE_PREFIX, 27182) +HANDLE_BAT(APINT_TYPE_PREFIX, 27183) +HANDLE_BAT(APINT_TYPE_PREFIX, 27184) +HANDLE_BAT(APINT_TYPE_PREFIX, 27185) +HANDLE_BAT(APINT_TYPE_PREFIX, 27186) +HANDLE_BAT(APINT_TYPE_PREFIX, 27187) +HANDLE_BAT(APINT_TYPE_PREFIX, 27188) +HANDLE_BAT(APINT_TYPE_PREFIX, 27189) +HANDLE_BAT(APINT_TYPE_PREFIX, 27190) +HANDLE_BAT(APINT_TYPE_PREFIX, 27191) +HANDLE_BAT(APINT_TYPE_PREFIX, 27192) +HANDLE_BAT(APINT_TYPE_PREFIX, 27193) +HANDLE_BAT(APINT_TYPE_PREFIX, 27194) +HANDLE_BAT(APINT_TYPE_PREFIX, 27195) +HANDLE_BAT(APINT_TYPE_PREFIX, 27196) +HANDLE_BAT(APINT_TYPE_PREFIX, 27197) +HANDLE_BAT(APINT_TYPE_PREFIX, 27198) +HANDLE_BAT(APINT_TYPE_PREFIX, 27199) +HANDLE_BAT(APINT_TYPE_PREFIX, 27200) +HANDLE_BAT(APINT_TYPE_PREFIX, 27201) +HANDLE_BAT(APINT_TYPE_PREFIX, 27202) +HANDLE_BAT(APINT_TYPE_PREFIX, 27203) +HANDLE_BAT(APINT_TYPE_PREFIX, 27204) +HANDLE_BAT(APINT_TYPE_PREFIX, 27205) +HANDLE_BAT(APINT_TYPE_PREFIX, 27206) +HANDLE_BAT(APINT_TYPE_PREFIX, 27207) +HANDLE_BAT(APINT_TYPE_PREFIX, 27208) +HANDLE_BAT(APINT_TYPE_PREFIX, 27209) +HANDLE_BAT(APINT_TYPE_PREFIX, 27210) +HANDLE_BAT(APINT_TYPE_PREFIX, 27211) +HANDLE_BAT(APINT_TYPE_PREFIX, 27212) +HANDLE_BAT(APINT_TYPE_PREFIX, 27213) +HANDLE_BAT(APINT_TYPE_PREFIX, 27214) +HANDLE_BAT(APINT_TYPE_PREFIX, 27215) +HANDLE_BAT(APINT_TYPE_PREFIX, 27216) +HANDLE_BAT(APINT_TYPE_PREFIX, 27217) +HANDLE_BAT(APINT_TYPE_PREFIX, 27218) +HANDLE_BAT(APINT_TYPE_PREFIX, 27219) +HANDLE_BAT(APINT_TYPE_PREFIX, 27220) +HANDLE_BAT(APINT_TYPE_PREFIX, 27221) +HANDLE_BAT(APINT_TYPE_PREFIX, 27222) +HANDLE_BAT(APINT_TYPE_PREFIX, 27223) +HANDLE_BAT(APINT_TYPE_PREFIX, 27224) +HANDLE_BAT(APINT_TYPE_PREFIX, 27225) +HANDLE_BAT(APINT_TYPE_PREFIX, 27226) +HANDLE_BAT(APINT_TYPE_PREFIX, 27227) +HANDLE_BAT(APINT_TYPE_PREFIX, 27228) +HANDLE_BAT(APINT_TYPE_PREFIX, 27229) +HANDLE_BAT(APINT_TYPE_PREFIX, 27230) +HANDLE_BAT(APINT_TYPE_PREFIX, 27231) +HANDLE_BAT(APINT_TYPE_PREFIX, 27232) +HANDLE_BAT(APINT_TYPE_PREFIX, 27233) +HANDLE_BAT(APINT_TYPE_PREFIX, 27234) +HANDLE_BAT(APINT_TYPE_PREFIX, 27235) +HANDLE_BAT(APINT_TYPE_PREFIX, 27236) +HANDLE_BAT(APINT_TYPE_PREFIX, 27237) +HANDLE_BAT(APINT_TYPE_PREFIX, 27238) +HANDLE_BAT(APINT_TYPE_PREFIX, 27239) +HANDLE_BAT(APINT_TYPE_PREFIX, 27240) +HANDLE_BAT(APINT_TYPE_PREFIX, 27241) +HANDLE_BAT(APINT_TYPE_PREFIX, 27242) +HANDLE_BAT(APINT_TYPE_PREFIX, 27243) +HANDLE_BAT(APINT_TYPE_PREFIX, 27244) +HANDLE_BAT(APINT_TYPE_PREFIX, 27245) +HANDLE_BAT(APINT_TYPE_PREFIX, 27246) +HANDLE_BAT(APINT_TYPE_PREFIX, 27247) +HANDLE_BAT(APINT_TYPE_PREFIX, 27248) +HANDLE_BAT(APINT_TYPE_PREFIX, 27249) +HANDLE_BAT(APINT_TYPE_PREFIX, 27250) +HANDLE_BAT(APINT_TYPE_PREFIX, 27251) +HANDLE_BAT(APINT_TYPE_PREFIX, 27252) +HANDLE_BAT(APINT_TYPE_PREFIX, 27253) +HANDLE_BAT(APINT_TYPE_PREFIX, 27254) +HANDLE_BAT(APINT_TYPE_PREFIX, 27255) +HANDLE_BAT(APINT_TYPE_PREFIX, 27256) +HANDLE_BAT(APINT_TYPE_PREFIX, 27257) +HANDLE_BAT(APINT_TYPE_PREFIX, 27258) +HANDLE_BAT(APINT_TYPE_PREFIX, 27259) +HANDLE_BAT(APINT_TYPE_PREFIX, 27260) +HANDLE_BAT(APINT_TYPE_PREFIX, 27261) +HANDLE_BAT(APINT_TYPE_PREFIX, 27262) +HANDLE_BAT(APINT_TYPE_PREFIX, 27263) +HANDLE_BAT(APINT_TYPE_PREFIX, 27264) +HANDLE_BAT(APINT_TYPE_PREFIX, 27265) +HANDLE_BAT(APINT_TYPE_PREFIX, 27266) +HANDLE_BAT(APINT_TYPE_PREFIX, 27267) +HANDLE_BAT(APINT_TYPE_PREFIX, 27268) +HANDLE_BAT(APINT_TYPE_PREFIX, 27269) +HANDLE_BAT(APINT_TYPE_PREFIX, 27270) +HANDLE_BAT(APINT_TYPE_PREFIX, 27271) +HANDLE_BAT(APINT_TYPE_PREFIX, 27272) +HANDLE_BAT(APINT_TYPE_PREFIX, 27273) +HANDLE_BAT(APINT_TYPE_PREFIX, 27274) +HANDLE_BAT(APINT_TYPE_PREFIX, 27275) +HANDLE_BAT(APINT_TYPE_PREFIX, 27276) +HANDLE_BAT(APINT_TYPE_PREFIX, 27277) +HANDLE_BAT(APINT_TYPE_PREFIX, 27278) +HANDLE_BAT(APINT_TYPE_PREFIX, 27279) +HANDLE_BAT(APINT_TYPE_PREFIX, 27280) +HANDLE_BAT(APINT_TYPE_PREFIX, 27281) +HANDLE_BAT(APINT_TYPE_PREFIX, 27282) +HANDLE_BAT(APINT_TYPE_PREFIX, 27283) +HANDLE_BAT(APINT_TYPE_PREFIX, 27284) +HANDLE_BAT(APINT_TYPE_PREFIX, 27285) +HANDLE_BAT(APINT_TYPE_PREFIX, 27286) +HANDLE_BAT(APINT_TYPE_PREFIX, 27287) +HANDLE_BAT(APINT_TYPE_PREFIX, 27288) +HANDLE_BAT(APINT_TYPE_PREFIX, 27289) +HANDLE_BAT(APINT_TYPE_PREFIX, 27290) +HANDLE_BAT(APINT_TYPE_PREFIX, 27291) +HANDLE_BAT(APINT_TYPE_PREFIX, 27292) +HANDLE_BAT(APINT_TYPE_PREFIX, 27293) +HANDLE_BAT(APINT_TYPE_PREFIX, 27294) +HANDLE_BAT(APINT_TYPE_PREFIX, 27295) +HANDLE_BAT(APINT_TYPE_PREFIX, 27296) +HANDLE_BAT(APINT_TYPE_PREFIX, 27297) +HANDLE_BAT(APINT_TYPE_PREFIX, 27298) +HANDLE_BAT(APINT_TYPE_PREFIX, 27299) +HANDLE_BAT(APINT_TYPE_PREFIX, 27300) +HANDLE_BAT(APINT_TYPE_PREFIX, 27301) +HANDLE_BAT(APINT_TYPE_PREFIX, 27302) +HANDLE_BAT(APINT_TYPE_PREFIX, 27303) +HANDLE_BAT(APINT_TYPE_PREFIX, 27304) +HANDLE_BAT(APINT_TYPE_PREFIX, 27305) +HANDLE_BAT(APINT_TYPE_PREFIX, 27306) +HANDLE_BAT(APINT_TYPE_PREFIX, 27307) +HANDLE_BAT(APINT_TYPE_PREFIX, 27308) +HANDLE_BAT(APINT_TYPE_PREFIX, 27309) +HANDLE_BAT(APINT_TYPE_PREFIX, 27310) +HANDLE_BAT(APINT_TYPE_PREFIX, 27311) +HANDLE_BAT(APINT_TYPE_PREFIX, 27312) +HANDLE_BAT(APINT_TYPE_PREFIX, 27313) +HANDLE_BAT(APINT_TYPE_PREFIX, 27314) +HANDLE_BAT(APINT_TYPE_PREFIX, 27315) +HANDLE_BAT(APINT_TYPE_PREFIX, 27316) +HANDLE_BAT(APINT_TYPE_PREFIX, 27317) +HANDLE_BAT(APINT_TYPE_PREFIX, 27318) +HANDLE_BAT(APINT_TYPE_PREFIX, 27319) +HANDLE_BAT(APINT_TYPE_PREFIX, 27320) +HANDLE_BAT(APINT_TYPE_PREFIX, 27321) +HANDLE_BAT(APINT_TYPE_PREFIX, 27322) +HANDLE_BAT(APINT_TYPE_PREFIX, 27323) +HANDLE_BAT(APINT_TYPE_PREFIX, 27324) +HANDLE_BAT(APINT_TYPE_PREFIX, 27325) +HANDLE_BAT(APINT_TYPE_PREFIX, 27326) +HANDLE_BAT(APINT_TYPE_PREFIX, 27327) +HANDLE_BAT(APINT_TYPE_PREFIX, 27328) +HANDLE_BAT(APINT_TYPE_PREFIX, 27329) +HANDLE_BAT(APINT_TYPE_PREFIX, 27330) +HANDLE_BAT(APINT_TYPE_PREFIX, 27331) +HANDLE_BAT(APINT_TYPE_PREFIX, 27332) +HANDLE_BAT(APINT_TYPE_PREFIX, 27333) +HANDLE_BAT(APINT_TYPE_PREFIX, 27334) +HANDLE_BAT(APINT_TYPE_PREFIX, 27335) +HANDLE_BAT(APINT_TYPE_PREFIX, 27336) +HANDLE_BAT(APINT_TYPE_PREFIX, 27337) +HANDLE_BAT(APINT_TYPE_PREFIX, 27338) +HANDLE_BAT(APINT_TYPE_PREFIX, 27339) +HANDLE_BAT(APINT_TYPE_PREFIX, 27340) +HANDLE_BAT(APINT_TYPE_PREFIX, 27341) +HANDLE_BAT(APINT_TYPE_PREFIX, 27342) +HANDLE_BAT(APINT_TYPE_PREFIX, 27343) +HANDLE_BAT(APINT_TYPE_PREFIX, 27344) +HANDLE_BAT(APINT_TYPE_PREFIX, 27345) +HANDLE_BAT(APINT_TYPE_PREFIX, 27346) +HANDLE_BAT(APINT_TYPE_PREFIX, 27347) +HANDLE_BAT(APINT_TYPE_PREFIX, 27348) +HANDLE_BAT(APINT_TYPE_PREFIX, 27349) +HANDLE_BAT(APINT_TYPE_PREFIX, 27350) +HANDLE_BAT(APINT_TYPE_PREFIX, 27351) +HANDLE_BAT(APINT_TYPE_PREFIX, 27352) +HANDLE_BAT(APINT_TYPE_PREFIX, 27353) +HANDLE_BAT(APINT_TYPE_PREFIX, 27354) +HANDLE_BAT(APINT_TYPE_PREFIX, 27355) +HANDLE_BAT(APINT_TYPE_PREFIX, 27356) +HANDLE_BAT(APINT_TYPE_PREFIX, 27357) +HANDLE_BAT(APINT_TYPE_PREFIX, 27358) +HANDLE_BAT(APINT_TYPE_PREFIX, 27359) +HANDLE_BAT(APINT_TYPE_PREFIX, 27360) +HANDLE_BAT(APINT_TYPE_PREFIX, 27361) +HANDLE_BAT(APINT_TYPE_PREFIX, 27362) +HANDLE_BAT(APINT_TYPE_PREFIX, 27363) +HANDLE_BAT(APINT_TYPE_PREFIX, 27364) +HANDLE_BAT(APINT_TYPE_PREFIX, 27365) +HANDLE_BAT(APINT_TYPE_PREFIX, 27366) +HANDLE_BAT(APINT_TYPE_PREFIX, 27367) +HANDLE_BAT(APINT_TYPE_PREFIX, 27368) +HANDLE_BAT(APINT_TYPE_PREFIX, 27369) +HANDLE_BAT(APINT_TYPE_PREFIX, 27370) +HANDLE_BAT(APINT_TYPE_PREFIX, 27371) +HANDLE_BAT(APINT_TYPE_PREFIX, 27372) +HANDLE_BAT(APINT_TYPE_PREFIX, 27373) +HANDLE_BAT(APINT_TYPE_PREFIX, 27374) +HANDLE_BAT(APINT_TYPE_PREFIX, 27375) +HANDLE_BAT(APINT_TYPE_PREFIX, 27376) +HANDLE_BAT(APINT_TYPE_PREFIX, 27377) +HANDLE_BAT(APINT_TYPE_PREFIX, 27378) +HANDLE_BAT(APINT_TYPE_PREFIX, 27379) +HANDLE_BAT(APINT_TYPE_PREFIX, 27380) +HANDLE_BAT(APINT_TYPE_PREFIX, 27381) +HANDLE_BAT(APINT_TYPE_PREFIX, 27382) +HANDLE_BAT(APINT_TYPE_PREFIX, 27383) +HANDLE_BAT(APINT_TYPE_PREFIX, 27384) +HANDLE_BAT(APINT_TYPE_PREFIX, 27385) +HANDLE_BAT(APINT_TYPE_PREFIX, 27386) +HANDLE_BAT(APINT_TYPE_PREFIX, 27387) +HANDLE_BAT(APINT_TYPE_PREFIX, 27388) +HANDLE_BAT(APINT_TYPE_PREFIX, 27389) +HANDLE_BAT(APINT_TYPE_PREFIX, 27390) +HANDLE_BAT(APINT_TYPE_PREFIX, 27391) +HANDLE_BAT(APINT_TYPE_PREFIX, 27392) +HANDLE_BAT(APINT_TYPE_PREFIX, 27393) +HANDLE_BAT(APINT_TYPE_PREFIX, 27394) +HANDLE_BAT(APINT_TYPE_PREFIX, 27395) +HANDLE_BAT(APINT_TYPE_PREFIX, 27396) +HANDLE_BAT(APINT_TYPE_PREFIX, 27397) +HANDLE_BAT(APINT_TYPE_PREFIX, 27398) +HANDLE_BAT(APINT_TYPE_PREFIX, 27399) +HANDLE_BAT(APINT_TYPE_PREFIX, 27400) +HANDLE_BAT(APINT_TYPE_PREFIX, 27401) +HANDLE_BAT(APINT_TYPE_PREFIX, 27402) +HANDLE_BAT(APINT_TYPE_PREFIX, 27403) +HANDLE_BAT(APINT_TYPE_PREFIX, 27404) +HANDLE_BAT(APINT_TYPE_PREFIX, 27405) +HANDLE_BAT(APINT_TYPE_PREFIX, 27406) +HANDLE_BAT(APINT_TYPE_PREFIX, 27407) +HANDLE_BAT(APINT_TYPE_PREFIX, 27408) +HANDLE_BAT(APINT_TYPE_PREFIX, 27409) +HANDLE_BAT(APINT_TYPE_PREFIX, 27410) +HANDLE_BAT(APINT_TYPE_PREFIX, 27411) +HANDLE_BAT(APINT_TYPE_PREFIX, 27412) +HANDLE_BAT(APINT_TYPE_PREFIX, 27413) +HANDLE_BAT(APINT_TYPE_PREFIX, 27414) +HANDLE_BAT(APINT_TYPE_PREFIX, 27415) +HANDLE_BAT(APINT_TYPE_PREFIX, 27416) +HANDLE_BAT(APINT_TYPE_PREFIX, 27417) +HANDLE_BAT(APINT_TYPE_PREFIX, 27418) +HANDLE_BAT(APINT_TYPE_PREFIX, 27419) +HANDLE_BAT(APINT_TYPE_PREFIX, 27420) +HANDLE_BAT(APINT_TYPE_PREFIX, 27421) +HANDLE_BAT(APINT_TYPE_PREFIX, 27422) +HANDLE_BAT(APINT_TYPE_PREFIX, 27423) +HANDLE_BAT(APINT_TYPE_PREFIX, 27424) +HANDLE_BAT(APINT_TYPE_PREFIX, 27425) +HANDLE_BAT(APINT_TYPE_PREFIX, 27426) +HANDLE_BAT(APINT_TYPE_PREFIX, 27427) +HANDLE_BAT(APINT_TYPE_PREFIX, 27428) +HANDLE_BAT(APINT_TYPE_PREFIX, 27429) +HANDLE_BAT(APINT_TYPE_PREFIX, 27430) +HANDLE_BAT(APINT_TYPE_PREFIX, 27431) +HANDLE_BAT(APINT_TYPE_PREFIX, 27432) +HANDLE_BAT(APINT_TYPE_PREFIX, 27433) +HANDLE_BAT(APINT_TYPE_PREFIX, 27434) +HANDLE_BAT(APINT_TYPE_PREFIX, 27435) +HANDLE_BAT(APINT_TYPE_PREFIX, 27436) +HANDLE_BAT(APINT_TYPE_PREFIX, 27437) +HANDLE_BAT(APINT_TYPE_PREFIX, 27438) +HANDLE_BAT(APINT_TYPE_PREFIX, 27439) +HANDLE_BAT(APINT_TYPE_PREFIX, 27440) +HANDLE_BAT(APINT_TYPE_PREFIX, 27441) +HANDLE_BAT(APINT_TYPE_PREFIX, 27442) +HANDLE_BAT(APINT_TYPE_PREFIX, 27443) +HANDLE_BAT(APINT_TYPE_PREFIX, 27444) +HANDLE_BAT(APINT_TYPE_PREFIX, 27445) +HANDLE_BAT(APINT_TYPE_PREFIX, 27446) +HANDLE_BAT(APINT_TYPE_PREFIX, 27447) +HANDLE_BAT(APINT_TYPE_PREFIX, 27448) +HANDLE_BAT(APINT_TYPE_PREFIX, 27449) +HANDLE_BAT(APINT_TYPE_PREFIX, 27450) +HANDLE_BAT(APINT_TYPE_PREFIX, 27451) +HANDLE_BAT(APINT_TYPE_PREFIX, 27452) +HANDLE_BAT(APINT_TYPE_PREFIX, 27453) +HANDLE_BAT(APINT_TYPE_PREFIX, 27454) +HANDLE_BAT(APINT_TYPE_PREFIX, 27455) +HANDLE_BAT(APINT_TYPE_PREFIX, 27456) +HANDLE_BAT(APINT_TYPE_PREFIX, 27457) +HANDLE_BAT(APINT_TYPE_PREFIX, 27458) +HANDLE_BAT(APINT_TYPE_PREFIX, 27459) +HANDLE_BAT(APINT_TYPE_PREFIX, 27460) +HANDLE_BAT(APINT_TYPE_PREFIX, 27461) +HANDLE_BAT(APINT_TYPE_PREFIX, 27462) +HANDLE_BAT(APINT_TYPE_PREFIX, 27463) +HANDLE_BAT(APINT_TYPE_PREFIX, 27464) +HANDLE_BAT(APINT_TYPE_PREFIX, 27465) +HANDLE_BAT(APINT_TYPE_PREFIX, 27466) +HANDLE_BAT(APINT_TYPE_PREFIX, 27467) +HANDLE_BAT(APINT_TYPE_PREFIX, 27468) +HANDLE_BAT(APINT_TYPE_PREFIX, 27469) +HANDLE_BAT(APINT_TYPE_PREFIX, 27470) +HANDLE_BAT(APINT_TYPE_PREFIX, 27471) +HANDLE_BAT(APINT_TYPE_PREFIX, 27472) +HANDLE_BAT(APINT_TYPE_PREFIX, 27473) +HANDLE_BAT(APINT_TYPE_PREFIX, 27474) +HANDLE_BAT(APINT_TYPE_PREFIX, 27475) +HANDLE_BAT(APINT_TYPE_PREFIX, 27476) +HANDLE_BAT(APINT_TYPE_PREFIX, 27477) +HANDLE_BAT(APINT_TYPE_PREFIX, 27478) +HANDLE_BAT(APINT_TYPE_PREFIX, 27479) +HANDLE_BAT(APINT_TYPE_PREFIX, 27480) +HANDLE_BAT(APINT_TYPE_PREFIX, 27481) +HANDLE_BAT(APINT_TYPE_PREFIX, 27482) +HANDLE_BAT(APINT_TYPE_PREFIX, 27483) +HANDLE_BAT(APINT_TYPE_PREFIX, 27484) +HANDLE_BAT(APINT_TYPE_PREFIX, 27485) +HANDLE_BAT(APINT_TYPE_PREFIX, 27486) +HANDLE_BAT(APINT_TYPE_PREFIX, 27487) +HANDLE_BAT(APINT_TYPE_PREFIX, 27488) +HANDLE_BAT(APINT_TYPE_PREFIX, 27489) +HANDLE_BAT(APINT_TYPE_PREFIX, 27490) +HANDLE_BAT(APINT_TYPE_PREFIX, 27491) +HANDLE_BAT(APINT_TYPE_PREFIX, 27492) +HANDLE_BAT(APINT_TYPE_PREFIX, 27493) +HANDLE_BAT(APINT_TYPE_PREFIX, 27494) +HANDLE_BAT(APINT_TYPE_PREFIX, 27495) +HANDLE_BAT(APINT_TYPE_PREFIX, 27496) +HANDLE_BAT(APINT_TYPE_PREFIX, 27497) +HANDLE_BAT(APINT_TYPE_PREFIX, 27498) +HANDLE_BAT(APINT_TYPE_PREFIX, 27499) +HANDLE_BAT(APINT_TYPE_PREFIX, 27500) +HANDLE_BAT(APINT_TYPE_PREFIX, 27501) +HANDLE_BAT(APINT_TYPE_PREFIX, 27502) +HANDLE_BAT(APINT_TYPE_PREFIX, 27503) +HANDLE_BAT(APINT_TYPE_PREFIX, 27504) +HANDLE_BAT(APINT_TYPE_PREFIX, 27505) +HANDLE_BAT(APINT_TYPE_PREFIX, 27506) +HANDLE_BAT(APINT_TYPE_PREFIX, 27507) +HANDLE_BAT(APINT_TYPE_PREFIX, 27508) +HANDLE_BAT(APINT_TYPE_PREFIX, 27509) +HANDLE_BAT(APINT_TYPE_PREFIX, 27510) +HANDLE_BAT(APINT_TYPE_PREFIX, 27511) +HANDLE_BAT(APINT_TYPE_PREFIX, 27512) +HANDLE_BAT(APINT_TYPE_PREFIX, 27513) +HANDLE_BAT(APINT_TYPE_PREFIX, 27514) +HANDLE_BAT(APINT_TYPE_PREFIX, 27515) +HANDLE_BAT(APINT_TYPE_PREFIX, 27516) +HANDLE_BAT(APINT_TYPE_PREFIX, 27517) +HANDLE_BAT(APINT_TYPE_PREFIX, 27518) +HANDLE_BAT(APINT_TYPE_PREFIX, 27519) +HANDLE_BAT(APINT_TYPE_PREFIX, 27520) +HANDLE_BAT(APINT_TYPE_PREFIX, 27521) +HANDLE_BAT(APINT_TYPE_PREFIX, 27522) +HANDLE_BAT(APINT_TYPE_PREFIX, 27523) +HANDLE_BAT(APINT_TYPE_PREFIX, 27524) +HANDLE_BAT(APINT_TYPE_PREFIX, 27525) +HANDLE_BAT(APINT_TYPE_PREFIX, 27526) +HANDLE_BAT(APINT_TYPE_PREFIX, 27527) +HANDLE_BAT(APINT_TYPE_PREFIX, 27528) +HANDLE_BAT(APINT_TYPE_PREFIX, 27529) +HANDLE_BAT(APINT_TYPE_PREFIX, 27530) +HANDLE_BAT(APINT_TYPE_PREFIX, 27531) +HANDLE_BAT(APINT_TYPE_PREFIX, 27532) +HANDLE_BAT(APINT_TYPE_PREFIX, 27533) +HANDLE_BAT(APINT_TYPE_PREFIX, 27534) +HANDLE_BAT(APINT_TYPE_PREFIX, 27535) +HANDLE_BAT(APINT_TYPE_PREFIX, 27536) +HANDLE_BAT(APINT_TYPE_PREFIX, 27537) +HANDLE_BAT(APINT_TYPE_PREFIX, 27538) +HANDLE_BAT(APINT_TYPE_PREFIX, 27539) +HANDLE_BAT(APINT_TYPE_PREFIX, 27540) +HANDLE_BAT(APINT_TYPE_PREFIX, 27541) +HANDLE_BAT(APINT_TYPE_PREFIX, 27542) +HANDLE_BAT(APINT_TYPE_PREFIX, 27543) +HANDLE_BAT(APINT_TYPE_PREFIX, 27544) +HANDLE_BAT(APINT_TYPE_PREFIX, 27545) +HANDLE_BAT(APINT_TYPE_PREFIX, 27546) +HANDLE_BAT(APINT_TYPE_PREFIX, 27547) +HANDLE_BAT(APINT_TYPE_PREFIX, 27548) +HANDLE_BAT(APINT_TYPE_PREFIX, 27549) +HANDLE_BAT(APINT_TYPE_PREFIX, 27550) +HANDLE_BAT(APINT_TYPE_PREFIX, 27551) +HANDLE_BAT(APINT_TYPE_PREFIX, 27552) +HANDLE_BAT(APINT_TYPE_PREFIX, 27553) +HANDLE_BAT(APINT_TYPE_PREFIX, 27554) +HANDLE_BAT(APINT_TYPE_PREFIX, 27555) +HANDLE_BAT(APINT_TYPE_PREFIX, 27556) +HANDLE_BAT(APINT_TYPE_PREFIX, 27557) +HANDLE_BAT(APINT_TYPE_PREFIX, 27558) +HANDLE_BAT(APINT_TYPE_PREFIX, 27559) +HANDLE_BAT(APINT_TYPE_PREFIX, 27560) +HANDLE_BAT(APINT_TYPE_PREFIX, 27561) +HANDLE_BAT(APINT_TYPE_PREFIX, 27562) +HANDLE_BAT(APINT_TYPE_PREFIX, 27563) +HANDLE_BAT(APINT_TYPE_PREFIX, 27564) +HANDLE_BAT(APINT_TYPE_PREFIX, 27565) +HANDLE_BAT(APINT_TYPE_PREFIX, 27566) +HANDLE_BAT(APINT_TYPE_PREFIX, 27567) +HANDLE_BAT(APINT_TYPE_PREFIX, 27568) +HANDLE_BAT(APINT_TYPE_PREFIX, 27569) +HANDLE_BAT(APINT_TYPE_PREFIX, 27570) +HANDLE_BAT(APINT_TYPE_PREFIX, 27571) +HANDLE_BAT(APINT_TYPE_PREFIX, 27572) +HANDLE_BAT(APINT_TYPE_PREFIX, 27573) +HANDLE_BAT(APINT_TYPE_PREFIX, 27574) +HANDLE_BAT(APINT_TYPE_PREFIX, 27575) +HANDLE_BAT(APINT_TYPE_PREFIX, 27576) +HANDLE_BAT(APINT_TYPE_PREFIX, 27577) +HANDLE_BAT(APINT_TYPE_PREFIX, 27578) +HANDLE_BAT(APINT_TYPE_PREFIX, 27579) +HANDLE_BAT(APINT_TYPE_PREFIX, 27580) +HANDLE_BAT(APINT_TYPE_PREFIX, 27581) +HANDLE_BAT(APINT_TYPE_PREFIX, 27582) +HANDLE_BAT(APINT_TYPE_PREFIX, 27583) +HANDLE_BAT(APINT_TYPE_PREFIX, 27584) +HANDLE_BAT(APINT_TYPE_PREFIX, 27585) +HANDLE_BAT(APINT_TYPE_PREFIX, 27586) +HANDLE_BAT(APINT_TYPE_PREFIX, 27587) +HANDLE_BAT(APINT_TYPE_PREFIX, 27588) +HANDLE_BAT(APINT_TYPE_PREFIX, 27589) +HANDLE_BAT(APINT_TYPE_PREFIX, 27590) +HANDLE_BAT(APINT_TYPE_PREFIX, 27591) +HANDLE_BAT(APINT_TYPE_PREFIX, 27592) +HANDLE_BAT(APINT_TYPE_PREFIX, 27593) +HANDLE_BAT(APINT_TYPE_PREFIX, 27594) +HANDLE_BAT(APINT_TYPE_PREFIX, 27595) +HANDLE_BAT(APINT_TYPE_PREFIX, 27596) +HANDLE_BAT(APINT_TYPE_PREFIX, 27597) +HANDLE_BAT(APINT_TYPE_PREFIX, 27598) +HANDLE_BAT(APINT_TYPE_PREFIX, 27599) +HANDLE_BAT(APINT_TYPE_PREFIX, 27600) +HANDLE_BAT(APINT_TYPE_PREFIX, 27601) +HANDLE_BAT(APINT_TYPE_PREFIX, 27602) +HANDLE_BAT(APINT_TYPE_PREFIX, 27603) +HANDLE_BAT(APINT_TYPE_PREFIX, 27604) +HANDLE_BAT(APINT_TYPE_PREFIX, 27605) +HANDLE_BAT(APINT_TYPE_PREFIX, 27606) +HANDLE_BAT(APINT_TYPE_PREFIX, 27607) +HANDLE_BAT(APINT_TYPE_PREFIX, 27608) +HANDLE_BAT(APINT_TYPE_PREFIX, 27609) +HANDLE_BAT(APINT_TYPE_PREFIX, 27610) +HANDLE_BAT(APINT_TYPE_PREFIX, 27611) +HANDLE_BAT(APINT_TYPE_PREFIX, 27612) +HANDLE_BAT(APINT_TYPE_PREFIX, 27613) +HANDLE_BAT(APINT_TYPE_PREFIX, 27614) +HANDLE_BAT(APINT_TYPE_PREFIX, 27615) +HANDLE_BAT(APINT_TYPE_PREFIX, 27616) +HANDLE_BAT(APINT_TYPE_PREFIX, 27617) +HANDLE_BAT(APINT_TYPE_PREFIX, 27618) +HANDLE_BAT(APINT_TYPE_PREFIX, 27619) +HANDLE_BAT(APINT_TYPE_PREFIX, 27620) +HANDLE_BAT(APINT_TYPE_PREFIX, 27621) +HANDLE_BAT(APINT_TYPE_PREFIX, 27622) +HANDLE_BAT(APINT_TYPE_PREFIX, 27623) +HANDLE_BAT(APINT_TYPE_PREFIX, 27624) +HANDLE_BAT(APINT_TYPE_PREFIX, 27625) +HANDLE_BAT(APINT_TYPE_PREFIX, 27626) +HANDLE_BAT(APINT_TYPE_PREFIX, 27627) +HANDLE_BAT(APINT_TYPE_PREFIX, 27628) +HANDLE_BAT(APINT_TYPE_PREFIX, 27629) +HANDLE_BAT(APINT_TYPE_PREFIX, 27630) +HANDLE_BAT(APINT_TYPE_PREFIX, 27631) +HANDLE_BAT(APINT_TYPE_PREFIX, 27632) +HANDLE_BAT(APINT_TYPE_PREFIX, 27633) +HANDLE_BAT(APINT_TYPE_PREFIX, 27634) +HANDLE_BAT(APINT_TYPE_PREFIX, 27635) +HANDLE_BAT(APINT_TYPE_PREFIX, 27636) +HANDLE_BAT(APINT_TYPE_PREFIX, 27637) +HANDLE_BAT(APINT_TYPE_PREFIX, 27638) +HANDLE_BAT(APINT_TYPE_PREFIX, 27639) +HANDLE_BAT(APINT_TYPE_PREFIX, 27640) +HANDLE_BAT(APINT_TYPE_PREFIX, 27641) +HANDLE_BAT(APINT_TYPE_PREFIX, 27642) +HANDLE_BAT(APINT_TYPE_PREFIX, 27643) +HANDLE_BAT(APINT_TYPE_PREFIX, 27644) +HANDLE_BAT(APINT_TYPE_PREFIX, 27645) +HANDLE_BAT(APINT_TYPE_PREFIX, 27646) +HANDLE_BAT(APINT_TYPE_PREFIX, 27647) +HANDLE_BAT(APINT_TYPE_PREFIX, 27648) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 27 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 27649) +HANDLE_BAT(, 27650) +HANDLE_BAT(, 27651) +HANDLE_BAT(, 27652) +HANDLE_BAT(, 27653) +HANDLE_BAT(, 27654) +HANDLE_BAT(, 27655) +HANDLE_BAT(, 27656) +HANDLE_BAT(, 27657) +HANDLE_BAT(, 27658) +HANDLE_BAT(, 27659) +HANDLE_BAT(, 27660) +HANDLE_BAT(, 27661) +HANDLE_BAT(, 27662) +HANDLE_BAT(, 27663) +HANDLE_BAT(, 27664) +HANDLE_BAT(, 27665) +HANDLE_BAT(, 27666) +HANDLE_BAT(, 27667) +HANDLE_BAT(, 27668) +HANDLE_BAT(, 27669) +HANDLE_BAT(, 27670) +HANDLE_BAT(, 27671) +HANDLE_BAT(, 27672) +HANDLE_BAT(, 27673) +HANDLE_BAT(, 27674) +HANDLE_BAT(, 27675) +HANDLE_BAT(, 27676) +HANDLE_BAT(, 27677) +HANDLE_BAT(, 27678) +HANDLE_BAT(, 27679) +HANDLE_BAT(, 27680) +HANDLE_BAT(, 27681) +HANDLE_BAT(, 27682) +HANDLE_BAT(, 27683) +HANDLE_BAT(, 27684) +HANDLE_BAT(, 27685) +HANDLE_BAT(, 27686) +HANDLE_BAT(, 27687) +HANDLE_BAT(, 27688) +HANDLE_BAT(, 27689) +HANDLE_BAT(, 27690) +HANDLE_BAT(, 27691) +HANDLE_BAT(, 27692) +HANDLE_BAT(, 27693) +HANDLE_BAT(, 27694) +HANDLE_BAT(, 27695) +HANDLE_BAT(, 27696) +HANDLE_BAT(, 27697) +HANDLE_BAT(, 27698) +HANDLE_BAT(, 27699) +HANDLE_BAT(, 27700) +HANDLE_BAT(, 27701) +HANDLE_BAT(, 27702) +HANDLE_BAT(, 27703) +HANDLE_BAT(, 27704) +HANDLE_BAT(, 27705) +HANDLE_BAT(, 27706) +HANDLE_BAT(, 27707) +HANDLE_BAT(, 27708) +HANDLE_BAT(, 27709) +HANDLE_BAT(, 27710) +HANDLE_BAT(, 27711) +HANDLE_BAT(, 27712) +HANDLE_BAT(, 27713) +HANDLE_BAT(, 27714) +HANDLE_BAT(, 27715) +HANDLE_BAT(, 27716) +HANDLE_BAT(, 27717) +HANDLE_BAT(, 27718) +HANDLE_BAT(, 27719) +HANDLE_BAT(, 27720) +HANDLE_BAT(, 27721) +HANDLE_BAT(, 27722) +HANDLE_BAT(, 27723) +HANDLE_BAT(, 27724) +HANDLE_BAT(, 27725) +HANDLE_BAT(, 27726) +HANDLE_BAT(, 27727) +HANDLE_BAT(, 27728) +HANDLE_BAT(, 27729) +HANDLE_BAT(, 27730) +HANDLE_BAT(, 27731) +HANDLE_BAT(, 27732) +HANDLE_BAT(, 27733) +HANDLE_BAT(, 27734) +HANDLE_BAT(, 27735) +HANDLE_BAT(, 27736) +HANDLE_BAT(, 27737) +HANDLE_BAT(, 27738) +HANDLE_BAT(, 27739) +HANDLE_BAT(, 27740) +HANDLE_BAT(, 27741) +HANDLE_BAT(, 27742) +HANDLE_BAT(, 27743) +HANDLE_BAT(, 27744) +HANDLE_BAT(, 27745) +HANDLE_BAT(, 27746) +HANDLE_BAT(, 27747) +HANDLE_BAT(, 27748) +HANDLE_BAT(, 27749) +HANDLE_BAT(, 27750) +HANDLE_BAT(, 27751) +HANDLE_BAT(, 27752) +HANDLE_BAT(, 27753) +HANDLE_BAT(, 27754) +HANDLE_BAT(, 27755) +HANDLE_BAT(, 27756) +HANDLE_BAT(, 27757) +HANDLE_BAT(, 27758) +HANDLE_BAT(, 27759) +HANDLE_BAT(, 27760) +HANDLE_BAT(, 27761) +HANDLE_BAT(, 27762) +HANDLE_BAT(, 27763) +HANDLE_BAT(, 27764) +HANDLE_BAT(, 27765) +HANDLE_BAT(, 27766) +HANDLE_BAT(, 27767) +HANDLE_BAT(, 27768) +HANDLE_BAT(, 27769) +HANDLE_BAT(, 27770) +HANDLE_BAT(, 27771) +HANDLE_BAT(, 27772) +HANDLE_BAT(, 27773) +HANDLE_BAT(, 27774) +HANDLE_BAT(, 27775) +HANDLE_BAT(, 27776) +HANDLE_BAT(, 27777) +HANDLE_BAT(, 27778) +HANDLE_BAT(, 27779) +HANDLE_BAT(, 27780) +HANDLE_BAT(, 27781) +HANDLE_BAT(, 27782) +HANDLE_BAT(, 27783) +HANDLE_BAT(, 27784) +HANDLE_BAT(, 27785) +HANDLE_BAT(, 27786) +HANDLE_BAT(, 27787) +HANDLE_BAT(, 27788) +HANDLE_BAT(, 27789) +HANDLE_BAT(, 27790) +HANDLE_BAT(, 27791) +HANDLE_BAT(, 27792) +HANDLE_BAT(, 27793) +HANDLE_BAT(, 27794) +HANDLE_BAT(, 27795) +HANDLE_BAT(, 27796) +HANDLE_BAT(, 27797) +HANDLE_BAT(, 27798) +HANDLE_BAT(, 27799) +HANDLE_BAT(, 27800) +HANDLE_BAT(, 27801) +HANDLE_BAT(, 27802) +HANDLE_BAT(, 27803) +HANDLE_BAT(, 27804) +HANDLE_BAT(, 27805) +HANDLE_BAT(, 27806) +HANDLE_BAT(, 27807) +HANDLE_BAT(, 27808) +HANDLE_BAT(, 27809) +HANDLE_BAT(, 27810) +HANDLE_BAT(, 27811) +HANDLE_BAT(, 27812) +HANDLE_BAT(, 27813) +HANDLE_BAT(, 27814) +HANDLE_BAT(, 27815) +HANDLE_BAT(, 27816) +HANDLE_BAT(, 27817) +HANDLE_BAT(, 27818) +HANDLE_BAT(, 27819) +HANDLE_BAT(, 27820) +HANDLE_BAT(, 27821) +HANDLE_BAT(, 27822) +HANDLE_BAT(, 27823) +HANDLE_BAT(, 27824) +HANDLE_BAT(, 27825) +HANDLE_BAT(, 27826) +HANDLE_BAT(, 27827) +HANDLE_BAT(, 27828) +HANDLE_BAT(, 27829) +HANDLE_BAT(, 27830) +HANDLE_BAT(, 27831) +HANDLE_BAT(, 27832) +HANDLE_BAT(, 27833) +HANDLE_BAT(, 27834) +HANDLE_BAT(, 27835) +HANDLE_BAT(, 27836) +HANDLE_BAT(, 27837) +HANDLE_BAT(, 27838) +HANDLE_BAT(, 27839) +HANDLE_BAT(, 27840) +HANDLE_BAT(, 27841) +HANDLE_BAT(, 27842) +HANDLE_BAT(, 27843) +HANDLE_BAT(, 27844) +HANDLE_BAT(, 27845) +HANDLE_BAT(, 27846) +HANDLE_BAT(, 27847) +HANDLE_BAT(, 27848) +HANDLE_BAT(, 27849) +HANDLE_BAT(, 27850) +HANDLE_BAT(, 27851) +HANDLE_BAT(, 27852) +HANDLE_BAT(, 27853) +HANDLE_BAT(, 27854) +HANDLE_BAT(, 27855) +HANDLE_BAT(, 27856) +HANDLE_BAT(, 27857) +HANDLE_BAT(, 27858) +HANDLE_BAT(, 27859) +HANDLE_BAT(, 27860) +HANDLE_BAT(, 27861) +HANDLE_BAT(, 27862) +HANDLE_BAT(, 27863) +HANDLE_BAT(, 27864) +HANDLE_BAT(, 27865) +HANDLE_BAT(, 27866) +HANDLE_BAT(, 27867) +HANDLE_BAT(, 27868) +HANDLE_BAT(, 27869) +HANDLE_BAT(, 27870) +HANDLE_BAT(, 27871) +HANDLE_BAT(, 27872) +HANDLE_BAT(, 27873) +HANDLE_BAT(, 27874) +HANDLE_BAT(, 27875) +HANDLE_BAT(, 27876) +HANDLE_BAT(, 27877) +HANDLE_BAT(, 27878) +HANDLE_BAT(, 27879) +HANDLE_BAT(, 27880) +HANDLE_BAT(, 27881) +HANDLE_BAT(, 27882) +HANDLE_BAT(, 27883) +HANDLE_BAT(, 27884) +HANDLE_BAT(, 27885) +HANDLE_BAT(, 27886) +HANDLE_BAT(, 27887) +HANDLE_BAT(, 27888) +HANDLE_BAT(, 27889) +HANDLE_BAT(, 27890) +HANDLE_BAT(, 27891) +HANDLE_BAT(, 27892) +HANDLE_BAT(, 27893) +HANDLE_BAT(, 27894) +HANDLE_BAT(, 27895) +HANDLE_BAT(, 27896) +HANDLE_BAT(, 27897) +HANDLE_BAT(, 27898) +HANDLE_BAT(, 27899) +HANDLE_BAT(, 27900) +HANDLE_BAT(, 27901) +HANDLE_BAT(, 27902) +HANDLE_BAT(, 27903) +HANDLE_BAT(, 27904) +HANDLE_BAT(, 27905) +HANDLE_BAT(, 27906) +HANDLE_BAT(, 27907) +HANDLE_BAT(, 27908) +HANDLE_BAT(, 27909) +HANDLE_BAT(, 27910) +HANDLE_BAT(, 27911) +HANDLE_BAT(, 27912) +HANDLE_BAT(, 27913) +HANDLE_BAT(, 27914) +HANDLE_BAT(, 27915) +HANDLE_BAT(, 27916) +HANDLE_BAT(, 27917) +HANDLE_BAT(, 27918) +HANDLE_BAT(, 27919) +HANDLE_BAT(, 27920) +HANDLE_BAT(, 27921) +HANDLE_BAT(, 27922) +HANDLE_BAT(, 27923) +HANDLE_BAT(, 27924) +HANDLE_BAT(, 27925) +HANDLE_BAT(, 27926) +HANDLE_BAT(, 27927) +HANDLE_BAT(, 27928) +HANDLE_BAT(, 27929) +HANDLE_BAT(, 27930) +HANDLE_BAT(, 27931) +HANDLE_BAT(, 27932) +HANDLE_BAT(, 27933) +HANDLE_BAT(, 27934) +HANDLE_BAT(, 27935) +HANDLE_BAT(, 27936) +HANDLE_BAT(, 27937) +HANDLE_BAT(, 27938) +HANDLE_BAT(, 27939) +HANDLE_BAT(, 27940) +HANDLE_BAT(, 27941) +HANDLE_BAT(, 27942) +HANDLE_BAT(, 27943) +HANDLE_BAT(, 27944) +HANDLE_BAT(, 27945) +HANDLE_BAT(, 27946) +HANDLE_BAT(, 27947) +HANDLE_BAT(, 27948) +HANDLE_BAT(, 27949) +HANDLE_BAT(, 27950) +HANDLE_BAT(, 27951) +HANDLE_BAT(, 27952) +HANDLE_BAT(, 27953) +HANDLE_BAT(, 27954) +HANDLE_BAT(, 27955) +HANDLE_BAT(, 27956) +HANDLE_BAT(, 27957) +HANDLE_BAT(, 27958) +HANDLE_BAT(, 27959) +HANDLE_BAT(, 27960) +HANDLE_BAT(, 27961) +HANDLE_BAT(, 27962) +HANDLE_BAT(, 27963) +HANDLE_BAT(, 27964) +HANDLE_BAT(, 27965) +HANDLE_BAT(, 27966) +HANDLE_BAT(, 27967) +HANDLE_BAT(, 27968) +HANDLE_BAT(, 27969) +HANDLE_BAT(, 27970) +HANDLE_BAT(, 27971) +HANDLE_BAT(, 27972) +HANDLE_BAT(, 27973) +HANDLE_BAT(, 27974) +HANDLE_BAT(, 27975) +HANDLE_BAT(, 27976) +HANDLE_BAT(, 27977) +HANDLE_BAT(, 27978) +HANDLE_BAT(, 27979) +HANDLE_BAT(, 27980) +HANDLE_BAT(, 27981) +HANDLE_BAT(, 27982) +HANDLE_BAT(, 27983) +HANDLE_BAT(, 27984) +HANDLE_BAT(, 27985) +HANDLE_BAT(, 27986) +HANDLE_BAT(, 27987) +HANDLE_BAT(, 27988) +HANDLE_BAT(, 27989) +HANDLE_BAT(, 27990) +HANDLE_BAT(, 27991) +HANDLE_BAT(, 27992) +HANDLE_BAT(, 27993) +HANDLE_BAT(, 27994) +HANDLE_BAT(, 27995) +HANDLE_BAT(, 27996) +HANDLE_BAT(, 27997) +HANDLE_BAT(, 27998) +HANDLE_BAT(, 27999) +HANDLE_BAT(, 28000) +HANDLE_BAT(, 28001) +HANDLE_BAT(, 28002) +HANDLE_BAT(, 28003) +HANDLE_BAT(, 28004) +HANDLE_BAT(, 28005) +HANDLE_BAT(, 28006) +HANDLE_BAT(, 28007) +HANDLE_BAT(, 28008) +HANDLE_BAT(, 28009) +HANDLE_BAT(, 28010) +HANDLE_BAT(, 28011) +HANDLE_BAT(, 28012) +HANDLE_BAT(, 28013) +HANDLE_BAT(, 28014) +HANDLE_BAT(, 28015) +HANDLE_BAT(, 28016) +HANDLE_BAT(, 28017) +HANDLE_BAT(, 28018) +HANDLE_BAT(, 28019) +HANDLE_BAT(, 28020) +HANDLE_BAT(, 28021) +HANDLE_BAT(, 28022) +HANDLE_BAT(, 28023) +HANDLE_BAT(, 28024) +HANDLE_BAT(, 28025) +HANDLE_BAT(, 28026) +HANDLE_BAT(, 28027) +HANDLE_BAT(, 28028) +HANDLE_BAT(, 28029) +HANDLE_BAT(, 28030) +HANDLE_BAT(, 28031) +HANDLE_BAT(, 28032) +HANDLE_BAT(, 28033) +HANDLE_BAT(, 28034) +HANDLE_BAT(, 28035) +HANDLE_BAT(, 28036) +HANDLE_BAT(, 28037) +HANDLE_BAT(, 28038) +HANDLE_BAT(, 28039) +HANDLE_BAT(, 28040) +HANDLE_BAT(, 28041) +HANDLE_BAT(, 28042) +HANDLE_BAT(, 28043) +HANDLE_BAT(, 28044) +HANDLE_BAT(, 28045) +HANDLE_BAT(, 28046) +HANDLE_BAT(, 28047) +HANDLE_BAT(, 28048) +HANDLE_BAT(, 28049) +HANDLE_BAT(, 28050) +HANDLE_BAT(, 28051) +HANDLE_BAT(, 28052) +HANDLE_BAT(, 28053) +HANDLE_BAT(, 28054) +HANDLE_BAT(, 28055) +HANDLE_BAT(, 28056) +HANDLE_BAT(, 28057) +HANDLE_BAT(, 28058) +HANDLE_BAT(, 28059) +HANDLE_BAT(, 28060) +HANDLE_BAT(, 28061) +HANDLE_BAT(, 28062) +HANDLE_BAT(, 28063) +HANDLE_BAT(, 28064) +HANDLE_BAT(, 28065) +HANDLE_BAT(, 28066) +HANDLE_BAT(, 28067) +HANDLE_BAT(, 28068) +HANDLE_BAT(, 28069) +HANDLE_BAT(, 28070) +HANDLE_BAT(, 28071) +HANDLE_BAT(, 28072) +HANDLE_BAT(, 28073) +HANDLE_BAT(, 28074) +HANDLE_BAT(, 28075) +HANDLE_BAT(, 28076) +HANDLE_BAT(, 28077) +HANDLE_BAT(, 28078) +HANDLE_BAT(, 28079) +HANDLE_BAT(, 28080) +HANDLE_BAT(, 28081) +HANDLE_BAT(, 28082) +HANDLE_BAT(, 28083) +HANDLE_BAT(, 28084) +HANDLE_BAT(, 28085) +HANDLE_BAT(, 28086) +HANDLE_BAT(, 28087) +HANDLE_BAT(, 28088) +HANDLE_BAT(, 28089) +HANDLE_BAT(, 28090) +HANDLE_BAT(, 28091) +HANDLE_BAT(, 28092) +HANDLE_BAT(, 28093) +HANDLE_BAT(, 28094) +HANDLE_BAT(, 28095) +HANDLE_BAT(, 28096) +HANDLE_BAT(, 28097) +HANDLE_BAT(, 28098) +HANDLE_BAT(, 28099) +HANDLE_BAT(, 28100) +HANDLE_BAT(, 28101) +HANDLE_BAT(, 28102) +HANDLE_BAT(, 28103) +HANDLE_BAT(, 28104) +HANDLE_BAT(, 28105) +HANDLE_BAT(, 28106) +HANDLE_BAT(, 28107) +HANDLE_BAT(, 28108) +HANDLE_BAT(, 28109) +HANDLE_BAT(, 28110) +HANDLE_BAT(, 28111) +HANDLE_BAT(, 28112) +HANDLE_BAT(, 28113) +HANDLE_BAT(, 28114) +HANDLE_BAT(, 28115) +HANDLE_BAT(, 28116) +HANDLE_BAT(, 28117) +HANDLE_BAT(, 28118) +HANDLE_BAT(, 28119) +HANDLE_BAT(, 28120) +HANDLE_BAT(, 28121) +HANDLE_BAT(, 28122) +HANDLE_BAT(, 28123) +HANDLE_BAT(, 28124) +HANDLE_BAT(, 28125) +HANDLE_BAT(, 28126) +HANDLE_BAT(, 28127) +HANDLE_BAT(, 28128) +HANDLE_BAT(, 28129) +HANDLE_BAT(, 28130) +HANDLE_BAT(, 28131) +HANDLE_BAT(, 28132) +HANDLE_BAT(, 28133) +HANDLE_BAT(, 28134) +HANDLE_BAT(, 28135) +HANDLE_BAT(, 28136) +HANDLE_BAT(, 28137) +HANDLE_BAT(, 28138) +HANDLE_BAT(, 28139) +HANDLE_BAT(, 28140) +HANDLE_BAT(, 28141) +HANDLE_BAT(, 28142) +HANDLE_BAT(, 28143) +HANDLE_BAT(, 28144) +HANDLE_BAT(, 28145) +HANDLE_BAT(, 28146) +HANDLE_BAT(, 28147) +HANDLE_BAT(, 28148) +HANDLE_BAT(, 28149) +HANDLE_BAT(, 28150) +HANDLE_BAT(, 28151) +HANDLE_BAT(, 28152) +HANDLE_BAT(, 28153) +HANDLE_BAT(, 28154) +HANDLE_BAT(, 28155) +HANDLE_BAT(, 28156) +HANDLE_BAT(, 28157) +HANDLE_BAT(, 28158) +HANDLE_BAT(, 28159) +HANDLE_BAT(, 28160) +HANDLE_BAT(, 28161) +HANDLE_BAT(, 28162) +HANDLE_BAT(, 28163) +HANDLE_BAT(, 28164) +HANDLE_BAT(, 28165) +HANDLE_BAT(, 28166) +HANDLE_BAT(, 28167) +HANDLE_BAT(, 28168) +HANDLE_BAT(, 28169) +HANDLE_BAT(, 28170) +HANDLE_BAT(, 28171) +HANDLE_BAT(, 28172) +HANDLE_BAT(, 28173) +HANDLE_BAT(, 28174) +HANDLE_BAT(, 28175) +HANDLE_BAT(, 28176) +HANDLE_BAT(, 28177) +HANDLE_BAT(, 28178) +HANDLE_BAT(, 28179) +HANDLE_BAT(, 28180) +HANDLE_BAT(, 28181) +HANDLE_BAT(, 28182) +HANDLE_BAT(, 28183) +HANDLE_BAT(, 28184) +HANDLE_BAT(, 28185) +HANDLE_BAT(, 28186) +HANDLE_BAT(, 28187) +HANDLE_BAT(, 28188) +HANDLE_BAT(, 28189) +HANDLE_BAT(, 28190) +HANDLE_BAT(, 28191) +HANDLE_BAT(, 28192) +HANDLE_BAT(, 28193) +HANDLE_BAT(, 28194) +HANDLE_BAT(, 28195) +HANDLE_BAT(, 28196) +HANDLE_BAT(, 28197) +HANDLE_BAT(, 28198) +HANDLE_BAT(, 28199) +HANDLE_BAT(, 28200) +HANDLE_BAT(, 28201) +HANDLE_BAT(, 28202) +HANDLE_BAT(, 28203) +HANDLE_BAT(, 28204) +HANDLE_BAT(, 28205) +HANDLE_BAT(, 28206) +HANDLE_BAT(, 28207) +HANDLE_BAT(, 28208) +HANDLE_BAT(, 28209) +HANDLE_BAT(, 28210) +HANDLE_BAT(, 28211) +HANDLE_BAT(, 28212) +HANDLE_BAT(, 28213) +HANDLE_BAT(, 28214) +HANDLE_BAT(, 28215) +HANDLE_BAT(, 28216) +HANDLE_BAT(, 28217) +HANDLE_BAT(, 28218) +HANDLE_BAT(, 28219) +HANDLE_BAT(, 28220) +HANDLE_BAT(, 28221) +HANDLE_BAT(, 28222) +HANDLE_BAT(, 28223) +HANDLE_BAT(, 28224) +HANDLE_BAT(, 28225) +HANDLE_BAT(, 28226) +HANDLE_BAT(, 28227) +HANDLE_BAT(, 28228) +HANDLE_BAT(, 28229) +HANDLE_BAT(, 28230) +HANDLE_BAT(, 28231) +HANDLE_BAT(, 28232) +HANDLE_BAT(, 28233) +HANDLE_BAT(, 28234) +HANDLE_BAT(, 28235) +HANDLE_BAT(, 28236) +HANDLE_BAT(, 28237) +HANDLE_BAT(, 28238) +HANDLE_BAT(, 28239) +HANDLE_BAT(, 28240) +HANDLE_BAT(, 28241) +HANDLE_BAT(, 28242) +HANDLE_BAT(, 28243) +HANDLE_BAT(, 28244) +HANDLE_BAT(, 28245) +HANDLE_BAT(, 28246) +HANDLE_BAT(, 28247) +HANDLE_BAT(, 28248) +HANDLE_BAT(, 28249) +HANDLE_BAT(, 28250) +HANDLE_BAT(, 28251) +HANDLE_BAT(, 28252) +HANDLE_BAT(, 28253) +HANDLE_BAT(, 28254) +HANDLE_BAT(, 28255) +HANDLE_BAT(, 28256) +HANDLE_BAT(, 28257) +HANDLE_BAT(, 28258) +HANDLE_BAT(, 28259) +HANDLE_BAT(, 28260) +HANDLE_BAT(, 28261) +HANDLE_BAT(, 28262) +HANDLE_BAT(, 28263) +HANDLE_BAT(, 28264) +HANDLE_BAT(, 28265) +HANDLE_BAT(, 28266) +HANDLE_BAT(, 28267) +HANDLE_BAT(, 28268) +HANDLE_BAT(, 28269) +HANDLE_BAT(, 28270) +HANDLE_BAT(, 28271) +HANDLE_BAT(, 28272) +HANDLE_BAT(, 28273) +HANDLE_BAT(, 28274) +HANDLE_BAT(, 28275) +HANDLE_BAT(, 28276) +HANDLE_BAT(, 28277) +HANDLE_BAT(, 28278) +HANDLE_BAT(, 28279) +HANDLE_BAT(, 28280) +HANDLE_BAT(, 28281) +HANDLE_BAT(, 28282) +HANDLE_BAT(, 28283) +HANDLE_BAT(, 28284) +HANDLE_BAT(, 28285) +HANDLE_BAT(, 28286) +HANDLE_BAT(, 28287) +HANDLE_BAT(, 28288) +HANDLE_BAT(, 28289) +HANDLE_BAT(, 28290) +HANDLE_BAT(, 28291) +HANDLE_BAT(, 28292) +HANDLE_BAT(, 28293) +HANDLE_BAT(, 28294) +HANDLE_BAT(, 28295) +HANDLE_BAT(, 28296) +HANDLE_BAT(, 28297) +HANDLE_BAT(, 28298) +HANDLE_BAT(, 28299) +HANDLE_BAT(, 28300) +HANDLE_BAT(, 28301) +HANDLE_BAT(, 28302) +HANDLE_BAT(, 28303) +HANDLE_BAT(, 28304) +HANDLE_BAT(, 28305) +HANDLE_BAT(, 28306) +HANDLE_BAT(, 28307) +HANDLE_BAT(, 28308) +HANDLE_BAT(, 28309) +HANDLE_BAT(, 28310) +HANDLE_BAT(, 28311) +HANDLE_BAT(, 28312) +HANDLE_BAT(, 28313) +HANDLE_BAT(, 28314) +HANDLE_BAT(, 28315) +HANDLE_BAT(, 28316) +HANDLE_BAT(, 28317) +HANDLE_BAT(, 28318) +HANDLE_BAT(, 28319) +HANDLE_BAT(, 28320) +HANDLE_BAT(, 28321) +HANDLE_BAT(, 28322) +HANDLE_BAT(, 28323) +HANDLE_BAT(, 28324) +HANDLE_BAT(, 28325) +HANDLE_BAT(, 28326) +HANDLE_BAT(, 28327) +HANDLE_BAT(, 28328) +HANDLE_BAT(, 28329) +HANDLE_BAT(, 28330) +HANDLE_BAT(, 28331) +HANDLE_BAT(, 28332) +HANDLE_BAT(, 28333) +HANDLE_BAT(, 28334) +HANDLE_BAT(, 28335) +HANDLE_BAT(, 28336) +HANDLE_BAT(, 28337) +HANDLE_BAT(, 28338) +HANDLE_BAT(, 28339) +HANDLE_BAT(, 28340) +HANDLE_BAT(, 28341) +HANDLE_BAT(, 28342) +HANDLE_BAT(, 28343) +HANDLE_BAT(, 28344) +HANDLE_BAT(, 28345) +HANDLE_BAT(, 28346) +HANDLE_BAT(, 28347) +HANDLE_BAT(, 28348) +HANDLE_BAT(, 28349) +HANDLE_BAT(, 28350) +HANDLE_BAT(, 28351) +HANDLE_BAT(, 28352) +HANDLE_BAT(, 28353) +HANDLE_BAT(, 28354) +HANDLE_BAT(, 28355) +HANDLE_BAT(, 28356) +HANDLE_BAT(, 28357) +HANDLE_BAT(, 28358) +HANDLE_BAT(, 28359) +HANDLE_BAT(, 28360) +HANDLE_BAT(, 28361) +HANDLE_BAT(, 28362) +HANDLE_BAT(, 28363) +HANDLE_BAT(, 28364) +HANDLE_BAT(, 28365) +HANDLE_BAT(, 28366) +HANDLE_BAT(, 28367) +HANDLE_BAT(, 28368) +HANDLE_BAT(, 28369) +HANDLE_BAT(, 28370) +HANDLE_BAT(, 28371) +HANDLE_BAT(, 28372) +HANDLE_BAT(, 28373) +HANDLE_BAT(, 28374) +HANDLE_BAT(, 28375) +HANDLE_BAT(, 28376) +HANDLE_BAT(, 28377) +HANDLE_BAT(, 28378) +HANDLE_BAT(, 28379) +HANDLE_BAT(, 28380) +HANDLE_BAT(, 28381) +HANDLE_BAT(, 28382) +HANDLE_BAT(, 28383) +HANDLE_BAT(, 28384) +HANDLE_BAT(, 28385) +HANDLE_BAT(, 28386) +HANDLE_BAT(, 28387) +HANDLE_BAT(, 28388) +HANDLE_BAT(, 28389) +HANDLE_BAT(, 28390) +HANDLE_BAT(, 28391) +HANDLE_BAT(, 28392) +HANDLE_BAT(, 28393) +HANDLE_BAT(, 28394) +HANDLE_BAT(, 28395) +HANDLE_BAT(, 28396) +HANDLE_BAT(, 28397) +HANDLE_BAT(, 28398) +HANDLE_BAT(, 28399) +HANDLE_BAT(, 28400) +HANDLE_BAT(, 28401) +HANDLE_BAT(, 28402) +HANDLE_BAT(, 28403) +HANDLE_BAT(, 28404) +HANDLE_BAT(, 28405) +HANDLE_BAT(, 28406) +HANDLE_BAT(, 28407) +HANDLE_BAT(, 28408) +HANDLE_BAT(, 28409) +HANDLE_BAT(, 28410) +HANDLE_BAT(, 28411) +HANDLE_BAT(, 28412) +HANDLE_BAT(, 28413) +HANDLE_BAT(, 28414) +HANDLE_BAT(, 28415) +HANDLE_BAT(, 28416) +HANDLE_BAT(, 28417) +HANDLE_BAT(, 28418) +HANDLE_BAT(, 28419) +HANDLE_BAT(, 28420) +HANDLE_BAT(, 28421) +HANDLE_BAT(, 28422) +HANDLE_BAT(, 28423) +HANDLE_BAT(, 28424) +HANDLE_BAT(, 28425) +HANDLE_BAT(, 28426) +HANDLE_BAT(, 28427) +HANDLE_BAT(, 28428) +HANDLE_BAT(, 28429) +HANDLE_BAT(, 28430) +HANDLE_BAT(, 28431) +HANDLE_BAT(, 28432) +HANDLE_BAT(, 28433) +HANDLE_BAT(, 28434) +HANDLE_BAT(, 28435) +HANDLE_BAT(, 28436) +HANDLE_BAT(, 28437) +HANDLE_BAT(, 28438) +HANDLE_BAT(, 28439) +HANDLE_BAT(, 28440) +HANDLE_BAT(, 28441) +HANDLE_BAT(, 28442) +HANDLE_BAT(, 28443) +HANDLE_BAT(, 28444) +HANDLE_BAT(, 28445) +HANDLE_BAT(, 28446) +HANDLE_BAT(, 28447) +HANDLE_BAT(, 28448) +HANDLE_BAT(, 28449) +HANDLE_BAT(, 28450) +HANDLE_BAT(, 28451) +HANDLE_BAT(, 28452) +HANDLE_BAT(, 28453) +HANDLE_BAT(, 28454) +HANDLE_BAT(, 28455) +HANDLE_BAT(, 28456) +HANDLE_BAT(, 28457) +HANDLE_BAT(, 28458) +HANDLE_BAT(, 28459) +HANDLE_BAT(, 28460) +HANDLE_BAT(, 28461) +HANDLE_BAT(, 28462) +HANDLE_BAT(, 28463) +HANDLE_BAT(, 28464) +HANDLE_BAT(, 28465) +HANDLE_BAT(, 28466) +HANDLE_BAT(, 28467) +HANDLE_BAT(, 28468) +HANDLE_BAT(, 28469) +HANDLE_BAT(, 28470) +HANDLE_BAT(, 28471) +HANDLE_BAT(, 28472) +HANDLE_BAT(, 28473) +HANDLE_BAT(, 28474) +HANDLE_BAT(, 28475) +HANDLE_BAT(, 28476) +HANDLE_BAT(, 28477) +HANDLE_BAT(, 28478) +HANDLE_BAT(, 28479) +HANDLE_BAT(, 28480) +HANDLE_BAT(, 28481) +HANDLE_BAT(, 28482) +HANDLE_BAT(, 28483) +HANDLE_BAT(, 28484) +HANDLE_BAT(, 28485) +HANDLE_BAT(, 28486) +HANDLE_BAT(, 28487) +HANDLE_BAT(, 28488) +HANDLE_BAT(, 28489) +HANDLE_BAT(, 28490) +HANDLE_BAT(, 28491) +HANDLE_BAT(, 28492) +HANDLE_BAT(, 28493) +HANDLE_BAT(, 28494) +HANDLE_BAT(, 28495) +HANDLE_BAT(, 28496) +HANDLE_BAT(, 28497) +HANDLE_BAT(, 28498) +HANDLE_BAT(, 28499) +HANDLE_BAT(, 28500) +HANDLE_BAT(, 28501) +HANDLE_BAT(, 28502) +HANDLE_BAT(, 28503) +HANDLE_BAT(, 28504) +HANDLE_BAT(, 28505) +HANDLE_BAT(, 28506) +HANDLE_BAT(, 28507) +HANDLE_BAT(, 28508) +HANDLE_BAT(, 28509) +HANDLE_BAT(, 28510) +HANDLE_BAT(, 28511) +HANDLE_BAT(, 28512) +HANDLE_BAT(, 28513) +HANDLE_BAT(, 28514) +HANDLE_BAT(, 28515) +HANDLE_BAT(, 28516) +HANDLE_BAT(, 28517) +HANDLE_BAT(, 28518) +HANDLE_BAT(, 28519) +HANDLE_BAT(, 28520) +HANDLE_BAT(, 28521) +HANDLE_BAT(, 28522) +HANDLE_BAT(, 28523) +HANDLE_BAT(, 28524) +HANDLE_BAT(, 28525) +HANDLE_BAT(, 28526) +HANDLE_BAT(, 28527) +HANDLE_BAT(, 28528) +HANDLE_BAT(, 28529) +HANDLE_BAT(, 28530) +HANDLE_BAT(, 28531) +HANDLE_BAT(, 28532) +HANDLE_BAT(, 28533) +HANDLE_BAT(, 28534) +HANDLE_BAT(, 28535) +HANDLE_BAT(, 28536) +HANDLE_BAT(, 28537) +HANDLE_BAT(, 28538) +HANDLE_BAT(, 28539) +HANDLE_BAT(, 28540) +HANDLE_BAT(, 28541) +HANDLE_BAT(, 28542) +HANDLE_BAT(, 28543) +HANDLE_BAT(, 28544) +HANDLE_BAT(, 28545) +HANDLE_BAT(, 28546) +HANDLE_BAT(, 28547) +HANDLE_BAT(, 28548) +HANDLE_BAT(, 28549) +HANDLE_BAT(, 28550) +HANDLE_BAT(, 28551) +HANDLE_BAT(, 28552) +HANDLE_BAT(, 28553) +HANDLE_BAT(, 28554) +HANDLE_BAT(, 28555) +HANDLE_BAT(, 28556) +HANDLE_BAT(, 28557) +HANDLE_BAT(, 28558) +HANDLE_BAT(, 28559) +HANDLE_BAT(, 28560) +HANDLE_BAT(, 28561) +HANDLE_BAT(, 28562) +HANDLE_BAT(, 28563) +HANDLE_BAT(, 28564) +HANDLE_BAT(, 28565) +HANDLE_BAT(, 28566) +HANDLE_BAT(, 28567) +HANDLE_BAT(, 28568) +HANDLE_BAT(, 28569) +HANDLE_BAT(, 28570) +HANDLE_BAT(, 28571) +HANDLE_BAT(, 28572) +HANDLE_BAT(, 28573) +HANDLE_BAT(, 28574) +HANDLE_BAT(, 28575) +HANDLE_BAT(, 28576) +HANDLE_BAT(, 28577) +HANDLE_BAT(, 28578) +HANDLE_BAT(, 28579) +HANDLE_BAT(, 28580) +HANDLE_BAT(, 28581) +HANDLE_BAT(, 28582) +HANDLE_BAT(, 28583) +HANDLE_BAT(, 28584) +HANDLE_BAT(, 28585) +HANDLE_BAT(, 28586) +HANDLE_BAT(, 28587) +HANDLE_BAT(, 28588) +HANDLE_BAT(, 28589) +HANDLE_BAT(, 28590) +HANDLE_BAT(, 28591) +HANDLE_BAT(, 28592) +HANDLE_BAT(, 28593) +HANDLE_BAT(, 28594) +HANDLE_BAT(, 28595) +HANDLE_BAT(, 28596) +HANDLE_BAT(, 28597) +HANDLE_BAT(, 28598) +HANDLE_BAT(, 28599) +HANDLE_BAT(, 28600) +HANDLE_BAT(, 28601) +HANDLE_BAT(, 28602) +HANDLE_BAT(, 28603) +HANDLE_BAT(, 28604) +HANDLE_BAT(, 28605) +HANDLE_BAT(, 28606) +HANDLE_BAT(, 28607) +HANDLE_BAT(, 28608) +HANDLE_BAT(, 28609) +HANDLE_BAT(, 28610) +HANDLE_BAT(, 28611) +HANDLE_BAT(, 28612) +HANDLE_BAT(, 28613) +HANDLE_BAT(, 28614) +HANDLE_BAT(, 28615) +HANDLE_BAT(, 28616) +HANDLE_BAT(, 28617) +HANDLE_BAT(, 28618) +HANDLE_BAT(, 28619) +HANDLE_BAT(, 28620) +HANDLE_BAT(, 28621) +HANDLE_BAT(, 28622) +HANDLE_BAT(, 28623) +HANDLE_BAT(, 28624) +HANDLE_BAT(, 28625) +HANDLE_BAT(, 28626) +HANDLE_BAT(, 28627) +HANDLE_BAT(, 28628) +HANDLE_BAT(, 28629) +HANDLE_BAT(, 28630) +HANDLE_BAT(, 28631) +HANDLE_BAT(, 28632) +HANDLE_BAT(, 28633) +HANDLE_BAT(, 28634) +HANDLE_BAT(, 28635) +HANDLE_BAT(, 28636) +HANDLE_BAT(, 28637) +HANDLE_BAT(, 28638) +HANDLE_BAT(, 28639) +HANDLE_BAT(, 28640) +HANDLE_BAT(, 28641) +HANDLE_BAT(, 28642) +HANDLE_BAT(, 28643) +HANDLE_BAT(, 28644) +HANDLE_BAT(, 28645) +HANDLE_BAT(, 28646) +HANDLE_BAT(, 28647) +HANDLE_BAT(, 28648) +HANDLE_BAT(, 28649) +HANDLE_BAT(, 28650) +HANDLE_BAT(, 28651) +HANDLE_BAT(, 28652) +HANDLE_BAT(, 28653) +HANDLE_BAT(, 28654) +HANDLE_BAT(, 28655) +HANDLE_BAT(, 28656) +HANDLE_BAT(, 28657) +HANDLE_BAT(, 28658) +HANDLE_BAT(, 28659) +HANDLE_BAT(, 28660) +HANDLE_BAT(, 28661) +HANDLE_BAT(, 28662) +HANDLE_BAT(, 28663) +HANDLE_BAT(, 28664) +HANDLE_BAT(, 28665) +HANDLE_BAT(, 28666) +HANDLE_BAT(, 28667) +HANDLE_BAT(, 28668) +HANDLE_BAT(, 28669) +HANDLE_BAT(, 28670) +HANDLE_BAT(, 28671) +HANDLE_BAT(, 28672) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 27649) +HANDLE_BAT(APINT_TYPE_PREFIX, 27650) +HANDLE_BAT(APINT_TYPE_PREFIX, 27651) +HANDLE_BAT(APINT_TYPE_PREFIX, 27652) +HANDLE_BAT(APINT_TYPE_PREFIX, 27653) +HANDLE_BAT(APINT_TYPE_PREFIX, 27654) +HANDLE_BAT(APINT_TYPE_PREFIX, 27655) +HANDLE_BAT(APINT_TYPE_PREFIX, 27656) +HANDLE_BAT(APINT_TYPE_PREFIX, 27657) +HANDLE_BAT(APINT_TYPE_PREFIX, 27658) +HANDLE_BAT(APINT_TYPE_PREFIX, 27659) +HANDLE_BAT(APINT_TYPE_PREFIX, 27660) +HANDLE_BAT(APINT_TYPE_PREFIX, 27661) +HANDLE_BAT(APINT_TYPE_PREFIX, 27662) +HANDLE_BAT(APINT_TYPE_PREFIX, 27663) +HANDLE_BAT(APINT_TYPE_PREFIX, 27664) +HANDLE_BAT(APINT_TYPE_PREFIX, 27665) +HANDLE_BAT(APINT_TYPE_PREFIX, 27666) +HANDLE_BAT(APINT_TYPE_PREFIX, 27667) +HANDLE_BAT(APINT_TYPE_PREFIX, 27668) +HANDLE_BAT(APINT_TYPE_PREFIX, 27669) +HANDLE_BAT(APINT_TYPE_PREFIX, 27670) +HANDLE_BAT(APINT_TYPE_PREFIX, 27671) +HANDLE_BAT(APINT_TYPE_PREFIX, 27672) +HANDLE_BAT(APINT_TYPE_PREFIX, 27673) +HANDLE_BAT(APINT_TYPE_PREFIX, 27674) +HANDLE_BAT(APINT_TYPE_PREFIX, 27675) +HANDLE_BAT(APINT_TYPE_PREFIX, 27676) +HANDLE_BAT(APINT_TYPE_PREFIX, 27677) +HANDLE_BAT(APINT_TYPE_PREFIX, 27678) +HANDLE_BAT(APINT_TYPE_PREFIX, 27679) +HANDLE_BAT(APINT_TYPE_PREFIX, 27680) +HANDLE_BAT(APINT_TYPE_PREFIX, 27681) +HANDLE_BAT(APINT_TYPE_PREFIX, 27682) +HANDLE_BAT(APINT_TYPE_PREFIX, 27683) +HANDLE_BAT(APINT_TYPE_PREFIX, 27684) +HANDLE_BAT(APINT_TYPE_PREFIX, 27685) +HANDLE_BAT(APINT_TYPE_PREFIX, 27686) +HANDLE_BAT(APINT_TYPE_PREFIX, 27687) +HANDLE_BAT(APINT_TYPE_PREFIX, 27688) +HANDLE_BAT(APINT_TYPE_PREFIX, 27689) +HANDLE_BAT(APINT_TYPE_PREFIX, 27690) +HANDLE_BAT(APINT_TYPE_PREFIX, 27691) +HANDLE_BAT(APINT_TYPE_PREFIX, 27692) +HANDLE_BAT(APINT_TYPE_PREFIX, 27693) +HANDLE_BAT(APINT_TYPE_PREFIX, 27694) +HANDLE_BAT(APINT_TYPE_PREFIX, 27695) +HANDLE_BAT(APINT_TYPE_PREFIX, 27696) +HANDLE_BAT(APINT_TYPE_PREFIX, 27697) +HANDLE_BAT(APINT_TYPE_PREFIX, 27698) +HANDLE_BAT(APINT_TYPE_PREFIX, 27699) +HANDLE_BAT(APINT_TYPE_PREFIX, 27700) +HANDLE_BAT(APINT_TYPE_PREFIX, 27701) +HANDLE_BAT(APINT_TYPE_PREFIX, 27702) +HANDLE_BAT(APINT_TYPE_PREFIX, 27703) +HANDLE_BAT(APINT_TYPE_PREFIX, 27704) +HANDLE_BAT(APINT_TYPE_PREFIX, 27705) +HANDLE_BAT(APINT_TYPE_PREFIX, 27706) +HANDLE_BAT(APINT_TYPE_PREFIX, 27707) +HANDLE_BAT(APINT_TYPE_PREFIX, 27708) +HANDLE_BAT(APINT_TYPE_PREFIX, 27709) +HANDLE_BAT(APINT_TYPE_PREFIX, 27710) +HANDLE_BAT(APINT_TYPE_PREFIX, 27711) +HANDLE_BAT(APINT_TYPE_PREFIX, 27712) +HANDLE_BAT(APINT_TYPE_PREFIX, 27713) +HANDLE_BAT(APINT_TYPE_PREFIX, 27714) +HANDLE_BAT(APINT_TYPE_PREFIX, 27715) +HANDLE_BAT(APINT_TYPE_PREFIX, 27716) +HANDLE_BAT(APINT_TYPE_PREFIX, 27717) +HANDLE_BAT(APINT_TYPE_PREFIX, 27718) +HANDLE_BAT(APINT_TYPE_PREFIX, 27719) +HANDLE_BAT(APINT_TYPE_PREFIX, 27720) +HANDLE_BAT(APINT_TYPE_PREFIX, 27721) +HANDLE_BAT(APINT_TYPE_PREFIX, 27722) +HANDLE_BAT(APINT_TYPE_PREFIX, 27723) +HANDLE_BAT(APINT_TYPE_PREFIX, 27724) +HANDLE_BAT(APINT_TYPE_PREFIX, 27725) +HANDLE_BAT(APINT_TYPE_PREFIX, 27726) +HANDLE_BAT(APINT_TYPE_PREFIX, 27727) +HANDLE_BAT(APINT_TYPE_PREFIX, 27728) +HANDLE_BAT(APINT_TYPE_PREFIX, 27729) +HANDLE_BAT(APINT_TYPE_PREFIX, 27730) +HANDLE_BAT(APINT_TYPE_PREFIX, 27731) +HANDLE_BAT(APINT_TYPE_PREFIX, 27732) +HANDLE_BAT(APINT_TYPE_PREFIX, 27733) +HANDLE_BAT(APINT_TYPE_PREFIX, 27734) +HANDLE_BAT(APINT_TYPE_PREFIX, 27735) +HANDLE_BAT(APINT_TYPE_PREFIX, 27736) +HANDLE_BAT(APINT_TYPE_PREFIX, 27737) +HANDLE_BAT(APINT_TYPE_PREFIX, 27738) +HANDLE_BAT(APINT_TYPE_PREFIX, 27739) +HANDLE_BAT(APINT_TYPE_PREFIX, 27740) +HANDLE_BAT(APINT_TYPE_PREFIX, 27741) +HANDLE_BAT(APINT_TYPE_PREFIX, 27742) +HANDLE_BAT(APINT_TYPE_PREFIX, 27743) +HANDLE_BAT(APINT_TYPE_PREFIX, 27744) +HANDLE_BAT(APINT_TYPE_PREFIX, 27745) +HANDLE_BAT(APINT_TYPE_PREFIX, 27746) +HANDLE_BAT(APINT_TYPE_PREFIX, 27747) +HANDLE_BAT(APINT_TYPE_PREFIX, 27748) +HANDLE_BAT(APINT_TYPE_PREFIX, 27749) +HANDLE_BAT(APINT_TYPE_PREFIX, 27750) +HANDLE_BAT(APINT_TYPE_PREFIX, 27751) +HANDLE_BAT(APINT_TYPE_PREFIX, 27752) +HANDLE_BAT(APINT_TYPE_PREFIX, 27753) +HANDLE_BAT(APINT_TYPE_PREFIX, 27754) +HANDLE_BAT(APINT_TYPE_PREFIX, 27755) +HANDLE_BAT(APINT_TYPE_PREFIX, 27756) +HANDLE_BAT(APINT_TYPE_PREFIX, 27757) +HANDLE_BAT(APINT_TYPE_PREFIX, 27758) +HANDLE_BAT(APINT_TYPE_PREFIX, 27759) +HANDLE_BAT(APINT_TYPE_PREFIX, 27760) +HANDLE_BAT(APINT_TYPE_PREFIX, 27761) +HANDLE_BAT(APINT_TYPE_PREFIX, 27762) +HANDLE_BAT(APINT_TYPE_PREFIX, 27763) +HANDLE_BAT(APINT_TYPE_PREFIX, 27764) +HANDLE_BAT(APINT_TYPE_PREFIX, 27765) +HANDLE_BAT(APINT_TYPE_PREFIX, 27766) +HANDLE_BAT(APINT_TYPE_PREFIX, 27767) +HANDLE_BAT(APINT_TYPE_PREFIX, 27768) +HANDLE_BAT(APINT_TYPE_PREFIX, 27769) +HANDLE_BAT(APINT_TYPE_PREFIX, 27770) +HANDLE_BAT(APINT_TYPE_PREFIX, 27771) +HANDLE_BAT(APINT_TYPE_PREFIX, 27772) +HANDLE_BAT(APINT_TYPE_PREFIX, 27773) +HANDLE_BAT(APINT_TYPE_PREFIX, 27774) +HANDLE_BAT(APINT_TYPE_PREFIX, 27775) +HANDLE_BAT(APINT_TYPE_PREFIX, 27776) +HANDLE_BAT(APINT_TYPE_PREFIX, 27777) +HANDLE_BAT(APINT_TYPE_PREFIX, 27778) +HANDLE_BAT(APINT_TYPE_PREFIX, 27779) +HANDLE_BAT(APINT_TYPE_PREFIX, 27780) +HANDLE_BAT(APINT_TYPE_PREFIX, 27781) +HANDLE_BAT(APINT_TYPE_PREFIX, 27782) +HANDLE_BAT(APINT_TYPE_PREFIX, 27783) +HANDLE_BAT(APINT_TYPE_PREFIX, 27784) +HANDLE_BAT(APINT_TYPE_PREFIX, 27785) +HANDLE_BAT(APINT_TYPE_PREFIX, 27786) +HANDLE_BAT(APINT_TYPE_PREFIX, 27787) +HANDLE_BAT(APINT_TYPE_PREFIX, 27788) +HANDLE_BAT(APINT_TYPE_PREFIX, 27789) +HANDLE_BAT(APINT_TYPE_PREFIX, 27790) +HANDLE_BAT(APINT_TYPE_PREFIX, 27791) +HANDLE_BAT(APINT_TYPE_PREFIX, 27792) +HANDLE_BAT(APINT_TYPE_PREFIX, 27793) +HANDLE_BAT(APINT_TYPE_PREFIX, 27794) +HANDLE_BAT(APINT_TYPE_PREFIX, 27795) +HANDLE_BAT(APINT_TYPE_PREFIX, 27796) +HANDLE_BAT(APINT_TYPE_PREFIX, 27797) +HANDLE_BAT(APINT_TYPE_PREFIX, 27798) +HANDLE_BAT(APINT_TYPE_PREFIX, 27799) +HANDLE_BAT(APINT_TYPE_PREFIX, 27800) +HANDLE_BAT(APINT_TYPE_PREFIX, 27801) +HANDLE_BAT(APINT_TYPE_PREFIX, 27802) +HANDLE_BAT(APINT_TYPE_PREFIX, 27803) +HANDLE_BAT(APINT_TYPE_PREFIX, 27804) +HANDLE_BAT(APINT_TYPE_PREFIX, 27805) +HANDLE_BAT(APINT_TYPE_PREFIX, 27806) +HANDLE_BAT(APINT_TYPE_PREFIX, 27807) +HANDLE_BAT(APINT_TYPE_PREFIX, 27808) +HANDLE_BAT(APINT_TYPE_PREFIX, 27809) +HANDLE_BAT(APINT_TYPE_PREFIX, 27810) +HANDLE_BAT(APINT_TYPE_PREFIX, 27811) +HANDLE_BAT(APINT_TYPE_PREFIX, 27812) +HANDLE_BAT(APINT_TYPE_PREFIX, 27813) +HANDLE_BAT(APINT_TYPE_PREFIX, 27814) +HANDLE_BAT(APINT_TYPE_PREFIX, 27815) +HANDLE_BAT(APINT_TYPE_PREFIX, 27816) +HANDLE_BAT(APINT_TYPE_PREFIX, 27817) +HANDLE_BAT(APINT_TYPE_PREFIX, 27818) +HANDLE_BAT(APINT_TYPE_PREFIX, 27819) +HANDLE_BAT(APINT_TYPE_PREFIX, 27820) +HANDLE_BAT(APINT_TYPE_PREFIX, 27821) +HANDLE_BAT(APINT_TYPE_PREFIX, 27822) +HANDLE_BAT(APINT_TYPE_PREFIX, 27823) +HANDLE_BAT(APINT_TYPE_PREFIX, 27824) +HANDLE_BAT(APINT_TYPE_PREFIX, 27825) +HANDLE_BAT(APINT_TYPE_PREFIX, 27826) +HANDLE_BAT(APINT_TYPE_PREFIX, 27827) +HANDLE_BAT(APINT_TYPE_PREFIX, 27828) +HANDLE_BAT(APINT_TYPE_PREFIX, 27829) +HANDLE_BAT(APINT_TYPE_PREFIX, 27830) +HANDLE_BAT(APINT_TYPE_PREFIX, 27831) +HANDLE_BAT(APINT_TYPE_PREFIX, 27832) +HANDLE_BAT(APINT_TYPE_PREFIX, 27833) +HANDLE_BAT(APINT_TYPE_PREFIX, 27834) +HANDLE_BAT(APINT_TYPE_PREFIX, 27835) +HANDLE_BAT(APINT_TYPE_PREFIX, 27836) +HANDLE_BAT(APINT_TYPE_PREFIX, 27837) +HANDLE_BAT(APINT_TYPE_PREFIX, 27838) +HANDLE_BAT(APINT_TYPE_PREFIX, 27839) +HANDLE_BAT(APINT_TYPE_PREFIX, 27840) +HANDLE_BAT(APINT_TYPE_PREFIX, 27841) +HANDLE_BAT(APINT_TYPE_PREFIX, 27842) +HANDLE_BAT(APINT_TYPE_PREFIX, 27843) +HANDLE_BAT(APINT_TYPE_PREFIX, 27844) +HANDLE_BAT(APINT_TYPE_PREFIX, 27845) +HANDLE_BAT(APINT_TYPE_PREFIX, 27846) +HANDLE_BAT(APINT_TYPE_PREFIX, 27847) +HANDLE_BAT(APINT_TYPE_PREFIX, 27848) +HANDLE_BAT(APINT_TYPE_PREFIX, 27849) +HANDLE_BAT(APINT_TYPE_PREFIX, 27850) +HANDLE_BAT(APINT_TYPE_PREFIX, 27851) +HANDLE_BAT(APINT_TYPE_PREFIX, 27852) +HANDLE_BAT(APINT_TYPE_PREFIX, 27853) +HANDLE_BAT(APINT_TYPE_PREFIX, 27854) +HANDLE_BAT(APINT_TYPE_PREFIX, 27855) +HANDLE_BAT(APINT_TYPE_PREFIX, 27856) +HANDLE_BAT(APINT_TYPE_PREFIX, 27857) +HANDLE_BAT(APINT_TYPE_PREFIX, 27858) +HANDLE_BAT(APINT_TYPE_PREFIX, 27859) +HANDLE_BAT(APINT_TYPE_PREFIX, 27860) +HANDLE_BAT(APINT_TYPE_PREFIX, 27861) +HANDLE_BAT(APINT_TYPE_PREFIX, 27862) +HANDLE_BAT(APINT_TYPE_PREFIX, 27863) +HANDLE_BAT(APINT_TYPE_PREFIX, 27864) +HANDLE_BAT(APINT_TYPE_PREFIX, 27865) +HANDLE_BAT(APINT_TYPE_PREFIX, 27866) +HANDLE_BAT(APINT_TYPE_PREFIX, 27867) +HANDLE_BAT(APINT_TYPE_PREFIX, 27868) +HANDLE_BAT(APINT_TYPE_PREFIX, 27869) +HANDLE_BAT(APINT_TYPE_PREFIX, 27870) +HANDLE_BAT(APINT_TYPE_PREFIX, 27871) +HANDLE_BAT(APINT_TYPE_PREFIX, 27872) +HANDLE_BAT(APINT_TYPE_PREFIX, 27873) +HANDLE_BAT(APINT_TYPE_PREFIX, 27874) +HANDLE_BAT(APINT_TYPE_PREFIX, 27875) +HANDLE_BAT(APINT_TYPE_PREFIX, 27876) +HANDLE_BAT(APINT_TYPE_PREFIX, 27877) +HANDLE_BAT(APINT_TYPE_PREFIX, 27878) +HANDLE_BAT(APINT_TYPE_PREFIX, 27879) +HANDLE_BAT(APINT_TYPE_PREFIX, 27880) +HANDLE_BAT(APINT_TYPE_PREFIX, 27881) +HANDLE_BAT(APINT_TYPE_PREFIX, 27882) +HANDLE_BAT(APINT_TYPE_PREFIX, 27883) +HANDLE_BAT(APINT_TYPE_PREFIX, 27884) +HANDLE_BAT(APINT_TYPE_PREFIX, 27885) +HANDLE_BAT(APINT_TYPE_PREFIX, 27886) +HANDLE_BAT(APINT_TYPE_PREFIX, 27887) +HANDLE_BAT(APINT_TYPE_PREFIX, 27888) +HANDLE_BAT(APINT_TYPE_PREFIX, 27889) +HANDLE_BAT(APINT_TYPE_PREFIX, 27890) +HANDLE_BAT(APINT_TYPE_PREFIX, 27891) +HANDLE_BAT(APINT_TYPE_PREFIX, 27892) +HANDLE_BAT(APINT_TYPE_PREFIX, 27893) +HANDLE_BAT(APINT_TYPE_PREFIX, 27894) +HANDLE_BAT(APINT_TYPE_PREFIX, 27895) +HANDLE_BAT(APINT_TYPE_PREFIX, 27896) +HANDLE_BAT(APINT_TYPE_PREFIX, 27897) +HANDLE_BAT(APINT_TYPE_PREFIX, 27898) +HANDLE_BAT(APINT_TYPE_PREFIX, 27899) +HANDLE_BAT(APINT_TYPE_PREFIX, 27900) +HANDLE_BAT(APINT_TYPE_PREFIX, 27901) +HANDLE_BAT(APINT_TYPE_PREFIX, 27902) +HANDLE_BAT(APINT_TYPE_PREFIX, 27903) +HANDLE_BAT(APINT_TYPE_PREFIX, 27904) +HANDLE_BAT(APINT_TYPE_PREFIX, 27905) +HANDLE_BAT(APINT_TYPE_PREFIX, 27906) +HANDLE_BAT(APINT_TYPE_PREFIX, 27907) +HANDLE_BAT(APINT_TYPE_PREFIX, 27908) +HANDLE_BAT(APINT_TYPE_PREFIX, 27909) +HANDLE_BAT(APINT_TYPE_PREFIX, 27910) +HANDLE_BAT(APINT_TYPE_PREFIX, 27911) +HANDLE_BAT(APINT_TYPE_PREFIX, 27912) +HANDLE_BAT(APINT_TYPE_PREFIX, 27913) +HANDLE_BAT(APINT_TYPE_PREFIX, 27914) +HANDLE_BAT(APINT_TYPE_PREFIX, 27915) +HANDLE_BAT(APINT_TYPE_PREFIX, 27916) +HANDLE_BAT(APINT_TYPE_PREFIX, 27917) +HANDLE_BAT(APINT_TYPE_PREFIX, 27918) +HANDLE_BAT(APINT_TYPE_PREFIX, 27919) +HANDLE_BAT(APINT_TYPE_PREFIX, 27920) +HANDLE_BAT(APINT_TYPE_PREFIX, 27921) +HANDLE_BAT(APINT_TYPE_PREFIX, 27922) +HANDLE_BAT(APINT_TYPE_PREFIX, 27923) +HANDLE_BAT(APINT_TYPE_PREFIX, 27924) +HANDLE_BAT(APINT_TYPE_PREFIX, 27925) +HANDLE_BAT(APINT_TYPE_PREFIX, 27926) +HANDLE_BAT(APINT_TYPE_PREFIX, 27927) +HANDLE_BAT(APINT_TYPE_PREFIX, 27928) +HANDLE_BAT(APINT_TYPE_PREFIX, 27929) +HANDLE_BAT(APINT_TYPE_PREFIX, 27930) +HANDLE_BAT(APINT_TYPE_PREFIX, 27931) +HANDLE_BAT(APINT_TYPE_PREFIX, 27932) +HANDLE_BAT(APINT_TYPE_PREFIX, 27933) +HANDLE_BAT(APINT_TYPE_PREFIX, 27934) +HANDLE_BAT(APINT_TYPE_PREFIX, 27935) +HANDLE_BAT(APINT_TYPE_PREFIX, 27936) +HANDLE_BAT(APINT_TYPE_PREFIX, 27937) +HANDLE_BAT(APINT_TYPE_PREFIX, 27938) +HANDLE_BAT(APINT_TYPE_PREFIX, 27939) +HANDLE_BAT(APINT_TYPE_PREFIX, 27940) +HANDLE_BAT(APINT_TYPE_PREFIX, 27941) +HANDLE_BAT(APINT_TYPE_PREFIX, 27942) +HANDLE_BAT(APINT_TYPE_PREFIX, 27943) +HANDLE_BAT(APINT_TYPE_PREFIX, 27944) +HANDLE_BAT(APINT_TYPE_PREFIX, 27945) +HANDLE_BAT(APINT_TYPE_PREFIX, 27946) +HANDLE_BAT(APINT_TYPE_PREFIX, 27947) +HANDLE_BAT(APINT_TYPE_PREFIX, 27948) +HANDLE_BAT(APINT_TYPE_PREFIX, 27949) +HANDLE_BAT(APINT_TYPE_PREFIX, 27950) +HANDLE_BAT(APINT_TYPE_PREFIX, 27951) +HANDLE_BAT(APINT_TYPE_PREFIX, 27952) +HANDLE_BAT(APINT_TYPE_PREFIX, 27953) +HANDLE_BAT(APINT_TYPE_PREFIX, 27954) +HANDLE_BAT(APINT_TYPE_PREFIX, 27955) +HANDLE_BAT(APINT_TYPE_PREFIX, 27956) +HANDLE_BAT(APINT_TYPE_PREFIX, 27957) +HANDLE_BAT(APINT_TYPE_PREFIX, 27958) +HANDLE_BAT(APINT_TYPE_PREFIX, 27959) +HANDLE_BAT(APINT_TYPE_PREFIX, 27960) +HANDLE_BAT(APINT_TYPE_PREFIX, 27961) +HANDLE_BAT(APINT_TYPE_PREFIX, 27962) +HANDLE_BAT(APINT_TYPE_PREFIX, 27963) +HANDLE_BAT(APINT_TYPE_PREFIX, 27964) +HANDLE_BAT(APINT_TYPE_PREFIX, 27965) +HANDLE_BAT(APINT_TYPE_PREFIX, 27966) +HANDLE_BAT(APINT_TYPE_PREFIX, 27967) +HANDLE_BAT(APINT_TYPE_PREFIX, 27968) +HANDLE_BAT(APINT_TYPE_PREFIX, 27969) +HANDLE_BAT(APINT_TYPE_PREFIX, 27970) +HANDLE_BAT(APINT_TYPE_PREFIX, 27971) +HANDLE_BAT(APINT_TYPE_PREFIX, 27972) +HANDLE_BAT(APINT_TYPE_PREFIX, 27973) +HANDLE_BAT(APINT_TYPE_PREFIX, 27974) +HANDLE_BAT(APINT_TYPE_PREFIX, 27975) +HANDLE_BAT(APINT_TYPE_PREFIX, 27976) +HANDLE_BAT(APINT_TYPE_PREFIX, 27977) +HANDLE_BAT(APINT_TYPE_PREFIX, 27978) +HANDLE_BAT(APINT_TYPE_PREFIX, 27979) +HANDLE_BAT(APINT_TYPE_PREFIX, 27980) +HANDLE_BAT(APINT_TYPE_PREFIX, 27981) +HANDLE_BAT(APINT_TYPE_PREFIX, 27982) +HANDLE_BAT(APINT_TYPE_PREFIX, 27983) +HANDLE_BAT(APINT_TYPE_PREFIX, 27984) +HANDLE_BAT(APINT_TYPE_PREFIX, 27985) +HANDLE_BAT(APINT_TYPE_PREFIX, 27986) +HANDLE_BAT(APINT_TYPE_PREFIX, 27987) +HANDLE_BAT(APINT_TYPE_PREFIX, 27988) +HANDLE_BAT(APINT_TYPE_PREFIX, 27989) +HANDLE_BAT(APINT_TYPE_PREFIX, 27990) +HANDLE_BAT(APINT_TYPE_PREFIX, 27991) +HANDLE_BAT(APINT_TYPE_PREFIX, 27992) +HANDLE_BAT(APINT_TYPE_PREFIX, 27993) +HANDLE_BAT(APINT_TYPE_PREFIX, 27994) +HANDLE_BAT(APINT_TYPE_PREFIX, 27995) +HANDLE_BAT(APINT_TYPE_PREFIX, 27996) +HANDLE_BAT(APINT_TYPE_PREFIX, 27997) +HANDLE_BAT(APINT_TYPE_PREFIX, 27998) +HANDLE_BAT(APINT_TYPE_PREFIX, 27999) +HANDLE_BAT(APINT_TYPE_PREFIX, 28000) +HANDLE_BAT(APINT_TYPE_PREFIX, 28001) +HANDLE_BAT(APINT_TYPE_PREFIX, 28002) +HANDLE_BAT(APINT_TYPE_PREFIX, 28003) +HANDLE_BAT(APINT_TYPE_PREFIX, 28004) +HANDLE_BAT(APINT_TYPE_PREFIX, 28005) +HANDLE_BAT(APINT_TYPE_PREFIX, 28006) +HANDLE_BAT(APINT_TYPE_PREFIX, 28007) +HANDLE_BAT(APINT_TYPE_PREFIX, 28008) +HANDLE_BAT(APINT_TYPE_PREFIX, 28009) +HANDLE_BAT(APINT_TYPE_PREFIX, 28010) +HANDLE_BAT(APINT_TYPE_PREFIX, 28011) +HANDLE_BAT(APINT_TYPE_PREFIX, 28012) +HANDLE_BAT(APINT_TYPE_PREFIX, 28013) +HANDLE_BAT(APINT_TYPE_PREFIX, 28014) +HANDLE_BAT(APINT_TYPE_PREFIX, 28015) +HANDLE_BAT(APINT_TYPE_PREFIX, 28016) +HANDLE_BAT(APINT_TYPE_PREFIX, 28017) +HANDLE_BAT(APINT_TYPE_PREFIX, 28018) +HANDLE_BAT(APINT_TYPE_PREFIX, 28019) +HANDLE_BAT(APINT_TYPE_PREFIX, 28020) +HANDLE_BAT(APINT_TYPE_PREFIX, 28021) +HANDLE_BAT(APINT_TYPE_PREFIX, 28022) +HANDLE_BAT(APINT_TYPE_PREFIX, 28023) +HANDLE_BAT(APINT_TYPE_PREFIX, 28024) +HANDLE_BAT(APINT_TYPE_PREFIX, 28025) +HANDLE_BAT(APINT_TYPE_PREFIX, 28026) +HANDLE_BAT(APINT_TYPE_PREFIX, 28027) +HANDLE_BAT(APINT_TYPE_PREFIX, 28028) +HANDLE_BAT(APINT_TYPE_PREFIX, 28029) +HANDLE_BAT(APINT_TYPE_PREFIX, 28030) +HANDLE_BAT(APINT_TYPE_PREFIX, 28031) +HANDLE_BAT(APINT_TYPE_PREFIX, 28032) +HANDLE_BAT(APINT_TYPE_PREFIX, 28033) +HANDLE_BAT(APINT_TYPE_PREFIX, 28034) +HANDLE_BAT(APINT_TYPE_PREFIX, 28035) +HANDLE_BAT(APINT_TYPE_PREFIX, 28036) +HANDLE_BAT(APINT_TYPE_PREFIX, 28037) +HANDLE_BAT(APINT_TYPE_PREFIX, 28038) +HANDLE_BAT(APINT_TYPE_PREFIX, 28039) +HANDLE_BAT(APINT_TYPE_PREFIX, 28040) +HANDLE_BAT(APINT_TYPE_PREFIX, 28041) +HANDLE_BAT(APINT_TYPE_PREFIX, 28042) +HANDLE_BAT(APINT_TYPE_PREFIX, 28043) +HANDLE_BAT(APINT_TYPE_PREFIX, 28044) +HANDLE_BAT(APINT_TYPE_PREFIX, 28045) +HANDLE_BAT(APINT_TYPE_PREFIX, 28046) +HANDLE_BAT(APINT_TYPE_PREFIX, 28047) +HANDLE_BAT(APINT_TYPE_PREFIX, 28048) +HANDLE_BAT(APINT_TYPE_PREFIX, 28049) +HANDLE_BAT(APINT_TYPE_PREFIX, 28050) +HANDLE_BAT(APINT_TYPE_PREFIX, 28051) +HANDLE_BAT(APINT_TYPE_PREFIX, 28052) +HANDLE_BAT(APINT_TYPE_PREFIX, 28053) +HANDLE_BAT(APINT_TYPE_PREFIX, 28054) +HANDLE_BAT(APINT_TYPE_PREFIX, 28055) +HANDLE_BAT(APINT_TYPE_PREFIX, 28056) +HANDLE_BAT(APINT_TYPE_PREFIX, 28057) +HANDLE_BAT(APINT_TYPE_PREFIX, 28058) +HANDLE_BAT(APINT_TYPE_PREFIX, 28059) +HANDLE_BAT(APINT_TYPE_PREFIX, 28060) +HANDLE_BAT(APINT_TYPE_PREFIX, 28061) +HANDLE_BAT(APINT_TYPE_PREFIX, 28062) +HANDLE_BAT(APINT_TYPE_PREFIX, 28063) +HANDLE_BAT(APINT_TYPE_PREFIX, 28064) +HANDLE_BAT(APINT_TYPE_PREFIX, 28065) +HANDLE_BAT(APINT_TYPE_PREFIX, 28066) +HANDLE_BAT(APINT_TYPE_PREFIX, 28067) +HANDLE_BAT(APINT_TYPE_PREFIX, 28068) +HANDLE_BAT(APINT_TYPE_PREFIX, 28069) +HANDLE_BAT(APINT_TYPE_PREFIX, 28070) +HANDLE_BAT(APINT_TYPE_PREFIX, 28071) +HANDLE_BAT(APINT_TYPE_PREFIX, 28072) +HANDLE_BAT(APINT_TYPE_PREFIX, 28073) +HANDLE_BAT(APINT_TYPE_PREFIX, 28074) +HANDLE_BAT(APINT_TYPE_PREFIX, 28075) +HANDLE_BAT(APINT_TYPE_PREFIX, 28076) +HANDLE_BAT(APINT_TYPE_PREFIX, 28077) +HANDLE_BAT(APINT_TYPE_PREFIX, 28078) +HANDLE_BAT(APINT_TYPE_PREFIX, 28079) +HANDLE_BAT(APINT_TYPE_PREFIX, 28080) +HANDLE_BAT(APINT_TYPE_PREFIX, 28081) +HANDLE_BAT(APINT_TYPE_PREFIX, 28082) +HANDLE_BAT(APINT_TYPE_PREFIX, 28083) +HANDLE_BAT(APINT_TYPE_PREFIX, 28084) +HANDLE_BAT(APINT_TYPE_PREFIX, 28085) +HANDLE_BAT(APINT_TYPE_PREFIX, 28086) +HANDLE_BAT(APINT_TYPE_PREFIX, 28087) +HANDLE_BAT(APINT_TYPE_PREFIX, 28088) +HANDLE_BAT(APINT_TYPE_PREFIX, 28089) +HANDLE_BAT(APINT_TYPE_PREFIX, 28090) +HANDLE_BAT(APINT_TYPE_PREFIX, 28091) +HANDLE_BAT(APINT_TYPE_PREFIX, 28092) +HANDLE_BAT(APINT_TYPE_PREFIX, 28093) +HANDLE_BAT(APINT_TYPE_PREFIX, 28094) +HANDLE_BAT(APINT_TYPE_PREFIX, 28095) +HANDLE_BAT(APINT_TYPE_PREFIX, 28096) +HANDLE_BAT(APINT_TYPE_PREFIX, 28097) +HANDLE_BAT(APINT_TYPE_PREFIX, 28098) +HANDLE_BAT(APINT_TYPE_PREFIX, 28099) +HANDLE_BAT(APINT_TYPE_PREFIX, 28100) +HANDLE_BAT(APINT_TYPE_PREFIX, 28101) +HANDLE_BAT(APINT_TYPE_PREFIX, 28102) +HANDLE_BAT(APINT_TYPE_PREFIX, 28103) +HANDLE_BAT(APINT_TYPE_PREFIX, 28104) +HANDLE_BAT(APINT_TYPE_PREFIX, 28105) +HANDLE_BAT(APINT_TYPE_PREFIX, 28106) +HANDLE_BAT(APINT_TYPE_PREFIX, 28107) +HANDLE_BAT(APINT_TYPE_PREFIX, 28108) +HANDLE_BAT(APINT_TYPE_PREFIX, 28109) +HANDLE_BAT(APINT_TYPE_PREFIX, 28110) +HANDLE_BAT(APINT_TYPE_PREFIX, 28111) +HANDLE_BAT(APINT_TYPE_PREFIX, 28112) +HANDLE_BAT(APINT_TYPE_PREFIX, 28113) +HANDLE_BAT(APINT_TYPE_PREFIX, 28114) +HANDLE_BAT(APINT_TYPE_PREFIX, 28115) +HANDLE_BAT(APINT_TYPE_PREFIX, 28116) +HANDLE_BAT(APINT_TYPE_PREFIX, 28117) +HANDLE_BAT(APINT_TYPE_PREFIX, 28118) +HANDLE_BAT(APINT_TYPE_PREFIX, 28119) +HANDLE_BAT(APINT_TYPE_PREFIX, 28120) +HANDLE_BAT(APINT_TYPE_PREFIX, 28121) +HANDLE_BAT(APINT_TYPE_PREFIX, 28122) +HANDLE_BAT(APINT_TYPE_PREFIX, 28123) +HANDLE_BAT(APINT_TYPE_PREFIX, 28124) +HANDLE_BAT(APINT_TYPE_PREFIX, 28125) +HANDLE_BAT(APINT_TYPE_PREFIX, 28126) +HANDLE_BAT(APINT_TYPE_PREFIX, 28127) +HANDLE_BAT(APINT_TYPE_PREFIX, 28128) +HANDLE_BAT(APINT_TYPE_PREFIX, 28129) +HANDLE_BAT(APINT_TYPE_PREFIX, 28130) +HANDLE_BAT(APINT_TYPE_PREFIX, 28131) +HANDLE_BAT(APINT_TYPE_PREFIX, 28132) +HANDLE_BAT(APINT_TYPE_PREFIX, 28133) +HANDLE_BAT(APINT_TYPE_PREFIX, 28134) +HANDLE_BAT(APINT_TYPE_PREFIX, 28135) +HANDLE_BAT(APINT_TYPE_PREFIX, 28136) +HANDLE_BAT(APINT_TYPE_PREFIX, 28137) +HANDLE_BAT(APINT_TYPE_PREFIX, 28138) +HANDLE_BAT(APINT_TYPE_PREFIX, 28139) +HANDLE_BAT(APINT_TYPE_PREFIX, 28140) +HANDLE_BAT(APINT_TYPE_PREFIX, 28141) +HANDLE_BAT(APINT_TYPE_PREFIX, 28142) +HANDLE_BAT(APINT_TYPE_PREFIX, 28143) +HANDLE_BAT(APINT_TYPE_PREFIX, 28144) +HANDLE_BAT(APINT_TYPE_PREFIX, 28145) +HANDLE_BAT(APINT_TYPE_PREFIX, 28146) +HANDLE_BAT(APINT_TYPE_PREFIX, 28147) +HANDLE_BAT(APINT_TYPE_PREFIX, 28148) +HANDLE_BAT(APINT_TYPE_PREFIX, 28149) +HANDLE_BAT(APINT_TYPE_PREFIX, 28150) +HANDLE_BAT(APINT_TYPE_PREFIX, 28151) +HANDLE_BAT(APINT_TYPE_PREFIX, 28152) +HANDLE_BAT(APINT_TYPE_PREFIX, 28153) +HANDLE_BAT(APINT_TYPE_PREFIX, 28154) +HANDLE_BAT(APINT_TYPE_PREFIX, 28155) +HANDLE_BAT(APINT_TYPE_PREFIX, 28156) +HANDLE_BAT(APINT_TYPE_PREFIX, 28157) +HANDLE_BAT(APINT_TYPE_PREFIX, 28158) +HANDLE_BAT(APINT_TYPE_PREFIX, 28159) +HANDLE_BAT(APINT_TYPE_PREFIX, 28160) +HANDLE_BAT(APINT_TYPE_PREFIX, 28161) +HANDLE_BAT(APINT_TYPE_PREFIX, 28162) +HANDLE_BAT(APINT_TYPE_PREFIX, 28163) +HANDLE_BAT(APINT_TYPE_PREFIX, 28164) +HANDLE_BAT(APINT_TYPE_PREFIX, 28165) +HANDLE_BAT(APINT_TYPE_PREFIX, 28166) +HANDLE_BAT(APINT_TYPE_PREFIX, 28167) +HANDLE_BAT(APINT_TYPE_PREFIX, 28168) +HANDLE_BAT(APINT_TYPE_PREFIX, 28169) +HANDLE_BAT(APINT_TYPE_PREFIX, 28170) +HANDLE_BAT(APINT_TYPE_PREFIX, 28171) +HANDLE_BAT(APINT_TYPE_PREFIX, 28172) +HANDLE_BAT(APINT_TYPE_PREFIX, 28173) +HANDLE_BAT(APINT_TYPE_PREFIX, 28174) +HANDLE_BAT(APINT_TYPE_PREFIX, 28175) +HANDLE_BAT(APINT_TYPE_PREFIX, 28176) +HANDLE_BAT(APINT_TYPE_PREFIX, 28177) +HANDLE_BAT(APINT_TYPE_PREFIX, 28178) +HANDLE_BAT(APINT_TYPE_PREFIX, 28179) +HANDLE_BAT(APINT_TYPE_PREFIX, 28180) +HANDLE_BAT(APINT_TYPE_PREFIX, 28181) +HANDLE_BAT(APINT_TYPE_PREFIX, 28182) +HANDLE_BAT(APINT_TYPE_PREFIX, 28183) +HANDLE_BAT(APINT_TYPE_PREFIX, 28184) +HANDLE_BAT(APINT_TYPE_PREFIX, 28185) +HANDLE_BAT(APINT_TYPE_PREFIX, 28186) +HANDLE_BAT(APINT_TYPE_PREFIX, 28187) +HANDLE_BAT(APINT_TYPE_PREFIX, 28188) +HANDLE_BAT(APINT_TYPE_PREFIX, 28189) +HANDLE_BAT(APINT_TYPE_PREFIX, 28190) +HANDLE_BAT(APINT_TYPE_PREFIX, 28191) +HANDLE_BAT(APINT_TYPE_PREFIX, 28192) +HANDLE_BAT(APINT_TYPE_PREFIX, 28193) +HANDLE_BAT(APINT_TYPE_PREFIX, 28194) +HANDLE_BAT(APINT_TYPE_PREFIX, 28195) +HANDLE_BAT(APINT_TYPE_PREFIX, 28196) +HANDLE_BAT(APINT_TYPE_PREFIX, 28197) +HANDLE_BAT(APINT_TYPE_PREFIX, 28198) +HANDLE_BAT(APINT_TYPE_PREFIX, 28199) +HANDLE_BAT(APINT_TYPE_PREFIX, 28200) +HANDLE_BAT(APINT_TYPE_PREFIX, 28201) +HANDLE_BAT(APINT_TYPE_PREFIX, 28202) +HANDLE_BAT(APINT_TYPE_PREFIX, 28203) +HANDLE_BAT(APINT_TYPE_PREFIX, 28204) +HANDLE_BAT(APINT_TYPE_PREFIX, 28205) +HANDLE_BAT(APINT_TYPE_PREFIX, 28206) +HANDLE_BAT(APINT_TYPE_PREFIX, 28207) +HANDLE_BAT(APINT_TYPE_PREFIX, 28208) +HANDLE_BAT(APINT_TYPE_PREFIX, 28209) +HANDLE_BAT(APINT_TYPE_PREFIX, 28210) +HANDLE_BAT(APINT_TYPE_PREFIX, 28211) +HANDLE_BAT(APINT_TYPE_PREFIX, 28212) +HANDLE_BAT(APINT_TYPE_PREFIX, 28213) +HANDLE_BAT(APINT_TYPE_PREFIX, 28214) +HANDLE_BAT(APINT_TYPE_PREFIX, 28215) +HANDLE_BAT(APINT_TYPE_PREFIX, 28216) +HANDLE_BAT(APINT_TYPE_PREFIX, 28217) +HANDLE_BAT(APINT_TYPE_PREFIX, 28218) +HANDLE_BAT(APINT_TYPE_PREFIX, 28219) +HANDLE_BAT(APINT_TYPE_PREFIX, 28220) +HANDLE_BAT(APINT_TYPE_PREFIX, 28221) +HANDLE_BAT(APINT_TYPE_PREFIX, 28222) +HANDLE_BAT(APINT_TYPE_PREFIX, 28223) +HANDLE_BAT(APINT_TYPE_PREFIX, 28224) +HANDLE_BAT(APINT_TYPE_PREFIX, 28225) +HANDLE_BAT(APINT_TYPE_PREFIX, 28226) +HANDLE_BAT(APINT_TYPE_PREFIX, 28227) +HANDLE_BAT(APINT_TYPE_PREFIX, 28228) +HANDLE_BAT(APINT_TYPE_PREFIX, 28229) +HANDLE_BAT(APINT_TYPE_PREFIX, 28230) +HANDLE_BAT(APINT_TYPE_PREFIX, 28231) +HANDLE_BAT(APINT_TYPE_PREFIX, 28232) +HANDLE_BAT(APINT_TYPE_PREFIX, 28233) +HANDLE_BAT(APINT_TYPE_PREFIX, 28234) +HANDLE_BAT(APINT_TYPE_PREFIX, 28235) +HANDLE_BAT(APINT_TYPE_PREFIX, 28236) +HANDLE_BAT(APINT_TYPE_PREFIX, 28237) +HANDLE_BAT(APINT_TYPE_PREFIX, 28238) +HANDLE_BAT(APINT_TYPE_PREFIX, 28239) +HANDLE_BAT(APINT_TYPE_PREFIX, 28240) +HANDLE_BAT(APINT_TYPE_PREFIX, 28241) +HANDLE_BAT(APINT_TYPE_PREFIX, 28242) +HANDLE_BAT(APINT_TYPE_PREFIX, 28243) +HANDLE_BAT(APINT_TYPE_PREFIX, 28244) +HANDLE_BAT(APINT_TYPE_PREFIX, 28245) +HANDLE_BAT(APINT_TYPE_PREFIX, 28246) +HANDLE_BAT(APINT_TYPE_PREFIX, 28247) +HANDLE_BAT(APINT_TYPE_PREFIX, 28248) +HANDLE_BAT(APINT_TYPE_PREFIX, 28249) +HANDLE_BAT(APINT_TYPE_PREFIX, 28250) +HANDLE_BAT(APINT_TYPE_PREFIX, 28251) +HANDLE_BAT(APINT_TYPE_PREFIX, 28252) +HANDLE_BAT(APINT_TYPE_PREFIX, 28253) +HANDLE_BAT(APINT_TYPE_PREFIX, 28254) +HANDLE_BAT(APINT_TYPE_PREFIX, 28255) +HANDLE_BAT(APINT_TYPE_PREFIX, 28256) +HANDLE_BAT(APINT_TYPE_PREFIX, 28257) +HANDLE_BAT(APINT_TYPE_PREFIX, 28258) +HANDLE_BAT(APINT_TYPE_PREFIX, 28259) +HANDLE_BAT(APINT_TYPE_PREFIX, 28260) +HANDLE_BAT(APINT_TYPE_PREFIX, 28261) +HANDLE_BAT(APINT_TYPE_PREFIX, 28262) +HANDLE_BAT(APINT_TYPE_PREFIX, 28263) +HANDLE_BAT(APINT_TYPE_PREFIX, 28264) +HANDLE_BAT(APINT_TYPE_PREFIX, 28265) +HANDLE_BAT(APINT_TYPE_PREFIX, 28266) +HANDLE_BAT(APINT_TYPE_PREFIX, 28267) +HANDLE_BAT(APINT_TYPE_PREFIX, 28268) +HANDLE_BAT(APINT_TYPE_PREFIX, 28269) +HANDLE_BAT(APINT_TYPE_PREFIX, 28270) +HANDLE_BAT(APINT_TYPE_PREFIX, 28271) +HANDLE_BAT(APINT_TYPE_PREFIX, 28272) +HANDLE_BAT(APINT_TYPE_PREFIX, 28273) +HANDLE_BAT(APINT_TYPE_PREFIX, 28274) +HANDLE_BAT(APINT_TYPE_PREFIX, 28275) +HANDLE_BAT(APINT_TYPE_PREFIX, 28276) +HANDLE_BAT(APINT_TYPE_PREFIX, 28277) +HANDLE_BAT(APINT_TYPE_PREFIX, 28278) +HANDLE_BAT(APINT_TYPE_PREFIX, 28279) +HANDLE_BAT(APINT_TYPE_PREFIX, 28280) +HANDLE_BAT(APINT_TYPE_PREFIX, 28281) +HANDLE_BAT(APINT_TYPE_PREFIX, 28282) +HANDLE_BAT(APINT_TYPE_PREFIX, 28283) +HANDLE_BAT(APINT_TYPE_PREFIX, 28284) +HANDLE_BAT(APINT_TYPE_PREFIX, 28285) +HANDLE_BAT(APINT_TYPE_PREFIX, 28286) +HANDLE_BAT(APINT_TYPE_PREFIX, 28287) +HANDLE_BAT(APINT_TYPE_PREFIX, 28288) +HANDLE_BAT(APINT_TYPE_PREFIX, 28289) +HANDLE_BAT(APINT_TYPE_PREFIX, 28290) +HANDLE_BAT(APINT_TYPE_PREFIX, 28291) +HANDLE_BAT(APINT_TYPE_PREFIX, 28292) +HANDLE_BAT(APINT_TYPE_PREFIX, 28293) +HANDLE_BAT(APINT_TYPE_PREFIX, 28294) +HANDLE_BAT(APINT_TYPE_PREFIX, 28295) +HANDLE_BAT(APINT_TYPE_PREFIX, 28296) +HANDLE_BAT(APINT_TYPE_PREFIX, 28297) +HANDLE_BAT(APINT_TYPE_PREFIX, 28298) +HANDLE_BAT(APINT_TYPE_PREFIX, 28299) +HANDLE_BAT(APINT_TYPE_PREFIX, 28300) +HANDLE_BAT(APINT_TYPE_PREFIX, 28301) +HANDLE_BAT(APINT_TYPE_PREFIX, 28302) +HANDLE_BAT(APINT_TYPE_PREFIX, 28303) +HANDLE_BAT(APINT_TYPE_PREFIX, 28304) +HANDLE_BAT(APINT_TYPE_PREFIX, 28305) +HANDLE_BAT(APINT_TYPE_PREFIX, 28306) +HANDLE_BAT(APINT_TYPE_PREFIX, 28307) +HANDLE_BAT(APINT_TYPE_PREFIX, 28308) +HANDLE_BAT(APINT_TYPE_PREFIX, 28309) +HANDLE_BAT(APINT_TYPE_PREFIX, 28310) +HANDLE_BAT(APINT_TYPE_PREFIX, 28311) +HANDLE_BAT(APINT_TYPE_PREFIX, 28312) +HANDLE_BAT(APINT_TYPE_PREFIX, 28313) +HANDLE_BAT(APINT_TYPE_PREFIX, 28314) +HANDLE_BAT(APINT_TYPE_PREFIX, 28315) +HANDLE_BAT(APINT_TYPE_PREFIX, 28316) +HANDLE_BAT(APINT_TYPE_PREFIX, 28317) +HANDLE_BAT(APINT_TYPE_PREFIX, 28318) +HANDLE_BAT(APINT_TYPE_PREFIX, 28319) +HANDLE_BAT(APINT_TYPE_PREFIX, 28320) +HANDLE_BAT(APINT_TYPE_PREFIX, 28321) +HANDLE_BAT(APINT_TYPE_PREFIX, 28322) +HANDLE_BAT(APINT_TYPE_PREFIX, 28323) +HANDLE_BAT(APINT_TYPE_PREFIX, 28324) +HANDLE_BAT(APINT_TYPE_PREFIX, 28325) +HANDLE_BAT(APINT_TYPE_PREFIX, 28326) +HANDLE_BAT(APINT_TYPE_PREFIX, 28327) +HANDLE_BAT(APINT_TYPE_PREFIX, 28328) +HANDLE_BAT(APINT_TYPE_PREFIX, 28329) +HANDLE_BAT(APINT_TYPE_PREFIX, 28330) +HANDLE_BAT(APINT_TYPE_PREFIX, 28331) +HANDLE_BAT(APINT_TYPE_PREFIX, 28332) +HANDLE_BAT(APINT_TYPE_PREFIX, 28333) +HANDLE_BAT(APINT_TYPE_PREFIX, 28334) +HANDLE_BAT(APINT_TYPE_PREFIX, 28335) +HANDLE_BAT(APINT_TYPE_PREFIX, 28336) +HANDLE_BAT(APINT_TYPE_PREFIX, 28337) +HANDLE_BAT(APINT_TYPE_PREFIX, 28338) +HANDLE_BAT(APINT_TYPE_PREFIX, 28339) +HANDLE_BAT(APINT_TYPE_PREFIX, 28340) +HANDLE_BAT(APINT_TYPE_PREFIX, 28341) +HANDLE_BAT(APINT_TYPE_PREFIX, 28342) +HANDLE_BAT(APINT_TYPE_PREFIX, 28343) +HANDLE_BAT(APINT_TYPE_PREFIX, 28344) +HANDLE_BAT(APINT_TYPE_PREFIX, 28345) +HANDLE_BAT(APINT_TYPE_PREFIX, 28346) +HANDLE_BAT(APINT_TYPE_PREFIX, 28347) +HANDLE_BAT(APINT_TYPE_PREFIX, 28348) +HANDLE_BAT(APINT_TYPE_PREFIX, 28349) +HANDLE_BAT(APINT_TYPE_PREFIX, 28350) +HANDLE_BAT(APINT_TYPE_PREFIX, 28351) +HANDLE_BAT(APINT_TYPE_PREFIX, 28352) +HANDLE_BAT(APINT_TYPE_PREFIX, 28353) +HANDLE_BAT(APINT_TYPE_PREFIX, 28354) +HANDLE_BAT(APINT_TYPE_PREFIX, 28355) +HANDLE_BAT(APINT_TYPE_PREFIX, 28356) +HANDLE_BAT(APINT_TYPE_PREFIX, 28357) +HANDLE_BAT(APINT_TYPE_PREFIX, 28358) +HANDLE_BAT(APINT_TYPE_PREFIX, 28359) +HANDLE_BAT(APINT_TYPE_PREFIX, 28360) +HANDLE_BAT(APINT_TYPE_PREFIX, 28361) +HANDLE_BAT(APINT_TYPE_PREFIX, 28362) +HANDLE_BAT(APINT_TYPE_PREFIX, 28363) +HANDLE_BAT(APINT_TYPE_PREFIX, 28364) +HANDLE_BAT(APINT_TYPE_PREFIX, 28365) +HANDLE_BAT(APINT_TYPE_PREFIX, 28366) +HANDLE_BAT(APINT_TYPE_PREFIX, 28367) +HANDLE_BAT(APINT_TYPE_PREFIX, 28368) +HANDLE_BAT(APINT_TYPE_PREFIX, 28369) +HANDLE_BAT(APINT_TYPE_PREFIX, 28370) +HANDLE_BAT(APINT_TYPE_PREFIX, 28371) +HANDLE_BAT(APINT_TYPE_PREFIX, 28372) +HANDLE_BAT(APINT_TYPE_PREFIX, 28373) +HANDLE_BAT(APINT_TYPE_PREFIX, 28374) +HANDLE_BAT(APINT_TYPE_PREFIX, 28375) +HANDLE_BAT(APINT_TYPE_PREFIX, 28376) +HANDLE_BAT(APINT_TYPE_PREFIX, 28377) +HANDLE_BAT(APINT_TYPE_PREFIX, 28378) +HANDLE_BAT(APINT_TYPE_PREFIX, 28379) +HANDLE_BAT(APINT_TYPE_PREFIX, 28380) +HANDLE_BAT(APINT_TYPE_PREFIX, 28381) +HANDLE_BAT(APINT_TYPE_PREFIX, 28382) +HANDLE_BAT(APINT_TYPE_PREFIX, 28383) +HANDLE_BAT(APINT_TYPE_PREFIX, 28384) +HANDLE_BAT(APINT_TYPE_PREFIX, 28385) +HANDLE_BAT(APINT_TYPE_PREFIX, 28386) +HANDLE_BAT(APINT_TYPE_PREFIX, 28387) +HANDLE_BAT(APINT_TYPE_PREFIX, 28388) +HANDLE_BAT(APINT_TYPE_PREFIX, 28389) +HANDLE_BAT(APINT_TYPE_PREFIX, 28390) +HANDLE_BAT(APINT_TYPE_PREFIX, 28391) +HANDLE_BAT(APINT_TYPE_PREFIX, 28392) +HANDLE_BAT(APINT_TYPE_PREFIX, 28393) +HANDLE_BAT(APINT_TYPE_PREFIX, 28394) +HANDLE_BAT(APINT_TYPE_PREFIX, 28395) +HANDLE_BAT(APINT_TYPE_PREFIX, 28396) +HANDLE_BAT(APINT_TYPE_PREFIX, 28397) +HANDLE_BAT(APINT_TYPE_PREFIX, 28398) +HANDLE_BAT(APINT_TYPE_PREFIX, 28399) +HANDLE_BAT(APINT_TYPE_PREFIX, 28400) +HANDLE_BAT(APINT_TYPE_PREFIX, 28401) +HANDLE_BAT(APINT_TYPE_PREFIX, 28402) +HANDLE_BAT(APINT_TYPE_PREFIX, 28403) +HANDLE_BAT(APINT_TYPE_PREFIX, 28404) +HANDLE_BAT(APINT_TYPE_PREFIX, 28405) +HANDLE_BAT(APINT_TYPE_PREFIX, 28406) +HANDLE_BAT(APINT_TYPE_PREFIX, 28407) +HANDLE_BAT(APINT_TYPE_PREFIX, 28408) +HANDLE_BAT(APINT_TYPE_PREFIX, 28409) +HANDLE_BAT(APINT_TYPE_PREFIX, 28410) +HANDLE_BAT(APINT_TYPE_PREFIX, 28411) +HANDLE_BAT(APINT_TYPE_PREFIX, 28412) +HANDLE_BAT(APINT_TYPE_PREFIX, 28413) +HANDLE_BAT(APINT_TYPE_PREFIX, 28414) +HANDLE_BAT(APINT_TYPE_PREFIX, 28415) +HANDLE_BAT(APINT_TYPE_PREFIX, 28416) +HANDLE_BAT(APINT_TYPE_PREFIX, 28417) +HANDLE_BAT(APINT_TYPE_PREFIX, 28418) +HANDLE_BAT(APINT_TYPE_PREFIX, 28419) +HANDLE_BAT(APINT_TYPE_PREFIX, 28420) +HANDLE_BAT(APINT_TYPE_PREFIX, 28421) +HANDLE_BAT(APINT_TYPE_PREFIX, 28422) +HANDLE_BAT(APINT_TYPE_PREFIX, 28423) +HANDLE_BAT(APINT_TYPE_PREFIX, 28424) +HANDLE_BAT(APINT_TYPE_PREFIX, 28425) +HANDLE_BAT(APINT_TYPE_PREFIX, 28426) +HANDLE_BAT(APINT_TYPE_PREFIX, 28427) +HANDLE_BAT(APINT_TYPE_PREFIX, 28428) +HANDLE_BAT(APINT_TYPE_PREFIX, 28429) +HANDLE_BAT(APINT_TYPE_PREFIX, 28430) +HANDLE_BAT(APINT_TYPE_PREFIX, 28431) +HANDLE_BAT(APINT_TYPE_PREFIX, 28432) +HANDLE_BAT(APINT_TYPE_PREFIX, 28433) +HANDLE_BAT(APINT_TYPE_PREFIX, 28434) +HANDLE_BAT(APINT_TYPE_PREFIX, 28435) +HANDLE_BAT(APINT_TYPE_PREFIX, 28436) +HANDLE_BAT(APINT_TYPE_PREFIX, 28437) +HANDLE_BAT(APINT_TYPE_PREFIX, 28438) +HANDLE_BAT(APINT_TYPE_PREFIX, 28439) +HANDLE_BAT(APINT_TYPE_PREFIX, 28440) +HANDLE_BAT(APINT_TYPE_PREFIX, 28441) +HANDLE_BAT(APINT_TYPE_PREFIX, 28442) +HANDLE_BAT(APINT_TYPE_PREFIX, 28443) +HANDLE_BAT(APINT_TYPE_PREFIX, 28444) +HANDLE_BAT(APINT_TYPE_PREFIX, 28445) +HANDLE_BAT(APINT_TYPE_PREFIX, 28446) +HANDLE_BAT(APINT_TYPE_PREFIX, 28447) +HANDLE_BAT(APINT_TYPE_PREFIX, 28448) +HANDLE_BAT(APINT_TYPE_PREFIX, 28449) +HANDLE_BAT(APINT_TYPE_PREFIX, 28450) +HANDLE_BAT(APINT_TYPE_PREFIX, 28451) +HANDLE_BAT(APINT_TYPE_PREFIX, 28452) +HANDLE_BAT(APINT_TYPE_PREFIX, 28453) +HANDLE_BAT(APINT_TYPE_PREFIX, 28454) +HANDLE_BAT(APINT_TYPE_PREFIX, 28455) +HANDLE_BAT(APINT_TYPE_PREFIX, 28456) +HANDLE_BAT(APINT_TYPE_PREFIX, 28457) +HANDLE_BAT(APINT_TYPE_PREFIX, 28458) +HANDLE_BAT(APINT_TYPE_PREFIX, 28459) +HANDLE_BAT(APINT_TYPE_PREFIX, 28460) +HANDLE_BAT(APINT_TYPE_PREFIX, 28461) +HANDLE_BAT(APINT_TYPE_PREFIX, 28462) +HANDLE_BAT(APINT_TYPE_PREFIX, 28463) +HANDLE_BAT(APINT_TYPE_PREFIX, 28464) +HANDLE_BAT(APINT_TYPE_PREFIX, 28465) +HANDLE_BAT(APINT_TYPE_PREFIX, 28466) +HANDLE_BAT(APINT_TYPE_PREFIX, 28467) +HANDLE_BAT(APINT_TYPE_PREFIX, 28468) +HANDLE_BAT(APINT_TYPE_PREFIX, 28469) +HANDLE_BAT(APINT_TYPE_PREFIX, 28470) +HANDLE_BAT(APINT_TYPE_PREFIX, 28471) +HANDLE_BAT(APINT_TYPE_PREFIX, 28472) +HANDLE_BAT(APINT_TYPE_PREFIX, 28473) +HANDLE_BAT(APINT_TYPE_PREFIX, 28474) +HANDLE_BAT(APINT_TYPE_PREFIX, 28475) +HANDLE_BAT(APINT_TYPE_PREFIX, 28476) +HANDLE_BAT(APINT_TYPE_PREFIX, 28477) +HANDLE_BAT(APINT_TYPE_PREFIX, 28478) +HANDLE_BAT(APINT_TYPE_PREFIX, 28479) +HANDLE_BAT(APINT_TYPE_PREFIX, 28480) +HANDLE_BAT(APINT_TYPE_PREFIX, 28481) +HANDLE_BAT(APINT_TYPE_PREFIX, 28482) +HANDLE_BAT(APINT_TYPE_PREFIX, 28483) +HANDLE_BAT(APINT_TYPE_PREFIX, 28484) +HANDLE_BAT(APINT_TYPE_PREFIX, 28485) +HANDLE_BAT(APINT_TYPE_PREFIX, 28486) +HANDLE_BAT(APINT_TYPE_PREFIX, 28487) +HANDLE_BAT(APINT_TYPE_PREFIX, 28488) +HANDLE_BAT(APINT_TYPE_PREFIX, 28489) +HANDLE_BAT(APINT_TYPE_PREFIX, 28490) +HANDLE_BAT(APINT_TYPE_PREFIX, 28491) +HANDLE_BAT(APINT_TYPE_PREFIX, 28492) +HANDLE_BAT(APINT_TYPE_PREFIX, 28493) +HANDLE_BAT(APINT_TYPE_PREFIX, 28494) +HANDLE_BAT(APINT_TYPE_PREFIX, 28495) +HANDLE_BAT(APINT_TYPE_PREFIX, 28496) +HANDLE_BAT(APINT_TYPE_PREFIX, 28497) +HANDLE_BAT(APINT_TYPE_PREFIX, 28498) +HANDLE_BAT(APINT_TYPE_PREFIX, 28499) +HANDLE_BAT(APINT_TYPE_PREFIX, 28500) +HANDLE_BAT(APINT_TYPE_PREFIX, 28501) +HANDLE_BAT(APINT_TYPE_PREFIX, 28502) +HANDLE_BAT(APINT_TYPE_PREFIX, 28503) +HANDLE_BAT(APINT_TYPE_PREFIX, 28504) +HANDLE_BAT(APINT_TYPE_PREFIX, 28505) +HANDLE_BAT(APINT_TYPE_PREFIX, 28506) +HANDLE_BAT(APINT_TYPE_PREFIX, 28507) +HANDLE_BAT(APINT_TYPE_PREFIX, 28508) +HANDLE_BAT(APINT_TYPE_PREFIX, 28509) +HANDLE_BAT(APINT_TYPE_PREFIX, 28510) +HANDLE_BAT(APINT_TYPE_PREFIX, 28511) +HANDLE_BAT(APINT_TYPE_PREFIX, 28512) +HANDLE_BAT(APINT_TYPE_PREFIX, 28513) +HANDLE_BAT(APINT_TYPE_PREFIX, 28514) +HANDLE_BAT(APINT_TYPE_PREFIX, 28515) +HANDLE_BAT(APINT_TYPE_PREFIX, 28516) +HANDLE_BAT(APINT_TYPE_PREFIX, 28517) +HANDLE_BAT(APINT_TYPE_PREFIX, 28518) +HANDLE_BAT(APINT_TYPE_PREFIX, 28519) +HANDLE_BAT(APINT_TYPE_PREFIX, 28520) +HANDLE_BAT(APINT_TYPE_PREFIX, 28521) +HANDLE_BAT(APINT_TYPE_PREFIX, 28522) +HANDLE_BAT(APINT_TYPE_PREFIX, 28523) +HANDLE_BAT(APINT_TYPE_PREFIX, 28524) +HANDLE_BAT(APINT_TYPE_PREFIX, 28525) +HANDLE_BAT(APINT_TYPE_PREFIX, 28526) +HANDLE_BAT(APINT_TYPE_PREFIX, 28527) +HANDLE_BAT(APINT_TYPE_PREFIX, 28528) +HANDLE_BAT(APINT_TYPE_PREFIX, 28529) +HANDLE_BAT(APINT_TYPE_PREFIX, 28530) +HANDLE_BAT(APINT_TYPE_PREFIX, 28531) +HANDLE_BAT(APINT_TYPE_PREFIX, 28532) +HANDLE_BAT(APINT_TYPE_PREFIX, 28533) +HANDLE_BAT(APINT_TYPE_PREFIX, 28534) +HANDLE_BAT(APINT_TYPE_PREFIX, 28535) +HANDLE_BAT(APINT_TYPE_PREFIX, 28536) +HANDLE_BAT(APINT_TYPE_PREFIX, 28537) +HANDLE_BAT(APINT_TYPE_PREFIX, 28538) +HANDLE_BAT(APINT_TYPE_PREFIX, 28539) +HANDLE_BAT(APINT_TYPE_PREFIX, 28540) +HANDLE_BAT(APINT_TYPE_PREFIX, 28541) +HANDLE_BAT(APINT_TYPE_PREFIX, 28542) +HANDLE_BAT(APINT_TYPE_PREFIX, 28543) +HANDLE_BAT(APINT_TYPE_PREFIX, 28544) +HANDLE_BAT(APINT_TYPE_PREFIX, 28545) +HANDLE_BAT(APINT_TYPE_PREFIX, 28546) +HANDLE_BAT(APINT_TYPE_PREFIX, 28547) +HANDLE_BAT(APINT_TYPE_PREFIX, 28548) +HANDLE_BAT(APINT_TYPE_PREFIX, 28549) +HANDLE_BAT(APINT_TYPE_PREFIX, 28550) +HANDLE_BAT(APINT_TYPE_PREFIX, 28551) +HANDLE_BAT(APINT_TYPE_PREFIX, 28552) +HANDLE_BAT(APINT_TYPE_PREFIX, 28553) +HANDLE_BAT(APINT_TYPE_PREFIX, 28554) +HANDLE_BAT(APINT_TYPE_PREFIX, 28555) +HANDLE_BAT(APINT_TYPE_PREFIX, 28556) +HANDLE_BAT(APINT_TYPE_PREFIX, 28557) +HANDLE_BAT(APINT_TYPE_PREFIX, 28558) +HANDLE_BAT(APINT_TYPE_PREFIX, 28559) +HANDLE_BAT(APINT_TYPE_PREFIX, 28560) +HANDLE_BAT(APINT_TYPE_PREFIX, 28561) +HANDLE_BAT(APINT_TYPE_PREFIX, 28562) +HANDLE_BAT(APINT_TYPE_PREFIX, 28563) +HANDLE_BAT(APINT_TYPE_PREFIX, 28564) +HANDLE_BAT(APINT_TYPE_PREFIX, 28565) +HANDLE_BAT(APINT_TYPE_PREFIX, 28566) +HANDLE_BAT(APINT_TYPE_PREFIX, 28567) +HANDLE_BAT(APINT_TYPE_PREFIX, 28568) +HANDLE_BAT(APINT_TYPE_PREFIX, 28569) +HANDLE_BAT(APINT_TYPE_PREFIX, 28570) +HANDLE_BAT(APINT_TYPE_PREFIX, 28571) +HANDLE_BAT(APINT_TYPE_PREFIX, 28572) +HANDLE_BAT(APINT_TYPE_PREFIX, 28573) +HANDLE_BAT(APINT_TYPE_PREFIX, 28574) +HANDLE_BAT(APINT_TYPE_PREFIX, 28575) +HANDLE_BAT(APINT_TYPE_PREFIX, 28576) +HANDLE_BAT(APINT_TYPE_PREFIX, 28577) +HANDLE_BAT(APINT_TYPE_PREFIX, 28578) +HANDLE_BAT(APINT_TYPE_PREFIX, 28579) +HANDLE_BAT(APINT_TYPE_PREFIX, 28580) +HANDLE_BAT(APINT_TYPE_PREFIX, 28581) +HANDLE_BAT(APINT_TYPE_PREFIX, 28582) +HANDLE_BAT(APINT_TYPE_PREFIX, 28583) +HANDLE_BAT(APINT_TYPE_PREFIX, 28584) +HANDLE_BAT(APINT_TYPE_PREFIX, 28585) +HANDLE_BAT(APINT_TYPE_PREFIX, 28586) +HANDLE_BAT(APINT_TYPE_PREFIX, 28587) +HANDLE_BAT(APINT_TYPE_PREFIX, 28588) +HANDLE_BAT(APINT_TYPE_PREFIX, 28589) +HANDLE_BAT(APINT_TYPE_PREFIX, 28590) +HANDLE_BAT(APINT_TYPE_PREFIX, 28591) +HANDLE_BAT(APINT_TYPE_PREFIX, 28592) +HANDLE_BAT(APINT_TYPE_PREFIX, 28593) +HANDLE_BAT(APINT_TYPE_PREFIX, 28594) +HANDLE_BAT(APINT_TYPE_PREFIX, 28595) +HANDLE_BAT(APINT_TYPE_PREFIX, 28596) +HANDLE_BAT(APINT_TYPE_PREFIX, 28597) +HANDLE_BAT(APINT_TYPE_PREFIX, 28598) +HANDLE_BAT(APINT_TYPE_PREFIX, 28599) +HANDLE_BAT(APINT_TYPE_PREFIX, 28600) +HANDLE_BAT(APINT_TYPE_PREFIX, 28601) +HANDLE_BAT(APINT_TYPE_PREFIX, 28602) +HANDLE_BAT(APINT_TYPE_PREFIX, 28603) +HANDLE_BAT(APINT_TYPE_PREFIX, 28604) +HANDLE_BAT(APINT_TYPE_PREFIX, 28605) +HANDLE_BAT(APINT_TYPE_PREFIX, 28606) +HANDLE_BAT(APINT_TYPE_PREFIX, 28607) +HANDLE_BAT(APINT_TYPE_PREFIX, 28608) +HANDLE_BAT(APINT_TYPE_PREFIX, 28609) +HANDLE_BAT(APINT_TYPE_PREFIX, 28610) +HANDLE_BAT(APINT_TYPE_PREFIX, 28611) +HANDLE_BAT(APINT_TYPE_PREFIX, 28612) +HANDLE_BAT(APINT_TYPE_PREFIX, 28613) +HANDLE_BAT(APINT_TYPE_PREFIX, 28614) +HANDLE_BAT(APINT_TYPE_PREFIX, 28615) +HANDLE_BAT(APINT_TYPE_PREFIX, 28616) +HANDLE_BAT(APINT_TYPE_PREFIX, 28617) +HANDLE_BAT(APINT_TYPE_PREFIX, 28618) +HANDLE_BAT(APINT_TYPE_PREFIX, 28619) +HANDLE_BAT(APINT_TYPE_PREFIX, 28620) +HANDLE_BAT(APINT_TYPE_PREFIX, 28621) +HANDLE_BAT(APINT_TYPE_PREFIX, 28622) +HANDLE_BAT(APINT_TYPE_PREFIX, 28623) +HANDLE_BAT(APINT_TYPE_PREFIX, 28624) +HANDLE_BAT(APINT_TYPE_PREFIX, 28625) +HANDLE_BAT(APINT_TYPE_PREFIX, 28626) +HANDLE_BAT(APINT_TYPE_PREFIX, 28627) +HANDLE_BAT(APINT_TYPE_PREFIX, 28628) +HANDLE_BAT(APINT_TYPE_PREFIX, 28629) +HANDLE_BAT(APINT_TYPE_PREFIX, 28630) +HANDLE_BAT(APINT_TYPE_PREFIX, 28631) +HANDLE_BAT(APINT_TYPE_PREFIX, 28632) +HANDLE_BAT(APINT_TYPE_PREFIX, 28633) +HANDLE_BAT(APINT_TYPE_PREFIX, 28634) +HANDLE_BAT(APINT_TYPE_PREFIX, 28635) +HANDLE_BAT(APINT_TYPE_PREFIX, 28636) +HANDLE_BAT(APINT_TYPE_PREFIX, 28637) +HANDLE_BAT(APINT_TYPE_PREFIX, 28638) +HANDLE_BAT(APINT_TYPE_PREFIX, 28639) +HANDLE_BAT(APINT_TYPE_PREFIX, 28640) +HANDLE_BAT(APINT_TYPE_PREFIX, 28641) +HANDLE_BAT(APINT_TYPE_PREFIX, 28642) +HANDLE_BAT(APINT_TYPE_PREFIX, 28643) +HANDLE_BAT(APINT_TYPE_PREFIX, 28644) +HANDLE_BAT(APINT_TYPE_PREFIX, 28645) +HANDLE_BAT(APINT_TYPE_PREFIX, 28646) +HANDLE_BAT(APINT_TYPE_PREFIX, 28647) +HANDLE_BAT(APINT_TYPE_PREFIX, 28648) +HANDLE_BAT(APINT_TYPE_PREFIX, 28649) +HANDLE_BAT(APINT_TYPE_PREFIX, 28650) +HANDLE_BAT(APINT_TYPE_PREFIX, 28651) +HANDLE_BAT(APINT_TYPE_PREFIX, 28652) +HANDLE_BAT(APINT_TYPE_PREFIX, 28653) +HANDLE_BAT(APINT_TYPE_PREFIX, 28654) +HANDLE_BAT(APINT_TYPE_PREFIX, 28655) +HANDLE_BAT(APINT_TYPE_PREFIX, 28656) +HANDLE_BAT(APINT_TYPE_PREFIX, 28657) +HANDLE_BAT(APINT_TYPE_PREFIX, 28658) +HANDLE_BAT(APINT_TYPE_PREFIX, 28659) +HANDLE_BAT(APINT_TYPE_PREFIX, 28660) +HANDLE_BAT(APINT_TYPE_PREFIX, 28661) +HANDLE_BAT(APINT_TYPE_PREFIX, 28662) +HANDLE_BAT(APINT_TYPE_PREFIX, 28663) +HANDLE_BAT(APINT_TYPE_PREFIX, 28664) +HANDLE_BAT(APINT_TYPE_PREFIX, 28665) +HANDLE_BAT(APINT_TYPE_PREFIX, 28666) +HANDLE_BAT(APINT_TYPE_PREFIX, 28667) +HANDLE_BAT(APINT_TYPE_PREFIX, 28668) +HANDLE_BAT(APINT_TYPE_PREFIX, 28669) +HANDLE_BAT(APINT_TYPE_PREFIX, 28670) +HANDLE_BAT(APINT_TYPE_PREFIX, 28671) +HANDLE_BAT(APINT_TYPE_PREFIX, 28672) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 28 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 28673) +HANDLE_BAT(, 28674) +HANDLE_BAT(, 28675) +HANDLE_BAT(, 28676) +HANDLE_BAT(, 28677) +HANDLE_BAT(, 28678) +HANDLE_BAT(, 28679) +HANDLE_BAT(, 28680) +HANDLE_BAT(, 28681) +HANDLE_BAT(, 28682) +HANDLE_BAT(, 28683) +HANDLE_BAT(, 28684) +HANDLE_BAT(, 28685) +HANDLE_BAT(, 28686) +HANDLE_BAT(, 28687) +HANDLE_BAT(, 28688) +HANDLE_BAT(, 28689) +HANDLE_BAT(, 28690) +HANDLE_BAT(, 28691) +HANDLE_BAT(, 28692) +HANDLE_BAT(, 28693) +HANDLE_BAT(, 28694) +HANDLE_BAT(, 28695) +HANDLE_BAT(, 28696) +HANDLE_BAT(, 28697) +HANDLE_BAT(, 28698) +HANDLE_BAT(, 28699) +HANDLE_BAT(, 28700) +HANDLE_BAT(, 28701) +HANDLE_BAT(, 28702) +HANDLE_BAT(, 28703) +HANDLE_BAT(, 28704) +HANDLE_BAT(, 28705) +HANDLE_BAT(, 28706) +HANDLE_BAT(, 28707) +HANDLE_BAT(, 28708) +HANDLE_BAT(, 28709) +HANDLE_BAT(, 28710) +HANDLE_BAT(, 28711) +HANDLE_BAT(, 28712) +HANDLE_BAT(, 28713) +HANDLE_BAT(, 28714) +HANDLE_BAT(, 28715) +HANDLE_BAT(, 28716) +HANDLE_BAT(, 28717) +HANDLE_BAT(, 28718) +HANDLE_BAT(, 28719) +HANDLE_BAT(, 28720) +HANDLE_BAT(, 28721) +HANDLE_BAT(, 28722) +HANDLE_BAT(, 28723) +HANDLE_BAT(, 28724) +HANDLE_BAT(, 28725) +HANDLE_BAT(, 28726) +HANDLE_BAT(, 28727) +HANDLE_BAT(, 28728) +HANDLE_BAT(, 28729) +HANDLE_BAT(, 28730) +HANDLE_BAT(, 28731) +HANDLE_BAT(, 28732) +HANDLE_BAT(, 28733) +HANDLE_BAT(, 28734) +HANDLE_BAT(, 28735) +HANDLE_BAT(, 28736) +HANDLE_BAT(, 28737) +HANDLE_BAT(, 28738) +HANDLE_BAT(, 28739) +HANDLE_BAT(, 28740) +HANDLE_BAT(, 28741) +HANDLE_BAT(, 28742) +HANDLE_BAT(, 28743) +HANDLE_BAT(, 28744) +HANDLE_BAT(, 28745) +HANDLE_BAT(, 28746) +HANDLE_BAT(, 28747) +HANDLE_BAT(, 28748) +HANDLE_BAT(, 28749) +HANDLE_BAT(, 28750) +HANDLE_BAT(, 28751) +HANDLE_BAT(, 28752) +HANDLE_BAT(, 28753) +HANDLE_BAT(, 28754) +HANDLE_BAT(, 28755) +HANDLE_BAT(, 28756) +HANDLE_BAT(, 28757) +HANDLE_BAT(, 28758) +HANDLE_BAT(, 28759) +HANDLE_BAT(, 28760) +HANDLE_BAT(, 28761) +HANDLE_BAT(, 28762) +HANDLE_BAT(, 28763) +HANDLE_BAT(, 28764) +HANDLE_BAT(, 28765) +HANDLE_BAT(, 28766) +HANDLE_BAT(, 28767) +HANDLE_BAT(, 28768) +HANDLE_BAT(, 28769) +HANDLE_BAT(, 28770) +HANDLE_BAT(, 28771) +HANDLE_BAT(, 28772) +HANDLE_BAT(, 28773) +HANDLE_BAT(, 28774) +HANDLE_BAT(, 28775) +HANDLE_BAT(, 28776) +HANDLE_BAT(, 28777) +HANDLE_BAT(, 28778) +HANDLE_BAT(, 28779) +HANDLE_BAT(, 28780) +HANDLE_BAT(, 28781) +HANDLE_BAT(, 28782) +HANDLE_BAT(, 28783) +HANDLE_BAT(, 28784) +HANDLE_BAT(, 28785) +HANDLE_BAT(, 28786) +HANDLE_BAT(, 28787) +HANDLE_BAT(, 28788) +HANDLE_BAT(, 28789) +HANDLE_BAT(, 28790) +HANDLE_BAT(, 28791) +HANDLE_BAT(, 28792) +HANDLE_BAT(, 28793) +HANDLE_BAT(, 28794) +HANDLE_BAT(, 28795) +HANDLE_BAT(, 28796) +HANDLE_BAT(, 28797) +HANDLE_BAT(, 28798) +HANDLE_BAT(, 28799) +HANDLE_BAT(, 28800) +HANDLE_BAT(, 28801) +HANDLE_BAT(, 28802) +HANDLE_BAT(, 28803) +HANDLE_BAT(, 28804) +HANDLE_BAT(, 28805) +HANDLE_BAT(, 28806) +HANDLE_BAT(, 28807) +HANDLE_BAT(, 28808) +HANDLE_BAT(, 28809) +HANDLE_BAT(, 28810) +HANDLE_BAT(, 28811) +HANDLE_BAT(, 28812) +HANDLE_BAT(, 28813) +HANDLE_BAT(, 28814) +HANDLE_BAT(, 28815) +HANDLE_BAT(, 28816) +HANDLE_BAT(, 28817) +HANDLE_BAT(, 28818) +HANDLE_BAT(, 28819) +HANDLE_BAT(, 28820) +HANDLE_BAT(, 28821) +HANDLE_BAT(, 28822) +HANDLE_BAT(, 28823) +HANDLE_BAT(, 28824) +HANDLE_BAT(, 28825) +HANDLE_BAT(, 28826) +HANDLE_BAT(, 28827) +HANDLE_BAT(, 28828) +HANDLE_BAT(, 28829) +HANDLE_BAT(, 28830) +HANDLE_BAT(, 28831) +HANDLE_BAT(, 28832) +HANDLE_BAT(, 28833) +HANDLE_BAT(, 28834) +HANDLE_BAT(, 28835) +HANDLE_BAT(, 28836) +HANDLE_BAT(, 28837) +HANDLE_BAT(, 28838) +HANDLE_BAT(, 28839) +HANDLE_BAT(, 28840) +HANDLE_BAT(, 28841) +HANDLE_BAT(, 28842) +HANDLE_BAT(, 28843) +HANDLE_BAT(, 28844) +HANDLE_BAT(, 28845) +HANDLE_BAT(, 28846) +HANDLE_BAT(, 28847) +HANDLE_BAT(, 28848) +HANDLE_BAT(, 28849) +HANDLE_BAT(, 28850) +HANDLE_BAT(, 28851) +HANDLE_BAT(, 28852) +HANDLE_BAT(, 28853) +HANDLE_BAT(, 28854) +HANDLE_BAT(, 28855) +HANDLE_BAT(, 28856) +HANDLE_BAT(, 28857) +HANDLE_BAT(, 28858) +HANDLE_BAT(, 28859) +HANDLE_BAT(, 28860) +HANDLE_BAT(, 28861) +HANDLE_BAT(, 28862) +HANDLE_BAT(, 28863) +HANDLE_BAT(, 28864) +HANDLE_BAT(, 28865) +HANDLE_BAT(, 28866) +HANDLE_BAT(, 28867) +HANDLE_BAT(, 28868) +HANDLE_BAT(, 28869) +HANDLE_BAT(, 28870) +HANDLE_BAT(, 28871) +HANDLE_BAT(, 28872) +HANDLE_BAT(, 28873) +HANDLE_BAT(, 28874) +HANDLE_BAT(, 28875) +HANDLE_BAT(, 28876) +HANDLE_BAT(, 28877) +HANDLE_BAT(, 28878) +HANDLE_BAT(, 28879) +HANDLE_BAT(, 28880) +HANDLE_BAT(, 28881) +HANDLE_BAT(, 28882) +HANDLE_BAT(, 28883) +HANDLE_BAT(, 28884) +HANDLE_BAT(, 28885) +HANDLE_BAT(, 28886) +HANDLE_BAT(, 28887) +HANDLE_BAT(, 28888) +HANDLE_BAT(, 28889) +HANDLE_BAT(, 28890) +HANDLE_BAT(, 28891) +HANDLE_BAT(, 28892) +HANDLE_BAT(, 28893) +HANDLE_BAT(, 28894) +HANDLE_BAT(, 28895) +HANDLE_BAT(, 28896) +HANDLE_BAT(, 28897) +HANDLE_BAT(, 28898) +HANDLE_BAT(, 28899) +HANDLE_BAT(, 28900) +HANDLE_BAT(, 28901) +HANDLE_BAT(, 28902) +HANDLE_BAT(, 28903) +HANDLE_BAT(, 28904) +HANDLE_BAT(, 28905) +HANDLE_BAT(, 28906) +HANDLE_BAT(, 28907) +HANDLE_BAT(, 28908) +HANDLE_BAT(, 28909) +HANDLE_BAT(, 28910) +HANDLE_BAT(, 28911) +HANDLE_BAT(, 28912) +HANDLE_BAT(, 28913) +HANDLE_BAT(, 28914) +HANDLE_BAT(, 28915) +HANDLE_BAT(, 28916) +HANDLE_BAT(, 28917) +HANDLE_BAT(, 28918) +HANDLE_BAT(, 28919) +HANDLE_BAT(, 28920) +HANDLE_BAT(, 28921) +HANDLE_BAT(, 28922) +HANDLE_BAT(, 28923) +HANDLE_BAT(, 28924) +HANDLE_BAT(, 28925) +HANDLE_BAT(, 28926) +HANDLE_BAT(, 28927) +HANDLE_BAT(, 28928) +HANDLE_BAT(, 28929) +HANDLE_BAT(, 28930) +HANDLE_BAT(, 28931) +HANDLE_BAT(, 28932) +HANDLE_BAT(, 28933) +HANDLE_BAT(, 28934) +HANDLE_BAT(, 28935) +HANDLE_BAT(, 28936) +HANDLE_BAT(, 28937) +HANDLE_BAT(, 28938) +HANDLE_BAT(, 28939) +HANDLE_BAT(, 28940) +HANDLE_BAT(, 28941) +HANDLE_BAT(, 28942) +HANDLE_BAT(, 28943) +HANDLE_BAT(, 28944) +HANDLE_BAT(, 28945) +HANDLE_BAT(, 28946) +HANDLE_BAT(, 28947) +HANDLE_BAT(, 28948) +HANDLE_BAT(, 28949) +HANDLE_BAT(, 28950) +HANDLE_BAT(, 28951) +HANDLE_BAT(, 28952) +HANDLE_BAT(, 28953) +HANDLE_BAT(, 28954) +HANDLE_BAT(, 28955) +HANDLE_BAT(, 28956) +HANDLE_BAT(, 28957) +HANDLE_BAT(, 28958) +HANDLE_BAT(, 28959) +HANDLE_BAT(, 28960) +HANDLE_BAT(, 28961) +HANDLE_BAT(, 28962) +HANDLE_BAT(, 28963) +HANDLE_BAT(, 28964) +HANDLE_BAT(, 28965) +HANDLE_BAT(, 28966) +HANDLE_BAT(, 28967) +HANDLE_BAT(, 28968) +HANDLE_BAT(, 28969) +HANDLE_BAT(, 28970) +HANDLE_BAT(, 28971) +HANDLE_BAT(, 28972) +HANDLE_BAT(, 28973) +HANDLE_BAT(, 28974) +HANDLE_BAT(, 28975) +HANDLE_BAT(, 28976) +HANDLE_BAT(, 28977) +HANDLE_BAT(, 28978) +HANDLE_BAT(, 28979) +HANDLE_BAT(, 28980) +HANDLE_BAT(, 28981) +HANDLE_BAT(, 28982) +HANDLE_BAT(, 28983) +HANDLE_BAT(, 28984) +HANDLE_BAT(, 28985) +HANDLE_BAT(, 28986) +HANDLE_BAT(, 28987) +HANDLE_BAT(, 28988) +HANDLE_BAT(, 28989) +HANDLE_BAT(, 28990) +HANDLE_BAT(, 28991) +HANDLE_BAT(, 28992) +HANDLE_BAT(, 28993) +HANDLE_BAT(, 28994) +HANDLE_BAT(, 28995) +HANDLE_BAT(, 28996) +HANDLE_BAT(, 28997) +HANDLE_BAT(, 28998) +HANDLE_BAT(, 28999) +HANDLE_BAT(, 29000) +HANDLE_BAT(, 29001) +HANDLE_BAT(, 29002) +HANDLE_BAT(, 29003) +HANDLE_BAT(, 29004) +HANDLE_BAT(, 29005) +HANDLE_BAT(, 29006) +HANDLE_BAT(, 29007) +HANDLE_BAT(, 29008) +HANDLE_BAT(, 29009) +HANDLE_BAT(, 29010) +HANDLE_BAT(, 29011) +HANDLE_BAT(, 29012) +HANDLE_BAT(, 29013) +HANDLE_BAT(, 29014) +HANDLE_BAT(, 29015) +HANDLE_BAT(, 29016) +HANDLE_BAT(, 29017) +HANDLE_BAT(, 29018) +HANDLE_BAT(, 29019) +HANDLE_BAT(, 29020) +HANDLE_BAT(, 29021) +HANDLE_BAT(, 29022) +HANDLE_BAT(, 29023) +HANDLE_BAT(, 29024) +HANDLE_BAT(, 29025) +HANDLE_BAT(, 29026) +HANDLE_BAT(, 29027) +HANDLE_BAT(, 29028) +HANDLE_BAT(, 29029) +HANDLE_BAT(, 29030) +HANDLE_BAT(, 29031) +HANDLE_BAT(, 29032) +HANDLE_BAT(, 29033) +HANDLE_BAT(, 29034) +HANDLE_BAT(, 29035) +HANDLE_BAT(, 29036) +HANDLE_BAT(, 29037) +HANDLE_BAT(, 29038) +HANDLE_BAT(, 29039) +HANDLE_BAT(, 29040) +HANDLE_BAT(, 29041) +HANDLE_BAT(, 29042) +HANDLE_BAT(, 29043) +HANDLE_BAT(, 29044) +HANDLE_BAT(, 29045) +HANDLE_BAT(, 29046) +HANDLE_BAT(, 29047) +HANDLE_BAT(, 29048) +HANDLE_BAT(, 29049) +HANDLE_BAT(, 29050) +HANDLE_BAT(, 29051) +HANDLE_BAT(, 29052) +HANDLE_BAT(, 29053) +HANDLE_BAT(, 29054) +HANDLE_BAT(, 29055) +HANDLE_BAT(, 29056) +HANDLE_BAT(, 29057) +HANDLE_BAT(, 29058) +HANDLE_BAT(, 29059) +HANDLE_BAT(, 29060) +HANDLE_BAT(, 29061) +HANDLE_BAT(, 29062) +HANDLE_BAT(, 29063) +HANDLE_BAT(, 29064) +HANDLE_BAT(, 29065) +HANDLE_BAT(, 29066) +HANDLE_BAT(, 29067) +HANDLE_BAT(, 29068) +HANDLE_BAT(, 29069) +HANDLE_BAT(, 29070) +HANDLE_BAT(, 29071) +HANDLE_BAT(, 29072) +HANDLE_BAT(, 29073) +HANDLE_BAT(, 29074) +HANDLE_BAT(, 29075) +HANDLE_BAT(, 29076) +HANDLE_BAT(, 29077) +HANDLE_BAT(, 29078) +HANDLE_BAT(, 29079) +HANDLE_BAT(, 29080) +HANDLE_BAT(, 29081) +HANDLE_BAT(, 29082) +HANDLE_BAT(, 29083) +HANDLE_BAT(, 29084) +HANDLE_BAT(, 29085) +HANDLE_BAT(, 29086) +HANDLE_BAT(, 29087) +HANDLE_BAT(, 29088) +HANDLE_BAT(, 29089) +HANDLE_BAT(, 29090) +HANDLE_BAT(, 29091) +HANDLE_BAT(, 29092) +HANDLE_BAT(, 29093) +HANDLE_BAT(, 29094) +HANDLE_BAT(, 29095) +HANDLE_BAT(, 29096) +HANDLE_BAT(, 29097) +HANDLE_BAT(, 29098) +HANDLE_BAT(, 29099) +HANDLE_BAT(, 29100) +HANDLE_BAT(, 29101) +HANDLE_BAT(, 29102) +HANDLE_BAT(, 29103) +HANDLE_BAT(, 29104) +HANDLE_BAT(, 29105) +HANDLE_BAT(, 29106) +HANDLE_BAT(, 29107) +HANDLE_BAT(, 29108) +HANDLE_BAT(, 29109) +HANDLE_BAT(, 29110) +HANDLE_BAT(, 29111) +HANDLE_BAT(, 29112) +HANDLE_BAT(, 29113) +HANDLE_BAT(, 29114) +HANDLE_BAT(, 29115) +HANDLE_BAT(, 29116) +HANDLE_BAT(, 29117) +HANDLE_BAT(, 29118) +HANDLE_BAT(, 29119) +HANDLE_BAT(, 29120) +HANDLE_BAT(, 29121) +HANDLE_BAT(, 29122) +HANDLE_BAT(, 29123) +HANDLE_BAT(, 29124) +HANDLE_BAT(, 29125) +HANDLE_BAT(, 29126) +HANDLE_BAT(, 29127) +HANDLE_BAT(, 29128) +HANDLE_BAT(, 29129) +HANDLE_BAT(, 29130) +HANDLE_BAT(, 29131) +HANDLE_BAT(, 29132) +HANDLE_BAT(, 29133) +HANDLE_BAT(, 29134) +HANDLE_BAT(, 29135) +HANDLE_BAT(, 29136) +HANDLE_BAT(, 29137) +HANDLE_BAT(, 29138) +HANDLE_BAT(, 29139) +HANDLE_BAT(, 29140) +HANDLE_BAT(, 29141) +HANDLE_BAT(, 29142) +HANDLE_BAT(, 29143) +HANDLE_BAT(, 29144) +HANDLE_BAT(, 29145) +HANDLE_BAT(, 29146) +HANDLE_BAT(, 29147) +HANDLE_BAT(, 29148) +HANDLE_BAT(, 29149) +HANDLE_BAT(, 29150) +HANDLE_BAT(, 29151) +HANDLE_BAT(, 29152) +HANDLE_BAT(, 29153) +HANDLE_BAT(, 29154) +HANDLE_BAT(, 29155) +HANDLE_BAT(, 29156) +HANDLE_BAT(, 29157) +HANDLE_BAT(, 29158) +HANDLE_BAT(, 29159) +HANDLE_BAT(, 29160) +HANDLE_BAT(, 29161) +HANDLE_BAT(, 29162) +HANDLE_BAT(, 29163) +HANDLE_BAT(, 29164) +HANDLE_BAT(, 29165) +HANDLE_BAT(, 29166) +HANDLE_BAT(, 29167) +HANDLE_BAT(, 29168) +HANDLE_BAT(, 29169) +HANDLE_BAT(, 29170) +HANDLE_BAT(, 29171) +HANDLE_BAT(, 29172) +HANDLE_BAT(, 29173) +HANDLE_BAT(, 29174) +HANDLE_BAT(, 29175) +HANDLE_BAT(, 29176) +HANDLE_BAT(, 29177) +HANDLE_BAT(, 29178) +HANDLE_BAT(, 29179) +HANDLE_BAT(, 29180) +HANDLE_BAT(, 29181) +HANDLE_BAT(, 29182) +HANDLE_BAT(, 29183) +HANDLE_BAT(, 29184) +HANDLE_BAT(, 29185) +HANDLE_BAT(, 29186) +HANDLE_BAT(, 29187) +HANDLE_BAT(, 29188) +HANDLE_BAT(, 29189) +HANDLE_BAT(, 29190) +HANDLE_BAT(, 29191) +HANDLE_BAT(, 29192) +HANDLE_BAT(, 29193) +HANDLE_BAT(, 29194) +HANDLE_BAT(, 29195) +HANDLE_BAT(, 29196) +HANDLE_BAT(, 29197) +HANDLE_BAT(, 29198) +HANDLE_BAT(, 29199) +HANDLE_BAT(, 29200) +HANDLE_BAT(, 29201) +HANDLE_BAT(, 29202) +HANDLE_BAT(, 29203) +HANDLE_BAT(, 29204) +HANDLE_BAT(, 29205) +HANDLE_BAT(, 29206) +HANDLE_BAT(, 29207) +HANDLE_BAT(, 29208) +HANDLE_BAT(, 29209) +HANDLE_BAT(, 29210) +HANDLE_BAT(, 29211) +HANDLE_BAT(, 29212) +HANDLE_BAT(, 29213) +HANDLE_BAT(, 29214) +HANDLE_BAT(, 29215) +HANDLE_BAT(, 29216) +HANDLE_BAT(, 29217) +HANDLE_BAT(, 29218) +HANDLE_BAT(, 29219) +HANDLE_BAT(, 29220) +HANDLE_BAT(, 29221) +HANDLE_BAT(, 29222) +HANDLE_BAT(, 29223) +HANDLE_BAT(, 29224) +HANDLE_BAT(, 29225) +HANDLE_BAT(, 29226) +HANDLE_BAT(, 29227) +HANDLE_BAT(, 29228) +HANDLE_BAT(, 29229) +HANDLE_BAT(, 29230) +HANDLE_BAT(, 29231) +HANDLE_BAT(, 29232) +HANDLE_BAT(, 29233) +HANDLE_BAT(, 29234) +HANDLE_BAT(, 29235) +HANDLE_BAT(, 29236) +HANDLE_BAT(, 29237) +HANDLE_BAT(, 29238) +HANDLE_BAT(, 29239) +HANDLE_BAT(, 29240) +HANDLE_BAT(, 29241) +HANDLE_BAT(, 29242) +HANDLE_BAT(, 29243) +HANDLE_BAT(, 29244) +HANDLE_BAT(, 29245) +HANDLE_BAT(, 29246) +HANDLE_BAT(, 29247) +HANDLE_BAT(, 29248) +HANDLE_BAT(, 29249) +HANDLE_BAT(, 29250) +HANDLE_BAT(, 29251) +HANDLE_BAT(, 29252) +HANDLE_BAT(, 29253) +HANDLE_BAT(, 29254) +HANDLE_BAT(, 29255) +HANDLE_BAT(, 29256) +HANDLE_BAT(, 29257) +HANDLE_BAT(, 29258) +HANDLE_BAT(, 29259) +HANDLE_BAT(, 29260) +HANDLE_BAT(, 29261) +HANDLE_BAT(, 29262) +HANDLE_BAT(, 29263) +HANDLE_BAT(, 29264) +HANDLE_BAT(, 29265) +HANDLE_BAT(, 29266) +HANDLE_BAT(, 29267) +HANDLE_BAT(, 29268) +HANDLE_BAT(, 29269) +HANDLE_BAT(, 29270) +HANDLE_BAT(, 29271) +HANDLE_BAT(, 29272) +HANDLE_BAT(, 29273) +HANDLE_BAT(, 29274) +HANDLE_BAT(, 29275) +HANDLE_BAT(, 29276) +HANDLE_BAT(, 29277) +HANDLE_BAT(, 29278) +HANDLE_BAT(, 29279) +HANDLE_BAT(, 29280) +HANDLE_BAT(, 29281) +HANDLE_BAT(, 29282) +HANDLE_BAT(, 29283) +HANDLE_BAT(, 29284) +HANDLE_BAT(, 29285) +HANDLE_BAT(, 29286) +HANDLE_BAT(, 29287) +HANDLE_BAT(, 29288) +HANDLE_BAT(, 29289) +HANDLE_BAT(, 29290) +HANDLE_BAT(, 29291) +HANDLE_BAT(, 29292) +HANDLE_BAT(, 29293) +HANDLE_BAT(, 29294) +HANDLE_BAT(, 29295) +HANDLE_BAT(, 29296) +HANDLE_BAT(, 29297) +HANDLE_BAT(, 29298) +HANDLE_BAT(, 29299) +HANDLE_BAT(, 29300) +HANDLE_BAT(, 29301) +HANDLE_BAT(, 29302) +HANDLE_BAT(, 29303) +HANDLE_BAT(, 29304) +HANDLE_BAT(, 29305) +HANDLE_BAT(, 29306) +HANDLE_BAT(, 29307) +HANDLE_BAT(, 29308) +HANDLE_BAT(, 29309) +HANDLE_BAT(, 29310) +HANDLE_BAT(, 29311) +HANDLE_BAT(, 29312) +HANDLE_BAT(, 29313) +HANDLE_BAT(, 29314) +HANDLE_BAT(, 29315) +HANDLE_BAT(, 29316) +HANDLE_BAT(, 29317) +HANDLE_BAT(, 29318) +HANDLE_BAT(, 29319) +HANDLE_BAT(, 29320) +HANDLE_BAT(, 29321) +HANDLE_BAT(, 29322) +HANDLE_BAT(, 29323) +HANDLE_BAT(, 29324) +HANDLE_BAT(, 29325) +HANDLE_BAT(, 29326) +HANDLE_BAT(, 29327) +HANDLE_BAT(, 29328) +HANDLE_BAT(, 29329) +HANDLE_BAT(, 29330) +HANDLE_BAT(, 29331) +HANDLE_BAT(, 29332) +HANDLE_BAT(, 29333) +HANDLE_BAT(, 29334) +HANDLE_BAT(, 29335) +HANDLE_BAT(, 29336) +HANDLE_BAT(, 29337) +HANDLE_BAT(, 29338) +HANDLE_BAT(, 29339) +HANDLE_BAT(, 29340) +HANDLE_BAT(, 29341) +HANDLE_BAT(, 29342) +HANDLE_BAT(, 29343) +HANDLE_BAT(, 29344) +HANDLE_BAT(, 29345) +HANDLE_BAT(, 29346) +HANDLE_BAT(, 29347) +HANDLE_BAT(, 29348) +HANDLE_BAT(, 29349) +HANDLE_BAT(, 29350) +HANDLE_BAT(, 29351) +HANDLE_BAT(, 29352) +HANDLE_BAT(, 29353) +HANDLE_BAT(, 29354) +HANDLE_BAT(, 29355) +HANDLE_BAT(, 29356) +HANDLE_BAT(, 29357) +HANDLE_BAT(, 29358) +HANDLE_BAT(, 29359) +HANDLE_BAT(, 29360) +HANDLE_BAT(, 29361) +HANDLE_BAT(, 29362) +HANDLE_BAT(, 29363) +HANDLE_BAT(, 29364) +HANDLE_BAT(, 29365) +HANDLE_BAT(, 29366) +HANDLE_BAT(, 29367) +HANDLE_BAT(, 29368) +HANDLE_BAT(, 29369) +HANDLE_BAT(, 29370) +HANDLE_BAT(, 29371) +HANDLE_BAT(, 29372) +HANDLE_BAT(, 29373) +HANDLE_BAT(, 29374) +HANDLE_BAT(, 29375) +HANDLE_BAT(, 29376) +HANDLE_BAT(, 29377) +HANDLE_BAT(, 29378) +HANDLE_BAT(, 29379) +HANDLE_BAT(, 29380) +HANDLE_BAT(, 29381) +HANDLE_BAT(, 29382) +HANDLE_BAT(, 29383) +HANDLE_BAT(, 29384) +HANDLE_BAT(, 29385) +HANDLE_BAT(, 29386) +HANDLE_BAT(, 29387) +HANDLE_BAT(, 29388) +HANDLE_BAT(, 29389) +HANDLE_BAT(, 29390) +HANDLE_BAT(, 29391) +HANDLE_BAT(, 29392) +HANDLE_BAT(, 29393) +HANDLE_BAT(, 29394) +HANDLE_BAT(, 29395) +HANDLE_BAT(, 29396) +HANDLE_BAT(, 29397) +HANDLE_BAT(, 29398) +HANDLE_BAT(, 29399) +HANDLE_BAT(, 29400) +HANDLE_BAT(, 29401) +HANDLE_BAT(, 29402) +HANDLE_BAT(, 29403) +HANDLE_BAT(, 29404) +HANDLE_BAT(, 29405) +HANDLE_BAT(, 29406) +HANDLE_BAT(, 29407) +HANDLE_BAT(, 29408) +HANDLE_BAT(, 29409) +HANDLE_BAT(, 29410) +HANDLE_BAT(, 29411) +HANDLE_BAT(, 29412) +HANDLE_BAT(, 29413) +HANDLE_BAT(, 29414) +HANDLE_BAT(, 29415) +HANDLE_BAT(, 29416) +HANDLE_BAT(, 29417) +HANDLE_BAT(, 29418) +HANDLE_BAT(, 29419) +HANDLE_BAT(, 29420) +HANDLE_BAT(, 29421) +HANDLE_BAT(, 29422) +HANDLE_BAT(, 29423) +HANDLE_BAT(, 29424) +HANDLE_BAT(, 29425) +HANDLE_BAT(, 29426) +HANDLE_BAT(, 29427) +HANDLE_BAT(, 29428) +HANDLE_BAT(, 29429) +HANDLE_BAT(, 29430) +HANDLE_BAT(, 29431) +HANDLE_BAT(, 29432) +HANDLE_BAT(, 29433) +HANDLE_BAT(, 29434) +HANDLE_BAT(, 29435) +HANDLE_BAT(, 29436) +HANDLE_BAT(, 29437) +HANDLE_BAT(, 29438) +HANDLE_BAT(, 29439) +HANDLE_BAT(, 29440) +HANDLE_BAT(, 29441) +HANDLE_BAT(, 29442) +HANDLE_BAT(, 29443) +HANDLE_BAT(, 29444) +HANDLE_BAT(, 29445) +HANDLE_BAT(, 29446) +HANDLE_BAT(, 29447) +HANDLE_BAT(, 29448) +HANDLE_BAT(, 29449) +HANDLE_BAT(, 29450) +HANDLE_BAT(, 29451) +HANDLE_BAT(, 29452) +HANDLE_BAT(, 29453) +HANDLE_BAT(, 29454) +HANDLE_BAT(, 29455) +HANDLE_BAT(, 29456) +HANDLE_BAT(, 29457) +HANDLE_BAT(, 29458) +HANDLE_BAT(, 29459) +HANDLE_BAT(, 29460) +HANDLE_BAT(, 29461) +HANDLE_BAT(, 29462) +HANDLE_BAT(, 29463) +HANDLE_BAT(, 29464) +HANDLE_BAT(, 29465) +HANDLE_BAT(, 29466) +HANDLE_BAT(, 29467) +HANDLE_BAT(, 29468) +HANDLE_BAT(, 29469) +HANDLE_BAT(, 29470) +HANDLE_BAT(, 29471) +HANDLE_BAT(, 29472) +HANDLE_BAT(, 29473) +HANDLE_BAT(, 29474) +HANDLE_BAT(, 29475) +HANDLE_BAT(, 29476) +HANDLE_BAT(, 29477) +HANDLE_BAT(, 29478) +HANDLE_BAT(, 29479) +HANDLE_BAT(, 29480) +HANDLE_BAT(, 29481) +HANDLE_BAT(, 29482) +HANDLE_BAT(, 29483) +HANDLE_BAT(, 29484) +HANDLE_BAT(, 29485) +HANDLE_BAT(, 29486) +HANDLE_BAT(, 29487) +HANDLE_BAT(, 29488) +HANDLE_BAT(, 29489) +HANDLE_BAT(, 29490) +HANDLE_BAT(, 29491) +HANDLE_BAT(, 29492) +HANDLE_BAT(, 29493) +HANDLE_BAT(, 29494) +HANDLE_BAT(, 29495) +HANDLE_BAT(, 29496) +HANDLE_BAT(, 29497) +HANDLE_BAT(, 29498) +HANDLE_BAT(, 29499) +HANDLE_BAT(, 29500) +HANDLE_BAT(, 29501) +HANDLE_BAT(, 29502) +HANDLE_BAT(, 29503) +HANDLE_BAT(, 29504) +HANDLE_BAT(, 29505) +HANDLE_BAT(, 29506) +HANDLE_BAT(, 29507) +HANDLE_BAT(, 29508) +HANDLE_BAT(, 29509) +HANDLE_BAT(, 29510) +HANDLE_BAT(, 29511) +HANDLE_BAT(, 29512) +HANDLE_BAT(, 29513) +HANDLE_BAT(, 29514) +HANDLE_BAT(, 29515) +HANDLE_BAT(, 29516) +HANDLE_BAT(, 29517) +HANDLE_BAT(, 29518) +HANDLE_BAT(, 29519) +HANDLE_BAT(, 29520) +HANDLE_BAT(, 29521) +HANDLE_BAT(, 29522) +HANDLE_BAT(, 29523) +HANDLE_BAT(, 29524) +HANDLE_BAT(, 29525) +HANDLE_BAT(, 29526) +HANDLE_BAT(, 29527) +HANDLE_BAT(, 29528) +HANDLE_BAT(, 29529) +HANDLE_BAT(, 29530) +HANDLE_BAT(, 29531) +HANDLE_BAT(, 29532) +HANDLE_BAT(, 29533) +HANDLE_BAT(, 29534) +HANDLE_BAT(, 29535) +HANDLE_BAT(, 29536) +HANDLE_BAT(, 29537) +HANDLE_BAT(, 29538) +HANDLE_BAT(, 29539) +HANDLE_BAT(, 29540) +HANDLE_BAT(, 29541) +HANDLE_BAT(, 29542) +HANDLE_BAT(, 29543) +HANDLE_BAT(, 29544) +HANDLE_BAT(, 29545) +HANDLE_BAT(, 29546) +HANDLE_BAT(, 29547) +HANDLE_BAT(, 29548) +HANDLE_BAT(, 29549) +HANDLE_BAT(, 29550) +HANDLE_BAT(, 29551) +HANDLE_BAT(, 29552) +HANDLE_BAT(, 29553) +HANDLE_BAT(, 29554) +HANDLE_BAT(, 29555) +HANDLE_BAT(, 29556) +HANDLE_BAT(, 29557) +HANDLE_BAT(, 29558) +HANDLE_BAT(, 29559) +HANDLE_BAT(, 29560) +HANDLE_BAT(, 29561) +HANDLE_BAT(, 29562) +HANDLE_BAT(, 29563) +HANDLE_BAT(, 29564) +HANDLE_BAT(, 29565) +HANDLE_BAT(, 29566) +HANDLE_BAT(, 29567) +HANDLE_BAT(, 29568) +HANDLE_BAT(, 29569) +HANDLE_BAT(, 29570) +HANDLE_BAT(, 29571) +HANDLE_BAT(, 29572) +HANDLE_BAT(, 29573) +HANDLE_BAT(, 29574) +HANDLE_BAT(, 29575) +HANDLE_BAT(, 29576) +HANDLE_BAT(, 29577) +HANDLE_BAT(, 29578) +HANDLE_BAT(, 29579) +HANDLE_BAT(, 29580) +HANDLE_BAT(, 29581) +HANDLE_BAT(, 29582) +HANDLE_BAT(, 29583) +HANDLE_BAT(, 29584) +HANDLE_BAT(, 29585) +HANDLE_BAT(, 29586) +HANDLE_BAT(, 29587) +HANDLE_BAT(, 29588) +HANDLE_BAT(, 29589) +HANDLE_BAT(, 29590) +HANDLE_BAT(, 29591) +HANDLE_BAT(, 29592) +HANDLE_BAT(, 29593) +HANDLE_BAT(, 29594) +HANDLE_BAT(, 29595) +HANDLE_BAT(, 29596) +HANDLE_BAT(, 29597) +HANDLE_BAT(, 29598) +HANDLE_BAT(, 29599) +HANDLE_BAT(, 29600) +HANDLE_BAT(, 29601) +HANDLE_BAT(, 29602) +HANDLE_BAT(, 29603) +HANDLE_BAT(, 29604) +HANDLE_BAT(, 29605) +HANDLE_BAT(, 29606) +HANDLE_BAT(, 29607) +HANDLE_BAT(, 29608) +HANDLE_BAT(, 29609) +HANDLE_BAT(, 29610) +HANDLE_BAT(, 29611) +HANDLE_BAT(, 29612) +HANDLE_BAT(, 29613) +HANDLE_BAT(, 29614) +HANDLE_BAT(, 29615) +HANDLE_BAT(, 29616) +HANDLE_BAT(, 29617) +HANDLE_BAT(, 29618) +HANDLE_BAT(, 29619) +HANDLE_BAT(, 29620) +HANDLE_BAT(, 29621) +HANDLE_BAT(, 29622) +HANDLE_BAT(, 29623) +HANDLE_BAT(, 29624) +HANDLE_BAT(, 29625) +HANDLE_BAT(, 29626) +HANDLE_BAT(, 29627) +HANDLE_BAT(, 29628) +HANDLE_BAT(, 29629) +HANDLE_BAT(, 29630) +HANDLE_BAT(, 29631) +HANDLE_BAT(, 29632) +HANDLE_BAT(, 29633) +HANDLE_BAT(, 29634) +HANDLE_BAT(, 29635) +HANDLE_BAT(, 29636) +HANDLE_BAT(, 29637) +HANDLE_BAT(, 29638) +HANDLE_BAT(, 29639) +HANDLE_BAT(, 29640) +HANDLE_BAT(, 29641) +HANDLE_BAT(, 29642) +HANDLE_BAT(, 29643) +HANDLE_BAT(, 29644) +HANDLE_BAT(, 29645) +HANDLE_BAT(, 29646) +HANDLE_BAT(, 29647) +HANDLE_BAT(, 29648) +HANDLE_BAT(, 29649) +HANDLE_BAT(, 29650) +HANDLE_BAT(, 29651) +HANDLE_BAT(, 29652) +HANDLE_BAT(, 29653) +HANDLE_BAT(, 29654) +HANDLE_BAT(, 29655) +HANDLE_BAT(, 29656) +HANDLE_BAT(, 29657) +HANDLE_BAT(, 29658) +HANDLE_BAT(, 29659) +HANDLE_BAT(, 29660) +HANDLE_BAT(, 29661) +HANDLE_BAT(, 29662) +HANDLE_BAT(, 29663) +HANDLE_BAT(, 29664) +HANDLE_BAT(, 29665) +HANDLE_BAT(, 29666) +HANDLE_BAT(, 29667) +HANDLE_BAT(, 29668) +HANDLE_BAT(, 29669) +HANDLE_BAT(, 29670) +HANDLE_BAT(, 29671) +HANDLE_BAT(, 29672) +HANDLE_BAT(, 29673) +HANDLE_BAT(, 29674) +HANDLE_BAT(, 29675) +HANDLE_BAT(, 29676) +HANDLE_BAT(, 29677) +HANDLE_BAT(, 29678) +HANDLE_BAT(, 29679) +HANDLE_BAT(, 29680) +HANDLE_BAT(, 29681) +HANDLE_BAT(, 29682) +HANDLE_BAT(, 29683) +HANDLE_BAT(, 29684) +HANDLE_BAT(, 29685) +HANDLE_BAT(, 29686) +HANDLE_BAT(, 29687) +HANDLE_BAT(, 29688) +HANDLE_BAT(, 29689) +HANDLE_BAT(, 29690) +HANDLE_BAT(, 29691) +HANDLE_BAT(, 29692) +HANDLE_BAT(, 29693) +HANDLE_BAT(, 29694) +HANDLE_BAT(, 29695) +HANDLE_BAT(, 29696) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 28673) +HANDLE_BAT(APINT_TYPE_PREFIX, 28674) +HANDLE_BAT(APINT_TYPE_PREFIX, 28675) +HANDLE_BAT(APINT_TYPE_PREFIX, 28676) +HANDLE_BAT(APINT_TYPE_PREFIX, 28677) +HANDLE_BAT(APINT_TYPE_PREFIX, 28678) +HANDLE_BAT(APINT_TYPE_PREFIX, 28679) +HANDLE_BAT(APINT_TYPE_PREFIX, 28680) +HANDLE_BAT(APINT_TYPE_PREFIX, 28681) +HANDLE_BAT(APINT_TYPE_PREFIX, 28682) +HANDLE_BAT(APINT_TYPE_PREFIX, 28683) +HANDLE_BAT(APINT_TYPE_PREFIX, 28684) +HANDLE_BAT(APINT_TYPE_PREFIX, 28685) +HANDLE_BAT(APINT_TYPE_PREFIX, 28686) +HANDLE_BAT(APINT_TYPE_PREFIX, 28687) +HANDLE_BAT(APINT_TYPE_PREFIX, 28688) +HANDLE_BAT(APINT_TYPE_PREFIX, 28689) +HANDLE_BAT(APINT_TYPE_PREFIX, 28690) +HANDLE_BAT(APINT_TYPE_PREFIX, 28691) +HANDLE_BAT(APINT_TYPE_PREFIX, 28692) +HANDLE_BAT(APINT_TYPE_PREFIX, 28693) +HANDLE_BAT(APINT_TYPE_PREFIX, 28694) +HANDLE_BAT(APINT_TYPE_PREFIX, 28695) +HANDLE_BAT(APINT_TYPE_PREFIX, 28696) +HANDLE_BAT(APINT_TYPE_PREFIX, 28697) +HANDLE_BAT(APINT_TYPE_PREFIX, 28698) +HANDLE_BAT(APINT_TYPE_PREFIX, 28699) +HANDLE_BAT(APINT_TYPE_PREFIX, 28700) +HANDLE_BAT(APINT_TYPE_PREFIX, 28701) +HANDLE_BAT(APINT_TYPE_PREFIX, 28702) +HANDLE_BAT(APINT_TYPE_PREFIX, 28703) +HANDLE_BAT(APINT_TYPE_PREFIX, 28704) +HANDLE_BAT(APINT_TYPE_PREFIX, 28705) +HANDLE_BAT(APINT_TYPE_PREFIX, 28706) +HANDLE_BAT(APINT_TYPE_PREFIX, 28707) +HANDLE_BAT(APINT_TYPE_PREFIX, 28708) +HANDLE_BAT(APINT_TYPE_PREFIX, 28709) +HANDLE_BAT(APINT_TYPE_PREFIX, 28710) +HANDLE_BAT(APINT_TYPE_PREFIX, 28711) +HANDLE_BAT(APINT_TYPE_PREFIX, 28712) +HANDLE_BAT(APINT_TYPE_PREFIX, 28713) +HANDLE_BAT(APINT_TYPE_PREFIX, 28714) +HANDLE_BAT(APINT_TYPE_PREFIX, 28715) +HANDLE_BAT(APINT_TYPE_PREFIX, 28716) +HANDLE_BAT(APINT_TYPE_PREFIX, 28717) +HANDLE_BAT(APINT_TYPE_PREFIX, 28718) +HANDLE_BAT(APINT_TYPE_PREFIX, 28719) +HANDLE_BAT(APINT_TYPE_PREFIX, 28720) +HANDLE_BAT(APINT_TYPE_PREFIX, 28721) +HANDLE_BAT(APINT_TYPE_PREFIX, 28722) +HANDLE_BAT(APINT_TYPE_PREFIX, 28723) +HANDLE_BAT(APINT_TYPE_PREFIX, 28724) +HANDLE_BAT(APINT_TYPE_PREFIX, 28725) +HANDLE_BAT(APINT_TYPE_PREFIX, 28726) +HANDLE_BAT(APINT_TYPE_PREFIX, 28727) +HANDLE_BAT(APINT_TYPE_PREFIX, 28728) +HANDLE_BAT(APINT_TYPE_PREFIX, 28729) +HANDLE_BAT(APINT_TYPE_PREFIX, 28730) +HANDLE_BAT(APINT_TYPE_PREFIX, 28731) +HANDLE_BAT(APINT_TYPE_PREFIX, 28732) +HANDLE_BAT(APINT_TYPE_PREFIX, 28733) +HANDLE_BAT(APINT_TYPE_PREFIX, 28734) +HANDLE_BAT(APINT_TYPE_PREFIX, 28735) +HANDLE_BAT(APINT_TYPE_PREFIX, 28736) +HANDLE_BAT(APINT_TYPE_PREFIX, 28737) +HANDLE_BAT(APINT_TYPE_PREFIX, 28738) +HANDLE_BAT(APINT_TYPE_PREFIX, 28739) +HANDLE_BAT(APINT_TYPE_PREFIX, 28740) +HANDLE_BAT(APINT_TYPE_PREFIX, 28741) +HANDLE_BAT(APINT_TYPE_PREFIX, 28742) +HANDLE_BAT(APINT_TYPE_PREFIX, 28743) +HANDLE_BAT(APINT_TYPE_PREFIX, 28744) +HANDLE_BAT(APINT_TYPE_PREFIX, 28745) +HANDLE_BAT(APINT_TYPE_PREFIX, 28746) +HANDLE_BAT(APINT_TYPE_PREFIX, 28747) +HANDLE_BAT(APINT_TYPE_PREFIX, 28748) +HANDLE_BAT(APINT_TYPE_PREFIX, 28749) +HANDLE_BAT(APINT_TYPE_PREFIX, 28750) +HANDLE_BAT(APINT_TYPE_PREFIX, 28751) +HANDLE_BAT(APINT_TYPE_PREFIX, 28752) +HANDLE_BAT(APINT_TYPE_PREFIX, 28753) +HANDLE_BAT(APINT_TYPE_PREFIX, 28754) +HANDLE_BAT(APINT_TYPE_PREFIX, 28755) +HANDLE_BAT(APINT_TYPE_PREFIX, 28756) +HANDLE_BAT(APINT_TYPE_PREFIX, 28757) +HANDLE_BAT(APINT_TYPE_PREFIX, 28758) +HANDLE_BAT(APINT_TYPE_PREFIX, 28759) +HANDLE_BAT(APINT_TYPE_PREFIX, 28760) +HANDLE_BAT(APINT_TYPE_PREFIX, 28761) +HANDLE_BAT(APINT_TYPE_PREFIX, 28762) +HANDLE_BAT(APINT_TYPE_PREFIX, 28763) +HANDLE_BAT(APINT_TYPE_PREFIX, 28764) +HANDLE_BAT(APINT_TYPE_PREFIX, 28765) +HANDLE_BAT(APINT_TYPE_PREFIX, 28766) +HANDLE_BAT(APINT_TYPE_PREFIX, 28767) +HANDLE_BAT(APINT_TYPE_PREFIX, 28768) +HANDLE_BAT(APINT_TYPE_PREFIX, 28769) +HANDLE_BAT(APINT_TYPE_PREFIX, 28770) +HANDLE_BAT(APINT_TYPE_PREFIX, 28771) +HANDLE_BAT(APINT_TYPE_PREFIX, 28772) +HANDLE_BAT(APINT_TYPE_PREFIX, 28773) +HANDLE_BAT(APINT_TYPE_PREFIX, 28774) +HANDLE_BAT(APINT_TYPE_PREFIX, 28775) +HANDLE_BAT(APINT_TYPE_PREFIX, 28776) +HANDLE_BAT(APINT_TYPE_PREFIX, 28777) +HANDLE_BAT(APINT_TYPE_PREFIX, 28778) +HANDLE_BAT(APINT_TYPE_PREFIX, 28779) +HANDLE_BAT(APINT_TYPE_PREFIX, 28780) +HANDLE_BAT(APINT_TYPE_PREFIX, 28781) +HANDLE_BAT(APINT_TYPE_PREFIX, 28782) +HANDLE_BAT(APINT_TYPE_PREFIX, 28783) +HANDLE_BAT(APINT_TYPE_PREFIX, 28784) +HANDLE_BAT(APINT_TYPE_PREFIX, 28785) +HANDLE_BAT(APINT_TYPE_PREFIX, 28786) +HANDLE_BAT(APINT_TYPE_PREFIX, 28787) +HANDLE_BAT(APINT_TYPE_PREFIX, 28788) +HANDLE_BAT(APINT_TYPE_PREFIX, 28789) +HANDLE_BAT(APINT_TYPE_PREFIX, 28790) +HANDLE_BAT(APINT_TYPE_PREFIX, 28791) +HANDLE_BAT(APINT_TYPE_PREFIX, 28792) +HANDLE_BAT(APINT_TYPE_PREFIX, 28793) +HANDLE_BAT(APINT_TYPE_PREFIX, 28794) +HANDLE_BAT(APINT_TYPE_PREFIX, 28795) +HANDLE_BAT(APINT_TYPE_PREFIX, 28796) +HANDLE_BAT(APINT_TYPE_PREFIX, 28797) +HANDLE_BAT(APINT_TYPE_PREFIX, 28798) +HANDLE_BAT(APINT_TYPE_PREFIX, 28799) +HANDLE_BAT(APINT_TYPE_PREFIX, 28800) +HANDLE_BAT(APINT_TYPE_PREFIX, 28801) +HANDLE_BAT(APINT_TYPE_PREFIX, 28802) +HANDLE_BAT(APINT_TYPE_PREFIX, 28803) +HANDLE_BAT(APINT_TYPE_PREFIX, 28804) +HANDLE_BAT(APINT_TYPE_PREFIX, 28805) +HANDLE_BAT(APINT_TYPE_PREFIX, 28806) +HANDLE_BAT(APINT_TYPE_PREFIX, 28807) +HANDLE_BAT(APINT_TYPE_PREFIX, 28808) +HANDLE_BAT(APINT_TYPE_PREFIX, 28809) +HANDLE_BAT(APINT_TYPE_PREFIX, 28810) +HANDLE_BAT(APINT_TYPE_PREFIX, 28811) +HANDLE_BAT(APINT_TYPE_PREFIX, 28812) +HANDLE_BAT(APINT_TYPE_PREFIX, 28813) +HANDLE_BAT(APINT_TYPE_PREFIX, 28814) +HANDLE_BAT(APINT_TYPE_PREFIX, 28815) +HANDLE_BAT(APINT_TYPE_PREFIX, 28816) +HANDLE_BAT(APINT_TYPE_PREFIX, 28817) +HANDLE_BAT(APINT_TYPE_PREFIX, 28818) +HANDLE_BAT(APINT_TYPE_PREFIX, 28819) +HANDLE_BAT(APINT_TYPE_PREFIX, 28820) +HANDLE_BAT(APINT_TYPE_PREFIX, 28821) +HANDLE_BAT(APINT_TYPE_PREFIX, 28822) +HANDLE_BAT(APINT_TYPE_PREFIX, 28823) +HANDLE_BAT(APINT_TYPE_PREFIX, 28824) +HANDLE_BAT(APINT_TYPE_PREFIX, 28825) +HANDLE_BAT(APINT_TYPE_PREFIX, 28826) +HANDLE_BAT(APINT_TYPE_PREFIX, 28827) +HANDLE_BAT(APINT_TYPE_PREFIX, 28828) +HANDLE_BAT(APINT_TYPE_PREFIX, 28829) +HANDLE_BAT(APINT_TYPE_PREFIX, 28830) +HANDLE_BAT(APINT_TYPE_PREFIX, 28831) +HANDLE_BAT(APINT_TYPE_PREFIX, 28832) +HANDLE_BAT(APINT_TYPE_PREFIX, 28833) +HANDLE_BAT(APINT_TYPE_PREFIX, 28834) +HANDLE_BAT(APINT_TYPE_PREFIX, 28835) +HANDLE_BAT(APINT_TYPE_PREFIX, 28836) +HANDLE_BAT(APINT_TYPE_PREFIX, 28837) +HANDLE_BAT(APINT_TYPE_PREFIX, 28838) +HANDLE_BAT(APINT_TYPE_PREFIX, 28839) +HANDLE_BAT(APINT_TYPE_PREFIX, 28840) +HANDLE_BAT(APINT_TYPE_PREFIX, 28841) +HANDLE_BAT(APINT_TYPE_PREFIX, 28842) +HANDLE_BAT(APINT_TYPE_PREFIX, 28843) +HANDLE_BAT(APINT_TYPE_PREFIX, 28844) +HANDLE_BAT(APINT_TYPE_PREFIX, 28845) +HANDLE_BAT(APINT_TYPE_PREFIX, 28846) +HANDLE_BAT(APINT_TYPE_PREFIX, 28847) +HANDLE_BAT(APINT_TYPE_PREFIX, 28848) +HANDLE_BAT(APINT_TYPE_PREFIX, 28849) +HANDLE_BAT(APINT_TYPE_PREFIX, 28850) +HANDLE_BAT(APINT_TYPE_PREFIX, 28851) +HANDLE_BAT(APINT_TYPE_PREFIX, 28852) +HANDLE_BAT(APINT_TYPE_PREFIX, 28853) +HANDLE_BAT(APINT_TYPE_PREFIX, 28854) +HANDLE_BAT(APINT_TYPE_PREFIX, 28855) +HANDLE_BAT(APINT_TYPE_PREFIX, 28856) +HANDLE_BAT(APINT_TYPE_PREFIX, 28857) +HANDLE_BAT(APINT_TYPE_PREFIX, 28858) +HANDLE_BAT(APINT_TYPE_PREFIX, 28859) +HANDLE_BAT(APINT_TYPE_PREFIX, 28860) +HANDLE_BAT(APINT_TYPE_PREFIX, 28861) +HANDLE_BAT(APINT_TYPE_PREFIX, 28862) +HANDLE_BAT(APINT_TYPE_PREFIX, 28863) +HANDLE_BAT(APINT_TYPE_PREFIX, 28864) +HANDLE_BAT(APINT_TYPE_PREFIX, 28865) +HANDLE_BAT(APINT_TYPE_PREFIX, 28866) +HANDLE_BAT(APINT_TYPE_PREFIX, 28867) +HANDLE_BAT(APINT_TYPE_PREFIX, 28868) +HANDLE_BAT(APINT_TYPE_PREFIX, 28869) +HANDLE_BAT(APINT_TYPE_PREFIX, 28870) +HANDLE_BAT(APINT_TYPE_PREFIX, 28871) +HANDLE_BAT(APINT_TYPE_PREFIX, 28872) +HANDLE_BAT(APINT_TYPE_PREFIX, 28873) +HANDLE_BAT(APINT_TYPE_PREFIX, 28874) +HANDLE_BAT(APINT_TYPE_PREFIX, 28875) +HANDLE_BAT(APINT_TYPE_PREFIX, 28876) +HANDLE_BAT(APINT_TYPE_PREFIX, 28877) +HANDLE_BAT(APINT_TYPE_PREFIX, 28878) +HANDLE_BAT(APINT_TYPE_PREFIX, 28879) +HANDLE_BAT(APINT_TYPE_PREFIX, 28880) +HANDLE_BAT(APINT_TYPE_PREFIX, 28881) +HANDLE_BAT(APINT_TYPE_PREFIX, 28882) +HANDLE_BAT(APINT_TYPE_PREFIX, 28883) +HANDLE_BAT(APINT_TYPE_PREFIX, 28884) +HANDLE_BAT(APINT_TYPE_PREFIX, 28885) +HANDLE_BAT(APINT_TYPE_PREFIX, 28886) +HANDLE_BAT(APINT_TYPE_PREFIX, 28887) +HANDLE_BAT(APINT_TYPE_PREFIX, 28888) +HANDLE_BAT(APINT_TYPE_PREFIX, 28889) +HANDLE_BAT(APINT_TYPE_PREFIX, 28890) +HANDLE_BAT(APINT_TYPE_PREFIX, 28891) +HANDLE_BAT(APINT_TYPE_PREFIX, 28892) +HANDLE_BAT(APINT_TYPE_PREFIX, 28893) +HANDLE_BAT(APINT_TYPE_PREFIX, 28894) +HANDLE_BAT(APINT_TYPE_PREFIX, 28895) +HANDLE_BAT(APINT_TYPE_PREFIX, 28896) +HANDLE_BAT(APINT_TYPE_PREFIX, 28897) +HANDLE_BAT(APINT_TYPE_PREFIX, 28898) +HANDLE_BAT(APINT_TYPE_PREFIX, 28899) +HANDLE_BAT(APINT_TYPE_PREFIX, 28900) +HANDLE_BAT(APINT_TYPE_PREFIX, 28901) +HANDLE_BAT(APINT_TYPE_PREFIX, 28902) +HANDLE_BAT(APINT_TYPE_PREFIX, 28903) +HANDLE_BAT(APINT_TYPE_PREFIX, 28904) +HANDLE_BAT(APINT_TYPE_PREFIX, 28905) +HANDLE_BAT(APINT_TYPE_PREFIX, 28906) +HANDLE_BAT(APINT_TYPE_PREFIX, 28907) +HANDLE_BAT(APINT_TYPE_PREFIX, 28908) +HANDLE_BAT(APINT_TYPE_PREFIX, 28909) +HANDLE_BAT(APINT_TYPE_PREFIX, 28910) +HANDLE_BAT(APINT_TYPE_PREFIX, 28911) +HANDLE_BAT(APINT_TYPE_PREFIX, 28912) +HANDLE_BAT(APINT_TYPE_PREFIX, 28913) +HANDLE_BAT(APINT_TYPE_PREFIX, 28914) +HANDLE_BAT(APINT_TYPE_PREFIX, 28915) +HANDLE_BAT(APINT_TYPE_PREFIX, 28916) +HANDLE_BAT(APINT_TYPE_PREFIX, 28917) +HANDLE_BAT(APINT_TYPE_PREFIX, 28918) +HANDLE_BAT(APINT_TYPE_PREFIX, 28919) +HANDLE_BAT(APINT_TYPE_PREFIX, 28920) +HANDLE_BAT(APINT_TYPE_PREFIX, 28921) +HANDLE_BAT(APINT_TYPE_PREFIX, 28922) +HANDLE_BAT(APINT_TYPE_PREFIX, 28923) +HANDLE_BAT(APINT_TYPE_PREFIX, 28924) +HANDLE_BAT(APINT_TYPE_PREFIX, 28925) +HANDLE_BAT(APINT_TYPE_PREFIX, 28926) +HANDLE_BAT(APINT_TYPE_PREFIX, 28927) +HANDLE_BAT(APINT_TYPE_PREFIX, 28928) +HANDLE_BAT(APINT_TYPE_PREFIX, 28929) +HANDLE_BAT(APINT_TYPE_PREFIX, 28930) +HANDLE_BAT(APINT_TYPE_PREFIX, 28931) +HANDLE_BAT(APINT_TYPE_PREFIX, 28932) +HANDLE_BAT(APINT_TYPE_PREFIX, 28933) +HANDLE_BAT(APINT_TYPE_PREFIX, 28934) +HANDLE_BAT(APINT_TYPE_PREFIX, 28935) +HANDLE_BAT(APINT_TYPE_PREFIX, 28936) +HANDLE_BAT(APINT_TYPE_PREFIX, 28937) +HANDLE_BAT(APINT_TYPE_PREFIX, 28938) +HANDLE_BAT(APINT_TYPE_PREFIX, 28939) +HANDLE_BAT(APINT_TYPE_PREFIX, 28940) +HANDLE_BAT(APINT_TYPE_PREFIX, 28941) +HANDLE_BAT(APINT_TYPE_PREFIX, 28942) +HANDLE_BAT(APINT_TYPE_PREFIX, 28943) +HANDLE_BAT(APINT_TYPE_PREFIX, 28944) +HANDLE_BAT(APINT_TYPE_PREFIX, 28945) +HANDLE_BAT(APINT_TYPE_PREFIX, 28946) +HANDLE_BAT(APINT_TYPE_PREFIX, 28947) +HANDLE_BAT(APINT_TYPE_PREFIX, 28948) +HANDLE_BAT(APINT_TYPE_PREFIX, 28949) +HANDLE_BAT(APINT_TYPE_PREFIX, 28950) +HANDLE_BAT(APINT_TYPE_PREFIX, 28951) +HANDLE_BAT(APINT_TYPE_PREFIX, 28952) +HANDLE_BAT(APINT_TYPE_PREFIX, 28953) +HANDLE_BAT(APINT_TYPE_PREFIX, 28954) +HANDLE_BAT(APINT_TYPE_PREFIX, 28955) +HANDLE_BAT(APINT_TYPE_PREFIX, 28956) +HANDLE_BAT(APINT_TYPE_PREFIX, 28957) +HANDLE_BAT(APINT_TYPE_PREFIX, 28958) +HANDLE_BAT(APINT_TYPE_PREFIX, 28959) +HANDLE_BAT(APINT_TYPE_PREFIX, 28960) +HANDLE_BAT(APINT_TYPE_PREFIX, 28961) +HANDLE_BAT(APINT_TYPE_PREFIX, 28962) +HANDLE_BAT(APINT_TYPE_PREFIX, 28963) +HANDLE_BAT(APINT_TYPE_PREFIX, 28964) +HANDLE_BAT(APINT_TYPE_PREFIX, 28965) +HANDLE_BAT(APINT_TYPE_PREFIX, 28966) +HANDLE_BAT(APINT_TYPE_PREFIX, 28967) +HANDLE_BAT(APINT_TYPE_PREFIX, 28968) +HANDLE_BAT(APINT_TYPE_PREFIX, 28969) +HANDLE_BAT(APINT_TYPE_PREFIX, 28970) +HANDLE_BAT(APINT_TYPE_PREFIX, 28971) +HANDLE_BAT(APINT_TYPE_PREFIX, 28972) +HANDLE_BAT(APINT_TYPE_PREFIX, 28973) +HANDLE_BAT(APINT_TYPE_PREFIX, 28974) +HANDLE_BAT(APINT_TYPE_PREFIX, 28975) +HANDLE_BAT(APINT_TYPE_PREFIX, 28976) +HANDLE_BAT(APINT_TYPE_PREFIX, 28977) +HANDLE_BAT(APINT_TYPE_PREFIX, 28978) +HANDLE_BAT(APINT_TYPE_PREFIX, 28979) +HANDLE_BAT(APINT_TYPE_PREFIX, 28980) +HANDLE_BAT(APINT_TYPE_PREFIX, 28981) +HANDLE_BAT(APINT_TYPE_PREFIX, 28982) +HANDLE_BAT(APINT_TYPE_PREFIX, 28983) +HANDLE_BAT(APINT_TYPE_PREFIX, 28984) +HANDLE_BAT(APINT_TYPE_PREFIX, 28985) +HANDLE_BAT(APINT_TYPE_PREFIX, 28986) +HANDLE_BAT(APINT_TYPE_PREFIX, 28987) +HANDLE_BAT(APINT_TYPE_PREFIX, 28988) +HANDLE_BAT(APINT_TYPE_PREFIX, 28989) +HANDLE_BAT(APINT_TYPE_PREFIX, 28990) +HANDLE_BAT(APINT_TYPE_PREFIX, 28991) +HANDLE_BAT(APINT_TYPE_PREFIX, 28992) +HANDLE_BAT(APINT_TYPE_PREFIX, 28993) +HANDLE_BAT(APINT_TYPE_PREFIX, 28994) +HANDLE_BAT(APINT_TYPE_PREFIX, 28995) +HANDLE_BAT(APINT_TYPE_PREFIX, 28996) +HANDLE_BAT(APINT_TYPE_PREFIX, 28997) +HANDLE_BAT(APINT_TYPE_PREFIX, 28998) +HANDLE_BAT(APINT_TYPE_PREFIX, 28999) +HANDLE_BAT(APINT_TYPE_PREFIX, 29000) +HANDLE_BAT(APINT_TYPE_PREFIX, 29001) +HANDLE_BAT(APINT_TYPE_PREFIX, 29002) +HANDLE_BAT(APINT_TYPE_PREFIX, 29003) +HANDLE_BAT(APINT_TYPE_PREFIX, 29004) +HANDLE_BAT(APINT_TYPE_PREFIX, 29005) +HANDLE_BAT(APINT_TYPE_PREFIX, 29006) +HANDLE_BAT(APINT_TYPE_PREFIX, 29007) +HANDLE_BAT(APINT_TYPE_PREFIX, 29008) +HANDLE_BAT(APINT_TYPE_PREFIX, 29009) +HANDLE_BAT(APINT_TYPE_PREFIX, 29010) +HANDLE_BAT(APINT_TYPE_PREFIX, 29011) +HANDLE_BAT(APINT_TYPE_PREFIX, 29012) +HANDLE_BAT(APINT_TYPE_PREFIX, 29013) +HANDLE_BAT(APINT_TYPE_PREFIX, 29014) +HANDLE_BAT(APINT_TYPE_PREFIX, 29015) +HANDLE_BAT(APINT_TYPE_PREFIX, 29016) +HANDLE_BAT(APINT_TYPE_PREFIX, 29017) +HANDLE_BAT(APINT_TYPE_PREFIX, 29018) +HANDLE_BAT(APINT_TYPE_PREFIX, 29019) +HANDLE_BAT(APINT_TYPE_PREFIX, 29020) +HANDLE_BAT(APINT_TYPE_PREFIX, 29021) +HANDLE_BAT(APINT_TYPE_PREFIX, 29022) +HANDLE_BAT(APINT_TYPE_PREFIX, 29023) +HANDLE_BAT(APINT_TYPE_PREFIX, 29024) +HANDLE_BAT(APINT_TYPE_PREFIX, 29025) +HANDLE_BAT(APINT_TYPE_PREFIX, 29026) +HANDLE_BAT(APINT_TYPE_PREFIX, 29027) +HANDLE_BAT(APINT_TYPE_PREFIX, 29028) +HANDLE_BAT(APINT_TYPE_PREFIX, 29029) +HANDLE_BAT(APINT_TYPE_PREFIX, 29030) +HANDLE_BAT(APINT_TYPE_PREFIX, 29031) +HANDLE_BAT(APINT_TYPE_PREFIX, 29032) +HANDLE_BAT(APINT_TYPE_PREFIX, 29033) +HANDLE_BAT(APINT_TYPE_PREFIX, 29034) +HANDLE_BAT(APINT_TYPE_PREFIX, 29035) +HANDLE_BAT(APINT_TYPE_PREFIX, 29036) +HANDLE_BAT(APINT_TYPE_PREFIX, 29037) +HANDLE_BAT(APINT_TYPE_PREFIX, 29038) +HANDLE_BAT(APINT_TYPE_PREFIX, 29039) +HANDLE_BAT(APINT_TYPE_PREFIX, 29040) +HANDLE_BAT(APINT_TYPE_PREFIX, 29041) +HANDLE_BAT(APINT_TYPE_PREFIX, 29042) +HANDLE_BAT(APINT_TYPE_PREFIX, 29043) +HANDLE_BAT(APINT_TYPE_PREFIX, 29044) +HANDLE_BAT(APINT_TYPE_PREFIX, 29045) +HANDLE_BAT(APINT_TYPE_PREFIX, 29046) +HANDLE_BAT(APINT_TYPE_PREFIX, 29047) +HANDLE_BAT(APINT_TYPE_PREFIX, 29048) +HANDLE_BAT(APINT_TYPE_PREFIX, 29049) +HANDLE_BAT(APINT_TYPE_PREFIX, 29050) +HANDLE_BAT(APINT_TYPE_PREFIX, 29051) +HANDLE_BAT(APINT_TYPE_PREFIX, 29052) +HANDLE_BAT(APINT_TYPE_PREFIX, 29053) +HANDLE_BAT(APINT_TYPE_PREFIX, 29054) +HANDLE_BAT(APINT_TYPE_PREFIX, 29055) +HANDLE_BAT(APINT_TYPE_PREFIX, 29056) +HANDLE_BAT(APINT_TYPE_PREFIX, 29057) +HANDLE_BAT(APINT_TYPE_PREFIX, 29058) +HANDLE_BAT(APINT_TYPE_PREFIX, 29059) +HANDLE_BAT(APINT_TYPE_PREFIX, 29060) +HANDLE_BAT(APINT_TYPE_PREFIX, 29061) +HANDLE_BAT(APINT_TYPE_PREFIX, 29062) +HANDLE_BAT(APINT_TYPE_PREFIX, 29063) +HANDLE_BAT(APINT_TYPE_PREFIX, 29064) +HANDLE_BAT(APINT_TYPE_PREFIX, 29065) +HANDLE_BAT(APINT_TYPE_PREFIX, 29066) +HANDLE_BAT(APINT_TYPE_PREFIX, 29067) +HANDLE_BAT(APINT_TYPE_PREFIX, 29068) +HANDLE_BAT(APINT_TYPE_PREFIX, 29069) +HANDLE_BAT(APINT_TYPE_PREFIX, 29070) +HANDLE_BAT(APINT_TYPE_PREFIX, 29071) +HANDLE_BAT(APINT_TYPE_PREFIX, 29072) +HANDLE_BAT(APINT_TYPE_PREFIX, 29073) +HANDLE_BAT(APINT_TYPE_PREFIX, 29074) +HANDLE_BAT(APINT_TYPE_PREFIX, 29075) +HANDLE_BAT(APINT_TYPE_PREFIX, 29076) +HANDLE_BAT(APINT_TYPE_PREFIX, 29077) +HANDLE_BAT(APINT_TYPE_PREFIX, 29078) +HANDLE_BAT(APINT_TYPE_PREFIX, 29079) +HANDLE_BAT(APINT_TYPE_PREFIX, 29080) +HANDLE_BAT(APINT_TYPE_PREFIX, 29081) +HANDLE_BAT(APINT_TYPE_PREFIX, 29082) +HANDLE_BAT(APINT_TYPE_PREFIX, 29083) +HANDLE_BAT(APINT_TYPE_PREFIX, 29084) +HANDLE_BAT(APINT_TYPE_PREFIX, 29085) +HANDLE_BAT(APINT_TYPE_PREFIX, 29086) +HANDLE_BAT(APINT_TYPE_PREFIX, 29087) +HANDLE_BAT(APINT_TYPE_PREFIX, 29088) +HANDLE_BAT(APINT_TYPE_PREFIX, 29089) +HANDLE_BAT(APINT_TYPE_PREFIX, 29090) +HANDLE_BAT(APINT_TYPE_PREFIX, 29091) +HANDLE_BAT(APINT_TYPE_PREFIX, 29092) +HANDLE_BAT(APINT_TYPE_PREFIX, 29093) +HANDLE_BAT(APINT_TYPE_PREFIX, 29094) +HANDLE_BAT(APINT_TYPE_PREFIX, 29095) +HANDLE_BAT(APINT_TYPE_PREFIX, 29096) +HANDLE_BAT(APINT_TYPE_PREFIX, 29097) +HANDLE_BAT(APINT_TYPE_PREFIX, 29098) +HANDLE_BAT(APINT_TYPE_PREFIX, 29099) +HANDLE_BAT(APINT_TYPE_PREFIX, 29100) +HANDLE_BAT(APINT_TYPE_PREFIX, 29101) +HANDLE_BAT(APINT_TYPE_PREFIX, 29102) +HANDLE_BAT(APINT_TYPE_PREFIX, 29103) +HANDLE_BAT(APINT_TYPE_PREFIX, 29104) +HANDLE_BAT(APINT_TYPE_PREFIX, 29105) +HANDLE_BAT(APINT_TYPE_PREFIX, 29106) +HANDLE_BAT(APINT_TYPE_PREFIX, 29107) +HANDLE_BAT(APINT_TYPE_PREFIX, 29108) +HANDLE_BAT(APINT_TYPE_PREFIX, 29109) +HANDLE_BAT(APINT_TYPE_PREFIX, 29110) +HANDLE_BAT(APINT_TYPE_PREFIX, 29111) +HANDLE_BAT(APINT_TYPE_PREFIX, 29112) +HANDLE_BAT(APINT_TYPE_PREFIX, 29113) +HANDLE_BAT(APINT_TYPE_PREFIX, 29114) +HANDLE_BAT(APINT_TYPE_PREFIX, 29115) +HANDLE_BAT(APINT_TYPE_PREFIX, 29116) +HANDLE_BAT(APINT_TYPE_PREFIX, 29117) +HANDLE_BAT(APINT_TYPE_PREFIX, 29118) +HANDLE_BAT(APINT_TYPE_PREFIX, 29119) +HANDLE_BAT(APINT_TYPE_PREFIX, 29120) +HANDLE_BAT(APINT_TYPE_PREFIX, 29121) +HANDLE_BAT(APINT_TYPE_PREFIX, 29122) +HANDLE_BAT(APINT_TYPE_PREFIX, 29123) +HANDLE_BAT(APINT_TYPE_PREFIX, 29124) +HANDLE_BAT(APINT_TYPE_PREFIX, 29125) +HANDLE_BAT(APINT_TYPE_PREFIX, 29126) +HANDLE_BAT(APINT_TYPE_PREFIX, 29127) +HANDLE_BAT(APINT_TYPE_PREFIX, 29128) +HANDLE_BAT(APINT_TYPE_PREFIX, 29129) +HANDLE_BAT(APINT_TYPE_PREFIX, 29130) +HANDLE_BAT(APINT_TYPE_PREFIX, 29131) +HANDLE_BAT(APINT_TYPE_PREFIX, 29132) +HANDLE_BAT(APINT_TYPE_PREFIX, 29133) +HANDLE_BAT(APINT_TYPE_PREFIX, 29134) +HANDLE_BAT(APINT_TYPE_PREFIX, 29135) +HANDLE_BAT(APINT_TYPE_PREFIX, 29136) +HANDLE_BAT(APINT_TYPE_PREFIX, 29137) +HANDLE_BAT(APINT_TYPE_PREFIX, 29138) +HANDLE_BAT(APINT_TYPE_PREFIX, 29139) +HANDLE_BAT(APINT_TYPE_PREFIX, 29140) +HANDLE_BAT(APINT_TYPE_PREFIX, 29141) +HANDLE_BAT(APINT_TYPE_PREFIX, 29142) +HANDLE_BAT(APINT_TYPE_PREFIX, 29143) +HANDLE_BAT(APINT_TYPE_PREFIX, 29144) +HANDLE_BAT(APINT_TYPE_PREFIX, 29145) +HANDLE_BAT(APINT_TYPE_PREFIX, 29146) +HANDLE_BAT(APINT_TYPE_PREFIX, 29147) +HANDLE_BAT(APINT_TYPE_PREFIX, 29148) +HANDLE_BAT(APINT_TYPE_PREFIX, 29149) +HANDLE_BAT(APINT_TYPE_PREFIX, 29150) +HANDLE_BAT(APINT_TYPE_PREFIX, 29151) +HANDLE_BAT(APINT_TYPE_PREFIX, 29152) +HANDLE_BAT(APINT_TYPE_PREFIX, 29153) +HANDLE_BAT(APINT_TYPE_PREFIX, 29154) +HANDLE_BAT(APINT_TYPE_PREFIX, 29155) +HANDLE_BAT(APINT_TYPE_PREFIX, 29156) +HANDLE_BAT(APINT_TYPE_PREFIX, 29157) +HANDLE_BAT(APINT_TYPE_PREFIX, 29158) +HANDLE_BAT(APINT_TYPE_PREFIX, 29159) +HANDLE_BAT(APINT_TYPE_PREFIX, 29160) +HANDLE_BAT(APINT_TYPE_PREFIX, 29161) +HANDLE_BAT(APINT_TYPE_PREFIX, 29162) +HANDLE_BAT(APINT_TYPE_PREFIX, 29163) +HANDLE_BAT(APINT_TYPE_PREFIX, 29164) +HANDLE_BAT(APINT_TYPE_PREFIX, 29165) +HANDLE_BAT(APINT_TYPE_PREFIX, 29166) +HANDLE_BAT(APINT_TYPE_PREFIX, 29167) +HANDLE_BAT(APINT_TYPE_PREFIX, 29168) +HANDLE_BAT(APINT_TYPE_PREFIX, 29169) +HANDLE_BAT(APINT_TYPE_PREFIX, 29170) +HANDLE_BAT(APINT_TYPE_PREFIX, 29171) +HANDLE_BAT(APINT_TYPE_PREFIX, 29172) +HANDLE_BAT(APINT_TYPE_PREFIX, 29173) +HANDLE_BAT(APINT_TYPE_PREFIX, 29174) +HANDLE_BAT(APINT_TYPE_PREFIX, 29175) +HANDLE_BAT(APINT_TYPE_PREFIX, 29176) +HANDLE_BAT(APINT_TYPE_PREFIX, 29177) +HANDLE_BAT(APINT_TYPE_PREFIX, 29178) +HANDLE_BAT(APINT_TYPE_PREFIX, 29179) +HANDLE_BAT(APINT_TYPE_PREFIX, 29180) +HANDLE_BAT(APINT_TYPE_PREFIX, 29181) +HANDLE_BAT(APINT_TYPE_PREFIX, 29182) +HANDLE_BAT(APINT_TYPE_PREFIX, 29183) +HANDLE_BAT(APINT_TYPE_PREFIX, 29184) +HANDLE_BAT(APINT_TYPE_PREFIX, 29185) +HANDLE_BAT(APINT_TYPE_PREFIX, 29186) +HANDLE_BAT(APINT_TYPE_PREFIX, 29187) +HANDLE_BAT(APINT_TYPE_PREFIX, 29188) +HANDLE_BAT(APINT_TYPE_PREFIX, 29189) +HANDLE_BAT(APINT_TYPE_PREFIX, 29190) +HANDLE_BAT(APINT_TYPE_PREFIX, 29191) +HANDLE_BAT(APINT_TYPE_PREFIX, 29192) +HANDLE_BAT(APINT_TYPE_PREFIX, 29193) +HANDLE_BAT(APINT_TYPE_PREFIX, 29194) +HANDLE_BAT(APINT_TYPE_PREFIX, 29195) +HANDLE_BAT(APINT_TYPE_PREFIX, 29196) +HANDLE_BAT(APINT_TYPE_PREFIX, 29197) +HANDLE_BAT(APINT_TYPE_PREFIX, 29198) +HANDLE_BAT(APINT_TYPE_PREFIX, 29199) +HANDLE_BAT(APINT_TYPE_PREFIX, 29200) +HANDLE_BAT(APINT_TYPE_PREFIX, 29201) +HANDLE_BAT(APINT_TYPE_PREFIX, 29202) +HANDLE_BAT(APINT_TYPE_PREFIX, 29203) +HANDLE_BAT(APINT_TYPE_PREFIX, 29204) +HANDLE_BAT(APINT_TYPE_PREFIX, 29205) +HANDLE_BAT(APINT_TYPE_PREFIX, 29206) +HANDLE_BAT(APINT_TYPE_PREFIX, 29207) +HANDLE_BAT(APINT_TYPE_PREFIX, 29208) +HANDLE_BAT(APINT_TYPE_PREFIX, 29209) +HANDLE_BAT(APINT_TYPE_PREFIX, 29210) +HANDLE_BAT(APINT_TYPE_PREFIX, 29211) +HANDLE_BAT(APINT_TYPE_PREFIX, 29212) +HANDLE_BAT(APINT_TYPE_PREFIX, 29213) +HANDLE_BAT(APINT_TYPE_PREFIX, 29214) +HANDLE_BAT(APINT_TYPE_PREFIX, 29215) +HANDLE_BAT(APINT_TYPE_PREFIX, 29216) +HANDLE_BAT(APINT_TYPE_PREFIX, 29217) +HANDLE_BAT(APINT_TYPE_PREFIX, 29218) +HANDLE_BAT(APINT_TYPE_PREFIX, 29219) +HANDLE_BAT(APINT_TYPE_PREFIX, 29220) +HANDLE_BAT(APINT_TYPE_PREFIX, 29221) +HANDLE_BAT(APINT_TYPE_PREFIX, 29222) +HANDLE_BAT(APINT_TYPE_PREFIX, 29223) +HANDLE_BAT(APINT_TYPE_PREFIX, 29224) +HANDLE_BAT(APINT_TYPE_PREFIX, 29225) +HANDLE_BAT(APINT_TYPE_PREFIX, 29226) +HANDLE_BAT(APINT_TYPE_PREFIX, 29227) +HANDLE_BAT(APINT_TYPE_PREFIX, 29228) +HANDLE_BAT(APINT_TYPE_PREFIX, 29229) +HANDLE_BAT(APINT_TYPE_PREFIX, 29230) +HANDLE_BAT(APINT_TYPE_PREFIX, 29231) +HANDLE_BAT(APINT_TYPE_PREFIX, 29232) +HANDLE_BAT(APINT_TYPE_PREFIX, 29233) +HANDLE_BAT(APINT_TYPE_PREFIX, 29234) +HANDLE_BAT(APINT_TYPE_PREFIX, 29235) +HANDLE_BAT(APINT_TYPE_PREFIX, 29236) +HANDLE_BAT(APINT_TYPE_PREFIX, 29237) +HANDLE_BAT(APINT_TYPE_PREFIX, 29238) +HANDLE_BAT(APINT_TYPE_PREFIX, 29239) +HANDLE_BAT(APINT_TYPE_PREFIX, 29240) +HANDLE_BAT(APINT_TYPE_PREFIX, 29241) +HANDLE_BAT(APINT_TYPE_PREFIX, 29242) +HANDLE_BAT(APINT_TYPE_PREFIX, 29243) +HANDLE_BAT(APINT_TYPE_PREFIX, 29244) +HANDLE_BAT(APINT_TYPE_PREFIX, 29245) +HANDLE_BAT(APINT_TYPE_PREFIX, 29246) +HANDLE_BAT(APINT_TYPE_PREFIX, 29247) +HANDLE_BAT(APINT_TYPE_PREFIX, 29248) +HANDLE_BAT(APINT_TYPE_PREFIX, 29249) +HANDLE_BAT(APINT_TYPE_PREFIX, 29250) +HANDLE_BAT(APINT_TYPE_PREFIX, 29251) +HANDLE_BAT(APINT_TYPE_PREFIX, 29252) +HANDLE_BAT(APINT_TYPE_PREFIX, 29253) +HANDLE_BAT(APINT_TYPE_PREFIX, 29254) +HANDLE_BAT(APINT_TYPE_PREFIX, 29255) +HANDLE_BAT(APINT_TYPE_PREFIX, 29256) +HANDLE_BAT(APINT_TYPE_PREFIX, 29257) +HANDLE_BAT(APINT_TYPE_PREFIX, 29258) +HANDLE_BAT(APINT_TYPE_PREFIX, 29259) +HANDLE_BAT(APINT_TYPE_PREFIX, 29260) +HANDLE_BAT(APINT_TYPE_PREFIX, 29261) +HANDLE_BAT(APINT_TYPE_PREFIX, 29262) +HANDLE_BAT(APINT_TYPE_PREFIX, 29263) +HANDLE_BAT(APINT_TYPE_PREFIX, 29264) +HANDLE_BAT(APINT_TYPE_PREFIX, 29265) +HANDLE_BAT(APINT_TYPE_PREFIX, 29266) +HANDLE_BAT(APINT_TYPE_PREFIX, 29267) +HANDLE_BAT(APINT_TYPE_PREFIX, 29268) +HANDLE_BAT(APINT_TYPE_PREFIX, 29269) +HANDLE_BAT(APINT_TYPE_PREFIX, 29270) +HANDLE_BAT(APINT_TYPE_PREFIX, 29271) +HANDLE_BAT(APINT_TYPE_PREFIX, 29272) +HANDLE_BAT(APINT_TYPE_PREFIX, 29273) +HANDLE_BAT(APINT_TYPE_PREFIX, 29274) +HANDLE_BAT(APINT_TYPE_PREFIX, 29275) +HANDLE_BAT(APINT_TYPE_PREFIX, 29276) +HANDLE_BAT(APINT_TYPE_PREFIX, 29277) +HANDLE_BAT(APINT_TYPE_PREFIX, 29278) +HANDLE_BAT(APINT_TYPE_PREFIX, 29279) +HANDLE_BAT(APINT_TYPE_PREFIX, 29280) +HANDLE_BAT(APINT_TYPE_PREFIX, 29281) +HANDLE_BAT(APINT_TYPE_PREFIX, 29282) +HANDLE_BAT(APINT_TYPE_PREFIX, 29283) +HANDLE_BAT(APINT_TYPE_PREFIX, 29284) +HANDLE_BAT(APINT_TYPE_PREFIX, 29285) +HANDLE_BAT(APINT_TYPE_PREFIX, 29286) +HANDLE_BAT(APINT_TYPE_PREFIX, 29287) +HANDLE_BAT(APINT_TYPE_PREFIX, 29288) +HANDLE_BAT(APINT_TYPE_PREFIX, 29289) +HANDLE_BAT(APINT_TYPE_PREFIX, 29290) +HANDLE_BAT(APINT_TYPE_PREFIX, 29291) +HANDLE_BAT(APINT_TYPE_PREFIX, 29292) +HANDLE_BAT(APINT_TYPE_PREFIX, 29293) +HANDLE_BAT(APINT_TYPE_PREFIX, 29294) +HANDLE_BAT(APINT_TYPE_PREFIX, 29295) +HANDLE_BAT(APINT_TYPE_PREFIX, 29296) +HANDLE_BAT(APINT_TYPE_PREFIX, 29297) +HANDLE_BAT(APINT_TYPE_PREFIX, 29298) +HANDLE_BAT(APINT_TYPE_PREFIX, 29299) +HANDLE_BAT(APINT_TYPE_PREFIX, 29300) +HANDLE_BAT(APINT_TYPE_PREFIX, 29301) +HANDLE_BAT(APINT_TYPE_PREFIX, 29302) +HANDLE_BAT(APINT_TYPE_PREFIX, 29303) +HANDLE_BAT(APINT_TYPE_PREFIX, 29304) +HANDLE_BAT(APINT_TYPE_PREFIX, 29305) +HANDLE_BAT(APINT_TYPE_PREFIX, 29306) +HANDLE_BAT(APINT_TYPE_PREFIX, 29307) +HANDLE_BAT(APINT_TYPE_PREFIX, 29308) +HANDLE_BAT(APINT_TYPE_PREFIX, 29309) +HANDLE_BAT(APINT_TYPE_PREFIX, 29310) +HANDLE_BAT(APINT_TYPE_PREFIX, 29311) +HANDLE_BAT(APINT_TYPE_PREFIX, 29312) +HANDLE_BAT(APINT_TYPE_PREFIX, 29313) +HANDLE_BAT(APINT_TYPE_PREFIX, 29314) +HANDLE_BAT(APINT_TYPE_PREFIX, 29315) +HANDLE_BAT(APINT_TYPE_PREFIX, 29316) +HANDLE_BAT(APINT_TYPE_PREFIX, 29317) +HANDLE_BAT(APINT_TYPE_PREFIX, 29318) +HANDLE_BAT(APINT_TYPE_PREFIX, 29319) +HANDLE_BAT(APINT_TYPE_PREFIX, 29320) +HANDLE_BAT(APINT_TYPE_PREFIX, 29321) +HANDLE_BAT(APINT_TYPE_PREFIX, 29322) +HANDLE_BAT(APINT_TYPE_PREFIX, 29323) +HANDLE_BAT(APINT_TYPE_PREFIX, 29324) +HANDLE_BAT(APINT_TYPE_PREFIX, 29325) +HANDLE_BAT(APINT_TYPE_PREFIX, 29326) +HANDLE_BAT(APINT_TYPE_PREFIX, 29327) +HANDLE_BAT(APINT_TYPE_PREFIX, 29328) +HANDLE_BAT(APINT_TYPE_PREFIX, 29329) +HANDLE_BAT(APINT_TYPE_PREFIX, 29330) +HANDLE_BAT(APINT_TYPE_PREFIX, 29331) +HANDLE_BAT(APINT_TYPE_PREFIX, 29332) +HANDLE_BAT(APINT_TYPE_PREFIX, 29333) +HANDLE_BAT(APINT_TYPE_PREFIX, 29334) +HANDLE_BAT(APINT_TYPE_PREFIX, 29335) +HANDLE_BAT(APINT_TYPE_PREFIX, 29336) +HANDLE_BAT(APINT_TYPE_PREFIX, 29337) +HANDLE_BAT(APINT_TYPE_PREFIX, 29338) +HANDLE_BAT(APINT_TYPE_PREFIX, 29339) +HANDLE_BAT(APINT_TYPE_PREFIX, 29340) +HANDLE_BAT(APINT_TYPE_PREFIX, 29341) +HANDLE_BAT(APINT_TYPE_PREFIX, 29342) +HANDLE_BAT(APINT_TYPE_PREFIX, 29343) +HANDLE_BAT(APINT_TYPE_PREFIX, 29344) +HANDLE_BAT(APINT_TYPE_PREFIX, 29345) +HANDLE_BAT(APINT_TYPE_PREFIX, 29346) +HANDLE_BAT(APINT_TYPE_PREFIX, 29347) +HANDLE_BAT(APINT_TYPE_PREFIX, 29348) +HANDLE_BAT(APINT_TYPE_PREFIX, 29349) +HANDLE_BAT(APINT_TYPE_PREFIX, 29350) +HANDLE_BAT(APINT_TYPE_PREFIX, 29351) +HANDLE_BAT(APINT_TYPE_PREFIX, 29352) +HANDLE_BAT(APINT_TYPE_PREFIX, 29353) +HANDLE_BAT(APINT_TYPE_PREFIX, 29354) +HANDLE_BAT(APINT_TYPE_PREFIX, 29355) +HANDLE_BAT(APINT_TYPE_PREFIX, 29356) +HANDLE_BAT(APINT_TYPE_PREFIX, 29357) +HANDLE_BAT(APINT_TYPE_PREFIX, 29358) +HANDLE_BAT(APINT_TYPE_PREFIX, 29359) +HANDLE_BAT(APINT_TYPE_PREFIX, 29360) +HANDLE_BAT(APINT_TYPE_PREFIX, 29361) +HANDLE_BAT(APINT_TYPE_PREFIX, 29362) +HANDLE_BAT(APINT_TYPE_PREFIX, 29363) +HANDLE_BAT(APINT_TYPE_PREFIX, 29364) +HANDLE_BAT(APINT_TYPE_PREFIX, 29365) +HANDLE_BAT(APINT_TYPE_PREFIX, 29366) +HANDLE_BAT(APINT_TYPE_PREFIX, 29367) +HANDLE_BAT(APINT_TYPE_PREFIX, 29368) +HANDLE_BAT(APINT_TYPE_PREFIX, 29369) +HANDLE_BAT(APINT_TYPE_PREFIX, 29370) +HANDLE_BAT(APINT_TYPE_PREFIX, 29371) +HANDLE_BAT(APINT_TYPE_PREFIX, 29372) +HANDLE_BAT(APINT_TYPE_PREFIX, 29373) +HANDLE_BAT(APINT_TYPE_PREFIX, 29374) +HANDLE_BAT(APINT_TYPE_PREFIX, 29375) +HANDLE_BAT(APINT_TYPE_PREFIX, 29376) +HANDLE_BAT(APINT_TYPE_PREFIX, 29377) +HANDLE_BAT(APINT_TYPE_PREFIX, 29378) +HANDLE_BAT(APINT_TYPE_PREFIX, 29379) +HANDLE_BAT(APINT_TYPE_PREFIX, 29380) +HANDLE_BAT(APINT_TYPE_PREFIX, 29381) +HANDLE_BAT(APINT_TYPE_PREFIX, 29382) +HANDLE_BAT(APINT_TYPE_PREFIX, 29383) +HANDLE_BAT(APINT_TYPE_PREFIX, 29384) +HANDLE_BAT(APINT_TYPE_PREFIX, 29385) +HANDLE_BAT(APINT_TYPE_PREFIX, 29386) +HANDLE_BAT(APINT_TYPE_PREFIX, 29387) +HANDLE_BAT(APINT_TYPE_PREFIX, 29388) +HANDLE_BAT(APINT_TYPE_PREFIX, 29389) +HANDLE_BAT(APINT_TYPE_PREFIX, 29390) +HANDLE_BAT(APINT_TYPE_PREFIX, 29391) +HANDLE_BAT(APINT_TYPE_PREFIX, 29392) +HANDLE_BAT(APINT_TYPE_PREFIX, 29393) +HANDLE_BAT(APINT_TYPE_PREFIX, 29394) +HANDLE_BAT(APINT_TYPE_PREFIX, 29395) +HANDLE_BAT(APINT_TYPE_PREFIX, 29396) +HANDLE_BAT(APINT_TYPE_PREFIX, 29397) +HANDLE_BAT(APINT_TYPE_PREFIX, 29398) +HANDLE_BAT(APINT_TYPE_PREFIX, 29399) +HANDLE_BAT(APINT_TYPE_PREFIX, 29400) +HANDLE_BAT(APINT_TYPE_PREFIX, 29401) +HANDLE_BAT(APINT_TYPE_PREFIX, 29402) +HANDLE_BAT(APINT_TYPE_PREFIX, 29403) +HANDLE_BAT(APINT_TYPE_PREFIX, 29404) +HANDLE_BAT(APINT_TYPE_PREFIX, 29405) +HANDLE_BAT(APINT_TYPE_PREFIX, 29406) +HANDLE_BAT(APINT_TYPE_PREFIX, 29407) +HANDLE_BAT(APINT_TYPE_PREFIX, 29408) +HANDLE_BAT(APINT_TYPE_PREFIX, 29409) +HANDLE_BAT(APINT_TYPE_PREFIX, 29410) +HANDLE_BAT(APINT_TYPE_PREFIX, 29411) +HANDLE_BAT(APINT_TYPE_PREFIX, 29412) +HANDLE_BAT(APINT_TYPE_PREFIX, 29413) +HANDLE_BAT(APINT_TYPE_PREFIX, 29414) +HANDLE_BAT(APINT_TYPE_PREFIX, 29415) +HANDLE_BAT(APINT_TYPE_PREFIX, 29416) +HANDLE_BAT(APINT_TYPE_PREFIX, 29417) +HANDLE_BAT(APINT_TYPE_PREFIX, 29418) +HANDLE_BAT(APINT_TYPE_PREFIX, 29419) +HANDLE_BAT(APINT_TYPE_PREFIX, 29420) +HANDLE_BAT(APINT_TYPE_PREFIX, 29421) +HANDLE_BAT(APINT_TYPE_PREFIX, 29422) +HANDLE_BAT(APINT_TYPE_PREFIX, 29423) +HANDLE_BAT(APINT_TYPE_PREFIX, 29424) +HANDLE_BAT(APINT_TYPE_PREFIX, 29425) +HANDLE_BAT(APINT_TYPE_PREFIX, 29426) +HANDLE_BAT(APINT_TYPE_PREFIX, 29427) +HANDLE_BAT(APINT_TYPE_PREFIX, 29428) +HANDLE_BAT(APINT_TYPE_PREFIX, 29429) +HANDLE_BAT(APINT_TYPE_PREFIX, 29430) +HANDLE_BAT(APINT_TYPE_PREFIX, 29431) +HANDLE_BAT(APINT_TYPE_PREFIX, 29432) +HANDLE_BAT(APINT_TYPE_PREFIX, 29433) +HANDLE_BAT(APINT_TYPE_PREFIX, 29434) +HANDLE_BAT(APINT_TYPE_PREFIX, 29435) +HANDLE_BAT(APINT_TYPE_PREFIX, 29436) +HANDLE_BAT(APINT_TYPE_PREFIX, 29437) +HANDLE_BAT(APINT_TYPE_PREFIX, 29438) +HANDLE_BAT(APINT_TYPE_PREFIX, 29439) +HANDLE_BAT(APINT_TYPE_PREFIX, 29440) +HANDLE_BAT(APINT_TYPE_PREFIX, 29441) +HANDLE_BAT(APINT_TYPE_PREFIX, 29442) +HANDLE_BAT(APINT_TYPE_PREFIX, 29443) +HANDLE_BAT(APINT_TYPE_PREFIX, 29444) +HANDLE_BAT(APINT_TYPE_PREFIX, 29445) +HANDLE_BAT(APINT_TYPE_PREFIX, 29446) +HANDLE_BAT(APINT_TYPE_PREFIX, 29447) +HANDLE_BAT(APINT_TYPE_PREFIX, 29448) +HANDLE_BAT(APINT_TYPE_PREFIX, 29449) +HANDLE_BAT(APINT_TYPE_PREFIX, 29450) +HANDLE_BAT(APINT_TYPE_PREFIX, 29451) +HANDLE_BAT(APINT_TYPE_PREFIX, 29452) +HANDLE_BAT(APINT_TYPE_PREFIX, 29453) +HANDLE_BAT(APINT_TYPE_PREFIX, 29454) +HANDLE_BAT(APINT_TYPE_PREFIX, 29455) +HANDLE_BAT(APINT_TYPE_PREFIX, 29456) +HANDLE_BAT(APINT_TYPE_PREFIX, 29457) +HANDLE_BAT(APINT_TYPE_PREFIX, 29458) +HANDLE_BAT(APINT_TYPE_PREFIX, 29459) +HANDLE_BAT(APINT_TYPE_PREFIX, 29460) +HANDLE_BAT(APINT_TYPE_PREFIX, 29461) +HANDLE_BAT(APINT_TYPE_PREFIX, 29462) +HANDLE_BAT(APINT_TYPE_PREFIX, 29463) +HANDLE_BAT(APINT_TYPE_PREFIX, 29464) +HANDLE_BAT(APINT_TYPE_PREFIX, 29465) +HANDLE_BAT(APINT_TYPE_PREFIX, 29466) +HANDLE_BAT(APINT_TYPE_PREFIX, 29467) +HANDLE_BAT(APINT_TYPE_PREFIX, 29468) +HANDLE_BAT(APINT_TYPE_PREFIX, 29469) +HANDLE_BAT(APINT_TYPE_PREFIX, 29470) +HANDLE_BAT(APINT_TYPE_PREFIX, 29471) +HANDLE_BAT(APINT_TYPE_PREFIX, 29472) +HANDLE_BAT(APINT_TYPE_PREFIX, 29473) +HANDLE_BAT(APINT_TYPE_PREFIX, 29474) +HANDLE_BAT(APINT_TYPE_PREFIX, 29475) +HANDLE_BAT(APINT_TYPE_PREFIX, 29476) +HANDLE_BAT(APINT_TYPE_PREFIX, 29477) +HANDLE_BAT(APINT_TYPE_PREFIX, 29478) +HANDLE_BAT(APINT_TYPE_PREFIX, 29479) +HANDLE_BAT(APINT_TYPE_PREFIX, 29480) +HANDLE_BAT(APINT_TYPE_PREFIX, 29481) +HANDLE_BAT(APINT_TYPE_PREFIX, 29482) +HANDLE_BAT(APINT_TYPE_PREFIX, 29483) +HANDLE_BAT(APINT_TYPE_PREFIX, 29484) +HANDLE_BAT(APINT_TYPE_PREFIX, 29485) +HANDLE_BAT(APINT_TYPE_PREFIX, 29486) +HANDLE_BAT(APINT_TYPE_PREFIX, 29487) +HANDLE_BAT(APINT_TYPE_PREFIX, 29488) +HANDLE_BAT(APINT_TYPE_PREFIX, 29489) +HANDLE_BAT(APINT_TYPE_PREFIX, 29490) +HANDLE_BAT(APINT_TYPE_PREFIX, 29491) +HANDLE_BAT(APINT_TYPE_PREFIX, 29492) +HANDLE_BAT(APINT_TYPE_PREFIX, 29493) +HANDLE_BAT(APINT_TYPE_PREFIX, 29494) +HANDLE_BAT(APINT_TYPE_PREFIX, 29495) +HANDLE_BAT(APINT_TYPE_PREFIX, 29496) +HANDLE_BAT(APINT_TYPE_PREFIX, 29497) +HANDLE_BAT(APINT_TYPE_PREFIX, 29498) +HANDLE_BAT(APINT_TYPE_PREFIX, 29499) +HANDLE_BAT(APINT_TYPE_PREFIX, 29500) +HANDLE_BAT(APINT_TYPE_PREFIX, 29501) +HANDLE_BAT(APINT_TYPE_PREFIX, 29502) +HANDLE_BAT(APINT_TYPE_PREFIX, 29503) +HANDLE_BAT(APINT_TYPE_PREFIX, 29504) +HANDLE_BAT(APINT_TYPE_PREFIX, 29505) +HANDLE_BAT(APINT_TYPE_PREFIX, 29506) +HANDLE_BAT(APINT_TYPE_PREFIX, 29507) +HANDLE_BAT(APINT_TYPE_PREFIX, 29508) +HANDLE_BAT(APINT_TYPE_PREFIX, 29509) +HANDLE_BAT(APINT_TYPE_PREFIX, 29510) +HANDLE_BAT(APINT_TYPE_PREFIX, 29511) +HANDLE_BAT(APINT_TYPE_PREFIX, 29512) +HANDLE_BAT(APINT_TYPE_PREFIX, 29513) +HANDLE_BAT(APINT_TYPE_PREFIX, 29514) +HANDLE_BAT(APINT_TYPE_PREFIX, 29515) +HANDLE_BAT(APINT_TYPE_PREFIX, 29516) +HANDLE_BAT(APINT_TYPE_PREFIX, 29517) +HANDLE_BAT(APINT_TYPE_PREFIX, 29518) +HANDLE_BAT(APINT_TYPE_PREFIX, 29519) +HANDLE_BAT(APINT_TYPE_PREFIX, 29520) +HANDLE_BAT(APINT_TYPE_PREFIX, 29521) +HANDLE_BAT(APINT_TYPE_PREFIX, 29522) +HANDLE_BAT(APINT_TYPE_PREFIX, 29523) +HANDLE_BAT(APINT_TYPE_PREFIX, 29524) +HANDLE_BAT(APINT_TYPE_PREFIX, 29525) +HANDLE_BAT(APINT_TYPE_PREFIX, 29526) +HANDLE_BAT(APINT_TYPE_PREFIX, 29527) +HANDLE_BAT(APINT_TYPE_PREFIX, 29528) +HANDLE_BAT(APINT_TYPE_PREFIX, 29529) +HANDLE_BAT(APINT_TYPE_PREFIX, 29530) +HANDLE_BAT(APINT_TYPE_PREFIX, 29531) +HANDLE_BAT(APINT_TYPE_PREFIX, 29532) +HANDLE_BAT(APINT_TYPE_PREFIX, 29533) +HANDLE_BAT(APINT_TYPE_PREFIX, 29534) +HANDLE_BAT(APINT_TYPE_PREFIX, 29535) +HANDLE_BAT(APINT_TYPE_PREFIX, 29536) +HANDLE_BAT(APINT_TYPE_PREFIX, 29537) +HANDLE_BAT(APINT_TYPE_PREFIX, 29538) +HANDLE_BAT(APINT_TYPE_PREFIX, 29539) +HANDLE_BAT(APINT_TYPE_PREFIX, 29540) +HANDLE_BAT(APINT_TYPE_PREFIX, 29541) +HANDLE_BAT(APINT_TYPE_PREFIX, 29542) +HANDLE_BAT(APINT_TYPE_PREFIX, 29543) +HANDLE_BAT(APINT_TYPE_PREFIX, 29544) +HANDLE_BAT(APINT_TYPE_PREFIX, 29545) +HANDLE_BAT(APINT_TYPE_PREFIX, 29546) +HANDLE_BAT(APINT_TYPE_PREFIX, 29547) +HANDLE_BAT(APINT_TYPE_PREFIX, 29548) +HANDLE_BAT(APINT_TYPE_PREFIX, 29549) +HANDLE_BAT(APINT_TYPE_PREFIX, 29550) +HANDLE_BAT(APINT_TYPE_PREFIX, 29551) +HANDLE_BAT(APINT_TYPE_PREFIX, 29552) +HANDLE_BAT(APINT_TYPE_PREFIX, 29553) +HANDLE_BAT(APINT_TYPE_PREFIX, 29554) +HANDLE_BAT(APINT_TYPE_PREFIX, 29555) +HANDLE_BAT(APINT_TYPE_PREFIX, 29556) +HANDLE_BAT(APINT_TYPE_PREFIX, 29557) +HANDLE_BAT(APINT_TYPE_PREFIX, 29558) +HANDLE_BAT(APINT_TYPE_PREFIX, 29559) +HANDLE_BAT(APINT_TYPE_PREFIX, 29560) +HANDLE_BAT(APINT_TYPE_PREFIX, 29561) +HANDLE_BAT(APINT_TYPE_PREFIX, 29562) +HANDLE_BAT(APINT_TYPE_PREFIX, 29563) +HANDLE_BAT(APINT_TYPE_PREFIX, 29564) +HANDLE_BAT(APINT_TYPE_PREFIX, 29565) +HANDLE_BAT(APINT_TYPE_PREFIX, 29566) +HANDLE_BAT(APINT_TYPE_PREFIX, 29567) +HANDLE_BAT(APINT_TYPE_PREFIX, 29568) +HANDLE_BAT(APINT_TYPE_PREFIX, 29569) +HANDLE_BAT(APINT_TYPE_PREFIX, 29570) +HANDLE_BAT(APINT_TYPE_PREFIX, 29571) +HANDLE_BAT(APINT_TYPE_PREFIX, 29572) +HANDLE_BAT(APINT_TYPE_PREFIX, 29573) +HANDLE_BAT(APINT_TYPE_PREFIX, 29574) +HANDLE_BAT(APINT_TYPE_PREFIX, 29575) +HANDLE_BAT(APINT_TYPE_PREFIX, 29576) +HANDLE_BAT(APINT_TYPE_PREFIX, 29577) +HANDLE_BAT(APINT_TYPE_PREFIX, 29578) +HANDLE_BAT(APINT_TYPE_PREFIX, 29579) +HANDLE_BAT(APINT_TYPE_PREFIX, 29580) +HANDLE_BAT(APINT_TYPE_PREFIX, 29581) +HANDLE_BAT(APINT_TYPE_PREFIX, 29582) +HANDLE_BAT(APINT_TYPE_PREFIX, 29583) +HANDLE_BAT(APINT_TYPE_PREFIX, 29584) +HANDLE_BAT(APINT_TYPE_PREFIX, 29585) +HANDLE_BAT(APINT_TYPE_PREFIX, 29586) +HANDLE_BAT(APINT_TYPE_PREFIX, 29587) +HANDLE_BAT(APINT_TYPE_PREFIX, 29588) +HANDLE_BAT(APINT_TYPE_PREFIX, 29589) +HANDLE_BAT(APINT_TYPE_PREFIX, 29590) +HANDLE_BAT(APINT_TYPE_PREFIX, 29591) +HANDLE_BAT(APINT_TYPE_PREFIX, 29592) +HANDLE_BAT(APINT_TYPE_PREFIX, 29593) +HANDLE_BAT(APINT_TYPE_PREFIX, 29594) +HANDLE_BAT(APINT_TYPE_PREFIX, 29595) +HANDLE_BAT(APINT_TYPE_PREFIX, 29596) +HANDLE_BAT(APINT_TYPE_PREFIX, 29597) +HANDLE_BAT(APINT_TYPE_PREFIX, 29598) +HANDLE_BAT(APINT_TYPE_PREFIX, 29599) +HANDLE_BAT(APINT_TYPE_PREFIX, 29600) +HANDLE_BAT(APINT_TYPE_PREFIX, 29601) +HANDLE_BAT(APINT_TYPE_PREFIX, 29602) +HANDLE_BAT(APINT_TYPE_PREFIX, 29603) +HANDLE_BAT(APINT_TYPE_PREFIX, 29604) +HANDLE_BAT(APINT_TYPE_PREFIX, 29605) +HANDLE_BAT(APINT_TYPE_PREFIX, 29606) +HANDLE_BAT(APINT_TYPE_PREFIX, 29607) +HANDLE_BAT(APINT_TYPE_PREFIX, 29608) +HANDLE_BAT(APINT_TYPE_PREFIX, 29609) +HANDLE_BAT(APINT_TYPE_PREFIX, 29610) +HANDLE_BAT(APINT_TYPE_PREFIX, 29611) +HANDLE_BAT(APINT_TYPE_PREFIX, 29612) +HANDLE_BAT(APINT_TYPE_PREFIX, 29613) +HANDLE_BAT(APINT_TYPE_PREFIX, 29614) +HANDLE_BAT(APINT_TYPE_PREFIX, 29615) +HANDLE_BAT(APINT_TYPE_PREFIX, 29616) +HANDLE_BAT(APINT_TYPE_PREFIX, 29617) +HANDLE_BAT(APINT_TYPE_PREFIX, 29618) +HANDLE_BAT(APINT_TYPE_PREFIX, 29619) +HANDLE_BAT(APINT_TYPE_PREFIX, 29620) +HANDLE_BAT(APINT_TYPE_PREFIX, 29621) +HANDLE_BAT(APINT_TYPE_PREFIX, 29622) +HANDLE_BAT(APINT_TYPE_PREFIX, 29623) +HANDLE_BAT(APINT_TYPE_PREFIX, 29624) +HANDLE_BAT(APINT_TYPE_PREFIX, 29625) +HANDLE_BAT(APINT_TYPE_PREFIX, 29626) +HANDLE_BAT(APINT_TYPE_PREFIX, 29627) +HANDLE_BAT(APINT_TYPE_PREFIX, 29628) +HANDLE_BAT(APINT_TYPE_PREFIX, 29629) +HANDLE_BAT(APINT_TYPE_PREFIX, 29630) +HANDLE_BAT(APINT_TYPE_PREFIX, 29631) +HANDLE_BAT(APINT_TYPE_PREFIX, 29632) +HANDLE_BAT(APINT_TYPE_PREFIX, 29633) +HANDLE_BAT(APINT_TYPE_PREFIX, 29634) +HANDLE_BAT(APINT_TYPE_PREFIX, 29635) +HANDLE_BAT(APINT_TYPE_PREFIX, 29636) +HANDLE_BAT(APINT_TYPE_PREFIX, 29637) +HANDLE_BAT(APINT_TYPE_PREFIX, 29638) +HANDLE_BAT(APINT_TYPE_PREFIX, 29639) +HANDLE_BAT(APINT_TYPE_PREFIX, 29640) +HANDLE_BAT(APINT_TYPE_PREFIX, 29641) +HANDLE_BAT(APINT_TYPE_PREFIX, 29642) +HANDLE_BAT(APINT_TYPE_PREFIX, 29643) +HANDLE_BAT(APINT_TYPE_PREFIX, 29644) +HANDLE_BAT(APINT_TYPE_PREFIX, 29645) +HANDLE_BAT(APINT_TYPE_PREFIX, 29646) +HANDLE_BAT(APINT_TYPE_PREFIX, 29647) +HANDLE_BAT(APINT_TYPE_PREFIX, 29648) +HANDLE_BAT(APINT_TYPE_PREFIX, 29649) +HANDLE_BAT(APINT_TYPE_PREFIX, 29650) +HANDLE_BAT(APINT_TYPE_PREFIX, 29651) +HANDLE_BAT(APINT_TYPE_PREFIX, 29652) +HANDLE_BAT(APINT_TYPE_PREFIX, 29653) +HANDLE_BAT(APINT_TYPE_PREFIX, 29654) +HANDLE_BAT(APINT_TYPE_PREFIX, 29655) +HANDLE_BAT(APINT_TYPE_PREFIX, 29656) +HANDLE_BAT(APINT_TYPE_PREFIX, 29657) +HANDLE_BAT(APINT_TYPE_PREFIX, 29658) +HANDLE_BAT(APINT_TYPE_PREFIX, 29659) +HANDLE_BAT(APINT_TYPE_PREFIX, 29660) +HANDLE_BAT(APINT_TYPE_PREFIX, 29661) +HANDLE_BAT(APINT_TYPE_PREFIX, 29662) +HANDLE_BAT(APINT_TYPE_PREFIX, 29663) +HANDLE_BAT(APINT_TYPE_PREFIX, 29664) +HANDLE_BAT(APINT_TYPE_PREFIX, 29665) +HANDLE_BAT(APINT_TYPE_PREFIX, 29666) +HANDLE_BAT(APINT_TYPE_PREFIX, 29667) +HANDLE_BAT(APINT_TYPE_PREFIX, 29668) +HANDLE_BAT(APINT_TYPE_PREFIX, 29669) +HANDLE_BAT(APINT_TYPE_PREFIX, 29670) +HANDLE_BAT(APINT_TYPE_PREFIX, 29671) +HANDLE_BAT(APINT_TYPE_PREFIX, 29672) +HANDLE_BAT(APINT_TYPE_PREFIX, 29673) +HANDLE_BAT(APINT_TYPE_PREFIX, 29674) +HANDLE_BAT(APINT_TYPE_PREFIX, 29675) +HANDLE_BAT(APINT_TYPE_PREFIX, 29676) +HANDLE_BAT(APINT_TYPE_PREFIX, 29677) +HANDLE_BAT(APINT_TYPE_PREFIX, 29678) +HANDLE_BAT(APINT_TYPE_PREFIX, 29679) +HANDLE_BAT(APINT_TYPE_PREFIX, 29680) +HANDLE_BAT(APINT_TYPE_PREFIX, 29681) +HANDLE_BAT(APINT_TYPE_PREFIX, 29682) +HANDLE_BAT(APINT_TYPE_PREFIX, 29683) +HANDLE_BAT(APINT_TYPE_PREFIX, 29684) +HANDLE_BAT(APINT_TYPE_PREFIX, 29685) +HANDLE_BAT(APINT_TYPE_PREFIX, 29686) +HANDLE_BAT(APINT_TYPE_PREFIX, 29687) +HANDLE_BAT(APINT_TYPE_PREFIX, 29688) +HANDLE_BAT(APINT_TYPE_PREFIX, 29689) +HANDLE_BAT(APINT_TYPE_PREFIX, 29690) +HANDLE_BAT(APINT_TYPE_PREFIX, 29691) +HANDLE_BAT(APINT_TYPE_PREFIX, 29692) +HANDLE_BAT(APINT_TYPE_PREFIX, 29693) +HANDLE_BAT(APINT_TYPE_PREFIX, 29694) +HANDLE_BAT(APINT_TYPE_PREFIX, 29695) +HANDLE_BAT(APINT_TYPE_PREFIX, 29696) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 29 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 29697) +HANDLE_BAT(, 29698) +HANDLE_BAT(, 29699) +HANDLE_BAT(, 29700) +HANDLE_BAT(, 29701) +HANDLE_BAT(, 29702) +HANDLE_BAT(, 29703) +HANDLE_BAT(, 29704) +HANDLE_BAT(, 29705) +HANDLE_BAT(, 29706) +HANDLE_BAT(, 29707) +HANDLE_BAT(, 29708) +HANDLE_BAT(, 29709) +HANDLE_BAT(, 29710) +HANDLE_BAT(, 29711) +HANDLE_BAT(, 29712) +HANDLE_BAT(, 29713) +HANDLE_BAT(, 29714) +HANDLE_BAT(, 29715) +HANDLE_BAT(, 29716) +HANDLE_BAT(, 29717) +HANDLE_BAT(, 29718) +HANDLE_BAT(, 29719) +HANDLE_BAT(, 29720) +HANDLE_BAT(, 29721) +HANDLE_BAT(, 29722) +HANDLE_BAT(, 29723) +HANDLE_BAT(, 29724) +HANDLE_BAT(, 29725) +HANDLE_BAT(, 29726) +HANDLE_BAT(, 29727) +HANDLE_BAT(, 29728) +HANDLE_BAT(, 29729) +HANDLE_BAT(, 29730) +HANDLE_BAT(, 29731) +HANDLE_BAT(, 29732) +HANDLE_BAT(, 29733) +HANDLE_BAT(, 29734) +HANDLE_BAT(, 29735) +HANDLE_BAT(, 29736) +HANDLE_BAT(, 29737) +HANDLE_BAT(, 29738) +HANDLE_BAT(, 29739) +HANDLE_BAT(, 29740) +HANDLE_BAT(, 29741) +HANDLE_BAT(, 29742) +HANDLE_BAT(, 29743) +HANDLE_BAT(, 29744) +HANDLE_BAT(, 29745) +HANDLE_BAT(, 29746) +HANDLE_BAT(, 29747) +HANDLE_BAT(, 29748) +HANDLE_BAT(, 29749) +HANDLE_BAT(, 29750) +HANDLE_BAT(, 29751) +HANDLE_BAT(, 29752) +HANDLE_BAT(, 29753) +HANDLE_BAT(, 29754) +HANDLE_BAT(, 29755) +HANDLE_BAT(, 29756) +HANDLE_BAT(, 29757) +HANDLE_BAT(, 29758) +HANDLE_BAT(, 29759) +HANDLE_BAT(, 29760) +HANDLE_BAT(, 29761) +HANDLE_BAT(, 29762) +HANDLE_BAT(, 29763) +HANDLE_BAT(, 29764) +HANDLE_BAT(, 29765) +HANDLE_BAT(, 29766) +HANDLE_BAT(, 29767) +HANDLE_BAT(, 29768) +HANDLE_BAT(, 29769) +HANDLE_BAT(, 29770) +HANDLE_BAT(, 29771) +HANDLE_BAT(, 29772) +HANDLE_BAT(, 29773) +HANDLE_BAT(, 29774) +HANDLE_BAT(, 29775) +HANDLE_BAT(, 29776) +HANDLE_BAT(, 29777) +HANDLE_BAT(, 29778) +HANDLE_BAT(, 29779) +HANDLE_BAT(, 29780) +HANDLE_BAT(, 29781) +HANDLE_BAT(, 29782) +HANDLE_BAT(, 29783) +HANDLE_BAT(, 29784) +HANDLE_BAT(, 29785) +HANDLE_BAT(, 29786) +HANDLE_BAT(, 29787) +HANDLE_BAT(, 29788) +HANDLE_BAT(, 29789) +HANDLE_BAT(, 29790) +HANDLE_BAT(, 29791) +HANDLE_BAT(, 29792) +HANDLE_BAT(, 29793) +HANDLE_BAT(, 29794) +HANDLE_BAT(, 29795) +HANDLE_BAT(, 29796) +HANDLE_BAT(, 29797) +HANDLE_BAT(, 29798) +HANDLE_BAT(, 29799) +HANDLE_BAT(, 29800) +HANDLE_BAT(, 29801) +HANDLE_BAT(, 29802) +HANDLE_BAT(, 29803) +HANDLE_BAT(, 29804) +HANDLE_BAT(, 29805) +HANDLE_BAT(, 29806) +HANDLE_BAT(, 29807) +HANDLE_BAT(, 29808) +HANDLE_BAT(, 29809) +HANDLE_BAT(, 29810) +HANDLE_BAT(, 29811) +HANDLE_BAT(, 29812) +HANDLE_BAT(, 29813) +HANDLE_BAT(, 29814) +HANDLE_BAT(, 29815) +HANDLE_BAT(, 29816) +HANDLE_BAT(, 29817) +HANDLE_BAT(, 29818) +HANDLE_BAT(, 29819) +HANDLE_BAT(, 29820) +HANDLE_BAT(, 29821) +HANDLE_BAT(, 29822) +HANDLE_BAT(, 29823) +HANDLE_BAT(, 29824) +HANDLE_BAT(, 29825) +HANDLE_BAT(, 29826) +HANDLE_BAT(, 29827) +HANDLE_BAT(, 29828) +HANDLE_BAT(, 29829) +HANDLE_BAT(, 29830) +HANDLE_BAT(, 29831) +HANDLE_BAT(, 29832) +HANDLE_BAT(, 29833) +HANDLE_BAT(, 29834) +HANDLE_BAT(, 29835) +HANDLE_BAT(, 29836) +HANDLE_BAT(, 29837) +HANDLE_BAT(, 29838) +HANDLE_BAT(, 29839) +HANDLE_BAT(, 29840) +HANDLE_BAT(, 29841) +HANDLE_BAT(, 29842) +HANDLE_BAT(, 29843) +HANDLE_BAT(, 29844) +HANDLE_BAT(, 29845) +HANDLE_BAT(, 29846) +HANDLE_BAT(, 29847) +HANDLE_BAT(, 29848) +HANDLE_BAT(, 29849) +HANDLE_BAT(, 29850) +HANDLE_BAT(, 29851) +HANDLE_BAT(, 29852) +HANDLE_BAT(, 29853) +HANDLE_BAT(, 29854) +HANDLE_BAT(, 29855) +HANDLE_BAT(, 29856) +HANDLE_BAT(, 29857) +HANDLE_BAT(, 29858) +HANDLE_BAT(, 29859) +HANDLE_BAT(, 29860) +HANDLE_BAT(, 29861) +HANDLE_BAT(, 29862) +HANDLE_BAT(, 29863) +HANDLE_BAT(, 29864) +HANDLE_BAT(, 29865) +HANDLE_BAT(, 29866) +HANDLE_BAT(, 29867) +HANDLE_BAT(, 29868) +HANDLE_BAT(, 29869) +HANDLE_BAT(, 29870) +HANDLE_BAT(, 29871) +HANDLE_BAT(, 29872) +HANDLE_BAT(, 29873) +HANDLE_BAT(, 29874) +HANDLE_BAT(, 29875) +HANDLE_BAT(, 29876) +HANDLE_BAT(, 29877) +HANDLE_BAT(, 29878) +HANDLE_BAT(, 29879) +HANDLE_BAT(, 29880) +HANDLE_BAT(, 29881) +HANDLE_BAT(, 29882) +HANDLE_BAT(, 29883) +HANDLE_BAT(, 29884) +HANDLE_BAT(, 29885) +HANDLE_BAT(, 29886) +HANDLE_BAT(, 29887) +HANDLE_BAT(, 29888) +HANDLE_BAT(, 29889) +HANDLE_BAT(, 29890) +HANDLE_BAT(, 29891) +HANDLE_BAT(, 29892) +HANDLE_BAT(, 29893) +HANDLE_BAT(, 29894) +HANDLE_BAT(, 29895) +HANDLE_BAT(, 29896) +HANDLE_BAT(, 29897) +HANDLE_BAT(, 29898) +HANDLE_BAT(, 29899) +HANDLE_BAT(, 29900) +HANDLE_BAT(, 29901) +HANDLE_BAT(, 29902) +HANDLE_BAT(, 29903) +HANDLE_BAT(, 29904) +HANDLE_BAT(, 29905) +HANDLE_BAT(, 29906) +HANDLE_BAT(, 29907) +HANDLE_BAT(, 29908) +HANDLE_BAT(, 29909) +HANDLE_BAT(, 29910) +HANDLE_BAT(, 29911) +HANDLE_BAT(, 29912) +HANDLE_BAT(, 29913) +HANDLE_BAT(, 29914) +HANDLE_BAT(, 29915) +HANDLE_BAT(, 29916) +HANDLE_BAT(, 29917) +HANDLE_BAT(, 29918) +HANDLE_BAT(, 29919) +HANDLE_BAT(, 29920) +HANDLE_BAT(, 29921) +HANDLE_BAT(, 29922) +HANDLE_BAT(, 29923) +HANDLE_BAT(, 29924) +HANDLE_BAT(, 29925) +HANDLE_BAT(, 29926) +HANDLE_BAT(, 29927) +HANDLE_BAT(, 29928) +HANDLE_BAT(, 29929) +HANDLE_BAT(, 29930) +HANDLE_BAT(, 29931) +HANDLE_BAT(, 29932) +HANDLE_BAT(, 29933) +HANDLE_BAT(, 29934) +HANDLE_BAT(, 29935) +HANDLE_BAT(, 29936) +HANDLE_BAT(, 29937) +HANDLE_BAT(, 29938) +HANDLE_BAT(, 29939) +HANDLE_BAT(, 29940) +HANDLE_BAT(, 29941) +HANDLE_BAT(, 29942) +HANDLE_BAT(, 29943) +HANDLE_BAT(, 29944) +HANDLE_BAT(, 29945) +HANDLE_BAT(, 29946) +HANDLE_BAT(, 29947) +HANDLE_BAT(, 29948) +HANDLE_BAT(, 29949) +HANDLE_BAT(, 29950) +HANDLE_BAT(, 29951) +HANDLE_BAT(, 29952) +HANDLE_BAT(, 29953) +HANDLE_BAT(, 29954) +HANDLE_BAT(, 29955) +HANDLE_BAT(, 29956) +HANDLE_BAT(, 29957) +HANDLE_BAT(, 29958) +HANDLE_BAT(, 29959) +HANDLE_BAT(, 29960) +HANDLE_BAT(, 29961) +HANDLE_BAT(, 29962) +HANDLE_BAT(, 29963) +HANDLE_BAT(, 29964) +HANDLE_BAT(, 29965) +HANDLE_BAT(, 29966) +HANDLE_BAT(, 29967) +HANDLE_BAT(, 29968) +HANDLE_BAT(, 29969) +HANDLE_BAT(, 29970) +HANDLE_BAT(, 29971) +HANDLE_BAT(, 29972) +HANDLE_BAT(, 29973) +HANDLE_BAT(, 29974) +HANDLE_BAT(, 29975) +HANDLE_BAT(, 29976) +HANDLE_BAT(, 29977) +HANDLE_BAT(, 29978) +HANDLE_BAT(, 29979) +HANDLE_BAT(, 29980) +HANDLE_BAT(, 29981) +HANDLE_BAT(, 29982) +HANDLE_BAT(, 29983) +HANDLE_BAT(, 29984) +HANDLE_BAT(, 29985) +HANDLE_BAT(, 29986) +HANDLE_BAT(, 29987) +HANDLE_BAT(, 29988) +HANDLE_BAT(, 29989) +HANDLE_BAT(, 29990) +HANDLE_BAT(, 29991) +HANDLE_BAT(, 29992) +HANDLE_BAT(, 29993) +HANDLE_BAT(, 29994) +HANDLE_BAT(, 29995) +HANDLE_BAT(, 29996) +HANDLE_BAT(, 29997) +HANDLE_BAT(, 29998) +HANDLE_BAT(, 29999) +HANDLE_BAT(, 30000) +HANDLE_BAT(, 30001) +HANDLE_BAT(, 30002) +HANDLE_BAT(, 30003) +HANDLE_BAT(, 30004) +HANDLE_BAT(, 30005) +HANDLE_BAT(, 30006) +HANDLE_BAT(, 30007) +HANDLE_BAT(, 30008) +HANDLE_BAT(, 30009) +HANDLE_BAT(, 30010) +HANDLE_BAT(, 30011) +HANDLE_BAT(, 30012) +HANDLE_BAT(, 30013) +HANDLE_BAT(, 30014) +HANDLE_BAT(, 30015) +HANDLE_BAT(, 30016) +HANDLE_BAT(, 30017) +HANDLE_BAT(, 30018) +HANDLE_BAT(, 30019) +HANDLE_BAT(, 30020) +HANDLE_BAT(, 30021) +HANDLE_BAT(, 30022) +HANDLE_BAT(, 30023) +HANDLE_BAT(, 30024) +HANDLE_BAT(, 30025) +HANDLE_BAT(, 30026) +HANDLE_BAT(, 30027) +HANDLE_BAT(, 30028) +HANDLE_BAT(, 30029) +HANDLE_BAT(, 30030) +HANDLE_BAT(, 30031) +HANDLE_BAT(, 30032) +HANDLE_BAT(, 30033) +HANDLE_BAT(, 30034) +HANDLE_BAT(, 30035) +HANDLE_BAT(, 30036) +HANDLE_BAT(, 30037) +HANDLE_BAT(, 30038) +HANDLE_BAT(, 30039) +HANDLE_BAT(, 30040) +HANDLE_BAT(, 30041) +HANDLE_BAT(, 30042) +HANDLE_BAT(, 30043) +HANDLE_BAT(, 30044) +HANDLE_BAT(, 30045) +HANDLE_BAT(, 30046) +HANDLE_BAT(, 30047) +HANDLE_BAT(, 30048) +HANDLE_BAT(, 30049) +HANDLE_BAT(, 30050) +HANDLE_BAT(, 30051) +HANDLE_BAT(, 30052) +HANDLE_BAT(, 30053) +HANDLE_BAT(, 30054) +HANDLE_BAT(, 30055) +HANDLE_BAT(, 30056) +HANDLE_BAT(, 30057) +HANDLE_BAT(, 30058) +HANDLE_BAT(, 30059) +HANDLE_BAT(, 30060) +HANDLE_BAT(, 30061) +HANDLE_BAT(, 30062) +HANDLE_BAT(, 30063) +HANDLE_BAT(, 30064) +HANDLE_BAT(, 30065) +HANDLE_BAT(, 30066) +HANDLE_BAT(, 30067) +HANDLE_BAT(, 30068) +HANDLE_BAT(, 30069) +HANDLE_BAT(, 30070) +HANDLE_BAT(, 30071) +HANDLE_BAT(, 30072) +HANDLE_BAT(, 30073) +HANDLE_BAT(, 30074) +HANDLE_BAT(, 30075) +HANDLE_BAT(, 30076) +HANDLE_BAT(, 30077) +HANDLE_BAT(, 30078) +HANDLE_BAT(, 30079) +HANDLE_BAT(, 30080) +HANDLE_BAT(, 30081) +HANDLE_BAT(, 30082) +HANDLE_BAT(, 30083) +HANDLE_BAT(, 30084) +HANDLE_BAT(, 30085) +HANDLE_BAT(, 30086) +HANDLE_BAT(, 30087) +HANDLE_BAT(, 30088) +HANDLE_BAT(, 30089) +HANDLE_BAT(, 30090) +HANDLE_BAT(, 30091) +HANDLE_BAT(, 30092) +HANDLE_BAT(, 30093) +HANDLE_BAT(, 30094) +HANDLE_BAT(, 30095) +HANDLE_BAT(, 30096) +HANDLE_BAT(, 30097) +HANDLE_BAT(, 30098) +HANDLE_BAT(, 30099) +HANDLE_BAT(, 30100) +HANDLE_BAT(, 30101) +HANDLE_BAT(, 30102) +HANDLE_BAT(, 30103) +HANDLE_BAT(, 30104) +HANDLE_BAT(, 30105) +HANDLE_BAT(, 30106) +HANDLE_BAT(, 30107) +HANDLE_BAT(, 30108) +HANDLE_BAT(, 30109) +HANDLE_BAT(, 30110) +HANDLE_BAT(, 30111) +HANDLE_BAT(, 30112) +HANDLE_BAT(, 30113) +HANDLE_BAT(, 30114) +HANDLE_BAT(, 30115) +HANDLE_BAT(, 30116) +HANDLE_BAT(, 30117) +HANDLE_BAT(, 30118) +HANDLE_BAT(, 30119) +HANDLE_BAT(, 30120) +HANDLE_BAT(, 30121) +HANDLE_BAT(, 30122) +HANDLE_BAT(, 30123) +HANDLE_BAT(, 30124) +HANDLE_BAT(, 30125) +HANDLE_BAT(, 30126) +HANDLE_BAT(, 30127) +HANDLE_BAT(, 30128) +HANDLE_BAT(, 30129) +HANDLE_BAT(, 30130) +HANDLE_BAT(, 30131) +HANDLE_BAT(, 30132) +HANDLE_BAT(, 30133) +HANDLE_BAT(, 30134) +HANDLE_BAT(, 30135) +HANDLE_BAT(, 30136) +HANDLE_BAT(, 30137) +HANDLE_BAT(, 30138) +HANDLE_BAT(, 30139) +HANDLE_BAT(, 30140) +HANDLE_BAT(, 30141) +HANDLE_BAT(, 30142) +HANDLE_BAT(, 30143) +HANDLE_BAT(, 30144) +HANDLE_BAT(, 30145) +HANDLE_BAT(, 30146) +HANDLE_BAT(, 30147) +HANDLE_BAT(, 30148) +HANDLE_BAT(, 30149) +HANDLE_BAT(, 30150) +HANDLE_BAT(, 30151) +HANDLE_BAT(, 30152) +HANDLE_BAT(, 30153) +HANDLE_BAT(, 30154) +HANDLE_BAT(, 30155) +HANDLE_BAT(, 30156) +HANDLE_BAT(, 30157) +HANDLE_BAT(, 30158) +HANDLE_BAT(, 30159) +HANDLE_BAT(, 30160) +HANDLE_BAT(, 30161) +HANDLE_BAT(, 30162) +HANDLE_BAT(, 30163) +HANDLE_BAT(, 30164) +HANDLE_BAT(, 30165) +HANDLE_BAT(, 30166) +HANDLE_BAT(, 30167) +HANDLE_BAT(, 30168) +HANDLE_BAT(, 30169) +HANDLE_BAT(, 30170) +HANDLE_BAT(, 30171) +HANDLE_BAT(, 30172) +HANDLE_BAT(, 30173) +HANDLE_BAT(, 30174) +HANDLE_BAT(, 30175) +HANDLE_BAT(, 30176) +HANDLE_BAT(, 30177) +HANDLE_BAT(, 30178) +HANDLE_BAT(, 30179) +HANDLE_BAT(, 30180) +HANDLE_BAT(, 30181) +HANDLE_BAT(, 30182) +HANDLE_BAT(, 30183) +HANDLE_BAT(, 30184) +HANDLE_BAT(, 30185) +HANDLE_BAT(, 30186) +HANDLE_BAT(, 30187) +HANDLE_BAT(, 30188) +HANDLE_BAT(, 30189) +HANDLE_BAT(, 30190) +HANDLE_BAT(, 30191) +HANDLE_BAT(, 30192) +HANDLE_BAT(, 30193) +HANDLE_BAT(, 30194) +HANDLE_BAT(, 30195) +HANDLE_BAT(, 30196) +HANDLE_BAT(, 30197) +HANDLE_BAT(, 30198) +HANDLE_BAT(, 30199) +HANDLE_BAT(, 30200) +HANDLE_BAT(, 30201) +HANDLE_BAT(, 30202) +HANDLE_BAT(, 30203) +HANDLE_BAT(, 30204) +HANDLE_BAT(, 30205) +HANDLE_BAT(, 30206) +HANDLE_BAT(, 30207) +HANDLE_BAT(, 30208) +HANDLE_BAT(, 30209) +HANDLE_BAT(, 30210) +HANDLE_BAT(, 30211) +HANDLE_BAT(, 30212) +HANDLE_BAT(, 30213) +HANDLE_BAT(, 30214) +HANDLE_BAT(, 30215) +HANDLE_BAT(, 30216) +HANDLE_BAT(, 30217) +HANDLE_BAT(, 30218) +HANDLE_BAT(, 30219) +HANDLE_BAT(, 30220) +HANDLE_BAT(, 30221) +HANDLE_BAT(, 30222) +HANDLE_BAT(, 30223) +HANDLE_BAT(, 30224) +HANDLE_BAT(, 30225) +HANDLE_BAT(, 30226) +HANDLE_BAT(, 30227) +HANDLE_BAT(, 30228) +HANDLE_BAT(, 30229) +HANDLE_BAT(, 30230) +HANDLE_BAT(, 30231) +HANDLE_BAT(, 30232) +HANDLE_BAT(, 30233) +HANDLE_BAT(, 30234) +HANDLE_BAT(, 30235) +HANDLE_BAT(, 30236) +HANDLE_BAT(, 30237) +HANDLE_BAT(, 30238) +HANDLE_BAT(, 30239) +HANDLE_BAT(, 30240) +HANDLE_BAT(, 30241) +HANDLE_BAT(, 30242) +HANDLE_BAT(, 30243) +HANDLE_BAT(, 30244) +HANDLE_BAT(, 30245) +HANDLE_BAT(, 30246) +HANDLE_BAT(, 30247) +HANDLE_BAT(, 30248) +HANDLE_BAT(, 30249) +HANDLE_BAT(, 30250) +HANDLE_BAT(, 30251) +HANDLE_BAT(, 30252) +HANDLE_BAT(, 30253) +HANDLE_BAT(, 30254) +HANDLE_BAT(, 30255) +HANDLE_BAT(, 30256) +HANDLE_BAT(, 30257) +HANDLE_BAT(, 30258) +HANDLE_BAT(, 30259) +HANDLE_BAT(, 30260) +HANDLE_BAT(, 30261) +HANDLE_BAT(, 30262) +HANDLE_BAT(, 30263) +HANDLE_BAT(, 30264) +HANDLE_BAT(, 30265) +HANDLE_BAT(, 30266) +HANDLE_BAT(, 30267) +HANDLE_BAT(, 30268) +HANDLE_BAT(, 30269) +HANDLE_BAT(, 30270) +HANDLE_BAT(, 30271) +HANDLE_BAT(, 30272) +HANDLE_BAT(, 30273) +HANDLE_BAT(, 30274) +HANDLE_BAT(, 30275) +HANDLE_BAT(, 30276) +HANDLE_BAT(, 30277) +HANDLE_BAT(, 30278) +HANDLE_BAT(, 30279) +HANDLE_BAT(, 30280) +HANDLE_BAT(, 30281) +HANDLE_BAT(, 30282) +HANDLE_BAT(, 30283) +HANDLE_BAT(, 30284) +HANDLE_BAT(, 30285) +HANDLE_BAT(, 30286) +HANDLE_BAT(, 30287) +HANDLE_BAT(, 30288) +HANDLE_BAT(, 30289) +HANDLE_BAT(, 30290) +HANDLE_BAT(, 30291) +HANDLE_BAT(, 30292) +HANDLE_BAT(, 30293) +HANDLE_BAT(, 30294) +HANDLE_BAT(, 30295) +HANDLE_BAT(, 30296) +HANDLE_BAT(, 30297) +HANDLE_BAT(, 30298) +HANDLE_BAT(, 30299) +HANDLE_BAT(, 30300) +HANDLE_BAT(, 30301) +HANDLE_BAT(, 30302) +HANDLE_BAT(, 30303) +HANDLE_BAT(, 30304) +HANDLE_BAT(, 30305) +HANDLE_BAT(, 30306) +HANDLE_BAT(, 30307) +HANDLE_BAT(, 30308) +HANDLE_BAT(, 30309) +HANDLE_BAT(, 30310) +HANDLE_BAT(, 30311) +HANDLE_BAT(, 30312) +HANDLE_BAT(, 30313) +HANDLE_BAT(, 30314) +HANDLE_BAT(, 30315) +HANDLE_BAT(, 30316) +HANDLE_BAT(, 30317) +HANDLE_BAT(, 30318) +HANDLE_BAT(, 30319) +HANDLE_BAT(, 30320) +HANDLE_BAT(, 30321) +HANDLE_BAT(, 30322) +HANDLE_BAT(, 30323) +HANDLE_BAT(, 30324) +HANDLE_BAT(, 30325) +HANDLE_BAT(, 30326) +HANDLE_BAT(, 30327) +HANDLE_BAT(, 30328) +HANDLE_BAT(, 30329) +HANDLE_BAT(, 30330) +HANDLE_BAT(, 30331) +HANDLE_BAT(, 30332) +HANDLE_BAT(, 30333) +HANDLE_BAT(, 30334) +HANDLE_BAT(, 30335) +HANDLE_BAT(, 30336) +HANDLE_BAT(, 30337) +HANDLE_BAT(, 30338) +HANDLE_BAT(, 30339) +HANDLE_BAT(, 30340) +HANDLE_BAT(, 30341) +HANDLE_BAT(, 30342) +HANDLE_BAT(, 30343) +HANDLE_BAT(, 30344) +HANDLE_BAT(, 30345) +HANDLE_BAT(, 30346) +HANDLE_BAT(, 30347) +HANDLE_BAT(, 30348) +HANDLE_BAT(, 30349) +HANDLE_BAT(, 30350) +HANDLE_BAT(, 30351) +HANDLE_BAT(, 30352) +HANDLE_BAT(, 30353) +HANDLE_BAT(, 30354) +HANDLE_BAT(, 30355) +HANDLE_BAT(, 30356) +HANDLE_BAT(, 30357) +HANDLE_BAT(, 30358) +HANDLE_BAT(, 30359) +HANDLE_BAT(, 30360) +HANDLE_BAT(, 30361) +HANDLE_BAT(, 30362) +HANDLE_BAT(, 30363) +HANDLE_BAT(, 30364) +HANDLE_BAT(, 30365) +HANDLE_BAT(, 30366) +HANDLE_BAT(, 30367) +HANDLE_BAT(, 30368) +HANDLE_BAT(, 30369) +HANDLE_BAT(, 30370) +HANDLE_BAT(, 30371) +HANDLE_BAT(, 30372) +HANDLE_BAT(, 30373) +HANDLE_BAT(, 30374) +HANDLE_BAT(, 30375) +HANDLE_BAT(, 30376) +HANDLE_BAT(, 30377) +HANDLE_BAT(, 30378) +HANDLE_BAT(, 30379) +HANDLE_BAT(, 30380) +HANDLE_BAT(, 30381) +HANDLE_BAT(, 30382) +HANDLE_BAT(, 30383) +HANDLE_BAT(, 30384) +HANDLE_BAT(, 30385) +HANDLE_BAT(, 30386) +HANDLE_BAT(, 30387) +HANDLE_BAT(, 30388) +HANDLE_BAT(, 30389) +HANDLE_BAT(, 30390) +HANDLE_BAT(, 30391) +HANDLE_BAT(, 30392) +HANDLE_BAT(, 30393) +HANDLE_BAT(, 30394) +HANDLE_BAT(, 30395) +HANDLE_BAT(, 30396) +HANDLE_BAT(, 30397) +HANDLE_BAT(, 30398) +HANDLE_BAT(, 30399) +HANDLE_BAT(, 30400) +HANDLE_BAT(, 30401) +HANDLE_BAT(, 30402) +HANDLE_BAT(, 30403) +HANDLE_BAT(, 30404) +HANDLE_BAT(, 30405) +HANDLE_BAT(, 30406) +HANDLE_BAT(, 30407) +HANDLE_BAT(, 30408) +HANDLE_BAT(, 30409) +HANDLE_BAT(, 30410) +HANDLE_BAT(, 30411) +HANDLE_BAT(, 30412) +HANDLE_BAT(, 30413) +HANDLE_BAT(, 30414) +HANDLE_BAT(, 30415) +HANDLE_BAT(, 30416) +HANDLE_BAT(, 30417) +HANDLE_BAT(, 30418) +HANDLE_BAT(, 30419) +HANDLE_BAT(, 30420) +HANDLE_BAT(, 30421) +HANDLE_BAT(, 30422) +HANDLE_BAT(, 30423) +HANDLE_BAT(, 30424) +HANDLE_BAT(, 30425) +HANDLE_BAT(, 30426) +HANDLE_BAT(, 30427) +HANDLE_BAT(, 30428) +HANDLE_BAT(, 30429) +HANDLE_BAT(, 30430) +HANDLE_BAT(, 30431) +HANDLE_BAT(, 30432) +HANDLE_BAT(, 30433) +HANDLE_BAT(, 30434) +HANDLE_BAT(, 30435) +HANDLE_BAT(, 30436) +HANDLE_BAT(, 30437) +HANDLE_BAT(, 30438) +HANDLE_BAT(, 30439) +HANDLE_BAT(, 30440) +HANDLE_BAT(, 30441) +HANDLE_BAT(, 30442) +HANDLE_BAT(, 30443) +HANDLE_BAT(, 30444) +HANDLE_BAT(, 30445) +HANDLE_BAT(, 30446) +HANDLE_BAT(, 30447) +HANDLE_BAT(, 30448) +HANDLE_BAT(, 30449) +HANDLE_BAT(, 30450) +HANDLE_BAT(, 30451) +HANDLE_BAT(, 30452) +HANDLE_BAT(, 30453) +HANDLE_BAT(, 30454) +HANDLE_BAT(, 30455) +HANDLE_BAT(, 30456) +HANDLE_BAT(, 30457) +HANDLE_BAT(, 30458) +HANDLE_BAT(, 30459) +HANDLE_BAT(, 30460) +HANDLE_BAT(, 30461) +HANDLE_BAT(, 30462) +HANDLE_BAT(, 30463) +HANDLE_BAT(, 30464) +HANDLE_BAT(, 30465) +HANDLE_BAT(, 30466) +HANDLE_BAT(, 30467) +HANDLE_BAT(, 30468) +HANDLE_BAT(, 30469) +HANDLE_BAT(, 30470) +HANDLE_BAT(, 30471) +HANDLE_BAT(, 30472) +HANDLE_BAT(, 30473) +HANDLE_BAT(, 30474) +HANDLE_BAT(, 30475) +HANDLE_BAT(, 30476) +HANDLE_BAT(, 30477) +HANDLE_BAT(, 30478) +HANDLE_BAT(, 30479) +HANDLE_BAT(, 30480) +HANDLE_BAT(, 30481) +HANDLE_BAT(, 30482) +HANDLE_BAT(, 30483) +HANDLE_BAT(, 30484) +HANDLE_BAT(, 30485) +HANDLE_BAT(, 30486) +HANDLE_BAT(, 30487) +HANDLE_BAT(, 30488) +HANDLE_BAT(, 30489) +HANDLE_BAT(, 30490) +HANDLE_BAT(, 30491) +HANDLE_BAT(, 30492) +HANDLE_BAT(, 30493) +HANDLE_BAT(, 30494) +HANDLE_BAT(, 30495) +HANDLE_BAT(, 30496) +HANDLE_BAT(, 30497) +HANDLE_BAT(, 30498) +HANDLE_BAT(, 30499) +HANDLE_BAT(, 30500) +HANDLE_BAT(, 30501) +HANDLE_BAT(, 30502) +HANDLE_BAT(, 30503) +HANDLE_BAT(, 30504) +HANDLE_BAT(, 30505) +HANDLE_BAT(, 30506) +HANDLE_BAT(, 30507) +HANDLE_BAT(, 30508) +HANDLE_BAT(, 30509) +HANDLE_BAT(, 30510) +HANDLE_BAT(, 30511) +HANDLE_BAT(, 30512) +HANDLE_BAT(, 30513) +HANDLE_BAT(, 30514) +HANDLE_BAT(, 30515) +HANDLE_BAT(, 30516) +HANDLE_BAT(, 30517) +HANDLE_BAT(, 30518) +HANDLE_BAT(, 30519) +HANDLE_BAT(, 30520) +HANDLE_BAT(, 30521) +HANDLE_BAT(, 30522) +HANDLE_BAT(, 30523) +HANDLE_BAT(, 30524) +HANDLE_BAT(, 30525) +HANDLE_BAT(, 30526) +HANDLE_BAT(, 30527) +HANDLE_BAT(, 30528) +HANDLE_BAT(, 30529) +HANDLE_BAT(, 30530) +HANDLE_BAT(, 30531) +HANDLE_BAT(, 30532) +HANDLE_BAT(, 30533) +HANDLE_BAT(, 30534) +HANDLE_BAT(, 30535) +HANDLE_BAT(, 30536) +HANDLE_BAT(, 30537) +HANDLE_BAT(, 30538) +HANDLE_BAT(, 30539) +HANDLE_BAT(, 30540) +HANDLE_BAT(, 30541) +HANDLE_BAT(, 30542) +HANDLE_BAT(, 30543) +HANDLE_BAT(, 30544) +HANDLE_BAT(, 30545) +HANDLE_BAT(, 30546) +HANDLE_BAT(, 30547) +HANDLE_BAT(, 30548) +HANDLE_BAT(, 30549) +HANDLE_BAT(, 30550) +HANDLE_BAT(, 30551) +HANDLE_BAT(, 30552) +HANDLE_BAT(, 30553) +HANDLE_BAT(, 30554) +HANDLE_BAT(, 30555) +HANDLE_BAT(, 30556) +HANDLE_BAT(, 30557) +HANDLE_BAT(, 30558) +HANDLE_BAT(, 30559) +HANDLE_BAT(, 30560) +HANDLE_BAT(, 30561) +HANDLE_BAT(, 30562) +HANDLE_BAT(, 30563) +HANDLE_BAT(, 30564) +HANDLE_BAT(, 30565) +HANDLE_BAT(, 30566) +HANDLE_BAT(, 30567) +HANDLE_BAT(, 30568) +HANDLE_BAT(, 30569) +HANDLE_BAT(, 30570) +HANDLE_BAT(, 30571) +HANDLE_BAT(, 30572) +HANDLE_BAT(, 30573) +HANDLE_BAT(, 30574) +HANDLE_BAT(, 30575) +HANDLE_BAT(, 30576) +HANDLE_BAT(, 30577) +HANDLE_BAT(, 30578) +HANDLE_BAT(, 30579) +HANDLE_BAT(, 30580) +HANDLE_BAT(, 30581) +HANDLE_BAT(, 30582) +HANDLE_BAT(, 30583) +HANDLE_BAT(, 30584) +HANDLE_BAT(, 30585) +HANDLE_BAT(, 30586) +HANDLE_BAT(, 30587) +HANDLE_BAT(, 30588) +HANDLE_BAT(, 30589) +HANDLE_BAT(, 30590) +HANDLE_BAT(, 30591) +HANDLE_BAT(, 30592) +HANDLE_BAT(, 30593) +HANDLE_BAT(, 30594) +HANDLE_BAT(, 30595) +HANDLE_BAT(, 30596) +HANDLE_BAT(, 30597) +HANDLE_BAT(, 30598) +HANDLE_BAT(, 30599) +HANDLE_BAT(, 30600) +HANDLE_BAT(, 30601) +HANDLE_BAT(, 30602) +HANDLE_BAT(, 30603) +HANDLE_BAT(, 30604) +HANDLE_BAT(, 30605) +HANDLE_BAT(, 30606) +HANDLE_BAT(, 30607) +HANDLE_BAT(, 30608) +HANDLE_BAT(, 30609) +HANDLE_BAT(, 30610) +HANDLE_BAT(, 30611) +HANDLE_BAT(, 30612) +HANDLE_BAT(, 30613) +HANDLE_BAT(, 30614) +HANDLE_BAT(, 30615) +HANDLE_BAT(, 30616) +HANDLE_BAT(, 30617) +HANDLE_BAT(, 30618) +HANDLE_BAT(, 30619) +HANDLE_BAT(, 30620) +HANDLE_BAT(, 30621) +HANDLE_BAT(, 30622) +HANDLE_BAT(, 30623) +HANDLE_BAT(, 30624) +HANDLE_BAT(, 30625) +HANDLE_BAT(, 30626) +HANDLE_BAT(, 30627) +HANDLE_BAT(, 30628) +HANDLE_BAT(, 30629) +HANDLE_BAT(, 30630) +HANDLE_BAT(, 30631) +HANDLE_BAT(, 30632) +HANDLE_BAT(, 30633) +HANDLE_BAT(, 30634) +HANDLE_BAT(, 30635) +HANDLE_BAT(, 30636) +HANDLE_BAT(, 30637) +HANDLE_BAT(, 30638) +HANDLE_BAT(, 30639) +HANDLE_BAT(, 30640) +HANDLE_BAT(, 30641) +HANDLE_BAT(, 30642) +HANDLE_BAT(, 30643) +HANDLE_BAT(, 30644) +HANDLE_BAT(, 30645) +HANDLE_BAT(, 30646) +HANDLE_BAT(, 30647) +HANDLE_BAT(, 30648) +HANDLE_BAT(, 30649) +HANDLE_BAT(, 30650) +HANDLE_BAT(, 30651) +HANDLE_BAT(, 30652) +HANDLE_BAT(, 30653) +HANDLE_BAT(, 30654) +HANDLE_BAT(, 30655) +HANDLE_BAT(, 30656) +HANDLE_BAT(, 30657) +HANDLE_BAT(, 30658) +HANDLE_BAT(, 30659) +HANDLE_BAT(, 30660) +HANDLE_BAT(, 30661) +HANDLE_BAT(, 30662) +HANDLE_BAT(, 30663) +HANDLE_BAT(, 30664) +HANDLE_BAT(, 30665) +HANDLE_BAT(, 30666) +HANDLE_BAT(, 30667) +HANDLE_BAT(, 30668) +HANDLE_BAT(, 30669) +HANDLE_BAT(, 30670) +HANDLE_BAT(, 30671) +HANDLE_BAT(, 30672) +HANDLE_BAT(, 30673) +HANDLE_BAT(, 30674) +HANDLE_BAT(, 30675) +HANDLE_BAT(, 30676) +HANDLE_BAT(, 30677) +HANDLE_BAT(, 30678) +HANDLE_BAT(, 30679) +HANDLE_BAT(, 30680) +HANDLE_BAT(, 30681) +HANDLE_BAT(, 30682) +HANDLE_BAT(, 30683) +HANDLE_BAT(, 30684) +HANDLE_BAT(, 30685) +HANDLE_BAT(, 30686) +HANDLE_BAT(, 30687) +HANDLE_BAT(, 30688) +HANDLE_BAT(, 30689) +HANDLE_BAT(, 30690) +HANDLE_BAT(, 30691) +HANDLE_BAT(, 30692) +HANDLE_BAT(, 30693) +HANDLE_BAT(, 30694) +HANDLE_BAT(, 30695) +HANDLE_BAT(, 30696) +HANDLE_BAT(, 30697) +HANDLE_BAT(, 30698) +HANDLE_BAT(, 30699) +HANDLE_BAT(, 30700) +HANDLE_BAT(, 30701) +HANDLE_BAT(, 30702) +HANDLE_BAT(, 30703) +HANDLE_BAT(, 30704) +HANDLE_BAT(, 30705) +HANDLE_BAT(, 30706) +HANDLE_BAT(, 30707) +HANDLE_BAT(, 30708) +HANDLE_BAT(, 30709) +HANDLE_BAT(, 30710) +HANDLE_BAT(, 30711) +HANDLE_BAT(, 30712) +HANDLE_BAT(, 30713) +HANDLE_BAT(, 30714) +HANDLE_BAT(, 30715) +HANDLE_BAT(, 30716) +HANDLE_BAT(, 30717) +HANDLE_BAT(, 30718) +HANDLE_BAT(, 30719) +HANDLE_BAT(, 30720) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 29697) +HANDLE_BAT(APINT_TYPE_PREFIX, 29698) +HANDLE_BAT(APINT_TYPE_PREFIX, 29699) +HANDLE_BAT(APINT_TYPE_PREFIX, 29700) +HANDLE_BAT(APINT_TYPE_PREFIX, 29701) +HANDLE_BAT(APINT_TYPE_PREFIX, 29702) +HANDLE_BAT(APINT_TYPE_PREFIX, 29703) +HANDLE_BAT(APINT_TYPE_PREFIX, 29704) +HANDLE_BAT(APINT_TYPE_PREFIX, 29705) +HANDLE_BAT(APINT_TYPE_PREFIX, 29706) +HANDLE_BAT(APINT_TYPE_PREFIX, 29707) +HANDLE_BAT(APINT_TYPE_PREFIX, 29708) +HANDLE_BAT(APINT_TYPE_PREFIX, 29709) +HANDLE_BAT(APINT_TYPE_PREFIX, 29710) +HANDLE_BAT(APINT_TYPE_PREFIX, 29711) +HANDLE_BAT(APINT_TYPE_PREFIX, 29712) +HANDLE_BAT(APINT_TYPE_PREFIX, 29713) +HANDLE_BAT(APINT_TYPE_PREFIX, 29714) +HANDLE_BAT(APINT_TYPE_PREFIX, 29715) +HANDLE_BAT(APINT_TYPE_PREFIX, 29716) +HANDLE_BAT(APINT_TYPE_PREFIX, 29717) +HANDLE_BAT(APINT_TYPE_PREFIX, 29718) +HANDLE_BAT(APINT_TYPE_PREFIX, 29719) +HANDLE_BAT(APINT_TYPE_PREFIX, 29720) +HANDLE_BAT(APINT_TYPE_PREFIX, 29721) +HANDLE_BAT(APINT_TYPE_PREFIX, 29722) +HANDLE_BAT(APINT_TYPE_PREFIX, 29723) +HANDLE_BAT(APINT_TYPE_PREFIX, 29724) +HANDLE_BAT(APINT_TYPE_PREFIX, 29725) +HANDLE_BAT(APINT_TYPE_PREFIX, 29726) +HANDLE_BAT(APINT_TYPE_PREFIX, 29727) +HANDLE_BAT(APINT_TYPE_PREFIX, 29728) +HANDLE_BAT(APINT_TYPE_PREFIX, 29729) +HANDLE_BAT(APINT_TYPE_PREFIX, 29730) +HANDLE_BAT(APINT_TYPE_PREFIX, 29731) +HANDLE_BAT(APINT_TYPE_PREFIX, 29732) +HANDLE_BAT(APINT_TYPE_PREFIX, 29733) +HANDLE_BAT(APINT_TYPE_PREFIX, 29734) +HANDLE_BAT(APINT_TYPE_PREFIX, 29735) +HANDLE_BAT(APINT_TYPE_PREFIX, 29736) +HANDLE_BAT(APINT_TYPE_PREFIX, 29737) +HANDLE_BAT(APINT_TYPE_PREFIX, 29738) +HANDLE_BAT(APINT_TYPE_PREFIX, 29739) +HANDLE_BAT(APINT_TYPE_PREFIX, 29740) +HANDLE_BAT(APINT_TYPE_PREFIX, 29741) +HANDLE_BAT(APINT_TYPE_PREFIX, 29742) +HANDLE_BAT(APINT_TYPE_PREFIX, 29743) +HANDLE_BAT(APINT_TYPE_PREFIX, 29744) +HANDLE_BAT(APINT_TYPE_PREFIX, 29745) +HANDLE_BAT(APINT_TYPE_PREFIX, 29746) +HANDLE_BAT(APINT_TYPE_PREFIX, 29747) +HANDLE_BAT(APINT_TYPE_PREFIX, 29748) +HANDLE_BAT(APINT_TYPE_PREFIX, 29749) +HANDLE_BAT(APINT_TYPE_PREFIX, 29750) +HANDLE_BAT(APINT_TYPE_PREFIX, 29751) +HANDLE_BAT(APINT_TYPE_PREFIX, 29752) +HANDLE_BAT(APINT_TYPE_PREFIX, 29753) +HANDLE_BAT(APINT_TYPE_PREFIX, 29754) +HANDLE_BAT(APINT_TYPE_PREFIX, 29755) +HANDLE_BAT(APINT_TYPE_PREFIX, 29756) +HANDLE_BAT(APINT_TYPE_PREFIX, 29757) +HANDLE_BAT(APINT_TYPE_PREFIX, 29758) +HANDLE_BAT(APINT_TYPE_PREFIX, 29759) +HANDLE_BAT(APINT_TYPE_PREFIX, 29760) +HANDLE_BAT(APINT_TYPE_PREFIX, 29761) +HANDLE_BAT(APINT_TYPE_PREFIX, 29762) +HANDLE_BAT(APINT_TYPE_PREFIX, 29763) +HANDLE_BAT(APINT_TYPE_PREFIX, 29764) +HANDLE_BAT(APINT_TYPE_PREFIX, 29765) +HANDLE_BAT(APINT_TYPE_PREFIX, 29766) +HANDLE_BAT(APINT_TYPE_PREFIX, 29767) +HANDLE_BAT(APINT_TYPE_PREFIX, 29768) +HANDLE_BAT(APINT_TYPE_PREFIX, 29769) +HANDLE_BAT(APINT_TYPE_PREFIX, 29770) +HANDLE_BAT(APINT_TYPE_PREFIX, 29771) +HANDLE_BAT(APINT_TYPE_PREFIX, 29772) +HANDLE_BAT(APINT_TYPE_PREFIX, 29773) +HANDLE_BAT(APINT_TYPE_PREFIX, 29774) +HANDLE_BAT(APINT_TYPE_PREFIX, 29775) +HANDLE_BAT(APINT_TYPE_PREFIX, 29776) +HANDLE_BAT(APINT_TYPE_PREFIX, 29777) +HANDLE_BAT(APINT_TYPE_PREFIX, 29778) +HANDLE_BAT(APINT_TYPE_PREFIX, 29779) +HANDLE_BAT(APINT_TYPE_PREFIX, 29780) +HANDLE_BAT(APINT_TYPE_PREFIX, 29781) +HANDLE_BAT(APINT_TYPE_PREFIX, 29782) +HANDLE_BAT(APINT_TYPE_PREFIX, 29783) +HANDLE_BAT(APINT_TYPE_PREFIX, 29784) +HANDLE_BAT(APINT_TYPE_PREFIX, 29785) +HANDLE_BAT(APINT_TYPE_PREFIX, 29786) +HANDLE_BAT(APINT_TYPE_PREFIX, 29787) +HANDLE_BAT(APINT_TYPE_PREFIX, 29788) +HANDLE_BAT(APINT_TYPE_PREFIX, 29789) +HANDLE_BAT(APINT_TYPE_PREFIX, 29790) +HANDLE_BAT(APINT_TYPE_PREFIX, 29791) +HANDLE_BAT(APINT_TYPE_PREFIX, 29792) +HANDLE_BAT(APINT_TYPE_PREFIX, 29793) +HANDLE_BAT(APINT_TYPE_PREFIX, 29794) +HANDLE_BAT(APINT_TYPE_PREFIX, 29795) +HANDLE_BAT(APINT_TYPE_PREFIX, 29796) +HANDLE_BAT(APINT_TYPE_PREFIX, 29797) +HANDLE_BAT(APINT_TYPE_PREFIX, 29798) +HANDLE_BAT(APINT_TYPE_PREFIX, 29799) +HANDLE_BAT(APINT_TYPE_PREFIX, 29800) +HANDLE_BAT(APINT_TYPE_PREFIX, 29801) +HANDLE_BAT(APINT_TYPE_PREFIX, 29802) +HANDLE_BAT(APINT_TYPE_PREFIX, 29803) +HANDLE_BAT(APINT_TYPE_PREFIX, 29804) +HANDLE_BAT(APINT_TYPE_PREFIX, 29805) +HANDLE_BAT(APINT_TYPE_PREFIX, 29806) +HANDLE_BAT(APINT_TYPE_PREFIX, 29807) +HANDLE_BAT(APINT_TYPE_PREFIX, 29808) +HANDLE_BAT(APINT_TYPE_PREFIX, 29809) +HANDLE_BAT(APINT_TYPE_PREFIX, 29810) +HANDLE_BAT(APINT_TYPE_PREFIX, 29811) +HANDLE_BAT(APINT_TYPE_PREFIX, 29812) +HANDLE_BAT(APINT_TYPE_PREFIX, 29813) +HANDLE_BAT(APINT_TYPE_PREFIX, 29814) +HANDLE_BAT(APINT_TYPE_PREFIX, 29815) +HANDLE_BAT(APINT_TYPE_PREFIX, 29816) +HANDLE_BAT(APINT_TYPE_PREFIX, 29817) +HANDLE_BAT(APINT_TYPE_PREFIX, 29818) +HANDLE_BAT(APINT_TYPE_PREFIX, 29819) +HANDLE_BAT(APINT_TYPE_PREFIX, 29820) +HANDLE_BAT(APINT_TYPE_PREFIX, 29821) +HANDLE_BAT(APINT_TYPE_PREFIX, 29822) +HANDLE_BAT(APINT_TYPE_PREFIX, 29823) +HANDLE_BAT(APINT_TYPE_PREFIX, 29824) +HANDLE_BAT(APINT_TYPE_PREFIX, 29825) +HANDLE_BAT(APINT_TYPE_PREFIX, 29826) +HANDLE_BAT(APINT_TYPE_PREFIX, 29827) +HANDLE_BAT(APINT_TYPE_PREFIX, 29828) +HANDLE_BAT(APINT_TYPE_PREFIX, 29829) +HANDLE_BAT(APINT_TYPE_PREFIX, 29830) +HANDLE_BAT(APINT_TYPE_PREFIX, 29831) +HANDLE_BAT(APINT_TYPE_PREFIX, 29832) +HANDLE_BAT(APINT_TYPE_PREFIX, 29833) +HANDLE_BAT(APINT_TYPE_PREFIX, 29834) +HANDLE_BAT(APINT_TYPE_PREFIX, 29835) +HANDLE_BAT(APINT_TYPE_PREFIX, 29836) +HANDLE_BAT(APINT_TYPE_PREFIX, 29837) +HANDLE_BAT(APINT_TYPE_PREFIX, 29838) +HANDLE_BAT(APINT_TYPE_PREFIX, 29839) +HANDLE_BAT(APINT_TYPE_PREFIX, 29840) +HANDLE_BAT(APINT_TYPE_PREFIX, 29841) +HANDLE_BAT(APINT_TYPE_PREFIX, 29842) +HANDLE_BAT(APINT_TYPE_PREFIX, 29843) +HANDLE_BAT(APINT_TYPE_PREFIX, 29844) +HANDLE_BAT(APINT_TYPE_PREFIX, 29845) +HANDLE_BAT(APINT_TYPE_PREFIX, 29846) +HANDLE_BAT(APINT_TYPE_PREFIX, 29847) +HANDLE_BAT(APINT_TYPE_PREFIX, 29848) +HANDLE_BAT(APINT_TYPE_PREFIX, 29849) +HANDLE_BAT(APINT_TYPE_PREFIX, 29850) +HANDLE_BAT(APINT_TYPE_PREFIX, 29851) +HANDLE_BAT(APINT_TYPE_PREFIX, 29852) +HANDLE_BAT(APINT_TYPE_PREFIX, 29853) +HANDLE_BAT(APINT_TYPE_PREFIX, 29854) +HANDLE_BAT(APINT_TYPE_PREFIX, 29855) +HANDLE_BAT(APINT_TYPE_PREFIX, 29856) +HANDLE_BAT(APINT_TYPE_PREFIX, 29857) +HANDLE_BAT(APINT_TYPE_PREFIX, 29858) +HANDLE_BAT(APINT_TYPE_PREFIX, 29859) +HANDLE_BAT(APINT_TYPE_PREFIX, 29860) +HANDLE_BAT(APINT_TYPE_PREFIX, 29861) +HANDLE_BAT(APINT_TYPE_PREFIX, 29862) +HANDLE_BAT(APINT_TYPE_PREFIX, 29863) +HANDLE_BAT(APINT_TYPE_PREFIX, 29864) +HANDLE_BAT(APINT_TYPE_PREFIX, 29865) +HANDLE_BAT(APINT_TYPE_PREFIX, 29866) +HANDLE_BAT(APINT_TYPE_PREFIX, 29867) +HANDLE_BAT(APINT_TYPE_PREFIX, 29868) +HANDLE_BAT(APINT_TYPE_PREFIX, 29869) +HANDLE_BAT(APINT_TYPE_PREFIX, 29870) +HANDLE_BAT(APINT_TYPE_PREFIX, 29871) +HANDLE_BAT(APINT_TYPE_PREFIX, 29872) +HANDLE_BAT(APINT_TYPE_PREFIX, 29873) +HANDLE_BAT(APINT_TYPE_PREFIX, 29874) +HANDLE_BAT(APINT_TYPE_PREFIX, 29875) +HANDLE_BAT(APINT_TYPE_PREFIX, 29876) +HANDLE_BAT(APINT_TYPE_PREFIX, 29877) +HANDLE_BAT(APINT_TYPE_PREFIX, 29878) +HANDLE_BAT(APINT_TYPE_PREFIX, 29879) +HANDLE_BAT(APINT_TYPE_PREFIX, 29880) +HANDLE_BAT(APINT_TYPE_PREFIX, 29881) +HANDLE_BAT(APINT_TYPE_PREFIX, 29882) +HANDLE_BAT(APINT_TYPE_PREFIX, 29883) +HANDLE_BAT(APINT_TYPE_PREFIX, 29884) +HANDLE_BAT(APINT_TYPE_PREFIX, 29885) +HANDLE_BAT(APINT_TYPE_PREFIX, 29886) +HANDLE_BAT(APINT_TYPE_PREFIX, 29887) +HANDLE_BAT(APINT_TYPE_PREFIX, 29888) +HANDLE_BAT(APINT_TYPE_PREFIX, 29889) +HANDLE_BAT(APINT_TYPE_PREFIX, 29890) +HANDLE_BAT(APINT_TYPE_PREFIX, 29891) +HANDLE_BAT(APINT_TYPE_PREFIX, 29892) +HANDLE_BAT(APINT_TYPE_PREFIX, 29893) +HANDLE_BAT(APINT_TYPE_PREFIX, 29894) +HANDLE_BAT(APINT_TYPE_PREFIX, 29895) +HANDLE_BAT(APINT_TYPE_PREFIX, 29896) +HANDLE_BAT(APINT_TYPE_PREFIX, 29897) +HANDLE_BAT(APINT_TYPE_PREFIX, 29898) +HANDLE_BAT(APINT_TYPE_PREFIX, 29899) +HANDLE_BAT(APINT_TYPE_PREFIX, 29900) +HANDLE_BAT(APINT_TYPE_PREFIX, 29901) +HANDLE_BAT(APINT_TYPE_PREFIX, 29902) +HANDLE_BAT(APINT_TYPE_PREFIX, 29903) +HANDLE_BAT(APINT_TYPE_PREFIX, 29904) +HANDLE_BAT(APINT_TYPE_PREFIX, 29905) +HANDLE_BAT(APINT_TYPE_PREFIX, 29906) +HANDLE_BAT(APINT_TYPE_PREFIX, 29907) +HANDLE_BAT(APINT_TYPE_PREFIX, 29908) +HANDLE_BAT(APINT_TYPE_PREFIX, 29909) +HANDLE_BAT(APINT_TYPE_PREFIX, 29910) +HANDLE_BAT(APINT_TYPE_PREFIX, 29911) +HANDLE_BAT(APINT_TYPE_PREFIX, 29912) +HANDLE_BAT(APINT_TYPE_PREFIX, 29913) +HANDLE_BAT(APINT_TYPE_PREFIX, 29914) +HANDLE_BAT(APINT_TYPE_PREFIX, 29915) +HANDLE_BAT(APINT_TYPE_PREFIX, 29916) +HANDLE_BAT(APINT_TYPE_PREFIX, 29917) +HANDLE_BAT(APINT_TYPE_PREFIX, 29918) +HANDLE_BAT(APINT_TYPE_PREFIX, 29919) +HANDLE_BAT(APINT_TYPE_PREFIX, 29920) +HANDLE_BAT(APINT_TYPE_PREFIX, 29921) +HANDLE_BAT(APINT_TYPE_PREFIX, 29922) +HANDLE_BAT(APINT_TYPE_PREFIX, 29923) +HANDLE_BAT(APINT_TYPE_PREFIX, 29924) +HANDLE_BAT(APINT_TYPE_PREFIX, 29925) +HANDLE_BAT(APINT_TYPE_PREFIX, 29926) +HANDLE_BAT(APINT_TYPE_PREFIX, 29927) +HANDLE_BAT(APINT_TYPE_PREFIX, 29928) +HANDLE_BAT(APINT_TYPE_PREFIX, 29929) +HANDLE_BAT(APINT_TYPE_PREFIX, 29930) +HANDLE_BAT(APINT_TYPE_PREFIX, 29931) +HANDLE_BAT(APINT_TYPE_PREFIX, 29932) +HANDLE_BAT(APINT_TYPE_PREFIX, 29933) +HANDLE_BAT(APINT_TYPE_PREFIX, 29934) +HANDLE_BAT(APINT_TYPE_PREFIX, 29935) +HANDLE_BAT(APINT_TYPE_PREFIX, 29936) +HANDLE_BAT(APINT_TYPE_PREFIX, 29937) +HANDLE_BAT(APINT_TYPE_PREFIX, 29938) +HANDLE_BAT(APINT_TYPE_PREFIX, 29939) +HANDLE_BAT(APINT_TYPE_PREFIX, 29940) +HANDLE_BAT(APINT_TYPE_PREFIX, 29941) +HANDLE_BAT(APINT_TYPE_PREFIX, 29942) +HANDLE_BAT(APINT_TYPE_PREFIX, 29943) +HANDLE_BAT(APINT_TYPE_PREFIX, 29944) +HANDLE_BAT(APINT_TYPE_PREFIX, 29945) +HANDLE_BAT(APINT_TYPE_PREFIX, 29946) +HANDLE_BAT(APINT_TYPE_PREFIX, 29947) +HANDLE_BAT(APINT_TYPE_PREFIX, 29948) +HANDLE_BAT(APINT_TYPE_PREFIX, 29949) +HANDLE_BAT(APINT_TYPE_PREFIX, 29950) +HANDLE_BAT(APINT_TYPE_PREFIX, 29951) +HANDLE_BAT(APINT_TYPE_PREFIX, 29952) +HANDLE_BAT(APINT_TYPE_PREFIX, 29953) +HANDLE_BAT(APINT_TYPE_PREFIX, 29954) +HANDLE_BAT(APINT_TYPE_PREFIX, 29955) +HANDLE_BAT(APINT_TYPE_PREFIX, 29956) +HANDLE_BAT(APINT_TYPE_PREFIX, 29957) +HANDLE_BAT(APINT_TYPE_PREFIX, 29958) +HANDLE_BAT(APINT_TYPE_PREFIX, 29959) +HANDLE_BAT(APINT_TYPE_PREFIX, 29960) +HANDLE_BAT(APINT_TYPE_PREFIX, 29961) +HANDLE_BAT(APINT_TYPE_PREFIX, 29962) +HANDLE_BAT(APINT_TYPE_PREFIX, 29963) +HANDLE_BAT(APINT_TYPE_PREFIX, 29964) +HANDLE_BAT(APINT_TYPE_PREFIX, 29965) +HANDLE_BAT(APINT_TYPE_PREFIX, 29966) +HANDLE_BAT(APINT_TYPE_PREFIX, 29967) +HANDLE_BAT(APINT_TYPE_PREFIX, 29968) +HANDLE_BAT(APINT_TYPE_PREFIX, 29969) +HANDLE_BAT(APINT_TYPE_PREFIX, 29970) +HANDLE_BAT(APINT_TYPE_PREFIX, 29971) +HANDLE_BAT(APINT_TYPE_PREFIX, 29972) +HANDLE_BAT(APINT_TYPE_PREFIX, 29973) +HANDLE_BAT(APINT_TYPE_PREFIX, 29974) +HANDLE_BAT(APINT_TYPE_PREFIX, 29975) +HANDLE_BAT(APINT_TYPE_PREFIX, 29976) +HANDLE_BAT(APINT_TYPE_PREFIX, 29977) +HANDLE_BAT(APINT_TYPE_PREFIX, 29978) +HANDLE_BAT(APINT_TYPE_PREFIX, 29979) +HANDLE_BAT(APINT_TYPE_PREFIX, 29980) +HANDLE_BAT(APINT_TYPE_PREFIX, 29981) +HANDLE_BAT(APINT_TYPE_PREFIX, 29982) +HANDLE_BAT(APINT_TYPE_PREFIX, 29983) +HANDLE_BAT(APINT_TYPE_PREFIX, 29984) +HANDLE_BAT(APINT_TYPE_PREFIX, 29985) +HANDLE_BAT(APINT_TYPE_PREFIX, 29986) +HANDLE_BAT(APINT_TYPE_PREFIX, 29987) +HANDLE_BAT(APINT_TYPE_PREFIX, 29988) +HANDLE_BAT(APINT_TYPE_PREFIX, 29989) +HANDLE_BAT(APINT_TYPE_PREFIX, 29990) +HANDLE_BAT(APINT_TYPE_PREFIX, 29991) +HANDLE_BAT(APINT_TYPE_PREFIX, 29992) +HANDLE_BAT(APINT_TYPE_PREFIX, 29993) +HANDLE_BAT(APINT_TYPE_PREFIX, 29994) +HANDLE_BAT(APINT_TYPE_PREFIX, 29995) +HANDLE_BAT(APINT_TYPE_PREFIX, 29996) +HANDLE_BAT(APINT_TYPE_PREFIX, 29997) +HANDLE_BAT(APINT_TYPE_PREFIX, 29998) +HANDLE_BAT(APINT_TYPE_PREFIX, 29999) +HANDLE_BAT(APINT_TYPE_PREFIX, 30000) +HANDLE_BAT(APINT_TYPE_PREFIX, 30001) +HANDLE_BAT(APINT_TYPE_PREFIX, 30002) +HANDLE_BAT(APINT_TYPE_PREFIX, 30003) +HANDLE_BAT(APINT_TYPE_PREFIX, 30004) +HANDLE_BAT(APINT_TYPE_PREFIX, 30005) +HANDLE_BAT(APINT_TYPE_PREFIX, 30006) +HANDLE_BAT(APINT_TYPE_PREFIX, 30007) +HANDLE_BAT(APINT_TYPE_PREFIX, 30008) +HANDLE_BAT(APINT_TYPE_PREFIX, 30009) +HANDLE_BAT(APINT_TYPE_PREFIX, 30010) +HANDLE_BAT(APINT_TYPE_PREFIX, 30011) +HANDLE_BAT(APINT_TYPE_PREFIX, 30012) +HANDLE_BAT(APINT_TYPE_PREFIX, 30013) +HANDLE_BAT(APINT_TYPE_PREFIX, 30014) +HANDLE_BAT(APINT_TYPE_PREFIX, 30015) +HANDLE_BAT(APINT_TYPE_PREFIX, 30016) +HANDLE_BAT(APINT_TYPE_PREFIX, 30017) +HANDLE_BAT(APINT_TYPE_PREFIX, 30018) +HANDLE_BAT(APINT_TYPE_PREFIX, 30019) +HANDLE_BAT(APINT_TYPE_PREFIX, 30020) +HANDLE_BAT(APINT_TYPE_PREFIX, 30021) +HANDLE_BAT(APINT_TYPE_PREFIX, 30022) +HANDLE_BAT(APINT_TYPE_PREFIX, 30023) +HANDLE_BAT(APINT_TYPE_PREFIX, 30024) +HANDLE_BAT(APINT_TYPE_PREFIX, 30025) +HANDLE_BAT(APINT_TYPE_PREFIX, 30026) +HANDLE_BAT(APINT_TYPE_PREFIX, 30027) +HANDLE_BAT(APINT_TYPE_PREFIX, 30028) +HANDLE_BAT(APINT_TYPE_PREFIX, 30029) +HANDLE_BAT(APINT_TYPE_PREFIX, 30030) +HANDLE_BAT(APINT_TYPE_PREFIX, 30031) +HANDLE_BAT(APINT_TYPE_PREFIX, 30032) +HANDLE_BAT(APINT_TYPE_PREFIX, 30033) +HANDLE_BAT(APINT_TYPE_PREFIX, 30034) +HANDLE_BAT(APINT_TYPE_PREFIX, 30035) +HANDLE_BAT(APINT_TYPE_PREFIX, 30036) +HANDLE_BAT(APINT_TYPE_PREFIX, 30037) +HANDLE_BAT(APINT_TYPE_PREFIX, 30038) +HANDLE_BAT(APINT_TYPE_PREFIX, 30039) +HANDLE_BAT(APINT_TYPE_PREFIX, 30040) +HANDLE_BAT(APINT_TYPE_PREFIX, 30041) +HANDLE_BAT(APINT_TYPE_PREFIX, 30042) +HANDLE_BAT(APINT_TYPE_PREFIX, 30043) +HANDLE_BAT(APINT_TYPE_PREFIX, 30044) +HANDLE_BAT(APINT_TYPE_PREFIX, 30045) +HANDLE_BAT(APINT_TYPE_PREFIX, 30046) +HANDLE_BAT(APINT_TYPE_PREFIX, 30047) +HANDLE_BAT(APINT_TYPE_PREFIX, 30048) +HANDLE_BAT(APINT_TYPE_PREFIX, 30049) +HANDLE_BAT(APINT_TYPE_PREFIX, 30050) +HANDLE_BAT(APINT_TYPE_PREFIX, 30051) +HANDLE_BAT(APINT_TYPE_PREFIX, 30052) +HANDLE_BAT(APINT_TYPE_PREFIX, 30053) +HANDLE_BAT(APINT_TYPE_PREFIX, 30054) +HANDLE_BAT(APINT_TYPE_PREFIX, 30055) +HANDLE_BAT(APINT_TYPE_PREFIX, 30056) +HANDLE_BAT(APINT_TYPE_PREFIX, 30057) +HANDLE_BAT(APINT_TYPE_PREFIX, 30058) +HANDLE_BAT(APINT_TYPE_PREFIX, 30059) +HANDLE_BAT(APINT_TYPE_PREFIX, 30060) +HANDLE_BAT(APINT_TYPE_PREFIX, 30061) +HANDLE_BAT(APINT_TYPE_PREFIX, 30062) +HANDLE_BAT(APINT_TYPE_PREFIX, 30063) +HANDLE_BAT(APINT_TYPE_PREFIX, 30064) +HANDLE_BAT(APINT_TYPE_PREFIX, 30065) +HANDLE_BAT(APINT_TYPE_PREFIX, 30066) +HANDLE_BAT(APINT_TYPE_PREFIX, 30067) +HANDLE_BAT(APINT_TYPE_PREFIX, 30068) +HANDLE_BAT(APINT_TYPE_PREFIX, 30069) +HANDLE_BAT(APINT_TYPE_PREFIX, 30070) +HANDLE_BAT(APINT_TYPE_PREFIX, 30071) +HANDLE_BAT(APINT_TYPE_PREFIX, 30072) +HANDLE_BAT(APINT_TYPE_PREFIX, 30073) +HANDLE_BAT(APINT_TYPE_PREFIX, 30074) +HANDLE_BAT(APINT_TYPE_PREFIX, 30075) +HANDLE_BAT(APINT_TYPE_PREFIX, 30076) +HANDLE_BAT(APINT_TYPE_PREFIX, 30077) +HANDLE_BAT(APINT_TYPE_PREFIX, 30078) +HANDLE_BAT(APINT_TYPE_PREFIX, 30079) +HANDLE_BAT(APINT_TYPE_PREFIX, 30080) +HANDLE_BAT(APINT_TYPE_PREFIX, 30081) +HANDLE_BAT(APINT_TYPE_PREFIX, 30082) +HANDLE_BAT(APINT_TYPE_PREFIX, 30083) +HANDLE_BAT(APINT_TYPE_PREFIX, 30084) +HANDLE_BAT(APINT_TYPE_PREFIX, 30085) +HANDLE_BAT(APINT_TYPE_PREFIX, 30086) +HANDLE_BAT(APINT_TYPE_PREFIX, 30087) +HANDLE_BAT(APINT_TYPE_PREFIX, 30088) +HANDLE_BAT(APINT_TYPE_PREFIX, 30089) +HANDLE_BAT(APINT_TYPE_PREFIX, 30090) +HANDLE_BAT(APINT_TYPE_PREFIX, 30091) +HANDLE_BAT(APINT_TYPE_PREFIX, 30092) +HANDLE_BAT(APINT_TYPE_PREFIX, 30093) +HANDLE_BAT(APINT_TYPE_PREFIX, 30094) +HANDLE_BAT(APINT_TYPE_PREFIX, 30095) +HANDLE_BAT(APINT_TYPE_PREFIX, 30096) +HANDLE_BAT(APINT_TYPE_PREFIX, 30097) +HANDLE_BAT(APINT_TYPE_PREFIX, 30098) +HANDLE_BAT(APINT_TYPE_PREFIX, 30099) +HANDLE_BAT(APINT_TYPE_PREFIX, 30100) +HANDLE_BAT(APINT_TYPE_PREFIX, 30101) +HANDLE_BAT(APINT_TYPE_PREFIX, 30102) +HANDLE_BAT(APINT_TYPE_PREFIX, 30103) +HANDLE_BAT(APINT_TYPE_PREFIX, 30104) +HANDLE_BAT(APINT_TYPE_PREFIX, 30105) +HANDLE_BAT(APINT_TYPE_PREFIX, 30106) +HANDLE_BAT(APINT_TYPE_PREFIX, 30107) +HANDLE_BAT(APINT_TYPE_PREFIX, 30108) +HANDLE_BAT(APINT_TYPE_PREFIX, 30109) +HANDLE_BAT(APINT_TYPE_PREFIX, 30110) +HANDLE_BAT(APINT_TYPE_PREFIX, 30111) +HANDLE_BAT(APINT_TYPE_PREFIX, 30112) +HANDLE_BAT(APINT_TYPE_PREFIX, 30113) +HANDLE_BAT(APINT_TYPE_PREFIX, 30114) +HANDLE_BAT(APINT_TYPE_PREFIX, 30115) +HANDLE_BAT(APINT_TYPE_PREFIX, 30116) +HANDLE_BAT(APINT_TYPE_PREFIX, 30117) +HANDLE_BAT(APINT_TYPE_PREFIX, 30118) +HANDLE_BAT(APINT_TYPE_PREFIX, 30119) +HANDLE_BAT(APINT_TYPE_PREFIX, 30120) +HANDLE_BAT(APINT_TYPE_PREFIX, 30121) +HANDLE_BAT(APINT_TYPE_PREFIX, 30122) +HANDLE_BAT(APINT_TYPE_PREFIX, 30123) +HANDLE_BAT(APINT_TYPE_PREFIX, 30124) +HANDLE_BAT(APINT_TYPE_PREFIX, 30125) +HANDLE_BAT(APINT_TYPE_PREFIX, 30126) +HANDLE_BAT(APINT_TYPE_PREFIX, 30127) +HANDLE_BAT(APINT_TYPE_PREFIX, 30128) +HANDLE_BAT(APINT_TYPE_PREFIX, 30129) +HANDLE_BAT(APINT_TYPE_PREFIX, 30130) +HANDLE_BAT(APINT_TYPE_PREFIX, 30131) +HANDLE_BAT(APINT_TYPE_PREFIX, 30132) +HANDLE_BAT(APINT_TYPE_PREFIX, 30133) +HANDLE_BAT(APINT_TYPE_PREFIX, 30134) +HANDLE_BAT(APINT_TYPE_PREFIX, 30135) +HANDLE_BAT(APINT_TYPE_PREFIX, 30136) +HANDLE_BAT(APINT_TYPE_PREFIX, 30137) +HANDLE_BAT(APINT_TYPE_PREFIX, 30138) +HANDLE_BAT(APINT_TYPE_PREFIX, 30139) +HANDLE_BAT(APINT_TYPE_PREFIX, 30140) +HANDLE_BAT(APINT_TYPE_PREFIX, 30141) +HANDLE_BAT(APINT_TYPE_PREFIX, 30142) +HANDLE_BAT(APINT_TYPE_PREFIX, 30143) +HANDLE_BAT(APINT_TYPE_PREFIX, 30144) +HANDLE_BAT(APINT_TYPE_PREFIX, 30145) +HANDLE_BAT(APINT_TYPE_PREFIX, 30146) +HANDLE_BAT(APINT_TYPE_PREFIX, 30147) +HANDLE_BAT(APINT_TYPE_PREFIX, 30148) +HANDLE_BAT(APINT_TYPE_PREFIX, 30149) +HANDLE_BAT(APINT_TYPE_PREFIX, 30150) +HANDLE_BAT(APINT_TYPE_PREFIX, 30151) +HANDLE_BAT(APINT_TYPE_PREFIX, 30152) +HANDLE_BAT(APINT_TYPE_PREFIX, 30153) +HANDLE_BAT(APINT_TYPE_PREFIX, 30154) +HANDLE_BAT(APINT_TYPE_PREFIX, 30155) +HANDLE_BAT(APINT_TYPE_PREFIX, 30156) +HANDLE_BAT(APINT_TYPE_PREFIX, 30157) +HANDLE_BAT(APINT_TYPE_PREFIX, 30158) +HANDLE_BAT(APINT_TYPE_PREFIX, 30159) +HANDLE_BAT(APINT_TYPE_PREFIX, 30160) +HANDLE_BAT(APINT_TYPE_PREFIX, 30161) +HANDLE_BAT(APINT_TYPE_PREFIX, 30162) +HANDLE_BAT(APINT_TYPE_PREFIX, 30163) +HANDLE_BAT(APINT_TYPE_PREFIX, 30164) +HANDLE_BAT(APINT_TYPE_PREFIX, 30165) +HANDLE_BAT(APINT_TYPE_PREFIX, 30166) +HANDLE_BAT(APINT_TYPE_PREFIX, 30167) +HANDLE_BAT(APINT_TYPE_PREFIX, 30168) +HANDLE_BAT(APINT_TYPE_PREFIX, 30169) +HANDLE_BAT(APINT_TYPE_PREFIX, 30170) +HANDLE_BAT(APINT_TYPE_PREFIX, 30171) +HANDLE_BAT(APINT_TYPE_PREFIX, 30172) +HANDLE_BAT(APINT_TYPE_PREFIX, 30173) +HANDLE_BAT(APINT_TYPE_PREFIX, 30174) +HANDLE_BAT(APINT_TYPE_PREFIX, 30175) +HANDLE_BAT(APINT_TYPE_PREFIX, 30176) +HANDLE_BAT(APINT_TYPE_PREFIX, 30177) +HANDLE_BAT(APINT_TYPE_PREFIX, 30178) +HANDLE_BAT(APINT_TYPE_PREFIX, 30179) +HANDLE_BAT(APINT_TYPE_PREFIX, 30180) +HANDLE_BAT(APINT_TYPE_PREFIX, 30181) +HANDLE_BAT(APINT_TYPE_PREFIX, 30182) +HANDLE_BAT(APINT_TYPE_PREFIX, 30183) +HANDLE_BAT(APINT_TYPE_PREFIX, 30184) +HANDLE_BAT(APINT_TYPE_PREFIX, 30185) +HANDLE_BAT(APINT_TYPE_PREFIX, 30186) +HANDLE_BAT(APINT_TYPE_PREFIX, 30187) +HANDLE_BAT(APINT_TYPE_PREFIX, 30188) +HANDLE_BAT(APINT_TYPE_PREFIX, 30189) +HANDLE_BAT(APINT_TYPE_PREFIX, 30190) +HANDLE_BAT(APINT_TYPE_PREFIX, 30191) +HANDLE_BAT(APINT_TYPE_PREFIX, 30192) +HANDLE_BAT(APINT_TYPE_PREFIX, 30193) +HANDLE_BAT(APINT_TYPE_PREFIX, 30194) +HANDLE_BAT(APINT_TYPE_PREFIX, 30195) +HANDLE_BAT(APINT_TYPE_PREFIX, 30196) +HANDLE_BAT(APINT_TYPE_PREFIX, 30197) +HANDLE_BAT(APINT_TYPE_PREFIX, 30198) +HANDLE_BAT(APINT_TYPE_PREFIX, 30199) +HANDLE_BAT(APINT_TYPE_PREFIX, 30200) +HANDLE_BAT(APINT_TYPE_PREFIX, 30201) +HANDLE_BAT(APINT_TYPE_PREFIX, 30202) +HANDLE_BAT(APINT_TYPE_PREFIX, 30203) +HANDLE_BAT(APINT_TYPE_PREFIX, 30204) +HANDLE_BAT(APINT_TYPE_PREFIX, 30205) +HANDLE_BAT(APINT_TYPE_PREFIX, 30206) +HANDLE_BAT(APINT_TYPE_PREFIX, 30207) +HANDLE_BAT(APINT_TYPE_PREFIX, 30208) +HANDLE_BAT(APINT_TYPE_PREFIX, 30209) +HANDLE_BAT(APINT_TYPE_PREFIX, 30210) +HANDLE_BAT(APINT_TYPE_PREFIX, 30211) +HANDLE_BAT(APINT_TYPE_PREFIX, 30212) +HANDLE_BAT(APINT_TYPE_PREFIX, 30213) +HANDLE_BAT(APINT_TYPE_PREFIX, 30214) +HANDLE_BAT(APINT_TYPE_PREFIX, 30215) +HANDLE_BAT(APINT_TYPE_PREFIX, 30216) +HANDLE_BAT(APINT_TYPE_PREFIX, 30217) +HANDLE_BAT(APINT_TYPE_PREFIX, 30218) +HANDLE_BAT(APINT_TYPE_PREFIX, 30219) +HANDLE_BAT(APINT_TYPE_PREFIX, 30220) +HANDLE_BAT(APINT_TYPE_PREFIX, 30221) +HANDLE_BAT(APINT_TYPE_PREFIX, 30222) +HANDLE_BAT(APINT_TYPE_PREFIX, 30223) +HANDLE_BAT(APINT_TYPE_PREFIX, 30224) +HANDLE_BAT(APINT_TYPE_PREFIX, 30225) +HANDLE_BAT(APINT_TYPE_PREFIX, 30226) +HANDLE_BAT(APINT_TYPE_PREFIX, 30227) +HANDLE_BAT(APINT_TYPE_PREFIX, 30228) +HANDLE_BAT(APINT_TYPE_PREFIX, 30229) +HANDLE_BAT(APINT_TYPE_PREFIX, 30230) +HANDLE_BAT(APINT_TYPE_PREFIX, 30231) +HANDLE_BAT(APINT_TYPE_PREFIX, 30232) +HANDLE_BAT(APINT_TYPE_PREFIX, 30233) +HANDLE_BAT(APINT_TYPE_PREFIX, 30234) +HANDLE_BAT(APINT_TYPE_PREFIX, 30235) +HANDLE_BAT(APINT_TYPE_PREFIX, 30236) +HANDLE_BAT(APINT_TYPE_PREFIX, 30237) +HANDLE_BAT(APINT_TYPE_PREFIX, 30238) +HANDLE_BAT(APINT_TYPE_PREFIX, 30239) +HANDLE_BAT(APINT_TYPE_PREFIX, 30240) +HANDLE_BAT(APINT_TYPE_PREFIX, 30241) +HANDLE_BAT(APINT_TYPE_PREFIX, 30242) +HANDLE_BAT(APINT_TYPE_PREFIX, 30243) +HANDLE_BAT(APINT_TYPE_PREFIX, 30244) +HANDLE_BAT(APINT_TYPE_PREFIX, 30245) +HANDLE_BAT(APINT_TYPE_PREFIX, 30246) +HANDLE_BAT(APINT_TYPE_PREFIX, 30247) +HANDLE_BAT(APINT_TYPE_PREFIX, 30248) +HANDLE_BAT(APINT_TYPE_PREFIX, 30249) +HANDLE_BAT(APINT_TYPE_PREFIX, 30250) +HANDLE_BAT(APINT_TYPE_PREFIX, 30251) +HANDLE_BAT(APINT_TYPE_PREFIX, 30252) +HANDLE_BAT(APINT_TYPE_PREFIX, 30253) +HANDLE_BAT(APINT_TYPE_PREFIX, 30254) +HANDLE_BAT(APINT_TYPE_PREFIX, 30255) +HANDLE_BAT(APINT_TYPE_PREFIX, 30256) +HANDLE_BAT(APINT_TYPE_PREFIX, 30257) +HANDLE_BAT(APINT_TYPE_PREFIX, 30258) +HANDLE_BAT(APINT_TYPE_PREFIX, 30259) +HANDLE_BAT(APINT_TYPE_PREFIX, 30260) +HANDLE_BAT(APINT_TYPE_PREFIX, 30261) +HANDLE_BAT(APINT_TYPE_PREFIX, 30262) +HANDLE_BAT(APINT_TYPE_PREFIX, 30263) +HANDLE_BAT(APINT_TYPE_PREFIX, 30264) +HANDLE_BAT(APINT_TYPE_PREFIX, 30265) +HANDLE_BAT(APINT_TYPE_PREFIX, 30266) +HANDLE_BAT(APINT_TYPE_PREFIX, 30267) +HANDLE_BAT(APINT_TYPE_PREFIX, 30268) +HANDLE_BAT(APINT_TYPE_PREFIX, 30269) +HANDLE_BAT(APINT_TYPE_PREFIX, 30270) +HANDLE_BAT(APINT_TYPE_PREFIX, 30271) +HANDLE_BAT(APINT_TYPE_PREFIX, 30272) +HANDLE_BAT(APINT_TYPE_PREFIX, 30273) +HANDLE_BAT(APINT_TYPE_PREFIX, 30274) +HANDLE_BAT(APINT_TYPE_PREFIX, 30275) +HANDLE_BAT(APINT_TYPE_PREFIX, 30276) +HANDLE_BAT(APINT_TYPE_PREFIX, 30277) +HANDLE_BAT(APINT_TYPE_PREFIX, 30278) +HANDLE_BAT(APINT_TYPE_PREFIX, 30279) +HANDLE_BAT(APINT_TYPE_PREFIX, 30280) +HANDLE_BAT(APINT_TYPE_PREFIX, 30281) +HANDLE_BAT(APINT_TYPE_PREFIX, 30282) +HANDLE_BAT(APINT_TYPE_PREFIX, 30283) +HANDLE_BAT(APINT_TYPE_PREFIX, 30284) +HANDLE_BAT(APINT_TYPE_PREFIX, 30285) +HANDLE_BAT(APINT_TYPE_PREFIX, 30286) +HANDLE_BAT(APINT_TYPE_PREFIX, 30287) +HANDLE_BAT(APINT_TYPE_PREFIX, 30288) +HANDLE_BAT(APINT_TYPE_PREFIX, 30289) +HANDLE_BAT(APINT_TYPE_PREFIX, 30290) +HANDLE_BAT(APINT_TYPE_PREFIX, 30291) +HANDLE_BAT(APINT_TYPE_PREFIX, 30292) +HANDLE_BAT(APINT_TYPE_PREFIX, 30293) +HANDLE_BAT(APINT_TYPE_PREFIX, 30294) +HANDLE_BAT(APINT_TYPE_PREFIX, 30295) +HANDLE_BAT(APINT_TYPE_PREFIX, 30296) +HANDLE_BAT(APINT_TYPE_PREFIX, 30297) +HANDLE_BAT(APINT_TYPE_PREFIX, 30298) +HANDLE_BAT(APINT_TYPE_PREFIX, 30299) +HANDLE_BAT(APINT_TYPE_PREFIX, 30300) +HANDLE_BAT(APINT_TYPE_PREFIX, 30301) +HANDLE_BAT(APINT_TYPE_PREFIX, 30302) +HANDLE_BAT(APINT_TYPE_PREFIX, 30303) +HANDLE_BAT(APINT_TYPE_PREFIX, 30304) +HANDLE_BAT(APINT_TYPE_PREFIX, 30305) +HANDLE_BAT(APINT_TYPE_PREFIX, 30306) +HANDLE_BAT(APINT_TYPE_PREFIX, 30307) +HANDLE_BAT(APINT_TYPE_PREFIX, 30308) +HANDLE_BAT(APINT_TYPE_PREFIX, 30309) +HANDLE_BAT(APINT_TYPE_PREFIX, 30310) +HANDLE_BAT(APINT_TYPE_PREFIX, 30311) +HANDLE_BAT(APINT_TYPE_PREFIX, 30312) +HANDLE_BAT(APINT_TYPE_PREFIX, 30313) +HANDLE_BAT(APINT_TYPE_PREFIX, 30314) +HANDLE_BAT(APINT_TYPE_PREFIX, 30315) +HANDLE_BAT(APINT_TYPE_PREFIX, 30316) +HANDLE_BAT(APINT_TYPE_PREFIX, 30317) +HANDLE_BAT(APINT_TYPE_PREFIX, 30318) +HANDLE_BAT(APINT_TYPE_PREFIX, 30319) +HANDLE_BAT(APINT_TYPE_PREFIX, 30320) +HANDLE_BAT(APINT_TYPE_PREFIX, 30321) +HANDLE_BAT(APINT_TYPE_PREFIX, 30322) +HANDLE_BAT(APINT_TYPE_PREFIX, 30323) +HANDLE_BAT(APINT_TYPE_PREFIX, 30324) +HANDLE_BAT(APINT_TYPE_PREFIX, 30325) +HANDLE_BAT(APINT_TYPE_PREFIX, 30326) +HANDLE_BAT(APINT_TYPE_PREFIX, 30327) +HANDLE_BAT(APINT_TYPE_PREFIX, 30328) +HANDLE_BAT(APINT_TYPE_PREFIX, 30329) +HANDLE_BAT(APINT_TYPE_PREFIX, 30330) +HANDLE_BAT(APINT_TYPE_PREFIX, 30331) +HANDLE_BAT(APINT_TYPE_PREFIX, 30332) +HANDLE_BAT(APINT_TYPE_PREFIX, 30333) +HANDLE_BAT(APINT_TYPE_PREFIX, 30334) +HANDLE_BAT(APINT_TYPE_PREFIX, 30335) +HANDLE_BAT(APINT_TYPE_PREFIX, 30336) +HANDLE_BAT(APINT_TYPE_PREFIX, 30337) +HANDLE_BAT(APINT_TYPE_PREFIX, 30338) +HANDLE_BAT(APINT_TYPE_PREFIX, 30339) +HANDLE_BAT(APINT_TYPE_PREFIX, 30340) +HANDLE_BAT(APINT_TYPE_PREFIX, 30341) +HANDLE_BAT(APINT_TYPE_PREFIX, 30342) +HANDLE_BAT(APINT_TYPE_PREFIX, 30343) +HANDLE_BAT(APINT_TYPE_PREFIX, 30344) +HANDLE_BAT(APINT_TYPE_PREFIX, 30345) +HANDLE_BAT(APINT_TYPE_PREFIX, 30346) +HANDLE_BAT(APINT_TYPE_PREFIX, 30347) +HANDLE_BAT(APINT_TYPE_PREFIX, 30348) +HANDLE_BAT(APINT_TYPE_PREFIX, 30349) +HANDLE_BAT(APINT_TYPE_PREFIX, 30350) +HANDLE_BAT(APINT_TYPE_PREFIX, 30351) +HANDLE_BAT(APINT_TYPE_PREFIX, 30352) +HANDLE_BAT(APINT_TYPE_PREFIX, 30353) +HANDLE_BAT(APINT_TYPE_PREFIX, 30354) +HANDLE_BAT(APINT_TYPE_PREFIX, 30355) +HANDLE_BAT(APINT_TYPE_PREFIX, 30356) +HANDLE_BAT(APINT_TYPE_PREFIX, 30357) +HANDLE_BAT(APINT_TYPE_PREFIX, 30358) +HANDLE_BAT(APINT_TYPE_PREFIX, 30359) +HANDLE_BAT(APINT_TYPE_PREFIX, 30360) +HANDLE_BAT(APINT_TYPE_PREFIX, 30361) +HANDLE_BAT(APINT_TYPE_PREFIX, 30362) +HANDLE_BAT(APINT_TYPE_PREFIX, 30363) +HANDLE_BAT(APINT_TYPE_PREFIX, 30364) +HANDLE_BAT(APINT_TYPE_PREFIX, 30365) +HANDLE_BAT(APINT_TYPE_PREFIX, 30366) +HANDLE_BAT(APINT_TYPE_PREFIX, 30367) +HANDLE_BAT(APINT_TYPE_PREFIX, 30368) +HANDLE_BAT(APINT_TYPE_PREFIX, 30369) +HANDLE_BAT(APINT_TYPE_PREFIX, 30370) +HANDLE_BAT(APINT_TYPE_PREFIX, 30371) +HANDLE_BAT(APINT_TYPE_PREFIX, 30372) +HANDLE_BAT(APINT_TYPE_PREFIX, 30373) +HANDLE_BAT(APINT_TYPE_PREFIX, 30374) +HANDLE_BAT(APINT_TYPE_PREFIX, 30375) +HANDLE_BAT(APINT_TYPE_PREFIX, 30376) +HANDLE_BAT(APINT_TYPE_PREFIX, 30377) +HANDLE_BAT(APINT_TYPE_PREFIX, 30378) +HANDLE_BAT(APINT_TYPE_PREFIX, 30379) +HANDLE_BAT(APINT_TYPE_PREFIX, 30380) +HANDLE_BAT(APINT_TYPE_PREFIX, 30381) +HANDLE_BAT(APINT_TYPE_PREFIX, 30382) +HANDLE_BAT(APINT_TYPE_PREFIX, 30383) +HANDLE_BAT(APINT_TYPE_PREFIX, 30384) +HANDLE_BAT(APINT_TYPE_PREFIX, 30385) +HANDLE_BAT(APINT_TYPE_PREFIX, 30386) +HANDLE_BAT(APINT_TYPE_PREFIX, 30387) +HANDLE_BAT(APINT_TYPE_PREFIX, 30388) +HANDLE_BAT(APINT_TYPE_PREFIX, 30389) +HANDLE_BAT(APINT_TYPE_PREFIX, 30390) +HANDLE_BAT(APINT_TYPE_PREFIX, 30391) +HANDLE_BAT(APINT_TYPE_PREFIX, 30392) +HANDLE_BAT(APINT_TYPE_PREFIX, 30393) +HANDLE_BAT(APINT_TYPE_PREFIX, 30394) +HANDLE_BAT(APINT_TYPE_PREFIX, 30395) +HANDLE_BAT(APINT_TYPE_PREFIX, 30396) +HANDLE_BAT(APINT_TYPE_PREFIX, 30397) +HANDLE_BAT(APINT_TYPE_PREFIX, 30398) +HANDLE_BAT(APINT_TYPE_PREFIX, 30399) +HANDLE_BAT(APINT_TYPE_PREFIX, 30400) +HANDLE_BAT(APINT_TYPE_PREFIX, 30401) +HANDLE_BAT(APINT_TYPE_PREFIX, 30402) +HANDLE_BAT(APINT_TYPE_PREFIX, 30403) +HANDLE_BAT(APINT_TYPE_PREFIX, 30404) +HANDLE_BAT(APINT_TYPE_PREFIX, 30405) +HANDLE_BAT(APINT_TYPE_PREFIX, 30406) +HANDLE_BAT(APINT_TYPE_PREFIX, 30407) +HANDLE_BAT(APINT_TYPE_PREFIX, 30408) +HANDLE_BAT(APINT_TYPE_PREFIX, 30409) +HANDLE_BAT(APINT_TYPE_PREFIX, 30410) +HANDLE_BAT(APINT_TYPE_PREFIX, 30411) +HANDLE_BAT(APINT_TYPE_PREFIX, 30412) +HANDLE_BAT(APINT_TYPE_PREFIX, 30413) +HANDLE_BAT(APINT_TYPE_PREFIX, 30414) +HANDLE_BAT(APINT_TYPE_PREFIX, 30415) +HANDLE_BAT(APINT_TYPE_PREFIX, 30416) +HANDLE_BAT(APINT_TYPE_PREFIX, 30417) +HANDLE_BAT(APINT_TYPE_PREFIX, 30418) +HANDLE_BAT(APINT_TYPE_PREFIX, 30419) +HANDLE_BAT(APINT_TYPE_PREFIX, 30420) +HANDLE_BAT(APINT_TYPE_PREFIX, 30421) +HANDLE_BAT(APINT_TYPE_PREFIX, 30422) +HANDLE_BAT(APINT_TYPE_PREFIX, 30423) +HANDLE_BAT(APINT_TYPE_PREFIX, 30424) +HANDLE_BAT(APINT_TYPE_PREFIX, 30425) +HANDLE_BAT(APINT_TYPE_PREFIX, 30426) +HANDLE_BAT(APINT_TYPE_PREFIX, 30427) +HANDLE_BAT(APINT_TYPE_PREFIX, 30428) +HANDLE_BAT(APINT_TYPE_PREFIX, 30429) +HANDLE_BAT(APINT_TYPE_PREFIX, 30430) +HANDLE_BAT(APINT_TYPE_PREFIX, 30431) +HANDLE_BAT(APINT_TYPE_PREFIX, 30432) +HANDLE_BAT(APINT_TYPE_PREFIX, 30433) +HANDLE_BAT(APINT_TYPE_PREFIX, 30434) +HANDLE_BAT(APINT_TYPE_PREFIX, 30435) +HANDLE_BAT(APINT_TYPE_PREFIX, 30436) +HANDLE_BAT(APINT_TYPE_PREFIX, 30437) +HANDLE_BAT(APINT_TYPE_PREFIX, 30438) +HANDLE_BAT(APINT_TYPE_PREFIX, 30439) +HANDLE_BAT(APINT_TYPE_PREFIX, 30440) +HANDLE_BAT(APINT_TYPE_PREFIX, 30441) +HANDLE_BAT(APINT_TYPE_PREFIX, 30442) +HANDLE_BAT(APINT_TYPE_PREFIX, 30443) +HANDLE_BAT(APINT_TYPE_PREFIX, 30444) +HANDLE_BAT(APINT_TYPE_PREFIX, 30445) +HANDLE_BAT(APINT_TYPE_PREFIX, 30446) +HANDLE_BAT(APINT_TYPE_PREFIX, 30447) +HANDLE_BAT(APINT_TYPE_PREFIX, 30448) +HANDLE_BAT(APINT_TYPE_PREFIX, 30449) +HANDLE_BAT(APINT_TYPE_PREFIX, 30450) +HANDLE_BAT(APINT_TYPE_PREFIX, 30451) +HANDLE_BAT(APINT_TYPE_PREFIX, 30452) +HANDLE_BAT(APINT_TYPE_PREFIX, 30453) +HANDLE_BAT(APINT_TYPE_PREFIX, 30454) +HANDLE_BAT(APINT_TYPE_PREFIX, 30455) +HANDLE_BAT(APINT_TYPE_PREFIX, 30456) +HANDLE_BAT(APINT_TYPE_PREFIX, 30457) +HANDLE_BAT(APINT_TYPE_PREFIX, 30458) +HANDLE_BAT(APINT_TYPE_PREFIX, 30459) +HANDLE_BAT(APINT_TYPE_PREFIX, 30460) +HANDLE_BAT(APINT_TYPE_PREFIX, 30461) +HANDLE_BAT(APINT_TYPE_PREFIX, 30462) +HANDLE_BAT(APINT_TYPE_PREFIX, 30463) +HANDLE_BAT(APINT_TYPE_PREFIX, 30464) +HANDLE_BAT(APINT_TYPE_PREFIX, 30465) +HANDLE_BAT(APINT_TYPE_PREFIX, 30466) +HANDLE_BAT(APINT_TYPE_PREFIX, 30467) +HANDLE_BAT(APINT_TYPE_PREFIX, 30468) +HANDLE_BAT(APINT_TYPE_PREFIX, 30469) +HANDLE_BAT(APINT_TYPE_PREFIX, 30470) +HANDLE_BAT(APINT_TYPE_PREFIX, 30471) +HANDLE_BAT(APINT_TYPE_PREFIX, 30472) +HANDLE_BAT(APINT_TYPE_PREFIX, 30473) +HANDLE_BAT(APINT_TYPE_PREFIX, 30474) +HANDLE_BAT(APINT_TYPE_PREFIX, 30475) +HANDLE_BAT(APINT_TYPE_PREFIX, 30476) +HANDLE_BAT(APINT_TYPE_PREFIX, 30477) +HANDLE_BAT(APINT_TYPE_PREFIX, 30478) +HANDLE_BAT(APINT_TYPE_PREFIX, 30479) +HANDLE_BAT(APINT_TYPE_PREFIX, 30480) +HANDLE_BAT(APINT_TYPE_PREFIX, 30481) +HANDLE_BAT(APINT_TYPE_PREFIX, 30482) +HANDLE_BAT(APINT_TYPE_PREFIX, 30483) +HANDLE_BAT(APINT_TYPE_PREFIX, 30484) +HANDLE_BAT(APINT_TYPE_PREFIX, 30485) +HANDLE_BAT(APINT_TYPE_PREFIX, 30486) +HANDLE_BAT(APINT_TYPE_PREFIX, 30487) +HANDLE_BAT(APINT_TYPE_PREFIX, 30488) +HANDLE_BAT(APINT_TYPE_PREFIX, 30489) +HANDLE_BAT(APINT_TYPE_PREFIX, 30490) +HANDLE_BAT(APINT_TYPE_PREFIX, 30491) +HANDLE_BAT(APINT_TYPE_PREFIX, 30492) +HANDLE_BAT(APINT_TYPE_PREFIX, 30493) +HANDLE_BAT(APINT_TYPE_PREFIX, 30494) +HANDLE_BAT(APINT_TYPE_PREFIX, 30495) +HANDLE_BAT(APINT_TYPE_PREFIX, 30496) +HANDLE_BAT(APINT_TYPE_PREFIX, 30497) +HANDLE_BAT(APINT_TYPE_PREFIX, 30498) +HANDLE_BAT(APINT_TYPE_PREFIX, 30499) +HANDLE_BAT(APINT_TYPE_PREFIX, 30500) +HANDLE_BAT(APINT_TYPE_PREFIX, 30501) +HANDLE_BAT(APINT_TYPE_PREFIX, 30502) +HANDLE_BAT(APINT_TYPE_PREFIX, 30503) +HANDLE_BAT(APINT_TYPE_PREFIX, 30504) +HANDLE_BAT(APINT_TYPE_PREFIX, 30505) +HANDLE_BAT(APINT_TYPE_PREFIX, 30506) +HANDLE_BAT(APINT_TYPE_PREFIX, 30507) +HANDLE_BAT(APINT_TYPE_PREFIX, 30508) +HANDLE_BAT(APINT_TYPE_PREFIX, 30509) +HANDLE_BAT(APINT_TYPE_PREFIX, 30510) +HANDLE_BAT(APINT_TYPE_PREFIX, 30511) +HANDLE_BAT(APINT_TYPE_PREFIX, 30512) +HANDLE_BAT(APINT_TYPE_PREFIX, 30513) +HANDLE_BAT(APINT_TYPE_PREFIX, 30514) +HANDLE_BAT(APINT_TYPE_PREFIX, 30515) +HANDLE_BAT(APINT_TYPE_PREFIX, 30516) +HANDLE_BAT(APINT_TYPE_PREFIX, 30517) +HANDLE_BAT(APINT_TYPE_PREFIX, 30518) +HANDLE_BAT(APINT_TYPE_PREFIX, 30519) +HANDLE_BAT(APINT_TYPE_PREFIX, 30520) +HANDLE_BAT(APINT_TYPE_PREFIX, 30521) +HANDLE_BAT(APINT_TYPE_PREFIX, 30522) +HANDLE_BAT(APINT_TYPE_PREFIX, 30523) +HANDLE_BAT(APINT_TYPE_PREFIX, 30524) +HANDLE_BAT(APINT_TYPE_PREFIX, 30525) +HANDLE_BAT(APINT_TYPE_PREFIX, 30526) +HANDLE_BAT(APINT_TYPE_PREFIX, 30527) +HANDLE_BAT(APINT_TYPE_PREFIX, 30528) +HANDLE_BAT(APINT_TYPE_PREFIX, 30529) +HANDLE_BAT(APINT_TYPE_PREFIX, 30530) +HANDLE_BAT(APINT_TYPE_PREFIX, 30531) +HANDLE_BAT(APINT_TYPE_PREFIX, 30532) +HANDLE_BAT(APINT_TYPE_PREFIX, 30533) +HANDLE_BAT(APINT_TYPE_PREFIX, 30534) +HANDLE_BAT(APINT_TYPE_PREFIX, 30535) +HANDLE_BAT(APINT_TYPE_PREFIX, 30536) +HANDLE_BAT(APINT_TYPE_PREFIX, 30537) +HANDLE_BAT(APINT_TYPE_PREFIX, 30538) +HANDLE_BAT(APINT_TYPE_PREFIX, 30539) +HANDLE_BAT(APINT_TYPE_PREFIX, 30540) +HANDLE_BAT(APINT_TYPE_PREFIX, 30541) +HANDLE_BAT(APINT_TYPE_PREFIX, 30542) +HANDLE_BAT(APINT_TYPE_PREFIX, 30543) +HANDLE_BAT(APINT_TYPE_PREFIX, 30544) +HANDLE_BAT(APINT_TYPE_PREFIX, 30545) +HANDLE_BAT(APINT_TYPE_PREFIX, 30546) +HANDLE_BAT(APINT_TYPE_PREFIX, 30547) +HANDLE_BAT(APINT_TYPE_PREFIX, 30548) +HANDLE_BAT(APINT_TYPE_PREFIX, 30549) +HANDLE_BAT(APINT_TYPE_PREFIX, 30550) +HANDLE_BAT(APINT_TYPE_PREFIX, 30551) +HANDLE_BAT(APINT_TYPE_PREFIX, 30552) +HANDLE_BAT(APINT_TYPE_PREFIX, 30553) +HANDLE_BAT(APINT_TYPE_PREFIX, 30554) +HANDLE_BAT(APINT_TYPE_PREFIX, 30555) +HANDLE_BAT(APINT_TYPE_PREFIX, 30556) +HANDLE_BAT(APINT_TYPE_PREFIX, 30557) +HANDLE_BAT(APINT_TYPE_PREFIX, 30558) +HANDLE_BAT(APINT_TYPE_PREFIX, 30559) +HANDLE_BAT(APINT_TYPE_PREFIX, 30560) +HANDLE_BAT(APINT_TYPE_PREFIX, 30561) +HANDLE_BAT(APINT_TYPE_PREFIX, 30562) +HANDLE_BAT(APINT_TYPE_PREFIX, 30563) +HANDLE_BAT(APINT_TYPE_PREFIX, 30564) +HANDLE_BAT(APINT_TYPE_PREFIX, 30565) +HANDLE_BAT(APINT_TYPE_PREFIX, 30566) +HANDLE_BAT(APINT_TYPE_PREFIX, 30567) +HANDLE_BAT(APINT_TYPE_PREFIX, 30568) +HANDLE_BAT(APINT_TYPE_PREFIX, 30569) +HANDLE_BAT(APINT_TYPE_PREFIX, 30570) +HANDLE_BAT(APINT_TYPE_PREFIX, 30571) +HANDLE_BAT(APINT_TYPE_PREFIX, 30572) +HANDLE_BAT(APINT_TYPE_PREFIX, 30573) +HANDLE_BAT(APINT_TYPE_PREFIX, 30574) +HANDLE_BAT(APINT_TYPE_PREFIX, 30575) +HANDLE_BAT(APINT_TYPE_PREFIX, 30576) +HANDLE_BAT(APINT_TYPE_PREFIX, 30577) +HANDLE_BAT(APINT_TYPE_PREFIX, 30578) +HANDLE_BAT(APINT_TYPE_PREFIX, 30579) +HANDLE_BAT(APINT_TYPE_PREFIX, 30580) +HANDLE_BAT(APINT_TYPE_PREFIX, 30581) +HANDLE_BAT(APINT_TYPE_PREFIX, 30582) +HANDLE_BAT(APINT_TYPE_PREFIX, 30583) +HANDLE_BAT(APINT_TYPE_PREFIX, 30584) +HANDLE_BAT(APINT_TYPE_PREFIX, 30585) +HANDLE_BAT(APINT_TYPE_PREFIX, 30586) +HANDLE_BAT(APINT_TYPE_PREFIX, 30587) +HANDLE_BAT(APINT_TYPE_PREFIX, 30588) +HANDLE_BAT(APINT_TYPE_PREFIX, 30589) +HANDLE_BAT(APINT_TYPE_PREFIX, 30590) +HANDLE_BAT(APINT_TYPE_PREFIX, 30591) +HANDLE_BAT(APINT_TYPE_PREFIX, 30592) +HANDLE_BAT(APINT_TYPE_PREFIX, 30593) +HANDLE_BAT(APINT_TYPE_PREFIX, 30594) +HANDLE_BAT(APINT_TYPE_PREFIX, 30595) +HANDLE_BAT(APINT_TYPE_PREFIX, 30596) +HANDLE_BAT(APINT_TYPE_PREFIX, 30597) +HANDLE_BAT(APINT_TYPE_PREFIX, 30598) +HANDLE_BAT(APINT_TYPE_PREFIX, 30599) +HANDLE_BAT(APINT_TYPE_PREFIX, 30600) +HANDLE_BAT(APINT_TYPE_PREFIX, 30601) +HANDLE_BAT(APINT_TYPE_PREFIX, 30602) +HANDLE_BAT(APINT_TYPE_PREFIX, 30603) +HANDLE_BAT(APINT_TYPE_PREFIX, 30604) +HANDLE_BAT(APINT_TYPE_PREFIX, 30605) +HANDLE_BAT(APINT_TYPE_PREFIX, 30606) +HANDLE_BAT(APINT_TYPE_PREFIX, 30607) +HANDLE_BAT(APINT_TYPE_PREFIX, 30608) +HANDLE_BAT(APINT_TYPE_PREFIX, 30609) +HANDLE_BAT(APINT_TYPE_PREFIX, 30610) +HANDLE_BAT(APINT_TYPE_PREFIX, 30611) +HANDLE_BAT(APINT_TYPE_PREFIX, 30612) +HANDLE_BAT(APINT_TYPE_PREFIX, 30613) +HANDLE_BAT(APINT_TYPE_PREFIX, 30614) +HANDLE_BAT(APINT_TYPE_PREFIX, 30615) +HANDLE_BAT(APINT_TYPE_PREFIX, 30616) +HANDLE_BAT(APINT_TYPE_PREFIX, 30617) +HANDLE_BAT(APINT_TYPE_PREFIX, 30618) +HANDLE_BAT(APINT_TYPE_PREFIX, 30619) +HANDLE_BAT(APINT_TYPE_PREFIX, 30620) +HANDLE_BAT(APINT_TYPE_PREFIX, 30621) +HANDLE_BAT(APINT_TYPE_PREFIX, 30622) +HANDLE_BAT(APINT_TYPE_PREFIX, 30623) +HANDLE_BAT(APINT_TYPE_PREFIX, 30624) +HANDLE_BAT(APINT_TYPE_PREFIX, 30625) +HANDLE_BAT(APINT_TYPE_PREFIX, 30626) +HANDLE_BAT(APINT_TYPE_PREFIX, 30627) +HANDLE_BAT(APINT_TYPE_PREFIX, 30628) +HANDLE_BAT(APINT_TYPE_PREFIX, 30629) +HANDLE_BAT(APINT_TYPE_PREFIX, 30630) +HANDLE_BAT(APINT_TYPE_PREFIX, 30631) +HANDLE_BAT(APINT_TYPE_PREFIX, 30632) +HANDLE_BAT(APINT_TYPE_PREFIX, 30633) +HANDLE_BAT(APINT_TYPE_PREFIX, 30634) +HANDLE_BAT(APINT_TYPE_PREFIX, 30635) +HANDLE_BAT(APINT_TYPE_PREFIX, 30636) +HANDLE_BAT(APINT_TYPE_PREFIX, 30637) +HANDLE_BAT(APINT_TYPE_PREFIX, 30638) +HANDLE_BAT(APINT_TYPE_PREFIX, 30639) +HANDLE_BAT(APINT_TYPE_PREFIX, 30640) +HANDLE_BAT(APINT_TYPE_PREFIX, 30641) +HANDLE_BAT(APINT_TYPE_PREFIX, 30642) +HANDLE_BAT(APINT_TYPE_PREFIX, 30643) +HANDLE_BAT(APINT_TYPE_PREFIX, 30644) +HANDLE_BAT(APINT_TYPE_PREFIX, 30645) +HANDLE_BAT(APINT_TYPE_PREFIX, 30646) +HANDLE_BAT(APINT_TYPE_PREFIX, 30647) +HANDLE_BAT(APINT_TYPE_PREFIX, 30648) +HANDLE_BAT(APINT_TYPE_PREFIX, 30649) +HANDLE_BAT(APINT_TYPE_PREFIX, 30650) +HANDLE_BAT(APINT_TYPE_PREFIX, 30651) +HANDLE_BAT(APINT_TYPE_PREFIX, 30652) +HANDLE_BAT(APINT_TYPE_PREFIX, 30653) +HANDLE_BAT(APINT_TYPE_PREFIX, 30654) +HANDLE_BAT(APINT_TYPE_PREFIX, 30655) +HANDLE_BAT(APINT_TYPE_PREFIX, 30656) +HANDLE_BAT(APINT_TYPE_PREFIX, 30657) +HANDLE_BAT(APINT_TYPE_PREFIX, 30658) +HANDLE_BAT(APINT_TYPE_PREFIX, 30659) +HANDLE_BAT(APINT_TYPE_PREFIX, 30660) +HANDLE_BAT(APINT_TYPE_PREFIX, 30661) +HANDLE_BAT(APINT_TYPE_PREFIX, 30662) +HANDLE_BAT(APINT_TYPE_PREFIX, 30663) +HANDLE_BAT(APINT_TYPE_PREFIX, 30664) +HANDLE_BAT(APINT_TYPE_PREFIX, 30665) +HANDLE_BAT(APINT_TYPE_PREFIX, 30666) +HANDLE_BAT(APINT_TYPE_PREFIX, 30667) +HANDLE_BAT(APINT_TYPE_PREFIX, 30668) +HANDLE_BAT(APINT_TYPE_PREFIX, 30669) +HANDLE_BAT(APINT_TYPE_PREFIX, 30670) +HANDLE_BAT(APINT_TYPE_PREFIX, 30671) +HANDLE_BAT(APINT_TYPE_PREFIX, 30672) +HANDLE_BAT(APINT_TYPE_PREFIX, 30673) +HANDLE_BAT(APINT_TYPE_PREFIX, 30674) +HANDLE_BAT(APINT_TYPE_PREFIX, 30675) +HANDLE_BAT(APINT_TYPE_PREFIX, 30676) +HANDLE_BAT(APINT_TYPE_PREFIX, 30677) +HANDLE_BAT(APINT_TYPE_PREFIX, 30678) +HANDLE_BAT(APINT_TYPE_PREFIX, 30679) +HANDLE_BAT(APINT_TYPE_PREFIX, 30680) +HANDLE_BAT(APINT_TYPE_PREFIX, 30681) +HANDLE_BAT(APINT_TYPE_PREFIX, 30682) +HANDLE_BAT(APINT_TYPE_PREFIX, 30683) +HANDLE_BAT(APINT_TYPE_PREFIX, 30684) +HANDLE_BAT(APINT_TYPE_PREFIX, 30685) +HANDLE_BAT(APINT_TYPE_PREFIX, 30686) +HANDLE_BAT(APINT_TYPE_PREFIX, 30687) +HANDLE_BAT(APINT_TYPE_PREFIX, 30688) +HANDLE_BAT(APINT_TYPE_PREFIX, 30689) +HANDLE_BAT(APINT_TYPE_PREFIX, 30690) +HANDLE_BAT(APINT_TYPE_PREFIX, 30691) +HANDLE_BAT(APINT_TYPE_PREFIX, 30692) +HANDLE_BAT(APINT_TYPE_PREFIX, 30693) +HANDLE_BAT(APINT_TYPE_PREFIX, 30694) +HANDLE_BAT(APINT_TYPE_PREFIX, 30695) +HANDLE_BAT(APINT_TYPE_PREFIX, 30696) +HANDLE_BAT(APINT_TYPE_PREFIX, 30697) +HANDLE_BAT(APINT_TYPE_PREFIX, 30698) +HANDLE_BAT(APINT_TYPE_PREFIX, 30699) +HANDLE_BAT(APINT_TYPE_PREFIX, 30700) +HANDLE_BAT(APINT_TYPE_PREFIX, 30701) +HANDLE_BAT(APINT_TYPE_PREFIX, 30702) +HANDLE_BAT(APINT_TYPE_PREFIX, 30703) +HANDLE_BAT(APINT_TYPE_PREFIX, 30704) +HANDLE_BAT(APINT_TYPE_PREFIX, 30705) +HANDLE_BAT(APINT_TYPE_PREFIX, 30706) +HANDLE_BAT(APINT_TYPE_PREFIX, 30707) +HANDLE_BAT(APINT_TYPE_PREFIX, 30708) +HANDLE_BAT(APINT_TYPE_PREFIX, 30709) +HANDLE_BAT(APINT_TYPE_PREFIX, 30710) +HANDLE_BAT(APINT_TYPE_PREFIX, 30711) +HANDLE_BAT(APINT_TYPE_PREFIX, 30712) +HANDLE_BAT(APINT_TYPE_PREFIX, 30713) +HANDLE_BAT(APINT_TYPE_PREFIX, 30714) +HANDLE_BAT(APINT_TYPE_PREFIX, 30715) +HANDLE_BAT(APINT_TYPE_PREFIX, 30716) +HANDLE_BAT(APINT_TYPE_PREFIX, 30717) +HANDLE_BAT(APINT_TYPE_PREFIX, 30718) +HANDLE_BAT(APINT_TYPE_PREFIX, 30719) +HANDLE_BAT(APINT_TYPE_PREFIX, 30720) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 30 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 30721) +HANDLE_BAT(, 30722) +HANDLE_BAT(, 30723) +HANDLE_BAT(, 30724) +HANDLE_BAT(, 30725) +HANDLE_BAT(, 30726) +HANDLE_BAT(, 30727) +HANDLE_BAT(, 30728) +HANDLE_BAT(, 30729) +HANDLE_BAT(, 30730) +HANDLE_BAT(, 30731) +HANDLE_BAT(, 30732) +HANDLE_BAT(, 30733) +HANDLE_BAT(, 30734) +HANDLE_BAT(, 30735) +HANDLE_BAT(, 30736) +HANDLE_BAT(, 30737) +HANDLE_BAT(, 30738) +HANDLE_BAT(, 30739) +HANDLE_BAT(, 30740) +HANDLE_BAT(, 30741) +HANDLE_BAT(, 30742) +HANDLE_BAT(, 30743) +HANDLE_BAT(, 30744) +HANDLE_BAT(, 30745) +HANDLE_BAT(, 30746) +HANDLE_BAT(, 30747) +HANDLE_BAT(, 30748) +HANDLE_BAT(, 30749) +HANDLE_BAT(, 30750) +HANDLE_BAT(, 30751) +HANDLE_BAT(, 30752) +HANDLE_BAT(, 30753) +HANDLE_BAT(, 30754) +HANDLE_BAT(, 30755) +HANDLE_BAT(, 30756) +HANDLE_BAT(, 30757) +HANDLE_BAT(, 30758) +HANDLE_BAT(, 30759) +HANDLE_BAT(, 30760) +HANDLE_BAT(, 30761) +HANDLE_BAT(, 30762) +HANDLE_BAT(, 30763) +HANDLE_BAT(, 30764) +HANDLE_BAT(, 30765) +HANDLE_BAT(, 30766) +HANDLE_BAT(, 30767) +HANDLE_BAT(, 30768) +HANDLE_BAT(, 30769) +HANDLE_BAT(, 30770) +HANDLE_BAT(, 30771) +HANDLE_BAT(, 30772) +HANDLE_BAT(, 30773) +HANDLE_BAT(, 30774) +HANDLE_BAT(, 30775) +HANDLE_BAT(, 30776) +HANDLE_BAT(, 30777) +HANDLE_BAT(, 30778) +HANDLE_BAT(, 30779) +HANDLE_BAT(, 30780) +HANDLE_BAT(, 30781) +HANDLE_BAT(, 30782) +HANDLE_BAT(, 30783) +HANDLE_BAT(, 30784) +HANDLE_BAT(, 30785) +HANDLE_BAT(, 30786) +HANDLE_BAT(, 30787) +HANDLE_BAT(, 30788) +HANDLE_BAT(, 30789) +HANDLE_BAT(, 30790) +HANDLE_BAT(, 30791) +HANDLE_BAT(, 30792) +HANDLE_BAT(, 30793) +HANDLE_BAT(, 30794) +HANDLE_BAT(, 30795) +HANDLE_BAT(, 30796) +HANDLE_BAT(, 30797) +HANDLE_BAT(, 30798) +HANDLE_BAT(, 30799) +HANDLE_BAT(, 30800) +HANDLE_BAT(, 30801) +HANDLE_BAT(, 30802) +HANDLE_BAT(, 30803) +HANDLE_BAT(, 30804) +HANDLE_BAT(, 30805) +HANDLE_BAT(, 30806) +HANDLE_BAT(, 30807) +HANDLE_BAT(, 30808) +HANDLE_BAT(, 30809) +HANDLE_BAT(, 30810) +HANDLE_BAT(, 30811) +HANDLE_BAT(, 30812) +HANDLE_BAT(, 30813) +HANDLE_BAT(, 30814) +HANDLE_BAT(, 30815) +HANDLE_BAT(, 30816) +HANDLE_BAT(, 30817) +HANDLE_BAT(, 30818) +HANDLE_BAT(, 30819) +HANDLE_BAT(, 30820) +HANDLE_BAT(, 30821) +HANDLE_BAT(, 30822) +HANDLE_BAT(, 30823) +HANDLE_BAT(, 30824) +HANDLE_BAT(, 30825) +HANDLE_BAT(, 30826) +HANDLE_BAT(, 30827) +HANDLE_BAT(, 30828) +HANDLE_BAT(, 30829) +HANDLE_BAT(, 30830) +HANDLE_BAT(, 30831) +HANDLE_BAT(, 30832) +HANDLE_BAT(, 30833) +HANDLE_BAT(, 30834) +HANDLE_BAT(, 30835) +HANDLE_BAT(, 30836) +HANDLE_BAT(, 30837) +HANDLE_BAT(, 30838) +HANDLE_BAT(, 30839) +HANDLE_BAT(, 30840) +HANDLE_BAT(, 30841) +HANDLE_BAT(, 30842) +HANDLE_BAT(, 30843) +HANDLE_BAT(, 30844) +HANDLE_BAT(, 30845) +HANDLE_BAT(, 30846) +HANDLE_BAT(, 30847) +HANDLE_BAT(, 30848) +HANDLE_BAT(, 30849) +HANDLE_BAT(, 30850) +HANDLE_BAT(, 30851) +HANDLE_BAT(, 30852) +HANDLE_BAT(, 30853) +HANDLE_BAT(, 30854) +HANDLE_BAT(, 30855) +HANDLE_BAT(, 30856) +HANDLE_BAT(, 30857) +HANDLE_BAT(, 30858) +HANDLE_BAT(, 30859) +HANDLE_BAT(, 30860) +HANDLE_BAT(, 30861) +HANDLE_BAT(, 30862) +HANDLE_BAT(, 30863) +HANDLE_BAT(, 30864) +HANDLE_BAT(, 30865) +HANDLE_BAT(, 30866) +HANDLE_BAT(, 30867) +HANDLE_BAT(, 30868) +HANDLE_BAT(, 30869) +HANDLE_BAT(, 30870) +HANDLE_BAT(, 30871) +HANDLE_BAT(, 30872) +HANDLE_BAT(, 30873) +HANDLE_BAT(, 30874) +HANDLE_BAT(, 30875) +HANDLE_BAT(, 30876) +HANDLE_BAT(, 30877) +HANDLE_BAT(, 30878) +HANDLE_BAT(, 30879) +HANDLE_BAT(, 30880) +HANDLE_BAT(, 30881) +HANDLE_BAT(, 30882) +HANDLE_BAT(, 30883) +HANDLE_BAT(, 30884) +HANDLE_BAT(, 30885) +HANDLE_BAT(, 30886) +HANDLE_BAT(, 30887) +HANDLE_BAT(, 30888) +HANDLE_BAT(, 30889) +HANDLE_BAT(, 30890) +HANDLE_BAT(, 30891) +HANDLE_BAT(, 30892) +HANDLE_BAT(, 30893) +HANDLE_BAT(, 30894) +HANDLE_BAT(, 30895) +HANDLE_BAT(, 30896) +HANDLE_BAT(, 30897) +HANDLE_BAT(, 30898) +HANDLE_BAT(, 30899) +HANDLE_BAT(, 30900) +HANDLE_BAT(, 30901) +HANDLE_BAT(, 30902) +HANDLE_BAT(, 30903) +HANDLE_BAT(, 30904) +HANDLE_BAT(, 30905) +HANDLE_BAT(, 30906) +HANDLE_BAT(, 30907) +HANDLE_BAT(, 30908) +HANDLE_BAT(, 30909) +HANDLE_BAT(, 30910) +HANDLE_BAT(, 30911) +HANDLE_BAT(, 30912) +HANDLE_BAT(, 30913) +HANDLE_BAT(, 30914) +HANDLE_BAT(, 30915) +HANDLE_BAT(, 30916) +HANDLE_BAT(, 30917) +HANDLE_BAT(, 30918) +HANDLE_BAT(, 30919) +HANDLE_BAT(, 30920) +HANDLE_BAT(, 30921) +HANDLE_BAT(, 30922) +HANDLE_BAT(, 30923) +HANDLE_BAT(, 30924) +HANDLE_BAT(, 30925) +HANDLE_BAT(, 30926) +HANDLE_BAT(, 30927) +HANDLE_BAT(, 30928) +HANDLE_BAT(, 30929) +HANDLE_BAT(, 30930) +HANDLE_BAT(, 30931) +HANDLE_BAT(, 30932) +HANDLE_BAT(, 30933) +HANDLE_BAT(, 30934) +HANDLE_BAT(, 30935) +HANDLE_BAT(, 30936) +HANDLE_BAT(, 30937) +HANDLE_BAT(, 30938) +HANDLE_BAT(, 30939) +HANDLE_BAT(, 30940) +HANDLE_BAT(, 30941) +HANDLE_BAT(, 30942) +HANDLE_BAT(, 30943) +HANDLE_BAT(, 30944) +HANDLE_BAT(, 30945) +HANDLE_BAT(, 30946) +HANDLE_BAT(, 30947) +HANDLE_BAT(, 30948) +HANDLE_BAT(, 30949) +HANDLE_BAT(, 30950) +HANDLE_BAT(, 30951) +HANDLE_BAT(, 30952) +HANDLE_BAT(, 30953) +HANDLE_BAT(, 30954) +HANDLE_BAT(, 30955) +HANDLE_BAT(, 30956) +HANDLE_BAT(, 30957) +HANDLE_BAT(, 30958) +HANDLE_BAT(, 30959) +HANDLE_BAT(, 30960) +HANDLE_BAT(, 30961) +HANDLE_BAT(, 30962) +HANDLE_BAT(, 30963) +HANDLE_BAT(, 30964) +HANDLE_BAT(, 30965) +HANDLE_BAT(, 30966) +HANDLE_BAT(, 30967) +HANDLE_BAT(, 30968) +HANDLE_BAT(, 30969) +HANDLE_BAT(, 30970) +HANDLE_BAT(, 30971) +HANDLE_BAT(, 30972) +HANDLE_BAT(, 30973) +HANDLE_BAT(, 30974) +HANDLE_BAT(, 30975) +HANDLE_BAT(, 30976) +HANDLE_BAT(, 30977) +HANDLE_BAT(, 30978) +HANDLE_BAT(, 30979) +HANDLE_BAT(, 30980) +HANDLE_BAT(, 30981) +HANDLE_BAT(, 30982) +HANDLE_BAT(, 30983) +HANDLE_BAT(, 30984) +HANDLE_BAT(, 30985) +HANDLE_BAT(, 30986) +HANDLE_BAT(, 30987) +HANDLE_BAT(, 30988) +HANDLE_BAT(, 30989) +HANDLE_BAT(, 30990) +HANDLE_BAT(, 30991) +HANDLE_BAT(, 30992) +HANDLE_BAT(, 30993) +HANDLE_BAT(, 30994) +HANDLE_BAT(, 30995) +HANDLE_BAT(, 30996) +HANDLE_BAT(, 30997) +HANDLE_BAT(, 30998) +HANDLE_BAT(, 30999) +HANDLE_BAT(, 31000) +HANDLE_BAT(, 31001) +HANDLE_BAT(, 31002) +HANDLE_BAT(, 31003) +HANDLE_BAT(, 31004) +HANDLE_BAT(, 31005) +HANDLE_BAT(, 31006) +HANDLE_BAT(, 31007) +HANDLE_BAT(, 31008) +HANDLE_BAT(, 31009) +HANDLE_BAT(, 31010) +HANDLE_BAT(, 31011) +HANDLE_BAT(, 31012) +HANDLE_BAT(, 31013) +HANDLE_BAT(, 31014) +HANDLE_BAT(, 31015) +HANDLE_BAT(, 31016) +HANDLE_BAT(, 31017) +HANDLE_BAT(, 31018) +HANDLE_BAT(, 31019) +HANDLE_BAT(, 31020) +HANDLE_BAT(, 31021) +HANDLE_BAT(, 31022) +HANDLE_BAT(, 31023) +HANDLE_BAT(, 31024) +HANDLE_BAT(, 31025) +HANDLE_BAT(, 31026) +HANDLE_BAT(, 31027) +HANDLE_BAT(, 31028) +HANDLE_BAT(, 31029) +HANDLE_BAT(, 31030) +HANDLE_BAT(, 31031) +HANDLE_BAT(, 31032) +HANDLE_BAT(, 31033) +HANDLE_BAT(, 31034) +HANDLE_BAT(, 31035) +HANDLE_BAT(, 31036) +HANDLE_BAT(, 31037) +HANDLE_BAT(, 31038) +HANDLE_BAT(, 31039) +HANDLE_BAT(, 31040) +HANDLE_BAT(, 31041) +HANDLE_BAT(, 31042) +HANDLE_BAT(, 31043) +HANDLE_BAT(, 31044) +HANDLE_BAT(, 31045) +HANDLE_BAT(, 31046) +HANDLE_BAT(, 31047) +HANDLE_BAT(, 31048) +HANDLE_BAT(, 31049) +HANDLE_BAT(, 31050) +HANDLE_BAT(, 31051) +HANDLE_BAT(, 31052) +HANDLE_BAT(, 31053) +HANDLE_BAT(, 31054) +HANDLE_BAT(, 31055) +HANDLE_BAT(, 31056) +HANDLE_BAT(, 31057) +HANDLE_BAT(, 31058) +HANDLE_BAT(, 31059) +HANDLE_BAT(, 31060) +HANDLE_BAT(, 31061) +HANDLE_BAT(, 31062) +HANDLE_BAT(, 31063) +HANDLE_BAT(, 31064) +HANDLE_BAT(, 31065) +HANDLE_BAT(, 31066) +HANDLE_BAT(, 31067) +HANDLE_BAT(, 31068) +HANDLE_BAT(, 31069) +HANDLE_BAT(, 31070) +HANDLE_BAT(, 31071) +HANDLE_BAT(, 31072) +HANDLE_BAT(, 31073) +HANDLE_BAT(, 31074) +HANDLE_BAT(, 31075) +HANDLE_BAT(, 31076) +HANDLE_BAT(, 31077) +HANDLE_BAT(, 31078) +HANDLE_BAT(, 31079) +HANDLE_BAT(, 31080) +HANDLE_BAT(, 31081) +HANDLE_BAT(, 31082) +HANDLE_BAT(, 31083) +HANDLE_BAT(, 31084) +HANDLE_BAT(, 31085) +HANDLE_BAT(, 31086) +HANDLE_BAT(, 31087) +HANDLE_BAT(, 31088) +HANDLE_BAT(, 31089) +HANDLE_BAT(, 31090) +HANDLE_BAT(, 31091) +HANDLE_BAT(, 31092) +HANDLE_BAT(, 31093) +HANDLE_BAT(, 31094) +HANDLE_BAT(, 31095) +HANDLE_BAT(, 31096) +HANDLE_BAT(, 31097) +HANDLE_BAT(, 31098) +HANDLE_BAT(, 31099) +HANDLE_BAT(, 31100) +HANDLE_BAT(, 31101) +HANDLE_BAT(, 31102) +HANDLE_BAT(, 31103) +HANDLE_BAT(, 31104) +HANDLE_BAT(, 31105) +HANDLE_BAT(, 31106) +HANDLE_BAT(, 31107) +HANDLE_BAT(, 31108) +HANDLE_BAT(, 31109) +HANDLE_BAT(, 31110) +HANDLE_BAT(, 31111) +HANDLE_BAT(, 31112) +HANDLE_BAT(, 31113) +HANDLE_BAT(, 31114) +HANDLE_BAT(, 31115) +HANDLE_BAT(, 31116) +HANDLE_BAT(, 31117) +HANDLE_BAT(, 31118) +HANDLE_BAT(, 31119) +HANDLE_BAT(, 31120) +HANDLE_BAT(, 31121) +HANDLE_BAT(, 31122) +HANDLE_BAT(, 31123) +HANDLE_BAT(, 31124) +HANDLE_BAT(, 31125) +HANDLE_BAT(, 31126) +HANDLE_BAT(, 31127) +HANDLE_BAT(, 31128) +HANDLE_BAT(, 31129) +HANDLE_BAT(, 31130) +HANDLE_BAT(, 31131) +HANDLE_BAT(, 31132) +HANDLE_BAT(, 31133) +HANDLE_BAT(, 31134) +HANDLE_BAT(, 31135) +HANDLE_BAT(, 31136) +HANDLE_BAT(, 31137) +HANDLE_BAT(, 31138) +HANDLE_BAT(, 31139) +HANDLE_BAT(, 31140) +HANDLE_BAT(, 31141) +HANDLE_BAT(, 31142) +HANDLE_BAT(, 31143) +HANDLE_BAT(, 31144) +HANDLE_BAT(, 31145) +HANDLE_BAT(, 31146) +HANDLE_BAT(, 31147) +HANDLE_BAT(, 31148) +HANDLE_BAT(, 31149) +HANDLE_BAT(, 31150) +HANDLE_BAT(, 31151) +HANDLE_BAT(, 31152) +HANDLE_BAT(, 31153) +HANDLE_BAT(, 31154) +HANDLE_BAT(, 31155) +HANDLE_BAT(, 31156) +HANDLE_BAT(, 31157) +HANDLE_BAT(, 31158) +HANDLE_BAT(, 31159) +HANDLE_BAT(, 31160) +HANDLE_BAT(, 31161) +HANDLE_BAT(, 31162) +HANDLE_BAT(, 31163) +HANDLE_BAT(, 31164) +HANDLE_BAT(, 31165) +HANDLE_BAT(, 31166) +HANDLE_BAT(, 31167) +HANDLE_BAT(, 31168) +HANDLE_BAT(, 31169) +HANDLE_BAT(, 31170) +HANDLE_BAT(, 31171) +HANDLE_BAT(, 31172) +HANDLE_BAT(, 31173) +HANDLE_BAT(, 31174) +HANDLE_BAT(, 31175) +HANDLE_BAT(, 31176) +HANDLE_BAT(, 31177) +HANDLE_BAT(, 31178) +HANDLE_BAT(, 31179) +HANDLE_BAT(, 31180) +HANDLE_BAT(, 31181) +HANDLE_BAT(, 31182) +HANDLE_BAT(, 31183) +HANDLE_BAT(, 31184) +HANDLE_BAT(, 31185) +HANDLE_BAT(, 31186) +HANDLE_BAT(, 31187) +HANDLE_BAT(, 31188) +HANDLE_BAT(, 31189) +HANDLE_BAT(, 31190) +HANDLE_BAT(, 31191) +HANDLE_BAT(, 31192) +HANDLE_BAT(, 31193) +HANDLE_BAT(, 31194) +HANDLE_BAT(, 31195) +HANDLE_BAT(, 31196) +HANDLE_BAT(, 31197) +HANDLE_BAT(, 31198) +HANDLE_BAT(, 31199) +HANDLE_BAT(, 31200) +HANDLE_BAT(, 31201) +HANDLE_BAT(, 31202) +HANDLE_BAT(, 31203) +HANDLE_BAT(, 31204) +HANDLE_BAT(, 31205) +HANDLE_BAT(, 31206) +HANDLE_BAT(, 31207) +HANDLE_BAT(, 31208) +HANDLE_BAT(, 31209) +HANDLE_BAT(, 31210) +HANDLE_BAT(, 31211) +HANDLE_BAT(, 31212) +HANDLE_BAT(, 31213) +HANDLE_BAT(, 31214) +HANDLE_BAT(, 31215) +HANDLE_BAT(, 31216) +HANDLE_BAT(, 31217) +HANDLE_BAT(, 31218) +HANDLE_BAT(, 31219) +HANDLE_BAT(, 31220) +HANDLE_BAT(, 31221) +HANDLE_BAT(, 31222) +HANDLE_BAT(, 31223) +HANDLE_BAT(, 31224) +HANDLE_BAT(, 31225) +HANDLE_BAT(, 31226) +HANDLE_BAT(, 31227) +HANDLE_BAT(, 31228) +HANDLE_BAT(, 31229) +HANDLE_BAT(, 31230) +HANDLE_BAT(, 31231) +HANDLE_BAT(, 31232) +HANDLE_BAT(, 31233) +HANDLE_BAT(, 31234) +HANDLE_BAT(, 31235) +HANDLE_BAT(, 31236) +HANDLE_BAT(, 31237) +HANDLE_BAT(, 31238) +HANDLE_BAT(, 31239) +HANDLE_BAT(, 31240) +HANDLE_BAT(, 31241) +HANDLE_BAT(, 31242) +HANDLE_BAT(, 31243) +HANDLE_BAT(, 31244) +HANDLE_BAT(, 31245) +HANDLE_BAT(, 31246) +HANDLE_BAT(, 31247) +HANDLE_BAT(, 31248) +HANDLE_BAT(, 31249) +HANDLE_BAT(, 31250) +HANDLE_BAT(, 31251) +HANDLE_BAT(, 31252) +HANDLE_BAT(, 31253) +HANDLE_BAT(, 31254) +HANDLE_BAT(, 31255) +HANDLE_BAT(, 31256) +HANDLE_BAT(, 31257) +HANDLE_BAT(, 31258) +HANDLE_BAT(, 31259) +HANDLE_BAT(, 31260) +HANDLE_BAT(, 31261) +HANDLE_BAT(, 31262) +HANDLE_BAT(, 31263) +HANDLE_BAT(, 31264) +HANDLE_BAT(, 31265) +HANDLE_BAT(, 31266) +HANDLE_BAT(, 31267) +HANDLE_BAT(, 31268) +HANDLE_BAT(, 31269) +HANDLE_BAT(, 31270) +HANDLE_BAT(, 31271) +HANDLE_BAT(, 31272) +HANDLE_BAT(, 31273) +HANDLE_BAT(, 31274) +HANDLE_BAT(, 31275) +HANDLE_BAT(, 31276) +HANDLE_BAT(, 31277) +HANDLE_BAT(, 31278) +HANDLE_BAT(, 31279) +HANDLE_BAT(, 31280) +HANDLE_BAT(, 31281) +HANDLE_BAT(, 31282) +HANDLE_BAT(, 31283) +HANDLE_BAT(, 31284) +HANDLE_BAT(, 31285) +HANDLE_BAT(, 31286) +HANDLE_BAT(, 31287) +HANDLE_BAT(, 31288) +HANDLE_BAT(, 31289) +HANDLE_BAT(, 31290) +HANDLE_BAT(, 31291) +HANDLE_BAT(, 31292) +HANDLE_BAT(, 31293) +HANDLE_BAT(, 31294) +HANDLE_BAT(, 31295) +HANDLE_BAT(, 31296) +HANDLE_BAT(, 31297) +HANDLE_BAT(, 31298) +HANDLE_BAT(, 31299) +HANDLE_BAT(, 31300) +HANDLE_BAT(, 31301) +HANDLE_BAT(, 31302) +HANDLE_BAT(, 31303) +HANDLE_BAT(, 31304) +HANDLE_BAT(, 31305) +HANDLE_BAT(, 31306) +HANDLE_BAT(, 31307) +HANDLE_BAT(, 31308) +HANDLE_BAT(, 31309) +HANDLE_BAT(, 31310) +HANDLE_BAT(, 31311) +HANDLE_BAT(, 31312) +HANDLE_BAT(, 31313) +HANDLE_BAT(, 31314) +HANDLE_BAT(, 31315) +HANDLE_BAT(, 31316) +HANDLE_BAT(, 31317) +HANDLE_BAT(, 31318) +HANDLE_BAT(, 31319) +HANDLE_BAT(, 31320) +HANDLE_BAT(, 31321) +HANDLE_BAT(, 31322) +HANDLE_BAT(, 31323) +HANDLE_BAT(, 31324) +HANDLE_BAT(, 31325) +HANDLE_BAT(, 31326) +HANDLE_BAT(, 31327) +HANDLE_BAT(, 31328) +HANDLE_BAT(, 31329) +HANDLE_BAT(, 31330) +HANDLE_BAT(, 31331) +HANDLE_BAT(, 31332) +HANDLE_BAT(, 31333) +HANDLE_BAT(, 31334) +HANDLE_BAT(, 31335) +HANDLE_BAT(, 31336) +HANDLE_BAT(, 31337) +HANDLE_BAT(, 31338) +HANDLE_BAT(, 31339) +HANDLE_BAT(, 31340) +HANDLE_BAT(, 31341) +HANDLE_BAT(, 31342) +HANDLE_BAT(, 31343) +HANDLE_BAT(, 31344) +HANDLE_BAT(, 31345) +HANDLE_BAT(, 31346) +HANDLE_BAT(, 31347) +HANDLE_BAT(, 31348) +HANDLE_BAT(, 31349) +HANDLE_BAT(, 31350) +HANDLE_BAT(, 31351) +HANDLE_BAT(, 31352) +HANDLE_BAT(, 31353) +HANDLE_BAT(, 31354) +HANDLE_BAT(, 31355) +HANDLE_BAT(, 31356) +HANDLE_BAT(, 31357) +HANDLE_BAT(, 31358) +HANDLE_BAT(, 31359) +HANDLE_BAT(, 31360) +HANDLE_BAT(, 31361) +HANDLE_BAT(, 31362) +HANDLE_BAT(, 31363) +HANDLE_BAT(, 31364) +HANDLE_BAT(, 31365) +HANDLE_BAT(, 31366) +HANDLE_BAT(, 31367) +HANDLE_BAT(, 31368) +HANDLE_BAT(, 31369) +HANDLE_BAT(, 31370) +HANDLE_BAT(, 31371) +HANDLE_BAT(, 31372) +HANDLE_BAT(, 31373) +HANDLE_BAT(, 31374) +HANDLE_BAT(, 31375) +HANDLE_BAT(, 31376) +HANDLE_BAT(, 31377) +HANDLE_BAT(, 31378) +HANDLE_BAT(, 31379) +HANDLE_BAT(, 31380) +HANDLE_BAT(, 31381) +HANDLE_BAT(, 31382) +HANDLE_BAT(, 31383) +HANDLE_BAT(, 31384) +HANDLE_BAT(, 31385) +HANDLE_BAT(, 31386) +HANDLE_BAT(, 31387) +HANDLE_BAT(, 31388) +HANDLE_BAT(, 31389) +HANDLE_BAT(, 31390) +HANDLE_BAT(, 31391) +HANDLE_BAT(, 31392) +HANDLE_BAT(, 31393) +HANDLE_BAT(, 31394) +HANDLE_BAT(, 31395) +HANDLE_BAT(, 31396) +HANDLE_BAT(, 31397) +HANDLE_BAT(, 31398) +HANDLE_BAT(, 31399) +HANDLE_BAT(, 31400) +HANDLE_BAT(, 31401) +HANDLE_BAT(, 31402) +HANDLE_BAT(, 31403) +HANDLE_BAT(, 31404) +HANDLE_BAT(, 31405) +HANDLE_BAT(, 31406) +HANDLE_BAT(, 31407) +HANDLE_BAT(, 31408) +HANDLE_BAT(, 31409) +HANDLE_BAT(, 31410) +HANDLE_BAT(, 31411) +HANDLE_BAT(, 31412) +HANDLE_BAT(, 31413) +HANDLE_BAT(, 31414) +HANDLE_BAT(, 31415) +HANDLE_BAT(, 31416) +HANDLE_BAT(, 31417) +HANDLE_BAT(, 31418) +HANDLE_BAT(, 31419) +HANDLE_BAT(, 31420) +HANDLE_BAT(, 31421) +HANDLE_BAT(, 31422) +HANDLE_BAT(, 31423) +HANDLE_BAT(, 31424) +HANDLE_BAT(, 31425) +HANDLE_BAT(, 31426) +HANDLE_BAT(, 31427) +HANDLE_BAT(, 31428) +HANDLE_BAT(, 31429) +HANDLE_BAT(, 31430) +HANDLE_BAT(, 31431) +HANDLE_BAT(, 31432) +HANDLE_BAT(, 31433) +HANDLE_BAT(, 31434) +HANDLE_BAT(, 31435) +HANDLE_BAT(, 31436) +HANDLE_BAT(, 31437) +HANDLE_BAT(, 31438) +HANDLE_BAT(, 31439) +HANDLE_BAT(, 31440) +HANDLE_BAT(, 31441) +HANDLE_BAT(, 31442) +HANDLE_BAT(, 31443) +HANDLE_BAT(, 31444) +HANDLE_BAT(, 31445) +HANDLE_BAT(, 31446) +HANDLE_BAT(, 31447) +HANDLE_BAT(, 31448) +HANDLE_BAT(, 31449) +HANDLE_BAT(, 31450) +HANDLE_BAT(, 31451) +HANDLE_BAT(, 31452) +HANDLE_BAT(, 31453) +HANDLE_BAT(, 31454) +HANDLE_BAT(, 31455) +HANDLE_BAT(, 31456) +HANDLE_BAT(, 31457) +HANDLE_BAT(, 31458) +HANDLE_BAT(, 31459) +HANDLE_BAT(, 31460) +HANDLE_BAT(, 31461) +HANDLE_BAT(, 31462) +HANDLE_BAT(, 31463) +HANDLE_BAT(, 31464) +HANDLE_BAT(, 31465) +HANDLE_BAT(, 31466) +HANDLE_BAT(, 31467) +HANDLE_BAT(, 31468) +HANDLE_BAT(, 31469) +HANDLE_BAT(, 31470) +HANDLE_BAT(, 31471) +HANDLE_BAT(, 31472) +HANDLE_BAT(, 31473) +HANDLE_BAT(, 31474) +HANDLE_BAT(, 31475) +HANDLE_BAT(, 31476) +HANDLE_BAT(, 31477) +HANDLE_BAT(, 31478) +HANDLE_BAT(, 31479) +HANDLE_BAT(, 31480) +HANDLE_BAT(, 31481) +HANDLE_BAT(, 31482) +HANDLE_BAT(, 31483) +HANDLE_BAT(, 31484) +HANDLE_BAT(, 31485) +HANDLE_BAT(, 31486) +HANDLE_BAT(, 31487) +HANDLE_BAT(, 31488) +HANDLE_BAT(, 31489) +HANDLE_BAT(, 31490) +HANDLE_BAT(, 31491) +HANDLE_BAT(, 31492) +HANDLE_BAT(, 31493) +HANDLE_BAT(, 31494) +HANDLE_BAT(, 31495) +HANDLE_BAT(, 31496) +HANDLE_BAT(, 31497) +HANDLE_BAT(, 31498) +HANDLE_BAT(, 31499) +HANDLE_BAT(, 31500) +HANDLE_BAT(, 31501) +HANDLE_BAT(, 31502) +HANDLE_BAT(, 31503) +HANDLE_BAT(, 31504) +HANDLE_BAT(, 31505) +HANDLE_BAT(, 31506) +HANDLE_BAT(, 31507) +HANDLE_BAT(, 31508) +HANDLE_BAT(, 31509) +HANDLE_BAT(, 31510) +HANDLE_BAT(, 31511) +HANDLE_BAT(, 31512) +HANDLE_BAT(, 31513) +HANDLE_BAT(, 31514) +HANDLE_BAT(, 31515) +HANDLE_BAT(, 31516) +HANDLE_BAT(, 31517) +HANDLE_BAT(, 31518) +HANDLE_BAT(, 31519) +HANDLE_BAT(, 31520) +HANDLE_BAT(, 31521) +HANDLE_BAT(, 31522) +HANDLE_BAT(, 31523) +HANDLE_BAT(, 31524) +HANDLE_BAT(, 31525) +HANDLE_BAT(, 31526) +HANDLE_BAT(, 31527) +HANDLE_BAT(, 31528) +HANDLE_BAT(, 31529) +HANDLE_BAT(, 31530) +HANDLE_BAT(, 31531) +HANDLE_BAT(, 31532) +HANDLE_BAT(, 31533) +HANDLE_BAT(, 31534) +HANDLE_BAT(, 31535) +HANDLE_BAT(, 31536) +HANDLE_BAT(, 31537) +HANDLE_BAT(, 31538) +HANDLE_BAT(, 31539) +HANDLE_BAT(, 31540) +HANDLE_BAT(, 31541) +HANDLE_BAT(, 31542) +HANDLE_BAT(, 31543) +HANDLE_BAT(, 31544) +HANDLE_BAT(, 31545) +HANDLE_BAT(, 31546) +HANDLE_BAT(, 31547) +HANDLE_BAT(, 31548) +HANDLE_BAT(, 31549) +HANDLE_BAT(, 31550) +HANDLE_BAT(, 31551) +HANDLE_BAT(, 31552) +HANDLE_BAT(, 31553) +HANDLE_BAT(, 31554) +HANDLE_BAT(, 31555) +HANDLE_BAT(, 31556) +HANDLE_BAT(, 31557) +HANDLE_BAT(, 31558) +HANDLE_BAT(, 31559) +HANDLE_BAT(, 31560) +HANDLE_BAT(, 31561) +HANDLE_BAT(, 31562) +HANDLE_BAT(, 31563) +HANDLE_BAT(, 31564) +HANDLE_BAT(, 31565) +HANDLE_BAT(, 31566) +HANDLE_BAT(, 31567) +HANDLE_BAT(, 31568) +HANDLE_BAT(, 31569) +HANDLE_BAT(, 31570) +HANDLE_BAT(, 31571) +HANDLE_BAT(, 31572) +HANDLE_BAT(, 31573) +HANDLE_BAT(, 31574) +HANDLE_BAT(, 31575) +HANDLE_BAT(, 31576) +HANDLE_BAT(, 31577) +HANDLE_BAT(, 31578) +HANDLE_BAT(, 31579) +HANDLE_BAT(, 31580) +HANDLE_BAT(, 31581) +HANDLE_BAT(, 31582) +HANDLE_BAT(, 31583) +HANDLE_BAT(, 31584) +HANDLE_BAT(, 31585) +HANDLE_BAT(, 31586) +HANDLE_BAT(, 31587) +HANDLE_BAT(, 31588) +HANDLE_BAT(, 31589) +HANDLE_BAT(, 31590) +HANDLE_BAT(, 31591) +HANDLE_BAT(, 31592) +HANDLE_BAT(, 31593) +HANDLE_BAT(, 31594) +HANDLE_BAT(, 31595) +HANDLE_BAT(, 31596) +HANDLE_BAT(, 31597) +HANDLE_BAT(, 31598) +HANDLE_BAT(, 31599) +HANDLE_BAT(, 31600) +HANDLE_BAT(, 31601) +HANDLE_BAT(, 31602) +HANDLE_BAT(, 31603) +HANDLE_BAT(, 31604) +HANDLE_BAT(, 31605) +HANDLE_BAT(, 31606) +HANDLE_BAT(, 31607) +HANDLE_BAT(, 31608) +HANDLE_BAT(, 31609) +HANDLE_BAT(, 31610) +HANDLE_BAT(, 31611) +HANDLE_BAT(, 31612) +HANDLE_BAT(, 31613) +HANDLE_BAT(, 31614) +HANDLE_BAT(, 31615) +HANDLE_BAT(, 31616) +HANDLE_BAT(, 31617) +HANDLE_BAT(, 31618) +HANDLE_BAT(, 31619) +HANDLE_BAT(, 31620) +HANDLE_BAT(, 31621) +HANDLE_BAT(, 31622) +HANDLE_BAT(, 31623) +HANDLE_BAT(, 31624) +HANDLE_BAT(, 31625) +HANDLE_BAT(, 31626) +HANDLE_BAT(, 31627) +HANDLE_BAT(, 31628) +HANDLE_BAT(, 31629) +HANDLE_BAT(, 31630) +HANDLE_BAT(, 31631) +HANDLE_BAT(, 31632) +HANDLE_BAT(, 31633) +HANDLE_BAT(, 31634) +HANDLE_BAT(, 31635) +HANDLE_BAT(, 31636) +HANDLE_BAT(, 31637) +HANDLE_BAT(, 31638) +HANDLE_BAT(, 31639) +HANDLE_BAT(, 31640) +HANDLE_BAT(, 31641) +HANDLE_BAT(, 31642) +HANDLE_BAT(, 31643) +HANDLE_BAT(, 31644) +HANDLE_BAT(, 31645) +HANDLE_BAT(, 31646) +HANDLE_BAT(, 31647) +HANDLE_BAT(, 31648) +HANDLE_BAT(, 31649) +HANDLE_BAT(, 31650) +HANDLE_BAT(, 31651) +HANDLE_BAT(, 31652) +HANDLE_BAT(, 31653) +HANDLE_BAT(, 31654) +HANDLE_BAT(, 31655) +HANDLE_BAT(, 31656) +HANDLE_BAT(, 31657) +HANDLE_BAT(, 31658) +HANDLE_BAT(, 31659) +HANDLE_BAT(, 31660) +HANDLE_BAT(, 31661) +HANDLE_BAT(, 31662) +HANDLE_BAT(, 31663) +HANDLE_BAT(, 31664) +HANDLE_BAT(, 31665) +HANDLE_BAT(, 31666) +HANDLE_BAT(, 31667) +HANDLE_BAT(, 31668) +HANDLE_BAT(, 31669) +HANDLE_BAT(, 31670) +HANDLE_BAT(, 31671) +HANDLE_BAT(, 31672) +HANDLE_BAT(, 31673) +HANDLE_BAT(, 31674) +HANDLE_BAT(, 31675) +HANDLE_BAT(, 31676) +HANDLE_BAT(, 31677) +HANDLE_BAT(, 31678) +HANDLE_BAT(, 31679) +HANDLE_BAT(, 31680) +HANDLE_BAT(, 31681) +HANDLE_BAT(, 31682) +HANDLE_BAT(, 31683) +HANDLE_BAT(, 31684) +HANDLE_BAT(, 31685) +HANDLE_BAT(, 31686) +HANDLE_BAT(, 31687) +HANDLE_BAT(, 31688) +HANDLE_BAT(, 31689) +HANDLE_BAT(, 31690) +HANDLE_BAT(, 31691) +HANDLE_BAT(, 31692) +HANDLE_BAT(, 31693) +HANDLE_BAT(, 31694) +HANDLE_BAT(, 31695) +HANDLE_BAT(, 31696) +HANDLE_BAT(, 31697) +HANDLE_BAT(, 31698) +HANDLE_BAT(, 31699) +HANDLE_BAT(, 31700) +HANDLE_BAT(, 31701) +HANDLE_BAT(, 31702) +HANDLE_BAT(, 31703) +HANDLE_BAT(, 31704) +HANDLE_BAT(, 31705) +HANDLE_BAT(, 31706) +HANDLE_BAT(, 31707) +HANDLE_BAT(, 31708) +HANDLE_BAT(, 31709) +HANDLE_BAT(, 31710) +HANDLE_BAT(, 31711) +HANDLE_BAT(, 31712) +HANDLE_BAT(, 31713) +HANDLE_BAT(, 31714) +HANDLE_BAT(, 31715) +HANDLE_BAT(, 31716) +HANDLE_BAT(, 31717) +HANDLE_BAT(, 31718) +HANDLE_BAT(, 31719) +HANDLE_BAT(, 31720) +HANDLE_BAT(, 31721) +HANDLE_BAT(, 31722) +HANDLE_BAT(, 31723) +HANDLE_BAT(, 31724) +HANDLE_BAT(, 31725) +HANDLE_BAT(, 31726) +HANDLE_BAT(, 31727) +HANDLE_BAT(, 31728) +HANDLE_BAT(, 31729) +HANDLE_BAT(, 31730) +HANDLE_BAT(, 31731) +HANDLE_BAT(, 31732) +HANDLE_BAT(, 31733) +HANDLE_BAT(, 31734) +HANDLE_BAT(, 31735) +HANDLE_BAT(, 31736) +HANDLE_BAT(, 31737) +HANDLE_BAT(, 31738) +HANDLE_BAT(, 31739) +HANDLE_BAT(, 31740) +HANDLE_BAT(, 31741) +HANDLE_BAT(, 31742) +HANDLE_BAT(, 31743) +HANDLE_BAT(, 31744) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 30721) +HANDLE_BAT(APINT_TYPE_PREFIX, 30722) +HANDLE_BAT(APINT_TYPE_PREFIX, 30723) +HANDLE_BAT(APINT_TYPE_PREFIX, 30724) +HANDLE_BAT(APINT_TYPE_PREFIX, 30725) +HANDLE_BAT(APINT_TYPE_PREFIX, 30726) +HANDLE_BAT(APINT_TYPE_PREFIX, 30727) +HANDLE_BAT(APINT_TYPE_PREFIX, 30728) +HANDLE_BAT(APINT_TYPE_PREFIX, 30729) +HANDLE_BAT(APINT_TYPE_PREFIX, 30730) +HANDLE_BAT(APINT_TYPE_PREFIX, 30731) +HANDLE_BAT(APINT_TYPE_PREFIX, 30732) +HANDLE_BAT(APINT_TYPE_PREFIX, 30733) +HANDLE_BAT(APINT_TYPE_PREFIX, 30734) +HANDLE_BAT(APINT_TYPE_PREFIX, 30735) +HANDLE_BAT(APINT_TYPE_PREFIX, 30736) +HANDLE_BAT(APINT_TYPE_PREFIX, 30737) +HANDLE_BAT(APINT_TYPE_PREFIX, 30738) +HANDLE_BAT(APINT_TYPE_PREFIX, 30739) +HANDLE_BAT(APINT_TYPE_PREFIX, 30740) +HANDLE_BAT(APINT_TYPE_PREFIX, 30741) +HANDLE_BAT(APINT_TYPE_PREFIX, 30742) +HANDLE_BAT(APINT_TYPE_PREFIX, 30743) +HANDLE_BAT(APINT_TYPE_PREFIX, 30744) +HANDLE_BAT(APINT_TYPE_PREFIX, 30745) +HANDLE_BAT(APINT_TYPE_PREFIX, 30746) +HANDLE_BAT(APINT_TYPE_PREFIX, 30747) +HANDLE_BAT(APINT_TYPE_PREFIX, 30748) +HANDLE_BAT(APINT_TYPE_PREFIX, 30749) +HANDLE_BAT(APINT_TYPE_PREFIX, 30750) +HANDLE_BAT(APINT_TYPE_PREFIX, 30751) +HANDLE_BAT(APINT_TYPE_PREFIX, 30752) +HANDLE_BAT(APINT_TYPE_PREFIX, 30753) +HANDLE_BAT(APINT_TYPE_PREFIX, 30754) +HANDLE_BAT(APINT_TYPE_PREFIX, 30755) +HANDLE_BAT(APINT_TYPE_PREFIX, 30756) +HANDLE_BAT(APINT_TYPE_PREFIX, 30757) +HANDLE_BAT(APINT_TYPE_PREFIX, 30758) +HANDLE_BAT(APINT_TYPE_PREFIX, 30759) +HANDLE_BAT(APINT_TYPE_PREFIX, 30760) +HANDLE_BAT(APINT_TYPE_PREFIX, 30761) +HANDLE_BAT(APINT_TYPE_PREFIX, 30762) +HANDLE_BAT(APINT_TYPE_PREFIX, 30763) +HANDLE_BAT(APINT_TYPE_PREFIX, 30764) +HANDLE_BAT(APINT_TYPE_PREFIX, 30765) +HANDLE_BAT(APINT_TYPE_PREFIX, 30766) +HANDLE_BAT(APINT_TYPE_PREFIX, 30767) +HANDLE_BAT(APINT_TYPE_PREFIX, 30768) +HANDLE_BAT(APINT_TYPE_PREFIX, 30769) +HANDLE_BAT(APINT_TYPE_PREFIX, 30770) +HANDLE_BAT(APINT_TYPE_PREFIX, 30771) +HANDLE_BAT(APINT_TYPE_PREFIX, 30772) +HANDLE_BAT(APINT_TYPE_PREFIX, 30773) +HANDLE_BAT(APINT_TYPE_PREFIX, 30774) +HANDLE_BAT(APINT_TYPE_PREFIX, 30775) +HANDLE_BAT(APINT_TYPE_PREFIX, 30776) +HANDLE_BAT(APINT_TYPE_PREFIX, 30777) +HANDLE_BAT(APINT_TYPE_PREFIX, 30778) +HANDLE_BAT(APINT_TYPE_PREFIX, 30779) +HANDLE_BAT(APINT_TYPE_PREFIX, 30780) +HANDLE_BAT(APINT_TYPE_PREFIX, 30781) +HANDLE_BAT(APINT_TYPE_PREFIX, 30782) +HANDLE_BAT(APINT_TYPE_PREFIX, 30783) +HANDLE_BAT(APINT_TYPE_PREFIX, 30784) +HANDLE_BAT(APINT_TYPE_PREFIX, 30785) +HANDLE_BAT(APINT_TYPE_PREFIX, 30786) +HANDLE_BAT(APINT_TYPE_PREFIX, 30787) +HANDLE_BAT(APINT_TYPE_PREFIX, 30788) +HANDLE_BAT(APINT_TYPE_PREFIX, 30789) +HANDLE_BAT(APINT_TYPE_PREFIX, 30790) +HANDLE_BAT(APINT_TYPE_PREFIX, 30791) +HANDLE_BAT(APINT_TYPE_PREFIX, 30792) +HANDLE_BAT(APINT_TYPE_PREFIX, 30793) +HANDLE_BAT(APINT_TYPE_PREFIX, 30794) +HANDLE_BAT(APINT_TYPE_PREFIX, 30795) +HANDLE_BAT(APINT_TYPE_PREFIX, 30796) +HANDLE_BAT(APINT_TYPE_PREFIX, 30797) +HANDLE_BAT(APINT_TYPE_PREFIX, 30798) +HANDLE_BAT(APINT_TYPE_PREFIX, 30799) +HANDLE_BAT(APINT_TYPE_PREFIX, 30800) +HANDLE_BAT(APINT_TYPE_PREFIX, 30801) +HANDLE_BAT(APINT_TYPE_PREFIX, 30802) +HANDLE_BAT(APINT_TYPE_PREFIX, 30803) +HANDLE_BAT(APINT_TYPE_PREFIX, 30804) +HANDLE_BAT(APINT_TYPE_PREFIX, 30805) +HANDLE_BAT(APINT_TYPE_PREFIX, 30806) +HANDLE_BAT(APINT_TYPE_PREFIX, 30807) +HANDLE_BAT(APINT_TYPE_PREFIX, 30808) +HANDLE_BAT(APINT_TYPE_PREFIX, 30809) +HANDLE_BAT(APINT_TYPE_PREFIX, 30810) +HANDLE_BAT(APINT_TYPE_PREFIX, 30811) +HANDLE_BAT(APINT_TYPE_PREFIX, 30812) +HANDLE_BAT(APINT_TYPE_PREFIX, 30813) +HANDLE_BAT(APINT_TYPE_PREFIX, 30814) +HANDLE_BAT(APINT_TYPE_PREFIX, 30815) +HANDLE_BAT(APINT_TYPE_PREFIX, 30816) +HANDLE_BAT(APINT_TYPE_PREFIX, 30817) +HANDLE_BAT(APINT_TYPE_PREFIX, 30818) +HANDLE_BAT(APINT_TYPE_PREFIX, 30819) +HANDLE_BAT(APINT_TYPE_PREFIX, 30820) +HANDLE_BAT(APINT_TYPE_PREFIX, 30821) +HANDLE_BAT(APINT_TYPE_PREFIX, 30822) +HANDLE_BAT(APINT_TYPE_PREFIX, 30823) +HANDLE_BAT(APINT_TYPE_PREFIX, 30824) +HANDLE_BAT(APINT_TYPE_PREFIX, 30825) +HANDLE_BAT(APINT_TYPE_PREFIX, 30826) +HANDLE_BAT(APINT_TYPE_PREFIX, 30827) +HANDLE_BAT(APINT_TYPE_PREFIX, 30828) +HANDLE_BAT(APINT_TYPE_PREFIX, 30829) +HANDLE_BAT(APINT_TYPE_PREFIX, 30830) +HANDLE_BAT(APINT_TYPE_PREFIX, 30831) +HANDLE_BAT(APINT_TYPE_PREFIX, 30832) +HANDLE_BAT(APINT_TYPE_PREFIX, 30833) +HANDLE_BAT(APINT_TYPE_PREFIX, 30834) +HANDLE_BAT(APINT_TYPE_PREFIX, 30835) +HANDLE_BAT(APINT_TYPE_PREFIX, 30836) +HANDLE_BAT(APINT_TYPE_PREFIX, 30837) +HANDLE_BAT(APINT_TYPE_PREFIX, 30838) +HANDLE_BAT(APINT_TYPE_PREFIX, 30839) +HANDLE_BAT(APINT_TYPE_PREFIX, 30840) +HANDLE_BAT(APINT_TYPE_PREFIX, 30841) +HANDLE_BAT(APINT_TYPE_PREFIX, 30842) +HANDLE_BAT(APINT_TYPE_PREFIX, 30843) +HANDLE_BAT(APINT_TYPE_PREFIX, 30844) +HANDLE_BAT(APINT_TYPE_PREFIX, 30845) +HANDLE_BAT(APINT_TYPE_PREFIX, 30846) +HANDLE_BAT(APINT_TYPE_PREFIX, 30847) +HANDLE_BAT(APINT_TYPE_PREFIX, 30848) +HANDLE_BAT(APINT_TYPE_PREFIX, 30849) +HANDLE_BAT(APINT_TYPE_PREFIX, 30850) +HANDLE_BAT(APINT_TYPE_PREFIX, 30851) +HANDLE_BAT(APINT_TYPE_PREFIX, 30852) +HANDLE_BAT(APINT_TYPE_PREFIX, 30853) +HANDLE_BAT(APINT_TYPE_PREFIX, 30854) +HANDLE_BAT(APINT_TYPE_PREFIX, 30855) +HANDLE_BAT(APINT_TYPE_PREFIX, 30856) +HANDLE_BAT(APINT_TYPE_PREFIX, 30857) +HANDLE_BAT(APINT_TYPE_PREFIX, 30858) +HANDLE_BAT(APINT_TYPE_PREFIX, 30859) +HANDLE_BAT(APINT_TYPE_PREFIX, 30860) +HANDLE_BAT(APINT_TYPE_PREFIX, 30861) +HANDLE_BAT(APINT_TYPE_PREFIX, 30862) +HANDLE_BAT(APINT_TYPE_PREFIX, 30863) +HANDLE_BAT(APINT_TYPE_PREFIX, 30864) +HANDLE_BAT(APINT_TYPE_PREFIX, 30865) +HANDLE_BAT(APINT_TYPE_PREFIX, 30866) +HANDLE_BAT(APINT_TYPE_PREFIX, 30867) +HANDLE_BAT(APINT_TYPE_PREFIX, 30868) +HANDLE_BAT(APINT_TYPE_PREFIX, 30869) +HANDLE_BAT(APINT_TYPE_PREFIX, 30870) +HANDLE_BAT(APINT_TYPE_PREFIX, 30871) +HANDLE_BAT(APINT_TYPE_PREFIX, 30872) +HANDLE_BAT(APINT_TYPE_PREFIX, 30873) +HANDLE_BAT(APINT_TYPE_PREFIX, 30874) +HANDLE_BAT(APINT_TYPE_PREFIX, 30875) +HANDLE_BAT(APINT_TYPE_PREFIX, 30876) +HANDLE_BAT(APINT_TYPE_PREFIX, 30877) +HANDLE_BAT(APINT_TYPE_PREFIX, 30878) +HANDLE_BAT(APINT_TYPE_PREFIX, 30879) +HANDLE_BAT(APINT_TYPE_PREFIX, 30880) +HANDLE_BAT(APINT_TYPE_PREFIX, 30881) +HANDLE_BAT(APINT_TYPE_PREFIX, 30882) +HANDLE_BAT(APINT_TYPE_PREFIX, 30883) +HANDLE_BAT(APINT_TYPE_PREFIX, 30884) +HANDLE_BAT(APINT_TYPE_PREFIX, 30885) +HANDLE_BAT(APINT_TYPE_PREFIX, 30886) +HANDLE_BAT(APINT_TYPE_PREFIX, 30887) +HANDLE_BAT(APINT_TYPE_PREFIX, 30888) +HANDLE_BAT(APINT_TYPE_PREFIX, 30889) +HANDLE_BAT(APINT_TYPE_PREFIX, 30890) +HANDLE_BAT(APINT_TYPE_PREFIX, 30891) +HANDLE_BAT(APINT_TYPE_PREFIX, 30892) +HANDLE_BAT(APINT_TYPE_PREFIX, 30893) +HANDLE_BAT(APINT_TYPE_PREFIX, 30894) +HANDLE_BAT(APINT_TYPE_PREFIX, 30895) +HANDLE_BAT(APINT_TYPE_PREFIX, 30896) +HANDLE_BAT(APINT_TYPE_PREFIX, 30897) +HANDLE_BAT(APINT_TYPE_PREFIX, 30898) +HANDLE_BAT(APINT_TYPE_PREFIX, 30899) +HANDLE_BAT(APINT_TYPE_PREFIX, 30900) +HANDLE_BAT(APINT_TYPE_PREFIX, 30901) +HANDLE_BAT(APINT_TYPE_PREFIX, 30902) +HANDLE_BAT(APINT_TYPE_PREFIX, 30903) +HANDLE_BAT(APINT_TYPE_PREFIX, 30904) +HANDLE_BAT(APINT_TYPE_PREFIX, 30905) +HANDLE_BAT(APINT_TYPE_PREFIX, 30906) +HANDLE_BAT(APINT_TYPE_PREFIX, 30907) +HANDLE_BAT(APINT_TYPE_PREFIX, 30908) +HANDLE_BAT(APINT_TYPE_PREFIX, 30909) +HANDLE_BAT(APINT_TYPE_PREFIX, 30910) +HANDLE_BAT(APINT_TYPE_PREFIX, 30911) +HANDLE_BAT(APINT_TYPE_PREFIX, 30912) +HANDLE_BAT(APINT_TYPE_PREFIX, 30913) +HANDLE_BAT(APINT_TYPE_PREFIX, 30914) +HANDLE_BAT(APINT_TYPE_PREFIX, 30915) +HANDLE_BAT(APINT_TYPE_PREFIX, 30916) +HANDLE_BAT(APINT_TYPE_PREFIX, 30917) +HANDLE_BAT(APINT_TYPE_PREFIX, 30918) +HANDLE_BAT(APINT_TYPE_PREFIX, 30919) +HANDLE_BAT(APINT_TYPE_PREFIX, 30920) +HANDLE_BAT(APINT_TYPE_PREFIX, 30921) +HANDLE_BAT(APINT_TYPE_PREFIX, 30922) +HANDLE_BAT(APINT_TYPE_PREFIX, 30923) +HANDLE_BAT(APINT_TYPE_PREFIX, 30924) +HANDLE_BAT(APINT_TYPE_PREFIX, 30925) +HANDLE_BAT(APINT_TYPE_PREFIX, 30926) +HANDLE_BAT(APINT_TYPE_PREFIX, 30927) +HANDLE_BAT(APINT_TYPE_PREFIX, 30928) +HANDLE_BAT(APINT_TYPE_PREFIX, 30929) +HANDLE_BAT(APINT_TYPE_PREFIX, 30930) +HANDLE_BAT(APINT_TYPE_PREFIX, 30931) +HANDLE_BAT(APINT_TYPE_PREFIX, 30932) +HANDLE_BAT(APINT_TYPE_PREFIX, 30933) +HANDLE_BAT(APINT_TYPE_PREFIX, 30934) +HANDLE_BAT(APINT_TYPE_PREFIX, 30935) +HANDLE_BAT(APINT_TYPE_PREFIX, 30936) +HANDLE_BAT(APINT_TYPE_PREFIX, 30937) +HANDLE_BAT(APINT_TYPE_PREFIX, 30938) +HANDLE_BAT(APINT_TYPE_PREFIX, 30939) +HANDLE_BAT(APINT_TYPE_PREFIX, 30940) +HANDLE_BAT(APINT_TYPE_PREFIX, 30941) +HANDLE_BAT(APINT_TYPE_PREFIX, 30942) +HANDLE_BAT(APINT_TYPE_PREFIX, 30943) +HANDLE_BAT(APINT_TYPE_PREFIX, 30944) +HANDLE_BAT(APINT_TYPE_PREFIX, 30945) +HANDLE_BAT(APINT_TYPE_PREFIX, 30946) +HANDLE_BAT(APINT_TYPE_PREFIX, 30947) +HANDLE_BAT(APINT_TYPE_PREFIX, 30948) +HANDLE_BAT(APINT_TYPE_PREFIX, 30949) +HANDLE_BAT(APINT_TYPE_PREFIX, 30950) +HANDLE_BAT(APINT_TYPE_PREFIX, 30951) +HANDLE_BAT(APINT_TYPE_PREFIX, 30952) +HANDLE_BAT(APINT_TYPE_PREFIX, 30953) +HANDLE_BAT(APINT_TYPE_PREFIX, 30954) +HANDLE_BAT(APINT_TYPE_PREFIX, 30955) +HANDLE_BAT(APINT_TYPE_PREFIX, 30956) +HANDLE_BAT(APINT_TYPE_PREFIX, 30957) +HANDLE_BAT(APINT_TYPE_PREFIX, 30958) +HANDLE_BAT(APINT_TYPE_PREFIX, 30959) +HANDLE_BAT(APINT_TYPE_PREFIX, 30960) +HANDLE_BAT(APINT_TYPE_PREFIX, 30961) +HANDLE_BAT(APINT_TYPE_PREFIX, 30962) +HANDLE_BAT(APINT_TYPE_PREFIX, 30963) +HANDLE_BAT(APINT_TYPE_PREFIX, 30964) +HANDLE_BAT(APINT_TYPE_PREFIX, 30965) +HANDLE_BAT(APINT_TYPE_PREFIX, 30966) +HANDLE_BAT(APINT_TYPE_PREFIX, 30967) +HANDLE_BAT(APINT_TYPE_PREFIX, 30968) +HANDLE_BAT(APINT_TYPE_PREFIX, 30969) +HANDLE_BAT(APINT_TYPE_PREFIX, 30970) +HANDLE_BAT(APINT_TYPE_PREFIX, 30971) +HANDLE_BAT(APINT_TYPE_PREFIX, 30972) +HANDLE_BAT(APINT_TYPE_PREFIX, 30973) +HANDLE_BAT(APINT_TYPE_PREFIX, 30974) +HANDLE_BAT(APINT_TYPE_PREFIX, 30975) +HANDLE_BAT(APINT_TYPE_PREFIX, 30976) +HANDLE_BAT(APINT_TYPE_PREFIX, 30977) +HANDLE_BAT(APINT_TYPE_PREFIX, 30978) +HANDLE_BAT(APINT_TYPE_PREFIX, 30979) +HANDLE_BAT(APINT_TYPE_PREFIX, 30980) +HANDLE_BAT(APINT_TYPE_PREFIX, 30981) +HANDLE_BAT(APINT_TYPE_PREFIX, 30982) +HANDLE_BAT(APINT_TYPE_PREFIX, 30983) +HANDLE_BAT(APINT_TYPE_PREFIX, 30984) +HANDLE_BAT(APINT_TYPE_PREFIX, 30985) +HANDLE_BAT(APINT_TYPE_PREFIX, 30986) +HANDLE_BAT(APINT_TYPE_PREFIX, 30987) +HANDLE_BAT(APINT_TYPE_PREFIX, 30988) +HANDLE_BAT(APINT_TYPE_PREFIX, 30989) +HANDLE_BAT(APINT_TYPE_PREFIX, 30990) +HANDLE_BAT(APINT_TYPE_PREFIX, 30991) +HANDLE_BAT(APINT_TYPE_PREFIX, 30992) +HANDLE_BAT(APINT_TYPE_PREFIX, 30993) +HANDLE_BAT(APINT_TYPE_PREFIX, 30994) +HANDLE_BAT(APINT_TYPE_PREFIX, 30995) +HANDLE_BAT(APINT_TYPE_PREFIX, 30996) +HANDLE_BAT(APINT_TYPE_PREFIX, 30997) +HANDLE_BAT(APINT_TYPE_PREFIX, 30998) +HANDLE_BAT(APINT_TYPE_PREFIX, 30999) +HANDLE_BAT(APINT_TYPE_PREFIX, 31000) +HANDLE_BAT(APINT_TYPE_PREFIX, 31001) +HANDLE_BAT(APINT_TYPE_PREFIX, 31002) +HANDLE_BAT(APINT_TYPE_PREFIX, 31003) +HANDLE_BAT(APINT_TYPE_PREFIX, 31004) +HANDLE_BAT(APINT_TYPE_PREFIX, 31005) +HANDLE_BAT(APINT_TYPE_PREFIX, 31006) +HANDLE_BAT(APINT_TYPE_PREFIX, 31007) +HANDLE_BAT(APINT_TYPE_PREFIX, 31008) +HANDLE_BAT(APINT_TYPE_PREFIX, 31009) +HANDLE_BAT(APINT_TYPE_PREFIX, 31010) +HANDLE_BAT(APINT_TYPE_PREFIX, 31011) +HANDLE_BAT(APINT_TYPE_PREFIX, 31012) +HANDLE_BAT(APINT_TYPE_PREFIX, 31013) +HANDLE_BAT(APINT_TYPE_PREFIX, 31014) +HANDLE_BAT(APINT_TYPE_PREFIX, 31015) +HANDLE_BAT(APINT_TYPE_PREFIX, 31016) +HANDLE_BAT(APINT_TYPE_PREFIX, 31017) +HANDLE_BAT(APINT_TYPE_PREFIX, 31018) +HANDLE_BAT(APINT_TYPE_PREFIX, 31019) +HANDLE_BAT(APINT_TYPE_PREFIX, 31020) +HANDLE_BAT(APINT_TYPE_PREFIX, 31021) +HANDLE_BAT(APINT_TYPE_PREFIX, 31022) +HANDLE_BAT(APINT_TYPE_PREFIX, 31023) +HANDLE_BAT(APINT_TYPE_PREFIX, 31024) +HANDLE_BAT(APINT_TYPE_PREFIX, 31025) +HANDLE_BAT(APINT_TYPE_PREFIX, 31026) +HANDLE_BAT(APINT_TYPE_PREFIX, 31027) +HANDLE_BAT(APINT_TYPE_PREFIX, 31028) +HANDLE_BAT(APINT_TYPE_PREFIX, 31029) +HANDLE_BAT(APINT_TYPE_PREFIX, 31030) +HANDLE_BAT(APINT_TYPE_PREFIX, 31031) +HANDLE_BAT(APINT_TYPE_PREFIX, 31032) +HANDLE_BAT(APINT_TYPE_PREFIX, 31033) +HANDLE_BAT(APINT_TYPE_PREFIX, 31034) +HANDLE_BAT(APINT_TYPE_PREFIX, 31035) +HANDLE_BAT(APINT_TYPE_PREFIX, 31036) +HANDLE_BAT(APINT_TYPE_PREFIX, 31037) +HANDLE_BAT(APINT_TYPE_PREFIX, 31038) +HANDLE_BAT(APINT_TYPE_PREFIX, 31039) +HANDLE_BAT(APINT_TYPE_PREFIX, 31040) +HANDLE_BAT(APINT_TYPE_PREFIX, 31041) +HANDLE_BAT(APINT_TYPE_PREFIX, 31042) +HANDLE_BAT(APINT_TYPE_PREFIX, 31043) +HANDLE_BAT(APINT_TYPE_PREFIX, 31044) +HANDLE_BAT(APINT_TYPE_PREFIX, 31045) +HANDLE_BAT(APINT_TYPE_PREFIX, 31046) +HANDLE_BAT(APINT_TYPE_PREFIX, 31047) +HANDLE_BAT(APINT_TYPE_PREFIX, 31048) +HANDLE_BAT(APINT_TYPE_PREFIX, 31049) +HANDLE_BAT(APINT_TYPE_PREFIX, 31050) +HANDLE_BAT(APINT_TYPE_PREFIX, 31051) +HANDLE_BAT(APINT_TYPE_PREFIX, 31052) +HANDLE_BAT(APINT_TYPE_PREFIX, 31053) +HANDLE_BAT(APINT_TYPE_PREFIX, 31054) +HANDLE_BAT(APINT_TYPE_PREFIX, 31055) +HANDLE_BAT(APINT_TYPE_PREFIX, 31056) +HANDLE_BAT(APINT_TYPE_PREFIX, 31057) +HANDLE_BAT(APINT_TYPE_PREFIX, 31058) +HANDLE_BAT(APINT_TYPE_PREFIX, 31059) +HANDLE_BAT(APINT_TYPE_PREFIX, 31060) +HANDLE_BAT(APINT_TYPE_PREFIX, 31061) +HANDLE_BAT(APINT_TYPE_PREFIX, 31062) +HANDLE_BAT(APINT_TYPE_PREFIX, 31063) +HANDLE_BAT(APINT_TYPE_PREFIX, 31064) +HANDLE_BAT(APINT_TYPE_PREFIX, 31065) +HANDLE_BAT(APINT_TYPE_PREFIX, 31066) +HANDLE_BAT(APINT_TYPE_PREFIX, 31067) +HANDLE_BAT(APINT_TYPE_PREFIX, 31068) +HANDLE_BAT(APINT_TYPE_PREFIX, 31069) +HANDLE_BAT(APINT_TYPE_PREFIX, 31070) +HANDLE_BAT(APINT_TYPE_PREFIX, 31071) +HANDLE_BAT(APINT_TYPE_PREFIX, 31072) +HANDLE_BAT(APINT_TYPE_PREFIX, 31073) +HANDLE_BAT(APINT_TYPE_PREFIX, 31074) +HANDLE_BAT(APINT_TYPE_PREFIX, 31075) +HANDLE_BAT(APINT_TYPE_PREFIX, 31076) +HANDLE_BAT(APINT_TYPE_PREFIX, 31077) +HANDLE_BAT(APINT_TYPE_PREFIX, 31078) +HANDLE_BAT(APINT_TYPE_PREFIX, 31079) +HANDLE_BAT(APINT_TYPE_PREFIX, 31080) +HANDLE_BAT(APINT_TYPE_PREFIX, 31081) +HANDLE_BAT(APINT_TYPE_PREFIX, 31082) +HANDLE_BAT(APINT_TYPE_PREFIX, 31083) +HANDLE_BAT(APINT_TYPE_PREFIX, 31084) +HANDLE_BAT(APINT_TYPE_PREFIX, 31085) +HANDLE_BAT(APINT_TYPE_PREFIX, 31086) +HANDLE_BAT(APINT_TYPE_PREFIX, 31087) +HANDLE_BAT(APINT_TYPE_PREFIX, 31088) +HANDLE_BAT(APINT_TYPE_PREFIX, 31089) +HANDLE_BAT(APINT_TYPE_PREFIX, 31090) +HANDLE_BAT(APINT_TYPE_PREFIX, 31091) +HANDLE_BAT(APINT_TYPE_PREFIX, 31092) +HANDLE_BAT(APINT_TYPE_PREFIX, 31093) +HANDLE_BAT(APINT_TYPE_PREFIX, 31094) +HANDLE_BAT(APINT_TYPE_PREFIX, 31095) +HANDLE_BAT(APINT_TYPE_PREFIX, 31096) +HANDLE_BAT(APINT_TYPE_PREFIX, 31097) +HANDLE_BAT(APINT_TYPE_PREFIX, 31098) +HANDLE_BAT(APINT_TYPE_PREFIX, 31099) +HANDLE_BAT(APINT_TYPE_PREFIX, 31100) +HANDLE_BAT(APINT_TYPE_PREFIX, 31101) +HANDLE_BAT(APINT_TYPE_PREFIX, 31102) +HANDLE_BAT(APINT_TYPE_PREFIX, 31103) +HANDLE_BAT(APINT_TYPE_PREFIX, 31104) +HANDLE_BAT(APINT_TYPE_PREFIX, 31105) +HANDLE_BAT(APINT_TYPE_PREFIX, 31106) +HANDLE_BAT(APINT_TYPE_PREFIX, 31107) +HANDLE_BAT(APINT_TYPE_PREFIX, 31108) +HANDLE_BAT(APINT_TYPE_PREFIX, 31109) +HANDLE_BAT(APINT_TYPE_PREFIX, 31110) +HANDLE_BAT(APINT_TYPE_PREFIX, 31111) +HANDLE_BAT(APINT_TYPE_PREFIX, 31112) +HANDLE_BAT(APINT_TYPE_PREFIX, 31113) +HANDLE_BAT(APINT_TYPE_PREFIX, 31114) +HANDLE_BAT(APINT_TYPE_PREFIX, 31115) +HANDLE_BAT(APINT_TYPE_PREFIX, 31116) +HANDLE_BAT(APINT_TYPE_PREFIX, 31117) +HANDLE_BAT(APINT_TYPE_PREFIX, 31118) +HANDLE_BAT(APINT_TYPE_PREFIX, 31119) +HANDLE_BAT(APINT_TYPE_PREFIX, 31120) +HANDLE_BAT(APINT_TYPE_PREFIX, 31121) +HANDLE_BAT(APINT_TYPE_PREFIX, 31122) +HANDLE_BAT(APINT_TYPE_PREFIX, 31123) +HANDLE_BAT(APINT_TYPE_PREFIX, 31124) +HANDLE_BAT(APINT_TYPE_PREFIX, 31125) +HANDLE_BAT(APINT_TYPE_PREFIX, 31126) +HANDLE_BAT(APINT_TYPE_PREFIX, 31127) +HANDLE_BAT(APINT_TYPE_PREFIX, 31128) +HANDLE_BAT(APINT_TYPE_PREFIX, 31129) +HANDLE_BAT(APINT_TYPE_PREFIX, 31130) +HANDLE_BAT(APINT_TYPE_PREFIX, 31131) +HANDLE_BAT(APINT_TYPE_PREFIX, 31132) +HANDLE_BAT(APINT_TYPE_PREFIX, 31133) +HANDLE_BAT(APINT_TYPE_PREFIX, 31134) +HANDLE_BAT(APINT_TYPE_PREFIX, 31135) +HANDLE_BAT(APINT_TYPE_PREFIX, 31136) +HANDLE_BAT(APINT_TYPE_PREFIX, 31137) +HANDLE_BAT(APINT_TYPE_PREFIX, 31138) +HANDLE_BAT(APINT_TYPE_PREFIX, 31139) +HANDLE_BAT(APINT_TYPE_PREFIX, 31140) +HANDLE_BAT(APINT_TYPE_PREFIX, 31141) +HANDLE_BAT(APINT_TYPE_PREFIX, 31142) +HANDLE_BAT(APINT_TYPE_PREFIX, 31143) +HANDLE_BAT(APINT_TYPE_PREFIX, 31144) +HANDLE_BAT(APINT_TYPE_PREFIX, 31145) +HANDLE_BAT(APINT_TYPE_PREFIX, 31146) +HANDLE_BAT(APINT_TYPE_PREFIX, 31147) +HANDLE_BAT(APINT_TYPE_PREFIX, 31148) +HANDLE_BAT(APINT_TYPE_PREFIX, 31149) +HANDLE_BAT(APINT_TYPE_PREFIX, 31150) +HANDLE_BAT(APINT_TYPE_PREFIX, 31151) +HANDLE_BAT(APINT_TYPE_PREFIX, 31152) +HANDLE_BAT(APINT_TYPE_PREFIX, 31153) +HANDLE_BAT(APINT_TYPE_PREFIX, 31154) +HANDLE_BAT(APINT_TYPE_PREFIX, 31155) +HANDLE_BAT(APINT_TYPE_PREFIX, 31156) +HANDLE_BAT(APINT_TYPE_PREFIX, 31157) +HANDLE_BAT(APINT_TYPE_PREFIX, 31158) +HANDLE_BAT(APINT_TYPE_PREFIX, 31159) +HANDLE_BAT(APINT_TYPE_PREFIX, 31160) +HANDLE_BAT(APINT_TYPE_PREFIX, 31161) +HANDLE_BAT(APINT_TYPE_PREFIX, 31162) +HANDLE_BAT(APINT_TYPE_PREFIX, 31163) +HANDLE_BAT(APINT_TYPE_PREFIX, 31164) +HANDLE_BAT(APINT_TYPE_PREFIX, 31165) +HANDLE_BAT(APINT_TYPE_PREFIX, 31166) +HANDLE_BAT(APINT_TYPE_PREFIX, 31167) +HANDLE_BAT(APINT_TYPE_PREFIX, 31168) +HANDLE_BAT(APINT_TYPE_PREFIX, 31169) +HANDLE_BAT(APINT_TYPE_PREFIX, 31170) +HANDLE_BAT(APINT_TYPE_PREFIX, 31171) +HANDLE_BAT(APINT_TYPE_PREFIX, 31172) +HANDLE_BAT(APINT_TYPE_PREFIX, 31173) +HANDLE_BAT(APINT_TYPE_PREFIX, 31174) +HANDLE_BAT(APINT_TYPE_PREFIX, 31175) +HANDLE_BAT(APINT_TYPE_PREFIX, 31176) +HANDLE_BAT(APINT_TYPE_PREFIX, 31177) +HANDLE_BAT(APINT_TYPE_PREFIX, 31178) +HANDLE_BAT(APINT_TYPE_PREFIX, 31179) +HANDLE_BAT(APINT_TYPE_PREFIX, 31180) +HANDLE_BAT(APINT_TYPE_PREFIX, 31181) +HANDLE_BAT(APINT_TYPE_PREFIX, 31182) +HANDLE_BAT(APINT_TYPE_PREFIX, 31183) +HANDLE_BAT(APINT_TYPE_PREFIX, 31184) +HANDLE_BAT(APINT_TYPE_PREFIX, 31185) +HANDLE_BAT(APINT_TYPE_PREFIX, 31186) +HANDLE_BAT(APINT_TYPE_PREFIX, 31187) +HANDLE_BAT(APINT_TYPE_PREFIX, 31188) +HANDLE_BAT(APINT_TYPE_PREFIX, 31189) +HANDLE_BAT(APINT_TYPE_PREFIX, 31190) +HANDLE_BAT(APINT_TYPE_PREFIX, 31191) +HANDLE_BAT(APINT_TYPE_PREFIX, 31192) +HANDLE_BAT(APINT_TYPE_PREFIX, 31193) +HANDLE_BAT(APINT_TYPE_PREFIX, 31194) +HANDLE_BAT(APINT_TYPE_PREFIX, 31195) +HANDLE_BAT(APINT_TYPE_PREFIX, 31196) +HANDLE_BAT(APINT_TYPE_PREFIX, 31197) +HANDLE_BAT(APINT_TYPE_PREFIX, 31198) +HANDLE_BAT(APINT_TYPE_PREFIX, 31199) +HANDLE_BAT(APINT_TYPE_PREFIX, 31200) +HANDLE_BAT(APINT_TYPE_PREFIX, 31201) +HANDLE_BAT(APINT_TYPE_PREFIX, 31202) +HANDLE_BAT(APINT_TYPE_PREFIX, 31203) +HANDLE_BAT(APINT_TYPE_PREFIX, 31204) +HANDLE_BAT(APINT_TYPE_PREFIX, 31205) +HANDLE_BAT(APINT_TYPE_PREFIX, 31206) +HANDLE_BAT(APINT_TYPE_PREFIX, 31207) +HANDLE_BAT(APINT_TYPE_PREFIX, 31208) +HANDLE_BAT(APINT_TYPE_PREFIX, 31209) +HANDLE_BAT(APINT_TYPE_PREFIX, 31210) +HANDLE_BAT(APINT_TYPE_PREFIX, 31211) +HANDLE_BAT(APINT_TYPE_PREFIX, 31212) +HANDLE_BAT(APINT_TYPE_PREFIX, 31213) +HANDLE_BAT(APINT_TYPE_PREFIX, 31214) +HANDLE_BAT(APINT_TYPE_PREFIX, 31215) +HANDLE_BAT(APINT_TYPE_PREFIX, 31216) +HANDLE_BAT(APINT_TYPE_PREFIX, 31217) +HANDLE_BAT(APINT_TYPE_PREFIX, 31218) +HANDLE_BAT(APINT_TYPE_PREFIX, 31219) +HANDLE_BAT(APINT_TYPE_PREFIX, 31220) +HANDLE_BAT(APINT_TYPE_PREFIX, 31221) +HANDLE_BAT(APINT_TYPE_PREFIX, 31222) +HANDLE_BAT(APINT_TYPE_PREFIX, 31223) +HANDLE_BAT(APINT_TYPE_PREFIX, 31224) +HANDLE_BAT(APINT_TYPE_PREFIX, 31225) +HANDLE_BAT(APINT_TYPE_PREFIX, 31226) +HANDLE_BAT(APINT_TYPE_PREFIX, 31227) +HANDLE_BAT(APINT_TYPE_PREFIX, 31228) +HANDLE_BAT(APINT_TYPE_PREFIX, 31229) +HANDLE_BAT(APINT_TYPE_PREFIX, 31230) +HANDLE_BAT(APINT_TYPE_PREFIX, 31231) +HANDLE_BAT(APINT_TYPE_PREFIX, 31232) +HANDLE_BAT(APINT_TYPE_PREFIX, 31233) +HANDLE_BAT(APINT_TYPE_PREFIX, 31234) +HANDLE_BAT(APINT_TYPE_PREFIX, 31235) +HANDLE_BAT(APINT_TYPE_PREFIX, 31236) +HANDLE_BAT(APINT_TYPE_PREFIX, 31237) +HANDLE_BAT(APINT_TYPE_PREFIX, 31238) +HANDLE_BAT(APINT_TYPE_PREFIX, 31239) +HANDLE_BAT(APINT_TYPE_PREFIX, 31240) +HANDLE_BAT(APINT_TYPE_PREFIX, 31241) +HANDLE_BAT(APINT_TYPE_PREFIX, 31242) +HANDLE_BAT(APINT_TYPE_PREFIX, 31243) +HANDLE_BAT(APINT_TYPE_PREFIX, 31244) +HANDLE_BAT(APINT_TYPE_PREFIX, 31245) +HANDLE_BAT(APINT_TYPE_PREFIX, 31246) +HANDLE_BAT(APINT_TYPE_PREFIX, 31247) +HANDLE_BAT(APINT_TYPE_PREFIX, 31248) +HANDLE_BAT(APINT_TYPE_PREFIX, 31249) +HANDLE_BAT(APINT_TYPE_PREFIX, 31250) +HANDLE_BAT(APINT_TYPE_PREFIX, 31251) +HANDLE_BAT(APINT_TYPE_PREFIX, 31252) +HANDLE_BAT(APINT_TYPE_PREFIX, 31253) +HANDLE_BAT(APINT_TYPE_PREFIX, 31254) +HANDLE_BAT(APINT_TYPE_PREFIX, 31255) +HANDLE_BAT(APINT_TYPE_PREFIX, 31256) +HANDLE_BAT(APINT_TYPE_PREFIX, 31257) +HANDLE_BAT(APINT_TYPE_PREFIX, 31258) +HANDLE_BAT(APINT_TYPE_PREFIX, 31259) +HANDLE_BAT(APINT_TYPE_PREFIX, 31260) +HANDLE_BAT(APINT_TYPE_PREFIX, 31261) +HANDLE_BAT(APINT_TYPE_PREFIX, 31262) +HANDLE_BAT(APINT_TYPE_PREFIX, 31263) +HANDLE_BAT(APINT_TYPE_PREFIX, 31264) +HANDLE_BAT(APINT_TYPE_PREFIX, 31265) +HANDLE_BAT(APINT_TYPE_PREFIX, 31266) +HANDLE_BAT(APINT_TYPE_PREFIX, 31267) +HANDLE_BAT(APINT_TYPE_PREFIX, 31268) +HANDLE_BAT(APINT_TYPE_PREFIX, 31269) +HANDLE_BAT(APINT_TYPE_PREFIX, 31270) +HANDLE_BAT(APINT_TYPE_PREFIX, 31271) +HANDLE_BAT(APINT_TYPE_PREFIX, 31272) +HANDLE_BAT(APINT_TYPE_PREFIX, 31273) +HANDLE_BAT(APINT_TYPE_PREFIX, 31274) +HANDLE_BAT(APINT_TYPE_PREFIX, 31275) +HANDLE_BAT(APINT_TYPE_PREFIX, 31276) +HANDLE_BAT(APINT_TYPE_PREFIX, 31277) +HANDLE_BAT(APINT_TYPE_PREFIX, 31278) +HANDLE_BAT(APINT_TYPE_PREFIX, 31279) +HANDLE_BAT(APINT_TYPE_PREFIX, 31280) +HANDLE_BAT(APINT_TYPE_PREFIX, 31281) +HANDLE_BAT(APINT_TYPE_PREFIX, 31282) +HANDLE_BAT(APINT_TYPE_PREFIX, 31283) +HANDLE_BAT(APINT_TYPE_PREFIX, 31284) +HANDLE_BAT(APINT_TYPE_PREFIX, 31285) +HANDLE_BAT(APINT_TYPE_PREFIX, 31286) +HANDLE_BAT(APINT_TYPE_PREFIX, 31287) +HANDLE_BAT(APINT_TYPE_PREFIX, 31288) +HANDLE_BAT(APINT_TYPE_PREFIX, 31289) +HANDLE_BAT(APINT_TYPE_PREFIX, 31290) +HANDLE_BAT(APINT_TYPE_PREFIX, 31291) +HANDLE_BAT(APINT_TYPE_PREFIX, 31292) +HANDLE_BAT(APINT_TYPE_PREFIX, 31293) +HANDLE_BAT(APINT_TYPE_PREFIX, 31294) +HANDLE_BAT(APINT_TYPE_PREFIX, 31295) +HANDLE_BAT(APINT_TYPE_PREFIX, 31296) +HANDLE_BAT(APINT_TYPE_PREFIX, 31297) +HANDLE_BAT(APINT_TYPE_PREFIX, 31298) +HANDLE_BAT(APINT_TYPE_PREFIX, 31299) +HANDLE_BAT(APINT_TYPE_PREFIX, 31300) +HANDLE_BAT(APINT_TYPE_PREFIX, 31301) +HANDLE_BAT(APINT_TYPE_PREFIX, 31302) +HANDLE_BAT(APINT_TYPE_PREFIX, 31303) +HANDLE_BAT(APINT_TYPE_PREFIX, 31304) +HANDLE_BAT(APINT_TYPE_PREFIX, 31305) +HANDLE_BAT(APINT_TYPE_PREFIX, 31306) +HANDLE_BAT(APINT_TYPE_PREFIX, 31307) +HANDLE_BAT(APINT_TYPE_PREFIX, 31308) +HANDLE_BAT(APINT_TYPE_PREFIX, 31309) +HANDLE_BAT(APINT_TYPE_PREFIX, 31310) +HANDLE_BAT(APINT_TYPE_PREFIX, 31311) +HANDLE_BAT(APINT_TYPE_PREFIX, 31312) +HANDLE_BAT(APINT_TYPE_PREFIX, 31313) +HANDLE_BAT(APINT_TYPE_PREFIX, 31314) +HANDLE_BAT(APINT_TYPE_PREFIX, 31315) +HANDLE_BAT(APINT_TYPE_PREFIX, 31316) +HANDLE_BAT(APINT_TYPE_PREFIX, 31317) +HANDLE_BAT(APINT_TYPE_PREFIX, 31318) +HANDLE_BAT(APINT_TYPE_PREFIX, 31319) +HANDLE_BAT(APINT_TYPE_PREFIX, 31320) +HANDLE_BAT(APINT_TYPE_PREFIX, 31321) +HANDLE_BAT(APINT_TYPE_PREFIX, 31322) +HANDLE_BAT(APINT_TYPE_PREFIX, 31323) +HANDLE_BAT(APINT_TYPE_PREFIX, 31324) +HANDLE_BAT(APINT_TYPE_PREFIX, 31325) +HANDLE_BAT(APINT_TYPE_PREFIX, 31326) +HANDLE_BAT(APINT_TYPE_PREFIX, 31327) +HANDLE_BAT(APINT_TYPE_PREFIX, 31328) +HANDLE_BAT(APINT_TYPE_PREFIX, 31329) +HANDLE_BAT(APINT_TYPE_PREFIX, 31330) +HANDLE_BAT(APINT_TYPE_PREFIX, 31331) +HANDLE_BAT(APINT_TYPE_PREFIX, 31332) +HANDLE_BAT(APINT_TYPE_PREFIX, 31333) +HANDLE_BAT(APINT_TYPE_PREFIX, 31334) +HANDLE_BAT(APINT_TYPE_PREFIX, 31335) +HANDLE_BAT(APINT_TYPE_PREFIX, 31336) +HANDLE_BAT(APINT_TYPE_PREFIX, 31337) +HANDLE_BAT(APINT_TYPE_PREFIX, 31338) +HANDLE_BAT(APINT_TYPE_PREFIX, 31339) +HANDLE_BAT(APINT_TYPE_PREFIX, 31340) +HANDLE_BAT(APINT_TYPE_PREFIX, 31341) +HANDLE_BAT(APINT_TYPE_PREFIX, 31342) +HANDLE_BAT(APINT_TYPE_PREFIX, 31343) +HANDLE_BAT(APINT_TYPE_PREFIX, 31344) +HANDLE_BAT(APINT_TYPE_PREFIX, 31345) +HANDLE_BAT(APINT_TYPE_PREFIX, 31346) +HANDLE_BAT(APINT_TYPE_PREFIX, 31347) +HANDLE_BAT(APINT_TYPE_PREFIX, 31348) +HANDLE_BAT(APINT_TYPE_PREFIX, 31349) +HANDLE_BAT(APINT_TYPE_PREFIX, 31350) +HANDLE_BAT(APINT_TYPE_PREFIX, 31351) +HANDLE_BAT(APINT_TYPE_PREFIX, 31352) +HANDLE_BAT(APINT_TYPE_PREFIX, 31353) +HANDLE_BAT(APINT_TYPE_PREFIX, 31354) +HANDLE_BAT(APINT_TYPE_PREFIX, 31355) +HANDLE_BAT(APINT_TYPE_PREFIX, 31356) +HANDLE_BAT(APINT_TYPE_PREFIX, 31357) +HANDLE_BAT(APINT_TYPE_PREFIX, 31358) +HANDLE_BAT(APINT_TYPE_PREFIX, 31359) +HANDLE_BAT(APINT_TYPE_PREFIX, 31360) +HANDLE_BAT(APINT_TYPE_PREFIX, 31361) +HANDLE_BAT(APINT_TYPE_PREFIX, 31362) +HANDLE_BAT(APINT_TYPE_PREFIX, 31363) +HANDLE_BAT(APINT_TYPE_PREFIX, 31364) +HANDLE_BAT(APINT_TYPE_PREFIX, 31365) +HANDLE_BAT(APINT_TYPE_PREFIX, 31366) +HANDLE_BAT(APINT_TYPE_PREFIX, 31367) +HANDLE_BAT(APINT_TYPE_PREFIX, 31368) +HANDLE_BAT(APINT_TYPE_PREFIX, 31369) +HANDLE_BAT(APINT_TYPE_PREFIX, 31370) +HANDLE_BAT(APINT_TYPE_PREFIX, 31371) +HANDLE_BAT(APINT_TYPE_PREFIX, 31372) +HANDLE_BAT(APINT_TYPE_PREFIX, 31373) +HANDLE_BAT(APINT_TYPE_PREFIX, 31374) +HANDLE_BAT(APINT_TYPE_PREFIX, 31375) +HANDLE_BAT(APINT_TYPE_PREFIX, 31376) +HANDLE_BAT(APINT_TYPE_PREFIX, 31377) +HANDLE_BAT(APINT_TYPE_PREFIX, 31378) +HANDLE_BAT(APINT_TYPE_PREFIX, 31379) +HANDLE_BAT(APINT_TYPE_PREFIX, 31380) +HANDLE_BAT(APINT_TYPE_PREFIX, 31381) +HANDLE_BAT(APINT_TYPE_PREFIX, 31382) +HANDLE_BAT(APINT_TYPE_PREFIX, 31383) +HANDLE_BAT(APINT_TYPE_PREFIX, 31384) +HANDLE_BAT(APINT_TYPE_PREFIX, 31385) +HANDLE_BAT(APINT_TYPE_PREFIX, 31386) +HANDLE_BAT(APINT_TYPE_PREFIX, 31387) +HANDLE_BAT(APINT_TYPE_PREFIX, 31388) +HANDLE_BAT(APINT_TYPE_PREFIX, 31389) +HANDLE_BAT(APINT_TYPE_PREFIX, 31390) +HANDLE_BAT(APINT_TYPE_PREFIX, 31391) +HANDLE_BAT(APINT_TYPE_PREFIX, 31392) +HANDLE_BAT(APINT_TYPE_PREFIX, 31393) +HANDLE_BAT(APINT_TYPE_PREFIX, 31394) +HANDLE_BAT(APINT_TYPE_PREFIX, 31395) +HANDLE_BAT(APINT_TYPE_PREFIX, 31396) +HANDLE_BAT(APINT_TYPE_PREFIX, 31397) +HANDLE_BAT(APINT_TYPE_PREFIX, 31398) +HANDLE_BAT(APINT_TYPE_PREFIX, 31399) +HANDLE_BAT(APINT_TYPE_PREFIX, 31400) +HANDLE_BAT(APINT_TYPE_PREFIX, 31401) +HANDLE_BAT(APINT_TYPE_PREFIX, 31402) +HANDLE_BAT(APINT_TYPE_PREFIX, 31403) +HANDLE_BAT(APINT_TYPE_PREFIX, 31404) +HANDLE_BAT(APINT_TYPE_PREFIX, 31405) +HANDLE_BAT(APINT_TYPE_PREFIX, 31406) +HANDLE_BAT(APINT_TYPE_PREFIX, 31407) +HANDLE_BAT(APINT_TYPE_PREFIX, 31408) +HANDLE_BAT(APINT_TYPE_PREFIX, 31409) +HANDLE_BAT(APINT_TYPE_PREFIX, 31410) +HANDLE_BAT(APINT_TYPE_PREFIX, 31411) +HANDLE_BAT(APINT_TYPE_PREFIX, 31412) +HANDLE_BAT(APINT_TYPE_PREFIX, 31413) +HANDLE_BAT(APINT_TYPE_PREFIX, 31414) +HANDLE_BAT(APINT_TYPE_PREFIX, 31415) +HANDLE_BAT(APINT_TYPE_PREFIX, 31416) +HANDLE_BAT(APINT_TYPE_PREFIX, 31417) +HANDLE_BAT(APINT_TYPE_PREFIX, 31418) +HANDLE_BAT(APINT_TYPE_PREFIX, 31419) +HANDLE_BAT(APINT_TYPE_PREFIX, 31420) +HANDLE_BAT(APINT_TYPE_PREFIX, 31421) +HANDLE_BAT(APINT_TYPE_PREFIX, 31422) +HANDLE_BAT(APINT_TYPE_PREFIX, 31423) +HANDLE_BAT(APINT_TYPE_PREFIX, 31424) +HANDLE_BAT(APINT_TYPE_PREFIX, 31425) +HANDLE_BAT(APINT_TYPE_PREFIX, 31426) +HANDLE_BAT(APINT_TYPE_PREFIX, 31427) +HANDLE_BAT(APINT_TYPE_PREFIX, 31428) +HANDLE_BAT(APINT_TYPE_PREFIX, 31429) +HANDLE_BAT(APINT_TYPE_PREFIX, 31430) +HANDLE_BAT(APINT_TYPE_PREFIX, 31431) +HANDLE_BAT(APINT_TYPE_PREFIX, 31432) +HANDLE_BAT(APINT_TYPE_PREFIX, 31433) +HANDLE_BAT(APINT_TYPE_PREFIX, 31434) +HANDLE_BAT(APINT_TYPE_PREFIX, 31435) +HANDLE_BAT(APINT_TYPE_PREFIX, 31436) +HANDLE_BAT(APINT_TYPE_PREFIX, 31437) +HANDLE_BAT(APINT_TYPE_PREFIX, 31438) +HANDLE_BAT(APINT_TYPE_PREFIX, 31439) +HANDLE_BAT(APINT_TYPE_PREFIX, 31440) +HANDLE_BAT(APINT_TYPE_PREFIX, 31441) +HANDLE_BAT(APINT_TYPE_PREFIX, 31442) +HANDLE_BAT(APINT_TYPE_PREFIX, 31443) +HANDLE_BAT(APINT_TYPE_PREFIX, 31444) +HANDLE_BAT(APINT_TYPE_PREFIX, 31445) +HANDLE_BAT(APINT_TYPE_PREFIX, 31446) +HANDLE_BAT(APINT_TYPE_PREFIX, 31447) +HANDLE_BAT(APINT_TYPE_PREFIX, 31448) +HANDLE_BAT(APINT_TYPE_PREFIX, 31449) +HANDLE_BAT(APINT_TYPE_PREFIX, 31450) +HANDLE_BAT(APINT_TYPE_PREFIX, 31451) +HANDLE_BAT(APINT_TYPE_PREFIX, 31452) +HANDLE_BAT(APINT_TYPE_PREFIX, 31453) +HANDLE_BAT(APINT_TYPE_PREFIX, 31454) +HANDLE_BAT(APINT_TYPE_PREFIX, 31455) +HANDLE_BAT(APINT_TYPE_PREFIX, 31456) +HANDLE_BAT(APINT_TYPE_PREFIX, 31457) +HANDLE_BAT(APINT_TYPE_PREFIX, 31458) +HANDLE_BAT(APINT_TYPE_PREFIX, 31459) +HANDLE_BAT(APINT_TYPE_PREFIX, 31460) +HANDLE_BAT(APINT_TYPE_PREFIX, 31461) +HANDLE_BAT(APINT_TYPE_PREFIX, 31462) +HANDLE_BAT(APINT_TYPE_PREFIX, 31463) +HANDLE_BAT(APINT_TYPE_PREFIX, 31464) +HANDLE_BAT(APINT_TYPE_PREFIX, 31465) +HANDLE_BAT(APINT_TYPE_PREFIX, 31466) +HANDLE_BAT(APINT_TYPE_PREFIX, 31467) +HANDLE_BAT(APINT_TYPE_PREFIX, 31468) +HANDLE_BAT(APINT_TYPE_PREFIX, 31469) +HANDLE_BAT(APINT_TYPE_PREFIX, 31470) +HANDLE_BAT(APINT_TYPE_PREFIX, 31471) +HANDLE_BAT(APINT_TYPE_PREFIX, 31472) +HANDLE_BAT(APINT_TYPE_PREFIX, 31473) +HANDLE_BAT(APINT_TYPE_PREFIX, 31474) +HANDLE_BAT(APINT_TYPE_PREFIX, 31475) +HANDLE_BAT(APINT_TYPE_PREFIX, 31476) +HANDLE_BAT(APINT_TYPE_PREFIX, 31477) +HANDLE_BAT(APINT_TYPE_PREFIX, 31478) +HANDLE_BAT(APINT_TYPE_PREFIX, 31479) +HANDLE_BAT(APINT_TYPE_PREFIX, 31480) +HANDLE_BAT(APINT_TYPE_PREFIX, 31481) +HANDLE_BAT(APINT_TYPE_PREFIX, 31482) +HANDLE_BAT(APINT_TYPE_PREFIX, 31483) +HANDLE_BAT(APINT_TYPE_PREFIX, 31484) +HANDLE_BAT(APINT_TYPE_PREFIX, 31485) +HANDLE_BAT(APINT_TYPE_PREFIX, 31486) +HANDLE_BAT(APINT_TYPE_PREFIX, 31487) +HANDLE_BAT(APINT_TYPE_PREFIX, 31488) +HANDLE_BAT(APINT_TYPE_PREFIX, 31489) +HANDLE_BAT(APINT_TYPE_PREFIX, 31490) +HANDLE_BAT(APINT_TYPE_PREFIX, 31491) +HANDLE_BAT(APINT_TYPE_PREFIX, 31492) +HANDLE_BAT(APINT_TYPE_PREFIX, 31493) +HANDLE_BAT(APINT_TYPE_PREFIX, 31494) +HANDLE_BAT(APINT_TYPE_PREFIX, 31495) +HANDLE_BAT(APINT_TYPE_PREFIX, 31496) +HANDLE_BAT(APINT_TYPE_PREFIX, 31497) +HANDLE_BAT(APINT_TYPE_PREFIX, 31498) +HANDLE_BAT(APINT_TYPE_PREFIX, 31499) +HANDLE_BAT(APINT_TYPE_PREFIX, 31500) +HANDLE_BAT(APINT_TYPE_PREFIX, 31501) +HANDLE_BAT(APINT_TYPE_PREFIX, 31502) +HANDLE_BAT(APINT_TYPE_PREFIX, 31503) +HANDLE_BAT(APINT_TYPE_PREFIX, 31504) +HANDLE_BAT(APINT_TYPE_PREFIX, 31505) +HANDLE_BAT(APINT_TYPE_PREFIX, 31506) +HANDLE_BAT(APINT_TYPE_PREFIX, 31507) +HANDLE_BAT(APINT_TYPE_PREFIX, 31508) +HANDLE_BAT(APINT_TYPE_PREFIX, 31509) +HANDLE_BAT(APINT_TYPE_PREFIX, 31510) +HANDLE_BAT(APINT_TYPE_PREFIX, 31511) +HANDLE_BAT(APINT_TYPE_PREFIX, 31512) +HANDLE_BAT(APINT_TYPE_PREFIX, 31513) +HANDLE_BAT(APINT_TYPE_PREFIX, 31514) +HANDLE_BAT(APINT_TYPE_PREFIX, 31515) +HANDLE_BAT(APINT_TYPE_PREFIX, 31516) +HANDLE_BAT(APINT_TYPE_PREFIX, 31517) +HANDLE_BAT(APINT_TYPE_PREFIX, 31518) +HANDLE_BAT(APINT_TYPE_PREFIX, 31519) +HANDLE_BAT(APINT_TYPE_PREFIX, 31520) +HANDLE_BAT(APINT_TYPE_PREFIX, 31521) +HANDLE_BAT(APINT_TYPE_PREFIX, 31522) +HANDLE_BAT(APINT_TYPE_PREFIX, 31523) +HANDLE_BAT(APINT_TYPE_PREFIX, 31524) +HANDLE_BAT(APINT_TYPE_PREFIX, 31525) +HANDLE_BAT(APINT_TYPE_PREFIX, 31526) +HANDLE_BAT(APINT_TYPE_PREFIX, 31527) +HANDLE_BAT(APINT_TYPE_PREFIX, 31528) +HANDLE_BAT(APINT_TYPE_PREFIX, 31529) +HANDLE_BAT(APINT_TYPE_PREFIX, 31530) +HANDLE_BAT(APINT_TYPE_PREFIX, 31531) +HANDLE_BAT(APINT_TYPE_PREFIX, 31532) +HANDLE_BAT(APINT_TYPE_PREFIX, 31533) +HANDLE_BAT(APINT_TYPE_PREFIX, 31534) +HANDLE_BAT(APINT_TYPE_PREFIX, 31535) +HANDLE_BAT(APINT_TYPE_PREFIX, 31536) +HANDLE_BAT(APINT_TYPE_PREFIX, 31537) +HANDLE_BAT(APINT_TYPE_PREFIX, 31538) +HANDLE_BAT(APINT_TYPE_PREFIX, 31539) +HANDLE_BAT(APINT_TYPE_PREFIX, 31540) +HANDLE_BAT(APINT_TYPE_PREFIX, 31541) +HANDLE_BAT(APINT_TYPE_PREFIX, 31542) +HANDLE_BAT(APINT_TYPE_PREFIX, 31543) +HANDLE_BAT(APINT_TYPE_PREFIX, 31544) +HANDLE_BAT(APINT_TYPE_PREFIX, 31545) +HANDLE_BAT(APINT_TYPE_PREFIX, 31546) +HANDLE_BAT(APINT_TYPE_PREFIX, 31547) +HANDLE_BAT(APINT_TYPE_PREFIX, 31548) +HANDLE_BAT(APINT_TYPE_PREFIX, 31549) +HANDLE_BAT(APINT_TYPE_PREFIX, 31550) +HANDLE_BAT(APINT_TYPE_PREFIX, 31551) +HANDLE_BAT(APINT_TYPE_PREFIX, 31552) +HANDLE_BAT(APINT_TYPE_PREFIX, 31553) +HANDLE_BAT(APINT_TYPE_PREFIX, 31554) +HANDLE_BAT(APINT_TYPE_PREFIX, 31555) +HANDLE_BAT(APINT_TYPE_PREFIX, 31556) +HANDLE_BAT(APINT_TYPE_PREFIX, 31557) +HANDLE_BAT(APINT_TYPE_PREFIX, 31558) +HANDLE_BAT(APINT_TYPE_PREFIX, 31559) +HANDLE_BAT(APINT_TYPE_PREFIX, 31560) +HANDLE_BAT(APINT_TYPE_PREFIX, 31561) +HANDLE_BAT(APINT_TYPE_PREFIX, 31562) +HANDLE_BAT(APINT_TYPE_PREFIX, 31563) +HANDLE_BAT(APINT_TYPE_PREFIX, 31564) +HANDLE_BAT(APINT_TYPE_PREFIX, 31565) +HANDLE_BAT(APINT_TYPE_PREFIX, 31566) +HANDLE_BAT(APINT_TYPE_PREFIX, 31567) +HANDLE_BAT(APINT_TYPE_PREFIX, 31568) +HANDLE_BAT(APINT_TYPE_PREFIX, 31569) +HANDLE_BAT(APINT_TYPE_PREFIX, 31570) +HANDLE_BAT(APINT_TYPE_PREFIX, 31571) +HANDLE_BAT(APINT_TYPE_PREFIX, 31572) +HANDLE_BAT(APINT_TYPE_PREFIX, 31573) +HANDLE_BAT(APINT_TYPE_PREFIX, 31574) +HANDLE_BAT(APINT_TYPE_PREFIX, 31575) +HANDLE_BAT(APINT_TYPE_PREFIX, 31576) +HANDLE_BAT(APINT_TYPE_PREFIX, 31577) +HANDLE_BAT(APINT_TYPE_PREFIX, 31578) +HANDLE_BAT(APINT_TYPE_PREFIX, 31579) +HANDLE_BAT(APINT_TYPE_PREFIX, 31580) +HANDLE_BAT(APINT_TYPE_PREFIX, 31581) +HANDLE_BAT(APINT_TYPE_PREFIX, 31582) +HANDLE_BAT(APINT_TYPE_PREFIX, 31583) +HANDLE_BAT(APINT_TYPE_PREFIX, 31584) +HANDLE_BAT(APINT_TYPE_PREFIX, 31585) +HANDLE_BAT(APINT_TYPE_PREFIX, 31586) +HANDLE_BAT(APINT_TYPE_PREFIX, 31587) +HANDLE_BAT(APINT_TYPE_PREFIX, 31588) +HANDLE_BAT(APINT_TYPE_PREFIX, 31589) +HANDLE_BAT(APINT_TYPE_PREFIX, 31590) +HANDLE_BAT(APINT_TYPE_PREFIX, 31591) +HANDLE_BAT(APINT_TYPE_PREFIX, 31592) +HANDLE_BAT(APINT_TYPE_PREFIX, 31593) +HANDLE_BAT(APINT_TYPE_PREFIX, 31594) +HANDLE_BAT(APINT_TYPE_PREFIX, 31595) +HANDLE_BAT(APINT_TYPE_PREFIX, 31596) +HANDLE_BAT(APINT_TYPE_PREFIX, 31597) +HANDLE_BAT(APINT_TYPE_PREFIX, 31598) +HANDLE_BAT(APINT_TYPE_PREFIX, 31599) +HANDLE_BAT(APINT_TYPE_PREFIX, 31600) +HANDLE_BAT(APINT_TYPE_PREFIX, 31601) +HANDLE_BAT(APINT_TYPE_PREFIX, 31602) +HANDLE_BAT(APINT_TYPE_PREFIX, 31603) +HANDLE_BAT(APINT_TYPE_PREFIX, 31604) +HANDLE_BAT(APINT_TYPE_PREFIX, 31605) +HANDLE_BAT(APINT_TYPE_PREFIX, 31606) +HANDLE_BAT(APINT_TYPE_PREFIX, 31607) +HANDLE_BAT(APINT_TYPE_PREFIX, 31608) +HANDLE_BAT(APINT_TYPE_PREFIX, 31609) +HANDLE_BAT(APINT_TYPE_PREFIX, 31610) +HANDLE_BAT(APINT_TYPE_PREFIX, 31611) +HANDLE_BAT(APINT_TYPE_PREFIX, 31612) +HANDLE_BAT(APINT_TYPE_PREFIX, 31613) +HANDLE_BAT(APINT_TYPE_PREFIX, 31614) +HANDLE_BAT(APINT_TYPE_PREFIX, 31615) +HANDLE_BAT(APINT_TYPE_PREFIX, 31616) +HANDLE_BAT(APINT_TYPE_PREFIX, 31617) +HANDLE_BAT(APINT_TYPE_PREFIX, 31618) +HANDLE_BAT(APINT_TYPE_PREFIX, 31619) +HANDLE_BAT(APINT_TYPE_PREFIX, 31620) +HANDLE_BAT(APINT_TYPE_PREFIX, 31621) +HANDLE_BAT(APINT_TYPE_PREFIX, 31622) +HANDLE_BAT(APINT_TYPE_PREFIX, 31623) +HANDLE_BAT(APINT_TYPE_PREFIX, 31624) +HANDLE_BAT(APINT_TYPE_PREFIX, 31625) +HANDLE_BAT(APINT_TYPE_PREFIX, 31626) +HANDLE_BAT(APINT_TYPE_PREFIX, 31627) +HANDLE_BAT(APINT_TYPE_PREFIX, 31628) +HANDLE_BAT(APINT_TYPE_PREFIX, 31629) +HANDLE_BAT(APINT_TYPE_PREFIX, 31630) +HANDLE_BAT(APINT_TYPE_PREFIX, 31631) +HANDLE_BAT(APINT_TYPE_PREFIX, 31632) +HANDLE_BAT(APINT_TYPE_PREFIX, 31633) +HANDLE_BAT(APINT_TYPE_PREFIX, 31634) +HANDLE_BAT(APINT_TYPE_PREFIX, 31635) +HANDLE_BAT(APINT_TYPE_PREFIX, 31636) +HANDLE_BAT(APINT_TYPE_PREFIX, 31637) +HANDLE_BAT(APINT_TYPE_PREFIX, 31638) +HANDLE_BAT(APINT_TYPE_PREFIX, 31639) +HANDLE_BAT(APINT_TYPE_PREFIX, 31640) +HANDLE_BAT(APINT_TYPE_PREFIX, 31641) +HANDLE_BAT(APINT_TYPE_PREFIX, 31642) +HANDLE_BAT(APINT_TYPE_PREFIX, 31643) +HANDLE_BAT(APINT_TYPE_PREFIX, 31644) +HANDLE_BAT(APINT_TYPE_PREFIX, 31645) +HANDLE_BAT(APINT_TYPE_PREFIX, 31646) +HANDLE_BAT(APINT_TYPE_PREFIX, 31647) +HANDLE_BAT(APINT_TYPE_PREFIX, 31648) +HANDLE_BAT(APINT_TYPE_PREFIX, 31649) +HANDLE_BAT(APINT_TYPE_PREFIX, 31650) +HANDLE_BAT(APINT_TYPE_PREFIX, 31651) +HANDLE_BAT(APINT_TYPE_PREFIX, 31652) +HANDLE_BAT(APINT_TYPE_PREFIX, 31653) +HANDLE_BAT(APINT_TYPE_PREFIX, 31654) +HANDLE_BAT(APINT_TYPE_PREFIX, 31655) +HANDLE_BAT(APINT_TYPE_PREFIX, 31656) +HANDLE_BAT(APINT_TYPE_PREFIX, 31657) +HANDLE_BAT(APINT_TYPE_PREFIX, 31658) +HANDLE_BAT(APINT_TYPE_PREFIX, 31659) +HANDLE_BAT(APINT_TYPE_PREFIX, 31660) +HANDLE_BAT(APINT_TYPE_PREFIX, 31661) +HANDLE_BAT(APINT_TYPE_PREFIX, 31662) +HANDLE_BAT(APINT_TYPE_PREFIX, 31663) +HANDLE_BAT(APINT_TYPE_PREFIX, 31664) +HANDLE_BAT(APINT_TYPE_PREFIX, 31665) +HANDLE_BAT(APINT_TYPE_PREFIX, 31666) +HANDLE_BAT(APINT_TYPE_PREFIX, 31667) +HANDLE_BAT(APINT_TYPE_PREFIX, 31668) +HANDLE_BAT(APINT_TYPE_PREFIX, 31669) +HANDLE_BAT(APINT_TYPE_PREFIX, 31670) +HANDLE_BAT(APINT_TYPE_PREFIX, 31671) +HANDLE_BAT(APINT_TYPE_PREFIX, 31672) +HANDLE_BAT(APINT_TYPE_PREFIX, 31673) +HANDLE_BAT(APINT_TYPE_PREFIX, 31674) +HANDLE_BAT(APINT_TYPE_PREFIX, 31675) +HANDLE_BAT(APINT_TYPE_PREFIX, 31676) +HANDLE_BAT(APINT_TYPE_PREFIX, 31677) +HANDLE_BAT(APINT_TYPE_PREFIX, 31678) +HANDLE_BAT(APINT_TYPE_PREFIX, 31679) +HANDLE_BAT(APINT_TYPE_PREFIX, 31680) +HANDLE_BAT(APINT_TYPE_PREFIX, 31681) +HANDLE_BAT(APINT_TYPE_PREFIX, 31682) +HANDLE_BAT(APINT_TYPE_PREFIX, 31683) +HANDLE_BAT(APINT_TYPE_PREFIX, 31684) +HANDLE_BAT(APINT_TYPE_PREFIX, 31685) +HANDLE_BAT(APINT_TYPE_PREFIX, 31686) +HANDLE_BAT(APINT_TYPE_PREFIX, 31687) +HANDLE_BAT(APINT_TYPE_PREFIX, 31688) +HANDLE_BAT(APINT_TYPE_PREFIX, 31689) +HANDLE_BAT(APINT_TYPE_PREFIX, 31690) +HANDLE_BAT(APINT_TYPE_PREFIX, 31691) +HANDLE_BAT(APINT_TYPE_PREFIX, 31692) +HANDLE_BAT(APINT_TYPE_PREFIX, 31693) +HANDLE_BAT(APINT_TYPE_PREFIX, 31694) +HANDLE_BAT(APINT_TYPE_PREFIX, 31695) +HANDLE_BAT(APINT_TYPE_PREFIX, 31696) +HANDLE_BAT(APINT_TYPE_PREFIX, 31697) +HANDLE_BAT(APINT_TYPE_PREFIX, 31698) +HANDLE_BAT(APINT_TYPE_PREFIX, 31699) +HANDLE_BAT(APINT_TYPE_PREFIX, 31700) +HANDLE_BAT(APINT_TYPE_PREFIX, 31701) +HANDLE_BAT(APINT_TYPE_PREFIX, 31702) +HANDLE_BAT(APINT_TYPE_PREFIX, 31703) +HANDLE_BAT(APINT_TYPE_PREFIX, 31704) +HANDLE_BAT(APINT_TYPE_PREFIX, 31705) +HANDLE_BAT(APINT_TYPE_PREFIX, 31706) +HANDLE_BAT(APINT_TYPE_PREFIX, 31707) +HANDLE_BAT(APINT_TYPE_PREFIX, 31708) +HANDLE_BAT(APINT_TYPE_PREFIX, 31709) +HANDLE_BAT(APINT_TYPE_PREFIX, 31710) +HANDLE_BAT(APINT_TYPE_PREFIX, 31711) +HANDLE_BAT(APINT_TYPE_PREFIX, 31712) +HANDLE_BAT(APINT_TYPE_PREFIX, 31713) +HANDLE_BAT(APINT_TYPE_PREFIX, 31714) +HANDLE_BAT(APINT_TYPE_PREFIX, 31715) +HANDLE_BAT(APINT_TYPE_PREFIX, 31716) +HANDLE_BAT(APINT_TYPE_PREFIX, 31717) +HANDLE_BAT(APINT_TYPE_PREFIX, 31718) +HANDLE_BAT(APINT_TYPE_PREFIX, 31719) +HANDLE_BAT(APINT_TYPE_PREFIX, 31720) +HANDLE_BAT(APINT_TYPE_PREFIX, 31721) +HANDLE_BAT(APINT_TYPE_PREFIX, 31722) +HANDLE_BAT(APINT_TYPE_PREFIX, 31723) +HANDLE_BAT(APINT_TYPE_PREFIX, 31724) +HANDLE_BAT(APINT_TYPE_PREFIX, 31725) +HANDLE_BAT(APINT_TYPE_PREFIX, 31726) +HANDLE_BAT(APINT_TYPE_PREFIX, 31727) +HANDLE_BAT(APINT_TYPE_PREFIX, 31728) +HANDLE_BAT(APINT_TYPE_PREFIX, 31729) +HANDLE_BAT(APINT_TYPE_PREFIX, 31730) +HANDLE_BAT(APINT_TYPE_PREFIX, 31731) +HANDLE_BAT(APINT_TYPE_PREFIX, 31732) +HANDLE_BAT(APINT_TYPE_PREFIX, 31733) +HANDLE_BAT(APINT_TYPE_PREFIX, 31734) +HANDLE_BAT(APINT_TYPE_PREFIX, 31735) +HANDLE_BAT(APINT_TYPE_PREFIX, 31736) +HANDLE_BAT(APINT_TYPE_PREFIX, 31737) +HANDLE_BAT(APINT_TYPE_PREFIX, 31738) +HANDLE_BAT(APINT_TYPE_PREFIX, 31739) +HANDLE_BAT(APINT_TYPE_PREFIX, 31740) +HANDLE_BAT(APINT_TYPE_PREFIX, 31741) +HANDLE_BAT(APINT_TYPE_PREFIX, 31742) +HANDLE_BAT(APINT_TYPE_PREFIX, 31743) +HANDLE_BAT(APINT_TYPE_PREFIX, 31744) +#endif +#endif + +#if AP_INT_MAX_UNIT >= 31 +#ifndef APINT_TYPE_PREFIX +HANDLE_BAT(, 31745) +HANDLE_BAT(, 31746) +HANDLE_BAT(, 31747) +HANDLE_BAT(, 31748) +HANDLE_BAT(, 31749) +HANDLE_BAT(, 31750) +HANDLE_BAT(, 31751) +HANDLE_BAT(, 31752) +HANDLE_BAT(, 31753) +HANDLE_BAT(, 31754) +HANDLE_BAT(, 31755) +HANDLE_BAT(, 31756) +HANDLE_BAT(, 31757) +HANDLE_BAT(, 31758) +HANDLE_BAT(, 31759) +HANDLE_BAT(, 31760) +HANDLE_BAT(, 31761) +HANDLE_BAT(, 31762) +HANDLE_BAT(, 31763) +HANDLE_BAT(, 31764) +HANDLE_BAT(, 31765) +HANDLE_BAT(, 31766) +HANDLE_BAT(, 31767) +HANDLE_BAT(, 31768) +HANDLE_BAT(, 31769) +HANDLE_BAT(, 31770) +HANDLE_BAT(, 31771) +HANDLE_BAT(, 31772) +HANDLE_BAT(, 31773) +HANDLE_BAT(, 31774) +HANDLE_BAT(, 31775) +HANDLE_BAT(, 31776) +HANDLE_BAT(, 31777) +HANDLE_BAT(, 31778) +HANDLE_BAT(, 31779) +HANDLE_BAT(, 31780) +HANDLE_BAT(, 31781) +HANDLE_BAT(, 31782) +HANDLE_BAT(, 31783) +HANDLE_BAT(, 31784) +HANDLE_BAT(, 31785) +HANDLE_BAT(, 31786) +HANDLE_BAT(, 31787) +HANDLE_BAT(, 31788) +HANDLE_BAT(, 31789) +HANDLE_BAT(, 31790) +HANDLE_BAT(, 31791) +HANDLE_BAT(, 31792) +HANDLE_BAT(, 31793) +HANDLE_BAT(, 31794) +HANDLE_BAT(, 31795) +HANDLE_BAT(, 31796) +HANDLE_BAT(, 31797) +HANDLE_BAT(, 31798) +HANDLE_BAT(, 31799) +HANDLE_BAT(, 31800) +HANDLE_BAT(, 31801) +HANDLE_BAT(, 31802) +HANDLE_BAT(, 31803) +HANDLE_BAT(, 31804) +HANDLE_BAT(, 31805) +HANDLE_BAT(, 31806) +HANDLE_BAT(, 31807) +HANDLE_BAT(, 31808) +HANDLE_BAT(, 31809) +HANDLE_BAT(, 31810) +HANDLE_BAT(, 31811) +HANDLE_BAT(, 31812) +HANDLE_BAT(, 31813) +HANDLE_BAT(, 31814) +HANDLE_BAT(, 31815) +HANDLE_BAT(, 31816) +HANDLE_BAT(, 31817) +HANDLE_BAT(, 31818) +HANDLE_BAT(, 31819) +HANDLE_BAT(, 31820) +HANDLE_BAT(, 31821) +HANDLE_BAT(, 31822) +HANDLE_BAT(, 31823) +HANDLE_BAT(, 31824) +HANDLE_BAT(, 31825) +HANDLE_BAT(, 31826) +HANDLE_BAT(, 31827) +HANDLE_BAT(, 31828) +HANDLE_BAT(, 31829) +HANDLE_BAT(, 31830) +HANDLE_BAT(, 31831) +HANDLE_BAT(, 31832) +HANDLE_BAT(, 31833) +HANDLE_BAT(, 31834) +HANDLE_BAT(, 31835) +HANDLE_BAT(, 31836) +HANDLE_BAT(, 31837) +HANDLE_BAT(, 31838) +HANDLE_BAT(, 31839) +HANDLE_BAT(, 31840) +HANDLE_BAT(, 31841) +HANDLE_BAT(, 31842) +HANDLE_BAT(, 31843) +HANDLE_BAT(, 31844) +HANDLE_BAT(, 31845) +HANDLE_BAT(, 31846) +HANDLE_BAT(, 31847) +HANDLE_BAT(, 31848) +HANDLE_BAT(, 31849) +HANDLE_BAT(, 31850) +HANDLE_BAT(, 31851) +HANDLE_BAT(, 31852) +HANDLE_BAT(, 31853) +HANDLE_BAT(, 31854) +HANDLE_BAT(, 31855) +HANDLE_BAT(, 31856) +HANDLE_BAT(, 31857) +HANDLE_BAT(, 31858) +HANDLE_BAT(, 31859) +HANDLE_BAT(, 31860) +HANDLE_BAT(, 31861) +HANDLE_BAT(, 31862) +HANDLE_BAT(, 31863) +HANDLE_BAT(, 31864) +HANDLE_BAT(, 31865) +HANDLE_BAT(, 31866) +HANDLE_BAT(, 31867) +HANDLE_BAT(, 31868) +HANDLE_BAT(, 31869) +HANDLE_BAT(, 31870) +HANDLE_BAT(, 31871) +HANDLE_BAT(, 31872) +HANDLE_BAT(, 31873) +HANDLE_BAT(, 31874) +HANDLE_BAT(, 31875) +HANDLE_BAT(, 31876) +HANDLE_BAT(, 31877) +HANDLE_BAT(, 31878) +HANDLE_BAT(, 31879) +HANDLE_BAT(, 31880) +HANDLE_BAT(, 31881) +HANDLE_BAT(, 31882) +HANDLE_BAT(, 31883) +HANDLE_BAT(, 31884) +HANDLE_BAT(, 31885) +HANDLE_BAT(, 31886) +HANDLE_BAT(, 31887) +HANDLE_BAT(, 31888) +HANDLE_BAT(, 31889) +HANDLE_BAT(, 31890) +HANDLE_BAT(, 31891) +HANDLE_BAT(, 31892) +HANDLE_BAT(, 31893) +HANDLE_BAT(, 31894) +HANDLE_BAT(, 31895) +HANDLE_BAT(, 31896) +HANDLE_BAT(, 31897) +HANDLE_BAT(, 31898) +HANDLE_BAT(, 31899) +HANDLE_BAT(, 31900) +HANDLE_BAT(, 31901) +HANDLE_BAT(, 31902) +HANDLE_BAT(, 31903) +HANDLE_BAT(, 31904) +HANDLE_BAT(, 31905) +HANDLE_BAT(, 31906) +HANDLE_BAT(, 31907) +HANDLE_BAT(, 31908) +HANDLE_BAT(, 31909) +HANDLE_BAT(, 31910) +HANDLE_BAT(, 31911) +HANDLE_BAT(, 31912) +HANDLE_BAT(, 31913) +HANDLE_BAT(, 31914) +HANDLE_BAT(, 31915) +HANDLE_BAT(, 31916) +HANDLE_BAT(, 31917) +HANDLE_BAT(, 31918) +HANDLE_BAT(, 31919) +HANDLE_BAT(, 31920) +HANDLE_BAT(, 31921) +HANDLE_BAT(, 31922) +HANDLE_BAT(, 31923) +HANDLE_BAT(, 31924) +HANDLE_BAT(, 31925) +HANDLE_BAT(, 31926) +HANDLE_BAT(, 31927) +HANDLE_BAT(, 31928) +HANDLE_BAT(, 31929) +HANDLE_BAT(, 31930) +HANDLE_BAT(, 31931) +HANDLE_BAT(, 31932) +HANDLE_BAT(, 31933) +HANDLE_BAT(, 31934) +HANDLE_BAT(, 31935) +HANDLE_BAT(, 31936) +HANDLE_BAT(, 31937) +HANDLE_BAT(, 31938) +HANDLE_BAT(, 31939) +HANDLE_BAT(, 31940) +HANDLE_BAT(, 31941) +HANDLE_BAT(, 31942) +HANDLE_BAT(, 31943) +HANDLE_BAT(, 31944) +HANDLE_BAT(, 31945) +HANDLE_BAT(, 31946) +HANDLE_BAT(, 31947) +HANDLE_BAT(, 31948) +HANDLE_BAT(, 31949) +HANDLE_BAT(, 31950) +HANDLE_BAT(, 31951) +HANDLE_BAT(, 31952) +HANDLE_BAT(, 31953) +HANDLE_BAT(, 31954) +HANDLE_BAT(, 31955) +HANDLE_BAT(, 31956) +HANDLE_BAT(, 31957) +HANDLE_BAT(, 31958) +HANDLE_BAT(, 31959) +HANDLE_BAT(, 31960) +HANDLE_BAT(, 31961) +HANDLE_BAT(, 31962) +HANDLE_BAT(, 31963) +HANDLE_BAT(, 31964) +HANDLE_BAT(, 31965) +HANDLE_BAT(, 31966) +HANDLE_BAT(, 31967) +HANDLE_BAT(, 31968) +HANDLE_BAT(, 31969) +HANDLE_BAT(, 31970) +HANDLE_BAT(, 31971) +HANDLE_BAT(, 31972) +HANDLE_BAT(, 31973) +HANDLE_BAT(, 31974) +HANDLE_BAT(, 31975) +HANDLE_BAT(, 31976) +HANDLE_BAT(, 31977) +HANDLE_BAT(, 31978) +HANDLE_BAT(, 31979) +HANDLE_BAT(, 31980) +HANDLE_BAT(, 31981) +HANDLE_BAT(, 31982) +HANDLE_BAT(, 31983) +HANDLE_BAT(, 31984) +HANDLE_BAT(, 31985) +HANDLE_BAT(, 31986) +HANDLE_BAT(, 31987) +HANDLE_BAT(, 31988) +HANDLE_BAT(, 31989) +HANDLE_BAT(, 31990) +HANDLE_BAT(, 31991) +HANDLE_BAT(, 31992) +HANDLE_BAT(, 31993) +HANDLE_BAT(, 31994) +HANDLE_BAT(, 31995) +HANDLE_BAT(, 31996) +HANDLE_BAT(, 31997) +HANDLE_BAT(, 31998) +HANDLE_BAT(, 31999) +HANDLE_BAT(, 32000) +HANDLE_BAT(, 32001) +HANDLE_BAT(, 32002) +HANDLE_BAT(, 32003) +HANDLE_BAT(, 32004) +HANDLE_BAT(, 32005) +HANDLE_BAT(, 32006) +HANDLE_BAT(, 32007) +HANDLE_BAT(, 32008) +HANDLE_BAT(, 32009) +HANDLE_BAT(, 32010) +HANDLE_BAT(, 32011) +HANDLE_BAT(, 32012) +HANDLE_BAT(, 32013) +HANDLE_BAT(, 32014) +HANDLE_BAT(, 32015) +HANDLE_BAT(, 32016) +HANDLE_BAT(, 32017) +HANDLE_BAT(, 32018) +HANDLE_BAT(, 32019) +HANDLE_BAT(, 32020) +HANDLE_BAT(, 32021) +HANDLE_BAT(, 32022) +HANDLE_BAT(, 32023) +HANDLE_BAT(, 32024) +HANDLE_BAT(, 32025) +HANDLE_BAT(, 32026) +HANDLE_BAT(, 32027) +HANDLE_BAT(, 32028) +HANDLE_BAT(, 32029) +HANDLE_BAT(, 32030) +HANDLE_BAT(, 32031) +HANDLE_BAT(, 32032) +HANDLE_BAT(, 32033) +HANDLE_BAT(, 32034) +HANDLE_BAT(, 32035) +HANDLE_BAT(, 32036) +HANDLE_BAT(, 32037) +HANDLE_BAT(, 32038) +HANDLE_BAT(, 32039) +HANDLE_BAT(, 32040) +HANDLE_BAT(, 32041) +HANDLE_BAT(, 32042) +HANDLE_BAT(, 32043) +HANDLE_BAT(, 32044) +HANDLE_BAT(, 32045) +HANDLE_BAT(, 32046) +HANDLE_BAT(, 32047) +HANDLE_BAT(, 32048) +HANDLE_BAT(, 32049) +HANDLE_BAT(, 32050) +HANDLE_BAT(, 32051) +HANDLE_BAT(, 32052) +HANDLE_BAT(, 32053) +HANDLE_BAT(, 32054) +HANDLE_BAT(, 32055) +HANDLE_BAT(, 32056) +HANDLE_BAT(, 32057) +HANDLE_BAT(, 32058) +HANDLE_BAT(, 32059) +HANDLE_BAT(, 32060) +HANDLE_BAT(, 32061) +HANDLE_BAT(, 32062) +HANDLE_BAT(, 32063) +HANDLE_BAT(, 32064) +HANDLE_BAT(, 32065) +HANDLE_BAT(, 32066) +HANDLE_BAT(, 32067) +HANDLE_BAT(, 32068) +HANDLE_BAT(, 32069) +HANDLE_BAT(, 32070) +HANDLE_BAT(, 32071) +HANDLE_BAT(, 32072) +HANDLE_BAT(, 32073) +HANDLE_BAT(, 32074) +HANDLE_BAT(, 32075) +HANDLE_BAT(, 32076) +HANDLE_BAT(, 32077) +HANDLE_BAT(, 32078) +HANDLE_BAT(, 32079) +HANDLE_BAT(, 32080) +HANDLE_BAT(, 32081) +HANDLE_BAT(, 32082) +HANDLE_BAT(, 32083) +HANDLE_BAT(, 32084) +HANDLE_BAT(, 32085) +HANDLE_BAT(, 32086) +HANDLE_BAT(, 32087) +HANDLE_BAT(, 32088) +HANDLE_BAT(, 32089) +HANDLE_BAT(, 32090) +HANDLE_BAT(, 32091) +HANDLE_BAT(, 32092) +HANDLE_BAT(, 32093) +HANDLE_BAT(, 32094) +HANDLE_BAT(, 32095) +HANDLE_BAT(, 32096) +HANDLE_BAT(, 32097) +HANDLE_BAT(, 32098) +HANDLE_BAT(, 32099) +HANDLE_BAT(, 32100) +HANDLE_BAT(, 32101) +HANDLE_BAT(, 32102) +HANDLE_BAT(, 32103) +HANDLE_BAT(, 32104) +HANDLE_BAT(, 32105) +HANDLE_BAT(, 32106) +HANDLE_BAT(, 32107) +HANDLE_BAT(, 32108) +HANDLE_BAT(, 32109) +HANDLE_BAT(, 32110) +HANDLE_BAT(, 32111) +HANDLE_BAT(, 32112) +HANDLE_BAT(, 32113) +HANDLE_BAT(, 32114) +HANDLE_BAT(, 32115) +HANDLE_BAT(, 32116) +HANDLE_BAT(, 32117) +HANDLE_BAT(, 32118) +HANDLE_BAT(, 32119) +HANDLE_BAT(, 32120) +HANDLE_BAT(, 32121) +HANDLE_BAT(, 32122) +HANDLE_BAT(, 32123) +HANDLE_BAT(, 32124) +HANDLE_BAT(, 32125) +HANDLE_BAT(, 32126) +HANDLE_BAT(, 32127) +HANDLE_BAT(, 32128) +HANDLE_BAT(, 32129) +HANDLE_BAT(, 32130) +HANDLE_BAT(, 32131) +HANDLE_BAT(, 32132) +HANDLE_BAT(, 32133) +HANDLE_BAT(, 32134) +HANDLE_BAT(, 32135) +HANDLE_BAT(, 32136) +HANDLE_BAT(, 32137) +HANDLE_BAT(, 32138) +HANDLE_BAT(, 32139) +HANDLE_BAT(, 32140) +HANDLE_BAT(, 32141) +HANDLE_BAT(, 32142) +HANDLE_BAT(, 32143) +HANDLE_BAT(, 32144) +HANDLE_BAT(, 32145) +HANDLE_BAT(, 32146) +HANDLE_BAT(, 32147) +HANDLE_BAT(, 32148) +HANDLE_BAT(, 32149) +HANDLE_BAT(, 32150) +HANDLE_BAT(, 32151) +HANDLE_BAT(, 32152) +HANDLE_BAT(, 32153) +HANDLE_BAT(, 32154) +HANDLE_BAT(, 32155) +HANDLE_BAT(, 32156) +HANDLE_BAT(, 32157) +HANDLE_BAT(, 32158) +HANDLE_BAT(, 32159) +HANDLE_BAT(, 32160) +HANDLE_BAT(, 32161) +HANDLE_BAT(, 32162) +HANDLE_BAT(, 32163) +HANDLE_BAT(, 32164) +HANDLE_BAT(, 32165) +HANDLE_BAT(, 32166) +HANDLE_BAT(, 32167) +HANDLE_BAT(, 32168) +HANDLE_BAT(, 32169) +HANDLE_BAT(, 32170) +HANDLE_BAT(, 32171) +HANDLE_BAT(, 32172) +HANDLE_BAT(, 32173) +HANDLE_BAT(, 32174) +HANDLE_BAT(, 32175) +HANDLE_BAT(, 32176) +HANDLE_BAT(, 32177) +HANDLE_BAT(, 32178) +HANDLE_BAT(, 32179) +HANDLE_BAT(, 32180) +HANDLE_BAT(, 32181) +HANDLE_BAT(, 32182) +HANDLE_BAT(, 32183) +HANDLE_BAT(, 32184) +HANDLE_BAT(, 32185) +HANDLE_BAT(, 32186) +HANDLE_BAT(, 32187) +HANDLE_BAT(, 32188) +HANDLE_BAT(, 32189) +HANDLE_BAT(, 32190) +HANDLE_BAT(, 32191) +HANDLE_BAT(, 32192) +HANDLE_BAT(, 32193) +HANDLE_BAT(, 32194) +HANDLE_BAT(, 32195) +HANDLE_BAT(, 32196) +HANDLE_BAT(, 32197) +HANDLE_BAT(, 32198) +HANDLE_BAT(, 32199) +HANDLE_BAT(, 32200) +HANDLE_BAT(, 32201) +HANDLE_BAT(, 32202) +HANDLE_BAT(, 32203) +HANDLE_BAT(, 32204) +HANDLE_BAT(, 32205) +HANDLE_BAT(, 32206) +HANDLE_BAT(, 32207) +HANDLE_BAT(, 32208) +HANDLE_BAT(, 32209) +HANDLE_BAT(, 32210) +HANDLE_BAT(, 32211) +HANDLE_BAT(, 32212) +HANDLE_BAT(, 32213) +HANDLE_BAT(, 32214) +HANDLE_BAT(, 32215) +HANDLE_BAT(, 32216) +HANDLE_BAT(, 32217) +HANDLE_BAT(, 32218) +HANDLE_BAT(, 32219) +HANDLE_BAT(, 32220) +HANDLE_BAT(, 32221) +HANDLE_BAT(, 32222) +HANDLE_BAT(, 32223) +HANDLE_BAT(, 32224) +HANDLE_BAT(, 32225) +HANDLE_BAT(, 32226) +HANDLE_BAT(, 32227) +HANDLE_BAT(, 32228) +HANDLE_BAT(, 32229) +HANDLE_BAT(, 32230) +HANDLE_BAT(, 32231) +HANDLE_BAT(, 32232) +HANDLE_BAT(, 32233) +HANDLE_BAT(, 32234) +HANDLE_BAT(, 32235) +HANDLE_BAT(, 32236) +HANDLE_BAT(, 32237) +HANDLE_BAT(, 32238) +HANDLE_BAT(, 32239) +HANDLE_BAT(, 32240) +HANDLE_BAT(, 32241) +HANDLE_BAT(, 32242) +HANDLE_BAT(, 32243) +HANDLE_BAT(, 32244) +HANDLE_BAT(, 32245) +HANDLE_BAT(, 32246) +HANDLE_BAT(, 32247) +HANDLE_BAT(, 32248) +HANDLE_BAT(, 32249) +HANDLE_BAT(, 32250) +HANDLE_BAT(, 32251) +HANDLE_BAT(, 32252) +HANDLE_BAT(, 32253) +HANDLE_BAT(, 32254) +HANDLE_BAT(, 32255) +HANDLE_BAT(, 32256) +HANDLE_BAT(, 32257) +HANDLE_BAT(, 32258) +HANDLE_BAT(, 32259) +HANDLE_BAT(, 32260) +HANDLE_BAT(, 32261) +HANDLE_BAT(, 32262) +HANDLE_BAT(, 32263) +HANDLE_BAT(, 32264) +HANDLE_BAT(, 32265) +HANDLE_BAT(, 32266) +HANDLE_BAT(, 32267) +HANDLE_BAT(, 32268) +HANDLE_BAT(, 32269) +HANDLE_BAT(, 32270) +HANDLE_BAT(, 32271) +HANDLE_BAT(, 32272) +HANDLE_BAT(, 32273) +HANDLE_BAT(, 32274) +HANDLE_BAT(, 32275) +HANDLE_BAT(, 32276) +HANDLE_BAT(, 32277) +HANDLE_BAT(, 32278) +HANDLE_BAT(, 32279) +HANDLE_BAT(, 32280) +HANDLE_BAT(, 32281) +HANDLE_BAT(, 32282) +HANDLE_BAT(, 32283) +HANDLE_BAT(, 32284) +HANDLE_BAT(, 32285) +HANDLE_BAT(, 32286) +HANDLE_BAT(, 32287) +HANDLE_BAT(, 32288) +HANDLE_BAT(, 32289) +HANDLE_BAT(, 32290) +HANDLE_BAT(, 32291) +HANDLE_BAT(, 32292) +HANDLE_BAT(, 32293) +HANDLE_BAT(, 32294) +HANDLE_BAT(, 32295) +HANDLE_BAT(, 32296) +HANDLE_BAT(, 32297) +HANDLE_BAT(, 32298) +HANDLE_BAT(, 32299) +HANDLE_BAT(, 32300) +HANDLE_BAT(, 32301) +HANDLE_BAT(, 32302) +HANDLE_BAT(, 32303) +HANDLE_BAT(, 32304) +HANDLE_BAT(, 32305) +HANDLE_BAT(, 32306) +HANDLE_BAT(, 32307) +HANDLE_BAT(, 32308) +HANDLE_BAT(, 32309) +HANDLE_BAT(, 32310) +HANDLE_BAT(, 32311) +HANDLE_BAT(, 32312) +HANDLE_BAT(, 32313) +HANDLE_BAT(, 32314) +HANDLE_BAT(, 32315) +HANDLE_BAT(, 32316) +HANDLE_BAT(, 32317) +HANDLE_BAT(, 32318) +HANDLE_BAT(, 32319) +HANDLE_BAT(, 32320) +HANDLE_BAT(, 32321) +HANDLE_BAT(, 32322) +HANDLE_BAT(, 32323) +HANDLE_BAT(, 32324) +HANDLE_BAT(, 32325) +HANDLE_BAT(, 32326) +HANDLE_BAT(, 32327) +HANDLE_BAT(, 32328) +HANDLE_BAT(, 32329) +HANDLE_BAT(, 32330) +HANDLE_BAT(, 32331) +HANDLE_BAT(, 32332) +HANDLE_BAT(, 32333) +HANDLE_BAT(, 32334) +HANDLE_BAT(, 32335) +HANDLE_BAT(, 32336) +HANDLE_BAT(, 32337) +HANDLE_BAT(, 32338) +HANDLE_BAT(, 32339) +HANDLE_BAT(, 32340) +HANDLE_BAT(, 32341) +HANDLE_BAT(, 32342) +HANDLE_BAT(, 32343) +HANDLE_BAT(, 32344) +HANDLE_BAT(, 32345) +HANDLE_BAT(, 32346) +HANDLE_BAT(, 32347) +HANDLE_BAT(, 32348) +HANDLE_BAT(, 32349) +HANDLE_BAT(, 32350) +HANDLE_BAT(, 32351) +HANDLE_BAT(, 32352) +HANDLE_BAT(, 32353) +HANDLE_BAT(, 32354) +HANDLE_BAT(, 32355) +HANDLE_BAT(, 32356) +HANDLE_BAT(, 32357) +HANDLE_BAT(, 32358) +HANDLE_BAT(, 32359) +HANDLE_BAT(, 32360) +HANDLE_BAT(, 32361) +HANDLE_BAT(, 32362) +HANDLE_BAT(, 32363) +HANDLE_BAT(, 32364) +HANDLE_BAT(, 32365) +HANDLE_BAT(, 32366) +HANDLE_BAT(, 32367) +HANDLE_BAT(, 32368) +HANDLE_BAT(, 32369) +HANDLE_BAT(, 32370) +HANDLE_BAT(, 32371) +HANDLE_BAT(, 32372) +HANDLE_BAT(, 32373) +HANDLE_BAT(, 32374) +HANDLE_BAT(, 32375) +HANDLE_BAT(, 32376) +HANDLE_BAT(, 32377) +HANDLE_BAT(, 32378) +HANDLE_BAT(, 32379) +HANDLE_BAT(, 32380) +HANDLE_BAT(, 32381) +HANDLE_BAT(, 32382) +HANDLE_BAT(, 32383) +HANDLE_BAT(, 32384) +HANDLE_BAT(, 32385) +HANDLE_BAT(, 32386) +HANDLE_BAT(, 32387) +HANDLE_BAT(, 32388) +HANDLE_BAT(, 32389) +HANDLE_BAT(, 32390) +HANDLE_BAT(, 32391) +HANDLE_BAT(, 32392) +HANDLE_BAT(, 32393) +HANDLE_BAT(, 32394) +HANDLE_BAT(, 32395) +HANDLE_BAT(, 32396) +HANDLE_BAT(, 32397) +HANDLE_BAT(, 32398) +HANDLE_BAT(, 32399) +HANDLE_BAT(, 32400) +HANDLE_BAT(, 32401) +HANDLE_BAT(, 32402) +HANDLE_BAT(, 32403) +HANDLE_BAT(, 32404) +HANDLE_BAT(, 32405) +HANDLE_BAT(, 32406) +HANDLE_BAT(, 32407) +HANDLE_BAT(, 32408) +HANDLE_BAT(, 32409) +HANDLE_BAT(, 32410) +HANDLE_BAT(, 32411) +HANDLE_BAT(, 32412) +HANDLE_BAT(, 32413) +HANDLE_BAT(, 32414) +HANDLE_BAT(, 32415) +HANDLE_BAT(, 32416) +HANDLE_BAT(, 32417) +HANDLE_BAT(, 32418) +HANDLE_BAT(, 32419) +HANDLE_BAT(, 32420) +HANDLE_BAT(, 32421) +HANDLE_BAT(, 32422) +HANDLE_BAT(, 32423) +HANDLE_BAT(, 32424) +HANDLE_BAT(, 32425) +HANDLE_BAT(, 32426) +HANDLE_BAT(, 32427) +HANDLE_BAT(, 32428) +HANDLE_BAT(, 32429) +HANDLE_BAT(, 32430) +HANDLE_BAT(, 32431) +HANDLE_BAT(, 32432) +HANDLE_BAT(, 32433) +HANDLE_BAT(, 32434) +HANDLE_BAT(, 32435) +HANDLE_BAT(, 32436) +HANDLE_BAT(, 32437) +HANDLE_BAT(, 32438) +HANDLE_BAT(, 32439) +HANDLE_BAT(, 32440) +HANDLE_BAT(, 32441) +HANDLE_BAT(, 32442) +HANDLE_BAT(, 32443) +HANDLE_BAT(, 32444) +HANDLE_BAT(, 32445) +HANDLE_BAT(, 32446) +HANDLE_BAT(, 32447) +HANDLE_BAT(, 32448) +HANDLE_BAT(, 32449) +HANDLE_BAT(, 32450) +HANDLE_BAT(, 32451) +HANDLE_BAT(, 32452) +HANDLE_BAT(, 32453) +HANDLE_BAT(, 32454) +HANDLE_BAT(, 32455) +HANDLE_BAT(, 32456) +HANDLE_BAT(, 32457) +HANDLE_BAT(, 32458) +HANDLE_BAT(, 32459) +HANDLE_BAT(, 32460) +HANDLE_BAT(, 32461) +HANDLE_BAT(, 32462) +HANDLE_BAT(, 32463) +HANDLE_BAT(, 32464) +HANDLE_BAT(, 32465) +HANDLE_BAT(, 32466) +HANDLE_BAT(, 32467) +HANDLE_BAT(, 32468) +HANDLE_BAT(, 32469) +HANDLE_BAT(, 32470) +HANDLE_BAT(, 32471) +HANDLE_BAT(, 32472) +HANDLE_BAT(, 32473) +HANDLE_BAT(, 32474) +HANDLE_BAT(, 32475) +HANDLE_BAT(, 32476) +HANDLE_BAT(, 32477) +HANDLE_BAT(, 32478) +HANDLE_BAT(, 32479) +HANDLE_BAT(, 32480) +HANDLE_BAT(, 32481) +HANDLE_BAT(, 32482) +HANDLE_BAT(, 32483) +HANDLE_BAT(, 32484) +HANDLE_BAT(, 32485) +HANDLE_BAT(, 32486) +HANDLE_BAT(, 32487) +HANDLE_BAT(, 32488) +HANDLE_BAT(, 32489) +HANDLE_BAT(, 32490) +HANDLE_BAT(, 32491) +HANDLE_BAT(, 32492) +HANDLE_BAT(, 32493) +HANDLE_BAT(, 32494) +HANDLE_BAT(, 32495) +HANDLE_BAT(, 32496) +HANDLE_BAT(, 32497) +HANDLE_BAT(, 32498) +HANDLE_BAT(, 32499) +HANDLE_BAT(, 32500) +HANDLE_BAT(, 32501) +HANDLE_BAT(, 32502) +HANDLE_BAT(, 32503) +HANDLE_BAT(, 32504) +HANDLE_BAT(, 32505) +HANDLE_BAT(, 32506) +HANDLE_BAT(, 32507) +HANDLE_BAT(, 32508) +HANDLE_BAT(, 32509) +HANDLE_BAT(, 32510) +HANDLE_BAT(, 32511) +HANDLE_BAT(, 32512) +HANDLE_BAT(, 32513) +HANDLE_BAT(, 32514) +HANDLE_BAT(, 32515) +HANDLE_BAT(, 32516) +HANDLE_BAT(, 32517) +HANDLE_BAT(, 32518) +HANDLE_BAT(, 32519) +HANDLE_BAT(, 32520) +HANDLE_BAT(, 32521) +HANDLE_BAT(, 32522) +HANDLE_BAT(, 32523) +HANDLE_BAT(, 32524) +HANDLE_BAT(, 32525) +HANDLE_BAT(, 32526) +HANDLE_BAT(, 32527) +HANDLE_BAT(, 32528) +HANDLE_BAT(, 32529) +HANDLE_BAT(, 32530) +HANDLE_BAT(, 32531) +HANDLE_BAT(, 32532) +HANDLE_BAT(, 32533) +HANDLE_BAT(, 32534) +HANDLE_BAT(, 32535) +HANDLE_BAT(, 32536) +HANDLE_BAT(, 32537) +HANDLE_BAT(, 32538) +HANDLE_BAT(, 32539) +HANDLE_BAT(, 32540) +HANDLE_BAT(, 32541) +HANDLE_BAT(, 32542) +HANDLE_BAT(, 32543) +HANDLE_BAT(, 32544) +HANDLE_BAT(, 32545) +HANDLE_BAT(, 32546) +HANDLE_BAT(, 32547) +HANDLE_BAT(, 32548) +HANDLE_BAT(, 32549) +HANDLE_BAT(, 32550) +HANDLE_BAT(, 32551) +HANDLE_BAT(, 32552) +HANDLE_BAT(, 32553) +HANDLE_BAT(, 32554) +HANDLE_BAT(, 32555) +HANDLE_BAT(, 32556) +HANDLE_BAT(, 32557) +HANDLE_BAT(, 32558) +HANDLE_BAT(, 32559) +HANDLE_BAT(, 32560) +HANDLE_BAT(, 32561) +HANDLE_BAT(, 32562) +HANDLE_BAT(, 32563) +HANDLE_BAT(, 32564) +HANDLE_BAT(, 32565) +HANDLE_BAT(, 32566) +HANDLE_BAT(, 32567) +HANDLE_BAT(, 32568) +HANDLE_BAT(, 32569) +HANDLE_BAT(, 32570) +HANDLE_BAT(, 32571) +HANDLE_BAT(, 32572) +HANDLE_BAT(, 32573) +HANDLE_BAT(, 32574) +HANDLE_BAT(, 32575) +HANDLE_BAT(, 32576) +HANDLE_BAT(, 32577) +HANDLE_BAT(, 32578) +HANDLE_BAT(, 32579) +HANDLE_BAT(, 32580) +HANDLE_BAT(, 32581) +HANDLE_BAT(, 32582) +HANDLE_BAT(, 32583) +HANDLE_BAT(, 32584) +HANDLE_BAT(, 32585) +HANDLE_BAT(, 32586) +HANDLE_BAT(, 32587) +HANDLE_BAT(, 32588) +HANDLE_BAT(, 32589) +HANDLE_BAT(, 32590) +HANDLE_BAT(, 32591) +HANDLE_BAT(, 32592) +HANDLE_BAT(, 32593) +HANDLE_BAT(, 32594) +HANDLE_BAT(, 32595) +HANDLE_BAT(, 32596) +HANDLE_BAT(, 32597) +HANDLE_BAT(, 32598) +HANDLE_BAT(, 32599) +HANDLE_BAT(, 32600) +HANDLE_BAT(, 32601) +HANDLE_BAT(, 32602) +HANDLE_BAT(, 32603) +HANDLE_BAT(, 32604) +HANDLE_BAT(, 32605) +HANDLE_BAT(, 32606) +HANDLE_BAT(, 32607) +HANDLE_BAT(, 32608) +HANDLE_BAT(, 32609) +HANDLE_BAT(, 32610) +HANDLE_BAT(, 32611) +HANDLE_BAT(, 32612) +HANDLE_BAT(, 32613) +HANDLE_BAT(, 32614) +HANDLE_BAT(, 32615) +HANDLE_BAT(, 32616) +HANDLE_BAT(, 32617) +HANDLE_BAT(, 32618) +HANDLE_BAT(, 32619) +HANDLE_BAT(, 32620) +HANDLE_BAT(, 32621) +HANDLE_BAT(, 32622) +HANDLE_BAT(, 32623) +HANDLE_BAT(, 32624) +HANDLE_BAT(, 32625) +HANDLE_BAT(, 32626) +HANDLE_BAT(, 32627) +HANDLE_BAT(, 32628) +HANDLE_BAT(, 32629) +HANDLE_BAT(, 32630) +HANDLE_BAT(, 32631) +HANDLE_BAT(, 32632) +HANDLE_BAT(, 32633) +HANDLE_BAT(, 32634) +HANDLE_BAT(, 32635) +HANDLE_BAT(, 32636) +HANDLE_BAT(, 32637) +HANDLE_BAT(, 32638) +HANDLE_BAT(, 32639) +HANDLE_BAT(, 32640) +HANDLE_BAT(, 32641) +HANDLE_BAT(, 32642) +HANDLE_BAT(, 32643) +HANDLE_BAT(, 32644) +HANDLE_BAT(, 32645) +HANDLE_BAT(, 32646) +HANDLE_BAT(, 32647) +HANDLE_BAT(, 32648) +HANDLE_BAT(, 32649) +HANDLE_BAT(, 32650) +HANDLE_BAT(, 32651) +HANDLE_BAT(, 32652) +HANDLE_BAT(, 32653) +HANDLE_BAT(, 32654) +HANDLE_BAT(, 32655) +HANDLE_BAT(, 32656) +HANDLE_BAT(, 32657) +HANDLE_BAT(, 32658) +HANDLE_BAT(, 32659) +HANDLE_BAT(, 32660) +HANDLE_BAT(, 32661) +HANDLE_BAT(, 32662) +HANDLE_BAT(, 32663) +HANDLE_BAT(, 32664) +HANDLE_BAT(, 32665) +HANDLE_BAT(, 32666) +HANDLE_BAT(, 32667) +HANDLE_BAT(, 32668) +HANDLE_BAT(, 32669) +HANDLE_BAT(, 32670) +HANDLE_BAT(, 32671) +HANDLE_BAT(, 32672) +HANDLE_BAT(, 32673) +HANDLE_BAT(, 32674) +HANDLE_BAT(, 32675) +HANDLE_BAT(, 32676) +HANDLE_BAT(, 32677) +HANDLE_BAT(, 32678) +HANDLE_BAT(, 32679) +HANDLE_BAT(, 32680) +HANDLE_BAT(, 32681) +HANDLE_BAT(, 32682) +HANDLE_BAT(, 32683) +HANDLE_BAT(, 32684) +HANDLE_BAT(, 32685) +HANDLE_BAT(, 32686) +HANDLE_BAT(, 32687) +HANDLE_BAT(, 32688) +HANDLE_BAT(, 32689) +HANDLE_BAT(, 32690) +HANDLE_BAT(, 32691) +HANDLE_BAT(, 32692) +HANDLE_BAT(, 32693) +HANDLE_BAT(, 32694) +HANDLE_BAT(, 32695) +HANDLE_BAT(, 32696) +HANDLE_BAT(, 32697) +HANDLE_BAT(, 32698) +HANDLE_BAT(, 32699) +HANDLE_BAT(, 32700) +HANDLE_BAT(, 32701) +HANDLE_BAT(, 32702) +HANDLE_BAT(, 32703) +HANDLE_BAT(, 32704) +HANDLE_BAT(, 32705) +HANDLE_BAT(, 32706) +HANDLE_BAT(, 32707) +HANDLE_BAT(, 32708) +HANDLE_BAT(, 32709) +HANDLE_BAT(, 32710) +HANDLE_BAT(, 32711) +HANDLE_BAT(, 32712) +HANDLE_BAT(, 32713) +HANDLE_BAT(, 32714) +HANDLE_BAT(, 32715) +HANDLE_BAT(, 32716) +HANDLE_BAT(, 32717) +HANDLE_BAT(, 32718) +HANDLE_BAT(, 32719) +HANDLE_BAT(, 32720) +HANDLE_BAT(, 32721) +HANDLE_BAT(, 32722) +HANDLE_BAT(, 32723) +HANDLE_BAT(, 32724) +HANDLE_BAT(, 32725) +HANDLE_BAT(, 32726) +HANDLE_BAT(, 32727) +HANDLE_BAT(, 32728) +HANDLE_BAT(, 32729) +HANDLE_BAT(, 32730) +HANDLE_BAT(, 32731) +HANDLE_BAT(, 32732) +HANDLE_BAT(, 32733) +HANDLE_BAT(, 32734) +HANDLE_BAT(, 32735) +HANDLE_BAT(, 32736) +HANDLE_BAT(, 32737) +HANDLE_BAT(, 32738) +HANDLE_BAT(, 32739) +HANDLE_BAT(, 32740) +HANDLE_BAT(, 32741) +HANDLE_BAT(, 32742) +HANDLE_BAT(, 32743) +HANDLE_BAT(, 32744) +HANDLE_BAT(, 32745) +HANDLE_BAT(, 32746) +HANDLE_BAT(, 32747) +HANDLE_BAT(, 32748) +HANDLE_BAT(, 32749) +HANDLE_BAT(, 32750) +HANDLE_BAT(, 32751) +HANDLE_BAT(, 32752) +HANDLE_BAT(, 32753) +HANDLE_BAT(, 32754) +HANDLE_BAT(, 32755) +HANDLE_BAT(, 32756) +HANDLE_BAT(, 32757) +HANDLE_BAT(, 32758) +HANDLE_BAT(, 32759) +HANDLE_BAT(, 32760) +HANDLE_BAT(, 32761) +HANDLE_BAT(, 32762) +HANDLE_BAT(, 32763) +HANDLE_BAT(, 32764) +HANDLE_BAT(, 32765) +HANDLE_BAT(, 32766) +HANDLE_BAT(, 32767) +HANDLE_BAT(, 32768) +#else +HANDLE_BAT(APINT_TYPE_PREFIX, 31745) +HANDLE_BAT(APINT_TYPE_PREFIX, 31746) +HANDLE_BAT(APINT_TYPE_PREFIX, 31747) +HANDLE_BAT(APINT_TYPE_PREFIX, 31748) +HANDLE_BAT(APINT_TYPE_PREFIX, 31749) +HANDLE_BAT(APINT_TYPE_PREFIX, 31750) +HANDLE_BAT(APINT_TYPE_PREFIX, 31751) +HANDLE_BAT(APINT_TYPE_PREFIX, 31752) +HANDLE_BAT(APINT_TYPE_PREFIX, 31753) +HANDLE_BAT(APINT_TYPE_PREFIX, 31754) +HANDLE_BAT(APINT_TYPE_PREFIX, 31755) +HANDLE_BAT(APINT_TYPE_PREFIX, 31756) +HANDLE_BAT(APINT_TYPE_PREFIX, 31757) +HANDLE_BAT(APINT_TYPE_PREFIX, 31758) +HANDLE_BAT(APINT_TYPE_PREFIX, 31759) +HANDLE_BAT(APINT_TYPE_PREFIX, 31760) +HANDLE_BAT(APINT_TYPE_PREFIX, 31761) +HANDLE_BAT(APINT_TYPE_PREFIX, 31762) +HANDLE_BAT(APINT_TYPE_PREFIX, 31763) +HANDLE_BAT(APINT_TYPE_PREFIX, 31764) +HANDLE_BAT(APINT_TYPE_PREFIX, 31765) +HANDLE_BAT(APINT_TYPE_PREFIX, 31766) +HANDLE_BAT(APINT_TYPE_PREFIX, 31767) +HANDLE_BAT(APINT_TYPE_PREFIX, 31768) +HANDLE_BAT(APINT_TYPE_PREFIX, 31769) +HANDLE_BAT(APINT_TYPE_PREFIX, 31770) +HANDLE_BAT(APINT_TYPE_PREFIX, 31771) +HANDLE_BAT(APINT_TYPE_PREFIX, 31772) +HANDLE_BAT(APINT_TYPE_PREFIX, 31773) +HANDLE_BAT(APINT_TYPE_PREFIX, 31774) +HANDLE_BAT(APINT_TYPE_PREFIX, 31775) +HANDLE_BAT(APINT_TYPE_PREFIX, 31776) +HANDLE_BAT(APINT_TYPE_PREFIX, 31777) +HANDLE_BAT(APINT_TYPE_PREFIX, 31778) +HANDLE_BAT(APINT_TYPE_PREFIX, 31779) +HANDLE_BAT(APINT_TYPE_PREFIX, 31780) +HANDLE_BAT(APINT_TYPE_PREFIX, 31781) +HANDLE_BAT(APINT_TYPE_PREFIX, 31782) +HANDLE_BAT(APINT_TYPE_PREFIX, 31783) +HANDLE_BAT(APINT_TYPE_PREFIX, 31784) +HANDLE_BAT(APINT_TYPE_PREFIX, 31785) +HANDLE_BAT(APINT_TYPE_PREFIX, 31786) +HANDLE_BAT(APINT_TYPE_PREFIX, 31787) +HANDLE_BAT(APINT_TYPE_PREFIX, 31788) +HANDLE_BAT(APINT_TYPE_PREFIX, 31789) +HANDLE_BAT(APINT_TYPE_PREFIX, 31790) +HANDLE_BAT(APINT_TYPE_PREFIX, 31791) +HANDLE_BAT(APINT_TYPE_PREFIX, 31792) +HANDLE_BAT(APINT_TYPE_PREFIX, 31793) +HANDLE_BAT(APINT_TYPE_PREFIX, 31794) +HANDLE_BAT(APINT_TYPE_PREFIX, 31795) +HANDLE_BAT(APINT_TYPE_PREFIX, 31796) +HANDLE_BAT(APINT_TYPE_PREFIX, 31797) +HANDLE_BAT(APINT_TYPE_PREFIX, 31798) +HANDLE_BAT(APINT_TYPE_PREFIX, 31799) +HANDLE_BAT(APINT_TYPE_PREFIX, 31800) +HANDLE_BAT(APINT_TYPE_PREFIX, 31801) +HANDLE_BAT(APINT_TYPE_PREFIX, 31802) +HANDLE_BAT(APINT_TYPE_PREFIX, 31803) +HANDLE_BAT(APINT_TYPE_PREFIX, 31804) +HANDLE_BAT(APINT_TYPE_PREFIX, 31805) +HANDLE_BAT(APINT_TYPE_PREFIX, 31806) +HANDLE_BAT(APINT_TYPE_PREFIX, 31807) +HANDLE_BAT(APINT_TYPE_PREFIX, 31808) +HANDLE_BAT(APINT_TYPE_PREFIX, 31809) +HANDLE_BAT(APINT_TYPE_PREFIX, 31810) +HANDLE_BAT(APINT_TYPE_PREFIX, 31811) +HANDLE_BAT(APINT_TYPE_PREFIX, 31812) +HANDLE_BAT(APINT_TYPE_PREFIX, 31813) +HANDLE_BAT(APINT_TYPE_PREFIX, 31814) +HANDLE_BAT(APINT_TYPE_PREFIX, 31815) +HANDLE_BAT(APINT_TYPE_PREFIX, 31816) +HANDLE_BAT(APINT_TYPE_PREFIX, 31817) +HANDLE_BAT(APINT_TYPE_PREFIX, 31818) +HANDLE_BAT(APINT_TYPE_PREFIX, 31819) +HANDLE_BAT(APINT_TYPE_PREFIX, 31820) +HANDLE_BAT(APINT_TYPE_PREFIX, 31821) +HANDLE_BAT(APINT_TYPE_PREFIX, 31822) +HANDLE_BAT(APINT_TYPE_PREFIX, 31823) +HANDLE_BAT(APINT_TYPE_PREFIX, 31824) +HANDLE_BAT(APINT_TYPE_PREFIX, 31825) +HANDLE_BAT(APINT_TYPE_PREFIX, 31826) +HANDLE_BAT(APINT_TYPE_PREFIX, 31827) +HANDLE_BAT(APINT_TYPE_PREFIX, 31828) +HANDLE_BAT(APINT_TYPE_PREFIX, 31829) +HANDLE_BAT(APINT_TYPE_PREFIX, 31830) +HANDLE_BAT(APINT_TYPE_PREFIX, 31831) +HANDLE_BAT(APINT_TYPE_PREFIX, 31832) +HANDLE_BAT(APINT_TYPE_PREFIX, 31833) +HANDLE_BAT(APINT_TYPE_PREFIX, 31834) +HANDLE_BAT(APINT_TYPE_PREFIX, 31835) +HANDLE_BAT(APINT_TYPE_PREFIX, 31836) +HANDLE_BAT(APINT_TYPE_PREFIX, 31837) +HANDLE_BAT(APINT_TYPE_PREFIX, 31838) +HANDLE_BAT(APINT_TYPE_PREFIX, 31839) +HANDLE_BAT(APINT_TYPE_PREFIX, 31840) +HANDLE_BAT(APINT_TYPE_PREFIX, 31841) +HANDLE_BAT(APINT_TYPE_PREFIX, 31842) +HANDLE_BAT(APINT_TYPE_PREFIX, 31843) +HANDLE_BAT(APINT_TYPE_PREFIX, 31844) +HANDLE_BAT(APINT_TYPE_PREFIX, 31845) +HANDLE_BAT(APINT_TYPE_PREFIX, 31846) +HANDLE_BAT(APINT_TYPE_PREFIX, 31847) +HANDLE_BAT(APINT_TYPE_PREFIX, 31848) +HANDLE_BAT(APINT_TYPE_PREFIX, 31849) +HANDLE_BAT(APINT_TYPE_PREFIX, 31850) +HANDLE_BAT(APINT_TYPE_PREFIX, 31851) +HANDLE_BAT(APINT_TYPE_PREFIX, 31852) +HANDLE_BAT(APINT_TYPE_PREFIX, 31853) +HANDLE_BAT(APINT_TYPE_PREFIX, 31854) +HANDLE_BAT(APINT_TYPE_PREFIX, 31855) +HANDLE_BAT(APINT_TYPE_PREFIX, 31856) +HANDLE_BAT(APINT_TYPE_PREFIX, 31857) +HANDLE_BAT(APINT_TYPE_PREFIX, 31858) +HANDLE_BAT(APINT_TYPE_PREFIX, 31859) +HANDLE_BAT(APINT_TYPE_PREFIX, 31860) +HANDLE_BAT(APINT_TYPE_PREFIX, 31861) +HANDLE_BAT(APINT_TYPE_PREFIX, 31862) +HANDLE_BAT(APINT_TYPE_PREFIX, 31863) +HANDLE_BAT(APINT_TYPE_PREFIX, 31864) +HANDLE_BAT(APINT_TYPE_PREFIX, 31865) +HANDLE_BAT(APINT_TYPE_PREFIX, 31866) +HANDLE_BAT(APINT_TYPE_PREFIX, 31867) +HANDLE_BAT(APINT_TYPE_PREFIX, 31868) +HANDLE_BAT(APINT_TYPE_PREFIX, 31869) +HANDLE_BAT(APINT_TYPE_PREFIX, 31870) +HANDLE_BAT(APINT_TYPE_PREFIX, 31871) +HANDLE_BAT(APINT_TYPE_PREFIX, 31872) +HANDLE_BAT(APINT_TYPE_PREFIX, 31873) +HANDLE_BAT(APINT_TYPE_PREFIX, 31874) +HANDLE_BAT(APINT_TYPE_PREFIX, 31875) +HANDLE_BAT(APINT_TYPE_PREFIX, 31876) +HANDLE_BAT(APINT_TYPE_PREFIX, 31877) +HANDLE_BAT(APINT_TYPE_PREFIX, 31878) +HANDLE_BAT(APINT_TYPE_PREFIX, 31879) +HANDLE_BAT(APINT_TYPE_PREFIX, 31880) +HANDLE_BAT(APINT_TYPE_PREFIX, 31881) +HANDLE_BAT(APINT_TYPE_PREFIX, 31882) +HANDLE_BAT(APINT_TYPE_PREFIX, 31883) +HANDLE_BAT(APINT_TYPE_PREFIX, 31884) +HANDLE_BAT(APINT_TYPE_PREFIX, 31885) +HANDLE_BAT(APINT_TYPE_PREFIX, 31886) +HANDLE_BAT(APINT_TYPE_PREFIX, 31887) +HANDLE_BAT(APINT_TYPE_PREFIX, 31888) +HANDLE_BAT(APINT_TYPE_PREFIX, 31889) +HANDLE_BAT(APINT_TYPE_PREFIX, 31890) +HANDLE_BAT(APINT_TYPE_PREFIX, 31891) +HANDLE_BAT(APINT_TYPE_PREFIX, 31892) +HANDLE_BAT(APINT_TYPE_PREFIX, 31893) +HANDLE_BAT(APINT_TYPE_PREFIX, 31894) +HANDLE_BAT(APINT_TYPE_PREFIX, 31895) +HANDLE_BAT(APINT_TYPE_PREFIX, 31896) +HANDLE_BAT(APINT_TYPE_PREFIX, 31897) +HANDLE_BAT(APINT_TYPE_PREFIX, 31898) +HANDLE_BAT(APINT_TYPE_PREFIX, 31899) +HANDLE_BAT(APINT_TYPE_PREFIX, 31900) +HANDLE_BAT(APINT_TYPE_PREFIX, 31901) +HANDLE_BAT(APINT_TYPE_PREFIX, 31902) +HANDLE_BAT(APINT_TYPE_PREFIX, 31903) +HANDLE_BAT(APINT_TYPE_PREFIX, 31904) +HANDLE_BAT(APINT_TYPE_PREFIX, 31905) +HANDLE_BAT(APINT_TYPE_PREFIX, 31906) +HANDLE_BAT(APINT_TYPE_PREFIX, 31907) +HANDLE_BAT(APINT_TYPE_PREFIX, 31908) +HANDLE_BAT(APINT_TYPE_PREFIX, 31909) +HANDLE_BAT(APINT_TYPE_PREFIX, 31910) +HANDLE_BAT(APINT_TYPE_PREFIX, 31911) +HANDLE_BAT(APINT_TYPE_PREFIX, 31912) +HANDLE_BAT(APINT_TYPE_PREFIX, 31913) +HANDLE_BAT(APINT_TYPE_PREFIX, 31914) +HANDLE_BAT(APINT_TYPE_PREFIX, 31915) +HANDLE_BAT(APINT_TYPE_PREFIX, 31916) +HANDLE_BAT(APINT_TYPE_PREFIX, 31917) +HANDLE_BAT(APINT_TYPE_PREFIX, 31918) +HANDLE_BAT(APINT_TYPE_PREFIX, 31919) +HANDLE_BAT(APINT_TYPE_PREFIX, 31920) +HANDLE_BAT(APINT_TYPE_PREFIX, 31921) +HANDLE_BAT(APINT_TYPE_PREFIX, 31922) +HANDLE_BAT(APINT_TYPE_PREFIX, 31923) +HANDLE_BAT(APINT_TYPE_PREFIX, 31924) +HANDLE_BAT(APINT_TYPE_PREFIX, 31925) +HANDLE_BAT(APINT_TYPE_PREFIX, 31926) +HANDLE_BAT(APINT_TYPE_PREFIX, 31927) +HANDLE_BAT(APINT_TYPE_PREFIX, 31928) +HANDLE_BAT(APINT_TYPE_PREFIX, 31929) +HANDLE_BAT(APINT_TYPE_PREFIX, 31930) +HANDLE_BAT(APINT_TYPE_PREFIX, 31931) +HANDLE_BAT(APINT_TYPE_PREFIX, 31932) +HANDLE_BAT(APINT_TYPE_PREFIX, 31933) +HANDLE_BAT(APINT_TYPE_PREFIX, 31934) +HANDLE_BAT(APINT_TYPE_PREFIX, 31935) +HANDLE_BAT(APINT_TYPE_PREFIX, 31936) +HANDLE_BAT(APINT_TYPE_PREFIX, 31937) +HANDLE_BAT(APINT_TYPE_PREFIX, 31938) +HANDLE_BAT(APINT_TYPE_PREFIX, 31939) +HANDLE_BAT(APINT_TYPE_PREFIX, 31940) +HANDLE_BAT(APINT_TYPE_PREFIX, 31941) +HANDLE_BAT(APINT_TYPE_PREFIX, 31942) +HANDLE_BAT(APINT_TYPE_PREFIX, 31943) +HANDLE_BAT(APINT_TYPE_PREFIX, 31944) +HANDLE_BAT(APINT_TYPE_PREFIX, 31945) +HANDLE_BAT(APINT_TYPE_PREFIX, 31946) +HANDLE_BAT(APINT_TYPE_PREFIX, 31947) +HANDLE_BAT(APINT_TYPE_PREFIX, 31948) +HANDLE_BAT(APINT_TYPE_PREFIX, 31949) +HANDLE_BAT(APINT_TYPE_PREFIX, 31950) +HANDLE_BAT(APINT_TYPE_PREFIX, 31951) +HANDLE_BAT(APINT_TYPE_PREFIX, 31952) +HANDLE_BAT(APINT_TYPE_PREFIX, 31953) +HANDLE_BAT(APINT_TYPE_PREFIX, 31954) +HANDLE_BAT(APINT_TYPE_PREFIX, 31955) +HANDLE_BAT(APINT_TYPE_PREFIX, 31956) +HANDLE_BAT(APINT_TYPE_PREFIX, 31957) +HANDLE_BAT(APINT_TYPE_PREFIX, 31958) +HANDLE_BAT(APINT_TYPE_PREFIX, 31959) +HANDLE_BAT(APINT_TYPE_PREFIX, 31960) +HANDLE_BAT(APINT_TYPE_PREFIX, 31961) +HANDLE_BAT(APINT_TYPE_PREFIX, 31962) +HANDLE_BAT(APINT_TYPE_PREFIX, 31963) +HANDLE_BAT(APINT_TYPE_PREFIX, 31964) +HANDLE_BAT(APINT_TYPE_PREFIX, 31965) +HANDLE_BAT(APINT_TYPE_PREFIX, 31966) +HANDLE_BAT(APINT_TYPE_PREFIX, 31967) +HANDLE_BAT(APINT_TYPE_PREFIX, 31968) +HANDLE_BAT(APINT_TYPE_PREFIX, 31969) +HANDLE_BAT(APINT_TYPE_PREFIX, 31970) +HANDLE_BAT(APINT_TYPE_PREFIX, 31971) +HANDLE_BAT(APINT_TYPE_PREFIX, 31972) +HANDLE_BAT(APINT_TYPE_PREFIX, 31973) +HANDLE_BAT(APINT_TYPE_PREFIX, 31974) +HANDLE_BAT(APINT_TYPE_PREFIX, 31975) +HANDLE_BAT(APINT_TYPE_PREFIX, 31976) +HANDLE_BAT(APINT_TYPE_PREFIX, 31977) +HANDLE_BAT(APINT_TYPE_PREFIX, 31978) +HANDLE_BAT(APINT_TYPE_PREFIX, 31979) +HANDLE_BAT(APINT_TYPE_PREFIX, 31980) +HANDLE_BAT(APINT_TYPE_PREFIX, 31981) +HANDLE_BAT(APINT_TYPE_PREFIX, 31982) +HANDLE_BAT(APINT_TYPE_PREFIX, 31983) +HANDLE_BAT(APINT_TYPE_PREFIX, 31984) +HANDLE_BAT(APINT_TYPE_PREFIX, 31985) +HANDLE_BAT(APINT_TYPE_PREFIX, 31986) +HANDLE_BAT(APINT_TYPE_PREFIX, 31987) +HANDLE_BAT(APINT_TYPE_PREFIX, 31988) +HANDLE_BAT(APINT_TYPE_PREFIX, 31989) +HANDLE_BAT(APINT_TYPE_PREFIX, 31990) +HANDLE_BAT(APINT_TYPE_PREFIX, 31991) +HANDLE_BAT(APINT_TYPE_PREFIX, 31992) +HANDLE_BAT(APINT_TYPE_PREFIX, 31993) +HANDLE_BAT(APINT_TYPE_PREFIX, 31994) +HANDLE_BAT(APINT_TYPE_PREFIX, 31995) +HANDLE_BAT(APINT_TYPE_PREFIX, 31996) +HANDLE_BAT(APINT_TYPE_PREFIX, 31997) +HANDLE_BAT(APINT_TYPE_PREFIX, 31998) +HANDLE_BAT(APINT_TYPE_PREFIX, 31999) +HANDLE_BAT(APINT_TYPE_PREFIX, 32000) +HANDLE_BAT(APINT_TYPE_PREFIX, 32001) +HANDLE_BAT(APINT_TYPE_PREFIX, 32002) +HANDLE_BAT(APINT_TYPE_PREFIX, 32003) +HANDLE_BAT(APINT_TYPE_PREFIX, 32004) +HANDLE_BAT(APINT_TYPE_PREFIX, 32005) +HANDLE_BAT(APINT_TYPE_PREFIX, 32006) +HANDLE_BAT(APINT_TYPE_PREFIX, 32007) +HANDLE_BAT(APINT_TYPE_PREFIX, 32008) +HANDLE_BAT(APINT_TYPE_PREFIX, 32009) +HANDLE_BAT(APINT_TYPE_PREFIX, 32010) +HANDLE_BAT(APINT_TYPE_PREFIX, 32011) +HANDLE_BAT(APINT_TYPE_PREFIX, 32012) +HANDLE_BAT(APINT_TYPE_PREFIX, 32013) +HANDLE_BAT(APINT_TYPE_PREFIX, 32014) +HANDLE_BAT(APINT_TYPE_PREFIX, 32015) +HANDLE_BAT(APINT_TYPE_PREFIX, 32016) +HANDLE_BAT(APINT_TYPE_PREFIX, 32017) +HANDLE_BAT(APINT_TYPE_PREFIX, 32018) +HANDLE_BAT(APINT_TYPE_PREFIX, 32019) +HANDLE_BAT(APINT_TYPE_PREFIX, 32020) +HANDLE_BAT(APINT_TYPE_PREFIX, 32021) +HANDLE_BAT(APINT_TYPE_PREFIX, 32022) +HANDLE_BAT(APINT_TYPE_PREFIX, 32023) +HANDLE_BAT(APINT_TYPE_PREFIX, 32024) +HANDLE_BAT(APINT_TYPE_PREFIX, 32025) +HANDLE_BAT(APINT_TYPE_PREFIX, 32026) +HANDLE_BAT(APINT_TYPE_PREFIX, 32027) +HANDLE_BAT(APINT_TYPE_PREFIX, 32028) +HANDLE_BAT(APINT_TYPE_PREFIX, 32029) +HANDLE_BAT(APINT_TYPE_PREFIX, 32030) +HANDLE_BAT(APINT_TYPE_PREFIX, 32031) +HANDLE_BAT(APINT_TYPE_PREFIX, 32032) +HANDLE_BAT(APINT_TYPE_PREFIX, 32033) +HANDLE_BAT(APINT_TYPE_PREFIX, 32034) +HANDLE_BAT(APINT_TYPE_PREFIX, 32035) +HANDLE_BAT(APINT_TYPE_PREFIX, 32036) +HANDLE_BAT(APINT_TYPE_PREFIX, 32037) +HANDLE_BAT(APINT_TYPE_PREFIX, 32038) +HANDLE_BAT(APINT_TYPE_PREFIX, 32039) +HANDLE_BAT(APINT_TYPE_PREFIX, 32040) +HANDLE_BAT(APINT_TYPE_PREFIX, 32041) +HANDLE_BAT(APINT_TYPE_PREFIX, 32042) +HANDLE_BAT(APINT_TYPE_PREFIX, 32043) +HANDLE_BAT(APINT_TYPE_PREFIX, 32044) +HANDLE_BAT(APINT_TYPE_PREFIX, 32045) +HANDLE_BAT(APINT_TYPE_PREFIX, 32046) +HANDLE_BAT(APINT_TYPE_PREFIX, 32047) +HANDLE_BAT(APINT_TYPE_PREFIX, 32048) +HANDLE_BAT(APINT_TYPE_PREFIX, 32049) +HANDLE_BAT(APINT_TYPE_PREFIX, 32050) +HANDLE_BAT(APINT_TYPE_PREFIX, 32051) +HANDLE_BAT(APINT_TYPE_PREFIX, 32052) +HANDLE_BAT(APINT_TYPE_PREFIX, 32053) +HANDLE_BAT(APINT_TYPE_PREFIX, 32054) +HANDLE_BAT(APINT_TYPE_PREFIX, 32055) +HANDLE_BAT(APINT_TYPE_PREFIX, 32056) +HANDLE_BAT(APINT_TYPE_PREFIX, 32057) +HANDLE_BAT(APINT_TYPE_PREFIX, 32058) +HANDLE_BAT(APINT_TYPE_PREFIX, 32059) +HANDLE_BAT(APINT_TYPE_PREFIX, 32060) +HANDLE_BAT(APINT_TYPE_PREFIX, 32061) +HANDLE_BAT(APINT_TYPE_PREFIX, 32062) +HANDLE_BAT(APINT_TYPE_PREFIX, 32063) +HANDLE_BAT(APINT_TYPE_PREFIX, 32064) +HANDLE_BAT(APINT_TYPE_PREFIX, 32065) +HANDLE_BAT(APINT_TYPE_PREFIX, 32066) +HANDLE_BAT(APINT_TYPE_PREFIX, 32067) +HANDLE_BAT(APINT_TYPE_PREFIX, 32068) +HANDLE_BAT(APINT_TYPE_PREFIX, 32069) +HANDLE_BAT(APINT_TYPE_PREFIX, 32070) +HANDLE_BAT(APINT_TYPE_PREFIX, 32071) +HANDLE_BAT(APINT_TYPE_PREFIX, 32072) +HANDLE_BAT(APINT_TYPE_PREFIX, 32073) +HANDLE_BAT(APINT_TYPE_PREFIX, 32074) +HANDLE_BAT(APINT_TYPE_PREFIX, 32075) +HANDLE_BAT(APINT_TYPE_PREFIX, 32076) +HANDLE_BAT(APINT_TYPE_PREFIX, 32077) +HANDLE_BAT(APINT_TYPE_PREFIX, 32078) +HANDLE_BAT(APINT_TYPE_PREFIX, 32079) +HANDLE_BAT(APINT_TYPE_PREFIX, 32080) +HANDLE_BAT(APINT_TYPE_PREFIX, 32081) +HANDLE_BAT(APINT_TYPE_PREFIX, 32082) +HANDLE_BAT(APINT_TYPE_PREFIX, 32083) +HANDLE_BAT(APINT_TYPE_PREFIX, 32084) +HANDLE_BAT(APINT_TYPE_PREFIX, 32085) +HANDLE_BAT(APINT_TYPE_PREFIX, 32086) +HANDLE_BAT(APINT_TYPE_PREFIX, 32087) +HANDLE_BAT(APINT_TYPE_PREFIX, 32088) +HANDLE_BAT(APINT_TYPE_PREFIX, 32089) +HANDLE_BAT(APINT_TYPE_PREFIX, 32090) +HANDLE_BAT(APINT_TYPE_PREFIX, 32091) +HANDLE_BAT(APINT_TYPE_PREFIX, 32092) +HANDLE_BAT(APINT_TYPE_PREFIX, 32093) +HANDLE_BAT(APINT_TYPE_PREFIX, 32094) +HANDLE_BAT(APINT_TYPE_PREFIX, 32095) +HANDLE_BAT(APINT_TYPE_PREFIX, 32096) +HANDLE_BAT(APINT_TYPE_PREFIX, 32097) +HANDLE_BAT(APINT_TYPE_PREFIX, 32098) +HANDLE_BAT(APINT_TYPE_PREFIX, 32099) +HANDLE_BAT(APINT_TYPE_PREFIX, 32100) +HANDLE_BAT(APINT_TYPE_PREFIX, 32101) +HANDLE_BAT(APINT_TYPE_PREFIX, 32102) +HANDLE_BAT(APINT_TYPE_PREFIX, 32103) +HANDLE_BAT(APINT_TYPE_PREFIX, 32104) +HANDLE_BAT(APINT_TYPE_PREFIX, 32105) +HANDLE_BAT(APINT_TYPE_PREFIX, 32106) +HANDLE_BAT(APINT_TYPE_PREFIX, 32107) +HANDLE_BAT(APINT_TYPE_PREFIX, 32108) +HANDLE_BAT(APINT_TYPE_PREFIX, 32109) +HANDLE_BAT(APINT_TYPE_PREFIX, 32110) +HANDLE_BAT(APINT_TYPE_PREFIX, 32111) +HANDLE_BAT(APINT_TYPE_PREFIX, 32112) +HANDLE_BAT(APINT_TYPE_PREFIX, 32113) +HANDLE_BAT(APINT_TYPE_PREFIX, 32114) +HANDLE_BAT(APINT_TYPE_PREFIX, 32115) +HANDLE_BAT(APINT_TYPE_PREFIX, 32116) +HANDLE_BAT(APINT_TYPE_PREFIX, 32117) +HANDLE_BAT(APINT_TYPE_PREFIX, 32118) +HANDLE_BAT(APINT_TYPE_PREFIX, 32119) +HANDLE_BAT(APINT_TYPE_PREFIX, 32120) +HANDLE_BAT(APINT_TYPE_PREFIX, 32121) +HANDLE_BAT(APINT_TYPE_PREFIX, 32122) +HANDLE_BAT(APINT_TYPE_PREFIX, 32123) +HANDLE_BAT(APINT_TYPE_PREFIX, 32124) +HANDLE_BAT(APINT_TYPE_PREFIX, 32125) +HANDLE_BAT(APINT_TYPE_PREFIX, 32126) +HANDLE_BAT(APINT_TYPE_PREFIX, 32127) +HANDLE_BAT(APINT_TYPE_PREFIX, 32128) +HANDLE_BAT(APINT_TYPE_PREFIX, 32129) +HANDLE_BAT(APINT_TYPE_PREFIX, 32130) +HANDLE_BAT(APINT_TYPE_PREFIX, 32131) +HANDLE_BAT(APINT_TYPE_PREFIX, 32132) +HANDLE_BAT(APINT_TYPE_PREFIX, 32133) +HANDLE_BAT(APINT_TYPE_PREFIX, 32134) +HANDLE_BAT(APINT_TYPE_PREFIX, 32135) +HANDLE_BAT(APINT_TYPE_PREFIX, 32136) +HANDLE_BAT(APINT_TYPE_PREFIX, 32137) +HANDLE_BAT(APINT_TYPE_PREFIX, 32138) +HANDLE_BAT(APINT_TYPE_PREFIX, 32139) +HANDLE_BAT(APINT_TYPE_PREFIX, 32140) +HANDLE_BAT(APINT_TYPE_PREFIX, 32141) +HANDLE_BAT(APINT_TYPE_PREFIX, 32142) +HANDLE_BAT(APINT_TYPE_PREFIX, 32143) +HANDLE_BAT(APINT_TYPE_PREFIX, 32144) +HANDLE_BAT(APINT_TYPE_PREFIX, 32145) +HANDLE_BAT(APINT_TYPE_PREFIX, 32146) +HANDLE_BAT(APINT_TYPE_PREFIX, 32147) +HANDLE_BAT(APINT_TYPE_PREFIX, 32148) +HANDLE_BAT(APINT_TYPE_PREFIX, 32149) +HANDLE_BAT(APINT_TYPE_PREFIX, 32150) +HANDLE_BAT(APINT_TYPE_PREFIX, 32151) +HANDLE_BAT(APINT_TYPE_PREFIX, 32152) +HANDLE_BAT(APINT_TYPE_PREFIX, 32153) +HANDLE_BAT(APINT_TYPE_PREFIX, 32154) +HANDLE_BAT(APINT_TYPE_PREFIX, 32155) +HANDLE_BAT(APINT_TYPE_PREFIX, 32156) +HANDLE_BAT(APINT_TYPE_PREFIX, 32157) +HANDLE_BAT(APINT_TYPE_PREFIX, 32158) +HANDLE_BAT(APINT_TYPE_PREFIX, 32159) +HANDLE_BAT(APINT_TYPE_PREFIX, 32160) +HANDLE_BAT(APINT_TYPE_PREFIX, 32161) +HANDLE_BAT(APINT_TYPE_PREFIX, 32162) +HANDLE_BAT(APINT_TYPE_PREFIX, 32163) +HANDLE_BAT(APINT_TYPE_PREFIX, 32164) +HANDLE_BAT(APINT_TYPE_PREFIX, 32165) +HANDLE_BAT(APINT_TYPE_PREFIX, 32166) +HANDLE_BAT(APINT_TYPE_PREFIX, 32167) +HANDLE_BAT(APINT_TYPE_PREFIX, 32168) +HANDLE_BAT(APINT_TYPE_PREFIX, 32169) +HANDLE_BAT(APINT_TYPE_PREFIX, 32170) +HANDLE_BAT(APINT_TYPE_PREFIX, 32171) +HANDLE_BAT(APINT_TYPE_PREFIX, 32172) +HANDLE_BAT(APINT_TYPE_PREFIX, 32173) +HANDLE_BAT(APINT_TYPE_PREFIX, 32174) +HANDLE_BAT(APINT_TYPE_PREFIX, 32175) +HANDLE_BAT(APINT_TYPE_PREFIX, 32176) +HANDLE_BAT(APINT_TYPE_PREFIX, 32177) +HANDLE_BAT(APINT_TYPE_PREFIX, 32178) +HANDLE_BAT(APINT_TYPE_PREFIX, 32179) +HANDLE_BAT(APINT_TYPE_PREFIX, 32180) +HANDLE_BAT(APINT_TYPE_PREFIX, 32181) +HANDLE_BAT(APINT_TYPE_PREFIX, 32182) +HANDLE_BAT(APINT_TYPE_PREFIX, 32183) +HANDLE_BAT(APINT_TYPE_PREFIX, 32184) +HANDLE_BAT(APINT_TYPE_PREFIX, 32185) +HANDLE_BAT(APINT_TYPE_PREFIX, 32186) +HANDLE_BAT(APINT_TYPE_PREFIX, 32187) +HANDLE_BAT(APINT_TYPE_PREFIX, 32188) +HANDLE_BAT(APINT_TYPE_PREFIX, 32189) +HANDLE_BAT(APINT_TYPE_PREFIX, 32190) +HANDLE_BAT(APINT_TYPE_PREFIX, 32191) +HANDLE_BAT(APINT_TYPE_PREFIX, 32192) +HANDLE_BAT(APINT_TYPE_PREFIX, 32193) +HANDLE_BAT(APINT_TYPE_PREFIX, 32194) +HANDLE_BAT(APINT_TYPE_PREFIX, 32195) +HANDLE_BAT(APINT_TYPE_PREFIX, 32196) +HANDLE_BAT(APINT_TYPE_PREFIX, 32197) +HANDLE_BAT(APINT_TYPE_PREFIX, 32198) +HANDLE_BAT(APINT_TYPE_PREFIX, 32199) +HANDLE_BAT(APINT_TYPE_PREFIX, 32200) +HANDLE_BAT(APINT_TYPE_PREFIX, 32201) +HANDLE_BAT(APINT_TYPE_PREFIX, 32202) +HANDLE_BAT(APINT_TYPE_PREFIX, 32203) +HANDLE_BAT(APINT_TYPE_PREFIX, 32204) +HANDLE_BAT(APINT_TYPE_PREFIX, 32205) +HANDLE_BAT(APINT_TYPE_PREFIX, 32206) +HANDLE_BAT(APINT_TYPE_PREFIX, 32207) +HANDLE_BAT(APINT_TYPE_PREFIX, 32208) +HANDLE_BAT(APINT_TYPE_PREFIX, 32209) +HANDLE_BAT(APINT_TYPE_PREFIX, 32210) +HANDLE_BAT(APINT_TYPE_PREFIX, 32211) +HANDLE_BAT(APINT_TYPE_PREFIX, 32212) +HANDLE_BAT(APINT_TYPE_PREFIX, 32213) +HANDLE_BAT(APINT_TYPE_PREFIX, 32214) +HANDLE_BAT(APINT_TYPE_PREFIX, 32215) +HANDLE_BAT(APINT_TYPE_PREFIX, 32216) +HANDLE_BAT(APINT_TYPE_PREFIX, 32217) +HANDLE_BAT(APINT_TYPE_PREFIX, 32218) +HANDLE_BAT(APINT_TYPE_PREFIX, 32219) +HANDLE_BAT(APINT_TYPE_PREFIX, 32220) +HANDLE_BAT(APINT_TYPE_PREFIX, 32221) +HANDLE_BAT(APINT_TYPE_PREFIX, 32222) +HANDLE_BAT(APINT_TYPE_PREFIX, 32223) +HANDLE_BAT(APINT_TYPE_PREFIX, 32224) +HANDLE_BAT(APINT_TYPE_PREFIX, 32225) +HANDLE_BAT(APINT_TYPE_PREFIX, 32226) +HANDLE_BAT(APINT_TYPE_PREFIX, 32227) +HANDLE_BAT(APINT_TYPE_PREFIX, 32228) +HANDLE_BAT(APINT_TYPE_PREFIX, 32229) +HANDLE_BAT(APINT_TYPE_PREFIX, 32230) +HANDLE_BAT(APINT_TYPE_PREFIX, 32231) +HANDLE_BAT(APINT_TYPE_PREFIX, 32232) +HANDLE_BAT(APINT_TYPE_PREFIX, 32233) +HANDLE_BAT(APINT_TYPE_PREFIX, 32234) +HANDLE_BAT(APINT_TYPE_PREFIX, 32235) +HANDLE_BAT(APINT_TYPE_PREFIX, 32236) +HANDLE_BAT(APINT_TYPE_PREFIX, 32237) +HANDLE_BAT(APINT_TYPE_PREFIX, 32238) +HANDLE_BAT(APINT_TYPE_PREFIX, 32239) +HANDLE_BAT(APINT_TYPE_PREFIX, 32240) +HANDLE_BAT(APINT_TYPE_PREFIX, 32241) +HANDLE_BAT(APINT_TYPE_PREFIX, 32242) +HANDLE_BAT(APINT_TYPE_PREFIX, 32243) +HANDLE_BAT(APINT_TYPE_PREFIX, 32244) +HANDLE_BAT(APINT_TYPE_PREFIX, 32245) +HANDLE_BAT(APINT_TYPE_PREFIX, 32246) +HANDLE_BAT(APINT_TYPE_PREFIX, 32247) +HANDLE_BAT(APINT_TYPE_PREFIX, 32248) +HANDLE_BAT(APINT_TYPE_PREFIX, 32249) +HANDLE_BAT(APINT_TYPE_PREFIX, 32250) +HANDLE_BAT(APINT_TYPE_PREFIX, 32251) +HANDLE_BAT(APINT_TYPE_PREFIX, 32252) +HANDLE_BAT(APINT_TYPE_PREFIX, 32253) +HANDLE_BAT(APINT_TYPE_PREFIX, 32254) +HANDLE_BAT(APINT_TYPE_PREFIX, 32255) +HANDLE_BAT(APINT_TYPE_PREFIX, 32256) +HANDLE_BAT(APINT_TYPE_PREFIX, 32257) +HANDLE_BAT(APINT_TYPE_PREFIX, 32258) +HANDLE_BAT(APINT_TYPE_PREFIX, 32259) +HANDLE_BAT(APINT_TYPE_PREFIX, 32260) +HANDLE_BAT(APINT_TYPE_PREFIX, 32261) +HANDLE_BAT(APINT_TYPE_PREFIX, 32262) +HANDLE_BAT(APINT_TYPE_PREFIX, 32263) +HANDLE_BAT(APINT_TYPE_PREFIX, 32264) +HANDLE_BAT(APINT_TYPE_PREFIX, 32265) +HANDLE_BAT(APINT_TYPE_PREFIX, 32266) +HANDLE_BAT(APINT_TYPE_PREFIX, 32267) +HANDLE_BAT(APINT_TYPE_PREFIX, 32268) +HANDLE_BAT(APINT_TYPE_PREFIX, 32269) +HANDLE_BAT(APINT_TYPE_PREFIX, 32270) +HANDLE_BAT(APINT_TYPE_PREFIX, 32271) +HANDLE_BAT(APINT_TYPE_PREFIX, 32272) +HANDLE_BAT(APINT_TYPE_PREFIX, 32273) +HANDLE_BAT(APINT_TYPE_PREFIX, 32274) +HANDLE_BAT(APINT_TYPE_PREFIX, 32275) +HANDLE_BAT(APINT_TYPE_PREFIX, 32276) +HANDLE_BAT(APINT_TYPE_PREFIX, 32277) +HANDLE_BAT(APINT_TYPE_PREFIX, 32278) +HANDLE_BAT(APINT_TYPE_PREFIX, 32279) +HANDLE_BAT(APINT_TYPE_PREFIX, 32280) +HANDLE_BAT(APINT_TYPE_PREFIX, 32281) +HANDLE_BAT(APINT_TYPE_PREFIX, 32282) +HANDLE_BAT(APINT_TYPE_PREFIX, 32283) +HANDLE_BAT(APINT_TYPE_PREFIX, 32284) +HANDLE_BAT(APINT_TYPE_PREFIX, 32285) +HANDLE_BAT(APINT_TYPE_PREFIX, 32286) +HANDLE_BAT(APINT_TYPE_PREFIX, 32287) +HANDLE_BAT(APINT_TYPE_PREFIX, 32288) +HANDLE_BAT(APINT_TYPE_PREFIX, 32289) +HANDLE_BAT(APINT_TYPE_PREFIX, 32290) +HANDLE_BAT(APINT_TYPE_PREFIX, 32291) +HANDLE_BAT(APINT_TYPE_PREFIX, 32292) +HANDLE_BAT(APINT_TYPE_PREFIX, 32293) +HANDLE_BAT(APINT_TYPE_PREFIX, 32294) +HANDLE_BAT(APINT_TYPE_PREFIX, 32295) +HANDLE_BAT(APINT_TYPE_PREFIX, 32296) +HANDLE_BAT(APINT_TYPE_PREFIX, 32297) +HANDLE_BAT(APINT_TYPE_PREFIX, 32298) +HANDLE_BAT(APINT_TYPE_PREFIX, 32299) +HANDLE_BAT(APINT_TYPE_PREFIX, 32300) +HANDLE_BAT(APINT_TYPE_PREFIX, 32301) +HANDLE_BAT(APINT_TYPE_PREFIX, 32302) +HANDLE_BAT(APINT_TYPE_PREFIX, 32303) +HANDLE_BAT(APINT_TYPE_PREFIX, 32304) +HANDLE_BAT(APINT_TYPE_PREFIX, 32305) +HANDLE_BAT(APINT_TYPE_PREFIX, 32306) +HANDLE_BAT(APINT_TYPE_PREFIX, 32307) +HANDLE_BAT(APINT_TYPE_PREFIX, 32308) +HANDLE_BAT(APINT_TYPE_PREFIX, 32309) +HANDLE_BAT(APINT_TYPE_PREFIX, 32310) +HANDLE_BAT(APINT_TYPE_PREFIX, 32311) +HANDLE_BAT(APINT_TYPE_PREFIX, 32312) +HANDLE_BAT(APINT_TYPE_PREFIX, 32313) +HANDLE_BAT(APINT_TYPE_PREFIX, 32314) +HANDLE_BAT(APINT_TYPE_PREFIX, 32315) +HANDLE_BAT(APINT_TYPE_PREFIX, 32316) +HANDLE_BAT(APINT_TYPE_PREFIX, 32317) +HANDLE_BAT(APINT_TYPE_PREFIX, 32318) +HANDLE_BAT(APINT_TYPE_PREFIX, 32319) +HANDLE_BAT(APINT_TYPE_PREFIX, 32320) +HANDLE_BAT(APINT_TYPE_PREFIX, 32321) +HANDLE_BAT(APINT_TYPE_PREFIX, 32322) +HANDLE_BAT(APINT_TYPE_PREFIX, 32323) +HANDLE_BAT(APINT_TYPE_PREFIX, 32324) +HANDLE_BAT(APINT_TYPE_PREFIX, 32325) +HANDLE_BAT(APINT_TYPE_PREFIX, 32326) +HANDLE_BAT(APINT_TYPE_PREFIX, 32327) +HANDLE_BAT(APINT_TYPE_PREFIX, 32328) +HANDLE_BAT(APINT_TYPE_PREFIX, 32329) +HANDLE_BAT(APINT_TYPE_PREFIX, 32330) +HANDLE_BAT(APINT_TYPE_PREFIX, 32331) +HANDLE_BAT(APINT_TYPE_PREFIX, 32332) +HANDLE_BAT(APINT_TYPE_PREFIX, 32333) +HANDLE_BAT(APINT_TYPE_PREFIX, 32334) +HANDLE_BAT(APINT_TYPE_PREFIX, 32335) +HANDLE_BAT(APINT_TYPE_PREFIX, 32336) +HANDLE_BAT(APINT_TYPE_PREFIX, 32337) +HANDLE_BAT(APINT_TYPE_PREFIX, 32338) +HANDLE_BAT(APINT_TYPE_PREFIX, 32339) +HANDLE_BAT(APINT_TYPE_PREFIX, 32340) +HANDLE_BAT(APINT_TYPE_PREFIX, 32341) +HANDLE_BAT(APINT_TYPE_PREFIX, 32342) +HANDLE_BAT(APINT_TYPE_PREFIX, 32343) +HANDLE_BAT(APINT_TYPE_PREFIX, 32344) +HANDLE_BAT(APINT_TYPE_PREFIX, 32345) +HANDLE_BAT(APINT_TYPE_PREFIX, 32346) +HANDLE_BAT(APINT_TYPE_PREFIX, 32347) +HANDLE_BAT(APINT_TYPE_PREFIX, 32348) +HANDLE_BAT(APINT_TYPE_PREFIX, 32349) +HANDLE_BAT(APINT_TYPE_PREFIX, 32350) +HANDLE_BAT(APINT_TYPE_PREFIX, 32351) +HANDLE_BAT(APINT_TYPE_PREFIX, 32352) +HANDLE_BAT(APINT_TYPE_PREFIX, 32353) +HANDLE_BAT(APINT_TYPE_PREFIX, 32354) +HANDLE_BAT(APINT_TYPE_PREFIX, 32355) +HANDLE_BAT(APINT_TYPE_PREFIX, 32356) +HANDLE_BAT(APINT_TYPE_PREFIX, 32357) +HANDLE_BAT(APINT_TYPE_PREFIX, 32358) +HANDLE_BAT(APINT_TYPE_PREFIX, 32359) +HANDLE_BAT(APINT_TYPE_PREFIX, 32360) +HANDLE_BAT(APINT_TYPE_PREFIX, 32361) +HANDLE_BAT(APINT_TYPE_PREFIX, 32362) +HANDLE_BAT(APINT_TYPE_PREFIX, 32363) +HANDLE_BAT(APINT_TYPE_PREFIX, 32364) +HANDLE_BAT(APINT_TYPE_PREFIX, 32365) +HANDLE_BAT(APINT_TYPE_PREFIX, 32366) +HANDLE_BAT(APINT_TYPE_PREFIX, 32367) +HANDLE_BAT(APINT_TYPE_PREFIX, 32368) +HANDLE_BAT(APINT_TYPE_PREFIX, 32369) +HANDLE_BAT(APINT_TYPE_PREFIX, 32370) +HANDLE_BAT(APINT_TYPE_PREFIX, 32371) +HANDLE_BAT(APINT_TYPE_PREFIX, 32372) +HANDLE_BAT(APINT_TYPE_PREFIX, 32373) +HANDLE_BAT(APINT_TYPE_PREFIX, 32374) +HANDLE_BAT(APINT_TYPE_PREFIX, 32375) +HANDLE_BAT(APINT_TYPE_PREFIX, 32376) +HANDLE_BAT(APINT_TYPE_PREFIX, 32377) +HANDLE_BAT(APINT_TYPE_PREFIX, 32378) +HANDLE_BAT(APINT_TYPE_PREFIX, 32379) +HANDLE_BAT(APINT_TYPE_PREFIX, 32380) +HANDLE_BAT(APINT_TYPE_PREFIX, 32381) +HANDLE_BAT(APINT_TYPE_PREFIX, 32382) +HANDLE_BAT(APINT_TYPE_PREFIX, 32383) +HANDLE_BAT(APINT_TYPE_PREFIX, 32384) +HANDLE_BAT(APINT_TYPE_PREFIX, 32385) +HANDLE_BAT(APINT_TYPE_PREFIX, 32386) +HANDLE_BAT(APINT_TYPE_PREFIX, 32387) +HANDLE_BAT(APINT_TYPE_PREFIX, 32388) +HANDLE_BAT(APINT_TYPE_PREFIX, 32389) +HANDLE_BAT(APINT_TYPE_PREFIX, 32390) +HANDLE_BAT(APINT_TYPE_PREFIX, 32391) +HANDLE_BAT(APINT_TYPE_PREFIX, 32392) +HANDLE_BAT(APINT_TYPE_PREFIX, 32393) +HANDLE_BAT(APINT_TYPE_PREFIX, 32394) +HANDLE_BAT(APINT_TYPE_PREFIX, 32395) +HANDLE_BAT(APINT_TYPE_PREFIX, 32396) +HANDLE_BAT(APINT_TYPE_PREFIX, 32397) +HANDLE_BAT(APINT_TYPE_PREFIX, 32398) +HANDLE_BAT(APINT_TYPE_PREFIX, 32399) +HANDLE_BAT(APINT_TYPE_PREFIX, 32400) +HANDLE_BAT(APINT_TYPE_PREFIX, 32401) +HANDLE_BAT(APINT_TYPE_PREFIX, 32402) +HANDLE_BAT(APINT_TYPE_PREFIX, 32403) +HANDLE_BAT(APINT_TYPE_PREFIX, 32404) +HANDLE_BAT(APINT_TYPE_PREFIX, 32405) +HANDLE_BAT(APINT_TYPE_PREFIX, 32406) +HANDLE_BAT(APINT_TYPE_PREFIX, 32407) +HANDLE_BAT(APINT_TYPE_PREFIX, 32408) +HANDLE_BAT(APINT_TYPE_PREFIX, 32409) +HANDLE_BAT(APINT_TYPE_PREFIX, 32410) +HANDLE_BAT(APINT_TYPE_PREFIX, 32411) +HANDLE_BAT(APINT_TYPE_PREFIX, 32412) +HANDLE_BAT(APINT_TYPE_PREFIX, 32413) +HANDLE_BAT(APINT_TYPE_PREFIX, 32414) +HANDLE_BAT(APINT_TYPE_PREFIX, 32415) +HANDLE_BAT(APINT_TYPE_PREFIX, 32416) +HANDLE_BAT(APINT_TYPE_PREFIX, 32417) +HANDLE_BAT(APINT_TYPE_PREFIX, 32418) +HANDLE_BAT(APINT_TYPE_PREFIX, 32419) +HANDLE_BAT(APINT_TYPE_PREFIX, 32420) +HANDLE_BAT(APINT_TYPE_PREFIX, 32421) +HANDLE_BAT(APINT_TYPE_PREFIX, 32422) +HANDLE_BAT(APINT_TYPE_PREFIX, 32423) +HANDLE_BAT(APINT_TYPE_PREFIX, 32424) +HANDLE_BAT(APINT_TYPE_PREFIX, 32425) +HANDLE_BAT(APINT_TYPE_PREFIX, 32426) +HANDLE_BAT(APINT_TYPE_PREFIX, 32427) +HANDLE_BAT(APINT_TYPE_PREFIX, 32428) +HANDLE_BAT(APINT_TYPE_PREFIX, 32429) +HANDLE_BAT(APINT_TYPE_PREFIX, 32430) +HANDLE_BAT(APINT_TYPE_PREFIX, 32431) +HANDLE_BAT(APINT_TYPE_PREFIX, 32432) +HANDLE_BAT(APINT_TYPE_PREFIX, 32433) +HANDLE_BAT(APINT_TYPE_PREFIX, 32434) +HANDLE_BAT(APINT_TYPE_PREFIX, 32435) +HANDLE_BAT(APINT_TYPE_PREFIX, 32436) +HANDLE_BAT(APINT_TYPE_PREFIX, 32437) +HANDLE_BAT(APINT_TYPE_PREFIX, 32438) +HANDLE_BAT(APINT_TYPE_PREFIX, 32439) +HANDLE_BAT(APINT_TYPE_PREFIX, 32440) +HANDLE_BAT(APINT_TYPE_PREFIX, 32441) +HANDLE_BAT(APINT_TYPE_PREFIX, 32442) +HANDLE_BAT(APINT_TYPE_PREFIX, 32443) +HANDLE_BAT(APINT_TYPE_PREFIX, 32444) +HANDLE_BAT(APINT_TYPE_PREFIX, 32445) +HANDLE_BAT(APINT_TYPE_PREFIX, 32446) +HANDLE_BAT(APINT_TYPE_PREFIX, 32447) +HANDLE_BAT(APINT_TYPE_PREFIX, 32448) +HANDLE_BAT(APINT_TYPE_PREFIX, 32449) +HANDLE_BAT(APINT_TYPE_PREFIX, 32450) +HANDLE_BAT(APINT_TYPE_PREFIX, 32451) +HANDLE_BAT(APINT_TYPE_PREFIX, 32452) +HANDLE_BAT(APINT_TYPE_PREFIX, 32453) +HANDLE_BAT(APINT_TYPE_PREFIX, 32454) +HANDLE_BAT(APINT_TYPE_PREFIX, 32455) +HANDLE_BAT(APINT_TYPE_PREFIX, 32456) +HANDLE_BAT(APINT_TYPE_PREFIX, 32457) +HANDLE_BAT(APINT_TYPE_PREFIX, 32458) +HANDLE_BAT(APINT_TYPE_PREFIX, 32459) +HANDLE_BAT(APINT_TYPE_PREFIX, 32460) +HANDLE_BAT(APINT_TYPE_PREFIX, 32461) +HANDLE_BAT(APINT_TYPE_PREFIX, 32462) +HANDLE_BAT(APINT_TYPE_PREFIX, 32463) +HANDLE_BAT(APINT_TYPE_PREFIX, 32464) +HANDLE_BAT(APINT_TYPE_PREFIX, 32465) +HANDLE_BAT(APINT_TYPE_PREFIX, 32466) +HANDLE_BAT(APINT_TYPE_PREFIX, 32467) +HANDLE_BAT(APINT_TYPE_PREFIX, 32468) +HANDLE_BAT(APINT_TYPE_PREFIX, 32469) +HANDLE_BAT(APINT_TYPE_PREFIX, 32470) +HANDLE_BAT(APINT_TYPE_PREFIX, 32471) +HANDLE_BAT(APINT_TYPE_PREFIX, 32472) +HANDLE_BAT(APINT_TYPE_PREFIX, 32473) +HANDLE_BAT(APINT_TYPE_PREFIX, 32474) +HANDLE_BAT(APINT_TYPE_PREFIX, 32475) +HANDLE_BAT(APINT_TYPE_PREFIX, 32476) +HANDLE_BAT(APINT_TYPE_PREFIX, 32477) +HANDLE_BAT(APINT_TYPE_PREFIX, 32478) +HANDLE_BAT(APINT_TYPE_PREFIX, 32479) +HANDLE_BAT(APINT_TYPE_PREFIX, 32480) +HANDLE_BAT(APINT_TYPE_PREFIX, 32481) +HANDLE_BAT(APINT_TYPE_PREFIX, 32482) +HANDLE_BAT(APINT_TYPE_PREFIX, 32483) +HANDLE_BAT(APINT_TYPE_PREFIX, 32484) +HANDLE_BAT(APINT_TYPE_PREFIX, 32485) +HANDLE_BAT(APINT_TYPE_PREFIX, 32486) +HANDLE_BAT(APINT_TYPE_PREFIX, 32487) +HANDLE_BAT(APINT_TYPE_PREFIX, 32488) +HANDLE_BAT(APINT_TYPE_PREFIX, 32489) +HANDLE_BAT(APINT_TYPE_PREFIX, 32490) +HANDLE_BAT(APINT_TYPE_PREFIX, 32491) +HANDLE_BAT(APINT_TYPE_PREFIX, 32492) +HANDLE_BAT(APINT_TYPE_PREFIX, 32493) +HANDLE_BAT(APINT_TYPE_PREFIX, 32494) +HANDLE_BAT(APINT_TYPE_PREFIX, 32495) +HANDLE_BAT(APINT_TYPE_PREFIX, 32496) +HANDLE_BAT(APINT_TYPE_PREFIX, 32497) +HANDLE_BAT(APINT_TYPE_PREFIX, 32498) +HANDLE_BAT(APINT_TYPE_PREFIX, 32499) +HANDLE_BAT(APINT_TYPE_PREFIX, 32500) +HANDLE_BAT(APINT_TYPE_PREFIX, 32501) +HANDLE_BAT(APINT_TYPE_PREFIX, 32502) +HANDLE_BAT(APINT_TYPE_PREFIX, 32503) +HANDLE_BAT(APINT_TYPE_PREFIX, 32504) +HANDLE_BAT(APINT_TYPE_PREFIX, 32505) +HANDLE_BAT(APINT_TYPE_PREFIX, 32506) +HANDLE_BAT(APINT_TYPE_PREFIX, 32507) +HANDLE_BAT(APINT_TYPE_PREFIX, 32508) +HANDLE_BAT(APINT_TYPE_PREFIX, 32509) +HANDLE_BAT(APINT_TYPE_PREFIX, 32510) +HANDLE_BAT(APINT_TYPE_PREFIX, 32511) +HANDLE_BAT(APINT_TYPE_PREFIX, 32512) +HANDLE_BAT(APINT_TYPE_PREFIX, 32513) +HANDLE_BAT(APINT_TYPE_PREFIX, 32514) +HANDLE_BAT(APINT_TYPE_PREFIX, 32515) +HANDLE_BAT(APINT_TYPE_PREFIX, 32516) +HANDLE_BAT(APINT_TYPE_PREFIX, 32517) +HANDLE_BAT(APINT_TYPE_PREFIX, 32518) +HANDLE_BAT(APINT_TYPE_PREFIX, 32519) +HANDLE_BAT(APINT_TYPE_PREFIX, 32520) +HANDLE_BAT(APINT_TYPE_PREFIX, 32521) +HANDLE_BAT(APINT_TYPE_PREFIX, 32522) +HANDLE_BAT(APINT_TYPE_PREFIX, 32523) +HANDLE_BAT(APINT_TYPE_PREFIX, 32524) +HANDLE_BAT(APINT_TYPE_PREFIX, 32525) +HANDLE_BAT(APINT_TYPE_PREFIX, 32526) +HANDLE_BAT(APINT_TYPE_PREFIX, 32527) +HANDLE_BAT(APINT_TYPE_PREFIX, 32528) +HANDLE_BAT(APINT_TYPE_PREFIX, 32529) +HANDLE_BAT(APINT_TYPE_PREFIX, 32530) +HANDLE_BAT(APINT_TYPE_PREFIX, 32531) +HANDLE_BAT(APINT_TYPE_PREFIX, 32532) +HANDLE_BAT(APINT_TYPE_PREFIX, 32533) +HANDLE_BAT(APINT_TYPE_PREFIX, 32534) +HANDLE_BAT(APINT_TYPE_PREFIX, 32535) +HANDLE_BAT(APINT_TYPE_PREFIX, 32536) +HANDLE_BAT(APINT_TYPE_PREFIX, 32537) +HANDLE_BAT(APINT_TYPE_PREFIX, 32538) +HANDLE_BAT(APINT_TYPE_PREFIX, 32539) +HANDLE_BAT(APINT_TYPE_PREFIX, 32540) +HANDLE_BAT(APINT_TYPE_PREFIX, 32541) +HANDLE_BAT(APINT_TYPE_PREFIX, 32542) +HANDLE_BAT(APINT_TYPE_PREFIX, 32543) +HANDLE_BAT(APINT_TYPE_PREFIX, 32544) +HANDLE_BAT(APINT_TYPE_PREFIX, 32545) +HANDLE_BAT(APINT_TYPE_PREFIX, 32546) +HANDLE_BAT(APINT_TYPE_PREFIX, 32547) +HANDLE_BAT(APINT_TYPE_PREFIX, 32548) +HANDLE_BAT(APINT_TYPE_PREFIX, 32549) +HANDLE_BAT(APINT_TYPE_PREFIX, 32550) +HANDLE_BAT(APINT_TYPE_PREFIX, 32551) +HANDLE_BAT(APINT_TYPE_PREFIX, 32552) +HANDLE_BAT(APINT_TYPE_PREFIX, 32553) +HANDLE_BAT(APINT_TYPE_PREFIX, 32554) +HANDLE_BAT(APINT_TYPE_PREFIX, 32555) +HANDLE_BAT(APINT_TYPE_PREFIX, 32556) +HANDLE_BAT(APINT_TYPE_PREFIX, 32557) +HANDLE_BAT(APINT_TYPE_PREFIX, 32558) +HANDLE_BAT(APINT_TYPE_PREFIX, 32559) +HANDLE_BAT(APINT_TYPE_PREFIX, 32560) +HANDLE_BAT(APINT_TYPE_PREFIX, 32561) +HANDLE_BAT(APINT_TYPE_PREFIX, 32562) +HANDLE_BAT(APINT_TYPE_PREFIX, 32563) +HANDLE_BAT(APINT_TYPE_PREFIX, 32564) +HANDLE_BAT(APINT_TYPE_PREFIX, 32565) +HANDLE_BAT(APINT_TYPE_PREFIX, 32566) +HANDLE_BAT(APINT_TYPE_PREFIX, 32567) +HANDLE_BAT(APINT_TYPE_PREFIX, 32568) +HANDLE_BAT(APINT_TYPE_PREFIX, 32569) +HANDLE_BAT(APINT_TYPE_PREFIX, 32570) +HANDLE_BAT(APINT_TYPE_PREFIX, 32571) +HANDLE_BAT(APINT_TYPE_PREFIX, 32572) +HANDLE_BAT(APINT_TYPE_PREFIX, 32573) +HANDLE_BAT(APINT_TYPE_PREFIX, 32574) +HANDLE_BAT(APINT_TYPE_PREFIX, 32575) +HANDLE_BAT(APINT_TYPE_PREFIX, 32576) +HANDLE_BAT(APINT_TYPE_PREFIX, 32577) +HANDLE_BAT(APINT_TYPE_PREFIX, 32578) +HANDLE_BAT(APINT_TYPE_PREFIX, 32579) +HANDLE_BAT(APINT_TYPE_PREFIX, 32580) +HANDLE_BAT(APINT_TYPE_PREFIX, 32581) +HANDLE_BAT(APINT_TYPE_PREFIX, 32582) +HANDLE_BAT(APINT_TYPE_PREFIX, 32583) +HANDLE_BAT(APINT_TYPE_PREFIX, 32584) +HANDLE_BAT(APINT_TYPE_PREFIX, 32585) +HANDLE_BAT(APINT_TYPE_PREFIX, 32586) +HANDLE_BAT(APINT_TYPE_PREFIX, 32587) +HANDLE_BAT(APINT_TYPE_PREFIX, 32588) +HANDLE_BAT(APINT_TYPE_PREFIX, 32589) +HANDLE_BAT(APINT_TYPE_PREFIX, 32590) +HANDLE_BAT(APINT_TYPE_PREFIX, 32591) +HANDLE_BAT(APINT_TYPE_PREFIX, 32592) +HANDLE_BAT(APINT_TYPE_PREFIX, 32593) +HANDLE_BAT(APINT_TYPE_PREFIX, 32594) +HANDLE_BAT(APINT_TYPE_PREFIX, 32595) +HANDLE_BAT(APINT_TYPE_PREFIX, 32596) +HANDLE_BAT(APINT_TYPE_PREFIX, 32597) +HANDLE_BAT(APINT_TYPE_PREFIX, 32598) +HANDLE_BAT(APINT_TYPE_PREFIX, 32599) +HANDLE_BAT(APINT_TYPE_PREFIX, 32600) +HANDLE_BAT(APINT_TYPE_PREFIX, 32601) +HANDLE_BAT(APINT_TYPE_PREFIX, 32602) +HANDLE_BAT(APINT_TYPE_PREFIX, 32603) +HANDLE_BAT(APINT_TYPE_PREFIX, 32604) +HANDLE_BAT(APINT_TYPE_PREFIX, 32605) +HANDLE_BAT(APINT_TYPE_PREFIX, 32606) +HANDLE_BAT(APINT_TYPE_PREFIX, 32607) +HANDLE_BAT(APINT_TYPE_PREFIX, 32608) +HANDLE_BAT(APINT_TYPE_PREFIX, 32609) +HANDLE_BAT(APINT_TYPE_PREFIX, 32610) +HANDLE_BAT(APINT_TYPE_PREFIX, 32611) +HANDLE_BAT(APINT_TYPE_PREFIX, 32612) +HANDLE_BAT(APINT_TYPE_PREFIX, 32613) +HANDLE_BAT(APINT_TYPE_PREFIX, 32614) +HANDLE_BAT(APINT_TYPE_PREFIX, 32615) +HANDLE_BAT(APINT_TYPE_PREFIX, 32616) +HANDLE_BAT(APINT_TYPE_PREFIX, 32617) +HANDLE_BAT(APINT_TYPE_PREFIX, 32618) +HANDLE_BAT(APINT_TYPE_PREFIX, 32619) +HANDLE_BAT(APINT_TYPE_PREFIX, 32620) +HANDLE_BAT(APINT_TYPE_PREFIX, 32621) +HANDLE_BAT(APINT_TYPE_PREFIX, 32622) +HANDLE_BAT(APINT_TYPE_PREFIX, 32623) +HANDLE_BAT(APINT_TYPE_PREFIX, 32624) +HANDLE_BAT(APINT_TYPE_PREFIX, 32625) +HANDLE_BAT(APINT_TYPE_PREFIX, 32626) +HANDLE_BAT(APINT_TYPE_PREFIX, 32627) +HANDLE_BAT(APINT_TYPE_PREFIX, 32628) +HANDLE_BAT(APINT_TYPE_PREFIX, 32629) +HANDLE_BAT(APINT_TYPE_PREFIX, 32630) +HANDLE_BAT(APINT_TYPE_PREFIX, 32631) +HANDLE_BAT(APINT_TYPE_PREFIX, 32632) +HANDLE_BAT(APINT_TYPE_PREFIX, 32633) +HANDLE_BAT(APINT_TYPE_PREFIX, 32634) +HANDLE_BAT(APINT_TYPE_PREFIX, 32635) +HANDLE_BAT(APINT_TYPE_PREFIX, 32636) +HANDLE_BAT(APINT_TYPE_PREFIX, 32637) +HANDLE_BAT(APINT_TYPE_PREFIX, 32638) +HANDLE_BAT(APINT_TYPE_PREFIX, 32639) +HANDLE_BAT(APINT_TYPE_PREFIX, 32640) +HANDLE_BAT(APINT_TYPE_PREFIX, 32641) +HANDLE_BAT(APINT_TYPE_PREFIX, 32642) +HANDLE_BAT(APINT_TYPE_PREFIX, 32643) +HANDLE_BAT(APINT_TYPE_PREFIX, 32644) +HANDLE_BAT(APINT_TYPE_PREFIX, 32645) +HANDLE_BAT(APINT_TYPE_PREFIX, 32646) +HANDLE_BAT(APINT_TYPE_PREFIX, 32647) +HANDLE_BAT(APINT_TYPE_PREFIX, 32648) +HANDLE_BAT(APINT_TYPE_PREFIX, 32649) +HANDLE_BAT(APINT_TYPE_PREFIX, 32650) +HANDLE_BAT(APINT_TYPE_PREFIX, 32651) +HANDLE_BAT(APINT_TYPE_PREFIX, 32652) +HANDLE_BAT(APINT_TYPE_PREFIX, 32653) +HANDLE_BAT(APINT_TYPE_PREFIX, 32654) +HANDLE_BAT(APINT_TYPE_PREFIX, 32655) +HANDLE_BAT(APINT_TYPE_PREFIX, 32656) +HANDLE_BAT(APINT_TYPE_PREFIX, 32657) +HANDLE_BAT(APINT_TYPE_PREFIX, 32658) +HANDLE_BAT(APINT_TYPE_PREFIX, 32659) +HANDLE_BAT(APINT_TYPE_PREFIX, 32660) +HANDLE_BAT(APINT_TYPE_PREFIX, 32661) +HANDLE_BAT(APINT_TYPE_PREFIX, 32662) +HANDLE_BAT(APINT_TYPE_PREFIX, 32663) +HANDLE_BAT(APINT_TYPE_PREFIX, 32664) +HANDLE_BAT(APINT_TYPE_PREFIX, 32665) +HANDLE_BAT(APINT_TYPE_PREFIX, 32666) +HANDLE_BAT(APINT_TYPE_PREFIX, 32667) +HANDLE_BAT(APINT_TYPE_PREFIX, 32668) +HANDLE_BAT(APINT_TYPE_PREFIX, 32669) +HANDLE_BAT(APINT_TYPE_PREFIX, 32670) +HANDLE_BAT(APINT_TYPE_PREFIX, 32671) +HANDLE_BAT(APINT_TYPE_PREFIX, 32672) +HANDLE_BAT(APINT_TYPE_PREFIX, 32673) +HANDLE_BAT(APINT_TYPE_PREFIX, 32674) +HANDLE_BAT(APINT_TYPE_PREFIX, 32675) +HANDLE_BAT(APINT_TYPE_PREFIX, 32676) +HANDLE_BAT(APINT_TYPE_PREFIX, 32677) +HANDLE_BAT(APINT_TYPE_PREFIX, 32678) +HANDLE_BAT(APINT_TYPE_PREFIX, 32679) +HANDLE_BAT(APINT_TYPE_PREFIX, 32680) +HANDLE_BAT(APINT_TYPE_PREFIX, 32681) +HANDLE_BAT(APINT_TYPE_PREFIX, 32682) +HANDLE_BAT(APINT_TYPE_PREFIX, 32683) +HANDLE_BAT(APINT_TYPE_PREFIX, 32684) +HANDLE_BAT(APINT_TYPE_PREFIX, 32685) +HANDLE_BAT(APINT_TYPE_PREFIX, 32686) +HANDLE_BAT(APINT_TYPE_PREFIX, 32687) +HANDLE_BAT(APINT_TYPE_PREFIX, 32688) +HANDLE_BAT(APINT_TYPE_PREFIX, 32689) +HANDLE_BAT(APINT_TYPE_PREFIX, 32690) +HANDLE_BAT(APINT_TYPE_PREFIX, 32691) +HANDLE_BAT(APINT_TYPE_PREFIX, 32692) +HANDLE_BAT(APINT_TYPE_PREFIX, 32693) +HANDLE_BAT(APINT_TYPE_PREFIX, 32694) +HANDLE_BAT(APINT_TYPE_PREFIX, 32695) +HANDLE_BAT(APINT_TYPE_PREFIX, 32696) +HANDLE_BAT(APINT_TYPE_PREFIX, 32697) +HANDLE_BAT(APINT_TYPE_PREFIX, 32698) +HANDLE_BAT(APINT_TYPE_PREFIX, 32699) +HANDLE_BAT(APINT_TYPE_PREFIX, 32700) +HANDLE_BAT(APINT_TYPE_PREFIX, 32701) +HANDLE_BAT(APINT_TYPE_PREFIX, 32702) +HANDLE_BAT(APINT_TYPE_PREFIX, 32703) +HANDLE_BAT(APINT_TYPE_PREFIX, 32704) +HANDLE_BAT(APINT_TYPE_PREFIX, 32705) +HANDLE_BAT(APINT_TYPE_PREFIX, 32706) +HANDLE_BAT(APINT_TYPE_PREFIX, 32707) +HANDLE_BAT(APINT_TYPE_PREFIX, 32708) +HANDLE_BAT(APINT_TYPE_PREFIX, 32709) +HANDLE_BAT(APINT_TYPE_PREFIX, 32710) +HANDLE_BAT(APINT_TYPE_PREFIX, 32711) +HANDLE_BAT(APINT_TYPE_PREFIX, 32712) +HANDLE_BAT(APINT_TYPE_PREFIX, 32713) +HANDLE_BAT(APINT_TYPE_PREFIX, 32714) +HANDLE_BAT(APINT_TYPE_PREFIX, 32715) +HANDLE_BAT(APINT_TYPE_PREFIX, 32716) +HANDLE_BAT(APINT_TYPE_PREFIX, 32717) +HANDLE_BAT(APINT_TYPE_PREFIX, 32718) +HANDLE_BAT(APINT_TYPE_PREFIX, 32719) +HANDLE_BAT(APINT_TYPE_PREFIX, 32720) +HANDLE_BAT(APINT_TYPE_PREFIX, 32721) +HANDLE_BAT(APINT_TYPE_PREFIX, 32722) +HANDLE_BAT(APINT_TYPE_PREFIX, 32723) +HANDLE_BAT(APINT_TYPE_PREFIX, 32724) +HANDLE_BAT(APINT_TYPE_PREFIX, 32725) +HANDLE_BAT(APINT_TYPE_PREFIX, 32726) +HANDLE_BAT(APINT_TYPE_PREFIX, 32727) +HANDLE_BAT(APINT_TYPE_PREFIX, 32728) +HANDLE_BAT(APINT_TYPE_PREFIX, 32729) +HANDLE_BAT(APINT_TYPE_PREFIX, 32730) +HANDLE_BAT(APINT_TYPE_PREFIX, 32731) +HANDLE_BAT(APINT_TYPE_PREFIX, 32732) +HANDLE_BAT(APINT_TYPE_PREFIX, 32733) +HANDLE_BAT(APINT_TYPE_PREFIX, 32734) +HANDLE_BAT(APINT_TYPE_PREFIX, 32735) +HANDLE_BAT(APINT_TYPE_PREFIX, 32736) +HANDLE_BAT(APINT_TYPE_PREFIX, 32737) +HANDLE_BAT(APINT_TYPE_PREFIX, 32738) +HANDLE_BAT(APINT_TYPE_PREFIX, 32739) +HANDLE_BAT(APINT_TYPE_PREFIX, 32740) +HANDLE_BAT(APINT_TYPE_PREFIX, 32741) +HANDLE_BAT(APINT_TYPE_PREFIX, 32742) +HANDLE_BAT(APINT_TYPE_PREFIX, 32743) +HANDLE_BAT(APINT_TYPE_PREFIX, 32744) +HANDLE_BAT(APINT_TYPE_PREFIX, 32745) +HANDLE_BAT(APINT_TYPE_PREFIX, 32746) +HANDLE_BAT(APINT_TYPE_PREFIX, 32747) +HANDLE_BAT(APINT_TYPE_PREFIX, 32748) +HANDLE_BAT(APINT_TYPE_PREFIX, 32749) +HANDLE_BAT(APINT_TYPE_PREFIX, 32750) +HANDLE_BAT(APINT_TYPE_PREFIX, 32751) +HANDLE_BAT(APINT_TYPE_PREFIX, 32752) +HANDLE_BAT(APINT_TYPE_PREFIX, 32753) +HANDLE_BAT(APINT_TYPE_PREFIX, 32754) +HANDLE_BAT(APINT_TYPE_PREFIX, 32755) +HANDLE_BAT(APINT_TYPE_PREFIX, 32756) +HANDLE_BAT(APINT_TYPE_PREFIX, 32757) +HANDLE_BAT(APINT_TYPE_PREFIX, 32758) +HANDLE_BAT(APINT_TYPE_PREFIX, 32759) +HANDLE_BAT(APINT_TYPE_PREFIX, 32760) +HANDLE_BAT(APINT_TYPE_PREFIX, 32761) +HANDLE_BAT(APINT_TYPE_PREFIX, 32762) +HANDLE_BAT(APINT_TYPE_PREFIX, 32763) +HANDLE_BAT(APINT_TYPE_PREFIX, 32764) +HANDLE_BAT(APINT_TYPE_PREFIX, 32765) +HANDLE_BAT(APINT_TYPE_PREFIX, 32766) +HANDLE_BAT(APINT_TYPE_PREFIX, 32767) +HANDLE_BAT(APINT_TYPE_PREFIX, 32768) +#endif +#endif + diff --git a/vitis/v2021_2/etc/autopilot_ssdm_bits.h b/vitis/v2021_2/etc/autopilot_ssdm_bits.h new file mode 100755 index 00000000..f80c6050 --- /dev/null +++ b/vitis/v2021_2/etc/autopilot_ssdm_bits.h @@ -0,0 +1,359 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* autopilot_ssdm_bits.h */ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + + +#ifndef _AUTOPILOT_SSDM_BITS_H_ +#define _AUTOPILOT_SSDM_BITS_H_ + +#ifdef __STRICT_ANSI__ +#define typeof __typeof__ +#endif + +#ifndef AP_ASSERT +#ifndef AESL_SYN +# include +# define AP_ASSERT(cond, msg) assert(cond && msg) +#else +# define AP_ASSERT(cond, msg) +#endif +#endif + +#ifndef AESL_SYN +#include +#endif + +#ifdef __USE_AP_INT__ +# define _ssdm_op_SetBit(X, Bit, Repl) X[Bit] = Repl +# define _ssdm_op_GetBit(X, Bit) X[Bit] +# define _ssdm_op_GET_RANGE(V, u, l) (V.range(u, l)) +# define _ssdm_op_SET_RANGE(V, u, l, x) (V.range(u, l) = x) + +#else + + +# define _ssdm_op_GET_RANGE(V, u, l) _ssdm_op_GetRange(V, u, l) +# define _ssdm_op_SET_RANGE(V, u, l, x) _ssdm_op_SetRange(V, u, l, x) + + +#ifdef USE_SSDM_BITOP +# define __builtin_bit_concat _ssdm_op_bit_concat +# define __builtin_bit_select _ssdm_op_bit_select +# define __builtin_bit_set _ssdm_op_bit_set +# define __builtin_bit_part_select _ssdm_op_bit_part_select +# define __builtin_bit_part_set _ssdm_op_bit_part_set +#endif + +#define _ssdm_op_bitwidthof(TORV) (__bitwidthof__(typeof(TORV))) + +/* -- Concatination ----------------*/ +#define _ssdm_op_Concat(X, Y) ({ \ + unsigned int __attribute__((bitwidth(__bitwidthof__(X)+__bitwidthof__(Y)))) __R__; \ + unsigned int __attribute__((bitwidth(__bitwidthof__(X)))) __X2__ = X; \ + unsigned int __attribute__((bitwidth(__bitwidthof__(Y)))) __Y2__ = Y; \ + __builtin_bit_concat((void*)(&__R__), (void*)(&__X2__), (void*)(&__Y2__)); \ + __R__; \ +}) + + +/* -- Bit get/set ----------------*/ +#define _ssdm_op_GetBit(Val, Bit) ({ \ + AP_ASSERT((Bit >= 0 && Bit <(_ssdm_op_bitwidthof(Val))), \ + "Bit select out of range"); \ + typeof(Val) __Val2__ = Val; \ + typeof(Val) __Result__ = 0; \ + __builtin_bit_part_select((void*)(&__Result__), (void*)(&__Val2__), Bit, Bit); \ + !!__Result__; \ +}) + +#define _ssdm_op_SetBit(Val, Bit, Repl) ({ \ + AP_ASSERT((Bit >= 0 && Bit < (_ssdm_op_bitwidthof(Val))),\ + "Bit select out of range"); \ + typeof(Val) __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = !!Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), (void*)(&__Repl2__), Bit, Bit); \ + __Result__; \ +}) + + +/* -- Part get/set ----------------*/ + +/* GetRange: Notice that the order of the range indices comply with SystemC + standards. */ +#define _ssdm_op_GetRange(Val, Hi, Lo) ({ \ + AP_ASSERT((Hi >= 0 && Hi < _ssdm_op_bitwidthof(Val) && \ + Lo < _ssdm_op_bitwidthof(Val) && Lo >= 0), \ + "Part select out of range"); \ + unsigned int __attribute__((bitwidth(__bitwidthof__(Val)))) __Result__ = 0; \ + unsigned int __attribute__((bitwidth(__bitwidthof__(Val)))) __Val2__ = Val; \ + __builtin_bit_part_select((void*)(&__Result__), (void*)(&__Val2__), Lo, Hi); \ + __Result__; \ +}) + +/* SetRange: Notice that the order of the range indices comply with SystemC + standards. */ +#define _ssdm_op_SetRange(Val, Hi, Lo, Repl) ({ \ + AP_ASSERT((Hi >= 0 && Hi < _ssdm_op_bitwidthof(Val) && \ + Lo < _ssdm_op_bitwidthof(Val) && Lo >= 0), \ + "Part select out of range"); \ + typeof(Val) __Result__ = 0; \ + typeof(Val) __Val2__ = Val; \ + typeof(Repl) __Repl2__ = Repl; \ + __builtin_bit_part_set((void*)(&__Result__), (void*)(&__Val2__), (void*)(&__Repl2__), Lo, Hi); \ + __Result__; \ +}) + +/* -- Reduce operations ----------------*/ +#ifndef USE_SSDM_BITOP + +# define _ssdm_op_reduce(how, what) ({ \ + typeof(what) __what2__ = what; \ + __builtin_bit_ ## how ## _reduce((void*)(&__what2__)); \ + }) + +#else + +# define _ssdm_op_reduce(how, what) ({ \ + typeof(what) __what2__ = what; \ + _ssdm_op_reduce_ ## how((void*)(&__what2__)); \ + }) + +#endif + +#define _ssdm_op_AndReduce(X) _ssdm_op_reduce(and, X) + +#define _ssdm_op_NAndReduce(X) _ssdm_op_reduce(nand, X) +#define _ssdm_op_NandReduce(X) _ssdm_op_reduce(nand, X) + +#define _ssdm_op_OrReduce(X) _ssdm_op_reduce(or, X) + +#define _ssdm_op_NOrReduce(X) _ssdm_op_reduce(nor, X) +#define _ssdm_op_NorReduce(X) _ssdm_op_reduce(nor, X) + +#define _ssdm_op_XorReduce(X) _ssdm_op_reduce(xor, X) + +#define _ssdm_op_NXorReduce(X) _ssdm_op_reduce(nxor, X) +#define _ssdm_op_NxorReduce(X) _ssdm_op_reduce(nxor, X) + +#define _ssdm_op_XNorReduce(X) _ssdm_op_reduce(nxor, X) +#define _ssdm_op_XnorReduce(X) _ssdm_op_reduce(nxor, X) + + +/* -- String-Integer conversions ----------------*/ +#define _ssdm_op_printBits(val) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + for ( ; __bit__ > 0; --__bit__) { \ + if (_ssdm_op_GetBit(val, __bit__-1)) \ + printf("%c", '1'); \ + else \ + printf("%c", '0'); \ + } \ +} + +#define _ssdm_op_print_apint(val, radix) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + if (radix == 2) { \ + _ssdm_op_printBits(val); \ + } else if (radix != 10) { \ + unsigned char __radix_bit__ = (radix == 16) ? 4 : 3; \ + int __digits__ = __bit__ / __radix_bit__; \ + int __r_bit__ = __bit__ - __digits__ * __radix_bit__; \ + unsigned char __mask__ = radix - 1; \ + unsigned char __no_remainder__ = __r_bit__ == 0; \ + unsigned char __r_mask__ = __mask__ >> (__radix_bit__ - __r_bit__); \ + if (__no_remainder__) __r_mask__ = __mask__; \ + __digits__ -= __no_remainder__; \ + printf("%X", (uint4) ((val >> (__digits__* __radix_bit__)) & __r_mask__)); \ + --__digits__; \ + while (__digits__ >= 0) { \ + printf("%X", (uint4) ((val >> (__digits__* __radix_bit__)) & __mask__)); \ + --__digits__; \ + } \ + } else { \ + char *__buf__ = (char*) malloc(sizeof(char) * __bit__); \ + int __i__ = 0; \ + typeof(val) __X__ = val; \ + if (__X__ < 0) { \ + printf("-"); \ + __X__ = -__X__; \ + } \ + if (__X__ == 0) \ + printf("0"); \ + else { \ + while (__X__) { \ + __buf__[__i__] = __X__ % 10; \ + __X__ /= 10; \ + ++__i__; \ + } \ + while (--__i__ >= 0) { \ + printf("%d", __buf__[__i__]); \ + } \ + } \ + free(__buf__); \ + } \ +} + +#define _ssdm_op_fprintBits(fileout, val) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + for ( ; __bit__ > 0; --__bit__) { \ + if (_ssdm_op_GetBit(val, __bit__-1)) \ + fprintf(fileout, "%c", (unsigned char)'1'); \ + else \ + fprintf(fileout, "%c", (unsigned char)'0'); \ + } \ +} + +#define _ssdm_op_fprint_apint(fileout, val, radix) { \ + int __bit__ = _ssdm_op_bitwidthof(val); \ + if (radix == 2) { \ + _ssdm_op_fprintBits(fileout, val); \ + } else if (radix != 10) { \ + unsigned char __radix_bit__ = (radix == 16) ? 4 : 3; \ + int __digits__ = __bit__ / __radix_bit__; \ + int __r_bit__ = __bit__ - __digits__ * __radix_bit__; \ + unsigned char __mask__ = radix - 1; \ + unsigned char __no_remainder__ = __r_bit__ == 0; \ + unsigned char __r_mask__ = __mask__ >> (__radix_bit__ - __r_bit__); \ + if (__no_remainder__) __r_mask__ = __mask__; \ + __digits__ -= __no_remainder__; \ + fprintf(fileout, "%X", (uint4) ((val >> (__digits__ * __radix_bit__))& __r_mask__)); \ + --__digits__; \ + while (__digits__ >= 0) { \ + fprintf(fileout, "%X", (uint4) ((val >> (__digits__* __radix_bit__)) & __mask__)); \ + --__digits__; \ + } \ + } else { \ + char *__buf__ = (char*) malloc(sizeof(char) * __bit__); \ + int __i__ = 0; \ + typeof(val) __X__ = val; \ + if (__X__ < 0) { \ + __X__ = -__X__; \ + fprintf(fileout,"-"); \ + } \ + if (__X__ == 0) \ + fprintf(fileout, "0");\ + else { \ + while (__X__) { \ + __buf__[__i__] = __X__ % 10; \ + __X__ /= 10; \ + ++__i__; \ + } \ + while (--__i__ >= 0) { \ + fprintf(fileout, "%d", __buf__[__i__]); \ + } \ + } \ + free(__buf__); \ + } \ +} + +#define _ssdm_op_sscan_hex_apint(str, bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__ = 0; \ + int __base__ = 0, __len__ = (bits + 3) / 4; \ + int __real_len__; \ + if (str[0] == '-') __base__ += 1; \ + if (str[__base__] == '0' && (str[__base__ + 1] == 'x' || str[__base__ + 1] == 'X')) __base__ += 2; \ + __real_len__ = __base__; \ + while (str[__real_len__] != '\0') ++__real_len__; \ + if (__real_len__ > __base__+__len__+1) { \ + __base__ = __real_len__ - __len__; \ + } \ + __len__ += __base__; \ + while (__base__ < __len__) { \ + int __num__ = 0; \ + if (str[__base__] == '\0') break; \ + if (str[__base__] >= '0' && str[__base__] <= '9') \ + __num__ = str[__base__] - '0'; \ + else if (str[__base__] >= 'A' && str[__base__] <= 'Z') \ + __num__ = str[__base__] - 'A' + 10 ; \ + else if (str[__base__] >= 'a' && str[__base__] <= 'z') \ + __num__ = str[__base__] - 'a' + 10; \ + __Result__ += __num__; \ + if ((__base__ != __len__-1) && (str[__base__ + 1] != '\0')) \ + __Result__ <<= 4; \ + ++__base__; \ + } \ + if (str[0] == '-') __Result__ = -__Result__; \ + __Result__; \ +}) + + +#define _ssdm_op_bitsFromString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 10); \ + __Result__; \ +}) + +#define _ssdm_op_bitsFromHexString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 16); \ + __Result__; \ +}) + +#define _ssdm_op_bitsFromOctalString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 8); \ + __Result__; \ +}) + +#define _ssdm_op_bitsFromBinaryString(str,bits) ({ \ + int __attribute__((bitwidth(bits))) __Result__; \ + __builtin_bit_from_string((void*)(&__Result__), str, 2); \ + __Result__; \ +}) + +#endif + +#endif + + diff --git a/vitis/v2021_2/etc/autopilot_ssdm_op.h b/vitis/v2021_2/etc/autopilot_ssdm_op.h new file mode 100755 index 00000000..8dda0f07 --- /dev/null +++ b/vitis/v2021_2/etc/autopilot_ssdm_op.h @@ -0,0 +1,464 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* autopilot_ssdm_op.h*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _AUTOPILOT_SSDM_OP_H_ +#define _AUTOPILOT_SSDM_OP_H_ +#if !defined(__OPENCL_C_VERSION__) || ((__clang_major__ == 3) && (__clang_minor__ == 1)) + +#ifdef AESL_SYN +#define ap_wait() _ssdm_op_Wait(1) +#define ap_wait_n(X) { \ + for(unsigned __i__=0; __i__ int1; +typedef ap_int_base<2,true> int2; +typedef ap_int_base<3,true> int3; +typedef ap_int_base<4,true> int4; +typedef ap_int_base<5,true> int5; +typedef ap_int_base<6,true> int6; +typedef ap_int_base<7,true> int7; +typedef ap_int_base<8,true> int8; +typedef ap_int_base<9,true> int9; +typedef ap_int_base<10,true> int10; +typedef ap_int_base<11,true> int11; +typedef ap_int_base<12,true> int12; +typedef ap_int_base<13,true> int13; +typedef ap_int_base<14,true> int14; +typedef ap_int_base<15,true> int15; +typedef ap_int_base<16,true> int16; +typedef ap_int_base<17,true> int17; +typedef ap_int_base<18,true> int18; +typedef ap_int_base<19,true> int19; +typedef ap_int_base<20,true> int20; +typedef ap_int_base<21,true> int21; +typedef ap_int_base<22,true> int22; +typedef ap_int_base<23,true> int23; +typedef ap_int_base<24,true> int24; +typedef ap_int_base<25,true> int25; +typedef ap_int_base<26,true> int26; +typedef ap_int_base<27,true> int27; +typedef ap_int_base<28,true> int28; +typedef ap_int_base<29,true> int29; +typedef ap_int_base<30,true> int30; +typedef ap_int_base<31,true> int31; +typedef ap_int_base<32,true> int32; +typedef ap_int_base<33,true> int33; +typedef ap_int_base<34,true> int34; +typedef ap_int_base<35,true> int35; +typedef ap_int_base<36,true> int36; +typedef ap_int_base<37,true> int37; +typedef ap_int_base<38,true> int38; +typedef ap_int_base<39,true> int39; +typedef ap_int_base<40,true> int40; +typedef ap_int_base<41,true> int41; +typedef ap_int_base<42,true> int42; +typedef ap_int_base<43,true> int43; +typedef ap_int_base<44,true> int44; +typedef ap_int_base<45,true> int45; +typedef ap_int_base<46,true> int46; +typedef ap_int_base<47,true> int47; +typedef ap_int_base<48,true> int48; +typedef ap_int_base<49,true> int49; +typedef ap_int_base<50,true> int50; +typedef ap_int_base<51,true> int51; +typedef ap_int_base<52,true> int52; +typedef ap_int_base<53,true> int53; +typedef ap_int_base<54,true> int54; +typedef ap_int_base<55,true> int55; +typedef ap_int_base<56,true> int56; +typedef ap_int_base<57,true> int57; +typedef ap_int_base<58,true> int58; +typedef ap_int_base<59,true> int59; +typedef ap_int_base<60,true> int60; +typedef ap_int_base<61,true> int61; +typedef ap_int_base<62,true> int62; +typedef ap_int_base<63,true> int63; +typedef ap_int_base<64,true> int64; +typedef ap_int_base<65,true> int65; +typedef ap_int_base<66,true> int66; +typedef ap_int_base<67,true> int67; +typedef ap_int_base<68,true> int68; +typedef ap_int_base<69,true> int69; +typedef ap_int_base<70,true> int70; +typedef ap_int_base<71,true> int71; +typedef ap_int_base<72,true> int72; +typedef ap_int_base<73,true> int73; +typedef ap_int_base<74,true> int74; +typedef ap_int_base<75,true> int75; +typedef ap_int_base<76,true> int76; +typedef ap_int_base<77,true> int77; +typedef ap_int_base<78,true> int78; +typedef ap_int_base<79,true> int79; +typedef ap_int_base<80,true> int80; +typedef ap_int_base<81,true> int81; +typedef ap_int_base<82,true> int82; +typedef ap_int_base<83,true> int83; +typedef ap_int_base<84,true> int84; +typedef ap_int_base<85,true> int85; +typedef ap_int_base<86,true> int86; +typedef ap_int_base<87,true> int87; +typedef ap_int_base<88,true> int88; +typedef ap_int_base<89,true> int89; +typedef ap_int_base<90,true> int90; +typedef ap_int_base<91,true> int91; +typedef ap_int_base<92,true> int92; +typedef ap_int_base<93,true> int93; +typedef ap_int_base<94,true> int94; +typedef ap_int_base<95,true> int95; +typedef ap_int_base<96,true> int96; +typedef ap_int_base<97,true> int97; +typedef ap_int_base<98,true> int98; +typedef ap_int_base<99,true> int99; +typedef ap_int_base<100,true> int100; +typedef ap_int_base<101,true> int101; +typedef ap_int_base<102,true> int102; +typedef ap_int_base<103,true> int103; +typedef ap_int_base<104,true> int104; +typedef ap_int_base<105,true> int105; +typedef ap_int_base<106,true> int106; +typedef ap_int_base<107,true> int107; +typedef ap_int_base<108,true> int108; +typedef ap_int_base<109,true> int109; +typedef ap_int_base<110,true> int110; +typedef ap_int_base<111,true> int111; +typedef ap_int_base<112,true> int112; +typedef ap_int_base<113,true> int113; +typedef ap_int_base<114,true> int114; +typedef ap_int_base<115,true> int115; +typedef ap_int_base<116,true> int116; +typedef ap_int_base<117,true> int117; +typedef ap_int_base<118,true> int118; +typedef ap_int_base<119,true> int119; +typedef ap_int_base<120,true> int120; +typedef ap_int_base<121,true> int121; +typedef ap_int_base<122,true> int122; +typedef ap_int_base<123,true> int123; +typedef ap_int_base<124,true> int124; +typedef ap_int_base<125,true> int125; +typedef ap_int_base<126,true> int126; +typedef ap_int_base<127,true> int127; +typedef ap_int_base<128,true> int128; +typedef ap_int_base<129,true> int129; +typedef ap_int_base<130,true> int130; +typedef ap_int_base<131,true> int131; +typedef ap_int_base<132,true> int132; +typedef ap_int_base<133,true> int133; +typedef ap_int_base<134,true> int134; +typedef ap_int_base<135,true> int135; +typedef ap_int_base<136,true> int136; +typedef ap_int_base<137,true> int137; +typedef ap_int_base<138,true> int138; +typedef ap_int_base<139,true> int139; +typedef ap_int_base<140,true> int140; +typedef ap_int_base<141,true> int141; +typedef ap_int_base<142,true> int142; +typedef ap_int_base<143,true> int143; +typedef ap_int_base<144,true> int144; +typedef ap_int_base<145,true> int145; +typedef ap_int_base<146,true> int146; +typedef ap_int_base<147,true> int147; +typedef ap_int_base<148,true> int148; +typedef ap_int_base<149,true> int149; +typedef ap_int_base<150,true> int150; +typedef ap_int_base<151,true> int151; +typedef ap_int_base<152,true> int152; +typedef ap_int_base<153,true> int153; +typedef ap_int_base<154,true> int154; +typedef ap_int_base<155,true> int155; +typedef ap_int_base<156,true> int156; +typedef ap_int_base<157,true> int157; +typedef ap_int_base<158,true> int158; +typedef ap_int_base<159,true> int159; +typedef ap_int_base<160,true> int160; +typedef ap_int_base<161,true> int161; +typedef ap_int_base<162,true> int162; +typedef ap_int_base<163,true> int163; +typedef ap_int_base<164,true> int164; +typedef ap_int_base<165,true> int165; +typedef ap_int_base<166,true> int166; +typedef ap_int_base<167,true> int167; +typedef ap_int_base<168,true> int168; +typedef ap_int_base<169,true> int169; +typedef ap_int_base<170,true> int170; +typedef ap_int_base<171,true> int171; +typedef ap_int_base<172,true> int172; +typedef ap_int_base<173,true> int173; +typedef ap_int_base<174,true> int174; +typedef ap_int_base<175,true> int175; +typedef ap_int_base<176,true> int176; +typedef ap_int_base<177,true> int177; +typedef ap_int_base<178,true> int178; +typedef ap_int_base<179,true> int179; +typedef ap_int_base<180,true> int180; +typedef ap_int_base<181,true> int181; +typedef ap_int_base<182,true> int182; +typedef ap_int_base<183,true> int183; +typedef ap_int_base<184,true> int184; +typedef ap_int_base<185,true> int185; +typedef ap_int_base<186,true> int186; +typedef ap_int_base<187,true> int187; +typedef ap_int_base<188,true> int188; +typedef ap_int_base<189,true> int189; +typedef ap_int_base<190,true> int190; +typedef ap_int_base<191,true> int191; +typedef ap_int_base<192,true> int192; +typedef ap_int_base<193,true> int193; +typedef ap_int_base<194,true> int194; +typedef ap_int_base<195,true> int195; +typedef ap_int_base<196,true> int196; +typedef ap_int_base<197,true> int197; +typedef ap_int_base<198,true> int198; +typedef ap_int_base<199,true> int199; +typedef ap_int_base<200,true> int200; +typedef ap_int_base<201,true> int201; +typedef ap_int_base<202,true> int202; +typedef ap_int_base<203,true> int203; +typedef ap_int_base<204,true> int204; +typedef ap_int_base<205,true> int205; +typedef ap_int_base<206,true> int206; +typedef ap_int_base<207,true> int207; +typedef ap_int_base<208,true> int208; +typedef ap_int_base<209,true> int209; +typedef ap_int_base<210,true> int210; +typedef ap_int_base<211,true> int211; +typedef ap_int_base<212,true> int212; +typedef ap_int_base<213,true> int213; +typedef ap_int_base<214,true> int214; +typedef ap_int_base<215,true> int215; +typedef ap_int_base<216,true> int216; +typedef ap_int_base<217,true> int217; +typedef ap_int_base<218,true> int218; +typedef ap_int_base<219,true> int219; +typedef ap_int_base<220,true> int220; +typedef ap_int_base<221,true> int221; +typedef ap_int_base<222,true> int222; +typedef ap_int_base<223,true> int223; +typedef ap_int_base<224,true> int224; +typedef ap_int_base<225,true> int225; +typedef ap_int_base<226,true> int226; +typedef ap_int_base<227,true> int227; +typedef ap_int_base<228,true> int228; +typedef ap_int_base<229,true> int229; +typedef ap_int_base<230,true> int230; +typedef ap_int_base<231,true> int231; +typedef ap_int_base<232,true> int232; +typedef ap_int_base<233,true> int233; +typedef ap_int_base<234,true> int234; +typedef ap_int_base<235,true> int235; +typedef ap_int_base<236,true> int236; +typedef ap_int_base<237,true> int237; +typedef ap_int_base<238,true> int238; +typedef ap_int_base<239,true> int239; +typedef ap_int_base<240,true> int240; +typedef ap_int_base<241,true> int241; +typedef ap_int_base<242,true> int242; +typedef ap_int_base<243,true> int243; +typedef ap_int_base<244,true> int244; +typedef ap_int_base<245,true> int245; +typedef ap_int_base<246,true> int246; +typedef ap_int_base<247,true> int247; +typedef ap_int_base<248,true> int248; +typedef ap_int_base<249,true> int249; +typedef ap_int_base<250,true> int250; +typedef ap_int_base<251,true> int251; +typedef ap_int_base<252,true> int252; +typedef ap_int_base<253,true> int253; +typedef ap_int_base<254,true> int254; +typedef ap_int_base<255,true> int255; +typedef ap_int_base<256,true> int256; +typedef ap_int_base<257,true> int257; +typedef ap_int_base<258,true> int258; +typedef ap_int_base<259,true> int259; +typedef ap_int_base<260,true> int260; +typedef ap_int_base<261,true> int261; +typedef ap_int_base<262,true> int262; +typedef ap_int_base<263,true> int263; +typedef ap_int_base<264,true> int264; +typedef ap_int_base<265,true> int265; +typedef ap_int_base<266,true> int266; +typedef ap_int_base<267,true> int267; +typedef ap_int_base<268,true> int268; +typedef ap_int_base<269,true> int269; +typedef ap_int_base<270,true> int270; +typedef ap_int_base<271,true> int271; +typedef ap_int_base<272,true> int272; +typedef ap_int_base<273,true> int273; +typedef ap_int_base<274,true> int274; +typedef ap_int_base<275,true> int275; +typedef ap_int_base<276,true> int276; +typedef ap_int_base<277,true> int277; +typedef ap_int_base<278,true> int278; +typedef ap_int_base<279,true> int279; +typedef ap_int_base<280,true> int280; +typedef ap_int_base<281,true> int281; +typedef ap_int_base<282,true> int282; +typedef ap_int_base<283,true> int283; +typedef ap_int_base<284,true> int284; +typedef ap_int_base<285,true> int285; +typedef ap_int_base<286,true> int286; +typedef ap_int_base<287,true> int287; +typedef ap_int_base<288,true> int288; +typedef ap_int_base<289,true> int289; +typedef ap_int_base<290,true> int290; +typedef ap_int_base<291,true> int291; +typedef ap_int_base<292,true> int292; +typedef ap_int_base<293,true> int293; +typedef ap_int_base<294,true> int294; +typedef ap_int_base<295,true> int295; +typedef ap_int_base<296,true> int296; +typedef ap_int_base<297,true> int297; +typedef ap_int_base<298,true> int298; +typedef ap_int_base<299,true> int299; +typedef ap_int_base<300,true> int300; +typedef ap_int_base<301,true> int301; +typedef ap_int_base<302,true> int302; +typedef ap_int_base<303,true> int303; +typedef ap_int_base<304,true> int304; +typedef ap_int_base<305,true> int305; +typedef ap_int_base<306,true> int306; +typedef ap_int_base<307,true> int307; +typedef ap_int_base<308,true> int308; +typedef ap_int_base<309,true> int309; +typedef ap_int_base<310,true> int310; +typedef ap_int_base<311,true> int311; +typedef ap_int_base<312,true> int312; +typedef ap_int_base<313,true> int313; +typedef ap_int_base<314,true> int314; +typedef ap_int_base<315,true> int315; +typedef ap_int_base<316,true> int316; +typedef ap_int_base<317,true> int317; +typedef ap_int_base<318,true> int318; +typedef ap_int_base<319,true> int319; +typedef ap_int_base<320,true> int320; +typedef ap_int_base<321,true> int321; +typedef ap_int_base<322,true> int322; +typedef ap_int_base<323,true> int323; +typedef ap_int_base<324,true> int324; +typedef ap_int_base<325,true> int325; +typedef ap_int_base<326,true> int326; +typedef ap_int_base<327,true> int327; +typedef ap_int_base<328,true> int328; +typedef ap_int_base<329,true> int329; +typedef ap_int_base<330,true> int330; +typedef ap_int_base<331,true> int331; +typedef ap_int_base<332,true> int332; +typedef ap_int_base<333,true> int333; +typedef ap_int_base<334,true> int334; +typedef ap_int_base<335,true> int335; +typedef ap_int_base<336,true> int336; +typedef ap_int_base<337,true> int337; +typedef ap_int_base<338,true> int338; +typedef ap_int_base<339,true> int339; +typedef ap_int_base<340,true> int340; +typedef ap_int_base<341,true> int341; +typedef ap_int_base<342,true> int342; +typedef ap_int_base<343,true> int343; +typedef ap_int_base<344,true> int344; +typedef ap_int_base<345,true> int345; +typedef ap_int_base<346,true> int346; +typedef ap_int_base<347,true> int347; +typedef ap_int_base<348,true> int348; +typedef ap_int_base<349,true> int349; +typedef ap_int_base<350,true> int350; +typedef ap_int_base<351,true> int351; +typedef ap_int_base<352,true> int352; +typedef ap_int_base<353,true> int353; +typedef ap_int_base<354,true> int354; +typedef ap_int_base<355,true> int355; +typedef ap_int_base<356,true> int356; +typedef ap_int_base<357,true> int357; +typedef ap_int_base<358,true> int358; +typedef ap_int_base<359,true> int359; +typedef ap_int_base<360,true> int360; +typedef ap_int_base<361,true> int361; +typedef ap_int_base<362,true> int362; +typedef ap_int_base<363,true> int363; +typedef ap_int_base<364,true> int364; +typedef ap_int_base<365,true> int365; +typedef ap_int_base<366,true> int366; +typedef ap_int_base<367,true> int367; +typedef ap_int_base<368,true> int368; +typedef ap_int_base<369,true> int369; +typedef ap_int_base<370,true> int370; +typedef ap_int_base<371,true> int371; +typedef ap_int_base<372,true> int372; +typedef ap_int_base<373,true> int373; +typedef ap_int_base<374,true> int374; +typedef ap_int_base<375,true> int375; +typedef ap_int_base<376,true> int376; +typedef ap_int_base<377,true> int377; +typedef ap_int_base<378,true> int378; +typedef ap_int_base<379,true> int379; +typedef ap_int_base<380,true> int380; +typedef ap_int_base<381,true> int381; +typedef ap_int_base<382,true> int382; +typedef ap_int_base<383,true> int383; +typedef ap_int_base<384,true> int384; +typedef ap_int_base<385,true> int385; +typedef ap_int_base<386,true> int386; +typedef ap_int_base<387,true> int387; +typedef ap_int_base<388,true> int388; +typedef ap_int_base<389,true> int389; +typedef ap_int_base<390,true> int390; +typedef ap_int_base<391,true> int391; +typedef ap_int_base<392,true> int392; +typedef ap_int_base<393,true> int393; +typedef ap_int_base<394,true> int394; +typedef ap_int_base<395,true> int395; +typedef ap_int_base<396,true> int396; +typedef ap_int_base<397,true> int397; +typedef ap_int_base<398,true> int398; +typedef ap_int_base<399,true> int399; +typedef ap_int_base<400,true> int400; +typedef ap_int_base<401,true> int401; +typedef ap_int_base<402,true> int402; +typedef ap_int_base<403,true> int403; +typedef ap_int_base<404,true> int404; +typedef ap_int_base<405,true> int405; +typedef ap_int_base<406,true> int406; +typedef ap_int_base<407,true> int407; +typedef ap_int_base<408,true> int408; +typedef ap_int_base<409,true> int409; +typedef ap_int_base<410,true> int410; +typedef ap_int_base<411,true> int411; +typedef ap_int_base<412,true> int412; +typedef ap_int_base<413,true> int413; +typedef ap_int_base<414,true> int414; +typedef ap_int_base<415,true> int415; +typedef ap_int_base<416,true> int416; +typedef ap_int_base<417,true> int417; +typedef ap_int_base<418,true> int418; +typedef ap_int_base<419,true> int419; +typedef ap_int_base<420,true> int420; +typedef ap_int_base<421,true> int421; +typedef ap_int_base<422,true> int422; +typedef ap_int_base<423,true> int423; +typedef ap_int_base<424,true> int424; +typedef ap_int_base<425,true> int425; +typedef ap_int_base<426,true> int426; +typedef ap_int_base<427,true> int427; +typedef ap_int_base<428,true> int428; +typedef ap_int_base<429,true> int429; +typedef ap_int_base<430,true> int430; +typedef ap_int_base<431,true> int431; +typedef ap_int_base<432,true> int432; +typedef ap_int_base<433,true> int433; +typedef ap_int_base<434,true> int434; +typedef ap_int_base<435,true> int435; +typedef ap_int_base<436,true> int436; +typedef ap_int_base<437,true> int437; +typedef ap_int_base<438,true> int438; +typedef ap_int_base<439,true> int439; +typedef ap_int_base<440,true> int440; +typedef ap_int_base<441,true> int441; +typedef ap_int_base<442,true> int442; +typedef ap_int_base<443,true> int443; +typedef ap_int_base<444,true> int444; +typedef ap_int_base<445,true> int445; +typedef ap_int_base<446,true> int446; +typedef ap_int_base<447,true> int447; +typedef ap_int_base<448,true> int448; +typedef ap_int_base<449,true> int449; +typedef ap_int_base<450,true> int450; +typedef ap_int_base<451,true> int451; +typedef ap_int_base<452,true> int452; +typedef ap_int_base<453,true> int453; +typedef ap_int_base<454,true> int454; +typedef ap_int_base<455,true> int455; +typedef ap_int_base<456,true> int456; +typedef ap_int_base<457,true> int457; +typedef ap_int_base<458,true> int458; +typedef ap_int_base<459,true> int459; +typedef ap_int_base<460,true> int460; +typedef ap_int_base<461,true> int461; +typedef ap_int_base<462,true> int462; +typedef ap_int_base<463,true> int463; +typedef ap_int_base<464,true> int464; +typedef ap_int_base<465,true> int465; +typedef ap_int_base<466,true> int466; +typedef ap_int_base<467,true> int467; +typedef ap_int_base<468,true> int468; +typedef ap_int_base<469,true> int469; +typedef ap_int_base<470,true> int470; +typedef ap_int_base<471,true> int471; +typedef ap_int_base<472,true> int472; +typedef ap_int_base<473,true> int473; +typedef ap_int_base<474,true> int474; +typedef ap_int_base<475,true> int475; +typedef ap_int_base<476,true> int476; +typedef ap_int_base<477,true> int477; +typedef ap_int_base<478,true> int478; +typedef ap_int_base<479,true> int479; +typedef ap_int_base<480,true> int480; +typedef ap_int_base<481,true> int481; +typedef ap_int_base<482,true> int482; +typedef ap_int_base<483,true> int483; +typedef ap_int_base<484,true> int484; +typedef ap_int_base<485,true> int485; +typedef ap_int_base<486,true> int486; +typedef ap_int_base<487,true> int487; +typedef ap_int_base<488,true> int488; +typedef ap_int_base<489,true> int489; +typedef ap_int_base<490,true> int490; +typedef ap_int_base<491,true> int491; +typedef ap_int_base<492,true> int492; +typedef ap_int_base<493,true> int493; +typedef ap_int_base<494,true> int494; +typedef ap_int_base<495,true> int495; +typedef ap_int_base<496,true> int496; +typedef ap_int_base<497,true> int497; +typedef ap_int_base<498,true> int498; +typedef ap_int_base<499,true> int499; +typedef ap_int_base<500,true> int500; +typedef ap_int_base<501,true> int501; +typedef ap_int_base<502,true> int502; +typedef ap_int_base<503,true> int503; +typedef ap_int_base<504,true> int504; +typedef ap_int_base<505,true> int505; +typedef ap_int_base<506,true> int506; +typedef ap_int_base<507,true> int507; +typedef ap_int_base<508,true> int508; +typedef ap_int_base<509,true> int509; +typedef ap_int_base<510,true> int510; +typedef ap_int_base<511,true> int511; +typedef ap_int_base<512,true> int512; +typedef ap_int_base<513,true> int513; +typedef ap_int_base<514,true> int514; +typedef ap_int_base<515,true> int515; +typedef ap_int_base<516,true> int516; +typedef ap_int_base<517,true> int517; +typedef ap_int_base<518,true> int518; +typedef ap_int_base<519,true> int519; +typedef ap_int_base<520,true> int520; +typedef ap_int_base<521,true> int521; +typedef ap_int_base<522,true> int522; +typedef ap_int_base<523,true> int523; +typedef ap_int_base<524,true> int524; +typedef ap_int_base<525,true> int525; +typedef ap_int_base<526,true> int526; +typedef ap_int_base<527,true> int527; +typedef ap_int_base<528,true> int528; +typedef ap_int_base<529,true> int529; +typedef ap_int_base<530,true> int530; +typedef ap_int_base<531,true> int531; +typedef ap_int_base<532,true> int532; +typedef ap_int_base<533,true> int533; +typedef ap_int_base<534,true> int534; +typedef ap_int_base<535,true> int535; +typedef ap_int_base<536,true> int536; +typedef ap_int_base<537,true> int537; +typedef ap_int_base<538,true> int538; +typedef ap_int_base<539,true> int539; +typedef ap_int_base<540,true> int540; +typedef ap_int_base<541,true> int541; +typedef ap_int_base<542,true> int542; +typedef ap_int_base<543,true> int543; +typedef ap_int_base<544,true> int544; +typedef ap_int_base<545,true> int545; +typedef ap_int_base<546,true> int546; +typedef ap_int_base<547,true> int547; +typedef ap_int_base<548,true> int548; +typedef ap_int_base<549,true> int549; +typedef ap_int_base<550,true> int550; +typedef ap_int_base<551,true> int551; +typedef ap_int_base<552,true> int552; +typedef ap_int_base<553,true> int553; +typedef ap_int_base<554,true> int554; +typedef ap_int_base<555,true> int555; +typedef ap_int_base<556,true> int556; +typedef ap_int_base<557,true> int557; +typedef ap_int_base<558,true> int558; +typedef ap_int_base<559,true> int559; +typedef ap_int_base<560,true> int560; +typedef ap_int_base<561,true> int561; +typedef ap_int_base<562,true> int562; +typedef ap_int_base<563,true> int563; +typedef ap_int_base<564,true> int564; +typedef ap_int_base<565,true> int565; +typedef ap_int_base<566,true> int566; +typedef ap_int_base<567,true> int567; +typedef ap_int_base<568,true> int568; +typedef ap_int_base<569,true> int569; +typedef ap_int_base<570,true> int570; +typedef ap_int_base<571,true> int571; +typedef ap_int_base<572,true> int572; +typedef ap_int_base<573,true> int573; +typedef ap_int_base<574,true> int574; +typedef ap_int_base<575,true> int575; +typedef ap_int_base<576,true> int576; +typedef ap_int_base<577,true> int577; +typedef ap_int_base<578,true> int578; +typedef ap_int_base<579,true> int579; +typedef ap_int_base<580,true> int580; +typedef ap_int_base<581,true> int581; +typedef ap_int_base<582,true> int582; +typedef ap_int_base<583,true> int583; +typedef ap_int_base<584,true> int584; +typedef ap_int_base<585,true> int585; +typedef ap_int_base<586,true> int586; +typedef ap_int_base<587,true> int587; +typedef ap_int_base<588,true> int588; +typedef ap_int_base<589,true> int589; +typedef ap_int_base<590,true> int590; +typedef ap_int_base<591,true> int591; +typedef ap_int_base<592,true> int592; +typedef ap_int_base<593,true> int593; +typedef ap_int_base<594,true> int594; +typedef ap_int_base<595,true> int595; +typedef ap_int_base<596,true> int596; +typedef ap_int_base<597,true> int597; +typedef ap_int_base<598,true> int598; +typedef ap_int_base<599,true> int599; +typedef ap_int_base<600,true> int600; +typedef ap_int_base<601,true> int601; +typedef ap_int_base<602,true> int602; +typedef ap_int_base<603,true> int603; +typedef ap_int_base<604,true> int604; +typedef ap_int_base<605,true> int605; +typedef ap_int_base<606,true> int606; +typedef ap_int_base<607,true> int607; +typedef ap_int_base<608,true> int608; +typedef ap_int_base<609,true> int609; +typedef ap_int_base<610,true> int610; +typedef ap_int_base<611,true> int611; +typedef ap_int_base<612,true> int612; +typedef ap_int_base<613,true> int613; +typedef ap_int_base<614,true> int614; +typedef ap_int_base<615,true> int615; +typedef ap_int_base<616,true> int616; +typedef ap_int_base<617,true> int617; +typedef ap_int_base<618,true> int618; +typedef ap_int_base<619,true> int619; +typedef ap_int_base<620,true> int620; +typedef ap_int_base<621,true> int621; +typedef ap_int_base<622,true> int622; +typedef ap_int_base<623,true> int623; +typedef ap_int_base<624,true> int624; +typedef ap_int_base<625,true> int625; +typedef ap_int_base<626,true> int626; +typedef ap_int_base<627,true> int627; +typedef ap_int_base<628,true> int628; +typedef ap_int_base<629,true> int629; +typedef ap_int_base<630,true> int630; +typedef ap_int_base<631,true> int631; +typedef ap_int_base<632,true> int632; +typedef ap_int_base<633,true> int633; +typedef ap_int_base<634,true> int634; +typedef ap_int_base<635,true> int635; +typedef ap_int_base<636,true> int636; +typedef ap_int_base<637,true> int637; +typedef ap_int_base<638,true> int638; +typedef ap_int_base<639,true> int639; +typedef ap_int_base<640,true> int640; +typedef ap_int_base<641,true> int641; +typedef ap_int_base<642,true> int642; +typedef ap_int_base<643,true> int643; +typedef ap_int_base<644,true> int644; +typedef ap_int_base<645,true> int645; +typedef ap_int_base<646,true> int646; +typedef ap_int_base<647,true> int647; +typedef ap_int_base<648,true> int648; +typedef ap_int_base<649,true> int649; +typedef ap_int_base<650,true> int650; +typedef ap_int_base<651,true> int651; +typedef ap_int_base<652,true> int652; +typedef ap_int_base<653,true> int653; +typedef ap_int_base<654,true> int654; +typedef ap_int_base<655,true> int655; +typedef ap_int_base<656,true> int656; +typedef ap_int_base<657,true> int657; +typedef ap_int_base<658,true> int658; +typedef ap_int_base<659,true> int659; +typedef ap_int_base<660,true> int660; +typedef ap_int_base<661,true> int661; +typedef ap_int_base<662,true> int662; +typedef ap_int_base<663,true> int663; +typedef ap_int_base<664,true> int664; +typedef ap_int_base<665,true> int665; +typedef ap_int_base<666,true> int666; +typedef ap_int_base<667,true> int667; +typedef ap_int_base<668,true> int668; +typedef ap_int_base<669,true> int669; +typedef ap_int_base<670,true> int670; +typedef ap_int_base<671,true> int671; +typedef ap_int_base<672,true> int672; +typedef ap_int_base<673,true> int673; +typedef ap_int_base<674,true> int674; +typedef ap_int_base<675,true> int675; +typedef ap_int_base<676,true> int676; +typedef ap_int_base<677,true> int677; +typedef ap_int_base<678,true> int678; +typedef ap_int_base<679,true> int679; +typedef ap_int_base<680,true> int680; +typedef ap_int_base<681,true> int681; +typedef ap_int_base<682,true> int682; +typedef ap_int_base<683,true> int683; +typedef ap_int_base<684,true> int684; +typedef ap_int_base<685,true> int685; +typedef ap_int_base<686,true> int686; +typedef ap_int_base<687,true> int687; +typedef ap_int_base<688,true> int688; +typedef ap_int_base<689,true> int689; +typedef ap_int_base<690,true> int690; +typedef ap_int_base<691,true> int691; +typedef ap_int_base<692,true> int692; +typedef ap_int_base<693,true> int693; +typedef ap_int_base<694,true> int694; +typedef ap_int_base<695,true> int695; +typedef ap_int_base<696,true> int696; +typedef ap_int_base<697,true> int697; +typedef ap_int_base<698,true> int698; +typedef ap_int_base<699,true> int699; +typedef ap_int_base<700,true> int700; +typedef ap_int_base<701,true> int701; +typedef ap_int_base<702,true> int702; +typedef ap_int_base<703,true> int703; +typedef ap_int_base<704,true> int704; +typedef ap_int_base<705,true> int705; +typedef ap_int_base<706,true> int706; +typedef ap_int_base<707,true> int707; +typedef ap_int_base<708,true> int708; +typedef ap_int_base<709,true> int709; +typedef ap_int_base<710,true> int710; +typedef ap_int_base<711,true> int711; +typedef ap_int_base<712,true> int712; +typedef ap_int_base<713,true> int713; +typedef ap_int_base<714,true> int714; +typedef ap_int_base<715,true> int715; +typedef ap_int_base<716,true> int716; +typedef ap_int_base<717,true> int717; +typedef ap_int_base<718,true> int718; +typedef ap_int_base<719,true> int719; +typedef ap_int_base<720,true> int720; +typedef ap_int_base<721,true> int721; +typedef ap_int_base<722,true> int722; +typedef ap_int_base<723,true> int723; +typedef ap_int_base<724,true> int724; +typedef ap_int_base<725,true> int725; +typedef ap_int_base<726,true> int726; +typedef ap_int_base<727,true> int727; +typedef ap_int_base<728,true> int728; +typedef ap_int_base<729,true> int729; +typedef ap_int_base<730,true> int730; +typedef ap_int_base<731,true> int731; +typedef ap_int_base<732,true> int732; +typedef ap_int_base<733,true> int733; +typedef ap_int_base<734,true> int734; +typedef ap_int_base<735,true> int735; +typedef ap_int_base<736,true> int736; +typedef ap_int_base<737,true> int737; +typedef ap_int_base<738,true> int738; +typedef ap_int_base<739,true> int739; +typedef ap_int_base<740,true> int740; +typedef ap_int_base<741,true> int741; +typedef ap_int_base<742,true> int742; +typedef ap_int_base<743,true> int743; +typedef ap_int_base<744,true> int744; +typedef ap_int_base<745,true> int745; +typedef ap_int_base<746,true> int746; +typedef ap_int_base<747,true> int747; +typedef ap_int_base<748,true> int748; +typedef ap_int_base<749,true> int749; +typedef ap_int_base<750,true> int750; +typedef ap_int_base<751,true> int751; +typedef ap_int_base<752,true> int752; +typedef ap_int_base<753,true> int753; +typedef ap_int_base<754,true> int754; +typedef ap_int_base<755,true> int755; +typedef ap_int_base<756,true> int756; +typedef ap_int_base<757,true> int757; +typedef ap_int_base<758,true> int758; +typedef ap_int_base<759,true> int759; +typedef ap_int_base<760,true> int760; +typedef ap_int_base<761,true> int761; +typedef ap_int_base<762,true> int762; +typedef ap_int_base<763,true> int763; +typedef ap_int_base<764,true> int764; +typedef ap_int_base<765,true> int765; +typedef ap_int_base<766,true> int766; +typedef ap_int_base<767,true> int767; +typedef ap_int_base<768,true> int768; +typedef ap_int_base<769,true> int769; +typedef ap_int_base<770,true> int770; +typedef ap_int_base<771,true> int771; +typedef ap_int_base<772,true> int772; +typedef ap_int_base<773,true> int773; +typedef ap_int_base<774,true> int774; +typedef ap_int_base<775,true> int775; +typedef ap_int_base<776,true> int776; +typedef ap_int_base<777,true> int777; +typedef ap_int_base<778,true> int778; +typedef ap_int_base<779,true> int779; +typedef ap_int_base<780,true> int780; +typedef ap_int_base<781,true> int781; +typedef ap_int_base<782,true> int782; +typedef ap_int_base<783,true> int783; +typedef ap_int_base<784,true> int784; +typedef ap_int_base<785,true> int785; +typedef ap_int_base<786,true> int786; +typedef ap_int_base<787,true> int787; +typedef ap_int_base<788,true> int788; +typedef ap_int_base<789,true> int789; +typedef ap_int_base<790,true> int790; +typedef ap_int_base<791,true> int791; +typedef ap_int_base<792,true> int792; +typedef ap_int_base<793,true> int793; +typedef ap_int_base<794,true> int794; +typedef ap_int_base<795,true> int795; +typedef ap_int_base<796,true> int796; +typedef ap_int_base<797,true> int797; +typedef ap_int_base<798,true> int798; +typedef ap_int_base<799,true> int799; +typedef ap_int_base<800,true> int800; +typedef ap_int_base<801,true> int801; +typedef ap_int_base<802,true> int802; +typedef ap_int_base<803,true> int803; +typedef ap_int_base<804,true> int804; +typedef ap_int_base<805,true> int805; +typedef ap_int_base<806,true> int806; +typedef ap_int_base<807,true> int807; +typedef ap_int_base<808,true> int808; +typedef ap_int_base<809,true> int809; +typedef ap_int_base<810,true> int810; +typedef ap_int_base<811,true> int811; +typedef ap_int_base<812,true> int812; +typedef ap_int_base<813,true> int813; +typedef ap_int_base<814,true> int814; +typedef ap_int_base<815,true> int815; +typedef ap_int_base<816,true> int816; +typedef ap_int_base<817,true> int817; +typedef ap_int_base<818,true> int818; +typedef ap_int_base<819,true> int819; +typedef ap_int_base<820,true> int820; +typedef ap_int_base<821,true> int821; +typedef ap_int_base<822,true> int822; +typedef ap_int_base<823,true> int823; +typedef ap_int_base<824,true> int824; +typedef ap_int_base<825,true> int825; +typedef ap_int_base<826,true> int826; +typedef ap_int_base<827,true> int827; +typedef ap_int_base<828,true> int828; +typedef ap_int_base<829,true> int829; +typedef ap_int_base<830,true> int830; +typedef ap_int_base<831,true> int831; +typedef ap_int_base<832,true> int832; +typedef ap_int_base<833,true> int833; +typedef ap_int_base<834,true> int834; +typedef ap_int_base<835,true> int835; +typedef ap_int_base<836,true> int836; +typedef ap_int_base<837,true> int837; +typedef ap_int_base<838,true> int838; +typedef ap_int_base<839,true> int839; +typedef ap_int_base<840,true> int840; +typedef ap_int_base<841,true> int841; +typedef ap_int_base<842,true> int842; +typedef ap_int_base<843,true> int843; +typedef ap_int_base<844,true> int844; +typedef ap_int_base<845,true> int845; +typedef ap_int_base<846,true> int846; +typedef ap_int_base<847,true> int847; +typedef ap_int_base<848,true> int848; +typedef ap_int_base<849,true> int849; +typedef ap_int_base<850,true> int850; +typedef ap_int_base<851,true> int851; +typedef ap_int_base<852,true> int852; +typedef ap_int_base<853,true> int853; +typedef ap_int_base<854,true> int854; +typedef ap_int_base<855,true> int855; +typedef ap_int_base<856,true> int856; +typedef ap_int_base<857,true> int857; +typedef ap_int_base<858,true> int858; +typedef ap_int_base<859,true> int859; +typedef ap_int_base<860,true> int860; +typedef ap_int_base<861,true> int861; +typedef ap_int_base<862,true> int862; +typedef ap_int_base<863,true> int863; +typedef ap_int_base<864,true> int864; +typedef ap_int_base<865,true> int865; +typedef ap_int_base<866,true> int866; +typedef ap_int_base<867,true> int867; +typedef ap_int_base<868,true> int868; +typedef ap_int_base<869,true> int869; +typedef ap_int_base<870,true> int870; +typedef ap_int_base<871,true> int871; +typedef ap_int_base<872,true> int872; +typedef ap_int_base<873,true> int873; +typedef ap_int_base<874,true> int874; +typedef ap_int_base<875,true> int875; +typedef ap_int_base<876,true> int876; +typedef ap_int_base<877,true> int877; +typedef ap_int_base<878,true> int878; +typedef ap_int_base<879,true> int879; +typedef ap_int_base<880,true> int880; +typedef ap_int_base<881,true> int881; +typedef ap_int_base<882,true> int882; +typedef ap_int_base<883,true> int883; +typedef ap_int_base<884,true> int884; +typedef ap_int_base<885,true> int885; +typedef ap_int_base<886,true> int886; +typedef ap_int_base<887,true> int887; +typedef ap_int_base<888,true> int888; +typedef ap_int_base<889,true> int889; +typedef ap_int_base<890,true> int890; +typedef ap_int_base<891,true> int891; +typedef ap_int_base<892,true> int892; +typedef ap_int_base<893,true> int893; +typedef ap_int_base<894,true> int894; +typedef ap_int_base<895,true> int895; +typedef ap_int_base<896,true> int896; +typedef ap_int_base<897,true> int897; +typedef ap_int_base<898,true> int898; +typedef ap_int_base<899,true> int899; +typedef ap_int_base<900,true> int900; +typedef ap_int_base<901,true> int901; +typedef ap_int_base<902,true> int902; +typedef ap_int_base<903,true> int903; +typedef ap_int_base<904,true> int904; +typedef ap_int_base<905,true> int905; +typedef ap_int_base<906,true> int906; +typedef ap_int_base<907,true> int907; +typedef ap_int_base<908,true> int908; +typedef ap_int_base<909,true> int909; +typedef ap_int_base<910,true> int910; +typedef ap_int_base<911,true> int911; +typedef ap_int_base<912,true> int912; +typedef ap_int_base<913,true> int913; +typedef ap_int_base<914,true> int914; +typedef ap_int_base<915,true> int915; +typedef ap_int_base<916,true> int916; +typedef ap_int_base<917,true> int917; +typedef ap_int_base<918,true> int918; +typedef ap_int_base<919,true> int919; +typedef ap_int_base<920,true> int920; +typedef ap_int_base<921,true> int921; +typedef ap_int_base<922,true> int922; +typedef ap_int_base<923,true> int923; +typedef ap_int_base<924,true> int924; +typedef ap_int_base<925,true> int925; +typedef ap_int_base<926,true> int926; +typedef ap_int_base<927,true> int927; +typedef ap_int_base<928,true> int928; +typedef ap_int_base<929,true> int929; +typedef ap_int_base<930,true> int930; +typedef ap_int_base<931,true> int931; +typedef ap_int_base<932,true> int932; +typedef ap_int_base<933,true> int933; +typedef ap_int_base<934,true> int934; +typedef ap_int_base<935,true> int935; +typedef ap_int_base<936,true> int936; +typedef ap_int_base<937,true> int937; +typedef ap_int_base<938,true> int938; +typedef ap_int_base<939,true> int939; +typedef ap_int_base<940,true> int940; +typedef ap_int_base<941,true> int941; +typedef ap_int_base<942,true> int942; +typedef ap_int_base<943,true> int943; +typedef ap_int_base<944,true> int944; +typedef ap_int_base<945,true> int945; +typedef ap_int_base<946,true> int946; +typedef ap_int_base<947,true> int947; +typedef ap_int_base<948,true> int948; +typedef ap_int_base<949,true> int949; +typedef ap_int_base<950,true> int950; +typedef ap_int_base<951,true> int951; +typedef ap_int_base<952,true> int952; +typedef ap_int_base<953,true> int953; +typedef ap_int_base<954,true> int954; +typedef ap_int_base<955,true> int955; +typedef ap_int_base<956,true> int956; +typedef ap_int_base<957,true> int957; +typedef ap_int_base<958,true> int958; +typedef ap_int_base<959,true> int959; +typedef ap_int_base<960,true> int960; +typedef ap_int_base<961,true> int961; +typedef ap_int_base<962,true> int962; +typedef ap_int_base<963,true> int963; +typedef ap_int_base<964,true> int964; +typedef ap_int_base<965,true> int965; +typedef ap_int_base<966,true> int966; +typedef ap_int_base<967,true> int967; +typedef ap_int_base<968,true> int968; +typedef ap_int_base<969,true> int969; +typedef ap_int_base<970,true> int970; +typedef ap_int_base<971,true> int971; +typedef ap_int_base<972,true> int972; +typedef ap_int_base<973,true> int973; +typedef ap_int_base<974,true> int974; +typedef ap_int_base<975,true> int975; +typedef ap_int_base<976,true> int976; +typedef ap_int_base<977,true> int977; +typedef ap_int_base<978,true> int978; +typedef ap_int_base<979,true> int979; +typedef ap_int_base<980,true> int980; +typedef ap_int_base<981,true> int981; +typedef ap_int_base<982,true> int982; +typedef ap_int_base<983,true> int983; +typedef ap_int_base<984,true> int984; +typedef ap_int_base<985,true> int985; +typedef ap_int_base<986,true> int986; +typedef ap_int_base<987,true> int987; +typedef ap_int_base<988,true> int988; +typedef ap_int_base<989,true> int989; +typedef ap_int_base<990,true> int990; +typedef ap_int_base<991,true> int991; +typedef ap_int_base<992,true> int992; +typedef ap_int_base<993,true> int993; +typedef ap_int_base<994,true> int994; +typedef ap_int_base<995,true> int995; +typedef ap_int_base<996,true> int996; +typedef ap_int_base<997,true> int997; +typedef ap_int_base<998,true> int998; +typedef ap_int_base<999,true> int999; +typedef ap_int_base<1000,true> int1000; +typedef ap_int_base<1001,true> int1001; +typedef ap_int_base<1002,true> int1002; +typedef ap_int_base<1003,true> int1003; +typedef ap_int_base<1004,true> int1004; +typedef ap_int_base<1005,true> int1005; +typedef ap_int_base<1006,true> int1006; +typedef ap_int_base<1007,true> int1007; +typedef ap_int_base<1008,true> int1008; +typedef ap_int_base<1009,true> int1009; +typedef ap_int_base<1010,true> int1010; +typedef ap_int_base<1011,true> int1011; +typedef ap_int_base<1012,true> int1012; +typedef ap_int_base<1013,true> int1013; +typedef ap_int_base<1014,true> int1014; +typedef ap_int_base<1015,true> int1015; +typedef ap_int_base<1016,true> int1016; +typedef ap_int_base<1017,true> int1017; +typedef ap_int_base<1018,true> int1018; +typedef ap_int_base<1019,true> int1019; +typedef ap_int_base<1020,true> int1020; +typedef ap_int_base<1021,true> int1021; +typedef ap_int_base<1022,true> int1022; +typedef ap_int_base<1023,true> int1023; +typedef ap_int_base<1024,true> int1024; +typedef ap_int_base<1,false> uint1; +typedef ap_int_base<2,false> uint2; +typedef ap_int_base<3,false> uint3; +typedef ap_int_base<4,false> uint4; +typedef ap_int_base<5,false> uint5; +typedef ap_int_base<6,false> uint6; +typedef ap_int_base<7,false> uint7; +typedef ap_int_base<8,false> uint8; +typedef ap_int_base<9,false> uint9; +typedef ap_int_base<10,false> uint10; +typedef ap_int_base<11,false> uint11; +typedef ap_int_base<12,false> uint12; +typedef ap_int_base<13,false> uint13; +typedef ap_int_base<14,false> uint14; +typedef ap_int_base<15,false> uint15; +typedef ap_int_base<16,false> uint16; +typedef ap_int_base<17,false> uint17; +typedef ap_int_base<18,false> uint18; +typedef ap_int_base<19,false> uint19; +typedef ap_int_base<20,false> uint20; +typedef ap_int_base<21,false> uint21; +typedef ap_int_base<22,false> uint22; +typedef ap_int_base<23,false> uint23; +typedef ap_int_base<24,false> uint24; +typedef ap_int_base<25,false> uint25; +typedef ap_int_base<26,false> uint26; +typedef ap_int_base<27,false> uint27; +typedef ap_int_base<28,false> uint28; +typedef ap_int_base<29,false> uint29; +typedef ap_int_base<30,false> uint30; +typedef ap_int_base<31,false> uint31; +typedef ap_int_base<32,false> uint32; +typedef ap_int_base<33,false> uint33; +typedef ap_int_base<34,false> uint34; +typedef ap_int_base<35,false> uint35; +typedef ap_int_base<36,false> uint36; +typedef ap_int_base<37,false> uint37; +typedef ap_int_base<38,false> uint38; +typedef ap_int_base<39,false> uint39; +typedef ap_int_base<40,false> uint40; +typedef ap_int_base<41,false> uint41; +typedef ap_int_base<42,false> uint42; +typedef ap_int_base<43,false> uint43; +typedef ap_int_base<44,false> uint44; +typedef ap_int_base<45,false> uint45; +typedef ap_int_base<46,false> uint46; +typedef ap_int_base<47,false> uint47; +typedef ap_int_base<48,false> uint48; +typedef ap_int_base<49,false> uint49; +typedef ap_int_base<50,false> uint50; +typedef ap_int_base<51,false> uint51; +typedef ap_int_base<52,false> uint52; +typedef ap_int_base<53,false> uint53; +typedef ap_int_base<54,false> uint54; +typedef ap_int_base<55,false> uint55; +typedef ap_int_base<56,false> uint56; +typedef ap_int_base<57,false> uint57; +typedef ap_int_base<58,false> uint58; +typedef ap_int_base<59,false> uint59; +typedef ap_int_base<60,false> uint60; +typedef ap_int_base<61,false> uint61; +typedef ap_int_base<62,false> uint62; +typedef ap_int_base<63,false> uint63; +typedef ap_int_base<64,false> uint64; +typedef ap_int_base<65,false> uint65; +typedef ap_int_base<66,false> uint66; +typedef ap_int_base<67,false> uint67; +typedef ap_int_base<68,false> uint68; +typedef ap_int_base<69,false> uint69; +typedef ap_int_base<70,false> uint70; +typedef ap_int_base<71,false> uint71; +typedef ap_int_base<72,false> uint72; +typedef ap_int_base<73,false> uint73; +typedef ap_int_base<74,false> uint74; +typedef ap_int_base<75,false> uint75; +typedef ap_int_base<76,false> uint76; +typedef ap_int_base<77,false> uint77; +typedef ap_int_base<78,false> uint78; +typedef ap_int_base<79,false> uint79; +typedef ap_int_base<80,false> uint80; +typedef ap_int_base<81,false> uint81; +typedef ap_int_base<82,false> uint82; +typedef ap_int_base<83,false> uint83; +typedef ap_int_base<84,false> uint84; +typedef ap_int_base<85,false> uint85; +typedef ap_int_base<86,false> uint86; +typedef ap_int_base<87,false> uint87; +typedef ap_int_base<88,false> uint88; +typedef ap_int_base<89,false> uint89; +typedef ap_int_base<90,false> uint90; +typedef ap_int_base<91,false> uint91; +typedef ap_int_base<92,false> uint92; +typedef ap_int_base<93,false> uint93; +typedef ap_int_base<94,false> uint94; +typedef ap_int_base<95,false> uint95; +typedef ap_int_base<96,false> uint96; +typedef ap_int_base<97,false> uint97; +typedef ap_int_base<98,false> uint98; +typedef ap_int_base<99,false> uint99; +typedef ap_int_base<100,false> uint100; +typedef ap_int_base<101,false> uint101; +typedef ap_int_base<102,false> uint102; +typedef ap_int_base<103,false> uint103; +typedef ap_int_base<104,false> uint104; +typedef ap_int_base<105,false> uint105; +typedef ap_int_base<106,false> uint106; +typedef ap_int_base<107,false> uint107; +typedef ap_int_base<108,false> uint108; +typedef ap_int_base<109,false> uint109; +typedef ap_int_base<110,false> uint110; +typedef ap_int_base<111,false> uint111; +typedef ap_int_base<112,false> uint112; +typedef ap_int_base<113,false> uint113; +typedef ap_int_base<114,false> uint114; +typedef ap_int_base<115,false> uint115; +typedef ap_int_base<116,false> uint116; +typedef ap_int_base<117,false> uint117; +typedef ap_int_base<118,false> uint118; +typedef ap_int_base<119,false> uint119; +typedef ap_int_base<120,false> uint120; +typedef ap_int_base<121,false> uint121; +typedef ap_int_base<122,false> uint122; +typedef ap_int_base<123,false> uint123; +typedef ap_int_base<124,false> uint124; +typedef ap_int_base<125,false> uint125; +typedef ap_int_base<126,false> uint126; +typedef ap_int_base<127,false> uint127; +typedef ap_int_base<128,false> uint128; +typedef ap_int_base<129,false> uint129; +typedef ap_int_base<130,false> uint130; +typedef ap_int_base<131,false> uint131; +typedef ap_int_base<132,false> uint132; +typedef ap_int_base<133,false> uint133; +typedef ap_int_base<134,false> uint134; +typedef ap_int_base<135,false> uint135; +typedef ap_int_base<136,false> uint136; +typedef ap_int_base<137,false> uint137; +typedef ap_int_base<138,false> uint138; +typedef ap_int_base<139,false> uint139; +typedef ap_int_base<140,false> uint140; +typedef ap_int_base<141,false> uint141; +typedef ap_int_base<142,false> uint142; +typedef ap_int_base<143,false> uint143; +typedef ap_int_base<144,false> uint144; +typedef ap_int_base<145,false> uint145; +typedef ap_int_base<146,false> uint146; +typedef ap_int_base<147,false> uint147; +typedef ap_int_base<148,false> uint148; +typedef ap_int_base<149,false> uint149; +typedef ap_int_base<150,false> uint150; +typedef ap_int_base<151,false> uint151; +typedef ap_int_base<152,false> uint152; +typedef ap_int_base<153,false> uint153; +typedef ap_int_base<154,false> uint154; +typedef ap_int_base<155,false> uint155; +typedef ap_int_base<156,false> uint156; +typedef ap_int_base<157,false> uint157; +typedef ap_int_base<158,false> uint158; +typedef ap_int_base<159,false> uint159; +typedef ap_int_base<160,false> uint160; +typedef ap_int_base<161,false> uint161; +typedef ap_int_base<162,false> uint162; +typedef ap_int_base<163,false> uint163; +typedef ap_int_base<164,false> uint164; +typedef ap_int_base<165,false> uint165; +typedef ap_int_base<166,false> uint166; +typedef ap_int_base<167,false> uint167; +typedef ap_int_base<168,false> uint168; +typedef ap_int_base<169,false> uint169; +typedef ap_int_base<170,false> uint170; +typedef ap_int_base<171,false> uint171; +typedef ap_int_base<172,false> uint172; +typedef ap_int_base<173,false> uint173; +typedef ap_int_base<174,false> uint174; +typedef ap_int_base<175,false> uint175; +typedef ap_int_base<176,false> uint176; +typedef ap_int_base<177,false> uint177; +typedef ap_int_base<178,false> uint178; +typedef ap_int_base<179,false> uint179; +typedef ap_int_base<180,false> uint180; +typedef ap_int_base<181,false> uint181; +typedef ap_int_base<182,false> uint182; +typedef ap_int_base<183,false> uint183; +typedef ap_int_base<184,false> uint184; +typedef ap_int_base<185,false> uint185; +typedef ap_int_base<186,false> uint186; +typedef ap_int_base<187,false> uint187; +typedef ap_int_base<188,false> uint188; +typedef ap_int_base<189,false> uint189; +typedef ap_int_base<190,false> uint190; +typedef ap_int_base<191,false> uint191; +typedef ap_int_base<192,false> uint192; +typedef ap_int_base<193,false> uint193; +typedef ap_int_base<194,false> uint194; +typedef ap_int_base<195,false> uint195; +typedef ap_int_base<196,false> uint196; +typedef ap_int_base<197,false> uint197; +typedef ap_int_base<198,false> uint198; +typedef ap_int_base<199,false> uint199; +typedef ap_int_base<200,false> uint200; +typedef ap_int_base<201,false> uint201; +typedef ap_int_base<202,false> uint202; +typedef ap_int_base<203,false> uint203; +typedef ap_int_base<204,false> uint204; +typedef ap_int_base<205,false> uint205; +typedef ap_int_base<206,false> uint206; +typedef ap_int_base<207,false> uint207; +typedef ap_int_base<208,false> uint208; +typedef ap_int_base<209,false> uint209; +typedef ap_int_base<210,false> uint210; +typedef ap_int_base<211,false> uint211; +typedef ap_int_base<212,false> uint212; +typedef ap_int_base<213,false> uint213; +typedef ap_int_base<214,false> uint214; +typedef ap_int_base<215,false> uint215; +typedef ap_int_base<216,false> uint216; +typedef ap_int_base<217,false> uint217; +typedef ap_int_base<218,false> uint218; +typedef ap_int_base<219,false> uint219; +typedef ap_int_base<220,false> uint220; +typedef ap_int_base<221,false> uint221; +typedef ap_int_base<222,false> uint222; +typedef ap_int_base<223,false> uint223; +typedef ap_int_base<224,false> uint224; +typedef ap_int_base<225,false> uint225; +typedef ap_int_base<226,false> uint226; +typedef ap_int_base<227,false> uint227; +typedef ap_int_base<228,false> uint228; +typedef ap_int_base<229,false> uint229; +typedef ap_int_base<230,false> uint230; +typedef ap_int_base<231,false> uint231; +typedef ap_int_base<232,false> uint232; +typedef ap_int_base<233,false> uint233; +typedef ap_int_base<234,false> uint234; +typedef ap_int_base<235,false> uint235; +typedef ap_int_base<236,false> uint236; +typedef ap_int_base<237,false> uint237; +typedef ap_int_base<238,false> uint238; +typedef ap_int_base<239,false> uint239; +typedef ap_int_base<240,false> uint240; +typedef ap_int_base<241,false> uint241; +typedef ap_int_base<242,false> uint242; +typedef ap_int_base<243,false> uint243; +typedef ap_int_base<244,false> uint244; +typedef ap_int_base<245,false> uint245; +typedef ap_int_base<246,false> uint246; +typedef ap_int_base<247,false> uint247; +typedef ap_int_base<248,false> uint248; +typedef ap_int_base<249,false> uint249; +typedef ap_int_base<250,false> uint250; +typedef ap_int_base<251,false> uint251; +typedef ap_int_base<252,false> uint252; +typedef ap_int_base<253,false> uint253; +typedef ap_int_base<254,false> uint254; +typedef ap_int_base<255,false> uint255; +typedef ap_int_base<256,false> uint256; +typedef ap_int_base<257,false> uint257; +typedef ap_int_base<258,false> uint258; +typedef ap_int_base<259,false> uint259; +typedef ap_int_base<260,false> uint260; +typedef ap_int_base<261,false> uint261; +typedef ap_int_base<262,false> uint262; +typedef ap_int_base<263,false> uint263; +typedef ap_int_base<264,false> uint264; +typedef ap_int_base<265,false> uint265; +typedef ap_int_base<266,false> uint266; +typedef ap_int_base<267,false> uint267; +typedef ap_int_base<268,false> uint268; +typedef ap_int_base<269,false> uint269; +typedef ap_int_base<270,false> uint270; +typedef ap_int_base<271,false> uint271; +typedef ap_int_base<272,false> uint272; +typedef ap_int_base<273,false> uint273; +typedef ap_int_base<274,false> uint274; +typedef ap_int_base<275,false> uint275; +typedef ap_int_base<276,false> uint276; +typedef ap_int_base<277,false> uint277; +typedef ap_int_base<278,false> uint278; +typedef ap_int_base<279,false> uint279; +typedef ap_int_base<280,false> uint280; +typedef ap_int_base<281,false> uint281; +typedef ap_int_base<282,false> uint282; +typedef ap_int_base<283,false> uint283; +typedef ap_int_base<284,false> uint284; +typedef ap_int_base<285,false> uint285; +typedef ap_int_base<286,false> uint286; +typedef ap_int_base<287,false> uint287; +typedef ap_int_base<288,false> uint288; +typedef ap_int_base<289,false> uint289; +typedef ap_int_base<290,false> uint290; +typedef ap_int_base<291,false> uint291; +typedef ap_int_base<292,false> uint292; +typedef ap_int_base<293,false> uint293; +typedef ap_int_base<294,false> uint294; +typedef ap_int_base<295,false> uint295; +typedef ap_int_base<296,false> uint296; +typedef ap_int_base<297,false> uint297; +typedef ap_int_base<298,false> uint298; +typedef ap_int_base<299,false> uint299; +typedef ap_int_base<300,false> uint300; +typedef ap_int_base<301,false> uint301; +typedef ap_int_base<302,false> uint302; +typedef ap_int_base<303,false> uint303; +typedef ap_int_base<304,false> uint304; +typedef ap_int_base<305,false> uint305; +typedef ap_int_base<306,false> uint306; +typedef ap_int_base<307,false> uint307; +typedef ap_int_base<308,false> uint308; +typedef ap_int_base<309,false> uint309; +typedef ap_int_base<310,false> uint310; +typedef ap_int_base<311,false> uint311; +typedef ap_int_base<312,false> uint312; +typedef ap_int_base<313,false> uint313; +typedef ap_int_base<314,false> uint314; +typedef ap_int_base<315,false> uint315; +typedef ap_int_base<316,false> uint316; +typedef ap_int_base<317,false> uint317; +typedef ap_int_base<318,false> uint318; +typedef ap_int_base<319,false> uint319; +typedef ap_int_base<320,false> uint320; +typedef ap_int_base<321,false> uint321; +typedef ap_int_base<322,false> uint322; +typedef ap_int_base<323,false> uint323; +typedef ap_int_base<324,false> uint324; +typedef ap_int_base<325,false> uint325; +typedef ap_int_base<326,false> uint326; +typedef ap_int_base<327,false> uint327; +typedef ap_int_base<328,false> uint328; +typedef ap_int_base<329,false> uint329; +typedef ap_int_base<330,false> uint330; +typedef ap_int_base<331,false> uint331; +typedef ap_int_base<332,false> uint332; +typedef ap_int_base<333,false> uint333; +typedef ap_int_base<334,false> uint334; +typedef ap_int_base<335,false> uint335; +typedef ap_int_base<336,false> uint336; +typedef ap_int_base<337,false> uint337; +typedef ap_int_base<338,false> uint338; +typedef ap_int_base<339,false> uint339; +typedef ap_int_base<340,false> uint340; +typedef ap_int_base<341,false> uint341; +typedef ap_int_base<342,false> uint342; +typedef ap_int_base<343,false> uint343; +typedef ap_int_base<344,false> uint344; +typedef ap_int_base<345,false> uint345; +typedef ap_int_base<346,false> uint346; +typedef ap_int_base<347,false> uint347; +typedef ap_int_base<348,false> uint348; +typedef ap_int_base<349,false> uint349; +typedef ap_int_base<350,false> uint350; +typedef ap_int_base<351,false> uint351; +typedef ap_int_base<352,false> uint352; +typedef ap_int_base<353,false> uint353; +typedef ap_int_base<354,false> uint354; +typedef ap_int_base<355,false> uint355; +typedef ap_int_base<356,false> uint356; +typedef ap_int_base<357,false> uint357; +typedef ap_int_base<358,false> uint358; +typedef ap_int_base<359,false> uint359; +typedef ap_int_base<360,false> uint360; +typedef ap_int_base<361,false> uint361; +typedef ap_int_base<362,false> uint362; +typedef ap_int_base<363,false> uint363; +typedef ap_int_base<364,false> uint364; +typedef ap_int_base<365,false> uint365; +typedef ap_int_base<366,false> uint366; +typedef ap_int_base<367,false> uint367; +typedef ap_int_base<368,false> uint368; +typedef ap_int_base<369,false> uint369; +typedef ap_int_base<370,false> uint370; +typedef ap_int_base<371,false> uint371; +typedef ap_int_base<372,false> uint372; +typedef ap_int_base<373,false> uint373; +typedef ap_int_base<374,false> uint374; +typedef ap_int_base<375,false> uint375; +typedef ap_int_base<376,false> uint376; +typedef ap_int_base<377,false> uint377; +typedef ap_int_base<378,false> uint378; +typedef ap_int_base<379,false> uint379; +typedef ap_int_base<380,false> uint380; +typedef ap_int_base<381,false> uint381; +typedef ap_int_base<382,false> uint382; +typedef ap_int_base<383,false> uint383; +typedef ap_int_base<384,false> uint384; +typedef ap_int_base<385,false> uint385; +typedef ap_int_base<386,false> uint386; +typedef ap_int_base<387,false> uint387; +typedef ap_int_base<388,false> uint388; +typedef ap_int_base<389,false> uint389; +typedef ap_int_base<390,false> uint390; +typedef ap_int_base<391,false> uint391; +typedef ap_int_base<392,false> uint392; +typedef ap_int_base<393,false> uint393; +typedef ap_int_base<394,false> uint394; +typedef ap_int_base<395,false> uint395; +typedef ap_int_base<396,false> uint396; +typedef ap_int_base<397,false> uint397; +typedef ap_int_base<398,false> uint398; +typedef ap_int_base<399,false> uint399; +typedef ap_int_base<400,false> uint400; +typedef ap_int_base<401,false> uint401; +typedef ap_int_base<402,false> uint402; +typedef ap_int_base<403,false> uint403; +typedef ap_int_base<404,false> uint404; +typedef ap_int_base<405,false> uint405; +typedef ap_int_base<406,false> uint406; +typedef ap_int_base<407,false> uint407; +typedef ap_int_base<408,false> uint408; +typedef ap_int_base<409,false> uint409; +typedef ap_int_base<410,false> uint410; +typedef ap_int_base<411,false> uint411; +typedef ap_int_base<412,false> uint412; +typedef ap_int_base<413,false> uint413; +typedef ap_int_base<414,false> uint414; +typedef ap_int_base<415,false> uint415; +typedef ap_int_base<416,false> uint416; +typedef ap_int_base<417,false> uint417; +typedef ap_int_base<418,false> uint418; +typedef ap_int_base<419,false> uint419; +typedef ap_int_base<420,false> uint420; +typedef ap_int_base<421,false> uint421; +typedef ap_int_base<422,false> uint422; +typedef ap_int_base<423,false> uint423; +typedef ap_int_base<424,false> uint424; +typedef ap_int_base<425,false> uint425; +typedef ap_int_base<426,false> uint426; +typedef ap_int_base<427,false> uint427; +typedef ap_int_base<428,false> uint428; +typedef ap_int_base<429,false> uint429; +typedef ap_int_base<430,false> uint430; +typedef ap_int_base<431,false> uint431; +typedef ap_int_base<432,false> uint432; +typedef ap_int_base<433,false> uint433; +typedef ap_int_base<434,false> uint434; +typedef ap_int_base<435,false> uint435; +typedef ap_int_base<436,false> uint436; +typedef ap_int_base<437,false> uint437; +typedef ap_int_base<438,false> uint438; +typedef ap_int_base<439,false> uint439; +typedef ap_int_base<440,false> uint440; +typedef ap_int_base<441,false> uint441; +typedef ap_int_base<442,false> uint442; +typedef ap_int_base<443,false> uint443; +typedef ap_int_base<444,false> uint444; +typedef ap_int_base<445,false> uint445; +typedef ap_int_base<446,false> uint446; +typedef ap_int_base<447,false> uint447; +typedef ap_int_base<448,false> uint448; +typedef ap_int_base<449,false> uint449; +typedef ap_int_base<450,false> uint450; +typedef ap_int_base<451,false> uint451; +typedef ap_int_base<452,false> uint452; +typedef ap_int_base<453,false> uint453; +typedef ap_int_base<454,false> uint454; +typedef ap_int_base<455,false> uint455; +typedef ap_int_base<456,false> uint456; +typedef ap_int_base<457,false> uint457; +typedef ap_int_base<458,false> uint458; +typedef ap_int_base<459,false> uint459; +typedef ap_int_base<460,false> uint460; +typedef ap_int_base<461,false> uint461; +typedef ap_int_base<462,false> uint462; +typedef ap_int_base<463,false> uint463; +typedef ap_int_base<464,false> uint464; +typedef ap_int_base<465,false> uint465; +typedef ap_int_base<466,false> uint466; +typedef ap_int_base<467,false> uint467; +typedef ap_int_base<468,false> uint468; +typedef ap_int_base<469,false> uint469; +typedef ap_int_base<470,false> uint470; +typedef ap_int_base<471,false> uint471; +typedef ap_int_base<472,false> uint472; +typedef ap_int_base<473,false> uint473; +typedef ap_int_base<474,false> uint474; +typedef ap_int_base<475,false> uint475; +typedef ap_int_base<476,false> uint476; +typedef ap_int_base<477,false> uint477; +typedef ap_int_base<478,false> uint478; +typedef ap_int_base<479,false> uint479; +typedef ap_int_base<480,false> uint480; +typedef ap_int_base<481,false> uint481; +typedef ap_int_base<482,false> uint482; +typedef ap_int_base<483,false> uint483; +typedef ap_int_base<484,false> uint484; +typedef ap_int_base<485,false> uint485; +typedef ap_int_base<486,false> uint486; +typedef ap_int_base<487,false> uint487; +typedef ap_int_base<488,false> uint488; +typedef ap_int_base<489,false> uint489; +typedef ap_int_base<490,false> uint490; +typedef ap_int_base<491,false> uint491; +typedef ap_int_base<492,false> uint492; +typedef ap_int_base<493,false> uint493; +typedef ap_int_base<494,false> uint494; +typedef ap_int_base<495,false> uint495; +typedef ap_int_base<496,false> uint496; +typedef ap_int_base<497,false> uint497; +typedef ap_int_base<498,false> uint498; +typedef ap_int_base<499,false> uint499; +typedef ap_int_base<500,false> uint500; +typedef ap_int_base<501,false> uint501; +typedef ap_int_base<502,false> uint502; +typedef ap_int_base<503,false> uint503; +typedef ap_int_base<504,false> uint504; +typedef ap_int_base<505,false> uint505; +typedef ap_int_base<506,false> uint506; +typedef ap_int_base<507,false> uint507; +typedef ap_int_base<508,false> uint508; +typedef ap_int_base<509,false> uint509; +typedef ap_int_base<510,false> uint510; +typedef ap_int_base<511,false> uint511; +typedef ap_int_base<512,false> uint512; +typedef ap_int_base<513,false> uint513; +typedef ap_int_base<514,false> uint514; +typedef ap_int_base<515,false> uint515; +typedef ap_int_base<516,false> uint516; +typedef ap_int_base<517,false> uint517; +typedef ap_int_base<518,false> uint518; +typedef ap_int_base<519,false> uint519; +typedef ap_int_base<520,false> uint520; +typedef ap_int_base<521,false> uint521; +typedef ap_int_base<522,false> uint522; +typedef ap_int_base<523,false> uint523; +typedef ap_int_base<524,false> uint524; +typedef ap_int_base<525,false> uint525; +typedef ap_int_base<526,false> uint526; +typedef ap_int_base<527,false> uint527; +typedef ap_int_base<528,false> uint528; +typedef ap_int_base<529,false> uint529; +typedef ap_int_base<530,false> uint530; +typedef ap_int_base<531,false> uint531; +typedef ap_int_base<532,false> uint532; +typedef ap_int_base<533,false> uint533; +typedef ap_int_base<534,false> uint534; +typedef ap_int_base<535,false> uint535; +typedef ap_int_base<536,false> uint536; +typedef ap_int_base<537,false> uint537; +typedef ap_int_base<538,false> uint538; +typedef ap_int_base<539,false> uint539; +typedef ap_int_base<540,false> uint540; +typedef ap_int_base<541,false> uint541; +typedef ap_int_base<542,false> uint542; +typedef ap_int_base<543,false> uint543; +typedef ap_int_base<544,false> uint544; +typedef ap_int_base<545,false> uint545; +typedef ap_int_base<546,false> uint546; +typedef ap_int_base<547,false> uint547; +typedef ap_int_base<548,false> uint548; +typedef ap_int_base<549,false> uint549; +typedef ap_int_base<550,false> uint550; +typedef ap_int_base<551,false> uint551; +typedef ap_int_base<552,false> uint552; +typedef ap_int_base<553,false> uint553; +typedef ap_int_base<554,false> uint554; +typedef ap_int_base<555,false> uint555; +typedef ap_int_base<556,false> uint556; +typedef ap_int_base<557,false> uint557; +typedef ap_int_base<558,false> uint558; +typedef ap_int_base<559,false> uint559; +typedef ap_int_base<560,false> uint560; +typedef ap_int_base<561,false> uint561; +typedef ap_int_base<562,false> uint562; +typedef ap_int_base<563,false> uint563; +typedef ap_int_base<564,false> uint564; +typedef ap_int_base<565,false> uint565; +typedef ap_int_base<566,false> uint566; +typedef ap_int_base<567,false> uint567; +typedef ap_int_base<568,false> uint568; +typedef ap_int_base<569,false> uint569; +typedef ap_int_base<570,false> uint570; +typedef ap_int_base<571,false> uint571; +typedef ap_int_base<572,false> uint572; +typedef ap_int_base<573,false> uint573; +typedef ap_int_base<574,false> uint574; +typedef ap_int_base<575,false> uint575; +typedef ap_int_base<576,false> uint576; +typedef ap_int_base<577,false> uint577; +typedef ap_int_base<578,false> uint578; +typedef ap_int_base<579,false> uint579; +typedef ap_int_base<580,false> uint580; +typedef ap_int_base<581,false> uint581; +typedef ap_int_base<582,false> uint582; +typedef ap_int_base<583,false> uint583; +typedef ap_int_base<584,false> uint584; +typedef ap_int_base<585,false> uint585; +typedef ap_int_base<586,false> uint586; +typedef ap_int_base<587,false> uint587; +typedef ap_int_base<588,false> uint588; +typedef ap_int_base<589,false> uint589; +typedef ap_int_base<590,false> uint590; +typedef ap_int_base<591,false> uint591; +typedef ap_int_base<592,false> uint592; +typedef ap_int_base<593,false> uint593; +typedef ap_int_base<594,false> uint594; +typedef ap_int_base<595,false> uint595; +typedef ap_int_base<596,false> uint596; +typedef ap_int_base<597,false> uint597; +typedef ap_int_base<598,false> uint598; +typedef ap_int_base<599,false> uint599; +typedef ap_int_base<600,false> uint600; +typedef ap_int_base<601,false> uint601; +typedef ap_int_base<602,false> uint602; +typedef ap_int_base<603,false> uint603; +typedef ap_int_base<604,false> uint604; +typedef ap_int_base<605,false> uint605; +typedef ap_int_base<606,false> uint606; +typedef ap_int_base<607,false> uint607; +typedef ap_int_base<608,false> uint608; +typedef ap_int_base<609,false> uint609; +typedef ap_int_base<610,false> uint610; +typedef ap_int_base<611,false> uint611; +typedef ap_int_base<612,false> uint612; +typedef ap_int_base<613,false> uint613; +typedef ap_int_base<614,false> uint614; +typedef ap_int_base<615,false> uint615; +typedef ap_int_base<616,false> uint616; +typedef ap_int_base<617,false> uint617; +typedef ap_int_base<618,false> uint618; +typedef ap_int_base<619,false> uint619; +typedef ap_int_base<620,false> uint620; +typedef ap_int_base<621,false> uint621; +typedef ap_int_base<622,false> uint622; +typedef ap_int_base<623,false> uint623; +typedef ap_int_base<624,false> uint624; +typedef ap_int_base<625,false> uint625; +typedef ap_int_base<626,false> uint626; +typedef ap_int_base<627,false> uint627; +typedef ap_int_base<628,false> uint628; +typedef ap_int_base<629,false> uint629; +typedef ap_int_base<630,false> uint630; +typedef ap_int_base<631,false> uint631; +typedef ap_int_base<632,false> uint632; +typedef ap_int_base<633,false> uint633; +typedef ap_int_base<634,false> uint634; +typedef ap_int_base<635,false> uint635; +typedef ap_int_base<636,false> uint636; +typedef ap_int_base<637,false> uint637; +typedef ap_int_base<638,false> uint638; +typedef ap_int_base<639,false> uint639; +typedef ap_int_base<640,false> uint640; +typedef ap_int_base<641,false> uint641; +typedef ap_int_base<642,false> uint642; +typedef ap_int_base<643,false> uint643; +typedef ap_int_base<644,false> uint644; +typedef ap_int_base<645,false> uint645; +typedef ap_int_base<646,false> uint646; +typedef ap_int_base<647,false> uint647; +typedef ap_int_base<648,false> uint648; +typedef ap_int_base<649,false> uint649; +typedef ap_int_base<650,false> uint650; +typedef ap_int_base<651,false> uint651; +typedef ap_int_base<652,false> uint652; +typedef ap_int_base<653,false> uint653; +typedef ap_int_base<654,false> uint654; +typedef ap_int_base<655,false> uint655; +typedef ap_int_base<656,false> uint656; +typedef ap_int_base<657,false> uint657; +typedef ap_int_base<658,false> uint658; +typedef ap_int_base<659,false> uint659; +typedef ap_int_base<660,false> uint660; +typedef ap_int_base<661,false> uint661; +typedef ap_int_base<662,false> uint662; +typedef ap_int_base<663,false> uint663; +typedef ap_int_base<664,false> uint664; +typedef ap_int_base<665,false> uint665; +typedef ap_int_base<666,false> uint666; +typedef ap_int_base<667,false> uint667; +typedef ap_int_base<668,false> uint668; +typedef ap_int_base<669,false> uint669; +typedef ap_int_base<670,false> uint670; +typedef ap_int_base<671,false> uint671; +typedef ap_int_base<672,false> uint672; +typedef ap_int_base<673,false> uint673; +typedef ap_int_base<674,false> uint674; +typedef ap_int_base<675,false> uint675; +typedef ap_int_base<676,false> uint676; +typedef ap_int_base<677,false> uint677; +typedef ap_int_base<678,false> uint678; +typedef ap_int_base<679,false> uint679; +typedef ap_int_base<680,false> uint680; +typedef ap_int_base<681,false> uint681; +typedef ap_int_base<682,false> uint682; +typedef ap_int_base<683,false> uint683; +typedef ap_int_base<684,false> uint684; +typedef ap_int_base<685,false> uint685; +typedef ap_int_base<686,false> uint686; +typedef ap_int_base<687,false> uint687; +typedef ap_int_base<688,false> uint688; +typedef ap_int_base<689,false> uint689; +typedef ap_int_base<690,false> uint690; +typedef ap_int_base<691,false> uint691; +typedef ap_int_base<692,false> uint692; +typedef ap_int_base<693,false> uint693; +typedef ap_int_base<694,false> uint694; +typedef ap_int_base<695,false> uint695; +typedef ap_int_base<696,false> uint696; +typedef ap_int_base<697,false> uint697; +typedef ap_int_base<698,false> uint698; +typedef ap_int_base<699,false> uint699; +typedef ap_int_base<700,false> uint700; +typedef ap_int_base<701,false> uint701; +typedef ap_int_base<702,false> uint702; +typedef ap_int_base<703,false> uint703; +typedef ap_int_base<704,false> uint704; +typedef ap_int_base<705,false> uint705; +typedef ap_int_base<706,false> uint706; +typedef ap_int_base<707,false> uint707; +typedef ap_int_base<708,false> uint708; +typedef ap_int_base<709,false> uint709; +typedef ap_int_base<710,false> uint710; +typedef ap_int_base<711,false> uint711; +typedef ap_int_base<712,false> uint712; +typedef ap_int_base<713,false> uint713; +typedef ap_int_base<714,false> uint714; +typedef ap_int_base<715,false> uint715; +typedef ap_int_base<716,false> uint716; +typedef ap_int_base<717,false> uint717; +typedef ap_int_base<718,false> uint718; +typedef ap_int_base<719,false> uint719; +typedef ap_int_base<720,false> uint720; +typedef ap_int_base<721,false> uint721; +typedef ap_int_base<722,false> uint722; +typedef ap_int_base<723,false> uint723; +typedef ap_int_base<724,false> uint724; +typedef ap_int_base<725,false> uint725; +typedef ap_int_base<726,false> uint726; +typedef ap_int_base<727,false> uint727; +typedef ap_int_base<728,false> uint728; +typedef ap_int_base<729,false> uint729; +typedef ap_int_base<730,false> uint730; +typedef ap_int_base<731,false> uint731; +typedef ap_int_base<732,false> uint732; +typedef ap_int_base<733,false> uint733; +typedef ap_int_base<734,false> uint734; +typedef ap_int_base<735,false> uint735; +typedef ap_int_base<736,false> uint736; +typedef ap_int_base<737,false> uint737; +typedef ap_int_base<738,false> uint738; +typedef ap_int_base<739,false> uint739; +typedef ap_int_base<740,false> uint740; +typedef ap_int_base<741,false> uint741; +typedef ap_int_base<742,false> uint742; +typedef ap_int_base<743,false> uint743; +typedef ap_int_base<744,false> uint744; +typedef ap_int_base<745,false> uint745; +typedef ap_int_base<746,false> uint746; +typedef ap_int_base<747,false> uint747; +typedef ap_int_base<748,false> uint748; +typedef ap_int_base<749,false> uint749; +typedef ap_int_base<750,false> uint750; +typedef ap_int_base<751,false> uint751; +typedef ap_int_base<752,false> uint752; +typedef ap_int_base<753,false> uint753; +typedef ap_int_base<754,false> uint754; +typedef ap_int_base<755,false> uint755; +typedef ap_int_base<756,false> uint756; +typedef ap_int_base<757,false> uint757; +typedef ap_int_base<758,false> uint758; +typedef ap_int_base<759,false> uint759; +typedef ap_int_base<760,false> uint760; +typedef ap_int_base<761,false> uint761; +typedef ap_int_base<762,false> uint762; +typedef ap_int_base<763,false> uint763; +typedef ap_int_base<764,false> uint764; +typedef ap_int_base<765,false> uint765; +typedef ap_int_base<766,false> uint766; +typedef ap_int_base<767,false> uint767; +typedef ap_int_base<768,false> uint768; +typedef ap_int_base<769,false> uint769; +typedef ap_int_base<770,false> uint770; +typedef ap_int_base<771,false> uint771; +typedef ap_int_base<772,false> uint772; +typedef ap_int_base<773,false> uint773; +typedef ap_int_base<774,false> uint774; +typedef ap_int_base<775,false> uint775; +typedef ap_int_base<776,false> uint776; +typedef ap_int_base<777,false> uint777; +typedef ap_int_base<778,false> uint778; +typedef ap_int_base<779,false> uint779; +typedef ap_int_base<780,false> uint780; +typedef ap_int_base<781,false> uint781; +typedef ap_int_base<782,false> uint782; +typedef ap_int_base<783,false> uint783; +typedef ap_int_base<784,false> uint784; +typedef ap_int_base<785,false> uint785; +typedef ap_int_base<786,false> uint786; +typedef ap_int_base<787,false> uint787; +typedef ap_int_base<788,false> uint788; +typedef ap_int_base<789,false> uint789; +typedef ap_int_base<790,false> uint790; +typedef ap_int_base<791,false> uint791; +typedef ap_int_base<792,false> uint792; +typedef ap_int_base<793,false> uint793; +typedef ap_int_base<794,false> uint794; +typedef ap_int_base<795,false> uint795; +typedef ap_int_base<796,false> uint796; +typedef ap_int_base<797,false> uint797; +typedef ap_int_base<798,false> uint798; +typedef ap_int_base<799,false> uint799; +typedef ap_int_base<800,false> uint800; +typedef ap_int_base<801,false> uint801; +typedef ap_int_base<802,false> uint802; +typedef ap_int_base<803,false> uint803; +typedef ap_int_base<804,false> uint804; +typedef ap_int_base<805,false> uint805; +typedef ap_int_base<806,false> uint806; +typedef ap_int_base<807,false> uint807; +typedef ap_int_base<808,false> uint808; +typedef ap_int_base<809,false> uint809; +typedef ap_int_base<810,false> uint810; +typedef ap_int_base<811,false> uint811; +typedef ap_int_base<812,false> uint812; +typedef ap_int_base<813,false> uint813; +typedef ap_int_base<814,false> uint814; +typedef ap_int_base<815,false> uint815; +typedef ap_int_base<816,false> uint816; +typedef ap_int_base<817,false> uint817; +typedef ap_int_base<818,false> uint818; +typedef ap_int_base<819,false> uint819; +typedef ap_int_base<820,false> uint820; +typedef ap_int_base<821,false> uint821; +typedef ap_int_base<822,false> uint822; +typedef ap_int_base<823,false> uint823; +typedef ap_int_base<824,false> uint824; +typedef ap_int_base<825,false> uint825; +typedef ap_int_base<826,false> uint826; +typedef ap_int_base<827,false> uint827; +typedef ap_int_base<828,false> uint828; +typedef ap_int_base<829,false> uint829; +typedef ap_int_base<830,false> uint830; +typedef ap_int_base<831,false> uint831; +typedef ap_int_base<832,false> uint832; +typedef ap_int_base<833,false> uint833; +typedef ap_int_base<834,false> uint834; +typedef ap_int_base<835,false> uint835; +typedef ap_int_base<836,false> uint836; +typedef ap_int_base<837,false> uint837; +typedef ap_int_base<838,false> uint838; +typedef ap_int_base<839,false> uint839; +typedef ap_int_base<840,false> uint840; +typedef ap_int_base<841,false> uint841; +typedef ap_int_base<842,false> uint842; +typedef ap_int_base<843,false> uint843; +typedef ap_int_base<844,false> uint844; +typedef ap_int_base<845,false> uint845; +typedef ap_int_base<846,false> uint846; +typedef ap_int_base<847,false> uint847; +typedef ap_int_base<848,false> uint848; +typedef ap_int_base<849,false> uint849; +typedef ap_int_base<850,false> uint850; +typedef ap_int_base<851,false> uint851; +typedef ap_int_base<852,false> uint852; +typedef ap_int_base<853,false> uint853; +typedef ap_int_base<854,false> uint854; +typedef ap_int_base<855,false> uint855; +typedef ap_int_base<856,false> uint856; +typedef ap_int_base<857,false> uint857; +typedef ap_int_base<858,false> uint858; +typedef ap_int_base<859,false> uint859; +typedef ap_int_base<860,false> uint860; +typedef ap_int_base<861,false> uint861; +typedef ap_int_base<862,false> uint862; +typedef ap_int_base<863,false> uint863; +typedef ap_int_base<864,false> uint864; +typedef ap_int_base<865,false> uint865; +typedef ap_int_base<866,false> uint866; +typedef ap_int_base<867,false> uint867; +typedef ap_int_base<868,false> uint868; +typedef ap_int_base<869,false> uint869; +typedef ap_int_base<870,false> uint870; +typedef ap_int_base<871,false> uint871; +typedef ap_int_base<872,false> uint872; +typedef ap_int_base<873,false> uint873; +typedef ap_int_base<874,false> uint874; +typedef ap_int_base<875,false> uint875; +typedef ap_int_base<876,false> uint876; +typedef ap_int_base<877,false> uint877; +typedef ap_int_base<878,false> uint878; +typedef ap_int_base<879,false> uint879; +typedef ap_int_base<880,false> uint880; +typedef ap_int_base<881,false> uint881; +typedef ap_int_base<882,false> uint882; +typedef ap_int_base<883,false> uint883; +typedef ap_int_base<884,false> uint884; +typedef ap_int_base<885,false> uint885; +typedef ap_int_base<886,false> uint886; +typedef ap_int_base<887,false> uint887; +typedef ap_int_base<888,false> uint888; +typedef ap_int_base<889,false> uint889; +typedef ap_int_base<890,false> uint890; +typedef ap_int_base<891,false> uint891; +typedef ap_int_base<892,false> uint892; +typedef ap_int_base<893,false> uint893; +typedef ap_int_base<894,false> uint894; +typedef ap_int_base<895,false> uint895; +typedef ap_int_base<896,false> uint896; +typedef ap_int_base<897,false> uint897; +typedef ap_int_base<898,false> uint898; +typedef ap_int_base<899,false> uint899; +typedef ap_int_base<900,false> uint900; +typedef ap_int_base<901,false> uint901; +typedef ap_int_base<902,false> uint902; +typedef ap_int_base<903,false> uint903; +typedef ap_int_base<904,false> uint904; +typedef ap_int_base<905,false> uint905; +typedef ap_int_base<906,false> uint906; +typedef ap_int_base<907,false> uint907; +typedef ap_int_base<908,false> uint908; +typedef ap_int_base<909,false> uint909; +typedef ap_int_base<910,false> uint910; +typedef ap_int_base<911,false> uint911; +typedef ap_int_base<912,false> uint912; +typedef ap_int_base<913,false> uint913; +typedef ap_int_base<914,false> uint914; +typedef ap_int_base<915,false> uint915; +typedef ap_int_base<916,false> uint916; +typedef ap_int_base<917,false> uint917; +typedef ap_int_base<918,false> uint918; +typedef ap_int_base<919,false> uint919; +typedef ap_int_base<920,false> uint920; +typedef ap_int_base<921,false> uint921; +typedef ap_int_base<922,false> uint922; +typedef ap_int_base<923,false> uint923; +typedef ap_int_base<924,false> uint924; +typedef ap_int_base<925,false> uint925; +typedef ap_int_base<926,false> uint926; +typedef ap_int_base<927,false> uint927; +typedef ap_int_base<928,false> uint928; +typedef ap_int_base<929,false> uint929; +typedef ap_int_base<930,false> uint930; +typedef ap_int_base<931,false> uint931; +typedef ap_int_base<932,false> uint932; +typedef ap_int_base<933,false> uint933; +typedef ap_int_base<934,false> uint934; +typedef ap_int_base<935,false> uint935; +typedef ap_int_base<936,false> uint936; +typedef ap_int_base<937,false> uint937; +typedef ap_int_base<938,false> uint938; +typedef ap_int_base<939,false> uint939; +typedef ap_int_base<940,false> uint940; +typedef ap_int_base<941,false> uint941; +typedef ap_int_base<942,false> uint942; +typedef ap_int_base<943,false> uint943; +typedef ap_int_base<944,false> uint944; +typedef ap_int_base<945,false> uint945; +typedef ap_int_base<946,false> uint946; +typedef ap_int_base<947,false> uint947; +typedef ap_int_base<948,false> uint948; +typedef ap_int_base<949,false> uint949; +typedef ap_int_base<950,false> uint950; +typedef ap_int_base<951,false> uint951; +typedef ap_int_base<952,false> uint952; +typedef ap_int_base<953,false> uint953; +typedef ap_int_base<954,false> uint954; +typedef ap_int_base<955,false> uint955; +typedef ap_int_base<956,false> uint956; +typedef ap_int_base<957,false> uint957; +typedef ap_int_base<958,false> uint958; +typedef ap_int_base<959,false> uint959; +typedef ap_int_base<960,false> uint960; +typedef ap_int_base<961,false> uint961; +typedef ap_int_base<962,false> uint962; +typedef ap_int_base<963,false> uint963; +typedef ap_int_base<964,false> uint964; +typedef ap_int_base<965,false> uint965; +typedef ap_int_base<966,false> uint966; +typedef ap_int_base<967,false> uint967; +typedef ap_int_base<968,false> uint968; +typedef ap_int_base<969,false> uint969; +typedef ap_int_base<970,false> uint970; +typedef ap_int_base<971,false> uint971; +typedef ap_int_base<972,false> uint972; +typedef ap_int_base<973,false> uint973; +typedef ap_int_base<974,false> uint974; +typedef ap_int_base<975,false> uint975; +typedef ap_int_base<976,false> uint976; +typedef ap_int_base<977,false> uint977; +typedef ap_int_base<978,false> uint978; +typedef ap_int_base<979,false> uint979; +typedef ap_int_base<980,false> uint980; +typedef ap_int_base<981,false> uint981; +typedef ap_int_base<982,false> uint982; +typedef ap_int_base<983,false> uint983; +typedef ap_int_base<984,false> uint984; +typedef ap_int_base<985,false> uint985; +typedef ap_int_base<986,false> uint986; +typedef ap_int_base<987,false> uint987; +typedef ap_int_base<988,false> uint988; +typedef ap_int_base<989,false> uint989; +typedef ap_int_base<990,false> uint990; +typedef ap_int_base<991,false> uint991; +typedef ap_int_base<992,false> uint992; +typedef ap_int_base<993,false> uint993; +typedef ap_int_base<994,false> uint994; +typedef ap_int_base<995,false> uint995; +typedef ap_int_base<996,false> uint996; +typedef ap_int_base<997,false> uint997; +typedef ap_int_base<998,false> uint998; +typedef ap_int_base<999,false> uint999; +typedef ap_int_base<1000,false> uint1000; +typedef ap_int_base<1001,false> uint1001; +typedef ap_int_base<1002,false> uint1002; +typedef ap_int_base<1003,false> uint1003; +typedef ap_int_base<1004,false> uint1004; +typedef ap_int_base<1005,false> uint1005; +typedef ap_int_base<1006,false> uint1006; +typedef ap_int_base<1007,false> uint1007; +typedef ap_int_base<1008,false> uint1008; +typedef ap_int_base<1009,false> uint1009; +typedef ap_int_base<1010,false> uint1010; +typedef ap_int_base<1011,false> uint1011; +typedef ap_int_base<1012,false> uint1012; +typedef ap_int_base<1013,false> uint1013; +typedef ap_int_base<1014,false> uint1014; +typedef ap_int_base<1015,false> uint1015; +typedef ap_int_base<1016,false> uint1016; +typedef ap_int_base<1017,false> uint1017; +typedef ap_int_base<1018,false> uint1018; +typedef ap_int_base<1019,false> uint1019; +typedef ap_int_base<1020,false> uint1020; +typedef ap_int_base<1021,false> uint1021; +typedef ap_int_base<1022,false> uint1022; +typedef ap_int_base<1023,false> uint1023; +typedef ap_int_base<1024,false> uint1024; +#endif + + diff --git a/vitis/v2021_2/etc/dsp48_builtins.h b/vitis/v2021_2/etc/dsp48_builtins.h new file mode 100755 index 00000000..cde1d260 --- /dev/null +++ b/vitis/v2021_2/etc/dsp48_builtins.h @@ -0,0 +1,64 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* dsp48_builtins.h*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * $Id$ + */ + +#ifndef _DSP48_BUILTINS_H_ +#define _DSP48_BUILTINS_H_ +#ifdef __DSP48E1__ +#include "vitis/v2021_2/etc/dsp48e1_builtins.h" +#elif __DSP48E2__ +#include "vitis/v2021_2/etc/dsp48e2_builtins.h" +#else +#error Please select a proper device to use dsp builtins. +#endif +#endif diff --git a/vitis/v2021_2/etc/dsp48e1_builtins.h b/vitis/v2021_2/etc/dsp48e1_builtins.h new file mode 100755 index 00000000..7b2b7b84 --- /dev/null +++ b/vitis/v2021_2/etc/dsp48e1_builtins.h @@ -0,0 +1,298 @@ +// This header file is generated by script. Don't modify it manully + +#ifndef _DSP48E1_BUILTINS_H_ +#define _DSP48E1_BUILTINS_H_ + +// Flags +#define DSP_REGISTER_DEFAULT 0x00000000 +#define DSP_REGISTER_A1 0x00000001 +#define DSP_REGISTER_A2 0x00000002 +#define DSP_REGISTER_B1 0x00000004 +#define DSP_REGISTER_B2 0x00000008 +#define DSP_REGISTER_D 0x00000010 +#define DSP_REGISTER_AD 0x00000020 +#define DSP_REGISTER_M 0x00000040 +#define DSP_REGISTER_C 0x00000080 +#define DSP_REGISTER_P 0x00000100 +#define DSP_REGISTER_NO 0x00000200 + +// DSP builtin wrapper functions + +static inline __dsp48_t +__builtin_madd( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msub( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msubed( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amadd( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amsub( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + + +#ifdef __HLS_SYN__ +// DSP state type +typedef __dsp48_t __xilinx_dsp_state; +#ifdef __cplusplus +extern "C" { +#endif + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int32_t __attribute__((bitwidth(25))) d, + int32_t __attribute__((bitwidth(30))) a, + int32_t __attribute__((bitwidth(18))) b, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(30))) acin, + int32_t __attribute__((bitwidth(18))) bcin, + int64_t __attribute__((bitwidth(48))) pcin, + int32_t __attribute__((bitwidth(1))) carrycascin, + int32_t __attribute__((bitwidth(1))) multsignin, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(1)))* multsignout, + int32_t __attribute__((bitwidth(1)))* carrycasCout, + int32_t __attribute__((bitwidth(4)))* carryout); + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP_AB( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int64_t __attribute__((bitwidth(48))) ab, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(4)))* carryout); +#ifdef __cplusplus +} +#endif +#endif +__dsp48_t +__builtin_madd( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 0, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msub( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 1, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msubed( + int64_t flags, + __dsp25_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return c - ((__dsp48_t)a) * ((__dsp48_t)b); +#else + return (int64_t)_ssdm_op_DSP(0, 2, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p3 = a3 + b3; + p4 = a4 + b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 3, flags, a, b, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p3 = a3 - b3; + p4 = a4 - b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 4, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 5, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 6, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amadd( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 7, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amsub( + int64_t flags, + __dsp25_t a, + __dsp25_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 8, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +#endif diff --git a/vitis/v2021_2/etc/dsp48e2_builtins.h b/vitis/v2021_2/etc/dsp48e2_builtins.h new file mode 100755 index 00000000..d1c34a4f --- /dev/null +++ b/vitis/v2021_2/etc/dsp48e2_builtins.h @@ -0,0 +1,340 @@ +// This header file is generated by script. Don't modify it manully + +#ifndef _DSP48E2_BUILTINS_H_ +#define _DSP48E2_BUILTINS_H_ + +// Flags +#define DSP_REGISTER_DEFAULT 0x00000000 +#define DSP_REGISTER_A1 0x00000001 +#define DSP_REGISTER_A2 0x00000002 +#define DSP_REGISTER_B1 0x00000004 +#define DSP_REGISTER_B2 0x00000008 +#define DSP_REGISTER_D 0x00000010 +#define DSP_REGISTER_AD 0x00000020 +#define DSP_REGISTER_M 0x00000040 +#define DSP_REGISTER_C 0x00000080 +#define DSP_REGISTER_P 0x00000100 +#define DSP_REGISTER_NO 0x00000200 + +// DSP builtin wrapper functions + +static inline __dsp48_t +__builtin_madd( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msub( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_msubed( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amadd( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_amsub( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_square_sub_add( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) __attribute__((always_inline)); + +static inline __dsp48_t +__builtin_square_add_subed( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) __attribute__((always_inline)); + + +#ifdef __HLS_SYN__ +// DSP state type +typedef __dsp48_t __xilinx_dsp_state; +#ifdef __cplusplus +extern "C" { +#endif + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int32_t __attribute__((bitwidth(27))) d, + int32_t __attribute__((bitwidth(30))) a, + int32_t __attribute__((bitwidth(18))) b, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(30))) acin, + int32_t __attribute__((bitwidth(18))) bcin, + int64_t __attribute__((bitwidth(48))) pcin, + int32_t __attribute__((bitwidth(1))) carrycascin, + int32_t __attribute__((bitwidth(1))) multsignin, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(1)))* multsignout, + int32_t __attribute__((bitwidth(1)))* carrycasCout, + int32_t __attribute__((bitwidth(4)))* carryout); + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_DSP_AB( + __xilinx_dsp_state *state, // Pass nullptr if we do not do accumulation + int32_t func_index, + int64_t flags, + int64_t __attribute__((bitwidth(48))) ab, + int64_t __attribute__((bitwidth(48))) c, + int32_t __attribute__((bitwidth(1))) carryin, + int32_t __attribute__((bitwidth(30)))* acout, + int32_t __attribute__((bitwidth(18)))* bcout, + int32_t __attribute__((bitwidth(4)))* carryout); +#ifdef __cplusplus +} +#endif +#endif +__dsp48_t +__builtin_madd( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 0, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msub( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 1, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_msubed( + int64_t flags, + __dsp27_t a, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return c - ((__dsp48_t)a) * ((__dsp48_t)b); +#else + return (int64_t)_ssdm_op_DSP(0, 2, flags, 0, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p3 = a3 + b3; + p4 = a4 + b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 3, flags, a, b, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_4sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFF; + __dsp48_t a2 = (a & 0xFFF000) >> 12; + __dsp48_t a3 = (a & 0xFFF000000) >> 24; + __dsp48_t a4 = (a & 0xFFF000000000) >> 36; + __dsp48_t b1 = b & 0xFFF; + __dsp48_t b2 = (b & 0xFFF000) >> 12; + __dsp48_t b3 = (b & 0xFFF000000) >> 24; + __dsp48_t b4 = (b & 0xFFF000000000) >> 36; + __dsp48_t p1, p2, p3, p4; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p3 = a3 - b3; + p4 = a4 - b4; + p = ((p4 & 0xFFF) << 36) + ((p3 & 0xFFF) << 24) + ((p2 & 0xFFF) << 12) + (p1 & 0xFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 4, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2add( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 + b1; + p2 = a2 + b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 5, flags, a, b, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_simd_2sub( + int64_t flags, + __dsp48_t a, + __dsp48_t b) +{ +#ifndef __HLS_SYN__ + __dsp48_t a1 = a & 0xFFFFFF; + __dsp48_t a2 = (a & 0xFFFFFF000000) >> 24; + __dsp48_t b1 = b & 0xFFFFFF; + __dsp48_t b2 = (b & 0xFFFFFF000000) >> 24; + __dsp48_t p1, p2; + __dsp48_t p; + p1 = a1 - b1; + p2 = a2 - b2; + p = ((p2 & 0xFFFFFF) << 24) + (p1 & 0xFFFFFF); + return p; +#else + return (int64_t)_ssdm_op_DSP_AB(0, 6, flags, b, a, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amadd( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 7, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_amsub( + int64_t flags, + __dsp27_t a, + __dsp27_t d, + __dsp18_t b, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)a + (__dsp48_t)d) * ((__dsp48_t)b) - c; +#else + return (int64_t)_ssdm_op_DSP(0, 8, flags, d, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_square_sub_add( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return ((__dsp48_t)d - (__dsp48_t)a) * ((__dsp48_t)d - (__dsp48_t)a) + c; +#else + return (int64_t)_ssdm_op_DSP(0, 11, flags, d, a, 0, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +__dsp48_t +__builtin_square_add_subed( + int64_t flags, + __dsp17_t a, + __dsp17_t d, + __dsp48_t c) +{ +#ifndef __HLS_SYN__ + return c - ((__dsp48_t)d + (__dsp48_t)a) * ((__dsp48_t)d + (__dsp48_t)a); +#else + return (int64_t)_ssdm_op_DSP(0, 12, flags, d, a, 0, c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +#endif +} + +#endif diff --git a/vitis/v2021_2/etc/dsp_dp_builtins.h b/vitis/v2021_2/etc/dsp_dp_builtins.h new file mode 100755 index 00000000..8c2f55bc --- /dev/null +++ b/vitis/v2021_2/etc/dsp_dp_builtins.h @@ -0,0 +1,105 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef X_DSP_DP_BUILTINS_H +#define X_DSP_DP_BUILTINS_H + +// User interfaces. +// Result += A1in * B1in + A2in * B2in + (clear ? 0 : Accum); +static inline int32_t __builtin_mac16x2( + int16_t A1in, + int16_t A2in, + int16_t B1in, + int16_t B2in, + int32_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) __attribute__((always_inline)); + +// This builtin is only used for speicial cases. +// Result = ((A1in << 21) + signed_ext_to_27bit(B1in)) * C1in + +// ((A2in << 21) + signed_ext_to 27bit(B2in)) * C2in + (clear ? 0 : Accum); +static inline __dsp48_t __builtin_mac6x2_mac8x1( + __dsp6_t A1in, + __dsp6_t A2in, + int8_t B1in, + int8_t B2in, + int8_t C1in, + int8_t C2in, + __dsp48_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) __attribute__((always_inline)); + +// HLS Internal functions, don't use them directly. +#ifdef __HLS_SYN__ +#ifdef __cplusplus +extern "C" { +#endif + +int32_t _ssdm_op_Mac16_Clockx2( + int __attribute__((bitwidth(1))) clockx2, + int16_t A1in, + int16_t A2in, + int16_t B1in, + int16_t B2in, + int32_t Accum, + int __attribute__((bitwidth(1))) clear); + +int64_t __attribute__((bitwidth(48))) +_ssdm_op_Mac6_Mac8_Clockx2( + int __attribute__((bitwidth(1))) clockx2, + int32_t __attribute__((bitwidth(6))) A1in, + int32_t __attribute__((bitwidth(6))) A2in, + int8_t B1in, + int8_t B2in, + int8_t C1in, + int8_t C2in, + int64_t __attribute__((bitwidth(48))) Accum, + int __attribute__((bitwidth(1))) clear); + +#ifdef __cplusplus +} +#endif +#endif + +int32_t __builtin_mac16x2( + int16_t A1in, + int16_t A2in, + int16_t B1in, + int16_t B2in, + int32_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) { +#ifdef __HLS_SYN__ + return _ssdm_op_Mac16_Clockx2(ap_clk_div2, A1in, A2in, B1in, B2in, 0, clear); +#else + return A1in * B1in + A2in * B2in + (clear ? 0 : Accum); +#endif +} + +__dsp48_t __builtin_mac6x2_mac8x1( + __dsp6_t A1in, + __dsp6_t A2in, + int8_t B1in, + int8_t B2in, + int8_t C1in, + int8_t C2in, + __dsp48_t Accum, + __dsp1_t clear, + __dsp1_t ap_clk_div2) { +#ifdef __HLS_SYN__ + return (long long)_ssdm_op_Mac6_Mac8_Clockx2(ap_clk_div2, A1in, A2in, B1in, B2in, C1in, C2in, 0, clear); +#else + int64_t A1 = A1in; + int64_t A2 = A2in; + int64_t B1 = B1in; + int64_t B2 = B2in; + int64_t C1 = C1in; + int64_t C2 = C2in; + A1 = A1 << 20; + A2 = A2 << 20; + int64_t AccumN = Accum; + int64_t Result = (A1 + B1) * C1 + (A2 + B2) * C2 + (clear ? 0 : AccumN); + return Result; +#endif +} + +#endif + diff --git a/vitis/v2021_2/fft/xfft_v9_0_bitacc_cmodel.h b/vitis/v2021_2/fft/xfft_v9_0_bitacc_cmodel.h new file mode 100755 index 00000000..f0466bb2 --- /dev/null +++ b/vitis/v2021_2/fft/xfft_v9_0_bitacc_cmodel.h @@ -0,0 +1,240 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +// $RCSfile: xfft_v9_0_bitacc_cmodel.h,v $ $Revision: 1.2 $ $Date: 2010/09/08 12:33:19 $ +// +// (c) Copyright 2008-2009 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//------------------------------------------------------------------- + +#ifndef xfft_v9_0_bitacc_cmodel_h +#define xfft_v9_0_bitacc_cmodel_h + +#ifdef NT +#define DLLIMPORT __declspec(dllimport) +#else +#define DLLIMPORT +#endif + +#ifndef Ip_xilinx_ip_xfft_v9_0_DLL +#define Ip_xilinx_ip_xfft_v9_0_DLL DLLIMPORT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct xilinx_ip_xfft_v9_0_generics +{ + /** + * XFFT v7.1 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + * Note: C_CHANNELS is not part of the generics structure - this is an error in the datasheet. + * To model a multichannel FFT, run this single channel model on each channel in turn. + */ + int C_NFFT_MAX; //@- log2(maximum transform length): 3-16 + int C_ARCH; //@- Architecture: 1=radix-4, 2=radix-2, 3=pipelined, 4=radix-2 Lite + int C_HAS_NFFT; //@- Run-time configurable transform length: 0=no, 1=yes + int C_USE_FLT_PT; //@- Input and output data format: 0=fixed-point, 1=single-precision floating point + int C_INPUT_WIDTH; //@- Input data width: 8-34 bits (32 if C_USE_FLT_PT = 1) + int C_TWIDDLE_WIDTH; //@- Twiddle factor width: 8-34 bits (24-25 if C_USE_FLT_PT = 1) + int C_HAS_SCALING; //@- Data is scaled after the butterfly: 0=no, 1=yes + int C_HAS_BFP; //@- Type of scaling if C_HAS_SCALING=1: 0=fixed scaling, 1=block floating point + int C_HAS_ROUNDING; //@- Type of data rounding: 0=truncation, 1=convergent rounding +}; // xilinx_ip_xfft_v9_0_generics + + +/** + * Get list of default generics. + * + * @returns xilinx_ip_xfft_v9_0_generics Default generics. + */ +Ip_xilinx_ip_xfft_v9_0_DLL +struct xilinx_ip_xfft_v9_0_generics +xilinx_ip_xfft_v9_0_get_default_generics(); + + +/** + * Structure containing the state of this C-Model. + * + * NOTE: State may persist between simulations. + */ +struct xilinx_ip_xfft_v9_0_state; + + +/** + * Create a new state structure for this C-Model. + * + * IMPORTANT: Client is responsible for calling xilinx_ip_xfft_v9_0_destroy_state() + * to free state memory. + * + * @param generics Generics to be used to configure C-Model state. + * + * @returns xilinx_ip_xfft_v9_0_state* Pointer to the internal state. + */ +Ip_xilinx_ip_xfft_v9_0_DLL +struct xilinx_ip_xfft_v9_0_state* +xilinx_ip_xfft_v9_0_create_state(struct xilinx_ip_xfft_v9_0_generics generics); + + +/** + * Destroy a state structure. + * + * @param state State structure to be destroyed (freed in memory). + */ +Ip_xilinx_ip_xfft_v9_0_DLL +void xilinx_ip_xfft_v9_0_destroy_state(struct xilinx_ip_xfft_v9_0_state* state); + + +/** + * Structure to capture all inputs to the XFFT v7.1 C-Model. + * + * @param nfft log2(transform length) for this transform. Maximum value is + * C_NFFT_MAX. Minimum value is 6 for Radix-4 architecture + * or 3 for other architectures. Only used for run-time + * configurable transform length (C_HAS_NFFT=1). + * @param xn_re Input data (real component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_re_size Size of xn_re array. Must be 2^nfft. + * @param xn_im Input data (imaginary component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_im_size Size of xn_im array. Must be 2^nfft. + * @param scaling_sch Array of integer values size S = number of stages. + * For Radix-4 and Streaming architectures, S = nfft/2, + * rounded up to the next integer. For Radix-2 and Radix-2 + * Lite architectures, S = nfft. Each value corresponds to + * scaling to be performed by the corresponding stage (so + * scaling in stage 0 is in scaling_sch[0]), and must be + * in the range 0 to 3. Only used for fixed scaling (if + * C_HAS_SCALING=1 and C_HAS_BFP=0). + * @param scaling_sch_size Size of scaling_sch array. Must be S. + * @param direction Transform direction: 1=forward FFT, 0=inverse FFT (IFFT). + */ +struct xilinx_ip_xfft_v9_0_inputs +{ + int nfft; //@- log2(point size) + + double* xn_re; //@- Input data (real) + int xn_re_size; + + double* xn_im; //@- Input data (imaginary) + int xn_im_size; + + int* scaling_sch; //@- Scaling schedule + int scaling_sch_size; + + int direction; //@- Transform direction +}; // end xilinx_ip_xfft_v9_0_inputs + + +/** + * Structure to capture all outputs from the XFFT v7.1 C-Model. + * + * Before using this structure the user is responsible for allocating enough memory + * for each output array, and specifying the number of array elements allocated in + * the _size parameters. If the _size values are too small, the model will fail with + * an error. It is OK to allocate more memory than is required and specify a larger + * number of array elements than required in the _size parameters. The model will set + * the _size parameters to indicate the number of array elements that contain valid + * output data. + * + * @param xk_re Output data (real component). + * @param xk_re_size Size of xk_re array. Must be at least 2^nfft. + * @param xk_im Output data (imaginary component). + * @param xk_im_size Size of xk_im array. Must be at least 2^nfft. + * @param blk_exp Block exponent. Only valid if using block floating point (if + * C_HAS_SCALING=1 and C_HAS_BFP=1). + * @param overflow Overflow: 1 indicates overflow occurred, 0 indicates no overflow + * occurred. Only valid if using fixed scaling (if C_HAS_SCALING=1 + * and C_HAS_BFP=0). + */ +struct xilinx_ip_xfft_v9_0_outputs +{ + double* xk_re; //@- Output data (real) + int xk_re_size; + + double* xk_im; //@- Output data (imaginary) + int xk_im_size; + + int blk_exp; //@- Block exponent + + int overflow; //@- Overflow occurred +}; // xilinx_ip_xfft_v9_0_outputs + + +/** + * Simulate this bit-accurate C-Model. + * + * @param state Internal state of this C-Model. State + * may span multiple simulations. + * @param inputs Inputs to this C-Model. + * @param outputs Outputs from this C-Model. + * + * @returns Exit code Zero for SUCCESS, Non-zero otherwise. + */ +Ip_xilinx_ip_xfft_v9_0_DLL +int xilinx_ip_xfft_v9_0_bitacc_simulate +( + struct xilinx_ip_xfft_v9_0_state* state, + struct xilinx_ip_xfft_v9_0_inputs inputs, + struct xilinx_ip_xfft_v9_0_outputs* outputs + ); + + +#ifdef __cplusplus +} +#endif + + +#endif // xfft_v9_0_bitacc_cmodel_h + diff --git a/vitis/v2021_2/fft/xfft_v9_1_bitacc_cmodel.h b/vitis/v2021_2/fft/xfft_v9_1_bitacc_cmodel.h new file mode 100755 index 00000000..f3c7c4e3 --- /dev/null +++ b/vitis/v2021_2/fft/xfft_v9_1_bitacc_cmodel.h @@ -0,0 +1,239 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +// $RCSfile: xfft_v9_1_bitacc_cmodel.h,v $ $Revision: 1.2 $ $Date: 2010/09/08 12:33:19 $ +// +// (c) Copyright 2008-2009 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//------------------------------------------------------------------- + +#ifndef xfft_v9_1_bitacc_cmodel_h +#define xfft_v9_1_bitacc_cmodel_h + +#ifdef NT +#define DLLIMPORT __declspec(dllimport) +#else +#define DLLIMPORT +#endif + +#ifndef Ip_xilinx_ip_xfft_v9_1_DLL +#define Ip_xilinx_ip_xfft_v9_1_DLL DLLIMPORT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct xilinx_ip_xfft_v9_1_generics +{ + /** + * XFFT v7.1 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + * Note: C_CHANNELS is not part of the generics structure - this is an error in the datasheet. + * To model a multichannel FFT, run this single channel model on each channel in turn. + */ + int C_NFFT_MAX; //@- log2(maximum transform length): 3-16 + int C_ARCH; //@- Architecture: 1=radix-4, 2=radix-2, 3=pipelined, 4=radix-2 Lite + int C_HAS_NFFT; //@- Run-time configurable transform length: 0=no, 1=yes + int C_USE_FLT_PT; //@- Input and output data format: 0=fixed-point, 1=single-precision floating point + int C_INPUT_WIDTH; //@- Input data width: 8-34 bits (32 if C_USE_FLT_PT = 1) + int C_TWIDDLE_WIDTH; //@- Twiddle factor width: 8-34 bits (24-25 if C_USE_FLT_PT = 1) + int C_HAS_SCALING; //@- Data is scaled after the butterfly: 0=no, 1=yes + int C_HAS_BFP; //@- Type of scaling if C_HAS_SCALING=1: 0=fixed scaling, 1=block floating point + int C_HAS_ROUNDING; //@- Type of data rounding: 0=truncation, 1=convergent rounding +}; // xilinx_ip_xfft_v9_1_generics + + +/** + * Get list of default generics. + * + * @returns xilinx_ip_xfft_v9_1_generics Default generics. + */ +Ip_xilinx_ip_xfft_v9_1_DLL +struct xilinx_ip_xfft_v9_1_generics +xilinx_ip_xfft_v9_1_get_default_generics(); + + +/** + * Structure containing the state of this C-Model. + * + * NOTE: State may persist between simulations. + */ +struct xilinx_ip_xfft_v9_1_state; + + +/** + * Create a new state structure for this C-Model. + * + * IMPORTANT: Client is responsible for calling xilinx_ip_xfft_v9_1_destroy_state() + * to free state memory. + * + * @param generics Generics to be used to configure C-Model state. + * + * @returns xilinx_ip_xfft_v9_1_state* Pointer to the internal state. + */ +Ip_xilinx_ip_xfft_v9_1_DLL +struct xilinx_ip_xfft_v9_1_state* +xilinx_ip_xfft_v9_1_create_state(struct xilinx_ip_xfft_v9_1_generics generics); + + +/** + * Destroy a state structure. + * + * @param state State structure to be destroyed (freed in memory). + */ +Ip_xilinx_ip_xfft_v9_1_DLL +void xilinx_ip_xfft_v9_1_destroy_state(struct xilinx_ip_xfft_v9_1_state* state); + + +/** + * Structure to capture all inputs to the XFFT v7.1 C-Model. + * + * @param nfft log2(transform length) for this transform. Maximum value is + * C_NFFT_MAX. Minimum value is 6 for Radix-4 architecture + * or 3 for other architectures. Only used for run-time + * configurable transform length (C_HAS_NFFT=1). + * @param xn_re Input data (real component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_re_size Size of xn_re array. Must be 2^nfft. + * @param xn_im Input data (imaginary component). If C_USE_FLT_PT = 0, all + * components must be -1.0 <= data < +1.0. To ensure identical + * numerical behavior to the hardware, pre-quantize the data values + * to have precision determined by C_INPUT_WIDTH. If C_USE_FLT_PT = 1, + * all components must be representable in the C++ float datatype + * as single-precision, 32-bit values. + * @param xn_im_size Size of xn_im array. Must be 2^nfft. + * @param scaling_sch Array of integer values size S = number of stages. + * For Radix-4 and Streaming architectures, S = nfft/2, + * rounded up to the next integer. For Radix-2 and Radix-2 + * Lite architectures, S = nfft. Each value corresponds to + * scaling to be performed by the corresponding stage (so + * scaling in stage 0 is in scaling_sch[0]), and must be + * in the range 0 to 3. Only used for fixed scaling (if + * C_HAS_SCALING=1 and C_HAS_BFP=0). + * @param scaling_sch_size Size of scaling_sch array. Must be S. + * @param direction Transform direction: 1=forward FFT, 0=inverse FFT (IFFT). + */ +struct xilinx_ip_xfft_v9_1_inputs +{ + int nfft; //@- log2(point size) + + double* xn_re; //@- Input data (real) + int xn_re_size; + + double* xn_im; //@- Input data (imaginary) + int xn_im_size; + + int* scaling_sch; //@- Scaling schedule + int scaling_sch_size; + + int direction; //@- Transform direction +}; // end xilinx_ip_xfft_v9_1_inputs + + +/** + * Structure to capture all outputs from the XFFT v7.1 C-Model. + * + * Before using this structure the user is responsible for allocating enough memory + * for each output array, and specifying the number of array elements allocated in + * the _size parameters. If the _size values are too small, the model will fail with + * an error. It is OK to allocate more memory than is required and specify a larger + * number of array elements than required in the _size parameters. The model will set + * the _size parameters to indicate the number of array elements that contain valid + * output data. + * + * @param xk_re Output data (real component). + * @param xk_re_size Size of xk_re array. Must be at least 2^nfft. + * @param xk_im Output data (imaginary component). + * @param xk_im_size Size of xk_im array. Must be at least 2^nfft. + * @param blk_exp Block exponent. Only valid if using block floating point (if + * C_HAS_SCALING=1 and C_HAS_BFP=1). + * @param overflow Overflow: 1 indicates overflow occurred, 0 indicates no overflow + * occurred. Only valid if using fixed scaling (if C_HAS_SCALING=1 + * and C_HAS_BFP=0). + */ +struct xilinx_ip_xfft_v9_1_outputs +{ + double* xk_re; //@- Output data (real) + int xk_re_size; + + double* xk_im; //@- Output data (imaginary) + int xk_im_size; + + int blk_exp; //@- Block exponent + + int overflow; //@- Overflow occurred +}; // xilinx_ip_xfft_v9_1_outputs + + +/** + * Simulate this bit-accurate C-Model. + * + * @param state Internal state of this C-Model. State + * may span multiple simulations. + * @param inputs Inputs to this C-Model. + * @param outputs Outputs from this C-Model. + * + * @returns Exit code Zero for SUCCESS, Non-zero otherwise. + */ +Ip_xilinx_ip_xfft_v9_1_DLL +int xilinx_ip_xfft_v9_1_bitacc_simulate +( + struct xilinx_ip_xfft_v9_1_state* state, + struct xilinx_ip_xfft_v9_1_inputs inputs, + struct xilinx_ip_xfft_v9_1_outputs* outputs + ); + + +#ifdef __cplusplus +} +#endif + + +#endif // xfft_v9_1_bitacc_cmodel_h diff --git a/vitis/v2021_2/fir/fir_compiler_v7_2_bitacc_cmodel.h b/vitis/v2021_2/fir/fir_compiler_v7_2_bitacc_cmodel.h new file mode 100755 index 00000000..5fd27fdd --- /dev/null +++ b/vitis/v2021_2/fir/fir_compiler_v7_2_bitacc_cmodel.h @@ -0,0 +1,449 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +//----------------------------------------------------------------------------- +// (c) Copyright 2011 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// Purpose : Header file for bit accurate C model + +#ifndef XIP_FIR_COMPILER_v7_2_BITACC_CMODEL_H +#define XIP_FIR_COMPILER_v7_2_BITACC_CMODEL_H + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models +#undef XIP_XILINX_XIP_TARGET +#define XIP_XILINX_XIP_TARGET fir_v7_2 +#include "xip_common_bitacc_cmodel.h" +#include "xip_mpz_bitacc_cmodel.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//Depreciated; these functions now defined within model +#define DEFINE_FIR_XIP_ARRAY(TYPE) + +/** + * Filter Types + */ +#define XIP_FIR_SINGLE_RATE 0 +#define XIP_FIR_INTERPOLATION 1 +#define XIP_FIR_DECIMATION 2 +#define XIP_FIR_HILBERT 3 +#define XIP_FIR_INTERPOLATED 4 + +/** + * Rate Change Type + */ +#define XIP_FIR_INTEGER_RATE 0 +#define XIP_FIR_FRACTIONAL_RATE 1 + +/** + * Channel Sequence Type + */ +#define XIP_FIR_BASIC_CHAN_SEQ 0 +#define XIP_FIR_ADVANCED_CHAN_SEQ 1 + +/** + * Quantization + */ +#define XIP_FIR_INTEGER_COEFF 0 +#define XIP_FIR_QUANTIZED_ONLY 1 +#define XIP_FIR_MAXIMIZE_DYNAMIC_RANGE 2 +#define XIP_FIR_NORMALIZE_TO_CENTRE_COEFFICIENT 3 + +/** + * Output Rounding + */ +#define XIP_FIR_FULL_PRECISION 0 +#define XIP_FIR_TRUNCATE_LSBS 1 +#define XIP_FIR_SYMMETRIC_ZERO 2 +#define XIP_FIR_SYMMETRIC_INF 3 +#define XIP_FIR_CONVERGENT_EVEN 4 +#define XIP_FIR_CONVERGENT_ODD 5 +#define XIP_FIR_NON_SYMMETRIC_DOWN 6 +#define XIP_FIR_NON_SYMMETRIC_UP 7 + +/** + * Configuration Method + */ +#define XIP_FIR_CONFIG_SINGLE 0 +#define XIP_FIR_CONFIG_BY_CHANNEL 1 + +/** + * Advance channel pattern ID + */ +typedef enum +{ + P4_0 = 0, P4_1 = 1, P4_2 = 2, P4_3 = 3, P4_4 = 4, + P6_0 = 5, P6_1 = 6, P6_2 = 7, P6_3 = 8, P6_4 = 9, P6_5 = 10, P6_6 = 11, P6_7 = 12, P6_8 = 13, + P8_0 = 14, P8_1 = 15, P8_2 = 16, P8_3 = 17, P8_4 = 18, P8_5 = 19, P8_6 = 20, P8_7 = 21, P8_8 = 22, P8_9 = 23, P8_10 = 24, P8_11 = 25, P8_12 = 26, + P12_0 = 27, P12_1 = 28, P12_2 = 29, P12_3 = 30, P12_4 = 31, P12_5 = 32, P12_6 = 33, P12_7 = 34, P12_8 = 35, P12_9 = 36, P12_10 = 37, P12_11 = 38, P12_12 = 39, P12_13 = 40, P12_14 = 41, P12_15 = 42, P12_16 = 43, P12_17 = 44, P12_18 = 45, P12_19 = 46, P12_20 = 47, P12_21 = 48, P12_22 = 49, P12_23 = 50, P12_24 = 51, P12_25 = 52, P12_26 = 53, + P16_0 = 54, P16_1 = 55, P16_2 = 56, P16_3 = 57, P16_4 = 58, P16_5 = 59, P16_6 = 60, P16_7 = 61, P16_8 = 62, P16_9 = 63, P16_10 = 64, P16_11 = 65, P16_12 = 66, P16_13 = 67, P16_14 = 68, P16_15 = 69, P16_16 = 70, P16_17 = 71, P16_18 = 72, P16_19 = 73, P16_20 = 74, P16_21 = 75, + P24_0 = 76, P24_1 = 77, P24_2 = 78, P24_3 = 79, P24_4 = 80, P24_5 = 81, P24_6 = 82, P24_7 = 83, P24_8 = 84, P24_9 = 85, P24_10 = 86, P24_11 = 87, P24_12 = 88, P24_13 = 89, P24_14 = 90, P24_15 = 91, P24_16 = 92, P24_17 = 93, P24_18 = 94, P24_19 = 95, P24_20 = 96, P24_21 = 97, P24_22 = 98, P24_23 = 99, P24_24 = 100, P24_25 = 101, P24_26 = 102, P24_27 = 103, + P32_0 = 104, P32_1 = 105, P32_2 = 106, P32_3 = 107, P32_4 = 108, P32_5 = 109, P32_6 = 110, P32_7 = 111, P32_8 = 112, P32_9 = 113, P32_10 = 114, P32_11 = 115, P32_12 = 116, P32_13 = 117, P32_14 = 118, P32_15 = 119, P32_16 = 120, P32_17 = 121, P32_18 = 122, P32_19 = 123, P32_20 = 124, P32_21 = 125, + P48_0 = 126, P48_1 = 127, P48_2 = 128, P48_3 = 129, P48_4 = 130, P48_5 = 131, P48_6 = 132, P48_7 = 133, P48_8 = 134, P48_9 = 135, P48_10 = 136, P48_11 = 137, P48_12 = 138, P48_13 = 139, P48_14 = 140, P48_15 = 141, P48_16 = 142, P48_17 = 143, P48_18 = 144, P48_19 = 145, P48_20 = 146, P48_21 = 147, P48_22 = 148, P48_23 = 149, P48_24 = 150, P48_25 = 151, P48_26 = 152, + P64_0 = 153, P64_1 = 154, P64_2 = 155, P64_3 = 156, P64_4 = 157, P64_5 = 158, P64_6 = 159, P64_7 = 160, P64_8 = 161, P64_9 = 162, P64_10 = 163, P64_11 = 164, P64_12 = 165, P64_13 = 166, P64_14 = 167, P64_15 = 168, P64_16 = 169, P64_17 = 170, P64_18 = 171, P64_19 = 172, P64_20 = 173, P64_21 = 174, + P_MAX = 175, // Dummy max size entry + P_BASIC = 176 // Indicates Basic interleaved channels +} xip_fir_v7_2_pattern; + +#define XIP_FIR_MAX_ADV_CHAN 64 +#define XIP_FIR_MAX_ADV_CHAN_INDEX 24 + +XIP_XILINX_XIP_IMPEXP extern const int xip_fir_v7_2_pattern_map[P_MAX][XIP_FIR_MAX_ADV_CHAN][XIP_FIR_MAX_ADV_CHAN_INDEX+1]; +XIP_XILINX_XIP_IMPEXP extern const int xip_fir_v7_2_pattern_seq[P_MAX][XIP_FIR_MAX_ADV_CHAN]; + +/** + * Core configuration structure. + * + * Must be created and populated in order to instantiate the model. + */ +typedef struct +{ + const char* name; //@- Instance name to use in error/warning reporting + + unsigned int filter_type; //@- Select from: XIP_FIR_SINGLE_RATE, XIP_FIR_INTERPOLATION, XIP_FIR_DECIMATION, XIP_FIR_HILBERT, XIP_FIR_INTERPOLATED + unsigned int rate_change; //@- Select from: XIP_FIR_INTEGER_RATE, XIP_FIR_FRACTIONAL_RATE + unsigned int interp_rate; //@- Specifies the interpolation (or up-sampling) factor + unsigned int decim_rate; //@- Specifies the decimation (or down-sampling) factor + unsigned int zero_pack_factor; //@- Specifies the zero packing factor for Interpolated filters + + const double* coeff; //@- Pointer to coefficient array + unsigned int coeff_padding; //@- Specifies the amount zero padding added to the front of the filter + unsigned int num_coeffs; //@- Specifies the number of coefficients in one filter + unsigned int coeff_sets; //@- Specifies the number of coefficient sets in the coeff array + unsigned int reloadable; //@- Specifies if the coefficients are reloadable; 0 = No, 1 = Yes + unsigned int is_halfband; //@- Specifies if halfband coefficients have been used; 0 = No, 1 = Yes + unsigned int quantization; //@- Specifies how the coeff array should quantized, select from: XIP_FIR_INTEGER_COEFF, XIP_FIR_QUANTIZED_ONLY, XIP_FIR_MAXIMIZE_DYNAMIC_RANGE + unsigned int coeff_width; //@- Used to quantize the supplied coefficients. + unsigned int coeff_fract_width; //@- Used to quantize the supplied coefficients. + + unsigned int chan_seq; //@- Specifies the channel sequence type, select from: XIP_FIR_BASIC_CHAN_SEQ, XIP_FIR_ADVANCED_CHAN_SEQ + unsigned int num_channels; //@- Specifies the number of data channels supported + xip_fir_v7_2_pattern init_pattern; //@- Specifies the initial channel pattern used by the core + unsigned int num_paths; //@- Specifies the number of data paths supported + + unsigned int data_width; //@- Used to quantize the input data + unsigned int data_fract_width; //@- Used to quantize the input data + unsigned int output_rounding_mode; //@- Select from: XIP_FIR_FULL_PRECISION, XIP_FIR_TRUNCATE_LSBS, XIP_FIR_SYMMETRIC_ZERO, XIP_FIR_SYMMETRIC_INF, XIP_FIR_CONVERGENT_EVEN, XIP_FIR_CONVERGENT_ODD, XIP_FIR_NON_SYMMETRIC_DOWN, XIP_FIR_NON_SYMMETRIC_UP + unsigned int output_width; //@- Ignored when XIP_FIR_FULL_PRECISION + unsigned int output_fract_width; //@- READ ONLY: Provides the number of fractional bits present in output word + unsigned int config_method; //@- Specifies the form of the configuration packets, select from: XIP_FIR_CONFIG_SINGLE, XIP_FIR_CONFIG_BY_CHANNEL +} xip_fir_v7_2_config; + +/** + * FIR Configuration packet + */ +typedef struct +{ + xip_fir_v7_2_pattern chanpat; //@- Specifies the Advanced channel pattern to use + xip_array_uint* fsel; //@- Specifies which coefficient set to use for each channel +} xip_fir_v7_2_cnfg_packet; + +/** + * FIR Reload packet + */ +typedef struct +{ + xip_uint fsel; //@- Specifies which coefficient set is to be reloaded + xip_array_real* coeff; //@- Specifies the coefficients to load +} xip_fir_v7_2_rld_packet; + +/** + * FIR handle type (opaque to user). + */ +struct _xip_fir_v7_2; +typedef struct _xip_fir_v7_2 xip_fir_v7_2; + +/** + * Define additional FIR specific xip_array_ helper functions: + * o xip_array__set_chan + * @param p Pointer to xip_array_ to be modified + * @param value xip_ scalar value to assigned to specified channel + * @param path Parallel data path of channel to set + * @param chan Channel to set + * @param index Array index of channel to set, consider each channel as a seperate 1-D array indexed from 0 + * @param pattern Specifies the advanced interleaved pattern to be used, for basic interleaved channels use P_BASIC + * @returns Exit code XIP_STATUS_* + * o xip_array__get_chan + * @param p Pointer to xip_array_ to be modified + * @param value Pointer to xip_ scalar to write to specified channel + * @param path Parallel data path of channel to set + * @param chan Channel to set + * @param index Array index of channel to set, consider each channel as a seperate 1-D array indexed from 0 + * @param pattern Specifies the advanced interleaved pattern to be used, for basic interleaved channels use P_BASIC + * @returns Exit code XIP_STATUS_* + */ + +#define DECLARE_FIR_XIP_ARRAY(TYPE) \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_fir_v7_2_xip_array_##TYPE##_set_chan(xip_array_##TYPE* p, const xip_##TYPE value, size_t path, size_t chan, size_t index, xip_fir_v7_2_pattern pattern); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_fir_v7_2_xip_array_##TYPE##_get_chan(const xip_array_##TYPE* p, xip_##TYPE* value, size_t path, size_t chan, size_t index, xip_fir_v7_2_pattern pattern); \ + +/** + * Declare FIR specific array helper functions for the fundamental types used by the FIR data channels + */ +DECLARE_FIR_XIP_ARRAY(real); +DECLARE_FIR_XIP_ARRAY(complex); +DECLARE_FIR_XIP_ARRAY(mpz); +DECLARE_FIR_XIP_ARRAY(mpz_complex); + +/** + * Get version of model. + * + * @returns String Textual representation of model version + */ +XIP_XILINX_XIP_IMPEXP +const char* xip_fir_v7_2_get_version(void); + +/** + * Fill in a configuration structure with the core's default values. + * + * @param config The configuration structure to be populated + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_default_config( + xip_fir_v7_2_config* config +); + +/** + * Create a new instance of the core based on some configuration values. + * + * @param config Pointer to a xip_fir_v7_2_config structure + * @param msg_handler Callback function for errors and warnings (providing a null + * pointer means no messages are output) + * @param msg_handle Optional argument to be passed back to callback function + * + * @returns model Pointer to xip_fir_v7_2 state structure + */ +XIP_XILINX_XIP_IMPEXP +xip_fir_v7_2* xip_fir_v7_2_create( + const xip_fir_v7_2_config* config, + xip_msg_handler msg_handler, + void* msg_handle +); + +/** + * Fill a configuration structure with the core's current state + * + * @param model Pointer to xip_fir_v7_2 state structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_get_config( + xip_fir_v7_2* model, + xip_fir_v7_2_config* config +); + +/** + * Reset an instance of the core + * + * @param model Pointer to xip_fir_v7_2 state structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_reset(xip_fir_v7_2* model); + +/** + * Destroy an instance of the core and free any resources allocated. + * + * @param model Pointer to xip_fir_v7_2 state structure + * @returns Exit code XIP_STATUS_* + * + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_destroy(xip_fir_v7_2* model); + +/** + * Register an output structure to write model output + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data Pointer to an xip_array_ structure + * @param cmplx_data Pointer to an xip_array_ structure, if data is set this argument will be + * ignored. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_set_data_sink( + xip_fir_v7_2* model, + xip_array_real* data, + xip_array_complex* cmplx_data +); +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_set_data_sink_mpz( + xip_fir_v7_2* model, + xip_array_mpz* data, + xip_array_mpz_complex* cmplx_data +); + +/** + * Register a callback function to process the registered output structure + * Called when the output structure has been filled + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data_handler Callback function to process output array + * @param handle Optional argument to be passed back to callback function + * @param opt_arg Optional argument to be passed back to callback function + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_set_data_handler( + xip_fir_v7_2* model, + xip_array_real_handler data_handler, + void* handle, + void* opt_arg +); + +/** + * Calculate size of output in response to transaction. + * + * The number of input samples is examined and used to compute the number of + * output samples that would be produced if this structure was presented to the + * xip_fir_v7_2_data_send. The dim,dim_size and data_size fields of the output + * data structure are populated + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data_in Pointer to an xip_array_ structure + * @param data_out Pointer to an xip_array_ structure + * @param cmplx_data_out Pointer to an xip_array_ structure, if data_out is set this argument + * will be ignored. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_calc_size( + xip_fir_v7_2* model, + const xip_array_real* data_in, + xip_array_real* data_out, + xip_array_complex* cmplx_data_out +); +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_calc_size_mpz( + xip_fir_v7_2* model, + const xip_array_real* data_in, + xip_array_mpz* data_out, + xip_array_mpz_complex* cmplx_data_out +); + +/** + * Pass a configuration packet to the model + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param cng_packet Pointer to an xip_fir_v7_2_cnfg_packet structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_config_send( + xip_fir_v7_2* model, + const xip_fir_v7_2_cnfg_packet* cnfg_packet +); + +/** + * Pass a reload packet to the model + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param cng_packet Pointer to an xip_fir_v7_2_rld_packet structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_reload_send( + xip_fir_v7_2* model, + const xip_fir_v7_2_rld_packet* rld_packet +); + +/** + * Pass a data packet to the model for processing + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data Pointer to an xip_array_real structure + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_data_send( + xip_fir_v7_2* model, + const xip_array_real* data +); + +/** + * Callback function used to pass a data packet to the model for processing + * + * @param data Pointer to an xip_array_real structure + * @param model Pointer to xip_fir_v7_2 state structure, cast to void + * @param dummy Pointer for optional callback argument, redundant for fir model. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +int xip_fir_v7_2_data_send_handler( + const xip_array_real* data, + void* model, + void* dummy +); + +/** + * Extract a data packet from the model + * + * @param model Pointer to xip_fir_v7_2 state structure + * @param data Pointer to an xip_array_ structure + * @param cmplx_data Pointer to an xip_array_ structure, if data is set this argument will be + * ignored. + * @returns Exit code XIP_STATUS_* + */ +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_data_get( + xip_fir_v7_2* model, + xip_array_real* data, + xip_array_complex* cmplx_data +); +XIP_XILINX_XIP_IMPEXP +xip_status xip_fir_v7_2_data_get_mpz( + xip_fir_v7_2* model, + xip_array_mpz* data, + xip_array_mpz_complex* cmplx_data +); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_FIR_COMPILER_v7_2_BITACC_CMODEL_H diff --git a/vitis/v2021_2/fir/gmp.h b/vitis/v2021_2/fir/gmp.h new file mode 100755 index 00000000..18b7e9dc --- /dev/null +++ b/vitis/v2021_2/fir/gmp.h @@ -0,0 +1,2471 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* Definitions for GNU multiple precision functions. -*- mode: c -*- + +Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, +2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + +Copyright 2008 William Hart, Gonzalo Tornaria + +This file is part of the MPIR Library. + +The MPIR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The MPIR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ + +#ifndef __GMP_H__ + +#if defined (__cplusplus) +#include /* for std::istream, std::ostream, std::string */ +#include +#endif + + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_BITS_PER_MP_LIMB 32 +#define GMP_LIMB_BITS 32 +#define GMP_NAIL_BITS 0 +#endif +#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) +#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) +#define GMP_NUMB_MAX GMP_NUMB_MASK +#define GMP_NAIL_MASK (~ GMP_NUMB_MASK) + + +#ifndef __GNU_MP__ +#define __GNU_MP__ 4 + +#define __need_size_t /* tell gcc stddef.h we only want size_t */ +#if defined (__cplusplus) +#include /* for size_t */ +#else +#include /* for size_t */ +#endif +#undef __need_size_t + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +/* #undef _LONG_LONG_LIMB */ +#define __GMP_LIBGMP_DLL 0 +#endif + +/* #if defined(__GMP_WITHIN_CONFIGURE) && defined(_WIN64) */ +#ifdef __WIN64 +#define _LONG_LONG_LIMB 1 +#endif + +/* __STDC__ - some ANSI compilers define this only to 0, hence the use of + "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 + sets __STDC__ to 0, but requires "##" for token pasting. + + _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but + don't always define __STDC__. + + __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI, + but don't define __STDC__ in their default mode. Don't know if old + versions might have been K&R, but let's not worry about that unless + someone is still using one. + + _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 + mode, but doesn't define __STDC__. + + _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za + option is given (in which case it's 1). + + _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that + all w32 compilers are ansi. + + Note: This same set of tests is used by gen-psqr.c and + demos/expr/expr-impl.h, so if anything needs adding, then be sure to + update those too. */ + +#if defined (__STDC__) \ + || defined (__cplusplus) \ + || defined (_AIX) \ + || defined (__DECC) \ + || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ + || defined (_MSC_VER) \ + || defined (_WIN32) +#define __GMP_HAVE_CONST 1 +#define __GMP_HAVE_PROTOTYPES 1 +#define __GMP_HAVE_TOKEN_PASTE 1 +#else +#define __GMP_HAVE_CONST 0 +#define __GMP_HAVE_PROTOTYPES 0 +#define __GMP_HAVE_TOKEN_PASTE 0 +#endif + + +#if __GMP_HAVE_CONST +#define __gmp_const const +#define __gmp_signed signed +#else +#define __gmp_const +#define __gmp_signed +#endif + + +/* __GMP_DECLSPEC supports Windows DLL versions of libmpir, and is empty in + all other circumstances. + + When compiling objects for libmpir, __GMP_DECLSPEC is an export directive, + or when compiling for an application it's an import directive. The two + cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles + (and not defined from an application). + + __GMP_DECLSPEC_XX is similarly used for libmpirxx. __GMP_WITHIN_GMPXX + indicates when building libmpirxx, and in that case libmpirxx functions are + exports, but libmpir functions which might get called are imports. + + libmp.la uses __GMP_DECLSPEC, just as if it were libmpir.la. libmpir and + libmp don't call each other, so there's no conflict or confusion. + + Libtool DLL_EXPORT define is not used. + + There's no attempt to support GMP built both static and DLL. Doing so + would mean applications would have to tell us which of the two is going + to be used when linking, and that seems very tedious and error prone if + using GMP by hand, and equally tedious from a package since autoconf and + automake don't give much help. + + __GMP_DECLSPEC is required on all documented global functions and + variables, the various internals in gmp-impl.h etc can be left unadorned. + But internals used by the test programs or speed measuring programs + should have __GMP_DECLSPEC, and certainly constants or variables must + have it or the wrong address will be resolved. + + In gcc __declspec can go at either the start or end of a prototype. + + In Microsoft C __declspec must go at the start, or after the type like + void __declspec(...) *foo()". There's no __dllexport or anything to + guard against someone foolish #defining dllexport. _export used to be + available, but no longer. + + In Borland C _export still exists, but needs to go after the type, like + "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to + make use of that. Probably more trouble than it's worth. */ + +#if defined (__GNUC__) +#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) +#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) +#endif +#if defined (_MSC_VER) || defined (__BORLANDC__) +#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) +#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) +#endif +#ifdef __WATCOMC__ +#define __GMP_DECLSPEC_EXPORT __export +#define __GMP_DECLSPEC_IMPORT __import +#endif +#ifdef __IBMC__ +#define __GMP_DECLSPEC_EXPORT _Export +#define __GMP_DECLSPEC_IMPORT _Import +#endif + +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMP +/* compiling to go into a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into an application which will link to a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC +#endif + + +#ifdef __GMP_SHORT_LIMB +typedef unsigned int mp_limb_t; +typedef int mp_limb_signed_t; +#else +#ifdef _LONG_LONG_LIMB +typedef unsigned long long int mp_limb_t; +typedef long long int mp_limb_signed_t; +#else +typedef unsigned long int mp_limb_t; +typedef long int mp_limb_signed_t; +#endif +#endif + +#ifdef _WIN64 +#define BITS_PER_UI BITS_PER_MP_LIMB +typedef mp_limb_t mpir_ui; +typedef mp_limb_signed_t mpir_si; +typedef mpir_ui mp_bitcnt_t; +#else +#define BITS_PER_UI BITS_PER_ULONG +typedef unsigned long mpir_ui; +typedef long mpir_si; +typedef mpir_ui mp_bitcnt_t; +#endif +#define GMP_UI_MAX ((mpir_ui)(~(mpir_ui)0)) +#define GMP_UI_HIBIT (GMP_UI_MAX ^ (GMP_UI_MAX >> 1)) +#define GMP_SI_MAX ((mpir_si)(GMP_UI_MAX ^ GMP_UI_HIBIT)) +#define GMP_SI_MIN ((mpir_si)GMP_UI_HIBIT) +#define __GMP_BITCNT_MAX (~(mp_bitcnt_t)0) + +/* For reference, note that the name __mpz_struct gets into C++ mangled + function names, which means although the "__" suggests an internal, we + must leave this name for binary compatibility. */ +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +#endif /* __GNU_MP__ */ + +typedef __mpz_struct mpz_t[1]; + +typedef mp_limb_t * mp_ptr; +typedef __gmp_const mp_limb_t * mp_srcptr; +#if defined( _WIN64) +#define __GMP_MP_SIZE_T_INT 0 +typedef long long int mp_size_t; +typedef long int mp_exp_t; +#else +#define __GMP_MP_SIZE_T_INT 0 +typedef long int mp_size_t; +typedef long int mp_exp_t; +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct mpq_t[1]; + +typedef struct +{ + int _mp_prec; /* Max precision, in number of `mp_limb_t's. + Set by mpf_init and modified by + mpf_set_prec. The area pointed to by the + _mp_d field contains `prec' + 1 limbs. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpf_struct; + +typedef __mpf_struct mpf_t[1]; + +/* Available random number generation algorithms. */ +typedef enum +{ + GMP_RAND_ALG_DEFAULT = 0, + GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ +} gmp_randalg_t; + +/* Random state struct. */ +typedef struct +{ + mpz_t _mp_seed; /* _mp_d member points to state of the generator. */ + gmp_randalg_t _mp_alg; /* Currently unused. */ + union { + void *_mp_lc; /* Pointer to function pointers structure. */ + } _mp_algdata; +} __gmp_randstate_struct; +typedef __gmp_randstate_struct gmp_randstate_t[1]; + +/* Types for function declarations in gmp files. */ +/* ??? Should not pollute user name space with these ??? */ +typedef __gmp_const __mpz_struct *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __gmp_const __mpf_struct *mpf_srcptr; +typedef __mpf_struct *mpf_ptr; +typedef __gmp_const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; + + +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMPXX +/* compiling to go into a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into a application which will link to a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC_XX +#endif + + +#if __GMP_HAVE_PROTOTYPES +#define __GMP_PROTO(x) x +#else +#define __GMP_PROTO(x) () +#endif + +#ifndef __MPN +#if __GMP_HAVE_TOKEN_PASTE +#define __MPN(x) __gmpn_##x +#else +#define __MPN(x) __gmpn_/**/x +#endif +#endif + +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ +#define _GMP_H_HAVE_FILE 1 +#endif + +/* In ISO C, if a prototype involving "struct obstack *" is given without + that structure defined, then the struct is scoped down to just the + prototype, causing a conflict if it's subsequently defined for real. So + only give prototypes if we've got obstack.h. */ +#if defined (_OBSTACK_H) /* glibc */ +#define _GMP_H_HAVE_OBSTACK 1 +#endif + +/* The prototypes for gmp_vprintf etc are provided only if va_list is + available, via an application having included or . + Usually va_list is a typedef so can't be tested directly, but C99 + specifies that va_start is a macro (and it was normally a macro on past + systems too), so look for that. + + will define some sort of va_list for vprintf and vfprintf, but + let's not bother trying to use that since it's not standard and since + application uses for gmp_vprintf etc will almost certainly require the + whole or anyway. */ + +#ifdef va_start +#define _GMP_H_HAVE_VA_LIST 1 +#endif + +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GMP_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GMP_GNUC_PREREQ(maj, min) 0 +#endif + +/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically + it means a function does nothing but examine its arguments and memory + (global or via arguments) to generate a return value, but changes nothing + and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets + tune/common.c etc turn this off when trying to write timing loops. */ +#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE) +#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +#define __GMP_ATTRIBUTE_PURE +#endif + + +/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean + to "g++ -Wold-style-cast". + + Casts in "extern inline" code within an extern "C" block don't induce + these warnings, so __GMP_CAST only needs to be used on documented + macros. */ + +#ifdef __cplusplus +#define __GMP_CAST(type, expr) (static_cast (expr)) +#else +#define __GMP_CAST(type, expr) ((type) (expr)) +#endif + + +/* An empty "throw ()" means the function doesn't throw any C++ exceptions, + this can save some stack frame info in applications. + + Currently it's given only on functions which never divide-by-zero etc, + don't allocate memory, and are expected to never need to allocate memory. + This leaves open the possibility of a C++ throw from a future GMP + exceptions scheme. + + mpz_set_ui etc are omitted to leave open the lazy allocation scheme + described in doc/tasks.html. mpz_get_d etc are omitted to leave open + exceptions for float overflows. + + Note that __GMP_NOTHROW must be given on any inlines the same as on their + prototypes (for g++ at least, where they're used together). Note also + that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like + __GMP_ATTRIBUTE_PURE. */ + +#if defined (__cplusplus) +#define __GMP_NOTHROW throw () +#else +#define __GMP_NOTHROW +#endif + +/* PORTME: What other compilers have a useful "extern inline"? "static + inline" would be an acceptable substitute if the compiler (or linker) + discards unused statics. */ + +/* gcc has __inline__ in all modes, including strict ansi. Give a prototype + for an inline too, so as to correctly specify "dllimport" on windows, in + case the function is called rather than inlined. */ + +#ifdef __GNUC__ +#if defined(__APPLE_CC__) && (__APPLE_CC__ != 1) /* FSF GCC sets this flag to 1 on Apple machines */ + +#if ! (__APPLE_CC__ >= 5465 && __STDC_VERSION__ >= 199901L) +#define __GMP_EXTERN_INLINE extern __inline__ +#define __GMP_INLINE_PROTOTYPES 1 +#endif + +#else /*GNU CC*/ + +#if defined(__GNUC_STDC_INLINE__) || defined (__GNUC_GNU_INLINE__) +#define __GMP_EXTERN_INLINE extern __inline__ __attribute__((__gnu_inline__)) +#else +#define __GMP_EXTERN_INLINE extern __inline__ +#endif +#define __GMP_INLINE_PROTOTYPES 1 + +#endif +#endif + +/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1 + strict ANSI mode. Inlining is done even when not optimizing (ie. -O0 + mode, which is the default), but an unnecessary local copy of foo is + emitted unless -O is used. "extern __inline" is accepted, but the + "extern" appears to be ignored, ie. it becomes a plain global function + but which is inlined within its file. Don't know if all old versions of + DEC C supported __inline, but as a start let's do the right thing for + current versions. */ +#ifdef __DECC +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict + ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes + place under -O. Without -O "foo" seems to be emitted whether it's used + or not, which is wasteful. "extern inline foo()" isn't useful, the + "extern" is apparently ignored, so foo is inlined if possible but also + emitted as a global, which causes multiple definition errors when + building a shared libmpir. */ +#ifdef __SCO_VERSION__ +#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif +#endif + +#if defined _MSC_VER +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* C++ always has "inline" and since it's a normal feature the linker should + discard duplicate non-inlined copies, or if it doesn't then that's a + problem for everyone, not just GMP. */ +#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Don't do any inlining within a configure run, since if the compiler ends + up emitting copies of the code into the object file it can end up + demanding the various support routines (like mpn_popcount) for linking, + making the "alloca" test and perhaps others fail. And on hppa ia64 a + pre-release gcc 3.2 was seen not respecting the "extern" in "extern + __inline__", triggering this problem too. */ +#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE +#undef __GMP_EXTERN_INLINE +#endif + +/* By default, don't give a prototype when there's going to be an inline + version. Note in particular that Cray C++ objects to the combination of + prototype and inline. */ +#ifdef __GMP_EXTERN_INLINE +#ifndef __GMP_INLINE_PROTOTYPES +#define __GMP_INLINE_PROTOTYPES 0 +#endif +#else +#define __GMP_INLINE_PROTOTYPES 1 +#endif + + +#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) + +/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted + to int by "~". */ +#define __GMP_UINT_MAX (~ (unsigned) 0) +#define __GMP_ULONG_MAX (~ (unsigned long) 0) +#define __GMP_USHRT_MAX ((unsigned short) ~0) + + +/* __builtin_expect is in gcc 3.0, and not in 2.95. */ +#if __GMP_GNUC_PREREQ (3,0) +#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1) +#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0) +#else +#define __GMP_LIKELY(cond) (cond) +#define __GMP_UNLIKELY(cond) (cond) +#endif + +/* Allow direct user access to numerator and denominator of a mpq_t object. */ +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + + +#if defined (__cplusplus) +extern "C" { +using std::FILE; +#endif + +#define mp_set_memory_functions __gmp_set_memory_functions +__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t))) __GMP_NOTHROW; + +#define mp_get_memory_functions __gmp_get_memory_functions +__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t))) __GMP_NOTHROW; + +#define mp_bits_per_limb __gmp_bits_per_limb +__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb; + +#define gmp_errno __gmp_errno +__GMP_DECLSPEC extern int gmp_errno; + +#define gmp_version __gmp_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; + +#define mpir_version __mpir_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const mpir_version; + + +/**************** Random number routines. ****************/ + +#define gmp_randinit_default __gmp_randinit_default +__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp +__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t, + mpz_srcptr, mpir_ui, + mp_bitcnt_t)); + +#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size +__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t)); + +#define gmp_randinit_mt __gmp_randinit_mt +__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_set __gmp_randinit_set +__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *)); + +#define gmp_randseed __gmp_randseed +__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr)); + +#define gmp_randseed_ui __gmp_randseed_ui +__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, mpir_ui)); + +#define gmp_randclear __gmp_randclear +__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_urandomb_ui __gmp_urandomb_ui +__GMP_DECLSPEC mpir_ui gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, mpir_ui)); + +#define gmp_urandomm_ui __gmp_urandomm_ui +__GMP_DECLSPEC mpir_ui gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, mpir_ui)); + + +/**************** Formatted output routines. ****************/ + +#define gmp_asprintf __gmp_asprintf +__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...)); + +#define gmp_fprintf __gmp_fprintf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_printf __gmp_obstack_printf +#if defined (_GMP_H_HAVE_OBSTACK) +__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_vprintf __gmp_obstack_vprintf +#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list)); +#endif + +#define gmp_printf __gmp_printf +__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_snprintf __gmp_snprintf +__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...)); + +#define gmp_sprintf __gmp_sprintf +__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...)); + +#define gmp_vasprintf __gmp_vasprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list)); +#endif + +#define gmp_vfprintf __gmp_vfprintf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vprintf __gmp_vprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsnprintf __gmp_vsnprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list)); +#endif + +#define gmp_vsprintf __gmp_vsprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list)); +#endif + + +/**************** Formatted input routines. ****************/ + +#define gmp_fscanf __gmp_fscanf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_scanf __gmp_scanf +__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_sscanf __gmp_sscanf +__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...)); + +#define gmp_vfscanf __gmp_vfscanf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vscanf __gmp_vscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsscanf __gmp_vsscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list)); +#endif + + +/**************** Integer (i.e. Z) routines. ****************/ + +#define _mpz_realloc __gmpz_realloc +#define mpz_realloc __gmpz_realloc +__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t)); + +#define mpz_abs __gmpz_abs +#define __GMP_MPZ_ABS_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs) +__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define __GMP_MPZ_ADD_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_add __gmpz_add +__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_ADD_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS)+1) +#define mpz_add_ui __gmpz_add_ui +__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_addmul __gmpz_addmul +__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_addmul_ui __gmpz_addmul_ui +__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_and __gmpz_and +__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_array_init __gmpz_array_init +__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t)); + +#define mpz_bin_ui __gmpz_bin_ui +__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_bin_uiui __gmpz_bin_uiui +__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, mpir_ui, mpir_ui)); + +#define mpz_cdiv_q __gmpz_cdiv_q +__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp +__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_cdiv_qr __gmpz_cdiv_qr +__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_cdiv_r __gmpz_cdiv_r +__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp +__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_cdiv_ui __gmpz_cdiv_ui +__GMP_DECLSPEC mpir_ui mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_clear __gmpz_clear +__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr)); + +#define mpz_clears __gmpz_clears +__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_clrbit __gmpz_clrbit +__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_cmp __gmpz_cmp +__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmp_d __gmpz_cmp_d +__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_si __gmpz_cmp_si +__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, mpir_si)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_ui __gmpz_cmp_ui +__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs __gmpz_cmpabs +__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_d __gmpz_cmpabs_d +__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_ui __gmpz_cmpabs_ui +__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_com __gmpz_com +__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_combit __gmpz_combit +__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_congruent_p __gmpz_congruent_p +__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p +__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_ui_p __gmpz_congruent_ui_p +__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, mpir_ui, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divexact __gmpz_divexact +__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_divexact_ui __gmpz_divexact_ui +__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_divisible_p __gmpz_divisible_p +__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_ui_p __gmpz_divisible_ui_p +__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p +__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_dump __gmpz_dump +__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr)); + +#define mpz_export __gmpz_export +__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr)); + +#define mpz_fac_ui __gmpz_fac_ui +__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_fdiv_q __gmpz_fdiv_q +__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp +__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_fdiv_qr __gmpz_fdiv_qr +__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_fdiv_r __gmpz_fdiv_r +__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp +__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_fdiv_ui __gmpz_fdiv_ui +__GMP_DECLSPEC mpir_ui mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_fib_ui __gmpz_fib_ui +__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_fib2_ui __gmpz_fib2_ui +__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpir_ui)); + +#define mpz_fits_sint_p __gmpz_fits_sint_p +__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_si_p __gmpz_fits_si_p +__GMP_DECLSPEC int mpz_fits_si_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_slong_p __gmpz_fits_slong_p +__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_sshort_p __gmpz_fits_sshort_p +__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_uint_p __gmpz_fits_uint_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ui_p __gmpz_fits_ui_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ui_p) +__GMP_DECLSPEC int mpz_fits_ui_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ulong_p __gmpz_fits_ulong_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ushort_p __gmpz_fits_ushort_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_gcd __gmpz_gcd +__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_gcd_ui __gmpz_gcd_ui +__GMP_DECLSPEC mpir_ui mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_gcdext __gmpz_gcdext +__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_get_d __gmpz_get_d +__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_get_d_2exp __gmpz_get_d_2exp +__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((mpir_si *, mpz_srcptr)); + +#define mpz_get_si __gmpz_get_si +__GMP_DECLSPEC /* signed */ mpir_si mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_get_str __gmpz_get_str +__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr)); + +#define mpz_get_ui __gmpz_get_ui +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui) +__GMP_DECLSPEC mpir_ui mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_getlimbn __gmpz_getlimbn +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn) +__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_hamdist __gmpz_hamdist +__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_import __gmpz_import +__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *)); + +#define mpz_init __gmpz_init +__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr)); + +#define mpz_init2 __gmpz_init2 +__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_inits __gmpz_inits +__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_init_set __gmpz_init_set +__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_init_set_d __gmpz_init_set_d +__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_init_set_si __gmpz_init_set_si +__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, mpir_si)); + +#define mpz_init_set_str __gmpz_init_set_str +__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define mpz_init_set_ui __gmpz_init_set_ui +__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_inp_raw __gmpz_inp_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *)); +#endif + +#define mpz_inp_str __gmpz_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int)); +#endif + +#define mpz_invert __gmpz_invert +__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_ior __gmpz_ior +__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_jacobi __gmpz_jacobi +__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker mpz_jacobi /* alias */ + +#define mpz_kronecker_si __gmpz_kronecker_si +__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, mpir_si)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker_ui __gmpz_kronecker_ui +__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_si_kronecker __gmpz_si_kronecker +__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((mpir_si, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_kronecker __gmpz_ui_kronecker +__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((mpir_ui, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_lcm __gmpz_lcm +__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_lcm_ui __gmpz_lcm_ui +__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_legendre mpz_jacobi /* alias */ + +#define mpz_lucnum_ui __gmpz_lucnum_ui +__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_lucnum2_ui __gmpz_lucnum2_ui +__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpir_ui)); + +#define mpz_millerrabin __gmpz_millerrabin +__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_miller_rabin __gmpz_miller_rabin +__GMP_DECLSPEC int mpz_miller_rabin __GMP_PROTO ((mpz_srcptr, int, gmp_randstate_t)) __GMP_ATTRIBUTE_PURE; + +#define mpz_mod __gmpz_mod +__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */ + +#define __GMP_MPZ_MUL_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+__GMP_ABS(z->_mp_size)+1) +#define mpz_mul __gmpz_mul +__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mul_2exp __gmpz_mul_2exp +__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define __GMP_MPZ_MUL_SI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS+1) +#define mpz_mul_si __gmpz_mul_si +__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_si)); + +#define __GMP_MPZ_MUL_UI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS+1) +#define mpz_mul_ui __gmpz_mul_ui +__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_neg __gmpz_neg +#define __GMP_MPZ_NEG_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg) +__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define mpz_nextprime __gmpz_nextprime +__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_next_likely_prime __gmpz_next_likely_prime +__GMP_DECLSPEC void mpz_next_likely_prime __GMP_PROTO ((mpz_ptr, mpz_srcptr, gmp_randstate_t)); + +#define mpz_out_raw __gmpz_out_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr)); +#endif + +#define mpz_out_str __gmpz_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr)); +#endif + +#define mpz_perfect_power_p __gmpz_perfect_power_p +__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_perfect_square_p __gmpz_perfect_square_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_popcount __gmpz_popcount +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount) +__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_pow_ui __gmpz_pow_ui +__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_powm __gmpz_powm +__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_powm_ui __gmpz_powm_ui +__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui, mpz_srcptr)); + +#define mpz_probab_prime_p __gmpz_probab_prime_p +__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_probable_prime_p __gmpz_probable_prime_p +__GMP_DECLSPEC int mpz_probable_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, int, mpir_ui)); + +#define mpz_likely_prime_p __gmpz_likely_prime_p +__GMP_DECLSPEC int mpz_likely_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, mpir_ui)); + +#define mpz_realloc2 __gmpz_realloc2 +__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_remove __gmpz_remove +__GMP_DECLSPEC mp_bitcnt_t mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_root __gmpz_root +__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_nthroot __gmpz_nthroot +__GMP_DECLSPEC void mpz_nthroot __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_rootrem __gmpz_rootrem +__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_rrandomb __gmpz_rrandomb +__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_scan0 __gmpz_scan0 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_scan1 __gmpz_scan1 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define __GMP_MPZ_SET_MIN_ALLOC(x,y) __GMP_ABS(y->_mp_size) +#define mpz_set __gmpz_set +__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_set_d __gmpz_set_d +__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_set_f __gmpz_set_f +__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr)); + +#define mpz_set_q __gmpz_set_q +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q) +__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr)); +#endif + +#define __GMP_MPZ_SET_SI_MIN_ALLOC(x,y) (1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS) +#define mpz_set_si __gmpz_set_si +__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, mpir_si)); + +#define mpz_set_str __gmpz_set_str +__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define __GMP_MPZ_SET_UI_MIN_ALLOC(x,y) (1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS) +#define mpz_set_ui __gmpz_set_ui +__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, mpir_ui)); + +#define mpz_setbit __gmpz_setbit +__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_size __gmpz_size +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size) +__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_sizeinbase __gmpz_sizeinbase +__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_sqrt __gmpz_sqrt +__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_sqrtrem __gmpz_sqrtrem +__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_sub __gmpz_sub +__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS)+1) +#define mpz_sub_ui __gmpz_sub_ui +__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define __GMP_MPZ_UI_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(z->_mp_size),1+(GMP_BITS_PER_UI-1)/GMP_NUMB_BITS)+1) +#define mpz_ui_sub __gmpz_ui_sub +__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, mpir_ui, mpz_srcptr)); + +#define mpz_submul __gmpz_submul +__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_submul_ui __gmpz_submul_ui +__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_swap __gmpz_swap +__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW; + +#define mpz_tdiv_ui __gmpz_tdiv_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpz_tdiv_q __gmpz_tdiv_q +__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp +__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_tdiv_qr __gmpz_tdiv_qr +__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_tdiv_r __gmpz_tdiv_r +__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp +__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui +__GMP_DECLSPEC mpir_ui mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpir_ui)); + +#define mpz_tstbit __gmpz_tstbit +__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_pow_ui __gmpz_ui_pow_ui +__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, mpir_ui, mpir_ui)); + +#define mpz_urandomb __gmpz_urandomb +__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_urandomm __gmpz_urandomm +__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); + +#define mpz_xor __gmpz_xor +#define mpz_eor __gmpz_xor +__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + + +/****** Integer (i.e. Z) routines for intmaax_t/uintmax_t types ******/ + +#if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT ) + +#define __GMP_BITS_PER_UINTMAX (8*sizeof(uintmax_t)) + +#define mpz_get_ux __gmpz_get_ux +__GMP_DECLSPEC uintmax_t mpz_get_ux __GMP_PROTO ((mpz_srcptr)); + +#define mpz_get_sx __gmpz_get_sx +__GMP_DECLSPEC intmax_t mpz_get_sx __GMP_PROTO ((mpz_srcptr)); + +#define mpz_set_ux __gmpz_set_ux +__GMP_DECLSPEC void mpz_set_ux __GMP_PROTO ((mpz_ptr, uintmax_t)); + +#define mpz_set_sx __gmpz_set_sx +__GMP_DECLSPEC void mpz_set_sx __GMP_PROTO ((mpz_ptr, intmax_t)); + +#define mpz_init_set_ux __gmpz_init_set_ux +__GMP_DECLSPEC void mpz_init_set_ux __GMP_PROTO ((mpz_ptr, uintmax_t)); + +#define mpz_init_set_sx __gmpz_init_set_sx +__GMP_DECLSPEC void mpz_init_set_sx __GMP_PROTO ((mpz_ptr, intmax_t)); + +#endif + + +/**************** Rational (i.e. Q) routines. ****************/ + +#define mpq_abs __gmpq_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs) +__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_add __gmpq_add +__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_canonicalize __gmpq_canonicalize +__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr)); + +#define mpq_clear __gmpq_clear +__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr)); + +#define mpq_clears __gmpq_clears +__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_cmp __gmpq_cmp +__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_si __gmpq_cmp_si +__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, mpir_si, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_ui __gmpq_cmp_ui +__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, mpir_ui, mpir_ui)) __GMP_ATTRIBUTE_PURE; + +#define mpq_div __gmpq_div +__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_div_2exp __gmpq_div_2exp +__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_equal __gmpq_equal +__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpq_get_num __gmpq_get_num +__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_den __gmpq_get_den +__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_d __gmpq_get_d +__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpq_get_str __gmpq_get_str +__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr)); + +#define mpq_init __gmpq_init +__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr)); + +#define mpq_inits __gmpq_inits +__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_inp_str __gmpq_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int)); +#endif + +#define mpq_inv __gmpq_inv +__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_mul __gmpq_mul +__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_mul_2exp __gmpq_mul_2exp +__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_neg __gmpq_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg) +__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_out_str __gmpq_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr)); +#endif + +#define mpq_set __gmpq_set +__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_set_d __gmpq_set_d +__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double)); + +#define mpq_set_den __gmpq_set_den +__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_f __gmpq_set_f +__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr)); + +#define mpq_set_num __gmpq_set_num +__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_si __gmpq_set_si +__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, mpir_si, mpir_ui)); + +#define mpq_set_str __gmpq_set_str +__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int)); + +#define mpq_set_ui __gmpq_set_ui +__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, mpir_ui, mpir_ui)); + +#define mpq_set_z __gmpq_set_z +__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_sub __gmpq_sub +__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_swap __gmpq_swap +__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW; + + +/**************** Float (i.e. F) routines. ****************/ + +#define mpf_abs __gmpf_abs +__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_add __gmpf_add +__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_add_ui __gmpf_add_ui +__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); +#define mpf_ceil __gmpf_ceil +__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_clear __gmpf_clear +__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr)); + +#define mpf_clears __gmpf_clears +__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_cmp __gmpf_cmp +__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_d __gmpf_cmp_d +__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_si __gmpf_cmp_si +__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, mpir_si)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_ui __gmpf_cmp_ui +__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, mpir_ui)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_div __gmpf_div +__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_div_2exp __gmpf_div_2exp +__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_div_ui __gmpf_div_ui +__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_dump __gmpf_dump +__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr)); + +#define mpf_eq __gmpf_eq +__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sint_p __gmpf_fits_sint_p +__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_si_p __gmpf_fits_si_p +__GMP_DECLSPEC int mpf_fits_si_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_slong_p __gmpf_fits_slong_p +__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sshort_p __gmpf_fits_sshort_p +__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_uint_p __gmpf_fits_uint_p +__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ui_p __gmpf_fits_ui_p +__GMP_DECLSPEC int mpf_fits_ui_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ulong_p __gmpf_fits_ulong_p +__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ushort_p __gmpf_fits_ushort_p +__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_floor __gmpf_floor +__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_get_d __gmpf_get_d +__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpf_get_d_2exp __gmpf_get_d_2exp +__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((mpir_si *, mpf_srcptr)); + +#define mpf_get_default_prec __gmpf_get_default_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_prec __gmpf_get_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_si __gmpf_get_si +__GMP_DECLSPEC mpir_si mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_str __gmpf_get_str +__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); + +#define mpf_get_ui __gmpf_get_ui +__GMP_DECLSPEC mpir_ui mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_init __gmpf_init +__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr)); + +#define mpf_init2 __gmpf_init2 +__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_inits __gmpf_inits +__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_init_set __gmpf_init_set +__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_init_set_d __gmpf_init_set_d +__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_init_set_si __gmpf_init_set_si +__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, mpir_si)); + +#define mpf_init_set_str __gmpf_init_set_str +__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_init_set_ui __gmpf_init_set_ui +__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, mpir_ui)); + +#define mpf_inp_str __gmpf_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int)); +#endif + +#define mpf_integer_p __gmpf_integer_p +__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_mul __gmpf_mul +__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_mul_2exp __gmpf_mul_2exp +__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_mul_ui __gmpf_mul_ui +__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_neg __gmpf_neg +__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_out_str __gmpf_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr)); +#endif + +#define mpf_pow_ui __gmpf_pow_ui +__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_random2 __gmpf_random2 +__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); + +#define mpf_rrandomb __gmpf_rrandomb +__GMP_DECLSPEC void mpf_rrandomb __GMP_PROTO ((mpf_ptr, gmp_randstate_t, mp_size_t, mp_exp_t)); + +#define mpf_reldiff __gmpf_reldiff +__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_set __gmpf_set +__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_set_d __gmpf_set_d +__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_set_default_prec __gmpf_set_default_prec +__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_prec __gmpf_set_prec +__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_set_prec_raw __gmpf_set_prec_raw +__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_q __gmpf_set_q +__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr)); + +#define mpf_set_si __gmpf_set_si +__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, mpir_si)); + +#define mpf_set_str __gmpf_set_str +__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_set_ui __gmpf_set_ui +__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, mpir_ui)); + +#define mpf_set_z __gmpf_set_z +__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr)); + +#define mpf_size __gmpf_size +__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_sqrt __gmpf_sqrt +__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_sqrt_ui __gmpf_sqrt_ui +__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, mpir_ui)); + +#define mpf_sub __gmpf_sub +__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_sub_ui __gmpf_sub_ui +__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpir_ui)); + +#define mpf_swap __gmpf_swap +__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW; + +#define mpf_trunc __gmpf_trunc +__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_ui_div __gmpf_ui_div +__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, mpir_ui, mpf_srcptr)); + +#define mpf_ui_sub __gmpf_ui_sub +__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, mpir_ui, mpf_srcptr)); + +#define mpf_urandomb __gmpf_urandomb +__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t)); + + +/************ Low level positive-integer (i.e. N) routines. ************/ + +/* This is ugly, but we need to make user calls reach the prefixed function. */ + +#define mpn_add __MPN(add) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add) +__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_add_1 __MPN(add_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1) +__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_add_n __MPN(add_n) +__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_addmul_1 __MPN(addmul_1) +__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_bdivmod __MPN(bdivmod) +__GMP_DECLSPEC mp_limb_t mpn_bdivmod __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mpir_ui)); + +#define mpn_divrem __MPN(divrem) +__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mulmod_Bexpp1 __MPN(mulmod_Bexpp1) +__GMP_DECLSPEC int mpn_mulmod_Bexpp1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t, mp_ptr)); + +#define mpn_mulmod_2expp1 __MPN(mulmod_2expp1_basecase) +__GMP_DECLSPEC int mpn_mulmod_2expp1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr,int,mpir_ui, mp_ptr)); + +#define mpn_mulmod_2expm1 __MPN(mulmod_2expm1) +__GMP_DECLSPEC void mpn_mulmod_2expm1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_ptr, mpir_ui, mp_ptr)); + +#define mpn_cmp __MPN(cmp) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp) +__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_redc_1 __MPN(redc_1) +__GMP_DECLSPEC void mpn_redc_1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);) + +#define mpn_redc_2 __MPN(redc_2) +__GMP_DECLSPEC void mpn_redc_2 __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr)); +#define mpn_redc_n __MPN(redc_n) +__GMP_DECLSPEC void mpn_redc_n __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr)); + +#define mpn_divexact_by3(dst,src,size) \ + mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0)) + +#define mpn_divexact_by3c __MPN(divexact_by3c) +__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divmod_1(qp,np,nsize,dlimb) \ + mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb) + +#define mpn_divrem_1 __MPN(divrem_1) +__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divrem_2 __MPN(divrem_2) +__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); + +#define mpn_invert __MPN(invert) +__GMP_DECLSPEC void mpn_invert __GMP_PROTO ((mp_ptr xp, mp_srcptr ap, mp_size_t n)); + +#define mpn_sb_divappr_q __MPN(sb_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dip)); + +#define mpn_dc_divappr_q_n __MPN(dc_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dip, mp_ptr tp)); + +#define mpn_dc_bdiv_q_n __MPN(dc_bdiv_q_n) +__GMP_DECLSPEC void mpn_dc_bdiv_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr scratch)); + +#define mpn_inv_divappr_q_n __MPN(inv_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_srcptr dip)); + +#define mpn_dc_divappr_q __MPN(dc_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv)); + +#define mpn_dc_div_q __MPN(dc_div_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_inv_divappr_q __MPN(inv_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_srcptr dinv)); + +#define mpn_inv_div_q __MPN(inv_div_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr __MPN(inv_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr_n __MPN(inv_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_dc_div_qr __MPN(dc_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_div_qr_n __MPN(dc_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_q __MPN(sb_div_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_q __MPN(sb_bdiv_q) +__GMP_DECLSPEC void mpn_sb_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_q __MPN(dc_bdiv_q) +__GMP_DECLSPEC void mpn_dc_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr __MPN(dc_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr_n __MPN(dc_bdiv_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t n, mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_qr __MPN(sb_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_qr __MPN(sb_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_tdiv_q __MPN(tdiv_q) +__GMP_DECLSPEC void mpn_tdiv_q __GMP_PROTO ((mp_ptr qp, mp_srcptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn)); + +#define mpn_divexact __MPN(divexact) +__GMP_DECLSPEC void mpn_divexact __GMP_PROTO ((mp_ptr qp, + mp_srcptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn)); + +#define mpn_gcd __MPN(gcd) +__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_gcd_1 __MPN(gcd_1) +__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcdext_1 __MPN(gcdext_1) +__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 __GMP_PROTO ((mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t)); + +#define mpn_gcdext __MPN(gcdext) +__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_get_str __MPN(get_str) +__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); + +#define mpn_hamdist __MPN(hamdist) +__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_lshift __MPN(lshift) +__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_mod_1 __MPN(mod_1) +__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_mul __MPN(mul) +__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mul_1 __MPN(mul_1) +__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_mul_n __MPN(mul_n) +__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_sqr __MPN(sqr) +__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_neg_n __MPN(neg_n) +#define mpn_neg __MPN(neg_n) +__GMP_DECLSPEC mp_limb_t mpn_neg_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_com_n __MPN(com_n) +#define mpn_com __MPN(com_n) +__GMP_DECLSPEC void mpn_com_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_perfect_square_p __MPN(perfect_square_p) +__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_popcount __MPN(popcount) +__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_pow_1 __MPN(pow_1) +__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr)); + +/* undocumented now, but retained here for upward compatibility */ +#define mpn_preinv_mod_1 __MPN(preinv_mod_1) +__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_random __MPN(random) +__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_random2 __MPN(random2) +__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_urandomb __MPN(urandomb) +__GMP_DECLSPEC void mpn_urandomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, mpir_ui)); + +#define mpn_urandomm __MPN(urandomm) +__GMP_DECLSPEC void mpn_urandomm __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_srcptr, mp_size_t)); + +#define mpn_randomb __MPN(randomb) +__GMP_DECLSPEC void mpn_randomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rrandom __MPN(rrandom) +__GMP_DECLSPEC void mpn_rrandom __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rshift __MPN(rshift) +__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_scan0 __MPN(scan0) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_scan1 __MPN(scan1) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_set_str __MPN(set_str) +__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); + +#define mpn_sqrtrem __MPN(sqrtrem) +__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_sub __MPN(sub) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub) +__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_sub_1 __MPN(sub_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_sub_n __MPN(sub_n) +__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_submul_1 __MPN(submul_1) +__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_tdiv_qr __MPN(tdiv_qr) +__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_and_n __MPN(and_n) +__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_andn_n __MPN(andn_n) +__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nand_n __MPN(nand_n) +__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_ior_n __MPN(ior_n) +__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_iorn_n __MPN(iorn_n) +__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nior_n __MPN(nior_n) +__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xor_n __MPN(xor_n) +__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xnor_n __MPN(xnor_n) +__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_copyi __MPN(copyi) +__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_copyd __MPN(copyd) +__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_zero __MPN(zero) +__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t)); + +#ifndef mpn_sumdiff_n /* if not done with cpuvec in a fat binary of in gmp-impl.h*/ +#define mpn_sumdiff_n __MPN(sumdiff_n) +__GMP_DECLSPEC mp_limb_t mpn_sumdiff_n __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#endif + +/**************** MPN API for FFT ****************/ + +#define mpn_mul_fft_main __MPN(mul_fft_main) +__GMP_DECLSPEC void mpn_mul_fft_main __GMP_PROTO ((mp_ptr r1, mp_srcptr i1, mp_size_t n1, mp_srcptr i2, mp_size_t n2)); + +/**************** mpz inlines ****************/ + +/* The following are provided as inlines where possible, but always exist as + library functions too, for binary compatibility. + + Within gmp itself this inlining generally isn't relied on, since it + doesn't get done for all compilers, whereas if something is worth + inlining then it's worth arranging always. + + There are two styles of inlining here. When the same bit of code is + wanted for the inline as for the library version, then __GMP_FORCE_foo + arranges for that code to be emitted and the __GMP_EXTERN_INLINE + directive suppressed, eg. mpz_fits_uint_p. When a different bit of code + is wanted for the inline than for the library version, then + __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs) +__GMP_EXTERN_INLINE void +mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); +} +#endif + +#if GMP_NAIL_BITS == 0 +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); +#else +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ + || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p) +#if ! defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ui_p) +#if ! defined (__GMP_FORCE_mpz_fits_ui_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ui_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, GMP_UI_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p) +#if ! defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p) +#if ! defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui) +#if ! defined (__GMP_FORCE_mpz_get_ui) +__GMP_EXTERN_INLINE +#endif +mpir_ui +mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + mp_ptr __gmp_p = __gmp_z->_mp_d; + mp_size_t __gmp_n = __gmp_z->_mp_size; + mp_limb_t __gmp_l = __gmp_p[0]; + /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings + about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland + C++ 6.0 warnings about condition always true for something like + "__GMP_ULONG_MAX < GMP_NUMB_MASK". */ +#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB) + /* limb==long and no nails, or limb==longlong, one limb is enough */ + return (mpir_ui)(__gmp_n != 0 ? __gmp_l : 0); +#else + /* limb==long and nails, need two limbs when available */ + __gmp_n = __GMP_ABS (__gmp_n); + if (__gmp_n <= 1) + return (mpir_ui)(__gmp_n != 0 ? __gmp_l : 0); + else + return (mpir_ui)(__gmp_l + (__gmp_p[1] << GMP_NUMB_BITS)); +#endif +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn) +#if ! defined (__GMP_FORCE_mpz_getlimbn) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_result = 0; + if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size))) + __gmp_result = __gmp_z->_mp_d[__gmp_n]; + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg) +__GMP_EXTERN_INLINE void +mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = - __gmp_w->_mp_size; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p) +#if ! defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_perfect_square_p (mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + + __gmp_asize = __gmp_a->_mp_size; + __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */ + if (__GMP_LIKELY (__gmp_asize > 0)) + __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount) +#if ! defined (__GMP_FORCE_mpz_popcount) +__GMP_EXTERN_INLINE +#endif +mp_bitcnt_t +mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW +{ + mp_size_t __gmp_usize; + mp_bitcnt_t __gmp_result; + + __gmp_usize = __gmp_u->_mp_size; + __gmp_result = (__gmp_usize < 0 ? __GMP_BITCNT_MAX : 0); + if (__GMP_LIKELY (__gmp_usize > 0)) + __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q) +#if ! defined (__GMP_FORCE_mpz_set_q) +__GMP_EXTERN_INLINE +#endif +void +mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size) +#if ! defined (__GMP_FORCE_mpz_size) +__GMP_EXTERN_INLINE +#endif +size_t +mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + return __GMP_ABS (__gmp_z->_mp_size); +} +#endif + + +/**************** mpq inlines ****************/ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs) +__GMP_EXTERN_INLINE void +mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg) +__GMP_EXTERN_INLINE void +mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; +} +#endif + + +/**************** mpn inlines ****************/ + +/* The comments with __GMPN_ADD_1 below apply here too. + + The test for FUNCTION returning 0 should predict well. If it's assumed + {yp,ysize} will usually have a random number of bits then the high limb + won't be full and a carry out will occur a good deal less than 50% of the + time. + + ysize==0 isn't a documented feature, but is used internally in a few + places. + + Producing cout last stops it using up a register during the main part of + the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" + doesn't seem able to move the true and false legs of the conditional up + to the two places cout is generated. */ + +#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x; \ + \ + /* ASSERT ((ysize) >= 0); */ \ + /* ASSERT ((xsize) >= (ysize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ + \ + __gmp_i = (ysize); \ + if (__gmp_i != 0) \ + { \ + if (FUNCTION (wp, xp, yp, __gmp_i)) \ + { \ + do \ + { \ + if (__gmp_i >= (xsize)) \ + { \ + (cout) = 1; \ + goto __gmp_done; \ + } \ + __gmp_x = (xp)[__gmp_i]; \ + } \ + while (TEST); \ + } \ + } \ + if ((wp) != (xp)) \ + __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ + (cout) = 0; \ + __gmp_done: \ + ; \ + } while (0) + +#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ + (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) +#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ + (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) + + +/* The use of __gmp_i indexing is designed to ensure a compile time src==dst + remains nice and clear to the compiler, so that __GMPN_COPY_REST can + disappear, and the load/add/store gets a chance to become a + read-modify-write on CISC CPUs. + + Alternatives: + + Using a pair of pointers instead of indexing would be possible, but gcc + isn't able to recognise compile-time src==dst in that case, even when the + pointers are incremented more or less together. Other compilers would + very likely have similar difficulty. + + gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or + similar to detect a compile-time src==dst. This works nicely on gcc + 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems + to be always false, for a pointer p. But the current code form seems + good enough for src==dst anyway. + + gcc on x86 as usual doesn't give particularly good flags handling for the + carry/borrow detection. It's tempting to want some multi instruction asm + blocks to help it, and this was tried, but in truth there's only a few + instructions to save and any gain is all too easily lost by register + juggling setting up for the asm. */ + +#if GMP_NAIL_BITS == 0 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r; \ + if (CB (__gmp_r, __gmp_x, (v))) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r; \ + ++__gmp_i; \ + if (!CB (__gmp_r, __gmp_x, 1)) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#if GMP_NAIL_BITS >= 1 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ + if (__gmp_r >> GMP_NUMB_BITS != 0) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ + ++__gmp_i; \ + if (__gmp_r >> GMP_NUMB_BITS == 0) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#define __GMPN_ADDCB(r,x,y) ((r) < (y)) +#define __GMPN_SUBCB(r,x,y) ((x) < (y)) + +#define __GMPN_ADD_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) +#define __GMPN_SUB_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) + + +/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or + negative. size==0 is allowed. On random data usually only one limb will + need to be examined to get a result, so it's worth having it inline. */ +#define __GMPN_CMP(result, xp, yp, size) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_y; \ + \ + /* ASSERT ((size) >= 0); */ \ + \ + (result) = 0; \ + __gmp_i = (size); \ + while (--__gmp_i >= 0) \ + { \ + __gmp_x = (xp)[__gmp_i]; \ + __gmp_y = (yp)[__gmp_i]; \ + if (__gmp_x != __gmp_y) \ + { \ + /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ + (result) = (__gmp_x > __gmp_y ? 1 : -1); \ + break; \ + } \ + } \ + } while (0) + + +#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ + } while (0) +#endif + +/* Copy {src,size} to {dst,size}, starting at "start". This is designed to + keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, + __GMPN_ADD, etc. */ +#if ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + mp_size_t __gmp_j; \ + /* ASSERT ((size) >= 0); */ \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ + for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ + (dst)[__gmp_j] = (src)[__gmp_j]; \ + } while (0) +#endif + +/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use + mpn_copyi if there's a native version, and if we don't mind demanding + binary compatibility for it (on targets which use it). */ + +#if ! defined (__GMPN_COPY) +#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) +#endif + + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add) +#if ! defined (__GMP_FORCE_mpn_add) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1) +#if ! defined (__GMP_FORCE_mpn_add_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp) +#if ! defined (__GMP_FORCE_mpn_cmp) +__GMP_EXTERN_INLINE +#endif +int +mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW +{ + int __gmp_result; + __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub) +#if ! defined (__GMP_FORCE_mpn_sub) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1) +#if ! defined (__GMP_FORCE_mpn_sub_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__cplusplus) +} +#endif + + +/* Allow faster testing for negative, zero, and positive. */ +#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) +#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) +#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) + +/* When using GCC, optimize certain common comparisons. */ +#if defined (__GNUC__) +#define mpz_cmp_ui(Z,UI) \ + (__builtin_constant_p (UI) && (UI) == 0 \ + ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) +#define mpz_cmp_si(Z,SI) \ + (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ + : __builtin_constant_p (SI) && (SI) > 0 \ + ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI)) \ + : _mpz_cmp_si (Z,SI)) +#define mpq_cmp_ui(Q,NUI,DUI) \ + (__builtin_constant_p (NUI) && (NUI) == 0 \ + ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) +#define mpq_cmp_si(q,n,d) \ + (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ + ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \ + : _mpq_cmp_si (q, n, d)) +#else +#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) +#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) +#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) +#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) +#endif + + +/* Using "&" rather than "&&" means these can come out branch-free. Every + mpz_t has at least one limb allocated, so fetching the low limb is always + allowed. */ +#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0])) +#define mpz_even_p(z) (! mpz_odd_p (z)) + + +/**************** C++ routines ****************/ + +#ifdef __cplusplus +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); +#endif + +/* Source-level compatibility with GMP 1. */ +#define mpz_mdiv mpz_fdiv_q +#define mpz_mdivmod mpz_fdiv_qr +#define mpz_mmod mpz_fdiv_r +#define mpz_mdiv_ui mpz_fdiv_q_ui +#define mpz_mdivmod_ui(q,r,n,d) \ + (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) +#define mpz_mmod_ui(r,n,d) \ + (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) + +#define gmp_randinit(x,y,z) gmp_randinit_lc_2exp_size(x,z) + +typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */ +typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */ + +#define mpz_div mpz_fdiv_q +#define mpz_divmod mpz_fdiv_qr +#define mpz_div_ui mpz_fdiv_q_ui +#define mpz_divmod_ui mpz_fdiv_qr_ui +#define mpz_div_2exp mpz_fdiv_q_2exp +#define mpz_mod_2exp mpz_fdiv_r_2exp + +enum +{ + GMP_ERROR_NONE = 0, + GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, + GMP_ERROR_DIVISION_BY_ZERO = 2, + GMP_ERROR_SQRT_OF_NEGATIVE = 4, + GMP_ERROR_INVALID_ARGUMENT = 8 +}; + +/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ +#define __GNU_MP_VERSION 5 +#define __GNU_MP_VERSION_MINOR 0 +#define __GNU_MP_VERSION_PATCHLEVEL 2 +#define GMP_VERSION "5.0.2" +#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL) + +#define __MPIR_VERSION 2 +#define __MPIR_VERSION_MINOR 6 +#define __MPIR_VERSION_PATCHLEVEL 0 +#if defined( _MSC_VER ) +#define _MSC_MPIR_VERSION "2.6.0" +#endif +#define __MPIR_RELEASE (__MPIR_VERSION * 10000 + __MPIR_VERSION_MINOR * 100 + __MPIR_VERSION_PATCHLEVEL) + +/* These are for programs like MPFR to use the same CC and CFLAGS as MPIR */ + +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_CC __MPIR_CC +#define __GMP_CFLAGS __MPIR_CFLAGS +#define __MPIR_CC "gcc -std=gnu99" +#define __MPIR_CFLAGS "-O2" +#endif + +#define __GMP_H__ +#endif /* __GMP_H__ */ + diff --git a/vitis/v2021_2/fir/xip_common_bitacc_cmodel.h b/vitis/v2021_2/fir/xip_common_bitacc_cmodel.h new file mode 100755 index 00000000..d0d06b14 --- /dev/null +++ b/vitis/v2021_2/fir/xip_common_bitacc_cmodel.h @@ -0,0 +1,262 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +// (c) Copyright 2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models. +// #include this file inside each C model's exported header file. + +#ifndef XIP_COMMON_BITACC_CMODEL_H +#define XIP_COMMON_BITACC_CMODEL_H + +//Determine shared library import attributes +#ifndef XIP_XILINX_XIP_IMPEXP +#if defined(NT) || defined(NT64) +#define XIP_XILINX_XIP_IMPEXP __declspec(dllimport) +#elif defined(LIN) || defined(LIN64) +#define XIP_XILINX_XIP_IMPEXP +#else +#define XIP_XILINX_XIP_IMPEXP +#endif +#endif + +//Determine best way to approximate inline functions +#ifndef XIP_XILINX_XIP_INLINE +#ifdef __cplusplus +#define XIP_XILINX_XIP_INLINE inline +#elif (__STDC_VERSION__ >= 199901L) +#define XIP_XILINX_XIP_INLINE static inline +#else +#define XIP_XILINX_XIP_INLINE static +#endif +#endif + +//Check we know which model we are being included for +#ifndef XIP_XILINX_XIP_TARGET +#error "XIP_XILINX_XIP_TARGET undefined; must give interface name of model being compiled" +#endif + +#ifdef __cplusplus +#include +using std::size_t; +extern "C" { +#else +#include +#endif + + +/** + * Result code from DLL functions + */ +typedef int xip_status; + +/** + * Error codes + */ +#define XIP_STATUS_OK 0 +#define XIP_STATUS_ERROR 1 + +/** + * Bit type + */ +typedef unsigned char xip_bit; +#define xip_type_trait_bit 0 + +/** + * Real scalar type + */ +typedef double xip_real; +#define xip_type_trait_real 0 + +/** + * Complex scalar type + */ +typedef struct { xip_real re, im; } xip_complex; +#define xip_type_trait_complex 0 + +/** + * Integer type + */ +typedef unsigned int xip_uint; +#define xip_type_trait_uint 0 + +/** + * 32 bit integer type + */ +typedef unsigned int xip_uint32; +#define xip_type_trait_uint32 0 + + +/** + * Declare a xip_array_ structure for holding multi-dimensional arrays of xip_ instances + * Use xip_array__create() to create an array instance + * Use xip_array__create_ex(xip_array__operations* ops) to create an array instance using a given xip_array__operations object + * Use xip_array__reserve_data(xip_array_* array, size_t n) to reserve data elements + * Use xip_array__reserve_dim(xip_array_* array, size_t n) to reserve dimension elements + * Use xip_array__destroy(xip_array_*) to destroy an array instance + * Use xip_array__sub2ind_*(const xip_array_* p, size_t s0...) to obtain an index from a list of subscripts + * Use xip_array__set_element(xip_array_* p, const xip_ value, size_t index) to set a value + * Use xip_array__get_element(const xip_array_* p, xip_* value, size_t index) to get a value + * + * e.g. + * xip_array_real* array = xip_array_real_create(); //Create an empty array + * xip_array_real_reserve_data(array,1000); //Reserve space for 1000 elements + * xip_array_real_reserve_dim(array,10); //Reserve space for 10 dimensions + * array = xip_array_real_destroy(array); //Destroy array + * + */ +#define DECLARE_XIP_ARRAY(TYPE) \ +typedef struct xip_array_##TYPE##_struct xip_array_##TYPE; \ +typedef struct xip_array_##TYPE##_operations_struct xip_array_##TYPE##_operations; \ +struct xip_array_##TYPE##_struct { \ + xip_##TYPE* data; \ + size_t data_size; \ + size_t data_capacity; \ + size_t* dim; \ + size_t dim_size; \ + size_t dim_capacity; \ + unsigned int owner; \ + const xip_array_##TYPE##_operations* ops; \ +}; \ +struct xip_array_##TYPE##_operations_struct { \ + void* const (*ops_realloc )(const xip_array_##TYPE##_operations* ops, void* p, size_t size); \ + void (*ops_free )(const xip_array_##TYPE##_operations* ops, void* p); \ + void (*ops_elem_create )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void (*ops_elem_copy )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* dst, const xip_##TYPE* src); \ + void (*ops_elem_swap )(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e1, xip_##TYPE* e2); \ + void (*ops_elem_destroy)(const xip_array_##TYPE##_operations* ops, xip_##TYPE* e); \ + void* ops_private; \ +} + +/** + * Export xip_array_ functions + */ +#define EXPORT_XIP_ARRAY(TYPE,TARGET) EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) +#define EXPORT_XIP_ARRAY_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_IMPEXP const xip_array_##TYPE##_operations* const xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create(); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim); \ +XIP_XILINX_XIP_IMPEXP xip_array_##TYPE* const xip_##TARGET##_xip_array_##TYPE##_destroy(xip_array_##TYPE* p); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2); \ +XIP_XILINX_XIP_IMPEXP const size_t xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index); \ +XIP_XILINX_XIP_IMPEXP const xip_status xip_##TARGET##_xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) + +/** + * Declare the array type interfaces + * Note: for any given xip_array_* there should be only one DECLARE_XIP_ARRAY_INTERFACE to expose the interface + */ +#define DECLARE_XIP_ARRAY_INTERFACE(TYPE,TARGET) DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) +#define DECLARE_XIP_ARRAY_INTERFACE_RAW(TYPE,TARGET) \ +XIP_XILINX_XIP_INLINE const xip_array_##TYPE##_operations* const xip_array_##TYPE##_get_default_ops() { return xip_##TARGET##_xip_array_##TYPE##_get_default_ops(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create() { return xip_##TARGET##_xip_array_##TYPE##_create(); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_create_ex(const xip_array_##TYPE##_operations* ops) { return xip_##TARGET##_xip_array_##TYPE##_create_ex(ops); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_data(xip_array_##TYPE* p, size_t max_nels) { return xip_##TARGET##_xip_array_##TYPE##_reserve_data(p,max_nels); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_reserve_dim(xip_array_##TYPE* p, size_t max_ndim) { return xip_##TARGET##_xip_array_##TYPE##_reserve_dim(p,max_ndim); } \ +XIP_XILINX_XIP_INLINE xip_array_##TYPE* const xip_array_##TYPE##_destroy(xip_array_##TYPE* p) { return xip_##TARGET##_xip_array_##TYPE##_destroy(p); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_1d(const xip_array_##TYPE* p, size_t s0) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_1d(p,s0); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_2d(const xip_array_##TYPE* p, size_t s0, size_t s1) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_2d(p,s0,s1); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_3d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_3d(p,s0,s1,s2); } \ +XIP_XILINX_XIP_INLINE const size_t xip_array_##TYPE##_sub2ind_4d(const xip_array_##TYPE* p, size_t s0, size_t s1, size_t s2, size_t s3) { return xip_##TARGET##_xip_array_##TYPE##_sub2ind_4d(p,s0,s1,s2,s3); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_set_element(xip_array_##TYPE* p, const xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_set_element(p,value,index); } \ +XIP_XILINX_XIP_INLINE const xip_status xip_array_##TYPE##_get_element(const xip_array_##TYPE* p, xip_##TYPE* value, size_t index) { return xip_##TARGET##_xip_array_##TYPE##_get_element(p,value,index); } + +/** + * Declare and export the fundamental array types + */ +DECLARE_XIP_ARRAY(bit ); EXPORT_XIP_ARRAY(bit ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(real ); EXPORT_XIP_ARRAY(real ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(complex); EXPORT_XIP_ARRAY(complex,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint ); EXPORT_XIP_ARRAY(uint ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(uint32 ); EXPORT_XIP_ARRAY(uint32 ,XIP_XILINX_XIP_TARGET); + + +//Exposed interfaces for each xip_array_* type only if a previous Xilinx C model has not already done so +#ifndef XIP_ARRAY_BIT_API +DECLARE_XIP_ARRAY_INTERFACE(bit ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_BIT_API +#endif + +#ifndef XIP_ARRAY_REAL_API +DECLARE_XIP_ARRAY_INTERFACE(real ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_REAL_API +#endif + +#ifndef XIP_ARRAY_COMPLEX_API +DECLARE_XIP_ARRAY_INTERFACE(complex,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_COMPLEX_API +#endif + +#ifndef XIP_ARRAY_UINT_API +DECLARE_XIP_ARRAY_INTERFACE(uint ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT_API +#endif + +#ifndef XIP_ARRAY_UINT32_API +DECLARE_XIP_ARRAY_INTERFACE(uint32 ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_UINT32_API +#endif + +/** + * Error-handling callback type + */ +typedef void (*xip_msg_handler)(void* handle, int error, const char* msg); + +/** + * Data-handling callback type + * Specific to xip_array_real type + */ +typedef int (*xip_array_real_handler)(const xip_array_real* data, void* handle, void* opt_arg); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_COMMON_BITACC_CMODEL_H diff --git a/vitis/v2021_2/fir/xip_mpz_bitacc_cmodel.h b/vitis/v2021_2/fir/xip_mpz_bitacc_cmodel.h new file mode 100755 index 00000000..8bd57c2a --- /dev/null +++ b/vitis/v2021_2/fir/xip_mpz_bitacc_cmodel.h @@ -0,0 +1,97 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +// (c) Copyright 2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- + +// Common typedefs, constants and functions for use across Xilinx bit-accurate C models +// which use the Multiple Integer Precision types from GMP / MPIR library. +// #include this file inside each C model's exported header file + +#ifndef XIP_MPZ_BITACC_CMODEL_H +#define XIP_MPZ_BITACC_CMODEL_H + +#include "xip_common_bitacc_cmodel.h" +#include "gmp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Multiple Integer Precision (MPZ) type + */ +typedef mpz_t xip_mpz; +#define xip_type_trait_mpz 1 + +/** + * Multiple Integer Precision (MPZ) complex type + */ +typedef struct { xip_mpz re, im; } xip_mpz_complex; +#define xip_type_trait_mpz_complex 2 + +/** + * Declare and export the mpz array types + */ +DECLARE_XIP_ARRAY(mpz ); EXPORT_XIP_ARRAY(mpz ,XIP_XILINX_XIP_TARGET); +DECLARE_XIP_ARRAY(mpz_complex); EXPORT_XIP_ARRAY(mpz_complex,XIP_XILINX_XIP_TARGET); + +//Exposed interfaces for each xip_array_* type only if a previous Xilinx C model has not already done so +#ifndef XIP_ARRAY_MPZ_API +DECLARE_XIP_ARRAY_INTERFACE(mpz ,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_MPZ_API +#endif + +#ifndef XIP_ARRAY_MPZ_COMPLEX_API +DECLARE_XIP_ARRAY_INTERFACE(mpz_complex,XIP_XILINX_XIP_TARGET); +#define XIP_ARRAY_MPZ_COMPLEX_API +#endif + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // XIP_MPZ_BITACC_CMODEL_H + diff --git a/vitis/v2021_2/fix_include.sh b/vitis/v2021_2/fix_include.sh new file mode 100755 index 00000000..9e581a8a --- /dev/null +++ b/vitis/v2021_2/fix_include.sh @@ -0,0 +1,5 @@ + +echo "s#<$1>#\"HW/hls_include/$1\"#g" +sed -i "s#<$1>#\"HW/hls_include/$1\"#g" *.h +echo "s#\"$1\"#\"HW/hls_include/$1\"#g" +sed -i "s#\"$1\"#\"HW/hls_include/$1\"#g" *.h \ No newline at end of file diff --git a/vitis/v2021_2/floating_point_v7_0_bitacc_cmodel.h b/vitis/v2021_2/floating_point_v7_0_bitacc_cmodel.h new file mode 100755 index 00000000..6055110a --- /dev/null +++ b/vitis/v2021_2/floating_point_v7_0_bitacc_cmodel.h @@ -0,0 +1,372 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +//---------------------------------------------------------------------------- +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: 6.0 +// \ \ Filename: $RCSfile: floating_point_v7_0_bitacc_cmodel.h,v $ +// / / Date Last Modified: $Date: 2011/06/15 13:06:43 $ +// /___/ /\ Date Created: 2011 +// +// Device : All +// Library : floating_point_v7_0 +// Purpose : Header file for bit accurate model of Floating Point Operator +// Revision: $Revision: 1.6.6.2 $ +// +//------------------------------------------------------------------------------ +// (c) Copyright 2011-2012 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +//------------------------------------------------------------------------------ + +#ifndef __xip_fpo_bitacc_cmodel_h +#define __xip_fpo_bitacc_cmodel_h + +#ifdef NT +#define __XIP_FPO_DLLIMPORT __declspec(dllimport) +#define __XIP_FPO_DLLEXPORT __declspec(dllexport) +#else +#define __XIP_FPO_DLLIMPORT +#define __XIP_FPO_DLLEXPORT +#endif + +// Only define __XIP_FPO_BUILD_DLL when building the C model DLL; do not define it when using the C model +#ifdef __XIP_FPO_BUILD_DLL +#define __XIP_FPO_DLL __XIP_FPO_DLLEXPORT +#else +#define __XIP_FPO_DLL __XIP_FPO_DLLIMPORT +#endif + +/* Extra define for functions with variable numbers of arguments */ +#define __XIP_FPO_SENTINEL_ATTR +#if defined (__GNUC__) +# if __GNUC__ >= 4 +# undef __XIP_FPO_SENTINEL_ATTR +# define __XIP_FPO_SENTINEL_ATTR __attribute__ ((sentinel)) +# endif +#endif + +/* Define Floating Point Operator core version number */ +#define XIP_FPO_VERSION_MAJOR 6 +#define XIP_FPO_VERSION_MINOR 2 +#define XIP_FPO_REVISION 0 +/* Version string does not include revision if revision is 0 (revision >0 reserved for future use) */ +#define XIP_FPO_VERSION_STRING "6.2" + +/* Use C99 exact width integer types for 64-bit integers and *_uj and *_sj functions */ +// For Windows platforms, stdint.h and inttypes.h are not present in Visual Studio 2005/2008 +// Therefore we define the required types ourselves +// For Linux platforms, we need to continue using stdint.h (and not re-define intmax_t, uintmax_t) +// because SysGen already uses this header. +#ifdef NT +typedef signed char xint8; +typedef signed short xint16; +typedef signed int xint32; +typedef signed long long xint64; +typedef unsigned char xuint8; +typedef unsigned short xuint16; +typedef unsigned int xuint32; +typedef unsigned long long xuint64; +typedef xint64 intmax_t; +typedef xuint64 uintmax_t; +#else +#include +typedef int8_t xint8; +typedef int16_t xint16; +typedef int32_t xint32; +typedef int64_t xint64; +typedef uint8_t xuint8; +typedef uint16_t xuint16; +typedef uint32_t xuint32; +typedef uint64_t xuint64; +#endif + +#include + +// REVISIT: included before mpfr.h to permit definition of prototypes for mpfr_printf +#include + +// Force MPFR to use intmax_t and uintmax_t types (the compiled libraries have the functions that use these) +#define MPFR_USE_INTMAX_T + +// Tell MPIR on Windows platforms that it is compiled into a DLL +#ifdef NT +#define __GMP_LIBGMP_DLL 1 +#endif + +/* Check if GMP is included, and try to include it (Works with local GMP) + Note that where MPIR is provided as a compatible alternative to GMP, + it also provides a gmp.h header file to allow MPIR and GMP to be easily interchanged. + Select the correct gmp.h by setting the -I option (includes path) for your compiler. */ +#ifndef __GMP_H__ +#include "gmp.h" +#endif + +/* Check if MPFR is included, and try to include it (Works with local MPFR) */ +#ifndef __MPFR_H +#include "mpfr.h" +#endif + +/* Precision of mantissa or exponent (bits) */ +typedef long xip_fpo_prec_t; + +/* Definition of sign */ +typedef int xip_fpo_sign_t; + +/* Definition of exponent */ +typedef long xip_fpo_exp_t; + +/* The main floating point number structure */ +typedef struct { + xip_fpo_prec_t _xip_fpo_exp_prec; + xip_fpo_prec_t _xip_fpo_mant_prec; + xip_fpo_sign_t _xip_fpo_sign; + xip_fpo_exp_t _xip_fpo_exp; + mp_limb_t *_xip_fpo_d; +} __xip_fpo_struct; + +/* The main fixed point number structure */ +typedef struct { + xip_fpo_prec_t _xip_fpo_i_prec; + xip_fpo_prec_t _xip_fpo_frac_prec; + xint64 _xip_fpo_i; + xint64 _xip_fpo_frac; +} __xip_fpo_fix_struct; + +/* User-visible types for floating point and fixed point numbers */ +typedef __xip_fpo_struct xip_fpo_t[1]; +typedef __xip_fpo_fix_struct xip_fpo_fix_t[1]; + +/* Pointers to floating point and fixed point numbers, for function prototypes */ +typedef __xip_fpo_struct *xip_fpo_ptr; +typedef const __xip_fpo_struct *xip_fpo_srcptr; +typedef __xip_fpo_fix_struct *xip_fpo_fix_ptr; +typedef const __xip_fpo_fix_struct *xip_fpo_fix_srcptr; + +/* Definition of exception flags - return type of most functions + Flags are as follows: + bit 0 : underflow + bit 1 : overflow + bit 2 : invalid operation + bit 3 : divide by zero + bit 4 : operation not supported + bit 5 : Accumulator Input Overflow + bit 6 : Accumulator Overflow + */ +typedef int xip_fpo_exc_t; + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct xil_fpo_accum_state xil_fpo_accum_state; + +/* Information functions */ +__XIP_FPO_DLL const char * xip_fpo_get_version (void); + +/* Initialization functions */ +__XIP_FPO_DLL void xip_fpo_init2 (xip_fpo_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL void xip_fpo_fix_init2 (xip_fpo_fix_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL void xip_fpo_inits2 (xip_fpo_prec_t, xip_fpo_prec_t, xip_fpo_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_fix_inits2 (xip_fpo_prec_t, xip_fpo_prec_t, xip_fpo_fix_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_clear (xip_fpo_ptr); +__XIP_FPO_DLL void xip_fpo_fix_clear (xip_fpo_fix_ptr); +__XIP_FPO_DLL void xip_fpo_clears (xip_fpo_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_fix_clears (xip_fpo_fix_ptr, ...) __XIP_FPO_SENTINEL_ATTR; +__XIP_FPO_DLL void xip_fpo_set_prec (xip_fpo_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL void xip_fpo_fix_set_prec (xip_fpo_fix_ptr, xip_fpo_prec_t, xip_fpo_prec_t); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_get_prec_mant (xip_fpo_ptr); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_get_prec_exp (xip_fpo_ptr); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_fix_get_prec_frac (xip_fpo_fix_ptr); +__XIP_FPO_DLL xip_fpo_prec_t xip_fpo_fix_get_prec_int (xip_fpo_fix_ptr); + +/* Assignment functions */ +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set (xip_fpo_fix_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_ui (xip_fpo_ptr, unsigned long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_ui (xip_fpo_fix_ptr, unsigned long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_si (xip_fpo_ptr, long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_si (xip_fpo_fix_ptr, long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_uj (xip_fpo_ptr, uintmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_uj (xip_fpo_fix_ptr, uintmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_sj (xip_fpo_ptr, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_sj (xip_fpo_fix_ptr, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_flt (xip_fpo_ptr, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_flt (xip_fpo_fix_ptr, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_d (xip_fpo_ptr, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_d (xip_fpo_fix_ptr, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_z (xip_fpo_ptr, mpz_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_z (xip_fpo_fix_ptr, mpz_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_q (xip_fpo_ptr, mpq_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_q (xip_fpo_fix_ptr, mpq_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_f (xip_fpo_ptr, mpf_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_f (xip_fpo_fix_ptr, mpf_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_fr (xip_fpo_ptr, mpfr_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_fr (xip_fpo_fix_ptr, mpfr_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_ui_2exp (xip_fpo_ptr, unsigned long, xip_fpo_exp_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_si_2exp (xip_fpo_ptr, long, xip_fpo_exp_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_uj_2exp (xip_fpo_ptr, uintmax_t, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_sj_2exp (xip_fpo_ptr, intmax_t, intmax_t); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_set_str (xip_fpo_ptr, const char *, int); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_set_str (xip_fpo_fix_ptr, const char *, int); +__XIP_FPO_DLL void xip_fpo_set_nan (xip_fpo_ptr); +__XIP_FPO_DLL void xip_fpo_set_inf (xip_fpo_ptr, int); +__XIP_FPO_DLL void xip_fpo_set_zero (xip_fpo_ptr, int); + +/* Conversion functions */ +__XIP_FPO_DLL unsigned long xip_fpo_get_ui (xip_fpo_srcptr); +__XIP_FPO_DLL unsigned long xip_fpo_fix_get_ui (xip_fpo_fix_srcptr); +__XIP_FPO_DLL long xip_fpo_get_si (xip_fpo_srcptr); +__XIP_FPO_DLL long xip_fpo_fix_get_si (xip_fpo_fix_srcptr); +__XIP_FPO_DLL uintmax_t xip_fpo_get_uj (xip_fpo_srcptr); +__XIP_FPO_DLL uintmax_t xip_fpo_fix_get_uj (xip_fpo_fix_srcptr); +__XIP_FPO_DLL intmax_t xip_fpo_get_sj (xip_fpo_srcptr); +__XIP_FPO_DLL intmax_t xip_fpo_fix_get_sj (xip_fpo_fix_srcptr); +__XIP_FPO_DLL float xip_fpo_get_flt (xip_fpo_srcptr); +__XIP_FPO_DLL float xip_fpo_fix_get_flt (xip_fpo_fix_srcptr); +__XIP_FPO_DLL double xip_fpo_get_d (xip_fpo_srcptr); +__XIP_FPO_DLL double xip_fpo_fix_get_d (xip_fpo_fix_srcptr); +__XIP_FPO_DLL double xip_fpo_get_d_2exp (long *, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_get_z (mpz_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_get_z (mpz_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_get_f (mpf_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_get_f (mpf_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_get_fr (mpfr_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fix_get_fr (mpfr_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL char * xip_fpo_get_str (char *, xip_fpo_exp_t *, int, int, xip_fpo_srcptr); +__XIP_FPO_DLL char * xip_fpo_fix_get_str (char *, int, xip_fpo_fix_srcptr); +__XIP_FPO_DLL void xip_fpo_free_str (char *); +__XIP_FPO_DLL void xip_fpo_fix_free_str (char *); +__XIP_FPO_DLL int xip_fpo_sizeinbase (xip_fpo_srcptr, int); +__XIP_FPO_DLL int xip_fpo_fix_sizeinbase (xip_fpo_fix_srcptr, int); + +/* Operation functions */ +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_add (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_add_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_add_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sub (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sub_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sub_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_mul (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_mul_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_mul_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fma (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fma_flt (float *, float, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fma_d (double *, double, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fms (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fms_flt (float *, float, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fms_d (double *, double, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_div (xip_fpo_ptr, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_div_flt (float *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_div_d (double *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_rec (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_rec_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_rec_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_abs (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_abs_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_abs_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_log (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_log_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_log_d (double *, double); +__XIP_FPO_DLL int xip_fpo_exp_array (xip_fpo_t * , xip_fpo_t * , xip_fpo_exc_t *, unsigned long long); +__XIP_FPO_DLL void xip_fpo_exp_flt_array (float * , float * , xip_fpo_exc_t *, unsigned long long); +__XIP_FPO_DLL void xip_fpo_exp_d_array (double * , double * , xip_fpo_exc_t *, unsigned long long); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_exp (xip_fpo_ptr , xip_fpo_srcptr ); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_exp_flt (float * , float ); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_exp_d (double * , double ); +__XIP_FPO_DLL struct xil_fpo_accum_state * xip_fpo_accum_create_state (int , int , int , int , int); +__XIP_FPO_DLL void xip_fpo_accum_reset_state (struct xil_fpo_accum_state *); +__XIP_FPO_DLL void xip_fpo_accum_destroy_state (struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_accum_sample (xip_fpo_t, xip_fpo_t, bool, struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_accum_sample_flt (float *, float , bool, struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_accum_sample_d (double *, double , bool, struct xil_fpo_accum_state *); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sqrt (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sqrt_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_sqrt_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_recsqrt (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_recsqrt_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_recsqrt_d (double *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_unordered (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_unordered_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_unordered_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_equal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_equal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_equal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_less (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_less_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_less_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_lessequal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_lessequal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_lessequal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greater (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greater_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greater_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greaterequal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greaterequal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_greaterequal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_notequal (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_notequal_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_notequal_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_condcode (int *, xip_fpo_srcptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_condcode_flt (int *, float, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_condcode_d (int *, double, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttofix (xip_fpo_fix_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttofix_int_flt (int *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttofix_int_d (int *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fixtoflt (xip_fpo_ptr, xip_fpo_fix_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fixtoflt_flt_int (float *, int); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_fixtoflt_d_int (double *, int); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt (xip_fpo_ptr, xip_fpo_srcptr); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_flt_flt (float *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_flt_d (float *, double); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_d_flt (double *, float); +__XIP_FPO_DLL xip_fpo_exc_t xip_fpo_flttoflt_d_d (double *, double); + +#ifdef __cplusplus +} /* End of "C" linkage block */ +#endif + +#endif // __xip_fpo_bitacc_cmodel_h + diff --git a/vitis/v2021_2/gmp.h b/vitis/v2021_2/gmp.h new file mode 100755 index 00000000..5ea8eeae --- /dev/null +++ b/vitis/v2021_2/gmp.h @@ -0,0 +1,2392 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* Definitions for GNU multiple precision functions. -*- mode: c -*- + +Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, +2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + +Copyright 2008 William Hart, Gonzalo Tornaria + +This file is part of the MPIR Library. + +The MPIR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The MPIR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ + +#ifndef __GMP_H__ + +#if defined (__cplusplus) +#include /* for std::istream, std::ostream, std::string */ +#include +#endif + + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_BITS_PER_MP_LIMB 64 +#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 +#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 +#define GMP_LIMB_BITS 64 +#define GMP_NAIL_BITS 0 +#endif +#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) +#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) +#define GMP_NUMB_MAX GMP_NUMB_MASK +#define GMP_NAIL_MASK (~ GMP_NUMB_MASK) + + +/* The following (everything under ifndef __GNU_MP__) must be identical in + mpir.h and mp.h to allow both to be included in an application or during + the library build. */ +#ifndef __GNU_MP__ +#define __GNU_MP__ 4 + +#define __need_size_t /* tell gcc stddef.h we only want size_t */ +#if defined (__cplusplus) +#include /* for size_t */ +#else +#include /* for size_t */ +#endif +#undef __need_size_t + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +/* #undef _LONG_LONG_LIMB */ +#define __GMP_LIBGMP_DLL 0 +#endif + +/* #if defined(__GMP_WITHIN_CONFIGURE) && defined(_WIN64) */ +#ifdef __WIN64 +#define _LONG_LONG_LIMB 1 +#endif + + +/* __STDC__ - some ANSI compilers define this only to 0, hence the use of + "defined" and not "__STDC__-0". In particular Sun workshop C 5.0 + sets __STDC__ to 0, but requires "##" for token pasting. + + _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but + don't always define __STDC__. + + __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI, + but don't define __STDC__ in their default mode. Don't know if old + versions might have been K&R, but let's not worry about that unless + someone is still using one. + + _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4 + mode, but doesn't define __STDC__. + + _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za + option is given (in which case it's 1). + + _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that + all w32 compilers are ansi. + + Note: This same set of tests is used by gen-psqr.c and + demos/expr/expr-impl.h, so if anything needs adding, then be sure to + update those too. */ + +#if defined (__STDC__) \ + || defined (__cplusplus) \ + || defined (_AIX) \ + || defined (__DECC) \ + || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ + || defined (_MSC_VER) \ + || defined (_WIN32) +#define __GMP_HAVE_CONST 1 +#define __GMP_HAVE_PROTOTYPES 1 +#define __GMP_HAVE_TOKEN_PASTE 1 +#else +#define __GMP_HAVE_CONST 0 +#define __GMP_HAVE_PROTOTYPES 0 +#define __GMP_HAVE_TOKEN_PASTE 0 +#endif + + +#if __GMP_HAVE_CONST +#define __gmp_const const +#define __gmp_signed signed +#else +#define __gmp_const +#define __gmp_signed +#endif + + +/* __GMP_DECLSPEC supports Windows DLL versions of libmpir, and is empty in + all other circumstances. + + When compiling objects for libmpir, __GMP_DECLSPEC is an export directive, + or when compiling for an application it's an import directive. The two + cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles + (and not defined from an application). + + __GMP_DECLSPEC_XX is similarly used for libmpirxx. __GMP_WITHIN_GMPXX + indicates when building libmpirxx, and in that case libmpirxx functions are + exports, but libmpir functions which might get called are imports. + + libmp.la uses __GMP_DECLSPEC, just as if it were libmpir.la. libmpir and + libmp don't call each other, so there's no conflict or confusion. + + Libtool DLL_EXPORT define is not used. + + There's no attempt to support GMP built both static and DLL. Doing so + would mean applications would have to tell us which of the two is going + to be used when linking, and that seems very tedious and error prone if + using GMP by hand, and equally tedious from a package since autoconf and + automake don't give much help. + + __GMP_DECLSPEC is required on all documented global functions and + variables, the various internals in gmp-impl.h etc can be left unadorned. + But internals used by the test programs or speed measuring programs + should have __GMP_DECLSPEC, and certainly constants or variables must + have it or the wrong address will be resolved. + + In gcc __declspec can go at either the start or end of a prototype. + + In Microsoft C __declspec must go at the start, or after the type like + void __declspec(...) *foo()". There's no __dllexport or anything to + guard against someone foolish #defining dllexport. _export used to be + available, but no longer. + + In Borland C _export still exists, but needs to go after the type, like + "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to + make use of that. Probably more trouble than it's worth. */ + +#if defined (__GNUC__) +#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) +#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) +#endif +#if defined (_MSC_VER) || defined (__BORLANDC__) +#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) +#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) +#endif +#ifdef __WATCOMC__ +#define __GMP_DECLSPEC_EXPORT __export +#define __GMP_DECLSPEC_IMPORT __import +#endif +#ifdef __IBMC__ +#define __GMP_DECLSPEC_EXPORT _Export +#define __GMP_DECLSPEC_IMPORT _Import +#endif + +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMP +/* compiling to go into a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into an application which will link to a DLL libmpir */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC +#endif + + +#ifdef __GMP_SHORT_LIMB +typedef unsigned int mp_limb_t; +typedef int mp_limb_signed_t; +#else +#ifdef _LONG_LONG_LIMB +typedef unsigned long long int mp_limb_t; +typedef long long int mp_limb_signed_t; +#else +typedef unsigned long int mp_limb_t; +typedef long int mp_limb_signed_t; +#endif +#endif + +#ifdef _WIN64 +typedef unsigned long long int mp_bitcnt_t; +#else +typedef unsigned long int mp_bitcnt_t; +#endif + +/* For reference, note that the name __mpz_struct gets into C++ mangled + function names, which means although the "__" suggests an internal, we + must leave this name for binary compatibility. */ +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +#endif /* __GNU_MP__ */ + +typedef __mpz_struct mpz_t[1]; + +typedef mp_limb_t * mp_ptr; +typedef __gmp_const mp_limb_t * mp_srcptr; +#if defined( _WIN64) +#define __GMP_MP_SIZE_T_INT 0 +typedef long long int mp_size_t; +typedef long int mp_exp_t; +#else +#define __GMP_MP_SIZE_T_INT 0 +typedef long int mp_size_t; +typedef long int mp_exp_t; +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct mpq_t[1]; + +typedef struct +{ + int _mp_prec; /* Max precision, in number of `mp_limb_t's. + Set by mpf_init and modified by + mpf_set_prec. The area pointed to by the + _mp_d field contains `prec' + 1 limbs. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpf_struct; + +typedef __mpf_struct mpf_t[1]; + +/* Available random number generation algorithms. */ +typedef enum +{ + GMP_RAND_ALG_DEFAULT = 0, + GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ +} gmp_randalg_t; + +/* Random state struct. */ +typedef struct +{ + mpz_t _mp_seed; /* _mp_d member points to state of the generator. */ + gmp_randalg_t _mp_alg; /* Currently unused. */ + union { + void *_mp_lc; /* Pointer to function pointers structure. */ + } _mp_algdata; +} __gmp_randstate_struct; +typedef __gmp_randstate_struct gmp_randstate_t[1]; + +/* Types for function declarations in gmp files. */ +/* ??? Should not pollute user name space with these ??? */ +typedef __gmp_const __mpz_struct *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __gmp_const __mpf_struct *mpf_srcptr; +typedef __mpf_struct *mpf_ptr; +typedef __gmp_const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; + + +/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common + section. */ +#if __GMP_LIBGMP_DLL +#if __GMP_WITHIN_GMPXX +/* compiling to go into a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into a application which will link to a DLL libmpirxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC_XX +#endif + + +#if __GMP_HAVE_PROTOTYPES +#define __GMP_PROTO(x) x +#else +#define __GMP_PROTO(x) () +#endif + +#ifndef __MPN +#if __GMP_HAVE_TOKEN_PASTE +#define __MPN(x) __gmpn_##x +#else +#define __MPN(x) __gmpn_/**/x +#endif +#endif + +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ +#define _GMP_H_HAVE_FILE 1 +#endif + +/* In ISO C, if a prototype involving "struct obstack *" is given without + that structure defined, then the struct is scoped down to just the + prototype, causing a conflict if it's subsequently defined for real. So + only give prototypes if we've got obstack.h. */ +#if defined (_OBSTACK_H) /* glibc */ +#define _GMP_H_HAVE_OBSTACK 1 +#endif + +/* The prototypes for gmp_vprintf etc are provided only if va_list is + available, via an application having included or . + Usually va_list is a typedef so can't be tested directly, but C99 + specifies that va_start is a macro (and it was normally a macro on past + systems too), so look for that. + + will define some sort of va_list for vprintf and vfprintf, but + let's not bother trying to use that since it's not standard and since + application uses for gmp_vprintf etc will almost certainly require the + whole or anyway. */ + +#ifdef va_start +#define _GMP_H_HAVE_VA_LIST 1 +#endif + +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GMP_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GMP_GNUC_PREREQ(maj, min) 0 +#endif + +/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically + it means a function does nothing but examine its arguments and memory + (global or via arguments) to generate a return value, but changes nothing + and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets + tune/common.c etc turn this off when trying to write timing loops. */ +#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE) +#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +#define __GMP_ATTRIBUTE_PURE +#endif + + +/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean + to "g++ -Wold-style-cast". + + Casts in "extern inline" code within an extern "C" block don't induce + these warnings, so __GMP_CAST only needs to be used on documented + macros. */ + +#ifdef __cplusplus +#define __GMP_CAST(type, expr) (static_cast (expr)) +#else +#define __GMP_CAST(type, expr) ((type) (expr)) +#endif + + +/* An empty "throw ()" means the function doesn't throw any C++ exceptions, + this can save some stack frame info in applications. + + Currently it's given only on functions which never divide-by-zero etc, + don't allocate memory, and are expected to never need to allocate memory. + This leaves open the possibility of a C++ throw from a future GMP + exceptions scheme. + + mpz_set_ui etc are omitted to leave open the lazy allocation scheme + described in doc/tasks.html. mpz_get_d etc are omitted to leave open + exceptions for float overflows. + + Note that __GMP_NOTHROW must be given on any inlines the same as on their + prototypes (for g++ at least, where they're used together). Note also + that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like + __GMP_ATTRIBUTE_PURE. */ + +#if defined (__cplusplus) +#define __GMP_NOTHROW throw () +#else +#define __GMP_NOTHROW +#endif + +/* PORTME: What other compilers have a useful "extern inline"? "static + inline" would be an acceptable substitute if the compiler (or linker) + discards unused statics. */ + +/* gcc has __inline__ in all modes, including strict ansi. Give a prototype + for an inline too, so as to correctly specify "dllimport" on windows, in + case the function is called rather than inlined. */ + +#ifdef __GNUC__ +#if defined(__APPLE_CC__) && (__APPLE_CC__ != 1) /* FSF GCC sets this flag to 1 on Apple machines */ + +#if ! (__APPLE_CC__ >= 5465 && __STDC_VERSION__ >= 199901L) +#define __GMP_EXTERN_INLINE extern __inline__ +#define __GMP_INLINE_PROTOTYPES 1 +#endif + +#else /*GNU CC*/ + +#if defined(__GNUC_STDC_INLINE__) || defined (__GNUC_GNU_INLINE__) +#define __GMP_EXTERN_INLINE extern __inline__ __attribute__((__gnu_inline__)) +#else +#define __GMP_EXTERN_INLINE extern __inline__ +#endif +#define __GMP_INLINE_PROTOTYPES 1 + +#endif +#endif + +/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1 + strict ANSI mode. Inlining is done even when not optimizing (ie. -O0 + mode, which is the default), but an unnecessary local copy of foo is + emitted unless -O is used. "extern __inline" is accepted, but the + "extern" appears to be ignored, ie. it becomes a plain global function + but which is inlined within its file. Don't know if all old versions of + DEC C supported __inline, but as a start let's do the right thing for + current versions. */ +#ifdef __DECC +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict + ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes + place under -O. Without -O "foo" seems to be emitted whether it's used + or not, which is wasteful. "extern inline foo()" isn't useful, the + "extern" is apparently ignored, so foo is inlined if possible but also + emitted as a global, which causes multiple definition errors when + building a shared libmpir. */ +#ifdef __SCO_VERSION__ +#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif +#endif + +#if defined _MSC_VER +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* C++ always has "inline" and since it's a normal feature the linker should + discard duplicate non-inlined copies, or if it doesn't then that's a + problem for everyone, not just GMP. */ +#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Don't do any inlining within a configure run, since if the compiler ends + up emitting copies of the code into the object file it can end up + demanding the various support routines (like mpn_popcount) for linking, + making the "alloca" test and perhaps others fail. And on hppa ia64 a + pre-release gcc 3.2 was seen not respecting the "extern" in "extern + __inline__", triggering this problem too. */ +#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE +#undef __GMP_EXTERN_INLINE +#endif + +/* By default, don't give a prototype when there's going to be an inline + version. Note in particular that Cray C++ objects to the combination of + prototype and inline. */ +#ifdef __GMP_EXTERN_INLINE +#ifndef __GMP_INLINE_PROTOTYPES +#define __GMP_INLINE_PROTOTYPES 0 +#endif +#else +#define __GMP_INLINE_PROTOTYPES 1 +#endif + + +#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) + +/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted + to int by "~". */ +#define __GMP_UINT_MAX (~ (unsigned) 0) +#define __GMP_ULONG_MAX (~ (unsigned long) 0) +#define __GMP_USHRT_MAX ((unsigned short) ~0) + + +/* __builtin_expect is in gcc 3.0, and not in 2.95. */ +#if __GMP_GNUC_PREREQ (3,0) +#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1) +#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0) +#else +#define __GMP_LIKELY(cond) (cond) +#define __GMP_UNLIKELY(cond) (cond) +#endif + +/* Allow direct user access to numerator and denominator of a mpq_t object. */ +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + + +#if defined (__cplusplus) +extern "C" { +using std::FILE; +#endif + +#define mp_set_memory_functions __gmp_set_memory_functions +__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t))) __GMP_NOTHROW; + +#define mp_get_memory_functions __gmp_get_memory_functions +__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t))) __GMP_NOTHROW; + +#define mp_bits_per_limb __gmp_bits_per_limb +__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb; + +#define gmp_errno __gmp_errno +__GMP_DECLSPEC extern int gmp_errno; + +#define gmp_version __gmp_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version; + +#define mpir_version __mpir_version +__GMP_DECLSPEC extern __gmp_const char * __gmp_const mpir_version; + + +/**************** Random number routines. ****************/ + +#define gmp_randinit_default __gmp_randinit_default +__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp +__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t, + mpz_srcptr, unsigned long int, + mp_bitcnt_t)); + +#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size +__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t)); + +#define gmp_randinit_mt __gmp_randinit_mt +__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_randinit_set __gmp_randinit_set +__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *)); + +#define gmp_randseed __gmp_randseed +__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr)); + +#define gmp_randseed_ui __gmp_randseed_ui +__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int)); + +#define gmp_randclear __gmp_randclear +__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t)); + +#define gmp_urandomb_ui __gmp_urandomb_ui +__GMP_DECLSPEC unsigned long gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, unsigned long)); + +#define gmp_urandomm_ui __gmp_urandomm_ui +__GMP_DECLSPEC unsigned long gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, unsigned long)); + + +/**************** Formatted output routines. ****************/ + +#define gmp_asprintf __gmp_asprintf +__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...)); + +#define gmp_fprintf __gmp_fprintf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_printf __gmp_obstack_printf +#if defined (_GMP_H_HAVE_OBSTACK) +__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...)); +#endif + +#define gmp_obstack_vprintf __gmp_obstack_vprintf +#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list)); +#endif + +#define gmp_printf __gmp_printf +__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_snprintf __gmp_snprintf +__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...)); + +#define gmp_sprintf __gmp_sprintf +__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...)); + +#define gmp_vasprintf __gmp_vasprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list)); +#endif + +#define gmp_vfprintf __gmp_vfprintf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vprintf __gmp_vprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsnprintf __gmp_vsnprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list)); +#endif + +#define gmp_vsprintf __gmp_vsprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list)); +#endif + + +/**************** Formatted input routines. ****************/ + +#define gmp_fscanf __gmp_fscanf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...)); +#endif + +#define gmp_scanf __gmp_scanf +__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...)); + +#define gmp_sscanf __gmp_sscanf +__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...)); + +#define gmp_vfscanf __gmp_vfscanf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list)); +#endif + +#define gmp_vscanf __gmp_vscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list)); +#endif + +#define gmp_vsscanf __gmp_vsscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list)); +#endif + + +/**************** Integer (i.e. Z) routines. ****************/ + +#define __GMP_BITS_PER_ULONG (8*sizeof(unsigned long)) + +#define _mpz_realloc __gmpz_realloc +#define mpz_realloc __gmpz_realloc +__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t)); + +#define mpz_abs __gmpz_abs +#define __GMP_MPZ_ABS_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs) +__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define __GMP_MPZ_ADD_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_add __gmpz_add +__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_ADD_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS)+1) +#define mpz_add_ui __gmpz_add_ui +__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_addmul __gmpz_addmul +__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_addmul_ui __gmpz_addmul_ui +__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_and __gmpz_and +__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_array_init __gmpz_array_init +__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t)); + +#define mpz_bin_ui __gmpz_bin_ui +__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_bin_uiui __gmpz_bin_uiui +__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); + +#define mpz_cdiv_q __gmpz_cdiv_q +__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp +__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); + +#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_cdiv_qr __gmpz_cdiv_qr +__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_cdiv_r __gmpz_cdiv_r +__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp +__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_cdiv_ui __gmpz_cdiv_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_clear __gmpz_clear +__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr)); + +#define mpz_clears __gmpz_clears +__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_clrbit __gmpz_clrbit +__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_cmp __gmpz_cmp +__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmp_d __gmpz_cmp_d +__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_si __gmpz_cmp_si +__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_ui __gmpz_cmp_ui +__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs __gmpz_cmpabs +__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_d __gmpz_cmpabs_d +__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_ui __gmpz_cmpabs_ui +__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_com __gmpz_com +__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_combit __gmpz_combit +__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_congruent_p __gmpz_congruent_p +__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p +__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_ui_p __gmpz_congruent_ui_p +__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divexact __gmpz_divexact +__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_divexact_ui __gmpz_divexact_ui +__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); + +#define mpz_divisible_p __gmpz_divisible_p +__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_ui_p __gmpz_divisible_ui_p +__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p +__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_dump __gmpz_dump +__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr)); + +#define mpz_export __gmpz_export +__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr)); + +#define mpz_fac_ui __gmpz_fac_ui +__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_fdiv_q __gmpz_fdiv_q +__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp +__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_fdiv_qr __gmpz_fdiv_qr +__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_fdiv_r __gmpz_fdiv_r +__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp +__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_fdiv_ui __gmpz_fdiv_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_fib_ui __gmpz_fib_ui +__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_fib2_ui __gmpz_fib2_ui +__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); + +#define mpz_fits_sint_p __gmpz_fits_sint_p +__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_slong_p __gmpz_fits_slong_p +__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_sshort_p __gmpz_fits_sshort_p +__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_uint_p __gmpz_fits_uint_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ulong_p __gmpz_fits_ulong_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ushort_p __gmpz_fits_ushort_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_gcd __gmpz_gcd +__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_gcd_ui __gmpz_gcd_ui +__GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_gcdext __gmpz_gcdext +__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_get_d __gmpz_get_d +__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_get_d_2exp __gmpz_get_d_2exp +__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr)); + +#define mpz_get_si __gmpz_get_si +__GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_get_str __gmpz_get_str +__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr)); + +#define mpz_get_ui __gmpz_get_ui +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui) +__GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_getlimbn __gmpz_getlimbn +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn) +__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_hamdist __gmpz_hamdist +__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_import __gmpz_import +__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *)); + +#define mpz_init __gmpz_init +__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr)); + +#define mpz_init2 __gmpz_init2 +__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_inits __gmpz_inits +__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...)); + +#define mpz_init_set __gmpz_init_set +__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_init_set_d __gmpz_init_set_d +__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_init_set_si __gmpz_init_set_si +__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int)); + +#define mpz_init_set_str __gmpz_init_set_str +__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define mpz_init_set_ui __gmpz_init_set_ui +__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_inp_raw __gmpz_inp_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *)); +#endif + +#define mpz_inp_str __gmpz_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int)); +#endif + +#define mpz_invert __gmpz_invert +__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_ior __gmpz_ior +__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_jacobi __gmpz_jacobi +__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker mpz_jacobi /* alias */ + +#define mpz_kronecker_si __gmpz_kronecker_si +__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker_ui __gmpz_kronecker_ui +__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define mpz_si_kronecker __gmpz_si_kronecker +__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_kronecker __gmpz_ui_kronecker +__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_lcm __gmpz_lcm +__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_lcm_ui __gmpz_lcm_ui +__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long)); + +#define mpz_legendre mpz_jacobi /* alias */ + +#define mpz_lucnum_ui __gmpz_lucnum_ui +__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_lucnum2_ui __gmpz_lucnum2_ui +__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int)); + +#define mpz_millerrabin __gmpz_millerrabin +__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_mod __gmpz_mod +__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */ + +#define __GMP_MPZ_MUL_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+__GMP_ABS(z->_mp_size)+1) +#define mpz_mul __gmpz_mul +__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_mul_2exp __gmpz_mul_2exp +__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define __GMP_MPZ_MUL_SI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS+1) +#define mpz_mul_si __gmpz_mul_si +__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int)); + +#define __GMP_MPZ_MUL_UI_MIN_ALLOC(x,y,z) (__GMP_ABS(y->_mp_size)+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS+1) +#define mpz_mul_ui __gmpz_mul_ui +__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_neg __gmpz_neg +#define __GMP_MPZ_NEG_MIN_ALLOC(x,y) (__GMP_ABS(y->_mp_size)) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg) +__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr)); +#endif + +#define mpz_nextprime __gmpz_nextprime +__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_next_likely_prime __gmpz_next_likely_prime +__GMP_DECLSPEC void mpz_next_likely_prime __GMP_PROTO ((mpz_ptr, mpz_srcptr,gmp_randstate_t)); + +#define mpz_out_raw __gmpz_out_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr)); +#endif + +#define mpz_out_str __gmpz_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr)); +#endif + +#define mpz_perfect_power_p __gmpz_perfect_power_p +__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpz_perfect_square_p __gmpz_perfect_square_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_popcount __gmpz_popcount +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount) +__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_pow_ui __gmpz_pow_ui +__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_powm __gmpz_powm +__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_powm_ui __gmpz_powm_ui +__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr)); + +#define mpz_probab_prime_p __gmpz_probab_prime_p +__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_probable_prime_p __gmpz_probable_prime_p +__GMP_DECLSPEC int mpz_probable_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, int,unsigned long)); + +#define mpz_likely_prime_p __gmpz_likely_prime_p +__GMP_DECLSPEC int mpz_likely_prime_p __GMP_PROTO ((mpz_srcptr,gmp_randstate_t, unsigned long)); + +#define mpz_realloc2 __gmpz_realloc2 +__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_remove __gmpz_remove +__GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_root __gmpz_root +__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_nthroot __gmpz_nthroot +__GMP_DECLSPEC void mpz_nthroot __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_rootrem __gmpz_rootrem +__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_rrandomb __gmpz_rrandomb +__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_scan0 __gmpz_scan0 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_scan1 __gmpz_scan1 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define __GMP_MPZ_SET_MIN_ALLOC(x,y) __GMP_ABS(y->_mp_size) +#define mpz_set __gmpz_set +__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_set_d __gmpz_set_d +__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double)); + +#define mpz_set_f __gmpz_set_f +__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr)); + +#define mpz_set_q __gmpz_set_q +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q) +__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr)); +#endif + +#define __GMP_MPZ_SET_SI_MIN_ALLOC(x,y) (1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS) +#define mpz_set_si __gmpz_set_si +__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int)); + +#define mpz_set_str __gmpz_set_str +__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int)); + +#define __GMP_MPZ_SET_UI_MIN_ALLOC(x,y) (1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS) +#define mpz_set_ui __gmpz_set_ui +__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int)); + +#define mpz_setbit __gmpz_setbit +__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t)); + +#define mpz_size __gmpz_size +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size) +__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_sizeinbase __gmpz_sizeinbase +__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_sqrt __gmpz_sqrt +__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr)); + +#define mpz_sqrtrem __gmpz_sqrtrem +__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),__GMP_ABS(z->_mp_size))+1) +#define mpz_sub __gmpz_sub +__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define __GMP_MPZ_SUB_UI_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(y->_mp_size),1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS)+1) +#define mpz_sub_ui __gmpz_sub_ui +__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define __GMP_MPZ_UI_SUB_MIN_ALLOC(x,y,z) (__GMP_MAX(__GMP_ABS(z->_mp_size),1+(__GMP_BITS_PER_ULONG-1)/GMP_NUMB_BITS)+1) +#define mpz_ui_sub __gmpz_ui_sub +__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr)); + +#define mpz_submul __gmpz_submul +__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_submul_ui __gmpz_submul_ui +__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_swap __gmpz_swap +__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW; + +#define mpz_tdiv_ui __gmpz_tdiv_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpz_tdiv_q __gmpz_tdiv_q +__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp +__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_tdiv_qr __gmpz_tdiv_qr +__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_tdiv_r __gmpz_tdiv_r +__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + +#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp +__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t)); + +#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int)); + +#define mpz_tstbit __gmpz_tstbit +__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_pow_ui __gmpz_ui_pow_ui +__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int)); + +#define mpz_urandomb __gmpz_urandomb +__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t)); + +#define mpz_urandomm __gmpz_urandomm +__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr)); + +#define mpz_xor __gmpz_xor +#define mpz_eor __gmpz_xor +__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr)); + + +/**************** Rational (i.e. Q) routines. ****************/ + +#define mpq_abs __gmpq_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs) +__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_add __gmpq_add +__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_canonicalize __gmpq_canonicalize +__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr)); + +#define mpq_clear __gmpq_clear +__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr)); + +#define mpq_clears __gmpq_clears +__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_cmp __gmpq_cmp +__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_si __gmpq_cmp_si +__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_ui __gmpq_cmp_ui +__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpq_div __gmpq_div +__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_div_2exp __gmpq_div_2exp +__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_equal __gmpq_equal +__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpq_get_num __gmpq_get_num +__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_den __gmpq_get_den +__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr)); + +#define mpq_get_d __gmpq_get_d +__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpq_get_str __gmpq_get_str +__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr)); + +#define mpq_init __gmpq_init +__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr)); + +#define mpq_inits __gmpq_inits +__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...)); + +#define mpq_inp_str __gmpq_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int)); +#endif + +#define mpq_inv __gmpq_inv +__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_mul __gmpq_mul +__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_mul_2exp __gmpq_mul_2exp +__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t)); + +#define mpq_neg __gmpq_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg) +__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr)); +#endif + +#define mpq_out_str __gmpq_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr)); +#endif + +#define mpq_set __gmpq_set +__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr)); + +#define mpq_set_d __gmpq_set_d +__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double)); + +#define mpq_set_den __gmpq_set_den +__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_f __gmpq_set_f +__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr)); + +#define mpq_set_num __gmpq_set_num +__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_set_si __gmpq_set_si +__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int)); + +#define mpq_set_str __gmpq_set_str +__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int)); + +#define mpq_set_ui __gmpq_set_ui +__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int)); + +#define mpq_set_z __gmpq_set_z +__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr)); + +#define mpq_sub __gmpq_sub +__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr)); + +#define mpq_swap __gmpq_swap +__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW; + + +/**************** Float (i.e. F) routines. ****************/ + +#define mpf_abs __gmpf_abs +__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_add __gmpf_add +__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_add_ui __gmpf_add_ui +__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); +#define mpf_ceil __gmpf_ceil +__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_clear __gmpf_clear +__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr)); + +#define mpf_clears __gmpf_clears +__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_cmp __gmpf_cmp +__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_d __gmpf_cmp_d +__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_si __gmpf_cmp_si +__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_ui __gmpf_cmp_ui +__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_div __gmpf_div +__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_div_2exp __gmpf_div_2exp +__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_div_ui __gmpf_div_ui +__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_dump __gmpf_dump +__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr)); + +#define mpf_eq __gmpf_eq +__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sint_p __gmpf_fits_sint_p +__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_slong_p __gmpf_fits_slong_p +__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sshort_p __gmpf_fits_sshort_p +__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_uint_p __gmpf_fits_uint_p +__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ulong_p __gmpf_fits_ulong_p +__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ushort_p __gmpf_fits_ushort_p +__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_floor __gmpf_floor +__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_get_d __gmpf_get_d +__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE; + +#define mpf_get_d_2exp __gmpf_get_d_2exp +__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr)); + +#define mpf_get_default_prec __gmpf_get_default_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_prec __gmpf_get_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_si __gmpf_get_si +__GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_str __gmpf_get_str +__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr)); + +#define mpf_get_ui __gmpf_get_ui +__GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_init __gmpf_init +__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr)); + +#define mpf_init2 __gmpf_init2 +__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_inits __gmpf_inits +__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...)); + +#define mpf_init_set __gmpf_init_set +__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_init_set_d __gmpf_init_set_d +__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_init_set_si __gmpf_init_set_si +__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int)); + +#define mpf_init_set_str __gmpf_init_set_str +__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_init_set_ui __gmpf_init_set_ui +__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); + +#define mpf_inp_str __gmpf_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int)); +#endif + +#define mpf_integer_p __gmpf_integer_p +__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_mul __gmpf_mul +__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_mul_2exp __gmpf_mul_2exp +__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t)); + +#define mpf_mul_ui __gmpf_mul_ui +__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_neg __gmpf_neg +__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_out_str __gmpf_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr)); +#endif + +#define mpf_pow_ui __gmpf_pow_ui +__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_random2 __gmpf_random2 +__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t)); + +#define mpf_rrandomb __gmpf_rrandomb +__GMP_DECLSPEC void mpf_rrandomb __GMP_PROTO ((mpf_ptr, gmp_randstate_t, mp_size_t, mp_exp_t)); + +#define mpf_reldiff __gmpf_reldiff +__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_set __gmpf_set +__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_set_d __gmpf_set_d +__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double)); + +#define mpf_set_default_prec __gmpf_set_default_prec +__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_prec __gmpf_set_prec +__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)); + +#define mpf_set_prec_raw __gmpf_set_prec_raw +__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW; + +#define mpf_set_q __gmpf_set_q +__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr)); + +#define mpf_set_si __gmpf_set_si +__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int)); + +#define mpf_set_str __gmpf_set_str +__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int)); + +#define mpf_set_ui __gmpf_set_ui +__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); + +#define mpf_set_z __gmpf_set_z +__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr)); + +#define mpf_size __gmpf_size +__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_sqrt __gmpf_sqrt +__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_sqrt_ui __gmpf_sqrt_ui +__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int)); + +#define mpf_sub __gmpf_sub +__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr)); + +#define mpf_sub_ui __gmpf_sub_ui +__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int)); + +#define mpf_swap __gmpf_swap +__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW; + +#define mpf_trunc __gmpf_trunc +__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr)); + +#define mpf_ui_div __gmpf_ui_div +__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); + +#define mpf_ui_sub __gmpf_ui_sub +__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr)); + +#define mpf_urandomb __gmpf_urandomb +__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t)); + + +/************ Low level positive-integer (i.e. N) routines. ************/ + +/* This is ugly, but we need to make user calls reach the prefixed function. */ + +#define mpn_add __MPN(add) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add) +__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_add_1 __MPN(add_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1) +__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_add_n __MPN(add_n) +__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_addmul_1 __MPN(addmul_1) +__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_bdivmod __MPN(bdivmod) +__GMP_DECLSPEC mp_limb_t mpn_bdivmod __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int)); + +#define mpn_divrem __MPN(divrem) +__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mulmod_2expp1 __MPN(mulmod_2expp1) +__GMP_DECLSPEC int mpn_mulmod_2expp1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr,int,unsigned long, mp_ptr)); + +#define mpn_mulmod_2expm1 __MPN(mulmod_2expm1) +__GMP_DECLSPEC void mpn_mulmod_2expm1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_ptr,unsigned long, mp_ptr)); + +#define mpn_cmp __MPN(cmp) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp) +__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_divexact_by3(dst,src,size) \ + mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0)) + +#define mpn_divexact_by3c __MPN(divexact_by3c) +__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divmod_1(qp,np,nsize,dlimb) \ + mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb) + +#define mpn_divrem_1 __MPN(divrem_1) +__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_divrem_2 __MPN(divrem_2) +__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr)); + +#define mpn_invert __MPN(invert) +__GMP_DECLSPEC void mpn_invert __GMP_PROTO ((mp_ptr xp, mp_srcptr ap, mp_size_t n)); + +#define mpn_sb_divappr_q __MPN(sb_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dip)); + +#define mpn_dc_divappr_q_n __MPN(dc_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dip, mp_ptr tp)); + +#define mpn_dc_bdiv_q_n __MPN(dc_bdiv_q_n) +__GMP_DECLSPEC void mpn_dc_bdiv_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr scratch)); + +#define mpn_inv_divappr_q_n __MPN(inv_divappr_q_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_srcptr dip)); + +#define mpn_dc_divappr_q __MPN(dc_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv)); + +#define mpn_dc_div_q __MPN(dc_div_q) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_inv_divappr_q __MPN(inv_divappr_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_divappr_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t n, + mp_srcptr dinv)); + +#define mpn_inv_div_q __MPN(inv_div_q) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr __MPN(inv_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_inv_div_qr_n __MPN(inv_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_inv_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t dn, mp_srcptr dinv)); + +#define mpn_dc_div_qr __MPN(dc_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_div_qr_n __MPN(dc_div_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_div_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_srcptr dp, mp_size_t n, + mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_q __MPN(sb_div_q) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_q __MPN(sb_bdiv_q) +__GMP_DECLSPEC void mpn_sb_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr wp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_q __MPN(dc_bdiv_q) +__GMP_DECLSPEC void mpn_dc_bdiv_q __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr __MPN(dc_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_dc_bdiv_qr_n __MPN(dc_bdiv_qr_n) +__GMP_DECLSPEC mp_limb_t mpn_dc_bdiv_qr_n __GMP_PROTO ((mp_ptr qp, mp_ptr np, + mp_srcptr dp, mp_size_t n, mp_limb_t dinv, mp_ptr tp)); + +#define mpn_sb_div_qr __MPN(sb_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_div_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_sb_bdiv_qr __MPN(sb_bdiv_qr) +__GMP_DECLSPEC mp_limb_t mpn_sb_bdiv_qr __GMP_PROTO ((mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, mp_limb_t dinv)); + +#define mpn_tdiv_q __MPN(tdiv_q) +__GMP_DECLSPEC void mpn_tdiv_q __GMP_PROTO ((mp_ptr qp, mp_srcptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn)); + +#define mpn_divexact __MPN(divexact) +__GMP_DECLSPEC void mpn_divexact __GMP_PROTO ((mp_ptr qp, + mp_srcptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn)); + +#define mpn_redc_1 __MPN(redc_1) +__GMP_DECLSPEC void mpn_redc_1 __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);) + +#define mpn_gcd __MPN(gcd) +__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_gcd_1 __MPN(gcd_1) +__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcdext __MPN(gcdext) +__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t)); + +#define mpn_get_str __MPN(get_str) +__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t)); + +#define mpn_hamdist __MPN(hamdist) +__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_lshift __MPN(lshift) +__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_mod_1 __MPN(mod_1) +__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_mul __MPN(mul) +__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_mul_1 __MPN(mul_1) +__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_mul_n __MPN(mul_n) +__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_sqr __MPN(sqr) +__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_neg_n __MPN(neg_n) +#define mpn_neg __MPN(neg_n) +__GMP_DECLSPEC mp_limb_t mpn_neg_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_com_n __MPN(com_n) +#define mpn_com __MPN(com_n) +__GMP_DECLSPEC void mpn_com_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_perfect_square_p __MPN(perfect_square_p) +__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_popcount __MPN(popcount) +__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_pow_1 __MPN(pow_1) +__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr)); + +/* undocumented now, but retained here for upward compatibility */ +#define mpn_preinv_mod_1 __MPN(preinv_mod_1) +__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_random __MPN(random) +__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_random2 __MPN(random2) +__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t)); + +#define mpn_urandomb __MPN(urandomb) +__GMP_DECLSPEC void mpn_urandomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, unsigned long)); + +#define mpn_urandomm __MPN(urandomm) +__GMP_DECLSPEC void mpn_urandomm __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_srcptr, mp_size_t)); + +#define mpn_randomb __MPN(randomb) +__GMP_DECLSPEC void mpn_randomb __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rrandom __MPN(rrandom) +__GMP_DECLSPEC void mpn_rrandom __GMP_PROTO ((mp_ptr, gmp_randstate_t, mp_size_t)); + +#define mpn_rshift __MPN(rshift) +__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int)); + +#define mpn_scan0 __MPN(scan0) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_scan1 __MPN(scan1) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; + +#define mpn_set_str __MPN(set_str) +__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int)); + +#define mpn_sqrtrem __MPN(sqrtrem) +__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t)); + +#define mpn_sub __MPN(sub) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub) +__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t)); +#endif + +#define mpn_sub_1 __MPN(sub_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW; +#endif + +#define mpn_sub_n __MPN(sub_n) +__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_submul_1 __MPN(submul_1) +__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)); + +#define mpn_tdiv_qr __MPN(tdiv_qr) +__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)); + +#define mpn_and_n __MPN(and_n) +__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_andn_n __MPN(andn_n) +__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nand_n __MPN(nand_n) +__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_ior_n __MPN(ior_n) +__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_iorn_n __MPN(iorn_n) +__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_nior_n __MPN(nior_n) +__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xor_n __MPN(xor_n) +__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); +#define mpn_xnor_n __MPN(xnor_n) +__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)); + +#define mpn_copyi __MPN(copyi) +__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_copyd __MPN(copyd) +__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t)); +#define mpn_zero __MPN(zero) +__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t)); + +/**************** mpz inlines ****************/ + +/* The following are provided as inlines where possible, but always exist as + library functions too, for binary compatibility. + + Within gmp itself this inlining generally isn't relied on, since it + doesn't get done for all compilers, whereas if something is worth + inlining then it's worth arranging always. + + There are two styles of inlining here. When the same bit of code is + wanted for the inline as for the library version, then __GMP_FORCE_foo + arranges for that code to be emitted and the __GMP_EXTERN_INLINE + directive suppressed, eg. mpz_fits_uint_p. When a different bit of code + is wanted for the inline than for the library version, then + __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs) +__GMP_EXTERN_INLINE void +mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); +} +#endif + +#if GMP_NAIL_BITS == 0 +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); +#else +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ + || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p) +#if ! defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p) +#if ! defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p) +#if ! defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui) +#if ! defined (__GMP_FORCE_mpz_get_ui) +__GMP_EXTERN_INLINE +#endif +unsigned long +mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + mp_ptr __gmp_p = __gmp_z->_mp_d; + mp_size_t __gmp_n = __gmp_z->_mp_size; + mp_limb_t __gmp_l = __gmp_p[0]; + /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings + about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland + C++ 6.0 warnings about condition always true for something like + "__GMP_ULONG_MAX < GMP_NUMB_MASK". */ +#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB) + /* limb==long and no nails, or limb==longlong, one limb is enough */ + return (unsigned long)(__gmp_n != 0 ? __gmp_l : 0); +#else + /* limb==long and nails, need two limbs when available */ + __gmp_n = __GMP_ABS (__gmp_n); + if (__gmp_n <= 1) + return (__gmp_n != 0 ? __gmp_l : 0); + else + return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS); +#endif +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn) +#if ! defined (__GMP_FORCE_mpz_getlimbn) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_result = 0; + if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size))) + __gmp_result = __gmp_z->_mp_d[__gmp_n]; + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg) +__GMP_EXTERN_INLINE void +mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = - __gmp_w->_mp_size; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p) +#if ! defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_perfect_square_p (mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + + __gmp_asize = __gmp_a->_mp_size; + __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */ + if (__GMP_LIKELY (__gmp_asize > 0)) + __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount) +#if ! defined (__GMP_FORCE_mpz_popcount) +__GMP_EXTERN_INLINE +#endif +mp_bitcnt_t +mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW +{ + mp_size_t __gmp_usize; + mp_bitcnt_t __gmp_result; + + __gmp_usize = __gmp_u->_mp_size; + __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0); + if (__GMP_LIKELY (__gmp_usize > 0)) + __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q) +#if ! defined (__GMP_FORCE_mpz_set_q) +__GMP_EXTERN_INLINE +#endif +void +mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size) +#if ! defined (__GMP_FORCE_mpz_size) +__GMP_EXTERN_INLINE +#endif +size_t +mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + return __GMP_ABS (__gmp_z->_mp_size); +} +#endif + + +/**************** mpq inlines ****************/ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs) +__GMP_EXTERN_INLINE void +mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg) +__GMP_EXTERN_INLINE void +mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; +} +#endif + + +/**************** mpn inlines ****************/ + +/* The comments with __GMPN_ADD_1 below apply here too. + + The test for FUNCTION returning 0 should predict well. If it's assumed + {yp,ysize} will usually have a random number of bits then the high limb + won't be full and a carry out will occur a good deal less than 50% of the + time. + + ysize==0 isn't a documented feature, but is used internally in a few + places. + + Producing cout last stops it using up a register during the main part of + the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" + doesn't seem able to move the true and false legs of the conditional up + to the two places cout is generated. */ + +#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x; \ + \ + /* ASSERT ((ysize) >= 0); */ \ + /* ASSERT ((xsize) >= (ysize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ + \ + __gmp_i = (ysize); \ + if (__gmp_i != 0) \ + { \ + if (FUNCTION (wp, xp, yp, __gmp_i)) \ + { \ + do \ + { \ + if (__gmp_i >= (xsize)) \ + { \ + (cout) = 1; \ + goto __gmp_done; \ + } \ + __gmp_x = (xp)[__gmp_i]; \ + } \ + while (TEST); \ + } \ + } \ + if ((wp) != (xp)) \ + __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ + (cout) = 0; \ + __gmp_done: \ + ; \ + } while (0) + +#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ + (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) +#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ + (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) + + +/* The use of __gmp_i indexing is designed to ensure a compile time src==dst + remains nice and clear to the compiler, so that __GMPN_COPY_REST can + disappear, and the load/add/store gets a chance to become a + read-modify-write on CISC CPUs. + + Alternatives: + + Using a pair of pointers instead of indexing would be possible, but gcc + isn't able to recognise compile-time src==dst in that case, even when the + pointers are incremented more or less together. Other compilers would + very likely have similar difficulty. + + gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or + similar to detect a compile-time src==dst. This works nicely on gcc + 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems + to be always false, for a pointer p. But the current code form seems + good enough for src==dst anyway. + + gcc on x86 as usual doesn't give particularly good flags handling for the + carry/borrow detection. It's tempting to want some multi instruction asm + blocks to help it, and this was tried, but in truth there's only a few + instructions to save and any gain is all too easily lost by register + juggling setting up for the asm. */ + +#if GMP_NAIL_BITS == 0 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r; \ + if (CB (__gmp_r, __gmp_x, (v))) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r; \ + ++__gmp_i; \ + if (!CB (__gmp_r, __gmp_x, 1)) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#if GMP_NAIL_BITS >= 1 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ + if (__gmp_r >> GMP_NUMB_BITS != 0) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ + ++__gmp_i; \ + if (__gmp_r >> GMP_NUMB_BITS == 0) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#define __GMPN_ADDCB(r,x,y) ((r) < (y)) +#define __GMPN_SUBCB(r,x,y) ((x) < (y)) + +#define __GMPN_ADD_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) +#define __GMPN_SUB_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) + + +/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or + negative. size==0 is allowed. On random data usually only one limb will + need to be examined to get a result, so it's worth having it inline. */ +#define __GMPN_CMP(result, xp, yp, size) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_y; \ + \ + /* ASSERT ((size) >= 0); */ \ + \ + (result) = 0; \ + __gmp_i = (size); \ + while (--__gmp_i >= 0) \ + { \ + __gmp_x = (xp)[__gmp_i]; \ + __gmp_y = (yp)[__gmp_i]; \ + if (__gmp_x != __gmp_y) \ + { \ + /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ + (result) = (__gmp_x > __gmp_y ? 1 : -1); \ + break; \ + } \ + } \ + } while (0) + + +#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ + } while (0) +#endif + +/* Copy {src,size} to {dst,size}, starting at "start". This is designed to + keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, + __GMPN_ADD, etc. */ +#if ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + mp_size_t __gmp_j; \ + /* ASSERT ((size) >= 0); */ \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ + for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ + (dst)[__gmp_j] = (src)[__gmp_j]; \ + } while (0) +#endif + +/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use + mpn_copyi if there's a native version, and if we don't mind demanding + binary compatibility for it (on targets which use it). */ + +#if ! defined (__GMPN_COPY) +#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) +#endif + + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add) +#if ! defined (__GMP_FORCE_mpn_add) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1) +#if ! defined (__GMP_FORCE_mpn_add_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp) +#if ! defined (__GMP_FORCE_mpn_cmp) +__GMP_EXTERN_INLINE +#endif +int +mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW +{ + int __gmp_result; + __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub) +#if ! defined (__GMP_FORCE_mpn_sub) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1) +#if ! defined (__GMP_FORCE_mpn_sub_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__cplusplus) +} +#endif + + +/* Allow faster testing for negative, zero, and positive. */ +#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) +#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) +#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) + +/* When using GCC, optimize certain common comparisons. */ +#if defined (__GNUC__) +#define mpz_cmp_ui(Z,UI) \ + (__builtin_constant_p (UI) && (UI) == 0 \ + ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) +#define mpz_cmp_si(Z,SI) \ + (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \ + : __builtin_constant_p (SI) && (SI) > 0 \ + ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI)) \ + : _mpz_cmp_si (Z,SI)) +#define mpq_cmp_ui(Q,NUI,DUI) \ + (__builtin_constant_p (NUI) && (NUI) == 0 \ + ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI)) +#define mpq_cmp_si(q,n,d) \ + (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ + ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \ + : _mpq_cmp_si (q, n, d)) +#else +#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) +#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) +#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) +#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) +#endif + + +/* Using "&" rather than "&&" means these can come out branch-free. Every + mpz_t has at least one limb allocated, so fetching the low limb is always + allowed. */ +#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0])) +#define mpz_even_p(z) (! mpz_odd_p (z)) + + +/**************** C++ routines ****************/ + +#ifdef __cplusplus +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); +#endif + +/* Source-level compatibility with GMP 1. */ +#define mpz_mdiv mpz_fdiv_q +#define mpz_mdivmod mpz_fdiv_qr +#define mpz_mmod mpz_fdiv_r +#define mpz_mdiv_ui mpz_fdiv_q_ui +#define mpz_mdivmod_ui(q,r,n,d) \ + (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) +#define mpz_mmod_ui(r,n,d) \ + (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) + +#define gmp_randinit(x,y,z) gmp_randinit_lc_2exp_size(x,z) + +typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */ +typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */ + +#define mpz_div mpz_fdiv_q +#define mpz_divmod mpz_fdiv_qr +#define mpz_div_ui mpz_fdiv_q_ui +#define mpz_divmod_ui mpz_fdiv_qr_ui +#define mpz_div_2exp mpz_fdiv_q_2exp +#define mpz_mod_2exp mpz_fdiv_r_2exp + +enum +{ + GMP_ERROR_NONE = 0, + GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, + GMP_ERROR_DIVISION_BY_ZERO = 2, + GMP_ERROR_SQRT_OF_NEGATIVE = 4, + GMP_ERROR_INVALID_ARGUMENT = 8 +}; + +/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ +#define __GNU_MP_VERSION 5 +#define __GNU_MP_VERSION_MINOR 0 +#define __GNU_MP_VERSION_PATCHLEVEL 1 +#define GMP_VERSION "5.0.1" + +#define __MPIR_VERSION 2 +#define __MPIR_VERSION_MINOR 2 +#define __MPIR_VERSION_PATCHLEVEL 1 +#if defined( _MSC_VER ) +#define _MSC_MPIR_VERSION "2.2.1" +#endif + +/* These are for programs like MPFR to use the same CC and CFLAGS as MPIR */ + +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_CC "gcc" +#define __GMP_CFLAGS "-O3" +#define __MPIR_CC "gcc -std=gnu99" +#define __MPIR_CFLAGS "-O3" +#endif + +#define __GMP_H__ +#endif /* __GMP_H__ */ + diff --git a/vitis/v2021_2/hls/dsp/hls_awgn.h b/vitis/v2021_2/hls/dsp/hls_awgn.h new file mode 100755 index 00000000..c1b2fc7f --- /dev/null +++ b/vitis/v2021_2/hls/dsp/hls_awgn.h @@ -0,0 +1,389 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_AWGN_H +#define HLS_AWGN_H + +#include "ap_fixed.h" +#include "ap_int.h" +#include + +namespace hls { +#if (defined(OutputWidth)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // AWGN: Class definition + // o Template parameters: + // - OutputWidth : Selects the number of bits in the output. + template< + int OutputWidth> + class awgn { + + public: + + // AWGN SNR input type definition + typedef ap_ufixed<8,4, AP_RND, AP_SAT> t_input_scale; + + // The following constants are used to define the width of the LFSR seed + static const int LFSR_SECTION_WIDTH = 32; + static const int NUM_NOISE_GENS = 4; + static const int LFSR_WIDTH = LFSR_SECTION_WIDTH*NUM_NOISE_GENS; + + awgn(ap_uint seed) { + check_params(seed, OutputWidth); + // Initialize LFSR state + lfsr128 = seed; + // Ensure state variables are reset + #pragma HLS reset variable=lfsr128 + } //end constructor + + ~awgn() { + } //end destructor + + + // =================================================================================================================== + // AWGN: Entry point function. + // o Arguments: + // - snr : signal to noise ratio desired. + // - outputData : Additive Gaussian white noise output data + void operator()(const t_input_scale &snr, + ap_int &outputData) { + + Function_awgn_operator:; + + //The BRAM contents have been calculated using Excel which has the probit function, + //then exported to csv so as to paste into this file. + + const ap_uint coarseContents[] = { + 131070,125628,122854,121035,119668,118569,117649,116856,116158,115536,114973,114459,113987,113549,113141,112760,112401,112062,111741,111437,111147,110870,110605,110351,110107,109873,109647,109429,109218,109015,108817,108626, + 108441,108261,108086,107915,107750,107588,107431,107277,107127,106980,106837,106697,106560,106426,106295,106166,106040,105916,105795,105675,105559,105444,105331,105220,105111,105004,104898,104795,104692,104592,104493,104395, + 104252,104065,103884,103707,103536,103368,103205,103045,102890,102738,102589,102444,102302,102163,102026,101893,101762,101633,101507,101384,101262,101143,101026,100911,100798,100686,100577,100469,100363,100259,100156,100054, + 99906,99712,99523,99340,99161,98987,98817,98651,98490,98331,98177,98026,97878,97733,97591,97452,97316,97182,97051,96922,96796,96672,96550,96430,96312,96196,96082,95970,95859,95750,95643,95538, + 95383,95180,94984,94793,94606,94425,94248,94075,93906,93741,93580,93422,93268,93117,92969,92823,92681,92542,92405,92270,92138,92008,91881,91756,91632,91511,91392,91275,91159,91045,90933,90823, + 90661,90449,90244,90043,89848,89658,89473,89292,89115,88943,88774,88609,88447,88288,88133,87981,87832,87686,87542,87401,87263,87126,86993,86861,86732,86605,86480,86357,86235,86116,85998,85882, + 85712,85490,85274,85063,84859,84659,84464,84274,84088,83906,83728,83555,83384,83218,83054,82894,82737,82583,82432,82283,82137,81994,81853,81714,81578,81444,81312,81182,81054,80928,80804,80682, + 80502,80267,80039,79817,79601,79389,79183,78982,78786,78594,78406,78222,78042,77865,77692,77523,77356,77193,77033,76875,76721,76569,76419,76272,76128,75985,75845,75708,75572,75438,75306,75177, + 74985,74736,74494,74258,74028,73803,73584,73370,73161,72957,72756,72561,72369,72181,71996,71815,71638,71464,71293,71125,70960,70798,70638,70481,70327,70175,70025,69878,69732,69589,69448,69310, + 69105,68839,68579,68326,68080,67839,67604,67374,67150,66930,66715,66505,66299,66097,65898,65704,65513,65326,65142,64961,64783,64608,64436,64267,64100,63937,63775,63616,63459,63305,63153,63003, + 62782,62494,62213,61939,61672,61412,61157,60908,60665,60426,60193,59965,59740,59521,59305,59094,58886,58682,58482,58284,58091,57900,57712,57528,57346,57167,56991,56817,56646,56477,56310,56146, + 55904,55589,55281,54981,54688,54401,54122,53848,53580,53318,53061,52809,52562,52319,52081,51848,51618,51392,51171,50952,50738,50526,50318,50114,49912,49713,49517,49324,49133,48945,48760,48577, + 48307,47955,47612,47276,46948,46628,46314,46007,45706,45412,45123,44839,44561,44287,44019,43755,43495,43240,42989,42741,42498,42258,42022,41789,41560,41333,41110,40890,40672,40458,40246,40036, + 39728,39324,38930,38544,38167,37797,37435,37080,36732,36390,36055,35725,35401,35082,34769,34460,34156,33857,33562,33272,32985,32703,32424,32149,31878,31610,31345,31083,30825,30569,30317,30067, + 29698,29215,28741,28277,27821,27374,26935,26503,26079,25661,25250,24845,24446,24053,23665,23282,22904,22531,22163,21799,21439,21083,20731,20383,20038,19697,19360,19025,18694,18365,18040,17717, + 17239,16609,15989,15378,14775,14180,13592,13011,12437,11868,11305,10748,10195,9647,9103,8563,8027,7494,6964,6437,5913,5391,4871,4353,3837,3322,2809,2297,1786,1275,765,255 + }; + const ap_uint gradientContents[] = { + 6999,3591,2146,1544,1210,997,849,740,657,590,536,492,454,422,394,370,348,329,312,297,283,271,259,249,239,230,222,214,207,200,194,188, + 183,178,173,168,164,159,156,152,148,145,142,139,136,133,130,127,125,123,120,118,116,114,112,110,108,106,105,103,101,100,98,97, + 189,184,179,174,170,165,161,157,154,150,147,144,141,138,135,132,130,127,125,123,120,118,116,114,112,110,109,107,105,104,102,101, + 197,191,186,181,176,172,168,164,160,156,153,149,146,143,140,138,135,132,130,128,125,123,121,119,117,115,113,111,110,108,106,105, + 205,199,194,189,184,179,175,171,167,163,159,156,153,150,147,144,141,138,136,133,131,129,126,124,122,120,118,116,115,113,111,110, + 214,208,203,197,192,188,183,179,175,171,167,163,160,157,154,151,148,145,142,140,137,135,133,130,128,126,124,122,120,119,117,115, + 225,219,213,208,202,197,193,188,184,180,176,172,168,165,162,159,156,153,150,147,145,142,140,137,135,133,131,129,127,125,123,121, + 238,231,225,219,214,208,204,199,194,190,186,182,178,175,171,168,165,162,159,156,153,151,148,146,143,141,139,137,135,133,131,129, + 252,246,239,233,227,222,217,212,207,202,198,194,190,186,183,179,176,173,169,167,164,161,158,156,153,151,148,146,144,142,140,138, + 270,263,256,250,244,238,232,227,222,217,213,208,204,200,196,193,189,186,182,179,176,173,171,168,165,163,160,158,156,153,151,149, + 292,284,277,270,264,258,252,246,241,236,231,226,222,218,214,210,206,202,199,195,192,189,186,183,180,178,175,173,170,168,165,163, + 320,312,304,297,290,283,277,271,265,260,254,249,245,240,236,232,228,224,220,216,213,210,206,203,200,197,195,192,189,187,184,182, + 357,348,339,332,324,317,310,304,298,292,286,281,276,271,266,262,257,253,249,245,242,238,235,231,228,225,222,219,216,213,211,208, + 408,399,390,381,373,366,358,352,345,339,333,327,321,316,311,306,301,297,293,288,284,281,277,273,270,266,263,260,257,254,251,248, + 489,478,469,460,451,443,435,428,421,414,408,402,396,391,385,380,375,371,366,362,358,354,350,346,343,339,336,333,330,327,324,321, + 635,625,616,607,599,591,584,578,571,566,560,555,550,546,542,538,535,531,528,526,523,521,519,517,515,514,513,512,511,510,510,510 + }; + + // Probit lookup values have been prescaled by 26029.6788 to maximize use of the BRAM. + + const ap_uint scaleLookup[] = { + 116675,115838,115007,114183,113364,112551,111744,110943,110148,109358,108574,107796,107023,106255,105494,104737, + 103986,103241,102501,101766,101036,100312,99592,98878,98169,97466,96767,96073,95384,94700,94021,93347, + 92678,92013,91354,90699,90048,89403,88762,88125,87494,86866,86243,85625,85011,84402,83797,83196, + 82599,82007,81419,80835,80256,79680,79109,78542,77979,77420,76865,76313,75766,75223,74684,74148, + 73617,73089,72565,72045,71528,71015,70506,70000,69499,69000,68506,68014,67527,67043,66562,66085, + 65611,65140,64673,64210,63749,63292,62839,62388,61941,61497,61056,60618,60183,59752,59323,58898, + 58476,58057,57640,57227,56817,56409,56005,55603,55205,54809,54416,54026,53638,53254,52872,52493, + 52117,51743,51372,51004,50638,50275,49914,49557,49201,48848,48498,48151,47805,47463,47122,46784, + 46449,46116,45785,45457,45131,44808,44486,44167,43851,43536,43224,42914,42607,42301,41998,41697, + 41398,41101,40806,40514,40223,39935,39648,39364,39082,38802,38524,38247,37973,37701,37431,37162, + 36896,36631,36369,36108,35849,35592,35337,35083,34832,34582,34334,34088,33844,33601,33360,33121, + 32883,32648,32414,32181,31950,31721,31494,31268,31044,30821,30600,30381,30163,29947,29732,29519, + 29307,29097,28889,28681,28476,28272,28069,27868,27668,27470,27273,27077,26883,26690,26499,26309, + 26120,25933,25747,25562,25379,25197,25016,24837,24659,24482,24307,24132,23959,23788,23617,23448, + 23280,23113,22947,22782,22619,22457,22296,22136,21977,21820,21663,21508,21354,21201,21049,20898, + 20748,20599,20452,20305,20159,20015,19871,19729,19587,19447,19308,19169,19032,18895,18760,18625 + }; + + const ap_int C_MAX_NOISE = ((ap_int)1 << (OutputWidth-1)) -1; + const ap_int C_MIN_NOISE = -C_MAX_NOISE; + const int C_ROUND_POINT = SCALED_NOISE_WIDTH-ROUNDED_NOISE_GUARD - OutputWidth; + + ap_uint scale; + ap_uint scaleAddr; + ap_uint bramChapter[NUM_NOISE_GENS]; + ap_uint bramPage[NUM_NOISE_GENS]; + ap_uint bramAddr[NUM_NOISE_GENS]; + ap_uint<1> signAddr[NUM_NOISE_GENS]; + ap_uint norm[NUM_NOISE_GENS][5]; + ap_uint coarse[NUM_NOISE_GENS]; + ap_uint gradient[NUM_NOISE_GENS]; + ap_int offset[NUM_NOISE_GENS]; + ap_int adjust[NUM_NOISE_GENS]; + ap_int shiftedCoarse[NUM_NOISE_GENS]; + ap_int noiseGen[NUM_NOISE_GENS]; + ap_int centralLimitNoise; + ap_int scaledNoise; + ap_int roundedNoise; + ap_int saturatedNoise; + ap_uint lfsrSplice[NUM_NOISE_GENS];//splices of lfsr128 + + // Default is to have multiple parallel noise generators, hence unroll this loop. + noise_gen_loop: for (int i = 0; i < NUM_NOISE_GENS; i++) { + lfsrSplice[i] = (lfsr128 >> (i*LFSR_SECTION_WIDTH)) & (((ap_uint)1 << LFSR_SECTION_WIDTH)-1); + signAddr[i] = (lfsrSplice[i]>>(LFSR_SECTION_WIDTH-1)) & 1; //sign is top bit of LFSR + //Normalizer + //LFSR_SECTION_WIDTH bits describe the region 0 to 1 as a uniform random variable. + //This uniform range is converted to Gaussian using the probit function. + //Since the probit function is steep close to 0 the use of the BRAM is concentrated + //to those values by companding. + //The 32 bit LFSR is split into the following fields + //sign (bit 31) + //Chapter (bits 29 downto 15) (15 bits). This is normalized to a 4 bit field. + //Page (bits 14 downto 10) + //Offset (bits 9 downto 0) + //The top splice bit determines the region 0 to 0.5 or 0.5 to 1 because + //Probit is negative-Symmetric about the point (0.5, 0) so the BRAM is used only + //for range 0 to 0.5 + //Chapter normalized in order to count the number of leading zeros. + //This determines the 'chapter' of RAM to use. Hence BRAM use is log2 companded. + //Each chapter is composed of 32 pages. These addresses within a chapter. + //The remaining bits are used to linearly interpolate between BRAM-read values. + //This linear interpolation comes from a coarse value lookup, based on chapter&page. + //and a gradient value also looked up using the chapter&page address. + //The coarse part has to be shifted up by the width of the offset field before adding the correction (linear interp) factor. + + //Get the 15 bit field for normalization and conversion to chapter field. + norm[i][0] = (lfsrSplice[i]>>(BRAM_PAGE_WIDTH+OFFSET_WIDTH)) & 0x7FFF; + //norm[i][0] is the field to be normalised. The number of bits it is shifted by gives + //the ram section, the bits after the leading 1 become the interpolation bits. + bramChapter[i] = 0; + normalizer_stage_loop: for (int normStage = 0; normStage < NORM_STAGES; normStage++ ) { + if ((norm[i][normStage] >> ((1<)1<<(NORM_STAGES - 1 - normStage)); + } else { + bramChapter[i] += (ap_uint)1 << (BRAM_ADDR_WIDTH - 1 - normStage); + norm[i][normStage+1] = norm[i][normStage]; + } + } + // Top NORM_STAGES bits of bram should now be set. + // Use next 6 bits of lfsr state + bramPage[i] = (ap_uint)((lfsrSplice[i] >> OFFSET_WIDTH) & 0x1f); + bramAddr[i] = bramChapter[i] + bramPage[i]; + offset[i] = (ap_int)(lfsrSplice[i] & ((1 << OFFSET_WIDTH)-1)); //offset takes the least significant bits of the LFSR. + coarse[i] = coarseContents[bramAddr[i]]; + gradient[i] = gradientContents[bramAddr[i]]; + + // The use of the sign bit is phrased to be sympathetic to DSP48 inference + adjust[i] = gradient[i] * offset[i]; + shiftedCoarse[i] = (ap_int)coarse[i] << OFFSET_WIDTH; + if (signAddr[i]==0) { + noiseGen[i] = shiftedCoarse[i] + adjust[i]; + } else { + noiseGen[i] = adjust[i] - shiftedCoarse[i]; + } + } + // Move the lfsr on one state. + tickLfsr(lfsr128); + + // TIP: Enable the pragma below, or apply a directive, to map addition to DSP Slices + //#pragma HLS RESOURCE variable=centralLimitNoise core=AddSub_DSP + centralLimitNoise = ((ap_int)noiseGen[0]+ + (ap_int)noiseGen[1]+ + (ap_int)noiseGen[2]+ + (ap_int)noiseGen[3]);//Adder tree variant + + scaleAddr = (int)(snr * 16); + scale = scaleLookup[scaleAddr]; + scaledNoise = centralLimitNoise * scale; + roundedNoise = (scaledNoise + ((ap_uint)1 << (C_ROUND_POINT-1))) >> C_ROUND_POINT; + if(roundedNoise > C_MAX_NOISE) { + saturatedNoise = C_MAX_NOISE; + } + else if (roundedNoise < C_MIN_NOISE) { + saturatedNoise = C_MIN_NOISE; + } + else { + saturatedNoise = roundedNoise; + } + outputData = saturatedNoise; + + } // operator() + + + private: + + // Struct to define the LFSR configuration + struct xor_triple { + int width; + int a; + int b; + int c; + }; + + // Shared constants + static const int SCALE_ADDR_WIDTH = 8; + static const int COMPAND_IN = 15; + static const int BRAM_CHAPTER_WIDTH = 4; + static const int BRAM_PAGE_WIDTH = 5; + static const int OFFSET_WIDTH = 10; + static const int LOG2NUMNOISEGENS = 2; // If changing, change the previous one too + static const int NORM_STAGES = 4; + static const int BRAM_ADDR_WIDTH = 9; + static const int BRAM_OUT_WIDTH = 17; + static const int SCALE_WIDTH = 17; + static const int MIN_OUTPUT_WIDTH = 8; + static const int MAX_OUTPUT_WIDTH = 32; + static const int LFSR_FORM = 1; + + // Derived constants + // Noise width is +2 to accommodate arithmetic bit growth + static const int NOISE_WIDTH = (BRAM_OUT_WIDTH + OFFSET_WIDTH + 2); + static const int CL_NOISE_WIDTH = (NOISE_WIDTH + LOG2NUMNOISEGENS ); + static const int SCALED_NOISE_WIDTH = (CL_NOISE_WIDTH + SCALE_WIDTH); + // The maximum noise is ~10 std devs, but the maximum output value is 2root2 std_devs. Hence, so as not to overflow, the rounded noise must accommodate values up to ~5x the maximum noise output. + static const int ROUNDED_NOISE_GUARD = 3; + + // State variables + ap_uint lfsr128; + + void check_params(ap_uint pSeed, int pOutputWidth) { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (pSeed == 0) { + std::cout << "ERROR: " << __FILE__ << ": Seed to LFSR must not be zero" << std::endl; + exit(1); + } + if (pOutputWidth < MIN_OUTPUT_WIDTH || pOutputWidth > MAX_OUTPUT_WIDTH) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be in range " << MIN_OUTPUT_WIDTH << " to " << MAX_OUTPUT_WIDTH << std::endl; + exit(1); + } + #endif + } // check_params + + + // xorShift moves the LFSR on by one state. The LFSR equation depends on y and form. + void xorShift(ap_uint<(LFSR_WIDTH >> 1) > &lfsrVal, + const struct xor_triple &y, + int form) { + switch (form) { + case 0: + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + break; + case 1: + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + break; + case 2: + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + break; + case 3: + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + break; + case 4: + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + break; + case 5: + lfsrVal = ((lfsrVal << y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.b) ^ lfsrVal); + break; + case 6: + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + break; + case 7: + lfsrVal = ((lfsrVal >> y.c) ^ lfsrVal); + lfsrVal = ((lfsrVal >> y.a) ^ lfsrVal); + lfsrVal = ((lfsrVal << y.b) ^ lfsrVal); + break; + default: + #ifndef __SYNTHESIS__ + std::cout << "ERROR: " << __FILE__ << ": Illegal form passed to xorShift\n" << std::endl; + exit(1); + #endif + break; + } + } // xorShift + + void tickLfsr(ap_uint &lfsrState) { + + Function_awgn_tickLfsr:; + + //Ideally, a single LFSR would be used for this application, as that would yield + //the longest sequence. However, very long LFSRs give higher fan-in. Hence a compromise + //of using 2 64-bit LFSRs is used. 2^64 at 1GHz gives a repeat time of >500 years. + //See xorshift on Wikipedia. + const struct xor_triple myLfsrPoly1 = {64,1,35,34}; + const struct xor_triple myLfsrPoly2 = {64,7,13,58}; + + ap_uint<(LFSR_WIDTH >>1) > lfsr1,lfsr2; + + lfsr1 = lfsrState.range(LFSR_WIDTH-1,LFSR_WIDTH/2); + lfsr2 = lfsrState.range(LFSR_WIDTH/2-1,0); + + xorShift(lfsr1, myLfsrPoly1, LFSR_FORM); + xorShift(lfsr2, myLfsrPoly2, LFSR_FORM); + lfsrState = (lfsr1,lfsr2); + + } // tickLfsr + + }; //end class awgn + +} //end namespace hls + +#endif // HLS_AWGN_H + + + + + + diff --git a/vitis/v2021_2/hls/dsp/hls_convolution_encoder.h b/vitis/v2021_2/hls/dsp/hls_convolution_encoder.h new file mode 100755 index 00000000..778e52a0 --- /dev/null +++ b/vitis/v2021_2/hls/dsp/hls_convolution_encoder.h @@ -0,0 +1,365 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_CONVOLUTION_ENCODER_H +#define HLS_CONVOLUTION_ENCODER_H + +#include "hls/dsp/utils/hls_dsp_common_utils.h" +#include "ap_int.h" +#include + +namespace hls { + + // =================================================================================================================== + // CONVOLUTION_ENCODER: Class definition + // o Template parameters: + // - OutputWidth : Defines number of bits in the output bus; 1 bit when Punctured=true and DualOutput=false, 2 bits when DualOutput=true, else OutputRate bits + // - Punctured : When true, enables puncturing of data + // - DualOutput : When true, enables dual outputs with punctured data + // - InputRate : Defines numerator of code rate + // - OutputRate : Defines denominator of code rate + // - ConstraintLength : The constraint length, K, is the number of registers in the encoder, plus one + // - PunctureCode0 : When Punctured=true, puncture code for output 0. Length (in binary) must equal the puncture input rate. Total number of 1's in both PunctureCode parameters equals the output rate. + // - PunctureCode1 : When Punctured=true, puncture code for output 1. Length (in binary) must equal the puncture input rate. Total number of 1's in both PunctureCode parameters equals the output rate. + // - ConvolutionCode0 : Convolution code for rates 1/2 to 1/7 - + // - ConvolutionCode1 : Convolution code for rates 1/2 to 1/7 | + // - ConvolutionCode2 : Convolution code for rates 1/3 to 1/7 | + // - ConvolutionCode3 : Convolution code for rates 1/4 to 1/7 | Length (in binary) for all convolution codes (if used) must equal the constraint length value. + // - ConvolutionCode4 : Convolution code for rates 1/5 to 1/7 | + // - ConvolutionCode5 : Convolution code for rates 1/6 to 1/7 | + // - ConvolutionCode6 : Convolution code for rate 1/7 - +template< + int OutputWidth, + bool Punctured, + bool DualOutput, + int InputRate, + int OutputRate, + int ConstraintLength, + int PunctureCode0, + int PunctureCode1, + int ConvolutionCode0, + int ConvolutionCode1, + int ConvolutionCode2, + int ConvolutionCode3, + int ConvolutionCode4, + int ConvolutionCode5, + int ConvolutionCode6> + class convolution_encoder { + + public: + convolution_encoder() { + + // Set initial and reset values + constraint_register = 0; + puncture_count = 0; + output_valid = 0; + output_valid_count = 0; + + // Store convolution codes in an array which may be loop indexed + convolution_codes[0] = ConvolutionCode0; + convolution_codes[1] = ConvolutionCode1; + convolution_codes[2] = ConvolutionCode2; + convolution_codes[3] = ConvolutionCode3; + convolution_codes[4] = ConvolutionCode4; + convolution_codes[5] = ConvolutionCode5; + convolution_codes[6] = ConvolutionCode6; + + // Similarly for puncture codes, store in array + puncture_codes[0] = PunctureCode0; + puncture_codes[1] = PunctureCode1; + + // Verify that template parameters are correct in simulation + check_params(); + + } // end constructor + + ~convolution_encoder() { + } // end destructor + + // =================================================================================================================== + // CONVOLUTION_ENCODER: Entry point function. + // o Arguments: + // - inputData : Single-bit datastream to be encoded + // - outputData : Encoded datastream; OutputRate-bits wide unless Punctured=true (1-bit wide) or DualOutput=true (2-bits wide) + void operator()(stream< ap_uint<1> > &inputData, + stream< ap_uint > &outputData) { + + Function_convolution_encoder_operator:; + + encode(inputData, outputData); + + }; // operator() + + + private: + + // Shared constants + static const int MAX_CONVOLUTION_CODES = 7; + static const int MAX_PUNCTURE_CODES = 2; + + // Utility template functions + struct EncoderOutputWidth { + enum { width = (Punctured ? 2 : OutputWidth) }; + }; + + struct PunctureRegisterStages { + enum { stages = (DualOutput ? 2*InputRate : InputRate) }; + }; + + struct PunctureCountMax { + enum { max = (DualOutput ? (2*InputRate)-1 : OutputRate-1) }; + }; + + // State variables + ap_uint constraint_register; + ap_uint puncture_register[PunctureRegisterStages::stages]; // No reset required + ap_uint output_register[OutputRate]; // No reset required + ap_uint::bits> puncture_count; + ap_uint<1> output_valid; + ap_uint::bits> output_valid_count; + + // These arrays are considered constant, and are initialized in the constructor + ap_uint convolution_codes[MAX_CONVOLUTION_CODES]; + ap_uint puncture_codes[MAX_PUNCTURE_CODES]; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (ConstraintLength < 3 || ConstraintLength > 9) { + std::cout << "ERROR: " << __FILE__ << ": ConstraintLength must be 3 to 9" << std::endl; + exit(1); + } + if (Punctured) { + if (DualOutput && OutputWidth != 2) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be 2 for a punctured encoder with dual output" << std::endl; + exit(1); + } + if (!DualOutput && OutputWidth != 1) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be 1 for a punctured encoder without dual output" << std::endl; + exit(1); + } + if (InputRate < 2 || InputRate > 12) { + std::cout << "ERROR: " << __FILE__ << ": InputRate must be 2 to 12" << std::endl; + exit(1); + } + if (OutputRate < InputRate+1 || OutputRate > (2*InputRate)-1) { + std::cout << "ERROR: " << __FILE__ << ": OutputRate must be InputRate+1 to (2*InputRate)-1" << std::endl; + exit(1); + } + // Check the puncturing codes are valid + int bits_set = 0; + puncture_code_loop: for (int j=0; j 1) { + std::cout << "ERROR: " << __FILE__ << ": InputRate must be 1" << std::endl; + exit(1); + } + if (OutputRate < 2 || OutputRate > 7) { + std::cout << "ERROR: " << __FILE__ << ": OutputRate must be 2 to 7" << std::endl; + exit(1); + } + if (DualOutput) { + std::cout << "ERROR: " << __FILE__ << ": Dual Output is only supported when Puncturing is used" << std::endl; + exit(1); + } + } + #endif + }; // check_params + + // Core function. Performs convolutional encoding of a datastream, with optional puncturing + void encode(stream< ap_uint<1> > &inputData, + stream< ap_uint > &outputData) { + + Function_convolution_encoder_encode:; + + // Optimal resources and throughput are achieved when pipelined + // Estimated resources are slightly lower when the directive is placed here + #pragma HLS PIPELINE II=1 + + // Ensure state variables are reset + #pragma HLS RESET variable=constraint_register + #pragma HLS RESET variable=puncture_count + #pragma HLS RESET variable=output_valid + #pragma HLS RESET variable=output_valid_count + + // Flatten puncture register to achieve II=1 + #pragma HLS ARRAY_PARTITION variable=puncture_register complete + + ap_uint<1> encoder_in; + ap_uint encoded_data; + + if (!Punctured || DualOutput || puncture_count < InputRate) { + encoder_in = inputData.read(); + + // Perform encoding + encode_loop: for (int i=0; i< EncoderOutputWidth::width; i++) { + ap_uint tmpData = (constraint_register,encoder_in); // temporary variable allows use of .reverse() + encoded_data[i] = (tmpData.reverse() & (convolution_codes[i])).xor_reduce(); + } + + if (!Punctured) { + // Output data directly + outputData << encoded_data; + } else { + // Write into puncture register for puncturing operation + puncture_register_loop: for (int i=PunctureRegisterStages::stages-1; i>0; i--) { + puncture_register[i] = puncture_register[i-1]; + } + puncture_register[0] = encoded_data; + } + + // Shift contraint register for next cycle + constraint_register = (constraint_register,encoder_in); + } + + if (Punctured) { + + /* + In the punctured configuration, the basic convolution encoder is always a rate 1/2 encoder, with two bits output for + every one bit input. After the encoding, certain bits of the rate 1/2 encoded data are punctured (or deleted) and not + transmitted. Thus, for a rate 3/4 punctured encoder, for every three input bits, only four of the six encoded bits generated + by the encoder are actually transmitted. + + The single-output puncturing mode outputs more data than was input. The dual-output puncturing mode outputs less + data than was input. In both cases, some rate control is required, which is implemented with the output_valid signal. + */ + + if (!DualOutput) { + + if (puncture_count == InputRate) { + + // Do puncturing + int k=OutputRate-1; + single_punc_outer_loop: for (int i=InputRate-1; i>=0; i--) { + single_punc_inner_loop: for (int j=0; j0; i--) { + output_register[i][0] = output_register[i-1][0]; + } + output_register[0][0] = 0; + } + + if (output_valid == 1) { + outputData << output_register[OutputRate-1][0]; + } + + } else { // DualOutput + + if (puncture_count == PunctureCountMax::max) { + + // Do puncturing + int row = 0; + int col = OutputRate-1; + dual_width_loop: for (int i=OutputWidth-1; i>=0; i--) { + int offset = i*InputRate; + dual_punc_outer_loop: for (int j=InputRate-1; j>=0; j--) { + dual_punc_inner_loop: for (int k=0; k0; i--) { + output_register[i] = output_register[i-1]; + } + output_register[0] = 0; + + } + + } // DualOutput + + // Master counter to track puncturing status + if (puncture_count == PunctureCountMax::max) { + puncture_count = 0; + } else { + puncture_count++; + } + + // Output valid flag controls writes to output FIFO + if (output_valid_count == PunctureRegisterStages::stages-1) { + output_valid_count = PunctureRegisterStages::stages-1; + output_valid = 1; + } else { + output_valid_count++; + } + + } // Punctured + + } // encode + + }; // end class convolution_encoder + +} // end namespace hls + +#endif // HLS_CONVOLUTION_ENCODER_H + + + diff --git a/vitis/v2021_2/hls/dsp/hls_nco.h b/vitis/v2021_2/hls/dsp/hls_nco.h new file mode 100755 index 00000000..31cf4fb0 --- /dev/null +++ b/vitis/v2021_2/hls/dsp/hls_nco.h @@ -0,0 +1,738 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_NCO_H +#define HLS_NCO_H + +#include "ap_fixed.h" +#include "ap_int.h" +//#include +#include "hls_math.h" +#include +#include + +namespace hls { + +#if (defined(AccumWidth) || \ + defined(PhaseAngleWidth) || \ + defined(SuperSampleRate) || \ + defined(OutputWidth)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // NCO output data structure + // Note that this cannot be included within the NCO class as co-simulation will not succeed + template struct t_nco_output_data { + std::complex< ap_int > outputValue[SuperSampleRate]; + }; + + // Classes used to select implementation architectures for complex multiplier structures + struct NcoDualOutputCmpyFiveMult { + const static int Impl = 5; + }; + struct NcoDualOutputCmpyFourMult { + const static int Impl = 4; + }; + + struct NcoSingleOutputCmpyThreeMult { + const static int Impl = 3; + }; + struct NcoSingleOutputCmpyFourMult { + const static int Impl = 4; + }; + + // =================================================================================================================== + // NCO: Class definition + // o Template Parameters: + // - AccumWidth : The number of bits in the phase accumulator. This determines the precision of the frequencies which can be synthesized + // - PhaseAngleWidth : The number of bits from the phase accumulator which are used to access the lookup of sin and cos values. + // - SuperSampleRate : The number of output samples per clock cycle. Here, it means the number of output samples per call. + // - OutputWidth : The number of bits in the output samples. + // - DualOutputCmpyImpl : Select whether to implement dual-output complex multipliers with 5-multiplier (5 DSP48) or 4-multiplier (6 DSP48) architecture + // using classes NcoDualOutputCmpyFiveMult or NcoDualOutputCmpyFourMult + // - SingleOutputCmpyImpl : Select whether to implement single-output complex multipliers with 3-multiplier (3 DSP48) or 4-multiplier (4 DSP48) architecture + // using classes NcoSingleOutputCmpyThreeMult or NcoSingleOutputCmpyFourMult + // - SingleOutputNegCmpyImpl : Select whether to implement single-output negated complex multipliers with 3-multiplier (3 DSP48) or 4-multiplier (4 DSP48) architecture + // using classes NcoSingleOutputCmpyThreeMult or NcoSingleOutputCmpyFourMult + template< + int AccumWidth, + int PhaseAngleWidth, + int SuperSampleRate, + int OutputWidth, + class DualOutputCmpyImpl, + class SingleOutputCmpyImpl, + class SingleOutputNegCmpyImpl + > class nco { + + public: + + nco(const ap_uint InitPinc, + const ap_uint InitPoff) { + + #pragma HLS inline + #pragma HLS reset variable=startInterrupt + #pragma HLS reset variable=phaseAcc + #pragma HLS ARRAY_PARTITION variable=sinPhiPre complete + #pragma HLS ARRAY_PARTITION variable=cosPhiPre complete + + check_params(); + + create_lut(sinLut); + //move initial code to sub function + init(InitPinc,InitPoff); + }; // end constructor + + + ~nco(){ + }; // end destructor + + // =================================================================================================================== + // NCO: Overloaded entry point function for super sample rate NCO + // o Arguments + // - pinc : Phase Increment. This is the amount by which the phase accumulator will count per sample. In terms of degrees this is pinc/2^AccumWidth * 360 + // - poff : Phase Offset. The units of phase offset are the same as for phase increment. + // - outputData : Complex output data + void operator()(stream< ap_uint > &pinc, + stream< ap_uint > &poff, + stream< t_nco_output_data > &outputData) { + + Function_nco_operator:; + + t_nco_output_data outputSample; + + if (SuperSampleRate == 1) { + if (!pinc.empty()) { + pincSample = pinc.read(); + } + if (!poff.empty()) { + poffSample = poff.read(); + } + nco_singlesample(pincSample, poffSample, outputSample); + outputData << outputSample; + } else { + nco_ssr(pinc, poff, outputData); + } + } //end operator() + + private: + + // Template range limits + // These define the 'solution space' + static const int MIN_PHASE_WIDTH = 4; + static const int MAX_PHASE_WIDTH = 16; + static const int MIN_ACCUM_WIDTH = 4; + static const int MAX_ACCUM_WIDTH = 48; + static const int MIN_SUPER_SAMPLE_RATE = 1; + static const int MAX_SUPER_SAMPLE_RATE = 16; //arbitrary limit + static const int MAX_LOG_SUPER_SAMPLE_RATE = 4; + static const int MIN_OUTPUT_WIDTH = 4; + static const int MAX_OUTPUT_WIDTH = 32; + static const int DSP48_B_WIDTH = 18; + static const int DSP48_P_WIDTH = 48; + static const int MY_PI = 102944; //to fit a DSP48 B port (pi *2^15) + static const int MY_PI_SCALE = 15; //the power of 2 to which my_pi is magnified + static const int INTERRUPT_PERIOD = (SuperSampleRate >>1)+1; // 1 to primeChannel for lobes, 0 for proxy/ + static const int TAYLOR_SHIFT = MY_PI_SCALE-1+PhaseAngleWidth; + + // Variables holding state + ap_uint pincSample, poffSample; + //newPinc is register used to capture changed PINC value + //pincReg holds the previous value of PINC, which is still used during transition period (interrupt) to new PINC value + //poffReg holds POFF value - has no implications for interrupt + //bigTick is value primary DDS increments each sample (SuperSampleRate * PINC). + ap_uint newPinc, pincReg, poffReg, bigTick; + //bigTickTemp is intended to be the output of a DSP48 which calculates bigTick during changes of PINC. + ap_uint interruptTimer, lastTime; //countdown to new PINC being adopted. + ap_uint<1> startInterrupt; + ap_uint phaseAcc; //register holding state value of current phase. + ap_int sinLut[1<<(PhaseAngleWidth-2)]; //The sin/cos lookup array/RAM. No cast necessary on '1' because array size will never exceed 2^31! + //Phi is the angle between adjacent channels (i.e. PINC). It is not the difference in angle between samples from a channel. That will be SSR*PINC. + //Phi[0] is the value for the proxy cmpy, 1 thru SSR/2 are symmetrical pair lobes and phi[primeChannel] is the outlier, if there is one. + ap_int sinPhi[SuperSampleRate], cosPhi[SuperSampleRate]; //the phi values in use + ap_int sinPhiPre[SuperSampleRate], cosPhiPre[SuperSampleRate];//shadow phi values to be switch in to phi in an instant. + //sinDel and cosDel are delay lines which hold estimates of the future values of the primevector in case an interrupt should occur. These values are switched in to replace the prime vector during an interrupt. + ap_int sinDel[INTERRUPT_PERIOD+2], cosDel[INTERRUPT_PERIOD+2]; + + void init(const ap_uint InitPinc, + const ap_uint InitPoff) { + phaseAcc = 0; + pincReg = 0; + newPinc = InitPinc; + pincSample = InitPinc; + poffSample = InitPoff; + bigTick = 0; + poffReg = InitPoff; + startInterrupt = 1; //effectively kickstarting with an interrupt + } + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (AccumWidth < MIN_ACCUM_WIDTH || AccumWidth > MAX_ACCUM_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": AccumWidth is out of range " << MIN_PHASE_WIDTH << " to " << MAX_PHASE_WIDTH << std::endl; + exit(1); + } + if (PhaseAngleWidth < MIN_PHASE_WIDTH || PhaseAngleWidth > MAX_PHASE_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": PhaseAngleWidth is out of range " << MIN_PHASE_WIDTH << " to " << MAX_PHASE_WIDTH << std::endl; + exit(1); + } + if (SuperSampleRate < MIN_SUPER_SAMPLE_RATE || SuperSampleRate > MAX_SUPER_SAMPLE_RATE ) { + std::cout << "ERROR: " << __FILE__ << ": SuperSampleRate is out of range " << MIN_SUPER_SAMPLE_RATE << " to " << MAX_SUPER_SAMPLE_RATE << std::endl; + exit(1); + } + if (OutputWidth < MIN_OUTPUT_WIDTH || OutputWidth > MAX_OUTPUT_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth is out of range " << MIN_OUTPUT_WIDTH << " to " << MAX_OUTPUT_WIDTH << std::endl; + exit(1); + } + if (PhaseAngleWidth > OutputWidth) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be greater than or equal to PhaseAngleWidth" << std::endl; + exit(1); + } + if (PhaseAngleWidth > AccumWidth) { + std::cout << "ERROR: " << __FILE__ << ": AccumWidth must be greater than or equal to PhaseAngleWidth" << std::endl; + exit(1); + } + if (PhaseAngleWidth < 10 && AccumWidth > PhaseAngleWidth) { + std::cout << "ERROR: " << __FILE__ << ": A small PhaseAngleWidth combined with Taylor Correction (AccumWidth > PhaseAngleWidth) can lead to sin/cos overflow" << std::endl; + exit(1); + } + #endif + } //end check_params + + //Function to perform quarter wave based sin/cos lookup + void quarter_table(ap_uint &phaseAngle, + ap_int &sinVal, + ap_int &cosVal) { + Function_nco_quarter_table:; + const int ANGLE_MASK = (1<<(PhaseAngleWidth-2))-1; //no need for cast as PAW always < 32 + ap_uint<2> quadrant; + ap_uint sinAddr; + ap_uint cosAddr; + + quadrant = phaseAngle >> (PhaseAngleWidth-2); + if (quadrant == 0 || quadrant == 2) { + sinAddr = phaseAngle & ANGLE_MASK; + cosAddr = (phaseAngle & ANGLE_MASK)^ANGLE_MASK; + } else { + sinAddr = (phaseAngle & ANGLE_MASK)^ANGLE_MASK; + cosAddr = phaseAngle & ANGLE_MASK; + } + if (quadrant == 0 || quadrant == 1) { + sinVal = sinLut[sinAddr]; + } else { + sinVal = -sinLut[sinAddr]; + } + if (quadrant == 0 or quadrant == 3) { + cosVal = sinLut[cosAddr]; + } else { + cosVal = -sinLut[cosAddr]; + } + } //end of quarter_table + + + //function to multiply a complex vector by a second vector and the conjugate of the second, giving both complex results. + void dual_op_cmpy(ap_int &a, + ap_int &b, + ap_int &c, + ap_int &d, + ap_int &posresreal, + ap_int &posresimag, + ap_int &negresreal, + ap_int &negresimag) { + Function_nco_dual_op_cmpy:; + ap_int common_factor,fullPosReal, fullPosImag, fullNegReal, fullNegImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + #pragma HLS PIPELINE + if (DualOutputCmpyImpl::Impl == 5) { + common_factor = c*(a+b) + rounding_const; + fullPosReal = common_factor - b*(c+d);// ac + bc - bc - bd = ac - bd + fullPosImag = common_factor - a*(c-d);// ac + bc - ac + ad = bc + ad + fullNegReal = common_factor - b*(c-d);// ac + bc - bc + bd = ac + bd + fullNegImag = common_factor - a*(c+d);// ac + bc - ac - ad = bc - ad + posresreal = fullPosReal >> (OutputWidth-1); + posresimag = fullPosImag >> (OutputWidth-1); + negresreal = fullNegReal >> (OutputWidth-1); + negresimag = fullNegImag >> (OutputWidth-1); + } else { + // 4-multiplier, 6 DSP48 + ap_int fullPosReal, fullPosImag, fullNegReal, fullNegImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + fullPosReal =a*c - b*d + rounding_const; + fullPosImag =a*d + b*c + rounding_const; + fullNegReal =a*c + b*d + rounding_const; + fullNegImag =b*c - a*d + rounding_const; + posresreal = (fullPosReal ) >> (OutputWidth-1); + posresimag = (fullPosImag ) >> (OutputWidth-1); + negresreal = (fullNegReal ) >> (OutputWidth-1); + negresimag = (fullNegImag ) >> (OutputWidth-1); + } + } //end of dual_op_cmpy + + void single_op_cmpy(ap_int &a, + ap_int &b, + ap_int &c, + ap_int &d, + ap_int &resreal, + ap_int &resimag) { + Function_nco_single_op_cmpy:; + ap_int common_factor,fullReal, fullImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + + if (SingleOutputCmpyImpl::Impl == 3) { + common_factor = a*(c+d)+rounding_const; + fullReal = common_factor - d*(a+b);// ac+ad-ad-bd= ac-bd + fullImag = common_factor + c*(b-a); + } else { + // 4-multiplier + fullReal = a*c - b*d + rounding_const; + fullImag = a*d + b*c + rounding_const; + } + resreal = fullReal >> (OutputWidth-1); + resimag = fullImag >> (OutputWidth-1); + } //end of single_op_cmpy + + void single_op_neg_cmpy(ap_int &a, + ap_int &b, + ap_int &c, + ap_int &d, + ap_int &resreal, + ap_int &resimag) { + Function_nco_single_op_neg_cmpy:; + ap_int common_factor,fullReal, fullImag; + const ap_uint rounding_const = ((ap_uint)1<<(OutputWidth-2)); + + if (SingleOutputNegCmpyImpl::Impl == 3) { + common_factor = c*(a+b) + rounding_const; + fullReal = common_factor - b*(c-d); + fullImag = common_factor - a*(c+d); + } else { + // 4-multiplier + fullReal = a*c + b*d + rounding_const; + fullImag = b*c - a*d + rounding_const; + } + resreal = fullReal >> (OutputWidth-1); + resimag = fullImag >> (OutputWidth-1); + } //end of single_op_neg_cmpy + + void accum_phase(ap_uint &pinc, + ap_uint &poff, + ap_uint &phaseOutput) { + Function_nco_accum_phase:; + phaseAcc += pinc; + phaseOutput = phaseAcc + poff; + + } // end of accum_phase + + void sin_cos_lookup(ap_uint &phaseOutput, + ap_int &sinVal, + ap_int &cosVal) { + Function_nco_sin_cos_lookup:; + ap_uint phaseAngle = phaseOutput >> (AccumWidth-PhaseAngleWidth); + ap_int delta; + ap_int deltak; + ap_int offsetC, offsetS; + ap_uint mask; + ap_int coarseSinVal; + ap_int coarseCosVal; + ap_int precC, precS, shiftCoarseSin,shiftCoarseCos; + const int ERR_BUS_WIDTH = AccumWidth > PhaseAngleWidth ? AccumWidth - PhaseAngleWidth : 1; + + quarter_table(phaseAngle, coarseSinVal, coarseCosVal); + + if (AccumWidth > PhaseAngleWidth) {//use Taylor correction + if (ERR_BUS_WIDTH <= DSP48_B_WIDTH) { + //Fit delta with MS bits of truncated splice + + delta = ((phaseOutput) & (((ap_uint)1 << (ERR_BUS_WIDTH)) -1)); + delta = delta << (DSP48_B_WIDTH - (ERR_BUS_WIDTH)); + } else { + delta = (phaseOutput >> (ERR_BUS_WIDTH - DSP48_B_WIDTH)) & ((1<<(DSP48_B_WIDTH))-1); + } + delta = delta ^ (1 << (DSP48_B_WIDTH-1)); //invert top bit + shiftCoarseCos = ((ap_int)coarseCosVal << TAYLOR_SHIFT); + shiftCoarseSin = ((ap_int)coarseSinVal << TAYLOR_SHIFT); + deltak = ((ap_int)delta * (ap_int)MY_PI) >> (DSP48_B_WIDTH); + precC = shiftCoarseCos - deltak * coarseSinVal; //offsetC; + precS = shiftCoarseSin + deltak * coarseCosVal; //offsetS; + cosVal = precC >> TAYLOR_SHIFT; + sinVal = precS >> TAYLOR_SHIFT; + } else { + // i.e. if not (AccumWidth > PhaseAngleWidth) + cosVal = coarseCosVal; + sinVal = coarseSinVal; + } // end of if (AccumWidth > PhaseAngleWidth) + } // end of sin_cos_lookup + + void create_lobes(ap_int &a, + ap_int &b, + t_nco_output_data &outputSample) { + Function_nco_create_lobes:; + int lobe; //loop counter for side-lobes. + ap_int c, d; //real and imag for prime, phi and results from dual output cmpy + const int PRIME_CHANNEL = (SuperSampleRate >> 1); + ap_int sinSample[SuperSampleRate], cosSample[SuperSampleRate]; + + if (PRIME_CHANNEL > 1) { + nco_ssr_label1 : for (lobe = 1; lobe < PRIME_CHANNEL; lobe ++) { + c = cosPhi[lobe]; + d = sinPhi[lobe]; + dual_op_cmpy(a, b, //prime vector + c, d, //phi + cosSample[PRIME_CHANNEL+lobe], sinSample[PRIME_CHANNEL+lobe], //positively rotated result + cosSample[PRIME_CHANNEL-lobe], sinSample[PRIME_CHANNEL-lobe]); //negatively rotated result + //complex multiplication grows bit width by 2* +1, but the binary point is the thing to follow here. For +0.XXXX * -0.XXXX the result is -000.XXXXXXXX + } + } + if (SuperSampleRate % 2 == 0) { + //if even , there will be an outlier lobe + c = cosPhi[PRIME_CHANNEL]; + d = sinPhi[PRIME_CHANNEL]; + single_op_neg_cmpy(a, b, //prime vector + c, d, //phi + cosSample[0],sinSample[0]); //negatively rotated result + } else { + c = cosPhi[PRIME_CHANNEL]; + d = sinPhi[PRIME_CHANNEL]; + dual_op_cmpy(a, b, //prime vector + c, d, //phi + cosSample[PRIME_CHANNEL<<1], sinSample[PRIME_CHANNEL<<1], //positively rotated result + cosSample[0], sinSample[0]); //negatively rotated result + } + //Now bring the primary signal down a notch. + //Why? Well, it isn't a unit vector, and it's been used to multiply all the others, + //so it is a tad bigger than them and needs to be shaved. + c = (((ap_uint)1<<(OutputWidth-1))-2); + d = 0; + single_op_cmpy(a, b, //prime vector + c, d, //phi + cosSample[PRIME_CHANNEL],sinSample[PRIME_CHANNEL]); //negatively rotated result + nco_ssr_label2:for (int x = 0; x < SuperSampleRate; x++) { + outputSample.outputValue[x].real(cosSample[x]); + outputSample.outputValue[x].imag(sinSample[x]); + } + } // end of create_lobes + + //Function to choose whether the prime vector is to be taken from the sin/cos + //output or from the proxy. Includes the code for the proxy itself. + void get_prime(ap_int &sinPrime, + ap_int &cosPrime, + ap_int &sinTick, + ap_int &cosTick, + ap_uint &interruptTimer, + ap_int &a, + ap_int &b) { + Function_nco_get_prime:; + ap_int realResult, imagResult; + + delay_line_loop : for (int k = INTERRUPT_PERIOD+1; k > 0; k--) { + cosDel[k] = cosDel[k-1]; + sinDel[k] = sinDel[k-1]; + } + single_op_cmpy(cosPrime, sinPrime, //prime vector + cosTick, sinTick, //phi + cosDel[0],sinDel[0]); + + if (interruptTimer == 0) { // normal operation + a = cosPrime; + b = sinPrime; + } else { + a = cosDel[INTERRUPT_PERIOD]; + b = sinDel[INTERRUPT_PERIOD]; + } //end of if interruptTimer == 0 + } //end of get_prime + + //Function to create SIN values for table using a very small, very accurate starting angle, then + //rotating this by complex multiplication. This avoids any compiler/library/language-specific values from sin(). + void create_lut(ap_int *rom_table) { + Function_nco_create_lut:; + const int ci_sin_address_width = 17; // Starting angle size for sin-cos table construction + + const int p_addr_width = PhaseAngleWidth-2; //-2 because of quarter table required + const int p_scaling_width = OutputWidth-2; + enum {e_quarter, e_half, e_full, e_double}; + const int p_range = e_quarter; + const int p_phase_offset_req = 1; //require 0.5 address offset in ram? 1 = yes. + const int c_eff_bias = (AccumWidth > PhaseAngleWidth) ? 1:0;//get_eff_bias(configuration->resNoise_Shaping, configuration->resOutput_Width); + const int p_eff_bias = c_eff_bias; + + const double delta = 4.7936899621426287e-5; //2.0*MATH_PI*2.0**(-CI_SIN_ADDRESS_WIDTH); + double alpha = 1.1489731724373268e-9; //2.0*sin(delta/2.0)**2; + double beta = 4.7936899603068881e-5; //sin(delta); + double sinda_1 = 0.0, cosda_1 = 0.0, sinda = 0.0, cosda = 0.0, sinda_2 = 0.0, cosda_2 = 0.0, beta_2 = 0.0, alpha_2 = 0.0, sin_r = 0.0, sin_s_r = 0.0, sin_m_r; + double offset = 0; + double beta_1 = beta; + double alpha_1 = alpha; + const int b = 0; //b is the number of bits by which the RAM table exceeds one quadrant i.e. there are 2^B quadrants to fill. + int idx_off = 0, start = 0; + double sin_x = 0.0; + double x1 = 0.0, x2 = 0.0, x3 = 0.0; + + // generate sin(delta) and cos(delta) + sinda_1 = beta; + cosda_1 = 1.0-alpha; + + // Grow rotation in powers of 2. Stop when we have half of table increments. This is because the raw alpha, beta and delta above + // are for 2^17 addresses. For most cases we need fewer addresses, so larger alphas and betas are now calculated. + + alpha_beta_loop : for (int j = 1; j <=(ci_sin_address_width-p_addr_width-3+b); j++) { + sinda = sinda_1; + cosda = cosda_1; + + sinda_1 = sinda -alpha*sinda+beta*cosda; + cosda_1 = cosda -alpha*cosda-beta*sinda; + + // keep beta and alpha for D/2 + beta_1 = sinda_1; + alpha_1 = 2.0*sinda*sinda; + + beta = sinda_1; + alpha = 2.0*sinda*sinda; + } + + // Double angle to that we have an angle that takes + // us from one table entry to the next (table phase increment) + sinda_2 = sinda_1 -alpha_1*sinda_1+beta_1*cosda_1; + cosda_2 = cosda_1 -alpha_1*cosda_1-beta_1*sinda_1; + + beta_2 = sinda_2; + alpha_2 = 2.0*sinda_1*sinda_1; + + if (p_phase_offset_req) { + // Start with half angle (of 0.5 ULP of phase) + sinda = sinda_1; + cosda = cosda_1; + offset = 0.5; + idx_off = 1; + } else { + sinda = 0.0; + cosda = 1.0; + offset = 0.0; + idx_off = 0; + } + + // we need a couple of extra iterations to prime the loop for taylor + // For Taylor the raw values are modified such that when interpolation takes + //place the error is biased around zero rather than always positive as would occur with + //unmodified values. + if (p_eff_bias == 1) { + start = -1; + } else { + start = 0; + } + + p_add_width_loop : for (int i = start; i < (1<= 0) { + double sin_s_r = hls::floor(sin_r * (double)(1<<(OutputWidth-1))+0.5); + rom_table[i] = (ap_int)sin_s_r; + } + + // Rotate by table phase increment + sinda_1 = sinda-alpha_2*sinda+beta_2*cosda; + cosda = cosda-alpha_2*cosda-beta_2*sinda; + sinda = sinda_1; + + } else if (i < (1<<(p_addr_width+1-b))) { + // second quadrant, so just flip first quadrant + rom_table[i] = rom_table[((1<<(p_addr_width+1-b))) -i- idx_off]; + } else if (i < ((1<<(p_addr_width-b))*3)) { + // Third quadrant + // Is first but negated + rom_table[i] = -(rom_table[i-(1<<(p_addr_width+1-b))]); + } else if (i < ((1<<(p_addr_width+2-b)))) { + // Fourth quadrant. + // Is first but fipped and negated + rom_table[i] = -(rom_table[(1<<(p_addr_width+2-b))-i-idx_off]); + } + } + } + + // Simple sample variant + void nco_singlesample(ap_uint &pinc, + ap_uint &poff, + t_nco_output_data &outputSample) { + Function_nco_singlesample:; + ap_uint phaseOutput; + ap_int sinSample, cosSample; + + accum_phase(pinc, poff, phaseOutput); + sin_cos_lookup(phaseOutput, sinSample, cosSample); + outputSample.outputValue[0].real(cosSample); + outputSample.outputValue[0].imag(sinSample); + } //end of nco_singlesample() + + + //Super-sample rate variant. Streams are used because a write to PINC must be detected. + void nco_ssr(stream< ap_uint > &pinc, + stream< ap_uint > &poff, + stream< t_nco_output_data > &outputData) { + Function_nco_ssr:; + + const int hybridFactor1 = (SuperSampleRate - ((SuperSampleRate >> 1)+1)); + const int hybridFactor2 = ((SuperSampleRate >> 1)+1); + + const int primeChannel = (SuperSampleRate >> 1); + ap_uint lobeAngle, phaseOutput, sincosInput; + ap_int a, b; //real and imag for prime, phi and results from dual output cmpy + t_nco_output_data outputSample; + ap_int sinOp, cosOp; //the values output by the sin/cos LUT + ap_int sinNorm, cosNorm; //the values of a single channel. + + //A change to poff does not force a recalculation of the lobe angles, since they are + //derived from the primary output. + if (!poff.empty()) { + poffReg = poff.read(); + } + + lastTime = interruptTimer; + if (!pinc.empty() ) { + newPinc = pinc.read(); + startInterrupt = 1; + } + if (startInterrupt == 1) { + interruptTimer = INTERRUPT_PERIOD; + //Because PINC has changed, all the phi angles must be recalculated. They + //use the sin/cos table to do this, so the sin/cos table isn't available + //for normal output. + startInterrupt = 0; + } else if (interruptTimer != 0) { + interruptTimer--; + }//end of if PINC has changed. + + ap_uint x, y, z; + if (lastTime == 1) { //switch over to new values + //at the end of the interrupt period, PINC is set to a hybrid value of old and new + //PINC values to avoid a phase discontinuity. + bigTick = pincReg * hybridFactor1 + newPinc * hybridFactor2; + } else { + // Set up MADD values + x = pincReg; + y = SuperSampleRate ; + z = 0; + bigTick = x * y + z; + } + + //keep on ticking, regardless of what sin/cos is being used for. + //this keeps the phase accum in sync with the proxy to avoid discontinuities into + //or out of the interrupt period + accum_phase(bigTick, poffReg, phaseOutput); + + //Decide what the SIN/COS lookup table (sin_cos_lookup) is being used for. + if (interruptTimer == 0 ) { + sincosInput = phaseOutput; + } else if (interruptTimer == INTERRUPT_PERIOD) { + //First, read PINC * T * SuperSampleRate which is the phase rotation for the proxy cmpy + sincosInput = newPinc * SuperSampleRate * INTERRUPT_PERIOD; + } else { + sincosInput = interruptTimer * newPinc; + } + sin_cos_lookup(sincosInput, sinOp, cosOp); + sinNorm = sinOp; //always assign, but dont necessarily use. + cosNorm = cosOp; //always assign, but dont necessarily use. + + // Ensure these variables are implemented as registers, not memory, to achieve II=1 when + // the function is pipelined + // move ARRAY_PARTITION sinPhiPre and cosPhiPre to constructor + + if (interruptTimer == 0) { + pincReg = newPinc; + for (int i = 0; i < INTERRUPT_PERIOD; i++){ + sinPhi[i] = sinPhiPre[i]; + cosPhi[i] = cosPhiPre[i]; + } + } else { + if (interruptTimer == INTERRUPT_PERIOD) { + sinPhiPre[0] = sinOp; + cosPhiPre[0] = cosOp; + } else { + sinPhiPre[interruptTimer] = sinOp; + cosPhiPre[interruptTimer] = cosOp; + } + } + + //Decide whether to use the primary DDS output or the proxy cmpy + get_prime(sinNorm, cosNorm, //the primary DDS output + sinPhi[0],cosPhi[0], //the rotation step for the proxy + interruptTimer, + a, b); //the output vector to use. + + //create the multiple output vectors + create_lobes(a, b, outputSample); + outputData << outputSample; + + } // end of nco_ssr() - super-sample rate variant + + }; // end class nco + +} //end namespace hls + +#endif // HLS_NCO_H + + diff --git a/vitis/v2021_2/hls/dsp/hls_qam_demod.h b/vitis/v2021_2/hls/dsp/hls_qam_demod.h new file mode 100755 index 00000000..72a4c0a0 --- /dev/null +++ b/vitis/v2021_2/hls/dsp/hls_qam_demod.h @@ -0,0 +1,130 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_QAM_DEMOD_H +#define HLS_QAM_DEMOD_H + +#include "ap_int.h" +#include +#include +#include "hls/dsp/utils/hls_dsp_common_utils.h" + +namespace hls { +#if (defined(InputWidth) || \ + defined(Constellation)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // QAM DEMODULATOR: Class definition + // o Template parameters: + // - Constellation : Selects the QAM modulation scheme to be used (QPSK, QAM16, etc) + // - InputWidth : Number of bits in each scalar component of the complex t_in input. + // The qam_mod block performs I/Q to symbol mapping of a hard decision QAM decoder. + template< + class Constellation, + int InputWidth> + class qam_demod { + + public: + + typedef ap_int< InputWidth > t_incomponent; + typedef std::complex< t_incomponent > t_in; + + qam_demod() { + // Verify that template parameters are correct in simulation + check_params(); + }; // end constructor + + ~qam_demod() { + }; //end destructor + + //Utilities + //static function - owned by class not object since return value doesn't vary by object + static int get_symbol_width() { + return Constellation::SYMBOL_WIDTH; + } + + // =================================================================================================================== + // QAM DEMODULATOR: Entry point function + // o Arguments: + // - inputData : type t_in. This is a complex IQ input signal. + // - symbol : type t_symbol. This is an N-bit symbol determined as the closest match to the input IQ signal + void operator()(const t_in &inputData, + typename Constellation::t_symbol &symbol ) { + + Function_qam_demod_operator:; + + //take leading bits of input data + typename Constellation::t_hard_in hardIn; + + const int shift = InputWidth-Constellation::SYMBOL_WIDTH/2; + + hardIn.real(inputData.real() >> shift); + hardIn.imag(inputData.imag() >> shift); + + Constellation::hardDecode(hardIn, symbol); + + } // operator() + + private: + static const int MAX_INPUT_WIDTH = 16; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (InputWidth > MAX_INPUT_WIDTH ) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be " << MAX_INPUT_WIDTH << " or less" << std::endl; + exit(1); + } + if (InputWidth < Constellation::STAR_WIDTH && Constellation::QAMTYPE == 0) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be at least " << Constellation::STAR_WIDTH << " for QPSK" << std::endl; + exit(1); + } + if (InputWidth < Constellation::STAR_WIDTH && Constellation::QAMTYPE == 1) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be at least " << Constellation::STAR_WIDTH << " for QAM16" << std::endl; + exit(1); + } + if (InputWidth < Constellation::STAR_WIDTH && Constellation::QAMTYPE == 2) { + std::cout << "ERROR: " << __FILE__ << ": InputWidth must be at least " << Constellation::STAR_WIDTH << " for QAM64" << std::endl; + exit(1); + } + #endif + } //end of check_params + + }; // qam_demod + +} // end namespace hls + +#endif // HLS_QAM_DEMOD_H + + diff --git a/vitis/v2021_2/hls/dsp/hls_qam_mod.h b/vitis/v2021_2/hls/dsp/hls_qam_mod.h new file mode 100755 index 00000000..f75cb7ee --- /dev/null +++ b/vitis/v2021_2/hls/dsp/hls_qam_mod.h @@ -0,0 +1,114 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_QAM_MOD_H +#define HLS_QAM_MOD_H + +#include "ap_int.h" +#include +#include +#include "hls/dsp/utils/hls_dsp_common_utils.h" + +namespace hls { +#if (defined(OutputWidth) || \ + defined(Constellation)) +#error One or more of the template parameters used by this function is already defined and will cause a conflict +#endif + + // =================================================================================================================== + // QAM MODULATOR: Class definition + // o Template parameters: + // - Constellation : Selects the QAM modulation scheme to be used (QPSK, QAM16, etc) + // - OutputWidth : Number of bits in each scalar component of the complex t_iq output. + // The qam_mod block performs symbol to I/Q mapping as used in a QAM encoder. The output is zero extended up to the OutputWidth template parameter + template< + class Constellation, + int OutputWidth> + class qam_mod { + + public: + + typedef ap_int< OutputWidth > t_outcomponent; + typedef std::complex< t_outcomponent > t_iq; + + qam_mod() { + check_params(); + };//end of constructor + + ~qam_mod() { + }; //end of destructor + + //Utilities + //static function - owned by class not object since return value doesn't vary by object + static int get_symbol_width() { + return Constellation::SymbolWidth; + } + + // =================================================================================================================== + // QAM MODULATOR: Entry point function + // o Arguments: + // - symbol : type t_symbol. This is an N-bit symbol to be iq encoded. N is determined by the choice of QAM modulation scheme. + // - outputData : type t_iq. This is a complex IQ output signal. + void operator()(const typename Constellation::t_symbol &symbol, + t_iq &outputData) { + + Function_qam_mod_operator:; + + typename Constellation::t_star iq; + + Constellation::hardEncode(symbol,iq); + outputData.real((t_outcomponent)iq.real() << (OutputWidth-Constellation::STAR_WIDTH)); + outputData.imag((t_outcomponent)iq.imag() << (OutputWidth-Constellation::STAR_WIDTH)); + } // operator() + + private: + static const int MAX_OUTPUT_WIDTH = 16; + + Constellation asterism; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + if (OutputWidth < Constellation::STAR_WIDTH || OutputWidth > MAX_OUTPUT_WIDTH) { + std::cout << "ERROR: " << __FILE__ << ": OutputWidth must be between " << Constellation::STAR_WIDTH << " and " << MAX_OUTPUT_WIDTH << std::endl; + exit(1); + } + #endif + } //end of check_params + + }; // qam_mod + +} //end namespace hls + +#endif // HLS_QAM_MOD_H + + diff --git a/vitis/v2021_2/hls/dsp/hls_viterbi_decoder.h b/vitis/v2021_2/hls/dsp/hls_viterbi_decoder.h new file mode 100755 index 00000000..7a5ddbe8 --- /dev/null +++ b/vitis/v2021_2/hls/dsp/hls_viterbi_decoder.h @@ -0,0 +1,755 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_VITERBI_DECODER_H +#define HLS_VITERBI_DECODER_H + +#include "hls/dsp/utils/hls_dsp_common_utils.h" +#include "ap_int.h" +#include + +namespace hls { + + // =================================================================================================================== + // Viterbi Decoder input data structure + // + // Base template + template struct viterbi_decoder_input { + ap_uint data; + }; + + // Specialization for soft data with erasures + template struct viterbi_decoder_input { + ap_uint data; + ap_uint erase; + }; + + // Specialization for soft data with no erasures, or hard data + template struct viterbi_decoder_input { + ap_uint data; + }; + + + // =================================================================================================================== + // VITERBI_DECODER: Class definition + // o Template parameters: + // - ConstraintLength : The constraint length, K. Supported range is 3 to 9. + // - TracebackLength : Number of states to trace back through the trellis during decoding. Use at least 6x ConstraintLength, or at least 12x ConstraintLength for punctured codes + // - HasEraseInput : When true, an Erase input is present on the core to flag erasures (null symbols) in a punctured code + // - SoftData : When true, the function accepts soft (multi-bit) input data + // - InputDataWidth : Specifies width of the input data; set to 1 for hard data, 3-5 for soft data + // - SoftDataFormat : Specifies soft data formatting; 0 -> Signed Magnitude, 1 -> Offset Binary + // - OutputRate : Specifies output rate of the matching convolution encoder. Determines number of inputs buses for decoder. + // - ConvolutionCode0 : Convolution code for rates 1/2 to 1/7 - + // - ConvolutionCode1 : Convolution code for rates 1/2 to 1/7 | + // - ConvolutionCode2 : Convolution code for rates 1/3 to 1/7 | + // - ConvolutionCode3 : Convolution code for rates 1/4 to 1/7 | Length (in binary) for all convolution codes (if used) must equal the constraint length value. + // - ConvolutionCode4 : Convolution code for rates 1/5 to 1/7 | + // - ConvolutionCode5 : Convolution code for rates 1/6 to 1/7 | + // - ConvolutionCode6 : Convolution code for rate 1/7 - + template< + int ConstraintLength, + int TracebackLength, + bool HasEraseInput, + bool SoftData, + int InputDataWidth, + int SoftDataFormat, + int OutputRate, + int ConvolutionCode0, + int ConvolutionCode1, + int ConvolutionCode2, + int ConvolutionCode3, + int ConvolutionCode4, + int ConvolutionCode5, + int ConvolutionCode6> + class viterbi_decoder { + + public: + + viterbi_decoder() { + + // Verify that template parameters are correct in simulation + check_params(); + + // Define ACS connectivity + costs_index_outer_loop : for (int state=0; state > &inputData, + stream< ap_uint<1> > &outputData) { + + Function_viterbi_decoder_operator:; + + decode(inputData, outputData); + + }; // operator() + + private: + + // Calculation of internal widths and parameters which are instance-specific + struct bmu_output_width { + enum { width = (SoftData == 1 ? bitstorepresent< ((1 << (InputDataWidth))-1) * OutputRate >::bits : 3) }; + }; + + struct acs_width { + enum { width = InputDataWidth + OutputRate + 3 - 2 + (ConstraintLength >= 8 ? 1 : 0) }; + }; + + struct block_depth_x3 { + enum { depth = 3 * TracebackLength }; + }; + + struct state_bits { + enum { bits = ConstraintLength-1 }; + }; + + struct number_of_states { + enum { states = 1 << state_bits::bits }; + }; + + struct GetBmuCostsMemEntries { + enum { entries = 1 << OutputRate }; + }; + + // Constants for SoftDataFormat + static const int OFFSET_BINARY = 1; + static const int SIGNED_MAGNITUDE = 0; + + static const int BRANCHES = 2; + static const int TOTAL_BLOCKS = 6; // Six addressing blocks are used + + // Thresholds for address generators + static const int WRITE_BLOCK_COUNT_THRESH = 2; + static const int TRACEBACK_BLOCK_COUNT_THRESH = 4; + + // Latency (input samples required) before an output is available + static const int DATA_VALID_LATENCY = (4*TracebackLength)+ConstraintLength-1; + + // These (effectively constant) variables store the indices for connecting the ACS units, and are initialized in the constructor + // The do not generate any logic - they are simply lookups which degenerate to wiring when the ACS units are connected. + int bmu_costs_index[number_of_states::states][BRANCHES]; + int input_costs_index[number_of_states::states][BRANCHES]; + + // State variables + ap_uint< acs_width::width > path_metrics[number_of_states::states]; + ap_uint traceback_memory[1 << bitstorepresent< block_depth_x3::depth >::bits]; + ap_uint lifo_memory[1 << bitstorepresent< block_depth_x3::depth >::bits]; + ap_uint< bitstorepresent::bits > base_count; + ap_uint< bitstorepresent< block_depth_x3::depth >::bits > write_and_output_addr, traceback_addr, reg_write_and_output_addr; + ap_uint< bitstorepresent::bits > block_count; + ap_uint<1> output_valid, decode_bit, traceback_bit, norm_sr[2], norm_reg; + ap_uint traceback_state, decode_state; + ap_uint< bitstorepresent< (4*TracebackLength)+ConstraintLength-1 >::bits > output_valid_count; + ap_uint< number_of_states::states +1 > reg_decode_write, reg_traceback_write; + + void check_params() { + // Verify that template parameters are correct in simulation + #ifndef __SYNTHESIS__ + + if (ConstraintLength < 3 || ConstraintLength > 9) { + std::cout << "ERROR: " << __FILE__ << ": ConstraintLength must be 3 to 9" << std::endl; + exit(1); + } + if (TracebackLength < 12) { + std::cout << "ERROR: " << __FILE__ << ": TracebackLength must be at least 12" << std::endl; + exit(1); + } + if (HasEraseInput && (SoftData == 0)) { + std::cout << "ERROR: " << __FILE__ << ": Puncturing/Erasure can only be used with soft data" << std::endl; + exit(1); + } + if (OutputRate < 2 || OutputRate > 7) { + std::cout << "ERROR: " << __FILE__ << ": OutputRate must be 3 to 7" << std::endl; + exit(1); + } + if (SoftData > 0) { + if (InputDataWidth < 3 || InputDataWidth > 5) { + std::cout << "ERROR: " << __FILE__ << ": InputDataWidth must be 3 to 5" << std::endl; + exit(1); + } + } + switch (OutputRate) { + case 2: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 3: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 4: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 5: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0 || + ConvolutionCode4 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 6: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0 || + ConvolutionCode4 == 0 || + ConvolutionCode5 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + case 7: + if (ConvolutionCode0 == 0 || + ConvolutionCode1 == 0 || + ConvolutionCode2 == 0 || + ConvolutionCode3 == 0 || + ConvolutionCode4 == 0 || + ConvolutionCode5 == 0 || + ConvolutionCode6 == 0) { + std::cout << "ERROR: " << __FILE__ << ": a required ConvolutionCode value is zero" << std::endl; + exit(1); + } + break; + default: + std::cout << "ERROR: " << __FILE__ << ": OutputRate is out of range" << std::endl; + exit(1); + } + + #endif + }; //end of function check_params + + + // Overloaded templated functions to hide .erase struct member when erasures are not implemented + template ap_uint<1> get_erase_bit(int i, viterbi_decoder_input d) { + Function_viterbi_decoder_erase_bit_has_erase:; + ap_uint<1> e = d.erase[i]; + return e; + } + + template ap_uint<1> get_erase_bit(int i, viterbi_decoder_input d) { + Function_viterbi_decoder_get_erase_bit_no_erase:; + return 0; + } + + // =================================================================================================================== + // Utility functions + + // Count the number of 1's to determine the Hamming distance + template ap_uint count_ones(ap_uint vec) { + Function_viterbi_decoder_count_ones:; + ap_uint sum = 0; + count_ones_loop : for (int i=0; i constraint_reg = 0; + ap_uint<1> output_bit = 0; + int res = 0; + int const_reg = 0; + + // Build array of codes which we can loop over + // Maximally-size this; we'll use just the codes required, and use the LSBs of each + // The user can specify the codes in the radix they require, and store them in the int template parameters + const int MAX_CODES = 7; + ap_uint codes[MAX_CODES] = {ConvolutionCode0,ConvolutionCode1,ConvolutionCode2,ConvolutionCode3,ConvolutionCode4,ConvolutionCode5,ConvolutionCode6}; + + code_reverse_loop : for (int i=0; i > &inputData, + stream< ap_uint<1> > &outputData) { + + Function_viterbi_decoder_decode:; + + // Internal variables not holding state + viterbi_decoder_input decoder_in; + ap_uint din[OutputRate], din_formatted[OutputRate]; + ap_uint erase; + ap_uint< bmu_output_width::width > bmu_costs[GetBmuCostsMemEntries::entries]; + ap_uint< acs_width::width > input_costs[number_of_states::states]; + ap_uint< number_of_states::states > path_from_acs, decode; + ap_uint< number_of_states::states +1 > traceback_write, decode_write, traceback_read, decode_read; + ap_uint< number_of_states::states > traceback; + ap_uint< bitstorepresent< block_depth_x3::depth >::bits > traceback_fbk, traceback_incr, write_fbk, write_incr, offset_wr, offset_traceback; + ap_uint< number_of_states::states > norm_check = 0; + ap_uint<1> lifo_out, output_valid_count_incr, base_count_tc; + ap_uint<1> norm = 0; + ap_uint<1> normalize = 0; + + // Force function pipelining to permit full-throughput streaming operation + #pragma HLS PIPELINE II=1 + + // Ensure state variables are reset to initial values set up in the constructor + #pragma HLS RESET variable=path_metrics + #pragma HLS RESET variable=base_count + #pragma HLS RESET variable=write_and_output_addr + #pragma HLS RESET variable=traceback_addr + #pragma HLS RESET variable=block_count + #pragma HLS RESET variable=decode_state + #pragma HLS RESET variable=traceback_state + #pragma HLS RESET variable=decode_bit + #pragma HLS RESET variable=traceback_bit + #pragma HLS RESET variable=output_valid_count + #pragma HLS RESET variable=output_valid + #pragma HLS RESET variable=norm_reg + #pragma HLS RESET variable=norm_sr + + // Ensure path_metrics array is implemented as 1 register per ACS + // which is relevant when reset is implemented + #pragma HLS ARRAY_PARTITION variable=path_metrics complete + + // Ensure normalization shift register is implemented as registers, rather than a RAM with reset + #pragma HLS ARRAY_PARTITION variable=norm_sr complete + + // Required to achieve II=1 when pipelined + #pragma HLS DEPENDENCE variable=traceback_memory inter false + #pragma HLS DEPENDENCE variable=lifo_memory inter false + + // TIP: Comment-in or set these directives from Tcl to force use of Block RAM for decoder memories + // Small constraint lengths will tend to use distributed memory, larger constraint lengths Block RAM + //#pragma HLS RESOURCE variable=traceback_memory core=RAM_2P_BRAM + //#pragma HLS RESOURCE variable=lifo_memory core=RAM_2P_BRAM + + // Flatten input arrays to achieve II=1 and ensure only a register is synthesized + #pragma HLS ARRAY_PARTITION variable=input_costs complete dim=0 + #pragma HLS ARRAY_PARTITION variable=bmu_costs complete dim=0 + + // Blocking read from FIFO interface + decoder_in = inputData.read(); + + // -------------------------------------------- + // Branch Metric Unit (BMU) + // Format input data and compute branch metrics + // -------------------------------------------- + if (SoftData) { + + // Soft data, decoded using Euclidean metric. Soft decision data offers improved BER + // performance over hard-coded data. + + const int ADDER_COUNT = GetBmuCostsMemEntries::entries; + + ap_uint inv_input[OutputRate]; + ap_uint clean_input[OutputRate]; + ap_uint add_input[ADDER_COUNT][OutputRate]; + ap_uint add_output[ADDER_COUNT][OutputRate]; + + // Ensures II=1 can be met for higher values of OutputRate by forcing a register + #pragma HLS ARRAY_PARTITION variable=add_input complete dim=0 + + soft_data_input_loop : for (int input=0; input do nothing, MSB == 0 => invert LSBs + signed_magnitude_loop : for (int bit=0; bit> bit) % 2; + if (condition != 0) { + add_input[add_type][bit] = inv_input[bit]; + } else { + add_input[add_type][bit] = clean_input[bit]; + } + } + } + + soft_data_add_loop : for (int add_type=0; add_type<(1<<2); add_type++) { + add_output[add_type][1] = add_input[add_type][0] + add_input[add_type][1]; + } + + if (OutputRate >= 3) { // build adder tree structure since more than two inputs + soft_data_bmu_add_outer_loop : for (int i=3; i<=OutputRate; i++) { + soft_data_bmu_add_inner_loop : for (int add_type=0; add_type<(1< hard_input; + hard_data_assign_loop : for (int input=0; input(hard_input ^ ap_uint(i)); + } + } + + + // Connect ACS units + acs_feedback_loop : for (int state=0; state< number_of_states::states; state++) { + input_costs[state] = path_metrics[state]; + norm_check[state] = path_metrics[state][acs_width::width-1]; + } + + // Determine if normalization of the branch metrics is necessary + // Normalization is necessary when the ACS metrics exceed a threshold, in order to avoid internal overflow + ap_uint< number_of_states::states + 1 > norm_check_concat = (~norm_reg,norm_check); // Fold single-cycle behavior into comparison + if (ConstraintLength > 8) { + // To meet HLS timing estimates at 4ns on a 7 Series -1 speedgrade device, it is necessary to distribute the comparator over a number of logic levels + const int TOTAL_BITS = (number_of_states::states + 1); + const int CHUNK1_BITS = TOTAL_BITS / 3; + const int CHUNK2_BITS = CHUNK1_BITS; + const int CHUNK3_BITS = TOTAL_BITS - (CHUNK1_BITS + CHUNK2_BITS); + ap_uint norm_chunk1 = norm_check_concat(CHUNK1_BITS-1,0); + ap_uint norm_chunk2 = norm_check_concat(CHUNK1_BITS+CHUNK2_BITS-1,CHUNK1_BITS); + ap_uint norm_chunk3 = norm_check_concat(TOTAL_BITS-1,CHUNK1_BITS+CHUNK2_BITS); + ap_uint and_chunks = norm_chunk1 & norm_chunk2; + norm = and_chunks.and_reduce() & norm_chunk3.and_reduce(); + } else { + norm = norm_check_concat.and_reduce(); + } + + norm_reg = norm; + norm_sr[1] = norm_sr[0]; // Delay of normalization pulse to align with expected data + norm_sr[0] = norm_reg; + normalize = norm_sr[1]; + + // -------------------------------------------- + // Add-compare-select (ACS) stage + // Optimized to map efficiently to carry chain logic + // -------------------------------------------- + acs_loop : for (int state=0; state< number_of_states::states; state++) { + const int ACS_WIDTH = acs_width::width; + ap_uint cost[BRANCHES]; + + // Add + acs_add_loop : for (int branch=0; branch bmu_in = 0; + bmu_in = bmu_costs[bmu_costs_index[state][branch]]; + bmu_in[ACS_WIDTH-1] = normalize; + cost[branch] = bmu_in + input_costs[input_costs_index[state][branch]]; + + if (~normalize[0] == 0) { + cost[branch][ACS_WIDTH] = 0; + } + } + + // Compare + ap_uint<1> comp_out_lut = (cost[0][ACS_WIDTH] ^ cost[1][ACS_WIDTH]); + comp_out_lut[0] = ~comp_out_lut[0]; + + ap_uint sub = (cost[0]) - (cost[1]); + ap_uint<1> comp_out = ~sub[ACS_WIDTH+1]; + path_from_acs[state] = comp_out; + + ap_uint<1> ovfl = cost[0][ACS_WIDTH] & cost[1][ACS_WIDTH]; + ap_uint<2> sw = (sub[ACS_WIDTH+1],ovfl); + + // Select + switch (sw) { + case 2: + path_metrics[state] = cost[0]; + break; + case 0: + path_metrics[state] = cost[1]; + break; + default: + path_metrics_saturate_loop : for (int bit=0; bit= WRITE_BLOCK_COUNT_THRESH){ + write_fbk = 0; + write_incr = offset_wr; + } else { + write_fbk = write_and_output_addr; + write_incr = (block_count <= WRITE_BLOCK_COUNT_THRESH ? 1 : ~(0)); + } + write_and_output_addr = write_fbk + write_incr; + + // Set up offset for traceback address generator based on current block + switch (block_count) { + case 0: + offset_traceback = TracebackLength-1; + break; + case 1: + offset_traceback = 2*TracebackLength-1; + break; + case 2: + offset_traceback = 3*TracebackLength-1; + break; + default: + offset_traceback = 0; + } + + // Note: This relies on initialization in the constructor to achieve correct initial offset + if (base_count_tc == 1 && block_count < TRACEBACK_BLOCK_COUNT_THRESH) { + traceback_fbk = 0; + traceback_incr = offset_traceback; + } else { + traceback_fbk = traceback_addr; + traceback_incr = (block_count == 0 || block_count >= TRACEBACK_BLOCK_COUNT_THRESH ? 1 : ~(0)); + } + traceback_addr = traceback_fbk + traceback_incr; + + // Traceback block counter + if (base_count_tc == 1) { + if (block_count == TOTAL_BLOCKS-1) { + block_count = 0; + } else { + block_count++; + } + } + + // Master counter + if (base_count == TracebackLength-1) { + base_count = 0; + } else { + base_count++; + } + + if (output_valid){ + outputData << lifo_out; + } + + }; + + }; // end class viterbi_decoder + +} // end namespace hls + +#endif // HLS_VITERBI_DECODER_H + + diff --git a/vitis/v2021_2/hls/dsp/utils/hls_dsp_common_utils.h b/vitis/v2021_2/hls/dsp/utils/hls_dsp_common_utils.h new file mode 100755 index 00000000..dfba7222 --- /dev/null +++ b/vitis/v2021_2/hls/dsp/utils/hls_dsp_common_utils.h @@ -0,0 +1,213 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_DSP_COMMON_UTILS_H +#define HLS_DSP_COMMON_UTILS_H + +#include +#include "ap_int.h" + +namespace hls { + + // =================================================================================================================== + // Common utility functions + + // Compute log2 rounded-up at compile time to determine the + // number of bits required to represent a value (typically the + // width of a data bus) + template struct bitstorepresent { + enum { bits = bitstorepresent<(a/2),p+1>::bits }; + }; + template struct bitstorepresent<0, p> { + enum { bits = p }; + }; + template struct bitstorepresent<1, p> { + enum { bits = p+1 }; + }; + + + // =================================================================================================================== + // QAM4: Class definition + // Describes a QAM4/QPSK constellation + class QAM4 { + public: + const static int QAMTYPE = 0; + const static int SYMBOL_WIDTH = 2; + const static int STAR_WIDTH = 2; + typedef ap_uint< SYMBOL_WIDTH > t_symbol; + typedef ap_int< STAR_WIDTH > t_stardim; + typedef std::complex< t_stardim > t_star; + typedef ap_int< SYMBOL_WIDTH/2+1 > t_iq_comp; + typedef std::complex< t_iq_comp > t_hard_in; + + static void hardEncode(const t_symbol &symbol, t_star &iq) { + //QPSK/QAM4 constellation looks like this: + // 10 | 00 + //-----+----- + // 11 | 01 + t_stardim re,im; + re = ((symbol >> 1) &1) <<1; + re += 1; //all stars are offset by 1. + im = ((symbol >> 0) &1) <<1; + im += 1; + + iq.real(re); + iq.imag(im); + } //end of hardEncode + + static void hardDecode(const t_hard_in &hardIn, t_symbol &symbol) { + //QPSK/QAM4 constellation looks like this: + // 10 | 00 + //-----+----- + // 11 | 01 + t_iq_comp re, im; + re = hardIn.real(); + im = hardIn.imag(); + symbol = ( (re >> 0 ) & 1 ) << 1; + symbol += ( (im >> 0 ) & 1 ); + } //end of hardDecode + }; + + // =================================================================================================================== + // QPSK: Class definition + // Describes a QPSK (QAM4) constellation + class QPSK : public QAM4 { + public: + }; + + // =================================================================================================================== + // QAM16: Class definition + // Describes a QAM16 constellation + class QAM16 { + public: + const static int QAMTYPE = 1; + const static int SYMBOL_WIDTH = 4; + const static int STAR_WIDTH = 3; + typedef ap_uint< SYMBOL_WIDTH > t_symbol; + typedef ap_int< STAR_WIDTH > t_stardim; + typedef std::complex< t_stardim > t_star; + typedef ap_int< SYMBOL_WIDTH/2+1 > t_iq_comp; + typedef std::complex< t_iq_comp > t_hard_in; + + static void hardEncode(const t_symbol &symbol, t_star &iq) { + //QAM16 Constellation looks like this + //1011 1001 +3 0001 0011 + // | + //1010 1000 +1 0000 0010 + // -3 -- -1 --+- +1 -- +3 -- + //1110 1100 -1 0100 0110 + // | + //1111 1101 -3 0101 0111 + t_stardim re,im; + re = ((symbol >> 3) &1 ) << 2; + re += ((symbol >> 1) &1 ) << 1; + re += 1; + im = ((symbol >> 2) &1 ) << 2; + im += ((symbol >> 0) &1 ) << 1; + im += 1; + + iq.real(re); + iq.imag(im); + } //end of hardEncode + + static void hardDecode(const t_hard_in &hardIn, t_symbol &symbol) { + //QAM16 Constellation looks like this + //1011 1001 +3 0001 0011 + // | + //1010 1000 +1 0000 0010 + // -3 -- -1 --+- +1 -- +3 -- + //1110 1100 -1 0100 0110 + // | + //1111 1101 -3 0101 0111 + t_iq_comp re, im; + re = hardIn.real(); + im = hardIn.imag(); + symbol = ( (re >> 1) & 1 ) << 3; + symbol += ( (im >> 1) & 1 ) << 2; + symbol += ( ((re >> 0) ^ (re >> 1)) & 1 ) << 1; + symbol += ( ((im >> 0) ^ (im >> 1)) & 1 ); + } //end of hardDecode + }; + + // =================================================================================================================== + // QAM64: Class definition + // Describes a QAM64 constellation + class QAM64 { + public: + const static int QAMTYPE = 2; + const static int SYMBOL_WIDTH = 6; + const static int STAR_WIDTH = 4; + typedef ap_uint< SYMBOL_WIDTH > t_symbol; + typedef ap_int< STAR_WIDTH > t_stardim; + typedef std::complex< t_stardim > t_star; + typedef ap_int< SYMBOL_WIDTH/2+1 > t_iq_comp; + typedef std::complex< t_iq_comp > t_hard_in; + + static void hardEncode(const t_symbol &symbol, t_star &iq) { + t_stardim re,im; + re = (( (symbol >> 5)) & 1) << 3; + re += (( (symbol >> 3) ^ (symbol >> 5)) & 1) << 2; + re += ((~(symbol >> 1) ^ (symbol >> 3) ^ (symbol >> 5)) & 1) << 1; + re += 1; + im = (( (symbol >> 4)) & 1) << 3; + im += (( (symbol >> 2) ^ (symbol >> 4)) & 1) << 2; + im += ((~(symbol >> 0) ^ (symbol >> 2) ^ (symbol >> 4)) & 1) << 1; + im += 1; + +#ifndef __SYNTHESIS__ + std::cout << "point " << symbol << ": x = " << re << " y = " << im << std::endl; +#endif + iq.real(re); + iq.imag(im); + } //end of hardEncode + + static void hardDecode(const t_hard_in &hardIn, t_symbol &symbol) { + t_iq_comp re, im; + re = hardIn.real(); + im = hardIn.imag(); + symbol = ( ( (re >> 2) ) & 1 ) << 5; + symbol += ( ( (im >> 2) ) & 1 ) << 4; + symbol += ( ( (re >> 1) ^ (re >> 2) ) & 1 ) << 3; + symbol += ( ( (im >> 1) ^ (im >> 2) ) & 1 ) << 2; + symbol += ( ( ~(re >> 0) ^ (re >> 1) ) & 1 ) << 1; + symbol += ( ( ~(im >> 0) ^ (im >> 1) ) & 1 ) << 0; +#ifndef __SYNTHESIS__ + std::cout << "re = " << re*2+1 << " im = " << im*2+1 << " symbol = " << symbol << std::endl; +#endif + } //end of hardDecode + }; + +} // end namespace hls + +#endif // HLS_DSP_COMMON_UTILS_H + + diff --git a/vitis/v2021_2/hls_alg.h b/vitis/v2021_2/hls_alg.h new file mode 100755 index 00000000..3ba4d5c2 --- /dev/null +++ b/vitis/v2021_2/hls_alg.h @@ -0,0 +1,59 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_alg.h + * @brief Top-level header for HLS Algorithm Library. + */ + +#ifndef _X_HLS_ALG_H_ +#define _X_HLS_ALG_H_ + +#ifndef WARN_DEPR_ALG +#define WARN_DEPR_ALG +#warning Algorithm Lib is deprecated in Vitis HLS, and will be removed in Release 2022.1. Please consider the Vitis Security/Database Library (https://github.com/Xilinx/Vitis_Libraries). +#endif + +// shared infrastructure +#include "hls_alg/types.h" +#include "hls_alg/utils.h" + +// function modules +#include "hls_alg/hash.h" +#include "hls_alg/sort.h" + +#endif // ifndef _X_HLS_ALG_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/hls_alg/bitonicsort.h b/vitis/v2021_2/hls_alg/bitonicsort.h new file mode 100755 index 00000000..170c802e --- /dev/null +++ b/vitis/v2021_2/hls_alg/bitonicsort.h @@ -0,0 +1,341 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file bitonicsort.h + * @brief bitonic sort template function implementation. + * + * This file is part of HLS Algorithm Library. + */ + +#ifndef _X_HLS_ALG_SORT_H_ +#error \ + "hls_alg/sort.h should not be inlcuded directly, use top-level hls_alg.h instead!" +#endif + +#ifndef _X_HLS_ALG_SORT_BITONIC_H_ +#define _X_HLS_ALG_SORT_BITONIC_H_ + +#ifndef WARN_DEPR_ALG +#define WARN_DEPR_ALG +#warning Algorithm Lib is deprecated in Vitis HLS, and will be removed in Release 2022.1. Please consider the Vitis Security/Database Library (https://github.com/Xilinx/Vitis_Libraries). +#endif + +#ifndef __cplusplus +#error "hls_alg::sort uses hls::stream<> interface, and thus requires C++" +#endif + +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls_alg_internal { + + template + inline void swap(T& in1, T& in2, T& out1, T& out2){ + + if(updown==0){ + if(in1 > in2){ + out1 = in2; + out2 = in1; + } + else{ + out1 = in1; + out2 = in2; + } + } + else{ + if(in1 < in2){ + out1 = in2; + out2 = in1; + } + else{ + out1 = in1; + out2 = in2; + } + }; + }; + + template + inline void swap(T& in1, T& in2, T& out1, T& out2){ + + if(in1 > in2){ + out1 = in2; + out2 = in1; + } + else{ + out1 = in1; + out2 = in2; + } + }; + + template + inline void swap(T& in1, T& in2){ + + if(updown==0){ + if(in1 > in2){ + T tmp = in1; + in1 = in2; + in2 = tmp; + }; + } + else{ + if(in1 < in2){ + T tmp = in1; + in1 = in2; + in2 = tmp; + }; + }; + }; + + + template + void BitonicSortStage(T in[N], T out[N]){ + +// #pragma HLS array_partition variable=in complete +// #pragma HLS array_partition variable=out complete + + for(int s=0;s<(N>>1);s++){ + const int S = 1 << (Stage+1); + const int M = S >> SubStage; + const int idxtmp1 = int(2*s/M) * M + s%(M/2); + const int idxtmp2 = idxtmp1 + (M/2); + const int updown = int((s%S)/(S>>1)); // up or down + const int idx1 = (updown==0) ? idxtmp1: idxtmp2; + const int idx2 = (updown==0) ? idxtmp2: idxtmp1; + + swap(in[idx1],in[idx2],out[idx1],out[idx2]); + }; + }; + + + template + void BitonicSortSlave(T in[NS], T out[NS]){ + + T tmp1[NS], tmp2[NS]; + +// #pragma HLS array_partition variable=tmp1 complete +// #pragma HLS array_partition variable=tmp2 complete +// #pragma HLS array_partition variable=in complete +// #pragma HLS array_partition variable=out complete + + for(int i=0;i=2){ + BitonicSortStage(tmp1,tmp2); + } + if(NS>=4){ + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + } + if(NS>=8){ + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + } + if(NS>=16){ + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + } + if(NS>=32){ + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + } + if(NS>=64){ + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + BitonicSortStage(tmp2,tmp1); + BitonicSortStage(tmp1,tmp2); + } + + if(NS==2 or NS==4 or NS==32 or NS==64){ + for(int i=0;i + void BitonicMergeSlave(T in1[N], T in2[N], + T out1[N], T out2[N]){ + + const int logN = 31 - __builtin_clz(N); + const int N2 = 2*N; + + T inout[N2]; + +// #pragma HLS array_partition variable=inout complete +// #pragma HLS array_partition variable=in1 complete +// #pragma HLS array_partition variable=in2 complete +// #pragma HLS array_partition variable=out1 complete +// #pragma HLS array_partition variable=out2 complete + + for(int i=0;i> i; + const int idx1 = int(2*s/M) * M + s%(M/2); + const int idx2 = idx1 + (M/2); + swap(inout[idx1],inout[idx2]); + }; + }; + + for(int i=0;i + void BitonicSortGlobal(T in[NG], T out[NG]){ + + const int NP = NG / NS; + const int logNP = 31 - __builtin_clz(NP); + + T tmp1[NG/NS][NS]; + T tmp2[NG/NS][NS]; + + // slave step + for(int i=0;i(in+i*NS,tmp1[i]); + }; + + // block merge step + for(int i=0;i> j; + const int idxtmp1 = int(2*s/M) * M + s%(M/2); + const int idxtmp2 = idxtmp1 + (M/2); + const int updown = int((s%S)/(S>>1)); // up or down + const int idx1 = (updown==0) ? idxtmp1: idxtmp2; + const int idx2 = (updown==0) ? idxtmp2: idxtmp1; + + BitonicMergeSlave(tmp1[idx1],tmp1[idx2], + tmp2[idx1],tmp2[idx2]); + }; + + for(int m=0;m + void BitonicSort(hls::stream& in_stm, hls::stream& out_stm){ + +#pragma HLS stream variable=in_stm depth=len +#pragma HLS stream variable=out_stm depth=len + +#ifdef __SYNTHESIS__ + T in[len]; + T out[len]; +#else + T* in = new T[len]; + T* out = new T[len]; +#endif + + +#ifndef __SYNTHESIS__ + if(len<=2){ + fprintf(stderr, "Error: size of array to sort should not be less than 2.\n"); + exit (EXIT_FAILURE); + } + else if((len & (len-1)) != 0){ + fprintf(stderr, "Error: size of array to sort should be power of 2.\n"); + exit (EXIT_FAILURE); + }; +#endif + + for(int i=0;i(in, out); + + for(int i=0;i interface, and thus requires C++" +#endif + +#if defined(__cplusplus) && (__cplusplus >= 201402L) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + [[deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")]] +#elif defined(__GNUC__) || defined(__clang__) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __attribute__((deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead."))) +#elif defined(_MSC_VER) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __declspec(deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")) +#else +#error("Unsupported compiler") +#endif + + +#include "hls_stream.h" + +// For debug +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) +#include +#define _DEBUG_PRINT(msg...) \ + do { \ + printf(msg); \ + } while (0) +#else +#define _DEBUG_PRINT(msg...) (static_cast(0)) +#endif + +// for wide output +#include + +#define ROTR(n, x) ((x >> n) | (x << (32 - n))) +#define ROTL(n, x) ((x << n) | (x >> (32 - n))) +#define SHR(n, x) (x >> n) +#define CH(x, y, z) ((x & y) ^ ((~x) & z)) +#define MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) +#define BSIG0(x) (ROTR(2, x) ^ ROTR(13, x) ^ ROTR(22, x)) +#define BSIG1(x) (ROTR(6, x) ^ ROTR(11, x) ^ ROTR(25, x)) +#define SSIG0(x) (ROTR(7, x) ^ ROTR(18, x) ^ SHR(3, x)) +#define SSIG1(x) (ROTR(17, x) ^ ROTR(19, x) ^ SHR(10, x)) + +// XXX HLS currently does not support cross-compilation, and assumes the target +// to have same endianness as build host. HLS is only available on X86 machines, +// and thus the code is always little-endian. +#if !defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \ + __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#error "HLS only supports little endian systems!" +#endif + +namespace hls_alg_internal { + +/// Processing block +struct SHA256Block { + uint32_t M[16]; +}; + +/// @brief Generate 512bit processing blocks for SHA224/SHA256. +/// @tparam msg_T the input stream type. +/// @param msg_strm the message being hashed. +/// @param blk_strm the output block. +/// @param len the message size in byte. +template +void sha256_generate(hls::stream& msg_strm, + hls::stream& blk_strm, uint64_t len) { + + /// message length in bit. + const uint64_t L = len * 8; + + // message stream width in bit. + const unsigned int iw = sizeof(msg_T) * 8; + HLS_ALG_STATIC_ASSERT((iw == 8), "Unsupportted stream width"); + + /// number of bytes not in blocks yet. + int64_t n; + +LOOP_SHA256_PAD_PHASE1_MAIN: + for (n = len; n > 64; n -= 64) { +#ifdef __SYNTHESIS__ +#pragma HLS LOOP_TRIPCOUNT min = 1 max = 1 +#endif + /// message block. + SHA256Block B; + + // this block will hold 64 byte of message. + if (iw == 8) { + LOOP_SHA256_PAD_PHASE1_IW8: + for (int i = 0; i < 16; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l; + l = 0xff000000UL & (((uint8_t)msg_strm.read()) << 24); + l |= 0x00ff0000UL & (((uint8_t)msg_strm.read()) << 16); + l |= 0x0000ff00UL & (((uint8_t)msg_strm.read()) << 8); + l |= 0x000000ffUL & (((uint8_t)msg_strm.read())); + B.M[i] = l; + _DEBUG_PRINT("DEBUG: M[%d] =\t%08x (32bx16)\n", i, B.M[i]); + } + } else { + // TODO + } + // send block + blk_strm.write(B); + _DEBUG_PRINT("DEBUG: block sent\n"); + } + + // new block to handle remaining message, pad 1 and L. + + /// message block. + SHA256Block B; + +LOOP_SHA256_PAD_CLEAR_1: + for (int i = 0; i < 16; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + B.M[i] = 0UL; + } + + // fill in message. + if (iw == 8) { + /// buffer for bytes to long. + uint32_t wbuf; + LOOP_SHA256_PAD_PHASE2_IW8: + for (int64_t i = 0; i < n; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS LOOP_TRIPCOUNT min = 1 max = 63 +#endif + short nb = i & 0x3; + uint8_t b = msg_strm.read(); + if (nb == 0) { + wbuf = ((uint32_t)b << 24); + } else if (nb == 1) { + wbuf |= ((uint32_t)b << 16); + } else if (nb == 2) { + wbuf |= ((uint32_t)b << 8); + } else { + wbuf |= ((uint32_t)b); + B.M[i >> 2] = wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (32b)\n", i >> 2, wbuf); + } + } + // pad 1 + if ((n & 0x3) == 0) { + if (n != 64) { + B.M[n >> 2] = 0x80000000UL; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } + } else if ((n & 0x3) == 1) { + B.M[n >> 2] = 0x00800000UL | wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } else if ((n & 0x3) == 2) { + B.M[n >> 2] = 0x00008000UL | wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } else { + B.M[n >> 2] = 0x00000080UL | wbuf; + _DEBUG_PRINT("DEBUG: M[%ld] =\t%08x (pad 1)\n", n >> 2, B.M[n >> 2]); + } + } else { + // TODO + } + + // test space left for length. + if (n >= 56) { + // can not fit in the length, send it. + blk_strm.write(B); + _DEBUG_PRINT("DEBUG: block sent\n"); + // create new + if (n == 64) { + B.M[0] = 0x80000000UL; + _DEBUG_PRINT("DEBUG: M[0] =\t%08x (pad 1)\n", B.M[0]); + } else { + B.M[0] = 0UL; + _DEBUG_PRINT("DEBUG: M[0] =\t%08x (zero)\n", B.M[0]); + } + LOOP_SHA256_PAD_CLEAR_2: + for (int i = 1; i < 14; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + B.M[i] = 0UL; + } + } + + // append length + // XXX due to big-endian assumption, write MSB at lower address. + B.M[14] = (uint32_t)(0xffffffffUL & (L >> 32)); + B.M[15] = (uint32_t)(0xffffffffUL & (L)); + _DEBUG_PRINT("DEBUG: M[%d] =\t%08x (L)\n", 14, B.M[14]); + _DEBUG_PRINT("DEBUG: M[%d] =\t%08x (L)\n", 15, B.M[15]); + + // send and done. + blk_strm.write(B); + _DEBUG_PRINT("DEBUG: block sent\n"); + +} // sha256_generate + +/// @brief Static config for SHA224 and SHA256. +template +struct sha256_digest_config; + +template <> +struct sha256_digest_config { + static const short numH = 7; +}; + +template <> +struct sha256_digest_config { + static const short numH = 8; +}; + +/// @brief Digest message blocks and emit final hash. +/// @tparam do_sha224 the flag to calculate SHA224 instead of SHA256 +/// @tparam hash_T the input hash stream content type. +/// @param blk_strm the message block. +/// @param len the message size in byte. +/// @param hash_strm the hash result stream. +template +inline void sha256_digest(hls::stream& blk_strm, + hls::stream& hash_strm, uint64_t len) { + /// constant K + static const uint32_t K[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL, + 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL, + 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, + 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL, + 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL, + 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, + 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL, + 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL, + 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, + 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL}; +#ifdef __SYNTHESIS__ +#pragma HLS array_partition variable = K complete +#endif // __SYNTHESIS__ + + /// total number blocks to digest. + uint64_t blk_num = (len >> 6) + 1 + ((len & 0x3f) > 55); + // _DEBUG_PRINT("expect %ld blocks.\n", blk_num); + + /// internal states + uint32_t H[8]; +#ifdef __SYNTHESIS__ +#pragma HLS array_partition variable = H complete +#endif // __SYNTHESIS__ + + // initialize + if (do_sha224) { + H[0] = 0xc1059ed8UL; + H[1] = 0x367cd507UL; + H[2] = 0x3070dd17UL; + H[3] = 0xf70e5939UL; + H[4] = 0xffc00b31UL; + H[5] = 0x68581511UL; + H[6] = 0x64f98fa7UL; + H[7] = 0xbefa4fa4UL; + } else { + H[0] = 0x6a09e667UL; + H[1] = 0xbb67ae85UL; + H[2] = 0x3c6ef372UL; + H[3] = 0xa54ff53aUL; + H[4] = 0x510e527fUL; + H[5] = 0x9b05688cUL; + H[6] = 0x1f83d9abUL; + H[7] = 0x5be0cd19UL; + } + +LOOP_SHA256_DIGEST_MAIN: + for (uint64_t n = 0; n < blk_num; ++n) { +#ifdef __SYNTHESIS__ +#pragma HLS LOOP_TRIPCOUNT min = 1 max = 1 +#endif + /// Input block. + SHA256Block blk = blk_strm.read(); + + _DEBUG_PRINT("DEBUG: block =\n"); + for (int i = 0; i < 16; ++i) { + _DEBUG_PRINT("\tM[%d] =\t%08x\n", i, blk.M[i]); + } + _DEBUG_PRINT("\n"); + + /// working variables. + uint32_t a, b, c, d, e, f, g, h; + + // loading working variables. + a = H[0]; + b = H[1]; + c = H[2]; + d = H[3]; + e = H[4]; + f = H[5]; + g = H[6]; + h = H[7]; + + /// message schedule W, from message or + uint32_t W[64]; +#ifdef __SYNTHESIS__ +#pragma HLS array_partition variable = W complete +#endif // __SYNTHESIS__ + + uint32_t Kt = K[0]; + uint32_t Wt = blk.M[0]; + W[0] = blk.M[0]; + LOOP_SHA256_UPDATE_64_ROUNDS: + for (short t = 0; t < 64; ++t) { +#ifdef __SYNTHESIS__ +#pragma HLS pipeline II = 1 +#endif // __SYNTHESIS__ + + /// temporal variables + uint32_t T1, T2; + T1 = h + BSIG1(e) + CH(e, f, g) + Kt + Wt; + T2 = BSIG0(a) + MAJ(a, b, c); + + // update working variables. + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + _DEBUG_PRINT( + "DEBUG: Kt=%08x, Wt=%08x\n" + "\ta=%08x, b=%08x, c=%08x, d=%08x\n" + "\te=%08x, f=%08x, g=%08x, h=%08x\n", + Kt, Wt, a, b, c, d, e, f, g, h); + + // for next cycle + Kt = K[(t + 1) & 63]; + if (t < 15) { + Wt = blk.M[(t + 1) & 63]; + W[t + 1] = Wt; + } else { + Wt = SSIG1(W[t - 1]) + W[t - 6] + SSIG0(W[t - 14]) + W[t - 15]; + W[(t + 1) & 63] = Wt; + } + } + + // store working variables to internal states. + H[0] = a + H[0]; + H[1] = b + H[1]; + H[2] = c + H[2]; + H[3] = d + H[3]; + H[4] = e + H[4]; + H[5] = f + H[5]; + H[6] = g + H[6]; + H[7] = h + H[7]; + } + + /// output hash stream width in bit. + const unsigned int ow = sizeof(hash_T) * 8; + HLS_ALG_STATIC_ASSERT( + (ow == 8) || (ow == 32) || (ow == 256) || (ow == 224 && do_sha224), + "Unsupportted stream width"); + + // Emit digest + if (ow == 8) { + LOOP_SHA256_EMIT_OW8: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX due to big-endian assumption, write MSB first. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + hash_strm.write(t0); + hash_strm.write(t1); + hash_strm.write(t2); + hash_strm.write(t3); + } + } else if (ow == 32) { + LOOP_SHA256_EMIT_OW32: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX shift big endian to little endian. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + uint32_t l_little = ((uint32_t)t0) | (((uint32_t)t1) << 8) | + (((uint32_t)t2) << 16) | (((uint32_t)t3) << 24); + hash_strm.write(l_little); + } + } else if (ow == 224) { + ap_uint<224> w224; + LOOP_SHA256_EMIT_OW224: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX shift algorithm's big endian to HLS's little endian. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + uint32_t l_little = ((uint32_t)t0) | (((uint32_t)t1) << 8) | + (((uint32_t)t2) << 16) | (((uint32_t)t3) << 24); + w224.range(32 * i + 31, 32 * i) = l_little; + } + hash_strm.write(w224); + } else if (ow == 256) { + ap_uint<256> w256; + LOOP_SHA256_EMIT_OW256: + for (short i = 0; i < sha256_digest_config::numH; ++i) { +#ifdef __SYNTHESIS__ +#pragma HLS unroll +#endif // __SYNTHESIS__ + uint32_t l = H[i]; + // XXX shift algorithm's big endian to HLS's little endian. + uint8_t t0 = (((l) >> 24) & 0xff); + uint8_t t1 = (((l) >> 16) & 0xff); + uint8_t t2 = (((l) >> 8) & 0xff); + uint8_t t3 = (((l)) & 0xff); + uint32_t l_little = ((uint32_t)t0) | (((uint32_t)t1) << 8) | + (((uint32_t)t2) << 16) | (((uint32_t)t3) << 24); + w256.range(32 * i + 31, 32 * i) = l_little; + } + hash_strm.write(w256); + } else { + // TODO + } +} // sha256_digest + +/// @brief SHA-256/224 implementation top. +/// @tparam do_sha224 the flag to calculate SHA224 instead of SHA256 +/// @tparam msg_T the input message stream content type. +/// @tparam hash_T the input hash stream content type. +/// @param msg_strm the message being hashed. +/// @param len the message size in byte. +/// @param hash_strm the result. +template +void sha256_top(hls::stream& msg_strm, uint64_t len, + hls::stream& hash_strm) { +#ifdef __SYNTHESIS__ +#pragma HLS DATAFLOW +#endif + /// 512-bit Block stream + hls::stream blk_strm; +#ifdef __SYNTHESIS__ +#pragma HLS STREAM variable = blk_strm depth = 4 +#endif // __SYNTHESIS__ + + // Generate block stream + sha256_generate(msg_strm, blk_strm, len); + + // Digest block stream, and write hash stream. + sha256_digest(blk_strm, hash_strm, len); +} // sha256_top + +} // namespace hls_alg_internal + +namespace hls_alg { +/// @brief SHA-256 algorithm. +/// @tparam msg_T the input message stream content type. +/// @tparam hash_T the input hash stream content type. +/// @param msg_strm the message being hashed. +/// @param len the message size in byte. +/// @param hash_strm the result. +template +HLS_DEPRECATED_FUNC(2022.1, xf::security::sha256 from Vitis Security) +void sha256(hls::stream& msg_strm, uint64_t len, + hls::stream& hash_strm) { + hls_alg_internal::sha256_top(msg_strm, len, hash_strm); +} + +/// @brief SHA-224 algorithm. +/// @tparam msg_T the input message stream content type. +/// @tparam hash_T the input hash stream content type. +/// @param msg_strm the message being hashed. +/// @param len the message size in byte. +/// @param hash_strm the result. +template +HLS_DEPRECATED_FUNC(2022.1, xf::security::sha224 from Vitis Security) +void sha224(hls::stream& msg_strm, uint64_t len, + hls::stream& hash_strm) { + hls_alg_internal::sha256_top(msg_strm, len, hash_strm); +} +} // namespace hls_alg + +// Clean up macros. +#undef ROTR +#undef ROTL +#undef SHR +#undef CH +#undef MAJ +#undef BSIG0 +#undef BSIG1 +#undef SSIG0 +#undef SSIG1 + +#undef _DEBUG_PRINT + +#endif // ifndef _X_HLS_ALG_HASH_SHA224_SHA256_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/hls_alg/sort.h b/vitis/v2021_2/hls_alg/sort.h new file mode 100755 index 00000000..39a00807 --- /dev/null +++ b/vitis/v2021_2/hls_alg/sort.h @@ -0,0 +1,76 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file sort.h + * @brief This file is part of HLS Algorithm Library, contains declarations of + * all supported sort funcitons. + */ + +#ifndef _X_HLS_ALG_H_ +#error "hls_alg/sort.h should not be inlcuded directly, use top-level hls_alg.h instead!" +#endif + +#ifndef _X_HLS_ALG_SORT_H_ +#define _X_HLS_ALG_SORT_H_ + +#if defined(__cplusplus) && (__cplusplus >= 201402L) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + [[deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")]] +#elif defined(__GNUC__) || defined(__clang__) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __attribute__((deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead."))) +#elif defined(_MSC_VER) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __declspec(deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")) +#else +#error("Unsupported compiler") +#endif + +#include "hls_alg/bitonicsort.h" + +namespace hls_alg { + + template + HLS_DEPRECATED_FUNC(2022.1, xf::database::bitonicSort from Vitis Database) + void sort(hls::stream& in_stm, hls::stream& out_stm){ + hls_alg_internal::BitonicSort(in_stm, out_stm); + }; + +} // end of namespace hls_alg + +#endif // ifndef _X_HLS_ALG_SORT_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/hls_alg/types.h b/vitis/v2021_2/hls_alg/types.h new file mode 100755 index 00000000..6c94d3fa --- /dev/null +++ b/vitis/v2021_2/hls_alg/types.h @@ -0,0 +1,86 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file types.h + * @brief This file is part of HLS Algorithm Library, contains type definitions. + */ + +#ifndef _X_HLS_ALG_TYPES_H_ +#define _X_HLS_ALG_TYPES_H_ + +#ifndef WARN_DEPR_ALG +#define WARN_DEPR_ALG +#warning Algorithm Lib is deprecated in Vitis HLS, and will be removed in Release 2022.1. Please consider the Vitis Security/Database Library (https://github.com/Xilinx/Vitis_Libraries). +#endif + +#if 0 +#include +#include +#endif + +// Fixed width integers +#if defined(__cplusplus) && __cplusplus >= 201103L +#include +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +#else +// Signed. +// avoid conflict with +#ifndef __int8_t_defined +# define __int8_t_defined +typedef signed char int8_t; +typedef short int int16_t; +typedef int int32_t; +#if defined(__LP64__) && __LP64__ +typedef long int int64_t; +#else +typedef long long int int64_t; +#endif // __LP64__ +#endif // __int8_t_defined +// Unsigned. +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +#if defined(__LP64__) && __LP64__ +typedef unsigned long int uint64_t; +#else +typedef unsigned long long int uint64_t; +#endif // __LP64__ +#endif + +#endif // ifndef _X_HLS_ALG_TYPES_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/hls_alg/utils.h b/vitis/v2021_2/hls_alg/utils.h new file mode 100755 index 00000000..a260148b --- /dev/null +++ b/vitis/v2021_2/hls_alg/utils.h @@ -0,0 +1,68 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file utils.h + * @brief This file is part of HLS Algorithm Library, contains utilities. + */ + +#ifndef _X_HLS_ALG_UTILS_H_ +#define _X_HLS_ALG_UTILS_H_ + +#ifndef WARN_DEPR_ALG +#define WARN_DEPR_ALG +#warning Algorithm Lib is deprecated in Vitis HLS, and will be removed in Release 2022.1. Please consider the Vitis Security/Database Library (https://github.com/Xilinx/Vitis_Libraries). +#endif + +#if __cplusplus >= 201103L +#define HLS_ALG_STATIC_ASSERT(b, m) static_assert((b), m) +#else +#define HLS_ALG_STATIC_ASSERT(b, m) ((void)0) +#endif + +#ifndef __SYNTHESIS__ +// for assert function. +#include +#define HLS_ALG_ASSERT(b) assert((b)) +#else +#define HLS_ALG_ASSERT(b) ((void)0) +#endif + +#endif // _X_HLS_ALG_UTILS_H_ + +#define HLS_ALG_MACRO_QUOTE(s) #s +#define HLS_ALG_MACRO_STR(s) HLS_ALG_MACRO_QUOTE(s) + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/hls_all_any_apfixed.h b/vitis/v2021_2/hls_all_any_apfixed.h new file mode 100755 index 00000000..cca75dda --- /dev/null +++ b/vitis/v2021_2/hls_all_any_apfixed.h @@ -0,0 +1,128 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_ALL_ANY_APFIXED_H_ +#define _X_HLS_ALL_ANY_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" + +///hls_all ap_fixed +template +bool generic_all(ap_fixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_all(ap_ufixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_all(ap_int x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_all(ap_uint x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_fixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_ufixed x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_int x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +bool generic_any(ap_uint x) +{ +#pragma HLS pipeline II=1 + for (int i=0; i +#include +#include +#include +#include "ap_int.h" + +namespace hls { + +struct MAXIAccessRecord { + unsigned read_disp; + unsigned write_disp; + std::list> ReadQ; + std::list> WriteQ; + std::list> WriteRespQ; +}; + +// A global map between pointer and MAXAccessRecord. +std::map MAXIPointer2AccessRecordMap __attribute__((weak)); + +template +class burst_maxi { +public: + burst_maxi(T *p) : Ptr(p) { + unsigned bitwidth = sizeof(T) * 8; + assert(bitwidth != 0 && !(bitwidth & (bitwidth - 1)) && + "Error: bit width of hls::burst_maxi is not poower-of-2."); + // Reset the MAXI access record to this pointer + MAXIAccessRecord &R = MAXIPointer2AccessRecordMap[p]; + R.read_disp = 0; + R.write_disp = 0; + R.ReadQ.clear(); + R.WriteQ.clear(); + R.WriteRespQ.clear(); + } + + void read_request(size_t offset, unsigned len) { + assert(len > 0); + MAXIAccessRecord &R = MAXIPointer2AccessRecordMap[Ptr]; + R.ReadQ.push_back(std::make_pair(offset, len)); + std::list> CurrentWriteQ = R.WriteQ; + CurrentWriteQ.insert(CurrentWriteQ.end(), + R.WriteRespQ.begin(), R.WriteRespQ.end()); + for (auto Pair : CurrentWriteQ) { + if (overlap(offset, len, Pair.first, Pair.second)) { + std::cerr << "Error: MAXI read request(offset = " << offset << ", len = " << len << ") overlaps with previous write request(offset = " << Pair.first << ", len = " << Pair.second << ")." << std::endl; + abort(); + } + } + } + + T read() { + MAXIAccessRecord &R = MAXIPointer2AccessRecordMap[Ptr]; + assert(!R.ReadQ.empty() && "Error: MAXI read without request."); + auto Pair = R.ReadQ.front(); + T V = Ptr[Pair.first + (R.read_disp++)]; + if (R.read_disp == Pair.second) { + R.read_disp = 0; + R.ReadQ.pop_front(); + } + return V; + } + + void write_request(size_t offset, unsigned len) { + assert(len > 0); + MAXIAccessRecord &R = MAXIPointer2AccessRecordMap[Ptr]; + for (auto Pair : R.ReadQ) { + if (overlap(offset, len, Pair.first, Pair.second)) { + std::cerr << "Error: MAXI write request(offset = " << offset << ", len = " << len << ") overlaps with previous read request(offset = " << Pair.first << ", len = " << Pair.second << ")." << std::endl; + abort(); + } + } + R.WriteQ.push_back(std::make_pair(offset, len)); + } + + void write(const T &val, ap_int byte_enable_mask = -1) { + MAXIAccessRecord &R = MAXIPointer2AccessRecordMap[Ptr]; + assert(!R.WriteQ.empty() && "Error: MAXI write without request."); + auto Pair = R.WriteQ.front(); + T *DstP = &Ptr[Pair.first + R.write_disp++]; + T Src = val; + for (unsigned i = 0; i < sizeof(T); i++) { + if (byte_enable_mask[i]) + reinterpret_cast(DstP)[i] = reinterpret_cast(&Src)[i]; + } + + if (R.write_disp == Pair.second) { + R.write_disp = 0; + R.WriteRespQ.push_back(Pair); + R.WriteQ.pop_front(); + } + } + + void write_response() { + MAXIAccessRecord &R = MAXIPointer2AccessRecordMap[Ptr]; + assert(!R.WriteRespQ.empty() && "Error: bad MAXI write response. Possible: 1) no corresponding write request; 2) some data still not written."); + R.WriteRespQ.pop_front(); + } + +private: + T *Ptr; + bool overlap(size_t a, unsigned a_len, size_t b, unsigned b_len) { + return a <= b ? a + a_len > b : b + b_len > a; + } +}; + + +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_STREAM_SIM_H + + diff --git a/vitis/v2021_2/hls_cbrt_apfixed.h b/vitis/v2021_2/hls_cbrt_apfixed.h new file mode 100755 index 00000000..e8ae5315 --- /dev/null +++ b/vitis/v2021_2/hls_cbrt_apfixed.h @@ -0,0 +1,167 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +/** + * @file hls_cbrt_apfixed.h" + * @brief Implemenation of cube root for ap_fixed data type. + */ +#ifndef _X_HLS_CBRT_FIXED_H_ +#define _X_HLS_CBRT_FIXED_H_ +#include "ap_fixed.h" +#include "hls_round_copysign_apfixed.h" +namespace cbrt_internal{ +template +ap_fixed cbrt_fixed(ap_fixed x) { +#ifndef __SYNTHESIS__ + #ifdef HLS_DEBUG + std::cout<<"W="< +bool isgreater_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} +template +bool isgreater_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} +template +bool isgreater_fixed(ap_int x1, ap_int x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} +template +bool isgreater_fixed(ap_uint x1, ap_uint x2){ + if(x1 > x2) { + return true; + } + else { + return false; + } +} + +//isgreaterequal(ap_fixed) +template +bool isgreaterequal_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} +template +bool isgreaterequal_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} +template +bool isgreaterequal_fixed(ap_int x1, ap_int x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} +template +bool isgreaterequal_fixed(ap_uint x1, ap_uint x2){ + if(x1 >= x2) { + return true; + } + else { + return false; + } +} + +//isless(ap_fixed) +template +bool isless_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} +template +bool isless_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} +template +bool isless_fixed(ap_int x1, ap_int x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} +template +bool isless_fixed(ap_uint x1, ap_uint x2){ + if(x1 < x2) { + return true; + } + else { + return false; + } +} + +//islessequal(ap_fixed) +template +bool islessequal_fixed(ap_fixed x1, ap_fixed x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} +template +bool islessequal_fixed(ap_ufixed x1, ap_ufixed x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} +template +bool islessequal_fixed(ap_int x1, ap_int x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} +template +bool islessequal_fixed(ap_uint x1, ap_uint x2){ + if(x1 <= x2) { + return true; + } + else { + return false; + } +} + +//islessgreater(ap_fixed) +template +bool islessgreater_fixed(ap_fixed x1, ap_fixed x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} +template +bool islessgreater_fixed(ap_ufixed x1, ap_ufixed x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} +template +bool islessgreater_fixed(ap_int x1, ap_int x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} +template +bool islessgreater_fixed(ap_uint x1, ap_uint x2){ + if((x1 < x2) || (x1 > x2)) { + return true; + } + else { + return false; + } +} + + + + +#endif + + diff --git a/vitis/v2021_2/hls_cordic_apfixed.h b/vitis/v2021_2/hls_cordic_apfixed.h new file mode 100755 index 00000000..f629e572 --- /dev/null +++ b/vitis/v2021_2/hls_cordic_apfixed.h @@ -0,0 +1,1630 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef _X_HLS_CORDIC_APFIXED_H_ +#define _X_HLS_CORDIC_APFIXED_H_ + +#if !defined(__SYNTHESIS__) && defined(_MSC_VER) +#include +#endif + +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_fpo.h" +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) +#include +#endif + +namespace cordic_apfixed { + + extern const ap_ufixed<128,2> circ_table_arctan_128[128]; + extern const int hyperb_table_tau_128[128]; + extern const ap_ufixed<128,4> hyperb_table_arctanh_128[128]; + + /* + * Range reduces input to between 0 and pi/2 by + * solving for k and r in x = k*(pi/2) + r + */ + template + void circ_range_redux( ap_ufixed x, + ap_uint<2> &k, + ap_ufixed &r) { + + ap_ufixed<(Wo+I),0> inv_pi2("0x0.A2F9836E4E43FC715BBF"); // 2/pi + ap_ufixed pi2("1.5707963267948966192313216916397514420985846996876"); // pi/2 + ap_ufixed prod = x * inv_pi2; + ap_uint kint = prod; + + k = kint; + r = x - kint * pi2; + }; + + /* + * Main CORDIC sub-function + * MODE 0: 'Rotation' : rotate by angle z. x' <- K*(x*cos(z) - y*sin(z)), y' <- K*(x*sin(z) + y*cos(z)) + * MODE 1: 'Vectoring': rotate y to zero. x' <- sqrt(x^2 + y^2) , z' <- atan(y/x) + */ + template + void cordic_circ_apfixed( ap_fixed &x, + ap_fixed &y, + ap_fixed &z) { + + const int Nmax = W; + + ap_fixed tx, ty, tz; + ap_fixed x_s, y_s, z_s; + ap_uint<1> d; + + for (int n=0; n> n; + y_s = y >> n; + z_s = circ_table_arctan_128[n]; + + if(d){ // y[n-1] is positive + tx = x + y_s; + ty = y - x_s; + tz = z + z_s; + } + else{ + tx = x - y_s; + ty = y + x_s; + tz = z - z_s; + } + + x = tx; + y = ty; + z = tz; + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << " x_s: " << x_s + << " y_s: " << y_s + << " z_s: " << z_s + << " x : " << x + << " y : " << y + << " z : " << z << std::endl; +#endif +#endif + } + }; + + + /* + * Main double-CORDIC sub-function + * MODE 0: asin + * MODE 1: acos + */ + template + void doublecordic_apfixed( ap_fixed &x, + ap_fixed &y, + ap_fixed &z, + ap_fixed &t) { + + const int Nmax = W - I + 1; + + for (int n=0; n d; + if(MODE == 0) { // asin + if(y<=t){ + d = x[W-1]; + } + else{ + d = ~x[W-1]; + } + } + else { // acos + if(x>=t){ + d = y[W-1]; + } + else{ + d = ~y[W-1]; + } + } + + ap_fixed x_s = x >> (n-1); + ap_fixed y_s = y >> (n-1); + ap_fixed x_s2 = x_s >> (n+1); + ap_fixed y_s2 = y_s >> (n+1); + + x = x - x_s2; + y = y - y_s2; + if(d){ // d==1, negtive + x = x + y_s; + y = y - x_s; + } + else{ // d==0, positive + x = x - y_s; + y = y + x_s; + } + + // t + ap_fixed t_s; + int n2 = (n << 1); // 2*n + if(n2> n2); + t = t + t_s; + } + + // z + ap_fixed ca = circ_table_arctan_128[n]; + ap_fixed z_s = (ca << 1); + ap_fixed tz; + if(d){ // d==1, negtive + tz = z - z_s; + } + else{ // d==0, positive + tz = z + z_s; + } + z = tz; + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << " x : " << x + << " y : " << y + << " z : " << z + << " t : " << t + << std::endl; +#endif +#endif + } + }; + + + // sin cos + template + void generic_sincos(ap_fixed in, + ap_fixed & outsin, ap_fixed & outcos){ + + ap_uint<1> sign0 = (in > 0) ? 1: 0; + + // abs(in) + ap_ufixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + // inabs = k * (pi/2) + r + const int Fr = (W - I) + I + 1; + ap_uint<2> k; + ap_ufixed r; + circ_range_redux(inabs, k, r); + + ap_fixed x, y, z; + + const ap_fixed K1("0x0.9B74EDA8435E47F277F7"); + x = K1; + y = 0; + + if(k==1 or k==3){ + ap_ufixed pi2("0x1.921FB54442D1846"); + // ap_ufixed pi2("1.5707963267948966192313216916397514420985846996876"); + z = pi2 - r; + } + else{ + z = r; + } + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + cordic_circ_apfixed(x,y,z); + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + if(k==0){ + outsin = y; + outcos = x; + } + else if(k==1){ + outsin = y; + outcos = -x; + } + else if(k==2){ + outsin = -y; + outcos = -x; + } + else{ + outsin = -y; + outcos = x; + } + + if(sign0==0) + outsin = -outsin; + }; + + // tan + template + ap_fixed generic_tan(ap_fixed x){ + + const int Ix = I; + const int Fx = (((W-I)>(I-1)) ? (W-I): (I-1)) + I; + const int Wx = I + Fx; + + ap_fixed xs = x; + + ap_fixed outsin; + ap_fixed outcos; + generic_sincos(xs, outsin, outcos); + + ap_fixed out = outsin / outcos; + + // overflow tan + if(I==1){ + if(out[W-1]==1){ + out[W-1] = 0; + for(int i=0;i + ap_ufixed generic_tan(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_tan(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // tan(ap_int) + template + ap_int generic_tan(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_tan(fin); + ap_int out = fout; + return out; + }; + + // tan(ap_uint) + template + ap_uint generic_tan(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_tan(fin); + ap_uint out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + }; + + /* + * for tanpi + */ + + /* + * Range reduces input to between 0 and pi/2 by + * solving for k and r in pi*x = k*(pi/2) + r + */ + template + void circ_range_redux_pi( ap_ufixed x, + ap_uint<2> &k, + ap_ufixed &r) { + //ap_ufixed<(Wo+I),2> v_2("2.000000000000000000"); + ap_ufixed pi2("1.5707963267948966192313216916397514420985846996876"); + ap_ufixed prod = x << 1;//mul_2; + ap_uint kint = prod; + + k = kint; + r = (prod - kint) * pi2; + }; + // sinpi cospi + template + void generic_sincospi(ap_fixed in, + ap_fixed & outsin, ap_fixed & outcos){ + + ap_uint<1> sign0 = (in > 0) ? 1: 0; + + // abs(in) + ap_ufixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + // inabs = k * (pi/2) + r + const int Fr = (W - I) + I + 1; + ap_uint<2> k; + ap_ufixed r; + circ_range_redux_pi(inabs, k, r); + + ap_fixed x, y, z; + + const ap_fixed K1("0x0.9B74EDA8435E47F277F7"); + x = K1; + y = 0; + + if(k==1 or k==3){ + ap_ufixed pi2("0x1.921FB54442D1846"); + z = pi2 - r; + } + else{ + z = r; + } + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + cordic_circ_apfixed(x,y,z); + +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << "xyz: " << x << " " << y << " " << z << std::endl; +#endif +#endif + + if(k==0){ + outsin = y; + outcos = x; + } + else if(k==1){ + outsin = y; + outcos = -x; + } + else if(k==2){ + outsin = -y; + outcos = -x; + } + else{ + outsin = -y; + outcos = x; + } + + if(sign0==0) + outsin = -outsin; + }; + + // tanpi + template + ap_fixed generic_tanpi(ap_fixed x){ + + const int Ix = I; + const int Fx = (((W-I)>(I-1)) ? (W-I): (I-1)) + I; + const int Wx = I + Fx; + + ap_fixed xs = x; + + ap_fixed outsin; + ap_fixed outcos; + generic_sincospi(xs, outsin, outcos); + + ap_fixed out; + ap_int<1> bpoint=0; + if(!outcos){ + bpoint = 1; + }else{ + out = outsin / outcos; + } + //ap_fixed out = outsin / outcos; + + // overflow tan + // overflow in I ==1 and value< 0 + if(I==1||bpoint){ + if( out[W-1]==1 ){// + out[W-1] = 0; + for(int i=0;i + ap_ufixed generic_tanpi(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanpi(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // tanpi(ap_int) + template + ap_int generic_tanpi(ap_int in) { + _AP_UNUSED_PARAM(in); + return ap_int(0); + }; + + // tanpi(ap_uint) + template + ap_uint generic_tanpi(ap_uint in) { + _AP_UNUSED_PARAM(in); + return ap_uint(0); + }; + + // atan + template + ap_fixed generic_atan(ap_fixed in){ + + ap_uint<1> sign0 = (in > 0) ? 1: 0; + + // abs(in) + ap_fixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + // sign1 + ap_uint<1> sign1 = (inabs > 1) ? 1: 0; + + ap_fixed x, y, z; + if(sign1){ + x = 1; + // y = ap_fixed("0x1.0") / inabs; + y = 1.0 / inabs.to_double(); + z = 0; + } + else{ + x = 1; + y = inabs; + z = 0; + } + cordic_circ_apfixed(x,y,z); + + ap_fixed out; + if(sign1){ + const ap_fixed pi2("0x1.921FB54442D1846"); // pi/2 + out = pi2 - z; + } + else{ + out = z; + } + + // return + if(sign0){ + return out; + } + else{ + return -out; + } + }; + + // atan(ap_ufixed) + template + ap_ufixed generic_atan(ap_ufixed in){ + ap_fixed fin = in; + ap_fixed fout = generic_atan(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // atan(ap_int) + template + ap_int<2> generic_atan(ap_int in){ + if(in<-1) + return ap_int<2>(-1); + else if(in>1) + return ap_int<2>(1); + else + return ap_int<2>(0); + }; + + // atan(ap_uint) + template + ap_uint<1> generic_atan(ap_uint in){ + if(in>1) + return ap_uint<1>(1); + else + return ap_uint<1>(0); + }; + + // atan2 + template + ap_fixed generic_atan2(ap_fixed in1, + ap_fixed in2){ + + const ap_fixed pi("0x3.243F6A8885A308D3"); // pi + const ap_fixed pi2("0x1.921FB54442D1846"); // pi/2 + const ap_fixed pi4("0x0.C90FDAA22168C23"); // pi/4 + const ap_fixed pi3_("-0x2.5B2F8FE6643A469");// -pi*(3/4) + + ap_uint<2> signin1 = (in1 > 0) ? 2: (in1==0) ? 1: 0; + ap_uint<2> signin2 = (in2 > 0) ? 2: (in2==0) ? 1: 0; + + ap_fixed out; // output + + // 1. corner cases + + if(signin1==1 and signin2==2){ + out = 0; + return out; + } + else if(signin1==1 and signin2==0){ + out = pi; + return out; + } + else if(signin1==2 and signin2==1){ + out = pi2; + return out; + } + else if(signin1==0 and signin2==1){ + out = -pi2; + return out; + } + else if(in1==in2){ + if(signin1==2){ + out = pi4; + return out; + } + else if(signin1==1){ + out = 0; + return out; + } + else{ + out = pi3_; + return out; + } + } + + // 2. non-corner cases + + ap_fixed in1abs; // abs(in1) + if(signin1==0) + in1abs = -in1; + else + in1abs = in1; + + ap_fixed in2abs; // abs(in2) + if(signin2==0) + in2abs = -in2; + else + in2abs = in2; + + ap_fixed in1abs_sft; // shift + ap_fixed in2abs_sft; + for(int i=0;i x, y, z; + if(in1abs > in2abs){ + x = in1abs_sft; + y = in2abs_sft; + z = 0; + } + else{ + x = in2abs_sft; + y = in1abs_sft; + z = 0; + } + cordic_circ_apfixed(x,y,z); + + if(in1abs > in2abs){ + z = pi2 - z; + } + + if(signin2==0 and signin1==2){ + out = pi - z; + } + else if(signin2==0 and signin1==0){ + out = z - pi; + } + else if(signin2==2 and signin1==0){ + out = -z; + } + else{ + out = z; + } + + return out; + }; + + // atan2(ap_fixed) + template + ap_ufixed generic_atan2(ap_ufixed in1, + ap_ufixed in2){ + ap_fixed fin1 = in1; + ap_fixed fin2 = in2; + ap_fixed fout = generic_atan2(fin1, fin2); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + } + + // atan2(ap_int) + template + ap_int<3> generic_atan2(ap_int in1, + ap_int in2){ + ap_fixed fin1 = in1; + ap_fixed fin2 = in2; + ap_fixed fout = generic_atan2(fin1, fin2); + ap_int<3> out = fout; + return out; + } + + // atan2(ap_uint) + template + ap_uint<2> generic_atan2(ap_uint in1, + ap_uint in2){ + ap_fixed fin1 = in1; + ap_fixed fin2 = in2; + ap_fixed fout = generic_atan2(fin1, fin2); + ap_uint<2> out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + } + + /* + * Range reduces input to between 0 and ln2 by + * solving for k and r in x = k*ln2 + r + */ + template + void hyperb_range_redux( ap_ufixed x, + ap_uint &k, + ap_ufixed &r) { + + ap_ufixed<(Wo+I)+1,1> inv_ln2("0x1.71547652b82fe1777d0ffda0d23a7d11d6aef551cp0"); // 1.0/log(2) + ap_ufixed ln2("0xb.17217f7d1cf79abc9e3b39803f2f6af40f343267p-4"); // log(2) + ap_ufixed prod = x * inv_ln2; + ap_ufixed prod_dec = prod; + k = prod; + r = prod_dec * ln2; + }; + + /* + * Main hyperbolic CORDIC sub-function + * MODE 0: 'Rotation' : rotate by angle z. x' = K*(x*cosh(z) + y*sinh(z)), y' = x*sinh(z) + y*cosh(z) + * MODE 1: 'Vectoring': rotate y to zero. x' = K*sqrt(x^2 - y^2) , z' = z+atanh(y/x) + */ + template + void cordic_hyperb_apfixed( ap_fixed &x, + ap_fixed &y, + ap_fixed &z) { + + const int Nmax = W + 1; + + ap_fixed tx, ty, tz; + ap_fixed x_s, y_s, z_s; + ap_uint<1> d; + + for (int n=0; n> k; + y_s = y >> k; + z_s = hyperb_table_arctanh_128[k-1]; + + if(d){ // z[n-1] is negative + tx = x - y_s; + ty = y - x_s; + tz = z + z_s; + } + else{ + tx = x + y_s; + ty = y + x_s; + tz = z - z_s; + } + + x = tx; + y = ty; + z = tz; + + // std::cout << " x_s: " << x_s + // << " y_s: " << y_s + // << " z_s: " << z_s + // << " x : " << x + // << " y : " << y + // << " z : " << z << std::endl; + + } + } + + // Cordic method with range reduce for sinh and cosh + template + void sinh_cosh_range_redux_cordic( ap_fixed in, + ap_fixed &s_out, + ap_fixed &c_out){ + + ap_uint<1> sign0 = in[W-1]; + + ap_ufixed inabs; + if(sign0 == 0) + inabs = in; + else + inabs = -in; + + const int Fr = (W - I) + I; + + if(in==0){ + s_out = 0; + c_out = 1; + return; + } + + // inabs = k * ln(2) + r + ap_uint k; + ap_ufixed r; + hyperb_range_redux(inabs, k, r); + + ap_fixed x("1.20749706776307212887772"); + ap_fixed y(0); + ap_fixed z(r); + + // std::cout << x << " " << y << " " << z << std::endl; + + // compute x = sinh(r) and y = cosh(r) + cordic_hyperb_apfixed(x,y,z); + + // std::cout << x << " " << y << " " << z << std::endl; + + ap_fixed er, e_r; + er = x + y; // e^r + e_r = x - y; // e^{-r} + + // std::cout << er << " " << e_r << std::endl; + + er <<= (k-1); // (e^k * 2^k) / 2 + e_r >>= (k+1); // (e^{-k} * 2^{-k})/2 + + // std::cout << er << " " << e_r << std::endl; + + ap_fixed s_out_tmp = er - e_r; + ap_fixed c_out_tmp = er + e_r; + + // std::cout << "out_tmp: "<< " " << c_out_tmp << std::endl; + + // overflow sinh + if(s_out_tmp[W-1]==1){ + s_out_tmp[W-1] = 0; + for(int i=0;i + void tanh_range_redux_cordic(ap_fixed in, ap_fixed &tan_out) { + //For detail comment, please take sinh_range_redux_cordix for example + ap_uint<1> sign0 = in[W-1]; + + ap_ufixed inabs; + if(sign0 == 0) + inabs = in; + else + inabs = -in; + + const int Fr = (W - I) + I; + + if(in==0){ + tan_out = 0; + return; + } + + ap_uint k; + ap_ufixed r; + hyperb_range_redux(inabs, k, r); + + ap_fixed x("1.20749706776307212887772"); + ap_fixed y(0); + ap_fixed z(r); + + cordic_hyperb_apfixed(x,y,z); + ap_fixed er, e_r; + er = x + y; + e_r = x - y; + er <<= k; + e_r >>= k; + tan_out = (er/(er+e_r))*2 - 1; + } + + template + ap_fixed generic_tanh(ap_fixed in) { + ap_fixed tan_out; + tanh_range_redux_cordic(in, tan_out); + return tan_out; + } + + template + ap_ufixed generic_tanh(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanh(fin); + ap_ufixed tan_out = fout; + return tan_out; + } + + template + ap_int generic_tanh(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanh(fin); + ap_int tan_out = fout; + return tan_out; + } + + template + ap_uint generic_tanh(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_tanh(fin); + ap_uint tan_out = fout; + return tan_out; + } + // sinh(ap_fixed) + template + ap_fixed generic_sinh(ap_fixed in) { + ap_fixed s_out, c_out; + sinh_cosh_range_redux_cordic(in,s_out,c_out); + return s_out; + } + + // sinh(ap_ufixed) + template + ap_ufixed generic_sinh(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_sinh(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // sinh(ap_int) + template + ap_int generic_sinh(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_sinh(fin); + ap_int out = fout; + return out; + }; + + // sinh(ap_uint) + template + ap_uint generic_sinh(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_sinh(fin); + ap_uint out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + }; + + // cosh(ap_fixed) + template + ap_fixed generic_cosh(ap_fixed in) { + ap_fixed s_out, c_out; + sinh_cosh_range_redux_cordic(in,s_out,c_out); + return c_out; + } + + // cosh(ap_ufixed) + template + ap_ufixed generic_cosh(ap_ufixed in) { + ap_fixed fin = in; + ap_fixed fout = generic_cosh(fin); + ap_ufixed out = 0; + if(fout[W]==0){ + out = fout; + } + return out; + }; + + // cosh(ap_int) + template + ap_int generic_cosh(ap_int in) { + ap_fixed fin = in; + ap_fixed fout = generic_cosh(fin); + ap_int out = fout; + return out; + }; + + // cosh(ap_uint) + template + ap_uint generic_cosh(ap_uint in) { + ap_fixed fin = in; + ap_fixed fout = generic_cosh(fin); + ap_uint out = 0; + if(fout[I]==0){ + out = fout; + } + return out; + }; + + + // asin + template + ap_fixed generic_asin(ap_fixed in){ + + const int I0 = 3; + const int W0 = W - I + I0 + 6; + + const ap_fixed cst1("0x1"); + const ap_fixed cst0("0x0"); + const ap_fixed cst_1("-0x1"); + + // input value should be between -1 and 1 +#ifndef __SYNTHESIS__ + if(I>=2){ + if((in>cst1) or (in out; // output + + // special case + if(in==cst1){ + out = ap_fixed("0x1.921FB54442D1846"); + return out; + } + else if(in==cst_1){ + out = ap_fixed("-0x1.921FB54442D1846"); + return out; + } + else if(in==cst0){ + out = ap_fixed("0x0"); + return out; + } + + // sign + ap_uint<1> sign0 = (in >= 0) ? 1: 0; + + // abs(in) + ap_fixed inabs; + if(sign0) + inabs = in; + else + inabs = -in; + + ap_fixed absout; + + // double cordic algorithm + if(inabs[W-I-1]==0){ + ap_fixed x("0x1"); + ap_fixed y("0x0"); + ap_fixed z("0x0"); + ap_fixed t = inabs; + doublecordic_apfixed(x,y,z,t); + absout = z; + } + else{ + const int F1 = W - I; + const int W1 = F1 + F1 + I; + ap_fixed one("0x1"); + ap_fixed onex = one - inabs * inabs; + ap_fixed sqrtonex = ::HLS_FPO_SQRT(onex.to_double()); + ap_fixed xsqrtonex = inabs / (one + sqrtonex); + absout = generic_atan(xsqrtonex) << 1; + } + + // return + if(sign0) + out = absout; + else + out = -absout; + + return out; + } + + + // acos + template + ap_fixed generic_acos(ap_fixed in){ + + const int I0 = 3; + const int W0 = W - I + I0; + + // input value should be between -1 and 1 +#ifndef __SYNTHESIS__ + if(I>=2){ + const ap_fixed cst1("0x1"); + const ap_fixed cst_1("-0x1"); + + if((in>cst1) or (in pi2("0x1.921FB54442D1846"); // pi/2 + ap_fixed out = pi2 - generic_asin(in); + + if(out[W0-1]==1){ + out = -out; + } + + return out; + } + + template + void cordic_semi_recovery_asinh(ap_fixed in_top, ap_fixed& out) { + + if(in_top == 0) { + out = 0; + return; + } + + ap_fixed in; + if(in_top >= 0) { + in = in_top; + } + else { + in = -in_top; + } + + int m = in.countLeadingZeros(); + int k = I-m; + + if(W-I-2 >= k) { + + ap_fixed boundk = 1.0; + ap_fixed bound_k_2 = 1.0; + boundk <<= k; + bound_k_2 >>= k; + bound_k_2 >>= 2; + + if(in >= (boundk - bound_k_2)) { + k+=1; + } + + } + + if(k < 0) { + k = 0; + } + + const int Nmax = W - I + 1; + int tau; + ap_fixed x_r(1); + ap_fixed y_r(0); + ap_fixed z_r(0); + ap_fixed x1_tau, x_2tau, y1_tau, y_2tau, z_s; + ap_fixed xk, x_k, yk, y_k; + ap_fixed y_semi_recovery; + ap_fixed in_s; + + for(int i=0; i> k; + yk = y_r << k; + y_k = y_r >> k; + + y_semi_recovery = (xk - x_k + yk + y_k) >> 1; + + tau = hyperb_table_tau_128[i+1]; + z_s = hyperb_table_arctanh_128[tau-1] << 1; + + x1_tau = ((x_r >> tau) << 1); + x_2tau = (x_r >> (tau << 1)); + y1_tau = ((y_r >> tau) << 1); + y_2tau = (y_r >> (tau << 1)); + + if(y_semi_recovery <= in) { + x_r += x_2tau + y1_tau; + y_r += y_2tau + x1_tau; + z_r += z_s; + } + else { + x_r += x_2tau - y1_tau; + y_r += y_2tau - x1_tau; + z_r -= z_s; + } + + in_s = in >> (tau << 1); + in -= in_s; + } + + ap_ufixed ln2("0xb.17217f7d1cf79abc9e3b39803f2f6af40f343267p-4"); + if(in_top >= 0) { + out = z_r + k*ln2; + } + else { + out = -z_r - k*ln2; + } + } + + template + void cordic_semi_recovery_acosh(ap_fixed in, ap_fixed& out) { + +#ifndef __SYNTHESIS__ + if(in < 1) { + std::cout<<"Input should be equal or greater than 1.0."< boundk = 1.0; + ap_fixed bound_k_1 = 1.0; + boundk <<= k; + boundk >>= 1; + bound_k_1 >>= k; + bound_k_1 >>= 1; + + if(in < (boundk - bound_k_1)) { + k-=1; + } + + if(k < 0) { + k = 0; + } + + const int Nmax = W - I + 1; + int tau; + ap_fixed x_r(1); + ap_fixed y_r(0); + ap_fixed z_r(0); + ap_fixed x1_tau, x_2tau, y1_tau, y_2tau, z_s; + ap_fixed xk, x_k, yk, y_k; + ap_fixed x_semi_recovery; + ap_fixed in_s; + + for(int i=0; i> k; + yk = y_r << k; + y_k = y_r >> k; + + x_semi_recovery = (xk + x_k + yk - y_k) >> 1; + + tau = hyperb_table_tau_128[i+1]; + z_s = hyperb_table_arctanh_128[tau-1] << 1; + + x1_tau = ((x_r >> tau) << 1); + x_2tau = (x_r >> (tau << 1)); + y1_tau = ((y_r >> tau) << 1); + y_2tau = (y_r >> (tau << 1)); + + if(x_semi_recovery <= in) { + x_r += x_2tau + y1_tau; + y_r += y_2tau + x1_tau; + z_r += z_s; + } + else { + x_r += x_2tau - y1_tau; + y_r += y_2tau - x1_tau; + z_r -= z_s; + } + + in_s = in >> (tau << 1); + in -= in_s; + } + + ap_ufixed ln2("0xb.17217f7d1cf79abc9e3b39803f2f6af40f343267p-4"); + out = z_r + k*ln2; + } + + // asinh(ap_fixed) + template + ap_fixed generic_asinh(ap_fixed in) { + ap_fixed input, output; input = in; + cordic_semi_recovery_asinh(input, output); + return output; + } + + // asinh(ap_ufixed) + template + ap_ufixed generic_asinh(ap_ufixed in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_asinh(input, output); + return output; + }; + + // asinh(ap_int) + template + ap_int generic_asinh(ap_int in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_asinh(input, output); + return output; + }; + + // asinh(ap_uint) + template + ap_uint generic_asinh(ap_uint in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_asinh(input, output); + return output; + }; + + // acosh(ap_fixed) + template + ap_fixed generic_acosh(ap_fixed in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + } + + // acosh(ap_ufixed) + template + ap_ufixed generic_acosh(ap_ufixed in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + }; + + // acosh(ap_int) + template + ap_int generic_acosh(ap_int in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + }; + + // acosh(ap_uint) + template + ap_uint generic_acosh(ap_uint in) { + ap_fixed input, output; + input = in; + cordic_semi_recovery_acosh(input, output); + return output; + }; + + //asinpi(ap_fixed) + template + ap_fixed generic_asinpi(ap_fixed x) { + const static int we = I < 3? 3: I; + ap_fixed xi = x; + ap_fixed asin_x = generic_asin(xi); + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"W="< + ap_uint generic_asinpi(ap_uint x) { + //asinpi(x) inside [0, 0.5] + if(x==0){ + return 0; + //rounding 0.5 to 1 + } else if(x==1){ + return 1; + } else{ + #ifndef __SYNTHESIS__ + printf("Error: input value %d (for asinpi) is not between -1 and 1.\n", x.to_int()); + assert(0); + #endif + return 0; + }; + } + //acospi(ap_fixed) + template + ap_fixed generic_acospi(ap_fixed x) { + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"W="< + ap_uint generic_acospi(ap_uint x) { + //acospi(x) inside [0,0.5] + if(x==0){ + return 1; + } else if(x==1){ + return 0; + } else{ + #ifndef __SYNTHESIS__ + printf("Error: input value %d (for acospi) is not between -1 and 1.\n", x.to_int()); + assert(0); + #endif + return 0; + }; + } + //atanpi(ap_fixed) + template + ap_fixed generic_atanpi(ap_fixed x) { + ap_fixed atan_x = generic_atan(x); + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"atan_x="< pi = 3.14159265358979323846; + ap_fixed r = atan_x/pi; + #ifndef __SYNTHESIS__ + #ifdef _HLSCLIB_DEBUG_ + std::cout<<"r="< + ap_ufixed generic_atanpi(ap_ufixed x) { + ap_fixed xi = x; + return generic_atanpi(xi); + } + template + ap_int generic_atanpi(ap_int x) { + //atanpi(x) inside (0.5,0.5) + _AP_UNUSED_PARAM(x); + return 0; + } + template + ap_uint generic_atanpi(ap_uint x) { + //atanpi(x) inside [0,0.5) + _AP_UNUSED_PARAM(x); + return 0; + } + //atan2pi(ap_fixed) + template + ap_fixed generic_atan2pi(ap_fixed y, ap_fixed x) { + ap_fixed atan2_x = generic_atan2(y, x); + static const int F = W - I; + //atan2 inside (-pi,pi] + //atan2pi inside (-1,1] + //to make the precision is 1ulp + //E-R=R*2^(-ulp)/Pi<1/2^F + //ulp=F + static const int wf = F; + ap_ufixed<2+wf,2> pi = 3.14159265358979323846; + ap_fixed r = atan2_x/pi; + return r; + } + template + ap_ufixed generic_atan2pi(ap_ufixed y, ap_ufixed x) { + ap_fixed xi = x; + ap_fixed yi = y; + return generic_atan2pi(yi, xi); + } + template + ap_int generic_atan2pi(ap_int y, ap_int x) { + //atan2pi inside (-1, 1] + bool x_sig = x[I-1]; + bool y_sig = y[I-1]; + if(y==0 && x==0) return 0; + //rounding -0.5 to 1 + //y<0, x ==0 + else if(y_sig && x==0) return -1; + //rounding 0.5 to 1, y >0, x == 0 + else if(!y_sig && x==0) return 1; + //y>0 && x < 0 + else if(!y_sig && x_sig) return 1; + //y<0, x < 0 + else if(y_sig && x_sig) return -1; + else return 0; + } + template + ap_uint generic_atan2pi(ap_uint y, ap_uint x) { + //atan2pi inside (0, 1] + //rounding 0.5 to 1, y >0, x == 0 + if(y!=0 && x==0) return 1; + else return 0; + } + +} // namespace + +#endif + + diff --git a/vitis/v2021_2/hls_dds.h b/vitis/v2021_2/hls_dds.h new file mode 100755 index 00000000..76829b8f --- /dev/null +++ b/vitis/v2021_2/hls_dds.h @@ -0,0 +1,1151 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2014 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_DDS_H +#define X_HLS_DDS_H + +/* + * This file contains a C++ model of hls::dds. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#include "ap_int.h" +#include +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#include +#include "hls_stream.h" +//#include "dds/gmp.h" +#include "dds/dds_compiler_v6_0_bitacc_cmodel.h" +#else + +/** + * Core Specific Constants + */ +/* PartsPresent values */ +#define XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT 0 +#define XIP_DDS_PHASE_GEN_ONLY 1 +#define XIP_DDS_SIN_COS_LUT_ONLY 2 + + /* DDS_Clock_Rate limits */ +#define XIP_DDS_CLOCK_RATE_MIN 0.01 +#define XIP_DDS_CLOCK_RATE_MAX 1000 + + /* Channels limits */ +#define XIP_DDS_CHANNELS_MIN 1 +#define XIP_DDS_CHANNELS_MAX 16 + + /* Mode of Operation values */ +#define XIP_DDS_MOO_CONVENTIONAL 0 +#define XIP_DDS_MOO_RASTERIZED 1 + + /* Modulus limits */ +#define XIP_DDS_MODULUS_MIN 9 +#define XIP_DDS_MODULUS_MAX 16384 + + /* ParameterEntry values */ +#define XIP_DDS_SYSTEM_PARAMS 0 +#define XIP_DDS_HARDWARE_PARAMS 1 + + /* Spurious Free Dynamic Range SFDR limits */ +#define XIP_DDS_SFDR_MIN 18 +#define XIP_DDS_SFDR_MAX 150 + + /* Frequency_Resolution SFDR limits */ +#define XIP_DDS_FREQ_RES_MIN 0.000000001 +#define XIP_DDS_FREQ_RES_MAX 125000000 + + /* Noise_Shaping values */ +#define XIP_DDS_NS_NONE 0 +#define XIP_DDS_NS_DITHER 1 +#define XIP_DDS_NS_TAYLOR 2 +#define XIP_DDS_NS_AUTO 3 + + /* Phase_Increment and Phase_Offset values */ +#define XIP_DDS_PINCPOFF_NONE 0 +#define XIP_DDS_PINCPOFF_PROG 1 +#define XIP_DDS_PINCPOFF_FIXED 2 +#define XIP_DDS_PINCPOFF_STREAM 3 + + /* Output_Selection values */ +#define XIP_DDS_OUT_SIN_ONLY 0 +#define XIP_DDS_OUT_COS_ONLY 1 +#define XIP_DDS_OUT_SIN_AND_COS 2 + + /* Present/absent values */ +#define XIP_DDS_ABSENT 0 +#define XIP_DDS_PRESENT 1 + + /* Amplitude_Mode values */ +#define XIP_DDS_FULL_RANGE 0 +#define XIP_DDS_UNIT_CIRCLE 1 + + /* Output_Form */ +#define XIP_DDS_OUTPUT_TWOS 0 +#define XIP_DDS_OUTPUT_SIGN_MAG 1 + + /* Memory_Type values */ +#define XIP_DDS_MEM_AUTO 0 +#define XIP_DDS_MEM_BLOCK 1 +#define XIP_DDS_MEM_DIST 2 + + /* Optimization_Goal values */ +#define XIP_DDS_OPTGOAL_AUTO 0 +#define XIP_DDS_OPTGOAL_AREA 1 +#define XIP_DDS_OPTGOAL_SPEED 2 + + /* Resolved Optimization_Goal values */ +#define XIP_DDS_RESOPTGOAL_AREA 0 +#define XIP_DDS_RESOPTGOAL_SPEED 1 + + /* DSP48_use values */ +#define XIP_DDS_DSP_MIN 0 +#define XIP_DDS_DSP_MAX 1 + + /* Latency_configuration values */ +#define XIP_DDS_LATENCY_AUTO 0 +#define XIP_DDS_LATENCY_MANUAL 1 + + /* S_CONFIG_Sync_Mode values */ +#define XIP_DDS_CONFIG_SYNC_VECTOR 0 +#define XIP_DDS_CONFIG_SYNC_PACKET 1 + +#define ci_max_pipe_stages 13 +#define ci_quad_sym_thresh 2048 + +typedef double xip_dds_v6_0_data; +#endif + +using namespace std; + +namespace hls { + +#ifdef AESL_SYN +#include "etc/autopilot_ssdm_op.h" +#endif + +namespace ip_dds { + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + +static const char* ddsErrChkHead = "ERROR:hls::dds "; + +template +struct in_config_pinc{ + phase_t pinc; +}; + +template +struct in_config_poff{ + phase_t poff; +}; + +template +struct in_config_pinc_poff{ +static const unsigned __HLS_DDS_CONFIG_N_ = (CONFIG_T::Phase_Increment%2 + CONFIG_T::Phase_Offset%2); +static const unsigned input_axi_width = (CONFIG_T::Phase_Width%8) ? (CONFIG_T::Phase_Width/8+1)*8 : CONFIG_T::Phase_Width; +static const unsigned output_axi_width = (CONFIG_T::Output_Width%8) ? (CONFIG_T::Output_Width/8+1)*8 : CONFIG_T::Output_Width; + +typedef ap_ufixed out_phase_t; +// due to there's no data_pack for scout_hls, need to pack 'data' manually. +typedef ap_int out_phase_array_t; + + out_phase_array_t data; + in_config_pinc_poff() { } + in_config_pinc_poff(const in_config_pinc_poff &tmp) + { + data = tmp.data; + } + + inline void operator = (const in_config_pinc_poff &tmp) + { + data = tmp.data; + } + + void set_pinc(out_phase_t &tmp) + { +#pragma HLS inline +#ifndef AESL_SYN + if(CONFIG_T::Phase_Increment%2 == 0) + { + std::cout<<"error found"< +struct out_data_sin{ + data_t sin; +}; + +template +struct out_data_cos{ + data_t cos; +}; + +template +struct out_data_sin_cos{ +static const unsigned __HLS_DDS_OUT_N_ = (CONFIG_T::Output_Selection/2 + 1); +static const unsigned input_axi_width = (CONFIG_T::Phase_Width%8) ? (CONFIG_T::Phase_Width/8+1)*8 : CONFIG_T::Phase_Width; +static const unsigned output_axi_width = (CONFIG_T::Output_Width%8) ? (CONFIG_T::Output_Width/8+1)*8 : CONFIG_T::Output_Width; + +typedef ap_uint config_t; +typedef ap_ufixed out_phase_t; +typedef ap_fixed out_data_t; +// due to there's no data_pack for scout_hls, need to pack 'data' manually. +typedef ap_int out_data_array_t; + + out_data_array_t data; + out_data_sin_cos() {} + out_data_sin_cos(const out_data_sin_cos &tmp) + { + data = tmp.data; + } + + inline void operator = (const out_data_sin_cos &tmp) + { + data = tmp.data; + } + + out_data_t get_sin() + { +#ifndef AESL_SYN + if(CONFIG_T::Output_Selection == 1 || CONFIG_T::Output_Selection%2 != 0) + { + std::cerr << ddsErrChkHead + << "Please do NOT use get_sin() when set Output_Selection to XIP_DDS_OUT_COS_ONLY." + << std::endl; + //assert(0&&"Output_Selection is set to COS_ONLY"); + exit(1); + } +#endif + out_data_t tmp; + tmp.range(output_axi_width - 1, 0) = data.range(output_axi_width * __HLS_DDS_OUT_N_ - 1, output_axi_width * (__HLS_DDS_OUT_N_ - 1)); + return tmp; + } + + void set_sin(out_data_t in) + { + data.range(output_axi_width * __HLS_DDS_OUT_N_ - 1, output_axi_width * (__HLS_DDS_OUT_N_ - 1)) = in; + } + + out_data_t get_cos() + { +#ifndef AESL_SYN + if(CONFIG_T::Output_Selection == 0) + { + std::cerr << ddsErrChkHead + << "Please do NOT use get_cos() when set Output_Selection to XIP_DDS_OUT_SIN_ONLY." + << std::endl; + //assert(0&&"Output_Selection is set to SIN_ONLY"); + exit(1); + } +#endif + out_data_t tmp; + tmp.range(output_axi_width - 1, 0) = data.range(output_axi_width - 1, 0); + return tmp; + } + + void set_cos(out_data_t in) + { + data.range(output_axi_width - 1, 0) = in; + } +}; + +enum filter_type {single_rate = 0, interpolation, decimation, hibert, interpolated}; +static const char* dds_filter_type_str[] = { + "single_rate", "interpolation", + "decimation", "hilbert", "interpolated" +}; + +enum rate_change_type {integer = 0, fixed_fractional}; +static const char* dds_rate_change_type_str[] = { + "integer", "fixed_fractional" +}; + +enum chan_seq {basic = 0, advanced}; +static const char* dds_channel_sequence_str[] = { + "basic", "advanced" +}; + +enum rate_specification {frequency = 0, period}; +static const char* dds_ratespecification_str[] = { + "frequency_specification", "sample_period" +}; + +enum value_sign {value_signed = 0, value_unsigned}; +static const char* dds_value_sign_str[] = {"signed", "unsigned"}; + +enum quantization {integer_coefficients = 0, quantize_only, maximize_dynamic_range}; +static const char* dds_quantization_str[] = { + "integer_coefficients", "quantize_only", "maximize_dynamic_range" +}; + +enum coeff_structure {inferred = 0, non_symmetric, symmetric, negative_symmetric, half_band, hilbert}; +static const char* dds_coeff_struct_str[] = { + "inferred", "non_symmetric", "symmetric", + "negative_symmetric", "half_band", "hilbert" +}; + +enum output_rounding_mode {full_precision = 0, truncate_lsbs, non_symmetric_rounding_down, + non_symmetric_rounding_up, symmetric_rounding_to_zero, + symmetric_rounding_to_infinity, convergent_rounding_to_even, + convergent_rounding_to_odd}; +static const char* dds_output_rounding_mode_str[] = { + "full_precision", "truncate_lsbs", "non_symmetric_rounding_down", + "non_symmetric_rounding_up", "symmetric_rounding_to_zero", + "symmetric_rounding_to_infinity", "convergent_rounding_to_even", + "convergent_rounding_to_odd" +}; + +enum filter_arch {systolic_multiply_accumulate = 0, transpose_multiply_accumulate}; +static const char* dds_filter_arch_str[] = { + "systolic_multiply_accumulate", "transpose_multiply_accumulate" +}; + +enum optimization_goal {area = 0, speed}; +static const char* dds_opt_goal_str[] = {"area", "speed"}; + +enum config_sync_mode {on_vector = 0, on_packet}; +static const char* dds_s_config_sync_mode_str[] = {"on_vector", "on_packet"}; + +enum config_method {single = 0, by_channel}; +static const char* dds_s_config_method_str[] = {"single", "by_channel"}; + +struct params_t { + static const unsigned Phase_Width = 16; + static const unsigned Output_Width = 16; + static const unsigned phase_fractional_bits = 0; + static const unsigned output_fractional_bits = 0; + static const unsigned num_channels = 1; + static const unsigned input_length = 128; + + /** + * dds_compiler_v6_0 Core Generics + * + * These are the only generics that influence the operation of this bit-accurate model. + */ + static const unsigned int PartsPresent = XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT; +#ifndef __GXX_EXPERIMENTAL_CXX0X__ + static const double DDS_Clock_Rate = 20.0; +#else + static constexpr double DDS_Clock_Rate = 20.0; +#endif + static const unsigned int Channels = 1; + static const unsigned int Mode_of_Operation = XIP_DDS_MOO_CONVENTIONAL; + static const unsigned int Modulus = 200; + static const unsigned int ParameterEntry = XIP_DDS_HARDWARE_PARAMS; +#ifndef __GXX_EXPERIMENTAL_CXX0X__ + static const double Spurious_Free_Dynamic_Range = 20.0; + static const double Frequency_Resolution = 10.0; +#else + static constexpr double Spurious_Free_Dynamic_Range = 20.0; + static constexpr double Frequency_Resolution = 10.0; +#endif + static const unsigned int Noise_Shaping = XIP_DDS_NS_NONE; + static const unsigned int Phase_Increment = XIP_DDS_PINCPOFF_FIXED; + static const unsigned int Phase_Offset = XIP_DDS_PINCPOFF_NONE; + static const unsigned int Resync = XIP_DDS_ABSENT; + static const unsigned int Output_Selection = XIP_DDS_OUT_SIN_AND_COS; + static const unsigned int Negative_Sine = XIP_DDS_ABSENT; + static const unsigned int Negative_Cosine = XIP_DDS_ABSENT; + static const unsigned int Amplitude_Mode = XIP_DDS_FULL_RANGE; + static const unsigned int Memory_Type = XIP_DDS_MEM_AUTO; + static const unsigned int Optimization_Goal = XIP_DDS_OPTGOAL_AUTO; + static const unsigned int DSP48_Use = XIP_DDS_DSP_MIN; + static const unsigned int Has_TREADY = XIP_DDS_ABSENT; + static const unsigned int S_CONFIG_Sync_Mode = XIP_DDS_CONFIG_SYNC_VECTOR; + static const unsigned int Output_Form = XIP_DDS_OUTPUT_TWOS; + static const unsigned int Latency_Configuration = XIP_DDS_LATENCY_AUTO; + static const unsigned int Latency = 5; + static const xip_dds_v6_0_data PINC[XIP_DDS_CHANNELS_MAX]; + static const xip_dds_v6_0_data POFF[XIP_DDS_CHANNELS_MAX]; + + /* The following parameters are the results of resolution fns. They are included here so that they are in + the return structure of get_config */ + + static const double resSFDR; + static const double resFrequency_Resolution; + static const unsigned int resNoise_Shaping; + static const unsigned int resMemory_Type; + static const unsigned int resOptimization_Goal; + static const signed int resLatency; + static const unsigned int resPhase_Width; + static const unsigned int resOutput_Width; + static const unsigned int resPhaseAngleWidth; + static const unsigned int resPhaseErrWidth; + //static const xip_uint resLatencyPipe[ci_max_pipe_stages+1]; //100 is much bigger than max possible latency +}; + +#ifndef AESL_SYN +//--------------------------------------------------------------------------------------------------------------------- +// Example message handler +static void msg_print(void* handle, int error, const char* msg) +{ + printf("%s\n",msg); +} +#endif +} // namespace hls::ip_dds + + +template +class DDS { +public: + static const unsigned input_axi_width = (CONFIG_T::Phase_Width%8) ? (CONFIG_T::Phase_Width/8+1)*8 : CONFIG_T::Phase_Width; + static const unsigned output_axi_width = (CONFIG_T::Output_Width%8) ? (CONFIG_T::Output_Width/8+1)*8 : CONFIG_T::Output_Width; + + typedef ap_uint config_t; + typedef ap_ufixed out_phase_t; + + typedef ap_fixed out_data_t; +private: + +#ifndef AESL_SYN + //// Define array helper functions for types used + //DEFINE_XIP_ARRAY(real); + //DEFINE_XIP_ARRAY(complex); + //DEFINE_XIP_ARRAY(uint); + //DEFINE_XIP_ARRAY(mpz); + //DEFINE_XIP_ARRAY(mpz_complex); + + //DEFINE_DDS_XIP_ARRAY(real); + //DEFINE_DDS_XIP_ARRAY(mpz); + //DEFINE_DDS_XIP_ARRAY(mpz_complex); + + xip_dds_v6_0* mDDS; +#endif + +#ifndef AESL_SYN + void printConfig(const xip_dds_v6_0_config* cfg) + { + printf("Configuration of %s:\n",cfg->name); + printf("\tDDS : "); +#if 0 + if (cfg->filter_type == hls::ip_dds::single_rate || + cfg->filter_type == hls::ip_dds::hilbert ) { + printf("%s\n",hls::ip_dds::dds_filter_type_str[cfg->filter_type]); + } else if ( cfg->filter_type == hls::ip_dds::interpolation ) { + printf("%s by %d\n",hls::ip_dds::dds_filter_type_str[cfg->filter_type],cfg->zero_pack_factor); + } else { + printf("%s up by %d down by %d\n",hls::ip_dds::dds_filter_type_str[cfg->filter_type],cfg->interp_rate,cfg->decim_rate); + } + printf("\tCoefficients : %d ",cfg->coeff_sets); + if ( cfg->is_halfband ) { + printf("Halfband "); + } + if (cfg->reloadable) { + printf("Reloadable "); + } + printf("coefficient set(s) of %d taps\n",cfg->num_coeffs); + printf("\tData : %d path(s) of %d %s channel(s)\n",cfg->num_paths,cfg->num_channels,hls::ip_dds::dds_channel_sequence_str[cfg->chan_seq]); +#endif + } + + void checkModulus () { + if (CONFIG_T::Mode_of_Operation == XIP_DDS_MOO_RASTERIZED && (CONFIG_T::Modulus < 129 || CONFIG_T::Modulus > 225)) { + std::cerr << ip_dds::ddsErrChkHead << "Validation failed for parameter Modulus for DDS Compiler. Value \"" + << CONFIG_T::Modulus << "\" is out of the range [129, 256] supported by Vivado HLS." + << std::endl; + exit(1); + } + } + + void checkParamEntry () { + if (CONFIG_T::ParameterEntry == XIP_DDS_SYSTEM_PARAMS) { + std::cerr << ip_dds::ddsErrChkHead << "PrameterEntry is not supported for setting XIP_DDS_SYSTEM_PARAMS in Vivado HLS." + << std::endl; + exit(1); + } + } + + void checkPartsPresent () { + if (CONFIG_T::PartsPresent != XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT) { + std::cerr << ip_dds::ddsErrChkHead << "PartsPresent is only supported for setting XIP_DDS_PHASE_GEN_AND_SIN_COS_LUT in Vivado HLS." + << std::endl; + exit(1); + } + } + + void gen_ip_inst() + { + + xip_dds_v6_0_config dds_cnfg; + xip_status status = xip_dds_v6_0_default_config(&dds_cnfg); + dds_cnfg.name = "dds_compiler"; + + dds_cnfg.PartsPresent = CONFIG_T::PartsPresent; + dds_cnfg.DDS_Clock_Rate = CONFIG_T::DDS_Clock_Rate; + dds_cnfg.Channels = CONFIG_T::Channels; + dds_cnfg.Mode_of_Operation = CONFIG_T::Mode_of_Operation; + dds_cnfg.Modulus = CONFIG_T::Modulus; + dds_cnfg.ParameterEntry = CONFIG_T::ParameterEntry; + dds_cnfg.Spurious_Free_Dynamic_Range = CONFIG_T::Spurious_Free_Dynamic_Range; + dds_cnfg.Frequency_Resolution = CONFIG_T::Frequency_Resolution; + dds_cnfg.Noise_Shaping = CONFIG_T::Noise_Shaping; + dds_cnfg.Phase_Increment = CONFIG_T::Phase_Increment; + dds_cnfg.Resync = CONFIG_T::Resync; + dds_cnfg.Phase_Offset = CONFIG_T::Phase_Offset; + dds_cnfg.Output_Selection = CONFIG_T::Output_Selection; + dds_cnfg.Negative_Sine = CONFIG_T::Negative_Sine; + dds_cnfg.Negative_Cosine = CONFIG_T::Negative_Cosine; + dds_cnfg.Amplitude_Mode = CONFIG_T::Amplitude_Mode; + dds_cnfg.Memory_Type = CONFIG_T::Memory_Type; + dds_cnfg.Optimization_Goal = CONFIG_T::Optimization_Goal; + dds_cnfg.DSP48_Use = CONFIG_T::DSP48_Use; + dds_cnfg.Has_TREADY = CONFIG_T::Has_TREADY; + dds_cnfg.S_CONFIG_Sync_Mode = CONFIG_T::S_CONFIG_Sync_Mode; + dds_cnfg.Output_Form = CONFIG_T::Output_Form; + dds_cnfg.Latency_Configuration = CONFIG_T::Latency_Configuration; + for(int mi=0; mi config[CONFIG_T::input_length*CONFIG_T::num_channels], + ip_dds::out_data_sin_cos data[CONFIG_T::input_length*CONFIG_T::num_channels], + out_phase_t phase[CONFIG_T::input_length*CONFIG_T::num_channels] + ) + { + ////////////////////////////////////////////// + // C level simulation models for hls::dds + ////////////////////////////////////////////// + const int number_of_samples = CONFIG_T::input_length; + + xip_dds_v6_0_config config_ret; + xip_dds_v6_0_config_pkt* pinc_poff_config; + + // Can we read back the updated configuration correctly? + if (xip_dds_v6_0_get_config(mDDS, &config_ret) != XIP_STATUS_OK) { + std::cerr << "ERROR: Could not retrieve C model configuration" << std::endl; + } + + // Set up some arrays to hold values for programmable phase increment and phase offset + xip_dds_v6_0_data pinc[XIP_DDS_CHANNELS_MAX]; + xip_dds_v6_0_data poff[XIP_DDS_CHANNELS_MAX]; + + //------------------------------------------------------------------------------------ + // Set up fields and reserve memory for data and config packets, for this configuration + //------------------------------------------------------------------------------------ + + //Calculate the number of input fields + xip_uint no_of_input_fields = 0; + if (config_ret.PartsPresent == XIP_DDS_SIN_COS_LUT_ONLY) { + no_of_input_fields++; //Phase_In + assert(0 && "DDS IP doesn't support SIN_COS_LUT_ONLY mode"); + } else { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_STREAM) { + no_of_input_fields++; //PINC + if (config_ret.Resync == XIP_DDS_PRESENT) { + no_of_input_fields++; //RESYNC + } + } + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_STREAM) { + no_of_input_fields++; //POFF + } + } + + //Calculate the number of output fields + xip_uint no_of_output_fields = 0; //phase output is not optional in the c model. + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + no_of_output_fields = 1; //PHASE_OUT + } + if (config_ret.PartsPresent != XIP_DDS_PHASE_GEN_ONLY) { + if (config_ret.Output_Selection == XIP_DDS_OUT_SIN_ONLY) no_of_output_fields++; //SIN + if (config_ret.Output_Selection == XIP_DDS_OUT_COS_ONLY) no_of_output_fields++; //COS + if (config_ret.Output_Selection == XIP_DDS_OUT_SIN_AND_COS) no_of_output_fields += 2; //SIN and COS + } + + // Create and allocate memory for I/O structures + // Create request and response structures + + // Create config packet - pass pointer by reference + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY && (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG || config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG)) { + if (xip_dds_v6_0_alloc_config_pkt(&pinc_poff_config, config_ret.Channels, config_ret.Channels) == XIP_STATUS_OK) { + std::cout << "INFO: Reserved memory for config packet" << std::endl; + } else { + std::cerr << "ERROR: Unable to reserve memory for config packet" << std::endl; + exit(1); + } + } + + // Create input data packet + xip_array_real* din = xip_array_real_create(); + xip_array_real_reserve_dim(din,3); //dimensions are (Number of samples, channels, PINC/POFF/Phase) + din->dim_size = 3; + din->dim[0] = number_of_samples; //FIXME: number of sample + din->dim[1] = config_ret.Channels; + din->dim[2] = no_of_input_fields; + din->data_size = din->dim[0] * din->dim[1] * din->dim[2]; + if (xip_array_real_reserve_data(din,din->data_size) == XIP_STATUS_OK) { + std::cout << "INFO: Reserved memory for request as [" << number_of_samples << "," << config_ret.Channels << "," << no_of_input_fields << "] array " << std::endl; + } else { + std::cout << "ERROR: Unable to reserve memory for input data packet!" << std::endl; + exit(2); + } + + // Request memory for output data + xip_array_real* dout = xip_array_real_create(); + xip_array_real_reserve_dim(dout,3); //dimensions are (Number of samples, channels, PINC/POFF/Phase) + dout->dim_size = 3; + dout->dim[0] = number_of_samples; + dout->dim[1] = config_ret.Channels; + dout->dim[2] = no_of_output_fields; + dout->data_size = dout->dim[0] * dout->dim[1] * dout->dim[2]; + if (xip_array_real_reserve_data(dout,dout->data_size) == XIP_STATUS_OK) { + std::cout << "INFO: Reserved memory for response as [" << number_of_samples << "," << config_ret.Channels << "," << no_of_output_fields << "] array " << std::endl; + } else { + std::cout << "ERROR: Unable to reserve memory for output data packet!" << std::endl; + exit(3); + } + + + //--------------------------------------------------- + // Populate the input structure with example data + //--------------------------------------------------- + size_t sample = 0; + size_t field = 0; + xip_dds_v6_0_data value = 0.0; + + // Set up pinc and poff, and call config routine, if either phase increment or phase offset is programmable + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG || config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG) { + + for (int channel = 0; channel < config_ret.Channels; channel++) { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG) { + //field is PINC + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // pinc[channel] = rand() % (config_ret.Modulus); // Allow zero too + //} else { + // pinc[channel] = rand() % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + pinc[channel] = config[channel].get_pinc(); //FIXME ?: CONFIG_T::PINC[channel]; + } + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG) { + //field is POFF + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // poff[channel] = (channel + 1) % (config_ret.Modulus); + //} else { + // poff[channel] = (channel + 1) % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + poff[channel] = config[channel].get_poff(); //FIXME ?: CONFIG_T::POFF[channel]; + } + } + + // Copy our local pinc/poff data into the memory we allocated in the config structure + // If not present, leave the initial values + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG) { + memcpy(pinc_poff_config->din_pinc, pinc, config_ret.Channels*sizeof(xip_dds_v6_0_data)); + } + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG) { + memcpy(pinc_poff_config->din_poff, poff, config_ret.Channels*sizeof(xip_dds_v6_0_data)); + } + + // Run the config routine + if (xip_dds_v6_0_config_do(mDDS, pinc_poff_config) == XIP_STATUS_OK) { + std::cout << "INFO: config_do was successful" << std::endl; + } else { + std::cerr << "ERROR: config_packet failed" << std::endl; + exit(4); + } + } + } + + //------------------------------------------------------ + //transforming data + //int resync_sample = rand() % (number_of_samples-2) + 1; // Do a resync randomly in the frame between 2nd and 2nd-last sample + for(sample = 0; sample < number_of_samples; sample++) { + for (int channel = 0; channel < config_ret.Channels; channel++) { + + field = 0; + + // Phase_In input, for Sin/Cos LUT configuration only + if (config_ret.PartsPresent == XIP_DDS_SIN_COS_LUT_ONLY) { + //field is PHASE_IN + assert(0 && "DDS IP doesn't support SIN_COS_LUT_ONLY mode"); + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // value = rand() % (config_ret.Modulus); // Allow zero too + //} else { + // value = rand() % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + //xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + //field++; + } + + // Streaming phase increment + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_STREAM) { + ////field is PINC + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // value = rand() % (config_ret.Modulus); // Allow zero too + //} else { + // value = rand() % (1ULL << (config_ret.resPhase_Width)); // Allow zero too + //} + value = config[sample*config_ret.Channels+channel].get_pinc(); + xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + field++; + } + } + + // Streaming phase offset + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if (config_ret.Phase_Offset == XIP_DDS_PINCPOFF_STREAM) { + ////field is POFF + //if (config_ret.Mode_of_Operation == XIP_DDS_MOO_RASTERIZED) { + // value = (channel + 1 + sample) % (config_ret.Modulus); + //} else { + // value = (channel + 1 + sample) % (1ULL << (config_ret.resPhase_Width)); + //} + value = config[sample*config_ret.Channels+channel].get_poff(); + xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + field++; + } + } + +#if 0 + // Finally do resync, if required + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY) { + if ((config_ret.Phase_Increment == XIP_DDS_PINCPOFF_STREAM) && (config_ret.Resync == XIP_DDS_PRESENT)){ + //field is Resync + if (sample == resync_sample) { + value = 1; + } else { + value = 0; + } + xip_dds_v6_0_xip_array_real_set_data(din, value, sample, channel, field); + field++; + } + } +#endif + + } + } + + //------------------ + // Simulate the core + //------------------ + std::cout << "INFO: Running the C model..." << std::endl; + + if (xip_dds_v6_0_data_do(mDDS, //pointer to c model instance + din, //pointer to input data structure + dout, //pointer to output structure + number_of_samples, //first dimension of either data structure + config_ret.Channels, //2nd dimension of either data structure + no_of_input_fields, //3rd dimension of input + no_of_output_fields //3rd dimension of output + ) != XIP_STATUS_OK) { + std::cerr << "ERROR: C model did not complete successfully" << std::endl; + xip_array_real_destroy(din); + xip_array_real_destroy(dout); + xip_dds_v6_0_destroy(mDDS); + if (config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY && (config_ret.Phase_Increment == XIP_DDS_PINCPOFF_PROG || config_ret.Phase_Offset == XIP_DDS_PINCPOFF_PROG)) { + xip_dds_v6_0_free_config_pkt(&pinc_poff_config); + } + exit(5); + } + else { + std::cout << "INFO: C model transaction completed successfully" << std::endl; + } + + // When enabled, this will print the result data to stdout + const int SCALE_FACTOR = sizeof(int)*CHAR_BIT - config_ret.Output_Width; + for(int sample = 0;sample< number_of_samples;sample++) { + std::cout << std::endl << "Sample " << sample; + for(int chan = 0; chan < config_ret.Channels; chan++) { + std::cout << std::endl << "Channel " << chan; + field = 0; + xip_dds_v6_0_xip_array_real_get_data(dout, &value, sample, chan, field); + std::cout << ": out phase = " << value; + phase[sample*config_ret.Channels+chan] = value; + field++; + ip_dds::out_data_sin_cos tmp; + if(config_ret.PartsPresent != XIP_DDS_SIN_COS_LUT_ONLY ) { + if (config_ret.Output_Selection != XIP_DDS_OUT_COS_ONLY) { + xip_dds_v6_0_xip_array_real_get_data(dout, &value, sample, chan, field); + std::cout << " out sin = " << (((int)value << SCALE_FACTOR) >> SCALE_FACTOR); + //std::cout << " out sin = " << (out_data_t)value; + tmp.set_sin(value); + field++; + } + if (config_ret.Output_Selection != XIP_DDS_OUT_SIN_ONLY) { + xip_dds_v6_0_xip_array_real_get_data(dout, &value, sample, chan, field); + std::cout << " out cos = " << (((int)value << SCALE_FACTOR) >> SCALE_FACTOR); + //std::cout << " out cos = " << (out_data_t)value; + tmp.set_cos(value); + } + } + data[sample*config_ret.Channels+chan] = tmp; + std::cout << std::endl; + } + } + + //----------------- + // Reset the core + // This will clear the phase accumulator state, and any resync input, + // but leave any programmed phase increment/phase offset values + // unchanged. + //----------------- + if (xip_dds_v6_0_reset(mDDS) == XIP_STATUS_OK) { + std::cout << "INFO: C model reset successfully" << std::endl; + } else { + std::cout << "ERROR: C model reset did not complete successfully" << std::endl; + exit(6); + } + + } //end of run_sim +#endif + + public: + DDS() +#ifndef AESL_SYN + : mDDS(0) +#endif + { +#ifndef AESL_SYN + rule_check(); + ///////////// IP parameters legality checking ///////////// + // Check CONFIG_T::ParameterEntry + checkParamEntry(); + + // Check CONFIG_T::PartsPresent + checkPartsPresent(); + + // Check CONFIG_T::Mode_of_Operation and CONFIG_T::Modulus + checkModulus(); + + gen_ip_inst(); +#endif + } + + ~DDS() + { + #ifdef AESL_SYN + #pragma HLS inline + #else + xip_dds_v6_0_destroy(mDDS); + #endif + } + + void run( + ip_dds::in_config_pinc_poff config_V[CONFIG_T::input_length*CONFIG_T::num_channels], + ip_dds::out_data_sin_cos data_data_V[CONFIG_T::input_length*CONFIG_T::num_channels], + out_phase_t phase_V[CONFIG_T::input_length*CONFIG_T::num_channels] + ) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::dds + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_DDS" variable=return metadata="parameterizable" + + insert_spec(); + for (int i = 0; i < CONFIG_T::input_length; ++i) + { + ip_dds::in_config_pinc_poff tmp = config_V[i]; + ip_dds::out_data_sin_cos outtmp; + outtmp.set_cos(tmp.get_pinc()); + if(CONFIG_T::Output_Selection>1) + outtmp.set_sin(tmp.get_poff()); + data_data_V[i] = outtmp; + phase_V[i]= tmp.get_poff(); + } + + #else + //coeff_t reload_coeff[CONFIG_T::num_coeffs]; + //for (unsigned int i = 0; i < CONFIG_T::num_coeffs; i++) + // reload_coeff[i] = 0; + //config_t config[CONFIG_T::num_channels] = {0}; + run_sim(config_V, data_data_V, phase_V); + #endif + } + + //void run( + // ip_dds::in_config_pinc_poff_resync config[CONFIG_T::input_length*CONFIG_T::num_channels], + // ip_dds::out_data_sin_cos data[CONFIG_T::input_length*CONFIG_T::num_channels], + // out_phase_t phase[CONFIG_T::input_length*CONFIG_T::num_channels] + // ) + +#ifndef AESL_SYN + void rule_check() + { + std::cout<<"Channel number: "< 16) { + assert(0 && "Channel number > 16"); + } + } +#endif + + void run( + ip_dds::out_data_sin_cos data_data_V[CONFIG_T::input_length*CONFIG_T::num_channels], + out_phase_t phase_V[CONFIG_T::input_length*CONFIG_T::num_channels] + ) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::dds + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_DDS" variable=return metadata="parameterizable" + + insert_spec(); + + static ip_dds::out_data_sin_cos lut[CONFIG_T::input_length*CONFIG_T::num_channels]; + for(int i=0; i<(CONFIG_T::input_length*CONFIG_T::num_channels);i++) + { + lut[i].set_cos(i*i + 3); +if(CONFIG_T::Output_Selection>1) + lut[i].set_sin(i*i - 69); + } + + for (int i = 0; i < CONFIG_T::input_length*CONFIG_T::num_channels; ++i) + { +#if 0 + data_data_V[i].data[0] = lut[i].data[0]; +if(CONFIG_T::Output_Selection>1) + data_data_V[i].data[1] = lut[i].data[1]; +#else + data_data_V[i] = lut[i]; +#endif + phase_V[i]= i;//lut[i].data + lut[i].data; + } + + #else + assert((CONFIG_T::Phase_Increment==0 || CONFIG_T::Phase_Increment==2) && "Phase_Increment set error"); + ip_dds::in_config_pinc_poff config[CONFIG_T::input_length*CONFIG_T::num_channels]; + run_sim (config, data_data_V, phase_V); + #endif + } + + +}; +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_DDS_H + + diff --git a/vitis/v2021_2/hls_diff_apfixed.h b/vitis/v2021_2/hls_diff_apfixed.h new file mode 100755 index 00000000..e51b8c6b --- /dev/null +++ b/vitis/v2021_2/hls_diff_apfixed.h @@ -0,0 +1,308 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_DIFF_APFIXED_H_ +#define _X_HLS_DIFF_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" + +//1. fdim_fixed + /* + * ============================================ + * || x y || fdim_fixed(x,y) + * || (x-y) Normally || (x - y) + * || (x-y) overflow || max + * || x < y || 0 + * ============================================ + */ +template +ap_fixed fdim_fixed(ap_fixed x, ap_fixed y ) +{ + #pragma HLS PIPELINE II=1 + ap_fixed x_overf = 0; + ap_fixed xs = 0; + bool overf = 0; + + if(x > y) + { + x_overf = x - y; + overf = x_overf[W_-1]; + if(overf) { + for (int i = 0; i < W_-1; i++){ + #pragma HLS UNROLL + xs[i] = 1; + } + xs[W_-1] = 0; + } + else{ + x_overf[W_] = 0; + xs = x_overf; + } + } + return xs; +} +template +ap_ufixed fdim_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x > y){ xs = x - y; } + return xs; +} +template +ap_int fdim_fixed(ap_int x, ap_int y) +{ + ap_fixed xs = x; + ap_fixed ys = y; + return fdim_fixed(xs, ys); +} +template +ap_uint fdim_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x > y) { xs = x - y; } + return xs; +} + +//2. fmax_fixed + /* + * ============================================ + * || x y || fmax_fixed(x,y) + * || x >= y || x + * || x < y || y + * ============================================ + */ +template +ap_fixed fmax_fixed(ap_fixed x, ap_fixed y ) +{ + ap_fixed xs = 0; + if(x >= y) xs = x ; + else xs = y ; + return xs; +} +template +ap_ufixed fmax_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int fmax_fixed(ap_int x, ap_int y) +{ + ap_int xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} +template +ap_uint fmax_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} + +//3. fmin_fixed + /* + * ============================================ + * || x y || fmin_fixed(x,y) + * || x > y || y + * || x <= y || x + * ============================================ + */ +template +ap_fixed fmin_fixed(ap_fixed x, ap_fixed y ) +{ + ap_fixed xs = 0; + if(x <= y) xs = x ; + else xs = y ; + return xs; +} +template +ap_ufixed fmin_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int fmin_fixed(ap_int x, ap_int y) +{ + ap_int xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +template +ap_uint fmin_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} + +// TODO DEBUG +//4. maxmag_fixed + /* + * ============================================ + * || x y || maxmag_fixed(x,y) + * || max{|x|,|y|} overflow || max + * || |x| >= |y| || x + * || |x| < |y| || y + * ============================================ + */ +template +ap_fixed maxmag_fixed(ap_fixed x, ap_fixed y ) +{ + #pragma HLS PIPELINE II=1 + ap_fixed xm = -x; + ap_fixed ym = -y; + ap_fixed x_fabs = ( x[W_-1] ) ? xm : ap_fixed(x); + ap_fixed y_fabs = ( y[W_-1] ) ? ym : ap_fixed(y); + + ap_fixed xs_t = 0; + ap_fixed xs = 0; + if(x_fabs >= y_fabs) + { + xs_t = x_fabs ; + xs = x; + } + else{ + xs_t = y_fabs ; + xs = y; + } + //case overflow + if(xs_t[W_-1]) + { + for (int i = 0; i < W_-1; i++){ + #pragma HLS UNROLL + xs[i] = 1; + } + xs[W_-1] = 0; + } + + return xs; +} +template +ap_ufixed maxmag_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int maxmag_fixed(ap_int x, ap_int y) +{ + ap_fixed xs = x; + ap_fixed ys = y; + return maxmag_fixed(xs, ys); +} +template +ap_uint maxmag_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x >= y) xs = x; + else xs = y ; + return xs; +} + + +//5. minmag_fixed + /* + * ============================================ + * || x y || minmag_fixed(x,y) + * || min{|x|,|y|} overflow || max + * || |x| > |y| || y + * || |x| <= |y| || x + * ============================================ + */ +template +ap_fixed minmag_fixed(ap_fixed x, ap_fixed y ) +{ + #pragma HLS PIPELINE II=1 + ap_fixed xm = -x; + ap_fixed ym = -y; + ap_fixed x_fabs = ( x[W_-1] ) ? xm : ap_fixed(x); + ap_fixed y_fabs = ( y[W_-1] ) ? ym : ap_fixed(y); + + ap_fixed xs_t = 0; + ap_fixed xs = 0; + if(x_fabs <= y_fabs) + { + xs_t = x_fabs ; + xs = x; + } + else{ + xs_t = y_fabs ; + xs = y; + } + if(xs_t[W_-1]) + { + for (int i = 0; i < W_-1; i++){ + #pragma HLS UNROLL + xs[i] = 1; + } + xs[W_-1] = 0; + } + + return xs; +} +template +ap_ufixed minmag_fixed(ap_ufixed x, ap_ufixed y) +{ + ap_ufixed xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +template +ap_int minmag_fixed(ap_int x, ap_int y) +{ + ap_fixed xs = x; + ap_fixed ys = y; + return minmag_fixed(xs, ys); +} +template +ap_uint minmag_fixed(ap_uint x, ap_uint y) +{ + ap_uint xs = 0; + if(x <= y) xs = x; + else xs = y ; + return xs; +} +#endif + + diff --git a/vitis/v2021_2/hls_dsp.h b/vitis/v2021_2/hls_dsp.h new file mode 100755 index 00000000..f37fd0bf --- /dev/null +++ b/vitis/v2021_2/hls_dsp.h @@ -0,0 +1,54 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/* + * HLS DSP Library Header File + */ + +#ifndef HLS_DSP_H +#define HLS_DSP_H + +#ifndef __cplusplus +#error C++ is required to include this header file +#endif + +#include "hls/dsp/utils/hls_dsp_common_utils.h" +#include "hls/dsp/hls_awgn.h" +#include "hls/dsp/hls_convolution_encoder.h" +#include "hls/dsp/hls_nco.h" +#include "hls/dsp/hls_qam_demod.h" +#include "hls/dsp/hls_qam_mod.h" +#include "hls/dsp/hls_viterbi_decoder.h" + +#endif + + diff --git a/vitis/v2021_2/hls_erf_apfixed.h b/vitis/v2021_2/hls_erf_apfixed.h new file mode 100755 index 00000000..e236b4fa --- /dev/null +++ b/vitis/v2021_2/hls_erf_apfixed.h @@ -0,0 +1,686 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_ERF_APFIXED_H_ +#define _X_HLS_ERF_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_exp_apfixed.h" +#include "utils/x_hls_utils.h" + +namespace erf_erfc_fixed { + + namespace { + template class coeff { }; + + template <> class coeff { + //class coeff { + public: + static const double tiny; + static const double one_over_two; + static const double one; + static const double two; + static const double erx; + static const double efx; + static const double efx8; + static const double pp[5]; + static const double qq[6]; + static const double pa[7]; + static const double qa[7]; + static const double ra[8]; + static const double sa[9]; + static const double rb[7]; + static const double sb[8]; + }; + const double coeff::tiny = 1e-300; + const double coeff::one_over_two= 5.00000000000000000000e-01; /* 0x3FE00000, 0x00000000 */ + const double coeff::one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */ + const double coeff::two = 2.00000000000000000000e+00; /* 0x40000000, 0x00000000 */ + /* c = (float)0.84506291151 */ + const double coeff::erx = 8.45062911510467529297e-01; /* 0x3FEB0AC1, 0x60000000 */ + /* + * Coefficients for approximation to erf on [0,0.84375] + */ + const double coeff::efx = 1.28379167095512586316e-01; /* 0x3FC06EBA, 0x8214DB69 */ + const double coeff::efx8= 1.02703333676410069053e+00; /* 0x3FF06EBA, 0x8214DB69 */ + const double coeff::pp[] = + {1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */ + -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */ + -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */ + -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */ + -2.37630166566501626084e-05}; /* 0xBEF8EAD6, 0x120016AC */ + const double coeff::qq[] = + {0.0, 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */ + 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */ + 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */ + 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */ + -3.96022827877536812320e-06}; /* 0xBED09C43, 0x42A26120 */ + /* + * Coefficients for approximation to erf in [0.84375,1.25] + */ + const double coeff::pa[] = + {-2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */ + 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */ + -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */ + 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */ + -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */ + 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */ + -2.16637559486879084300e-03}; /* 0xBF61BF38, 0x0A96073F */ + const double coeff::qa[] = + {0.0, 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */ + 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */ + 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */ + 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */ + 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */ + 1.19844998467991074170e-02}; /* 0x3F888B54, 0x5735151D */ + /* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ + const double coeff::ra[] = + {-9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */ + -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */ + -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */ + -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */ + -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */ + -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */ + -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */ + -9.81432934416914548592e+00}; /* 0xC023A0EF, 0xC69AC25C */ + const double coeff::sa[] = + {0.0,1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */ + 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */ + 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */ + 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */ + 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */ + 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */ + 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */ + -6.04244152148580987438e-02}; /* 0xBFAEEFF2, 0xEE749A62 */ + /* + * Coefficients for approximation to erfc in [1/.35,28] + */ + const double coeff::rb[] = + {-9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */ + -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */ + -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */ + -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */ + -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */ + -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */ + -4.83519191608651397019e+02}; /* 0xC07E384E, 0x9BDC383F */ + const double coeff::sb[] = + {0.0,3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */ + 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */ + 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */ + 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */ + 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */ + 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */ + -2.24409524465858183362e+01}; /* 0xC03670E2, 0x42712D62 */ +#if 0 + template <> class coeff { + public: + static const float tiny; + static const float one_over_two; + static const float one; + static const float two; + static const float erx; + static const float efx; + static const float efx8; + static const float pp[5]; + static const float qq[6]; + static const float pa[7]; + static const float qa[7]; + static const float ra[8]; + static const float sa[9]; + static const float rb[7]; + static const float sb[8]; + }; + const float coeff::tiny = 1e-30; + const float coeff::one_over_two= 5.0000000000e-01; /* 0x3F000000 */ + const float coeff::one = 1.0000000000e+00; /* 0x3F800000 */ + const float coeff::two = 2.0000000000e+00; /* 0x40000000 */ + /* c = (float)0.84506291151 */ + const float coeff::erx = 8.4506291151e-01; /* 0x3f58560b */ + /* + * Coefficients for approximation to erf on [0,0.84375] + */ + const float coeff::efx = 1.2837916613e-01; /* 0x3e0375d4 */ + const float coeff::efx8= 1.0270333290e+00; /* 0x3f8375d4 */ + const float coeff::pp[] = + {1.2837916613e-01, /* 0x3e0375d4 */ + -3.2504209876e-01, /* 0xbea66beb */ + -2.8481749818e-02, /* 0xbce9528f */ + -5.7702702470e-03, /* 0xbbbd1489 */ + -2.3763017452e-05}; /* 0xb7c756b1 */ + const float coeff::qq[] = + {0.0, 3.9791721106e-01, /* 0x3ecbbbce */ + 6.5022252500e-02, /* 0x3d852a63 */ + 5.0813062117e-03, /* 0x3ba68116 */ + 1.3249473704e-04, /* 0x390aee49 */ + -3.9602282413e-06}; /* 0xb684e21a */ + /* + * Coefficients for approximation to erf in [0.84375,1.25] + */ + const float coeff::pa[] = + {-2.3621185683e-03, /* 0xbb1acdc6 */ + 4.1485610604e-01, /* 0x3ed46805 */ + -3.7220788002e-01, /* 0xbebe9208 */ + 3.1834661961e-01, /* 0x3ea2fe54 */ + -1.1089469492e-01, /* 0xbde31cc2 */ + 3.5478305072e-02, /* 0x3d1151b3 */ + -2.1663755178e-03}; /* 0xbb0df9c0 */ + const float coeff::qa[] = + {0.0, 1.0642088205e-01, /* 0x3dd9f331 */ + 5.4039794207e-01, /* 0x3f0a5785 */ + 7.1828655899e-02, /* 0x3d931ae7 */ + 1.2617121637e-01, /* 0x3e013307 */ + 1.3637083583e-02, /* 0x3c5f6e13 */ + 1.1984500103e-02}; /* 0x3c445aa3 */ + /* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ + const float coeff::ra[] = + {-9.8649440333e-03, /* 0xbc21a093 */ + -6.9385856390e-01, /* 0xbf31a0b7 */ + -1.0558626175e+01, /* 0xc128f022 */ + -6.2375331879e+01, /* 0xc2798057 */ + -1.6239666748e+02, /* 0xc322658c */ + -1.8460508728e+02, /* 0xc3389ae7 */ + -8.1287437439e+01, /* 0xc2a2932b */ + -9.8143291473e+00}; /* 0xc11d077e */ + const float coeff::sa[] = + {0.0, 1.9651271820e+01, /* 0x419d35ce */ + 1.3765776062e+02, /* 0x4309a863 */ + 4.3456588745e+02, /* 0x43d9486f */ + 6.4538726807e+02, /* 0x442158c9 */ + 4.2900814819e+02, /* 0x43d6810b */ + 1.0863500214e+02, /* 0x42d9451f */ + 6.5702495575e+00, /* 0x40d23f7c */ + -6.0424413532e-02}; /* 0xbd777f97 */ + /* + * Coefficients for approximation to erfc in [1/.35,28] + */ + const float coeff::rb[] = + {-9.8649431020e-03, /* 0xbc21a092 */ + -7.9928326607e-01, /* 0xbf4c9dd4 */ + -1.7757955551e+01, /* 0xc18e104b */ + -1.6063638306e+02, /* 0xc320a2ea */ + -6.3756646729e+02, /* 0xc41f6441 */ + -1.0250950928e+03, /* 0xc480230b */ + -4.8351919556e+02}; /* 0xc3f1c275 */ + const float coeff::sb[] = + {0.0, 3.0338060379e+01, /* 0x41f2b459 */ + 3.2579251099e+02, /* 0x43a2e571 */ + 1.5367296143e+03, /* 0x44c01759 */ + 3.1998581543e+03, /* 0x4547fdbb */ + 2.5530502930e+03, /* 0x451f90ce */ + 4.7452853394e+02, /* 0x43ed43a7 */ + -2.2440952301e+01}; /* 0xc1b38712 */ +#endif + template class erf_traits{ }; +#if 0 + template<> class erf_traits { + public: + static const uint32_t mask; + static const uint32_t segment[10]; + }; + const uint32_t erf_traits::mask = 0xfffff000; + const uint32_t erf_traits::segment[10] = + { + 0x7fffffff, + 0x7f800000, + 0x3f580000, + 0x31800000, + 0x04000000, + 0x3fa00000, + 0x40c00000, + 0x4036DB6E, + 31, + 0 + }; +#endif + template<> class erf_traits { + public: + static const uint64_t mask; + static const uint32_t segment[10]; + }; + const uint64_t erf_traits::mask = 0xffffffff00000000; + const uint32_t erf_traits::segment[10] = + { + 0x7fffffff, + 0x7ff00000, + 0x3feb0000, + 0x3e300000, + 0x00800000, + 0x3ff40000, + 0x40180000, + 0x4006DB6E, + 63, + 32 + }; + + template class erfc_traits{}; +#if 0 + template<> class erfc_traits{ + public: + static const uint32_t segment[11]; + }; + const uint32_t erfc_traits::segment[11] = + { + 0x7fffffff, + 0x7f800000, + 0x3f580000, + 0x23800000, + 0x3e800000, + 0x3fa00000, + 0x41e00000, + 0x4036DB6D, + 0x40c00000, + 31, + 0 + }; +#endif + template<> class erfc_traits{ + public: + static const uint32_t segment[11]; + }; + const uint32_t erfc_traits::segment[11] = + { + 0x7fffffff, + 0x7ff00000, + 0x3feb0000, + 0x3c700000, + 0x3fd00000, + 0x3ff40000, + 0x403c0000, + 0x4006DB6D, + 0x40180000, + 63, + 32 + }; + } // anonymous namespace +// + +/* erf_fixed(x) or erfc_fixed(x) :Input and Output is same width */ +//1. erf_fixed + /* + *erf(0) = 0 + *erf(2) ~ 1 + *erf(-2) ~ 1 + *erf(+infinity) = 1 but in std and hls =0 + */ + /* + * ============================================ + * x + * 2 |\ + * erf(x) = --------- | exp(-t*t)dt + * sqrt(pi) \| + * 0 + * ============================================ + */ +template +ap_fixed erf(ap_fixed x_fixed ) +{ + int F_ = W_ - I_; + + if (I_>33) return 0; + else if (F_>32) return 0; + + double x = x_fixed.to_double(); + int32_t hx; + uint32_t ix; + double R,S,P,Q,s,y,z,r; + //GET_HIGH_WORD(hx,x); + fp_struct fp_abs(x); + fp_abs.sign=0; + fp_struct fp_x(x); + ap_uint<32> tmp = fp_x.data()(erf_traits::segment[8],erf_traits::segment[9]); + hx = tmp.to_int(); + ix = hx & erf_traits::segment[0]; + + #if 0 + ///if(FP_SUBNORMAL == generic_fpclassify(x)) { + /// return 0; + ///} + #endif + if(fp_x.exp == 0x0 && fp_x.sign!= 0x0){ + return 0; + } + + if(ix>=erf_traits::segment[1]) { /* erf(nan)=nan */ + //i = ((uint32_t)hx>>31)<<1; + if(hx>0) + return ap_fixed((double)1.0 +coeff::one/x); /* erf(+-inf)=+-1 */ + else + return ap_fixed(coeff::one/x-(double)1.0); + } + + if(ix < erf_traits::segment[2]) { /* |x|<0.84375 */ + double r1,r2,s1,s2,s3,z2,z4; + if(ix < erf_traits::segment[3]) { /* |x|<2**-28 */ + if (ix < erf_traits::segment[2]) + return ap_fixed(((double)0.125)*((double)8.0*x+coeff::efx8*x)); /*avoid underflow */ + return ap_fixed(x + coeff::efx*x); + } + z = x*x; +#ifdef DO_NOT_USE_THIS + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = coeff::one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); +#else + r1 = coeff::pp[0]+z*coeff::pp[1]; z2=z*z; + r2 = coeff::pp[2]+z*coeff::pp[3]; z4=z2*z2; + s1 = coeff::one+z* coeff::qq[1]; + s2 = coeff::qq[2]+z*coeff::qq[3]; + s3 = coeff::qq[4]+z*coeff::qq[5]; + r = r1 + z2*r2 + z4*coeff::pp[4]; + s = s1 + z2*s2 + z4*s3; +#endif + y = r/s; + return ap_fixed(x + x*y); + } + if(ix < erf_traits::segment[5]) { /* 0.84375 <= |x| < 1.25 */ + double s2,s4,s6,P1,P2,P3,P4,Q1,Q2,Q3,Q4; + //s = generic_fabs_d(x)-coeff::one; + s = fp_abs.to_ieee()-coeff::one; +#ifdef DO_NOT_USE_THIS + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + Q = coeff::one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); +#else + P1 = coeff::pa[0]+s*coeff::pa[1]; s2=s*s; + Q1 = coeff::one+s*coeff::qa[1]; s4=s2*s2; + P2 = coeff::pa[2]+s*coeff::pa[3]; s6=s4*s2; + Q2 = coeff::qa[2]+s*coeff::qa[3]; + P3 = coeff::pa[4]+s*coeff::pa[5]; + Q3 = coeff::qa[4]+s*coeff::qa[5]; + P4 = coeff::pa[6]; + Q4 = coeff::qa[6]; + P = P1 + s2*P2 + s4*P3 + s6*P4; + Q = Q1 + s2*Q2 + s4*Q3 + s6*Q4; +#endif + if(hx>=0) return ap_fixed(coeff::erx + P/Q); + else return ap_fixed(-coeff::erx - P/Q); + } + if (ix >= erf_traits::segment[6]) { /* inf>|x|>=6 */ + if(hx>=0) return ap_fixed(coeff::one-coeff::tiny); + else return ap_fixed(coeff::tiny-coeff::one); + } + x = fp_abs.to_ieee(); + s = coeff::one/(x*x); + if(ix< erf_traits::segment[7]) { /* |x| < 1/0.35 */ +#ifdef DO_NOT_USE_THIS + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))); + S=coeff::one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))); +#else + double R1,R2,R3,R4,S1,S2,S3,S4,s2,s4,s6,s8; + R1 = coeff::ra[0]+s*coeff::ra[1];s2 = s*s; + S1 = coeff::one+ s*coeff::sa[1]; s4 = s2*s2; + R2 = coeff::ra[2]+s*coeff::ra[3];s6 = s4*s2; + S2 = coeff::sa[2]+s*coeff::sa[3];s8 = s4*s4; + R3 = coeff::ra[4]+s*coeff::ra[5]; + S3 = coeff::sa[4]+s*coeff::sa[5]; + R4 = coeff::ra[6]+s*coeff::ra[7]; + S4 = coeff::sa[6]+s*coeff::sa[7]; + R = R1 + s2*R2 + s4*R3 + s6*R4; + S = S1 + s2*S2 + s4*S3 + s6*S4 + s8*coeff::sa[8]; +#endif + } else { /* |x| >= 1/0.35 */ +#ifdef DO_NOT_USE_THIS + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))); + S=coeff::one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))); +#else + double R1,R2,R3,S1,S2,S3,S4,s2,s4,s6; + R1 = coeff::rb[0]+s*coeff::rb[1];s2 = s*s; + S1 = coeff::one+ s*coeff::sb[1]; s4 = s2*s2; + R2 = coeff::rb[2]+s*coeff::rb[3];s6 = s4*s2; + S2 = coeff::sb[2]+s*coeff::sb[3]; + R3 = coeff::rb[4]+s*coeff::rb[5]; + S3 = coeff::sb[4]+s*coeff::sb[5]; + S4 = coeff::sb[6]+s*coeff::sb[7]; + R = R1 + s2*R2 + s4*R3 + s6*coeff::rb[6]; + S = S1 + s2*S2 + s4*S3 + s6*S4; +#endif + } + z = x; + //SET_LOW_WORD(z,0); + fp_struct fp_z(z); + ap_uint::Value> data = fp_z.data() & erf_traits::mask; + fp_struct fp_z_new(data); + z = fp_z_new.to_ieee(); + //r = __ieee754_exp(-z*z-0.5625)*__ieee754_exp((z-x)*(z+x)+R/S); + //r = exp_reduce_::exp(-z*z-(double)0.5625)*exp_reduce_::exp((z-x)*(z+x)+R/S); + ap_fixed r_fixed = exp_reduce::exp(ap_fixed(-z*z-(double)0.5625))*exp_reduce::exp(ap_fixed((z-x)*(z+x)+R/S)); + r = r_fixed.to_double(); + //r = exp_reduce_::exp(-x*x-(T)0.5625+R/S); // also work + if(hx>=0) return ap_fixed(coeff::one-r/x); + else return ap_fixed(r/x-coeff::one); + } + + +template +ap_ufixed erf(ap_ufixed x) { + ap_fixed xs = x; + return erf(xs); +} + +template +ap_int erf(ap_int x) { + ap_fixed xs = x; + return erf(xs); +} + +template +ap_uint erf(ap_uint x) { + ap_fixed xs = x; + return erf(xs); +} + + +//2. erfc_fixed + /* + * ============================================ + * erfc(x) = 1 - erf(x) + * ============================================ + */ +template +ap_fixed erfc(ap_fixed x_fixed) +{ + #pragma HLS PIPELINE II=1 + int F_ = W_ - I_; + + if (I_>33) return 0; + else if (F_>32) return 0; + + double x = x_fixed.to_double(); + int32_t hx; + uint32_t ix; + double R,S,P,Q,s,y,z,r; + //GET_HIGH_WORD(hx,x); + fp_struct fp_abs(x); + fp_abs.sign=0; + fp_struct fp_x(x); + ap_uint<32> tmp = fp_x.data()(erfc_traits::segment[9],erfc_traits::segment[10]); + hx = tmp.to_int(); + ix = hx & erfc_traits::segment[0]; + if(ix>=erfc_traits::segment[1]) { /* erfc(nan)=nan */ + /* erfc(+-inf)=0,2 */ + if(hx>0) + return ap_fixed(coeff::one/x); + else + return ap_fixed(coeff::two + coeff::one/x); + //return (T)(((uint32_t)hx>>31)<<1)+coeff::one/x; + } + + if(ix < erfc_traits::segment[2]) { /* |x|<0.84375 */ + double r1,r2,s1,s2,s3,z2,z4; + if(ix < erfc_traits::segment[3]) /* |x|<2**-56 */ + return ap_fixed(coeff::one-x); + z = x*x; +#ifdef DO_NOT_USE_THIS + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = coeff::one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); +#else + r1 = coeff::pp[0]+z*coeff::pp[1]; z2=z*z; + r2 = coeff::pp[2]+z*coeff::pp[3]; z4=z2*z2; + s1 = coeff::one+z*coeff::qq[1]; + s2 = coeff::qq[2]+z*coeff::qq[3]; + s3 = coeff::qq[4]+z*coeff::qq[5]; + r = r1 + z2*r2 + z4*coeff::pp[4]; + s = s1 + z2*s2 + z4*s3; +#endif + y = r/s; + if(ix < erfc_traits::segment[4]) { /* x<1/4 */ + return ap_fixed(coeff::one-(x+x*y)); + } else { + r = x*y; + r += (x-coeff::one_over_two); + return ap_fixed(coeff::one_over_two - r) ; + } + } + if(ix < erfc_traits::segment[5]) { /* 0.84375 <= |x| < 1.25 */ + double s2,s4,s6,P1,P2,P3,P4,Q1,Q2,Q3,Q4; + s =fp_abs.to_ieee()-coeff::one; +#ifdef DO_NOT_USE_THIS + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + Q = coeff::one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); +#else + P1 = coeff::pa[0]+s*coeff::pa[1]; s2=s*s; + Q1 = coeff::one+s*coeff::qa[1]; s4=s2*s2; + P2 = coeff::pa[2]+s*coeff::pa[3]; s6=s4*s2; + Q2 = coeff::qa[2]+s*coeff::qa[3]; + P3 = coeff::pa[4]+s*coeff::pa[5]; + Q3 = coeff::qa[4]+s*coeff::qa[5]; + P4 = coeff::pa[6]; + Q4 = coeff::qa[6]; + P = P1 + s2*P2 + s4*P3 + s6*P4; + Q = Q1 + s2*Q2 + s4*Q3 + s6*Q4; +#endif + if(hx>=0) { + z = coeff::one-coeff::erx; + return ap_fixed(z - P/Q); + } else { + z = coeff::erx+P/Q; return ap_fixed(coeff::one+z); + } + } + if (ix < erfc_traits::segment[6]) { /* |x|<28 */ + x = fp_abs.to_ieee(); + s = coeff::one/(x*x); + if(ix< erfc_traits::segment[7]) { /* |x| < 1/.35 ~ 2.857143*/ +#ifdef DO_NOT_USE_THIS + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))); + S=coeff::one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))); +#else + double R1,R2,R3,R4,S1,S2,S3,S4,s2,s4,s6,s8; + R1 = coeff::ra[0]+s*coeff::ra[1];s2 = s*s; + S1 = coeff::one+s*coeff::sa[1]; s4 = s2*s2; + R2 = coeff::ra[2]+s*coeff::ra[3];s6 = s4*s2; + S2 = coeff::sa[2]+s*coeff::sa[3];s8 = s4*s4; + R3 = coeff::ra[4]+s*coeff::ra[5]; + S3 = coeff::sa[4]+s*coeff::sa[5]; + R4 = coeff::ra[6]+s*coeff::ra[7]; + S4 = coeff::sa[6]+s*coeff::sa[7]; + R = R1 + s2*R2 + s4*R3 + s6*R4; + S = S1 + s2*S2 + s4*S3 + s6*S4 + s8*coeff::sa[8]; +#endif + } else { /* |x| >= 1/.35 ~ 2.857143 */ + double R1,R2,R3,S1,S2,S3,S4,s2,s4,s6; + if(hx<0&&ix>=erfc_traits::segment[8]) return ap_fixed(coeff::two-coeff::tiny);/* x < -6 */ +#ifdef DO_NOT_USE_THIS + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))); + S=coeff::one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))); +#else + R1 = coeff::rb[0]+s*coeff::rb[1];s2 = s*s; + S1 = coeff::one+s*coeff::sb[1]; s4 = s2*s2; + R2 = coeff::rb[2]+s*coeff::rb[3];s6 = s4*s2; + S2 = coeff::sb[2]+s*coeff::sb[3]; + R3 = coeff::rb[4]+s*coeff::rb[5]; + S3 = coeff::sb[4]+s*coeff::sb[5]; + S4 = coeff::sb[6]+s*coeff::sb[7]; + R = R1 + s2*R2 + s4*R3 + s6*coeff::rb[6]; + S = S1 + s2*S2 + s4*S3 + s6*S4; +#endif + } + z = x; + //SET_LOW_WORD(z,0); + fp_struct fp_z(z); + ap_uint::Value> data = fp_z.data() & erf_traits::mask; + fp_struct fp_z_new(data); + z = fp_z_new.to_ieee(); + //r = __ieee754_exp(-z*z-0.5625)* + // __ieee754_exp((z-x)*(z+x)+R/S); + ap_fixed r_fixed = exp_reduce::exp((ap_fixed)(-z*z-(double)0.5625))*exp_reduce::exp((ap_fixed)((z-x)*(z+x)+R/S)); + double r = r_fixed.to_double(); + double r_x = r/x; + if(hx>0) { + #if 0 + if(FP_SUBNORMAL == generic_fpclassify(r_x)) { + return 0; + } + #endif + if(fp_x.exp == 0x0 && fp_x.sign!= 0x0){ + return 0; + } + return ap_fixed(r_x); + } else + return ap_fixed(coeff::two-r_x); + } else { + if(hx>0) return ap_fixed(coeff::tiny*coeff::tiny); + else return ap_fixed(coeff::two-coeff::tiny); + } + +} +template +ap_ufixed erfc(ap_ufixed x) { + ap_fixed xs = x; + return erfc(xs); +} + +template +ap_int erfc(ap_int x) { + ap_fixed xs = x; + return erfc(xs); +} + +template +ap_uint erfc(ap_uint x) { + ap_fixed xs = x; + return erfc(xs); +} + +}//erf_erfc_fixed + +#endif + + diff --git a/vitis/v2021_2/hls_exp_apfixed.h b/vitis/v2021_2/hls_exp_apfixed.h new file mode 100755 index 00000000..c6812abd --- /dev/null +++ b/vitis/v2021_2/hls_exp_apfixed.h @@ -0,0 +1,3473 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_EXP_APFIXED_H_ +#define _X_HLS_EXP_APFIXED_H_ +#include "ap_fixed.h" + +namespace exp_reduce { +/* exp(x):Input and Output is same width */ +template +ap_fixed exp(ap_fixed x) +{ +#pragma HLS pipeline + + int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + // I_s_ is the number of integer bits we need to calculate + // I_s_ = ceil( ln2 * max ( I_-1 , F_ ) ) + // I_s_ = [1..6] + int I_s_; + int M_ = (I_-1>F_) ? (I_-1) : F_; + if (M_==1) I_s_ = 1; + else if (M_==2) I_s_ = 2; + else if (M_<6) I_s_ = 3; + else if (M_<12) I_s_ = 4; + else if (M_<24) I_s_ = 5; + else I_s_ = 6; + + ap_fixed r; + if (I_s_==1) { // I_s_ = 1, M_ = 1, I_ <= 2, F_ <= 1, W <= 3 + ap_fixed<3,2> x_l = x; + ap_ufixed<2,1> y = 0; + if (x_l[2]!=x_l[1]) { // overflow + if (!x_l[2]) y = "0x1.8p0"; + } else { + if (!x_l[2]) y[1] = 1; + if (x_l[2]|x_l[0]) y[0] = 1; + } + if (I_<2) { // overflow + if (y[1]) { + y[1] = 0; + y[0] = 1; + } + } + r = y; + } else if (I_s_==2) { // I_s_ = 2, M_ = 2, I_ <= 3, F_ <= 2, W <= 5 + ap_fixed<5,3> x_l = x; + ap_ufixed<4,2> y = 0; + ap_fixed<2,2> x_l_int; + x_l_int(1,0) = x_l(3,2); + ap_ufixed<2,0> x_l_fract; + x_l_fract(1,0) = x_l(1,0); + //if ((x_l[4]!=x_l[3])||(x_l>="0x1.8p0")) { // overflow + if ((x_l[4]!=x_l[3])||((x_l_int==1)&&(x_l_fract>=ap_ufixed<2,0>("0x0.8p0")))) { // overflow + if (!x_l[4]) y = "0x3.cp0"; + } else { + if (!x_l[4]&((x_l[1]&x_l[0])|x_l[2])) y[3] = 1; + if (!x_l[4]&((!x_l[2]&!x_l[0])|(!x_l[1]&x_l[0]))) y[2] = 1; + if ((!x_l[4]&x_l[1]&!x_l[0])|(!x_l[4]&x_l[2])|(x_l[2]&x_l[0])|(x_l[2]&x_l[1])) y[1] = 1; + if ((!x_l[2]&!x_l[1]&x_l[0])|(!x_l[2]&x_l[1]&!x_l[0])|(x_l[2]&!x_l[1]&!x_l[0])|(x_l[2]&x_l[1]&x_l[0])|(x_l[4]&!x_l[3])) y[0] = 1; + } + if (I_<3) { // overflow + bool overf = 0; + for (int j = 3; j >= I_+1; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 3; j >= I_+1; j--){ + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_; j >= 0; j--){ + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==3) { // I_s_ = 3, M_ = 3..5, I_ <= 6, F_ <= 5, W <= 11 + ap_fixed<11,6> x_l = x; + ap_ufixed<10,5> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(7,5); + ap_ufixed<5,0> x_l_fract; + x_l_fract(4,0) = x_l(4,0); + //if ((x_l[10]!=x_l[9])||(x_l[10]!=x_l[8])||(x_l[10]!=x_l[7])||(x_l>"0x3.7p0")) { // overflow + if ((x_l[10]!=x_l[9])||(x_l[10]!=x_l[8])||(x_l[10]!=x_l[7])||((x_l_int==3)&&(x_l_fract>ap_fixed<5,0>("0x0.7p0")))) { // overflow + if (!x_l[10]) y = "0x1f.f8p0"; + } else { +// ap_uint<6> x_msb_ind; +// x_msb_ind[5] = x_l[10]; +// x_msb_ind(4,0) = x_l(6,2); +// ap_ufixed<2,-3> x_lsb = x_l; + + ap_uint<4> x_msb_ind; + x_msb_ind[3] = x_l[10]; + x_msb_ind(2,0) = x_l(6,4); + ap_uint<4> x_lsb_ind; + x_lsb_ind(3,0) = x_l(3,0); + ap_ufixed<4,-1> x_lsb = x_l; + +// const ap_ufixed<11,5> exp_x_msb_table[64] = { +//// 0, 0, 0, 0, 29.21875, 25.796875, 22.765625, 20.078125, +//// 17.71875, 15.640625, 13.796875, 12.1875, 10.75, 9.484375, 8.375, 7.390625, +//// 6.515625, 5.75, 5.078125, 4.484375, 3.953125, 3.484375, 3.078125, 2.71875, +//// 2.40625, 2.109375, 1.875, 1.65625, 1.453125, 1.28125, 1.140625, 1, +//// 0.015625, 0.015625, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.046875, +//// 0.046875, 0.0625, 0.0625, 0.078125, 0.078125, 0.09375, 0.109375, 0.125, +//// 0.140625, 0.15625, 0.171875, 0.203125, 0.21875, 0.25, 0.28125, 0.328125, +//// 0.375, 0.421875, 0.46875, 0.53125, 0.609375, 0.6875, 0.78125, 0.875, +// 1, 1.140625, 1.28125, 1.453125, 1.65625, 1.875, 2.109375, 2.40625, +// 2.71875, 3.078125, 3.484375, 3.953125, 4.484375, 5.078125, 5.75, 6.515625, +// 7.390625, 8.375, 9.484375, 10.75, 12.1875, 13.796875, 15.640625, 17.71875, +// 20.078125, 22.765625, 25.796875, 29.21875, 33.109375, 37.53125, 42.515625, 48.1875, +// 0.015625, 0.015625, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.046875, +// 0.046875, 0.0625, 0.0625, 0.078125, 0.078125, 0.09375, 0.109375, 0.125, +// 0.140625, 0.15625, 0.171875, 0.203125, 0.21875, 0.25, 0.28125, 0.328125, +// 0.375, 0.421875, 0.46875, 0.53125, 0.609375, 0.6875, 0.78125, 0.875, +// }; + + const static ap_ufixed<12,0> exp_x_lsb_m_1_table[16] = { + "0x0.0p0", "0x0.082p0", "0x0.108p0", "0x0.193p0", "0x0.221p0", "0x0.2b5p0", "0x0.34dp0", "0x0.3eap0", + "0x0.48bp0", "0x0.532p0", "0x0.5dfp0", "0x0.69p0", "0x0.748p0", "0x0.805p0", "0x0.8c8p0", "0x0.991p0", + }; + ap_ufixed<12, 0> exp_x_lsb_m_1 = exp_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<12,5> exp_x_msb_table[16] = { + "0x1.0p0", "0x1.a6p0", "0x2.b8p0", "0x4.7cp0", "0x7.64p0", "0xc.2ep0", "0x14.16p0", "0x21.1ep0", + "0x0.04p0", "0x0.08p0", "0x0.0cp0", "0x0.16p0", "0x0.22p0", "0x0.3ap0", "0x0.5ep0", "0x0.9cp0", + }; + ap_ufixed<12,5> exp_x_msb = exp_x_msb_table[x_msb_ind]; + ap_ufixed<24,5> y_lo = exp_x_msb * exp_x_lsb_m_1; + ap_ufixed<12,5> y_lo_s = y_lo; + ap_ufixed<12,5> y_l = y_lo_s + exp_x_msb; + y = y_l; + } + if (I_<6) { // overflow + bool overf = 0; + for (int j = 9; j >= I_+4; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 9; j >= I_+4; j--){ + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+3; j >= 0; j--){ + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==4) { // I_s_ = 4, M_ = 6..11, I_ <= 12, F_ <= 11, W <= 23 + ap_fixed<23,12> x_l = x; + ap_ufixed<22,11> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(14,11); + ap_ufixed<11,0> x_l_fract; + x_l_fract(10,0) = x_l(10,0); + bool overf = 0; + for (int j = 14; j < 22; j++){ + #pragma HLS unroll + if (x_l[22]!=x_l[j]) + overf = 1; + } + //if (overf||(x_l>"0x7.ap0")) { // overflow + if (overf||((x_l_int==7)&&(x_l_fract>ap_ufixed<11,0>("0x0.ap0")))) { // overflow + if (!x_l[22]) { + for (int j = 0; j < 22; j++){ + #pragma HLS unroll + y[j] = 1; + } + } + } else { + ap_uint<5> x_msb_ind_1; + x_msb_ind_1[4] = x_l[22]; + x_msb_ind_1(3,0) = x_l(13,10); + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(9,5); + ap_ufixed<5,-1> x_msb_2 = x_l; + ap_uint<5> x_lsb_ind; + x_lsb_ind(4,0) = x_l(4,0); + //ap_ufixed<5,-6> x_lsb = x_l; + + const static ap_ufixed<11,-13> f_x_lsb_table[32] = { + "0x0.0p0", "0x0.000002p0", "0x0.000008p0", "0x0.000012p0", + "0x0.00002p0", "0x0.000032p0", "0x0.000048p0", "0x0.000062p0", + "0x0.00008p0", "0x0.0000a2p0", "0x0.0000c9p0", "0x0.0000f3p0", + "0x0.000121p0", "0x0.000153p0", "0x0.000189p0", "0x0.0001c3p0", + "0x0.000202p0", "0x0.000244p0", "0x0.00028ap0", "0x0.0002d4p0", + "0x0.000323p0", "0x0.000375p0", "0x0.0003ccp0", "0x0.000426p0", + "0x0.000485p0", "0x0.0004e7p0", "0x0.00054ep0", "0x0.0005b9p0", + "0x0.000627p0", "0x0.00069ap0", "0x0.000711p0", "0x0.00078cp0", + }; + ap_ufixed<11,-13> f_x_lsb = f_x_lsb_table[x_lsb_ind]; + ap_ufixed<18, -6> exp_x_lsb_m_1 = 0; + exp_x_lsb_m_1(17,13) = x_lsb_ind(4,0); + exp_x_lsb_m_1(10,0) = f_x_lsb(10,0); + + const static ap_ufixed<25,0> exp_x_msb_2_m_1_table[32] = { + "0x0.0000000p0", "0x0.04080a8p0", "0x0.0820560p0", "0x0.0c49238p0", + "0x0.1082b58p0", "0x0.14cd500p0", "0x0.1929370p0", "0x0.1d96b10p0", + "0x0.2216048p0", "0x0.26a7790p0", "0x0.2b4b588p0", "0x0.3001ed0p0", + "0x0.34cb818p0", "0x0.39a8628p0", "0x0.3e98de8p0", "0x0.439d440p0", + "0x0.48b5e40p0", "0x0.4de30f0p0", "0x0.5325180p0", "0x0.587c540p0", + "0x0.5de9178p0", "0x0.636bb98p0", "0x0.6904930p0", "0x0.6eb3fc8p0", + "0x0.747a510p0", "0x0.7a57ee0p0", "0x0.804d300p0", "0x0.865a778p0", + "0x0.8c80248p0", "0x0.92be998p0", "0x0.99163b0p0", "0x0.9f876e8p0", + }; + ap_ufixed<25, 0> exp_x_msb_2_m_1 = exp_x_msb_2_m_1_table[x_msb_ind_2]; + + ap_ufixed<43,-6> f_x_msb_2_lsb = exp_x_msb_2_m_1 * exp_x_lsb_m_1; + ap_ufixed<19,-6> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<25, 0> exp_x_msb_2_lsb_m_1 = f_x_msb_2_lsb_s + exp_x_lsb_m_1 + exp_x_msb_2_m_1; + + const static ap_ufixed<25,11> exp_x_msb_1_table[32] = { + "0x1.0000p0", "0x1.a614p0", "0x2.b7e0p0", "0x4.7b50p0", + "0x7.6398p0", "0xc.2eb8p0", "0x14.15e4p0", "0x21.1d90p0", + "0x36.9920p0", "0x5a.0464p0", "0x94.69c4p0", "0xf4.b124p0", + "0x193.6dc4p0", "0x299.2444p0", "0x448.a218p0", "0x710.0adcp0", + "0x0.0014p0", "0x0.0024p0", "0x0.003cp0", "0x0.0064p0", + "0x0.00a4p0", "0x0.010cp0", "0x0.01b8p0", "0x0.02d8p0", + "0x0.04b0p0", "0x0.07bcp0", "0x0.0cc0p0", "0x0.1504p0", + "0x0.22a4p0", "0x0.3920p0", "0x0.5e2cp0", "0x0.9b44p0", + }; + ap_ufixed<25,11> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<50,11> y_lo = exp_x_msb_1 * exp_x_msb_2_lsb_m_1; + ap_ufixed<25,11> y_lo_s = y_lo; + ap_ufixed<25,11> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + if (I_<12) { // overflow + bool overf = 0; + for (int j = 21; j >= I_+10; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 21; j >= I_+10; j--) { + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+9; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==5) { // I_s_ = 5, M_ = 12..23, I_ <= 24, F_ <= 23, W <= 47 + ap_fixed<47,24> x_l = x; + ap_ufixed<46,23> y = 0; + ap_fixed<5,5> x_l_int; + x_l_int(4,0) = x_l(27,23); + ap_ufixed<23,0> x_l_fract; + x_l_fract(22,0) = x_l(22,0); + bool overf = 0; + for (int j = 27; j < 46; j++){ + #pragma HLS unroll + if (x_l[46]!=x_l[j]) + overf = 1; + } + //if (overf||(x_l>="0xf.f14028p0")) { // overflow + if (overf||((x_l_int==15)&&(x_l_fract>=ap_ufixed<23,0>("0x0.f14028p0")))) { // overflow + if (!x_l[46]) { + for (int j = 0; j < 46; j++) { + #pragma HLS unroll + y[j] = 1; + } + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[46]; + x_msb_ind_1(6,0) = x_l(26,20); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(19,12); + ap_uint<5> x_msb_ind_3; + x_msb_ind_3(4,0) = x_l(11,7); + ap_uint<3> x_msb_ind_4; + x_msb_ind_4(2,0) = x_l(6,4); + ap_uint<4> x_lsb_ind; + x_lsb_ind(3,0) = x_l(3,0); + + ap_ufixed<8, -3> x_msb_2 = x_l; + ap_ufixed<5,-11> x_msb_3 = x_l; + ap_ufixed<3,-16> x_msb_4 = x_l; + ap_ufixed<4,-19> x_lsb = x_l; + + const static ap_ufixed< 6,-33> f_x_msb_4_h_table[8] = { +"0x0.0000000000p0", "0x0.0000000002p0", "0x0.0000000008p0", "0x0.0000000012p0", +"0x0.0000000020p0", "0x0.0000000032p0", "0x0.0000000048p0", "0x0.0000000062p0", + }; + const static ap_ufixed< 7,-51> f_x_msb_4_l_table[8] = { +"0x0.000000000000000p0", "0x0.000000000000000p0", "0x0.00000000000000cp0", "0x0.000000000000024p0", +"0x0.000000000000054p0", "0x0.0000000000000a8p0", "0x0.000000000000120p0", "0x0.0000000000001c8p0", + }; + ap_ufixed< 6,-33> f_x_msb_4_h = f_x_msb_4_h_table[x_msb_ind_4]; + ap_ufixed< 7,-51> f_x_msb_4_l = f_x_msb_4_l_table[x_msb_ind_4]; + + const static ap_ufixed< 8,-39> f_x_lsb_table[16] = { +"0x0.000000000000p0", "0x0.000000000002p0", "0x0.000000000008p0", "0x0.000000000012p0", +"0x0.000000000020p0", "0x0.000000000032p0", "0x0.000000000048p0", "0x0.000000000062p0", +"0x0.000000000080p0", "0x0.0000000000a2p0", "0x0.0000000000c8p0", "0x0.0000000000f2p0", +"0x0.000000000120p0", "0x0.000000000152p0", "0x0.000000000188p0", "0x0.0000000001c2p0", + }; + ap_ufixed< 8,-39> f_x_lsb = f_x_lsb_table[x_lsb_ind]; + + ap_ufixed< 7,-35> f_x_msb_4_lsb = x_msb_4 * x_lsb; + + ap_ufixed<10,-32> exp_x_msb_4_lsb_m_1_m = 0; + exp_x_msb_4_lsb_m_1_m(8,3) = f_x_msb_4_h(5,0); + exp_x_msb_4_lsb_m_1_m(2,0) = f_x_lsb(7,5); + exp_x_msb_4_lsb_m_1_m = exp_x_msb_4_lsb_m_1_m + f_x_msb_4_lsb; + + ap_ufixed<42,-16> exp_x_msb_4_lsb_m_1 = 0; + exp_x_msb_4_lsb_m_1(41,35) = x_l(6,0); + exp_x_msb_4_lsb_m_1(25,16) = exp_x_msb_4_lsb_m_1_m(9,0); + exp_x_msb_4_lsb_m_1(15,11) = f_x_lsb(4,0); + exp_x_msb_4_lsb_m_1( 6, 0) = f_x_msb_4_l(6,0); + + + const static ap_ufixed<32,-23> f_x_msb_3_table[32] = { +"0x0.00000000000000p0", "0x0.0000000080002ap0", "0x0.00000002000156p0", "0x0.00000004800480p0", +"0x0.00000008000aaap0", "0x0.0000000c8014d6p0", "0x0.00000012002400p0", "0x0.0000001880392cp0", +"0x0.00000020005556p0", "0x0.00000028807982p0", "0x0.0000003200a6acp0", "0x0.0000003c80ddd8p0", +"0x0.00000048012004p0", "0x0.00000054816e30p0", "0x0.0000006201c95cp0", "0x0.00000070823288p0", +"0x0.0000008002aab6p0", "0x0.000000908332e2p0", "0x0.000000a203cc12p0", "0x0.000000b4847740p0", +"0x0.000000c8053570p0", "0x0.000000dc8607a0p0", "0x0.000000f206eed0p0", "0x0.0000010887ec02p0", +"0x0.00000120090036p0", "0x0.000001388a2c6ap0", "0x0.000001520b71a0p0", "0x0.0000016c8cd0d6p0", +"0x0.000001880e4b0ep0", "0x0.000001a48fe148p0", "0x0.000001c2119484p0", "0x0.000001e09365c0p0", + }; + + ap_ufixed<32,-23> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<44,-11> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(43,39) = x_msb_3(4,0); + exp_x_msb_3_m_1(31, 0) = f_x_msb_3(31,0); + + ap_ufixed<86,-27> f_x_msb_3_4_lsb = exp_x_msb_3_m_1 * exp_x_msb_4_lsb_m_1; + ap_ufixed<31,-27> f_x_msb_3_4_lsb_s = f_x_msb_3_4_lsb; + ap_ufixed<48,-10> exp_x_msb_3_4_lsb_m_1 = f_x_msb_3_4_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_lsb_m_1; + + + const static ap_ufixed<46,-6> f_x_msb_2_table[256] = { +"0x0", "0x0.0000020015560p0", "0x0.00000800AAB55p0", "0x0.0000120240360p0", +"0x0.0000200556001p0", "0x0.0000320A6C4B8p0", "0x0.0000481203608p0", "0x0.0000621C9B971p0", +"0x0.0000802AB5577p0", "0x0.0000A23CD119Dp0", "0x0.0000C8536F668p0", "0x0.0000F26F10D5Dp0", +"0x0.0001209036103p0", "0x0.000152B75FCE3p0", "0x0.000188E50ED86p0", "0x0.0001C319C4077p0", +"0x0.0002015600445p0", "0x0.0002439A4487Ep0", "0x0.000289E711DB3p0", "0x0.0002D43CE9577p0", +"0x0.0003229C4C260p0", "0x0.00037505BB805p0", "0x0.0003CB79B8B01p0", "0x0.000425F8C50F2p0", +"0x0.0004848362076p0", "0x0.0004E71A11131p0", "0x0.00054DBD53BC8p0", "0x0.0005B86DAB9E3p0", +"0x0.0006272B9A630p0", "0x0.000699F7A1C5Dp0", "0x0.000710D24391Ep0", "0x0.00078BBC01A29p0", +"0x0.00080AB55DE39p0", "0x0.00088DBEDA50Bp0", "0x0.000914D8F8F63p0", "0x0.0009A0043BF07p0", +"0x0.000A2F41256C2p0", "0x0.000AC29037A63p0", "0x0.000B59F1F4EBDp0", "0x0.000BF566DF9AAp0", +"0x0.000C94EF7A206p0", "0x0.000D388C46FB4p0", "0x0.000DE03DC8B9Bp0", "0x0.000E8C0481FA7p0", +"0x0.000F3BE0F56CAp0", "0x0.000FEFD3A5CFAp0", "0x0.0010A7DD15F36p0", "0x0.001163FDC8B7Fp0", +"0x0.00122436410DDp0", "0x0.0012E88701F5Ep0", "0x0.0013B0F08E817p0", "0x0.00147D7369D22p0", +"0x0.00154E101719Fp0", "0x0.001622C7199B7p0", "0x0.0016FB98F4A96p0", "0x0.0017D8862BA72p0", +"0x0.0018B98F42084p0", "0x0.00199EB4BB511p0", "0x0.001A87F71B161p0", "0x0.001B7556E4FC4p0", +"0x0.001C66D49CB93p0", "0x0.001D5C70C612Dp0", "0x0.001E562BE4DFAp0", "0x0.001F54067D067p0", +"0x0.00205601127ECp0", "0x0.00215C1C29507p0", "0x0.0022665845940p0", "0x0.002374B5EB724p0", +"0x0.002487359F24Cp0", "0x0.00259DD7E4F57p0", "0x0.0026B89D413EFp0", "0x0.0027D786386C4p0", +"0x0.0028FA934EF90p0", "0x0.002A21C509717p0", "0x0.002B4D1BEC726p0", "0x0.002C7C987CA92p0", +"0x0.002DB03B3ED3Ap0", "0x0.002EE804B7C07p0", "0x0.003023F56C4ECp0", "0x0.0031640DE16E3p0", +"0x0.0032A84E9C1F5p0", "0x0.0033F0B821730p0", "0x0.00353D4AF68B0p0", "0x0.00368E07A0999p0", +"0x0.0037E2EEA4E19p0", "0x0.00393C0088B6Cp0", "0x0.003A993DD17D5p0", "0x0.003BFAA704AA3p0", +"0x0.003D603CA7C32p0", "0x0.003EC9FF405E6p0", "0x0.004037EF54230p0", "0x0.0041AA0D68C8Cp0", +"0x0.0043205A04182p0", "0x0.00449AD5ABEA5p0", "0x0.00461980E6294p0", "0x0.00479C5C38CF9p0", +"0x0.0049236829E8Bp0", "0x0.004AAEA53F90Ep0", "0x0.004C3E13FFF51p0", "0x0.004DD1B4F152Fp0", +"0x0.004F698899F90p0", "0x0.0051058F8046Ap0", "0x0.0052A5CA2AABFp0", "0x0.00544A391FA9Cp0", +"0x0.0055F2DCE5D1Ep0", "0x0.00579FB603C6Ep0", "0x0.005950C5003C2p0", "0x0.005B060A61F5Dp0", +"0x0.005CBF86AFC91p0", "0x0.005E7D3A709BEp0", "0x0.00603F262B650p0", "0x0.0062054A672C2p0", +"0x0.0063CFA7AB09Dp0", "0x0.00659E3E7E278p0", "0x0.0067710F67BFAp0", "0x0.0069481AEF1D5p0", +"0x0.006B23619B9CFp0", "0x0.006D02E3F4AB7p0", "0x0.006EE6A281C6Fp0", "0x0.0070CE9DCA7E6p0", +"0x0.0072BAD65671Bp0", "0x0.0074AB4CAD51Cp0", "0x0.0076A00156E07p0", "0x0.007898F4DAF09p0", +"0x0.007A9627C165Fp0", "0x0.007C979A92356p0", "0x0.007E9D4DD564Ap0", "0x0.0080A742130A8p0", +"0x0.0082B577D34EDp0", "0x0.0084C7EF9E6A7p0", "0x0.0086DEA9FCA73p0", "0x0.0088F9A776601p0", +"0x0.008B18E894010p0", "0x0.008D3C6DDE06Fp0", "0x0.008F6437DD000p0", "0x0.00919047198B6p0", +"0x0.0093C09C1C595p0", "0x0.0095F5376E2B2p0", "0x0.00982E1997D33p0", "0x0.009A6B4322352p0", +"0x0.009CACB496458p0", "0x0.009EF26E7D0A2p0", "0x0.00A13C715F99Ep0", "0x0.00A38ABDC71CEp0", +"0x0.00A5DD543CCC4p0", "0x0.00A8343549F26p0", "0x0.00AA8F6177EADp0", "0x0.00ACEED950222p0", +"0x0.00AF529D5C165p0", "0x0.00B1BAAE25566p0", "0x0.00B4270C3582Ap0", "0x0.00B697B8164C7p0", +"0x0.00B90CB25176Ap0", "0x0.00BB85FB70D50p0", "0x0.00BE0393FE4CCp0", "0x0.00C0857C83D44p0", +"0x0.00C30BB58B732p0", "0x0.00C5963F9F424p0", "0x0.00C8251B496BEp0", "0x0.00CAB849142B5p0", +"0x0.00CD4FC989CD6p0", "0x0.00CFEB9D34B00p0", "0x0.00D28BC49F428p0", "0x0.00D5304054059p0", +"0x0.00D7D910DD8B1p0", "0x0.00DA8636C6764p0", "0x0.00DD37B2997BCp0", "0x0.00DFED84E1618p0", +"0x0.00E2A7AE28FECp0", "0x0.00E5662EFB3C3p0", "0x0.00E82907E313Dp0", "0x0.00EAF0396B910p0", +"0x0.00EDBBC41FD08p0", "0x0.00F08BA88B009p0", "0x0.00F35FE73860Bp0", "0x0.00F63880B341Ep0", +"0x0.00F9157587069p0", "0x0.00FBF6C63F228p0", "0x0.00FEDC73671B0p0", "0x0.0101C67D8A86Cp0", +"0x0.0104B4E5350DFp0", "0x0.0107A7AAF26A2p0", "0x0.010A9ECF4E667p0", "0x0.010D9A52D4DF8p0", +"0x0.01109A3611C34p0", "0x0.01139E7991116p0", "0x0.0116A71DDEDADp0", "0x0.0119B42387423p0", +"0x0.011CC58B167B9p0", "0x0.011FDB5518CCAp0", "0x0.0122F5821A8C7p0", "0x0.01261412A823Cp0", +"0x0.012937074E0CDp0", "0x0.012C5E6098D37p0", "0x0.012F8A1F15151p0", "0x0.0132BA434F80Ap0", +"0x0.0135EECDD4D6Cp0", "0x0.013927BF31E98p0", "0x0.013C6517F39CCp0", "0x0.013FA6D8A6E5Dp0", +"0x0.0142ED01D8CBCp0", "0x0.0146379416673p0", "0x0.0149868FECE26p0", "0x0.014CD9F5E9795p0", +"0x0.015031C699799p0", "0x0.01538E028A426p0", "0x0.0156EEAA4944Bp0", "0x0.015A53BE64033p0", +"0x0.015DBD3F68122p0", "0x0.01612B2DE3178p0", "0x0.01649D8A62CB1p0", "0x0.0168145574F65p0", +"0x0.016B8F8FA7745p0", "0x0.016F0F3988321p0", "0x0.01729353A52E4p0", "0x0.01761BDE8C792p0", +"0x0.0179A8DACC350p0", "0x0.017D3A48F295Dp0", "0x0.0180D0298DE13p0", "0x0.01846A7D2C6ECp0", +"0x0.018809445CA7Bp0", "0x0.018BAC7FAD074p0", "0x0.018F542FAC1A4p0", "0x0.01930054E87F8p0", +"0x0.0196B0EFF0E79p0", "0x0.019A66015414Dp0", "0x0.019E1F89A0DBAp0", "0x0.01A1DD8966221p0", +"0x0.01A5A00132E02p0", "0x0.01A966F1961FCp0", "0x0.01AD325B1EFC9p0", "0x0.01B1023E5CA45p0", +"0x0.01B4D69BDE569p0", "0x0.01B8AF743364Cp0", "0x0.01BC8CC7EB323p0", "0x0.01C06E9795345p0", +"0x0.01C454E3C0F24p0", "0x0.01C83FACFE054p0", "0x0.01CC2EF3DC187p0", "0x0.01D022B8EAE8Fp0", +"0x0.01D41AFCBA45Ep0", "0x0.01D817BFDA104p0", "0x0.01DC1902DA3B1p0", "0x0.01E01EC64ACB7p0", +"0x0.01E4290ABBD87p0", "0x0.01E837D0BD8B2p0", "0x0.01EC4B18E01E9p0", "0x0.01F062E3B3DFEp0", +"0x0.01F47F31C92E4p0", "0x0.01F8A003B07AFp0", "0x0.01FCC559FA492p0", "0x0.0200EF35372E4p0", +"0x0.02051D95F7D1Cp0", "0x0.0209507CCCED1p0", "0x0.020D87EA474BEp0", "0x0.0211C3DEF7CBDp0", + }; + ap_ufixed<46,-6> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 5,-6> f_x_msb_2_h; + f_x_msb_2_h(4,0) = f_x_msb_2(45,41); + ap_ufixed< 9,-2> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<50,-2> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(49,41) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(40, 0) = f_x_msb_2(40,0); + + ap_ufixed<98,-12> f_x_msb_2_3_4_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_lsb_m_1; + ap_ufixed<46,-12> f_x_msb_2_3_4_lsb_s = f_x_msb_2_3_4_lsb; + ap_ufixed<50,-2> exp_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_3_4_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_lsb_m_1; + + const static ap_ufixed<50,23> exp_x_msb_1_table[256] = { +"0x1.0000000p0", "0x1.2216045p0", "0x1.48B5E3Cp0", "0x1.747A513p0", +"0x1.A61298Ep0", "0x1.DE455DFp0", "0x2.1DF3B68p0", "0x2.661CB0Fp0", +"0x2.B7E1516p0", "0x3.1489176p0", "0x3.7D871DBp0", "0x3.F47FE87p0", +"0x4.7B4FF99p0", "0x5.1413452p0", "0x5.C12DA41p0", "0x6.855466Ep0", +"0x7.63992E3p0", "0x8.5F7635Bp0", "0x9.7CDC417p0", "0xA.C042667p0", +"0xC.2EB7EC9p0", "0xD.CDF892Ep0", "0xF.A48385Ep0", "0x11.B9B5652p0", +"0x14.15E5BF6p0", "0x16.C2887C1p0", "0x19.CA53B78p0", "0x1D.396AA97p0", +"0x21.1D8E427p0", "0x25.865441Cp0", "0x2A.8565A14p0", "0x30.2EC550Bp0", +"0x36.99205C4p0", "0x3D.DE28BF3p0", "0x46.1AFC4DBp0", "0x4F.7099532p0", +"0x5A.0462B78p0", "0x66.00B5BC9p0", "0x73.9593ABBp0", "0x82.F9621ADp0", +"0x94.69C4CB8p0", "0xA8.2C948C1p0", "0xBE.90F6F83p0", "0xD7.F09B78Cp0", +"0xF4.B122790p0", "0x115.45B4704p0", "0x13A.30CF1CCp0", "0x164.0650296p0", +"0x193.6DC5690p0", "0x1C9.250BEDCp0", "0x206.03487A3p0", "0x24A.FC4533Cp0", +"0x299.2442102p0", "0x2F1.B447462p0", "0x356.0F0B0F9p0", "0x3C7.C67E5BEp0", +"0x448.A216ABBp0", "0x4DA.A5EE46Ap0", "0x580.1AD754Fp0", "0x63B.9782341p0", +"0x710.0ADBAC7p0", "0x800.C7CC8E3p0", "0x911.9289C39p0", "0xA46.AFAA2ADp0", +"0xBA4.F53EA38p0", "0xD31.DE30C52p0", "0xEF3.A035D57p0", "0x10F1.44ADE60p0", +"0x1332.C4D2B7Cp0", "0x15C1.29A744Cp0", "0x18A6.B027DA0p0", "0x1BEE.F24BB12p0", +"0x1FA7.157C470p0", "0x23DD.FF3C8BAp0", "0x28A4.90D2CCEp0", "0x2E0D.EAE454Bp0", +"0x342F.BA11823p0", "0x3B22.8DC5359p0", "0x4302.3A933EEp0", "0x4BEE.49AFCDCp0", +"0x560A.773E541p0", "0x617F.4171BF9p0", "0x6E7A.8ABB4A8p0", "0x7D30.5191764p0", +"0x8DDB.80AF426p0", "0xA0BE.DB0DB10p0", "0xB626.0748BAEp0", "0xCE66.BE9EAADp0", +"0xE9E2.2447727p0", "0x10906.4A831F8p0", "0x12C4F.EB75B2Ap0", "0x1544C.5CB6133p0", +"0x1819B.C560F61p0", "0x1B4F3.9F8AF64p0", "0x1EF21.8F1B001p0", "0x2310E.996C40Fp0", +"0x27BC2.CA9A6F9p0", "0x2D069.571279Ap0", "0x33055.49F35D9p0", "0x39D06.D2FEF17p0", +"0x41831.49596E9p0", "0x4A3C1.FB2AC39p0", "0x541E7.E56949Dp0", "0x5F51C.72B7532p0", +"0x6C02D.645AB25p0", "0x7A648.0CFF534p0", "0x8AB06.0A3EE9Fp0", "0x9D27B.AFE4CF1p0", +"0xB2148.5EAE56Cp0", "0xC9CA9.07F86EFp0", "0xE4A8D.2881EDBp0", "0x1031AE.8E4996Cp0", +"0x1259AC.48BF05Dp0", "0x14CB29.2F2B31Fp0", "0x178FEE.7792E44p0", "0x1AB312.E89CD0Dp0", +"0x1E4127.437732Bp0", "0x224868.979FC2Ep0", "0x26D8F9.4A204BEp0", "0x2C0521.B4A8E0Bp0", +"0x31E199.5F5A550p0", "0x3885D9.FA89D00p0", "0x400C7D.64D3386p0", "0x4893A8.361032Dp0", +"0x523D82.79EDAEFp0", "0x5D30C0.7DAB686p0", "0x69993D.D4F2D95p0", "0x77A8AD.02A7C71p0", +"0x0.000001Ep0", "0x0.0000022p0", "0x0.0000026p0", "0x0.000002Bp0", +"0x0.0000031p0", "0x0.0000038p0", "0x0.000003Fp0", "0x0.0000048p0", +"0x0.0000052p0", "0x0.000005Dp0", "0x0.0000069p0", "0x0.0000077p0", +"0x0.0000087p0", "0x0.0000099p0", "0x0.00000ADp0", "0x0.00000C4p0", +"0x0.00000DFp0", "0x0.00000FCp0", "0x0.000011Ep0", "0x0.0000144p0", +"0x0.0000170p0", "0x0.00001A1p0", "0x0.00001D8p0", "0x0.0000217p0", +"0x0.000025Ep0", "0x0.00002AFp0", "0x0.000030Bp0", "0x0.0000372p0", +"0x0.00003E8p0", "0x0.000046Dp0", "0x0.0000504p0", "0x0.00005AFp0", +"0x0.0000671p0", "0x0.000074Cp0", "0x0.0000845p0", "0x0.000095Fp0", +"0x0.0000A9Fp0", "0x0.0000C09p0", "0x0.0000DA3p0", "0x0.0000F74p0", +"0x0.0001183p0", "0x0.00013D8p0", "0x0.000167Cp0", "0x0.000197Bp0", +"0x0.0001CDFp0", "0x0.00020B7p0", "0x0.0002513p0", "0x0.0002A02p0", +"0x0.0002F9Ap0", "0x0.00035F1p0", "0x0.0003D20p0", "0x0.0004543p0", +"0x0.0004E7Cp0", "0x0.00058F0p0", "0x0.00064C7p0", "0x0.0007232p0", +"0x0.0008167p0", "0x0.00092A2p0", "0x0.000A628p0", "0x0.000BC48p0", +"0x0.000D55Ap0", "0x0.000F1C2p0", "0x0.00111F3p0", "0x0.001366Cp0", +"0x0.0015FC2p0", "0x0.0018E98p0", "0x0.001C3AAp0", "0x0.001FFCEp0", +"0x0.00243F3p0", "0x0.002912Bp0", "0x0.002E8ABp0", "0x0.0034BD2p0", +"0x0.003BC2Dp0", "0x0.0043B7Dp0", "0x0.004CBC1p0", "0x0.0056F3Ap0", +"0x0.0062878p0", "0x0.006FA5Fp0", "0x0.007E83Ap0", "0x0.008F5C0p0", +"0x0.00A2728p0", "0x0.00B813Bp0", "0x0.00D0963p0", "0x0.00EC5C1p0", +"0x0.010BD4Ap0", "0x0.012F7DEp0", "0x0.0157E6Bp0", "0x0.0185B0Fp0", +"0x0.01B993Fp0", "0x0.01F45F9p0", "0x0.0236FF5p0", "0x0.02827E0p0", +"0x0.02D80A0p0", "0x0.0338F9Fp0", "0x0.03A6D22p0", "0x0.04234A7p0", +"0x0.04B0556p0", "0x0.0550280p0", "0x0.0605424p0", "0x0.06D279Ap0", +"0x0.07BB040p0", "0x0.08C284Cp0", "0x0.09ED1B4p0", "0x0.0B3F736p0", +"0x0.0CBED86p0", "0x0.0E7149Cp0", "0x0.105D938p0", "0x0.128B697p0", +"0x0.150385Cp0", "0x0.17CFCC2p0", "0x0.1AFB718p0", "0x0.1E9328Bp0", +"0x0.22A5554p0", "0x0.2742456p0", "0x0.2C7C72Fp0", "0x0.3268CDBp0", +"0x0.391F0EEp0", "0x0.40BA188p0", "0x0.495860Dp0", "0x0.531C6C9p0", +"0x0.5E2D58Dp0", "0x0.6AB7782p0", "0x0.78ED03Ap0", "0x0.8906E49p0", +"0x0.9B4597Ep0", "0x0.AFF230Ap0", "0x0.C75F7CFp0", "0x0.E1EB512p0", + }; + ap_ufixed<50,23> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<100,21> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_lsb_m_1; + ap_ufixed<48,21> y_lo_s = y_lo; + ap_ufixed<50,23> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + if (I_<24) { // overflow + bool overf = 0; + for (int j = 45; j >= I_+22; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 45; j >= I_+22; j--){ + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+21; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else { // I_s_ = 6, M_ = 24..32, I_ <= 33, F_ <= 32, W_ <= 65 + //ap_fixed<65,33> x_l = x; + ap_fixed<65,33> x_l = 0; + for (int j = 32-F_; j < 32+I_; j++){ + #pragma HLS unroll + x_l[j] = x[j-(32-F_)]; + } + for (int j = 32+I_; j <= 64; j++){ + #pragma HLS unroll + x_l[j] = x[W_-1]; + } + ap_ufixed<64,32> y = 0; + ap_fixed<6,6> x_l_int; + x_l_int(5,0) = x_l(37,32); + ap_ufixed<32,0> x_l_fract; + x_l_fract(31,0) = x_l(31,0); + bool overf = 0; + for (int j = 37; j < 64; j++) { + #pragma HLS unroll + if (x_l[64]!=x_l[j]) + overf = 1; + } + //if (overf||(x_l>="0x16.2e42fefap0")) { // overflow + if (overf||(x_l_int>22)||((x_l_int==22)&&(x_l_fract>=ap_ufixed<32,0>("0x0.2e42fefap0")))) { // overflow + if (!x_l[64]) { + for (int j = 0; j < 64; j++){ + #pragma HLS unroll + y[j] = 1; + } + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[64]; + x_msb_ind_1(6,0) = x_l(36,30); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(29,22); + ap_uint<8> x_msb_ind_3; + x_msb_ind_3(7,0) = x_l(21,14); + ap_uint<8> x_msb_ind_4; + x_msb_ind_4(7,0) = x_l(13,6); + ap_uint<6> x_lsb_ind; + x_lsb_ind(5,0) = x_l(5,0); + + ap_ufixed<8, -2> x_msb_2 = x_l; + ap_ufixed<8,-10> x_msb_3 = x_l; + ap_ufixed<8,-18> x_msb_4 = x_l; + ap_ufixed<6,-26> x_lsb = x_l; + + const static ap_ufixed<31,-37> f_x_msb_4_table[256] = { +"0x0.000000000000000000p0", "0x0.000000000000080000p0", "0x0.000000000000200000p0", "0x0.000000000000480000p0", +"0x0.000000000000800000p0", "0x0.000000000000C80000p0", "0x0.000000000001200000p0", "0x0.000000000001880000p0", +"0x0.000000000002000001p0", "0x0.000000000002880001p0", "0x0.000000000003200002p0", "0x0.000000000003C80003p0", +"0x0.000000000004800004p0", "0x0.000000000005480005p0", "0x0.000000000006200007p0", "0x0.000000000007080008p0", +"0x0.00000000000800000Ap0", "0x0.00000000000908000Cp0", "0x0.00000000000A20000Fp0", "0x0.00000000000B480011p0", +"0x0.00000000000C800014p0", "0x0.00000000000DC80018p0", "0x0.00000000000F20001Bp0", "0x0.00000000001088001Fp0", +"0x0.000000000012000024p0", "0x0.000000000013880028p0", "0x0.00000000001520002Dp0", "0x0.000000000016C80033p0", +"0x0.000000000018800039p0", "0x0.00000000001A48003Fp0", "0x0.00000000001C200046p0", "0x0.00000000001E08004Dp0", +"0x0.000000000020000055p0", "0x0.00000000002208005Dp0", "0x0.000000000024200066p0", "0x0.00000000002648006Fp0", +"0x0.000000000028800079p0", "0x0.00000000002AC80083p0", "0x0.00000000002D20008Ep0", "0x0.00000000002F88009Ap0", +"0x0.0000000000320000A6p0", "0x0.0000000000348800B3p0", "0x0.0000000000372000C0p0", "0x0.000000000039C800CFp0", +"0x0.00000000003C8000DDp0", "0x0.00000000003F4800EDp0", "0x0.0000000000422000FDp0", "0x0.00000000004508010Ep0", +"0x0.000000000048000120p0", "0x0.00000000004B080132p0", "0x0.00000000004E200145p0", "0x0.000000000051480159p0", +"0x0.00000000005480016Ep0", "0x0.000000000057C80183p0", "0x0.00000000005B20019Ap0", "0x0.00000000005E8801B1p0", +"0x0.0000000000620001C9p0", "0x0.0000000000658801E2p0", "0x0.0000000000692001FCp0", "0x0.00000000006CC80216p0", +"0x0.000000000070800232p0", "0x0.00000000007448024Fp0", "0x0.00000000007820026Cp0", "0x0.00000000007C08028Bp0", +"0x0.0000000000800002AAp0", "0x0.0000000000840802CBp0", "0x0.0000000000882002ECp0", "0x0.00000000008C48030Fp0", +"0x0.000000000090800332p0", "0x0.000000000094C80357p0", "0x0.00000000009920037Dp0", "0x0.00000000009D8803A4p0", +"0x0.0000000000A20003CCp0", "0x0.0000000000A68803F5p0", "0x0.0000000000AB20041Fp0", "0x0.0000000000AFC8044Ap0", +"0x0.0000000000B4800477p0", "0x0.0000000000B94804A4p0", "0x0.0000000000BE2004D3p0", "0x0.0000000000C3080503p0", +"0x0.0000000000C8000535p0", "0x0.0000000000CD080567p0", "0x0.0000000000D220059Bp0", "0x0.0000000000D74805D1p0", +"0x0.0000000000DC800607p0", "0x0.0000000000E1C8063Fp0", "0x0.0000000000E7200678p0", "0x0.0000000000EC8806B2p0", +"0x0.0000000000F20006EEp0", "0x0.0000000000F788072Bp0", "0x0.0000000000FD20076Ap0", "0x0.000000000102C807AAp0", +"0x0.0000000001088007EBp0", "0x0.00000000010E48082Ep0", "0x0.000000000114200872p0", "0x0.00000000011A0808B8p0", +"0x0.000000000120000900p0", "0x0.000000000126080948p0", "0x0.00000000012C200993p0", "0x0.0000000001324809DEp0", +"0x0.000000000138800A2Cp0", "0x0.00000000013EC80A7Bp0", "0x0.000000000145200ACBp0", "0x0.00000000014B880B1Dp0", +"0x0.000000000152000B71p0", "0x0.000000000158880BC6p0", "0x0.00000000015F200C1Dp0", "0x0.000000000165C80C76p0", +"0x0.00000000016C800CD0p0", "0x0.000000000173480D2Cp0", "0x0.00000000017A200D8Ap0", "0x0.000000000181080DE9p0", +"0x0.000000000188000E4Ap0", "0x0.00000000018F080EADp0", "0x0.000000000196200F12p0", "0x0.00000000019D480F78p0", +"0x0.0000000001A4800FE0p0", "0x0.0000000001ABC8104Ap0", "0x0.0000000001B32010B6p0", "0x0.0000000001BA881124p0", +"0x0.0000000001C2001194p0", "0x0.0000000001C9881205p0", "0x0.0000000001D1201278p0", "0x0.0000000001D8C812EEp0", +"0x0.0000000001E0801365p0", "0x0.0000000001E84813DEp0", "0x0.0000000001F0201459p0", "0x0.0000000001F80814D6p0", +"0x0.000000000200001555p0", "0x0.0000000002080815D6p0", "0x0.000000000210201659p0", "0x0.0000000002184816DEp0", +"0x0.000000000220801765p0", "0x0.000000000228C817EEp0", "0x0.000000000231201879p0", "0x0.000000000239881907p0", +"0x0.000000000242001996p0", "0x0.00000000024A881A28p0", "0x0.000000000253201ABBp0", "0x0.00000000025BC81B51p0", +"0x0.000000000264801BE9p0", "0x0.00000000026D481C84p0", "0x0.000000000276201D20p0", "0x0.00000000027F081DBFp0", +"0x0.000000000288001E60p0", "0x0.000000000291081F03p0", "0x0.00000000029A201FA8p0", "0x0.0000000002A3482050p0", +"0x0.0000000002AC8020FAp0", "0x0.0000000002B5C821A6p0", "0x0.0000000002BF202255p0", "0x0.0000000002C8882306p0", +"0x0.0000000002D20023B9p0", "0x0.0000000002DB88246Fp0", "0x0.0000000002E5202527p0", "0x0.0000000002EEC825E1p0", +"0x0.0000000002F880269Ep0", "0x0.00000000030248275Dp0", "0x0.00000000030C20281Fp0", "0x0.0000000003160828E3p0", +"0x0.0000000003200029AAp0", "0x0.00000000032A082A73p0", "0x0.000000000334202B3Fp0", "0x0.00000000033E482C0Dp0", +"0x0.000000000348802CDEp0", "0x0.000000000352C82DB2p0", "0x0.00000000035D202E88p0", "0x0.000000000367882F60p0", +"0x0.00000000037200303Cp0", "0x0.00000000037C883119p0", "0x0.0000000003872031FAp0", "0x0.000000000391C832DDp0", +"0x0.00000000039C8033C3p0", "0x0.0000000003A74834ABp0", "0x0.0000000003B2203596p0", "0x0.0000000003BD083684p0", +"0x0.0000000003C8003775p0", "0x0.0000000003D3083868p0", "0x0.0000000003DE20395Ep0", "0x0.0000000003E9483A57p0", +"0x0.0000000003F4803B53p0", "0x0.0000000003FFC83C52p0", "0x0.00000000040B203D53p0", "0x0.000000000416883E57p0", +"0x0.000000000422003F5Ep0", "0x0.00000000042D884068p0", "0x0.000000000439204175p0", "0x0.000000000444C84285p0", +"0x0.000000000450804397p0", "0x0.00000000045C4844ADp0", "0x0.0000000004682045C5p0", "0x0.0000000004740846E1p0", +"0x0.000000000480004800p0", "0x0.00000000048C084921p0", "0x0.000000000498204A46p0", "0x0.0000000004A4484B6Dp0", +"0x0.0000000004B0804C98p0", "0x0.0000000004BCC84DC5p0", "0x0.0000000004C9204EF6p0", "0x0.0000000004D588502Ap0", +"0x0.0000000004E2005161p0", "0x0.0000000004EE88529Bp0", "0x0.0000000004FB2053D8p0", "0x0.000000000507C85518p0", +"0x0.00000000051480565Cp0", "0x0.0000000005214857A3p0", "0x0.00000000052E2058EDp0", "0x0.00000000053B085A3Ap0", +"0x0.000000000548005B8Ap0", "0x0.000000000555085CDEp0", "0x0.000000000562205E35p0", "0x0.00000000056F485F8Fp0", +"0x0.00000000057C8060ECp0", "0x0.000000000589C8624Dp0", "0x0.0000000005972063B1p0", "0x0.0000000005A4886519p0", +"0x0.0000000005B2006684p0", "0x0.0000000005BF8867F2p0", "0x0.0000000005CD206963p0", "0x0.0000000005DAC86AD8p0", +"0x0.0000000005E8806C51p0", "0x0.0000000005F6486DCDp0", "0x0.000000000604206F4Cp0", "0x0.0000000006120870CFp0", +"0x0.000000000620007255p0", "0x0.00000000062E0873DFp0", "0x0.00000000063C20756Cp0", "0x0.00000000064A4876FDp0", +"0x0.000000000658807891p0", "0x0.000000000666C87A29p0", "0x0.000000000675207BC4p0", "0x0.000000000683887D64p0", +"0x0.000000000692007F06p0", "0x0.0000000006A08880ADp0", "0x0.0000000006AF208256p0", "0x0.0000000006BDC88404p0", +"0x0.0000000006CC8085B5p0", "0x0.0000000006DB48876Ap0", "0x0.0000000006EA208923p0", "0x0.0000000006F9088ADFp0", +"0x0.000000000708008CA0p0", "0x0.000000000717088E63p0", "0x0.00000000072620902Bp0", "0x0.0000000007354891F6p0", +"0x0.0000000007448093C6p0", "0x0.000000000753C89599p0", "0x0.000000000763209770p0", "0x0.00000000077288994Ap0", +"0x0.000000000782009B29p0", "0x0.000000000791889D0Bp0", "0x0.0000000007A1209EF2p0", "0x0.0000000007B0C8A0DCp0", +"0x0.0000000007C080A2CAp0", "0x0.0000000007D048A4BCp0", "0x0.0000000007E020A6B2p0", "0x0.0000000007F008A8ACp0", + }; + ap_ufixed<31,-37> f_x_msb_4 = f_x_msb_4_table[x_msb_ind_4]; + + const static ap_ufixed<12,-53> f_x_lsb_table[64] = { +"0x0.00000000000000000p0", "0x0.00000000000000008p0", "0x0.00000000000000020p0", "0x0.00000000000000048p0", +"0x0.00000000000000080p0", "0x0.000000000000000c8p0", "0x0.00000000000000120p0", "0x0.00000000000000188p0", +"0x0.00000000000000200p0", "0x0.00000000000000288p0", "0x0.00000000000000320p0", "0x0.000000000000003c8p0", +"0x0.00000000000000480p0", "0x0.00000000000000548p0", "0x0.00000000000000620p0", "0x0.00000000000000708p0", +"0x0.00000000000000800p0", "0x0.00000000000000908p0", "0x0.00000000000000a20p0", "0x0.00000000000000b48p0", +"0x0.00000000000000c80p0", "0x0.00000000000000dc8p0", "0x0.00000000000000f20p0", "0x0.00000000000001088p0", +"0x0.00000000000001200p0", "0x0.00000000000001388p0", "0x0.00000000000001520p0", "0x0.000000000000016c8p0", +"0x0.00000000000001880p0", "0x0.00000000000001a48p0", "0x0.00000000000001c20p0", "0x0.00000000000001e08p0", +"0x0.00000000000002000p0", "0x0.00000000000002208p0", "0x0.00000000000002420p0", "0x0.00000000000002648p0", +"0x0.00000000000002880p0", "0x0.00000000000002ac8p0", "0x0.00000000000002d20p0", "0x0.00000000000002f88p0", +"0x0.00000000000003200p0", "0x0.00000000000003488p0", "0x0.00000000000003720p0", "0x0.000000000000039c8p0", +"0x0.00000000000003c80p0", "0x0.00000000000003f48p0", "0x0.00000000000004220p0", "0x0.00000000000004508p0", +"0x0.00000000000004800p0", "0x0.00000000000004b08p0", "0x0.00000000000004e20p0", "0x0.00000000000005148p0", +"0x0.00000000000005480p0", "0x0.000000000000057c8p0", "0x0.00000000000005b20p0", "0x0.00000000000005e88p0", +"0x0.00000000000006200p0", "0x0.00000000000006588p0", "0x0.00000000000006920p0", "0x0.00000000000006cc8p0", +"0x0.00000000000007080p0", "0x0.00000000000007448p0", "0x0.00000000000007820p0", "0x0.00000000000007c08p0", + }; + ap_ufixed<12,-53> f_x_lsb = f_x_lsb_table[x_lsb_ind]; + + ap_ufixed<14,-44> f_x_msb_4_lsb = x_msb_4 * x_lsb; + + ap_ufixed<15,-43> exp_x_msb_4_lsb_m_1_m1 = 0; + exp_x_msb_4_lsb_m_1_m1(4,0) = f_x_lsb(11,7); + exp_x_msb_4_lsb_m_1_m1 = exp_x_msb_4_lsb_m_1_m1 + f_x_msb_4_lsb; + + ap_ufixed<22,-43> exp_x_msb_4_lsb_m_1_m2 = exp_x_msb_4_lsb_m_1_m1; + exp_x_msb_4_lsb_m_1_m2(6,0) = f_x_lsb(6,0); + + ap_ufixed<29,-36> exp_x_msb_4_lsb_m_1_m3 = 0; + exp_x_msb_4_lsb_m_1_m3(27,0) = f_x_msb_4(30,3); + exp_x_msb_4_lsb_m_1_m3 = exp_x_msb_4_lsb_m_1_m3 + exp_x_msb_4_lsb_m_1_m2; + + ap_ufixed<32,-36> exp_x_msb_4_lsb_m_1_m = exp_x_msb_4_lsb_m_1_m3; + exp_x_msb_4_lsb_m_1_m(2,0) = f_x_msb_4(2,0); + + ap_ufixed<50,-18> exp_x_msb_4_lsb_m_1 = 0; + exp_x_msb_4_lsb_m_1(49,36) = x_l(13,0); + exp_x_msb_4_lsb_m_1(31, 0) = exp_x_msb_4_lsb_m_1_m(31,0); + + + const static ap_ufixed<51,-21> f_x_msb_3_table[256] = { +"0x0", "0x0.00000000080000AAAAp0", "0x0.000000002000055556p0", "0x0.000000004800120003p0", +"0x0.0000000080002AAAB5p0", "0x0.00000000C80053556Fp0", "0x0.000000012000900036p0", "0x0.000000018800E4AB0Ep0", +"0x0.000000020001555600p0", "0x0.000000028801E60111p0", "0x0.0000000320029AAC4Bp0", "0x0.00000003C8037757B7p0", +"0x0.000000048004800360p0", "0x0.000000054805B8AF50p0", "0x0.000000062007255B96p0", "0x0.000000070808CA083Dp0", +"0x0.00000008000AAAB555p0", "0x0.00000009080CCB62EDp0", "0x0.0000000A200F301116p0", "0x0.0000000B4811DCBFE0p0", +"0x0.0000000C8014D56F60p0", "0x0.0000000DC8181E1FA7p0", "0x0.0000000F201BBAD0CBp0", "0x0.00000010881FAF82E1p0", +"0x0.000000120024003600p0", "0x0.000000138828B0EA3Fp0", "0x0.00000015202DC59FB6p0", "0x0.00000016C83342567Fp0", +"0x0.0000001880392B0EB5p0", "0x0.0000001A483F83C874p0", "0x0.0000001C20465083D6p0", "0x0.0000001E084D9540FBp0", +"0x0.000000200055560001p0", "0x0.00000022085D96C106p0", "0x0.0000002420665B842Cp0", "0x0.00000026486FA84995p0", +"0x0.000000288079811161p0", "0x0.0000002AC883E9DBB6p0", "0x0.0000002D208EE6A8B8p0", "0x0.0000002F889A7B788Cp0", +"0x0.0000003200A6AC4B58p0", "0x0.0000003488B37D2145p0", "0x0.0000003720C0F1FA7Ap0", "0x0.00000039C8CF0ED721p0", +"0x0.0000003C80DDD7B765p0", "0x0.0000003F48ED509B71p0", "0x0.0000004220FD7D8371p0", "0x0.00000045090E626F94p0", +"0x0.000000480120036008p0", "0x0.0000004B09326454FBp0", "0x0.0000004E2145894E9Fp0", "0x0.000000514959764D26p0", +"0x0.00000054816E2F50C1p0", "0x0.00000057C983B859A4p0", "0x0.0000005B219A156804p0", "0x0.0000005E89B14A7C16p0", +"0x0.0000006201C95B9611p0", "0x0.0000006589E24CB62Cp0", "0x0.0000006921FC21DCA0p0", "0x0.0000006CCA16DF09A6p0", +"0x0.000000708232883D78p0", "0x0.000000744A4F217853p0", "0x0.00000078226CAEBA73p0", "0x0.0000007C0A8B340414p0", +"0x0.0000008002AAB55577p0", "0x0.000000840ACB36AEDAp0", "0x0.0000008822ECBC107Dp0", "0x0.0000008C4B0F497AA3p0", +"0x0.000000908332E2ED8Ep0", "0x0.00000094CB578C6981p0", "0x0.00000099237D49EEC0p0", "0x0.0000009D8BA41F7D92p0", +"0x0.000000A203CC11163Dp0", "0x0.000000A68BF522B908p0", "0x0.000000AB241F58663Cp0", "0x0.000000AFCC4AB61E22p0", +"0x0.000000B484773FE105p0", "0x0.000000B94CA4F9AF31p0", "0x0.000000BE24D3E788F1p0", "0x0.000000C30D040D6E94p0", +"0x0.000000C805356F6068p0", "0x0.000000CD0D68115EBCp0", "0x0.000000D2259BF769E1p0", "0x0.000000D74DD1258228p0", +"0x0.000000DC86079FA7E4p0", "0x0.000000E1CE3F69DB69p0", "0x0.000000E72678881D0Bp0", "0x0.000000EC8EB2FE6D1Fp0", +"0x0.000000F206EED0CBFDp0", "0x0.000000F78F2C0339FAp0", "0x0.000000FD276A99B771p0", "0x0.00000102CFAA9844BBp0", +"0x0.0000010887EC02E231p0", "0x0.0000010E502EDD9030p0", "0x0.0000011428732C4F14p0", "0x0.0000011A10B8F31F3Bp0", +"0x0.000001200900360103p0", "0x0.000001261148F8F4CBp0", "0x0.0000012C29933FFAF5p0", "0x0.0000013251DF0F13E1p0", +"0x0.000001388A2C6A3FF3p0", "0x0.0000013ED27B557F8Dp0", "0x0.000001452ACBD4D315p0", "0x0.0000014B931DEC3AEFp0", +"0x0.000001520B719FB782p0", "0x0.0000015893C6F34937p0", "0x0.0000015F2C1DEAF074p0", "0x0.00000165D4768AADA5p0", +"0x0.0000016C8CD0D68133p0", "0x0.00000173552CD26B89p0", "0x0.0000017A2D8A826D16p0", "0x0.0000018115E9EA8645p0", +"0x0.000001880E4B0EB785p0", "0x0.0000018F16ADF30147p0", "0x0.000001962F129B63FAp0", "0x0.0000019D57790BE010p0", +"0x0.000001A48FE14875FBp0", "0x0.000001ABD84B552630p0", "0x0.000001B330B735F122p0", "0x0.000001BA9924EED748p0", +"0x0.000001C2119483D917p0", "0x0.000001C99A05F8F707p0", "0x0.000001D13279523191p0", "0x0.000001D8DAEE93892Ep0", +"0x0.000001E09365C0FE59p0", "0x0.000001E85BDEDE918Dp0", "0x0.000001F03459F04347p0", "0x0.000001F81CD6FA1405p0", +"0x0.000002001556000444p0", "0x0.000002081DD7061485p0", "0x0.00000210365A104547p0", "0x0.000002185EDF22970Dp0", +"0x0.000002209766410A5Ap0", "0x0.00000228DFEF6F9FAFp0", "0x0.00000231387AB25793p0", "0x0.00000239A1080D328Ap0", +"0x0.00000242199784311Cp0", "0x0.0000024AA2291B53CFp0", "0x0.000002533ABCD69B2Dp0", "0x0.0000025BE352BA07BEp0", +"0x0.000002649BEAC99A0Dp0", "0x0.0000026D64850952A7p0", "0x0.000002763D217D3216p0", "0x0.0000027F25C02938EAp0", +"0x0.000002881E611167B0p0", "0x0.00000291270439BEF8p0", "0x0.0000029A3FA9A63F53p0", "0x0.000002A368515AE951p0", +"0x0.000002ACA0FB5BBD86p0", "0x0.000002B5E9A7ACBC86p0", "0x0.000002BF425651E6E4p0", "0x0.000002C8AB074F3D36p0", +"0x0.000002D223BAA8C013p0", "0x0.000002DBAC70627012p0", "0x0.000002E54528804DCDp0", "0x0.000002EEEDE30659DBp0", +"0x0.000002F8A69FF894D9p0", "0x0.000003026F5F5AFF61p0", "0x0.0000030C4821319A10p0", "0x0.0000031630E5806584p0", +"0x0.0000032029AC4B625Bp0", "0x0.0000032A3275969134p0", "0x0.000003344B4165F2B1p0", "0x0.0000033E740FBD8772p0", +"0x0.00000348ACE0A1501Bp0", "0x0.00000352F5B4154D4Fp0", "0x0.0000035D4E8A1D7FB2p0", "0x0.00000367B762BDE7EAp0", +"0x0.00000372303DFA869Ep0", "0x0.0000037CB91BD75C75p0", "0x0.0000038751FC586A18p0", "0x0.00000391FADF81B02Fp0", +"0x0.0000039CB3C5572F67p0", "0x0.000003A77CADDCE86Ap0", "0x0.000003B2559916DBE4p0", "0x0.000003BD3E87090A84p0", +"0x0.000003C83777B774F8p0", "0x0.000003D3406B261BF0p0", "0x0.000003DE596159001Cp0", "0x0.000003E9825A54222Dp0", +"0x0.000003F4BB561B82D7p0", "0x0.000004000454B322CCp0", "0x0.0000040B5D561F02C2p0", "0x0.00000416C65A63236Ep0", +"0x0.000004223F61838586p0", "0x0.0000042DC86B8429C2p0", "0x0.0000043961786910DBp0", "0x0.000004450A88363B8Ap0", +"0x0.00000450C39AEFAA8Ap0", "0x0.0000045C8CB0995E96p0", "0x0.0000046865C937586Bp0", "0x0.000004744EE4CD98C6p0", +"0x0.000004804803602067p0", "0x0.0000048C5124F2F00Cp0", "0x0.000004986A498A0876p0", "0x0.000004A49371296A67p0", +"0x0.000004B0CC9BD516A1p0", "0x0.000004BD15C9910DE8p0", "0x0.000004C96EFA615101p0", "0x0.000004D5D82E49E0B0p0", +"0x0.000004E251654EBDBDp0", "0x0.000004EEDA9F73E8F0p0", "0x0.000004FB73DCBD6310p0", "0x0.000005081D1D2F2CE7p0", +"0x0.00000514D660CD4740p0", "0x0.000005219FA79BB2E7p0", "0x0.0000052E78F19E70A8p0", "0x0.0000053B623ED98150p0", +"0x0.000005485B8F50E5AFp0", "0x0.0000055564E3089E93p0", "0x0.000005627E3A04ACCEp0", "0x0.0000056FA794491131p0", +"0x0.0000057CE0F1D9CC8Ep0", "0x0.0000058A2A52BADFBAp0", "0x0.0000059783B6F04B88p0", "0x0.000005A4ED1E7E10CFp0", +"0x0.000005B26689683064p0", "0x0.000005BFEFF7B2AB20p0", "0x0.000005CD89696181DBp0", "0x0.000005DB32DE78B56Fp0", +"0x0.000005E8EC56FC46B6p0", "0x0.000005F6B5D2F0368Cp0", "0x0.000006048F525885CDp0", "0x0.0000061278D5393558p0", +"0x0.00000620725B96460Ap0", "0x0.0000062E7BE573B8C3p0", "0x0.0000063C9572D58E64p0", "0x0.0000064ABF03BFC7CEp0", +"0x0.00000658F8983665E5p0", "0x0.0000066742303D698Bp0", "0x0.000006759BCBD8D3A5p0", "0x0.00000684056B0CA519p0", +"0x0.000006927F0DDCDECEp0", "0x0.000006A108B44D81AAp0", "0x0.000006AFA25E628E98p0", "0x0.000006BE4C0C20067Fp0", +"0x0.000006CD05BD89EA4Bp0", "0x0.000006DBCF72A43AE8p0", "0x0.000006EAA92B72F942p0", "0x0.000006F992E7FA2646p0", +"0x0.000007088CA83DC2E4p0", "0x0.00000717966C41D00Ap0", "0x0.00000726B0340A4EAAp0", "0x0.00000735D9FF9B3FB6p0", +"0x0.0000074513CEF8A41Ep0", "0x0.000007545DA2267CD9p0", "0x0.00000763B77928CAD9p0", "0x0.000007732154038F14p0", +"0x0.000007829B32BACA82p0", "0x0.000007922515527E1Ap0", "0x0.000007A1BEFBCEAAD4p0", "0x0.000007B168E63351AAp0", +"0x0.000007C122D4847397p0", "0x0.000007D0ECC6C61195p0", "0x0.000007E0C6BCFC2CA3p0", "0x0.000007F0B0B72AC5BEp0", + }; + ap_ufixed<51,-21> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<62,-10> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(61,54) = x_msb_3(7,0); + exp_x_msb_3_m_1(50, 0) = f_x_msb_3(50,0); + + ap_ufixed<50,-10> exp_x_msb_3_m_1_s = exp_x_msb_3_m_1; + ap_ufixed<100,-28> f_x_msb_3_4_lsb = exp_x_msb_3_m_1_s * exp_x_msb_4_lsb_m_1; + ap_ufixed<44,-28> f_x_msb_3_4_lsb_s = f_x_msb_3_4_lsb; + ap_ufixed<63, -9> exp_x_msb_3_4_lsb_m_1 = f_x_msb_3_4_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_lsb_m_1; + + + const static ap_ufixed<64,-4> f_x_msb_2_table[256] = { +"0x0.0p0", "0x0.00000800AAB555DDEp0", "0x0.00002005560011127p0", "0x0.00004812036081A9Cp0", +"0x0.0000802AB55777D28p0", "0x0.0000C8536F6684062p0", "0x0.0001209036103740Dp0", "0x0.000188E50ED8634A0p0", +"0x0.0002015600445B0C3p0", "0x0.000289E711DB32FD7p0", "0x0.0003229C4C260197Ep0", "0x0.0003CB79B8B01FE26p0", +"0x0.0004848362076A08Dp0", "0x0.00054DBD53BC80058p0", "0x0.0006272B9A630659Dp0", "0x0.000710D24391E6D7Ap0", +"0x0.00080AB55DE3917ABp0", "0x0.000914D8F8F63D524p0", "0x0.000A2F41256C297AFp0", "0x0.000B59F1F4EBDE291p0", +"0x0.000C94EF7A206DC2Dp0", "0x0.000DE03DC8B9B60B1p0", "0x0.000F3BE0F56CA15C4p0", "0x0.0010A7DD15F367F40p0", +"0x0.00122436410DD14E5p0", "0x0.0013B0F08E817591Ep0", "0x0.00154E101719FF0C5p0", "0x0.0016FB98F4A96BBEFp0", +"0x0.0018B98F42084EFBDp0", "0x0.001A87F71B1613137p0", "0x0.001C66D49CB93B127p0", "0x0.001E562BE4DFA4904p0", +"0x0.00205601127EC98E0p0", "0x0.00226658459402659p0", "0x0.002487359F24C7C99p0", "0x0.0026B89D413EF4D5Ep0", +"0x0.0028FA934EF909304p0", "0x0.002B4D1BEC726B39Cp0", "0x0.002DB03B3ED3AA50Ep0", "0x0.003023F56C4EC123Fp0", +"0x0.0032A84E9C1F58145p0", "0x0.00353D4AF68B07AA1p0", "0x0.0037E2EEA4E19B185p0", "0x0.003A993DD17D52D25p0", +"0x0.003D603CA7C32730Fp0", "0x0.004037EF54230B293p0", "0x0.0043205A04182F12Fp0", "0x0.00461980E62943810p0", +"0x0.0049236829E8BC292p0", "0x0.004C3E13FFF512DD8p0", "0x0.004F698899F90A966p0", "0x0.0052A5CA2AABF28D0p0", +"0x0.0055F2DCE5D1E966Ep0", "0x0.005950C5003C20723p0", "0x0.005CBF86AFC91EF2Bp0", "0x0.00603F262B65057FCp0", +"0x0.0063CFA7AB09D1732p0", "0x0.0067710F67BFA0687p0", "0x0.006B23619B9CF3CDEp0", "0x0.006EE6A281C6F4857p0", +"0x0.0072BAD65671B6977p0", "0x0.0076A00156E07CF57p0", "0x0.007A9627C165FD4EDp0", "0x0.007E9D4DD564A3F5Ep0", +"0x0.0082B577D34ED7D5Bp0", "0x0.0086DEA9FCA73E799p0", "0x0.008B18E8940100253p0", "0x0.008F6437DD000BFDAp0", +"0x0.0093C09C1C595C43Ep0", "0x0.00982E1997D33A9FCp0", "0x0.009CACB49645847CCp0", "0x0.00A13C715F99EF773p0", +"0x0.00A5DD543CCC4DDAFp0", "0x0.00AA8F6177EAD3336p0", "0x0.00AF529D5C1658EBCp0", "0x0.00B4270C3582A301Dp0", +"0x0.00B90CB25176A4C8Bp0", "0x0.00BE0393FE4CC5BD7p0", "0x0.00C30BB58B73266CAp0", "0x0.00C8251B496BE5696p0", +"0x0.00CD4FC989CD64555p0", "0x0.00D28BC49F428CFA3p0", "0x0.00D7D910DD8B16743p0", "0x0.00DD37B2997BCA6E6p0", +"0x0.00E2A7AE28FECA6FBp0", "0x0.00E82907E313D5399p0", "0x0.00EDBBC41FD08C383p0", "0x0.00F35FE73860B9038p0", +"0x0.00F91575870692F24p0", "0x0.00FEDC73671B04BDFp0", "0x0.0104B4E5350DF2386p0", "0x0.010A9ECF4E667E12Dp0", +"0x0.01109A3611C34FB64p0", "0x0.0116A71DDEDAD92D8p0", "0x0.011CC58B167B9D206p0", "0x0.0122F5821A8C74E0Dp0", +"0x0.012937074E0CD6893p0", "0x0.012F8A1F15151B2C6p0", "0x0.0135EECDD4D6C5172p0", "0x0.013C6517F39CC6233p0", +"0x0.0142ED01D8CBC61C4p0", "0x0.0149868FECE26935Dp0", "0x0.015031C6997996937p0", "0x0.0156EEAA4944BEE23p0", +"0x0.015DBD3F68122303Ep0", "0x0.01649D8A62CB1ACBEp0", "0x0.016B8F8FA7745BCDBp0", "0x0.01729353A52E403D8p0", +"0x0.0179A8DACC350DE1Dp0", "0x0.0180D0298DE13D179p0", "0x0.018809445CA7BFE78p0", "0x0.018F542FAC1A492D6p0", +"0x0.0196B0EFF0E793D15p0", "0x0.019E1F89A0DBAA128p0", "0x0.01A5A00132E02CE42p0", "0x0.01AD325B1EFC9B5BCp0", +"0x0.01B4D69BDE569A322p0", "0x0.01BC8CC7EB323B553p0", "0x0.01C454E3C0F2458C8p0", "0x0.01CC2EF3DC187C2F6p0", +"0x0.01D41AFCBA45E6ED2p0", "0x0.01DC1902DA3B19A6Dp0", "0x0.01E4290ABBD87C5BCp0", "0x0.01EC4B18E01E9326Fp0", +"0x0.01F47F31C92E464FCp0", "0x0.01FCC559FA492A6B6p0", "0x0.02051D95F7D1C8917p0", "0x0.020D87EA474BE6A1Cp0", +"0x0.0216045B6F5CCF9CEp0", "0x0.021E92EDF7CB9C0E4p0", "0x0.022733A669817A88Ap0", "0x0.022FE6894E89F834Cp0", +"0x0.0238AB9B321349722p0", "0x0.024182E0A06E9289Bp0", "0x0.024A6C5E271030733p0", "0x0.02536818549001AC1p0", +"0x0.025C7613B8A9AF215p0", "0x0.02659654E43CF52B1p0", "0x0.026EC8E0694DEC9A9p0", "0x0.02780DBADB0553DA6p0", +"0x0.028164E8CDB0D8211p0", "0x0.028ACE6ED6C35EB5Fp0", "0x0.02944A518CD54E484p0", "0x0.029DD89587A4D858Dp0", +"0x0.02A7793F601642B5Dp0", "0x0.02B12C53B03431090p0", "0x0.02BAF1D7132FEE788p0", "0x0.02C4C9CE2561B759Fp0", +"0x0.02CEB43D844902F7Ap0", "0x0.02D8B129CE8CCD68Fp0", "0x0.02E2C097A3FBE17C9p0", "0x0.02ECE28BA58D22B56p0", +"0x0.02F7170A755FD759Ep0", "0x0.03015E18B6BBF2966p0", "0x0.030BB7BB0E125EB13p0", "0x0.031623F620FD4751Ep0", +"0x0.0320A2CE964063DACp0", "0x0.032B344915C941D54p0", "0x0.0335D86A48AF8F70Cp0", "0x0.03408F36D93566140p0", +"0x0.034B58B372C795013p0", "0x0.035634E4C1FDEC0D0p0", "0x0.036123CF749B8667Cp0", "0x0.036C2578398F157A0p0", +"0x0.037739E3C0F32BD30p0", "0x0.03826116BC0E882ACp0", "0x0.038D9B15DD5460763p0", "0x0.0398E7E5D864AD0E9p0", +"0x0.03A4478B620C73EB5p0", "0x0.03AFBA0B304613EEDp0", "0x0.03BB3F69FA3990464p0", "0x0.03C6D7AC783CDBDBFp0", +"0x0.03D282D763D424DCDp0", "0x0.03DE40EF77B220509p0", "0x0.03EA11F96FB855C4Fp0", "0x0.03F5F5FA08F76B0BBp0", +"0x0.0401ECF601AF700BDp0", "0x0.040DF6F219502AA55p0", "0x0.041A13F3107962A88p0", "0x0.042643FDA8FB2DDFBp0", +"0x0.04328716A5D63C2C4p0", "0x0.043EDD42CB3C23B6Dp0", "0x0.044B4686DE8FAD325p0", "0x0.0457C2E7A66520322p0", +"0x0.04645269EA828F932p0", "0x0.0470F51273E025F89p0", "0x0.047DAAE60CA8725B3p0", "0x0.048A73E98038B4ABFp0", +"0x0.049750219B212A8A0p0", "0x0.04A43F932B255C0B7p0", "0x0.04B14242FF3C689A0p0", "0x0.04BE5835E79153E1Dp0", +"0x0.04CB8170B58352D4Ep0", "0x0.04D8BDF83BA618C04p0", "0x0.04E60DD14DC22475Ep0", "0x0.04F37100C0D50D88Ep0", +"0x0.0500E78B6B11D19D6p0", "0x0.050E717623E121CBAp0", "0x0.051C0EC5C3E1B016Cp0", "0x0.0529BF7F24E87CF6Ap0", +"0x0.053783A7220124F51p0", "0x0.05455B42976E2E5EAp0", "0x0.0553465662A95706Bp0", "0x0.056144E76263E21F4p0", +"0x0.056F56FA7686E623Ep0", "0x0.057D7C9480339AD83p0", "0x0.058BB5BA61C3A75A3p0", "0x0.059A0270FEC97047Ap0", +"0x0.05A862BD3C1065F74p0", "0x0.05B6D6A3FF9D52C58p0", "0x0.05C55E2A30AEA974Ep0", "0x0.05D3F954B7BCD3A1Bp0", +"0x0.05E2A8287E7A8049Ep0", "0x0.05F16AAA6FD4F267Bp0", "0x0.060040DF77F44FA13p0", "0x0.060F2ACC843BEF0A0p0", +"0x0.061E2876834AA7FA4p0", "0x0.062D39E264FB20F7Ep0", "0x0.063C5F151A641EB4Cp0", "0x0.064B981395D8D31FEp0", +"0x0.065AE4E2CAE92C8AAp0", "0x0.066A4587AE6224E1Cp0", "0x0.0679BA07364E10FA3p0", "0x0.0689426659F4EFF1Bp0", +"0x0.0698DEAA11DCBAA37p0", "0x0.06A88ED757C9B3304p0", "0x0.06B852F326BEB49B0p0", "0x0.06C82B027AFD8278Ap0", +"0x0.06D8170A520718B46p0", "0x0.06E8170FAA9BFB67Ep0", "0x0.06F82B1784BC86C72p0", "0x0.07085326E1A93F207p0", +"0x0.07188F42C3E320F0Bp0", "0x0.0728DF702F2BF10B2p0", "0x0.073943B428868CD5Ap0", "0x0.0749BC13B6373A98Fp0", +"0x0.075A4893DFC3F9E4Cp0", "0x0.076AE939ADF4D4083p0", "0x0.077B9E0A2AD42C9E8p0", "0x0.078C670A61AF122F4p0", +"0x0.079D443F5F158EE3Ap0", "0x0.07AE35AE30DAF94F1p0", "0x0.07BF3B5BE616454CBp0", "0x0.07D0554D8F2254F0Cp0", +"0x0.07E183883D9E498E2p0", "0x0.07F2C611046DD4D06p0", "0x0.08041CECF7B989EA2p0", "0x0.081588212CEF2ED73p0", +"0x0.082707B2BAC20DB40p0", "0x0.08389BA6B92B46284p0", "0x0.084A4402416A1EE6Fp0", "0x0.085C00CA6E045741Fp0", +"0x0.086DD2045AC678D2Bp0", "0x0.087FB7B524C42936Cp0", "0x0.0891B1E1EA587BE12p0", "0x0.08A3C08FCB2643FFEp0", + }; + ap_ufixed<64,-4> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 6,-4> f_x_msb_2_h; + f_x_msb_2_h(5,0) = f_x_msb_2(63,58); + ap_ufixed< 9,-1> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<67,-1> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(66,58) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(57, 0) = f_x_msb_2(57,0); + + ap_ufixed<130,-10> f_x_msb_2_3_4_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_lsb_m_1; + ap_ufixed<62,-10> f_x_msb_2_3_4_lsb_s = f_x_msb_2_3_4_lsb; + ap_ufixed<72,0> exp_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_3_4_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_lsb_m_1; + + const static ap_ufixed<68,32> exp_x_msb_1_table[256] = { +"0x1.000000000p0", "0x1.48B5E3C3Ep0", "0x1.A61298E1Ep0", "0x2.1DF3B68CFp0", +"0x2.B7E151628p0", "0x3.7D871DB61p0", "0x4.7B4FF993Fp0", "0x5.C12DA416Ep0", +"0x7.63992E353p0", "0x9.7CDC417A3p0", "0xC.2EB7EC98Fp0", "0xF.A48385EDFp0", +"0x14.15E5BF6FBp0", "0x19.CA53B7811p0", "0x21.1D8E4272Dp0", "0x2A.8565A144Cp0", +"0x36.99205C4E7p0", "0x46.1AFC4DB59p0", "0x5A.0462B7877p0", "0x73.9593ABB7Dp0", +"0x94.69C4CB819p0", "0xBE.90F6F83E9p0", "0xF4.B122790DDp0", "0x13A.30CF1CCBBp0", +"0x193.6DC5690C0p0", "0x206.03487A3B1p0", "0x299.2442102D9p0", "0x356.0F0B0F980p0", +"0x448.A216ABB76p0", "0x580.1AD754FA3p0", "0x710.0ADBAC7DAp0", "0x911.9289C3923p0", +"0xBA4.F53EA3863p0", "0xEF3.A035D5798p0", "0x1332.C4D2B7C4Ap0", "0x18A6.B027DA0A7p0", +"0x1FA7.157C470F8p0", "0x28A4.90D2CCEF1p0", "0x342F.BA11823B8p0", "0x4302.3A933EE5Cp0", +"0x560A.773E54157p0", "0x6E7A.8ABB4A83Cp0", "0x8DDB.80AF4269Dp0", "0xB626.0748BAEC7p0", +"0xE9E2.2447727BFp0", "0x12C4F.EB75B2AB0p0", "0x1819B.C560F6113p0", "0x1EF21.8F1B001A4p0", +"0x27BC2.CA9A6F934p0", "0x33055.49F35D91Fp0", "0x41831.49596E996p0", "0x541E7.E56949D58p0", +"0x6C02D.645AB2554p0", "0x8AB06.0A3EE9FB1p0", "0xB2148.5EAE56C5Bp0", "0xE4A8D.2881EDBE8p0", +"0x1259AC.48BF05D6Ep0", "0x178FEE.7792E44B3p0", "0x1E4127.437732B71p0", "0x26D8F9.4A204BEA5p0", +"0x31E199.5F5A550DDp0", "0x400C7D.64D3386CBp0", "0x523D82.79EDAEF9Cp0", "0x69993D.D4F2D9524p0", +"0x87975E.854001024p0", "0xAE1A47.C38A42CD0p0", "0xDF8D5F.6DCFE5CEAp0", "0x11F0BF8.1E99FDEB6p0", +"0x1709348.C0EA4F8CEp0", "0x1D94295.464477ACCp0", "0x25FAD90.65C78E342p0", "0x30C4623.616ED2BE2p0", +"0x3E9E441.232817A61p0", "0x506744D.3B342FC94p0", "0x673D70B.C00F1F76Dp0", "0x849012B.C127FC962p0", +"0xAA36C7C.F69370B94p0", "0xDA8F202.DD9ACE661p0", "0x118A2AAE.0AA05236Bp0", "0x16857CFA.1AA8A5555p0", +"0x1CEB088B.68E804021p0", "0x2521AEDA.32CD52BE5p0", "0x2FAD89E1.79BAB8EADp0", "0x3D3838C6.BE0F13F06p0", +"0x4E9B87F6.7BB3F5597p0", "0x64EF201B.01109A4A5p0", "0x819A1801.9394C0D96p0", "0xA6698403.CF5D9E663p0", +"0xD5AD6DCE.21AFFC0DDp0", "0x1125E066B.0B19418CCp0", "0x1604B68CF.05F65FAA9p0", "0x1C45AED0A.D0C934CDCp0", +"0x244D5E676.3FB814AF0p0", "0x2E9CEBF49.9C21839C7p0", "0x3BDA2CBD0.9F5AC2146p0", "0x4CDA0FD41.989F004E7p0", +"0x62ADFED51.D7EDCCDE6p0", "0x7EB50B520.76F91D6E8p0", "0xA2B1FD3D9.A57B6C33Cp0", "0xD0E7A50F4.EF0D7447Fp0", +"0x10C3D39209.62C88AAFBp0", "0x1586D0722B.3EEB27301p0", "0x1BA4068AAC.2B6E3EE34p0", "0x237DCBF1E5.709A9F9C1p0", +"0x2D9264D2D4.D6B94153Bp0", "0x3A83F23B18.FE5BD524Ap0", "0x4B22A1B5C3.27A2FD85Ap0", "0x6079C1866C.71A93951Dp0", +"0x7BE08BDFD9.CC72249ABp0", "0x9F0FB7309C.B446D3919p0", "0xCC3D265776.C3D25779Ep0", "0x1063F7612B0.C0831CA6Cp0", +"0x150BBA37963.79A4FB6ADp0", "0x1B05FA9B62E.737D935B8p0", "0x22B2DC5C41D.AD89559EBp0", "0x2C8DD1AB28B.404414BE7p0", +"0x39355C8C638.0AC5631B1p0", "0x49750434675.301B8D0E7p0", "0x5E521E7A16E.51F9CD3C2p0", "0x791C3B06F8B.EA2DEC48Cp0", +"0x9B823857614.764F43E20p0", "0xC7AD559D438.E7C270C30p0", "0x10063F4E687B.A1A43A35Bp0", "0x149363C905BA.3641D0164p0", +"0x1A6B765D8CDF.6CDBF1C63p0", "0x21EC75240E66.E2891CE63p0", "0x2B8F1073A6AF.BA219DB61p0", "0x37EE3FFC0063.E360F931Fp0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000001p0", "0x0.000000001p0", "0x0.000000002p0", +"0x0.000000002p0", "0x0.000000003p0", "0x0.000000004p0", "0x0.000000005p0", +"0x0.000000007p0", "0x0.000000009p0", "0x0.00000000Bp0", "0x0.00000000Ep0", +"0x0.000000013p0", "0x0.000000018p0", "0x0.00000001Fp0", "0x0.000000028p0", +"0x0.000000034p0", "0x0.000000042p0", "0x0.000000055p0", "0x0.00000006Ep0", +"0x0.00000008Dp0", "0x0.0000000B5p0", "0x0.0000000E9p0", "0x0.00000012Bp0", +"0x0.000000181p0", "0x0.0000001EEp0", "0x0.00000027Ap0", "0x0.00000032Fp0", +"0x0.000000416p0", "0x0.00000053Fp0", "0x0.0000006BDp0", "0x0.0000008A7p0", +"0x0.000000B1Cp0", "0x0.000000E44p0", "0x0.000001252p0", "0x0.000001786p0", +"0x0.000001E35p0", "0x0.0000026C9p0", "0x0.0000031CEp0", "0x0.000003FF3p0", +"0x0.00000521Dp0", "0x0.000006970p0", "0x0.000008762p0", "0x0.00000ADD6p0", +"0x0.00000DF36p0", "0x0.000011E9Cp0", "0x0.000017003p0", "0x0.00001D88Ap0", +"0x0.000025EC0p0", "0x0.000030B15p0", "0x0.00003E85Dp0", "0x0.00005047Ep0", +"0x0.000067153p0", "0x0.0000845C6p0", "0x0.0000A9F46p0", "0x0.0000DA39Ep0", +"0x0.000118354p0", "0x0.000167CB5p0", "0x0.0001CDFC2p0", "0x0.000251334p0", +"0x0.0002F9AF3p0", "0x0.0003D205Ap0", "0x0.0004E7CE2p0", "0x0.00064C7C6p0", +"0x0.000816791p0", "0x0.000A628A3p0", "0x0.000D55A1Fp0", "0x0.00111F30Fp0", +"0x0.0015FC210p0", "0x0.001C3AA91p0", "0x0.00243F374p0", "0x0.002E8ABFCp0", +"0x0.003BC2D73p0", "0x0.004CBC19Ap0", "0x0.006287862p0", "0x0.007E83A56p0", +"0x0.00A2728F8p0", "0x0.00D096336p0", "0x0.010BD4A5Ap0", "0x0.0157E6BFEp0", +"0x0.01B993FE0p0", "0x0.0236FF5BFp0", "0x0.02D80A08Dp0", "0x0.03A6D2222p0", +"0x0.04B0556E0p0", "0x0.0605424D5p0", "0x0.07BB04063p0", "0x0.09ED1B429p0", +"0x0.0CBED8666p0", "0x0.105D93892p0", "0x0.150385C09p0", "0x0.1AFB718E8p0", +"0x0.22A555477p0", "0x0.2C7C72FC0p0", "0x0.391F0EE49p0", "0x0.495860DCAp0", +"0x0.5E2D58D8Bp0", "0x0.78ED03AFBp0", "0x0.9B4597E37p0", "0x0.C75F7CF56p0", + }; + ap_ufixed<68,32> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<140,32> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_lsb_m_1; + ap_ufixed<68,32> y_lo_s = y_lo; + ap_ufixed<68,32> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + if (I_<33) { // overflow + bool overf = 0; + for (int j = 63; j >= I_+31; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 63; j >= I_+31; j--) { + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+30; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } + return r; +} +//implement exp() function with Input width larger than output width + +template +ap_fixed exp_core(ap_fixed x) +{ +#pragma HLS pipeline + + const static int FO_ = WO_ - I_; + const static int FI_ = WI_ - I_; + + //only support I_ < 33, FO_ < 32 and FI_ < 100 + if (I_>33) return 0; + else if (FO_>32) return 0; + else if (FI_>100) return 0; + + // I_s_ is the number of integer bits we need to calculate + // I_s_ = ceil( ln2 * max ( I_-1 , FO_ ) ) + // I_s_ = [1..6] + int I_s_; + int M_ = (I_-1>FO_) ? (I_-1) : FO_; + if (M_==1) I_s_ = 1; + else if (M_==2) I_s_ = 2; + else if (M_<6) I_s_ = 3; + else if (M_<12) I_s_ = 4; + else if (M_<24) I_s_ = 5; + else I_s_ = 6; + + ap_fixed r = 0; + + ap_ufixed<1,-FO_> delta = 0; + delta[0] = 1; + + if (I_s_==1) { // I_s_ = 1, M_ = 1, I_ <= 2, FO_ <= 1, WO <=3, WI <= 7 + //00.00000-00.01011 1.0 + //00.01100-01.11111 1.1 + //11.11111-11.01010 0.1 + //11.01001-10.00000 0.0 + //std::cout<<"x="<7 + ap_fixed x_l = x; + ap_ufixed<3,2> y = 0; + ap_ufixed<5,0> x_l_fract=0; + x_l_fract(4,0) = x_l(4,0); + //std::cout<<"[EXP]x_l="< exp_x_msb_table[32] = { + "0x1.00p0", "0x1.48p0", "0x1.A6p0", "0x2.1Dp0", "0x2.B7p0", "0x3.7Dp0", "0x4.7Bp0", "0x5.C1p0", + "0x0.22p0", "0x0.2Cp0", "0x0.39p0", "0x0.49p0", "0x0.5Ep0", "0x0.78p0", "0x0.9Bp0", "0x0.C7p0", + }; + ap_ufixed<5,2> exp_x_msb = exp_x_msb_table[x_msb_ind]; + //std::cout<<"exp_x_msb="< y_lo = x_lsb * exp_x_msb; + //std::cout<<"y_lo="< y_l = y_lo + exp_x_msb; + //std::cout<<"y_l="<= I_+1; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 4; j >= I_+1; j--) { + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + r = y; + } else if (I_s_==3) { // I_s_ = 3, M_ = 3..5, I_ <= 6, FO_ <= 5/13, WO <=11, WI<=19 + //std::cout<<"[EXP]x="< x_l = x; + ap_ufixed<11,6> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(wf+2,wf); + ap_ufixed x_l_fract; + x_l_fract(wf-1,0) = x_l(wf-1,0); + //std::cout<<"x_l_fract="< x_msb_ind_1; + x_msb_ind_1[3] = x_l[w-1]; + //xx.x + x_msb_ind_1(2,0) = x_l(wf+1,wf-1); + //00.0xxxxx + ap_uint<6> x_msb_ind_2; + x_msb_ind_2(5,0) = x_l(wf-2,wf-7); + ap_ufixed<6,-1> x_msb_2 = x_l; + //00.000000xxxxx + ap_ufixed x_lsb = x_l; + + const static ap_ufixed exp_x_msb_2_m_1_table[64] = { + "0x0.0p0", "0x0.0202p0", "0x0.0408p0", "0x0.0612p0", + "0x0.0820p0", "0x0.0A32p0", "0x0.0C49p0", "0x0.0E63p0", + "0x0.1082p0", "0x0.12A5p0", "0x0.14CDp0", "0x0.16F9p0", + "0x0.1929p0", "0x0.1B5Dp0", "0x0.1D96p0", "0x0.1FD4p0", + "0x0.2216p0", "0x0.245Cp0", "0x0.26A7p0", "0x0.28F7p0", + "0x0.2B4Bp0", "0x0.2DA4p0", "0x0.3001p0", "0x0.3264p0", + "0x0.34CBp0", "0x0.3737p0", "0x0.39A8p0", "0x0.3C1Ep0", + "0x0.3E98p0", "0x0.4118p0", "0x0.439Dp0", "0x0.4627p0", + "0x0.48B5p0", "0x0.4B49p0", "0x0.4DE3p0", "0x0.5081p0", + "0x0.5325p0", "0x0.55CEp0", "0x0.587Cp0", "0x0.5B2Fp0", + "0x0.5DE9p0", "0x0.60A7p0", "0x0.636Bp0", "0x0.6635p0", + "0x0.6904p0", "0x0.6BD9p0", "0x0.6EB3p0", "0x0.7194p0", + "0x0.747Ap0", "0x0.7766p0", "0x0.7A57p0", "0x0.7D4Fp0", + "0x0.804Dp0", "0x0.8350p0", "0x0.865Ap0", "0x0.896Ap0", + "0x0.8C80p0", "0x0.8F9Cp0", "0x0.92BEp0", "0x0.95E7p0", + "0x0.9916p0", "0x0.9C4Bp0", "0x0.9F87p0", "0x0.A2C9p0", + }; + //6*6 + ap_ufixed<5,-8> f_x_msb_2_lsb = x_msb_2 * x_lsb;//Z_5*Z_lsb //1u + //std::cout<<"f_x_msb_2_lsb="< f_x_msb_2_lsb_m_1_m=0; + f_x_msb_2_lsb_m_1_m(5,0) = x_lsb(5,0); + f_x_msb_2_lsb_m_1_m = f_x_msb_2_lsb_m_1_m + f_x_msb_2_lsb;//1u + //std::cout<<"f_x_msb_2_lsb_m_1_m="< exp_x_msb_2_m_1 = exp_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed exp_x_msb_2_lsb_m_1 = f_x_msb_2_lsb_m_1_m + exp_x_msb_2_m_1;//2u + //std::cout<<"exp_x_msb_2_m_1="< exp_x_msb_1_table[16] = { + "0x1.0000p0", "0x1.A612p0", "0x2.B7E1p0", "0x4.7B4Fp0", + "0x7.6399p0", "0xC.2EB7p0", "0x14.15E5p0", "0x21.1D8Ep0", + "0x0.04B0p0", "0x0.07BBp0", "0x0.0CBEp0", "0x0.1503p0", + "0x0.22A5p0", "0x0.391Fp0", "0x0.5E2Dp0", "0x0.9B45p0", + + }; + ap_ufixed exp_x_msb = exp_x_msb_1_table[x_msb_ind_1]; + //13*13--1 DSP + ap_ufixed<2*Maxprecision+1,6> y_lo = exp_x_msb * exp_x_msb_2_lsb_m_1;//1u + ap_ufixed y_lo_s = y_lo; + ap_ufixed y_l = y_lo_s + exp_x_msb;// + y = y_l; + //std::cout<<"[EXP]y="<= I_+4; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 10; j >= I_+4; j--) { + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+3; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + //} + r = y; + } else if (I_s_==4) { // I_s_ = 4, M_ = 6..11, I_ <= 12, FO_ <= 11/25, WO <=23, WI <= 37 + //std::cout<<"x="< x_l = x; + ap_ufixed<23,12> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(wf+3,wf); + ap_ufixed x_l_fract; + x_l_fract(wf-1,0) = x_l(wf-1,0); + bool overf = 0; + for (int j = wf+3; j < w-1; j++) { + #pragma HLS unroll + if (x_l[w-1]!=x_l[j]) + overf = 1; + } + if (overf||((x_l_int==7)&&(x_l_fract>ap_ufixed("0x0.9fe7038p0")))) { // overflow + if (!x_l[w-1]) { + for (int j = 0; j < 22; j++) { + #pragma HLS unroll + y[j] = 1; + } + } + } else { + const static int g = 2; + const static int Maxprecision = 25;//we+FO_+g=11+12+2=25 + ap_uint<5> x_msb_ind_1; + x_msb_ind_1[4] = x_l[w-1]; + x_msb_ind_1(3,0) = x_l(wf+2,wf-1); + + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(wf-2,wf-6); + ap_ufixed<5,-1> x_msb_2 = x_l; + + ap_uint<7> x_msb_ind_3; + x_msb_ind_3(6,0) = x_l(wf-7,wf-13); + ap_ufixed<7,-6> x_msb_3 = x_l; + + ap_ufixed<7,-13> x_lsb = x_l; + //to 25-bit + const static ap_ufixed<12,-13> f_x_msb_3_m_1_table[128] = { +"0x0.0p0", "0x0.0000002p0", "0x0.0000008p0", "0x0.0000012p0", +"0x0.0000020p0", "0x0.0000032p0", "0x0.0000048p0", "0x0.0000062p0", +"0x0.0000080p0", "0x0.00000A2p0", "0x0.00000C8p0", "0x0.00000F2p0", +"0x0.0000120p0", "0x0.0000152p0", "0x0.0000188p0", "0x0.00001C2p0", +"0x0.0000200p0", "0x0.0000242p0", "0x0.0000288p0", "0x0.00002D2p0", +"0x0.0000320p0", "0x0.0000372p0", "0x0.00003C8p0", "0x0.0000422p0", +"0x0.0000481p0", "0x0.00004E3p0", "0x0.0000549p0", "0x0.00005B3p0", +"0x0.0000621p0", "0x0.0000693p0", "0x0.000070Ap0", "0x0.0000784p0", +"0x0.0000802p0", "0x0.0000884p0", "0x0.000090Bp0", "0x0.0000995p0", +"0x0.0000A23p0", "0x0.0000AB6p0", "0x0.0000B4Cp0", "0x0.0000BE6p0", +"0x0.0000C85p0", "0x0.0000D27p0", "0x0.0000DCEp0", "0x0.0000E78p0", +"0x0.0000F26p0", "0x0.0000FD9p0", "0x0.000108Fp0", "0x0.000114Ap0", +"0x0.0001209p0", "0x0.00012CBp0", "0x0.0001392p0", "0x0.000145Cp0", +"0x0.000152Bp0", "0x0.00015FEp0", "0x0.00016D4p0", "0x0.00017AFp0", +"0x0.000188Ep0", "0x0.0001971p0", "0x0.0001A57p0", "0x0.0001B42p0", +"0x0.0001C31p0", "0x0.0001D24p0", "0x0.0001E1Bp0", "0x0.0001F16p0", +"0x0.0002015p0", "0x0.0002118p0", "0x0.000221Fp0", "0x0.000232Ap0", +"0x0.0002439p0", "0x0.000254Cp0", "0x0.0002663p0", "0x0.000277Fp0", +"0x0.000289Ep0", "0x0.00029C1p0", "0x0.0002AE9p0", "0x0.0002C14p0", +"0x0.0002D43p0", "0x0.0002E77p0", "0x0.0002FAEp0", "0x0.00030EAp0", +"0x0.0003229p0", "0x0.000336Dp0", "0x0.00034B4p0", "0x0.0003600p0", +"0x0.0003750p0", "0x0.00038A4p0", "0x0.00039FBp0", "0x0.0003B57p0", +"0x0.0003CB7p0", "0x0.0003E1Bp0", "0x0.0003F83p0", "0x0.00040EFp0", +"0x0.000425Fp0", "0x0.00043D3p0", "0x0.000454Bp0", "0x0.00046C7p0", +"0x0.0004848p0", "0x0.00049CCp0", "0x0.0004B54p0", "0x0.0004CE1p0", +"0x0.0004E71p0", "0x0.0005006p0", "0x0.000519Ep0", "0x0.000533Bp0", +"0x0.00054DBp0", "0x0.0005680p0", "0x0.0005829p0", "0x0.00059D6p0", +"0x0.0005B86p0", "0x0.0005D3Bp0", "0x0.0005EF4p0", "0x0.00060B1p0", +"0x0.0006272p0", "0x0.0006437p0", "0x0.0006600p0", "0x0.00067CEp0", +"0x0.000699Fp0", "0x0.0006B74p0", "0x0.0006D4Ep0", "0x0.0006F2Bp0", +"0x0.000710Dp0", "0x0.00072F2p0", "0x0.00074DCp0", "0x0.00076CAp0", +"0x0.00078BBp0", "0x0.0007AB1p0", "0x0.0007CABp0", "0x0.0007EA9p0", + }; + //7*7 + ap_ufixed<6,-19> f_x_msb_3_lsb = x_msb_3 * x_lsb;//1u + //std::cout<<"f_x_msb_3_lsb="< f_x_msb_3 = f_x_msb_3_m_1_table[x_msb_ind_3]; + //std::cout<<"f_x_msb_3="< exp_x_msb_3_lsb_m_1_m = 0; + exp_x_msb_3_lsb_m_1_m(11,0) = f_x_msb_3(11,0); + exp_x_msb_3_lsb_m_1_m = exp_x_msb_3_lsb_m_1_m + f_x_msb_3_lsb;//2u + //std::cout<<"exp_x_msb_3_lsb_m_1_m="< x_msb_3_lsb = x_l; + //std::cout<<"x_msb_3_lsb="< exp_x_msb_3_lsb_m_1 = 0;//carry in + exp_x_msb_3_lsb_m_1(18,0) = x_msb_3_lsb(18,0); + exp_x_msb_3_lsb_m_1 = exp_x_msb_3_lsb_m_1+ exp_x_msb_3_lsb_m_1_m;//2u + //std::cout<<"exp_x_msb_3_lsb_m_1_m="< exp_x_msb_2_m_1_table[32] = { + "0x0.0000000p0", "0x0.04080a8p0", "0x0.0820560p0", "0x0.0c49238p0", + "0x0.1082b58p0", "0x0.14cd500p0", "0x0.1929370p0", "0x0.1d96b10p0", + "0x0.2216048p0", "0x0.26a7790p0", "0x0.2b4b588p0", "0x0.3001ed0p0", + "0x0.34cb818p0", "0x0.39a8628p0", "0x0.3e98de8p0", "0x0.439d440p0", + "0x0.48b5e40p0", "0x0.4de30f0p0", "0x0.5325180p0", "0x0.587c540p0", + "0x0.5de9178p0", "0x0.636bb98p0", "0x0.6904930p0", "0x0.6eb3fc8p0", + "0x0.747a510p0", "0x0.7a57ee0p0", "0x0.804d300p0", "0x0.865a778p0", + "0x0.8c80248p0", "0x0.92be998p0", "0x0.99163b0p0", "0x0.9f876e8p0", + }; + ap_ufixed<25, 0> exp_x_msb_2_m_1 = exp_x_msb_2_m_1_table[x_msb_ind_2]; + //25*25 + ap_ufixed<50,-5> f_x_msb_2_3_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_lsb_m_1; + ap_ufixed<20,-5> f_x_msb_2_3_lsb_s = f_x_msb_2_3_lsb; + ap_ufixed<25, 0> exp_x_msb_2_3_lsb_m_1 = f_x_msb_2_3_lsb_s + exp_x_msb_3_lsb_m_1 + exp_x_msb_2_m_1;//3u + //std::cout<<"exp_x_msb_2_3_lsb_m_1="< exp_x_msb_1_table[32] = { + "0x1.0000p0", "0x1.a614p0", "0x2.b7e0p0", "0x4.7b50p0", + "0x7.6398p0", "0xc.2eb8p0", "0x14.15e4p0", "0x21.1d90p0", + "0x36.9920p0", "0x5a.0464p0", "0x94.69c4p0", "0xf4.b124p0", + "0x193.6dc4p0", "0x299.2444p0", "0x448.a218p0", "0x710.0adcp0", + "0x0.0014p0", "0x0.0024p0", "0x0.003cp0", "0x0.0064p0", + "0x0.00a4p0", "0x0.010cp0", "0x0.01b8p0", "0x0.02d8p0", + "0x0.04b0p0", "0x0.07bcp0", "0x0.0cc0p0", "0x0.1504p0", + "0x0.22a4p0", "0x0.3920p0", "0x0.5e2cp0", "0x0.9b44p0", + }; + ap_ufixed<25,11> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + //std::cout<<"exp_x_msb_1="< y_lo = exp_x_msb_1 * exp_x_msb_2_3_lsb_m_1; + //std::cout<<"y_lo="< y_lo_s = y_lo; + //std::cout<<"y_lo_s="< y_l = y_lo_s + exp_x_msb_1; + //std::cout<<"y_l="< x_msb_ind_1; + x_msb_ind_1[7] = x_l[w-1]; + x_msb_ind_1(6,0) = x_l(wf+3,wf-3); + + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(wf-4,wf-11); + ap_uint<5> x_msb_ind_3; + x_msb_ind_3(4,0) = x_l(wf-12,wf-16); + ap_uint<3> x_msb_ind_4; + x_msb_ind_4(2,0) = x_l(wf-17,wf-19); + + ap_uint<6> x_msb_ind_5; + x_msb_ind_5(5,0) = x_l(wf-20,wf-25); + + ap_ufixed<8, -3> x_msb_2 = x_l; + ap_ufixed<5,-11> x_msb_3 = x_l; + ap_ufixed<3,-16> x_msb_4 = x_l; + ap_ufixed<6,-19> x_msb_5 = x_l; + //truncate + ap_ufixed<7,-25> x_lsb = x_l; + + const static ap_ufixed<12,-39> f_x_msb_5_table[64] = { +"0x0.0000000000000p0", "0x0.0000000000002p0", "0x0.0000000000008p0", "0x0.0000000000012p0", +"0x0.0000000000020p0", "0x0.0000000000032p0", "0x0.0000000000048p0", "0x0.0000000000062p0", +"0x0.0000000000080p0", "0x0.00000000000A2p0", "0x0.00000000000C8p0", "0x0.00000000000F2p0", +"0x0.0000000000120p0", "0x0.0000000000152p0", "0x0.0000000000188p0", "0x0.00000000001C2p0", +"0x0.0000000000200p0", "0x0.0000000000242p0", "0x0.0000000000288p0", "0x0.00000000002D2p0", +"0x0.0000000000320p0", "0x0.0000000000372p0", "0x0.00000000003C8p0", "0x0.0000000000422p0", +"0x0.0000000000480p0", "0x0.00000000004E2p0", "0x0.0000000000548p0", "0x0.00000000005B2p0", +"0x0.0000000000620p0", "0x0.0000000000692p0", "0x0.0000000000708p0", "0x0.0000000000782p0", +"0x0.0000000000800p0", "0x0.0000000000882p0", "0x0.0000000000908p0", "0x0.0000000000992p0", +"0x0.0000000000A20p0", "0x0.0000000000AB2p0", "0x0.0000000000B48p0", "0x0.0000000000BE2p0", +"0x0.0000000000C80p0", "0x0.0000000000D22p0", "0x0.0000000000DC8p0", "0x0.0000000000E72p0", +"0x0.0000000000F20p0", "0x0.0000000000FD2p0", "0x0.0000000001088p0", "0x0.0000000001142p0", +"0x0.0000000001200p0", "0x0.00000000012C2p0", "0x0.0000000001388p0", "0x0.0000000001452p0", +"0x0.0000000001520p0", "0x0.00000000015F2p0", "0x0.00000000016C8p0", "0x0.00000000017A2p0", +"0x0.0000000001880p0", "0x0.0000000001962p0", "0x0.0000000001A48p0", "0x0.0000000001B32p0", +"0x0.0000000001C20p0", "0x0.0000000001D12p0", "0x0.0000000001E08p0", "0x0.0000000001F02p0", + + }; + ap_ufixed<12,-39> f_x_msb_5 = f_x_msb_5_table[x_msb_ind_5]; + + const static ap_ufixed<7,-33> f_x_msb_4_table[8] = { +"0x0.0000000000p0", "0x0.0000000002p0", "0x0.0000000008p0", "0x0.0000000012p0", +"0x0.0000000020p0", "0x0.0000000032p0", "0x0.0000000048p0", "0x0.0000000062p0", + }; + ap_ufixed<7,-33> f_x_msb_4 = f_x_msb_4_table[x_msb_ind_4]; + //6*7 + ap_ufixed<7,-44> f_x_msb_5_lsb = x_msb_5 * x_lsb;//Z_lsb*Z_5 //1u + + ap_ufixed<16,-19> x_msb_5_lsb = x_l; + //3*16 + ap_ufixed<19,-35> f_x_msb_4_5_lsb = x_msb_5_lsb * x_msb_4;//(Z_5+Z_lsb)*Z_4 + ap_ufixed<16,-35> f_x_msb_4_5_lsb_s = f_x_msb_4_5_lsb;//1u + + ap_ufixed<13,-38> exp_x_msb_4_5_lsb_m_1_m3 = 0; + exp_x_msb_4_5_lsb_m_1_m3(11,0)=f_x_msb_5(11,0); + exp_x_msb_4_5_lsb_m_1_m3 = exp_x_msb_4_5_lsb_m_1_m3+f_x_msb_5_lsb;//3u + + ap_ufixed<17,-34> exp_x_msb_4_5_lsb_m_1_m4 = 0; + exp_x_msb_4_5_lsb_m_1_m4(15,0)=f_x_msb_4_5_lsb_s(15,0); + exp_x_msb_4_5_lsb_m_1_m4 = exp_x_msb_4_5_lsb_m_1_m4 + f_x_msb_4_5_lsb_s;//4u + + ap_ufixed<8,-32> exp_x_msb_4_5_lsb_m_1_m5_s = 0; + exp_x_msb_4_5_lsb_m_1_m5_s(5,0)=exp_x_msb_4_5_lsb_m_1_m4(16,11); + exp_x_msb_4_5_lsb_m_1_m5_s = f_x_msb_4+exp_x_msb_4_5_lsb_m_1_m5_s;//5u + + ap_ufixed<19,-32> exp_x_msb_4_5_lsb_m_1_m5 = exp_x_msb_4_5_lsb_m_1_m5_s; + exp_x_msb_4_5_lsb_m_1_m5(10,0)=exp_x_msb_4_5_lsb_m_1_m4(10,0); + + ap_ufixed<32,-15> exp_x_msb_4_5_lsb_m_1_m6 = 0; + ap_ufixed x_msb_4_5_lsb = x_l; + exp_x_msb_4_5_lsb_m_1_m6(14,0) = exp_x_msb_4_5_lsb_m_1_m5(18,4); + exp_x_msb_4_5_lsb_m_1_m6 = exp_x_msb_4_5_lsb_m_1_m6 + x_msb_4_5_lsb; + ap_ufixed<36,-15> exp_x_msb_4_5_lsb_m_1 = exp_x_msb_4_5_lsb_m_1_m6; + exp_x_msb_4_5_lsb_m_1(3,0) = exp_x_msb_4_5_lsb_m_1_m5(3,0); + + + const static ap_ufixed<32,-23> f_x_msb_3_table[32] = { +"0x0.00000000000000p0", "0x0.0000000080002ap0", "0x0.00000002000156p0", "0x0.00000004800480p0", +"0x0.00000008000aaap0", "0x0.0000000c8014d6p0", "0x0.00000012002400p0", "0x0.0000001880392cp0", +"0x0.00000020005556p0", "0x0.00000028807982p0", "0x0.0000003200a6acp0", "0x0.0000003c80ddd8p0", +"0x0.00000048012004p0", "0x0.00000054816e30p0", "0x0.0000006201c95cp0", "0x0.00000070823288p0", +"0x0.0000008002aab6p0", "0x0.000000908332e2p0", "0x0.000000a203cc12p0", "0x0.000000b4847740p0", +"0x0.000000c8053570p0", "0x0.000000dc8607a0p0", "0x0.000000f206eed0p0", "0x0.0000010887ec02p0", +"0x0.00000120090036p0", "0x0.000001388a2c6ap0", "0x0.000001520b71a0p0", "0x0.0000016c8cd0d6p0", +"0x0.000001880e4b0ep0", "0x0.000001a48fe148p0", "0x0.000001c2119484p0", "0x0.000001e09365c0p0", + }; + + ap_ufixed<32,-23> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<44,-11> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(43,39) = x_msb_3(4,0); + exp_x_msb_3_m_1(31, 0) = f_x_msb_3(31,0); + + //32*43 = (17+17)*(24+24) + ap_ufixed<80,-26> f_x_msb_3_4_lsb = exp_x_msb_3_m_1 * exp_x_msb_4_5_lsb_m_1;//1u + ap_ufixed<31,-26> f_x_msb_3_4_lsb_s = f_x_msb_3_4_lsb; + ap_ufixed<48,-10> exp_x_msb_3_4_lsb_m_1 = f_x_msb_3_4_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_5_lsb_m_1;//1u+1u+5u=7u + + + const static ap_ufixed<46,-6> f_x_msb_2_table[256] = { +"0x0.0p0", "0x0.0000020015560p0", "0x0.00000800AAB55p0", "0x0.0000120240360p0", +"0x0.0000200556001p0", "0x0.0000320A6C4B8p0", "0x0.0000481203608p0", "0x0.0000621C9B971p0", +"0x0.0000802AB5577p0", "0x0.0000A23CD119Dp0", "0x0.0000C8536F668p0", "0x0.0000F26F10D5Dp0", +"0x0.0001209036103p0", "0x0.000152B75FCE3p0", "0x0.000188E50ED86p0", "0x0.0001C319C4077p0", +"0x0.0002015600445p0", "0x0.0002439A4487Ep0", "0x0.000289E711DB3p0", "0x0.0002D43CE9577p0", +"0x0.0003229C4C260p0", "0x0.00037505BB805p0", "0x0.0003CB79B8B01p0", "0x0.000425F8C50F2p0", +"0x0.0004848362076p0", "0x0.0004E71A11131p0", "0x0.00054DBD53BC8p0", "0x0.0005B86DAB9E3p0", +"0x0.0006272B9A630p0", "0x0.000699F7A1C5Dp0", "0x0.000710D24391Ep0", "0x0.00078BBC01A29p0", +"0x0.00080AB55DE39p0", "0x0.00088DBEDA50Bp0", "0x0.000914D8F8F63p0", "0x0.0009A0043BF07p0", +"0x0.000A2F41256C2p0", "0x0.000AC29037A63p0", "0x0.000B59F1F4EBDp0", "0x0.000BF566DF9AAp0", +"0x0.000C94EF7A206p0", "0x0.000D388C46FB4p0", "0x0.000DE03DC8B9Bp0", "0x0.000E8C0481FA7p0", +"0x0.000F3BE0F56CAp0", "0x0.000FEFD3A5CFAp0", "0x0.0010A7DD15F36p0", "0x0.001163FDC8B7Fp0", +"0x0.00122436410DDp0", "0x0.0012E88701F5Ep0", "0x0.0013B0F08E817p0", "0x0.00147D7369D22p0", +"0x0.00154E101719Fp0", "0x0.001622C7199B7p0", "0x0.0016FB98F4A96p0", "0x0.0017D8862BA72p0", +"0x0.0018B98F42084p0", "0x0.00199EB4BB511p0", "0x0.001A87F71B161p0", "0x0.001B7556E4FC4p0", +"0x0.001C66D49CB93p0", "0x0.001D5C70C612Dp0", "0x0.001E562BE4DFAp0", "0x0.001F54067D067p0", +"0x0.00205601127ECp0", "0x0.00215C1C29507p0", "0x0.0022665845940p0", "0x0.002374B5EB724p0", +"0x0.002487359F24Cp0", "0x0.00259DD7E4F57p0", "0x0.0026B89D413EFp0", "0x0.0027D786386C4p0", +"0x0.0028FA934EF90p0", "0x0.002A21C509717p0", "0x0.002B4D1BEC726p0", "0x0.002C7C987CA92p0", +"0x0.002DB03B3ED3Ap0", "0x0.002EE804B7C07p0", "0x0.003023F56C4ECp0", "0x0.0031640DE16E3p0", +"0x0.0032A84E9C1F5p0", "0x0.0033F0B821730p0", "0x0.00353D4AF68B0p0", "0x0.00368E07A0999p0", +"0x0.0037E2EEA4E19p0", "0x0.00393C0088B6Cp0", "0x0.003A993DD17D5p0", "0x0.003BFAA704AA3p0", +"0x0.003D603CA7C32p0", "0x0.003EC9FF405E6p0", "0x0.004037EF54230p0", "0x0.0041AA0D68C8Cp0", +"0x0.0043205A04182p0", "0x0.00449AD5ABEA5p0", "0x0.00461980E6294p0", "0x0.00479C5C38CF9p0", +"0x0.0049236829E8Bp0", "0x0.004AAEA53F90Ep0", "0x0.004C3E13FFF51p0", "0x0.004DD1B4F152Fp0", +"0x0.004F698899F90p0", "0x0.0051058F8046Ap0", "0x0.0052A5CA2AABFp0", "0x0.00544A391FA9Cp0", +"0x0.0055F2DCE5D1Ep0", "0x0.00579FB603C6Ep0", "0x0.005950C5003C2p0", "0x0.005B060A61F5Dp0", +"0x0.005CBF86AFC91p0", "0x0.005E7D3A709BEp0", "0x0.00603F262B650p0", "0x0.0062054A672C2p0", +"0x0.0063CFA7AB09Dp0", "0x0.00659E3E7E278p0", "0x0.0067710F67BFAp0", "0x0.0069481AEF1D5p0", +"0x0.006B23619B9CFp0", "0x0.006D02E3F4AB7p0", "0x0.006EE6A281C6Fp0", "0x0.0070CE9DCA7E6p0", +"0x0.0072BAD65671Bp0", "0x0.0074AB4CAD51Cp0", "0x0.0076A00156E07p0", "0x0.007898F4DAF09p0", +"0x0.007A9627C165Fp0", "0x0.007C979A92356p0", "0x0.007E9D4DD564Ap0", "0x0.0080A742130A8p0", +"0x0.0082B577D34EDp0", "0x0.0084C7EF9E6A7p0", "0x0.0086DEA9FCA73p0", "0x0.0088F9A776601p0", +"0x0.008B18E894010p0", "0x0.008D3C6DDE06Fp0", "0x0.008F6437DD000p0", "0x0.00919047198B6p0", +"0x0.0093C09C1C595p0", "0x0.0095F5376E2B2p0", "0x0.00982E1997D33p0", "0x0.009A6B4322352p0", +"0x0.009CACB496458p0", "0x0.009EF26E7D0A2p0", "0x0.00A13C715F99Ep0", "0x0.00A38ABDC71CEp0", +"0x0.00A5DD543CCC4p0", "0x0.00A8343549F26p0", "0x0.00AA8F6177EADp0", "0x0.00ACEED950222p0", +"0x0.00AF529D5C165p0", "0x0.00B1BAAE25566p0", "0x0.00B4270C3582Ap0", "0x0.00B697B8164C7p0", +"0x0.00B90CB25176Ap0", "0x0.00BB85FB70D50p0", "0x0.00BE0393FE4CCp0", "0x0.00C0857C83D44p0", +"0x0.00C30BB58B732p0", "0x0.00C5963F9F424p0", "0x0.00C8251B496BEp0", "0x0.00CAB849142B5p0", +"0x0.00CD4FC989CD6p0", "0x0.00CFEB9D34B00p0", "0x0.00D28BC49F428p0", "0x0.00D5304054059p0", +"0x0.00D7D910DD8B1p0", "0x0.00DA8636C6764p0", "0x0.00DD37B2997BCp0", "0x0.00DFED84E1618p0", +"0x0.00E2A7AE28FECp0", "0x0.00E5662EFB3C3p0", "0x0.00E82907E313Dp0", "0x0.00EAF0396B910p0", +"0x0.00EDBBC41FD08p0", "0x0.00F08BA88B009p0", "0x0.00F35FE73860Bp0", "0x0.00F63880B341Ep0", +"0x0.00F9157587069p0", "0x0.00FBF6C63F228p0", "0x0.00FEDC73671B0p0", "0x0.0101C67D8A86Cp0", +"0x0.0104B4E5350DFp0", "0x0.0107A7AAF26A2p0", "0x0.010A9ECF4E667p0", "0x0.010D9A52D4DF8p0", +"0x0.01109A3611C34p0", "0x0.01139E7991116p0", "0x0.0116A71DDEDADp0", "0x0.0119B42387423p0", +"0x0.011CC58B167B9p0", "0x0.011FDB5518CCAp0", "0x0.0122F5821A8C7p0", "0x0.01261412A823Cp0", +"0x0.012937074E0CDp0", "0x0.012C5E6098D37p0", "0x0.012F8A1F15151p0", "0x0.0132BA434F80Ap0", +"0x0.0135EECDD4D6Cp0", "0x0.013927BF31E98p0", "0x0.013C6517F39CCp0", "0x0.013FA6D8A6E5Dp0", +"0x0.0142ED01D8CBCp0", "0x0.0146379416673p0", "0x0.0149868FECE26p0", "0x0.014CD9F5E9795p0", +"0x0.015031C699799p0", "0x0.01538E028A426p0", "0x0.0156EEAA4944Bp0", "0x0.015A53BE64033p0", +"0x0.015DBD3F68122p0", "0x0.01612B2DE3178p0", "0x0.01649D8A62CB1p0", "0x0.0168145574F65p0", +"0x0.016B8F8FA7745p0", "0x0.016F0F3988321p0", "0x0.01729353A52E4p0", "0x0.01761BDE8C792p0", +"0x0.0179A8DACC350p0", "0x0.017D3A48F295Dp0", "0x0.0180D0298DE13p0", "0x0.01846A7D2C6ECp0", +"0x0.018809445CA7Bp0", "0x0.018BAC7FAD074p0", "0x0.018F542FAC1A4p0", "0x0.01930054E87F8p0", +"0x0.0196B0EFF0E79p0", "0x0.019A66015414Dp0", "0x0.019E1F89A0DBAp0", "0x0.01A1DD8966221p0", +"0x0.01A5A00132E02p0", "0x0.01A966F1961FCp0", "0x0.01AD325B1EFC9p0", "0x0.01B1023E5CA45p0", +"0x0.01B4D69BDE569p0", "0x0.01B8AF743364Cp0", "0x0.01BC8CC7EB323p0", "0x0.01C06E9795345p0", +"0x0.01C454E3C0F24p0", "0x0.01C83FACFE054p0", "0x0.01CC2EF3DC187p0", "0x0.01D022B8EAE8Fp0", +"0x0.01D41AFCBA45Ep0", "0x0.01D817BFDA104p0", "0x0.01DC1902DA3B1p0", "0x0.01E01EC64ACB7p0", +"0x0.01E4290ABBD87p0", "0x0.01E837D0BD8B2p0", "0x0.01EC4B18E01E9p0", "0x0.01F062E3B3DFEp0", +"0x0.01F47F31C92E4p0", "0x0.01F8A003B07AFp0", "0x0.01FCC559FA492p0", "0x0.0200EF35372E4p0", +"0x0.02051D95F7D1Cp0", "0x0.0209507CCCED1p0", "0x0.020D87EA474BEp0", "0x0.0211C3DEF7CBDp0", + }; + ap_ufixed<46,-6> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 5,-6> f_x_msb_2_h; + f_x_msb_2_h(4,0) = f_x_msb_2(45,41); + ap_ufixed< 9,-2> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<50,-2> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(49,41) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(40, 0) = f_x_msb_2(40,0); + //50*48=(17+17+17)*(24+24) + ap_ufixed<98,-12> f_x_msb_2_3_4_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_lsb_m_1;//1u + ap_ufixed<46,-12> f_x_msb_2_3_4_lsb_s = f_x_msb_2_3_4_lsb; + ap_ufixed<50,-2> exp_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_3_4_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_lsb_m_1;//9u + + const static ap_ufixed<50,23> exp_x_msb_1_table[256] = { +"0x1.0000000p0", "0x1.2216045p0", "0x1.48B5E3Cp0", "0x1.747A513p0", +"0x1.A61298Ep0", "0x1.DE455DFp0", "0x2.1DF3B68p0", "0x2.661CB0Fp0", +"0x2.B7E1516p0", "0x3.1489176p0", "0x3.7D871DBp0", "0x3.F47FE87p0", +"0x4.7B4FF99p0", "0x5.1413452p0", "0x5.C12DA41p0", "0x6.855466Ep0", +"0x7.63992E3p0", "0x8.5F7635Bp0", "0x9.7CDC417p0", "0xA.C042667p0", +"0xC.2EB7EC9p0", "0xD.CDF892Ep0", "0xF.A48385Ep0", "0x11.B9B5652p0", +"0x14.15E5BF6p0", "0x16.C2887C1p0", "0x19.CA53B78p0", "0x1D.396AA97p0", +"0x21.1D8E427p0", "0x25.865441Cp0", "0x2A.8565A14p0", "0x30.2EC550Bp0", +"0x36.99205C4p0", "0x3D.DE28BF3p0", "0x46.1AFC4DBp0", "0x4F.7099532p0", +"0x5A.0462B78p0", "0x66.00B5BC9p0", "0x73.9593ABBp0", "0x82.F9621ADp0", +"0x94.69C4CB8p0", "0xA8.2C948C1p0", "0xBE.90F6F83p0", "0xD7.F09B78Cp0", +"0xF4.B122790p0", "0x115.45B4704p0", "0x13A.30CF1CCp0", "0x164.0650296p0", +"0x193.6DC5690p0", "0x1C9.250BEDCp0", "0x206.03487A3p0", "0x24A.FC4533Cp0", +"0x299.2442102p0", "0x2F1.B447462p0", "0x356.0F0B0F9p0", "0x3C7.C67E5BEp0", +"0x448.A216ABBp0", "0x4DA.A5EE46Ap0", "0x580.1AD754Fp0", "0x63B.9782341p0", +"0x710.0ADBAC7p0", "0x800.C7CC8E3p0", "0x911.9289C39p0", "0xA46.AFAA2ADp0", +"0xBA4.F53EA38p0", "0xD31.DE30C52p0", "0xEF3.A035D57p0", "0x10F1.44ADE60p0", +"0x1332.C4D2B7Cp0", "0x15C1.29A744Cp0", "0x18A6.B027DA0p0", "0x1BEE.F24BB12p0", +"0x1FA7.157C470p0", "0x23DD.FF3C8BAp0", "0x28A4.90D2CCEp0", "0x2E0D.EAE454Bp0", +"0x342F.BA11823p0", "0x3B22.8DC5359p0", "0x4302.3A933EEp0", "0x4BEE.49AFCDCp0", +"0x560A.773E541p0", "0x617F.4171BF9p0", "0x6E7A.8ABB4A8p0", "0x7D30.5191764p0", +"0x8DDB.80AF426p0", "0xA0BE.DB0DB10p0", "0xB626.0748BAEp0", "0xCE66.BE9EAADp0", +"0xE9E2.2447727p0", "0x10906.4A831F8p0", "0x12C4F.EB75B2Ap0", "0x1544C.5CB6133p0", +"0x1819B.C560F61p0", "0x1B4F3.9F8AF64p0", "0x1EF21.8F1B001p0", "0x2310E.996C40Fp0", +"0x27BC2.CA9A6F9p0", "0x2D069.571279Ap0", "0x33055.49F35D9p0", "0x39D06.D2FEF17p0", +"0x41831.49596E9p0", "0x4A3C1.FB2AC39p0", "0x541E7.E56949Dp0", "0x5F51C.72B7532p0", +"0x6C02D.645AB25p0", "0x7A648.0CFF534p0", "0x8AB06.0A3EE9Fp0", "0x9D27B.AFE4CF1p0", +"0xB2148.5EAE56Cp0", "0xC9CA9.07F86EFp0", "0xE4A8D.2881EDBp0", "0x1031AE.8E4996Cp0", +"0x1259AC.48BF05Dp0", "0x14CB29.2F2B31Fp0", "0x178FEE.7792E44p0", "0x1AB312.E89CD0Dp0", +"0x1E4127.437732Bp0", "0x224868.979FC2Ep0", "0x26D8F9.4A204BEp0", "0x2C0521.B4A8E0Bp0", +"0x31E199.5F5A550p0", "0x3885D9.FA89D00p0", "0x400C7D.64D3386p0", "0x4893A8.361032Dp0", +"0x523D82.79EDAEFp0", "0x5D30C0.7DAB686p0", "0x69993D.D4F2D95p0", "0x77A8AD.02A7C71p0", +"0x0.000001Ep0", "0x0.0000022p0", "0x0.0000026p0", "0x0.000002Bp0", +"0x0.0000031p0", "0x0.0000038p0", "0x0.000003Fp0", "0x0.0000048p0", +"0x0.0000052p0", "0x0.000005Dp0", "0x0.0000069p0", "0x0.0000077p0", +"0x0.0000087p0", "0x0.0000099p0", "0x0.00000ADp0", "0x0.00000C4p0", +"0x0.00000DFp0", "0x0.00000FCp0", "0x0.000011Ep0", "0x0.0000144p0", +"0x0.0000170p0", "0x0.00001A1p0", "0x0.00001D8p0", "0x0.0000217p0", +"0x0.000025Ep0", "0x0.00002AFp0", "0x0.000030Bp0", "0x0.0000372p0", +"0x0.00003E8p0", "0x0.000046Dp0", "0x0.0000504p0", "0x0.00005AFp0", +"0x0.0000671p0", "0x0.000074Cp0", "0x0.0000845p0", "0x0.000095Fp0", +"0x0.0000A9Fp0", "0x0.0000C09p0", "0x0.0000DA3p0", "0x0.0000F74p0", +"0x0.0001183p0", "0x0.00013D8p0", "0x0.000167Cp0", "0x0.000197Bp0", +"0x0.0001CDFp0", "0x0.00020B7p0", "0x0.0002513p0", "0x0.0002A02p0", +"0x0.0002F9Ap0", "0x0.00035F1p0", "0x0.0003D20p0", "0x0.0004543p0", +"0x0.0004E7Cp0", "0x0.00058F0p0", "0x0.00064C7p0", "0x0.0007232p0", +"0x0.0008167p0", "0x0.00092A2p0", "0x0.000A628p0", "0x0.000BC48p0", +"0x0.000D55Ap0", "0x0.000F1C2p0", "0x0.00111F3p0", "0x0.001366Cp0", +"0x0.0015FC2p0", "0x0.0018E98p0", "0x0.001C3AAp0", "0x0.001FFCEp0", +"0x0.00243F3p0", "0x0.002912Bp0", "0x0.002E8ABp0", "0x0.0034BD2p0", +"0x0.003BC2Dp0", "0x0.0043B7Dp0", "0x0.004CBC1p0", "0x0.0056F3Ap0", +"0x0.0062878p0", "0x0.006FA5Fp0", "0x0.007E83Ap0", "0x0.008F5C0p0", +"0x0.00A2728p0", "0x0.00B813Bp0", "0x0.00D0963p0", "0x0.00EC5C1p0", +"0x0.010BD4Ap0", "0x0.012F7DEp0", "0x0.0157E6Bp0", "0x0.0185B0Fp0", +"0x0.01B993Fp0", "0x0.01F45F9p0", "0x0.0236FF5p0", "0x0.02827E0p0", +"0x0.02D80A0p0", "0x0.0338F9Fp0", "0x0.03A6D22p0", "0x0.04234A7p0", +"0x0.04B0556p0", "0x0.0550280p0", "0x0.0605424p0", "0x0.06D279Ap0", +"0x0.07BB040p0", "0x0.08C284Cp0", "0x0.09ED1B4p0", "0x0.0B3F736p0", +"0x0.0CBED86p0", "0x0.0E7149Cp0", "0x0.105D938p0", "0x0.128B697p0", +"0x0.150385Cp0", "0x0.17CFCC2p0", "0x0.1AFB718p0", "0x0.1E9328Bp0", +"0x0.22A5554p0", "0x0.2742456p0", "0x0.2C7C72Fp0", "0x0.3268CDBp0", +"0x0.391F0EEp0", "0x0.40BA188p0", "0x0.495860Dp0", "0x0.531C6C9p0", +"0x0.5E2D58Dp0", "0x0.6AB7782p0", "0x0.78ED03Ap0", "0x0.8906E49p0", +"0x0.9B4597Ep0", "0x0.AFF230Ap0", "0x0.C75F7CFp0", "0x0.E1EB512p0", + }; + ap_ufixed<50,23> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + //55*50=(17+17+17)*(17+17+17) + ap_ufixed<100,21> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_lsb_m_1; + ap_ufixed<48,21> y_lo_s = y_lo; + ap_ufixed<50,23> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + y += delta; + //if (I_<24) { // overflow + overf = 0; + for (int j = 46; j >= I_+22; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 46; j >= I_+22; j--) { + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+21; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + //} + r = y; + } else { // I_s_ = 6, M_ = 24..32, I_ <= 33, FO_ <= 32/67, WO <= 65, WI <= 100 + const static int wf = 67; + const static int we = 33; + const static int w = 100; + ap_fixed x_l = x; + //std::cout<<"x="< x_msb_ind_1; + x_msb_ind_1[7] = x_l[w-1]; + + x_msb_ind_1(6,0) = x_l(wf+4,wf-2); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(wf-3,wf-10); + ap_uint<8> x_msb_ind_3; + x_msb_ind_3(7,0) = x_l(wf-11,wf-18); + ap_uint<8> x_msb_ind_4; + x_msb_ind_4(7,0) = x_l(wf-19,wf-26); + + ap_uint<8> x_msb_ind_5; + x_msb_ind_5(7,0) = x_l(wf-27,wf-34);//FO_=32 is a special case + + ap_ufixed<8, -2> x_msb_2 = x_l; + ap_ufixed<8,-10> x_msb_3 = x_l; + ap_ufixed<8,-18> x_msb_4 = x_l; + ap_ufixed<8,-26> x_msb_5 = x_l; + ap_ufixed<9,-34> x_lsb = x_l; + + const static ap_ufixed<32,-37> f_x_msb_4_table[256] = { +"0x0.000000000000000000p0", "0x0.000000000000080000p0", "0x0.000000000000200000p0", "0x0.000000000000480000p0", +"0x0.000000000000800000p0", "0x0.000000000000C80000p0", "0x0.000000000001200000p0", "0x0.000000000001880000p0", +"0x0.000000000002000001p0", "0x0.000000000002880001p0", "0x0.000000000003200002p0", "0x0.000000000003C80003p0", +"0x0.000000000004800004p0", "0x0.000000000005480005p0", "0x0.000000000006200007p0", "0x0.000000000007080008p0", +"0x0.00000000000800000Ap0", "0x0.00000000000908000Cp0", "0x0.00000000000A20000Fp0", "0x0.00000000000B480011p0", +"0x0.00000000000C800014p0", "0x0.00000000000DC80018p0", "0x0.00000000000F20001Bp0", "0x0.00000000001088001Fp0", +"0x0.000000000012000024p0", "0x0.000000000013880028p0", "0x0.00000000001520002Dp0", "0x0.000000000016C80033p0", +"0x0.000000000018800039p0", "0x0.00000000001A48003Fp0", "0x0.00000000001C200046p0", "0x0.00000000001E08004Dp0", +"0x0.000000000020000055p0", "0x0.00000000002208005Dp0", "0x0.000000000024200066p0", "0x0.00000000002648006Fp0", +"0x0.000000000028800079p0", "0x0.00000000002AC80083p0", "0x0.00000000002D20008Ep0", "0x0.00000000002F88009Ap0", +"0x0.0000000000320000A6p0", "0x0.0000000000348800B3p0", "0x0.0000000000372000C0p0", "0x0.000000000039C800CFp0", +"0x0.00000000003C8000DDp0", "0x0.00000000003F4800EDp0", "0x0.0000000000422000FDp0", "0x0.00000000004508010Ep0", +"0x0.000000000048000120p0", "0x0.00000000004B080132p0", "0x0.00000000004E200145p0", "0x0.000000000051480159p0", +"0x0.00000000005480016Ep0", "0x0.000000000057C80183p0", "0x0.00000000005B20019Ap0", "0x0.00000000005E8801B1p0", +"0x0.0000000000620001C9p0", "0x0.0000000000658801E2p0", "0x0.0000000000692001FCp0", "0x0.00000000006CC80216p0", +"0x0.000000000070800232p0", "0x0.00000000007448024Fp0", "0x0.00000000007820026Cp0", "0x0.00000000007C08028Bp0", +"0x0.0000000000800002AAp0", "0x0.0000000000840802CBp0", "0x0.0000000000882002ECp0", "0x0.00000000008C48030Fp0", +"0x0.000000000090800332p0", "0x0.000000000094C80357p0", "0x0.00000000009920037Dp0", "0x0.00000000009D8803A4p0", +"0x0.0000000000A20003CCp0", "0x0.0000000000A68803F5p0", "0x0.0000000000AB20041Fp0", "0x0.0000000000AFC8044Ap0", +"0x0.0000000000B4800477p0", "0x0.0000000000B94804A4p0", "0x0.0000000000BE2004D3p0", "0x0.0000000000C3080503p0", +"0x0.0000000000C8000535p0", "0x0.0000000000CD080567p0", "0x0.0000000000D220059Bp0", "0x0.0000000000D74805D1p0", +"0x0.0000000000DC800607p0", "0x0.0000000000E1C8063Fp0", "0x0.0000000000E7200678p0", "0x0.0000000000EC8806B2p0", +"0x0.0000000000F20006EEp0", "0x0.0000000000F788072Bp0", "0x0.0000000000FD20076Ap0", "0x0.000000000102C807AAp0", +"0x0.0000000001088007EBp0", "0x0.00000000010E48082Ep0", "0x0.000000000114200872p0", "0x0.00000000011A0808B8p0", +"0x0.000000000120000900p0", "0x0.000000000126080948p0", "0x0.00000000012C200993p0", "0x0.0000000001324809DEp0", +"0x0.000000000138800A2Cp0", "0x0.00000000013EC80A7Bp0", "0x0.000000000145200ACBp0", "0x0.00000000014B880B1Dp0", +"0x0.000000000152000B71p0", "0x0.000000000158880BC6p0", "0x0.00000000015F200C1Dp0", "0x0.000000000165C80C76p0", +"0x0.00000000016C800CD0p0", "0x0.000000000173480D2Cp0", "0x0.00000000017A200D8Ap0", "0x0.000000000181080DE9p0", +"0x0.000000000188000E4Ap0", "0x0.00000000018F080EADp0", "0x0.000000000196200F12p0", "0x0.00000000019D480F78p0", +"0x0.0000000001A4800FE0p0", "0x0.0000000001ABC8104Ap0", "0x0.0000000001B32010B6p0", "0x0.0000000001BA881124p0", +"0x0.0000000001C2001194p0", "0x0.0000000001C9881205p0", "0x0.0000000001D1201278p0", "0x0.0000000001D8C812EEp0", +"0x0.0000000001E0801365p0", "0x0.0000000001E84813DEp0", "0x0.0000000001F0201459p0", "0x0.0000000001F80814D6p0", +"0x0.000000000200001555p0", "0x0.0000000002080815D6p0", "0x0.000000000210201659p0", "0x0.0000000002184816DEp0", +"0x0.000000000220801765p0", "0x0.000000000228C817EEp0", "0x0.000000000231201879p0", "0x0.000000000239881907p0", +"0x0.000000000242001996p0", "0x0.00000000024A881A28p0", "0x0.000000000253201ABBp0", "0x0.00000000025BC81B51p0", +"0x0.000000000264801BE9p0", "0x0.00000000026D481C84p0", "0x0.000000000276201D20p0", "0x0.00000000027F081DBFp0", +"0x0.000000000288001E60p0", "0x0.000000000291081F03p0", "0x0.00000000029A201FA8p0", "0x0.0000000002A3482050p0", +"0x0.0000000002AC8020FAp0", "0x0.0000000002B5C821A6p0", "0x0.0000000002BF202255p0", "0x0.0000000002C8882306p0", +"0x0.0000000002D20023B9p0", "0x0.0000000002DB88246Fp0", "0x0.0000000002E5202527p0", "0x0.0000000002EEC825E1p0", +"0x0.0000000002F880269Ep0", "0x0.00000000030248275Dp0", "0x0.00000000030C20281Fp0", "0x0.0000000003160828E3p0", +"0x0.0000000003200029AAp0", "0x0.00000000032A082A73p0", "0x0.000000000334202B3Fp0", "0x0.00000000033E482C0Dp0", +"0x0.000000000348802CDEp0", "0x0.000000000352C82DB2p0", "0x0.00000000035D202E88p0", "0x0.000000000367882F60p0", +"0x0.00000000037200303Cp0", "0x0.00000000037C883119p0", "0x0.0000000003872031FAp0", "0x0.000000000391C832DDp0", +"0x0.00000000039C8033C3p0", "0x0.0000000003A74834ABp0", "0x0.0000000003B2203596p0", "0x0.0000000003BD083684p0", +"0x0.0000000003C8003775p0", "0x0.0000000003D3083868p0", "0x0.0000000003DE20395Ep0", "0x0.0000000003E9483A57p0", +"0x0.0000000003F4803B53p0", "0x0.0000000003FFC83C52p0", "0x0.00000000040B203D53p0", "0x0.000000000416883E57p0", +"0x0.000000000422003F5Ep0", "0x0.00000000042D884068p0", "0x0.000000000439204175p0", "0x0.000000000444C84285p0", +"0x0.000000000450804397p0", "0x0.00000000045C4844ADp0", "0x0.0000000004682045C5p0", "0x0.0000000004740846E1p0", +"0x0.000000000480004800p0", "0x0.00000000048C084921p0", "0x0.000000000498204A46p0", "0x0.0000000004A4484B6Dp0", +"0x0.0000000004B0804C98p0", "0x0.0000000004BCC84DC5p0", "0x0.0000000004C9204EF6p0", "0x0.0000000004D588502Ap0", +"0x0.0000000004E2005161p0", "0x0.0000000004EE88529Bp0", "0x0.0000000004FB2053D8p0", "0x0.000000000507C85518p0", +"0x0.00000000051480565Cp0", "0x0.0000000005214857A3p0", "0x0.00000000052E2058EDp0", "0x0.00000000053B085A3Ap0", +"0x0.000000000548005B8Ap0", "0x0.000000000555085CDEp0", "0x0.000000000562205E35p0", "0x0.00000000056F485F8Fp0", +"0x0.00000000057C8060ECp0", "0x0.000000000589C8624Dp0", "0x0.0000000005972063B1p0", "0x0.0000000005A4886519p0", +"0x0.0000000005B2006684p0", "0x0.0000000005BF8867F2p0", "0x0.0000000005CD206963p0", "0x0.0000000005DAC86AD8p0", +"0x0.0000000005E8806C51p0", "0x0.0000000005F6486DCDp0", "0x0.000000000604206F4Cp0", "0x0.0000000006120870CFp0", +"0x0.000000000620007255p0", "0x0.00000000062E0873DFp0", "0x0.00000000063C20756Cp0", "0x0.00000000064A4876FDp0", +"0x0.000000000658807891p0", "0x0.000000000666C87A29p0", "0x0.000000000675207BC4p0", "0x0.000000000683887D64p0", +"0x0.000000000692007F06p0", "0x0.0000000006A08880ADp0", "0x0.0000000006AF208256p0", "0x0.0000000006BDC88404p0", +"0x0.0000000006CC8085B5p0", "0x0.0000000006DB48876Ap0", "0x0.0000000006EA208923p0", "0x0.0000000006F9088ADFp0", +"0x0.000000000708008CA0p0", "0x0.000000000717088E63p0", "0x0.00000000072620902Bp0", "0x0.0000000007354891F6p0", +"0x0.0000000007448093C6p0", "0x0.000000000753C89599p0", "0x0.000000000763209770p0", "0x0.00000000077288994Ap0", +"0x0.000000000782009B29p0", "0x0.000000000791889D0Bp0", "0x0.0000000007A1209EF2p0", "0x0.0000000007B0C8A0DCp0", +"0x0.0000000007C080A2CAp0", "0x0.0000000007D048A4BCp0", "0x0.0000000007E020A6B2p0", "0x0.0000000007F008A8ACp0", + }; + ap_ufixed<32,-37> f_x_msb_4 = f_x_msb_4_table[x_msb_ind_4]; + + const static ap_ufixed<16,-53> f_x_msb_5_table[256] = { +"0x0.000000000000000000p0", "0x0.000000000000000008p0", "0x0.000000000000000020p0", "0x0.000000000000000048p0", +"0x0.000000000000000080p0", "0x0.0000000000000000C8p0", "0x0.000000000000000120p0", "0x0.000000000000000188p0", +"0x0.000000000000000200p0", "0x0.000000000000000288p0", "0x0.000000000000000320p0", "0x0.0000000000000003C8p0", +"0x0.000000000000000480p0", "0x0.000000000000000548p0", "0x0.000000000000000620p0", "0x0.000000000000000708p0", +"0x0.000000000000000800p0", "0x0.000000000000000908p0", "0x0.000000000000000A20p0", "0x0.000000000000000B48p0", +"0x0.000000000000000C80p0", "0x0.000000000000000DC8p0", "0x0.000000000000000F20p0", "0x0.000000000000001088p0", +"0x0.000000000000001200p0", "0x0.000000000000001388p0", "0x0.000000000000001520p0", "0x0.0000000000000016C8p0", +"0x0.000000000000001880p0", "0x0.000000000000001A48p0", "0x0.000000000000001C20p0", "0x0.000000000000001E08p0", +"0x0.000000000000002000p0", "0x0.000000000000002208p0", "0x0.000000000000002420p0", "0x0.000000000000002648p0", +"0x0.000000000000002880p0", "0x0.000000000000002AC8p0", "0x0.000000000000002D20p0", "0x0.000000000000002F88p0", +"0x0.000000000000003200p0", "0x0.000000000000003488p0", "0x0.000000000000003720p0", "0x0.0000000000000039C8p0", +"0x0.000000000000003C80p0", "0x0.000000000000003F48p0", "0x0.000000000000004220p0", "0x0.000000000000004508p0", +"0x0.000000000000004800p0", "0x0.000000000000004B08p0", "0x0.000000000000004E20p0", "0x0.000000000000005148p0", +"0x0.000000000000005480p0", "0x0.0000000000000057C8p0", "0x0.000000000000005B20p0", "0x0.000000000000005E88p0", +"0x0.000000000000006200p0", "0x0.000000000000006588p0", "0x0.000000000000006920p0", "0x0.000000000000006CC8p0", +"0x0.000000000000007080p0", "0x0.000000000000007448p0", "0x0.000000000000007820p0", "0x0.000000000000007C08p0", +"0x0.000000000000008000p0", "0x0.000000000000008408p0", "0x0.000000000000008820p0", "0x0.000000000000008C48p0", +"0x0.000000000000009080p0", "0x0.0000000000000094C8p0", "0x0.000000000000009920p0", "0x0.000000000000009D88p0", +"0x0.00000000000000A200p0", "0x0.00000000000000A688p0", "0x0.00000000000000AB20p0", "0x0.00000000000000AFC8p0", +"0x0.00000000000000B480p0", "0x0.00000000000000B948p0", "0x0.00000000000000BE20p0", "0x0.00000000000000C308p0", +"0x0.00000000000000C800p0", "0x0.00000000000000CD08p0", "0x0.00000000000000D220p0", "0x0.00000000000000D748p0", +"0x0.00000000000000DC80p0", "0x0.00000000000000E1C8p0", "0x0.00000000000000E720p0", "0x0.00000000000000EC88p0", +"0x0.00000000000000F200p0", "0x0.00000000000000F788p0", "0x0.00000000000000FD20p0", "0x0.0000000000000102C8p0", +"0x0.000000000000010880p0", "0x0.000000000000010E48p0", "0x0.000000000000011420p0", "0x0.000000000000011A08p0", +"0x0.000000000000012000p0", "0x0.000000000000012608p0", "0x0.000000000000012C20p0", "0x0.000000000000013248p0", +"0x0.000000000000013880p0", "0x0.000000000000013EC8p0", "0x0.000000000000014520p0", "0x0.000000000000014B88p0", +"0x0.000000000000015200p0", "0x0.000000000000015888p0", "0x0.000000000000015F20p0", "0x0.0000000000000165C8p0", +"0x0.000000000000016C80p0", "0x0.000000000000017348p0", "0x0.000000000000017A20p0", "0x0.000000000000018108p0", +"0x0.000000000000018800p0", "0x0.000000000000018F08p0", "0x0.000000000000019620p0", "0x0.000000000000019D48p0", +"0x0.00000000000001A480p0", "0x0.00000000000001ABC8p0", "0x0.00000000000001B320p0", "0x0.00000000000001BA88p0", +"0x0.00000000000001C200p0", "0x0.00000000000001C988p0", "0x0.00000000000001D120p0", "0x0.00000000000001D8C8p0", +"0x0.00000000000001E080p0", "0x0.00000000000001E848p0", "0x0.00000000000001F020p0", "0x0.00000000000001F808p0", +"0x0.000000000000020000p0", "0x0.000000000000020808p0", "0x0.000000000000021020p0", "0x0.000000000000021848p0", +"0x0.000000000000022080p0", "0x0.0000000000000228C8p0", "0x0.000000000000023120p0", "0x0.000000000000023988p0", +"0x0.000000000000024200p0", "0x0.000000000000024A88p0", "0x0.000000000000025320p0", "0x0.000000000000025BC8p0", +"0x0.000000000000026480p0", "0x0.000000000000026D48p0", "0x0.000000000000027620p0", "0x0.000000000000027F08p0", +"0x0.000000000000028800p0", "0x0.000000000000029108p0", "0x0.000000000000029A20p0", "0x0.00000000000002A348p0", +"0x0.00000000000002AC80p0", "0x0.00000000000002B5C8p0", "0x0.00000000000002BF20p0", "0x0.00000000000002C888p0", +"0x0.00000000000002D200p0", "0x0.00000000000002DB88p0", "0x0.00000000000002E520p0", "0x0.00000000000002EEC8p0", +"0x0.00000000000002F880p0", "0x0.000000000000030248p0", "0x0.000000000000030C20p0", "0x0.000000000000031608p0", +"0x0.000000000000032000p0", "0x0.000000000000032A08p0", "0x0.000000000000033420p0", "0x0.000000000000033E48p0", +"0x0.000000000000034880p0", "0x0.0000000000000352C8p0", "0x0.000000000000035D20p0", "0x0.000000000000036788p0", +"0x0.000000000000037200p0", "0x0.000000000000037C88p0", "0x0.000000000000038720p0", "0x0.0000000000000391C8p0", +"0x0.000000000000039C80p0", "0x0.00000000000003A748p0", "0x0.00000000000003B220p0", "0x0.00000000000003BD08p0", +"0x0.00000000000003C800p0", "0x0.00000000000003D308p0", "0x0.00000000000003DE20p0", "0x0.00000000000003E948p0", +"0x0.00000000000003F480p0", "0x0.00000000000003FFC8p0", "0x0.000000000000040B20p0", "0x0.000000000000041688p0", +"0x0.000000000000042200p0", "0x0.000000000000042D88p0", "0x0.000000000000043920p0", "0x0.0000000000000444C8p0", +"0x0.000000000000045080p0", "0x0.000000000000045C48p0", "0x0.000000000000046820p0", "0x0.000000000000047408p0", +"0x0.000000000000048000p0", "0x0.000000000000048C08p0", "0x0.000000000000049820p0", "0x0.00000000000004A448p0", +"0x0.00000000000004B080p0", "0x0.00000000000004BCC8p0", "0x0.00000000000004C920p0", "0x0.00000000000004D588p0", +"0x0.00000000000004E200p0", "0x0.00000000000004EE88p0", "0x0.00000000000004FB20p0", "0x0.0000000000000507C8p0", +"0x0.000000000000051480p0", "0x0.000000000000052148p0", "0x0.000000000000052E20p0", "0x0.000000000000053B08p0", +"0x0.000000000000054800p0", "0x0.000000000000055508p0", "0x0.000000000000056220p0", "0x0.000000000000056F48p0", +"0x0.000000000000057C80p0", "0x0.0000000000000589C8p0", "0x0.000000000000059720p0", "0x0.00000000000005A488p0", +"0x0.00000000000005B200p0", "0x0.00000000000005BF88p0", "0x0.00000000000005CD20p0", "0x0.00000000000005DAC8p0", +"0x0.00000000000005E880p0", "0x0.00000000000005F648p0", "0x0.000000000000060420p0", "0x0.000000000000061208p0", +"0x0.000000000000062000p0", "0x0.000000000000062E08p0", "0x0.000000000000063C20p0", "0x0.000000000000064A48p0", +"0x0.000000000000065880p0", "0x0.0000000000000666C8p0", "0x0.000000000000067520p0", "0x0.000000000000068388p0", +"0x0.000000000000069200p0", "0x0.00000000000006A088p0", "0x0.00000000000006AF20p0", "0x0.00000000000006BDC8p0", +"0x0.00000000000006CC80p0", "0x0.00000000000006DB48p0", "0x0.00000000000006EA20p0", "0x0.00000000000006F908p0", +"0x0.000000000000070800p0", "0x0.000000000000071708p0", "0x0.000000000000072620p0", "0x0.000000000000073548p0", +"0x0.000000000000074480p0", "0x0.0000000000000753C8p0", "0x0.000000000000076320p0", "0x0.000000000000077288p0", +"0x0.000000000000078200p0", "0x0.000000000000079188p0", "0x0.00000000000007A120p0", "0x0.00000000000007B0C8p0", +"0x0.00000000000007C080p0", "0x0.00000000000007D048p0", "0x0.00000000000007E020p0", "0x0.00000000000007F008p0", + }; + + ap_ufixed<16,-53> f_x_msb_5 = f_x_msb_5_table[x_msb_ind_5]; + //8*9 + ap_ufixed<9,-60> f_x_msb_5_lsb = x_msb_5 * x_lsb;//Z_5*Z_lsb//1u + + ap_ufixed<25,-26> x_msb_5_lsb = x_l; + //8*25 + ap_ufixed<25,-44> f_x_msb_4_5_lsb = x_msb_5_lsb * x_msb_4;//(Z_5+Z_lsb)*Z_4 // 1u + //6*8 + ap_ufixed<6,-37> f_x_msb_4_s = f_x_msb_4; + ap_ufixed<6,-63> exp_x_msb_4_5_lsb_m_1_m1 = x_msb_5 * f_x_msb_4;//Z_5 * f(Z_4) //1u + + ap_ufixed<10,-59> exp_x_msb_4_5_lsb_m_1_m2 = 0; + exp_x_msb_4_5_lsb_m_1_m2(8,0) = f_x_msb_5_lsb(8,0); + exp_x_msb_4_5_lsb_m_1_m2 = exp_x_msb_4_5_lsb_m_1_m1 + exp_x_msb_4_5_lsb_m_1_m2;//2u + + ap_ufixed<17,-52> exp_x_msb_4_5_lsb_m_1_m3 = 0; + exp_x_msb_4_5_lsb_m_1_m3(15,0) = f_x_msb_5(15,0); + exp_x_msb_4_5_lsb_m_1_m3 = exp_x_msb_4_5_lsb_m_1_m2+exp_x_msb_4_5_lsb_m_1_m3;//3u; + + ap_ufixed<26,-43> exp_x_msb_4_5_lsb_m_1_m4 =0; + exp_x_msb_4_5_lsb_m_1_m4(24,0) = f_x_msb_4_5_lsb(24,0); + exp_x_msb_4_5_lsb_m_1_m4 = exp_x_msb_4_5_lsb_m_1_m4 + exp_x_msb_4_5_lsb_m_1_m3;//4u + + ap_ufixed<33,-36> exp_x_msb_4_5_lsb_m_1_m5 = 0; + exp_x_msb_4_5_lsb_m_1_m5(31,0) = f_x_msb_4(31,0); + exp_x_msb_4_5_lsb_m_1_m5 = exp_x_msb_4_5_lsb_m_1_m5 + exp_x_msb_4_5_lsb_m_1_m4;//5u + + ap_ufixed x_msb_4_5_lsb = x_l; + ap_ufixed exp_x_msb_4_5_lsb_m_1_s = 0; + exp_x_msb_4_5_lsb_m_1_s(30,0) = exp_x_msb_4_5_lsb_m_1_m5(32,2); + exp_x_msb_4_5_lsb_m_1_s = exp_x_msb_4_5_lsb_m_1_s + x_msb_4_5_lsb; + + ap_ufixed<52,-17> exp_x_msb_4_5_lsb_m_1 = exp_x_msb_4_5_lsb_m_1_s; + exp_x_msb_4_5_lsb_m_1(1,0) = exp_x_msb_4_5_lsb_m_1_m5(1,0); + + + const static ap_ufixed<51,-21> f_x_msb_3_table[256] = { +"0x0", "0x0.00000000080000AAAAp0", "0x0.000000002000055556p0", "0x0.000000004800120003p0", +"0x0.0000000080002AAAB5p0", "0x0.00000000C80053556Fp0", "0x0.000000012000900036p0", "0x0.000000018800E4AB0Ep0", +"0x0.000000020001555600p0", "0x0.000000028801E60111p0", "0x0.0000000320029AAC4Bp0", "0x0.00000003C8037757B7p0", +"0x0.000000048004800360p0", "0x0.000000054805B8AF50p0", "0x0.000000062007255B96p0", "0x0.000000070808CA083Dp0", +"0x0.00000008000AAAB555p0", "0x0.00000009080CCB62EDp0", "0x0.0000000A200F301116p0", "0x0.0000000B4811DCBFE0p0", +"0x0.0000000C8014D56F60p0", "0x0.0000000DC8181E1FA7p0", "0x0.0000000F201BBAD0CBp0", "0x0.00000010881FAF82E1p0", +"0x0.000000120024003600p0", "0x0.000000138828B0EA3Fp0", "0x0.00000015202DC59FB6p0", "0x0.00000016C83342567Fp0", +"0x0.0000001880392B0EB5p0", "0x0.0000001A483F83C874p0", "0x0.0000001C20465083D6p0", "0x0.0000001E084D9540FBp0", +"0x0.000000200055560001p0", "0x0.00000022085D96C106p0", "0x0.0000002420665B842Cp0", "0x0.00000026486FA84995p0", +"0x0.000000288079811161p0", "0x0.0000002AC883E9DBB6p0", "0x0.0000002D208EE6A8B8p0", "0x0.0000002F889A7B788Cp0", +"0x0.0000003200A6AC4B58p0", "0x0.0000003488B37D2145p0", "0x0.0000003720C0F1FA7Ap0", "0x0.00000039C8CF0ED721p0", +"0x0.0000003C80DDD7B765p0", "0x0.0000003F48ED509B71p0", "0x0.0000004220FD7D8371p0", "0x0.00000045090E626F94p0", +"0x0.000000480120036008p0", "0x0.0000004B09326454FBp0", "0x0.0000004E2145894E9Fp0", "0x0.000000514959764D26p0", +"0x0.00000054816E2F50C1p0", "0x0.00000057C983B859A4p0", "0x0.0000005B219A156804p0", "0x0.0000005E89B14A7C16p0", +"0x0.0000006201C95B9611p0", "0x0.0000006589E24CB62Cp0", "0x0.0000006921FC21DCA0p0", "0x0.0000006CCA16DF09A6p0", +"0x0.000000708232883D78p0", "0x0.000000744A4F217853p0", "0x0.00000078226CAEBA73p0", "0x0.0000007C0A8B340414p0", +"0x0.0000008002AAB55577p0", "0x0.000000840ACB36AEDAp0", "0x0.0000008822ECBC107Dp0", "0x0.0000008C4B0F497AA3p0", +"0x0.000000908332E2ED8Ep0", "0x0.00000094CB578C6981p0", "0x0.00000099237D49EEC0p0", "0x0.0000009D8BA41F7D92p0", +"0x0.000000A203CC11163Dp0", "0x0.000000A68BF522B908p0", "0x0.000000AB241F58663Cp0", "0x0.000000AFCC4AB61E22p0", +"0x0.000000B484773FE105p0", "0x0.000000B94CA4F9AF31p0", "0x0.000000BE24D3E788F1p0", "0x0.000000C30D040D6E94p0", +"0x0.000000C805356F6068p0", "0x0.000000CD0D68115EBCp0", "0x0.000000D2259BF769E1p0", "0x0.000000D74DD1258228p0", +"0x0.000000DC86079FA7E4p0", "0x0.000000E1CE3F69DB69p0", "0x0.000000E72678881D0Bp0", "0x0.000000EC8EB2FE6D1Fp0", +"0x0.000000F206EED0CBFDp0", "0x0.000000F78F2C0339FAp0", "0x0.000000FD276A99B771p0", "0x0.00000102CFAA9844BBp0", +"0x0.0000010887EC02E231p0", "0x0.0000010E502EDD9030p0", "0x0.0000011428732C4F14p0", "0x0.0000011A10B8F31F3Bp0", +"0x0.000001200900360103p0", "0x0.000001261148F8F4CBp0", "0x0.0000012C29933FFAF5p0", "0x0.0000013251DF0F13E1p0", +"0x0.000001388A2C6A3FF3p0", "0x0.0000013ED27B557F8Dp0", "0x0.000001452ACBD4D315p0", "0x0.0000014B931DEC3AEFp0", +"0x0.000001520B719FB782p0", "0x0.0000015893C6F34937p0", "0x0.0000015F2C1DEAF074p0", "0x0.00000165D4768AADA5p0", +"0x0.0000016C8CD0D68133p0", "0x0.00000173552CD26B89p0", "0x0.0000017A2D8A826D16p0", "0x0.0000018115E9EA8645p0", +"0x0.000001880E4B0EB785p0", "0x0.0000018F16ADF30147p0", "0x0.000001962F129B63FAp0", "0x0.0000019D57790BE010p0", +"0x0.000001A48FE14875FBp0", "0x0.000001ABD84B552630p0", "0x0.000001B330B735F122p0", "0x0.000001BA9924EED748p0", +"0x0.000001C2119483D917p0", "0x0.000001C99A05F8F707p0", "0x0.000001D13279523191p0", "0x0.000001D8DAEE93892Ep0", +"0x0.000001E09365C0FE59p0", "0x0.000001E85BDEDE918Dp0", "0x0.000001F03459F04347p0", "0x0.000001F81CD6FA1405p0", +"0x0.000002001556000444p0", "0x0.000002081DD7061485p0", "0x0.00000210365A104547p0", "0x0.000002185EDF22970Dp0", +"0x0.000002209766410A5Ap0", "0x0.00000228DFEF6F9FAFp0", "0x0.00000231387AB25793p0", "0x0.00000239A1080D328Ap0", +"0x0.00000242199784311Cp0", "0x0.0000024AA2291B53CFp0", "0x0.000002533ABCD69B2Dp0", "0x0.0000025BE352BA07BEp0", +"0x0.000002649BEAC99A0Dp0", "0x0.0000026D64850952A7p0", "0x0.000002763D217D3216p0", "0x0.0000027F25C02938EAp0", +"0x0.000002881E611167B0p0", "0x0.00000291270439BEF8p0", "0x0.0000029A3FA9A63F53p0", "0x0.000002A368515AE951p0", +"0x0.000002ACA0FB5BBD86p0", "0x0.000002B5E9A7ACBC86p0", "0x0.000002BF425651E6E4p0", "0x0.000002C8AB074F3D36p0", +"0x0.000002D223BAA8C013p0", "0x0.000002DBAC70627012p0", "0x0.000002E54528804DCDp0", "0x0.000002EEEDE30659DBp0", +"0x0.000002F8A69FF894D9p0", "0x0.000003026F5F5AFF61p0", "0x0.0000030C4821319A10p0", "0x0.0000031630E5806584p0", +"0x0.0000032029AC4B625Bp0", "0x0.0000032A3275969134p0", "0x0.000003344B4165F2B1p0", "0x0.0000033E740FBD8772p0", +"0x0.00000348ACE0A1501Bp0", "0x0.00000352F5B4154D4Fp0", "0x0.0000035D4E8A1D7FB2p0", "0x0.00000367B762BDE7EAp0", +"0x0.00000372303DFA869Ep0", "0x0.0000037CB91BD75C75p0", "0x0.0000038751FC586A18p0", "0x0.00000391FADF81B02Fp0", +"0x0.0000039CB3C5572F67p0", "0x0.000003A77CADDCE86Ap0", "0x0.000003B2559916DBE4p0", "0x0.000003BD3E87090A84p0", +"0x0.000003C83777B774F8p0", "0x0.000003D3406B261BF0p0", "0x0.000003DE596159001Cp0", "0x0.000003E9825A54222Dp0", +"0x0.000003F4BB561B82D7p0", "0x0.000004000454B322CCp0", "0x0.0000040B5D561F02C2p0", "0x0.00000416C65A63236Ep0", +"0x0.000004223F61838586p0", "0x0.0000042DC86B8429C2p0", "0x0.0000043961786910DBp0", "0x0.000004450A88363B8Ap0", +"0x0.00000450C39AEFAA8Ap0", "0x0.0000045C8CB0995E96p0", "0x0.0000046865C937586Bp0", "0x0.000004744EE4CD98C6p0", +"0x0.000004804803602067p0", "0x0.0000048C5124F2F00Cp0", "0x0.000004986A498A0876p0", "0x0.000004A49371296A67p0", +"0x0.000004B0CC9BD516A1p0", "0x0.000004BD15C9910DE8p0", "0x0.000004C96EFA615101p0", "0x0.000004D5D82E49E0B0p0", +"0x0.000004E251654EBDBDp0", "0x0.000004EEDA9F73E8F0p0", "0x0.000004FB73DCBD6310p0", "0x0.000005081D1D2F2CE7p0", +"0x0.00000514D660CD4740p0", "0x0.000005219FA79BB2E7p0", "0x0.0000052E78F19E70A8p0", "0x0.0000053B623ED98150p0", +"0x0.000005485B8F50E5AFp0", "0x0.0000055564E3089E93p0", "0x0.000005627E3A04ACCEp0", "0x0.0000056FA794491131p0", +"0x0.0000057CE0F1D9CC8Ep0", "0x0.0000058A2A52BADFBAp0", "0x0.0000059783B6F04B88p0", "0x0.000005A4ED1E7E10CFp0", +"0x0.000005B26689683064p0", "0x0.000005BFEFF7B2AB20p0", "0x0.000005CD89696181DBp0", "0x0.000005DB32DE78B56Fp0", +"0x0.000005E8EC56FC46B6p0", "0x0.000005F6B5D2F0368Cp0", "0x0.000006048F525885CDp0", "0x0.0000061278D5393558p0", +"0x0.00000620725B96460Ap0", "0x0.0000062E7BE573B8C3p0", "0x0.0000063C9572D58E64p0", "0x0.0000064ABF03BFC7CEp0", +"0x0.00000658F8983665E5p0", "0x0.0000066742303D698Bp0", "0x0.000006759BCBD8D3A5p0", "0x0.00000684056B0CA519p0", +"0x0.000006927F0DDCDECEp0", "0x0.000006A108B44D81AAp0", "0x0.000006AFA25E628E98p0", "0x0.000006BE4C0C20067Fp0", +"0x0.000006CD05BD89EA4Bp0", "0x0.000006DBCF72A43AE8p0", "0x0.000006EAA92B72F942p0", "0x0.000006F992E7FA2646p0", +"0x0.000007088CA83DC2E4p0", "0x0.00000717966C41D00Ap0", "0x0.00000726B0340A4EAAp0", "0x0.00000735D9FF9B3FB6p0", +"0x0.0000074513CEF8A41Ep0", "0x0.000007545DA2267CD9p0", "0x0.00000763B77928CAD9p0", "0x0.000007732154038F14p0", +"0x0.000007829B32BACA82p0", "0x0.000007922515527E1Ap0", "0x0.000007A1BEFBCEAAD4p0", "0x0.000007B168E63351AAp0", +"0x0.000007C122D4847397p0", "0x0.000007D0ECC6C61195p0", "0x0.000007E0C6BCFC2CA3p0", "0x0.000007F0B0B72AC5BEp0", + }; + ap_ufixed<51,-21> f_x_msb_3 = f_x_msb_3_table[x_msb_ind_3]; + ap_ufixed<62,-10> exp_x_msb_3_m_1 = 0; + exp_x_msb_3_m_1(61,54) = x_msb_3(7,0); + exp_x_msb_3_m_1(50, 0) = f_x_msb_3(50,0); + + ap_ufixed<50,-10> exp_x_msb_3_m_1_s = exp_x_msb_3_m_1; + //50*51 + ap_ufixed<101,-27> f_x_msb_3_4_5_lsb = exp_x_msb_3_m_1_s * exp_x_msb_4_5_lsb_m_1; + ap_ufixed<45,-27> f_x_msb_3_4_5_lsb_s = f_x_msb_3_4_5_lsb; + ap_ufixed<63, -9> exp_x_msb_3_4_5_lsb_m_1 = f_x_msb_3_4_5_lsb_s + exp_x_msb_3_m_1 + exp_x_msb_4_5_lsb_m_1; + + //maybe need to extend to 65 + const static ap_ufixed<64,-4> f_x_msb_2_table[256] = { +"0x0.0p0", "0x0.00000800AAB555DDEp0", "0x0.00002005560011127p0", "0x0.00004812036081A9Cp0", +"0x0.0000802AB55777D28p0", "0x0.0000C8536F6684062p0", "0x0.0001209036103740Dp0", "0x0.000188E50ED8634A0p0", +"0x0.0002015600445B0C3p0", "0x0.000289E711DB32FD7p0", "0x0.0003229C4C260197Ep0", "0x0.0003CB79B8B01FE26p0", +"0x0.0004848362076A08Dp0", "0x0.00054DBD53BC80058p0", "0x0.0006272B9A630659Dp0", "0x0.000710D24391E6D7Ap0", +"0x0.00080AB55DE3917ABp0", "0x0.000914D8F8F63D524p0", "0x0.000A2F41256C297AFp0", "0x0.000B59F1F4EBDE291p0", +"0x0.000C94EF7A206DC2Dp0", "0x0.000DE03DC8B9B60B1p0", "0x0.000F3BE0F56CA15C4p0", "0x0.0010A7DD15F367F40p0", +"0x0.00122436410DD14E5p0", "0x0.0013B0F08E817591Ep0", "0x0.00154E101719FF0C5p0", "0x0.0016FB98F4A96BBEFp0", +"0x0.0018B98F42084EFBDp0", "0x0.001A87F71B1613137p0", "0x0.001C66D49CB93B127p0", "0x0.001E562BE4DFA4904p0", +"0x0.00205601127EC98E0p0", "0x0.00226658459402659p0", "0x0.002487359F24C7C99p0", "0x0.0026B89D413EF4D5Ep0", +"0x0.0028FA934EF909304p0", "0x0.002B4D1BEC726B39Cp0", "0x0.002DB03B3ED3AA50Ep0", "0x0.003023F56C4EC123Fp0", +"0x0.0032A84E9C1F58145p0", "0x0.00353D4AF68B07AA1p0", "0x0.0037E2EEA4E19B185p0", "0x0.003A993DD17D52D25p0", +"0x0.003D603CA7C32730Fp0", "0x0.004037EF54230B293p0", "0x0.0043205A04182F12Fp0", "0x0.00461980E62943810p0", +"0x0.0049236829E8BC292p0", "0x0.004C3E13FFF512DD8p0", "0x0.004F698899F90A966p0", "0x0.0052A5CA2AABF28D0p0", +"0x0.0055F2DCE5D1E966Ep0", "0x0.005950C5003C20723p0", "0x0.005CBF86AFC91EF2Bp0", "0x0.00603F262B65057FCp0", +"0x0.0063CFA7AB09D1732p0", "0x0.0067710F67BFA0687p0", "0x0.006B23619B9CF3CDEp0", "0x0.006EE6A281C6F4857p0", +"0x0.0072BAD65671B6977p0", "0x0.0076A00156E07CF57p0", "0x0.007A9627C165FD4EDp0", "0x0.007E9D4DD564A3F5Ep0", +"0x0.0082B577D34ED7D5Bp0", "0x0.0086DEA9FCA73E799p0", "0x0.008B18E8940100253p0", "0x0.008F6437DD000BFDAp0", +"0x0.0093C09C1C595C43Ep0", "0x0.00982E1997D33A9FCp0", "0x0.009CACB49645847CCp0", "0x0.00A13C715F99EF773p0", +"0x0.00A5DD543CCC4DDAFp0", "0x0.00AA8F6177EAD3336p0", "0x0.00AF529D5C1658EBCp0", "0x0.00B4270C3582A301Dp0", +"0x0.00B90CB25176A4C8Bp0", "0x0.00BE0393FE4CC5BD7p0", "0x0.00C30BB58B73266CAp0", "0x0.00C8251B496BE5696p0", +"0x0.00CD4FC989CD64555p0", "0x0.00D28BC49F428CFA3p0", "0x0.00D7D910DD8B16743p0", "0x0.00DD37B2997BCA6E6p0", +"0x0.00E2A7AE28FECA6FBp0", "0x0.00E82907E313D5399p0", "0x0.00EDBBC41FD08C383p0", "0x0.00F35FE73860B9038p0", +"0x0.00F91575870692F24p0", "0x0.00FEDC73671B04BDFp0", "0x0.0104B4E5350DF2386p0", "0x0.010A9ECF4E667E12Dp0", +"0x0.01109A3611C34FB64p0", "0x0.0116A71DDEDAD92D8p0", "0x0.011CC58B167B9D206p0", "0x0.0122F5821A8C74E0Dp0", +"0x0.012937074E0CD6893p0", "0x0.012F8A1F15151B2C6p0", "0x0.0135EECDD4D6C5172p0", "0x0.013C6517F39CC6233p0", +"0x0.0142ED01D8CBC61C4p0", "0x0.0149868FECE26935Dp0", "0x0.015031C6997996937p0", "0x0.0156EEAA4944BEE23p0", +"0x0.015DBD3F68122303Ep0", "0x0.01649D8A62CB1ACBEp0", "0x0.016B8F8FA7745BCDBp0", "0x0.01729353A52E403D8p0", +"0x0.0179A8DACC350DE1Dp0", "0x0.0180D0298DE13D179p0", "0x0.018809445CA7BFE78p0", "0x0.018F542FAC1A492D6p0", +"0x0.0196B0EFF0E793D15p0", "0x0.019E1F89A0DBAA128p0", "0x0.01A5A00132E02CE42p0", "0x0.01AD325B1EFC9B5BCp0", +"0x0.01B4D69BDE569A322p0", "0x0.01BC8CC7EB323B553p0", "0x0.01C454E3C0F2458C8p0", "0x0.01CC2EF3DC187C2F6p0", +"0x0.01D41AFCBA45E6ED2p0", "0x0.01DC1902DA3B19A6Dp0", "0x0.01E4290ABBD87C5BCp0", "0x0.01EC4B18E01E9326Fp0", +"0x0.01F47F31C92E464FCp0", "0x0.01FCC559FA492A6B6p0", "0x0.02051D95F7D1C8917p0", "0x0.020D87EA474BE6A1Cp0", +"0x0.0216045B6F5CCF9CEp0", "0x0.021E92EDF7CB9C0E4p0", "0x0.022733A669817A88Ap0", "0x0.022FE6894E89F834Cp0", +"0x0.0238AB9B321349722p0", "0x0.024182E0A06E9289Bp0", "0x0.024A6C5E271030733p0", "0x0.02536818549001AC1p0", +"0x0.025C7613B8A9AF215p0", "0x0.02659654E43CF52B1p0", "0x0.026EC8E0694DEC9A9p0", "0x0.02780DBADB0553DA6p0", +"0x0.028164E8CDB0D8211p0", "0x0.028ACE6ED6C35EB5Fp0", "0x0.02944A518CD54E484p0", "0x0.029DD89587A4D858Dp0", +"0x0.02A7793F601642B5Dp0", "0x0.02B12C53B03431090p0", "0x0.02BAF1D7132FEE788p0", "0x0.02C4C9CE2561B759Fp0", +"0x0.02CEB43D844902F7Ap0", "0x0.02D8B129CE8CCD68Fp0", "0x0.02E2C097A3FBE17C9p0", "0x0.02ECE28BA58D22B56p0", +"0x0.02F7170A755FD759Ep0", "0x0.03015E18B6BBF2966p0", "0x0.030BB7BB0E125EB13p0", "0x0.031623F620FD4751Ep0", +"0x0.0320A2CE964063DACp0", "0x0.032B344915C941D54p0", "0x0.0335D86A48AF8F70Cp0", "0x0.03408F36D93566140p0", +"0x0.034B58B372C795013p0", "0x0.035634E4C1FDEC0D0p0", "0x0.036123CF749B8667Cp0", "0x0.036C2578398F157A0p0", +"0x0.037739E3C0F32BD30p0", "0x0.03826116BC0E882ACp0", "0x0.038D9B15DD5460763p0", "0x0.0398E7E5D864AD0E9p0", +"0x0.03A4478B620C73EB5p0", "0x0.03AFBA0B304613EEDp0", "0x0.03BB3F69FA3990464p0", "0x0.03C6D7AC783CDBDBFp0", +"0x0.03D282D763D424DCDp0", "0x0.03DE40EF77B220509p0", "0x0.03EA11F96FB855C4Fp0", "0x0.03F5F5FA08F76B0BBp0", +"0x0.0401ECF601AF700BDp0", "0x0.040DF6F219502AA55p0", "0x0.041A13F3107962A88p0", "0x0.042643FDA8FB2DDFBp0", +"0x0.04328716A5D63C2C4p0", "0x0.043EDD42CB3C23B6Dp0", "0x0.044B4686DE8FAD325p0", "0x0.0457C2E7A66520322p0", +"0x0.04645269EA828F932p0", "0x0.0470F51273E025F89p0", "0x0.047DAAE60CA8725B3p0", "0x0.048A73E98038B4ABFp0", +"0x0.049750219B212A8A0p0", "0x0.04A43F932B255C0B7p0", "0x0.04B14242FF3C689A0p0", "0x0.04BE5835E79153E1Dp0", +"0x0.04CB8170B58352D4Ep0", "0x0.04D8BDF83BA618C04p0", "0x0.04E60DD14DC22475Ep0", "0x0.04F37100C0D50D88Ep0", +"0x0.0500E78B6B11D19D6p0", "0x0.050E717623E121CBAp0", "0x0.051C0EC5C3E1B016Cp0", "0x0.0529BF7F24E87CF6Ap0", +"0x0.053783A7220124F51p0", "0x0.05455B42976E2E5EAp0", "0x0.0553465662A95706Bp0", "0x0.056144E76263E21F4p0", +"0x0.056F56FA7686E623Ep0", "0x0.057D7C9480339AD83p0", "0x0.058BB5BA61C3A75A3p0", "0x0.059A0270FEC97047Ap0", +"0x0.05A862BD3C1065F74p0", "0x0.05B6D6A3FF9D52C58p0", "0x0.05C55E2A30AEA974Ep0", "0x0.05D3F954B7BCD3A1Bp0", +"0x0.05E2A8287E7A8049Ep0", "0x0.05F16AAA6FD4F267Bp0", "0x0.060040DF77F44FA13p0", "0x0.060F2ACC843BEF0A0p0", +"0x0.061E2876834AA7FA4p0", "0x0.062D39E264FB20F7Ep0", "0x0.063C5F151A641EB4Cp0", "0x0.064B981395D8D31FEp0", +"0x0.065AE4E2CAE92C8AAp0", "0x0.066A4587AE6224E1Cp0", "0x0.0679BA07364E10FA3p0", "0x0.0689426659F4EFF1Bp0", +"0x0.0698DEAA11DCBAA37p0", "0x0.06A88ED757C9B3304p0", "0x0.06B852F326BEB49B0p0", "0x0.06C82B027AFD8278Ap0", +"0x0.06D8170A520718B46p0", "0x0.06E8170FAA9BFB67Ep0", "0x0.06F82B1784BC86C72p0", "0x0.07085326E1A93F207p0", +"0x0.07188F42C3E320F0Bp0", "0x0.0728DF702F2BF10B2p0", "0x0.073943B428868CD5Ap0", "0x0.0749BC13B6373A98Fp0", +"0x0.075A4893DFC3F9E4Cp0", "0x0.076AE939ADF4D4083p0", "0x0.077B9E0A2AD42C9E8p0", "0x0.078C670A61AF122F4p0", +"0x0.079D443F5F158EE3Ap0", "0x0.07AE35AE30DAF94F1p0", "0x0.07BF3B5BE616454CBp0", "0x0.07D0554D8F2254F0Cp0", +"0x0.07E183883D9E498E2p0", "0x0.07F2C611046DD4D06p0", "0x0.08041CECF7B989EA2p0", "0x0.081588212CEF2ED73p0", +"0x0.082707B2BAC20DB40p0", "0x0.08389BA6B92B46284p0", "0x0.084A4402416A1EE6Fp0", "0x0.085C00CA6E045741Fp0", +"0x0.086DD2045AC678D2Bp0", "0x0.087FB7B524C42936Cp0", "0x0.0891B1E1EA587BE12p0", "0x0.08A3C08FCB2643FFEp0", + }; + ap_ufixed<64,-4> f_x_msb_2 = f_x_msb_2_table[x_msb_ind_2]; + ap_ufixed< 6,-4> f_x_msb_2_h; + f_x_msb_2_h(5,0) = f_x_msb_2(63,58); + ap_ufixed< 9,-1> exp_x_msb_2_m_1_h = f_x_msb_2_h + x_msb_2; + ap_ufixed<67,-1> exp_x_msb_2_m_1; + exp_x_msb_2_m_1(66,58) = exp_x_msb_2_m_1_h(8,0); + exp_x_msb_2_m_1(57, 0) = f_x_msb_2(57,0); + //67*63 + ap_ufixed<130,-10> f_x_msb_2_3_4_5_lsb = exp_x_msb_2_m_1 * exp_x_msb_3_4_5_lsb_m_1; + ap_ufixed<62,-10> f_x_msb_2_3_4_5_lsb_s = f_x_msb_2_3_4_5_lsb; + ap_ufixed<72,0> exp_x_msb_2_3_4_5_lsb_m_1 = f_x_msb_2_3_4_5_lsb_s + exp_x_msb_2_m_1 + exp_x_msb_3_4_5_lsb_m_1; + + const static ap_ufixed<68,32> exp_x_msb_1_table[256] = { +"0x1.000000000p0", "0x1.48B5E3C3Ep0", "0x1.A61298E1Ep0", "0x2.1DF3B68CFp0", +"0x2.B7E151628p0", "0x3.7D871DB61p0", "0x4.7B4FF993Fp0", "0x5.C12DA416Ep0", +"0x7.63992E353p0", "0x9.7CDC417A3p0", "0xC.2EB7EC98Fp0", "0xF.A48385EDFp0", +"0x14.15E5BF6FBp0", "0x19.CA53B7811p0", "0x21.1D8E4272Dp0", "0x2A.8565A144Cp0", +"0x36.99205C4E7p0", "0x46.1AFC4DB59p0", "0x5A.0462B7877p0", "0x73.9593ABB7Dp0", +"0x94.69C4CB819p0", "0xBE.90F6F83E9p0", "0xF4.B122790DDp0", "0x13A.30CF1CCBBp0", +"0x193.6DC5690C0p0", "0x206.03487A3B1p0", "0x299.2442102D9p0", "0x356.0F0B0F980p0", +"0x448.A216ABB76p0", "0x580.1AD754FA3p0", "0x710.0ADBAC7DAp0", "0x911.9289C3923p0", +"0xBA4.F53EA3863p0", "0xEF3.A035D5798p0", "0x1332.C4D2B7C4Ap0", "0x18A6.B027DA0A7p0", +"0x1FA7.157C470F8p0", "0x28A4.90D2CCEF1p0", "0x342F.BA11823B8p0", "0x4302.3A933EE5Cp0", +"0x560A.773E54157p0", "0x6E7A.8ABB4A83Cp0", "0x8DDB.80AF4269Dp0", "0xB626.0748BAEC7p0", +"0xE9E2.2447727BFp0", "0x12C4F.EB75B2AB0p0", "0x1819B.C560F6113p0", "0x1EF21.8F1B001A4p0", +"0x27BC2.CA9A6F934p0", "0x33055.49F35D91Fp0", "0x41831.49596E996p0", "0x541E7.E56949D58p0", +"0x6C02D.645AB2554p0", "0x8AB06.0A3EE9FB1p0", "0xB2148.5EAE56C5Bp0", "0xE4A8D.2881EDBE8p0", +"0x1259AC.48BF05D6Ep0", "0x178FEE.7792E44B3p0", "0x1E4127.437732B71p0", "0x26D8F9.4A204BEA5p0", +"0x31E199.5F5A550DDp0", "0x400C7D.64D3386CBp0", "0x523D82.79EDAEF9Cp0", "0x69993D.D4F2D9524p0", +"0x87975E.854001024p0", "0xAE1A47.C38A42CD0p0", "0xDF8D5F.6DCFE5CEAp0", "0x11F0BF8.1E99FDEB6p0", +"0x1709348.C0EA4F8CEp0", "0x1D94295.464477ACCp0", "0x25FAD90.65C78E342p0", "0x30C4623.616ED2BE2p0", +"0x3E9E441.232817A61p0", "0x506744D.3B342FC94p0", "0x673D70B.C00F1F76Dp0", "0x849012B.C127FC962p0", +"0xAA36C7C.F69370B94p0", "0xDA8F202.DD9ACE661p0", "0x118A2AAE.0AA05236Bp0", "0x16857CFA.1AA8A5555p0", +"0x1CEB088B.68E804021p0", "0x2521AEDA.32CD52BE5p0", "0x2FAD89E1.79BAB8EADp0", "0x3D3838C6.BE0F13F06p0", +"0x4E9B87F6.7BB3F5597p0", "0x64EF201B.01109A4A5p0", "0x819A1801.9394C0D96p0", "0xA6698403.CF5D9E663p0", +"0xD5AD6DCE.21AFFC0DDp0", "0x1125E066B.0B19418CCp0", "0x1604B68CF.05F65FAA9p0", "0x1C45AED0A.D0C934CDCp0", +"0x244D5E676.3FB814AF0p0", "0x2E9CEBF49.9C21839C7p0", "0x3BDA2CBD0.9F5AC2146p0", "0x4CDA0FD41.989F004E7p0", +"0x62ADFED51.D7EDCCDE6p0", "0x7EB50B520.76F91D6E8p0", "0xA2B1FD3D9.A57B6C33Cp0", "0xD0E7A50F4.EF0D7447Fp0", +"0x10C3D39209.62C88AAFBp0", "0x1586D0722B.3EEB27301p0", "0x1BA4068AAC.2B6E3EE34p0", "0x237DCBF1E5.709A9F9C1p0", +"0x2D9264D2D4.D6B94153Bp0", "0x3A83F23B18.FE5BD524Ap0", "0x4B22A1B5C3.27A2FD85Ap0", "0x6079C1866C.71A93951Dp0", +"0x7BE08BDFD9.CC72249ABp0", "0x9F0FB7309C.B446D3919p0", "0xCC3D265776.C3D25779Ep0", "0x1063F7612B0.C0831CA6Cp0", +"0x150BBA37963.79A4FB6ADp0", "0x1B05FA9B62E.737D935B8p0", "0x22B2DC5C41D.AD89559EBp0", "0x2C8DD1AB28B.404414BE7p0", +"0x39355C8C638.0AC5631B1p0", "0x49750434675.301B8D0E7p0", "0x5E521E7A16E.51F9CD3C2p0", "0x791C3B06F8B.EA2DEC48Cp0", +"0x9B823857614.764F43E20p0", "0xC7AD559D438.E7C270C30p0", "0x10063F4E687B.A1A43A35Bp0", "0x149363C905BA.3641D0164p0", +"0x1A6B765D8CDF.6CDBF1C63p0", "0x21EC75240E66.E2891CE63p0", "0x2B8F1073A6AF.BA219DB61p0", "0x37EE3FFC0063.E360F931Fp0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", "0x0.000000000p0", +"0x0.000000000p0", "0x0.000000001p0", "0x0.000000001p0", "0x0.000000002p0", +"0x0.000000002p0", "0x0.000000003p0", "0x0.000000004p0", "0x0.000000005p0", +"0x0.000000007p0", "0x0.000000009p0", "0x0.00000000Bp0", "0x0.00000000Ep0", +"0x0.000000013p0", "0x0.000000018p0", "0x0.00000001Fp0", "0x0.000000028p0", +"0x0.000000034p0", "0x0.000000042p0", "0x0.000000055p0", "0x0.00000006Ep0", +"0x0.00000008Dp0", "0x0.0000000B5p0", "0x0.0000000E9p0", "0x0.00000012Bp0", +"0x0.000000181p0", "0x0.0000001EEp0", "0x0.00000027Ap0", "0x0.00000032Fp0", +"0x0.000000416p0", "0x0.00000053Fp0", "0x0.0000006BDp0", "0x0.0000008A7p0", +"0x0.000000B1Cp0", "0x0.000000E44p0", "0x0.000001252p0", "0x0.000001786p0", +"0x0.000001E35p0", "0x0.0000026C9p0", "0x0.0000031CEp0", "0x0.000003FF3p0", +"0x0.00000521Dp0", "0x0.000006970p0", "0x0.000008762p0", "0x0.00000ADD6p0", +"0x0.00000DF36p0", "0x0.000011E9Cp0", "0x0.000017003p0", "0x0.00001D88Ap0", +"0x0.000025EC0p0", "0x0.000030B15p0", "0x0.00003E85Dp0", "0x0.00005047Ep0", +"0x0.000067153p0", "0x0.0000845C6p0", "0x0.0000A9F46p0", "0x0.0000DA39Ep0", +"0x0.000118354p0", "0x0.000167CB5p0", "0x0.0001CDFC2p0", "0x0.000251334p0", +"0x0.0002F9AF3p0", "0x0.0003D205Ap0", "0x0.0004E7CE2p0", "0x0.00064C7C6p0", +"0x0.000816791p0", "0x0.000A628A3p0", "0x0.000D55A1Fp0", "0x0.00111F30Fp0", +"0x0.0015FC210p0", "0x0.001C3AA91p0", "0x0.00243F374p0", "0x0.002E8ABFCp0", +"0x0.003BC2D73p0", "0x0.004CBC19Ap0", "0x0.006287862p0", "0x0.007E83A56p0", +"0x0.00A2728F8p0", "0x0.00D096336p0", "0x0.010BD4A5Ap0", "0x0.0157E6BFEp0", +"0x0.01B993FE0p0", "0x0.0236FF5BFp0", "0x0.02D80A08Dp0", "0x0.03A6D2222p0", +"0x0.04B0556E0p0", "0x0.0605424D5p0", "0x0.07BB04063p0", "0x0.09ED1B429p0", +"0x0.0CBED8666p0", "0x0.105D93892p0", "0x0.150385C09p0", "0x0.1AFB718E8p0", +"0x0.22A555477p0", "0x0.2C7C72FC0p0", "0x0.391F0EE49p0", "0x0.495860DCAp0", +"0x0.5E2D58D8Bp0", "0x0.78ED03AFBp0", "0x0.9B4597E37p0", "0x0.C75F7CF56p0", + }; + ap_ufixed<68,32> exp_x_msb_1 = exp_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<140,32> y_lo = exp_x_msb_1 * exp_x_msb_2_3_4_5_lsb_m_1; + ap_ufixed<68,32> y_lo_s = y_lo; + ap_ufixed<68,32> y_l = y_lo_s + exp_x_msb_1; + y = y_l; + } + y += delta; + //if (I_<33) { // overflow + overf = 0; + for (int j = 64; j >= I_+31; j--) { + #pragma HLS unroll + if (y[j]) + overf = 1; + } + if (overf) { + for (int j = 64; j >= I_+31; j--) { + #pragma HLS unroll + y[j] = 0; + } + for (int j = I_+30; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + //} + r = y; + } + return r; +} + +template +ap_ufixed exp(ap_ufixed x) { + ap_fixed xf = x; + return exp(xf); +} + +template +ap_int exp(ap_int x) { + ap_fixed xf = x; + return exp(xf); +} + +template +ap_uint exp(ap_uint x) { + ap_fixed xf = x; + return exp(xf); +} + +template +ap_fixed expm1(ap_fixed x) { + ap_fixed result, tmp; + ap_ufixed<1,1> one = 1; + if(I < 1) { + result = 0; + } else { + ap_fixed tmp = exp(x); + ap_ufixed<1,1> one = 1; + result = tmp - one; + } + return result; +} + +template +ap_ufixed expm1(ap_ufixed x) { + ap_fixed xf = x; + return expm1(xf); +} + +template +ap_int expm1(ap_int x) { + ap_fixed xf = x; + return expm1(xf); +} + +template +ap_uint expm1(ap_uint x) { + ap_fixed xf = x; + return expm1(xf); +} + +template +ap_fixed exp2(ap_fixed x) { + + int F = W - I; + if(I > 33 || F > 32) { + return 0; + } + + int I_s; + int M = ((I - 1) > F) ? (I - 1) : F; + + if(M == 1) { + I_s = 1; + } else if(M == 2) { + I_s = 2; + } else if(M <= 4) { + I_s = 3; + } else if(M <= 8) { + I_s = 4; + } else if(M <= 16) { + I_s = 5; + } else { + I_s = 6; + } + + ap_fixed r; + + if(I_s == 1) { + + ap_fixed<3,2> x_l = x; + ap_ufixed<2,1> y = 0; + + if(!x_l[2]) { + y[1] = 1; + } + if(x_l[1]) { + y[0] = 1; + } + + if(I<2) { + if(y[1]) { + y[1]=0; + y[0]=1; + } + } + r = y; + + } else if(I_s == 2) { + + ap_fixed<5,3> x_l = x; + ap_ufixed<4,2> y = 0; + ap_fixed<2,2> x_l_int; + x_l_int(1,0) = x_l(3,2); + ap_ufixed<2,0> x_l_fract; + x_l_fract(1,0) = x_l(1,0); + + if( (x_l[4]&&(!x_l[3])) || ((!x_l[4])&&x_l[3]) ) { + if(!x_l[4]) { + y = "0x3.cp0"; + } + } else { + if((!x_l[3])&(x_l[2])) y[3] = 1; + if(((!x_l[3])&(!x_l[2])) | ((!x_l[3])&x_l[2]&x_l[1]&x_l[0])) y[2] = 1; + if( (x_l[3]&x_l[2]) | ((!x_l[3])&( (x_l[2]&(x_l[1]^x_l[0])) | ((!x_l[2])&x_l[1]&x_l[0] )))) y[1] = 1; + if((x_l[3]&(!x_l[2])) | (x_l[1]&((x_l[0]&x_l[2]) | ((!x_l[0])&(!x_l[3]))))) y[0] =1; + } + + if(I<3) { + bool overf = 0; + for(int j=3; j>=I+1; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if (overf) { + for(int j=3; j>=I+1; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j=I; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + + } else if(I_s == 3) { + + ap_fixed<9,5> x_l = x; + ap_ufixed<8,4> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(6,4); + ap_ufixed<4,0> x_l_fract; + x_l_fract(3,0) = x_l(3,0); + + if((x_l[8]!=x_l[7])||(x_l[8]!=x_l[6])) { + if(!x_l[8]) { + y = "0xf.fp0"; + } + } else { + ap_uint<4> x_msb_ind; + ap_uint<3> x_lsb_ind; + x_msb_ind[3] = x_l[8]; + x_msb_ind(2,0) = x_l(5,3); + x_lsb_ind(2,0) = x_l(2,0); + const static ap_ufixed<10,4> exp2_x_msb_table[16] = { + "0x1.00p0", "0x1.6Cp0", "0x2.00p0", "0x2.D4p0", + "0x4.00p0", "0x5.A8p0", "0x8.00p0", "0xB.50p0", + "0x0.10p0", "0x0.18p0", "0x0.20p0", "0x0.2Cp0", + "0x0.40p0", "0x0.5Cp0", "0x0.80p0", "0x0.B4p0" + }; + const static ap_ufixed<10,0> exp2_x_lsb_m_1_table[8] = { + "0x0.0p0", "0x0.0B4p0", "0x0.174p0", "0x0.238p0", + "0x0.308p0", "0x0.3E0p0", "0x0.4C0p0", "0x0.5ACp0" + }; + ap_ufixed<11,0> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + ap_ufixed<10,4> exp2_x_msb = exp2_x_msb_table[x_msb_ind]; + ap_ufixed<21,4> y_lo = exp2_x_msb * exp2_x_lsb_m_1; + ap_ufixed<10,4> y_lo_s = y_lo; + ap_ufixed<10,4> y_l = y_lo_s + exp2_x_msb; + y = y_l; + } + + if(I < 5) { + bool overf = 0; + for(int j=7; j>=3+I; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if(overf) { + for(int j=7; j>=3+I; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j=I+2; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + + } else if(I_s == 4) { + + ap_fixed<17,9> x_l=x; + ap_ufixed<16,8> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(11,8); + ap_ufixed<8,0> x_l_fract; + x_l_fract(7,0) = x_l(7,0); + + bool overf_1 = 0; + for(int j=11; j<16; j++) { + #pragma HLS unroll + if(x_l[16]!=x_l[j]) { + overf_1 = 1; + } + } + if(overf_1) { + if(!x_l[16]) { + y = "0xff.ffp0"; + } + } else { + + ap_uint<5> x_msb_ind_1; + x_msb_ind_1(4,0) = x_l(11,7); + ap_uint<4> x_msb_ind_2; + x_msb_ind_2(3,0) = x_l(6,3); + ap_uint<3> x_lsb_ind; + x_lsb_ind = x_l(2,0); + + const static ap_ufixed<14,-5> exp2_x_lsb_m_1_table[8] = { + "0x0.0p0", "0x0.00B1Ap0", "0x0.0163Ep0", "0x0.02168p0", + "0x0.02C9Ap0", "0x0.037D4p0", "0x0.04316p0", "0x0.04E60p0" + }; + ap_ufixed<14,-5> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<19,0> exp2_x_msb_2_m_1_table[16] = { + "0x0.0p0,0", "0x0.059B0p0", "0x0.0B558p0", "0x0.11302p0", + "0x0.172B8p0", "0x0.1D488p0", "0x0.2387Ap0", "0x0.29E9Ep0", + "0x0.306FEp0", "0x0.371A8p0", "0x0.3DEA6p0", "0x0.44E08p0", + "0x0.4BFDAp0", "0x0.5342Cp0", "0x0.5AB08p0", "0x0.6247Ep0" + }; + ap_ufixed<19,0> exp2_x_msb_2_m_1 = exp2_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed<33,-5> f_x_msb_2_lsb = exp2_x_msb_2_m_1 * exp2_x_lsb_m_1; + ap_ufixed<19,0> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<19,0> exp2_x_msb_2_lsb_m_1 = f_x_msb_2_lsb_s + exp2_x_msb_2_m_1 + exp2_x_lsb_m_1; + + const static ap_ufixed<19,8> exp2_x_msb_1_table[32] = { + "0x1.000p0", "0x1.6A0p0", "0x2.000p0", "0x2.D42p0", + "0x4.000p0", "0x5.A82p0", "0x8.000p0", "0xB.504p0", + "0x10.000p0", "0x16.A0Ap0", "0x20.000p0", "0x2D.414p0", + "0x40.000p0", "0x5A.828p0", "0x80.000p0", "0xB5.050p0", + "0x0.010p0", "0x0.016p0", "0x0.020p0", "0x0.02Ep0", + "0x0.040p0", "0x0.05Ap0", "0x0.080p0", "0x0.0B6p0", + "0x0.100p0", "0x0.16Ap0", "0x0.200p0", "0x0.2D4p0", + "0x0.400p0", "0x0.5A8p0", "0x0.800p0", "0x0.B50p0" + }; + ap_ufixed<19,8> exp2_x_msb_1 = exp2_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<38,8> y_lo = exp2_x_msb_1 * exp2_x_msb_2_lsb_m_1; + ap_ufixed<19,8> y_lo_s = y_lo; + ap_ufixed<19,8> y_l = y_lo_s + exp2_x_msb_1; + y = y_l; + } + + if(I < 9) { + bool overf_2 = 0; + for(int j=15; j>=7+I; j--) { + #pragma HLS unroll + if(y[j]) { + overf_2 = 1; + } + } + if(overf_2) { + for(int j=15; j>=7+I; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j=6+I; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + + } else if(I_s == 5) { + + ap_fixed<33,17> x_l = x; + ap_ufixed<32,16> y = 0; + ap_fixed<5,5> x_l_int; + x_l_int(4,0) = x_l(20,16); + ap_ufixed<16,0> x_l_fract; + x_l_fract(15,0) = x_l(15,0); + + bool overf_1 = 0; + for(int j=20; j<32; j++) { + #pragma HLS unroll + if(x_l[32]!=x_l[j]) { + overf_1 = 1; + } + } + if(overf_1) { + if(!x_l[32]) { + y = "0xffff.ffffp0"; + } + } else { + ap_uint<6> x_msb_ind_1; + x_msb_ind_1(5,0) = x_l(20,15); + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(14,10); + ap_uint<5> x_msb_ind_3; + x_msb_ind_3(4,0) = x_l(9,5); + ap_uint<5> x_lsb_ind; + x_lsb_ind = x_l(4,0); + + const static ap_ufixed<25,-11> exp2_x_lsb_m_1_table[32] = { + "0x0.0p0", "0x0.0000B1725p0", "0x0.000162E52p0", "0x0.000214587p0", + "0x0.0002C5CC3p0", "0x0.000377408p0", "0x0.000428B53p0", "0x0.0004DA2A7p0", + "0x0.00058BA02p0", "0x0.00063D165p0", "0x0.0006EE8CFp0", "0x0.0007A0042p0", + "0x0.0008517BBp0", "0x0.000902F3Dp0", "0x0.0009B46C6p0", "0x0.000A65E57p0", + "0x0.000B175F0p0", "0x0.000BC8D90p0", "0x0.000C7A538p0", "0x0.000D2BCE8p0", + "0x0.000DDD4A0p0", "0x0.000E8EC5Fp0", "0x0.000F40425p0", "0x0.000FF1BF4p0", + "0x0.0010A33CAp0", "0x0.001154BA8p0", "0x0.00120638Dp0", "0x0.0012B7B7Bp0", + "0x0.001369370p0", "0x0.00141AB6Cp0", "0x0.0014CC371p0", "0x0.00157DB7Dp0" + }; + ap_ufixed<25,-11> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<30,-6> exp2_x_msb_3_m_1_table[32] = { + "0x0.0p0", "0x0.00162F390p0", "0x0.002C605E3p0", "0x0.0042936FBp0", + "0x0.0058C86DAp0", "0x0.006EFF584p0", "0x0.0085382FBp0", "0x0.009B72F42p0", + "0x0.00B1AFA5Bp0", "0x0.00C7EE449p0", "0x0.00DE2ED0Fp0", "0x0.00F4714AFp0", + "0x0.010AB5B2Dp0", "0x0.0120FC08Ap0", "0x0.0137444CAp0", "0x0.014D8E7EFp0", + "0x0.0163DA9FBp0", "0x0.017A28AF2p0", "0x0.019078AD7p0", "0x0.01A6CA9ABp0", + "0x0.01BD1E771p0", "0x0.01D37442Dp0", "0x0.01E9CBFE1p0", "0x0.020025A8Fp0", + "0x0.02168143Bp0", "0x0.022CDECE7p0", "0x0.02433E495p0", "0x0.02599FB48p0", + "0x0.027003104p0", "0x0.0286685CAp0", "0x0.029CCF99Dp0", "0x0.02B338C81p0" + }; + ap_ufixed<30,-6> exp2_x_msb_3_m_1 = exp2_x_msb_3_m_1_table[x_msb_ind_3]; + ap_ufixed<55,-17> f_x_msb_3_lsb = exp2_x_msb_3_m_1 * exp2_x_lsb_m_1; + ap_ufixed<19,-17> f_x_msb_3_lsb_s = f_x_msb_3_lsb; + ap_ufixed<30,-6> exp2_x_msb_3_lsb_m_1 = f_x_msb_3_lsb_s + exp2_x_msb_3_m_1 + exp2_x_lsb_m_1; + + const static ap_ufixed<36,0> exp2_x_msb_2_m_1_table[32] = { + "0x0.0p0", "0x0.02C9A3E78p0", "0x0.059B0D316p0", "0x0.087451876p0", + "0x0.0B5586CFAp0", "0x0.0E3EC32D4p0", "0x0.11301D012p0", "0x0.1429AAEA9p0", + "0x0.172B83C7Dp0", "0x0.1A35BEB70p0", "0x0.1D4873169p0", "0x0.2063B8863p0", + "0x0.2387A6E75p0", "0x0.26B4565E2p0", "0x0.29E9DF520p0", "0x0.2D285A6E4p0", + "0x0.306FE0A32p0", "0x0.33C08B264p0", "0x0.371A7373Bp0", "0x0.3A7DB34E6p0", + "0x0.3DEA64C12p0", "0x0.4160A21F7p0", "0x0.44E086062p0", "0x0.486A2B5C1p0", + "0x0.4BFDAD536p0", "0x0.4F9B2769Dp0", "0x0.5342B569Dp0", "0x0.56F4736B5p0", + "0x0.5AB07DD48p0", "0x0.5E76F15ADp0", "0x0.6247EB03Ap0", "0x0.662388255p0" + }; + ap_ufixed<36,0> exp2_x_msb_2_m_1 = exp2_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed<66,-6> f_x_msb_2_lsb = exp2_x_msb_2_m_1 * exp2_x_msb_3_lsb_m_1; + ap_ufixed<30,-6> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<36,0> exp2_x_msb_2_3_lsb_m_1 = f_x_msb_2_lsb_s + exp2_x_msb_2_m_1 + exp2_x_msb_3_lsb_m_1; + + const static ap_ufixed<36,16> exp2_x_msb_1_table[64] = { + "0x1.00000p0", "0x1.6A09Ep0", "0x2.00000p0", "0x2.D413Dp0", + "0x4.00000p0", "0x5.A827Ap0", "0x8.00000p0", "0xB.504F3p0", + "0x10.00000p0", "0x16.A09E6p0", "0x20.00000p0", "0x2D.413CDp0", + "0x40.00000p0", "0x5A.8279Ap0", "0x80.00000p0", "0xB5.04F33p0", + "0x100.00000p0", "0x16A.09E66p0", "0x200.00000p0", "0x2D4.13CCDp0", + "0x400.00000p0", "0x5A8.2799Ap0", "0x800.00000p0", "0xB50.4F334p0", + "0x1000.00000p0", "0x16A0.9E668p0", "0x2000.00000p0", "0x2D41.3CCD0p0", + "0x4000.00000p0", "0x5A82.799A0p0", "0x8000.00000p0", "0xB504.F3340p0", + "0x0.00010p0", "0x0.00017p0", "0x0.00020p0", "0x0.0002Dp0", + "0x0.00040p0", "0x0.0005Bp0", "0x0.00080p0", "0x0.000B5p0", + "0x0.00100p0", "0x0.0016Ap0", "0x0.00200p0", "0x0.002D4p0", + "0x0.00400p0", "0x0.005A8p0", "0x0.00800p0", "0x0.00B50p0", + "0x0.01000p0", "0x0.016A1p0", "0x0.02000p0", "0x0.02D41p0", + "0x0.04000p0", "0x0.05A82p0", "0x0.08000p0", "0x0.0B505p0", + "0x0.10000p0", "0x0.16A0Ap0", "0x0.20000p0", "0x0.2D414p0", + "0x0.40000p0", "0x0.5A828p0", "0x0.80000p0", "0x0.B504Fp0" + }; + ap_ufixed<36,16> exp2_x_msb_1 = exp2_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<72,16> y_lo = exp2_x_msb_1 * exp2_x_msb_2_3_lsb_m_1; + ap_ufixed<36,16> y_lo_s = y_lo; + ap_ufixed<36,16> y_l = y_lo_s + exp2_x_msb_1; + y = y_l; + } + + if(I<17) { + bool overf_2 = 0; + for(int j=31; j>=I+15; j--) { + #pragma HLS unroll + if(y[j]) { + overf_2 = 1; + } + } + if(overf_2) { + for(int j=31; j>=I+15; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j=I+14; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + + } else { + ap_fixed<65,33> x_l = 0; + for(int j=32-F; j<32+I; j++) { + #pragma HLS unroll + x_l[j] = x[j-(32-F)]; + } + for(int j=32+I; j<=64; j++) { + #pragma HLS unroll + x_l[j] = x[W-1]; + } + ap_ufixed<64,32> y = 0; + ap_fixed<6,6> x_l_int; + x_l_int(5,0) = x_l(37,32); + ap_ufixed<32,0> x_l_fract; + x_l_fract(31,0) = x_l(31,0); + + bool overf_1 = 0; + for(int j=37; j<64; j++) { + #pragma HLS unroll + if(x_l[j]!=x_l[64]) { + overf_1 = 1; + } + } + if(overf_1) { + if(!x_l[64]) { + for(int j=0; j<64; j++) { + #pragma HLS unroll + y[j] = 1; + } + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1(7,0) = x_l(37,30); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(29,22); + ap_uint<8> x_msb_ind_3; + x_msb_ind_3(7,0) = x_l(21,14); + ap_uint<8> x_msb_ind_4; + x_msb_ind_4(7,0) = x_l(13,6); + ap_uint<6> x_lsb_ind; + x_lsb_ind(5,0) = x_l(5,0); + + const static ap_ufixed<42,-26> exp2_x_lsb_m_1_table[64] = { + "0x0.0p0", "0x0.00000000B17217F81p0", "0x0.0000000162E42FF0Ap0", "0x0.00000002145647E9Ap0", + "0x0.00000002C5C85FE32p0", "0x0.00000003773A77DD2p0", "0x0.0000000428AC8FD79p0", "0x0.00000004DA1EA7D28p0", + "0x0.000000058B90BFCDFp0", "0x0.000000063D02D7C9Dp0", "0x0.00000006EE74EFC63p0", "0x0.000000079FE707C31p0", + "0x0.0000000851591FC07p0", "0x0.0000000902CB37BE4p0", "0x0.00000009B43D4FBC9p0", "0x0.0000000A65AF67BB6p0", + "0x0.0000000B17217FBAAp0", "0x0.0000000BC89397BA6p0", "0x0.0000000C7A05AFBA9p0", "0x0.0000000D2B77C7BB5p0", + "0x0.0000000DDCE9DFBC8p0", "0x0.0000000E8E5BF7BE2p0", "0x0.0000000F3FCE0FC05p0", "0x0.0000000FF14027C2Fp0", + "0x0.00000010A2B23FC61p0", "0x0.00000011542457C9Ap0", "0x0.0000001205966FCDBp0", "0x0.00000012B70887D24p0", + "0x0.00000013687A9FD75p0", "0x0.0000001419ECB7DCDp0", "0x0.00000014CB5ECFE2Dp0", "0x0.000000157CD0E7E94p0", + "0x0.000000162E42FFF03p0", "0x0.00000016DFB517F7Ap0", "0x0.0000001791272FFF9p0", "0x0.0000001842994807Fp0", + "0x0.00000018F40B6010Dp0", "0x0.00000019A57D781A3p0", "0x0.0000001A56EF90240p0", "0x0.0000001B0861A82E6p0", + "0x0.0000001BB9D3C0392p0", "0x0.0000001C6B45D8447p0", "0x0.0000001D1CB7F0503p0", "0x0.0000001DCE2A085C7p0", + "0x0.0000001E7F9C20692p0", "0x0.0000001F310E38765p0", "0x0.0000001FE28050840p0", "0x0.0000002093F268923p0", + "0x0.00000021456480A0Dp0", "0x0.00000021F6D698AFFp0", "0x0.00000022A848B0BF9p0", "0x0.0000002359BAC8CFAp0", + "0x0.000000240B2CE0E03p0", "0x0.00000024BC9EF8F14p0", "0x0.000000256E111102Cp0", "0x0.000000261F832914Cp0", + "0x0.00000026D0F541274p0", "0x0.000000278267593A3p0", "0x0.0000002833D9714DBp0", "0x0.00000028E54B89619p0", + "0x0.0000002996BDA1760p0", "0x0.0000002A482FB98AEp0", "0x0.0000002AF9A1D1A04p0", "0x0.0000002BAB13E9B61p0" + }; + ap_ufixed<42,-26> exp2_x_lsb_m_1 = exp2_x_lsb_m_1_table[x_lsb_ind]; + + const static ap_ufixed<50,-18> exp2_x_msb_4_m_1_table[256] = { + "0x0.0p0", "0x0.0000002C5C8601CC7p0", "0x0.00000058B90C0B48Cp0", "0x0.0000008515921C751p0", + "0x0.000000B1721835515p0", "0x0.000000DDCE9E55DD7p0", "0x0.0000010A2B247E199p0", "0x0.0000013687AAAE059p0", + "0x0.00000162E430E5A19p0", "0x0.0000018F40B724ED7p0", "0x0.000001BB9D3D6BE95p0", "0x0.000001E7F9C3BA951p0", + "0x0.00000214564A10F0Dp0", "0x0.00000240B2D06EFC7p0", "0x0.0000026D0F56D4B80p0", "0x0.000002996BDD42239p0", + "0x0.000002C5C863B73F0p0", "0x0.000002F224EA340A6p0", "0x0.0000031E8170B885Cp0", "0x0.0000034ADDF744B10p0", + "0x0.000003773A7DD88C3p0", "0x0.000003A3970474175p0", "0x0.000003CFF38B17526p0", "0x0.000003FC5011C23D6p0", + "0x0.00000428AC9874D86p0", "0x0.00000455091F2F234p0", "0x0.0000048165A5F11E1p0", "0x0.000004ADC22CBAC8Dp0", + "0x0.000004DA1EB38C238p0", "0x0.000005067B3A652E2p0", "0x0.00000532D7C145E8Bp0", "0x0.0000055F34482E533p0", + "0x0.0000058B90CF1E6D9p0", "0x0.000005B7ED561637Fp0", "0x0.000005E449DD15B24p0", "0x0.00000610A6641CDC8p0", + "0x0.0000063D02EB2BB6Bp0", "0x0.000006695F724240Dp0", "0x0.00000695BBF9607AEp0", "0x0.000006C218808664Dp0", + "0x0.000006EE7507B3FECp0", "0x0.0000071AD18EE948Ap0", "0x0.000007472E1626427p0", "0x0.000007738A9D6AEC2p0", + "0x0.0000079FE724B745Dp0", "0x0.000007CC43AC0B4F7p0", "0x0.000007F8A0336708Fp0", "0x0.00000824FCBACA727p0", + "0x0.000008515942358BEp0", "0x0.0000087DB5C9A8553p0", "0x0.000008AA125122CE8p0", "0x0.000008D66ED8A4F7Bp0", + "0x0.00000902CB602ED0Ep0", "0x0.0000092F27E7C059Fp0", "0x0.0000095B846F59930p0", "0x0.00000987E0F6FA7C0p0", + "0x0.000009B43D7EA314Ep0", "0x0.000009E09A06535DCp0", "0x0.00000A0CF68E0B568p0", "0x0.00000A395315CAFF3p0", + "0x0.00000A65AF9D9257Ep0", "0x0.00000A920C2561607p0", "0x0.00000ABE68AD38190p0", "0x0.00000AEAC53516817p0", + "0x0.00000B1721BCFC99Ep0", "0x0.00000B437E44EA623p0", "0x0.00000B6FDACCDFDA7p0", "0x0.00000B9C3754DD02Bp0", + "0x0.00000BC893DCE1DADp0", "0x0.00000BF4F064EE62Fp0", "0x0.00000C214CED029AFp0", "0x0.00000C4DA9751E82Ep0", + "0x0.00000C7A05FD421ADp0", "0x0.00000CA662856D62Ap0", "0x0.00000CD2BF0DA05A6p0", "0x0.00000CFF1B95DB022p0", + "0x0.00000D2B781E1D59Cp0", "0x0.00000D57D4A667615p0", "0x0.00000D84312EB918Dp0", "0x0.00000DB08DB712805p0", + "0x0.00000DDCEA3F7397Bp0", "0x0.00000E0946C7DC5F0p0", "0x0.00000E35A3504CD65p0", "0x0.00000E61FFD8C4FD8p0", + "0x0.00000E8E5C6144D4Ap0", "0x0.00000EBAB8E9CC5BBp0", "0x0.00000EE715725B92Cp0", "0x0.00000F1371FAF279Bp0", + "0x0.00000F3FCE8391109p0", "0x0.00000F6C2B0C37576p0", "0x0.00000F988794E54E3p0", "0x0.00000FC4E41D9AF4Ep0", + "0x0.00000FF140A6584B8p0", "0x0.0000101D9D2F1D521p0", "0x0.00001049F9B7EA08Ap0", "0x0.000010765640BE6F1p0", + "0x0.000010A2B2C99A857p0", "0x0.000010CF0F527E4BCp0", "0x0.000010FB6BDB69C21p0", "0x0.00001127C8645CE84p0", + "0x0.0000115424ED57BE6p0", "0x0.0000118081765A447p0", "0x0.000011ACDDFF647A7p0", "0x0.000011D93A8876607p0", + "0x0.0000120597118FF65p0", "0x0.00001231F39AB13C2p0", "0x0.0000125E5023DA31Ep0", "0x0.0000128AACAD0AD7Ap0", + "0x0.000012B70936432D4p0", "0x0.000012E365BF8332Dp0", "0x0.0000130FC248CAE85p0", "0x0.0000133C1ED21A4DDp0", + "0x0.000013687B5B71633p0", "0x0.00001394D7E4D0288p0", "0x0.000013C1346E369DDp0", "0x0.000013ED90F7A4C30p0", + "0x0.00001419ED811A982p0", "0x0.000014464A0A981D4p0", "0x0.00001472A6941D524p0", "0x0.0000149F031DAA373p0", + "0x0.000014CB5FA73ECC1p0", "0x0.000014F7BC30DB10Fp0", "0x0.0000152418BA7F05Bp0", "0x0.0000155075442AAA6p0", + "0x0.0000157CD1CDDDFF1p0", "0x0.000015A92E579903Ap0", "0x0.000015D58AE15BB83p0", "0x0.00001601E76B261CAp0", + "0x0.0000162E43F4F8310p0", "0x0.0000165AA07ED1F56p0", "0x0.00001686FD08B369Ap0", "0x0.000016B359929C8DEp0", + "0x0.000016DFB61C8D620p0", "0x0.0000170C12A685E62p0", "0x0.000017386F30861A2p0", "0x0.00001764CBBA8DFE1p0", + "0x0.0000179128449D920p0", "0x0.000017BD84CEB4D5Dp0", "0x0.000017E9E158D3C9Ap0", "0x0.000018163DE2FA6D6p0", + "0x0.000018429A6D28C10p0", "0x0.0000186EF6F75EC4Ap0", "0x0.0000189B53819C782p0", "0x0.000018C7B00BE1DBAp0", + "0x0.000018F40C962EEF0p0", "0x0.00001920692083B26p0", "0x0.0000194CC5AAE025Bp0", "0x0.0000197922354448Ep0", + "0x0.000019A57EBFB01C1p0", "0x0.000019D1DB4A239F3p0", "0x0.000019FE37D49ED23p0", "0x0.00001A2A945F21B53p0", + "0x0.00001A56F0E9AC482p0", "0x0.00001A834D743E8B0p0", "0x0.00001AAFA9FED87DCp0", "0x0.00001ADC06897A208p0", + "0x0.00001B08631423733p0", "0x0.00001B34BF9ED475Dp0", "0x0.00001B611C298D286p0", "0x0.00001B8D78B44D8ADp0", + "0x0.00001BB9D53F159D4p0", "0x0.00001BE631C9E55FAp0", "0x0.00001C128E54BCD1Fp0", "0x0.00001C3EEADF9BF43p0", + "0x0.00001C6B476A82C66p0", "0x0.00001C97A3F571488p0", "0x0.00001CC40080677A9p0", "0x0.00001CF05D0B655C9p0", + "0x0.00001D1CB9966AEE8p0", "0x0.00001D49162178306p0", "0x0.00001D7572AC8D223p0", "0x0.00001DA1CF37A9C40p0", + "0x0.00001DCE2BC2CE15Bp0", "0x0.00001DFA884DFA175p0", "0x0.00001E26E4D92DC8Ep0", "0x0.00001E534164692A6p0", + "0x0.00001E7F9DEFAC3BEp0", "0x0.00001EABFA7AF6FD4p0", "0x0.00001ED85706496E9p0", "0x0.00001F04B391A38FEp0", + "0x0.00001F31101D05611p0", "0x0.00001F5D6CA86EE23p0", "0x0.00001F89C933E0135p0", "0x0.00001FB625BF58F45p0", + "0x0.00001FE2824AD9855p0", "0x0.0000200EDED661C63p0", "0x0.0000203B3B61F1B71p0", "0x0.0000206797ED8957Dp0", + "0x0.00002093F47928A89p0", "0x0.000020C05104CFA93p0", "0x0.000020ECAD907E59Dp0", "0x0.000021190A1C34BA6p0", + "0x0.0000214566A7F2CAEp0", "0x0.00002171C333B88B4p0", "0x0.0000219E1FBF85FBAp0", "0x0.000021CA7C4B5B1BFp0", + "0x0.000021F6D8D737EC3p0", "0x0.0000222335631C6C6p0", "0x0.0000224F91EF089C7p0", "0x0.0000227BEE7AFC7C8p0", + "0x0.000022A84B06F80C8p0", "0x0.000022D4A792FB4C7p0", "0x0.00002301041F063C5p0", "0x0.0000232D60AB18DC3p0", + "0x0.00002359BD37332BFp0", "0x0.0000238619C3552BAp0", "0x0.000023B2764F7EDB4p0", "0x0.000023DED2DBB03ADp0", + "0x0.0000240B2F67E94A5p0", "0x0.000024378BF42A09Dp0", "0x0.00002463E88072793p0", "0x0.00002490450CC2988p0", + "0x0.000024BCA1991A67Dp0", "0x0.000024E8FE2579E70p0", "0x0.000025155AB1E1163p0", "0x0.00002541B73E4FF54p0", + "0x0.0000256E13CAC6845p0", "0x0.0000259A705744C34p0", "0x0.000025C6CCE3CAB23p0", "0x0.000025F3297058511p0", + "0x0.0000261F85FCED9FDp0", "0x0.0000264BE2898A9E9p0", "0x0.000026783F162F4D4p0", "0x0.000026A49BA2DBABEp0", + "0x0.000026D0F82F8FBA7p0", "0x0.000026FD54BC4B78Fp0", "0x0.00002729B1490EE75p0", "0x0.000027560DD5DA05Bp0", + "0x0.000027826A62ACD41p0", "0x0.000027AEC6EF87525p0", "0x0.000027DB237C69808p0", "0x0.000028078009535EAp0", + "0x0.00002833DC9644ECBp0", "0x0.0000286039233E2ABp0", "0x0.0000288C95B03F18Bp0", "0x0.000028B8F23D47B69p0", + "0x0.000028E54ECA58046p0", "0x0.00002911AB5770023p0", "0x0.0000293E07E48FAFEp0", "0x0.0000296A6471B70D9p0", + "0x0.00002996C0FEE61B2p0", "0x0.000029C31D8C1CD8Bp0", "0x0.000029EF7A195B463p0", "0x0.00002A1BD6A6A1639p0", + "0x0.00002A483333EF30Fp0", "0x0.00002A748FC144AE4p0", "0x0.00002AA0EC4EA1DB8p0", "0x0.00002ACD48DC06B8Bp0", + "0x0.00002AF9A5697345Dp0", "0x0.00002B2601F6E782Ep0", "0x0.00002B525E84636FEp0", "0x0.00002B7EBB11E70CDp0", + "0x0.00002BAB179F7259Bp0", "0x0.00002BD7742D05568p0", "0x0.00002C03D0BAA0035p0", "0x0.00002C302D4842600p0" + }; + ap_ufixed<50,-18> exp2_x_msb_4_m_1 = exp2_x_msb_4_m_1_table[x_msb_ind_4]; + ap_ufixed<92,-44> f_x_msb_4_lsb = exp2_x_lsb_m_1 * exp2_x_msb_4_m_1; + ap_ufixed<24,-44> f_x_msb_4_lsb_s = f_x_msb_4_lsb; + ap_ufixed<50,-18> exp2_x_msb_4_lsb_m_1 = f_x_msb_4_lsb_s + exp2_x_msb_4_m_1 + exp2_x_lsb_m_1; + + const static ap_ufixed<58,-10> exp2_x_msb_3_m_1_table[256] = { + "0x0.0p0", "0x0.00002C5C89D5EC6CAp0", "0x0.000058B91B5BC9AE3p0", "0x0.00008515B4919919Ap0", + "0x0.0000B17255775C040p0", "0x0.0000DDCEFE0D13C26p0", "0x0.00010A2BAE52C1A9Bp0", "0x0.000136886648670F0p0", + "0x0.000162E525EE05475p0", "0x0.00018F41ED439DA7Bp0", "0x0.0001BB9EBC4931853p0", "0x0.0001E7FB92FEC234Bp0", + "0x0.000214587164510B6p0", "0x0.000240B55779DF5E3p0", "0x0.00026D12453F6E823p0", "0x0.0002996F3AB4FFCC6p0", + "0x0.0002C5CC37DA9491Dp0", "0x0.0002F2293CB02E278p0", "0x0.00031E864935CDE29p0", "0x0.00034AE35D6B7517Ep0", + "0x0.000377407951251C9p0", "0x0.0003A39D9CE6DF45Bp0", "0x0.0003CFFAC82CA4E84p0", "0x0.0003FC57FB2277595p0", + "0x0.000428B535C857EDDp0", "0x0.00045512781E47FAFp0", "0x0.0004816FC22448D5Ap0", "0x0.0004ADCD13DA5BD2Fp0", + "0x0.0004DA2A6D408247Ep0", "0x0.00050687CE56BD89Ap0", "0x0.000532E5371D0EED1p0", "0x0.00055F42A79377C75p0", + "0x0.00058BA01FB9F96D7p0", "0x0.0005B7FD9F9095347p0", "0x0.0005E45B27174C716p0", "0x0.000610B8B64E20794p0", + "0x0.00063D164D3512A14p0", "0x0.00066973EBCC243E4p0", "0x0.000695D1921356A57p0", "0x0.0006C22F400AAB2BCp0", + "0x0.0006EE8CF5B223266p0", "0x0.00071AEAB309BFEA4p0", "0x0.00074748781182CC7p0", "0x0.000773A644C96D221p0", + "0x0.0007A004193180402p0", "0x0.0007CC61F549BD7BCp0", "0x0.0007F8BFD9122629Ep0", "0x0.0008251DC48ABB9FAp0", + "0x0.0008517BB7B37F322p0", "0x0.00087DD9B28C72365p0", "0x0.0008AA37B51596015p0", "0x0.0008D695BF4EEBE83p0", + "0x0.000902F3D13875400p0", "0x0.00092F51EAD2335DCp0", "0x0.00095BB00C1C2796Ap0", "0x0.0009880E3516533FAp0", + "0x0.0009B46C65C0B7ADCp0", "0x0.0009E0CA9E1B56363p0", "0x0.000A0D28DE26302DFp0", "0x0.000A398725E146EA2p0", + "0x0.000A65E5754C9BBFBp0", "0x0.000A9243CC683003Ep0", "0x0.000ABEA22B34050BAp0", "0x0.000AEB0091B01C2C1p0", + "0x0.000B175EFFDC76BA4p0", "0x0.000B43BD75B9160B4p0", "0x0.000B701BF345FB742p0", "0x0.000B9C7A7883284A1p0", + "0x0.000BC8D905709DE20p0", "0x0.000BF5379A0E5D912p0", "0x0.000C2196365C68AC6p0", "0x0.000C4DF4DA5AC0890p0", + "0x0.000C7A538609667C0p0", "0x0.000CA6B239685BDA6p0", "0x0.000CD310F477A1F96p0", "0x0.000CFF6FB7373A2DFp0", + "0x0.000D2BCE81A725CD4p0", "0x0.000D582D53C7662C6p0", "0x0.000D848C2D97FCA05p0", "0x0.000DB0EB0F18EA7E4p0", + "0x0.000DDD49F84A311B4p0", "0x0.000E09A8E92BD1CC6p0", "0x0.000E3607E1BDCDE6Cp0", "0x0.000E6266E20026BF7p0", + "0x0.000E8EC5E9F2DDAB9p0", "0x0.000EBB24F995F4003p0", "0x0.000EE78410E96B126p0", "0x0.000F13E32FED44375p0", + "0x0.000F404256A180C40p0", "0x0.000F6CA18506220D9p0", "0x0.000F9900BB1B29692p0", "0x0.000FC55FF8E0982BDp0", + "0x0.000FF1BF3E566FAAAp0", "0x0.00101E1E8B7CB13ACp0", "0x0.00104A7DE0535E314p0", "0x0.001076DD3CDA77E34p0", + "0x0.0010A33CA111FFA5Dp0", "0x0.0010CF9C0CF9F6CE1p0", "0x0.0010FBFB80925EB11p0", "0x0.0011285AFBDB38A40p0", + "0x0.001154BA7ED485FC0p0", "0x0.0011811A097E480E0p0", "0x0.0011AD799BD8802F5p0", "0x0.0011D9D935E32FB4Fp0", + "0x0.00120638D79E57F3Fp0", "0x0.001232988109FA419p0", "0x0.00125EF8322617F2Dp0", "0x0.00128B57EAF2B25CDp0", + "0x0.0012B7B7AB6FCAD4Bp0", "0x0.0012E417739D62AFAp0", "0x0.00131077437B7B42Ap0", "0x0.00133CD71B0A15E2Ep0", + "0x0.00136936FA4933E58p0", "0x0.00139596E138D69F9p0", "0x0.0013C1F6CFD8FF663p0", "0x0.0013EE56C629AF8E9p0", + "0x0.00141AB6C42AE86DBp0", "0x0.00144716C9DCAB58Dp0", "0x0.00147376D73EF9A50p0", "0x0.00149FD6EC51D4A76p0", + "0x0.0014CC3709153DB51p0", "0x0.0014F8972D8936234p0", "0x0.001524F759ADBF46Fp0", "0x0.001551578D82DA755p0", + "0x0.00157DB7C90889038p0", "0x0.0015AA180C3ECC46Bp0", "0x0.0015D6785725A593Fp0", "0x0.001602D8A9BD16406p0", + "0x0.00162F3904051FA13p0", "0x0.00165B9965FDC30B7p0", "0x0.001687F9CFA701D45p0", "0x0.0016B45A4100DD50Ep0", + "0x0.0016E0BABA0B56D66p0", "0x0.00170D1B3AC66FB9Ep0", "0x0.0017397BC33229508p0", "0x0.001765DC534E84EF7p0", + "0x0.0017923CEB1B83EBCp0", "0x0.0017BE9D8A99279ABp0", "0x0.0017EAFE31C771515p0", "0x0.0018175EE0A66264Cp0", + "0x0.001843BF9735FC2A3p0", "0x0.0018702055763FF6Cp0", "0x0.00189C811B672F1FAp0", "0x0.0018C8E1E908CAF9Ep0", + "0x0.0018F542BE5B14DABp0", "0x0.001921A39B5E0E174p0", "0x0.00194E048011B804Ap0", "0x0.00197A656C7613F81p0", + "0x0.0019A6C6608B2346Ap0", "0x0.0019D3275C50E7458p0", "0x0.0019FF885FC76149Dp0", "0x0.001A2BE96AEE92A8Cp0", + "0x0.001A584A7DC67CB77p0", "0x0.001A84AB984F20CB1p0", "0x0.001AB10CBA888038Cp0", "0x0.001ADD6DE4729C55Ap0", + "0x0.001B09CF160D7676Fp0", "0x0.001B36304F590FF1Dp0", "0x0.001B629190556A1B5p0", "0x0.001B8EF2D9028648Cp0", + "0x0.001BBB54296065CF2p0", "0x0.001BE7B5816F0A03Cp0", "0x0.001C1416E12E743BBp0", "0x0.001C4078489EA5CC2p0", + "0x0.001C6CD9B7BFA00A4p0", "0x0.001C993B2E91644B3p0", "0x0.001CC59CAD13F3E42p0", "0x0.001CF1FE3347502A4p0", + "0x0.001D1E5FC12B7A72Bp0", "0x0.001D4AC156C07412Ap0", "0x0.001D7722F4063E5F4p0", "0x0.001DA38498FCDAADBp0", + "0x0.001DCFE645A44A533p0", "0x0.001DFC47F9FC8EA4Dp0", "0x0.001E28A9B605A8F7Dp0", "0x0.001E550B79BF9AA16p0", + "0x0.001E816D452A64F6Ap0", "0x0.001EADCF1846094CCp0", "0x0.001EDA30F31288F8Ep0", "0x0.001F0692D58FE5505p0", + "0x0.001F32F4BFBE1FA82p0", "0x0.001F5F56B19D39559p0", "0x0.001F8BB8AB2D33ADCp0", "0x0.001FB81AAC6E1005Ep0", + "0x0.001FE47CB55FCFB33p0", "0x0.002010DEC602740ACp0", "0x0.00203D40DE55FE61Ep0", "0x0.002069A2FE5A700DAp0", + "0x0.00209605260FCA635p0", "0x0.0020C26755760EB80p0", "0x0.0020EEC98C8D3E60Fp0", "0x0.00211B2BCB555AB35p0", + "0x0.0021478E11CE65045p0", "0x0.002173F05FF85EA93p0", "0x0.0021A052B5D348F70p0", "0x0.0021CCB5135F25430p0", + "0x0.0021F917789BF4E26p0", "0x0.00222579E589B92A6p0", "0x0.002251DC5A2873702p0", "0x0.00227E3ED6782508Ep0", + "0x0.0022AAA15A78CF49Cp0", "0x0.0022D703E62A73880p0", "0x0.00230366798D1318Dp0", "0x0.00232FC914A0AF516p0", + "0x0.00235C2BB7654986Fp0", "0x0.0023888E61DAE30EAp0", "0x0.0023B4F114017D3DBp0", "0x0.0023E153CDD919695p0", + "0x0.00240DB68F61B8E6Cp0", "0x0.00243A19589B5D0B2p0", "0x0.0024667C2986072BAp0", "0x0.002492DF0221B89D9p0", + "0x0.0024BF41E26E72B62p0", "0x0.0024EBA4CA6C36CA7p0", "0x0.00251807BA1B062FDp0", "0x0.0025446AB17AE23B5p0", + "0x0.002570CDB08BCC425p0", "0x0.00259D30B74DC599Fp0", "0x0.0025C993C5C0CF977p0", "0x0.0025F5F6DBE4EB900p0", + "0x0.00262259F9BA1AD8Dp0", "0x0.00264EBD1F405EC72p0", "0x0.00267B204C77B8B03p0", "0x0.0026A783816029E92p0", + "0x0.0026D3E6BDF9B3C74p0", "0x0.0027004A0244579FCp0", "0x0.00272CAD4E4016C7Dp0", "0x0.00275910A1ECF294Bp0", + "0x0.00278573FD4AEC5BAp0", "0x0.0027B1D7605A0571Cp0", "0x0.0027DE3ACB1A3F2C6p0", "0x0.00280A9E3D8B9AE0Cp0", + "0x0.00283701B7AE19E40p0", "0x0.002863653981BD8B6p0", "0x0.00288FC8C306872C3p0", "0x0.0028BC2C543C781B9p0", + "0x0.0028E88FED2391AECp0", "0x0.002914F38DBBD53B1p0", "0x0.0029415736054415Ap0", "0x0.00296DBAE5FFDF93Cp0", + "0x0.00299A1E9DABA90A9p0", "0x0.0029C6825D08A1CF7p0", "0x0.0029F2E62416CB378p0", "0x0.002A1F49F2D626981p0", + "0x0.002A4BADC946B5464p0", "0x0.002A7811A76878977p0", "0x0.002AA4758D3B71E0Cp0", "0x0.002AD0D97ABFA2778p0", + "0x0.002AFD3D6FF50BB0Ep0", "0x0.002B29A16CDBAEE23p0", "0x0.002B560571738D609p0", "0x0.002B82697DBCA8816p0", + "0x0.002BAECD91B70199Cp0", "0x0.002BDB31AD6299FF0p0", "0x0.002C0795D0BF73066p0", "0x0.002C33F9FBCD8E052p0" + }; + ap_ufixed<58,-10> exp2_x_msb_3_m_1 = exp2_x_msb_3_m_1_table[x_msb_ind_3]; + ap_ufixed<108,-28> f_x_msb_3_lsb = exp2_x_msb_3_m_1 * exp2_x_msb_4_lsb_m_1; + ap_ufixed<40, -28> f_x_msb_3_lsb_s = f_x_msb_3_lsb; + ap_ufixed<58, -10> exp2_x_msb_3_4_lsb_m_1 = f_x_msb_3_lsb_s + exp2_x_msb_3_m_1 + exp2_x_msb_4_lsb_m_1; + + const static ap_ufixed<68,0> exp2_x_msb_2_m_1_table[256] = { + "0x0.0p0", "0x0.002C605E2E8CEC507p0", "0x0.0058C86DA1C09EA20p0", "0x0.0085382FAEF831DA9p0", + "0x0.00B1AFA5ABCBED613p0", "0x0.00DE2ED0EE0F4F5FDp0", "0x0.010AB5B2CBD117074p0", "0x0.0137444C9B5B4ED49p0", + "0x0.0163DA9FB33356D85p0", "0x0.019078AD6A19EEFF7p0", "0x0.01BD1E77170B415E7p0", "0x0.01E9CBFE113EEC7DCp0", + "0x0.02168143B0280DA82p0", "0x0.02433E494B754B3ADp0", "0x0.027003103B10DEF7Dp0", "0x0.029CCF99D720A0593p0", + "0x0.02C9A3E778060EE6Fp0", "0x0.02F67FFA765E5C8E5p0", "0x0.032363D42B0277FAAp0", "0x0.03504F75EF0716F0Cp0", + "0x0.037D42E11BBCC0AB4p0", "0x0.03AA3E170AAFD8396p0", "0x0.03D7411915A8A6DF0p0", "0x0.04044BE896AB66771p0", + "0x0.04315E86E7F84BD74p0", "0x0.045E78F5640B9135Cp0", "0x0.048B9B35659D8090Ep0", "0x0.04B8C54847A27E186p0", + "0x0.04E5F72F654B12987p0", "0x0.051330EC1A03F5E6Ap0", "0x0.0540727FC1761950Dp0", "0x0.056DBBEBB786B20D9p0", + "0x0.059B0D31585743AE8p0", "0x0.05C866520045AA948p0", "0x0.05F5C74F0BEC2665Bp0", "0x0.06233029D82164855p0", + "0x0.0650A0E3C1F88A8D2p0", "0x0.067E197E26C140C90p0", "0x0.06AB99FA6407BCB43p0", "0x0.06D92259D794CB783p0", + "0x0.0706B29DDF6DDC6DCp0", "0x0.07344AC7D9D50B9FCp0", "0x0.0761EAD925492C4F5p0", "0x0.078F92D32085D37A9p0", + "0x0.07BD42B72A8362646p0", "0x0.07EAFA86A277111EFp0", "0x0.0818BA42E7D2F916Ep0", "0x0.084681ED5A461FA1Ap0", + "0x0.0874518759BC808C3p0", "0x0.08A22912465F18AD3p0", "0x0.08D0088F8093F0774p0", "0x0.08FDF00068FE268ECp0", + "0x0.092BDF66607DFA5FEp0", "0x0.0959D6C2C830D6B7Fp0", "0x0.0987D61701715C5F5p0", "0x0.09B5DD646DD76CB61p0", + "0x0.09E3ECAC6F3834522p0", "0x0.0A1203F067A6359F1p0", "0x0.0A402331B97153804p0", "0x0.0A6E4A71C726DBF42p0", + "0x0.0A9C79B1F39192BA3p0", "0x0.0ACAB0F3A1B9BBF9Fp0", "0x0.0AF8F03834E526EC8p0", "0x0.0B273781109738876p0", + "0x0.0B5586CF9890F6299p0", "0x0.0B83DE2530D1104A2p0", "0x0.0BB23D833D93ED290p0", "0x0.0BE0A4EB2353B3818p0", + "0x0.0C0F145E46C8553E6p0", "0x0.0C3D8BDE0CE79A306p0", "0x0.0C6C0B6BDAE52AC5Dp0", "0x0.0C9A930916329AC51p0", + "0x0.0CC922B7247F7407Bp0", "0x0.0CF7BA776BB94138Ap0", "0x0.0D265A4B520B98932p0", "0x0.0D5502343DE026A4Bp0", + "0x0.0D83B23395DEB90FBp0", "0x0.0DB26A4AC0ED4950Dp0", "0x0.0DE12A7B263007860p0", "0x0.0E0FF2C62D0965371p0", + "0x0.0E3EC32D3D1A20207p0", "0x0.0E6D9BB1BE414CFFDp0", "0x0.0E9C7C55189C62628p0", "0x0.0ECB6518B4874375Bp0", + "0x0.0EFA55FDFA9C4AD89p0", "0x0.0F294F0653B45570Ap0", "0x0.0F58503328E6CD3F5p0", "0x0.0F875985E389B439Ep0", + "0x0.0FB66AFFED31AF232p0", "0x0.0FE584A2AFB210670p0", "0x0.1014A66F951CE2F7Ep0", "0x0.1043D06807C2F52E1p0", + "0x0.1073028D7233E3A8Ep0", "0x0.10A23CE13F3E2431Dp0", "0x0.10D17F64D9EF10A19p0", "0x0.1100CA19AD92F1C6Bp0", + "0x0.11301D0125B50A4ECp0", "0x0.115F781CAE1FA1B08p0", "0x0.118EDB6DB2DC0F18Dp0", "0x0.11BE46F5A032C458Fp0", + "0x0.11EDBAB5E2AB58D6Fp0", "0x0.121D36AFE70C947FBp0", "0x0.124CBAE51A5C7ABB5p0", "0x0.127C4756E9E055631p0", + "0x0.12ABDC06C31CBFB93p0", "0x0.12DB78F613D5B162Dp0", "0x0.130B1E264A0E8963Cp0", "0x0.133ACB98D40A191C1p0", + "0x0.136A814F204AAF478p0", "0x0.139A3F4A9D9222FF2p0", "0x0.13CA058CBAE1DEBC9p0", "0x0.13F9D416E77AEB5F6p0", + "0x0.1429AAEA92DDFB341p0", "0x0.14598A092CCB74FD3p0", "0x0.1489717425437EFE9p0", "0x0.14B9612CEC860A09Ep0", + "0x0.14E95934F312DC8DCp0", "0x0.1519598DA9A99DA67p0", "0x0.154962388149E0304p0", "0x0.15797336EB332DDCAp0", + "0x0.15A98C8A58E512481p0", "0x0.15D9AE343C1F26130p0", "0x0.1609D83606E119FBFp0", "0x0.163A0A912B6AC1FBBp0", + "0x0.166A45471C3C2063Dp0", "0x0.169A88594C1570FE6p0", "0x0.16CAD3C92DF734306p0", "0x0.16FB279835223A1D7p0", + "0x0.172B83C7D517ADCDFp0", "0x0.175BE85981992056Cp0", "0x0.178C554EAEA894030p0", "0x0.17BCCAA8D088877FCp0", + "0x0.17ED48695BBC0109Ep0", "0x0.181DCE91C506999D8p0", "0x0.184E5D23816C88275p0", "0x0.187EF4200632ACB89p0", + "0x0.18AF9388C8DE9BBBFp0", "0x0.18E03B5F3F36A92D4p0", "0x0.1910EBA4DF41F3D2Ap0", "0x0.1941A45B1F487077Ap0", + "0x0.1972658375D2F52ABp0", "0x0.19A32F1F59AB447C4p0", "0x0.19D4013041DC18BF8p0", "0x0.1A04DBB7A5B12F4DCp0", + "0x0.1A35BEB6FCB753CB7p0", "0x0.1A66AA2FBEBC6B6ECp0", "0x0.1A979E2363CF8048Fp0", "0x0.1AC89A936440CC90Dp0", + "0x0.1AF99F8138A1C5EFEp0", "0x0.1B2AACEE59C528D0Dp0", "0x0.1B5BC2DC40BF03B07p0", "0x0.1B8CE14C66E4C2704p0", + "0x0.1BBE084045CD39AB2p0", "0x0.1BEF37B95750B20C0p0", "0x0.1C206FB91588F3A67p0", "0x0.1C51B040FAD151512p0", + "0x0.1C82F95281C6B4026p0", "0x0.1CB44AEF2547A62ECp0", "0x0.1CE5A51860745F298p0", "0x0.1D1707CFAEAECE86Cp0", + "0x0.1D4873168B9AA7806p0", "0x0.1D79E6EE731D6C5BDp0", "0x0.1DAB6358E15E79D2Fp0", "0x0.1DDCE85752C7127E2p0", + "0x0.1E0E75EB44026A409p0", "0x0.1E400C1631FDB1B6Ap0", "0x0.1E71AAD999E821A64p0", "0x0.1EA35236F9330670Ep0", + "0x0.1ED5022FCD91CB882p0", "0x0.1F06BAC594FA06E38p0", "0x0.1F387BF9CDA384793p0", "0x0.1F6A45CDF60851B7Cp0", + "0x0.1F9C18438CE4C902Bp0", "0x0.1FCDF35C11379D307p0", "0x0.1FFFD7190241E50A9p0", "0x0.2031C37BDF8726CFFp0", + "0x0.2063B88628CD63B8Fp0", "0x0.2095B6395E1D237DAp0", "0x0.20C7BC96FFC17FDDEp0", "0x0.20F9CBA08E48302B7p0", + "0x0.212BE3578A8194D65p0", "0x0.215E03BD7580C2FABp0", "0x0.21902CD3D09B8FF15p0", "0x0.21C25E9C1D6A9CE17p0", + "0x0.21F49917DDC962553p0", "0x0.2226DC4893D63BCFAp0", "0x0.2259282FC1F273650p0", "0x0.228B7CCEEAC24D54Fp0", + "0x0.22BDDA27912D13A6Ap0", "0x0.22F0403B385D21C70p0", "0x0.2322AF0B63BFF0291p0", "0x0.2355269997061FE83p0", + "0x0.2387A6E75623866C2p0", "0x0.23BA2FF6254F390FBp0", "0x0.23ECC1C7890398C8Ap0", "0x0.241F5C5D05FE5DD26p0", + "0x0.2451FFB82140A35A0p0", "0x0.2484ABDA600EF32CEp0", "0x0.24B760C547F15168Fp0", "0x0.24EA1E7A5EB3482F4p0", + "0x0.251CE4FB2A63F3583p0", "0x0.254FB44931560C2A2p0", "0x0.25828C65FA1FF511Fp0", "0x0.25B56D530B9BC55D9p0", + "0x0.25E85711ECE754F87p0", "0x0.261B49A42564482A2p0", "0x0.264E450B3CB81B573p0", "0x0.26814948BACC2EC3Ap0", + "0x0.26B4565E27CDD257Ap0", "0x0.26E76C4D0C2E51669p0", "0x0.271A8B16F0A2FE778p0", "0x0.274DB2BD5E253F101p0", + "0x0.2780E341DDF29781Ap0", "0x0.27B41CA5F98CB6B7Ep0", "0x0.27E75EEB3AB9820A2p0", "0x0.281AAA132B83210E1p0", + "0x0.284DFE1F5638096CFp0", "0x0.28815B11456B0ABADp0", "0x0.28B4C0EA83F35A4FAp0", "0x0.28E82FAC9CEC9F225p0", + "0x0.291BA7591BB6FDA67p0", "0x0.294F27F18BF723AB3p0", "0x0.2982B1777996543D0p0", "0x0.29B643EC70C273890p0", + "0x0.29E9DF51FDEE12C26p0", "0x0.2A1D83A9ADD07C0A3p0", "0x0.2A5130F50D65BE58Dp0", "0x0.2A84E735A9EEB96A0p0", + "0x0.2AB8A66D10F129AA3p0", "0x0.2AEC6E9CD037B426Bp0", "0x0.2B203FC675D1F27F9p0", "0x0.2B5419EB90147EDB7p0", + "0x0.2B87FD0DAD98FFDDFp0", "0x0.2BBBE92E5D3E349F5p0", "0x0.2BEFDE4F2E2800A73p0", "0x0.2C23DC71AFBF77E86p0", + "0x0.2C57E39771B2EABFBp0", "0x0.2C8BF3C203F5F1F3Fp0", "0x0.2CC00CF2F6C17AB8Dp0", "0x0.2CF42F2BDA93D2B35p0", + "0x0.2D285A6E4030B4009p0", "0x0.2D5C8EBBB8A1513E7p0", "0x0.2D90CC15D53461967p0", "0x0.2DC5127E277E2CCAFp0", + "0x0.2DF961F641589745Bp0", "0x0.2E2DBA7FB4E32E298p0", "0x0.2E621C1C148333651p0", "0x0.2E9686CCF2E3A9C88p0", + "0x0.2ECAFA93E2F5611CAp0", "0x0.2EFF777277EF023C8p0", "0x0.2F33FD6A454D1B313p0", "0x0.2F688C7CDED22B4F1p0", + "0x0.2F9D24ABD886AF562p0", "0x0.2FD1C5F8C6B92D937p0", "0x0.300670653DFE42058p0", "0x0.303B23F2D330AA821p0" + }; + ap_ufixed<68,0> exp2_x_msb_2_m_1 = exp2_x_msb_2_m_1_table[x_msb_ind_2]; + ap_ufixed<126,-10> f_x_msb_2_lsb = exp2_x_msb_2_m_1 * exp2_x_msb_3_4_lsb_m_1; + ap_ufixed<58, -10> f_x_msb_2_lsb_s = f_x_msb_2_lsb; + ap_ufixed<68,0> exp2_x_msb_2_3_4_lsb_m_1 = f_x_msb_2_lsb_s + exp2_x_msb_2_m_1 + exp2_x_msb_3_4_lsb_m_1; + + const static ap_ufixed<68,32> exp2_x_msb_1_table[256] = { + "0x1.000000000p0", "0x1.306FE0A32p0", "0x1.6A09E667Fp0", "0x1.AE89F995Bp0", + "0x2.000000000p0", "0x2.60DFC1463p0", "0x2.D413CCCFEp0", "0x3.5D13F32B6p0", + "0x4.000000000p0", "0x4.C1BF828C7p0", "0x5.A827999FDp0", "0x6.BA27E656Bp0", + "0x8.000000000p0", "0x9.837F0518Ep0", "0xB.504F333FAp0", "0xD.744FCCAD7p0", + "0x10.000000000p0", "0x13.06FE0A31Bp0", "0x16.A09E667F4p0", "0x1A.E89F995ADp0", + "0x20.000000000p0", "0x26.0DFC14637p0", "0x2D.413CCCFE7p0", "0x35.D13F32B5Ap0", + "0x40.000000000p0", "0x4C.1BF828C6Ep0", "0x5A.827999FCFp0", "0x6B.A27E656B5p0", + "0x80.000000000p0", "0x98.37F0518DCp0", "0xB5.04F333F9Ep0", "0xD7.44FCCAD6Ap0", + "0x100.000000000p0", "0x130.6FE0A31B7p0", "0x16A.09E667F3Cp0", "0x1AE.89F995AD4p0", + "0x200.000000000p0", "0x260.DFC14636Ep0", "0x2D4.13CCCFE78p0", "0x35D.13F32B5A7p0", + "0x400.000000000p0", "0x4C1.BF828C6DCp0", "0x5A8.27999FCEFp0", "0x6BA.27E656B4Fp0", + "0x800.000000000p0", "0x983.7F0518DB9p0", "0xB50.4F333F9DEp0", "0xD74.4FCCAD69Dp0", + "0x1000.000000000p0", "0x1306.FE0A31B71p0", "0x16A0.9E667F3BDp0", "0x1AE8.9F995AD3Bp0", + "0x2000.000000000p0", "0x260D.FC14636E3p0", "0x2D41.3CCCFE77Ap0", "0x35D1.3F32B5A76p0", + "0x4000.000000000p0", "0x4C1B.F828C6DC5p0", "0x5A82.7999FCEF3p0", "0x6BA2.7E656B4EBp0", + "0x8000.000000000p0", "0x9837.F0518DB8Bp0", "0xB504.F333F9DE6p0", "0xD744.FCCAD69D7p0", + "0x10000.000000000p0", "0x1306F.E0A31B715p0", "0x16A09.E667F3BCDp0", "0x1AE89.F995AD3ADp0", + "0x20000.000000000p0", "0x260DF.C14636E2Ap0", "0x2D413.CCCFE7799p0", "0x35D13.F32B5A75Bp0", + "0x40000.000000000p0", "0x4C1BF.828C6DC55p0", "0x5A827.999FCEF32p0", "0x6BA27.E656B4EB5p0", + "0x80000.000000000p0", "0x9837F.0518DB8A9p0", "0xB504F.333F9DE65p0", "0xD744F.CCAD69D6Bp0", + "0x100000.000000000p0", "0x1306FE.0A31B7153p0", "0x16A09E.667F3BCC9p0", "0x1AE89F.995AD3AD6p0", + "0x200000.000000000p0", "0x260DFC.14636E2A6p0", "0x2D413C.CCFE77992p0", "0x35D13F.32B5A75ACp0", + "0x400000.000000000p0", "0x4C1BF8.28C6DC54Bp0", "0x5A8279.99FCEF324p0", "0x6BA27E.656B4EB58p0", + "0x800000.000000000p0", "0x9837F0.518DB8A97p0", "0xB504F3.33F9DE648p0", "0xD744FC.CAD69D6AFp0", + "0x1000000.000000000p0", "0x1306FE0.A31B7152Ep0", "0x16A09E6.67F3BCC91p0", "0x1AE89F9.95AD3AD5Fp0", + "0x2000000.000000000p0", "0x260DFC1.4636E2A5Cp0", "0x2D413CC.CFE779921p0", "0x35D13F3.2B5A75ABDp0", + "0x4000000.000000000p0", "0x4C1BF82.8C6DC54B8p0", "0x5A82799.9FCEF3242p0", "0x6BA27E6.56B4EB57Ap0", + "0x8000000.000000000p0", "0x9837F05.18DB8A96Fp0", "0xB504F33.3F9DE6484p0", "0xD744FCC.AD69D6AF4p0", + "0x10000000.000000000p0", "0x1306FE0A.31B7152DFp0", "0x16A09E66.7F3BCC909p0", "0x1AE89F99.5AD3AD5E8p0", + "0x20000000.000000000p0", "0x260DFC14.636E2A5BDp0", "0x2D413CCC.FE7799211p0", "0x35D13F32.B5A75ABD1p0", + "0x40000000.000000000p0", "0x4C1BF828.C6DC54B7Ap0", "0x5A827999.FCEF32423p0", "0x6BA27E65.6B4EB57A2p0", + "0x80000000.000000000p0", "0x9837F051.8DB8A96F4p0", "0xB504F333.F9DE64846p0", "0xD744FCCA.D69D6AF44p0", + "0x0.000000010p0", "0x0.000000013p0", "0x0.000000017p0", "0x0.00000001Bp0", + "0x0.000000020p0", "0x0.000000026p0", "0x0.00000002Dp0", "0x0.000000036p0", + "0x0.000000040p0", "0x0.00000004Cp0", "0x0.00000005Bp0", "0x0.00000006Cp0", + "0x0.000000080p0", "0x0.000000098p0", "0x0.0000000B5p0", "0x0.0000000D7p0", + "0x0.000000100p0", "0x0.000000130p0", "0x0.00000016Ap0", "0x0.0000001AFp0", + "0x0.000000200p0", "0x0.000000261p0", "0x0.0000002D4p0", "0x0.00000035Dp0", + "0x0.000000400p0", "0x0.0000004C2p0", "0x0.0000005A8p0", "0x0.0000006BAp0", + "0x0.000000800p0", "0x0.000000983p0", "0x0.000000B50p0", "0x0.000000D74p0", + "0x0.000001000p0", "0x0.000001307p0", "0x0.0000016A1p0", "0x0.000001AE9p0", + "0x0.000002000p0", "0x0.00000260Ep0", "0x0.000002D41p0", "0x0.0000035D1p0", + "0x0.000004000p0", "0x0.000004C1Cp0", "0x0.000005A82p0", "0x0.000006BA2p0", + "0x0.000008000p0", "0x0.000009838p0", "0x0.00000B505p0", "0x0.00000D745p0", + "0x0.000010000p0", "0x0.000013070p0", "0x0.000016A0Ap0", "0x0.00001AE8Ap0", + "0x0.000020000p0", "0x0.0000260E0p0", "0x0.00002D414p0", "0x0.000035D14p0", + "0x0.000040000p0", "0x0.00004C1C0p0", "0x0.00005A828p0", "0x0.00006BA28p0", + "0x0.000080000p0", "0x0.00009837Fp0", "0x0.0000B504Fp0", "0x0.0000D7450p0", + "0x0.000100000p0", "0x0.0001306FEp0", "0x0.00016A09Ep0", "0x0.0001AE8A0p0", + "0x0.000200000p0", "0x0.000260DFCp0", "0x0.0002D413Dp0", "0x0.00035D13Fp0", + "0x0.000400000p0", "0x0.0004C1BF8p0", "0x0.0005A827Ap0", "0x0.0006BA27Ep0", + "0x0.000800000p0", "0x0.0009837F0p0", "0x0.000B504F3p0", "0x0.000D744FDp0", + "0x0.001000000p0", "0x0.001306FE1p0", "0x0.0016A09E6p0", "0x0.001AE89FAp0", + "0x0.002000000p0", "0x0.00260DFC1p0", "0x0.002D413CDp0", "0x0.0035D13F3p0", + "0x0.004000000p0", "0x0.004C1BF83p0", "0x0.005A8279Ap0", "0x0.006BA27E6p0", + "0x0.008000000p0", "0x0.009837F05p0", "0x0.00B504F33p0", "0x0.00D744FCDp0", + "0x0.010000000p0", "0x0.01306FE0Ap0", "0x0.016A09E66p0", "0x0.01AE89F99p0", + "0x0.020000000p0", "0x0.0260DFC14p0", "0x0.02D413CCDp0", "0x0.035D13F33p0", + "0x0.040000000p0", "0x0.04C1BF829p0", "0x0.05A82799Ap0", "0x0.06BA27E65p0", + "0x0.080000000p0", "0x0.09837F052p0", "0x0.0B504F334p0", "0x0.0D744FCCBp0", + "0x0.100000000p0", "0x0.1306FE0A3p0", "0x0.16A09E668p0", "0x0.1AE89F996p0", + "0x0.200000000p0", "0x0.260DFC146p0", "0x0.2D413CCD0p0", "0x0.35D13F32Bp0", + "0x0.400000000p0", "0x0.4C1BF828Cp0", "0x0.5A82799A0p0", "0x0.6BA27E657p0", + "0x0.800000000p0", "0x0.9837F0519p0", "0x0.B504F3340p0", "0x0.D744FCCADp0" + }; + ap_ufixed<68,32> exp2_x_msb_1 = exp2_x_msb_1_table[x_msb_ind_1]; + ap_ufixed<136,32> y_lo = exp2_x_msb_1 * exp2_x_msb_2_3_4_lsb_m_1; + ap_ufixed<68,32> y_lo_s = y_lo; + ap_ufixed<68,32> y_l = y_lo_s + exp2_x_msb_1; + y = y_l; + } + + if(I<33) { + bool overf_2 = 0; + for(int j=63; j>=I+31; j--) { + #pragma HLS unroll + if(y[j]) { + overf_2 = 1; + } + } + if(overf_2) { + for(int j=63; j>=I+31; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j=I+30; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } + return r; +} + +template +ap_ufixed exp2(ap_ufixed x) { + ap_fixed xf = x; + return exp2(xf); +} + +template +ap_int exp2(ap_int x) { + ap_fixed xf = x; + return exp2(xf); +} + +template +ap_uint exp2(ap_uint x) { + ap_fixed xf = x; + return exp2(xf); +} + + +template +ap_fixed exp10(ap_fixed x) { + + int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + int I_s_; + int M_ = (I_-1>F_) ? (I_-1) : F_; + if (M_==1) I_s_ = 0; + else if (M_<4) I_s_ = 1; + else if (M_<7) I_s_ = 2; + else if (M_<14) I_s_ = 3; + else if (M_<27) I_s_ = 4; + else I_s_ = 5; + + ap_fixed r; + if(I_s_==0) { //I_s_ = 0, M_ = 1, I_ <= 2, F_ <= 1, W <= 3 + ap_fixed<3,2> x_l = x; + ap_ufixed<2,1> y = 0; + if(x_l[2]) { + if(x_l[1]&x_l[0]) { + y = ap_ufixed<2,1>("0x0.8p0"); + } + } else { + if(x_l[1]|x_l[0]) { + y = ap_ufixed<2,1>("0x1.8p0"); + } else { + y = ap_ufixed<2,1>("0x1.0p0"); + } + } + if(I_<2) { + bool overf = 0; + if(y[1]) { + y[1] = 0; + y[0] = 1; + } + } + r = y; + } else if (I_s_==1) {// I_s_ = 1, M_ = 2..3, I_ <= 4, F_ <= 3, W <= 7 + ap_fixed<7,4> x_l = x; + ap_ufixed<6,3> y = 0; + if((x_l[6]!=x_l[5])||(x_l[5]!=x_l[4])||(x_l[4]!=x_l[3])) { + if(!x_l[6]) { + y = ap_ufixed<6,3>("0x7.Ep0"); + } + } else { + ap_uint<4> x_ind; + x_ind[3] = x_l[6]; + x_ind(2,0) = x_l(2,0); + const static ap_ufixed<6,3> exp_x_ind_table[16] = { + "0x1.000p0", "0x1.600p0", "0x1.C00p0", "0x2.600p0", "0x3.200p0", "0x4.400p0", "0x5.A00p0", "0x7.800p0", + "0x0.200p0", "0x0.200p0", "0x0.200p0", "0x0.400p0", "0x0.600p0", "0x0.600p0", "0x0.800p0", "0x0.C00p0" + }; + y = exp_x_ind_table[x_ind]; + } + if(I_<4){ + bool overf = 0; + for(int j = 5; j>=I_+2; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if(overf) { + for(int j = 5; j>=I_+2; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j = I_+1; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==2) {// I_s_ = 2, M_ = 4..6, I_ <= 7, F_ <= 6, W <= 13 + ap_fixed<13,7> x_l = x; + ap_ufixed<12,6> y = 0; + ap_fixed<2,2> x_l_int; + x_l_int(1,0) = x_l(7,6); + ap_ufixed<6,0> x_l_fract; + x_l_fract(5,0) = x_l(5,0); + bool overf = 0; + for(int j = 11; j >=7; j--) { + #pragma HLS unroll + if(x_l[12]!=x_l[j]) { + overf = 1; + } + } + if(overf||((x_l_int==1)&&(x_l_fract>ap_ufixed<5,0>("0x.D0p0")))) { + if(!x_l[12]) { + y = ap_ufixed<12,6>("0x3F.FCp0"); + } + } else { + ap_uint<4> x_msb_ind; + x_msb_ind(3,0) = x_l(7,4); + ap_uint<4> x_lsb_ind; + x_lsb_ind(3,0) = x_l(3,0); + const static ap_ufixed<14,6> exp_x_msb_table[16] = { + "0x1.00p0", "0x1.C7p0", "0x3.2Ap0", "0x5.A0p0", "0xA.00p0", "0x11.C8p0", "0x1F.9Fp0", "0x38.3Cp0", + "0x0.03p0", "0x0.05p0", "0x0.08p0", "0x0.0Ep0", "0x0.1Ap0", "0x0.2Ep0", "0x0.51p0", "0x0.90p0" + }; + const static ap_ufixed<14,0> exp_x_lsb_m_1_table[16] = { + "0x0.0p0", "0x0.0960p0", "0x0.1318p0", "0x0.1D2Cp0", "0x0.27A0p0", "0x0.3274p0", "0x0.3DB0p0", "0x0.4950p0", + "0x0.5560p0", "0x0.61E4p0", "0x0.6ED8p0", "0x0.7C4Cp0", "0x0.8A38p0", "0x0.98A8p0", "0x0.A7A4p0", "0x0.B728p0" + }; + ap_ufixed<14,6> exp_x_msb = exp_x_msb_table[x_msb_ind]; + ap_ufixed<14,0> exp_x_lsb_m_1 = exp_x_lsb_m_1_table[x_lsb_ind]; + ap_ufixed<28,6> y_lo = exp_x_msb * exp_x_lsb_m_1; + ap_ufixed<14,6> y_lo_s = y_lo; + ap_ufixed<14,6> y_l = y_lo_s + exp_x_msb; + y = y_l; + } + if(I_<7) { + bool overf = 0; + for(int j = 11; j >= I_+5; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if(overf) { + for(int j = 11; j>= I_+5; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j = I_+4; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==3) {// I_s_ = 3, M_ = 7..13, I_ <= 14, F_ <= 13, W <= 27 + ap_fixed<27,14> x_l = x; + ap_ufixed<26,13> y = 0; + ap_fixed<3,3> x_l_int; + x_l_int(2,0) = x_l(15,13); + ap_ufixed<13,0> x_l_fract; + x_l_fract(12,0) = x_l(12,0); + bool overf = 0; + for(int j = 25; j>=15; j--) { + #pragma HLS unroll + if(x_l[26]!=x_l[j]) { + overf = 1; + } + } + if(overf||((x_l_int==3)&&(x_l_fract>ap_ufixed<12,0>("0x3.E9D0p0")))) { + if(!x_l[26]) { + y = ap_ufixed<26,13>("0x1FFF.FFF8p0"); + } + } else { + ap_uint<6> x_msb_ind_1; + x_msb_ind_1[5] = x_l[26]; + x_msb_ind_1(4,0) = x_l(14,10); + ap_uint<5> x_msb_ind_2; + x_msb_ind_2(4,0) = x_l(9,5); + ap_uint<5> x_lsb_ind; + x_lsb_ind(4,0) = x_l(4,0); + const static ap_ufixed<24,-6> exp_lsb_ind_m_1_table[32] = { + "0x0p0", "0x0.00126C5Cp0", "0x0.0024DA0Cp0", "0x0.0037490Cp0", "0x0.0049B964p0", "0x0.005C2B0Cp0", "0x0.006E9E08p0", "0x0.0081125Cp0", + "0x0.00938800p0", "0x0.00A5FEF8p0", "0x0.00B87748p0", "0x0.00CAF0E8p0", "0x0.00DD6BE0p0", "0x0.00EFE82Cp0", "0x0.010265C8p0", "0x0.0114E4BCp0", + "0x0.01276508p0", "0x0.0139E6A4p0", "0x0.014C6998p0", "0x0.015EEDDCp0", "0x0.0171737Cp0", "0x0.0183FA6Cp0", "0x0.019682B4p0", "0x0.01A90C50p0", + "0x0.01BB9744p0", "0x0.01CE238Cp0", "0x0.01E0B128p0", "0x0.01F3401Cp0", "0x0.0205D064p0", "0x0.02186204p0", "0x0.022AF4F8p0", "0x0.023D8944p0" + }; + ap_ufixed<24,-6> exp_lsb_ind_m_1 = exp_lsb_ind_m_1_table[x_lsb_ind]; + const static ap_ufixed<29,-1> exp_msb_ind_2_m_1_table[32] = { + "0x0p0", "0x0.02501EE8p0", "0x0.04A5975Cp0", "0x0.070075C0p0", "0x0.0960C68Cp0", "0x0.0BC69660p0", "0x0.0E31F1F0p0", "0x0.10A2E60Cp0", + "0x0.13197FA8p0", "0x0.1595CBD4p0", "0x0.1817D7BCp0", "0x0.1A9FB0ACp0", "0x0.1D2D6410p0", "0x0.1FC0FF74p0", "0x0.225A9080p0", "0x0.24FA24F8p0", + "0x0.279FCACCp0", "0x0.2A4B8FFCp0", "0x0.2CFD82BCp0", "0x0.2FB5B150p0", "0x0.32742A20p0", "0x0.3538FBC0p0", "0x0.380434D8p0", "0x0.3AD5E43Cp0", + "0x0.3DAE18DCp0", "0x0.408CE1CCp0", "0x0.43724E48p0", "0x0.465E6DA8p0", "0x0.49514F68p0", "0x0.4C4B0330p0", "0x0.4F4B98C4p0", "0x0.5253200Cp0" + }; + ap_ufixed<29,-1> exp_msb_ind_2_m1 = exp_msb_ind_2_m_1_table[x_msb_ind_2]; + ap_ufixed<53,-7> f_x_msb_2_lsb = exp_lsb_ind_m_1 * exp_msb_ind_2_m1; + ap_ufixed<27,-1> exp_msb_2_lsb_m_1 = f_x_msb_2_lsb + exp_msb_ind_2_m1 + exp_lsb_ind_m_1; + const static ap_ufixed<28,13> exp_msb_ind_1_table[64] = { + "0x1.0000p0", "0x1.5562p0", "0x1.C73Ep0", "0x2.5F12p0", "0x3.298Cp0", "0x4.378Cp0", "0x5.9F98p0", "0x7.7FBAp0", + "0xA.0000p0", "0xD.55D0p0", "0x11.C866p0", "0x17.B6B8p0", "0x1F.9F6Ep0", "0x2A.2B6Ep0", "0x38.3BF0p0", "0x4A.FD4Ap0", + "0x64.0000p0", "0x85.5A26p0", "0xB1.D3F4p0", "0xED.232Ap0", "0x13C.3A4Ep0", "0x1A5.B24Ep0", "0x232.5762p0", "0x2ED.E4EAp0", + "0x3E8.0000p0", "0x535.857Cp0", "0x6F2.4788p0", "0x943.5FACp0", "0xC5A.4714p0", "0x1078.F70Cp0", "0x15F7.69CAp0", "0x1D4A.F12Ep0", + "0x0.0006p0", "0x0.0008p0", "0x0.000Cp0", "0x0.0010p0", "0x0.0014p0", "0x0.001Cp0", "0x0.0024p0", "0x0.0032p0", + "0x0.0042p0", "0x0.0058p0", "0x0.0074p0", "0x0.009Cp0", "0x0.00D0p0", "0x0.0114p0", "0x0.0170p0", "0x0.01ECp0", + "0x0.0290p0", "0x0.036Ap0", "0x0.048Ep0", "0x0.0612p0", "0x0.0818p0", "0x0.0ACCp0", "0x0.0E66p0", "0x0.1332p0", + "0x0.199Ap0", "0x0.2224p0", "0x0.2D86p0", "0x0.3CB6p0", "0x0.50F4p0", "0x0.6BF4p0", "0x0.8FF6p0", "0x0.BFFAp0" + }; + ap_ufixed<28,13> exp_msb_ind_1 = exp_msb_ind_1_table[x_msb_ind_1]; + ap_ufixed<28,13> f_x_msb_1_msb_2_lsb_l = exp_msb_ind_1 * exp_msb_2_lsb_m_1; + y = f_x_msb_1_msb_2_lsb_l + exp_msb_ind_1; + } + if(I_<14) { + bool overf = 0; + for(int j = 25; j>= I_+12; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if(overf) { + for(int j = 25; j>=I_+12; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j = I_+11; j>=0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else if (I_s_==4) {// I_s_ = 4, M_ = 14..26, I_ <= 27, F_ <= 26, W <= 53 + ap_fixed<53,27> x_l = x; + ap_ufixed<52,26> y = 0; + ap_fixed<4,4> x_l_int; + x_l_int(3,0) = x_l(29,26); + ap_ufixed<26,0> x_l_fract; + x_l_fract(25,0) = x_l(25,0); + bool overf = 0; + for(int j = 51; j >= 29; j--) { + #pragma HLS unroll + if(x_l[52]!=x_l[j]) { + overf = 1; + } + } + if(overf||((x_l_int==7)&&(x_l_fract>ap_ufixed<26,0>("0x0.D3A7D8C")))) { + if(!x_l[52]) { + y = ap_ufixed<52,26>("0x3FFFFFF.FFFFFFCp0"); + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[52]; + x_msb_ind_1(6,0) = x_l(28,22); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(21,14); + ap_uint<7> x_msb_ind_3; + x_msb_ind_3(6,0) = x_l(13,7); + ap_uint<7> x_lsb_ind; + x_lsb_ind(6,0) = x_l(6,0); + const static ap_ufixed<41,-17> exp_lsb_ind_m_1_table[128] = { + "0x0.0p0", "0x0.000000935D8E080p0", "0x0.00000126BB1C650p0", "0x0.000001BA18AB16Cp0", "0x0.0000024D763A1D4p0", "0x0.000002E0D3C978Cp0", "0x0.000003743159290p0", "0x0.000004078EE92E0p0", + "0x0.0000049AEC79880p0", "0x0.0000052E4A0A368p0", "0x0.000005C1A79B3A4p0", "0x0.00000655052C928p0", "0x0.000006E862BE3FCp0", "0x0.0000077BC05041Cp0", "0x0.0000080F1DE298Cp0", "0x0.000008A27B75448p0", + "0x0.00000935D908450p0", "0x0.000009C9369B9A4p0", "0x0.00000A5C942F448p0", "0x0.00000AEFF1C3438p0", "0x0.00000B834F57978p0", "0x0.00000C16ACEC400p0", "0x0.00000CAA0A813D8p0", "0x0.00000D3D6816900p0", + "0x0.00000DD0C5AC370p0", "0x0.00000E642342334p0", "0x0.00000EF780D8840p0", "0x0.00000F8ADE6F29Cp0", "0x0.0000101E3C06244p0", "0x0.000010B1999D738p0", "0x0.00001144F73517Cp0", "0x0.000011D854CD10Cp0", + "0x0.0000126BB2655E8p0", "0x0.000012FF0FFE010p0", "0x0.000013926D96F88p0", "0x0.00001425CB30450p0", "0x0.000014B928C9E60p0", "0x0.0000154C8663DC0p0", "0x0.000015DFE3FE26Cp0", "0x0.000016734198C68p0", + "0x0.000017069F33BB0p0", "0x0.00001799FCCF044p0", "0x0.0000182D5A6AA24p0", "0x0.000018C0B806954p0", "0x0.0000195415A2DD0p0", "0x0.000019E7733F79Cp0", "0x0.00001A7AD0DC6B4p0", "0x0.00001B0E2E79B18p0", + "0x0.00001BA18C174C8p0", "0x0.00001C34E9B53C8p0", "0x0.00001CC84753814p0", "0x0.00001D5BA4F21B0p0", "0x0.00001DEF0291094p0", "0x0.00001E8260304C8p0", "0x0.00001F15BDCFE4Cp0", "0x0.00001FA91B6FD18p0", + "0x0.0000203C7910134p0", "0x0.000020CFD6B0AA0p0", "0x0.000021633451954p0", "0x0.000021F691F2D58p0", "0x0.00002289EF946ACp0", "0x0.0000231D4D36548p0", "0x0.000023B0AAD8934p0", "0x0.00002444087B270p0", + "0x0.000024D7661E0F4p0", "0x0.0000256AC3C14C8p0", "0x0.000025FE2164DE8p0", "0x0.000026917F08C58p0", "0x0.00002724DCAD014p0", "0x0.000027B83A5191Cp0", "0x0.0000284B97F6774p0", "0x0.000028DEF59BB14p0", + "0x0.000029725341408p0", "0x0.00002A05B0E7244p0", "0x0.00002A990E8D5D0p0", "0x0.00002B2C6C33EA8p0", "0x0.00002BBFC9DACD0p0", "0x0.00002C532782040p0", "0x0.00002CE68529900p0", "0x0.00002D79E2D1710p0", + "0x0.00002E0D4079A6Cp0", "0x0.00002EA09E22314p0", "0x0.00002F33FBCB108p0", "0x0.00002FC7597444Cp0", "0x0.0000305AB71DCDCp0", "0x0.000030EE14C7AB8p0", "0x0.000031817271DE4p0", "0x0.00003214D01C65Cp0", + "0x0.000032A82DC7420p0", "0x0.0000333B8B72734p0", "0x0.000033CEE91DF94p0", "0x0.0000346246C9D40p0", "0x0.000034F5A47603Cp0", "0x0.000035890222884p0", "0x0.0000361C5FCF618p0", "0x0.000036AFBD7C8FCp0", + "0x0.000037431B2A12Cp0", "0x0.000037D678D7EA8p0", "0x0.00003869D686170p0", "0x0.000038FD3434988p0", "0x0.0000399091E36ECp0", "0x0.00003A23EF929A0p0", "0x0.00003AB74D421A0p0", "0x0.00003B4AAAF1EECp0", + "0x0.00003BDE08A2188p0", "0x0.00003C71665296Cp0", "0x0.00003D04C4036A0p0", "0x0.00003D9821B4924p0", "0x0.00003E2B7F660F4p0", "0x0.00003EBEDD17E10p0", "0x0.00003F523ACA078p0", "0x0.00003FE5987C830p0", + "0x0.00004078F62F534p0", "0x0.0000410C53E2788p0", "0x0.0000419FB195F24p0", "0x0.000042330F49C10p0", "0x0.000042C66CFDE4Cp0", "0x0.00004359CAB25D0p0", "0x0.000043ED28672A4p0", "0x0.00004480861C4C8p0", + "0x0.00004513E3D1C34p0", "0x0.000045A741878F0p0", "0x0.0000463A9F3DAFCp0", "0x0.000046CDFCF4250p0", "0x0.000047615AAAEF4p0", "0x0.000047F4B8620E8p0", "0x0.000048881619824p0", "0x0.0000491B73D14B0p0" + }; + ap_ufixed<41,-17> exp_lsb_ind_m_1 = exp_lsb_ind_m_1_table[x_lsb_ind]; + const static ap_ufixed<48,-10> exp_msb_ind_3_m_1_table[128] = { + "0x0.0p0", "0x0.000049AED18968Cp0", "0x0.0000935DB847FC4p0", "0x0.0000DD0CB43BC10p0", "0x0.000126BBC564BCCp0", "0x0.0001706AEBC2F58p0", "0x0.0001BA1A275671Cp0", "0x0.000203C9781F374p0", + "0x0.00024D78DE1D4C8p0", "0x0.000297285950B74p0", "0x0.0002E0D7E9B97D8p0", "0x0.00032A878F57A5Cp0", "0x0.000374374A2B360p0", "0x0.0003BDE71A34344p0", "0x0.00040796FF72A68p0", "0x0.00045146F9E6930p0", + "0x0.00049AF70990000p0", "0x0.0004E4A72E6EF34p0", "0x0.00052E576883734p0", "0x0.00057807B7CD85Cp0", "0x0.0005C1B81C4D314p0", "0x0.00060B6896027B4p0", "0x0.0006551924ED6A8p0", "0x0.00069EC9C90E04Cp0", + "0x0.0006E87A8264500p0", "0x0.0007322B50F052Cp0", "0x0.00077BDC34B2130p0", "0x0.0007C58D2DA9968p0", "0x0.00080F3E3BD6E3Cp0", "0x0.000858EF5F3A008p0", "0x0.0008A2A097D2F34p0", "0x0.0008EC51E5A1C1Cp0", + "0x0.0009360348A6724p0", "0x0.00097FB4C0E10B0p0", "0x0.0009C9664E51920p0", "0x0.000A1317F0F80D4p0", "0x0.000A5CC9A8D4830p0", "0x0.000AA67B75E6F94p0", "0x0.000AF02D582F764p0", "0x0.000B39DF4FADFFCp0", + "0x0.000B83915C629C4p0", "0x0.000BCD437E4D51Cp0", "0x0.000C16F5B56E268p0", "0x0.000C60A801C5200p0", "0x0.000CAA5A6352450p0", "0x0.000CF40CDA159B8p0", "0x0.000D3DBF660F294p0", "0x0.000D8772073EF4Cp0", + "0x0.000DD124BDA5040p0", "0x0.000E1AD789415CCp0", "0x0.000E648A6A1405Cp0", "0x0.000EAE3D601D048p0", "0x0.000EF7F06B5C5F8p0", "0x0.000F41A38BD21CCp0", "0x0.000F8B56C17E424p0", "0x0.000FD50A0C60D64p0", + "0x0.00101EBD6C79DECp0", "0x0.00106870E1C9620p0", "0x0.0010B2246C4F660p0", "0x0.0010FBD80C0BF0Cp0", "0x0.0011458BC0FF088p0", "0x0.00118F3F8B28B34p0", "0x0.0011D8F36A88F74p0", "0x0.001222A75F1FDA8p0", + "0x0.00126C5B68ED630p0", "0x0.0012B60F87F1974p0", "0x0.0012FFC3BC2C7D0p0", "0x0.00134978059E1A8p0", "0x0.0013932C644675Cp0", "0x0.0013DCE0D82594Cp0", "0x0.00142695613B7E0p0", "0x0.00147049FF88374p0", + "0x0.0014B9FEB30BC70p0", "0x0.001503B37BC632Cp0", "0x0.00154D6859B7810p0", "0x0.0015971D4CDFB80p0", "0x0.0015E0D2553EDD8p0", "0x0.00162A8772D4F7Cp0", "0x0.0016743CA5A20D0p0", "0x0.0016BDF1EDA6230p0", + "0x0.001707A74AE1404p0", "0x0.0017515CBD536ACp0", "0x0.00179B1244FCA88p0", "0x0.0017E4C7E1DCFF8p0", "0x0.00182E7D93F4760p0", "0x0.001878335B43124p0", "0x0.0018C1E937C8DA4p0", "0x0.00190B9F2985D40p0", + "0x0.00195555307A05Cp0", "0x0.00199F0B4CA5758p0", "0x0.0019E8C17E08294p0", "0x0.001A3277C4A2278p0", "0x0.001A7C2E2073760p0", "0x0.001AC5E4917C1ACp0", "0x0.001B0F9B17BC1C4p0", "0x0.001B5951B333808p0", + "0x0.001BA30863E24D8p0", "0x0.001BECBF29C8894p0", "0x0.001C367604E63A4p0", "0x0.001C802CF53B664p0", "0x0.001CC9E3FAC8134p0", "0x0.001D139B158C47Cp0", "0x0.001D5D52458809Cp0", "0x0.001DA7098ABB5F4p0", + "0x0.001DF0C0E5264E4p0", "0x0.001E3A7854C8DD0p0", "0x0.001E842FD9A311Cp0", "0x0.001ECDE773B4F24p0", "0x0.001F179F22FE850p0", "0x0.001F6156E77FCFCp0", "0x0.001FAB0EC138D90p0", "0x0.001FF4C6B029A68p0", + "0x0.00203E7EB4523E8p0", "0x0.00208836CDB2A70p0", "0x0.0020D1EEFC4AE68p0", "0x0.00211BA7401B028p0", "0x0.0021655F9923018p0", "0x0.0021AF180762E98p0", "0x0.0021F8D08ADAC0Cp0", "0x0.00224289238A8D4p0", + "0x0.00228C41D172550p0", "0x0.0022D5FA94921E4p0", "0x0.00231FB36CE9EF0p0", "0x0.0023696C5A79CD8p0", "0x0.0023B3255D41BFCp0", "0x0.0023FCDE7541CC0p0", "0x0.00244697A279F80p0", "0x0.00249050E4EA4A4p0" + }; + ap_ufixed<48,-10> exp_msb_ind_3_m_1 = exp_msb_ind_3_m_1_table[x_msb_ind_3]; + ap_ufixed<89,-27> f_x_msb_ind_3_lsb = exp_lsb_ind_m_1 * exp_msb_ind_3_m_1; + ap_ufixed<46,-10> exp_msb_ind_3_lsb_ind_m_1 = f_x_msb_ind_3_lsb + exp_lsb_ind_m_1 + exp_msb_ind_3_m_1; + const static ap_ufixed<54,-2> exp_msb_ind_2_m_1_table[256] = { + "0x0.0p0", "0x0.0024DA0A3C92C9p0", "0x0.0049B96285BC0Ap0", "0x0.006E9E099EFA37p0", "0x0.009388004BE7E5p0", "0x0.00B87747503BD4p0", "0x0.00DD6BDF6FC8EEp0", "0x0.010265C96E7E4Fp0", + "0x0.01276506106748p0", "0x0.014C699619AB60p0", "0x0.0171737A4E8E5Ep0", "0x0.019682B3737048p0", "0x0.01BB97424CCD67p0", "0x0.01E0B1279F3E51p0", "0x0.0205D0642F77E5p0", "0x0.022AF4F8C24B54p0", + "0x0.02501EE61CA626p0", "0x0.02754E2D03923Bp0", "0x0.029A82CE3C35CEp0", "0x0.02BFBCCA8BD37Fp0", "0x0.02E4FC22B7CA50p0", "0x0.030A40D78595AFp0", "0x0.032F8AE9BACD76p0", "0x0.0354DA5A1D25F2p0", + "0x0.037A2F29726FE5p0", "0x0.039F895880988Ap0", "0x0.03C4E8E80DA99Bp0", "0x0.03EA4DD8DFC955p0", "0x0.040FB82BBD3A78p0", "0x0.043527E16C5C51p0", "0x0.045A9CFAB3AABBp0", "0x0.0480177859BE22p0", + "0x0.04A5975B254B8Bp0", "0x0.04CB1CA3DD2493p0", "0x0.04F0A753483778p0", "0x0.0516376A2D8F1Ap0", "0x0.053BCCE95452FFp0", "0x0.056167D183C75Bp0", "0x0.05870823834D0Ep0", "0x0.05ACADE01A61AEp0", + "0x0.05D25908109F88p0", "0x0.05F8099C2DBDA3p0", "0x0.061DBF9D398FC8p0", "0x0.06437B0BFC0683p0", "0x0.06693BE93D2F28p0", "0x0.068F0235C533D7p0", "0x0.06B4CDF25C5B83p0", "0x0.06DA9F1FCB09EFp0", + "0x0.070075BED9BFBBp0", "0x0.072651D0511A61p0", "0x0.074C3354F9D43Dp0", "0x0.07721A4D9CC491p0", "0x0.079806BB02DF87p0", "0x0.07BDF89DF53637p0", "0x0.07E3EFF73CF6ACp0", "0x0.0809ECC7A36BE3p0", + "0x0.082FEF0FF1FDD7p0", "0x0.0855F6D0F23180p0", "0x0.087C040B6DA8D8p0", "0x0.08A216C02E22DFp0", "0x0.08C82EEFFD7BA0p0", "0x0.08EE4C9BA5AC35p0", "0x0.09146FC3F0CACCp0", "0x0.093A9869A90AA9p0", + "0x0.0960C68D98BC2Cp0", "0x0.0986FA308A4CD4p0", "0x0.09AD3353484744p0", "0x0.09D371F69D5348p0", "0x0.09F9B61B5435D7p0", "0x0.0A1FFFC237D119p0", "0x0.0A464EEC13246Bp0", "0x0.0A6CA399B14C61p0", + "0x0.0A92FDCBDD82CEp0", "0x0.0AB95D83631EC5p0", "0x0.0ADFC2C10D94A0p0", "0x0.0B062D85A87601p0", "0x0.0B2C9DD1FF71D8p0", "0x0.0B5313A6DE5467p0", "0x0.0B798F05110749p0", "0x0.0BA00FED63916Fp0", + "0x0.0BC69660A2172Dp0", "0x0.0BED225F98DA36p0", "0x0.0C13B3EB1439A8p0", "0x0.0C3A4B03E0B20Ap0", "0x0.0C60E7AACADD54p0", "0x0.0C8789E09F72F1p0", "0x0.0CAE31A62B47C4p0", "0x0.0CD4DEFC3B4E2Dp0", + "0x0.0CFB91E39C960Dp0", "0x0.0D224A5D1C4CC9p0", "0x0.0D49086987BD4Fp0", "0x0.0D6FCC09AC501Cp0", "0x0.0D96953E578B3Ep0", "0x0.0DBD6408571257p0", "0x0.0DE4386878A6A5p0", "0x0.0E0B125F8A2704p0", + "0x0.0E31F1EE598FF3p0", "0x0.0E58D715B4FB98p0", "0x0.0E7FC1D66AA1C4p0", "0x0.0EA6B23148D7F6p0", "0x0.0ECDA8271E1164p0", "0x0.0EF4A3B8B8DEF8p0", "0x0.0F1BA4E6E7EF5Dp0", "0x0.0F42ABB27A0EFAp0", + "0x0.0F69B81C3E27FEp0", "0x0.0F90CA25034260p0", "0x0.0FB7E1CD9883E5p0", "0x0.0FDEFF16CD3022p0", "0x0.1006220170A885p0", "0x0.102D4A8E526C53p0", "0x0.105478BE4218B3p0", "0x0.107BAC920F68ACp0", + "0x0.10A2E60A8A352Ep0", "0x0.10CA2528827515p0", "0x0.10F169ECC83D2Ap0", "0x0.1118B4582BC02Dp0", "0x0.1140046B7D4ED5p0", "0x0.11675A278D57D7p0", "0x0.118EB58D2C67E8p0", "0x0.11B6169D2B29C2p0", + "0x0.11DD7D585A662Bp0", "0x0.1204E9BF8B03F4p0", "0x0.122C5BD38E0803p0", "0x0.1253D395349553p0", "0x0.127B51054FECFBp0", "0x0.12A2D424B16E31p0", "0x0.12CA5CF42A964Fp0", "0x0.12F1EB748D00D7p0", + "0x0.13197FA6AA6777p0", "0x0.1341198B54A20Dp0", "0x0.1368B9235DA6AEp0", "0x0.13905E6F9789A8p0", "0x0.13B80970D47D86p0", "0x0.13DFBA27E6D314p0", "0x0.14077095A0F967p0", "0x0.142F2CBAD57DDEp0", + "0x0.1456EE98570C27p0", "0x0.147EB62EF86E43p0", "0x0.14A6837F8C8C8Cp0", "0x0.14CE568AE66DB7p0", "0x0.14F62F51D936DBp0", "0x0.151E0DD5382B74p0", "0x0.1545F215D6AD66p0", "0x0.156DDC14883D04p0", + "0x0.1595CBD2207913p0", "0x0.15BDC14F731ECFp0", "0x0.15E5BC8D5409EEp0", "0x0.160DBD8C9734A6p0", "0x0.1635C44E10B7B0p0", "0x0.165DD0D294CA4Ep0", "0x0.1685E31AF7C24Ep0", "0x0.16ADFB280E140Fp0", + "0x0.16D618FAAC5286p0", "0x0.16FE3C93A72F41p0", "0x0.172665F3D37A6Cp0", "0x0.174E951C0622D6p0", "0x0.1776CA0D1435F4p0", "0x0.179F04C7D2DFE7p0", "0x0.17C7454D176B81p0", "0x0.17EF8B9DB74247p0", + "0x0.1817D7BA87EC75p0", "0x0.184029A45F1107p0", "0x0.1868815C1275B9p0", "0x0.1890DEE277FF0Dp0", "0x0.18B9423865B04Fp0", "0x0.18E1AB5EB1AB9Ap0", "0x0.190A1A563231DCp0", "0x0.19328F1FBDA2DCp0", + "0x0.195B09BC2A7D3Ap0", "0x0.19838A2C4F5E7Ap0", "0x0.19AC1071030303p0", "0x0.19D49C8B1C4625p0", "0x0.19FD2E7B722220p0", "0x0.1A25C642DBB023p0", "0x0.1A4E63E2302857p0", "0x0.1A77075A46E1DEp0", + "0x0.1A9FB0ABF752DBp0", "0x0.1AC85FD8191074p0", "0x0.1AF114DF83CED8p0", "0x0.1B19CFC30F6145p0", "0x0.1B42908393BA07p0", "0x0.1B6B5721E8EA82p0", "0x0.1B94239EE72334p0", "0x0.1BBCF5FB66B3BCp0", + "0x0.1BE5CE38400AD8p0", "0x0.1C0EAC564BB672p0", "0x0.1C37905662639Fp0", "0x0.1C607A395CDEA5p0", "0x0.1C896A001412FEp0", "0x0.1CB25FAB610B61p0", "0x0.1CDB5B3C1CF1BFp0", "0x0.1D045CB3210F50p0", + "0x0.1D2D641146CC91p0", "0x0.1D56715767B14Cp0", "0x0.1D7F84865D649Ap0", "0x0.1DA89D9F01ACEBp0", "0x0.1DD1BCA22E7006p0", "0x0.1DFAE190BDB311p0", "0x0.1E240C6B899A96p0", "0x0.1E4D3D336C6A83p0", + "0x0.1E7673E9408633p0", "0x0.1E9FB08DE07072p0", "0x0.1EC8F32226CB7Ep0", "0x0.1EF23BA6EE590Fp0", "0x0.1F1B8A1D11FA5Cp0", "0x0.1F44DE856CB01Dp0", "0x0.1F6E38E0D99A90p0", "0x0.1F97993033F980p0", + "0x0.1FC0FF74572C45p0", "0x0.1FEA6BAE1EB1CEp0", "0x0.2013DDDE6628A0p0", "0x0.203D5606094EE1p0", "0x0.2066D425E40256p0", "0x0.2090583ED2406Ap0", "0x0.20B9E251B02636p0", "0x0.20E3725F59F080p0", + "0x0.210D0868ABFBC3p0", "0x0.2136A46E82C433p0", "0x0.21604671BAE5C1p0", "0x0.2189EE73311C20p0", "0x0.21B39C73C242C8p0", "0x0.21DD50744B54FDp0", "0x0.22070A75A96DD4p0", "0x0.2230CA78B9C835p0", + "0x0.225A907E59BEDFp0", "0x0.22845C8766CC70p0", "0x0.22AE2E94BE8B69p0", "0x0.22D806A73EB62Fp0", "0x0.2301E4BFC52713p0", "0x0.232BC8DF2FD857p0", "0x0.2355B3065CE42Fp0", "0x0.237FA3362A84CAp0", + "0x0.23A9996F771453p0", "0x0.23D395B3210CF7p0", "0x0.23FD98020708EAp0", "0x0.2427A05D07C26Dp0", "0x0.2451AEC50213CEp0", "0x0.247BC33AD4F771p0", "0x0.24A5DDBF5F87D3p0", "0x0.24CFFE5380FF8Fp0", + "0x0.24FA24F818B962p0", "0x0.252451AE063030p0", "0x0.254E847628FF09p0", "0x0.2578BD5160E12Cp0", "0x0.25A2FC408DB20Fp0", "0x0.25CD41448F6D5Fp0", "0x0.25F78C5E462F0Ap0", "0x0.2621DD8E92333Fp0", + "0x0.264C34D653D674p0", "0x0.267692366B956Dp0", "0x0.26A0F5AFBA0D3Cp0", "0x0.26CB5F431FFB4Cp0", "0x0.26F5CEF17E3D5Fp0", "0x0.272044BBB5D196p0", "0x0.274AC0A2A7D678p0", "0x0.277542A7358AF1p0" + }; + ap_ufixed<54,-2> exp_msb_ind_2_m_1 = exp_msb_ind_2_m_1_table[x_msb_ind_2]; + ap_ufixed<100,-12> f_x_msb_ind_2_msb_ind3_lsb = exp_msb_ind_3_lsb_ind_m_1 * exp_msb_ind_2_m_1; + ap_ufixed<52,-2> exp_msb_ind2_msb_ind3_lsb_ind_m_1 = f_x_msb_ind_2_msb_ind3_lsb + exp_msb_ind_3_lsb_ind_m_1 + exp_msb_ind_2_m_1; + const static ap_ufixed<54,26> exp_msb_ind_1_table[256] = { + "0x1.0000000p0", "0x1.279FCADp0", "0x1.5561A92p0", "0x1.8A389FFp0", "0x1.C73D51Cp0", "0x2.0DB3D0Fp0", "0x2.5F1258Ep0", "0x2.BD0911Bp0", + "0x3.298B076p0", "0x3.A6D8842p0", "0x4.378B054p0", "0x4.DEA3099p0", "0x5.9F9802Dp0", "0x6.7E6ABF0p0", "0x7.7FBAAB4p0", "0x8.A8DE610p0", + "0xA.0000000p0", "0xB.8C3DEBEp0", "0xD.55D09B1p0", "0xF.66363F8p0", "0x11.C86531Bp0", "0x14.8906295p0", "0x17.B6B778Cp0", "0x1B.625AB10p0", + "0x1F.9F6E499p0", "0x24.8475291p0", "0x2A.2B6E347p0", "0x30.B25E5F8p0", "0x38.3BF01BEp0", "0x40.F02B75Fp0", "0x4A.FD4AB0Bp0", "0x56.98AFCA2p0", + "0x64.0000000p0", "0x73.7A6B370p0", "0x85.5A260EDp0", "0x99.FE1E7B3p0", "0xB1.D3F3F11p0", "0xCD.5A3D9D0p0", "0xED.232AB7Bp0", "0x111.D78AEA4p0", + "0x13C.3A4EDFBp0", "0x16D.2C939A9p0", "0x1A5.B24E0C7p0", "0x1E6.F7AFBABp0", "0x232.5761167p0", "0x289.61B29B6p0", "0x2ED.E4EAE72p0", "0x361.F6DDE55p0", + "0x3E8.0000000p0", "0x482.C830261p0", "0x535.857C941p0", "0x603.ED30CFDp0", "0x6F2.47876A9p0", "0x805.8668224p0", "0x943.5FAB2CAp0", "0xAB2.6B6D26Bp0", + "0xC5A.4714BCAp0", "0xE43.BDC409Bp0", "0x1078.F70C7CBp0", "0x1305.ACDD4AFp0", "0x15F7.69CAE07p0", "0x195D.D0FA11Ep0", "0x1D4A.F12D073p0", "0x21D3.A4AAF51p0", + "0x2710.0000000p0", "0x2D1B.D1E17C7p0", "0x3417.36DDC85p0", "0x3C27.43E81E5p0", "0x4576.CB4A29Cp0", "0x5037.401156Cp0", "0x5CA1.BCAFBE1p0", "0x6AF8.324382Fp0", + "0x7B86.C6CF5E3p0", "0x8EA5.69A8609p0", "0xA4B9.A67CDEAp0", "0xBE38.C0A4ED5p0", "0xDBAA.21ECC48p0", "0xFDAA.29C4B2Ap0", "0x124ED.6BC2480p0", "0x15244.6EAD929p0", + "0x186A0.0000000p0", "0x1C316.32CEDC6p0", "0x208E8.24A9D35p0", "0x25988.A7112F0p0", "0x2B6A3.F0E5A19p0", "0x32228.80AD63Cp0", "0x39E51.5EDD6CAp0", "0x42DB1.F6A31D7p0", + "0x4D343.C419ADFp0", "0x59276.2093C5Ep0", "0x66F40.80E0B21p0", "0x76E37.8671452p0", "0x894A5.533FACCp0", "0x9E8A5.A1AEFA8p0", "0xB7146.3596CFDp0", "0xD36AC.52C7B9Bp0", + "0xF4240.0000000p0", "0x119EDD.FC149BCp0", "0x145911.6EA2417p0", "0x177F56.86ABD5Cp0", "0x1B2267.68F84F9p0", "0x1F5595.06C5E54p0", "0x242F2D.B4A63E0p0", "0x29C8F3.A25F263p0", + "0x3040A5.A900CB8p0", "0x37B89D.45C5BB0p0", "0x405885.08C6F4Ap0", "0x4A4E2B.406CB33p0", "0x55CE75.407CBF4p0", "0x631678.50D5C93p0", "0x726CBE.17E41E4p0", "0x8422BB.3BCD40Ap0", + "0x989680.0000000p0", "0xB034AB.D8CE155p0", "0xCB7AAE.52568E6p0", "0xEAF961.42B6594p0", "0x10F580A.19B31BCp0", "0x13957D2.43BAF49p0", "0x169D7C9.0E7E6C2p0", "0x1A1D984.57B77DEp0", + "0x1E28678.9A07F2Fp0", "0x22D3624.B9B94DFp0", "0x2837532.57C58E8p0", "0x2E70DB0.843F002p0", "0x35A1094.84DF78Cp0", "0x3DEE0B3.2859DBCp0", "0x4783F6C.EEE92ECp0", "0x5295B50.5604864p0", + "0x0.0000003p0", "0x0.0000003p0", "0x0.0000004p0", "0x0.0000004p0", "0x0.0000005p0", "0x0.0000006p0", "0x0.0000006p0", "0x0.0000007p0", + "0x0.0000008p0", "0x0.000000Ap0", "0x0.000000Bp0", "0x0.000000Dp0", "0x0.000000Fp0", "0x0.0000011p0", "0x0.0000014p0", "0x0.0000017p0", + "0x0.000001Bp0", "0x0.000001Fp0", "0x0.0000024p0", "0x0.0000029p0", "0x0.0000030p0", "0x0.0000037p0", "0x0.0000040p0", "0x0.000004Ap0", + "0x0.0000055p0", "0x0.0000062p0", "0x0.0000071p0", "0x0.0000083p0", "0x0.0000097p0", "0x0.00000AEp0", "0x0.00000C9p0", "0x0.00000E8p0", + "0x0.000010Cp0", "0x0.0000136p0", "0x0.0000166p0", "0x0.000019Dp0", "0x0.00001DDp0", "0x0.0000227p0", "0x0.000027Dp0", "0x0.00002DFp0", + "0x0.0000351p0", "0x0.00003D4p0", "0x0.000046Cp0", "0x0.000051Bp0", "0x0.00005E6p0", "0x0.00006CFp0", "0x0.00007DDp0", "0x0.0000915p0", + "0x0.0000A7Cp0", "0x0.0000C1Cp0", "0x0.0000DFCp0", "0x0.0001026p0", "0x0.00012A6p0", "0x0.0001588p0", "0x0.00018DEp0", "0x0.0001CB7p0", + "0x0.0002129p0", "0x0.000264Bp0", "0x0.0002C38p0", "0x0.0003310p0", "0x0.0003AF7p0", "0x0.0004418p0", "0x0.0004EA2p0", "0x0.0005ACEp0", + "0x0.00068DCp0", "0x0.0007916p0", "0x0.0008BD4p0", "0x0.000A179p0", "0x0.000BA77p0", "0x0.000D754p0", "0x0.000F8A8p0", "0x0.0011F25p0", + "0x0.0014B97p0", "0x0.0017EEAp0", "0x0.001BA2Ep0", "0x0.001FE9Fp0", "0x0.0024DA8p0", "0x0.002A8EDp0", "0x0.0031252p0", "0x0.0038C08p0", + "0x0.0041893p0", "0x0.004BAE0p0", "0x0.005764Cp0", "0x0.0064EBBp0", "0x0.00748A9p0", "0x0.0086947p0", "0x0.009B691p0", "0x0.00B3771p0", + "0x0.00CF3E3p0", "0x0.00EF521p0", "0x0.01145CFp0", "0x0.013F239p0", "0x0.0170894p0", "0x0.01A9943p0", "0x0.01EB736p0", "0x0.023784Bp0", + "0x0.028F5C3p0", "0x0.02F4CC4p0", "0x0.0369EFCp0", "0x0.03F134Dp0", "0x0.048D69Cp0", "0x0.0541CC5p0", "0x0.06121A8p0", "0x0.0702A69p0", + "0x0.08186E2p0", "0x0.0959348p0", "0x0.0ACBA15p0", "0x0.0C7763Fp0", "0x0.0E655C3p0", "0x0.109FC99p0", "0x0.133281Bp0", "0x0.162B2F1p0", + "0x0.199999Ap0", "0x0.1D8FFABp0", "0x0.22235DBp0", "0x0.276C100p0", "0x0.2D8621Cp0", "0x0.3491FB5p0", "0x0.3CB508Ep0", "0x0.461A81Cp0", + "0x0.50F44D9p0", "0x0.5D7C0D3p0", "0x0.6BF44D5p0", "0x0.7CA9E76p0", "0x0.8FF599Ep0", "0x0.A63DDFEp0", "0x0.BFF9112p0", "0x0.DDAFD68p0" + }; + ap_ufixed<54,26> exp_msb_ind_1 = exp_msb_ind_1_table[x_msb_ind_1]; + ap_ufixed<106,24> f_x_msb_ind_1_ind_2_ind_1_lsb = exp_msb_ind_1 * exp_msb_ind2_msb_ind3_lsb_ind_m_1; + y = f_x_msb_ind_1_ind_2_ind_1_lsb + exp_msb_ind_1; + } + if(I_<27) { + bool overf = 0; + for(int j = 51; j >= 25 + I_; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if(overf) { + for(int j = 51; j>=25 + I_; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j = 24 + I_; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } else {// I_s_ = 5, M_ = 27..32, I_ <= 33, F_ <= 32, W <= 65 + ap_fixed<65,33> x_l = x; + ap_ufixed<64,32> y = 0; + ap_fixed<5,5> x_l_int; + x_l_int(4,0) = x_l(36,32); + ap_ufixed<32,0> x_l_fract; + x_l_fract(31,0) = x_l(31,0); + bool overf = 0; + for(int j = 63; j >= 36; j--) { + #pragma HLS unroll + if(x_l[64]!=x_l[j]) { + overf = 1; + } + } + if(overf||(x_l_int >= 10)||((x_l_int==9)&&(x_l_fract>ap_fixed<32,0>("0x0.A209A84F")))) { + if(!x_l[64]) { + y = ap_ufixed<64,32>("0xFFFFFFFF.FFFFFFFFp0"); + } + } else { + ap_uint<8> x_msb_ind_1; + x_msb_ind_1[7] = x_l[64]; + x_msb_ind_1(6,0) = x_l(35,29); + ap_uint<8> x_msb_ind_2; + x_msb_ind_2(7,0) = x_l(28,21); + ap_uint<7> x_msb_ind_3; + x_msb_ind_3(6,0) = x_l(20,14); + ap_uint<7> x_msb_ind_4; + x_msb_ind_4(6,0) = x_l(13,7); + ap_uint<7> x_lsb_ind; + x_lsb_ind(6,0) = x_l(6,0); + const static ap_ufixed<49,-23> exp_x_lsb_ind_m_1_table[128] = { + "0x0.0p0", "0x0.000000024D76377927p0", "0x0.000000049AEC6EF79Cp0", "0x0.00000006E862A67B5Dp0", "0x0.0000000935D8DE046Dp0", "0x0.0000000B834F1592C9p0", "0x0.0000000DD0C54D2672p0", "0x0.000000101E3B84BF69p0", + "0x0.000000126BB1BC5DAEp0", "0x0.00000014B927F4013Fp0", "0x0.00000017069E2BAA1Ep0", "0x0.00000019541463584Ap0", "0x0.0000001BA18A9B0BC3p0", "0x0.0000001DEF00D2C48Ap0", "0x0.000000203C770A829Ep0", "0x0.0000002289ED4245FFp0", + "0x0.00000024D7637A0EAEp0", "0x0.0000002724D9B1DCA9p0", "0x0.00000029724FE9AFF2p0", "0x0.0000002BBFC6218889p0", "0x0.0000002E0D3C59666Cp0", "0x0.000000305AB291499Dp0", "0x0.00000032A828C9321Bp0", "0x0.00000034F59F011FE7p0", + "0x0.000000374315391300p0", "0x0.00000039908B710B66p0", "0x0.0000003BDE01A90919p0", "0x0.0000003E2B77E10C1Ap0", "0x0.0000004078EE191468p0", "0x0.00000042C664512203p0", "0x0.0000004513DA8934EBp0", "0x0.000000476150C14D21p0", + "0x0.00000049AEC6F96AA4p0", "0x0.0000004BFC3D318D75p0", "0x0.0000004E49B369B592p0", "0x0.000000509729A1E2FDp0", "0x0.00000052E49FDA15B5p0", "0x0.000000553216124DBBp0", "0x0.000000577F8C4A8B0Ep0", "0x0.00000059CD0282CDAEp0", + "0x0.0000005C1A78BB159Bp0", "0x0.0000005E67EEF362D6p0", "0x0.00000060B5652BB55Ep0", "0x0.0000006302DB640D33p0", "0x0.0000006550519C6A55p0", "0x0.000000679DC7D4CCC5p0", "0x0.00000069EB3E0D3482p0", "0x0.0000006C38B445A18Dp0", + "0x0.0000006E862A7E13E4p0", "0x0.00000070D3A0B68B89p0", "0x0.000000732116EF087Bp0", "0x0.000000756E8D278ABBp0", "0x0.00000077BC03601248p0", "0x0.0000007A0979989F22p0", "0x0.0000007C56EFD13149p0", "0x0.0000007EA46609C8BEp0", + "0x0.00000080F1DC426580p0", "0x0.000000833F527B078Fp0", "0x0.000000858CC8B3AEEBp0", "0x0.00000087DA3EEC5B95p0", "0x0.0000008A27B5250D8Cp0", "0x0.0000008C752B5DC4D1p0", "0x0.0000008EC2A1968162p0", "0x0.000000911017CF4341p0", + "0x0.000000935D8E080A6Dp0", "0x0.00000095AB0440D6E7p0", "0x0.00000097F87A79A8AEp0", "0x0.0000009A45F0B27FC2p0", "0x0.0000009C9366EB5C23p0", "0x0.0000009EE0DD243DD2p0", "0x0.000000A12E535D24CEp0", "0x0.000000A37BC9961117p0", + "0x0.000000A5C93FCF02ADp0", "0x0.000000A816B607F991p0", "0x0.000000AA642C40F5C2p0", "0x0.000000ACB1A279F741p0", "0x0.000000AEFF18B2FE0Cp0", "0x0.000000B14C8EEC0A25p0", "0x0.000000B39A05251B8Bp0", "0x0.000000B5E77B5E323Fp0", + "0x0.000000B834F1974E40p0", "0x0.000000BA8267D06F8Ep0", "0x0.000000BCCFDE099629p0", "0x0.000000BF1D5442C212p0", "0x0.000000C16ACA7BF348p0", "0x0.000000C3B840B529CBp0", "0x0.000000C605B6EE659Bp0", "0x0.000000C8532D27A6B9p0", + "0x0.000000CAA0A360ED24p0", "0x0.000000CCEE199A38DDp0", "0x0.000000CF3B8FD389E2p0", "0x0.000000D189060CE035p0", "0x0.000000D3D67C463BD5p0", "0x0.000000D623F27F9CC3p0", "0x0.000000D87168B902FEp0", "0x0.000000DABEDEF26E86p0", + "0x0.000000DD0C552BDF5Bp0", "0x0.000000DF59CB65557Ep0", "0x0.000000E1A7419ED0EEp0", "0x0.000000E3F4B7D851ABp0", "0x0.000000E6422E11D7B6p0", "0x0.000000E88FA44B630Dp0", "0x0.000000EADD1A84F3B2p0", "0x0.000000ED2A90BE89A5p0", + "0x0.000000EF7806F824E4p0", "0x0.000000F1C57D31C571p0", "0x0.000000F412F36B6B4Cp0", "0x0.000000F66069A51673p0", "0x0.000000F8ADDFDEC6E8p0", "0x0.000000FAFB56187CAAp0", "0x0.000000FD48CC5237B9p0", "0x0.000000FF96428BF816p0", + "0x0.00000101E3B8C5BDC0p0", "0x0.00000104312EFF88B7p0", "0x0.000001067EA53958FCp0", "0x0.00000108CC1B732E8Ep0", "0x0.0000010B1991AD096Dp0", "0x0.0000010D6707E6E999p0", "0x0.0000010FB47E20CF13p0", "0x0.0000011201F45AB9DAp0", + "0x0.000001144F6A94A9EEp0", "0x0.000001169CE0CE9F4Fp0", "0x0.00000118EA570899FEp0", "0x0.0000011B37CD4299FAp0", "0x0.0000011D85437C9F44p0", "0x0.0000011FD2B9B6A9DAp0", "0x0.00000122202FF0B9BEp0", "0x0.000001246DA62ACEEFp0" + }; + ap_ufixed<49,-23> exp_x_lsb_ind_m_1 = exp_x_lsb_ind_m_1_table[x_lsb_ind]; + const static ap_ufixed<56,-16> exp_x_msb_ind_4_m_1_table[128] = { + "0x0.0p0", "0x0.00000126BB1C64FE3Ep0", "0x0.0000024D763A1D4ECAp0", "0x0.00000374315928F1A6p0", "0x0.0000049AEC7987E6D2p0", "0x0.000005C1A79B3A2E51p0", "0x0.000006E862BE3FC825p0", "0x0.0000080F1DE298B44Dp0", + "0x0.00000935D90844F2CDp0", "0x0.00000A5C942F4483A6p0", "0x0.00000B834F579766D9p0", "0x0.00000CAA0A813D9C67p0", "0x0.00000DD0C5AC372453p0", "0x0.00000EF780D883FE9Ep0", "0x0.0000101E3C06242B48p0", "0x0.00001144F73517AA55p0", + "0x0.0000126BB2655E7BC5p0", "0x0.000013926D96F89F9Ap0", "0x0.000014B928C9E615D5p0", "0x0.000015DFE3FE26DE78p0", "0x0.000017069F33BAF985p0", "0x0.0000182D5A6AA266FCp0", "0x0.0000195415A2DD26E0p0", "0x0.00001A7AD0DC6B3932p0", + "0x0.00001BA18C174C9DF4p0", "0x0.00001CC84753815527p0", "0x0.00001DEF0291095ECCp0", "0x0.00001F15BDCFE4BAE6p0", "0x0.0000203C7910136975p0", "0x0.000021633451956A7Bp0", "0x0.00002289EF946ABDFAp0", "0x0.000023B0AAD89363F3p0", + "0x0.000024D7661E0F5C68p0", "0x0.000025FE2164DEA75Ap0", "0x0.00002724DCAD0144CCp0", "0x0.0000284B97F67734BDp0", "0x0.000029725341407730p0", "0x0.00002A990E8D5D0C27p0", "0x0.00002BBFC9DACCF3A2p0", "0x0.00002CE68529902DA4p0", + "0x0.00002E0D4079A6BA2Ep0", "0x0.00002F33FBCB109942p0", "0x0.0000305AB71DCDCAE0p0", "0x0.000031817271DE4F0Bp0", "0x0.000032A82DC74225C5p0", "0x0.000033CEE91DF94F0Dp0", "0x0.000034F5A47603CAE7p0", "0x0.0000361C5FCF619954p0", + "0x0.000037431B2A12BA54p0", "0x0.00003869D686172DEBp0", "0x0.0000399091E36EF418p0", "0x0.00003AB74D421A0CDFp0", "0x0.00003BDE08A218783Fp0", "0x0.00003D04C4036A363Cp0", "0x0.00003E2B7F660F46D5p0", "0x0.00003F523ACA07AA0Ep0", + "0x0.00004078F62F535FE7p0", "0x0.0000419FB195F26862p0", "0x0.000042C66CFDE4C380p0", "0x0.000043ED28672A7144p0", "0x0.00004513E3D1C371ADp0", "0x0.0000463A9F3DAFC4BFp0", "0x0.000047615AAAEF6A7Ap0", "0x0.0000488816198262E1p0", + "0x0.000049AED18968ADF4p0", "0x0.00004AD58CFAA24BB5p0", "0x0.00004BFC486D2F3C26p0", "0x0.00004D2303E10F7F48p0", "0x0.00004E49BF5643151Cp0", "0x0.00004F707ACCC9FDA5p0", "0x0.000050973644A438E4p0", "0x0.000051BDF1BDD1C6DAp0", + "0x0.000052E4AD3852A788p0", "0x0.0000540B68B426DAF1p0", "0x0.0000553224314E6116p0", "0x0.00005658DFAFC939F8p0", "0x0.0000577F9B2F976599p0", "0x0.000058A656B0B8E3FBp0", "0x0.000059CD12332DB51Ep0", "0x0.00005AF3CDB6F5D905p0", + "0x0.00005C1A893C114FB1p0", "0x0.00005D4144C2801924p0", "0x0.00005E68004A42355Fp0", "0x0.00005F8EBBD357A463p0", "0x0.000060B5775DC06632p0", "0x0.000061DC32E97C7ACEp0", "0x0.00006302EE768BE238p0", "0x0.00006429AA04EE9C72p0", + "0x0.000065506594A4A97Dp0", "0x0.000066772125AE095Ap0", "0x0.0000679DDCB80ABC0Cp0", "0x0.000068C4984BBAC194p0", "0x0.000069EB53E0BE19F3p0", "0x0.00006B120F7714C52Bp0", "0x0.00006C38CB0EBEC33Ep0", "0x0.00006D5F86A7BC142Cp0", + "0x0.00006E8642420CB7F8p0", "0x0.00006FACFDDDB0AEA2p0", "0x0.000070D3B97AA7F82Dp0", "0x0.000071FA7518F2949Ap0", "0x0.0000732130B89083EBp0", "0x0.00007447EC5981C621p0", "0x0.0000756EA7FBC65B3Dp0", "0x0.00007695639F5E4341p0", + "0x0.000077BC1F44497E2Fp0", "0x0.000078E2DAEA880C08p0", "0x0.00007A09969219ECCEp0", "0x0.00007B30523AFF2082p0", "0x0.00007C570DE537A726p0", "0x0.00007D7DC990C380BBp0", "0x0.00007EA4853DA2AD43p0", "0x0.00007FCB40EBD52CBFp0", + "0x0.000080F1FC9B5AFF31p0", "0x0.00008218B84C34249Ap0", "0x0.0000833F73FE609CFCp0", "0x0.000084662FB1E06859p0", "0x0.0000858CEB66B386B2p0", "0x0.000086B3A71CD9F808p0", "0x0.000087DA62D453BC5Dp0", "0x0.000089011E8D20D3B2p0", + "0x0.00008A27DA47413E0Ap0", "0x0.00008B4E9602B4FB65p0", "0x0.00008C7551BF7C0BC5p0", "0x0.00008D9C0D7D966F2Cp0", "0x0.00008EC2C93D04259Bp0", "0x0.00008FE984FDC52F14p0", "0x0.0000911040BFD98B98p0", "0x0.00009236FC83413B29p0" + }; + ap_ufixed<56,-16> exp_x_msb_ind_4_m_1 = exp_x_msb_ind_4_m_1_table[x_msb_ind_4]; + ap_ufixed<105,-39> f_x_msb_ind_4_lsb_ind = exp_x_msb_ind_4_m_1 * exp_x_lsb_ind_m_1; + ap_ufixed<54,-16> exp_x_msb_ind_4_lsb_ind_m_1 = f_x_msb_ind_4_lsb_ind + exp_x_msb_ind_4_m_1 + exp_x_lsb_ind_m_1; + const static ap_ufixed<61,-9> exp_x_msb_ind_3_m_1_table[128] = { + "0x0.0p0", "0x0.0000935DB847FC5AA8p0", "0x0.000126BBC564BCA768p0", "0x0.0001BA1A275671BB78p0", "0x0.00024D78DE1D4C6C2Cp0", "0x0.0002E0D7E9B97D8EFCp0", "0x0.000374374A2B35F970p0", "0x0.00040796FF72A6813Cp0", + "0x0.00049AF7098FFFFC24p0", "0x0.00052E57688373400Cp0", "0x0.0005C1B81C4D3122F0p0", "0x0.0006551924ED6A7AF0p0", "0x0.0006E87A8264501E44p0", "0x0.00077BDC34B212E340p0", "0x0.00080F3E3BD6E3A04Cp0", "0x0.0008A2A097D2F32C00p0", + "0x0.0009360348A6725D00p0", "0x0.0009C9664E51920A0Cp0", "0x0.000A5CC9A8D4830A0Cp0", "0x0.000AF02D582F7633F4p0", "0x0.000B83915C629C5EE4p0", "0x0.000C16F5B56E266210p0", "0x0.000CAA5A63524514C8p0", "0x0.000D3DBF660F294E74p0", + "0x0.000DD124BDA503E6A8p0", "0x0.000E648A6A1405B500p0", "0x0.000EF7F06B5C5F9140p0", "0x0.000F8B56C17E425348p0", "0x0.00101EBD6C79DED310p0", "0x0.0010B2246C4F65E8ACp0", "0x0.0011458BC0FF086C50p0", "0x0.0011D8F36A88F7364Cp0", + "0x0.00126C5B68ED631F08p0", "0x0.0012FFC3BC2C7CFF0Cp0", "0x0.0013932C644675AEF4p0", "0x0.00142695613B7E0788p0", "0x0.0014B9FEB30BC6E19Cp0", "0x0.00154D6859B7811628p0", "0x0.0015E0D2553EDD7E44p0", "0x0.0016743CA5A20CF314p0", + "0x0.001707A74AE1404DF0p0", "0x0.00179B1244FCA86834p0", "0x0.00182E7D93F4761B6Cp0", "0x0.0018C1E937C8DA4134p0", "0x0.00195555307A05B348p0", "0x0.0019E8C17E08294B7Cp0", "0x0.001A7C2E207375E3C8p0", "0x0.001B0F9B17BC1C563Cp0", + "0x0.001BA30863E24D7D04p0", "0x0.001C367604E63A3268p0", "0x0.001CC9E3FAC81350CCp0", "0x0.001D5D52458809B2ACp0", "0x0.001DF0C0E5264E32ACp0", "0x0.001E842FD9A311AB84p0", "0x0.001F179F22FE84F804p0", "0x0.001FAB0EC138D8F320p0", + "0x0.00203E7EB4523E77E4p0", "0x0.0020D1EEFC4AE66178p0", "0x0.0021655F9923018B24p0", "0x0.0021F8D08ADAC0D048p0", "0x0.00228C41D172550C64p0", "0x0.00231FB36CE9EF1B0Cp0", "0x0.0023B3255D41BFD7FCp0", "0x0.00244697A279F81F04p0", + "0x0.0024DA0A3C92C8CC10p0", "0x0.00256D7D2B8C62BB2Cp0", "0x0.002600F06F66F6C880p0", "0x0.002694640822B5D04Cp0", "0x0.002727D7F5BFD0AEECp0", "0x0.0027BB4C383E7840E0p0", "0x0.00284EC0CF9EDD62C0p0", "0x0.0028E235BBE130F138p0", + "0x0.002975AAFD05A3C918p0", "0x0.002A0920930C66C754p0", "0x0.002A9C967DF5AAC8E8p0", "0x0.002B300CBDC1A0AB00p0", "0x0.002BC3835270794AD4p0", "0x0.002C56FA3C026585C8p0", "0x0.002CEA717A77963950p0", "0x0.002D7DE90DD03C4300p0", + "0x0.002E1160F60C888084p0", "0x0.002EA4D9332CABCFB0p0", "0x0.002F3851C530D70E68p0", "0x0.002FCBCAAC193B1AB0p0", "0x0.00305F43E7E608D2ACp0", "0x0.0030F2BD7897711494p0", "0x0.003186375E2DA4BEC4p0", "0x0.003219B198A8D4AFB0p0", + "0x0.0032AD2C280931C5ECp0", "0x0.003340A70C4EECE020p0", "0x0.0033D422457A36DD1Cp0", "0x0.0034679DD38B409BBCp0", "0x0.0034FB19B6823AFB0Cp0", "0x0.00358E95EE5F56DA24p0", "0x0.003622127B22C51840p0", "0x0.0036B58F5CCCB694B4p0", + "0x0.0037490C935D5C2EF8p0", "0x0.0037DC8A1ED4E6C690p0", "0x0.00387007FF33873B30p0", "0x0.0039038634796E6C9Cp0", "0x0.00399704BEA6CD3AB4p0", "0x0.003A2A839DBBD48578p0", "0x0.003ABE02D1B8B52D04p0", "0x0.003B51825A9DA01190p0", + "0x0.003BE502386AC6136Cp0", "0x0.003C78826B2058130Cp0", "0x0.003D0C02F2BE86F0F8p0", "0x0.003D9F83CF45838DD8p0", "0x0.003E330500B57ECA74p0", "0x0.003EC686870EA987A4p0", "0x0.003F5A08625134A66Cp0", "0x0.003FED8A927D5107E4p0", + "0x0.0040810D17932F8D38p0", "0x0.0041148FF1930117C0p0", "0x0.0041A813207CF688E8p0", "0x0.00423B96A45140C234p0", "0x0.0042CF1A7D1010A550p0", "0x0.0043629EAAB99713F8p0", "0x0.0043F6232D4E04F00Cp0", "0x0.004489A804CD8B1B80p0", + "0x0.00451D2D31385A7870p0", "0x0.0045B0B2B28EA3E90Cp0", "0x0.0046443888D0984FA0p0", "0x0.0046D7BEB3FE688E98p0", "0x0.00476B453418458878p0", "0x0.0047FECC091E601FE4p0", "0x0.004892533310E93798p0", "0x0.004925DAB1F011B270p0" + }; + ap_ufixed<61,-9> exp_x_msb_ind_3_m_1 = exp_x_msb_ind_3_m_1_table[x_msb_ind_3]; + ap_ufixed<115,-25> f_x_msb_ind_3_msb_ind_4_lsb_ind = exp_x_msb_ind_3_m_1 * exp_x_msb_ind_4_lsb_ind_m_1; + ap_ufixed<59,-9> exp_x_msb_ind_3_msb_ind_4_lsb_ind_m_1 = f_x_msb_ind_3_msb_ind_4_lsb_ind + exp_x_msb_ind_3_m_1 + exp_x_msb_ind_4_lsb_ind_m_1; + const static ap_ufixed<67,-1> exp_x_msb_ind_2_m_1_table[256] = { + "0x0.0p0", "0x0.0049B96285BC0A736p0", "0x0.009388004BE7E5593p0", "0x0.00DD6BDF6FC8EDEABp0", "0x0.01276506106747AA4p0", "0x0.0171737A4E8E5E346p0", "0x0.01BB97424CCD67360p0", "0x0.0205D0642F77E4885p0", + "0x.02501EE61CA62671Ep0", "0x0.029A82CE3C35CE0DBp0", "0x0.02E4FC22B7CA4FD73p0", "0x0.032F8AE9BACD765C6p0", "0x0.037A2F29726FE5154p0", "0x0.03C4E8E80DA99B612p0", "0x0.040FB82BBD3A77A9Ap0", "0x0.045A9CFAB3AABAAB4p0", + "0x.04A5975B254B8AE40p0", "0x0.04F0A75348377827Fp0", "0x0.053BCCE95452FF5B2p0", "0x0.05870823834D0E520p0", "0x0.05D25908109F87D7Ap0", "0x0.061DBF9D398FC7D9Dp0", "0x0.06693BE93D2F27BB7p0", "0x0.06B4CDF25C5B82CCDp0", + "0x.070075BED9BFBAEA4p0", "0x0.074C3354F9D43D40Ap0", "0x0.079806BB02DF8738Ap0", "0x0.07E3EFF73CF6AB87Ap0", "0x0.082FEF0FF1FDD767Bp0", "0x0.087C040B6DA8D7F50p0", "0x0.08C82EEFFD7B9FB28p0", "0x0.09146FC3F0CACC34Cp0", + "0x.0960C68D98BC2BF2Ep0", "0x0.09AD33534847443EAp0", "0x0.09F9B61B5435D762Cp0", "0x0.0A464EEC13246AE7Ep0", "0x0.0A92FDCBDD82CE006p0", "0x0.0ADFC2C10D94A01AAp0", "0x0.0B2C9DD1FF71D79A4p0", "0x0.0B798F05110748B7Fp0", + "0x.0BC69660A2172C887p0", "0x0.0C13B3EB1439A82A1p0", "0x0.0C60E7AACADD54194p0", "0x0.0CAE31A62B47C3AC7p0", "0x0.0CFB91E39C960CB66p0", "0x0.0D49086987BD4F4FEp0", "0x0.0D96953E578B3DC88p0", "0x0.0DE4386878A6A4BEAp0", + "0x.0E31F1EE598FF35E7p0", "0x0.0E7FC1D66AA1C3C87p0", "0x0.0ECDA8271E11639EAp0", "0x0.0F1BA4E6E7EF5CBA0p0", "0x0.0F69B81C3E27FE069p0", "0x0.0FB7E1CD9883E4871p0", "0x0.1006220170A884803p0", "0x0.105478BE4218B2CB7p0", + "0x.10A2E60A8A352E513p0", "0x0.10F169ECC83D29AA6p0", "0x0.1140046B7D4ED4EA6p0", "0x0.118EB58D2C67E78FCp0", "0x0.11DD7D585A662A9D7p0", "0x0.122C5BD38E0802DB1p0", "0x0.127B51054FECFB3DBp0", "0x0.12CA5CF42A964F780p0", + "0x.13197FA6AA6776B28p0", "0x0.1368B9235DA6AE6BAp0", "0x0.13B80970D47D85804p0", "0x0.14077095A0F9675B6p0", "0x0.1456EE98570C274EEp0", "0x0.14A6837F8C8C8C138p0", "0x0.14F62F51D936DB71Dp0", "0x0.1545F215D6AD6612Fp0", + "0x.1595CBD2207913796p0", "0x0.15E5BC8D5409EE22Bp0", "0x0.1635C44E10B7AFD11p0", "0x0.1685E31AF7C24DFD9p0", "0x0.16D618FAAC528672Ap0", "0x0.172665F3D37A6C0F3p0", "0x0.1776CA0D1435F3B24p0", "0x0.17C7454D176B814F4p0", + "0x.1817D7BA87EC752AAp0", "0x0.1868815C1275B93F8p0", "0x0.18B9423865B04ECDCp0", "0x0.190A1A563231DC114p0", "0x0.195B09BC2A7D3A217p0", "0x0.19AC1071030302FA1p0", "0x0.19FD2E7B72221FACBp0", "0x0.1A4E63E2302856BB6p0", + "0x.1A9FB0ABF752DA9BEp0", "0x0.1AF114DF83CED8647p0", "0x0.1B42908393BA06A18p0", "0x0.1B94239EE72334542p0", "0x0.1BE5CE38400AD81A5p0", "0x0.1C37905662639F7FEp0", "0x0.1C896A001412FE793p0", "0x0.1CDB5B3C1CF1BF06Bp0", + "0x.1D2D641146CC91022p0", "0x0.1D7F84865D649A153p0", "0x0.1DD1BCA22E7005D96p0", "0x0.1E240C6B899A96219p0", "0x0.1E7673E94086336D2p0", "0x0.1EC8F32226CB7D849p0", "0x0.1F1B8A1D11FA5C3FAp0", "0x0.1F6E38E0D99A9075Cp0", + "0x.1FC0FF74572C45177p0", "0x0.2013DDDE6628A071Cp0", "0x0.2066D425E402559C1p0", "0x0.20B9E251B026360EFp0", "0x0.210D0868ABFBC3658p0", "0x0.21604671BAE5C1485p0", "0x0.21B39C73C242C7830p0", "0x0.22070A75A96DD4433p0", + "0x.225A907E59BEDE81Cp0", "0x0.22AE2E94BE8B6896Ap0", "0x0.2301E4BFC52712F67p0", "0x0.2355B3065CE42F1A7p0", "0x0.23A9996F77145292Cp0", "0x0.23FD98020708EA434p0", "0x0.2451AEC50213CDCA7p0", "0x0.24A5DDBF5F87D312Ep0", + "0x.24FA24F818B9620F7p0", "0x0.254E847628FF08A1Bp0", "0x0.25A2FC408DB20EAB1p0", "0x0.25F78C5E462F0A48Bp0", "0x0.264C34D653D67439Bp0", "0x0.26A0F5AFBA0D3C70Bp0", "0x0.26F5CEF17E3D5ECF9p0", "0x0.274AC0A2A7D6780E4p0", + "0x.279FCACA404E5ACCBp0", "0x0.27F4ED6F5321A4CF5p0", "0x0.284A2898EDD45466Ap0", "0x0.289F7C4E1FF25E01Ep0", "0x0.28F4E895FB1041ECEp0", "0x0.294A6D7792CBA238Bp0", "0x0.29A00AF9FCCBD8CFCp0", "0x0.29F5C12450C28DB50p0", + "0x.2A4B8FFDA86C4D6E8p0", "0x0.2AA1778D1F911F9B4p0", "0x0.2AF777D9D4051DB44p0", "0x0.2B4D90EAE5A909F93p0", "0x0.2BA3C2C7766AE6888p0", "0x0.2BFA0D76AA468CA2Fp0", "0x0.2C5070FFA746441ACp0", "0x0.2CA6ED6995835AEE4p0", + "0x.2CFD82BB9F26BD0EAp0", "0x0.2D5430FCF0698C518p0", "0x0.2DAAF834B795B88F5p0", "0x0.2E01D86A250697ECCp0", "0x0.2E58D1A46B297F504p0", "0x0.2EAFE3EABE7E5B03Bp0", "0x0.2F070F44559847819p0", "0x0.2F5E53B8691E2A6E5p0", + "0x.2FB5B14E33CB4BBE3p0", "0x0.300D280CF26FEF065p0", "0x0.3064B7FBE3F1ECFAEp0", "0x0.30BC6122494D4D18Bp0", "0x0.311423876594DF7B7p0", "0x0.316BFF327DF2D6E06p0", "0x0.31C3F42AD9A962D4Ep0", "0x0.321C0277C2134A11Dp0", + "0x.32742A2082A485035p0", "0x0.32CC6B2C68EAD87CAp0", "0x0.3324C5A2C48E70995p0", "0x0.337D398AE7527BCA2p0", "0x0.33D5C6EC2515C60F8p0", "0x0.342E6DCDD3D3545FDp0", "0x0.34872E374BA3003AFp0", "0x0.34E0082FE6BA136ADp0", + "0x.3538FBBF016BE3F00p0", "0x0.359208EBFA2A701C4p0", "0x0.35EB2FBE3186FAD90p0", "0x0.3644703D0A32A81BDp0", "0x0.369DCA6FE8FF1986Fp0", "0x0.36F73E5E34DF0B37Bp0", "0x0.3750CC0F56E6F0C1Ep0", "0x0.37AA738ABA4D92580p0", + "0x.380434D7CC6CAA213p0", "0x0.385E0FFDFCC181BC3p0", "0x0.38B80504BCED8FF00p0", "0x0.391213F380B716895p0", "0x0.396C3CD1BE09C0665p0", "0x0.39C67FA6ECF73FAF1p0", "0x0.3A20DC7A87B7EC3C5p0", "0x0.3A7B53540AAB622AFp0", + "0x.3AD5E43AF459209E5p0", "0x0.3B308F36C57128AF1p0", "0x0.3B8B544F00CC9C88Ap0", "0x0.3BE6338B2B6E5EB41p0", "0x0.3C412CF2CC83B1910p0", "0x0.3C9C408D6D64D6FC5p0", "0x0.3CF76E629995B0251p0", "0x0.3D52B679DEC65D8F1p0", + "0x.3DAE18DACCD3DF440p0", "0x0.3E09958CF5C8B5321p0", "0x0.3E652C97EDDD7FB9Bp0", "0x0.3EC0DE034B79A0686p0", "0x0.3F1CA9D6A733DAE2Ep0", "0x0.3F7890199BD2F5FCFp0", "0x0.3FD490D3C64E5D001p0", "0x0.4030AC0CC5CEC11FFp0", + "0x.408CE1CC3BAEBB1E6p0", "0x0.40E93219CB7B6D1CCp0", "0x0.41459CFD1AF5249CFp0", "0x0.41A2227DD20FFCB02p0", "0x0.41FEC2A39AF480553p0", "0x0.425B7D7622004D04Dp0", "0x0.42B852FD15C6B56D6p0", "0x0.431543402711645D2p0", + "0x.43724E4708E0FFDB7p0", "0x0.43CF7419706DCC711p0", "0x0.442CB4BF1528509F4p0", "0x0.448A103FB0B9F8866p0", "0x0.44E786A2FF05B9BB0p0", "0x0.454517F0BE28B74ACp0", "0x0.45A2C430AE7AE5F03p0", "0x0.46008B6A928FB075Ep0", + "0x.465E6DA62F369C48Ep0", "0x0.46BC6AEB4B7BEE3AAp0", "0x0.471A8341B0A94F727p0", "0x0.4778B6B12A46728E1p0", "0x0.47D705418619B8F25p0", "0x0.48356EFA9428D84B1p0", "0x0.4893F3E426B9803ABp0", "0x0.48F2940612520039Ap0", + "0x.49514F682DB9EDA59p0", "0x0.49B0261251FACA004p0", "0x0.4A0F180C5A60A95E7p0", "0x0.4A6E255E247AD906Ap0", "0x0.4ACD4E0F901C863FEp0", "0x0.4B2C92287F5D65507p0", "0x0.4B8BF1B0D69A58AD0p0", "0x0.4BEB6CB07C7618574p0", + "0x.4C4B032F59D9D96D8p0", "0x0.4CAAB53559F5F5E9Fp0", "0x0.4D0A82CA6A429492Bp0", "0x0.4D6A6BF67A8051199p0", "0x0.4DCA70C17CB8E46D2p0", "0x0.4E2A9133653FCD395p0", "0x0.4E8ACD542AB2F8995p0", "0x0.4EEB252BC5FB6AF99p0", + "0x.4F4B98C2324DE92ACp0", "0x0.4FAC281F6D2BA1A4Fp0", "0x0.500CD34B7662D5FC3p0", "0x0.506D9A4E500F84855p0", "0x0.50CE7D2FFE9C122BEp0", "0x0.512F7BF888C1F4791p0", "0x0.519096AFF78A5BCB5p0", "0x0.51F1CD5E564EDDBF2p0", + "0x.5253200BB2BA1FC90p0", "0x0.52B48EC01CC882005p0", "0x0.53161983A6C8CA1BBp0", "0x0.5377C05E655CCE9E1p0", "0x0.53D983586F7A2235Ep0", "0x0.543B6279DE6ABF4CAp0", "0x0.549D5DCACDCDB3C8Dp0", "0x0.54FF75535B97CD007p0" + }; + ap_ufixed<67,-1> exp_x_msb_ind_2_m_1 = exp_x_msb_ind_2_m_1_table[x_msb_ind_2]; + ap_ufixed<126,-10> f_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind = exp_x_msb_ind_2_m_1 * exp_x_msb_ind_3_msb_ind_4_lsb_ind_m_1; + ap_ufixed<65,-1> exp_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind_m_1 = f_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind + exp_x_msb_ind_2_m_1 + exp_x_msb_ind_3_msb_ind_4_lsb_ind_m_1; + const static ap_ufixed<66,32> exp_x_msb_ind_1_table[256] = { + "0x1.000000000p0", "0x1.5561A91BCp0", "0x1.C73D51C54p0", "0x2.5F1258E08p0", "0x3.298B075B4p0", "0x4.378B053ECp0", "0x5.9F9802C8Cp0", "0x7.7FBAAB458p0", + "0xA.000000000p0", "0xD.55D09B148p0", "0x11.C86531B4Cp0", "0x17.B6B778C40p0", "0x1F.9F6E49910p0", "0x2A.2B6E34724p0", "0x38.3BF01BD84p0", "0x4A.FD4AB0B64p0", + "0x64.000000000p0", "0x85.5A260ECDCp0", "0xB1.D3F3F10ECp0", "0xED.232AB7A90p0", "0x13C.3A4EDFA98p0", "0x1A5.B24E0C774p0", "0x232.57611671Cp0", "0x2ED.E4EAE71ECp0", + "0x3E8.000000000p0", "0x535.857C94088p0", "0x6F2.47876A934p0", "0x943.5FAB2C9B4p0", "0xC5A.4714BC9E8p0", "0x1078.F70C7CA94p0", "0x15F7.69CAE0728p0", "0x1D4A.F12D0732Cp0", + "0x2710.000000000p0", "0x3417.36DDC8558p0", "0x4576.CB4A29C18p0", "0x5CA1.BCAFBE0F8p0", "0x7B86.C6CF5E320p0", "0xA4B9.A67CDE9B4p0", "0xDBAA.21ECC4790p0", "0x124ED.6BC247FB8p0", + "0x186A0.000000000p0", "0x208E8.24A9D3580p0", "0x2B6A3.F0E5A18ECp0", "0x39E51.5EDD6C9A0p0", "0x4D343.C419ADF30p0", "0x66F40.80E0B210Cp0", "0x894A5.533FACBA4p0", "0xB7146.3596CFD3Cp0", + "0xF4240.000000000p0", "0x145911.6EA2416F4p0", "0x1B2267.68F84F938p0", "0x242F2D.B4A63E038p0", "0x3040A5.A900CB7F0p0", "0x405885.08C6F4A64p0", "0x55CE75.407CBF46Cp0", "0x726CBE.17E41E45Cp0", + "0x989680.000000000p0", "0xCB7AAE.52568E584p0", "0x10F580A.19B31BC34p0", "0x169D7C9.0E7E6C220p0", "0x1E28678.9A07F2F6Cp0", "0x2837532.57C58E7F0p0", "0x35A1094.84DF78C38p0", "0x4783F6C.EEE92EB90p0", + "0x5F5E100.000000000p0", "0x7F2CACF.37618F720p0", "0xA997065.00FF159FCp0", "0xE226DDA.90F039530p0", "0x12D940B6.044F7DA48p0", "0x192293F7.6DB790F54p0", "0x2184A5CD.30BAB7A30p0", "0x2CB27A41.551BD339Cp0", + "0x3B9ACA00.000000000p0", "0x4F7BEC18.29CF9A750p0", "0x69FE63F2.09F6D83E4p0", "0x8D584A89.A9623D3E0p0", "0xBC7C871C.2B1AE86C4p0", "0xFB59C7AA.492BA9948p0", "0x14F2E7A03.E74B2C5F4p0", "0x1BEF8C68D.531640404p0", + "0x2540BE400.000000000p0", "0x31AD738F1.A21C08914p0", "0x423EFE774.63A4726F4p0", "0x58572E960.9DD6646C4p0", "0x75CDD4719.AF0D143A8p0", "0x9D181CCA6.DBB49FCD0p0", "0xD17D0C427.08EFBBB80p0", "0x1175B7C185.3EDE8282Cp0", + "0x174876E800.000000000p0", "0x1F0C683970.551855AD0p0", "0x29675F0A8B.E46C78594p0", "0x37367D1DC6.2A5FEC3A0p0", "0x49A0A4C700.D682CA49Cp0", "0x622F11FE84.950E3E020p0", "0x82EE27A986.595D55300p0", "0xAE992D8F34.74B1191B8p0", + "0xE8D4A51000.000000000p0", "0x1367C123E63.52F358C14p0", "0x19E09B66976.EC3CB37C0p0", "0x22820E329BD.A7BF3A448p0", "0x2E0466FC608.611BE6E18p0", "0x3D5D6B3F12D.D28E6C148p0", "0x51D4D8C9F3F.7DA553E00p0", "0x6D1FBC7980C.8EEAFB130p0", + "0x9184E72A000.000000000p0", "0xC20D8B66FE1.3D81778C0p0", "0x102C61201EA5.3A5F02D70p0", "0x159148DFA168.8D7846AE0p0", "0x1CC2C05DBC53.CB1704CFCp0", "0x265A63076BCA.399038CD8p0", "0x3325077E387A.E87546BF0p0", "0x4433D5CBF07D.952DCEBE8p0", + "0x5AF3107A4000.000000000p0", "0x794877205ECC.670EAB770p0", "0xA1BBCB413274.47B61C654p0", "0xD7ACD8BC4E15.86B2C2CC0p0", "0x11F9B83A95B45.EEE6301D8p0", "0x17F87DE4A35E6.3FA238074p0", "0x1FF724AEE34CD.1494C3758p0", "0x2AA0659F764E7.D3CA13714p0", + "0x38D7EA4C68000.000000000p0", "0x4BCD4A743B3FC.0692B2A70p0", "0x65155F08BF88A.CD1D1BF4Cp0", "0x86CC0775B0CD7.42FB9BF90p0", "0xB3C13249D90BB.54FDE1260p0", "0xEFB4EAEE61AFE.7C563047Cp0", "0x13FA76ED4E1002.CDCFA296Cp0", "0x1AA43F83A9F10E.45E4C26DCp0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", + "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x0.0p0", "0x.000000004p0", "0x.000000004p0", "0x.000000004p0", "0x.000000004p0", + "0x0.000000008p0", "0x.000000008p0", "0x.00000000Cp0", "0x.000000010p0", "0x.000000014p0", "0x.00000001Cp0", "0x.000000028p0", "0x.000000034p0", + "0x0.000000044p0", "0x.00000005Cp0", "0x.00000007Cp0", "0x.0000000A4p0", "0x.0000000D8p0", "0x.000000120p0", "0x.000000184p0", "0x.000000204p0", + "0x0.0000002B0p0", "0x.000000394p0", "0x.0000004C8p0", "0x.00000065Cp0", "0x.00000087Cp0", "0x.000000B50p0", "0x.000000F18p0", "0x.000001420p0", + "0x0.000001AD8p0", "0x.0000023CCp0", "0x.000002FBCp0", "0x.000003FA8p0", "0x.0000054E4p0", "0x.000007134p0", "0x.0000096F4p0", "0x.00000C94Cp0", + "0x0.000010C70p0", "0x.0000165F8p0", "0x.00001DD5Cp0", "0x.000027C90p0", "0x.0000350E0p0", "0x.000046BFCp0", "0x.00005E588p0", "0x.00007DCFCp0", + "0x0.0000A7C5Cp0", "0x.0000DFBA4p0", "0x.00012A588p0", "0x.00018DD9Cp0", "0x.0002128ACp0", "0x.0002C37D4p0", "0x.0003AF73Cp0", "0x.0004EA1D0p0", + "0x0.00068DB8Cp0", "0x.0008BD470p0", "0x.000BA7754p0", "0x.000F8A814p0", "0x.0014B96C0p0", "0x.001BA2E4Cp0", "0x.0024DA858p0", "0x.003125230p0", + "0x0.004189374p0", "0x.005764C70p0", "0x.00748A940p0", "0x.009B690C8p0", "0x.00CF3E374p0", "0x.01145CEF0p0", "0x.017089380p0", "0x.01EB735F0p0", + "0x0.028F5C290p0", "0x.0369EFC58p0", "0x.048D69C70p0", "0x.06121A7D0p0", "0x.08186E274p0", "0x.0ACBA1550p0", "0x.0E655C300p0", "0x.133281B68p0", + "0x0.199999998p0", "0x.22235DB60p0", "0x.2D8621C70p0", "0x.3CB508E34p0", "0x.50F44D894p0", "0x.6BF44D530p0", "0x.8FF599E10p0", "0x.BFF911208p0" + }; + ap_ufixed<66,32> exp_x_msb_ind_1 = exp_x_msb_ind_1_table[x_msb_ind_1]; + ap_ufixed<131,31> f_x_msb_ind_1_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind = exp_x_msb_ind_1 * exp_x_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind_m_1; + y = f_x_msb_ind_1_msb_ind_2_msb_ind_3_msb_ind_4_lsb_ind + exp_x_msb_ind_1; + } + if(I_<33) { + bool overf = 0; + for(int j = 63; j >= 31 + I_; j--) { + #pragma HLS unroll + if(y[j]) { + overf = 1; + } + } + if(overf) { + for(int j = 63; j >= 31 + I_; j--) { + #pragma HLS unroll + y[j] = 0; + } + for(int j = 30 + I_; j >= 0; j--) { + #pragma HLS unroll + y[j] = 1; + } + } + } + r = y; + } + return r; +} + +template +ap_ufixed exp10(ap_ufixed x) { + ap_fixed xf = x; + return exp10(xf); +} + +template +ap_int exp10(ap_int x) { + ap_fixed xf = x; + return exp10(xf); +} + +template +ap_uint exp10(ap_uint x) { + ap_fixed xf = x; + return exp10(xf); +} + +} +#endif + + diff --git a/vitis/v2021_2/hls_fft.h b/vitis/v2021_2/hls_fft.h new file mode 100755 index 00000000..3ac41593 --- /dev/null +++ b/vitis/v2021_2/hls_fft.h @@ -0,0 +1,916 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_FFT_H +#define X_HLS_FFT_H + +/* + * This file contains a C++ model of hls::fft. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + + +#include "ap_int.h" +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#include +#include "hls_stream.h" +#include "fft/xfft_v9_1_bitacc_cmodel.h" +#endif + +namespace hls { + +#ifdef AESL_SYN +#include "etc/autopilot_ssdm_op.h" +#endif + + namespace ip_fft { + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + + static const char* fftErrChkHead = "ERROR:hls::fft "; + + enum ordering {bit_reversed_order = 0, natural_order}; + enum scaling {scaled = 0, unscaled, block_floating_point}; + enum arch { + radix_4_burst_io = 1, radix_2_burst_io, + pipelined_streaming_io, radix_2_lite_burst_io + }; + enum rounding {truncation = 0, convergent_rounding}; + enum mem { block_ram = 0, distributed_ram }; + enum opt { + use_luts = 0, use_mults_resources, + use_mults_performance, use_xtremedsp_slices + }; + enum type { fixed_point = 0, floating_point }; + static const char* fft_data_format_str[] = {"fixed_point", "floating_point"}; + + struct params_t + { + static const unsigned input_width = 16; + static const unsigned output_width = 16; + static const unsigned status_width = 8; + static const unsigned config_width = 16; + static const unsigned max_nfft = 10; + + static const bool has_nfft = false; + static const unsigned channels = 1; + static const unsigned arch_opt = pipelined_streaming_io; + static const unsigned phase_factor_width = 16; + static const unsigned ordering_opt = bit_reversed_order; + static const bool ovflo = true; + static const unsigned scaling_opt = scaled; + static const unsigned rounding_opt = truncation; + static const unsigned mem_data = block_ram; + static const unsigned mem_phase_factors = block_ram; + static const unsigned mem_reorder = block_ram; + static const unsigned stages_block_ram = (max_nfft < 10) ? 0 : (max_nfft - 9); + static const bool mem_hybrid = false; + static const unsigned complex_mult_type = use_mults_resources; + static const unsigned butterfly_type = use_luts; + + //not supported params: + static const bool xk_index = false; + static const bool cyclic_prefix_insertion = false; + }; + + template + struct config_t + { + config_t() { + + } + + ap_uint data; + // Check CONFIG_T::config_width + INLINE void checkBitWidth(ip_fft::type data_type = ip_fft::fixed_point) + { +#ifndef AESL_SYN + const unsigned max_nfft = CONFIG_T::max_nfft; + const unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + const unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + const unsigned ch_bits = CONFIG_T::channels; + const unsigned arch = CONFIG_T::arch_opt; + const unsigned tmp_bits = (arch == unsigned(ip_fft::pipelined_streaming_io) || arch == unsigned(ip_fft::radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + //Temporarily set floating point type to always generate scaling due to bugs in FFT IP + const bool need_scaling = (data_type == ip_fft::floating_point) ? true : (CONFIG_T::scaling_opt == unsigned(ip_fft::scaled)); + const unsigned sch_bits = need_scaling ? tmp_bits : 0; + const unsigned config_bits = (sch_bits + ch_bits) * CONFIG_T::channels + cp_len_bits + nfft_bits; + const unsigned config_width = ((config_bits + 7) >> 3) << 3; // padding + if (CONFIG_T::config_width != config_width) + { + std::cerr << ip_fft::fftErrChkHead << "Config channel width = " << (int)CONFIG_T::config_width + << " is illegal." << std::endl; + std::cerr << "Correct width is " << config_width << ". Please refer to FFT IP in Vivado GUI for details" << std::endl; + exit(1); + } +#endif + } + + + INLINE void checkNfft(bool has_nfft) + { +#ifndef AESL_SYN + if (has_nfft == 0) + { + std::cerr << fftErrChkHead << "FFT_HAS_NFFT = false." + << " It's invalid to access NFFT field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void checkCpLen(bool cp_len_enable) + { +#ifndef AESL_SYN + if (cp_len_enable == 0) + { + std::cerr << fftErrChkHead << "FFT_CYCLIC_PREFIX_INSERTION = false." + << " It's invalid to access cp_len field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void checkSch(unsigned scaling_opt) + { +#ifndef AESL_SYN + if (scaling_opt != unsigned(scaled)) + { + std::cerr << fftErrChkHead << "FFT_SCALING != scaled." + << " It's invalid to access scaling_sch field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void setNfft(unsigned nfft) + { + //checkBitWidth(); + checkNfft(CONFIG_T::has_nfft); + data.range(7, 0) = nfft; + } + INLINE unsigned getNfft() + { + //checkBitWidth(); + checkNfft(CONFIG_T::has_nfft); + return data.range(7, 0); + } + INLINE unsigned getNfft() const + { + //checkBitWidth(); + checkNfft(CONFIG_T::has_nfft); + return data.range(7, 0); + } + + INLINE void setCpLen(unsigned cp_len) + { + //checkBitWidth(); + checkCpLen(CONFIG_T::cyclic_prefix_insertion); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + data.range(cp_len_bits+nfft_bits-1, nfft_bits) = cp_len; + } + INLINE unsigned getCpLen() + { + //checkBitWidth(); + checkCpLen(CONFIG_T::cyclic_prefix_insertion); + unsigned ret = 0; + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + ret = data.range(cp_len_bits+nfft_bits-1, nfft_bits); + return 0; + } + INLINE unsigned getCpLen() const + { + //checkBitWidth(); + checkCpLen(CONFIG_T::cyclic_prefix_insertion); + unsigned ret = 0; + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + ret = data.range(cp_len_bits+nfft_bits-1, nfft_bits); + return 0; + } + + INLINE void setDir(bool dir, unsigned ch = 0) + { + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + data.range(ch_bits*(ch+1)+ch_lo-1, ch_bits*ch+ch_lo) = dir; + } + INLINE unsigned getDir(unsigned ch = 0) + { + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + return data.range(ch_bits*(ch+1)+ch_lo-1, ch_bits*ch+ch_lo); + } + INLINE unsigned getDir(unsigned ch = 0) const + { + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + return data.range(ch_bits*(ch+1)+ch_lo-1, ch_bits*ch+ch_lo); + } + + INLINE void setSch(unsigned sch, unsigned ch = 0) + { + //checkBitWidth(); + checkSch(CONFIG_T::scaling_opt); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + unsigned arch = CONFIG_T::arch_opt; + unsigned tmp_bits = (arch == unsigned(pipelined_streaming_io) || arch == unsigned(radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + unsigned sch_bits = (CONFIG_T::scaling_opt == unsigned(scaled)) ? tmp_bits : 0; + unsigned sch_lo = ch_lo + CONFIG_T::channels * ch_bits; + data.range(sch_bits*(ch+1)+sch_lo-1, sch_bits*ch+sch_lo) = sch; + } + INLINE unsigned getSch(unsigned ch = 0) + { + //checkBitWidth(); + checkSch(CONFIG_T::scaling_opt); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + unsigned arch = CONFIG_T::arch_opt; + unsigned tmp_bits = (arch == unsigned(pipelined_streaming_io) || arch == unsigned(radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + unsigned sch_bits = (CONFIG_T::scaling_opt == unsigned(scaled)) ? tmp_bits : 0; + unsigned sch_lo = ch_lo + CONFIG_T::channels * ch_bits; + return data.range(sch_bits*(ch+1)+sch_lo-1, sch_bits*ch+sch_lo); + } + INLINE unsigned getSch(unsigned ch = 0) const + { + //checkBitWidth(); + checkSch(CONFIG_T::scaling_opt); + unsigned max_nfft = CONFIG_T::max_nfft; + unsigned nfft_bits = CONFIG_T::has_nfft ? 8 : 0; // Padding to 8 bits + unsigned cp_len_bits = CONFIG_T::cyclic_prefix_insertion ? (((max_nfft + 7) >> 3) << 3) : 0; // Padding + unsigned ch_lo = cp_len_bits + nfft_bits; + unsigned ch_bits = 1; + unsigned arch = CONFIG_T::arch_opt; + unsigned tmp_bits = (arch == unsigned(pipelined_streaming_io) || arch == unsigned(radix_4_burst_io)) ? ((max_nfft+1)>>1) * 2 : 2 * max_nfft; + unsigned sch_bits = (CONFIG_T::scaling_opt == unsigned(scaled)) ? tmp_bits : 0; + unsigned sch_lo = ch_lo + CONFIG_T::channels * ch_bits; + return data.range(sch_bits*(ch+1)+sch_lo-1, sch_bits*ch+sch_lo); + } + }; + + template + struct status_t + { + typedef ap_uint status_data_t; + status_data_t data; + + + // Check CONFIG_T::status_width + INLINE void checkBitWidth() + { +#ifndef AESL_SYN + const bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(ip_fft::scaled)); + const unsigned blk_exp_bits = (CONFIG_T::scaling_opt == unsigned(ip_fft::block_floating_point)) ? 8 : 0; // padding to 8 bits + const unsigned ovflo_bits = has_ovflo ? 1 : 0; + const unsigned status_bits = (blk_exp_bits + ovflo_bits) * CONFIG_T::channels; + const unsigned status_width = (status_bits == 0) ? 8 : ((status_bits + 7) >> 3) << 3; // padding + if (CONFIG_T::status_width != status_width) + { + std::cerr << ip_fft::fftErrChkHead << "Status channel width = " << (int)CONFIG_T::status_width + << " is illegal." << std::endl; + exit(1); + } +#endif + } + + INLINE void checkBlkExp(unsigned scaling_opt) + { +#ifndef AESL_SYN + if (scaling_opt != unsigned(block_floating_point)) + { + std::cerr << fftErrChkHead << "FFT_SCALING != block_floating_point." + << " It's invalid to access BLK_EXP field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void checkOvflo(bool has_ovflo) + { +#ifndef AESL_SYN + if (!has_ovflo) + { + std::cerr << fftErrChkHead + << "Current configuration disables over flow field," + << " it's invalid to access OVFLO field." + << std::endl; + exit(1); + } +#endif + } + + INLINE void setBlkExp(status_data_t exp) + { + checkBitWidth(); + checkBlkExp(CONFIG_T::scaling_opt); + data = exp; + } + INLINE unsigned getBlkExp(unsigned ch = 0) + { + checkBitWidth(); + unsigned blk_exp_bits = (CONFIG_T::scaling_opt == unsigned(block_floating_point)) ? 8 : 0; // padding to 8 bits + checkBlkExp(CONFIG_T::scaling_opt); + return data.range(blk_exp_bits*(ch+1)-1, blk_exp_bits*ch); + } + INLINE unsigned getBlkExp(unsigned ch = 0) const + { + checkBitWidth(); + unsigned blk_exp_bits = (CONFIG_T::scaling_opt == unsigned(block_floating_point)) ? 8 : 0; // padding to 8 bits + checkBlkExp(CONFIG_T::scaling_opt); + return data.range(blk_exp_bits*(ch+1)-1, blk_exp_bits*ch); + } + + INLINE void setOvflo(status_data_t ovflo) + { + checkBitWidth(); + bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(scaled)); + checkOvflo(has_ovflo); + data = ovflo; + } + INLINE unsigned getOvflo(unsigned ch = 0) + { + checkBitWidth(); + bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(scaled)); + unsigned ovflo_bits = has_ovflo ? 1 : 0; + checkOvflo(has_ovflo); + return data.range(ovflo_bits*(ch+1)-1, ovflo_bits*ch); + } + INLINE unsigned getOvflo(unsigned ch = 0) const + { + checkBitWidth(); + bool has_ovflo = CONFIG_T::ovflo && (CONFIG_T::scaling_opt == unsigned(scaled)); + unsigned ovflo_bits = has_ovflo ? 1 : 0; + checkOvflo(has_ovflo); + return data.range(ovflo_bits*(ch+1)-1, ovflo_bits*ch); + } + }; + + } // namespace hls::ip_fft + + using namespace std; + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + complex xn[FFT_CHANNELS][FFT_LENGTH], + complex xk[FFT_CHANNELS][FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN + + ////////////////////////////////////////////// + // C level synthesis models for hls::fft + ////////////////////////////////////////////// +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", 1 << CONFIG_T::max_nfft, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + for (int c = 0; c < FFT_CHANNELS; ++c) + { +#pragma HLS unroll complete + xk[c][i] = xn[c][i]; + } + } + + status->data = config_ch->getDir(); + +#else + + ////////////////////////////////////////////// + // C level simulation models for hls::fft + ////////////////////////////////////////////// + + // Declare the C model IO structures + xilinx_ip_xfft_v9_1_generics generics; + xilinx_ip_xfft_v9_1_state *state; + xilinx_ip_xfft_v9_1_inputs inputs; + xilinx_ip_xfft_v9_1_outputs outputs; + + // Log2 of FFT length + int fft_length = FFT_LENGTH; + int NFFT = 0; + if (CONFIG_T::has_nfft) + NFFT = config_ch->getNfft(); + else + NFFT = CONFIG_T::max_nfft; + + const int samples = 1 << NFFT; + + ///////////// IP parameters legality checking ///////////// + + // Check CONFIG_T::config_width + config_ch->checkBitWidth(FFT_DATA_FORMAT); + + // Check CONFIG_T::status_width + status->checkBitWidth(); + + // Check ip parameters + if (CONFIG_T::channels < 1 || CONFIG_T::channels > 12) + { + std::cerr << ip_fft::fftErrChkHead << "Channels = " << (int)CONFIG_T::channels + << " is illegal. It should be from 1 to 12." + << std::endl; + exit(1); + } + + if (CONFIG_T::max_nfft < 3 || CONFIG_T::max_nfft > 16) + { + std::cerr << ip_fft::fftErrChkHead << "NFFT_MAX = " << (int)CONFIG_T::max_nfft + << " is illegal. It should be from 3 to 16." + << std::endl; + exit(1); + } + + unsigned length = FFT_LENGTH; + if (!CONFIG_T::has_nfft) + { + if (FFT_LENGTH != (1 << CONFIG_T::max_nfft)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT_MAX when run-time configurable length is disabled." + << std::endl; + exit(1); + } + } + else if (length & (length - 1)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. It should be the integer power of 2." + << std::endl; + exit(1); + } + else if (NFFT < 3 || NFFT > 16) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should be from 3 to 16." + << std::endl; + exit(1); + } + else if (NFFT > CONFIG_T::max_nfft) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should be less than or equal to NFFT_MAX." + << std::endl; + exit(1); + } +#if 0 + else if (NFFT != config_ch->getNfft()) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT field of configure channel." + << std::endl; + exit(1); + } +#endif + + if ((FFT_INPUT_WIDTH < 8) || (FFT_INPUT_WIDTH > 40)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_INPUT_WIDTH = " << (int)FFT_INPUT_WIDTH + << " is illegal. It should be 8,16,24,32,40." + << std::endl; + exit(1); + } + + if (CONFIG_T::scaling_opt == ip_fft::unscaled && FFT_DATA_FORMAT != ip_fft::floating_point) + { + unsigned golden = FFT_INPUT_WIDTH + CONFIG_T::max_nfft + 1; + golden = ((golden + 7) >> 3) << 3; + if (FFT_OUTPUT_WIDTH != golden) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal with unscaled arithmetic. It should be input_width+nfft_max+1." + << std::endl; + exit(1); + } + } + else if (FFT_OUTPUT_WIDTH != FFT_INPUT_WIDTH) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal. It should be the same as input_width." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && CONFIG_T::arch_opt == ip_fft::pipelined_streaming_io) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels << " and FFT_ARCH = pipelined_streaming_io" + << " is illegal. pipelined_streaming_io architecture is not supported when channels is bigger than 1." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && FFT_DATA_FORMAT == ip_fft::floating_point) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels + << " is illegal with floating point data format. Floating point data format only supports 1 channel." + << std::endl; + exit(1); + } + + if (FFT_DATA_FORMAT == ip_fft::floating_point) + { + if (CONFIG_T::phase_factor_width != 24 && CONFIG_T::phase_factor_width != 25) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal with floating point data format. It should be 24 or 25." + << std::endl; + exit(1); + } + } + else if (CONFIG_T::phase_factor_width < 8 || CONFIG_T::phase_factor_width > 34) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal. It should be from 8 to 34." + << std::endl; + exit(1); + } + + ////////////////////////////////////////////////////////// + + // Build up the C model generics structure + generics.C_NFFT_MAX = CONFIG_T::max_nfft; + generics.C_ARCH = CONFIG_T::arch_opt; + generics.C_HAS_NFFT = CONFIG_T::has_nfft; + generics.C_INPUT_WIDTH = FFT_INPUT_WIDTH; + generics.C_TWIDDLE_WIDTH = CONFIG_T::phase_factor_width; + generics.C_HAS_SCALING = CONFIG_T::scaling_opt == ip_fft::unscaled ? 0 : 1; + generics.C_HAS_BFP = CONFIG_T::scaling_opt == ip_fft::block_floating_point ? 1 : 0; + generics.C_HAS_ROUNDING = CONFIG_T::rounding_opt; + generics.C_USE_FLT_PT = FFT_DATA_FORMAT == ip_fft::floating_point ? 1 : 0; + + // Create an FFT state object + state = xilinx_ip_xfft_v9_1_create_state(generics); + + int stages = 0; + if ((generics.C_ARCH == 2) || (generics.C_ARCH == 4)) // radix-2 + stages = NFFT; + else // radix-4 or radix-22 + stages = (NFFT+1)/2; + + double* xn_re = (double*) malloc(samples * sizeof(double)); + double* xn_im = (double*) malloc(samples * sizeof(double)); + int* scaling_sch = (int*) malloc(stages * sizeof(int)); + double* xk_re = (double*) malloc(samples * sizeof(double)); + double* xk_im = (double*) malloc(samples * sizeof(double)); + + // Check the memory was allocated successfully for all arrays + if (xn_re == NULL || xn_im == NULL || scaling_sch == NULL || xk_re == NULL || xk_im == NULL) + { + std::cerr << "Couldn't allocate memory for input and output data arrays - dying" << std::endl; + exit(3); + } + + ap_uint overflow = 0; + ap_uint blkexp = 0; + for (int c = 0; c < FFT_CHANNELS; ++c) + { + // Set pointers in input and output structures + inputs.xn_re = xn_re; + inputs.xn_im = xn_im; + inputs.scaling_sch = scaling_sch; + outputs.xk_re = xk_re; + outputs.xk_im = xk_im; + + // Store in inputs structure + inputs.nfft = NFFT; + // config data + inputs.direction = config_ch->getDir(c); + unsigned scaling = 0; + if (CONFIG_T::scaling_opt == ip_fft::scaled) + scaling = config_ch->getSch(c); + for (int i = 0; i < stages; i++) + { + inputs.scaling_sch[i] = scaling & 0x3; + scaling >>= 2; + } + inputs.scaling_sch_size = stages; + for (int i = 0; i < samples ; i++) + { + complex din = xn[c][i]; + inputs.xn_re[i] = (double)din.real(); + inputs.xn_im[i] = (double)din.imag(); +#ifdef _HLSCLIB_DEBUG_ + std::cout << "xn[" << c "][" << i << ": xn_re = " << inputs .xn_re[i] << + " xk_im = " << inputs.xn_im[i] << endl; +#endif + } + inputs.xn_re_size = samples; + inputs.xn_im_size = samples; + + // Set sizes of output structure arrays + outputs.xk_re_size = samples; + outputs.xk_im_size = samples; + + //#define DEBUG +#ifdef _HLSCLIB_DEBUG_ + /////////////////////////////////////////////////////////////////////////////// + /// Debug + std::cout << "About to call the C model with:" << std::endl; + std::cout << "Generics:" << std::endl; + std::cout << " C_NFFT_MAX = " << generics.C_NFFT_MAX << std::endl; + std::cout << " C_ARCH = " << generics.C_ARCH << std::endl; + std::cout << " C_HAS_NFFT = " << generics.C_HAS_NFFT << std::endl; + std::cout << " C_INPUT_WIDTH = " << generics.C_INPUT_WIDTH << std::endl; + std::cout << " C_TWIDDLE_WIDTH = " << generics.C_TWIDDLE_WIDTH << std::endl; + std::cout << " C_HAS_SCALING = " << generics.C_HAS_SCALING << std::endl; + std::cout << " C_HAS_BFP = " << generics.C_HAS_BFP << std::endl; + std::cout << " C_HAS_ROUNDING = " << generics.C_HAS_ROUNDING << std::endl; + std::cout << " C_USE_FLT_PT = " << generics.C_USE_FLT_PT << std::endl; + + std::cout << "Inputs structure:" << std::endl; + std::cout << " nfft = " << inputs.nfft << std::endl; + printf(" xn_re[0] = %e\n",inputs.xn_re[0]); + std::cout << " xn_re_size = " << inputs.xn_re_size << std::endl; + printf(" xn_im[0] = %e\n",inputs.xn_im[0]); + std::cout << " xn_im_size = " << inputs.xn_im_size << std::endl; + + for (int i = stages - 1; i >= 0; --i) + std::cout << " scaling_sch[" << i << "] = " << inputs.scaling_sch[i] << std::endl; + + std::cout << " scaling_sch_size = " << inputs.scaling_sch_size << std::endl; + std::cout << " direction = " << inputs.direction << std::endl; + + std::cout << "Outputs structure:" << std::endl; + std::cout << " xk_re_size = " << outputs.xk_re_size << std::endl; + std::cout << " xk_im_size = " << outputs.xk_im_size << std::endl; + + // Run the C model to generate output data + std::cout << "Running the C model..." << std::endl; + /////////////////////////////////////////////////////////////////////////////// +#endif + + int result = 0; + result = xilinx_ip_xfft_v9_1_bitacc_simulate(state, inputs, &outputs); + if (result != 0) + { + std::cerr << "An error occurred when simulating the FFT core: return code " << result << std::endl; + exit(4); + } + + // Output data + for (int i = 0; i < samples; i++) + { + complex dout; + unsigned addr_reverse = 0; + for (int k = 0; k < NFFT; ++k) + { + addr_reverse <<= 1; + addr_reverse |= (i >> k) & 0x1; + } + unsigned addr = i; + if (CONFIG_T::ordering_opt == ip_fft::bit_reversed_order) + addr = addr_reverse; + dout = complex (outputs.xk_re[addr], outputs.xk_im[addr]); + xk[c][i] = dout; +#ifdef _HLSCLIB_DEBUG_ + cout << "xk[" << c "][" << i << ": xk_re = " << outputs.xk_re[addr] << + " xk_im = " << outputs.xk_im[addr] << endl; +#endif + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + blkexp.range(c*8+7, c*8) = outputs.blk_exp; + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + overflow.range(c, c) = outputs.overflow; + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + status->setBlkExp(blkexp); + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + status->setOvflo(overflow); + + // Release memory used for input and output arrays + free(xn_re); + free(xn_im); + free(scaling_sch); + free(xk_re); + free(xk_im); + + // Destroy FFT state to free up memory + xilinx_ip_xfft_v9_1_destroy_state(state); +#endif + + } // End of fft_core + + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + complex xn[FFT_LENGTH], + complex xk[FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", FFT_LENGTH, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + xk[i] = xn[i]; + } + + status->data = config_ch->getDir(); + +#else + complex xn_multi_chan [1][FFT_LENGTH]; + complex xk_multi_chan [1][FFT_LENGTH]; + + for(int i=0; i< FFT_LENGTH; i++) + xn_multi_chan[0][i] = xn[i]; + + fft_core< + CONFIG_T, + FFT_INPUT_WIDTH, + FFT_OUTPUT_WIDTH, + FFT_INPUT_T, + FFT_OUTPUT_T, + FFT_LENGTH, + 1, + FFT_DATA_FORMAT + >(xn_multi_chan, xk_multi_chan, status, config_ch); + + for(int i=0; i< FFT_LENGTH; i++) + xk[i] = xk_multi_chan[0][i]; +#endif + } + + +} // namespace hls +#endif // __cplusplus + + +#include "hls_fft_x_complex.h" +#endif // X_HLS_FFT_H + + diff --git a/vitis/v2021_2/hls_fft_x_complex.h b/vitis/v2021_2/hls_fft_x_complex.h new file mode 100755 index 00000000..009155d3 --- /dev/null +++ b/vitis/v2021_2/hls_fft_x_complex.h @@ -0,0 +1,983 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_FFT_X_COMPLEX_H +#define X_HLS_FFT_X_COMPLEX_H + +/* + * This file contains a C++ model of hls::fft. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + + +#include "ap_int.h" +#include "hls_stream.h" +#include "hls_x_complex.h" +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#include +#include "fft/xfft_v9_1_bitacc_cmodel.h" +#endif + +namespace hls { + + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + hls::x_complex xn[FFT_CHANNELS][FFT_LENGTH], + hls::x_complex xk[FFT_CHANNELS][FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN + + ////////////////////////////////////////////// + // C level synthesis models for hls::fft + ////////////////////////////////////////////// +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", 1 << CONFIG_T::max_nfft, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + for (int c = 0; c < FFT_CHANNELS; ++c) + { +#pragma HLS unroll complete + xk[c][i] = xn[c][i]; + } + } + + status->data = config_ch->getDir(); + +#else + + ////////////////////////////////////////////// + // C level simulation models for hls::fft + ////////////////////////////////////////////// + + // Declare the C model IO structures + xilinx_ip_xfft_v9_1_generics generics; + xilinx_ip_xfft_v9_1_state *state; + xilinx_ip_xfft_v9_1_inputs inputs; + xilinx_ip_xfft_v9_1_outputs outputs; + + // Log2 of FFT length + int fft_length = FFT_LENGTH; + int NFFT = 0; + if (CONFIG_T::has_nfft) + NFFT = config_ch->getNfft(); + else + NFFT = CONFIG_T::max_nfft; + + const int samples = 1 << NFFT; + + ///////////// IP parameters legality checking ///////////// + + // Check CONFIG_T::config_width + config_ch->checkBitWidth(FFT_DATA_FORMAT); + + // Check CONFIG_T::status_width + status->checkBitWidth(); + + // Check ip parameters + if (CONFIG_T::channels < 1 || CONFIG_T::channels > 12) + { + std::cerr << ip_fft::fftErrChkHead << "Channels = " << (int)CONFIG_T::channels + << " is illegal. It should be from 1 to 12." + << std::endl; + exit(1); + } + + if (CONFIG_T::max_nfft < 3 || CONFIG_T::max_nfft > 16) + { + std::cerr << ip_fft::fftErrChkHead << "NFFT_MAX = " << (int)CONFIG_T::max_nfft + << " is illegal. It should be from 3 to 16." + << std::endl; + exit(1); + } + + unsigned length = FFT_LENGTH; + if (!CONFIG_T::has_nfft) + { + if (FFT_LENGTH != (1 << CONFIG_T::max_nfft)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT_MAX when run-time configurable length is disabled." + << std::endl; + exit(1); + } + } + else if (length & (length - 1)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. It should be the integer power of 2." + << std::endl; + exit(1); + } + else if (NFFT < 3 || NFFT > 16) + { + std::cerr << ip_fft::fftErrChkHead << "NFFT = " << (int)NFFT + << " is illegal. It should be from 3 to 16." + << std::endl; + exit(1); + } + else if (NFFT > CONFIG_T::max_nfft) + { + std::cerr << ip_fft::fftErrChkHead << "NFFT = " << (int)NFFT + << " is illegal. It should be less than or equal to " + << CONFIG_T::max_nfft << "." + << std::endl; + exit(1); + } +#if 0 + else if (NFFT != config_ch->getNfft()) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_LENGTH = " << (int)FFT_LENGTH + << " is illegal. Log2(FFT_LENGTH) should equal to NFFT field of configure channel." + << std::endl; + exit(1); + } +#endif + + if ((FFT_INPUT_WIDTH < 8) || (FFT_INPUT_WIDTH > 40)) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_INPUT_WIDTH = " << (int)FFT_INPUT_WIDTH + << " is illegal. It should be 8,16,24,32,40." + << std::endl; + exit(1); + } + + if (CONFIG_T::scaling_opt == ip_fft::unscaled && FFT_DATA_FORMAT != ip_fft::floating_point) + { + unsigned golden = FFT_INPUT_WIDTH + CONFIG_T::max_nfft + 1; + golden = ((golden + 7) >> 3) << 3; + if (FFT_OUTPUT_WIDTH != golden) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal with unscaled arithmetic. It should be input_width+nfft_max+1." + << std::endl; + exit(1); + } + } + else if (FFT_OUTPUT_WIDTH != FFT_INPUT_WIDTH) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_OUTPUT_WIDTH = " << (int)FFT_OUTPUT_WIDTH + << " is illegal. It should be the same as input_width." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && CONFIG_T::arch_opt == ip_fft::pipelined_streaming_io) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels << " and FFT_ARCH = pipelined_streaming_io" + << " is illegal. pipelined_streaming_io architecture is not supported when channels is bigger than 1." + << std::endl; + exit(1); + } + + if (CONFIG_T::channels > 1 && FFT_DATA_FORMAT == ip_fft::floating_point) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_CHANNELS = " << (int)CONFIG_T::channels + << " is illegal with floating point data format. Floating point data format only supports 1 channel." + << std::endl; + exit(1); + } + + if (FFT_DATA_FORMAT == ip_fft::floating_point) + { + if (CONFIG_T::phase_factor_width != 24 && CONFIG_T::phase_factor_width != 25) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal with floating point data format. It should be 24 or 25." + << std::endl; + exit(1); + } + } + else if (CONFIG_T::phase_factor_width < 8 || CONFIG_T::phase_factor_width > 34) + { + std::cerr << ip_fft::fftErrChkHead << "FFT_PHASE_FACTOR_WIDTH = " << (int)CONFIG_T::phase_factor_width + << " is illegal. It should be from 8 to 34." + << std::endl; + exit(1); + } + + ////////////////////////////////////////////////////////// + + // Build up the C model generics structure + generics.C_NFFT_MAX = CONFIG_T::max_nfft; + generics.C_ARCH = CONFIG_T::arch_opt; + generics.C_HAS_NFFT = CONFIG_T::has_nfft; + generics.C_INPUT_WIDTH = FFT_INPUT_WIDTH; + generics.C_TWIDDLE_WIDTH = CONFIG_T::phase_factor_width; + generics.C_HAS_SCALING = CONFIG_T::scaling_opt == ip_fft::unscaled ? 0 : 1; + generics.C_HAS_BFP = CONFIG_T::scaling_opt == ip_fft::block_floating_point ? 1 : 0; + generics.C_HAS_ROUNDING = CONFIG_T::rounding_opt; + generics.C_USE_FLT_PT = FFT_DATA_FORMAT == ip_fft::floating_point ? 1 : 0; + + // Create an FFT state object + state = xilinx_ip_xfft_v9_1_create_state(generics); + + int stages = 0; + if ((generics.C_ARCH == 2) || (generics.C_ARCH == 4)) // radix-2 + stages = NFFT; + else // radix-4 or radix-22 + stages = (NFFT+1)/2; + + double* xn_re = (double*) malloc(samples * sizeof(double)); + double* xn_im = (double*) malloc(samples * sizeof(double)); + int* scaling_sch = (int*) malloc(stages * sizeof(int)); + double* xk_re = (double*) malloc(samples * sizeof(double)); + double* xk_im = (double*) malloc(samples * sizeof(double)); + + // Check the memory was allocated successfully for all arrays + if (xn_re == NULL || xn_im == NULL || scaling_sch == NULL || xk_re == NULL || xk_im == NULL) + { + std::cerr << "Couldn't allocate memory for input and output data arrays - dying" << std::endl; + exit(3); + } + + ap_uint overflow = 0; + ap_uint blkexp = 0; + for (int c = 0; c < FFT_CHANNELS; ++c) + { + // Set pointers in input and output structures + inputs.xn_re = xn_re; + inputs.xn_im = xn_im; + inputs.scaling_sch = scaling_sch; + outputs.xk_re = xk_re; + outputs.xk_im = xk_im; + + // Store in inputs structure + inputs.nfft = NFFT; + // config data + inputs.direction = config_ch->getDir(c); + unsigned scaling = 0; + if (CONFIG_T::scaling_opt == ip_fft::scaled) + scaling = config_ch->getSch(c); + for (int i = 0; i < stages; i++) + { + inputs.scaling_sch[i] = scaling & 0x3; + scaling >>= 2; + } + inputs.scaling_sch_size = stages; + for (int i = 0; i < samples ; i++) + { + hls::x_complex din = xn[c][i]; + inputs.xn_re[i] = (double)din.real(); + inputs.xn_im[i] = (double)din.imag(); +#ifdef _HLSCLIB_DEBUG_ + std::cout << "xn[" << c "][" << i << ": xn_re = " << inputs .xn_re[i] << + " xk_im = " << inputs.xn_im[i] << endl; +#endif + } + inputs.xn_re_size = samples; + inputs.xn_im_size = samples; + + // Set sizes of output structure arrays + outputs.xk_re_size = samples; + outputs.xk_im_size = samples; + + //#define DEBUG +#ifdef _HLSCLIB_DEBUG_ + /////////////////////////////////////////////////////////////////////////////// + /// Debug + std::cout << "About to call the C model with:" << std::endl; + std::cout << "Generics:" << std::endl; + std::cout << " C_NFFT_MAX = " << generics.C_NFFT_MAX << std::endl; + std::cout << " C_ARCH = " << generics.C_ARCH << std::endl; + std::cout << " C_HAS_NFFT = " << generics.C_HAS_NFFT << std::endl; + std::cout << " C_INPUT_WIDTH = " << generics.C_INPUT_WIDTH << std::endl; + std::cout << " C_TWIDDLE_WIDTH = " << generics.C_TWIDDLE_WIDTH << std::endl; + std::cout << " C_HAS_SCALING = " << generics.C_HAS_SCALING << std::endl; + std::cout << " C_HAS_BFP = " << generics.C_HAS_BFP << std::endl; + std::cout << " C_HAS_ROUNDING = " << generics.C_HAS_ROUNDING << std::endl; + std::cout << " C_USE_FLT_PT = " << generics.C_USE_FLT_PT << std::endl; + + std::cout << "Inputs structure:" << std::endl; + std::cout << " nfft = " << inputs.nfft << std::endl; + printf(" xn_re[0] = %e\n",inputs.xn_re[0]); + std::cout << " xn_re_size = " << inputs.xn_re_size << std::endl; + printf(" xn_im[0] = %e\n",inputs.xn_im[0]); + std::cout << " xn_im_size = " << inputs.xn_im_size << std::endl; + + for (int i = stages - 1; i >= 0; --i) + std::cout << " scaling_sch[" << i << "] = " << inputs.scaling_sch[i] << std::endl; + + std::cout << " scaling_sch_size = " << inputs.scaling_sch_size << std::endl; + std::cout << " direction = " << inputs.direction << std::endl; + + std::cout << "Outputs structure:" << std::endl; + std::cout << " xk_re_size = " << outputs.xk_re_size << std::endl; + std::cout << " xk_im_size = " << outputs.xk_im_size << std::endl; + + // Run the C model to generate output data + std::cout << "Running the C model..." << std::endl; + /////////////////////////////////////////////////////////////////////////////// +#endif + + int result = 0; + result = xilinx_ip_xfft_v9_1_bitacc_simulate(state, inputs, &outputs); + if (result != 0) + { + std::cerr << "An error occurred when simulating the FFT core: return code " << result << std::endl; + exit(4); + } + + // Output data + for (int i = 0; i < samples; i++) + { + hls::x_complex dout; + unsigned addr_reverse = 0; + for (int k = 0; k < NFFT; ++k) + { + addr_reverse <<= 1; + addr_reverse |= (i >> k) & 0x1; + } + unsigned addr = i; + if (CONFIG_T::ordering_opt == ip_fft::bit_reversed_order) + addr = addr_reverse; + dout = hls::x_complex (outputs.xk_re[addr], outputs.xk_im[addr]); + xk[c][i] = dout; +#ifdef _HLSCLIB_DEBUG_ + cout << "xk[" << c "][" << i << ": xk_re = " << outputs.xk_re[addr] << + " xk_im = " << outputs.xk_im[addr] << endl; +#endif + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + blkexp.range(c*8+7, c*8) = outputs.blk_exp; + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + overflow.range(c, c) = outputs.overflow; + } + + // Status + if (CONFIG_T::scaling_opt == ip_fft::block_floating_point) + status->setBlkExp(blkexp); + else if (CONFIG_T::ovflo && (CONFIG_T::scaling_opt == ip_fft::scaled)) + status->setOvflo(overflow); + + // Release memory used for input and output arrays + free(xn_re); + free(xn_im); + free(scaling_sch); + free(xk_re); + free(xk_im); + + // Destroy FFT state to free up memory + xilinx_ip_xfft_v9_1_destroy_state(state); +#endif + + } // End of fft_core + + + template< + typename CONFIG_T, + char FFT_INPUT_WIDTH, + char FFT_OUTPUT_WIDTH, + typename FFT_INPUT_T, + typename FFT_OUTPUT_T, + int FFT_LENGTH, + char FFT_CHANNELS, + ip_fft::type FFT_DATA_FORMAT + > + INLINE void fft_core( + hls::x_complex xn[FFT_LENGTH], + hls::x_complex xk[FFT_LENGTH], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#ifdef AESL_SYN +#pragma HLS inline + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", FFT_LENGTH, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + bool has_scaling_sch = config_ch->getSch(); + bool has_direction = config_ch->getDir(); + + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + xk[i] = xn[i]; + } + + status->data = config_ch->getDir(); + +#else + hls::x_complex xn_multi_chan [1][FFT_LENGTH]; + hls::x_complex xk_multi_chan [1][FFT_LENGTH]; + + for(int i=0; i< FFT_LENGTH; i++) + xn_multi_chan[0][i] = xn[i]; + + fft_core< + CONFIG_T, + FFT_INPUT_WIDTH, + FFT_OUTPUT_WIDTH, + FFT_INPUT_T, + FFT_OUTPUT_T, + FFT_LENGTH, + 1, + FFT_DATA_FORMAT + >(xn_multi_chan, xk_multi_chan, status, config_ch); + + for(int i=0; i< FFT_LENGTH; i++) + xk[i] = xk_multi_chan[0][i]; +#endif + } + +#ifdef AESL_SYN + // 1-channel, fixed-point + template< + typename CONFIG_T + > + void fft_syn( + complex > xn[1 << CONFIG_T::max_nfft], + complex > xk[1 << CONFIG_T::max_nfft], + hls::stream > &status_data_V, + hls::stream > &config_ch_data_V) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS aggregate variable=xn +#pragma HLS aggregate variable=xk + +#pragma HLS stream variable=xn +#pragma HLS stream variable=xk + + + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", 1, + "transform_length", 1 << CONFIG_T::max_nfft, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[ip_fft::fixed_point], + "input_width", CONFIG_T::input_width, + "output_width", CONFIG_T::output_width, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + + ip_fft::config_t config_tmp = config_ch_data_V.read(); + bool has_scaling_sch = config_tmp.getSch(); + bool has_direction = config_tmp.getDir(); + int FFT_LENGTH = 1 << CONFIG_T::max_nfft; + if ( has_direction || has_scaling_sch ) + for (int i = 0; i < FFT_LENGTH; ++i) + { + xk[i] = xn[i]; + } + + ip_fft::status_t status_tmp; + status_tmp.data = config_tmp.getDir(); + status_data_V.write(status_tmp); + + } // End of 1-channel, fixed-point +#endif + + // 1-channel, fixed-point + template< + typename CONFIG_T + > + void fft_sim( + complex > xn[1 << CONFIG_T::max_nfft], + complex > xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t *status, + ip_fft::config_t *config_ch) + { + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + } // End of 1-channel, fixed-point + + template< + typename CONFIG_T + > + void data_copy_from_ap_fix_to_ap_uint( + complex > xn[1 << CONFIG_T::max_nfft], + ap_uint<((CONFIG_T::input_width+7)/8)*8*2> xn_cp[1 << CONFIG_T::max_nfft]) { + + for (unsigned i = 0; i < (1 << CONFIG_T::max_nfft); i++) { + complex > xn_tmp = xn[i]; + ap_uint<((CONFIG_T::input_width+7)/8)*8*2> xn_cp_tmp; + xn_cp_tmp(((CONFIG_T::input_width+7)/8)*8 - 1, 0) = xn_tmp.real().range(((CONFIG_T::input_width+7)/8)*8 - 1, 0); + xn_cp_tmp(((CONFIG_T::input_width+7)/8)*8*2 - 1, ((CONFIG_T::input_width+7)/8)*8) = xn_tmp.imag().range(((CONFIG_T::input_width+7)/8)*8 - 1, 0); + xn_cp[i] = xn_cp_tmp; + } + } + + template< + typename CONFIG_T + > + void data_copy_from_ap_uint_to_ap_fixed( + complex > xk[1 << CONFIG_T::max_nfft], + ap_uint<((CONFIG_T::input_width+7)/8)*8*2> xk_cp[1 << CONFIG_T::max_nfft]) { + for (unsigned i = 0; i < (1 << CONFIG_T::max_nfft); i++) { + ap_uint<((CONFIG_T::input_width+7)/8)*8*2> xk_cp_tmp = xk_cp[i]; + complex > xk_tmp; + ap_fixed<((CONFIG_T::output_width+7)/8)*8, 1> tmp; + tmp.range(((CONFIG_T::output_width+7)/8)*8 - 1, 0) = xk_cp_tmp.range(((CONFIG_T::output_width+7)/8)*8 - 1, 0); + xk_tmp.real(tmp); + tmp.range(((CONFIG_T::output_width+7)/8)*8 - 1, 0) = xk_cp_tmp.range(((CONFIG_T::output_width+7)/8)*8*2 - 1, ((CONFIG_T::output_width+7)/8)*8); + xk_tmp.imag(tmp); + xk[i] = xk_tmp; + } + } + + // 1-channel, fixed-point + template< + typename CONFIG_T + > + void fft( + complex > xn[1 << CONFIG_T::max_nfft], + complex > xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t *status, + ip_fft::config_t *config_ch) + { +#pragma HLS inline +#ifdef AESL_SYN + hls::stream > config_s; + hls::stream > status_s; + config_s.write(*config_ch); + fft_syn(xn, xk, status_s, config_s); + *status = status_s.read(); +#else + fft_sim(xn, xk, status, config_ch); +#endif + + } // End of 1-channel, fixed-point + + // Multi-channels, fixed-point + template< + typename CONFIG_T + > + void fft( + complex > xn[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + complex > xk[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + //#if (FFT_CHANNELS > 1) +#pragma HLS array_reshape dim=1 variable=xn +#pragma HLS array_reshape dim=1 variable=xk + //#endif + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + CONFIG_T::channels, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + } // End of multi-channels, fixed-point + + union U { + float f; + unsigned i; + }; + + template + static void + data_copy_from_float_to_int64(complex xn[1 << CONFIG_T::max_nfft], + uint64_t xn_cp[1 << CONFIG_T::max_nfft]) { + for (unsigned i = 0; i < (1 << CONFIG_T::max_nfft); i++) { + complex xn_tmp = xn[i]; + U u; + u.f = xn_tmp.real(); + uint64_t xn_cp_tmp = u.i; + u.f = xn_tmp.imag(); + xn_cp_tmp |= (((uint64_t)u.i) << 32); + xn_cp[i] = xn_cp_tmp; + } + } + + template + static void + data_copy_from_int64_to_float(complex xk[1 << CONFIG_T::max_nfft], + uint64_t xk_cp[1 << CONFIG_T::max_nfft]) { + for (unsigned i = 0; i < (1 << CONFIG_T::max_nfft); i++) { + uint64_t xk_cp_tmp = xk_cp[i]; + U u; + u.i = unsigned(xk_cp_tmp); + complex xk_tmp; + xk_tmp.real(u.f); + u.i = unsigned(xk_cp_tmp >> 32); + xk_tmp.imag(u.f); + xk[i] = xk_tmp; + } + } + + // fft_syn for complex specialization is copied from + // 'clib/include/header_files/hls_fft.h' #790 + template + void fft_syn(complex xn[1 << CONFIG_T::max_nfft], + complex xk[1 << CONFIG_T::max_nfft], + hls::stream> &status_data_V, + hls::stream> &config_ch_data_V) { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + +#pragma HLS aggregate variable=xn +#pragma HLS aggregate variable=xk + +#pragma HLS stream variable=xn +#pragma HLS stream variable=xk + + _ssdm_op_SpecKeepValue( + //"component_name", "xfft_0", + "channels", FFT_CHANNELS, + "transform_length", FFT_LENGTH, + "implementation_options", CONFIG_T::arch_opt-1, + "run_time_configurable_transform_length", CONFIG_T::has_nfft, + "data_format", ip_fft::fft_data_format_str[FFT_DATA_FORMAT], + "input_width", FFT_INPUT_WIDTH, + "output_width", FFT_OUTPUT_WIDTH, + "phase_factor_width", CONFIG_T::phase_factor_width, + "scaling_options", CONFIG_T::scaling_opt, + "rounding_modes", CONFIG_T::rounding_opt, + "aclken", "true", + "aresetn", "true", + "ovflo", CONFIG_T::ovflo, + "xk_index", CONFIG_T::xk_index, + "throttle_scheme", "nonrealtime", + "output_ordering", CONFIG_T::ordering_opt, + "cyclic_prefix_insertion", CONFIG_T::cyclic_prefix_insertion, + "memory_options_data", CONFIG_T::mem_data, + "memory_options_phase_factors", CONFIG_T::mem_phase_factors, + "memory_options_reorder", CONFIG_T::mem_reorder, + "number_of_stages_using_block_ram_for_data_and_phase_factors", CONFIG_T::stages_block_ram, + "memory_options_hybrid", CONFIG_T::mem_hybrid, + "complex_mult_type", CONFIG_T::complex_mult_type, + "butterfly_type", CONFIG_T::butterfly_type + ); + + ip_fft::config_t config_tmp = config_ch_data_V.read(); + bool has_scaling_sch = config_tmp.getSch(); + bool has_direction = config_tmp.getDir(); + + if (has_direction || has_scaling_sch) + for (int i = 0; i < FFT_LENGTH; ++i) { + xk[i] = xn[i]; + } + + ip_fft::status_t status_tmp; + status_tmp.data = config_tmp.getDir(); + status_data_V.write(status_tmp); + } + + // 1-channel, floating-point + template + void fft_sim(complex xn[1 << CONFIG_T::max_nfft], + complex xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t *status, + ip_fft::config_t *config_ch) { + fft_core< + CONFIG_T, + 32, + 32, + float, + float, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::floating_point + >(xn, xk, status, config_ch); + } // End of 1-channel, fixed-point + + // 1-channel, floating-point + template + void fft(complex xn[1 << CONFIG_T::max_nfft], + complex xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t *status, + ip_fft::config_t *config_ch) { +#ifdef AESL_SYN +#pragma HLS dataflow + hls::stream> status_s; + hls::stream> config_s; + config_s.write(*config_ch); + fft_syn(xn, xk, status_s, config_s); + + *status = status_s.read(); +#else + fft_sim(xn, xk, status, config_ch); +#endif + } // End of 1-channel, floating-point + + // 1-channel, fixed-point + template< + typename CONFIG_T + > + void fft( + hls::x_complex > xn[1 << CONFIG_T::max_nfft], + hls::x_complex > xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + + } // End of 1-channel, fixed-point + + // Multi-channels, fixed-point + template< + typename CONFIG_T + > + void fft( + hls::x_complex > xn[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + hls::x_complex > xk[CONFIG_T::channels][1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk + +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + //#if (FFT_CHANNELS > 1) +#pragma HLS array_reshape dim=1 variable=xn +#pragma HLS array_reshape dim=1 variable=xk + //#endif + + fft_core< + CONFIG_T, + CONFIG_T::input_width, + CONFIG_T::output_width, + ap_fixed<((CONFIG_T::input_width+7)/8)*8, 1>, + ap_fixed<((CONFIG_T::output_width+7)/8)*8, ((CONFIG_T::output_width+7)/8)*8-CONFIG_T::input_width+1>, + 1 << CONFIG_T::max_nfft, + CONFIG_T::channels, + ip_fft::fixed_point + >(xn, xk, status, config_ch); + } // End of multi-channels, fixed-point + + // 1-channel, floating-point + template< + typename CONFIG_T + > + void fft( + hls::x_complex xn[1 << CONFIG_T::max_nfft], + hls::x_complex xk[1 << CONFIG_T::max_nfft], + ip_fft::status_t* status, + ip_fft::config_t* config_ch) + { +#pragma HLS inline off +#pragma HLS resource core="Vivado_FFT" variable=return metadata="parameterizable" + //#pragma HLS function instantiate variable=core_params +#pragma HLS interface ap_fifo port=config_ch +#pragma HLS interface ap_fifo port=status +#pragma HLS interface ap_fifo port=xn +#pragma HLS interface ap_fifo port=xk +#pragma HLS data_pack variable=config_ch +#pragma HLS data_pack variable=xn +#pragma HLS data_pack variable=xk + + fft_core< + CONFIG_T, + 32, + 32, + float, + float, + 1 << CONFIG_T::max_nfft, + 1, + ip_fft::floating_point + >(xn, xk, status, config_ch); + } // End of 1-channel, floating-point + +} // namespace hls +#endif // __cplusplus +#endif // X_HLS_FFT_X_COMPLEX_H + + diff --git a/vitis/v2021_2/hls_fir.h b/vitis/v2021_2/hls_fir.h new file mode 100755 index 00000000..30ca6d91 --- /dev/null +++ b/vitis/v2021_2/hls_fir.h @@ -0,0 +1,724 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_FIR_H +#define X_HLS_FIR_H + +/* + * This file contains a C++ model of hls::fir. + * It defines Vivado_HLS synthesis model. + */ +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#include "ap_int.h" +#include "ap_utils.h" +#include +#ifndef __SYNTHESIS__ +#include +#endif + +#ifndef AESL_SYN +#ifndef __SYNTHESIS__ +#include +#include "fir/fir_compiler_v7_2_bitacc_cmodel.h" +#endif +#endif + +#include + +namespace hls { + +#ifdef AESL_SYN +#include "etc/autopilot_ssdm_op.h" +#endif + +namespace ip_fir { + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + +static const char* firErrChkHead = "ERROR:hls::fir "; + +enum filter_type {single_rate = 0, interpolation, decimation, hilbert_filter, interpolated}; +static const char* fir_filter_type_str[] = { + "single_rate", "interpolation", + "decimation", "hilbert", "interpolated" +}; + +enum rate_change_type {integer = 0, fixed_fractional}; +static const char* fir_rate_change_type_str[] = { + "integer", "fixed_fractional" +}; + +enum chan_seq {basic = 0, advanced}; +static const char* fir_channel_sequence_str[] = { + "basic", "advanced" +}; + +enum rate_specification {frequency = 0, input_period, output_period}; +static const char* fir_ratespecification_str[] = { + "frequency_specification", "input_sample_period", "output_sample_period" +}; + +enum value_sign {value_signed = 0, value_unsigned}; +static const char* fir_value_sign_str[] = {"signed", "unsigned"}; + +enum quantization {integer_coefficients = 0, quantize_only, maximize_dynamic_range}; +static const char* fir_quantization_str[] = { + "integer_coefficients", "quantize_only", "maximize_dynamic_range" +}; + +enum coeff_structure {inferred = 0, non_symmetric, symmetric, negative_symmetric, half_band, hilbert}; +static const char* fir_coeff_struct_str[] = { + "inferred", "non_symmetric", "symmetric", + "negative_symmetric", "half_band", "hilbert" +}; + +enum output_rounding_mode {full_precision = 0, truncate_lsbs, non_symmetric_rounding_down, + non_symmetric_rounding_up, symmetric_rounding_to_zero, + symmetric_rounding_to_infinity, convergent_rounding_to_even, + convergent_rounding_to_odd}; +static const char* fir_output_rounding_mode_str[] = { + "full_precision", "truncate_lsbs", "non_symmetric_rounding_down", + "non_symmetric_rounding_up", "symmetric_rounding_to_zero", + "symmetric_rounding_to_infinity", "convergent_rounding_to_even", + "convergent_rounding_to_odd" +}; + +enum filter_arch {systolic_multiply_accumulate = 0, transpose_multiply_accumulate}; +static const char* fir_filter_arch_str[] = { + "systolic_multiply_accumulate", "transpose_multiply_accumulate" +}; + +enum optimization_goal {area = 0, speed}; +static const char* fir_opt_goal_str[] = {"area", "speed"}; + +enum config_sync_mode {on_vector = 0, on_packet}; +static const char* fir_s_config_sync_mode_str[] = {"on_vector", "on_packet"}; + +enum config_method {single = 0, by_channel}; +static const char* fir_s_config_method_str[] = {"single", "by_channel"}; + +struct params_t { + static const unsigned input_width = 16; + static const unsigned input_fractional_bits = 0; + static const unsigned output_width = 24; + static const unsigned output_fractional_bits = 0; + static const unsigned coeff_width = 16; + static const unsigned coeff_fractional_bits = 0; + static const unsigned config_width = 8; + static const unsigned num_coeffs = 21; + static const unsigned coeff_sets = 1; + static const unsigned input_length = num_coeffs; + static const unsigned output_length = num_coeffs; + static const unsigned num_channels = 1; + + static const unsigned total_num_coeff = num_coeffs * coeff_sets; + static const double coeff_vec[total_num_coeff]; + static const bool reloadable = false; + static const unsigned filter_type = single_rate; + static const unsigned rate_change = integer; + static const unsigned interp_rate = 1; + static const unsigned decim_rate = 1; + static const unsigned zero_pack_factor = 1; + static const unsigned chan_seq = basic; + static const unsigned rate_specification = input_period; + static const unsigned sample_period = 1; +#ifndef __GXX_EXPERIMENTAL_CXX0X__ + static const double sample_frequency = 0.001; +#else + static constexpr double sample_frequency = 0.001; +#endif + static const unsigned quantization = integer_coefficients; + static const bool best_precision = false; + static const unsigned coeff_structure = non_symmetric; + static const unsigned output_rounding_mode = full_precision; + static const unsigned filter_arch = systolic_multiply_accumulate; + static const unsigned optimization_goal = area; + static const unsigned inter_column_pipe_length = 4; + static const unsigned column_config = 1; + static const unsigned config_sync_mode = on_vector; + static const unsigned config_method = single; + static const unsigned coeff_padding = 0; + + static const unsigned num_paths = 1; + static const unsigned data_sign = value_signed; + static const unsigned coeff_sign = value_signed; +}; + +#ifndef AESL_SYN +//--------------------------------------------------------------------------------------------------------------------- +// Example message handler +static void msg_print(void* handle, int error, const char* msg) +{ + printf("%s\n",msg); +} +#endif +} // namespace hls::ip_fir + +using namespace std; + +template +class FIR { +private: + static const unsigned input_axi_width = ((CONFIG_T::input_width+7)>>3)<<3; + static const unsigned output_axi_width = ((CONFIG_T::output_width+7)>>3)<<3; + static const unsigned coeff_axi_width = ((CONFIG_T::coeff_width+7)>>3)<<3; + + typedef ap_fixed in_data_t; + typedef ap_fixed out_data_t; + typedef ap_uint config_t; + typedef ap_fixed coeff_t; + +#ifndef AESL_SYN + //// Define array helper functions for types used + //DEFINE_XIP_ARRAY(real); + //DEFINE_XIP_ARRAY(complex); + //DEFINE_XIP_ARRAY(uint); + //DEFINE_XIP_ARRAY(mpz); + //DEFINE_XIP_ARRAY(mpz_complex); + + //DEFINE_FIR_XIP_ARRAY(real); + //DEFINE_FIR_XIP_ARRAY(mpz); + //DEFINE_FIR_XIP_ARRAY(mpz_complex); + + xip_fir_v7_2* mFIR; +#endif + +#ifndef AESL_SYN + void printConfig(const xip_fir_v7_2_config* cfg) + { + printf("Configuration of %s:\n",cfg->name); + printf("\tFilter : "); + if (cfg->filter_type == hls::ip_fir::single_rate || + cfg->filter_type == hls::ip_fir::hilbert_filter ) { + printf("%s\n",hls::ip_fir::fir_filter_type_str[cfg->filter_type]); + } else if ( cfg->filter_type == hls::ip_fir::interpolation ) { + printf("%s by %d\n",hls::ip_fir::fir_filter_type_str[cfg->filter_type],cfg->zero_pack_factor); + } else { + printf("%s up by %d down by %d\n",hls::ip_fir::fir_filter_type_str[cfg->filter_type],cfg->interp_rate,cfg->decim_rate); + } + printf("\tCoefficients : %d ",cfg->coeff_sets); + if ( cfg->is_halfband ) { + printf("Halfband "); + } + if (cfg->reloadable) { + printf("Reloadable "); + } + printf("coefficient set(s) of %d taps\n",cfg->num_coeffs); + printf("\tData : %d path(s) of %d %s channel(s)\n",cfg->num_paths,cfg->num_channels,hls::ip_fir::fir_channel_sequence_str[cfg->chan_seq]); + } + + void gen_ip_inst() + { + + xip_fir_v7_2_config fir_cnfg; + fir_cnfg.name = "fir_compiler"; + + fir_cnfg.coeff = &CONFIG_T::coeff_vec[0]; + fir_cnfg.filter_type = CONFIG_T::filter_type; + fir_cnfg.rate_change = CONFIG_T::rate_change; + fir_cnfg.interp_rate = CONFIG_T::interp_rate; + fir_cnfg.decim_rate = CONFIG_T::decim_rate; + fir_cnfg.zero_pack_factor = CONFIG_T::zero_pack_factor; + fir_cnfg.num_channels = CONFIG_T::num_channels; + fir_cnfg.coeff_sets = CONFIG_T::coeff_sets; + fir_cnfg.num_coeffs = CONFIG_T::num_coeffs; + fir_cnfg.reloadable = CONFIG_T::reloadable; + fir_cnfg.quantization = CONFIG_T::quantization; + fir_cnfg.coeff_width = CONFIG_T::coeff_width; + fir_cnfg.coeff_fract_width = CONFIG_T::coeff_fractional_bits; + fir_cnfg.chan_seq = CONFIG_T::chan_seq; + fir_cnfg.data_width = CONFIG_T::input_width; + fir_cnfg.data_fract_width = CONFIG_T::input_fractional_bits; + fir_cnfg.output_rounding_mode = CONFIG_T::output_rounding_mode; + fir_cnfg.output_width = CONFIG_T::output_width; + fir_cnfg.output_fract_width = CONFIG_T::output_fractional_bits; + fir_cnfg.config_method = CONFIG_T::config_method; + fir_cnfg.coeff_padding = CONFIG_T::coeff_padding; + fir_cnfg.is_halfband = (CONFIG_T::coeff_structure == ip_fir::half_band); + + //FIXME: doesn't support the following params + fir_cnfg.init_pattern = P4_3; + fir_cnfg.num_paths = 1; + + //Create filter instances + mFIR = xip_fir_v7_2_create(&fir_cnfg, &ip_fir::msg_print, 0); + if (!mFIR) { + printf("Error creating instance %s\n",fir_cnfg.name); + return; + } + + #ifdef _HLSCLIB_DEBUG_ + printConfig(&fir_cnfg); + #endif + } +#endif + + void insert_spec() { +#ifdef AESL_SYN + #pragma HLS inline + _ssdm_op_SpecKeepValue( + //"component_name", "fir_compiler_0", + "gui_behaviour", "Coregen", + "coefficientsource", "Vector", + "coefficientvector", CONFIG_T::coeff_vec, + "coefficient_file", "no_coe_file_loaded", + "coefficient_sets", CONFIG_T::coeff_sets, + "coefficient_reload", CONFIG_T::reloadable, + "filter_type", CONFIG_T::filter_type, + "rate_change_type", CONFIG_T::rate_change, + "interpolation_rate", CONFIG_T::interp_rate, + "decimation_rate", CONFIG_T::decim_rate, + "zero_pack_factor", CONFIG_T::zero_pack_factor, + "channel_sequence", CONFIG_T::chan_seq, + "number_channels", CONFIG_T::num_channels, + "select_pattern", "All", + "pattern_list", "P4-0,P4-1,P4-2,P4-3,P4-4", + "number_paths", CONFIG_T::num_paths, + "ratespecification", CONFIG_T::rate_specification, + "sampleperiod", CONFIG_T::sample_period, + "sample_frequency", CONFIG_T::sample_frequency, + "clock_frequency", "300.0", + "coefficient_sign", CONFIG_T::coeff_sign, + "quantization", CONFIG_T::quantization, + "coefficient_width", CONFIG_T::coeff_width, + "bestprecision", CONFIG_T::best_precision, + "coefficient_fractional_bits", CONFIG_T::coeff_fractional_bits, + "coefficient_structure", CONFIG_T::coeff_structure, + "data_sign", CONFIG_T::data_sign, + "data_width", CONFIG_T::input_width, + "data_fractional_bits", CONFIG_T::input_fractional_bits, + "output_rounding_mode", CONFIG_T::output_rounding_mode, + "output_width", CONFIG_T::output_width, + "filter_architecture", CONFIG_T::filter_arch, + "optimization_goal", CONFIG_T::optimization_goal, + "optimization_selection", "None", + "optimization_list", "None", + "data_buffer_type", "Automatic", + "coefficient_buffer_type", "Automatic", + "input_buffer_type", "Automatic", + "output_buffer_type", "Automatic", + "preference_for_other_storage", "Automatic", + "multi_column_support", "Automatic", + "inter_column_pipe_length", CONFIG_T::inter_column_pipe_length, + "columnconfig", CONFIG_T::column_config, + "data_has_tlast", "Packet_Framing", + "m_data_has_tready", "true", + "s_data_has_fifo", "true", + "s_data_has_tuser", "Not_Required", + "m_data_has_tuser", "Not_Required", + "data_tuser_width", "1", + "s_config_sync_mode", CONFIG_T::config_sync_mode, + "s_config_method", CONFIG_T::config_method, + "num_reload_slots", "1", + "has_aclken", "true", + "has_aresetn", "true", + "reset_data_vector", "true", + "gen_mif_from_spec", "false", + "gen_mif_from_coe", "false", + "reload_file", "no_coe_file_loaded", + "gen_mif_files", "false", + "displayreloadorder", "false", + "passband_min", "0.0", + "passband_max", "0.5", + "stopband_min", "0.5", + "stopband_max", "1.0", + "filter_selection", "1" + ); +#endif + } + + +#ifndef AESL_SYN + enum sim_mode_t {dataonly, configonly, reloadable}; + + void run_sim ( + in_data_t in[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config[CONFIG_T::num_channels], + coeff_t reload[CONFIG_T::num_coeffs + ((CONFIG_T::coeff_sets == 1) ? 0 : 1)], + sim_mode_t mode) + { + ////////////////////////////////////////////// + // C level simulation models for hls::fir + ////////////////////////////////////////////// + // Create input data packet + xip_array_real* din = xip_array_real_create(); + xip_array_real_reserve_dim(din,3); + din->dim_size = 3; // 3D array + din->dim[0] = 1; + din->dim[1] = CONFIG_T::num_channels; + din->dim[2] = CONFIG_T::input_length; + din->data_size = din->dim[0] * din->dim[1] * din->dim[2]; + if (xip_array_real_reserve_data(din,din->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve data!\n"); + return; + } + + // Create output data packet + // - Automatically sized using xip_fir_v7_2_calc_size + xip_array_real* fir_out = xip_array_real_create(); + xip_array_real_reserve_dim(fir_out,3); + fir_out->dim_size = 3; // 3D array + + if(xip_fir_v7_2_calc_size(mFIR,din,fir_out,0)== XIP_STATUS_OK) { + if (xip_array_real_reserve_data(fir_out,fir_out->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve data!\n"); + return; + } + } else { + printf("Unable to calculate output date size\n"); + return; + } + + //FIXME: check and promote msg + assert(fir_out->data_size == CONFIG_T::output_length * CONFIG_T::num_channels); + + // Populate data in with an impulse + // FIXME: assume path=1 and chan = 1 + for (unsigned idx = 0; idx < CONFIG_T::input_length; ++idx) + { + for (unsigned chan = 0; chan < CONFIG_T::num_channels; ++chan) + xip_fir_v7_2_xip_array_real_set_chan(din, in[idx * CONFIG_T::num_channels + chan], 0, chan, idx, P_BASIC); + } + + //#define DEBUG + #ifdef _HLSCLIB_DEBUG_ + std::cout << "s_sata" << std::endl; + for (int i=0; i< din->data_size; i++) + std::cout << " " << din->data[i] ; + std::cout << std::endl; + #endif + + // send new configuration + xip_array_uint* fsel = 0; + if ((mode == configonly) || (mode == reloadable)) + { + assert(CONFIG_T::coeff_sets > 1 || CONFIG_T::reloadable); + // Create config packet + xip_array_uint* fsel = xip_array_uint_create(); + xip_array_uint_reserve_dim(fsel,1); + fsel->dim_size = 1; + fsel->dim[0] = CONFIG_T::num_channels; + fsel->data_size = fsel->dim[0]; + if (xip_array_uint_reserve_data(fsel,fsel->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve data!\n"); + return; + } + + xip_fir_v7_2_cnfg_packet cnfg; + cnfg.fsel = fsel; + for (unsigned i = 0; i < cnfg.fsel->data_size; ++i) + cnfg.fsel->data[i] = config[i].to_int(); + + // Send config data + if (xip_fir_v7_2_config_send(mFIR, &cnfg) != XIP_STATUS_OK) { + printf("Error sending config packet\n"); + return; + } + + #ifdef _HLSCLIB_DEBUG_ + std::cout << "Config packet: " ; + for (int i = 0; i < cnfg.fsel->data_size; ++i) + std::cout << " " << cnfg.fsel->data[i]; + std::cout << std::endl; + #endif + } + + xip_fir_v7_2_rld_packet rld; + // send reloaded coefficients + if (mode == reloadable) + { + assert(CONFIG_T::reloadable); + if (CONFIG_T::coeff_sets == 1) + rld.fsel = 0; + else + rld.fsel = reload[0]; + rld.coeff = xip_array_real_create(); + xip_array_real_reserve_dim(rld.coeff,1); + rld.coeff->dim_size=1; + rld.coeff->dim[0]=CONFIG_T::num_coeffs; + rld.coeff->data_size = rld.coeff->dim[0]; + if (xip_array_real_reserve_data(rld.coeff,rld.coeff->data_size) != XIP_STATUS_OK) { + printf("Unable to reserve coeff!\n"); + return; + } + + // Copy coefficients into reload packet + int coeff_i; + bool isAllZero = true; + int coeff_offset = (CONFIG_T::coeff_sets == 1) ? 0 : 1; + for (coeff_i= 0; coeff_i < CONFIG_T::num_coeffs; coeff_i++) { + rld.coeff->data[coeff_i] = (xip_real)(reload[coeff_i + coeff_offset]); + isAllZero &= (reload[coeff_i] == 0); + } + + // Send reload data + if (!isAllZero) { + if ( xip_fir_v7_2_reload_send(mFIR, &rld) != XIP_STATUS_OK) { + printf("Error sending reload packet\n"); + return; + } + + #ifdef _HLSCLIB_DEBUG_ + std::cout << "Reload packet: "; + if (CONFIG_T::coeff_sets > 1) + std::cout << "fsel = " << rld.fsel << "\t; new coeff : "; + for (int i = 0; i < rld.coeff->data_size; ++i) + std::cout << " " << rld.coeff->data[i]; + std::cout << std::endl; + #endif + } + } + + // Send input data and filter + if ( xip_fir_v7_2_data_send(mFIR,din)!= XIP_STATUS_OK) { + printf("Error sending data\n"); + return; + } + + // Retrieve filtered data + if (xip_fir_v7_2_data_get(mFIR,fir_out,0) != XIP_STATUS_OK) { + printf("Error getting data\n"); + return; + } + + // FIXME: assume path=1 and chan = 1 + for (unsigned idx = 0; idx < CONFIG_T::output_length; ++idx) + { + for (unsigned chan = 0; chan < CONFIG_T::num_channels; ++chan) + { + xip_real val; + xip_fir_v7_2_xip_array_real_get_chan(fir_out, &val, 0, chan, idx, P_BASIC); + out[idx * CONFIG_T::num_channels+ chan] = (out_data_t)val; + } + } + + //DEBUG + #ifdef _HLSCLIB_DEBUG_ + std::cout << "m_sata" << std::endl; + for (int i=0; i< fir_out->data_size; i++) + std::cout << " " << fir_out->data[i] ; + std::cout << std::endl; + #endif + + xip_array_real_destroy(din); + xip_array_real_destroy(fir_out); + if (fsel) xip_array_uint_destroy(fsel); + if (mode == reloadable) xip_array_real_destroy(rld.coeff); + } +#endif + + public: + FIR() +#ifndef AESL_SYN + : mFIR(0) +#endif + { +#ifndef AESL_SYN + gen_ip_inst(); +#endif + } + + ~FIR() + { + #ifdef AESL_SYN + #pragma HLS inline + #else + xip_fir_v7_2_destroy(mFIR); + #endif + } + + void run( + in_data_t in_V[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out_V[CONFIG_T::output_length * CONFIG_T::num_channels] + ) + { + #ifdef AESL_SYN + ////////////////////////////////////////////// + // C level synthesis models for hls::fir + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_FIR" variable=return metadata="parameterizable" + + insert_spec(); + for (int i = 0; i < CONFIG_T::input_length; ++i) + out_V[i] = in_V[i]; + + #else + coeff_t reload_coeff[CONFIG_T::num_coeffs]; + for (unsigned int i = 0; i < CONFIG_T::num_coeffs; i++) + reload_coeff[i] = 0; + config_t config[CONFIG_T::num_channels] = {0}; + run_sim(in_V, out_V, config, reload_coeff, dataonly); + #endif + } + + void copy_fir( + in_data_t in_V[CONFIG_T::input_length * CONFIG_T::num_channels], + in_data_t in_V1[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config_V[CONFIG_T::num_channels], + config_t config_V1[CONFIG_T::num_channels]) + { + #pragma HLS inline off + for (int j = 0; j < CONFIG_T::num_channels; ++j) { + #pragma HLS pipeline II=1 + config_V1[j] = config_V[j]; + } + ap_wait(); + + for (int i = 0; i < CONFIG_T::num_channels * CONFIG_T::input_length; ++i) { + #pragma HLS pipeline II=1 + in_V1[i] = in_V[i]; + } + ap_wait(); + } + + void run_fir( + in_data_t in_V[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out_V[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config_V[CONFIG_T::num_channels]) + { + ////////////////////////////////////////////// + // C level synthesis models for hls::fir + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_FIR" variable=return metadata="parameterizable" + + insert_spec(); + // The code below is unused; it just prevents the FE from deleting the block's I/O + bool dummy = false; + + for (int j = 0; j < CONFIG_T::num_channels; ++j) { + dummy |= (config_V[j] != 0); + } + if (dummy) + for (int i = 0; i < CONFIG_T::num_channels * CONFIG_T::input_length; ++i) { + out_V[i] = in_V[i]; + } + } + + void run( + in_data_t in_V[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out_V[CONFIG_T::input_length * CONFIG_T::num_channels], + config_t config_V[CONFIG_T::num_channels]) + { + #ifdef AESL_SYN + #pragma HLS dataflow + in_data_t in_V1[CONFIG_T::input_length * CONFIG_T::num_channels]; + #pragma HLS stream variable=in_V1 + config_t config_V1[CONFIG_T::num_channels]; + #pragma HLS stream variable=config_V1 + + copy_fir(in_V, in_V1, config_V, config_V1); + run_fir(in_V1, out_V, config_V1); + #else + coeff_t reload_coeff[CONFIG_T::num_coeffs]; + for (unsigned int i = 0; i < CONFIG_T::num_coeffs; i++) + reload_coeff[i] = 0; + run_sim(in_V, out_V, config_V, reload_coeff, configonly); + #endif + } + + + void run_fir( + in_data_t in_V[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out_V[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config_V[CONFIG_T::num_channels], + coeff_t reload_V[CONFIG_T::num_coeffs + ((CONFIG_T::coeff_sets == 1) ? 0 : 1)]) + { + ////////////////////////////////////////////// + // C level synthesis models for hls::fir + ////////////////////////////////////////////// + #pragma HLS inline off + #pragma HLS resource core="Vivado_FIR" variable=return metadata="parameterizable" + + insert_spec(); + if (*config_V) + for (int i = 0; i < CONFIG_T::input_length; ++i) + out_V[i] = in_V[i] + reload_V[i & CONFIG_T::num_coeffs]; + } + + void run( + in_data_t in_V[CONFIG_T::input_length * CONFIG_T::num_channels], + out_data_t out_V[CONFIG_T::output_length * CONFIG_T::num_channels], + config_t config_V[CONFIG_T::num_channels], + coeff_t reload_V[CONFIG_T::num_coeffs + ((CONFIG_T::coeff_sets == 1) ? 0 : 1)]) + { + #ifdef AESL_SYN + #pragma HLS dataflow + in_data_t in_V1[CONFIG_T::input_length * CONFIG_T::num_channels]; + #pragma HLS stream variable=in_V1 + config_t config_V1[CONFIG_T::num_channels]; + #pragma HLS array_partition complete variable=config_V1 + + copy_fir(in_V, in_V1, config_V, config_V1); + run_fir(in_V1, out_V, config_V1, reload_V); + #else + run_sim(in_V, out_V, config_V, reload_V, reloadable); + #endif + } + + +}; +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_FIR_H + + diff --git a/vitis/v2021_2/hls_fmod_rem_quo_remainder_divide_apfixed.h b/vitis/v2021_2/hls_fmod_rem_quo_remainder_divide_apfixed.h new file mode 100755 index 00000000..ceccbc1f --- /dev/null +++ b/vitis/v2021_2/hls_fmod_rem_quo_remainder_divide_apfixed.h @@ -0,0 +1,230 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2016 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_fmod_rem_quo.h + * + */ +#ifndef _X_HLS_FMOD_REM_QUO_H_ +#define _X_HLS_FMOD_REM_QUO_H_ + +#include "ap_int.h" +#include "ap_fixed.h" +#include "hls_round_copysign_apfixed.h" + +namespace hls_internal{ + //divide for ap_fixed numerator and denominator + template + ap_fixed generic_divide(ap_fixed x, ap_fixed y){ + if(y==0){//case y==0, return error and stop + #ifndef __SYNTHESIS__ + printf("ERROR:hls_math.h:divisor cannot be zero"); + exit(1); + #else + return 0; + #endif + } else{ + return(x/y); + } + } + //divide for ap_ufixed numerator and denominator + template + ap_ufixed generic_divide(ap_ufixed x, ap_ufixed y){ + ap_fixed x1 = x; + ap_fixed y1 = y; + return generic_divide(x1,y1); + } + //divide for ap_int + template + ap_int generic_divide(ap_int x, ap_int y){ + ap_fixed x1 = x; + ap_fixed y1 = y; + return generic_divide(x1,y1); + } + //divide for ap_uint + template + ap_uint generic_divide(ap_uint x, ap_uint y){ + ap_ufixed x1 = x; + ap_ufixed y1 = y; + return generic_divide(x1,y1); + } + //fmod for ap_fixed + template + ap_fixed generic_fmod(ap_fixed x, ap_fixed y){ + ap_ufixed x_pos = fabs_fixed((ap_fixed)x); + ap_ufixed y_pos = fabs_fixed((ap_fixed)y); + //std::cout<<"x_pos"< x_int = 0; + ap_uint y_int = 0; + x_int(W_-1,0) = x_pos(W_-1,0); + y_int(W_-1,0) = y_pos(W_-1,0); + //use less resource + //for(int i = 0; i < W_; ++i) { + // if(x_int > y_int) { + // x_int -= y_int; + // } + //} + ap_uint d = x_int/y_int; + //std::cout<<"d="< rem = x_int - d*y_int; + //std::cout<<"rem="< r = 0; + r(W_-1,0) = rem(W_-1,0); + if(x[W_-1]) return -r; + else return r; + } + } + + //fmod for ap_ufixed + template + ap_ufixed generic_fmod(ap_ufixed x, ap_ufixed y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_fmod(xi,yi); + } + //fmod for ap_int + template + ap_int generic_fmod(ap_int x, ap_int y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_fmod(xi,yi); + } + //fmod for ap_uint + template + ap_uint generic_fmod(ap_uint x, ap_uint y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_fmod(xi,yi); + } + + //remquo for ap_fixed + template + ap_fixed generic_remquo(ap_fixed x, ap_fixed y, int* quo){ + ap_ufixed x_pos = fabs_fixed((ap_fixed)x); + ap_ufixed y_pos = fabs_fixed((ap_fixed)y); + if(x_pos==0 || y_pos==0) { + *quo = 0; + return 0; + } else if(x_pos == y_pos) { + if(x[W_-1]==y[W_-1]) *quo = 1; + else *quo = -1; + return 0; + } + //else if(x_pos < y_pos) return x; + else { + ap_uint x_int = 0; + ap_uint y_int = 0; + x_int(W_-1,0) = x_pos(W_-1,0); + y_int(W_-1,0) = y_pos(W_-1,0); + //for(int i = 0; i < W_; ++i) { + // if(x_int > y_int) { + // x_int -= y_int; + // } + //} + ap_uint d = x_int/y_int; + ap_uint rem = x_int - d*y_int; + //adjust the result + ap_uint y_half = 0; + y_half(W_-2,0) = y_int(W_-1,1); + ap_uint<1> r_sig = x[W_-1]; + if(rem > y_half) { + rem = y_int - rem; + d++; + if(x[W_-1]) r_sig = 0; + else r_sig = 1; + } + //return the results + if(x[W_-1]==y[W_-1]) *quo = d; + else *quo = -d; + ap_fixed r = 0; + r(W_-1,0) = rem(W_-1,0); + if(r_sig) return -r; + else return r; + } + } + //, y, quoremquo for ap_ufixed + template + ap_ufixed generic_remquo(ap_ufixed x, ap_ufixed y, int* quo){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remquo(xi,yi,quo); + } + //remquo for ap_int + template + ap_int generic_remquo(ap_int x, ap_int y, int* quo){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remquo(xi,yi,quo); + } + //remquo for ap_uint + template + ap_uint generic_remquo(ap_uint x, ap_uint y, int* quo){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remquo(xi,yi,quo); + } + + //remainder for ap_fixed + template + ap_fixed generic_remainder(ap_fixed x, ap_fixed y){ + int quo = 0; + return generic_remquo(x, y, &quo); + } + //remainder for ap_ufixed + template + ap_ufixed generic_remainder(ap_ufixed x, ap_ufixed y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remainder(xi,yi); + } + //remainder for ap_int + template + ap_int generic_remainder(ap_int x, ap_int y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remainder(xi,yi); + } + //remainder for ap_uint + template + ap_uint generic_remainder(ap_uint x, ap_uint y){ + ap_fixed xi = x; + ap_fixed yi = y; + return generic_remainder(xi,yi); + } +} +#endif // entire file + diff --git a/vitis/v2021_2/hls_fpo.h b/vitis/v2021_2/hls_fpo.h new file mode 100755 index 00000000..dfd2dedf --- /dev/null +++ b/vitis/v2021_2/hls_fpo.h @@ -0,0 +1,668 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c -*-*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + + +#ifndef __AESL_FPO_H__ +#define __AESL_FPO_H__ + +#ifndef __SYNTHESIS__ +#include +#endif + +#include + +#if defined __arm__ && !(defined HLS_NO_XIL_FPO_LIB) +#warning "Xilinx Floating Point Operator IP core does not provide simulation models for ARM architecture. Automatically defining HLS_NO_XIL_FPO_LIB in order to avoid this library dependency, although bit-accurate simulation of some functions is no longer possible. You can make this warning go away by adding this define yourself before including any other files." +#define HLS_NO_XIL_FPO_LIB +#endif + +#ifdef __SYNTHESIS__ +#define HLS_FPO_SQRTF(a) __builtin_sqrtf(a) +#define HLS_FPO_SQRT(a) __builtin_sqrt(a) +#define HLS_FPO_RECSQRTF(a) __builtin_rsqrtf(a) +#define HLS_FPO_RECSQRT(a) __builtin_rsqrt(a) +#define HLS_FPO_ABSF(a) __builtin_fabsf(a) +#define HLS_FPO_ABS(a) __builtin_fabs(a) +#define HLS_FPO_LOGF(a) __builtin_logf(a) +#define HLS_FPO_LOG(a) __builtin_log(a) +#define HLS_FPO_EXPF(a) __builtin_expf(a) +#define HLS_FPO_EXP(a) __builtin_exp(a) +#define HLS_FPO_RECIPF(a) __builtin_recipf(a) +#define HLS_FPO_RECIP(a) __builtin_recip(a) +#else// csim +#ifdef HLS_NO_XIL_FPO_LIB +#define HLS_FPO_SQRTF(a) sqrtf(a) +#define HLS_FPO_SQRT(a) sqrt(a) +#define HLS_FPO_RECSQRTF(a) (1.0f/sqrtf(a)) +#define HLS_FPO_RECSQRT(a) (1.0/sqrt(a)) +#define HLS_FPO_ABSF(a) fabsf(a) +#define HLS_FPO_ABS(a) fabs(a) +#define HLS_FPO_LOGF(a) logf(a) +#define HLS_FPO_LOG(a) log(a) +#define HLS_FPO_EXPF(a) expf(a) +#define HLS_FPO_EXP(a) exp(a) +#define HLS_FPO_RECIPF(a) (1.0f/a) +#define HLS_FPO_RECIP(a) (1.0/a) +#else +#define HLS_FPO_SQRTF(a) xil_fpo_sqrt_flt(a) +#define HLS_FPO_SQRT(a) xil_fpo_sqrt_d(a) +#define HLS_FPO_RECSQRTF(a) xil_fpo_recsqrt_flt(a) +#define HLS_FPO_RECSQRT(a) xil_fpo_recsqrt_d(a) +#define HLS_FPO_ABSF(a) xil_fpo_abs_flt(a) +#define HLS_FPO_ABS(a) xil_fpo_abs_d(a) +#define HLS_FPO_LOGF(a) xil_fpo_log_flt(a) +#define HLS_FPO_LOG(a) xil_fpo_log_d(a) +#define HLS_FPO_EXPF(a) xil_fpo_exp_flt(a) +#define HLS_FPO_EXP(a) xil_fpo_exp_d(a) +#define HLS_FPO_RECIPF(a) xil_fpo_rec_flt(a) +#define HLS_FPO_RECIP(a) xil_fpo_rec_d(a) +#endif //HLS_NO_XIL_FPO_LIB +#endif //__SYNTHESIS__ + +#if (defined __SYNTHESIS__ || defined HLS_NO_XIL_FPO_LIB) +#define HLS_FPO_ADDF(a,b) ((a) + (b)) +#define HLS_FPO_ADD(a,b) ((a) + (b)) +#define HLS_FPO_SUBF(a,b) ((a) - (b)) +#define HLS_FPO_SUB(a,b) ((a) - (b)) +#define HLS_FPO_MULF(a,b) ((a) * (b)) +#define HLS_FPO_MUL(a,b) ((a) * (b)) +#define HLS_FPO_DIVF(a,b) ((a)/(b)) +#define HLS_FPO_DIV(a,b) ((a)/(b)) +#define HLS_FPO_RECF(a) HLS_FPO_RECIPF(a) +#define HLS_FPO_REC(a) HLS_FPO_RECIP(a) +#define HLS_FPO_RSQRTF(a) HLS_FPO_RECSQRTF(a) +#define HLS_FPO_RSQRT(a) HLS_FPO_RECSQRT(a) +//#define HLS_FPO_UNORDEREDF(a,b) +//#define HLS_FPO_UNORDERED(a,b) +#define HLS_FPO_EQUALF(a,b) ((a) == (b)) +#define HLS_FPO_EQUAL(a,b) ((a) == (b)) +#define HLS_FPO_LESSF(a,b) ((a) < (b)) +#define HLS_FPO_LESS(a,b) ((a) < (b)) +#define HLS_FPO_LESSEQUALF(a,b) ((a) <= (b)) +#define HLS_FPO_LESSEQUAL(a,b) ((a) <= (b)) +#define HLS_FPO_GREATERF(a,b) ((a) > (b)) +#define HLS_FPO_GREATER(a,b) ((a) > (b)) +#define HLS_FPO_GREATEREQUALF(a,b) ((a) >= (b)) +#define HLS_FPO_GREATEREQUAL(a,b) ((a) >= (b)) +#define HLS_FPO_NOTEQUALF(a,b) ((a) != (b)) +#define HLS_FPO_NOTEQUAL(a,b) ((a) != (b)) +//#define HLS_FPO_CONDCODEF(a,b) +//#define HLS_FPO_CONDCODE(a,b) +#define HLS_FPO_FTOI(a) ((int)(a)) +#define HLS_FPO_DTOI(a) ((int)(a)) +#define HLS_FPO_ITOF(a) ((float)(a)) +#define HLS_FPO_ITOD(a) ((double)(a)) +#define HLS_FPO_FTOF(a) ((float)(a)) +#define HLS_FPO_DTOF(a) ((float)(a)) +#define HLS_FPO_FTOD(a) ((double)(a)) +#define HLS_FPO_DTOD(a) ((double)(a)) +#else +#define HLS_FPO_ADDF(a,b) xil_fpo_add_flt(a,b) +#define HLS_FPO_ADD(a,b) xil_fpo_add_d(a,b) +#define HLS_FPO_SUBF(a,b) xil_fpo_sub_flt(a,b) +#define HLS_FPO_SUB(a,b) xil_fpo_sub_d(a,b) +#define HLS_FPO_MULF(a,b) xil_fpo_mul_flt(a,b) +#define HLS_FPO_MUL(a,b) xil_fpo_mul_d(a,b) +#define HLS_FPO_DIVF(a,b) xil_fpo_div_flt(a,b) +#define HLS_FPO_DIV(a,b) xil_fpo_div_d(a,b) +#define HLS_FPO_RECF(a) HLS_FPO_RECIPF(a) +#define HLS_FPO_REC(a) HLS_FPO_RECIP(a) +#define HLS_FPO_RSQRTF(a) HLS_FPO_RECSQRTF(a) +#define HLS_FPO_RSQRT(a) HLS_FPO_RECSQRT(a) +#define HLS_FPO_UNORDEREDF(a,b) xil_fpo_unordered_flt(a,b) +#define HLS_FPO_UNORDERED(a,b) xil_fpo_unordered_d(a,b) +#define HLS_FPO_EQUALF(a,b) xil_fpo_equal_flt(a,b) +#define HLS_FPO_EQUAL(a,b) xil_fpo_equal_d(a,b) +#define HLS_FPO_LESSF(a,b) xil_fpo_less_flt(a,b) +#define HLS_FPO_LESS(a,b) xil_fpo_less_d(a,b) +#define HLS_FPO_LESSEQUALF(a,b) xil_fpo_lessequal_flt(a,b) +#define HLS_FPO_LESSEQUAL(a,b) xil_fpo_lessequal_d(a,b) +#define HLS_FPO_GREATERF(a,b) xil_fpo_greater_flt(a,b) +#define HLS_FPO_GREATER(a,b) xil_fpo_greater_d(a,b) +#define HLS_FPO_GREATEREQUALF(a,b) xil_fpo_greaterequal_flt(a,b) +#define HLS_FPO_GREATEREQUAL(a,b) xil_fpo_greaterequal_d(a,b) +#define HLS_FPO_NOTEQUALF(a,b) xil_fpo_notequal_flt(a,b) +#define HLS_FPO_NOTEQUAL(a,b) xil_fpo_notequal_d(a,b) +#define HLS_FPO_CONDCODEF(a,b) xil_fpo_condcode_flt(a,b) +#define HLS_FPO_CONDCODE(a,b) xil_fpo_condcode_d(a,b) +#define HLS_FPO_FTOI(a) xil_fpo_flttofix_int_flt(a) +#define HLS_FPO_DTOI(a) xil_fpo_flttofix_int_d(a) +#define HLS_FPO_ITOF(a) xil_fpo_fixtoflt_flt_int(a) +#define HLS_FPO_ITOD(a) xil_fpo_fixtoflt_d_int(a) +#define HLS_FPO_FTOF(a) xil_fpo_flttoflt_flt_flt(a) +#define HLS_FPO_DTOF(a) xil_fpo_flttoflt_flt_d(a) +#define HLS_FPO_FTOD(a) xil_fpo_flttoflt_d_flt(a) +#define HLS_FPO_DTOD(a) xil_fpo_flttoflt_d_d(a) + + +#include "floating_point_v7_0_bitacc_cmodel.h" // Must include before GMP and MPFR +#include "gmp.h" +#include "mpfr.h" + + //////////////////////////////////////////////////////////////////////// + // Operation functions: add + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_add_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_add_flt + xip_fpo_add_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_add_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_add_d + xip_fpo_add_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: subtract + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_sub_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_sub_flt + xip_fpo_sub_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_sub_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_sub_d + xip_fpo_sub_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: multiply + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_mul_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_mul_flt + xip_fpo_mul_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_mul_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_mul_d + xip_fpo_mul_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: divide + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_div_flt(float a, float b) +{ + float res_flt = 0.0f; + + // xip_fpo_div_flt + xip_fpo_div_flt(&res_flt, a, b); // normal operation + return res_flt; +} + +inline double xil_fpo_div_d(double a, double b) +{ + double res_d = 0.0; + + // xip_fpo_div_d + xip_fpo_div_d(&res_d, a, b); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: reciprocal + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_rec_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_rec_flt + xip_fpo_rec_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_rec_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_rec_d + xip_fpo_rec_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: square root + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_sqrt_flt(float a) +{ +// printf("Testing operation functions: square root\n"); + float res_flt = 0.0f; + + // xip_fpo_sqrt_flt + xip_fpo_sqrt_flt(&res_flt, a); // normal operation +// printf("float = sqrtf(a), and got res_flt=%f\n", res_flt); + return res_flt; +} + +inline double xil_fpo_sqrt_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_sqrt_d + xip_fpo_sqrt_d(&res_d, a); // normal operation +// printf("double = sqrt(a), and got res_d=%f\n", res_d); + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: reciprocal square root + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_recsqrt_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_recsqrt_flt + xip_fpo_recsqrt_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_recsqrt_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_recsqrt_d + xip_fpo_recsqrt_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: absolute value + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_abs_flt(float a) +{ + float res_flt = 0.0f; + + xip_fpo_abs_flt(&res_flt, a); + return res_flt; +} + +inline double xil_fpo_abs_d(double a) +{ + double res_d = 0.0; + + xip_fpo_abs_d(&res_d, a); + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: logarithm + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_log_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_log_flt + xip_fpo_log_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_log_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_log_d + xip_fpo_log_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: Exponential + //////////////////////////////////////////////////////////////////////// + +inline float xil_fpo_exp_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_exp_flt + xip_fpo_exp_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_exp_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_exp_d + xip_fpo_exp_d(&res_d, a); // normal operation + return res_d; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare unordered + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_unordered_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_unordered_flt + xip_fpo_unordered_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_unordered_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_unordered_d + xip_fpo_unordered_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare equal + //////////////////////////////////////////////////////////////////////// + + +inline int xil_fpo_equal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_equal_flt + xip_fpo_equal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_equal_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_equal_d + xip_fpo_equal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare less than + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_less_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_less_flt + xip_fpo_less_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_less_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_less_d + xip_fpo_less_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare less than or equal + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_lessequal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_lessequal_flt + xip_fpo_lessequal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_lessequal_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_lessequal_d + xip_fpo_lessequal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare greater than + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_greater_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_greater_flt + xip_fpo_greater_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_greater_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_greater_d + xip_fpo_greater_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare greater than or equal + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_greaterequal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_greaterequal_flt + xip_fpo_greaterequal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_greaterequal_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_greaterequal_d + xip_fpo_greaterequal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare not equal + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_notequal_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_notequal_flt + xip_fpo_notequal_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_notequal_d(double a, double b) +{ + int res_int = 0; + + xip_fpo_notequal_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Operation functions: compare condition code + //////////////////////////////////////////////////////////////////////// + +inline int xil_fpo_condcode_flt(float a, float b) +{ + int res_int = 0; + + // xip_fpo_condcode_flt + xip_fpo_condcode_flt(&res_int, a, b); // normal operation + return res_int; +} + +inline int xil_fpo_condcode_d(double a, double b) +{ + int res_int = 0; + + // xip_fpo_condcode_d + xip_fpo_condcode_d(&res_int, a, b); // normal operation + return res_int; +} + + //////////////////////////////////////////////////////////////////////// + // Conversion functions: conversion code + //////////////////////////////////////////////////////////////////////// +inline int xil_fpo_flttofix_int_flt(float a) +{ + int res_int = 0; + + // xip_fpo_flttofix_int_flt + xip_fpo_flttofix_int_flt(&res_int, a); // normal operation + return res_int; +} + +inline int xil_fpo_flttofix_int_d(double a) +{ + int res_int = 0; + + // xip_fpo_flttofix_int_d + xip_fpo_flttofix_int_d(&res_int, a); // normal operation + return res_int; +} + +inline float xil_fpo_fixtoflt_flt_int(int a) +{ + float res_flt = 0.0f; + + // xip_fpo_fixtoflt_flt_int + xip_fpo_fixtoflt_flt_int(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_fixtoflt_d_int(int a) +{ + double res_d = 0.0; + + // xip_fpo_fixtoflt_d_int + xip_fpo_fixtoflt_d_int(&res_d, a); // normal operation + return res_d; +} + +inline float xil_fpo_flttoflt_flt_flt(float a) +{ + float res_flt = 0.0f; + + // xip_fpo_flttoflt_flt_flt + xip_fpo_flttoflt_flt_flt(&res_flt, a); // normal operation + return res_flt; +} + +inline float xil_fpo_flttoflt_flt_d(double a) +{ + float res_flt = 0.0f; + + // xip_fpo_flttoflt_flt_d + xip_fpo_flttoflt_flt_d(&res_flt, a); // normal operation + return res_flt; +} + +inline double xil_fpo_flttoflt_d_flt(float a) +{ + double res_d = 0.0; + + // xip_fpo_flttoflt_d_flt + xip_fpo_flttoflt_d_flt(&res_d, a); // normal operation + return res_d; +} + +inline double xil_fpo_flttoflt_d_d(double a) +{ + double res_d = 0.0; + + // xip_fpo_flttoflt_d_d + xip_fpo_flttoflt_d_d(&res_d, a); // normal operation + return res_d; +} + +#endif +#endif /* #ifndef __AESL_FPO_H__*/ + + diff --git a/vitis/v2021_2/hls_fract_apfixed.h b/vitis/v2021_2/hls_fract_apfixed.h new file mode 100755 index 00000000..5ba97b8e --- /dev/null +++ b/vitis/v2021_2/hls_fract_apfixed.h @@ -0,0 +1,39 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef _X_HLS_GENERIC_FRACT_H_ +#define _X_HLS_GENERIC_FRACT_H_ + +#include "utils/x_hls_defines.h" +#include "utils/x_hls_utils.h" +#include "utils/x_hls_traits.h" + +namespace hls_fract { +//fract for ap_fixed +template +ap_fixed generic_fract(ap_fixed x){ + if (W_==I_)return 0; + ap_fixed x1=x; + ap_fixed x2=x1+ap_int<2>(1); + return x[W_-1]?x2:x1; +} +//fract for ap_ufixed +template +ap_ufixed generic_fract(ap_ufixed x){ + ap_fixed x1=x; + return generic_fract(x1); +} +//fract for ap_int +template +ap_int generic_fract(ap_int x){ + ap_fixed x1 = x; + return generic_fract(x1); +} +//fract for ap_uint +template +ap_uint generic_fract(ap_uint x){ + ap_ufixed x1 = x; + return generic_fract(x1); +} +} +#endif + + diff --git a/vitis/v2021_2/hls_frexp_apfixed.h b/vitis/v2021_2/hls_frexp_apfixed.h new file mode 100755 index 00000000..6a6a615d --- /dev/null +++ b/vitis/v2021_2/hls_frexp_apfixed.h @@ -0,0 +1,130 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 + +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +/** + * @file hls_frexp_ap_fixed.h + * @brief implement frexp function for ap_fixed data type. + */ +#ifndef _X_HLS_FREXP_APFIXED_H_ +#define _X_HLS_FREXP_APFIXED_H_ +#include "ap_fixed.h" +#include "hls_round_copysign_apfixed.h" +namespace frexp_internal { + +template +ap_fixed frexp(ap_fixed x, + ap_fixed* exp){ + if(I<0) { + *exp = 0; + return x; + } + static const int F = W - I; + static const int we = W > 5 ? W/2 : 3;//width of exp, should be log2(W) + 1; + + ap_int e = 0; + ap_ufixed r_p = 0; + + ap_fixed xi = x; + ap_ufixed x_p = fabs_fixed(xi); + + static const ap_uint<3> clz_table_6bit[64] = {7, 6, 5, 5, 4, 4, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1}; + int pos = 0;//should be log(mqx(I,F)); + //use clz_table to reduce the loop_tripcount + static const int loop_nm = W > 6 ? (W + 5)/6 : 1; + CLZ_LOOP: + for(int l = loop_nm; l > 0; --l){ + #pragma HLS pipeline II=1 + ap_uint<6> t = 0; + if(l*6 > W) t = x_p(W - 1, (l - 1) * 6); + else t = x_p(l * 6 - 1, (l - 1) * 6); + if((t & 0x3f) != 0) { + pos = l * 6 - clz_table_6bit[t]; + break; + } + } + if(pos >= 0) { + e = pos + 1 - F; + if(F > 0) { + ap_uint w_f = (pos + 1) < F ? (pos + 1) : F; + r_p(F - 1,F - w_f) = x_p(pos, pos + 1 - w_f); + } + } else { + e = 0; + r_p = 0; + } + ap_fixed r = 0; + if(xi[W-1]) r = -r_p; + else r = r_p; + #ifndef __SYNTHESIS__ + assert(r > -1 && r < 1); + #endif + *exp = e; + return r; +} +template +ap_ufixed frexp(ap_ufixed x, + ap_ufixed* exp){ + ap_fixed xe = x; + ap_fixed ee = 0; + ap_fixed r = frexp(xe,&ee); + *exp = ee; + return r; +} +template +ap_uint frexp(ap_uint x, + ap_uint* exp) { + ap_fixed xe = x; + ap_fixed ee = 0; + ap_fixed r = frexp(xe,&ee); + *exp = ee; + return r; +} +template +ap_int frexp(ap_int x, + ap_int* exp) { + ap_fixed xe = x; + ap_fixed ee = 0; + ap_fixed r = frexp(xe,&ee); + *exp = ee; + return r; +} +} +#endif//define _X_HLS_FREXP_APFIXED_H_ + + diff --git a/vitis/v2021_2/hls_half.h b/vitis/v2021_2/hls_half.h new file mode 100755 index 00000000..98dea3d9 --- /dev/null +++ b/vitis/v2021_2/hls_half.h @@ -0,0 +1,200 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ +#ifndef __HLS_HALF_H__ +#define __HLS_HALF_H__ + +#ifdef __SYNTHESIS__ + +#ifndef _HLS_HALF_DEFINED_ +typedef __fp16 half; +#endif +#else // AESL_SYN + +#ifndef __cplusplus +#error C++ is required to include this header file +#endif + +#if defined __arm__ && !(defined HLS_NO_XIL_FPO_LIB) +#warning "Xilinx Floating Point Operator IP core does not provide simulation models for ARM architecture. Automatically defining HLS_NO_XIL_FPO_LIB in order to avoid this library dependency, although bit-accurate simulation of some functions is no longer possible. You can make this warning go away by adding this define yourself before including any other files." +#define HLS_NO_XIL_FPO_LIB +#endif + +#ifndef HLS_NO_XIL_FPO_LIB +#include "hls_half_fpo.h" +#else +#include "hls_half_sim.h" +#endif + +#include +#include +/// Extensions to the C++ standard library. +// It is used in hlsmath lib. +namespace std { +/// Numeric limits for half-precision floats. +/// Because of the underlying single-precision implementation of many operations, it inherits some properties from +/// `std::numeric_limits`. +template <> +struct numeric_limits : public numeric_limits { + public: + /// Supports signed values. + static const bool is_signed = true; + + /// Is not exact. + static const bool is_exact = false; + + /// Doesn't provide modulo arithmetic. + static const bool is_modulo = false; + + /// IEEE conformant. + static const bool is_iec559 = true; + + /// Supports infinity. + static const bool has_infinity = true; + + /// Supports quiet NaNs. + static const bool has_quiet_NaN = true; + + /// Supports subnormal values. + static const float_denorm_style has_denorm = denorm_present; + + /// Significant digits. + static const int digits = 11; + + /// Significant decimal digits. + static const int digits10 = 3; + + /// Required decimal digits to represent all possible values. + static const int max_digits10 = 5; + + /// Number base. + static const int radix = 2; + + /// One more than smallest exponent. + static const int min_exponent = -13; + + /// Smallest normalized representable power of 10. + static const int min_exponent10 = -4; + + /// One more than largest exponent + static const int max_exponent = 16; + + /// Largest finitely representable power of 10. + static const int max_exponent10 = 4; + + /// Smallest positive normal value. + static half min() throw() { + half t; + t.set_bits(0x0400); + return t; + } + + /// Smallest finite value. + static half lowest() throw() { + half t; + t.set_bits(0xFBFF); + return t; + } + /// Largest finite value. + static half max() throw() { + half t; + t.set_bits(0x7BFF); + return t; + } + + /// Difference between one and next representable value. + static half epsilon() throw() { + half t; + t.set_bits(0x1400); + return t; + } + + /// Maximum rounding error. + static half round_error() throw() { + half t; + t.set_bits(0x3800); + return t; + } + + /// Positive infinity. + static half infinity() throw() { + half t; + t.set_bits(0x7C00); + return t; + } + + /// Quiet NaN. + static half quiet_NaN() throw() { + half t; + t.set_bits(0x7FFF); + return t; + } + + /// Signalling NaN. + static half signaling_NaN() throw() { + half t; + t.set_bits(0x7DFF); + return t; + } + + /// Smallest positive subnormal value. + static half denorm_min() throw() { + half t; + t.set_bits(0x0001); + return t; + } +}; // numeric_limits +} // namespace std + +#include "hls_half_x_utils.h" + +#endif // __SYNTHESIS__ + +#endif // __HLS_HALF__ diff --git a/vitis/v2021_2/hls_half_fpo.h b/vitis/v2021_2/hls_half_fpo.h new file mode 100755 index 00000000..f0163f33 --- /dev/null +++ b/vitis/v2021_2/hls_half_fpo.h @@ -0,0 +1,654 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ +#ifndef __HLS_HALF_FPO_H__ +#define __HLS_HALF_FPO_H__ +// This is just for csim and cosim instead of synthesis. +// That is to say, __SYNTHESIS__ and HLS_NO_XIL_FPO_LIB are not defined. +#ifndef __cplusplus +#error C++ is required to include this header file +#endif + +#include +#include + +// XXX work-around old version of GMP with C++11 used by fpo. +#include +#include "hls_fpo.h" + +// Forward declaration of ap_fixed_base. +#include "ap_decl.h" + +// Fiddle an MPFR variable to contain the same information as an xip_fpo_t variable without allocating memory +// m is the mpfr_t variable (destination), x is the xip_fpo_t variable (source) +// First variant: copy all information +#define XIP_FPO_2_MPFR(m, x) \ + (m)->_mpfr_prec = (x)->_xip_fpo_mant_prec; \ + (m)->_mpfr_sign = (x)->_xip_fpo_sign; \ + (m)->_mpfr_exp = (x)->_xip_fpo_exp; \ + (m)->_mpfr_d = (x)->_xip_fpo_d; + +class half { + public: + typedef unsigned short uint16; + template + struct half_traits; + + /* 16-bit float following IEEE 754 + 16 bits inside float value + 0 00000 0000000000 = 0x0000 = 0 + 1 00000 0000000000 = 0x8000 = -0 + + 0 11111 0000000000 = 0x7c00 = infinity + 1 11111 0000000000 = 0xfc00 = -infinity + 0 11110 1111111111 = 0x7bff = max = 65504 + x 11111 yyyyyyyyyy = = nan, in which yyyyyyyy !=0 + + */ + half() : m_data() {} + half(float rhs) { + xip_fpo_half_set_flt(rhs); + } + + /// Conversion constructor from AP types. + template + half(const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& rhs) { + std::cout << "WARNING: explicit method ap_fixed::to_half() should be used to convert ap_fixed to half." + << std::endl; + *this = rhs.to_half(); + } + + template + half(const ap_int_base<_AP_W, _AP_S>& rhs) { + *this = rhs.to_half(); + } + + template + half& operator =(const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N>& rhs) { + return *this = rhs.to_half(); + } + template + half& operator =(const ap_int_base<_AP_W, _AP_S>& rhs) { + return *this = rhs.to_half(); + } + + static bool half_isnan(half hf) { return (hf.m_data & 0x7FFF) > 0x7C00; } + + // half to float implictly or explictly + // for example, static_cast (half) + operator float() const { return xip_fpo_half_get_flt(); } + + half& operator=(float rhs) { return *this = half(rhs); } + + //--------------- unary operation -----------/ + template + half& operator+=(const T& rhs) { + return *this = half_axu_functions::half_plus(*this, rhs); + } + half& operator+=(const half& rhs) { return *this = *this + rhs; } + + template + half& operator-=(const T& rhs) { + return *this = half_axu_functions::half_minus(*this, rhs); + } + + half& operator-=(const half& rhs) { return *this = *this - rhs; } + + template + half& operator*=(const T& rhs) { + return *this = half_axu_functions::half_multiplies(*this, rhs); + } + + half& operator*=(const half& rhs) { return *this = *this * rhs; } + + template + half& operator/=(const T& rhs) { + return *this = half_axu_functions::half_divides(*this, rhs); + } + + half& operator/=(const half& rhs) { return *this = *this / rhs; } + + /// Prefix increment. + half& operator++() { return *this += 1.0f; } + + /// Prefix decrement. + half& operator--() { return *this -= 1.0f; } + + /// Postfix increment. + half operator++(int) { + half out(*this); + ++*this; + return out; + } + + /// Postfix decrement. + half operator--(int) { + half out(*this); + --*this; + return out; + } + //--------------- unary operation -----------/ + + //------------- native data -----------------/ + void set_bits(uint16 d) { m_data = d; } + + uint16 get_bits() { return m_data; } + + private: + // Unsigned integer of (at least) 16 bits width. + uint16 m_data; + //------------- native data -----------------/ + + friend std::ostream& operator<<(std::ostream& out, const half& hf) { + float f = static_cast(hf); + return out << f; + } + + friend std::istream& operator>>(std::istream& in, half& hf) { + float f; + if (in >> f) hf = static_cast(f); + return in; + } + + public: + //---------- arithemic operations------/ + + // plus T + half + template + friend typename half::half_traits::rtvl_t operator+(const T& lhs, const half& rhs) { + return half_axu_functions::half_plus(lhs, rhs); + } + + // plus half + T + template + typename half::half_traits::rtvl_t operator+(const T& rhs) { + return half_axu_functions::half_plus(*this, rhs); + } + + // plus half + half + half operator+(const half& rhs) { return half_axu_functions::half_plus(*this, rhs); } + + // sub T - half + template + friend typename half::half_traits::rtvl_t operator-(const T& lhs, const half& rhs) { + return half_axu_functions::half_minus(lhs, rhs); + } + + // sub half - T + template + typename half::half_traits::rtvl_t operator-(const T& rhs) { + return half_axu_functions::half_minus(*this, rhs); + } + // sub half - half + half operator-(const half& rhs) { return half_axu_functions::half_minus(*this, rhs); } + + // mul T * half + template + friend typename half::half_traits::rtvl_t operator*(const T& lhs, const half& rhs) { + return half_axu_functions::half_multiplies(lhs, rhs); + } + + // mul half * T + template + typename half::half_traits::rtvl_t operator*(const T& rhs) { + return half_axu_functions::half_multiplies(*this, rhs); + } + // mul half * half + half operator*(const half& rhs) { return half_axu_functions::half_multiplies(*this, rhs); } + + // div T / half + template + friend typename half::half_traits::rtvl_t operator/(const T& lhs, const half& rhs) { + return half_axu_functions::half_divides(lhs, rhs); + } + + // div half / T + template + typename half::half_traits::rtvl_t operator/(const T& rhs) { + return half_axu_functions::half_divides(*this, rhs); + } + // div half/half + half operator/(const half& rhs) { return half_axu_functions::half_divides(*this, rhs); } + + //----------- comparison-----------------// + /* + // It seems to conflict with ap_private. + template + friend bool operator== (const T& lhs, const half& rhs) { + return half_axu_functions::half_isequal(lhs, rhs); + } + + template + friend bool operator!= (const T& lhs, const half& rhs) { + return half_axu_functions::half_isnotequal(lhs, rhs); + } + template + friend bool operator> (const T& lhs, const half& rhs) { + return half_axu_functions::half_isgreater(lhs, rhs); + } + + template + friend bool operator>= (const T& lhs, const half& rhs) { + return half_axu_functions::half_isgreaterequal(lhs, rhs); + } + + template + friend bool operator< (const T& lhs, const half& rhs) { + return half_axu_functions::half_isless(lhs, rhs); + } + + + template + friend bool operator<= (const T& lhs, const half& rhs) { + return half_axu_functions::half_islessequal(lhs, rhs); + } + + */ + template + bool operator==(const T& rhs) { + return half_axu_functions::half_isequal(*this, rhs); + } + bool operator==(const half& rhs) { return half_axu_functions::half_isequal(*this, rhs); } + + template + bool operator!=(const T& rhs) { + return half_axu_functions::half_isnotequal(*this, rhs); + } + bool operator!=(const half& rhs) { return half_axu_functions::half_isnotequal(*this, rhs); } + + template + bool operator>(const T& rhs) { + return half_axu_functions::half_isgreater(*this, rhs); + } + bool operator>(const half& rhs) { return half_axu_functions::half_isgreater(*this, rhs); } + template + + bool operator>=(const T& rhs) { + return half_axu_functions::half_isgreaterequal(*this, rhs); + } + bool operator>=(const half& rhs) { return half_axu_functions::half_isgreaterequal(*this, rhs); } + + template + bool operator<(const T& rhs) { + return half_axu_functions::half_isless(*this, rhs); + } + bool operator<(const half& rhs) { return half_axu_functions::half_isless(*this, rhs); } + + template + bool operator<=(const T& rhs) { + return half_axu_functions::half_islessequal(*this, rhs); + } + bool operator<=(const half& rhs) { return half_axu_functions::half_islessequal(*this, rhs); } + //----------- comparison-----------------// + + //---------------- xilinx float point ----------// + // half simulation model with Xilinx Floating Point Operator IP core + // bit-accurate simulation ref PG60, here provides some functions with one or two arguments which invoke inner + // datatype and functions in lib. F is an operation function, such as xip_fpo_add_flt, xip_fpo_sub. + template + static half math_function_1arg(F f, half x) { + half res; + xip_fpo_t rop, xop; + xip_fpo_inits2(5, 11, rop, xop, (xip_fpo_ptr)0); + x.xip_fpo_get_data(xop); + f(rop, xop); + res.xip_fpo_set_data(rop); + xip_fpo_clears(rop, xop, (xip_fpo_ptr)0); + return res; + } + + template + static half binary_operator(F f, half x, half y) { + half res; + xip_fpo_t op, xop, yop; + xip_fpo_inits2(5, 11, op, xop, yop, (xip_fpo_ptr)0); + x.xip_fpo_get_data(xop); + y.xip_fpo_get_data(yop); + f(op, xop, yop); + res.xip_fpo_set_data(op); + xip_fpo_clears(op, xop, yop, (xip_fpo_ptr)0); + return res; + } + // perform comparison + template + static bool binary_operator_compare(F f, half x, half y) { + int res; + xip_fpo_t xop, yop; + xip_fpo_inits2(5, 11, xop, yop, (xip_fpo_ptr)0); + x.xip_fpo_get_data(xop); + y.xip_fpo_get_data(yop); + f(&res, xop, yop); + xip_fpo_clears(xop, yop, (xip_fpo_ptr)0); + return res; + } + + private: + /// Assign value from half data to xip_fpo struct + /// \return xip_fpo exceptions + xip_fpo_exc_t xip_fpo_get_data(xip_fpo_ptr op) const { + int exc = 0; + op->_xip_fpo_sign = ((m_data & 0x8000) ? -1 : 1); + op->_xip_fpo_exp = ((m_data & 0x7C00) >> 10) - 14; + *(op->_xip_fpo_d) = ((mp_limb_t)(m_data & 0x3FF) + (mp_limb_t)(0x400)) << (8 * sizeof(*(op->_xip_fpo_d)) - 11); + if ((m_data & 0x7C00) == 0) { // subnormal + exc |= 0x1; + xip_fpo_set_zero(op, op->_xip_fpo_sign); + } else if ((m_data & 0x7FFF) == 0x7C00) { // infinity + exc |= 0x2; + xip_fpo_set_inf(op, op->_xip_fpo_sign); + } else if ((m_data & 0x7FFF) > 0x7C00) { // NaN + exc |= 0x4; + xip_fpo_set_nan(op); + } + return exc; + } + + /// Convert + float xip_fpo_half_get_flt() const { + xip_fpo_t op; + xip_fpo_init2(op, 5, 11); + xip_fpo_exc_t exc = xip_fpo_get_data(op); + float res; + if (exc & 0x1) { + res = (op->_xip_fpo_sign > 0 ? 0.0f : -0.0f); + } else if (exc & 0x2) { + res = (op->_xip_fpo_sign > 0 ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } else if (exc & 0x4) { + res = std::numeric_limits::quiet_NaN(); + } else { + res = xip_fpo_get_flt(op); + } + xip_fpo_clear(op); + return res; + } + + /// Assign value from xip_fpo struct to half data + /// \return void + void xip_fpo_set_data(xip_fpo_ptr op) { + mpfr_t fr; + XIP_FPO_2_MPFR(fr, op); + m_data = 0; + m_data |= (op->_xip_fpo_sign == 1 ? 0 : 1) << 15; + if (mpfr_zero_p(fr)) { + m_data &= 0x8000; + } else if (mpfr_inf_p(fr)) { + m_data |= 0x7C00; + } else if (mpfr_nan_p(fr)) { + m_data |= 0x7E00; + } else { + m_data |= (op->_xip_fpo_exp + 14) << 10; + m_data |= (*(op->_xip_fpo_d) << 1) >> (8 * sizeof(*(op->_xip_fpo_d)) - 10); + } + } + + /// Assignment + void xip_fpo_half_set_flt(float rhs) { + xip_fpo_t op; + xip_fpo_init2(op, 5, 11); + xip_fpo_set_flt(op, rhs); + xip_fpo_set_data(op); + xip_fpo_clear(op); + } + // -------- details on arithmetic and comparison operations ----/ + // pack them in an embedded struct for convenient managment. + // + struct half_axu_functions { + // plus + + template + static half half_plus(T1 x, T2 y) { + return half::binary_operator(xip_fpo_add, x, y); + } + static float half_plus(float x, half y) { return HLS_FPO_ADDF(x, y); } + static float half_plus(half x, float y) { return HLS_FPO_ADDF(x, y); } + static double half_plus(double x, half y) { return HLS_FPO_ADD(x, y); } + static double half_plus(half x, double y) { return HLS_FPO_ADD(x, y); } + // sub - + template + static half half_minus(T1 x, T2 y) { + return half::binary_operator(xip_fpo_sub, x, y); + } + static float half_minus(float x, half y) { return HLS_FPO_SUBF(x, y); } + static float half_minus(half x, float y) { return HLS_FPO_SUBF(x, y); } + static double half_minus(double x, half y) { return HLS_FPO_SUB(x, y); } + static double half_minus(half x, double y) { return HLS_FPO_SUB(x, y); } + // mul * + template + static half half_multiplies(T1 x, T2 y) { + return half::binary_operator(xip_fpo_mul, x, y); + } + static float half_multiplies(float x, half y) { return HLS_FPO_MULF(x, y); } + static float half_multiplies(half x, float y) { return HLS_FPO_MULF(x, y); } + static double half_multiplies(double x, half y) { return HLS_FPO_MUL(x, y); } + static double half_multiplies(half x, double y) { return HLS_FPO_MUL(x, y); } + // div / + template + static half half_divides(T1 x, T2 y) { + return half::binary_operator(xip_fpo_div, x, y); + } + static float half_divides(float x, half y) { return HLS_FPO_DIVF(x, y); } + static float half_divides(half x, float y) { return HLS_FPO_DIVF(x, y); } + static double half_divides(double x, half y) { return HLS_FPO_DIV(x, y); } + static double half_divides(half x, double y) { return HLS_FPO_DIV(x, y); } + // equeal == + template + static bool half_isequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_equal, x, y); + } + static bool half_isequal(float x, half y) { return HLS_FPO_EQUALF(x, y); } + static bool half_isequal(half x, float y) { return HLS_FPO_EQUALF(x, y); } + static bool half_isequal(double x, half y) { return HLS_FPO_EQUAL(x, y); } + static bool half_isequal(half x, double y) { return HLS_FPO_EQUAL(x, y); } + // not equal != + template + static bool half_isnotequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_notequal, x, y); + } + static bool half_isnotequal(float x, half y) { return HLS_FPO_NOTEQUALF(x, y); } + static bool half_isnotequal(half x, float y) { return HLS_FPO_NOTEQUALF(x, y); } + static bool half_isnotequal(double x, half y) { return HLS_FPO_NOTEQUAL(x, y); } + static bool half_isnotequal(half x, double y) { return HLS_FPO_NOTEQUAL(x, y); } + // greater > + template + static bool half_isgreater(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_greater, x, y); + } + static bool half_isgreater(float x, half y) { return HLS_FPO_GREATERF(x, y); } + static bool half_isgreater(half x, float y) { return HLS_FPO_GREATERF(x, y); } + static bool half_isgreater(double x, half y) { return HLS_FPO_GREATER(x, y); } + static bool half_isgreater(half x, double y) { return HLS_FPO_GREATER(x, y); } + // greaterequal >= + template + static bool half_isgreaterequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_greaterequal, x, y); + } + static bool half_isgreaterequal(float x, half y) { return HLS_FPO_GREATEREQUALF(x, y); } + static bool half_isgreaterequal(half x, float y) { return HLS_FPO_GREATEREQUALF(x, y); } + static bool half_isgreaterequal(double x, half y) { return HLS_FPO_GREATEREQUAL(x, y); } + static bool half_isgreaterequal(half x, double y) { return HLS_FPO_GREATEREQUAL(x, y); } + // less < + template + static bool half_isless(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_less, x, y); + } + static bool half_isless(float x, half y) { return HLS_FPO_LESSF(x, y); } + static bool half_isless(half x, float y) { return HLS_FPO_LESSF(x, y); } + static bool half_isless(double x, half y) { return HLS_FPO_LESS(x, y); } + static bool half_isless(half x, double y) { return HLS_FPO_LESS(x, y); } + // lessequal <= + template + static bool half_islessequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_lessequal, x, y); + } + static bool half_islessequal(float x, half y) { return HLS_FPO_LESSEQUALF(x, y); } + static bool half_islessequal(half x, float y) { return HLS_FPO_LESSEQUALF(x, y); } + static bool half_islessequal(double x, half y) { return HLS_FPO_LESSEQUAL(x, y); } + static bool half_islessequal(half x, double y) { return HLS_FPO_LESSEQUAL(x, y); } + + }; // struct half_axu_functions + //---------------- xilinx float point ----------// +}; // class half + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef float rtvl_t; +}; + +template <> +struct half::half_traits { + typedef double rtvl_t; +}; + +template <> +struct half::half_traits { + // typedef double rtvl_t; + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; + // typedef double rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef float rtvl_t; +}; + +template <> +struct half::half_traits { + typedef double rtvl_t; +}; + +template <> +struct half::half_traits { + // typedef double rtvl_t; + typedef half rtvl_t; +}; + +template <> +struct half::half_traits { + typedef half rtvl_t; + // typedef double rtvl_t; +}; + + +#endif // __HLS_HALF_FPO__ diff --git a/vitis/v2021_2/hls_half_sim.h b/vitis/v2021_2/hls_half_sim.h new file mode 100755 index 00000000..7e6f95e3 --- /dev/null +++ b/vitis/v2021_2/hls_half_sim.h @@ -0,0 +1,452 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ +#ifndef __HLS_HALF_SIM_H__ +#define __HLS_HALF_SIM_H__ +// This is just for csim and cosim instead of synthesis. +// That is to say, __SYNTHESIS__ are not defined. + +#ifndef __cplusplus +#error C++ is required to include this header file +#endif + +#if defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER) + +#include +#include +// Forward declaration of ap_fixed_base. +#include "ap_decl.h" + +class half { +public: + typedef unsigned short uint16; + template struct half_traits; + + /* 16-bit float following IEEE 754 + 16 bits inside float value + 0 00000 0000000000 = 0x0000 = 0 + 1 00000 0000000000 = 0x8000 = -0 + + 0 11111 0000000000 = 0x7c00 = infinity + 1 11111 0000000000 = 0xfc00 = -infinity + 0 11110 1111111111 = 0x7bff = max = 65504 + x 11111 yyyyyyyyyy = = nan, in which yyyyyyyy !=0 + + */ + static const uint16 nan = 0x7FFF; // greater than 7c00 , it's just a flag , + // and nan > 0x7C00 except 0xfc00 + half() : m_data() {} + half(const half &rh) : m_data(rh.m_data) {} + half(float rh) { m_data = float2half(rh); } + + /// Conversion constructor from AP types. + template + half(const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &rhs) { + std::cout << "WARNING: explicit method ap_fixed::to_half() should be used " + "to convert ap_fixed to half." + << std::endl; + *this = rhs.to_half(); + } + + template half(const ap_int_base<_AP_W, _AP_S> &rhs) { + *this = rhs.to_half(); + } + + template + half &operator=( + const ap_fixed_base<_AP_W, _AP_I, _AP_S, _AP_Q, _AP_O, _AP_N> &rhs) { + return *this = rhs.to_half(); + } + template + half &operator=(const ap_int_base<_AP_W, _AP_S> &rhs) { + return *this = rhs.to_half(); + } + + static bool half_isnan(half hf) { return (hf.m_data & 0x7FFF) > 0x7C00; } + operator float() const { return half2float(m_data); } + + half &operator=(float rhs) { + m_data = float2half(rhs); + return *this; + } + +public: + //---------- arithemic operations------/ + // arithm operations between half and other data-type + // promotion half to float implictly or explictly during operations. + + // plus T + half + template + friend typename half::half_traits::rtvl_t + operator+(const T &lhs, const half &rhs) { + // return static_cast(lhs) + static_cast(rhs); + return (lhs) + static_cast(rhs); + } + // plus half + T + template + typename half::half_traits::rtvl_t operator+(const T &rhs) { + // return static_cast(*this) + static_cast(rhs); + return static_cast(*this) + (rhs); + } + // plus half + half + half operator+(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) { + half t; + t.set_bits(half::nan); + return t; + } else + return half(static_cast(*this) + static_cast(rhs)); + } + + // sub T - half + template + friend typename half::half_traits::rtvl_t + operator-(const T &lhs, const half &rhs) { + // return static_cast(lhs) - static_cast(rhs); + return (lhs) - static_cast(rhs); + } + // sub half - T + template + typename half::half_traits::rtvl_t operator-(const T &rhs) { + // return static_cast(*this) - static_cast(rhs); + return static_cast(*this) - (rhs); + } + // sub half - half + half operator-(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) { + half t; + t.set_bits(half::nan); + return t; + } else + return half(static_cast(*this) - static_cast(rhs)); + } + + // mul T * half + template + friend typename half::half_traits::rtvl_t + operator*(const T &lhs, const half &rhs) { + // return static_cast(lhs) * static_cast(rhs); + return (lhs) * static_cast(rhs); + } + // mul half * T + template + typename half::half_traits::rtvl_t operator*(const T &rhs) { + // return static_cast(*this) * static_cast(rhs); + return static_cast(*this) * (rhs); + } + // mul half * half + half operator*(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) { + half t; + t.set_bits(half::nan); + return t; + } else + return half(static_cast(*this) * static_cast(rhs)); + } + + // div T / half + template + friend typename half::half_traits::rtvl_t + operator/(const T &lhs, const half &rhs) { + // return static_cast(lhs) / static_cast(rhs); + return (lhs) / static_cast(rhs); + } + // div half / T + template + typename half::half_traits::rtvl_t operator/(const T &rhs) { + // return static_cast(*this) / static_cast(rhs); + return static_cast(*this) / (rhs); + } + // div half/half + half operator/(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) { + half t; + t.set_bits(half::nan); + return t; + } else + return half(static_cast(*this) / static_cast(rhs)); + } + + /****************begin unary operations **************/ + template half &operator+=(const T &rhs) { + float f = static_cast(*this) + static_cast(rhs); + return *this = half(f); + } + + half &operator+=(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) + m_data = half::nan; + else + *this += static_cast(rhs); + return *this; + } + + template half &operator-=(const T &rhs) { + float f = static_cast(*this) - static_cast(rhs); + return *this = half(f); + } + + half &operator-=(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) + m_data = half::nan; + else + *this -= static_cast(rhs); + return *this; + } + + template half &operator*=(const T &rhs) { + float f = static_cast(*this) * static_cast(rhs); + return *this = half(f); + } + + half &operator*=(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) + m_data = half::nan; + else + *this *= static_cast(rhs); + return *this; + } + + template half &operator/=(const T &rhs) { + float f = static_cast(*this) / static_cast(rhs); + return *this = half(f); + } + + half &operator/=(const half &rhs) { + if (half_isnan(*this) || half_isnan(rhs)) + m_data = half::nan; + else + *this /= static_cast(rhs); + return *this; + } + + /****************begin unary operations **************/ + /// Prefix increment. + half &operator++() { return *this += 1.0f; } + + /// Prefix decrement. + half &operator--() { return *this -= 1.0f; } + + /// Postfix increment. + half operator++(int) { + half out(*this); + ++*this; + return out; + } + + /// Postfix decrement. + half operator--(int) { + half out(*this); + --*this; + return out; + } + + void set_bits(uint16 d) { m_data = d; } + + uint16 get_bits() { return m_data; } + +private: + // Unsigned integer of (at least) 16 bits width. + uint16 m_data; + + union fp_union { + float flt; + unsigned int u32; + }; + uint16 float2half(const float &rhs) { + // subnormal value returs 0 + // if( -6.10352e-05 0 ? rhs : (-rhs); + if (abs_rhs < 6.10352e-05) + return 0; + fp_union fp; + fp.flt = rhs; + unsigned int u = fp.u32; + unsigned int exp32 = u & 0x7f800000; + unsigned int mant = u & 0x7fffff; + uint16 s = (u & 0x80000000) >> 16; + uint16 e = exp32 >> 23; + uint16 m = mant >> 13; + if ((e == 0xff && m == 0) || abs_rhs > 65504) + return (0x7c00 | s); // + inf -inf + if (e == 0xff && m != 0) + return 0x7fff; // nan + int ee = e - 127 + 15; // - float_bias +half_bias + uint16 l_e = ee & 0x1f; // low 5 bitt 8bits e & 0001 1111 + uint16 d = s | (l_e << 10) | m; + return d; + } + float half2float(const uint16 &rhs) const { + float d; + uint16 sign = rhs & 0x8000; + uint16 mant = rhs & 0x03ff; + uint16 exp = rhs & 0x7c00; + if (rhs == 0x7c00) + return std::numeric_limits::infinity(); + if (rhs == 0xfc00) + return -std::numeric_limits::infinity(); + + if (rhs == 0x0) + return 0.0f; + else if (rhs == 0x8000) + return -0.0f; + if (exp == 0x7c00 && mant != 0) { + return std::numeric_limits::quiet_NaN(); // nan; + } + + if (exp == 0 && mant != 0) { + // subnormal + float e14 = 6.10352e-05; // pow(2.0,-14); + d = (e14)*mant / 1024; + } else { + exp = exp >> 10; + int e = exp - 15; + float ez = 1.0f; + if (e > 0) + for (int i = 0; i < e; ++i) + ez *= 2; + else + for (int i = 0; i < -e; ++i) + ez /= 2; + d = ez * (1 + mant / 1024.0f); + } + d = (sign == 0) ? d : -d; + return d; + } + + friend std::ostream &operator<<(std::ostream &out, const half &hf) { + float f = static_cast(hf); + return out << f; + } + + friend std::istream &operator>>(std::istream &in, half &hf) { + float f; + if (in >> f) + hf = static_cast(f); + return in; + } +}; // class half + +template <> struct half::half_traits { typedef half rtvl_t; }; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { typedef half rtvl_t; }; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { typedef half rtvl_t; }; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { typedef float rtvl_t; }; + +template <> struct half::half_traits { typedef double rtvl_t; }; + +template <> struct half::half_traits { + // typedef double rtvl_t; + typedef half rtvl_t; +}; + +template <> struct half::half_traits { + typedef half rtvl_t; + // typedef double rtvl_t; +}; + +template <> struct half::half_traits { typedef half rtvl_t; }; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { typedef half rtvl_t; }; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { typedef half rtvl_t; }; + +template <> struct half::half_traits { + typedef half rtvl_t; +}; + +template <> struct half::half_traits { typedef float rtvl_t; }; + +template <> struct half::half_traits { typedef double rtvl_t; }; + +template <> struct half::half_traits { + // typedef double rtvl_t; + typedef half rtvl_t; +}; + +template <> struct half::half_traits { + typedef half rtvl_t; + // typedef double rtvl_t; +}; + +#endif // (__GNUC__ ) || (__clang__) || (_MSC_VER) +#endif // __HLS_HALF_SIM__ diff --git a/vitis/v2021_2/hls_half_x_utils.h b/vitis/v2021_2/hls_half_x_utils.h new file mode 100755 index 00000000..917d34f5 --- /dev/null +++ b/vitis/v2021_2/hls_half_x_utils.h @@ -0,0 +1,670 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + +*/ +#ifndef __HLS_HALF_UTILS_H__ +#define __HLS_HALF_UTILS_H__ + +#ifndef __cplusplus +#ifndef __SYNTHESIS__ +#error C++ is required to include this header file +#endif +#endif + +#ifndef __SYNTHESIS__ +#include +#include +#include +#include + +#if defined(__clang__) // clang +#if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) && !defined(HALF_ENABLE_CPP11_LONG_LONG) +#define HALF_ENABLE_CPP11_LONG_LONG 1 +#endif +#elif defined(__GNUC__) // gcc +#if !defined(HALF_ENABLE_CPP11_LONG_LONG) +#define HALF_ENABLE_CPP11_LONG_LONG 1 +#endif +#elif defined(_MSC_VER) // Visual C++ +#if _MSC_VER >= 1310 && !defined(HALF_ENABLE_CPP11_LONG_LONG) +#define HALF_ENABLE_CPP11_LONG_LONG 1 +#endif +#endif + +#define FP_FAST_FMAH 1 + +#ifndef FP_ILOGB0 +#define FP_ILOGB0 INT_MIN +#endif +#ifndef FP_ILOGBNAN +#define FP_ILOGBNAN INT_MAX +#endif +#ifndef FP_SUBNORMAL +#define FP_SUBNORMAL 0 +#endif +#ifndef FP_ZERO +#define FP_ZERO 1 +#endif + +#ifndef FP_NAN +#define FP_NAN 2 +#endif +#ifndef FP_INFINITE +#define FP_INFINITE 3 +#endif +#ifndef FP_NORMAL +#define FP_NORMAL 4 +#endif + +#ifndef HALF_ROUND_STYLE +#define HALF_ROUND_STYLE 1 // = std::round_indeterminate +#endif +#ifndef HALF_ROUND_TIES_TO_EVEN +#define HALF_ROUND_TIES_TO_EVEN 1 // ties away from zero +#endif +#ifdef _MSC_VER +#include +#endif +class half; +namespace detail { + +/* 16-bit float following IEEE 754 + 16 bits inside float value +0 00000 0000000000 = 0x0000 = 0 +1 00000 0000000000 = 0x8000 = -0 + +0 11111 0000000000 = 0x7c00 = infinity +1 11111 0000000000 = 0xfc00 = -infinity +0 11110 1111111111 = 0x7bff = max = 65504 +x 11111 yyyyyyyyyy = = nan, in which yyyyyyyy !=0 + +*/ + +inline bool isfinite(half arg) { + return (arg.get_bits() & 0x7C00) != 0x7C00; +} + +inline bool isinf(half arg) { + return (arg.get_bits() & 0x7FFF) == 0x7C00; +} + +inline bool isnan(half arg) { + return (arg.get_bits() & 0x7FFF) > 0x7C00; +} + +inline bool isnormal(half arg) { + return ((arg.get_bits() & 0x7C00) != 0) & ((arg.get_bits() & 0x7C00) != 0x7C00); +} + +inline bool signbit(half arg) { + return (arg.get_bits() & 0x8000) != 0; +} + +inline int fpclassify(half arg) { + unsigned int abs = arg.get_bits() & 0x7FFF; + if (abs == 0x7C00) return FP_INFINITE; + if (abs > 0x3FF) return FP_NORMAL; + return abs ? FP_SUBNORMAL : FP_ZERO; +} + +inline half fmod(half x, half y) { + return (std::fmod(x, y)); +} + +inline half sinh(half arg) { + return std::sinh(arg); +} + +inline half cosh(half arg) { + return std::cosh(arg); +} + +inline half sin(half arg) { + return std::sin(arg); +} + +inline half cos(half arg) { + return std::cos(arg); +} +inline half frexp(half arg, int* exp) { + unsigned int m = arg.get_bits() & 0x7FFF; + if (m >= 0x7C00 || !m) return *exp = 0, arg; + int e = m >> 10; + if (!e) + for (m <<= 1; m < 0x400; m <<= 1, --e) + ; + + *exp = e - 14; + half t; + t.set_bits(static_cast((arg.get_bits() & 0x8000) | 0x3800 | (m & 0x3FF))); + return t; +} + +inline half modf(half arg, half* iptr) { + half t; + unsigned int e = arg.get_bits() & 0x7C00; + if (e > 0x6000) { + *iptr = arg; + t.set_bits(arg.get_bits() & 0x8000); + return (e == 0x7C00 && (arg.get_bits() & 0x3FF)) ? arg : t; + } + if (e < 0x3C00) return iptr->set_bits(arg.get_bits() & 0x8000), arg; + e >>= 10; + unsigned int mask = (1 << (25 - e)) - 1, m = arg.get_bits() & mask; + iptr->set_bits(arg.get_bits() & ~mask); + if (!m) + t.set_bits(arg.get_bits() & 0x8000); + else { + for (; m < 0x400; m <<= 1, --e) + ; + t.set_bits(static_cast((arg.get_bits() & 0x8000) | (e << 10) | (m & 0x3FF))); + } + return t; +} + +inline int ilogb(half arg) { + int exp = arg.get_bits() & 0x7FFF; + if (!exp) return FP_ILOGB0; + if (exp < 0x7C00) { + if (!(exp >>= 10)) + for (unsigned int m = (arg.get_bits() & 0x3FF); m < 0x200; m <<= 1, --exp) + ; + return exp - 15; + } + if (exp > 0x7C00) return FP_ILOGBNAN; + return INT_MAX; +} +inline float fdim(float x, float y) { + return ((x <= y) ? 0.0f : (x - y)); +} +/// Wrapper for binary half-precision needing specialization for individual argument types. +/// \tparam T first argument type +/// \tparam U first argument type +template +struct binary_specialized { + static float fmin(float x, float y) { + if (isnan(x)) return y; + if (isnan(y)) return x; + return std::min(x, y); + } + + static float fmax(float x, float y) { + if (isnan(x)) return y; + if (isnan(y)) return x; + return std::max(x, y); + } +}; +template <> +struct binary_specialized { + static half fmin(half x, half y) { + if (isnan(x)) return y; + if (isnan(y)) return x; + return ((signbit(x) ? (static_cast(0x8000) - x.get_bits()) : static_cast(x.get_bits())) > + (signbit(y) ? (static_cast(0x8000) - y.get_bits()) : static_cast(y.get_bits()))) + ? y + : x; + } + static half fmax(half x, half y) { + if (isnan(x)) return y; + if (isnan(y)) return x; + return ((signbit(x) ? (static_cast(0x8000) - x.get_bits()) : static_cast(x.get_bits())) < + (signbit(y) ? (static_cast(0x8000) - y.get_bits()) : static_cast(y.get_bits()))) + ? y + : x; + } +}; + +inline half fmax(half x, half y) { + return binary_specialized::fmax(x, y); +} +inline float fmax(half x, float y) { + return binary_specialized::fmax(x, y); +} +inline float fmax(float x, half y) { + return binary_specialized::fmax(x, y); +} +inline float fmax(float x, float y) { + return binary_specialized::fmax(x, y); +} + +inline half fmin(half x, half y) { + return binary_specialized::fmin(x, y); +} +inline float fmin(half x, float y) { + return binary_specialized::fmin(x, y); +} +inline float fmin(float x, half y) { + return binary_specialized::fmin(x, y); +} +inline float fmin(float x, float y) { + return binary_specialized::fmin(x, y); +} + +inline half fabs(half x) { + half t; + t.set_bits(x.get_bits() & 0x7FFF); + return t; +} +inline half abs(half x) { + half t; + t.set_bits(x.get_bits() & 0x7FFF); + return t; +} + +inline half scalbln(half arg, long exp) { + long e = arg.get_bits() & 0x7C00; + if (e == 0x7C00) return arg; + unsigned int m = arg.get_bits() & 0x3FF; + if (e >>= 10) + m |= 0x400; + else { + if (!m) return arg; + for (m <<= 1; m < 0x400; m <<= 1, --e) + ; + } + e += exp; + half::uint16 value = arg.get_bits() & 0x8000; + if (e > 30) { + value |= 0x7C00; + } else if (e > 0) + value |= (e << 10) | (m & 0x3FF); + else if (e > -11) { + // if(half::round_style == std::round_to_nearest) + { + m += 1 << -e; +#if HALF_ROUND_TIES_TO_EVEN + m -= (m >> (1 - e)) & 1; +#endif + } + value |= m >> (1 - e); + } + half t; + t.set_bits(value); + return t; +} + +inline half ldexp(half arg, int exp) { + return scalbln(arg, exp); +} +inline half ldexp(float arg, int exp) { + return scalbln(arg, exp); +} + +//-------------------------------------------------------------------------------------------// + +/// Convert half-precision floating point to integer. +/// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding +/// \tparam E `true` for round to even, `false` for round away from zero +/// \tparam T type to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign +/// bits) \param value binary representation of half-precision value \return integral value +template +T half2int_impl(half::uint16 value) { + unsigned int e = value & 0x7FFF; + if (e >= 0x7C00) return (value & 0x8000) ? std::numeric_limits::min() : std::numeric_limits::max(); + if (e < 0x3800) { + if (R == std::round_toward_infinity) + return T(~(value >> 15) & (e != 0)); + else if (R == std::round_toward_neg_infinity) + return -T(value > 0x8000); + return T(); + } + int m = (value & 0x3FF) | 0x400; + e >>= 10; + if (e < 25) { + if (R == std::round_indeterminate || R == std::round_toward_zero) + m >>= 25 - e; + else { + if (R == std::round_to_nearest) + m += (1 << (24 - e)) - (~(m >> (25 - e)) & E); + else if (R == std::round_toward_infinity) + m += ((value >> 15) - 1) & ((1 << (25 - e)) - 1U); + else if (R == std::round_toward_neg_infinity) + m += -(value >> 15) & ((1 << (25 - e)) - 1U); + m >>= 25 - e; + } + } else + m <<= e - 25; + // if(std::numeric_limits::digits < 16) + // return std::min(std::max(m, static_cast(std::numeric_limits::min())), + // static_cast(std::numeric_limits::max())); + return static_cast((value & 0x8000) ? -m : m); +} + +/// Convert half-precision floating point to integer. +/// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding +/// \tparam T type to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign +/// bits) \param value binary representation of half-precision value \return integral value +template +T half2int(half::uint16 value) { + return half2int_impl(value); +} + +/// Convert half-precision floating point to integer using round-to-nearest-away-from-zero. +/// \tparam T type to convert to (buitlin integer type with at least 16 bits precision, excluding any implicit sign +/// bits) \param value binary representation of half-precision value \return integral value +template +T half2int_up(half::uint16 value) { + return half2int_impl(value); +} + +/// Round half-precision number to nearest integer value. +/// \tparam R rounding mode to use, `std::round_indeterminate` for fastest rounding +/// \tparam E `true` for round to even, `false` for round away from zero +/// \param value binary representation of half-precision value +/// \return half-precision bits for nearest integral value +template +half::uint16 round_half_impl(half::uint16 value) { + unsigned int e = value & 0x7FFF; + half::uint16 result = value; + if (e < 0x3C00) { + result &= 0x8000; + if (R == std::round_to_nearest) + result |= 0x3C00U & -(e >= (0x3800 + E)); + else if (R == std::round_toward_infinity) + result |= 0x3C00U & -(~(value >> 15) & (e != 0)); + else if (R == std::round_toward_neg_infinity) + result |= 0x3C00U & -(value > 0x8000); + } else if (e < 0x6400) { + e = 25 - (e >> 10); + unsigned int mask = (1 << e) - 1; + if (R == std::round_to_nearest) + result += (1 << (e - 1)) - (~(result >> e) & E); + else if (R == std::round_toward_infinity) + result += mask & ((value >> 15) - 1); + else if (R == std::round_toward_neg_infinity) + result += mask & -(value >> 15); + result &= ~mask; + } + return result; +} + +template +half::uint16 round_half(half::uint16 value) { + return round_half_impl(value); +} + +inline half::uint16 round_half_up(half::uint16 value) { + return round_half_impl(value); +} + +inline half floor(half arg) { + half t; + t.set_bits(round_half(arg.get_bits())); + return t; +} + +inline half ceil(half arg) { + half t; + t.set_bits(round_half(arg.get_bits())); + return t; +} + +inline half trunc(half arg) { + half t; + t.set_bits(round_half(arg.get_bits())); + return t; +} + +inline half round(half arg) { + half t; + t.set_bits(round_half_up(arg.get_bits())); + return t; +} + +inline long lround(half arg) { + return half2int_up(arg.get_bits()); +} + +struct half_round_style { + static const std::float_round_style round_style = (std::float_round_style)(HALF_ROUND_STYLE); +}; + +inline half rint(half arg) { + half t; + t.set_bits(round_half(arg.get_bits())); + return t; +} + +inline long lrint(half arg) { + return half2int(arg.get_bits()); +} + +#if HALF_ENABLE_CPP11_LONG_LONG +inline long long llround(half arg) { + return half2int_up(arg.get_bits()); +} + +inline long long llrint(half arg) { + return half2int(arg.get_bits()); +} +#endif + +#ifdef HLS_NO_XIL_FPO_LIB +inline float sqrt(half arg) { + return std::sqrt(arg); +} +#else +inline half sqrt(half arg) { + return half::math_function_1arg(xip_fpo_sqrt, arg); +} +#endif +//-------------------------------------------------------------------------------------------------// +inline bool isunordered(half x, half y) { + return isnan(x) || isnan(y); +} + +#ifdef HLS_NO_XIL_FPO_LIB +inline bool isequal(half x, half y) { + return (x.get_bits() == y.get_bits() || !((x.get_bits() | y.get_bits()) & 0x7FFF)) && !isnan(x); +} +#else +template +inline bool isequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_equal, x, y); +} +inline bool isequal(float x, half y) { + return HLS_FPO_EQUALF(x, y); +} +inline bool isequal(half x, float y) { + return HLS_FPO_EQUALF(x, y); +} +inline bool isequal(double x, half y) { + return HLS_FPO_EQUAL(x, y); +} +inline bool isequal(half x, double y) { + return HLS_FPO_EQUAL(x, y); +} +#endif + +#ifdef HLS_NO_XIL_FPO_LIB +inline bool isnotequal(half x, half y) { + return (x.get_bits() != y.get_bits() && ((x.get_bits() | y.get_bits()) & 0x7FFF)) || isnan(x); +} +#else +template +inline bool isnotequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_notequal, x, y); +} +inline bool isnotequal(float x, half y) { + return HLS_FPO_NOTEQUALF(x, y); +} +inline bool isnotequal(half x, float y) { + return HLS_FPO_NOTEQUALF(x, y); +} +inline bool isnotequal(double x, half y) { + return HLS_FPO_NOTEQUAL(x, y); +} +inline bool isnotequal(half x, double y) { + return HLS_FPO_NOTEQUAL(x, y); +} +#endif + +#ifdef HLS_NO_XIL_FPO_LIB +inline bool isgreater(half x, half y) { + return !isnan(x) && !isnan(y) && + ((signbit(x) ? (static_cast(0x8000) - x.get_bits()) : static_cast(x.get_bits())) > + (signbit(y) ? (static_cast(0x8000) - y.get_bits()) : static_cast(y.get_bits()))); +} +#else +template +inline bool isgreater(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_greater, x, y); +} +inline bool isgreater(float x, half y) { + return HLS_FPO_GREATERF(x, y); +} +inline bool isgreater(half x, float y) { + return HLS_FPO_GREATERF(x, y); +} +inline bool isgreater(double x, half y) { + return HLS_FPO_GREATER(x, y); +} +inline bool isgreater(half x, double y) { + return HLS_FPO_GREATER(x, y); +} +#endif + +#ifdef HLS_NO_XIL_FPO_LIB +inline bool isgreaterequal(half x, half y) { + return !isnan(x) && !isnan(y) && + ((signbit(x) ? (static_cast(0x8000) - x.get_bits()) : static_cast(x.get_bits())) >= + (signbit(y) ? (static_cast(0x8000) - y.get_bits()) : static_cast(y.get_bits()))); +} +#else +template +inline bool isgreaterequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_greaterequal, x, y); +} +inline bool isgreaterequal(float x, half y) { + return HLS_FPO_GREATEREQUALF(x, y); +} +inline bool isgreaterequal(half x, float y) { + return HLS_FPO_GREATEREQUALF(x, y); +} +inline bool isgreaterequal(double x, half y) { + return HLS_FPO_GREATEREQUAL(x, y); +} +inline bool isgreaterequal(half x, double y) { + return HLS_FPO_GREATEREQUAL(x, y); +} +#endif + +#ifdef HLS_NO_XIL_FPO_LIB +inline bool isless(half x, half y) { + return !isnan(x) && !isnan(y) && + ((signbit(x) ? (static_cast(0x8000) - x.get_bits()) : static_cast(x.get_bits())) < + (signbit(y) ? (static_cast(0x8000) - y.get_bits()) : static_cast(y.get_bits()))); +} +#else +template +inline bool isless(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_less, x, y); +} +inline bool isless(float x, half y) { + return HLS_FPO_LESSF(x, y); +} +inline bool isless(half x, float y) { + return HLS_FPO_LESSF(x, y); +} +inline bool isless(double x, half y) { + return HLS_FPO_LESS(x, y); +} +inline bool isless(half x, double y) { + return HLS_FPO_LESS(x, y); +} +#endif + +#ifdef HLS_NO_XIL_FPO_LIB +static bool islessequal(half x, half y) { + return !isnan(x) && !isnan(y) && + ((signbit(x) ? (static_cast(0x8000) - x.get_bits()) : static_cast(x.get_bits())) <= + (signbit(y) ? (static_cast(0x8000) - y.get_bits()) : static_cast(y.get_bits()))); +} +#else +template +inline bool islessequal(T1 x, T2 y) { + return half::binary_operator_compare(xip_fpo_lessequal, x, y); +} +inline bool islessequal(float x, half y) { + return HLS_FPO_LESSEQUALF(x, y); +} +inline bool islessequal(half x, float y) { + return HLS_FPO_LESSEQUALF(x, y); +} +inline bool islessequal(double x, half y) { + return HLS_FPO_LESSEQUAL(x, y); +} +inline bool islessequal(half x, double y) { + return HLS_FPO_LESSEQUAL(x, y); +} +#endif + +inline bool islessgreater(half x, half y) { + if (isnan(x) || isnan(y)) return false; + return detail::isless(x, y) || detail::isgreater(x, y); +} + + +} // namespace detail +using detail::fpclassify; +using detail::isfinite; +using detail::isgreater; +using detail::isgreaterequal; +using detail::isinf; +using detail::isless; +using detail::islessequal; +using detail::islessgreater; +using detail::isnan; +using detail::isnormal; +using detail::isunordered; +using detail::signbit; + +#endif // __SYNTHESIS__ + +#endif // __HLS_HALF_UTILS_H__ diff --git a/vitis/v2021_2/hls_hotbm_apfixed.h b/vitis/v2021_2/hls_hotbm_apfixed.h new file mode 100755 index 00000000..c640c94a --- /dev/null +++ b/vitis/v2021_2/hls_hotbm_apfixed.h @@ -0,0 +1,508 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_hotbm_apfixed.h + * An implementation of sin/cos, based on the HOTBM method published by + * Detrey and deDinechin, "Floating-point Trigonometric Functions for FPGAs" + */ + +#ifndef _X_HLS_HOTBM_APFIXED_H_ +#define _X_HLS_HOTBM_APFIXED_H_ + +#include "ap_fixed.h" +#include "ap_int.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_utils.h" + +#ifndef M_PI +// Some compilers are stingy about giving us all these constants that are usually in the C library. +#define M_PI 3.14159265358979323846 +#endif + +namespace hotbm_apfixed +{ + + namespace first_order_fixed_16{ + extern const ap_fixed<19,2> sin_cos_K0[256]; + extern const ap_fixed<11,2> sin_cos_K1[256]; + }; + + namespace second_order_float{ + extern const ap_fixed<29,0> cos_K0[128]; + extern const ap_fixed<23,1> cos_K1[128]; + extern const ap_fixed<15,0> cos_K2[128]; + extern const ap_fixed<30,1> sin_K0[128]; + extern const ap_fixed<21,-1> sin_K1[128]; + extern const ap_fixed<13,-2> sin_K2[128]; + extern const ap_ufixed<30,1> sin_cos_K0[256]; + extern const ap_fixed<23,1> sin_cos_K1[256]; + extern const ap_fixed<15,0> sin_cos_K2[256]; + }; + + namespace fourth_order_double{ + extern const ap_fixed<59,0> cos_K0[128]; + extern const ap_fixed<53,1> cos_K1[128]; + extern const ap_fixed<45,0> cos_K2[128]; + extern const ap_fixed<35,-3> cos_K3[128]; + extern const ap_fixed<27,-4> cos_K4[128]; + extern const ap_fixed<60,1> sin_K0[128]; + extern const ap_fixed<51,-1> sin_K1[128]; + extern const ap_fixed<43,-2> sin_K2[128]; + extern const ap_fixed<33,-5> sin_K3[128]; + extern const ap_fixed<24,-7> sin_K4[128]; + extern const ap_fixed<59,1> sin_cos_K0[256]; + extern const ap_fixed<52,1> sin_cos_K1[256]; + extern const ap_fixed<44,0> sin_cos_K2[256]; + extern const ap_fixed<34,-3> sin_cos_K3[256]; + extern const ap_fixed<26,-4> sin_cos_K4[256]; + }; + + template + struct value_list{ + }; + + template<> + struct value_list{ + typedef double T; + static const int g = 10; // guard bits during core approx + static const int p1 = 61; // padding bits during range reduction + static const int alpha = 7; + // The number of bits of B that are not used in the K1 computation + static const int beta1 = 0; + // The number of bits of B that are not used in the K2 computation + static const int beta2 = alpha; + + static const int W_dout = fp_struct::SIG_BITS+1+g; + static const int W_Mx = fp_struct::SIG_BITS+1+g; + + template + static ap_ufixed sin_or_cos_approximation(bool do_cos, + ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed &Mx, + ap_int::EXP_BITS> &Ex){ + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; +#pragma HLS array_partition variable=swap_table complete +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_cos_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_cos_K1 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_cos_K2 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_cos_K3 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_cos_K4 type=ROM_1P impl=LUTRAM + + _AP_UNUSED_PARAM(Ex); + ap_uint A = x(x.wl()-x.iwl()-1,x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + ap_ufixed B_third_power = B_trunc*B_squared; + ap_ufixed B_fourth_power = B_squared*B_squared; + + bool sin_basis = do_cos? swap_table[k]:!swap_table[k]; + A[alpha] = sin_basis; // cos and sin are concatentated. + + ap_fixed t1 = fourth_order_double::sin_cos_K0[A]; + ap_fixed t2 = B*fourth_order_double::sin_cos_K1[A]; + ap_fixed t3 = B_squared*fourth_order_double::sin_cos_K2[A]; + ap_fixed t4 = B_third_power*fourth_order_double::sin_cos_K3[A]; + ap_fixed t5 = B_fourth_power*fourth_order_double::sin_cos_K4[A]; + ap_ufixed result = Mx*(t1+t2+t3+t4+t5); + return result; + } + + template + static void sincos_approximation(ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed Mx, + ap_int::EXP_BITS> Ex, + ap_ufixed &sin_result, + ap_ufixed &cos_result + ) { +#pragma HLS BIND_STORAGE variable=fourth_order_double::cos_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::cos_K1 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::cos_K2 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::cos_K3 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::cos_K4 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_K1 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_K2 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_K3 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=fourth_order_double::sin_K4 type=ROM_1P impl=LUTRAM + + _AP_UNUSED_PARAM(k); + _AP_UNUSED_PARAM(Ex); + ap_uint A = x(x.wl()-x.iwl()-1, + x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + ap_ufixed B_third_power = B_trunc*B_squared; + ap_ufixed B_fourth_power = B_squared*B_squared; + + ap_fixed cos_t1 = fourth_order_double::cos_K0[A]; + ap_fixed cos_t2 = B*fourth_order_double::cos_K1[A]; + ap_fixed cos_t3 = B_squared*fourth_order_double::cos_K2[A]; + ap_fixed cos_t4 = B_third_power*fourth_order_double::cos_K3[A]; + ap_fixed cos_t5 = B_fourth_power*fourth_order_double::cos_K4[A]; + cos_result = 1 - (cos_t1 + cos_t2 + cos_t3 + cos_t4 + cos_t5); + + ap_fixed sin_t1 = fourth_order_double::sin_K0[A]; + ap_fixed sin_t2 = B*fourth_order_double::sin_K1[A]; + ap_fixed sin_t3 = B_squared*fourth_order_double::sin_K2[A]; + ap_fixed sin_t4 = B_third_power*fourth_order_double::sin_K3[A]; + ap_fixed sin_t5 = B_fourth_power*fourth_order_double::sin_K4[A]; + sin_result = Mx * (sin_t1 + sin_t2 + sin_t3 + sin_t4 + sin_t5); + } + }; + + template<> + struct value_list { + typedef float T; + static const int g = 5; + static const int p1 = 29; + static const int alpha = 7; + static const int beta1 = 0; + static const int beta2 = 7; + + static const int W_dout = fp_struct::SIG_BITS+1+g; + static const int W_Mx = fp_struct::SIG_BITS+1+g; + + template + static ap_ufixed sin_or_cos_approximation(bool do_cos, + ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed &Mx, + ap_int::EXP_BITS> &Ex){ + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; + +#pragma HLS array_partition variable=swap_table complete +#pragma HLS BIND_STORAGE variable=second_order_float::sin_cos_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::sin_cos_K1 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::sin_cos_K2 type=ROM_1P impl=LUTRAM + + _AP_UNUSED_PARAM(Ex); + ap_uint A = x(x.wl()-x.iwl()-1,x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + + bool sin_basis = do_cos? swap_table[k]:!swap_table[k]; + A[alpha] = sin_basis; // cos and sin are concatentated. + + ap_fixed t1 = second_order_float::sin_cos_K0[A]; + ap_fixed t2 = B*second_order_float::sin_cos_K1[A]; + ap_fixed t3 = B_squared*second_order_float::sin_cos_K2[A]; + ap_ufixed result = (t1+t2+t3) * Mx; + + return result; + } + + template + static void sincos_approximation(ap_uint<3> &k, + ap_ufixed &x, + ap_ufixed &Mx, + ap_int::EXP_BITS> &Ex, + ap_ufixed &sin_result, + ap_ufixed &cos_result + ) { +#pragma HLS BIND_STORAGE variable=second_order_float::cos_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::cos_K1 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::cos_K2 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::sin_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::sin_K1 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=second_order_float::sin_K2 type=ROM_1P impl=LUTRAM + + _AP_UNUSED_PARAM(k); + _AP_UNUSED_PARAM(Ex); + ap_uint A = x(x.wl()-x.iwl()-1, + x.wl()-x.iwl()-alpha); + ap_ufixed B = x; + ap_ufixed B_trunc = B; + ap_ufixed B_squared = B_trunc*B_trunc; + + // TABLES tables; + ap_ufixed cos_t1 = second_order_float::cos_K0[A]; + ap_ufixed cos_t2 = B*second_order_float::cos_K1[A]; + ap_ufixed cos_t3 = B_squared*second_order_float::cos_K2[A]; + cos_result = 1 - (cos_t1 + cos_t2 + cos_t3); + + ap_fixed sin_t1 = second_order_float::sin_K0[A]; + ap_fixed sin_t2 = B*second_order_float::sin_K1[A]; + ap_fixed sin_t3 = B_squared*second_order_float::sin_K2[A]; + sin_result = Mx * (sin_t1 + sin_t2 + sin_t3); + } + }; + + struct sin_cos_fixed_16 { + + typedef half T; + static const int g = 3; + static const int p1 = 12; + static const int alpha = 8; + static const int beta1 = 4; + + template + static ap_ufixed sin_or_cos_approximation(bool do_cos, + ap_uint<2> &k, + ap_ufixed &x){ + +#pragma HLS BIND_STORAGE variable=first_order_fixed_16::sin_cos_K0 type=ROM_1P impl=LUTRAM +#pragma HLS BIND_STORAGE variable=first_order_fixed_16::sin_cos_K1 type=ROM_1P impl=LUTRAM + _AP_UNUSED_PARAM(do_cos); + _AP_UNUSED_PARAM(k); + + ap_uint A = x(x.wl()-x.iwl()-1,x.wl()-x.iwl()-alpha); + + const int BW = (W_dout-alpha-beta1)>1 ? W_dout-alpha-beta1 : 2; + ap_ufixed B = x; + + ap_fixed t1 = first_order_fixed_16::sin_cos_K0[A]; + ap_fixed t2 = B*first_order_fixed_16::sin_cos_K1[A]; + ap_ufixed result = (t1+t2); + + return result; + }; + }; + + template + ap_fixed + sinf_or_cosf(ap_fixed t_in, bool do_cos, bool do_pi, + typename hls::enable_if<(W > 16) && (W <= 32), bool>::type dummy = true) + { + const int WO = W; + const int g = 3; + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; + const bool neg_sin_table[16] = {0,0,1,0,1,1,0,1, 1,0,1,1,0,1,0,0}; + const bool neg_cos_table[16] = {0,0,0,1,1,1,1,0, 0,1,1,1,1,0,0,0}; + +#pragma HLS array_partition variable=swap_table complete +#pragma HLS array_partition variable=neg_sin_table complete +#pragma HLS array_partition variable=neg_cos_table complete + + _AP_UNUSED_PARAM(dummy); + ap_uint<3> k; + ap_ufixed x; + ap_ufixed Mx; + ap_int::EXP_BITS> Ex = 0; + + int exactly_pi_over_4 = 0; + bool is_negative = t_in[t_in.wl()-1]; + ap_ufixed din = is_negative ? ap_fixed(-t_in) : t_in; + + if(do_pi) { + k = din*4; + x = din*4; + ap_ufixed Mx_bits_extended = din*4; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: Mx_bits_extended = " << Mx_bits_extended.to_string(2) << "\n"; +#endif + exactly_pi_over_4 = (Mx_bits_extended == 1); + } else { + ap_ufixed Wx = din * ap_ufixed(4/M_PI); + k = Wx; + x = Wx; + } +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: k = " << k.to_string(2) << "\n"; +#endif + // If we're in an odd quadrant, then the base functions need to be flipped. + if(k[0] == 1) { + x = 1-x; + } + Mx = x; + + bool cos_basis = do_cos?!swap_table[k]: swap_table[k]; + if(cos_basis) { + // In this case, we are using cos() as the basis, so we don't + // multiply by Mx*2^Ex. + Mx = ap_ufixed::W_dout, 0, AP_RND, AP_SAT>(1); + Ex = 0; + } + + ap_ufixed result = value_list::sin_or_cos_approximation(do_cos,k,x,Mx,Ex); + + if(exactly_pi_over_4) { + result = 0.7071067811865475244008443; + } + + ap_uint<4> index = k; + index[3] = is_negative; + + if(cos_basis ? neg_cos_table[index] : neg_sin_table[index]) { + return -result; + } else { + return result; + } + } + + + template + ap_fixed + sinf_or_cosf(ap_fixed t_in, bool do_cos, bool do_pi, + typename hls::enable_if<(W > 32) && (W <= 64), bool>::type dummy = true) + { + const int WO = W; + const int g = 3; + + const bool swap_table[8] = {0,1,1,0,0,1,1,0}; + const bool neg_sin_table[16] = {0,0,1,0,1,1,0,1, 1,0,1,1,0,1,0,0}; + const bool neg_cos_table[16] = {0,0,0,1,1,1,1,0, 0,1,1,1,1,0,0,0}; +#pragma HLS array_partition variable=swap_table complete +#pragma HLS array_partition variable=neg_sin_table complete +#pragma HLS array_partition variable=neg_cos_table complete + + _AP_UNUSED_PARAM(dummy); + ap_uint<3> k; + ap_ufixed x; + ap_ufixed Mx; + ap_int::EXP_BITS> Ex = 0; + + int exactly_pi_over_4 = 0; + bool is_negative = t_in[t_in.wl()-1]; + ap_ufixed din = is_negative ? ap_fixed(-t_in) : t_in; + + if(do_pi) { + k = din*4; + x = din*4; + ap_ufixed Mx_bits_extended = din*4; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: Mx_bits_extended = " << Mx_bits_extended.to_string(2) << "\n"; +#endif + exactly_pi_over_4 = (Mx_bits_extended == 1); + } else { + ap_ufixed Wx = din * ap_ufixed(4/M_PI); + k = Wx; + x = Wx; + } +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "sin_cos: k = " << k.to_string(2) << "\n"; +#endif + // If we're in an odd quadrant, then the base functions need to be flipped. + if(k[0] == 1) { + x = 1-x; + } + Mx = x; + + bool cos_basis = do_cos?!swap_table[k]: swap_table[k]; + if(cos_basis) { + // In this case, we are using cos() as the basis, so we don't + // multiply by Mx*2^Ex. + Mx = ap_ufixed::W_dout, 0, AP_RND, AP_SAT>(1); + Ex = 0; + } + + ap_ufixed result = value_list::sin_or_cos_approximation(do_cos,k,x,Mx,Ex); + + if(exactly_pi_over_4) { + result = 0.7071067811865475244008443; + } + + ap_uint<4> index = k; + index[3] = is_negative; + + if(cos_basis ? neg_cos_table[index] : neg_sin_table[index]) { + return -result; + } else { + return result; + } + }; + + + template + ap_fixed // Result has same number of fractional bits as the input. + sinf_or_cosf(ap_fixed t_in, bool do_cos, bool do_pi, + typename hls::enable_if::type dummy = true) + { + const int WO = W; + const int g = 4; + + const bool neg_sin_table[8] = {0,0,1,1, 1,1,0,0}; + const bool neg_cos_table[8] = {0,1,1,0, 0,1,1,0}; +#pragma HLS array_partition variable=neg_sin_table complete +#pragma HLS array_partition variable=neg_cos_table complete + + _AP_UNUSED_PARAM(dummy); + ap_uint<2> k; + ap_ufixed x; + + bool is_negative = t_in[t_in.wl()-1]; + ap_ufixed din = is_negative ? ap_fixed(-t_in) : t_in; + + if(do_pi) { + k = din*2; + x = din*2; + ap_ufixed Mx_bits_extended = din*2; + } + else { + ap_ufixed Wx = din * ap_ufixed(2/M_PI); + k = Wx; + x = Wx; + } + + bool is_special_case = false; + + if((k[0] == 1) ^ !do_cos) { + ap_ufixed Wx = 1-x; + x = Wx; + is_special_case = (Wx[Wx.wl()-1] == 1); + } + + ap_ufixed result = sin_cos_fixed_16::sin_or_cos_approximation(do_cos,k,x); + + if(is_special_case) { + ap_uint<3> index = k; + index[2] = do_cos; + const bool special_case_table[8] = {0,1,0,1,1,0,1,0}; + result(result.wl()-2,0) = 0; + result[result.wl()-1] = special_case_table[index]; + } + + { + ap_uint<3> index = k; + index[2] = is_negative; + + if(do_cos ? neg_cos_table[index] : neg_sin_table[index]) { + return -result; + } else { + return result; + } + } + }; + +}; + +#endif + + diff --git a/vitis/v2021_2/hls_hypot_apfixed.h b/vitis/v2021_2/hls_hypot_apfixed.h new file mode 100755 index 00000000..46d94001 --- /dev/null +++ b/vitis/v2021_2/hls_hypot_apfixed.h @@ -0,0 +1,232 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +/** + * @file hls_hypot_apfixed.h" + * @brief Implemenation of hypot for ap_fixed data type. + */ +#ifndef _X_HLS_HYPOT_FIXED_H_ +#define _X_HLS_HYPOT_FIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "hls_round_copysign_apfixed.h" +namespace hypot_internal { +template +ap_fixed hypot_fixed(ap_fixed x, ap_fixed y) { + const static int F = W - I; + if(I > 33) return 0; + else if(F > 32) return 0; + +#ifndef __SYNTHESIS__ +#ifdef HLS_DEBUG + std::cout<<"W="< +bool generic_isequal(ap_fixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal apfixed a & apfixed b +template +bool generic_isnotequal(ap_fixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_ufixed a & ap_fixed b +template +bool generic_isequal(ap_ufixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_ufixed a & ap_fixed b +template +bool generic_isnotequal(ap_ufixed x,ap_fixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_fixed a & ap_ufixed b +template +bool generic_isequal(ap_fixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_fixed a & ap_ufixed b +template +bool generic_isnotequal(ap_fixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_ufixed a & ap_ufixed b +template +bool generic_isequal(ap_ufixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_ufixed a & ap_ufixed b +template +bool generic_isnotequal(ap_ufixed x,ap_ufixed y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + + +///isequal apint a & apint b +template +bool generic_isequal(ap_int x,ap_int y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal apint a & apint b +template +bool generic_isnotequal(ap_int x,ap_int y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_uint a & ap_int b +template +bool generic_isequal(ap_uint x,ap_int y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_uint a & ap_int b +template +bool generic_isnotequal(ap_uint x,ap_int y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_int a & ap_uint b +template +bool generic_isequal(ap_int x,ap_uint y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_int a & ap_uint b +template +bool generic_isnotequal(ap_int x,ap_uint y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +///isequal ap_uint a & ap_uint b +template +bool generic_isequal(ap_uint x,ap_uint y) +{ +#pragma HLS pipeline + return (x==y); +} + +///isnotequal ap_uint a & ap_uint b +template +bool generic_isnotequal(ap_uint x,ap_uint y) +{ +#pragma HLS pipeline + return (!(x==y)); +} + +#endif + + + diff --git a/vitis/v2021_2/hls_ldexp_apfixed.h b/vitis/v2021_2/hls_ldexp_apfixed.h new file mode 100755 index 00000000..13758b9e --- /dev/null +++ b/vitis/v2021_2/hls_ldexp_apfixed.h @@ -0,0 +1,127 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_LDEXP_APFIXED_H_ +#define _X_HLS_LDEXP_APFIXED_H_ +#include "ap_fixed.h" + +namespace hls_ldexp { + +template +ap_fixed ldexp(ap_fixed x, int exp) { + ap_fixed result; + if(exp >= W || exp <= -W) { + result = 0; + } else { + result = x << exp; + } + return result; +} + +template +ap_ufixed ldexp(ap_ufixed x, int exp) { + ap_fixed xf = x; + return ldexp(xf, exp); +} + +template +ap_int ldexp(ap_int x, int exp) { + ap_fixed xf = x; + return ldexp(xf, exp); +} + +template +ap_uint ldexp(ap_uint x, int exp) { + ap_fixed xf = x; + return ldexp(xf, exp); +} + +template +ap_fixed scalbn(ap_fixed x, int n) { + ap_fixed result; + if(n >= W || n <= -W) { + result = 0; + } else { + result = x << n; + } + return result; +} + +template +ap_ufixed scalbn(ap_ufixed x, int n) { + ap_fixed xf = x; + return scalbn(xf, n); +} + +template +ap_int scalbn(ap_int x, int n) { + ap_fixed xf = x; + return scalbn(xf, n); +} + +template +ap_uint scalbn(ap_uint x, int n) { + ap_fixed xf = x; + return scalbn(xf, n); +} + +template +ap_fixed scalbln(ap_fixed x, long int n) { + ap_fixed result; + if(n >= W || n <= -W) { + result = 0; + } else { + result = x << n; + } + return result; +} + +template +ap_ufixed scalbln(ap_ufixed x, long int n) { + ap_fixed xf = x; + return scalbln(xf, n); +} + +template +ap_int scalbln(ap_int x, long int n) { + ap_fixed xf = x; + return scalbln(xf, n); +} + +template +ap_uint scalbln(ap_uint x, long int n) { + ap_fixed xf = x; + return scalbln(xf, n); +} + +} + +#endif diff --git a/vitis/v2021_2/hls_lgamma_apfixed.h b/vitis/v2021_2/hls_lgamma_apfixed.h new file mode 100755 index 00000000..cf375380 --- /dev/null +++ b/vitis/v2021_2/hls_lgamma_apfixed.h @@ -0,0 +1,92 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_LGAMMA_APFIXED_H_ +#define _X_HLS_LGAMMA_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_traits.h" +#include "utils/x_hls_utils.h" + +namespace lgamma_fixed { + +template ap_fixed lgamma_generic(ap_fixed x_fixed) { +#pragma HLS pipeline + + double x = x_fixed.to_double(); + double r = hls::lgamma(x); + fp_struct out(r); + ap_ufixed ret = 1; + int F = W - I; + if (F > 52) F = 52; + if (W > I) ret(F - 1, 0) = out.sig(52 - 1, 52 - F); + ret = (ret << (out.exp - fp_struct::EXP_BIAS)); + return ap_fixed(ret); +} + +template ap_ufixed lgamma_generic(ap_ufixed x) { + ap_fixed xf = x; + return lgamma_generic(xf); +} +template ap_int lgamma_generic(ap_int x) { + ap_fixed xf = x; + return lgamma_generic(xf); +} +template ap_uint lgamma_generic(ap_uint x) { + ap_fixed xf = x; + return lgamma_generic(xf); +} + +//lgamma_r +template ap_fixed lgamma_r_generic(ap_fixed x, int *signgamp) { + *signgamp = 1; + return lgamma_generic(x); +} + +template ap_ufixed lgamma_r_generic(ap_ufixed x, int *signgamp) { + ap_fixed xf = x; + return lgamma_r_generic(xf, signgamp); +} + +template ap_int lgamma_r_generic(ap_int x, int *signgamp) { + ap_fixed xf = x; + return lgamma_r_generic(xf, signgamp); +} + +template ap_uint lgamma_r_generic(ap_uint x, int *signgamp) { + ap_fixed xf = x; + return lgamma_r_generic(xf, signgamp); +} + +} // lgamma_fixed + +#endif diff --git a/vitis/v2021_2/hls_log_apfixed.h b/vitis/v2021_2/hls_log_apfixed.h new file mode 100755 index 00000000..b0da65c0 --- /dev/null +++ b/vitis/v2021_2/hls_log_apfixed.h @@ -0,0 +1,1474 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_LOG_APFIXED_H_ +#define _X_HLS_LOG_APFIXED_H_ +#include "ap_fixed.h" +#ifndef __SYNTHESIS__ +#include +#endif + +namespace log_apfixed_reduce { + +//#include "hls_log_apfixed_tables.h" +template class log_lut_table { public: +log_lut_table(); +static const T array [size];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<29, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<44, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; +template <> class log_lut_table,4,4,16> { public: +log_lut_table,4,4,16>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [16];}; + +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<44, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,7,6,64> { public: +log_lut_table,7,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,12,6,64> { public: +log_lut_table,12,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,17,6,64> { public: +log_lut_table,17,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,22,6,64> { public: +log_lut_table,22,6,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,22,6,64> { public: +log_lut_table,22,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,22,6,64> { public: +log_lut_table,22,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,27,6,64> { public: +log_lut_table,27,6,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log_lut_table,27,6,64> { public: +log_lut_table,27,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template <> class log_lut_table,32,6,64> { public: +log_lut_table,32,6,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +template class log0_lut_table { public: +log0_lut_table(); +static const T array[size];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); + +static const ap_fixed<20, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<29, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<44, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<59, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<74, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<89, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<104, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; +template <> class log0_lut_table,0,5,64> { public: +log0_lut_table,0,5,64>(); +static const ap_fixed<119, 7, (ap_q_mode)5, (ap_o_mode)3, 0> array [64];}; + +class log_inverse_lut_table { public: +log_inverse_lut_table(); +static const ap_ufixed<6, 1, (ap_q_mode)5, (ap_o_mode)3, 0> array[64];}; + + +template +void range_reduce(ap_ufixed zN, LOG_TYPE &log, ap_ufixed &zN1) +{ + //#pragma HLS inline off + const int T1size = 1 << alpha; // The size of the first table +#define log_lut log_lut_table::array + + //#pragma HLS RESOURCE variable=log_lut core=ROM_1P_LUTRAM + + ap_ufixed a = zN; // Extract alpha MSBs from z1. + ap_ufixed b = zN; // Extract the LSBs from z1. + ap_ufixed zNext = 1+zN; // Extend z1 for shift + int e_shift = (p!=4 || a[a.wl()-1]==1) ? 2*p : 2*p+1; // Stage dependent? + ap_ufixed eZ = zNext >> e_shift; + + zN1 = ((b + eZ) - a*zN); + ap_uint index = a(alpha-1,0); + log = log_lut[index]; + +#undef log_lut +} + +// i 0 1 2 3 4 5 6 7 8 +// ===================================== +// pi 0 4 7 12 17 22 27 32 37 +const int p0 = 0; // We start with zero zeroed bits +const int alpha0 = 5; // 1+alpha0 = number of bits considered by stage 0. +const int p1 = (alpha0 == 5) ? 4 : (alpha0-2); // The number of bits zeroed in y1. +const int alpha1 = 4; +const int p2 = p1 + alpha1 - 1; +const int alpha2 = 6; +const int p3 = p2 + alpha2 - 1; +const int alpha3 = 6; +const int p4 = p3 + alpha3 - 1; +const int alpha4 = 6; +const int p5 = p4 + alpha4 - 1; +const int alpha5 = 6; +const int p6 = p5 + alpha5 - 1; +const int alpha6 = 6; +const int p7 = p6 + alpha6 - 1; +const int alpha7 = 6; +const int p8 = p7 + alpha7 - 1; + +template class log_traits{}; + +template <> +class log_traits<1>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 11; // round to F_ + const static int org_wf = wf; + + const static int gbits = 1; + const static int p_generic = p1; + const static int MaxPrecision = wf+gbits+1;//11+1=12; + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<19,7> + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + _AP_UNUSED_PARAM(log_sum); + return z1; + } +}; + +template <> +class log_traits<2>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 19; // round to F_ + const static int org_wf = wf; + + const static int gbits = 2; + const static int p_generic = p2; + const static int MaxPrecision =wf+gbits+1;//19+2=21 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<28,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + return z2; + } +}; + +template <> +class log_traits<3>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 33; // round to F_ + const static int org_wf = wf; + + const static int gbits = 3; + const static int p_generic = p3; + const static int MaxPrecision = wf+gbits+1;//33+3=36 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<43,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + return z3; + } +}; + +template <> +class log_traits<4>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 48; // round to F_ + const static int org_wf = wf; + + const static int gbits = 3; + const static int p_generic = p4; + const static int MaxPrecision = wf+gbits+1;//3+48=51 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<58,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + return z4; + } +}; + +template <> +class log_traits<5>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 63; // round to (W_-1) + const static int org_wf = wf; + + const static int gbits = 3; + const static int p_generic = p5; + const static int MaxPrecision = wf+gbits+1;//3+63=66; + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<73,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + return z5; + } +}; + +template <> +class log_traits<6>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 76; // round to F_ + const static int org_wf = wf; + + const static int gbits = 4; + const static int p_generic = p6; + const static int MaxPrecision = wf+gbits+2;//76+4=80 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<87,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + const static int w6 = w5+2*p5+1-(alpha5-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + ap_ufixed<(w6 < MaxPrecision-p6) ? w6 : (MaxPrecision-p6), -p6> z6; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + range_reduce (z5, logn, z6); + log_sum += logn; + return z6; + } +}; + +template <> +class log_traits<7>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 91; // round to (W_-1) + const static int org_wf = wf; + + const static int gbits = 4; + const static int p_generic = p7; + const static int MaxPrecision = wf+gbits+2;//91+4=95 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<102,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + const static int w6 = w5+2*p5+1-(alpha5-1); + const static int w7 = w6+2*p6+1-(alpha6-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + ap_ufixed<(w6 < MaxPrecision-p6) ? w6 : (MaxPrecision-p6), -p6> z6; + ap_ufixed<(w7 < MaxPrecision-p7) ? w7 : (MaxPrecision-p7), -p7> z7; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + range_reduce (z5, logn, z6); + log_sum += logn; + range_reduce (z6, logn, z7); + log_sum += logn; + return z7; + } +}; + +template <> +class log_traits<8>{ +public: + const static int we = 6; // ceil(log2(ln(2^(W_-1)))), <= ceil(log2(ln(2^32))) + const static int wf = 106; // round to F_ + const static int org_wf = wf; + + const static int gbits = 4; + const static int p_generic = p8;//37 + const static int MaxPrecision = wf+gbits+2;//106+4=110 + typedef ap_fixed<1 + we + MaxPrecision, 1 + we > LOG_TYPE;//<117,7> + + const static int w1 = wf+1; + const static int w2 = w1+2*p1+1-(alpha1-1); // MaxWidth of z2, needs to be truncted to MaxPrecision + const static int w3 = w2+2*p2+1-(alpha2-1); + const static int w4 = w3+2*p3+1-(alpha3-1); + const static int w5 = w4+2*p4+1-(alpha4-1); + const static int w6 = w5+2*p5+1-(alpha5-1); + const static int w7 = w6+2*p6+1-(alpha6-1); + const static int w8 = w7+2*p7+1-(alpha7-1); + + template + static ap_ufixed range_reduction(ap_ufixed z1, LOG_TYPE &log_sum) { + ap_ufixed<(w2 < MaxPrecision-p2) ? w2 : (MaxPrecision-p2), -p2> z2; + ap_ufixed<(w3 < MaxPrecision-p3) ? w3 : (MaxPrecision-p3), -p3> z3; + ap_ufixed<(w4 < MaxPrecision-p4) ? w4 : (MaxPrecision-p4), -p4> z4; + ap_ufixed<(w5 < MaxPrecision-p5) ? w5 : (MaxPrecision-p5), -p5> z5; + ap_ufixed<(w6 < MaxPrecision-p6) ? w6 : (MaxPrecision-p6), -p6> z6; + ap_ufixed<(w7 < MaxPrecision-p7) ? w7 : (MaxPrecision-p7), -p7> z7; + ap_ufixed<(w8 < MaxPrecision-p8) ? w8 : (MaxPrecision-p8), -p8> z8; + LOG_TYPE logn; + + range_reduce (z1, logn, z2); + log_sum += logn; + range_reduce (z2, logn, z3); + log_sum += logn; + range_reduce (z3, logn, z4); + log_sum += logn; + range_reduce (z4, logn, z5); + log_sum += logn; + range_reduce (z5, logn, z6); + log_sum += logn; + range_reduce (z6, logn, z7); + log_sum += logn; + range_reduce (z7, logn, z8); + log_sum += logn; + return z8; + } +}; +template +ap_fixed log(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const static int F_ = W_ - I_; + if (I_>34) return 0; + else if (F_>100) return 0; + + // return ap_fixed value + ap_fixed r = 0; + ap_ufixed x_s = x; + + if (F_==0) { + if (I_<=7) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else r = 4; + } else if (I_<=10) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else r = 6; + } else if (I_<=13) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else r = 8; + } else if (I_<=17) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else r = 11; + } else if (I_<=19) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else r = 12; + } else if (I_<=26) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else if (x_s<=ap_ufixed("0x41831p0")) r = 12; + else if (x_s<=ap_ufixed("0xb2148p0")) r = 13; + else if (x_s<=ap_ufixed("0x1e4127p0")) r = 14; + else if (x_s<=ap_ufixed("0x523d82p0")) r = 15; + else if (x_s<=ap_ufixed("0xdf8d5fp0")) r = 16; + else r = 17; + } else if (I_<=32) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else if (x_s<=ap_ufixed("0x41831p0")) r = 12; + else if (x_s<=ap_ufixed("0xb2148p0")) r = 13; + else if (x_s<=ap_ufixed("0x1e4127p0")) r = 14; + else if (x_s<=ap_ufixed("0x523d82p0")) r = 15; + else if (x_s<=ap_ufixed("0xdf8d5fp0")) r = 16; + else if (x_s<=ap_ufixed("0x25fad90p0")) r = 17; + else if (x_s<=ap_ufixed("0x673d70bp0")) r = 18; + else if (x_s<=ap_ufixed("0x118a2aaep0")) r = 19; + else if (x_s<=ap_ufixed("0x2fad89e1p0")) r = 20; + else r = 21; + } else { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x4p0")) r = 1; + else if (x_s<=ap_ufixed("0xcp0")) r = 2; + else if (x_s<=ap_ufixed("0x21p0")) r = 3; + else if (x_s<=ap_ufixed("0x5ap0")) r = 4; + else if (x_s<=ap_ufixed("0xf4p0")) r = 5; + else if (x_s<=ap_ufixed("0x299p0")) r = 6; + else if (x_s<=ap_ufixed("0x710p0")) r = 7; + else if (x_s<=ap_ufixed("0x1332p0")) r = 8; + else if (x_s<=ap_ufixed("0x342fp0")) r = 9; + else if (x_s<=ap_ufixed("0x8ddbp0")) r = 10; + else if (x_s<=ap_ufixed("0x1819bp0")) r = 11; + else if (x_s<=ap_ufixed("0x41831p0")) r = 12; + else if (x_s<=ap_ufixed("0xb2148p0")) r = 13; + else if (x_s<=ap_ufixed("0x1e4127p0")) r = 14; + else if (x_s<=ap_ufixed("0x523d82p0")) r = 15; + else if (x_s<=ap_ufixed("0xdf8d5fp0")) r = 16; + else if (x_s<=ap_ufixed("0x25fad90p0")) r = 17; + else if (x_s<=ap_ufixed("0x673d70bp0")) r = 18; + else if (x_s<=ap_ufixed("0x118a2aaep0")) r = 19; + else if (x_s<=ap_ufixed("0x2fad89e1p0")) r = 20; + else if (x_s<=ap_ufixed("0x819a1801p0")) r = 21; + else r = 22; + } + } else if (F_<=4 && I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s==ap_ufixed("0x0.1p0")) r = "-0x2.cp0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "-0x2.1p0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "-0x1.bp0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "-0x1.6p0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "-0x1.3p0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "-0x1p0"; + else if (x_s==ap_ufixed("0x0.7p0")) r = "-0x0.dp0"; + else if (x_s==ap_ufixed("0x0.8p0")) r = "-0x0.bp0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "-0x0.9p0"; + else if (x_s==ap_ufixed("0x0.ap0")) r = "-0x0.8p0"; + else if (x_s==ap_ufixed("0x0.bp0")) r = "-0x0.6p0"; + else if (x_s==ap_ufixed("0x0.cp0")) r = "-0x0.5p0"; + else if (x_s==ap_ufixed("0x0.dp0")) r = "-0x0.3p0"; + else if (x_s==ap_ufixed("0x0.ep0")) r = "-0x0.2p0"; + else if (x_s==ap_ufixed("0x0.fp0")) r = "-0x0.1p0"; + else if (x_s==ap_ufixed("0x1p0")) r = "0x0p0"; + else if (x_s==ap_ufixed("0x1.1p0")) r = "0x0.1p0"; + else if (x_s==ap_ufixed("0x1.2p0")) r = "0x0.2p0"; + else if (x_s==ap_ufixed("0x1.3p0")) r = "0x0.3p0"; + else if (x_s<=ap_ufixed("0x1.5p0")) r = "0x0.4p0"; + else if (x_s<=ap_ufixed("0x1.6p0")) r = "0x0.5p0"; + else if (x_s<=ap_ufixed("0x1.8p0")) r = "0x0.6p0"; + else if (x_s<=ap_ufixed("0x1.9p0")) r = "0x0.7p0"; + else if (x_s<=ap_ufixed("0x1.bp0")) r = "0x0.8p0"; + else if (x_s<=ap_ufixed("0x1.cp0")) r = "0x0.9p0"; + else if (x_s<=ap_ufixed("0x1.ep0")) r = "0x0.ap0"; + else if (x_s<=ap_ufixed("0x2p0")) r = "0x0.bp0"; + else if (x_s<=ap_ufixed("0x2.2p0")) r = "0x0.cp0"; + else if (x_s<=ap_ufixed("0x2.5p0")) r = "0x0.dp0"; + else if (x_s<=ap_ufixed("0x2.7p0")) r = "0x0.ep0"; + else if (x_s<=ap_ufixed("0x2.ap0")) r = "0x0.fp0"; + else if (x_s<=ap_ufixed("0x2.cp0")) r = "0x1p0"; + else if (x_s<=ap_ufixed("0x2.fp0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0x3.2p0")) r = "0x1.2p0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x1.3p0"; + else if (x_s<=ap_ufixed("0x3.9p0")) r = "0x1.4p0"; + else if (x_s<=ap_ufixed("0x3.dp0")) r = "0x1.5p0"; + else if (x_s<=ap_ufixed("0x4.1p0")) r = "0x1.6p0"; + else if (x_s<=ap_ufixed("0x4.5p0")) r = "0x1.7p0"; + else if (x_s<=ap_ufixed("0x4.9p0")) r = "0x1.8p0"; + else if (x_s<=ap_ufixed("0x4.ep0")) r = "0x1.9p0"; + else if (x_s<=ap_ufixed("0x5.3p0")) r = "0x1.ap0"; + else if (x_s<=ap_ufixed("0x5.9p0")) r = "0x1.bp0"; + else if (x_s<=ap_ufixed("0x5.ep0")) r = "0x1.cp0"; + else if (x_s<=ap_ufixed("0x6.5p0")) r = "0x1.dp0"; + else if (x_s<=ap_ufixed("0x6.bp0")) r = "0x1.ep0"; + else if (x_s<=ap_ufixed("0x7.2p0")) r = "0x1.fp0"; + else if (x_s<=ap_ufixed("0x7.9p0")) r = "0x2p0"; + else if (x_s<=ap_ufixed("0x8.1p0")) r = "0x2.1p0"; + else if (x_s<=ap_ufixed("0x8.ap0")) r = "0x2.2p0"; + else if (x_s<=ap_ufixed("0x9.3p0")) r = "0x2.3p0"; + else if (x_s<=ap_ufixed("0x9.cp0")) r = "0x2.4p0"; + else if (x_s<=ap_ufixed("0xa.6p0")) r = "0x2.5p0"; + else if (x_s<=ap_ufixed("0xb.1p0")) r = "0x2.6p0"; + else if (x_s<=ap_ufixed("0xb.cp0")) r = "0x2.7p0"; + else if (x_s<=ap_ufixed("0xc.9p0")) r = "0x2.8p0"; + else if (x_s<=ap_ufixed("0xd.6p0")) r = "0x2.9p0"; + else if (x_s<=ap_ufixed("0xe.3p0")) r = "0x2.ap0"; + else if (x_s<=ap_ufixed("0xf.2p0")) r = "0x2.bp0"; + else r = "0x2.cp0"; + } else { + + if (x<=0) {r[W_-1] = 1;} + else { + + //std::cout<<"[LOG]x="<::wf; + const static int I_s= I_>0? I_:-I_; + const static int org_wf = log_traits::org_wf+I_s; + const static int MaxPrecision = log_traits::MaxPrecision; + + // x = b_frac * (2 ^ b_exp) + // .75 <= b_frac < 1.5 + // -F_ <= b_exp <= I_-1 + ap_int<7> b_exp; + ap_ufixed<1 + org_wf,1> b_frac=0; + b_frac[org_wf] = 0; + b_frac(org_wf-1,org_wf-W_+1) = x(W_-2,0); + for (b_exp = I_-1; b_exp >= -F_; b_exp--) { + #pragma HLS unroll + if ((!b_frac[org_wf]&b_frac[org_wf-1]&b_frac[org_wf-2])|(b_frac[org_wf]&!b_frac[org_wf-1])) + break; + b_frac <<= 1; + } + //std::cout<<"[LOG]b_exp="< Elog2 = LOG2 * b_exp; + //maybe need to extend ???? + + + typedef typename log_traits::LOG_TYPE LOG_TYPE; + const static int bypass_threshold = log_traits::p_generic; + + //std::cout<<"[LOG]b_frac="< index0; // ap_uint<6> + if (b_frac[org_wf]) index0 = b_frac(org_wf-1,org_wf-6); + else index0 = b_frac(org_wf-2,org_wf-7); + + const int T0size = 1 << (1+alpha0); // The size of the first table + +#define inverse_lut log_inverse_lut_table::array +#define log_lut log0_lut_table::array + + ap_ufixed<1 + alpha0, 1> b_frac_tilde_inverse = inverse_lut[index0]; + + //std::cout<<"[LOG]b_frac_tilde_inverse="< b_frac1 = b_frac * b_frac_tilde_inverse; + //std::cout<<"[LOG]b_frac1="< z1 = b_frac1; // Extract a1+b1 from y1. + //std::cout<<"[LOG]z1="< zk; + zk = log_traits::range_reduction(z1,log_sum); + //std::cout<<"[LOG]zk="< zk_trunc = zk; + LOG_TYPE sum = zk-(zk_trunc*zk_trunc/2); + + LOG_TYPE log_base; + log_base = Elog2 + log_sum + sum; +#undef log_lut +#undef inverse_lut + + ap_fixed<2 + F_, 1> delta = 0; + delta[delta.wl()-1] = log_base[log_base.wl()-1]; + delta[delta.wl()-delta.iwl()-1] = 1; + log_base = log_base + ( delta >> F_ ); + + r = log_base; + } + + } + + return r; +} + +template +ap_ufixed log(ap_ufixed x) { + ap_fixed xf = x; + return log(xf); +} + +template +ap_int log(ap_int x) { + ap_fixed xf = x; + return log(xf); +} + +template +ap_uint log(ap_uint x) { + ap_fixed xf = x; + return log(xf); +} + + +template +ap_fixed log10(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const static int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + // return ap_fixed value + ap_fixed r = 0; + ap_ufixed x_s = x; + + if (F_==0) { + if (I_<=9) { + if (x<=0) {r[W_-1] = 1;} + else { + ap_ufixed<8,8> x_s_l = x_s; + if (x_s_l(7,2)==0) r = 0; + else if (x_s_l(7,5)==0) r = 1; + else r = 2; + } + } else if (I_<=15) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else r = 4; + } else if (I_<=19) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else r = 5; + } else if (I_<=25) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else if (x_s<=ap_ufixed("0x4d343p0")) r = 5; + else if (x_s<=ap_ufixed("0x3040a5p0")) r = 6; + else r = 7; + } else if (I_<=32) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else if (x_s<=ap_ufixed("0x4d343p0")) r = 5; + else if (x_s<=ap_ufixed("0x3040a5p0")) r = 6; + else if (x_s<=ap_ufixed("0x1e28678p0")) r = 7; + else if (x_s<=ap_ufixed("0x12d940b6p0")) r = 8; + else r = 9; + } else { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x3p0")) r = 0; + else if (x_s<=ap_ufixed("0x1fp0")) r = 1; + else if (x_s<=ap_ufixed("0x13cp0")) r = 2; + else if (x_s<=ap_ufixed("0xc5ap0")) r = 3; + else if (x_s<=ap_ufixed("0x7b86p0")) r = 4; + else if (x_s<=ap_ufixed("0x4d343p0")) r = 5; + else if (x_s<=ap_ufixed("0x3040a5p0")) r = 6; + else if (x_s<=ap_ufixed("0x1e28678p0")) r = 7; + else if (x_s<=ap_ufixed("0x12d940b6p0")) r = 8; + else if (x_s<=ap_ufixed("0xbc7c871cp0")) r = 9; + else r = 10; + } + } else if (F_<=4 && I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s==ap_ufixed("0x0.1p0")) r = "-0x1.3p0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "-0x0.ep0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "-0x0.cp0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "-0x0.ap0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "-0x0.8p0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "-0x0.7p0"; + else if (x_s==ap_ufixed("0x0.7p0")) r = "-0x0.6p0"; + else if (x_s==ap_ufixed("0x0.8p0")) r = "-0x0.5p0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "-0x0.4p0"; + else if (x_s<=ap_ufixed("0x0.bp0")) r = "-0x0.3p0"; + else if (x_s==ap_ufixed("0x0.cp0")) r = "-0x0.2p0"; + else if (x_s<=ap_ufixed("0x0.ep0")) r = "-0x0.1p0"; + else if (x_s<=ap_ufixed("0x1.1p0")) r = "0x0p0"; + else if (x_s<=ap_ufixed("0x1.3p0")) r = "0x0.1p0"; + else if (x_s<=ap_ufixed("0x1.6p0")) r = "0x0.2p0"; + else if (x_s<=ap_ufixed("0x1.ap0")) r = "0x0.3p0"; + else if (x_s<=ap_ufixed("0x1.ep0")) r = "0x0.4p0"; + else if (x_s<=ap_ufixed("0x2.3p0")) r = "0x0.5p0"; + else if (x_s<=ap_ufixed("0x2.8p0")) r = "0x0.6p0"; + else if (x_s<=ap_ufixed("0x2.fp0")) r = "0x0.7p0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x0.8p0"; + else if (x_s<=ap_ufixed("0x3.ep0")) r = "0x0.9p0"; + else if (x_s<=ap_ufixed("0x4.8p0")) r = "0x0.ap0"; + else if (x_s<=ap_ufixed("0x5.3p0")) r = "0x0.bp0"; + else if (x_s<=ap_ufixed("0x6p0")) r = "0x0.cp0"; + else if (x_s<=ap_ufixed("0x6.fp0")) r = "0x0.dp0"; + else if (x_s<=ap_ufixed("0x8p0")) r = "0x0.ep0"; + else if (x_s<=ap_ufixed("0x9.4p0")) r = "0x0.fp0"; + else if (x_s<=ap_ufixed("0xa.bp0")) r = "0x1p0"; + else if (x_s<=ap_ufixed("0xc.6p0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0xe.5p0")) r = "0x1.2p0"; + else r = "0x1.3p0"; + } else { // I was here! + + if (x<=0) {r[W_-1] = 1;} + else { + const static int W_s_= (F_+F_/77*2+12)/15-(100+F_)/133+(99+F_)/133-(100+F_)/118+(98+F_)/118+1; + //if (W_<=11) W_s_ = 1; + //else if (W_<=19) W_s_ = 2; + //else if (W_<=33) W_s_ = 3; + //else if (W_<=48) W_s_ = 4; + //else if (W_<=63) W_s_ = 5; + //else if (W_<=76) W_s_ = 6; + const static int wf = log_traits::wf; + const static int I_s= I_>0? I_:-I_; + const static int org_wf = log_traits::org_wf+I_s; + const static int MaxPrecision = log_traits::MaxPrecision; + + // x = b_frac * (2 ^ b_exp) + // .75 <= b_frac < 1.5 + // -F_ <= b_exp <= I_-1 + + ap_int<7> b_exp=0; + ap_ufixed<1 + org_wf,1> b_frac=0; + b_frac[org_wf] = 0; + b_frac(org_wf-1,org_wf-W_+1) = x(W_-2,0); + for (b_exp = I_-1; b_exp >= -F_; b_exp--) { + #pragma HLS unroll + if ((!b_frac[org_wf]&b_frac[org_wf-1]&b_frac[org_wf-2])|(b_frac[org_wf]&!b_frac[org_wf-1])) + break; + b_frac <<= 1; + } + + const ap_ufixed<25,0> LOG1_35_s = 0.3010300099849700927734375;//0.693147182464599609375; + const ap_ufixed<43,0> LOG1_35_l = 0.30102999566395283181918784976006;//0.69314718055989033018704503774643; + ap_fixed<30,5> Elog2_s = LOG1_35_s * b_exp; + ap_fixed<48,5> Elog2_l = LOG1_35_l * b_exp; + + + typedef typename log_traits::LOG_TYPE LOG_TYPE; + const static int bypass_threshold = log_traits::p_generic; + + ap_uint<1+alpha0> index0; // ap_uint<6> + if (b_frac[org_wf]) index0 = b_frac(org_wf-1,org_wf-6); + else index0 = b_frac(org_wf-2,org_wf-7); + + const int T0size = 1 << (1+alpha0); // The size of the first table + +#define inverse_lut log_inverse_lut_table::array +#define log_lut log0_lut_table::array + + ap_ufixed<1 + alpha0, 1> b_frac_tilde_inverse = inverse_lut[index0]; + + LOG_TYPE log_sum = log_lut[index0]; + + ap_ufixed<1 + org_wf+1+(1+alpha0), 1> b_frac1 = b_frac * b_frac_tilde_inverse; + +#ifndef __SYNTHESIS__ + assert(b_frac1( b_frac1.wl()-b_frac1.iwl()-1, b_frac1.wl()-b_frac1.iwl()-p1) == 0); +#endif + const int z1_width = 1+wf+1+(1+alpha0)-p1+1; + ap_ufixed z1 = b_frac1; // Extract a1+b1 from y1. + + ap_fixed<1-bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk; + zk = log_traits::range_reduction(z1,log_sum); + + ap_fixed<1-2*bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk_trunc = zk; + LOG_TYPE sum = zk-(zk_trunc*zk_trunc/2); + + LOG_TYPE log_base = log_sum + sum; + + const ap_ufixed<25,0> LOG1_54_s = 0.4342944920063018798828125;//0.693147182464599609375; + const ap_ufixed<43,0> LOG1_54_l = 0.43429448190329367207596078515053;//0.69314718055989033018704503774643; + + if (F_<=16) log_base = Elog2_s + log_base * LOG1_54_s; + else log_base = Elog2_l + log_base * LOG1_54_l; +#undef log_lut +#undef inverse_lut + +// ap_fixed<1 + 33, 1> delta = 0; +// delta[delta.wl()-1] = log_base[log_base.wl()-1]; +// delta[delta.wl()-delta.iwl()-1] = 1; +// log_base = log_base + ( delta >> F_ ); + + r = log_base; + } + + } + + return r; +} + +template +ap_ufixed log10(ap_ufixed x) { + ap_fixed xf = x; + return log10(xf); +} + +template +ap_int log10(ap_int x) { + ap_fixed xf = x; + return log10(xf); +} + +template +ap_uint log10(ap_uint x) { + ap_fixed xf = x; + return log10(xf); +} + +template +ap_fixed log1p(ap_fixed x) { + ap_ufixed<1,1> inc = 1; + ap_fixed xp1 = x + inc; + return log(xp1); +} + +template +ap_ufixed log1p(ap_ufixed x) { + ap_fixed xf = x; + return log1p(xf); +} + +template +ap_int log1p(ap_int x) { + ap_fixed xf = x; + return log1p(xf); +} + +template +ap_uint log1p(ap_uint x) { + ap_fixed xf = x; + return log1p(xf); +} + +template +ap_fixed ilogb(ap_fixed x) { + int F = W - I; + if(F>32 || I>33) { + return 0; + } + ap_fixed xf; + if(x>0) { + xf = x; + } + else { + xf = -x; + } + return I + 1 - xf.countLeadingZeros() - 1; +} + +template +ap_ufixed ilogb(ap_ufixed x) { + ap_fixed xf = x; + return ilogb(xf); +} + +template +ap_int ilogb(ap_int x) { + ap_fixed xf = x; + return ilogb(xf); +} + +template +ap_uint ilogb(ap_uint x) { + ap_fixed xf = x; + return ilogb(xf); +} + + +template +ap_fixed log2(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const static int F_ = W_ - I_; + if (I_>33) return 0; + else if (F_>32) return 0; + + // return ap_fixed value + ap_fixed r = 0; + ap_ufixed x_s = x; + + if (F_==0) { + if (I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else r = 4; + } else if (I_<=9) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else r = 8; + } else if (I_<=13) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else r = 12; + } else if (I_<=17) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else r = 16; + } else if (I_<=21) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else r = 20; + } else if (I_<=25) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else if (x_s<=ap_ufixed("0x16A09Ep0")) r = 20; + else if (x_s<=ap_ufixed("0x2D413Cp0")) r = 21; + else if (x_s<=ap_ufixed("0x5A8279p0")) r = 22; + else if (x_s<=ap_ufixed("0xB504F3p0")) r = 23; + else r = 24; + } else if (I_<=29) { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else if (x_s<=ap_ufixed("0x16A09Ep0")) r = 20; + else if (x_s<=ap_ufixed("0x2D413Cp0")) r = 21; + else if (x_s<=ap_ufixed("0x5A8279p0")) r = 22; + else if (x_s<=ap_ufixed("0xB504F3p0")) r = 23; + else if (x_s<=ap_ufixed("0x16A09E6p0")) r = 24; + else if (x_s<=ap_ufixed("0x2D413CCp0")) r = 25; + else if (x_s<=ap_ufixed("0x5A82799p0")) r = 26; + else if (x_s<=ap_ufixed("0xB504F33p0")) r = 27; + else r = 28; + } else { + if (x<=0) r[W_-1] = 1; + else if (x_s<=ap_ufixed("0x1p0")) r = 0; + else if (x_s<=ap_ufixed("0x2p0")) r = 1; + else if (x_s<=ap_ufixed("0x5p0")) r = 2; + else if (x_s<=ap_ufixed("0xBp0")) r = 3; + else if (x_s<=ap_ufixed("0x16p0")) r = 4; + else if (x_s<=ap_ufixed("0x2Dp0")) r = 5; + else if (x_s<=ap_ufixed("0x5Ap0")) r = 6; + else if (x_s<=ap_ufixed("0xB5p0")) r = 7; + else if (x_s<=ap_ufixed("0x16Ap0")) r = 8; + else if (x_s<=ap_ufixed("0x2D4p0")) r = 9; + else if (x_s<=ap_ufixed("0x5A8p0")) r = 10; + else if (x_s<=ap_ufixed("0xB50p0")) r = 11; + else if (x_s<=ap_ufixed("0x16A0p0")) r = 12; + else if (x_s<=ap_ufixed("0x2D41p0")) r = 13; + else if (x_s<=ap_ufixed("0x5A82p0")) r = 14; + else if (x_s<=ap_ufixed("0xB504p0")) r = 15; + else if (x_s<=ap_ufixed("0x16A09p0")) r = 16; + else if (x_s<=ap_ufixed("0x2D413p0")) r = 17; + else if (x_s<=ap_ufixed("0x5A827p0")) r = 18; + else if (x_s<=ap_ufixed("0xB504Fp0")) r = 19; + else if (x_s<=ap_ufixed("0x16A09Ep0")) r = 20; + else if (x_s<=ap_ufixed("0x2D413Cp0")) r = 21; + else if (x_s<=ap_ufixed("0x5A8279p0")) r = 22; + else if (x_s<=ap_ufixed("0xB504F3p0")) r = 23; + else if (x_s<=ap_ufixed("0x16A09E6p0")) r = 24; + else if (x_s<=ap_ufixed("0x2D413CCp0")) r = 25; + else if (x_s<=ap_ufixed("0x5A82799p0")) r = 26; + else if (x_s<=ap_ufixed("0xB504F33p0")) r = 27; + else if (x_s<=ap_ufixed("0x16A09E66p0")) r = 28; + else if (x_s<=ap_ufixed("0x2D413CCCp0")) r = 29; + else if (x_s<=ap_ufixed("0x5A827999p0")) r = 30; + else if (x_s<=ap_ufixed("0xB504F333p0")) r = 31; + else r = 32; + } + } else if (F_<=4 && I_<=5) { + if (x<=0) r[W_-1] = 1; + else if (x_s==ap_ufixed("0x0.1p0")) r = "-0x4.0p0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "-0x3.0p0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "-0x2.7p0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "-0x2.0p0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "-0x1.Bp0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "-0x1.7p0"; + else if (x_s==ap_ufixed("0x0.7p0")) r = "-0x1.3p0"; + else if (x_s==ap_ufixed("0x0.8p0")) r = "-0x1.0p0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "-0x0.Dp0"; + else if (x_s<=ap_ufixed("0x0.Ap0")) r = "-0x0.Bp0"; + else if (x_s==ap_ufixed("0x0.Bp0")) r = "-0x0.9p0"; + else if (x_s==ap_ufixed("0x0.Cp0")) r = "-0x0.7p0"; + else if (x_s==ap_ufixed("0x0.Dp0")) r = "-0x0.5p0"; + else if (x_s==ap_ufixed("0x0.Ep0")) r = "-0x0.3p0"; + else if (x_s==ap_ufixed("0x0.Fp0")) r = "-0x0.1p0"; + else if (x_s==ap_ufixed("0x1.0p0")) r = "0x0.0p0"; + else if (x_s==ap_ufixed("0x1.1p0")) r = "0x0.1p0"; + else if (x_s==ap_ufixed("0x1.2p0")) r = "0x0.3p0"; + else if (x_s==ap_ufixed("0x1.3p0")) r = "0x0.4p0"; + else if (x_s==ap_ufixed("0x1.4p0")) r = "0x0.5p0"; + else if (x_s==ap_ufixed("0x1.5p0")) r = "0x0.6p0"; + else if (x_s==ap_ufixed("0x1.6p0")) r = "0x0.7p0"; + else if (x_s==ap_ufixed("0x1.7p0")) r = "0x0.8p0"; + else if (x_s<=ap_ufixed("0x1.8p0")) r = "0x0.9p0"; + else if (x_s<=ap_ufixed("0x1.9p0")) r = "0x0.Ap0"; + else if (x_s<=ap_ufixed("0x1.Ap0")) r = "0x0.Bp0"; + else if (x_s<=ap_ufixed("0x1.Bp0")) r = "0x0.Cp0"; + else if (x_s<=ap_ufixed("0x1.Cp0")) r = "0x0.Dp0"; + else if (x_s<=ap_ufixed("0x1.Dp0")) r = "0x0.Ep0"; + else if (x_s<=ap_ufixed("0x1.Fp0")) r = "0x0.Fp0"; + else if (x_s<=ap_ufixed("0x2.0p0")) r = "0x1.0p0"; + else if (x_s<=ap_ufixed("0x2.2p0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0x2.3p0")) r = "0x1.2p0"; + else if (x_s<=ap_ufixed("0x2.5p0")) r = "0x1.3p0"; + else if (x_s<=ap_ufixed("0x2.6p0")) r = "0x1.4p0"; + else if (x_s<=ap_ufixed("0x2.8p0")) r = "0x1.5p0"; + else if (x_s<=ap_ufixed("0x2.Ap0")) r = "0x1.6p0"; + else if (x_s<=ap_ufixed("0x2.Cp0")) r = "0x1.7p0"; + else if (x_s<=ap_ufixed("0x2.Ep0")) r = "0x1.8p0"; + else if (x_s<=ap_ufixed("0x3.0p0")) r = "0x1.9p0"; + else if (x_s<=ap_ufixed("0x3.2p0")) r = "0x1.Ap0"; + else if (x_s<=ap_ufixed("0x3.4p0")) r = "0x1.Bp0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x1.Cp0"; + else if (x_s<=ap_ufixed("0x3.9p0")) r = "0x1.Dp0"; + else if (x_s<=ap_ufixed("0x3.Bp0")) r = "0x1.Ep0"; + else if (x_s<=ap_ufixed("0x3.Ep0")) r = "0x1.Fp0"; + else if (x_s<=ap_ufixed("0x4.1p0")) r = "0x2.0p0"; + else if (x_s<=ap_ufixed("0x4.4p0")) r = "0x2.1p0"; + else if (x_s<=ap_ufixed("0x4.7p0")) r = "0x2.2p0"; + else if (x_s<=ap_ufixed("0x4.Ap0")) r = "0x2.3p0"; + else if (x_s<=ap_ufixed("0x4.Dp0")) r = "0x2.4p0"; + else if (x_s<=ap_ufixed("0x5.1p0")) r = "0x2.5p0"; + else if (x_s<=ap_ufixed("0x5.4p0")) r = "0x2.6p0"; + else if (x_s<=ap_ufixed("0x5.8p0")) r = "0x2.7p0"; + else if (x_s<=ap_ufixed("0x5.Cp0")) r = "0x2.8p0"; + else if (x_s<=ap_ufixed("0x6.0p0")) r = "0x2.9p0"; + else if (x_s<=ap_ufixed("0x6.4p0")) r = "0x2.Ap0"; + else if (x_s<=ap_ufixed("0x6.9p0")) r = "0x2.Bp0"; + else if (x_s<=ap_ufixed("0x6.Dp0")) r = "0x2.Cp0"; + else if (x_s<=ap_ufixed("0x7.2p0")) r = "0x2.Dp0"; + else if (x_s<=ap_ufixed("0x7.7p0")) r = "0x2.Ep0"; + else if (x_s<=ap_ufixed("0x7.Dp0")) r = "0x2.Fp0"; + else if (x_s<=ap_ufixed("0x8.2p0")) r = "0x3.0p0"; + else if (x_s<=ap_ufixed("0x8.8p0")) r = "0x3.1p0"; + else if (x_s<=ap_ufixed("0x8.Ep0")) r = "0x3.2p0"; + else if (x_s<=ap_ufixed("0x9.4p0")) r = "0x3.3p0"; + else if (x_s<=ap_ufixed("0x9.Bp0")) r = "0x3.4p0"; + else if (x_s<=ap_ufixed("0xA.2p0")) r = "0x3.5p0"; + else if (x_s<=ap_ufixed("0xA.9p0")) r = "0x3.6p0"; + else if (x_s<=ap_ufixed("0xB.1p0")) r = "0x3.7p0"; + else if (x_s<=ap_ufixed("0xB.8p0")) r = "0x3.8p0"; + else if (x_s<=ap_ufixed("0xC.1p0")) r = "0x3.9p0"; + else if (x_s<=ap_ufixed("0xC.9p0")) r = "0x3.Ap0"; + else if (x_s<=ap_ufixed("0xD.2p0")) r = "0x3.Bp0"; + else if (x_s<=ap_ufixed("0xD.Bp0")) r = "0x3.Cp0"; + else if (x_s<=ap_ufixed("0xE.5p0")) r = "0x3.Dp0"; + else if (x_s<=ap_ufixed("0xE.Fp0")) r = "0x3.Ep0"; + else if (x_s<=ap_ufixed("0xF.Ap0")) r = "0x3.Fp0"; + else r = "0x4.0p0"; + } else { + + if (x<=0) {r[W_-1] = 1;} + else { + const static int W_s_= (F_+F_/77*2+12)/15-(100+F_)/133+(99+F_)/133-(100+F_)/118+(98+F_)/118+1; + + const static int wf = log_traits::wf; + const static int I_s= I_>0? I_:-I_; + const static int org_wf = log_traits::org_wf+I_s; + const static int MaxPrecision = log_traits::MaxPrecision; + + ap_int<7> b_exp=0; + ap_ufixed<1 + org_wf,1> b_frac=0; + b_frac[org_wf] = 0; + b_frac(org_wf-1,org_wf-W_+1) = x(W_-2,0); + for (b_exp = I_-1; b_exp >= -F_; b_exp--) { + #pragma HLS unroll + if ((!b_frac[org_wf]&b_frac[org_wf-1]&b_frac[org_wf-2])|(b_frac[org_wf]&!b_frac[org_wf-1])) + break; + b_frac <<= 1; + } + + ap_fixed<30,5> Elog2_s = b_exp; + ap_fixed<48,5> Elog2_l = b_exp; + + + typedef typename log_traits::LOG_TYPE LOG_TYPE; + const static int bypass_threshold = log_traits::p_generic; + + ap_uint<1+alpha0> index0; // ap_uint<6> + if (b_frac[org_wf]) index0 = b_frac(org_wf-1,org_wf-6); + else index0 = b_frac(org_wf-2,org_wf-7); + + const int T0size = 1 << (1+alpha0); + +#define inverse_lut log_inverse_lut_table::array +#define log_lut log0_lut_table::array + + ap_ufixed<1 + alpha0, 1> b_frac_tilde_inverse = inverse_lut[index0]; + + LOG_TYPE log_sum = log_lut[index0]; + + ap_ufixed<1 + org_wf+1+(1+alpha0), 1> b_frac1 = b_frac * b_frac_tilde_inverse; + +#ifndef __SYNTHESIS__ + assert(b_frac1( b_frac1.wl()-b_frac1.iwl()-1, b_frac1.wl()-b_frac1.iwl()-p1) == 0); +#endif + const int z1_width = 1+wf+1+(1+alpha0)-p1+1; + ap_ufixed z1 = b_frac1; + + ap_fixed<1-bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk; + zk = log_traits::range_reduction(z1,log_sum); + + ap_fixed<1-2*bypass_threshold+1+MaxPrecision, -bypass_threshold+1> zk_trunc = zk; + LOG_TYPE sum = zk-(zk_trunc*zk_trunc/2); + + LOG_TYPE log_base = log_sum + sum; + + const ap_ufixed<26,1> LOG1_54_s = "0x1.7154765p0"; + const ap_ufixed<44,1> LOG1_54_l = "0x1.71547652B82Fp0"; + + if (F_<=16) log_base = Elog2_s + log_base * LOG1_54_s; + else log_base = Elog2_l + log_base * LOG1_54_l; +#undef log_lut +#undef inverse_lut + + r = log_base; + } + + } + + return r; +} + +template +ap_ufixed log2(ap_ufixed x) { + ap_fixed xf = x; + return log2(xf); +} + +template +ap_int log2(ap_int x) { + ap_fixed xf = x; + return log2(xf); +} + +template +ap_uint log2(ap_uint x) { + ap_fixed xf = x; + return log2(xf); +} + +template +ap_fixed logb(ap_fixed x) { + return log2(x); +} + +template +ap_ufixed logb(ap_ufixed x) { + ap_fixed xf = x; + return logb(xf); +} + +template +ap_int logb(ap_int x) { + ap_fixed xf = x; + return logb(xf); +} + +template +ap_uint logb(ap_uint x) { + ap_fixed xf = x; + return logb(xf); +} + +} +#endif + + diff --git a/vitis/v2021_2/hls_mac_pack.h b/vitis/v2021_2/hls_mac_pack.h new file mode 100755 index 00000000..d744d344 --- /dev/null +++ b/vitis/v2021_2/hls_mac_pack.h @@ -0,0 +1,83 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef HLS_MAC_PACK_H_ +#define HLS_MAC_PACK_H_ + +#include "ap_int.h" +//#include "utils/hls_mac_pack_defines.h" + + +#define PORT_A_WIDTH 8 //8 +#define PORT_B_WIDTH 8 //8 + +#define ACC_EXT 1 +#define MARGIN 2 +#define RSHFT PORT_A_WIDTH + PORT_B_WIDTH + MARGIN +#define MASK18L 0x3FFFF +#define MASK18H 0xFFFFFFFC0000 +#define MASKL MASK18L +#define MASKH MASK18H +#define RND 1< typeDSPPortA; /// A +typedef ap_int typeDSPPortB; /// W +typedef ap_int typeDSPPortD; /// B +typedef ap_int typeDSPPortC; +typedef ap_int typeDSPPortP; +typedef ap_uint<1> typeDSPOpMode_bit; + +typedef ap_int typeOpA; +typedef ap_int typeOpB; +typedef ap_int typeOpD; +typedef ap_int typeP; +typedef ap_int<24> typeAccL; +typedef ap_int<24> typeAccH; + + +template +static void mac_pack(ap_int A,ap_int B, ap_int W,ap_int &Accum_in, bool rst) +{ + +#pragma HLS INLINE + typeDSPPortA Ap = A; + typeDSPPortB Wp = W; + typeDSPPortD Bp = B; + typeDSPPortC Cmac; + Cmac(RSHFT-1,0)= 0; + if(rst) + Cmac(DSP48_MACW-1,RSHFT)=0; //Cmac((TP_ACCUM_WB/2)+RSHFT-1,RSHFT)=0; + else + Cmac(DSP48_MACW-1,RSHFT)= Accum_in(TP_ACCUM_WB-1,TP_ACCUM_WB/2); + Bp = Bp<0 && Wp<0) || (Ap<0 && Wp>0)) + Cmac = Cmac + typeDSPPortP (RND); + Cmac = Cmac +W * O_preAdd; // W * O_preAdd; + Accum_in(TP_ACCUM_WB/2 -1 ,0) = (ap_int)Accum_in(TP_ACCUM_WB/2 -1 ,0) + (ap_int)Cmac(TP_A_BW+TP_B_BW-1,0) ;// (ap_int<18>)(Cmac & MASKL); + Accum_in(TP_ACCUM_WB-1,TP_ACCUM_WB/2)= (ap_int)Cmac((TP_ACCUM_WB/2)+RSHFT-1,RSHFT);//(typeAccH)(Cmac>>18); + } + +template +static ap_int dot2(ap_int A[VECTOR_LENGTH], ap_int B[VECTOR_LENGTH],ap_int W[VECTOR_LENGTH]) + { +#pragma HLS INLINE + ap_int Accum; + vector_dot2_label0:for (int i = 0; i < VECTOR_LENGTH; ++i) + { +#pragma HLS PIPELINE II=1 + mac_pack(A[i],B[i],W[i],Accum,i==0); + } + return Accum; + } + +#endif //HLS_MAC_PACK_H_ + + diff --git a/vitis/v2021_2/hls_mad_apfixed.h b/vitis/v2021_2/hls_mad_apfixed.h new file mode 100755 index 00000000..f2ce0adb --- /dev/null +++ b/vitis/v2021_2/hls_mad_apfixed.h @@ -0,0 +1,61 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef _X_HLS_GENERIC_MAD_H_ +#define _X_HLS_GENERIC_MAD_H_ +#include "ap_fixed.h" +namespace hls_mad { + //mad for ap_fixed + template + ap_fixed generic_mad(ap_fixed x, ap_fixed y, ap_fixed z){ + const int F_ = W_ - I_; + ap_fixed<2*W_, 2*I_> mul = x * y; + //rounding + ap_fixed<2, -F_> delta = 0; + delta[0] = 1; + delta[1] = mul[2*W_-1]; + //add delta or subtract delta + mul += delta; + //if overflow + ap_fixed mul_s = mul; + ap_fixed sum = mul_s + z; + ap_fixed r = 0; + //overflow + if(sum[W_-1]!=sum[W_]) { + for(int i = 0; i < W_-1; ++i) { + #pragma HLS unroll + r[i] = !sum[W_]; + } + r[W_-1] = sum[W_]; + } else { + r = sum; + } + return r; + } + //mad for ap_ufixed + template + ap_ufixed generic_mad(ap_ufixed x, ap_ufixed y, ap_ufixed z){ + ap_fixed xi = x; + ap_fixed yi = y; + ap_fixed zi = z; + return generic_mad(xi, yi, zi); + } + //mad for ap_int + template + ap_int generic_mad(ap_int x, ap_int y, ap_int z){ + ap_fixed xi = x; + ap_fixed yi = y; + ap_fixed zi = z; + return generic_mad(xi, yi, zi); + } + //mad for ap_uint + template + ap_uint generic_mad(ap_uint x, ap_uint y, ap_uint z){ + ap_fixed xi = x; + ap_fixed yi = y; + ap_fixed zi = z; + return generic_mad(xi,yi,zi); + } +} + +#endif + + diff --git a/vitis/v2021_2/hls_math.h b/vitis/v2021_2/hls_math.h new file mode 100755 index 00000000..52c43ea7 --- /dev/null +++ b/vitis/v2021_2/hls_math.h @@ -0,0 +1,3221 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef _X_HLSTMP_MATH__ +#define _X_HLSTMP_MATH__ + +#ifndef __cplusplus +#error "hls_math.h requires C++ and is not support in C compilation." +#endif + +#include +#include "hls_half.h" +#include "hls_fpo.h" +#include + +namespace hls { + + // signbit + int signbit(double); + int signbit(float); + int signbit(half); + int signbitf(float); + int half_signbit(half); + + // nan + double nan(const char*); + float nanf(const char*); + half half_nan(const char *); + + // isfinite + int isfinite(double); + int isfinite(float); + int isfinite(half); + int isfinitef(float); + int half_isfinite(half); + + // __isfinite + int __isfinite(double); + int __isfinite(float); + int __isfinite(half); + int __isfinitef(float); + + // isinf + int isinf(double); + int isinf(float); + int isinf(half); + int isinff(float); + int half_isinf(half); + + // __isinf + int __isinf(double); + int __isinf(float); + int __isinf(half); + int __isinff(float); + + // isnan + int isnan(double); + int isnan(float); + int isnan(half); + int isnanf(float); + int half_isnan(half); + + // __isnan + int __isnan(double); + int __isnan(float); + int __isnan(half); + int __isnanf(float); + + // isnormal + int isnormal(double); + int isnormal(float); + int isnormal(half); + int isnormalf(float); + int half_isnormal(half); + + // __isnormal + int __isnormal(double); + int __isnormal(float); + int __isnormal(half); + int __isnormalf(float); + + // fpclassify + int fpclassify(double); + int fpclassify(float); + int fpclassify(half); + int fpclassifyf(float); + int half_fpclassify(half); + + // __fpclassify + int __fpclassify(double); + int __fpclassify(float); + int __fpclassify(half); + int __fpclassifyf(float); + + // copysign + double copysign(double, double); + float copysign(float, float); + half copysign(half, half); + float copysignf(float, float); + half half_copysign(half, half); + int8_t copysign(int8_t, int8_t); + uint8_t copysign(uint8_t, uint8_t); + int16_t copysign(int16_t, int16_t); + uint16_t copysign(uint16_t, uint16_t); + int32_t copysign(int32_t, int32_t); + uint32_t copysign(uint32_t, uint32_t); + + // fabs + double fabs(double); + float fabs(float); + half fabs(half); + float fabsf(float); + half half_fabs(half); + int8_t fabs(int8_t); + uint8_t fabs(uint8_t); + int16_t fabs(int16_t); + uint16_t fabs(uint16_t); + int32_t fabs(int32_t); + uint32_t fabs(uint32_t); + + // abs + double abs(double); + float abs(float); + half abs(half); + float absf(float); + half half_abs(half); + int8_t abs(int8_t); + uint8_t abs(uint8_t); + int16_t abs(int16_t); + uint16_t abs(uint16_t); + int32_t abs(int32_t); + uint32_t abs(uint32_t); + + // fma + double fma(double, double, double); + float fma(float, float, float); + half fma(half, half, half); + float fmaf(float, float, float); + half half_fma(half, half, half); + + // mad + double mad(double, double, double); + float mad(float, float, float); + half mad(half, half, half); + float madf(float, float, float); + half half_mad(half, half, half); + + // isequal + int isequal(double, double); + int isequal(float, float); + int isequal(half, half); + int isequalf(float, float); + int half_isequal(half, half); + + // isgreater + int isgreater(double, double); + int isgreater(float, float); + int isgreater(half, half); + int isgreaterf(float, float); + int half_isgreater(half, half); + + // isgreaterequal + int isgreaterequal(double, double); + int isgreaterequal(float, float); + int isgreaterequal(half, half); + int isgreaterequalf(float, float); + int half_isgreaterequal(half, half); + + // isless + int isless(double, double); + int isless(float, float); + int isless(half, half); + int islessf(float, float); + int half_isless(half, half); + + // islessequal + int islessequal(double, double); + int islessequal(float, float); + int islessequal(half, half); + int islessequalf(float, float); + int half_islessequal(half, half); + + // islessgreater + int islessgreater(double, double); + int islessgreater(float, float); + int islessgreater(half, half); + int islessgreaterf(float, float); + int half_islessgreater(half, half); + + // isnotequal + int isnotequal(double, double); + int isnotequal(float, float); + int isnotequal(half, half); + int isnotequalf(float, float); + int half_isnotequal(half, half); + + // fmax + double fmax(double, double); + float fmax(float, float); + half fmax(half, half); + float fmaxf(float, float); + half half_fmax(half, half); + int8_t fmax(int8_t,int8_t); + uint8_t fmax(uint8_t, uint8_t); + int16_t fmax(int16_t, int16_t); + uint16_t fmax(uint16_t, uint16_t); + int32_t fmax(int32_t, int32_t); + uint32_t fmax(uint32_t, uint32_t); + + // fmin + double fmin(double, double); + float fmin(float, float); + half fmin(half, half); + float fminf(float, float); + half half_fmin(half, half); + int8_t fmin(int8_t,int8_t); + uint8_t fmin(uint8_t, uint8_t); + int16_t fmin(int16_t, int16_t); + uint16_t fmin(uint16_t, uint16_t); + int32_t fmin(int32_t, int32_t); + uint32_t fmin(uint32_t, uint32_t); + + // max + template + T max(T x, T y){ + return (x > y) ? x : y; + } + + // min + template + T min(T x, T y){ + return (x < y) ? x : y; + } + + // fdim + double fdim(double, double); + float fdim(float, float); + half fdim(half, half); + float fdimf(float, float); + half half_fdim(half, half); + int8_t fdim(int8_t,int8_t); + uint8_t fdim(uint8_t, uint8_t); + int16_t fdim(int16_t, int16_t); + uint16_t fdim(uint16_t, uint16_t); + int32_t fdim(int32_t, int32_t); + uint32_t fdim(uint32_t, uint32_t); + + // maxmag + double maxmag(double, double); + float maxmag(float, float); + half maxmag(half, half); + float maxmagf(float, float); + half half_maxmag(half, half); + int8_t maxmag(int8_t,int8_t); + uint8_t maxmag(uint8_t, uint8_t); + int16_t maxmag(int16_t, int16_t); + uint16_t maxmag(uint16_t, uint16_t); + int32_t maxmag(int32_t, int32_t); + uint32_t maxmag(uint32_t, uint32_t); + + // minmag + double minmag(double, double); + float minmag(float, float); + half minmag(half, half); + float minmagf(float, float); + half half_minmag(half, half); + int8_t minmag(int8_t,int8_t); + uint8_t minmag(uint8_t, uint8_t); + int16_t minmag(int16_t, int16_t); + uint16_t minmag(uint16_t, uint16_t); + int32_t minmag(int32_t, int32_t); + uint32_t minmag(uint32_t, uint32_t); + + + // frexp + double frexp(double, int*); + float frexp(float, int*); + half frexp(half, int*); + float frexpf(float, int*); + half half_frexp(half, int*); + + // ldexp + double ldexp(double, int); + float ldexp(float, int); + half ldexp(half, int); + float ldexpf(float, int); + half half_ldexp(half, int); + + // ilogb + int ilogb(double); + int ilogb(float); + int ilogb(half); + int ilogbf(float); + int half_ilogb(half); + + // scalbn + double scalbn(double, int); + float scalbn(float, int); + half scalbn(half, int); + float scalbnf(float, int); + half half_scalbn(half, int); + + // scalbln + double scalbln(double, long int); + float scalbln(float, long int); + half scalbln(half, long int); + float scalblnf(float, long int); + half half_scalbln(half, long int); + + // ceil + double ceil(double); + float ceil(float); + half ceil(half); + float ceilf(float); + half half_ceil(half); + + // floor + double floor(double); + float floor(float); + half floor(half); + float floorf(float); + half half_floor(half); + + // trunc + double trunc(double); + float trunc(float); + half trunc(half); + float truncf(float); + half half_trunc(half); + + // round + double round(double); + float round(float); + half round(half); + float roundf(float); + half half_round(half); + + // rint + double rint(double); + float rint(float); + half rint(half); + float rintf(float); + half half_rint(half); + + // lround + long int lround(double); + long int lround(float); + long int lround(half); + long int lroundf(float); + long int half_lround(half); + + // llround + long long int llround(double); + long long int llround(float); + long long int llround(half); + long long int llroundf(float); + long long int half_llround(half); + + // lrint + long int lrint(double); + long int lrint(float); + long int lrint(half); + long int lrintf(float); + long int half_lrint(half); + + // llrint + long long int llrint(double); + long long int llrint(float); + long long int llrint(half); + long long int llrintf(float); + long long int half_llrint(half); + + // cast_IEEE754 + template + T cast_IEEE754(double, bool); + template + T cast_IEEE754(float, bool); + template + T cast_IEEE754(half, bool); + + template + T cast_IEEE754(double); + template + T cast_IEEE754(float); + template + T cast_IEEE754(half); + + + // cast_IEEE754 + template<> + char cast_IEEE754(double, bool); + template<> + char cast_IEEE754(float, bool); + template<> + char cast_IEEE754(half, bool); + template<> + char cast_IEEE754(double); + template<> + char cast_IEEE754(float); + template<> + char cast_IEEE754(half); + + // cast_IEEE754 + template<> + int8_t cast_IEEE754(double, bool); + template<> + int8_t cast_IEEE754(float, bool); + template<> + int8_t cast_IEEE754(half, bool); + template<> + int8_t cast_IEEE754(double); + template<> + int8_t cast_IEEE754(float); + template<> + int8_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint8_t cast_IEEE754(double, bool); + template<> + uint8_t cast_IEEE754(float, bool); + template<> + uint8_t cast_IEEE754(half, bool); + template<> + uint8_t cast_IEEE754(double); + template<> + uint8_t cast_IEEE754(float); + template<> + uint8_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + int16_t cast_IEEE754(double, bool); + template<> + int16_t cast_IEEE754(float, bool); + template<> + int16_t cast_IEEE754(half, bool); + template<> + int16_t cast_IEEE754(double); + template<> + int16_t cast_IEEE754(float); + template<> + int16_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint16_t cast_IEEE754(double, bool); + template<> + uint16_t cast_IEEE754(float, bool); + template<> + uint16_t cast_IEEE754(half, bool); + template<> + uint16_t cast_IEEE754(double); + template<> + uint16_t cast_IEEE754(float); + template<> + uint16_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + int32_t cast_IEEE754(double, bool); + template<> + int32_t cast_IEEE754(float, bool); + template<> + int32_t cast_IEEE754(half, bool); + template<> + int32_t cast_IEEE754(double); + template<> + int32_t cast_IEEE754(float); + template<> + int32_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint32_t cast_IEEE754(double, bool); + template<> + uint32_t cast_IEEE754(float, bool); + template<> + uint32_t cast_IEEE754(half, bool); + template<> + uint32_t cast_IEEE754(double); + template<> + uint32_t cast_IEEE754(float); + template<> + uint32_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + int64_t cast_IEEE754(double, bool); + template<> + int64_t cast_IEEE754(float, bool); + template<> + int64_t cast_IEEE754(half, bool); + template<> + int64_t cast_IEEE754(double); + template<> + int64_t cast_IEEE754(float); + template<> + int64_t cast_IEEE754(half); + + // cast_IEEE754 + template<> + uint64_t cast_IEEE754(double, bool); + template<> + uint64_t cast_IEEE754(float, bool); + template<> + uint64_t cast_IEEE754(half, bool); + template<> + uint64_t cast_IEEE754(double); + template<> + uint64_t cast_IEEE754(float); + template<> + uint64_t cast_IEEE754(half); + + + // nearbyint + double nearbyint(double); + float nearbyint(float); + half nearbyint(half); + float nearbyintf(float); + half half_nearbyint(half); + + // modf + double modf(double, double*); + float modf(float, float*); + half modf(half, half*); + float modff(float, float*); + half half_modf(half, half*); + + // fract + double fract(double, double*); + float fract(float, float*); + half fract(half, half*); + float fractf(float, float*); + half half_fract(half, half*); + + // isordered + int isordered(double, double); + int isordered(float, float); + int isordered(half, half); + int isorderedf(float, float); + int half_isordered(half, half); + + // isunordered + int isunordered(double, double); + int isunordered(float, float); + int isunordered(half, half); + int isunorderedf(float, float); + int half_isunordered(half, half); + + // bitselect + double bitselect(double, double, double); + float bitselect(float, float, float); + int bitselect(int, int, int); + uint32_t bitselect(uint32_t, uint32_t, uint32_t); + half bitselect(half, half, half); + float bitselectf(float, float, float); + half half_bitselect(half, half, half); + + // sin cos implemented with hotbm method + namespace hotbm { + double sin(double); + float sin(float); + half sin(half); + float sinf(float); + half half_sin(half); + + double cos(double); + float cos(float); + half cos(half); + float cosf(float); + half half_cos(half); + + void sincos(double, double*, double*); + void sincos(float, float*, float*); + void sincos(half, half*, half*); + void sincosf(float, float*, float*); + void half_sincos(half, half*, half*); + } + + // sin cos implemented with cordic method + namespace cordic { + double sin(double); + float sin(float); + half sin(half); + float sinf(float); + half half_sin(half); + + double cos(double); + float cos(float); + half cos(half); + float cosf(float); + half half_cos(half); + + void sincos(double, double*, double*); + void sincos(float, float*, float*); + void sincos(half, half*, half*); + void sincosf(float, float*, float*); + void half_sincos(half, half*, half*); + } + + // sin cos implemented with hotbm method + double sin(double); + float sin(float); + half sin(half); + float sinf(float); + half half_sin(half); + + double cos(double); + float cos(float); + half cos(half); + float cosf(float); + half half_cos(half); + + // sincos + void sincos(double, double*, double*); + void sincos(float, float*, float*); + void sincos(half, half*, half*); + void sincosf(float, float*, float*); + void half_sincos(half, half*, half*); + + // sinpi + double sinpi(double); + float sinpi(float); + half sinpi(half); + float sinpif(float); + half half_sinpi(half); + + // cospi + double cospi(double); + float cospi(float); + half cospi(half); + float cospif(float); + half half_cospi(half); + + // tanpi + double tanpi(double); + float tanpi(float); + half tanpi(half); + float tanpif(float); + half half_tanpi(half); + + // atan + double atan(double); + float atan(float); + half atan(half); + float atanf(float); + half half_atan(half); + + // atan2 + double atan2(double, double); + float atan2(float, float); + half atan2(half, half); + float atan2f(float, float); + half half_atan2(half, half); + + // tan + double tan(double); + float tan(float); + half tan(half); + float tanf(float); + half half_tan(half); + + // sinh + double sinh(double); + float sinh(float); + half sinh(half); + float sinhf(float); + half half_sinh(half); + + // cosh + double cosh(double); + float cosh(float); + half cosh(half); + float coshf(float); + half half_cosh(half); + + // exp + double exp(double); + float exp(float); + half exp(half); + float expf(float); + half half_exp(half); + int8_t exp(int8_t); + uint8_t exp(uint8_t); + int16_t exp(int16_t); + uint16_t exp(uint16_t); + int32_t exp(int32_t); + uint32_t exp(uint32_t); + + // exp2 + double exp2(double); + float exp2(float); + half exp2(half); + float exp2f(float); + half half_exp2(half); + + // exp10 + double exp10(double); + float exp10(float); + half exp10(half); + float exp10f(float); + half half_exp10(half); + + // expm1 + double expm1(double); + float expm1(float); + half expm1(half); + float expm1f(float); + half half_expm1(half); + + // log + double log(double); + float log(float); + half log(half); + float logf(float); + half half_log(half); + int8_t log(int8_t); + uint8_t log(uint8_t); + int16_t log(int16_t); + uint16_t log(uint16_t); + int32_t log(int32_t); + uint32_t log(uint32_t); + + // log2 + double log2(double); + float log2(float); + half log2(half); + float log2f(float); + half half_log2(half); + + // log10 + double log10(double); + float log10(float); + half log10(half); + float log10f(float); + half half_log10(half); + int8_t log10(int8_t); + uint8_t log10(uint8_t); + int16_t log10(int16_t); + uint16_t log10(uint16_t); + int32_t log10(int32_t); + uint32_t log10(uint32_t); + + // logb + double logb(double); + float logb(float); + half logb(half); + float logbf(float); + half half_logb(half); + // log1p + double log1p(double); + float log1p(float); + half log1p(half); + float log1pf(float); + half half_log1p(half); + + // pow + half pow(half, half); + float pow(float, float); + double pow(double, double); + float powf(float, float); + half half_pow(half, half); + int8_t pow(int8_t, int8_t); + uint8_t pow(uint8_t, uint8_t); + int16_t pow(int16_t, int16_t); + uint16_t pow(uint16_t, uint16_t); + int32_t pow(int32_t, int32_t); + uint32_t pow(uint32_t, uint32_t); + int8_t powr(int8_t, int8_t); + uint8_t powr(uint8_t, uint8_t); + int16_t powr(int16_t, int16_t); + uint16_t powr(uint16_t, uint16_t); + int32_t powr(int32_t, int32_t); + uint32_t powr(uint32_t, uint32_t); + + // powr + half powr(half, half); + float powr(float, float); + double powr(double, double); + float powrf(float, float); + half half_powr(half, half); + + // pown + half pown(half, int); + float pown(float, int); + double pown(double, int); + float pownf(float, int); + half half_pown(half, int); + + // rootn + half rootn(half, int); + float rootn(float, int); + double rootn(double, int); + float rootnf(float, int); + half half_rootn(half, int); + + // sqrt + double sqrt(double); + float sqrt(float); + half sqrt(half); + float sqrtf(float); + half half_sqrt(half); + int8_t sqrt(int8_t); + uint8_t sqrt(uint8_t); + int16_t sqrt(int16_t); + uint16_t sqrt(uint16_t); + int32_t sqrt(int32_t); + uint32_t sqrt(uint32_t); + + // template + // ap_fixed sqrt(ap_fixed x){ + // return sqrt_fixed(x); + // }; + // template + // ap_ufixed sqrt(ap_ufixed x){ + // return sqrt_fixed(x); + // } + // template + // ap_int sqrt(ap_int x){ + // return sqrt_fixed(x); + // } + // template + // ap_uint sqrt(ap_uint x){ + // return sqrt_fixed(x); + // } + + // recip + double recip(double); + float recip(float); + half recip(half); + float recipf(float); + half half_recip(half); + int8_t recip(int8_t); + uint8_t recip(uint8_t); + int16_t recip(int16_t); + uint16_t recip(uint16_t); + int32_t recip(int32_t); + uint32_t recip(uint32_t); + + // rsqrt + double rsqrt(double); + float rsqrt(float); + half rsqrt(half); + float rsqrtf(float); + half half_rsqrt(half); + int8_t rsqrt(int8_t); + uint8_t rsqrt(uint8_t); + int16_t rsqrt(int16_t); + uint16_t rsqrt(uint16_t); + int32_t rsqrt(int32_t); + uint32_t rsqrt(uint32_t); + + // cbrt + double cbrt(double); + float cbrt(float); + half cbrt(half); + float cbrtf(float); + half half_cbrt(half); + + // hypot + double hypot(double, double); + float hypot(float, float); + half hypot(half, half); + float hypotf(float, float); + half half_hypot(half, half); + + // erf + double erf(double); + float erf(float); + half erf(half); + float erff(float); + half half_erf(half); + int8_t erf(int8_t); + uint8_t erf(uint8_t); + int16_t erf(int16_t); + uint16_t erf(uint16_t); + int32_t erf(int32_t); + uint32_t erf(uint32_t); + + // erfc + double erfc(double); + float erfc(float); + half erfc(half); + float erfcf(float); + half half_erfc(half); + int8_t erfc(int8_t); + uint8_t erfc(uint8_t); + int16_t erfc(int16_t); + uint16_t erfc(uint16_t); + int32_t erfc(int32_t); + uint32_t erfc(uint32_t); + + // lgamma + double lgamma(double); + float lgamma(float); + half lgamma(half); + float lgammaf(float); + half half_lgamma(half); + int8_t lgamma(int8_t); + uint8_t lgamma(uint8_t); + int16_t lgamma(int16_t); + uint16_t lgamma(uint16_t); + int32_t lgamma(int32_t); + uint32_t lgamma(uint32_t); + + // lgamma_r + double lgamma_r(double, int*); + float lgamma_r(float, int*); + half lgamma_r(half, int*); + float lgamma_rf(float, int*); + half half_lgamma_r(half, int*); + int8_t lgamma_r(int8_t); + uint8_t lgamma_r(uint8_t); + int16_t lgamma_r(int16_t); + uint16_t lgamma_r(uint16_t); + int32_t lgamma_r(int32_t); + uint32_t lgamma_r(uint32_t); + + // cbrt + double tgamma(double); + float tgamma(float); + half tgamma(half); + float tgammaf(float); + half half_tgamma(half); + int8_t tgamma(int8_t); + uint8_t tgamma(uint8_t); + int16_t tgamma(int16_t); + uint16_t tgamma(uint16_t); + int32_t tgamma(int32_t); + uint32_t tgamma(uint32_t); + + double tgamma_p_reduce(double); + float tgamma_p_reduce(float); + float tgammaf_p_reduce(float); + + // fmod + double fmod(double, double); + float fmod(float, float); + half fmod(half, half); + float fmodf(float, float); + half half_fmod(half, half); + + // remainder + double remainder(double, double); + float remainder(float, float); + half remainder(half, half); + float remainderf(float, float); + half half_remainder(half, half); + + // remquo + double remquo(double, double, int*); + float remquo(float, float, int*); + half remquo(half, half, int*); + float remquof(float, float, int*); + half half_remquo(half, half, int*); + + // divide + double divide(double, double); + float divide(float, float); + half divide(half, half); + float dividef(float, float); + half half_divide(half, half); + + // nextafter + double nextafter(double, double); + float nextafter(float, float); + half nextafter(half, half); + float nextafterf(float, float); + half half_nextafter(half, half); + + // tanh + double tanh(double); + float tanh(float); + half tanh(half); + float tanhf(float); + half half_tanh(half); + + // atanh + double atanh(double); + float atanh(float); + half atanh(half); + float atanhf(float); + half half_atanh(half); + + // asinh + double asinh(double); + float asinh(float); + half asinh(half); + float asinhf(float); + half half_asinh(half); + + // acosh + double acosh(double); + float acosh(float); + half acosh(half); + float acoshf(float); + half half_acosh(half); + + // asin + double asin(double); + float asin(float); + half asin(half); + float asinf(float); + half half_asin(half); + + // acos + double acos(double); + float acos(float); + half acos(half); + float acosf(float); + half half_acos(half); + + // asinpi + double asinpi(double); + float asinpi(float); + half asinpi(half); + float asinpif(float); + half half_asinpi(half); + + // acospi + double acospi(double); + float acospi(float); + half acospi(half); + float acospif(float); + half half_acospi(half); + + // tanpi + double atanpi(double); + float atanpi(float); + half atanpi(half); + float atanpif(float); + half half_atanpi(half); +} + +#include "hls_hotbm_apfixed.h" +#include "hls_cordic_apfixed.h" +#include "hls_exp_apfixed.h" +#include "hls_log_apfixed.h" +#include "hls_sqrt_apfixed.h" +#include "hls_round_copysign_apfixed.h" +#include "hls_pow_apfixed.h" +#include "hls_diff_apfixed.h" +#include "hls_comparison_apfixed.h" +#include "hls_frexp_apfixed.h" +#include "hls_modf_apfixed.h" +#include "hls_isequal_isnotequal_apfixed.h" +#include "hls_all_any_apfixed.h" +#include "hls_select_bitselect_apfixed.h" +#include "hls_erf_apfixed.h" +#include "hls_fmod_rem_quo_remainder_divide_apfixed.h" +#include "hls_lgamma_apfixed.h" +#include "hls_tgamma_apfixed.h" +#include "hls_fract_apfixed.h" +#include "hls_mad_apfixed.h" +#include "hls_cbrt_apfixed.h" +#include "hls_hypot_apfixed.h" +#include "hls_ldexp_apfixed.h" + +namespace hls { + + // // sin(ap_fixed) + // template + // ap_fixed sin(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 0, 0); + // } + // template + // ap_fixed sinf(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 0, 0); + // } + + // // cos(ap_fixed) + // template + // ap_fixed cos(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 1, 0); + // } + // template + // ap_fixed cosf(ap_fixed x){ + // return hotbm_apfixed::sinf_or_cosf(x, 1, 0); + // } + + // sinpi(ap_fixed), cospi(ap_fixed) + template + ap_fixed sinpi(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 0, 1); + } +/* template + ap_fixed sinpif(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 0, 1); + }*/ + template + ap_ufixed sinpi(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::sinpi(x); + ap_ufixed out = 0; + if(xout[W]==0){ + out = xout; + } + return out; + } + + template + ap_fixed cospi(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 1, 1); + } + template + ap_ufixed cospi(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::cospi(x); + ap_ufixed out = 0; + if(xout[W]==0){ + out = xout; + } + return out; + } + /* template + ap_fixed cospif(ap_fixed x){ + return hotbm_apfixed::sinf_or_cosf(x, 1, 1); + }*/ + //ap_int sinpi + template + ap_int sinpi(ap_int in){ + _AP_UNUSED_PARAM(in); + return ap_int(0); + } + //ap_int cospi + template + ap_int cospi(ap_int in){ + _AP_UNUSED_PARAM(in); + return ap_int(0); + } + //ap_uint sinpi + template + ap_uint sinpi(ap_uint in){ + _AP_UNUSED_PARAM(in); + return ap_uint(0); + } + //ap_uint cospi + template + ap_uint cospi(ap_uint in){ + _AP_UNUSED_PARAM(in); + return ap_uint(0); + } + int8_t sinpi(int8_t); + uint8_t sinpi(uint8_t); + int16_t sinpi(int16_t); + uint16_t sinpi(uint16_t); + int32_t sinpi(int32_t); + uint32_t sinpi(uint32_t); + + int8_t cospi(int8_t); + uint8_t cospi(uint8_t); + int16_t cospi(int16_t); + uint16_t cospi(uint16_t); + int32_t cospi(int32_t); + uint32_t cospi(uint32_t); + + // exp(ap_fixed) + template + ap_fixed exp(ap_fixed x){ + return exp_reduce::exp(x); + } + template + ap_ufixed exp(ap_ufixed x){ + return exp_reduce::exp(x); + } + template + ap_int exp(ap_int x){ + return exp_reduce::exp(x); + } + template + ap_uint exp(ap_uint x){ + return exp_reduce::exp(x); + } + + // log(ap_fixed) + template + ap_fixed log(ap_fixed x){ + return log_apfixed_reduce::log(x); + } + template + ap_ufixed log(ap_ufixed x){ + return log_apfixed_reduce::log(x); + } + template + ap_int log(ap_int x){ + return log_apfixed_reduce::log(x); + } + template + ap_uint log(ap_uint x){ + return log_apfixed_reduce::log(x); + } + + // log10(ap_fixed) + template + ap_fixed log10(ap_fixed x){ + return log_apfixed_reduce::log10(x); + } + template + ap_ufixed log10(ap_ufixed x){ + return log_apfixed_reduce::log10(x); + } + template + ap_int log10(ap_int x){ + return log_apfixed_reduce::log10(x); + } + template + ap_uint log10(ap_uint x){ + return log_apfixed_reduce::log10(x); + } + + // log2(ap_fixed) + template + ap_fixed log2(ap_fixed x){ + return log_apfixed_reduce::log2(x); + } + template + ap_ufixed log2(ap_ufixed x){ + return log_apfixed_reduce::log2(x); + } + template + ap_int log2(ap_int x){ + return log_apfixed_reduce::log2(x); + } + template + ap_uint log2(ap_uint x){ + return log_apfixed_reduce::log2(x); + } + + // logb(ap_fixed) + template + ap_fixed logb(ap_fixed x){ + return log_apfixed_reduce::logb(x); + } + template + ap_ufixed logb(ap_ufixed x){ + return log_apfixed_reduce::logb(x); + } + template + ap_int logb(ap_int x){ + return log_apfixed_reduce::logb(x); + } + template + ap_uint logb(ap_uint x){ + return log_apfixed_reduce::logb(x); + } + + // sqrt(ap_fixed) + template + ap_fixed sqrt(ap_fixed x){ + return sqrt_fixed(x); + } + template + ap_ufixed sqrt(ap_ufixed x){ + return sqrt_fixed(x); + } + template + ap_int sqrt(ap_int x){ + return sqrt_fixed(x); + } + template + ap_uint sqrt(ap_uint x){ + return sqrt_fixed(x); + } + + // rsqrt(ap_fixed) + template + ap_fixed rsqrt(ap_fixed x){ + return rsqrt_fixed(x); + } + template + ap_ufixed rsqrt(ap_ufixed x){ + return rsqrt_fixed(x); + } + template + ap_int rsqrt(ap_int x){ + return rsqrt_fixed(x); + } + template + ap_uint rsqrt(ap_uint x){ + return rsqrt_fixed(x); + } + + // recip(ap_fixed) + template + ap_fixed recip(ap_fixed x){ + return recip_fixed(x); + } + template + ap_ufixed recip(ap_ufixed x){ + return recip_fixed(x); + } + template + ap_int recip(ap_int x){ + return recip_fixed(x); + } + template + ap_uint recip(ap_uint x){ + return recip_fixed(x); + } + + // ceil(ap_fixed) + template + ap_fixed ceil(ap_fixed x){ + return ceil_fixed(x); + } + template + ap_ufixed ceil(ap_ufixed x){ + return ceil_fixed(x); + } + template + ap_int ceil(ap_int x){ + return ceil_fixed(x); + } + template + ap_uint ceil(ap_uint x){ + return ceil_fixed(x); + } + + // floor(ap_fixed) + template + ap_fixed floor(ap_fixed x){ + return floor_fixed(x); + } + template + ap_ufixed floor(ap_ufixed x){ + return floor_fixed(x); + } + template + ap_int floor(ap_int x){ + return floor_fixed(x); + } + template + ap_uint floor(ap_uint x){ + return floor_fixed(x); + } + + template + ap_fixed trunc(ap_fixed x){ + return trunc_fixed(x); + } + template + ap_ufixed trunc(ap_ufixed x){ + return trunc_fixed(x); + } + template + ap_int trunc(ap_int x){ + return trunc_fixed(x); + } + template + ap_uint trunc(ap_uint x){ + return trunc_fixed(x); + } + + // copysign(ap_fixed) + template + ap_fixed copysign(ap_fixed x, ap_fixed y){ + return copysign_fixed(x,y); + } + template + ap_ufixed copysign(ap_ufixed x, ap_ufixed y){ + return copysign_fixed(x,y); + } + template + ap_int copysign(ap_int x, ap_int y){ + return copysign_fixed(x,y); + } + template + ap_uint copysign(ap_uint x, ap_uint y){ + return copysign_fixed(x,y); + } + + // fabs(ap_fixed) + template + ap_fixed fabs(ap_fixed x){ + return fabs_fixed(x); + } + template + ap_ufixed fabs(ap_ufixed x){ + return fabs_fixed(x); + } + template + ap_int fabs(ap_int x){ + return fabs_fixed(x); + } + template + ap_uint fabs(ap_uint x){ + return fabs_fixed(x); + } + // abs(ap_fixed) + template + ap_fixed abs(ap_fixed x){ + return fabs_fixed(x); + } + template + ap_ufixed abs(ap_ufixed x){ + return fabs_fixed(x); + } + template + ap_int abs(ap_int x){ + return fabs_fixed(x); + } + template + ap_uint abs(ap_uint x){ + return fabs_fixed(x); + } + + // fdim(ap_fixed) + template + ap_fixed fdim(ap_fixed x, ap_fixed y){ + return fdim_fixed(x,y); + } + template + ap_ufixed fdim(ap_ufixed x, ap_ufixed y){ + return fdim_fixed(x,y); + } + template + ap_int fdim(ap_int x, ap_int y){ + return fdim_fixed(x,y); + } + template + ap_uint fdim(ap_uint x, ap_uint y){ + return fdim_fixed(x,y); + } + // fmax(ap_fixed) + template + ap_fixed fmax(ap_fixed x, ap_fixed y){ + return fmax_fixed(x,y); + } + template + ap_ufixed fmax(ap_ufixed x, ap_ufixed y){ + return fmax_fixed(x,y); + } + template + ap_int fmax(ap_int x, ap_int y){ + return fmax_fixed(x,y); + } + template + ap_uint fmax(ap_uint x, ap_uint y){ + return fmax_fixed(x,y); + } + // fmin(ap_fixed) + template + ap_fixed fmin(ap_fixed x, ap_fixed y){ + return fmin_fixed(x,y); + } + template + ap_ufixed fmin(ap_ufixed x, ap_ufixed y){ + return fmin_fixed(x,y); + } + template + ap_int fmin(ap_int x, ap_int y){ + return fmin_fixed(x,y); + } + template + ap_uint fmin(ap_uint x, ap_uint y){ + return fmin_fixed(x,y); + } + // maxmag(ap_fixed) + template + ap_fixed maxmag(ap_fixed x, ap_fixed y){ + return maxmag_fixed(x,y); + } + template + ap_ufixed maxmag(ap_ufixed x, ap_ufixed y){ + return maxmag_fixed(x,y); + } + template + ap_int maxmag(ap_int x, ap_int y){ + return maxmag_fixed(x,y); + } + template + ap_uint maxmag(ap_uint x, ap_uint y){ + return maxmag_fixed(x,y); + } + // minmag(ap_fixed) + template + ap_fixed minmag(ap_fixed x, ap_fixed y){ + return minmag_fixed(x,y); + } + template + ap_ufixed minmag(ap_ufixed x, ap_ufixed y){ + return minmag_fixed(x,y); + } + template + ap_int minmag(ap_int x, ap_int y){ + return minmag_fixed(x,y); + } + template + ap_uint minmag(ap_uint x, ap_uint y){ + return minmag_fixed(x,y); + } + + + // sinh(ap_fixed) + template + ap_fixed sinh(ap_fixed x){ + return cordic_apfixed::generic_sinh(x); + } + + // sinh(ap_ufixed) + template + ap_ufixed sinh(ap_ufixed x){ + return cordic_apfixed::generic_sinh(x); + } + + // sinh(ap_int) + template + ap_int sinh(ap_int x){ + return cordic_apfixed::generic_sinh(x); + } + + // sinh(ap_uint) + template + ap_uint sinh(ap_uint x){ + return cordic_apfixed::generic_sinh(x); + } + + // cosh(ap_fixed) + template + ap_fixed cosh(ap_fixed x){ + return cordic_apfixed::generic_cosh(x); + } + + // cosh(ap_ufixed) + template + ap_ufixed cosh(ap_ufixed x){ + return cordic_apfixed::generic_cosh(x); + } + + // cosh(ap_int) + template + ap_int cosh(ap_int x){ + return cordic_apfixed::generic_cosh(x); + } + + // cosh(ap_uint) + template + ap_uint cosh(ap_uint x){ + return cordic_apfixed::generic_cosh(x); + } + + // tanh(ap_fixed) + template + ap_fixed tanh(ap_fixed x){ + return cordic_apfixed::generic_tanh(x); + } + + // tanh(ap_ufixed) + template + ap_ufixed tanh(ap_ufixed x){ + return cordic_apfixed::generic_tanh(x); + } + + // tanh(ap_int) + template + ap_int tanh(ap_int x){ + return cordic_apfixed::generic_tanh(x); + } + + // tanh(ap_uint) + template + ap_uint tanh(ap_uint x){ + return cordic_apfixed::generic_tanh(x); + } + + // atanh(ap_fixed) + template + ap_fixed atanh(ap_fixed x){ + ap_fixed one_plus_x = 1 + x; + ap_fixed one_minus_x = 1 - x; + ap_fixed input = one_plus_x / one_minus_x ; + ap_fixed result = log_apfixed_reduce::log(input); + result >>= 1; + return result; + } + + // atanh(ap_ufixed) + template + ap_ufixed atanh(ap_ufixed x){ + ap_fixed input = x; + ap_fixed result = hls::atanh(input); + return result; + } + + // atanh(ap_int) + template + ap_int atanh(ap_int x){ + ap_fixed input = x; + ap_fixed result = hls::atanh(input); + return result; + } + + // atanh(ap_uint) + template + ap_uint atanh(ap_uint x){ + ap_fixed input = x; + ap_fixed result = hls::atanh(input); + return result; + } + + // asinh(ap_fixed) + template + ap_fixed asinh(ap_fixed x){ + return cordic_apfixed::generic_asinh(x); + } + + // asinh(ap_ufixed) + template + ap_ufixed asinh(ap_ufixed x){ + return cordic_apfixed::generic_asinh(x); + } + + // asinh(ap_int) + template + ap_int asinh(ap_int x){ + return cordic_apfixed::generic_asinh(x); + } + + // asinh(ap_uint) + template + ap_uint asinh(ap_uint x){ + return cordic_apfixed::generic_asinh(x); + } + + // acosh(ap_fixed) + template + ap_fixed acosh(ap_fixed x){ + return cordic_apfixed::generic_acosh(x); + } + + // acosh(ap_ufixed) + template + ap_ufixed acosh(ap_ufixed x){ + return cordic_apfixed::generic_acosh(x); + } + + // acosh(ap_int) + template + ap_int acosh(ap_int x){ + return cordic_apfixed::generic_acosh(x); + } + + // acosh(ap_uint) + template + ap_uint acosh(ap_uint x){ + return cordic_apfixed::generic_acosh(x); + } + + int8_t sinh(int8_t); + uint8_t sinh(uint8_t); + int16_t sinh(int16_t); + uint16_t sinh(uint16_t); + int32_t sinh(int32_t); + uint32_t sinh(uint32_t); + + int8_t cosh(int8_t); + uint8_t cosh(uint8_t); + int16_t cosh(int16_t); + uint16_t cosh(uint16_t); + int32_t cosh(int32_t); + uint32_t cosh(uint32_t); + + int8_t tanh(int8_t); + uint8_t tanh(uint8_t); + int16_t tanh(int16_t); + uint16_t tanh(uint16_t); + int32_t tanh(int32_t); + uint32_t tanh(uint32_t); + + int8_t atanh(int8_t); + uint8_t atanh(uint8_t); + int16_t atanh(int16_t); + uint16_t atanh(uint16_t); + int32_t atanh(int32_t); + uint32_t atanh(uint32_t); + + int8_t asinh(int8_t); + uint8_t asinh(uint8_t); + int16_t asinh(int16_t); + uint16_t asinh(uint16_t); + int32_t asinh(int32_t); + uint32_t asinh(uint32_t); + + int8_t acosh(int8_t); + uint8_t acosh(uint8_t); + int16_t acosh(int16_t); + uint16_t acosh(uint16_t); + int32_t acosh(int32_t); + uint32_t acosh(uint32_t); + + // asin(ap_fixed) + template + ap_fixed asin(ap_fixed x){ + return cordic_apfixed::generic_asin(x); + } + + // acos(ap_fixed) + template + ap_fixed acos(ap_fixed x){ + return cordic_apfixed::generic_acos(x); + } + + // atan(ap_fixed) + template + ap_fixed atan(ap_fixed x){ + return cordic_apfixed::generic_atan(x); + } + + // atan(ap_ufixed) + template + ap_ufixed atan(ap_ufixed x){ + return cordic_apfixed::generic_atan(x); + } + + // atan(ap_int) + template + ap_int<2> atan(ap_int x){ + return cordic_apfixed::generic_atan(x); + } + + // atan(ap_uint) + template + ap_uint<1> atan(ap_uint x){ + return cordic_apfixed::generic_atan(x); + } + + int8_t asin(int8_t); + uint8_t asin(uint8_t); + int16_t asin(int16_t); + uint16_t asin(uint16_t); + int32_t asin(int32_t); + uint32_t asin(uint32_t); + + int8_t acos(int8_t); + uint8_t acos(uint8_t); + int16_t acos(int16_t); + uint16_t acos(uint16_t); + int32_t acos(int32_t); + uint32_t acos(uint32_t); + + int8_t atan(int8_t); + uint8_t atan(uint8_t); + int16_t atan(int16_t); + uint16_t atan(uint16_t); + int32_t atan(int32_t); + uint32_t atan(uint32_t); + + // asinpi(ap_fixed) + template + ap_fixed asinpi(ap_fixed x){ + return cordic_apfixed::generic_asinpi(x); + } + // asinpi(ap_fixed) + template + ap_ufixed asinpi(ap_ufixed x){ + return cordic_apfixed::generic_asinpi(x); + } + // asinpi(ap_fixed) + template + ap_int asinpi(ap_int x){ + return cordic_apfixed::generic_asinpi(x); + } + // asinpi(ap_fixed) + template + ap_uint asinpi(ap_uint x){ + return cordic_apfixed::generic_asinpi(x); + } + + + int8_t asinpi(int8_t); + uint8_t asinpi(uint8_t); + int16_t asinpi(int16_t); + uint16_t asinpi(uint16_t); + int32_t asinpi(int32_t); + uint32_t asinpi(uint32_t); + + // acospi(ap_fixed) + template + ap_fixed acospi(ap_fixed x){ + return cordic_apfixed::generic_acospi(x); + } + // acospi(ap_fixed) + template + ap_ufixed acospi(ap_ufixed x){ + return cordic_apfixed::generic_acospi(x); + } + // acospi(ap_fixed) + template + ap_int acospi(ap_int x){ + return cordic_apfixed::generic_acospi(x); + } + // acospi(ap_fixed) + template + ap_uint acospi(ap_uint x){ + return cordic_apfixed::generic_acospi(x); + } + + int8_t acospi(int8_t); + uint8_t acospi(uint8_t); + int16_t acospi(int16_t); + uint16_t acospi(uint16_t); + int32_t acospi(int32_t); + uint32_t acospi(uint32_t); + + // atanpi(ap_fixed) + template + ap_fixed atanpi(ap_fixed x){ + return cordic_apfixed::generic_atanpi(x); + } + + // atanpi(ap_ufixed) + template + ap_ufixed atanpi(ap_ufixed x){ + return cordic_apfixed::generic_atanpi(x); + } + + // atanpi(ap_int) + template + ap_int<2> atanpi(ap_int x){ + return cordic_apfixed::generic_atanpi(x); + } + + // atanpi(ap_uint) + template + ap_uint<1> atanpi(ap_uint x){ + return cordic_apfixed::generic_atanpi(x); + } + + int8_t atanpi(int8_t); + uint8_t atanpi(uint8_t); + int16_t atanpi(int16_t); + uint16_t atanpi(uint16_t); + int32_t atanpi(int32_t); + uint32_t atanpi(uint32_t); + + // atan2(ap_fixed) + template + ap_fixed atan2(ap_fixed x, ap_fixed y){ + return cordic_apfixed::generic_atan2(x,y); + } + + // atan2(ap_ufixed) + template + ap_ufixed atan2(ap_ufixed x, ap_ufixed y){ + return cordic_apfixed::generic_atan2(x,y); + } + + // atan2(ap_int) + template + ap_int<3> atan2(ap_int x, ap_int y){ + return cordic_apfixed::generic_atan2(x,y); + } + + // atan2(ap_uint) + template + ap_uint<2> atan2(ap_uint x, ap_uint y){ + return cordic_apfixed::generic_atan2(x,y); + } + + int8_t atan2(int8_t, int8_t); + uint8_t atan2(uint8_t, uint8_t); + int16_t atan2(int16_t, int16_t); + uint16_t atan2(uint16_t, uint16_t); + int32_t atan2(int32_t, int32_t); + uint32_t atan2(uint32_t, uint32_t); + + // atan2pi(ap_fixed) + template + ap_fixed atan2pi(ap_fixed x, ap_fixed y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + // atan2pi(ap_ufixed) + template + ap_ufixed atan2pi(ap_ufixed x, ap_ufixed y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + // atanpi(ap_int) + template + ap_int atan2pi(ap_int x, ap_int y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + // atan2(ap_uint) + template + ap_uint atan2pi(ap_uint x, ap_uint y){ + return cordic_apfixed::generic_atan2pi(x,y); + } + + int8_t atan2pi(int8_t, int8_t); + uint8_t atan2pi(uint8_t, uint8_t); + int16_t atan2pi(int16_t, int16_t); + uint16_t atan2pi(uint16_t, uint16_t); + int32_t atan2pi(int32_t, int32_t); + uint32_t atan2pi(uint32_t, uint32_t); + template + void sincos(ap_fixed in, + ap_fixed* outsin, ap_fixed* outcos){ + cordic_apfixed::generic_sincos(in, *outsin, *outcos); + } + + template + ap_fixed sin(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outsin; + } + + template + ap_ufixed sin(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::sin(x); + ap_fixed out = 0; + if(xout[W-I+2]==0){ + out=xout; + } + return out; + } + + template + ap_fixed cos(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outcos; + } + + template + ap_ufixed cos(ap_ufixed x){ + ap_fixed xin = x; + ap_fixed xout = hls::cos(x); + ap_fixed out = 0; + if(xout[W-I+2]==0){ + out=xout; + } + return out; + } + +/* template + ap_fixed sinf(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outsin; + } + + template + ap_fixed cosf(ap_fixed x){ + ap_fixed outsin; + ap_fixed outcos; + cordic_apfixed::generic_sincos(x, outsin, outcos); + return outcos; + } +*/ + // sin cos(ap_int) + template + ap_int sin(ap_int in) { + _AP_UNUSED_PARAM(in); + return ap_int(0); + }; + template + ap_int cos(ap_int in) { + _AP_UNUSED_PARAM(in); + return ap_int(0); + }; + + // sin cos(ap_uint) + template + ap_uint sin(ap_uint in) { + _AP_UNUSED_PARAM(in); + return ap_uint(0); + }; + template + ap_uint cos(ap_uint in) { + _AP_UNUSED_PARAM(in); + return ap_uint(0); + }; + + void sincos(int8_t, int8_t*, int8_t*); + void sincos(uint8_t, uint8_t*, uint8_t*); + void sincos(int16_t, int16_t*, int16_t*); + void sincos(uint16_t, uint16_t*, uint16_t*); + void sincos(int32_t, int32_t*, int32_t*); + void sincos(uint32_t, uint32_t*, uint32_t*); + + int8_t sin(int8_t); + uint8_t sin(uint8_t); + int16_t sin(int16_t); + uint16_t sin(uint16_t); + int32_t sin(int32_t); + uint32_t sin(uint32_t); + + int8_t cos(int8_t); + uint8_t cos(uint8_t); + int16_t cos(int16_t); + uint16_t cos(uint16_t); + int32_t cos(int32_t); + uint32_t cos(uint32_t); + + // tan + template + ap_fixed tan(ap_fixed x){ + return cordic_apfixed::generic_tan(x); + } + template + ap_ufixed tan(ap_ufixed x){ + return cordic_apfixed::generic_tan(x); + } + template + ap_int tan(ap_int x){ + return cordic_apfixed::generic_tan(x); + } + template + ap_uint tan(ap_uint x){ + return cordic_apfixed::generic_tan(x); + } + + int8_t tan(int8_t); + uint8_t tan(uint8_t); + int16_t tan(int16_t); + uint16_t tan(uint16_t); + int32_t tan(int32_t); + uint32_t tan(uint32_t); + + // tanpi + template + ap_fixed tanpi(ap_fixed x){ + return cordic_apfixed::generic_tanpi(x); + } + template + ap_ufixed tanpi(ap_ufixed x){ + return cordic_apfixed::generic_tanpi(x); + } + template + ap_int tanpi(ap_int x){ + return cordic_apfixed::generic_tanpi(x); + } + template + ap_uint tanpi(ap_uint x){ + return cordic_apfixed::generic_tanpi(x); + } + + int8_t tanpi(int8_t); + uint8_t tanpi(uint8_t); + int16_t tanpi(int16_t); + uint16_t tanpi(uint16_t); + int32_t tanpi(int32_t); + uint32_t tanpi(uint32_t); + + //pow(ap_fixed) + template + ap_fixed pow(ap_fixed x, ap_fixed y) { + return pow_apfixed_reduce::pow(x,y); + } + + template + ap_ufixed pow(ap_ufixed x, ap_ufixed y){ + return pow_apfixed_reduce::pow(x,y); + } + template + ap_int pow(ap_int x, ap_int y){ + return pow_apfixed_reduce::pow(x,y); + } + template + ap_uint pow(ap_uint x,ap_uint y){ + return pow_apfixed_reduce::pow(x,y); + } + //pown(ap_fixed) + template + ap_fixed pown(ap_fixed x, int n) { + return pow_apfixed_reduce::pown(x,n); + } + + template + ap_ufixed pown(ap_ufixed x, int n){ + return pow_apfixed_reduce::pown(x,n); + } + template + ap_int pown(ap_int x, int n){ + return pow_apfixed_reduce::pown(x,n); + } + template + ap_uint pown(ap_uint x, int n){ + return pow_apfixed_reduce::pown(x,n); + } + int8_t pown(int8_t, int n); + uint8_t pown(uint8_t, int n); + int16_t pown(int16_t, int n); + uint16_t pown(uint16_t, int n); + int32_t pown(int32_t, int n); + uint32_t pown(uint32_t, int n); + //rootn(ap_fixed) + template + ap_fixed rootn(ap_fixed x, int n) { + return pow_apfixed_reduce::rootn(x,n); + } + + template + ap_ufixed rootn(ap_ufixed x, int n){ + return pow_apfixed_reduce::rootn(x,n); + } + template + ap_int rootn(ap_int x, int n){ + return pow_apfixed_reduce::rootn(x,n); + } + template + ap_uint rootn(ap_uint x, int n){ + return pow_apfixed_reduce::rootn(x,n); + } + int8_t rootn(int8_t, int n); + uint8_t rootn(uint8_t, int n); + int16_t rootn(int16_t, int n); + uint16_t rootn(uint16_t, int n); + int32_t rootn(int32_t, int n); + uint32_t rootn(uint32_t, int n); + //powr(ap_fixed) + template + ap_fixed powr(ap_fixed x, ap_fixed y) { + return pow_apfixed_reduce::powr(x,y); + } + + template + ap_ufixed powr(ap_ufixed x, ap_ufixed y){ + return pow_apfixed_reduce::powr(x,y); + } + template + ap_int powr(ap_int x, ap_int y){ + return pow_apfixed_reduce::powr(x,y); + } + template + ap_uint powr(ap_uint x,ap_uint y){ + return pow_apfixed_reduce::powr(x,y); + } + + + // round(ap_fixed) + template + ap_fixed round(ap_fixed x){ + return round_fixed(x); + } + template + ap_ufixed round(ap_ufixed x){ + return round_fixed(x); + } + template + ap_int round(ap_int x){ + return round_fixed(x); + } + template + ap_uint round(ap_uint x){ + return round_fixed(x); + } + int8_t round(int8_t); + uint8_t round(uint8_t); + int16_t round(int16_t); + uint16_t round(uint16_t); + int32_t round(int32_t); + uint32_t round(uint32_t); + + // rint(ap_fixed) + template + ap_fixed rint(ap_fixed x){ + return rint_fixed(x); + } + template + ap_ufixed rint(ap_ufixed x){ + return rint_fixed(x); + } + template + ap_int rint(ap_int x){ + return rint_fixed(x); + } + template + ap_uint rint(ap_uint x){ + return rint_fixed(x); + } + int8_t rint(int8_t); + uint8_t rint(uint8_t); + int16_t rint(int16_t); + uint16_t rint(uint16_t); + int32_t rint(int32_t); + uint32_t rint(uint32_t); + + // nearbyint(ap_fixed) + template + ap_fixed nearbyint(ap_fixed x){ + return nearbyint_fixed(x); + } + template + ap_ufixed nearbyint(ap_ufixed x){ + return nearbyint_fixed(x); + } + template + ap_int nearbyint(ap_int x){ + return nearbyint_fixed(x); + } + template + ap_uint nearbyint(ap_uint x){ + return nearbyint_fixed(x); + } + int8_t nearbyint(int8_t); + uint8_t nearbyint(uint8_t); + int16_t nearbyint(int16_t); + uint16_t nearbyint(uint16_t); + int32_t nearbyint(int32_t); + uint32_t nearbyint(uint32_t); + + //llround(ap_fixed) + template + long long int llround(ap_fixed x){ + return llround_fixed(x); + } + template + long long int llround(ap_ufixed x){ + return llround_fixed(x); + } + template + long long int llround(ap_int x){ + return llround_fixed(x); + } + template + long long int llround(ap_uint x){ + return llround_fixed(x); + } + + //llround(int) + long long int llround(int8_t); + long long int llround(uint8_t); + long long int llround(int16_t); + long long int llround(uint16_t); + long long int llround(int32_t); + long long int llround(uint32_t); + + // lround(ap_fixed) + template + long int lround(ap_fixed x){ + return lround_fixed(x); + } + template + long int lround(ap_ufixed x){ + return lround_fixed(x); + } + template + long int lround(ap_int x){ + return lround_fixed(x); + } + template + long int lround(ap_uint x){ + return lround_fixed(x); + } + + //lround(int) + long int lround(int8_t); + long int lround(uint8_t); + long int lround(int16_t); + long int lround(uint16_t); + long int lround(int32_t); + long int lround(uint32_t); + + // llrint(ap_fixed) + template + long long int llrint(ap_fixed x){ + return llrint_fixed(x); + } + template + long long int llrint(ap_ufixed x){ + return llrint_fixed(x); + } + template + long long int llrint(ap_int x){ + return llrint_fixed(x); + } + template + long long int llrint(ap_uint x){ + return llrint_fixed(x); + } + + //llrint(int) + long long int llrint(int8_t); + long long int llrint(uint8_t); + long long int llrint(int16_t); + long long int llrint(uint16_t); + long long int llrint(int32_t); + long long int llrint(uint32_t); + + // lrint(ap_fixed) + template + long int lrint(ap_fixed x){ + return lrint_fixed(x); + } + template + long int lrint(ap_ufixed x){ + return lrint_fixed(x); + } + template + long int lrint(ap_int x){ + return lrint_fixed(x); + } + template + long int lrint(ap_uint x){ + return lrint_fixed(x); + } + + //lrint(int) + long int lrint(int8_t); + long int lrint(uint8_t); + long int lrint(int16_t); + long int lrint(uint16_t); + long int lrint(int32_t); + long int lrint(uint32_t); + + //isgreater(ap_fixed) + template + bool isgreater(ap_fixed x1, ap_fixed x2){ + return isgreater_fixed(x1, x2); + } + template + bool isgreater(ap_ufixed x1, ap_ufixed x2){ + return isgreater_fixed(x1, x2); + } + template + bool isgreater(ap_int x1, ap_int x2){ + return isgreater_fixed(x1, x2); + } + template + bool isgreater(ap_uint x1, ap_uint x2){ + return isgreater_fixed(x1, x2); + } + bool isgreater(int8_t, int8_t); + bool isgreater(uint8_t, uint8_t); + bool isgreater(int16_t, int16_t); + bool isgreater(uint16_t, uint16_t); + bool isgreater(int32_t, int32_t); + bool isgreater(uint32_t, uint32_t); + + //isgreaterequal(ap_fixed) + template + bool isgreaterequal(ap_fixed x1, ap_fixed x2){ + return isgreaterequal_fixed(x1, x2); + } + template + bool isgreaterequal(ap_ufixed x1, ap_ufixed x2){ + return isgreaterequal_fixed(x1, x2); + } + template + bool isgreaterequal(ap_int x1, ap_int x2){ + return isgreaterequal_int(x1, x2); + } + template + bool isgreaterequal(ap_uint x1, ap_uint x2){ + return isgreaterequal_fixed(x1, x2); + } + bool isgreaterequal(int8_t, int8_t); + bool isgreaterequal(uint8_t, uint8_t); + bool isgreaterequal(int16_t, int16_t); + bool isgreaterequal(uint16_t, uint16_t); + bool isgreaterequal(int32_t, int32_t); + bool isgreaterequal(uint32_t, uint32_t); + + //isless(ap_fixed) + template + bool isless(ap_fixed x1, ap_fixed x2){ + return isless_fixed(x1, x2); + } + template + bool isless(ap_ufixed x1, ap_ufixed x2){ + return isless_fixed(x1, x2); + } + template + bool isless(ap_int x1, ap_int x2){ + return isless_fixed(x1, x2); + } + template + bool isless(ap_uint x1, ap_uint x2){ + return isless_fixed(x1, x2); + } + bool isless(int8_t, int8_t); + bool isless(uint8_t, uint8_t); + bool isless(int16_t, int16_t); + bool isless(uint16_t, uint16_t); + bool isless(int32_t, int32_t); + bool isless(uint32_t, uint32_t); + + //islessequal(ap_fixed) + template + bool islessequal(ap_fixed x1, ap_fixed x2){ + return islessequal_fixed(x1, x2); + } + template + bool islessequal(ap_ufixed x1, ap_ufixed x2){ + return islessequal_fixed(x1, x2); + } + template + bool islessequal(ap_int x1, ap_int x2){ + return islessequal_fixed(x1, x2); + } + template + bool islessequal(ap_uint x1, ap_uint x2){ + return islessequal_fixed(x1, x2); + } + bool islessequal(int8_t, int8_t); + bool islessequal(uint8_t, uint8_t); + bool islessequal(int16_t, int16_t); + bool islessequal(uint16_t, uint16_t); + bool islessequal(int32_t, int32_t); + bool islessequal(uint32_t, uint32_t); + + //islessgreater(ap_fixed) + template + bool islessgreater(ap_fixed x1, ap_fixed x2){ + return islessgreater_fixed(x1, x2); + } + template + bool islessgreater(ap_ufixed x1, ap_ufixed x2){ + return islessgreater_fixed(x1, x2); + } + template + bool islessgreater(ap_int x1, ap_int x2){ + return islessgreater_fixed(x1, x2); + } + template + bool islessgreater(ap_uint x1, ap_uint x2){ + return islessgreater_fixed(x1, x2); + } + + bool islessgreater(int8_t, int8_t); + bool islessgreater(uint8_t, uint8_t); + bool islessgreater(int16_t, int16_t); + bool islessgreater(uint16_t, uint16_t); + bool islessgreater(int32_t, int32_t); + bool islessgreater(uint32_t, uint32_t); + + int8_t frexp(int8_t,int8_t*); + uint8_t frexp(uint8_t, uint8_t*); + int16_t frexp(int16_t, int16_t*); + uint16_t frexp(uint16_t, uint16_t*); + int32_t frexp(int32_t, int32_t*); + uint32_t frexp(uint32_t, uint32_t*); + //frexp(ap_fixed) + template + ap_fixed frexp(ap_fixed x, ap_fixed* exp) { + return frexp_internal::frexp(x,exp); + } + + template + ap_ufixed frexp(ap_ufixed x, ap_ufixed* exp){ + return frexp_internal::frexp(x,exp); + } + template + ap_int frexp(ap_int x, ap_int* exp){ + return frexp_internal::frexp(x,exp); + } + template + ap_uint frexp(ap_uint x,ap_uint* exp){ + return frexp_internal::frexp(x,exp); + } + + int8_t modf(int8_t, int8_t*); + uint8_t modf(uint8_t, uint8_t*); + int16_t modf(int16_t, int16_t*); + uint16_t modf(uint16_t, uint16_t*); + int32_t modf(int32_t, int32_t*); + uint32_t modf(uint32_t, uint32_t*); + //modf(ap_fixed) + template + ap_fixed modf(ap_fixed x, ap_fixed* intpart) { + return modf_internal::modf(x,intpart); + } + + template + ap_ufixed modf(ap_ufixed x, ap_ufixed* intpart){ + return modf_internal::modf(x,intpart); + } + template + ap_int modf(ap_int x, ap_int* intpart){ + return modf_internal::modf(x,intpart); + } + template + ap_uint modf(ap_uint x,ap_uint* intpart){ + return modf_internal::modf(x,intpart); + } + + // isequal(int) + bool isequal(int8_t,int8_t); + bool isequal(uint8_t,uint8_t); + bool isequal(int16_t,int16_t); + bool isequal(uint16_t,uint16_t); + bool isequal(int32_t,int32_t); + bool isequal(uint32_t,uint32_t); + //////////////////////////////////// + bool isnotequal(int8_t,int8_t); + bool isnotequal(uint8_t,uint8_t); + bool isnotequal(int16_t,int16_t); + bool isnotequal(uint16_t,uint16_t); + bool isnotequal(int32_t,int32_t); + bool isnotequal(uint32_t,uint32_t); + // isequal(ap_fixed) + template + bool isequal(ap_fixed x,ap_fixed y){ + return generic_isequal(x,y); + }; + template + bool isequal(ap_ufixed x,ap_ufixed y){ + return generic_isequal(x,y); + }; + template + bool isequal(ap_int x,ap_int y){ + return generic_isequal(x,y); + }; + template + bool isequal(ap_uint x,ap_uint y){ + return generic_isequal(x,y); + }; + // isnotequal(ap_fixed) + template + bool isnotequal(ap_fixed x,ap_fixed y){ + return generic_isnotequal(x,y); + }; + template + bool isnotequal(ap_ufixed x,ap_ufixed y){ + return generic_isnotequal(x,y); + }; + template + bool isnotequal(ap_int x,ap_int y){ + return generic_isnotequal(x,y); + }; + template + bool isnotequal(ap_uint x,ap_uint y){ + return generic_isnotequal(x,y); + }; + // any(ap_fixed) + template + bool any(ap_fixed x){ + return generic_any(x); + }; + template + bool any(ap_ufixed x){ + return generic_any(x); + }; + template + bool any(ap_int x){ + return generic_any(x); + }; + template + bool any(ap_uint x){ + return generic_any(x); + }; + // all(ap_fixed) + template + bool all(ap_fixed x){ + return generic_all(x); + }; + template + bool all(ap_ufixed x){ + return generic_all(x); + }; + template + bool all(ap_int x){ + return generic_all(x); + }; + template + bool all(ap_uint x){ + return generic_all(x); + }; + //bitselect(ap_fixed) + template + ap_fixed bitselect(ap_fixed x,ap_fixed y, ap_fixed z){ + return generic_bitselect(x,y,z); + }; + template + ap_ufixed bitselect(ap_ufixed x,ap_ufixed y,ap_ufixed z){ + return generic_bitselect(x,y,z); + }; + template + ap_int bitselect(ap_int x,ap_int y,ap_int z){ + return generic_bitselect(x,y,z); + }; + template + ap_uint bitselect(ap_uint x,ap_uint y,ap_uint z){ + return generic_bitselect(x,y,z); + }; + //erf(ap_fixed) + template + ap_fixed erf(ap_fixed x){ + return erf_erfc_fixed::erf(x); + } + template + ap_ufixed erf(ap_ufixed x){ + return erf_erfc_fixed::erf(x); + } + template + ap_int erf(ap_int x){ + return erf_erfc_fixed::erf(x); + } + template + ap_uint erf(ap_uint x){ + return erf_erfc_fixed::erf(x); + } + //erfc(ap_fixed) + template + ap_fixed erfc(ap_fixed x){ + return erf_erfc_fixed::erfc(x); + } + template + ap_ufixed erfc(ap_ufixed x){ + return erf_erfc_fixed::erfc(x); + } + template + ap_int erfc(ap_int x){ + return erf_erfc_fixed::erfc(x); + } + template + ap_uint erfc(ap_uint x){ + return erf_erfc_fixed::erfc(x); + } + // divide (int) + int8_t divide(int8_t,int8_t); + int16_t divide(int16_t,int16_t); + int32_t divide(int32_t,int32_t); + uint8_t divide(uint8_t,uint8_t); + uint16_t divide(uint16_t,uint16_t); + uint32_t divide(uint32_t,uint32_t); + //divide(ap_fixed) + template + ap_fixed divide(ap_fixed x, ap_fixed y){ + return hls_internal::generic_divide(x, y); + } + template + ap_ufixed divide(ap_ufixed x, ap_ufixed y){ + return hls_internal::generic_divide(x, y); + } + template + ap_int divide(ap_int x, ap_int y){ + return hls_internal::generic_divide(x, y); + } + template + ap_uint divide(ap_uint x, ap_uint y){ + return hls_internal::generic_divide(x, y); + } + //fmod(int) + int8_t fmod(int8_t,int8_t); + int16_t fmod(int16_t,int16_t); + int32_t fmod(int32_t,int32_t); + uint8_t fmod(uint8_t,uint8_t); + uint16_t fmod(uint16_t,uint16_t); + uint32_t fmod(uint32_t,uint32_t); + //fmod(ap_fixed) + template + ap_fixed fmod(ap_fixed x, ap_fixed y){ + return hls_internal::generic_fmod(x, y); + } + template + ap_ufixed fmod(ap_ufixed x, ap_ufixed y){ + return hls_internal::generic_fmod(x, y); + } + template + ap_int fmod(ap_int x, ap_int y){ + return hls_internal::generic_fmod(x, y); + } + template + ap_uint fmod(ap_uint x, ap_uint y){ + return hls_internal::generic_fmod(x, y); + } + //remainder (int) + int8_t remainder(int8_t,int8_t); + int16_t remainder(int16_t,int16_t); + int32_t remainder(int32_t,int32_t); + uint8_t remainder(uint8_t,uint8_t); + uint16_t remainder(uint16_t,uint16_t); + uint32_t remainder(uint32_t,uint32_t); + //remainder(ap_fixed) + template + ap_fixed remainder(ap_fixed x, ap_fixed y){ + return hls_internal::generic_remainder(x, y); + } + template + ap_ufixed remainder(ap_ufixed x, ap_ufixed y){ + return hls_internal::generic_remainder(x, y); + } + template + ap_int remainder(ap_int x, ap_int y){ + return hls_internal::generic_remainder(x, y); + } + template + ap_uint remainder(ap_uint x, ap_uint y){ + return hls_internal::generic_remainder(x, y); + } + //remquo (int) + int8_t remquo(int8_t,int8_t,int*); + int16_t remquo(int16_t,int16_t,int*); + int32_t remquo(int32_t,int32_t,int*); + uint8_t remquo(uint8_t,uint8_t,int*); + uint16_t remquo(uint16_t,uint16_t,int*); + uint32_t remquo(uint32_t,uint32_t,int*); + //remquo(ap_fixed) + template + ap_fixed remquo(ap_fixed x, ap_fixed y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + template + ap_ufixed remquo(ap_ufixed x, ap_ufixed y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + template + ap_int remquo(ap_int x, ap_int y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + template + ap_uint remquo(ap_uint x, ap_uint y, int* quo){ + return hls_internal::generic_remquo(x, y, quo); + } + //signbit(ap_fixed) + template + bool signbit(ap_fixed x) { + return signbit_fixed(x); + } + template + bool signbit(ap_ufixed x) { + return signbit_fixed(x); + } + template + bool signbit(ap_int x) { + return signbit_fixed(x); + } + template + bool signbit(ap_uint x) { + return signbit_fixed(x); + } + bool signbit(int8_t); + bool signbit(uint8_t); + bool signbit(int16_t); + bool signbit(uint16_t); + bool signbit(int32_t); + bool signbit(uint32_t); + + //lgamma_r(ap_fixed) + template + ap_fixed lgamma_r(ap_fixed x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_ufixed lgamma_r(ap_ufixed x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_int lgamma_r(ap_int x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + template + ap_uint lgamma_r(ap_uint x, int *signgamp){ + return lgamma_fixed::lgamma_r_generic(x, signgamp); + } + //lgamma(ap_fixed) + template + ap_fixed lgamma(ap_fixed x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_ufixed lgamma(ap_ufixed x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_int lgamma(ap_int x){ + return lgamma_fixed::lgamma_generic(x); + } + template + ap_uint lgamma(ap_uint x){ + return lgamma_fixed::lgamma_generic(x); + } + //mad (int) + int8_t mad(int8_t,int8_t,int8_t); + int16_t mad(int16_t,int16_t,int16_t); + int32_t mad(int32_t,int32_t,int32_t); + uint8_t mad(uint8_t,uint8_t,uint8_t); + uint16_t mad(uint16_t,uint16_t,uint16_t); + uint32_t mad(uint32_t,uint32_t,uint32_t); + //mad (ap_fixed) + template + ap_fixed mad(ap_fixed x,ap_fixed y,ap_fixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_ufixed mad(ap_ufixed x,ap_ufixed y,ap_ufixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_int mad(ap_int x,ap_int y,ap_int z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_uint mad(ap_uint x,ap_uint y,ap_uint z){ + return hls_mad::generic_mad(x,y,z); + } + //fma (int) + int8_t fma(int8_t,int8_t,int8_t); + int16_t fma(int16_t,int16_t,int16_t); + int32_t fma(int32_t,int32_t,int32_t); + uint8_t fma(uint8_t,uint8_t,uint8_t); + uint16_t fma(uint16_t,uint16_t,uint16_t); + uint32_t fma(uint32_t,uint32_t,uint32_t); + //fma (ap_fixed) + template + ap_fixed fma(ap_fixed x,ap_fixed y,ap_fixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_ufixed fma(ap_ufixed x,ap_ufixed y,ap_ufixed z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_int fma(ap_int x,ap_int y,ap_int z){ + return hls_mad::generic_mad(x,y,z); + } + template + ap_uint fma(ap_uint x,ap_uint y,ap_uint z){ + return hls_mad::generic_mad(x,y,z); + } + //fract (int) + int8_t fract(int8_t); + int16_t fract(int16_t); + int32_t fract(int32_t); + uint8_t fract(uint8_t); + uint16_t fract(uint16_t); + uint32_t fract(uint32_t); + //fract(ap_fixed) + template + ap_fixed fract(ap_fixed x){ + return hls_fract::generic_fract(x); + } + template + ap_ufixed fract(ap_ufixed x){ + return hls_fract::generic_fract(x); + } + template + ap_int fract(ap_int x){ + return hls_fract::generic_fract(x); + } + template + ap_uint fract(ap_uint x){ + return hls_fract::generic_fract(x); + } + //cbrt for fixed data type + template + ap_fixed cbrt(ap_fixed x) { + return cbrt_internal::cbrt_fixed(x); + } + template + ap_ufixed cbrt(ap_ufixed x) { + return cbrt_internal::cbrt_fixed(x); + } + template + ap_int cbrt(ap_int x) { + return cbrt_internal::cbrt_fixed(x); + } + template + ap_uint cbrt(ap_uint x) { + return cbrt_internal::cbrt_fixed(x); + } + int8_t cbrt(int8_t); + uint8_t cbrt(uint8_t); + int16_t cbrt(int16_t); + uint16_t cbrt(uint16_t); + int32_t cbrt(int32_t); + uint32_t cbrt(uint32_t); + + //tgamma(ap_fixed) + template + ap_fixed tgamma(ap_fixed x){ + return tgamma_fixed::tgamma_generic(x); + } + template + ap_ufixed tgamma(ap_ufixed x){ + return tgamma_fixed::tgamma_generic(x); + } + template + ap_int tgamma(ap_int x){ + return tgamma_fixed::tgamma_generic(x); + } + template + ap_uint tgamma(ap_uint x){ + return tgamma_fixed::tgamma_generic(x); + } + + //nextafter(ap_fixed) + template + ap_fixed nextafter(ap_fixed x, ap_fixed y) { + return fp_internal::nextafter(x, y); + } + template + ap_ufixed nextafter(ap_ufixed x, ap_ufixed y) { + return fp_internal::nextafter(x, y); + } + template + ap_int nextafter(ap_int x, ap_int y) { + return fp_internal::nextafter(x, y); + } + template + ap_uint nextafter(ap_uint x, ap_uint y) { + return fp_internal::nextafter(x, y); + } + int8_t nextafter(int8_t, int8_t); + uint8_t nextafter(uint8_t, uint8_t); + int16_t nextafter(int16_t, int16_t); + uint16_t nextafter(uint16_t, uint16_t); + int32_t nextafter(int32_t, int32_t); + uint32_t nextafter(uint32_t, uint32_t); + + //nexttoward(ap_fixed) + template + ap_fixed nexttoward(ap_fixed x, ap_fixed y) { + return fp_internal::nexttoward(x, y); + } + template + ap_ufixed nexttoward(ap_ufixed x, ap_ufixed y) { + return fp_internal::nexttoward(x, y); + } + template + ap_int nexttoward(ap_int x, ap_int y) { + return fp_internal::nexttoward(x, y); + } + template + ap_uint nexttoward(ap_uint x, ap_uint y) { + return fp_internal::nexttoward(x, y); + } + int8_t nexttoward(int8_t, int8_t); + uint8_t nexttoward(uint8_t, uint8_t); + int16_t nexttoward(int16_t, int16_t); + uint16_t nexttoward(uint16_t, uint16_t); + int32_t nexttoward(int32_t, int32_t); + uint32_t nexttoward(uint32_t, uint32_t); + + //hypot for fixed data type + template + ap_fixed hypot(ap_fixed x, ap_fixed y) { + return hypot_internal::hypot_fixed(x,y); + } + template + ap_ufixed hypot(ap_ufixed x, ap_ufixed y) { + return hypot_internal::hypot_fixed(x,y); + } + template + ap_int hypot(ap_int x, ap_int y) { + return hypot_internal::hypot_fixed(x,y); + } + template + ap_uint hypot(ap_uint x, ap_uint y) { + return hypot_internal::hypot_fixed(x,y); + } + int8_t hypot(int8_t, int8_t); + uint8_t hypot(uint8_t, uint8_t); + int16_t hypot(int16_t, int16_t); + uint16_t hypot(uint16_t, uint16_t); + int32_t hypot(int32_t, int32_t); + uint32_t hypot(uint32_t, uint32_t); + + template + ap_fixed exp2(ap_fixed x) { + return exp_reduce::exp2(x); + } + + template + ap_ufixed exp2(ap_ufixed x) { + return exp_reduce::exp2(x); + } + + template + ap_int exp2(ap_int x) { + return exp_reduce::exp2(x); + } + + template + ap_uint exp2(ap_uint x) { + return exp_reduce::exp2(x); + } + + template + ap_fixed exp10(ap_fixed x) { + return exp_reduce::exp10(x); + } + + template + ap_ufixed exp10(ap_ufixed x) { + return exp_reduce::exp10(x); + } + + template + ap_int exp10(ap_int x) { + return exp_reduce::exp10(x); + } + + template + ap_uint exp10(ap_uint x) { + return exp_reduce::exp10(x); + } + + template + ap_fixed expm1(ap_fixed x) { + return exp_reduce::expm1(x); + } + + template + ap_ufixed expm1(ap_ufixed x) { + return exp_reduce::expm1(x); + } + + template + ap_int expm1(ap_int x) { + return exp_reduce::expm1(x); + } + + template + ap_uint expm1(ap_uint x) { + return exp_reduce::expm1(x); + } + + template + ap_fixed log1p(ap_fixed x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_ufixed log1p(ap_ufixed x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_int log1p(ap_int x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_uint log1p(ap_uint x) { + return log_apfixed_reduce::log1p(x); + } + + template + ap_fixed ilogb(ap_fixed x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_ufixed ilogb(ap_ufixed x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_int ilogb(ap_int x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_uint ilogb(ap_uint x) { + return log_apfixed_reduce::ilogb(x); + } + + template + ap_fixed ldexp(ap_fixed x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_ufixed ldexp(ap_ufixed x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_int ldexp(ap_int x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_uint ldexp(ap_uint x, int exp) { + return hls_ldexp::ldexp(x, exp); + } + + template + ap_fixed scalbn(ap_fixed x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_ufixed scalbn(ap_ufixed x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_int scalbn(ap_int x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_uint scalbn(ap_uint x, int n) { + return hls_ldexp::scalbn(x, n); + } + + template + ap_fixed scalbln(ap_fixed x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + template + ap_ufixed scalbln(ap_ufixed x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + template + ap_int scalbln(ap_int x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + template + ap_uint scalbln(ap_uint x, long int n) { + return hls_ldexp::scalbln(x, n); + } + + int8_t ldexp(int8_t x, int exp); + int16_t ldexp(int16_t x, int exp); + int32_t ldexp(int32_t x, int exp); + uint8_t ldexp(uint8_t x, int exp); + uint16_t ldexp(uint16_t x, int exp); + uint32_t ldexp(uint32_t x, int exp); + + int8_t scalbn(int8_t x, int n); + int16_t scalbn(int16_t x, int n); + int32_t scalbn(int32_t x, int n); + uint8_t scalbn(uint8_t x, int n); + uint16_t scalbn(uint16_t x, int n); + uint32_t scalbn(uint32_t x, int n); + + int8_t scalbln(int8_t x, int n); + int16_t scalbln(int16_t x, int n); + int32_t scalbln(int32_t x, int n); + uint8_t scalbln(uint8_t x, int n); + uint16_t scalbln(uint16_t x, int n); + uint32_t scalbln(uint32_t x, int n); + + int8_t exp2(int8_t x); + int16_t exp2(int16_t x); + int32_t exp2(int32_t x); + uint8_t exp2(uint8_t x); + uint16_t exp2(uint16_t x); + uint32_t exp2(uint32_t x); + + int8_t exp10(int8_t x); + int16_t exp10(int16_t x); + int32_t exp10(int32_t x); + uint8_t exp10(uint8_t x); + uint16_t exp10(uint16_t x); + uint32_t exp10(uint32_t x); + + int8_t expm1(int8_t x); + int16_t expm1(int16_t x); + int32_t expm1(int32_t x); + uint8_t expm1(uint8_t x); + uint16_t expm1(uint16_t x); + uint32_t expm1(uint32_t x); + + int8_t ilogb(int8_t x); + int16_t ilogb(int16_t x); + int32_t ilogb(int32_t x); + uint8_t ilogb(uint8_t x); + uint16_t ilogb(uint16_t x); + uint32_t ilogb(uint32_t x); + + int8_t log1p(int8_t x); + int16_t log1p(int16_t x); + int32_t log1p(int32_t x); + uint8_t log1p(uint8_t x); + uint16_t log1p(uint16_t x); + uint32_t log1p(uint32_t x); + + int8_t log2(int8_t); + uint8_t log2(uint8_t); + int16_t log2(int16_t); + uint16_t log2(uint16_t); + int32_t log2(int32_t); + uint32_t log2(uint32_t); + + int8_t logb(int8_t); + uint8_t logb(uint8_t); + int16_t logb(int16_t); + uint16_t logb(uint16_t); + int32_t logb(int32_t); + uint32_t logb(uint32_t); + +}; +#endif + + diff --git a/vitis/v2021_2/hls_modf_apfixed.h b/vitis/v2021_2/hls_modf_apfixed.h new file mode 100755 index 00000000..c30ce961 --- /dev/null +++ b/vitis/v2021_2/hls_modf_apfixed.h @@ -0,0 +1,85 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hls_modf_ap_fixed.h + * @brief implement modf function for ap_fixed data type. + */ +#ifndef _X_HLS_MODF_APFIXED_H_ +#define _X_HLS_MODF_APFIXED_H_ +#include "hls_round_copysign_apfixed.h" +namespace modf_internal { +template +ap_fixed modf(ap_fixed x, + ap_fixed* int_part){ + ap_fixed frac_part = 0; + if(W == I) { + *int_part = x; + frac_part = 0; + } else if(I > 0) { + ap_fixed xi = x; + ap_ufixed x_p = fabs_fixed(xi); + frac_part(W - I - 1,0) = x_p(W - I - 1,0); + if(xi[W-1]) frac_part = - frac_part; + *int_part = x_p(W-1, W-I); + if(xi[W-1]) *int_part = -*int_part; + } else { + *int_part = 0; + frac_part = x; + } + return frac_part; +} +template +ap_ufixed modf(ap_ufixed x, + ap_ufixed* int_part){ + ap_fixed xi = x; + ap_fixed ii = 0; + ap_fixed r = modf(xi, &ii); + *int_part = ii; + return r; +} +template +ap_int modf(ap_int x, + ap_int* int_part){ + *int_part = x; + return 0; +} +template +ap_uint modf(ap_uint x, + ap_uint* int_part){ + *int_part = x; + return 0; +} +} +#endif//ifndef _X_HLS_MODF_APFIXED_H_ + + diff --git a/vitis/v2021_2/hls_np_channel.h b/vitis/v2021_2/hls_np_channel.h new file mode 100755 index 00000000..cc9b0cf2 --- /dev/null +++ b/vitis/v2021_2/hls_np_channel.h @@ -0,0 +1,171 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef X_HLS_NP_CHANNEL_H +#define X_HLS_NP_CHANNEL_H + +#include "hls_stream.h" +#ifndef __SYNTHESIS__ +#include +#endif +namespace hls { +enum ALG { + LOAD_BALANCING = 1, + ROUND_ROBIN = 2, + TAG_SELECT = 3 +}; + +#ifdef __SYNTHESIS__ +extern "C" void _ssdm_op_SpecNPortChannel(...); + +template +class SIMO; + +template +class SIMO { +public: + stream in; + stream out[N_READ_PORTS]; + SIMO(const char *name = nullptr) { + #pragma HLS inline + _ssdm_op_SpecNPortChannel(DEPTH, LOAD_BALANCING, 1, &in, N_READ_PORTS, out); + } +}; + +template +class MISO; + +template +class MISO { +public: + stream in[N_WRITE_PORTS]; + stream out; + MISO(const char *name = nullptr) { + #pragma HLS inline + _ssdm_op_SpecNPortChannel(DEPTH, LOAD_BALANCING, N_WRITE_PORTS, in, 1, &out); + } +}; + +#else + +#ifndef USE_THREAD_NP_CHANNEL +#ifdef HLS_STREAM_THREAD_SAFE +#define USE_THREAD_NP_CHANNEL +#else +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL +#define USE_THREAD_NP_CHANNEL +#endif +#endif +#endif + +template +class load_balancing_np : public stream_delegate { +private: + std::string name; + std::deque > _data; +#ifdef USE_THREAD_NP_CHANNEL + std::mutex _mutex; + std::condition_variable _condition_var; +#endif +protected: + load_balancing_np() {} + load_balancing_np(const char *n) : name(n) {} + +public: + virtual size_t size() { +#ifdef USE_THREAD_NP_CHANNEL + std::lock_guard lg(_mutex); +#endif + return _data.size(); + } + + virtual bool read(void *elem) { +#ifdef USE_THREAD_NP_CHANNEL + std::unique_lock ul(_mutex); + while (_data.empty()) { + _condition_var.wait(ul); + } +#else + if (_data.empty()) { + std::cout << "WARNING: n-ports channel '" + << name + << "' is read while empty," + << " which may result in RTL simulation hanging." + << std::endl; + return false; + } +#endif + + memcpy(elem, _data.front().data(), sizeof(T)); + _data.pop_front(); + return true; + } + + virtual bool read_nb(void *elem) { +#ifdef USE_THREAD_NP_CHANNEL + std::lock_guard lg(_mutex); +#endif + bool is_empty = _data.empty(); + if (!is_empty) { + memcpy(elem, _data.front().data(), sizeof(T)); + _data.pop_front(); + } + return !is_empty; + } + + virtual void write(const void *elem) { +#ifdef USE_THREAD_NP_CHANNEL + std::unique_lock ul(_mutex); +#endif + std::array elem_data; + memcpy(elem_data.data(), elem, sizeof(T)); + _data.push_back(elem_data); +#ifdef USE_THREAD_NP_CHANNEL + _condition_var.notify_one(); +#endif + } +}; + +template +class SIMO; + +template +class SIMO : public load_balancing_np { +public: + stream in; + stream out[N_READ_PORTS]; + SIMO() { + in.set_delegate(this); + for (int i = 0; i < N_READ_PORTS; i++) + out[i].set_delegate(this); + } + + SIMO(const char *name) : load_balancing_np(name) { + in.set_delegate(this); + for (int i = 0; i < N_READ_PORTS; i++) + out[i].set_delegate(this); + } +}; + +template +class MISO; + +template +class MISO : public load_balancing_np { +public: + stream in[N_WRITE_PORTS]; + stream out; + MISO() { + out.set_delegate(this); + for (int i = 0; i < N_WRITE_PORTS; i++) + in[i].set_delegate(this); + } + + MISO(const char *name) : load_balancing_np(name) { + out.set_delegate(this); + for (int i = 0; i < N_WRITE_PORTS; i++) + in[i].set_delegate(this); + } +}; + +#endif +} +#endif diff --git a/vitis/v2021_2/hls_pow_apfixed.h b/vitis/v2021_2/hls_pow_apfixed.h new file mode 100755 index 00000000..d6ac65db --- /dev/null +++ b/vitis/v2021_2/hls_pow_apfixed.h @@ -0,0 +1,569 @@ +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_POW_APFIXED_H_ +#define _X_HLS_POW_APFIXED_H_ +#include "ap_fixed.h" +#include "hls_log_apfixed.h" +#include "hls_exp_apfixed.h" +#include "hls_round_copysign_apfixed.h" +namespace pow_apfixed_reduce{ +/* + * Normally, pow(x,y) = exp(ylog(|x|))*sig(x)^y. + * To make sure the result has 1ulp relative error, the relative error of log(|x|) is 2^(-W-I-2) and the relative error of ylog(|x|) is 2^(-W-2). + * Exception handling. (Note: if 1 > Max, then return Max) + * ============================================ + * || x || y || pow(x,y) + * || 0 || 0 || 1 + * || 0 || <0 || Max + * || 0 || >0 || 0 + * || 1 || Random || 1 + * || Random || 0 || 1 + * || <0 ||Not Integer|| 0 + * ============================================ + */ +template +ap_fixed pow(ap_fixed x, ap_fixed y) { + const static int F_ = W_ - I_; + //only support ap_fixed with I < 34 and F < 33 + if (I_>34) return 0; + else if (F_>33) return 0; + ap_fixed r = 0; + + bool r_is_neg = 0; + bool y_is_frac = 0; + //y is fraction or not + if (F_>0&&y(F_-1,0)>0) + y_is_frac =1; + if (x==0) { + //x==0, y==0, return 0 + if (y==0&&I_>1) { + return 1; + //x==0, y==0, return 0 + } else if (y>0) { + return 0; + } else { + //x==0, y<0, return the Max + for (int j = 0; j < W_-1; j++){ + #pragma HLS unroll + r[j] = 1; + } + r[W_-1] = 0; + return r; + } + } else if (x<0) { + //x<0 and y is fractoin, return 0(NaN) + if (y_is_frac) return 0; + //x<0 and y is integer, if y is odd, r is positive otherwise r is negative. + else { + if (y==0||(I_>1&&y[F_]==0)) + r_is_neg = 0; + else + r_is_neg = 1; + } + } + //|x| + ap_fixed x_e_1 = x; + //avoid overflow after abs + ap_fixed x_p = 0; + x_p = fabs_fixed(x_e_1); + //ln(|x|) + //extend width of fraction + const static int E_l = I_+2; + const static int F_l = W_+E_l; + //The output of log shouble be less then 2^5 + const static int I_l = I_+1>6?I_+1:6; + const static int W_l = F_l + I_l; + //std::cout<<"[POW]x_p="< x_l = x_p; + //------------------------------------------------------- + //std::cout<<"[POW]x_l="< ln_x = log_apfixed_reduce::log(x_l); + //std::cout<<"[POW]ln_x="< ln_x_s = ln_x; + //--------------------------------------------------------- + //y*ln(|x|)--Maxprecision=2^(-W-2) + const static int FI_m = W_+2; + //The input of exp should be less then 2^5. If it > 2^5, i will definitely overflow. + const static int I_m = I_>6 ? I_ : 6;//add 1 due to min value is -2^I; + const static int WI_m = FI_m + I_m; + const static int WO_m = F_ + I_m; + ap_fixed mul_y_ln = ln_x_s * y; + //std::cout<<"[POW]mul_y_ln="< delta = 0; + //delta[delta.wl()-1] = mul_e[mul_e.wl()-1]; + //delta[delta.wl()-delta.iwl()-1] = 1; + //mul_e = mul_e + ( delta >> wf_m ); + //std::cout<<"mul_e="< exp_r = 0; + ap_fixed r_1 = 0; + bool m_overf = 0; + bool e_overf = 0; + bool overf = 0; + //check overflow or underflow after multiply + for (int j = F_l+F_+I_m-1; j < F_l+W_+5; j++){ + #pragma HLS unroll + if (mul_y_ln[F_l+W_+5]!=mul_y_ln[j]) + m_overf = 1; + } + + if (!m_overf) { + //truncate multiply result + ap_fixed mul_y_ln_s = mul_y_ln; + //std::cout<<"[POW]mul_y_ln_s="<(mul_y_ln_s);// + //std::cout<<"[POW]exp_r="<= W_-1; j--) { + #pragma HLS unroll + if (exp_r[j]) + e_overf=1; + } + } + r_1 = exp_r; + } + //overflow when exp reulst overflow or multiply result is positive and oveflow + if (e_overf||(m_overf&&!mul_y_ln[F_l+W_+5])) { + overf = 1; + } + //sig(x)^y = -1 + if (r_is_neg) { + //overflow, return MIN + if (overf) { + r=0; + r[W_-1]=1; + //return -exp(y*log(|x|)) + } else { + if (r_1!=0) { + r = -r_1; + r[W_-1] = 1; + } + } + //sig(x)^y =1 + } else { + // return MAX + if(overf) { + r[W_-1] = 0; + for (int j = W_-2; j >= 0; j--){ + #pragma HLS unroll + r[j] = 1; + } + //return exp(y*log(|x|) + } else { + r = r_1; + } + } + //std::cout<<"[OWW]r="< Max, then return Max) + * ============================================ + * || x || n || pown(x,n) + * || 0 || 0 || 1 + * || 0 || any || 0 + * || 1 || any || 1 + * || -1 || any || +1/-1 + * || any || 0 || 1 + * || any || 1 || x + * || any || -1 || 1/x + * || x!=0 || n!=0,1,-1 || exp(log|x|*n)*sig(x)^n + * ============================================ + * + * optimization: implement the exp for input I<5, W<32+5 and output W<65, I<32 + */ +template +ap_fixed pown(ap_fixed x, int n) { + #ifndef __SYNTHESIS__ + #ifdef HLS_DEBUG + std::cout<<"[POWN]x="< +ap_fixed ceil_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } else { + if(I_<0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) { + x(W_-I_-1,0) = 0; + x += 1; + } + return x; + } + } +} +template +ap_ufixed ceil_fixed(ap_ufixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_ < 0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) { + x(W_-I_-1,0) = 0; + x += 1; + } + return x; + } + } +} +template +ap_int ceil_fixed(ap_int x) +{ + return x; +} +template +ap_uint ceil_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed floor_fixed(ap_fixed x) +{ + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) x(W_-I_-1,0) = 0; + return x; + } + } +} +template +ap_ufixed floor_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return floor_fixed(xi); +} +template +ap_int floor_fixed(ap_int x) +{ + return x; +} +template +ap_uint floor_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed trunc_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + if ( x(W_-I_-1,0) != 0 ) { + x(W_-I_-1,0) = 0; + if ( x[W_-1] ) + x += 1; + } + return x; + } + } +} +template +ap_ufixed trunc_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return trunc_fixed(xi); +} +template +ap_int trunc_fixed(ap_int x) +{ + return x; +} +template +ap_uint trunc_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed copysign_fixed(ap_fixed x, ap_fixed y) +{ + x[W_-1] = y[W_-1]; + return x; +} +template +ap_ufixed copysign_fixed(ap_ufixed x, ap_ufixed y) +{ + _AP_UNUSED_PARAM(y); + return x; +} +template +ap_int copysign_fixed(ap_int x, ap_int y) +{ + x[I_-1] = y[I_-1]; + return x; +} +template +ap_uint copysign_fixed(ap_uint x, ap_uint y) +{ + _AP_UNUSED_PARAM(y); + return x; +} + +template +ap_fixed fabs_fixed(ap_fixed x) +{ + ap_fixed xs = -x; + xs[W_-1] = 0; + return ( ( x[W_-1] ) ? xs : x ); +} +template +ap_ufixed fabs_fixed(ap_ufixed x) +{ + return x; +} +template +ap_int fabs_fixed(ap_int x) +{ + ap_int xs = -x; + xs[I_-1] = 0; + return ( ( x[I_-1] ) ? xs : x ); +} +template +ap_uint fabs_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed round_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + ap_ufixed<1, 0> half_val = 0.5; + ap_ufixed x_pos = fabs_fixed(x); + ap_ufixed r = x_pos + half_val; + r(W_-I_-1,0) = 0; + if(x[W_-1]) return -r; + else return r; + } + } +} +template +ap_ufixed round_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return round_fixed(xi); +} +template +ap_int round_fixed(ap_int x) +{ + return x; +} +template +ap_uint round_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed rint_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if(W_ == I_) { + return x; + } + else { + if(I_<0) return 0; + else { + ap_ufixed x_p = fabs_fixed((ap_fixed)x); + ap_ufixed<1,0> half_val = 0.5; + ap_ufixed xUp = x_p + half_val; + + if(xUp(W_-I_-1,0) == 0) { + //round to even + xUp[W_-I_] = 0; + } else { + xUp(W_-I_-1,0) = 0; + } + if(x[W_-1]) return -xUp; + else return xUp; + } + //if ( x(W_-I_-1,0) != 0 ) { + // ap_fixed xs = 0; + // ap_fixed tmp=0; + // ap_fixed<2, 1> half_val = 0.5; + + // if(x[W_-1]) { + // xs = -x; + // xs = xs + half_val; + // tmp= xs; + // if (tmp(W_-I_-1,0) != 0) { + // xs(W_-I_-1,0) = 0; + // } + // else { + // xs[W_-I_] = 0; + // } + // x = -xs; + // } + // else { + // xs = x + half_val; + // tmp= xs; + // if (tmp(W_-I_-1,0) != 0) { + // xs(W_-I_-1,0) = 0; + // } + // else { + // xs[W_-I_] = 0; + // } + // x = xs; + // } + //} + //return x; + } +} +template +ap_ufixed rint_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return rint_fixed(xi); +} +template +ap_int rint_fixed(ap_int x) +{ + return x; +} +template +ap_uint rint_fixed(ap_uint x) +{ + return x; +} + +template +ap_fixed nearbyint_fixed(ap_fixed x) +{ + //for ap_fixed, there is no difference between rint and nearbyint. + return rint_fixed(x); +} +template +ap_ufixed nearbyint_fixed(ap_ufixed x) +{ + ap_fixed xi = x; + return nearbyint_fixed(xi); +} +template +ap_int nearbyint_fixed(ap_int x) +{ + return x; +} +template +ap_uint nearbyint_fixed(ap_uint x) +{ + return x; +} + +template +bool signbit_fixed(ap_fixed x){ + if(x[W_-1]) return true; + else return false; +} +template +bool signbit_fixed(ap_ufixed x){ + _AP_UNUSED_PARAM(x); + return false; +} + +template +bool signbit_fixed(ap_int x){ + if(x[I_-1]) return true; + else return false; +} + +template +bool signbit_fixed(ap_uint x){ + _AP_UNUSED_PARAM(x); + return false; +} +namespace fp_internal { + template + ap_fixed nextafter(ap_fixed x, ap_fixed y){ + const static int F = W - I; + ap_ufixed<1, -F+1> ulp = 0; + ulp[0] = 1; + ap_fixed r = 0; + if(x == y) r = y; + else if(x < y) r = x + ulp; + else r = x - ulp; + return r; + } + template + ap_ufixed nextafter(ap_ufixed x, ap_ufixed y) { + ap_fixed xi = x; + ap_fixed yi = y; + return nextafter(xi, yi); + + } + template + ap_int nextafter(ap_int x, ap_int y) { + ap_fixed xi = x; + ap_fixed yi = y; + return nextafter(xi, yi); + } + template + ap_uint nextafter(ap_uint x, ap_uint y) { + ap_fixed xi = x; + ap_fixed yi = y; + return nextafter(xi, yi); + } + template + ap_fixed nexttoward(ap_fixed x, ap_fixed y){ + return nextafter(x,y); + } + template + ap_ufixed nexttoward(ap_ufixed x, ap_ufixed y){ + return nextafter(x,y); + } + template + ap_int nexttoward(ap_int x, ap_int y){ + return nextafter(x,y); + } + template + ap_uint nexttoward(ap_uint x, ap_uint y){ + return nextafter(x,y); + } +} + +//llround(ap_fixed) +template +long long int llround_fixed(ap_fixed x){ + return round_fixed(ap_fixed (x)); +} + +//llround(ap_ufixed) +template +long long int llround_fixed(ap_ufixed x){ + return round_fixed(ap_ufixed (x)); +} + +//llround(ap_int) +template +long long int llround_fixed(ap_int x){ + return x; +} + +//llround(ap_uint) +template +long long int llround_fixed(ap_uint x){ + return x; +} + +// lround(ap_fixed) +template +long int lround_fixed(ap_fixed x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x(ap_fixed (x)); + } +} + +// lround(ap_ufixed) +template +long int lround_fixed(ap_ufixed x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) ) { + return maxval; + } + else { + return round_fixed(ap_ufixed (x)); + } +} + +// lround(ap_int) +template +long int lround_fixed(ap_int x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x +long int lround_fixed(ap_uint x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) ) { + return maxval; + } + else { + return x; + } +} + +// llrint_fixed(ap_fixed) +template +long long int llrint_fixed(ap_fixed x){ + return rint_fixed(ap_fixed (x)); +} + +// llrint_fixed(ap_ufixed) +template +long long int llrint_fixed(ap_ufixed x){ + return rint_fixed(ap_ufixed (x)); +} + +// llrint_fixed(ap_int) +template +long long int llrint_fixed(ap_int x){ + return x; +} + +// llrint_fixed(ap_uint) +template +long long int llrint_fixed(ap_uint x){ + return x; +} + +// lrint_fixed(ap_fixed) +template +long int lrint_fixed(ap_fixed x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x(ap_fixed (x)); + } +} + + +// lrint_fixed(ap_ufixed) +template +long int lrint_fixed(ap_ufixed x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if(x>maxval){ + return maxval; + } + else { + return rint_fixed(ap_ufixed (x)); + } +} + +// lrint_fixed(ap_int) +template +long int lrint_fixed(ap_int x){ + ap_int<8*sizeof(long int)> minval = 0; + minval[8*sizeof(long int)-1] = 1; + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if((x>maxval) || (x>minval)) { + return (x[I-1])? minval : maxval; + } + else { + return x; + } +} + +// lrint_fixed(ap_uint) +template +long int lrint_fixed(ap_uint x){ + ap_int<8*sizeof(long int)> maxval = -1; + maxval[8*sizeof(long int)-1] = 0; + if(x>maxval) { + return maxval; + } + else { + return x; + } +} + + +#endif + + diff --git a/vitis/v2021_2/hls_select_bitselect_apfixed.h b/vitis/v2021_2/hls_select_bitselect_apfixed.h new file mode 100755 index 00000000..1a732f34 --- /dev/null +++ b/vitis/v2021_2/hls_select_bitselect_apfixed.h @@ -0,0 +1,105 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_SELECT_BITSELECT_APFIXED_H_ +#define _X_HLS_SELECT_BITSELECT_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +//#include + +/* +///select ap_fixed +template +ap_fixed generic_select(ap_fixed x,ap_fixed y, ap_fixed z) +{ +#pragma HLS pipeline + ap_fixed result; + //for (int i=0; i +ap_ufixed generic_select(ap_ufixed x,ap_ufixed y, ap_ufixed z) +{ +#pragma HLS pipeline + ap_ufixed result; + //for (int i=0; i +ap_fixed generic_bitselect(ap_fixed x,ap_fixed y, ap_fixed z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} + +///bitselect ap_ufixed +template +ap_ufixed generic_bitselect(ap_ufixed x,ap_ufixed y, ap_ufixed z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} + +///bitselect ap_int +template +ap_int generic_bitselect(ap_int x,ap_int y, ap_int z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} +///bitselect ap_uint +template +ap_uint generic_bitselect(ap_uint x,ap_uint y, ap_uint z) +{ +#pragma HLS pipeline + return (z & y)|(~z & x);//meaning(z?y:x) or (x^(z&(y^x))) +} + +/* +///select ap_ufixed +template +void hls_select(ap_ufixed x[J_],ap_ufixed y[J_], ap_ufixed z[J_],ap_ufixed result[J_]) +{ + //ap_ufixed result[J_]; + for (int i=0; i +#include +#include + +enum CodeStateE {ENTER_WRAPC, DUMP_INPUTS, CALL_C_DUT, DUMP_OUTPUTS, DELETE_CHAR_BUFFERS, ENTER_WRAPC_PC} CodeState; +string CodeStateS[] = {"ENTER_WRAPC", "DUMP_INPUTS", "CALL_C_DUT", "DUMP_OUTPUTS", "DELETE_CHAR_BUFFERS", "ENTER_WRAPC_PC"}; + +void message_handler (int sig) +{ + if (sig == SIGFPE) + { + cout << "ERROR: System recieved a signal named SIGFPE and the program has to stop immediately!" << endl + << "This signal was generated due to a fatal arithmetic error." << endl + << "Possible cause of this problem may be: division by zero, overflow etc." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } + if (sig == SIGSEGV) + { + cout << "ERROR: System recieved a signal named SIGSEGV and the program has to stop immediately!" << endl + << "This signal was generated when a program tries to read or write outside the memory that is allocated for it, or to write memory that can only be read." << endl + << "Possible cause of this problem may be: 1) the depth setting of pointer type argument is much larger than it needed; 2)insufficient depth of array argument; 3)null pointer etc." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } + if (sig == SIGTERM) + { + cout << "ERROR: System recieved a signal named SIGTERM and the program has to stop immediately!" << endl + << "This signal was caused by the shell command kill." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } + if (sig == SIGINT) + { + cout << "ERROR: System recieved a signal named SIGINT and the program has to stop immediately!" << endl + << "This signal was generated when the user types the INTR character (normally C-c)." << endl + << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl + << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl + << endl; + } +//#ifdef _MINGW32_ +//#else +// if (sig == SIGKILL) +// { +// cout << "ERROR: System recieved a signal named SIGKILL and the program has to stop immediately!" << endl +// << "The system generated SIGKILL for a process itself under some unusual conditions where the program cannot possibly continue to run." << endl +// << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl +// << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl +// << endl; +// } +// if (sig == SIGQUIT) +// { +// cout << "ERROR: System recieved a signal named SIGQUIT and the program has to stop immediately!" << endl +// << "This signal was generated when the user types the QUIT character and produces a core dump." << endl +// << "Current execution stopped during CodeState = " << CodeStateS[CodeState] << "." << endl +// << "You can search CodeState variable name in apatb*.cpp file under ./sim/wrapc dir to locate the position." << endl +// << endl; +// } +//#endif + signal(sig, SIG_DFL); +} + +void refine_signal_handler () +{ + signal(SIGFPE, message_handler); + signal(SIGSEGV, message_handler); + signal(SIGTERM, message_handler); + signal(SIGINT, message_handler); +//#ifdef _MINGW32_ +//#else +// signal(SIGKILL, message_handler); +// signal(SIGQUIT, message_handler); +//#endif +} diff --git a/vitis/v2021_2/hls_sqrt_apfixed.h b/vitis/v2021_2/hls_sqrt_apfixed.h new file mode 100755 index 00000000..deb73909 --- /dev/null +++ b/vitis/v2021_2/hls_sqrt_apfixed.h @@ -0,0 +1,461 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_SQRT_APFIXED_H_ +#define _X_HLS_SQRT_APFIXED_H_ +#include "ap_int.h" +#include "ap_fixed.h" + +#ifndef __SYNTHESIS__ +#include "assert.h" +#endif + +template +ap_fixed sqrt_fixed(ap_fixed x) +{ +#pragma HLS pipeline + + // bitwidth that currently not supported + const int F_ = W_ - I_; + if (I_>34) return 0; + else if (F_>32) return 0; + + // return ap_fixed value + ap_ufixed r; + ap_ufixed x_s = x; + + if ((F_==0)&&(I_==2)) { + r = x_s; + } else if ((F_==0)&&(I_<=13)) { + ap_ufixed x_s_l = x_s + 1; + ap_ufixed x_s_1; + x_s_1(W_-2,0) = x_s_l(W_-1,1); + if (I_<=8) { + if (x_s_1==ap_ufixed("0x0p0")) r = 0; + else if (x_s_1<=ap_ufixed("0x1p0")) r = 1; + else if (x_s_1<=ap_ufixed("0x3p0")) r = 2; + else if (x_s_1<=ap_ufixed("0x6p0")) r = 3; + else if (x_s_1<=ap_ufixed("0xap0")) r = 4; + else if (x_s_1<=ap_ufixed("0xfp0")) r = 5; + else if (x_s_1<=ap_ufixed("0x15p0")) r = 6; + else if (x_s_1<=ap_ufixed("0x1cp0")) r = 7; + else if (x_s_1<=ap_ufixed("0x24p0")) r = 8; + else if (x_s_1<=ap_ufixed("0x2dp0")) r = 9; + else if (x_s_1<=ap_ufixed("0x37p0")) r = 10; + else r = 11; + } else if (I_<=9) { + if (x_s_1==ap_ufixed("0x0p0")) r = 0; + else if (x_s_1==ap_ufixed("0x1p0")) r = 1; + else if (x_s_1<=ap_ufixed("0x3p0")) r = 2; + else if (x_s_1<=ap_ufixed("0x6p0")) r = 3; + else if (x_s_1<=ap_ufixed("0xap0")) r = 4; + else if (x_s_1<=ap_ufixed("0xfp0")) r = 5; + else if (x_s_1<=ap_ufixed("0x15p0")) r = 6; + else if (x_s_1<=ap_ufixed("0x1cp0")) r = 7; + else if (x_s_1<=ap_ufixed("0x24p0")) r = 8; + else if (x_s_1<=ap_ufixed("0x2dp0")) r = 9; + else if (x_s_1<=ap_ufixed("0x37p0")) r = 10; + else if (x_s_1<=ap_ufixed("0x42p0")) r = 11; + else if (x_s_1<=ap_ufixed("0x4ep0")) r = 12; + else if (x_s_1<=ap_ufixed("0x5bp0")) r = 13; + else if (x_s_1<=ap_ufixed("0x69p0")) r = 14; + else if (x_s_1<=ap_ufixed("0x78p0")) r = 15; + else r = 16; + } else { + if (x_s_1==ap_ufixed("0x0p0")) r = 0; + else if (x_s_1==ap_ufixed("0x1p0")) r = 1; + else if (x_s_1<=ap_ufixed("0x3p0")) r = 2; + else if (x_s_1<=ap_ufixed("0x6p0")) r = 3; + else if (x_s_1<=ap_ufixed("0xap0")) r = 4; + else if (x_s_1<=ap_ufixed("0xfp0")) r = 5; + else if (x_s_1<=ap_ufixed("0x15p0")) r = 6; + else if (x_s_1<=ap_ufixed("0x1cp0")) r = 7; + else if (x_s_1<=ap_ufixed("0x24p0")) r = 8; + else if (x_s_1<=ap_ufixed("0x2dp0")) r = 9; + else if (x_s_1<=ap_ufixed("0x37p0")) r = 10; + else if (x_s_1<=ap_ufixed("0x42p0")) r = 11; + else if (x_s_1<=ap_ufixed("0x4ep0")) r = 12; + else if (x_s_1<=ap_ufixed("0x5bp0")) r = 13; + else if (x_s_1<=ap_ufixed("0x69p0")) r = 14; + else if (x_s_1<=ap_ufixed("0x78p0")) r = 15; + else if (x_s_1<=ap_ufixed("0x88p0")) r = 16; + else if (x_s_1<=ap_ufixed("0x99p0")) r = 17; + else if (x_s_1<=ap_ufixed("0xabp0")) r = 18; + else if (x_s_1<=ap_ufixed("0xbep0")) r = 19; + else if (x_s_1<=ap_ufixed("0xd2p0")) r = 20; + else if (x_s_1<=ap_ufixed("0xe7p0")) r = 21; + else if (x_s_1<=ap_ufixed("0xfdp0")) r = 22; + else if (x_s_1<=ap_ufixed("0x114p0")) r = 23; + else if (x_s_1<=ap_ufixed("0x12cp0")) r = 24; + else if (x_s_1<=ap_ufixed("0x145p0")) r = 25; + else if (x_s_1<=ap_ufixed("0x15fp0")) r = 26; + else if (x_s_1<=ap_ufixed("0x17ap0")) r = 27; + else if (x_s_1<=ap_ufixed("0x196p0")) r = 28; + else if (x_s_1<=ap_ufixed("0x1b3p0")) r = 29; + else if (x_s_1<=ap_ufixed("0x1d1p0")) r = 30; + else if (x_s_1<=ap_ufixed("0x1f0p0")) r = 31; + else if (x_s_1<=ap_ufixed("0x210p0")) r = 32; + else if (x_s_1<=ap_ufixed("0x231p0")) r = 33; + else if (x_s_1<=ap_ufixed("0x253p0")) r = 34; + else if (x_s_1<=ap_ufixed("0x276p0")) r = 35; + else if (x_s_1<=ap_ufixed("0x29ap0")) r = 36; + else if (x_s_1<=ap_ufixed("0x2bfp0")) r = 37; + else if (x_s_1<=ap_ufixed("0x2e5p0")) r = 38; + else if (x_s_1<=ap_ufixed("0x30cp0")) r = 39; + else if (x_s_1<=ap_ufixed("0x334p0")) r = 40; + else if (x_s_1<=ap_ufixed("0x35dp0")) r = 41; + else if (x_s_1<=ap_ufixed("0x387p0")) r = 42; + else if (x_s_1<=ap_ufixed("0x3b2p0")) r = 43; + else if (x_s_1<=ap_ufixed("0x3dep0")) r = 44; + else if (x_s_1<=ap_ufixed("0x40bp0")) r = 45; + else if (x_s_1<=ap_ufixed("0x439p0")) r = 46; + else if (x_s_1<=ap_ufixed("0x468p0")) r = 47; + else if (x_s_1<=ap_ufixed("0x498p0")) r = 48; + else if (x_s_1<=ap_ufixed("0x4c9p0")) r = 49; + else if (x_s_1<=ap_ufixed("0x4fbp0")) r = 50; + else if (x_s_1<=ap_ufixed("0x52ep0")) r = 51; + else if (x_s_1<=ap_ufixed("0x562p0")) r = 52; + else if (x_s_1<=ap_ufixed("0x597p0")) r = 53; + else if (x_s_1<=ap_ufixed("0x5cdp0")) r = 54; + else if (x_s_1<=ap_ufixed("0x604p0")) r = 55; + else if (x_s_1<=ap_ufixed("0x63cp0")) r = 56; + else if (x_s_1<=ap_ufixed("0x675p0")) r = 57; + else if (x_s_1<=ap_ufixed("0x6afp0")) r = 58; + else if (x_s_1<=ap_ufixed("0x6eap0")) r = 59; + else if (x_s_1<=ap_ufixed("0x726p0")) r = 60; + else if (x_s_1<=ap_ufixed("0x763p0")) r = 61; + else if (x_s_1<=ap_ufixed("0x7a1p0")) r = 62; + else if (x_s_1<=ap_ufixed("0x7e0p0")) r = 63; + else r = 64; + } + } else if (F_<=4 && I_<=5) { + if (x_s==ap_ufixed("0x0.0p0")) r = "0x0.0p0"; + else if (x_s==ap_ufixed("0x0.1p0")) r = "0x0.4p0"; + else if (x_s==ap_ufixed("0x0.2p0")) r = "0x0.6p0"; + else if (x_s==ap_ufixed("0x0.3p0")) r = "0x0.7p0"; + else if (x_s==ap_ufixed("0x0.4p0")) r = "0x0.8p0"; + else if (x_s==ap_ufixed("0x0.5p0")) r = "0x0.9p0"; + else if (x_s==ap_ufixed("0x0.6p0")) r = "0x0.ap0"; + else if (x_s<=ap_ufixed("0x0.8p0")) r = "0x0.bp0"; + else if (x_s==ap_ufixed("0x0.9p0")) r = "0x0.cp0"; + else if (x_s<=ap_ufixed("0x0.bp0")) r = "0x0.dp0"; + else if (x_s<=ap_ufixed("0x0.dp0")) r = "0x0.ep0"; + else if (x_s<=ap_ufixed("0x0.fp0")) r = "0x0.fp0"; + else if (x_s<=ap_ufixed("0x1.1p0")) r = "0x1.0p0"; + else if (x_s<=ap_ufixed("0x1.3p0")) r = "0x1.1p0"; + else if (x_s<=ap_ufixed("0x1.5p0")) r = "0x1.2p0"; + else if (x_s<=ap_ufixed("0x1.7p0")) r = "0x1.3p0"; + else if (x_s<=ap_ufixed("0x1.ap0")) r = "0x1.4p0"; + else if (x_s<=ap_ufixed("0x1.cp0")) r = "0x1.5p0"; + else if (x_s<=ap_ufixed("0x1.fp0")) r = "0x1.6p0"; + else if (x_s<=ap_ufixed("0x2.2p0")) r = "0x1.7p0"; + else if (x_s<=ap_ufixed("0x2.5p0")) r = "0x1.8p0"; + else if (x_s<=ap_ufixed("0x2.8p0")) r = "0x1.9p0"; + else if (x_s<=ap_ufixed("0x2.bp0")) r = "0x1.ap0"; + else if (x_s<=ap_ufixed("0x2.fp0")) r = "0x1.bp0"; + else if (x_s<=ap_ufixed("0x3.2p0")) r = "0x1.cp0"; + else if (x_s<=ap_ufixed("0x3.6p0")) r = "0x1.dp0"; + else if (x_s<=ap_ufixed("0x3.ap0")) r = "0x1.ep0"; + else if (x_s<=ap_ufixed("0x3.ep0")) r = "0x1.fp0"; + else if (x_s<=ap_ufixed("0x4.2p0")) r = "0x2.0p0"; + else if (x_s<=ap_ufixed("0x4.6p0")) r = "0x2.1p0"; + else if (x_s<=ap_ufixed("0x4.ap0")) r = "0x2.2p0"; + else if (x_s<=ap_ufixed("0x4.ep0")) r = "0x2.3p0"; + else if (x_s<=ap_ufixed("0x5.3p0")) r = "0x2.4p0"; + else if (x_s<=ap_ufixed("0x5.7p0")) r = "0x2.5p0"; + else if (x_s<=ap_ufixed("0x5.cp0")) r = "0x2.6p0"; + else if (x_s<=ap_ufixed("0x6.1p0")) r = "0x2.7p0"; + else if (x_s<=ap_ufixed("0x6.6p0")) r = "0x2.8p0"; + else if (x_s<=ap_ufixed("0x6.bp0")) r = "0x2.9p0"; + else if (x_s<=ap_ufixed("0x7.0p0")) r = "0x2.ap0"; + else if (x_s<=ap_ufixed("0x7.6p0")) r = "0x2.bp0"; + else if (x_s<=ap_ufixed("0x7.bp0")) r = "0x2.cp0"; + else if (x_s<=ap_ufixed("0x8.1p0")) r = "0x2.dp0"; + else if (x_s<=ap_ufixed("0x8.7p0")) r = "0x2.ep0"; + else if (x_s<=ap_ufixed("0x8.dp0")) r = "0x2.fp0"; + else if (x_s<=ap_ufixed("0x9.3p0")) r = "0x3.0p0"; + else if (x_s<=ap_ufixed("0x9.9p0")) r = "0x3.1p0"; + else if (x_s<=ap_ufixed("0x9.fp0")) r = "0x3.2p0"; + else if (x_s<=ap_ufixed("0xa.5p0")) r = "0x3.3p0"; + else if (x_s<=ap_ufixed("0xa.cp0")) r = "0x3.4p0"; + else if (x_s<=ap_ufixed("0xb.2p0")) r = "0x3.5p0"; + else if (x_s<=ap_ufixed("0xb.9p0")) r = "0x3.6p0"; + else if (x_s<=ap_ufixed("0xc.0p0")) r = "0x3.7p0"; + else if (x_s<=ap_ufixed("0xc.7p0")) r = "0x3.8p0"; + else if (x_s<=ap_ufixed("0xc.ep0")) r = "0x3.9p0"; + else if (x_s<=ap_ufixed("0xd.5p0")) r = "0x3.ap0"; + else if (x_s<=ap_ufixed("0xd.dp0")) r = "0x3.bp0"; + else if (x_s<=ap_ufixed("0xe.4p0")) r = "0x3.cp0"; + else if (x_s<=ap_ufixed("0xe.cp0")) r = "0x3.dp0"; + else if (x_s<=ap_ufixed("0xf.4p0")) r = "0x3.ep0"; + else if (x_s<=ap_ufixed("0xf.cp0")) r = "0x3.fp0"; + else r = "0x4.0p0"; + } else { + + if (x[W_-1]) return 0; + if (I_<=0) { + const static int lsbx = (-I_+2<=W_) ? (W_+I_-2) : 0; + if ( x(W_-1,lsbx) != 0 ) return 0; + } + + const static int prcs = (F_+1)*2; // max precision + const static int msbr = (I_>0) ? (I_+1)/2 : 1; // msb of result + const static int msbx = (I_>0) ? I_+3 : 4; + const static int msbm = (I_>0) ? I_+1 : 2; + +// ap_ufixed x_l = x; + ap_ufixed x_l_I = x; + ap_ufixed< prcs/2, 0> x_l_FH = x; + ap_ufixed< prcs/2, -prcs/2> x_l_FL = 0; + ap_ufixed res = 0; // result to return + ap_ufixed res_I = 0; + ap_ufixed< prcs/2, 0> res_FH = 0; + //ap_ufixed< prcs/2, -prcs/2> res_FL = 0; + +// #pragma HLS unroll +// // each iteration calculate 1 bit of result, starting from MSB +// // bit is used to store the current bit under calculation +// // if accepted bit will be added to result +// for ( int pos = msbr-1; pos >= -F_-1; pos-- ) { +// ap_ufixed mul = 0; // 2 * res * bit + bit^2 +// assert ( res(pos+prcs,0)==0 ); +// mul ( msbr+pos + prcs , pos*2+1 + prcs ) = res ( msbr-1 + prcs , pos + prcs ); +// assert ( !mul[I_-1+prcs] ); +// mul [ pos*2 + prcs ] = 1; +// +// +// assert ( x_l(I_+2+prcs,msbr+pos+2+prcs)==0 ); +// if ( x_l ( msbr+pos + prcs , pos*2 + prcs ) >= mul ( msbr+pos + prcs , pos*2 + prcs ) ) { +// assert ( x_l >= mul ); +// ap_ufixed x_l_ = x_l; // just for assert +// x_l ( msbr+pos + prcs , pos*2 + prcs ) = x_l ( msbr+pos + prcs , pos*2 + prcs ) - mul ( msbr+pos + prcs , pos*2 + prcs ); +// assert ( x_l == x_l_ - mul ); +// +// res [ pos + prcs ] = 1; +// } +// } + if (I_>0) + for ( int pos = msbr-1; pos >= 0; pos-- ) { + #pragma HLS unroll + ap_ufixed mul_I = 0; +#ifndef __SYNTHESIS__ + assert ( res_I(pos,0)==0 ); +#endif + mul_I ( msbr+pos , pos*2+1 ) = res_I ( msbr-1 , pos ); +#ifndef __SYNTHESIS__ + assert ( !mul_I[I_-1] ); +#endif + mul_I [ pos*2 ] = 1; + +#ifndef __SYNTHESIS__ + assert ( x_l_I(I_+2,msbr+pos+2)==0 ); +#endif + if ( x_l_I ( msbr+pos+1 , pos*2 ) >= mul_I ( msbr+pos , pos*2 ) ) { +#ifndef __SYNTHESIS__ + assert ( x_l_I >= mul_I ); +#endif + ap_ufixed x_l_I_ = x_l_I; + x_l_I ( msbr+pos+1 , pos*2 ) = x_l_I ( msbr+pos+1 , pos*2 ) - mul_I ( msbr+pos , pos*2 ); +#ifndef __SYNTHESIS__ + assert ( x_l_I == x_l_I_ - mul_I ); +#endif + + res_I [ pos ] = 1; + } + } + for ( int pos = -1; pos >= -F_-1; pos-- ) { + #pragma HLS unroll + ap_ufixed mul = 0; +#ifndef __SYNTHESIS__ + assert ( res_FH(pos+prcs/2,0)==0 ); +#endif + //assert ( res_FL ==0 ); + mul ( msbr+pos + prcs , pos +1 + prcs ) = res_I ( msbr-1 , 0 ); + mul ( pos + prcs , pos*2+1 + prcs ) = res_FH ( -1+prcs/2 , pos+prcs/2 ); +#ifndef __SYNTHESIS__ + assert ( !mul[I_-1+prcs] ); +#endif + mul [ pos*2 + prcs ] = 1; + ap_ufixed mul_I = mul; + ap_ufixed< prcs/2, 0> mul_FH = mul; + ap_ufixed< prcs/2, -prcs/2> mul_FL = mul; + + ap_ufixed x_l; + x_l ( -1+msbx + prcs , prcs ) = x_l_I ( -1+msbx , 0 ); + x_l ( -1 + prcs , prcs/2 ) = x_l_FH ( -1+prcs/2 , 0 ); + x_l ( -1 + prcs/2 , 0 ) = x_l_FL ( -1+prcs/2 , 0 ); +#ifndef __SYNTHESIS__ + assert ( x_l(I_+2+prcs,msbr+pos+2+prcs)==0 ); +#endif + if ( (x_l_I>mul_I) || ((x_l_I==mul_I)&&(x_l_FH>mul_FH)) || ((x_l_I==mul_I)&&(x_l_FH==mul_FH)&&(x_l_FL>=mul_FL)) ) { +#ifndef __SYNTHESIS__ + assert ( x_l >= mul ); +#endif + + ap_ufixed< prcs/2+1 , -prcs/2+1 > x_l_FL_l = x_l_FL; + if ( x_l_FL < mul_FL ) x_l_FL_l[prcs/2] = 1; + x_l_FL_l -= mul_FL; +#ifndef __SYNTHESIS__ + assert ( !x_l_FL_l[prcs/2] ); +#endif + + ap_ufixed< prcs/2+1 , 1 > x_l_FH_l = x_l_FH; + if ( (x_l_FH delta = 0; + if ( x_l_FL < mul_FL ) delta[0] = 1; + x_l_FH_l -= delta; + x_l_FH_l -= mul_FH; +#ifndef __SYNTHESIS__ + assert ( !x_l_FH_l[prcs/2] ); +#endif + if ( (x_l_FH x_l_ = x_l; + x_l ( -1+msbx + prcs , prcs ) = x_l_I ( -1+msbx , 0 ); + x_l ( -1 + prcs , prcs/2 ) = x_l_FH ( -1+prcs/2 , 0 ); + x_l ( -1 + prcs/2 , 0 ) = x_l_FL ( -1+prcs/2 , 0 ); +#ifndef __SYNTHESIS__ + assert ( x_l == x_l_ - mul ); +#endif + res_FH [ pos+prcs/2 ] = 1; + } + } + +// r = res + ( delta >> F_ ); + + ap_ufixed< prcs/2+1 , 1 > res_FH_l = res_FH; + ap_ufixed< prcs/2 , 0 > delta; + delta[delta.wl()-1] = 1; + res_FH_l += ( delta >> F_ ); + res_FH = res_FH_l; + if (res_FH_l[prcs/2]) res_I ++; + + res ( msbr-1 + prcs , prcs ) = res_I ( msbr-1 , 0 ); + res ( -1 + prcs , prcs/2 ) = res_FH ( -1+prcs/2 , 0 ); + + r = res; + } + + return r; +} +template +ap_ufixed sqrt_fixed(ap_ufixed x) { + ap_fixed xf = x; + return sqrt_fixed(xf); +} +template +ap_int sqrt_fixed(ap_int x) { + ap_fixed xf = x; + return sqrt_fixed(xf); +} +template +ap_uint sqrt_fixed(ap_uint x) { + ap_fixed xf = x; + return sqrt_fixed(xf); +} + + +template +ap_fixed rsqrt_fixed(ap_fixed x) +{ +#pragma HLS pipeline + ap_ufixed xs = x; + const int Ix = ( I_ > 1 )? I_-1 : 1; + ap_ufixed xs_I = xs; + ap_ufixed r; + const int I = ( I_-1 > W_-I_+1 ) ? I_-1 : W_-I_+1; + ap_ufixed y1; + ap_ufixed y2; + if ( xs == 0 ) { + return 0; + } else if ( xs_I != 0 ) { + y1 = xs; + } else { + y1 = 1; + y1 = y1/xs; + } + y2 = sqrt_fixed(y1); + if ( y2 == 0 ) { + return 0; + } else if ( xs_I != 0 ) { + r = 1; + r = r/y2; + } else { + r = y2; + } + return r; +} +template +ap_ufixed rsqrt_fixed(ap_ufixed x) { + ap_fixed xf = x; + return rsqrt_fixed(xf); +} +template +ap_int rsqrt_fixed(ap_int x) { + ap_fixed xf = x; + return rsqrt_fixed(xf); +} +template +ap_uint rsqrt_fixed(ap_uint x) { + ap_fixed xf = x; + return rsqrt_fixed(xf); +} + + +template +ap_fixed recip_fixed(ap_fixed x) +{ +#pragma HLS pipeline + if ( x == 0 ) return 0; + ap_fixed r = 1; + return r/x; +} +template +ap_ufixed recip_fixed(ap_ufixed x) { + ap_fixed xf = x; + return recip_fixed(xf); +} +template +ap_int recip_fixed(ap_int x) { + ap_fixed xf = x; + return recip_fixed(xf); +} +template +ap_uint recip_fixed(ap_uint x) { + ap_fixed xf = x; + return recip_fixed(xf); +} + +#endif diff --git a/vitis/v2021_2/hls_stream.h b/vitis/v2021_2/hls_stream.h new file mode 100755 index 00000000..cff71a12 --- /dev/null +++ b/vitis/v2021_2/hls_stream.h @@ -0,0 +1,65 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* -*- c++ -*-*/ +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + * + * + */ + +#ifndef X_HLS_STREAM_SIM_H +#define X_HLS_STREAM_SIM_H + +#ifdef HLS_STREAM_THREAD_SAFE +#include "hls_stream_thread_safe.h" +#else +#include "hls_stream_thread_unsafe.h" +#endif + +#endif // X_HLS_STREAM_SIM_H + diff --git a/vitis/v2021_2/hls_stream_thread_safe.h b/vitis/v2021_2/hls_stream_thread_safe.h new file mode 100755 index 00000000..9217c0fa --- /dev/null +++ b/vitis/v2021_2/hls_stream_thread_safe.h @@ -0,0 +1,278 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + +*/ + +#ifndef X_HLS_STREAM_THREAD_SAFE_SIM_H +#define X_HLS_STREAM_THREAD_SAFE_SIM_H + +/* + * This file contains a C++ model of hls::stream. + * It defines C simulation model. + */ +#ifndef __cplusplus + +#error C++ is required to include this header file + +#else + +////////////////////////////////////////////// +// C level simulation models for hls::stream +////////////////////////////////////////////// +#include +#include +#include +#include +#include + +#include +#include + +#ifndef _MSC_VER +#include +#include +#endif + +namespace hls { + +static int instance_count; +static int max_size; +static void stream_handler() { +//This functionality got broken after threadsafe/unsafe related changes. +//Comment it for now as apparently no one is using it. No one has complained +//for many months. +// std::cout << "The maximum depth reached by any of the " << instance_count + // << " hls::stream() instances in the design is " << max_size << std::endl; +} + +template +class stream; +template +class stream<__STREAM_T__, 0> +{ + protected: + std::string _name; + std::deque<__STREAM_T__> _data; // container for the elements + std::mutex _mutex; + std::condition_variable _condition_var; + + protected: + void register_handler() { + if(instance_count == 0) + const int handler = std::atexit(stream_handler); + instance_count++; + } + + + public: + /// Constructors + // Keep consistent with the synthesis model's constructors + stream() { + static unsigned _counter = 1; + register_handler(); + std::stringstream ss; +#ifndef _MSC_VER + char* _demangle_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, 0); + if (_demangle_name) { + _name = _demangle_name; + free(_demangle_name); + } + else { + _name = "hls_stream"; + } +#else + _name = typeid(*this).name(); +#endif + + ss << _counter++; + _name += "." + ss.str(); + } + + stream(const char *name) { + // default constructor, + // capacity set to predefined maximum + _name = name; + register_handler(); + } + + /// Make copy constructor and assignment operator private + private: + stream(const stream< __STREAM_T__ >& chn): + _name(chn._name), _data(chn._data) { + } + + stream& operator = (const stream< __STREAM_T__ >& chn) { + _name = chn._name; + _data = chn._data; + return *this; + } + + public: + /// Overload >> and << operators to implement read() and write() + void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + + public: + /// Destructor + /// Check status of the queue + virtual ~stream() { + if (!_data.empty()) + { + std::cout << "WARNING: Hls::stream '" + << _name + << "' contains leftover data," + << " which may result in RTL simulation hanging." + << std::endl; + } + + } + + /// Status of the queue + bool empty() { + std::lock_guard lg(_mutex); + return _data.empty(); + } + + bool full() const { return false; } + + /// Blocking read + void read(__STREAM_T__& head) { + head = read(); + } + + /// Blocking read + bool read_dep(__STREAM_T__& head, volatile bool flag) { + head = read(); + return flag; + } + + __STREAM_T__ read() { + std::unique_lock ul(_mutex); + while (_data.empty()) { + _condition_var.wait(ul); + } + + __STREAM_T__ elem; + elem = _data.front(); + _data.pop_front(); + return elem; + } + + /// Blocking write + void write(const __STREAM_T__& tail) { + std::unique_lock ul(_mutex); + _data.push_back(tail); + if(max_size < size()) { + max_size = size(); + } + + _condition_var.notify_one(); + } + + /// Blocking write + bool write_dep(const __STREAM_T__& tail, volatile bool flag) { + std::unique_lock ul(_mutex); + _data.push_back(tail); + if(max_size < size()) { + max_size = size(); + } + _condition_var.notify_one(); + return flag; + } + + /// Nonblocking read + bool read_nb(__STREAM_T__& head) { + std::lock_guard lg(_mutex); + bool is_empty = _data.empty(); + if (is_empty) { + head = __STREAM_T__(); + } else { + __STREAM_T__ elem(_data.front()); + _data.pop_front(); + head = elem; + } + return !is_empty; + } + + /// Nonblocking write + bool write_nb(const __STREAM_T__& tail) { + bool is_full = full(); + write(tail); + return !is_full; + } + + /// Fifo size + size_t size() { + return _data.size(); + } + + /// Set name for c-sim debugging. + void set_name(const char* name) { _name = name; } +}; + +template +class stream : public stream<__STREAM_T__, 0> { +public: + stream() {} + stream(const char* name) : stream<__STREAM_T__, 0>(name) {} +}; + +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_STREAM_THREAD_SAFE_SIM_H + + diff --git a/vitis/v2021_2/hls_stream_thread_unsafe.h b/vitis/v2021_2/hls_stream_thread_unsafe.h new file mode 100755 index 00000000..68e6f95d --- /dev/null +++ b/vitis/v2021_2/hls_stream_thread_unsafe.h @@ -0,0 +1,430 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* +#- (c) Copyright 2011-2021 Xilinx, Inc. All rights reserved. +#- +#- This file contains confidential and proprietary information +#- of Xilinx, Inc. and is protected under U.S. and +#- international copyright and other intellectual property +#- laws. +#- +#- DISCLAIMER +#- This disclaimer is not a license and does not grant any +#- rights to the materials distributed herewith. Except as +#- otherwise provided in a valid license issued to you by +#- Xilinx, and to the maximum extent permitted by applicable +#- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +#- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +#- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +#- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +#- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +#- (2) Xilinx shall not be liable (whether in contract or tort, +#- including negligence, or under any other theory of +#- liability) for any loss or damage of any kind or nature +#- related to, arising under or in connection with these +#- materials, including for any direct, or any indirect, +#- special, incidental, or consequential loss or damage +#- (including loss of data, profits, goodwill, or any type of +#- loss or damage suffered as a result of any action brought +#- by a third party) even if such damage or loss was +#- reasonably foreseeable or Xilinx had been advised of the +#- possibility of the same. +#- +#- CRITICAL APPLICATIONS +#- Xilinx products are not designed or intended to be fail- +#- safe, or for use in any application requiring fail-safe +#- performance, such as life-support or safety devices or +#- systems, Class III medical devices, nuclear facilities, +#- applications related to the deployment of airbags, or any +#- other applications that could lead to death, personal +#- injury, or severe property or environmental damage +#- (individually and collectively, "Critical +#- Applications"). Customer assumes the sole risk and +#- liability of any use of Xilinx products in Critical +#- Applications, subject only to applicable laws and +#- regulations governing limitations on product liability. +#- +#- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +#- PART OF THIS FILE AT ALL TIMES. +#- ************************************************************************ + + +*/ + +#ifndef X_HLS_STREAM_THREAD_UNSAFE_SIM_H +#define X_HLS_STREAM_THREAD_UNSAFE_SIM_H + +/* + * This file contains a C++ model of hls::stream. + * It defines C simulation model. + */ +#ifndef __cplusplus + +#error C++ is required to include this header file + +#else + +////////////////////////////////////////////// +// C level simulation models for hls::stream +////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL +#include +#include +#include +#endif + +#ifndef _MSC_VER +#include +#include +#endif + +namespace hls { + +static int instance_count; +static int max_size; +static void stream_handler() { +//This functionality got broken after threadsafe/unsafe related changes. +//Comment it for now as apparently no one is using it. No one has complained +//for many months. + //std::cout << "The maximum depth reached by any of the " << instance_count + //<< " hls::stream() instances in the design is " << max_size << std::endl; +} + +template +class stream_delegate { +public: + virtual bool read(void *elem) = 0; + virtual void write(const void *elem) = 0; + virtual bool read_nb(void *elem) = 0; + virtual size_t size() = 0; +}; + +template +class stream_entity { +public: + stream_entity() : d(0) {} + + bool read(void *elem) { + if (d) + return d->read(elem); + +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::unique_lock ul(mutex); + while (data.empty()) { + condition_var.wait(ul); + } +#else +#ifdef HLS_STREAM_WAIT_FOR_DATA_IN_BLOCKING_READ + while(data.empty()) + ; +#endif + if (data.empty()) { + std::cout << "WARNING: Hls::stream '" + << name + << "' is read while empty," + << " which may result in RTL simulation hanging." + << std::endl; + return false; + } +#endif + std::array &elem_data = data.front(); + memcpy(elem, elem_data.data(), SIZE); + data.pop_front(); + return true; + } + + void write(const void *elem) { + if (d) { + d->write(elem); + return; + } + + std::array elem_data; + memcpy(elem_data.data(), elem, SIZE); + +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::unique_lock ul(mutex); +#endif + data.push_back(elem_data); +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + condition_var.notify_one(); +#else + if (max_size < data.size()) + max_size = size(); +#endif + } + + /// Nonblocking read + bool read_nb(void *elem) { + if (d) + return d->read_nb(elem); + +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::lock_guard lg(mutex); +#endif + bool is_empty = data.empty(); + if (!is_empty) { + std::array &elem_data = data.front(); + memcpy(elem, elem_data.data(), SIZE); + data.pop_front(); + } + return !is_empty; + } + + /// Fifo size + size_t size() { + if (d) + return d->size(); + +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::lock_guard lg(mutex); +#endif + return data.size(); + } + + /// Set name for c-sim debugging. + void set_name(const char *n) { +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::lock_guard lg(mutex); +#endif + name = n; + } + + stream_delegate *d; + std::string name; + std::deque > data; +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::mutex mutex; + std::condition_variable condition_var; +#endif +}; + +template +class stream_map { +public: + static size_t count(void *p) { +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::lock_guard lg(get_mutex()); +#endif + return get_map().count(p); + } + + static void insert(void *p, const std::string &name) { +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::lock_guard lg(get_mutex()); +#endif + auto &map = get_map(); + map.erase(p); + map[p].name = name; + } + + static stream_entity &get_entity(void *p) { +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + std::lock_guard lg(get_mutex()); +#endif + return get_map()[p]; + } + + static unsigned get_counter() { +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + static std::atomic counter(0); +#else + static unsigned counter = 0; +#endif + return counter++; + } + +private: +#ifdef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + static std::mutex &get_mutex() { + static std::mutex *mutex = new std::mutex(); + return *mutex; + } +#endif + static std::unordered_map > &get_map() { + static std::unordered_map > *map = + new std::unordered_map >(); + return *map; + } +}; + +template +class stream; +template +class stream<__STREAM_T__, 0> +{ + typedef stream_map map_t; + protected: + __STREAM_T__ _data; + + protected: + void register_handler() { + if(instance_count == 0) + const int handler = std::atexit(stream_handler); + instance_count++; + } + + public: + /// Constructors + // Keep consistent with the synthesis model's constructors + stream() { +#ifndef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + register_handler(); +#endif + std::stringstream ss; +#ifndef _MSC_VER + char* _demangle_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, 0); + if (_demangle_name) { + ss << _demangle_name; + free(_demangle_name); + } + else { + ss << "hls_stream"; + } +#else + ss << typeid(*this).name(); +#endif + + ss << map_t::get_counter(); + map_t::insert(&_data, ss.str()); + } + + stream(const char *name) { + // default constructor, + // capacity set to predefined maximum + map_t::insert(&_data, name); +#ifndef HLS_STREAM_THREAD_SAFE_EXPERIMENTAL + register_handler(); +#endif + } + + /// Make copy constructor and assignment operator private + /// They should not be called. + private: + stream(const stream< __STREAM_T__ >& chn): + _data(chn._data) { + } + + stream& operator = (const stream< __STREAM_T__ >& chn) { + return *this; + } + + public: + /// Overload >> and << operators to implement read() and write() + void operator >> (__STREAM_T__& rdata) { + read(rdata); + } + + void operator << (const __STREAM_T__& wdata) { + write(wdata); + } + + + public: + /// Destructor + /// Check status of the queue + ~stream() { + if (!empty()) + { + std::cout << "WARNING: Hls::stream '" + << map_t::get_entity(&_data).name + << "' contains leftover data," + << " which may result in RTL simulation hanging." + << std::endl; + } + } + + bool exist() { + return map_t::count(&_data); + } + + /// Status of the queue + bool empty() { + return size() == 0; + } + + bool full() const { return false; } + + /// Blocking read + void read(__STREAM_T__& head) { + head = read(); + } + + /// Blocking read + bool read_dep(__STREAM_T__& head, volatile bool flag) { + head = read(); + return flag; + } + + __STREAM_T__ read() { + __STREAM_T__ elem; + auto &entity = map_t::get_entity(&_data); + if (!entity.read(&elem)) + elem = __STREAM_T__(); + return elem; + } + + /// Blocking write + void write(const __STREAM_T__& tail) { + map_t::get_entity(&_data).write(&tail); + } + + /// Blocking write + bool write_dep(const __STREAM_T__& tail, volatile bool flag) { + write(tail); + return flag; + } + + /// Nonblocking read + bool read_nb(__STREAM_T__& head) { + __STREAM_T__ elem; + auto &entity = map_t::get_entity(&_data); + bool not_empty = entity.read_nb(&elem); + if (not_empty) + head = elem; + return not_empty; + } + + /// Nonblocking write + bool write_nb(const __STREAM_T__& tail) { + bool is_full = full(); + write(tail); + return !is_full; + } + + /// Fifo size + size_t size() { + return map_t::get_entity(&_data).size(); + } + + /// Set name for c-sim debugging. + void set_name(const char *name) { + map_t::get_entity(&_data).set_name(name); + } + + void set_delegate(stream_delegate *d) { + map_t::get_entity(&_data).d = d; + } +}; + +template +class stream : public stream<__STREAM_T__, 0> { +public: + stream() {} + stream(const char* name) : stream<__STREAM_T__, 0>(name) {} +}; + +} // namespace hls + +#endif // __cplusplus +#endif // X_HLS_STREAM_THREAD_UNSAFE_SIM_H + + diff --git a/vitis/v2021_2/hls_streamofblocks.h b/vitis/v2021_2/hls_streamofblocks.h new file mode 100755 index 00000000..9b8c3c9a --- /dev/null +++ b/vitis/v2021_2/hls_streamofblocks.h @@ -0,0 +1,357 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef X_HLS_STREAMOFBLOCKS_H +#define X_HLS_STREAMOFBLOCKS_H + +#ifndef __cplusplus +#error C++ is required to include this header file +#else + +#ifdef __SYNTHESIS__ +#include "etc/autopilot_ssdm_op.h" +#else +#include +#include +#include +#include +#include +#endif + +#ifndef INLINE +#define INLINE inline __attribute__((always_inline)) +#endif + +#ifndef __has_attribute +#define __has_attribute(x) 0 // Compatibility with non-clang compilers. +#endif + +#if __has_attribute(no_ctor) +#define NO_CTOR __attribute__((no_ctor)) +#else +#define NO_CTOR +#endif + +namespace hls { +template +class stream_buf { +#ifdef __SYNTHESIS__ + __STREAM_T__ data NO_CTOR; +#else + std::string name; + std::deque<__STREAM_T__*> data; + int readLocks; + int writeLocks; + bool checkMultiple; +#endif + + public: + INLINE stream_buf( + int depth +#ifndef __SYNTHESIS__ + , + const char *n +#endif + ) +#ifndef __SYNTHESIS__ + : name(n ? n : "stream_of_blocks"), readLocks(0), writeLocks(0), checkMultiple(true) +#endif + { +#ifdef __SYNTHESIS__ + _ssdm_op_SpecChannel("data", 0, "", "", depth, depth * sizeof(__STREAM_T__), data, data); + _ssdm_op_SpecPipoDepth(data, depth, ""); + _ssdm_op_SpecInterface(data, "mem_fifo", 0, 0, "", 0, 0, "", "", "", 2, 2, 16, 16, "", ""); +#endif + } + +#ifndef __SYNTHESIS__ + INLINE void allow_multiple_locks() { checkMultiple = false; } +#endif + +#ifndef __SYNTHESIS__ + void write_check() { + if (writeLocks <= 0) { + std::cerr << "ERROR: writing " << name << " before acquiring." << std::endl; + abort(); + } + } + void read_check() { + if (readLocks <= 0) { + std::cerr << "ERROR: reading " << name << " before acquiring." << std::endl; + abort(); + } + } +#endif + + INLINE __STREAM_T__& read_acquire() { +#ifdef __SYNTHESIS__ + _ssdm_op_ReadReq(data, 2); + return data; +#else + if (checkMultiple && readLocks > 0) { + std::cerr << "ERROR: acquiring " << name << " for reading more than once before releasing. Use braces to limit the lifetime of the lock object." << std::endl; + abort(); + } + readLocks++; + + if (data.empty()) { + std::cerr << "ERROR: Reading from empty stream-of-blocks " << name << " (returning garbage data)" << std::endl; + return *new __STREAM_T__[1]; + } else { + return *data.front(); + } +#endif + } + + INLINE void read_release() { +#ifdef __SYNTHESIS__ + _ssdm_op_Read(data, 2); +#else + readLocks--; + if (checkMultiple && readLocks != 0) { + std::cerr << "INTERNAL ERROR: releasing " << name << " for reading too many times." << std::endl; + abort(); + } + data.pop_front(); +#endif + } + + INLINE __STREAM_T__& write_acquire() { +#ifdef __SYNTHESIS__ + _ssdm_op_WriteReq(data, 2); + return data; +#else + if (checkMultiple && writeLocks > 0) { + std::cerr << "ERROR: acquiring " << name << " for writing more than once before releasing. Use braces to limit the lifetime of the lock object." << std::endl; + abort(); + } + writeLocks++; + + data.push_back(new __STREAM_T__[1]); + return *data.back(); +#endif + } + + INLINE void write_release() { +#ifdef __SYNTHESIS__ + _ssdm_op_Write(data, 2); +#else + writeLocks--; + if (checkMultiple && writeLocks != 0) { + std::cerr << "INTERNAL ERROR: releasing " << name << " for writing too many times." << std::endl; + abort(); + } +#endif + } + + INLINE bool empty() const { +#ifdef __SYNTHESIS__ + // connected to empty_n + return !_ssdm_op_NbReadReq(data, 2); +#else + return data.empty(); +#endif + } + + INLINE bool full() const { +#ifdef __SYNTHESIS__ + // connected to full_n + return !_ssdm_op_NbWriteReq(data, 2); +#else + return false; +#endif + } + +#ifdef EXPLICIT_ACQUIRE_RELEASE + template + friend class read_buf; + template + friend class write_buf; +#endif + + template + friend class read_lock; + template + friend class write_lock; +}; + +template +class stream_of_blocks; + +#ifdef EXPLICIT_ACQUIRE_RELEASE +template +class read_buf { + stream_of_blocks<__STREAM_T__>& res; + __STREAM_T__* buf; + + public: + INLINE read_buf(stream_of_blocks<__STREAM_T__>& s) : res(s) { +#ifdef __SYNTHESIS__ + buf = &(res.buf.data); + _ssdm_op_SpecInterface(res.buf.data, "mem_fifo", 0, 0, "", 0, 0, "", "", "", 2, 2, 16, 16, "", ""); +#else + res.allow_multiple_locks(); +#endif + } + + INLINE void acquire() { + buf = &res.read_acquire(); + } + + INLINE void release() { + res.read_release(); + } + + INLINE ~read_buf() { } + + operator __STREAM_T__&() { +#ifndef __SYNTHESIS__ + res.buf.read_check(); +#endif + return *buf; + } + + INLINE __STREAM_T__& operator=(const __STREAM_T__& val) { +#ifndef __SYNTHESIS__ + res.buf.read_check(); +#endif + buf = &val; + return *buf; + } +}; + +template +class write_buf { + stream_of_blocks<__STREAM_T__>& res; + __STREAM_T__* buf; + + public: + write_buf(stream_of_blocks<__STREAM_T__>& s) : res(s) { +#ifdef __SYNTHESIS__ + buf = &(res.buf.data); + _ssdm_op_SpecInterface(res.buf.data, "mem_fifo", 0, 0, "", 0, 0, "", "", "", 2, 2, 16, 16, "", ""); +#else + res.allow_multiple_locks(); +#endif + } + + INLINE void acquire() { + buf = &res.write_acquire(); + } + + INLINE void release() { + res.write_release(); + } + + INLINE ~write_buf() { } + + INLINE operator __STREAM_T__&() { +#ifndef __SYNTHESIS__ + res.buf.write_check(); +#endif + return *buf; + } + + INLINE __STREAM_T__& operator=(const __STREAM_T__& val) { +#ifndef __SYNTHESIS__ + res.buf.write_check(); +#endif + buf = &val; + return *buf; + } +}; +#endif + +template +class read_lock { + stream_of_blocks<__STREAM_T__>& res; + __STREAM_T__& buf; + + public: + INLINE read_lock(stream_of_blocks<__STREAM_T__>& s) : res(s), buf(res.read_acquire()) { +#ifdef __SYNTHESIS__ + _ssdm_op_SpecInterface(res.buf.data, "mem_fifo", 0, 0, "", 0, 0, "", "", "", 2, 2, 16, 16, "", ""); +#endif + } + + INLINE ~read_lock() { res.read_release(); } + + INLINE operator __STREAM_T__&() { return buf; } + + INLINE __STREAM_T__& operator=(const __STREAM_T__& val) { return buf = val; } +}; + +template +class write_lock { + stream_of_blocks<__STREAM_T__>& res; + __STREAM_T__& buf; + + public: + INLINE write_lock(stream_of_blocks<__STREAM_T__>& s) : res(s), buf(res.write_acquire()) { +#ifdef __SYNTHESIS__ + _ssdm_op_SpecInterface(res.buf.data, "mem_fifo", 0, 0, "", 0, 0, "", "", "", 2, 2, 16, 16, "", ""); +#endif + } + + INLINE ~write_lock() { res.write_release(); } + + INLINE operator __STREAM_T__&() { return buf; } + + INLINE __STREAM_T__& operator=(const __STREAM_T__& val) { return buf = val; } +}; + +template +class stream_of_blocks<__STREAM_T__, 2> { +#ifdef EXPLICIT_ACQUIRE_RELEASE + friend class read_buf<__STREAM_T__>; + friend class write_buf<__STREAM_T__>; +#endif + friend class read_lock<__STREAM_T__>; + friend class write_lock<__STREAM_T__>; + + stream_buf<__STREAM_T__> buf; + + public: + INLINE stream_of_blocks(int depth=2, char *name=0): buf( +#ifdef __SYNTHESIS__ + depth) { } +#else + depth, name) { } +#endif + + INLINE bool full() { return buf.full(); } + + INLINE bool empty() { return buf.empty(); } + +#ifndef __SYNTHESIS__ + INLINE void allow_multiple_locks() { buf.allow_multiple_locks(); } +#endif + + + private: + INLINE __STREAM_T__& read_acquire() { return buf.read_acquire(); } + + INLINE void read_release() { buf.read_release(); } + + INLINE __STREAM_T__& write_acquire() { return buf.write_acquire(); } + + INLINE void write_release() { buf.write_release(); } + + //__STREAM_T__& read(); TBD + //void write(const __STREAM_T__&); TBD +}; + +template +class stream_of_blocks: public stream_of_blocks<__STREAM_T__, 2> { +#ifdef EXPLICIT_ACQUIRE_RELEASE + friend class read_buf<__STREAM_T__>; + friend class write_buf<__STREAM_T__>; +#endif + friend class read_lock<__STREAM_T__>; + friend class write_lock<__STREAM_T__>; + + public: + INLINE stream_of_blocks(): stream_of_blocks<__STREAM_T__, 2>(DEPTH) {} +}; + +} +#endif +#endif diff --git a/vitis/v2021_2/hls_task.h b/vitis/v2021_2/hls_task.h new file mode 100755 index 00000000..0a2f90c5 --- /dev/null +++ b/vitis/v2021_2/hls_task.h @@ -0,0 +1,189 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef X_HLS_TASK_H +#define X_HLS_TASK_H +#include +#ifdef __SYNTHESIS__ +#include "hls_stream.h" +namespace hls { +class KPN_region; + +class task { + friend KPN_region; + int tag; +public: + template + task(T &&fn, Args&&... args) { + #pragma HLS inline + __attribute__((xlx_task(&tag)))fn(args...); + } +}; + +class KPN_task { + friend KPN_region; + int tag; +public: + template + KPN_task(T &&fn, Args&&... args) { + #pragma HLS inline + __attribute__((xlx_infinite_task(&tag))) fn(args...); + } +}; + +typedef task KPN_sub_region; + +class KPN_region { +public: + template + KPN_region(Args&&... args) { + #pragma HLS inline + add_tasks(args...); + } + +private: + int tag; + void add_tasks() { + #pragma HLS inline + } + template + void add_tasks(task &t, Args&&... args) { + #pragma HLS inline + __fpga_add_task(&tag, &t.tag); + add_tasks(args...); + } + + template + void add_tasks(KPN_task &t, Args&&... args) { + #pragma HLS inline + __fpga_add_task(&tag, &t.tag); + add_tasks(args...); + } + +}; + +template +hls::stream &createChannel() { +#pragma HLS inline + hls::stream s; + return s; +} + +typedef task IO_task; +typedef KPN_region task_region; + +} +#else +#include +#include +#include +#include +#ifdef X_HLS_STREAM_SIM_H +#error "Don't include hls_stream.h before hls_task.h" +#endif +#define HLS_STREAM_THREAD_SAFE_EXPERIMENTAL 1 +#include "hls_stream_thread_unsafe.h" +namespace hls { +class KPN_region; +class KPN_task { + friend KPN_region; +public: + template + KPN_task(T fn, Args&&... args) : wait_for_notify(false), ready(false) { + auto t_wrapper = [&] (T fn1, Args... args1) { // A wrapper to add while(1) around the real task function. + std::unique_lock lck(m); + wait_for_notify.store(true, std::memory_order_release); + start_cv.wait(lck); + ready.store(true, std::memory_order_release); + while(1) { + fn1(args1...); + } + }; + std::thread tmp(t_wrapper, fn, std::ref(args)...); + t = std::move(tmp); + } +private: + std::thread t; + std::condition_variable start_cv; + std::atomic wait_for_notify; + std::atomic ready; + std::mutex m; +}; + +class task { + friend KPN_region; +public: + template + task(T fn, Args&&... args) : wait_for_notify(false), ready(false) { + auto t_wrapper = [&] (T fn1, Args... args1) { // A wrapper to add while(1) around the real task function. + std::unique_lock lck(m); + wait_for_notify.store(true, std::memory_order_release); + start_cv.wait(lck); + ready.store(true, std::memory_order_release); + fn1(args1...); + }; + std::thread tmp(t_wrapper, fn, std::ref(args)...); + t = std::move(tmp); + } + +private: + std::thread t; + std::condition_variable start_cv; + std::atomic wait_for_notify; + std::atomic ready; + std::mutex m; +}; + +typedef task KPN_sub_region; + +class KPN_region { +public: + template + KPN_region(Args&&... args) { + // Add tasks to region + add_task(args...); + for (std::thread &t : task_vec) + t.join(); + + for (std::thread &t : KPN_task_vec) + t.detach(); + } + +private: + void add_task() {} + template + void add_task(KPN_task &t, Args&&... args) { + while (!t.wait_for_notify.load(std::memory_order_acquire)) ; + std::unique_lock lck(t.m); + lck.unlock(); + t.start_cv.notify_all(); + while (!t.ready.load(std::memory_order_acquire)) ; + KPN_task_vec.push_back(std::move(t.t)); + add_task(args...); + } + + template + void add_task(task &t, Args&&... args) { + while (!t.wait_for_notify.load(std::memory_order_acquire)) ; + std::unique_lock lck(t.m); + lck.unlock(); + t.start_cv.notify_all(); + while (!t.ready.load(std::memory_order_acquire)) ; + task_vec.push_back(std::move(t.t)); + add_task(args...); + } + + std::vector task_vec; + std::vector KPN_task_vec; +}; + +template +hls::stream &createChannel() { + auto *Ty = new hls::stream(); + return *Ty; +} + +typedef task IO_task; +typedef KPN_region task_region; + +} +#endif +#endif diff --git a/vitis/v2021_2/hls_tgamma_apfixed.h b/vitis/v2021_2/hls_tgamma_apfixed.h new file mode 100755 index 00000000..144e31a7 --- /dev/null +++ b/vitis/v2021_2/hls_tgamma_apfixed.h @@ -0,0 +1,72 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012-2017 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ +#ifndef _X_HLS_TGAMMA_APFIXED_H_ +#define _X_HLS_TGAMMA_APFIXED_H_ +#include "ap_fixed.h" +#include "ap_int.h" +//#include "hls_tgamma_generic.h" +#include "utils/x_hls_defines.h" +#include "utils/x_hls_traits.h" +#include "utils/x_hls_utils.h" + +namespace tgamma_fixed { + +template ap_fixed tgamma_generic(ap_fixed x_fixed) { +#pragma HLS pipeline + + double x = x_fixed.to_double(); + double r = hls::tgamma(x); + fp_struct out(r); + ap_ufixed ret = 1; + int F = W - I; + if (F > 52) F = 52; + if (W > I) ret(F - 1, 0) = out.sig(52 - 1, 52 - F); + ret = (ret << (out.exp - fp_struct::EXP_BIAS)); + return ap_fixed(ret); +} + +template ap_ufixed tgamma_generic(ap_ufixed x) { + ap_fixed xf = x; + return tgamma_generic(xf); +} +template ap_int tgamma_generic(ap_int x) { + ap_fixed xf = x; + return tgamma_generic(xf); +} +template ap_uint tgamma_generic(ap_uint x) { + ap_fixed xf = x; + return tgamma_generic(xf); +} + +} // tgamma_fixed + +#endif diff --git a/vitis/v2021_2/hls_vector.h b/vitis/v2021_2/hls_vector.h new file mode 100755 index 00000000..386653e0 --- /dev/null +++ b/vitis/v2021_2/hls_vector.h @@ -0,0 +1,280 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +#ifndef __HLS_VECTOR_H__ +#define __HLS_VECTOR_H__ + +#include +#include +#include +#include + +namespace hls { + +#ifdef __SYNTHESIS__ +#define SYN_PRAGMA(PRAG) _Pragma(#PRAG) +#else +#define SYN_PRAGMA(PRAG) +#endif + +#ifndef INLINE +#define INLINE [[gnu::always_inline]] +#endif + +namespace details { + +/// Returns the greatest power of two that divides N +constexpr size_t gp2(size_t N) { + if (N == 0) + return 0; + if (N % 2 != 0) + return 1; + return 2 * gp2(N / 2); +} + +} // namespace details + +/// SIMD Vector of `N` elements of type `T` +template +class alignas(details::gp2(sizeof(T) * N)) vector { + static_assert(N > 0, "vector must have at least one element"); + + using data_t = std::array; + data_t data; + +public: +#define USING_TYPE(NAME) using NAME = typename data_t::NAME + /// Member types + USING_TYPE(value_type); + USING_TYPE(size_type); + USING_TYPE(difference_type); + USING_TYPE(reference); + USING_TYPE(const_reference); + USING_TYPE(pointer); + USING_TYPE(const_pointer); + USING_TYPE(iterator); + USING_TYPE(const_iterator); + USING_TYPE(reverse_iterator); + USING_TYPE(const_reverse_iterator); +#undef USING_TYPE + +#define MUTABLE_MEMBER(RET, NAME) \ + RET NAME() { \ + pragma(); \ + return data.NAME(); \ + } + +#define CONST_MEMBER(RET, NAME) \ + RET NAME() const { \ + pragma(); \ + return data.NAME(); \ + } + + MUTABLE_MEMBER(iterator, begin) + MUTABLE_MEMBER(iterator, end) + MUTABLE_MEMBER(reverse_iterator, rbegin) + MUTABLE_MEMBER(reverse_iterator, rend) + CONST_MEMBER(const_iterator, begin) + CONST_MEMBER(const_iterator, end) + CONST_MEMBER(const_iterator, cbegin) + CONST_MEMBER(const_iterator, cend) + CONST_MEMBER(const_reverse_iterator, rbegin) + CONST_MEMBER(const_reverse_iterator, rend) + CONST_MEMBER(const_reverse_iterator, crbegin) + CONST_MEMBER(const_reverse_iterator, crend) + + CONST_MEMBER(bool, empty) + CONST_MEMBER(size_type, size) + CONST_MEMBER(size_type, max_size) + +#undef MUTABLE_MEMBER +#undef CONST_MEMBER + +protected: + /// Pragma setter (hack until we support pragma on types) + /// Note: must be used on all functions if possible + INLINE void pragma() const { + SYN_PRAGMA(HLS AGGREGATE variable=this) + } + +public: + /// Default constructor (trivial) + vector() = default; + /// Copy-constructor (trivial) + vector(const vector &other) = default; + /// Move-constructor (trivial) + vector(vector &&other) = default; + /// Copy-assignment operator (trivial) + vector &operator=(const vector &other) = default; + /// Move-assignment operator (trivial) + vector &operator=(vector &&other) = default; + /// Destructor (trivial) + ~vector() = default; + + /// Note: all the above special member functions must be trivial, + /// as we want this class to be usable in union (POD requirement). + + /// Construct from T (scalar) + INLINE vector(const T &val) { + pragma(); + for (size_t i = 0; i < N; ++i) { + SYN_PRAGMA(HLS UNROLL) + data[i] = val; + } + } + + /// Construct from std::array + INLINE vector(const std::array &data) : data{data} { + pragma(); + } + + /// Construct from std::initializer_list + INLINE vector(std::initializer_list l) { + pragma(); + assert(l.size() == N && + "Initializer list must be the same size as the vector"); + for (size_t i = 0; i < N; ++i) { + SYN_PRAGMA(HLS UNROLL) + data[i] = l.begin()[i]; + } + } + + /// Array-like operator[] + INLINE T &operator[](size_t idx) { + pragma(); + return data[idx]; + } + INLINE const T &operator[](size_t idx) const { + pragma(); + return data[idx]; + } + +#define INPLACE_PREUNOP(OP) \ + INLINE vector &operator OP() { \ + pragma(); \ + for (size_t i = 0; i < N; ++i) { \ + SYN_PRAGMA(HLS UNROLL) \ + OP data[i]; \ + } \ + return *this; \ + } + + INPLACE_PREUNOP(++) + INPLACE_PREUNOP(--) + +#undef INPLACE_PREUNOP + +#define INPLACE_POSTUNOP(OP) \ + INLINE vector operator OP(int) { \ + pragma(); \ + vector orig = *this; \ + OP *this; \ + return orig; \ + } + + INPLACE_POSTUNOP(++) + INPLACE_POSTUNOP(--) + +#undef INPLACE_POSTUNOP + +#define INPLACE_BINOP(OP) \ + INLINE vector &operator OP(const vector &rhs) { \ + pragma(); \ + rhs.pragma(); \ + for (size_t i = 0; i < N; ++i) { \ + SYN_PRAGMA(HLS UNROLL) \ + data[i] OP rhs[i]; \ + } \ + return *this; \ + } + + INPLACE_BINOP(+=) + INPLACE_BINOP(-=) + INPLACE_BINOP(*=) + INPLACE_BINOP(/=) + INPLACE_BINOP(%=) + INPLACE_BINOP(&=) + INPLACE_BINOP(|=) + INPLACE_BINOP(^=) + INPLACE_BINOP(<<=) + INPLACE_BINOP(>>=) + +#undef INPLACE_BINOP + +#define REDUCE_OP(NAME, OP) \ + INLINE T reduce_##NAME() const { \ + pragma(); \ + T res = data[0]; \ + for (size_t i = 1; i < N; ++i) { \ + SYN_PRAGMA(HLS UNROLL) \ + res OP data[i]; \ + } \ + return res; \ + } + + REDUCE_OP(add, +=) + REDUCE_OP(mult, *=) + REDUCE_OP(and, &=) + REDUCE_OP(or, |=) + REDUCE_OP(xor, ^=) + +#undef REDUCE_OP + +#define LEXICO_OP(OP) \ + INLINE friend bool operator OP(const vector &lhs, const vector &rhs) { \ + lhs.pragma(); \ + rhs.pragma(); \ + for (size_t i = 0; i < N; ++i) { \ + SYN_PRAGMA(HLS UNROLL) \ + if (lhs[i] == rhs[i]) \ + continue; \ + return lhs[i] OP rhs[i]; \ + } \ + return T{} OP T{}; \ + } + +#define COMPARE_OP(OP) \ + INLINE friend vector operator OP(const vector &lhs, \ + const vector &rhs) { \ + lhs.pragma(); \ + rhs.pragma(); \ + vector res; \ + for (size_t i = 0; i < N; ++i) { \ + SYN_PRAGMA(HLS UNROLL) \ + res[i] = lhs[i] OP rhs[i]; \ + } \ + return res; \ + } + + LEXICO_OP(<) + LEXICO_OP(<=) + LEXICO_OP(==) + LEXICO_OP(!=) + LEXICO_OP(>=) + LEXICO_OP(>) + +#undef LEXICO_OP +#undef COMPARE_OP + +#define BINARY_OP(OP, INPLACE_OP) \ + INLINE friend vector operator OP(vector lhs, const vector &rhs) { \ + lhs.pragma(); \ + rhs.pragma(); \ + return lhs INPLACE_OP rhs; \ + } + + BINARY_OP(+, +=) + BINARY_OP(-, -=) + BINARY_OP(*, *=) + BINARY_OP(/, /=) + BINARY_OP(%, %=) + BINARY_OP(&, &=) + BINARY_OP(|, |=) + BINARY_OP(^, ^=) + BINARY_OP(<<, <<=) + BINARY_OP(>>, >>=) + +#undef BINARY_OP +}; + +} // namespace hls + +#endif diff --git a/vitis/v2021_2/hls_x_complex.h b/vitis/v2021_2/hls_x_complex.h new file mode 100755 index 00000000..35be1ae4 --- /dev/null +++ b/vitis/v2021_2/hls_x_complex.h @@ -0,0 +1,368 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef HLS_X_COMPLE_H +#define HLS_X_COMPLE_H + +#ifndef __SYNTHESIS__ +#include +#endif + +#include "ap_fixed.h" + +namespace std { +template class complex; +} + +namespace hls { + +/* +******************************************************************************* +* Complex class +* +* This is used over std:: for the following reasons. +* 1. auto initializes all variables which forces an auto-initialization +* loop to be inserted for every declaration of an array of complex data +* 2. Using std:: as base class leads to compilation errors. +******************************************************************************* +*/ + +template class x_complex { + + private: + T re, im; + + public: + // Multiply return type + typedef x_complex MULT_RT; + // Constructors + x_complex() {}; + x_complex(const T& r, const T& i) { re = r; im = i; }; + x_complex(const T& r) { re = r; im = 0; }; + x_complex(const std::complex &z) : re(z.real()),im(z.imag()) {} + template + x_complex(const x_complex &z) : re(z.real()),im(z.imag()) {}; + + // Data access + inline T real() const { return(re); }; + inline T& real() { return(re); }; + + inline void real(const T& r) { re = r; }; + + inline T imag() const { return(im); }; + inline T& imag() { return(im); }; + + inline void imag(const T& i) { im = i; }; + + // Operator = + inline x_complex& operator= (const T& rhs) { + re = rhs; im = 0; return *this; }; + inline x_complex& operator= (const x_complex& rhs) { + re = rhs.real(); im = rhs.imag(); return *this; }; + template + inline x_complex& operator= (const x_complex& rhs) { + re = rhs.real(); im = rhs.imag(); return *this; }; + + // Operator *=, * + inline x_complex& operator*= (const T& rhs) { + re *= rhs; + im *= rhs; + return *this; + }; + inline x_complex& operator*= (const x_complex& rhs) { + T tmp1 = re*rhs.real(); + T tmp2 = im*rhs.imag(); + T tmp3 = re*rhs.imag(); + T tmp4 = im*rhs.real(); + re = tmp1 - tmp2; + im = tmp3 + tmp4; + return *this; + }; + template + inline x_complex& operator*= (const x_complex& rhs) { + x_complex tmp(rhs.real(), rhs.imag()); + *this *= tmp; + return *this; + }; + + inline MULT_RT operator* (const T& rhs) { + x_complex_mult_real:; + x_complex tmp(*this); + tmp *= rhs; + return tmp; + }; + inline MULT_RT operator* (const x_complex& rhs) { + x_complex_mult_complex:; + x_complex tmp(*this); + tmp *= rhs; + return tmp; + } + template + inline MULT_RT operator* (const x_complex& rhs) { + x_complex_mult_complex:; + x_complex tmp(rhs.real(), rhs.imag()); + MULT_RT res = *this * tmp; + return res; + }; + + // Operator /=, / + inline x_complex& operator/= (const T& rhs) {; + re /= rhs; + im /= rhs; + return *this; + }; + inline x_complex& operator/= (const x_complex& rhs) { + x_complex conj ( rhs.real(), -rhs.imag()); + x_complex a = (*this)*conj; + x_complex b = conj*rhs; + re = a.real() / b.real(); + im = a.imag() / b.real(); + return *this; + }; + template + inline x_complex& operator/= (const x_complex& rhs) { + x_complex tmp(rhs.real(), rhs.imag()); + *this /= tmp; + return *this; + }; + + inline x_complex operator/ (const T& rhs) { + x_complex tmp(*this); + tmp /= rhs; return tmp; + }; + inline x_complex operator/ (const x_complex& rhs) { + x_complex tmp(*this); + tmp /= rhs; + return tmp; + }; + template + inline x_complex operator/ (const x_complex& rhs) { + x_complex tmp(*this); + tmp /= rhs; + return tmp; + }; + + // Operator +=, + + inline x_complex& operator+= (const T& rhs) { + re += rhs; + return *this; + }; + inline x_complex operator+= (const x_complex& rhs) { + re += rhs.real(); + im += rhs.imag(); + return *this; + }; + template + inline x_complex operator+= (const x_complex& rhs) { + re += rhs.real(); + im += rhs.imag(); + return *this; }; + + inline x_complex operator+ (const T& rhs) { + x_complex tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + inline x_complex operator+ (const x_complex& rhs) { + x_complex tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + template + inline x_complex operator+ (const x_complex& rhs) { + x_complex tmp ; + tmp = *this; + tmp += rhs; + return tmp; + }; + + + // Operator -=, - + inline x_complex& operator-= (const T& rhs) { + re -= rhs; + return *this; + } + inline x_complex& operator-= (const x_complex& rhs) { + re -= rhs.real(); + im -= rhs.imag(); + return *this; + }; + template + inline x_complex& operator-= (const x_complex& rhs) { + re -= rhs.real(); + im -= rhs.imag(); + return *this; + }; + + inline x_complex operator- (const T& rhs) { + x_complex tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + inline x_complex operator- (const x_complex& rhs) { + x_complex tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + template + inline x_complex operator- (const x_complex& rhs) { + x_complex tmp ; + tmp = *this; + tmp -= rhs; + return tmp; + }; + // neg + inline x_complex operator- () { + x_complex tmp(*this); + tmp.real(-real()); + tmp.imag(-imag()); + return tmp; + }; + + // std::x_complex --> hls::x_complex + x_complex &operator=(const std::complex &t) { + re = t.real(); + im = t.imag(); + return *this; + } + // hls::x_complex --> std::x_complex + operator std::complex () const { + return std::complex(re, im); + } + + std::complex to_std_complex(){ + return std::complex(re ,im); + } + +#ifndef __SYNTHESIS__ + // Operator << + friend std::ostream &operator<<(std::ostream &out, const x_complex &c) { + bool neg_imag = c.imag() <= -0 ? true : false; + T imag = neg_imag ? (T)-c.imag() : (T)c.imag(); + + out << c.real() << (neg_imag ? " - j*":" + j*") << imag; + return out; + } +#endif + + }; // x_complex + + // Non-member Operator ==, != for x_complex + template + inline bool operator== (const T& lhs, const x_complex& rhs) { + return (lhs == rhs.real()) && (0 == rhs.imag()); + } + template + inline bool operator== (const x_complex& lhs, const T& rhs) { + return (lhs.real() == rhs) && (lhs.imag() == 0); + } + template + inline bool operator== (const x_complex& lhs, const x_complex& rhs) { + return (lhs.real() == rhs.real()) && (lhs.imag() == rhs.imag()); + } + + template + inline bool operator!= (const T& lhs, const x_complex& rhs) { + return (lhs != rhs.real()) || (0 != rhs.imag()); + } + template + inline bool operator!= (const x_complex& lhs, const T& rhs) { + return (lhs.real() != rhs) || (lhs.imag() != 0); + } + template + inline bool operator!= (const x_complex& lhs, const x_complex& rhs) { + return (lhs.real() != rhs.real()) || (lhs.imag() != rhs.imag()); + } + + template + x_complex x_neg(x_complex &din) { + x_complex tmp; + tmp.real(-din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + template + x_complex x_conj_sq(x_complex &din) { + x_conj_sq_complex:; + return ( (din.real()*din.real()) + (din.imag()*din.imag())); + } + + template + x_complex x_conj(const x_complex &din) { + x_conj_complex:; + x_complex tmp; + tmp.real(din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + // This function is called when a non-const x_complex is conjugated. It calls the + // version of x_conj() which takes a constant parameter + template + x_complex x_conj(x_complex &din) { + const x_complex tmp = din; + return(x_conj(tmp)); + } + + template void set_to_one(x_complex > &a) { + ap_int tmp_sat = ((ap_int)1<<(W-I)) - 1; + ap_fixed tmp; + tmp.range() = tmp_sat; + a = tmp; + } + + template + T x_real(const x_complex &din) { + return(din.real()); + } + + template + T x_imag(const x_complex &din) { + return(din.imag()); + } + + template + typename x_complex::MULT_RT operator* (const T1& lhs, x_complex& rhs) { + return (rhs*lhs); // Flip direction and re-use complex class defined operator + } + +} // end namespace hls + +#endif + + + diff --git a/vitis/v2021_2/hlsgraph.h b/vitis/v2021_2/hlsgraph.h new file mode 100755 index 00000000..ac05dd44 --- /dev/null +++ b/vitis/v2021_2/hlsgraph.h @@ -0,0 +1,59 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file hlsgraph.h + * @brief Top-level header for HLS graph library. + */ + +#ifndef _X_HLSGRAPH_H_ +#define _X_HLSGRAPH_H_ + +#ifndef WARN_DEPR_GRAPH +#define WARN_DEPR_GRAPH +#warning Graph Lib is deprecated in Vitis HLS, and will be removed in Release 2022.1. Please consider the Vitis Graph Library (https://github.com/Xilinx/Vitis_Libraries). +#endif + +// shared infrastructure +//#include "hls_db/types.h" +#include "hlsgraph/utils.h" + +// function modules +#include "hlsgraph/PageRank.h" +#include "hlsgraph/ConnectedComponents.h" + +#endif // ifndef _X_HLSGRAPH_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/hlsgraph/ConnectedComponents.h b/vitis/v2021_2/hlsgraph/ConnectedComponents.h new file mode 100755 index 00000000..026c863f --- /dev/null +++ b/vitis/v2021_2/hlsgraph/ConnectedComponents.h @@ -0,0 +1,74 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file ConnectedComponent.h + * @brief Connected Component function implementation. + * + * This file is part of HLS graph library. + */ + +#ifndef _X_HLSGRAPH_H_ +#error \ + "hlsgraph/ConnectedComponent.h should not be inlcuded directly, use top-level hlsgraph.h instead!" +#endif + +// ConnectedComponent.h +#ifndef _X_HLSGRAPH_CONNECTEDCOMPONENT_H_ +#define _X_HLSGRAPH_CONNECTEDCOMPONENT_H_ + +#if defined(__cplusplus) && (__cplusplus >= 201402L) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + [[deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")]] +#elif defined(__GNUC__) || defined(__clang__) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __attribute__((deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead."))) +#elif defined(_MSC_VER) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __declspec(deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")) +#else +#error("Unsupported compiler") +#endif + +namespace hlsgraph { + +HLS_DEPRECATED_FUNC(2022.1, xf::graph::connectedComponents from Vitis Graph) +void ConnectedComponent( + edge_t edges[NUM_EDGES], // a set of non-directional edges between edges[e].src and edges[e].dst + unsigned int comp_out[NUM_VERTICES] // pagerank output +) + +} // namespace hlsgraph + +#endif // ifndef _HLSGRAPH_CONNECTEDCOMPONENT_H_ + + diff --git a/vitis/v2021_2/hlsgraph/PageRank.h b/vitis/v2021_2/hlsgraph/PageRank.h new file mode 100755 index 00000000..8f662c13 --- /dev/null +++ b/vitis/v2021_2/hlsgraph/PageRank.h @@ -0,0 +1,79 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file PageRank.h + * @brief PageRank function implementation. + * + * This file is part of HLS graph library. + */ + +#ifndef _X_HLSGRAPH_H_ +#error \ + "hlsgraph/PageRank.h should not be inlcuded directly, use top-level hlsgraph.h instead!" +#endif + +// PageRank.h +#ifndef _X_HLSGRAPH_PAGERANK_H_ +#define _X_HLSGRAPH_PAGERANK_H_ + +#if defined(__cplusplus) && (__cplusplus >= 201402L) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + [[deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")]] +#elif defined(__GNUC__) || defined(__clang__) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __attribute__((deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead."))) +#elif defined(_MSC_VER) +#define HLS_DEPRECATED_FUNC(removal, replacement) \ + __declspec(deprecated("It will be removed from HLS in Release " #removal ", please consider using " #replacement " instead.")) +#else +#error("Unsupported compiler") +#endif + +#define ALPHA 0.85 // default alpha, the pagerank damping factor +#define CONVERGENCE 0.00001 // default convergence +#define MAX_ITERATIONS 10000 // default max iterations +#define SOURCE 0 // source vertex for a personalized PageRank + +namespace hlsgraph { + +HLS_DEPRECATED_FUNC(2022.1, xf::graph::pageRankTop from Vitis Graph) +void PageRank( + edge_t edges[NUM_EDGES], // a set of directional edges from edges[e].src to edges[e].dst + double pr_out[NUM_VERTICES] // pagerank output +); + +} // namespace hlsgraph + +#endif // ifndef _HLSGRAPH_PAGERANK_H_ + + diff --git a/vitis/v2021_2/hlsgraph/utils.h b/vitis/v2021_2/hlsgraph/utils.h new file mode 100755 index 00000000..a8fa1b56 --- /dev/null +++ b/vitis/v2021_2/hlsgraph/utils.h @@ -0,0 +1,67 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2018 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file utils.h + * @brief This file is part of HLS graph library, contains utilities. + */ + +#ifndef _X_HLSGRAPH_H_ +#error "hlsgraph/utils.h should not be inlcuded directly, use top-level hlsgraph.h instead!" +#endif + +#ifndef _X_HLSGRAPH_UTILS_H_ +#define _X_HLSGRAPH_UTILS_H_ + +#ifndef WARN_DEPR_GRAPH +#define WARN_DEPR_GRAPH +#warning Graph Lib is deprecated in Vitis HLS, and will be removed in Release 2022.1. Please consider the Vitis Graph Library (https://github.com/Xilinx/Vitis_Libraries). +#endif + +#define NUM_VERTICES 5 +#define NUM_EDGES 5 + +namespace hlsgraph { + +struct edge_t { + unsigned int src; + unsigned int dst; +}; + +} // namespace hlsgraph + +#endif // ifndef _HLSGRAPH_PAGERANK_H_ + +// -*- cpp -*- +// vim: ts=8:sw=2:sts=2:ft=cpp + + diff --git a/vitis/v2021_2/mpfr.h b/vitis/v2021_2/mpfr.h new file mode 100755 index 00000000..122fd2f3 --- /dev/null +++ b/vitis/v2021_2/mpfr.h @@ -0,0 +1,946 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/* mpfr.h -- Include file for mpfr. + +Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Contributed by the Arenaire and Cacao projects, INRIA. + +This file is part of the GNU MPFR Library. + +The GNU MPFR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The GNU MPFR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see +http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef __MPFR_H +#define __MPFR_H + +/* Define MPFR version number */ +#define MPFR_VERSION_MAJOR 3 +#define MPFR_VERSION_MINOR 0 +#define MPFR_VERSION_PATCHLEVEL 1 +#define MPFR_VERSION_STRING "3.0.1-p4" + +/* Macros dealing with MPFR VERSION */ +#define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +#define MPFR_VERSION \ +MPFR_VERSION_NUM(MPFR_VERSION_MAJOR,MPFR_VERSION_MINOR,MPFR_VERSION_PATCHLEVEL) + +/* Check if GMP is included, and try to include it (Works with local GMP) */ +#ifndef __GMP_H__ +# include "gmp.h" +#endif + +/* Check if stdio.h is included or if the user wants FILE */ +#if defined (_GMP_H_HAVE_FILE) || defined (MPFR_USE_FILE) +# define _MPFR_H_HAVE_FILE 1 +#endif + +#if defined (_GMP_H_HAVE_VA_LIST) +# define _MPFR_H_HAVE_VA_LIST 1 +#endif + +/* Check if / is included or if the user + explicitly wants intmax_t. Automatical detection is done by + checking: + - INTMAX_C and UINTMAX_C, but not if the compiler is a C++ one + (as suggested by Patrick Pelissier) because the test does not + work well in this case. See: + http://websympa.loria.fr/wwsympa/arc/mpfr/2010-02/msg00025.html + We do not check INTMAX_MAX and UINTMAX_MAX because under Solaris, + these macros are always defined by (i.e. even when + and are not included). + - _STDINT_H (defined by the glibc) and _STDINT_H_ (defined under + Mac OS X), but this test may not work with all implementations. + Portable software should not rely on these tests. +*/ +#if (defined (INTMAX_C) && defined (UINTMAX_C) && !defined(__cplusplus)) || \ + defined (MPFR_USE_INTMAX_T) || defined (_STDINT_H) || defined (_STDINT_H_) +# define _MPFR_H_HAVE_INTMAX_T 1 +#endif + +/* Avoid some problems with macro expansion if the user defines macros + with the same name as keywords. By convention, identifiers and macro + names starting with mpfr_ are reserved by MPFR. */ +typedef void mpfr_void; +typedef int mpfr_int; +typedef unsigned int mpfr_uint; +typedef long mpfr_long; +typedef unsigned long mpfr_ulong; +typedef size_t mpfr_size_t; + +/* Definition of rounding modes (DON'T USE MPFR_RNDNA!). + Warning! Changing the contents of this enum should be seen as an + interface change since the old and the new types are not compatible + (the integer type compatible with the enumerated type can even change, + see ISO C99, 6.7.2.2#4), and in Makefile.am, AGE should be set to 0. + + MPFR_RNDU must appear just before MPFR_RNDD (see + MPFR_IS_RNDUTEST_OR_RNDDNOTTEST in mpfr-impl.h). + + MPFR_RNDF has been added, though not implemented yet, in order to avoid + to break the ABI once faithful rounding gets implemented. + + If you change the order of the rounding modes, please update the routines + in texceptions.c which assume 0=RNDN, 1=RNDZ, 2=RNDU, 3=RNDD, 4=RNDA. +*/ +typedef enum { + MPFR_RNDN=0, /* round to nearest, with ties to even */ + MPFR_RNDZ, /* round toward zero */ + MPFR_RNDU, /* round toward +Inf */ + MPFR_RNDD, /* round toward -Inf */ + MPFR_RNDA, /* round away from zero */ + MPFR_RNDF, /* faithful rounding (not implemented yet) */ + MPFR_RNDNA=-1 /* round to nearest, with ties away from zero (mpfr_round) */ +} mpfr_rnd_t; + +/* kept for compatibility with MPFR 2.4.x and before */ +#define GMP_RNDN MPFR_RNDN +#define GMP_RNDZ MPFR_RNDZ +#define GMP_RNDU MPFR_RNDU +#define GMP_RNDD MPFR_RNDD + +/* Define precision : 1 (short), 2 (int) or 3 (long) (DON'T USE IT!)*/ +#ifndef _MPFR_PREC_FORMAT +# if __GMP_MP_SIZE_T_INT == 1 +# define _MPFR_PREC_FORMAT 2 +# else +# define _MPFR_PREC_FORMAT 3 +# endif +#endif + +/* Let's make mpfr_prec_t signed in order to avoid problems due to the + usual arithmetic conversions when mixing mpfr_prec_t and mpfr_exp_t + in an expression (for error analysis) if casts are forgotten. */ +#if _MPFR_PREC_FORMAT == 1 +typedef short mpfr_prec_t; +typedef unsigned short mpfr_uprec_t; +#elif _MPFR_PREC_FORMAT == 2 +typedef int mpfr_prec_t; +typedef unsigned int mpfr_uprec_t; +#elif _MPFR_PREC_FORMAT == 3 +typedef long mpfr_prec_t; +typedef unsigned long mpfr_uprec_t; +#else +# error "Invalid MPFR Prec format" +#endif + +/* Definition of precision limits without needing */ +/* Note: the casts allows the expression to yield the wanted behavior + for _MPFR_PREC_FORMAT == 1 (due to integer promotion rules). */ +#define MPFR_PREC_MIN 2 +#define MPFR_PREC_MAX ((mpfr_prec_t)((mpfr_uprec_t)(~(mpfr_uprec_t)0)>>1)) + +/* Definition of sign */ +typedef int mpfr_sign_t; + +/* Definition of the exponent: same as in GMP. */ +typedef mp_exp_t mpfr_exp_t; + +/* Definition of the standard exponent limits */ +#define MPFR_EMAX_DEFAULT ((mpfr_exp_t) (((mpfr_ulong) 1 << 30) - 1)) +#define MPFR_EMIN_DEFAULT (-(MPFR_EMAX_DEFAULT)) + +/* Definition of the main structure */ +typedef struct { + mpfr_prec_t _mpfr_prec; + mpfr_sign_t _mpfr_sign; + mpfr_exp_t _mpfr_exp; + mp_limb_t *_mpfr_d; +} __mpfr_struct; + +/* Compatibility with previous types of MPFR */ +#ifndef mp_rnd_t +# define mp_rnd_t mpfr_rnd_t +#endif +#ifndef mp_prec_t +# define mp_prec_t mpfr_prec_t +#endif + +/* + The represented number is + _sign*(_d[k-1]/B+_d[k-2]/B^2+...+_d[0]/B^k)*2^_exp + where k=ceil(_mp_prec/GMP_NUMB_BITS) and B=2^GMP_NUMB_BITS. + + For the msb (most significant bit) normalized representation, we must have + _d[k-1]>=B/2, unless the number is singular. + + We must also have the last k*GMP_NUMB_BITS-_prec bits set to zero. +*/ + +typedef __mpfr_struct mpfr_t[1]; +typedef __mpfr_struct *mpfr_ptr; +typedef __gmp_const __mpfr_struct *mpfr_srcptr; + +/* For those who need a direct and fast access to the sign field. + However it is not in the API, thus use it at your own risk: it might + not be supported, or change name, in further versions! + Unfortunately, it must be defined here (instead of MPFR's internal + header file mpfr-impl.h) because it is used by some macros below. +*/ +#define MPFR_SIGN(x) ((x)->_mpfr_sign) + +/* Stack interface */ +typedef enum { + MPFR_NAN_KIND = 0, + MPFR_INF_KIND = 1, MPFR_ZERO_KIND = 2, MPFR_REGULAR_KIND = 3 +} mpfr_kind_t; + +/* GMP defines: + + size_t: Standard size_t + + __GMP_ATTRIBUTE_PURE Attribute for math functions. + + __GMP_NOTHROW For C++: can't throw . + + __GMP_EXTERN_INLINE Attribute for inline function. + * __gmp_const const (Supports for K&R compiler only for mpfr.h). + + __GMP_DECLSPEC_EXPORT compiling to go into a DLL + + __GMP_DECLSPEC_IMPORT compiling to go into a application +*/ +/* Extra MPFR defines */ +#define __MPFR_SENTINEL_ATTR +#if defined (__GNUC__) +# if __GNUC__ >= 4 +# undef __MPFR_SENTINEL_ATTR +# define __MPFR_SENTINEL_ATTR __attribute__ ((sentinel)) +# endif +#endif + +/* Prototypes: Support of K&R compiler */ +#if defined (__GMP_PROTO) +# define _MPFR_PROTO __GMP_PROTO +#elif defined (__STDC__) || defined (__cplusplus) +# define _MPFR_PROTO(x) x +#else +# define _MPFR_PROTO(x) () +#endif +/* Support for WINDOWS Dll: + Check if we are inside a MPFR build, and if so export the functions. + Otherwise does the same thing as GMP */ +#if defined(__MPFR_WITHIN_MPFR) && __GMP_LIBGMP_DLL +# define __MPFR_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +# define __MPFR_DECLSPEC __GMP_DECLSPEC +#endif + +/* Note: In order to be declared, some functions need a specific + system header to be included *before* "mpfr.h". If the user + forgets to include the header, the MPFR function prototype in + the user object file is not correct. To avoid wrong results, + we raise a linker error in that case by changing their internal + name in the library (prefixed by __gmpfr instead of mpfr). See + the lines of the form "#define mpfr_xxx __gmpfr_xxx" below. */ + +#if defined (__cplusplus) +extern "C" { +#endif + +__MPFR_DECLSPEC __gmp_const char * mpfr_get_version _MPFR_PROTO ((void)); +__MPFR_DECLSPEC __gmp_const char * mpfr_get_patches _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_buildopt_tls_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_buildopt_decimal_p _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_set_emin _MPFR_PROTO ((mpfr_exp_t)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_min _MPFR_PROTO ((void)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_max _MPFR_PROTO ((void)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_set_emax _MPFR_PROTO ((mpfr_exp_t)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_min _MPFR_PROTO ((void)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_max _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC void mpfr_set_default_rounding_mode _MPFR_PROTO((mpfr_rnd_t)); +__MPFR_DECLSPEC mpfr_rnd_t mpfr_get_default_rounding_mode _MPFR_PROTO((void)); +__MPFR_DECLSPEC __gmp_const char * + mpfr_print_rnd_mode _MPFR_PROTO((mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_clear_flags _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_underflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_overflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_nanflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_inexflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_clear_erangeflag _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC void mpfr_set_underflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_overflow _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_nanflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_inexflag _MPFR_PROTO ((void)); +__MPFR_DECLSPEC void mpfr_set_erangeflag _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC int mpfr_underflow_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_overflow_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_nanflag_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_inexflag_p _MPFR_PROTO ((void)); +__MPFR_DECLSPEC int mpfr_erangeflag_p _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC int + mpfr_check_range _MPFR_PROTO ((mpfr_ptr, int, mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_init2 _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_init _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_clear _MPFR_PROTO ((mpfr_ptr)); + +__MPFR_DECLSPEC void + mpfr_inits2 _MPFR_PROTO ((mpfr_prec_t, mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR; +__MPFR_DECLSPEC void + mpfr_inits _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR; +__MPFR_DECLSPEC void + mpfr_clears _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR; + +__MPFR_DECLSPEC int + mpfr_prec_round _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_can_round _MPFR_PROTO ((mpfr_srcptr, mpfr_exp_t, mpfr_rnd_t, mpfr_rnd_t, + mpfr_prec_t)); +__MPFR_DECLSPEC mpfr_prec_t mpfr_min_prec _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_exp _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_set_exp _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t)); +__MPFR_DECLSPEC mpfr_prec_t mpfr_get_prec _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC void mpfr_set_prec _MPFR_PROTO((mpfr_ptr, mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_set_prec_raw _MPFR_PROTO((mpfr_ptr, mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_set_default_prec _MPFR_PROTO((mpfr_prec_t)); +__MPFR_DECLSPEC mpfr_prec_t mpfr_get_default_prec _MPFR_PROTO((void)); + +__MPFR_DECLSPEC int mpfr_set_d _MPFR_PROTO ((mpfr_ptr, double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_set_flt _MPFR_PROTO ((mpfr_ptr, float, mpfr_rnd_t)); +#ifdef MPFR_WANT_DECIMAL_FLOATS +__MPFR_DECLSPEC int mpfr_set_decimal64 _MPFR_PROTO ((mpfr_ptr, _Decimal64, + mpfr_rnd_t)); +#endif +__MPFR_DECLSPEC int + mpfr_set_ld _MPFR_PROTO ((mpfr_ptr, long double, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_z _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_z_2exp _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_exp_t, mpfr_rnd_t)); +__MPFR_DECLSPEC void mpfr_set_nan _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_set_inf _MPFR_PROTO ((mpfr_ptr, int)); +__MPFR_DECLSPEC void mpfr_set_zero _MPFR_PROTO ((mpfr_ptr, int)); +__MPFR_DECLSPEC int + mpfr_set_f _MPFR_PROTO ((mpfr_ptr, mpf_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_get_f _MPFR_PROTO ((mpf_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_set_si _MPFR_PROTO ((mpfr_ptr, long, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_si_2exp _MPFR_PROTO ((mpfr_ptr, long, mpfr_exp_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_ui_2exp _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_exp_t,mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_q _MPFR_PROTO ((mpfr_ptr, mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_init_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, + mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set4 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t, int)); +__MPFR_DECLSPEC int + mpfr_abs _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_neg _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_signbit _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int + mpfr_setsign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, int, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_copysign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t)); + +#ifdef _MPFR_H_HAVE_INTMAX_T +#define mpfr_set_sj __gmpfr_set_sj +#define mpfr_set_sj_2exp __gmpfr_set_sj_2exp +#define mpfr_set_uj __gmpfr_set_uj +#define mpfr_set_uj_2exp __gmpfr_set_uj_2exp +#define mpfr_get_sj __gmpfr_mpfr_get_sj +#define mpfr_get_uj __gmpfr_mpfr_get_uj +__MPFR_DECLSPEC int mpfr_set_sj _MPFR_PROTO ((mpfr_t, intmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_sj_2exp _MPFR_PROTO ((mpfr_t, intmax_t, intmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_set_uj _MPFR_PROTO ((mpfr_t, uintmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC int + mpfr_set_uj_2exp _MPFR_PROTO ((mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t)); +__MPFR_DECLSPEC intmax_t mpfr_get_sj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC uintmax_t mpfr_get_uj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +#endif + +__MPFR_DECLSPEC mpfr_exp_t mpfr_get_z_2exp _MPFR_PROTO ((mpz_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC float mpfr_get_flt _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC double mpfr_get_d _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +#ifdef MPFR_WANT_DECIMAL_FLOATS +__MPFR_DECLSPEC _Decimal64 mpfr_get_decimal64 _MPFR_PROTO ((mpfr_srcptr, + mpfr_rnd_t)); +#endif +__MPFR_DECLSPEC long double mpfr_get_ld _MPFR_PROTO ((mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC double mpfr_get_d1 _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC double mpfr_get_d_2exp _MPFR_PROTO ((long*, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC long double mpfr_get_ld_2exp _MPFR_PROTO ((long*, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC long mpfr_get_si _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC unsigned long mpfr_get_ui _MPFR_PROTO ((mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC char*mpfr_get_str _MPFR_PROTO ((char*, mpfr_exp_t*, int, size_t, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_get_z _MPFR_PROTO ((mpz_ptr z, mpfr_srcptr f, + mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_free_str _MPFR_PROTO ((char *)); + +__MPFR_DECLSPEC int mpfr_urandom _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_urandomb _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t)); + +__MPFR_DECLSPEC void mpfr_nextabove _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_nextbelow _MPFR_PROTO ((mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_nexttoward _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr)); + +#ifdef _MPFR_H_HAVE_FILE +#define mpfr_inp_str __gmpfr_inp_str +#define mpfr_out_str __gmpfr_out_str +__MPFR_DECLSPEC size_t mpfr_inp_str _MPFR_PROTO ((mpfr_ptr, FILE*, int, + mpfr_rnd_t)); +__MPFR_DECLSPEC size_t mpfr_out_str _MPFR_PROTO ((FILE*, int, size_t, + mpfr_srcptr, mpfr_rnd_t)); +#define mpfr_fprintf __gmpfr_fprintf +__MPFR_DECLSPEC int mpfr_fprintf _MPFR_PROTO ((FILE*, __gmp_const char*, + ...)); +#endif +__MPFR_DECLSPEC int mpfr_printf _MPFR_PROTO ((__gmp_const char*, ...)); +__MPFR_DECLSPEC int mpfr_asprintf _MPFR_PROTO ((char**, __gmp_const char*, + ...)); +__MPFR_DECLSPEC int mpfr_sprintf _MPFR_PROTO ((char*, __gmp_const char*, + ...)); +__MPFR_DECLSPEC int mpfr_snprintf _MPFR_PROTO ((char*, size_t, + __gmp_const char*, ...)); + +#ifdef _MPFR_H_HAVE_VA_LIST +#ifdef _MPFR_H_HAVE_FILE +#define mpfr_vfprintf __gmpfr_vfprintf +__MPFR_DECLSPEC int mpfr_vfprintf _MPFR_PROTO ((FILE*, __gmp_const char*, + va_list)); +#endif /* _MPFR_H_HAVE_FILE */ +#define mpfr_vprintf __gmpfr_vprintf +#define mpfr_vasprintf __gmpfr_vasprintf +#define mpfr_vsprintf __gmpfr_vsprintf +#define mpfr_vsnprintf __gmpfr_vsnprintf +__MPFR_DECLSPEC int mpfr_vprintf _MPFR_PROTO ((__gmp_const char*, va_list)); +__MPFR_DECLSPEC int mpfr_vasprintf _MPFR_PROTO ((char**, __gmp_const char*, + va_list)); +__MPFR_DECLSPEC int mpfr_vsprintf _MPFR_PROTO ((char*, __gmp_const char*, + va_list)); +__MPFR_DECLSPEC int mpfr_vsnprintf _MPFR_PROTO ((char*, size_t, + __gmp_const char*, va_list)); +#endif /* _MPFR_H_HAVE_VA_LIST */ + +__MPFR_DECLSPEC int mpfr_pow _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_pow_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_pow_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_pow_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int, + unsigned long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_pow _MPFR_PROTO ((mpfr_ptr, unsigned long int, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_pow_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sqrt_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rec_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_sub _MPFR_PROTO ((mpfr_ptr, unsigned long, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_ui_div _MPFR_PROTO ((mpfr_ptr, unsigned long, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_si_sub _MPFR_PROTO ((mpfr_ptr, long int, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long int, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_si_div _MPFR_PROTO ((mpfr_ptr, long int, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_add_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_d_sub _MPFR_PROTO ((mpfr_ptr, double, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + double, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_d_div _MPFR_PROTO ((mpfr_ptr, double, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_sqr _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_const_pi _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_const_log2 _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_const_euler _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_const_catalan _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_agm _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_log _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_log2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_log10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_log1p _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_exp2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_exp10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_expm1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_eint _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_li2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_cmp _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_cmp3 _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr, int)); +__MPFR_DECLSPEC int mpfr_cmp_d _MPFR_PROTO ((mpfr_srcptr, double)); +__MPFR_DECLSPEC int mpfr_cmp_ld _MPFR_PROTO ((mpfr_srcptr, long double)); +__MPFR_DECLSPEC int mpfr_cmpabs _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_cmp_ui _MPFR_PROTO ((mpfr_srcptr, unsigned long)); +__MPFR_DECLSPEC int mpfr_cmp_si _MPFR_PROTO ((mpfr_srcptr, long)); +__MPFR_DECLSPEC int mpfr_cmp_ui_2exp _MPFR_PROTO ((mpfr_srcptr, unsigned long, + mpfr_exp_t)); +__MPFR_DECLSPEC int mpfr_cmp_si_2exp _MPFR_PROTO ((mpfr_srcptr, long, + mpfr_exp_t)); +__MPFR_DECLSPEC void mpfr_reldiff _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_eq _MPFR_PROTO((mpfr_srcptr, mpfr_srcptr, + unsigned long)); +__MPFR_DECLSPEC int mpfr_sgn _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_mul_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + unsigned long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_mul_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + long, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_rint _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_round _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_trunc _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_ceil _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_floor _MPFR_PROTO((mpfr_ptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_rint_round _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rint_trunc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rint_ceil _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_rint_floor _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_frac _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_modf _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_remquo _MPFR_PROTO ((mpfr_ptr, long*, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_remainder _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fmod _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_fits_ulong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_slong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_uint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_sint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_ushort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_sshort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_uintmax_p _MPFR_PROTO((mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fits_intmax_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_extract _MPFR_PROTO ((mpz_ptr, mpfr_srcptr, + unsigned int)); +__MPFR_DECLSPEC void mpfr_swap _MPFR_PROTO ((mpfr_ptr, mpfr_ptr)); +__MPFR_DECLSPEC void mpfr_dump _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_nan_p _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_inf_p _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_number_p _MPFR_PROTO((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_integer_p _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_zero_p _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_regular_p _MPFR_PROTO ((mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_greater_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_greaterequal_p _MPFR_PROTO ((mpfr_srcptr, + mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_less_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_lessequal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_lessgreater_p _MPFR_PROTO((mpfr_srcptr,mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_equal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); +__MPFR_DECLSPEC int mpfr_unordered_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr)); + +__MPFR_DECLSPEC int mpfr_atanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_acosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_asinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_tanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sinh_cosh _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, + mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_sech _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_csch _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_coth _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_acos _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_asin _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_atan _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sin _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sin_cos _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cos _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_tan _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_atan2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sec _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_csc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_hypot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_erf _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_erfc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cbrt _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_root _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,unsigned long,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_gamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_lngamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_lgamma _MPFR_PROTO((mpfr_ptr,int*,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_digamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_zeta _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_zeta_ui _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fac_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_j0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_j1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_jn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_y0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_y1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_yn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_ai _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_min _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_max _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_dim _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_mul_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_add_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpz_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cmp_z _MPFR_PROTO ((mpfr_srcptr, mpz_srcptr)); + +__MPFR_DECLSPEC int mpfr_mul_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_div_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_add_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sub_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, + mpq_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_cmp_q _MPFR_PROTO ((mpfr_srcptr, mpq_srcptr)); + +__MPFR_DECLSPEC int mpfr_cmp_f _MPFR_PROTO ((mpfr_srcptr, mpf_srcptr)); + +__MPFR_DECLSPEC int mpfr_fma _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_fms _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, + mpfr_srcptr, mpfr_rnd_t)); +__MPFR_DECLSPEC int mpfr_sum _MPFR_PROTO ((mpfr_ptr, mpfr_ptr *__gmp_const, + unsigned long, mpfr_rnd_t)); + +__MPFR_DECLSPEC void mpfr_free_cache _MPFR_PROTO ((void)); + +__MPFR_DECLSPEC int mpfr_subnormalize _MPFR_PROTO ((mpfr_ptr, int, + mpfr_rnd_t)); + +__MPFR_DECLSPEC int mpfr_strtofr _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, + char **, int, mpfr_rnd_t)); + +__MPFR_DECLSPEC size_t mpfr_custom_get_size _MPFR_PROTO ((mpfr_prec_t)); +__MPFR_DECLSPEC void mpfr_custom_init _MPFR_PROTO ((void *, mpfr_prec_t)); +__MPFR_DECLSPEC void * mpfr_custom_get_significand _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC mpfr_exp_t mpfr_custom_get_exp _MPFR_PROTO ((mpfr_srcptr)); +__MPFR_DECLSPEC void mpfr_custom_move _MPFR_PROTO ((mpfr_ptr, void *)); +__MPFR_DECLSPEC void mpfr_custom_init_set _MPFR_PROTO ((mpfr_ptr, int, + mpfr_exp_t, mpfr_prec_t, void *)); +__MPFR_DECLSPEC int mpfr_custom_get_kind _MPFR_PROTO ((mpfr_srcptr)); + +#if defined (__cplusplus) +} +#endif + +/* DON'T USE THIS! (For MPFR-public macros only, see below.) + The mpfr_sgn macro uses the fact that __MPFR_EXP_NAN and __MPFR_EXP_ZERO + are the smallest values. + FIXME: In the following macros, the cast of an unsigned type with MSB set + to the signed type mpfr_exp_t yields an integer overflow, which can give + unexpected results with future compilers and aggressive optimisations. + Why not working only with signed types, using INT_MIN and LONG_MIN? */ +#if __GMP_MP_SIZE_T_INT +#define __MPFR_EXP_NAN ((mpfr_exp_t)((~((~(mpfr_uint)0)>>1))+2)) +#define __MPFR_EXP_ZERO ((mpfr_exp_t)((~((~(mpfr_uint)0)>>1))+1)) +#define __MPFR_EXP_INF ((mpfr_exp_t)((~((~(mpfr_uint)0)>>1))+3)) +#else +#define __MPFR_EXP_NAN ((mpfr_exp_t)((~((~(mpfr_ulong)0)>>1))+2)) +#define __MPFR_EXP_ZERO ((mpfr_exp_t)((~((~(mpfr_ulong)0)>>1))+1)) +#define __MPFR_EXP_INF ((mpfr_exp_t)((~((~(mpfr_ulong)0)>>1))+3)) +#endif + +/* Define MPFR_USE_EXTENSION to avoid "gcc -pedantic" warnings. */ +#ifndef MPFR_EXTENSION +# if defined(MPFR_USE_EXTENSION) +# define MPFR_EXTENSION __extension__ +# else +# define MPFR_EXTENSION +# endif +#endif + +/* Warning! This macro doesn't work with K&R C (e.g., compare the "gcc -E" + output with and without -traditional) and shouldn't be used internally. + For public use only, but see the MPFR manual. */ +#define MPFR_DECL_INIT(_x, _p) \ + MPFR_EXTENSION mp_limb_t __gmpfr_local_tab_##_x[((_p)-1)/GMP_NUMB_BITS+1]; \ + MPFR_EXTENSION mpfr_t _x = {{(_p),1,__MPFR_EXP_NAN,__gmpfr_local_tab_##_x}} + +/* Fast access macros to replace function interface. + If the USER don't want to use the macro interface, let him make happy + even if it produces faster and smaller code. */ +#ifndef MPFR_USE_NO_MACRO + +/* Inlining theses functions is both faster and smaller */ +#define mpfr_nan_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_NAN) +#define mpfr_inf_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_INF) +#define mpfr_zero_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_ZERO) +#define mpfr_regular_p(_x) ((_x)->_mpfr_exp > __MPFR_EXP_INF) +#define mpfr_sgn(_x) \ + ((_x)->_mpfr_exp < __MPFR_EXP_INF ? \ + (mpfr_nan_p (_x) ? mpfr_set_erangeflag () : (mpfr_void) 0), 0 : \ + MPFR_SIGN (_x)) + +/* Prevent them from using as lvalues */ +#define MPFR_VALUE_OF(x) (0 ? (x) : (x)) +#define mpfr_get_prec(_x) MPFR_VALUE_OF((_x)->_mpfr_prec) +#define mpfr_get_exp(_x) MPFR_VALUE_OF((_x)->_mpfr_exp) +/* Note: if need be, the MPFR_VALUE_OF can be used for other expressions + (of any type). Thanks to Wojtek Lerch and Tim Rentsch for the idea. */ + +#define mpfr_round(a,b) mpfr_rint((a), (b), MPFR_RNDNA) +#define mpfr_trunc(a,b) mpfr_rint((a), (b), MPFR_RNDZ) +#define mpfr_ceil(a,b) mpfr_rint((a), (b), MPFR_RNDU) +#define mpfr_floor(a,b) mpfr_rint((a), (b), MPFR_RNDD) + +#define mpfr_cmp_ui(b,i) mpfr_cmp_ui_2exp((b),(i),0) +#define mpfr_cmp_si(b,i) mpfr_cmp_si_2exp((b),(i),0) +#define mpfr_set(a,b,r) mpfr_set4(a,b,r,MPFR_SIGN(b)) +#define mpfr_abs(a,b,r) mpfr_set4(a,b,r,1) +#define mpfr_copysign(a,b,c,r) mpfr_set4(a,b,r,MPFR_SIGN(c)) +#define mpfr_setsign(a,b,s,r) mpfr_set4(a,b,r,(s) ? -1 : 1) +#define mpfr_signbit(x) (MPFR_SIGN(x) < 0) +#define mpfr_cmp(b, c) mpfr_cmp3(b, c, 1) +#define mpfr_mul_2exp(y,x,n,r) mpfr_mul_2ui((y),(x),(n),(r)) +#define mpfr_div_2exp(y,x,n,r) mpfr_div_2ui((y),(x),(n),(r)) + + +/* When using GCC, optimize certain common comparisons and affectations. + + Remove ICC since it defines __GNUC__ but produces a + huge number of warnings if you use this code. + VL: I couldn't reproduce a single warning when enabling these macros + with icc 10.1 20080212 on Itanium. But with this version, __ICC isn't + defined (__INTEL_COMPILER is, though), so that these macros are enabled + anyway. Checking with other ICC versions is needed. Possibly detect + whether warnings are produced or not with a configure test. + + Remove C++ too, since it complains too much. */ +/* Added casts to improve robustness in case of undefined behavior and + compiler extensions based on UB (in particular -fwrapv). MPFR doesn't + use such extensions, but these macros will be used by 3rd-party code, + where such extensions may be required. + Moreover casts to unsigned long have been added to avoid warnings in + programs that use MPFR and are compiled with -Wconversion; such casts + are OK since if X is a constant expression, then (unsigned long) X is + also a constant expression, so that the optimizations still work. The + warnings are probably related to the following two bugs: + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210 + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38470 (possibly a variant) + and the casts could be removed once these bugs are fixed. + Casts shouldn't be used on the generic calls (to the ..._2exp functions), + where implicit conversions are performed. Indeed, having at least one + implicit conversion in the macro allows the compiler to emit diagnostics + when normally expected, for instance in the following call: + mpfr_set_ui (x, "foo", MPFR_RNDN); + If this is not possible (for future macros), one of the tricks described + on http://groups.google.com/group/comp.std.c/msg/e92abd24bf9eaf7b could + be used. */ +#if defined (__GNUC__) && !defined(__ICC) && !defined(__cplusplus) +#if (__GNUC__ >= 2) +#undef mpfr_cmp_ui +/* We use the fact that mpfr_sgn on NaN sets the erange flag and returns 0. + But warning! mpfr_sgn is specified as a macro in the API, thus the macro + mustn't be used if side effects are possible, like here. */ +#define mpfr_cmp_ui(_f,_u) \ + (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \ + (mpfr_sgn) (_f) : \ + mpfr_cmp_ui_2exp ((_f), (_u), 0)) +#undef mpfr_cmp_si +#define mpfr_cmp_si(_f,_s) \ + (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \ + mpfr_cmp_ui ((_f), (mpfr_ulong) (mpfr_long) (_s)) : \ + mpfr_cmp_si_2exp ((_f), (_s), 0)) +#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95 +#undef mpfr_set_ui +#define mpfr_set_ui(_f,_u,_r) \ + (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \ + __extension__ ({ \ + mpfr_ptr _p = (_f); \ + _p->_mpfr_sign = 1; \ + _p->_mpfr_exp = __MPFR_EXP_ZERO; \ + (mpfr_void) (_r); 0; }) : \ + mpfr_set_ui_2exp ((_f), (_u), 0, (_r))) +#endif +#undef mpfr_set_si +#define mpfr_set_si(_f,_s,_r) \ + (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \ + mpfr_set_ui ((_f), (mpfr_ulong) (mpfr_long) (_s), (_r)) : \ + mpfr_set_si_2exp ((_f), (_s), 0, (_r))) +#endif +#endif + +/* Macro version of mpfr_stack interface for fast access */ +#define mpfr_custom_get_size(p) ((mpfr_size_t) \ + (((p)+GMP_NUMB_BITS-1)/GMP_NUMB_BITS*sizeof (mp_limb_t))) +#define mpfr_custom_init(m,p) do {} while (0) +#define mpfr_custom_get_significand(x) ((mpfr_void*)((x)->_mpfr_d)) +#define mpfr_custom_get_exp(x) ((x)->_mpfr_exp) +#define mpfr_custom_move(x,m) do { ((x)->_mpfr_d = (mp_limb_t*)(m)); } while (0) +#define mpfr_custom_init_set(x,k,e,p,m) do { \ + mpfr_ptr _x = (x); \ + mpfr_exp_t _e; \ + mpfr_kind_t _t; \ + mpfr_int _s, _k; \ + _k = (k); \ + if (_k >= 0) { \ + _t = (mpfr_kind_t) _k; \ + _s = 1; \ + } else { \ + _t = (mpfr_kind_t) -k; \ + _s = -1; \ + } \ + _e = _t == MPFR_REGULAR_KIND ? (e) : \ + _t == MPFR_NAN_KIND ? __MPFR_EXP_NAN : \ + _t == MPFR_INF_KIND ? __MPFR_EXP_INF : __MPFR_EXP_ZERO; \ + _x->_mpfr_prec = (p); \ + _x->_mpfr_sign = _s; \ + _x->_mpfr_exp = _e; \ + _x->_mpfr_d = (mp_limb_t*) (m); \ + } while (0) +#define mpfr_custom_get_kind(x) \ + ( (x)->_mpfr_exp > __MPFR_EXP_INF ? \ + (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (x) \ + : (x)->_mpfr_exp == __MPFR_EXP_INF ? \ + (mpfr_int) MPFR_INF_KIND * MPFR_SIGN (x) \ + : (x)->_mpfr_exp == __MPFR_EXP_NAN ? (mpfr_int) MPFR_NAN_KIND \ + : (mpfr_int) MPFR_ZERO_KIND * MPFR_SIGN (x) ) + + +#endif /* MPFR_USE_NO_MACRO */ + +/* Theses are defined to be macros */ +#define mpfr_init_set_si(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_si((x), (i), (rnd)) ) +#define mpfr_init_set_ui(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_ui((x), (i), (rnd)) ) +#define mpfr_init_set_d(x, d, rnd) \ + ( mpfr_init(x), mpfr_set_d((x), (d), (rnd)) ) +#define mpfr_init_set_ld(x, d, rnd) \ + ( mpfr_init(x), mpfr_set_ld((x), (d), (rnd)) ) +#define mpfr_init_set_z(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_z((x), (i), (rnd)) ) +#define mpfr_init_set_q(x, i, rnd) \ + ( mpfr_init(x), mpfr_set_q((x), (i), (rnd)) ) +#define mpfr_init_set(x, y, rnd) \ + ( mpfr_init(x), mpfr_set((x), (y), (rnd)) ) +#define mpfr_init_set_f(x, y, rnd) \ + ( mpfr_init(x), mpfr_set_f((x), (y), (rnd)) ) + +/* Compatibility layer -- obsolete functions and macros */ +#define mpfr_cmp_abs mpfr_cmpabs +#define mpfr_round_prec(x,r,p) mpfr_prec_round(x,p,r) +#define __gmp_default_rounding_mode (mpfr_get_default_rounding_mode()) +#define __mpfr_emin (mpfr_get_emin()) +#define __mpfr_emax (mpfr_get_emax()) +#define __mpfr_default_fp_bit_precision (mpfr_get_default_fp_bit_precision()) +#define MPFR_EMIN_MIN mpfr_get_emin_min() +#define MPFR_EMIN_MAX mpfr_get_emin_max() +#define MPFR_EMAX_MIN mpfr_get_emax_min() +#define MPFR_EMAX_MAX mpfr_get_emax_max() +#define mpfr_version (mpfr_get_version()) +#ifndef mpz_set_fr +# define mpz_set_fr mpfr_get_z +#endif +#define mpfr_add_one_ulp(x,r) \ + (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x)) +#define mpfr_sub_one_ulp(x,r) \ + (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x)) +#define mpfr_get_z_exp mpfr_get_z_2exp +#define mpfr_custom_get_mantissa mpfr_custom_get_significand + +#endif /* __MPFR_H*/ + diff --git a/vitis/v2021_2/utils/hls_version.h b/vitis/v2021_2/utils/hls_version.h new file mode 100755 index 00000000..fe1ed81d --- /dev/null +++ b/vitis/v2021_2/utils/hls_version.h @@ -0,0 +1,11 @@ +//Copyright 2011-2021 Xilinx, Inc. All rights reserved. + +#ifndef _XILINX_HLS_VERSION_H +#define _XILINX_HLS_VERSION_H +# define XILINX_HLS_VERSION_MAJOR 2021 +# define XILINX_HLS_VERSION_MINOR 2 +# define XILINX_HLS_VERSION_PATCH "2021.2" +# define XILINX_HLS_VERSION_RELEASE 20212 +# define XILINX_HLS_VERSION_2021 +# define XILINX_HLS_VERSION_2021_2 +#endif diff --git a/vitis/v2021_2/utils/std_complex_utils.h b/vitis/v2021_2/utils/std_complex_utils.h new file mode 100755 index 00000000..0de05c0a --- /dev/null +++ b/vitis/v2021_2/utils/std_complex_utils.h @@ -0,0 +1,164 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2014 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef STD_HLS_COMPLEX_UTILS_H +#define STD_HLS_COMPLEX_UTILS_H + +#include +#include "ap_fixed.h" +#include "x_hls_defines.h" +#include "x_hls_traits.h" +#ifndef __SYNTHESIS__ +#include +#endif + +namespace hls { +/* +******************************************************************************* +* Vivado HLS complex data type +* ---------------------------- +* +* std::complex +* x_traits for std::complex +* set_to_one +* +******************************************************************************* +*/ + + + template + struct x_traits,std::complex > { + typedef std::complex ADD_T; + typedef std::complex SAT_T; + typedef std::complex MULT_T; + typedef std::complex MADD_T; + typedef std::complex INT_T; + typedef std::complex > FLOAT_STRUCT_T; + }; + + template + struct x_traits_d ,DIM> { + typedef std::complex ACCUM_T; + typedef std::complex ACCUM2_T; + typedef std::complex > ADD_TREE_T; + }; + + template T x_neg(T &din) { + return -din; + } + + static float x_neg(float din) { + float dout = 0; + if(din > 0) + dout = -din; + else + dout = din; + return dout; + } + + static double x_neg(double din) { + double dout = 0; + if(din > 0) + dout = -din; + else + dout = din; + return dout; + } + + template std::complex x_neg(std::complex &din) { + std::complex tmp; + tmp.real(-din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + + template typename x_traits::MULT_T x_conj_sq(T &din) { + x_conj_sq:; + return (din * din); + } + + template typename x_traits::MADD_T x_conj_sq(std::complex &din) { + x_conj_sq_complex:; + return ( (din.real()*din.real()) + (din.imag()*din.imag())); + } + + template T x_conj(T &din) { + x_conj_real:; + return din; + } + + template std::complex x_conj(const std::complex &din) { + x_conj_complex:; + std::complex tmp; + tmp.real(din.real()); + tmp.imag(-din.imag()); + return(tmp); + } + + // This function is called when a non-const std::complex is conjugated. It calls the + // version of x_conj() which takes a constant parameter + template std::complex x_conj(std::complex &din) { + const std::complex tmp = din; + return(x_conj(tmp)); + } + + template void set_to_one(std::complex > &a) { + ap_int tmp_sat = ((ap_int)1<<(W-I)) - 1; + ap_fixed tmp; + tmp.range() = tmp_sat; + a = tmp; + } + + // Functions to extract real and imaginary components + template T x_real(const T &din) { + return din; + } + template T x_real(const std::complex &din) { + return(din.real()); + } + template T x_imag(const T &din) { + _AP_UNUSED_PARAM(din); + T tmp = 0; + return tmp; + } + template T x_imag(const std::complex &din) { + return(din.imag()); + } + +} // end namespace hls + +#endif + + + + diff --git a/vitis/v2021_2/utils/x_hls_defines.h b/vitis/v2021_2/utils/x_hls_defines.h new file mode 100755 index 00000000..9940ebcc --- /dev/null +++ b/vitis/v2021_2/utils/x_hls_defines.h @@ -0,0 +1,123 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +/** + * @file x_hls_defines.h + */ + +#ifndef X_HLS_DEFINES_H +#define X_HLS_DEFINES_H + +#include "vitis/v2021_2/ap_int.h" +#include "hls_version.h" + +/* +******************************************************************************* +* +* Contains global defines, macos, and structs. +* +******************************************************************************* +*/ + +#define PRAGMA(x) _Pragma(#x) +/*#define X_PIPELINE(ii) {\ + PRAGMA(AP PIPELINE II=ii)\ + } +*/ +//#define NO_FORCING + +//#define X_AP_Q_MODE AP_TRN +//#define X_AP_O_MODE AP_WRAP + +/* +* May be used to specify all intantiated ap_fixed to have different options. +* Currently unused. + + + +#define COMPARE_APPROX_SGEMM_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CGEMM_BASE_FLOAT 0.01 +#define COMPARE_APPROX_SGEQRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CGEQRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_SBSUT_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CBSUT_BASE_FLOAT 0.01 +#define COMPARE_APPROX_SGETRI_BASE_FLOAT 10.0 +#define COMPARE_APPROX_CGETRI_BASE_FLOAT 10.0 +#define COMPARE_APPROX_SPBTRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CPBTRF_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CPBTRI_BASE_FLOAT 100.0 +#define COMPARE_APPROX_SGESVD_BASE_FLOAT 0.01 +#define COMPARE_APPROX_CGESVD_BASE_FLOAT 1.00 +#define COMPARE_APPROX_CPOSV_BASE_FLOAT 200.00 + +#define COMPARE_APPROX_SGEMM_BASE_FIXED 0.01 +#define COMPARE_APPROX_CGEMM_BASE_FIXED 0.01 +#define COMPARE_APPROX_SGEQRF_BASE_FIXED 0.01 +#define COMPARE_APPROX_CGEQRF_BASE_FIXED 0.01 +#define COMPARE_APPROX_SBSUT_BASE_FIXED 0.01 +#define COMPARE_APPROX_CBSUT_BASE_FIXED 0.01 +#define COMPARE_APPROX_SGETRI_BASE_FIXED 10.0 +#define COMPARE_APPROX_CGETRI_BASE_FIXED 10.0 +#define COMPARE_APPROX_SPBTRF_BASE_FIXED 0.01 +#define COMPARE_APPROX_CPBTRF_BASE_FIXED 100.00 +#define COMPARE_APPROX_SGESVD_BASE_FIXED 0.01 +#define COMPARE_APPROX_CGESVD_BASE_FIXED 1.00 + +#define COMPARE_APPROX_ERROR_FLOAT 0.10 // in percentage + +#define COMPARE_APPROX_ERROR_FIXED 40.00 +*/ + +/* + * Macros + */ +//#define __HLS_MAX(x,y) ((x) > (y) ? (x) : (y)) +//#define __HLS_MIN(x,y) ((x) < (y) ? (x) : (y)) + +/* + * Floating point data structure (with unsigned mantissa) + */ +template struct float_struct { + ap_uint mant; // 23 + ap_uint exp; // 8 + ap_uint<1> sign; +}; + +/* + * Floating point data structure (with signed mantissa) + */ +template struct float_struct2 { + ap_int mant; // 24 + ap_uint exp; // 8 +}; + +#endif diff --git a/vitis/v2021_2/utils/x_hls_float_utils.h b/vitis/v2021_2/utils/x_hls_float_utils.h new file mode 100755 index 00000000..00562e8b --- /dev/null +++ b/vitis/v2021_2/utils/x_hls_float_utils.h @@ -0,0 +1,483 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_FLOAT_UTILS_H +#define X_HLS_FLOAT_UTILS_H +#include + +static const ap_uint<100> ref_cordic("9b74eda8435e5a67f5f9092c6",16); + +//Q115.397 +static const ap_uint<512> ref_4oPi_512("000000000000000000000000000028BE60DB9391054A7F09D5F47D4D377036D8A5664F10E4107F9458EAF7AEF1586DC91B8E909374B801924BBA827464873FBF",16); + +/* +* Double-precision calculations +* hi: 400-1-2+( 53-e1+1) = 451-e1 = 399 (e1=52) +* lo: 400-1-2+(-53-e1-1-p1) = 343-e1-p1 = 281 (e1=52,p1=10) +* +* left-justified alignment +* e1 hi lo i << +* ---- --- --- --- ------- +* 52 399 281 1 0 +* 53 398 281 1 1 +* 61 1 9 +* 179 1 127 +* 180 2 0 +* +*------------------------------------------------------------------- +* Need to select 119-bits from ~1024 bits. +* 256 bits allows 128-bit selection shifted 128 bits. +* 128-bits is bigger than 119 which we need in the double-precision +* range reduction payne-hanek. +* 128-bits * 10 = 1280 which is > 1024 bits +*------------------------------------------------------------------- +*/ +static const ap_uint<256> ref_4oPi_table_256[10] = { + "0x0000000000000000000000000000000028be60db9391054a7f09d5f47d4d3770", + "0x28be60db9391054a7f09d5f47d4d377036d8a5664f10e4107f9458eaf7aef158", + "0x36d8a5664f10e4107f9458eaf7aef1586dc91b8e909374b801924bba82746487", + "0x6dc91b8e909374b801924bba827464873f877ac72c4a69cfba208d7d4baed121", + "0x3f877ac72c4a69cfba208d7d4baed1213a671c09ad17df904e64758e60d4ce7d", + "0x3a671c09ad17df904e64758e60d4ce7d272117e2ef7e4a0ec7fe25fff7816603", + "0x272117e2ef7e4a0ec7fe25fff7816603fbcbc462d6829b47db4d9fb3c9f2c26d", + "0xfbcbc462d6829b47db4d9fb3c9f2c26dd3d18fd9a797fa8b5d49eeb1faf97c5e", + "0xd3d18fd9a797fa8b5d49eeb1faf97c5ecf41ce7de294a4ba9afed7ec47e35742", + "0xcf41ce7de294a4ba9afed7ec47e357421580cc11bf1edaeafc33ef0826bd0d87", +}; + +static const ap_uint<100> ref_4oPi_table_100[13] = { + "0x000000000000000000000028B", // -4 + "0x00000000000000000028BE60D", // -3 + "0x0000000000000028BE60DB939", // -2 + "0x000000000028BE60DB9391054", // -1 + "0x00000028BE60DB9391054A7F0", // 0 + "0x0028BE60DB9391054A7F09D5F", // 1 + "0xBE60DB9391054A7F09D5F47D4", // 2 + "0xDB9391054A7F09D5F47D4D377", // 3 + "0x91054A7F09D5F47D4D377036D", // 4 + "0x4A7F09D5F47D4D377036D8A56", // 5 + "0x09D5F47D4D377036D8A5664F1", // 6 + "0xF47D4D377036D8A5664F10E41", // 7 + "0x4D377036D8A5664F10E417F94", // 8 +}; + +static const ap_uint<80> ref_4oPi_table_80[9] = { + "0x00000028BE60DB939105", // 0 + "0x0028BE60DB9391054A7F", // 1 + "0xBE60DB9391054A7F09D5", // 2 + "0xDB9391054A7F09D5F47D", // 3 + "0x91054A7F09D5F47D4D37", // 4 + "0x4A7F09D5F47D4D377036", // 5 + "0x09D5F47D4D377036D8A5", // 6 + "0xF47D4D377036D8A5664F", // 7 + "0x4D377036D8A5664F10E4", // 8 +}; + + +// Q2.398 +static const ap_uint<400> ref_Pio4_400("3243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89452821E638D01377BE5466CF34E90C6CC0A",16); + +static const ap_uint<256> ref_Pio4_table[10] = { + "0x000000000000000000000000000000003243f6a8885a308d313198a2e0370734", + "0x3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8", + "0x4a4093822299f31d0082efa98ec4e6c89452821e638d01377be5466cf34e90c6", + "0x9452821e638d01377be5466cf34e90c6cc0ac29b7c97c50dd3f84d5b5b547091", + "0xcc0ac29b7c97c50dd3f84d5b5b54709179216d5d98979fb1bd1310ba698dfb5a", + "0x79216d5d98979fb1bd1310ba698dfb5ac2ffd72dbd01adfb7b8e1afed6a267e9", + "0xc2ffd72dbd01adfb7b8e1afed6a267e96ba7c9045f12c7f9924a19947b3916cf", + "0x6ba7c9045f12c7f9924a19947b3916cf70801f2e2858efc16636920d871574e6", + "0x70801f2e2858efc16636920d871574e69a458fea3f4933d7e0d95748f728eb65", + "0x9a458fea3f4933d7e0d95748f728eb658718bcd5882154aee7b54a41dc25a59b", +}; + + +template +void scaled_fixed2ieee(ap_fixed in, half &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = in[in.wl()-1]; + + // Note that when we chop off the sign bit, we don't loose any + // bits to allow for -MAX to be converted correctly. + ap_ufixed ain = in; + if(out.__signbit()) { + ain = -in; + } + + // Count the leading zeros and shift + int shift = ain.countLeadingZeros(); + ap_ufixed in_shift = ain << shift; + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + + result = out.to_ieee(); +} + +template +void scaled_fixed2ieee(ap_ufixed in, half &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = 0; + + ap_ufixed ain = in; + + // Count the leading zeros and shift + int shift = ain.countLeadingZeros(); + ap_ufixed in_shift = ain << shift; + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + +#define __hls_parts ((W+15)/16) +#define __hls_rem (W - (__hls_parts-1)*16) +template +void scaled_fixed2ieee(ap_fixed in, float &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = in[in.wl()-1]; + + // Note that when we chop off the sign bit, we don't loose any + // bits to allow for -MAX to be converted correctly. + ap_ufixed ain = in; + + if(out.__signbit()) { + ain = -in; + } + + //const int __hls_parts = (W+15)/16; + //const int __hls_rem = W - (__hls_parts-1)*16; + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i] = 0; + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1] = 0; + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_ufixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "c[" << i << "] = " << c[i] << " "; + std::cout << "in_shift = " << in_shift << "\n"; +#endif + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = ((int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift); +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + + +template +void scaled_fixed2ieee(ap_ufixed in, float &result, int prescale) +{ + //#pragma HLS inline off + + fp_struct out; + out.sign[0] = 0; + ap_ufixed ain = in; + + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. out_bits[0] includes the MSBs. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i] = 0; + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1] = 0; + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_ufixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; +#if !defined(__SYNTHESIS__) && defined(_HLSCLIB_DEBUG_) + std::cout << "in_shift = " << in_shift << "\n"; + std::cout << "shift = " << shift << "\n"; + std::cout << "newexp = " << newexp << "\n"; +#endif + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + +template +void scaled_fixed2ieee(ap_fixed in, double &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = in[in.wl()-1]; + + // Note that when we chop off the sign bit, we don't loose any + // bits to allow for -MAX to be converted correctly. + ap_ufixed ain = in; + + if(out.__signbit()) { + ain = -in; + } + + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i] = 0; + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1] = 0; + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_ufixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + result = out.to_ieee(); +} + +template +void scaled_fixed2ieee(ap_ufixed in, double &result, int prescale) +{ + //#pragma HLS inline off + fp_struct out; + out.sign[0] = 0; + ap_ufixed ain = in; + + assert(__hls_rem > 0); + assert(__hls_rem <= 16); + + // Chop into 16 bit segments. + ap_uint<32> out_bits[__hls_parts] = {}; + for(int i = 0; i < __hls_parts-1; i++) { + out_bits[i] = 0; + out_bits[i](31, 16) = ain(ain.wl()-16*i-1, + ain.wl()-16*i-16); + out_bits[i][15] = 1; + } + out_bits[__hls_parts-1] = 0; + out_bits[__hls_parts-1](32-1,32-__hls_rem) = ain(ain.wl()-16*(__hls_parts-1)-1, + ain.wl()-16*(__hls_parts-1)-__hls_rem); + out_bits[__hls_parts-1][32-__hls_rem-1] = 1; + + // Count the leading zeros in each segment. + int c[__hls_parts]; + for(int i = 0; i < __hls_parts; i++) { + c[i] = clz(out_bits[i].to_uint()); + } + + int shift = 0; + ap_fixed in_shift = ain; + + for(int i = 0; i < __hls_parts; i++) { + shift += c[i]; + in_shift = in_shift << c[i]; + if(c[i] != 16) { + break; + } + } + + // assert(in_shift[W-1] == 1); + ap_ufixed result_mantissa; // Reinterpret the bits as a mantissa. + + int newexp = (int)fp_struct::EXP_BIAS+in_shift.iwl()-1-prescale-shift; + if(newexp < 0 || in == 0) { + result_mantissa = 0; + newexp = 0; + } else { + result_mantissa(W-1,0) = in_shift(W-1,0); + assert(newexp::EXP_INFNAN); + assert(newexp>=0); + } + + // Truncate the implicit one and zero extend, if necessary. + out.set_mantissa(result_mantissa); + out.exp = newexp; + + result = out.to_ieee(); +} +#undef __hls_parts +#undef __hls_rem + +#endif + + + diff --git a/vitis/v2021_2/utils/x_hls_traits.h b/vitis/v2021_2/utils/x_hls_traits.h new file mode 100755 index 00000000..66ba1cc1 --- /dev/null +++ b/vitis/v2021_2/utils/x_hls_traits.h @@ -0,0 +1,1203 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2008-2013 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_TRAITS_H +#define X_HLS_TRAITS_H + +#include "vitis/v2021_2/ap_fixed.h" +#include "vitis/v2021_2/ap_int.h" +#include "vitis/v2021_2/hls_half.h" +#include "vitis/v2021_2/hls_x_complex.h" +#include "x_hls_defines.h" +#include "x_hls_utils.h" +#include + +namespace hls { + +template struct x_traits_default { + typedef T ADD_T; + typedef T SUB_T; + typedef T SAT_T; + typedef T MULT_T; + typedef T MADD_T; +}; + +template struct x_traits { + // typedef T1 ADD_T; + // typedef T1 SAT_T; + // typedef T1 MULT_T; + // typedef T1 MADD_T; + // typedef T1 CMADD_T; + // typedef T1 CONJ_SQ_T; + // typedef T1 CONJ_SQ_2_T; + // typedef int INT_T; + // typedef T1 INV_T; + // typedef float_struct<24,8> FLOAT_STRUCT_T; +}; +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +//------------------------------------------------------------------------------------// +/* enumeration c data types: + * char, signed char, unsigned char, + * short , unsigned short, + * int, unsigned int, + * long, unsigned long, + * ap_slong, ap_ulong, + * half, + * float, + * double + */ + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default { +}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +//-------------------------------------------------------------------------------// + +template class MAX { +public: + const static int value = (A > B) ? A : B; +}; + +template +struct x_traits, ap_fixed> { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; + typedef ap_fixed SAT_T; + typedef ap_fixed MADD_T; + typedef ap_fixed CMADD_T; + typedef ap_fixed<(2 * W1) + 1, (2 * I1)> CONJ_SQ_T; + typedef ap_fixed<(2 * W1) + 2, (2 * I1) + 1> CONJ_SQ_2_T; + typedef ap_fixed<2 * (MAX::value + 1), + (MAX::value + 1)> + INV_T; + typedef int INT_T; + typedef float_struct<24, 8> FLOAT_STRUCT_T; +}; + +template +struct x_traits, ap_ufixed> { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits, ap_fixed> { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits, ap_ufixed> { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_ufixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_ufixed MULT_T; + typedef ap_ufixed SAT_T; + typedef ap_ufixed MADD_T; + typedef ap_ufixed CMADD_T; + typedef ap_ufixed<(2 * W1) + 1, (2 * I1)> CONJ_SQ_T; + typedef ap_ufixed<(2 * W1) + 2, (2 * I1) + 1> CONJ_SQ_2_T; + typedef ap_ufixed<2 * (MAX::value + 1), + (MAX::value + 1)> + INV_T; + typedef int INT_T; + typedef float_struct<24, 8> FLOAT_STRUCT_T; +}; + +template struct x_traits, ap_int> { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; + typedef ap_int<(W1 > W2) ? W1 : W2> MADD_T; +}; + +template struct x_traits, ap_uint> { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template struct x_traits, ap_int> { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template struct x_traits, ap_uint> { + typedef ap_uint::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_uint MULT_T; +}; + +template +struct x_traits, ap_int> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_uint> + : public x_traits, ap_ufixed> {}; + +template +struct x_traits, ap_int> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_uint> + : public x_traits, ap_ufixed> {}; + +template +struct x_traits, ap_fixed> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_ufixed> + : public x_traits, ap_ufixed> {}; + +template +struct x_traits, ap_fixed> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_ufixed> + : public x_traits, ap_ufixed> {}; + +// fixed_type::T is the smallest ap_fixed/ap_ufixed type that can losslessly +// contain X e.g. X x; fixed_type::T y(x); is sensible; + +template struct fixed_type {}; +template <> struct fixed_type { typedef ap_fixed<8, 8> T; }; +template <> struct fixed_type { typedef ap_ufixed<8, 8> T; }; +template <> struct fixed_type { typedef ap_fixed<16, 16> T; }; +template <> struct fixed_type { typedef ap_ufixed<16, 16> T; }; +template <> struct fixed_type { typedef ap_fixed<32, 32> T; }; +template <> struct fixed_type { typedef ap_ufixed<32, 32> T; }; +template <> struct fixed_type { typedef ap_ufixed<64, 32> T; }; +template struct fixed_type> { typedef ap_fixed T; }; +template struct fixed_type> { typedef ap_ufixed T; }; +template +struct fixed_type> { + typedef ap_fixed T; +}; +template +struct fixed_type> { + typedef ap_ufixed T; +}; + +template struct x_traits_d_default { + typedef T1 ACCUM_T; + typedef T1 ACCUM2_T; + typedef T1 ADD_TREE_T; +}; + +template struct x_traits_d {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template struct x_traits_d, DIM> { + typedef ap_int ACCUM_T; + typedef ap_int<2 * W> ACCUM2_T; + typedef ap_int<25 + W> ADD_TREE_T; +}; + +template struct x_traits_d, DIM> { + typedef ap_uint ACCUM_T; + typedef ap_uint<2 * W> ACCUM2_T; + typedef ap_uint<25 + W> ADD_TREE_T; +}; + +template +struct x_traits_d, DIM> { + typedef ap_fixed::Value, I + BitWidth::Value, Q, O> + ACCUM_T; + typedef ap_fixed<(2 * W) + BitWidth::Value, + (2 * I) + BitWidth::Value, Q, O> + ACCUM2_T; + typedef ap_fixed<25 + W + BitWidth::Value, 25 + I + BitWidth::Value, + Q, O> + ADD_TREE_T; // TODO placeholder +}; + +template +struct x_traits_d, DIM> { + typedef ap_ufixed::Value, I + BitWidth::Value, Q, O> + ACCUM_T; + typedef ap_ufixed<(2 * W) + BitWidth::Value, + (2 * I) + BitWidth::Value, Q, O> + ACCUM2_T; + typedef ap_ufixed<25 + W + BitWidth::Value, + 25 + I + BitWidth::Value, Q, O> + ADD_TREE_T; // TODO placeholder +}; + +template struct x_traits, x_complex> { + typedef x_complex ADD_T; + typedef x_complex SAT_T; + typedef x_complex MULT_T; + typedef x_complex MADD_T; + typedef x_complex INT_T; + typedef x_complex> FLOAT_STRUCT_T; +}; + +#define X_COMPLEX_MAX(a, b) ((a) > (b) ? (a) : (b)) + +template +struct x_traits>, x_complex>> { + typedef x_complex< + ap_fixed> + ADD_T; + typedef x_complex> SAT_T; + typedef x_complex> MULT_T; + typedef x_complex> MADD_T; + typedef x_complex> CONJ_SQ_T; + typedef x_complex INT_T; + typedef x_complex> FLOAT_STRUCT_T; +}; + +template +struct x_traits>, x_complex>> { + typedef x_complex> ADD_T; + typedef x_complex> SAT_T; + typedef x_complex> MULT_T; + typedef x_complex> MADD_T; + typedef x_complex> CONJ_SQ_T; + typedef x_complex INT_T; + typedef x_complex> FLOAT_STRUCT_T; +}; + +#undef X_COMPLEX_MAX + +template struct x_traits_d, DIM> { + typedef x_complex ACCUM_T; + typedef x_complex ACCUM2_T; + typedef x_complex> ADD_TREE_T; +}; + +template +struct x_traits_d>, DIM> { + typedef x_complex< + ap_fixed::Value, I + BitWidth::Value>> + ACCUM_T; + typedef x_complex< + ap_fixed<(2 * W) + BitWidth::Value, (2 * I) + BitWidth::Value>> + ACCUM2_T; +}; + +} // namespace hls + +namespace hlstmp { + +template struct x_traits_default { + typedef T ADD_T; + typedef T SUB_T; + typedef T SAT_T; + typedef T MULT_T; + typedef T MADD_T; +}; + +template struct x_traits { + // typedef T1 ADD_T; + // typedef T1 SAT_T; + // typedef T1 MULT_T; + // typedef T1 MADD_T; + // typedef T1 CMADD_T; + // typedef T1 CONJ_SQ_T; + // typedef T1 CONJ_SQ_2_T; + // typedef int INT_T; + // typedef T1 INV_T; + // typedef float_struct<24,8> FLOAT_STRUCT_T; +}; + +template <> +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template +struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> struct x_traits : public x_traits_default {}; + +template <> +struct x_traits + : public x_traits_default {}; + +template <> +struct x_traits : public x_traits_default {}; + +template class MAX { +public: + const static int value = (A > B) ? A : B; +}; + +template +struct x_traits, ap_fixed> { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; + typedef ap_fixed SAT_T; + typedef ap_fixed MADD_T; + typedef ap_fixed CMADD_T; + typedef ap_fixed<(2 * W1) + 1, (2 * I1)> CONJ_SQ_T; + typedef ap_fixed<(2 * W1) + 2, (2 * I1) + 1> CONJ_SQ_2_T; + typedef ap_fixed<2 * (MAX::value + 1), + (MAX::value + 1)> + INV_T; + typedef int INT_T; + typedef float_struct<24, 8> FLOAT_STRUCT_T; +}; + +template +struct x_traits, ap_ufixed> { + typedef typename ap_fixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits, ap_fixed> { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_fixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_fixed MULT_T; +}; + +template +struct x_traits, ap_ufixed> { + typedef typename ap_ufixed::template RType RTYPE; + typedef ap_ufixed ADD_T; + typedef ap_fixed SUB_T; + typedef ap_ufixed MULT_T; + typedef ap_ufixed SAT_T; + typedef ap_ufixed MADD_T; + typedef ap_ufixed CMADD_T; + typedef ap_ufixed<(2 * W1) + 1, (2 * I1)> CONJ_SQ_T; + typedef ap_ufixed<(2 * W1) + 2, (2 * I1) + 1> CONJ_SQ_2_T; + typedef ap_ufixed<2 * (MAX::value + 1), + (MAX::value + 1)> + INV_T; + typedef int INT_T; + typedef float_struct<24, 8> FLOAT_STRUCT_T; +}; + +template struct x_traits, ap_int> { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; + typedef ap_int<(W1 > W2) ? W1 : W2> MADD_T; +}; + +template struct x_traits, ap_uint> { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template struct x_traits, ap_int> { + typedef ap_int::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_int MULT_T; +}; + +template struct x_traits, ap_uint> { + typedef ap_uint::value + 1> ADD_T; + typedef ap_int::value + 1> SUB_T; + typedef ap_uint MULT_T; +}; + +template struct x_traits, std::complex> { + typedef std::complex ADD_T; + typedef std::complex SAT_T; + typedef std::complex MULT_T; + typedef std::complex MADD_T; + typedef std::complex INT_T; + typedef std::complex> FLOAT_STRUCT_T; +}; + +template +struct x_traits, ap_int> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_uint> + : public x_traits, ap_ufixed> {}; + +template +struct x_traits, ap_int> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_uint> + : public x_traits, ap_ufixed> {}; + +template +struct x_traits, ap_fixed> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_ufixed> + : public x_traits, ap_ufixed> {}; + +template +struct x_traits, ap_fixed> + : public x_traits, ap_fixed> {}; + +template +struct x_traits, ap_ufixed> + : public x_traits, ap_ufixed> {}; + +// fixed_type::T is the smallest ap_fixed/ap_ufixed type that can losslessly +// contain X e.g. X x; fixed_type::T y(x); is sensible; + +template struct fixed_type {}; +template <> struct fixed_type { typedef ap_fixed<8, 8> T; }; +template <> struct fixed_type { typedef ap_ufixed<8, 8> T; }; +template <> struct fixed_type { typedef ap_fixed<16, 16> T; }; +template <> struct fixed_type { typedef ap_ufixed<16, 16> T; }; +template <> struct fixed_type { typedef ap_fixed<32, 32> T; }; +template <> struct fixed_type { typedef ap_ufixed<32, 32> T; }; +template <> struct fixed_type { typedef ap_ufixed<64, 32> T; }; +template struct fixed_type> { typedef ap_fixed T; }; +template struct fixed_type> { typedef ap_ufixed T; }; +template +struct fixed_type> { + typedef ap_fixed T; +}; +template +struct fixed_type> { + typedef ap_ufixed T; +}; + +template struct x_traits_d_default { + typedef T1 ACCUM_T; + typedef T1 ACCUM2_T; + typedef T1 ADD_TREE_T; +}; + +template struct x_traits_d {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template +struct x_traits_d : x_traits_d_default {}; + +template struct x_traits_d, DIM> { + typedef ap_int ACCUM_T; + typedef ap_int<2 * W> ACCUM2_T; + typedef ap_int<25 + W> ADD_TREE_T; +}; + +template struct x_traits_d, DIM> { + typedef ap_uint ACCUM_T; + typedef ap_uint<2 * W> ACCUM2_T; + typedef ap_uint<25 + W> ADD_TREE_T; +}; + +template struct x_traits_d, DIM> { + typedef std::complex ACCUM_T; + typedef std::complex ACCUM2_T; + typedef std::complex> ADD_TREE_T; +}; + +template +struct x_traits_d, DIM> { + typedef ap_fixed::Value, I + BitWidth::Value, Q, O> + ACCUM_T; + typedef ap_fixed<(2 * W) + BitWidth::Value, + (2 * I) + BitWidth::Value, Q, O> + ACCUM2_T; + typedef ap_fixed<25 + W + BitWidth::Value, 25 + I + BitWidth::Value, + Q, O> + ADD_TREE_T; // TODO placeholder +}; + +template +struct x_traits_d, DIM> { + typedef ap_ufixed::Value, I + BitWidth::Value, Q, O> + ACCUM_T; + typedef ap_ufixed<(2 * W) + BitWidth::Value, + (2 * I) + BitWidth::Value, Q, O> + ACCUM2_T; + typedef ap_ufixed<25 + W + BitWidth::Value, + 25 + I + BitWidth::Value, Q, O> + ADD_TREE_T; // TODO placeholder +}; + +} // namespace hlstmp + +#endif diff --git a/vitis/v2021_2/utils/x_hls_utils.h b/vitis/v2021_2/utils/x_hls_utils.h new file mode 100755 index 00000000..63361241 --- /dev/null +++ b/vitis/v2021_2/utils/x_hls_utils.h @@ -0,0 +1,971 @@ +// 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689 +/***************************************************************************** + * + * Author: Xilinx, Inc. + * + * This text contains proprietary, confidential information of + * Xilinx, Inc. , is distributed by under license from Xilinx, + * Inc., and may be used, copied and/or disclosed only pursuant to + * the terms of a valid license agreement with Xilinx, Inc. + * + * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" + * AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND + * SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, + * OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, + * APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION + * THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, + * AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE + * FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY + * WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE + * IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR + * REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF + * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Xilinx products are not intended for use in life support appliances, + * devices, or systems. Use in such applications is expressly prohibited. + * + * (c) Copyright 2012 Xilinx Inc. + * All rights reserved. + * + *****************************************************************************/ + +#ifndef X_HLS_UTILS_H +#define X_HLS_UTILS_H +#include "vitis/v2021_2/ap_fixed.h" +#include "vitis/v2021_2/hls_half.h" +#include +#include +#ifndef __SYNTHESIS__ +#include +#include +#endif + +/* +******************************************************************************* +* HLS utilities +* ----------------------- +* +* General utilities usable by all functions. Mainly contains classes to +* generate static values from recursive class declarations. +* +* pow2 +* sqrtf - C declaration +* to_float +* +* fp_struct +* fp_struct +* fp_struct +* dumpDouble +* +* Power - B^N +* BitWidth = calculate minimum # of bits to store given integer value +* +* Table +* +******************************************************************************* +*/ + +namespace hls { + +template class numeric_limits { +public: + static T max() { return std::numeric_limits::max(); } + static T min() { return std::numeric_limits::min(); } + static T epsilon() { return std::numeric_limits::epsilon(); } +}; + +template +class numeric_limits> { +public: + static ap_fixed max() { + ap_int m = ::hls::numeric_limits>::max(); + ap_fixed x; + x(W - 1, 0) = m(W - 1, 0); + return x; + } + static ap_fixed min() { + ap_int m = ::hls::numeric_limits>::min(); + ap_fixed x; + x(W - 1, 0) = m(W - 1, 0); + return x; + } + static ap_fixed epsilon() { + ap_fixed x = 0; + x[0] = 1; // One of the definitions is: Machine epsilon is defined as the + // smallest number that, when added to one, yields a result + // different from one + return x; + } +}; + +template +class numeric_limits> { +public: + static ap_ufixed max() { + ap_uint m = ::hls::numeric_limits>::max(); + ap_ufixed x; + x(W - 1, 0) = m(W - 1, 0); + return x; + } + static ap_ufixed min() { return 0; } + static ap_ufixed epsilon() { + ap_ufixed x = 0; + x[0] = 1; + return x; + } +}; + +template class numeric_limits> { +public: + static ap_int max() { + ap_int m = min(); + return ~m; + } + static ap_int min() { + ap_int m = 0; + m[W - 1] = 1; + return m; + } + static ap_int epsilon() { + ap_int x = 0; + x[0] = 1; + return x; + } +}; + +template class numeric_limits> { +public: + static ap_uint max() { + ap_uint zero = 0; + return ~zero; + } + static ap_uint min() { return 0; } + static ap_uint epsilon() { + ap_uint x = 0; + x[0] = 1; + return x; + } +}; +} // namespace hls + +namespace hlstmp { + +template class numeric_limits { +public: + static T max() { return std::numeric_limits::max(); } + static T min() { return std::numeric_limits::min(); } + static T epsilon() { return std::numeric_limits::epsilon(); } +}; + +template +class numeric_limits> { +public: + static ap_fixed max() { + ap_int m = ::hlstmp::numeric_limits>::max(); + ap_fixed x; + x(W - 1, 0) = m(W - 1, 0); + return x; + } + static ap_fixed min() { + ap_int m = ::hlstmp::numeric_limits>::min(); + ap_fixed x; + x(W - 1, 0) = m(W - 1, 0); + return x; + } + static ap_fixed epsilon() { + ap_fixed x = 0; + x[0] = 1; // One of the definitions is: Machine epsilon is defined as the + // smallest number that, when added to one, yields a result + // different from one + return x; + } +}; + +template +class numeric_limits> { +public: + static ap_ufixed max() { + ap_uint m = ::hlstmp::numeric_limits>::max(); + ap_ufixed x; + x(W - 1, 0) = m(W - 1, 0); + return x; + } + static ap_ufixed min() { return 0; } + static ap_ufixed epsilon() { + ap_ufixed x = 0; + x[0] = 1; + return x; + } +}; + +template class numeric_limits> { +public: + static ap_int max() { + ap_int m = min(); + return ~m; + } + static ap_int min() { + ap_int m = 0; + m[W - 1] = 1; + return m; + } + static ap_int epsilon() { + ap_int x = 0; + x[0] = 1; + return x; + } +}; + +template class numeric_limits> { +public: + static ap_uint max() { + ap_uint zero = 0; + return ~zero; + } + static ap_uint min() { return 0; } + static ap_uint epsilon() { + ap_uint x = 0; + x[0] = 1; + return x; + } +}; +} // namespace hlstmp + +static inline const uint32_t pow2(uint32_t e) { + switch (e) { + case 0: + return 1; + break; + case 1: + return 2; + break; + case 2: + return 4; + break; + case 3: + return 8; + break; + case 4: + return 16; + break; + case 5: + return 32; + break; + case 6: + return 64; + break; + case 7: + return 128; + break; + case 8: + return 256; + break; + case 9: + return 512; + break; + case 10: + return 1024; + break; + case 11: + return 2048; + break; + default: + return 0; + } +} + +template +#ifndef _MSC_VER +__attribute__((hls_preserve)) +#endif +T reg(T d) +{ +#pragma HLS PIPELINE II = 1 +#pragma HLS LATENCY min = 1 max = 1 +#pragma HLS INLINE off + return d; +} + +/* + *------------------------------------------------------------------------------ + * References C square root function for single precision square root. + * Maps to FPU sqrt core + *------------------------------------------------------------------------------ + */ +// extern "C" float sqrtf(float); + +/* + *------------------------------------------------------------------------------ + * Converts data to float type + *------------------------------------------------------------------------------ + */ +static inline float to_float(float v) { return v; } + +template float to_float(ap_fixed<_W, _I> v) { + return v.to_float(); +} + +/* + *------------------------------------------------------------------------------ + * Single-precision floating point union to convert between 32-bit int and float + *------------------------------------------------------------------------------ + */ + +template class fp_struct {}; + +union single_cast { + float f; + uint32_t i; +}; + +template <> class fp_struct { +public: + const static int EXP_INFNAN = 255; + const static int EXP_BIAS = 127; + const static int EXP_BITS = 8; + const static int SIG_BITS = 23; + const static int BITS = 32; + + fp_struct() {} + fp_struct(float f) { +#if 1 + // def __SYNTHESIS__ + union single_cast dc; + dc.f = f; + ap_uint<32> data = dc.i; +#else + uint32_t t; + memcpy(&t, &f, sizeof(uint32_t)); + ap_uint<32> data = t; +#endif + sign[0] = data[31]; + exp(7, 0) = data(30, 23); + sig(22, 0) = data(22, 0); + } + fp_struct(ap_uint<32> data) { + sign[0] = data[31]; + exp(7, 0) = data(30, 23); + sig(22, 0) = data(22, 0); + } + fp_struct(uint32_t i) { + ap_uint<32> data = i; + sign[0] = data[31]; + exp(7, 0) = data(30, 23); + sig(22, 0) = data(22, 0); + } + inline ap_uint<32> data() const { + ap_uint<32> t; + t[31] = sign[0]; + t(30, 23) = exp(7, 0); + t(22, 0) = sig(22, 0); + return t; + } + inline int expv() const { return exp - 127; } + inline int32_t to_int() const { return data().to_int(); } + inline float to_float() const { +#if 1 + // def __SYNTHESIS__ + union single_cast ret; + ret.i = data().to_uint(); + return ret.f; +#else + + uint32_t t = data().to_uint(); + float f; + memcpy(&f, &t, sizeof(uint32_t)); + return f; +#endif + } + inline void set_mantissa(ap_ufixed<1 + SIG_BITS, 1> mantissa) { + ap_ufixed significand = mantissa; + sig = significand(SIG_BITS - 1, 0); + } + inline ap_ufixed<1 + SIG_BITS, 1> mantissa() const { + ap_ufixed<1 + SIG_BITS, 1> y = 0; + y(y.wl() - 1, 0) = sig(SIG_BITS - 1, 0); + y[y.wl() - 1] = 1; // The implicit '1' in IEEE format. + return y; + } + inline float to_ieee() const { return to_float(); } + inline int __signbit() const { return sign.to_int(); } + + static float infinity() { + fp_struct x; + x.sign = 0; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + static float minus_infinity() { + fp_struct x; + x.sign = 1; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + typedef uint32_t inttype; + typedef ap_uint<32> data_type; + ap_uint<1> sign; + ap_uint exp; + ap_uint sig; +}; + +#ifndef __SYNTHESIS__ +static inline std::ostream &operator<<(std::ostream &os, + const fp_struct &s) { +#ifndef __HLS_SYN__ + os << s.to_float(); + os << " (sign: " << s.sign << ", exp: " << s.exp << ", sig: "; + os << s.sig.to_string(8); + os << " " << s.sig.to_string(2); + os << ")"; +#endif + return os; +} +#endif + +static inline void castSingle(float din, fp_struct &dout) { + fp_struct t(din); + dout = t; +} + +static inline float castSingle(fp_struct din) { return din.to_float(); } + +static inline void dumpSingle(float da, fp_struct ds) { +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << ds << "\n"; + float sigd = ds.sig.to_int(); + sigd = 1.0 + sigd / 8388608.0; + sigd = sigd * (pow(2, ds.expv())); + printf("single: %f (sign: %d, exp: %d(%x), sig: %e(%x))\n", da, + ds.sign.to_int(), ds.expv(), ds.exp.to_int(), sigd, ds.sig.to_int()); +#else + _AP_UNUSED_PARAM(da); + _AP_UNUSED_PARAM(ds); +#endif +#else + _AP_UNUSED_PARAM(da); + _AP_UNUSED_PARAM(ds); +#endif +} + +/* + *------------------------------------------------------------------------------ + * Double-precision floating point union to convert between 64-bit int and + *double + *------------------------------------------------------------------------------ + */ +union double_cast { + double d; + uint64_t i; +}; + +template <> class fp_struct { +public: + const static int EXP_INFNAN = 2047; + const static int EXP_BIAS = 1023; + const static int EXP_BITS = 11; + const static int SIG_BITS = 52; + const static int BITS = 64; + + fp_struct() {} + fp_struct(double f) { + union double_cast dc; + dc.d = f; + ap_uint<64> data = dc.i; + sign[0] = data[63]; + exp(10, 0) = data(62, 52); + sig(51, 0) = data(51, 0); + } + fp_struct(ap_uint<64> data) { + sign[0] = data[63]; + exp(10, 0) = data(62, 52); + sig(51, 0) = data(51, 0); + } + fp_struct(uint64_t i) { + ap_uint<64> data = i; + sign[0] = data[EXP_BITS + SIG_BITS + 1 - 1]; + exp(EXP_BITS - 1, 0) = data(EXP_BITS - 1 + SIG_BITS, SIG_BITS); + sig(SIG_BITS - 1, 0) = data(SIG_BITS - 1, 0); + } + inline ap_uint<64> data() const { + ap_uint<64> t; + t[EXP_BITS + SIG_BITS + 1 - 1] = sign[0]; + t(EXP_BITS - 1 + SIG_BITS, SIG_BITS) = exp(EXP_BITS - 1, 0); + t(SIG_BITS - 1, 0) = sig(SIG_BITS - 1, 0); + return t; + } + inline int64_t to_int() const { return data().to_int64(); } + inline int expv() const { return exp - 1023; } + inline ap_uint<20> sig_msb() const { return sig(51, 32); } + inline ap_uint<32> sig_lsb() const { return sig(31, 0); } + inline double to_double() const { + union double_cast ret; + ret.i = data().to_uint64(); + return ret.d; + } + inline void set_mantissa(ap_ufixed<1 + SIG_BITS, 1> mantissa) { + ap_ufixed significand = mantissa; + sig = significand(SIG_BITS - 1, 0); + } + inline ap_ufixed<1 + SIG_BITS, 1> mantissa() const { + ap_ufixed<1 + SIG_BITS, 1> y = 0; + y(y.wl() - 1, 0) = sig(SIG_BITS - 1, 0); + y[y.wl() - 1] = 1; // The implicit '1' in IEEE format. + return y; + } + inline double to_ieee() const { return to_double(); } + inline int __signbit() const { return sign.to_int(); } + + static double infinity() { + fp_struct x; + x.sign = 0; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + static double minus_infinity() { + fp_struct x; + x.sign = 1; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + typedef uint64_t inttype; + typedef ap_uint<64> data_type; + ap_uint<1> sign; + ap_uint exp; + ap_uint sig; +}; + +#ifndef __SYNTHESIS__ +static inline std::ostream &operator<<(std::ostream &os, + const fp_struct &s) { +#ifndef __HLS_SYN__ + os << s.to_double() << " (sign: " << s.sign << ", exp: " << s.exp + << ", sig: " << s.sig << " " << s.sig.to_string(2, true) << ")"; +#else + _AP_UNUSED_PARAM(s); +#endif + return os; +} +#endif + +static inline void castDouble(double din, fp_struct &dout) { + fp_struct t(din); + dout = t; +} + +static inline double castDouble(fp_struct din) { + return din.to_double(); +} + +static inline void dumpDouble(double da, fp_struct ds) { +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << ds << "\n"; + double sigd = (ds.sig_msb().to_int() * 4294967296.0) + ds.sig_lsb().to_int(); + sigd = 1.0 + sigd / 4503599627370496.0; + sigd = sigd * (pow(2, ds.expv())); + printf("double: %f (sign: %d, exp: %d(%x), sig: %e(%x:%x))\n", da, + ds.sign.to_int(), ds.expv(), ds.exp.to_int(), sigd, + ds.sig_msb().to_int(), ds.sig_lsb().to_int()); +#else + _AP_UNUSED_PARAM(da); + _AP_UNUSED_PARAM(ds); +#endif +#else + _AP_UNUSED_PARAM(da); + _AP_UNUSED_PARAM(ds); +#endif +} + +/* + *------------------------------------------------------------------------------ + * Half-precision floating point union to convert between 16-bit int and half + *------------------------------------------------------------------------------ + */ + +#ifndef HAS_NO_HALF_TYPE +#ifdef __SYNTHESIS__ +union half_cast { + half d; + uint16_t i; +}; +#endif + +template <> class fp_struct { +public: + const static int EXP_INFNAN = 31; + const static int EXP_BIAS = 15; + const static int EXP_BITS = 5; + const static int SIG_BITS = 10; + const static int BITS = 16; + + fp_struct() {} + fp_struct(half f) { +#ifdef __SYNTHESIS__ + union half_cast dc; + dc.d = f; + ap_uint<16> data = dc.i; +#else + ap_uint<16> data = (uint16_t)f.get_bits(); +#endif + sign[0] = data[EXP_BITS + SIG_BITS + 1 - 1]; + exp(EXP_BITS - 1, 0) = data(EXP_BITS - 1 + SIG_BITS, SIG_BITS); + sig(SIG_BITS - 1, 0) = data(SIG_BITS - 1, 0); + } + fp_struct(ap_uint<16> data) { + sign[0] = data[EXP_BITS + SIG_BITS + 1 - 1]; + exp(EXP_BITS - 1, 0) = data(EXP_BITS - 1 + SIG_BITS, SIG_BITS); + sig(SIG_BITS - 1, 0) = data(SIG_BITS - 1, 0); + } + fp_struct(uint16_t i) { + ap_uint<16> data = i; + sign[0] = data[EXP_BITS + SIG_BITS + 1 - 1]; + exp(EXP_BITS - 1, 0) = data(EXP_BITS - 1 + SIG_BITS, SIG_BITS); + sig(SIG_BITS - 1, 0) = data(SIG_BITS - 1, 0); + } + inline ap_uint<16> data() const { + ap_uint<16> t; + t[EXP_BITS + SIG_BITS + 1 - 1] = sign[0]; + t(EXP_BITS - 1 + SIG_BITS, SIG_BITS) = exp(EXP_BITS - 1, 0); + t(SIG_BITS - 1, 0) = sig(SIG_BITS - 1, 0); + return t; + } + inline int expv() const { return exp - EXP_BIAS; } + inline int16_t to_int() const { return uint16_t(data().to_int()); } + inline half to_half() const { +#ifdef __SYNTHESIS__ + union half_cast ret; + ret.i = data().to_uint64(); + return ret.d; +#else + half h; + h.set_bits(half::uint16(data().to_uint())); + return h; +#endif + } + inline void set_mantissa(ap_ufixed<1 + SIG_BITS, 1> mantissa) { + ap_ufixed significand = mantissa; + sig = significand(SIG_BITS - 1, 0); + } + inline ap_ufixed<1 + SIG_BITS, 1> mantissa() const { + ap_ufixed<1 + SIG_BITS, 1> y = 0; + y(y.wl() - 1, 0) = sig(SIG_BITS - 1, 0); + y[y.wl() - 1] = 1; // The implicit '1' in IEEE format. + return y; + } + inline half to_ieee() const { return to_half(); } + inline int __signbit() const { return sign.to_int(); } + + static half infinity() { + fp_struct x; + x.sign = 0; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + static half minus_infinity() { + fp_struct x; + x.sign = 1; + x.exp = -1; + x.sig = 0; + return x.to_ieee(); + } + + typedef uint16_t inttype; + typedef ap_uint<16> data_type; + ap_uint<1> sign; + ap_uint exp; + ap_uint sig; +}; + +#ifndef __SYNTHESIS__ +static inline std::ostream &operator<<(std::ostream &os, + const fp_struct &s) { +#ifndef __HLS_SYN__ + os << (float)(s.to_half()) << " (sign: " << s.sign << ", exp: " << s.exp + << ", sig: " << s.sig << " " << s.sig.to_string(2, true) << ")"; +#else + _AP_UNUSED_PARAM(s); +#endif + return os; +} +#endif + +static inline void castHalf(half din, fp_struct &dout) { + fp_struct t(din); + dout = t; +} + +static inline half castHalf(fp_struct din) { return din.to_half(); } + +static inline void dumpHalf(half da, fp_struct ds) { +#ifdef _HLSCLIB_DEBUG_ +#ifndef __SYNTHESIS__ + std::cout << ds << "\n"; + half sigd = ds.sig.to_int(); + sigd = 1.0 + sigd / 1024.0; + sigd = sigd * (pow(2, ds.expv())); + printf("half: %f (sign: %d, exp: %d(%x), sig: %e(%x))\n", (float)da, + ds.sign.to_int(), ds.expv(), ds.exp.to_int(), (float)sigd, + ds.sig.to_int()); +#else + _AP_UNUSED_PARAM(da); + _AP_UNUSED_PARAM(ds); +#endif +#else + _AP_UNUSED_PARAM(da); + _AP_UNUSED_PARAM(ds); +#endif +} +#endif + +/* + *------------------------------------------------------------------------------ + * Raise a value to a certain power (B^N). + * + * This class is necessary in template arguments due to its static const nature + * and the fact that it performs the power operation as part of the recursive + * class declaration. A standard recursive power function would not return + * a static const value. + * + *------------------------------------------------------------------------------ + */ +template class Power { +public: + static const unsigned int Value = _Base * Power<_Base, _Num - 1>::Value; +}; + +template class Power<_Base, 0> { +public: + static const unsigned int Value = 1; +}; + +/* + *------------------------------------------------------------------------------ + * Calculate the minimum # of bits to store the given signed integer value. + * BitWidth<2>::Value == 3 + * BitWidth<3>::Value == 3 + * BitWidth<4>::Value == 4 + *------------------------------------------------------------------------------ + */ +template class BitWidth { +public: + static const unsigned int Value = 1 + BitWidth<_Num, _I / 2>::Value; +}; + +template class BitWidth<_Num, 0> { +public: + static const unsigned int Value = 2; +}; + +/* + *------------------------------------------------------------------------------ + * Calculate the minimum # of bits to store the given unsigned integer value. + * UnsignedBitWidth<2>::Value == 2 + * UnsignedBitWidth<3>::Value == 2 + * UnsignedBitWidth<4>::Value == 3 + *------------------------------------------------------------------------------ + */ +template +class UnsignedBitWidth { +public: + static const unsigned int Value = 1 + UnsignedBitWidth<_Num, _I / 2>::Value; +}; + +template class UnsignedBitWidth<_Num, 0> { +public: + static const unsigned int Value = 1; +}; + +/* + *------------------------------------------------------------------------------ + * return num of bits of a specific type + * + * This class returns the bitwidth result of a specific type + *------------------------------------------------------------------------------ + */ +template class Type_BitWidth { +public: + static const unsigned int Value = 8 * sizeof(T); +}; + +template class Type_BitWidth> { +public: + static const unsigned int Value = W; +}; + +template class Type_BitWidth> { +public: + static const unsigned int Value = W; +}; + +template class Type_BitWidth> { +public: + static const unsigned int Value = W; +}; + +template class Type_BitWidth> { +public: + static const unsigned int Value = W; +}; + +/* +******************************************************************************* +* Table class +* +* T: table data type +* N: Depth of table entries +* +* public: +* dummy Table data type +* array[N] Table array +******************************************************************************* +*/ + +template +class Table : public Table<_T, _Num, _I - 1> { +public: + typedef typename _T::TableType TableType; + static const typename _T::TableType dummy; + static const int size = _Num; +}; + +template class Table<_T, _Num, 0> { +public: + static const typename _T::TableType dummy; + static typename _T::TableType array[_Num]; +}; + +/* + * Declares the templatized and static Table dummy variable + * + * Assign the global static const Table::dummy variable to the + * associated Table entry by invoking T::apply, assigning it to array[I] + * and adding smaller templates of Table::dummy to it, thereby recursively + * assigning the smaller templates for Tables.. + */ + +template +const typename _T::TableType Table<_T, _Num, _I>::dummy = + Table<_T, _Num, 0>::array[_I] = _T::apply(_I, _Num) + + 0 * Table<_T, _Num, _I - 1>::dummy; + +template +const typename _T::TableType Table<_T, _Num, 0>::dummy = + Table<_T, _Num, 0>::array[0] = _T::apply(0, _Num); + +/* + * Declares the templatized and static Table array + */ +template +typename _T::TableType Table<_T, _Num, 0>::array[_Num]; + +// Some standard junk... this is in the new standard and in boost, +// but for a few definitions it's not worth the dependency +template struct is_fptype { static const bool value = false; }; +template <> struct is_fptype { static const bool value = true; }; +template <> struct is_fptype { static const bool value = true; }; +template <> struct is_fptype { static const bool value = true; }; + +template struct is_integraltype { static const bool value = false; }; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { + static const bool value = true; +}; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { + static const bool value = true; +}; +template <> struct is_integraltype { + static const bool value = true; +}; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { + static const bool value = true; +}; +template <> struct is_integraltype { static const bool value = true; }; +template <> struct is_integraltype { + static const bool value = true; +}; +template <> struct is_integraltype { + static const bool value = true; +}; +template <> struct is_integraltype { + static const bool value = true; +}; +template struct is_integraltype> { + static const bool value = true; +}; +template struct is_integraltype> { + static const bool value = true; +}; + +template struct is_fixedtype { static const bool value = false; }; +template +struct is_fixedtype> { + static const bool value = true; +}; +template +struct is_fixedtype> { + static const bool value = true; +}; + +namespace hls { +template struct enable_if {}; + +template struct enable_if { typedef T type; }; +template struct integral_constant { + static const T value = _v; + typedef T value_type; + typedef integral_constant type; + operator value_type() { return value; } +}; + +typedef integral_constant true_type; +typedef integral_constant false_type; + +template struct is_same; + +template struct is_same : public false_type {}; + +template struct is_same : public true_type {}; + +template +struct is_arithmetic + : public integral_constant::value || + is_fptype::value)> {}; +} // namespace hls + +template struct enable_or { + static const bool value = T1::value || T2::value; +}; + +template struct enable_and { + static const bool value = T1::value && T2::value; +}; + +template ::value> struct __promote { + typedef double type; +}; + +template struct __promote {}; + +template <> struct __promote { typedef double type; }; + +template <> struct __promote { typedef float type; }; + +template <> struct __promote { typedef half type; }; + +// End standard junk + +#endif diff --git a/vitis/vitis_generate.tcl.template b/vitis/vitis_generate.tcl.template new file mode 100644 index 00000000..9d97e881 --- /dev/null +++ b/vitis/vitis_generate.tcl.template @@ -0,0 +1,19 @@ + +# Create a project. +open_project -reset {{PROJECT_NAME}} + +{{SOURCE_FILES}} + +# Specify the top-level function for synthesis +set_top {{TOP_LEVEL_FUNCTION}} + +# Create solution1 +open_solution -reset sol1 + +# Specify a Xilinx device and clock period +set_part { {{PART_NUMBER}} } +create_clock -period {{CLOCK_PERIOD}} + +# Generate the verilog. +csynth_design +